@pmcretail/mapper-library 0.0.10 → 0.0.11
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/bundles/pmcretail-mapper-library.umd.js +16 -68
- package/bundles/pmcretail-mapper-library.umd.js.map +1 -1
- package/bundles/pmcretail-mapper-library.umd.min.js +1 -1
- package/bundles/pmcretail-mapper-library.umd.min.js.map +1 -1
- package/esm2015/lib/RJ-mapper.class.js +17 -56
- package/esm5/lib/RJ-mapper.class.js +17 -69
- package/fesm2015/pmcretail-mapper-library.js +16 -55
- package/fesm2015/pmcretail-mapper-library.js.map +1 -1
- package/fesm5/pmcretail-mapper-library.js +16 -68
- package/fesm5/pmcretail-mapper-library.js.map +1 -1
- package/lib/RJ-mapper.class.d.ts +1 -4
- package/package.json +1 -1
- package/pmcretail-mapper-library.metadata.json +1 -1
|
@@ -249,14 +249,7 @@ var RJMapperBuilderClass = /** @class */ (function () {
|
|
|
249
249
|
obj['ReasonCodeID'] = element.reasonCode;
|
|
250
250
|
obj['DiscountType'] = element.discountType.toUpperCase() == DISCOUNTTYPE.PERCENT.toUpperCase() ? 0 : 1; // todo - compare values
|
|
251
251
|
obj['RoundingRule'] = 2;
|
|
252
|
-
obj['ModifiedLineNumber '] =
|
|
253
|
-
element.itemLineIds.forEach((/**
|
|
254
|
-
* @param {?} element
|
|
255
|
-
* @return {?}
|
|
256
|
-
*/
|
|
257
|
-
function (element) {
|
|
258
|
-
obj['ModifiedLineNumber'].push(element);
|
|
259
|
-
}));
|
|
252
|
+
obj['ModifiedLineNumber '] = element.itemLineIds;
|
|
260
253
|
obj['LineNumber'] = (/** @type {?} */ (_this)).generateLineNumber();
|
|
261
254
|
// obj['DiscountedValue'] = obj['discountAmount'] // todo - confirm value before discount;
|
|
262
255
|
// obj['DiscountPercentage'] = obj['discountAmount'] / 100 ; // todo - optional
|
|
@@ -286,7 +279,7 @@ var RJMapperBuilderClass = /** @class */ (function () {
|
|
|
286
279
|
obj.DeviceID = this.deviceId;
|
|
287
280
|
obj.UserID = this.transactionDocument.userName;
|
|
288
281
|
obj.DateTimeCreated = this.updatedAt;
|
|
289
|
-
obj.AuthorisingUserID = this.
|
|
282
|
+
obj.AuthorisingUserID = this.transactionDocument.userName;
|
|
290
283
|
obj.ReasonCodeID = data.percentageDiscountReasonCode ? data.percentageDiscountReasonCode : data.priceOverrideReasonCode;
|
|
291
284
|
obj.ModifiedLineNumber = lineNo;
|
|
292
285
|
obj.ModifiedIndex = 1;
|
|
@@ -408,12 +401,6 @@ var RJMapperBuilderClass = /** @class */ (function () {
|
|
|
408
401
|
* @return {?}
|
|
409
402
|
*/
|
|
410
403
|
function (element) {
|
|
411
|
-
/** @type {?} */
|
|
412
|
-
var value = (/** @type {?} */ (_this)).paymentTypes.filter((/**
|
|
413
|
-
* @param {?} x
|
|
414
|
-
* @return {?}
|
|
415
|
-
*/
|
|
416
|
-
function (x) { return x.name.toUpperCase() === element.paymentType.toUpperCase(); }));
|
|
417
404
|
if (element.paymentType.toUpperCase() === 'GIFT CARD') {
|
|
418
405
|
/** @type {?} */
|
|
419
406
|
var obj = {
|
|
@@ -421,12 +408,12 @@ var RJMapperBuilderClass = /** @class */ (function () {
|
|
|
421
408
|
LineNumber: (/** @type {?} */ (_this)).generateLineNumber(),
|
|
422
409
|
NetValue: (/** @type {?} */ (_this)).convertToString(-1 * (/** @type {?} */ (_this)).removeDecimal((Math.round(element.amount)))),
|
|
423
410
|
EffectiveNetValue: (/** @type {?} */ (_this)).convertToString(-1 * (/** @type {?} */ (_this)).removeDecimal((Math.round(element.amount)))),
|
|
424
|
-
Description: (/** @type {?} */ (_this)).getDescription(
|
|
411
|
+
Description: (/** @type {?} */ (_this)).getDescription(element),
|
|
425
412
|
DeviceID: (/** @type {?} */ (_this)).deviceId,
|
|
426
413
|
UserID: (/** @type {?} */ (_this)).transactionDocument.userName,
|
|
427
414
|
DateTimeCreated: (/** @type {?} */ (_this)).updatedAt,
|
|
428
|
-
TenderType:
|
|
429
|
-
TenderSubType:
|
|
415
|
+
TenderType: element.externalTenderType ? element.externalTenderType : '',
|
|
416
|
+
TenderSubType: element.externalSubTenderType ? element.externalSubTenderType : '',
|
|
430
417
|
TenderAmount: (/** @type {?} */ (_this)).convertToString(-1 * (/** @type {?} */ (_this)).removeDecimal((Math.round(element.amount)))),
|
|
431
418
|
CurrencyID: (/** @type {?} */ (_this)).transactionDocument.baseCurrency,
|
|
432
419
|
CurrencyDescription: (/** @type {?} */ (_this)).transactionDocument.baseCurrency,
|
|
@@ -446,12 +433,12 @@ var RJMapperBuilderClass = /** @class */ (function () {
|
|
|
446
433
|
//todo
|
|
447
434
|
NetValue: JSON.stringify(-1 * (Math.round(element.amount))),
|
|
448
435
|
EffectiveNetValue: JSON.stringify(-1 * (Math.round(element.amount))),
|
|
449
|
-
Description: (/** @type {?} */ (_this)).getDescription(
|
|
436
|
+
Description: (/** @type {?} */ (_this)).getDescription(element),
|
|
450
437
|
DeviceID: (/** @type {?} */ (_this)).deviceId,
|
|
451
438
|
UserID: (/** @type {?} */ (_this)).transactionDocument.userName,
|
|
452
439
|
DateTimeCreated: (/** @type {?} */ (_this)).updatedAt,
|
|
453
|
-
TenderType:
|
|
454
|
-
TenderSubType:
|
|
440
|
+
TenderType: element.externalTenderType ? element.externalTenderType : '',
|
|
441
|
+
TenderSubType: element.externalSubTenderType ? element.externalSubTenderType : '',
|
|
455
442
|
TenderAmount: JSON.stringify(-1 * (Math.round(element.amount))),
|
|
456
443
|
CurrencyID: (/** @type {?} */ (_this)).transactionDocument.baseCurrency,
|
|
457
444
|
CurrencyDescription: (/** @type {?} */ (_this)).transactionDocument.baseCurrency,
|
|
@@ -518,21 +505,19 @@ var RJMapperBuilderClass = /** @class */ (function () {
|
|
|
518
505
|
return this.rjObject;
|
|
519
506
|
};
|
|
520
507
|
/**
|
|
521
|
-
* @param {?} paymentType
|
|
522
508
|
* @param {?} element
|
|
523
509
|
* @return {?}
|
|
524
510
|
*/
|
|
525
511
|
RJMapperBuilderClass.prototype.getDescription = /**
|
|
526
|
-
* @param {?} paymentType
|
|
527
512
|
* @param {?} element
|
|
528
513
|
* @return {?}
|
|
529
514
|
*/
|
|
530
|
-
function (
|
|
531
|
-
if (paymentType.toUpperCase() === 'CARD') {
|
|
515
|
+
function (element) {
|
|
516
|
+
if (element.paymentType.toUpperCase() === 'CARD') {
|
|
532
517
|
return element.cardType;
|
|
533
518
|
}
|
|
534
519
|
else {
|
|
535
|
-
return paymentType;
|
|
520
|
+
return element.paymentType;
|
|
536
521
|
}
|
|
537
522
|
};
|
|
538
523
|
/**
|
|
@@ -551,22 +536,6 @@ var RJMapperBuilderClass = /** @class */ (function () {
|
|
|
551
536
|
(/** @type {?} */ (this)).deviceId = id;
|
|
552
537
|
return (/** @type {?} */ (this));
|
|
553
538
|
};
|
|
554
|
-
/**
|
|
555
|
-
* @template THIS
|
|
556
|
-
* @this {THIS}
|
|
557
|
-
* @param {?} id
|
|
558
|
-
* @return {THIS}
|
|
559
|
-
*/
|
|
560
|
-
RJMapperBuilderClass.prototype.setUserInfo = /**
|
|
561
|
-
* @template THIS
|
|
562
|
-
* @this {THIS}
|
|
563
|
-
* @param {?} id
|
|
564
|
-
* @return {THIS}
|
|
565
|
-
*/
|
|
566
|
-
function (id) {
|
|
567
|
-
(/** @type {?} */ (this)).userId = id;
|
|
568
|
-
return (/** @type {?} */ (this));
|
|
569
|
-
};
|
|
570
539
|
/**
|
|
571
540
|
* @param {?} value
|
|
572
541
|
* @return {?}
|
|
@@ -850,22 +819,6 @@ var RJMapperBuilderClass = /** @class */ (function () {
|
|
|
850
819
|
(/** @type {?} */ (this)).branchId = value;
|
|
851
820
|
return (/** @type {?} */ (this));
|
|
852
821
|
};
|
|
853
|
-
/**
|
|
854
|
-
* @template THIS
|
|
855
|
-
* @this {THIS}
|
|
856
|
-
* @param {?} value
|
|
857
|
-
* @return {THIS}
|
|
858
|
-
*/
|
|
859
|
-
RJMapperBuilderClass.prototype.setPaymentDetails = /**
|
|
860
|
-
* @template THIS
|
|
861
|
-
* @this {THIS}
|
|
862
|
-
* @param {?} value
|
|
863
|
-
* @return {THIS}
|
|
864
|
-
*/
|
|
865
|
-
function (value) {
|
|
866
|
-
(/** @type {?} */ (this)).paymentTypes = value;
|
|
867
|
-
return (/** @type {?} */ (this));
|
|
868
|
-
};
|
|
869
822
|
/**
|
|
870
823
|
* @param {?} date
|
|
871
824
|
* @return {?}
|
|
@@ -944,7 +897,7 @@ var RJMapperBuilderClass = /** @class */ (function () {
|
|
|
944
897
|
obj['EffectiveNetValue'] = this.removeDecimal(element['refundedTotal']);
|
|
945
898
|
obj['Description'] = element['description'];
|
|
946
899
|
obj['DeviceID'] = this.transactionDocument['terminalId'];
|
|
947
|
-
obj['UserID'] = this.
|
|
900
|
+
obj['UserID'] = this.transactionDocument.userName;
|
|
948
901
|
obj['DateTimeCreated'] = this.createdAt;
|
|
949
902
|
obj['ExtendedValue'] = this.removeDecimal(element['totalLinePrice'] * -1);
|
|
950
903
|
obj['UnitPrice'] = this.removeDecimal(element['price']);
|
|
@@ -978,7 +931,7 @@ var RJMapperBuilderClass = /** @class */ (function () {
|
|
|
978
931
|
obj['Discount'].ModifierDateTime = obj.DateTimeCreated;
|
|
979
932
|
obj['Discount'].ModifierReasonID = lineDiscount.percentageDiscountReasonCode;
|
|
980
933
|
obj['Discount'].ModifierDescription = lineDiscount.percentageDiscountReasonName;
|
|
981
|
-
obj['Discount'].AuthorisingUserID = this.
|
|
934
|
+
obj['Discount'].AuthorisingUserID = this.transactionDocument.userName;
|
|
982
935
|
obj['Discount'].DiscountType = lineDiscount.discountType;
|
|
983
936
|
obj['Discount'].XMLSchemaVersion = 1;
|
|
984
937
|
obj['Discount'].OriginalPrice = this.removeDecimal(lineDiscount.discountAmount + (lineDiscount.discountedLinePrice || 0));
|
|
@@ -993,7 +946,7 @@ var RJMapperBuilderClass = /** @class */ (function () {
|
|
|
993
946
|
obj['PriceOverride'].ModifierDateTime = obj.DateTimeCreated;
|
|
994
947
|
obj['PriceOverride'].ModifierReasonID = lineDiscount.priceOverrideReasonCode;
|
|
995
948
|
obj['PriceOverride'].ModifierReasonDescription = lineDiscount.priceOverrideReasonName;
|
|
996
|
-
obj['PriceOverride'].AuthorisingUserID = this.
|
|
949
|
+
obj['PriceOverride'].AuthorisingUserID = this.transactionDocument.userName;
|
|
997
950
|
obj['PriceOverride'].XMLSchemaVersion = 1;
|
|
998
951
|
obj['PriceOverride'].NewPrice = this.removeDecimal(lineDiscount.unitPrice);
|
|
999
952
|
obj['PriceOverride'].OriginalPrice = this.removeDecimal(lineDiscount.discountedLinePrice || 0 + lineDiscount.discountAmount);
|
|
@@ -1065,7 +1018,7 @@ var RJMapperBuilderClass = /** @class */ (function () {
|
|
|
1065
1018
|
obj['Discount'].ModifierDateTime = obj.DateTimeCreated;
|
|
1066
1019
|
obj['Discount'].ModifierReasonID = lineDiscount.percentageDiscountReasonCode;
|
|
1067
1020
|
obj['Discount'].ModifierDescription = lineDiscount.percentageDiscountReasonName;
|
|
1068
|
-
obj['Discount'].AuthorisingUserID = this.
|
|
1021
|
+
obj['Discount'].AuthorisingUserID = this.transactionDocument.userName;
|
|
1069
1022
|
obj['Discount'].DiscountType = lineDiscount.discountType;
|
|
1070
1023
|
obj['Discount'].XMLSchemaVersion = 1;
|
|
1071
1024
|
obj['Discount'].OriginalPrice = this.removeDecimal(lineDiscount.discountAmount + (lineDiscount.discountedLinePrice || 0));
|
|
@@ -1080,7 +1033,7 @@ var RJMapperBuilderClass = /** @class */ (function () {
|
|
|
1080
1033
|
obj['PriceOverride'].ModifierDateTime = obj.DateTimeCreated;
|
|
1081
1034
|
obj['PriceOverride'].ModifierReasonID = lineDiscount.priceOverrideReasonCode;
|
|
1082
1035
|
obj['PriceOverride'].ModifierReasonDescription = lineDiscount.priceOverrideReasonName;
|
|
1083
|
-
obj['PriceOverride'].AuthorisingUserID = this.
|
|
1036
|
+
obj['PriceOverride'].AuthorisingUserID = this.transactionDocument.userName;
|
|
1084
1037
|
obj['PriceOverride'].XMLSchemaVersion = 1;
|
|
1085
1038
|
obj['PriceOverride'].NewPrice = this.removeDecimal(lineDiscount.unitPrice);
|
|
1086
1039
|
obj['PriceOverride'].OriginalPrice = this.removeDecimal(lineDiscount.discountedLinePrice || 0 + lineDiscount.discountAmount);
|
|
@@ -1211,11 +1164,6 @@ if (false) {
|
|
|
1211
1164
|
* @private
|
|
1212
1165
|
*/
|
|
1213
1166
|
RJMapperBuilderClass.prototype.transactionDocument;
|
|
1214
|
-
/**
|
|
1215
|
-
* @type {?}
|
|
1216
|
-
* @private
|
|
1217
|
-
*/
|
|
1218
|
-
RJMapperBuilderClass.prototype.userId;
|
|
1219
1167
|
/**
|
|
1220
1168
|
* @type {?}
|
|
1221
1169
|
* @private
|
|
@@ -1337,4 +1285,4 @@ if (false) {
|
|
|
1337
1285
|
*/
|
|
1338
1286
|
RJMapperBuilderClass.prototype.paymentTypes;
|
|
1339
1287
|
}
|
|
1340
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiUkotbWFwcGVyLmNsYXNzLmpzIiwic291cmNlUm9vdCI6Im5nOi8vQHBtY3JldGFpbC9tYXBwZXItbGlicmFyeS8iLCJzb3VyY2VzIjpbImxpYi9SSi1tYXBwZXIuY2xhc3MudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBQUEsT0FBTyxFQUFFLFlBQVksRUFBK0MsZ0JBQWdCLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQTtBQUNwSCxPQUFPLEVBQUUsMEJBQTBCLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQztBQUMxRTtJQThCSSw4QkFBWSxjQUFvQztRQVR4QyxjQUFTLEdBQUcsQ0FBQyxDQUFDO1FBQ2Qsa0JBQWEsR0FBRyxDQUFDLENBQUM7UUFJbEIsYUFBUSxHQUFRLEVBQUUsQ0FBQTtRQUt0QixJQUFJLGNBQWMsRUFBRTtZQUNoQixJQUFJLENBQUMsbUJBQW1CLEdBQUcsY0FBYyxDQUFDO1NBQzdDO2FBQU07WUFDSCxJQUFJLENBQUMsbUJBQW1CLEdBQUc7Z0JBQ3ZCLGFBQWEsRUFBRSxFQUFFO2dCQUNqQixvQkFBb0IsRUFBRSxFQUFFO2dCQUN4QixjQUFjLEVBQUUsRUFBRTtnQkFDbEIsUUFBUSxFQUFFLEVBQUU7Z0JBQ1osT0FBTyxFQUFFLEVBQUU7Z0JBQ1gsT0FBTyxFQUFFLEVBQUU7Z0JBQ1gsV0FBVyxFQUFFLEVBQUU7Z0JBQ2Ysa0JBQWtCLEVBQUUsRUFBRTtnQkFDdEIsUUFBUSxFQUFFLEVBQUU7Z0JBQ1osVUFBVSxFQUFFLEVBQUU7Z0JBQ2QsTUFBTSxFQUFFLEVBQUU7Z0JBQ1YsZ0JBQWdCLEVBQUUsU0FBUztnQkFDM0IsTUFBTSxFQUFFLEtBQUs7Z0JBQ2IsTUFBTSxFQUFFLG1CQUFBLEVBQUUsRUFBTztnQkFDakIsYUFBYSxFQUFFLG1CQUFBLEVBQUUsRUFBTztnQkFDeEIsWUFBWSxFQUFFLEVBQUU7Z0JBQ2hCLElBQUksRUFBRSxFQUFFO2dCQUNSLGVBQWUsRUFBRSxFQUFFO2dCQUNuQixTQUFTLEVBQUUsRUFBRTtnQkFDYixTQUFT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QkFBQztBQUFELENBQUMsQUFwc0JELElBb3NCQzs7Ozs7OztJQWxzQkcsbURBQWlEOzs7OztJQUNqRCxzQ0FBb0I7Ozs7O0lBQ3BCLHdDQUFzQjs7Ozs7SUFDdEIsaURBQStCOzs7OztJQUMvQiwrQ0FBNkI7Ozs7O0lBQzdCLHFEQUFtQzs7Ozs7SUFDbkMsMENBQXdCOzs7OztJQUN4QixnREFBOEI7Ozs7O0lBQzlCLDRDQUEwQjs7Ozs7SUFDMUIsNENBQTBCOzs7OztJQUMxQiw2Q0FBMkI7Ozs7O0lBQzNCLHlDQUF1Qjs7Ozs7SUFDdkIseUNBQXVCOzs7OztJQUN2Qiw4Q0FBNEI7Ozs7O0lBQzVCLDJDQUF5Qjs7Ozs7SUFDekIsK0NBQTZCOzs7OztJQUM3QixnREFBOEI7Ozs7O0lBQzlCLCtDQUE2Qjs7Ozs7SUFDN0IsZ0RBQThCOzs7OztJQUM5Qix5Q0FBc0I7Ozs7O0lBQ3RCLDZDQUEwQjs7Ozs7SUFDMUIsd0NBQXNCOzs7OztJQUN0Qix5Q0FBdUI7Ozs7O0lBQ3ZCLHlDQUF1Qjs7Ozs7SUFDdkIsd0NBQTBCOzs7OztJQUUxQiw0Q0FBMkIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBESVNDT1VOVFRZUEUsIExpbmVEaXNjb3VudCwgVFByb2R1Y3QsIFRyYW5zYWN0aW9uRG9jdW1lbnQsIFRSQU5TQUNUSU9OX1RZUEUgfSBmcm9tIFwiLi9tYXBwZXItbGlicmFyeS5tb2RlbFwiXHJcbmltcG9ydCB7IFRyYW5zYWN0aW9uRG9jdW1lbnRCdWlsZGVyIH0gZnJvbSBcIi4vVHJhbnNhY3Rpb25Eb2N1bWVudEJ1aWxkZXJcIjtcclxuZXhwb3J0IGNsYXNzIFJKTWFwcGVyQnVpbGRlckNsYXNzIHtcclxuXHJcbiAgICBwcml2YXRlIHRyYW5zYWN0aW9uRG9jdW1lbnQ6IFRyYW5zYWN0aW9uRG9jdW1lbnQ7XHJcbiAgICBwcml2YXRlIHVzZXJJZDogYW55O1xyXG4gICAgcHJpdmF0ZSBkZXZpY2VJZDogYW55O1xyXG4gICAgcHJpdmF0ZSB0cmFuc2FjdGlvbk51bWJlcjogYW55O1xyXG4gICAgcHJpdmF0ZSBtYW5pZmVzdFZlcnNpb246IGFueTtcclxuICAgIHByaXZhdGUgZGF0YWJhc2VTY2hlbWFWZXJzaW9uOiBhbnk7XHJcbiAgICBwcml2YXRlIGJhc2tldFR5cGU6IGFueTtcclxuICAgIHByaXZhdGUgeG1sU2NoZW1hVmVyc2lvbjogYW55O1xyXG4gICAgcHJpdmF0ZSBtYWpvclZlcnNpb246IGFueTtcclxuICAgIHByaXZhdGUgbWlub3JWZXJzaW9uOiBhbnk7XHJcbiAgICBwcml2YXRlIGV4dGVybmFsU3RhdGU6IGFueTtcclxuICAgIHByaXZhdGUgY2FzaGllcklkOiBhbnk7XHJcbiAgICBwcml2YXRlIGNvbXBhbnlJZDogYW55O1xyXG4gICAgcHJpdmF0ZSB0ZXJtaW5hbE51bWJlcjogYW55O1xyXG4gICAgcHJpdmF0ZSB0YXhNZXRob2RJZDogYW55O1xyXG4gICAgcHJpdmF0ZSB0cmFkaW5nUmVnaW9uSWQ6IGFueTtcclxuICAgIHByaXZhdGUgYmFza2V0Q3VycmVuY3lJZDogYW55O1xyXG4gICAgcHJpdmF0ZSBiYXNrZXRDb3VudHJ5SWQ6IGFueTtcclxuICAgIHByaXZhdGUgYmFza2V0TGFuZ3VhZ2VJZDogYW55O1xyXG4gICAgcHJpdmF0ZSBpdGVtQ291bnQgPSAwO1xyXG4gICAgcHJpdmF0ZSBsYXJnZXN0TnVtYmVyID0gMDtcclxuICAgIHByaXZhdGUgYnJhbmNoSWQ6IGFueTtcclxuICAgIHByaXZhdGUgY3JlYXRlZEF0OiBhbnk7XHJcbiAgICBwcml2YXRlIHVwZGF0ZWRBdCA6YW55O1xyXG4gICAgcHJpdmF0ZSByak9iamVjdDogYW55ID0ge31cclxuXHJcbiAgICBwcml2YXRlIHBheW1lbnRUeXBlcyA6YW55IDtcclxuXHJcbiAgICBjb25zdHJ1Y3Rvcih0cmFuc2FjdGlvbkRvYz86IFRyYW5zYWN0aW9uRG9jdW1lbnQpIHtcclxuICAgICAgICBpZiAodHJhbnNhY3Rpb25Eb2MpIHtcclxuICAgICAgICAgICAgdGhpcy50cmFuc2FjdGlvbkRvY3VtZW50ID0gdHJhbnNhY3Rpb25Eb2M7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgdGhpcy50cmFuc2FjdGlvbkRvY3VtZW50ID0ge1xyXG4gICAgICAgICAgICAgICAgdHJhbnNhY3Rpb25JZDogXCJcIixcclxuICAgICAgICAgICAgICAgIG9mZmxpbmVUcmFuc2FjdGlvbklkOiBcIlwiLFxyXG4gICAgICAgICAgICAgICAgdHJhbnNhY3Rpb25SZWY6IFwiXCIsXHJcbiAgICAgICAgICAgICAgICBkYXRlVGltZTogXCJcIixcclxuICAgICAgICAgICAgICAgIG9yZ0NvZGU6IFwiXCIsXHJcbiAgICAgICAgICAgICAgICBzdG9yZUlkOiBcIlwiLFxyXG4gICAgICAgICAgICAgICAgc3RvcmVOb2RlSWQ6IFwiXCIsXHJcbiAgICAgICAgICAgICAgICBzdG9yZU5vZGVTdHJ1Y3R1cmU6IFwiXCIsXHJcbiAgICAgICAgICAgICAgICBkZXZpY2VJZDogXCJcIixcclxuICAgICAgICAgICAgICAgIHRlcm1pbmFsSWQ6IFwiXCIsXHJcbiAgICAgICAgICAgICAgICB1c2VySWQ6IFwiXCIsXHJcbiAgICAgICAgICAgICAgICBpbml0aWF0aW5nTW9kdWxlOiBcImVCYXNrZXRcIixcclxuICAgICAgICAgICAgICAgIGV4cG9ydDogZmFsc2UsXHJcbiAgICAgICAgICAgICAgICBiYXNrZXQ6IHt9IGFzIGFueSxcclxuICAgICAgICAgICAgICAgIGJhc2tldFN1bW1hcnk6IHt9IGFzIGFueSxcclxuICAgICAgICAgICAgICAgIGJhc2VDdXJyZW5jeTogXCJcIixcclxuICAgICAgICAgICAgICAgIHR5cGU6IFwiXCIsXHJcbiAgICAgICAgICAgICAgICBvcGVyYXRpb25TdGF0dXM6IFwiXCIsXHJcbiAgICAgICAgICAgICAgICBjcmVhdGVkQXQ6IFwiXCIsXHJcbiAgICAgICAgICAgICAgICB1cGRhdGVkQXQ6IFwiXCIsXHJcbiAgICAgICAgICAgICAgICBpZDogXCJcIixcclxuICAgICAgICAgICAgICAgIGN1cnJlbnRUcmFuc2FjdGlvbkRldGFpbHM6IHt9IGFzIGFueSxcclxuICAgICAgICAgICAgICAgIHNhbGVUb3RhbDogMCxcclxuICAgICAgICAgICAgfTtcclxuICAgICAgICB9XHJcbiAgICAgICAgdGhpcy5pbml0aWxpemVJdGVtQ291bnQoKTtcclxuICAgICAgICB0aGlzLnNldExpbmVOdW1iZXJGb3JQcm9kdWN0cygpO1xyXG4gICAgICAgIHRoaXMuY3JlYXRlZEF0ID0gdGhpcy5nZXRkYXRlKHRoaXMudHJhbnNhY3Rpb25Eb2N1bWVudC5jcmVhdGVkQXQpO1xyXG4gICAgICAgIHRoaXMudXBkYXRlZEF0ID0gdGhpcy5nZXRkYXRlKHRoaXMudHJhbnNhY3Rpb25Eb2N1bWVudC51cGRhdGVkQXQpO1xyXG4gICAgfVxyXG5cclxuICAgIGdldFBvc2Jhc2tldEluZm8oKSB7XHJcbiAgICAgICAgdGhpcy5yak9iamVjdFsnS2V5d29yZCddID0gdGhpcy5nZW5lcmF0ZUtleXdvcmQoKTtcclxuICAgICAgICB0aGlzLnJqT2JqZWN0WydJRCddID0gdGhpcy5nZW5lcmF0ZUlkKHRoaXMuY3JlYXRlZEF0KTtcclxuICAgICAgICB0aGlzLnJqT2JqZWN0WydYTUxTY2hlbWFWZXJzaW9uJ10gPSAnMic7XHJcbiAgICAgICAgdGhpcy5yak9iamVjdFsnTGFzdFVwZGF0ZWQnXSA9IHRoaXMudXBkYXRlZEF0O1xyXG4gICAgICAgIHRoaXMucmpPYmplY3RbJ01ham9yVmVyc2lvbiddID0gdGhpcy5tYWpvclZlcnNpb247XHJcbiAgICAgICAgdGhpcy5yak9iamVjdFsnTWlub3JWZXJzaW9uJ10gPSB0aGlzLm1pbm9yVmVyc2lvbjtcclxuICAgICAgICB0aGlzLnJqT2JqZWN0WydNYW5pZmVzdFZlcnNpb24nXSA9IHRoaXMubWFuaWZlc3RWZXJzaW9uO1xyXG4gICAgICAgIHRoaXMucmpPYmplY3RbJ0RhdGFiYXNlU2NoZW1hVmVyc2lvbiddID0gdGhpcy5kYXRhYmFzZVNjaGVtYVZlcnNpb247XHJcbiAgICAgICAgdGhpcy5yak9iamVjdFsnQmFza2V0VHlwZSddID0gdGhpcy5iYXNrZXRUeXBlO1xyXG4gICAgICAgIHRoaXMucmpPYmplY3RbJ1N0YXRlJ10gPSB0aGlzLmdldFN0YXRlKCk7XHJcbiAgICAgICAgdGhpcy5yak9iamVjdFsnRXh0ZXJuYWxTdGF0ZSddID0gdGhpcy5leHRlcm5hbFN0YXRlO1xyXG5cclxuICAgICAgICByZXR1cm4gdGhpcztcclxuICAgIH1cclxuXHJcblxyXG4gICAgZ2V0aGVhZGVySW5mbygpIHtcclxuICAgICAgICB0aGlzLnJqT2JqZWN0WydIZWFkZXInXSA9IHt9O1xyXG4gICAgICAgIHRoaXMucmpPYmplY3RbJ0hlYWRlciddLlRpbWVab25lT2Zmc2V0ID0gdGhpcy5jb252ZXJ0VG9TdHJpbmcodGhpcy5nZW5lcmF0ZVRpbWV6b25lb2Zmc2V0KHRoaXMudHJhbnNhY3Rpb25Eb2N1bWVudC5jcmVhdGVkQXQpKTtcclxuICAgICAgICB0aGlzLnJqT2JqZWN0WydIZWFkZXInXS5EYXRlVGltZUNyZWF0ZWQgPSB0aGlzLmNyZWF0ZWRBdDtcclxuICAgICAgICB0aGlzLnJqT2JqZWN0WydIZWFkZXInXS5PcmlnaW5hdGVkQnkgPSB7fTtcclxuICAgICAgICB0aGlzLnJqT2JqZWN0WydIZWFkZXInXS5PcmlnaW5hdGVkQnkuRGV2aWNlSUQgPSB0aGlzLmRldmljZUlkO1xyXG4gICAgICAgIHRoaXMucmpPYmplY3RbJ0hlYWRlciddLk9yaWdpbmF0ZWRCeS5DYXNoaWVySUQgPSB0aGlzLmNhc2hpZXJJZDtcclxuICAgICAgICB0aGlzLnJqT2JqZWN0WydIZWFkZXInXS5PcmlnaW5hdGVkQnkuQ29tcGFueUlEID0gdGhpcy5jb21wYW55SWQ7XHJcbiAgICAgICAgdGhpcy5yak9iamVjdFsnSGVhZGVyJ10uT3JpZ2luYXRlZEJ5LlN0b3JlSUQgPSB0aGlzLnRyYW5zYWN0aW9uRG9jdW1lbnQuc3RvcmVJZDtcclxuICAgICAgICB0aGlzLnJqT2JqZWN0WydIZWFkZXInXS5PcmlnaW5hdGVkQnkuQnJhbmNoSUQgPSB0aGlzLmJyYW5jaElkO1xyXG4gICAgICAgIHRoaXMucmpPYmplY3RbJ0hlYWRlciddLk9yaWdpbmF0ZWRCeS5UZXJtaW5hbE51bWJlciA9IHRoaXMudGVybWluYWxOdW1iZXI7XHJcbiAgICAgICAgdGhpcy5yak9iamVjdFsnSGVhZGVyJ10uT3JpZ2luYXRlZEJ5LlRyYW5zYWN0aW9uTnVtYmVyID0gdGhpcy50cmFuc2FjdGlvbk51bWJlcjtcclxuICAgICAgICB0aGlzLnJqT2JqZWN0WydIZWFkZXInXS5UYXhNZXRob2RJRCA9IHRoaXMudGF4TWV0aG9kSWQ7XHJcbiAgICAgICAgdGhpcy5yak9iamVjdFsnSGVhZGVyJ10uRHluYW1pY1N0b2NrTG9va3VwID0gdGhpcy5nZW5lcmF0ZUR5bmFtaWNTdG9ja0xvb2tVcCgpOy8vdG9kb1xyXG4gICAgICAgIHRoaXMucmpPYmplY3RbJ0hlYWRlciddLkJhc2tldExhbmd1YWdlSUQgPSB0aGlzLmJhc2tldExhbmd1YWdlSWQ7IC8vdG9kb1xyXG4gICAgICAgIHRoaXMucmpPYmplY3RbJ0hlYWRlciddLkJhc2tldENvdW50cnlJRCA9IHRoaXMuYmFza2V0Q291bnRyeUlkOyAvL3RvZG9cclxuICAgICAgICB0aGlzLnJqT2JqZWN0WydIZWFkZXInXS5CYXNrZXRDdXJyZW5jeUlEID0gdGhpcy50cmFuc2FjdGlvbkRvY3VtZW50LmJhc2VDdXJyZW5jeTtcclxuICAgICAgICB0aGlzLnJqT2JqZWN0WydIZWFkZXInXS5UcmFkaW5nUmVnaW9uSUQgPSB0aGlzLnRyYWRpbmdSZWdpb25JZDtcclxuICAgICAgICB0aGlzLnJqT2JqZWN0WydIZWFkZXInXS5FdXJvem9uZSA9IFwiIFwiOy8vdW5rbm93blxyXG4gICAgICAgIHRoaXMucmpPYmplY3RbJ0hlYWRlciddLkV1cm9CYXNlRXhjaGFuZ2VSYXRlID0gXCJcIjsgLy91bmtub3duXHJcbiAgICAgICAgdGhpcy5yak9iamVjdFsnSGVhZGVyJ10uUHJpbnRhYmxlTmFtZSA9IHRoaXMudHJhbnNhY3Rpb25Eb2N1bWVudC51c2VyTmFtZTsgLy91bmtub3duXHJcblxyXG4gICAgICAgIHJldHVybiB0aGlzO1xyXG4gICAgfVxyXG5cclxuICAgIHJqTWFwcGVyKCkge1xyXG4gICAgICAgIGlmICh0aGlzLnRyYW5zYWN0aW9uRG9jdW1lbnQudHlwZSA9PT0gVFJBTlNBQ1RJT05fVFlQRS5TQUxFKSB7XHJcbiAgICAgICAgICAgIHRoaXMucmpPYmplY3RbJ1Byb2R1Y3RTYWxlJ10gPSBbXTtcclxuICAgICAgICAgICAgdGhpcy5yak9iamVjdFsnTW9kaWZpZXJJdGVtJ10gPSBbXTtcclxuXHJcbiAgICAgICAgICAgIHRoaXMudHJhbnNhY3Rpb25Eb2N1bWVudC5iYXNrZXQucHJvZHVjdHMuZm9yRWFjaCgoZWxlbWVudDogYW55KSA9PiB7XHJcbiAgICAgICAgICAgICAgICBsZXQgbGluZURpc2NvdW50ID0gW107XHJcbiAgICAgICAgICAgICAgICBpZiAodGhpcy50cmFuc2FjdGlvbkRvY3VtZW50LmJhc2tldC5saW5lRGlzY291bnQgJiYgdGhpcy50cmFuc2FjdGlvbkRvY3VtZW50LmJhc2tldC5saW5lRGlzY291bnQubGVuZ3RoID4gMCkge1xyXG4gICAgICAgICAgICAgICAgICAgIGxpbmVEaXNjb3VudCA9IHRoaXMudHJhbnNhY3Rpb25Eb2N1bWVudC5iYXNrZXQubGluZURpc2NvdW50LmZpbHRlcigoeDogYW55KSA9PiB4Lml0ZW1MaW5lSWQgPT09IGVsZW1lbnQuaXRlbUxpbmVJZCk7XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKGxpbmVEaXNjb3VudC5sZW5ndGggPiAwKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGluZGV4ID0gdGhpcy50cmFuc2FjdGlvbkRvY3VtZW50LmJhc2tldC5saW5lRGlzY291bnQuaW5kZXhPZihsaW5lRGlzY291bnRbMF0pO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoaW5kZXggPiAtMSkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy50cmFuc2FjdGlvbkRvY3VtZW50LmJhc2tldC5saW5lRGlzY291bnQuc3BsaWNlKGluZGV4LCAxKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIGxldCBkYXRhID0gdGhpcy5hZGRQcm9kdWN0KGVsZW1lbnQsIChsaW5lRGlzY291bnQubGVuZ3RoID4gMCA/IGxpbmVEaXNjb3VudFswXSA6IG51bGwpKTtcclxuICAgICAgICAgICAgICAgIHRoaXMucmpPYmplY3RbJ1Byb2R1Y3RTYWxlJ10ucHVzaChkYXRhKTtcclxuICAgICAgICAgICAgICAgIHRoaXMuZ2V0TW9kaWZpZXJJdGVtKGxpbmVEaXNjb3VudC5sZW5ndGggPiAwID8gbGluZURpc2NvdW50WzBdIDogbnVsbCwgZWxlbWVudC5pdGVtTGluZUlkKTtcclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgfSBlbHNlIGlmICh0aGlzLnRyYW5zYWN0aW9uRG9jdW1lbnQudHlwZSA9PT0gVFJBTlNBQ1RJT05fVFlQRS5SRUZVTkQpIHtcclxuICAgICAgICAgICAgdGhpcy5yak9iamVjdFsnUHJvZHVjdFJldHVybiddID0gW107XHJcbiAgICAgICAgICAgIHRoaXMucmpPYmplY3RbJ01vZGlmaWVySXRlbSddID0gW107XHJcbiAgICAgICAgICAgIHRoaXMudHJhbnNhY3Rpb25Eb2N1bWVudC5iYXNrZXQucHJvZHVjdHMuZm9yRWFjaCgoZWxlbWVudDogYW55KSA9PiB7XHJcbiAgICAgICAgICAgICAgICBsZXQgZGF0YSA9IHRoaXMucmV0dXJuUHJvZHVjdChlbGVtZW50LCAoZWxlbWVudC5oYXNPd25Qcm9wZXJ0eSgnbGluZURpc2NvdW50JykgPyBlbGVtZW50LmxpbmVEaXNjb3VudCA6IG51bGwpKTtcclxuICAgICAgICAgICAgICAgIHRoaXMucmpPYmplY3RbJ1Byb2R1Y3RSZXR1cm4nXS5wdXNoKGRhdGEpO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5nZXRNb2RpZmllckl0ZW0oZWxlbWVudC5saW5lRGlzY291bnQsIGVsZW1lbnQuaXRlbUxpbmVJZCk7XHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgIH0gZWxzZSBpZiAodGhpcy50cmFuc2FjdGlvbkRvY3VtZW50LnR5cGUgPT09IFRSQU5TQUNUSU9OX1RZUEUuU0FMRV9SRUZVTkQpIHtcclxuICAgICAgICAgICAgdGhpcy5yak9iamVjdFsnUHJvZHVjdFJldHVybiddID0gW107XHJcbiAgICAgICAgICAgIHRoaXMucmpPYmplY3RbJ01vZGlmaWVySXRlbSddID0gW107XHJcbiAgICAgICAgICAgIFxyXG4gICAgICAgICAgICBsZXQgdHJhbnNhY3Rpb25Eb2M6IGFueSA9IG5ldyBUcmFuc2FjdGlvbkRvY3VtZW50QnVpbGRlcigpLmJhc2tldCh0aGlzLnRyYW5zYWN0aW9uRG9jdW1lbnQuY3VycmVudFRyYW5zYWN0aW9uRGV0YWlscykuYnVpbGQoKTtcclxuICAgICAgICAgICAgdHJhbnNhY3Rpb25Eb2MuYmFza2V0LnByb2R1Y3RzLmZvckVhY2goKGVsZW1lbnQ6IGFueSkgPT4ge1xyXG4gICAgICAgICAgICAgICAgbGV0IGRhdGEgPSB0aGlzLnJldHVyblByb2R1Y3QoZWxlbWVudCwgKGVsZW1lbnQuaGFzT3duUHJvcGVydHkoJ2xpbmVEaXNjb3VudCcpID8gZWxlbWVudC5saW5lRGlzY291bnQgOiBudWxsKSk7XHJcbiAgICAgICAgICAgICAgICBsZXQgb2JqID0ge1xyXG4gICAgICAgICAgICAgICAgICAgIFwiT3JpZ2luYWxSZWNlaXB0U3VwcGxpZWRcIjogMCxcclxuICAgICAgICAgICAgICAgICAgICBcIk9yaWdpbmFsQnJhbmNoSURcIjogMCxcclxuICAgICAgICAgICAgICAgICAgICBcIk9yaWdpbmFsVGVybWluYWxOdW1iZXJcIjogMCxcclxuICAgICAgICAgICAgICAgICAgICBcIk9yaWdpbmFsVHJhbnNhY3Rpb25OdW1iZXJcIjogMCxcclxuICAgICAgICAgICAgICAgICAgICBcIk9yaWdpbmFsQ2FzaGllck51bWJlclwiOiAwXHJcbiAgICAgICAgICAgICAgICB9O1xyXG4gICAgICAgICAgICAgICAgZGF0YVsnUmV0dXJuJ10gPSB7Li4uZGF0YVsnUmV0dXJuJ10sIC4uLm9ian07XHJcbiAgICAgICAgICAgICAgICB0aGlzLnJqT2JqZWN0WydQcm9kdWN0UmV0dXJuJ10ucHVzaChkYXRhKTtcclxuICAgICAgICAgICAgICAgIHRoaXMuZ2V0TW9kaWZpZXJJdGVtKGVsZW1lbnQubGluZURpc2NvdW50LCBlbGVtZW50Lml0ZW1MaW5lSWQpO1xyXG4gICAgICAgICAgICB9KVxyXG4gICAgICAgIH0gZWxzZSBpZiAodGhpcy50cmFuc2FjdGlvbkRvY3VtZW50LnR5cGUgPT09IFRSQU5TQUNUSU9OX1RZUEUuU0FMRV9FWENIQU5HRSkge1xyXG4gICAgICAgICAgICB0aGlzLnJqT2JqZWN0WydQcm9kdWN0UmV0dXJuJ10gPSBbXTtcclxuICAgICAgICAgICAgdGhpcy5yak9iamVjdFsnUHJvZHVjdFNhbGUnXSA9IFtdO1xyXG4gICAgICAgICAgICB0aGlzLnJqT2JqZWN0WydNb2RpZmllckl0ZW0nXSA9IFtdO1xyXG4gICAgICAgICAgICBcclxuICAgICAgICAgICAgbGV0IHRyYW5zYWN0aW9uRG9jOiBhbnkgPSBuZXcgVHJhbnNhY3Rpb25Eb2N1bWVudEJ1aWxkZXIoKS5iYXNrZXQodGhpcy50cmFuc2FjdGlvbkRvY3VtZW50LmN1cnJlbnRUcmFuc2FjdGlvbkRldGFpbHMpLmJ1aWxkKCk7XHJcbiAgICAgICAgICAgIHRyYW5zYWN0aW9uRG9jLmJhc2tldC5wcm9kdWN0cy5mb3JFYWNoKChlbGVtZW50OiBhbnkpID0+IHtcclxuICAgICAgICAgICAgICAgIGlmIChlbGVtZW50LnJlZnVuZGVkUXVhbnRpdHkgPiAwKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgbGV0IHJldHVyblByb2R1Y3QgPSB0aGlzLnJldHVyblByb2R1Y3QoZWxlbWVudCwgKGVsZW1lbnQuaGFzT3duUHJvcGVydHkoJ2xpbmVEaXNjb3VudCcpID8gZWxlbWVudC5saW5lRGlzY291bnQgOiBudWxsKSk7XHJcbiAgICAgICAgICAgICAgICAgICAgbGV0IG9iaiA9IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgXCJPcmlnaW5hbFJlY2VpcHRTdXBwbGllZFwiOiAwLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBcIk9yaWdpbmFsQnJhbmNoSURcIjogMCxcclxuICAgICAgICAgICAgICAgICAgICAgICAgXCJPcmlnaW5hbFRlcm1pbmFsTnVtYmVyXCI6IDAsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIFwiT3JpZ2luYWxUcmFuc2FjdGlvbk51bWJlclwiOiAwLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBcIk9yaWdpbmFsQ2FzaGllck51bWJlclwiOiAwXHJcbiAgICAgICAgICAgICAgICAgICAgfTtcclxuICAgICAgICAgICAgICAgICAgICByZXR1cm5Qcm9kdWN0WydSZXR1cm4nXSA9IHsuLi5yZXR1cm5Qcm9kdWN0WydSZXR1cm4nXSwgLi4ub2JqfTtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLnJqT2JqZWN0WydQcm9kdWN0UmV0dXJuJ10ucHVzaChyZXR1cm5Qcm9kdWN0KTtcclxuICAgICAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICAgICAgbGV0IGFkZFByb2R1Y3QgPSB0aGlzLmFkZFByb2R1Y3QoZWxlbWVudCwgKGVsZW1lbnQuaGFzT3duUHJvcGVydHkoJ2xpbmVEaXNjb3VudCcpID8gZWxlbWVudC5saW5lRGlzY291bnQgOiBudWxsKSk7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5yak9iamVjdFsnUHJvZHVjdFNhbGUnXS5wdXNoKGFkZFByb2R1Y3QpO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgdGhpcy5nZXRNb2RpZmllckl0ZW0oZWxlbWVudC5saW5lRGlzY291bnQsIGVsZW1lbnQuaXRlbUxpbmVJZCk7XHJcbiAgICAgICAgICAgIH0pXHJcblxyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4gdGhpcztcclxuICAgIH1cclxuXHJcbiAgICBnZXRCYXNrZXREaXNjb3VudCgpIHtcclxuICAgICAgICB0aGlzLnJqT2JqZWN0WydCYXNrZXREaXNjb3VudCddID0gW107XHJcbiAgICAgICAgaWYgKCF0aGlzLnRyYW5zYWN0aW9uRG9jdW1lbnQuYmFza2V0LnRyYW5zYWN0aW9uRGlzY291bnQpIHJldHVybiB0aGlzO1xyXG5cclxuICAgICAgICB0aGlzLnRyYW5zYWN0aW9uRG9jdW1lbnQuYmFza2V0LnRyYW5zYWN0aW9uRGlzY291bnQuZm9yRWFjaCgoZWxlbWVudDogYW55KSA9PiB7XHJcbiAgICAgICAgICAgIGxldCBvYmo6IGFueSA9IHt9XHJcbiAgICAgICAgICAgIG9ialsnWE1MU2NoZW1hVmVyc2lvbiddID0gMTtcclxuICAgICAgICAgICAgb2JqWydOZXRWYWx1ZSddID0gZWxlbWVudC5kaXNjb3VudEFtb3VudCA8IDAgPyBlbGVtZW50LmRpc2NvdW50QW1vdW50IDogLWVsZW1lbnQuZGlzY291bnRBbW91bnQ7XHJcbiAgICAgICAgICAgIG9ialsnRWZmZWN0aXZlTmV0VmFsdWUnXSA9IGVsZW1lbnQuZGlzY291bnRBbW91bnQgPCAwID8gZWxlbWVudC5kaXNjb3VudEFtb3VudCA6IC1lbGVtZW50LmRpc2NvdW50QW1vdW50O1xyXG4gICAgICAgICAgICBvYmpbJ0Rlc2NyaXB0aW9uJ10gPSBlbGVtZW50LnJlYXNvbkNvZGU7XHJcbiAgICAgICAgICAgIG9ialsnVXNlcklEJ10gPSB0aGlzLnRyYW5zYWN0aW9uRG9jdW1lbnQudXNlck5hbWU7XHJcbiAgICAgICAgICAgIG9ialsnUmVhc29uQ29kZUlEJ10gPSBlbGVtZW50LnJlYXNvbkNvZGU7XHJcbiAgICAgICAgICAgIG9ialsnRGlzY291bnRUeXBlJ10gPSBlbGVtZW50LmRpc2NvdW50VHlwZS50b1VwcGVyQ2FzZSgpID09IERJU0NPVU5UVFlQRS5QRVJDRU5ULnRvVXBwZXJDYXNlKCkgPyAwIDogMTsgLy8gdG9kbyAtIGNvbXBhcmUgdmFsdWVzIFxyXG4gICAgICAgICAgICBvYmpbJ1JvdW5kaW5nUnVsZSddID0gMjtcclxuICAgICAgICAgICAgb2JqWydNb2RpZmllZExpbmVOdW1iZXIgJ10gPSBbXTtcclxuXHJcbiAgICAgICAgICAgIGVsZW1lbnQuaXRlbUxpbmVJZHMuZm9yRWFjaCgoZWxlbWVudDogYW55KSA9PiB7XHJcbiAgICAgICAgICAgICAgICBvYmpbJ01vZGlmaWVkTGluZU51bWJlciddLnB1c2goZWxlbWVudCk7XHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICBvYmpbJ0xpbmVOdW1iZXInXSA9IHRoaXMuZ2VuZXJhdGVMaW5lTnVtYmVyKCk7XHJcblxyXG4gICAgICAgICAgICAvLyBvYmpbJ0Rpc2NvdW50ZWRWYWx1ZSddID0gb2JqWydkaXNjb3VudEFtb3VudCddIC8vIHRvZG8gLSBjb25maXJtIHZhbHVlIGJlZm9yZSBkaXNjb3VudDtcclxuICAgICAgICAgICAgLy8gb2JqWydEaXNjb3VudFBlcmNlbnRhZ2UnXSA9IG9ialsnZGlzY291bnRBbW91bnQnXSAvIDEwMCA7IC8vIHRvZG8gLSBvcHRpb25hbFxyXG5cclxuICAgICAgICAgICAgdGhpcy5yak9iamVjdFsnQmFza2V0RGlzY291bnQnXS5wdXNoKG9iaik7XHJcbiAgICAgICAgfSk7XHJcbiAgICAgICAgcmV0dXJuIHRoaXM7XHJcbiAgICB9XHJcblxyXG4gICAgZ2V0TW9kaWZpZXJJdGVtKGRhdGE6IGFueSwgbGluZU5vOiBhbnkpIHtcclxuICAgICAgICBpZiAoZGF0YSAmJiBsaW5lTm8pIHtcclxuICAgICAgICAgICAgbGV0IG9iajogYW55ID0ge307XHJcbiAgICAgICAgICAgIG9iai5YTUxTY2hlbWFWZXJzaW9uID0gMTtcclxuICAgICAgICAgICAgb2JqLkxpbmVOdW1iZXIgPSB0aGlzLmdlbmVyYXRlTGluZU51bWJlcigpO1xyXG4gICAgICAgICAgICBvYmouTmV0VmFsdWUgPSAwO1xyXG4gICAgICAgICAgICBvYmouRWZmZWN0aXZlTmV0VmFsdWUgPSAwO1xyXG4gICAgICAgICAgICBvYmouRGVzY3JpcHRpb24gPSBkYXRhLnBlcmNlbnRhZ2VEaXNjb3VudFJlYXNvbk5hbWUgPyBkYXRhLnBlcmNlbnRhZ2VEaXNjb3VudFJlYXNvbk5hbWUgOiBkYXRhLnByaWNlT3ZlcnJpZGVSZWFzb25OYW1lO1xyXG4gICAgICAgICAgICBvYmouRGV2aWNlSUQgPSB0aGlzLmRldmljZUlkO1xyXG4gICAgICAgICAgICBvYmouVXNlcklEID0gdGhpcy50cmFuc2FjdGlvbkRvY3VtZW50LnVzZXJOYW1lO1xyXG4gICAgICAgICAgICBvYmouRGF0ZVRpbWVDcmVhdGVkID0gdGhpcy51cGRhdGVkQXQ7XHJcbiAgICAgICAgICAgIG9iai5BdXRob3Jpc2luZ1VzZXJJRCA9IHRoaXMudXNlcklkO1xyXG4gICAgICAgICAgICBvYmouUmVhc29uQ29kZUlEID0gZGF0YS5wZXJjZW50YWdlRGlzY291bnRSZWFzb25Db2RlID8gZGF0YS5wZXJjZW50YWdlRGlzY291bnRSZWFzb25Db2RlIDogZGF0YS5wcmljZU92ZXJyaWRlUmVhc29uQ29kZTtcclxuICAgICAgICAgICAgb2JqLk1vZGlmaWVkTGluZU51bWJlciA9IGxpbmVObztcclxuICAgICAgICAgICAgb2JqLk1vZGlmaWVkSW5kZXggPSAxO1xyXG5cclxuICAgICAgICAgICAgdGhpcy5yak9iamVjdFsnTW9kaWZpZXJJdGVtJ10ucHVzaChvYmopO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBnZXRUcmFpbGVySW5mbygpIHtcclxuICAgICAgICB0aGlzLnJqT2JqZWN0WydUcmFpbGVyJ10gPSB7fTtcclxuICAgICAgICB0aGlzLnJqT2JqZWN0LlRyYWlsZXIuRGF0ZVRpbWVDb21wbGV0ZWQgPSB0aGlzLnVwZGF0ZWRBdDtcclxuICAgICAgICB0aGlzLnJqT2JqZWN0LlRyYWlsZXIuQ29tcGxldGVkQnkgPSB7fTtcclxuICAgICAgICB0aGlzLnJqT2JqZWN0LlRyYWlsZXIuQ29tcGxldGVkQnkuRGV2aWNlSUQgPSB0aGlzLmRldmljZUlkO1xyXG4gICAgICAgIHRoaXMucmpPYmplY3QuVHJhaWxlci5Db21wbGV0ZWRCeS5DYXNoaWVySUQgPSB0aGlzLmNhc2hpZXJJZDtcclxuICAgICAgICB0aGlzLnJqT2JqZWN0LlRyYWlsZXIuQ29tcGxldGVkQnkuU3RvcmVJRCA9IHRoaXMudHJhbnNhY3Rpb25Eb2N1bWVudC5zdG9yZUlkO1xyXG4gICAgICAgIHRoaXMucmpPYmplY3QuVHJhaWxlci5Db21wbGV0ZWRCeS5CcmFuY2hJRCA9IHRoaXMuYnJhbmNoSWQ7XHJcbiAgICAgICAgdGhpcy5yak9iamVjdC5UcmFpbGVyLkNvbXBsZXRlZEJ5LlRlcm1pbmFsTnVtYmVyID0gdGhpcy50cmFuc2FjdGlvbkRvY3VtZW50LnRlcm1pbmFsSWQ7XHJcbiAgICAgICAgdGhpcy5yak9iamVjdC5UcmFpbGVyLlRvdGFsID0gdGhpcy5jb252ZXJ0VG9TdHJpbmcodGhpcy50cmFuc2FjdGlvbkRvY3VtZW50LmJhc2tldFN1bW1hcnkuYmFza2V0VG90YWwgKiAxMDApO1xyXG4gICAgICAgIHRoaXMucmpPYmplY3QuVHJhaWxlci5JdGVtQ291bnQgPSB0aGlzLml0ZW1Db3VudDsgLy9naXZlcyB0b3RhbCBjb3VudCBmb3IgcHJvZHVjdFxyXG4gICAgICAgIHRoaXMucmpPYmplY3QuVHJhaWxlci5JdGVtUXVhbnRpdHkgPSB0aGlzLmNvbnZlcnRUb1N0cmluZyh0aGlzLnRyYW5zYWN0aW9uRG9jdW1lbnQuYmFza2V0U3VtbWFyeS50b3RhbEl0ZW1zKTtcclxuICAgICAgICB0aGlzLnJqT2JqZWN0LlRyYWlsZXIuTmV0SXRlbVF1YW50aXR5ID0gdGhpcy5jb252ZXJ0VG9TdHJpbmcodGhpcy50cmFuc2FjdGlvbkRvY3VtZW50LmJhc2tldFN1bW1hcnkudG90YWxJdGVtcyk7XHJcbiAgICAgICAgdGhpcy5yak9iamVjdC5UcmFpbGVyLlRheFRvdGFsID0gdGhpcy5jb252ZXJ0VG9TdHJpbmcodGhpcy50cmFuc2FjdGlvbkRvY3VtZW50LmJhc2tldFN1bW1hcnkuVkFUVG90YWwpO1xyXG4gICAgICAgIHRoaXMucmpPYmplY3QuVHJhaWxlci5TZXF1ZW5jZURldmljZUlEID0gdGhpcy5kZXZpY2VJZDtcclxuICAgICAgICB0aGlzLnJqT2JqZWN0LlRyYWlsZXIuU2VxdWVuY2VOdW1iZXIgPSAnc25zbicgLy9zdGF0aWMgZm9yIG5vd1xyXG5cclxuICAgICAgICB0aGlzLnJqT2JqZWN0WydUcmFpbGVyJ11bJ1RheEl0ZW0nXSA9IFtdO1xyXG4gICAgICAgIHRoaXMudHJhbnNhY3Rpb25Eb2N1bWVudC5iYXNrZXQudGF4QnJlYWtkb3duLnRheExpbmVzLmZvckVhY2goKGVsZW1lbnQ6IGFueSkgPT4ge1xyXG4gICAgICAgICAgICBsZXQgb2JqOiBhbnkgPSB7fTtcclxuXHJcbiAgICAgICAgICAgIG9ialsnWE1MU2NoZW1hVmVyc2lvbiddID0gdGhpcy54bWxTY2hlbWFWZXJzaW9uO1xyXG4gICAgICAgICAgICBvYmpbJ1RheFJhdGUnXSA9IGVsZW1lbnQuVkFUO1xyXG4gICAgICAgICAgICBvYmpbJ1RheGFibGVUb3RhbCddID0gdGhpcy5jb252ZXJ0VG9TdHJpbmcoZWxlbWVudC50YXhhYmxlQW1vdW50KTtcclxuICAgICAgICAgICAgb2JqWydUYXhUb3RhbCddID0gdGhpcy5jb252ZXJ0VG9TdHJpbmcoZWxlbWVudC50YXhMaW5lVG90YWwpO1xyXG4gICAgICAgICAgICBvYmpbJ1RheERlc2NyaXB0aW9uJ10gPSB0aGlzLmNvbnZlcnRUb1N0cmluZyhlbGVtZW50LlZBVENvZGUpO1xyXG4gICAgICAgICAgICBvYmpbJ1RheEluY2x1ZGVkJ10gPSAnMSc7XHJcbiAgICAgICAgICAgIG9ialsnVGF4UGVyY2VudGFnZSddID0gZWxlbWVudC5WQVQudG9GaXhlZCgyKTsgLy8gdG9kb1xyXG5cclxuICAgICAgICAgICAgdGhpcy5yak9iamVjdFsnVHJhaWxlciddWydUYXhJdGVtJ10ucHVzaChvYmopXHJcbiAgICAgICAgfSk7XHJcblxyXG4gICAgICAgIC8vIFRPRE86IG1ha2UgVHJhaWxlciBvYmplY3QgZnJvbSBwcm9tb3Rpb25cclxuICAgICAgICB0aGlzLnJqT2JqZWN0WydUcmFpbGVyJ11bJ1Byb21vdGlvbkl0ZW0nXSA9IFtdO1xyXG4gICAgICAgIHRoaXMudHJhbnNhY3Rpb25Eb2N1bWVudC5iYXNrZXQubGluZVByb21vdGlvbi5mb3JFYWNoKChlbGVtZW50OiBhbnkpID0+IHtcclxuICAgICAgICAgICAgbGV0IG9iajogYW55ID0ge307XHJcblxyXG4gICAgICAgICAgICBvYmpbJ1Byb21vdGlvbklEJ10gPSBlbGVtZW50LnByb21vdGlvbklkO1xyXG4gICAgICAgICAgICBvYmpbJ1Byb21vdGlvblNhdmluZyddID0gZWxlbWVudC5wcm9tb3Rpb25BbW91bnQgPCAwID8gZWxlbWVudC5wcm9tb3Rpb25BbW91bnQgOiAtZWxlbWVudC5wcm9tb3Rpb25BbW91bnQ7XHJcbiAgICAgICAgICAgIG9ialsnUHJvbW90aW9uUXVhbnRpdHknXSA9IFwiXCI7IC8vIHRvZG8gLSBub3QgYXZhaWFsYmxlXHJcbiAgICAgICAgICAgIG9ialsnUHJvbW90aW9uRGVzY3JpcHRpb24nXSA9IGVsZW1lbnQuZGlzcGxheVRleHQ7XHJcblxyXG4gICAgICAgICAgICBvYmpbJ1Byb21vdGlvbkhpdCddWydYTUxTY2hlbWFWZXJzaW9uJ10gPSB0aGlzLnRyYW5zYWN0aW9uRG9jdW1lbnQuc3RvcmVJZDtcclxuICAgICAgICAgICAgb2JqWydQcm9tb3Rpb25IaXQnXVsnSGl0TnVtYmVyJ10gPSBcIlwiIC8vIHRvZG87XHJcbiAgICAgICAgICAgIG9ialsnUHJvbW90aW9uSGl0J11bJ0hpdFF1YW50aXR5J10gPSBcIlwiIC8vIHRvZG87XHJcbiAgICAgICAgICAgIG9ialsnUHJvbW90aW9uSGl0J11bJ0hpdFNhdmluZyddID0gXCJcIiAvLyB0b2RvO1xyXG5cclxuICAgICAgICAgICAgb2JqWydQcm9tb3Rpb25IaXQnXVsnUHJvbW90aW9uVHJpZ2dlciddID0gW107XHJcblxyXG4gICAgICAgICAgICBlbGVtZW50LnRyaWdnZXIuZm9yRWFjaCgoc3ViRWxlbWVudDogYW55KSA9PiB7XHJcbiAgICAgICAgICAgICAgICBsZXQgb2JqU3ViOiBhbnkgPSB7fTtcclxuXHJcbiAgICAgICAgICAgICAgICBsZXQgcHJvZHVjdCA9IHRoaXMudHJhbnNhY3Rpb25Eb2N1bWVudC5iYXNrZXQucHJvZHVjdHMuZmluZCgoaXRlbTogYW55KSA9PiBpdGVtLmxpbmVJdGVtSWQgPT0gc3ViRWxlbWVudC5pdGVtTGluZUlkKTtcclxuICAgICAgICAgICAgICAgIG9ialN1YlsnWE1MU2NoZW1hVmVyc2lvbiddID0gdGhpcy54bWxTY2hlbWFWZXJzaW9uO1xyXG4gICAgICAgICAgICAgICAgb2JqU3ViWydQcm9kdWN0SUQnXSA9IHRoaXMudHJhbnNhY3Rpb25Eb2N1bWVudC5iYXNrZXQucHJvZHVjdHMuZmluZCgoaXRlbTogYW55KSA9PiBpdGVtLml0ZW1MaW5lSWQgPT09IHN1YkVsZW1lbnQuaXRlbUxpbmVJZCkuU0tVO1xyXG4gICAgICAgICAgICAgICAgb2JqU3ViWydVbml0VmFsdWUnXSA9IHRoaXMuY29udmVydFRvU3RyaW5nKGVsZW1lbnQucHJvbW90aW9uTGluZVByaWNlIC8gcHJvZHVjdC5xdWFudGl0eSk7XHJcbiAgICAgICAgICAgICAgICBvYmpTdWJbJ0xpbmVOdW1iZXInXSA9IHRoaXMuY29udmVydFRvU3RyaW5nKHN1YkVsZW1lbnQuaXRlbUxpbmVJZCk7XHJcbiAgICAgICAgICAgICAgICBvYmpTdWJbJ1F1YW50aXR5J10gPSB0aGlzLmNvbnZlcnRUb1N0cmluZyhzdWJFbGVtZW50LnF1YW50aXR5LnRvRml4ZWQoMSkpO1xyXG4gICAgICAgICAgICAgICAgb2JqU3ViWydUYXhDb2RlJ10gPSB0aGlzLnRyYW5zYWN0aW9uRG9jdW1lbnQuYmFza2V0LnRheEJyZWFrZG93bi50YXhMaW5lcy5maW5kKChpdGVtOiBhbnkpID0+IGl0ZW0uaXRlbUxpbmVJZCA9PSBlbGVtZW50Lml0ZW1MaW5lSWQpLlZBVENvZGU7IC8vIHRvZG9cclxuICAgICAgICAgICAgICAgIG9ialsnUHJvbW90aW9uSGl0J11bJ1Byb21vdGlvblRyaWdnZXInXS5wdXNoKG9ialN1Yik7XHJcbiAgICAgICAgICAgIH0pO1xyXG5cclxuICAgICAgICAgICAgdGhpcy5yak9iamVjdFsnVHJhaWxlciddWydQcm9tb3Rpb25JdGVtJ10ucHVzaChvYmopO1xyXG4gICAgICAgIH0pO1xyXG5cclxuICAgICAgICAvL2NvbnNvbGUubG9nKHRoaXMucmpPYmplY3QpO1xyXG4gICAgICAgIHJldHVybiB0aGlzO1xyXG4gICAgfVxyXG5cclxuICAgIGdldFRlbmRlckluZm8oKSB7XHJcbiAgICAgICAgdGhpcy5yak9iamVjdFsnQ2FzaFRlbmRlciddID0gW107XHJcbiAgICAgICAgaWYgKHRoaXMudHJhbnNhY3Rpb25Eb2N1bWVudC5wYXltZW50RGV0YWlscyAmJiB0aGlzLnRyYW5zYWN0aW9uRG9jdW1lbnQucGF5bWVudERldGFpbHMubGVuZ3RoID4gMCkge1xyXG4gICAgICAgICAgICB0aGlzLnRyYW5zYWN0aW9uRG9jdW1lbnQucGF5bWVudERldGFpbHMuZm9yRWFjaCgoZWxlbWVudDogYW55KSA9PiB7XHJcbiAgICAgICAgICAgICAgICBsZXQgdmFsdWUgPSB0aGlzLnBheW1lbnRUeXBlcy5maWx0ZXIoeCA9PiB4Lm5hbWUudG9VcHBlckNhc2UoKSA9PT0gZWxlbWVudC5wYXltZW50VHlwZS50b1VwcGVyQ2FzZSgpKTtcclxuICAgICAgICAgICAgICAgIGlmIChlbGVtZW50LnBheW1lbnRUeXBlLnRvVXBwZXJDYXNlKCkgPT09ICdHSUZUIENBUkQnKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgbGV0IG9iaiA9IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgWE1MU2NoZW1hVmVyc2lvbjogdGhpcy54bWxTY2hlbWFWZXJzaW9uLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBMaW5lTnVtYmVyOiB0aGlzLmdlbmVyYXRlTGluZU51bWJlcigpLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBOZXRWYWx1ZTogdGhpcy5jb252ZXJ0VG9TdHJpbmcoLTEgKiB0aGlzLnJlbW92ZURlY2ltYWwoKE1hdGgucm91bmQoZWxlbWVudC5hbW91bnQpKSkpLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBFZmZlY3RpdmVOZXRWYWx1ZTogdGhpcy5jb252ZXJ0VG9TdHJpbmcoLTEgKiB0aGlzLnJlbW92ZURlY2ltYWwoKE1hdGgucm91bmQoZWxlbWVudC5hbW91bnQpKSkpLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBEZXNjcmlwdGlvbjogdGhpcy5nZXREZXNjcmlwdGlvbih2YWx1ZVswXS5uYW1lLCBlbGVtZW50KSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgRGV2aWNlSUQ6IHRoaXMuZGV2aWNlSWQsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIFVzZXJJRDogdGhpcy50cmFuc2FjdGlvbkRvY3VtZW50LnVzZXJOYW1lLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBEYXRlVGltZUNyZWF0ZWQ6IHRoaXMudXBkYXRlZEF0LFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBUZW5kZXJUeXBlOiB2YWx1ZVswXS50ZW5kZXJUeXBlLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBUZW5kZXJTdWJUeXBlOiB2YWx1ZVswXS50ZW5kZXJTdWJUeXBlLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBUZW5kZXJBbW91bnQ6IHRoaXMuY29udmVydFRvU3RyaW5nKC0xICogdGhpcy5yZW1vdmVEZWNpbWFsKChNYXRoLnJvdW5kKGVsZW1lbnQuYW1vdW50KSkpKSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgQ3VycmVuY3lJRDogdGhpcy50cmFuc2FjdGlvbkRvY3VtZW50LmJhc2VDdXJyZW5jeSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgQ3VycmVuY3lEZXNjcmlwdGlvbjogdGhpcy50cmFuc2FjdGlvbkRvY3VtZW50LmJhc2VDdXJyZW5jeSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgR2lmdFZvdWNoZXJTYWxlc0FsbG93ZWQ6ICcnLC8vdG9kb1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBBbGxvd1JlY2hhcmdlYWJsZVZvdWNoZXJTYWxlczogJycsLy90b2RvXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIEdpZnRWb3VjaGVySUQ6ICcnXHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMucmpPYmplY3RbJ0Nhc2hUZW5kZXInXS5wdXNoKG9iailcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgICAgIGxldCBvYmoxID0ge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBYTUxTY2hlbWFWZXJzaW9uOiBcIjFcIixcclxuICAgICAgICAgICAgICAgICAgICAgICAgTGluZU51bWJlcjogdGhpcy5nZW5lcmF0ZUxpbmVOdW1iZXIoKSwvL3RvZG9cclxuICAgICAgICAgICAgICAgICAgICAgICAgTmV0VmFsdWU6IEpTT04uc3RyaW5naWZ5KC0xICogKE1hdGgucm91bmQoZWxlbWVudC5hbW91bnQpKSksXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIEVmZmVjdGl2ZU5ldFZhbHVlOiBKU09OLnN0cmluZ2lmeSgtMSAqIChNYXRoLnJvdW5kKGVsZW1lbnQuYW1vdW50KSkpLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBEZXNjcmlwdGlvbjogdGhpcy5nZXREZXNjcmlwdGlvbih2YWx1ZVswXS5uYW1lLCBlbGVtZW50KSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgRGV2aWNlSUQ6IHRoaXMuZGV2aWNlSWQsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIFVzZXJJRDogdGhpcy50cmFuc2FjdGlvbkRvY3VtZW50LnVzZXJOYW1lLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBEYXRlVGltZUNyZWF0ZWQ6IHRoaXMudXBkYXRlZEF0LFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBUZW5kZXJUeXBlOiB2YWx1ZVswXS50ZW5kZXJUeXBlLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBUZW5kZXJTdWJUeXBlOiB2YWx1ZVswXS50ZW5kZXJTdWJUeXBlLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBUZW5kZXJBbW91bnQ6IEpTT04uc3RyaW5naWZ5KC0xICogKE1hdGgucm91bmQoZWxlbWVudC5hbW91bnQpKSksXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIEN1cnJlbmN5SUQ6IHRoaXMudHJhbnNhY3Rpb25Eb2N1bWVudC5iYXNlQ3VycmVuY3ksXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIEN1cnJlbmN5RGVzY3JpcHRpb246IHRoaXMudHJhbnNhY3Rpb25Eb2N1bWVudC5iYXNlQ3VycmVuY3ksXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIEluY2x1ZGVJblRyYW5zYWN0aW9uVG90YWxDaGVjazogXCIxXCIsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIEFsbG93UmVjaGFyZ2VhYmxlVm91Y2hlclNhbGVzOiBcIjFcIixcclxuICAgICAgICAgICAgICAgICAgICAgICAgT3BlbkRyYXdlckF0RW5kOiBcIjFcIlxyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICB0aGlzLnJqT2JqZWN0WydDYXNoVGVuZGVyJ10ucHVzaChvYmoxKVxyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIHRoaXM7XHJcbiAgICB9XHJcblxyXG4gICAgc2V0TGluZU51bWJlckZvclByb2R1Y3RzKCkge1xyXG4gICAgICAgIGxldCBpdGVtTGluZUlkQXJyYXkgPSBbXTtcclxuICAgICAgICBpdGVtTGluZUlkQXJyYXkgPSB0aGlzLnRyYW5zYWN0aW9uRG9jdW1lbnQuYmFza2V0LnByb2R1Y3RzLm1hcCgocHJvZHVjdDogYW55KSA9PiB7XHJcbiAgICAgICAgICAgIHJldHVybiBwYXJzZUludChwcm9kdWN0Lml0ZW1MaW5lSWQpO1xyXG4gICAgICAgIH0pXHJcbiAgICAgICAgdGhpcy5sYXJnZXN0TnVtYmVyID0gaXRlbUxpbmVJZEFycmF5LnJlZHVjZSgoYTogYW55LCBiOiBhbnkpID0+IE1hdGgubWF4KGEsIGIpKTtcclxuICAgIH1cclxuXHJcbiAgICBnZW5lcmF0ZUxpbmVOdW1iZXIoKSB7XHJcbiAgICAgICAgdGhpcy5sYXJnZXN0TnVtYmVyICs9IDE7XHJcbiAgICAgICAgdGhpcy5pdGVtQ291bnQgKz0gMTtcclxuICAgICAgICByZXR1cm4gdGhpcy5sYXJnZXN0TnVtYmVyO1xyXG4gICAgfVxyXG5cclxuICAgIGluaXRpbGl6ZUl0ZW1Db3VudCgpIHtcclxuICAgICAgICB0aGlzLml0ZW1Db3VudCA9IHRoaXMudHJhbnNhY3Rpb25Eb2N1bWVudC5iYXNrZXQucHJvZHVjdHMubGVuZ3RoO1xyXG4gICAgfVxyXG5cclxuICAgIGJ1aWxkKCkge1xyXG4gICAgICAgIHJldHVybiB0aGlzLnJqT2JqZWN0O1xyXG4gICAgfVxyXG5cclxuICAgIGdldERlc2NyaXB0aW9uKHBheW1lbnRUeXBlOiBzdHJpbmcsIGVsZW1lbnQ6IGFueSkge1xyXG4gICAgICAgIGlmIChwYXltZW50VHlwZS50b1VwcGVyQ2FzZSgpID09PSAnQ0FSRCcpIHtcclxuICAgICAgICAgICAgcmV0dXJuIGVsZW1lbnQuY2FyZFR5cGVcclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgIHJldHVybiBwYXltZW50VHlwZVxyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBzZXREZXZpY2VJbmZvKGlkOiBhbnkpIHtcclxuICAgICAgICB0aGlzLmRldmljZUlkID0gaWRcclxuICAgICAgICByZXR1cm4gdGhpc1xyXG4gICAgfVxyXG5cclxuICAgIHNldFVzZXJJbmZvKGlkOiBhbnkpIHtcclxuICAgICAgICB0aGlzLnVzZXJJZCA9IGlkO1xyXG4gICAgICAgIHJldHVybiB0aGlzXHJcbiAgICB9XHJcblxyXG4gICAgcmVtb3ZlRGVjaW1hbCh2YWx1ZTogbnVtYmVyKSB7XHJcbiAgICAgICAgcmV0dXJuIHZhbHVlICogMTAwO1xyXG4gICAgfVxyXG5cclxuICAgIHNldFRyYW5zYWN0aW9uTnVtYmVyKHZhbHVlOiBhbnkpIHtcclxuICAgICAgICB0aGlzLnRyYW5zYWN0aW9uTnVtYmVyID0gdmFsdWU7XHJcbiAgICAgICAgcmV0dXJuIHRoaXNcclxuICAgIH1cclxuXHJcbiAgICBzZXRNYW5pZmVzdFZlcnNpb24odmFsdWU6IGFueSkge1xyXG4gICAgICAgIHRoaXMubWFuaWZlc3RWZXJzaW9uID0gdmFsdWU7XHJcbiAgICAgICAgcmV0dXJuIHRoaXNcclxuICAgIH1cclxuXHJcbiAgICBzZXREYXRhYmFzZVNjaGVtYVZlcnNpb24odmFsdWU6IGFueSkge1xyXG4gICAgICAgIHRoaXMuZGF0YWJhc2VTY2hlbWFWZXJzaW9uID0gdmFsdWU7XHJcbiAgICAgICAgcmV0dXJuIHRoaXNcclxuICAgIH1cclxuXHJcbiAgICBzZXRCYXNrZXRUeXBlKHZhbHVlOiBhbnkpIHtcclxuICAgICAgICB0aGlzLmJhc2tldFR5cGUgPSB2YWx1ZTtcclxuICAgICAgICByZXR1cm4gdGhpc1xyXG4gICAgfVxyXG5cclxuICAgIHNldFRyYWRpbmdSZWdpb25JRCh2YWx1ZTogYW55KSB7XHJcbiAgICAgICAgdGhpcy50cmFkaW5nUmVnaW9uSWQgPSB2YWx1ZVxyXG4gICAgICAgIHJldHVybiB0aGlzXHJcbiAgICB9XHJcblxyXG4gICAgc2V0Q29tcGFueUlEKHZhbHVlOiBhbnkpIHtcclxuICAgICAgICB0aGlzLmNvbXBhbnlJZCA9IHZhbHVlXHJcbiAgICAgICAgcmV0dXJuIHRoaXNcclxuICAgIH1cclxuXHJcbiAgICBzZXRUYXhNZXRob2RJRCh2YWx1ZTogYW55KSB7XHJcbiAgICAgICAgdGhpcy50YXhNZXRob2RJZCA9IHZhbHVlXHJcbiAgICAgICAgcmV0dXJuIHRoaXNcclxuICAgIH1cclxuXHJcbiAgICBzZXRNYWpvclZlcnNpb24odmFsdWU6IGFueSkge1xyXG4gICAgICAgIHRoaXMubWFqb3JWZXJzaW9uID0gdmFsdWVcclxuICAgICAgICByZXR1cm4gdGhpc1xyXG4gICAgfVxyXG5cclxuICAgIHNldE1pbm9yVmVyc2lvbih2YWx1ZTogYW55KSB7XHJcbiAgICAgICAgdGhpcy5taW5vclZlcnNpb24gPSB2YWx1ZVxyXG4gICAgICAgIHJldHVybiB0aGlzXHJcbiAgICB9XHJcblxyXG4gICAgc2V0WE1MU2NoZW1hVmVyc2lvbih2YWx1ZTogYW55KSB7XHJcbiAgICAgICAgdGhpcy54bWxTY2hlbWFWZXJzaW9uID0gdmFsdWVcclxuICAgICAgICByZXR1cm4gdGhpc1xyXG4gICAgfVxyXG5cclxuICAgIHNldEV4dGVybmFsU3RhdGUodmFsdWU6IGFueSkge1xyXG4gICAgICAgIHRoaXMuZXh0ZXJuYWxTdGF0ZSA9IHZhbHVlXHJcbiAgICAgICAgcmV0dXJuIHRoaXNcclxuICAgIH1cclxuXHJcbiAgICBzZXRDYXNoaWVySUQodmFsdWU6IGFueSkge1xyXG4gICAgICAgIHRoaXMuY2FzaGllcklkID0gKHRoaXMudHJhbnNhY3Rpb25Eb2N1bWVudCAmJiB0aGlzLnRyYW5zYWN0aW9uRG9jdW1lbnQudXNlck5hbWUpID8gIHRoaXMudHJhbnNhY3Rpb25Eb2N1bWVudC51c2VyTmFtZSA6ICcnO1xyXG4gICAgICAgIHJldHVybiB0aGlzXHJcbiAgICB9XHJcblxyXG4gICAgc2V0VGVybWluYWxOdW1iZXIodmFsdWU6IGFueSkge1xyXG4gICAgICAgIHRoaXMudGVybWluYWxOdW1iZXIgPSB2YWx1ZTtcclxuICAgICAgICByZXR1cm4gdGhpcztcclxuICAgIH1cclxuXHJcbiAgICBzZXRCYXNrZXRMYW5ndWFnZUlEKHZhbHVlOiBhbnkpIHtcclxuICAgICAgICB0aGlzLmJhc2tldExhbmd1YWdlSWQgPSB2YWx1ZTtcclxuICAgICAgICByZXR1cm4gdGhpcztcclxuICAgIH1cclxuICAgIHNldEJhc2tldENvdW50cnlJRCh2YWx1ZTogYW55KSB7XHJcbiAgICAgICAgdGhpcy5iYXNrZXRDb3VudHJ5SWQgPSB2YWx1ZTtcclxuICAgICAgICByZXR1cm4gdGhpcztcclxuICAgIH1cclxuXHJcbiAgICBzZXRCYXNrZXRDdXJyZW5jeUlEKHZhbHVlOiBhbnkpIHtcclxuICAgICAgICB0aGlzLmJhc2tldEN1cnJlbmN5SWQgPSB2YWx1ZTtcclxuICAgICAgICByZXR1cm4gdGhpcztcclxuICAgIH1cclxuXHJcbiAgICBzZXRCcmFuY2hJRCh2YWx1ZTogYW55KSB7XHJcbiAgICAgICAgdGhpcy5icmFuY2hJZCA9IHZhbHVlO1xyXG4gICAgICAgIHJldHVybiB0aGlzO1xyXG4gICAgfVxyXG5cclxuICAgIHNldFBheW1lbnREZXRhaWxzKHZhbHVlOmFueSl7XHJcbiAgICAgICAgdGhpcy5wYXltZW50VHlwZXMgPSB2YWx1ZTtcclxuICAgICAgICByZXR1cm4gdGhpcztcclxuICAgIH1cclxuXHJcbiAgICBnZW5lcmF0ZUlkKGRhdGU6IGFueSkge1xyXG4gICAgICAgIGxldCBuZXdEYXRlVGltZSA9IGRhdGUucmVwbGFjZSgvW14wLTldL2csICcnKVxyXG4gICAgICAgIGxldCBpZCA9ICh0aGlzLmRldmljZUlkICsgJ3wnICsgbmV3RGF0ZVRpbWUgKyAnfCcgKyB0aGlzLnRyYW5zYWN0aW9uTnVtYmVyKS50b1N0cmluZygpO1xyXG4gICAgICAgIHJldHVybiBpZDtcclxuICAgIH0gXHJcblxyXG4gICAgZ2VuZXJhdGVUaW1lem9uZW9mZnNldChkYXRlOiBhbnkpIHtcclxuICAgICAgICBsZXQgeCA9IGRhdGUgPyBkYXRlIDogJyc7XHJcbiAgICAgICAgcmV0dXJuIG5ldyBEYXRlKHgpLmdldFRpbWV6b25lT2Zmc2V0KCk7XHJcbiAgICB9XHJcblxyXG4gICAgZ2VuZXJhdGVLZXl3b3JkKCkge1xyXG4gICAgICAgIGxldCB4ID0gKHRoaXMuY29tcGFueUlkICsgJ3wnICsgdGhpcy50cmFuc2FjdGlvbkRvY3VtZW50LnN0b3JlSWQgKyAnfCcgKyB0aGlzLnRlcm1pbmFsTnVtYmVyICsgJ3wnICsgdGhpcy50cmFuc2FjdGlvbk51bWJlcikudG9TdHJpbmcoKTtcclxuICAgICAgICByZXR1cm4geDtcclxuICAgIH1cclxuXHJcbiAgICBnZXRTdGF0ZSgpIHtcclxuICAgICAgICBpZiAodGhpcy50cmFuc2FjdGlvbkRvY3VtZW50Lm9wZXJhdGlvblN0YXR1cyA9PT0gJ1BBWV9TVUNDRVNTJykge1xyXG4gICAgICAgICAgICByZXR1cm4gJ0NvbXBsZXRlZCc7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICByZXR1cm4gJ0NhbmNlbGxlZCc7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIHJldHVyblByb2R1Y3QoZWxlbWVudDogYW55LCBsaW5lRGlzY291bnQ6IExpbmVEaXNjb3VudCkge1xyXG4gICAgICAgIGxldCBvYmo6IGFueSA9IHt9XHJcbiAgICAgICAgbGV0IHRheFRvdGFsID0gdGhpcy50cmFuc2FjdGlvbkRvY3VtZW50LmJhc2tldFsndGF4QnJlYWtkb3duJ11bJ3RheExpbmVzJ10uZmluZCgoaXRlbTogYW55KSA9PiBpdGVtLml0ZW1MaW5lSWQgPT0gZWxlbWVudFsnaXRlbUxpbmVJZCddKTtcclxuICAgICAgICBvYmpbJ1hNTFNjaGVtYVZlcnNpb24nXSA9IHRoaXMueG1sU2NoZW1hVmVyc2lvbjtcclxuICAgICAgICBvYmpbJ0xpbmVOdW1iZXInXSA9IGVsZW1lbnRbJ2l0ZW1MaW5lSWQnXTtcclxuICAgICAgICBvYmpbJ05ldFZhbHVlJ10gPSB0aGlzLnJlbW92ZURlY2ltYWwoZWxlbWVudFsncmVmdW5kZWRUb3RhbCddKTtcclxuICAgICAgICBvYmpbJ0VmZmVjdGl2ZU5ldFZhbHVlJ10gPSB0aGlzLnJlbW92ZURlY2ltYWwoZWxlbWVudFsncmVmdW5kZWRUb3RhbCddKTtcclxuICAgICAgICBvYmpbJ0Rlc2NyaXB0aW9uJ10gPSBlbGVtZW50WydkZXNjcmlwdGlvbiddO1xyXG4gICAgICAgIG9ialsnRGV2aWNlSUQnXSA9IHRoaXMudHJhbnNhY3Rpb25Eb2N1bWVudFsndGVybWluYWxJZCddO1xyXG4gICAgICAgIG9ialsnVXNlcklEJ10gPSB0aGlzLnVzZXJJZDtcclxuICAgICAgICBvYmpbJ0RhdGVUaW1lQ3JlYXRlZCddID0gdGhpcy5jcmVhdGVkQXQ7XHJcbiAgICAgICAgb2JqWydFeHRlbmRlZFZhbHVlJ10gPSB0aGlzLnJlbW92ZURlY2ltYWwoZWxlbWVudFsndG90YWxMaW5lUHJpY2UnXSotMSk7XHJcbiAgICAgICAgb2JqWydVbml0UHJpY2UnXSA9IHRoaXMucmVtb3ZlRGVjaW1hbChlbGVtZW50WydwcmljZSddKTtcclxuICAgICAgICBvYmpbJ1F1YW50aXR5J10gPSBlbGVtZW50WydyZWZ1bmRlZFF1YW50aXR5J10gPCAwID8gZWxlbWVudFsncmVmdW5kZWRRdWFudGl0eSddLnRvRml4ZWQoMSkgOiAtZWxlbWVudFsncmVmdW5kZWRRdWFudGl0eSddLnRvRml4ZWQoMSk7XHJcbiAgICAgICAgb2JqWydPcmlnaW5hbFRheEFtb3VudFNldCddID0gMTtcclxuICAgICAgICBvYmpbJ1Byb2R1Y3RJRCddID0gZWxlbWVudFsnU0tVJ107XHJcbiAgICAgICAgb2JqWydIYW5kS2V5ZWQnXSA9IDE7XHJcbiAgICAgICAgb2JqWydMb25nRGVzY3JpcHRpb24nXSA9IGVsZW1lbnRbJ2Rlc2NyaXB0aW9uJ107XHJcbiAgICAgICAgb2JqWydSZXR1cm4nXSA9IHt9O1xyXG4gICAgICAgIG9ialsnUmV0dXJuJ11bJ1JldHVyblJlYXNvbklEJ10gPSBlbGVtZW50WydyZWZ1bmRlZFJlYXNvbiddO1xyXG4gICAgICAgIG9ialsnUmV0dXJuJ11bJ1JldHVybkRlc2NyaXB0aW9uJ10gPSBlbGVtZW50WydyZWZ1bmRlZFJlYXNvbkRlc2NyaXB0aW9uJ107XHJcbiAgICAgICAgb2JqWydSZXR1cm4nXVsnUmV0dXJuVG9TdG9jayddID0gZWxlbWVudFsncmVmdW5kZWRRdWFudGl0eSddID4gMCA/IGVsZW1lbnRbJ3JlZnVuZGVkUXVhbnRpdHknXS50b0ZpeGVkKDEpIDogLTEgKiBlbGVtZW50WydyZWZ1bmRlZFF1YW50aXR5J10udG9GaXhlZCgxKTtcclxuICAgICAgICBvYmpbJ1RheENvZGUnXSA9IHRoaXMudHJhbnNhY3Rpb25Eb2N1bWVudC5iYXNrZXRbJ3RheEJyZWFrZG93biddWyd0YXhMaW5lcyddLmZpbmQoKGl0ZW06IGFueSkgPT4gaXRlbS5pdGVtTGluZUlkID09IGVsZW1lbnRbJ2l0ZW1MaW5lSWQnXSkuVkFUQ29kZTtcclxuXHJcbiAgICAgICAgb2JqWydEaXNwbGF5VGF4Q29kZSddID0gJyc7IC8vIHRvZG9cclxuICAgICAgICBvYmpbJ1Byb2R1Y3RBdHRyaWJ1dGVzJ10gPSAnJzsgLy90b2RvIC0gbm90IHJlcXVpcmVkXHJcbiAgICAgICAgb2JqWydQZXJpc2hhYmxlJ10gPSB0aGlzLmdldEF0dHJpYnV0ZXMoKTtcclxuICAgICAgICBvYmpbJ01NR3JvdXBJRCddID0gdGhpcy5nZXRBdHRyaWJ1dGVzKCk7XHJcbiAgICAgICAgb2JqWydDdXN0b21lckRldGFpbHMnXSA9IFwiXCI7IC8vIHRvZG8gLSBibGFua1xyXG4gICAgICAgIG9ialsnVG90YWxQcm9tb3Rpb25TYXZpbmcnXSA9IGVsZW1lbnRbJ3Byb21vdGlvbkFtb3VudCddIHx8IC0xOyAvLyBUT0RPXHJcbiAgICAgICAgb2JqWydPcmlnaW5hbFRheEFtb3VudCddID0gdGhpcy5jb252ZXJ0VG9TdHJpbmcodGhpcy5nZXRvcmlnaW5sdGF4KGVsZW1lbnQsdGF4VG90YWwuVkFUKSAqIC0xKVxyXG4gICAgICAgIG9ialsndGF4QW1vdW50J10gPSB0YXhUb3RhbC50YXhMaW5lVG90YWwgPCAwID8odGF4VG90YWwudGF4TGluZVRvdGFsKSA6ICgtdGF4VG90YWwudGF4TGluZVRvdGFsKTtcclxuXHJcbiAgICAgICAgaWYgKGxpbmVEaXNjb3VudCkge1xyXG4gICAgICAgICAgICBpZiAobGluZURpc2NvdW50LnBlcmNlbnRhZ2VEaXNjb3VudFJlYXNvbk5hbWUgJiYgbGluZURpc2NvdW50LnBlcmNlbnRhZ2VEaXNjb3VudFJlYXNvbkNvZGUpIHtcclxuICAgICAgICAgICAgICAgIC8vIGxpbmUgZGlzY291bnRcclxuICAgICAgICAgICAgICAgIG9ialsnRGlzY291bnQnXSA9IHt9O1xyXG4gICAgICAgICAgICAgICAgb2JqWydEaXNjb3VudCddLk1vZGlmaWVyVmFsdWUgPSB0aGlzLnJlbW92ZURlY2ltYWwobGluZURpc2NvdW50LnVuaXRQcmljZSkgKiAtMTtcclxuICAgICAgICAgICAgICAgIG9ialsnRGlzY291bnQnXS5Nb2RpZmllckRhdGVUaW1lID0gb2JqLkRhdGVUaW1lQ3JlYXRlZDtcclxuICAgICAgICAgICAgICAgIG9ialsnRGlzY291bnQnXS5Nb2RpZmllclJlYXNvbklEID0gbGluZURpc2NvdW50LnBlcmNlbnRhZ2VEaXNjb3VudFJlYXNvbkNvZGU7XHJcbiAgICAgICAgICAgICAgICBvYmpbJ0Rpc2NvdW50J10uTW9kaWZpZXJEZXNjcmlwdGlvbiA9IGxpbmVEaXNjb3VudC5wZXJjZW50YWdlRGlzY291bnRSZWFzb25OYW1lO1xyXG4gICAgICAgICAgICAgICAgb2JqWydEaXNjb3VudCddLkF1dGhvcmlzaW5nVXNlcklEID0gdGhpcy51c2VySWQ7XHJcbiAgICAgICAgICAgICAgICBvYmpbJ0Rpc2NvdW50J10uRGlzY291bnRUeXBlID0gbGluZURpc2NvdW50LmRpc2NvdW50VHlwZTtcclxuICAgICAgICAgICAgICAgIG9ialsnRGlzY291bnQnXS5YTUxTY2hlbWFWZXJzaW9uID0gMTtcclxuICAgICAgICAgICAgICAgIG9ialsnRGlzY291bnQnXS5PcmlnaW5hbFByaWNlID0gdGhpcy5yZW1vdmVEZWNpbWFsKGxpbmVEaXNjb3VudC5kaXNjb3VudEFtb3VudCArIChsaW5lRGlzY291bnQuZGlzY291bnRlZExpbmVQcmljZSB8fCAwKSk7XHJcbiAgICAgICAgICAgICAgICBvYmpbJ0Rpc2NvdW50J10uRGlzY291bnRlZFZhbHVlID0gdGhpcy5yZW1vdmVEZWNpbWFsKGxpbmVEaXNjb3VudC51bml0UHJpY2UpO1xyXG4gICAgICAgICAgICAgICAgb2JqWydEaXNjb3VudCddLkRpc2NvdW50UGVyY2VudGFnZSA9IGxpbmVEaXNjb3VudC5wZXJjZW50YWdlRGlzY291bnRWYWx1ZTtcclxuICAgICAgICAgICAgICAgIG9ialsnRGlzY291bnQnXS5Sb3VuZGluZ1J1bGUgPSAyO1xyXG4gICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICBpZiAobGluZURpc2NvdW50LnByaWNlT3ZlcnJpZGVSZWFzb25Db2RlICYmIGxpbmVEaXNjb3VudC5wcmljZU92ZXJyaWRlUmVhc29uTmFtZSkge1xyXG4gICAgICAgICAgICAgICAgLy9wcmljZSBvdmVycmlkZVxyXG4gICAgICAgICAgICAgICAgb2JqWydQcmljZU92ZXJyaWRlJ10gPSB7fTtcclxuICAgICAgICAgICAgICAgIG9ialsnUHJpY2VPdmVycmlkZSddLk1vZGlmaWVyVmFsdWUgPSB0aGlzLnJlbW92ZURlY2ltYWwobGluZURpc2NvdW50LmRpc2NvdW50QW1vdW50KSAqIC0xO1xyXG4gICAgICAgICAgICAgICAgb2JqWydQcmljZU92ZXJyaWRlJ10uTW9kaWZpZXJEYXRlVGltZSA9IG9iai5EYXRlVGltZUNyZWF0ZWQ7XHJcbiAgICAgICAgICAgICAgICBvYmpbJ1ByaWNlT3ZlcnJpZGUnXS5Nb2RpZmllclJlYXNvbklEID0gbGluZURpc2NvdW50LnByaWNlT3ZlcnJpZGVSZWFzb25Db2RlO1xyXG4gICAgICAgICAgICAgICAgb2JqWydQcmljZU92ZXJyaWRlJ10uTW9kaWZpZXJSZWFzb25EZXNjcmlwdGlvbiA9IGxpbmVEaXNjb3VudC5wcmljZU92ZXJyaWRlUmVhc29uTmFtZTtcclxuICAgICAgICAgICAgICAgIG9ialsnUHJpY2VPdmVycmlkZSddLkF1dGhvcmlzaW5nVXNlcklEID0gdGhpcy51c2VySWQ7XHJcbiAgICAgICAgICAgICAgICBvYmpbJ1ByaWNlT3ZlcnJpZGUnXS5YTUxTY2hlbWFWZXJzaW9uID0gMTtcclxuICAgICAgICAgICAgICAgIG9ialsnUHJpY2VPdmVycmlkZSddLk5ld1ByaWNlID0gdGhpcy5yZW1vdmVEZWNpbWFsKGxpbmVEaXNjb3VudC51bml0UHJpY2UpO1xyXG4gICAgICAgICAgICAgICAgb2JqWydQcmljZU92ZXJyaWRlJ10uT3JpZ2luYWxQcmljZSA9IHRoaXMucmVtb3ZlRGVjaW1hbChsaW5lRGlzY291bnQuZGlzY291bnRlZExpbmVQcmljZSB8fCAwICsgbGluZURpc2NvdW50LmRpc2NvdW50QW1vdW50KTtcclxuICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgLy91cGRhdGUgdGhlIHByb2R1Y3QgcHJpY2VcclxuICAgICAgICAgICAgb2JqLk5ldFZhbHVlID0gKChsaW5lRGlzY291bnQuZGlzY291bnRlZExpbmVQcmljZSB8fCAwKSArIGxpbmVEaXNjb3VudC5kaXNjb3VudEFtb3VudCkgKiAtMTtcclxuICAgICAgICAgICAgb2JqLkVmZmVjdGl2ZU5ldFZhbHVlID0gKChsaW5lRGlzY291bnQuZGlzY291bnRlZExpbmVQcmljZSB8fCAwKSArIGxpbmVEaXNjb3VudC5kaXNjb3VudEFtb3VudCkgKiAtMTtcclxuICAgICAgICAgICAgb2JqLkV4dGVuZGVkVmFsdWUgPSAoKGxpbmVEaXNjb3VudC5kaXNjb3VudGVkTGluZVByaWNlIHx8IDApICsgbGluZURpc2NvdW50LmRpc2NvdW50QW1vdW50KSAqIC0xO1xyXG4gICAgICAgICAgICBvYmouVW5pdFByaWNlID0gKChsaW5lRGlzY291bnQuZGlzY291bnRlZExpbmVQcmljZSB8fCAwKSArIGxpbmVEaXNjb3VudC5kaXNjb3VudEFtb3VudCkgKiAtMTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIHJldHVybiBvYmo7XHJcbiAgICB9XHJcblxyXG4gICAgYWRkUHJvZHVjdChlbGVtZW50OiBUUHJvZHVjdCwgbGluZURpc2NvdW50OiBMaW5lRGlzY291bnQpIHtcclxuICAgICAgICBsZXQgdGF4VG90YWwgPSB0aGlzLnRyYW5zYWN0aW9uRG9jdW1lbnQuYmFza2V0Wyd0YXhCcmVha2Rvd24nXVsndGF4TGluZXMnXS5maW5kKChpdGVtOiBhbnkpID0+IGl0ZW0uaXRlbUxpbmVJZCA9PSBlbGVtZW50WydpdGVtTGluZUlkJ10pO1xyXG4gICAgICAgIGxldCBvYmo6IGFueSA9IHtcclxuICAgICAgICAgICAgWE1MU2NoZW1hVmVyc2lvbjogdGhpcy54bWxTY2hlbWFWZXJzaW9uLFxyXG4gICAgICAgICAgICBMaW5lTnVtYmVyOiBlbGVtZW50Lml0ZW1MaW5lSWQsXHJcbiAgICAgICAgICAgIE5ldFZhbHVlOiB0aGlzLnJlbW92ZURlY2ltYWwoZWxlbWVudC50b3RhbExpbmVQcmljZSksXHJcbiAgICAgICAgICAgIEVmZmVjdGl2ZU5ldFZhbHVlOiB0aGlzLnJlbW92ZURlY2ltYWwoZWxlbWVudC50b3RhbExpbmVQcmljZSksXHJcbiAgICAgICAgICAgIERlc2NyaXB0aW9uOiBlbGVtZW50LmRlc2NyaXB0aW9uLFxyXG4gICAgICAgICAgICBEZXZpY2VJRDogdGhpcy5kZXZpY2VJZCxcclxuICAgICAgICAgICAgVXNlcklEOiB0aGlzLnRyYW5zYWN0aW9uRG9jdW1lbnQudXNlck5hbWUsXHJcbiAgICAgICAgICAgIERhdGVUaW1lQ3JlYXRlZDogdGhpcy5jcmVhdGVkQXQsXHJcbiAgICAgICAgICAgIEV4dGVuZGVkVmFsdWU6IHRoaXMucmVtb3ZlRGVjaW1hbChlbGVtZW50LnByaWNlKSxcclxuICAgICAgICAgICAgVW5pdFByaWNlOiB0aGlzLnJlbW92ZURlY2ltYWwoZWxlbWVudC5wcmljZSksXHJcbiAgICAgICAgICAgIE1NR3JvdXBJRDogdGhpcy5nZXRBdHRyaWJ1dGVzKCksIC8vdG9kb1xyXG4gICAgICAgICAgICBRdWFudGl0eTogZWxlbWVudC5xdWFudGl0eS50b0ZpeGVkKDEpLFxyXG4gICAgICAgICAgICBTYWxlc3BlcnNvbklEOiB0aGlzLnRyYW5zYWN0aW9uRG9jdW1lbnQudXNlcklkLFxyXG4gICAgICAgICAgICBTYWxlc3BlcnNvbk5hbWU6IHRoaXMudHJhbnNhY3Rpb25Eb2N1bWVudC51c2VyTmFtZSxcclxuICAgICAgICAgICAgVGF4Q29kZTogdGhpcy50cmFuc2FjdGlvbkRvY3VtZW50LmJhc2tldFsndGF4QnJlYWtkb3duJ11bJ3RheExpbmVzJ10uZmluZCgoaXRlbTogYW55KSA9PiBpdGVtLml0ZW1MaW5lSWQgPT0gZWxlbWVudFsnaXRlbUxpbmVJZCddKS5WQVRDb2RlLFxyXG4gICAgICAgICAgICBUYXhNb2RpZmlhYmxlOiAxLCAvL3RvZG9cclxuICAgICAgICAgICAgT3JpZ2luYWxUYXhBbW91bnQgOiAgdGhpcy5jb252ZXJ0VG9TdHJpbmcodGhpcy5nZXRvcmlnaW5sdGF4KGVsZW1lbnQsdGF4VG90YWwuVkFUKSksXHJcbiAgICAgICAgICAgIFRheEFtb3VudCA6ICB0aGlzLmNvbnZlcnRUb1N0cmluZyh0YXhUb3RhbC50YXhMaW5lVG90YWwpLFxyXG4gICAgICAgICAgICBPcmlnaW5hbFRheEFtb3VudFNldDogMSwvL3RvZG9cclxuICAgICAgICAgICAgUHJvZHVjdElEOiBlbGVtZW50LlNLVSxcclxuICAgICAgICAgICAgSGFuZEtleWVkOiAxLC8vdG9kb1xyXG4gICAgICAgICAgICBDdXN0b21lckRldGFpbHM6IFwiXCIsXHJcbiAgICAgICAgICAgIFBlcmlzaGFibGU6IHRoaXMuZ2V0QXR0cmlidXRlcygpXHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmIChsaW5lRGlzY291bnQpIHtcclxuICAgICAgICAgICAgaWYgKGxpbmVEaXNjb3VudC5wZXJjZW50YWdlRGlzY291bnRSZWFzb25OYW1lICYmIGxpbmVEaXNjb3VudC5wZXJjZW50YWdlRGlzY291bnRSZWFzb25Db2RlKSB7XHJcbiAgICAgICAgICAgICAgICAvLyBsaW5lIGRpc2NvdW50XHJcbiAgICAgICAgICAgICAgICBvYmpbJ0Rpc2NvdW50J10gPSB7fTtcclxuICAgICAgICAgICAgICAgIG9ialsnRGlzY291bnQnXS5Nb2RpZmllclZhbHVlID0gdGhpcy5yZW1vdmVEZWNpbWFsKGxpbmVEaXNjb3VudC51bml0UHJpY2UpICogLTE7XHJcbiAgICAgICAgICAgICAgICBvYmpbJ0Rpc2NvdW50J10uTW9kaWZpZXJEYXRlVGltZSA9IG9iai5EYXRlVGltZUNyZWF0ZWQ7XHJcbiAgICAgICAgICAgICAgICBvYmpbJ0Rpc2NvdW50J10uTW9kaWZpZXJSZWFzb25JRCA9IGxpbmVEaXNjb3VudC5wZXJjZW50YWdlRGlzY291bnRSZWFzb25Db2RlO1xyXG4gICAgICAgICAgICAgICAgb2JqWydEaXNjb3VudCddLk1vZGlmaWVyRGVzY3JpcHRpb24gPSBsaW5lRGlzY291bnQucGVyY2VudGFnZURpc2NvdW50UmVhc29uTmFtZTtcclxuICAgICAgICAgICAgICAgIG9ialsnRGlzY291bnQnXS5BdXRob3Jpc2luZ1VzZXJJRCA9IHRoaXMudXNlcklkO1xyXG4gICAgICAgICAgICAgICAgb2JqWydEaXNjb3VudCddLkRpc2NvdW50VHlwZSA9IGxpbmVEaXNjb3VudC5kaXNjb3VudFR5cGU7XHJcbiAgICAgICAgICAgICAgICBvYmpbJ0Rpc2NvdW50J10uWE1MU2NoZW1hVmVyc2lvbiA9IDE7XHJcbiAgICAgICAgICAgICAgICBvYmpbJ0Rpc2NvdW50J10uT3JpZ2luYWxQcmljZSA9IHRoaXMucmVtb3ZlRGVjaW1hbChsaW5lRGlzY291bnQuZGlzY291bnRBbW91bnQgKyAobGluZURpc2NvdW50LmRpc2NvdW50ZWRMaW5lUHJpY2UgfHwgMCkpO1xyXG4gICAgICAgICAgICAgICAgb2JqWydEaXNjb3VudCddLkRpc2NvdW50ZWRWYWx1ZSA9IHRoaXMucmVtb3ZlRGVjaW1hbChsaW5lRGlzY291bnQudW5pdFByaWNlKTtcclxuICAgICAgICAgICAgICAgIG9ialsnRGlzY291bnQnXS5EaXNjb3VudFBlcmNlbnRhZ2UgPSBsaW5lRGlzY291bnQucGVyY2VudGFnZURpc2NvdW50VmFsdWU7XHJcbiAgICAgICAgICAgICAgICBvYmpbJ0Rpc2NvdW50J10uUm91bmRpbmdSdWxlID0gMjtcclxuICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgaWYgKGxpbmVEaXNjb3VudC5wcmljZU92ZXJyaWRlUmVhc29uQ29kZSAmJiBsaW5lRGlzY291bnQucHJpY2VPdmVycmlkZVJlYXNvbk5hbWUpIHtcclxuICAgICAgICAgICAgICAgIC8vcHJpY2Ugb3ZlcnJpZGVcclxuICAgICAgICAgICAgICAgIG9ialsnUHJpY2VPdmVycmlkZSddID0ge307XHJcbiAgICAgICAgICAgICAgICBvYmpbJ1ByaWNlT3ZlcnJpZGUnXS5Nb2RpZmllclZhbHVlID0gdGhpcy5yZW1vdmVEZWNpbWFsKGxpbmVEaXNjb3VudC5kaXNjb3VudEFtb3VudCkgKiAtMTtcclxuICAgICAgICAgICAgICAgIG9ialsnUHJpY2VPdmVycmlkZSddLk1vZGlmaWVyRGF0ZVRpbWUgPSBvYmouRGF0ZVRpbWVDcmVhdGVkO1xyXG4gICAgICAgICAgICAgICAgb2JqWydQcmljZU92ZXJyaWRlJ10uTW9kaWZpZXJSZWFzb25JRCA9IGxpbmVEaXNjb3VudC5wcmljZU92ZXJyaWRlUmVhc29uQ29kZTtcclxuICAgICAgICAgICAgICAgIG9ialsnUHJpY2VPdmVycmlkZSddLk1vZGlmaWVyUmVhc29uRGVzY3JpcHRpb24gPSBsaW5lRGlzY291bnQucHJpY2VPdmVycmlkZVJlYXNvbk5hbWU7XHJcbiAgICAgICAgICAgICAgICBvYmpbJ1ByaWNlT3ZlcnJpZGUnXS5BdXRob3Jpc2luZ1VzZXJJRCA9IHRoaXMudXNlcklkO1xyXG4gICAgICAgICAgICAgICAgb2JqWydQcmljZU92ZXJyaWRlJ10uWE1MU2NoZW1hVmVyc2lvbiA9IDE7XHJcbiAgICAgICAgICAgICAgICBvYmpbJ1ByaWNlT3ZlcnJpZGUnXS5OZXdQcmljZSA9IHRoaXMucmVtb3ZlRGVjaW1hbChsaW5lRGlzY291bnQudW5pdFByaWNlKTtcclxuICAgICAgICAgICAgICAgIG9ialsnUHJpY2VPdmVycmlkZSddLk9yaWdpbmFsUHJpY2UgPSB0aGlzLnJlbW92ZURlY2ltYWwobGluZURpc2NvdW50LmRpc2NvdW50ZWRMaW5lUHJpY2UgfHwgMCArIGxpbmVEaXNjb3VudC5kaXNjb3VudEFtb3VudCk7XHJcbiAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgIC8vdXBkYXRlIHRoZSBwcm9kdWN0IHByaWNlXHJcbiAgICAgICAgICAgIG9ialsnTmV0VmFsdWUnXSA9ICgobGluZURpc2NvdW50LmRpc2NvdW50ZWRMaW5lUHJpY2UgfHwgMCkgKyBsaW5lRGlzY291bnQuZGlzY291bnRBbW91bnQpO1xyXG4gICAgICAgICAgICBvYmpbJ0VmZmVjdGl2ZU5ldFZhbHVlJ10gPSAoKGxpbmVEaXNjb3VudC5kaXNjb3VudGVkTGluZVByaWNlIHx8IDApICsgbGluZURpc2NvdW50LmRpc2NvdW50QW1vdW50KTtcclxuICAgICAgICAgICAgb2JqWydFeHRlbmRlZFZhbHVlJ10gPSAoKGxpbmVEaXNjb3VudC5kaXNjb3VudGVkTGluZVByaWNlIHx8IDApICsgbGluZURpc2NvdW50LmRpc2NvdW50QW1vdW50KTtcclxuICAgICAgICAgICAgb2JqWydVbml0UHJpY2UnXSA9ICgobGluZURpc2NvdW50LmRpc2NvdW50ZWRMaW5lUHJpY2UgfHwgMCkgKyBsaW5lRGlzY291bnQuZGlzY291bnRBbW91bnQpO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgcmV0dXJuIG9iajtcclxuICAgIH1cclxuXHJcbiAgICBnZXRvcmlnaW5sdGF4KGVsZW1lbnQ6IFRQcm9kdWN0LCBWQVQpIHtcclxuICAgICAgICBsZXQgcHJpY2ViZWZvcmV0YXggPSAoZWxlbWVudC5wcmljZSAqIDEwMCkvKDEwMCArIFZBVCApXHJcbiAgICAgICAgbGV0IG9yaWdpbmFsdGF4PSBlbGVtZW50LnByaWNlIC0gcHJpY2ViZWZvcmV0YXhcclxuICAgICAgICByZXR1cm4gb3JpZ2luYWx0YXg7XHJcbiAgICB9XHJcblxyXG4gICAgY29udmVydFRvU3RyaW5nKHZhbHVlOiBhbnkpIHtcclxuICAgICAgICB0cnkge1xyXG4gICAgICAgICAgICB2YWx1ZSA9IEpTT04uc3RyaW5naWZ5KHZhbHVlKTtcclxuICAgICAgICAgICAgcmV0dXJuIHZhbHVlO1xyXG4gICAgICAgIH1cclxuICAgICAgICBjYXRjaCAoZSkge1xyXG4gICAgICAgICAgICBjb25zb2xlLmxvZyh2YWx1ZSwgJyBjYW4gbm90IGJlIGNvbnZlcnRlZCBpbiBzdHJpbmcnLCBlKTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgZ2VuZXJhdGVEeW5hbWljU3RvY2tMb29rVXAoKSB7XHJcbiAgICAgICAgbGV0IHggPSAnMCc7XHJcbiAgICAgICAgdGhpcy50cmFuc2FjdGlvbkRvY3VtZW50LmJhc2tldC5wcm9kdWN0cy5mb3JFYWNoKChlbGVtZW50OiBhbnkpID0+IHtcclxuICAgICAgICAgICAgaWYgKGVsZW1lbnQuZGVsaXZlcnlNZXRob2QgPT09ICcxJyB8fCBlbGVtZW50LmRlbGl2ZXJ5TWV0aG9kID09PSAnMicpIHtcclxuICAgICAgICAgICAgICAgIHggPSAnMSc7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9KTtcclxuICAgICAgICByZXR1cm4geDtcclxuICAgIH1cclxuXHJcbiAgICBnZXRBdHRyaWJ1dGVzKCl7XHJcbiAgICAgICAgbGV0IG5hbWU6IHN0cmluZyB8IGFueVtdID0gW11cclxuICAgICAgICB0aGlzLnRyYW5zYWN0aW9uRG9jdW1lbnQuYmFza2V0LnByb2R1Y3RzLmZvckVhY2goKGVsZW1lbnQ6IGFueSkgPT4ge1xyXG4gICAgICAgICAgICBpZiAoIGVsZW1lbnQuYXR0cmlidXRlcyAmJiBlbGVtZW50LmF0dHJpYnV0ZXMubGVuZ3RoID4gMCkge1xyXG4gICAgICAgICAgICAgICAgbmFtZSA9IGVsZW1lbnQuYXR0cmlidXRlcy5maWx0ZXIoKHg6IGFueSkgPT4geC5uYW1lLnRvVXBwZXJDYXNlKCkgPT09IGVsZW1lbnQubmFtZS50b1VwcGVyQ2FzZSgpKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH0pO1xyXG4gICAgICAgIGlmIChuYW1lLmxlbmd0aCA+IDApIHtcclxuICAgICAgICAgICAgcmV0dXJuIG5hbWVbMF0udmFsdWVcclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZXtcclxuICAgICAgICAgICAgcmV0dXJuIFwiXCJcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgZ2V0ZGF0ZShkYXRlOnN0cmluZyl7XHJcbiAgICAgICAgbGV0IG9mZnNldCA9IHRoaXMuZ2VuZXJhdGVUaW1lem9uZW9mZnNldChkYXRlKSAqIC0xO1xyXG4gICAgICAgIGxldCBvZmZzZXRIb3VycyA9IE1hdGguYWJzKE1hdGguZmxvb3Iob2Zmc2V0IC8gNjApKTsgICAgICAgIFxyXG5cdCAgICBsZXQgb2Zmc2V0TWludXRlcyA9IE1hdGguYWJzKG9mZnNldCkgLSBvZmZzZXRIb3VycyAqIDYwO1xyXG5cclxuICAgICAgICBsZXQgb2Zmc2V0U2lnbiA9ICcrJztcclxuICAgICAgICBpZiAob2Zmc2V0IDwgMCkge1xyXG4gICAgICAgICAgICBvZmZzZXRTaWduID0gJy0nO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgbGV0IG5ld2RhdGUgPSBkYXRlLnN1YnN0cmluZygwLDE5KTtcclxuICAgICAgICBsZXQgeCA9IChuZXdkYXRlKyBvZmZzZXRTaWduICtvZmZzZXRIb3VycysnOicrb2Zmc2V0TWludXRlcykudG9TdHJpbmcoKTtcclxuICAgICAgICByZXR1cm4geDsgICAgICAgIFxyXG4gICAgfVxyXG4gICAgXHJcbn0iXX0=
|
|
1288
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiUkotbWFwcGVyLmNsYXNzLmpzIiwic291cmNlUm9vdCI6Im5nOi8vQHBtY3JldGFpbC9tYXBwZXItbGlicmFyeS8iLCJzb3VyY2VzIjpbImxpYi9SSi1tYXBwZXIuY2xhc3MudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBQUEsT0FBTyxFQUFFLFlBQVksRUFBK0MsZ0JBQWdCLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQTtBQUNwSCxPQUFPLEVBQUUsMEJBQTBCLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQztBQUMxRTtJQTZCSSw4QkFBWSxjQUFvQztRQVR4QyxjQUFTLEdBQUcsQ0FBQyxDQUFDO1FBQ2Qsa0JBQWEsR0FBRyxDQUFDLENBQUM7UUFJbEIsYUFBUSxHQUFRLEVBQUUsQ0FBQTtRQUt0QixJQUFJLGNBQWMsRUFBRTtZQUNoQixJQUFJLENBQUMsbUJBQW1CLEdBQUcsY0FBYyxDQUFDO1NBQzdDO2FBQU07WUFDSCxJQUFJLENBQUMsbUJBQW1CLEdBQUc7Z0JBQ3ZCLGFBQWEsRUFBRSxFQUFFO2dCQUNqQixvQkFBb0IsRUFBRSxFQUFFO2dCQUN4QixjQUFjLEVBQUUsRUFBRTtnQkFDbEIsUUFBUSxFQUFFLEVBQUU7Z0JBQ1osT0FBTyxFQUFFLEVBQUU7Z0JBQ1gsT0FBTyxFQUFFLEVBQUU7Z0JBQ1gsV0FBVyxFQUFFLEVBQUU7Z0JBQ2Ysa0JBQWtCLEVBQUUsRUFBRTtnQkFDdEIsUUFBUSxFQUFFLEVBQUU7Z0JBQ1osVUFBVSxFQUFFLEVBQUU7Z0JBQ2QsTUFBTSxFQUFFLEVBQUU7Z0JBQ1YsZ0JBQWdCLEVBQUUsU0FBUztnQkFDM0IsTUFBTSxFQUFFLEtBQUs7Z0JBQ2IsTUFBTSxFQUFFLG1CQUFBLEVBQUUsRUFBTztnQkFDakIsYUFBYSxFQUFFLG1CQUFBLEVBQUUsRUFBTztnQkFDeEIsWUFBWSxFQUFFLEVBQUU7Z0JBQ2hCLElBQUksRUFBRSxFQUFFO2dCQUNSLGVBQWUsRUFBRSxFQUFFO2dCQUNuQixTQUFTLEVBQUUsRUFBRTtnQkFDYixTQUFT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Ozs7SUFDMUIsd0NBQXNCOzs7OztJQUN0Qix5Q0FBdUI7Ozs7O0lBQ3ZCLHlDQUF1Qjs7Ozs7SUFDdkIsd0NBQTBCOzs7OztJQUUxQiw0Q0FBMkIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBESVNDT1VOVFRZUEUsIExpbmVEaXNjb3VudCwgVFByb2R1Y3QsIFRyYW5zYWN0aW9uRG9jdW1lbnQsIFRSQU5TQUNUSU9OX1RZUEUgfSBmcm9tIFwiLi9tYXBwZXItbGlicmFyeS5tb2RlbFwiXHJcbmltcG9ydCB7IFRyYW5zYWN0aW9uRG9jdW1lbnRCdWlsZGVyIH0gZnJvbSBcIi4vVHJhbnNhY3Rpb25Eb2N1bWVudEJ1aWxkZXJcIjtcclxuZXhwb3J0IGNsYXNzIFJKTWFwcGVyQnVpbGRlckNsYXNzIHtcclxuXHJcbiAgICBwcml2YXRlIHRyYW5zYWN0aW9uRG9jdW1lbnQ6IFRyYW5zYWN0aW9uRG9jdW1lbnQ7XHJcbiAgICBwcml2YXRlIGRldmljZUlkOiBhbnk7XHJcbiAgICBwcml2YXRlIHRyYW5zYWN0aW9uTnVtYmVyOiBhbnk7XHJcbiAgICBwcml2YXRlIG1hbmlmZXN0VmVyc2lvbjogYW55O1xyXG4gICAgcHJpdmF0ZSBkYXRhYmFzZVNjaGVtYVZlcnNpb246IGFueTtcclxuICAgIHByaXZhdGUgYmFza2V0VHlwZTogYW55O1xyXG4gICAgcHJpdmF0ZSB4bWxTY2hlbWFWZXJzaW9uOiBhbnk7XHJcbiAgICBwcml2YXRlIG1ham9yVmVyc2lvbjogYW55O1xyXG4gICAgcHJpdmF0ZSBtaW5vclZlcnNpb246IGFueTtcclxuICAgIHByaXZhdGUgZXh0ZXJuYWxTdGF0ZTogYW55O1xyXG4gICAgcHJpdmF0ZSBjYXNoaWVySWQ6IGFueTtcclxuICAgIHByaXZhdGUgY29tcGFueUlkOiBhbnk7XHJcbiAgICBwcml2YXRlIHRlcm1pbmFsTnVtYmVyOiBhbnk7XHJcbiAgICBwcml2YXRlIHRheE1ldGhvZElkOiBhbnk7XHJcbiAgICBwcml2YXRlIHRyYWRpbmdSZWdpb25JZDogYW55O1xyXG4gICAgcHJpdmF0ZSBiYXNrZXRDdXJyZW5jeUlkOiBhbnk7XHJcbiAgICBwcml2YXRlIGJhc2tldENvdW50cnlJZDogYW55O1xyXG4gICAgcHJpdmF0ZSBiYXNrZXRMYW5ndWFnZUlkOiBhbnk7XHJcbiAgICBwcml2YXRlIGl0ZW1Db3VudCA9IDA7XHJcbiAgICBwcml2YXRlIGxhcmdlc3ROdW1iZXIgPSAwO1xyXG4gICAgcHJpdmF0ZSBicmFuY2hJZDogYW55O1xyXG4gICAgcHJpdmF0ZSBjcmVhdGVkQXQ6IGFueTtcclxuICAgIHByaXZhdGUgdXBkYXRlZEF0IDphbnk7XHJcbiAgICBwcml2YXRlIHJqT2JqZWN0OiBhbnkgPSB7fVxyXG5cclxuICAgIHByaXZhdGUgcGF5bWVudFR5cGVzIDphbnkgO1xyXG5cclxuICAgIGNvbnN0cnVjdG9yKHRyYW5zYWN0aW9uRG9jPzogVHJhbnNhY3Rpb25Eb2N1bWVudCkge1xyXG4gICAgICAgIGlmICh0cmFuc2FjdGlvbkRvYykge1xyXG4gICAgICAgICAgICB0aGlzLnRyYW5zYWN0aW9uRG9jdW1lbnQgPSB0cmFuc2FjdGlvbkRvYztcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICB0aGlzLnRyYW5zYWN0aW9uRG9jdW1lbnQgPSB7XHJcbiAgICAgICAgICAgICAgICB0cmFuc2FjdGlvbklkOiBcIlwiLFxyXG4gICAgICAgICAgICAgICAgb2ZmbGluZVRyYW5zYWN0aW9uSWQ6IFwiXCIsXHJcbiAgICAgICAgICAgICAgICB0cmFuc2FjdGlvblJlZjogXCJcIixcclxuICAgICAgICAgICAgICAgIGRhdGVUaW1lOiBcIlwiLFxyXG4gICAgICAgICAgICAgICAgb3JnQ29kZTogXCJcIixcclxuICAgICAgICAgICAgICAgIHN0b3JlSWQ6IFwiXCIsXHJcbiAgICAgICAgICAgICAgICBzdG9yZU5vZGVJZDogXCJcIixcclxuICAgICAgICAgICAgICAgIHN0b3JlTm9kZVN0cnVjdHVyZTogXCJcIixcclxuICAgICAgICAgICAgICAgIGRldmljZUlkOiBcIlwiLFxyXG4gICAgICAgICAgICAgICAgdGVybWluYWxJZDogXCJcIixcclxuICAgICAgICAgICAgICAgIHVzZXJJZDogXCJcIixcclxuICAgICAgICAgICAgICAgIGluaXRpYXRpbmdNb2R1bGU6IFwiZUJhc2tldFwiLFxyXG4gICAgICAgICAgICAgICAgZXhwb3J0OiBmYWxzZSxcclxuICAgICAgICAgICAgICAgIGJhc2tldDoge30gYXMgYW55LFxyXG4gICAgICAgICAgICAgICAgYmFza2V0U3VtbWFyeToge30gYXMgYW55LFxyXG4gICAgICAgICAgICAgICAgYmFzZUN1cnJlbmN5OiBcIlwiLFxyXG4gICAgICAgICAgICAgICAgdHlwZTogXCJcIixcclxuICAgICAgICAgICAgICAgIG9wZXJhdGlvblN0YXR1czogXCJcIixcclxuICAgICAgICAgICAgICAgIGNyZWF0ZWRBdDogXCJcIixcclxuICAgICAgICAgICAgICAgIHVwZGF0ZWRBdDogXCJcIixcclxuICAgICAgICAgICAgICAgIGlkOiBcIlwiLFxyXG4gICAgICAgICAgICAgICAgY3VycmVudFRyYW5zYWN0aW9uRGV0YWlsczoge30gYXMgYW55LFxyXG4gICAgICAgICAgICAgICAgc2FsZVRvdGFsOiAwLFxyXG4gICAgICAgICAgICB9O1xyXG4gICAgICAgIH1cclxuICAgICAgICB0aGlzLmluaXRpbGl6ZUl0ZW1Db3VudCgpO1xyXG4gICAgICAgIHRoaXMuc2V0TGluZU51bWJlckZvclByb2R1Y3RzKCk7XHJcbiAgICAgICAgdGhpcy5jcmVhdGVkQXQgPSB0aGlzLmdldGRhdGUodGhpcy50cmFuc2FjdGlvbkRvY3VtZW50LmNyZWF0ZWRBdCk7XHJcbiAgICAgICAgdGhpcy51cGRhdGVkQXQgPSB0aGlzLmdldGRhdGUodGhpcy50cmFuc2FjdGlvbkRvY3VtZW50LnVwZGF0ZWRBdCk7XHJcbiAgICB9XHJcblxyXG4gICAgZ2V0UG9zYmFza2V0SW5mbygpIHtcclxuICAgICAgICB0aGlzLnJqT2JqZWN0WydLZXl3b3JkJ10gPSB0aGlzLmdlbmVyYXRlS2V5d29yZCgpO1xyXG4gICAgICAgIHRoaXMucmpPYmplY3RbJ0lEJ10gPSB0aGlzLmdlbmVyYXRlSWQodGhpcy5jcmVhdGVkQXQpO1xyXG4gICAgICAgIHRoaXMucmpPYmplY3RbJ1hNTFNjaGVtYVZlcnNpb24nXSA9ICcyJztcclxuICAgICAgICB0aGlzLnJqT2JqZWN0WydMYXN0VXBkYXRlZCddID0gdGhpcy51cGRhdGVkQXQ7XHJcbiAgICAgICAgdGhpcy5yak9iamVjdFsnTWFqb3JWZXJzaW9uJ10gPSB0aGlzLm1ham9yVmVyc2lvbjtcclxuICAgICAgICB0aGlzLnJqT2JqZWN0WydNaW5vclZlcnNpb24nXSA9IHRoaXMubWlub3JWZXJzaW9uO1xyXG4gICAgICAgIHRoaXMucmpPYmplY3RbJ01hbmlmZXN0VmVyc2lvbiddID0gdGhpcy5tYW5pZmVzdFZlcnNpb247XHJcbiAgICAgICAgdGhpcy5yak9iamVjdFsnRGF0YWJhc2VTY2hlbWFWZXJzaW9uJ10gPSB0aGlzLmRhdGFiYXNlU2NoZW1hVmVyc2lvbjtcclxuICAgICAgICB0aGlzLnJqT2JqZWN0WydCYXNrZXRUeXBlJ10gPSB0aGlzLmJhc2tldFR5cGU7XHJcbiAgICAgICAgdGhpcy5yak9iamVjdFsnU3RhdGUnXSA9IHRoaXMuZ2V0U3RhdGUoKTtcclxuICAgICAgICB0aGlzLnJqT2JqZWN0WydFeHRlcm5hbFN0YXRlJ10gPSB0aGlzLmV4dGVybmFsU3RhdGU7XHJcblxyXG4gICAgICAgIHJldHVybiB0aGlzO1xyXG4gICAgfVxyXG5cclxuXHJcbiAgICBnZXRoZWFkZXJJbmZvKCkge1xyXG4gICAgICAgIHRoaXMucmpPYmplY3RbJ0hlYWRlciddID0ge307XHJcbiAgICAgICAgdGhpcy5yak9iamVjdFsnSGVhZGVyJ10uVGltZVpvbmVPZmZzZXQgPSB0aGlzLmNvbnZlcnRUb1N0cmluZyh0aGlzLmdlbmVyYXRlVGltZXpvbmVvZmZzZXQodGhpcy50cmFuc2FjdGlvbkRvY3VtZW50LmNyZWF0ZWRBdCkpO1xyXG4gICAgICAgIHRoaXMucmpPYmplY3RbJ0hlYWRlciddLkRhdGVUaW1lQ3JlYXRlZCA9IHRoaXMuY3JlYXRlZEF0O1xyXG4gICAgICAgIHRoaXMucmpPYmplY3RbJ0hlYWRlciddLk9yaWdpbmF0ZWRCeSA9IHt9O1xyXG4gICAgICAgIHRoaXMucmpPYmplY3RbJ0hlYWRlciddLk9yaWdpbmF0ZWRCeS5EZXZpY2VJRCA9IHRoaXMuZGV2aWNlSWQ7XHJcbiAgICAgICAgdGhpcy5yak9iamVjdFsnSGVhZGVyJ10uT3JpZ2luYXRlZEJ5LkNhc2hpZXJJRCA9IHRoaXMuY2FzaGllcklkO1xyXG4gICAgICAgIHRoaXMucmpPYmplY3RbJ0hlYWRlciddLk9yaWdpbmF0ZWRCeS5Db21wYW55SUQgPSB0aGlzLmNvbXBhbnlJZDtcclxuICAgICAgICB0aGlzLnJqT2JqZWN0WydIZWFkZXInXS5PcmlnaW5hdGVkQnkuU3RvcmVJRCA9IHRoaXMudHJhbnNhY3Rpb25Eb2N1bWVudC5zdG9yZUlkO1xyXG4gICAgICAgIHRoaXMucmpPYmplY3RbJ0hlYWRlciddLk9yaWdpbmF0ZWRCeS5CcmFuY2hJRCA9IHRoaXMuYnJhbmNoSWQ7XHJcbiAgICAgICAgdGhpcy5yak9iamVjdFsnSGVhZGVyJ10uT3JpZ2luYXRlZEJ5LlRlcm1pbmFsTnVtYmVyID0gdGhpcy50ZXJtaW5hbE51bWJlcjtcclxuICAgICAgICB0aGlzLnJqT2JqZWN0WydIZWFkZXInXS5PcmlnaW5hdGVkQnkuVHJhbnNhY3Rpb25OdW1iZXIgPSB0aGlzLnRyYW5zYWN0aW9uTnVtYmVyO1xyXG4gICAgICAgIHRoaXMucmpPYmplY3RbJ0hlYWRlciddLlRheE1ldGhvZElEID0gdGhpcy50YXhNZXRob2RJZDtcclxuICAgICAgICB0aGlzLnJqT2JqZWN0WydIZWFkZXInXS5EeW5hbWljU3RvY2tMb29rdXAgPSB0aGlzLmdlbmVyYXRlRHluYW1pY1N0b2NrTG9va1VwKCk7Ly90b2RvXHJcbiAgICAgICAgdGhpcy5yak9iamVjdFsnSGVhZGVyJ10uQmFza2V0TGFuZ3VhZ2VJRCA9IHRoaXMuYmFza2V0TGFuZ3VhZ2VJZDsgLy90b2RvXHJcbiAgICAgICAgdGhpcy5yak9iamVjdFsnSGVhZGVyJ10uQmFza2V0Q291bnRyeUlEID0gdGhpcy5iYXNrZXRDb3VudHJ5SWQ7IC8vdG9kb1xyXG4gICAgICAgIHRoaXMucmpPYmplY3RbJ0hlYWRlciddLkJhc2tldEN1cnJlbmN5SUQgPSB0aGlzLnRyYW5zYWN0aW9uRG9jdW1lbnQuYmFzZUN1cnJlbmN5O1xyXG4gICAgICAgIHRoaXMucmpPYmplY3RbJ0hlYWRlciddLlRyYWRpbmdSZWdpb25JRCA9IHRoaXMudHJhZGluZ1JlZ2lvbklkO1xyXG4gICAgICAgIHRoaXMucmpPYmplY3RbJ0hlYWRlciddLkV1cm96b25lID0gXCIgXCI7Ly91bmtub3duXHJcbiAgICAgICAgdGhpcy5yak9iamVjdFsnSGVhZGVyJ10uRXVyb0Jhc2VFeGNoYW5nZVJhdGUgPSBcIlwiOyAvL3Vua25vd25cclxuICAgICAgICB0aGlzLnJqT2JqZWN0WydIZWFkZXInXS5QcmludGFibGVOYW1lID0gdGhpcy50cmFuc2FjdGlvbkRvY3VtZW50LnVzZXJOYW1lOyAvL3Vua25vd25cclxuXHJcbiAgICAgICAgcmV0dXJuIHRoaXM7XHJcbiAgICB9XHJcblxyXG4gICAgcmpNYXBwZXIoKSB7XHJcbiAgICAgICAgaWYgKHRoaXMudHJhbnNhY3Rpb25Eb2N1bWVudC50eXBlID09PSBUUkFOU0FDVElPTl9UWVBFLlNBTEUpIHtcclxuICAgICAgICAgICAgdGhpcy5yak9iamVjdFsnUHJvZHVjdFNhbGUnXSA9IFtdO1xyXG4gICAgICAgICAgICB0aGlzLnJqT2JqZWN0WydNb2RpZmllckl0ZW0nXSA9IFtdO1xyXG5cclxuICAgICAgICAgICAgdGhpcy50cmFuc2FjdGlvbkRvY3VtZW50LmJhc2tldC5wcm9kdWN0cy5mb3JFYWNoKChlbGVtZW50OiBhbnkpID0+IHtcclxuICAgICAgICAgICAgICAgIGxldCBsaW5lRGlzY291bnQgPSBbXTtcclxuICAgICAgICAgICAgICAgIGlmICh0aGlzLnRyYW5zYWN0aW9uRG9jdW1lbnQuYmFza2V0LmxpbmVEaXNjb3VudCAmJiB0aGlzLnRyYW5zYWN0aW9uRG9jdW1lbnQuYmFza2V0LmxpbmVEaXNjb3VudC5sZW5ndGggPiAwKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgbGluZURpc2NvdW50ID0gdGhpcy50cmFuc2FjdGlvbkRvY3VtZW50LmJhc2tldC5saW5lRGlzY291bnQuZmlsdGVyKCh4OiBhbnkpID0+IHguaXRlbUxpbmVJZCA9PT0gZWxlbWVudC5pdGVtTGluZUlkKTtcclxuICAgICAgICAgICAgICAgICAgICBpZiAobGluZURpc2NvdW50Lmxlbmd0aCA+IDApIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgaW5kZXggPSB0aGlzLnRyYW5zYWN0aW9uRG9jdW1lbnQuYmFza2V0LmxpbmVEaXNjb3VudC5pbmRleE9mKGxpbmVEaXNjb3VudFswXSk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChpbmRleCA+IC0xKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnRyYW5zYWN0aW9uRG9jdW1lbnQuYmFza2V0LmxpbmVEaXNjb3VudC5zcGxpY2UoaW5kZXgsIDEpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgbGV0IGRhdGEgPSB0aGlzLmFkZFByb2R1Y3QoZWxlbWVudCwgKGxpbmVEaXNjb3VudC5sZW5ndGggPiAwID8gbGluZURpc2NvdW50WzBdIDogbnVsbCkpO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5yak9iamVjdFsnUHJvZHVjdFNhbGUnXS5wdXNoKGRhdGEpO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5nZXRNb2RpZmllckl0ZW0obGluZURpc2NvdW50Lmxlbmd0aCA+IDAgPyBsaW5lRGlzY291bnRbMF0gOiBudWxsLCBlbGVtZW50Lml0ZW1MaW5lSWQpO1xyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICB9IGVsc2UgaWYgKHRoaXMudHJhbnNhY3Rpb25Eb2N1bWVudC50eXBlID09PSBUUkFOU0FDVElPTl9UWVBFLlJFRlVORCkge1xyXG4gICAgICAgICAgICB0aGlzLnJqT2JqZWN0WydQcm9kdWN0UmV0dXJuJ10gPSBbXTtcclxuICAgICAgICAgICAgdGhpcy5yak9iamVjdFsnTW9kaWZpZXJJdGVtJ10gPSBbXTtcclxuICAgICAgICAgICAgdGhpcy50cmFuc2FjdGlvbkRvY3VtZW50LmJhc2tldC5wcm9kdWN0cy5mb3JFYWNoKChlbGVtZW50OiBhbnkpID0+IHtcclxuICAgICAgICAgICAgICAgIGxldCBkYXRhID0gdGhpcy5yZXR1cm5Qcm9kdWN0KGVsZW1lbnQsIChlbGVtZW50Lmhhc093blByb3BlcnR5KCdsaW5lRGlzY291bnQnKSA/IGVsZW1lbnQubGluZURpc2NvdW50IDogbnVsbCkpO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5yak9iamVjdFsnUHJvZHVjdFJldHVybiddLnB1c2goZGF0YSk7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmdldE1vZGlmaWVySXRlbShlbGVtZW50LmxpbmVEaXNjb3VudCwgZWxlbWVudC5pdGVtTGluZUlkKTtcclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgfSBlbHNlIGlmICh0aGlzLnRyYW5zYWN0aW9uRG9jdW1lbnQudHlwZSA9PT0gVFJBTlNBQ1RJT05fVFlQRS5TQUxFX1JFRlVORCkge1xyXG4gICAgICAgICAgICB0aGlzLnJqT2JqZWN0WydQcm9kdWN0UmV0dXJuJ10gPSBbXTtcclxuICAgICAgICAgICAgdGhpcy5yak9iamVjdFsnTW9kaWZpZXJJdGVtJ10gPSBbXTtcclxuICAgICAgICAgICAgXHJcbiAgICAgICAgICAgIGxldCB0cmFuc2FjdGlvbkRvYzogYW55ID0gbmV3IFRyYW5zYWN0aW9uRG9jdW1lbnRCdWlsZGVyKCkuYmFza2V0KHRoaXMudHJhbnNhY3Rpb25Eb2N1bWVudC5jdXJyZW50VHJhbnNhY3Rpb25EZXRhaWxzKS5idWlsZCgpO1xyXG4gICAgICAgICAgICB0cmFuc2FjdGlvbkRvYy5iYXNrZXQucHJvZHVjdHMuZm9yRWFjaCgoZWxlbWVudDogYW55KSA9PiB7XHJcbiAgICAgICAgICAgICAgICBsZXQgZGF0YSA9IHRoaXMucmV0dXJuUHJvZHVjdChlbGVtZW50LCAoZWxlbWVudC5oYXNPd25Qcm9wZXJ0eSgnbGluZURpc2NvdW50JykgPyBlbGVtZW50LmxpbmVEaXNjb3VudCA6IG51bGwpKTtcclxuICAgICAgICAgICAgICAgIGxldCBvYmogPSB7XHJcbiAgICAgICAgICAgICAgICAgICAgXCJPcmlnaW5hbFJlY2VpcHRTdXBwbGllZFwiOiAwLFxyXG4gICAgICAgICAgICAgICAgICAgIFwiT3JpZ2luYWxCcmFuY2hJRFwiOiAwLFxyXG4gICAgICAgICAgICAgICAgICAgIFwiT3JpZ2luYWxUZXJtaW5hbE51bWJlclwiOiAwLFxyXG4gICAgICAgICAgICAgICAgICAgIFwiT3JpZ2luYWxUcmFuc2FjdGlvbk51bWJlclwiOiAwLFxyXG4gICAgICAgICAgICAgICAgICAgIFwiT3JpZ2luYWxDYXNoaWVyTnVtYmVyXCI6IDBcclxuICAgICAgICAgICAgICAgIH07XHJcbiAgICAgICAgICAgICAgICBkYXRhWydSZXR1cm4nXSA9IHsuLi5kYXRhWydSZXR1cm4nXSwgLi4ub2JqfTtcclxuICAgICAgICAgICAgICAgIHRoaXMucmpPYmplY3RbJ1Byb2R1Y3RSZXR1cm4nXS5wdXNoKGRhdGEpO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5nZXRNb2RpZmllckl0ZW0oZWxlbWVudC5saW5lRGlzY291bnQsIGVsZW1lbnQuaXRlbUxpbmVJZCk7XHJcbiAgICAgICAgICAgIH0pXHJcbiAgICAgICAgfSBlbHNlIGlmICh0aGlzLnRyYW5zYWN0aW9uRG9jdW1lbnQudHlwZSA9PT0gVFJBTlNBQ1RJT05fVFlQRS5TQUxFX0VYQ0hBTkdFKSB7XHJcbiAgICAgICAgICAgIHRoaXMucmpPYmplY3RbJ1Byb2R1Y3RSZXR1cm4nXSA9IFtdO1xyXG4gICAgICAgICAgICB0aGlzLnJqT2JqZWN0WydQcm9kdWN0U2FsZSddID0gW107XHJcbiAgICAgICAgICAgIHRoaXMucmpPYmplY3RbJ01vZGlmaWVySXRlbSddID0gW107XHJcbiAgICAgICAgICAgIFxyXG4gICAgICAgICAgICBsZXQgdHJhbnNhY3Rpb25Eb2M6IGFueSA9IG5ldyBUcmFuc2FjdGlvbkRvY3VtZW50QnVpbGRlcigpLmJhc2tldCh0aGlzLnRyYW5zYWN0aW9uRG9jdW1lbnQuY3VycmVudFRyYW5zYWN0aW9uRGV0YWlscykuYnVpbGQoKTtcclxuICAgICAgICAgICAgdHJhbnNhY3Rpb25Eb2MuYmFza2V0LnByb2R1Y3RzLmZvckVhY2goKGVsZW1lbnQ6IGFueSkgPT4ge1xyXG4gICAgICAgICAgICAgICAgaWYgKGVsZW1lbnQucmVmdW5kZWRRdWFudGl0eSA+IDApIHtcclxuICAgICAgICAgICAgICAgICAgICBsZXQgcmV0dXJuUHJvZHVjdCA9IHRoaXMucmV0dXJuUHJvZHVjdChlbGVtZW50LCAoZWxlbWVudC5oYXNPd25Qcm9wZXJ0eSgnbGluZURpc2NvdW50JykgPyBlbGVtZW50LmxpbmVEaXNjb3VudCA6IG51bGwpKTtcclxuICAgICAgICAgICAgICAgICAgICBsZXQgb2JqID0ge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBcIk9yaWdpbmFsUmVjZWlwdFN1cHBsaWVkXCI6IDAsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIFwiT3JpZ2luYWxCcmFuY2hJRFwiOiAwLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBcIk9yaWdpbmFsVGVybWluYWxOdW1iZXJcIjogMCxcclxuICAgICAgICAgICAgICAgICAgICAgICAgXCJPcmlnaW5hbFRyYW5zYWN0aW9uTnVtYmVyXCI6IDAsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIFwiT3JpZ2luYWxDYXNoaWVyTnVtYmVyXCI6IDBcclxuICAgICAgICAgICAgICAgICAgICB9O1xyXG4gICAgICAgICAgICAgICAgICAgIHJldHVyblByb2R1Y3RbJ1JldHVybiddID0gey4uLnJldHVyblByb2R1Y3RbJ1JldHVybiddLCAuLi5vYmp9O1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMucmpPYmplY3RbJ1Byb2R1Y3RSZXR1cm4nXS5wdXNoKHJldHVyblByb2R1Y3QpO1xyXG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgICAgICBsZXQgYWRkUHJvZHVjdCA9IHRoaXMuYWRkUHJvZHVjdChlbGVtZW50LCAoZWxlbWVudC5oYXNPd25Qcm9wZXJ0eSgnbGluZURpc2NvdW50JykgPyBlbGVtZW50LmxpbmVEaXNjb3VudCA6IG51bGwpKTtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLnJqT2JqZWN0WydQcm9kdWN0U2FsZSddLnB1c2goYWRkUHJvZHVjdCk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB0aGlzLmdldE1vZGlmaWVySXRlbShlbGVtZW50LmxpbmVEaXNjb3VudCwgZWxlbWVudC5pdGVtTGluZUlkKTtcclxuICAgICAgICAgICAgfSlcclxuXHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiB0aGlzO1xyXG4gICAgfVxyXG5cclxuICAgIGdldEJhc2tldERpc2NvdW50KCkge1xyXG4gICAgICAgIHRoaXMucmpPYmplY3RbJ0Jhc2tldERpc2NvdW50J10gPSBbXTtcclxuICAgICAgICBpZiAoIXRoaXMudHJhbnNhY3Rpb25Eb2N1bWVudC5iYXNrZXQudHJhbnNhY3Rpb25EaXNjb3VudCkgcmV0dXJuIHRoaXM7XHJcblxyXG4gICAgICAgIHRoaXMudHJhbnNhY3Rpb25Eb2N1bWVudC5iYXNrZXQudHJhbnNhY3Rpb25EaXNjb3VudC5mb3JFYWNoKChlbGVtZW50OiBhbnkpID0+IHtcclxuICAgICAgICAgICAgbGV0IG9iajogYW55ID0ge31cclxuICAgICAgICAgICAgb2JqWydYTUxTY2hlbWFWZXJzaW9uJ10gPSAxO1xyXG4gICAgICAgICAgICBvYmpbJ05ldFZhbHVlJ10gPSBlbGVtZW50LmRpc2NvdW50QW1vdW50IDwgMCA/IGVsZW1lbnQuZGlzY291bnRBbW91bnQgOiAtZWxlbWVudC5kaXNjb3VudEFtb3VudDtcclxuICAgICAgICAgICAgb2JqWydFZmZlY3RpdmVOZXRWYWx1ZSddID0gZWxlbWVudC5kaXNjb3VudEFtb3VudCA8IDAgPyBlbGVtZW50LmRpc2NvdW50QW1vdW50IDogLWVsZW1lbnQuZGlzY291bnRBbW91bnQ7XHJcbiAgICAgICAgICAgIG9ialsnRGVzY3JpcHRpb24nXSA9IGVsZW1lbnQucmVhc29uQ29kZTtcclxuICAgICAgICAgICAgb2JqWydVc2VySUQnXSA9IHRoaXMudHJhbnNhY3Rpb25Eb2N1bWVudC51c2VyTmFtZTtcclxuICAgICAgICAgICAgb2JqWydSZWFzb25Db2RlSUQnXSA9IGVsZW1lbnQucmVhc29uQ29kZTtcclxuICAgICAgICAgICAgb2JqWydEaXNjb3VudFR5cGUnXSA9IGVsZW1lbnQuZGlzY291bnRUeXBlLnRvVXBwZXJDYXNlKCkgPT0gRElTQ09VTlRUWVBFLlBFUkNFTlQudG9VcHBlckNhc2UoKSA/IDAgOiAxOyAvLyB0b2RvIC0gY29tcGFyZSB2YWx1ZXMgXHJcbiAgICAgICAgICAgIG9ialsnUm91bmRpbmdSdWxlJ10gPSAyO1xyXG4gICAgICAgICAgICBvYmpbJ01vZGlmaWVkTGluZU51bWJlciAnXSA9ZWxlbWVudC5pdGVtTGluZUlkczsgICAgICAgICAgIFxyXG4gICAgICAgICAgICBvYmpbJ0xpbmVOdW1iZXInXSA9IHRoaXMuZ2VuZXJhdGVMaW5lTnVtYmVyKCk7IFxyXG4gICAgICAgICAgICAvLyBvYmpbJ0Rpc2NvdW50ZWRWYWx1ZSddID0gb2JqWydkaXNjb3VudEFtb3VudCddIC8vIHRvZG8gLSBjb25maXJtIHZhbHVlIGJlZm9yZSBkaXNjb3VudDtcclxuICAgICAgICAgICAgLy8gb2JqWydEaXNjb3VudFBlcmNlbnRhZ2UnXSA9IG9ialsnZGlzY291bnRBbW91bnQnXSAvIDEwMCA7IC8vIHRvZG8gLSBvcHRpb25hbFxyXG5cclxuICAgICAgICAgICAgdGhpcy5yak9iamVjdFsnQmFza2V0RGlzY291bnQnXS5wdXNoKG9iaik7XHJcbiAgICAgICAgfSk7XHJcbiAgICAgICAgcmV0dXJuIHRoaXM7XHJcbiAgICB9XHJcblxyXG4gICAgZ2V0TW9kaWZpZXJJdGVtKGRhdGE6IGFueSwgbGluZU5vOiBhbnkpIHtcclxuICAgICAgICBpZiAoZGF0YSAmJiBsaW5lTm8pIHtcclxuICAgICAgICAgICAgbGV0IG9iajogYW55ID0ge307XHJcbiAgICAgICAgICAgIG9iai5YTUxTY2hlbWFWZXJzaW9uID0gMTtcclxuICAgICAgICAgICAgb2JqLkxpbmVOdW1iZXIgPSB0aGlzLmdlbmVyYXRlTGluZU51bWJlcigpO1xyXG4gICAgICAgICAgICBvYmouTmV0VmFsdWUgPSAwO1xyXG4gICAgICAgICAgICBvYmouRWZmZWN0aXZlTmV0VmFsdWUgPSAwO1xyXG4gICAgICAgICAgICBvYmouRGVzY3JpcHRpb24gPSBkYXRhLnBlcmNlbnRhZ2VEaXNjb3VudFJlYXNvbk5hbWUgPyBkYXRhLnBlcmNlbnRhZ2VEaXNjb3VudFJlYXNvbk5hbWUgOiBkYXRhLnByaWNlT3ZlcnJpZGVSZWFzb25OYW1lO1xyXG4gICAgICAgICAgICBvYmouRGV2aWNlSUQgPSB0aGlzLmRldmljZUlkO1xyXG4gICAgICAgICAgICBvYmouVXNlcklEID0gdGhpcy50cmFuc2FjdGlvbkRvY3VtZW50LnVzZXJOYW1lO1xyXG4gICAgICAgICAgICBvYmouRGF0ZVRpbWVDcmVhdGVkID0gdGhpcy51cGRhdGVkQXQ7XHJcbiAgICAgICAgICAgIG9iai5BdXRob3Jpc2luZ1VzZXJJRCA9IHRoaXMudHJhbnNhY3Rpb25Eb2N1bWVudC51c2VyTmFtZTtcclxuICAgICAgICAgICAgb2JqLlJlYXNvbkNvZGVJRCA9IGRhdGEucGVyY2VudGFnZURpc2NvdW50UmVhc29uQ29kZSA/IGRhdGEucGVyY2VudGFnZURpc2NvdW50UmVhc29uQ29kZSA6IGRhdGEucHJpY2VPdmVycmlkZVJlYXNvbkNvZGU7XHJcbiAgICAgICAgICAgIG9iai5Nb2RpZmllZExpbmVOdW1iZXIgPSBsaW5lTm87XHJcbiAgICAgICAgICAgIG9iai5Nb2RpZmllZEluZGV4ID0gMTtcclxuXHJcbiAgICAgICAgICAgIHRoaXMucmpPYmplY3RbJ01vZGlmaWVySXRlbSddLnB1c2gob2JqKTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgZ2V0VHJhaWxlckluZm8oKSB7XHJcbiAgICAgICAgdGhpcy5yak9iamVjdFsnVHJhaWxlciddID0ge307XHJcbiAgICAgICAgdGhpcy5yak9iamVjdC5UcmFpbGVyLkRhdGVUaW1lQ29tcGxldGVkID0gdGhpcy51cGRhdGVkQXQ7XHJcbiAgICAgICAgdGhpcy5yak9iamVjdC5UcmFpbGVyLkNvbXBsZXRlZEJ5ID0ge307XHJcbiAgICAgICAgdGhpcy5yak9iamVjdC5UcmFpbGVyLkNvbXBsZXRlZEJ5LkRldmljZUlEID0gdGhpcy5kZXZpY2VJZDtcclxuICAgICAgICB0aGlzLnJqT2JqZWN0LlRyYWlsZXIuQ29tcGxldGVkQnkuQ2FzaGllcklEID0gdGhpcy5jYXNoaWVySWQ7XHJcbiAgICAgICAgdGhpcy5yak9iamVjdC5UcmFpbGVyLkNvbXBsZXRlZEJ5LlN0b3JlSUQgPSB0aGlzLnRyYW5zYWN0aW9uRG9jdW1lbnQuc3RvcmVJZDtcclxuICAgICAgICB0aGlzLnJqT2JqZWN0LlRyYWlsZXIuQ29tcGxldGVkQnkuQnJhbmNoSUQgPSB0aGlzLmJyYW5jaElkO1xyXG4gICAgICAgIHRoaXMucmpPYmplY3QuVHJhaWxlci5Db21wbGV0ZWRCeS5UZXJtaW5hbE51bWJlciA9IHRoaXMudHJhbnNhY3Rpb25Eb2N1bWVudC50ZXJtaW5hbElkO1xyXG4gICAgICAgIHRoaXMucmpPYmplY3QuVHJhaWxlci5Ub3RhbCA9IHRoaXMuY29udmVydFRvU3RyaW5nKHRoaXMudHJhbnNhY3Rpb25Eb2N1bWVudC5iYXNrZXRTdW1tYXJ5LmJhc2tldFRvdGFsICogMTAwKTtcclxuICAgICAgICB0aGlzLnJqT2JqZWN0LlRyYWlsZXIuSXRlbUNvdW50ID0gdGhpcy5pdGVtQ291bnQ7IC8vZ2l2ZXMgdG90YWwgY291bnQgZm9yIHByb2R1Y3RcclxuICAgICAgICB0aGlzLnJqT2JqZWN0LlRyYWlsZXIuSXRlbVF1YW50aXR5ID0gdGhpcy5jb252ZXJ0VG9TdHJpbmcodGhpcy50cmFuc2FjdGlvbkRvY3VtZW50LmJhc2tldFN1bW1hcnkudG90YWxJdGVtcyk7XHJcbiAgICAgICAgdGhpcy5yak9iamVjdC5UcmFpbGVyLk5ldEl0ZW1RdWFudGl0eSA9IHRoaXMuY29udmVydFRvU3RyaW5nKHRoaXMudHJhbnNhY3Rpb25Eb2N1bWVudC5iYXNrZXRTdW1tYXJ5LnRvdGFsSXRlbXMpO1xyXG4gICAgICAgIHRoaXMucmpPYmplY3QuVHJhaWxlci5UYXhUb3RhbCA9IHRoaXMuY29udmVydFRvU3RyaW5nKHRoaXMudHJhbnNhY3Rpb25Eb2N1bWVudC5iYXNrZXRTdW1tYXJ5LlZBVFRvdGFsKTtcclxuICAgICAgICB0aGlzLnJqT2JqZWN0LlRyYWlsZXIuU2VxdWVuY2VEZXZpY2VJRCA9IHRoaXMuZGV2aWNlSWQ7XHJcbiAgICAgICAgdGhpcy5yak9iamVjdC5UcmFpbGVyLlNlcXVlbmNlTnVtYmVyID0gJ3Nuc24nIC8vc3RhdGljIGZvciBub3dcclxuXHJcbiAgICAgICAgdGhpcy5yak9iamVjdFsnVHJhaWxlciddWydUYXhJdGVtJ10gPSBbXTtcclxuICAgICAgICB0aGlzLnRyYW5zYWN0aW9uRG9jdW1lbnQuYmFza2V0LnRheEJyZWFrZG93bi50YXhMaW5lcy5mb3JFYWNoKChlbGVtZW50OiBhbnkpID0+IHtcclxuICAgICAgICAgICAgbGV0IG9iajogYW55ID0ge307XHJcblxyXG4gICAgICAgICAgICBvYmpbJ1hNTFNjaGVtYVZlcnNpb24nXSA9IHRoaXMueG1sU2NoZW1hVmVyc2lvbjtcclxuICAgICAgICAgICAgb2JqWydUYXhSYXRlJ10gPSBlbGVtZW50LlZBVDtcclxuICAgICAgICAgICAgb2JqWydUYXhhYmxlVG90YWwnXSA9IHRoaXMuY29udmVydFRvU3RyaW5nKGVsZW1lbnQudGF4YWJsZUFtb3VudCk7XHJcbiAgICAgICAgICAgIG9ialsnVGF4VG90YWwnXSA9IHRoaXMuY29udmVydFRvU3RyaW5nKGVsZW1lbnQudGF4TGluZVRvdGFsKTtcclxuICAgICAgICAgICAgb2JqWydUYXhEZXNjcmlwdGlvbiddID0gdGhpcy5jb252ZXJ0VG9TdHJpbmcoZWxlbWVudC5WQVRDb2RlKTtcclxuICAgICAgICAgICAgb2JqWydUYXhJbmNsdWRlZCddID0gJzEnO1xyXG4gICAgICAgICAgICBvYmpbJ1RheFBlcmNlbnRhZ2UnXSA9IGVsZW1lbnQuVkFULnRvRml4ZWQoMik7IC8vIHRvZG9cclxuXHJcbiAgICAgICAgICAgIHRoaXMucmpPYmplY3RbJ1RyYWlsZXInXVsnVGF4SXRlbSddLnB1c2gob2JqKVxyXG4gICAgICAgIH0pO1xyXG5cclxuICAgICAgICAvLyBUT0RPOiBtYWtlIFRyYWlsZXIgb2JqZWN0IGZyb20gcHJvbW90aW9uXHJcbiAgICAgICAgdGhpcy5yak9iamVjdFsnVHJhaWxlciddWydQcm9tb3Rpb25JdGVtJ10gPSBbXTtcclxuICAgICAgICB0aGlzLnRyYW5zYWN0aW9uRG9jdW1lbnQuYmFza2V0LmxpbmVQcm9tb3Rpb24uZm9yRWFjaCgoZWxlbWVudDogYW55KSA9PiB7XHJcbiAgICAgICAgICAgIGxldCBvYmo6IGFueSA9IHt9O1xyXG5cclxuICAgICAgICAgICAgb2JqWydQcm9tb3Rpb25JRCddID0gZWxlbWVudC5wcm9tb3Rpb25JZDtcclxuICAgICAgICAgICAgb2JqWydQcm9tb3Rpb25TYXZpbmcnXSA9IGVsZW1lbnQucHJvbW90aW9uQW1vdW50IDwgMCA/IGVsZW1lbnQucHJvbW90aW9uQW1vdW50IDogLWVsZW1lbnQucHJvbW90aW9uQW1vdW50O1xyXG4gICAgICAgICAgICBvYmpbJ1Byb21vdGlvblF1YW50aXR5J10gPSBcIlwiOyAvLyB0b2RvIC0gbm90IGF2YWlhbGJsZVxyXG4gICAgICAgICAgICBvYmpbJ1Byb21vdGlvbkRlc2NyaXB0aW9uJ10gPSBlbGVtZW50LmRpc3BsYXlUZXh0O1xyXG5cclxuICAgICAgICAgICAgb2JqWydQcm9tb3Rpb25IaXQnXVsnWE1MU2NoZW1hVmVyc2lvbiddID0gdGhpcy50cmFuc2FjdGlvbkRvY3VtZW50LnN0b3JlSWQ7XHJcbiAgICAgICAgICAgIG9ialsnUHJvbW90aW9uSGl0J11bJ0hpdE51bWJlciddID0gXCJcIiAvLyB0b2RvO1xyXG4gICAgICAgICAgICBvYmpbJ1Byb21vdGlvbkhpdCddWydIaXRRdWFudGl0eSddID0gXCJcIiAvLyB0b2RvO1xyXG4gICAgICAgICAgICBvYmpbJ1Byb21vdGlvbkhpdCddWydIaXRTYXZpbmcnXSA9IFwiXCIgLy8gdG9kbztcclxuXHJcbiAgICAgICAgICAgIG9ialsnUHJvbW90aW9uSGl0J11bJ1Byb21vdGlvblRyaWdnZXInXSA9IFtdO1xyXG5cclxuICAgICAgICAgICAgZWxlbWVudC50cmlnZ2VyLmZvckVhY2goKHN1YkVsZW1lbnQ6IGFueSkgPT4ge1xyXG4gICAgICAgICAgICAgICAgbGV0IG9ialN1YjogYW55ID0ge307XHJcblxyXG4gICAgICAgICAgICAgICAgbGV0IHByb2R1Y3QgPSB0aGlzLnRyYW5zYWN0aW9uRG9jdW1lbnQuYmFza2V0LnByb2R1Y3RzLmZpbmQoKGl0ZW06IGFueSkgPT4gaXRlbS5saW5lSXRlbUlkID09IHN1YkVsZW1lbnQuaXRlbUxpbmVJZCk7XHJcbiAgICAgICAgICAgICAgICBvYmpTdWJbJ1hNTFNjaGVtYVZlcnNpb24nXSA9IHRoaXMueG1sU2NoZW1hVmVyc2lvbjtcclxuICAgICAgICAgICAgICAgIG9ialN1YlsnUHJvZHVjdElEJ10gPSB0aGlzLnRyYW5zYWN0aW9uRG9jdW1lbnQuYmFza2V0LnByb2R1Y3RzLmZpbmQoKGl0ZW06IGFueSkgPT4gaXRlbS5pdGVtTGluZUlkID09PSBzdWJFbGVtZW50Lml0ZW1MaW5lSWQpLlNLVTtcclxuICAgICAgICAgICAgICAgIG9ialN1YlsnVW5pdFZhbHVlJ10gPSB0aGlzLmNvbnZlcnRUb1N0cmluZyhlbGVtZW50LnByb21vdGlvbkxpbmVQcmljZSAvIHByb2R1Y3QucXVhbnRpdHkpO1xyXG4gICAgICAgICAgICAgICAgb2JqU3ViWydMaW5lTnVtYmVyJ10gPSB0aGlzLmNvbnZlcnRUb1N0cmluZyhzdWJFbGVtZW50Lml0ZW1MaW5lSWQpO1xyXG4gICAgICAgICAgICAgICAgb2JqU3ViWydRdWFudGl0eSddID0gdGhpcy5jb252ZXJ0VG9TdHJpbmcoc3ViRWxlbWVudC5xdWFudGl0eS50b0ZpeGVkKDEpKTtcclxuICAgICAgICAgICAgICAgIG9ialN1YlsnVGF4Q29kZSddID0gdGhpcy50cmFuc2FjdGlvbkRvY3VtZW50LmJhc2tldC50YXhCcmVha2Rvd24udGF4TGluZXMuZmluZCgoaXRlbTogYW55KSA9PiBpdGVtLml0ZW1MaW5lSWQgPT0gZWxlbWVudC5pdGVtTGluZUlkKS5WQVRDb2RlOyAvLyB0b2RvXHJcbiAgICAgICAgICAgICAgICBvYmpbJ1Byb21vdGlvbkhpdCddWydQcm9tb3Rpb25UcmlnZ2VyJ10ucHVzaChvYmpTdWIpO1xyXG4gICAgICAgICAgICB9KTtcclxuXHJcbiAgICAgICAgICAgIHRoaXMucmpPYmplY3RbJ1RyYWlsZXInXVsnUHJvbW90aW9uSXRlbSddLnB1c2gob2JqKTtcclxuICAgICAgICB9KTtcclxuXHJcbiAgICAgICAgLy9jb25zb2xlLmxvZyh0aGlzLnJqT2JqZWN0KTtcclxuICAgICAgICByZXR1cm4gdGhpcztcclxuICAgIH1cclxuXHJcbiAgICBnZXRUZW5kZXJJbmZvKCkge1xyXG4gICAgICAgIHRoaXMucmpPYmplY3RbJ0Nhc2hUZW5kZXInXSA9IFtdO1xyXG4gICAgICAgIGlmICh0aGlzLnRyYW5zYWN0aW9uRG9jdW1lbnQucGF5bWVudERldGFpbHMgJiYgdGhpcy50cmFuc2FjdGlvbkRvY3VtZW50LnBheW1lbnREZXRhaWxzLmxlbmd0aCA+IDApIHtcclxuICAgICAgICAgICAgdGhpcy50cmFuc2FjdGlvbkRvY3VtZW50LnBheW1lbnREZXRhaWxzLmZvckVhY2goKGVsZW1lbnQ6IGFueSkgPT4ge1xyXG4gICAgICAgICAgICAgICAgaWYgKGVsZW1lbnQucGF5bWVudFR5cGUudG9VcHBlckNhc2UoKSA9PT0gJ0dJRlQgQ0FSRCcpIHtcclxuICAgICAgICAgICAgICAgICAgICBsZXQgb2JqID0ge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBYTUxTY2hlbWFWZXJzaW9uOiB0aGlzLnhtbFNjaGVtYVZlcnNpb24sXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIExpbmVOdW1iZXI6IHRoaXMuZ2VuZXJhdGVMaW5lTnVtYmVyKCksXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIE5ldFZhbHVlOiB0aGlzLmNvbnZlcnRUb1N0cmluZygtMSAqIHRoaXMucmVtb3ZlRGVjaW1hbCgoTWF0aC5yb3VuZChlbGVtZW50LmFtb3VudCkpKSksXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIEVmZmVjdGl2ZU5ldFZhbHVlOiB0aGlzLmNvbnZlcnRUb1N0cmluZygtMSAqIHRoaXMucmVtb3ZlRGVjaW1hbCgoTWF0aC5yb3VuZChlbGVtZW50LmFtb3VudCkpKSksXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIERlc2NyaXB0aW9uOiB0aGlzLmdldERlc2NyaXB0aW9uKGVsZW1lbnQpLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBEZXZpY2VJRDogdGhpcy5kZXZpY2VJZCxcclxuICAgICAgICAgICAgICAgICAgICAgICAgVXNlcklEOiB0aGlzLnRyYW5zYWN0aW9uRG9jdW1lbnQudXNlck5hbWUsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIERhdGVUaW1lQ3JlYXRlZDogdGhpcy51cGRhdGVkQXQsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIFRlbmRlclR5cGU6IGVsZW1lbnQuZXh0ZXJuYWxUZW5kZXJUeXBlID8gZWxlbWVudC5leHRlcm5hbFRlbmRlclR5cGUgOiAnJyxcclxuICAgICAgICAgICAgICAgICAgICAgICAgVGVuZGVyU3ViVHlwZTogZWxlbWVudC5leHRlcm5hbFN1YlRlbmRlclR5cGUgPyBlbGVtZW50LmV4dGVybmFsU3ViVGVuZGVyVHlwZSA6ICcnLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBUZW5kZXJBbW91bnQ6IHRoaXMuY29udmVydFRvU3RyaW5nKC0xICogdGhpcy5yZW1vdmVEZWNpbWFsKChNYXRoLnJvdW5kKGVsZW1lbnQuYW1vdW50KSkpKSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgQ3VycmVuY3lJRDogdGhpcy50cmFuc2FjdGlvbkRvY3VtZW50LmJhc2VDdXJyZW5jeSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgQ3VycmVuY3lEZXNjcmlwdGlvbjogdGhpcy50cmFuc2FjdGlvbkRvY3VtZW50LmJhc2VDdXJyZW5jeSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgR2lmdFZvdWNoZXJTYWxlc0FsbG93ZWQ6ICcnLC8vdG9kb1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBBbGxvd1JlY2hhcmdlYWJsZVZvdWNoZXJTYWxlczogJycsLy90b2RvXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIEdpZnRWb3VjaGVySUQ6ICcnXHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMucmpPYmplY3RbJ0Nhc2hUZW5kZXInXS5wdXNoKG9iailcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgICAgIGxldCBvYmoxID0ge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBYTUxTY2hlbWFWZXJzaW9uOiBcIjFcIixcclxuICAgICAgICAgICAgICAgICAgICAgICAgTGluZU51bWJlcjogdGhpcy5nZW5lcmF0ZUxpbmVOdW1iZXIoKSwvL3RvZG9cclxuICAgICAgICAgICAgICAgICAgICAgICAgTmV0VmFsdWU6IEpTT04uc3RyaW5naWZ5KC0xICogKE1hdGgucm91bmQoZWxlbWVudC5hbW91bnQpKSksXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIEVmZmVjdGl2ZU5ldFZhbHVlOiBKU09OLnN0cmluZ2lmeSgtMSAqIChNYXRoLnJvdW5kKGVsZW1lbnQuYW1vdW50KSkpLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBEZXNjcmlwdGlvbjogdGhpcy5nZXREZXNjcmlwdGlvbihlbGVtZW50KSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgRGV2aWNlSUQ6IHRoaXMuZGV2aWNlSWQsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIFVzZXJJRDogdGhpcy50cmFuc2FjdGlvbkRvY3VtZW50LnVzZXJOYW1lLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBEYXRlVGltZUNyZWF0ZWQ6IHRoaXMudXBkYXRlZEF0LFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBUZW5kZXJUeXBlOiBlbGVtZW50LmV4dGVybmFsVGVuZGVyVHlwZSA/IGVsZW1lbnQuZXh0ZXJuYWxUZW5kZXJUeXBlIDogJycsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIFRlbmRlclN1YlR5cGU6IGVsZW1lbnQuZXh0ZXJuYWxTdWJUZW5kZXJUeXBlID8gZWxlbWVudC5leHRlcm5hbFN1YlRlbmRlclR5cGUgOiAnJyxcclxuICAgICAgICAgICAgICAgICAgICAgICAgVGVuZGVyQW1vdW50OiBKU09OLnN0cmluZ2lmeSgtMSAqIChNYXRoLnJvdW5kKGVsZW1lbnQuYW1vdW50KSkpLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBDdXJyZW5jeUlEOiB0aGlzLnRyYW5zYWN0aW9uRG9jdW1lbnQuYmFzZUN1cnJlbmN5LFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBDdXJyZW5jeURlc2NyaXB0aW9uOiB0aGlzLnRyYW5zYWN0aW9uRG9jdW1lbnQuYmFzZUN1cnJlbmN5LFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBJbmNsdWRlSW5UcmFuc2FjdGlvblRvdGFsQ2hlY2s6IFwiMVwiLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBBbGxvd1JlY2hhcmdlYWJsZVZvdWNoZXJTYWxlczogXCIxXCIsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIE9wZW5EcmF3ZXJBdEVuZDogXCIxXCJcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5yak9iamVjdFsnQ2FzaFRlbmRlciddLnB1c2gob2JqMSlcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiB0aGlzO1xyXG4gICAgfVxyXG5cclxuICAgIHNldExpbmVOdW1iZXJGb3JQcm9kdWN0cygpIHtcclxuICAgICAgICBsZXQgaXRlbUxpbmVJZEFycmF5ID0gW107XHJcbiAgICAgICAgaXRlbUxpbmVJZEFycmF5ID0gdGhpcy50cmFuc2FjdGlvbkRvY3VtZW50LmJhc2tldC5wcm9kdWN0cy5tYXAoKHByb2R1Y3Q6IGFueSkgPT4ge1xyXG4gICAgICAgICAgICByZXR1cm4gcGFyc2VJbnQocHJvZHVjdC5pdGVtTGluZUlkKTtcclxuICAgICAgICB9KVxyXG4gICAgICAgIHRoaXMubGFyZ2VzdE51bWJlciA9IGl0ZW1MaW5lSWRBcnJheS5yZWR1Y2UoKGE6IGFueSwgYjogYW55KSA9PiBNYXRoLm1heChhLCBiKSk7XHJcbiAgICB9XHJcblxyXG4gICAgZ2VuZXJhdGVMaW5lTnVtYmVyKCkge1xyXG4gICAgICAgIHRoaXMubGFyZ2VzdE51bWJlciArPSAxO1xyXG4gICAgICAgIHRoaXMuaXRlbUNvdW50ICs9IDE7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMubGFyZ2VzdE51bWJlcjtcclxuICAgIH1cclxuXHJcbiAgICBpbml0aWxpemVJdGVtQ291bnQoKSB7XHJcbiAgICAgICAgdGhpcy5pdGVtQ291bnQgPSB0aGlzLnRyYW5zYWN0aW9uRG9jdW1lbnQuYmFza2V0LnByb2R1Y3RzLmxlbmd0aDtcclxuICAgIH1cclxuXHJcbiAgICBidWlsZCgpIHtcclxuICAgICAgICByZXR1cm4gdGhpcy5yak9iamVjdDtcclxuICAgIH1cclxuXHJcbiAgICBnZXREZXNjcmlwdGlvbihlbGVtZW50OiBhbnkpIHtcclxuICAgICAgICBpZiAoZWxlbWVudC5wYXltZW50VHlwZS50b1VwcGVyQ2FzZSgpID09PSAnQ0FSRCcpIHtcclxuICAgICAgICAgICAgcmV0dXJuIGVsZW1lbnQuY2FyZFR5cGVcclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgIHJldHVybiBlbGVtZW50LnBheW1lbnRUeXBlO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBzZXREZXZpY2VJbmZvKGlkOiBhbnkpIHtcclxuICAgICAgICB0aGlzLmRldmljZUlkID0gaWRcclxuICAgICAgICByZXR1cm4gdGhpc1xyXG4gICAgfVxyXG5cclxuICAgIHJlbW92ZURlY2ltYWwodmFsdWU6IG51bWJlcikge1xyXG4gICAgICAgIHJldHVybiB2YWx1ZSAqIDEwMDtcclxuICAgIH1cclxuXHJcbiAgICBzZXRUcmFuc2FjdGlvbk51bWJlcih2YWx1ZTogYW55KSB7XHJcbiAgICAgICAgdGhpcy50cmFuc2FjdGlvbk51bWJlciA9IHZhbHVlO1xyXG4gICAgICAgIHJldHVybiB0aGlzXHJcbiAgICB9XHJcblxyXG4gICAgc2V0TWFuaWZlc3RWZXJzaW9uKHZhbHVlOiBhbnkpIHtcclxuICAgICAgICB0aGlzLm1hbmlmZXN0VmVyc2lvbiA9IHZhbHVlO1xyXG4gICAgICAgIHJldHVybiB0aGlzXHJcbiAgICB9XHJcblxyXG4gICAgc2V0RGF0YWJhc2VTY2hlbWFWZXJzaW9uKHZhbHVlOiBhbnkpIHtcclxuICAgICAgICB0aGlzLmRhdGFiYXNlU2NoZW1hVmVyc2lvbiA9IHZhbHVlO1xyXG4gICAgICAgIHJldHVybiB0aGlzXHJcbiAgICB9XHJcblxyXG4gICAgc2V0QmFza2V0VHlwZSh2YWx1ZTogYW55KSB7XHJcbiAgICAgICAgdGhpcy5iYXNrZXRUeXBlID0gdmFsdWU7XHJcbiAgICAgICAgcmV0dXJuIHRoaXNcclxuICAgIH1cclxuXHJcbiAgICBzZXRUcmFkaW5nUmVnaW9uSUQodmFsdWU6IGFueSkge1xyXG4gICAgICAgIHRoaXMudHJhZGluZ1JlZ2lvbklkID0gdmFsdWVcclxuICAgICAgICByZXR1cm4gdGhpc1xyXG4gICAgfVxyXG5cclxuICAgIHNldENvbXBhbnlJRCh2YWx1ZTogYW55KSB7XHJcbiAgICAgICAgdGhpcy5jb21wYW55SWQgPSB2YWx1ZVxyXG4gICAgICAgIHJldHVybiB0aGlzXHJcbiAgICB9XHJcblxyXG4gICAgc2V0VGF4TWV0aG9kSUQodmFsdWU6IGFueSkge1xyXG4gICAgICAgIHRoaXMudGF4TWV0aG9kSWQgPSB2YWx1ZVxyXG4gICAgICAgIHJldHVybiB0aGlzXHJcbiAgICB9XHJcblxyXG4gICAgc2V0TWFqb3JWZXJzaW9uKHZhbHVlOiBhbnkpIHtcclxuICAgICAgICB0aGlzLm1ham9yVmVyc2lvbiA9IHZhbHVlXHJcbiAgICAgICAgcmV0dXJuIHRoaXNcclxuICAgIH1cclxuXHJcbiAgICBzZXRNaW5vclZlcnNpb24odmFsdWU6IGFueSkge1xyXG4gICAgICAgIHRoaXMubWlub3JWZXJzaW9uID0gdmFsdWVcclxuICAgICAgICByZXR1cm4gdGhpc1xyXG4gICAgfVxyXG5cclxuICAgIHNldFhNTFNjaGVtYVZlcnNpb24odmFsdWU6IGFueSkge1xyXG4gICAgICAgIHRoaXMueG1sU2NoZW1hVmVyc2lvbiA9IHZhbHVlXHJcbiAgICAgICAgcmV0dXJuIHRoaXNcclxuICAgIH1cclxuXHJcbiAgICBzZXRFeHRlcm5hbFN0YXRlKHZhbHVlOiBhbnkpIHtcclxuICAgICAgICB0aGlzLmV4dGVybmFsU3RhdGUgPSB2YWx1ZVxyXG4gICAgICAgIHJldHVybiB0aGlzXHJcbiAgICB9XHJcblxyXG4gICAgc2V0Q2FzaGllcklEKHZhbHVlOiBhbnkpIHtcclxuICAgICAgICB0aGlzLmNhc2hpZXJJZCA9ICh0aGlzLnRyYW5zYWN0aW9uRG9jdW1lbnQgJiYgdGhpcy50cmFuc2FjdGlvbkRvY3VtZW50LnVzZXJOYW1lKSA/ICB0aGlzLnRyYW5zYWN0aW9uRG9jdW1lbnQudXNlck5hbWUgOiAnJztcclxuICAgICAgICByZXR1cm4gdGhpc1xyXG4gICAgfVxyXG5cclxuICAgIHNldFRlcm1pbmFsTnVtYmVyKHZhbHVlOiBhbnkpIHtcclxuICAgICAgICB0aGlzLnRlcm1pbmFsTnVtYmVyID0gdmFsdWU7XHJcbiAgICAgICAgcmV0dXJuIHRoaXM7XHJcbiAgICB9XHJcblxyXG4gICAgc2V0QmFza2V0TGFuZ3VhZ2VJRCh2YWx1ZTogYW55KSB7XHJcbiAgICAgICAgdGhpcy5iYXNrZXRMYW5ndWFnZUlkID0gdmFsdWU7XHJcbiAgICAgICAgcmV0dXJuIHRoaXM7XHJcbiAgICB9XHJcbiAgICBzZXRCYXNrZXRDb3VudHJ5SUQodmFsdWU6IGFueSkge1xyXG4gICAgICAgIHRoaXMuYmFza2V0Q291bnRyeUlkID0gdmFsdWU7XHJcbiAgICAgICAgcmV0dXJuIHRoaXM7XHJcbiAgICB9XHJcblxyXG4gICAgc2V0QmFza2V0Q3VycmVuY3lJRCh2YWx1ZTogYW55KSB7XHJcbiAgICAgICAgdGhpcy5iYXNrZXRDdXJyZW5jeUlkID0gdmFsdWU7XHJcbiAgICAgICAgcmV0dXJuIHRoaXM7XHJcbiAgICB9XHJcblxyXG4gICAgc2V0QnJhbmNoSUQodmFsdWU6IGFueSkge1xyXG4gICAgICAgIHRoaXMuYnJhbmNoSWQgPSB2YWx1ZTtcclxuICAgICAgICByZXR1cm4gdGhpcztcclxuICAgIH1cclxuXHJcbiAgICBnZW5lcmF0ZUlkKGRhdGU6IGFueSkge1xyXG4gICAgICAgIGxldCBuZXdEYXRlVGltZSA9IGRhdGUucmVwbGFjZSgvW14wLTldL2csICcnKVxyXG4gICAgICAgIGxldCBpZCA9ICh0aGlzLmRldmljZUlkICsgJ3wnICsgbmV3RGF0ZVRpbWUgKyAnfCcgKyB0aGlzLnRyYW5zYWN0aW9uTnVtYmVyKS50b1N0cmluZygpO1xyXG4gICAgICAgIHJldHVybiBpZDtcclxuICAgIH0gXHJcblxyXG4gICAgZ2VuZXJhdGVUaW1lem9uZW9mZnNldChkYXRlOiBhbnkpIHtcclxuICAgICAgICBsZXQgeCA9IGRhdGUgPyBkYXRlIDogJyc7XHJcbiAgICAgICAgcmV0dXJuIG5ldyBEYXRlKHgpLmdldFRpbWV6b25lT2Zmc2V0KCk7XHJcbiAgICB9XHJcblxyXG4gICAgZ2VuZXJhdGVLZXl3b3JkKCkge1xyXG4gICAgICAgIGxldCB4ID0gKHRoaXMuY29tcGFueUlkICsgJ3wnICsgdGhpcy50cmFuc2FjdGlvbkRvY3VtZW50LnN0b3JlSWQgKyAnfCcgKyB0aGlzLnRlcm1pbmFsTnVtYmVyICsgJ3wnICsgdGhpcy50cmFuc2FjdGlvbk51bWJlcikudG9TdHJpbmcoKTtcclxuICAgICAgICByZXR1cm4geDtcclxuICAgIH1cclxuXHJcbiAgICBnZXRTdGF0ZSgpIHtcclxuICAgICAgICBpZiAodGhpcy50cmFuc2FjdGlvbkRvY3VtZW50Lm9wZXJhdGlvblN0YXR1cyA9PT0gJ1BBWV9TVUNDRVNTJykge1xyXG4gICAgICAgICAgICByZXR1cm4gJ0NvbXBsZXRlZCc7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICByZXR1cm4gJ0NhbmNlbGxlZCc7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIHJldHVyblByb2R1Y3QoZWxlbWVudDogYW55LCBsaW5lRGlzY291bnQ6IExpbmVEaXNjb3VudCkge1xyXG4gICAgICAgIGxldCBvYmo6IGFueSA9IHt9XHJcbiAgICAgICAgbGV0IHRheFRvdGFsID0gdGhpcy50cmFuc2FjdGlvbkRvY3VtZW50LmJhc2tldFsndGF4QnJlYWtkb3duJ11bJ3RheExpbmVzJ10uZmluZCgoaXRlbTogYW55KSA9PiBpdGVtLml0ZW1MaW5lSWQgPT0gZWxlbWVudFsnaXRlbUxpbmVJZCddKTtcclxuICAgICAgICBvYmpbJ1hNTFNjaGVtYVZlcnNpb24nXSA9IHRoaXMueG1sU2NoZW1hVmVyc2lvbjtcclxuICAgICAgICBvYmpbJ0xpbmVOdW1iZXInXSA9IGVsZW1lbnRbJ2l0ZW1MaW5lSWQnXTtcclxuICAgICAgICBvYmpbJ05ldFZhbHVlJ10gPSB0aGlzLnJlbW92ZURlY2ltYWwoZWxlbWVudFsncmVmdW5kZWRUb3RhbCddKTtcclxuICAgICAgICBvYmpbJ0VmZmVjdGl2ZU5ldFZhbHVlJ10gPSB0aGlzLnJlbW92ZURlY2ltYWwoZWxlbWVudFsncmVmdW5kZWRUb3RhbCddKTtcclxuICAgICAgICBvYmpbJ0Rlc2NyaXB0aW9uJ10gPSBlbGVtZW50WydkZXNjcmlwdGlvbiddO1xyXG4gICAgICAgIG9ialsnRGV2aWNlSUQnXSA9IHRoaXMudHJhbnNhY3Rpb25Eb2N1bWVudFsndGVybWluYWxJZCddO1xyXG4gICAgICAgIG9ialsnVXNlcklEJ10gPSB0aGlzLnRyYW5zYWN0aW9uRG9jdW1lbnQudXNlck5hbWU7XHJcbiAgICAgICAgb2JqWydEYXRlVGltZUNyZWF0ZWQnXSA9IHRoaXMuY3JlYXRlZEF0O1xyXG4gICAgICAgIG9ialsnRXh0ZW5kZWRWYWx1ZSddID0gdGhpcy5yZW1vdmVEZWNpbWFsKGVsZW1lbnRbJ3RvdGFsTGluZVByaWNlJ10qLTEpO1xyXG4gICAgICAgIG9ialsnVW5pdFByaWNlJ10gPSB0aGlzLnJlbW92ZURlY2ltYWwoZWxlbWVudFsncHJpY2UnXSk7XHJcbiAgICAgICAgb2JqWydRdWFudGl0eSddID0gZWxlbWVudFsncmVmdW5kZWRRdWFudGl0eSddIDwgMCA/IGVsZW1lbnRbJ3JlZnVuZGVkUXVhbnRpdHknXS50b0ZpeGVkKDEpIDogLWVsZW1lbnRbJ3JlZnVuZGVkUXVhbnRpdHknXS50b0ZpeGVkKDEpO1xyXG4gICAgICAgIG9ialsnT3JpZ2luYWxUYXhBbW91bnRTZXQnXSA9IDE7XHJcbiAgICAgICAgb2JqWydQcm9kdWN0SUQnXSA9IGVsZW1lbnRbJ1NLVSddO1xyXG4gICAgICAgIG9ialsnSGFuZEtleWVkJ10gPSAxO1xyXG4gICAgICAgIG9ialsnTG9uZ0Rlc2NyaXB0aW9uJ10gPSBlbGVtZW50WydkZXNjcmlwdGlvbiddO1xyXG4gICAgICAgIG9ialsnUmV0dXJuJ10gPSB7fTtcclxuICAgICAgICBvYmpbJ1JldHVybiddWydSZXR1cm5SZWFzb25JRCddID0gZWxlbWVudFsncmVmdW5kZWRSZWFzb24nXTtcclxuICAgICAgICBvYmpbJ1JldHVybiddWydSZXR1cm5EZXNjcmlwdGlvbiddID0gZWxlbWVudFsncmVmdW5kZWRSZWFzb25EZXNjcmlwdGlvbiddO1xyXG4gICAgICAgIG9ialsnUmV0dXJuJ11bJ1JldHVyblRvU3RvY2snXSA9IGVsZW1lbnRbJ3JlZnVuZGVkUXVhbnRpdHknXSA+IDAgPyBlbGVtZW50WydyZWZ1bmRlZFF1YW50aXR5J10udG9GaXhlZCgxKSA6IC0xICogZWxlbWVudFsncmVmdW5kZWRRdWFudGl0eSddLnRvRml4ZWQoMSk7XHJcbiAgICAgICAgb2JqWydUYXhDb2RlJ10gPSB0aGlzLnRyYW5zYWN0aW9uRG9jdW1lbnQuYmFza2V0Wyd0YXhCcmVha2Rvd24nXVsndGF4TGluZXMnXS5maW5kKChpdGVtOiBhbnkpID0+IGl0ZW0uaXRlbUxpbmVJZCA9PSBlbGVtZW50WydpdGVtTGluZUlkJ10pLlZBVENvZGU7XHJcblxyXG4gICAgICAgIG9ialsnRGlzcGxheVRheENvZGUnXSA9ICcnOyAvLyB0b2RvXHJcbiAgICAgICAgb2JqWydQcm9kdWN0QXR0cmlidXRlcyddID0gJyc7IC8vdG9kbyAtIG5vdCByZXF1aXJlZFxyXG4gICAgICAgIG9ialsnUGVyaXNoYWJsZSddID0gdGhpcy5nZXRBdHRyaWJ1dGVzKCk7XHJcbiAgICAgICAgb2JqWydNTUdyb3VwSUQnXSA9IHRoaXMuZ2V0QXR0cmlidXRlcygpO1xyXG4gICAgICAgIG9ialsnQ3VzdG9tZXJEZXRhaWxzJ10gPSBcIlwiOyAvLyB0b2RvIC0gYmxhbmtcclxuICAgICAgICBvYmpbJ1RvdGFsUHJvbW90aW9uU2F2aW5nJ10gPSBlbGVtZW50Wydwcm9tb3Rpb25BbW91bnQnXSB8fCAtMTsgLy8gVE9ET1xyXG4gICAgICAgIG9ialsnT3JpZ2luYWxUYXhBbW91bnQnXSA9IHRoaXMuY29udmVydFRvU3RyaW5nKHRoaXMuZ2V0b3JpZ2lubHRheChlbGVtZW50LHRheFRvdGFsLlZBVCkgKiAtMSlcclxuICAgICAgICBvYmpbJ3RheEFtb3VudCddID0gdGF4VG90YWwudGF4TGluZVRvdGFsIDwgMCA/KHRheFRvdGFsLnRheExpbmVUb3RhbCkgOiAoLXRheFRvdGFsLnRheExpbmVUb3RhbCk7XHJcblxyXG4gICAgICAgIGlmIChsaW5lRGlzY291bnQpIHtcclxuICAgICAgICAgICAgaWYgKGxpbmVEaXNjb3VudC5wZXJjZW50YWdlRGlzY291bnRSZWFzb25OYW1lICYmIGxpbmVEaXNjb3VudC5wZXJjZW50YWdlRGlzY291bnRSZWFzb25Db2RlKSB7XHJcbiAgICAgICAgICAgICAgICAvLyBsaW5lIGRpc2NvdW50XHJcbiAgICAgICAgICAgICAgICBvYmpbJ0Rpc2NvdW50J10gPSB7fTtcclxuICAgICAgICAgICAgICAgIG9ialsnRGlzY291bnQnXS5Nb2RpZmllclZhbHVlID0gdGhpcy5yZW1vdmVEZWNpbWFsKGxpbmVEaXNjb3VudC51bml0UHJpY2UpICogLTE7XHJcbiAgICAgICAgICAgICAgICBvYmpbJ0Rpc2NvdW50J10uTW9kaWZpZXJEYXRlVGltZSA9IG9iai5EYXRlVGltZUNyZWF0ZWQ7XHJcbiAgICAgICAgICAgICAgICBvYmpbJ0Rpc2NvdW50J10uTW9kaWZpZXJSZWFzb25JRCA9IGxpbmVEaXNjb3VudC5wZXJjZW50YWdlRGlzY291bnRSZWFzb25Db2RlO1xyXG4gICAgICAgICAgICAgICAgb2JqWydEaXNjb3VudCddLk1vZGlmaWVyRGVzY3JpcHRpb24gPSBsaW5lRGlzY291bnQucGVyY2VudGFnZURpc2NvdW50UmVhc29uTmFtZTtcclxuICAgICAgICAgICAgICAgIG9ialsnRGlzY291bnQnXS5BdXRob3Jpc2luZ1VzZXJJRCA9IHRoaXMudHJhbnNhY3Rpb25Eb2N1bWVudC51c2VyTmFtZTtcclxuICAgICAgICAgICAgICAgIG9ialsnRGlzY291bnQnXS5EaXNjb3VudFR5cGUgPSBsaW5lRGlzY291bnQuZGlzY291bnRUeXBlO1xyXG4gICAgICAgICAgICAgICAgb2JqWydEaXNjb3VudCddLlhNTFNjaGVtYVZlcnNpb24gPSAxO1xyXG4gICAgICAgICAgICAgICAgb2JqWydEaXNjb3VudCddLk9yaWdpbmFsUHJpY2UgPSB0aGlzLnJlbW92ZURlY2ltYWwobGluZURpc2NvdW50LmRpc2NvdW50QW1vdW50ICsgKGxpbmVEaXNjb3VudC5kaXNjb3VudGVkTGluZVByaWNlIHx8IDApKTtcclxuICAgICAgICAgICAgICAgIG9ialsnRGlzY291bnQnXS5EaXNjb3VudGVkVmFsdWUgPSB0aGlzLnJlbW92ZURlY2ltYWwobGluZURpc2NvdW50LnVuaXRQcmljZSk7XHJcbiAgICAgICAgICAgICAgICBvYmpbJ0Rpc2NvdW50J10uRGlzY291bnRQZXJjZW50YWdlID0gbGluZURpc2NvdW50LnBlcmNlbnRhZ2VEaXNjb3VudFZhbHVlO1xyXG4gICAgICAgICAgICAgICAgb2JqWydEaXNjb3VudCddLlJvdW5kaW5nUnVsZSA9IDI7XHJcbiAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgIGlmIChsaW5lRGlzY291bnQucHJpY2VPdmVycmlkZVJlYXNvbkNvZGUgJiYgbGluZURpc2NvdW50LnByaWNlT3ZlcnJpZGVSZWFzb25OYW1lKSB7XHJcbiAgICAgICAgICAgICAgICAvL3ByaWNlIG92ZXJyaWRlXHJcbiAgICAgICAgICAgICAgICBvYmpbJ1ByaWNlT3ZlcnJpZGUnXSA9IHt9O1xyXG4gICAgICAgICAgICAgICAgb2JqWydQcmljZU92ZXJyaWRlJ10uTW9kaWZpZXJWYWx1ZSA9IHRoaXMucmVtb3ZlRGVjaW1hbChsaW5lRGlzY291bnQuZGlzY291bnRBbW91bnQpICogLTE7XHJcbiAgICAgICAgICAgICAgICBvYmpbJ1ByaWNlT3ZlcnJpZGUnXS5Nb2RpZmllckRhdGVUaW1lID0gb2JqLkRhdGVUaW1lQ3JlYXRlZDtcclxuICAgICAgICAgICAgICAgIG9ialsnUHJpY2VPdmVycmlkZSddLk1vZGlmaWVyUmVhc29uSUQgPSBsaW5lRGlzY291bnQucHJpY2VPdmVycmlkZVJlYXNvbkNvZGU7XHJcbiAgICAgICAgICAgICAgICBvYmpbJ1ByaWNlT3ZlcnJpZGUnXS5Nb2RpZmllclJlYXNvbkRlc2NyaXB0aW9uID0gbGluZURpc2NvdW50LnByaWNlT3ZlcnJpZGVSZWFzb25OYW1lO1xyXG4gICAgICAgICAgICAgICAgb2JqWydQcmljZU92ZXJyaWRlJ10uQXV0aG9yaXNpbmdVc2VySUQgPSB0aGlzLnRyYW5zYWN0aW9uRG9jdW1lbnQudXNlck5hbWU7XHJcbiAgICAgICAgICAgICAgICBvYmpbJ1ByaWNlT3ZlcnJpZGUnXS5YTUxTY2hlbWFWZXJzaW9uID0gMTtcclxuICAgICAgICAgICAgICAgIG9ialsnUHJpY2VPdmVycmlkZSddLk5ld1ByaWNlID0gdGhpcy5yZW1vdmVEZWNpbWFsKGxpbmVEaXNjb3VudC51bml0UHJpY2UpO1xyXG4gICAgICAgICAgICAgICAgb2JqWydQcmljZU92ZXJyaWRlJ10uT3JpZ2luYWxQcmljZSA9IHRoaXMucmVtb3ZlRGVjaW1hbChsaW5lRGlzY291bnQuZGlzY291bnRlZExpbmVQcmljZSB8fCAwICsgbGluZURpc2NvdW50LmRpc2NvdW50QW1vdW50KTtcclxuICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgLy91cGRhdGUgdGhlIHByb2R1Y3QgcHJpY2VcclxuICAgICAgICAgICAgb2JqLk5ldFZhbHVlID0gKChsaW5lRGlzY291bnQuZGlzY291bnRlZExpbmVQcmljZSB8fCAwKSArIGxpbmVEaXNjb3VudC5kaXNjb3VudEFtb3VudCkgKiAtMTtcclxuICAgICAgICAgICAgb2JqLkVmZmVjdGl2ZU5ldFZhbHVlID0gKChsaW5lRGlzY291bnQuZGlzY291bnRlZExpbmVQcmljZSB8fCAwKSArIGxpbmVEaXNjb3VudC5kaXNjb3VudEFtb3VudCkgKiAtMTtcclxuICAgICAgICAgICAgb2JqLkV4dGVuZGVkVmFsdWUgPSAoKGxpbmVEaXNjb3VudC5kaXNjb3VudGVkTGluZVByaWNlIHx8IDApICsgbGluZURpc2NvdW50LmRpc2NvdW50QW1vdW50KSAqIC0xO1xyXG4gICAgICAgICAgICBvYmouVW5pdFByaWNlID0gKChsaW5lRGlzY291bnQuZGlzY291bnRlZExpbmVQcmljZSB8fCAwKSArIGxpbmVEaXNjb3VudC5kaXNjb3VudEFtb3VudCkgKiAtMTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIHJldHVybiBvYmo7XHJcbiAgICB9XHJcblxyXG4gICAgYWRkUHJvZHVjdChlbGVtZW50OiBUUHJvZHVjdCwgbGluZURpc2NvdW50OiBMaW5lRGlzY291bnQpIHtcclxuICAgICAgICBsZXQgdGF4VG90YWwgPSB0aGlzLnRyYW5zYWN0aW9uRG9jdW1lbnQuYmFza2V0Wyd0YXhCcmVha2Rvd24nXVsndGF4TGluZXMnXS5maW5kKChpdGVtOiBhbnkpID0+IGl0ZW0uaXRlbUxpbmVJZCA9PSBlbGVtZW50WydpdGVtTGluZUlkJ10pO1xyXG4gICAgICAgIGxldCBvYmo6IGFueSA9IHtcclxuICAgICAgICAgICAgWE1MU2NoZW1hVmVyc2lvbjogdGhpcy54bWxTY2hlbWFWZXJzaW9uLFxyXG4gICAgICAgICAgICBMaW5lTnVtYmVyOiBlbGVtZW50Lml0ZW1MaW5lSWQsXHJcbiAgICAgICAgICAgIE5ldFZhbHVlOiB0aGlzLnJlbW92ZURlY2ltYWwoZWxlbWVudC50b3RhbExpbmVQcmljZSksXHJcbiAgICAgICAgICAgIEVmZmVjdGl2ZU5ldFZhbHVlOiB0aGlzLnJlbW92ZURlY2ltYWwoZWxlbWVudC50b3RhbExpbmVQcmljZSksXHJcbiAgICAgICAgICAgIERlc2NyaXB0aW9uOiBlbGVtZW50LmRlc2NyaXB0aW9uLFxyXG4gICAgICAgICAgICBEZXZpY2VJRDogdGhpcy5kZXZpY2VJZCxcclxuICAgICAgICAgICAgVXNlcklEOiB0aGlzLnRyYW5zYWN0aW9uRG9jdW1lbnQudXNlck5hbWUsXHJcbiAgICAgICAgICAgIERhdGVUaW1lQ3JlYXRlZDogdGhpcy5jcmVhdGVkQXQsXHJcbiAgICAgICAgICAgIEV4dGVuZGVkVmFsdWU6IHRoaXMucmVtb3ZlRGVjaW1hbChlbGVtZW50LnByaWNlKSxcclxuICAgICAgICAgICAgVW5pdFByaWNlOiB0aGlzLnJlbW92ZURlY2ltYWwoZWxlbWVudC5wcmljZSksXHJcbiAgICAgICAgICAgIE1NR3JvdXBJRDogdGhpcy5nZXRBdHRyaWJ1dGVzKCksIC8vdG9kb1xyXG4gICAgICAgICAgICBRdWFudGl0eTogZWxlbWVudC5xdWFudGl0eS50b0ZpeGVkKDEpLFxyXG4gICAgICAgICAgICBTYWxlc3BlcnNvbklEOiB0aGlzLnRyYW5zYWN0aW9uRG9jdW1lbnQudXNlcklkLFxyXG4gICAgICAgICAgICBTYWxlc3BlcnNvbk5hbWU6IHRoaXMudHJhbnNhY3Rpb25Eb2N1bWVudC51c2VyTmFtZSxcclxuICAgICAgICAgICAgVGF4Q29kZTogdGhpcy50cmFuc2FjdGlvbkRvY3VtZW50LmJhc2tldFsndGF4QnJlYWtkb3duJ11bJ3RheExpbmVzJ10uZmluZCgoaXRlbTogYW55KSA9PiBpdGVtLml0ZW1MaW5lSWQgPT0gZWxlbWVudFsnaXRlbUxpbmVJZCddKS5WQVRDb2RlLFxyXG4gICAgICAgICAgICBUYXhNb2RpZmlhYmxlOiAxLCAvL3RvZG9cclxuICAgICAgICAgICAgT3JpZ2luYWxUYXhBbW91bnQgOiAgdGhpcy5jb252ZXJ0VG9TdHJpbmcodGhpcy5nZXRvcmlnaW5sdGF4KGVsZW1lbnQsdGF4VG90YWwuVkFUKSksXHJcbiAgICAgICAgICAgIFRheEFtb3VudCA6ICB0aGlzLmNvbnZlcnRUb1N0cmluZyh0YXhUb3RhbC50YXhMaW5lVG90YWwpLFxyXG4gICAgICAgICAgICBPcmlnaW5hbFRheEFtb3VudFNldDogMSwvL3RvZG9cclxuICAgICAgICAgICAgUHJvZHVjdElEOiBlbGVtZW50LlNLVSxcclxuICAgICAgICAgICAgSGFuZEtleWVkOiAxLC8vdG9kb1xyXG4gICAgICAgICAgICBDdXN0b21lckRldGFpbHM6IFwiXCIsXHJcbiAgICAgICAgICAgIFBlcmlzaGFibGU6IHRoaXMuZ2V0QXR0cmlidXRlcygpXHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmIChsaW5lRGlzY291bnQpIHtcclxuICAgICAgICAgICAgaWYgKGxpbmVEaXNjb3VudC5wZXJjZW50YWdlRGlzY291bnRSZWFzb25OYW1lICYmIGxpbmVEaXNjb3VudC5wZXJjZW50YWdlRGlzY291bnRSZWFzb25Db2RlKSB7XHJcbiAgICAgICAgICAgICAgICAvLyBsaW5lIGRpc2NvdW50XHJcbiAgICAgICAgICAgICAgICBvYmpbJ0Rpc2NvdW50J10gPSB7fTtcclxuICAgICAgICAgICAgICAgIG9ialsnRGlzY291bnQnXS5Nb2RpZmllclZhbHVlID0gdGhpcy5yZW1vdmVEZWNpbWFsKGxpbmVEaXNjb3VudC51bml0UHJpY2UpICogLTE7XHJcbiAgICAgICAgICAgICAgICBvYmpbJ0Rpc2NvdW50J10uTW9kaWZpZXJEYXRlVGltZSA9IG9iai5EYXRlVGltZUNyZWF0ZWQ7XHJcbiAgICAgICAgICAgICAgICBvYmpbJ0Rpc2NvdW50J10uTW9kaWZpZXJSZWFzb25JRCA9IGxpbmVEaXNjb3VudC5wZXJjZW50YWdlRGlzY291bnRSZWFzb25Db2RlO1xyXG4gICAgICAgICAgICAgICAgb2JqWydEaXNjb3VudCddLk1vZGlmaWVyRGVzY3JpcHRpb24gPSBsaW5lRGlzY291bnQucGVyY2VudGFnZURpc2NvdW50UmVhc29uTmFtZTtcclxuICAgICAgICAgICAgICAgIG9ialsnRGlzY291bnQnXS5BdXRob3Jpc2luZ1VzZXJJRCA9IHRoaXMudHJhbnNhY3Rpb25Eb2N1bWVudC51c2VyTmFtZTtcclxuICAgICAgICAgICAgICAgIG9ialsnRGlzY291bnQnXS5EaXNjb3VudFR5cGUgPSBsaW5lRGlzY291bnQuZGlzY291bnRUeXBlO1xyXG4gICAgICAgICAgICAgICAgb2JqWydEaXNjb3VudCddLlhNTFNjaGVtYVZlcnNpb24gPSAxO1xyXG4gICAgICAgICAgICAgICAgb2JqWydEaXNjb3VudCddLk9yaWdpbmFsUHJpY2UgPSB0aGlzLnJlbW92ZURlY2ltYWwobGluZURpc2NvdW50LmRpc2NvdW50QW1vdW50ICsgKGxpbmVEaXNjb3VudC5kaXNjb3VudGVkTGluZVByaWNlIHx8IDApKTtcclxuICAgICAgICAgICAgICAgIG9ialsnRGlzY291bnQnXS5EaXNjb3VudGVkVmFsdWUgPSB0aGlzLnJlbW92ZURlY2ltYWwobGluZURpc2NvdW50LnVuaXRQcmljZSk7XHJcbiAgICAgICAgICAgICAgICBvYmpbJ0Rpc2NvdW50J10uRGlzY291bnRQZXJjZW50YWdlID0gbGluZURpc2NvdW50LnBlcmNlbnRhZ2VEaXNjb3VudFZhbHVlO1xyXG4gICAgICAgICAgICAgICAgb2JqWydEaXNjb3VudCddLlJvdW5kaW5nUnVsZSA9IDI7XHJcbiAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgIGlmIChsaW5lRGlzY291bnQucHJpY2VPdmVycmlkZVJlYXNvbkNvZGUgJiYgbGluZURpc2NvdW50LnByaWNlT3ZlcnJpZGVSZWFzb25OYW1lKSB7XHJcbiAgICAgICAgICAgICAgICAvL3ByaWNlIG92ZXJyaWRlXHJcbiAgICAgICAgICAgICAgICBvYmpbJ1ByaWNlT3ZlcnJpZGUnXSA9IHt9O1xyXG4gICAgICAgICAgICAgICAgb2JqWydQcmljZU92ZXJyaWRlJ10uTW9kaWZpZXJWYWx1ZSA9IHRoaXMucmVtb3ZlRGVjaW1hbChsaW5lRGlzY291bnQuZGlzY291bnRBbW91bnQpICogLTE7XHJcbiAgICAgICAgICAgICAgICBvYmpbJ1ByaWNlT3ZlcnJpZGUnXS5Nb2RpZmllckRhdGVUaW1lID0gb2JqLkRhdGVUaW1lQ3JlYXRlZDtcclxuICAgICAgICAgICAgICAgIG9ialsnUHJpY2VPdmVycmlkZSddLk1vZGlmaWVyUmVhc29uSUQgPSBsaW5lRGlzY291bnQucHJpY2VPdmVycmlkZVJlYXNvbkNvZGU7XHJcbiAgICAgICAgICAgICAgICBvYmpbJ1ByaWNlT3ZlcnJpZGUnXS5Nb2RpZmllclJlYXNvbkRlc2NyaXB0aW9uID0gbGluZURpc2NvdW50LnByaWNlT3ZlcnJpZGVSZWFzb25OYW1lO1xyXG4gICAgICAgICAgICAgICAgb2JqWydQcmljZU92ZXJyaWRlJ10uQXV0aG9yaXNpbmdVc2VySUQgPSB0aGlzLnRyYW5zYWN0aW9uRG9jdW1lbnQudXNlck5hbWU7XHJcbiAgICAgICAgICAgICAgICBvYmpbJ1ByaWNlT3ZlcnJpZGUnXS5YTUxTY2hlbWFWZXJzaW9uID0gMTtcclxuICAgICAgICAgICAgICAgIG9ialsnUHJpY2VPdmVycmlkZSddLk5ld1ByaWNlID0gdGhpcy5yZW1vdmVEZWNpbWFsKGxpbmVEaXNjb3VudC51bml0UHJpY2UpO1xyXG4gICAgICAgICAgICAgICAgb2JqWydQcmljZU92ZXJyaWRlJ10uT3JpZ2luYWxQcmljZSA9IHRoaXMucmVtb3ZlRGVjaW1hbChsaW5lRGlzY291bnQuZGlzY291bnRlZExpbmVQcmljZSB8fCAwICsgbGluZURpc2NvdW50LmRpc2NvdW50QW1vdW50KTtcclxuICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgLy91cGRhdGUgdGhlIHByb2R1Y3QgcHJpY2VcclxuICAgICAgICAgICAgb2JqWydOZXRWYWx1ZSddID0gKChsaW5lRGlzY291bnQuZGlzY291bnRlZExpbmVQcmljZSB8fCAwKSArIGxpbmVEaXNjb3VudC5kaXNjb3VudEFtb3VudCk7XHJcbiAgICAgICAgICAgIG9ialsnRWZmZWN0aXZlTmV0VmFsdWUnXSA9ICgobGluZURpc2NvdW50LmRpc2NvdW50ZWRMaW5lUHJpY2UgfHwgMCkgKyBsaW5lRGlzY291bnQuZGlzY291bnRBbW91bnQpO1xyXG4gICAgICAgICAgICBvYmpbJ0V4dGVuZGVkVmFsdWUnXSA9ICgobGluZURpc2NvdW50LmRpc2NvdW50ZWRMaW5lUHJpY2UgfHwgMCkgKyBsaW5lRGlzY291bnQuZGlzY291bnRBbW91bnQpO1xyXG4gICAgICAgICAgICBvYmpbJ1VuaXRQcmljZSddID0gKChsaW5lRGlzY291bnQuZGlzY291bnRlZExpbmVQcmljZSB8fCAwKSArIGxpbmVEaXNjb3VudC5kaXNjb3VudEFtb3VudCk7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICByZXR1cm4gb2JqO1xyXG4gICAgfVxyXG5cclxuICAgIGdldG9yaWdpbmx0YXgoZWxlbWVudDogVFByb2R1Y3QsIFZBVCkge1xyXG4gICAgICAgIGxldCBwcmljZWJlZm9yZXRheCA9IChlbGVtZW50LnByaWNlICogMTAwKS8oMTAwICsgVkFUIClcclxuICAgICAgICBsZXQgb3JpZ2luYWx0YXg9IGVsZW1lbnQucHJpY2UgLSBwcmljZWJlZm9yZXRheFxyXG4gICAgICAgIHJldHVybiBvcmlnaW5hbHRheDtcclxuICAgIH1cclxuXHJcbiAgICBjb252ZXJ0VG9TdHJpbmcodmFsdWU6IGFueSkge1xyXG4gICAgICAgIHRyeSB7XHJcbiAgICAgICAgICAgIHZhbHVlID0gSlNPTi5zdHJpbmdpZnkodmFsdWUpO1xyXG4gICAgICAgICAgICByZXR1cm4gdmFsdWU7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGNhdGNoIChlKSB7XHJcbiAgICAgICAgICAgIGNvbnNvbGUubG9nKHZhbHVlLCAnIGNhbiBub3QgYmUgY29udmVydGVkIGluIHN0cmluZycsIGUpO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBnZW5lcmF0ZUR5bmFtaWNTdG9ja0xvb2tVcCgpIHtcclxuICAgICAgICBsZXQgeCA9ICcwJztcclxuICAgICAgICB0aGlzLnRyYW5zYWN0aW9uRG9jdW1lbnQuYmFza2V0LnByb2R1Y3RzLmZvckVhY2goKGVsZW1lbnQ6IGFueSkgPT4ge1xyXG4gICAgICAgICAgICBpZiAoZWxlbWVudC5kZWxpdmVyeU1ldGhvZCA9PT0gJzEnIHx8IGVsZW1lbnQuZGVsaXZlcnlNZXRob2QgPT09ICcyJykge1xyXG4gICAgICAgICAgICAgICAgeCA9ICcxJztcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH0pO1xyXG4gICAgICAgIHJldHVybiB4O1xyXG4gICAgfVxyXG5cclxuICAgIGdldEF0dHJpYnV0ZXMoKXtcclxuICAgICAgICBsZXQgbmFtZTogc3RyaW5nIHwgYW55W10gPSBbXVxyXG4gICAgICAgIHRoaXMudHJhbnNhY3Rpb25Eb2N1bWVudC5iYXNrZXQucHJvZHVjdHMuZm9yRWFjaCgoZWxlbWVudDogYW55KSA9PiB7XHJcbiAgICAgICAgICAgIGlmICggZWxlbWVudC5hdHRyaWJ1dGVzICYmIGVsZW1lbnQuYXR0cmlidXRlcy5sZW5ndGggPiAwKSB7XHJcbiAgICAgICAgICAgICAgICBuYW1lID0gZWxlbWVudC5hdHRyaWJ1dGVzLmZpbHRlcigoeDogYW55KSA9PiB4Lm5hbWUudG9VcHBlckNhc2UoKSA9PT0gZWxlbWVudC5uYW1lLnRvVXBwZXJDYXNlKCkpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfSk7XHJcbiAgICAgICAgaWYgKG5hbWUubGVuZ3RoID4gMCkge1xyXG4gICAgICAgICAgICByZXR1cm4gbmFtZVswXS52YWx1ZVxyXG4gICAgICAgIH1cclxuICAgICAgICBlbHNle1xyXG4gICAgICAgICAgICByZXR1cm4gXCJcIlxyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBnZXRkYXRlKGRhdGU6c3RyaW5nKXtcclxuICAgICAgICBsZXQgb2Zmc2V0ID0gdGhpcy5nZW5lcmF0ZVRpbWV6b25lb2Zmc2V0KGRhdGUpICogLTE7XHJcbiAgICAgICAgbGV0IG9mZnNldEhvdXJzID0gTWF0aC5hYnMoTWF0aC5mbG9vcihvZmZzZXQgLyA2MCkpOyAgICAgICAgXHJcblx0ICAgIGxldCBvZmZzZXRNaW51dGVzID0gTWF0aC5hYnMob2Zmc2V0KSAtIG9mZnNldEhvdXJzICogNjA7XHJcblxyXG4gICAgICAgIGxldCBvZmZzZXRTaWduID0gJysnO1xyXG4gICAgICAgIGlmIChvZmZzZXQgPCAwKSB7XHJcbiAgICAgICAgICAgIG9mZnNldFNpZ24gPSAnLSc7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBsZXQgbmV3ZGF0ZSA9IGRhdGUuc3Vic3RyaW5nKDAsMTkpO1xyXG4gICAgICAgIGxldCB4ID0gKG5ld2RhdGUrIG9mZnNldFNpZ24gK29mZnNldEhvdXJzKyc6JytvZmZzZXRNaW51dGVzKS50b1N0cmluZygpO1xyXG4gICAgICAgIHJldHVybiB4OyAgICAgICAgXHJcbiAgICB9XHJcbiAgICBcclxufSJdfQ==
|