@universis/ngx-tables 0.8.4 → 6.0.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/bundles/universis-ngx-tables.umd.js +5806 -3707
- package/bundles/universis-ngx-tables.umd.js.map +1 -1
- package/bundles/universis-ngx-tables.umd.min.js +1 -1
- package/bundles/universis-ngx-tables.umd.min.js.map +1 -1
- package/esm2015/lib/actions/table.actions.js +48 -7
- package/esm2015/lib/advanced-aggregator.js +5 -1
- package/esm2015/lib/components/add-items/add-items.component.js +93 -26
- package/esm2015/lib/components/advanced-aggregator/advanced-aggregator.component.js +75 -5
- package/esm2015/lib/components/advanced-aggregator-list/advanced-aggregator-list.component.js +39 -12
- package/esm2015/lib/components/advanced-list/advanced-list.component.js +105 -33
- package/esm2015/lib/components/advanced-row-action/advanced-row-action.component.js +97 -16
- package/esm2015/lib/components/advanced-search-form/advanced-search-form.component.js +87 -16
- package/esm2015/lib/components/advanced-select/advanced-select.component.js +33 -1
- package/esm2015/lib/components/advanced-select/advanced-select.service.js +20 -3
- package/esm2015/lib/components/advanced-table/advanced-filter-value-provider.service.js +23 -2
- package/esm2015/lib/components/advanced-table/advanced-table-resolvers.js +37 -9
- package/esm2015/lib/components/advanced-table/advanced-table-search-base.js +22 -1
- package/esm2015/lib/components/advanced-table/advanced-table-search.component.js +223 -31
- package/esm2015/lib/components/advanced-table/advanced-table-settings.component.js +90 -8
- package/esm2015/lib/components/advanced-table/advanced-table.component.js +687 -213
- package/esm2015/lib/components/advanced-table/advanced-table.formatters.interface.js +36 -1
- package/esm2015/lib/components/advanced-table/advanced-table.formatters.js +260 -45
- package/esm2015/lib/components/advanced-table/advanced-table.interfaces.js +5 -1
- package/esm2015/lib/components/advanced-table-modal/advanced-table-modal-base.component.js +211 -55
- package/esm2015/lib/components/column-selector/column-selector.component.js +188 -82
- package/esm2015/lib/components/column-selector/column-selector.service.js +19 -2
- package/esm2015/lib/components/table-simple-header/table-simple-header.component.js +31 -7
- package/esm2015/lib/directives/advance-search-state.directive.js +49 -10
- package/esm2015/lib/directives/advance-table-state.directive.js +27 -3
- package/esm2015/lib/directives/advanced-search-router-state.directive.js +35 -8
- package/esm2015/lib/directives/advanced-table-editor.directive.js +43 -13
- package/esm2015/lib/directives/btnexp.directive.js +85 -42
- package/esm2015/lib/i18n/tables.el.js +6 -3
- package/esm2015/lib/i18n/tables.en.js +6 -3
- package/esm2015/lib/pipes/advanced-aggregator.pipe.js +12 -8
- package/esm2015/lib/pipes/advansed-aggregator-list-title-parse.pipe.js +19 -7
- package/esm2015/lib/reducers/index.js +32 -1
- package/esm2015/lib/services/advanced-aggregator/advanced-aggregator.service.js +37 -15
- package/esm2015/lib/tables.activated-table.service.js +41 -6
- package/esm2015/lib/tables.module.js +18 -4
- package/esm2015/public_api.js +33 -29
- package/esm2015/universis-ngx-tables.js +6 -2
- package/esm5/lib/actions/table.actions.js +37 -7
- package/esm5/lib/advanced-aggregator.js +5 -1
- package/esm5/lib/components/add-items/add-items.component.js +124 -34
- package/esm5/lib/components/advanced-aggregator/advanced-aggregator.component.js +111 -15
- package/esm5/lib/components/advanced-aggregator-list/advanced-aggregator-list.component.js +54 -11
- package/esm5/lib/components/advanced-list/advanced-list.component.js +125 -37
- package/esm5/lib/components/advanced-row-action/advanced-row-action.component.js +124 -24
- package/esm5/lib/components/advanced-search-form/advanced-search-form.component.js +109 -22
- package/esm5/lib/components/advanced-select/advanced-select.component.js +36 -4
- package/esm5/lib/components/advanced-select/advanced-select.service.js +22 -4
- package/esm5/lib/components/advanced-table/advanced-filter-value-provider.service.js +37 -5
- package/esm5/lib/components/advanced-table/advanced-table-resolvers.js +43 -11
- package/esm5/lib/components/advanced-table/advanced-table-search-base.js +29 -4
- package/esm5/lib/components/advanced-table/advanced-table-search.component.js +323 -58
- package/esm5/lib/components/advanced-table/advanced-table-settings.component.js +112 -15
- package/esm5/lib/components/advanced-table/advanced-table.component.js +872 -251
- package/esm5/lib/components/advanced-table/advanced-table.formatters.interface.js +36 -1
- package/esm5/lib/components/advanced-table/advanced-table.formatters.js +394 -57
- package/esm5/lib/components/advanced-table/advanced-table.interfaces.js +5 -1
- package/esm5/lib/components/advanced-table-modal/advanced-table-modal-base.component.js +311 -70
- package/esm5/lib/components/column-selector/column-selector.component.js +286 -154
- package/esm5/lib/components/column-selector/column-selector.service.js +21 -3
- package/esm5/lib/components/table-simple-header/table-simple-header.component.js +44 -10
- package/esm5/lib/directives/advance-search-state.directive.js +68 -15
- package/esm5/lib/directives/advance-table-state.directive.js +26 -4
- package/esm5/lib/directives/advanced-search-router-state.directive.js +39 -12
- package/esm5/lib/directives/advanced-table-editor.directive.js +66 -18
- package/esm5/lib/directives/btnexp.directive.js +171 -39
- package/esm5/lib/i18n/tables.el.js +6 -3
- package/esm5/lib/i18n/tables.en.js +6 -3
- package/esm5/lib/pipes/advanced-aggregator.pipe.js +32 -6
- package/esm5/lib/pipes/advansed-aggregator-list-title-parse.pipe.js +34 -8
- package/esm5/lib/reducers/index.js +32 -1
- package/esm5/lib/services/advanced-aggregator/advanced-aggregator.service.js +75 -13
- package/esm5/lib/tables.activated-table.service.js +39 -8
- package/esm5/lib/tables.module.js +19 -5
- package/esm5/public_api.js +33 -29
- package/esm5/universis-ngx-tables.js +6 -2
- package/fesm2015/universis-ngx-tables.js +2004 -663
- package/fesm2015/universis-ngx-tables.js.map +1 -1
- package/fesm5/universis-ngx-tables.js +3035 -896
- package/fesm5/universis-ngx-tables.js.map +1 -1
- package/lib/components/add-items/add-items.component.d.ts +9 -16
- package/lib/components/advanced-aggregator/advanced-aggregator.component.d.ts +5 -5
- package/lib/components/advanced-list/advanced-list.component.d.ts +11 -11
- package/lib/components/advanced-row-action/advanced-row-action.component.d.ts +11 -16
- package/lib/components/advanced-search-form/advanced-search-form.component.d.ts +3 -3
- package/lib/components/advanced-table/advanced-table-search.component.d.ts +5 -5
- package/lib/components/advanced-table/advanced-table-settings.component.d.ts +5 -6
- package/lib/components/advanced-table/advanced-table.component.d.ts +14 -15
- package/lib/components/advanced-table/advanced-table.formatters.d.ts +11 -11
- package/lib/components/advanced-table/advanced-table.interfaces.d.ts +1 -0
- package/lib/components/advanced-table-modal/advanced-table-modal-base.component.d.ts +11 -11
- package/lib/components/column-selector/column-selector.component.d.ts +8 -9
- package/lib/components/table-simple-header/table-simple-header.component.d.ts +3 -3
- package/lib/directives/advance-search-state.directive.d.ts +3 -3
- package/lib/directives/advance-table-state.directive.d.ts +1 -1
- package/lib/directives/advanced-search-router-state.directive.d.ts +6 -6
- package/lib/directives/btnexp.directive.d.ts +9 -9
- package/lib/pipes/advanced-aggregator.pipe.d.ts +3 -3
- package/lib/pipes/advansed-aggregator-list-title-parse.pipe.d.ts +5 -5
- package/lib/services/advanced-aggregator/advanced-aggregator.service.d.ts +8 -8
- package/lib/tables.activated-table.service.d.ts +6 -6
- package/package.json +10 -4
- package/universis-ngx-tables.metadata.json +1 -1
|
@@ -1,3 +1,7 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @fileoverview added by tsickle
|
|
3
|
+
* @suppress {checkTypes,extraRequire,uselessCode} checked by tsc
|
|
4
|
+
*/
|
|
1
5
|
import * as tslib_1 from "tslib";
|
|
2
6
|
import { Directive, Output, EventEmitter, } from '@angular/core';
|
|
3
7
|
import { AdvancedTableComponent } from '../components/advanced-table/advanced-table.component';
|
|
@@ -11,15 +15,22 @@ var AdvancedTableNotNullError = /** @class */ (function (_super) {
|
|
|
11
15
|
export { AdvancedTableNotNullError };
|
|
12
16
|
var AdvancedTableEditorDirective = /** @class */ (function () {
|
|
13
17
|
function AdvancedTableEditorDirective(table) {
|
|
18
|
+
//
|
|
14
19
|
this.table = table;
|
|
15
20
|
this.dirty = false;
|
|
16
21
|
this.dirtyChange = new EventEmitter(false);
|
|
17
|
-
//
|
|
18
22
|
}
|
|
19
23
|
/**
|
|
20
24
|
* Add rows to table and mark them as added rows
|
|
25
|
+
* @param {...?} addItems
|
|
26
|
+
* @return {?}
|
|
27
|
+
*/
|
|
28
|
+
AdvancedTableEditorDirective.prototype.add = /**
|
|
29
|
+
* Add rows to table and mark them as added rows
|
|
30
|
+
* @param {...?} addItems
|
|
31
|
+
* @return {?}
|
|
21
32
|
*/
|
|
22
|
-
|
|
33
|
+
function () {
|
|
23
34
|
var addItems = [];
|
|
24
35
|
for (var _i = 0; _i < arguments.length; _i++) {
|
|
25
36
|
addItems[_i] = arguments[_i];
|
|
@@ -28,11 +39,12 @@ var AdvancedTableEditorDirective = /** @class */ (function () {
|
|
|
28
39
|
if (this.table == null) {
|
|
29
40
|
throw new AdvancedTableNotNullError();
|
|
30
41
|
}
|
|
31
|
-
|
|
32
|
-
var key = this.table.config.columns[0].property || this.table.config.columns[0].name;
|
|
42
|
+
/** @type {?} */
|
|
43
|
+
var key = this.table.config.columns[0].property || this.table.config.columns[0].name || '';
|
|
33
44
|
try {
|
|
34
45
|
for (var addItems_1 = tslib_1.__values(addItems), addItems_1_1 = addItems_1.next(); !addItems_1_1.done; addItems_1_1 = addItems_1.next()) {
|
|
35
46
|
var element = addItems_1_1.value;
|
|
47
|
+
/** @type {?} */
|
|
36
48
|
var tr = this.table.dataTable.rows(':has(input[data-id="' + element[key] + '"])').nodes().to$();
|
|
37
49
|
if (tr.hasClass('removed')) {
|
|
38
50
|
tr.toggleClass('removed text-gray-400 text-decoration-line-through');
|
|
@@ -52,11 +64,11 @@ var AdvancedTableEditorDirective = /** @class */ (function () {
|
|
|
52
64
|
finally { if (e_1) throw e_1.error; }
|
|
53
65
|
}
|
|
54
66
|
this.table.dataTable.draw();
|
|
55
|
-
|
|
67
|
+
/** @type {?} */
|
|
56
68
|
var removedLength = this.table.dataTable.rows('.removed')[0].length;
|
|
57
|
-
|
|
69
|
+
/** @type {?} */
|
|
58
70
|
var addedLength = this.table.dataTable.rows('.added')[0].length;
|
|
59
|
-
|
|
71
|
+
/** @type {?} */
|
|
60
72
|
var items = this.table.dataTable.rows().data();
|
|
61
73
|
this.table.load.emit({
|
|
62
74
|
data: items,
|
|
@@ -68,8 +80,15 @@ var AdvancedTableEditorDirective = /** @class */ (function () {
|
|
|
68
80
|
};
|
|
69
81
|
/**
|
|
70
82
|
* Marks rows as removed rows
|
|
83
|
+
* @param {...?} removeItems
|
|
84
|
+
* @return {?}
|
|
71
85
|
*/
|
|
72
|
-
AdvancedTableEditorDirective.prototype.remove =
|
|
86
|
+
AdvancedTableEditorDirective.prototype.remove = /**
|
|
87
|
+
* Marks rows as removed rows
|
|
88
|
+
* @param {...?} removeItems
|
|
89
|
+
* @return {?}
|
|
90
|
+
*/
|
|
91
|
+
function () {
|
|
73
92
|
var removeItems = [];
|
|
74
93
|
for (var _i = 0; _i < arguments.length; _i++) {
|
|
75
94
|
removeItems[_i] = arguments[_i];
|
|
@@ -78,9 +97,10 @@ var AdvancedTableEditorDirective = /** @class */ (function () {
|
|
|
78
97
|
if (this.table == null) {
|
|
79
98
|
throw new AdvancedTableNotNullError();
|
|
80
99
|
}
|
|
81
|
-
|
|
82
|
-
var key = this.table.config.columns[0].property || this.table.config.columns[0].name;
|
|
100
|
+
/** @type {?} */
|
|
101
|
+
var key = this.table.config.columns[0].property || this.table.config.columns[0].name || '';
|
|
83
102
|
var _loop_1 = function (element) {
|
|
103
|
+
/** @type {?} */
|
|
84
104
|
var tr = this_1.table.dataTable.rows(':has(input[data-id="' + element[key] + '"])').nodes().to$();
|
|
85
105
|
// if row is marked as added
|
|
86
106
|
if (tr.hasClass('added')) {
|
|
@@ -91,7 +111,7 @@ var AdvancedTableEditorDirective = /** @class */ (function () {
|
|
|
91
111
|
// otherwise unmarked row
|
|
92
112
|
tr.toggleClass('removed text-gray-400 text-decoration-line-through');
|
|
93
113
|
}
|
|
94
|
-
|
|
114
|
+
/** @type {?} */
|
|
95
115
|
var selectedIndex = this_1.table.selected.findIndex(function (item) {
|
|
96
116
|
return item[key] === element[key];
|
|
97
117
|
});
|
|
@@ -117,11 +137,11 @@ var AdvancedTableEditorDirective = /** @class */ (function () {
|
|
|
117
137
|
}
|
|
118
138
|
// re-draw table
|
|
119
139
|
this.table.dataTable.draw();
|
|
120
|
-
|
|
140
|
+
/** @type {?} */
|
|
121
141
|
var items = this.table.dataTable.rows().data();
|
|
122
|
-
|
|
142
|
+
/** @type {?} */
|
|
123
143
|
var removedLength = this.table.dataTable.rows('.removed')[0].length;
|
|
124
|
-
|
|
144
|
+
/** @type {?} */
|
|
125
145
|
var addedLength = this.table.dataTable.rows('.added')[0].length;
|
|
126
146
|
// refresh
|
|
127
147
|
this.table.load.emit({
|
|
@@ -132,7 +152,15 @@ var AdvancedTableEditorDirective = /** @class */ (function () {
|
|
|
132
152
|
this.dirty = (removedLength > 0 || addedLength > 0);
|
|
133
153
|
this.dirtyChange.emit(this.dirty);
|
|
134
154
|
};
|
|
135
|
-
|
|
155
|
+
/**
|
|
156
|
+
* @param {?} items
|
|
157
|
+
* @return {?}
|
|
158
|
+
*/
|
|
159
|
+
AdvancedTableEditorDirective.prototype.set = /**
|
|
160
|
+
* @param {?} items
|
|
161
|
+
* @return {?}
|
|
162
|
+
*/
|
|
163
|
+
function (items) {
|
|
136
164
|
if (this.table == null) {
|
|
137
165
|
throw new AdvancedTableNotNullError();
|
|
138
166
|
}
|
|
@@ -149,8 +177,13 @@ var AdvancedTableEditorDirective = /** @class */ (function () {
|
|
|
149
177
|
};
|
|
150
178
|
/**
|
|
151
179
|
* Undo changes
|
|
180
|
+
* @return {?}
|
|
181
|
+
*/
|
|
182
|
+
AdvancedTableEditorDirective.prototype.undo = /**
|
|
183
|
+
* Undo changes
|
|
184
|
+
* @return {?}
|
|
152
185
|
*/
|
|
153
|
-
|
|
186
|
+
function () {
|
|
154
187
|
if (this.table == null) {
|
|
155
188
|
throw new AdvancedTableNotNullError();
|
|
156
189
|
}
|
|
@@ -160,6 +193,7 @@ var AdvancedTableEditorDirective = /** @class */ (function () {
|
|
|
160
193
|
this.table.dataTable.rows('.added').remove();
|
|
161
194
|
// clear selected items
|
|
162
195
|
this.table.selected = [];
|
|
196
|
+
/** @type {?} */
|
|
163
197
|
var items = this.table.dataTable.rows().data();
|
|
164
198
|
this.table.dataTable.draw();
|
|
165
199
|
this.table.load.emit({
|
|
@@ -170,7 +204,13 @@ var AdvancedTableEditorDirective = /** @class */ (function () {
|
|
|
170
204
|
this.dirty = false;
|
|
171
205
|
this.dirtyChange.emit(this.dirty);
|
|
172
206
|
};
|
|
173
|
-
|
|
207
|
+
/**
|
|
208
|
+
* @return {?}
|
|
209
|
+
*/
|
|
210
|
+
AdvancedTableEditorDirective.prototype.rows = /**
|
|
211
|
+
* @return {?}
|
|
212
|
+
*/
|
|
213
|
+
function () {
|
|
174
214
|
if (this.table == null) {
|
|
175
215
|
throw new AdvancedTableNotNullError();
|
|
176
216
|
}
|
|
@@ -192,5 +232,13 @@ var AdvancedTableEditorDirective = /** @class */ (function () {
|
|
|
192
232
|
return AdvancedTableEditorDirective;
|
|
193
233
|
}());
|
|
194
234
|
export { AdvancedTableEditorDirective };
|
|
235
|
+
if (false) {
|
|
236
|
+
/** @type {?} */
|
|
237
|
+
AdvancedTableEditorDirective.prototype.dirty;
|
|
238
|
+
/** @type {?} */
|
|
239
|
+
AdvancedTableEditorDirective.prototype.dirtyChange;
|
|
240
|
+
/** @type {?} */
|
|
241
|
+
AdvancedTableEditorDirective.prototype.table;
|
|
242
|
+
}
|
|
195
243
|
|
|
196
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWR2YW5jZWQtdGFibGUtZWRpdG9yLmRpcmVjdGl2ZS5qcyIsInNvdXJjZVJvb3QiOiJuZzovL0B1bml2ZXJzaXMvbmd4LXRhYmxlcy8iLCJzb3VyY2VzIjpbImxpYi9kaXJlY3RpdmVzL2FkdmFuY2VkLXRhYmxlLWVkaXRvci5kaXJlY3RpdmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLE9BQU8sRUFDTCxTQUFTLEVBQUUsTUFBTSxFQUFFLFlBQVksR0FDaEMsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLHNCQUFzQixFQUFFLE1BQU0sdURBQXVELENBQUM7QUFFL0Y7SUFBK0MscURBQUs7SUFDbEQ7ZUFDRSxrQkFBTSwyREFBMkQsQ0FBQztJQUNwRSxDQUFDO0lBQ0gsZ0NBQUM7QUFBRCxDQUFDLEFBSkQsQ0FBK0MsS0FBSyxHQUluRDs7QUFFRDtJQVdFLHNDQUFvQixLQUE2QjtRQUE3QixVQUFLLEdBQUwsS0FBSyxDQUF3QjtRQUgxQyxVQUFLLEdBQUcsS0FBSyxDQUFDO1FBQ0osZ0JBQVcsR0FBMEIsSUFBSSxZQUFZLENBQVUsS0FBSyxDQUFDLENBQUM7UUFHckYsRUFBRTtJQUNKLENBQUM7SUFFRDs7T0FFRztJQUNJLDBDQUFHLEdBQVY7UUFBVyxrQkFBa0I7YUFBbEIsVUFBa0IsRUFBbEIscUJBQWtCLEVBQWxCLElBQWtCO1lBQWxCLDZCQUFrQjs7O1FBQzNCLElBQUksSUFBSSxDQUFDLEtBQUssSUFBSSxJQUFJLEVBQUU7WUFDdEIsTUFBTSxJQUFJLHlCQUF5QixFQUFFLENBQUM7U0FDdkM7UUFDRCxpQkFBaUI7UUFDakIsSUFBTSxHQUFHLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLFFBQVEsSUFBSSxJQUFJLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDOztZQUN2RixLQUFzQixJQUFBLGFBQUEsaUJBQUEsUUFBUSxDQUFBLGtDQUFBLHdEQUFFO2dCQUEzQixJQUFNLE9BQU8scUJBQUE7Z0JBQ2hCLElBQUksRUFBRSxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxzQkFBc0IsR0FBRyxPQUFPLENBQUMsR0FBRyxDQUFDLEdBQUcsS0FBSyxDQUFDLENBQUMsS0FBSyxFQUFFLENBQUMsR0FBRyxFQUFFLENBQUM7Z0JBQ2hHLElBQUksRUFBRSxDQUFDLFFBQVEsQ0FBQyxTQUFTLENBQUMsRUFBRTtvQkFDMUIsRUFBRSxDQUFDLFdBQVcsQ0FBQyxvREFBb0QsQ0FBQyxDQUFDO2lCQUN0RTtxQkFBTTtvQkFDTCxJQUFJLENBQUMsS0FBSyxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQztvQkFDekMsRUFBRSxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxzQkFBc0IsR0FBRyxPQUFPLENBQUMsR0FBRyxDQUFDLEdBQUcsS0FBSyxDQUFDLENBQUMsS0FBSyxFQUFFLENBQUMsR0FBRyxFQUFFLENBQUM7b0JBQzVGLEVBQUUsQ0FBQyxXQUFXLENBQUMscUNBQXFDLENBQUMsQ0FBQztpQkFDdkQ7YUFDRjs7Ozs7Ozs7O1FBQ0QsSUFBSSxDQUFDLEtBQUssQ0FBQyxTQUFTLENBQUMsSUFBSSxFQUFFLENBQUM7UUFDNUIsZUFBZTtRQUNmLElBQU0sYUFBYSxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUM7UUFDdEUsYUFBYTtRQUNiLElBQU0sV0FBVyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUM7UUFDbEUsaUJBQWlCO1FBQ2pCLElBQU0sS0FBSyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsU0FBUyxDQUFDLElBQUksRUFBRSxDQUFDLElBQUksRUFBRSxDQUFDO1FBQ2pELElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQztZQUNuQixJQUFJLEVBQUUsS0FBSztZQUNYLGVBQWUsRUFBRSxLQUFLLENBQUMsTUFBTSxHQUFHLGFBQWE7WUFDN0MsWUFBWSxFQUFFLEtBQUssQ0FBQyxNQUFNLEdBQUcsYUFBYTtTQUMzQyxDQUFDLENBQUM7UUFDSCxJQUFJLENBQUMsS0FBSyxHQUFHLENBQUMsYUFBYSxHQUFHLENBQUMsSUFBSSxXQUFXLEdBQUcsQ0FBQyxDQUFDLENBQUM7UUFDcEQsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQ3BDLENBQUM7SUFFRDs7T0FFRztJQUNJLDZDQUFNLEdBQWI7UUFBYyxxQkFBcUI7YUFBckIsVUFBcUIsRUFBckIscUJBQXFCLEVBQXJCLElBQXFCO1lBQXJCLGdDQUFxQjs7O1FBQ2pDLElBQUksSUFBSSxDQUFDLEtBQUssSUFBSSxJQUFJLEVBQUU7WUFDdEIsTUFBTSxJQUFJLHlCQUF5QixFQUFFLENBQUM7U0FDdkM7UUFDRCxVQUFVO1FBQ1YsSUFBTSxHQUFHLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLFFBQVEsSUFBSSxJQUFJLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDO2dDQUU1RSxPQUFPO1lBQ2QsSUFBTSxFQUFFLEdBQUcsT0FBSyxLQUFLLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxzQkFBc0IsR0FBRyxPQUFPLENBQUMsR0FBRyxDQUFDLEdBQUcsS0FBSyxDQUFDLENBQUMsS0FBSyxFQUFFLENBQUMsR0FBRyxFQUFFLENBQUM7WUFDbEcsNEJBQTRCO1lBQzVCLElBQUksRUFBRSxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsRUFBRTtnQkFDeEIsd0JBQXdCO2dCQUN4QixPQUFLLEtBQUssQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDLE1BQU0sRUFBRSxDQUFDO2FBQ3hDO2lCQUFNO2dCQUNMLHlCQUF5QjtnQkFDekIsRUFBRSxDQUFDLFdBQVcsQ0FBQyxvREFBb0QsQ0FBQyxDQUFDO2FBQ3RFO1lBQ0QsNEJBQTRCO1lBQzVCLElBQU0sYUFBYSxHQUFHLE9BQUssS0FBSyxDQUFDLFFBQVEsQ0FBQyxTQUFTLENBQUMsVUFBQyxJQUFJO2dCQUN2RCxPQUFPLElBQUksQ0FBQyxHQUFHLENBQUMsS0FBSyxPQUFPLENBQUMsR0FBRyxDQUFDLENBQUM7WUFDcEMsQ0FBQyxDQUFDLENBQUM7WUFDSCx5Q0FBeUM7WUFDekMsSUFBSSxhQUFhLElBQUksQ0FBQyxFQUFFO2dCQUN0QixPQUFLLEtBQUssQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLGFBQWEsRUFBRSxDQUFDLENBQUMsQ0FBQzthQUM5QztRQUNILENBQUM7OztZQW5CSCxhQUFhO1lBQ2IsS0FBc0IsSUFBQSxnQkFBQSxpQkFBQSxXQUFXLENBQUEsd0NBQUE7Z0JBQTVCLElBQU0sT0FBTyx3QkFBQTt3QkFBUCxPQUFPO2FBa0JmOzs7Ozs7Ozs7UUFDRCxnQkFBZ0I7UUFDbEIsSUFBSSxDQUFDLEtBQUssQ0FBQyxTQUFTLENBQUMsSUFBSSxFQUFFLENBQUM7UUFDMUIsNEJBQTRCO1FBQzlCLElBQU0sS0FBSyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsU0FBUyxDQUFDLElBQUksRUFBRSxDQUFDLElBQUksRUFBRSxDQUFDO1FBQy9DLDhCQUE4QjtRQUNoQyxJQUFNLGFBQWEsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDO1FBQ3BFLDRCQUE0QjtRQUM5QixJQUFNLFdBQVcsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDO1FBQ2hFLFVBQVU7UUFDWixJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUM7WUFDakIsSUFBSSxFQUFFLEtBQUs7WUFDWCxlQUFlLEVBQUUsS0FBSyxDQUFDLE1BQU0sR0FBRyxhQUFhO1lBQzdDLFlBQVksRUFBRSxLQUFLLENBQUMsTUFBTSxHQUFHLGFBQWE7U0FDM0MsQ0FBQyxDQUFDO1FBQ0wsSUFBSSxDQUFDLEtBQUssR0FBRyxDQUFDLGFBQWEsR0FBRyxDQUFDLElBQUksV0FBVyxHQUFHLENBQUMsQ0FBQyxDQUFDO1FBQ3BELElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUNwQyxDQUFDO0lBRU0sMENBQUcsR0FBVixVQUFXLEtBQVk7UUFDckIsSUFBSSxJQUFJLENBQUMsS0FBSyxJQUFJLElBQUksRUFBRTtZQUN0QixNQUFNLElBQUkseUJBQXlCLEVBQUUsQ0FBQztTQUN2QztRQUNELGFBQWE7UUFDYixJQUFJLENBQUMsS0FBSyxDQUFDLFFBQVEsR0FBRyxFQUFFLENBQUM7UUFDekIsSUFBSSxDQUFDLEtBQUssQ0FBQyxTQUFTLENBQUMsS0FBSyxFQUFFLENBQUM7UUFDN0IsWUFBWTtRQUNaLElBQUksQ0FBQyxLQUFLLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLENBQUMsSUFBSSxFQUFFLENBQUM7UUFDNUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDO1lBQ25CLElBQUksRUFBRSxLQUFLO1lBQ1gsZUFBZSxFQUFFLEtBQUssQ0FBQyxNQUFNO1lBQzdCLFlBQVksRUFBRSxLQUFLLENBQUMsTUFBTTtTQUMzQixDQUFDLENBQUM7SUFDTCxDQUFDO0lBRUQ7O09BRUc7SUFDSSwyQ0FBSSxHQUFYO1FBQ0UsSUFBSSxJQUFJLENBQUMsS0FBSyxJQUFJLElBQUksRUFBRTtZQUN0QixNQUFNLElBQUkseUJBQXlCLEVBQUUsQ0FBQztTQUN2QztRQUNELHFCQUFxQjtRQUNyQixJQUFJLENBQUMsS0FBSyxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUMsS0FBSyxFQUFFLENBQUMsR0FBRyxFQUFFLENBQUMsV0FBVyxDQUFDLG9EQUFvRCxDQUFDLENBQUM7UUFDdEgsb0JBQW9CO1FBQ3BCLElBQUksQ0FBQyxLQUFLLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQyxNQUFNLEVBQUUsQ0FBQztRQUM3Qyx1QkFBdUI7UUFDdkIsSUFBSSxDQUFDLEtBQUssQ0FBQyxRQUFRLEdBQUcsRUFBRSxDQUFDO1FBQ3pCLElBQU0sS0FBSyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsU0FBUyxDQUFDLElBQUksRUFBRSxDQUFDLElBQUksRUFBRSxDQUFDO1FBQ2pELElBQUksQ0FBQyxLQUFLLENBQUMsU0FBUyxDQUFDLElBQUksRUFBRSxDQUFDO1FBQzVCLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQztZQUNuQixJQUFJLEVBQUUsS0FBSztZQUNYLGVBQWUsRUFBRSxLQUFLLENBQUMsTUFBTTtZQUM3QixZQUFZLEVBQUUsS0FBSyxDQUFDLE1BQU07U0FDM0IsQ0FBQyxDQUFDO1FBQ0gsSUFBSSxDQUFDLEtBQUssR0FBRyxLQUFLLENBQUM7UUFDbkIsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQ3BDLENBQUM7SUFFTSwyQ0FBSSxHQUFYO1FBQ0UsSUFBSSxJQUFJLENBQUMsS0FBSyxJQUFJLElBQUksRUFBRTtZQUN0QixNQUFNLElBQUkseUJBQXlCLEVBQUUsQ0FBQztTQUN2QztRQUNELE9BQU8sS0FBSyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDO0lBQ3hFLENBQUM7O2dCQTlJRixTQUFTLFNBQ1Q7b0JBQ0UsK0NBQStDO29CQUMvQyxRQUFRLEVBQUUsZUFBZTtpQkFDMUI7Ozs7Z0JBWk8sc0JBQXNCOzs7OEJBaUI1QixNQUFNOztJQXVJVCxtQ0FBQztDQUFBLEFBaEpELElBZ0pDO1NBMUlZLDRCQUE0QiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIERpcmVjdGl2ZSwgT3V0cHV0LCBFdmVudEVtaXR0ZXIsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQWR2YW5jZWRUYWJsZUNvbXBvbmVudCB9IGZyb20gJy4uL2NvbXBvbmVudHMvYWR2YW5jZWQtdGFibGUvYWR2YW5jZWQtdGFibGUuY29tcG9uZW50JztcblxuZXhwb3J0IGNsYXNzIEFkdmFuY2VkVGFibGVOb3ROdWxsRXJyb3IgZXh0ZW5kcyBFcnJvciB7XG4gIGNvbnN0cnVjdG9yKCkge1xuICAgIHN1cGVyKCdBZHZhbmNlZCB0YWJsZSBjb21wb25lbnQgY2Fubm90IGJlIGVtcHR5IGF0IHRoaXMgY29udGV4dC4nKTtcbiAgfVxufVxuXG5ARGlyZWN0aXZlKFxuIHtcbiAgIC8vIHRzbGludDpkaXNhYmxlLW5leHQtbGluZTogZGlyZWN0aXZlLXNlbGVjdG9yXG4gICBzZWxlY3RvcjogJ1t0YWJsZUVkaXRvcl0nLFxuIH0sXG4pXG5leHBvcnQgY2xhc3MgQWR2YW5jZWRUYWJsZUVkaXRvckRpcmVjdGl2ZSB7XG5cbiAgcHVibGljIGRpcnR5ID0gZmFsc2U7XG4gIEBPdXRwdXQoKSBwdWJsaWMgZGlydHlDaGFuZ2U6IEV2ZW50RW1pdHRlcjxib29sZWFuPiA9IG5ldyBFdmVudEVtaXR0ZXI8Ym9vbGVhbj4oZmFsc2UpO1xuXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgdGFibGU6IEFkdmFuY2VkVGFibGVDb21wb25lbnQpIHtcbiAgICAvL1xuICB9XG5cbiAgLyoqXG4gICAqIEFkZCByb3dzIHRvIHRhYmxlIGFuZCBtYXJrIHRoZW0gYXMgYWRkZWQgcm93c1xuICAgKi9cbiAgcHVibGljIGFkZCguLi5hZGRJdGVtczogYW55W10pIHtcbiAgICBpZiAodGhpcy50YWJsZSA9PSBudWxsKSB7XG4gICAgICB0aHJvdyBuZXcgQWR2YW5jZWRUYWJsZU5vdE51bGxFcnJvcigpO1xuICAgIH1cbiAgICAvLyBkZWNvcmF0ZSBpdGVtc1xuICAgIGNvbnN0IGtleSA9IHRoaXMudGFibGUuY29uZmlnLmNvbHVtbnNbMF0ucHJvcGVydHkgfHwgdGhpcy50YWJsZS5jb25maWcuY29sdW1uc1swXS5uYW1lO1xuICAgIGZvciAoY29uc3QgZWxlbWVudCBvZiBhZGRJdGVtcykge1xuICAgICAgbGV0IHRyID0gdGhpcy50YWJsZS5kYXRhVGFibGUucm93cygnOmhhcyhpbnB1dFtkYXRhLWlkPVwiJyArIGVsZW1lbnRba2V5XSArICdcIl0pJykubm9kZXMoKS50byQoKTtcbiAgICAgIGlmICh0ci5oYXNDbGFzcygncmVtb3ZlZCcpKSB7XG4gICAgICAgIHRyLnRvZ2dsZUNsYXNzKCdyZW1vdmVkIHRleHQtZ3JheS00MDAgdGV4dC1kZWNvcmF0aW9uLWxpbmUtdGhyb3VnaCcpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy50YWJsZS5kYXRhVGFibGUucm93cy5hZGQoW2VsZW1lbnRdKTtcbiAgICAgICAgdHIgPSB0aGlzLnRhYmxlLmRhdGFUYWJsZS5yb3dzKCc6aGFzKGlucHV0W2RhdGEtaWQ9XCInICsgZWxlbWVudFtrZXldICsgJ1wiXSknKS5ub2RlcygpLnRvJCgpO1xuICAgICAgICB0ci50b2dnbGVDbGFzcygnYWRkZWQgZm9udC13ZWlnaHQtYm9sZCB0ZXh0LXN1Y2Nlc3MnKTtcbiAgICAgIH1cbiAgICB9XG4gICAgdGhpcy50YWJsZS5kYXRhVGFibGUuZHJhdygpO1xuICAgIC8vIGZpbmQgcmVtb3ZlZFxuICAgIGNvbnN0IHJlbW92ZWRMZW5ndGggPSB0aGlzLnRhYmxlLmRhdGFUYWJsZS5yb3dzKCcucmVtb3ZlZCcpWzBdLmxlbmd0aDtcbiAgICAvLyBmaW5kIGFkZGVkXG4gICAgY29uc3QgYWRkZWRMZW5ndGggPSB0aGlzLnRhYmxlLmRhdGFUYWJsZS5yb3dzKCcuYWRkZWQnKVswXS5sZW5ndGg7XG4gICAgLy8gYW5kIGVtaXQgZXZlbnRcbiAgICBjb25zdCBpdGVtcyA9IHRoaXMudGFibGUuZGF0YVRhYmxlLnJvd3MoKS5kYXRhKCk7XG4gICAgdGhpcy50YWJsZS5sb2FkLmVtaXQoe1xuICAgICAgZGF0YTogaXRlbXMsXG4gICAgICByZWNvcmRzRmlsdGVyZWQ6IGl0ZW1zLmxlbmd0aCAtIHJlbW92ZWRMZW5ndGgsXG4gICAgICByZWNvcmRzVG90YWw6IGl0ZW1zLmxlbmd0aCAtIHJlbW92ZWRMZW5ndGgsXG4gICAgfSk7XG4gICAgdGhpcy5kaXJ0eSA9IChyZW1vdmVkTGVuZ3RoID4gMCB8fCBhZGRlZExlbmd0aCA+IDApO1xuICAgIHRoaXMuZGlydHlDaGFuZ2UuZW1pdCh0aGlzLmRpcnR5KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBNYXJrcyByb3dzIGFzIHJlbW92ZWQgcm93c1xuICAgKi9cbiAgcHVibGljIHJlbW92ZSguLi5yZW1vdmVJdGVtczogYW55W10pIHtcbiAgICBpZiAodGhpcy50YWJsZSA9PSBudWxsKSB7XG4gICAgICB0aHJvdyBuZXcgQWR2YW5jZWRUYWJsZU5vdE51bGxFcnJvcigpO1xuICAgIH1cbiAgICAvLyBnZXQga2V5XG4gICAgY29uc3Qga2V5ID0gdGhpcy50YWJsZS5jb25maWcuY29sdW1uc1swXS5wcm9wZXJ0eSB8fCB0aGlzLnRhYmxlLmNvbmZpZy5jb2x1bW5zWzBdLm5hbWU7XG4gICAgLy8gbG9vcCBpdGVtc1xuICAgIGZvciAoY29uc3QgZWxlbWVudCBvZiByZW1vdmVJdGVtcykge1xuICAgICAgICBjb25zdCB0ciA9IHRoaXMudGFibGUuZGF0YVRhYmxlLnJvd3MoJzpoYXMoaW5wdXRbZGF0YS1pZD1cIicgKyBlbGVtZW50W2tleV0gKyAnXCJdKScpLm5vZGVzKCkudG8kKCk7XG4gICAgICAgIC8vIGlmIHJvdyBpcyBtYXJrZWQgYXMgYWRkZWRcbiAgICAgICAgaWYgKHRyLmhhc0NsYXNzKCdhZGRlZCcpKSB7XG4gICAgICAgICAgLy8gcmVtb3ZlIHRoaXMgZGlydHkgcm93XG4gICAgICAgICAgdGhpcy50YWJsZS5kYXRhVGFibGUucm93cyh0cikucmVtb3ZlKCk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgLy8gb3RoZXJ3aXNlIHVubWFya2VkIHJvd1xuICAgICAgICAgIHRyLnRvZ2dsZUNsYXNzKCdyZW1vdmVkIHRleHQtZ3JheS00MDAgdGV4dC1kZWNvcmF0aW9uLWxpbmUtdGhyb3VnaCcpO1xuICAgICAgICB9XG4gICAgICAgIC8vIGNoZWNrIGlmIGl0ZW0gaXMgc2VsZWN0ZWRcbiAgICAgICAgY29uc3Qgc2VsZWN0ZWRJbmRleCA9IHRoaXMudGFibGUuc2VsZWN0ZWQuZmluZEluZGV4KChpdGVtKSA9PiB7XG4gICAgICAgICAgcmV0dXJuIGl0ZW1ba2V5XSA9PT0gZWxlbWVudFtrZXldO1xuICAgICAgICB9KTtcbiAgICAgICAgLy8gYW5kIHJlbW92ZSBpdCBmcm9tIHNlbGVjdGVkIGNvbGxlY3Rpb25cbiAgICAgICAgaWYgKHNlbGVjdGVkSW5kZXggPj0gMCkge1xuICAgICAgICAgIHRoaXMudGFibGUuc2VsZWN0ZWQuc3BsaWNlKHNlbGVjdGVkSW5kZXgsIDEpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICAvLyByZS1kcmF3IHRhYmxlXG4gICAgdGhpcy50YWJsZS5kYXRhVGFibGUuZHJhdygpO1xuICAgICAgLy8gZ2V0IG51bWJlciBvZiB0YWJsZSBpdGVtc1xuICAgIGNvbnN0IGl0ZW1zID0gdGhpcy50YWJsZS5kYXRhVGFibGUucm93cygpLmRhdGEoKTtcbiAgICAgIC8vIGdldCBudW1iZXIgb2YgcmVtb3ZlZCBpdGVtc1xuICAgIGNvbnN0IHJlbW92ZWRMZW5ndGggPSB0aGlzLnRhYmxlLmRhdGFUYWJsZS5yb3dzKCcucmVtb3ZlZCcpWzBdLmxlbmd0aDtcbiAgICAgIC8vIGdldCBudW1iZXIgb2YgYWRkZWQgaXRlbXNcbiAgICBjb25zdCBhZGRlZExlbmd0aCA9IHRoaXMudGFibGUuZGF0YVRhYmxlLnJvd3MoJy5hZGRlZCcpWzBdLmxlbmd0aDtcbiAgICAgIC8vIHJlZnJlc2hcbiAgICB0aGlzLnRhYmxlLmxvYWQuZW1pdCh7XG4gICAgICAgIGRhdGE6IGl0ZW1zLFxuICAgICAgICByZWNvcmRzRmlsdGVyZWQ6IGl0ZW1zLmxlbmd0aCAtIHJlbW92ZWRMZW5ndGgsXG4gICAgICAgIHJlY29yZHNUb3RhbDogaXRlbXMubGVuZ3RoIC0gcmVtb3ZlZExlbmd0aCxcbiAgICAgIH0pO1xuICAgIHRoaXMuZGlydHkgPSAocmVtb3ZlZExlbmd0aCA+IDAgfHwgYWRkZWRMZW5ndGggPiAwKTtcbiAgICB0aGlzLmRpcnR5Q2hhbmdlLmVtaXQodGhpcy5kaXJ0eSk7XG4gIH1cblxuICBwdWJsaWMgc2V0KGl0ZW1zOiBhbnlbXSkge1xuICAgIGlmICh0aGlzLnRhYmxlID09IG51bGwpIHtcbiAgICAgIHRocm93IG5ldyBBZHZhbmNlZFRhYmxlTm90TnVsbEVycm9yKCk7XG4gICAgfVxuICAgIC8vIGNsZWFyIHJvd3NcbiAgICB0aGlzLnRhYmxlLnNlbGVjdGVkID0gW107XG4gICAgdGhpcy50YWJsZS5kYXRhVGFibGUuY2xlYXIoKTtcbiAgICAvLyBzZXQgaXRlbXNcbiAgICB0aGlzLnRhYmxlLmRhdGFUYWJsZS5yb3dzLmFkZChpdGVtcykuZHJhdygpO1xuICAgIHRoaXMudGFibGUubG9hZC5lbWl0KHtcbiAgICAgIGRhdGE6IGl0ZW1zLFxuICAgICAgcmVjb3Jkc0ZpbHRlcmVkOiBpdGVtcy5sZW5ndGgsXG4gICAgICByZWNvcmRzVG90YWw6IGl0ZW1zLmxlbmd0aCxcbiAgICB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBVbmRvIGNoYW5nZXNcbiAgICovXG4gIHB1YmxpYyB1bmRvKCkge1xuICAgIGlmICh0aGlzLnRhYmxlID09IG51bGwpIHtcbiAgICAgIHRocm93IG5ldyBBZHZhbmNlZFRhYmxlTm90TnVsbEVycm9yKCk7XG4gICAgfVxuICAgIC8vIHJlc2V0IHJlbW92ZWQgcm93c1xuICAgIHRoaXMudGFibGUuZGF0YVRhYmxlLnJvd3MoJy5yZW1vdmVkJykubm9kZXMoKS50byQoKS50b2dnbGVDbGFzcygncmVtb3ZlZCB0ZXh0LWdyYXktNDAwIHRleHQtZGVjb3JhdGlvbi1saW5lLXRocm91Z2gnKTtcbiAgICAvLyByZW1vdmUgYWRkZWQgcm93c1xuICAgIHRoaXMudGFibGUuZGF0YVRhYmxlLnJvd3MoJy5hZGRlZCcpLnJlbW92ZSgpO1xuICAgIC8vIGNsZWFyIHNlbGVjdGVkIGl0ZW1zXG4gICAgdGhpcy50YWJsZS5zZWxlY3RlZCA9IFtdO1xuICAgIGNvbnN0IGl0ZW1zID0gdGhpcy50YWJsZS5kYXRhVGFibGUucm93cygpLmRhdGEoKTtcbiAgICB0aGlzLnRhYmxlLmRhdGFUYWJsZS5kcmF3KCk7XG4gICAgdGhpcy50YWJsZS5sb2FkLmVtaXQoe1xuICAgICAgZGF0YTogaXRlbXMsXG4gICAgICByZWNvcmRzRmlsdGVyZWQ6IGl0ZW1zLmxlbmd0aCxcbiAgICAgIHJlY29yZHNUb3RhbDogaXRlbXMubGVuZ3RoLFxuICAgIH0pO1xuICAgIHRoaXMuZGlydHkgPSBmYWxzZTtcbiAgICB0aGlzLmRpcnR5Q2hhbmdlLmVtaXQodGhpcy5kaXJ0eSk7XG4gIH1cblxuICBwdWJsaWMgcm93cygpIHtcbiAgICBpZiAodGhpcy50YWJsZSA9PSBudWxsKSB7XG4gICAgICB0aHJvdyBuZXcgQWR2YW5jZWRUYWJsZU5vdE51bGxFcnJvcigpO1xuICAgIH1cbiAgICByZXR1cm4gQXJyYXkuZnJvbSh0aGlzLnRhYmxlLmRhdGFUYWJsZS5yb3dzKCc6bm90KC5yZW1vdmVkKScpLmRhdGEoKSk7XG4gIH1cblxufVxuIl19
|
|
244
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWR2YW5jZWQtdGFibGUtZWRpdG9yLmRpcmVjdGl2ZS5qcyIsInNvdXJjZVJvb3QiOiJuZzovL0B1bml2ZXJzaXMvbmd4LXRhYmxlcy8iLCJzb3VyY2VzIjpbImxpYi9kaXJlY3RpdmVzL2FkdmFuY2VkLXRhYmxlLWVkaXRvci5kaXJlY3RpdmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBQSxPQUFPLEVBQ0wsU0FBUyxFQUFFLE1BQU0sRUFBRSxZQUFZLEdBQ2hDLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxNQUFNLHVEQUF1RCxDQUFDO0FBRS9GLElBQUE7SUFBK0MscURBQUs7SUFDbEQ7ZUFDRSxrQkFBTSwyREFBMkQsQ0FBQztLQUNuRTtvQ0FSSDtFQUsrQyxLQUFLLEVBSW5ELENBQUE7QUFKRCxxQ0FJQzs7SUFhQyxzQ0FBb0IsS0FBNkI7O1FBQTdCLFVBQUssR0FBTCxLQUFLLENBQXdCO3FCQUhsQyxLQUFLOzJCQUNrQyxJQUFJLFlBQVksQ0FBVSxLQUFLLENBQUM7S0FJckY7Ozs7OztJQUtNLDBDQUFHOzs7Ozs7UUFBQyxrQkFBa0I7YUFBbEIsVUFBa0IsRUFBbEIscUJBQWtCLEVBQWxCLElBQWtCO1lBQWxCLDZCQUFrQjs7O1FBQzNCLElBQUksSUFBSSxDQUFDLEtBQUssSUFBSSxJQUFJLEVBQUU7WUFDdEIsTUFBTSxJQUFJLHlCQUF5QixFQUFFLENBQUM7U0FDdkM7O1FBRUQsSUFBTSxHQUFHLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLFFBQVEsSUFBSSxJQUFJLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxJQUFJLEVBQUUsQ0FBQzs7WUFDN0YsS0FBc0IsSUFBQSxhQUFBLGlCQUFBLFFBQVEsQ0FBQSxrQ0FBQSx3REFBRTtnQkFBM0IsSUFBTSxPQUFPLHFCQUFBOztnQkFDaEIs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QUFNLEtBQUssR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLFNBQVMsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxJQUFJLEVBQUUsQ0FBQztRQUNqRCxJQUFJLENBQUMsS0FBSyxDQUFDLFNBQVMsQ0FBQyxJQUFJLEVBQUUsQ0FBQztRQUM1QixJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUM7WUFDbkIsSUFBSSxFQUFFLEtBQUs7WUFDWCxlQUFlLEVBQUUsS0FBSyxDQUFDLE1BQU07WUFDN0IsWUFBWSxFQUFFLEtBQUssQ0FBQyxNQUFNO1NBQzNCLENBQUMsQ0FBQztRQUNILElBQUksQ0FBQyxLQUFLLEdBQUcsS0FBSyxDQUFDO1FBQ25CLElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQzs7Ozs7SUFHN0IsMkNBQUk7Ozs7UUFDVCxJQUFJLElBQUksQ0FBQyxLQUFLLElBQUksSUFBSSxFQUFFO1lBQ3RCLE1BQU0sSUFBSSx5QkFBeUIsRUFBRSxDQUFDO1NBQ3ZDO1FBQ0QsT0FBTyxLQUFLLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDLElBQUksRUFBRSxDQUFDLENBQUM7OztnQkE3SXpFLFNBQVMsU0FDVDs7b0JBRUUsUUFBUSxFQUFFLGVBQWU7aUJBQzFCOzs7O2dCQVpPLHNCQUFzQjs7OzhCQWlCNUIsTUFBTTs7dUNBcEJUOztTQWlCYSw0QkFBNEIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBEaXJlY3RpdmUsIE91dHB1dCwgRXZlbnRFbWl0dGVyLFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEFkdmFuY2VkVGFibGVDb21wb25lbnQgfSBmcm9tICcuLi9jb21wb25lbnRzL2FkdmFuY2VkLXRhYmxlL2FkdmFuY2VkLXRhYmxlLmNvbXBvbmVudCc7XG5cbmV4cG9ydCBjbGFzcyBBZHZhbmNlZFRhYmxlTm90TnVsbEVycm9yIGV4dGVuZHMgRXJyb3Ige1xuICBjb25zdHJ1Y3RvcigpIHtcbiAgICBzdXBlcignQWR2YW5jZWQgdGFibGUgY29tcG9uZW50IGNhbm5vdCBiZSBlbXB0eSBhdCB0aGlzIGNvbnRleHQuJyk7XG4gIH1cbn1cblxuQERpcmVjdGl2ZShcbiB7XG4gICAvLyB0c2xpbnQ6ZGlzYWJsZS1uZXh0LWxpbmU6IGRpcmVjdGl2ZS1zZWxlY3RvclxuICAgc2VsZWN0b3I6ICdbdGFibGVFZGl0b3JdJyxcbiB9LFxuKVxuZXhwb3J0IGNsYXNzIEFkdmFuY2VkVGFibGVFZGl0b3JEaXJlY3RpdmUge1xuXG4gIHB1YmxpYyBkaXJ0eSA9IGZhbHNlO1xuICBAT3V0cHV0KCkgcHVibGljIGRpcnR5Q2hhbmdlOiBFdmVudEVtaXR0ZXI8Ym9vbGVhbj4gPSBuZXcgRXZlbnRFbWl0dGVyPGJvb2xlYW4+KGZhbHNlKTtcblxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIHRhYmxlOiBBZHZhbmNlZFRhYmxlQ29tcG9uZW50KSB7XG4gICAgLy9cbiAgfVxuXG4gIC8qKlxuICAgKiBBZGQgcm93cyB0byB0YWJsZSBhbmQgbWFyayB0aGVtIGFzIGFkZGVkIHJvd3NcbiAgICovXG4gIHB1YmxpYyBhZGQoLi4uYWRkSXRlbXM6IGFueVtdKSB7XG4gICAgaWYgKHRoaXMudGFibGUgPT0gbnVsbCkge1xuICAgICAgdGhyb3cgbmV3IEFkdmFuY2VkVGFibGVOb3ROdWxsRXJyb3IoKTtcbiAgICB9XG4gICAgLy8gZGVjb3JhdGUgaXRlbXNcbiAgICBjb25zdCBrZXkgPSB0aGlzLnRhYmxlLmNvbmZpZy5jb2x1bW5zWzBdLnByb3BlcnR5IHx8IHRoaXMudGFibGUuY29uZmlnLmNvbHVtbnNbMF0ubmFtZSB8fCAnJztcbiAgICBmb3IgKGNvbnN0IGVsZW1lbnQgb2YgYWRkSXRlbXMpIHtcbiAgICAgIGxldCB0ciA9IHRoaXMudGFibGUuZGF0YVRhYmxlLnJvd3MoJzpoYXMoaW5wdXRbZGF0YS1pZD1cIicgKyBlbGVtZW50W2tleV0gKyAnXCJdKScpLm5vZGVzKCkudG8kKCk7XG4gICAgICBpZiAodHIuaGFzQ2xhc3MoJ3JlbW92ZWQnKSkge1xuICAgICAgICB0ci50b2dnbGVDbGFzcygncmVtb3ZlZCB0ZXh0LWdyYXktNDAwIHRleHQtZGVjb3JhdGlvbi1saW5lLXRocm91Z2gnKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMudGFibGUuZGF0YVRhYmxlLnJvd3MuYWRkKFtlbGVtZW50XSk7XG4gICAgICAgIHRyID0gdGhpcy50YWJsZS5kYXRhVGFibGUucm93cygnOmhhcyhpbnB1dFtkYXRhLWlkPVwiJyArIGVsZW1lbnRba2V5XSArICdcIl0pJykubm9kZXMoKS50byQoKTtcbiAgICAgICAgdHIudG9nZ2xlQ2xhc3MoJ2FkZGVkIGZvbnQtd2VpZ2h0LWJvbGQgdGV4dC1zdWNjZXNzJyk7XG4gICAgICB9XG4gICAgfVxuICAgIHRoaXMudGFibGUuZGF0YVRhYmxlLmRyYXcoKTtcbiAgICAvLyBmaW5kIHJlbW92ZWRcbiAgICBjb25zdCByZW1vdmVkTGVuZ3RoID0gdGhpcy50YWJsZS5kYXRhVGFibGUucm93cygnLnJlbW92ZWQnKVswXS5sZW5ndGg7XG4gICAgLy8gZmluZCBhZGRlZFxuICAgIGNvbnN0IGFkZGVkTGVuZ3RoID0gdGhpcy50YWJsZS5kYXRhVGFibGUucm93cygnLmFkZGVkJylbMF0ubGVuZ3RoO1xuICAgIC8vIGFuZCBlbWl0IGV2ZW50XG4gICAgY29uc3QgaXRlbXMgPSB0aGlzLnRhYmxlLmRhdGFUYWJsZS5yb3dzKCkuZGF0YSgpO1xuICAgIHRoaXMudGFibGUubG9hZC5lbWl0KHtcbiAgICAgIGRhdGE6IGl0ZW1zLFxuICAgICAgcmVjb3Jkc0ZpbHRlcmVkOiBpdGVtcy5sZW5ndGggLSByZW1vdmVkTGVuZ3RoLFxuICAgICAgcmVjb3Jkc1RvdGFsOiBpdGVtcy5sZW5ndGggLSByZW1vdmVkTGVuZ3RoLFxuICAgIH0pO1xuICAgIHRoaXMuZGlydHkgPSAocmVtb3ZlZExlbmd0aCA+IDAgfHwgYWRkZWRMZW5ndGggPiAwKTtcbiAgICB0aGlzLmRpcnR5Q2hhbmdlLmVtaXQodGhpcy5kaXJ0eSk7XG4gIH1cblxuICAvKipcbiAgICogTWFya3Mgcm93cyBhcyByZW1vdmVkIHJvd3NcbiAgICovXG4gIHB1YmxpYyByZW1vdmUoLi4ucmVtb3ZlSXRlbXM6IGFueVtdKSB7XG4gICAgaWYgKHRoaXMudGFibGUgPT0gbnVsbCkge1xuICAgICAgdGhyb3cgbmV3IEFkdmFuY2VkVGFibGVOb3ROdWxsRXJyb3IoKTtcbiAgICB9XG4gICAgLy8gZ2V0IGtleVxuICAgIGNvbnN0IGtleSA9IHRoaXMudGFibGUuY29uZmlnLmNvbHVtbnNbMF0ucHJvcGVydHkgfHwgdGhpcy50YWJsZS5jb25maWcuY29sdW1uc1swXS5uYW1lIHx8ICcnO1xuICAgIC8vIGxvb3AgaXRlbXNcbiAgICBmb3IgKGNvbnN0IGVsZW1lbnQgb2YgcmVtb3ZlSXRlbXMpIHtcbiAgICAgICAgY29uc3QgdHIgPSB0aGlzLnRhYmxlLmRhdGFUYWJsZS5yb3dzKCc6aGFzKGlucHV0W2RhdGEtaWQ9XCInICsgZWxlbWVudFtrZXldICsgJ1wiXSknKS5ub2RlcygpLnRvJCgpO1xuICAgICAgICAvLyBpZiByb3cgaXMgbWFya2VkIGFzIGFkZGVkXG4gICAgICAgIGlmICh0ci5oYXNDbGFzcygnYWRkZWQnKSkge1xuICAgICAgICAgIC8vIHJlbW92ZSB0aGlzIGRpcnR5IHJvd1xuICAgICAgICAgIHRoaXMudGFibGUuZGF0YVRhYmxlLnJvd3ModHIpLnJlbW92ZSgpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIC8vIG90aGVyd2lzZSB1bm1hcmtlZCByb3dcbiAgICAgICAgICB0ci50b2dnbGVDbGFzcygncmVtb3ZlZCB0ZXh0LWdyYXktNDAwIHRleHQtZGVjb3JhdGlvbi1saW5lLXRocm91Z2gnKTtcbiAgICAgICAgfVxuICAgICAgICAvLyBjaGVjayBpZiBpdGVtIGlzIHNlbGVjdGVkXG4gICAgICAgIGNvbnN0IHNlbGVjdGVkSW5kZXggPSB0aGlzLnRhYmxlLnNlbGVjdGVkLmZpbmRJbmRleCgoaXRlbSkgPT4ge1xuICAgICAgICAgIHJldHVybiBpdGVtW2tleV0gPT09IGVsZW1lbnRba2V5XTtcbiAgICAgICAgfSk7XG4gICAgICAgIC8vIGFuZCByZW1vdmUgaXQgZnJvbSBzZWxlY3RlZCBjb2xsZWN0aW9uXG4gICAgICAgIGlmIChzZWxlY3RlZEluZGV4ID49IDApIHtcbiAgICAgICAgICB0aGlzLnRhYmxlLnNlbGVjdGVkLnNwbGljZShzZWxlY3RlZEluZGV4LCAxKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgLy8gcmUtZHJhdyB0YWJsZVxuICAgIHRoaXMudGFibGUuZGF0YVRhYmxlLmRyYXcoKTtcbiAgICAgIC8vIGdldCBudW1iZXIgb2YgdGFibGUgaXRlbXNcbiAgICBjb25zdCBpdGVtcyA9IHRoaXMudGFibGUuZGF0YVRhYmxlLnJvd3MoKS5kYXRhKCk7XG4gICAgICAvLyBnZXQgbnVtYmVyIG9mIHJlbW92ZWQgaXRlbXNcbiAgICBjb25zdCByZW1vdmVkTGVuZ3RoID0gdGhpcy50YWJsZS5kYXRhVGFibGUucm93cygnLnJlbW92ZWQnKVswXS5sZW5ndGg7XG4gICAgICAvLyBnZXQgbnVtYmVyIG9mIGFkZGVkIGl0ZW1zXG4gICAgY29uc3QgYWRkZWRMZW5ndGggPSB0aGlzLnRhYmxlLmRhdGFUYWJsZS5yb3dzKCcuYWRkZWQnKVswXS5sZW5ndGg7XG4gICAgICAvLyByZWZyZXNoXG4gICAgdGhpcy50YWJsZS5sb2FkLmVtaXQoe1xuICAgICAgICBkYXRhOiBpdGVtcyxcbiAgICAgICAgcmVjb3Jkc0ZpbHRlcmVkOiBpdGVtcy5sZW5ndGggLSByZW1vdmVkTGVuZ3RoLFxuICAgICAgICByZWNvcmRzVG90YWw6IGl0ZW1zLmxlbmd0aCAtIHJlbW92ZWRMZW5ndGgsXG4gICAgICB9KTtcbiAgICB0aGlzLmRpcnR5ID0gKHJlbW92ZWRMZW5ndGggPiAwIHx8IGFkZGVkTGVuZ3RoID4gMCk7XG4gICAgdGhpcy5kaXJ0eUNoYW5nZS5lbWl0KHRoaXMuZGlydHkpO1xuICB9XG5cbiAgcHVibGljIHNldChpdGVtczogYW55W10pIHtcbiAgICBpZiAodGhpcy50YWJsZSA9PSBudWxsKSB7XG4gICAgICB0aHJvdyBuZXcgQWR2YW5jZWRUYWJsZU5vdE51bGxFcnJvcigpO1xuICAgIH1cbiAgICAvLyBjbGVhciByb3dzXG4gICAgdGhpcy50YWJsZS5zZWxlY3RlZCA9IFtdO1xuICAgIHRoaXMudGFibGUuZGF0YVRhYmxlLmNsZWFyKCk7XG4gICAgLy8gc2V0IGl0ZW1zXG4gICAgdGhpcy50YWJsZS5kYXRhVGFibGUucm93cy5hZGQoaXRlbXMpLmRyYXcoKTtcbiAgICB0aGlzLnRhYmxlLmxvYWQuZW1pdCh7XG4gICAgICBkYXRhOiBpdGVtcyxcbiAgICAgIHJlY29yZHNGaWx0ZXJlZDogaXRlbXMubGVuZ3RoLFxuICAgICAgcmVjb3Jkc1RvdGFsOiBpdGVtcy5sZW5ndGgsXG4gICAgfSk7XG4gIH1cblxuICAvKipcbiAgICogVW5kbyBjaGFuZ2VzXG4gICAqL1xuICBwdWJsaWMgdW5kbygpIHtcbiAgICBpZiAodGhpcy50YWJsZSA9PSBudWxsKSB7XG4gICAgICB0aHJvdyBuZXcgQWR2YW5jZWRUYWJsZU5vdE51bGxFcnJvcigpO1xuICAgIH1cbiAgICAvLyByZXNldCByZW1vdmVkIHJvd3NcbiAgICB0aGlzLnRhYmxlLmRhdGFUYWJsZS5yb3dzKCcucmVtb3ZlZCcpLm5vZGVzKCkudG8kKCkudG9nZ2xlQ2xhc3MoJ3JlbW92ZWQgdGV4dC1ncmF5LTQwMCB0ZXh0LWRlY29yYXRpb24tbGluZS10aHJvdWdoJyk7XG4gICAgLy8gcmVtb3ZlIGFkZGVkIHJvd3NcbiAgICB0aGlzLnRhYmxlLmRhdGFUYWJsZS5yb3dzKCcuYWRkZWQnKS5yZW1vdmUoKTtcbiAgICAvLyBjbGVhciBzZWxlY3RlZCBpdGVtc1xuICAgIHRoaXMudGFibGUuc2VsZWN0ZWQgPSBbXTtcbiAgICBjb25zdCBpdGVtcyA9IHRoaXMudGFibGUuZGF0YVRhYmxlLnJvd3MoKS5kYXRhKCk7XG4gICAgdGhpcy50YWJsZS5kYXRhVGFibGUuZHJhdygpO1xuICAgIHRoaXMudGFibGUubG9hZC5lbWl0KHtcbiAgICAgIGRhdGE6IGl0ZW1zLFxuICAgICAgcmVjb3Jkc0ZpbHRlcmVkOiBpdGVtcy5sZW5ndGgsXG4gICAgICByZWNvcmRzVG90YWw6IGl0ZW1zLmxlbmd0aCxcbiAgICB9KTtcbiAgICB0aGlzLmRpcnR5ID0gZmFsc2U7XG4gICAgdGhpcy5kaXJ0eUNoYW5nZS5lbWl0KHRoaXMuZGlydHkpO1xuICB9XG5cbiAgcHVibGljIHJvd3MoKSB7XG4gICAgaWYgKHRoaXMudGFibGUgPT0gbnVsbCkge1xuICAgICAgdGhyb3cgbmV3IEFkdmFuY2VkVGFibGVOb3ROdWxsRXJyb3IoKTtcbiAgICB9XG4gICAgcmV0dXJuIEFycmF5LmZyb20odGhpcy50YWJsZS5kYXRhVGFibGUucm93cygnOm5vdCgucmVtb3ZlZCknKS5kYXRhKCkpO1xuICB9XG5cbn1cbiJdfQ==
|