@nova-design-system/nova-angular 3.20.0 → 3.21.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +0 -26
- package/dist/nova-components/esm2022/lib/components/nv-datatable.component.mjs +143 -39
- package/dist/nova-components/esm2022/lib/nova-components.module.mjs +2 -2
- package/dist/nova-components/esm2022/lib/providers/notification.service.mjs +33 -1
- package/dist/nova-components/esm2022/lib/stencil-generated/components.mjs +34 -7
- package/dist/nova-components/esm2022/lib/stencil-generated/index.mjs +2 -1
- package/dist/nova-components/fesm2022/nova-components.mjs +209 -46
- package/dist/nova-components/fesm2022/nova-components.mjs.map +1 -1
- package/dist/nova-components/lib/components/nv-datatable.component.d.ts +51 -2
- package/dist/nova-components/lib/nova-components.module.d.ts +1 -1
- package/dist/nova-components/lib/providers/notification.service.d.ts +7 -0
- package/dist/nova-components/lib/stencil-generated/components.d.ts +16 -2
- package/dist/nova-components/lib/stencil-generated/index.d.ts +1 -1
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -4,32 +4,6 @@
|
|
|
4
4
|
|
|
5
5
|
**Nova Components Angular** allows you to integrate Nova's native UI elements into your Angular applications. It provides flexibility in usage with both standalone components and module-based setups. This guide will walk you through the necessary steps for setting up and using Nova Components in your Angular project.
|
|
6
6
|
|
|
7
|
-
- [Nova Components Angular (Angular 17 and below)](#nova-components-angular-angular-17-and-below)
|
|
8
|
-
- [Installation](#installation)
|
|
9
|
-
- [Setting up Tailwind](#setting-up-tailwind)
|
|
10
|
-
- [About Tailwind and the Nova Plugin](#about-tailwind-and-the-nova-plugin)
|
|
11
|
-
- [1. Install Tailwind CSS](#1-install-tailwind-css)
|
|
12
|
-
- [2. Configure PostCSS Plugins](#2-configure-postcss-plugins)
|
|
13
|
-
- [3. Create `tailwind.config.ts`](#3-create-tailwindconfigts)
|
|
14
|
-
- [4. Configure Tailwind and Nova Plugin in `styles.css`](#4-configure-tailwind-and-nova-plugin-in-stylescss)
|
|
15
|
-
- [5. Include the Nova Tokens (Spark or Ocean)](#5-include-the-nova-tokens-spark-or-ocean)
|
|
16
|
-
- [Nova Font Pro Integration](#nova-font-pro-integration)
|
|
17
|
-
- [Option 1: Angular.json Configuration (Recommended)](#option-1-angularjson-configuration-recommended)
|
|
18
|
-
- [Option 2: Import in Styles.css](#option-2-import-in-stylescss)
|
|
19
|
-
- [Option 3: HTML Integration](#option-3-html-integration)
|
|
20
|
-
- [Standalone Component Setup](#standalone-component-setup)
|
|
21
|
-
- [1. Provide Nova Components](#1-provide-nova-components)
|
|
22
|
-
- [2. Import Nova Components Module in Your Standalone Components](#2-import-nova-components-module-in-your-standalone-components)
|
|
23
|
-
- [Module-Based Setup](#module-based-setup)
|
|
24
|
-
- [1. Import Nova Components Module](#1-import-nova-components-module)
|
|
25
|
-
- [Usage Example](#usage-example)
|
|
26
|
-
- [Handling Angular Forms with Nova Components](#handling-angular-forms-with-nova-components)
|
|
27
|
-
- [Standalone Component Setup](#standalone-component-setup-1)
|
|
28
|
-
- [Module-Based Setup](#module-based-setup-1)
|
|
29
|
-
- [Usage Example with Angular Forms](#usage-example-with-angular-forms)
|
|
30
|
-
- [Conclusion](#conclusion)
|
|
31
|
-
|
|
32
|
-
|
|
33
7
|
## Installation
|
|
34
8
|
|
|
35
9
|
Install the necessary Nova packages using your package manager:
|
|
@@ -1,10 +1,11 @@
|
|
|
1
1
|
/* eslint-disable jsdoc/require-jsdoc */
|
|
2
2
|
/* eslint-disable jsdoc/require-returns */
|
|
3
|
+
/* eslint-disable jsdoc/require-param */
|
|
3
4
|
import { Component, computed, input, TemplateRef, CUSTOM_ELEMENTS_SCHEMA, ContentChild, ContentChildren, effect, signal, viewChild, } from '@angular/core';
|
|
4
5
|
import { CommonModule } from '@angular/common';
|
|
5
6
|
import { NvDatatableCellDirective, } from './nv-datatable-cell.directive';
|
|
6
7
|
// local copy of @tanstack/angular-table (required for multi angular versions, the built version is not working)
|
|
7
|
-
import { createAngularTable, getCoreRowModel, getPaginationRowModel, FlexRenderDirective, } from './datatable.utils';
|
|
8
|
+
import { createAngularTable, getCoreRowModel, getPaginationRowModel, getSortedRowModel, FlexRenderDirective, } from './datatable.utils';
|
|
8
9
|
import * as i0 from "@angular/core";
|
|
9
10
|
import * as i1 from "@angular/common";
|
|
10
11
|
/**
|
|
@@ -16,6 +17,37 @@ export class NvDatatable {
|
|
|
16
17
|
table() {
|
|
17
18
|
return this.tableInstance();
|
|
18
19
|
}
|
|
20
|
+
/**
|
|
21
|
+
* Handle sort direction change from table header
|
|
22
|
+
* @param {Event} event The sort direction change event or direction string
|
|
23
|
+
* @param {object} header The table header object
|
|
24
|
+
*/
|
|
25
|
+
handleSortDirectionChanged(event, header) {
|
|
26
|
+
// Extract direction from event or use directly if string
|
|
27
|
+
let direction;
|
|
28
|
+
if (typeof event === 'string') {
|
|
29
|
+
direction = event;
|
|
30
|
+
}
|
|
31
|
+
else if ('detail' in event && typeof event.detail === 'string') {
|
|
32
|
+
direction = event.detail;
|
|
33
|
+
}
|
|
34
|
+
else {
|
|
35
|
+
// Fallback - shouldn't happen but handle gracefully
|
|
36
|
+
console.warn('Unexpected event type in handleSortDirectionChanged:', event);
|
|
37
|
+
return;
|
|
38
|
+
}
|
|
39
|
+
const sortingConfig = this.sorting();
|
|
40
|
+
// Check if multi-sort is enabled
|
|
41
|
+
const isMultiSort = sortingConfig?.enableMultiSort ?? false;
|
|
42
|
+
if (direction === 'none') {
|
|
43
|
+
// Clear this column's sort
|
|
44
|
+
header.column.clearSorting();
|
|
45
|
+
}
|
|
46
|
+
else {
|
|
47
|
+
// Toggle sort - TanStack will handle the logic internally
|
|
48
|
+
header.column.toggleSorting(direction === 'desc', isMultiSort);
|
|
49
|
+
}
|
|
50
|
+
}
|
|
19
51
|
constructor() {
|
|
20
52
|
/** Column definitions */
|
|
21
53
|
this.columns = input([]);
|
|
@@ -23,6 +55,8 @@ export class NvDatatable {
|
|
|
23
55
|
this.rows = input([]);
|
|
24
56
|
/** Optional pagination configuration */
|
|
25
57
|
this.pagination = input(undefined);
|
|
58
|
+
/** Optional sorting configuration */
|
|
59
|
+
this.sorting = input(undefined);
|
|
26
60
|
/** Should the header stick to the top of the table when scrolling? */
|
|
27
61
|
this.stickyHeader = input(false);
|
|
28
62
|
/** Signal to track cell templates array */
|
|
@@ -40,6 +74,8 @@ export class NvDatatable {
|
|
|
40
74
|
pageIndex: 0,
|
|
41
75
|
pageSize: this.pagination()?.initialPageSize || 10,
|
|
42
76
|
});
|
|
77
|
+
/** Sorting state for controlled sorting (server mode) */
|
|
78
|
+
this.sortingState = signal(this.sorting()?.sortState || []);
|
|
43
79
|
/** Reference to table rows for infinite scroll observer */
|
|
44
80
|
this.tableRows = viewChild('tableRow');
|
|
45
81
|
/** Intersection observer for infinite scroll */
|
|
@@ -68,7 +104,7 @@ export class NvDatatable {
|
|
|
68
104
|
// Default: just return the value (formatted if valueFormatter was used)
|
|
69
105
|
return context.getValue();
|
|
70
106
|
};
|
|
71
|
-
|
|
107
|
+
const columnDef = {
|
|
72
108
|
accessorKey: col.field,
|
|
73
109
|
accessorFn: col.valueFormatter
|
|
74
110
|
? (row) => {
|
|
@@ -83,27 +119,82 @@ export class NvDatatable {
|
|
|
83
119
|
header: col.headerName || String(col.field),
|
|
84
120
|
size: col.width,
|
|
85
121
|
enableResizing: col.resizable ?? true,
|
|
122
|
+
// Sorting configuration
|
|
123
|
+
enableSorting: this.sorting() ? col.sortable ?? true : false,
|
|
86
124
|
cell: cellRenderer,
|
|
87
125
|
};
|
|
126
|
+
// Add optional sorting properties only if defined
|
|
127
|
+
if (col.sortingFn !== undefined) {
|
|
128
|
+
// @ts-expect-error - TanStack typing is strict but this works at runtime
|
|
129
|
+
columnDef.sortingFn = col.sortingFn;
|
|
130
|
+
}
|
|
131
|
+
if (col.sortDescFirst !== undefined) {
|
|
132
|
+
columnDef.sortDescFirst = col.sortDescFirst;
|
|
133
|
+
}
|
|
134
|
+
if (col.invertSorting !== undefined) {
|
|
135
|
+
columnDef.invertSorting = col.invertSorting;
|
|
136
|
+
}
|
|
137
|
+
if (col.sortUndefined !== undefined) {
|
|
138
|
+
columnDef.sortUndefined = col.sortUndefined;
|
|
139
|
+
}
|
|
140
|
+
return columnDef;
|
|
88
141
|
});
|
|
89
142
|
});
|
|
90
143
|
/** TanStack table instance with Signals */
|
|
91
144
|
this.tableInstance = createAngularTable(() => {
|
|
92
145
|
const paginationConfig = this.pagination();
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
146
|
+
const sortingConfig = this.sorting();
|
|
147
|
+
// Determine base table configuration with sorting
|
|
148
|
+
const getBaseTableConfig = () => {
|
|
149
|
+
const baseConfig = {
|
|
96
150
|
data: this.rows(),
|
|
97
151
|
columns: this.tableColumns(),
|
|
98
152
|
getCoreRowModel: getCoreRowModel(),
|
|
153
|
+
// Sorting configuration
|
|
154
|
+
...(sortingConfig && {
|
|
155
|
+
state: {
|
|
156
|
+
sorting: sortingConfig.mode === 'server' && sortingConfig.sortState
|
|
157
|
+
? sortingConfig.sortState
|
|
158
|
+
: this.sortingState(),
|
|
159
|
+
},
|
|
160
|
+
onSortingChange: (updaterOrValue) => {
|
|
161
|
+
const currentSort = sortingConfig.mode === 'server' && sortingConfig.sortState
|
|
162
|
+
? sortingConfig.sortState
|
|
163
|
+
: this.sortingState();
|
|
164
|
+
const newSort = typeof updaterOrValue === 'function'
|
|
165
|
+
? updaterOrValue(currentSort)
|
|
166
|
+
: updaterOrValue;
|
|
167
|
+
// Always update internal state for reactivity
|
|
168
|
+
this.sortingState.set(newSort);
|
|
169
|
+
// For server-side sorting, also call the callback
|
|
170
|
+
if (sortingConfig?.mode === 'server' &&
|
|
171
|
+
sortingConfig.onSortingChange) {
|
|
172
|
+
sortingConfig.onSortingChange(newSort);
|
|
173
|
+
}
|
|
174
|
+
},
|
|
175
|
+
manualSorting: sortingConfig.mode === 'server',
|
|
176
|
+
enableSorting: true,
|
|
177
|
+
enableMultiSort: sortingConfig.enableMultiSort ?? false,
|
|
178
|
+
enableSortingRemoval: sortingConfig.enableSortingRemoval ?? true,
|
|
179
|
+
maxMultiSortColCount: sortingConfig.maxMultiSortColCount,
|
|
180
|
+
sortDescFirst: sortingConfig.sortDescFirst ?? false,
|
|
181
|
+
// When multi-sort is enabled, treat all clicks as multi-sort events
|
|
182
|
+
isMultiSortEvent: sortingConfig.enableMultiSort
|
|
183
|
+
? () => true
|
|
184
|
+
: undefined,
|
|
185
|
+
getSortedRowModel: sortingConfig.mode === 'client' ? getSortedRowModel() : undefined,
|
|
186
|
+
}),
|
|
99
187
|
};
|
|
188
|
+
return baseConfig;
|
|
189
|
+
};
|
|
190
|
+
if (!paginationConfig || paginationConfig.mode === 'infinite') {
|
|
191
|
+
// No pagination or infinite scroll - simple config
|
|
192
|
+
return getBaseTableConfig();
|
|
100
193
|
}
|
|
101
194
|
else if (paginationConfig.mode === 'client') {
|
|
102
195
|
// Client-side pagination
|
|
103
196
|
return {
|
|
104
|
-
|
|
105
|
-
columns: this.tableColumns(),
|
|
106
|
-
getCoreRowModel: getCoreRowModel(),
|
|
197
|
+
...getBaseTableConfig(),
|
|
107
198
|
getPaginationRowModel: getPaginationRowModel(),
|
|
108
199
|
initialState: {
|
|
109
200
|
pagination: {
|
|
@@ -114,12 +205,11 @@ export class NvDatatable {
|
|
|
114
205
|
};
|
|
115
206
|
}
|
|
116
207
|
else {
|
|
117
|
-
// Server-side pagination
|
|
208
|
+
// Server-side pagination - manual pagination with reactive state
|
|
209
|
+
const baseConfig = getBaseTableConfig();
|
|
118
210
|
const pageSize = this.paginationState().pageSize;
|
|
119
211
|
return {
|
|
120
|
-
|
|
121
|
-
columns: this.tableColumns(),
|
|
122
|
-
getCoreRowModel: getCoreRowModel(),
|
|
212
|
+
...baseConfig,
|
|
123
213
|
manualPagination: true,
|
|
124
214
|
pageCount: paginationConfig.totalPageCount !== undefined
|
|
125
215
|
? paginationConfig.totalPageCount
|
|
@@ -128,13 +218,19 @@ export class NvDatatable {
|
|
|
128
218
|
: -1,
|
|
129
219
|
state: {
|
|
130
220
|
pagination: this.paginationState(),
|
|
221
|
+
...(baseConfig.state && { sorting: baseConfig.state.sorting }),
|
|
131
222
|
},
|
|
132
223
|
onPaginationChange: (updaterOrValue) => {
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
224
|
+
const newState = typeof updaterOrValue === 'function'
|
|
225
|
+
? updaterOrValue(this.paginationState())
|
|
226
|
+
: updaterOrValue;
|
|
227
|
+
this.paginationState.set(newState);
|
|
228
|
+
// Call user's callback for server-side pagination
|
|
229
|
+
if (paginationConfig.onPaginationChange) {
|
|
230
|
+
paginationConfig.onPaginationChange({
|
|
231
|
+
pageIndex: newState.pageIndex,
|
|
232
|
+
pageSize: newState.pageSize,
|
|
233
|
+
});
|
|
138
234
|
}
|
|
139
235
|
},
|
|
140
236
|
};
|
|
@@ -173,18 +269,6 @@ export class NvDatatable {
|
|
|
173
269
|
: undefined,
|
|
174
270
|
};
|
|
175
271
|
});
|
|
176
|
-
// Watch pagination state changes for server mode
|
|
177
|
-
effect(() => {
|
|
178
|
-
const paginationConfig = this.pagination();
|
|
179
|
-
const state = this.paginationState();
|
|
180
|
-
if (paginationConfig?.mode === 'server' &&
|
|
181
|
-
paginationConfig.onPaginationChange) {
|
|
182
|
-
paginationConfig.onPaginationChange({
|
|
183
|
-
pageIndex: state.pageIndex,
|
|
184
|
-
pageSize: state.pageSize,
|
|
185
|
-
});
|
|
186
|
-
}
|
|
187
|
-
}, { allowSignalWrites: true });
|
|
188
272
|
// Set up intersection observer for infinite scroll
|
|
189
273
|
effect(() => {
|
|
190
274
|
const paginationConfig = this.pagination();
|
|
@@ -243,7 +327,7 @@ export class NvDatatable {
|
|
|
243
327
|
}
|
|
244
328
|
}
|
|
245
329
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.9", ngImport: i0, type: NvDatatable, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
246
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.3.9", type: NvDatatable, isStandalone: true, selector: "nv-datatable", inputs: { columns: { classPropertyName: "columns", publicName: "columns", isSignal: true, isRequired: false, transformFunction: null }, rows: { classPropertyName: "rows", publicName: "rows", isSignal: true, isRequired: false, transformFunction: null }, pagination: { classPropertyName: "pagination", publicName: "pagination", isSignal: true, isRequired: false, transformFunction: null }, stickyHeader: { classPropertyName: "stickyHeader", publicName: "stickyHeader", isSignal: true, isRequired: false, transformFunction: null } }, queries: [{ propertyName: "paginationTemplate", first: true, predicate: ["paginationTemplate"], descendants: true, read: TemplateRef }, { propertyName: "cellTemplates", predicate: NvDatatableCellDirective }], viewQueries: [{ propertyName: "tableRows", first: true, predicate: ["tableRow"], descendants: true, isSignal: true }], ngImport: i0, template: `
|
|
330
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.3.9", type: NvDatatable, isStandalone: true, selector: "nv-datatable", inputs: { columns: { classPropertyName: "columns", publicName: "columns", isSignal: true, isRequired: false, transformFunction: null }, rows: { classPropertyName: "rows", publicName: "rows", isSignal: true, isRequired: false, transformFunction: null }, pagination: { classPropertyName: "pagination", publicName: "pagination", isSignal: true, isRequired: false, transformFunction: null }, sorting: { classPropertyName: "sorting", publicName: "sorting", isSignal: true, isRequired: false, transformFunction: null }, stickyHeader: { classPropertyName: "stickyHeader", publicName: "stickyHeader", isSignal: true, isRequired: false, transformFunction: null } }, queries: [{ propertyName: "paginationTemplate", first: true, predicate: ["paginationTemplate"], descendants: true, read: TemplateRef }, { propertyName: "cellTemplates", predicate: NvDatatableCellDirective }], viewQueries: [{ propertyName: "tableRows", first: true, predicate: ["tableRow"], descendants: true, isSignal: true }], ngImport: i0, template: `
|
|
247
331
|
<nv-table>
|
|
248
332
|
<table>
|
|
249
333
|
<thead [attr.data-sticky-top]="stickyHeader() ? 'true' : null">
|
|
@@ -262,9 +346,19 @@ export class NvDatatable {
|
|
|
262
346
|
!header.column.columnDef.enableResizing ? 'true' : null
|
|
263
347
|
"
|
|
264
348
|
>
|
|
265
|
-
@if (!header.isPlaceholder) {
|
|
349
|
+
@if (!header.isPlaceholder) { @if (header.column.getCanSort()) {
|
|
350
|
+
<nv-tableheader
|
|
351
|
+
[sortable]="true"
|
|
352
|
+
[sortDirection]="header.column.getIsSorted() || 'none'"
|
|
353
|
+
(sortDirectionChanged)="
|
|
354
|
+
handleSortDirectionChanged($event, header)
|
|
355
|
+
"
|
|
356
|
+
>
|
|
357
|
+
{{ header.column.columnDef.header }}
|
|
358
|
+
</nv-tableheader>
|
|
359
|
+
} @else {
|
|
266
360
|
{{ header.column.columnDef.header }}
|
|
267
|
-
}
|
|
361
|
+
} }
|
|
268
362
|
</th>
|
|
269
363
|
}
|
|
270
364
|
</tr>
|
|
@@ -275,7 +369,7 @@ export class NvDatatable {
|
|
|
275
369
|
@for (row of table().getRowModel().rows; track row.id; let i = $index)
|
|
276
370
|
{
|
|
277
371
|
<tr
|
|
278
|
-
[attr.data-testid]="'datatable-row-' +
|
|
372
|
+
[attr.data-testid]="'datatable-row-' + i"
|
|
279
373
|
#tableRow
|
|
280
374
|
[attr.data-is-last]="
|
|
281
375
|
isInfiniteScroll() && i === table().getRowModel().rows.length - 1
|
|
@@ -284,7 +378,7 @@ export class NvDatatable {
|
|
|
284
378
|
"
|
|
285
379
|
>
|
|
286
380
|
@for (cell of row.getVisibleCells(); track cell.id) {
|
|
287
|
-
<td [attr.data-testid]="'datatable-cell-' + cell.id">
|
|
381
|
+
<td [attr.data-testid]="'datatable-cell-' + cell.column.id">
|
|
288
382
|
<ng-container
|
|
289
383
|
*flexRender="
|
|
290
384
|
cell.column.columnDef.cell;
|
|
@@ -339,9 +433,19 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.9", ngImpor
|
|
|
339
433
|
!header.column.columnDef.enableResizing ? 'true' : null
|
|
340
434
|
"
|
|
341
435
|
>
|
|
342
|
-
@if (!header.isPlaceholder) {
|
|
436
|
+
@if (!header.isPlaceholder) { @if (header.column.getCanSort()) {
|
|
437
|
+
<nv-tableheader
|
|
438
|
+
[sortable]="true"
|
|
439
|
+
[sortDirection]="header.column.getIsSorted() || 'none'"
|
|
440
|
+
(sortDirectionChanged)="
|
|
441
|
+
handleSortDirectionChanged($event, header)
|
|
442
|
+
"
|
|
443
|
+
>
|
|
444
|
+
{{ header.column.columnDef.header }}
|
|
445
|
+
</nv-tableheader>
|
|
446
|
+
} @else {
|
|
343
447
|
{{ header.column.columnDef.header }}
|
|
344
|
-
}
|
|
448
|
+
} }
|
|
345
449
|
</th>
|
|
346
450
|
}
|
|
347
451
|
</tr>
|
|
@@ -352,7 +456,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.9", ngImpor
|
|
|
352
456
|
@for (row of table().getRowModel().rows; track row.id; let i = $index)
|
|
353
457
|
{
|
|
354
458
|
<tr
|
|
355
|
-
[attr.data-testid]="'datatable-row-' +
|
|
459
|
+
[attr.data-testid]="'datatable-row-' + i"
|
|
356
460
|
#tableRow
|
|
357
461
|
[attr.data-is-last]="
|
|
358
462
|
isInfiniteScroll() && i === table().getRowModel().rows.length - 1
|
|
@@ -361,7 +465,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.9", ngImpor
|
|
|
361
465
|
"
|
|
362
466
|
>
|
|
363
467
|
@for (cell of row.getVisibleCells(); track cell.id) {
|
|
364
|
-
<td [attr.data-testid]="'datatable-cell-' + cell.id">
|
|
468
|
+
<td [attr.data-testid]="'datatable-cell-' + cell.column.id">
|
|
365
469
|
<ng-container
|
|
366
470
|
*flexRender="
|
|
367
471
|
cell.column.columnDef.cell;
|
|
@@ -423,4 +527,4 @@ export function makeColumn() {
|
|
|
423
527
|
};
|
|
424
528
|
}
|
|
425
529
|
export { flexRenderComponent as nvDatatableRenderComponent } from './datatable.utils';
|
|
426
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibnYtZGF0YXRhYmxlLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25vdmEtY29tcG9uZW50cy9zcmMvbGliL2NvbXBvbmVudHMvbnYtZGF0YXRhYmxlLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSx3Q0FBd0M7QUFDeEMsMENBQTBDO0FBRTFDLE9BQU8sRUFDTCxTQUFTLEVBQ1QsUUFBUSxFQUNSLEtBQUssRUFDTCxXQUFXLEVBQ1gsc0JBQXNCLEVBQ3RCLFlBQVksRUFDWixlQUFlLEVBRWYsTUFBTSxFQUNOLE1BQU0sRUFFTixTQUFTLEdBR1YsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFDTCx3QkFBd0IsR0FFekIsTUFBTSwrQkFBK0IsQ0FBQztBQUV2QyxnSEFBZ0g7QUFDaEgsT0FBTyxFQUNMLGtCQUFrQixFQUNsQixlQUFlLEVBQ2YscUJBQXFCLEVBQ3JCLG1CQUFtQixHQU1wQixNQUFNLG1CQUFtQixDQUFDOzs7QUFFM0I7OztHQUdHO0FBNEVILE1BQU0sT0FBTyxXQUFXO0lBNEp0Qix3Q0FBd0M7SUFDeEMsS0FBSztRQUNILE9BQU8sSUFBSSxDQUFDLGFBQWEsRUFBRSxDQUFDO0lBQzlCLENBQUM7SUF5Q0Q7UUF2TUEseUJBQXlCO1FBQ3pCLFlBQU8sR0FBRyxLQUFLLENBQXlCLEVBQUUsQ0FBQyxDQUFDO1FBQzVDLGVBQWU7UUFDZixTQUFJLEdBQUcsS0FBSyxDQUFNLEVBQUUsQ0FBQyxDQUFDO1FBQ3RCLHdDQUF3QztRQUN4QyxlQUFVLEdBQUcsS0FBSyxDQUEwQyxTQUFTLENBQUMsQ0FBQztRQUN2RSxzRUFBc0U7UUFDdEUsaUJBQVksR0FBRyxLQUFLLENBQVUsS0FBSyxDQUFDLENBQUM7UUFZckMsMkNBQTJDO1FBQ25DLHdCQUFtQixHQUFHLE1BQU0sQ0FFbEMs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Ozs7Ozs7R0FrQkc7QUFDSCxNQUFNLFVBQVUsVUFBVTtJQUN4QixPQUFPLFNBQVMsTUFBTSxDQUNwQixHQUFpQztRQUVqQyxPQUFPLEdBQXdDLENBQUM7SUFDbEQsQ0FBQyxDQUFDO0FBQ0osQ0FBQztBQUVELE9BQU8sRUFBRSxtQkFBbUIsSUFBSSwwQkFBMEIsRUFBRSxNQUFNLG1CQUFtQixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyogZXNsaW50LWRpc2FibGUganNkb2MvcmVxdWlyZS1qc2RvYyAqL1xuLyogZXNsaW50LWRpc2FibGUganNkb2MvcmVxdWlyZS1yZXR1cm5zICovXG5cbmltcG9ydCB7XG4gIENvbXBvbmVudCxcbiAgY29tcHV0ZWQsXG4gIGlucHV0LFxuICBUZW1wbGF0ZVJlZixcbiAgQ1VTVE9NX0VMRU1FTlRTX1NDSEVNQSxcbiAgQ29udGVudENoaWxkLFxuICBDb250ZW50Q2hpbGRyZW4sXG4gIFF1ZXJ5TGlzdCxcbiAgZWZmZWN0LFxuICBzaWduYWwsXG4gIEVsZW1lbnRSZWYsXG4gIHZpZXdDaGlsZCxcbiAgQWZ0ZXJWaWV3SW5pdCxcbiAgT25EZXN0cm95LFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQge1xuICBOdkRhdGF0YWJsZUNlbGxEaXJlY3RpdmUsXG4gIHR5cGUgTnZEYXRhdGFibGVDZWxsQ29udGV4dCxcbn0gZnJvbSAnLi9udi1kYXRhdGFibGUtY2VsbC5kaXJlY3RpdmUnO1xuXG4vLyBsb2NhbCBjb3B5IG9mIEB0YW5zdGFjay9hbmd1bGFyLXRhYmxlIChyZXF1aXJlZCBmb3IgbXVsdGkgYW5ndWxhciB2ZXJzaW9ucywgdGhlIGJ1aWx0IHZlcnNpb24gaXMgbm90IHdvcmtpbmcpXG5pbXBvcnQge1xuICBjcmVhdGVBbmd1bGFyVGFibGUsXG4gIGdldENvcmVSb3dNb2RlbCxcbiAgZ2V0UGFnaW5hdGlvblJvd01vZGVsLFxuICBGbGV4UmVuZGVyRGlyZWN0aXZlLFxuICB0eXBlIEZsZXhSZW5kZXJDb21wb25lbnQsXG4gIHR5cGUgQ29sdW1uRGVmLFxuICB0eXBlIENlbGxDb250ZXh0LFxuICB0eXBlIFBhZ2luYXRpb25TdGF0ZSxcbiAgdHlwZSBOb0luZmVyLFxufSBmcm9tICcuL2RhdGF0YWJsZS51dGlscyc7XG5cbi8qKlxuICogQSBwb3dlcmZ1bCwgZmxleGlibGUgZGF0YXRhYmxlIGNvbXBvbmVudCBidWlsdCBvbiBUYW5TdGFjayBUYWJsZS5cbiAqIFN1cHBvcnRzIGN1c3RvbSBjZWxsIHJlbmRlcmluZywgY29sdW1uIGNvbmZpZ3VyYXRpb24sIHBhZ2luYXRpb24sIGFuZCBmdWxsIFR5cGVTY3JpcHQgdHlwaW5nLlxuICovXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdudi1kYXRhdGFibGUnLFxuICBzdGFuZGFsb25lOiB0cnVlLFxuICBpbXBvcnRzOiBbQ29tbW9uTW9kdWxlLCBGbGV4UmVuZGVyRGlyZWN0aXZlXSxcbiAgc2NoZW1hczogW0NVU1RPTV9FTEVNRU5UU19TQ0hFTUFdLFxuICB0ZW1wbGF0ZTogYFxuICAgIDxudi10YWJsZT5cbiAgICAgIDx0YWJsZT5cbiAgICAgICAgPHRoZWFkIFthdHRyLmRhdGEtc3RpY2t5LXRvcF09XCJzdGlja3lIZWFkZXIoKSA/ICd0cnVlJyA6IG51bGxcIj5cbiAgICAgICAgICBAZm9yIChoZWFkZXJHcm91cCBvZiB0YWJsZSgpLmdldEhlYWRlckdyb3VwcygpOyB0cmFjayBoZWFkZXJHcm91cC5pZClcbiAgICAgICAgICB7XG4gICAgICAgICAgPHRyPlxuICAgICAgICAgICAgQGZvciAoaGVhZGVyIG9mIGhlYWRlckdyb3VwLmhlYWRlcnM7IHRyYWNrIGhlYWRlci5pZCkge1xuICAgICAgICAgICAgPHRoXG4gICAgICAgICAgICAgIFthdHRyLmRhdGEtdGVzdGlkXT1cIidkYXRhdGFibGUtaGVhZGVyLScgKyBoZWFkZXIuaWRcIlxuICAgICAgICAgICAgICBbc3R5bGUud2lkdGhdPVwiXG4gICAgICAgICAgICAgICAgaGVhZGVyLmNvbHVtbi5jb2x1bW5EZWYuc2l6ZVxuICAgICAgICAgICAgICAgICAgPyBoZWFkZXIuY29sdW1uLmNvbHVtbkRlZi5zaXplICsgJ3B4J1xuICAgICAgICAgICAgICAgICAgOiBudWxsXG4gICAgICAgICAgICAgIFwiXG4gICAgICAgICAgICAgIFthdHRyLmRhdGEtbm8tcmVzaXplXT1cIlxuICAgICAgICAgICAgICAgICFoZWFkZXIuY29sdW1uLmNvbHVtbkRlZi5lbmFibGVSZXNpemluZyA/ICd0cnVlJyA6IG51bGxcbiAgICAgICAgICAgICAgXCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgQGlmICghaGVhZGVyLmlzUGxhY2Vob2xkZXIpIHtcbiAgICAgICAgICAgICAge3sgaGVhZGVyLmNvbHVtbi5jb2x1bW5EZWYuaGVhZGVyIH19XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIDwvdGg+XG4gICAgICAgICAgICB9XG4gICAgICAgICAgPC90cj5cbiAgICAgICAgICB9XG4gICAgICAgIDwvdGhlYWQ+XG5cbiAgICAgICAgPHRib2R5PlxuICAgICAgICAgIEBmb3IgKHJvdyBvZiB0YWJsZSgpLmdldFJvd01vZGVsKCkucm93czsgdHJhY2sgcm93LmlkOyBsZXQgaSA9ICRpbmRleClcbiAgICAgICAgICB7XG4gICAgICAgICAgPHRyXG4gICAgICAgICAgICBbYXR0ci5kYXRhLXRlc3RpZF09XCInZGF0YXRhYmxlLXJvdy0nICsgcm93LmlkXCJcbiAgICAgICAgICAgICN0YWJsZVJvd1xuICAgICAgICAgICAgW2F0dHIuZGF0YS1pcy1sYXN0XT1cIlxuICAgICAgICAgICAgICBpc0luZmluaXRlU2Nyb2xsKCkgJiYgaSA9PT0gdGFibGUoKS5nZXRSb3dNb2RlbCgpLnJvd3MubGVuZ3RoIC0gMVxuICAgICAgICAgICAgICAgID8gJ3RydWUnXG4gICAgICAgICAgICAgICAgOiBudWxsXG4gICAgICAgICAgICBcIlxuICAgICAgICAgID5cbiAgICAgICAgICAgIEBmb3IgKGNlbGwgb2Ygcm93LmdldFZpc2libGVDZWxscygpOyB0cmFjayBjZWxsLmlkKSB7XG4gICAgICAgICAgICA8dGQgW2F0dHIuZGF0YS10ZXN0aWRdPVwiJ2RhdGF0YWJsZS1jZWxsLScgKyBjZWxsLmlkXCI+XG4gICAgICAgICAgICAgIDxuZy1jb250YWluZXJcbiAgICAgICAgICAgICAgICAqZmxleFJlbmRlcj1cIlxuICAgICAgICAgICAgICAgICAgY2VsbC5jb2x1bW4uY29sdW1uRGVmLmNlbGw7XG4gICAgICAgICAgICAgICAgICBwcm9wczogY2VsbC5nZXRDb250ZXh0KCk7XG4gICAgICAgICAgICAgICAgICBsZXQgY2VsbENvbnRlbnRcbiAgICAgICAgICAgICAgICBcIlxuICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAge3sgY2VsbENvbnRlbnQgfX1cbiAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICA8L3RkPlxuICAgICAgICAgICAgfVxuICAgICAgICAgIDwvdHI+XG4gICAgICAgICAgfVxuICAgICAgICA8L3Rib2R5PlxuICAgICAgPC90YWJsZT5cbiAgICA8L252LXRhYmxlPlxuXG4gICAgPCEtLSBSZW5kZXIgcGFnaW5hdGlvbiBpZiBjb25maWd1cmVkIC0tPlxuICAgIEBpZiAocGFnaW5hdGlvbkFQSSgpKSB7XG4gICAgPG5nLWNvbnRhaW5lclxuICAgICAgKm5nVGVtcGxhdGVPdXRsZXQ9XCJcbiAgICAgICAgcGFnaW5hdGlvblRlbXBsYXRlIHx8IG51bGw7XG4gICAgICAgIGNvbnRleHQ6IHsgJGltcGxpY2l0OiBwYWdpbmF0aW9uQVBJKCkgfVxuICAgICAgXCJcbiAgICA+PC9uZy1jb250YWluZXI+XG4gICAgfVxuICBgLFxufSlcbmV4cG9ydCBjbGFzcyBOdkRhdGF0YWJsZTxUPiBpbXBsZW1lbnRzIEFmdGVyVmlld0luaXQsIE9uRGVzdHJveSB7XG4gIC8qKiBDb2x1bW4gZGVmaW5pdGlvbnMgKi9cbiAgY29sdW1ucyA9IGlucHV0PE52RGF0YXRhYmxlQ29sdW1uPFQ+W10+KFtdKTtcbiAgLyoqIFJvdyBkYXRhICovXG4gIHJvd3MgPSBpbnB1dDxUW10+KFtdKTtcbiAgLyoqIE9wdGlvbmFsIHBhZ2luYXRpb24gY29uZmlndXJhdGlvbiAqL1xuICBwYWdpbmF0aW9uID0gaW5wdXQ8TnZEYXRhdGFibGVQYWdpbmF0aW9uQ29uZmlnIHwgdW5kZWZpbmVkPih1bmRlZmluZWQpO1xuICAvKiogU2hvdWxkIHRoZSBoZWFkZXIgc3RpY2sgdG8gdGhlIHRvcCBvZiB0aGUgdGFibGUgd2hlbiBzY3JvbGxpbmc/ICovXG4gIHN0aWNreUhlYWRlciA9IGlucHV0PGJvb2xlYW4+KGZhbHNlKTtcblxuICAvKiogVGVtcGxhdGUgZm9yIGN1c3RvbSBwYWdpbmF0aW9uIFVJICovXG4gIEBDb250ZW50Q2hpbGQoJ3BhZ2luYXRpb25UZW1wbGF0ZScsIHsgcmVhZDogVGVtcGxhdGVSZWYgfSlcbiAgcGFnaW5hdGlvblRlbXBsYXRlPzogVGVtcGxhdGVSZWY8e1xuICAgICRpbXBsaWNpdDogTnZEYXRhdGFibGVSZW5kZXJQYWdpbmF0aW9uQVBJO1xuICB9PjtcblxuICAvKiogQ2VsbCB0ZW1wbGF0ZXMgcHJvdmlkZWQgdmlhIG52RGF0YXRhYmxlQ2VsbCBkaXJlY3RpdmUgKi9cbiAgQENvbnRlbnRDaGlsZHJlbihOdkRhdGF0YWJsZUNlbGxEaXJlY3RpdmUpXG4gIGNlbGxUZW1wbGF0ZXM/OiBRdWVyeUxpc3Q8TnZEYXRhdGFibGVDZWxsRGlyZWN0aXZlPFQsIFRba2V5b2YgVF0+PjtcblxuICAvKiogU2lnbmFsIHRvIHRyYWNrIGNlbGwgdGVtcGxhdGVzIGFycmF5ICovXG4gIHByaXZhdGUgY2VsbFRlbXBsYXRlc1NpZ25hbCA9IHNpZ25hbDxcbiAgICBOdkRhdGF0YWJsZUNlbGxEaXJlY3RpdmU8VCwgVFtrZXlvZiBUXT5bXVxuICA+KFtdKTtcblxuICAvKiogTWFwIG9mIGZpZWxkIG5hbWVzIHRvIGNlbGwgdGVtcGxhdGVzICovXG4gIHByaXZhdGUgY2VsbFRlbXBsYXRlTWFwID0gY29tcHV0ZWQoKCkgPT4ge1xuICAgIGNvbnN0IG1hcCA9IG5ldyBNYXA8XG4gICAgICBzdHJpbmcsXG4gICAgICBUZW1wbGF0ZVJlZjxOdkRhdGF0YWJsZUNlbGxDb250ZXh0PFQsIFRba2V5b2YgVF0+PlxuICAgID4oKTtcbiAgICB0aGlzLmNlbGxUZW1wbGF0ZXNTaWduYWwoKS5mb3JFYWNoKChkaXJlY3RpdmUpID0+IHtcbiAgICAgIG1hcC5zZXQoZGlyZWN0aXZlLm52RGF0YXRhYmxlQ2VsbCwgZGlyZWN0aXZlLnRlbXBsYXRlKTtcbiAgICB9KTtcbiAgICByZXR1cm4gbWFwO1xuICB9KTtcblxuICAvKiogUGFnaW5hdGlvbiBzdGF0ZSBmb3Igc2VydmVyIG1vZGUgKi9cbiAgcHJpdmF0ZSBwYWdpbmF0aW9uU3RhdGUgPSBzaWduYWw8UGFnaW5hdGlvblN0YXRlPih7XG4gICAgcGFnZUluZGV4OiAwLFxuICAgIHBhZ2VTaXplOiB0aGlzLnBhZ2luYXRpb24oKT8uaW5pdGlhbFBhZ2VTaXplIHx8IDEwLFxuICB9KTtcblxuICAvKiogUmVmZXJlbmNlIHRvIHRhYmxlIHJvd3MgZm9yIGluZmluaXRlIHNjcm9sbCBvYnNlcnZlciAqL1xuICBwcml2YXRlIHRhYmxlUm93cyA9IHZpZXdDaGlsZDxFbGVtZW50UmVmPigndGFibGVSb3cnKTtcblxuICAvKiogSW50ZXJzZWN0aW9uIG9ic2VydmVyIGZvciBpbmZpbml0ZSBzY3JvbGwgKi9cbiAgcHJpdmF0ZSBvYnNlcnZlcjogSW50ZXJzZWN0aW9uT2JzZXJ2ZXIgfCBudWxsID0gbnVsbDtcblxuICAvKiogSGVscGVyIHRvIGNoZWNrIGlmIHVzaW5nIGluZmluaXRlIHNjcm9sbCAqL1xuICBpc0luZmluaXRlU2Nyb2xsID0gY29tcHV0ZWQoKCkgPT4gdGhpcy5wYWdpbmF0aW9uKCk/Lm1vZGUgPT09ICdpbmZpbml0ZScpO1xuXG4gIC8qKiBDb21wdXRlZCB0YWJsZSBjb2x1bW5zIHdpdGggcHJvcGVyIHR5cGluZyBhbmQgZmlsdGVyaW5nLiAqL1xuICB0YWJsZUNvbHVtbnMgPSBjb21wdXRlZDxDb2x1bW5EZWY8VCwgVFtrZXlvZiBUXT5bXT4oKCkgPT4ge1xuICAgIGNvbnN0IHRlbXBsYXRlTWFwID0gdGhpcy5jZWxsVGVtcGxhdGVNYXAoKTtcblxuICAgIHJldHVybiB0aGlzLmNvbHVtbnMoKVxuICAgICAgLmZpbHRlcigoY29sKSA9PiAhY29sLmhpZGRlbilcbiAgICAgIC5tYXAoKGNvbCkgPT4ge1xuICAgICAgICAvLyBTaGFyZWQgY2VsbCByZW5kZXJlclxuICAgICAgICBjb25zdCBjZWxsUmVuZGVyZXIgPSAoY29udGV4dDogQ2VsbENvbnRleHQ8VCwgVFtrZXlvZiBUXT4pID0+IHtcbiAgICAgICAgICBjb25zdCBmaWVsZE5hbWUgPSBTdHJpbmcoY29sLmZpZWxkKTtcbiAgICAgICAgICBjb25zdCBjZWxsVGVtcGxhdGUgPSB0ZW1wbGF0ZU1hcC5nZXQoZmllbGROYW1lKTtcblxuICAgICAgICAgIC8vIFByaW9yaXR5OiB0ZW1wbGF0ZSA+IHJlbmRlckNlbGwgPiBkZWZhdWx0XG4gICAgICAgICAgaWYgKGNlbGxUZW1wbGF0ZSkge1xuICAgICAgICAgICAgLy8gUmV0dXJuIFRlbXBsYXRlUmVmIGRpcmVjdGx5IC0gZ2V0VmFsdWUoKSByZXR1cm5zIGZvcm1hdHRlZCB2YWx1ZVxuICAgICAgICAgICAgcmV0dXJuIGNlbGxUZW1wbGF0ZTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICAvLyBGYWxsIGJhY2sgdG8gcmVuZGVyQ2VsbCBpZiBwcm92aWRlZFxuICAgICAgICAgIGlmIChjb2wucmVuZGVyQ2VsbCkge1xuICAgICAgICAgICAgcmV0dXJuIGNvbC5yZW5kZXJDZWxsKGNvbnRleHQpO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIC8vIERlZmF1bHQ6IGp1c3QgcmV0dXJuIHRoZSB2YWx1ZSAoZm9ybWF0dGVkIGlmIHZhbHVlRm9ybWF0dGVyIHdhcyB1c2VkKVxuICAgICAgICAgIHJldHVybiBjb250ZXh0LmdldFZhbHVlKCk7XG4gICAgICAgIH07XG5cbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICBhY2Nlc3NvcktleTogY29sLmZpZWxkLFxuICAgICAgICAgIGFjY2Vzc29yRm46IGNvbC52YWx1ZUZvcm1hdHRlclxuICAgICAgICAgICAgPyAocm93OiBUKSA9PiB7XG4gICAgICAgICAgICAgICAgY29uc3QgcmF3VmFsdWUgPSByb3dbY29sLmZpZWxkXTtcbiAgICAgICAgICAgICAgICByZXR1cm4gY29sLnZhbHVlRm9ybWF0dGVyISh7XG4gICAgICAgICAgICAgICAgICB2YWx1ZTogcmF3VmFsdWUsXG4gICAgICAgICAgICAgICAgICByb3csXG4gICAgICAgICAgICAgICAgICBmaWVsZDogY29sLmZpZWxkLFxuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICA6IHVuZGVmaW5lZCxcbiAgICAgICAgICBoZWFkZXI6IGNvbC5oZWFkZXJOYW1lIHx8IFN0cmluZyhjb2wuZmllbGQpLFxuICAgICAgICAgIHNpemU6IGNvbC53aWR0aCxcbiAgICAgICAgICBlbmFibGVSZXNpemluZzogY29sLnJlc2l6YWJsZSA/PyB0cnVlLFxuICAgICAgICAgIGNlbGw6IGNlbGxSZW5kZXJlcixcbiAgICAgICAgfTtcbiAgICAgIH0pO1xuICB9KTtcblxuICAvKiogVGFuU3RhY2sgdGFibGUgaW5zdGFuY2Ugd2l0aCBTaWduYWxzICovXG4gIHByaXZhdGUgdGFibGVJbnN0YW5jZSA9IGNyZWF0ZUFuZ3VsYXJUYWJsZSgoKSA9PiB7XG4gICAgY29uc3QgcGFnaW5hdGlvbkNvbmZpZyA9IHRoaXMucGFnaW5hdGlvbigpO1xuXG4gICAgaWYgKCFwYWdpbmF0aW9uQ29uZmlnIHx8IHBhZ2luYXRpb25Db25maWcubW9kZSA9PT0gJ2luZmluaXRlJykge1xuICAgICAgLy8gTm8gcGFnaW5hdGlvbiBvciBpbmZpbml0ZSBzY3JvbGwgLSBzaW1wbGUgY29uZmlnXG4gICAgICByZXR1cm4ge1xuICAgICAgICBkYXRhOiB0aGlzLnJvd3MoKSxcbiAgICAgICAgY29sdW1uczogdGhpcy50YWJsZUNvbHVtbnMoKSxcbiAgICAgICAgZ2V0Q29yZVJvd01vZGVsOiBnZXRDb3JlUm93TW9kZWwoKSxcbiAgICAgIH07XG4gICAgfSBlbHNlIGlmIChwYWdpbmF0aW9uQ29uZmlnLm1vZGUgPT09ICdjbGllbnQnKSB7XG4gICAgICAvLyBDbGllbnQtc2lkZSBwYWdpbmF0aW9uXG4gICAgICByZXR1cm4ge1xuICAgICAgICBkYXRhOiB0aGlzLnJvd3MoKSxcbiAgICAgICAgY29sdW1uczogdGhpcy50YWJsZUNvbHVtbnMoKSxcbiAgICAgICAgZ2V0Q29yZVJvd01vZGVsOiBnZXRDb3JlUm93TW9kZWwoKSxcbiAgICAgICAgZ2V0UGFnaW5hdGlvblJvd01vZGVsOiBnZXRQYWdpbmF0aW9uUm93TW9kZWwoKSxcbiAgICAgICAgaW5pdGlhbFN0YXRlOiB7XG4gICAgICAgICAgcGFnaW5hdGlvbjoge1xuICAgICAgICAgICAgcGFnZUluZGV4OiAwLFxuICAgICAgICAgICAgcGFnZVNpemU6IHBhZ2luYXRpb25Db25maWcuaW5pdGlhbFBhZ2VTaXplIHx8IDEwLFxuICAgICAgICAgIH0sXG4gICAgICAgIH0sXG4gICAgICB9O1xuICAgIH0gZWxzZSB7XG4gICAgICAvLyBTZXJ2ZXItc2lkZSBwYWdpbmF0aW9uXG4gICAgICBjb25zdCBwYWdlU2l6ZSA9IHRoaXMucGFnaW5hdGlvblN0YXRlKCkucGFnZVNpemU7XG4gICAgICByZXR1cm4ge1xuICAgICAgICBkYXRhOiB0aGlzLnJvd3MoKSxcbiAgICAgICAgY29sdW1uczogdGhpcy50YWJsZUNvbHVtbnMoKSxcbiAgICAgICAgZ2V0Q29yZVJvd01vZGVsOiBnZXRDb3JlUm93TW9kZWwoKSxcbiAgICAgICAgbWFudWFsUGFnaW5hdGlvbjogdHJ1ZSxcbiAgICAgICAgcGFnZUNvdW50OlxuICAgICAgICAgIHBhZ2luYXRpb25Db25maWcudG90YWxQYWdlQ291bnQgIT09IHVuZGVmaW5lZFxuICAgICAgICAgICAgPyBwYWdpbmF0aW9uQ29uZmlnLnRvdGFsUGFnZUNvdW50XG4gICAgICAgICAgICA6IHBhZ2luYXRpb25Db25maWcudG90YWxSb3dDb3VudCAhPT0gdW5kZWZpbmVkXG4gICAgICAgICAgICA/IE1hdGguY2VpbChwYWdpbmF0aW9uQ29uZmlnLnRvdGFsUm93Q291bnQgLyBwYWdlU2l6ZSlcbiAgICAgICAgICAgIDogLTEsXG4gICAgICAgIHN0YXRlOiB7XG4gICAgICAgICAgcGFnaW5hdGlvbjogdGhpcy5wYWdpbmF0aW9uU3RhdGUoKSxcbiAgICAgICAgfSxcbiAgICAgICAgb25QYWdpbmF0aW9uQ2hhbmdlOiAoXG4gICAgICAgICAgdXBkYXRlck9yVmFsdWU6XG4gICAgICAgICAgICB8IFBhZ2luYXRpb25TdGF0ZVxuICAgICAgICAgICAgfCAoKG9sZDogUGFnaW5hdGlvblN0YXRlKSA9PiBQYWdpbmF0aW9uU3RhdGUpLFxuICAgICAgICApID0+IHtcbiAgICAgICAgICBpZiAodHlwZW9mIHVwZGF0ZXJPclZhbHVlID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICAgICAgICB0aGlzLnBhZ2luYXRpb25TdGF0ZS5zZXQodXBkYXRlck9yVmFsdWUodGhpcy5wYWdpbmF0aW9uU3RhdGUoKSkpO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLnBhZ2luYXRpb25TdGF0ZS5zZXQodXBkYXRlck9yVmFsdWUpO1xuICAgICAgICAgIH1cbiAgICAgICAgfSxcbiAgICAgIH07XG4gICAgfVxuICB9KTtcblxuICAvKiogUHVibGljIGdldHRlciBmb3IgdGFibGUgaW5zdGFuY2UuICovXG4gIHRhYmxlKCkge1xuICAgIHJldHVybiB0aGlzLnRhYmxlSW5zdGFuY2UoKTtcbiAgfVxuXG4gIC8qKiBCdWlsZCBwYWdpbmF0aW9uIEFQSSBmb3IgdGVtcGxhdGUgKi9cbiAgcGFnaW5hdGlvbkFQSSA9IGNvbXB1dGVkPE52RGF0YXRhYmxlUmVuZGVyUGFnaW5hdGlvbkFQSSB8IG51bGw+KCgpID0+IHtcbiAgICBjb25zdCBwYWdpbmF0aW9uQ29uZmlnID0gdGhpcy5wYWdpbmF0aW9uKCk7XG4gICAgaWYgKCFwYWdpbmF0aW9uQ29uZmlnKSB7XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG5cbiAgICBjb25zdCB0YWJsZSA9IHRoaXMudGFibGUoKTtcbiAgICBjb25zdCB0YWJsZVBhZ2luYXRpb25TdGF0ZSA9IHRhYmxlLmdldFN0YXRlKCkucGFnaW5hdGlvbjtcbiAgICBjb25zdCBwYWdlQ291bnQgPSB0YWJsZS5nZXRQYWdlQ291bnQoKTtcbiAgICBjb25zdCByb3dDb3VudCA9XG4gICAgICBwYWdpbmF0aW9uQ29uZmlnLm1vZGUgPT09ICdzZXJ2ZXInXG4gICAgICAgID8gcGFnaW5hdGlvbkNvbmZpZy50b3RhbFJvd0NvdW50IHx8IHRoaXMucm93cygpLmxlbmd0aFxuICAgICAgICA6IHRoaXMucm93cygpLmxlbmd0aDtcblxuICAgIHJldHVybiB7XG4gICAgICBwYWdlSW5kZXg6IHRhYmxlUGFnaW5hdGlvblN0YXRlLnBhZ2VJbmRleCxcbiAgICAgIHBhZ2VTaXplOiB0YWJsZVBhZ2luYXRpb25TdGF0ZS5wYWdlU2l6ZSxcbiAgICAgIHBhZ2VDb3VudCxcbiAgICAgIHJvd0NvdW50LFxuICAgICAgZmlyc3RQYWdlOiAoKSA9PiB0YWJsZS5zZXRQYWdlSW5kZXgoMCksXG4gICAgICBwcmV2aW91c1BhZ2U6ICgpID0+IHRhYmxlLnByZXZpb3VzUGFnZSgpLFxuICAgICAgbmV4dFBhZ2U6ICgpID0+IHRhYmxlLm5leHRQYWdlKCksXG4gICAgICBsYXN0UGFnZTogKCkgPT4gdGFibGUuc2V0UGFnZUluZGV4KHBhZ2VDb3VudCAtIDEpLFxuICAgICAgc2V0UGFnZUluZGV4OiAoaW5kZXg6IG51bWJlcikgPT4gdGFibGUuc2V0UGFnZUluZGV4KGluZGV4KSxcbiAgICAgIHNldFBhZ2VTaXplOiAoc2l6ZTogbnVtYmVyKSA9PiB0YWJsZS5zZXRQYWdlU2l6ZShzaXplKSxcbiAgICAgIGNhblByZXZpb3VzUGFnZTogdGFibGUuZ2V0Q2FuUHJldmlvdXNQYWdlKCksXG4gICAgICBjYW5OZXh0UGFnZTogdGFibGUuZ2V0Q2FuTmV4dFBhZ2UoKSxcbiAgICAgIGlzTG9hZGluZzpcbiAgICAgICAgcGFnaW5hdGlvbkNvbmZpZy5tb2RlID09PSAnaW5maW5pdGUnXG4gICAgICAgICAgPyBwYWdpbmF0aW9uQ29uZmlnLmlzTG9hZGluZ1xuICAgICAgICAgIDogdW5kZWZpbmVkLFxuICAgICAgaGFzTW9yZTpcbiAgICAgICAgcGFnaW5hdGlvbkNvbmZpZy5tb2RlID09PSAnaW5maW5pdGUnXG4gICAgICAgICAgPyBwYWdpbmF0aW9uQ29uZmlnLmhhc01vcmVcbiAgICAgICAgICA6IHVuZGVmaW5lZCxcbiAgICB9O1xuICB9KTtcblxuICBjb25zdHJ1Y3RvcigpIHtcbiAgICAvLyBXYXRjaCBwYWdpbmF0aW9uIHN0YXRlIGNoYW5nZXMgZm9yIHNlcnZlciBtb2RlXG4gICAgZWZmZWN0KFxuICAgICAgKCkgPT4ge1xuICAgICAgICBjb25zdCBwYWdpbmF0aW9uQ29uZmlnID0gdGhpcy5wYWdpbmF0aW9uKCk7XG4gICAgICAgIGNvbnN0IHN0YXRlID0gdGhpcy5wYWdpbmF0aW9uU3RhdGUoKTtcblxuICAgICAgICBpZiAoXG4gICAgICAgICAgcGFnaW5hdGlvbkNvbmZpZz8ubW9kZSA9PT0gJ3NlcnZlcicgJiZcbiAgICAgICAgICBwYWdpbmF0aW9uQ29uZmlnLm9uUGFnaW5hdGlvbkNoYW5nZVxuICAgICAgICApIHtcbiAgICAgICAgICBwYWdpbmF0aW9uQ29uZmlnLm9uUGFnaW5hdGlvbkNoYW5nZSh7XG4gICAgICAgICAgICBwYWdlSW5kZXg6IHN0YXRlLnBhZ2VJbmRleCxcbiAgICAgICAgICAgIHBhZ2VTaXplOiBzdGF0ZS5wYWdlU2l6ZSxcbiAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgICAgfSxcbiAgICAgIHsgYWxsb3dTaWduYWxXcml0ZXM6IHRydWUgfSxcbiAgICApO1xuXG4gICAgLy8gU2V0IHVwIGludGVyc2VjdGlvbiBvYnNlcnZlciBmb3IgaW5maW5pdGUgc2Nyb2xsXG4gICAgZWZmZWN0KFxuICAgICAgKCkgPT4ge1xuICAgICAgICBjb25zdCBwYWdpbmF0aW9uQ29uZmlnID0gdGhpcy5wYWdpbmF0aW9uKCk7XG4gICAgICAgIGNvbnN0IHJvd3MgPSB0aGlzLnJvd3MoKTsgLy8gVHJhY2sgcm93cyBjaGFuZ2VzXG5cbiAgICAgICAgLy8gQ2xlYW4gdXAgZXhpc3Rpbmcgb2JzZXJ2ZXJcbiAgICAgICAgaWYgKHRoaXMub2JzZXJ2ZXIpIHtcbiAgICAgICAgICB0aGlzLm9ic2VydmVyLmRpc2Nvbm5lY3QoKTtcbiAgICAgICAgICB0aGlzLm9ic2VydmVyID0gbnVsbDtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIE9ubHkgc2V0IHVwIG9ic2VydmVyIGZvciBpbmZpbml0ZSBzY3JvbGwgbW9kZVxuICAgICAgICBpZiAocGFnaW5hdGlvbkNvbmZpZz8ubW9kZSAhPT0gJ2luZmluaXRlJyB8fCByb3dzLmxlbmd0aCA9PT0gMCkge1xuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIFVzZSBzZXRUaW1lb3V0IHRvIGVuc3VyZSBET00gaXMgdXBkYXRlZFxuICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICBjb25zdCB0aHJlc2hvbGQgPSBwYWdpbmF0aW9uQ29uZmlnLmxvYWRNb3JlVGhyZXNob2xkIHx8IDUwMDtcblxuICAgICAgICAgIC8vIEZpbmQgdGhlIGxhc3Qgcm93IGVsZW1lbnRcbiAgICAgICAgICBjb25zdCB0YWJsZVJvd0VsZW1lbnRzID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbChcbiAgICAgICAgICAgICdbZGF0YS1pcy1sYXN0PVwidHJ1ZVwiXScsXG4gICAgICAgICAgKTtcbiAgICAgICAgICBjb25zdCBsYXN0Um93RWxlbWVudCA9IHRhYmxlUm93RWxlbWVudHNbdGFibGVSb3dFbGVtZW50cy5sZW5ndGggLSAxXTtcblxuICAgICAgICAgIGlmICghbGFzdFJvd0VsZW1lbnQpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICB0aGlzLm9ic2VydmVyID0gbmV3IEludGVyc2VjdGlvbk9ic2VydmVyKFxuICAgICAgICAgICAgKGVudHJpZXMpID0+IHtcbiAgICAgICAgICAgICAgY29uc3QgZW50cnkgPSBlbnRyaWVzWzBdO1xuICAgICAgICAgICAgICBpZiAoXG4gICAgICAgICAgICAgICAgZW50cnkuaXNJbnRlcnNlY3RpbmcgJiZcbiAgICAgICAgICAgICAgICBwYWdpbmF0aW9uQ29uZmlnLm1vZGUgPT09ICdpbmZpbml0ZScgJiZcbiAgICAgICAgICAgICAgICBwYWdpbmF0aW9uQ29uZmlnLmhhc01vcmUgJiZcbiAgICAgICAgICAgICAgICAhcGFnaW5hdGlvbkNvbmZpZy5pc0xvYWRpbmcgJiZcbiAgICAgICAgICAgICAgICBwYWdpbmF0aW9uQ29uZmlnLm9uTG9hZE1vcmVcbiAgICAgICAgICAgICAgKSB7XG4gICAgICAgICAgICAgICAgcGFnaW5hdGlvbkNvbmZpZy5vbkxvYWRNb3JlKCk7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgIHJvb3RNYXJnaW46IGAke3RocmVzaG9sZH1weGAsXG4gICAgICAgICAgICAgIHJvb3Q6IG51bGwsXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICk7XG5cbiAgICAgICAgICB0aGlzLm9ic2VydmVyLm9ic2VydmUobGFzdFJvd0VsZW1lbnQpO1xuICAgICAgICB9LCAwKTtcbiAgICAgIH0sXG4gICAgICB7IGFsbG93U2lnbmFsV3JpdGVzOiB0cnVlIH0sXG4gICAgKTtcbiAgfVxuXG4gIG5nQWZ0ZXJWaWV3SW5pdCgpOiB2b2lkIHtcbiAgICAvLyBTeW5jIGNlbGwgdGVtcGxhdGVzIFF1ZXJ5TGlzdCB0byBzaWduYWxcbiAgICBpZiAodGhpcy5jZWxsVGVtcGxhdGVzKSB7XG4gICAgICB0aGlzLmNlbGxUZW1wbGF0ZXNTaWduYWwuc2V0KHRoaXMuY2VsbFRlbXBsYXRlcy50b0FycmF5KCkpO1xuXG4gICAgICAvLyBTdWJzY3JpYmUgdG8gY2hhbmdlcyBpbiB0aGUgUXVlcnlMaXN0XG4gICAgICB0aGlzLmNlbGxUZW1wbGF0ZXMuY2hhbmdlcy5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICBpZiAodGhpcy5jZWxsVGVtcGxhdGVzKSB7XG4gICAgICAgICAgdGhpcy5jZWxsVGVtcGxhdGVzU2lnbmFsLnNldCh0aGlzLmNlbGxUZW1wbGF0ZXMudG9BcnJheSgpKTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgfVxuICB9XG5cbiAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgaWYgKHRoaXMub2JzZXJ2ZXIpIHtcbiAgICAgIHRoaXMub2JzZXJ2ZXIuZGlzY29ubmVjdCgpO1xuICAgICAgdGhpcy5vYnNlcnZlciA9IG51bGw7XG4gICAgfVxuICB9XG59XG5cbi8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogVVRJTFMgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXG5cbi8qKlxuICogQ3JlYXRlcyBhIHN0cm9uZ2x5LXR5cGVkIGNvbHVtbiBmYWN0b3J5IGZvciBhIGdpdmVuIHJvdyB0eXBlLlxuICpcbiAqIEB0ZW1wbGF0ZSBSb3cgVGhlIHJvdyBkYXRhIHR5cGUgKGUuZy4sIGBQcm9kdWN0YClcbiAqXG4gKiBAcmV0dXJucyB7ZnVuY3Rpb259IEEgZnVuY3Rpb24gdGhhdCBhY2NlcHRzIGEgY29sdW1uIGRlZmluaXRpb24gYW5kIGluZmVyczpcbiAqIC0gYEtgIGFzIHRoZSBmaWVsZCBrZXkgKGBrZXlvZiBSb3dgKVxuICogLSBgRmAgYXMgdGhlIHJldHVybiB0eXBlIG9mIGB2YWx1ZUZvcm1hdHRlcmAgKGRlZmF1bHRzIHRvIGBSb3dbS11gKVxuICpcbiAqIEBleGFtcGxlXG4gKiBgYGB0c1xuICogLy8gRGVmaW5lIHlvdXIgcm93IHR5cGVcbiAqIGludGVyZmFjZSBQcm9kdWN0IHtcbiAqICAgbmFtZTogc3RyaW5nO1xuICogICBwcmljZTogbnVtYmVyO1xuICogfVxuICpcbiAqIGNvbnN0IGNvbCA9IG1ha2VDb2x1bW48UHJvZHVjdD4oKTtcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIG1ha2VDb2x1bW48Um93PigpIHtcbiAgcmV0dXJuIGZ1bmN0aW9uIGRlZmluZTxLIGV4dGVuZHMga2V5b2YgUm93LCBGID0gUm93W0tdPihcbiAgICBjb2w6IE52RGF0YXRhYmxlQ29sdW1uPFJvdywgSywgRj4sXG4gICkge1xuICAgIHJldHVybiBjb2wgYXMgdW5rbm93biBhcyBOdkRhdGF0YWJsZUNvbHVtbjxSb3c+O1xuICB9O1xufVxuXG5leHBvcnQgeyBmbGV4UmVuZGVyQ29tcG9uZW50IGFzIG52RGF0YXRhYmxlUmVuZGVyQ29tcG9uZW50IH0gZnJvbSAnLi9kYXRhdGFibGUudXRpbHMnO1xuXG4vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqIFRZUEVTICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xuZXhwb3J0IHR5cGUgeyBDZWxsQ29udGV4dCBhcyBOdkRhdGF0YWJsZUNlbGxDb250ZXh0IH07XG5cbi8qKiBDb2x1bW4gZGVmaW5pdGlvbiBmb3IgTnZEYXRhdGFibGUuICovXG5leHBvcnQgaW50ZXJmYWNlIE52RGF0YXRhYmxlQ29sdW1uPFxuICBSb3csXG4gIEsgZXh0ZW5kcyBrZXlvZiBSb3cgPSBrZXlvZiBSb3csXG4gIEYgPSBSb3dbS10sXG4+IHtcbiAgLyoqIEZpZWxkIG5hbWUgZnJvbSByb3cgZGF0YSAqL1xuICBmaWVsZDogSztcbiAgLyoqIERpc3BsYXkgbmFtZSBmb3IgY29sdW1uIGhlYWRlciAqL1xuICBoZWFkZXJOYW1lPzogc3RyaW5nO1xuICAvKiogQ29sdW1uIHdpZHRoIGluIHBpeGVscyAqL1xuICB3aWR0aD86IG51bWJlcjtcbiAgLyoqIFdoZXRoZXIgY29sdW1uIGlzIHJlc2l6YWJsZSAqL1xuICByZXNpemFibGU/OiBib29sZWFuO1xuICAvKiogV2hldGhlciBjb2x1bW4gaXMgaGlkZGVuICovXG4gIGhpZGRlbj86IGJvb2xlYW47XG4gIC8qKlxuICAgKiBUcmFuc2Zvcm0gdGhlIHJhdyB2YWx1ZSBiZWZvcmUgcmVuZGVyaW5nLiBSZWNlaXZlcyB0aGUgY2VsbCB2YWx1ZSBhbmQgZnVsbCByb3cgb2JqZWN0LlxuICAgKiBUaGlzIGlzIHVzZWZ1bCBmb3IgZm9ybWF0dGluZyBkYXRlcywgY29udmVydGluZyBhcnJheXMgdG8gc3RyaW5ncywgYWNjZXNzaW5nIG5lc3RlZCBvYmplY3RzLCBldGMuXG4gICAqIFRoZSB0cmFuc2Zvcm1lZCB2YWx1ZSBpcyB0aGVuIHBhc3NlZCB0byByZW5kZXJDZWxsIG9yIHRlbXBsYXRlcy5cbiAgICovXG4gIHZhbHVlRm9ybWF0dGVyPzogKHBhcmFtczogTnZUYWJsZVZhbHVlRm9ybWF0dGVyUGFyYW1zPFJvdywgUm93W0tdLCBLPikgPT4gRjtcbiAgLyoqXG4gICAqIEN1c3RvbSBjZWxsIHJlbmRlcmVyIGZ1bmN0aW9uIHRoYXQgY2FuIHJldHVybiBlaXRoZXIgYSBzdHJpbmcgb3IgQW5ndWxhciBUZW1wbGF0ZVJlZi5cbiAgICogVXNlIGAkaW1wbGljaXRgIGluIHlvdXIgdGVtcGxhdGUgdG8gcmVjZWl2ZSB0aGUgQ2VsbENvbnRleHQuXG4gICAqIE5vdGU6IElmIHZhbHVlRm9ybWF0dGVyIGlzIHByb3ZpZGVkLCByZW5kZXJDZWxsIHJlY2VpdmVzIHRoZSBmb3JtYXR0ZWQgdmFsdWUuXG4gICAqL1xuICByZW5kZXJDZWxsPzogKGNvbnRleHQ6IENlbGxDb250ZXh0PFJvdywgRj4pID0+XG4gICAgfCBzdHJpbmdcbiAgICB8IEZsZXhSZW5kZXJDb21wb25lbnRcbiAgICB8IFRlbXBsYXRlUmVmPHtcbiAgICAgICAgJGltcGxpY2l0OiBDZWxsQ29udGV4dDxSb3csIEY+O1xuICAgICAgfT47XG59XG5cbi8qKiBQYXJhbWV0ZXJzIGZvciBjdXN0b20gY2VsbCByZW5kZXJpbmcgZnVuY3Rpb24uICovXG5leHBvcnQgaW50ZXJmYWNlIE52VGFibGVSZW5kZXJDZWxsUGFyYW1zPFJvdywgVmFsdWUsIEZpZWxkPiB7XG4gIC8qKiBDZWxsIHZhbHVlICovXG4gIHZhbHVlOiBWYWx1ZSB8IE5vSW5mZXI8VmFsdWU+O1xuICAvKiogUm93IGRhdGEgKi9cbiAgcm93OiBSb3c7XG4gIC8qKiBGaWVsZCBuYW1lICovXG4gIGZpZWxkOiBGaWVsZDtcbiAgLyoqIFJvdyBpbmRleCAqL1xuICByb3dJbmRleDogbnVtYmVyO1xufVxuXG4vKipcbiAqIFBhcmFtZXRlcnMgZm9yIHZhbHVlRm9ybWF0dGVyIGZ1bmN0aW9uLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIE52VGFibGVWYWx1ZUZvcm1hdHRlclBhcmFtczxSb3csIFZhbHVlLCBGaWVsZD4ge1xuICAvKiogQ2VsbCBvcmlnaW5hbCB2YWx1ZSAqL1xuICB2YWx1ZTogVmFsdWU7XG4gIC8qKiBSb3cgZGF0YSAqL1xuICByb3c6IFJvdztcbiAgLyoqIEZpZWxkIG5hbWUgKi9cbiAgZmllbGQ6IEZpZWxkO1xufVxuXG4vKipcbiAqIFBhZ2luYXRpb24gY29uZmlndXJhdGlvbiBmb3IgTnZEYXRhdGFibGUuXG4gKiBTdXBwb3J0cyB0aHJlZSBtb2RlczogY2xpZW50LXNpZGUsIHNlcnZlci1zaWRlIHdpdGggYnV0dG9ucywgYW5kIGluZmluaXRlIHNjcm9sbC5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBOdkRhdGF0YWJsZVBhZ2luYXRpb25Db25maWcge1xuICAvKiogUGFnaW5hdGlvbiBtb2RlICovXG4gIG1vZGU6ICdjbGllbnQnIHwgJ3NlcnZlcicgfCAnaW5maW5pdGUnO1xuICAvKiogSW5pdGlhbCBwYWdlIHNpemUgKGRlZmF1bHQ6IDEwKSAqL1xuICBpbml0aWFsUGFnZVNpemU/OiBudW1iZXI7XG4gIC8qKiBBdmFpbGFibGUgcGFnZSBzaXplIG9wdGlvbnMgKGRlZmF1bHQ6IFsxMCwgMjAsIDUwLCAxMDBdKSAqL1xuICBwYWdlU2l6ZU9wdGlvbnM/OiBudW1iZXJbXTtcblxuICAvLyBTZXJ2ZXItc2lkZSAoYnV0dG9ucykgc3BlY2lmaWMgcHJvcGVydGllc1xuICAvKiogVG90YWwgbnVtYmVyIG9mIHJvd3MgKGZvciBzZXJ2ZXItc2lkZSBwYWdpbmF0aW9uKSAqL1xuICB0b3RhbFJvd0NvdW50PzogbnVtYmVyO1xuICAvKiogVG90YWwgbnVtYmVyIG9mIHBhZ2VzIChmb3Igc2VydmVyLXNpZGUgcGFnaW5hdGlvbikgKi9cbiAgdG90YWxQYWdlQ291bnQ/OiBudW1iZXI7XG4gIC8qKiBDYWxsYmFjayB3aGVuIHBhZ2luYXRpb24gc3RhdGUgY2hhbmdlcyAoZm9yIHNlcnZlci1zaWRlIHBhZ2luYXRpb24pICovXG4gIG9uUGFnaW5hdGlvbkNoYW5nZT86IChzdGF0ZToge1xuICAgIC8qKiBDdXJyZW50IHBhZ2UgaW5kZXggKi9cbiAgICBwYWdlSW5kZXg6IG51bWJlcjtcbiAgICAvKiogQ3VycmVudCBwYWdlIHNpemUgKi9cbiAgICBwYWdlU2l6ZTogbnVtYmVyO1xuICB9KSA9PiB2b2lkO1xuXG4gIC8vIEluZmluaXRlIHNjcm9sbCBzcGVjaWZpYyBwcm9wZXJ0aWVzXG4gIC8qKiBXaGV0aGVyIHRoZXJlIGFyZSBtb3JlIGl0ZW1zIHRvIGxvYWQgKGZvciBpbmZpbml0ZSBzY3JvbGwpICovXG4gIGhhc01vcmU/OiBib29sZWFuO1xuICAvKiogV2hldGhlciBkYXRhIGlzIGN1cnJlbnRseSBsb2FkaW5nIChmb3IgaW5maW5pdGUgc2Nyb2xsKSAqL1xuICBpc0xvYWRpbmc/OiBib29sZWFuO1xuICAvKiogRGlzdGFuY2UgZnJvbSBib3R0b20gaW4gcGl4ZWxzIHRvIHRyaWdnZXIgbG9hZCAoZGVmYXVsdDogNTAwKSAqL1xuICBsb2FkTW9yZVRocmVzaG9sZD86IG51bWJlcjtcbiAgLyoqIENhbGxiYWNrIHRvIGxvYWQgbW9yZSBkYXRhIChmb3IgaW5maW5pdGUgc2Nyb2xsKSAqL1xuICBvbkxvYWRNb3JlPzogKCkgPT4gdm9pZDtcbn1cblxuLyoqXG4gKiBBUEkgZXhwb3NlZCB0byBwYWdpbmF0aW9uIHRlbXBsYXRlIGZvciBidWlsZGluZyBjdXN0b20gcGFnaW5hdGlvbiBVSS5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBOdkRhdGF0YWJsZVJlbmRlclBhZ2luYXRpb25BUEkge1xuICAvKiogQ3VycmVudCBwYWdlIGluZGV4ICh6ZXJvLWJhc2VkKSAqL1xuICBwYWdlSW5kZXg6IG51bWJlcjtcbiAgLyoqIEN1cnJlbnQgcGFnZSBzaXplICovXG4gIHBhZ2VTaXplOiBudW1iZXI7XG4gIC8qKiBUb3RhbCBudW1iZXIgb2YgcGFnZXMgKi9cbiAgcGFnZUNvdW50OiBudW1iZXI7XG4gIC8qKiBUb3RhbCBudW1iZXIgb2Ygcm93cyAqL1xuICByb3dDb3VudDogbnVtYmVyO1xuICAvKiogTmF2aWdhdGUgdG8gZmlyc3QgcGFnZSAqL1xuICBmaXJzdFBhZ2U6ICgpID0+IHZvaWQ7XG4gIC8qKiBOYXZpZ2F0ZSB0byBwcmV2aW91cyBwYWdlICovXG4gIHByZXZpb3VzUGFnZTogKCkgPT4gdm9pZDtcbiAgLyoqIE5hdmlnYXRlIHRvIG5leHQgcGFnZSAqL1xuICBuZXh0UGFnZTogKCkgPT4gdm9pZDtcbiAgLyoqIE5hdmlnYXRlIHRvIGxhc3QgcGFnZSAqL1xuICBsYXN0UGFnZTogKCkgPT4gdm9pZDtcbiAgLyoqIE5hdmlnYXRlIHRvIHNwZWNpZmljIHBhZ2UgYnkgaW5kZXggKi9cbiAgc2V0UGFnZUluZGV4OiAoaW5kZXg6IG51bWJlcikgPT4gdm9pZDtcbiAgLyoqIENoYW5nZSBwYWdlIHNpemUgKi9cbiAgc2V0UGFnZVNpemU6IChzaXplOiBudW1iZXIpID0+IHZvaWQ7XG4gIC8qKiBXaGV0aGVyIHByZXZpb3VzIHBhZ2UgaXMgYXZhaWxhYmxlICovXG4gIGNhblByZXZpb3VzUGFnZTogYm9vbGVhbjtcbiAgLyoqIFdoZXRoZXIgbmV4dCBwYWdlIGlzIGF2YWlsYWJsZSAqL1xuICBjYW5OZXh0UGFnZTogYm9vbGVhbjtcbiAgLyoqIExvYWRpbmcgc3RhdGUgKG9ubHkgZm9yIGluZmluaXRlIHNjcm9sbCkgKi9cbiAgaXNMb2FkaW5nPzogYm9vbGVhbjtcbiAgLyoqIFdoZXRoZXIgbW9yZSBpdGVtcyBhcmUgYXZhaWxhYmxlIChvbmx5IGZvciBpbmZpbml0ZSBzY3JvbGwpICovXG4gIGhhc01vcmU/OiBib29sZWFuO1xufVxuIl19
|
|
530
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibnYtZGF0YXRhYmxlLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25vdmEtY29tcG9uZW50cy9zcmMvbGliL2NvbXBvbmVudHMvbnYtZGF0YXRhYmxlLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSx3Q0FBd0M7QUFDeEMsMENBQTBDO0FBQzFDLHdDQUF3QztBQUV4QyxPQUFPLEVBQ0wsU0FBUyxFQUNULFFBQVEsRUFDUixLQUFLLEVBQ0wsV0FBVyxFQUNYLHNCQUFzQixFQUN0QixZQUFZLEVBQ1osZUFBZSxFQUVmLE1BQU0sRUFDTixNQUFNLEVBRU4sU0FBUyxHQUdWLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEVBQ0wsd0JBQXdCLEdBRXpCLE1BQU0sK0JBQStCLENBQUM7QUFFdkMsZ0hBQWdIO0FBQ2hILE9BQU8sRUFDTCxrQkFBa0IsRUFDbEIsZUFBZSxFQUNmLHFCQUFxQixFQUNyQixpQkFBaUIsRUFDakIsbUJBQW1CLEdBT3BCLE1BQU0sbUJBQW1CLENBQUM7OztBQUUzQjs7O0dBR0c7QUFzRkgsTUFBTSxPQUFPLFdBQVc7SUFrUHRCLHdDQUF3QztJQUN4QyxLQUFLO1FBQ0gsT0FBTyxJQUFJLENBQUMsYUFBYSxFQUFFLENBQUM7SUFDOUIsQ0FBQztJQUVEOzs7O09BSUc7SUFDSCwwQkFBMEIsQ0FDeEIsS0FBMkMsRUFDM0MsTUFLQztRQUVELHlEQUF5RDtRQUN6RCxJQUFJLFNBQWtDLENBQUM7UUFFdkMsSUFBSSxPQUFPLEtBQUssS0FBSyxRQUFRLEVBQUUsQ0FBQztZQUM5QixTQUFTLEdBQUcsS0FBZ0MsQ0FBQztRQUMvQyxDQUFDO2FBQU0sSUFBSSxRQUFRLElBQUksS0FBSyxJQUFJLE9BQU8sS0FBSyxDQUFDLE1BQU0sS0FBSyxRQUFRLEVBQUUsQ0FBQztZQUNqRSxT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c2xpbnQtZGlzYWJsZSBqc2RvYy9yZXF1aXJlLWpzZG9jICovXG4vKiBlc2xpbnQtZGlzYWJsZSBqc2RvYy9yZXF1aXJlLXJldHVybnMgKi9cbi8qIGVzbGludC1kaXNhYmxlIGpzZG9jL3JlcXVpcmUtcGFyYW0gKi9cblxuaW1wb3J0IHtcbiAgQ29tcG9uZW50LFxuICBjb21wdXRlZCxcbiAgaW5wdXQsXG4gIFRlbXBsYXRlUmVmLFxuICBDVVNUT01fRUxFTUVOVFNfU0NIRU1BLFxuICBDb250ZW50Q2hpbGQsXG4gIENvbnRlbnRDaGlsZHJlbixcbiAgUXVlcnlMaXN0LFxuICBlZmZlY3QsXG4gIHNpZ25hbCxcbiAgRWxlbWVudFJlZixcbiAgdmlld0NoaWxkLFxuICBBZnRlclZpZXdJbml0LFxuICBPbkRlc3Ryb3ksXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7XG4gIE52RGF0YXRhYmxlQ2VsbERpcmVjdGl2ZSxcbiAgdHlwZSBOdkRhdGF0YWJsZUNlbGxDb250ZXh0LFxufSBmcm9tICcuL252LWRhdGF0YWJsZS1jZWxsLmRpcmVjdGl2ZSc7XG5cbi8vIGxvY2FsIGNvcHkgb2YgQHRhbnN0YWNrL2FuZ3VsYXItdGFibGUgKHJlcXVpcmVkIGZvciBtdWx0aSBhbmd1bGFyIHZlcnNpb25zLCB0aGUgYnVpbHQgdmVyc2lvbiBpcyBub3Qgd29ya2luZylcbmltcG9ydCB7XG4gIGNyZWF0ZUFuZ3VsYXJUYWJsZSxcbiAgZ2V0Q29yZVJvd01vZGVsLFxuICBnZXRQYWdpbmF0aW9uUm93TW9kZWwsXG4gIGdldFNvcnRlZFJvd01vZGVsLFxuICBGbGV4UmVuZGVyRGlyZWN0aXZlLFxuICB0eXBlIEZsZXhSZW5kZXJDb21wb25lbnQsXG4gIHR5cGUgQ29sdW1uRGVmLFxuICB0eXBlIENlbGxDb250ZXh0LFxuICB0eXBlIFBhZ2luYXRpb25TdGF0ZSxcbiAgdHlwZSBTb3J0aW5nU3RhdGUsXG4gIHR5cGUgTm9JbmZlcixcbn0gZnJvbSAnLi9kYXRhdGFibGUudXRpbHMnO1xuXG4vKipcbiAqIEEgcG93ZXJmdWwsIGZsZXhpYmxlIGRhdGF0YWJsZSBjb21wb25lbnQgYnVpbHQgb24gVGFuU3RhY2sgVGFibGUuXG4gKiBTdXBwb3J0cyBjdXN0b20gY2VsbCByZW5kZXJpbmcsIGNvbHVtbiBjb25maWd1cmF0aW9uLCBwYWdpbmF0aW9uLCBhbmQgZnVsbCBUeXBlU2NyaXB0IHR5cGluZy5cbiAqL1xuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnbnYtZGF0YXRhYmxlJyxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgaW1wb3J0czogW0NvbW1vbk1vZHVsZSwgRmxleFJlbmRlckRpcmVjdGl2ZV0sXG4gIHNjaGVtYXM6IFtDVVNUT01fRUxFTUVOVFNfU0NIRU1BXSxcbiAgdGVtcGxhdGU6IGBcbiAgICA8bnYtdGFibGU+XG4gICAgICA8dGFibGU+XG4gICAgICAgIDx0aGVhZCBbYXR0ci5kYXRhLXN0aWNreS10b3BdPVwic3RpY2t5SGVhZGVyKCkgPyAndHJ1ZScgOiBudWxsXCI+XG4gICAgICAgICAgQGZvciAoaGVhZGVyR3JvdXAgb2YgdGFibGUoKS5nZXRIZWFkZXJHcm91cHMoKTsgdHJhY2sgaGVhZGVyR3JvdXAuaWQpXG4gICAgICAgICAge1xuICAgICAgICAgIDx0cj5cbiAgICAgICAgICAgIEBmb3IgKGhlYWRlciBvZiBoZWFkZXJHcm91cC5oZWFkZXJzOyB0cmFjayBoZWFkZXIuaWQpIHtcbiAgICAgICAgICAgIDx0aFxuICAgICAgICAgICAgICBbYXR0ci5kYXRhLXRlc3RpZF09XCInZGF0YXRhYmxlLWhlYWRlci0nICsgaGVhZGVyLmlkXCJcbiAgICAgICAgICAgICAgW3N0eWxlLndpZHRoXT1cIlxuICAgICAgICAgICAgICAgIGhlYWRlci5jb2x1bW4uY29sdW1uRGVmLnNpemVcbiAgICAgICAgICAgICAgICAgID8gaGVhZGVyLmNvbHVtbi5jb2x1bW5EZWYuc2l6ZSArICdweCdcbiAgICAgICAgICAgICAgICAgIDogbnVsbFxuICAgICAgICAgICAgICBcIlxuICAgICAgICAgICAgICBbYXR0ci5kYXRhLW5vLXJlc2l6ZV09XCJcbiAgICAgICAgICAgICAgICAhaGVhZGVyLmNvbHVtbi5jb2x1bW5EZWYuZW5hYmxlUmVzaXppbmcgPyAndHJ1ZScgOiBudWxsXG4gICAgICAgICAgICAgIFwiXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgIEBpZiAoIWhlYWRlci5pc1BsYWNlaG9sZGVyKSB7IEBpZiAoaGVhZGVyLmNvbHVtbi5nZXRDYW5Tb3J0KCkpIHtcbiAgICAgICAgICAgICAgPG52LXRhYmxlaGVhZGVyXG4gICAgICAgICAgICAgICAgW3NvcnRhYmxlXT1cInRydWVcIlxuICAgICAgICAgICAgICAgIFtzb3J0RGlyZWN0aW9uXT1cImhlYWRlci5jb2x1bW4uZ2V0SXNTb3J0ZWQoKSB8fCAnbm9uZSdcIlxuICAgICAgICAgICAgICAgIChzb3J0RGlyZWN0aW9uQ2hhbmdlZCk9XCJcbiAgICAgICAgICAgICAgICAgIGhhbmRsZVNvcnREaXJlY3Rpb25DaGFuZ2VkKCRldmVudCwgaGVhZGVyKVxuICAgICAgICAgICAgICAgIFwiXG4gICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICB7eyBoZWFkZXIuY29sdW1uLmNvbHVtbkRlZi5oZWFkZXIgfX1cbiAgICAgICAgICAgICAgPC9udi10YWJsZWhlYWRlcj5cbiAgICAgICAgICAgICAgfSBAZWxzZSB7XG4gICAgICAgICAgICAgIHt7IGhlYWRlci5jb2x1bW4uY29sdW1uRGVmLmhlYWRlciB9fVxuICAgICAgICAgICAgICB9IH1cbiAgICAgICAgICAgIDwvdGg+XG4gICAgICAgICAgICB9XG4gICAgICAgICAgPC90cj5cbiAgICAgICAgICB9XG4gICAgICAgIDwvdGhlYWQ+XG5cbiAgICAgICAgPHRib2R5PlxuICAgICAgICAgIEBmb3IgKHJvdyBvZiB0YWJsZSgpLmdldFJvd01vZGVsKCkucm93czsgdHJhY2sgcm93LmlkOyBsZXQgaSA9ICRpbmRleClcbiAgICAgICAgICB7XG4gICAgICAgICAgPHRyXG4gICAgICAgICAgICBbYXR0ci5kYXRhLXRlc3RpZF09XCInZGF0YXRhYmxlLXJvdy0nICsgaVwiXG4gICAgICAgICAgICAjdGFibGVSb3dcbiAgICAgICAgICAgIFthdHRyLmRhdGEtaXMtbGFzdF09XCJcbiAgICAgICAgICAgICAgaXNJbmZpbml0ZVNjcm9sbCgpICYmIGkgPT09IHRhYmxlKCkuZ2V0Um93TW9kZWwoKS5yb3dzLmxlbmd0aCAtIDFcbiAgICAgICAgICAgICAgICA/ICd0cnVlJ1xuICAgICAgICAgICAgICAgIDogbnVsbFxuICAgICAgICAgICAgXCJcbiAgICAgICAgICA+XG4gICAgICAgICAgICBAZm9yIChjZWxsIG9mIHJvdy5nZXRWaXNpYmxlQ2VsbHMoKTsgdHJhY2sgY2VsbC5pZCkge1xuICAgICAgICAgICAgPHRkIFthdHRyLmRhdGEtdGVzdGlkXT1cIidkYXRhdGFibGUtY2VsbC0nICsgY2VsbC5jb2x1bW4uaWRcIj5cbiAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lclxuICAgICAgICAgICAgICAgICpmbGV4UmVuZGVyPVwiXG4gICAgICAgICAgICAgICAgICBjZWxsLmNvbHVtbi5jb2x1bW5EZWYuY2VsbDtcbiAgICAgICAgICAgICAgICAgIHByb3BzOiBjZWxsLmdldENvbnRleHQoKTtcbiAgICAgICAgICAgICAgICAgIGxldCBjZWxsQ29udGVudFxuICAgICAgICAgICAgICAgIFwiXG4gICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICB7eyBjZWxsQ29udGVudCB9fVxuICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgIDwvdGQ+XG4gICAgICAgICAgICB9XG4gICAgICAgICAgPC90cj5cbiAgICAgICAgICB9XG4gICAgICAgIDwvdGJvZHk+XG4gICAgICA8L3RhYmxlPlxuICAgIDwvbnYtdGFibGU+XG5cbiAgICA8IS0tIFJlbmRlciBwYWdpbmF0aW9uIGlmIGNvbmZpZ3VyZWQgLS0+XG4gICAgQGlmIChwYWdpbmF0aW9uQVBJKCkpIHtcbiAgICA8bmctY29udGFpbmVyXG4gICAgICAqbmdUZW1wbGF0ZU91dGxldD1cIlxuICAgICAgICBwYWdpbmF0aW9uVGVtcGxhdGUgfHwgbnVsbDtcbiAgICAgICAgY29udGV4dDogeyAkaW1wbGljaXQ6IHBhZ2luYXRpb25BUEkoKSB9XG4gICAgICBcIlxuICAgID48L25nLWNvbnRhaW5lcj5cbiAgICB9XG4gIGAsXG59KVxuZXhwb3J0IGNsYXNzIE52RGF0YXRhYmxlPFQ+IGltcGxlbWVudHMgQWZ0ZXJWaWV3SW5pdCwgT25EZXN0cm95IHtcbiAgLyoqIENvbHVtbiBkZWZpbml0aW9ucyAqL1xuICBjb2x1bW5zID0gaW5wdXQ8TnZEYXRhdGFibGVDb2x1bW48VD5bXT4oW10pO1xuICAvKiogUm93IGRhdGEgKi9cbiAgcm93cyA9IGlucHV0PFRbXT4oW10pO1xuICAvKiogT3B0aW9uYWwgcGFnaW5hdGlvbiBjb25maWd1cmF0aW9uICovXG4gIHBhZ2luYXRpb24gPSBpbnB1dDxOdkRhdGF0YWJsZVBhZ2luYXRpb25Db25maWcgfCB1bmRlZmluZWQ+KHVuZGVmaW5lZCk7XG4gIC8qKiBPcHRpb25hbCBzb3J0aW5nIGNvbmZpZ3VyYXRpb24gKi9cbiAgc29ydGluZyA9IGlucHV0PE52RGF0YXRhYmxlU29ydGluZ0NvbmZpZyB8IHVuZGVmaW5lZD4odW5kZWZpbmVkKTtcbiAgLyoqIFNob3VsZCB0aGUgaGVhZGVyIHN0aWNrIHRvIHRoZSB0b3Agb2YgdGhlIHRhYmxlIHdoZW4gc2Nyb2xsaW5nPyAqL1xuICBzdGlja3lIZWFkZXIgPSBpbnB1dDxib29sZWFuPihmYWxzZSk7XG5cbiAgLyoqIFRlbXBsYXRlIGZvciBjdXN0b20gcGFnaW5hdGlvbiBVSSAqL1xuICBAQ29udGVudENoaWxkKCdwYWdpbmF0aW9uVGVtcGxhdGUnLCB7IHJlYWQ6IFRlbXBsYXRlUmVmIH0pXG4gIHBhZ2luYXRpb25UZW1wbGF0ZT86IFRlbXBsYXRlUmVmPHtcbiAgICAkaW1wbGljaXQ6IE52RGF0YXRhYmxlUmVuZGVyUGFnaW5hdGlvbkFQSTtcbiAgfT47XG5cbiAgLyoqIENlbGwgdGVtcGxhdGVzIHByb3ZpZGVkIHZpYSBudkRhdGF0YWJsZUNlbGwgZGlyZWN0aXZlICovXG4gIEBDb250ZW50Q2hpbGRyZW4oTnZEYXRhdGFibGVDZWxsRGlyZWN0aXZlKVxuICBjZWxsVGVtcGxhdGVzPzogUXVlcnlMaXN0PE52RGF0YXRhYmxlQ2VsbERpcmVjdGl2ZTxULCBUW2tleW9mIFRdPj47XG5cbiAgLyoqIFNpZ25hbCB0byB0cmFjayBjZWxsIHRlbXBsYXRlcyBhcnJheSAqL1xuICBwcml2YXRlIGNlbGxUZW1wbGF0ZXNTaWduYWwgPSBzaWduYWw8XG4gICAgTnZEYXRhdGFibGVDZWxsRGlyZWN0aXZlPFQsIFRba2V5b2YgVF0+W11cbiAgPihbXSk7XG5cbiAgLyoqIE1hcCBvZiBmaWVsZCBuYW1lcyB0byBjZWxsIHRlbXBsYXRlcyAqL1xuICBwcml2YXRlIGNlbGxUZW1wbGF0ZU1hcCA9IGNvbXB1dGVkKCgpID0+IHtcbiAgICBjb25zdCBtYXAgPSBuZXcgTWFwPFxuICAgICAgc3RyaW5nLFxuICAgICAgVGVtcGxhdGVSZWY8TnZEYXRhdGFibGVDZWxsQ29udGV4dDxULCBUW2tleW9mIFRdPj5cbiAgICA+KCk7XG4gICAgdGhpcy5jZWxsVGVtcGxhdGVzU2lnbmFsKCkuZm9yRWFjaCgoZGlyZWN0aXZlKSA9PiB7XG4gICAgICBtYXAuc2V0KGRpcmVjdGl2ZS5udkRhdGF0YWJsZUNlbGwsIGRpcmVjdGl2ZS50ZW1wbGF0ZSk7XG4gICAgfSk7XG4gICAgcmV0dXJuIG1hcDtcbiAgfSk7XG5cbiAgLyoqIFBhZ2luYXRpb24gc3RhdGUgZm9yIHNlcnZlciBtb2RlICovXG4gIHByaXZhdGUgcGFnaW5hdGlvblN0YXRlID0gc2lnbmFsPFBhZ2luYXRpb25TdGF0ZT4oe1xuICAgIHBhZ2VJbmRleDogMCxcbiAgICBwYWdlU2l6ZTogdGhpcy5wYWdpbmF0aW9uKCk/LmluaXRpYWxQYWdlU2l6ZSB8fCAxMCxcbiAgfSk7XG5cbiAgLyoqIFNvcnRpbmcgc3RhdGUgZm9yIGNvbnRyb2xsZWQgc29ydGluZyAoc2VydmVyIG1vZGUpICovXG4gIHByaXZhdGUgc29ydGluZ1N0YXRlID0gc2lnbmFsPFNvcnRpbmdTdGF0ZT4odGhpcy5zb3J0aW5nKCk/LnNvcnRTdGF0ZSB8fCBbXSk7XG5cbiAgLyoqIFJlZmVyZW5jZSB0byB0YWJsZSByb3dzIGZvciBpbmZpbml0ZSBzY3JvbGwgb2JzZXJ2ZXIgKi9cbiAgcHJpdmF0ZSB0YWJsZVJvd3MgPSB2aWV3Q2hpbGQ8RWxlbWVudFJlZj4oJ3RhYmxlUm93Jyk7XG5cbiAgLyoqIEludGVyc2VjdGlvbiBvYnNlcnZlciBmb3IgaW5maW5pdGUgc2Nyb2xsICovXG4gIHByaXZhdGUgb2JzZXJ2ZXI6IEludGVyc2VjdGlvbk9ic2VydmVyIHwgbnVsbCA9IG51bGw7XG5cbiAgLyoqIEhlbHBlciB0byBjaGVjayBpZiB1c2luZyBpbmZpbml0ZSBzY3JvbGwgKi9cbiAgaXNJbmZpbml0ZVNjcm9sbCA9IGNvbXB1dGVkKCgpID0+IHRoaXMucGFnaW5hdGlvbigpPy5tb2RlID09PSAnaW5maW5pdGUnKTtcblxuICAvKiogQ29tcHV0ZWQgdGFibGUgY29sdW1ucyB3aXRoIHByb3BlciB0eXBpbmcgYW5kIGZpbHRlcmluZy4gKi9cbiAgdGFibGVDb2x1bW5zID0gY29tcHV0ZWQ8Q29sdW1uRGVmPFQsIFRba2V5b2YgVF0+W10+KCgpID0+IHtcbiAgICBjb25zdCB0ZW1wbGF0ZU1hcCA9IHRoaXMuY2VsbFRlbXBsYXRlTWFwKCk7XG5cbiAgICByZXR1cm4gdGhpcy5jb2x1bW5zKClcbiAgICAgIC5maWx0ZXIoKGNvbCkgPT4gIWNvbC5oaWRkZW4pXG4gICAgICAubWFwKChjb2wpID0+IHtcbiAgICAgICAgLy8gU2hhcmVkIGNlbGwgcmVuZGVyZXJcbiAgICAgICAgY29uc3QgY2VsbFJlbmRlcmVyID0gKGNvbnRleHQ6IENlbGxDb250ZXh0PFQsIFRba2V5b2YgVF0+KSA9PiB7XG4gICAgICAgICAgY29uc3QgZmllbGROYW1lID0gU3RyaW5nKGNvbC5maWVsZCk7XG4gICAgICAgICAgY29uc3QgY2VsbFRlbXBsYXRlID0gdGVtcGxhdGVNYXAuZ2V0KGZpZWxkTmFtZSk7XG5cbiAgICAgICAgICAvLyBQcmlvcml0eTogdGVtcGxhdGUgPiByZW5kZXJDZWxsID4gZGVmYXVsdFxuICAgICAgICAgIGlmIChjZWxsVGVtcGxhdGUpIHtcbiAgICAgICAgICAgIC8vIFJldHVybiBUZW1wbGF0ZVJlZiBkaXJlY3RseSAtIGdldFZhbHVlKCkgcmV0dXJucyBmb3JtYXR0ZWQgdmFsdWVcbiAgICAgICAgICAgIHJldHVybiBjZWxsVGVtcGxhdGU7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgLy8gRmFsbCBiYWNrIHRvIHJlbmRlckNlbGwgaWYgcHJvdmlkZWRcbiAgICAgICAgICBpZiAoY29sLnJlbmRlckNlbGwpIHtcbiAgICAgICAgICAgIHJldHVybiBjb2wucmVuZGVyQ2VsbChjb250ZXh0KTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICAvLyBEZWZhdWx0OiBqdXN0IHJldHVybiB0aGUgdmFsdWUgKGZvcm1hdHRlZCBpZiB2YWx1ZUZvcm1hdHRlciB3YXMgdXNlZClcbiAgICAgICAgICByZXR1cm4gY29udGV4dC5nZXRWYWx1ZSgpO1xuICAgICAgICB9O1xuXG4gICAgICAgIGNvbnN0IGNvbHVtbkRlZjogQ29sdW1uRGVmPFQsIFRba2V5b2YgVF0+ID0ge1xuICAgICAgICAgIGFjY2Vzc29yS2V5OiBjb2wuZmllbGQsXG4gICAgICAgICAgYWNjZXNzb3JGbjogY29sLnZhbHVlRm9ybWF0dGVyXG4gICAgICAgICAgICA/IChyb3c6IFQpID0+IHtcbiAgICAgICAgICAgICAgICBjb25zdCByYXdWYWx1ZSA9IHJvd1tjb2wuZmllbGRdO1xuICAgICAgICAgICAgICAgIHJldHVybiBjb2wudmFsdWVGb3JtYXR0ZXIhKHtcbiAgICAgICAgICAgICAgICAgIHZhbHVlOiByYXdWYWx1ZSxcbiAgICAgICAgICAgICAgICAgIHJvdyxcbiAgICAgICAgICAgICAgICAgIGZpZWxkOiBjb2wuZmllbGQsXG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIDogdW5kZWZpbmVkLFxuICAgICAgICAgIGhlYWRlcjogY29sLmhlYWRlck5hbWUgfHwgU3RyaW5nKGNvbC5maWVsZCksXG4gICAgICAgICAgc2l6ZTogY29sLndpZHRoLFxuICAgICAgICAgIGVuYWJsZVJlc2l6aW5nOiBjb2wucmVzaXphYmxlID8/IHRydWUsXG4gICAgICAgICAgLy8gU29ydGluZyBjb25maWd1cmF0aW9uXG4gICAgICAgICAgZW5hYmxlU29ydGluZzogdGhpcy5zb3J0aW5nKCkgPyBjb2wuc29ydGFibGUgPz8gdHJ1ZSA6IGZhbHNlLFxuICAgICAgICAgIGNlbGw6IGNlbGxSZW5kZXJlcixcbiAgICAgICAgfTtcblxuICAgICAgICAvLyBBZGQgb3B0aW9uYWwgc29ydGluZyBwcm9wZXJ0aWVzIG9ubHkgaWYgZGVmaW5lZFxuICAgICAgICBpZiAoY29sLnNvcnRpbmdGbiAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgLy8gQHRzLWV4cGVjdC1lcnJvciAtIFRhblN0YWNrIHR5cGluZyBpcyBzdHJpY3QgYnV0IHRoaXMgd29ya3MgYXQgcnVudGltZVxuICAgICAgICAgIGNvbHVtbkRlZi5zb3J0aW5nRm4gPSBjb2wuc29ydGluZ0ZuO1xuICAgICAgICB9XG4gICAgICAgIGlmIChjb2wuc29ydERlc2NGaXJzdCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgY29sdW1uRGVmLnNvcnREZXNjRmlyc3QgPSBjb2wuc29ydERlc2NGaXJzdDtcbiAgICAgICAgfVxuICAgICAgICBpZiAoY29sLmludmVydFNvcnRpbmcgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgIGNvbHVtbkRlZi5pbnZlcnRTb3J0aW5nID0gY29sLmludmVydFNvcnRpbmc7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGNvbC5zb3J0VW5kZWZpbmVkICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICBjb2x1bW5EZWYuc29ydFVuZGVmaW5lZCA9IGNvbC5zb3J0VW5kZWZpbmVkO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIGNvbHVtbkRlZjtcbiAgICAgIH0pO1xuICB9KTtcblxuICAvKiogVGFuU3RhY2sgdGFibGUgaW5zdGFuY2Ugd2l0aCBTaWduYWxzICovXG4gIHByaXZhdGUgdGFibGVJbnN0YW5jZSA9IGNyZWF0ZUFuZ3VsYXJUYWJsZSgoKSA9PiB7XG4gICAgY29uc3QgcGFnaW5hdGlvbkNvbmZpZyA9IHRoaXMucGFnaW5hdGlvbigpO1xuICAgIGNvbnN0IHNvcnRpbmdDb25maWcgPSB0aGlzLnNvcnRpbmcoKTtcblxuICAgIC8vIERldGVybWluZSBiYXNlIHRhYmxlIGNvbmZpZ3VyYXRpb24gd2l0aCBzb3J0aW5nXG4gICAgY29uc3QgZ2V0QmFzZVRhYmxlQ29uZmlnID0gKCkgPT4ge1xuICAgICAgY29uc3QgYmFzZUNvbmZpZyA9IHtcbiAgICAgICAgZGF0YTogdGhpcy5yb3dzKCksXG4gICAgICAgIGNvbHVtbnM6IHRoaXMudGFibGVDb2x1bW5zKCksXG4gICAgICAgIGdldENvcmVSb3dNb2RlbDogZ2V0Q29yZVJvd01vZGVsKCksXG4gICAgICAgIC8vIFNvcnRpbmcgY29uZmlndXJhdGlvblxuICAgICAgICAuLi4oc29ydGluZ0NvbmZpZyAmJiB7XG4gICAgICAgICAgc3RhdGU6IHtcbiAgICAgICAgICAgIHNvcnRpbmc6XG4gICAgICAgICAgICAgIHNvcnRpbmdDb25maWcubW9kZSA9PT0gJ3NlcnZlcicgJiYgc29ydGluZ0NvbmZpZy5zb3J0U3RhdGVcbiAgICAgICAgICAgICAgICA/IHNvcnRpbmdDb25maWcuc29ydFN0YXRlXG4gICAgICAgICAgICAgICAgOiB0aGlzLnNvcnRpbmdTdGF0ZSgpLFxuICAgICAgICAgIH0sXG4gICAgICAgICAgb25Tb3J0aW5nQ2hhbmdlOiAoXG4gICAgICAgICAgICB1cGRhdGVyT3JWYWx1ZTpcbiAgICAgICAgICAgICAgfCBTb3J0aW5nU3RhdGVcbiAgICAgICAgICAgICAgfCAoKG9sZDogU29ydGluZ1N0YXRlKSA9PiBTb3J0aW5nU3RhdGUpLFxuICAgICAgICAgICkgPT4ge1xuICAgICAgICAgICAgY29uc3QgY3VycmVudFNvcnQgPVxuICAgICAgICAgICAgICBzb3J0aW5nQ29uZmlnLm1vZGUgPT09ICdzZXJ2ZXInICYmIHNvcnRpbmdDb25maWcuc29ydFN0YXRlXG4gICAgICAgICAgICAgICAgPyBzb3J0aW5nQ29uZmlnLnNvcnRTdGF0ZVxuICAgICAgICAgICAgICAgIDogdGhpcy5zb3J0aW5nU3RhdGUoKTtcblxuICAgICAgICAgICAgY29uc3QgbmV3U29ydCA9XG4gICAgICAgICAgICAgIHR5cGVvZiB1cGRhdGVyT3JWYWx1ZSA9PT0gJ2Z1bmN0aW9uJ1xuICAgICAgICAgICAgICAgID8gdXBkYXRlck9yVmFsdWUoY3VycmVudFNvcnQpXG4gICAgICAgICAgICAgICAgOiB1cGRhdGVyT3JWYWx1ZTtcblxuICAgICAgICAgICAgLy8gQWx3YXlzIHVwZGF0ZSBpbnRlcm5hbCBzdGF0ZSBmb3IgcmVhY3Rpdml0eVxuICAgICAgICAgICAgdGhpcy5zb3J0aW5nU3RhdGUuc2V0KG5ld1NvcnQpO1xuXG4gICAgICAgICAgICAvLyBGb3Igc2VydmVyLXNpZGUgc29ydGluZywgYWxzbyBjYWxsIHRoZSBjYWxsYmFja1xuICAgICAgICAgICAgaWYgKFxuICAgICAgICAgICAgICBzb3J0aW5nQ29uZmlnPy5tb2RlID09PSAnc2VydmVyJyAmJlxuICAgICAgICAgICAgICBzb3J0aW5nQ29uZmlnLm9uU29ydGluZ0NoYW5nZVxuICAgICAgICAgICAgKSB7XG4gICAgICAgICAgICAgIHNvcnRpbmdDb25maWcub25Tb3J0aW5nQ2hhbmdlKG5ld1NvcnQpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH0sXG4gICAgICAgICAgbWFudWFsU29ydGluZzogc29ydGluZ0NvbmZpZy5tb2RlID09PSAnc2VydmVyJyxcbiAgICAgICAgICBlbmFibGVTb3J0aW5nOiB0cnVlLFxuICAgICAgICAgIGVuYWJsZU11bHRpU29ydDogc29ydGluZ0NvbmZpZy5lbmFibGVNdWx0aVNvcnQgPz8gZmFsc2UsXG4gICAgICAgICAgZW5hYmxlU29ydGluZ1JlbW92YWw6IHNvcnRpbmdDb25maWcuZW5hYmxlU29ydGluZ1JlbW92YWwgPz8gdHJ1ZSxcbiAgICAgICAgICBtYXhNdWx0aVNvcnRDb2xDb3VudDogc29ydGluZ0NvbmZpZy5tYXhNdWx0aVNvcnRDb2xDb3VudCxcbiAgICAgICAgICBzb3J0RGVzY0ZpcnN0OiBzb3J0aW5nQ29uZmlnLnNvcnREZXNjRmlyc3QgPz8gZmFsc2UsXG4gICAgICAgICAgLy8gV2hlbiBtdWx0aS1zb3J0IGlzIGVuYWJsZWQsIHRyZWF0IGFsbCBjbGlja3MgYXMgbXVsdGktc29ydCBldmVudHNcbiAgICAgICAgICBpc011bHRpU29ydEV2ZW50OiBzb3J0aW5nQ29uZmlnLmVuYWJsZU11bHRpU29ydFxuICAgICAgICAgICAgPyAoKSA9PiB0cnVlXG4gICAgICAgICAgICA6IHVuZGVmaW5lZCxcbiAgICAgICAgICBnZXRTb3J0ZWRSb3dNb2RlbDpcbiAgICAgICAgICAgIHNvcnRpbmdDb25maWcubW9kZSA9PT0gJ2NsaWVudCcgPyBnZXRTb3J0ZWRSb3dNb2RlbCgpIDogdW5kZWZpbmVkLFxuICAgICAgICB9KSxcbiAgICAgIH07XG5cbiAgICAgIHJldHVybiBiYXNlQ29uZmlnO1xuICAgIH07XG5cbiAgICBpZiAoIXBhZ2luYXRpb25Db25maWcgfHwgcGFnaW5hdGlvbkNvbmZpZy5tb2RlID09PSAnaW5maW5pdGUnKSB7XG4gICAgICAvLyBObyBwYWdpbmF0aW9uIG9yIGluZmluaXRlIHNjcm9sbCAtIHNpbXBsZSBjb25maWdcbiAgICAgIHJldHVybiBnZXRCYXNlVGFibGVDb25maWcoKTtcbiAgICB9IGVsc2UgaWYgKHBhZ2luYXRpb25Db25maWcubW9kZSA9PT0gJ2NsaWVudCcpIHtcbiAgICAgIC8vIENsaWVudC1zaWRlIHBhZ2luYXRpb25cbiAgICAgIHJldHVybiB7XG4gICAgICAgIC4uLmdldEJhc2VUYWJsZUNvbmZpZygpLFxuICAgICAgICBnZXRQYWdpbmF0aW9uUm93TW9kZWw6IGdldFBhZ2luYXRpb25Sb3dNb2RlbCgpLFxuICAgICAgICBpbml0aWFsU3RhdGU6IHtcbiAgICAgICAgICBwYWdpbmF0aW9uOiB7XG4gICAgICAgICAgICBwYWdlSW5kZXg6IDAsXG4gICAgICAgICAgICBwYWdlU2l6ZTogcGFnaW5hdGlvbkNvbmZpZy5pbml0aWFsUGFnZVNpemUgfHwgMTAsXG4gICAgICAgICAgfSxcbiAgICAgICAgfSxcbiAgICAgIH07XG4gICAgfSBlbHNlIHtcbiAgICAgIC8vIFNlcnZlci1zaWRlIHBhZ2luYXRpb24gLSBtYW51YWwgcGFnaW5hdGlvbiB3aXRoIHJlYWN0aXZlIHN0YXRlXG4gICAgICBjb25zdCBiYXNlQ29uZmlnID0gZ2V0QmFzZVRhYmxlQ29uZmlnKCk7XG4gICAgICBjb25zdCBwYWdlU2l6ZSA9IHRoaXMucGFnaW5hdGlvblN0YXRlKCkucGFnZVNpemU7XG4gICAgICByZXR1cm4ge1xuICAgICAgICAuLi5iYXNlQ29uZmlnLFxuICAgICAgICBtYW51YWxQYWdpbmF0aW9uOiB0cnVlLFxuICAgICAgICBwYWdlQ291bnQ6XG4gICAgICAgICAgcGFnaW5hdGlvbkNvbmZpZy50b3RhbFBhZ2VDb3VudCAhPT0gdW5kZWZpbmVkXG4gICAgICAgICAgICA/IHBhZ2luYXRpb25Db25maWcudG90YWxQYWdlQ291bnRcbiAgICAgICAgICAgIDogcGFnaW5hdGlvbkNvbmZpZy50b3RhbFJvd0NvdW50ICE9PSB1bmRlZmluZWRcbiAgICAgICAgICAgID8gTWF0aC5jZWlsKHBhZ2luYXRpb25Db25maWcudG90YWxSb3dDb3VudCAvIHBhZ2VTaXplKVxuICAgICAgICAgICAgOiAtMSxcbiAgICAgICAgc3RhdGU6IHtcbiAgICAgICAgICBwYWdpbmF0aW9uOiB0aGlzLnBhZ2luYXRpb25TdGF0ZSgpLFxuICAgICAgICAgIC4uLihiYXNlQ29uZmlnLnN0YXRlICYmIHsgc29ydGluZzogYmFzZUNvbmZpZy5zdGF0ZS5zb3J0aW5nIH0pLFxuICAgICAgICB9LFxuICAgICAgICBvblBhZ2luYXRpb25DaGFuZ2U6IChcbiAgICAgICAgICB1cGRhdGVyT3JWYWx1ZTpcbiAgICAgICAgICAgIHwgUGFnaW5hdGlvblN0YXRlXG4gICAgICAgICAgICB8ICgob2xkOiBQYWdpbmF0aW9uU3RhdGUpID0+IFBhZ2luYXRpb25TdGF0ZSksXG4gICAgICAgICkgPT4ge1xuICAgICAgICAgIGNvbnN0IG5ld1N0YXRlID1cbiAgICAgICAgICAgIHR5cGVvZiB1cGRhdGVyT3JWYWx1ZSA9PT0gJ2Z1bmN0aW9uJ1xuICAgICAgICAgICAgICA/IHVwZGF0ZXJPclZhbHVlKHRoaXMucGFnaW5hdGlvblN0YXRlKCkpXG4gICAgICAgICAgICAgIDogdXBkYXRlck9yVmFsdWU7XG5cbiAgICAgICAgICB0aGlzLnBhZ2luYXRpb25TdGF0ZS5zZXQobmV3U3RhdGUpO1xuXG4gICAgICAgICAgLy8gQ2FsbCB1c2VyJ3MgY2FsbGJhY2sgZm9yIHNlcnZlci1zaWRlIHBhZ2luYXRpb25cbiAgICAgICAgICBpZiAocGFnaW5hdGlvbkNvbmZpZy5vblBhZ2luYXRpb25DaGFuZ2UpIHtcbiAgICAgICAgICAgIHBhZ2luYXRpb25Db25maWcub25QYWdpbmF0aW9uQ2hhbmdlKHtcbiAgICAgICAgICAgICAgcGFnZUluZGV4OiBuZXdTdGF0ZS5wYWdlSW5kZXgsXG4gICAgICAgICAgICAgIHBhZ2VTaXplOiBuZXdTdGF0ZS5wYWdlU2l6ZSxcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgIH1cbiAgICAgICAgfSxcbiAgICAgIH07XG4gICAgfVxuICB9KTtcblxuICAvKiogUHVibGljIGdldHRlciBmb3IgdGFibGUgaW5zdGFuY2UuICovXG4gIHRhYmxlKCkge1xuICAgIHJldHVybiB0aGlzLnRhYmxlSW5zdGFuY2UoKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBIYW5kbGUgc29ydCBkaXJlY3Rpb24gY2hhbmdlIGZyb20gdGFibGUgaGVhZGVyXG4gICAqIEBwYXJhbSB7RXZlbnR9IGV2ZW50IFRoZSBzb3J0IGRpcmVjdGlvbiBjaGFuZ2UgZXZlbnQgb3IgZGlyZWN0aW9uIHN0cmluZ1xuICAgKiBAcGFyYW0ge29iamVjdH0gaGVhZGVyIFRoZSB0YWJsZSBoZWFkZXIgb2JqZWN0XG4gICAqL1xuICBoYW5kbGVTb3J0RGlyZWN0aW9uQ2hhbmdlZChcbiAgICBldmVudDogRXZlbnQgfCBDdXN0b21FdmVudDxzdHJpbmc+IHwgc3RyaW5nLFxuICAgIGhlYWRlcjoge1xuICAgICAgY29sdW1uOiB7XG4gICAgICAgIGNsZWFyU29ydGluZzogKCkgPT4gdm9pZDtcbiAgICAgICAgdG9nZ2xlU29ydGluZzogKGRlc2M/OiBib29sZWFuLCBtdWx0aT86IGJvb2xlYW4pID0+IHZvaWQ7XG4gICAgICB9O1xuICAgIH0sXG4gICkge1xuICAgIC8vIEV4dHJhY3QgZGlyZWN0aW9uIGZyb20gZXZlbnQgb3IgdXNlIGRpcmVjdGx5IGlmIHN0cmluZ1xuICAgIGxldCBkaXJlY3Rpb246ICdhc2MnIHwgJ2Rlc2MnIHwgJ25vbmUnO1xuXG4gICAgaWYgKHR5cGVvZiBldmVudCA9PT0gJ3N0cmluZycpIHtcbiAgICAgIGRpcmVjdGlvbiA9IGV2ZW50IGFzICdhc2MnIHwgJ2Rlc2MnIHwgJ25vbmUnO1xuICAgIH0gZWxzZSBpZiAoJ2RldGFpbCcgaW4gZXZlbnQgJiYgdHlwZW9mIGV2ZW50LmRldGFpbCA9PT0gJ3N0cmluZycpIHtcbiAgICAgIGRpcmVjdGlvbiA9IGV2ZW50LmRldGFpbCBhcyAnYXNjJyB8ICdkZXNjJyB8ICdub25lJztcbiAgICB9IGVsc2Uge1xuICAgICAgLy8gRmFsbGJhY2sgLSBzaG91bGRuJ3QgaGFwcGVuIGJ1dCBoYW5kbGUgZ3JhY2VmdWxseVxuICAgICAgY29uc29sZS53YXJuKFxuICAgICAgICAnVW5leHBlY3RlZCBldmVudCB0eXBlIGluIGhhbmRsZVNvcnREaXJlY3Rpb25DaGFuZ2VkOicsXG4gICAgICAgIGV2ZW50LFxuICAgICAgKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBjb25zdCBzb3J0aW5nQ29uZmlnID0gdGhpcy5zb3J0aW5nKCk7XG5cbiAgICAvLyBDaGVjayBpZiBtdWx0aS1zb3J0IGlzIGVuYWJsZWRcbiAgICBjb25zdCBpc011bHRpU29ydCA9IHNvcnRpbmdDb25maWc/LmVuYWJsZU11bHRpU29ydCA/PyBmYWxzZTtcblxuICAgIGlmIChkaXJlY3Rpb24gPT09ICdub25lJykge1xuICAgICAgLy8gQ2xlYXIgdGhpcyBjb2x1bW4ncyBzb3J0XG4gICAgICBoZWFkZXIuY29sdW1uLmNsZWFyU29ydGluZygpO1xuICAgIH0gZWxzZSB7XG4gICAgICAvLyBUb2dnbGUgc29ydCAtIFRhblN0YWNrIHdpbGwgaGFuZGxlIHRoZSBsb2dpYyBpbnRlcm5hbGx5XG4gICAgICBoZWFkZXIuY29sdW1uLnRvZ2dsZVNvcnRpbmcoZGlyZWN0aW9uID09PSAnZGVzYycsIGlzTXVsdGlTb3J0KTtcbiAgICB9XG4gIH1cblxuICAvKiogQnVpbGQgcGFnaW5hdGlvbiBBUEkgZm9yIHRlbXBsYXRlICovXG4gIHBhZ2luYXRpb25BUEkgPSBjb21wdXRlZDxOdkRhdGF0YWJsZVJlbmRlclBhZ2luYXRpb25BUEkgfCBudWxsPigoKSA9PiB7XG4gICAgY29uc3QgcGFnaW5hdGlvbkNvbmZpZyA9IHRoaXMucGFnaW5hdGlvbigpO1xuICAgIGlmICghcGFnaW5hdGlvbkNvbmZpZykge1xuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuXG4gICAgY29uc3QgdGFibGUgPSB0aGlzLnRhYmxlKCk7XG4gICAgY29uc3QgdGFibGVQYWdpbmF0aW9uU3RhdGUgPSB0YWJsZS5nZXRTdGF0ZSgpLnBhZ2luYXRpb247XG4gICAgY29uc3QgcGFnZUNvdW50ID0gdGFibGUuZ2V0UGFnZUNvdW50KCk7XG4gICAgY29uc3Qgcm93Q291bnQgPVxuICAgICAgcGFnaW5hdGlvbkNvbmZpZy5tb2RlID09PSAnc2VydmVyJ1xuICAgICAgICA/IHBhZ2luYXRpb25Db25maWcudG90YWxSb3dDb3VudCB8fCB0aGlzLnJvd3MoKS5sZW5ndGhcbiAgICAgICAgOiB0aGlzLnJvd3MoKS5sZW5ndGg7XG5cbiAgICByZXR1cm4ge1xuICAgICAgcGFnZUluZGV4OiB0YWJsZVBhZ2luYXRpb25TdGF0ZS5wYWdlSW5kZXgsXG4gICAgICBwYWdlU2l6ZTogdGFibGVQYWdpbmF0aW9uU3RhdGUucGFnZVNpemUsXG4gICAgICBwYWdlQ291bnQsXG4gICAgICByb3dDb3VudCxcbiAgICAgIGZpcnN0UGFnZTogKCkgPT4gdGFibGUuc2V0UGFnZUluZGV4KDApLFxuICAgICAgcHJldmlvdXNQYWdlOiAoKSA9PiB0YWJsZS5wcmV2aW91c1BhZ2UoKSxcbiAgICAgIG5leHRQYWdlOiAoKSA9PiB0YWJsZS5uZXh0UGFnZSgpLFxuICAgICAgbGFzdFBhZ2U6ICgpID0+IHRhYmxlLnNldFBhZ2VJbmRleChwYWdlQ291bnQgLSAxKSxcbiAgICAgIHNldFBhZ2VJbmRleDogKGluZGV4OiBudW1iZXIpID0+IHRhYmxlLnNldFBhZ2VJbmRleChpbmRleCksXG4gICAgICBzZXRQYWdlU2l6ZTogKHNpemU6IG51bWJlcikgPT4gdGFibGUuc2V0UGFnZVNpemUoc2l6ZSksXG4gICAgICBjYW5QcmV2aW91c1BhZ2U6IHRhYmxlLmdldENhblByZXZpb3VzUGFnZSgpLFxuICAgICAgY2FuTmV4dFBhZ2U6IHRhYmxlLmdldENhbk5leHRQYWdlKCksXG4gICAgICBpc0xvYWRpbmc6XG4gICAgICAgIHBhZ2luYXRpb25Db25maWcubW9kZSA9PT0gJ2luZmluaXRlJ1xuICAgICAgICAgID8gcGFnaW5hdGlvbkNvbmZpZy5pc0xvYWRpbmdcbiAgICAgICAgICA6IHVuZGVmaW5lZCxcbiAgICAgIGhhc01vcmU6XG4gICAgICAgIHBhZ2luYXRpb25Db25maWcubW9kZSA9PT0gJ2luZmluaXRlJ1xuICAgICAgICAgID8gcGFnaW5hdGlvbkNvbmZpZy5oYXNNb3JlXG4gICAgICAgICAgOiB1bmRlZmluZWQsXG4gICAgfTtcbiAgfSk7XG5cbiAgY29uc3RydWN0b3IoKSB7XG4gICAgLy8gU2V0IHVwIGludGVyc2VjdGlvbiBvYnNlcnZlciBmb3IgaW5maW5pdGUgc2Nyb2xsXG4gICAgZWZmZWN0KFxuICAgICAgKCkgPT4ge1xuICAgICAgICBjb25zdCBwYWdpbmF0aW9uQ29uZmlnID0gdGhpcy5wYWdpbmF0aW9uKCk7XG4gICAgICAgIGNvbnN0IHJvd3MgPSB0aGlzLnJvd3MoKTsgLy8gVHJhY2sgcm93cyBjaGFuZ2VzXG5cbiAgICAgICAgLy8gQ2xlYW4gdXAgZXhpc3Rpbmcgb2JzZXJ2ZXJcbiAgICAgICAgaWYgKHRoaXMub2JzZXJ2ZXIpIHtcbiAgICAgICAgICB0aGlzLm9ic2VydmVyLmRpc2Nvbm5lY3QoKTtcbiAgICAgICAgICB0aGlzLm9ic2VydmVyID0gbnVsbDtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIE9ubHkgc2V0IHVwIG9ic2VydmVyIGZvciBpbmZpbml0ZSBzY3JvbGwgbW9kZVxuICAgICAgICBpZiAocGFnaW5hdGlvbkNvbmZpZz8ubW9kZSAhPT0gJ2luZmluaXRlJyB8fCByb3dzLmxlbmd0aCA9PT0gMCkge1xuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIFVzZSBzZXRUaW1lb3V0IHRvIGVuc3VyZSBET00gaXMgdXBkYXRlZFxuICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICBjb25zdCB0aHJlc2hvbGQgPSBwYWdpbmF0aW9uQ29uZmlnLmxvYWRNb3JlVGhyZXNob2xkIHx8IDUwMDtcblxuICAgICAgICAgIC8vIEZpbmQgdGhlIGxhc3Qgcm93IGVsZW1lbnRcbiAgICAgICAgICBjb25zdCB0YWJsZVJvd0VsZW1lbnRzID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbChcbiAgICAgICAgICAgICdbZGF0YS1pcy1sYXN0PVwidHJ1ZVwiXScsXG4gICAgICAgICAgKTtcbiAgICAgICAgICBjb25zdCBsYXN0Um93RWxlbWVudCA9IHRhYmxlUm93RWxlbWVudHNbdGFibGVSb3dFbGVtZW50cy5sZW5ndGggLSAxXTtcblxuICAgICAgICAgIGlmICghbGFzdFJvd0VsZW1lbnQpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICB0aGlzLm9ic2VydmVyID0gbmV3IEludGVyc2VjdGlvbk9ic2VydmVyKFxuICAgICAgICAgICAgKGVudHJpZXMpID0+IHtcbiAgICAgICAgICAgICAgY29uc3QgZW50cnkgPSBlbnRyaWVzWzBdO1xuICAgICAgICAgICAgICBpZiAoXG4gICAgICAgICAgICAgICAgZW50cnkuaXNJbnRlcnNlY3RpbmcgJiZcbiAgICAgICAgICAgICAgICBwYWdpbmF0aW9uQ29uZmlnLm1vZGUgPT09ICdpbmZpbml0ZScgJiZcbiAgICAgICAgICAgICAgICBwYWdpbmF0aW9uQ29uZmlnLmhhc01vcmUgJiZcbiAgICAgICAgICAgICAgICAhcGFnaW5hdGlvbkNvbmZpZy5pc0xvYWRpbmcgJiZcbiAgICAgICAgICAgICAgICBwYWdpbmF0aW9uQ29uZmlnLm9uTG9hZE1vcmVcbiAgICAgICAgICAgICAgKSB7XG4gICAgICAgICAgICAgICAgcGFnaW5hdGlvbkNvbmZpZy5vbkxvYWRNb3JlKCk7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgIHJvb3RNYXJnaW46IGAke3RocmVzaG9sZH1weGAsXG4gICAgICAgICAgICAgIHJvb3Q6IG51bGwsXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICk7XG5cbiAgICAgICAgICB0aGlzLm9ic2VydmVyLm9ic2VydmUobGFzdFJvd0VsZW1lbnQpO1xuICAgICAgICB9LCAwKTtcbiAgICAgIH0sXG4gICAgICB7IGFsbG93U2lnbmFsV3JpdGVzOiB0cnVlIH0sXG4gICAgKTtcbiAgfVxuXG4gIG5nQWZ0ZXJWaWV3SW5pdCgpOiB2b2lkIHtcbiAgICAvLyBTeW5jIGNlbGwgdGVtcGxhdGVzIFF1ZXJ5TGlzdCB0byBzaWduYWxcbiAgICBpZiAodGhpcy5jZWxsVGVtcGxhdGVzKSB7XG4gICAgICB0aGlzLmNlbGxUZW1wbGF0ZXNTaWduYWwuc2V0KHRoaXMuY2VsbFRlbXBsYXRlcy50b0FycmF5KCkpO1xuXG4gICAgICAvLyBTdWJzY3JpYmUgdG8gY2hhbmdlcyBpbiB0aGUgUXVlcnlMaXN0XG4gICAgICB0aGlzLmNlbGxUZW1wbGF0ZXMuY2hhbmdlcy5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICBpZiAodGhpcy5jZWxsVGVtcGxhdGVzKSB7XG4gICAgICAgICAgdGhpcy5jZWxsVGVtcGxhdGVzU2lnbmFsLnNldCh0aGlzLmNlbGxUZW1wbGF0ZXMudG9BcnJheSgpKTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgfVxuICB9XG5cbiAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgaWYgKHRoaXMub2JzZXJ2ZXIpIHtcbiAgICAgIHRoaXMub2JzZXJ2ZXIuZGlzY29ubmVjdCgpO1xuICAgICAgdGhpcy5vYnNlcnZlciA9IG51bGw7XG4gICAgfVxuICB9XG59XG5cbi8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogVVRJTFMgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXG5cbi8qKlxuICogQ3JlYXRlcyBhIHN0cm9uZ2x5LXR5cGVkIGNvbHVtbiBmYWN0b3J5IGZvciBhIGdpdmVuIHJvdyB0eXBlLlxuICpcbiAqIEB0ZW1wbGF0ZSBSb3cgVGhlIHJvdyBkYXRhIHR5cGUgKGUuZy4sIGBQcm9kdWN0YClcbiAqXG4gKiBAcmV0dXJucyB7ZnVuY3Rpb259IEEgZnVuY3Rpb24gdGhhdCBhY2NlcHRzIGEgY29sdW1uIGRlZmluaXRpb24gYW5kIGluZmVyczpcbiAqIC0gYEtgIGFzIHRoZSBmaWVsZCBrZXkgKGBrZXlvZiBSb3dgKVxuICogLSBgRmAgYXMgdGhlIHJldHVybiB0eXBlIG9mIGB2YWx1ZUZvcm1hdHRlcmAgKGRlZmF1bHRzIHRvIGBSb3dbS11gKVxuICpcbiAqIEBleGFtcGxlXG4gKiBgYGB0c1xuICogLy8gRGVmaW5lIHlvdXIgcm93IHR5cGVcbiAqIGludGVyZmFjZSBQcm9kdWN0IHtcbiAqICAgbmFtZTogc3RyaW5nO1xuICogICBwcmljZTogbnVtYmVyO1xuICogfVxuICpcbiAqIGNvbnN0IGNvbCA9IG1ha2VDb2x1bW48UHJvZHVjdD4oKTtcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIG1ha2VDb2x1bW48Um93PigpIHtcbiAgcmV0dXJuIGZ1bmN0aW9uIGRlZmluZTxLIGV4dGVuZHMga2V5b2YgUm93LCBGID0gUm93W0tdPihcbiAgICBjb2w6IE52RGF0YXRhYmxlQ29sdW1uPFJvdywgSywgRj4sXG4gICkge1xuICAgIHJldHVybiBjb2wgYXMgdW5rbm93biBhcyBOdkRhdGF0YWJsZUNvbHVtbjxSb3c+O1xuICB9O1xufVxuXG5leHBvcnQgeyBmbGV4UmVuZGVyQ29tcG9uZW50IGFzIG52RGF0YXRhYmxlUmVuZGVyQ29tcG9uZW50IH0gZnJvbSAnLi9kYXRhdGFibGUudXRpbHMnO1xuXG4vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqIFRZUEVTICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xuZXhwb3J0IHR5cGUgeyBDZWxsQ29udGV4dCBhcyBOdkRhdGF0YWJsZUNlbGxDb250ZXh0IH07XG5cbi8qKiBDb2x1bW4gZGVmaW5pdGlvbiBmb3IgTnZEYXRhdGFibGUuICovXG5leHBvcnQgaW50ZXJmYWNlIE52RGF0YXRhYmxlQ29sdW1uPFxuICBSb3csXG4gIEsgZXh0ZW5kcyBrZXlvZiBSb3cgPSBrZXlvZiBSb3csXG4gIEYgPSBSb3dbS10sXG4+IHtcbiAgLyoqIEZpZWxkIG5hbWUgZnJvbSByb3cgZGF0YSAqL1xuICBmaWVsZDogSztcbiAgLyoqIERpc3BsYXkgbmFtZSBmb3IgY29sdW1uIGhlYWRlciAqL1xuICBoZWFkZXJOYW1lPzogc3RyaW5nO1xuICAvKiogQ29sdW1uIHdpZHRoIGluIHBpeGVscyAqL1xuICB3aWR0aD86IG51bWJlcjtcbiAgLyoqIFdoZXRoZXIgY29sdW1uIGlzIHJlc2l6YWJsZSAqL1xuICByZXNpemFibGU/OiBib29sZWFuO1xuICAvKiogV2hldGhlciBjb2x1bW4gaXMgaGlkZGVuICovXG4gIGhpZGRlbj86IGJvb2xlYW47XG4gIC8qKlxuICAgKiBUcmFuc2Zvcm0gdGhlIHJhdyB2YWx1ZSBiZWZvcmUgcmVuZGVyaW5nLiBSZWNlaXZlcyB0aGUgY2VsbCB2YWx1ZSBhbmQgZnVsbCByb3cgb2JqZWN0LlxuICAgKiBUaGlzIGlzIHVzZWZ1bCBmb3IgZm9ybWF0dGluZyBkYXRlcywgY29udmVydGluZyBhcnJheXMgdG8gc3RyaW5ncywgYWNjZXNzaW5nIG5lc3RlZCBvYmplY3RzLCBldGMuXG4gICAqIFRoZSB0cmFuc2Zvcm1lZCB2YWx1ZSBpcyB0aGVuIHBhc3NlZCB0byByZW5kZXJDZWxsIG9yIHRlbXBsYXRlcy5cbiAgICovXG4gIHZhbHVlRm9ybWF0dGVyPzogKHBhcmFtczogTnZUYWJsZVZhbHVlRm9ybWF0dGVyUGFyYW1zPFJvdywgUm93W0tdLCBLPikgPT4gRjtcbiAgLyoqXG4gICAqIEN1c3RvbSBjZWxsIHJlbmRlcmVyIGZ1bmN0aW9uIHRoYXQgY2FuIHJldHVybiBlaXRoZXIgYSBzdHJpbmcgb3IgQW5ndWxhciBUZW1wbGF0ZVJlZi5cbiAgICogVXNlIGAkaW1wbGljaXRgIGluIHlvdXIgdGVtcGxhdGUgdG8gcmVjZWl2ZSB0aGUgQ2VsbENvbnRleHQuXG4gICAqIE5vdGU6IElmIHZhbHVlRm9ybWF0dGVyIGlzIHByb3ZpZGVkLCByZW5kZXJDZWxsIHJlY2VpdmVzIHRoZSBmb3JtYXR0ZWQgdmFsdWUuXG4gICAqL1xuICByZW5kZXJDZWxsPzogKGNvbnRleHQ6IENlbGxDb250ZXh0PFJvdywgRj4pID0+XG4gICAgfCBzdHJpbmdcbiAgICB8IEZsZXhSZW5kZXJDb21wb25lbnRcbiAgICB8IFRlbXBsYXRlUmVmPHtcbiAgICAgICAgJGltcGxpY2l0OiBDZWxsQ29udGV4dDxSb3csIEY+O1xuICAgICAgfT47XG4gIC8qKiBFbmFibGUvZGlzYWJsZSBzb3J0aW5nIGZvciB0aGlzIGNvbHVtbiAqL1xuICBzb3J0YWJsZT86IGJvb2xlYW47XG4gIC8qKiBDdXN0b20gc29ydGluZyBmdW5jdGlvbiBvciBidWlsdC1pbiBmdW5jdGlvbiBuYW1lICovXG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZXhwbGljaXQtYW55XG4gIHNvcnRpbmdGbj86ICgocm93QTogYW55LCByb3dCOiBhbnksIGNvbHVtbklkOiBzdHJpbmcpID0+IG51bWJlcikgfCBzdHJpbmc7XG4gIC8qKiBTdGFydCB3aXRoIGRlc2NlbmRpbmcgc29ydCBmb3IgdGhpcyBjb2x1bW4gKi9cbiAgc29ydERlc2NGaXJzdD86IGJvb2xlYW47XG4gIC8qKiBJbnZlcnQgdGhlIHNvcnQgb3JkZXIgKHVzZWZ1bCBmb3IgcmFua2luZ3MpICovXG4gIGludmVydFNvcnRpbmc/OiBib29sZWFuO1xuICAvKiogV2hlcmUgdG8gcGxhY2UgdW5kZWZpbmVkIHZhbHVlcyBpbiBzb3J0ICovXG4gIHNvcnRVbmRlZmluZWQ/OiAnZmlyc3QnIHwgJ2xhc3QnIHwgZmFsc2UgfCAtMSB8IDE7XG59XG5cbi8qKiBQYXJhbWV0ZXJzIGZvciBjdXN0b20gY2VsbCByZW5kZXJpbmcgZnVuY3Rpb24uICovXG5leHBvcnQgaW50ZXJmYWNlIE52VGFibGVSZW5kZXJDZWxsUGFyYW1zPFJvdywgVmFsdWUsIEZpZWxkPiB7XG4gIC8qKiBDZWxsIHZhbHVlICovXG4gIHZhbHVlOiBWYWx1ZSB8IE5vSW5mZXI8VmFsdWU+O1xuICAvKiogUm93IGRhdGEgKi9cbiAgcm93OiBSb3c7XG4gIC8qKiBGaWVsZCBuYW1lICovXG4gIGZpZWxkOiBGaWVsZDtcbiAgLyoqIFJvdyBpbmRleCAqL1xuICByb3dJbmRleDogbnVtYmVyO1xufVxuXG4vKipcbiAqIFBhcmFtZXRlcnMgZm9yIHZhbHVlRm9ybWF0dGVyIGZ1bmN0aW9uLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIE52VGFibGVWYWx1ZUZvcm1hdHRlclBhcmFtczxSb3csIFZhbHVlLCBGaWVsZD4ge1xuICAvKiogQ2VsbCBvcmlnaW5hbCB2YWx1ZSAqL1xuICB2YWx1ZTogVmFsdWU7XG4gIC8qKiBSb3cgZGF0YSAqL1xuICByb3c6IFJvdztcbiAgLyoqIEZpZWxkIG5hbWUgKi9cbiAgZmllbGQ6IEZpZWxkO1xufVxuXG4vKipcbiAqIFBhZ2luYXRpb24gY29uZmlndXJhdGlvbiBmb3IgTnZEYXRhdGFibGUuXG4gKiBTdXBwb3J0cyB0aHJlZSBtb2RlczogY2xpZW50LXNpZGUsIHNlcnZlci1zaWRlIHdpdGggYnV0dG9ucywgYW5kIGluZmluaXRlIHNjcm9sbC5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBOdkRhdGF0YWJsZVBhZ2luYXRpb25Db25maWcge1xuICAvKiogUGFnaW5hdGlvbiBtb2RlICovXG4gIG1vZGU6ICdjbGllbnQnIHwgJ3NlcnZlcicgfCAnaW5maW5pdGUnO1xuICAvKiogSW5pdGlhbCBwYWdlIHNpemUgKGRlZmF1bHQ6IDEwKSAqL1xuICBpbml0aWFsUGFnZVNpemU/OiBudW1iZXI7XG4gIC8qKiBBdmFpbGFibGUgcGFnZSBzaXplIG9wdGlvbnMgKGRlZmF1bHQ6IFsxMCwgMjAsIDUwLCAxMDBdKSAqL1xuICBwYWdlU2l6ZU9wdGlvbnM/OiBudW1iZXJbXTtcblxuICAvLyBTZXJ2ZXItc2lkZSAoYnV0dG9ucykgc3BlY2lmaWMgcHJvcGVydGllc1xuICAvKiogVG90YWwgbnVtYmVyIG9mIHJvd3MgKGZvciBzZXJ2ZXItc2lkZSBwYWdpbmF0aW9uKSAqL1xuICB0b3RhbFJvd0NvdW50PzogbnVtYmVyO1xuICAvKiogVG90YWwgbnVtYmVyIG9mIHBhZ2VzIChmb3Igc2VydmVyLXNpZGUgcGFnaW5hdGlvbikgKi9cbiAgdG90YWxQYWdlQ291bnQ/OiBudW1iZXI7XG4gIC8qKiBDYWxsYmFjayB3aGVuIHBhZ2luYXRpb24gc3RhdGUgY2hhbmdlcyAoZm9yIHNlcnZlci1zaWRlIHBhZ2luYXRpb24pICovXG4gIG9uUGFnaW5hdGlvbkNoYW5nZT86IChzdGF0ZToge1xuICAgIC8qKiBDdXJyZW50IHBhZ2UgaW5kZXggKi9cbiAgICBwYWdlSW5kZXg6IG51bWJlcjtcbiAgICAvKiogQ3VycmVudCBwYWdlIHNpemUgKi9cbiAgICBwYWdlU2l6ZTogbnVtYmVyO1xuICB9KSA9PiB2b2lkO1xuXG4gIC8vIEluZmluaXRlIHNjcm9sbCBzcGVjaWZpYyBwcm9wZXJ0aWVzXG4gIC8qKiBXaGV0aGVyIHRoZXJlIGFyZSBtb3JlIGl0ZW1zIHRvIGxvYWQgKGZvciBpbmZpbml0ZSBzY3JvbGwpICovXG4gIGhhc01vcmU/OiBib29sZWFuO1xuICAvKiogV2hldGhlciBkYXRhIGlzIGN1cnJlbnRseSBsb2FkaW5nIChmb3IgaW5maW5pdGUgc2Nyb2xsKSAqL1xuICBpc0xvYWRpbmc/OiBib29sZWFuO1xuICAvKiogRGlzdGFuY2UgZnJvbSBib3R0b20gaW4gcGl4ZWxzIHRvIHRyaWdnZXIgbG9hZCAoZGVmYXVsdDogNTAwKSAqL1xuICBsb2FkTW9yZVRocmVzaG9sZD86IG51bWJlcjtcbiAgLyoqIENhbGxiYWNrIHRvIGxvYWQgbW9yZSBkYXRhIChmb3IgaW5maW5pdGUgc2Nyb2xsKSAqL1xuICBvbkxvYWRNb3JlPzogKCkgPT4gdm9pZDtcbn1cblxuLyoqXG4gKiBBUEkgZXhwb3NlZCB0byBwYWdpbmF0aW9uIHRlbXBsYXRlIGZvciBidWlsZGluZyBjdXN0b20gcGFnaW5hdGlvbiBVSS5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBOdkRhdGF0YWJsZVJlbmRlclBhZ2luYXRpb25BUEkge1xuICAvKiogQ3VycmVudCBwYWdlIGluZGV4ICh6ZXJvLWJhc2VkKSAqL1xuICBwYWdlSW5kZXg6IG51bWJlcjtcbiAgLyoqIEN1cnJlbnQgcGFnZSBzaXplICovXG4gIHBhZ2VTaXplOiBudW1iZXI7XG4gIC8qKiBUb3RhbCBudW1iZXIgb2YgcGFnZXMgKi9cbiAgcGFnZUNvdW50OiBudW1iZXI7XG4gIC8qKiBUb3RhbCBudW1iZXIgb2Ygcm93cyAqL1xuICByb3dDb3VudDogbnVtYmVyO1xuICAvKiogTmF2aWdhdGUgdG8gZmlyc3QgcGFnZSAqL1xuICBmaXJzdFBhZ2U6ICgpID0+IHZvaWQ7XG4gIC8qKiBOYXZpZ2F0ZSB0byBwcmV2aW91cyBwYWdlICovXG4gIHByZXZpb3VzUGFnZTogKCkgPT4gdm9pZDtcbiAgLyoqIE5hdmlnYXRlIHRvIG5leHQgcGFnZSAqL1xuICBuZXh0UGFnZTogKCkgPT4gdm9pZDtcbiAgLyoqIE5hdmlnYXRlIHRvIGxhc3QgcGFnZSAqL1xuICBsYXN0UGFnZTogKCkgPT4gdm9pZDtcbiAgLyoqIE5hdmlnYXRlIHRvIHNwZWNpZmljIHBhZ2UgYnkgaW5kZXggKi9cbiAgc2V0UGFnZUluZGV4OiAoaW5kZXg6IG51bWJlcikgPT4gdm9pZDtcbiAgLyoqIENoYW5nZSBwYWdlIHNpemUgKi9cbiAgc2V0UGFnZVNpemU6IChzaXplOiBudW1iZXIpID0+IHZvaWQ7XG4gIC8qKiBXaGV0aGVyIHByZXZpb3VzIHBhZ2UgaXMgYXZhaWxhYmxlICovXG4gIGNhblByZXZpb3VzUGFnZTogYm9vbGVhbjtcbiAgLyoqIFdoZXRoZXIgbmV4dCBwYWdlIGlzIGF2YWlsYWJsZSAqL1xuICBjYW5OZXh0UGFnZTogYm9vbGVhbjtcbiAgLyoqIExvYWRpbmcgc3RhdGUgKG9ubHkgZm9yIGluZmluaXRlIHNjcm9sbCkgKi9cbiAgaXNMb2FkaW5nPzogYm9vbGVhbjtcbiAgLyoqIFdoZXRoZXIgbW9yZSBpdGVtcyBhcmUgYXZhaWxhYmxlIChvbmx5IGZvciBpbmZpbml0ZSBzY3JvbGwpICovXG4gIGhhc01vcmU/OiBib29sZWFuO1xufVxuXG4vKipcbiAqIFNvcnRpbmcgY29uZmlndXJhdGlvbiBmb3IgTnZEYXRhdGFibGUuXG4gKiBTdXBwb3J0cyBib3RoIGNsaWVudC1zaWRlIGFuZCBzZXJ2ZXItc2lkZSBzb3J0aW5nLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIE52RGF0YXRhYmxlU29ydGluZ0NvbmZpZyB7XG4gIC8qKiBTb3J0aW5nIG1vZGUgKi9cbiAgbW9kZTogJ2NsaWVudCcgfCAnc2VydmVyJztcbiAgLyoqIEVuYWJsZSBtdWx0aS1jb2x1bW4gc29ydGluZyB3aXRoIFNoaWZ0K0NsaWNrICovXG4gIGVuYWJsZU11bHRpU29ydD86IGJvb2xlYW47XG4gIC8qKiBBbGxvdyBjeWNsaW5nIHRocm91Z2ggdG8gXCJubyBzb3J0XCIgc3RhdGUgKi9cbiAgZW5hYmxlU29ydGluZ1JlbW92YWw/OiBib29sZWFuO1xuICAvKiogTWF4aW11bSBudW1iZXIgb2YgY29sdW1ucyBmb3IgbXVsdGktc29ydCAqL1xuICBtYXhNdWx0aVNvcnRDb2xDb3VudD86IG51bWJlcjtcbiAgLyoqIFN0YXJ0IHdpdGggZGVzY2VuZGluZyBzb3J0IGFzIGZpcnN0IHRvZ2dsZSBzdGF0ZSAqL1xuICBzb3J0RGVzY0ZpcnN0PzogYm9vbGVhbjtcbiAgLyoqIENvbnRyb2xsZWQgc29ydCBzdGF0ZSAoZm9yIHNlcnZlci1zaWRlIHNvcnRpbmcpICovXG4gIHNvcnRTdGF0ZT86IFNvcnRpbmdTdGF0ZTtcbiAgLyoqIENhbGxiYWNrIHdoZW4gc29ydGluZyBjaGFuZ2VzIChmb3Igc2VydmVyLXNpZGUgc29ydGluZykgKi9cbiAgb25Tb3J0aW5nQ2hhbmdlPzogKHNvcnRpbmc6IFNvcnRpbmdTdGF0ZSkgPT4gdm9pZDtcbn1cblxuLyoqXG4gKiBTb3J0aW5nIHN0YXRlIHR5cGUgLSBhcnJheSBvZiBzb3J0IGRlc2NyaXB0b3JzXG4gKi9cbmV4cG9ydCB0eXBlIE52RGF0YVRhYmxlU29ydGluZ1N0YXRlID0gU29ydGluZ1N0YXRlO1xuIl19
|
|
@@ -21,7 +21,7 @@ export function provideNovaComponents() {
|
|
|
21
21
|
}
|
|
22
22
|
export class NovaComponentsModule {
|
|
23
23
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.9", ngImport: i0, type: NovaComponentsModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
|
|
24
|
-
static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "17.3.9", ngImport: i0, type: NovaComponentsModule, declarations: [i1.NvAccordion, i1.NvAccordionItem, i1.NvAlert, i1.NvAvatar, i1.NvBadge, i1.NvBreadcrumb, i1.NvBreadcrumbs, i1.NvButton, i1.NvButtongroup, i1.NvCalendar, i1.NvCol, i1.NvDatagrid, i1.NvDatagridcolumn, i1.NvDialog, i1.NvDialogfooter, i1.NvDialogheader, i1.NvFieldcheckbox, i1.NvFielddate, i1.NvFielddaterange, i1.NvFielddropdown, i1.NvFielddropdownitem, i1.NvFielddropdownitemcheck, i1.NvFieldmultiselect, i1.NvFieldnumber, i1.NvFieldpassword, i1.NvFieldradio, i1.NvFieldselect, i1.NvFieldslider, i1.NvFieldtext, i1.NvFieldtextarea, i1.NvFieldtime, i1.NvIcon, i1.NvIconbutton, i1.NvLoader, i1.NvMenu, i1.NvMenuitem, i1.NvNotification, i1.NvNotificationcontainer, i1.NvPopover, i1.NvRow, i1.NvSplit, i1.NvStack, i1.NvTable, i1.NvToggle, i1.NvTogglebutton, i1.NvTogglebuttongroup, i1.NvTooltip], imports: [NvDatatable], exports: [i1.NvAccordion, i1.NvAccordionItem, i1.NvAlert, i1.NvAvatar, i1.NvBadge, i1.NvBreadcrumb, i1.NvBreadcrumbs, i1.NvButton, i1.NvButtongroup, i1.NvCalendar, i1.NvCol, i1.NvDatagrid, i1.NvDatagridcolumn, i1.NvDialog, i1.NvDialogfooter, i1.NvDialogheader, i1.NvFieldcheckbox, i1.NvFielddate, i1.NvFielddaterange, i1.NvFielddropdown, i1.NvFielddropdownitem, i1.NvFielddropdownitemcheck, i1.NvFieldmultiselect, i1.NvFieldnumber, i1.NvFieldpassword, i1.NvFieldradio, i1.NvFieldselect, i1.NvFieldslider, i1.NvFieldtext, i1.NvFieldtextarea, i1.NvFieldtime, i1.NvIcon, i1.NvIconbutton, i1.NvLoader, i1.NvMenu, i1.NvMenuitem, i1.NvNotification, i1.NvNotificationcontainer, i1.NvPopover, i1.NvRow, i1.NvSplit, i1.NvStack, i1.NvTable, i1.NvToggle, i1.NvTogglebutton, i1.NvTogglebuttongroup, i1.NvTooltip, NvDatatable] }); }
|
|
24
|
+
static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "17.3.9", ngImport: i0, type: NovaComponentsModule, declarations: [i1.NvAccordion, i1.NvAccordionItem, i1.NvAlert, i1.NvAvatar, i1.NvBadge, i1.NvBreadcrumb, i1.NvBreadcrumbs, i1.NvButton, i1.NvButtongroup, i1.NvCalendar, i1.NvCol, i1.NvDatagrid, i1.NvDatagridcolumn, i1.NvDialog, i1.NvDialogfooter, i1.NvDialogheader, i1.NvFieldcheckbox, i1.NvFielddate, i1.NvFielddaterange, i1.NvFielddropdown, i1.NvFielddropdownitem, i1.NvFielddropdownitemcheck, i1.NvFieldmultiselect, i1.NvFieldnumber, i1.NvFieldpassword, i1.NvFieldradio, i1.NvFieldselect, i1.NvFieldslider, i1.NvFieldtext, i1.NvFieldtextarea, i1.NvFieldtime, i1.NvIcon, i1.NvIconbutton, i1.NvLoader, i1.NvMenu, i1.NvMenuitem, i1.NvNotification, i1.NvNotificationcontainer, i1.NvPopover, i1.NvRow, i1.NvSplit, i1.NvStack, i1.NvTable, i1.NvTableheader, i1.NvToggle, i1.NvTogglebutton, i1.NvTogglebuttongroup, i1.NvTooltip], imports: [NvDatatable], exports: [i1.NvAccordion, i1.NvAccordionItem, i1.NvAlert, i1.NvAvatar, i1.NvBadge, i1.NvBreadcrumb, i1.NvBreadcrumbs, i1.NvButton, i1.NvButtongroup, i1.NvCalendar, i1.NvCol, i1.NvDatagrid, i1.NvDatagridcolumn, i1.NvDialog, i1.NvDialogfooter, i1.NvDialogheader, i1.NvFieldcheckbox, i1.NvFielddate, i1.NvFielddaterange, i1.NvFielddropdown, i1.NvFielddropdownitem, i1.NvFielddropdownitemcheck, i1.NvFieldmultiselect, i1.NvFieldnumber, i1.NvFieldpassword, i1.NvFieldradio, i1.NvFieldselect, i1.NvFieldslider, i1.NvFieldtext, i1.NvFieldtextarea, i1.NvFieldtime, i1.NvIcon, i1.NvIconbutton, i1.NvLoader, i1.NvMenu, i1.NvMenuitem, i1.NvNotification, i1.NvNotificationcontainer, i1.NvPopover, i1.NvRow, i1.NvSplit, i1.NvStack, i1.NvTable, i1.NvTableheader, i1.NvToggle, i1.NvTogglebutton, i1.NvTogglebuttongroup, i1.NvTooltip, NvDatatable] }); }
|
|
25
25
|
static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "17.3.9", ngImport: i0, type: NovaComponentsModule, imports: [NvDatatable] }); }
|
|
26
26
|
}
|
|
27
27
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.9", ngImport: i0, type: NovaComponentsModule, decorators: [{
|
|
@@ -56,4 +56,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.9", ngImpor
|
|
|
56
56
|
exports: [NotificationServiceComponent],
|
|
57
57
|
}]
|
|
58
58
|
}] });
|
|
59
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
59
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibm92YS1jb21wb25lbnRzLm1vZHVsZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL25vdmEtY29tcG9uZW50cy9zcmMvbGliL25vdmEtY29tcG9uZW50cy5tb2R1bGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLGVBQWUsRUFBRSxRQUFRLEVBQWlCLE1BQU0sZUFBZSxDQUFDO0FBQ3pFLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLCtDQUErQyxDQUFDO0FBRXJGLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUNqRCxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFDakQsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLCtDQUErQyxDQUFDO0FBQ2hGLE9BQU8sRUFBRSw0QkFBNEIsRUFBRSxNQUFNLGFBQWEsQ0FBQzs7OztBQUUzRDs7OztHQUlHO0FBQ0gsTUFBTSxVQUFVLHFCQUFxQjtJQUNuQyxPQUFPO1FBQ0wsT0FBTyxFQUFFLGVBQWU7UUFDeEIsVUFBVSxFQUFFLEdBQUcsRUFBRSxDQUFDLG9CQUFvQjtRQUN0QyxLQUFLLEVBQUUsSUFBSTtLQUNaLENBQUM7QUFDSixDQUFDO0FBT0QsTUFBTSxPQUFPLG9CQUFvQjs4R0FBcEIsb0JBQW9COytHQUFwQixvQkFBb0IscTBCQUpyQixXQUFXLHN6QkFFSSxXQUFXOytHQUV6QixvQkFBb0IsWUFKckIsV0FBVzs7MkZBSVYsb0JBQW9CO2tCQUxoQyxRQUFRO21CQUFDO29CQUNSLE9BQU8sRUFBRSxDQUFDLFdBQVcsQ0FBQztvQkFDdEIsWUFBWSxFQUFFLENBQUMsR0FBRyxVQUFVLENBQUM7b0JBQzdCLE9BQU8sRUFBRSxDQUFDLEdBQUcsVUFBVSxFQUFFLFdBQVcsQ0FBQztpQkFDdEM7O0FBT0QsTUFBTSxPQUFPLGlDQUFpQzs4R0FBakMsaUNBQWlDOytHQUFqQyxpQ0FBaUM7K0dBQWpDLGlDQUFpQzs7MkZBQWpDLGlDQUFpQztrQkFKN0MsUUFBUTttQkFBQztvQkFDUixZQUFZLEVBQUUsQ0FBQyxHQUFHLGVBQWUsQ0FBQztvQkFDbEMsT0FBTyxFQUFFLENBQUMsR0FBRyxlQUFlLENBQUM7aUJBQzlCOztBQU9ELE1BQU0sT0FBTyw2QkFBNkI7OEdBQTdCLDZCQUE2QjsrR0FBN0IsNkJBQTZCLFlBSDlCLDRCQUE0QixhQUM1Qiw0QkFBNEI7K0dBRTNCLDZCQUE2QixZQUg5Qiw0QkFBNEI7OzJGQUczQiw2QkFBNkI7a0JBSnpDLFFBQVE7bUJBQUM7b0JBQ1IsT0FBTyxFQUFFLENBQUMsNEJBQTRCLENBQUM7b0JBQ3ZDLE9BQU8sRUFBRSxDQUFDLDRCQUE0QixDQUFDO2lCQUN4QyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEFQUF9JTklUSUFMSVpFUiwgTmdNb2R1bGUsIHR5cGUgUHJvdmlkZXIgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IGRlZmluZUN1c3RvbUVsZW1lbnRzIH0gZnJvbSAnQG5vdmEtZGVzaWduLXN5c3RlbS9ub3ZhLXdlYmNvbXBvbmVudHMvbG9hZGVyJztcblxuaW1wb3J0IHsgRElSRUNUSVZFUyB9IGZyb20gJy4vc3RlbmNpbC1nZW5lcmF0ZWQnO1xuaW1wb3J0IHsgTnZEYXRhdGFibGUgfSBmcm9tICcuL2NvbXBvbmVudHMvaW5kZXgnO1xuaW1wb3J0IHsgVkFMVUVfQUNDRVNTT1JTIH0gZnJvbSAnLi9zdGVuY2lsLWdlbmVyYXRlZC9jb21wb25lbnQtdmFsdWUtYWNjZXNzb3JzJztcbmltcG9ydCB7IE5vdGlmaWNhdGlvblNlcnZpY2VDb21wb25lbnQgfSBmcm9tICcuL3Byb3ZpZGVycyc7XG5cbi8qKlxuICogSW5pdGlhbGl6ZSB0aGUgTm92YSBDb21wb25lbnRzXG4gKlxuICogQHJldHVybnMge1Byb3ZpZGVyfSAtIFRoZSBwcm92aWRlciB0byBiZSB1c2VkIGZvciBub3ZhIGNvbXBvbmVudHNcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHByb3ZpZGVOb3ZhQ29tcG9uZW50cygpOiBQcm92aWRlciB7XG4gIHJldHVybiB7XG4gICAgcHJvdmlkZTogQVBQX0lOSVRJQUxJWkVSLFxuICAgIHVzZUZhY3Rvcnk6ICgpID0+IGRlZmluZUN1c3RvbUVsZW1lbnRzLFxuICAgIG11bHRpOiB0cnVlLFxuICB9O1xufVxuXG5ATmdNb2R1bGUoe1xuICBpbXBvcnRzOiBbTnZEYXRhdGFibGVdLFxuICBkZWNsYXJhdGlvbnM6IFsuLi5ESVJFQ1RJVkVTXSxcbiAgZXhwb3J0czogWy4uLkRJUkVDVElWRVMsIE52RGF0YXRhYmxlXSxcbn0pXG5leHBvcnQgY2xhc3MgTm92YUNvbXBvbmVudHNNb2R1bGUge31cblxuQE5nTW9kdWxlKHtcbiAgZGVjbGFyYXRpb25zOiBbLi4uVkFMVUVfQUNDRVNTT1JTXSxcbiAgZXhwb3J0czogWy4uLlZBTFVFX0FDQ0VTU09SU10sXG59KVxuZXhwb3J0IGNsYXNzIE5vdmFDb21wb25lbnRzVmFsdWVBY2Nlc3Nvck1vZHVsZSB7fVxuXG5ATmdNb2R1bGUoe1xuICBpbXBvcnRzOiBbTm90aWZpY2F0aW9uU2VydmljZUNvbXBvbmVudF0sXG4gIGV4cG9ydHM6IFtOb3RpZmljYXRpb25TZXJ2aWNlQ29tcG9uZW50XSxcbn0pXG5leHBvcnQgY2xhc3MgTm92YUNvbXBvbmVudHNQcm92aWRlcnNNb2R1bGUge31cbiJdfQ==
|