ngx-st-sap-bp 17.0.13 → 17.0.15
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/esm2022/lib/components/sap-bp-base-create-edit.mjs +114 -104
- package/esm2022/lib/components/sap-bp-create/sap-bp-create.component.mjs +37 -39
- package/esm2022/lib/components/sap-bp-create-address/sap-bp-create-address.component.mjs +67 -63
- package/esm2022/lib/components/sap-bp-create-contact-person/sap-bp-create-contact-person.component.mjs +16 -21
- package/esm2022/lib/components/sap-bp-details/sap-bp-details.component.mjs +117 -122
- package/esm2022/lib/components/sap-bp-details-address/sap-bp-details-address.component.mjs +8 -12
- package/esm2022/lib/components/sap-bp-details-contact-person/sap-bp-details-contact-person.component.mjs +8 -12
- package/esm2022/lib/components/sap-bp-edit/sap-bp-edit.component.mjs +60 -62
- package/esm2022/lib/components/sap-bp-list/sap-bp-list.component.mjs +50 -46
- package/esm2022/lib/components/sap-bp-list-address/sap-bp-list-address.component.mjs +45 -46
- package/esm2022/lib/components/sap-bp-list-contact-person/sap-bp-list-contact-person.component.mjs +44 -45
- package/fesm2022/ngx-st-sap-bp.mjs +446 -454
- package/fesm2022/ngx-st-sap-bp.mjs.map +1 -1
- package/lib/components/sap-bp-base-create-edit.d.ts +31 -32
- package/lib/components/sap-bp-create/sap-bp-create.component.d.ts +4 -12
- package/lib/components/sap-bp-create-address/sap-bp-create-address.component.d.ts +16 -28
- package/lib/components/sap-bp-create-contact-person/sap-bp-create-contact-person.component.d.ts +3 -8
- package/lib/components/sap-bp-details/sap-bp-details.component.d.ts +22 -31
- package/lib/components/sap-bp-details-address/sap-bp-details-address.component.d.ts +2 -7
- package/lib/components/sap-bp-details-contact-person/sap-bp-details-contact-person.component.d.ts +2 -7
- package/lib/components/sap-bp-edit/sap-bp-edit.component.d.ts +9 -18
- package/lib/components/sap-bp-list/sap-bp-list.component.d.ts +13 -19
- package/lib/components/sap-bp-list-address/sap-bp-list-address.component.d.ts +9 -12
- package/lib/components/sap-bp-list-contact-person/sap-bp-list-contact-person.component.d.ts +8 -11
- package/package.json +1 -1
|
@@ -1,22 +1,21 @@
|
|
|
1
|
-
import { Validators } from '@angular/forms';
|
|
2
|
-
import {
|
|
1
|
+
import { NonNullableFormBuilder, Validators } from '@angular/forms';
|
|
2
|
+
import { SapBpService } from '../services/sap-bp.service';
|
|
3
|
+
import { ChangeDetectorRef, Injectable, viewChildren, inject, signal, } from '@angular/core';
|
|
3
4
|
import { SapBpTypeTranslateEnum } from '../models/sap-bp-type-translate.enum';
|
|
4
5
|
import { SapBpTypeEnum } from '../models/sap-bp-type.enum';
|
|
6
|
+
import { SapBpHelperService } from '../services/sap-bp-helper.service';
|
|
5
7
|
import { BpTaxTypeEnum } from '../models/bp-tax-type.enum';
|
|
6
8
|
import { MatPaginator } from '@angular/material/paginator';
|
|
9
|
+
import { MatDialog } from '@angular/material/dialog';
|
|
7
10
|
import * as i0 from "@angular/core";
|
|
8
|
-
import * as i1 from "../services/sap-bp.service";
|
|
9
|
-
import * as i2 from "@angular/material/dialog";
|
|
10
|
-
import * as i3 from "../services/sap-bp-helper.service";
|
|
11
|
-
import * as i4 from "@angular/forms";
|
|
12
11
|
export class SapBpBaseCreateEdit {
|
|
13
|
-
constructor(
|
|
14
|
-
this.
|
|
15
|
-
this.
|
|
16
|
-
this.
|
|
17
|
-
this.
|
|
18
|
-
this.
|
|
19
|
-
this.
|
|
12
|
+
constructor() {
|
|
13
|
+
this.paginator = viewChildren(MatPaginator);
|
|
14
|
+
this.sapBpService = inject(SapBpService);
|
|
15
|
+
this.dialog = inject(MatDialog);
|
|
16
|
+
this.sapBpHelperService = inject(SapBpHelperService);
|
|
17
|
+
this.changeDetector = inject(ChangeDetectorRef);
|
|
18
|
+
this.fb = inject(NonNullableFormBuilder);
|
|
20
19
|
this.form = this.fb.group({
|
|
21
20
|
cardCode: ['', Validators.required],
|
|
22
21
|
cardName: ['', Validators.required],
|
|
@@ -52,23 +51,36 @@ export class SapBpBaseCreateEdit {
|
|
|
52
51
|
status: ['Active', Validators.required],
|
|
53
52
|
taxCode: '',
|
|
54
53
|
});
|
|
55
|
-
this.
|
|
56
|
-
this.
|
|
57
|
-
this.
|
|
58
|
-
this.
|
|
59
|
-
this.
|
|
60
|
-
this.
|
|
61
|
-
this.
|
|
62
|
-
this.
|
|
63
|
-
this.
|
|
64
|
-
this.
|
|
65
|
-
this.
|
|
54
|
+
this.groupCodeList = signal([]);
|
|
55
|
+
this.shipTypeList = signal([]);
|
|
56
|
+
this.industryList = signal([]);
|
|
57
|
+
this.technicianList = signal([]);
|
|
58
|
+
this.salesEmployeeList = signal([]);
|
|
59
|
+
this.territoryList = signal([]);
|
|
60
|
+
this.globalIdList = signal([]);
|
|
61
|
+
this.paymentTermsList = signal([]);
|
|
62
|
+
this.priceList = signal([]);
|
|
63
|
+
this.qryGroupList = signal([]);
|
|
64
|
+
this.currencyList = signal([]);
|
|
65
|
+
this.bpTypeAllowed = signal([]);
|
|
66
|
+
this.initContactPersonList = signal([]);
|
|
67
|
+
this.contactPersonChanged = signal(false);
|
|
68
|
+
this.contactPersons = signal([]);
|
|
69
|
+
this.addressChanged = signal(false);
|
|
70
|
+
this.initBillToAddress = signal([]);
|
|
71
|
+
this.billToAddress = signal([]);
|
|
72
|
+
this.initShipToAddress = signal([]);
|
|
73
|
+
this.shipToAddress = signal([]);
|
|
74
|
+
this.showQryGroup = signal(false);
|
|
75
|
+
this.refreshingDataFromSap = signal(false);
|
|
76
|
+
this.submitted = signal(false);
|
|
77
|
+
this.salesPersonOnlyOnAddress = signal(false);
|
|
66
78
|
this.bpTaxType = BpTaxTypeEnum;
|
|
67
|
-
this.taxesList = [];
|
|
68
|
-
this.refreshingTax = false;
|
|
69
|
-
this.phoneMaxLength = 20;
|
|
70
|
-
this.phonePlaceholder = '';
|
|
71
|
-
this.phoneMask = '';
|
|
79
|
+
this.taxesList = signal([]);
|
|
80
|
+
this.refreshingTax = signal(false);
|
|
81
|
+
this.phoneMaxLength = signal(20);
|
|
82
|
+
this.phonePlaceholder = signal('');
|
|
83
|
+
this.phoneMask = signal('');
|
|
72
84
|
this.oldCardCode = '';
|
|
73
85
|
this.editMode = false;
|
|
74
86
|
this.convertNotUS = false;
|
|
@@ -78,12 +90,11 @@ export class SapBpBaseCreateEdit {
|
|
|
78
90
|
this.editMode = true;
|
|
79
91
|
}
|
|
80
92
|
if (this.userSettings().phoneMask) {
|
|
81
|
-
this.phonePlaceholder
|
|
82
|
-
this.phoneMask
|
|
93
|
+
this.phonePlaceholder.set('(999) 999 9999 ext. 9999999');
|
|
94
|
+
this.phoneMask.set('(000) 000 0000 ext. 0000000');
|
|
83
95
|
}
|
|
84
|
-
this.salesPersonOnlyOnAddress
|
|
85
|
-
|
|
86
|
-
if (!this.salesPersonOnlyOnAddress) {
|
|
96
|
+
this.salesPersonOnlyOnAddress.set(this.userSettings().bpEditSalesPersonOnAddress);
|
|
97
|
+
if (!this.salesPersonOnlyOnAddress()) {
|
|
87
98
|
this.form.controls.salesEmployee.setValidators(Validators.required);
|
|
88
99
|
}
|
|
89
100
|
if (this.userSettings().bpTaxType === BpTaxTypeEnum.Eu) {
|
|
@@ -110,9 +121,9 @@ export class SapBpBaseCreateEdit {
|
|
|
110
121
|
}
|
|
111
122
|
this.setBpTypeAllowed();
|
|
112
123
|
if (bpDetails) {
|
|
113
|
-
this.initContactPersonList
|
|
114
|
-
this.initBillToAddress
|
|
115
|
-
this.initShipToAddress
|
|
124
|
+
this.initContactPersonList.set(bpDetails.contactPersonList);
|
|
125
|
+
this.initBillToAddress.set(bpDetails.addressBillToList);
|
|
126
|
+
this.initShipToAddress.set(bpDetails.addressShipToList);
|
|
116
127
|
this.loadGroupCodeList();
|
|
117
128
|
this.loadQryGroup(false, bpDetails.qryGroupList);
|
|
118
129
|
if (this.userSettings().oracleBpEdit) {
|
|
@@ -190,77 +201,77 @@ export class SapBpBaseCreateEdit {
|
|
|
190
201
|
this.changeDetector.markForCheck();
|
|
191
202
|
}
|
|
192
203
|
loadGroupCodeList(refresh = false) {
|
|
193
|
-
this.refreshingDataFromSap
|
|
204
|
+
this.refreshingDataFromSap.set(true);
|
|
194
205
|
this.changeDetector.markForCheck();
|
|
195
206
|
this.sapBpService
|
|
196
207
|
.getGroupCode(this.form.controls.cardType.value, refresh)
|
|
197
208
|
.subscribe(res => {
|
|
198
|
-
this.groupCodeList
|
|
209
|
+
this.groupCodeList.set(res);
|
|
199
210
|
this.form.controls.groupCode.setValue(res ? res[0].id : null);
|
|
200
|
-
this.refreshingDataFromSap
|
|
211
|
+
this.refreshingDataFromSap.set(false);
|
|
201
212
|
this.changeDetector.markForCheck();
|
|
202
213
|
});
|
|
203
214
|
}
|
|
204
215
|
loadShipType(refresh = false) {
|
|
205
|
-
this.refreshingDataFromSap
|
|
216
|
+
this.refreshingDataFromSap.set(true);
|
|
206
217
|
this.changeDetector.markForCheck();
|
|
207
218
|
this.sapBpService.getShipType(refresh).subscribe(res => {
|
|
208
|
-
this.shipTypeList
|
|
209
|
-
this.refreshingDataFromSap
|
|
219
|
+
this.shipTypeList.set(res);
|
|
220
|
+
this.refreshingDataFromSap.set(false);
|
|
210
221
|
this.changeDetector.markForCheck();
|
|
211
222
|
});
|
|
212
223
|
}
|
|
213
224
|
loadIndustry(refresh = false) {
|
|
214
|
-
this.refreshingDataFromSap
|
|
225
|
+
this.refreshingDataFromSap.set(true);
|
|
215
226
|
this.changeDetector.markForCheck();
|
|
216
227
|
this.sapBpService.getIndustry(refresh).subscribe(res => {
|
|
217
|
-
this.industryList
|
|
218
|
-
this.refreshingDataFromSap
|
|
228
|
+
this.industryList.set(res);
|
|
229
|
+
this.refreshingDataFromSap.set(false);
|
|
219
230
|
this.changeDetector.markForCheck();
|
|
220
231
|
});
|
|
221
232
|
}
|
|
222
233
|
loadTechnician(refresh = false) {
|
|
223
|
-
this.refreshingDataFromSap
|
|
234
|
+
this.refreshingDataFromSap.set(true);
|
|
224
235
|
this.changeDetector.markForCheck();
|
|
225
236
|
this.sapBpService.getTechnician(refresh).subscribe(res => {
|
|
226
|
-
this.technicianList
|
|
227
|
-
this.refreshingDataFromSap
|
|
237
|
+
this.technicianList.set(res);
|
|
238
|
+
this.refreshingDataFromSap.set(false);
|
|
228
239
|
this.changeDetector.markForCheck();
|
|
229
240
|
});
|
|
230
241
|
}
|
|
231
242
|
loadSalesEmployee(refresh = false) {
|
|
232
|
-
this.refreshingDataFromSap
|
|
243
|
+
this.refreshingDataFromSap.set(true);
|
|
233
244
|
this.changeDetector.markForCheck();
|
|
234
245
|
this.sapBpService.getSalesEmployee(refresh).subscribe(res => {
|
|
235
|
-
this.salesEmployeeList
|
|
236
|
-
this.refreshingDataFromSap
|
|
246
|
+
this.salesEmployeeList.set(res);
|
|
247
|
+
this.refreshingDataFromSap.set(false);
|
|
237
248
|
this.changeDetector.markForCheck();
|
|
238
249
|
});
|
|
239
250
|
}
|
|
240
251
|
loadTerritory(refresh = false) {
|
|
241
|
-
this.refreshingDataFromSap
|
|
252
|
+
this.refreshingDataFromSap.set(true);
|
|
242
253
|
this.changeDetector.markForCheck();
|
|
243
254
|
this.sapBpService.getTerritory(refresh).subscribe(res => {
|
|
244
|
-
this.territoryList
|
|
245
|
-
this.refreshingDataFromSap
|
|
255
|
+
this.territoryList.set(res);
|
|
256
|
+
this.refreshingDataFromSap.set(false);
|
|
246
257
|
this.changeDetector.markForCheck();
|
|
247
258
|
});
|
|
248
259
|
}
|
|
249
260
|
loadGlobalId(refresh = false) {
|
|
250
|
-
this.refreshingDataFromSap
|
|
261
|
+
this.refreshingDataFromSap.set(true);
|
|
251
262
|
this.changeDetector.markForCheck();
|
|
252
263
|
this.sapBpService.getGlobalId(refresh).subscribe(res => {
|
|
253
|
-
this.globalIdList
|
|
254
|
-
this.refreshingDataFromSap
|
|
264
|
+
this.globalIdList.set(res);
|
|
265
|
+
this.refreshingDataFromSap.set(false);
|
|
255
266
|
this.changeDetector.markForCheck();
|
|
256
267
|
});
|
|
257
268
|
}
|
|
258
269
|
loadPaymentTerms(refresh = false) {
|
|
259
|
-
this.refreshingDataFromSap
|
|
270
|
+
this.refreshingDataFromSap.set(true);
|
|
260
271
|
this.changeDetector.markForCheck();
|
|
261
272
|
this.sapBpService.getPaymentTerms(refresh).subscribe(res => {
|
|
262
|
-
this.paymentTermsList
|
|
263
|
-
this.refreshingDataFromSap
|
|
273
|
+
this.paymentTermsList.set(res);
|
|
274
|
+
this.refreshingDataFromSap.set(false);
|
|
264
275
|
if (!this.editMode) {
|
|
265
276
|
const type = this.form.controls.cardType.value;
|
|
266
277
|
if (type) {
|
|
@@ -271,13 +282,13 @@ export class SapBpBaseCreateEdit {
|
|
|
271
282
|
});
|
|
272
283
|
}
|
|
273
284
|
loadPriceList(refresh = false) {
|
|
274
|
-
this.refreshingDataFromSap
|
|
285
|
+
this.refreshingDataFromSap.set(true);
|
|
275
286
|
this.changeDetector.markForCheck();
|
|
276
287
|
this.sapBpService.getPricelist(refresh).subscribe(res => {
|
|
277
|
-
this.priceList
|
|
278
|
-
this.refreshingDataFromSap
|
|
288
|
+
this.priceList.set(res);
|
|
289
|
+
this.refreshingDataFromSap.set(false);
|
|
279
290
|
if (!this.editMode) {
|
|
280
|
-
const defaultPL =
|
|
291
|
+
const defaultPL = res.find(pl => pl.isDefault);
|
|
281
292
|
if (defaultPL) {
|
|
282
293
|
this.form.get('priceList').setValue(defaultPL.id);
|
|
283
294
|
}
|
|
@@ -286,45 +297,46 @@ export class SapBpBaseCreateEdit {
|
|
|
286
297
|
});
|
|
287
298
|
}
|
|
288
299
|
loadQryGroup(refresh = false, baseValues) {
|
|
289
|
-
this.refreshingDataFromSap
|
|
300
|
+
this.refreshingDataFromSap.set(true);
|
|
290
301
|
this.changeDetector.markForCheck();
|
|
291
302
|
this.sapBpService.getQryGroup(refresh).subscribe(res => {
|
|
292
|
-
|
|
303
|
+
const updatedQryGroup = res.map((group, index) => {
|
|
293
304
|
group.value = baseValues ? baseValues[index].value : 'N';
|
|
294
305
|
return group;
|
|
295
306
|
});
|
|
296
|
-
this.
|
|
307
|
+
this.qryGroupList.set(updatedQryGroup);
|
|
308
|
+
this.refreshingDataFromSap.set(false);
|
|
297
309
|
this.changeDetector.markForCheck();
|
|
298
310
|
});
|
|
299
311
|
}
|
|
300
312
|
loadCurrency(refresh = false) {
|
|
301
|
-
this.refreshingDataFromSap
|
|
313
|
+
this.refreshingDataFromSap.set(true);
|
|
302
314
|
this.changeDetector.markForCheck();
|
|
303
315
|
this.sapBpService.getCurrency(refresh).subscribe(res => {
|
|
304
|
-
this.currencyList
|
|
305
|
-
this.refreshingDataFromSap
|
|
316
|
+
this.currencyList.set(res);
|
|
317
|
+
this.refreshingDataFromSap.set(false);
|
|
306
318
|
this.changeDetector.markForCheck();
|
|
307
319
|
});
|
|
308
320
|
}
|
|
309
321
|
loadTaxes(refresh = false) {
|
|
310
|
-
this.refreshingTax
|
|
322
|
+
this.refreshingTax.set(true);
|
|
311
323
|
this.changeDetector.markForCheck();
|
|
312
324
|
this.sapBpService.getTaxes(refresh).subscribe(res => {
|
|
313
|
-
this.taxesList
|
|
314
|
-
this.refreshingTax
|
|
325
|
+
this.taxesList.set(res);
|
|
326
|
+
this.refreshingTax.set(false);
|
|
315
327
|
this.changeDetector.markForCheck();
|
|
316
328
|
});
|
|
317
329
|
}
|
|
318
330
|
setShipToAddress(event) {
|
|
319
|
-
this.shipToAddress
|
|
331
|
+
this.shipToAddress.set(event);
|
|
320
332
|
this.changeDetector.markForCheck();
|
|
321
333
|
}
|
|
322
334
|
setBillToAddress(event) {
|
|
323
|
-
this.billToAddress
|
|
335
|
+
this.billToAddress.set(event);
|
|
324
336
|
this.changeDetector.markForCheck();
|
|
325
337
|
}
|
|
326
338
|
setAddressChanged(event) {
|
|
327
|
-
this.addressChanged
|
|
339
|
+
this.addressChanged.set(event);
|
|
328
340
|
this.changeDetector.markForCheck();
|
|
329
341
|
}
|
|
330
342
|
disableEditInformationData(bpDetails) {
|
|
@@ -422,22 +434,22 @@ export class SapBpBaseCreateEdit {
|
|
|
422
434
|
}
|
|
423
435
|
setPhonePlaceholder(countryCode) {
|
|
424
436
|
// 20 sap length, -4 spaces, +10 extra char for visible
|
|
425
|
-
this.phoneMaxLength
|
|
426
|
-
const extLength = this.phoneMaxLength - 20;
|
|
437
|
+
this.phoneMaxLength.set(20 - countryCode.length - 4 + 10);
|
|
438
|
+
const extLength = this.phoneMaxLength() - 20;
|
|
427
439
|
let phonePlaceholder = '(999) 999 9999 ext. ';
|
|
428
440
|
let phoneMask = '(000) 000 0000 ext. ';
|
|
429
441
|
for (let i = 0; i < extLength; i++) {
|
|
430
442
|
phonePlaceholder += '9';
|
|
431
443
|
phoneMask += '9';
|
|
432
444
|
}
|
|
433
|
-
this.phonePlaceholder
|
|
434
|
-
this.phoneMask
|
|
445
|
+
this.phonePlaceholder.set(phonePlaceholder);
|
|
446
|
+
this.phoneMask.set(phoneMask);
|
|
435
447
|
this.changeDetector.markForCheck();
|
|
436
448
|
}
|
|
437
449
|
prepareDataToSend() {
|
|
438
450
|
const values = this.form.getRawValue();
|
|
439
451
|
let phone1 = values.phone1;
|
|
440
|
-
if (!this.editMode && this.phoneMask) {
|
|
452
|
+
if (!this.editMode && this.phoneMask()) {
|
|
441
453
|
phone1 =
|
|
442
454
|
values.countryCodePhone1 +
|
|
443
455
|
'-' +
|
|
@@ -478,12 +490,12 @@ export class SapBpBaseCreateEdit {
|
|
|
478
490
|
pricelistCode: values.priceList,
|
|
479
491
|
deliveryInstructions: values.deliveryInstructions,
|
|
480
492
|
freeText: values.freeText,
|
|
481
|
-
contactPersonList: this.contactPersons || [],
|
|
482
|
-
addressShipToList: this.shipToAddress || [],
|
|
483
|
-
addressBillToList: this.billToAddress || [],
|
|
484
|
-
qryGroupList: this.qryGroupList,
|
|
485
|
-
addressChange: this.addressChanged,
|
|
486
|
-
contactChange: this.contactPersonChanged,
|
|
493
|
+
contactPersonList: this.contactPersons() || [],
|
|
494
|
+
addressShipToList: this.shipToAddress() || [],
|
|
495
|
+
addressBillToList: this.billToAddress() || [],
|
|
496
|
+
qryGroupList: this.qryGroupList(),
|
|
497
|
+
addressChange: this.addressChanged(),
|
|
498
|
+
contactChange: this.contactPersonChanged(),
|
|
487
499
|
cardCode: values.cardCode,
|
|
488
500
|
cardName: values.cardName,
|
|
489
501
|
cardType: this.convertToTranslateBpType(values.cardType),
|
|
@@ -501,15 +513,15 @@ export class SapBpBaseCreateEdit {
|
|
|
501
513
|
});
|
|
502
514
|
}
|
|
503
515
|
setDefaultPaymentTerm(val) {
|
|
504
|
-
if (this.paymentTermsList?.length > 0) {
|
|
516
|
+
if (this.paymentTermsList()?.length > 0) {
|
|
505
517
|
if (val === SapBpTypeEnum.Supplier) {
|
|
506
|
-
const paymentTermFound = this.paymentTermsList.find(paymentTerm => paymentTerm.isDefaultForSupplier);
|
|
518
|
+
const paymentTermFound = this.paymentTermsList().find(paymentTerm => paymentTerm.isDefaultForSupplier);
|
|
507
519
|
if (paymentTermFound) {
|
|
508
520
|
this.form.controls.paymentCode.setValue(paymentTermFound.id);
|
|
509
521
|
}
|
|
510
522
|
}
|
|
511
523
|
else {
|
|
512
|
-
const paymentTermFound = this.paymentTermsList.find(paymentTerm => paymentTerm.isDefaultForCustomer);
|
|
524
|
+
const paymentTermFound = this.paymentTermsList().find(paymentTerm => paymentTerm.isDefaultForCustomer);
|
|
513
525
|
if (paymentTermFound) {
|
|
514
526
|
this.form.controls.paymentCode.setValue(paymentTermFound.id);
|
|
515
527
|
}
|
|
@@ -518,30 +530,31 @@ export class SapBpBaseCreateEdit {
|
|
|
518
530
|
this.changeDetector.markForCheck();
|
|
519
531
|
}
|
|
520
532
|
setBpTypeAllowed() {
|
|
521
|
-
|
|
533
|
+
const bpTypeAllowedValues = [];
|
|
522
534
|
const cardType = this.form.controls.cardType.value;
|
|
523
535
|
if (this.editMode) {
|
|
524
536
|
if (this.userSettings().oracleBpEdit) {
|
|
525
|
-
|
|
537
|
+
bpTypeAllowedValues.push(cardType);
|
|
526
538
|
}
|
|
527
539
|
else {
|
|
528
540
|
if (cardType === SapBpTypeEnum.Lead) {
|
|
529
|
-
|
|
530
|
-
|
|
541
|
+
bpTypeAllowedValues.push(SapBpTypeEnum.Lead);
|
|
542
|
+
bpTypeAllowedValues.push(SapBpTypeEnum.Customer);
|
|
531
543
|
}
|
|
532
544
|
else if (cardType === SapBpTypeEnum.Supplier) {
|
|
533
|
-
|
|
545
|
+
bpTypeAllowedValues.push(SapBpTypeEnum.Supplier);
|
|
534
546
|
}
|
|
535
547
|
else {
|
|
536
|
-
|
|
548
|
+
bpTypeAllowedValues.push(SapBpTypeEnum.Customer);
|
|
537
549
|
}
|
|
538
550
|
}
|
|
539
551
|
}
|
|
540
552
|
else {
|
|
541
553
|
this.userSettings().bpEditTypeAllowed.forEach(bpType => {
|
|
542
|
-
|
|
554
|
+
bpTypeAllowedValues.push(bpType);
|
|
543
555
|
});
|
|
544
556
|
}
|
|
557
|
+
this.bpTypeAllowed.set(bpTypeAllowedValues);
|
|
545
558
|
this.changeDetector.markForCheck();
|
|
546
559
|
}
|
|
547
560
|
convertBpType(type) {
|
|
@@ -564,13 +577,10 @@ export class SapBpBaseCreateEdit {
|
|
|
564
577
|
return SapBpTypeTranslateEnum.Supplier;
|
|
565
578
|
}
|
|
566
579
|
}
|
|
567
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: SapBpBaseCreateEdit, deps: [
|
|
580
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: SapBpBaseCreateEdit, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
568
581
|
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: SapBpBaseCreateEdit }); }
|
|
569
582
|
}
|
|
570
583
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: SapBpBaseCreateEdit, decorators: [{
|
|
571
584
|
type: Injectable
|
|
572
|
-
}]
|
|
573
|
-
type: ViewChildren,
|
|
574
|
-
args: [MatPaginator]
|
|
575
|
-
}] } });
|
|
576
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2FwLWJwLWJhc2UtY3JlYXRlLWVkaXQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtc3Qtc2FwLWJwL3NyYy9saWIvY29tcG9uZW50cy9zYXAtYnAtYmFzZS1jcmVhdGUtZWRpdC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQTBCLFVBQVUsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBVXBFLE9BQU8sRUFFTCxVQUFVLEVBRVYsU0FBUyxFQUNULFlBQVksR0FDYixNQUFNLGVBQWUsQ0FBQztBQU92QixPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSxzQ0FBc0MsQ0FBQztBQUM5RSxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFHM0QsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBRTNELE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQzs7Ozs7O0FBSTNELE1BQU0sT0FBZ0IsbUJBQW1CO0lBc0Z2QyxZQUNZLFlBQTBCLEVBQzFCLE1BQWlCLEVBQ2pCLGtCQUFzQyxFQUN0QyxjQUFpQyxFQUNqQyxFQUEwQjtRQUoxQixpQkFBWSxHQUFaLFlBQVksQ0FBYztRQUMxQixXQUFNLEdBQU4sTUFBTSxDQUFXO1FBQ2pCLHVCQUFrQixHQUFsQixrQkFBa0IsQ0FBb0I7UUFDdEMsbUJBQWMsR0FBZCxjQUFjLENBQW1CO1FBQ2pDLE9BQUUsR0FBRixFQUFFLENBQXdCO1FBMUZWLGNBQVMsR0FBRyxJQUFJLFNBQVMsRUFBZ0IsQ0FBQztRQUV0RSxTQUFJLEdBQUcsSUFBSSxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUM7WUFDbkIsUUFBUSxFQUFFLENBQUMsRUFBRSxFQUFFLFVBQVUsQ0FBQyxRQUFRLENBQUM7WUFDbkMsUUFBUSxFQUFFLENBQUMsRUFBRSxFQUFFLFVBQVUsQ0FBQyxRQUFRLENBQUM7WUFDbkMsUUFBUSxFQUFF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RTtnQkFDckQsSUFBSSxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUM7WUFDbEMsQ0FBQyxDQUFDLENBQUM7UUFDTCxDQUFDO1FBRUQsSUFBSSxDQUFDLGNBQWMsQ0FBQyxZQUFZLEVBQUUsQ0FBQztJQUNyQyxDQUFDO0lBRU8sYUFBYSxDQUFDLElBQTRCO1FBQ2hELFFBQVEsSUFBSSxFQUFFLENBQUM7WUFDYixLQUFLLHNCQUFzQixDQUFDLFFBQVE7Z0JBQ2xDLE9BQU8sYUFBYSxDQUFDLFFBQVEsQ0FBQztZQUNoQyxLQUFLLHNCQUFzQixDQUFDLElBQUk7Z0JBQzlCLE9BQU8sYUFBYSxDQUFDLElBQUksQ0FBQztZQUM1QixLQUFLLHNCQUFzQixDQUFDLFFBQVE7Z0JBQ2xDLE9BQU8sYUFBYSxDQUFDLFFBQVEsQ0FBQztRQUNsQyxDQUFDO0lBQ0gsQ0FBQztJQUVPLHdCQUF3QixDQUM5QixJQUFtQjtRQUVuQixRQUFRLElBQUksRUFBRSxDQUFDO1lBQ2IsS0FBSyxhQUFhLENBQUMsUUFBUTtnQkFDekIsT0FBTyxzQkFBc0IsQ0FBQyxRQUFRLENBQUM7WUFDekMsS0FBSyxhQUFhLENBQUMsSUFBSTtnQkFDckIsT0FBTyxzQkFBc0IsQ0FBQyxJQUFJLENBQUM7WUFDckMsS0FBSyxhQUFhLENBQUMsUUFBUTtnQkFDekIsT0FBTyxzQkFBc0IsQ0FBQyxRQUFRLENBQUM7UUFDM0MsQ0FBQztJQUNILENBQUM7K0dBbHJCbUIsbUJBQW1CO21IQUFuQixtQkFBbUI7OzRGQUFuQixtQkFBbUI7a0JBRHhDLFVBQVU7K01BRW1CLFNBQVM7c0JBQXBDLFlBQVk7dUJBQUMsWUFBWSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IE5vbk51bGxhYmxlRm9ybUJ1aWxkZXIsIFZhbGlkYXRvcnMgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XHJcbmltcG9ydCB7IFNhcEJwU2VydmljZSB9IGZyb20gJy4uL3NlcnZpY2VzL3NhcC1icC5zZXJ2aWNlJztcclxuaW1wb3J0IHsgU2FwQnBHcm91cENvZGVNb2RlbCB9IGZyb20gJy4uL21vZGVscy9zYXAtYnAtZ3JvdXAtY29kZS5tb2RlbCc7XHJcbmltcG9ydCB7IFNhcEJwU2hpcFR5cGVNb2RlbCB9IGZyb20gJy4uL21vZGVscy9zYXAtYnAtc2hpcC10eXBlLm1vZGVsJztcclxuaW1wb3J0IHsgU2FwQnBJbmR1c3RyeU1vZGVsIH0gZnJvbSAnLi4vbW9kZWxzL3NhcC1icC1pbmR1c3RyeS5tb2RlbCc7XHJcbmltcG9ydCB7IFNhcEJwVGVjaG5pY2lhbk1vZGVsIH0gZnJvbSAnLi4vbW9kZWxzL3NhcC1icC10ZWNobmljaWFuLm1vZGVsJztcclxuaW1wb3J0IHsgU2FwQnBTYWxlc0VtcGxveWVlTW9kZWwgfSBmcm9tICcuLi9tb2RlbHMvc2FwLWJwLXNhbGVzLWVtcGxveWVlLm1vZGVsJztcclxuaW1wb3J0IHsgU2FwQnBUZXJyaXRvcnlNb2RlbCB9IGZyb20gJy4uL21vZGVscy9zYXAtYnAtdGVycml0b3J5Lm1vZGVsJztcclxuaW1wb3J0IHsgU2FwQnBHbG9iYWxJZE1vZGVsIH0gZnJvbSAnLi4vbW9kZWxzL3NhcC1icC1nbG9iYWwtaWQubW9kZWwnO1xyXG5pbXBvcnQgeyBTYXBCcENvbnRhY3RQZXJzb25Nb2RlbCB9IGZyb20gJy4uL21vZGVscy9zYXAtYnAtY29udGFjdC1wZXJzb24ubW9kZWwnO1xyXG5pbXBvcnQge1xyXG4gIENoYW5nZURldGVjdG9yUmVmLFxyXG4gIEluamVjdGFibGUsXHJcbiAgSW5wdXRTaWduYWwsXHJcbiAgUXVlcnlMaXN0LFxyXG4gIFZpZXdDaGlsZHJlbixcclxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgU2FwQnBBZGRyZXNzTW9kZWwgfSBmcm9tICcuLi9tb2RlbHMvc2FwLWJwLWFkZHJlc3MubW9kZWwnO1xyXG5pbXBvcnQgeyBTYXBCcFBheW1lbnRUZXJtc01vZGVsIH0gZnJvbSAnLi4vbW9kZWxzL3NhcC1icC1wYXltZW50LXRlcm1zLm1vZGVsJztcclxuaW1wb3J0IHsgU2FwQnBQcmljZWxpc3RNb2RlbCB9IGZyb20gJy4uL21vZGVscy9zYXAtYnAtcHJpY2VsaXN0Lm1vZGVsJztcclxuaW1wb3J0IHsgU2FwQnBRcnlHcm91cE1vZGVsIH0gZnJvbSAnLi4vbW9kZWxzL3NhcC1icC1xcnktZ3JvdXAubW9kZWwnO1xyXG5pbXBvcnQgeyBTYXBCcENyZWF0ZU1vZGVsIH0gZnJvbSAnLi4vbW9kZWxzL3NhcC1icC1jcmVhdGUubW9kZWwnO1xyXG5pbXBvcnQgeyBTYXBCcE1vZGVsIH0gZnJvbSAnLi4vbW9kZWxzL3NhcC1icC5tb2RlbCc7XHJcbmltcG9ydCB7IFNhcEJwVHlwZVRyYW5zbGF0ZUVudW0gfSBmcm9tICcuLi9tb2RlbHMvc2FwLWJwLXR5cGUtdHJhbnNsYXRlLmVudW0nO1xyXG5pbXBvcnQgeyBTYXBCcFR5cGVFbnVtIH0gZnJvbSAnLi4vbW9kZWxzL3NhcC1icC10eXBlLmVudW0nO1xyXG5pbXBvcnQgeyBTYXBCcEhlbHBlclNlcnZpY2UgfSBmcm9tICcuLi9zZXJ2aWNlcy9zYXAtYnAtaGVscGVyLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBTYXBCcFRheCB9IGZyb20gJy4uL21vZGVscy9zYXAtYnAtdGF4Lm1vZGVsJztcclxuaW1wb3J0IHsgQnBUYXhUeXBlRW51bSB9IGZyb20gJy4uL21vZGVscy9icC10YXgtdHlwZS5lbnVtJztcclxuaW1wb3J0IHsgU2FwQnBFZGl0QXV0aEZsYWdzRW51bSB9IGZyb20gJy4uL21vZGVscy9zYXAtYnAtZWRpdC1hdXRoLWZsYWdzLmVudW0nO1xyXG5pbXBvcnQgeyBNYXRQYWdpbmF0b3IgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9wYWdpbmF0b3InO1xyXG5pbXBvcnQgeyBNYXREaWFsb2cgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9kaWFsb2cnO1xyXG5cclxuQEluamVjdGFibGUoKVxyXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgU2FwQnBCYXNlQ3JlYXRlRWRpdCB7XHJcbiAgQFZpZXdDaGlsZHJlbihNYXRQYWdpbmF0b3IpIHBhZ2luYXRvciA9IG5ldyBRdWVyeUxpc3Q8TWF0UGFnaW5hdG9yPigpO1xyXG5cclxuICBmb3JtID0gdGhpcy5mYi5ncm91cCh7XHJcbiAgICBjYXJkQ29kZTogWycnLCBWYWxpZGF0b3JzLnJlcXVpcmVkXSxcclxuICAgIGNhcmROYW1lOiBbJycsIFZhbGlkYXRvcnMucmVxdWlyZWRdLFxyXG4gICAgY2FyZFR5cGU6IFtTYXBCcFR5cGVFbnVtLkN1c3RvbWVyLCBWYWxpZGF0b3JzLnJlcXVpcmVkXSxcclxuICAgIGNhcmRGb3JlaWduTmFtZTogJycsXHJcbiAgICBncm91cENvZGU6IFs8bnVtYmVyIHwgbnVsbD5udWxsLCBWYWxpZGF0b3JzLnJlcXVpcmVkXSxcclxuICAgIGN1cnJlbmN5OiBbJycsIFZhbGlkYXRvcnMucmVxdWlyZWRdLFxyXG4gICAgY291bnRyeUNvZGVQaG9uZTE6ICcnLFxyXG4gICAgcGhvbmUxOiBbJycsIFZhbGlkYXRvcnMucmVxdWlyZWRdLFxyXG4gICAgc2FsZXNFbXBsb3llZTogPG51bWJlciB8IG51bGw+bnVsbCxcclxuICAgIGdsb2JhbEFjY291bnQ6IFsnJywgVmFsaWRhdG9ycy5yZXF1aXJlZF0sXHJcbiAgICB2YXRTdGF0dXM6ICcnLFxyXG4gICAgbGljVHJhZE51bTogJycsXHJcbiAgICBwaG9uZTI6ICcnLFxyXG4gICAgY2VsbHVsYXI6ICcnLFxyXG4gICAgZmF4OiAnJyxcclxuICAgIGVtYWlsOiAnJyxcclxuICAgIHdlYlNpdGU6ICcnLFxyXG4gICAgc2hpcFR5cGU6IDxudW1iZXIgfCBudWxsPm51bGwsXHJcbiAgICBpbmR1c3RyeUNvZGU6IDxudW1iZXIgfCBudWxsPm51bGwsXHJcbiAgICBhZGRJZDogJycsXHJcbiAgICB2YXRJZFVuaWZpZWQ6ICcnLFxyXG4gICAgcmVnaXN0ZXJObzogJycsXHJcbiAgICBub3RlczogJycsXHJcbiAgICB0ZWNobmljaWFuOiA8bnVtYmVyIHwgbnVsbD5udWxsLFxyXG4gICAgdGVycml0b3J5OiA8bnVtYmVyIHwgbnVsbD5udWxsLFxyXG4gICAgZ2xvYmFsSWQ6ICcnLFxyXG4gICAgcGF5bWVudENvZGU6IDxudW1iZXIgfCBudWxsPm51bGwsXHJcbiAgICBwcmljZUxpc3Q6IDxudW1iZXIgfCBudWxsPm51bGwsXHJcbiAgICBkZWxpdmVyeUluc3RydWN0aW9uczogJycsXHJcbiAgICBmcmVlVGV4dDogJycsXHJcbiAgICBpbmFjdGl2ZUNvbW1lbnQ6ICcnLFxyXG4gICAgc3RhdHVzOiBbJ0FjdGl2ZScsIFZhbGlkYXRvcnMucmVxdWlyZWRdLFxyXG4gICAgdGF4Q29kZTogJycsXHJcbiAgfSk7XHJcblxyXG4gIHVzZXJTZXR0aW5nczogSW5wdXRTaWduYWw8U2FwQnBVc2VyU2V0dGluZ3M+O1xyXG5cclxuICBncm91cENvZGVMaXN0OiBTYXBCcEdyb3VwQ29kZU1vZGVsW107XHJcbiAgc2hpcFR5cGVMaXN0OiBTYXBCcFNoaXBUeXBlTW9kZWxbXTtcclxuICBpbmR1c3RyeUxpc3Q6IFNhcEJwSW5kdXN0cnlNb2RlbFtdO1xyXG4gIHRlY2huaWNpYW5MaXN0OiBTYXBCcFRlY2huaWNpYW5Nb2RlbFtdO1xyXG4gIHNhbGVzRW1wbG95ZWVMaXN0OiBTYXBCcFNhbGVzRW1wbG95ZWVNb2RlbFtdO1xyXG4gIHRlcnJpdG9yeUxpc3Q6IFNhcEJwVGVycml0b3J5TW9kZWxbXTtcclxuICBnbG9iYWxJZExpc3Q6IFNhcEJwR2xvYmFsSWRNb2RlbFtdO1xyXG4gIHBheW1lbnRUZXJtc0xpc3Q6IFNhcEJwUGF5bWVudFRlcm1zTW9kZWxbXTtcclxuICBwcmljZUxpc3Q6IFNhcEJwUHJpY2VsaXN0TW9kZWxbXTtcclxuICBxcnlHcm91cExpc3Q6IFNhcEJwUXJ5R3JvdXBNb2RlbFtdO1xyXG4gIGN1cnJlbmN5TGlzdDogc3RyaW5nW107XHJcbiAgYnBUeXBlQWxsb3dlZDogU2FwQnBUeXBlRW51bVtdO1xyXG5cclxuICBpbml0Q29udGFjdFBlcnNvbkxpc3Q6IFNhcEJwQ29udGFjdFBlcnNvbk1vZGVsW10gPSBbXTtcclxuICBjb250YWN0UGVyc29uQ2hhbmdlZCA9IGZhbHNlO1xyXG4gIGNvbnRhY3RQZXJzb25zOiBTYXBCcENvbnRhY3RQZXJzb25Nb2RlbFtdO1xyXG5cclxuICBhZGRyZXNzQ2hhbmdlZCA9IGZhbHNlO1xyXG5cclxuICBpbml0QmlsbFRvQWRkcmVzczogU2FwQnBBZGRyZXNzTW9kZWxbXSA9IFtdO1xyXG4gIGJpbGxUb0FkZHJlc3M6IFNhcEJwQWRkcmVzc01vZGVsW10gPSBbXTtcclxuXHJcbiAgaW5pdFNoaXBUb0FkZHJlc3M6IFNhcEJwQWRkcmVzc01vZGVsW10gPSBbXTtcclxuICBzaGlwVG9BZGRyZXNzOiBTYXBCcEFkZHJlc3NNb2RlbFtdID0gW107XHJcblxyXG4gIHNob3dRcnlHcm91cCA9IGZhbHNlO1xyXG5cclxuICByZWZyZXNoaW5nRGF0YUZyb21TYXAgPSBmYWxzZTtcclxuXHJcbiAgc3VibWl0dGVkID0gZmFsc2U7XHJcblxyXG4gIHNhbGVzUGVyc29uT25seU9uQWRkcmVzcyA9IGZhbHNlO1xyXG4gIGJwVGF4VHlwZSA9IEJwVGF4VHlwZUVudW07XHJcblxyXG4gIHRheGVzTGlzdDogU2FwQnBUYXhbXSA9IFtdO1xyXG4gIHJlZnJlc2hpbmdUYXggPSBmYWxzZTtcclxuXHJcbiAgcGhvbmVNYXhMZW5ndGggPSAyMDtcclxuICBwaG9uZVBsYWNlaG9sZGVyID0gJyc7XHJcbiAgcGhvbmVNYXNrID0gJyc7XHJcblxyXG4gIHByb3RlY3RlZCBvbGRDYXJkQ29kZSA9ICcnO1xyXG4gIHByb3RlY3RlZCBlZGl0TW9kZSA9IGZhbHNlO1xyXG4gIHByb3RlY3RlZCBjb252ZXJ0Tm90VVMgPSBmYWxzZTtcclxuXHJcbiAgY29uc3RydWN0b3IoXHJcbiAgICBwcm90ZWN0ZWQgc2FwQnBTZXJ2aWNlOiBTYXBCcFNlcnZpY2UsXHJcbiAgICBwcm90ZWN0ZWQgZGlhbG9nOiBNYXREaWFsb2csXHJcbiAgICBwcm90ZWN0ZWQgc2FwQnBIZWxwZXJTZXJ2aWNlOiBTYXBCcEhlbHBlclNlcnZpY2UsXHJcbiAgICBwcm90ZWN0ZWQgY2hhbmdlRGV0ZWN0b3I6IENoYW5nZURldGVjdG9yUmVmLFxyXG4gICAgcHJvdGVjdGVkIGZiOiBOb25OdWxsYWJsZUZvcm1CdWlsZGVyXHJcbiAgKSB7fVxyXG5cclxuICBpbml0Rm9ybShicERldGFpbHM/OiBTYXBCcE1vZGVsKSB7XHJcbiAgICBpZiAoYnBEZXRhaWxzKSB7XHJcbiAgICAgIHRoaXMuZWRpdE1vZGUgPSB0cnVlO1xyXG4gICAgfVxyXG5cclxuICAgIGlmICh0aGlzLnVzZXJTZXR0aW5ncygpLnBob25lTWFzaykge1xyXG4gICAgICB0aGlzLnBob25lUGxhY2Vob2xkZXIgPSAnKDk5OSkgOTk5IDk5OTkgZXh0LiA5OTk5OTk5JztcclxuICAgICAgdGhpcy5waG9uZU1hc2sgPSAnKDAwMCkgMDAwIDAwMDAgZXh0LiAwMDAwMDAwJztcclxuICAgIH1cclxuICAgIHRoaXMuc2FsZXNQZXJzb25Pbmx5T25BZGRyZXNzID1cclxuICAgICAgdGhpcy51c2VyU2V0dGluZ3MoKS5icEVkaXRTYWxlc1BlcnNvbk9uQWRkcmVzcztcclxuXHJcbiAgICBpZiAoIXRoaXMuc2FsZXNQZXJzb25Pbmx5T25BZGRyZXNzKSB7XHJcbiAgICAgIHRoaXMuZm9ybS5jb250cm9scy5zYWxlc0VtcGxveWVlLnNldFZhbGlkYXRvcnMoVmFsaWRhdG9ycy5yZXF1aXJlZCk7XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKHRoaXMudXNlclNldHRpbmdzKCkuYnBUYXhUeXBlID09PSBCcFRheFR5cGVFbnVtLkV1KSB7XHJcbiAgICAgIHRoaXMubG9hZFRheGVzKGZhbHNlKTtcclxuICAgIH1cclxuXHJcbiAgICBpZiAoXHJcbiAgICAgIGJwRGV0YWlscz8uY2FyZFR5cGUgPT09IFNhcEJwVHlwZVRyYW5zbGF0ZUVudW0uTGVhZCAmJlxyXG4gICAgICAhdGhpcy51c2VyU2V0dGluZ3MoKS5vcmFjbGVCcEVkaXRcclxuICAgICkge1xyXG4gICAgICB0aGlzLmNvbnZlcnROb3RVUyA9IHRydWU7XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKCF0aGlzLmVkaXRNb2RlKSB7XHJcbiAgICAgIHRoaXMuZm9ybS5jb250cm9scy5jb3VudHJ5Q29kZVBob25lMS5zZXRWYWxpZGF0b3JzKFZhbGlkYXRvcnMucmVxdWlyZWQpO1xyXG4gICAgICB0aGlzLmZvcm0uY29udHJvbHMucGhvbmUxLmRpc2FibGUoKTtcclxuXHJcbiAgICAgIHRoaXMuZm9ybS5jb250cm9scy5jb3VudHJ5Q29kZVBob25lMS52YWx1ZUNoYW5nZXMuc3Vic2NyaWJlKHJlcyA9PiB7XHJcbiAgICAgICAgaWYgKHJlcykge1xyXG4gICAgICAgICAgdGhpcy5mb3JtLmNvbnRyb2xzLnBob25lMS5lbmFibGUoKTtcclxuXHJcbiAgICAgICAgICBpZiAodGhpcy51c2VyU2V0dGluZ3MoKS5waG9uZU1hc2spIHtcclxuICAgICAgICAgICAgdGhpcy5zZXRQaG9uZVBsYWNlaG9sZGVyKHJlcyk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgIHRoaXMuZm9ybS5jb250cm9scy5waG9uZTEuZGlzYWJsZSgpO1xyXG4gICAgICAgIH1cclxuICAgICAgfSk7XHJcbiAgICB9XHJcblxyXG4gICAgdGhpcy5zZXRCcFR5cGVBbGxvd2VkKCk7XHJcblxyXG4gICAgaWYgKGJwRGV0YWlscykge1xyXG4gICAgICB0aGlzLmluaXRDb250YWN0UGVyc29uTGlzdCA9IGJwRGV0YWlscy5jb250YWN0UGVyc29uTGlzdDtcclxuICAgICAgdGhpcy5pbml0QmlsbFRvQWRkcmVzcyA9IGJwRGV0YWlscy5hZGRyZXNzQmlsbFRvTGlzdDtcclxuICAgICAgdGhpcy5pbml0U2hpcFRvQWRkcmVzcyA9IGJwRGV0YWlscy5hZGRyZXNzU2hpcFRvTGlzdDtcclxuXHJcbiAgICAgIHRoaXMubG9hZEdyb3VwQ29kZUxpc3QoKTtcclxuICAgICAgdGhpcy5sb2FkUXJ5R3JvdXAoZmFsc2UsIGJwRGV0YWlscy5xcnlHcm91cExpc3QpO1xyXG5cclxuICAgICAgaWYgKHRoaXMudXNlclNldHRpbmdzKCkub3JhY2xlQnBFZGl0KSB7XHJcbiAgICAgICAgdGhpcy5mb3JtLmdldCgnY2FyZFR5cGUnKSEuZGlzYWJsZSgpO1xyXG4gICAgICAgIHRoaXMuZm9ybS5jb250cm9scy5jYXJkQ29kZS5kaXNhYmxlKCk7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgdGhpcy5mb3JtLmNvbnRyb2xzLmNhcmRDb2RlLmRpc2FibGUoKTtcclxuXHJcbiAgICAgICAgaWYgKHRoaXMuY29udmVydE5vdFVTKSB7XHJcbiAgICAgICAgICB0aGlzLm9sZENhcmRDb2RlID0gYnBEZXRhaWxzLmNhcmRDb2RlO1xyXG5cclxuICAgICAgICAgIGlmIChcclxuICAgICAgICAgICAgYnBEZXRhaWxzPy5jYXJkVHlwZSA9PT0gU2FwQnBUeXBlVHJhbnNsYXRlRW51bS5MZWFkICYmXHJcbiAgICAgICAgICAgICF0aGlzLnVzZXJTZXR0aW5ncygpLmJwRWRpdEFsbG93Q29udmVydExlYWRcclxuICAgICAgICAgICkge1xyXG4gICAgICAgICAgICB0aGlzLmZvcm0uZ2V0KCdjYXJkVHlwZScpIS5kaXNhYmxlKCk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgIHRoaXMuZm9ybS5nZXQoJ2NhcmRUeXBlJykhLmRpc2FibGUoKTtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIHRoaXMuc2V0VmFsaWRhdG9yc0luRWRpdChicERldGFpbHMpO1xyXG4gICAgICB0aGlzLnNldEVkaXRGb3JtKGJwRGV0YWlscyk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICBpZiAodGhpcy51c2VyU2V0dGluZ3MoKS5vcmFjbGVCcEVkaXQpIHtcclxuICAgICAgICB0aGlzLmZvcm0uY29udHJvbHMuY2FyZFR5cGUuc2V0VmFsdWUoU2FwQnBUeXBlRW51bS5MZWFkKTtcclxuICAgICAgfVxyXG5cclxuICAgICAgdGhpcy5mb3JtLmNvbnRyb2xzLmN1cnJlbmN5LnNldFZhbHVlKHRoaXMudXNlclNldHRpbmdzKCkuY3VycmVuY3kpO1xyXG5cclxuICAgICAgaWYgKHRoaXMudXNlclNldHRpbmdzKCkub3JhY2xlQnBFZGl0KSB7XHJcbiAgICAgICAgdGhpcy5zZXROZXdCcElkKFNhcEJwVHlwZUVudW0uTGVhZCk7XHJcbiAgICAgICAgdGhpcy5sb2FkR3JvdXBDb2RlTGlzdCgpO1xyXG4gICAgICAgIHRoaXMuc2V0RGVmYXVsdFBheW1lbnRUZXJtKFNhcEJwVHlwZUVudW0uTGVhZCk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBpZiAodGhpcy51c2VyU2V0dGluZ3MoKS5icFRheFR5cGUgIT09IEJwVGF4VHlwZUVudW0uTm9UYXgpIHtcclxuICAgICAgdGhpcy5mb3JtLmNvbnRyb2xzLnZhdFN0YXR1cy5zZXRWYWxpZGF0b3JzKFZhbGlkYXRvcnMucmVxdWlyZWQpO1xyXG4gICAgfVxyXG5cclxuICAgIHRoaXMuZm9ybS5jb250cm9scy5jYXJkVHlwZS52YWx1ZUNoYW5nZXMuc3Vic2NyaWJlKCh2YWw6IFNhcEJwVHlwZUVudW0pID0+IHtcclxuICAgICAgaWYgKHRoaXMuY29udmVydE5vdFVTKSB7XHJcbiAgICAgICAgdGhpcy5sb2FkR3JvdXBDb2RlTGlzdCgpO1xyXG4gICAgICAgIHRoaXMuc2V0RGVmYXVsdFBheW1lbnRUZXJtKHZhbCk7XHJcblxyXG4gICAgICAgIGlmICh2YWwgPT09IFNhcEJwVHlwZUVudW0uQ3VzdG9tZXIpIHtcclxuICAgICAgICAgIHRoaXMuZm9ybS5jb250cm9scy5jYXJkQ29kZS5lbmFibGUoKTtcclxuICAgICAgICAgIHRoaXMuc2V0TmV3QnBJZChTYXBCcFR5cGVFbnVtLkN1c3RvbWVyKTtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgdGhpcy5mb3JtLmNvbnRyb2xzLmNhcmRDb2RlLnNldFZhbHVlKHRoaXMub2xkQ2FyZENvZGUpO1xyXG4gICAgICAgICAgdGhpcy5mb3JtLmNvbnRyb2xzLmNhcmRDb2RlLmRpc2FibGUoKTtcclxuICAgICAgICB9XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgaWYgKHZhbCB8fCB2YWwgPj0gMCkge1xyXG4gICAgICAgICAgdGhpcy5zZXROZXdCcElkKHZhbCk7XHJcbiAgICAgICAgICB0aGlzLmxvYWRHcm91cENvZGVMaXN0KCk7XHJcbiAgICAgICAgICB0aGlzLnNldERlZmF1bHRQYXltZW50VGVybSh2YWwpO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgICB0aGlzLmNoYW5nZURldGVjdG9yLm1hcmtGb3JDaGVjaygpO1xyXG4gICAgfSk7XHJcblxyXG4gICAgdGhpcy5mb3JtLmNvbnRyb2xzLmdsb2JhbEFjY291bnQudmFsdWVDaGFuZ2VzLnN1YnNjcmliZShyZXMgPT4ge1xyXG4gICAgICBpZiAocmVzID09PSAnWWVzJykge1xyXG4gICAgICAgIHRoaXMuZm9ybS5nZXQoJ2dsb2JhbElkJykhLnNldFZhbGlkYXRvcnMoW1ZhbGlkYXRvcnMucmVxdWlyZWRdKTtcclxuICAgICAgICB0aGlzLmNoYW5nZURldGVjdG9yLm1hcmtGb3JDaGVjaygpO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIHRoaXMuZm9ybS5nZXQoJ2dsb2JhbElkJykhLnNldFZhbGlkYXRvcnMobnVsbCk7XHJcbiAgICAgICAgdGhpcy5jaGFuZ2VEZXRlY3Rvci5tYXJrRm9yQ2hlY2soKTtcclxuICAgICAgfVxyXG4gICAgICB0aGlzLmNoYW5nZURldGVjdG9yLm1hcmtGb3JDaGVjaygpO1xyXG4gICAgfSk7XHJcblxyXG4gICAgdGhpcy5pbml0TG9hZGVycygpO1xyXG4gICAgdGhpcy5jaGFuZ2VEZXRlY3Rvci5tYXJrRm9yQ2hlY2soKTtcclxuICB9XHJcblxyXG4gIHJlZnJlc2hDYXJkQ29kZSgpIHtcclxuICAgIHRoaXMuc2V0TmV3QnBJZCh0aGlzLmZvcm0uY29udHJvbHMuY2FyZFR5cGUudmFsdWUpO1xyXG4gICAgdGhpcy5jaGFuZ2VEZXRlY3Rvci5tYXJrRm9yQ2hlY2soKTtcclxuICB9XHJcblxyXG4gIGxvYWRHcm91cENvZGVMaXN0KHJlZnJlc2ggPSBmYWxzZSkge1xyXG4gICAgdGhpcy5yZWZyZXNoaW5nRGF0YUZyb21TYXAgPSB0cnVlO1xyXG4gICAgdGhpcy5jaGFuZ2VEZXRlY3Rvci5tYXJrRm9yQ2hlY2soKTtcclxuXHJcbiAgICB0aGlzLnNhcEJwU2VydmljZVxyXG4gICAgICAuZ2V0R3JvdXBDb2RlKHRoaXMuZm9ybS5jb250cm9scy5jYXJkVHlwZS52YWx1ZSwgcmVmcmVzaClcclxuICAgICAgLnN1YnNjcmliZShyZXMgPT4ge1xyXG4gICAgICAgIHRoaXMuZ3JvdXBDb2RlTGlzdCA9IHJlcztcclxuICAgICAgICB0aGlzLmZvcm0uY29udHJvbHMuZ3JvdXBDb2RlLnNldFZhbHVlKHJlcyA/IHJlc1swXS5pZCA6IG51bGwpO1xyXG4gICAgICAgIHRoaXMucmVmcmVzaGluZ0RhdGFGcm9tU2FwID0gZmFsc2U7XHJcbiAgICAgICAgdGhpcy5jaGFuZ2VEZXRlY3Rvci5tYXJrRm9yQ2hlY2soKTtcclxuICAgICAgfSk7XHJcbiAgfVxyXG5cclxuICBsb2FkU2hpcFR5cGUocmVmcmVzaCA9IGZhbHNlKSB7XHJcbiAgICB0aGlzLnJlZnJlc2hpbmdEYXRhRnJvbVNhcCA9IHRydWU7XHJcbiAgICB0aGlzLmNoYW5nZURldGVjdG9yLm1hcmtGb3JDaGVjaygpO1xyXG5cclxuICAgIHRoaXMuc2FwQnBTZXJ2aWNlLmdldFNoaXBUeXBlKHJlZnJlc2gpLnN1YnNjcmliZShyZXMgPT4ge1xyXG4gICAgICB0aGlzLnNoaXBUeXBlTGlzdCA9IHJlcztcclxuICAgICAgdGhpcy5yZWZyZXNoaW5nRGF0YUZyb21TYXAgPSBmYWxzZTtcclxuICAgICAgdGhpcy5jaGFuZ2VEZXRlY3Rvci5tYXJrRm9yQ2hlY2soKTtcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgbG9hZEluZHVzdHJ5KHJlZnJlc2ggPSBmYWxzZSkge1xyXG4gICAgdGhpcy5yZWZyZXNoaW5nRGF0YUZyb21TYXAgPSB0cnVlO1xyXG4gICAgdGhpcy5jaGFuZ2VEZXRlY3Rvci5tYXJrRm9yQ2hlY2soKTtcclxuXHJcbiAgICB0aGlzLnNhcEJwU2VydmljZS5nZXRJbmR1c3RyeShyZWZyZXNoKS5zdWJzY3JpYmUocmVzID0+IHtcclxuICAgICAgdGhpcy5pbmR1c3RyeUxpc3QgPSByZXM7XHJcbiAgICAgIHRoaXMucmVmcmVzaGluZ0RhdGFGcm9tU2FwID0gZmFsc2U7XHJcbiAgICAgIHRoaXMuY2hhbmdlRGV0ZWN0b3IubWFya0ZvckNoZWNrKCk7XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIGxvYWRUZWNobmljaWFuKHJlZnJlc2ggPSBmYWxzZSkge1xyXG4gICAgdGhpcy5yZWZyZXNoaW5nRGF0YUZyb21TYXAgPSB0cnVlO1xyXG4gICAgdGhpcy5jaGFuZ2VEZXRlY3Rvci5tYXJrRm9yQ2hlY2soKTtcclxuXHJcbiAgICB0aGlzLnNhcEJwU2VydmljZS5nZXRUZWNobmljaWFuKHJlZnJlc2gpLnN1YnNjcmliZShyZXMgPT4ge1xyXG4gICAgICB0aGlzLnRlY2huaWNpYW5MaXN0ID0gcmVzO1xyXG4gICAgICB0aGlzLnJlZnJlc2hpbmdEYXRhRnJvbVNhcCA9IGZhbHNlO1xyXG4gICAgICB0aGlzLmNoYW5nZURldGVjdG9yLm1hcmtGb3JDaGVjaygpO1xyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBsb2FkU2FsZXNFbXBsb3llZShyZWZyZXNoID0gZmFsc2UpIHtcclxuICAgIHRoaXMucmVmcmVzaGluZ0RhdGFGcm9tU2FwID0gdHJ1ZTtcclxuICAgIHRoaXMuY2hhbmdlRGV0ZWN0b3IubWFya0ZvckNoZWNrKCk7XHJcblxyXG4gICAgdGhpcy5zYXBCcFNlcnZpY2UuZ2V0U2FsZXNFbXBsb3llZShyZWZyZXNoKS5zdWJzY3JpYmUocmVzID0+IHtcclxuICAgICAgdGhpcy5zYWxlc0VtcGxveWVlTGlzdCA9IHJlcztcclxuICAgICAgdGhpcy5yZWZyZXNoaW5nRGF0YUZyb21TYXAgPSBmYWxzZTtcclxuICAgICAgdGhpcy5jaGFuZ2VEZXRlY3Rvci5tYXJrRm9yQ2hlY2soKTtcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgbG9hZFRlcnJpdG9yeShyZWZyZXNoID0gZmFsc2UpIHtcclxuICAgIHRoaXMucmVmcmVzaGluZ0RhdGFGcm9tU2FwID0gdHJ1ZTtcclxuICAgIHRoaXMuY2hhbmdlRGV0ZWN0b3IubWFya0ZvckNoZWNrKCk7XHJcblxyXG4gICAgdGhpcy5zYXBCcFNlcnZpY2UuZ2V0VGVycml0b3J5KHJlZnJlc2gpLnN1YnNjcmliZShyZXMgPT4ge1xyXG4gICAgICB0aGlzLnRlcnJpdG9yeUxpc3QgPSByZXM7XHJcbiAgICAgIHRoaXMucmVmcmVzaGluZ0RhdGFGcm9tU2FwID0gZmFsc2U7XHJcbiAgICAgIHRoaXMuY2hhbmdlRGV0ZWN0b3IubWFya0ZvckNoZWNrKCk7XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIGxvYWRHbG9iYWxJZChyZWZyZXNoID0gZmFsc2UpIHtcclxuICAgIHRoaXMucmVmcmVzaGluZ0RhdGFGcm9tU2FwID0gdHJ1ZTtcclxuICAgIHRoaXMuY2hhbmdlRGV0ZWN0b3IubWFya0ZvckNoZWNrKCk7XHJcblxyXG4gICAgdGhpcy5zYXBCcFNlcnZpY2UuZ2V0R2xvYmFsSWQocmVmcmVzaCkuc3Vic2NyaWJlKHJlcyA9PiB7XHJcbiAgICAgIHRoaXMuZ2xvYmFsSWRMaXN0ID0gcmVzO1xyXG4gICAgICB0aGlzLnJlZnJlc2hpbmdEYXRhRnJvbVNhcCA9IGZhbHNlO1xyXG4gICAgICB0aGlzLmNoYW5nZURldGVjdG9yLm1hcmtGb3JDaGVjaygpO1xyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBsb2FkUGF5bWVudFRlcm1zKHJlZnJlc2ggPSBmYWxzZSkge1xyXG4gICAgdGhpcy5yZWZyZXNoaW5nRGF0YUZyb21TYXAgPSB0cnVlO1xyXG4gICAgdGhpcy5jaGFuZ2VEZXRlY3Rvci5tYXJrRm9yQ2hlY2soKTtcclxuXHJcbiAgICB0aGlzLnNhcEJwU2VydmljZS5nZXRQYXltZW50VGVybXMocmVmcmVzaCkuc3Vic2NyaWJlKHJlcyA9PiB7XHJcbiAgICAgIHRoaXMucGF5bWVudFRlcm1zTGlzdCA9IHJlcztcclxuICAgICAgdGhpcy5yZWZyZXNoaW5nRGF0YUZyb21TYXAgPSBmYWxzZTtcclxuXHJcbiAgICAgIGlmICghdGhpcy5lZGl0TW9kZSkge1xyXG4gICAgICAgIGNvbnN0IHR5cGUgPSB0aGlzLmZvcm0uY29udHJvbHMuY2FyZFR5cGUudmFsdWU7XHJcbiAgICAgICAgaWYgKHR5cGUpIHtcclxuICAgICAgICAgIHRoaXMuc2V0RGVmYXVsdFBheW1lbnRUZXJtKHR5cGUpO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG5cclxuICAgICAgdGhpcy5jaGFuZ2VEZXRlY3Rvci5tYXJrRm9yQ2hlY2soKTtcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgbG9hZFByaWNlTGlzdChyZWZyZXNoID0gZmFsc2UpIHtcclxuICAgIHRoaXMucmVmcmVzaGluZ0RhdGFGcm9tU2FwID0gdHJ1ZTtcclxuICAgIHRoaXMuY2hhbmdlRGV0ZWN0b3IubWFya0ZvckNoZWNrKCk7XHJcblxyXG4gICAgdGhpcy5zYXBCcFNlcnZpY2UuZ2V0UHJpY2VsaXN0KHJlZnJlc2gpLnN1YnNjcmliZShyZXMgPT4ge1xyXG4gICAgICB0aGlzLnByaWNlTGlzdCA9IHJlcztcclxuICAgICAgdGhpcy5yZWZyZXNoaW5nRGF0YUZyb21TYXAgPSBmYWxzZTtcclxuXHJcbiAgICAgIGlmICghdGhpcy5lZGl0TW9kZSkge1xyXG4gICAgICAgIGNvbnN0IGRlZmF1bHRQTCA9IHRoaXMucHJpY2VMaXN0LmZpbmQocGwgPT4gcGwuaXNEZWZhdWx0KTtcclxuICAgICAgICBpZiAoZGVmYXVsdFBMKSB7XHJcbiAgICAgICAgICB0aGlzLmZvcm0uZ2V0KCdwcmljZUxpc3QnKSEuc2V0VmFsdWUoZGVmYXVsdFBMLmlkKTtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIHRoaXMuY2hhbmdlRGV0ZWN0b3IubWFya0ZvckNoZWNrKCk7XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIGxvYWRRcnlHcm91cChyZWZyZXNoID0gZmFsc2UsIGJhc2VWYWx1ZXM/OiBTYXBCcFFyeUdyb3VwTW9kZWxbXSkge1xyXG4gICAgdGhpcy5yZWZyZXNoaW5nRGF0YUZyb21TYXAgPSB0cnVlO1xyXG4gICAgdGhpcy5jaGFuZ2VEZXRlY3Rvci5tYXJrRm9yQ2hlY2soKTtcclxuXHJcbiAgICB0aGlzLnNhcEJwU2VydmljZS5nZXRRcnlHcm91cChyZWZyZXNoKS5zdWJzY3JpYmUocmVzID0+IHtcclxuICAgICAgdGhpcy5xcnlHcm91cExpc3QgPSByZXMubWFwKChncm91cCwgaW5kZXgpID0+IHtcclxuICAgICAgICBncm91cC52YWx1ZSA9IGJhc2VWYWx1ZXMgPyBiYXNlVmFsdWVzW2luZGV4XS52YWx1ZSA6ICdOJztcclxuICAgICAgICByZXR1cm4gZ3JvdXA7XHJcbiAgICAgIH0pO1xyXG5cclxuICAgICAgdGhpcy5yZWZyZXNoaW5nRGF0YUZyb21TYXAgPSBmYWxzZTtcclxuICAgICAgdGhpcy5jaGFuZ2VEZXRlY3Rvci5tYXJrRm9yQ2hlY2soKTtcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgbG9hZEN1cnJlbmN5KHJlZnJlc2ggPSBmYWxzZSkge1xyXG4gICAgdGhpcy5yZWZyZXNoaW5nRGF0YUZyb21TYXAgPSB0cnVlO1xyXG4gICAgdGhpcy5jaGFuZ2VEZXRlY3Rvci5tYXJrRm9yQ2hlY2soKTtcclxuXHJcbiAgICB0aGlzLnNhcEJwU2VydmljZS5nZXRDdXJyZW5jeShyZWZyZXNoKS5zdWJzY3JpYmUocmVzID0+IHtcclxuICAgICAgdGhpcy5jdXJyZW5jeUxpc3QgPSByZXM7XHJcbiAgICAgIHRoaXMucmVmcmVzaGluZ0RhdGFGcm9tU2FwID0gZmFsc2U7XHJcbiAgICAgIHRoaXMuY2hhbmdlRGV0ZWN0b3IubWFya0ZvckNoZWNrKCk7XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIGxvYWRUYXhlcyhyZWZyZXNoID0gZmFsc2UpIHtcclxuICAgIHRoaXMucmVmcmVzaGluZ1RheCA9IHRydWU7XHJcbiAgICB0aGlzLmNoYW5nZURldGVjdG9yLm1hcmtGb3JDaGVjaygpO1xyXG5cclxuICAgIHRoaXMuc2FwQnBTZXJ2aWNlLmdldFRheGVzKHJlZnJlc2gpLnN1YnNjcmliZShyZXMgPT4ge1xyXG4gICAgICB0aGlzLnRheGVzTGlzdCA9IHJlcztcclxuICAgICAgdGhpcy5yZWZyZXNoaW5nVGF4ID0gZmFsc2U7XHJcbiAgICAgIHRoaXMuY2hhbmdlRGV0ZWN0b3IubWFya0ZvckNoZWNrKCk7XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIHNldFNoaXBUb0FkZHJlc3MoZXZlbnQ6IFNhcEJwQWRkcmVzc01vZGVsW10pIHtcclxuICAgIHRoaXMuc2hpcFRvQWRkcmVzcyA9IGV2ZW50O1xyXG4gICAgdGhpcy5jaGFuZ2VEZXRlY3Rvci5tYXJrRm9yQ2hlY2soKTtcclxuICB9XHJcblxyXG4gIHNldEJpbGxUb0FkZHJlc3MoZXZlbnQ6IFNhcEJwQWRkcmVzc01vZGVsW10pIHtcclxuICAgIHRoaXMuYmlsbFRvQWRkcmVzcyA9IGV2ZW50O1xyXG4gICAgdGhpcy5jaGFuZ2VEZXRlY3Rvci5tYXJrRm9yQ2hlY2soKTtcclxuICB9XHJcblxyXG4gIHNldEFkZHJlc3NDaGFuZ2VkKGV2ZW50OiBib29sZWFuKSB7XHJcbiAgICB0aGlzLmFkZHJlc3NDaGFuZ2VkID0gZXZlbnQ7XHJcbiAgICB0aGlzLmNoYW5nZURldGVjdG9yLm1hcmtGb3JDaGVjaygpO1xyXG4gIH1cclxuXHJcbiAgZGlzYWJsZUVkaXRJbmZvcm1hdGlvbkRhdGEoYnBEZXRhaWxzOiBTYXBCcE1vZGVsKSB7XHJcbiAgICByZXR1cm4gdGhpcy5zYXBCcEhlbHBlclNlcnZpY2UuZGlzYWJsZUVkaXRJbmZvcm1hdGlvbkRhdGEoXHJcbiAgICAgIHRoaXMudXNlclNldHRpbmdzKCkuc2FwQnBFZGl0QXV0aCxcclxuICAgICAgdGhpcy5mb3JtLFxyXG4gICAgICBicERldGFpbHNcclxuICAgICk7XHJcbiAgfVxyXG5cclxuICBkaXNhYmxlRWRpdENvbnRhY3RQZXJzb24oYnBEZXRhaWxzOiBTYXBCcE1vZGVsKSB7XHJcbiAgICByZXR1cm4gdGhpcy5zYXBCcEhlbHBlclNlcnZpY2UuZGlzYWJsZUVkaXRDb250YWN0UGVyc29uKFxyXG4gICAgICB0aGlzLnVzZXJTZXR0aW5ncygpLnNhcEJwRWRpdEF1dGgsXHJcbiAgICAgIHRoaXMuZm9ybSxcclxuICAgICAgYnBEZXRhaWxzXHJcbiAgICApO1xyXG4gIH1cclxuXHJcbiAgZGlzYWJsZUVkaXRCaWxsVG9BZGRyZXNzKGJwRGV0YWlsczogU2FwQnBNb2RlbCkge1xyXG4gICAgcmV0dXJuIHRoaXMuc2FwQnBIZWxwZXJTZXJ2aWNlLmRpc2FibGVFZGl0QmlsbFRvQWRkcmVzcyhcclxuICAgICAgdGhpcy51c2VyU2V0dGluZ3MoKS5zYXBCcEVkaXRBdXRoLFxyXG4gICAgICB0aGlzLmZvcm0sXHJcbiAgICAgIGJwRGV0YWlsc1xyXG4gICAgKTtcclxuICB9XHJcblxyXG4gIGRpc2FibGVFZGl0U2hpcFRvQWRkcmVzcyhicERldGFpbHM6IFNhcEJwTW9kZWwpIHtcclxuICAgIHJldHVybiB0aGlzLnNhcEJwSGVscGVyU2VydmljZS5kaXNhYmxlRWRpdFNoaXBUb0FkZHJlc3MoXHJcbiAgICAgIHRoaXMudXNlclNldHRpbmdzKCkuc2FwQnBFZGl0QXV0aCxcclxuICAgICAgdGhpcy5mb3JtLFxyXG4gICAgICBicERldGFpbHNcclxuICAgICk7XHJcbiAgfVxyXG5cclxuICBkaXNhYmxlQWRkU2hpcFRvQWRkcmVzcyhicERldGFpbHM6IFNhcEJwTW9kZWwpIHtcclxuICAgIHJldHVybiB0aGlzLnNhcEJwSGVscGVyU2VydmljZS5kaXNhYmxlQWRkU2hpcFRvQWRkcmVzcyhcclxuICAgICAgdGhpcy51c2VyU2V0dGluZ3MoKS5zYXBCcEVkaXRBdXRoLFxyXG4gICAgICB0aGlzLmZvcm0sXHJcbiAgICAgIGJwRGV0YWlsc1xyXG4gICAgKTtcclxuICB9XHJcblxyXG4gIGRpc2FibGVBZGRDb250YWN0UGVyc29uKGJwRGV0YWlsczogU2FwQnBNb2RlbCkge1xyXG4gICAgcmV0dXJuIHRoaXMuc2FwQnBIZWxwZXJTZXJ2aWNlLmRpc2FibGVBZGRDb250YWN0UGVyc29uKFxyXG4gICAgICB0aGlzLnVzZXJTZXR0aW5ncygpLnNhcEJwRWRpdEF1dGgsXHJcbiAgICAgIHRoaXMuZm9ybSxcclxuICAgICAgYnBEZXRhaWxzXHJcbiAgICApO1xyXG4gIH1cclxuXHJcbiAgZGlzYWJsZUFkZEJpbGxUb0FkZHJlc3MoYnBEZXRhaWxzOiBTYXBCcE1vZGVsKSB7XHJcbiAgICByZXR1cm4gdGhpcy5zYXBCcEhlbHBlclNlcnZpY2UuZGlzYWJsZUFkZEJpbGxUb0FkZHJlc3MoXHJcbiAgICAgIHRoaXMudXNlclNldHRpbmdzKCkuc2FwQnBFZGl0QXV0aCxcclxuICAgICAgdGhpcy5mb3JtLFxyXG4gICAgICBicERldGFpbHNcclxuICAgICk7XHJcbiAgfVxyXG5cclxuICBwcm90ZWN0ZWQgaW5pdExvYWRlcnMoKSB7XHJcbiAgICAvLyB0aGlzLmxvYWRHcm91cENvZGVMaXN0KCk7XHJcbiAgICB0aGlzLmxvYWRTaGlwVHlwZSgpO1xyXG4gICAgdGhpcy5sb2FkSW5kdXN0cnkoKTtcclxuICAgIHRoaXMubG9hZFRlY2huaWNpYW4oKTtcclxuICAgIHRoaXMubG9hZFNhbGVzRW1wbG95ZWUoKTtcclxuICAgIHRoaXMubG9hZFRlcnJpdG9yeSgpO1xyXG4gICAgdGhpcy5sb2FkUGF5bWVudFRlcm1zKCk7XHJcbiAgICB0aGlzLmxvYWRQcmljZUxpc3QoKTtcclxuICAgIHRoaXMubG9hZEN1cnJlbmN5KCk7XHJcbiAgICB0aGlzLmxvYWRHbG9iYWxJZCgpO1xyXG5cclxuICAgIGlmICghdGhpcy5lZGl0TW9kZSkge1xyXG4gICAgICB0aGlzLmxvYWRRcnlHcm91cCgpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBzZXRFZGl0Rm9ybShicERldGFpbHM6IFNhcEJwTW9kZWwpIHtcclxuICAgIHRoaXMuZm9ybS5zZXRWYWx1ZSh7XHJcbiAgICAgIGNvdW50cnlDb2RlUGhvbmUxOiAnJyxcclxuICAgICAgY2FyZENvZGU6IGJwRGV0YWlscy5jYXJkQ29kZSxcclxuICAgICAgY2FyZE5hbWU6IGJwRGV0YWlscy5jYXJkTmFtZSxcclxuICAgICAgY2FyZFR5cGU6IGJwRGV0YWlscy5jYXJkVHlwZVxyXG4gICAgICAgID8gdGhpcy5jb252ZXJ0QnBUeXBlKGJwRGV0YWlscy5jYXJkVHlwZSlcclxuICAgICAgICA6IHRoaXMudXNlclNldHRpbmdzKCkub3JhY2xlQnBFZGl0XHJcbiAgICAgICAgICA/IFNhcEJwVHlwZUVudW0uTGVhZFxyXG4gICAgICAgICAgOiBTYXBCcFR5cGVFbnVtLkN1c3RvbWVyLFxyXG4gICAgICBjYXJkRm9yZWlnbk5hbWU6IGJwRGV0YWlscy5jYXJkRm9yaWduTmFtZSxcclxuICAgICAgZ3JvdXBDb2RlOiBicERldGFpbHMuZ3JvdXBDb2RlIHx8IG51bGwsXHJcbiAgICAgIGN1cnJlbmN5OiBicERldGFpbHMuY3VycmVuY3lcclxuICAgICAgICA/IGJwRGV0YWlscy5jdXJyZW5jeVxyXG4gICAgICAgIDogdGhpcy51c2VyU2V0dGluZ3MoKS5jdXJyZW5jeSxcclxuICAgICAgbGljVHJhZE51bTogYnBEZXRhaWxzLmxpY1RyYWROdW0sXHJcbiAgICAgIHBob25lMTogYnBEZXRhaWxzLnBob25lMSxcclxuICAgICAgcGhvbmUyOiBicERldGFpbHMucGhvbmUyLFxyXG4gICAgICBjZWxsdWxhcjogYnBEZXRhaWxzLmNlbGx1bGFyLFxyXG4gICAgICBmYXg6IGJwRGV0YWlscy5mYXgsXHJcbiAgICAgIGVtYWlsOiBicERldGFpbHMuZW1haWwsXHJcbiAgICAgIHdlYlNpdGU6IGJwRGV0YWlscy53ZWJTaXRlLFxyXG4gICAgICBzaGlwVHlwZTogYnBEZXRhaWxzLnNoaXBUeXBlQ29kZSxcclxuICAgICAgaW5kdXN0cnlDb2RlOiBicERldGFpbHMuaW5kdXN0cnlDb2RlLFxyXG4gICAgICBhZGRJZDogYnBEZXRhaWxzLmFkZElkLFxyXG4gICAgICB2YXRJZFVuaWZpZWQ6IGJwRGV0YWlscy52YXRJZFVuaWZpZWQsXHJcbiAgICAgIHJlZ2lzdGVyTm86IGJwRGV0YWlscy5yZWdpc3Rlck5vLFxyXG4gICAgICBub3RlczogYnBEZXRhaWxzLm5vdGVzLFxyXG4gICAgICB0ZWNobmljaWFuOiBicERldGFpbHMudGVjaG5pY2lhbkNvZGUsXHJcbiAgICAgIHNhbGVzRW1wbG95ZWU6IGJwRGV0YWlscy5zYWxlc1BlcnNvbkNvZGUsXHJcbiAgICAgIHRlcnJpdG9yeTogYnBEZXRhaWxzLnRlcnJpdG9yeUNvZGUsXHJcbiAgICAgIGdsb2JhbEFjY291bnQ6IGJwRGV0YWlscy5nbG9iYWxBY2NvdW50LFxyXG4gICAgICBnbG9iYWxJZDogYnBEZXRhaWxzLmdsb2JhbElkLFxyXG4gICAgICBwYXltZW50Q29kZTogYnBEZXRhaWxzLnBheW1lbnRDb2RlLFxyXG4gICAgICBwcmljZUxpc3Q6IGJwRGV0YWlscy5wcmljZWxpc3RDb2RlLFxyXG4gICAgICBkZWxpdmVyeUluc3RydWN0aW9uczogYnBEZXRhaWxzLmRlbGl2ZXJ5SW5zdHJ1Y3Rpb25zLFxyXG4gICAgICBmcmVlVGV4dDogYnBEZXRhaWxzLmZyZWVUZXh0LFxyXG4gICAgICBpbmFjdGl2ZUNvbW1lbnQ6IGJwRGV0YWlscy5pbmFjdGl2ZUNvbW1lbnQsXHJcbiAgICAgIHN0YXR1czogYnBEZXRhaWxzLmluYWN0aXZlUmVhc29uLFxyXG4gICAgICB2YXRTdGF0dXM6IGJwRGV0YWlscy52YXRTdGF0dXMsXHJcbiAgICAgIHRheENvZGU6IGJwRGV0YWlscy50YXhDb2RlLFxyXG4gICAgfSk7XHJcblxyXG4gICAgdGhpcy5jaGFuZ2VEZXRlY3Rvci5tYXJrRm9yQ2hlY2soKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgc2V0VmFsaWRhdG9yc0luRWRpdChicERldGFpbHM6IFNhcEJwTW9kZWwpIHtcclxuICAgIGlmICh0aGlzLmRpc2FibGVFZGl0SW5mb3JtYXRpb25EYXRhKGJwRGV0YWlscykpIHtcclxuICAgICAgdGhpcy5mb3JtLmNvbnRyb2xzLmNhcmRDb2RlLnNldFZhbGlkYXRvcnMobnVsbCk7XHJcbiAgICAgIHRoaXMuZm9ybS5jb250cm9scy5jYXJkTmFtZS5zZXRWYWxpZGF0b3JzKG51bGwpO1xyXG4gICAgICB0aGlzLmZvcm0uY29udHJvbHMuY2FyZFR5cGUuc2V0VmFsaWRhdG9ycyhudWxsKTtcclxuICAgICAgdGhpcy5mb3JtLmNvbnRyb2xzLmdyb3VwQ29kZS5zZXRWYWxpZGF0b3JzKG51bGwpO1xyXG4gICAgICB0aGlzLmZvcm0uY29udHJvbHMuY3VycmVuY3kuc2V0VmFsaWRhdG9ycyhudWxsKTtcclxuICAgICAgdGhpcy5mb3JtLmNvbnRyb2xzLnBob25lMS5zZXRWYWxpZGF0b3JzKG51bGwpO1xyXG4gICAgICB0aGlzLmZvcm0uY29udHJvbHMuc2FsZXNFbXBsb3llZS5zZXRWYWxpZGF0b3JzKG51bGwpO1xyXG4gICAgICB0aGlzLmZvcm0uY29udHJvbHMuZ2xvYmFsQWNjb3VudC5zZXRWYWxpZGF0b3JzKG51bGwpO1xyXG4gICAgfVxyXG4gICAgdGhpcy5jaGFuZ2VEZXRlY3Rvci5tYXJrRm9yQ2hlY2soKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgc2V0UGhvbmVQbGFjZWhvbGRlcihjb3VudHJ5Q29kZTogc3RyaW5nKSB7XHJcbiAgICAvLyAyMCBzYXAgbGVuZ3RoLCAtNCBzcGFjZXMsICsxMCBleHRyYSBjaGFyIGZvciB2aXNpYmxlXHJcbiAgICB0aGlzLnBob25lTWF4TGVuZ3RoID0gMjAgLSBjb3VudHJ5Q29kZS5sZW5ndGggLSA0ICsgMTA7XHJcbiAgICBjb25zdCBleHRMZW5ndGggPSB0aGlzLnBob25lTWF4TGVuZ3RoIC0gMjA7XHJcblxyXG4gICAgbGV0IHBob25lUGxhY2Vob2xkZXIgPSAnKDk5OSkgOTk5IDk5OTkgZXh0LiAnO1xyXG4gICAgbGV0IHBob25lTWFzayA9ICcoMDAwKSAwMDAgMDAwMCBleHQuICc7XHJcblxyXG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBleHRMZW5ndGg7IGkrKykge1xyXG4gICAgICBwaG9uZVBsYWNlaG9sZGVyICs9ICc5JztcclxuICAgICAgcGhvbmVNYXNrICs9ICc5JztcclxuICAgIH1cclxuXHJcbiAgICB0aGlzLnBob25lUGxhY2Vob2xkZXIgPSBwaG9uZVBsYWNlaG9sZGVyO1xyXG4gICAgdGhpcy5waG9uZU1hc2sgPSBwaG9uZU1hc2s7XHJcbiAgICB0aGlzLmNoYW5nZURldGVjdG9yLm1hcmtGb3JDaGVjaygpO1xyXG4gIH1cclxuXHJcbiAgcHJvdGVjdGVkIHByZXBhcmVEYXRhVG9TZW5kKCk6IFNhcEJwQ3JlYXRlTW9kZWwge1xyXG4gICAgY29uc3QgdmFsdWVzID0gdGhpcy5mb3JtLmdldFJhd1ZhbHVlKCk7XHJcbiAgICBsZXQgcGhvbmUxID0gdmFsdWVzLnBob25lMTtcclxuXHJcbiAgICBpZiAoIXRoaXMuZWRpdE1vZGUgJiYgdGhpcy5waG9uZU1hc2spIHtcclxuICAgICAgcGhvbmUxID1cclxuICAgICAgICB2YWx1ZXMuY291bnRyeUNvZGVQaG9uZTEgK1xyXG4gICAgICAgICctJyArXHJcbiAgICAgICAgdmFsdWVzLnBob25lMS5zbGljZSgwLCAzKSArXHJcbiAgICAgICAgJy0nICtcclxuICAgICAgICB2YWx1ZXMucGhvbmUxLnNsaWNlKDMsIDYpICtcclxuICAgICAgICAnLScgK1xyXG4gICAgICAgIHZhbHVlcy5waG9uZTEuc2xpY2UoNiwgMTApICtcclxuICAgICAgICAodmFsdWVzLnBob25lMS5zcGxpdCgndCcpWzFdID8gJ3gnICsgdmFsdWVzLnBob25lMS5zcGxpdCgndCcpWzFdIDogJycpO1xyXG4gICAgfSBlbHNlIGlmICghdGhpcy5lZGl0TW9kZSkge1xyXG4gICAgICBwaG9uZTEgPSB2YWx1ZXMuY291bnRyeUNvZGVQaG9uZTEgKyAnICcgKyBwaG9uZTE7XHJcbiAgICB9XHJcblxyXG4gICAgcmV0dXJuIHtcclxuICAgICAgY2FyZEZvcmlnbk5hbWU6IHZhbHVlcy5jYXJkRm9yZWlnbk5hbWUsXHJcbiAgICAgIGdyb3VwQ29kZTogdmFsdWVzLmdyb3VwQ29kZSBhcyBudW1iZXIsXHJcbiAgICAgIGN1cnJlbmN5OiB2YWx1ZXMuY3VycmVuY3ksXHJcbiAgICAgIGxpY1RyYWROdW06IHZhbHVlcy5saWNUcmFkTnVtLFxyXG4gICAgICBwaG9uZTE6IHBob25lMSxcclxuICAgICAgcGhvbmUyOiB2YWx1ZXMucGhvbmUyLFxyXG4gICAgICBjZWxsdWxhcjogdmFsdWVzLmNlbGx1bGFyLFxyXG4gICAgICBmYXg6IHZhbHVlcy5mYXgsXHJcbiAgICAgIGVtYWlsOiB2YWx1ZXMuZW1haWwsXHJcbiAgICAgIHdlYlNpdGU6IHZhbHVlcy53ZWJTaXRlLFxyXG4gICAgICBzaGlwVHlwZUNvZGU6IHZhbHVlcy5zaGlwVHlwZSBhcyBudW1iZXIsXHJcbiAgICAgIGluZHVzdHJ5Q29kZTogdmFsdWVzLmluZHVzdHJ5Q29kZSBhcyBudW1iZXIsXHJcbiAgICAgIGFkZElkOiB2YWx1ZXMuYWRkSWQsXHJcbiAgICAgIHZhdElkVW5pZmllZDogdmFsdWVzLnZhdElkVW5pZmllZCxcclxuICAgICAgcmVnaXN0ZXJObzogdmFsdWVzLnJlZ2lzdGVyTm8sXHJcbiAgICAgIG5vdGVzOiB2YWx1ZXMubm90ZXMsXHJcbiAgICAgIHRlY2huaWNpYW5Db2RlOiB2YWx1ZXMudGVjaG5pY2lhbiBhcyBudW1iZXIsXHJcbiAgICAgIHNhbGVzUGVyc29uQ29kZTogdmFsdWVzLnNhbGVzRW1wbG95ZWUgYXMgbnVtYmVyLFxyXG4gICAgICB0ZXJyaXRvcnlDb2RlOiB2YWx1ZXMudGVycml0b3J5IGFzIG51bWJlcixcclxuICAgICAgZ2xvYmFsQWNjb3VudDogdmFsdWVzLmdsb2JhbEFjY291bnQsXHJcbiAgICAgIGdsb2JhbElkOiB2YWx1ZXMuZ2xvYmFsSWQsXHJcbiAgICAgIHZhbGlkRm9yOiB2YWx1ZXMuc3RhdHVzID09PSAnQWN0aXZlJyA/ICdZJyA6ICdOJyxcclxuICAgICAgcGF5bWVudENvZGU6IHZhbHVlcy5wYXltZW50Q29kZSBhcyBudW1iZXIsXHJcbiAgICAgIHByaWNlbGlzdENvZGU6IHZhbHVlcy5wcmljZUxpc3QgYXMgbnVtYmVyLFxyXG4gICAgICBkZWxpdmVyeUluc3RydWN0aW9uczogdmFsdWVzLmRlbGl2ZXJ5SW5zdHJ1Y3Rpb25zLFxyXG4gICAgICBmcmVlVGV4dDogdmFsdWVzLmZyZWVUZXh0LFxyXG4gICAgICBjb250YWN0UGVyc29uTGlzdDogdGhpcy5jb250YWN0UGVyc29ucyB8fCBbXSxcclxuICAgICAgYWRkcmVzc1NoaXBUb0xpc3Q6IHRoaXMuc2hpcFRvQWRkcmVzcyB8fCBbXSxcclxuICAgICAgYWRkcmVzc0JpbGxUb0xpc3Q6IHRoaXMuYmlsbFRvQWRkcmVzcyB8fCBbXSxcclxuICAgICAgcXJ5R3JvdXBMaXN0OiB0aGlzLnFyeUdyb3VwTGlzdCxcclxuICAgICAgYWRkcmVzc0NoYW5nZTogdGhpcy5hZGRyZXNzQ2hhbmdlZCxcclxuICAgICAgY29udGFjdENoYW5nZTogdGhpcy5jb250YWN0UGVyc29uQ2hhbmdlZCxcclxuICAgICAgY2FyZENvZGU6IHZhbHVlcy5jYXJkQ29kZSxcclxuICAgICAgY2FyZE5hbWU6IHZhbHVlcy5jYXJkTmFtZSxcclxuICAgICAgY2FyZFR5cGU6IHRoaXMuY29udmVydFRvVHJhbnNsYXRlQnBUeXBlKHZhbHVlcy5jYXJkVHlwZSksXHJcbiAgICAgIG9sZENhcmRDb2RlOiB0aGlzLm9sZENhcmRDb2RlIHx8IG51bGwsXHJcbiAgICAgIGluYWN0aXZlUmVhc29uOiB2YWx1ZXMuc3RhdHVzLFxyXG4gICAgICBpbmFjdGl2ZUNvbW1lbnQ6IHZhbHVlcy5zdGF0dXMgPT09ICdBY3RpdmUnID8gJycgOiB2YWx1ZXMuaW5hY3RpdmVDb21tZW50LFxyXG4gICAgICB2YXRTdGF0dXM6IHZhbHVlcy52YXRTdGF0dXMsXHJcbiAgICAgIHRheENvZGU6IHZhbHVlcy50YXhDb2RlLFxyXG4gICAgfTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgc2V0TmV3QnBJZChicFR5cGU6IFNhcEJwVHlwZUVudW0pIHtcclxuICAgIHRoaXMuc2FwQnBTZXJ2aWNlLmdldE5leHRCcElkKGJwVHlwZSkuc3Vic2NyaWJlKG5ld0JwSWQgPT4ge1xyXG4gICAgICB0aGlzLmZvcm0uY29udHJvbHMuY2FyZENvZGUuc2V0VmFsdWUobmV3QnBJZCk7XHJcbiAgICAgIHRoaXMuY2hhbmdlRGV0ZWN0b3IubWFya0ZvckNoZWNrKCk7XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgc2V0RGVmYXVsdFBheW1lbnRUZXJtKHZhbDogU2FwQnBUeXBlRW51bSkge1xyXG4gICAgaWYgKHRoaXMucGF5bWVudFRlcm1zTGlzdD8ubGVuZ3RoID4gMCkge1xyXG4gICAgICBpZiAodmFsID09PSBTYXBCcFR5cGVFbnVtLlN1cHBsaWVyKSB7XHJcbiAgICAgICAgY29uc3QgcGF5bWVudFRlcm1Gb3VuZCA9IHRoaXMucGF5bWVudFRlcm1zTGlzdC5maW5kKFxyXG4gICAgICAgICAgcGF5bWVudFRlcm0gPT4gcGF5bWVudFRlcm0uaXNEZWZhdWx0Rm9yU3VwcGxpZXJcclxuICAgICAgICApO1xyXG4gICAgICAgIGlmIChwYXltZW50VGVybUZvdW5kKSB7XHJcbiAgICAgICAgICB0aGlzLmZvcm0uY29udHJvbHMucGF5bWVudENvZGUuc2V0VmFsdWUocGF5bWVudFRlcm1Gb3VuZC5pZCk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIGNvbnN0IHBheW1lbnRUZXJtRm91bmQgPSB0aGlzLnBheW1lbnRUZXJtc0xpc3QuZmluZChcclxuICAgICAgICAgIHBheW1lbnRUZXJtID0+IHBheW1lbnRUZXJtLmlzRGVmYXVsdEZvckN1c3RvbWVyXHJcbiAgICAgICAgKTtcclxuICAgICAgICBpZiAocGF5bWVudFRlcm1Gb3VuZCkge1xyXG4gICAgICAgICAgdGhpcy5mb3JtLmNvbnRyb2xzLnBheW1lbnRDb2RlLnNldFZhbHVlKHBheW1lbnRUZXJtRm91bmQuaWQpO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIHRoaXMuY2hhbmdlRGV0ZWN0b3IubWFya0ZvckNoZWNrKCk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIHNldEJwVHlwZUFsbG93ZWQoKSB7XHJcbiAgICB0aGlzLmJwVHlwZUFsbG93ZWQgPSBbXTtcclxuICAgIGNvbnN0IGNhcmRUeXBlID0gdGhpcy5mb3JtLmNvbnRyb2xzLmNhcmRUeXBlLnZhbHVlO1xyXG5cclxuICAgIGlmICh0aGlzLmVkaXRNb2RlKSB7XHJcbiAgICAgIGlmICh0aGlzLnVzZXJTZXR0aW5ncygpLm9yYWNsZUJwRWRpdCkge1xyXG4gICAgICAgIHRoaXMuYnBUeXBlQWxsb3dlZC5wdXNoKGNhcmRUeXBlKTtcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICBpZiAoY2FyZFR5cGUgPT09IFNhcEJwVHlwZUVudW0uTGVhZCkge1xyXG4gICAgICAgICAgdGhpcy5icFR5cGVBbGxvd2VkLnB1c2goU2FwQnBUeXBlRW51bS5MZWFkKTtcclxuICAgICAgICAgIHRoaXMuYnBUeXBlQWxsb3dlZC5wdXNoKFNhcEJwVHlwZUVudW0uQ3VzdG9tZXIpO1xyXG4gICAgICAgIH0gZWxzZSBpZiAoY2FyZFR5cGUgPT09IFNhcEJwVHlwZUVudW0uU3VwcGxpZXIpIHtcclxuICAgICAgICAgIHRoaXMuYnBUeXBlQWxsb3dlZC5wdXNoKFNhcEJwVHlwZUVudW0uU3VwcGxpZXIpO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICB0aGlzLmJwVHlwZUFsbG93ZWQucHVzaChTYXBCcFR5cGVFbnVtLkN1c3RvbWVyKTtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRoaXMudXNlclNldHRpbmdzKCkuYnBFZGl0VHlwZUFsbG93ZWQuZm9yRWFjaChicFR5cGUgPT4ge1xyXG4gICAgICAgIHRoaXMuYnBUeXBlQWxsb3dlZC5wdXNoKGJwVHlwZSk7XHJcbiAgICAgIH0pO1xyXG4gICAgfVxyXG5cclxuICAgIHRoaXMuY2hhbmdlRGV0ZWN0b3IubWFya0ZvckNoZWNrKCk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGNvbnZlcnRCcFR5cGUodHlwZTogU2FwQnBUeXBlVHJhbnNsYXRlRW51bSk6IFNhcEJwVHlwZUVudW0ge1xyXG4gICAgc3dpdGNoICh0eXBlKSB7XHJcbiAgICAgIGNhc2UgU2FwQnBUeXBlVHJhbnNsYXRlRW51bS5DdXN0b21lcjpcclxuICAgICAgICByZXR1cm4gU2FwQnBUeXBlRW51bS5DdXN0b21lcjtcclxuICAgICAgY2FzZSBTYXBCcFR5cGVUcmFuc2xhdGVFbnVtLkxlYWQ6XHJcbiAgICAgICAgcmV0dXJuIFNhcEJwVHlwZUVudW0uTGVhZDtcclxuICAgICAgY2FzZSBTYXBCcFR5cGVUcmFuc2xhdGVFbnVtLlN1cHBsaWVyOlxyXG4gICAgICAgIHJldHVybiBTYXBCcFR5cGVFbnVtLlN1cHBsaWVyO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBjb252ZXJ0VG9UcmFuc2xhdGVCcFR5cGUoXHJcbiAgICB0eXBlOiBTYXBCcFR5cGVFbnVtXHJcbiAgKTogU2FwQnBUeXBlVHJhbnNsYXRlRW51bSB7XHJcbiAgICBzd2l0Y2ggKHR5cGUpIHtcclxuICAgICAgY2FzZSBTYXBCcFR5cGVFbnVtLkN1c3RvbWVyOlxyXG4gICAgICAgIHJldHVybiBTYXBCcFR5cGVUcmFuc2xhdGVFbnVtLkN1c3RvbWVyO1xyXG4gICAgICBjYXNlIFNhcEJwVHlwZUVudW0uTGVhZDpcclxuICAgICAgICByZXR1cm4gU2FwQnBUeXBlVHJhbnNsYXRlRW51bS5MZWFkO1xyXG4gICAgICBjYXNlIFNhcEJwVHlwZUVudW0uU3VwcGxpZXI6XHJcbiAgICAgICAgcmV0dXJuIFNhcEJwVHlwZVRyYW5zbGF0ZUVudW0uU3VwcGxpZXI7XHJcbiAgICB9XHJcbiAgfVxyXG59XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIFNhcEJwVXNlclNldHRpbmdzIHtcclxuICBwaG9uZU1hc2s6IGJvb2xlYW47XHJcbiAgYnBFZGl0U2FsZXNQZXJzb25PbkFkZHJlc3M6IGJvb2xlYW47XHJcbiAgYnBUYXhUeXBlOiBCcFRheFR5cGVFbnVtO1xyXG4gIG9yYWNsZUJwRWRpdDogYm9vbGVhbjtcclxuICBjdXJyZW5jeTogc3RyaW5nO1xyXG4gIGJwRWRpdEFsbG93Q29udmVydExlYWQ6IGJvb2xlYW47XHJcbiAgc2FwQnBFZGl0QXV0aDogU2FwQnBFZGl0QXV0aEZsYWdzRW51bTtcclxuICBicEVkaXRUeXBlQWxsb3dlZDogU2FwQnBUeXBlRW51bVtdO1xyXG4gIGNvdW50cnk6IHN0cmluZztcclxufVxyXG4iXX0=
|
|
585
|
+
}] });
|
|
586
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2FwLWJwLWJhc2UtY3JlYXRlLWVkaXQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtc3Qtc2FwLWJwL3NyYy9saWIvY29tcG9uZW50cy9zYXAtYnAtYmFzZS1jcmVhdGUtZWRpdC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsc0JBQXNCLEVBQUUsVUFBVSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDcEUsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBUzFELE9BQU8sRUFDTCxpQkFBaUIsRUFDakIsVUFBVSxFQUdWLFlBQVksRUFDWixNQUFNLEVBQ04sTUFBTSxHQUNQLE1BQU0sZUFBZSxDQUFDO0FBT3ZCLE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxNQUFNLHNDQUFzQyxDQUFDO0FBQzlFLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUMzRCxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxtQ0FBbUMsQ0FBQztBQUV2RSxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFFM0QsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLDZCQUE2QixDQUFDO0FBQzNELE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQzs7QUFHckQsTUFBTSxPQUFnQixtQkFBbUI7SUFEekM7UUFFRSxjQUFTLEdBQUcsWUFBWSxDQUFDLFlBQVksQ0FBQyxDQUFDO1FBRTdCLGlCQUFZLEdBQUcsTUFBTSxDQUFDLFlBQVksQ0FBQyxDQUFDO1FBQ3BDLFdBQU0sR0FBRyxNQUFNLENBQUMsU0FBUyxDQUFDLENBQUM7UUFDM0IsdUJBQWtCLEdBQUcsTUFBTSxDQUFDLGtCQUFrQixDQUFDLENBQUM7UUFDaEQsbUJBQWMsR0FBRyxNQUFNLENBQUMsaUJBQWlCLENBQUMsQ0FBQztRQUMzQyxPQUFFLEdBQUcsTUFBTSxDQUFDLHNC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O1FBQ0wsQ0FBQztRQUVELElBQUksQ0FBQyxhQUFhLENBQUMsR0FBRyxDQUFDLG1CQUFtQixDQUFDLENBQUM7UUFDNUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxZQUFZLEVBQUUsQ0FBQztJQUNyQyxDQUFDO0lBRU8sYUFBYSxDQUFDLElBQTRCO1FBQ2hELFFBQVEsSUFBSSxFQUFFLENBQUM7WUFDYixLQUFLLHNCQUFzQixDQUFDLFFBQVE7Z0JBQ2xDLE9BQU8sYUFBYSxDQUFDLFFBQVEsQ0FBQztZQUNoQyxLQUFLLHNCQUFzQixDQUFDLElBQUk7Z0JBQzlCLE9BQU8sYUFBYSxDQUFDLElBQUksQ0FBQztZQUM1QixLQUFLLHNCQUFzQixDQUFDLFFBQVE7Z0JBQ2xDLE9BQU8sYUFBYSxDQUFDLFFBQVEsQ0FBQztRQUNsQyxDQUFDO0lBQ0gsQ0FBQztJQUVPLHdCQUF3QixDQUM5QixJQUFtQjtRQUVuQixRQUFRLElBQUksRUFBRSxDQUFDO1lBQ2IsS0FBSyxhQUFhLENBQUMsUUFBUTtnQkFDekIsT0FBTyxzQkFBc0IsQ0FBQyxRQUFRLENBQUM7WUFDekMsS0FBSyxhQUFhLENBQUMsSUFBSTtnQkFDckIsT0FBTyxzQkFBc0IsQ0FBQyxJQUFJLENBQUM7WUFDckMsS0FBSyxhQUFhLENBQUMsUUFBUTtnQkFDekIsT0FBTyxzQkFBc0IsQ0FBQyxRQUFRLENBQUM7UUFDM0MsQ0FBQztJQUNILENBQUM7K0dBbnJCbUIsbUJBQW1CO21IQUFuQixtQkFBbUI7OzRGQUFuQixtQkFBbUI7a0JBRHhDLFVBQVUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBOb25OdWxsYWJsZUZvcm1CdWlsZGVyLCBWYWxpZGF0b3JzIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xyXG5pbXBvcnQgeyBTYXBCcFNlcnZpY2UgfSBmcm9tICcuLi9zZXJ2aWNlcy9zYXAtYnAuc2VydmljZSc7XHJcbmltcG9ydCB7IFNhcEJwR3JvdXBDb2RlTW9kZWwgfSBmcm9tICcuLi9tb2RlbHMvc2FwLWJwLWdyb3VwLWNvZGUubW9kZWwnO1xyXG5pbXBvcnQgeyBTYXBCcFNoaXBUeXBlTW9kZWwgfSBmcm9tICcuLi9tb2RlbHMvc2FwLWJwLXNoaXAtdHlwZS5tb2RlbCc7XHJcbmltcG9ydCB7IFNhcEJwSW5kdXN0cnlNb2RlbCB9IGZyb20gJy4uL21vZGVscy9zYXAtYnAtaW5kdXN0cnkubW9kZWwnO1xyXG5pbXBvcnQgeyBTYXBCcFRlY2huaWNpYW5Nb2RlbCB9IGZyb20gJy4uL21vZGVscy9zYXAtYnAtdGVjaG5pY2lhbi5tb2RlbCc7XHJcbmltcG9ydCB7IFNhcEJwU2FsZXNFbXBsb3llZU1vZGVsIH0gZnJvbSAnLi4vbW9kZWxzL3NhcC1icC1zYWxlcy1lbXBsb3llZS5tb2RlbCc7XHJcbmltcG9ydCB7IFNhcEJwVGVycml0b3J5TW9kZWwgfSBmcm9tICcuLi9tb2RlbHMvc2FwLWJwLXRlcnJpdG9yeS5tb2RlbCc7XHJcbmltcG9ydCB7IFNhcEJwR2xvYmFsSWRNb2RlbCB9IGZyb20gJy4uL21vZGVscy9zYXAtYnAtZ2xvYmFsLWlkLm1vZGVsJztcclxuaW1wb3J0IHsgU2FwQnBDb250YWN0UGVyc29uTW9kZWwgfSBmcm9tICcuLi9tb2RlbHMvc2FwLWJwLWNvbnRhY3QtcGVyc29uLm1vZGVsJztcclxuaW1wb3J0IHtcclxuICBDaGFuZ2VEZXRlY3RvclJlZixcclxuICBJbmplY3RhYmxlLFxyXG4gIElucHV0U2lnbmFsLFxyXG4gIFF1ZXJ5TGlzdCxcclxuICB2aWV3Q2hpbGRyZW4sXHJcbiAgaW5qZWN0LFxyXG4gIHNpZ25hbCxcclxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgU2FwQnBBZGRyZXNzTW9kZWwgfSBmcm9tICcuLi9tb2RlbHMvc2FwLWJwLWFkZHJlc3MubW9kZWwnO1xyXG5pbXBvcnQgeyBTYXBCcFBheW1lbnRUZXJtc01vZGVsIH0gZnJvbSAnLi4vbW9kZWxzL3NhcC1icC1wYXltZW50LXRlcm1zLm1vZGVsJztcclxuaW1wb3J0IHsgU2FwQnBQcmljZWxpc3RNb2RlbCB9IGZyb20gJy4uL21vZGVscy9zYXAtYnAtcHJpY2VsaXN0Lm1vZGVsJztcclxuaW1wb3J0IHsgU2FwQnBRcnlHcm91cE1vZGVsIH0gZnJvbSAnLi4vbW9kZWxzL3NhcC1icC1xcnktZ3JvdXAubW9kZWwnO1xyXG5pbXBvcnQgeyBTYXBCcENyZWF0ZU1vZGVsIH0gZnJvbSAnLi4vbW9kZWxzL3NhcC1icC1jcmVhdGUubW9kZWwnO1xyXG5pbXBvcnQgeyBTYXBCcE1vZGVsIH0gZnJvbSAnLi4vbW9kZWxzL3NhcC1icC5tb2RlbCc7XHJcbmltcG9ydCB7IFNhcEJwVHlwZVRyYW5zbGF0ZUVudW0gfSBmcm9tICcuLi9tb2RlbHMvc2FwLWJwLXR5cGUtdHJhbnNsYXRlLmVudW0nO1xyXG5pbXBvcnQgeyBTYXBCcFR5cGVFbnVtIH0gZnJvbSAnLi4vbW9kZWxzL3NhcC1icC10eXBlLmVudW0nO1xyXG5pbXBvcnQgeyBTYXBCcEhlbHBlclNlcnZpY2UgfSBmcm9tICcuLi9zZXJ2aWNlcy9zYXAtYnAtaGVscGVyLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBTYXBCcFRheCB9IGZyb20gJy4uL21vZGVscy9zYXAtYnAtdGF4Lm1vZGVsJztcclxuaW1wb3J0IHsgQnBUYXhUeXBlRW51bSB9IGZyb20gJy4uL21vZGVscy9icC10YXgtdHlwZS5lbnVtJztcclxuaW1wb3J0IHsgU2FwQnBFZGl0QXV0aEZsYWdzRW51bSB9IGZyb20gJy4uL21vZGVscy9zYXAtYnAtZWRpdC1hdXRoLWZsYWdzLmVudW0nO1xyXG5pbXBvcnQgeyBNYXRQYWdpbmF0b3IgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9wYWdpbmF0b3InO1xyXG5pbXBvcnQgeyBNYXREaWFsb2cgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9kaWFsb2cnO1xyXG5cclxuQEluamVjdGFibGUoKVxyXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgU2FwQnBCYXNlQ3JlYXRlRWRpdCB7XHJcbiAgcGFnaW5hdG9yID0gdmlld0NoaWxkcmVuKE1hdFBhZ2luYXRvcik7XHJcblxyXG4gIHByb3RlY3RlZCBzYXBCcFNlcnZpY2UgPSBpbmplY3QoU2FwQnBTZXJ2aWNlKTtcclxuICBwcm90ZWN0ZWQgZGlhbG9nID0gaW5qZWN0KE1hdERpYWxvZyk7XHJcbiAgcHJvdGVjdGVkIHNhcEJwSGVscGVyU2VydmljZSA9IGluamVjdChTYXBCcEhlbHBlclNlcnZpY2UpO1xyXG4gIHByb3RlY3RlZCBjaGFuZ2VEZXRlY3RvciA9IGluamVjdChDaGFuZ2VEZXRlY3RvclJlZik7XHJcbiAgcHJvdGVjdGVkIGZiID0gaW5qZWN0KE5vbk51bGxhYmxlRm9ybUJ1aWxkZXIpO1xyXG5cclxuICBmb3JtID0gdGhpcy5mYi5ncm91cCh7XHJcbiAgICBjYXJkQ29kZTogWycnLCBWYWxpZGF0b3JzLnJlcXVpcmVkXSxcclxuICAgIGNhcmROYW1lOiBbJycsIFZhbGlkYXRvcnMucmVxdWlyZWRdLFxyXG4gICAgY2FyZFR5cGU6IFtTYXBCcFR5cGVFbnVtLkN1c3RvbWVyLCBWYWxpZGF0b3JzLnJlcXVpcmVkXSxcclxuICAgIGNhcmRGb3JlaWduTmFtZTogJycsXHJcbiAgICBncm91cENvZGU6IFs8bnVtYmVyIHwgbnVsbD5udWxsLCBWYWxpZGF0b3JzLnJlcXVpcmVkXSxcclxuICAgIGN1cnJlbmN5OiBbJycsIFZhbGlkYXRvcnMucmVxdWlyZWRdLFxyXG4gICAgY291bnRyeUNvZGVQaG9uZTE6ICcnLFxyXG4gICAgcGhvbmUxOiBbJycsIFZhbGlkYXRvcnMucmVxdWlyZWRdLFxyXG4gICAgc2FsZXNFbXBsb3llZTogPG51bWJlciB8IG51bGw+bnVsbCxcclxuICAgIGdsb2JhbEFjY291bnQ6IFsnJywgVmFsaWRhdG9ycy5yZXF1aXJlZF0sXHJcbiAgICB2YXRTdGF0dXM6ICcnLFxyXG4gICAgbGljVHJhZE51bTogJycsXHJcbiAgICBwaG9uZTI6ICcnLFxyXG4gICAgY2VsbHVsYXI6ICcnLFxyXG4gICAgZmF4OiAnJyxcclxuICAgIGVtYWlsOiAnJyxcclxuICAgIHdlYlNpdGU6ICcnLFxyXG4gICAgc2hpcFR5cGU6IDxudW1iZXIgfCBudWxsPm51bGwsXHJcbiAgICBpbmR1c3RyeUNvZGU6IDxudW1iZXIgfCBudWxsPm51bGwsXHJcbiAgICBhZGRJZDogJycsXHJcbiAgICB2YXRJZFVuaWZpZWQ6ICcnLFxyXG4gICAgcmVnaXN0ZXJObzogJycsXHJcbiAgICBub3RlczogJycsXHJcbiAgICB0ZWNobmljaWFuOiA8bnVtYmVyIHwgbnVsbD5udWxsLFxyXG4gICAgdGVycml0b3J5OiA8bnVtYmVyIHwgbnVsbD5udWxsLFxyXG4gICAgZ2xvYmFsSWQ6ICcnLFxyXG4gICAgcGF5bWVudENvZGU6IDxudW1iZXIgfCBudWxsPm51bGwsXHJcbiAgICBwcmljZUxpc3Q6IDxudW1iZXIgfCBudWxsPm51bGwsXHJcbiAgICBkZWxpdmVyeUluc3RydWN0aW9uczogJycsXHJcbiAgICBmcmVlVGV4dDogJycsXHJcbiAgICBpbmFjdGl2ZUNvbW1lbnQ6ICcnLFxyXG4gICAgc3RhdHVzOiBbJ0FjdGl2ZScsIFZhbGlkYXRvcnMucmVxdWlyZWRdLFxyXG4gICAgdGF4Q29kZTogJycsXHJcbiAgfSk7XHJcblxyXG4gIHVzZXJTZXR0aW5nczogSW5wdXRTaWduYWw8U2FwQnBVc2VyU2V0dGluZ3M+O1xyXG5cclxuICBncm91cENvZGVMaXN0ID0gc2lnbmFsPFNhcEJwR3JvdXBDb2RlTW9kZWxbXT4oW10pO1xyXG4gIHNoaXBUeXBlTGlzdCA9IHNpZ25hbDxTYXBCcFNoaXBUeXBlTW9kZWxbXT4oW10pO1xyXG4gIGluZHVzdHJ5TGlzdCA9IHNpZ25hbDxTYXBCcEluZHVzdHJ5TW9kZWxbXT4oW10pO1xyXG4gIHRlY2huaWNpYW5MaXN0ID0gc2lnbmFsPFNhcEJwVGVjaG5pY2lhbk1vZGVsW10+KFtdKTtcclxuICBzYWxlc0VtcGxveWVlTGlzdCA9IHNpZ25hbDxTYXBCcFNhbGVzRW1wbG95ZWVNb2RlbFtdPihbXSk7XHJcbiAgdGVycml0b3J5TGlzdCA9IHNpZ25hbDxTYXBCcFRlcnJpdG9yeU1vZGVsW10+KFtdKTtcclxuICBnbG9iYWxJZExpc3QgPSBzaWduYWw8U2FwQnBHbG9iYWxJZE1vZGVsW10+KFtdKTtcclxuICBwYXltZW50VGVybXNMaXN0ID0gc2lnbmFsPFNhcEJwUGF5bWVudFRlcm1zTW9kZWxbXT4oW10pO1xyXG4gIHByaWNlTGlzdCA9IHNpZ25hbDxTYXBCcFByaWNlbGlzdE1vZGVsW10+KFtdKTtcclxuICBxcnlHcm91cExpc3QgPSBzaWduYWw8U2FwQnBRcnlHcm91cE1vZGVsW10+KFtdKTtcclxuICBjdXJyZW5jeUxpc3QgPSBzaWduYWw8c3RyaW5nW10+KFtdKTtcclxuICBicFR5cGVBbGxvd2VkID0gc2lnbmFsPFNhcEJwVHlwZUVudW1bXT4oW10pO1xyXG5cclxuICBpbml0Q29udGFjdFBlcnNvbkxpc3QgPSBzaWduYWw8U2FwQnBDb250YWN0UGVyc29uTW9kZWxbXT4oW10pO1xyXG4gIGNvbnRhY3RQZXJzb25DaGFuZ2VkID0gc2lnbmFsPGJvb2xlYW4+KGZhbHNlKTtcclxuICBjb250YWN0UGVyc29ucyA9IHNpZ25hbDxTYXBCcENvbnRhY3RQZXJzb25Nb2RlbFtdPihbXSk7XHJcblxyXG4gIGFkZHJlc3NDaGFuZ2VkID0gc2lnbmFsPGJvb2xlYW4+KGZhbHNlKTtcclxuXHJcbiAgaW5pdEJpbGxUb0FkZHJlc3MgPSBzaWduYWw8U2FwQnBBZGRyZXNzTW9kZWxbXT4oW10pO1xyXG4gIGJpbGxUb0FkZHJlc3MgPSBzaWduYWw8U2FwQnBBZGRyZXNzTW9kZWxbXT4oW10pO1xyXG5cclxuICBpbml0U2hpcFRvQWRkcmVzcyA9IHNpZ25hbDxTYXBCcEFkZHJlc3NNb2RlbFtdPihbXSk7XHJcbiAgc2hpcFRvQWRkcmVzcyA9IHNpZ25hbDxTYXBCcEFkZHJlc3NNb2RlbFtdPihbXSk7XHJcblxyXG4gIHNob3dRcnlHcm91cCA9IHNpZ25hbDxib29sZWFuPihmYWxzZSk7XHJcblxyXG4gIHJlZnJlc2hpbmdEYXRhRnJvbVNhcCA9IHNpZ25hbDxib29sZWFuPihmYWxzZSk7XHJcblxyXG4gIHN1Ym1pdHRlZCA9IHNpZ25hbDxib29sZWFuPihmYWxzZSk7XHJcblxyXG4gIHNhbGVzUGVyc29uT25seU9uQWRkcmVzcyA9IHNpZ25hbDxib29sZWFuPihmYWxzZSk7XHJcbiAgYnBUYXhUeXBlID0gQnBUYXhUeXBlRW51bTtcclxuXHJcbiAgdGF4ZXNMaXN0ID0gc2lnbmFsPFNhcEJwVGF4W10+KFtdKTtcclxuICByZWZyZXNoaW5nVGF4ID0gc2lnbmFsPGJvb2xlYW4+KGZhbHNlKTtcclxuXHJcbiAgcGhvbmVNYXhMZW5ndGggPSBzaWduYWw8bnVtYmVyPigyMCk7XHJcbiAgcGhvbmVQbGFjZWhvbGRlciA9IHNpZ25hbDxzdHJpbmc+KCcnKTtcclxuICBwaG9uZU1hc2sgPSBzaWduYWw8c3RyaW5nPignJyk7XHJcblxyXG4gIHByb3RlY3RlZCBvbGRDYXJkQ29kZSA9ICcnO1xyXG4gIHByb3RlY3RlZCBlZGl0TW9kZSA9IGZhbHNlO1xyXG4gIHByb3RlY3RlZCBjb252ZXJ0Tm90VVMgPSBmYWxzZTtcclxuXHJcbiAgaW5pdEZvcm0oYnBEZXRhaWxzPzogU2FwQnBNb2RlbCkge1xyXG4gICAgaWYgKGJwRGV0YWlscykge1xyXG4gICAgICB0aGlzLmVkaXRNb2RlID0gdHJ1ZTtcclxuICAgIH1cclxuXHJcbiAgICBpZiAodGhpcy51c2VyU2V0dGluZ3MoKS5waG9uZU1hc2spIHtcclxuICAgICAgdGhpcy5waG9uZVBsYWNlaG9sZGVyLnNldCgnKDk5OSkgOTk5IDk5OTkgZXh0LiA5OTk5OTk5Jyk7XHJcbiAgICAgIHRoaXMucGhvbmVNYXNrLnNldCgnKDAwMCkgMDAwIDAwMDAgZXh0LiAwMDAwMDAwJyk7XHJcbiAgICB9XHJcbiAgICB0aGlzLnNhbGVzUGVyc29uT25seU9uQWRkcmVzcy5zZXQoXHJcbiAgICAgIHRoaXMudXNlclNldHRpbmdzKCkuYnBFZGl0U2FsZXNQZXJzb25PbkFkZHJlc3NcclxuICAgICk7XHJcblxyXG4gICAgaWYgKCF0aGlzLnNhbGVzUGVyc29uT25seU9uQWRkcmVzcygpKSB7XHJcbiAgICAgIHRoaXMuZm9ybS5jb250cm9scy5zYWxlc0VtcGxveWVlLnNldFZhbGlkYXRvcnMoVmFsaWRhdG9ycy5yZXF1aXJlZCk7XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKHRoaXMudXNlclNldHRpbmdzKCkuYnBUYXhUeXBlID09PSBCcFRheFR5cGVFbnVtLkV1KSB7XHJcbiAgICAgIHRoaXMubG9hZFRheGVzKGZhbHNlKTtcclxuICAgIH1cclxuXHJcbiAgICBpZiAoXHJcbiAgICAgIGJwRGV0YWlscz8uY2FyZFR5cGUgPT09IFNhcEJwVHlwZVRyYW5zbGF0ZUVudW0uTGVhZCAmJlxyXG4gICAgICAhdGhpcy51c2VyU2V0dGluZ3MoKS5vcmFjbGVCcEVkaXRcclxuICAgICkge1xyXG4gICAgICB0aGlzLmNvbnZlcnROb3RVUyA9IHRydWU7XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKCF0aGlzLmVkaXRNb2RlKSB7XHJcbiAgICAgIHRoaXMuZm9ybS5jb250cm9scy5jb3VudHJ5Q29kZVBob25lMS5zZXRWYWxpZGF0b3JzKFZhbGlkYXRvcnMucmVxdWlyZWQpO1xyXG4gICAgICB0aGlzLmZvcm0uY29udHJvbHMucGhvbmUxLmRpc2FibGUoKTtcclxuXHJcbiAgICAgIHRoaXMuZm9ybS5jb250cm9scy5jb3VudHJ5Q29kZVBob25lMS52YWx1ZUNoYW5nZXMuc3Vic2NyaWJlKHJlcyA9PiB7XHJcbiAgICAgICAgaWYgKHJlcykge1xyXG4gICAgICAgICAgdGhpcy5mb3JtLmNvbnRyb2xzLnBob25lMS5lbmFibGUoKTtcclxuXHJcbiAgICAgICAgICBpZiAodGhpcy51c2VyU2V0dGluZ3MoKS5waG9uZU1hc2spIHtcclxuICAgICAgICAgICAgdGhpcy5zZXRQaG9uZVBsYWNlaG9sZGVyKHJlcyk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgIHRoaXMuZm9ybS5jb250cm9scy5waG9uZTEuZGlzYWJsZSgpO1xyXG4gICAgICAgIH1cclxuICAgICAgfSk7XHJcbiAgICB9XHJcblxyXG4gICAgdGhpcy5zZXRCcFR5cGVBbGxvd2VkKCk7XHJcblxyXG4gICAgaWYgKGJwRGV0YWlscykge1xyXG4gICAgICB0aGlzLmluaXRDb250YWN0UGVyc29uTGlzdC5zZXQoYnBEZXRhaWxzLmNvbnRhY3RQZXJzb25MaXN0KTtcclxuICAgICAgdGhpcy5pbml0QmlsbFRvQWRkcmVzcy5zZXQoYnBEZXRhaWxzLmFkZHJlc3NCaWxsVG9MaXN0KTtcclxuICAgICAgdGhpcy5pbml0U2hpcFRvQWRkcmVzcy5zZXQoYnBEZXRhaWxzLmFkZHJlc3NTaGlwVG9MaXN0KTtcclxuXHJcbiAgICAgIHRoaXMubG9hZEdyb3VwQ29kZUxpc3QoKTtcclxuICAgICAgdGhpcy5sb2FkUXJ5R3JvdXAoZmFsc2UsIGJwRGV0YWlscy5xcnlHcm91cExpc3QpO1xyXG5cclxuICAgICAgaWYgKHRoaXMudXNlclNldHRpbmdzKCkub3JhY2xlQnBFZGl0KSB7XHJcbiAgICAgICAgdGhpcy5mb3JtLmdldCgnY2FyZFR5cGUnKSEuZGlzYWJsZSgpO1xyXG4gICAgICAgIHRoaXMuZm9ybS5jb250cm9scy5jYXJkQ29kZS5kaXNhYmxlKCk7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgdGhpcy5mb3JtLmNvbnRyb2xzLmNhcmRDb2RlLmRpc2FibGUoKTtcclxuXHJcbiAgICAgICAgaWYgKHRoaXMuY29udmVydE5vdFVTKSB7XHJcbiAgICAgICAgICB0aGlzLm9sZENhcmRDb2RlID0gYnBEZXRhaWxzLmNhcmRDb2RlO1xyXG5cclxuICAgICAgICAgIGlmIChcclxuICAgICAgICAgICAgYnBEZXRhaWxzPy5jYXJkVHlwZSA9PT0gU2FwQnBUeXBlVHJhbnNsYXRlRW51bS5MZWFkICYmXHJcbiAgICAgICAgICAgICF0aGlzLnVzZXJTZXR0aW5ncygpLmJwRWRpdEFsbG93Q29udmVydExlYWRcclxuICAgICAgICAgICkge1xyXG4gICAgICAgICAgICB0aGlzLmZvcm0uZ2V0KCdjYXJkVHlwZScpIS5kaXNhYmxlKCk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgIHRoaXMuZm9ybS5nZXQoJ2NhcmRUeXBlJykhLmRpc2FibGUoKTtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIHRoaXMuc2V0VmFsaWRhdG9yc0luRWRpdChicERldGFpbHMpO1xyXG4gICAgICB0aGlzLnNldEVkaXRGb3JtKGJwRGV0YWlscyk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICBpZiAodGhpcy51c2VyU2V0dGluZ3MoKS5vcmFjbGVCcEVkaXQpIHtcclxuICAgICAgICB0aGlzLmZvcm0uY29udHJvbHMuY2FyZFR5cGUuc2V0VmFsdWUoU2FwQnBUeXBlRW51bS5MZWFkKTtcclxuICAgICAgfVxyXG5cclxuICAgICAgdGhpcy5mb3JtLmNvbnRyb2xzLmN1cnJlbmN5LnNldFZhbHVlKHRoaXMudXNlclNldHRpbmdzKCkuY3VycmVuY3kpO1xyXG5cclxuICAgICAgaWYgKHRoaXMudXNlclNldHRpbmdzKCkub3JhY2xlQnBFZGl0KSB7XHJcbiAgICAgICAgdGhpcy5zZXROZXdCcElkKFNhcEJwVHlwZUVudW0uTGVhZCk7XHJcbiAgICAgICAgdGhpcy5sb2FkR3JvdXBDb2RlTGlzdCgpO1xyXG4gICAgICAgIHRoaXMuc2V0RGVmYXVsdFBheW1lbnRUZXJtKFNhcEJwVHlwZUVudW0uTGVhZCk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBpZiAodGhpcy51c2VyU2V0dGluZ3MoKS5icFRheFR5cGUgIT09IEJwVGF4VHlwZUVudW0uTm9UYXgpIHtcclxuICAgICAgdGhpcy5mb3JtLmNvbnRyb2xzLnZhdFN0YXR1cy5zZXRWYWxpZGF0b3JzKFZhbGlkYXRvcnMucmVxdWlyZWQpO1xyXG4gICAgfVxyXG5cclxuICAgIHRoaXMuZm9ybS5jb250cm9scy5jYXJkVHlwZS52YWx1ZUNoYW5nZXMuc3Vic2NyaWJlKCh2YWw6IFNhcEJwVHlwZUVudW0pID0+IHtcclxuICAgICAgaWYgKHRoaXMuY29udmVydE5vdFVTKSB7XHJcbiAgICAgICAgdGhpcy5sb2FkR3JvdXBDb2RlTGlzdCgpO1xyXG4gICAgICAgIHRoaXMuc2V0RGVmYXVsdFBheW1lbnRUZXJtKHZhbCk7XHJcblxyXG4gICAgICAgIGlmICh2YWwgPT09IFNhcEJwVHlwZUVudW0uQ3VzdG9tZXIpIHtcclxuICAgICAgICAgIHRoaXMuZm9ybS5jb250cm9scy5jYXJkQ29kZS5lbmFibGUoKTtcclxuICAgICAgICAgIHRoaXMuc2V0TmV3QnBJZChTYXBCcFR5cGVFbnVtLkN1c3RvbWVyKTtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgdGhpcy5mb3JtLmNvbnRyb2xzLmNhcmRDb2RlLnNldFZhbHVlKHRoaXMub2xkQ2FyZENvZGUpO1xyXG4gICAgICAgICAgdGhpcy5mb3JtLmNvbnRyb2xzLmNhcmRDb2RlLmRpc2FibGUoKTtcclxuICAgICAgICB9XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgaWYgKHZhbCB8fCB2YWwgPj0gMCkge1xyXG4gICAgICAgICAgdGhpcy5zZXROZXdCcElkKHZhbCk7XHJcbiAgICAgICAgICB0aGlzLmxvYWRHcm91cENvZGVMaXN0KCk7XHJcbiAgICAgICAgICB0aGlzLnNldERlZmF1bHRQYXltZW50VGVybSh2YWwpO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgICB0aGlzLmNoYW5nZURldGVjdG9yLm1hcmtGb3JDaGVjaygpO1xyXG4gICAgfSk7XHJcblxyXG4gICAgdGhpcy5mb3JtLmNvbnRyb2xzLmdsb2JhbEFjY291bnQudmFsdWVDaGFuZ2VzLnN1YnNjcmliZShyZXMgPT4ge1xyXG4gICAgICBpZiAocmVzID09PSAnWWVzJykge1xyXG4gICAgICAgIHRoaXMuZm9ybS5nZXQoJ2dsb2JhbElkJykhLnNldFZhbGlkYXRvcnMoW1ZhbGlkYXRvcnMucmVxdWlyZWRdKTtcclxuICAgICAgICB0aGlzLmNoYW5nZURldGVjdG9yLm1hcmtGb3JDaGVjaygpO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIHRoaXMuZm9ybS5nZXQoJ2dsb2JhbElkJykhLnNldFZhbGlkYXRvcnMobnVsbCk7XHJcbiAgICAgICAgdGhpcy5jaGFuZ2VEZXRlY3Rvci5tYXJrRm9yQ2hlY2soKTtcclxuICAgICAgfVxyXG4gICAgICB0aGlzLmNoYW5nZURldGVjdG9yLm1hcmtGb3JDaGVjaygpO1xyXG4gICAgfSk7XHJcblxyXG4gICAgdGhpcy5pbml0TG9hZGVycygpO1xyXG4gICAgdGhpcy5jaGFuZ2VEZXRlY3Rvci5tYXJrRm9yQ2hlY2soKTtcclxuICB9XHJcblxyXG4gIHJlZnJlc2hDYXJkQ29kZSgpIHtcclxuICAgIHRoaXMuc2V0TmV3QnBJZCh0aGlzLmZvcm0uY29udHJvbHMuY2FyZFR5cGUudmFsdWUpO1xyXG4gICAgdGhpcy5jaGFuZ2VEZXRlY3Rvci5tYXJrRm9yQ2hlY2soKTtcclxuICB9XHJcblxyXG4gIGxvYWRHcm91cENvZGVMaXN0KHJlZnJlc2ggPSBmYWxzZSkge1xyXG4gICAgdGhpcy5yZWZyZXNoaW5nRGF0YUZyb21TYXAuc2V0KHRydWUpO1xyXG4gICAgdGhpcy5jaGFuZ2VEZXRlY3Rvci5tYXJrRm9yQ2hlY2soKTtcclxuXHJcbiAgICB0aGlzLnNhcEJwU2VydmljZVxyXG4gICAgICAuZ2V0R3JvdXBDb2RlKHRoaXMuZm9ybS5jb250cm9scy5jYXJkVHlwZS52YWx1ZSwgcmVmcmVzaClcclxuICAgICAgLnN1YnNjcmliZShyZXMgPT4ge1xyXG4gICAgICAgIHRoaXMuZ3JvdXBDb2RlTGlzdC5zZXQocmVzKTtcclxuICAgICAgICB0aGlzLmZvcm0uY29udHJvbHMuZ3JvdXBDb2RlLnNldFZhbHVlKHJlcyA/IHJlc1swXS5pZCA6IG51bGwpO1xyXG4gICAgICAgIHRoaXMucmVmcmVzaGluZ0RhdGFGcm9tU2FwLnNldChmYWxzZSk7XHJcbiAgICAgICAgdGhpcy5jaGFuZ2VEZXRlY3Rvci5tYXJrRm9yQ2hlY2soKTtcclxuICAgICAgfSk7XHJcbiAgfVxyXG5cclxuICBsb2FkU2hpcFR5cGUocmVmcmVzaCA9IGZhbHNlKSB7XHJcbiAgICB0aGlzLnJlZnJlc2hpbmdEYXRhRnJvbVNhcC5zZXQodHJ1ZSk7XHJcbiAgICB0aGlzLmNoYW5nZURldGVjdG9yLm1hcmtGb3JDaGVjaygpO1xyXG5cclxuICAgIHRoaXMuc2FwQnBTZXJ2aWNlLmdldFNoaXBUeXBlKHJlZnJlc2gpLnN1YnNjcmliZShyZXMgPT4ge1xyXG4gICAgICB0aGlzLnNoaXBUeXBlTGlzdC5zZXQocmVzKTtcclxuICAgICAgdGhpcy5yZWZyZXNoaW5nRGF0YUZyb21TYXAuc2V0KGZhbHNlKTtcclxuICAgICAgdGhpcy5jaGFuZ2VEZXRlY3Rvci5tYXJrRm9yQ2hlY2soKTtcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgbG9hZEluZHVzdHJ5KHJlZnJlc2ggPSBmYWxzZSkge1xyXG4gICAgdGhpcy5yZWZyZXNoaW5nRGF0YUZyb21TYXAuc2V0KHRydWUpO1xyXG4gICAgdGhpcy5jaGFuZ2VEZXRlY3Rvci5tYXJrRm9yQ2hlY2soKTtcclxuXHJcbiAgICB0aGlzLnNhcEJwU2VydmljZS5nZXRJbmR1c3RyeShyZWZyZXNoKS5zdWJzY3JpYmUocmVzID0+IHtcclxuICAgICAgdGhpcy5pbmR1c3RyeUxpc3Quc2V0KHJlcyk7XHJcbiAgICAgIHRoaXMucmVmcmVzaGluZ0RhdGFGcm9tU2FwLnNldChmYWxzZSk7XHJcbiAgICAgIHRoaXMuY2hhbmdlRGV0ZWN0b3IubWFya0ZvckNoZWNrKCk7XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIGxvYWRUZWNobmljaWFuKHJlZnJlc2ggPSBmYWxzZSkge1xyXG4gICAgdGhpcy5yZWZyZXNoaW5nRGF0YUZyb21TYXAuc2V0KHRydWUpO1xyXG4gICAgdGhpcy5jaGFuZ2VEZXRlY3Rvci5tYXJrRm9yQ2hlY2soKTtcclxuXHJcbiAgICB0aGlzLnNhcEJwU2VydmljZS5nZXRUZWNobmljaWFuKHJlZnJlc2gpLnN1YnNjcmliZShyZXMgPT4ge1xyXG4gICAgICB0aGlzLnRlY2huaWNpYW5MaXN0LnNldChyZXMpO1xyXG4gICAgICB0aGlzLnJlZnJlc2hpbmdEYXRhRnJvbVNhcC5zZXQoZmFsc2UpO1xyXG4gICAgICB0aGlzLmNoYW5nZURldGVjdG9yLm1hcmtGb3JDaGVjaygpO1xyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBsb2FkU2FsZXNFbXBsb3llZShyZWZyZXNoID0gZmFsc2UpIHtcclxuICAgIHRoaXMucmVmcmVzaGluZ0RhdGFGcm9tU2FwLnNldCh0cnVlKTtcclxuICAgIHRoaXMuY2hhbmdlRGV0ZWN0b3IubWFya0ZvckNoZWNrKCk7XHJcblxyXG4gICAgdGhpcy5zYXBCcFNlcnZpY2UuZ2V0U2FsZXNFbXBsb3llZShyZWZyZXNoKS5zdWJzY3JpYmUocmVzID0+IHtcclxuICAgICAgdGhpcy5zYWxlc0VtcGxveWVlTGlzdC5zZXQocmVzKTtcclxuICAgICAgdGhpcy5yZWZyZXNoaW5nRGF0YUZyb21TYXAuc2V0KGZhbHNlKTtcclxuICAgICAgdGhpcy5jaGFuZ2VEZXRlY3Rvci5tYXJrRm9yQ2hlY2soKTtcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgbG9hZFRlcnJpdG9yeShyZWZyZXNoID0gZmFsc2UpIHtcclxuICAgIHRoaXMucmVmcmVzaGluZ0RhdGFGcm9tU2FwLnNldCh0cnVlKTtcclxuICAgIHRoaXMuY2hhbmdlRGV0ZWN0b3IubWFya0ZvckNoZWNrKCk7XHJcblxyXG4gICAgdGhpcy5zYXBCcFNlcnZpY2UuZ2V0VGVycml0b3J5KHJlZnJlc2gpLnN1YnNjcmliZShyZXMgPT4ge1xyXG4gICAgICB0aGlzLnRlcnJpdG9yeUxpc3Quc2V0KHJlcyk7XHJcbiAgICAgIHRoaXMucmVmcmVzaGluZ0RhdGFGcm9tU2FwLnNldChmYWxzZSk7XHJcbiAgICAgIHRoaXMuY2hhbmdlRGV0ZWN0b3IubWFya0ZvckNoZWNrKCk7XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIGxvYWRHbG9iYWxJZChyZWZyZXNoID0gZmFsc2UpIHtcclxuICAgIHRoaXMucmVmcmVzaGluZ0RhdGFGcm9tU2FwLnNldCh0cnVlKTtcclxuICAgIHRoaXMuY2hhbmdlRGV0ZWN0b3IubWFya0ZvckNoZWNrKCk7XHJcblxyXG4gICAgdGhpcy5zYXBCcFNlcnZpY2UuZ2V0R2xvYmFsSWQocmVmcmVzaCkuc3Vic2NyaWJlKHJlcyA9PiB7XHJcbiAgICAgIHRoaXMuZ2xvYmFsSWRMaXN0LnNldChyZXMpO1xyXG4gICAgICB0aGlzLnJlZnJlc2hpbmdEYXRhRnJvbVNhcC5zZXQoZmFsc2UpO1xyXG4gICAgICB0aGlzLmNoYW5nZURldGVjdG9yLm1hcmtGb3JDaGVjaygpO1xyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBsb2FkUGF5bWVudFRlcm1zKHJlZnJlc2ggPSBmYWxzZSkge1xyXG4gICAgdGhpcy5yZWZyZXNoaW5nRGF0YUZyb21TYXAuc2V0KHRydWUpO1xyXG4gICAgdGhpcy5jaGFuZ2VEZXRlY3Rvci5tYXJrRm9yQ2hlY2soKTtcclxuXHJcbiAgICB0aGlzLnNhcEJwU2VydmljZS5nZXRQYXltZW50VGVybXMocmVmcmVzaCkuc3Vic2NyaWJlKHJlcyA9PiB7XHJcbiAgICAgIHRoaXMucGF5bWVudFRlcm1zTGlzdC5zZXQocmVzKTtcclxuICAgICAgdGhpcy5yZWZyZXNoaW5nRGF0YUZyb21TYXAuc2V0KGZhbHNlKTtcclxuXHJcbiAgICAgIGlmICghdGhpcy5lZGl0TW9kZSkge1xyXG4gICAgICAgIGNvbnN0IHR5cGUgPSB0aGlzLmZvcm0uY29udHJvbHMuY2FyZFR5cGUudmFsdWU7XHJcbiAgICAgICAgaWYgKHR5cGUpIHtcclxuICAgICAgICAgIHRoaXMuc2V0RGVmYXVsdFBheW1lbnRUZXJtKHR5cGUpO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG5cclxuICAgICAgdGhpcy5jaGFuZ2VEZXRlY3Rvci5tYXJrRm9yQ2hlY2soKTtcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgbG9hZFByaWNlTGlzdChyZWZyZXNoID0gZmFsc2UpIHtcclxuICAgIHRoaXMucmVmcmVzaGluZ0RhdGFGcm9tU2FwLnNldCh0cnVlKTtcclxuICAgIHRoaXMuY2hhbmdlRGV0ZWN0b3IubWFya0ZvckNoZWNrKCk7XHJcblxyXG4gICAgdGhpcy5zYXBCcFNlcnZpY2UuZ2V0UHJpY2VsaXN0KHJlZnJlc2gpLnN1YnNjcmliZShyZXMgPT4ge1xyXG4gICAgICB0aGlzLnByaWNlTGlzdC5zZXQocmVzKTtcclxuICAgICAgdGhpcy5yZWZyZXNoaW5nRGF0YUZyb21TYXAuc2V0KGZhbHNlKTtcclxuXHJcbiAgICAgIGlmICghdGhpcy5lZGl0TW9kZSkge1xyXG4gICAgICAgIGNvbnN0IGRlZmF1bHRQTCA9IHJlcy5maW5kKHBsID0+IHBsLmlzRGVmYXVsdCk7XHJcbiAgICAgICAgaWYgKGRlZmF1bHRQTCkge1xyXG4gICAgICAgICAgdGhpcy5mb3JtLmdldCgncHJpY2VMaXN0JykhLnNldFZhbHVlKGRlZmF1bHRQTC5pZCk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcblxyXG4gICAgICB0aGlzLmNoYW5nZURldGVjdG9yLm1hcmtGb3JDaGVjaygpO1xyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBsb2FkUXJ5R3JvdXAocmVmcmVzaCA9IGZhbHNlLCBiYXNlVmFsdWVzPzogU2FwQnBRcnlHcm91cE1vZGVsW10pIHtcclxuICAgIHRoaXMucmVmcmVzaGluZ0RhdGFGcm9tU2FwLnNldCh0cnVlKTtcclxuICAgIHRoaXMuY2hhbmdlRGV0ZWN0b3IubWFya0ZvckNoZWNrKCk7XHJcblxyXG4gICAgdGhpcy5zYXBCcFNlcnZpY2UuZ2V0UXJ5R3JvdXAocmVmcmVzaCkuc3Vic2NyaWJlKHJlcyA9PiB7XHJcbiAgICAgIGNvbnN0IHVwZGF0ZWRRcnlHcm91cCA9IHJlcy5tYXAoKGdyb3VwLCBpbmRleCkgPT4ge1xyXG4gICAgICAgIGdyb3VwLnZhbHVlID0gYmFzZVZhbHVlcyA/IGJhc2VWYWx1ZXNbaW5kZXhdLnZhbHVlIDogJ04nO1xyXG4gICAgICAgIHJldHVybiBncm91cDtcclxuICAgICAgfSk7XHJcbiAgICAgIHRoaXMucXJ5R3JvdXBMaXN0LnNldCh1cGRhdGVkUXJ5R3JvdXApO1xyXG5cclxuICAgICAgdGhpcy5yZWZyZXNoaW5nRGF0YUZyb21TYXAuc2V0KGZhbHNlKTtcclxuICAgICAgdGhpcy5jaGFuZ2VEZXRlY3Rvci5tYXJrRm9yQ2hlY2soKTtcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgbG9hZEN1cnJlbmN5KHJlZnJlc2ggPSBmYWxzZSkge1xyXG4gICAgdGhpcy5yZWZyZXNoaW5nRGF0YUZyb21TYXAuc2V0KHRydWUpO1xyXG4gICAgdGhpcy5jaGFuZ2VEZXRlY3Rvci5tYXJrRm9yQ2hlY2soKTtcclxuXHJcbiAgICB0aGlzLnNhcEJwU2VydmljZS5nZXRDdXJyZW5jeShyZWZyZXNoKS5zdWJzY3JpYmUocmVzID0+IHtcclxuICAgICAgdGhpcy5jdXJyZW5jeUxpc3Quc2V0KHJlcyk7XHJcbiAgICAgIHRoaXMucmVmcmVzaGluZ0RhdGFGcm9tU2FwLnNldChmYWxzZSk7XHJcbiAgICAgIHRoaXMuY2hhbmdlRGV0ZWN0b3IubWFya0ZvckNoZWNrKCk7XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIGxvYWRUYXhlcyhyZWZyZXNoID0gZmFsc2UpIHtcclxuICAgIHRoaXMucmVmcmVzaGluZ1RheC5zZXQodHJ1ZSk7XHJcbiAgICB0aGlzLmNoYW5nZURldGVjdG9yLm1hcmtGb3JDaGVjaygpO1xyXG5cclxuICAgIHRoaXMuc2FwQnBTZXJ2aWNlLmdldFRheGVzKHJlZnJlc2gpLnN1YnNjcmliZShyZXMgPT4ge1xyXG4gICAgICB0aGlzLnRheGVzTGlzdC5zZXQocmVzKTtcclxuICAgICAgdGhpcy5yZWZyZXNoaW5nVGF4LnNldChmYWxzZSk7XHJcbiAgICAgIHRoaXMuY2hhbmdlRGV0ZWN0b3IubWFya0ZvckNoZWNrKCk7XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIHNldFNoaXBUb0FkZHJlc3MoZXZlbnQ6IFNhcEJwQWRkcmVzc01vZGVsW10pIHtcclxuICAgIHRoaXMuc2hpcFRvQWRkcmVzcy5zZXQoZXZlbnQpO1xyXG4gICAgdGhpcy5jaGFuZ2VEZXRlY3Rvci5tYXJrRm9yQ2hlY2soKTtcclxuICB9XHJcblxyXG4gIHNldEJpbGxUb0FkZHJlc3MoZXZlbnQ6IFNhcEJwQWRkcmVzc01vZGVsW10pIHtcclxuICAgIHRoaXMuYmlsbFRvQWRkcmVzcy5zZXQoZXZlbnQpO1xyXG4gICAgdGhpcy5jaGFuZ2VEZXRlY3Rvci5tYXJrRm9yQ2hlY2soKTtcclxuICB9XHJcblxyXG4gIHNldEFkZHJlc3NDaGFuZ2VkKGV2ZW50OiBib29sZWFuKSB7XHJcbiAgICB0aGlzLmFkZHJlc3NDaGFuZ2VkLnNldChldmVudCk7XHJcbiAgICB0aGlzLmNoYW5nZURldGVjdG9yLm1hcmtGb3JDaGVjaygpO1xyXG4gIH1cclxuXHJcbiAgZGlzYWJsZUVkaXRJbmZvcm1hdGlvbkRhdGEoYnBEZXRhaWxzOiBTYXBCcE1vZGVsKSB7XHJcbiAgICByZXR1cm4gdGhpcy5zYXBCcEhlbHBlclNlcnZpY2UuZGlzYWJsZUVkaXRJbmZvcm1hdGlvbkRhdGEoXHJcbiAgICAgIHRoaXMudXNlclNldHRpbmdzKCkuc2FwQnBFZGl0QXV0aCxcclxuICAgICAgdGhpcy5mb3JtLFxyXG4gICAgICBicERldGFpbHNcclxuICAgICk7XHJcbiAgfVxyXG5cclxuICBkaXNhYmxlRWRpdENvbnRhY3RQZXJzb24oYnBEZXRhaWxzOiBTYXBCcE1vZGVsKSB7XHJcbiAgICByZXR1cm4gdGhpcy5zYXBCcEhlbHBlclNlcnZpY2UuZGlzYWJsZUVkaXRDb250YWN0UGVyc29uKFxyXG4gICAgICB0aGlzLnVzZXJTZXR0aW5ncygpLnNhcEJwRWRpdEF1dGgsXHJcbiAgICAgIHRoaXMuZm9ybSxcclxuICAgICAgYnBEZXRhaWxzXHJcbiAgICApO1xyXG4gIH1cclxuXHJcbiAgZGlzYWJsZUVkaXRCaWxsVG9BZGRyZXNzKGJwRGV0YWlsczogU2FwQnBNb2RlbCkge1xyXG4gICAgcmV0dXJuIHRoaXMuc2FwQnBIZWxwZXJTZXJ2aWNlLmRpc2FibGVFZGl0QmlsbFRvQWRkcmVzcyhcclxuICAgICAgdGhpcy51c2VyU2V0dGluZ3MoKS5zYXBCcEVkaXRBdXRoLFxyXG4gICAgICB0aGlzLmZvcm0sXHJcbiAgICAgIGJwRGV0YWlsc1xyXG4gICAgKTtcclxuICB9XHJcblxyXG4gIGRpc2FibGVFZGl0U2hpcFRvQWRkcmVzcyhicERldGFpbHM6IFNhcEJwTW9kZWwpIHtcclxuICAgIHJldHVybiB0aGlzLnNhcEJwSGVscGVyU2VydmljZS5kaXNhYmxlRWRpdFNoaXBUb0FkZHJlc3MoXHJcbiAgICAgIHRoaXMudXNlclNldHRpbmdzKCkuc2FwQnBFZGl0QXV0aCxcclxuICAgICAgdGhpcy5mb3JtLFxyXG4gICAgICBicERldGFpbHNcclxuICAgICk7XHJcbiAgfVxyXG5cclxuICBkaXNhYmxlQWRkU2hpcFRvQWRkcmVzcyhicERldGFpbHM6IFNhcEJwTW9kZWwpIHtcclxuICAgIHJldHVybiB0aGlzLnNhcEJwSGVscGVyU2VydmljZS5kaXNhYmxlQWRkU2hpcFRvQWRkcmVzcyhcclxuICAgICAgdGhpcy51c2VyU2V0dGluZ3MoKS5zYXBCcEVkaXRBdXRoLFxyXG4gICAgICB0aGlzLmZvcm0sXHJcbiAgICAgIGJwRGV0YWlsc1xyXG4gICAgKTtcclxuICB9XHJcblxyXG4gIGRpc2FibGVBZGRDb250YWN0UGVyc29uKGJwRGV0YWlsczogU2FwQnBNb2RlbCkge1xyXG4gICAgcmV0dXJuIHRoaXMuc2FwQnBIZWxwZXJTZXJ2aWNlLmRpc2FibGVBZGRDb250YWN0UGVyc29uKFxyXG4gICAgICB0aGlzLnVzZXJTZXR0aW5ncygpLnNhcEJwRWRpdEF1dGgsXHJcbiAgICAgIHRoaXMuZm9ybSxcclxuICAgICAgYnBEZXRhaWxzXHJcbiAgICApO1xyXG4gIH1cclxuXHJcbiAgZGlzYWJsZUFkZEJpbGxUb0FkZHJlc3MoYnBEZXRhaWxzOiBTYXBCcE1vZGVsKSB7XHJcbiAgICByZXR1cm4gdGhpcy5zYXBCcEhlbHBlclNlcnZpY2UuZGlzYWJsZUFkZEJpbGxUb0FkZHJlc3MoXHJcbiAgICAgIHRoaXMudXNlclNldHRpbmdzKCkuc2FwQnBFZGl0QXV0aCxcclxuICAgICAgdGhpcy5mb3JtLFxyXG4gICAgICBicERldGFpbHNcclxuICAgICk7XHJcbiAgfVxyXG5cclxuICBwcm90ZWN0ZWQgaW5pdExvYWRlcnMoKSB7XHJcbiAgICAvLyB0aGlzLmxvYWRHcm91cENvZGVMaXN0KCk7XHJcbiAgICB0aGlzLmxvYWRTaGlwVHlwZSgpO1xyXG4gICAgdGhpcy5sb2FkSW5kdXN0cnkoKTtcclxuICAgIHRoaXMubG9hZFRlY2huaWNpYW4oKTtcclxuICAgIHRoaXMubG9hZFNhbGVzRW1wbG95ZWUoKTtcclxuICAgIHRoaXMubG9hZFRlcnJpdG9yeSgpO1xyXG4gICAgdGhpcy5sb2FkUGF5bWVudFRlcm1zKCk7XHJcbiAgICB0aGlzLmxvYWRQcmljZUxpc3QoKTtcclxuICAgIHRoaXMubG9hZEN1cnJlbmN5KCk7XHJcbiAgICB0aGlzLmxvYWRHbG9iYWxJZCgpO1xyXG5cclxuICAgIGlmICghdGhpcy5lZGl0TW9kZSkge1xyXG4gICAgICB0aGlzLmxvYWRRcnlHcm91cCgpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBzZXRFZGl0Rm9ybShicERldGFpbHM6IFNhcEJwTW9kZWwpIHtcclxuICAgIHRoaXMuZm9ybS5zZXRWYWx1ZSh7XHJcbiAgICAgIGNvdW50cnlDb2RlUGhvbmUxOiAnJyxcclxuICAgICAgY2FyZENvZGU6IGJwRGV0YWlscy5jYXJkQ29kZSxcclxuICAgICAgY2FyZE5hbWU6IGJwRGV0YWlscy5jYXJkTmFtZSxcclxuICAgICAgY2FyZFR5cGU6IGJwRGV0YWlscy5jYXJkVHlwZVxyXG4gICAgICAgID8gdGhpcy5jb252ZXJ0QnBUeXBlKGJwRGV0YWlscy5jYXJkVHlwZSlcclxuICAgICAgICA6IHRoaXMudXNlclNldHRpbmdzKCkub3JhY2xlQnBFZGl0XHJcbiAgICAgICAgICA/IFNhcEJwVHlwZUVudW0uTGVhZFxyXG4gICAgICAgICAgOiBTYXBCcFR5cGVFbnVtLkN1c3RvbWVyLFxyXG4gICAgICBjYXJkRm9yZWlnbk5hbWU6IGJwRGV0YWlscy5jYXJkRm9yaWduTmFtZSxcclxuICAgICAgZ3JvdXBDb2RlOiBicERldGFpbHMuZ3JvdXBDb2RlIHx8IG51bGwsXHJcbiAgICAgIGN1cnJlbmN5OiBicERldGFpbHMuY3VycmVuY3lcclxuICAgICAgICA/IGJwRGV0YWlscy5jdXJyZW5jeVxyXG4gICAgICAgIDogdGhpcy51c2VyU2V0dGluZ3MoKS5jdXJyZW5jeSxcclxuICAgICAgbGljVHJhZE51bTogYnBEZXRhaWxzLmxpY1RyYWROdW0sXHJcbiAgICAgIHBob25lMTogYnBEZXRhaWxzLnBob25lMSxcclxuICAgICAgcGhvbmUyOiBicERldGFpbHMucGhvbmUyLFxyXG4gICAgICBjZWxsdWxhcjogYnBEZXRhaWxzLmNlbGx1bGFyLFxyXG4gICAgICBmYXg6IGJwRGV0YWlscy5mYXgsXHJcbiAgICAgIGVtYWlsOiBicERldGFpbHMuZW1haWwsXHJcbiAgICAgIHdlYlNpdGU6IGJwRGV0YWlscy53ZWJTaXRlLFxyXG4gICAgICBzaGlwVHlwZTogYnBEZXRhaWxzLnNoaXBUeXBlQ29kZSxcclxuICAgICAgaW5kdXN0cnlDb2RlOiBicERldGFpbHMuaW5kdXN0cnlDb2RlLFxyXG4gICAgICBhZGRJZDogYnBEZXRhaWxzLmFkZElkLFxyXG4gICAgICB2YXRJZFVuaWZpZWQ6IGJwRGV0YWlscy52YXRJZFVuaWZpZWQsXHJcbiAgICAgIHJlZ2lzdGVyTm86IGJwRGV0YWlscy5yZWdpc3Rlck5vLFxyXG4gICAgICBub3RlczogYnBEZXRhaWxzLm5vdGVzLFxyXG4gICAgICB0ZWNobmljaWFuOiBicERldGFpbHMudGVjaG5pY2lhbkNvZGUsXHJcbiAgICAgIHNhbGVzRW1wbG95ZWU6IGJwRGV0YWlscy5zYWxlc1BlcnNvbkNvZGUsXHJcbiAgICAgIHRlcnJpdG9yeTogYnBEZXRhaWxzLnRlcnJpdG9yeUNvZGUsXHJcbiAgICAgIGdsb2JhbEFjY291bnQ6IGJwRGV0YWlscy5nbG9iYWxBY2NvdW50LFxyXG4gICAgICBnbG9iYWxJZDogYnBEZXRhaWxzLmdsb2JhbElkLFxyXG4gICAgICBwYXltZW50Q29kZTogYnBEZXRhaWxzLnBheW1lbnRDb2RlLFxyXG4gICAgICBwcmljZUxpc3Q6IGJwRGV0YWlscy5wcmljZWxpc3RDb2RlLFxyXG4gICAgICBkZWxpdmVyeUluc3RydWN0aW9uczogYnBEZXRhaWxzLmRlbGl2ZXJ5SW5zdHJ1Y3Rpb25zLFxyXG4gICAgICBmcmVlVGV4dDogYnBEZXRhaWxzLmZyZWVUZXh0LFxyXG4gICAgICBpbmFjdGl2ZUNvbW1lbnQ6IGJwRGV0YWlscy5pbmFjdGl2ZUNvbW1lbnQsXHJcbiAgICAgIHN0YXR1czogYnBEZXRhaWxzLmluYWN0aXZlUmVhc29uLFxyXG4gICAgICB2YXRTdGF0dXM6IGJwRGV0YWlscy52YXRTdGF0dXMsXHJcbiAgICAgIHRheENvZGU6IGJwRGV0YWlscy50YXhDb2RlLFxyXG4gICAgfSk7XHJcblxyXG4gICAgdGhpcy5jaGFuZ2VEZXRlY3Rvci5tYXJrRm9yQ2hlY2soKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgc2V0VmFsaWRhdG9yc0luRWRpdChicERldGFpbHM6IFNhcEJwTW9kZWwpIHtcclxuICAgIGlmICh0aGlzLmRpc2FibGVFZGl0SW5mb3JtYXRpb25EYXRhKGJwRGV0YWlscykpIHtcclxuICAgICAgdGhpcy5mb3JtLmNvbnRyb2xzLmNhcmRDb2RlLnNldFZhbGlkYXRvcnMobnVsbCk7XHJcbiAgICAgIHRoaXMuZm9ybS5jb250cm9scy5jYXJkTmFtZS5zZXRWYWxpZGF0b3JzKG51bGwpO1xyXG4gICAgICB0aGlzLmZvcm0uY29udHJvbHMuY2FyZFR5cGUuc2V0VmFsaWRhdG9ycyhudWxsKTtcclxuICAgICAgdGhpcy5mb3JtLmNvbnRyb2xzLmdyb3VwQ29kZS5zZXRWYWxpZGF0b3JzKG51bGwpO1xyXG4gICAgICB0aGlzLmZvcm0uY29udHJvbHMuY3VycmVuY3kuc2V0VmFsaWRhdG9ycyhudWxsKTtcclxuICAgICAgdGhpcy5mb3JtLmNvbnRyb2xzLnBob25lMS5zZXRWYWxpZGF0b3JzKG51bGwpO1xyXG4gICAgICB0aGlzLmZvcm0uY29udHJvbHMuc2FsZXNFbXBsb3llZS5zZXRWYWxpZGF0b3JzKG51bGwpO1xyXG4gICAgICB0aGlzLmZvcm0uY29udHJvbHMuZ2xvYmFsQWNjb3VudC5zZXRWYWxpZGF0b3JzKG51bGwpO1xyXG4gICAgfVxyXG4gICAgdGhpcy5jaGFuZ2VEZXRlY3Rvci5tYXJrRm9yQ2hlY2soKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgc2V0UGhvbmVQbGFjZWhvbGRlcihjb3VudHJ5Q29kZTogc3RyaW5nKSB7XHJcbiAgICAvLyAyMCBzYXAgbGVuZ3RoLCAtNCBzcGFjZXMsICsxMCBleHRyYSBjaGFyIGZvciB2aXNpYmxlXHJcbiAgICB0aGlzLnBob25lTWF4TGVuZ3RoLnNldCgyMCAtIGNvdW50cnlDb2RlLmxlbmd0aCAtIDQgKyAxMCk7XHJcbiAgICBjb25zdCBleHRMZW5ndGggPSB0aGlzLnBob25lTWF4TGVuZ3RoKCkgLSAyMDtcclxuXHJcbiAgICBsZXQgcGhvbmVQbGFjZWhvbGRlciA9ICcoOTk5KSA5OTkgOTk5OSBleHQuICc7XHJcbiAgICBsZXQgcGhvbmVNYXNrID0gJygwMDApIDAwMCAwMDAwIGV4dC4gJztcclxuXHJcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IGV4dExlbmd0aDsgaSsrKSB7XHJcbiAgICAgIHBob25lUGxhY2Vob2xkZXIgKz0gJzknO1xyXG4gICAgICBwaG9uZU1hc2sgKz0gJzknO1xyXG4gICAgfVxyXG5cclxuICAgIHRoaXMucGhvbmVQbGFjZWhvbGRlci5zZXQocGhvbmVQbGFjZWhvbGRlcik7XHJcbiAgICB0aGlzLnBob25lTWFzay5zZXQocGhvbmVNYXNrKTtcclxuICAgIHRoaXMuY2hhbmdlRGV0ZWN0b3IubWFya0ZvckNoZWNrKCk7XHJcbiAgfVxyXG5cclxuICBwcm90ZWN0ZWQgcHJlcGFyZURhdGFUb1NlbmQoKTogU2FwQnBDcmVhdGVNb2RlbCB7XHJcbiAgICBjb25zdCB2YWx1ZXMgPSB0aGlzLmZvcm0uZ2V0UmF3VmFsdWUoKTtcclxuICAgIGxldCBwaG9uZTEgPSB2YWx1ZXMucGhvbmUxO1xyXG5cclxuICAgIGlmICghdGhpcy5lZGl0TW9kZSAmJiB0aGlzLnBob25lTWFzaygpKSB7XHJcbiAgICAgIHBob25lMSA9XHJcbiAgICAgICAgdmFsdWVzLmNvdW50cnlDb2RlUGhvbmUxICtcclxuICAgICAgICAnLScgK1xyXG4gICAgICAgIHZhbHVlcy5waG9uZTEuc2xpY2UoMCwgMykgK1xyXG4gICAgICAgICctJyArXHJcbiAgICAgICAgdmFsdWVzLnBob25lMS5zbGljZSgzLCA2KSArXHJcbiAgICAgICAgJy0nICtcclxuICAgICAgICB2YWx1ZXMucGhvbmUxLnNsaWNlKDYsIDEwKSArXHJcbiAgICAgICAgKHZhbHVlcy5waG9uZTEuc3BsaXQoJ3QnKVsxXSA/ICd4JyArIHZhbHVlcy5waG9uZTEuc3BsaXQoJ3QnKVsxXSA6ICcnKTtcclxuICAgIH0gZWxzZSBpZiAoIXRoaXMuZWRpdE1vZGUpIHtcclxuICAgICAgcGhvbmUxID0gdmFsdWVzLmNvdW50cnlDb2RlUGhvbmUxICsgJyAnICsgcGhvbmUxO1xyXG4gICAgfVxyXG5cclxuICAgIHJldHVybiB7XHJcbiAgICAgIGNhcmRGb3JpZ25OYW1lOiB2YWx1ZXMuY2FyZEZvcmVpZ25OYW1lLFxyXG4gICAgICBncm91cENvZGU6IHZhbHVlcy5ncm91cENvZGUgYXMgbnVtYmVyLFxyXG4gICAgICBjdXJyZW5jeTogdmFsdWVzLmN1cnJlbmN5LFxyXG4gICAgICBsaWNUcmFkTnVtOiB2YWx1ZXMubGljVHJhZE51bSxcclxuICAgICAgcGhvbmUxOiBwaG9uZTEsXHJcbiAgICAgIHBob25lMjogdmFsdWVzLnBob25lMixcclxuICAgICAgY2VsbHVsYXI6IHZhbHVlcy5jZWxsdWxhcixcclxuICAgICAgZmF4OiB2YWx1ZXMuZmF4LFxyXG4gICAgICBlbWFpbDogdmFsdWVzLmVtYWlsLFxyXG4gICAgICB3ZWJTaXRlOiB2YWx1ZXMud2ViU2l0ZSxcclxuICAgICAgc2hpcFR5cGVDb2RlOiB2YWx1ZXMuc2hpcFR5cGUgYXMgbnVtYmVyLFxyXG4gICAgICBpbmR1c3RyeUNvZGU6IHZhbHVlcy5pbmR1c3RyeUNvZGUgYXMgbnVtYmVyLFxyXG4gICAgICBhZGRJZDogdmFsdWVzLmFkZElkLFxyXG4gICAgICB2YXRJZFVuaWZpZWQ6IHZhbHVlcy52YXRJZFVuaWZpZWQsXHJcbiAgICAgIHJlZ2lzdGVyTm86IHZhbHVlcy5yZWdpc3Rlck5vLFxyXG4gICAgICBub3RlczogdmFsdWVzLm5vdGVzLFxyXG4gICAgICB0ZWNobmljaWFuQ29kZTogdmFsdWVzLnRlY2huaWNpYW4gYXMgbnVtYmVyLFxyXG4gICAgICBzYWxlc1BlcnNvbkNvZGU6IHZhbHVlcy5zYWxlc0VtcGxveWVlIGFzIG51bWJlcixcclxuICAgICAgdGVycml0b3J5Q29kZTogdmFsdWVzLnRlcnJpdG9yeSBhcyBudW1iZXIsXHJcbiAgICAgIGdsb2JhbEFjY291bnQ6IHZhbHVlcy5nbG9iYWxBY2NvdW50LFxyXG4gICAgICBnbG9iYWxJZDogdmFsdWVzLmdsb2JhbElkLFxyXG4gICAgICB2YWxpZEZvcjogdmFsdWVzLnN0YXR1cyA9PT0gJ0FjdGl2ZScgPyAnWScgOiAnTicsXHJcbiAgICAgIHBheW1lbnRDb2RlOiB2YWx1ZXMucGF5bWVudENvZGUgYXMgbnVtYmVyLFxyXG4gICAgICBwcmljZWxpc3RDb2RlOiB2YWx1ZXMucHJpY2VMaXN0IGFzIG51bWJlcixcclxuICAgICAgZGVsaXZlcnlJbnN0cnVjdGlvbnM6IHZhbHVlcy5kZWxpdmVyeUluc3RydWN0aW9ucyxcclxuICAgICAgZnJlZVRleHQ6IHZhbHVlcy5mcmVlVGV4dCxcclxuICAgICAgY29udGFjdFBlcnNvbkxpc3Q6IHRoaXMuY29udGFjdFBlcnNvbnMoKSB8fCBbXSxcclxuICAgICAgYWRkcmVzc1NoaXBUb0xpc3Q6IHRoaXMuc2hpcFRvQWRkcmVzcygpIHx8IFtdLFxyXG4gICAgICBhZGRyZXNzQmlsbFRvTGlzdDogdGhpcy5iaWxsVG9BZGRyZXNzKCkgfHwgW10sXHJcbiAgICAgIHFyeUdyb3VwTGlzdDogdGhpcy5xcnlHcm91cExpc3QoKSxcclxuICAgICAgYWRkcmVzc0NoYW5nZTogdGhpcy5hZGRyZXNzQ2hhbmdlZCgpLFxyXG4gICAgICBjb250YWN0Q2hhbmdlOiB0aGlzLmNvbnRhY3RQZXJzb25DaGFuZ2VkKCksXHJcbiAgICAgIGNhcmRDb2RlOiB2YWx1ZXMuY2FyZENvZGUsXHJcbiAgICAgIGNhcmROYW1lOiB2YWx1ZXMuY2FyZE5hbWUsXHJcbiAgICAgIGNhcmRUeXBlOiB0aGlzLmNvbnZlcnRUb1RyYW5zbGF0ZUJwVHlwZSh2YWx1ZXMuY2FyZFR5cGUpLFxyXG4gICAgICBvbGRDYXJkQ29kZTogdGhpcy5vbGRDYXJkQ29kZSB8fCBudWxsLFxyXG4gICAgICBpbmFjdGl2ZVJlYXNvbjogdmFsdWVzLnN0YXR1cyxcclxuICAgICAgaW5hY3RpdmVDb21tZW50OiB2YWx1ZXMuc3RhdHVzID09PSAnQWN0aXZlJyA/ICcnIDogdmFsdWVzLmluYWN0aXZlQ29tbWVudCxcclxuICAgICAgdmF0U3RhdHVzOiB2YWx1ZXMudmF0U3RhdHVzLFxyXG4gICAgICB0YXhDb2RlOiB2YWx1ZXMudGF4Q29kZSxcclxuICAgIH07XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIHNldE5ld0JwSWQoYnBUeXBlOiBTYXBCcFR5cGVFbnVtKSB7XHJcbiAgICB0aGlzLnNhcEJwU2VydmljZS5nZXROZXh0QnBJZChicFR5cGUpLnN1YnNjcmliZShuZXdCcElkID0+IHtcclxuICAgICAgdGhpcy5mb3JtLmNvbnRyb2xzLmNhcmRDb2RlLnNldFZhbHVlKG5ld0JwSWQpO1xyXG4gICAgICB0aGlzLmNoYW5nZURldGVjdG9yLm1hcmtGb3JDaGVjaygpO1xyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIHNldERlZmF1bHRQYXltZW50VGVybSh2YWw6IFNhcEJwVHlwZUVudW0pIHtcclxuICAgIGlmICh0aGlzLnBheW1lbnRUZXJtc0xpc3QoKT8ubGVuZ3RoID4gMCkge1xyXG4gICAgICBpZiAodmFsID09PSBTYXBCcFR5cGVFbnVtLlN1cHBsaWVyKSB7XHJcbiAgICAgICAgY29uc3QgcGF5bWVudFRlcm1Gb3VuZCA9IHRoaXMucGF5bWVudFRlcm1zTGlzdCgpLmZpbmQoXHJcbiAgICAgICAgICBwYXltZW50VGVybSA9PiBwYXltZW50VGVybS5pc0RlZmF1bHRGb3JTdXBwbGllclxyXG4gICAgICAgICk7XHJcbiAgICAgICAgaWYgKHBheW1lbnRUZXJtRm91bmQpIHtcclxuICAgICAgICAgIHRoaXMuZm9ybS5jb250cm9scy5wYXltZW50Q29kZS5zZXRWYWx1ZShwYXltZW50VGVybUZvdW5kLmlkKTtcclxuICAgICAgICB9XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgY29uc3QgcGF5bWVudFRlcm1Gb3VuZCA9IHRoaXMucGF5bWVudFRlcm1zTGlzdCgpLmZpbmQoXHJcbiAgICAgICAgICBwYXltZW50VGVybSA9PiBwYXltZW50VGVybS5pc0RlZmF1bHRGb3JDdXN0b21lclxyXG4gICAgICAgICk7XHJcbiAgICAgICAgaWYgKHBheW1lbnRUZXJtRm91bmQpIHtcclxuICAgICAgICAgIHRoaXMuZm9ybS5jb250cm9scy5wYXltZW50Q29kZS5zZXRWYWx1ZShwYXltZW50VGVybUZvdW5kLmlkKTtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICB0aGlzLmNoYW5nZURldGVjdG9yLm1hcmtGb3JDaGVjaygpO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBzZXRCcFR5cGVBbGxvd2VkKCkge1xyXG4gICAgY29uc3QgYnBUeXBlQWxsb3dlZFZhbHVlcyA9IFtdO1xyXG4gICAgY29uc3QgY2FyZFR5cGUgPSB0aGlzLmZvcm0uY29udHJvbHMuY2FyZFR5cGUudmFsdWU7XHJcblxyXG4gICAgaWYgKHRoaXMuZWRpdE1vZGUpIHtcclxuICAgICAgaWYgKHRoaXMudXNlclNldHRpbmdzKCkub3JhY2xlQnBFZGl0KSB7XHJcbiAgICAgICAgYnBUeXBlQWxsb3dlZFZhbHVlcy5wdXNoKGNhcmRUeXBlKTtcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICBpZiAoY2FyZFR5cGUgPT09IFNhcEJwVHlwZUVudW0uTGVhZCkge1xyXG4gICAgICAgICAgYnBUeXBlQWxsb3dlZFZhbHVlcy5wdXNoKFNhcEJwVHlwZUVudW0uTGVhZCk7XHJcbiAgICAgICAgICBicFR5cGVBbGxvd2VkVmFsdWVzLnB1c2goU2FwQnBUeXBlRW51bS5DdXN0b21lcik7XHJcbiAgICAgICAgfSBlbHNlIGlmIChjYXJkVHlwZSA9PT0gU2FwQnBUeXBlRW51bS5TdXBwbGllcikge1xyXG4gICAgICAgICAgYnBUeXBlQWxsb3dlZFZhbHVlcy5wdXNoKFNhcEJwVHlwZUVudW0uU3VwcGxpZXIpO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICBicFR5cGVBbGxvd2VkVmFsdWVzLnB1c2goU2FwQnBUeXBlRW51bS5DdXN0b21lcik7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aGlzLnVzZXJTZXR0aW5ncygpLmJwRWRpdFR5cGVBbGxvd2VkLmZvckVhY2goYnBUeXBlID0+IHtcclxuICAgICAgICBicFR5cGVBbGxvd2VkVmFsdWVzLnB1c2goYnBUeXBlKTtcclxuICAgICAgfSk7XHJcbiAgICB9XHJcblxyXG4gICAgdGhpcy5icFR5cGVBbGxvd2VkLnNldChicFR5cGVBbGxvd2VkVmFsdWVzKTtcclxuICAgIHRoaXMuY2hhbmdlRGV0ZWN0b3IubWFya0ZvckNoZWNrKCk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGNvbnZlcnRCcFR5cGUodHlwZTogU2FwQnBUeXBlVHJhbnNsYXRlRW51bSk6IFNhcEJwVHlwZUVudW0ge1xyXG4gICAgc3dpdGNoICh0eXBlKSB7XHJcbiAgICAgIGNhc2UgU2FwQnBUeXBlVHJhbnNsYXRlRW51bS5DdXN0b21lcjpcclxuICAgICAgICByZXR1cm4gU2FwQnBUeXBlRW51bS5DdXN0b21lcjtcclxuICAgICAgY2FzZSBTYXBCcFR5cGVUcmFuc2xhdGVFbnVtLkxlYWQ6XHJcbiAgICAgICAgcmV0dXJuIFNhcEJwVHlwZUVudW0uTGVhZDtcclxuICAgICAgY2FzZSBTYXBCcFR5cGVUcmFuc2xhdGVFbnVtLlN1cHBsaWVyOlxyXG4gICAgICAgIHJldHVybiBTYXBCcFR5cGVFbnVtLlN1cHBsaWVyO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBjb252ZXJ0VG9UcmFuc2xhdGVCcFR5cGUoXHJcbiAgICB0eXBlOiBTYXBCcFR5cGVFbnVtXHJcbiAgKTogU2FwQnBUeXBlVHJhbnNsYXRlRW51bSB7XHJcbiAgICBzd2l0Y2ggKHR5cGUpIHtcclxuICAgICAgY2FzZSBTYXBCcFR5cGVFbnVtLkN1c3RvbWVyOlxyXG4gICAgICAgIHJldHVybiBTYXBCcFR5cGVUcmFuc2xhdGVFbnVtLkN1c3RvbWVyO1xyXG4gICAgICBjYXNlIFNhcEJwVHlwZUVudW0uTGVhZDpcclxuICAgICAgICByZXR1cm4gU2FwQnBUeXBlVHJhbnNsYXRlRW51bS5MZWFkO1xyXG4gICAgICBjYXNlIFNhcEJwVHlwZUVudW0uU3VwcGxpZXI6XHJcbiAgICAgICAgcmV0dXJuIFNhcEJwVHlwZVRyYW5zbGF0ZUVudW0uU3VwcGxpZXI7XHJcbiAgICB9XHJcbiAgfVxyXG59XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIFNhcEJwVXNlclNldHRpbmdzIHtcclxuICBwaG9uZU1hc2s6IGJvb2xlYW47XHJcbiAgYnBFZGl0U2FsZXNQZXJzb25PbkFkZHJlc3M6IGJvb2xlYW47XHJcbiAgYnBUYXhUeXBlOiBCcFRheFR5cGVFbnVtO1xyXG4gIG9yYWNsZUJwRWRpdDogYm9vbGVhbjtcclxuICBjdXJyZW5jeTogc3RyaW5nO1xyXG4gIGJwRWRpdEFsbG93Q29udmVydExlYWQ6IGJvb2xlYW47XHJcbiAgc2FwQnBFZGl0QXV0aDogU2FwQnBFZGl0QXV0aEZsYWdzRW51bTtcclxuICBicEVkaXRUeXBlQWxsb3dlZDogU2FwQnBUeXBlRW51bVtdO1xyXG4gIGNvdW50cnk6IHN0cmluZztcclxufVxyXG4iXX0=
|