ng-zenduit 2.0.26 → 2.0.27
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.
|
@@ -301,22 +301,23 @@ export class ZenduDatePickerDropdownComponent {
|
|
|
301
301
|
}
|
|
302
302
|
}
|
|
303
303
|
else {
|
|
304
|
-
// Range selection logic
|
|
304
|
+
// Range selection logic — start anchors to start-of-day, end to end-of-day,
|
|
305
|
+
// so a same-day pick spans the full 24h (matches preset semantics).
|
|
305
306
|
if (!this._selectedStart || (this._selectedStart && this._selectedEnd)) {
|
|
306
307
|
// Start new selection
|
|
307
|
-
this._selectedStart =
|
|
308
|
+
this._selectedStart = moment(day.date).startOf('day').toDate();
|
|
308
309
|
this._selectedEnd = null;
|
|
309
310
|
this._activePreset = null;
|
|
310
311
|
}
|
|
311
312
|
else {
|
|
312
313
|
// Complete the range
|
|
313
|
-
const
|
|
314
|
-
if (moment(
|
|
315
|
-
this._selectedEnd =
|
|
316
|
-
this._selectedStart =
|
|
314
|
+
const newDay = moment(day.date).startOf('day').toDate();
|
|
315
|
+
if (moment(newDay).isBefore(this._selectedStart)) {
|
|
316
|
+
this._selectedEnd = moment(this._selectedStart).endOf('day').toDate();
|
|
317
|
+
this._selectedStart = newDay;
|
|
317
318
|
}
|
|
318
319
|
else {
|
|
319
|
-
this._selectedEnd =
|
|
320
|
+
this._selectedEnd = moment(newDay).endOf('day').toDate();
|
|
320
321
|
}
|
|
321
322
|
}
|
|
322
323
|
}
|
|
@@ -518,8 +519,6 @@ export class ZenduDatePickerDropdownComponent {
|
|
|
518
519
|
}
|
|
519
520
|
}
|
|
520
521
|
updateDays(slot, side) {
|
|
521
|
-
const enMonth = moment(slot).format('MMM');
|
|
522
|
-
const translatedMonth = this._translate.instant(enMonth);
|
|
523
522
|
const title = moment(slot).format('MMMM YYYY');
|
|
524
523
|
const dayRows = [];
|
|
525
524
|
let current = moment(slot).startOf('month').startOf('isoWeek');
|
|
@@ -663,4 +662,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.12", ngImpo
|
|
|
663
662
|
type: HostListener,
|
|
664
663
|
args: ['window:mousedown', ['$event']]
|
|
665
664
|
}] } });
|
|
666
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiemVuZHUtZGF0ZS1waWNrZXItZHJvcGRvd24uY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmctemVuZHVpdC9zcmMvbGliL2RhdGUtcGlja2VyLWRyb3Bkb3duL3plbmR1LWRhdGUtcGlja2VyLWRyb3Bkb3duLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25nLXplbmR1aXQvc3JjL2xpYi9kYXRlLXBpY2tlci1kcm9wZG93bi96ZW5kdS1kYXRlLXBpY2tlci1kcm9wZG93bi5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0gsU0FBUyxFQUFjLFlBQVksRUFBRSxZQUFZLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFDbEMsUUFBUSxFQUFFLE1BQU0sRUFBaUIsU0FBUyxFQUMzRSxNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLE1BQU0sTUFBTSxlQUFlLENBQUM7QUFHbkMsT0FBTyxFQUVILCtCQUErQixFQUNsQyxNQUFNLDhCQUE4QixDQUFDOzs7OztBQUV0QyxNQUFNLGlCQUFpQixHQUFHLEdBQUcsQ0FBQztBQU85QixNQUFNLE9BQU8sZ0NBQWdDO0lBdUd6QyxZQUNZLFFBQW9CLEVBQ3BCLFVBQTRCLEVBQ2lCLGFBQXdDO1FBRnJGLGFBQVEsR0FBUixRQUFRLENBQVk7UUFDcEIsZUFBVSxHQUFWLFVBQVUsQ0FBa0I7UUF2Ry9CLFNBQUksR0FBMkIsUUFBUSxDQUFDO1FBQ3hDLFNBQUksR0FBZ0IsSUFBSSxDQUFDO1FBQ3hCLGVBQVUsR0FBRyxJQUFJLFlBQVksRUFBZSxDQUFDO1FBRTlDLGNBQVMsR0FBZ0IsSUFBSSxDQUFDO1FBQzdCLG9CQUFlLEdBQUcsSUFBSSxZQUFZLEVBQWUsQ0FBQztRQUVuRCxZQUFPLEdBQWdCLElBQUksQ0FBQztRQUMzQixrQkFBYSxHQUFHLElBQUksWUFBWSxFQUFlLENBQUM7UUFFaEQsZ0JB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T0FBTztzQkFBZixLQUFLO2dCQUNHLE9BQU87c0JBQWYsS0FBSztnQkFDRyxPQUFPO3NCQUFmLEtBQUs7Z0JBQ0csUUFBUTtzQkFBaEIsS0FBSztnQkFDRyxXQUFXO3NCQUFuQixLQUFLO2dCQUNHLFdBQVc7c0JBQW5CLEtBQUs7Z0JBQ0csZ0JBQWdCO3NCQUF4QixLQUFLO2dCQUNHLFVBQVU7c0JBQWxCLEtBQUs7Z0JBQ0csU0FBUztzQkFBakIsS0FBSztnQkFFbUIsVUFBVTtzQkFBbEMsU0FBUzt1QkFBQyxZQUFZO2dCQThGdkIsUUFBUTtzQkFEUCxZQUFZO3VCQUFDLGVBQWU7Z0JBd0I3QixlQUFlO3NCQURkLFlBQVk7dUJBQUMsa0JBQWtCLEVBQUUsQ0FBQyxRQUFRLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICAgIENvbXBvbmVudCwgRWxlbWVudFJlZiwgRXZlbnRFbWl0dGVyLCBIb3N0TGlzdGVuZXIsIEluamVjdCwgSW5wdXQsXG4gICAgT25DaGFuZ2VzLCBPbkRlc3Ryb3ksIE9uSW5pdCwgT3B0aW9uYWwsIE91dHB1dCwgU2ltcGxlQ2hhbmdlcywgVmlld0NoaWxkXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IG1vbWVudCBmcm9tICdtb21lbnQvbW9tZW50JztcbmltcG9ydCB7IERhdGVQaWNrZXJEYXkgfSBmcm9tICcuLi9kYXRlcGlja2VyL2RhdGUtcGlja2VyLWRheSc7XG5pbXBvcnQgeyBUcmFuc2xhdGVTZXJ2aWNlIH0gZnJvbSAnQG5neC10cmFuc2xhdGUvY29yZSc7XG5pbXBvcnQge1xuICAgIERhdGVQaWNrZXJEcm9wZG93blR5cGUsIERhdGVQaWNrZXJNYXJrZXIsIERhdGVQaWNrZXJQcmVzZXQsIERhdGVSYW5nZVZhbHVlLFxuICAgIFpFTl9EQVRFX1BJQ0tFUl9ERUZBVUxUX1BSRVNFVFNcbn0gZnJvbSAnLi9kYXRlLXBpY2tlci1kcm9wZG93bi50eXBlcyc7XG5cbmNvbnN0IE1PQklMRV9CUkVBS1BPSU5UID0gNzY4O1xuXG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvcjogJ3plbi1kYXRlLXBpY2tlci1kcm9wZG93bicsXG4gICAgdGVtcGxhdGVVcmw6ICcuL3plbmR1LWRhdGUtcGlja2VyLWRyb3Bkb3duLmNvbXBvbmVudC5odG1sJyxcbiAgICBzdHlsZVVybHM6IFsnLi96ZW5kdS1kYXRlLXBpY2tlci1kcm9wZG93bi5jb21wb25lbnQuc2NzcyddXG59KVxuZXhwb3J0IGNsYXNzIFplbmR1RGF0ZVBpY2tlckRyb3Bkb3duQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBPbkNoYW5nZXMsIE9uRGVzdHJveSB7XG5cbiAgICBASW5wdXQoKSB0eXBlOiBEYXRlUGlja2VyRHJvcGRvd25UeXBlID0gJ3NpbmdsZSc7XG4gICAgQElucHV0KCkgZGF0ZTogRGF0ZSB8IG51bGwgPSBudWxsO1xuICAgIEBPdXRwdXQoKSBkYXRlQ2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjxEYXRlIHwgbnVsbD4oKTtcblxuICAgIEBJbnB1dCgpIHN0YXJ0RGF0ZTogRGF0ZSB8IG51bGwgPSBudWxsO1xuICAgIEBPdXRwdXQoKSBzdGFydERhdGVDaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyPERhdGUgfCBudWxsPigpO1xuXG4gICAgQElucHV0KCkgZW5kRGF0ZTogRGF0ZSB8IG51bGwgPSBudWxsO1xuICAgIEBPdXRwdXQoKSBlbmREYXRlQ2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjxEYXRlIHwgbnVsbD4oKTtcblxuICAgIEBPdXRwdXQoKSByYW5nZUNoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXI8RGF0ZVJhbmdlVmFsdWU+KCk7XG5cbiAgICBASW5wdXQoKSBwcmVzZXRzOiBEYXRlUGlja2VyUHJlc2V0W10gfCBudWxsID0gbnVsbDtcbiAgICBASW5wdXQoKSBtaW5EYXRlOiBEYXRlIHwgbnVsbCA9IG51bGw7XG4gICAgQElucHV0KCkgbWF4RGF0ZTogRGF0ZSB8IG51bGwgPSBudWxsO1xuICAgIEBJbnB1dCgpIGRpc2FibGVkOiBib29sZWFuID0gZmFsc2U7XG4gICAgQElucHV0KCkgZGF0ZU1hcmtlcnM6IERhdGVQaWNrZXJNYXJrZXJbXSA9IFtdO1xuICAgIEBJbnB1dCgpIHBsYWNlaG9sZGVyOiBzdHJpbmcgPSAnJztcbiAgICBASW5wdXQoKSBtb2JpbGVCcmVha3BvaW50OiBudW1iZXIgPSBNT0JJTEVfQlJFQUtQT0lOVDtcbiAgICBASW5wdXQoKSB0aW1lUGlja2VyOiBib29sZWFuID0gZmFsc2U7XG4gICAgQElucHV0KCkgYXV0b0FwcGx5OiBib29sZWFuID0gZmFsc2U7XG5cbiAgICBAVmlld0NoaWxkKCd0cmlnZ2VyQnRuJykgdHJpZ2dlckJ0biE6IEVsZW1lbnRSZWY7XG5cbiAgICBtb2JpbGUgPSBmYWxzZTtcbiAgICBpc09wZW4gPSBmYWxzZTtcbiAgICBkcm9wZG93blN0eWxlOiB7IFtrZXk6IHN0cmluZ106IHN0cmluZyB9ID0ge307XG5cbiAgICAvLyBMZWZ0IGNhbGVuZGFyIHN0YXRlXG4gICAgbGVmdEN1cnJlbnRTbG90ID0gbmV3IERhdGUoKTtcbiAgICBsZWZ0RGF5Um93czogQXJyYXk8eyBkYXlzOiBEYXRlUGlja2VyRGF5W10gfT4gPSBbXTtcbiAgICBsZWZ0RGF5c1RpdGxlID0gJyc7XG5cbiAgICAvLyBSaWdodCBjYWxlbmRhciBzdGF0ZSAoZm9yIHJhbmdlIGRlc2t0b3ApXG4gICAgcmlnaHRDdXJyZW50U2xvdCA9IG5ldyBEYXRlKCk7XG4gICAgcmlnaHREYXlSb3dzOiBBcnJheTx7IGRheXM6IERhdGVQaWNrZXJEYXlbXSB9PiA9IFtdO1xuICAgIHJpZ2h0RGF5c1RpdGxlID0gJyc7XG5cbiAgICB3ZWVrRGF5cyA9IFsnTW8nLCAnVHUnLCAnV2UnLCAnVGgnLCAnRnInLCAnU2F0JywgJ1N1J107XG5cbiAgICAvLyBJbnRlcm5hbCBzZWxlY3Rpb24gc3RhdGVcbiAgICBfc2VsZWN0ZWREYXRlOiBEYXRlIHwgbnVsbCA9IG51bGw7XG4gICAgX3NlbGVjdGVkU3RhcnQ6IERhdGUgfCBudWxsID0gbnVsbDtcbiAgICBfc2VsZWN0ZWRFbmQ6IERhdGUgfCBudWxsID0gbnVsbDtcbiAgICBfYWN0aXZlUHJlc2V0OiBzdHJpbmcgfCBudWxsID0gbnVsbDtcbiAgICBfYXBwbGllZFByZXNldExhYmVsOiBzdHJpbmcgfCBudWxsID0gbnVsbDtcbiAgICBfYXBwbGllZFByZXNldFN0YXJ0VGltZTogbnVtYmVyIHwgbnVsbCA9IG51bGw7XG4gICAgX2FwcGxpZWRQcmVzZXRFbmRUaW1lOiBudW1iZXIgfCBudWxsID0gbnVsbDtcblxuICAgIC8vIFRpbWUgcGlja2VyIHN0YXRlXG4gICAgX2hvdXJzOiBudW1iZXIgPSAxMjtcbiAgICBfbWludXRlczogbnVtYmVyID0gMDtcbiAgICBfcGVyaW9kOiAnQU0nIHwgJ1BNJyA9ICdBTSc7XG4gICAgX2hvdXJzRGlzcGxheTogc3RyaW5nID0gJzEyJztcbiAgICBfbWludXRlc0Rpc3BsYXk6IHN0cmluZyA9ICcwMCc7XG5cbiAgICBkZWZhdWx0UHJlc2V0czogRGF0ZVBpY2tlclByZXNldFtdID0gW1xuICAgICAgICB7XG4gICAgICAgICAgICBsYWJlbDogJ1RvZGF5JyxcbiAgICAgICAgICAgIGdldFJhbmdlOiAoKSA9PiAoe1xuICAgICAgICAgICAgICAgIHN0YXJ0OiBtb21lbnQoKS5zdGFydE9mKCdkYXknKS50b0RhdGUoKSxcbiAgICAgICAgICAgICAgICBlbmQ6IG1vbWVudCgpLmVuZE9mKCdkYXknKS50b0RhdGUoKVxuICAgICAgICAgICAgfSlcbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgICAgbGFiZWw6ICdZZXN0ZXJkYXknLFxuICAgICAgICAgICAgZ2V0UmFuZ2U6ICgpID0+ICh7XG4gICAgICAgICAgICAgICAgc3RhcnQ6IG1vbWVudCgpLnN1YnRyYWN0KDEsICdkYXknKS5zdGFydE9mKCdkYXknKS50b0RhdGUoKSxcbiAgICAgICAgICAgICAgICBlbmQ6IG1vbWVudCgpLnN1YnRyYWN0KDEsICdkYXknKS5lbmRPZignZGF5JykudG9EYXRlKClcbiAgICAgICAgICAgIH0pXG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICAgIGxhYmVsOiAnVGhpcyB3ZWVrJyxcbiAgICAgICAgICAgIGdldFJhbmdlOiAoKSA9PiAoe1xuICAgICAgICAgICAgICAgIHN0YXJ0OiBtb21lbnQoKS5zdGFydE9mKCdpc29XZWVrJykudG9EYXRlKCksXG4gICAgICAgICAgICAgICAgZW5kOiBtb21lbnQoKS5lbmRPZignaXNvV2VlaycpLnRvRGF0ZSgpXG4gICAgICAgICAgICB9KVxuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgICBsYWJlbDogJ0xhc3Qgd2VlaycsXG4gICAgICAgICAgICBnZXRSYW5nZTogKCkgPT4gKHtcbiAgICAgICAgICAgICAgICBzdGFydDogbW9tZW50KCkuc3VidHJhY3QoMSwgJ3dlZWsnKS5zdGFydE9mKCdpc29XZWVrJykudG9EYXRlKCksXG4gICAgICAgICAgICAgICAgZW5kOiBtb21lbnQoKS5zdWJ0cmFjdCgxLCAnd2VlaycpLmVuZE9mKCdpc29XZWVrJykudG9EYXRlKClcbiAgICAgICAgICAgIH0pXG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICAgIGxhYmVsOiAnVGhpcyBtb250aCcsXG4gICAgICAgICAgICBnZXRSYW5nZTogKCkgPT4gKHtcbiAgICAgICAgICAgICAgICBzdGFydDogbW9tZW50KCkuc3RhcnRPZignbW9udGgnKS50b0RhdGUoKSxcbiAgICAgICAgICAgICAgICBlbmQ6IG1vbWVudCgpLmVuZE9mKCdtb250aCcpLnRvRGF0ZSgpXG4gICAgICAgICAgICB9KVxuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgICBsYWJlbDogJ0xhc3QgbW9udGgnLFxuICAgICAgICAgICAgZ2V0UmFuZ2U6ICgpID0+ICh7XG4gICAgICAgICAgICAgICAgc3RhcnQ6IG1vbWVudCgpLnN1YnRyYWN0KDEsICdtb250aCcpLnN0YXJ0T2YoJ21vbnRoJykudG9EYXRlKCksXG4gICAgICAgICAgICAgICAgZW5kOiBtb21lbnQoKS5zdWJ0cmFjdCgxLCAnbW9udGgnKS5lbmRPZignbW9udGgnKS50b0RhdGUoKVxuICAgICAgICAgICAgfSlcbiAgICAgICAgfVxuICAgIF07XG5cbiAgICBjb25zdHJ1Y3RvcihcbiAgICAgICAgcHJpdmF0ZSBfZWxlbWVudDogRWxlbWVudFJlZixcbiAgICAgICAgcHJpdmF0ZSBfdHJhbnNsYXRlOiBUcmFuc2xhdGVTZXJ2aWNlLFxuICAgICAgICBAT3B0aW9uYWwoKSBASW5qZWN0KFpFTl9EQVRFX1BJQ0tFUl9ERUZBVUxUX1BSRVNFVFMpIGdsb2JhbFByZXNldHM6IERhdGVQaWNrZXJQcmVzZXRbXSB8IG51bGxcbiAgICApIHtcbiAgICAgICAgaWYgKGdsb2JhbFByZXNldHMgJiYgZ2xvYmFsUHJlc2V0cy5sZW5ndGgpIHtcbiAgICAgICAgICAgIHRoaXMuZGVmYXVsdFByZXNldHMgPSBnbG9iYWxQcmVzZXRzO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuY2hlY2tNb2JpbGUoKTtcbiAgICB9XG5cbiAgICBASG9zdExpc3RlbmVyKCd3aW5kb3c6cmVzaXplJylcbiAgICBvblJlc2l6ZSgpIHtcbiAgICAgICAgdGhpcy5jaGVja01vYmlsZSgpO1xuICAgIH1cblxuICAgIHByaXZhdGUgY2hlY2tNb2JpbGUoKSB7XG4gICAgICAgIHRoaXMubW9iaWxlID0gd2luZG93LmlubmVyV2lkdGggPCB0aGlzLm1vYmlsZUJyZWFrcG9pbnQ7XG4gICAgfVxuXG4gICAgbmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcyk6IHZvaWQge1xuICAgICAgICBpZiAoY2hhbmdlc1snZGF0ZSddICYmIHRoaXMuZGF0ZSkge1xuICAgICAgICAgICAgdGhpcy5fc2VsZWN0ZWREYXRlID0gbmV3IERhdGUodGhpcy5kYXRlKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoY2hhbmdlc1snc3RhcnREYXRlJ10gJiYgdGhpcy5zdGFydERhdGUpIHtcbiAgICAgICAgICAgIHRoaXMuX3NlbGVjdGVkU3RhcnQgPSBuZXcgRGF0ZSh0aGlzLnN0YXJ0RGF0ZSk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGNoYW5nZXNbJ2VuZERhdGUnXSAmJiB0aGlzLmVuZERhdGUpIHtcbiAgICAgICAgICAgIHRoaXMuX3NlbGVjdGVkRW5kID0gbmV3IERhdGUodGhpcy5lbmREYXRlKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIG5nT25EZXN0cm95KCk6IHZvaWQgeyB9XG5cbiAgICBASG9zdExpc3RlbmVyKCd3aW5kb3c6bW91c2Vkb3duJywgWyckZXZlbnQnXSlcbiAgICBvdXRzaWRlSGFuZGxpbmcoZXZlbnQ6IE1vdXNlRXZlbnQpIHtcbiAgICAgICAgaWYgKCF0aGlzLmlzT3BlbikgcmV0dXJuO1xuICAgICAgICBpZiAoIWRvY3VtZW50LmJvZHkuY29udGFpbnMoZXZlbnQudGFyZ2V0IGFzIE5vZGUpKSByZXR1cm47XG4gICAgICAgIGlmICh0aGlzLl9lbGVtZW50Lm5hdGl2ZUVsZW1lbnQuY29udGFpbnMoZXZlbnQudGFyZ2V0KSkgcmV0dXJuO1xuICAgICAgICB0aGlzLmNsb3NlKCk7XG4gICAgfVxuXG4gICAgZ2V0IGFjdGl2ZVByZXNldHMoKTogRGF0ZVBpY2tlclByZXNldFtdIHtcbiAgICAgICAgcmV0dXJuIHRoaXMucHJlc2V0cyB8fCB0aGlzLmRlZmF1bHRQcmVzZXRzO1xuICAgIH1cblxuICAgIGdldCBzaG93UHJlc2V0c1NpZGViYXIoKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiB0aGlzLnR5cGUgPT09ICdyYW5nZScgJiYgIXRoaXMubW9iaWxlO1xuICAgIH1cblxuICAgIGdldCBzaG93RHVhbENhbGVuZGFycygpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIHRoaXMudHlwZSA9PT0gJ3JhbmdlJyAmJiAhdGhpcy5tb2JpbGU7XG4gICAgfVxuXG4gICAgZ2V0IHRyaWdnZXJMYWJlbCgpOiBzdHJpbmcge1xuICAgICAgICBpZiAodGhpcy50eXBlID09PSAnc2luZ2xlJykge1xuICAgICAgICAgICAgaWYgKHRoaXMuZGF0ZSkge1xuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLmZvcm1hdERhdGUodGhpcy5kYXRlKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiB0aGlzLnBsYWNlaG9sZGVyIHx8IHRoaXMuX3RyYW5zbGF0ZS5pbnN0YW50KCdTZWxlY3QgZGF0ZScpO1xuICAgICAgICB9XG4gICAgICAgIGlmICh0aGlzLnN0YXJ0RGF0ZSAmJiB0aGlzLmVuZERhdGUpIHtcbiAgICAgICAgICAgIGlmICh0aGlzLl9hcHBsaWVkUHJlc2V0TGFiZWxcbiAgICAgICAgICAgICAgICAmJiB0aGlzLnN0YXJ0RGF0ZS5nZXRUaW1lKCkgPT09IHRoaXMuX2FwcGxpZWRQcmVzZXRTdGFydFRpbWVcbiAgICAgICAgICAgICAgICAmJiB0aGlzLmVuZERhdGUuZ2V0VGltZSgpID09PSB0aGlzLl9hcHBsaWVkUHJlc2V0RW5kVGltZSkge1xuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLl90cmFuc2xhdGUuaW5zdGFudCh0aGlzLl9hcHBsaWVkUHJlc2V0TGFiZWwpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIGAke3RoaXMuZm9ybWF0RGF0ZSh0aGlzLnN0YXJ0RGF0ZSl9IC0gJHt0aGlzLmZvcm1hdERhdGUodGhpcy5lbmREYXRlKX1gO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB0aGlzLnBsYWNlaG9sZGVyIHx8IHRoaXMuX3RyYW5zbGF0ZS5pbnN0YW50KCdTZWxlY3QgZGF0ZXMnKTtcbiAgICB9XG5cbiAgICBnZXQgbGVnZW5kTWFya2VycygpOiBEYXRlUGlja2VyTWFya2VyW10ge1xuICAgICAgICByZXR1cm4gKHRoaXMuZGF0ZU1hcmtlcnMgfHwgW10pLmZpbHRlcihtID0+ICEhbS50aXRsZSk7XG4gICAgfVxuXG4gICAgZ2V0IGhhc1ZhbHVlKCk6IGJvb2xlYW4ge1xuICAgICAgICBpZiAodGhpcy50eXBlID09PSAnc2luZ2xlJykgcmV0dXJuICEhdGhpcy5kYXRlO1xuICAgICAgICByZXR1cm4gISEodGhpcy5zdGFydERhdGUgJiYgdGhpcy5lbmREYXRlKTtcbiAgICB9XG5cbiAgICBnZXQgZm9ybWF0dGVkU2VsZWN0ZWREYXRlKCk6IHN0cmluZyB7XG4gICAgICAgIHJldHVybiB0aGlzLl9zZWxlY3RlZERhdGUgPyB0aGlzLmZvcm1hdERhdGUodGhpcy5fc2VsZWN0ZWREYXRlKSA6ICcnO1xuICAgIH1cblxuICAgIGdldCBmb3JtYXR0ZWRTdGFydERhdGUoKTogc3RyaW5nIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX3NlbGVjdGVkU3RhcnQgPyB0aGlzLmZvcm1hdERhdGUodGhpcy5fc2VsZWN0ZWRTdGFydCkgOiAnJztcbiAgICB9XG5cbiAgICBnZXQgZm9ybWF0dGVkRW5kRGF0ZSgpOiBzdHJpbmcge1xuICAgICAgICByZXR1cm4gdGhpcy5fc2VsZWN0ZWRFbmQgPyB0aGlzLmZvcm1hdERhdGUodGhpcy5fc2VsZWN0ZWRFbmQpIDogJyc7XG4gICAgfVxuXG4gICAgZm9ybWF0RGF0ZShkYXRlOiBEYXRlKTogc3RyaW5nIHtcbiAgICAgICAgY29uc3QgZW5Nb250aCA9IG1vbWVudChkYXRlKS5mb3JtYXQoJ01NTScpO1xuICAgICAgICBjb25zdCB0cmFuc2xhdGVkTW9udGggPSB0aGlzLl90cmFuc2xhdGUuaW5zdGFudChlbk1vbnRoKTtcbiAgICAgICAgbGV0IGZvcm1hdHRlZCA9IG1vbWVudChkYXRlKS5mb3JtYXQoJ01NTSBELCBZWVlZJykucmVwbGFjZShlbk1vbnRoLCB0cmFuc2xhdGVkTW9udGgpO1xuICAgICAgICBpZiAodGhpcy50aW1lUGlja2VyKSB7XG4gICAgICAgICAgICBmb3JtYXR0ZWQgKz0gJyAnICsgdGhpcy5mb3JtYXRUaW1lKGRhdGUpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBmb3JtYXR0ZWQ7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBmb3JtYXRUaW1lKGRhdGU6IERhdGUpOiBzdHJpbmcge1xuICAgICAgICBsZXQgaCA9IGRhdGUuZ2V0SG91cnMoKTtcbiAgICAgICAgY29uc3QgbSA9IGRhdGUuZ2V0TWludXRlcygpO1xuICAgICAgICBjb25zdCBwZXJpb2QgPSBoID49IDEyID8gJ1BNJyA6ICdBTSc7XG4gICAgICAgIGlmIChoID09PSAwKSBoID0gMTI7XG4gICAgICAgIGVsc2UgaWYgKGggPiAxMikgaCAtPSAxMjtcbiAgICAgICAgcmV0dXJuIGAke3RoaXMuZm9ybWF0TnVtKGgpfToke3RoaXMuZm9ybWF0TnVtKG0pfSAke3BlcmlvZH1gO1xuICAgIH1cblxuICAgIHRvZ2dsZSgpIHtcbiAgICAgICAgaWYgKHRoaXMuZGlzYWJsZWQpIHJldHVybjtcbiAgICAgICAgaWYgKHRoaXMuaXNPcGVuKSB7XG4gICAgICAgICAgICB0aGlzLmNsb3NlKCk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLm9wZW4oKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIG9wZW4oKSB7XG4gICAgICAgIHRoaXMuaXNPcGVuID0gdHJ1ZTtcbiAgICAgICAgdGhpcy5fc2VsZWN0ZWREYXRlID0gdGhpcy5kYXRlID8gbmV3IERhdGUodGhpcy5kYXRlKSA6IG51bGw7XG4gICAgICAgIHRoaXMuX3NlbGVjdGVkU3RhcnQgPSB0aGlzLnN0YXJ0RGF0ZSA/IG5ldyBEYXRlKHRoaXMuc3RhcnREYXRlKSA6IG51bGw7XG4gICAgICAgIHRoaXMuX3NlbGVjdGVkRW5kID0gdGhpcy5lbmREYXRlID8gbmV3IERhdGUodGhpcy5lbmREYXRlKSA6IG51bGw7XG4gICAgICAgIHRoaXMuX2FjdGl2ZVByZXNldCA9ICh0aGlzLl9hcHBsaWVkUHJlc2V0TGFiZWxcbiAgICAgICAgICAgICYmIHRoaXMuc3RhcnREYXRlPy5nZXRUaW1lKCkgPT09IHRoaXMuX2FwcGxpZWRQcmVzZXRTdGFydFRpbWVcbiAgICAgICAgICAgICYmIHRoaXMuZW5kRGF0ZT8uZ2V0VGltZSgpID09PSB0aGlzLl9hcHBsaWVkUHJlc2V0RW5kVGltZSlcbiAgICAgICAgICAgID8gdGhpcy5fYXBwbGllZFByZXNldExhYmVsXG4gICAgICAgICAgICA6IG51bGw7XG5cbiAgICAgICAgaWYgKHRoaXMudGltZVBpY2tlcikge1xuICAgICAgICAgICAgdGhpcy5pbml0VGltZUZyb21EYXRlKHRoaXMudHlwZSA9PT0gJ3NpbmdsZScgPyB0aGlzLmRhdGUgOiB0aGlzLnN0YXJ0RGF0ZSk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAodGhpcy50eXBlID09PSAnc2luZ2xlJykge1xuICAgICAgICAgICAgdGhpcy5sZWZ0Q3VycmVudFNsb3QgPSB0aGlzLl9zZWxlY3RlZERhdGUgPyBuZXcgRGF0ZSh0aGlzLl9zZWxlY3RlZERhdGUpIDogbmV3IERhdGUoKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMubGVmdEN1cnJlbnRTbG90ID0gdGhpcy5fc2VsZWN0ZWRTdGFydCA/IG5ldyBEYXRlKHRoaXMuX3NlbGVjdGVkU3RhcnQpIDogbmV3IERhdGUoKTtcbiAgICAgICAgICAgIHRoaXMucmlnaHRDdXJyZW50U2xvdCA9IG1vbWVudCh0aGlzLmxlZnRDdXJyZW50U2xvdCkuYWRkKDEsICdtb250aCcpLnRvRGF0ZSgpO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy51cGRhdGVDYWxlbmRhcnMoKTtcbiAgICAgICAgdGhpcy51cGRhdGVEcm9wZG93blBvc2l0aW9uKCk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSB1cGRhdGVEcm9wZG93blBvc2l0aW9uKCkge1xuICAgICAgICBpZiAoIXRoaXMudHJpZ2dlckJ0bikgcmV0dXJuO1xuXG4gICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgICAgY29uc3QgcmVjdCA9IHRoaXMudHJpZ2dlckJ0bi5uYXRpdmVFbGVtZW50LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO1xuICAgICAgICAgICAgY29uc3QgZHJvcGRvd25FbCA9IHRoaXMuX2VsZW1lbnQubmF0aXZlRWxlbWVudC5xdWVyeVNlbGVjdG9yKCcuZHJvcGRvd24tbWVudScpO1xuICAgICAgICAgICAgY29uc3QgZHJvcGRvd25IZWlnaHQgPSBkcm9wZG93bkVsID8gZHJvcGRvd25FbC5zY3JvbGxIZWlnaHQgOiA1MDA7XG4gICAgICAgICAgICBjb25zdCBzcGFjZUJlbG93ID0gd2luZG93LmlubmVySGVpZ2h0IC0gcmVjdC5ib3R0b20gLSA4O1xuICAgICAgICAgICAgY29uc3Qgc3BhY2VBYm92ZSA9IHJlY3QudG9wIC0gODtcbiAgICAgICAgICAgIGNvbnN0IG1hcmdpbiA9IDE2O1xuICAgICAgICAgICAgY29uc3Qgdmlld3BvcnRIZWlnaHQgPSB3aW5kb3cuaW5uZXJIZWlnaHQ7XG5cbiAgICAgICAgICAgIGNvbnN0IHN0eWxlOiB7IFtrZXk6IHN0cmluZ106IHN0cmluZyB9ID0geyBsZWZ0OiBgJHtyZWN0LmxlZnR9cHhgIH07XG5cbiAgICAgICAgICAgIGlmIChzcGFjZUJlbG93ID49IGRyb3Bkb3duSGVpZ2h0KSB7XG4gICAgICAgICAgICAgICAgLy8gRml0cyBiZWxvdyB0aGUgdHJpZ2dlclxuICAgICAgICAgICAgICAgIHN0eWxlWyd0b3AnXSA9IGAke3JlY3QuYm90dG9tICsgOH1weGA7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKHNwYWNlQWJvdmUgPj0gZHJvcGRvd25IZWlnaHQpIHtcbiAgICAgICAgICAgICAgICAvLyBGaXRzIGFib3ZlIHRoZSB0cmlnZ2VyXG4gICAgICAgICAgICAgICAgc3R5bGVbJ2JvdHRvbSddID0gYCR7dmlld3BvcnRIZWlnaHQgLSByZWN0LnRvcCArIDh9cHhgO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAvLyBEb2Vzbid0IGZpdCBlaXRoZXIgd2F5IOKAlCBwaW4gdG8gdmlld3BvcnQgc28gZnVsbCBjb250ZW50IGlzIHZpc2libGVcbiAgICAgICAgICAgICAgICBjb25zdCB0b3AgPSBNYXRoLm1heChtYXJnaW4sIHZpZXdwb3J0SGVpZ2h0IC0gZHJvcGRvd25IZWlnaHQgLSBtYXJnaW4pO1xuICAgICAgICAgICAgICAgIHN0eWxlWyd0b3AnXSA9IGAke3RvcH1weGA7XG4gICAgICAgICAgICAgICAgc3R5bGVbJ21heC1oZWlnaHQnXSA9IGAke3ZpZXdwb3J0SGVpZ2h0IC0gdG9wIC0gbWFyZ2lufXB4YDtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgdGhpcy5kcm9wZG93blN0eWxlID0gc3R5bGU7XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIGNsb3NlKCkge1xuICAgICAgICB0aGlzLmlzT3BlbiA9IGZhbHNlO1xuICAgIH1cblxuICAgIC8vIENhbGVuZGFyIG5hdmlnYXRpb25cbiAgICBsZWZ0UHJldk1vbnRoKCkge1xuICAgICAgICB0aGlzLmxlZnRDdXJyZW50U2xvdCA9IG1vbWVudCh0aGlzLmxlZnRDdXJyZW50U2xvdCkuc3VidHJhY3QoMSwgJ21vbnRoJykudG9EYXRlKCk7XG4gICAgICAgIGlmICh0aGlzLnNob3dEdWFsQ2FsZW5kYXJzKSB7XG4gICAgICAgICAgICB0aGlzLnJpZ2h0Q3VycmVudFNsb3QgPSBtb21lbnQodGhpcy5sZWZ0Q3VycmVudFNsb3QpLmFkZCgxLCAnbW9udGgnKS50b0RhdGUoKTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLnVwZGF0ZUNhbGVuZGFycygpO1xuICAgIH1cblxuICAgIGxlZnROZXh0TW9udGgoKSB7XG4gICAgICAgIHRoaXMubGVmdEN1cnJlbnRTbG90ID0gbW9tZW50KHRoaXMubGVmdEN1cnJlbnRTbG90KS5hZGQoMSwgJ21vbnRoJykudG9EYXRlKCk7XG4gICAgICAgIGlmICh0aGlzLnNob3dEdWFsQ2FsZW5kYXJzKSB7XG4gICAgICAgICAgICB0aGlzLnJpZ2h0Q3VycmVudFNsb3QgPSBtb21lbnQodGhpcy5sZWZ0Q3VycmVudFNsb3QpLmFkZCgxLCAnbW9udGgnKS50b0RhdGUoKTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLnVwZGF0ZUNhbGVuZGFycygpO1xuICAgIH1cblxuICAgIHJpZ2h0UHJldk1vbnRoKCkge1xuICAgICAgICB0aGlzLnJpZ2h0Q3VycmVudFNsb3QgPSBtb21lbnQodGhpcy5yaWdodEN1cnJlbnRTbG90KS5zdWJ0cmFjdCgxLCAnbW9udGgnKS50b0RhdGUoKTtcbiAgICAgICAgdGhpcy5sZWZ0Q3VycmVudFNsb3QgPSBtb21lbnQodGhpcy5yaWdodEN1cnJlbnRTbG90KS5zdWJ0cmFjdCgxLCAnbW9udGgnKS50b0RhdGUoKTtcbiAgICAgICAgdGhpcy51cGRhdGVDYWxlbmRhcnMoKTtcbiAgICB9XG5cbiAgICByaWdodE5leHRNb250aCgpIHtcbiAgICAgICAgdGhpcy5yaWdodEN1cnJlbnRTbG90ID0gbW9tZW50KHRoaXMucmlnaHRDdXJyZW50U2xvdCkuYWRkKDEsICdtb250aCcpLnRvRGF0ZSgpO1xuICAgICAgICB0aGlzLmxlZnRDdXJyZW50U2xvdCA9IG1vbWVudCh0aGlzLnJpZ2h0Q3VycmVudFNsb3QpLnN1YnRyYWN0KDEsICdtb250aCcpLnRvRGF0ZSgpO1xuICAgICAgICB0aGlzLnVwZGF0ZUNhbGVuZGFycygpO1xuICAgIH1cblxuICAgIC8vIEZvciBtb2JpbGUvc2luZ2xlIG1vZGUgd2hlbiB0aGVyZSdzIG9ubHkgb25lIGNhbGVuZGFyXG4gICAgcHJldk1vbnRoKCkge1xuICAgICAgICB0aGlzLmxlZnRQcmV2TW9udGgoKTtcbiAgICB9XG5cbiAgICBuZXh0TW9udGgoKSB7XG4gICAgICAgIHRoaXMubGVmdE5leHRNb250aCgpO1xuICAgIH1cblxuICAgIHNlbGVjdERheShkYXk6IERhdGVQaWNrZXJEYXkpIHtcbiAgICAgICAgaWYgKGRheS5pc0Rpc2FibGVkIHx8IGRheS5pc091dHNpZGUpIHJldHVybjtcblxuICAgICAgICBpZiAodGhpcy50eXBlID09PSAnc2luZ2xlJykge1xuICAgICAgICAgICAgdGhpcy5fc2VsZWN0ZWREYXRlID0gbmV3IERhdGUoZGF5LmRhdGUpO1xuICAgICAgICAgICAgaWYgKHRoaXMuYXV0b0FwcGx5KSB7XG4gICAgICAgICAgICAgICAgdGhpcy5hcHBseSgpO1xuICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIC8vIFJhbmdlIHNlbGVjdGlvbiBsb2dpY1xuICAgICAgICAgICAgaWYgKCF0aGlzLl9zZWxlY3RlZFN0YXJ0IHx8ICh0aGlzLl9zZWxlY3RlZFN0YXJ0ICYmIHRoaXMuX3NlbGVjdGVkRW5kKSkge1xuICAgICAgICAgICAgICAgIC8vIFN0YXJ0IG5ldyBzZWxlY3Rpb25cbiAgICAgICAgICAgICAgICB0aGlzLl9zZWxlY3RlZFN0YXJ0ID0gbmV3IERhdGUoZGF5LmRhdGUpO1xuICAgICAgICAgICAgICAgIHRoaXMuX3NlbGVjdGVkRW5kID0gbnVsbDtcbiAgICAgICAgICAgICAgICB0aGlzLl9hY3RpdmVQcmVzZXQgPSBudWxsO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAvLyBDb21wbGV0ZSB0aGUgcmFuZ2VcbiAgICAgICAgICAgICAgICBjb25zdCBuZXdEYXRlID0gbmV3IERhdGUoZGF5LmRhdGUpO1xuICAgICAgICAgICAgICAgIGlmIChtb21lbnQobmV3RGF0ZSkuaXNCZWZvcmUodGhpcy5fc2VsZWN0ZWRTdGFydCkpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5fc2VsZWN0ZWRFbmQgPSBuZXcgRGF0ZSh0aGlzLl9zZWxlY3RlZFN0YXJ0KTtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5fc2VsZWN0ZWRTdGFydCA9IG5ld0RhdGU7XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5fc2VsZWN0ZWRFbmQgPSBuZXdEYXRlO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICB0aGlzLnVwZGF0ZUNhbGVuZGFycygpO1xuICAgIH1cblxuICAgIHNlbGVjdFByZXNldChwcmVzZXQ6IERhdGVQaWNrZXJQcmVzZXQpIHtcbiAgICAgICAgY29uc3QgcmFuZ2UgPSBwcmVzZXQuZ2V0UmFuZ2UoKTtcbiAgICAgICAgdGhpcy5fc2VsZWN0ZWRTdGFydCA9IHJhbmdlLnN0YXJ0O1xuICAgICAgICB0aGlzLl9zZWxlY3RlZEVuZCA9IHJhbmdlLmVuZDtcbiAgICAgICAgdGhpcy5fYWN0aXZlUHJlc2V0ID0gcHJlc2V0LmxhYmVsO1xuICAgICAgICB0aGlzLmxlZnRDdXJyZW50U2xvdCA9IG5ldyBEYXRlKHJhbmdlLnN0YXJ0KTtcbiAgICAgICAgaWYgKHRoaXMuc2hvd0R1YWxDYWxlbmRhcnMpIHtcbiAgICAgICAgICAgIHRoaXMucmlnaHRDdXJyZW50U2xvdCA9IG1vbWVudCh0aGlzLmxlZnRDdXJyZW50U2xvdCkuYWRkKDEsICdtb250aCcpLnRvRGF0ZSgpO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMudXBkYXRlQ2FsZW5kYXJzKCk7XG4gICAgfVxuXG4gICAgZ29Ub1RvZGF5KCkge1xuICAgICAgICBjb25zdCB0b2RheSA9IG5ldyBEYXRlKCk7XG4gICAgICAgIHRoaXMuX3NlbGVjdGVkRGF0ZSA9IG1vbWVudCh0b2RheSkuc3RhcnRPZignZGF5JykudG9EYXRlKCk7XG4gICAgICAgIHRoaXMubGVmdEN1cnJlbnRTbG90ID0gbmV3IERhdGUodG9kYXkpO1xuICAgICAgICB0aGlzLnVwZGF0ZUNhbGVuZGFycygpO1xuICAgIH1cblxuICAgIC8vIFRpbWUgcGlja2VyIG1ldGhvZHNcbiAgICBwcml2YXRlIGZvcm1hdE51bShuOiBudW1iZXIpOiBzdHJpbmcge1xuICAgICAgICByZXR1cm4gbiA8IDEwID8gJzAnICsgbiA6ICcnICsgbjtcbiAgICB9XG5cbiAgICBpbmNyZW1lbnRIb3VycygpIHtcbiAgICAgICAgdGhpcy5faG91cnMgPSB0aGlzLl9ob3VycyA+PSAxMiA/IDEgOiB0aGlzLl9ob3VycyArIDE7XG4gICAgICAgIHRoaXMuX2hvdXJzRGlzcGxheSA9IHRoaXMuZm9ybWF0TnVtKHRoaXMuX2hvdXJzKTtcbiAgICB9XG5cbiAgICBkZWNyZW1lbnRIb3VycygpIHtcbiAgICAgICAgdGhpcy5faG91cnMgPSB0aGlzLl9ob3VycyA8PSAxID8gMTIgOiB0aGlzLl9ob3VycyAtIDE7XG4gICAgICAgIHRoaXMuX2hvdXJzRGlzcGxheSA9IHRoaXMuZm9ybWF0TnVtKHRoaXMuX2hvdXJzKTtcbiAgICB9XG5cbiAgICBpbmNyZW1lbnRNaW51dGVzKCkge1xuICAgICAgICB0aGlzLl9taW51dGVzID0gdGhpcy5fbWludXRlcyA+PSA1OSA/IDAgOiB0aGlzLl9taW51dGVzICsgMTtcbiAgICAgICAgdGhpcy5fbWludXRlc0Rpc3BsYXkgPSB0aGlzLmZvcm1hdE51bSh0aGlzLl9taW51dGVzKTtcbiAgICB9XG5cbiAgICBkZWNyZW1lbnRNaW51dGVzKCkge1xuICAgICAgICB0aGlzLl9taW51dGVzID0gdGhpcy5fbWludXRlcyA8PSAwID8gNTkgOiB0aGlzLl9taW51dGVzIC0gMTtcbiAgICAgICAgdGhpcy5fbWludXRlc0Rpc3BsYXkgPSB0aGlzLmZvcm1hdE51bSh0aGlzLl9taW51dGVzKTtcbiAgICB9XG5cbiAgICBvbkhvdXJzSW5wdXQoZXZlbnQ6IEV2ZW50KSB7XG4gICAgICAgIGNvbnN0IGlucHV0ID0gZXZlbnQudGFyZ2V0IGFzIEhUTUxJbnB1dEVsZW1lbnQ7XG4gICAgICAgIGNvbnN0IHJhdyA9IGlucHV0LnZhbHVlLnJlcGxhY2UoL1xcRC9nLCAnJyk7XG4gICAgICAgIGlmIChyYXcgPT09ICcnKSB7XG4gICAgICAgICAgICB0aGlzLl9ob3VycyA9IDE7XG4gICAgICAgICAgICB0aGlzLl9ob3Vyc0Rpc3BsYXkgPSAnJztcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCB2YWwgPSBwYXJzZUludChyYXcsIDEwKTtcbiAgICAgICAgaWYgKHZhbCA+PSAxICYmIHZhbCA8PSAxMikge1xuICAgICAgICAgICAgdGhpcy5faG91cnMgPSB2YWw7XG4gICAgICAgICAgICB0aGlzLl9ob3Vyc0Rpc3BsYXkgPSByYXc7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBpbnB1dC52YWx1ZSA9IHRoaXMuX2hvdXJzRGlzcGxheTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIG9uTWludXRlc0lucHV0KGV2ZW50OiBFdmVudCkge1xuICAgICAgICBjb25zdCBpbnB1dCA9IGV2ZW50LnRhcmdldCBhcyBIVE1MSW5wdXRFbGVtZW50O1xuICAgICAgICBjb25zdCByYXcgPSBpbnB1dC52YWx1ZS5yZXBsYWNlKC9cXEQvZywgJycpO1xuICAgICAgICBpZiAocmF3ID09PSAnJykge1xuICAgICAgICAgICAgdGhpcy5fbWludXRlcyA9IDA7XG4gICAgICAgICAgICB0aGlzLl9taW51dGVzRGlzcGxheSA9ICcnO1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IHZhbCA9IHBhcnNlSW50KHJhdywgMTApO1xuICAgICAgICBpZiAodmFsID49IDAgJiYgdmFsIDw9IDU5KSB7XG4gICAgICAgICAgICB0aGlzLl9taW51dGVzID0gdmFsO1xuICAgICAgICAgICAgdGhpcy5fbWludXRlc0Rpc3BsYXkgPSByYXc7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBpbnB1dC52YWx1ZSA9IHRoaXMuX21pbnV0ZXNEaXNwbGF5O1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgY2xhbXBIb3VycygpIHtcbiAgICAgICAgdGhpcy5faG91cnMgPSBNYXRoLm1heCgxLCBNYXRoLm1pbigxMiwgdGhpcy5faG91cnMpKTtcbiAgICAgICAgdGhpcy5faG91cnNEaXNwbGF5ID0gdGhpcy5mb3JtYXROdW0odGhpcy5faG91cnMpO1xuICAgIH1cblxuICAgIGNsYW1wTWludXRlcygpIHtcbiAgICAgICAgdGhpcy5fbWludXRlcyA9IE1hdGgubWF4KDAsIE1hdGgubWluKDU5LCB0aGlzLl9taW51dGVzKSk7XG4gICAgICAgIHRoaXMuX21pbnV0ZXNEaXNwbGF5ID0gdGhpcy5mb3JtYXROdW0odGhpcy5fbWludXRlcyk7XG4gICAgfVxuXG4gICAgb25UaW1lRm9jdXMoZXZlbnQ6IEV2ZW50KSB7XG4gICAgICAgIGNvbnN0IGlucHV0ID0gZXZlbnQudGFyZ2V0IGFzIEhUTUxJbnB1dEVsZW1lbnQ7XG4gICAgICAgIGlucHV0LnNlbGVjdCgpO1xuICAgIH1cblxuICAgIG9uVGltZUtleWRvd24oZXZlbnQ6IEtleWJvYXJkRXZlbnQsIHR5cGU6ICdob3VycycgfCAnbWludXRlcycpIHtcbiAgICAgICAgaWYgKGV2ZW50LmtleSA9PT0gJ0Fycm93VXAnKSB7XG4gICAgICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICAgICAgaWYgKHR5cGUgPT09ICdob3VycycpIHRoaXMuaW5jcmVtZW50SG91cnMoKTtcbiAgICAgICAgICAgIGVsc2UgdGhpcy5pbmNyZW1lbnRNaW51dGVzKCk7XG4gICAgICAgIH0gZWxzZSBpZiAoZXZlbnQua2V5ID09PSAnQXJyb3dEb3duJykge1xuICAgICAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgICAgIGlmICh0eXBlID09PSAnaG91cnMnKSB0aGlzLmRlY3JlbWVudEhvdXJzKCk7XG4gICAgICAgICAgICBlbHNlIHRoaXMuZGVjcmVtZW50TWludXRlcygpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgc2V0UGVyaW9kKHBlcmlvZDogJ0FNJyB8ICdQTScpIHtcbiAgICAgICAgdGhpcy5fcGVyaW9kID0gcGVyaW9kO1xuICAgIH1cblxuICAgIHByaXZhdGUgYXBwbHlUaW1lVG9EYXRlKGRhdGU6IERhdGUpOiBEYXRlIHtcbiAgICAgICAgY29uc3QgcmVzdWx0ID0gbmV3IERhdGUoZGF0ZSk7XG4gICAgICAgIGxldCBob3VycyA9IHRoaXMuX2hvdXJzO1xuICAgICAgICBpZiAodGhpcy5fcGVyaW9kID09PSAnQU0nICYmIGhvdXJzID09PSAxMikge1xuICAgICAgICAgICAgaG91cnMgPSAwO1xuICAgICAgICB9IGVsc2UgaWYgKHRoaXMuX3BlcmlvZCA9PT0gJ1BNJyAmJiBob3VycyAhPT0gMTIpIHtcbiAgICAgICAgICAgIGhvdXJzICs9IDEyO1xuICAgICAgICB9XG4gICAgICAgIHJlc3VsdC5zZXRIb3Vycyhob3VycywgdGhpcy5fbWludXRlcywgMCwgMCk7XG4gICAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBpbml0VGltZUZyb21EYXRlKGRhdGU6IERhdGUgfCBudWxsKSB7XG4gICAgICAgIGlmICghZGF0ZSkge1xuICAgICAgICAgICAgdGhpcy5faG91cnMgPSAxMjtcbiAgICAgICAgICAgIHRoaXMuX21pbnV0ZXMgPSAwO1xuICAgICAgICAgICAgdGhpcy5fcGVyaW9kID0gJ0FNJztcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGxldCBoID0gZGF0ZS5nZXRIb3VycygpO1xuICAgICAgICAgICAgdGhpcy5fbWludXRlcyA9IGRhdGUuZ2V0TWludXRlcygpO1xuICAgICAgICAgICAgaWYgKGggPT09IDApIHtcbiAgICAgICAgICAgICAgICB0aGlzLl9ob3VycyA9IDEyO1xuICAgICAgICAgICAgICAgIHRoaXMuX3BlcmlvZCA9ICdBTSc7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKGggPCAxMikge1xuICAgICAgICAgICAgICAgIHRoaXMuX2hvdXJzID0gaDtcbiAgICAgICAgICAgICAgICB0aGlzLl9wZXJpb2QgPSAnQU0nO1xuICAgICAgICAgICAgfSBlbHNlIGlmIChoID09PSAxMikge1xuICAgICAgICAgICAgICAgIHRoaXMuX2hvdXJzID0gMTI7XG4gICAgICAgICAgICAgICAgdGhpcy5fcGVyaW9kID0gJ1BNJztcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgdGhpcy5faG91cnMgPSBoIC0gMTI7XG4gICAgICAgICAgICAgICAgdGhpcy5fcGVyaW9kID0gJ1BNJztcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICB0aGlzLl9ob3Vyc0Rpc3BsYXkgPSB0aGlzLmZvcm1hdE51bSh0aGlzLl9ob3Vycyk7XG4gICAgICAgIHRoaXMuX21pbnV0ZXNEaXNwbGF5ID0gdGhpcy5mb3JtYXROdW0odGhpcy5fbWludXRlcyk7XG4gICAgfVxuXG4gICAgYXBwbHkoKSB7XG4gICAgICAgIGlmICh0aGlzLnR5cGUgPT09ICdzaW5nbGUnKSB7XG4gICAgICAgICAgICBpZiAodGhpcy5fc2VsZWN0ZWREYXRlKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5kYXRlID0gdGhpcy50aW1lUGlja2VyXG4gICAgICAgICAgICAgICAgICAgID8gdGhpcy5hcHBseVRpbWVUb0RhdGUodGhpcy5fc2VsZWN0ZWREYXRlKVxuICAgICAgICAgICAgICAgICAgICA6IG5ldyBEYXRlKHRoaXMuX3NlbGVjdGVkRGF0ZSk7XG4gICAgICAgICAgICAgICAgdGhpcy5kYXRlQ2hhbmdlLmVtaXQodGhpcy5kYXRlKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGlmICh0aGlzLl9zZWxlY3RlZFN0YXJ0KSB7XG4gICAgICAgICAgICAgICAgdGhpcy5zdGFydERhdGUgPSB0aGlzLnRpbWVQaWNrZXJcbiAgICAgICAgICAgICAgICAgICAgPyB0aGlzLmFwcGx5VGltZVRvRGF0ZSh0aGlzLl9zZWxlY3RlZFN0YXJ0KVxuICAgICAgICAgICAgICAgICAgICA6IG5ldyBEYXRlKHRoaXMuX3NlbGVjdGVkU3RhcnQpO1xuICAgICAgICAgICAgICAgIHRoaXMuc3RhcnREYXRlQ2hhbmdlLmVtaXQodGhpcy5zdGFydERhdGUpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKHRoaXMuX3NlbGVjdGVkRW5kKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5lbmREYXRlID0gdGhpcy50aW1lUGlja2VyXG4gICAgICAgICAgICAgICAgICAgID8gdGhpcy5hcHBseVRpbWVUb0RhdGUodGhpcy5fc2VsZWN0ZWRFbmQpXG4gICAgICAgICAgICAgICAgICAgIDogbmV3IERhdGUodGhpcy5fc2VsZWN0ZWRFbmQpO1xuICAgICAgICAgICAgICAgIHRoaXMuZW5kRGF0ZUNoYW5nZS5lbWl0KHRoaXMuZW5kRGF0ZSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAodGhpcy5fc2VsZWN0ZWRTdGFydCAmJiB0aGlzLl9zZWxlY3RlZEVuZCkge1xuICAgICAgICAgICAgICAgIHRoaXMucmFuZ2VDaGFuZ2UuZW1pdCh7IHN0YXJ0OiB0aGlzLnN0YXJ0RGF0ZSwgZW5kOiB0aGlzLmVuZERhdGUgfSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAodGhpcy5fYWN0aXZlUHJlc2V0ICYmIHRoaXMuc3RhcnREYXRlICYmIHRoaXMuZW5kRGF0ZSkge1xuICAgICAgICAgICAgICAgIHRoaXMuX2FwcGxpZWRQcmVzZXRMYWJlbCA9IHRoaXMuX2FjdGl2ZVByZXNldDtcbiAgICAgICAgICAgICAgICB0aGlzLl9hcHBsaWVkUHJlc2V0U3RhcnRUaW1lID0gdGhpcy5zdGFydERhdGUuZ2V0VGltZSgpO1xuICAgICAgICAgICAgICAgIHRoaXMuX2FwcGxpZWRQcmVzZXRFbmRUaW1lID0gdGhpcy5lbmREYXRlLmdldFRpbWUoKTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgdGhpcy5fYXBwbGllZFByZXNldExhYmVsID0gbnVsbDtcbiAgICAgICAgICAgICAgICB0aGlzLl9hcHBsaWVkUHJlc2V0U3RhcnRUaW1lID0gbnVsbDtcbiAgICAgICAgICAgICAgICB0aGlzLl9hcHBsaWVkUHJlc2V0RW5kVGltZSA9IG51bGw7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5jbG9zZSgpO1xuICAgIH1cblxuICAgIGNhbmNlbCgpIHtcbiAgICAgICAgdGhpcy5jbG9zZSgpO1xuICAgIH1cblxuICAgIGdldCBjYW5BcHBseSgpOiBib29sZWFuIHtcbiAgICAgICAgaWYgKHRoaXMudHlwZSA9PT0gJ3NpbmdsZScpIHJldHVybiAhIXRoaXMuX3NlbGVjdGVkRGF0ZTtcbiAgICAgICAgcmV0dXJuICEhKHRoaXMuX3NlbGVjdGVkU3RhcnQgJiYgdGhpcy5fc2VsZWN0ZWRFbmQpO1xuICAgIH1cblxuICAgIHByaXZhdGUgdXBkYXRlQ2FsZW5kYXJzKCkge1xuICAgICAgICB0aGlzLnVwZGF0ZURheXModGhpcy5sZWZ0Q3VycmVudFNsb3QsICdsZWZ0Jyk7XG4gICAgICAgIGlmICh0aGlzLnNob3dEdWFsQ2FsZW5kYXJzKSB7XG4gICAgICAgICAgICB0aGlzLnVwZGF0ZURheXModGhpcy5yaWdodEN1cnJlbnRTbG90LCAncmlnaHQnKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHByaXZhdGUgdXBkYXRlRGF5cyhzbG90OiBEYXRlLCBzaWRlOiAnbGVmdCcgfCAncmlnaHQnKSB7XG4gICAgICAgIGNvbnN0IGVuTW9udGggPSBtb21lbnQoc2xvdCkuZm9ybWF0KCdNTU0nKTtcbiAgICAgICAgY29uc3QgdHJhbnNsYXRlZE1vbnRoID0gdGhpcy5fdHJhbnNsYXRlLmluc3RhbnQoZW5Nb250aCk7XG4gICAgICAgIGNvbnN0IHRpdGxlID0gbW9tZW50KHNsb3QpLmZvcm1hdCgnTU1NTSBZWVlZJyk7XG5cbiAgICAgICAgY29uc3QgZGF5Um93czogQXJyYXk8eyBkYXlzOiBEYXRlUGlja2VyRGF5W10gfT4gPSBbXTtcbiAgICAgICAgbGV0IGN1cnJlbnQgPSBtb21lbnQoc2xvdCkuc3RhcnRPZignbW9udGgnKS5zdGFydE9mKCdpc29XZWVrJyk7XG4gICAgICAgIGNvbnN0IGVuZCA9IG1vbWVudChzbG90KS5lbmRPZignbW9udGgnKS5lbmRPZignaXNvV2VlaycpO1xuICAgICAgICBjb25zdCBjdXJyZW50TW9udGggPSBtb21lbnQoc2xvdCkubW9udGgoKTtcblxuICAgICAgICB3aGlsZSAoY3VycmVudC5pc1NhbWVPckJlZm9yZShlbmQpKSB7XG4gICAgICAgICAgICBjb25zdCByb3cgPSB7IGRheXM6IFtdIGFzIERhdGVQaWNrZXJEYXlbXSB9O1xuICAgICAgICAgICAgZGF5Um93cy5wdXNoKHJvdyk7XG4gICAgICAgICAgICBmb3IgKGxldCBpZHggPSAwOyBpZHggPCA3OyBpZHgrKykge1xuICAgICAgICAgICAgICAgIGNvbnN0IGlzT3V0c2lkZSA9IGN1cnJlbnRNb250aCAhPT0gY3VycmVudC5tb250aCgpO1xuXG4gICAgICAgICAgICAgICAgbGV0IGlzRGlzYWJsZWQgPSBmYWxzZTtcbiAgICAgICAgICAgICAgICBpZiAodGhpcy5taW5EYXRlICYmIGN1cnJlbnQudG9EYXRlKCkgPCB0aGlzLm1pbkRhdGUpIHtcbiAgICAgICAgICAgICAgICAgICAgaXNEaXNhYmxlZCA9IHRydWU7XG4gICAgICAgICAgICAgICAgfSBlbHNlIGlmICh0aGlzLm1heERhdGUgJiYgY3VycmVudC50b0RhdGUoKSA+IHRoaXMubWF4RGF0ZSkge1xuICAgICAgICAgICAgICAgICAgICBpc0Rpc2FibGVkID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICBsZXQgbWFya2VyQ29sb3JzOiAoc3RyaW5nIHwgdW5kZWZpbmVkKVtdIHwgdW5kZWZpbmVkO1xuICAgICAgICAgICAgICAgIGlmICghaXNPdXRzaWRlICYmIHRoaXMuZGF0ZU1hcmtlcnMgJiYgdGhpcy5kYXRlTWFya2Vycy5sZW5ndGgpIHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgdHMgPSBjdXJyZW50LnZhbHVlT2YoKTtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgY29sb3JzOiAoc3RyaW5nIHwgdW5kZWZpbmVkKVtdID0gW107XG4gICAgICAgICAgICAgICAgICAgIGZvciAoY29uc3QgbSBvZiB0aGlzLmRhdGVNYXJrZXJzKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAobS5kYXRlcyAmJiBtLmRhdGVzLmluZGV4T2YodHMpID49IDApIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb2xvcnMucHVzaChtLmNvbG9yKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBpZiAoY29sb3JzLmxlbmd0aCkgbWFya2VyQ29sb3JzID0gY29sb3JzO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIGNvbnN0IGlzU2VsZWN0ZWQgPSBpc091dHNpZGUgPyBmYWxzZSA6IHRoaXMuaXNEYXlTZWxlY3RlZChjdXJyZW50KTtcblxuICAgICAgICAgICAgICAgIHJvdy5kYXlzLnB1c2goe1xuICAgICAgICAgICAgICAgICAgICBkYXRlOiBjdXJyZW50LnRvRGF0ZSgpLFxuICAgICAgICAgICAgICAgICAgICBsYmw6IGlzT3V0c2lkZSA/ICcnIDogY3VycmVudC5kYXRlKCkudG9TdHJpbmcoKSxcbiAgICAgICAgICAgICAgICAgICAgaXNPdXRzaWRlLFxuICAgICAgICAgICAgICAgICAgICBzZWxlY3RlZDogaXNTZWxlY3RlZCxcbiAgICAgICAgICAgICAgICAgICAgaXNEaXNhYmxlZDogaXNPdXRzaWRlID8gdHJ1ZSA6IGlzRGlzYWJsZWQsXG4gICAgICAgICAgICAgICAgICAgIGlzSGlnaGxpZ2h0ZWQ6IGZhbHNlLFxuICAgICAgICAgICAgICAgICAgICBtYXJrZXJDb2xvcnNcbiAgICAgICAgICAgICAgICB9KTtcblxuICAgICAgICAgICAgICAgIGN1cnJlbnQgPSBjdXJyZW50LmNsb25lKCkuYWRkKDEsICdkYXknKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChzaWRlID09PSAnbGVmdCcpIHtcbiAgICAgICAgICAgIHRoaXMubGVmdERheVJvd3MgPSBkYXlSb3dzO1xuICAgICAgICAgICAgdGhpcy5sZWZ0RGF5c1RpdGxlID0gdGl0bGU7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLnJpZ2h0RGF5Um93cyA9IGRheVJvd3M7XG4gICAgICAgICAgICB0aGlzLnJpZ2h0RGF5c1RpdGxlID0gdGl0bGU7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcml2YXRlIGlzRGF5U2VsZWN0ZWQoZGF0ZTogbW9tZW50Lk1vbWVudCk6IGJvb2xlYW4ge1xuICAgICAgICBpZiAodGhpcy50eXBlID09PSAnc2luZ2xlJykge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMuX3NlbGVjdGVkRGF0ZSA/IGRhdGUuaXNTYW1lKG1vbWVudCh0aGlzLl9zZWxlY3RlZERhdGUpLCAnZGF5JykgOiBmYWxzZTtcbiAgICAgICAgfVxuICAgICAgICBpZiAodGhpcy5fc2VsZWN0ZWRTdGFydCAmJiBkYXRlLmlzU2FtZShtb21lbnQodGhpcy5fc2VsZWN0ZWRTdGFydCksICdkYXknKSkgcmV0dXJuIHRydWU7XG4gICAgICAgIGlmICh0aGlzLl9zZWxlY3RlZEVuZCAmJiBkYXRlLmlzU2FtZShtb21lbnQodGhpcy5fc2VsZWN0ZWRFbmQpLCAnZGF5JykpIHJldHVybiB0cnVlO1xuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuXG4gICAgaXNUb2RheShkYXk6IERhdGVQaWNrZXJEYXkpOiBib29sZWFuIHtcbiAgICAgICAgaWYgKGRheS5pc091dHNpZGUpIHJldHVybiBmYWxzZTtcbiAgICAgICAgcmV0dXJuIG1vbWVudChkYXkuZGF0ZSkuaXNTYW1lKG1vbWVudCgpLCAnZGF5Jyk7XG4gICAgfVxuXG4gICAgaXNJblJhbmdlKGRheTogRGF0ZVBpY2tlckRheSk6IGJvb2xlYW4ge1xuICAgICAgICBpZiAoZGF5LmlzT3V0c2lkZSkgcmV0dXJuIGZhbHNlO1xuICAgICAgICBpZiAodGhpcy50eXBlICE9PSAncmFuZ2UnIHx8ICF0aGlzLl9zZWxlY3RlZFN0YXJ0IHx8ICF0aGlzLl9zZWxlY3RlZEVuZCkgcmV0dXJuIGZhbHNlO1xuICAgICAgICBjb25zdCBkID0gbW9tZW50KGRheS5kYXRlKTtcbiAgICAgICAgcmV0dXJuIGQuaXNBZnRlcihtb21lbnQodGhpcy5fc2VsZWN0ZWRTdGFydCksICdkYXknKSAmJiBkLmlzQmVmb3JlKG1vbWVudCh0aGlzLl9zZWxlY3RlZEVuZCksICdkYXknKTtcbiAgICB9XG5cbiAgICBpc1JhbmdlU3RhcnQoZGF5OiBEYXRlUGlja2VyRGF5KTogYm9vbGVhbiB7XG4gICAgICAgIGlmIChkYXkuaXNPdXRzaWRlKSByZXR1cm4gZmFsc2U7XG4gICAgICAgIGlmICh0aGlzLnR5cGUgIT09ICdyYW5nZScgfHwgIXRoaXMuX3NlbGVjdGVkU3RhcnQpIHJldHVybiBmYWxzZTtcbiAgICAgICAgcmV0dXJuIG1vbWVudChkYXkuZGF0ZSkuaXNTYW1lKG1vbWVudCh0aGlzLl9zZWxlY3RlZFN0YXJ0KSwgJ2RheScpO1xuICAgIH1cblxuICAgIGlzUmFuZ2VFbmQoZGF5OiBEYXRlUGlja2VyRGF5KTogYm9vbGVhbiB7XG4gICAgICAgIGlmIChkYXkuaXNPdXRzaWRlKSByZXR1cm4gZmFsc2U7XG4gICAgICAgIGlmICh0aGlzLnR5cGUgIT09ICdyYW5nZScgfHwgIXRoaXMuX3NlbGVjdGVkRW5kKSByZXR1cm4gZmFsc2U7XG4gICAgICAgIHJldHVybiBtb21lbnQoZGF5LmRhdGUpLmlzU2FtZShtb21lbnQodGhpcy5fc2VsZWN0ZWRFbmQpLCAnZGF5Jyk7XG4gICAgfVxufVxuIiwiPGRpdiBjbGFzcz1cInplbi1kcGRcIj5cbiAgICA8IS0tIFRyaWdnZXIgQnV0dG9uIC0tPlxuICAgIDxidXR0b24gY2xhc3M9XCJkcm9wZG93bi10cmlnZ2VyXCJcbiAgICAgICAgICAgICN0cmlnZ2VyQnRuXG4gICAgICAgICAgICBbZGlzYWJsZWRdPVwiZGlzYWJsZWRcIlxuICAgICAgICAgICAgW2NsYXNzLmFjdGl2ZV09XCJpc09wZW5cIlxuICAgICAgICAgICAgW2NsYXNzLmhhcy12YWx1ZV09XCJoYXNWYWx1ZVwiXG4gICAgICAgICAgICAoY2xpY2spPVwidG9nZ2xlKClcIj5cbiAgICAgICAgPHplbi1pY29uIGNsYXNzPVwidHJpZ2dlci1pY29uXCJcbiAgICAgICAgICAgICAgICAgIHNyYz1cImFzc2V0cy9uZy16ZW5kdWl0L2ljb25zL2NhbGVuZGFyLnN2Z1wiPlxuICAgICAgICA8L3plbi1pY29uPlxuICAgICAgICA8c3BhbiBjbGFzcz1cInRyaWdnZXItbGFiZWxcIj57eyB0cmlnZ2VyTGFiZWwgfX08L3NwYW4+XG4gICAgPC9idXR0b24+XG5cbiAgICA8IS0tIERyb3Bkb3duIFBhbmVsIC0tPlxuICAgIDxkaXYgY2xhc3M9XCJkcm9wZG93bi1tZW51XCIgKm5nSWY9XCJpc09wZW5cIiBbY2xhc3MubW9iaWxlXT1cIm1vYmlsZVwiIFtuZ1N0eWxlXT1cImRyb3Bkb3duU3R5bGVcIj5cbiAgICAgICAgPCEtLSBSQU5HRSBERVNLVE9QOiBwcmVzZXRzIHNpZGViYXIgKyBkdWFsIGNhbGVuZGFyIC0tPlxuICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwidHlwZSA9PT0gJ3JhbmdlJyAmJiAhbW9iaWxlXCI+XG4gICAgICAgICAgICA8IS0tIFByZXNldHMgc2lkZWJhciAtLT5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJwcmVzZXRzLXNpZGViYXJcIj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicHJlc2V0LWl0ZW1cIlxuICAgICAgICAgICAgICAgICAgICAgKm5nRm9yPVwibGV0IHByZXNldCBvZiBhY3RpdmVQcmVzZXRzXCJcbiAgICAgICAgICAgICAgICAgICAgIFtjbGFzcy5hY3RpdmVdPVwiX2FjdGl2ZVByZXNldCA9PT0gcHJlc2V0LmxhYmVsXCJcbiAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJzZWxlY3RQcmVzZXQocHJlc2V0KVwiPlxuICAgICAgICAgICAgICAgICAgICB7eyBwcmVzZXQubGFiZWwgfCB0cmFuc2xhdGUgfX1cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwic2lkZWJhci1kaXZpZGVyXCI+PC9kaXY+XG5cbiAgICAgICAgICAgIDwhLS0gQ2FsZW5kYXJzICsgYm90dG9tIHBhbmVsIC0tPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNhbGVuZGFycy1jb250YWluZXJcIj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZHVhbC1jYWxlbmRhcnNcIj5cbiAgICAgICAgICAgICAgICAgICAgPCEtLSBMZWZ0IGNhbGVuZGFyIC0tPlxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2FsZW5kYXItcGFuZWxcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjYWxlbmRhci1jb250ZW50XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm1vbnRoLWhlYWRlclwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIGNsYXNzPVwibmF2LWJ0blwiIChjbGljayk9XCJsZWZ0UHJldk1vbnRoKClcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx6ZW4taWNvbiBzcmM9XCJhc3NldHMvbmctemVuZHVpdC9pY29ucy9hcnJvdy1sZWZ0LnN2Z1wiPjwvemVuLWljb24+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cIm1vbnRoLXRpdGxlXCI+e3sgbGVmdERheXNUaXRsZSB9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz1cIm5hdi1idG5cIiAoY2xpY2spPVwibGVmdE5leHRNb250aCgpXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8emVuLWljb24gc3JjPVwiYXNzZXRzL25nLXplbmR1aXQvaWNvbnMvYXJyb3ctcmlnaHQuc3ZnXCI+PC96ZW4taWNvbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cImNhbGVuZGFyR3JpZDsgY29udGV4dDogeyAkaW1wbGljaXQ6IGxlZnREYXlSb3dzIH1cIj48L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2FsZW5kYXItZGl2aWRlclwiPjwvZGl2PlxuXG4gICAgICAgICAgICAgICAgICAgIDwhLS0gUmlnaHQgY2FsZW5kYXIgLS0+XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjYWxlbmRhci1wYW5lbFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNhbGVuZGFyLWNvbnRlbnRcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibW9udGgtaGVhZGVyXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24gY2xhc3M9XCJuYXYtYnRuXCIgKGNsaWNrKT1cInJpZ2h0UHJldk1vbnRoKClcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx6ZW4taWNvbiBzcmM9XCJhc3NldHMvbmctemVuZHVpdC9pY29ucy9hcnJvdy1sZWZ0LnN2Z1wiPjwvemVuLWljb24+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cIm1vbnRoLXRpdGxlXCI+e3sgcmlnaHREYXlzVGl0bGUgfX08L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24gY2xhc3M9XCJuYXYtYnRuXCIgKGNsaWNrKT1cInJpZ2h0TmV4dE1vbnRoKClcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx6ZW4taWNvbiBzcmM9XCJhc3NldHMvbmctemVuZHVpdC9pY29ucy9hcnJvdy1yaWdodC5zdmdcIj48L3plbi1pY29uPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwiY2FsZW5kYXJHcmlkOyBjb250ZXh0OiB7ICRpbXBsaWNpdDogcmlnaHREYXlSb3dzIH1cIj48L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgICAgICAgIDwhLS0gVGltZSBQaWNrZXIgLS0+XG4gICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cInRpbWVQaWNrZXJcIj5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImJvdHRvbS1kaXZpZGVyXCI+PC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJ0aW1lUGlja2VyU2VjdGlvblwiPjwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImJvdHRvbS1kaXZpZGVyXCI+PC9kaXY+XG5cbiAgICAgICAgICAgICAgICA8IS0tIEJvdHRvbSBwYW5lbDogaW5wdXRzIChvciBsZWdlbmQpICsgYWN0aW9ucyAtLT5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYm90dG9tLXBhbmVsXCI+XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtYXJrZXItbGVnZW5kXCIgKm5nSWY9XCJsZWdlbmRNYXJrZXJzLmxlbmd0aDsgZWxzZSByYW5nZUlucHV0c1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImxlZ2VuZC1pdGVtXCIgKm5nRm9yPVwibGV0IG0gb2YgbGVnZW5kTWFya2Vyc1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwibGVnZW5kLWRvdFwiIFtzdHlsZS5iYWNrZ3JvdW5kXT1cIm0uY29sb3IgfHwgbnVsbFwiPjwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImxlZ2VuZC10aXRsZVwiPnt7IG0udGl0bGUgfCB0cmFuc2xhdGUgfX08L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSAjcmFuZ2VJbnB1dHM+XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiaW5wdXQtZmllbGRzXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImRhdGUtaW5wdXRcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJkYXRlLWlucHV0LXRleHRcIiBbY2xhc3MucGxhY2Vob2xkZXJdPVwiIV9zZWxlY3RlZFN0YXJ0XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7eyBfc2VsZWN0ZWRTdGFydCA/IGZvcm1hdHRlZFN0YXJ0RGF0ZSA6ICgnU3RhcnQgZGF0ZScgfCB0cmFuc2xhdGUpIH19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImRhdGUtc2VwYXJhdG9yXCI+Jm5kYXNoOzwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZGF0ZS1pbnB1dFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImRhdGUtaW5wdXQtdGV4dFwiIFtjbGFzcy5wbGFjZWhvbGRlcl09XCIhX3NlbGVjdGVkRW5kXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7eyBfc2VsZWN0ZWRFbmQgPyBmb3JtYXR0ZWRFbmREYXRlIDogKCdFbmQgZGF0ZScgfCB0cmFuc2xhdGUpIH19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICA8L25nLXRlbXBsYXRlPlxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYWN0aW9uc1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz1cImJ0bi1jYW5jZWxcIiAoY2xpY2spPVwiY2FuY2VsKClcIj57eyAnQ2FuY2VsJyB8IHRyYW5zbGF0ZSB9fTwvYnV0dG9uPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz1cImJ0bi1hcHBseVwiIFtkaXNhYmxlZF09XCIhY2FuQXBwbHlcIiAoY2xpY2spPVwiYXBwbHkoKVwiPnt7ICdBcHBseScgfCB0cmFuc2xhdGUgfX08L2J1dHRvbj5cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9uZy1jb250YWluZXI+XG5cbiAgICAgICAgPCEtLSBSQU5HRSBNT0JJTEU6IHNpbmdsZSBjYWxlbmRhciB3aXRoIGR1YWwgaW5wdXRzIG9uIHRvcCAtLT5cbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cInR5cGUgPT09ICdyYW5nZScgJiYgbW9iaWxlXCI+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwic2luZ2xlLWNhbGVuZGFyLWNvbnRhaW5lclwiPlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjYWxlbmRhci1jb250ZW50XCI+XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtb250aC1oZWFkZXJcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24gY2xhc3M9XCJuYXYtYnRuXCIgKGNsaWNrKT1cInByZXZNb250aCgpXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHplbi1pY29uIHNyYz1cImFzc2V0cy9uZy16ZW5kdWl0L2ljb25zL2Fycm93LWxlZnQuc3ZnXCI+PC96ZW4taWNvbj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJtb250aC10aXRsZVwiPnt7IGxlZnREYXlzVGl0bGUgfX08L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIGNsYXNzPVwibmF2LWJ0blwiIChjbGljayk9XCJuZXh0TW9udGgoKVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx6ZW4taWNvbiBzcmM9XCJhc3NldHMvbmctemVuZHVpdC9pY29ucy9hcnJvdy1yaWdodC5zdmdcIj48L3plbi1pY29uPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgICAgICAgICAgIDwhLS0gUmFuZ2UgaW5wdXRzIC0tPlxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibW9iaWxlLXJhbmdlLWlucHV0c1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImRhdGUtaW5wdXQgY29tcGFjdFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiZGF0ZS1pbnB1dC10ZXh0XCIgW2NsYXNzLnBsYWNlaG9sZGVyXT1cIiFfc2VsZWN0ZWRTdGFydFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7eyBfc2VsZWN0ZWRTdGFydCA/IGZvcm1hdHRlZFN0YXJ0RGF0ZSA6ICgnU2VsZWN0IGRhdGUnIHwgdHJhbnNsYXRlKSB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJkYXRlLXNlcGFyYXRvclwiPiZuZGFzaDs8L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZGF0ZS1pbnB1dCBjb21wYWN0XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJkYXRlLWlucHV0LXRleHRcIiBbY2xhc3MucGxhY2Vob2xkZXJdPVwiIV9zZWxlY3RlZEVuZFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7eyBfc2VsZWN0ZWRFbmQgPyBmb3JtYXR0ZWRFbmREYXRlIDogKCdTZWxlY3QgZGF0ZScgfCB0cmFuc2xhdGUpIH19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJjYWxlbmRhckdyaWQ7IGNvbnRleHQ6IHsgJGltcGxpY2l0OiBsZWZ0RGF5Um93cyB9XCI+PC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICAgICAgICA8IS0tIFRpbWUgUGlja2VyIC0tPlxuICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJ0aW1lUGlja2VyXCI+XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJib3R0b20tZGl2aWRlclwiPjwvZGl2PlxuICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwidGltZVBpY2tlclNlY3Rpb25cIj48L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cblxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtYXJrZXItbGVnZW5kIHN0YW5kYWxvbmVcIiAqbmdJZj1cImxlZ2VuZE1hcmtlcnMubGVuZ3RoXCI+XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJsZWdlbmQtaXRlbVwiICpuZ0Zvcj1cImxldCBtIG9mIGxlZ2VuZE1hcmtlcnNcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwibGVnZW5kLWRvdFwiIFtzdHlsZS5iYWNrZ3JvdW5kXT1cIm0uY29sb3IgfHwgbnVsbFwiPjwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwibGVnZW5kLXRpdGxlXCI+e3sgbS50aXRsZSB8IHRyYW5zbGF0ZSB9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYm90dG9tLWRpdmlkZXJcIj48L2Rpdj5cblxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJib3R0b20tcGFuZWwgY29tcGFjdFwiPlxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYWN0aW9ucyBmdWxsLXdpZHRoXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIGNsYXNzPVwiYnRuLWNhbmNlbFwiIChjbGljayk9XCJjYW5jZWwoKVwiPnt7ICdDYW5jZWwnIHwgdHJhbnNsYXRlIH19PC9idXR0b24+XG4gICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIGNsYXNzPVwiYnRuLWFwcGx5XCIgW2Rpc2FibGVkXT1cIiFjYW5BcHBseVwiIChjbGljayk9XCJhcHBseSgpXCI+e3sgJ0FwcGx5JyB8IHRyYW5zbGF0ZSB9fTwvYnV0dG9uPlxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cblxuICAgICAgICA8IS0tIFNJTkdMRSBEQVRFOiBzaW5nbGUgY2FsZW5kYXIgKyBpbnB1dCArIHRvZGF5IGJ1dHRvbiAtLT5cbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cInR5cGUgPT09ICdzaW5nbGUnXCI+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwic2luZ2xlLWNhbGVuZGFyLWNvbnRhaW5lclwiPlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjYWxlbmRhci1jb250ZW50XCI+XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtb250aC1oZWFkZXJcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24gY2xhc3M9XCJuYXYtYnRuXCIgKGNsaWNrKT1cInByZXZNb250aCgpXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHplbi1pY29uIHNyYz1cImFzc2V0cy9uZy16ZW5kdWl0L2ljb25zL2Fycm93LWxlZnQuc3ZnXCI+PC96ZW4taWNvbj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJtb250aC10aXRsZVwiPnt7IGxlZnREYXlzVGl0bGUgfX08L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIGNsYXNzPVwibmF2LWJ0blwiIChjbGljayk9XCJuZXh0TW9udGgoKVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx6ZW4taWNvbiBzcmM9XCJhc3NldHMvbmctemVuZHVpdC9pY29ucy9hcnJvdy1yaWdodC5zdmdcIj48L3plbi1pY29uPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgICAgICAgICAgIDwhLS0gRGF0ZSBpbnB1dCArIFRvZGF5IGJ1dHRvbiAtLT5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInNpbmdsZS1hY3Rpb25zLXJvd1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImRhdGUtaW5wdXQgZmxleC0xXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJkYXRlLWlucHV0LXRleHRcIiBbY2xhc3MucGxhY2Vob2xkZXJdPVwiIV9zZWxlY3RlZERhdGVcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3sgX3NlbGVjdGVkRGF0ZSA/IGZvcm1hdHRlZFNlbGVjdGVkRGF0ZSA6ICgnU2VsZWN0IGRhdGUnIHwgdHJhbnNsYXRlKSB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz1cImJ0bi10b2RheVwiIChjbGljayk9XCJnb1RvVG9kYXkoKVwiPnt7ICdUb2RheScgfCB0cmFuc2xhdGUgfX08L2J1dHRvbj5cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cImNhbGVuZGFyR3JpZDsgY29udGV4dDogeyAkaW1wbGljaXQ6IGxlZnREYXlSb3dzIH1cIj48L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgICAgICAgIDwhLS0gVGltZSBQaWNrZXIgLS0+XG4gICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cInRpbWVQaWNrZXJcIj5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImJvdHRvbS1kaXZpZGVyXCI+PC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJ0aW1lUGlja2VyU2VjdGlvblwiPjwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm1hcmtlci1sZWdlbmQgc3RhbmRhbG9uZSBzaW5nbGVcIiAqbmdJZj1cImxlZ2VuZE1hcmtlcnMubGVuZ3RoXCI+XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJsZWdlbmQtaXRlbVwiICpuZ0Zvcj1cImxldCBtIG9mIGxlZ2VuZE1hcmtlcnNcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwibGVnZW5kLWRvdFwiIFtzdHlsZS5iYWNrZ3JvdW5kXT1cIm0uY29sb3IgfHwgbnVsbFwiPjwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwibGVnZW5kLXRpdGxlXCI+e3sgbS50aXRsZSB8IHRyYW5zbGF0ZSB9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiIWF1dG9BcHBseVwiPlxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYm90dG9tLWRpdmlkZXJcIj48L2Rpdj5cblxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYm90dG9tLXBhbmVsIGNvbXBhY3RcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJhY3Rpb25zIGZ1bGwtd2lkdGhcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIGNsYXNzPVwiYnRuLWNhbmNlbFwiIChjbGljayk9XCJjYW5jZWwoKVwiPnt7ICdDYW5jZWwnIHwgdHJhbnNsYXRlIH19PC9idXR0b24+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz1cImJ0bi1hcHBseVwiIFtkaXNhYmxlZF09XCIhY2FuQXBwbHlcIiAoY2xpY2spPVwiYXBwbHkoKVwiPnt7ICdBcHBseScgfCB0cmFuc2xhdGUgfX08L2J1dHRvbj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICA8L2Rpdj5cbjwvZGl2PlxuXG48IS0tIFNoYXJlZCB0aW1lIHBpY2tlciB0ZW1wbGF0ZSAtLT5cbjxuZy10ZW1wbGF0ZSAjdGltZVBpY2tlclNlY3Rpb24+XG4gICAgPGRpdiBjbGFzcz1cInRpbWUtcGlja2VyLWNvbnRhaW5lclwiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwidGltZS1waWNrZXItY29udGVudFwiPlxuICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJ0aW1lLXBpY2tlci1sYWJlbFwiPnt7ICdTZWxlY3QgYSB0aW1lJyB8IHRyYW5zbGF0ZSB9fTwvc3Bhbj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0aW1lLXBpY2tlci1yb3dcIj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidGltZS1maWVsZHNcIj5cbiAgICAgICAgICAgICAgICAgICAgPCEtLSBIb3VycyAtLT5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRpbWUtaW5wdXQtZ3JvdXBcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0aW1lLWlucHV0LWJveFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCBjbGFzcz1cInRpbWUtaW5wdXRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0eXBlPVwidGV4dFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFyaWEtbGFiZWw9XCJIb3Vyc1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlucHV0bW9kZT1cIm51bWVyaWNcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhdXRvY29tcGxldGU9XCJvZmZcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbdmFsdWVdPVwiX2hvdXJzRGlzcGxheVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnB1dCk9XCJvbkhvdXJzSW5wdXQoJGV2ZW50KVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmb2N1cyk9XCJvblRpbWVGb2N1cygkZXZlbnQpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGJsdXIpPVwiY2xhbXBIb3VycygpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGtleWRvd24pPVwib25UaW1lS2V5ZG93bigkZXZlbnQsICdob3VycycpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWF4bGVuZ3RoPVwiMlwiIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRpbWUtYXJyb3dzXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24gY2xhc3M9XCJ0aW1lLWFycm93LWJ0blwiIHR5cGU9XCJidXR0b25cIiB0YWJpbmRleD1cIi0xXCIgKGNsaWNrKT1cImluY3JlbWVudEhvdXJzKClcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx6ZW4taWNvbiBzcmM9XCJhc3NldHMvbmctemVuZHVpdC9pY29ucy9hcnJvdy11cC1zbWFsbC5zdmdcIj48L3plbi1pY29uPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz1cInRpbWUtYXJyb3ctYnRuXCIgdHlwZT1cImJ1dHRvblwiIHRhYmluZGV4PVwiLTFcIiAoY2xpY2spPVwiZGVjcmVtZW50SG91cnMoKVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHplbi1pY29uIHNyYz1cImFzc2V0cy9uZy16ZW5kdWl0L2ljb25zL2Fycm93LWRvd24tc21hbGwuc3ZnXCI+PC96ZW4taWNvbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwidGltZS1pbnB1dC1sYWJlbFwiPnt7ICdIUlMnIHwgdHJhbnNsYXRlIH19PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgICAgICAgICAgICA8IS0tIENvbG9uIHNlcGFyYXRvciAtLT5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRpbWUtY29sb25cIj46PC9kaXY+XG5cbiAgICAgICAgICAgICAgICAgICAgPCEtLSBNaW51dGVzIC0tPlxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidGltZS1pbnB1dC1ncm91cFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRpbWUtaW5wdXQtYm94XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IGNsYXNzPVwidGltZS1pbnB1dFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU9XCJ0ZXh0XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXJpYS1sYWJlbD1cIk1pbnV0ZXNcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnB1dG1vZGU9XCJudW1lcmljXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXV0b2NvbXBsZXRlPVwib2ZmXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3ZhbHVlXT1cIl9taW51dGVzRGlzcGxheVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnB1dCk9XCJvbk1pbnV0ZXNJbnB1dCgkZXZlbnQpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGZvY3VzKT1cIm9uVGltZUZvY3VzKCRldmVudClcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoYmx1cik9XCJjbGFtcE1pbnV0ZXMoKVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChrZXlkb3duKT1cIm9uVGltZUtleWRvd24oJGV2ZW50LCAnbWludXRlcycpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWF4bGVuZ3RoPVwiMlwiIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRpbWUtYXJyb3dzXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24gY2xhc3M9XCJ0aW1lLWFycm93LWJ0blwiIHR5cGU9XCJidXR0b25cIiB0YWJpbmRleD1cIi0xXCIgKGNsaWNrKT1cImluY3JlbWVudE1pbnV0ZXMoKVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHplbi1pY29uIHNyYz1cImFzc2V0cy9uZy16ZW5kdWl0L2ljb25zL2Fycm93LXVwLXNtYWxsLnN2Z1wiPjwvemVuLWljb24+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIGNsYXNzPVwidGltZS1hcnJvdy1idG5cIiB0eXBlPVwiYnV0dG9uXCIgdGFiaW5kZXg9XCItMVwiIChjbGljayk9XCJkZWNyZW1lbnRNaW51dGVzKClcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx6ZW4taWNvbiBzcmM9XCJhc3NldHMvbmctemVuZHVpdC9pY29ucy9hcnJvdy1kb3duLXNtYWxsLnN2Z1wiPjwvemVuLWljb24+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInRpbWUtaW5wdXQtbGFiZWxcIj57eyAnTUlOJyB8IHRyYW5zbGF0ZSB9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICAgICAgICA8IS0tIEFNL1BNIHRvZ2dsZSAtLT5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidGltZS1wZXJpb2QtdG9nZ2xlXCI+XG4gICAgICAgICAgICAgICAgICAgIDxidXR0b24gY2xhc3M9XCJ0aW1lLXBlcmlvZC1idG5cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtjbGFzcy5hY3RpdmVdPVwiX3BlcmlvZCA9PT0gJ0FNJ1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cInNldFBlcmlvZCgnQU0nKVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgQU1cbiAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICAgICAgICAgIDxidXR0b24gY2xhc3M9XCJ0aW1lLXBlcmlvZC1idG5cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtjbGFzcy5hY3RpdmVdPVwiX3BlcmlvZCA9PT0gJ1BNJ1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cInNldFBlcmlvZCgnUE0nKVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgUE1cbiAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG48L25nLXRlbXBsYXRlPlxuXG48IS0tIFNoYXJlZCBjYWxlbmRhciBncmlkIHRlbXBsYXRlIC0tPlxuPG5nLXRlbXBsYXRlICNjYWxlbmRhckdyaWQgbGV0LWRheVJvd3M+XG4gICAgPGRpdiBjbGFzcz1cImRhdGVzLWdyaWRcIj5cbiAgICAgICAgPCEtLSBXZWVrIGRheSBoZWFkZXJzIC0tPlxuICAgICAgICA8ZGl2IGNsYXNzPVwid2Vlay1oZWFkZXJcIj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjZWxsIGhlYWRlci1jZWxsXCIgKm5nRm9yPVwibGV0IHdkIG9mIHdlZWtEYXlzXCI+e3sgd2QgfCB0cmFuc2xhdGUgfX08L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDwhLS0gRGF5IHJvd3MgLS0+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJkYXktcm93XCIgKm5nRm9yPVwibGV0IHJvdyBvZiBkYXlSb3dzXCI+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2VsbCBkYXktY2VsbFwiXG4gICAgICAgICAgICAgICAgICpuZ0Zvcj1cImxldCBkYXkgb2Ygcm93LmRheXNcIlxuICAgICAgICAgICAgICAgICBbY2xhc3Mub3V0c2lkZV09XCJkYXkuaXNPdXRzaWRlXCJcbiAgICAgICAgICAgICAgICAgW2NsYXNzLnNlbGVjdGVkXT1cImRheS5zZWxlY3RlZFwiXG4gICAgICAgICAgICAgICAgIFtjbGFzcy50b2RheV09XCJpc1RvZGF5KGRheSlcIlxuICAgICAgICAgICAgICAgICBbY2xhc3MuZGlzYWJsZWRdPVwiZGF5LmlzRGlzYWJsZWRcIlxuICAgICAgICAgICAgICAgICBbY2xhc3MuaW4tcmFuZ2VdPVwiaXNJblJhbmdlKGRheSlcIlxuICAgICAgICAgICAgICAgICBbY2xhc3MucmFuZ2Utc3RhcnRdPVwiaXNSYW5nZVN0YXJ0KGRheSlcIlxuICAgICAgICAgICAgICAgICBbY2xhc3MucmFuZ2UtZW5kXT1cImlzUmFuZ2VFbmQoZGF5KVwiXG4gICAgICAgICAgICAgICAgIChjbGljayk9XCJzZWxlY3REYXkoZGF5KVwiPlxuICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiZGF5LW51bWJlclwiPnt7IGRheS5sYmwgfX08L3NwYW4+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm1hcmtlci1kb3RzXCIgKm5nSWY9XCJkYXkubWFya2VyQ29sb3JzPy5sZW5ndGhcIj5cbiAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJtYXJrZXItZG90XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgKm5nRm9yPVwibGV0IGMgb2YgZGF5Lm1hcmtlckNvbG9yc1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgIFtzdHlsZS5iYWNrZ3JvdW5kXT1cImMgfHwgbnVsbFwiPjwvc3Bhbj5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbjwvbmctdGVtcGxhdGU+XG4iXX0=
|
|
665
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiemVuZHUtZGF0ZS1waWNrZXItZHJvcGRvd24uY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmctemVuZHVpdC9zcmMvbGliL2RhdGUtcGlja2VyLWRyb3Bkb3duL3plbmR1LWRhdGUtcGlja2VyLWRyb3Bkb3duLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25nLXplbmR1aXQvc3JjL2xpYi9kYXRlLXBpY2tlci1kcm9wZG93bi96ZW5kdS1kYXRlLXBpY2tlci1kcm9wZG93bi5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0gsU0FBUyxFQUFjLFlBQVksRUFBRSxZQUFZLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFDbEMsUUFBUSxFQUFFLE1BQU0sRUFBaUIsU0FBUyxFQUMzRSxNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLE1BQU0sTUFBTSxlQUFlLENBQUM7QUFHbkMsT0FBTyxFQUVILCtCQUErQixFQUNsQyxNQUFNLDhCQUE4QixDQUFDOzs7OztBQUV0QyxNQUFNLGlCQUFpQixHQUFHLEdBQUcsQ0FBQztBQU85QixNQUFNLE9BQU8sZ0NBQWdDO0lBdUd6QyxZQUNZLFFBQW9CLEVBQ3BCLFVBQTRCLEVBQ2lCLGFBQXdDO1FBRnJGLGFBQVEsR0FBUixRQUFRLENBQVk7UUFDcEIsZUFBVSxHQUFWLFVBQVUsQ0FBa0I7UUF2Ry9CLFNBQUksR0FBMkIsUUFBUSxDQUFDO1FBQ3hDLFNBQUksR0FBZ0IsSUFBSSxDQUFDO1FBQ3hCLGVBQVUsR0FBRyxJQUFJLFlBQVksRUFBZSxDQUFDO1FBRTlDLGNBQVMsR0FBZ0IsSUFBSSxDQUFDO1FBQzdCLG9CQUFlLEdBQUcsSUFBSSxZQUFZLEVBQWUsQ0FBQztRQUVuRCxZQUFPLEdBQWdCLElBQUksQ0FBQztRQUMzQixrQkFBYSxHQUFHLElBQUksWUFBWSxFQUFlLENBQUM7UUFFaEQsZ0JBQVcsR0FBRyxJQUFJLFlBQVksRUFBa0IsQ0FBQztRQUVsRCxZQUFPLEdBQThCLElBQUksQ0FBQztRQUMxQyxZQUFPLEdBQWdCLElBQUksQ0FBQztRQUM1QixZQUFPLEdBQWdCLElBQUksQ0FBQztRQUM1QixhQUFRLEdBQVksS0FBSyxDQUFDO1FBQzFCLGdCQUFXLEdBQXVCLEVBQUUsQ0FBQztRQUNyQyxnQkFBVyxHQUFXLEVBQUUsQ0FBQztRQUN6QixxQkFBZ0IsR0FBVyxpQkFBaUIsQ0FBQztRQUM3QyxlQUFVLEdBQVksS0FBSyxDQUFDO1FBQzVCLGNBQVMsR0FBWSxLQUFLLENBQUM7UUFJcEMsV0FBTSxHQUFHLEtBQUssQ0FBQztRQUNmLFdBQU0sR0FBRyxLQUFLLENBQUM7UUFDZixrQkFBYSxHQUE4QixFQUFFLENBQUM7UUFFOUMsc0JBQXNCO1FBQ3RCLG9CQUFlLEdBQUcsSUFBSSxJQUFJLEVBQUUsQ0FBQztRQUM3QixnQkFBVyxHQUFxQyxFQUFFLENBQUM7UUFDbkQsa0JBQWEsR0FBRyxFQUFFLENBQUM7UUFFbkIsMkNBQTJDO1FBQzNDLHFCQUFnQixHQUFHLElBQUksSUFBSSxFQUFFLENBQUM7UUFDOUIsaUJBQVksR0FBcUMsRUFBRSxDQUFDO1FBQ3BELG1CQUFjLEdBQUcsRUFBRSxDQUFDO1FBRXBCLGFBQVEsR0FBRyxDQUFDLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsS0FBSyxFQUFFLElBQUksQ0FBQyxDQUFDO1FBRXZELDJCQUEyQjtRQUMzQixrQkFBYSxHQUFnQixJQUFJLENBQUM7UUFDbEMsbUJBQWMsR0FBZ0IsSUFBSSxDQUFDO1FBQ25DLGlCQUFZLEdBQWdCLElBQUksQ0FBQztRQUNqQyxrQkFBYSxHQUFrQixJQUFJLENBQUM7UUFDcEMsd0JBQW1CLEdBQWtCLElBQUksQ0FBQztRQUMxQyw0QkFBdUIsR0FBa0IsSUFBSSxDQUFDO1FBQzlDLDBCQUFxQixHQUFrQixJQUFJLENBQUM7UUFFNUMsb0JBQW9CO1FBQ3BCLFdBQU0sR0FBVyxFQUFFLENBQUM7UUFDcEIsYUFBUSxHQUFXLENBQUMsQ0FBQztRQUNyQixZQUFPLEdBQWdCLElBQUksQ0FBQztRQUM1QixrQkFBYSxHQUFXLElBQUksQ0FBQztRQUM3QixvQkFBZSxHQUFXLElBQUksQ0FBQztRQUUvQixtQkFBYyxHQUF1QjtZQUNqQztnQkFDSSxLQUFLLEVBQUUsT0FBTztnQkFDZCxRQUFRLEVBQUUsR0FBRyxFQUFFLENBQUMsQ0FBQztvQkFDYixLQUFLLEVBQUUsTUFBTSxFQUFFLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFDLE1BQU0sRUFBRTtvQkFDdkMsR0FBRyxFQUFFLE1BQU0sRUFBRSxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQyxNQUFNLEVBQUU7aUJBQ3RDLENBQUM7YUFDTDtZQUNEO2dCQUNJLEtBQUssRUFBRSxXQUFXO2dCQUNsQixRQUFRLEVBQUUsR0FBRyxFQUFFLENBQUMsQ0FBQztvQkFDYixLQUFLLEVBQUUsTUFBTSxFQUFFLENBQUMsUUFBUSxDQUFDLENBQUMsRUFBRSxLQUFLLENBQUMsQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLENBQUMsTUFBTSxFQUFFO29CQUMxRCxHQUFHLEVBQUUsTUFBTSxFQUFFLENBQUMsUUFBUSxDQUFDLENBQUMsRUFBRSxLQUFLLENBQUMsQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUMsTUFBTSxFQUFFO2lCQUN6RCxDQUFDO2FBQ0w7WUFDRDtnQkFDSSxLQUFLLEVBQUUsV0FBVztnQkFDbEIsUUFBUSxFQUFFLEdBQUcsRUFBRSxDQUFDLENBQUM7b0JBQ2IsS0FBSyxFQUFFLE1BQU0sRUFBRSxDQUFDLE9BQU8sQ0FBQyxTQUFTLENBQUMsQ0FBQyxNQUFNLEVBQUU7b0JBQzNDLEdBQUcsRUFBRSxNQUFNLEVBQUUsQ0FBQyxLQUFLLENBQUMsU0FBUyxDQUFDLENBQUMsTUFBTSxFQUFFO2lCQUMxQyxDQUFDO2FBQ0w7WUFDRDtnQkFDSSxLQUFLLEVBQUUsV0FBVztnQkFDbEIsUUFBUSxFQUFFLEdBQUcsRUFBRSxDQUFDLENBQUM7b0JBQ2IsS0FBSyxFQUFFLE1BQU0sRUFBRSxDQUFDLFFBQVEsQ0FBQyxDQUFDLEVBQUUsTUFBTSxDQUFDLENBQUMsT0FBTyxDQUFDLFNBQVMsQ0FBQyxDQUFDLE1BQU0sRUFBRTtvQkFDL0QsR0FBRyxFQUFFLE1BQU0sRUFBRSxDQUFDLFFBQVEsQ0FBQyxDQUFDLEVBQUUsTUFBTSxDQUFDLENBQUMsS0FBSyxDQUFDLFNBQVMsQ0FBQyxDQUFDLE1BQU0sRUFBRTtpQkFDOUQsQ0FBQzthQUNMO1lBQ0Q7Z0JBQ0ksS0FBSyxFQUFFLFlBQVk7Z0JBQ25CLFFBQVEsRUFBRSxHQUFHLEVBQUUsQ0FBQyxDQUFDO29CQUNiLEtBQUssRUFBRSxNQUFNLEVBQUUsQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLENBQUMsTUFBTSxFQUFFO29CQUN6QyxHQUFHLEVBQUUsTUFBTSxFQUFFLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDLE1BQU0sRUFBRTtpQkFDeEMsQ0FBQzthQUNMO1lBQ0Q7Z0JBQ0ksS0FBSyxFQUFFLFlBQVk7Z0JBQ25CLFFBQVEsRUFBRSxHQUFHLEVBQUUsQ0FBQyxDQUFDO29CQUNiLEtBQUssRUFBRSxNQUFNLEVBQUUsQ0FBQyxRQUFRLENBQUMsQ0FBQyxFQUFFLE9BQU8sQ0FBQyxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsQ0FBQyxNQUFNLEVBQUU7b0JBQzlELEdBQUcsRUFBRSxNQUFNLEVBQUUsQ0FBQyxRQUFRLENBQUMsQ0FBQyxFQUFFLE9BQU8sQ0FBQyxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQyxNQUFNLEVBQUU7aUJBQzdELENBQUM7YUFDTDtTQUNKLENBQUM7UUFPRSxJQUFJLGFBQWEsSUFBSSxhQUFhLENBQUMsTUFBTSxFQUFFO1lBQ3ZDLElBQUksQ0FBQyxjQUFjLEdBQUcsYUFBYSxDQUFDO1NBQ3ZDO0lBQ0wsQ0FBQztJQUVELFFBQVE7UUFDSixJQUFJLENBQUMsV0FBVyxFQUFFLENBQUM7SUFDdkIsQ0FBQztJQUdELFFBQVE7UUFDSixJQUFJLENBQUMsV0FBVyxFQUFFLENBQUM7SUFDdkIsQ0FBQztJQUVPLFdBQVc7UUFDZixJQUFJLENBQUMsTUFBTSxHQUFHLE1BQU0sQ0FBQyxVQUFVLEdBQUcsSUFBSSxDQUFDLGdCQUFnQixDQUFDO0lBQzVELENBQUM7SUFFRCxXQUFXLENBQUMsT0FBc0I7UUFDOUIsSUFBSSxPQUFPLENBQUMsTUFBTSxDQUFDLElBQUksSUFBSSxDQUFDLElBQUksRUFBRTtZQUM5QixJQUFJLENBQUMsYUFBYSxHQUFHLElBQUksSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztTQUM1QztRQUNELElBQUksT0FBTyxDQUFDLFdBQVcsQ0FBQyxJQUFJLElBQUksQ0FBQyxTQUFTLEVBQUU7WUFDeEMsSUFBSSxDQUFDLGNBQWMsR0FBRyxJQUFJLElBQUksQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUM7U0FDbEQ7UUFDRCxJQUFJLE9BQU8sQ0FBQyxTQUFTLENBQUMsSUFBSSxJQUFJLENBQUMsT0FBTyxFQUFFO1lBQ3BDLElBQUksQ0FBQyxZQUFZLEdBQUcsSUFBSSxJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDO1NBQzlDO0lBQ0wsQ0FBQztJQUVELFdBQVcsS0FBVyxDQUFDO0lBR3ZCLGVBQWUsQ0FBQyxLQUFpQjtRQUM3QixJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU07WUFBRSxPQUFPO1FBQ3pCLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsTUFBYyxDQUFDO1lBQUUsT0FBTztRQUMxRCxJQUFJLElBQUksQ0FBQyxRQUFRLENBQUMsYUFBYSxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDO1lBQUUsT0FBTztRQUMvRCxJQUFJLENBQUMsS0FBSyxFQUFFLENBQUM7SUFDakIsQ0FBQztJQUVELElBQUksYUFBYTtRQUNiLE9BQU8sSUFBSSxDQUFDLE9BQU8sSUFBSSxJQUFJLENBQUMsY0FBYyxDQUFDO0lBQy9DLENBQUM7SUFFRCxJQUFJLGtCQUFrQjtRQUNsQixPQUFPLElBQUksQ0FBQyxJQUFJLEtBQUssT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQztJQUNqRCxDQUFDO0lBRUQsSUFBSSxpQkFBaUI7UUFDakIsT0FBTyxJQUFJLENBQUMsSUFBSSxLQUFLLE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUM7SUFDakQsQ0FBQztJQUVELElBQUksWUFBWTtRQUNaLElBQUksSUFBSSxDQUFDLElBQUksS0FBSyxRQUFRLEVBQUU7WUFDeEIsSUFBSSxJQUFJLENBQUMsSUFBSSxFQUFFO2dCQUNYLE9BQU8sSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7YUFDckM7WUFDRCxPQUFPLElBQUksQ0FBQyxXQUFXLElBQUksSUFBSSxDQUFDLFVBQVUsQ0FBQyxPQUFPLENBQUMsYUFBYSxDQUFDLENBQUM7U0FDckU7UUFDRCxJQUFJLElBQUksQ0FBQyxTQUFTLElBQUksSUFBSSxDQUFDLE9BQU8sRUFBRTtZQUNoQyxJQUFJLElBQUksQ0FBQyxtQkFBbUI7bUJBQ3JCLElBQUksQ0FBQyxTQUFTLENBQUMsT0FBTyxFQUFFLEtBQUssSUFBSSxDQUFDLHVCQUF1QjttQkFDekQsSUFBSSxDQUFDLE9BQU8sQ0FBQyxPQUFPLEVBQUUsS0FBSyxJQUFJLENBQUMscUJBQXFCLEVBQUU7Z0JBQzFELE9BQU8sSUFBSSxDQUFDLFVBQVUsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLG1CQUFtQixDQUFDLENBQUM7YUFDNUQ7WUFDRCxPQUFPLEdBQUcsSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLE1BQU0sSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQztTQUNsRjtRQUNELE9BQU8sSUFBSSxDQUFDLFdBQVcsSUFBSSxJQUFJLENBQUMsVUFBVSxDQUFDLE9BQU8sQ0FBQyxjQUFjLENBQUMsQ0FBQztJQUN2RSxDQUFDO0lBRUQsSUFBSSxhQUFhO1FBQ2IsT0FBTyxDQUFDLElBQUksQ0FBQyxXQUFXLElBQUksRUFBRSxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUMzRCxDQUFDO0lBRUQsSUFBSSxRQUFRO1FBQ1IsSUFBSSxJQUFJLENBQUMsSUFBSSxLQUFLLFFBQVE7WUFBRSxPQUFPLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDO1FBQy9DLE9BQU8sQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsSUFBSSxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUM7SUFDOUMsQ0FBQztJQUVELElBQUkscUJBQXFCO1FBQ3JCLE9BQU8sSUFBSSxDQUFDLGFBQWEsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQztJQUN6RSxDQUFDO0lBRUQsSUFBSSxrQkFBa0I7UUFDbEIsT0FBTyxJQUFJLENBQUMsY0FBYyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxjQUFjLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDO0lBQzNFLENBQUM7SUFFRCxJQUFJLGdCQUFnQjtRQUNoQixPQUFPLElBQUksQ0FBQyxZQUFZLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUM7SUFDdkUsQ0FBQztJQUVELFVBQVUsQ0FBQyxJQUFVO1FBQ2pCLE1BQU0sT0FBTyxHQUFHLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDM0MsTUFBTSxlQUFlLEdBQUcsSUFBSSxDQUFDLFVBQVUsQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLENBQUM7UUFDekQsSUFBSSxTQUFTLEdBQUcsTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDLE1BQU0sQ0FBQyxhQUFhLENBQUMsQ0FBQyxPQUFPLENBQUMsT0FBTyxFQUFFLGVBQWUsQ0FBQyxDQUFDO1FBQ3JGLElBQUksSUFBSSxDQUFDLFVBQVUsRUFBRTtZQUNqQixTQUFTLElBQUksR0FBRyxHQUFHLElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLENBQUM7U0FDNUM7UUFDRCxPQUFPLFNBQVMsQ0FBQztJQUNyQixDQUFDO0lBRU8sVUFBVSxDQUFDLElBQVU7UUFDekIsSUFBSSxDQUFDLEdBQUcsSUFBSSxDQUFDLFFBQVEsRUFBRSxDQUFDO1FBQ3hCLE1BQU0sQ0FBQyxHQUFHLElBQUksQ0FBQyxVQUFVLEVBQUUsQ0FBQztRQUM1QixNQUFNLE1BQU0sR0FBRyxDQUFDLElBQUksRUFBRSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQztRQUNyQyxJQUFJLENBQUMsS0FBSyxDQUFDO1lBQUUsQ0FBQyxHQUFHLEVBQUUsQ0FBQzthQUNmLElBQUksQ0FBQyxHQUFHLEVBQUU7WUFBRSxDQUFDLElBQUksRUFBRSxDQUFDO1FBQ3pCLE9BQU8sR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxJQUFJLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLElBQUksTUFBTSxFQUFFLENBQUM7SUFDakUsQ0FBQztJQUVELE1BQU07UUFDRixJQUFJLElBQUksQ0FBQyxRQUFRO1lBQUUsT0FBTztRQUMxQixJQUFJLElBQUksQ0FBQyxNQUFNLEVBQUU7WUFDYixJQUFJLENBQUMsS0FBSyxFQUFFLENBQUM7U0FDaEI7YUFBTTtZQUNILElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQztTQUNmO0lBQ0wsQ0FBQztJQUVELElBQUk7UUFDQSxJQUFJLENBQUMsTUFBTSxHQUFHLElBQUksQ0FBQztRQUNuQixJQUFJLENBQUMsYUFBYSxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLElBQUksSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDO1FBQzVELElBQUksQ0FBQyxjQUFjLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsSUFBSSxJQUFJLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUM7UUFDdkUsSUFBSSxDQUFDLFlBQVksR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxJQUFJLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQztRQUNqRSxJQUFJLENBQUMsYUFBYSxHQUFHLENBQUMsSUFBSSxDQUFDLG1CQUFtQjtlQUN2QyxJQUFJLENBQUMsU0FBUyxFQUFFLE9BQU8sRUFBRSxLQUFLLElBQUksQ0FBQyx1QkFBdUI7ZUFDMUQsSUFBSSxDQUFDLE9BQU8sRUFBRSxPQUFPLEVBQUUsS0FBSyxJQUFJLENBQUMscUJBQXFCLENBQUM7WUFDMUQsQ0FBQyxDQUFDLElBQUksQ0FBQyxtQkFBbUI7WUFDMUIsQ0FBQyxDQUFDLElBQUksQ0FBQztRQUVYLElBQUksSUFBSSxDQUFDLFVBQVUsRUFBRTtZQUNqQixJQUFJLENBQUMsZ0JBQWdCLENBQUMsSUFBSSxDQUFDLElBQUksS0FBSyxRQUFRLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQztTQUM5RTtRQUVELElBQUksSUFBSSxDQUFDLElBQUksS0FBSyxRQUFRLEVBQUU7WUFDeEIsSUFBSSxDQUFDLGVBQWUsR0FBRyxJQUFJLENBQUMsYUFBYSxDQUFDLENBQUMsQ0FBQyxJQUFJLElBQUksQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksSUFBSSxFQUFFLENBQUM7U0FDekY7YUFBTTtZQUNILElBQUksQ0FBQyxlQUFlLEdBQUcsSUFBSSxDQUFDLGNBQWMsQ0FBQyxDQUFDLENBQUMsSUFBSSxJQUFJLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLElBQUksRUFBRSxDQUFDO1lBQ3hGLElBQUksQ0FBQyxnQkFBZ0IsR0FBRyxNQUFNLENBQUMsSUFBSSxDQUFDLGVBQWUsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsT0FBTyxDQUFDLENBQUMsTUFBTSxFQUFFLENBQUM7U0FDakY7UUFFRCxJQUFJLENBQUMsZUFBZSxFQUFFLENBQUM7UUFDdkIsSUFBSSxDQUFDLHNCQUFzQixFQUFFLENBQUM7SUFDbEMsQ0FBQztJQUVPLHNCQUFzQjtRQUMxQixJQUFJLENBQUMsSUFBSSxDQUFDLFVBQVU7WUFBRSxPQUFPO1FBRTdCLFVBQVUsQ0FBQyxHQUFHLEVBQUU7WUFDWixNQUFNLElBQUksR0FBRyxJQUFJLENBQUMsVUFBVSxDQUFDLGFBQWEsQ0FBQyxxQkFBcUIsRUFBRSxDQUFDO1lBQ25FLE1BQU0sVUFBVSxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUMsYUFBYSxDQUFDLGFBQWEsQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDO1lBQy9FLE1BQU0sY0FBYyxHQUFHLFVBQVUsQ0FBQyxDQUFDLENBQUMsVUFBVSxDQUFDLFlBQVksQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDO1lBQ2xFLE1BQU0sVUFBVSxHQUFHLE1BQU0sQ0FBQyxXQUFXLEdBQUcsSUFBSSxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUM7WUFDeEQsTUFBTSxVQUFVLEdBQUcsSUFBSSxDQUFDLEdBQUcsR0FBRyxDQUFDLENBQUM7WUFDaEMsTUFBTSxNQUFNLEdBQUcsRUFBRSxDQUFDO1lBQ2xCLE1BQU0sY0FBYyxHQUFHLE1BQU0sQ0FBQyxXQUFXLENBQUM7WUFFMUMsTUFBTSxLQUFLLEdBQThCLEVBQUUsSUFBSSxFQUFFLEdBQUcsSUFBSSxDQUFDLElBQUksSUFBSSxFQUFFLENBQUM7WUFFcEUsSUFBSSxVQUFVLElBQUksY0FBYyxFQUFFO2dCQUM5Qix5QkFBeUI7Z0JBQ3pCLEtBQUssQ0FBQyxLQUFLLENBQUMsR0FBRyxHQUFHLElBQUksQ0FBQyxNQUFNLEdBQUcsQ0FBQyxJQUFJLENBQUM7YUFDekM7aUJBQU0sSUFBSSxVQUFVLElBQUksY0FBYyxFQUFFO2dCQUNyQyx5QkFBeUI7Z0JBQ3pCLEtBQUssQ0FBQyxRQUFRLENBQUMsR0FBRyxHQUFHLGNBQWMsR0FBRyxJQUFJLENBQUMsR0FBRyxHQUFHLENBQUMsSUFBSSxDQUFDO2FBQzFEO2lCQUFNO2dCQUNILHNFQUFzRTtnQkFDdEUsTUFBTSxHQUFHLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxNQUFNLEVBQUUsY0FBYyxHQUFHLGNBQWMsR0FBRyxNQUFNLENBQUMsQ0FBQztnQkFDdkUsS0FBSyxDQUFDLEtBQUssQ0FBQyxHQUFHLEdBQUcsR0FBRyxJQUFJLENBQUM7Z0JBQzFCLEtBQUssQ0FBQyxZQUFZLENBQUMsR0FBRyxHQUFHLGNBQWMsR0FBRyxHQUFHLEdBQUcsTUFBTSxJQUFJLENBQUM7YUFDOUQ7WUFFRCxJQUFJLENBQUMsYUFBYSxHQUFHLEtBQUssQ0FBQztRQUMvQixDQUFDLENBQUMsQ0FBQztJQUNQLENBQUM7SUFFRCxLQUFLO1FBQ0QsSUFBSSxDQUFDLE1BQU0sR0FBRyxLQUFLLENBQUM7SUFDeEIsQ0FBQztJQUVELHNCQUFzQjtJQUN0QixhQUFhO1FBQ1QsSUFBSSxDQUFDLGVBQWUsR0FBRyxNQUFNLENBQUMsSUFBSSxDQUFDLGVBQWUsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDLEVBQUUsT0FBTyxDQUFDLENBQUMsTUFBTSxFQUFFLENBQUM7UUFDbEYsSUFBSSxJQUFJLENBQUMsaUJBQWlCLEVBQUU7WUFDeEIsSUFBSSxDQUFDLGdCQUFnQixHQUFHLE1BQU0sQ0FBQyxJQUFJLENBQUMsZUFBZSxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxPQUFPLENBQUMsQ0FBQyxNQUFNLEVBQUUsQ0FBQztTQUNqRjtRQUNELElBQUksQ0FBQyxlQUFlLEVBQUUsQ0FBQztJQUMzQixDQUFDO0lBRUQsYUFBYTtRQUNULElBQUksQ0FBQyxlQUFlLEdBQUcsTUFBTSxDQUFDLElBQUksQ0FBQyxlQUFlLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLE9BQU8sQ0FBQyxDQUFDLE1BQU0sRUFBRSxDQUFDO1FBQzdFLElBQUksSUFBSSxDQUFDLGlCQUFpQixFQUFFO1lBQ3hCLElBQUksQ0FBQyxnQkFBZ0IsR0FBRyxNQUFNLENBQUMsSUFBSSxDQUFDLGVBQWUsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsT0FBTyxDQUFDLENBQUMsTUFBTSxFQUFFLENBQUM7U0FDakY7UUFDRCxJQUFJLENBQUMsZUFBZSxFQUFFLENBQUM7SUFDM0IsQ0FBQztJQUVELGNBQWM7UUFDVixJQUFJLENBQUMsZ0JBQWdCLEdBQUcsTUFBTSxDQUFDLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDLEVBQUUsT0FBTyxDQUFDLENBQUMsTUFBTSxFQUFFLENBQUM7UUFDcEYsSUFBSSxDQUFDLGVBQWUsR0FBRyxNQUFNLENBQUMsSUFBSSxDQUFDLGdCQUFnQixDQUFDLENBQUMsUUFBUSxDQUFDLENBQUMsRUFBRSxPQUFPLENBQUMsQ0FBQyxNQUFNLEVBQUUsQ0FBQztRQUNuRixJQUFJLENBQUMsZUFBZSxFQUFFLENBQUM7SUFDM0IsQ0FBQztJQUVELGNBQWM7UUFDVixJQUFJLENBQUMsZ0JBQWdCLEdBQUcsTUFBTSxDQUFDLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsT0FBTyxDQUFDLENBQUMsTUFBTSxFQUFFLENBQUM7UUFDL0UsSUFBSSxDQUFDLGVBQWUsR0FBRyxNQUFNLENBQUMsSUFBSSxDQUFDLGdCQUFnQixDQUFDLENBQUMsUUFBUSxDQUFDLENBQUMsRUFBRSxPQUFPLENBQUMsQ0FBQyxNQUFNLEVBQUUsQ0FBQztRQUNuRixJQUFJLENBQUMsZUFBZSxFQUFFLENBQUM7SUFDM0IsQ0FBQztJQUVELHdEQUF3RDtJQUN4RCxTQUFTO1FBQ0wsSUFBSSxDQUFDLGFBQWEsRUFBRSxDQUFDO0lBQ3pCLENBQUM7SUFFRCxTQUFTO1FBQ0wsSUFBSSxDQUFDLGFBQWEsRUFBRSxDQUFDO0lBQ3pCLENBQUM7SUFFRCxTQUFTLENBQUMsR0FBa0I7UUFDeEIsSUFBSSxHQUFHLENBQUMsVUFBVSxJQUFJLEdBQUcsQ0FBQyxTQUFTO1lBQUUsT0FBTztRQUU1QyxJQUFJLElBQUksQ0FBQyxJQUFJLEtBQUssUUFBUSxFQUFFO1lBQ3hCLElBQUksQ0FBQyxhQUFhLEdBQUcsSUFBSSxJQUFJLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFDO1lBQ3hDLElBQUksSUFBSSxDQUFDLFNBQVMsRUFBRTtnQkFDaEIsSUFBSSxDQUFDLEtBQUssRUFBRSxDQUFDO2dCQUNiLE9BQU87YUFDVjtTQUNKO2FBQU07WUFDSCw0RUFBNEU7WUFDNUUsb0VBQW9FO1lBQ3BFLElBQUksQ0FBQyxJQUFJLENBQUMsY0FBYyxJQUFJLENBQUMsSUFBSSxDQUFDLGNBQWMsSUFBSSxJQUFJLENBQUMsWUFBWSxDQUFDLEVBQUU7Z0JBQ3BFLHNCQUFzQjtnQkFDdEIsSUFBSSxDQUFDLGNBQWMsR0FBRyxNQUFNLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQyxNQUFNLEVBQUUsQ0FBQztnQkFDL0QsSUFBSSxDQUFDLFlBQVksR0FBRyxJQUFJLENBQUM7Z0JBQ3pCLElBQUksQ0FBQyxhQUFhLEdBQUcsSUFBSSxDQUFDO2FBQzdCO2lCQUFNO2dCQUNILHFCQUFxQjtnQkFDckIsTUFBTSxNQUFNLEdBQUcsTUFBTSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLENBQUMsTUFBTSxFQUFFLENBQUM7Z0JBQ3hELElBQUksTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDLEVBQUU7b0JBQzlDLElBQUksQ0FBQyxZQUFZLEdBQUcsTUFBTSxDQUFDLElBQUksQ0FBQyxjQUFjLENBQUMsQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUMsTUFBTSxFQUFFLENBQUM7b0JBQ3RFLElBQUksQ0FBQyxjQUFjLEdBQUcsTUFBTSxDQUFDO2lCQUNoQztxQkFBTTtvQkFDSCxJQUFJLENBQUMsWUFBWSxHQUFHLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUMsTUFBTSxFQUFFLENBQUM7aUJBQzVEO2FBQ0o7U0FDSjtRQUNELElBQUksQ0FBQyxlQUFlLEVBQUUsQ0FBQztJQUMzQixDQUFDO0lBRUQsWUFBWSxDQUFDLE1BQXdCO1FBQ2pDLE1BQU0sS0FBSyxHQUFHLE1BQU0sQ0FBQyxRQUFRLEVBQUUsQ0FBQztRQUNoQyxJQUFJLENBQUMsY0FBYyxHQUFHLEtBQUssQ0FBQyxLQUFLLENBQUM7UUFDbEMsSUFBSSxDQUFDLFlBQVksR0FBRyxLQUFLLENBQUMsR0FBRyxDQUFDO1FBQzlCLElBQUksQ0FBQyxhQUFhLEdBQUcsTUFBTSxDQUFDLEtBQUssQ0FBQztRQUNsQyxJQUFJLENBQUMsZUFBZSxHQUFHLElBQUksSUFBSSxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUM3QyxJQUFJLElBQUksQ0FBQyxpQkFBaUIsRUFBRTtZQUN4QixJQUFJLENBQUMsZ0JBQWdCLEdBQUcsTUFBTSxDQUFDLElBQUksQ0FBQyxlQUFlLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLE9BQU8sQ0FBQyxDQUFDLE1BQU0sRUFBRSxDQUFDO1NBQ2pGO1FBQ0QsSUFBSSxDQUFDLGVBQWUsRUFBRSxDQUFDO0lBQzNCLENBQUM7SUFFRCxTQUFTO1FBQ0wsTUFBTSxLQUFLLEdBQUcsSUFBSSxJQUFJLEVBQUUsQ0FBQztRQUN6QixJQUFJLENBQUMsYUFBYSxHQUFHLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLENBQUMsTUFBTSxFQUFFLENBQUM7UUFDM0QsSUFBSSxDQUFDLGVBQWUsR0FBRyxJQUFJLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUN2QyxJQUFJLENBQUMsZUFBZSxFQUFFLENBQUM7SUFDM0IsQ0FBQztJQUVELHNCQUFzQjtJQUNkLFNBQVMsQ0FBQyxDQUFTO1FBQ3ZCLE9BQU8sQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxHQUFHLENBQUMsQ0FBQztJQUNyQyxDQUFDO0lBRUQsY0FBYztRQUNWLElBQUksQ0FBQyxNQUFNLEdBQUcsSUFBSSxDQUFDLE1BQU0sSUFBSSxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUM7UUFDdEQsSUFBSSxDQUFDLGFBQWEsR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUNyRCxDQUFDO0lBRUQsY0FBYztRQUNWLElBQUksQ0FBQyxNQUFNLEdBQUcsSUFBSSxDQUFDLE1BQU0sSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUM7UUFDdEQsSUFBSSxDQUFDLGFBQWEsR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUNyRCxDQUFDO0lBRUQsZ0JBQWdCO1FBQ1osSUFBSSxDQUFDLFFBQVEsR0FBRyxJQUFJLENBQUMsUUFBUSxJQUFJLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsUUFBUSxHQUFHLENBQUMsQ0FBQztRQUM1RCxJQUFJLENBQUMsZUFBZSxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDO0lBQ3pELENBQUM7SUFFRCxnQkFBZ0I7UUFDWixJQUFJLENBQUMsUUFBUSxHQUFHLElBQUksQ0FBQyxRQUFRLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxRQUFRLEdBQUcsQ0FBQyxDQUFDO1FBQzVELElBQUksQ0FBQyxlQUFlLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUM7SUFDekQsQ0FBQztJQUVELFlBQVksQ0FBQyxLQUFZO1FBQ3JCLE1BQU0sS0FBSyxHQUFHLEtBQUssQ0FBQyxNQUEwQixDQUFDO1FBQy9DLE1BQU0sR0FBRyxHQUFHLEtBQUssQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsQ0FBQztRQUMzQyxJQUFJLEdBQUcsS0FBSyxFQUFFLEVBQUU7WUFDWixJQUFJLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQztZQUNoQixJQUFJLENBQUMsYUFBYSxHQUFHLEVBQUUsQ0FBQztZQUN4QixPQUFPO1NBQ1Y7UUFDRCxNQUFNLEdBQUcsR0FBRyxRQUFRLENBQUMsR0FBRyxFQUFFLEVBQUUsQ0FBQyxDQUFDO1FBQzlCLElBQUksR0FBRyxJQUFJLENBQUMsSUFBSSxHQUFHLElBQUksRUFBRSxFQUFFO1lBQ3ZCLElBQUksQ0FBQyxNQUFNLEdBQUcsR0FBRyxDQUFDO1lBQ2xCLElBQUksQ0FBQyxhQUFhLEdBQUcsR0FBRyxDQUFDO1NBQzVCO2FBQU07WUFDSCxLQUFLLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQyxhQUFhLENBQUM7U0FDcEM7SUFDTCxDQUFDO0lBRUQsY0FBYyxDQUFDLEtBQVk7UUFDdkIsTUFBTSxLQUFLLEdBQUcsS0FBSyxDQUFDLE1BQTBCLENBQUM7UUFDL0MsTUFBTSxHQUFHLEdBQUcsS0FBSyxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQyxDQUFDO1FBQzNDLElBQUksR0FBRyxLQUFLLEVBQUUsRUFBRTtZQUNaLElBQUksQ0FBQyxRQUFRLEdBQUcsQ0FBQyxDQUFDO1lBQ2xCLElBQUksQ0FBQyxlQUFlLEdBQUcsRUFBRSxDQUFDO1lBQzFCLE9BQU87U0FDVjtRQUNELE1BQU0sR0FBRyxHQUFHLFFBQVEsQ0FBQyxHQUFHLEVBQUUsRUFBRSxDQUFDLENBQUM7UUFDOUIsSUFBSSxHQUFHLElBQUksQ0FBQyxJQUFJLEdBQUcsSUFBSSxFQUFFLEVBQUU7WUFDdkIsSUFBSSxDQUFDLFFBQVEsR0FBRyxHQUFHLENBQUM7WUFDcEIsSUFBSSxDQUFDLGVBQWUsR0FBRyxHQUFHLENBQUM7U0FDOUI7YUFBTTtZQUNILEtBQUssQ0FBQyxLQUFLLEdBQUcsSUFBSSxDQUFDLGVBQWUsQ0FBQztTQUN0QztJQUNMLENBQUM7SUFFRCxVQUFVO1FBQ04sSUFBSSxDQUFDLE1BQU0sR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsRUFBRSxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQztRQUNyRCxJQUFJLENBQUMsYUFBYSxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBQ3JELENBQUM7SUFFRCxZQUFZO1FBQ1IsSUFBSSxDQUFDLFFBQVEsR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsRUFBRSxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQztRQUN6RCxJQUFJLENBQUMsZUFBZSxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDO0lBQ3pELENBQUM7SUFFRCxXQUFXLENBQUMsS0FBWTtRQUNwQixNQUFNLEtBQUssR0FBRyxLQUFLLENBQUMsTUFBMEIsQ0FBQztRQUMvQyxLQUFLLENBQUMsTUFBTSxFQUFFLENBQUM7SUFDbkIsQ0FBQztJQUVELGFBQWEsQ0FBQyxLQUFvQixFQUFFLElBQXlCO1FBQ3pELElBQUksS0FBSyxDQUFDLEdBQUcsS0FBSyxTQUFTLEVBQUU7WUFDekIsS0FBSyxDQUFDLGNBQWMsRUFBRSxDQUFDO1lBQ3ZCLElBQUksSUFBSSxLQUFLLE9BQU87Z0JBQUUsSUFBSSxDQUFDLGNBQWMsRUFBRSxDQUFDOztnQkFDdkMsSUFBSSxDQUFDLGdCQUFnQixFQUFFLENBQUM7U0FDaEM7YUFBTSxJQUFJLEtBQUssQ0FBQyxHQUFHLEtBQUssV0FBVyxFQUFFO1lBQ2xDLEtBQUssQ0FBQyxjQUFjLEVBQUUsQ0FBQztZQUN2QixJQUFJLElBQUksS0FBSyxPQUFPO2dCQUFFLElBQUksQ0FBQyxjQUFjLEVBQUUsQ0FBQzs7Z0JBQ3ZDLElBQUksQ0FBQyxnQkFBZ0IsRUFBRSxDQUFDO1NBQ2hDO0lBQ0wsQ0FBQztJQUVELFNBQVMsQ0FBQyxNQUFtQjtRQUN6QixJQUFJLENBQUMsT0FBTyxHQUFHLE1BQU0sQ0FBQztJQUMxQixDQUFDO0lBRU8sZUFBZSxDQUFDLElBQVU7UUFDOUIsTUFBTSxNQUFNLEdBQUcsSUFBSSxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDOUIsSUFBSSxLQUFLLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQztRQUN4QixJQUFJLElBQUksQ0FBQyxPQUFPLEtBQUssSUFBSSxJQUFJLEtBQUssS0FBSyxFQUFFLEVBQUU7WUFDdkMsS0FBSyxHQUFHLENBQUMsQ0FBQztTQUNiO2FBQU0sSUFBSSxJQUFJLENBQUMsT0FBTyxLQUFLLElBQUksSUFBSSxLQUFLLEtBQUssRUFBRSxFQUFFO1lBQzlDLEtBQUssSUFBSSxFQUFFLENBQUM7U0FDZjtRQUNELE1BQU0sQ0FBQyxRQUFRLENBQUMsS0FBSyxFQUFFLElBQUksQ0FBQyxRQUFRLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO1FBQzVDLE9BQU8sTUFBTSxDQUFDO0lBQ2xCLENBQUM7SUFFTyxnQkFBZ0IsQ0FBQyxJQUFpQjtRQUN0QyxJQUFJLENBQUMsSUFBSSxFQUFFO1lBQ1AsSUFBSSxDQUFDLE1BQU0sR0FBRyxFQUFFLENBQUM7WUFDakIsSUFBSSxDQUFDLFFBQVEsR0FBRyxDQUFDLENBQUM7WUFDbEIsSUFBSSxDQUFDLE9BQU8sR0FBRyxJQUFJLENBQUM7U0FDdkI7YUFBTTtZQUNILElBQUksQ0FBQyxHQUFHLElBQUksQ0FBQyxRQUFRLEVBQUUsQ0FBQztZQUN4QixJQUFJLENBQUMsUUFBUSxHQUFHLElBQUksQ0FBQyxVQUFVLEVBQUUsQ0FBQztZQUNsQyxJQUFJLENBQUMsS0FBSyxDQUFDLEVBQUU7Z0JBQ1QsSUFBSSxDQUFDLE1BQU0sR0FBRyxFQUFFLENBQUM7Z0JBQ2pCLElBQUksQ0FBQyxPQUFPLEdBQUcsSUFBSSxDQUFDO2FBQ3ZCO2lCQUFNLElBQUksQ0FBQyxHQUFHLEVBQUUsRUFBRTtnQkFDZixJQUFJLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQztnQkFDaEIsSUFBSSxDQUFDLE9BQU8sR0FBRyxJQUFJLENBQUM7YUFDdkI7aUJBQU0sSUFBSSxDQUFDLEtBQUssRUFBRSxFQUFFO2dCQUNqQixJQUFJLENBQUMsTUFBTSxHQUFHLEVBQUUsQ0FBQztnQkFDakIsSUFBSSxDQUFDLE9BQU8sR0FBRyxJQUFJLENBQUM7YUFDdkI7aUJBQU07Z0JBQ0gsSUFBSSxDQUFDLE1BQU0sR0FBRyxDQUFDLEdBQUcsRUFBRSxDQUFDO2dCQUNyQixJQUFJLENBQUMsT0FBTyxHQUFHLElBQUksQ0FBQzthQUN2QjtTQUNKO1FBQ0QsSUFBSSxDQUFDLGFBQWEsR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUNqRCxJQUFJLENBQUMsZUFBZSxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDO0lBQ3pELENBQUM7SUFFRCxLQUFLO1FBQ0QsSUFBSSxJQUFJLENBQUMsSUFBSSxLQUFLLFFBQVEsRUFBRTtZQUN4QixJQUFJLElBQUksQ0FBQyxhQUFhLEVBQUU7Z0JBQ3BCLElBQUksQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDLFVBQVU7b0JBQ3ZCLENBQUMsQ0FBQyxJQUFJLENBQUMsZUFBZSxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUM7b0JBQzFDLENBQUMsQ0FBQyxJQUFJLElBQUksQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLENBQUM7Z0JBQ25DLElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQzthQUNuQztTQUNKO2FBQU07WUFDSCxJQUFJLElBQUksQ0FBQyxjQUFjLEVBQUU7Z0JBQ3JCLElBQUksQ0FBQyxTQUFTLEdBQUcsSUFBSSxDQUFDLFVBQVU7b0JBQzVCLENBQUMsQ0FBQyxJQUFJLENBQUMsZUFBZSxDQUFDLElBQUksQ0FBQyxjQUFjLENBQUM7b0JBQzNDLENBQUMsQ0FBQyxJQUFJLElBQUksQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDLENBQUM7Z0JBQ3BDLElBQUksQ0FBQyxlQUFlLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQzthQUM3QztZQUNELElBQUksSUFBSSxDQUFDLFlBQVksRUFBRTtnQkFDbkIsSUFBSSxDQUFDLE9BQU8sR0FBRyxJQUFJLENBQUMsVUFBVTtvQkFDMUIsQ0FBQyxDQUFDLElBQUksQ0FBQyxlQUFlLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQztvQkFDekMsQ0FBQyxDQUFDLElBQUksSUFBSSxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsQ0FBQztnQkFDbEMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDO2FBQ3pDO1lBQ0QsSUFBSSxJQUFJLENBQUMsY0FBYyxJQUFJLElBQUksQ0FBQyxZQUFZLEVBQUU7Z0JBQzFDLElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLEVBQUUsS0FBSyxFQUFFLElBQUksQ0FBQyxTQUFTLEVBQUUsR0FBRyxFQUFFLElBQUksQ0FBQyxPQUFPLEVBQUUsQ0FBQyxDQUFDO2FBQ3ZFO1lBQ0QsSUFBSSxJQUFJLENBQUMsYUFBYSxJQUFJLElBQUksQ0FBQyxTQUFTLElBQUksSUFBSSxDQUFDLE9BQU8sRUFBRTtnQkFDdEQsSUFBSSxDQUFDLG1CQUFtQixHQUFHLElBQUksQ0FBQyxhQUFhLENBQUM7Z0JBQzlDLElBQUksQ0FBQyx1QkFBdUIsR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDLE9BQU8sRUFBRSxDQUFDO2dCQUN4RCxJQUFJLENBQUMscUJBQXFCLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxPQUFPLEVBQUUsQ0FBQzthQUN2RDtpQkFBTTtnQkFDSCxJQUFJLENBQUMsbUJBQW1CLEdBQUcsSUFBSSxDQUFDO2dCQUNoQyxJQUFJLENBQUMsdUJBQXVCLEdBQUcsSUFBSSxDQUFDO2dCQUNwQyxJQUFJLENBQUMscUJBQXFCLEdBQUcsSUFBSSxDQUFDO2FBQ3JDO1NBQ0o7UUFDRCxJQUFJLENBQUMsS0FBSyxFQUFFLENBQUM7SUFDakIsQ0FBQztJQUVELE1BQU07UUFDRixJQUFJLENBQUMsS0FBSyxFQUFFLENBQUM7SUFDakIsQ0FBQztJQUVELElBQUksUUFBUTtRQUNSLElBQUksSUFBSSxDQUFDLElBQUksS0FBSyxRQUFRO1lBQUUsT0FBTyxDQUFDLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQztRQUN4RCxPQUFPLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxjQUFjLElBQUksSUFBSSxDQUFDLFlBQVksQ0FBQyxDQUFDO0lBQ3hELENBQUM7SUFFTyxlQUFlO1FBQ25CLElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLGVBQWUsRUFBRSxNQUFNLENBQUMsQ0FBQztRQUM5QyxJQUFJLElBQUksQ0FBQyxpQkFBaUIsRUFBRTtZQUN4QixJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxnQkFBZ0IsRUFBRSxPQUFPLENBQUMsQ0FBQztTQUNuRDtJQUNMLENBQUM7SUFFTyxVQUFVLENBQUMsSUFBVSxFQUFFLElBQXNCO1FBQ2pELE1BQU0sS0FBSyxHQUFHLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQyxNQUFNLENBQUMsV0FBVyxDQUFDLENBQUM7UUFFL0MsTUFBTSxPQUFPLEdBQXFDLEVBQUUsQ0FBQztRQUNyRCxJQUFJLE9BQU8sR0FBRyxNQUFNLENBQUMsSUFBSSxDQUFDLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxDQUFDLE9BQU8sQ0FBQyxTQUFTLENBQUMsQ0FBQztRQUMvRCxNQUFNLEdBQUcsR0FBRyxNQUFNLENBQUMsSUFBSSxDQUFDLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDLEtBQUssQ0FBQyxTQUFTLENBQUMsQ0FBQztRQUN6RCxNQUFNLFlBQVksR0FBRyxNQUFNLENBQUMsSUFBSSxDQUFDLENBQUMsS0FBSyxFQUFFLENBQUM7UUFFMUMsT0FBTyxPQUFPLENBQUMsY0FBYyxDQUFDLEdBQUcsQ0FBQyxFQUFFO1lBQ2hDLE1BQU0sR0FBRyxHQUFHLEVBQUUsSUFBSSxFQUFFLEVBQXFCLEVBQUUsQ0FBQztZQUM1QyxPQUFPLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDO1lBQ2xCLEtBQUssSUFBSSxHQUFHLEdBQUcsQ0FBQyxFQUFFLEdBQUcsR0FBRyxDQUFDLEVBQUUsR0FBRyxFQUFFLEVBQUU7Z0JBQzlCLE1BQU0sU0FBUyxHQUFHLFlBQVksS0FBSyxPQUFPLENBQUMsS0FBSyxFQUFFLENBQUM7Z0JBRW5ELElBQUksVUFBVSxHQUFHLEtBQUssQ0FBQztnQkFDdkIsSUFBSSxJQUFJLENBQUMsT0FBTyxJQUFJLE9BQU8sQ0FBQyxNQUFNLEVBQUUsR0FBRyxJQUFJLENBQUMsT0FBTyxFQUFFO29CQUNqRCxVQUFVLEdBQUcsSUFBSSxDQUFDO2lCQUNyQjtxQkFBTSxJQUFJLElBQUksQ0FBQyxPQUFPLElBQUksT0FBTyxDQUFDLE1BQU0sRUFBRSxHQUFHLElBQUksQ0FBQyxPQUFPLEVBQUU7b0JBQ3hELFVBQVUsR0FBRyxJQUFJLENBQUM7aUJBQ3JCO2dCQUVELElBQUksWUFBZ0QsQ0FBQztnQkFDckQsSUFBSSxDQUFDLFNBQVMsSUFBSSxJQUFJLENBQUMsV0FBVyxJQUFJLElBQUksQ0FBQyxXQUFXLENBQUMsTUFBTSxFQUFFO29CQUMzRCxNQUFNLEVBQUUsR0FBRyxPQUFPLENBQUMsT0FBTyxFQUFFLENBQUM7b0JBQzdCLE1BQU0sTUFBTSxHQUEyQixFQUFFLENBQUM7b0JBQzFDLEtBQUssTUFBTSxDQUFDLElBQUksSUFBSSxDQUFDLFdBQVcsRUFBRTt3QkFDOUIsSUFBSSxDQUFDLENBQUMsS0FBSyxJQUFJLENBQUMsQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsRUFBRTs0QkFDckMsTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUM7eUJBQ3hCO3FCQUNKO29CQUNELElBQUksTUFBTSxDQUFDLE1BQU07d0JBQUUsWUFBWSxHQUFHLE1BQU0sQ0FBQztpQkFDNUM7Z0JBRUQsTUFBTSxVQUFVLEdBQUcsU0FBUyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsT0FBTyxDQUFDLENBQUM7Z0JBRW5FLEdBQUcsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDO29CQUNWLElBQUksRUFBRSxPQUFPLENBQUMsTUFBTSxFQUFFO29CQUN0QixHQUFHLEVBQUUsU0FBUyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxJQUFJLEVBQUUsQ0FBQyxRQUFRLEVBQUU7b0JBQy9DLFNBQVM7b0JBQ1QsUUFBUSxFQUFFLFVBQVU7b0JBQ3BCLFVBQVUsRUFBRSxTQUFTLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsVUFBVTtvQkFDekMsYUFBYSxFQUFFLEtBQUs7b0JBQ3BCLFlBQVk7aUJBQ2YsQ0FBQyxDQUFDO2dCQUVILE9BQU8sR0FBRyxPQUFPLENBQUMsS0FBSyxFQUFFLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxLQUFLLENBQUMsQ0FBQzthQUMzQztTQUNKO1FBRUQsSUFBSSxJQUFJLEtBQUssTUFBTSxFQUFFO1lBQ2pCLElBQUksQ0FBQyxXQUFXLEdBQUcsT0FBTyxDQUFDO1lBQzNCLElBQUksQ0FBQyxhQUFhLEdBQUcsS0FBSyxDQUFDO1NBQzlCO2FBQU07WUFDSCxJQUFJLENBQUMsWUFBWSxHQUFHLE9BQU8sQ0FBQztZQUM1QixJQUFJLENBQUMsY0FBYyxHQUFHLEtBQUssQ0FBQztTQUMvQjtJQUNMLENBQUM7SUFFTyxhQUFhLENBQUMsSUFBbUI7UUFDckMsSUFBSSxJQUFJLENBQUMsSUFBSSxLQUFLLFFBQVEsRUFBRTtZQUN4QixPQUFPLElBQUksQ0FBQyxhQUFhLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsRUFBRSxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDO1NBQ3RGO1FBQ0QsSUFBSSxJQUFJLENBQUMsY0FBYyxJQUFJLElBQUksQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxjQUFjLENBQUMsRUFBRSxLQUFLLENBQUM7WUFBRSxPQUFPLElBQUksQ0FBQztRQUN4RixJQUFJLElBQUksQ0FBQyxZQUFZLElBQUksSUFBSSxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxFQUFFLEtBQUssQ0FBQztZQUFFLE9BQU8sSUFBSSxDQUFDO1FBQ3BGLE9BQU8sS0FBSyxDQUFDO0lBQ2pCLENBQUM7SUFFRCxPQUFPLENBQUMsR0FBa0I7UUFDdEIsSUFBSSxHQUFHLENBQUMsU0FBUztZQUFFLE9BQU8sS0FBSyxDQUFDO1FBQ2hDLE9BQU8sTUFBTSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQyxNQUFNLENBQUMsTUFBTSxFQUFFLEVBQUUsS0FBSyxDQUFDLENBQUM7SUFDcEQsQ0FBQztJQUVELFNBQVMsQ0FBQyxHQUFrQjtRQUN4QixJQUFJLEdBQUcsQ0FBQyxTQUFTO1lBQUUsT0FBTyxLQUFLLENBQUM7UUFDaEMsSUFBSSxJQUFJLENBQUMsSUFBSSxLQUFLLE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxjQUFjLElBQUksQ0FBQyxJQUFJLENBQUMsWUFBWTtZQUFFLE9BQU8sS0FBSyxDQUFDO1FBQ3RGLE1BQU0sQ0FBQyxHQUFHLE1BQU0sQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDM0IsT0FBTyxDQUFDLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDLEVBQUUsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxFQUFFLEtBQUssQ0FBQyxDQUFDO0lBQ3pHLENBQUM7SUFFRCxZQUFZLENBQUMsR0FBa0I7UUFDM0IsSUFBSSxHQUFHLENBQUMsU0FBUztZQUFFLE9BQU8sS0FBSyxDQUFDO1FBQ2hDLElBQUksSUFBSSxDQUFDLElBQUksS0FBSyxPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsY0FBYztZQUFFLE9BQU8sS0FBSyxDQUFDO1FBQ2hFLE9BQU8sTUFBTSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxjQUFjLENBQUMsRUFBRSxLQUFLLENBQUMsQ0FBQztJQUN2RSxDQUFDO0lBRUQsVUFBVSxDQUFDLEdBQWtCO1FBQ3pCLElBQUksR0FBRyxDQUFDLFNBQVM7WUFBRSxPQUFPLEtBQUssQ0FBQztRQUNoQyxJQUFJLElBQUksQ0FBQyxJQUFJLEtBQUssT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLFlBQVk7WUFBRSxPQUFPLEtBQUssQ0FBQztRQUM5RCxPQUFPLE1BQU0sQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLEVBQUUsS0FBSyxDQUFDLENBQUM7SUFDckUsQ0FBQzs7OEhBdG9CUSxnQ0FBZ0MsNEVBMEdqQiwrQkFBK0I7a0hBMUc5QyxnQ0FBZ0MsbXVCQ25CN0MsdTRoQkF3VUE7NEZEclRhLGdDQUFnQztrQkFMNUMsU0FBUzsrQkFDSSwwQkFBMEI7OzBCQThHL0IsUUFBUTs7MEJBQUksTUFBTTsyQkFBQywrQkFBK0I7NENBeEc5QyxJQUFJO3NCQUFaLEtBQUs7Z0JBQ0csSUFBSTtzQkFBWixLQUFLO2dCQUNJLFVBQVU7c0JBQW5CLE1BQU07Z0JBRUUsU0FBUztzQkFBakIsS0FBSztnQkFDSSxlQUFlO3NCQUF4QixNQUFNO2dCQUVFLE9BQU87c0JBQWYsS0FBSztnQkFDSSxhQUFhO3NCQUF0QixNQUFNO2dCQUVHLFdBQVc7c0JBQXBCLE1BQU07Z0JBRUUsT0FBTztzQkFBZixLQUFLO2dCQUNHLE9BQU87c0JBQWYsS0FBSztnQkFDRyxPQUFPO3NCQUFmLEtBQUs7Z0JBQ0csUUFBUTtzQkFBaEIsS0FBSztnQkFDRyxXQUFXO3NCQUFuQixLQUFLO2dCQUNHLFdBQVc7c0JBQW5CLEtBQUs7Z0JBQ0csZ0JBQWdCO3NCQUF4QixLQUFLO2dCQUNHLFVBQVU7c0JBQWxCLEtBQUs7Z0JBQ0csU0FBUztzQkFBakIsS0FBSztnQkFFbUIsVUFBVTtzQkFBbEMsU0FBUzt1QkFBQyxZQUFZO2dCQThGdkIsUUFBUTtzQkFEUCxZQUFZO3VCQUFDLGVBQWU7Z0JBd0I3QixlQUFlO3NCQURkLFlBQVk7dUJBQUMsa0JBQWtCLEVBQUUsQ0FBQyxRQUFRLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICAgIENvbXBvbmVudCwgRWxlbWVudFJlZiwgRXZlbnRFbWl0dGVyLCBIb3N0TGlzdGVuZXIsIEluamVjdCwgSW5wdXQsXG4gICAgT25DaGFuZ2VzLCBPbkRlc3Ryb3ksIE9uSW5pdCwgT3B0aW9uYWwsIE91dHB1dCwgU2ltcGxlQ2hhbmdlcywgVmlld0NoaWxkXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IG1vbWVudCBmcm9tICdtb21lbnQvbW9tZW50JztcbmltcG9ydCB7IERhdGVQaWNrZXJEYXkgfSBmcm9tICcuLi9kYXRlcGlja2VyL2RhdGUtcGlja2VyLWRheSc7XG5pbXBvcnQgeyBUcmFuc2xhdGVTZXJ2aWNlIH0gZnJvbSAnQG5neC10cmFuc2xhdGUvY29yZSc7XG5pbXBvcnQge1xuICAgIERhdGVQaWNrZXJEcm9wZG93blR5cGUsIERhdGVQaWNrZXJNYXJrZXIsIERhdGVQaWNrZXJQcmVzZXQsIERhdGVSYW5nZVZhbHVlLFxuICAgIFpFTl9EQVRFX1BJQ0tFUl9ERUZBVUxUX1BSRVNFVFNcbn0gZnJvbSAnLi9kYXRlLXBpY2tlci1kcm9wZG93bi50eXBlcyc7XG5cbmNvbnN0IE1PQklMRV9CUkVBS1BPSU5UID0gNzY4O1xuXG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvcjogJ3plbi1kYXRlLXBpY2tlci1kcm9wZG93bicsXG4gICAgdGVtcGxhdGVVcmw6ICcuL3plbmR1LWRhdGUtcGlja2VyLWRyb3Bkb3duLmNvbXBvbmVudC5odG1sJyxcbiAgICBzdHlsZVVybHM6IFsnLi96ZW5kdS1kYXRlLXBpY2tlci1kcm9wZG93bi5jb21wb25lbnQuc2NzcyddXG59KVxuZXhwb3J0IGNsYXNzIFplbmR1RGF0ZVBpY2tlckRyb3Bkb3duQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBPbkNoYW5nZXMsIE9uRGVzdHJveSB7XG5cbiAgICBASW5wdXQoKSB0eXBlOiBEYXRlUGlja2VyRHJvcGRvd25UeXBlID0gJ3NpbmdsZSc7XG4gICAgQElucHV0KCkgZGF0ZTogRGF0ZSB8IG51bGwgPSBudWxsO1xuICAgIEBPdXRwdXQoKSBkYXRlQ2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjxEYXRlIHwgbnVsbD4oKTtcblxuICAgIEBJbnB1dCgpIHN0YXJ0RGF0ZTogRGF0ZSB8IG51bGwgPSBudWxsO1xuICAgIEBPdXRwdXQoKSBzdGFydERhdGVDaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyPERhdGUgfCBudWxsPigpO1xuXG4gICAgQElucHV0KCkgZW5kRGF0ZTogRGF0ZSB8IG51bGwgPSBudWxsO1xuICAgIEBPdXRwdXQoKSBlbmREYXRlQ2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjxEYXRlIHwgbnVsbD4oKTtcblxuICAgIEBPdXRwdXQoKSByYW5nZUNoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXI8RGF0ZVJhbmdlVmFsdWU+KCk7XG5cbiAgICBASW5wdXQoKSBwcmVzZXRzOiBEYXRlUGlja2VyUHJlc2V0W10gfCBudWxsID0gbnVsbDtcbiAgICBASW5wdXQoKSBtaW5EYXRlOiBEYXRlIHwgbnVsbCA9IG51bGw7XG4gICAgQElucHV0KCkgbWF4RGF0ZTogRGF0ZSB8IG51bGwgPSBudWxsO1xuICAgIEBJbnB1dCgpIGRpc2FibGVkOiBib29sZWFuID0gZmFsc2U7XG4gICAgQElucHV0KCkgZGF0ZU1hcmtlcnM6IERhdGVQaWNrZXJNYXJrZXJbXSA9IFtdO1xuICAgIEBJbnB1dCgpIHBsYWNlaG9sZGVyOiBzdHJpbmcgPSAnJztcbiAgICBASW5wdXQoKSBtb2JpbGVCcmVha3BvaW50OiBudW1iZXIgPSBNT0JJTEVfQlJFQUtQT0lOVDtcbiAgICBASW5wdXQoKSB0aW1lUGlja2VyOiBib29sZWFuID0gZmFsc2U7XG4gICAgQElucHV0KCkgYXV0b0FwcGx5OiBib29sZWFuID0gZmFsc2U7XG5cbiAgICBAVmlld0NoaWxkKCd0cmlnZ2VyQnRuJykgdHJpZ2dlckJ0biE6IEVsZW1lbnRSZWY7XG5cbiAgICBtb2JpbGUgPSBmYWxzZTtcbiAgICBpc09wZW4gPSBmYWxzZTtcbiAgICBkcm9wZG93blN0eWxlOiB7IFtrZXk6IHN0cmluZ106IHN0cmluZyB9ID0ge307XG5cbiAgICAvLyBMZWZ0IGNhbGVuZGFyIHN0YXRlXG4gICAgbGVmdEN1cnJlbnRTbG90ID0gbmV3IERhdGUoKTtcbiAgICBsZWZ0RGF5Um93czogQXJyYXk8eyBkYXlzOiBEYXRlUGlja2VyRGF5W10gfT4gPSBbXTtcbiAgICBsZWZ0RGF5c1RpdGxlID0gJyc7XG5cbiAgICAvLyBSaWdodCBjYWxlbmRhciBzdGF0ZSAoZm9yIHJhbmdlIGRlc2t0b3ApXG4gICAgcmlnaHRDdXJyZW50U2xvdCA9IG5ldyBEYXRlKCk7XG4gICAgcmlnaHREYXlSb3dzOiBBcnJheTx7IGRheXM6IERhdGVQaWNrZXJEYXlbXSB9PiA9IFtdO1xuICAgIHJpZ2h0RGF5c1RpdGxlID0gJyc7XG5cbiAgICB3ZWVrRGF5cyA9IFsnTW8nLCAnVHUnLCAnV2UnLCAnVGgnLCAnRnInLCAnU2F0JywgJ1N1J107XG5cbiAgICAvLyBJbnRlcm5hbCBzZWxlY3Rpb24gc3RhdGVcbiAgICBfc2VsZWN0ZWREYXRlOiBEYXRlIHwgbnVsbCA9IG51bGw7XG4gICAgX3NlbGVjdGVkU3RhcnQ6IERhdGUgfCBudWxsID0gbnVsbDtcbiAgICBfc2VsZWN0ZWRFbmQ6IERhdGUgfCBudWxsID0gbnVsbDtcbiAgICBfYWN0aXZlUHJlc2V0OiBzdHJpbmcgfCBudWxsID0gbnVsbDtcbiAgICBfYXBwbGllZFByZXNldExhYmVsOiBzdHJpbmcgfCBudWxsID0gbnVsbDtcbiAgICBfYXBwbGllZFByZXNldFN0YXJ0VGltZTogbnVtYmVyIHwgbnVsbCA9IG51bGw7XG4gICAgX2FwcGxpZWRQcmVzZXRFbmRUaW1lOiBudW1iZXIgfCBudWxsID0gbnVsbDtcblxuICAgIC8vIFRpbWUgcGlja2VyIHN0YXRlXG4gICAgX2hvdXJzOiBudW1iZXIgPSAxMjtcbiAgICBfbWludXRlczogbnVtYmVyID0gMDtcbiAgICBfcGVyaW9kOiAnQU0nIHwgJ1BNJyA9ICdBTSc7XG4gICAgX2hvdXJzRGlzcGxheTogc3RyaW5nID0gJzEyJztcbiAgICBfbWludXRlc0Rpc3BsYXk6IHN0cmluZyA9ICcwMCc7XG5cbiAgICBkZWZhdWx0UHJlc2V0czogRGF0ZVBpY2tlclByZXNldFtdID0gW1xuICAgICAgICB7XG4gICAgICAgICAgICBsYWJlbDogJ1RvZGF5JyxcbiAgICAgICAgICAgIGdldFJhbmdlOiAoKSA9PiAoe1xuICAgICAgICAgICAgICAgIHN0YXJ0OiBtb21lbnQoKS5zdGFydE9mKCdkYXknKS50b0RhdGUoKSxcbiAgICAgICAgICAgICAgICBlbmQ6IG1vbWVudCgpLmVuZE9mKCdkYXknKS50b0RhdGUoKVxuICAgICAgICAgICAgfSlcbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgICAgbGFiZWw6ICdZZXN0ZXJkYXknLFxuICAgICAgICAgICAgZ2V0UmFuZ2U6ICgpID0+ICh7XG4gICAgICAgICAgICAgICAgc3RhcnQ6IG1vbWVudCgpLnN1YnRyYWN0KDEsICdkYXknKS5zdGFydE9mKCdkYXknKS50b0RhdGUoKSxcbiAgICAgICAgICAgICAgICBlbmQ6IG1vbWVudCgpLnN1YnRyYWN0KDEsICdkYXknKS5lbmRPZignZGF5JykudG9EYXRlKClcbiAgICAgICAgICAgIH0pXG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICAgIGxhYmVsOiAnVGhpcyB3ZWVrJyxcbiAgICAgICAgICAgIGdldFJhbmdlOiAoKSA9PiAoe1xuICAgICAgICAgICAgICAgIHN0YXJ0OiBtb21lbnQoKS5zdGFydE9mKCdpc29XZWVrJykudG9EYXRlKCksXG4gICAgICAgICAgICAgICAgZW5kOiBtb21lbnQoKS5lbmRPZignaXNvV2VlaycpLnRvRGF0ZSgpXG4gICAgICAgICAgICB9KVxuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgICBsYWJlbDogJ0xhc3Qgd2VlaycsXG4gICAgICAgICAgICBnZXRSYW5nZTogKCkgPT4gKHtcbiAgICAgICAgICAgICAgICBzdGFydDogbW9tZW50KCkuc3VidHJhY3QoMSwgJ3dlZWsnKS5zdGFydE9mKCdpc29XZWVrJykudG9EYXRlKCksXG4gICAgICAgICAgICAgICAgZW5kOiBtb21lbnQoKS5zdWJ0cmFjdCgxLCAnd2VlaycpLmVuZE9mKCdpc29XZWVrJykudG9EYXRlKClcbiAgICAgICAgICAgIH0pXG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICAgIGxhYmVsOiAnVGhpcyBtb250aCcsXG4gICAgICAgICAgICBnZXRSYW5nZTogKCkgPT4gKHtcbiAgICAgICAgICAgICAgICBzdGFydDogbW9tZW50KCkuc3RhcnRPZignbW9udGgnKS50b0RhdGUoKSxcbiAgICAgICAgICAgICAgICBlbmQ6IG1vbWVudCgpLmVuZE9mKCdtb250aCcpLnRvRGF0ZSgpXG4gICAgICAgICAgICB9KVxuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgICBsYWJlbDogJ0xhc3QgbW9udGgnLFxuICAgICAgICAgICAgZ2V0UmFuZ2U6ICgpID0+ICh7XG4gICAgICAgICAgICAgICAgc3RhcnQ6IG1vbWVudCgpLnN1YnRyYWN0KDEsICdtb250aCcpLnN0YXJ0T2YoJ21vbnRoJykudG9EYXRlKCksXG4gICAgICAgICAgICAgICAgZW5kOiBtb21lbnQoKS5zdWJ0cmFjdCgxLCAnbW9udGgnKS5lbmRPZignbW9udGgnKS50b0RhdGUoKVxuICAgICAgICAgICAgfSlcbiAgICAgICAgfVxuICAgIF07XG5cbiAgICBjb25zdHJ1Y3RvcihcbiAgICAgICAgcHJpdmF0ZSBfZWxlbWVudDogRWxlbWVudFJlZixcbiAgICAgICAgcHJpdmF0ZSBfdHJhbnNsYXRlOiBUcmFuc2xhdGVTZXJ2aWNlLFxuICAgICAgICBAT3B0aW9uYWwoKSBASW5qZWN0KFpFTl9EQVRFX1BJQ0tFUl9ERUZBVUxUX1BSRVNFVFMpIGdsb2JhbFByZXNldHM6IERhdGVQaWNrZXJQcmVzZXRbXSB8IG51bGxcbiAgICApIHtcbiAgICAgICAgaWYgKGdsb2JhbFByZXNldHMgJiYgZ2xvYmFsUHJlc2V0cy5sZW5ndGgpIHtcbiAgICAgICAgICAgIHRoaXMuZGVmYXVsdFByZXNldHMgPSBnbG9iYWxQcmVzZXRzO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuY2hlY2tNb2JpbGUoKTtcbiAgICB9XG5cbiAgICBASG9zdExpc3RlbmVyKCd3aW5kb3c6cmVzaXplJylcbiAgICBvblJlc2l6ZSgpIHtcbiAgICAgICAgdGhpcy5jaGVja01vYmlsZSgpO1xuICAgIH1cblxuICAgIHByaXZhdGUgY2hlY2tNb2JpbGUoKSB7XG4gICAgICAgIHRoaXMubW9iaWxlID0gd2luZG93LmlubmVyV2lkdGggPCB0aGlzLm1vYmlsZUJyZWFrcG9pbnQ7XG4gICAgfVxuXG4gICAgbmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcyk6IHZvaWQge1xuICAgICAgICBpZiAoY2hhbmdlc1snZGF0ZSddICYmIHRoaXMuZGF0ZSkge1xuICAgICAgICAgICAgdGhpcy5fc2VsZWN0ZWREYXRlID0gbmV3IERhdGUodGhpcy5kYXRlKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoY2hhbmdlc1snc3RhcnREYXRlJ10gJiYgdGhpcy5zdGFydERhdGUpIHtcbiAgICAgICAgICAgIHRoaXMuX3NlbGVjdGVkU3RhcnQgPSBuZXcgRGF0ZSh0aGlzLnN0YXJ0RGF0ZSk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGNoYW5nZXNbJ2VuZERhdGUnXSAmJiB0aGlzLmVuZERhdGUpIHtcbiAgICAgICAgICAgIHRoaXMuX3NlbGVjdGVkRW5kID0gbmV3IERhdGUodGhpcy5lbmREYXRlKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIG5nT25EZXN0cm95KCk6IHZvaWQgeyB9XG5cbiAgICBASG9zdExpc3RlbmVyKCd3aW5kb3c6bW91c2Vkb3duJywgWyckZXZlbnQnXSlcbiAgICBvdXRzaWRlSGFuZGxpbmcoZXZlbnQ6IE1vdXNlRXZlbnQpIHtcbiAgICAgICAgaWYgKCF0aGlzLmlzT3BlbikgcmV0dXJuO1xuICAgICAgICBpZiAoIWRvY3VtZW50LmJvZHkuY29udGFpbnMoZXZlbnQudGFyZ2V0IGFzIE5vZGUpKSByZXR1cm47XG4gICAgICAgIGlmICh0aGlzLl9lbGVtZW50Lm5hdGl2ZUVsZW1lbnQuY29udGFpbnMoZXZlbnQudGFyZ2V0KSkgcmV0dXJuO1xuICAgICAgICB0aGlzLmNsb3NlKCk7XG4gICAgfVxuXG4gICAgZ2V0IGFjdGl2ZVByZXNldHMoKTogRGF0ZVBpY2tlclByZXNldFtdIHtcbiAgICAgICAgcmV0dXJuIHRoaXMucHJlc2V0cyB8fCB0aGlzLmRlZmF1bHRQcmVzZXRzO1xuICAgIH1cblxuICAgIGdldCBzaG93UHJlc2V0c1NpZGViYXIoKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiB0aGlzLnR5cGUgPT09ICdyYW5nZScgJiYgIXRoaXMubW9iaWxlO1xuICAgIH1cblxuICAgIGdldCBzaG93RHVhbENhbGVuZGFycygpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIHRoaXMudHlwZSA9PT0gJ3JhbmdlJyAmJiAhdGhpcy5tb2JpbGU7XG4gICAgfVxuXG4gICAgZ2V0IHRyaWdnZXJMYWJlbCgpOiBzdHJpbmcge1xuICAgICAgICBpZiAodGhpcy50eXBlID09PSAnc2luZ2xlJykge1xuICAgICAgICAgICAgaWYgKHRoaXMuZGF0ZSkge1xuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLmZvcm1hdERhdGUodGhpcy5kYXRlKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiB0aGlzLnBsYWNlaG9sZGVyIHx8IHRoaXMuX3RyYW5zbGF0ZS5pbnN0YW50KCdTZWxlY3QgZGF0ZScpO1xuICAgICAgICB9XG4gICAgICAgIGlmICh0aGlzLnN0YXJ0RGF0ZSAmJiB0aGlzLmVuZERhdGUpIHtcbiAgICAgICAgICAgIGlmICh0aGlzLl9hcHBsaWVkUHJlc2V0TGFiZWxcbiAgICAgICAgICAgICAgICAmJiB0aGlzLnN0YXJ0RGF0ZS5nZXRUaW1lKCkgPT09IHRoaXMuX2FwcGxpZWRQcmVzZXRTdGFydFRpbWVcbiAgICAgICAgICAgICAgICAmJiB0aGlzLmVuZERhdGUuZ2V0VGltZSgpID09PSB0aGlzLl9hcHBsaWVkUHJlc2V0RW5kVGltZSkge1xuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLl90cmFuc2xhdGUuaW5zdGFudCh0aGlzLl9hcHBsaWVkUHJlc2V0TGFiZWwpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIGAke3RoaXMuZm9ybWF0RGF0ZSh0aGlzLnN0YXJ0RGF0ZSl9IC0gJHt0aGlzLmZvcm1hdERhdGUodGhpcy5lbmREYXRlKX1gO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB0aGlzLnBsYWNlaG9sZGVyIHx8IHRoaXMuX3RyYW5zbGF0ZS5pbnN0YW50KCdTZWxlY3QgZGF0ZXMnKTtcbiAgICB9XG5cbiAgICBnZXQgbGVnZW5kTWFya2VycygpOiBEYXRlUGlja2VyTWFya2VyW10ge1xuICAgICAgICByZXR1cm4gKHRoaXMuZGF0ZU1hcmtlcnMgfHwgW10pLmZpbHRlcihtID0+ICEhbS50aXRsZSk7XG4gICAgfVxuXG4gICAgZ2V0IGhhc1ZhbHVlKCk6IGJvb2xlYW4ge1xuICAgICAgICBpZiAodGhpcy50eXBlID09PSAnc2luZ2xlJykgcmV0dXJuICEhdGhpcy5kYXRlO1xuICAgICAgICByZXR1cm4gISEodGhpcy5zdGFydERhdGUgJiYgdGhpcy5lbmREYXRlKTtcbiAgICB9XG5cbiAgICBnZXQgZm9ybWF0dGVkU2VsZWN0ZWREYXRlKCk6IHN0cmluZyB7XG4gICAgICAgIHJldHVybiB0aGlzLl9zZWxlY3RlZERhdGUgPyB0aGlzLmZvcm1hdERhdGUodGhpcy5fc2VsZWN0ZWREYXRlKSA6ICcnO1xuICAgIH1cblxuICAgIGdldCBmb3JtYXR0ZWRTdGFydERhdGUoKTogc3RyaW5nIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX3NlbGVjdGVkU3RhcnQgPyB0aGlzLmZvcm1hdERhdGUodGhpcy5fc2VsZWN0ZWRTdGFydCkgOiAnJztcbiAgICB9XG5cbiAgICBnZXQgZm9ybWF0dGVkRW5kRGF0ZSgpOiBzdHJpbmcge1xuICAgICAgICByZXR1cm4gdGhpcy5fc2VsZWN0ZWRFbmQgPyB0aGlzLmZvcm1hdERhdGUodGhpcy5fc2VsZWN0ZWRFbmQpIDogJyc7XG4gICAgfVxuXG4gICAgZm9ybWF0RGF0ZShkYXRlOiBEYXRlKTogc3RyaW5nIHtcbiAgICAgICAgY29uc3QgZW5Nb250aCA9IG1vbWVudChkYXRlKS5mb3JtYXQoJ01NTScpO1xuICAgICAgICBjb25zdCB0cmFuc2xhdGVkTW9udGggPSB0aGlzLl90cmFuc2xhdGUuaW5zdGFudChlbk1vbnRoKTtcbiAgICAgICAgbGV0IGZvcm1hdHRlZCA9IG1vbWVudChkYXRlKS5mb3JtYXQoJ01NTSBELCBZWVlZJykucmVwbGFjZShlbk1vbnRoLCB0cmFuc2xhdGVkTW9udGgpO1xuICAgICAgICBpZiAodGhpcy50aW1lUGlja2VyKSB7XG4gICAgICAgICAgICBmb3JtYXR0ZWQgKz0gJyAnICsgdGhpcy5mb3JtYXRUaW1lKGRhdGUpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBmb3JtYXR0ZWQ7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBmb3JtYXRUaW1lKGRhdGU6IERhdGUpOiBzdHJpbmcge1xuICAgICAgICBsZXQgaCA9IGRhdGUuZ2V0SG91cnMoKTtcbiAgICAgICAgY29uc3QgbSA9IGRhdGUuZ2V0TWludXRlcygpO1xuICAgICAgICBjb25zdCBwZXJpb2QgPSBoID49IDEyID8gJ1BNJyA6ICdBTSc7XG4gICAgICAgIGlmIChoID09PSAwKSBoID0gMTI7XG4gICAgICAgIGVsc2UgaWYgKGggPiAxMikgaCAtPSAxMjtcbiAgICAgICAgcmV0dXJuIGAke3RoaXMuZm9ybWF0TnVtKGgpfToke3RoaXMuZm9ybWF0TnVtKG0pfSAke3BlcmlvZH1gO1xuICAgIH1cblxuICAgIHRvZ2dsZSgpIHtcbiAgICAgICAgaWYgKHRoaXMuZGlzYWJsZWQpIHJldHVybjtcbiAgICAgICAgaWYgKHRoaXMuaXNPcGVuKSB7XG4gICAgICAgICAgICB0aGlzLmNsb3NlKCk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLm9wZW4oKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIG9wZW4oKSB7XG4gICAgICAgIHRoaXMuaXNPcGVuID0gdHJ1ZTtcbiAgICAgICAgdGhpcy5fc2VsZWN0ZWREYXRlID0gdGhpcy5kYXRlID8gbmV3IERhdGUodGhpcy5kYXRlKSA6IG51bGw7XG4gICAgICAgIHRoaXMuX3NlbGVjdGVkU3RhcnQgPSB0aGlzLnN0YXJ0RGF0ZSA/IG5ldyBEYXRlKHRoaXMuc3RhcnREYXRlKSA6IG51bGw7XG4gICAgICAgIHRoaXMuX3NlbGVjdGVkRW5kID0gdGhpcy5lbmREYXRlID8gbmV3IERhdGUodGhpcy5lbmREYXRlKSA6IG51bGw7XG4gICAgICAgIHRoaXMuX2FjdGl2ZVByZXNldCA9ICh0aGlzLl9hcHBsaWVkUHJlc2V0TGFiZWxcbiAgICAgICAgICAgICYmIHRoaXMuc3RhcnREYXRlPy5nZXRUaW1lKCkgPT09IHRoaXMuX2FwcGxpZWRQcmVzZXRTdGFydFRpbWVcbiAgICAgICAgICAgICYmIHRoaXMuZW5kRGF0ZT8uZ2V0VGltZSgpID09PSB0aGlzLl9hcHBsaWVkUHJlc2V0RW5kVGltZSlcbiAgICAgICAgICAgID8gdGhpcy5fYXBwbGllZFByZXNldExhYmVsXG4gICAgICAgICAgICA6IG51bGw7XG5cbiAgICAgICAgaWYgKHRoaXMudGltZVBpY2tlcikge1xuICAgICAgICAgICAgdGhpcy5pbml0VGltZUZyb21EYXRlKHRoaXMudHlwZSA9PT0gJ3NpbmdsZScgPyB0aGlzLmRhdGUgOiB0aGlzLnN0YXJ0RGF0ZSk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAodGhpcy50eXBlID09PSAnc2luZ2xlJykge1xuICAgICAgICAgICAgdGhpcy5sZWZ0Q3VycmVudFNsb3QgPSB0aGlzLl9zZWxlY3RlZERhdGUgPyBuZXcgRGF0ZSh0aGlzLl9zZWxlY3RlZERhdGUpIDogbmV3IERhdGUoKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMubGVmdEN1cnJlbnRTbG90ID0gdGhpcy5fc2VsZWN0ZWRTdGFydCA/IG5ldyBEYXRlKHRoaXMuX3NlbGVjdGVkU3RhcnQpIDogbmV3IERhdGUoKTtcbiAgICAgICAgICAgIHRoaXMucmlnaHRDdXJyZW50U2xvdCA9IG1vbWVudCh0aGlzLmxlZnRDdXJyZW50U2xvdCkuYWRkKDEsICdtb250aCcpLnRvRGF0ZSgpO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy51cGRhdGVDYWxlbmRhcnMoKTtcbiAgICAgICAgdGhpcy51cGRhdGVEcm9wZG93blBvc2l0aW9uKCk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSB1cGRhdGVEcm9wZG93blBvc2l0aW9uKCkge1xuICAgICAgICBpZiAoIXRoaXMudHJpZ2dlckJ0bikgcmV0dXJuO1xuXG4gICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgICAgY29uc3QgcmVjdCA9IHRoaXMudHJpZ2dlckJ0bi5uYXRpdmVFbGVtZW50LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO1xuICAgICAgICAgICAgY29uc3QgZHJvcGRvd25FbCA9IHRoaXMuX2VsZW1lbnQubmF0aXZlRWxlbWVudC5xdWVyeVNlbGVjdG9yKCcuZHJvcGRvd24tbWVudScpO1xuICAgICAgICAgICAgY29uc3QgZHJvcGRvd25IZWlnaHQgPSBkcm9wZG93bkVsID8gZHJvcGRvd25FbC5zY3JvbGxIZWlnaHQgOiA1MDA7XG4gICAgICAgICAgICBjb25zdCBzcGFjZUJlbG93ID0gd2luZG93LmlubmVySGVpZ2h0IC0gcmVjdC5ib3R0b20gLSA4O1xuICAgICAgICAgICAgY29uc3Qgc3BhY2VBYm92ZSA9IHJlY3QudG9wIC0gODtcbiAgICAgICAgICAgIGNvbnN0IG1hcmdpbiA9IDE2O1xuICAgICAgICAgICAgY29uc3Qgdmlld3BvcnRIZWlnaHQgPSB3aW5kb3cuaW5uZXJIZWlnaHQ7XG5cbiAgICAgICAgICAgIGNvbnN0IHN0eWxlOiB7IFtrZXk6IHN0cmluZ106IHN0cmluZyB9ID0geyBsZWZ0OiBgJHtyZWN0LmxlZnR9cHhgIH07XG5cbiAgICAgICAgICAgIGlmIChzcGFjZUJlbG93ID49IGRyb3Bkb3duSGVpZ2h0KSB7XG4gICAgICAgICAgICAgICAgLy8gRml0cyBiZWxvdyB0aGUgdHJpZ2dlclxuICAgICAgICAgICAgICAgIHN0eWxlWyd0b3AnXSA9IGAke3JlY3QuYm90dG9tICsgOH1weGA7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKHNwYWNlQWJvdmUgPj0gZHJvcGRvd25IZWlnaHQpIHtcbiAgICAgICAgICAgICAgICAvLyBGaXRzIGFib3ZlIHRoZSB0cmlnZ2VyXG4gICAgICAgICAgICAgICAgc3R5bGVbJ2JvdHRvbSddID0gYCR7dmlld3BvcnRIZWlnaHQgLSByZWN0LnRvcCArIDh9cHhgO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAvLyBEb2Vzbid0IGZpdCBlaXRoZXIgd2F5IOKAlCBwaW4gdG8gdmlld3BvcnQgc28gZnVsbCBjb250ZW50IGlzIHZpc2libGVcbiAgICAgICAgICAgICAgICBjb25zdCB0b3AgPSBNYXRoLm1heChtYXJnaW4sIHZpZXdwb3J0SGVpZ2h0IC0gZHJvcGRvd25IZWlnaHQgLSBtYXJnaW4pO1xuICAgICAgICAgICAgICAgIHN0eWxlWyd0b3AnXSA9IGAke3RvcH1weGA7XG4gICAgICAgICAgICAgICAgc3R5bGVbJ21heC1oZWlnaHQnXSA9IGAke3ZpZXdwb3J0SGVpZ2h0IC0gdG9wIC0gbWFyZ2lufXB4YDtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgdGhpcy5kcm9wZG93blN0eWxlID0gc3R5bGU7XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIGNsb3NlKCkge1xuICAgICAgICB0aGlzLmlzT3BlbiA9IGZhbHNlO1xuICAgIH1cblxuICAgIC8vIENhbGVuZGFyIG5hdmlnYXRpb25cbiAgICBsZWZ0UHJldk1vbnRoKCkge1xuICAgICAgICB0aGlzLmxlZnRDdXJyZW50U2xvdCA9IG1vbWVudCh0aGlzLmxlZnRDdXJyZW50U2xvdCkuc3VidHJhY3QoMSwgJ21vbnRoJykudG9EYXRlKCk7XG4gICAgICAgIGlmICh0aGlzLnNob3dEdWFsQ2FsZW5kYXJzKSB7XG4gICAgICAgICAgICB0aGlzLnJpZ2h0Q3VycmVudFNsb3QgPSBtb21lbnQodGhpcy5sZWZ0Q3VycmVudFNsb3QpLmFkZCgxLCAnbW9udGgnKS50b0RhdGUoKTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLnVwZGF0ZUNhbGVuZGFycygpO1xuICAgIH1cblxuICAgIGxlZnROZXh0TW9udGgoKSB7XG4gICAgICAgIHRoaXMubGVmdEN1cnJlbnRTbG90ID0gbW9tZW50KHRoaXMubGVmdEN1cnJlbnRTbG90KS5hZGQoMSwgJ21vbnRoJykudG9EYXRlKCk7XG4gICAgICAgIGlmICh0aGlzLnNob3dEdWFsQ2FsZW5kYXJzKSB7XG4gICAgICAgICAgICB0aGlzLnJpZ2h0Q3VycmVudFNsb3QgPSBtb21lbnQodGhpcy5sZWZ0Q3VycmVudFNsb3QpLmFkZCgxLCAnbW9udGgnKS50b0RhdGUoKTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLnVwZGF0ZUNhbGVuZGFycygpO1xuICAgIH1cblxuICAgIHJpZ2h0UHJldk1vbnRoKCkge1xuICAgICAgICB0aGlzLnJpZ2h0Q3VycmVudFNsb3QgPSBtb21lbnQodGhpcy5yaWdodEN1cnJlbnRTbG90KS5zdWJ0cmFjdCgxLCAnbW9udGgnKS50b0RhdGUoKTtcbiAgICAgICAgdGhpcy5sZWZ0Q3VycmVudFNsb3QgPSBtb21lbnQodGhpcy5yaWdodEN1cnJlbnRTbG90KS5zdWJ0cmFjdCgxLCAnbW9udGgnKS50b0RhdGUoKTtcbiAgICAgICAgdGhpcy51cGRhdGVDYWxlbmRhcnMoKTtcbiAgICB9XG5cbiAgICByaWdodE5leHRNb250aCgpIHtcbiAgICAgICAgdGhpcy5yaWdodEN1cnJlbnRTbG90ID0gbW9tZW50KHRoaXMucmlnaHRDdXJyZW50U2xvdCkuYWRkKDEsICdtb250aCcpLnRvRGF0ZSgpO1xuICAgICAgICB0aGlzLmxlZnRDdXJyZW50U2xvdCA9IG1vbWVudCh0aGlzLnJpZ2h0Q3VycmVudFNsb3QpLnN1YnRyYWN0KDEsICdtb250aCcpLnRvRGF0ZSgpO1xuICAgICAgICB0aGlzLnVwZGF0ZUNhbGVuZGFycygpO1xuICAgIH1cblxuICAgIC8vIEZvciBtb2JpbGUvc2luZ2xlIG1vZGUgd2hlbiB0aGVyZSdzIG9ubHkgb25lIGNhbGVuZGFyXG4gICAgcHJldk1vbnRoKCkge1xuICAgICAgICB0aGlzLmxlZnRQcmV2TW9udGgoKTtcbiAgICB9XG5cbiAgICBuZXh0TW9udGgoKSB7XG4gICAgICAgIHRoaXMubGVmdE5leHRNb250aCgpO1xuICAgIH1cblxuICAgIHNlbGVjdERheShkYXk6IERhdGVQaWNrZXJEYXkpIHtcbiAgICAgICAgaWYgKGRheS5pc0Rpc2FibGVkIHx8IGRheS5pc091dHNpZGUpIHJldHVybjtcblxuICAgICAgICBpZiAodGhpcy50eXBlID09PSAnc2luZ2xlJykge1xuICAgICAgICAgICAgdGhpcy5fc2VsZWN0ZWREYXRlID0gbmV3IERhdGUoZGF5LmRhdGUpO1xuICAgICAgICAgICAgaWYgKHRoaXMuYXV0b0FwcGx5KSB7XG4gICAgICAgICAgICAgICAgdGhpcy5hcHBseSgpO1xuICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIC8vIFJhbmdlIHNlbGVjdGlvbiBsb2dpYyDigJQgc3RhcnQgYW5jaG9ycyB0byBzdGFydC1vZi1kYXksIGVuZCB0byBlbmQtb2YtZGF5LFxuICAgICAgICAgICAgLy8gc28gYSBzYW1lLWRheSBwaWNrIHNwYW5zIHRoZSBmdWxsIDI0aCAobWF0Y2hlcyBwcmVzZXQgc2VtYW50aWNzKS5cbiAgICAgICAgICAgIGlmICghdGhpcy5fc2VsZWN0ZWRTdGFydCB8fCAodGhpcy5fc2VsZWN0ZWRTdGFydCAmJiB0aGlzLl9zZWxlY3RlZEVuZCkpIHtcbiAgICAgICAgICAgICAgICAvLyBTdGFydCBuZXcgc2VsZWN0aW9uXG4gICAgICAgICAgICAgICAgdGhpcy5fc2VsZWN0ZWRTdGFydCA9IG1vbWVudChkYXkuZGF0ZSkuc3RhcnRPZignZGF5JykudG9EYXRlKCk7XG4gICAgICAgICAgICAgICAgdGhpcy5fc2VsZWN0ZWRFbmQgPSBudWxsO1xuICAgICAgICAgICAgICAgIHRoaXMuX2FjdGl2ZVByZXNldCA9IG51bGw7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIC8vIENvbXBsZXRlIHRoZSByYW5nZVxuICAgICAgICAgICAgICAgIGNvbnN0IG5ld0RheSA9IG1vbWVudChkYXkuZGF0ZSkuc3RhcnRPZignZGF5JykudG9EYXRlKCk7XG4gICAgICAgICAgICAgICAgaWYgKG1vbWVudChuZXdEYXkpLmlzQmVmb3JlKHRoaXMuX3NlbGVjdGVkU3RhcnQpKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuX3NlbGVjdGVkRW5kID0gbW9tZW50KHRoaXMuX3NlbGVjdGVkU3RhcnQpLmVuZE9mKCdkYXknKS50b0RhdGUoKTtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5fc2VsZWN0ZWRTdGFydCA9IG5ld0RheTtcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLl9zZWxlY3RlZEVuZCA9IG1vbWVudChuZXdEYXkpLmVuZE9mKCdkYXknKS50b0RhdGUoKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy51cGRhdGVDYWxlbmRhcnMoKTtcbiAgICB9XG5cbiAgICBzZWxlY3RQcmVzZXQocHJlc2V0OiBEYXRlUGlja2VyUHJlc2V0KSB7XG4gICAgICAgIGNvbnN0IHJhbmdlID0gcHJlc2V0LmdldFJhbmdlKCk7XG4gICAgICAgIHRoaXMuX3NlbGVjdGVkU3RhcnQgPSByYW5nZS5zdGFydDtcbiAgICAgICAgdGhpcy5fc2VsZWN0ZWRFbmQgPSByYW5nZS5lbmQ7XG4gICAgICAgIHRoaXMuX2FjdGl2ZVByZXNldCA9IHByZXNldC5sYWJlbDtcbiAgICAgICAgdGhpcy5sZWZ0Q3VycmVudFNsb3QgPSBuZXcgRGF0ZShyYW5nZS5zdGFydCk7XG4gICAgICAgIGlmICh0aGlzLnNob3dEdWFsQ2FsZW5kYXJzKSB7XG4gICAgICAgICAgICB0aGlzLnJpZ2h0Q3VycmVudFNsb3QgPSBtb21lbnQodGhpcy5sZWZ0Q3VycmVudFNsb3QpLmFkZCgxLCAnbW9udGgnKS50b0RhdGUoKTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLnVwZGF0ZUNhbGVuZGFycygpO1xuICAgIH1cblxuICAgIGdvVG9Ub2RheSgpIHtcbiAgICAgICAgY29uc3QgdG9kYXkgPSBuZXcgRGF0ZSgpO1xuICAgICAgICB0aGlzLl9zZWxlY3RlZERhdGUgPSBtb21lbnQodG9kYXkpLnN0YXJ0T2YoJ2RheScpLnRvRGF0ZSgpO1xuICAgICAgICB0aGlzLmxlZnRDdXJyZW50U2xvdCA9IG5ldyBEYXRlKHRvZGF5KTtcbiAgICAgICAgdGhpcy51cGRhdGVDYWxlbmRhcnMoKTtcbiAgICB9XG5cbiAgICAvLyBUaW1lIHBpY2tlciBtZXRob2RzXG4gICAgcHJpdmF0ZSBmb3JtYXROdW0objogbnVtYmVyKTogc3RyaW5nIHtcbiAgICAgICAgcmV0dXJuIG4gPCAxMCA/ICcwJyArIG4gOiAnJyArIG47XG4gICAgfVxuXG4gICAgaW5jcmVtZW50SG91cnMoKSB7XG4gICAgICAgIHRoaXMuX2hvdXJzID0gdGhpcy5faG91cnMgPj0gMTIgPyAxIDogdGhpcy5faG91cnMgKyAxO1xuICAgICAgICB0aGlzLl9ob3Vyc0Rpc3BsYXkgPSB0aGlzLmZvcm1hdE51bSh0aGlzLl9ob3Vycyk7XG4gICAgfVxuXG4gICAgZGVjcmVtZW50SG91cnMoKSB7XG4gICAgICAgIHRoaXMuX2hvdXJzID0gdGhpcy5faG91cnMgPD0gMSA/IDEyIDogdGhpcy5faG91cnMgLSAxO1xuICAgICAgICB0aGlzLl9ob3Vyc0Rpc3BsYXkgPSB0aGlzLmZvcm1hdE51bSh0aGlzLl9ob3Vycyk7XG4gICAgfVxuXG4gICAgaW5jcmVtZW50TWludXRlcygpIHtcbiAgICAgICAgdGhpcy5fbWludXRlcyA9IHRoaXMuX21pbnV0ZXMgPj0gNTkgPyAwIDogdGhpcy5fbWludXRlcyArIDE7XG4gICAgICAgIHRoaXMuX21pbnV0ZXNEaXNwbGF5ID0gdGhpcy5mb3JtYXROdW0odGhpcy5fbWludXRlcyk7XG4gICAgfVxuXG4gICAgZGVjcmVtZW50TWludXRlcygpIHtcbiAgICAgICAgdGhpcy5fbWludXRlcyA9IHRoaXMuX21pbnV0ZXMgPD0gMCA/IDU5IDogdGhpcy5fbWludXRlcyAtIDE7XG4gICAgICAgIHRoaXMuX21pbnV0ZXNEaXNwbGF5ID0gdGhpcy5mb3JtYXROdW0odGhpcy5fbWludXRlcyk7XG4gICAgfVxuXG4gICAgb25Ib3Vyc0lucHV0KGV2ZW50OiBFdmVudCkge1xuICAgICAgICBjb25zdCBpbnB1dCA9IGV2ZW50LnRhcmdldCBhcyBIVE1MSW5wdXRFbGVtZW50O1xuICAgICAgICBjb25zdCByYXcgPSBpbnB1dC52YWx1ZS5yZXBsYWNlKC9cXEQvZywgJycpO1xuICAgICAgICBpZiAocmF3ID09PSAnJykge1xuICAgICAgICAgICAgdGhpcy5faG91cnMgPSAxO1xuICAgICAgICAgICAgdGhpcy5faG91cnNEaXNwbGF5ID0gJyc7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgdmFsID0gcGFyc2VJbnQocmF3LCAxMCk7XG4gICAgICAgIGlmICh2YWwgPj0gMSAmJiB2YWwgPD0gMTIpIHtcbiAgICAgICAgICAgIHRoaXMuX2hvdXJzID0gdmFsO1xuICAgICAgICAgICAgdGhpcy5faG91cnNEaXNwbGF5ID0gcmF3O1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgaW5wdXQudmFsdWUgPSB0aGlzLl9ob3Vyc0Rpc3BsYXk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBvbk1pbnV0ZXNJbnB1dChldmVudDogRXZlbnQpIHtcbiAgICAgICAgY29uc3QgaW5wdXQgPSBldmVudC50YXJnZXQgYXMgSFRNTElucHV0RWxlbWVudDtcbiAgICAgICAgY29uc3QgcmF3ID0gaW5wdXQudmFsdWUucmVwbGFjZSgvXFxEL2csICcnKTtcbiAgICAgICAgaWYgKHJhdyA9PT0gJycpIHtcbiAgICAgICAgICAgIHRoaXMuX21pbnV0ZXMgPSAwO1xuICAgICAgICAgICAgdGhpcy5fbWludXRlc0Rpc3BsYXkgPSAnJztcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCB2YWwgPSBwYXJzZUludChyYXcsIDEwKTtcbiAgICAgICAgaWYgKHZhbCA+PSAwICYmIHZhbCA8PSA1OSkge1xuICAgICAgICAgICAgdGhpcy5fbWludXRlcyA9IHZhbDtcbiAgICAgICAgICAgIHRoaXMuX21pbnV0ZXNEaXNwbGF5ID0gcmF3O1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgaW5wdXQudmFsdWUgPSB0aGlzLl9taW51dGVzRGlzcGxheTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGNsYW1wSG91cnMoKSB7XG4gICAgICAgIHRoaXMuX2hvdXJzID0gTWF0aC5tYXgoMSwgTWF0aC5taW4oMTIsIHRoaXMuX2hvdXJzKSk7XG4gICAgICAgIHRoaXMuX2hvdXJzRGlzcGxheSA9IHRoaXMuZm9ybWF0TnVtKHRoaXMuX2hvdXJzKTtcbiAgICB9XG5cbiAgICBjbGFtcE1pbnV0ZXMoKSB7XG4gICAgICAgIHRoaXMuX21pbnV0ZXMgPSBNYXRoLm1heCgwLCBNYXRoLm1pbig1OSwgdGhpcy5fbWludXRlcykpO1xuICAgICAgICB0aGlzLl9taW51dGVzRGlzcGxheSA9IHRoaXMuZm9ybWF0TnVtKHRoaXMuX21pbnV0ZXMpO1xuICAgIH1cblxuICAgIG9uVGltZUZvY3VzKGV2ZW50OiBFdmVudCkge1xuICAgICAgICBjb25zdCBpbnB1dCA9IGV2ZW50LnRhcmdldCBhcyBIVE1MSW5wdXRFbGVtZW50O1xuICAgICAgICBpbnB1dC5zZWxlY3QoKTtcbiAgICB9XG5cbiAgICBvblRpbWVLZXlkb3duKGV2ZW50OiBLZXlib2FyZEV2ZW50LCB0eXBlOiAnaG91cnMnIHwgJ21pbnV0ZXMnKSB7XG4gICAgICAgIGlmIChldmVudC5rZXkgPT09ICdBcnJvd1VwJykge1xuICAgICAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgICAgIGlmICh0eXBlID09PSAnaG91cnMnKSB0aGlzLmluY3JlbWVudEhvdXJzKCk7XG4gICAgICAgICAgICBlbHNlIHRoaXMuaW5jcmVtZW50TWludXRlcygpO1xuICAgICAgICB9IGVsc2UgaWYgKGV2ZW50LmtleSA9PT0gJ0Fycm93RG93bicpIHtcbiAgICAgICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgICAgICBpZiAodHlwZSA9PT0gJ2hvdXJzJykgdGhpcy5kZWNyZW1lbnRIb3VycygpO1xuICAgICAgICAgICAgZWxzZSB0aGlzLmRlY3JlbWVudE1pbnV0ZXMoKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHNldFBlcmlvZChwZXJpb2Q6ICdBTScgfCAnUE0nKSB7XG4gICAgICAgIHRoaXMuX3BlcmlvZCA9IHBlcmlvZDtcbiAgICB9XG5cbiAgICBwcml2YXRlIGFwcGx5VGltZVRvRGF0ZShkYXRlOiBEYXRlKTogRGF0ZSB7XG4gICAgICAgIGNvbnN0IHJlc3VsdCA9IG5ldyBEYXRlKGRhdGUpO1xuICAgICAgICBsZXQgaG91cnMgPSB0aGlzLl9ob3VycztcbiAgICAgICAgaWYgKHRoaXMuX3BlcmlvZCA9PT0gJ0FNJyAmJiBob3VycyA9PT0gMTIpIHtcbiAgICAgICAgICAgIGhvdXJzID0gMDtcbiAgICAgICAgfSBlbHNlIGlmICh0aGlzLl9wZXJpb2QgPT09ICdQTScgJiYgaG91cnMgIT09IDEyKSB7XG4gICAgICAgICAgICBob3VycyArPSAxMjtcbiAgICAgICAgfVxuICAgICAgICByZXN1bHQuc2V0SG91cnMoaG91cnMsIHRoaXMuX21pbnV0ZXMsIDAsIDApO1xuICAgICAgICByZXR1cm4gcmVzdWx0O1xuICAgIH1cblxuICAgIHByaXZhdGUgaW5pdFRpbWVGcm9tRGF0ZShkYXRlOiBEYXRlIHwgbnVsbCkge1xuICAgICAgICBpZiAoIWRhdGUpIHtcbiAgICAgICAgICAgIHRoaXMuX2hvdXJzID0gMTI7XG4gICAgICAgICAgICB0aGlzLl9taW51dGVzID0gMDtcbiAgICAgICAgICAgIHRoaXMuX3BlcmlvZCA9ICdBTSc7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBsZXQgaCA9IGRhdGUuZ2V0SG91cnMoKTtcbiAgICAgICAgICAgIHRoaXMuX21pbnV0ZXMgPSBkYXRlLmdldE1pbnV0ZXMoKTtcbiAgICAgICAgICAgIGlmIChoID09PSAwKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5faG91cnMgPSAxMjtcbiAgICAgICAgICAgICAgICB0aGlzLl9wZXJpb2QgPSAnQU0nO1xuICAgICAgICAgICAgfSBlbHNlIGlmIChoIDwgMTIpIHtcbiAgICAgICAgICAgICAgICB0aGlzLl9ob3VycyA9IGg7XG4gICAgICAgICAgICAgICAgdGhpcy5fcGVyaW9kID0gJ0FNJztcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoaCA9PT0gMTIpIHtcbiAgICAgICAgICAgICAgICB0aGlzLl9ob3VycyA9IDEyO1xuICAgICAgICAgICAgICAgIHRoaXMuX3BlcmlvZCA9ICdQTSc7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHRoaXMuX2hvdXJzID0gaCAtIDEyO1xuICAgICAgICAgICAgICAgIHRoaXMuX3BlcmlvZCA9ICdQTSc7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5faG91cnNEaXNwbGF5ID0gdGhpcy5mb3JtYXROdW0odGhpcy5faG91cnMpO1xuICAgICAgICB0aGlzLl9taW51dGVzRGlzcGxheSA9IHRoaXMuZm9ybWF0TnVtKHRoaXMuX21pbnV0ZXMpO1xuICAgIH1cblxuICAgIGFwcGx5KCkge1xuICAgICAgICBpZiAodGhpcy50eXBlID09PSAnc2luZ2xlJykge1xuICAgICAgICAgICAgaWYgKHRoaXMuX3NlbGVjdGVkRGF0ZSkge1xuICAgICAgICAgICAgICAgIHRoaXMuZGF0ZSA9IHRoaXMudGltZVBpY2tlclxuICAgICAgICAgICAgICAgICAgICA/IHRoaXMuYXBwbHlUaW1lVG9EYXRlKHRoaXMuX3NlbGVjdGVkRGF0ZSlcbiAgICAgICAgICAgICAgICAgICAgOiBuZXcgRGF0ZSh0aGlzLl9zZWxlY3RlZERhdGUpO1xuICAgICAgICAgICAgICAgIHRoaXMuZGF0ZUNoYW5nZS5lbWl0KHRoaXMuZGF0ZSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBpZiAodGhpcy5fc2VsZWN0ZWRTdGFydCkge1xuICAgICAgICAgICAgICAgIHRoaXMuc3RhcnREYXRlID0gdGhpcy50aW1lUGlja2VyXG4gICAgICAgICAgICAgICAgICAgID8gdGhpcy5hcHBseVRpbWVUb0RhdGUodGhpcy5fc2VsZWN0ZWRTdGFydClcbiAgICAgICAgICAgICAgICAgICAgOiBuZXcgRGF0ZSh0aGlzLl9zZWxlY3RlZFN0YXJ0KTtcbiAgICAgICAgICAgICAgICB0aGlzLnN0YXJ0RGF0ZUNoYW5nZS5lbWl0KHRoaXMuc3RhcnREYXRlKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmICh0aGlzLl9zZWxlY3RlZEVuZCkge1xuICAgICAgICAgICAgICAgIHRoaXMuZW5kRGF0ZSA9IHRoaXMudGltZVBpY2tlclxuICAgICAgICAgICAgICAgICAgICA/IHRoaXMuYXBwbHlUaW1lVG9EYXRlKHRoaXMuX3NlbGVjdGVkRW5kKVxuICAgICAgICAgICAgICAgICAgICA6IG5ldyBEYXRlKHRoaXMuX3NlbGVjdGVkRW5kKTtcbiAgICAgICAgICAgICAgICB0aGlzLmVuZERhdGVDaGFuZ2UuZW1pdCh0aGlzLmVuZERhdGUpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKHRoaXMuX3NlbGVjdGVkU3RhcnQgJiYgdGhpcy5fc2VsZWN0ZWRFbmQpIHtcbiAgICAgICAgICAgICAgICB0aGlzLnJhbmdlQ2hhbmdlLmVtaXQoeyBzdGFydDogdGhpcy5zdGFydERhdGUsIGVuZDogdGhpcy5lbmREYXRlIH0pO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKHRoaXMuX2FjdGl2ZVByZXNldCAmJiB0aGlzLnN0YXJ0RGF0ZSAmJiB0aGlzLmVuZERhdGUpIHtcbiAgICAgICAgICAgICAgICB0aGlzLl9hcHBsaWVkUHJlc2V0TGFiZWwgPSB0aGlzLl9hY3RpdmVQcmVzZXQ7XG4gICAgICAgICAgICAgICAgdGhpcy5fYXBwbGllZFByZXNldFN0YXJ0VGltZSA9IHRoaXMuc3RhcnREYXRlLmdldFRpbWUoKTtcbiAgICAgICAgICAgICAgICB0aGlzLl9hcHBsaWVkUHJlc2V0RW5kVGltZSA9IHRoaXMuZW5kRGF0ZS5nZXRUaW1lKCk7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHRoaXMuX2FwcGxpZWRQcmVzZXRMYWJlbCA9IG51bGw7XG4gICAgICAgICAgICAgICAgdGhpcy5fYXBwbGllZFByZXNldFN0YXJ0VGltZSA9IG51bGw7XG4gICAgICAgICAgICAgICAgdGhpcy5fYXBwbGllZFByZXNldEVuZFRpbWUgPSBudWxsO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHRoaXMuY2xvc2UoKTtcbiAgICB9XG5cbiAgICBjYW5jZWwoKSB7XG4gICAgICAgIHRoaXMuY2xvc2UoKTtcbiAgICB9XG5cbiAgICBnZXQgY2FuQXBwbHkoKTogYm9vbGVhbiB7XG4gICAgICAgIGlmICh0aGlzLnR5cGUgPT09ICdzaW5nbGUnKSByZXR1cm4gISF0aGlzLl9zZWxlY3RlZERhdGU7XG4gICAgICAgIHJldHVybiAhISh0aGlzLl9zZWxlY3RlZFN0YXJ0ICYmIHRoaXMuX3NlbGVjdGVkRW5kKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIHVwZGF0ZUNhbGVuZGFycygpIHtcbiAgICAgICAgdGhpcy51cGRhdGVEYXlzKHRoaXMubGVmdEN1cnJlbnRTbG90LCAnbGVmdCcpO1xuICAgICAgICBpZiAodGhpcy5zaG93RHVhbENhbGVuZGFycykge1xuICAgICAgICAgICAgdGhpcy51cGRhdGVEYXlzKHRoaXMucmlnaHRDdXJyZW50U2xvdCwgJ3JpZ2h0Jyk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcml2YXRlIHVwZGF0ZURheXMoc2xvdDogRGF0ZSwgc2lkZTogJ2xlZnQnIHwgJ3JpZ2h0Jykge1xuICAgICAgICBjb25zdCB0aXRsZSA9IG1vbWVudChzbG90KS5mb3JtYXQoJ01NTU0gWVlZWScpO1xuXG4gICAgICAgIGNvbnN0IGRheVJvd3M6IEFycmF5PHsgZGF5czogRGF0ZVBpY2tlckRheVtdIH0+ID0gW107XG4gICAgICAgIGxldCBjdXJyZW50ID0gbW9tZW50KHNsb3QpLnN0YXJ0T2YoJ21vbnRoJykuc3RhcnRPZignaXNvV2VlaycpO1xuICAgICAgICBjb25zdCBlbmQgPSBtb21lbnQoc2xvdCkuZW5kT2YoJ21vbnRoJykuZW5kT2YoJ2lzb1dlZWsnKTtcbiAgICAgICAgY29uc3QgY3VycmVudE1vbnRoID0gbW9tZW50KHNsb3QpLm1vbnRoKCk7XG5cbiAgICAgICAgd2hpbGUgKGN1cnJlbnQuaXNTYW1lT3JCZWZvcmUoZW5kKSkge1xuICAgICAgICAgICAgY29uc3Qgcm93ID0geyBkYXlzOiBbXSBhcyBEYXRlUGlja2VyRGF5W10gfTtcbiAgICAgICAgICAgIGRheVJvd3MucHVzaChyb3cpO1xuICAgICAgICAgICAgZm9yIChsZXQgaWR4ID0gMDsgaWR4IDwgNzsgaWR4KyspIHtcbiAgICAgICAgICAgICAgICBjb25zdCBpc091dHNpZGUgPSBjdXJyZW50TW9udGggIT09IGN1cnJlbnQubW9udGgoKTtcblxuICAgICAgICAgICAgICAgIGxldCBpc0Rpc2FibGVkID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgaWYgKHRoaXMubWluRGF0ZSAmJiBjdXJyZW50LnRvRGF0ZSgpIDwgdGhpcy5taW5EYXRlKSB7XG4gICAgICAgICAgICAgICAgICAgIGlzRGlzYWJsZWQgPSB0cnVlO1xuICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAodGhpcy5tYXhEYXRlICYmIGN1cnJlbnQudG9EYXRlKCkgPiB0aGlzLm1heERhdGUpIHtcbiAgICAgICAgICAgICAgICAgICAgaXNEaXNhYmxlZCA9IHRydWU7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgbGV0IG1hcmtlckNvbG9yczogKHN0cmluZyB8IHVuZGVmaW5lZClbXSB8IHVuZGVmaW5lZDtcbiAgICAgICAgICAgICAgICBpZiAoIWlzT3V0c2lkZSAmJiB0aGlzLmRhdGVNYXJrZXJzICYmIHRoaXMuZGF0ZU1hcmtlcnMubGVuZ3RoKSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHRzID0gY3VycmVudC52YWx1ZU9mKCk7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGNvbG9yczogKHN0cmluZyB8IHVuZGVmaW5lZClbXSA9IFtdO1xuICAgICAgICAgICAgICAgICAgICBmb3IgKGNvbnN0IG0gb2YgdGhpcy5kYXRlTWFya2Vycykge1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKG0uZGF0ZXMgJiYgbS5kYXRlcy5pbmRleE9mKHRzKSA+PSAwKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29sb3JzLnB1c2gobS5jb2xvcik7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgaWYgKGNvbG9ycy5sZW5ndGgpIG1hcmtlckNvbG9ycyA9IGNvbG9ycztcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICBjb25zdCBpc1NlbGVjdGVkID0gaXNPdXRzaWRlID8gZmFsc2UgOiB0aGlzLmlzRGF5U2VsZWN0ZWQoY3VycmVudCk7XG5cbiAgICAgICAgICAgICAgICByb3cuZGF5cy5wdXNoKHtcbiAgICAgICAgICAgICAgICAgICAgZGF0ZTogY3VycmVudC50b0RhdGUoKSxcbiAgICAgICAgICAgICAgICAgICAgbGJsOiBpc091dHNpZGUgPyAnJyA6IGN1cnJlbnQuZGF0ZSgpLnRvU3RyaW5nKCksXG4gICAgICAgICAgICAgICAgICAgIGlzT3V0c2lkZSxcbiAgICAgICAgICAgICAgICAgICAgc2VsZWN0ZWQ6IGlzU2VsZWN0ZWQsXG4gICAgICAgICAgICAgICAgICAgIGlzRGlzYWJsZWQ6IGlzT3V0c2lkZSA/IHRydWUgOiBpc0Rpc2FibGVkLFxuICAgICAgICAgICAgICAgICAgICBpc0hpZ2hsaWdodGVkOiBmYWxzZSxcbiAgICAgICAgICAgICAgICAgICAgbWFya2VyQ29sb3JzXG4gICAgICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgICAgICAgICBjdXJyZW50ID0gY3VycmVudC5jbG9uZSgpLmFkZCgxLCAnZGF5Jyk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoc2lkZSA9PT0gJ2xlZnQnKSB7XG4gICAgICAgICAgICB0aGlzLmxlZnREYXlSb3dzID0gZGF5Um93cztcbiAgICAgICAgICAgIHRoaXMubGVmdERheXNUaXRsZSA9IHRpdGxlO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5yaWdodERheVJvd3MgPSBkYXlSb3dzO1xuICAgICAgICAgICAgdGhpcy5yaWdodERheXNUaXRsZSA9IHRpdGxlO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBpc0RheVNlbGVjdGVkKGRhdGU6IG1vbWVudC5Nb21lbnQpOiBib29sZWFuIHtcbiAgICAgICAgaWYgKHRoaXMudHlwZSA9PT0gJ3NpbmdsZScpIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLl9zZWxlY3RlZERhdGUgPyBkYXRlLmlzU2FtZShtb21lbnQodGhpcy5fc2VsZWN0ZWREYXRlKSwgJ2RheScpIDogZmFsc2U7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHRoaXMuX3NlbGVjdGVkU3RhcnQgJiYgZGF0ZS5pc1NhbWUobW9tZW50KHRoaXMuX3NlbGVjdGVkU3RhcnQpLCAnZGF5JykpIHJldHVybiB0cnVlO1xuICAgICAgICBpZiAodGhpcy5fc2VsZWN0ZWRFbmQgJiYgZGF0ZS5pc1NhbWUobW9tZW50KHRoaXMuX3NlbGVjdGVkRW5kKSwgJ2RheScpKSByZXR1cm4gdHJ1ZTtcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cblxuICAgIGlzVG9kYXkoZGF5OiBEYXRlUGlja2VyRGF5KTogYm9vbGVhbiB7XG4gICAgICAgIGlmIChkYXkuaXNPdXRzaWRlKSByZXR1cm4gZmFsc2U7XG4gICAgICAgIHJldHVybiBtb21lbnQoZGF5LmRhdGUpLmlzU2FtZShtb21lbnQoKSwgJ2RheScpO1xuICAgIH1cblxuICAgIGlzSW5SYW5nZShkYXk6IERhdGVQaWNrZXJEYXkpOiBib29sZWFuIHtcbiAgICAgICAgaWYgKGRheS5pc091dHNpZGUpIHJldHVybiBmYWxzZTtcbiAgICAgICAgaWYgKHRoaXMudHlwZSAhPT0gJ3JhbmdlJyB8fCAhdGhpcy5fc2VsZWN0ZWRTdGFydCB8fCAhdGhpcy5fc2VsZWN0ZWRFbmQpIHJldHVybiBmYWxzZTtcbiAgICAgICAgY29uc3QgZCA9IG1vbWVudChkYXkuZGF0ZSk7XG4gICAgICAgIHJldHVybiBkLmlzQWZ0ZXIobW9tZW50KHRoaXMuX3NlbGVjdGVkU3RhcnQpLCAnZGF5JykgJiYgZC5pc0JlZm9yZShtb21lbnQodGhpcy5fc2VsZWN0ZWRFbmQpLCAnZGF5Jyk7XG4gICAgfVxuXG4gICAgaXNSYW5nZVN0YXJ0KGRheTogRGF0ZVBpY2tlckRheSk6IGJvb2xlYW4ge1xuICAgICAgICBpZiAoZGF5LmlzT3V0c2lkZSkgcmV0dXJuIGZhbHNlO1xuICAgICAgICBpZiAodGhpcy50eXBlICE9PSAncmFuZ2UnIHx8ICF0aGlzLl9zZWxlY3RlZFN0YXJ0KSByZXR1cm4gZmFsc2U7XG4gICAgICAgIHJldHVybiBtb21lbnQoZGF5LmRhdGUpLmlzU2FtZShtb21lbnQodGhpcy5fc2VsZWN0ZWRTdGFydCksICdkYXknKTtcbiAgICB9XG5cbiAgICBpc1JhbmdlRW5kKGRheTogRGF0ZVBpY2tlckRheSk6IGJvb2xlYW4ge1xuICAgICAgICBpZiAoZGF5LmlzT3V0c2lkZSkgcmV0dXJuIGZhbHNlO1xuICAgICAgICBpZiAodGhpcy50eXBlICE9PSAncmFuZ2UnIHx8ICF0aGlzLl9zZWxlY3RlZEVuZCkgcmV0dXJuIGZhbHNlO1xuICAgICAgICByZXR1cm4gbW9tZW50KGRheS5kYXRlKS5pc1NhbWUobW9tZW50KHRoaXMuX3NlbGVjdGVkRW5kKSwgJ2RheScpO1xuICAgIH1cbn1cbiIsIjxkaXYgY2xhc3M9XCJ6ZW4tZHBkXCI+XG4gICAgPCEtLSBUcmlnZ2VyIEJ1dHRvbiAtLT5cbiAgICA8YnV0dG9uIGNsYXNzPVwiZHJvcGRvd24tdHJpZ2dlclwiXG4gICAgICAgICAgICAjdHJpZ2dlckJ0blxuICAgICAgICAgICAgW2Rpc2FibGVkXT1cImRpc2FibGVkXCJcbiAgICAgICAgICAgIFtjbGFzcy5hY3RpdmVdPVwiaXNPcGVuXCJcbiAgICAgICAgICAgIFtjbGFzcy5oYXMtdmFsdWVdPVwiaGFzVmFsdWVcIlxuICAgICAgICAgICAgKGNsaWNrKT1cInRvZ2dsZSgpXCI+XG4gICAgICAgIDx6ZW4taWNvbiBjbGFzcz1cInRyaWdnZXItaWNvblwiXG4gICAgICAgICAgICAgICAgICBzcmM9XCJhc3NldHMvbmctemVuZHVpdC9pY29ucy9jYWxlbmRhci5zdmdcIj5cbiAgICAgICAgPC96ZW4taWNvbj5cbiAgICAgICAgPHNwYW4gY2xhc3M9XCJ0cmlnZ2VyLWxhYmVsXCI+e3sgdHJpZ2dlckxhYmVsIH19PC9zcGFuPlxuICAgIDwvYnV0dG9uPlxuXG4gICAgPCEtLSBEcm9wZG93biBQYW5lbCAtLT5cbiAgICA8ZGl2IGNsYXNzPVwiZHJvcGRvd24tbWVudVwiICpuZ0lmPVwiaXNPcGVuXCIgW2NsYXNzLm1vYmlsZV09XCJtb2JpbGVcIiBbbmdTdHlsZV09XCJkcm9wZG93blN0eWxlXCI+XG4gICAgICAgIDwhLS0gUkFOR0UgREVTS1RPUDogcHJlc2V0cyBzaWRlYmFyICsgZHVhbCBjYWxlbmRhciAtLT5cbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cInR5cGUgPT09ICdyYW5nZScgJiYgIW1vYmlsZVwiPlxuICAgICAgICAgICAgPCEtLSBQcmVzZXRzIHNpZGViYXIgLS0+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwicHJlc2V0cy1zaWRlYmFyXCI+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInByZXNldC1pdGVtXCJcbiAgICAgICAgICAgICAgICAgICAgICpuZ0Zvcj1cImxldCBwcmVzZXQgb2YgYWN0aXZlUHJlc2V0c1wiXG4gICAgICAgICAgICAgICAgICAgICBbY2xhc3MuYWN0aXZlXT1cIl9hY3RpdmVQcmVzZXQgPT09IHByZXNldC5sYWJlbFwiXG4gICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwic2VsZWN0UHJlc2V0KHByZXNldClcIj5cbiAgICAgICAgICAgICAgICAgICAge3sgcHJlc2V0LmxhYmVsIHwgdHJhbnNsYXRlIH19XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cInNpZGViYXItZGl2aWRlclwiPjwvZGl2PlxuXG4gICAgICAgICAgICA8IS0tIENhbGVuZGFycyArIGJvdHRvbSBwYW5lbCAtLT5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjYWxlbmRhcnMtY29udGFpbmVyXCI+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImR1YWwtY2FsZW5kYXJzXCI+XG4gICAgICAgICAgICAgICAgICAgIDwhLS0gTGVmdCBjYWxlbmRhciAtLT5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNhbGVuZGFyLXBhbmVsXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2FsZW5kYXItY29udGVudFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtb250aC1oZWFkZXJcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz1cIm5hdi1idG5cIiAoY2xpY2spPVwibGVmdFByZXZNb250aCgpXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8emVuLWljb24gc3JjPVwiYXNzZXRzL25nLXplbmR1aXQvaWNvbnMvYXJyb3ctbGVmdC5zdmdcIj48L3plbi1pY29uPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJtb250aC10aXRsZVwiPnt7IGxlZnREYXlzVGl0bGUgfX08L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24gY2xhc3M9XCJuYXYtYnRuXCIgKGNsaWNrKT1cImxlZnROZXh0TW9udGgoKVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHplbi1pY29uIHNyYz1cImFzc2V0cy9uZy16ZW5kdWl0L2ljb25zL2Fycm93LXJpZ2h0LnN2Z1wiPjwvemVuLWljb24+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJjYWxlbmRhckdyaWQ7IGNvbnRleHQ6IHsgJGltcGxpY2l0OiBsZWZ0RGF5Um93cyB9XCI+PC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNhbGVuZGFyLWRpdmlkZXJcIj48L2Rpdj5cblxuICAgICAgICAgICAgICAgICAgICA8IS0tIFJpZ2h0IGNhbGVuZGFyIC0tPlxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2FsZW5kYXItcGFuZWxcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjYWxlbmRhci1jb250ZW50XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm1vbnRoLWhlYWRlclwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIGNsYXNzPVwibmF2LWJ0blwiIChjbGljayk9XCJyaWdodFByZXZNb250aCgpXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8emVuLWljb24gc3JjPVwiYXNzZXRzL25nLXplbmR1aXQvaWNvbnMvYXJyb3ctbGVmdC5zdmdcIj48L3plbi1pY29uPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJtb250aC10aXRsZVwiPnt7IHJpZ2h0RGF5c1RpdGxlIH19PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIGNsYXNzPVwibmF2LWJ0blwiIChjbGljayk9XCJyaWdodE5leHRNb250aCgpXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8emVuLWljb24gc3JjPVwiYXNzZXRzL25nLXplbmR1aXQvaWNvbnMvYXJyb3ctcmlnaHQuc3ZnXCI+PC96ZW4taWNvbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cImNhbGVuZGFyR3JpZDsgY29udGV4dDogeyAkaW1wbGljaXQ6IHJpZ2h0RGF5Um93cyB9XCI+PC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICAgICAgICA8IS0tIFRpbWUgUGlja2VyIC0tPlxuICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJ0aW1lUGlja2VyXCI+XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJib3R0b20tZGl2aWRlclwiPjwvZGl2PlxuICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwidGltZVBpY2tlclNlY3Rpb25cIj48L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cblxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJib3R0b20tZGl2aWRlclwiPjwvZGl2PlxuXG4gICAgICAgICAgICAgICAgPCEtLSBCb3R0b20gcGFuZWw6IGlucHV0cyAob3IgbGVnZW5kKSArIGFjdGlvbnMgLS0+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImJvdHRvbS1wYW5lbFwiPlxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibWFya2VyLWxlZ2VuZFwiICpuZ0lmPVwibGVnZW5kTWFya2Vycy5sZW5ndGg7IGVsc2UgcmFuZ2VJbnB1dHNcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJsZWdlbmQtaXRlbVwiICpuZ0Zvcj1cImxldCBtIG9mIGxlZ2VuZE1hcmtlcnNcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImxlZ2VuZC1kb3RcIiBbc3R5bGUuYmFja2dyb3VuZF09XCJtLmNvbG9yIHx8IG51bGxcIj48L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJsZWdlbmQtdGl0bGVcIj57eyBtLnRpdGxlIHwgdHJhbnNsYXRlIH19PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICA8bmctdGVtcGxhdGUgI3JhbmdlSW5wdXRzPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImlucHV0LWZpZWxkc1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkYXRlLWlucHV0XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiZGF0ZS1pbnB1dC10ZXh0XCIgW2NsYXNzLnBsYWNlaG9sZGVyXT1cIiFfc2VsZWN0ZWRTdGFydFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3sgX3NlbGVjdGVkU3RhcnQgPyBmb3JtYXR0ZWRTdGFydERhdGUgOiAoJ1N0YXJ0IGRhdGUnIHwgdHJhbnNsYXRlKSB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJkYXRlLXNlcGFyYXRvclwiPiZuZGFzaDs8L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImRhdGUtaW5wdXRcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJkYXRlLWlucHV0LXRleHRcIiBbY2xhc3MucGxhY2Vob2xkZXJdPVwiIV9zZWxlY3RlZEVuZFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3sgX3NlbGVjdGVkRW5kID8gZm9ybWF0dGVkRW5kRGF0ZSA6ICgnRW5kIGRhdGUnIHwgdHJhbnNsYXRlKSB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImFjdGlvbnNcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24gY2xhc3M9XCJidG4tY2FuY2VsXCIgKGNsaWNrKT1cImNhbmNlbCgpXCI+e3sgJ0NhbmNlbCcgfCB0cmFuc2xhdGUgfX08L2J1dHRvbj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24gY2xhc3M9XCJidG4tYXBwbHlcIiBbZGlzYWJsZWRdPVwiIWNhbkFwcGx5XCIgKGNsaWNrKT1cImFwcGx5KClcIj57eyAnQXBwbHknIHwgdHJhbnNsYXRlIH19PC9idXR0b24+XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvbmctY29udGFpbmVyPlxuXG4gICAgICAgIDwhLS0gUkFOR0UgTU9CSUxFOiBzaW5nbGUgY2FsZW5kYXIgd2l0aCBkdWFsIGlucHV0cyBvbiB0b3AgLS0+XG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJ0eXBlID09PSAncmFuZ2UnICYmIG1vYmlsZVwiPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cInNpbmdsZS1jYWxlbmRhci1jb250YWluZXJcIj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2FsZW5kYXItY29udGVudFwiPlxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibW9udGgtaGVhZGVyXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIGNsYXNzPVwibmF2LWJ0blwiIChjbGljayk9XCJwcmV2TW9udGgoKVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx6ZW4taWNvbiBzcmM9XCJhc3NldHMvbmctemVuZHVpdC9pY29ucy9hcnJvdy1sZWZ0LnN2Z1wiPjwvemVuLWljb24+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwibW9udGgtdGl0bGVcIj57eyBsZWZ0RGF5c1RpdGxlIH19PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz1cIm5hdi1idG5cIiAoY2xpY2spPVwibmV4dE1vbnRoKClcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8emVuLWljb24gc3JjPVwiYXNzZXRzL25nLXplbmR1aXQvaWNvbnMvYXJyb3ctcmlnaHQuc3ZnXCI+PC96ZW4taWNvbj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgICAgICAgICAgICA8IS0tIFJhbmdlIGlucHV0cyAtLT5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm1vYmlsZS1yYW5nZS1pbnB1dHNcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkYXRlLWlucHV0IGNvbXBhY3RcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImRhdGUtaW5wdXQtdGV4dFwiIFtjbGFzcy5wbGFjZWhvbGRlcl09XCIhX3NlbGVjdGVkU3RhcnRcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3sgX3NlbGVjdGVkU3RhcnQgPyBmb3JtYXR0ZWRTdGFydERhdGUgOiAoJ1NlbGVjdCBkYXRlJyB8IHRyYW5zbGF0ZSkgfX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiZGF0ZS1zZXBhcmF0b3JcIj4mbmRhc2g7PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImRhdGUtaW5wdXQgY29tcGFjdFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiZGF0ZS1pbnB1dC10ZXh0XCIgW2NsYXNzLnBsYWNlaG9sZGVyXT1cIiFfc2VsZWN0ZWRFbmRcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3sgX3NlbGVjdGVkRW5kID8gZm9ybWF0dGVkRW5kRGF0ZSA6ICgnU2VsZWN0IGRhdGUnIHwgdHJhbnNsYXRlKSB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwiY2FsZW5kYXJHcmlkOyBjb250ZXh0OiB7ICRpbXBsaWNpdDogbGVmdERheVJvd3MgfVwiPjwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgICAgICAgPCEtLSBUaW1lIFBpY2tlciAtLT5cbiAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwidGltZVBpY2tlclwiPlxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYm90dG9tLWRpdmlkZXJcIj48L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cInRpbWVQaWNrZXJTZWN0aW9uXCI+PC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibWFya2VyLWxlZ2VuZCBzdGFuZGFsb25lXCIgKm5nSWY9XCJsZWdlbmRNYXJrZXJzLmxlbmd0aFwiPlxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibGVnZW5kLWl0ZW1cIiAqbmdGb3I9XCJsZXQgbSBvZiBsZWdlbmRNYXJrZXJzXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImxlZ2VuZC1kb3RcIiBbc3R5bGUuYmFja2dyb3VuZF09XCJtLmNvbG9yIHx8IG51bGxcIj48L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImxlZ2VuZC10aXRsZVwiPnt7IG0udGl0bGUgfCB0cmFuc2xhdGUgfX08L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImJvdHRvbS1kaXZpZGVyXCI+PC9kaXY+XG5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYm90dG9tLXBhbmVsIGNvbXBhY3RcIj5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImFjdGlvbnMgZnVsbC13aWR0aFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz1cImJ0bi1jYW5jZWxcIiAoY2xpY2spPVwiY2FuY2VsKClcIj57eyAnQ2FuY2VsJyB8IHRyYW5zbGF0ZSB9fTwvYnV0dG9uPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz1cImJ0bi1hcHBseVwiIFtkaXNhYmxlZF09XCIhY2FuQXBwbHlcIiAoY2xpY2spPVwiYXBwbHkoKVwiPnt7ICdBcHBseScgfCB0cmFuc2xhdGUgfX08L2J1dHRvbj5cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9uZy1jb250YWluZXI+XG5cbiAgICAgICAgPCEtLSBTSU5HTEUgREFURTogc2luZ2xlIGNhbGVuZGFyICsgaW5wdXQgKyB0b2RheSBidXR0b24gLS0+XG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJ0eXBlID09PSAnc2luZ2xlJ1wiPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cInNpbmdsZS1jYWxlbmRhci1jb250YWluZXJcIj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2FsZW5kYXItY29udGVudFwiPlxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibW9udGgtaGVhZGVyXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIGNsYXNzPVwibmF2LWJ0blwiIChjbGljayk9XCJwcmV2TW9udGgoKVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx6ZW4taWNvbiBzcmM9XCJhc3NldHMvbmctemVuZHVpdC9pY29ucy9hcnJvdy1sZWZ0LnN2Z1wiPjwvemVuLWljb24+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwibW9udGgtdGl0bGVcIj57eyBsZWZ0RGF5c1RpdGxlIH19PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz1cIm5hdi1idG5cIiAoY2xpY2spPVwibmV4dE1vbnRoKClcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8emVuLWljb24gc3JjPVwiYXNzZXRzL25nLXplbmR1aXQvaWNvbnMvYXJyb3ctcmlnaHQuc3ZnXCI+PC96ZW4taWNvbj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgICAgICAgICAgICA8IS0tIERhdGUgaW5wdXQgKyBUb2RheSBidXR0b24gLS0+XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzaW5nbGUtYWN0aW9ucy1yb3dcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkYXRlLWlucHV0IGZsZXgtMVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiZGF0ZS1pbnB1dC10ZXh0XCIgW2NsYXNzLnBsYWNlaG9sZGVyXT1cIiFfc2VsZWN0ZWREYXRlXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7IF9zZWxlY3RlZERhdGUgPyBmb3JtYXR0ZWRTZWxlY3RlZERhdGUgOiAoJ1NlbGVjdCBkYXRlJyB8IHRyYW5zbGF0ZSkgfX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24gY2xhc3M9XCJidG4tdG9kYXlcIiAoY2xpY2spPVwiZ29Ub1RvZGF5KClcIj57eyAnVG9kYXknIHwgdHJhbnNsYXRlIH19PC9idXR0b24+XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJjYWxlbmRhckdyaWQ7IGNvbnRleHQ6IHsgJGltcGxpY2l0OiBsZWZ0RGF5Um93cyB9XCI+PC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICAgICAgICA8IS0tIFRpbWUgUGlja2VyIC0tPlxuICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJ0aW1lUGlja2VyXCI+XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJib3R0b20tZGl2aWRlclwiPjwvZGl2PlxuICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwidGltZVBpY2tlclNlY3Rpb25cIj48L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cblxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtYXJrZXItbGVnZW5kIHN0YW5kYWxvbmUgc2luZ2xlXCIgKm5nSWY9XCJsZWdlbmRNYXJrZXJzLmxlbmd0aFwiPlxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibGVnZW5kLWl0ZW1cIiAqbmdGb3I9XCJsZXQgbSBvZiBsZWdlbmRNYXJrZXJzXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImxlZ2VuZC1kb3RcIiBbc3R5bGUuYmFja2dyb3VuZF09XCJtLmNvbG9yIHx8IG51bGxcIj48L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImxlZ2VuZC10aXRsZVwiPnt7IG0udGl0bGUgfCB0cmFuc2xhdGUgfX08L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIiFhdXRvQXBwbHlcIj5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImJvdHRvbS1kaXZpZGVyXCI+PC9kaXY+XG5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImJvdHRvbS1wYW5lbCBjb21wYWN0XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYWN0aW9ucyBmdWxsLXdpZHRoXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz1cImJ0bi1jYW5jZWxcIiAoY2xpY2spPVwiY2FuY2VsKClcIj57eyAnQ2FuY2VsJyB8IHRyYW5zbGF0ZSB9fTwvYnV0dG9uPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24gY2xhc3M9XCJidG4tYXBwbHlcIiBbZGlzYWJsZWRdPVwiIWNhbkFwcGx5XCIgKGNsaWNrKT1cImFwcGx5KClcIj57eyAnQXBwbHknIHwgdHJhbnNsYXRlIH19PC9idXR0b24+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgPC9kaXY+XG48L2Rpdj5cblxuPCEtLSBTaGFyZWQgdGltZSBwaWNrZXIgdGVtcGxhdGUgLS0+XG48bmctdGVtcGxhdGUgI3RpbWVQaWNrZXJTZWN0aW9uPlxuICAgIDxkaXYgY2xhc3M9XCJ0aW1lLXBpY2tlci1jb250YWluZXJcIj5cbiAgICAgICAgPGRpdiBjbGFzcz1cInRpbWUtcGlja2VyLWNvbnRlbnRcIj5cbiAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwidGltZS1waWNrZXItbGFiZWxcIj57eyAnU2VsZWN0IGEgdGltZScgfCB0cmFuc2xhdGUgfX08L3NwYW4+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwidGltZS1waWNrZXItcm93XCI+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRpbWUtZmllbGRzXCI+XG4gICAgICAgICAgICAgICAgICAgIDwhLS0gSG91cnMgLS0+XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0aW1lLWlucHV0LWdyb3VwXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidGltZS1pbnB1dC1ib3hcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgY2xhc3M9XCJ0aW1lLWlucHV0XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHlwZT1cInRleHRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhcmlhLWxhYmVsPVwiSG91cnNcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnB1dG1vZGU9XCJudW1lcmljXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXV0b2NvbXBsZXRlPVwib2ZmXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3ZhbHVlXT1cIl9ob3Vyc0Rpc3BsYXlcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW5wdXQpPVwib25Ib3Vyc0lucHV0KCRldmVudClcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZm9jdXMpPVwib25UaW1lRm9jdXMoJGV2ZW50KVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChibHVyKT1cImNsYW1wSG91cnMoKVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChrZXlkb3duKT1cIm9uVGltZUtleWRvd24oJGV2ZW50LCAnaG91cnMnKVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1heGxlbmd0aD1cIjJcIiAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0aW1lLWFycm93c1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIGNsYXNzPVwidGltZS1hcnJvdy1idG5cIiB0eXBlPVwiYnV0dG9uXCIgdGFiaW5kZXg9XCItMVwiIChjbGljayk9XCJpbmNyZW1lbnRIb3VycygpXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8emVuLWljb24gc3JjPVwiYXNzZXRzL25nLXplbmR1aXQvaWNvbnMvYXJyb3ctdXAtc21hbGwuc3ZnXCI+PC96ZW4taWNvbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24gY2xhc3M9XCJ0aW1lLWFycm93LWJ0blwiIHR5cGU9XCJidXR0b25cIiB0YWJpbmRleD1cIi0xXCIgKGNsaWNrKT1cImRlY3JlbWVudEhvdXJzKClcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx6ZW4taWNvbiBzcmM9XCJhc3NldHMvbmctemVuZHVpdC9pY29ucy9hcnJvdy1kb3duLXNtYWxsLnN2Z1wiPjwvemVuLWljb24+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInRpbWUtaW5wdXQtbGFiZWxcIj57eyAnSFJTJyB8IHRyYW5zbGF0ZSB9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICAgICAgICAgICAgPCEtLSBDb2xvbiBzZXBhcmF0b3IgLS0+XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0aW1lLWNvbG9uXCI+OjwvZGl2PlxuXG4gICAgICAgICAgICAgICAgICAgIDwhLS0gTWludXRlcyAtLT5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRpbWUtaW5wdXQtZ3JvdXBcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0aW1lLWlucHV0LWJveFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCBjbGFzcz1cInRpbWUtaW5wdXRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0eXBlPVwidGV4dFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFyaWEtbGFiZWw9XCJNaW51dGVzXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5wdXRtb2RlPVwibnVtZXJpY1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGF1dG9jb21wbGV0ZT1cIm9mZlwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFt2YWx1ZV09XCJfbWludXRlc0Rpc3BsYXlcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW5wdXQpPVwib25NaW51dGVzSW5wdXQoJGV2ZW50KVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmb2N1cyk9XCJvblRpbWVGb2N1cygkZXZlbnQpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGJsdXIpPVwiY2xhbXBNaW51dGVzKClcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoa2V5ZG93bik9XCJvblRpbWVLZXlkb3duKCRldmVudCwgJ21pbnV0ZXMnKVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1heGxlbmd0aD1cIjJcIiAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0aW1lLWFycm93c1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIGNsYXNzPVwidGltZS1hcnJvdy1idG5cIiB0eXBlPVwiYnV0dG9uXCIgdGFiaW5kZXg9XCItMVwiIChjbGljayk9XCJpbmNyZW1lbnRNaW51dGVzKClcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx6ZW4taWNvbiBzcmM9XCJhc3NldHMvbmctemVuZHVpdC9pY29ucy9hcnJvdy11cC1zbWFsbC5zdmdcIj48L3plbi1pY29uPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz1cInRpbWUtYXJyb3ctYnRuXCIgdHlwZT1cImJ1dHRvblwiIHRhYmluZGV4PVwiLTFcIiAoY2xpY2spPVwiZGVjcmVtZW50TWludXRlcygpXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8emVuLWljb24gc3JjPVwiYXNzZXRzL25nLXplbmR1aXQvaWNvbnMvYXJyb3ctZG93bi1zbWFsbC5zdmdcIj48L3plbi1pY29uPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJ0aW1lLWlucHV0LWxhYmVsXCI+e3sgJ01JTicgfCB0cmFuc2xhdGUgfX08L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgICAgICAgPCEtLSBBTS9QTSB0b2dnbGUgLS0+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRpbWUtcGVyaW9kLXRvZ2dsZVwiPlxuICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIGNsYXNzPVwidGltZS1wZXJpb2QtYnRuXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbY2xhc3MuYWN0aXZlXT1cIl9wZXJpb2QgPT09ICdBTSdcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJzZXRQZXJpb2QoJ0FNJylcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIEFNXG4gICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIGNsYXNzPVwidGltZS1wZXJpb2QtYnRuXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbY2xhc3MuYWN0aXZlXT1cIl9wZXJpb2QgPT09ICdQTSdcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJzZXRQZXJpb2QoJ1BNJylcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIFBNXG4gICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuPC9uZy10ZW1wbGF0ZT5cblxuPCEtLSBTaGFyZWQgY2FsZW5kYXIgZ3JpZCB0ZW1wbGF0ZSAtLT5cbjxuZy10ZW1wbGF0ZSAjY2FsZW5kYXJHcmlkIGxldC1kYXlSb3dzPlxuICAgIDxkaXYgY2xhc3M9XCJkYXRlcy1ncmlkXCI+XG4gICAgICAgIDwhLS0gV2VlayBkYXkgaGVhZGVycyAtLT5cbiAgICAgICAgPGRpdiBjbGFzcz1cIndlZWstaGVhZGVyXCI+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2VsbCBoZWFkZXItY2VsbFwiICpuZ0Zvcj1cImxldCB3ZCBvZiB3ZWVrRGF5c1wiPnt7IHdkIHwgdHJhbnNsYXRlIH19PC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8IS0tIERheSByb3dzIC0tPlxuICAgICAgICA8ZGl2IGNsYXNzPVwiZGF5LXJvd1wiICpuZ0Zvcj1cImxldCByb3cgb2YgZGF5Um93c1wiPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNlbGwgZGF5LWNlbGxcIlxuICAgICAgICAgICAgICAgICAqbmdGb3I9XCJsZXQgZGF5IG9mIHJvdy5kYXlzXCJcbiAgICAgICAgICAgICAgICAgW2NsYXNzLm91dHNpZGVdPVwiZGF5LmlzT3V0c2lkZVwiXG4gICAgICAgICAgICAgICAgIFtjbGFzcy5zZWxlY3RlZF09XCJkYXkuc2VsZWN0ZWRcIlxuICAgICAgICAgICAgICAgICBbY2xhc3MudG9kYXldPVwiaXNUb2RheShkYXkpXCJcbiAgICAgICAgICAgICAgICAgW2NsYXNzLmRpc2FibGVkXT1cImRheS5pc0Rpc2FibGVkXCJcbiAgICAgICAgICAgICAgICAgW2NsYXNzLmluLXJhbmdlXT1cImlzSW5SYW5nZShkYXkpXCJcbiAgICAgICAgICAgICAgICAgW2NsYXNzLnJhbmdlLXN0YXJ0XT1cImlzUmFuZ2VTdGFydChkYXkpXCJcbiAgICAgICAgICAgICAgICAgW2NsYXNzLnJhbmdlLWVuZF09XCJpc1JhbmdlRW5kKGRheSlcIlxuICAgICAgICAgICAgICAgICAoY2xpY2spPVwic2VsZWN0RGF5KGRheSlcIj5cbiAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImRheS1udW1iZXJcIj57eyBkYXkubGJsIH19PC9zcGFuPlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtYXJrZXItZG90c1wiICpuZ0lmPVwiZGF5Lm1hcmtlckNvbG9ycz8ubGVuZ3RoXCI+XG4gICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwibWFya2VyLWRvdFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICpuZ0Zvcj1cImxldCBjIG9mIGRheS5tYXJrZXJDb2xvcnNcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICBbc3R5bGUuYmFja2dyb3VuZF09XCJjIHx8IG51bGxcIj48L3NwYW4+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG48L25nLXRlbXBsYXRlPlxuIl19
|
package/fesm2015/ng-zenduit.mjs
CHANGED
|
@@ -7557,22 +7557,23 @@ class ZenduDatePickerDropdownComponent {
|
|
|
7557
7557
|
}
|
|
7558
7558
|
}
|
|
7559
7559
|
else {
|
|
7560
|
-
// Range selection logic
|
|
7560
|
+
// Range selection logic — start anchors to start-of-day, end to end-of-day,
|
|
7561
|
+
// so a same-day pick spans the full 24h (matches preset semantics).
|
|
7561
7562
|
if (!this._selectedStart || (this._selectedStart && this._selectedEnd)) {
|
|
7562
7563
|
// Start new selection
|
|
7563
|
-
this._selectedStart =
|
|
7564
|
+
this._selectedStart = moment(day.date).startOf('day').toDate();
|
|
7564
7565
|
this._selectedEnd = null;
|
|
7565
7566
|
this._activePreset = null;
|
|
7566
7567
|
}
|
|
7567
7568
|
else {
|
|
7568
7569
|
// Complete the range
|
|
7569
|
-
const
|
|
7570
|
-
if (moment(
|
|
7571
|
-
this._selectedEnd =
|
|
7572
|
-
this._selectedStart =
|
|
7570
|
+
const newDay = moment(day.date).startOf('day').toDate();
|
|
7571
|
+
if (moment(newDay).isBefore(this._selectedStart)) {
|
|
7572
|
+
this._selectedEnd = moment(this._selectedStart).endOf('day').toDate();
|
|
7573
|
+
this._selectedStart = newDay;
|
|
7573
7574
|
}
|
|
7574
7575
|
else {
|
|
7575
|
-
this._selectedEnd =
|
|
7576
|
+
this._selectedEnd = moment(newDay).endOf('day').toDate();
|
|
7576
7577
|
}
|
|
7577
7578
|
}
|
|
7578
7579
|
}
|
|
@@ -7774,8 +7775,6 @@ class ZenduDatePickerDropdownComponent {
|
|
|
7774
7775
|
}
|
|
7775
7776
|
}
|
|
7776
7777
|
updateDays(slot, side) {
|
|
7777
|
-
const enMonth = moment(slot).format('MMM');
|
|
7778
|
-
const translatedMonth = this._translate.instant(enMonth);
|
|
7779
7778
|
const title = moment(slot).format('MMMM YYYY');
|
|
7780
7779
|
const dayRows = [];
|
|
7781
7780
|
let current = moment(slot).startOf('month').startOf('isoWeek');
|