@sd-angular/core 1.2.65 → 1.2.68
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/sd-angular-core-common.umd.js +1 -1
- package/bundles/sd-angular-core-common.umd.js.map +1 -1
- package/bundles/sd-angular-core-common.umd.min.js +1 -1
- package/bundles/sd-angular-core-common.umd.min.js.map +1 -1
- package/bundles/sd-angular-core-upload-excel.umd.js +65 -59
- package/bundles/sd-angular-core-upload-excel.umd.js.map +1 -1
- package/bundles/sd-angular-core-upload-excel.umd.min.js +1 -1
- package/bundles/sd-angular-core-upload-excel.umd.min.js.map +1 -1
- package/esm2015/common/src/lib/typings/number.extension.js +2 -2
- package/esm2015/upload-excel/src/lib/pipes/column-transform.pipe.js +10 -4
- package/esm2015/upload-excel/src/lib/upload-excel.component.js +25 -31
- package/esm2015/upload-excel/src/lib/upload-excel.model.js +6 -1
- package/fesm2015/sd-angular-core-common.js +1 -1
- package/fesm2015/sd-angular-core-common.js.map +1 -1
- package/fesm2015/sd-angular-core-upload-excel.js +39 -33
- package/fesm2015/sd-angular-core-upload-excel.js.map +1 -1
- package/package.json +1 -1
- package/{sd-angular-core-1.2.65.tgz → sd-angular-core-1.2.68.tgz} +0 -0
- package/upload-excel/sd-angular-core-upload-excel.metadata.json +1 -1
- package/upload-excel/src/lib/upload-excel.model.d.ts +2 -7
|
@@ -78,12 +78,7 @@ export class SdUploadExcel {
|
|
|
78
78
|
const { mappingItems, errorValidation, warningValidation } = this.option;
|
|
79
79
|
const { translate } = this.translateService;
|
|
80
80
|
const { items, file } = yield __classPrivateFieldGet(this, _import).call(this);
|
|
81
|
-
|
|
82
|
-
this.hasDescription = true;
|
|
83
|
-
}
|
|
84
|
-
else {
|
|
85
|
-
this.hasDescription = false;
|
|
86
|
-
}
|
|
81
|
+
this.hasDescription = this.option.columns.some(e => !!e.description);
|
|
87
82
|
const offset = this.hasDescription ? 2 : 1;
|
|
88
83
|
items.splice(0, offset);
|
|
89
84
|
if (items.length === 0) {
|
|
@@ -121,7 +116,7 @@ export class SdUploadExcel {
|
|
|
121
116
|
}
|
|
122
117
|
this.file = file;
|
|
123
118
|
this.loadingService.start();
|
|
124
|
-
for (const
|
|
119
|
+
for (const item of this.items) {
|
|
125
120
|
yield this.validate(item);
|
|
126
121
|
}
|
|
127
122
|
// Nếu không có error thì tiếp tục validate từ option validate truyền vào
|
|
@@ -148,34 +143,33 @@ export class SdUploadExcel {
|
|
|
148
143
|
});
|
|
149
144
|
this.validate = (excelItem) => __awaiter(this, void 0, void 0, function* () {
|
|
150
145
|
var _a;
|
|
151
|
-
|
|
152
|
-
const { data: item } = excelItem;
|
|
153
|
-
const { validation } = excelItem.sd;
|
|
146
|
+
const { data: item, sd: { validation } } = excelItem;
|
|
154
147
|
const { translate } = this.translateService;
|
|
155
148
|
for (const column of this.option.columns) {
|
|
149
|
+
validation.data[column.field] = {};
|
|
156
150
|
if (!this.sdColumnHidden.transform(column)) {
|
|
157
151
|
continue;
|
|
158
152
|
}
|
|
159
|
-
|
|
153
|
+
const errors = [];
|
|
160
154
|
try {
|
|
161
155
|
if (column.defaultValue !== undefined) {
|
|
162
156
|
item[column.field] = (_a = item[column.field]) !== null && _a !== void 0 ? _a : column.defaultValue;
|
|
163
157
|
}
|
|
164
158
|
else if (column.required && !item[column.field] && item[column.field] !== 0) {
|
|
165
159
|
validation.data[column.field].error = `${translate('required')}`;
|
|
166
|
-
|
|
160
|
+
errors.push(`<strong>[${column.title || column.field}]</strong> ${validation.data[column.field].error}`);
|
|
167
161
|
continue;
|
|
168
162
|
}
|
|
169
163
|
if (column.type === 'string') {
|
|
170
164
|
const value = (item[column.field] || '').toString();
|
|
171
165
|
if (column.minLength !== undefined && value.length < column.minLength) {
|
|
172
166
|
validation.data[column.field].error = `${translate('Min length')}: ${column.minLength}`;
|
|
173
|
-
|
|
167
|
+
errors.push(`<strong>[${column.title || column.field}]</strong> ${validation.data[column.field].error}`);
|
|
174
168
|
continue;
|
|
175
169
|
}
|
|
176
170
|
if (column.maxLength !== undefined && value.length > column.maxLength) {
|
|
177
171
|
validation.data[column.field].error = `${translate('Max length')}: ${column.maxLength}`;
|
|
178
|
-
|
|
172
|
+
errors.push(`<strong>[${column.title || column.field}]</strong> ${validation.data[column.field].error}`);
|
|
179
173
|
continue;
|
|
180
174
|
}
|
|
181
175
|
item[column.field] = value;
|
|
@@ -185,7 +179,7 @@ export class SdUploadExcel {
|
|
|
185
179
|
const value = +item[column.field];
|
|
186
180
|
if (Number.isNaN(value)) {
|
|
187
181
|
validation.data[column.field].error = `${item[column.field]} ${translate('is not a number')}`;
|
|
188
|
-
|
|
182
|
+
errors.push(`<strong>[${column.title || column.field}]</strong> ${validation.data[column.field].error}`);
|
|
189
183
|
continue;
|
|
190
184
|
}
|
|
191
185
|
item[column.field] = value;
|
|
@@ -195,12 +189,12 @@ export class SdUploadExcel {
|
|
|
195
189
|
}
|
|
196
190
|
if (column.minValue !== undefined && item[column.field] < column.minValue) {
|
|
197
191
|
validation.data[column.field].error = `${item[column.field]} ${translate('Min value')}: ${column.minValue}`;
|
|
198
|
-
|
|
192
|
+
errors.push(`<strong>[${column.title || column.field}]</strong> ${validation.data[column.field].error}`);
|
|
199
193
|
continue;
|
|
200
194
|
}
|
|
201
195
|
if (column.maxValue !== undefined && item[column.field] > column.maxValue) {
|
|
202
196
|
validation.data[column.field].error = `${item[column.field]} ${translate('Max value')}: ${column.maxValue}`;
|
|
203
|
-
|
|
197
|
+
errors.push(`<strong>[${column.title || column.field}]</strong> ${validation.data[column.field].error}`);
|
|
204
198
|
continue;
|
|
205
199
|
}
|
|
206
200
|
}
|
|
@@ -215,7 +209,7 @@ export class SdUploadExcel {
|
|
|
215
209
|
const value = +item[column.field];
|
|
216
210
|
if (Number.isNaN(value) || (value !== 0 && value !== 1)) {
|
|
217
211
|
validation.data[column.field].error = `${translate('Value shoud be 0 or 1')}`;
|
|
218
|
-
|
|
212
|
+
errors.push(`<strong>[${column.title || column.field}]</strong> ${validation.data[column.field].error}`);
|
|
219
213
|
}
|
|
220
214
|
else {
|
|
221
215
|
if (column.parseToBool) {
|
|
@@ -227,12 +221,12 @@ export class SdUploadExcel {
|
|
|
227
221
|
else if (column.type === 'values') {
|
|
228
222
|
if (item[column.field] && typeof (item[column.field]) !== 'number' && typeof (item[column.field]) !== 'string') {
|
|
229
223
|
validation.data[column.field].error = `${item[column.field]} ${translate('Invalid data type')}`;
|
|
230
|
-
|
|
224
|
+
errors.push(`<strong>[${column.title || column.field}]</strong> ${validation.data[column.field].error}`);
|
|
231
225
|
continue;
|
|
232
226
|
}
|
|
233
227
|
if (column.checkValueInArray && item[column.field] && !column.values.some(e => e.toString() === item[column.field].toString())) {
|
|
234
228
|
validation.data[column.field].error = `${item[column.field]} ${translate('Value not in')} [${column.values.join()}]`;
|
|
235
|
-
|
|
229
|
+
errors.push(`<strong>[${column.title || column.field}]</strong> ${validation.data[column.field].error}`);
|
|
236
230
|
continue;
|
|
237
231
|
}
|
|
238
232
|
}
|
|
@@ -242,37 +236,37 @@ export class SdUploadExcel {
|
|
|
242
236
|
if (format && item[column.field]) {
|
|
243
237
|
if (typeof (val) !== 'string') {
|
|
244
238
|
validation.data[column.field].error = `${translate('Invalid format')} ${column.format}: ${val}`;
|
|
245
|
-
|
|
239
|
+
errors.push(`<strong>[${column.title || column.field}]</strong> ${validation.data[column.field].error}`);
|
|
246
240
|
continue;
|
|
247
241
|
}
|
|
248
242
|
if (type === 'date' && !__classPrivateFieldGet(this, _isValidDate).call(this, format, val)) {
|
|
249
243
|
validation.data[column.field].error = `${translate('Invalid format')} ${column.format}: ${val}`;
|
|
250
|
-
|
|
244
|
+
errors.push(`<strong>[${column.title || column.field}]</strong> ${validation.data[column.field].error}`);
|
|
251
245
|
continue;
|
|
252
246
|
}
|
|
253
247
|
if (type === 'time' && !__classPrivateFieldGet(this, _isValidTime).call(this, format, val)) {
|
|
254
248
|
validation.data[column.field].error = `${translate('Invalid format')} ${column.format}: ${val}`;
|
|
255
|
-
|
|
249
|
+
errors.push(`<strong>[${column.title || column.field}]</strong> ${validation.data[column.field].error}`);
|
|
256
250
|
continue;
|
|
257
251
|
}
|
|
258
252
|
if (type === 'datetime' && !__classPrivateFieldGet(this, _isValidDateTime).call(this, format, val)) {
|
|
259
253
|
validation.data[column.field].error = `${translate('Invalid format')} ${column.format}: ${val}`;
|
|
260
|
-
|
|
254
|
+
errors.push(`<strong>[${column.title || column.field}]</strong> ${validation.data[column.field].error}`);
|
|
261
255
|
continue;
|
|
262
256
|
}
|
|
263
257
|
item[column.field] = Date.parseFrom(val, column.format).toFormat('MM/dd/yyyy HH:mm:ss');
|
|
264
258
|
}
|
|
265
259
|
if (item[column.field] && !Date.isDate(item[column.field])) {
|
|
266
260
|
validation.data[column.field].error = `${translate('Invalid date')}: ${item[column.field]}`;
|
|
267
|
-
|
|
261
|
+
errors.push(`<strong>[${column.title || column.field}]</strong> ${validation.data[column.field].error}`);
|
|
268
262
|
continue;
|
|
269
263
|
}
|
|
270
264
|
}
|
|
271
|
-
if (!
|
|
265
|
+
if (!errors.length && column.errorValidation) {
|
|
272
266
|
const error = yield column.errorValidation(item, item[column.field]);
|
|
273
267
|
if (error) {
|
|
274
268
|
validation.data[column.field].error = `${error}`;
|
|
275
|
-
|
|
269
|
+
errors.push(`<strong>[${column.title || column.field}]</strong> ${validation.data[column.field].error}`);
|
|
276
270
|
}
|
|
277
271
|
}
|
|
278
272
|
if (!validation.data[column.field].warning && column.warningValidation) {
|
|
@@ -285,10 +279,10 @@ export class SdUploadExcel {
|
|
|
285
279
|
}
|
|
286
280
|
catch (ex) {
|
|
287
281
|
validation.data[column.field].error = `${(ex === null || ex === void 0 ? void 0 : ex.message) || (ex === null || ex === void 0 ? void 0 : ex.error) || ex || 'Có lỗi xảy ra'}`;
|
|
288
|
-
|
|
282
|
+
errors.push(`<strong>[${column.title || column.field}]</strong> ${validation.data[column.field].error}`);
|
|
289
283
|
}
|
|
284
|
+
validation.error = errors.join('<br>');
|
|
290
285
|
}
|
|
291
|
-
item.validation = validation;
|
|
292
286
|
});
|
|
293
287
|
_parse.set(this, (item) => {
|
|
294
288
|
const { data } = item;
|
|
@@ -501,7 +495,7 @@ _paginator = new WeakMap(), _subscription = new WeakMap(), _reset = new WeakMap(
|
|
|
501
495
|
SdUploadExcel.decorators = [
|
|
502
496
|
{ type: Component, args: [{
|
|
503
497
|
selector: 'sd-upload-excel',
|
|
504
|
-
template: "<sd-modal [title]=\"(option?.title || 'Import Excel')| sdTranslate\" #modal>\r\n <sd-modal-body background=\"#F0F8FF\">\r\n <div class=\"row mx-0 mb-10\">\r\n <sd-button *ngIf=\"items?.length\" class=\"mr-5\" (action)=\"view('ALL')\" icon=\"cached\"\r\n [title]=\"'View all' | sdTranslate\" size=\"sm\"></sd-button>\r\n <sd-button *ngIf=\"numberOfSuccess\" class=\"mr-5\" (action)=\"view('SUCCESS')\" icon=\"done\" [title]=\"numberOfSuccess\"\r\n [tooltip]=\"'Number of success rows' | sdTranslate\" size=\"sm\" color=\"success\"></sd-button>\r\n <sd-button *ngIf=\"numberOfWarning\" class=\"mr-5\" (action)=\"view('WARNING')\" icon=\"warning\"\r\n [title]=\"numberOfWarning\" [tooltip]=\"'Number of warning rows' | sdTranslate\" size=\"sm\"></sd-button>\r\n <sd-button *ngIf=\"numberOfError\" class=\"mr-5\" (action)=\"view('ERROR')\" icon=\"error\" [title]=\"numberOfError\"\r\n color=\"danger\" [tooltip]=\"'Number of error rows' | sdTranslate\" size=\"sm\"></sd-button>\r\n </div>\r\n <div class=\"sd-box\">\r\n <div class=\"sd-box-body p-0\">\r\n <div class=\"table-responsive\" style=\"position: relative; height:50vh\">\r\n <table class=\"table table-striped table-sm table-hover table-bordered\">\r\n <thead class=\"thead-light\">\r\n <tr>\r\n <th class=\"text-center position-sticky c-sticky-left\" style=\"width: 50px;vertical-align: middle;\">#</th>\r\n <th *ngIf=\"filteredItems?.length\" class=\"text-center\"\r\n style=\"min-width: 250px; width: 250px;vertical-align: middle;\">\r\n {{'Upload message' | sdTranslate}}</th>\r\n <ng-container *ngFor=\"let column of option.columns\">\r\n <th *ngIf=\"column | columnHidden\" [ngStyle]=\"{'min-width':column.width ? column.width : '300px'}\"\r\n [matTooltip]=\"column.title\">\r\n <span class=\"c-ellipsis\"\r\n [ngStyle]=\"{'min-width':column.width ? column.width : '300px', 'max-width':column.width ? column.width : '300px'}\">{{column.title}}</span>\r\n </th>\r\n </ng-container>\r\n </tr>\r\n </thead>\r\n <tbody *ngIf=\"viewItems.length\">\r\n <tr *ngFor=\"let item of viewItems\">\r\n <td class=\"text-center position-sticky c-sticky-left\" style=\"width: 50px\">\r\n <span class=\"badge\"\r\n [ngClass]=\"{'badge-success':!item.validation?.warning && !item.validation?.error, 'badge-warning':item.validation?.warning && !item.validation?.error, 'badge-danger':item.validation?.error}\"\r\n style=\"width: 100%\">{{item.sd.excelIndex}}</span>\r\n </td>\r\n <td style=\"min-width: 250px; width: 250px\">\r\n <div\r\n [innerHtml]=\"item.sd.validation?.error || item.sd.validation?.warning || item.sd.validation?.success || ('Success' | sdTranslate)\">\r\n </div>\r\n </td>\r\n <ng-container *ngFor=\"let column of option.columns\">\r\n <td *ngIf=\"column | columnHidden\" class=\"align-middle\" [ngClass]=\"{'table-warning':item.sd.validation?.data[column.field]?.warning && !item.sd.validation?.data[column.field]?.error, \r\n 'table-danger':item.sd.validation?.data[column.field]?.error}\"\r\n [matTooltip]=\"item.sd.validation?.data[column.field]?.error || item.sd.validation?.data[column.field]?.warning\"\r\n [ngStyle]=\"{'min-width':column.width ? column.width : '300px'}\" matTooltipPosition=\"above\">\r\n <span class=\"c-ellipsis\">\r\n <div *ngIf=\"column.type !== 'array'\"\r\n [innerHtml]=\"item | columnTransform:column | async | safeHtml\"></div>\r\n <ng-container *ngIf=\"column.type === 'array'\">\r\n {{item.data[column.field]?.split(column.divideString)?.length}} {{column.unitString}}\r\n <button mat-button [matMenuTriggerFor]=\"menu\" class=\"c-mat-menu\">\r\n <mat-icon>open_in_new</mat-icon>\r\n </button>\r\n <mat-menu #menu=\"matMenu\">\r\n <div class=\"row mx-0\">\r\n <div class=\"col-6\" *ngFor=\"let itemArray of item.data[column.field]?.split(column.divideString)\"\r\n [innerHtml]=\"itemArray\">\r\n </div>\r\n </div>\r\n </mat-menu>\r\n </ng-container>\r\n </span>\r\n </td>\r\n </ng-container>\r\n </tr>\r\n </tbody>\r\n </table>\r\n </div>\r\n </div>\r\n <div class=\"sd-box-footer clearfix\">\r\n <div style=\"display: flex; align-items: center; align-content: space-between;\">\r\n <div style=\"flex: 1;\" [innerHTML]=\"option?.note\">\r\n </div>\r\n <div style=\"flex: 1;\">\r\n <mat-paginator [length]=\"filteredItems?.length || 0\" hidePageSize>\r\n </mat-paginator>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </sd-modal-body>\r\n <sd-modal-footer *sdDesktop>\r\n <div class=\"mr-auto\">\r\n <sd-button class=\"mr-5\" (action)=\"upload()\" icon=\"file_upload\" [title]=\"'Upload' | sdTranslate\" size=\"sm\"\r\n color=\"info\" [loading]=\"uploading\"></sd-button>\r\n <sd-button class=\"mr-5\" (action)=\"downloadTemplate()\" icon=\"file_download\" [loading]=\"isDownloadTemplate\"\r\n [title]=\"'Download template' | sdTranslate\" color=\"info\" type=\"outline\" size=\"sm\">\r\n </sd-button>\r\n </div>\r\n <sd-button *ngIf=\"filteredItems?.length\" class=\"mr-5\" (action)=\"export()\" icon=\"get_app\"\r\n [title]=\"'Download result' | sdTranslate\" size=\"sm\" color=\"info\" type=\"outline\">\r\n </sd-button>\r\n <sd-button (action)=\"accept()\" [title]=\"'Accept' | sdTranslate\"\r\n [disabled]=\"numberOfSuccess === 0 || numberOfError > 0 || isUploaded\" color=\"primary\" type=\"fill\" size=\"sm\">\r\n </sd-button>\r\n </sd-modal-footer>\r\n <sd-modal-footer *sdMobileTablet>\r\n <sd-button style=\"flex: 1; padding-right: 5px;\" (action)=\"upload()\" icon=\"file_upload\"\r\n [title]=\"'Upload' | sdTranslate\" width=\"100%\" size=\"sm\" color=\"info\" [loading]=\"uploading\"></sd-button>\r\n <sd-button style=\"flex: 1; padding-left: 5px;\" (action)=\"accept()\" icon=\"check\" [title]=\"'Accept' | sdTranslate\"\r\n [disabled]=\"numberOfSuccess === 0 || numberOfError > 0\" color=\"success\" width=\"100%\" size=\"sm\"></sd-button>\r\n </sd-modal-footer>\r\n</sd-modal>",
|
|
498
|
+
template: "<sd-modal [title]=\"(option?.title || 'Import Excel')| sdTranslate\" #modal>\r\n <sd-modal-body background=\"#F0F8FF\">\r\n <div class=\"row mx-0 mb-10\">\r\n <sd-button *ngIf=\"items?.length\" class=\"mr-5\" (action)=\"view('ALL')\" icon=\"cached\"\r\n [title]=\"'View all' | sdTranslate\" size=\"sm\"></sd-button>\r\n <sd-button *ngIf=\"numberOfSuccess\" class=\"mr-5\" (action)=\"view('SUCCESS')\" icon=\"done\" [title]=\"numberOfSuccess\"\r\n [tooltip]=\"'Number of success rows' | sdTranslate\" size=\"sm\" color=\"success\"></sd-button>\r\n <sd-button *ngIf=\"numberOfWarning\" class=\"mr-5\" (action)=\"view('WARNING')\" icon=\"warning\"\r\n [title]=\"numberOfWarning\" [tooltip]=\"'Number of warning rows' | sdTranslate\" size=\"sm\"></sd-button>\r\n <sd-button *ngIf=\"numberOfError\" class=\"mr-5\" (action)=\"view('ERROR')\" icon=\"error\" [title]=\"numberOfError\"\r\n color=\"danger\" [tooltip]=\"'Number of error rows' | sdTranslate\" size=\"sm\"></sd-button>\r\n </div>\r\n <div class=\"sd-box\">\r\n <div class=\"sd-box-body p-0\">\r\n <div class=\"table-responsive\" style=\"position: relative; height:50vh\">\r\n <table class=\"table table-striped table-sm table-hover table-bordered\">\r\n <thead class=\"thead-light\">\r\n <tr>\r\n <th class=\"text-center position-sticky c-sticky-left\" style=\"width: 50px;vertical-align: middle;\">#</th>\r\n <th *ngIf=\"filteredItems?.length\" class=\"text-center\"\r\n style=\"min-width: 250px; width: 250px;vertical-align: middle;\">\r\n {{'Upload message' | sdTranslate}}</th>\r\n <ng-container *ngFor=\"let column of option.columns\">\r\n <th *ngIf=\"column | columnHidden\" [ngStyle]=\"{'min-width':column.width ? column.width : '300px'}\"\r\n [matTooltip]=\"column.title\">\r\n <span class=\"c-ellipsis\"\r\n [ngStyle]=\"{'min-width':column.width ? column.width : '300px', 'max-width':column.width ? column.width : '300px'}\">{{column.title}}</span>\r\n </th>\r\n </ng-container>\r\n </tr>\r\n </thead>\r\n <tbody *ngIf=\"viewItems.length\">\r\n <tr *ngFor=\"let item of viewItems\">\r\n <td class=\"text-center position-sticky c-sticky-left\" style=\"width: 50px\">\r\n <span class=\"badge\"\r\n [ngClass]=\"{'badge-success':!item.sd.validation?.warning && !item.sd.validation?.error, 'badge-warning':item.sd.validation?.warning && !item.sd.validation?.error, 'badge-danger':item.sd.validation?.error}\"\r\n style=\"width: 100%\">{{item.sd.excelIndex}}</span>\r\n </td>\r\n <td style=\"min-width: 250px; width: 250px\">\r\n <div\r\n [innerHtml]=\"item.sd.validation?.error || item.sd.validation?.warning || item.sd.validation?.success || ('Success' | sdTranslate)\">\r\n </div>\r\n </td>\r\n <ng-container *ngFor=\"let column of option.columns\">\r\n <td *ngIf=\"column | columnHidden\" class=\"align-middle\" [ngClass]=\"{'table-warning':item.sd.validation?.data[column.field]?.warning && !item.sd.validation?.data[column.field]?.error, \r\n 'table-danger':item.sd.validation?.data[column.field]?.error}\"\r\n [matTooltip]=\"item.sd.validation?.data[column.field]?.error || item.sd.validation?.data[column.field]?.warning\"\r\n [ngStyle]=\"{'min-width':column.width ? column.width : '300px'}\" matTooltipPosition=\"above\">\r\n <span class=\"c-ellipsis\">\r\n <div *ngIf=\"column.type !== 'array'\"\r\n [innerHtml]=\"item | columnTransform:column | async | safeHtml\"></div>\r\n <ng-container *ngIf=\"column.type === 'array'\">\r\n {{item.data[column.field]?.split(column.divideString)?.length}} {{column.unitString}}\r\n <button mat-button [matMenuTriggerFor]=\"menu\" class=\"c-mat-menu\">\r\n <mat-icon>open_in_new</mat-icon>\r\n </button>\r\n <mat-menu #menu=\"matMenu\">\r\n <div class=\"row mx-0\">\r\n <div class=\"col-6\" *ngFor=\"let itemArray of item.data[column.field]?.split(column.divideString)\"\r\n [innerHtml]=\"itemArray\">\r\n </div>\r\n </div>\r\n </mat-menu>\r\n </ng-container>\r\n </span>\r\n </td>\r\n </ng-container>\r\n </tr>\r\n </tbody>\r\n </table>\r\n </div>\r\n </div>\r\n <div class=\"sd-box-footer clearfix\">\r\n <div style=\"display: flex; align-items: center; align-content: space-between;\">\r\n <div style=\"flex: 1;\" [innerHTML]=\"option?.note\">\r\n </div>\r\n <div style=\"flex: 1;\">\r\n <mat-paginator [length]=\"filteredItems?.length || 0\" hidePageSize>\r\n </mat-paginator>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </sd-modal-body>\r\n <sd-modal-footer *sdDesktop>\r\n <div class=\"mr-auto\">\r\n <sd-button class=\"mr-5\" (action)=\"upload()\" icon=\"file_upload\" [title]=\"'Upload' | sdTranslate\" size=\"sm\"\r\n color=\"info\" [loading]=\"uploading\"></sd-button>\r\n <sd-button class=\"mr-5\" (action)=\"downloadTemplate()\" icon=\"file_download\" [loading]=\"isDownloadTemplate\"\r\n [title]=\"'Download template' | sdTranslate\" color=\"info\" type=\"outline\" size=\"sm\">\r\n </sd-button>\r\n </div>\r\n <sd-button *ngIf=\"filteredItems?.length\" class=\"mr-5\" (action)=\"export()\" icon=\"get_app\"\r\n [title]=\"'Download result' | sdTranslate\" size=\"sm\" color=\"info\" type=\"outline\">\r\n </sd-button>\r\n <sd-button (action)=\"accept()\" [title]=\"'Accept' | sdTranslate\"\r\n [disabled]=\"numberOfSuccess === 0 || numberOfError > 0 || isUploaded\" color=\"primary\" type=\"fill\" size=\"sm\">\r\n </sd-button>\r\n </sd-modal-footer>\r\n <sd-modal-footer *sdMobileTablet>\r\n <sd-button style=\"flex: 1; padding-right: 5px;\" (action)=\"upload()\" icon=\"file_upload\"\r\n [title]=\"'Upload' | sdTranslate\" width=\"100%\" size=\"sm\" color=\"info\" [loading]=\"uploading\"></sd-button>\r\n <sd-button style=\"flex: 1; padding-left: 5px;\" (action)=\"accept()\" icon=\"check\" [title]=\"'Accept' | sdTranslate\"\r\n [disabled]=\"numberOfSuccess === 0 || numberOfError > 0\" color=\"success\" width=\"100%\" size=\"sm\"></sd-button>\r\n </sd-modal-footer>\r\n</sd-modal>",
|
|
505
499
|
styles: [".table thead td,.table thead th{padding-bottom:5px;padding-top:5px}.table-striped tbody tr:nth-of-type(2n) .c-sticky-left{background-color:#fff}.table-striped tbody tr:nth-of-type(odd) .c-sticky-left{background-color:#f2f2f2}.c-sticky-left{border-left:none!important;border-right:none!important;left:0!important;z-index:20}.c-ellipsis{display:block;overflow:hidden!important;padding:.1rem;text-overflow:ellipsis;white-space:nowrap}.c-mat-menu{border:none}.c-mat-menu mat-icon{font-size:20px;vertical-align:middle}:host ::ng-deep .mat-paginator-container{height:32px;min-height:32px}:host ::ng-deep .mat-paginator-container .mat-icon-button{height:28px;line-height:28px;width:28px}"]
|
|
506
500
|
},] }
|
|
507
501
|
];
|
|
@@ -518,4 +512,4 @@ SdUploadExcel.propDecorators = {
|
|
|
518
512
|
modal: [{ type: ViewChild, args: ['modal',] }],
|
|
519
513
|
paginator: [{ type: ViewChild, args: [MatPaginator,] }]
|
|
520
514
|
};
|
|
521
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXBsb2FkLWV4Y2VsLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiJDOi9Vc2Vycy9uZ2hpYXR0MTVfb25lbW91bnQvRG9jdW1lbnRzL2xpYi1jb3JlLXVpL3Byb2plY3RzL3NkLWNvcmUvdXBsb2FkLWV4Y2VsLyIsInNvdXJjZXMiOlsic3JjL2xpYi91cGxvYWQtZXhjZWwuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7O0FBQUEsT0FBTyxFQUFFLFNBQVMsRUFBVSxLQUFLLEVBQUUsU0FBUyxFQUFFLGlCQUFpQixFQUFhLE1BQU0sZUFBZSxDQUFDO0FBQ2xHLE9BQU8sS0FBSyxJQUFJLE1BQU0sTUFBTSxDQUFDO0FBQzdCLE9BQU8sQ0FBQyxNQUFNLFFBQVEsQ0FBQztBQUN2QixPQUFPLElBQUksTUFBTSxNQUFNLENBQUM7QUFNeEIsT0FBTyxFQUNMLGVBQWUsRUFDaEIsTUFBTSx5QkFBeUIsQ0FBQztBQUVqQyxPQUFPLEVBQ0wsZ0JBQWdCLEVBQ2pCLE1BQU0sMEJBQTBCLENBQUM7QUFFbEMsT0FBTyxFQUNMLGtCQUFrQixFQUNuQixNQUFNLDRCQUE0QixDQUFDO0FBQ3BDLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQztBQUMzRCxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBR3BDLE9BQU8sRUFBdUIsZUFBZSxFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDL0UsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFRaEUsTUFBTSxPQUFPLGFBQWE7SUEwQnhCLFlBQ1UsR0FBc0IsRUFDdEIsYUFBOEIsRUFDOUIsZ0JBQW9DLEVBQ3BDLGFBQThCLEVBQzlCLGNBQWtDLEVBQ2xDLGNBQWdDO1FBTGhDLFFBQUcsR0FBSCxHQUFHLENBQW1CO1FBQ3RCLGtCQUFhLEdBQWIsYUFBYSxDQUFpQjtRQUM5QixxQkFBZ0IsR0FBaEIsZ0JBQWdCLENBQW9CO1FBQ3BDLGtCQUFhLEdBQWIs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LENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDLFFBQVEsRUFBRSxDQUFDO3dCQUNwRCxJQUFJLE1BQU0sQ0FBQyxTQUFTLEtBQUssU0FBUyxJQUFJLEtBQUssQ0FBQyxNQUFNLEdBQUcsTUFBTSxDQUFDLFNBQVMsRUFBRTs0QkFDckUsVUFBVSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUMsS0FBSyxHQUFHLEdBQUcsU0FBUyxDQUFDLFlBQVksQ0FBQyxLQUFLLE1BQU0sQ0FBQyxTQUFTLEVBQUUsQ0FBQzs0QkFDeEYsVUFBVSxDQUFDLEtBQUssSUFBSSxZQUFZLE1BQU0sQ0FBQyxLQUFLLElBQUksTUFBTSxDQUFDLEtBQUssY0FBYyxVQUFVLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQyxLQUFLLE1BQU0sQ0FBQzs0QkFDcEgsU0FBUzt5QkFDVjt3QkFDRCxJQUFJLE1BQU0sQ0FBQyxTQUFTLEtBQUssU0FBUyxJQUFJLEtBQUssQ0FBQyxNQUFNLEdBQUcsTUFBTSxDQUFDLFNBQVMsRUFBRTs0QkFDckUsVUFBVSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUMsS0FBSyxHQUFHLEdBQUcsU0FBUyxDQUFDLFlBQVksQ0FBQyxLQUFLLE1BQU0sQ0FBQyxTQUFTLEVBQUUsQ0FBQzs0QkFDeEYsVUFBVSxDQUFDLEtBQUssSUFBSSxZQUFZLE1BQU0sQ0FBQyxLQUFLLElBQUksTUFBTSxDQUFDLEtBQUssY0FBYyxVQUFVLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQyxLQUFLLE1BQU0sQ0FBQzs0QkFDcEgsU0FBUzt5QkFDVjt3QkFDRCxJQUFJLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxHQUFHLEtBQUssQ0FBQztxQkFDNUI7eUJBQU0sSUFBSSxNQUFNLENBQUMsSUFBSSxLQUFLLFFBQVEsRUFBRTt3QkFDbkMsSUFBSSxJQUFJLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxF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SSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQzFCLENBQUMsRUFBQTtJQTdkRCxDQUFDO0lBakJELElBQTZCLFNBQVMsQ0FBQyxTQUF1QjtRQUM1RCxJQUFJLFNBQVMsSUFBSSw2Q0FBb0IsU0FBUyxFQUFFO1lBQzlDLHVCQUFBLElBQUksY0FBYyxTQUFTLEVBQUM7WUFDNUIsNENBQW1CLEdBQUcsQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLFNBQVMsdUNBQWMsQ0FBQyxDQUFDO1NBQ2hFO0lBQ0gsQ0FBQztJQWNELFFBQVE7UUFDTixJQUFJLENBQUMsVUFBVSxHQUFHLEtBQUssQ0FBQztJQUMxQixDQUFDO0lBRUQsV0FBVztRQUNULDRDQUFtQixXQUFXLEVBQUUsQ0FBQztJQUNuQyxDQUFDOzs7O1lBOUNGLFNBQVMsU0FBQztnQkFDVCxRQUFRLEVBQUUsaUJBQWlCO2dCQUMzQiw0M05BQTRDOzthQUU3Qzs7O1lBaEM2QyxpQkFBaUI7WUF3QmpDLGVBQWU7WUFOM0Msa0JBQWtCO1lBUmxCLGVBQWU7WUFlUixrQkFBa0I7WUFYekIsZ0JBQWdCOzs7cUJBcUJmLEtBQUs7b0JBQ0wsU0FBUyxTQUFDLE9BQU87d0JBYWpCLFNBQVMsU0FBQyxZQUFZIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBPbkluaXQsIElucHV0LCBWaWV3Q2hpbGQsIENoYW5nZURldGVjdG9yUmVmLCBPbkRlc3Ryb3kgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0ICogYXMgdXVpZCBmcm9tICd1dWlkJztcclxuaW1wb3J0ICQgZnJvbSAnanF1ZXJ5JztcclxuaW1wb3J0IFhMU1ggZnJvbSAneGxzeCc7XHJcblxyXG5pbXBvcnQge1xyXG4gIFNkRXhjZWxTZXJ2aWNlLCBFeGNlbFRlbXBsYXRlXHJcbn0gZnJvbSAnQHNkLWFuZ3VsYXIvY29yZS9leGNlbCc7XHJcblxyXG5pbXBvcnQge1xyXG4gIFNkTm90aWZ5U2VydmljZVxyXG59IGZyb20gJ0BzZC1hbmd1bGFyL2NvcmUvbm90aWZ5JztcclxuXHJcbmltcG9ydCB7XHJcbiAgU2RMb2FkaW5nU2VydmljZVxyXG59IGZyb20gJ0BzZC1hbmd1bGFyL2NvcmUvbG9hZGluZyc7XHJcblxyXG5pbXBvcnQge1xyXG4gIFNkVHJhbnNsYXRlU2VydmljZVxyXG59IGZyb20gJ0BzZC1hbmd1bGFyL2NvcmUvdHJhbnNsYXRlJztcclxuaW1wb3J0IHsgTWF0UGFnaW5hdG9yIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvcGFnaW5hdG9yJztcclxuaW1wb3J0IHsgU3Vic2NyaXB0aW9uIH0gZnJvbSAncnhqcyc7XHJcbmltcG9ydCB7IFNkTW9kYWwgfSBmcm9tICdAc2QtYW5ndWxhci9jb3JlL21vZGFsJztcclxuaW1wb3J0IHsgU2RFeGNlbEl0ZW0sIFNkVXBsb2FkRXhjZWxPcHRpb24sIFNkVXBsb2FkRXhjZWxWYWxpZGF0aW9uIH0gZnJvbSAnLi91cGxvYWQtZXhjZWwubW9kZWwnO1xyXG5pbXBvcnQgeyBFeHBvcnRUZW1wYXRlQ29sdW1uLCBTZEV4cG9ydFNlcnZpY2UgfSBmcm9tICdAc2QtYW5ndWxhci9jb3JlL2V4cG9ydCc7XHJcbmltcG9ydCB7IFNkQ29sdW1uSGlkZGVuUGlwZSB9IGZyb20gJy4vcGlwZXMvY29sdW1tLWhpZGRlbi5waXBlJztcclxudHlwZSBBT0EgPSBBcnJheTxBcnJheTxhbnk+PjtcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAnc2QtdXBsb2FkLWV4Y2VsJyxcclxuICB0ZW1wbGF0ZVVybDogJy4vdXBsb2FkLWV4Y2VsLmNvbXBvbmVudC5odG1sJyxcclxuICBzdHlsZVVybHM6IFsnLi91cGxvYWQtZXhjZWwuY29tcG9uZW50LnNjc3MnXVxyXG59KVxyXG5leHBvcnQgY2xhc3MgU2RVcGxvYWRFeGNlbCBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95IHtcclxuICBwcml2YXRlIGltcG9ydElkID0gJ0knICsgdXVpZC52NCgpO1xyXG4gIEBJbnB1dCgpIG9wdGlvbjogU2RVcGxvYWRFeGNlbE9wdGlvbjtcclxuICBAVmlld0NoaWxkKCdtb2RhbCcpIG1vZGFsOiBTZE1vZGFsO1xyXG4gIGl0ZW1zOiBTZEV4Y2VsSXRlbVtdID0gW107XHJcbiAgLy8gb3JpZ2luSXRlbXM6IFNkRXhjZWxJdGVtW10gPSBbXTtcclxuICBoYXNEZXNjcmlwdGlvbiA9IGZhbHNlO1xyXG5cclxuICBzaG93aW5nOiAnQUxMJyB8ICdTVUNDRVNTJyB8ICdXQVJOSU5HJyB8ICdFUlJPUicgPSAnQUxMJztcclxuICBmaWx0ZXJlZEl0ZW1zOiBTZEV4Y2VsSXRlbVtdID0gW107XHJcbiAgdmlld0l0ZW1zOiBTZEV4Y2VsSXRlbVtdID0gW107XHJcbiAgbnVtYmVyT2ZTdWNjZXNzID0gMDtcclxuICBudW1iZXJPZkVycm9yID0gMDtcclxuICBudW1iZXJPZldhcm5pbmcgPSAwO1xyXG4gIGZpbGU6IEZpbGU7XHJcbiAgI3BhZ2luYXRvcjogTWF0UGFnaW5hdG9yO1xyXG4gIEBWaWV3Q2hpbGQoTWF0UGFnaW5hdG9yKSBzZXQgcGFnaW5hdG9yKHBhZ2luYXRvcjogTWF0UGFnaW5hdG9yKSB7XHJcbiAgICBpZiAocGFnaW5hdG9yICYmIHRoaXMuI3BhZ2luYXRvciAhPT0gcGFnaW5hdG9yKSB7XHJcbiAgICAgIHRoaXMuI3BhZ2luYXRvciA9IHBhZ2luYXRvcjtcclxuICAgICAgdGhpcy4jc3Vic2NyaXB0aW9uLmFkZChwYWdpbmF0b3IucGFnZS5zdWJzY3JpYmUodGhpcy4jcmVsb2FkKSk7XHJcbiAgICB9XHJcbiAgfVxyXG4gICNzdWJzY3JpcHRpb24gPSBuZXcgU3Vic2NyaXB0aW9uKCk7XHJcbiAgdXBsb2FkaW5nOiBib29sZWFuO1xyXG4gIGlzVXBsb2FkZWQ6IGJvb2xlYW47XHJcbiAgaXNEb3dubG9hZFRlbXBsYXRlID0gZmFsc2U7XHJcbiAgY29uc3RydWN0b3IoXHJcbiAgICBwcml2YXRlIHJlZjogQ2hhbmdlRGV0ZWN0b3JSZWYsXHJcbiAgICBwcml2YXRlIGV4cG9ydFNlcnZpY2U6IFNkRXhwb3J0U2VydmljZSxcclxuICAgIHByaXZhdGUgdHJhbnNsYXRlU2VydmljZTogU2RUcmFuc2xhdGVTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBub3RpZnlTZXJ2aWNlOiBTZE5vdGlmeVNlcnZpY2UsXHJcbiAgICBwcml2YXRlIHNkQ29sdW1uSGlkZGVuOiBTZENvbHVtbkhpZGRlblBpcGUsXHJcbiAgICBwcml2YXRlIGxvYWRpbmdTZXJ2aWNlOiBTZExvYWRpbmdTZXJ2aWNlKSB7XHJcbiAgfVxyXG5cclxuICBuZ09uSW5pdCgpIHtcclxuICAgIHRoaXMuaXNVcGxvYWRlZCA9IGZhbHNlO1xyXG4gIH1cclxuXHJcbiAgbmdPbkRlc3Ryb3koKSB7XHJcbiAgICB0aGlzLiNzdWJzY3JpcHRpb24udW5zdWJzY3JpYmUoKTtcclxuICB9XHJcblxyXG4gIG9wZW4gPSAoKSA9PiB7XHJcbiAgICB0aGlzLiNyZXNldCgpO1xyXG4gICAgdGhpcy5tb2RhbC5vcGVuKCk7XHJcbiAgfVxyXG5cclxuICBjbG9zZSA9ICgpID0+IHtcclxuICAgIHRoaXMubW9kYWwuY2xvc2UoKTtcclxuICB9XHJcblxyXG4gICNyZXNldCA9ICgpID0+IHtcclxuICAgIHRoaXMuaXRlbXMgPSBbXTtcclxuICAgIHRoaXMuZmlsdGVyZWRJdGVtcyA9IFtdO1xyXG4gICAgdGhpcy52aWV3SXRlbXMgPSBbXTtcclxuICAgIHRoaXMubnVtYmVyT2ZTdWNjZXNzID0gMDtcclxuICAgIHRoaXMubnVtYmVyT2ZFcnJvciA9IDA7XHJcbiAgICB0aGlzLm51bWJlck9mV2FybmluZyA9IDA7XHJcbiAgICB0aGlzLnNob3dpbmcgPSAnQUxMJztcclxuICB9XHJcblxyXG4gICNyZWxvYWQgPSAoKSA9PiB7XHJcbiAgICBjb25zdCBwYWdlSW5kZXggPSB0aGlzLiNwYWdpbmF0b3IucGFnZUluZGV4O1xyXG4gICAgY29uc3QgcGFnZVNpemUgPSB0aGlzLiNwYWdpbmF0b3IucGFnZVNpemU7XHJcbiAgICB0aGlzLmZpbHRlcmVkSXRlbXMgPSB0aGlzLml0ZW1zLmZpbHRlcigoaXRlbSkgPT4ge1xyXG4gICAgICBjb25zdCB7IHZhbGlkYXRpb24gfSA9IGl0ZW0uc2Q7XHJcbiAgICAgIGlmICh0aGlzLnNob3dpbmcgPT09ICdTVUNDRVNTJykge1xyXG4gICAgICAgIHJldHVybiAhdmFsaWRhdGlvbj8uZXJyb3IgJiYgIXZhbGlkYXRpb24/Lndhcm5pbmc7XHJcbiAgICAgIH0gZWxzZSBpZiAodGhpcy5zaG93aW5nID09PSAnV0FSTklORycpIHtcclxuICAgICAgICByZXR1cm4gISF2YWxpZGF0aW9uPy53YXJuaW5nICYmICF2YWxpZGF0aW9uPy5lcnJvcjtcclxuICAgICAgfSBlbHNlIGlmICh0aGlzLnNob3dpbmcgPT09ICdFUlJPUicpIHtcclxuICAgICAgICByZXR1cm4gISF2YWxpZGF0aW9uPy5lcnJvcjtcclxuICAgICAgfVxyXG4gICAgICByZXR1cm4gdHJ1ZTtcclxuICAgIH0pO1xyXG4gICAgdGhpcy52aWV3SXRlbXMgPSB0aGlzLmZpbHRlcmVkSXRlbXNcclxuICAgICAgLmZpbHRlcigoaXRlbSwgaW5kZXgpID0+IGluZGV4ID49IHBhZ2VJbmRleCAqIHBhZ2VTaXplICYmIGluZGV4IDwgKHBhZ2VJbmRleCArIDEpICogcGFnZVNpemUpO1xyXG5cclxuICAgIHRoaXMubnVtYmVyT2ZTdWNjZXNzID0gdGhpcy5pdGVtcy5maWx0ZXIodGhpcy4jaXNTdWNjZXNzKS5sZW5ndGg7XHJcbiAgICB0aGlzLm51bWJlck9mRXJyb3IgPSB0aGlzLml0ZW1zLmZpbHRlcih0aGlzLiNpc0Vycm9yKS5sZW5ndGg7XHJcbiAgICB0aGlzLm51bWJlck9mV2FybmluZyA9IHRoaXMuaXRlbXMuZmlsdGVyKHRoaXMuI2lzV2FybmluZykubGVuZ3RoO1xyXG4gIH1cclxuXHJcbiAgI2lzRXJyb3IgPSAoaXRlbTogU2RFeGNlbEl0ZW0pID0+ICEhaXRlbS5zZC52YWxpZGF0aW9uLmVycm9yO1xyXG4gICNpc1dhcm5pbmcgPSAoaXRlbTogU2RFeGNlbEl0ZW0pID0+IGl0ZW0uc2QudmFsaWRhdGlvbj8ud2FybmluZyAmJiAhaXRlbS5zZC52YWxpZGF0aW9uPy5lcnJvcjtcclxuICAjaXNTdWNjZXNzID0gKGl0ZW06IFNkRXhjZWxJdGVtKSA9PiAhaXRlbS5zZC52YWxpZGF0aW9uPy5lcnJvciAmJiAhaXRlbS5zZC52YWxpZGF0aW9uPy53YXJuaW5nO1xyXG5cclxuICB1cGxvYWQgPSBhc3luYyAoKSA9PiB7XHJcbiAgICB0cnkge1xyXG4gICAgICBjb25zdCB7IG1hcHBpbmdJdGVtcywgZXJyb3JWYWxpZGF0aW9uLCB3YXJuaW5nVmFsaWRhdGlvbiB9ID0gdGhpcy5vcHRpb247XHJcbiAgICAgIGNvbnN0IHsgdHJhbnNsYXRlIH0gPSB0aGlzLnRyYW5zbGF0ZVNlcnZpY2U7XHJcbiAgICAgIGNvbnN0IHsgaXRlbXMsIGZpbGUgfSA9IGF3YWl0IHRoaXMuI2ltcG9ydCgpO1xyXG4gICAgICBpZiAodGhpcy5vcHRpb24uY29sdW1ucy5zb21lKGUgPT4gISFlLmRlc2NyaXB0aW9uKSkge1xyXG4gICAgICAgIHRoaXMuaGFzRGVzY3JpcHRpb24gPSB0cnVlO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIHRoaXMuaGFzRGVzY3JpcHRpb24gPSBmYWxzZTtcclxuICAgICAgfVxyXG4gICAgICBjb25zdCBvZmZzZXQgPSB0aGlzLmhhc0Rlc2NyaXB0aW9uID8gMiA6IDE7XHJcbiAgICAgIGl0ZW1zLnNwbGljZSgwLCBvZmZzZXQpO1xyXG4gICAgICBpZiAoaXRlbXMubGVuZ3RoID09PSAwKSB7XHJcbiAgICAgICAgdGhpcy5ub3RpZnlTZXJ2aWNlLm5vdGlmeS53YXJuaW5nKGAke3RyYW5zbGF0ZShgTm8gZGF0YSB0byBpbXBvcnRgKX1gKTtcclxuICAgICAgICByZXR1cm47XHJcbiAgICAgIH1cclxuICAgICAgaWYgKGl0ZW1zLmxlbmd0aCA+IHRoaXMub3B0aW9uLmxpbWl0KSB7XHJcbiAgICAgICAgdGhpcy5ub3RpZnlTZXJ2aWNlLm5vdGlmeS53YXJuaW5nKGAke3RyYW5zbGF0ZShgTGltaXQgcm93c2ApfTogJHt0aGlzLm9wdGlvbi5saW1pdH1gKTtcclxuICAgICAgICByZXR1cm47XHJcbiAgICAgIH1cclxuICAgICAgdGhpcy4jcmVzZXQoKTtcclxuICAgICAgLy8gdGhpcy5vcmlnaW5JdGVtcyA9IGl0ZW1zLm1hcChkYXRhID0+ICh7XHJcbiAgICAgIC8vICAgZGF0YSxcclxuICAgICAgLy8gICBzZDoge31cclxuICAgICAgLy8gfSkpO1xyXG4gICAgICB0aGlzLml0ZW1zID0gaXRlbXMubWFwKChkYXRhLCBpZHgpID0+ICh7XHJcbiAgICAgICAgZGF0YSxcclxuICAgICAgICBzZDoge1xyXG4gICAgICAgICAgZXhjZWxJbmRleDogaWR4ICsgKHRoaXMuaGFzRGVzY3JpcHRpb24gPyA0IDogMyksXHJcbiAgICAgICAgICB2YWxpZGF0aW9uOiB7XHJcbiAgICAgICAgICAgIGRhdGE6IHt9XHJcbiAgICAgICAgICB9LFxyXG4gICAgICAgICAgb3JpZ2luOiB7IC4uLmRhdGEgfVxyXG4gICAgICAgIH1cclxuICAgICAgfSkpO1xyXG5cclxuICAgICAgaWYgKG1hcHBpbmdJdGVtcykge1xyXG4gICAgICAgIGNvbnN0IG1hcHBlZEl0ZW1zID0gbWFwcGluZ0l0ZW1zKHRoaXMuaXRlbXMpO1xyXG4gICAgICAgIGlmIChtYXBwZWRJdGVtcyBpbnN0YW5jZW9mIFByb21pc2UpIHtcclxuICAgICAgICAgIHRoaXMudXBsb2FkaW5nID0gdHJ1ZTtcclxuICAgICAgICAgIHRoaXMuaXRlbXMgPSAoYXdhaXQgbWFwcGVkSXRlbXMuZmluYWxseSgoKSA9PiB0aGlzLnVwbG9hZGluZyA9IGZhbHNlKSk7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgIHRoaXMuaXRlbXMgPSAobWFwcGVkSXRlbXMgfHwgdGhpcy5pdGVtcyk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICAgIHRoaXMuZmlsZSA9IGZpbGU7XHJcbiAgICAgIHRoaXMubG9hZGluZ1NlcnZpY2Uuc3RhcnQoKTtcclxuICAgICAgZm9yIChjb25zdCBbaWR4LCBpdGVtXSBvZiB0aGlzLml0ZW1zLmVudHJpZXMoKSkge1xyXG4gICAgICAgIGF3YWl0IHRoaXMudmFsaWRhdGUoaXRlbSk7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIC8vIE7hur91IGtow7RuZyBjw7MgZXJyb3IgdGjDrCB0aeG6v3AgdOG7pWMgdmFsaWRhdGUgdOG7qyBvcHRpb24gdmFsaWRhdGUgdHJ1eeG7gW4gdsOgb1xyXG4gICAgICBpZiAoIXRoaXMuaXRlbXMuc29tZSh0aGlzLiNpc0Vycm9yKSAmJiBlcnJvclZhbGlkYXRpb24pIHtcclxuICAgICAgICBjb25zdCByZXN1bHRzID0gYXdhaXQgZXJyb3JWYWxpZGF0aW9uKHRoaXMuaXRlbXMubWFwKGU9PmUuZGF0YSkpO1xyXG4gICAgICAgIHJlc3VsdHMuZm9yRWFjaChyZXN1bHQgPT4gdGhpcy5pdGVtc1tyZXN1bHQuaWR4XS5zZC52YWxpZGF0aW9uLmVycm9yID0gcmVzdWx0Lm1lc3NhZ2UpO1xyXG4gICAgICB9XHJcblxyXG4gICAgICAvLyBO4bq/dSBraMO0bmcgY8OzIHdhcm5pbmcgdGjDrCB0aeG6v3AgdOG7pWMgdmFsaWRhdGUgdOG7qyBvcHRpb24gdmFsaWRhdGUgdHJ1eeG7gW4gdsOgb1xyXG4gICAgICBpZiAoIXRoaXMuaXRlbXMuc29tZSh0aGlzLiNpc1dhcm5pbmcpICYmIHdhcm5pbmdWYWxpZGF0aW9uKSB7XHJcbiAgICAgICAgY29uc3QgcmVzdWx0cyA9IGF3YWl0IHdhcm5pbmdWYWxpZGF0aW9uKHRoaXMuaXRlbXMubWFwKGU9PmUuZGF0YSkpO1xyXG4gICAgICAgIHJlc3VsdHMuZm9yRWFjaChyZXN1bHQgPT4gdGhpcy5pdGVtc1tyZXN1bHQuaWR4XS5zZC52YWxpZGF0aW9uLndhcm5pbmcgPSByZXN1bHQubWVzc2FnZSk7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIHRoaXMuI3BhZ2luYXRvci5wYWdlSW5kZXggPSAwO1xyXG4gICAgICB0aGlzLiNyZWxvYWQoKTtcclxuICAgICAgdGhpcy5yZWYuZGV0ZWN0Q2hhbmdlcygpO1xyXG5cclxuICAgICAgdGhpcy5pc1VwbG9hZGVkID0gZmFsc2U7XHJcbiAgICB9IGNhdGNoIChlcnIpIHtcclxuICAgICAgdGhpcy5ub3RpZnlTZXJ2aWNlLmhhbmRsZS5lcnJvcihlcnIpO1xyXG4gICAgfSBmaW5hbGx5IHtcclxuICAgICAgdGhpcy5sb2FkaW5nU2VydmljZS5zdG9wKCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICB2YWxpZGF0ZSA9IGFzeW5jIChleGNlbEl0ZW06IFNkRXhjZWxJdGVtKSA9PiB7XHJcbiAgICBleGNlbEl0ZW0uc2QudmFsaWRhdGlvbiA9IHt9O1xyXG4gICAgY29uc3QgeyBkYXRhOiBpdGVtIH0gPSBleGNlbEl0ZW07XHJcbiAgICBjb25zdCB7IHZhbGlkYXRpb24gfSA9IGV4Y2VsSXRlbS5zZDtcclxuICAgIGNvbnN0IHsgdHJhbnNsYXRlIH0gPSB0aGlzLnRyYW5zbGF0ZVNlcnZpY2U7XHJcbiAgICBmb3IgKGNvbnN0IGNvbHVtbiBvZiB0aGlzLm9wdGlvbi5jb2x1bW5zKSB7XHJcbiAgICAgIGlmICghdGhpcy5zZENvbHVtbkhpZGRlbi50cmFuc2Zvcm0oY29sdW1uKSkge1xyXG4gICAgICAgIGNvbnRpbnVlO1xyXG4gICAgICB9XHJcbiAgICAgIHZhbGlkYXRpb24uZGF0YVtjb2x1bW4uZmllbGRdID0ge307XHJcbiAgICAgIHRyeSB7XHJcbiAgICAgICAgaWYgKGNvbHVtbi5kZWZhdWx0VmFsdWUgIT09IHVuZGVmaW5lZCkge1xyXG4gICAgICAgICAgaXRlbVtjb2x1bW4uZmllbGRdID0gaXRlbVtjb2x1bW4uZmllbGRdID8/IGNvbHVtbi5kZWZhdWx0VmFsdWU7XHJcbiAgICAgICAgfSBlbHNlIGlmIChjb2x1bW4ucmVxdWlyZWQgJiYgIWl0ZW1bY29sdW1uLmZpZWxkXSAmJiBpdGVtW2NvbHVtbi5maWVsZF0gIT09IDApIHtcclxuICAgICAgICAgIHZhbGlkYXRpb24uZGF0YVtjb2x1bW4uZmllbGRdLmVycm9yID0gYCR7dHJhbnNsYXRlKCdyZXF1aXJlZCcpfWA7XHJcbiAgICAgICAgICB2YWxpZGF0aW9uLmVycm9yICs9IGA8c3Ryb25nPlske2NvbHVtbi50aXRsZSB8fCBjb2x1bW4uZmllbGR9XTwvc3Ryb25nPiAke3ZhbGlkYXRpb24uZGF0YVtjb2x1bW4uZmllbGRdLmVycm9yfTxicj5gO1xyXG4gICAgICAgICAgY29udGludWU7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmIChjb2x1bW4udHlwZSA9PT0gJ3N0cmluZycpIHtcclxuICAgICAgICAgIGNvbnN0IHZhbHVlID0gKGl0ZW1bY29sdW1uLmZpZWxkXSB8fCAnJykudG9TdHJpbmcoKTtcclxuICAgICAgICAgIGlmIChjb2x1bW4ubWluTGVuZ3RoICE9PSB1bmRlZmluZWQgJiYgdmFsdWUubGVuZ3RoIDwgY29sdW1uLm1pbkxlbmd0aCkge1xyXG4gICAgICAgICAgICB2YWxpZGF0aW9uLmRhdGFbY29sdW1uLmZpZWxkXS5lcnJvciA9IGAke3RyYW5zbGF0ZSgnTWluIGxlbmd0aCcpfTogJHtjb2x1bW4ubWluTGVuZ3RofWA7XHJcbiAgICAgICAgICAgIHZhbGlkYXRpb24uZXJyb3IgKz0gYDxzdHJvbmc+WyR7Y29sdW1uLnRpdGxlIHx8IGNvbHVtbi5maWVsZH1dPC9zdHJvbmc+ICR7dmFsaWRhdGlvbi5kYXRhW2NvbHVtbi5maWVsZF0uZXJyb3J9PGJyPmA7XHJcbiAgICAgICAgICAgIGNvbnRpbnVlO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgaWYgKGNvbHVtbi5tYXhMZW5ndGggIT09IHVuZGVmaW5lZCAmJiB2YWx1ZS5sZW5ndGggPiBjb2x1bW4ubWF4TGVuZ3RoKSB7XHJcbiAgICAgICAgICAgIHZhbGlkYXRpb24uZGF0YVtjb2x1bW4uZmllbGRdLmVycm9yID0gYCR7dHJhbnNsYXRlKCdNYXggbGVuZ3RoJyl9OiAke2NvbHVtbi5tYXhMZW5ndGh9YDtcclxuICAgICAgICAgICAgdmFsaWRhdGlvbi5lcnJvciArPSBgPHN0cm9uZz5bJHtjb2x1bW4udGl0bGUgfHwgY29sdW1uLmZpZWxkfV08L3N0cm9uZz4gJHt2YWxpZGF0aW9uLmRhdGFbY29sdW1uLmZpZWxkXS5lcnJvcn08YnI+YDtcclxuICAgICAgICAgICAgY29udGludWU7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICBpdGVtW2NvbHVtbi5maWVsZF0gPSB2YWx1ZTtcclxuICAgICAgICB9IGVsc2UgaWYgKGNvbHVtbi50eXBlID09PSAnbnVtYmVyJykge1xyXG4gICAgICAgICAgaWYgKGl0ZW1bY29sdW1uLmZpZWxkXSkge1xyXG4gICAgICAgICAgICBjb25zdCB2YWx1ZSA9ICtpdGVtW2NvbHVtbi5maWVsZF07XHJcbiAgICAgICAgICAgIGlmIChOdW1iZXIuaXNOYU4odmFsdWUpKSB7XHJcbiAgICAgICAgICAgICAgdmFsaWRhdGlvbi5kYXRhW2NvbHVtbi5maWVsZF0uZXJyb3IgPSBgJHtpdGVtW2NvbHVtbi5maWVsZF19ICR7dHJhbnNsYXRlKCdpcyBub3QgYSBudW1iZXInKX1gO1xyXG4gICAgICAgICAgICAgIHZhbGlkYXRpb24uZXJyb3IgKz0gYDxzdHJvbmc+WyR7Y29sdW1uLnRpdGxlIHx8IGNvbHVtbi5maWVsZH1dPC9zdHJvbmc+ICR7dmFsaWRhdGlvbi5kYXRhW2NvbHVtbi5maWVsZF0uZXJyb3J9PGJyPmA7XHJcbiAgICAgICAgICAgICAgY29udGludWU7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgaXRlbVtjb2x1bW4uZmllbGRdID0gdmFsdWU7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICBpZiAoIWl0ZW1bY29sdW1uLmZpZWxkXSAmJiBpdGVtW2NvbHVtbi5maWVsZF0gIT09IDApIHtcclxuICAgICAgICAgICAgaXRlbVtjb2x1bW4uZmllbGRdID0gdW5kZWZpbmVkO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgaWYgKGNvbHVtbi5taW5WYWx1ZSAhPT0gdW5kZWZpbmVkICYmIGl0ZW1bY29sdW1uLmZpZWxkXSA8IGNvbHVtbi5taW5WYWx1ZSkge1xyXG4gICAgICAgICAgICB2YWxpZGF0aW9uLmRhdGFbY29sdW1uLmZpZWxkXS5lcnJvciA9IGAke2l0ZW1bY29sdW1uLmZpZWxkXX0gJHt0cmFuc2xhdGUoJ01pbiB2YWx1ZScpfTogJHtjb2x1bW4ubWluVmFsdWV9YDtcclxuICAgICAgICAgICAgdmFsaWRhdGlvbi5lcnJvciArPSBgPHN0cm9uZz5bJHtjb2x1bW4udGl0bGUgfHwgY29sdW1uLmZpZWxkfV08L3N0cm9uZz4gJHt2YWxpZGF0aW9uLmRhdGFbY29sdW1uLmZpZWxkXS5lcnJvcn08YnI+YDtcclxuICAgICAgICAgICAgY29udGludWU7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICBpZiAoY29sdW1uLm1heFZhbHVlICE9PSB1bmRlZmluZWQgJiYgaXRlbVtjb2x1bW4uZmllbGRdID4gY29sdW1uLm1heFZhbHVlKSB7XHJcbiAgICAgICAgICAgIHZhbGlkYXRpb24uZGF0YVtjb2x1bW4uZmllbGRdLmVycm9yID0gYCR7aXRlbVtjb2x1bW4uZmllbGRdfSAke3RyYW5zbGF0ZSgnTWF4IHZhbHVlJyl9OiAke2NvbHVtbi5tYXhWYWx1ZX1gO1xyXG4gICAgICAgICAgICB2YWxpZGF0aW9uLmVycm9yICs9IGA8c3Ryb25nPlske2NvbHVtbi50aXRsZSB8fCBjb2x1bW4uZmllbGR9XTwvc3Ryb25nPiAke3ZhbGlkYXRpb24uZGF0YVtjb2x1bW4uZmllbGRdLmVycm9yfTxicj5gO1xyXG4gICAgICAgICAgICBjb250aW51ZTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9IGVsc2UgaWYgKGNvbHVtbi50eXBlID09PSAnYm9vbCcpIHtcclxuICAgICAgICAgIGlmIChpdGVtW2NvbHVtbi5maWVsZF0gPT09IDAgfHwgaXRlbVtjb2x1bW4uZmllbGRdID09PSBmYWxzZSkge1xyXG4gICAgICAgICAgICBpdGVtW2NvbHVtbi5maWVsZF0gPSAnMCc7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICBpZiAoaXRlbVtjb2x1bW4uZmllbGRdID09PSAxIHx8IGl0ZW1bY29sdW1uLmZpZWxkXSA9PT0gdHJ1ZSkge1xyXG4gICAgICAgICAgICBpdGVtW2NvbHVtbi5maWVsZF0gPSAnMSc7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICBcclxuICAgICAgICAgIGlmIChpdGVtW2NvbHVtbi5maWVsZF0pIHtcclxuICAgICAgICAgICAgY29uc3QgdmFsdWUgPSAraXRlbVtjb2x1bW4uZmllbGRdO1xyXG4gICAgICAgICAgICBpZiAoTnVtYmVyLmlzTmFOKHZhbHVlKSB8fCAodmFsdWUgIT09IDAgJiYgdmFsdWUgIT09IDEpKSB7XHJcbiAgICAgICAgICAgICAgdmFsaWRhdGlvbi5kYXRhW2NvbHVtbi5maWVsZF0uZXJyb3IgPSBgJHt0cmFuc2xhdGUoJ1ZhbHVlIHNob3VkIGJlIDAgb3IgMScpfWA7XHJcbiAgICAgICAgICAgICAgdmFsaWRhdGlvbi5lcnJvciArPSBgPHN0cm9uZz5bJHtjb2x1bW4udGl0bGUgfHwgY29sdW1uLmZpZWxkfV08L3N0cm9uZz4gJHt2YWxpZGF0aW9uLmRhdGFbY29sdW1uLmZpZWxkXS5lcnJvcn08YnI+YDtcclxuICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICBpZiAoY29sdW1uLnBhcnNlVG9Cb29sKSB7IFxyXG4gICAgICAgICAgICAgICAgaXRlbVtjb2x1bW4uZmllbGRdID0gaXRlbVtjb2x1bW4uZmllbGRdID09PSAnMSc7XHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfSBlbHNlIGlmIChjb2x1bW4udHlwZSA9PT0gJ3ZhbHVlcycpIHtcclxuICAgICAgICAgIGlmIChpdGVtW2NvbHVtbi5maWVsZF0gJiYgdHlwZW9mIChpdGVtW2NvbHVtbi5maWVsZF0pICE9PSAnbnVtYmVyJyAmJiB0eXBlb2YgKGl0ZW1bY29sdW1uLmZpZWxkXSkgIT09ICdzdHJpbmcnKSB7XHJcbiAgICAgICAgICAgIHZhbGlkYXRpb24uZGF0YVtjb2x1bW4uZmllbGRdLmVycm9yID0gYCR7aXRlbVtjb2x1bW4uZmllbGRdfSAke3RyYW5zbGF0ZSgnSW52YWxpZCBkYXRhIHR5cGUnKX1gO1xyXG4gICAgICAgICAgICB2YWxpZGF0aW9uLmVycm9yICs9IGA8c3Ryb25nPlske2NvbHVtbi50aXRsZSB8fCBjb2x1bW4uZmllbGR9XTwvc3Ryb25nPiAke3ZhbGlkYXRpb24uZGF0YVtjb2x1bW4uZmllbGRdLmVycm9yfTxicj5gO1xyXG4gICAgICAgICAgICBjb250aW51ZTtcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIGlmIChjb2x1bW4uY2hlY2tWYWx1ZUluQXJyYXkgJiYgaXRlbVtjb2x1bW4uZmllbGRdICYmICFjb2x1bW4udmFsdWVzLnNvbWUoZSA9PiBlLnRvU3RyaW5nKCkgPT09IGl0ZW1bY29sdW1uLmZpZWxkXS50b1N0cmluZygpKSkge1xyXG4gICAgICAgICAgICB2YWxpZGF0aW9uLmRhdGFbY29sdW1uLmZpZWxkXS5lcnJvciA9IGAke2l0ZW1bY29sdW1uLmZpZWxkXX0gJHt0cmFuc2xhdGUoJ1ZhbHVlIG5vdCBpbicpfSBbJHtjb2x1bW4udmFsdWVzLmpvaW4oKX1dYDtcclxuICAgICAgICAgICAgdmFsaWRhdGlvbi5lcnJvciArPSBgPHN0cm9uZz5bJHtjb2x1bW4udGl0bGUgfHwgY29sdW1uLmZpZWxkfV08L3N0cm9uZz4gJHt2YWxpZGF0aW9uLmRhdGFbY29sdW1uLmZpZWxkXS5lcnJvcn08YnI+YDtcclxuICAgICAgICAgICAgY29udGludWU7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfSBlbHNlIGlmIChjb2x1bW4udHlwZSA9PT0gJ2RhdGUnIHx8IGNvbHVtbi50eXBlID09PSAnZGF0ZXRpbWUnIHx8IGNvbHVtbi50eXBlID09PSAndGltZScpIHtcclxuICAgICAgICAgIGNvbnN0IHsgdHlwZSwgZm9ybWF0IH0gPSBjb2x1bW47XHJcbiAgICAgICAgICBjb25zdCB2YWwgPSBpdGVtW2NvbHVtbi5maWVsZF07XHJcbiAgICAgICAgICBpZiAoZm9ybWF0ICYmIGl0ZW1bY29sdW1uLmZpZWxkXSkge1xyXG4gICAgICAgICAgICBpZiAodHlwZW9mICh2YWwpICE9PSAnc3RyaW5nJykge1xyXG4gICAgICAgICAgICAgIHZhbGlkYXRpb24uZGF0YVtjb2x1bW4uZmllbGRdLmVycm9yID0gYCR7dHJhbnNsYXRlKCdJbnZhbGlkIGZvcm1hdCcpfSAke2NvbHVtbi5mb3JtYXR9OiAke3ZhbH1gO1xyXG4gICAgICAgICAgICAgIHZhbGlkYXRpb24uZXJyb3IgKz0gYDxzdHJvbmc+WyR7Y29sdW1uLnRpdGxlIHx8IGNvbHVtbi5maWVsZH1dPC9zdHJvbmc+ICR7dmFsaWRhdGlvbi5kYXRhW2NvbHVtbi5maWVsZF0uZXJyb3J9PGJyPmA7XHJcbiAgICAgICAgICAgICAgY29udGludWU7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgaWYgKHR5cGUgPT09ICdkYXRlJyAmJiAhdGhpcy4jaXNWYWxpZERhdGUoZm9ybWF0LCB2YWwpKSB7XHJcbiAgICAgICAgICAgICAgdmFsaWRhdGlvbi5kYXRhW2NvbHVtbi5maWVsZF0uZXJyb3IgPSBgJHt0cmFuc2xhdGUoJ0ludmFsaWQgZm9ybWF0Jyl9ICR7Y29sdW1uLmZvcm1hdH06ICR7dmFsfWA7XHJcbiAgICAgICAgICAgICAgdmFsaWRhdGlvbi5lcnJvciArPSBgPHN0cm9uZz5bJHtjb2x1bW4udGl0bGUgfHwgY29sdW1uLmZpZWxkfV08L3N0cm9uZz4gJHt2YWxpZGF0aW9uLmRhdGFbY29sdW1uLmZpZWxkXS5lcnJvcn08YnI+YDtcclxuICAgICAgICAgICAgICBjb250aW51ZTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBpZiAodHlwZSA9PT0gJ3RpbWUnICYmICF0aGlzLiNpc1ZhbGlkVGltZShmb3JtYXQsIHZhbCkpIHtcclxuICAgICAgICAgICAgICB2YWxpZGF0aW9uLmRhdGFbY29sdW1uLmZpZWxkXS5lcnJvciA9IGAke3RyYW5zbGF0ZSgnSW52YWxpZCBmb3JtYXQnKX0gJHtjb2x1bW4uZm9ybWF0fTogJHt2YWx9YDtcclxuICAgICAgICAgICAgICB2YWxpZGF0aW9uLmVycm9yICs9IGA8c3Ryb25nPlske2NvbHVtbi50aXRsZSB8fCBjb2x1bW4uZmllbGR9XTwvc3Ryb25nPiAke3ZhbGlkYXRpb24uZGF0YVtjb2x1bW4uZmllbGRdLmVycm9yfTxicj5gO1xyXG4gICAgICAgICAgICAgIGNvbnRpbnVlO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGlmICh0eXBlID09PSAnZGF0ZXRpbWUnICYmICF0aGlzLiNpc1ZhbGlkRGF0ZVRpbWUoZm9ybWF0LCB2YWwpKSB7XHJcbiAgICAgICAgICAgICAgdmFsaWRhdGlvbi5kYXRhW2NvbHVtbi5maWVsZF0uZXJyb3IgPSBgJHt0cmFuc2xhdGUoJ0ludmFsaWQgZm9ybWF0Jyl9ICR7Y29sdW1uLmZvcm1hdH06ICR7dmFsfWA7XHJcbiAgICAgICAgICAgICAgdmFsaWRhdGlvbi5lcnJvciArPSBgPHN0cm9uZz5bJHtjb2x1bW4udGl0bGUgfHwgY29sdW1uLmZpZWxkfV08L3N0cm9uZz4gJHt2YWxpZGF0aW9uLmRhdGFbY29sdW1uLmZpZWxkXS5lcnJvcn08YnI+YDtcclxuICAgICAgICAgICAgICBjb250aW51ZTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBpdGVtW2NvbHVtbi5maWVsZF0gPSBEYXRlLnBhcnNlRnJvbSh2YWwsIGNvbHVtbi5mb3JtYXQpLnRvRm9ybWF0KCdNTS9kZC95eXl5IEhIOm1tOnNzJyk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICBpZiAoaXRlbVtjb2x1bW4uZmllbGRdICYmICFEYXRlLmlzRGF0ZShpdGVtW2NvbHVtbi5maWVsZF0pKSB7XHJcbiAgICAgICAgICAgIHZhbGlkYXRpb24uZGF0YVtjb2x1bW4uZmllbGRdLmVycm9yID0gYCR7dHJhbnNsYXRlKCdJbnZhbGlkIGRhdGUnKX06ICR7aXRlbVtjb2x1bW4uZmllbGRdfWA7XHJcbiAgICAgICAgICAgIHZhbGlkYXRpb24uZXJyb3IgKz0gYDxzdHJvbmc+WyR7Y29sdW1uLnRpdGxlIHx8IGNvbHVtbi5maWVsZH1dPC9zdHJvbmc+ICR7dmFsaWRhdGlvbi5kYXRhW2NvbHVtbi5maWVsZF0uZXJyb3J9PGJyPmA7XHJcbiAgICAgICAgICAgIGNvbnRpbnVlO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgaWYgKCF2YWxpZGF0aW9uLmRhdGFbY29sdW1uLmZpZWxkXS5lcnJvciAmJiBjb2x1bW4uZXJyb3JWYWxpZGF0aW9uKSB7XHJcbiAgICAgICAgICBjb25zdCBlcnJvciA9IGF3YWl0IGNvbHVtbi5lcnJvclZhbGlkYXRpb24oaXRlbSwgaXRlbVtjb2x1bW4uZmllbGRdKTtcclxuICAgICAgICAgIGlmIChlcnJvcikge1xyXG4gICAgICAgICAgICB2YWxpZGF0aW9uLmRhdGFbY29sdW1uLmZpZWxkXS5lcnJvciA9IGAke2Vycm9yfWA7XHJcbiAgICAgICAgICAgIHZhbGlkYXRpb24uZXJyb3IgKz0gYDxzdHJvbmc+WyR7Y29sdW1uLnRpdGxlIHx8IGNvbHVtbi5maWVsZH1dPC9zdHJvbmc+ICR7ZXJyb3J9PGJyPmA7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBpZiAoIXZhbGlkYXRpb24uZGF0YVtjb2x1bW4uZmllbGRdLndhcm5pbmcgJiYgY29sdW1uLndhcm5pbmdWYWxpZGF0aW9uKSB7XHJcbiAgICAgICAgICBjb25zdCB3YXJuaW5nID0gYXdhaXQgY29sdW1uLndhcm5pbmdWYWxpZGF0aW9uKGl0ZW0sIGl0ZW1bY29sdW1uLmZpZWxkXSk7XHJcbiAgICAgICAgICBpZiAod2FybmluZykge1xyXG4gICAgICAgICAgICB2YWxpZGF0aW9uLmRhdGFbY29sdW1uLmZpZWxkXS53YXJuaW5nID0gYCR7d2FybmluZ31gO1xyXG4gICAgICAgICAgICB2YWxpZGF0aW9uLndhcm5pbmcgKz0gYDxzdHJvbmc+WyR7Y29sdW1uLnRpdGxlIHx8IGNvbHVtbi5maWVsZH1dPC9zdHJvbmc+ICR7d2FybmluZ308YnI+YDtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgIH0gY2F0Y2ggKGV4KSB7XHJcbiAgICAgICAgdmFsaWRhdGlvbi5kYXRhW2NvbHVtbi5maWVsZF0uZXJyb3IgPSBgJHtleD8ubWVzc2FnZSB8fCBleD8uZXJyb3IgfHwgZXggfHwgJ0PDsyBs4buXaSB44bqjeSByYSd9YDtcclxuICAgICAgICB2YWxpZGF0aW9uLmVycm9yICs9IGA8c3Ryb25nPlske2NvbHVtbi50aXRsZSB8fCBjb2x1bW4uZmllbGR9XTwvc3Ryb25nPiAke3ZhbGlkYXRpb24uZGF0YVtjb2x1bW4uZmllbGRdLmVycm9yfTxicj5gO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICBpdGVtLnZhbGlkYXRpb24gPSB2YWxpZGF0aW9uO1xyXG4gIH1cclxuXHJcbiAgI3BhcnNlID0gKGl0ZW06IFNkRXhjZWxJdGVtKSA9PiB7XHJcbiAgICBjb25zdCB7IGRhdGEgfSA9IGl0ZW07XHJcbiAgICByZXR1cm4gZGF0YTtcclxuICB9XHJcblxyXG4gICNtYXBJdGVtID0gKGl0ZW06IFNkRXhjZWxJdGVtKSA9PiB7XHJcbiAgICBjb25zdCB7IGRhdGEgfSA9IGl0ZW07XHJcbiAgICByZXR1cm4gZGF0YTtcclxuICB9XHJcblxyXG4gIGFjY2VwdCA9ICgpID0+IHtcclxuICAgIGNvbnN0IHN1Y2Nlc3NJdGVtcyA9IHRoaXMuaXRlbXMuZmlsdGVyKHRoaXMuI2lzU3VjY2VzcykubWFwKHRoaXMuI21hcEl0ZW0pO1xyXG4gICAgY29uc3QgZXJyb3JJdGVtcyA9IHRoaXMuaXRlbXMuZmlsdGVyKHRoaXMuI2lzRXJyb3IpLm1hcCh0aGlzLiNtYXBJdGVtKTtcclxuICAgIGNvbnN0IHdhcm5pbmdJdGVtcyA9IHRoaXMuaXRlbXMuZmlsdGVyKHRoaXMuI2lzV2FybmluZykubWFwKHRoaXMuI21hcEl0ZW0pO1xyXG4gICAgdGhpcy5vcHRpb24/Lm9uQWNjZXB0KHRoaXMuaXRlbXMubWFwKHRoaXMuI21hcEl0ZW0pLCBzdWNjZXNzSXRlbXMsIGVycm9ySXRlbXMsIHdhcm5pbmdJdGVtcywgdGhpcy5maWxlKTtcclxuICAgIHRoaXMuaXNVcGxvYWRlZCA9IHRydWU7XHJcbiAgfVxyXG5cclxuICBzZXRWYWxpZGF0aW9uID0gKHZhbGlkYXRlczogeyBpZHg6IG51bWJlciwgbWVzc2FnZUVycm9yPzogc3RyaW5nLCBtZXNzYWdlV2FybmluZz86IHN0cmluZywgbWVzc2FnZVN1Y2Nlc3M/OiBzdHJpbmcgfVtdKSA9PiB7XHJcbiAgICBpZiAoQXJyYXkuaXNBcnJheSh2YWxpZGF0ZXMpKSB7XHJcbiAgICAgIHZhbGlkYXRlcy5mb3JFYWNoKHZhbGlkYXRlID0+IHtcclxuICAgICAgICB0aGlzLml0ZW1zW3ZhbGlkYXRlLmlkeF0uc2QudmFsaWRhdGlvbi5lcnJvciA9IHZhbGlkYXRlLm1lc3NhZ2VFcnJvcjtcclxuICAgICAgICB0aGlzLml0ZW1zW3ZhbGlkYXRlLmlkeF0uc2QudmFsaWRhdGlvbi53YXJuaW5nID0gdmFsaWRhdGUubWVzc2FnZVdhcm5pbmc7XHJcbiAgICAgICAgdGhpcy5pdGVtc1t2YWxpZGF0ZS5pZHhdLnNkLnZhbGlkYXRpb24uc3VjY2VzcyA9IHZhbGlkYXRlLm1lc3NhZ2VTdWNjZXNzO1xyXG4gICAgICB9KTtcclxuICAgIH1cclxuICAgIHRoaXMuI3JlbG9hZCgpO1xyXG4gICAgdGhpcy5yZWYuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gIH1cclxuXHJcbiAgdmlldyA9IChzaG93aW5nOiAnQUxMJyB8ICdTVUNDRVNTJyB8ICdXQVJOSU5HJyB8ICdFUlJPUicgPSAnQUxMJykgPT4ge1xyXG4gICAgdGhpcy5zaG93aW5nID0gc2hvd2luZztcclxuICAgIHRoaXMuI3BhZ2luYXRvci5wYWdlSW5kZXggPSAwO1xyXG4gICAgdGhpcy4jcmVsb2FkKCk7XHJcbiAgfVxyXG5cclxuICBkb3dubG9hZFRlbXBsYXRlID0gYXN5bmMgKCkgPT4ge1xyXG4gICAgY29uc3Qgc2hlZXRzOiB7XHJcbiAgICAgIG5hbWU6IHN0cmluZyxcclxuICAgICAgaXRlbXM6IGFueVtdLFxyXG4gICAgICBmaWVsZHM6IHN0cmluZ1tdXHJcbiAgICB9W10gPSBbXTtcclxuICAgIGlmIChBcnJheS5pc0FycmF5KHRoaXMub3B0aW9uPy5zaGVldHMpKSB7XHJcbiAgICAgIGZvciAoY29uc3Qgc2hlZXQgb2YgdGhpcy5vcHRpb24uc2hlZXRzKSB7XHJcbiAgICAgICAgaWYgKHNoZWV0Lm5hbWUgJiYgc2hlZXQuaXRlbXMgJiYgc2hlZXQuZmllbGRzKSB7XHJcbiAgICAgICAgICBpZiAoQXJyYXkuaXNBcnJheShzaGVldC5pdGVtcykpIHtcclxuICAgICAgICAgICAgc2hlZXRzLnB1c2goe1xyXG4gICAgICAgICAgICAgIG5hbWU6IHNoZWV0Lm5hbWUsXHJcbiAgICAgICAgICAgICAgaXRlbXM6IHNoZWV0Lml0ZW1zLFxyXG4gICAgICAgICAgICAgIGZpZWxkczogc2hlZXQuZmllbGRzXHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgc2hlZXRzLnB1c2goe1xyXG4gICAgICAgICAgICAgIG5hbWU6IHNoZWV0Lm5hbWUsXHJcbiAgICAgICAgICAgICAgaXRlbXM6IGF3YWl0IHNoZWV0Lml0ZW1zKCksXHJcbiAgICAgICAgICAgICAgZmllbGRzOiBzaGVldC5maWVsZHNcclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICBjb25zdCBjb2x1bW5Ob3RIaWRkZW4gPSB0aGlzLm9wdGlvbi5jb2x1bW5zLmZpbHRlcihjb2x1bW4gPT4gdGhpcy5zZENvbHVtbkhpZGRlbi50cmFuc2Zvcm0oY29sdW1uKSk7XHJcbiAgICBjb25zdCBleGNlbFRlbXBsYXRlOiBFeGNlbFRlbXBsYXRlID0ge1xyXG4gICAgICBmaWxlTmFtZTogdGhpcy5vcHRpb24uZmlsZU5hbWUgfHwgJ1RlbXBsYXRlJyxcclxuICAgICAgY29sdW1uczogY29sdW1uTm90SGlkZGVuLm1hcChjb2x1bW4gPT4ge1xyXG4gICAgICAgIHJldHVybiB7XHJcbiAgICAgICAgICBmaWVsZDogY29sdW1uLmZpZWxkLFxyXG4gICAgICAgICAgdGl0bGU6IGNvbHVtbi50aXRsZSxcclxuICAgICAgICAgIHdpZHRoOiBjb2x1bW4ud2lkdGgsXHJcbiAgICAgICAgICByZXF1aXJlZDogY29sdW1uLnJlcXVpcmVkLFxyXG4gICAgICAgICAgZGVzY3JpcHRpb246IGNvbHVtbi5kZXNjcmlwdGlvblxyXG4gICAgICAgIH07XHJcbiAgICAgIH0pLFxyXG4gICAgICBzaGVldHNcclxuICAgIH07XHJcbiAgICB0aGlzLmlzRG93bmxvYWRUZW1wbGF0ZSA9IHRydWU7XHJcbiAgICBjb25zdCByZXN1bHQgPSBhd2FpdCB0aGlzLmV4cG9ydFNlcnZpY2UuZ2VuZXJhdGVUZW1wbGF0ZShleGNlbFRlbXBsYXRlKS5maW5hbGx5KCgpID0+IHtcclxuICAgICAgdGhpcy5pc0Rvd25sb2FkVGVtcGxhdGUgPSBmYWxzZTtcclxuICAgIH0pO1xyXG4gICAgaWYgKHJlc3VsdD8uZmlsZVBhdGgpIHtcclxuICAgICAgdGhpcy5leHBvcnRTZXJ2aWNlLmRvd25sb2FkKHJlc3VsdC5maWxlUGF0aCwgZXhjZWxUZW1wbGF0ZS5maWxlTmFtZSB8fCAnVGVtcGxhdGUueGxzeCcpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgZXhwb3J0ID0gYXN5bmMgKCkgPT4ge1xyXG4gICAgdGhpcy5sb2FkaW5nU2VydmljZS5zdGFydCgpO1xyXG4gICAgY29uc3QgY29sdW1uczogRXhwb3J0VGVtcGF0ZUNvbHVtbltdID0gW3tcclxuICAgICAgZmllbGQ6ICdzZE1lc3NhZ2UnLFxyXG4gICAgICB0aXRsZTogdGhpcy50cmFuc2xhdGVTZXJ2aWNlLnRyYW5zbGF0ZSgnVXBsb2FkIG1lc3NhZ2UnKSxcclxuICAgICAgd2lkdGg6ICcyNTBweCcsXHJcbiAgICAgIHJlcXVpcmVkOiBmYWxzZVxyXG4gICAgfSwgLi4uIHRoaXMub3B0aW9uLmNvbHVtbnMuZmlsdGVyKGNvbHVtbiA9PiB0aGlzLnNkQ29sdW1uSGlkZGVuLnRyYW5zZm9ybShjb2x1bW4pKV07XHJcbiAgICBhd2FpdCB0aGlzLmV4cG9ydFNlcnZpY2UuZXhwb3J0KHtcclxuICAgICAgY29sdW1ucyxcclxuICAgICAgaXRlbXM6IHRoaXMuZmlsdGVyZWRJdGVtcy5tYXAoZSA9PiB7XHJcbiAgICAgICAgbGV0IHJlc3VsdCA9IHtcclxuICAgICAgICAgIHNkTWVzc2FnZTogKGUuc2QudmFsaWRhdGlvbj8uZXJyb3IgfHwgZS5zZC52YWxpZGF0aW9uPy53YXJuaW5nIHx8IGUuc2QudmFsaWRhdGlvbj8uc3VjY2Vzcyk/LnJlcGxhY2UoLzxzdHJvbmc+L2csICcnKVxyXG4gICAgICAgICAgICAucmVwbGFjZSgvPFxcL3N0cm9uZz4vZywgJycpXHJcbiAgICAgICAgICAgIC5yZXBsYWNlKC88YnI+L2csICdcXG4nKVxyXG4gICAgICAgIH07XHJcbiAgICAgICAgZm9yIChjb25zdCBjb2x1bW4gb2YgY29sdW1ucykge1xyXG4gICAgICAgICAgcmVzdWx0ID0ge1xyXG4gICAgICAgICAgICAuLi5yZXN1bHQsXHJcbiAgICAgICAgICAgIFtjb2x1bW4uZmllbGRdOiBlLnNkLm9yaWdpbj8uW2NvbHVtbi5maWVsZF1cclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIHJlc3VsdDtcclxuICAgICAgfSlcclxuICAgIH0pLmZpbmFsbHkodGhpcy5sb2FkaW5nU2VydmljZS5zdG9wKTtcclxuICB9XHJcblxyXG4gICNpbXBvcnQgPSAoKSA9PiB7XHJcbiAgICBjb25zdCB7IHRyYW5zbGF0ZSB9ID0gdGhpcy50cmFuc2xhdGVTZXJ2aWNlO1xyXG4gICAgcmV0dXJuIG5ldyBQcm9taXNlPHsgaXRlbXM6IGFueVtdLCBmaWxlOiBGaWxlIH0+KChyZXNvbHZlLCByZWplY3QpID0+IHtcclxuICAgICAgaWYgKCQoYCMke3RoaXMuaW1wb3J0SWR9YCkubGVuZ3RoKSB7XHJcbiAgICAgICAgJCgnYm9keScpLmNoaWxkcmVuKGAjJHt0aGlzLmltcG9ydElkfWApLnJlbW92ZSgpO1xyXG4gICAgICB9XHJcbiAgICAgICQoJ2JvZHknKS5hcHBlbmQoYDxpbnB1dCBpZD1cIiR7dGhpcy5pbXBvcnRJZH1cIiBzdHlsZT1cImRpc3BsYXk6IG5vbmVcIiB0eXBlPVwiZmlsZVwiIC8+YCk7XHJcblxyXG4gICAgICAkKGAjJHt0aGlzLmltcG9ydElkfWApLm9uKCdjaGFuZ2UnLCAoZXZ0OiBhbnkpID0+IHtcclxuICAgICAgICB0cnkge1xyXG4gICAgICAgICAgY29uc3QgdGFyZ2V0OiBEYXRhVHJhbnNmZXIgPSBldnQudGFyZ2V0O1xyXG4gICAgICAgICAgaWYgKHRhcmdldC5maWxlcy5sZW5ndGggIT09IDEpIHtcclxuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKHRyYW5zbGF0ZSgnQ2Fubm90IHVzZSBtdWx0aXBsZSBmaWxlcycpKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIGNvbnN0IGZpbGUgPSB0YXJnZXQuZmlsZXNbMF07XHJcbiAgICAgICAgICBjb25zdCBsYXN0RG90ID0gZmlsZS5uYW1lLmxhc3RJbmRleE9mKCcuJyk7XHJcbiAgICAgICAgICBpZiAobGFzdERvdCA9PT0gLTEpIHtcclxuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKHRyYW5zbGF0ZSgnSW52YWxpZCBmaWxlIGV4dGVuc2lvbicpKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIGNvbnN0IGV4dGVuc2lvbiA9IGZpbGUubmFtZS5zdWJzdHJpbmcobGFzdERvdCArIDEpO1xyXG4gICAgICAgICAgaWYgKGV4dGVuc2lvbi50b0xvd2VyQ2FzZSgpICE9PSAneGxzeCcpIHtcclxuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKHRyYW5zbGF0ZSgnUGxlYXNlIHVwbG9hZCAueGxzeCBmaWxlJykpO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgY29uc3QgcmVhZGVyOiBGaWxlUmVhZGVyID0gbmV3IEZpbGVSZWFkZXIoKTtcclxuICAgICAgICAgIHJlYWRlci5vbmxvYWQgPSAoZTogYW55KSA9PiB7XHJcbiAgICAgICAgICAgIGNvbnN0IGJzdHI6IHN0cmluZyA9IGUudGFyZ2V0LnJlc3VsdDtcclxuICAgICAgICAgICAgY29uc3Qgd2I6IFhMU1guV29ya0Jvb2sgPSBYTFNYLnJlYWQoYnN0ciwgeyB0eXBlOiAnYmluYXJ5JyB9KTtcclxuICAgICAgICAgICAgY29uc3Qgd3NuYW1lOiBzdHJpbmcgPSB3Yi5TaGVldE5hbWVzWzBdO1xyXG4gICAgICAgICAgICBjb25zdCB3czogWExTWC5Xb3JrU2hlZXQgPSB3Yi5TaGVldHNbd3NuYW1lXTtcclxuICAgICAgICAgICAgY29uc3QgbGluZXM6IEFPQSA9IChYTFNYLnV0aWxzLnNoZWV0X3RvX2pzb24od3MsIHsgaGVhZGVyOiAxIH0pKTtcclxuICAgICAgICAgICAgY29uc3QgcmVjb3JkcyA9IFtdO1xyXG4gICAgICAgICAgICBjb25zdCBoZWFkZXJzID0gbGluZXNbMF07XHJcbiAgICAgICAgICAgIGxpbmVzLnNwbGljZSgwLCAxKTtcclxuICAgICAgICAgICAgbGluZXMuZm9yRWFjaChsaW5lID0+IHtcclxuICAgICAgICAgICAgICBjb25zdCByZWNvcmQgPSB7fTtcclxuICAgICAgICAgICAgICBsZXQgaGFzVmFsdWUgPSBmYWxzZTtcclxuICAgICAgICAgICAgICBoZWFkZXJzLmZvckVhY2goKGhlYWRlciwgaW5kZXgpID0+IHtcclxuICAgICAgICAgICAgICAgIHJlY29yZFtoZWFkZXJdID0gbGluZVtpbmRleF07XHJcbiAgICAgICAgICAgICAgICBpZiAobGluZVtpbmRleF0gIT09IHVuZGVmaW5lZCAmJiBsaW5lW2luZGV4XSAhPT0gbnVsbCAmJiBsaW5lW2luZGV4XS50b1N0cmluZygpKSB7XHJcbiAgICAgICAgICAgICAgICAgIGhhc1ZhbHVlID0gdHJ1ZTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIGlmICh0eXBlb2YgKHJlY29yZFtoZWFkZXJdKSA9PT0gJ3N0cmluZycpIHtcclxuICAgICAgICAgICAgICAgICAgcmVjb3JkW2hlYWRlcl0gPSByZWNvcmRbaGVhZGVyXS50cmltKCk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBpZiAocmVjb3JkW2hlYWRlcl0gPT09ICcnIHx8IHJlY29yZFtoZWFkZXJdID09PSB1bmRlZmluZWQpIHtcclxuICAgICAgICAgICAgICAgICAgcmVjb3JkW2hlYWRlcl0gPSBudWxsO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICAgIGlmIChoYXNWYWx1ZSkge1xyXG4gICAgICAgICAgICAgICAgcmVjb3Jkcy5wdXNoKHJlY29yZCk7XHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgcmVzb2x2ZSh7XHJcbiAgICAgICAgICAgICAgaXRlbXM6IHJlY29yZHMsXHJcbiAgICAgICAgICAgICAgZmlsZTogdGFyZ2V0LmZpbGVzWzBdXHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgfTtcclxuICAgICAgICAgIHJlYWRlci5yZWFkQXNCaW5hcnlTdHJpbmcodGFyZ2V0LmZpbGVzWzBdKTtcclxuICAgICAgICB9IGNhdGNoIChlcnJvcikge1xyXG4gICAgICAgICAgcmVqZWN0KGVycm9yKTtcclxuICAgICAgICB9XHJcbiAgICAgIH0pO1xyXG4gICAgICAkKGAjJHt0aGlzLmltcG9ydElkfWApLnRyaWdnZXIoJ2NsaWNrJyk7XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gICNpc1ZhbGlkRGF0ZSA9IChmb3JtYXQ6IHN0cmluZywgdmFsdWU6IHN0cmluZykgPT4ge1xyXG4gICAgaWYgKHZhbHVlPy5sZW5ndGggIT09IGZvcm1hdD8ubGVuZ3RoKSB7XHJcbiAgICAgIHJldHVybiBmYWxzZTtcclxuICAgIH1cclxuICAgIGNvbnN0IHJlZ2V4ID0gL14oPzooPzozMShcXC98LXxcXC4pKD86MD9bMTM1NzhdfDFbMDJdKSlcXDF8KD86KD86Mjl8MzApKFxcL3wtfFxcLikoPzowP1sxMy05XXwxWzAtMl0pXFwyKSkoPzooPzoxWzYtOV18WzItOV1cXGQpP1xcZHsyfSkkfF4oPzoyOShcXC98LXxcXC4pMD8yXFwzKD86KD86KD86MVs2LTldfFsyLTldXFxkKT8oPzowWzQ4XXxbMjQ2OF1bMDQ4XXxbMTM1NzldWzI2XSl8KD86KD86MTZ8WzI0NjhdWzA0OF18WzM1NzldWzI2XSkwMCkpKSkkfF4oPzowP1sxLTldfDFcXGR8MlswLThdKShcXC98LXxcXC4pKD86KD86MD9bMS05XSl8KD86MVswLTJdKSlcXDQoPzooPzoxWzYtOV18WzItOV1cXGQpP1xcZHsyfSkkLztcclxuICAgIHJldHVybiByZWdleC50ZXN0KHZhbHVlKTtcclxuICB9XHJcblxyXG4gICNpc1ZhbGlkVGltZSA9IChmb3JtYXQ6IHN0cmluZywgdmFsdWU6IHN0cmluZykgPT4ge1xyXG4gICAgaWYgKHZhbHVlPy5sZW5ndGggIT09IGZvcm1hdD8ubGVuZ3RoKSB7XHJcbiAgICAgIHJldHVybiBmYWxzZTtcclxuICAgIH1cclxuICAgIHJldHVybiB0cnVlO1xyXG4gIH1cclxuXHJcbiAgI2lzVmFsaWREYXRlVGltZSA9IChmb3JtYXQ6IHN0cmluZywgdmFsdWU6IHN0cmluZykgPT4ge1xyXG4gICAgaWYgKHZhbHVlPy5sZW5ndGggIT09IGZvcm1hdD8ubGVuZ3RoKSB7XHJcbiAgICAgIHJldHVybiBmYWxzZTtcclxuICAgIH1cclxuICAgIGNvbnN0IGRhdGVzID0gdmFsdWU/LnNwbGl0KCcgJyk7XHJcbiAgICBpZiAoZGF0ZXMubGVuZ3RoICE9PSAyKSB7XHJcbiAgICAgIHJldHVybiBmYWxzZTtcclxuICAgIH1cclxuICAgIGNvbnN0IGRhdGUgPSBkYXRlc1swXTtcclxuICAgIGlmICghdGhpcy4jaXNWYWxpZERhdGUoJ2RkL01NL3l5eXknLCBkYXRlKSkge1xyXG4gICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICB9XHJcbiAgICBjb25zdCB0aW1lID0gZGF0ZXNbMV07XHJcbiAgICBjb25zdCByZWdleCA9IC9eKDBbMC05XXwxWzAtOV18MlswLTNdKShcXDopKDBbMC05XXxbMC01XVswLTldKSQvO1xyXG4gICAgcmV0dXJuIHJlZ2V4LnRlc3QodGltZSk7XHJcbiAgfVxyXG59XHJcblxyXG5pbnRlcmZhY2UgRXhjZWxJdGVtIHtcclxuICB2YWxpZGF0aW9uOiBTZFVwbG9hZEV4Y2VsVmFsaWRhdGlvbjtcclxuICBzZE9yaWdpbjogYW55O1xyXG4gIGV4Y2VsSW5kZXg6IG51bWJlcjtcclxuICBbY29sdW1uOiBzdHJpbmddOiBhbnk7XHJcbn1cclxuIl19
|
|
515
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXBsb2FkLWV4Y2VsLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiJDOi9Vc2Vycy9uZ2hpYXR0MTVfb25lbW91bnQvRG9jdW1lbnRzL2xpYi1jb3JlLXVpL3Byb2plY3RzL3NkLWNvcmUvdXBsb2FkLWV4Y2VsLyIsInNvdXJjZXMiOlsic3JjL2xpYi91cGxvYWQtZXhjZWwuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7O0FBQUEsT0FBTyxFQUFFLFNBQVMsRUFBVSxLQUFLLEVBQUUsU0FBUyxFQUFFLGlCQUFpQixFQUFhLE1BQU0sZUFBZSxDQUFDO0FBQ2xHLE9BQU8sS0FBSyxJQUFJLE1BQU0sTUFBTSxDQUFDO0FBQzdCLE9BQU8sQ0FBQyxNQUFNLFFBQVEsQ0FBQztBQUN2QixPQUFPLElBQUksTUFBTSxNQUFNLENBQUM7QUFNeEIsT0FBTyxFQUNMLGVBQWUsRUFDaEIsTUFBTSx5QkFBeUIsQ0FBQztBQUVqQyxPQUFPLEVBQ0wsZ0JBQWdCLEVBQ2pCLE1BQU0sMEJBQTBCLENBQUM7QUFFbEMsT0FBTyxFQUNMLGtCQUFrQixFQUNuQixNQUFNLDRCQUE0QixDQUFDO0FBQ3BDLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQztBQUMzRCxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBR3BDLE9BQU8sRUFBdUIsZUFBZSxFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDL0UsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFRaEUsTUFBTSxPQUFPLGFBQWE7SUEwQnhCLFlBQ1UsR0FBc0IsRUFDdEIsYUFBOEIsRUFDOUIsZ0JBQW9DLEVBQ3BDLGFBQThCLEVBQzlCLGNBQWtDLEVBQ2xDLGNBQWdDO1FBTGhDLFFBQUcsR0FBSCxHQUFHLENBQW1CO1FBQ3RCLGtCQUFhLEdBQWIsYUFBYSxDQUFpQjtRQUM5QixxQkFBZ0IsR0FBaEIsZ0JBQWdCLENBQW9CO1FBQ3BDLGtCQUFhLEdBQWIs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TSxDQUFDLFFBQVEsS0FBSyxTQUFTLElBQUksSUFBSSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsR0FBRyxNQUFNLENBQUMsUUFBUSxFQUFFOzRCQUN6RSxVQUFVLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQyxLQUFLLEdBQUcsR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxJQUFJLFNBQVMsQ0FBQyxXQUFXLENBQUMsS0FBSyxNQUFNLENBQUMsUUFBUSxFQUFFLENBQUM7NEJBQzVHLE1BQU0sQ0FBQyxJQUFJLENBQUMsWUFBWSxNQUFNLENBQUMsS0FBSyxJQUFJLE1BQU0sQ0FBQyxLQUFLLGNBQWMsVUFBVSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUMsS0FBSyxFQUFFLENBQUMsQ0FBQzs0QkFDekcsU0FBUzt5QkFDVjtxQkFDRjt5QkFBTSxJQUFJLE1BQU0sQ0FBQyxJQUFJLEtBQUssTUFBTSxFQUFFO3dCQUNqQyxJQUFJLElBQUksQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxJQUFJLElBQUksQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLEtBQUssS0FBSyxFQUFFOzRCQUM1RCxJQUFJLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxHQUFHLEdBQUcsQ0FBQzt5QkFDMUI7d0JBQ0QsSUFBSSxJQUFJLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsSUFBSSxJQUFJLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxLQUFLLElBQUksRUFBRTs0QkFDM0QsSUFBSSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsR0FBRyxHQUFHLENBQUM7eUJBQzFCO3dCQUVELElBQUksSUFBSSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsRUFBRTs0QkFDdEIsTUFBTSxLQUFLLEdBQUcsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDOzRCQUNsQyxJQUFJLE1BQU0sQ0FBQyxLQUFLLENBQUMsS0FB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QyxFQUFBO0lBeGRELENBQUM7SUFqQkQsSUFBNkIsU0FBUyxDQUFDLFNBQXVCO1FBQzVELElBQUksU0FBUyxJQUFJLDZDQUFvQixTQUFTLEVBQUU7WUFDOUMsdUJBQUEsSUFBSSxjQUFjLFNBQVMsRUFBQztZQUM1Qiw0Q0FBbUIsR0FBRyxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsU0FBUyx1Q0FBYyxDQUFDLENBQUM7U0FDaEU7SUFDSCxDQUFDO0lBY0QsUUFBUTtRQUNOLElBQUksQ0FBQyxVQUFVLEdBQUcsS0FBSyxDQUFDO0lBQzFCLENBQUM7SUFFRCxXQUFXO1FBQ1QsNENBQW1CLFdBQVcsRUFBRSxDQUFDO0lBQ25DLENBQUM7Ozs7WUE5Q0YsU0FBUyxTQUFDO2dCQUNULFFBQVEsRUFBRSxpQkFBaUI7Z0JBQzNCLDI0TkFBNEM7O2FBRTdDOzs7WUFoQzZDLGlCQUFpQjtZQXdCakMsZUFBZTtZQU4zQyxrQkFBa0I7WUFSbEIsZUFBZTtZQWVSLGtCQUFrQjtZQVh6QixnQkFBZ0I7OztxQkFxQmYsS0FBSztvQkFDTCxTQUFTLFNBQUMsT0FBTzt3QkFhakIsU0FBUyxTQUFDLFlBQVkiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIE9uSW5pdCwgSW5wdXQsIFZpZXdDaGlsZCwgQ2hhbmdlRGV0ZWN0b3JSZWYsIE9uRGVzdHJveSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgKiBhcyB1dWlkIGZyb20gJ3V1aWQnO1xyXG5pbXBvcnQgJCBmcm9tICdqcXVlcnknO1xyXG5pbXBvcnQgWExTWCBmcm9tICd4bHN4JztcclxuXHJcbmltcG9ydCB7XHJcbiAgU2RFeGNlbFNlcnZpY2UsIEV4Y2VsVGVtcGxhdGVcclxufSBmcm9tICdAc2QtYW5ndWxhci9jb3JlL2V4Y2VsJztcclxuXHJcbmltcG9ydCB7XHJcbiAgU2ROb3RpZnlTZXJ2aWNlXHJcbn0gZnJvbSAnQHNkLWFuZ3VsYXIvY29yZS9ub3RpZnknO1xyXG5cclxuaW1wb3J0IHtcclxuICBTZExvYWRpbmdTZXJ2aWNlXHJcbn0gZnJvbSAnQHNkLWFuZ3VsYXIvY29yZS9sb2FkaW5nJztcclxuXHJcbmltcG9ydCB7XHJcbiAgU2RUcmFuc2xhdGVTZXJ2aWNlXHJcbn0gZnJvbSAnQHNkLWFuZ3VsYXIvY29yZS90cmFuc2xhdGUnO1xyXG5pbXBvcnQgeyBNYXRQYWdpbmF0b3IgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9wYWdpbmF0b3InO1xyXG5pbXBvcnQgeyBTdWJzY3JpcHRpb24gfSBmcm9tICdyeGpzJztcclxuaW1wb3J0IHsgU2RNb2RhbCB9IGZyb20gJ0BzZC1hbmd1bGFyL2NvcmUvbW9kYWwnO1xyXG5pbXBvcnQgeyBTZEV4Y2VsSXRlbSwgU2RVcGxvYWRFeGNlbE9wdGlvbiwgU2RVcGxvYWRFeGNlbFZhbGlkYXRpb24gfSBmcm9tICcuL3VwbG9hZC1leGNlbC5tb2RlbCc7XHJcbmltcG9ydCB7IEV4cG9ydFRlbXBhdGVDb2x1bW4sIFNkRXhwb3J0U2VydmljZSB9IGZyb20gJ0BzZC1hbmd1bGFyL2NvcmUvZXhwb3J0JztcclxuaW1wb3J0IHsgU2RDb2x1bW5IaWRkZW5QaXBlIH0gZnJvbSAnLi9waXBlcy9jb2x1bW0taGlkZGVuLnBpcGUnO1xyXG50eXBlIEFPQSA9IEFycmF5PEFycmF5PGFueT4+O1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICdzZC11cGxvYWQtZXhjZWwnLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi91cGxvYWQtZXhjZWwuY29tcG9uZW50Lmh0bWwnLFxyXG4gIHN0eWxlVXJsczogWycuL3VwbG9hZC1leGNlbC5jb21wb25lbnQuc2NzcyddXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBTZFVwbG9hZEV4Y2VsIGltcGxlbWVudHMgT25Jbml0LCBPbkRlc3Ryb3kge1xyXG4gIHByaXZhdGUgaW1wb3J0SWQgPSAnSScgKyB1dWlkLnY0KCk7XHJcbiAgQElucHV0KCkgb3B0aW9uOiBTZFVwbG9hZEV4Y2VsT3B0aW9uO1xyXG4gIEBWaWV3Q2hpbGQoJ21vZGFsJykgbW9kYWw6IFNkTW9kYWw7XHJcbiAgaXRlbXM6IFNkRXhjZWxJdGVtW10gPSBbXTtcclxuICAvLyBvcmlnaW5JdGVtczogU2RFeGNlbEl0ZW1bXSA9IFtdO1xyXG4gIGhhc0Rlc2NyaXB0aW9uID0gZmFsc2U7XHJcblxyXG4gIHNob3dpbmc6ICdBTEwnIHwgJ1NVQ0NFU1MnIHwgJ1dBUk5JTkcnIHwgJ0VSUk9SJyA9ICdBTEwnO1xyXG4gIGZpbHRlcmVkSXRlbXM6IFNkRXhjZWxJdGVtW10gPSBbXTtcclxuICB2aWV3SXRlbXM6IFNkRXhjZWxJdGVtW10gPSBbXTtcclxuICBudW1iZXJPZlN1Y2Nlc3MgPSAwO1xyXG4gIG51bWJlck9mRXJyb3IgPSAwO1xyXG4gIG51bWJlck9mV2FybmluZyA9IDA7XHJcbiAgZmlsZTogRmlsZTtcclxuICAjcGFnaW5hdG9yOiBNYXRQYWdpbmF0b3I7XHJcbiAgQFZpZXdDaGlsZChNYXRQYWdpbmF0b3IpIHNldCBwYWdpbmF0b3IocGFnaW5hdG9yOiBNYXRQYWdpbmF0b3IpIHtcclxuICAgIGlmIChwYWdpbmF0b3IgJiYgdGhpcy4jcGFnaW5hdG9yICE9PSBwYWdpbmF0b3IpIHtcclxuICAgICAgdGhpcy4jcGFnaW5hdG9yID0gcGFnaW5hdG9yO1xyXG4gICAgICB0aGlzLiNzdWJzY3JpcHRpb24uYWRkKHBhZ2luYXRvci5wYWdlLnN1YnNjcmliZSh0aGlzLiNyZWxvYWQpKTtcclxuICAgIH1cclxuICB9XHJcbiAgI3N1YnNjcmlwdGlvbiA9IG5ldyBTdWJzY3JpcHRpb24oKTtcclxuICB1cGxvYWRpbmc6IGJvb2xlYW47XHJcbiAgaXNVcGxvYWRlZDogYm9vbGVhbjtcclxuICBpc0Rvd25sb2FkVGVtcGxhdGUgPSBmYWxzZTtcclxuICBjb25zdHJ1Y3RvcihcclxuICAgIHByaXZhdGUgcmVmOiBDaGFuZ2VEZXRlY3RvclJlZixcclxuICAgIHByaXZhdGUgZXhwb3J0U2VydmljZTogU2RFeHBvcnRTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSB0cmFuc2xhdGVTZXJ2aWNlOiBTZFRyYW5zbGF0ZVNlcnZpY2UsXHJcbiAgICBwcml2YXRlIG5vdGlmeVNlcnZpY2U6IFNkTm90aWZ5U2VydmljZSxcclxuICAgIHByaXZhdGUgc2RDb2x1bW5IaWRkZW46IFNkQ29sdW1uSGlkZGVuUGlwZSxcclxuICAgIHByaXZhdGUgbG9hZGluZ1NlcnZpY2U6IFNkTG9hZGluZ1NlcnZpY2UpIHtcclxuICB9XHJcblxyXG4gIG5nT25Jbml0KCkge1xyXG4gICAgdGhpcy5pc1VwbG9hZGVkID0gZmFsc2U7XHJcbiAgfVxyXG5cclxuICBuZ09uRGVzdHJveSgpIHtcclxuICAgIHRoaXMuI3N1YnNjcmlwdGlvbi51bnN1YnNjcmliZSgpO1xyXG4gIH1cclxuXHJcbiAgb3BlbiA9ICgpID0+IHtcclxuICAgIHRoaXMuI3Jlc2V0KCk7XHJcbiAgICB0aGlzLm1vZGFsLm9wZW4oKTtcclxuICB9XHJcblxyXG4gIGNsb3NlID0gKCkgPT4ge1xyXG4gICAgdGhpcy5tb2RhbC5jbG9zZSgpO1xyXG4gIH1cclxuXHJcbiAgI3Jlc2V0ID0gKCkgPT4ge1xyXG4gICAgdGhpcy5pdGVtcyA9IFtdO1xyXG4gICAgdGhpcy5maWx0ZXJlZEl0ZW1zID0gW107XHJcbiAgICB0aGlzLnZpZXdJdGVtcyA9IFtdO1xyXG4gICAgdGhpcy5udW1iZXJPZlN1Y2Nlc3MgPSAwO1xyXG4gICAgdGhpcy5udW1iZXJPZkVycm9yID0gMDtcclxuICAgIHRoaXMubnVtYmVyT2ZXYXJuaW5nID0gMDtcclxuICAgIHRoaXMuc2hvd2luZyA9ICdBTEwnO1xyXG4gIH1cclxuXHJcbiAgI3JlbG9hZCA9ICgpID0+IHtcclxuICAgIGNvbnN0IHBhZ2VJbmRleCA9IHRoaXMuI3BhZ2luYXRvci5wYWdlSW5kZXg7XHJcbiAgICBjb25zdCBwYWdlU2l6ZSA9IHRoaXMuI3BhZ2luYXRvci5wYWdlU2l6ZTtcclxuICAgIHRoaXMuZmlsdGVyZWRJdGVtcyA9IHRoaXMuaXRlbXMuZmlsdGVyKChpdGVtKSA9PiB7XHJcbiAgICAgIGNvbnN0IHsgdmFsaWRhdGlvbiB9ID0gaXRlbS5zZDtcclxuICAgICAgaWYgKHRoaXMuc2hvd2luZyA9PT0gJ1NVQ0NFU1MnKSB7XHJcbiAgICAgICAgcmV0dXJuICF2YWxpZGF0aW9uPy5lcnJvciAmJiAhdmFsaWRhdGlvbj8ud2FybmluZztcclxuICAgICAgfSBlbHNlIGlmICh0aGlzLnNob3dpbmcgPT09ICdXQVJOSU5HJykge1xyXG4gICAgICAgIHJldHVybiAhIXZhbGlkYXRpb24/Lndhcm5pbmcgJiYgIXZhbGlkYXRpb24/LmVycm9yO1xyXG4gICAgICB9IGVsc2UgaWYgKHRoaXMuc2hvd2luZyA9PT0gJ0VSUk9SJykge1xyXG4gICAgICAgIHJldHVybiAhIXZhbGlkYXRpb24/LmVycm9yO1xyXG4gICAgICB9XHJcbiAgICAgIHJldHVybiB0cnVlO1xyXG4gICAgfSk7XHJcbiAgICB0aGlzLnZpZXdJdGVtcyA9IHRoaXMuZmlsdGVyZWRJdGVtc1xyXG4gICAgICAuZmlsdGVyKChpdGVtLCBpbmRleCkgPT4gaW5kZXggPj0gcGFnZUluZGV4ICogcGFnZVNpemUgJiYgaW5kZXggPCAocGFnZUluZGV4ICsgMSkgKiBwYWdlU2l6ZSk7XHJcblxyXG4gICAgdGhpcy5udW1iZXJPZlN1Y2Nlc3MgPSB0aGlzLml0ZW1zLmZpbHRlcih0aGlzLiNpc1N1Y2Nlc3MpLmxlbmd0aDtcclxuICAgIHRoaXMubnVtYmVyT2ZFcnJvciA9IHRoaXMuaXRlbXMuZmlsdGVyKHRoaXMuI2lzRXJyb3IpLmxlbmd0aDtcclxuICAgIHRoaXMubnVtYmVyT2ZXYXJuaW5nID0gdGhpcy5pdGVtcy5maWx0ZXIodGhpcy4jaXNXYXJuaW5nKS5sZW5ndGg7XHJcbiAgfVxyXG5cclxuICAjaXNFcnJvciA9IChpdGVtOiBTZEV4Y2VsSXRlbSkgPT4gISFpdGVtLnNkLnZhbGlkYXRpb24uZXJyb3I7XHJcbiAgI2lzV2FybmluZyA9IChpdGVtOiBTZEV4Y2VsSXRlbSkgPT4gaXRlbS5zZC52YWxpZGF0aW9uPy53YXJuaW5nICYmICFpdGVtLnNkLnZhbGlkYXRpb24/LmVycm9yO1xyXG4gICNpc1N1Y2Nlc3MgPSAoaXRlbTogU2RFeGNlbEl0ZW0pID0+ICFpdGVtLnNkLnZhbGlkYXRpb24/LmVycm9yICYmICFpdGVtLnNkLnZhbGlkYXRpb24/Lndhcm5pbmc7XHJcblxyXG4gIHVwbG9hZCA9IGFzeW5jICgpID0+IHtcclxuICAgIHRyeSB7XHJcbiAgICAgIGNvbnN0IHsgbWFwcGluZ0l0ZW1zLCBlcnJvclZhbGlkYXRpb24sIHdhcm5pbmdWYWxpZGF0aW9uIH0gPSB0aGlzLm9wdGlvbjtcclxuICAgICAgY29uc3QgeyB0cmFuc2xhdGUgfSA9IHRoaXMudHJhbnNsYXRlU2VydmljZTtcclxuICAgICAgY29uc3QgeyBpdGVtcywgZmlsZSB9ID0gYXdhaXQgdGhpcy4jaW1wb3J0KCk7XHJcbiAgICAgIHRoaXMuaGFzRGVzY3JpcHRpb24gPSB0aGlzLm9wdGlvbi5jb2x1bW5zLnNvbWUoZSA9PiAhIWUuZGVzY3JpcHRpb24pO1xyXG4gICAgICBjb25zdCBvZmZzZXQgPSB0aGlzLmhhc0Rlc2NyaXB0aW9uID8gMiA6IDE7XHJcbiAgICAgIGl0ZW1zLnNwbGljZSgwLCBvZmZzZXQpO1xyXG4gICAgICBpZiAoaXRlbXMubGVuZ3RoID09PSAwKSB7XHJcbiAgICAgICAgdGhpcy5ub3RpZnlTZXJ2aWNlLm5vdGlmeS53YXJuaW5nKGAke3RyYW5zbGF0ZShgTm8gZGF0YSB0byBpbXBvcnRgKX1gKTtcclxuICAgICAgICByZXR1cm47XHJcbiAgICAgIH1cclxuICAgICAgaWYgKGl0ZW1zLmxlbmd0aCA+IHRoaXMub3B0aW9uLmxpbWl0KSB7XHJcbiAgICAgICAgdGhpcy5ub3RpZnlTZXJ2aWNlLm5vdGlmeS53YXJuaW5nKGAke3RyYW5zbGF0ZShgTGltaXQgcm93c2ApfTogJHt0aGlzLm9wdGlvbi5saW1pdH1gKTtcclxuICAgICAgICByZXR1cm47XHJcbiAgICAgIH1cclxuICAgICAgdGhpcy4jcmVzZXQoKTtcclxuICAgICAgLy8gdGhpcy5vcmlnaW5JdGVtcyA9IGl0ZW1zLm1hcChkYXRhID0+ICh7XHJcbiAgICAgIC8vICAgZGF0YSxcclxuICAgICAgLy8gICBzZDoge31cclxuICAgICAgLy8gfSkpO1xyXG4gICAgICB0aGlzLml0ZW1zID0gaXRlbXMubWFwKChkYXRhLCBpZHgpID0+ICh7XHJcbiAgICAgICAgZGF0YSxcclxuICAgICAgICBzZDoge1xyXG4gICAgICAgICAgZXhjZWxJbmRleDogaWR4ICsgKHRoaXMuaGFzRGVzY3JpcHRpb24gPyA0IDogMyksXHJcbiAgICAgICAgICB2YWxpZGF0aW9uOiB7XHJcbiAgICAgICAgICAgIGRhdGE6IHt9XHJcbiAgICAgICAgICB9LFxyXG4gICAgICAgICAgb3JpZ2luOiB7IC4uLmRhdGEgfVxyXG4gICAgICAgIH1cclxuICAgICAgfSkpO1xyXG5cclxuICAgICAgaWYgKG1hcHBpbmdJdGVtcykge1xyXG4gICAgICAgIGNvbnN0IG1hcHBlZEl0ZW1zID0gbWFwcGluZ0l0ZW1zKHRoaXMuaXRlbXMpO1xyXG4gICAgICAgIGlmIChtYXBwZWRJdGVtcyBpbnN0YW5jZW9mIFByb21pc2UpIHtcclxuICAgICAgICAgIHRoaXMudXBsb2FkaW5nID0gdHJ1ZTtcclxuICAgICAgICAgIHRoaXMuaXRlbXMgPSAoYXdhaXQgbWFwcGVkSXRlbXMuZmluYWxseSgoKSA9PiB0aGlzLnVwbG9hZGluZyA9IGZhbHNlKSk7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgIHRoaXMuaXRlbXMgPSAobWFwcGVkSXRlbXMgfHwgdGhpcy5pdGVtcyk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICAgIHRoaXMuZmlsZSA9IGZpbGU7XHJcbiAgICAgIHRoaXMubG9hZGluZ1NlcnZpY2Uuc3RhcnQoKTtcclxuICAgICAgZm9yIChjb25zdCBpdGVtIG9mIHRoaXMuaXRlbXMpIHtcclxuICAgICAgICBhd2FpdCB0aGlzLnZhbGlkYXRlKGl0ZW0pO1xyXG4gICAgICB9XHJcblxyXG4gICAgICAvLyBO4bq/dSBraMO0bmcgY8OzIGVycm9yIHRow6wgdGnhur9wIHThu6VjIHZhbGlkYXRlIHThu6sgb3B0aW9uIHZhbGlkYXRlIHRydXnhu4FuIHbDoG9cclxuICAgICAgaWYgKCF0aGlzLml0ZW1zLnNvbWUodGhpcy4jaXNFcnJvcikgJiYgZXJyb3JWYWxpZGF0aW9uKSB7XHJcbiAgICAgICAgY29uc3QgcmVzdWx0cyA9IGF3YWl0IGVycm9yVmFsaWRhdGlvbih0aGlzLml0ZW1zLm1hcChlPT5lLmRhdGEpKTtcclxuICAgICAgICByZXN1bHRzLmZvckVhY2gocmVzdWx0ID0+IHRoaXMuaXRlbXNbcmVzdWx0LmlkeF0uc2QudmFsaWRhdGlvbi5lcnJvciA9IHJlc3VsdC5tZXNzYWdlKTtcclxuICAgICAgfVxyXG5cclxuICAgICAgLy8gTuG6v3Uga2jDtG5nIGPDsyB3YXJuaW5nIHRow6wgdGnhur9wIHThu6VjIHZhbGlkYXRlIHThu6sgb3B0aW9uIHZhbGlkYXRlIHRydXnhu4FuIHbDoG9cclxuICAgICAgaWYgKCF0aGlzLml0ZW1zLnNvbWUodGhpcy4jaXNXYXJuaW5nKSAmJiB3YXJuaW5nVmFsaWRhdGlvbikge1xyXG4gICAgICAgIGNvbnN0IHJlc3VsdHMgPSBhd2FpdCB3YXJuaW5nVmFsaWRhdGlvbih0aGlzLml0ZW1zLm1hcChlPT5lLmRhdGEpKTtcclxuICAgICAgICByZXN1bHRzLmZvckVhY2gocmVzdWx0ID0+IHRoaXMuaXRlbXNbcmVzdWx0LmlkeF0uc2QudmFsaWRhdGlvbi53YXJuaW5nID0gcmVzdWx0Lm1lc3NhZ2UpO1xyXG4gICAgICB9XHJcblxyXG4gICAgICB0aGlzLiNwYWdpbmF0b3IucGFnZUluZGV4ID0gMDtcclxuICAgICAgdGhpcy4jcmVsb2FkKCk7XHJcbiAgICAgIHRoaXMucmVmLmRldGVjdENoYW5nZXMoKTtcclxuXHJcbiAgICAgIHRoaXMuaXNVcGxvYWRlZCA9IGZhbHNlO1xyXG4gICAgfSBjYXRjaCAoZXJyKSB7XHJcbiAgICAgIHRoaXMubm90aWZ5U2VydmljZS5oYW5kbGUuZXJyb3IoZXJyKTtcclxuICAgIH0gZmluYWxseSB7XHJcbiAgICAgIHRoaXMubG9hZGluZ1NlcnZpY2Uuc3RvcCgpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgdmFsaWRhdGUgPSBhc3luYyAoZXhjZWxJdGVtOiBTZEV4Y2VsSXRlbSkgPT4ge1xyXG4gICAgY29uc3QgeyBkYXRhOiBpdGVtLCBzZDogeyB2YWxpZGF0aW9uIH0gfSA9IGV4Y2VsSXRlbTtcclxuICAgIGNvbnN0IHsgdHJhbnNsYXRlIH0gPSB0aGlzLnRyYW5zbGF0ZVNlcnZpY2U7XHJcbiAgICBmb3IgKGNvbnN0IGNvbHVtbiBvZiB0aGlzLm9wdGlvbi5jb2x1bW5zKSB7XHJcbiAgICAgIHZhbGlkYXRpb24uZGF0YVtjb2x1bW4uZmllbGRdID0ge307XHJcbiAgICAgIGlmICghdGhpcy5zZENvbHVtbkhpZGRlbi50cmFuc2Zvcm0oY29sdW1uKSkge1xyXG4gICAgICAgIGNvbnRpbnVlO1xyXG4gICAgICB9XHJcbiAgICAgIGNvbnN0IGVycm9yczogc3RyaW5nW10gPSBbXTtcclxuICAgICAgdHJ5IHtcclxuICAgICAgICBpZiAoY29sdW1uLmRlZmF1bHRWYWx1ZSAhPT0gdW5kZWZpbmVkKSB7XHJcbiAgICAgICAgICBpdGVtW2NvbHVtbi5maWVsZF0gPSBpdGVtW2NvbHVtbi5maWVsZF0gPz8gY29sdW1uLmRlZmF1bHRWYWx1ZTtcclxuICAgICAgICB9IGVsc2UgaWYgKGNvbHVtbi5yZXF1aXJlZCAmJiAhaXRlbVtjb2x1bW4uZmllbGRdICYmIGl0ZW1bY29sdW1uLmZpZWxkXSAhPT0gMCkge1xyXG4gICAgICAgICAgdmFsaWRhdGlvbi5kYXRhW2NvbHVtbi5maWVsZF0uZXJyb3IgPSBgJHt0cmFuc2xhdGUoJ3JlcXVpcmVkJyl9YDtcclxuICAgICAgICAgIGVycm9ycy5wdXNoKGA8c3Ryb25nPlske2NvbHVtbi50aXRsZSB8fCBjb2x1bW4uZmllbGR9XTwvc3Ryb25nPiAke3ZhbGlkYXRpb24uZGF0YVtjb2x1bW4uZmllbGRdLmVycm9yfWApO1xyXG4gICAgICAgICAgY29udGludWU7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmIChjb2x1bW4udHlwZSA9PT0gJ3N0cmluZycpIHtcclxuICAgICAgICAgIGNvbnN0IHZhbHVlID0gKGl0ZW1bY29sdW1uLmZpZWxkXSB8fCAnJykudG9TdHJpbmcoKTtcclxuICAgICAgICAgIGlmIChjb2x1bW4ubWluTGVuZ3RoICE9PSB1bmRlZmluZWQgJiYgdmFsdWUubGVuZ3RoIDwgY29sdW1uLm1pbkxlbmd0aCkge1xyXG4gICAgICAgICAgICB2YWxpZGF0aW9uLmRhdGFbY29sdW1uLmZpZWxkXS5lcnJvciA9IGAke3RyYW5zbGF0ZSgnTWluIGxlbmd0aCcpfTogJHtjb2x1bW4ubWluTGVuZ3RofWA7XHJcbiAgICAgICAgICAgIGVycm9ycy5wdXNoKGA8c3Ryb25nPlske2NvbHVtbi50aXRsZSB8fCBjb2x1bW4uZmllbGR9XTwvc3Ryb25nPiAke3ZhbGlkYXRpb24uZGF0YVtjb2x1bW4uZmllbGRdLmVycm9yfWApO1xyXG4gICAgICAgICAgICBjb250aW51ZTtcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIGlmIChjb2x1bW4ubWF4TGVuZ3RoICE9PSB1bmRlZmluZWQgJiYgdmFsdWUubGVuZ3RoID4gY29sdW1uLm1heExlbmd0aCkge1xyXG4gICAgICAgICAgICB2YWxpZGF0aW9uLmRhdGFbY29sdW1uLmZpZWxkXS5lcnJvciA9IGAke3RyYW5zbGF0ZSgnTWF4IGxlbmd0aCcpfTogJHtjb2x1bW4ubWF4TGVuZ3RofWA7XHJcbiAgICAgICAgICAgIGVycm9ycy5wdXNoKGA8c3Ryb25nPlske2NvbHVtbi50aXRsZSB8fCBjb2x1bW4uZmllbGR9XTwvc3Ryb25nPiAke3ZhbGlkYXRpb24uZGF0YVtjb2x1bW4uZmllbGRdLmVycm9yfWApO1xyXG4gICAgICAgICAgICBjb250aW51ZTtcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIGl0ZW1bY29sdW1uLmZpZWxkXSA9IHZhbHVlO1xyXG4gICAgICAgIH0gZWxzZSBpZiAoY29sdW1uLnR5cGUgPT09ICdudW1iZXInKSB7XHJcbiAgICAgICAgICBpZiAoaXRlbVtjb2x1bW4uZmllbGRdKSB7XHJcbiAgICAgICAgICAgIGNvbnN0IHZhbHVlID0gK2l0ZW1bY29sdW1uLmZpZWxkXTtcclxuICAgICAgICAgICAgaWYgKE51bWJlci5pc05hTih2YWx1ZSkpIHtcclxuICAgICAgICAgICAgICB2YWxpZGF0aW9uLmRhdGFbY29sdW1uLmZpZWxkXS5lcnJvciA9IGAke2l0ZW1bY29sdW1uLmZpZWxkXX0gJHt0cmFuc2xhdGUoJ2lzIG5vdCBhIG51bWJlcicpfWA7XHJcbiAgICAgICAgICAgICAgZXJyb3JzLnB1c2goYDxzdHJvbmc+WyR7Y29sdW1uLnRpdGxlIHx8IGNvbHVtbi5maWVsZH1dPC9zdHJvbmc+ICR7dmFsaWRhdGlvbi5kYXRhW2NvbHVtbi5maWVsZF0uZXJyb3J9YCk7XHJcbiAgICAgICAgICAgICAgY29udGludWU7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgaXRlbVtjb2x1bW4uZmllbGRdID0gdmFsdWU7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICBpZiAoIWl0ZW1bY29sdW1uLmZpZWxkXSAmJiBpdGVtW2NvbHVtbi5maWVsZF0gIT09IDApIHtcclxuICAgICAgICAgICAgaXRlbVtjb2x1bW4uZmllbGRdID0gdW5kZWZpbmVkO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgaWYgKGNvbHVtbi5taW5WYWx1ZSAhPT0gdW5kZWZpbmVkICYmIGl0ZW1bY29sdW1uLmZpZWxkXSA8IGNvbHVtbi5taW5WYWx1ZSkge1xyXG4gICAgICAgICAgICB2YWxpZGF0aW9uLmRhdGFbY29sdW1uLmZpZWxkXS5lcnJvciA9IGAke2l0ZW1bY29sdW1uLmZpZWxkXX0gJHt0cmFuc2xhdGUoJ01pbiB2YWx1ZScpfTogJHtjb2x1bW4ubWluVmFsdWV9YDtcclxuICAgICAgICAgICAgZXJyb3JzLnB1c2goYDxzdHJvbmc+WyR7Y29sdW1uLnRpdGxlIHx8IGNvbHVtbi5maWVsZH1dPC9zdHJvbmc+ICR7dmFsaWRhdGlvbi5kYXRhW2NvbHVtbi5maWVsZF0uZXJyb3J9YCk7XHJcbiAgICAgICAgICAgIGNvbnRpbnVlO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgaWYgKGNvbHVtbi5tYXhWYWx1ZSAhPT0gdW5kZWZpbmVkICYmIGl0ZW1bY29sdW1uLmZpZWxkXSA+IGNvbHVtbi5tYXhWYWx1ZSkge1xyXG4gICAgICAgICAgICB2YWxpZGF0aW9uLmRhdGFbY29sdW1uLmZpZWxkXS5lcnJvciA9IGAke2l0ZW1bY29sdW1uLmZpZWxkXX0gJHt0cmFuc2xhdGUoJ01heCB2YWx1ZScpfTogJHtjb2x1bW4ubWF4VmFsdWV9YDtcclxuICAgICAgICAgICAgZXJyb3JzLnB1c2goYDxzdHJvbmc+WyR7Y29sdW1uLnRpdGxlIHx8IGNvbHVtbi5maWVsZH1dPC9zdHJvbmc+ICR7dmFsaWRhdGlvbi5kYXRhW2NvbHVtbi5maWVsZF0uZXJyb3J9YCk7XHJcbiAgICAgICAgICAgIGNvbnRpbnVlO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH0gZWxzZSBpZiAoY29sdW1uLnR5cGUgPT09ICdib29sJykge1xyXG4gICAgICAgICAgaWYgKGl0ZW1bY29sdW1uLmZpZWxkXSA9PT0gMCB8fCBpdGVtW2NvbHVtbi5maWVsZF0gPT09IGZhbHNlKSB7XHJcbiAgICAgICAgICAgIGl0ZW1bY29sdW1uLmZpZWxkXSA9ICcwJztcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIGlmIChpdGVtW2NvbHVtbi5maWVsZF0gPT09IDEgfHwgaXRlbVtjb2x1bW4uZmllbGRdID09PSB0cnVlKSB7XHJcbiAgICAgICAgICAgIGl0ZW1bY29sdW1uLmZpZWxkXSA9ICcxJztcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIFxyXG4gICAgICAgICAgaWYgKGl0ZW1bY29sdW1uLmZpZWxkXSkge1xyXG4gICAgICAgICAgICBjb25zdCB2YWx1ZSA9ICtpdGVtW2NvbHVtbi5maWVsZF07XHJcbiAgICAgICAgICAgIGlmIChOdW1iZXIuaXNOYU4odmFsdWUpIHx8ICh2YWx1ZSAhPT0gMCAmJiB2YWx1ZSAhPT0gMSkpIHtcclxuICAgICAgICAgICAgICB2YWxpZGF0aW9uLmRhdGFbY29sdW1uLmZpZWxkXS5lcnJvciA9IGAke3RyYW5zbGF0ZSgnVmFsdWUgc2hvdWQgYmUgMCBvciAxJyl9YDtcclxuICAgICAgICAgICAgICBlcnJvcnMucHVzaChgPHN0cm9uZz5bJHtjb2x1bW4udGl0bGUgfHwgY29sdW1uLmZpZWxkfV08L3N0cm9uZz4gJHt2YWxpZGF0aW9uLmRhdGFbY29sdW1uLmZpZWxkXS5lcnJvcn1gKTtcclxuICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICBpZiAoY29sdW1uLnBhcnNlVG9Cb29sKSB7IFxyXG4gICAgICAgICAgICAgICAgaXRlbVtjb2x1bW4uZmllbGRdID0gaXRlbVtjb2x1bW4uZmllbGRdID09PSAnMSc7XHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfSBlbHNlIGlmIChjb2x1bW4udHlwZSA9PT0gJ3ZhbHVlcycpIHtcclxuICAgICAgICAgIGlmIChpdGVtW2NvbHVtbi5maWVsZF0gJiYgdHlwZW9mIChpdGVtW2NvbHVtbi5maWVsZF0pICE9PSAnbnVtYmVyJyAmJiB0eXBlb2YgKGl0ZW1bY29sdW1uLmZpZWxkXSkgIT09ICdzdHJpbmcnKSB7XHJcbiAgICAgICAgICAgIHZhbGlkYXRpb24uZGF0YVtjb2x1bW4uZmllbGRdLmVycm9yID0gYCR7aXRlbVtjb2x1bW4uZmllbGRdfSAke3RyYW5zbGF0ZSgnSW52YWxpZCBkYXRhIHR5cGUnKX1gO1xyXG4gICAgICAgICAgICBlcnJvcnMucHVzaChgPHN0cm9uZz5bJHtjb2x1bW4udGl0bGUgfHwgY29sdW1uLmZpZWxkfV08L3N0cm9uZz4gJHt2YWxpZGF0aW9uLmRhdGFbY29sdW1uLmZpZWxkXS5lcnJvcn1gKTtcclxuICAgICAgICAgICAgY29udGludWU7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICBpZiAoY29sdW1uLmNoZWNrVmFsdWVJbkFycmF5ICYmIGl0ZW1bY29sdW1uLmZpZWxkXSAmJiAhY29sdW1uLnZhbHVlcy5zb21lKGUgPT4gZS50b1N0cmluZygpID09PSBpdGVtW2NvbHVtbi5maWVsZF0udG9TdHJpbmcoKSkpIHtcclxuICAgICAgICAgICAgdmFsaWRhdGlvbi5kYXRhW2NvbHVtbi5maWVsZF0uZXJyb3IgPSBgJHtpdGVtW2NvbHVtbi5maWVsZF19ICR7dHJhbnNsYXRlKCdWYWx1ZSBub3QgaW4nKX0gWyR7Y29sdW1uLnZhbHVlcy5qb2luKCl9XWA7XHJcbiAgICAgICAgICAgIGVycm9ycy5wdXNoKGA8c3Ryb25nPlske2NvbHVtbi50aXRsZSB8fCBjb2x1bW4uZmllbGR9XTwvc3Ryb25nPiAke3ZhbGlkYXRpb24uZGF0YVtjb2x1bW4uZmllbGRdLmVycm9yfWApO1xyXG4gICAgICAgICAgICBjb250aW51ZTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9IGVsc2UgaWYgKGNvbHVtbi50eXBlID09PSAnZGF0ZScgfHwgY29sdW1uLnR5cGUgPT09ICdkYXRldGltZScgfHwgY29sdW1uLnR5cGUgPT09ICd0aW1lJykge1xyXG4gICAgICAgICAgY29uc3QgeyB0eXBlLCBmb3JtYXQgfSA9IGNvbHVtbjtcclxuICAgICAgICAgIGNvbnN0IHZhbCA9IGl0ZW1bY29sdW1uLmZpZWxkXTtcclxuICAgICAgICAgIGlmIChmb3JtYXQgJiYgaXRlbVtjb2x1bW4uZmllbGRdKSB7XHJcbiAgICAgICAgICAgIGlmICh0eXBlb2YgKHZhbCkgIT09ICdzdHJpbmcnKSB7XHJcbiAgICAgICAgICAgICAgdmFsaWRhdGlvbi5kYXRhW2NvbHVtbi5maWVsZF0uZXJyb3IgPSBgJHt0cmFuc2xhdGUoJ0ludmFsaWQgZm9ybWF0Jyl9ICR7Y29sdW1uLmZvcm1hdH06ICR7dmFsfWA7XHJcbiAgICAgICAgICAgICAgZXJyb3JzLnB1c2goYDxzdHJvbmc+WyR7Y29sdW1uLnRpdGxlIHx8IGNvbHVtbi5maWVsZH1dPC9zdHJvbmc+ICR7dmFsaWRhdGlvbi5kYXRhW2NvbHVtbi5maWVsZF0uZXJyb3J9YCk7XHJcbiAgICAgICAgICAgICAgY29udGludWU7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgaWYgKHR5cGUgPT09ICdkYXRlJyAmJiAhdGhpcy4jaXNWYWxpZERhdGUoZm9ybWF0LCB2YWwpKSB7XHJcbiAgICAgICAgICAgICAgdmFsaWRhdGlvbi5kYXRhW2NvbHVtbi5maWVsZF0uZXJyb3IgPSBgJHt0cmFuc2xhdGUoJ0ludmFsaWQgZm9ybWF0Jyl9ICR7Y29sdW1uLmZvcm1hdH06ICR7dmFsfWA7XHJcbiAgICAgICAgICAgICAgZXJyb3JzLnB1c2goYDxzdHJvbmc+WyR7Y29sdW1uLnRpdGxlIHx8IGNvbHVtbi5maWVsZH1dPC9zdHJvbmc+ICR7dmFsaWRhdGlvbi5kYXRhW2NvbHVtbi5maWVsZF0uZXJyb3J9YCk7XHJcbiAgICAgICAgICAgICAgY29udGludWU7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgaWYgKHR5cGUgPT09ICd0aW1lJyAmJiAhdGhpcy4jaXNWYWxpZFRpbWUoZm9ybWF0LCB2YWwpKSB7XHJcbiAgICAgICAgICAgICAgdmFsaWRhdGlvbi5kYXRhW2NvbHVtbi5maWVsZF0uZXJyb3IgPSBgJHt0cmFuc2xhdGUoJ0ludmFsaWQgZm9ybWF0Jyl9ICR7Y29sdW1uLmZvcm1hdH06ICR7dmFsfWA7XHJcbiAgICAgICAgICAgICAgZXJyb3JzLnB1c2goYDxzdHJvbmc+WyR7Y29sdW1uLnRpdGxlIHx8IGNvbHVtbi5maWVsZH1dPC9zdHJvbmc+ICR7dmFsaWRhdGlvbi5kYXRhW2NvbHVtbi5maWVsZF0uZXJyb3J9YCk7XHJcbiAgICAgICAgICAgICAgY29udGludWU7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgaWYgKHR5cGUgPT09ICdkYXRldGltZScgJiYgIXRoaXMuI2lzVmFsaWREYXRlVGltZShmb3JtYXQsIHZhbCkpIHtcclxuICAgICAgICAgICAgICB2YWxpZGF0aW9uLmRhdGFbY29sdW1uLmZpZWxkXS5lcnJvciA9IGAke3RyYW5zbGF0ZSgnSW52YWxpZCBmb3JtYXQnKX0gJHtjb2x1bW4uZm9ybWF0fTogJHt2YWx9YDtcclxuICAgICAgICAgICAgICBlcnJvcnMucHVzaChgPHN0cm9uZz5bJHtjb2x1bW4udGl0bGUgfHwgY29sdW1uLmZpZWxkfV08L3N0cm9uZz4gJHt2YWxpZGF0aW9uLmRhdGFbY29sdW1uLmZpZWxkXS5lcnJvcn1gKTtcclxuICAgICAgICAgICAgICBjb250aW51ZTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBpdGVtW2NvbHVtbi5maWVsZF0gPSBEYXRlLnBhcnNlRnJvbSh2YWwsIGNvbHVtbi5mb3JtYXQpLnRvRm9ybWF0KCdNTS9kZC95eXl5IEhIOm1tOnNzJyk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICBpZiAoaXRlbVtjb2x1bW4uZmllbGRdICYmICFEYXRlLmlzRGF0ZShpdGVtW2NvbHVtbi5maWVsZF0pKSB7XHJcbiAgICAgICAgICAgIHZhbGlkYXRpb24uZGF0YVtjb2x1bW4uZmllbGRdLmVycm9yID0gYCR7dHJhbnNsYXRlKCdJbnZhbGlkIGRhdGUnKX06ICR7aXRlbVtjb2x1bW4uZmllbGRdfWA7XHJcbiAgICAgICAgICAgIGVycm9ycy5wdXNoKGA8c3Ryb25nPlske2NvbHVtbi50aXRsZSB8fCBjb2x1bW4uZmllbGR9XTwvc3Ryb25nPiAke3ZhbGlkYXRpb24uZGF0YVtjb2x1bW4uZmllbGRdLmVycm9yfWApO1xyXG4gICAgICAgICAgICBjb250aW51ZTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGlmICghZXJyb3JzLmxlbmd0aCAmJiBjb2x1bW4uZXJyb3JWYWxpZGF0aW9uKSB7XHJcbiAgICAgICAgICBjb25zdCBlcnJvciA9IGF3YWl0IGNvbHVtbi5lcnJvclZhbGlkYXRpb24oaXRlbSwgaXRlbVtjb2x1bW4uZmllbGRdKTtcclxuICAgICAgICAgIGlmIChlcnJvcikge1xyXG4gICAgICAgICAgICB2YWxpZGF0aW9uLmRhdGFbY29sdW1uLmZpZWxkXS5lcnJvciA9IGAke2Vycm9yfWA7XHJcbiAgICAgICAgICAgIGVycm9ycy5wdXNoKGA8c3Ryb25nPlske2NvbHVtbi50aXRsZSB8fCBjb2x1bW4uZmllbGR9XTwvc3Ryb25nPiAke3ZhbGlkYXRpb24uZGF0YVtjb2x1bW4uZmllbGRdLmVycm9yfWApO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgICBcclxuICAgICAgICBpZiAoIXZhbGlkYXRpb24uZGF0YVtjb2x1bW4uZmllbGRdLndhcm5pbmcgJiYgY29sdW1uLndhcm5pbmdWYWxpZGF0aW9uKSB7XHJcbiAgICAgICAgICBjb25zdCB3YXJuaW5nID0gYXdhaXQgY29sdW1uLndhcm5pbmdWYWxpZGF0aW9uKGl0ZW0sIGl0ZW1bY29sdW1uLmZpZWxkXSk7XHJcbiAgICAgICAgICBpZiAod2FybmluZykge1xyXG4gICAgICAgICAgICB2YWxpZGF0aW9uLmRhdGFbY29sdW1uLmZpZWxkXS53YXJuaW5nID0gYCR7d2FybmluZ31gO1xyXG4gICAgICAgICAgICB2YWxpZGF0aW9uLndhcm5pbmcgKz0gYDxzdHJvbmc+WyR7Y29sdW1uLnRpdGxlIHx8IGNvbHVtbi5maWVsZH1dPC9zdHJvbmc+ICR7d2FybmluZ308YnI+YDtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgIH0gY2F0Y2ggKGV4KSB7XHJcbiAgICAgICAgdmFsaWRhdGlvbi5kYXRhW2NvbHVtbi5maWVsZF0uZXJyb3IgPSBgJHtleD8ubWVzc2FnZSB8fCBleD8uZXJyb3IgfHwgZXggfHwgJ0PDsyBs4buXaSB44bqjeSByYSd9YDtcclxuICAgICAgICBlcnJvcnMucHVzaChgPHN0cm9uZz5bJHtjb2x1bW4udGl0bGUgfHwgY29sdW1uLmZpZWxkfV08L3N0cm9uZz4gJHt2YWxpZGF0aW9uLmRhdGFbY29sdW1uLmZpZWxkXS5lcnJvcn1gKTtcclxuICAgICAgfVxyXG4gICAgICB2YWxpZGF0aW9uLmVycm9yID0gZXJyb3JzLmpvaW4oJzxicj4nKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gICNwYXJzZSA9IChpdGVtOiBTZEV4Y2VsSXRlbSkgPT4ge1xyXG4gICAgY29uc3QgeyBkYXRhIH0gPSBpdGVtO1xyXG4gICAgcmV0dXJuIGRhdGE7XHJcbiAgfVxyXG5cclxuICAjbWFwSXRlbSA9IChpdGVtOiBTZEV4Y2VsSXRlbSkgPT4ge1xyXG4gICAgY29uc3QgeyBkYXRhIH0gPSBpdGVtO1xyXG4gICAgcmV0dXJuIGRhdGE7XHJcbiAgfVxyXG5cclxuICBhY2NlcHQgPSAoKSA9PiB7XHJcbiAgICBjb25zdCBzdWNjZXNzSXRlbXMgPSB0aGlzLml0ZW1zLmZpbHRlcih0aGlzLiNpc1N1Y2Nlc3MpLm1hcCh0aGlzLiNtYXBJdGVtKTtcclxuICAgIGNvbnN0IGVycm9ySXRlbXMgPSB0aGlzLml0ZW1zLmZpbHRlcih0aGlzLiNpc0Vycm9yKS5tYXAodGhpcy4jbWFwSXRlbSk7XHJcbiAgICBjb25zdCB3YXJuaW5nSXRlbXMgPSB0aGlzLml0ZW1zLmZpbHRlcih0aGlzLiNpc1dhcm5pbmcpLm1hcCh0aGlzLiNtYXBJdGVtKTtcclxuICAgIHRoaXMub3B0aW9uPy5vbkFjY2VwdCh0aGlzLml0ZW1zLm1hcCh0aGlzLiNtYXBJdGVtKSwgc3VjY2Vzc0l0ZW1zLCBlcnJvckl0ZW1zLCB3YXJuaW5nSXRlbXMsIHRoaXMuZmlsZSk7XHJcbiAgICB0aGlzLmlzVXBsb2FkZWQgPSB0cnVlO1xyXG4gIH1cclxuXHJcbiAgc2V0VmFsaWRhdGlvbiA9ICh2YWxpZGF0ZXM6IHsgaWR4OiBudW1iZXIsIG1lc3NhZ2VFcnJvcj86IHN0cmluZywgbWVzc2FnZVdhcm5pbmc/OiBzdHJpbmcsIG1lc3NhZ2VTdWNjZXNzPzogc3RyaW5nIH1bXSkgPT4ge1xyXG4gICAgaWYgKEFycmF5LmlzQXJyYXkodmFsaWRhdGVzKSkge1xyXG4gICAgICB2YWxpZGF0ZXMuZm9yRWFjaCh2YWxpZGF0ZSA9PiB7XHJcbiAgICAgICAgdGhpcy5pdGVtc1t2YWxpZGF0ZS5pZHhdLnNkLnZhbGlkYXRpb24uZXJyb3IgPSB2YWxpZGF0ZS5tZXNzYWdlRXJyb3I7XHJcbiAgICAgICAgdGhpcy5pdGVtc1t2YWxpZGF0ZS5pZHhdLnNkLnZhbGlkYXRpb24ud2FybmluZyA9IHZhbGlkYXRlLm1lc3NhZ2VXYXJuaW5nO1xyXG4gICAgICAgIHRoaXMuaXRlbXNbdmFsaWRhdGUuaWR4XS5zZC52YWxpZGF0aW9uLnN1Y2Nlc3MgPSB2YWxpZGF0ZS5tZXNzYWdlU3VjY2VzcztcclxuICAgICAgfSk7XHJcbiAgICB9XHJcbiAgICB0aGlzLiNyZWxvYWQoKTtcclxuICAgIHRoaXMucmVmLmRldGVjdENoYW5nZXMoKTtcclxuICB9XHJcblxyXG4gIHZpZXcgPSAoc2hvd2luZzogJ0FMTCcgfCAnU1VDQ0VTUycgfCAnV0FSTklORycgfCAnRVJST1InID0gJ0FMTCcpID0+IHtcclxuICAgIHRoaXMuc2hvd2luZyA9IHNob3dpbmc7XHJcbiAgICB0aGlzLiNwYWdpbmF0b3IucGFnZUluZGV4ID0gMDtcclxuICAgIHRoaXMuI3JlbG9hZCgpO1xyXG4gIH1cclxuXHJcbiAgZG93bmxvYWRUZW1wbGF0ZSA9IGFzeW5jICgpID0+IHtcclxuICAgIGNvbnN0IHNoZWV0czoge1xyXG4gICAgICBuYW1lOiBzdHJpbmcsXHJcbiAgICAgIGl0ZW1zOiBhbnlbXSxcclxuICAgICAgZmllbGRzOiBzdHJpbmdbXVxyXG4gICAgfVtdID0gW107XHJcbiAgICBpZiAoQXJyYXkuaXNBcnJheSh0aGlzLm9wdGlvbj8uc2hlZXRzKSkge1xyXG4gICAgICBmb3IgKGNvbnN0IHNoZWV0IG9mIHRoaXMub3B0aW9uLnNoZWV0cykge1xyXG4gICAgICAgIGlmIChzaGVldC5uYW1lICYmIHNoZWV0Lml0ZW1zICYmIHNoZWV0LmZpZWxkcykge1xyXG4gICAgICAgICAgaWYgKEFycmF5LmlzQXJyYXkoc2hlZXQuaXRlbXMpKSB7XHJcbiAgICAgICAgICAgIHNoZWV0cy5wdXNoKHtcclxuICAgICAgICAgICAgICBuYW1lOiBzaGVldC5uYW1lLFxyXG4gICAgICAgICAgICAgIGl0ZW1zOiBzaGVldC5pdGVtcyxcclxuICAgICAgICAgICAgICBmaWVsZHM6IHNoZWV0LmZpZWxkc1xyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIHNoZWV0cy5wdXNoKHtcclxuICAgICAgICAgICAgICBuYW1lOiBzaGVldC5uYW1lLFxyXG4gICAgICAgICAgICAgIGl0ZW1zOiBhd2FpdCBzaGVldC5pdGVtcygpLFxyXG4gICAgICAgICAgICAgIGZpZWxkczogc2hlZXQuZmllbGRzXHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgY29uc3QgY29sdW1uTm90SGlkZGVuID0gdGhpcy5vcHRpb24uY29sdW1ucy5maWx0ZXIoY29sdW1uID0+IHRoaXMuc2RDb2x1bW5IaWRkZW4udHJhbnNmb3JtKGNvbHVtbikpO1xyXG4gICAgY29uc3QgZXhjZWxUZW1wbGF0ZTogRXhjZWxUZW1wbGF0ZSA9IHtcclxuICAgICAgZmlsZU5hbWU6IHRoaXMub3B0aW9uLmZpbGVOYW1lIHx8ICdUZW1wbGF0ZScsXHJcbiAgICAgIGNvbHVtbnM6IGNvbHVtbk5vdEhpZGRlbi5tYXAoY29sdW1uID0+IHtcclxuICAgICAgICByZXR1cm4ge1xyXG4gICAgICAgICAgZmllbGQ6IGNvbHVtbi5maWVsZCxcclxuICAgICAgICAgIHRpdGxlOiBjb2x1bW4udGl0bGUsXHJcbiAgICAgICAgICB3aWR0aDogY29sdW1uLndpZHRoLFxyXG4gICAgICAgICAgcmVxdWlyZWQ6IGNvbHVtbi5yZXF1aXJlZCxcclxuICAgICAgICAgIGRlc2NyaXB0aW9uOiBjb2x1bW4uZGVzY3JpcHRpb25cclxuICAgICAgICB9O1xyXG4gICAgICB9KSxcclxuICAgICAgc2hlZXRzXHJcbiAgICB9O1xyXG4gICAgdGhpcy5pc0Rvd25sb2FkVGVtcGxhdGUgPSB0cnVlO1xyXG4gICAgY29uc3QgcmVzdWx0ID0gYXdhaXQgdGhpcy5leHBvcnRTZXJ2aWNlLmdlbmVyYXRlVGVtcGxhdGUoZXhjZWxUZW1wbGF0ZSkuZmluYWxseSgoKSA9PiB7XHJcbiAgICAgIHRoaXMuaXNEb3dubG9hZFRlbXBsYXRlID0gZmFsc2U7XHJcbiAgICB9KTtcclxuICAgIGlmIChyZXN1bHQ/LmZpbGVQYXRoKSB7XHJcbiAgICAgIHRoaXMuZXhwb3J0U2VydmljZS5kb3dubG9hZChyZXN1bHQuZmlsZVBhdGgsIGV4Y2VsVGVtcGxhdGUuZmlsZU5hbWUgfHwgJ1RlbXBsYXRlLnhsc3gnKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGV4cG9ydCA9IGFzeW5jICgpID0+IHtcclxuICAgIHRoaXMubG9hZGluZ1NlcnZpY2Uuc3RhcnQoKTtcclxuICAgIGNvbnN0IGNvbHVtbnM6IEV4cG9ydFRlbXBhdGVDb2x1bW5bXSA9IFt7XHJcbiAgICAgIGZpZWxkOiAnc2RNZXNzYWdlJyxcclxuICAgICAgdGl0bGU6IHRoaXMudHJhbnNsYXRlU2VydmljZS50cmFuc2xhdGUoJ1VwbG9hZCBtZXNzYWdlJyksXHJcbiAgICAgIHdpZHRoOiAnMjUwcHgnLFxyXG4gICAgICByZXF1aXJlZDogZmFsc2VcclxuICAgIH0sIC4uLiB0aGlzLm9wdGlvbi5jb2x1bW5zLmZpbHRlcihjb2x1bW4gPT4gdGhpcy5zZENvbHVtbkhpZGRlbi50cmFuc2Zvcm0oY29sdW1uKSldO1xyXG4gICAgYXdhaXQgdGhpcy5leHBvcnRTZXJ2aWNlLmV4cG9ydCh7XHJcbiAgICAgIGNvbHVtbnMsXHJcbiAgICAgIGl0ZW1zOiB0aGlzLmZpbHRlcmVkSXRlbXMubWFwKGUgPT4ge1xyXG4gICAgICAgIGxldCByZXN1bHQgPSB7XHJcbiAgICAgICAgICBzZE1lc3NhZ2U6IChlLnNkLnZhbGlkYXRpb24/LmVycm9yIHx8IGUuc2QudmFsaWRhdGlvbj8ud2FybmluZyB8fCBlLnNkLnZhbGlkYXRpb24/LnN1Y2Nlc3MpPy5yZXBsYWNlKC88c3Ryb25nPi9nLCAnJylcclxuICAgICAgICAgICAgLnJlcGxhY2UoLzxcXC9zdHJvbmc+L2csICcnKVxyXG4gICAgICAgICAgICAucmVwbGFjZSgvPGJyPi9nLCAnXFxuJylcclxuICAgICAgICB9O1xyXG4gICAgICAgIGZvciAoY29uc3QgY29sdW1uIG9mIGNvbHVtbnMpIHtcclxuICAgICAgICAgIHJlc3VsdCA9IHtcclxuICAgICAgICAgICAgLi4ucmVzdWx0LFxyXG4gICAgICAgICAgICBbY29sdW1uLmZpZWxkXTogZS5zZC5vcmlnaW4/Lltjb2x1bW4uZmllbGRdXHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiByZXN1bHQ7XHJcbiAgICAgIH0pXHJcbiAgICB9KS5maW5hbGx5KHRoaXMubG9hZGluZ1NlcnZpY2Uuc3RvcCk7XHJcbiAgfVxyXG5cclxuICAjaW1wb3J0ID0gKCkgPT4ge1xyXG4gICAgY29uc3QgeyB0cmFuc2xhdGUgfSA9IHRoaXMudHJhbnNsYXRlU2VydmljZTtcclxuICAgIHJldHVybiBuZXcgUHJvbWlzZTx7IGl0ZW1zOiBhbnlbXSwgZmlsZTogRmlsZSB9PigocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XHJcbiAgICAgIGlmICgkKGAjJHt0aGlzLmltcG9ydElkfWApLmxlbmd0aCkge1xyXG4gICAgICAgICQoJ2JvZHknKS5jaGlsZHJlbihgIyR7dGhpcy5pbXBvcnRJZH1gKS5yZW1vdmUoKTtcclxuICAgICAgfVxyXG4gICAgICAkKCdib2R5JykuYXBwZW5kKGA8aW5wdXQgaWQ9XCIke3RoaXMuaW1wb3J0SWR9XCIgc3R5bGU9XCJkaXNwbGF5OiBub25lXCIgdHlwZT1cImZpbGVcIiAvPmApO1xyXG5cclxuICAgICAgJChgIyR7dGhpcy5pbXBvcnRJZH1gKS5vbignY2hhbmdlJywgKGV2dDogYW55KSA9PiB7XHJcbiAgICAgICAgdHJ5IHtcclxuICAgICAgICAgIGNvbnN0IHRhcmdldDogRGF0YVRyYW5zZmVyID0gZXZ0LnRhcmdldDtcclxuICAgICAgICAgIGlmICh0YXJnZXQuZmlsZXMubGVuZ3RoICE9PSAxKSB7XHJcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcih0cmFuc2xhdGUoJ0Nhbm5vdCB1c2UgbXVsdGlwbGUgZmlsZXMnKSk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICBjb25zdCBmaWxlID0gdGFyZ2V0LmZpbGVzWzBdO1xyXG4gICAgICAgICAgY29uc3QgbGFzdERvdCA9IGZpbGUubmFtZS5sYXN0SW5kZXhPZignLicpO1xyXG4gICAgICAgICAgaWYgKGxhc3REb3QgPT09IC0xKSB7XHJcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcih0cmFuc2xhdGUoJ0ludmFsaWQgZmlsZSBleHRlbnNpb24nKSk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICBjb25zdCBleHRlbnNpb24gPSBmaWxlLm5hbWUuc3Vic3RyaW5nKGxhc3REb3QgKyAxKTtcclxuICAgICAgICAgIGlmIChleHRlbnNpb24udG9Mb3dlckNhc2UoKSAhPT0gJ3hsc3gnKSB7XHJcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcih0cmFuc2xhdGUoJ1BsZWFzZSB1cGxvYWQgLnhsc3ggZmlsZScpKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIGNvbnN0IHJlYWRlcjogRmlsZVJlYWRlciA9IG5ldyBGaWxlUmVhZGVyKCk7XHJcbiAgICAgICAgICByZWFkZXIub25sb2FkID0gKGU6IGFueSkgPT4ge1xyXG4gICAgICAgICAgICBjb25zdCBic3RyOiBzdHJpbmcgPSBlLnRhcmdldC5yZXN1bHQ7XHJcbiAgICAgICAgICAgIGNvbnN0IHdiOiBYTFNYLldvcmtCb29rID0gWExTWC5yZWFkKGJzdHIsIHsgdHlwZTogJ2JpbmFyeScgfSk7XHJcbiAgICAgICAgICAgIGNvbnN0IHdzbmFtZTogc3RyaW5nID0gd2IuU2hlZXROYW1lc1swXTtcclxuICAgICAgICAgICAgY29uc3Qgd3M6IFhMU1guV29ya1NoZWV0ID0gd2IuU2hlZXRzW3dzbmFtZV07XHJcbiAgICAgICAgICAgIGNvbnN0IGxpbmVzOiBBT0EgPSAoWExTWC51dGlscy5zaGVldF90b19qc29uKHdzLCB7IGhlYWRlcjogMSB9KSk7XHJcbiAgICAgICAgICAgIGNvbnN0IHJlY29yZHMgPSBbXTtcclxuICAgICAgICAgICAgY29uc3QgaGVhZGVycyA9IGxpbmVzWzBdO1xyXG4gICAgICAgICAgICBsaW5lcy5zcGxpY2UoMCwgMSk7XHJcbiAgICAgICAgICAgIGxpbmVzLmZvckVhY2gobGluZSA9PiB7XHJcbiAgICAgICAgICAgICAgY29uc3QgcmVjb3JkID0ge307XHJcbiAgICAgICAgICAgICAgbGV0IGhhc1ZhbHVlID0gZmFsc2U7XHJcbiAgICAgICAgICAgICAgaGVhZGVycy5mb3JFYWNoKChoZWFkZXIsIGluZGV4KSA9PiB7XHJcbiAgICAgICAgICAgICAgICByZWNvcmRbaGVhZGVyXSA9IGxpbmVbaW5kZXhdO1xyXG4gICAgICAgICAgICAgICAgaWYgKGxpbmVbaW5kZXhdICE9PSB1bmRlZmluZWQgJiYgbGluZVtpbmRleF0gIT09IG51bGwgJiYgbGluZVtpbmRleF0udG9TdHJpbmcoKSkge1xyXG4gICAgICAgICAgICAgICAgICBoYXNWYWx1ZSA9IHRydWU7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBpZiAodHlwZW9mIChyZWNvcmRbaGVhZGVyXSkgPT09ICdzdHJpbmcnKSB7XHJcbiAgICAgICAgICAgICAgICAgIHJlY29yZFtoZWFkZXJdID0gcmVjb3JkW2hlYWRlcl0udHJpbSgpO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgaWYgKHJlY29yZFtoZWFkZXJdID09PSAnJyB8fCByZWNvcmRbaGVhZGVyXSA9PT0gdW5kZWZpbmVkKSB7XHJcbiAgICAgICAgICAgICAgICAgIHJlY29yZFtoZWFkZXJdID0gbnVsbDtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgICBpZiAoaGFzVmFsdWUpIHtcclxuICAgICAgICAgICAgICAgIHJlY29yZHMucHVzaChyZWNvcmQpO1xyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgIHJlc29sdmUoe1xyXG4gICAgICAgICAgICAgIGl0ZW1zOiByZWNvcmRzLFxyXG4gICAgICAgICAgICAgIGZpbGU6IHRhcmdldC5maWxlc1swXVxyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICAgIH07XHJcbiAgICAgICAgICByZWFkZXIucmVhZEFzQmluYXJ5U3RyaW5nKHRhcmdldC5maWxlc1swXSk7XHJcbiAgICAgICAgfSBjYXRjaCAoZXJyb3IpIHtcclxuICAgICAgICAgIHJlamVjdChlcnJvcik7XHJcbiAgICAgICAgfVxyXG4gICAgICB9KTtcclxuICAgICAgJChgIyR7dGhpcy5pbXBvcnRJZH1gKS50cmlnZ2VyKCdjbGljaycpO1xyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICAjaXNWYWxpZERhdGUgPSAoZm9ybWF0OiBzdHJpbmcsIHZhbHVlOiBzdHJpbmcpID0+IHtcclxuICAgIGlmICh2YWx1ZT8ubGVuZ3RoICE9PSBmb3JtYXQ/Lmxlbmd0aCkge1xyXG4gICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICB9XHJcbiAgICBjb25zdCByZWdleCA9IC9eKD86KD86MzEoXFwvfC18XFwuKSg/OjA/WzEzNTc4XXwxWzAyXSkpXFwxfCg/Oig/OjI5fDMwKShcXC98LXxcXC4pKD86MD9bMTMtOV18MVswLTJdKVxcMikpKD86KD86MVs2LTldfFsyLTldXFxkKT9cXGR7Mn0pJHxeKD86MjkoXFwvfC18XFwuKTA/MlxcMyg/Oig/Oig/OjFbNi05XXxbMi05XVxcZCk/KD86MFs0OF18WzI0NjhdWzA0OF18WzEzNTc5XVsyNl0pfCg/Oig/OjE2fFsyNDY4XVswNDhdfFszNTc5XVsyNl0pMDApKSkpJHxeKD86MD9bMS05XXwxXFxkfDJbMC04XSkoXFwvfC18XFwuKSg/Oig/OjA/WzEtOV0pfCg/OjFbMC0yXSkpXFw0KD86KD86MVs2LTldfFsyLTldXFxkKT9cXGR7Mn0pJC87XHJcbiAgICByZXR1cm4gcmVnZXgudGVzdCh2YWx1ZSk7XHJcbiAgfVxyXG5cclxuICAjaXNWYWxpZFRpbWUgPSAoZm9ybWF0OiBzdHJpbmcsIHZhbHVlOiBzdHJpbmcpID0+IHtcclxuICAgIGlmICh2YWx1ZT8ubGVuZ3RoICE9PSBmb3JtYXQ/Lmxlbmd0aCkge1xyXG4gICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gdHJ1ZTtcclxuICB9XHJcblxyXG4gICNpc1ZhbGlkRGF0ZVRpbWUgPSAoZm9ybWF0OiBzdHJpbmcsIHZhbHVlOiBzdHJpbmcpID0+IHtcclxuICAgIGlmICh2YWx1ZT8ubGVuZ3RoICE9PSBmb3JtYXQ/Lmxlbmd0aCkge1xyXG4gICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICB9XHJcbiAgICBjb25zdCBkYXRlcyA9IHZhbHVlPy5zcGxpdCgnICcpO1xyXG4gICAgaWYgKGRhdGVzLmxlbmd0aCAhPT0gMikge1xyXG4gICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICB9XHJcbiAgICBjb25zdCBkYXRlID0gZGF0ZXNbMF07XHJcbiAgICBpZiAoIXRoaXMuI2lzVmFsaWREYXRlKCdkZC9NTS95eXl5JywgZGF0ZSkpIHtcclxuICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgfVxyXG4gICAgY29uc3QgdGltZSA9IGRhdGVzWzFdO1xyXG4gICAgY29uc3QgcmVnZXggPSAvXigwWzAtOV18MVswLTldfDJbMC0zXSkoXFw6KSgwWzAtOV18WzAtNV1bMC05XSkkLztcclxuICAgIHJldHVybiByZWdleC50ZXN0KHRpbWUpO1xyXG4gIH1cclxufVxyXG5cclxuIl19
|
|
@@ -1,2 +1,7 @@
|
|
|
1
1
|
export {};
|
|
2
|
-
|
|
2
|
+
// export type ExcelItem<T> = {
|
|
3
|
+
// origin?: T;
|
|
4
|
+
// excelIndex?: number;
|
|
5
|
+
// validation: SdUploadExcelValidation;
|
|
6
|
+
// } & T;
|
|
7
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXBsb2FkLWV4Y2VsLm1vZGVsLmpzIiwic291cmNlUm9vdCI6IkM6L1VzZXJzL25naGlhdHQxNV9vbmVtb3VudC9Eb2N1bWVudHMvbGliLWNvcmUtdWkvcHJvamVjdHMvc2QtY29yZS91cGxvYWQtZXhjZWwvIiwic291cmNlcyI6WyJzcmMvbGliL3VwbG9hZC1leGNlbC5tb2RlbC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBZ0lBLCtCQUErQjtBQUMvQixnQkFBZ0I7QUFDaEIseUJBQXlCO0FBQ3pCLHlDQUF5QztBQUN6QyxTQUFTIiwic291cmNlc0NvbnRlbnQiOlsiaW50ZXJmYWNlIFZhbGlkYXRpb24ge1xyXG4gIGlkeDogbnVtYmVyO1xyXG4gIG1lc3NhZ2U6IHN0cmluZztcclxufVxyXG5cclxuZXhwb3J0IGludGVyZmFjZSBTZFVwbG9hZEV4Y2VsT3B0aW9uPFQgPSBhbnk+IHtcclxuICB0aXRsZT86IHN0cmluZztcclxuICBub3RlPzogc3RyaW5nO1xyXG4gIGZpbGVOYW1lPzogc3RyaW5nO1xyXG4gIGNvbHVtbnM/OiBTZFVwbG9hZEV4Y2VsQ29sdW1uPFQ+W107XHJcbiAgbGltaXQ/OiBudW1iZXI7XHJcbiAga2V5Pzogc3RyaW5nO1xyXG4gIHNoZWV0cz86IHtcclxuICAgIG5hbWU6IHN0cmluZyxcclxuICAgIGl0ZW1zOiBhbnlbXSB8ICgoKSA9PiBQcm9taXNlPGFueVtdPiksXHJcbiAgICBmaWVsZHM6IHN0cmluZ1tdXHJcbiAgfVtdO1xyXG4gIG9uQWNjZXB0PzogKGl0ZW1zPzogVFtdLCBzdWNjZXNzSXRlbXM/OiBUW10sIGVycm9ySXRlbXM/OiBUW10sIHdhcm5pbmdJdGVtcz86IFRbXSwgZmlsZT86IEZpbGUpID0+IHZvaWQgfCBQcm9taXNlPHZvaWQ+O1xyXG4gIG1hcHBpbmdJdGVtcz86IChpdGVtczogU2RFeGNlbEl0ZW08VD5bXSkgPT4gU2RFeGNlbEl0ZW08VD5bXSB8IFByb21pc2U8U2RFeGNlbEl0ZW08VD5bXT47XHJcbiAgZXJyb3JWYWxpZGF0aW9uPzogKGl0ZW1zPzogVFtdKSA9PiBWYWxpZGF0aW9uW10gfCBQcm9taXNlPFZhbGlkYXRpb25bXT47XHJcbiAgd2FybmluZ1ZhbGlkYXRpb24/OiAoaXRlbXM/OiBUW10pID0+IFZhbGlkYXRpb25bXSB8IFByb21pc2U8VmFsaWRhdGlvbltdPjtcclxufVxyXG5cclxuZXhwb3J0IHR5cGUgU2RVcGxvYWRFeGNlbENvbHVtbjxUID0gYW55PiA9XHJcbiAgU2RVcGxvYWRFeGNlbENvbHVtblN0cmluZzxUPiB8XHJcbiAgU2RVcGxvYWRFeGNlbENvbHVtbk51bWJlcjxUPiB8XHJcbiAgU2RVcGxvYWRFeGNlbENvbHVtbkJvb2w8VD4gfFxyXG4gIFNkVXBsb2FkRXhjZWxDb2x1bW5EYXRlPFQ+IHxcclxuICBTZFVwbG9hZEV4Y2VsQ29sdW1uVGltZTxUPiB8XHJcbiAgU2RVcGxvYWRFeGNlbENvbHVtbkRhdGVUaW1lPFQ+IHxcclxuICBTZFVwbG9hZEV4Y2VsQ29sdW1uVmFsdWVzPFQ+IHxcclxuICBTZFVwbG9hZEV4Y2VsQ29sdW1uU3RyaW5nQXJyYXk8VD47XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIFNkVXBsb2FkRXhjZWxCYXNlQ29sdW1uPFQgPSBhbnk+IHtcclxuICBmaWVsZDogc3RyaW5nO1xyXG4gIHRpdGxlOiBzdHJpbmc7XHJcbiAgcmVxdWlyZWQ/OiBib29sZWFuO1xyXG4gIHdpZHRoPzogc3RyaW5nO1xyXG4gIGRlc2NyaXB0aW9uPzogc3RyaW5nO1xyXG4gIGhpZGRlbj86IGJvb2xlYW4gfCAoKCkgPT4gYm9vbGVhbik7XHJcbiAgdHJhbnNmb3JtPzogKHZhbHVlOiBhbnksIHJvd0RhdGE6IFQpID0+IHN0cmluZyB8IFByb21pc2U8c3RyaW5nPjtcclxuICBtYXBwaW5nRGlzcGxheT86IChpdGVtPzogVCwgdmFsdWU/OiBhbnkpID0+IHN0cmluZyB8IFByb21pc2U8c3RyaW5nPjtcclxuICBlcnJvclZhbGlkYXRpb24/OiAoaXRlbT86IFQsIHZhbHVlPzogYW55KSA9PiBzdHJpbmcgfCBQcm9taXNlPHN0cmluZz47XHJcbiAgd2FybmluZ1ZhbGlkYXRpb24/OiAoaXRlbT86IFQsIHZhbHVlPzogYW55KSA9PiBzdHJpbmcgfCBQcm9taXNlPHN0cmluZz47XHJcbn1cclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgU2RVcGxvYWRFeGNlbENvbHVtblN0cmluZzxUID0gYW55PiBleHRlbmRzIFNkVXBsb2FkRXhjZWxCYXNlQ29sdW1uPFQ+IHtcclxuICB0eXBlOiAnc3RyaW5nJztcclxuICBkZWZhdWx0VmFsdWU/OiBzdHJpbmc7XHJcbiAgcGF0dGVybj86IHN0cmluZztcclxuICBtaW5MZW5ndGg/OiBudW1iZXI7XHJcbiAgbWF4TGVuZ3RoPzogbnVtYmVyO1xyXG59XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIFNkVXBsb2FkRXhjZWxDb2x1bW5OdW1iZXI8VCA9IGFueT4gZXh0ZW5kcyBTZFVwbG9hZEV4Y2VsQmFzZUNvbHVtbjxUPiB7XHJcbiAgdHlwZTogJ251bWJlcic7XHJcbiAgZGVmYXVsdFZhbHVlPzogbnVtYmVyO1xyXG4gIG1pblZhbHVlPzogbnVtYmVyO1xyXG4gIG1heFZhbHVlPzogbnVtYmVyO1xyXG59XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIFNkVXBsb2FkRXhjZWxDb2x1bW5Cb29sPFQgPSBhbnk+IGV4dGVuZHMgU2RVcGxvYWRFeGNlbEJhc2VDb2x1bW48VD4ge1xyXG4gIHR5cGU6ICdib29sJztcclxuICBkZWZhdWx0VmFsdWU/OiBib29sZWFuO1xyXG4gIHBhcnNlVG9Cb29sPzogYm9vbGVhbjtcclxufVxyXG5cclxuZXhwb3J0IGludGVyZmFjZSBTZFVwbG9hZEV4Y2VsQ29sdW1uRGF0ZTxUID0gYW55PiBleHRlbmRzIFNkVXBsb2FkRXhjZWxCYXNlQ29sdW1uPFQ+IHtcclxuICB0eXBlOiAnZGF0ZSc7XHJcbiAgZm9ybWF0PzogJ2RkL01NL3l5eXknO1xyXG4gIGRlZmF1bHRWYWx1ZT86IERhdGU7XHJcbiAgbWluRGF0ZT86IERhdGU7XHJcbiAgbWF4RGF0ZT86IERhdGU7XHJcbn1cclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgU2RVcGxvYWRFeGNlbENvbHVtblRpbWU8VCA9IGFueT4gZXh0ZW5kcyBTZFVwbG9hZEV4Y2VsQmFzZUNvbHVtbjxUPiB7XHJcbiAgdHlwZTogJ3RpbWUnO1xyXG4gIGZvcm1hdD86ICdISDptbScgfCAnSEg6bW06c3MnO1xyXG4gIGRlZmF1bHRWYWx1ZT86IERhdGU7XHJcbiAgbWluRGF0ZT86IERhdGU7XHJcbiAgbWF4RGF0ZT86IERhdGU7XHJcbn1cclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgU2RVcGxvYWRFeGNlbENvbHVtbkRhdGVUaW1lPFQgPSBhbnk+IGV4dGVuZHMgU2RVcGxvYWRFeGNlbEJhc2VDb2x1bW48VD4ge1xyXG4gIHR5cGU6ICdkYXRldGltZSc7XHJcbiAgZm9ybWF0PzogJ2RkL01NL3l5eXkgSEg6bW0nIHwgJ2RkL01NL3l5eXknO1xyXG4gIGRlZmF1bHRWYWx1ZT86IERhdGU7XHJcbiAgbWluRGF0ZT86IERhdGU7XHJcbiAgbWF4RGF0ZT86IERhdGU7XHJcbn1cclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgU2RVcGxvYWRFeGNlbENvbHVtblZhbHVlczxUID0gYW55PiBleHRlbmRzIFNkVXBsb2FkRXhjZWxCYXNlQ29sdW1uPFQ+IHtcclxuICB0eXBlOiAndmFsdWVzJyB8ICdyYWRpbyc7XHJcbiAgZGVmYXVsdFZhbHVlPzogc3RyaW5nIHwgbnVtYmVyO1xyXG4gIHZhbHVlczogKHN0cmluZyB8IG51bWJlcilbXTtcclxuICBjaGVja1ZhbHVlSW5BcnJheT86IGJvb2xlYW47XHJcbn1cclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgU2RVcGxvYWRFeGNlbENvbHVtblN0cmluZ0FycmF5PFQgPSBhbnk+IGV4dGVuZHMgU2RVcGxvYWRFeGNlbEJhc2VDb2x1bW48VD4ge1xyXG4gIHR5cGU6ICdhcnJheSc7XHJcbiAgZGl2aWRlU3RyaW5nOiBzdHJpbmcgfCAnOyc7XHJcbiAgdW5pdFN0cmluZzogc3RyaW5nIHwgJ2l0ZW1zJztcclxuICBkZWZhdWx0VmFsdWU/OiBzdHJpbmc7XHJcbiAgbWluTGVuZ3RoPzogbnVtYmVyO1xyXG4gIG1heExlbmd0aD86IG51bWJlcjtcclxufVxyXG5cclxuZXhwb3J0IGludGVyZmFjZSBTZFVwbG9hZEV4Y2VsVmFsaWRhdGlvbiB7XHJcbiAgZXJyb3I/OiBzdHJpbmc7XHJcbiAgd2FybmluZz86IHN0cmluZztcclxuICBzdWNjZXNzPzogc3RyaW5nO1xyXG4gIGRhdGE/OiB7XHJcbiAgICBbY29sdW1uOiBzdHJpbmddOiB7XHJcbiAgICAgIGVycm9yPzogc3RyaW5nO1xyXG4gICAgICB3YXJuaW5nPzogc3RyaW5nO1xyXG4gICAgfVxyXG4gIH07XHJcbn1cclxuXHJcbmV4cG9ydCB0eXBlIFNkRXhjZWxJdGVtPFQgPSBhbnk+ID0ge1xyXG4gIGRhdGE6IFQ7XHJcbiAgc2Q/OiB7XHJcbiAgICBleGNlbEluZGV4PzogbnVtYmVyO1xyXG4gICAgb3JpZ2luPzogVCxcclxuICAgIHZhbGlkYXRpb24/OiBTZFVwbG9hZEV4Y2VsVmFsaWRhdGlvbjtcclxuICB9XHJcbn07XHJcblxyXG4vLyBleHBvcnQgdHlwZSBFeGNlbEl0ZW08VD4gPSB7XHJcbi8vICAgb3JpZ2luPzogVDtcclxuLy8gICBleGNlbEluZGV4PzogbnVtYmVyO1xyXG4vLyAgIHZhbGlkYXRpb246IFNkVXBsb2FkRXhjZWxWYWxpZGF0aW9uO1xyXG4vLyB9ICYgVDtcclxuIl19
|