ngx-sumax-erp-components 1.0.44 → 1.0.45
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/esm2022/lib/date-time-picker-editable/date-time-picker-editable.component.mjs +7 -3
- package/esm2022/lib/date-time-picker-editable/date-time-picker-editable.module.mjs +5 -1
- package/esm2022/lib/date-time-picker-editable/date-time-picker-editable.service.mjs +10 -3
- package/esm2022/lib/sc-ag-grid/cell-editors/container-shared/container-shared.component.mjs +1 -1
- package/esm2022/lib/utils/DateTimePickerEditable.mjs +1 -1
- package/fesm2022/ngx-sumax-erp-components.mjs +20 -5
- package/fesm2022/ngx-sumax-erp-components.mjs.map +1 -1
- package/lib/date-time-picker-editable/date-time-picker-editable.component.d.ts +2 -1
- package/lib/date-time-picker-editable/date-time-picker-editable.service.d.ts +3 -1
- package/lib/utils/DateTimePickerEditable.d.ts +1 -0
- package/package.json +1 -1
|
@@ -71,6 +71,7 @@ export class DateTimePickerEditableComponent {
|
|
|
71
71
|
* @type boolean
|
|
72
72
|
*/
|
|
73
73
|
this.autoCompleteHours = false;
|
|
74
|
+
this.autoComplete = true;
|
|
74
75
|
this.disabled = false;
|
|
75
76
|
this.onNext = new EventEmitter();
|
|
76
77
|
this.onBack = new EventEmitter();
|
|
@@ -99,6 +100,7 @@ export class DateTimePickerEditableComponent {
|
|
|
99
100
|
this.format = this._dateTimePickerEditableService.getFormat();
|
|
100
101
|
this.clearable = this._dateTimePickerEditableService.getClearable();
|
|
101
102
|
this.autoCompleteHours = this._dateTimePickerEditableService.getAutoCompleteHours();
|
|
103
|
+
this.autoComplete = this._dateTimePickerEditableService.getAutoComplete();
|
|
102
104
|
}
|
|
103
105
|
validate(control) {
|
|
104
106
|
this.controls = control;
|
|
@@ -763,7 +765,7 @@ export class DateTimePickerEditableComponent {
|
|
|
763
765
|
input.setSelectionRange(17, 19);
|
|
764
766
|
}
|
|
765
767
|
}
|
|
766
|
-
else if (e.code == "Space") {
|
|
768
|
+
else if (e.code == "Space" && this.autoComplete) {
|
|
767
769
|
const valorActual = this.dateTimeControl.value;
|
|
768
770
|
const diaActual = this.today.day.toString();
|
|
769
771
|
const mesActual = this.today.month.toString();
|
|
@@ -1045,7 +1047,7 @@ export class DateTimePickerEditableComponent {
|
|
|
1045
1047
|
}
|
|
1046
1048
|
}
|
|
1047
1049
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.11", ngImport: i0, type: DateTimePickerEditableComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
1048
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.11", type: DateTimePickerEditableComponent, selector: "date-time-picker-editable", inputs: { label: "label", showLabel: "showLabel", readonly: "readonly", required: "required", validatorMessage: "validatorMessage", tooltipMessage: "tooltipMessage", submitted: "submitted", format: "format", next: "next", nextIsDisable: "nextIsDisable", labelInfo: "labelInfo", textLabelInfo: "textLabelInfo", back: "back", backIsDisable: "backIsDisable", openWhenFocus: "openWhenFocus", goNextWhenSelect: "goNextWhenSelect", clearable: "clearable", autoCompleteHours: "autoCompleteHours", disabled: "disabled" }, outputs: { onNext: "onNext", onBack: "onBack" }, providers: [
|
|
1050
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.11", type: DateTimePickerEditableComponent, selector: "date-time-picker-editable", inputs: { label: "label", showLabel: "showLabel", readonly: "readonly", required: "required", validatorMessage: "validatorMessage", tooltipMessage: "tooltipMessage", submitted: "submitted", format: "format", next: "next", nextIsDisable: "nextIsDisable", labelInfo: "labelInfo", textLabelInfo: "textLabelInfo", back: "back", backIsDisable: "backIsDisable", openWhenFocus: "openWhenFocus", goNextWhenSelect: "goNextWhenSelect", clearable: "clearable", autoCompleteHours: "autoCompleteHours", autoComplete: "autoComplete", disabled: "disabled" }, outputs: { onNext: "onNext", onBack: "onBack" }, providers: [
|
|
1049
1051
|
{
|
|
1050
1052
|
provide: NG_VALUE_ACCESSOR,
|
|
1051
1053
|
multi: true,
|
|
@@ -1126,6 +1128,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.11", ngImpo
|
|
|
1126
1128
|
type: Input
|
|
1127
1129
|
}], autoCompleteHours: [{
|
|
1128
1130
|
type: Input
|
|
1131
|
+
}], autoComplete: [{
|
|
1132
|
+
type: Input
|
|
1129
1133
|
}], disabled: [{
|
|
1130
1134
|
type: Input
|
|
1131
1135
|
}], onNext: [{
|
|
@@ -1133,4 +1137,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.11", ngImpo
|
|
|
1133
1137
|
}], onBack: [{
|
|
1134
1138
|
type: Output
|
|
1135
1139
|
}] } });
|
|
1136
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0ZS10aW1lLXBpY2tlci1lZGl0YWJsZS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtc3VtYXgtZXJwLWNvbXBvbmVudC9zcmMvbGliL2RhdGUtdGltZS1waWNrZXItZWRpdGFibGUvZGF0ZS10aW1lLXBpY2tlci1lZGl0YWJsZS5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtc3VtYXgtZXJwLWNvbXBvbmVudC9zcmMvbGliL2RhdGUtdGltZS1waWNrZXItZWRpdGFibGUvZGF0ZS10aW1lLXBpY2tlci1lZGl0YWJsZS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDM0MsT0FBTyxFQUNMLGlCQUFpQixFQUNqQixTQUFTLEVBRVQsWUFBWSxFQUNaLEtBQUssRUFHTCxNQUFNLEVBRU4sU0FBUyxFQUNULFVBQVUsRUFDVixNQUFNLEdBR1AsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUdMLFdBQVcsRUFDWCxhQUFhLEVBQ2IsaUJBQWlCLEVBQ2pCLGtCQUFrQixHQUVuQixNQUFNLGdCQUFnQixDQUFDO0FBQ3hCLE9BQU8sRUFBRSxXQUFXLEVBQUUsc0JBQXNCLEVBQUUsaUJBQWlCLEVBQXNCLE1BQU0sNEJBQTRCLENBQUM7QUFDeEgsT0FBTyxFQUFFLHNCQUFzQixFQUFFLE1BQU0sdUNBQXVDLENBQUM7QUFDL0UsT0FBTyxFQUFFLG9CQUFvQixFQUFFLElBQUksRUFBRSxNQUFNLHFDQUFxQyxDQUFDO0FBQ2pGLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUV2RCxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFDN0MsT0FBTyxFQUFFLDZCQUE2QixFQUFFLE1BQU0scUNBQXFDLENBQUM7Ozs7Ozs7O0FBRXBGLE1BQU0sYUFBYSxHQUFHLHFCQUFxQixDQUFDO0FBQzVDLE1BQU0sYUFBYSxHQUFHLGtCQUFrQixDQUFDO0FBc0J6QyxNQUFNLE9BQU8sK0JBQStCO0lBZ0cxQyxJQUFJLFlBQVk7UUFDZCxPQUFPLElBQUksQ0FBQyxNQUFNLEtBQUssRUFBRSxDQUFDLENBQUMsQ0FBQyxvQkFBb0IsQ0FBQyxDQUFDLENBQUMsa0JBQWtCLENBQUM7SUFDeEUsQ0FBQztJQUVEO1FBbkdRLGNBQVMsR0FBRyxNQUFNLENBQUMsUUFBUSxDQUFDLENBQUM7UUFDN0IsY0FBUyxHQUFHLE1BQU0sQ0FBQyxXQUFXLENBQUMsQ0FBQztRQUNoQyxtQ0FBOEIsR0FBRyxNQUFNLENBQUMsNkJBQTZCLENBQUMsQ0FBQztRQUN2RSxVQUFLLEdBQUcsTUFBTSxDQUFDLGlCQUFpQixDQUFDLENBQUM7UUFPMUM7Ozs7V0FJRztRQUNNLFVBQUssR0FBVyxFQUFFLENBQUM7UUFDNUI7Ozs7V0FJRztRQUNNLGNBQVMsR0FBWSxJQUFJLENBQUM7UUFDMUIsYUFBUSxHQUFZLEtBQUssQ0FBQztRQUNuQzs7OztXQUlHO1FBQ00sYUFBUSxHQUFZLEtBQUssQ0FBQztRQUMxQixxQkFBZ0IsR0FBWSxLQUFLLENBQUM7UUFDbEMsbUJBQWMsR0FBWSxJQUFJLENBQUM7UUFDL0IsY0FBUyxHQUFZLElBQUksQ0FBQztRQUNuQzs7OztXQUlHO1FBQ00sV0FBTSxHQUFlLEVBQUUsQ0FBQztRQVN4QixjQUFTLEdBQVksS0FBSyxDQUFDO1FBQzNCLGtCQUFhLEdBQVcsRUFBRSxDQUFDO1FBUzNCLGtCQUFhLEdBQVksS0FBSyxDQUFDO1FBQy9CLHFCQUFnQixHQUFZLEtBQUssQ0FBQztRQUMzQzs7OztXQUlHO1FBQ00sY0FBUyxHQUFZLElBQUksQ0FBQztRQUNuQzs7Ozs7O1dBTUc7UUFDTSxzQkFBaUIsR0FBWSxLQUFLLENBQUM7UUFDbkMsYUFBUSxHQUFHLEtBQUssQ0FBQztRQUNoQixXQUFNLEdBQXNCLElBQUksWUFBWSxFQUFFLENBQUM7UUFDL0MsV0FBTSxHQUFzQixJQUFJLFlBQVksRUFBRSxDQUFDO1FBRXpELGFBQVEsR0FBRyxDQUFDLENBQU0sRUFBRSxFQUFFLEdBQUcsQ0FBQyxDQUFDO1FBQzNCLFlBQU8sR0FBRyxHQUFHLEVBQUUsR0FBRyxDQUFDLENBQUM7UUFDcEIsdUJBQWtCLEdBQUcsR0FBRyxFQUFFLEdBQUcsQ0FBQyxDQUFDO1FBRy9CLGFBQVEsR0FBRyxDQUFDLENBQUM7UUFDYixhQUFRLEdBQUcsQ0FBQyxDQUFDO1FBQ2Isb0JBQWUsR0FBRyxJQUFJLFdBQVcsQ0FBQyxxQkFBcUIsQ0FBQyxDQUFDO1FBQ3pELGlCQUFZLEdBQUcsSUFBSSxrQkFBa0IsQ0FBQztZQUNwQyxJQUFJLEVBQUUsSUFBSTtZQUNWLE1BQU0sRUFBRSxJQUFJO1NBQ2IsQ0FBQyxDQUFDO1FBQ0gsZ0JBQVcsR0FBRyxJQUFJLGtCQUFrQixDQUFDO1lBQ25DLElBQUksRUFBRSxJQUFJO1lBQ1YsS0FBSyxFQUFFLElBQUk7WUFDWCxHQUFHLEVBQUUsSUFBSTtTQUNWLENBQUMsQ0FBQztRQUNILFVBQUssR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDLFFBQVEsRUFBRSxDQUFDO1FBT2hDLElBQUksQ0FBQyxTQUFTLEdBQUcsSUFBSSxDQUFDLDhCQUE4QixDQUFDLFlBQVksRUFBRSxDQUFDO1FBQ3BFLElBQUksQ0FBQyxhQUFhLEdBQUcsSUFBSSxDQUFDLDhCQUE4QixDQUFDLGdCQUFnQixFQUFFLENBQUM7UUFDNUUsSUFBSSxDQUFDLGdCQUFnQixHQUFHLElBQUksQ0FBQyw4QkFBOEIsQ0FBQyxtQkFBbUIsRUFBRSxDQUFDO1FBQ2xGLElBQUksQ0FBQyxnQkFBZ0IsR0FBRyxJQUFJLENBQUMsOEJBQThCLENBQUMsbUJBQW1CLEVBQUUsQ0FBQztRQUNsRixJQUFJLENBQUMsY0FBYyxHQUFHLElBQUksQ0FBQyw4QkFBOEIsQ0FBQyxpQkFBaUIsRUFBRSxDQUFDO1FBQzlFLElBQUksQ0FBQyxTQUFTLEdBQUcsSUFBSSxDQUFDLDhCQUE4QixDQUFDLFlBQVksRUFBRSxDQUFDO1FBQ3BFLElBQUksQ0FBQyxNQUFNLEdBQUcsSUFBSSxDQUFDLDhCQUE4QixDQUFDLFNBQVMsRUFBRSxDQUFDO1FBQzlELElBQUksQ0FBQyxTQUFTLEdBQUcsSUFBSSxDQUFDLDhCQUE4QixDQUFDLFlBQVksRUFBRSxDQUFDO1FBQ3BFLElBQUksQ0FBQyxpQkFBaUIsR0FBRyxJQUFJLENBQUMsOEJBQThCLENBQUMsb0JBQW9CLEVBQUUsQ0FBQztJQUN0RixDQUFDO0lBR0QsUUFBUSxDQUFFLE9BQXdCO1FBQ2hDLElBQUksQ0FBQyxRQUFRLEdBQUcsT0FBTyxDQUFDO1FBQ3hCLElBQUksQ0FBQyxLQUFLLENBQUMsYUFBYSxFQUFFLENBQUM7UUFDM0IsT0FBTyxJQUFJLENBQUM7SUFDZCxDQUFDO0lBRUQseUJBQXlCLENBQUUsRUFBYztRQUN2QyxJQUFJLENBQUMsa0JBQWtCLEdBQUcsRUFBRSxDQUFDO0lBQy9CLENBQUM7SUFFRCxRQUFRO1FBQ04sSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDO1FBQ25CLE1BQU0sT0FBTyxHQUFHLFVBQVUsQ0FBQyxHQUFHLEVBQUU7WUFDOUIsSUFBSSxDQUFDLFVBQVUsRUFBRSxDQUFDO1lBQ2xCLFlBQVksQ0FBQyxPQUFPLENBQUMsQ0FBQztZQUN0QixJQUFJLENBQUMsSUFBSSxDQUFDLFNBQVM7Z0JBQUUsSUFBSSxDQUFDLFFBQVMsQ0FBQyxhQUFhLENBQUMsS0FBSyxDQUFDLFVBQVUsR0FBRyxRQUFRLENBQUM7UUFDaEYsQ0FBQyxFQUFFLEdBQUcsQ0FBQyxDQUFDO1FBRVIsSUFBSSxJQUFJLENBQUMsTUFBTSxJQUFJLEVBQUUsRUFBRSxDQUFDO1lBQ3RCLElBQUksQ0FBQyxlQUFlLENBQUMsUUFBUSxDQUFDLGFBQWEsQ0FBQyxDQUFDO1FBQy9DLENBQUM7YUFBTSxDQUFDO1lBQ04sSUFBSSxDQUFDLGVBQWUsQ0FBQyxRQUFRLENBQUMsYUFBYSxDQUFDLENBQUM7UUFDL0MsQ0FBQztJQUNILENBQUM7SUFFRCxXQUFXLENBQUUsT0FBc0I7UUFDakMsSUFBSSxPQUFPLENBQUMsV0FBVyxDQUFDLEVBQUUsQ0FBQztZQUN6QixJQUFJLElBQUksQ0FBQyxRQUFRLEtBQUssU0FBUyxJQUFJLE9BQU8sQ0FBQyxXQUFXLENBQUMsQ0FBQyxZQUFZLEVBQUUsQ0FBQztnQkFDckUsSUFBSSxDQUFDLFFBQVEsQ0FBQyxXQUFXLEVBQUUsQ0FBQztnQkFDNUIsSUFBSSxDQUFDLFFBQVEsQ0FBQyxhQUFhLEVBQUUsQ0FBQztZQUNoQyxDQUFDO1FBQ0gsQ0FBQztJQUNILENBQUM7SUFFRCxLQUFLO1FBQ0gsSUFBSSxDQUFDLGFBQWEsQ0FBQyxhQUFhLENBQUMsS0FBSyxFQUFFLENBQUM7UUFFekMsTUFBTSxPQUFPLEdBQUcsVUFBVSxDQUFDLEdBQUcsRUFBRTtZQUM5QixJQUFJLENBQUMsSUFBSSxDQUFDLFFBQVE7Z0JBQUUsSUFBSSxDQUFDLGFBQWEsQ0FBQyxhQUFhLENBQUMsaUJBQWlCLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO1lBRTdFLFlBQVksQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUN4QixDQUFDLEVBQUUsR0FBRyxDQUFDLENBQUM7UUFFUixJQUFJLENBQUMsSUFBSSxDQUFDLFFBQVEsSUFBSSxJQUFJLENBQUMsYUFBYSxFQUFFLENBQUM7WUFDekMsSUFBSSxDQUFDLGFBQWEsRUFBRSxJQUFJLEVBQUUsQ0FBQztRQUM3QixDQUFDO0lBQ0gsQ0FBQztJQUVELFVBQVUsQ0FBRSxHQUFRO1FBQ2xCLElBQUksR0FBRyxJQUFJLElBQUksRUFBRSxDQUFDO1lBQ2hCLElBQUksQ0FBQyxXQUFXLENBQUMsUUFBUSxDQUFDLGFBQWEsQ0FBQyxlQUFlLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQztZQUM5RCxJQUFJLENBQUMsWUFBWSxDQUFDLFFBQVEsQ0FBQztnQkFDekIsSUFBSSxFQUFFLElBQUksQ0FBQyxXQUFXLENBQUMsS0FBSyxDQUFDLElBQUk7Z0JBQ2pDLE1BQU0sRUFBRSxJQUFJLENBQUMsV0FBVyxDQUFDLEtBQUssQ0FBQyxNQUFNO2dCQUNyQyxNQUFNLEVBQUUsSUFBSSxDQUFDLFdBQVcsQ0FBQyxLQUFLLENBQUMsTUFBTTthQUN0QyxDQUFDLENBQUM7WUFDSCxJQUFJLENBQUMsZUFBZSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLFNBQVMsQ0FBQyxHQUFHLEVBQUUsSUFBSSxDQUFDLFlBQVksQ0FBQyxDQUFDLENBQUM7UUFDbEYsQ0FBQztJQUNILENBQUM7SUFDRCxnQkFBZ0IsQ0FBRSxFQUFPO1FBQ3ZCLElBQUksQ0FBQyxRQUFRLEdBQUcsRUFBRSxDQUFDO0lBQ3JCLENBQUM7SUFDRCxpQkFBaUIsQ0FBRSxFQUFPO1FBQ3hCLElBQUksQ0FBQyxPQUFPLEdBQUcsRUFBRSxDQUFDO0lBQ3BCLENBQUM7SUFDRCxnQkFBZ0IsQ0FBRSxVQUFtQjtRQUNuQyxJQUFJLENBQUMsUUFBUSxHQUFHLFVBQVUsQ0FBQztRQUMzQixJQUFJLElBQUksQ0FBQyxRQUFRO1lBQUUsSUFBSSxDQUFDLGVBQWUsQ0FBQyxPQUFPLEVBQUUsQ0FBQzs7WUFDN0MsSUFBSSxDQUFDLGVBQWUsQ0FBQyxNQUFNLEVBQUUsQ0FBQztJQUNyQyxDQUFDO0lBRUQsV0FBVztRQUNULElBQUksSUFBSSxDQUFDLE1BQU0sSUFBSSxFQUFFO1lBQ25CLElBQUksQ0FBQyxZQUFZLENBQUMsWUFBWSxDQUFDLFNBQVMsQ0FBQyxDQUFDLEdBQUcsRUFBRSxFQUFFO2dCQUMvQyxJQUNFLDJFQUEyRSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsZUFBZSxDQUFDLEtBQU0sQ0FBQztvQkFDN0csOENBQThDLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxlQUFlLENBQUMsS0FBTSxDQUFDLFNBQVMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFDakcsQ0FBQztvQkFDRCxJQUFJLENBQUMsV0FBVyxDQUFDLFFBQVEsQ0FDdkI7d0JBQ0UsR0FBRyxJQUFJLENBQUMsV0FBVyxDQUFDLEtBQU07d0JBQzFCLEdBQUcsR0FBRztxQkFDUCxFQUNELEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBRSxDQUNyQixDQUFDO29CQUNGLElBQUksQ0FBQzt3QkFDSCxNQUFNLEtBQUssR0FBUSxJQUFJLGFBQWEsQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsS0FBSyxFQUFFLElBQUksQ0FBQyxZQUFZLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQzt3QkFFckcsSUFBSSxDQUFDLGVBQWUsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxTQUFTLENBQUMsS0FBSyxFQUFFLElBQUksQ0FBQyxZQUFZLENBQUMsQ0FBQyxDQUFDO29CQUNwRixDQUFDOzRCQUFTLENBQUM7d0JBQ1QsSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDO29CQUNoQixDQUFDO2dCQUNILENBQUM7WUFDSCxDQUFDLENBQUMsQ0FBQzthQUNBLElBQUksSUFBSSxDQUFDLE1BQU0sSUFBSSxFQUFFO1lBQ3hCLElBQUksQ0FBQyxZQUFZLENBQUMsWUFBWSxDQUFDLFNBQVMsQ0FBQyxDQUFDLEdBQUcsRUFBRSxFQUFFO2dCQUMvQyxJQUNFLG9FQUFvRSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsZUFBZSxDQUFDLEtBQU0sQ0FBQztvQkFDdEcsOENBQThDLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxlQUFlLENBQUMsS0FBTSxDQUFDLFNBQVMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFDakcsQ0FBQztvQkFDRCxJQUFJLENBQUMsV0FBVyxDQUFDLFFBQVEsQ0FDdkI7d0JBQ0UsR0FBRyxJQUFJLENBQUMsV0FBVyxDQUFDLEtBQUs7d0JBQ3pCLEdBQUcsR0FBRztxQkFDUCxFQUNELEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBRSxDQUNyQixDQUFDO29CQUNGLElBQUksQ0FBQzt3QkFDSCxNQUFNLEtBQUssR0FBUSxJQUFJLGFBQWEsQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsS0FBSyxFQUFFLElBQUksQ0FBQyxZQUFZLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQzt3QkFDckcsSUFBSSxDQUFDLGVBQWUsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxTQUFTLENBQUMsS0FBSyxFQUFFLElBQUksQ0FBQyxZQUFZLENBQUMsQ0FBQyxDQUFDO29CQUNwRixDQUFDO29CQUFDLE9BQU8sS0FBSyxFQUFFLENBQUM7d0JBQ2YsMEJBQTBCO29CQUM1QixDQUFDOzRCQUFTLENBQUM7d0JBQ1QsSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDO29CQUNoQixDQUFDO2dCQUNILENBQUM7WUFDSCxDQUFDLENBQUMsQ0FBQztJQUNQLENBQUM7SUFFRCxNQUFNLENBQUUsWUFBaUIsSUFBSTtRQUMzQixJQUFJLENBQUM7WUFDSCxNQUFNLEtBQUssR0FBRyxJQUFJLGFBQWEsQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsS0FBSyxFQUFFLElBQUksQ0FBQyxZQUFZLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQztZQUNoRyxTQUFTLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQyxTQUFTLENBQUMsS0FBSyxDQUFDLFFBQVEsRUFBRSxFQUFFLGtCQUFrQixDQUFDLENBQUM7UUFDN0UsQ0FBQztRQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO1FBQ2YsSUFBSSxDQUFDLFFBQVEsQ0FBQyxTQUFTLENBQUMsQ0FBQztRQUN6QixJQUFJLENBQUMsT0FBTyxFQUFFLENBQUM7SUFDakIsQ0FBQztJQUVELFVBQVU7UUFDUixJQUFJLElBQUksQ0FBQyxNQUFNLElBQUksRUFBRTtZQUNuQixJQUFJLENBQUMsV0FBVyxDQUFDLFlBQVksQ0FBQyxTQUFTLENBQUMsQ0FBQyxHQUFHLEVBQUUsRUFBRTtnQkFDOUMsSUFDRSwyRUFBMkUsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLGVBQWUsQ0FBQyxLQUFNLENBQUM7b0JBQzdHLHVCQUF1QixDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsZUFBZSxDQUFDLEtBQU0sQ0FBQyxTQUFTLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQzNFLENBQUM7b0JBQ0QsSUFBSSxDQUFDLFdBQVcsQ0FBQyxRQUFRLENBQ3ZCO3dCQUNFLEdBQUcsSUFBSSxDQUFDLFlBQVksQ0FBQyxLQUFLO3dCQUMxQixHQUFHLEdBQUc7cUJBQ1AsRUFDRCxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQUUsQ0FDckIsQ0FBQztvQkFFRixJQUFJLENBQUM7d0JBQ0gsTUFBTSxLQUFLLEdBQVEsSUFBSSxhQUFhLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLEtBQUssRUFBRSxJQUFJLENBQUMsWUFBWSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUM7d0JBQ3JHLElBQUksQ0FBQyxlQUFlLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsU0FBUyxDQUFDLEtBQUssRUFBRSxJQUFJLENBQUMsWUFBWSxDQUFDLENBQUMsQ0FBQztvQkFDcEYsQ0FBQztvQkFBQyxPQUFPLEtBQUssRUFBRSxDQUFDO29CQUNqQixDQUFDOzRCQUFTLENBQUM7d0JBQ1QsSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDO29CQUNoQixDQUFDO2dCQUNILENBQUM7WUFDSCxDQUFDLENBQUMsQ0FBQzthQUNBLElBQUksSUFBSSxDQUFDLE1BQU0sSUFBSSxFQUFFO1lBQ3hCLElBQUksQ0FBQyxXQUFXLENBQUMsWUFBWSxDQUFDLFNBQVMsQ0FBQyxDQUFDLEdBQUcsRUFBRSxFQUFFO2dCQUM5QyxJQUNFLDJFQUEyRSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsZUFBZSxDQUFDLEtBQU0sQ0FBQztvQkFDN0csdUJBQXVCLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxlQUFlLENBQUMsS0FBTSxDQUFDLFNBQVMsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFDM0UsQ0FBQztvQkFDRCxJQUFJLENBQUMsV0FBVyxDQUFDLFFBQVEsQ0FDdkI7d0JBQ0UsR0FBRyxJQUFJLENBQUMsWUFBWSxDQUFDLEtBQUs7d0JBQzFCLEdBQUcsR0FBRztxQkFDUCxFQUNELEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBRSxDQUNyQixDQUFDO29CQUVGLElBQUksQ0FBQzt3QkFDSCxNQUFNLEtBQUssR0FBUSxJQUFJLGFBQWEsQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsS0FBSyxFQUFFLElBQUksQ0FBQyxZQUFZLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQzt3QkFDckcsSUFBSSxDQUFDLGVBQWUsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxTQUFTLENBQUMsS0FBSyxFQUFFLElBQUksQ0FBQyxZQUFZLENBQUMsQ0FBQyxDQUFDO29CQUNwRixDQUFDO29CQUFDLE9BQU8sS0FBSyxFQUFFLENBQUM7b0JBQ2pCLENBQUM7NEJBQVMsQ0FBQzt3QkFDVCxJQUFJLENBQUMsTUFBTSxFQUFFLENBQUM7b0JBQ2hCLENBQUM7Z0JBQ0gsQ0FBQztZQUNILENBQUMsQ0FBQyxDQUFDO0lBQ1AsQ0FBQztJQUVELE1BQU07UUFDSixJQUFJLENBQUMsTUFBTSxFQUFFLENBQUM7SUFDaEIsQ0FBQztJQUVELGFBQWE7UUFDWCxNQUFNLEtBQUssR0FBRyxJQUFJLENBQUMsZUFBZSxDQUFDLEtBQUssQ0FBQztRQUV6QyxJQUFJLENBQUMsS0FBSyxJQUFJLGFBQWEsSUFBSSxJQUFJLENBQUMsTUFBTSxJQUFJLEVBQUUsQ0FBQyxJQUFJLENBQUMsS0FBSyxJQUFJLGFBQWEsSUFBSSxJQUFJLENBQUMsTUFBTSxJQUFJLEVBQUUsQ0FBQyxFQUFFLENBQUM7WUFDbkcsTUFBTSxHQUFHLEdBQUcsS0FBSyxFQUFFLFNBQVMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7WUFDbkMsTUFBTSxHQUFHLEdBQUcsS0FBSyxFQUFFLFNBQVMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7WUFDbkMsTUFBTSxJQUFJLEdBQUcsS0FBSyxFQUFFLFNBQVMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUM7WUFDckMsTUFBTSxJQUFJLEdBQUcsS0FBSyxFQUFFLFNBQVMsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUM7WUFDdEMsTUFBTSxPQUFPLEdBQUcsS0FBSyxFQUFFLFNBQVMsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUM7WUFFekMsSUFDRSxLQUFLLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDO2dCQUNsQixHQUFHLElBQUksSUFBSTtnQkFDWCxLQUFLLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDO2dCQUNsQixHQUFHLElBQUksSUFBSTtnQkFDWCxLQUFLLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDO2dCQUNuQixJQUFJLElBQUksTUFBTTtnQkFDZCxLQUFLLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDO2dCQUNuQixLQUFLLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxDQUFDLEVBQ3RCLENBQUM7Z0JBQ0QsSUFBSSxDQUFDLFdBQVcsQ0FBQyxRQUFRLENBQ3ZCO29CQUNFLElBQUksRUFBRSxLQUFLLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDLElBQUksSUFBSSxJQUFJLE1BQU0sQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUM7b0JBQzVFLEtBQUssRUFBRSxLQUFLLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDLElBQUksR0FBRyxJQUFJLElBQUksQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUM7b0JBQ3pFLEdBQUcsRUFBRSxLQUFLLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDLElBQUksR0FBRyxJQUFJLElBQUksQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUM7aUJBQ3RFLEVBQ0QsRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFFLENBQ3JCLENBQUM7Z0JBQ0YsSUFBSSxJQUFJLEdBQUcsSUFBSSxDQUFDLFlBQVksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDO2dCQUN4QyxJQUFJLEtBQUssQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLENBQUM7b0JBQUUsSUFBSSxHQUFHLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQyxRQUFRLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO2dCQUUvRixJQUFJLE1BQU0sR0FBRyxJQUFJLENBQUMsWUFBWSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUM7Z0JBQzVDLElBQUksS0FBSyxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsQ0FBQztvQkFBRSxNQUFNLEdBQUcsSUFBSSxDQUFDLGlCQUFpQixDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsVUFBVSxDQUFDLFFBQVEsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7Z0JBRXRHLElBQUksQ0FBQyxZQUFZLENBQUMsUUFBUSxDQUN4QjtvQkFDRSxJQUFJO29CQUNKLE1BQU07aUJBQ1AsRUFDRCxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQUUsQ0FDckIsQ0FBQztnQkFDRixNQUFNLEtBQUssR0FBUSxJQUFJLGFBQWEsQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsS0FBSyxFQUFFLElBQUksQ0FBQyxZQUFZLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQztnQkFDckcsSUFBSSxDQUFDO29CQUNILElBQUksQ0FBQyxlQUFlLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsU0FBUyxDQUFDLEtBQUssRUFBRSxJQUFJLENBQUMsWUFBWSxDQUFDLENBQUMsQ0FBQztnQkFDcEYsQ0FBQzt3QkFBUyxDQUFDO29CQUNULElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQztnQkFDaEIsQ0FBQztZQUNILENBQUM7UUFDSCxDQUFDO1FBRUQsSUFBSSxDQUFDLFFBQVEsR0FBRyxDQUFDLENBQUM7SUFDcEIsQ0FBQztJQUVELE9BQU8sQ0FBRSxDQUFNO1FBQ2IsTUFBTSxLQUFLLEdBQUcsQ0FBQyxDQUFDLE1BQU0sQ0FBQztRQUV2QixJQUFJLElBQUksQ0FBQyxRQUFRO1lBQUUsT0FBTztRQUUxQixJQUFJLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsR0FBRyxDQUFDLElBQUksRUFBRSxJQUFJLEVBQUUsRUFBRSxDQUFDO1lBQ2hELHNFQUFzRTtZQUN0RSxJQUFJLEtBQUssQ0FBQyxjQUFjLElBQUksQ0FBQyxJQUFJLEtBQUssQ0FBQyxZQUFZLElBQUksQ0FBQyxFQUFFLENBQUM7Z0JBQ3pELE1BQU0sV0FBVyxHQUFXLElBQUksQ0FBQyxlQUFlLENBQUMsS0FBTSxDQUFDO2dCQUN4RCxNQUFNLFNBQVMsR0FBVyxXQUFXLENBQUMsU0FBUyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztnQkFFdEQsSUFBSSxTQUFTLElBQUksSUFBSSxFQUFFLENBQUM7b0JBQ3RCLE1BQU0sVUFBVSxHQUFHLEdBQUksQ0FBQyxDQUFDLEdBQUcsQ0FBQyxRQUFRLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBRSxHQUFJLFdBQVcsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFFLEVBQUUsQ0FBQztvQkFDNUUsSUFBSSxDQUFDLGVBQWUsQ0FBQyxRQUFRLENBQUMsVUFBVSxDQUFDLENBQUM7b0JBQzFDLElBQUksQ0FBQyxXQUFXLENBQUMsUUFBUSxDQUFDO3dCQUN4QixHQUFHLElBQUksQ0FBQyxXQUFXLENBQUMsS0FBSzt3QkFDekIsR0FBRyxFQUFFLE1BQU0sQ0FBQyxJQUFJLENBQUMsZUFBZSxDQUFDLEtBQU0sQ0FBQyxTQUFTLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO3FCQUN6RCxDQUFDLENBQUM7b0JBQ0gsSUFBSSxDQUFDLFFBQVEsRUFBRSxDQUFDO29CQUNoQixJQUFJLENBQUMsQ0FBQyxHQUFHLEdBQUcsQ0FBQyxFQUFFLENBQUM7d0JBQ2QsSUFBSSxDQUFDLFFBQVEsR0FBRyxDQUFDLENBQUM7d0JBQ2xCLEtBQUssQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7d0JBQzlCLElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQzt3QkFDZCxPQUFPO29CQUNULENBQUM7O3dCQUFNLElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQztnQkFDdkIsQ0FBQztxQkFBTSxJQUFJLE1BQU0sQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLElBQUksTUFBTSxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsSUFBSSxJQUFJLENBQUMsUUFBUSxHQUFHLENBQUMsRUFBRSxDQUFDO29CQUNoRixNQUFNLFVBQVUsR0FBRyxHQUFJLE1BQU0sQ0FBQyxNQUFNLENBQUMsU0FBUyxDQUFDLENBQUMsUUFBUSxFQUFFLEdBQUcsTUFBTSxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsU0FBUyxDQUFDLENBQUMsUUFBUSxFQUFFLEdBQUcsTUFBTSxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQ2pJLEdBQUksV0FBVyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUUsRUFBRSxDQUFDO29CQUNsQyxJQUFJLENBQUMsZUFBZSxDQUFDLFFBQVEsQ0FBQyxVQUFVLENBQUMsQ0FBQztvQkFDMUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxRQUFRLENBQUM7d0JBQ3hCLEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FBQyxLQUFLO3dCQUN6QixHQUFHLEVBQUUsTUFBTSxDQUFDLElBQUksQ0FBQyxlQUFlLENBQUMsS0FBTSxDQUFDLFNBQVMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7cUJBQ3pELENBQUMsQ0FBQztvQkFDSCxJQUFJLENBQUMsUUFBUSxFQUFFLENBQUM7b0JBQ2hCLElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQztvQkFDZCxLQUFLLENBQUMsaUJBQWlCLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO29CQUM5QixJQUFJLENBQUMsUUFBUSxHQUFHLENBQUMsQ0FBQztvQkFDbEIsT0FBTztnQkFDVCxDQUFDO3FCQUFNLENBQUM7b0JBQ04sTUFBTSxVQUFVLEdBQUcsR0FBSSxDQUFDLENBQUMsR0FBRyxDQUFDLFFBQVEsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFFLEdBQUksV0FBVyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUUsRUFBRSxDQUFDO29CQUM1RSxJQUFJLENBQUMsZUFBZSxDQUFDLFFBQVEsQ0FBQyxVQUFVLENBQUMsQ0FBQztvQkFDMUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxRQUFRLENBQUM7d0JBQ3hCLEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FBQyxLQUFLO3dCQUN6QixHQUFHLEVBQUUsTUFBTSxDQUFDLElBQUksQ0FBQyxlQUFlLENBQUMsS0FBTSxDQUFDLFNBQVMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7cUJBQ3pELENBQUMsQ0FBQztvQkFDSCxJQUFJLENBQUMsUUFBUSxFQUFFLENBQUM7b0JBQ2hCLElBQUksTUFBTSxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsUUFBUSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsSUFBSSxJQUFJLENBQUMsUUFBUSxHQUFHLENBQUMsRUFBRSxDQUFDO3dCQUMxRCxJQUFJLENBQUMsUUFBUSxHQUFHLENBQUMsQ0FBQzt3QkFDbEIsS0FBSyxDQUFDLGlCQUFpQixDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQzt3QkFDOUIsSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDO3dCQUNkLE9BQU87b0JBQ1QsQ0FBQzs7d0JBQU0sSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDO2dCQUN2QixDQUFDO2dCQUNELElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQztnQkFDZCxLQUFLLENBQUMsaUJBQWlCLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO1lBQ2hDLENBQUM7WUFDRCxzRUFBc0U7aUJBQ2pFLElBQUksS0FBSyxDQUFDLGNBQWMsSUFBSSxDQUFDLElBQUksS0FBSyxDQUFDLFlBQVksSUFBSSxDQUFDLEVBQUUsQ0FBQztnQkFDOUQsTUFBTSxXQUFXLEdBQVcsSUFBSSxDQUFDLGVBQWUsQ0FBQyxLQUFNLENBQUM7Z0JBQ3hELE1BQU0sU0FBUyxHQUFXLFdBQVcsQ0FBQyxTQUFTLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO2dCQUV0RCxJQUFJLFNBQVMsSUFBSSxJQUFJLEVBQUUsQ0FBQztvQkFDdEIsTUFBTSxVQUFVLEdBQUcsR0FBSSxXQUFXLENBQUMsU0FBUyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUUsR0FBSSxDQUFDLENBQUMsR0FBRyxDQUFDLFFBQVEsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFFLEdBQUksV0FBVyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUUsRUFBRSxDQUFDO29CQUM1RyxJQUFJLENBQUMsZUFBZSxDQUFDLFFBQVEsQ0FBQyxVQUFVLENBQUMsQ0FBQztvQkFDMUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxRQUFRLENBQUM7d0JBQ3hCLEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FBQyxLQUFLO3dCQUN6QixLQUFLLEVBQUUsTUFBTSxDQUFDLElBQUksQ0FBQyxlQUFlLENBQUMsS0FBTSxDQUFDLFNBQVMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7cUJBQzNELENBQUMsQ0FBQztvQkFDSCxJQUFJLENBQUMsUUFBUSxFQUFFLENBQUM7b0JBQ2hCLElBQUksQ0FBQyxDQUFDLEdBQUcsR0FBRyxDQUFDLEVBQUUsQ0FBQzt3QkFDZCxJQUFJLENBQUMsTUFBTSxFQUFFLENBQUM7d0JBQ2QsS0FBSyxDQUFDLGlCQUFpQixDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQzt3QkFDL0IsSUFBSSxDQUFDLFFBQVEsR0FBRyxDQUFDLENBQUM7d0JBQ2xCLE9BQU87b0JBQ1QsQ0FBQzs7d0JBQU0sSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDO2dCQUN2QixDQUFDO3FCQUFNLElBQUksTUFBTSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsSUFBSSxNQUFNLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQyxJQUFJLElBQUksQ0FBQyxRQUFRLEdBQUcsQ0FBQyxFQUFFLENBQUM7b0JBQ2hGLE1BQU0sVUFBVSxHQUFHLEdBQUksV0FBVyxDQUFDLFNBQVMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFFLEdBQUksTUFBTSxDQUFDLE1BQU0sQ0FBQyxTQUFTLENBQUMsQ0FBQyxRQUFRLEVBQUUsR0FBRyxNQUFNLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxTQUFTLENBQUMsQ0FBQyxRQUFRLEVBQUUsR0FBRyxNQUFNLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FDakssR0FBSSxXQUFXLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBRSxFQUFFLENBQUM7b0JBQ2xDLElBQUksQ0FBQyxlQUFlLENBQUMsUUFBUSxDQUFDLFVBQVUsQ0FBQyxDQUFDO29CQUMxQyxJQUFJLENBQUMsV0FBVyxDQUFDLFFBQVEsQ0FBQzt3QkFDeEIsR0FBRyxJQUFJLENBQUMsV0FBVyxDQUFDLEtBQUs7d0JBQ3pCLEtBQUssRUFBRSxNQUFNLENBQUMsSUFBSSxDQUFDLGVBQWUsQ0FBQyxLQUFNLENBQUMsU0FBUyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztxQkFDM0QsQ0FBQyxDQUFDO29CQUNILElBQUksQ0FBQyxRQUFRLEVBQUUsQ0FBQztvQkFDaEIsSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDO29CQUNkLEtBQUssQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUM7b0JBQy9CLElBQUksQ0FBQyxRQUFRLEdBQUcsQ0FBQyxDQUFDO29CQUNsQixPQUFPO2dCQUNULENBQUM7cUJBQU0sQ0FBQztvQkFDTixNQUFNLFVBQVUsR0FBRyxHQUFJLFdBQVcsQ0FBQyxTQUFTLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBRSxHQUFJLENBQUMsQ0FBQyxHQUFHLENBQUMsUUFBUSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUUsR0FBSSxXQUFXLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBRSxFQUFFLENBQUM7b0JBQzVHLElBQUksQ0FBQyxlQUFlLENBQUMsUUFBUSxDQUFDLFVBQVUsQ0FBQyxDQUFDO29CQUMxQyxJQUFJLENBQUMsV0FBVyxDQUFDLFFBQVEsQ0FBQzt3QkFDeEIsR0FBRyxJQUFJLENBQUMsV0FBVyxDQUFDLEtBQUs7d0JBQ3pCLEtBQUssRUFBRSxNQUFNLENBQUMsSUFBSSxDQUFDLGVBQWUsQ0FBQyxLQUFNLENBQUMsU0FBUyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztxQkFDM0QsQ0FBQyxDQUFDO29CQUNILElBQUksQ0FBQyxRQUFRLEVBQUUsQ0FBQztvQkFDaEIsSUFBSSxNQUFNLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxRQUFRLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxJQUFJLElBQUksQ0FBQyxRQUFRLEdBQUcsQ0FBQyxFQUFFLENBQUM7d0JBQzFELElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQzt3QkFDZCxLQUFLLENBQUMsaUJBQWlCLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDO3dCQUMvQixJQUFJLENBQUMsUUFBUSxHQUFHLENBQUMsQ0FBQzt3QkFDbEIsT0FBTztvQkFDVCxDQUFDOzt3QkFBTSxJQUFJLENBQUMsTUFBTSxFQUFFLENBQUM7Z0JBQ3ZCLENBQUM7Z0JBQ0QsSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDO2dCQUNkLEtBQUssQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7WUFDaEMsQ0FBQztZQUNELHNFQUFzRTtpQkFDakUsSUFBSSxLQUFLLENBQUMsY0FBYyxJQUFJLENBQUMsSUFBSSxLQUFLLENBQUMsWUFBWSxJQUFJLEVBQUUsRUFBRSxDQUFDO2dCQUMvRCxNQUFNLFdBQVcsR0FBVyxJQUFJLENBQUMsZUFBZSxDQUFDLEtBQU0sQ0FBQztnQkFDeEQsTUFBTSxVQUFVLEdBQVcsV0FBVyxDQUFDLFNBQVMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUM7Z0JBQ3hELElBQUksVUFBVSxJQUFJLE1BQU0sRUFBRSxDQUFDO29CQUN6QixNQUFNLFVBQVUsR0FBRyxHQUFJLFdBQVcsQ0FBQyxTQUFTLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBRSxHQUFJLENBQUMsQ0FBQyxHQUFHLENBQUMsUUFBUSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUUsR0FBSSxXQUFXLENBQUMsU0FBUyxDQUFDLEVBQUUsQ0FBRSxFQUFFLENBQUM7b0JBQzdHLElBQUksQ0FBQyxlQUFlLENBQUMsUUFBUSxDQUFDLFVBQVUsQ0FBQyxDQUFDO29CQUMxQyxJQUFJLENBQUMsV0FBVyxDQUFDLFFBQVEsQ0FBQzt3QkFDeEIsR0FBRyxJQUFJLENBQUMsV0FBVyxDQUFDLEtBQUs7d0JBQ3pCLElBQUksRUFBRSxNQUFNLENBQUMsSUFBSSxDQUFDLGVBQWUsQ0FBQyxLQUFNLENBQUMsU0FBUyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQztxQkFDM0QsQ0FBQyxDQUFDO29CQUNILElBQUksQ0FBQyxRQUFRLEVBQUUsQ0FBQztvQkFDaEIsSUFBSSxDQUFDLENBQUMsR0FBRyxHQUFHLENBQUMsRUFBRSxDQUFDO3dCQUNkLE1BQU0sVUFBVSxHQUFHLEdBQUksV0FBVyxDQUFDLFNBQVMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFFLEdBQUksUUFBUSxDQUFDLE9BQU8sQ0FBQyxRQUFRLENBQUMsR0FBRyxFQUFFLENBQUUsR0FBSSxXQUFXLENBQUMsU0FBUyxDQUFDLEVBQUUsQ0FBRSxFQUFFLENBQUM7d0JBQ3pILElBQUksQ0FBQyxlQUFlLENBQUMsUUFBUSxDQUFDLFVBQVUsQ0FBQyxDQUFDO3dCQUMxQyxJQUFJLENBQUMsV0FBVyxDQUFDLFFBQVEsQ0FBQzs0QkFDeEIsR0FBRyxJQUFJLENBQUMsV0FBVyxDQUFDLEtBQUs7NEJBQ3pCLElBQUksRUFBRSxNQUFNLENBQUMsSUFBSSxDQUFDLGVBQWUsQ0FBQyxLQUFNLENBQUMsU0FBUyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQzt5QkFDM0QsQ0FBQyxDQUFDO3dCQUNILElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQzt3QkFDZCxLQUFLLENBQUMsaUJBQWlCLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDO3dCQUNoQyxJQUFJLENBQUMsUUFBUSxHQUFHLENBQUMsQ0FBQzt3QkFDbEIsT0FBTztvQkFDVCxDQUFDOzt3QkFBTSxJQUFJLENBQUMsTUFBTSxFQUFFLENBQUM7Z0JBQ3ZCLENBQUM7cUJBQU0sSUFBSSxNQUFNLENBQUMsVUFBVSxDQUFDLElBQUksSUFBSSxJQUFJLE1BQU0sQ0FBQyxVQUFVLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQztvQkFDaEUsSUFBSSxVQUFVLENBQUM7b0JBQ2YsSUFBSSxDQUFDLFFBQVEsRUFBRSxDQUFDO29CQUNoQixJQUFJLE1BQU0sQ0FBQyxVQUFVLENBQUMsSUFBSSxJQUFJLEVBQUUsQ0FBQzt3QkFDL0IsVUFBVSxHQUFHLEdBQUksV0FBVyxDQUFDLFNBQVMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFFLEdBQUksTUFBTSxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxRQUFRLEVBQUUsQ0FBQyxRQUFRLENBQUMsQ0FBQyxFQUFFLEdBQUcsQ0FBRSxHQUFJLFdBQVcsQ0FBQyxTQUFTLENBQUMsRUFBRSxDQUFFLEVBQUUsQ0FBQztvQkFDOUgsQ0FBQzt5QkFBTSxDQUFDO3dCQUNOLFVBQVUsR0FBRyxHQUFJLFdBQVcsQ0FBQyxTQUFTLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBRSxHQUFJLENBQUMsTUFBTSxDQUFDLFVBQVUsQ0FBQyxDQUFDLFFBQVEsRUFBRSxHQUFHLE1BQU0sQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQ3ZHLENBQUMsRUFDRCxHQUFHLENBQ0gsR0FBSSxXQUFXLENBQUMsU0FBUyxDQUFDLEVBQUUsQ0FBRSxFQUFFLENBQUM7d0JBQ25DLElBQUksQ0FBQyxlQUFlLENBQUMsUUFBUSxDQUFDLFVBQVUsQ0FBQyxDQUFDO3dCQUMxQyxJQUFJLENBQUMsV0FBVyxDQUFDLFFBQVEsQ0FBQzs0QkFDeEIsR0FBRyxJQUFJLENBQUMsV0FBVyxDQUFDLEtBQUs7NEJBQ3pCLElBQUksRUFBRSxNQUFNLENBQUMsSUFBSSxDQUFDLGVBQWUsQ0FBQyxLQUFNLENBQUMsU0FBUyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQzt5QkFDM0QsQ0FBQyxDQUFDO3dCQUNILElBQ0UsTUFBTSxDQUFDLE1BQU0sQ0FBQyxVQUFVLENBQUMsQ0FBQyxRQUFRLEVBQUUsR0FBRyxNQUFNLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEdBQUcsSUFBSTs0QkFDNUQsTUFBTSxDQUFDLE1BQU0sQ0FBQyxVQUFVLENBQUMsQ0FBQyxRQUFRLEVBQUUsR0FBRyxNQUFNLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEdBQUcsSUFBSSxFQUM1RCxDQUFDOzRCQUNELElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQzs0QkFDZCxLQUFLLENBQUMsaUJBQWlCLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDOzRCQUNoQyxJQUFJLENBQUMsUUFBUSxHQUFHLENBQUMsQ0FBQzs0QkFDbEIsT0FBTzt3QkFDVCxDQUFDOzZCQUFNLElBQUksTUFBTSxDQUFDLE1BQU0sQ0FBQyxVQUFVLENBQUMsQ0FBQyxRQUFRLEVBQUUsR0FBRyxNQUFNLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEdBQUcsSUFBSSxFQUFFLENBQUM7NEJBQ3hFLFVBQVUsR0FBRyxHQUFJLFdBQVcsQ0FBQyxTQUFTLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBRSxHQUFJLFFBQVEsQ0FBQyxPQUFPLENBQUMsUUFBUSxDQUFDLEdBQUcsRUFBRSxDQUFFLEdBQUksV0FBVyxDQUFDLFNBQVMsQ0FBQyxFQUFFLENBQUUsRUFBRSxDQUFDOzRCQUNuSCxJQUFJLENBQUMsZUFBZSxDQUFDLFFBQVEsQ0FBQyxVQUFVLENBQUMsQ0FBQzs0QkFDMUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxRQUFRLENBQUM7Z0NBQ3hCLEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FBQyxLQUFLO2dDQUN6QixJQUFJLEVBQUUsTUFBTSxDQUFDLElBQUksQ0FBQyxlQUFlLENBQUMsS0FBTSxDQUFDLFNBQVMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUM7NkJBQzNELENBQUMsQ0FBQzs0QkFDSCxJQUFJLENBQUMsTUFBTSxFQUFFLENBQUM7NEJBQ2QsS0FBSyxDQUFDLGlCQUFpQixDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQzs0QkFDaEMsSUFBSSxDQUFDLFFBQVEsR0FBRyxDQUFDLENBQUM7NEJBQ2xCLE9BQU87d0JBQ1QsQ0FBQztvQkFDSCxDQUFDO29CQUNELElBQUksQ0FBQyxlQUFlLENBQUMsUUFBUSxDQUFDLFVBQVUsQ0FBQyxDQUFDO29CQUMxQyxJQUFJLENBQUMsV0FBVyxDQUFDLFFBQVEsQ0FBQzt3QkFDeEIsR0FBRyxJQUFJLENBQUMsV0FBVyxDQUFDLEtBQUs7d0JBQ3pCLElBQUksRUFBRSxNQUFNLENBQUMsSUFBSSxDQUFDLGVBQWUsQ0FBQyxLQUFNLENBQUMsU0FBUyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQztxQkFDM0QsQ0FBQyxDQUFDO2dCQUNMLENBQUM7cUJBQU0sQ0FBQztvQkFDTixNQUFNLFVBQVUsR0FBRyxHQUFJLFdBQVcsQ0FBQyxTQUFTLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBRSxHQUFJLENBQUMsQ0FBQyxHQUFHLENBQUMsUUFBUSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUUsR0FBSSxXQUFXLENBQUMsU0FBUyxDQUFDLEVBQUUsQ0FBRSxFQUFFLENBQUM7b0JBQzdHLElBQUksQ0FBQyxlQUFlLENBQUMsUUFBUSxDQUFDLFVBQVUsQ0FBQyxDQUFDO29CQUMxQyxJQUFJLENBQUMsV0FBVyxDQUFDLFFBQVEsQ0FBQzt3QkFDeEIsR0FBRyxJQUFJLENBQUMsV0FBVyxDQUFDLEtBQUs7d0JBQ3pCLElBQUksRUFBRSxNQUFNLENBQUMsSUFBSSxDQUFDLGVBQWUsQ0FBQyxLQUFNLENBQUMsU0FBUyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQztxQkFDM0QsQ0FBQyxDQUFDO2dCQUNMLENBQUM7Z0JBQ0QsSUFBSSxDQUFDLFFBQVEsRUFBRSxDQUFDO2dCQUNoQixJQUFJLENBQUMsTUFBTSxFQUFFLENBQUM7Z0JBQ2QsS0FBSyxDQUFDLGlCQUFpQixDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQztZQUNqQyxDQUFDO1lBQ0Qsc0VBQXNFO2lCQUNqRSxJQUFJLEtBQUssQ0FBQyxjQUFjLElBQUksRUFBRSxJQUFJLEtBQUssQ0FBQyxZQUFZLElBQUksRUFBRSxFQUFFLENBQUM7Z0JBQ2hFLE1BQU0sV0FBVyxHQUFXLElBQUksQ0FBQyxlQUFlLENBQUMsS0FBTSxDQUFDO2dCQUN4RCxNQUFNLFVBQVUsR0FBVyxXQUFXLENBQUMsU0FBUyxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQztnQkFFekQsSUFBSSxVQUFVLElBQUksSUFBSSxFQUFFLENBQUM7b0JBQ3ZCLE1BQU0sVUFBVSxHQUFHLEdBQUksV0FBVyxDQUFDLFNBQVMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFFLEdBQUksQ0FBQyxDQUFDLEdBQUcsQ0FBQyxRQUFRLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBRSxHQUFJLFdBQVcsQ0FBQyxTQUFTLENBQUMsRUFBRSxDQUFFLEVBQUUsQ0FBQztvQkFDOUcsSUFBSSxDQUFDLGVBQWUsQ0FBQyxRQUFRLENBQUMsVUFBVSxDQUFDLENBQUM7b0JBQzFDLHlDQUF5QztvQkFDekMsSUFBSSxJQUFJLENBQUMsTUFBTSxJQUFJLEVBQUU7d0JBQ25CLElBQUksQ0FBQyxZQUFZLENBQUMsUUFBUSxDQUFDOzRCQUN6QixHQUFHLElBQUksQ0FBQyxZQUFZLENBQUMsS0FBSzs0QkFDMUIsSUFBSSxFQUFFLDhCQUE4QixDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsZUFBZSxDQUFDLEtBQU0sQ0FBQyxTQUFTLENBQUMsRUFBRSxDQUFDLENBQUM7Z0NBQ2xGLENBQUMsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxTQUFTLENBQUMsY0FBZSxJQUFJLENBQUMsZUFBZSxDQUFDLEtBQU0sQ0FBQyxTQUFTLENBQUMsRUFBRSxDQUFFLEVBQUUsRUFBRSxJQUFJLENBQUMsQ0FBQztnQ0FDckcsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsZUFBZSxDQUFDLEtBQU0sQ0FBQyxTQUFTLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDOzRCQUN6RCxNQUFNLEVBQUUsSUFBSSxDQUFDLGVBQWUsQ0FBQyxLQUFNLENBQUMsU0FBUyxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsSUFBSSxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxLQUFLLENBQUMsTUFBTTt5QkFDbkcsQ0FBQyxDQUFDO29CQUNMLHlDQUF5Qzs7d0JBRXZDLElBQUksQ0FBQyxZQUFZLENBQUMsUUFBUSxDQUFDOzRCQUN6QixHQUFHLElBQUksQ0FBQyxZQUFZLENBQUMsS0FBSzs0QkFDMUIsSUFBSSxFQUFFLHVCQUF1QixDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsZUFBZSxDQUFDLEtBQU0sQ0FBQyxTQUFTLENBQUMsRUFBRSxDQUFDLENBQUM7Z0NBQzNFLENBQUMsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxTQUFTLENBQUMsY0FBZSxJQUFJLENBQUMsZUFBZSxDQUFDLEtBQU0sQ0FBQyxTQUFTLENBQUMsRUFBRSxDQUFFLEVBQUUsRUFBRSxJQUFJLENBQUMsQ0FBQztnQ0FDckcsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsZUFBZSxDQUFDLEtBQU0sQ0FBQyxTQUFTLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDOzRCQUN6RCxNQUFNLEVBQUUsSUFBSSxDQUFDLGVBQWUsQ0FBQyxLQUFNLENBQUMsU0FBUyxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsSUFBSSxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxLQUFLLENBQUMsTUFBTTt5QkFDbkcsQ0FBQyxDQUFDO29CQUNMLElBQUksQ0FBQyxRQUFRLEVBQUUsQ0FBQztvQkFDaEIsSUFBSSxDQUFDLENBQUMsR0FBRyxHQUFHLENBQUMsSUFBSSxJQUFJLENBQUMsTUFBTSxJQUFJLEVBQUUsRUFBRSxDQUFDO3dCQUNuQyxJQUFJLENBQUMsTUFBTSxFQUFFLENBQUM7d0JBQ2QsS0FBSyxDQUFDLGlCQUFpQixDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQzt3QkFDaEMsSUFBSSxDQUFDLFFBQVEsR0FBRyxDQUFDLENBQUM7d0JBQ2xCLE9BQU87b0JBQ1QsQ0FBQzt5QkFBTSxJQUFJLENBQUMsQ0FBQyxHQUFHLEdBQUcsQ0FBQyxJQUFJLElBQUksQ0FBQyxNQUFNLElBQUksRUFBRSxFQUFFLENBQUM7d0JBQzFDLElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQzt3QkFDZCxLQUFLLENBQUMsaUJBQWlCLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDO3dCQUNoQyxJQUFJLENBQUMsUUFBUSxHQUFHLENBQUMsQ0FBQzt3QkFDbEIsT0FBTztvQkFDVCxDQUFDOzt3QkFBTSxJQUFJLENBQUMsTUFBTSxFQUFFLENBQUM7Z0JBQ3ZCLENBQUM7cUJBQU0sSUFBSSxNQUFNLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxJQUFJLE1BQU0sQ0FBQyxVQUFVLENBQUMsR0FBRyxDQUFDLElBQUksSUFBSSxDQUFDLFFBQVEsR0FBRyxDQUFDLElBQUksSUFBSSxDQUFDLE1BQU0sSUFBSSxFQUFFLEVBQUUsQ0FBQztvQkFDdkcsTUFBTSxVQUFVLEdBQUcsR0FBSSxXQUFXLENBQUMsU0FBUyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUUsR0FBSSxNQUFNLENBQUMsTUFBTSxDQUFDLFVBQVUsQ0FBQyxDQUFDLFFBQVEsRUFBRSxHQUFHLE1BQU0sQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLFVBQVUsQ0FBQyxDQUFDLFFBQVEsRUFBRSxHQUFHLE1BQU0sQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUNwSyxHQUFJLFdBQVcsQ0FBQyxTQUFTLENBQUMsRUFBRSxDQUFFLEVBQUUsQ0FBQztvQkFDbkMsSUFBSSxDQUFDLGVBQWUsQ0FBQyxRQUFRLENBQUMsVUFBVSxDQUFDLENBQUM7b0JBQzFDLElBQUksQ0FBQyxZQUFZLENBQUMsUUFBUSxDQUFDO3dCQUN6QixHQUFHLElBQUksQ0FBQyxZQUFZLENBQUMsS0FBSzt3QkFDMUIsSUFBSSxFQUFFLDhCQUE4QixDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsZUFBZSxDQUFDLEtBQU0sQ0FBQyxTQUFTLENBQUMsRUFBRSxDQUFDLENBQUM7NEJBQ2xGLENBQUMsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxTQUFTLENBQUMsY0FBZSxJQUFJLENBQUMsZUFBZSxDQUFDLEtBQU0sQ0FBQyxTQUFTLENBQUMsRUFBRSxDQUFFLEVBQUUsRUFBRSxJQUFJLENBQUMsQ0FBQzs0QkFDckcsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsZUFBZSxDQUFDLEtBQU0sQ0FBQyxTQUFTLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDO3dCQUN6RCxNQUFNLEVBQUUsSUFBSSxDQUFDLGVBQWUsQ0FBQyxLQUFNLENBQUMsU0FBUyxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsSUFBSSxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxLQUFLLENBQUMsTUFBTTtxQkFDbkcsQ0FBQyxDQUFDO29CQUNILElBQUksQ0FBQyxRQUFRLEVBQUUsQ0FBQztvQkFDaEIsSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDO29CQUNkLEtBQUssQ0FBQyxpQkFBaUIsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUM7b0JBQ2hDLElBQUksQ0FBQyxRQUFRLEdBQUcsQ0FBQyxDQUFDO29CQUNsQixPQUFPO2dCQUNULENBQUM7cUJBQU0sSUFBSSxNQUFNLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxJQUFJLE1BQU0sQ0FBQyxVQUFVLENBQUMsR0FBRyxDQUFDLElBQUksSUFBSSxDQUFDLFFBQVEsR0FBRyxDQUFDLElBQUksSUFBSSxDQUFDLE1BQU0sSUFBSSxFQUFFLEVBQUUsQ0FBQztvQkFDdkcsTUFBTSxVQUFVLEdBQUcsR0FBSSxXQUFXLENBQUMsU0FBUyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUUsR0FBSSxNQUFNLENBQUMsTUFBTSxDQUFDLFVBQVUsQ0FBQyxDQUFDLFFBQVEsRUFBRSxHQUFHLE1BQU0sQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLFVBQVUsQ0FBQyxDQUFDLFFBQVEsRUFBRSxHQUFHLE1BQU0sQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUNwSyxHQUFJLFdBQVcsQ0FBQyxTQUFTLENBQUMsRUFBRSxDQUFFLEVBQUUsQ0FBQztvQkFDbkMsSUFBSSxDQUFDLGVBQWUsQ0FBQyxRQUFRLENBQUMsVUFBVSxDQUFDLENBQUM7b0JBQzFDLElBQUksSUFBSSxDQUFDO29CQUNULElBQUksQ0FBQzt3QkFDSCxJQUFJLEdBQUcsdUJBQXVCLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxlQUFlLENBQUMsS0FBTSxDQUFDLFNBQVMsQ0FBQyxFQUFFLENBQUMsQ0FBQzs0QkFDNUUsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLFNBQVMsQ0FBQyxjQUFlLElBQUksQ0FBQyxlQUFlLENBQUMsS0FBTSxDQUFDLFNBQVMsQ0FBQyxFQUFFLENBQUUsRUFBRSxFQUFFLElBQUksQ0FBQyxDQUFDOzRCQUNyRyxDQUFDLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxlQUFlLENBQUMsS0FBTSxDQUFDLFNBQVMsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQztvQkFDNUQsQ0FBQztvQkFBQyxPQUFPLEtBQUssRUFBRSxDQUFDO3dCQUNmLElBQUksR0FBRyxNQUFNLENBQUMsSUFBSSxDQUFDLGVBQWUsQ0FBQyxLQUFNLENBQUMsU0FBUyxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDO29CQUMvRCxDQUFDO29CQUNELElBQUksQ0FBQyxZQUFZLENBQUMsUUFBUSxDQUFDO3dCQUN6QixHQUFHLElBQUksQ0FBQyxZQUFZLENBQUMsS0FBSzt3QkFDMUIsSUFBSTt3QkFDSixNQUFNLEVBQUUsSUFBSSxDQUFDLGVBQWUsQ0FBQyxLQUFNLENBQUMsU0FBUyxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsSUFBSSxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxLQUFLLENBQUMsTUFBTTtxQkFDbkcsQ0FBQyxDQUFDO29CQUNILElBQUksQ0FBQyxRQUFRLEVBQUUsQ0FBQztvQkFDaEIsSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDO29CQUNkLEtBQUssQ0FBQyxpQkFBaUIsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUM7b0JBQ2hDLElBQUksQ0FBQyxRQUFRLEdBQUcsQ0FBQyxDQUFDO29CQUNsQixPQUFPO2dCQUNULENBQUM7cUJBQU0sQ0FBQztvQkFDTixNQUFNLFVBQVUsR0FBRyxHQUFJLFdBQVcsQ0FBQyxTQUFTLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBRSxHQUFJLENBQUMsQ0FBQyxHQUFHLENBQUMsUUFBUSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUUsR0FBSSxXQUFXLENBQUMsU0FBUyxDQUFDLEVBQUUsQ0FBRSxFQUFFLENBQUM7b0JBQzlHLElBQUksQ0FBQyxlQUFlLENBQUMsUUFBUSxDQUFDLFVBQVUsQ0FBQyxDQUFDO29CQUMxQyxNQUFNLEtBQUssR0FBRyxJQUFJLENBQUMsTUFBTSxJQUFJLEVBQUUsQ0FBQyxDQUFDLENBQUMsOEJBQThCLENBQUMsQ0FBQyxDQUFDLHVCQUF1QixDQUFDO29CQUUzRixJQUFJLENBQUMsWUFBWSxDQUFDLFFBQVEsQ0FBQzt3QkFDekIsR0FBRyxJQUFJLENBQUMsWUFBWSxDQUFDLEtBQUs7d0JBQzFCLElBQUksRUFBRSxLQUFLLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxlQUFlLENBQUMsS0FBTSxDQUFDLFNBQVMsQ0FBQyxFQUFFLENBQUMsQ0FBQzs0QkFDekQsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLFNBQVMsQ0FBQyxjQUFlLElBQUksQ0FBQyxlQUFlLENBQUMsS0FBTSxDQUFDLFNBQVMsQ0FBQyxFQUFFLENBQUUsRUFBRSxFQUFFLElBQUksQ0FBQyxDQUFDOzRCQUNyRyxDQUFDLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxlQUFlLENBQUMsS0FBTSxDQUFDLFNBQVMsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUM7d0JBQ3pELE1BQU0sRUFDSixJQUFJLENBQUMsZUFBZSxDQUFDLEtBQU0sQ0FBQyxTQUFTLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxJQUFJLElBQUksSUFBSSxJQUFJLENBQUMsZUFBZSxDQUFDLEtBQU0sQ0FBQyxTQUFTLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxJQUFJLElBQUk7NEJBQzVHLENBQUMsQ0FBQyxDQUFDOzRCQUNILENBQUMsQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLEtBQUssQ0FBQyxNQUFNO3FCQUNyQyxDQUFDLENBQUM7b0JBQ0gsSUFBSSxDQUFDLFFBQVEsRUFBRSxDQUFDO29CQUNoQixJQUFJLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsUUFBUSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsSUFBSSxJQUFJLENBQUMsUUFBUSxHQUFHLENBQUMsQ0FBQyxJQUFJLElBQUksQ0FBQyxNQUFNLElBQUksRUFBRSxFQUFFLENBQUM7d0JBQ2pGLElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQzt3QkFDZCxLQUFLLENBQUMsaUJBQWlCLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDO3dCQUNoQyxJQUFJLENBQUMsUUFBUSxHQUFHLENBQUMsQ0FBQzt3QkFDbEIsT0FBTztvQkFDVCxDQUFDO3lCQUFNLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxRQUFRLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxJQUFJLElBQUksQ0FBQyxRQUFRLEdBQUcsQ0FBQyxDQUFDLElBQUksSUFBSSxDQUFDLE1BQU0sSUFBSSxFQUFFLEVBQUUsQ0FBQzt3QkFDeEYsSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDO3dCQUNkLEtBQUssQ0FBQyxpQkFBaUIsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUM7d0JBQ2hDLElBQUksQ0FBQyxRQUFRLEdBQUcsQ0FBQyxDQUFDO3dCQUNsQixPQUFPO29CQUNULENBQUM7O3dCQUFNLElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQztnQkFDdkIsQ0FBQztnQkFDRCxJQUFJLENBQUMsTUFBTSxFQUFFLENBQUM7Z0JBQ2QsS0FBSyxDQUFDLGlCQUFpQixDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQztZQUNsQyxDQUFDO1lBQ0Qsc0VBQXNFO2lCQUNqRSxJQUFJLEtBQUssQ0FBQyxjQUFjLElBQUksRUFBRSxJQUFJLEtBQUssQ0FBQyxZQUFZLElBQUksRUFBRSxFQUFFLENBQUM7Z0JBQ2hFLE1BQU0sV0FBVyxHQUFXLElBQUksQ0FBQyxlQUFlLENBQUMsS0FBTSxDQUFDO2dCQUN4RCxNQUFNLGVBQWUsR0FBVyxXQUFXLENBQUMsU0FBUyxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQztnQkFDOUQsSUFBSSxlQUFlLElBQUksSUFBSSxFQUFFLENBQUM7b0JBQzVCLE1BQU0sVUFBVSxHQUFHLEdBQUksV0FBVyxDQUFDLFNBQVMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFFLEdBQUksQ0FBQyxDQUFDLEdBQUcsQ0FBQyxRQUFRLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBRSxHQUFJLFdBQVcsQ0FBQyxTQUFTLENBQUMsRUFBRSxDQUFFLEVBQUUsQ0FBQztvQkFDOUcsSUFBSSxDQUFDLGVBQWUsQ0FBQyxRQUFRLENBQUMsVUFBVSxDQUFDLENBQUM7b0JBQzFDLElBQUksQ0FBQyxZQUFZLENBQUMsUUFBUSxDQUFDO3dCQUN6QixHQUFHLElBQUksQ0FBQyxZQUFZLENBQUMsS0FBSzt3QkFDMUIsTUFBTSxFQUFFLDhCQUE4QixDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsZUFBZSxDQUFDLEtBQU0sQ0FBQyxTQUFTLENBQUMsRUFBRSxDQUFDLENBQUM7NEJBQ3BGLENBQUMsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxTQUFTLENBQUMsY0FBZSxJQUFJLENBQUMsZUFBZSxDQUFDLEtBQU0sQ0FBQyxTQUFTLENBQUMsRUFBRSxDQUFFLEVBQUUsRUFBRSxJQUFJLENBQUMsQ0FBQzs0QkFDckcsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsZUFBZSxDQUFDLEtBQU0sQ0FBQyxTQUFTLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDO3FCQUMxRCxDQUFDLENBQUM7b0JBQ0gsSUFBSSxDQUFDLFFBQVEsRUFBRSxDQUFDO29CQUNoQixJQUFJLENBQUMsQ0FBQyxHQUFHLEdBQUcsQ0FBQyxFQUFFLENBQUM7d0JBQ2QsSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDO3dCQUNkLElBQUksSUFBSSxDQUFDLE1BQU0sSUFBSSxFQUFFOzRCQUFFLEtBQUssQ0FBQyxpQkFBaUIsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUM7OzRCQUNsRCxLQUFLLENBQUMsaUJBQWlCLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDO3dCQUNyQyxJQUFJLENBQUMsUUFBUSxHQUFHLENBQUMsQ0FBQzt3QkFDbEIsT0FBTztvQkFDVCxDQUFDOzt3QkFBTSxJQUFJLENBQUMsTUFBTSxFQUFFLENBQUM7Z0JBQ3ZCLENBQUM7cUJBQU0sSUFBSSxNQUFNLENBQUMsZUFBZSxDQUFDLElBQUksQ0FBQyxJQUFJLE1BQU0sQ0FBQyxlQUFlLENBQUMsR0FBRyxDQUFDLElBQUksSUFBSSxDQUFDLFFBQVEsR0FBRyxDQUFDLEVBQUUsQ0FBQztvQkFDNUYsTUFBTSxVQUFVLEdBQUcsR0FBSSxXQUFXLENBQUMsU0FBUyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUUsR0FBSSxNQUFNLENBQUMsTUFBTSxDQUFDLGVBQWUsQ0FBQyxDQUFDLFFBQVEsRUFBRSxHQUFHLE1BQU0sQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLGVBQWUsQ0FBQyxDQUFDLFFBQVEsRUFBRSxHQUFHLE1BQU0sQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUM5SyxHQUFJLFdBQVcsQ0FBQyxTQUFTLENBQUMsRUFBRSxDQUFFLEVBQUUsQ0FBQztvQkFDbkMsSUFBSSxDQUFDLGVBQWUsQ0FBQyxRQUFRLENBQUMsVUFBVSxDQUFDLENBQUM7b0JBQzFDLElBQUksTUFBTSxDQUFDO29CQUNYLE1BQU0sS0FBSyxHQUFHLElBQUksQ0FBQyxNQUFNLElBQUksRUFBRSxDQUFDLENBQUMsQ0FBQyw4QkFBOEIsQ0FBQyxDQUFDLENBQUMsdUJBQXVCLENBQUM7b0JBQzNGLElBQUksQ0FBQzt3QkFDSCxNQUFNLEdBQUcsS0FBSyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsZUFBZSxDQUFDLEtBQU0sQ0FBQyxTQUFTLENBQUMsRUFBRSxDQUFDLENBQUM7NEJBQzVELENBQUMsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxTQUFTLENBQUMsY0FBZSxJQUFJLENBQUMsZUFBZSxDQUFDLEtBQU0sQ0FBQyxTQUFTLENBQUMsRUFBRSxDQUFFLEVBQUUsRUFBRSxJQUFJLENBQUMsQ0FBQzs0QkFDckcsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsZUFBZSxDQUFDLEtBQU0sQ0FBQyxTQUFTLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUM7b0JBQzVELENBQUM7b0JBQUMsT0FBTyxLQUFLLEVBQUUsQ0FBQzt3QkFDZixNQUFNLEdBQUcsTUFBTSxDQUFDLElBQUksQ0FBQyxlQUFlLENBQUMsS0FBTSxDQUFDLFNBQVMsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQztvQkFDakUsQ0FBQztvQkFDRCxJQUFJLENBQUMsWUFBWSxDQUFDLFFBQVEsQ0FBQzt3QkFDekIsR0FBRyxJQUFJLENBQUMsWUFBWSxDQUFDLEtBQUs7d0JBQzFCLE1BQU07cUJBQ1AsQ0FBQyxDQUFDO29CQUNILElBQUksQ0FBQyxRQUFRLEVBQUUsQ0FBQztvQkFDaEIsSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDO29CQUNkLElBQUksSUFBSSxDQUFDLE1BQU0sSUFBSSxFQUFFO3dCQUFFLEtBQUssQ0FBQyxpQkFBaUIsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUM7O3dCQUNsRCxLQUFLLENBQUMsaUJBQWlCLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDO29CQUNyQyxJQUFJLENBQUMsUUFBUSxHQUFHLENBQUMsQ0FBQztvQkFDbEIsT0FBTztnQkFDVCxDQUFDO3FCQUFNLENBQUM7b0JBQ04sTUFBTSxVQUFVLEdBQUcsR0FBSSxXQUFXLENBQUMsU0FBUyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUUsR0FBSSxDQUFDLENBQUMsR0FBRyxDQUFDLFFBQVEsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFFLEdBQUksV0FBVyxDQUFDLFNBQVMsQ0FBQyxFQUFFLENBQUUsRUFBRSxDQUFDO29CQUM5RyxJQUFJLENBQUMsZUFBZSxDQUFDLFFBQVEsQ0FBQyxVQUFVLENBQUMsQ0FBQztvQkFDMUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxRQUFRLENBQUM7d0JBQ3pCLEdBQUcsSUFBSSxDQUFDLFlBQVksQ0FBQyxLQUFLO3dCQUMxQixNQUFNLEVBQUUsOEJBQThCLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxlQUFlLENBQUMsS0FBTSxDQUFDLFNBQVMsQ0FBQyxFQUFFLENBQUMsQ0FBQzs0QkFDcEYsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLFNBQVMsQ0FBQyxjQUFlLElBQUksQ0FBQyxlQUFlLENBQUMsS0FBTSxDQUFDLFNBQVMsQ0FBQyxFQUFFLENBQUUsRUFBRSxFQUFFLElBQUksQ0FBQyxDQUFDOzRCQUNyRyxDQUFDLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxlQUFlLENBQUMsS0FBTSxDQUFDLFNBQVMsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUM7cUJBQzFELENBQUMsQ0FBQztvQkFDSCxJQUFJLENBQUMsUUFBUSxFQUFFLENBQUM7b0JBQ2hCLElBQUksTUFBTSxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsUUFBUSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsSUFBSSxJQUFJLENBQUMsUUFBUSxHQUFHLENBQUMsRUFBRSxDQUFDO3dCQUMxRCxJQUFJLENBQUMsTUFBTSxFQUFFLENBQUM7d0JBQ2QsSUFBSSxJQUFJLENBQUMsTUFBTSxJQUFJLEVBQUU7NEJBQUUsS0FBSyxDQUFDLGlCQUFpQixDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQzs7NEJBQ2xELEtBQUssQ0FBQyxpQkFBaUIsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUM7d0JBQ3JDLElBQUksQ0FBQyxRQUFRLEdBQUcsQ0FBQyxDQUFDO3dCQUNsQixPQUFPO29CQUNULENBQUM7O3dCQUFNLElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQztnQkFDdkIsQ0FBQztnQkFDRCxJQUFJLENBQUMsTUFBTSxFQUFFLENBQUM7Z0JBQ2QsS0FBSyxDQUFDLGlCQUFpQixDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQztZQUNsQyxDQUFDO1FBQ0gsQ0FBQzthQUFNLENBQUM7WUFDTixzRUFBc0U7WUFDdEUsSUFBSSxDQUFDLENBQUMsR0FBRyxJQUFJLFlBQVksRUFBRSxDQUFDO2dCQUMxQixJQUFJLEtBQUssQ0FBQyxjQUFjLElBQUksQ0FBQyxJQUFJLEtBQUssQ0FBQyxZQUFZLElBQUksQ0FBQyxFQUFFLENBQUM7b0JBQ3pELEtBQUssQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7b0JBQzlCLElBQUksQ0FBQyxRQUFRLEdBQUcsQ0FBQyxDQUFDO2dCQUNwQixDQUFDO3FCQUFNLElBQUksS0FBSyxDQUFDLGNBQWMsSUFBSSxDQUFDLElBQUksS0FBSyxDQUFDLFlBQVksSUFBSSxDQUFDLEVBQUUsQ0FBQztvQkFDaEUsS0FBSyxDQUFDLGlCQUFpQixDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQztvQkFDL0IsSUFBSSxDQUFDLFFBQVEsR0FBRyxDQUFDLENBQUM7Z0JBQ3BCLENBQUM7cUJBQU0sSUFBSSxLQUFLLENBQUMsY0FBYyxJQUFJLENBQUMsSUFBSSxLQUFLLENBQUMsWUFBWSxJQUFJLEVBQUUsRUFBRSxDQUFDO29CQUNqRSxLQUFLLENBQUMsaUJBQWlCLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDO29CQUNoQyxJQUFJLENBQUMsUUFBUSxHQUFHLENBQUMsQ0FBQztnQkFDcEIsQ0FBQztxQkFBTSxJQUFJLEtBQUssQ0FBQyxjQUFjLElBQUksRUFBRSxJQUFJLEtBQUssQ0FBQyxZQUFZLElBQUksRUFBRSxFQUFFLENBQUM7b0JBQ2xFLEtBQUssQ0FBQyxpQkFBaUIsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUM7b0JBQ2hDLElBQUksQ0FBQyxRQUFRLEdBQUcsQ0FBQyxDQUFDO2dCQUNwQixDQUFDO3FCQUFNLElBQUksS0FBSyxDQUFDLGNBQWMsSUFBSSxFQUFFLElBQUksS0FBSyxDQUFDLFlBQVksSUFBSSxFQUFFLEVBQUUsQ0FBQztvQkFDbEUsSUFBSSxJQUFJLENBQUMsTUFBTSxJQUFJLEVBQUU7d0JBQUUsS0FBSyxDQUFDLGlCQUFpQixDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQzt5QkFDbEQsSUFBSSxJQUFJLENBQUMsTUFBTSxJQUFJLEVBQUU7d0JBQUUsSUFBSSxDQUFDLE9BQU8sRUFBRSxhQUFhLENBQUMsS0FBSyxFQUFFLENBQUM7b0JBQ2hFLElBQUksQ0FBQyxRQUFRLEdBQUcsQ0FBQyxDQUFDO2dCQUNwQixDQUFDO3FCQUFNLElBQUksS0FBSyxDQUFDLGNBQWMsSUFBSSxFQUFFLElBQUksS0FBSyxDQUFDLFlBQVksSUFBSSxFQUFFLEVBQUUsQ0FBQztvQkFDbEUsSUFBSSxDQUFDLE9BQU8sRUFBRSxhQUFhLENBQUMsS0FBSyxFQUFFLENBQUM7b0JBQ3BDLElBQUksQ0FBQyxRQUFRLEdBQUcsQ0FBQyxDQUFDO2dCQUNwQixDQUFDO1lBQ0gsQ0FBQztpQkFBTSxJQUFJLENBQUMsQ0FBQyxHQUFHLElBQUksV0FBVyxFQUFFLENBQUM7Z0JBQ2hDLElBQUksS0FBSyxDQUFDLGNBQWMsSUFBSSxDQUFDLElBQUksS0FBSyxDQUFDLFlBQVksSUFBSSxDQUFDLEVBQUUsQ0FBQztvQkFDekQsSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDO29CQUNkLElBQUksQ0FBQyxRQUFRLEdBQUcsQ0FBQyxDQUFDO2dCQUNwQixDQUFDO3FCQUFNLElBQUksS0FBSyxDQUFDLGNBQWMsSUFBSSxDQUFDLElBQUksS0FBSyxDQUFDLFlBQVksSUFBSSxDQUFDLEVBQUUsQ0FBQztvQkFDaEUsS0FBSyxDQUFDLGlCQUFpQixDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztvQkFDOUIsSUFBSSxDQUFDLFFBQVEsR0FBRyxDQUFDLENBQUM7Z0JBQ3BCLENBQUM7cUJBQU0sSUFBSSxLQUFLLENBQUMsY0FBYyxJQUFJLENBQUMsSUFBSSxLQUFLLENBQUMsWUFBWSxJQUFJLEVBQUUsRUFBRSxDQUFDO29CQUNqRSxLQUFLLENBQUMsaUJBQWlCLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO29CQUM5QixJQUFJLENBQUMsUUFBUSxHQUFHLENBQUMsQ0FBQztnQkFDcEIsQ0FBQztxQkFBTSxJQUFJLEtBQUssQ0FBQyxjQUFjLElBQUksRUFBRSxJQUFJLEtBQUssQ0FBQyxZQUFZLElBQUksRUFBRSxFQUFFLENBQUM7b0JBQ2xFLEtBQUssQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUM7b0JBQy9CLElBQUksQ0FBQyxRQUFRLEdBQUcsQ0FBQyxDQUFDO2dCQUNwQixDQUFDO3FCQUFNLElBQUksS0FBSyxDQUFDLGNBQWMsSUFBSSxFQUFFLElBQUksS0FBSyxDQUFDLFlBQVksSUFBSSxFQUFFLEVBQUUsQ0FBQztvQkFDbEUsS0FBSyxDQUFDLGlCQUFpQixDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQztvQkFDaEMsSUFBSSxDQUFDLFFBQVEsR0FBRyxDQUFDLENBQUM7Z0JBQ3BCLENBQUM7cUJBQU0sSUFBSSxLQUFLLENBQUMsY0FBYyxJQUFJLEVBQUUsSUFBSSxLQUFLLENBQUMsWUFBWSxJQUFJLEVBQUUsRUFBRSxDQUFDO29CQUNsRSxLQUFLLENBQUMsaUJBQWlCLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDO29CQUNoQyxJQUFJLENBQUMsUUFBUSxHQUFHLENBQUMsQ0FBQztnQkFDcEIsQ0FBQztZQUNILENBQUM7aUJBQU0sSUFBSSxDQUFDLENBQUMsR0FBRyxDQUFDLFdBQVcsRUFBRSxJQUFJLEdBQUcsRUFBRSxDQUFDO2dCQUN0QyxJQUFJLEtBQUssQ0FBQyxjQUFjLElBQUksRUFBRSxJQUFJLEtBQUssQ0FBQyxZQUFZLElBQUksRUFBRSxFQUFFLENBQUM7b0JBQzNELE1BQU0sV0FBVyxHQUFHLElBQUksQ0FBQyxlQUFlLENBQUMsS0FBSyxDQUFDO29CQUMvQyxNQUFNLFVBQVUsR0FBRyxHQUFJLFdBQVksQ0FBQyxTQUFTLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBRSxJQUFJLENBQUM7b0JBQzFELElBQUksQ0FBQyxlQUFlLENBQUMsUUFBUSxDQUFDLFVBQVUsQ0FBQyxDQUFDO29CQUMxQyxJQUFJLENBQUMsWUFBWSxDQUFDLFFBQVEsQ0FBQzt3QkFDekIsR0FBRyxJQUFJLENBQUMsWUFBWSxDQUFDLEtBQUs7d0JBQzFCLElBQUksRUFBRSxNQUFNLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxTQUFTLENBQUMsY0FBZSxJQUFJLENBQUMsZUFBZSxDQUFDLEtBQU0sQ0FBQyxTQUFTLENBQUMsRUFBRSxDQUFFLEVBQUUsRUFBRSxJQUFJLENBQUMsQ0FBQztxQkFDMUcsQ0FBQyxDQUFDO29CQUNILElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQztvQkFDZCxLQUFLLENBQUMsaUJBQWlCLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDO2dCQUNsQyxDQUFDO1lBQ0gsQ0FBQztpQkFBTSxJQUFJLENBQUMsQ0FBQyxHQUFHLENBQUMsV0FBVyxFQUFFLElBQUksR0FBRyxFQUFFLENBQUM7Z0JBQ3RDLElBQUksS0FBSyxDQUFDLGNBQWMsSUFBSSxFQUFFLElBQUksS0FBSyxDQUFDLFlBQVksSUFBSSxFQUFFLEVBQUUsQ0FBQztvQkFDM0QsTUFBTSxXQUFXLEdBQUcsSUFBSSxDQUFDLGVBQWUsQ0FBQyxLQUFLLENBQUM7b0JBQy9DLE1BQU0sVUFBVSxHQUFHLEdBQUksV0FBWSxDQUFDLFNBQVMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFFLElBQUksQ0FBQztvQkFDMUQsSUFBSSxDQUFDLGVBQWUsQ0FBQyxRQUFRLENBQUMsVUFBVSxDQUFDLENBQUM7b0JBQzFDLElBQUksQ0FBQyxZQUFZLENBQUMsUUFBUSxDQUFDO3dCQUN6QixHQUFHLElBQUksQ0FBQyxZQUFZLENBQUMsS0FBSzt3QkFDMUIsSUFBSSxFQUFFLE1BQU0sQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLFNBQVMsQ0FBQyxjQUFlLElBQUksQ0FBQyxlQUFlLENBQUMsS0FBTSxDQUFDLFNBQVMsQ0FBQyxFQUFFLENBQUUsRUFBRSxFQUFFLElBQUksQ0FBQyxDQUFDO3FCQUMxRyxDQUFDLENBQUM7b0JBQ0gsSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDO29CQUNkLEtBQUssQ0FBQyxpQkFBaUIsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUM7Z0JBQ2xDLENBQUM7WUFDSCxDQUFDO2lCQUFNLElBQUksQ0FBQyxDQUFDLElBQUksSUFBSSxPQUFPLEVBQUUsQ0FBQztnQkFDN0IsTUFBTSxXQUFXLEdBQVcsSUFBSSxDQUFDLGVBQWUsQ0FBQyxLQUFNLENBQUM7Z0JBQ3hELE1BQU0sU0FBUyxHQUFXLElBQUksQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLFFBQVEsRUFBRSxDQUFDO2dCQUNwRCxNQUFNLFNBQVMsR0FBVyxJQUFJLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxRQUFRLEVBQUUsQ0FBQztnQkFDdEQsTUFBTSxVQUFVLEdBQVcsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsUUFBUSxFQUFFLENBQUM7Z0JBQ3RELE1BQU0sVUFBVSxHQUFXLFFBQVEsQ0FBQyxXQUFXLENBQUMsUUFBUSxDQUFDLEdBQUcsRUFBRSxFQUFFLElBQUksQ0FBQyxNQUFNLElBQUksRUFBRSxDQUFDLENBQUMsQ0FBQyxlQUFlLENBQUMsQ0FBQyxDQUFDLGVBQWUsQ0FBQyxDQUFDO2dCQUN2SCxNQUFNLENBQUMsR0FBVyxRQUFRLENBQUMsV0FBVyxDQUFDLFFBQVEsQ0FBQyxHQUFHLEVBQUUsRUFBRSxrQkFBa0IsQ0FBQyxDQUFDO2dCQUMzRSxNQUFNLGVBQWUsR0FBVyxRQUFRLENBQUMsVUFBVSxDQUFDLFFBQVEsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDLFFBQVEsRUFBRSxDQUFDLFFBQVEsQ0FBQyxDQUFDLEVBQUUsR0FBRyxDQUFDLENBQUM7Z0JBQ2hHLElBQUksS0FBSyxDQUFDLGNBQWMsSUFBSSxDQUFDLElBQUksS0FBSyxDQUFDLFlBQVksSUFBSSxDQUFDLEVBQUUsQ0FBQztvQkFDekQsTUFBTSxVQUFVLEdBQUcsR0FBSSxTQUFTLENBQUMsUUFBUSxDQUFDLENBQUMsRUFBRSxHQUFHLENBQUUsR0FBSSxXQUFXLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBRSxFQUFFLENBQUM7b0JBQ2xGLElBQUksQ0FBQyxlQUFlLENBQUMsUUFBUSxDQUFDLFVBQVUsQ0FBQyxDQUFDO29CQUMxQyxJQUFJLENBQUMsV0FBVyxDQUFDLFFBQVEsQ0FDdkI7d0JBQ0UsR0FBRyxJQUFJLENBQUMsV0FBVyxDQUFDLEtBQUs7d0JBQ3pCLEdBQUcsRUFBRSxJQUFJLENBQUMsS0FBSyxDQUFDLEdBQUc7cUJBQ3BCLEVBQ0QsRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFFLENBQ3JCLENBQUM7b0JBQ0YsS0FBSyxDQUFDLGlCQUFpQixDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztnQkFDaEMsQ0FBQztxQkFBTSxJQUFJLEtBQUssQ0FBQyxjQUFjLElBQUksQ0FBQyxJQUFJLEtBQUssQ0FBQyxZQUFZLElBQUksQ0FBQyxFQUFFLENBQUM7b0JBQ2hFLE1BQU0sVUFBVSxHQUFHLEdBQUksV0FBVyxDQUFDLFNBQVMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFFLEdBQUksU0FBUyxDQUFDLFFBQVEsQ0FBQyxDQUFDLEVBQUUsR0FBRyxDQUFFLEdBQUksV0FBVyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUUsRUFBRSxDQUFDO29CQUNsSCxJQUFJLENBQUMsZUFBZSxDQUFDLFFBQVEsQ0FBQyxVQUFVLENBQUMsQ0FBQztvQkFDMUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxRQUFRLENBQ3ZCO3dCQUNFLEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FBQyxLQUFLO3dCQUN6QixLQUFLLEVBQUUsSUFBSSxDQUFDLEtBQUssQ0FBQyxLQUFLO3FCQUN4QixFQUNELEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBRSxDQUNyQixDQUFDO29CQUNGLEtBQUssQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUM7Z0JBQ2pDLENBQUM7cUJBQU0sSUFBSSxLQUFLLENBQUMsY0FBYyxJQUFJLENBQUMsSUFBSSxLQUFLLENBQUMsWUFBWSxJQUFJLEVBQUUsRUFBRSxDQUFDO29CQUNqRSxNQUFNLFVBQVUsR0FBRyxHQUFJLFdBQVcsQ0FBQyxTQUFTLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBRSxHQUFJLFVBQVUsQ0FBQyxRQUFRLENBQUMsQ0FBQyxFQUFFLEdBQUcsQ0FBRSxHQUFJLFdBQVcsQ0FBQyxTQUFTLENBQUMsRUFBRSxDQUFFLEVBQUUsQ0FBQztvQkFDcEgsSUFBSSxDQUFDLGVBQWUsQ0FBQyxRQUFRLENBQUMsVUFBVSxDQUFDLENBQUM7b0JBQzFDLElBQUksQ0FBQyxXQUFXLENBQUMsUUFBUSxDQUN2Qjt3QkFDRSxHQUFHLElBQUksQ0FBQyxXQUFXLENBQUMsS0FBSzt3QkFDekIsSUFBSSxFQUFFLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSTtxQkFDdEIsRUFDRCxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQUUsQ0FDckIsQ0FBQztvQkFDRixLQUFLLENBQUMsaUJBQWlCLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDO2dCQUNsQyxDQUFDO3FCQUFNLElBQUksS0FBSyxDQUFDLGNBQWMsSUFBSSxFQUFFLElBQUksS0FBSyxDQUFDLFlBQVksSUFBSSxFQUFFLEVBQUUsQ0FBQztvQkFDbEUsSUFBSSxVQUFVLENBQUM7b0JBQ2YsSUFBSSxJQUFJLENBQUMsTUFBTSxJQUFJLEVBQUU7d0JBQUUsVUFBVSxHQUFHLEdBQUksV0FBVyxDQUFDLFNBQVMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFFLEdBQUksVUFBVyxHQUFJLFdBQVcsQ0FBQyxTQUFTLENBQUMsRUFBRSxDQUFFLEVBQUUsQ0FBQzt5QkFDaEgsSUFBSSxJQUFJLENBQUMsTUFBTSxJQUFJLEVBQUU7d0JBQ3hCLFVBQVUsR0FBRyxHQUFJLFdBQVcsQ0FBQyxTQUFTLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBRSxHQUFJLFVBQVcsR0FBSSxXQUFXLENBQUMsU0FBUyxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUUsR0FBSSxDQUFDLENBQUMsV0FBVyxFQUFHLEVBQUUsQ0FBQztvQkFFeEgsSUFBSSxDQUFDLGVBQWUsQ0FBQyxRQUFRLENBQUMsVUFBVyxDQUFDLENBQUM7b0JBQzNDLElBQUksQ0FBQyxZQUFZLENBQUMsUUFBUSxDQUFDO3dCQUN6QixHQUFHLElBQUksQ0FBQyxZQUFZLENBQUMsS0FBSzt3QkFDMUIsTUFBTSxFQUFFLElBQUksQ0FBQyxZQUFZLENBQUMsS0FBSyxDQUFDLE1BQU0sSUFBSSxJQUFJLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQzt3QkFDbkYsSUFBSSxFQUFFLElBQUksQ0FBQyxNQUFNLElBQUksRUFBRSxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxVQUFVLENBQUMsR0FBRyxFQUFFO3FCQUN2RSxDQUFDLENBQUM7b0JBQ0gsS0FBSyxDQUFDLGlCQUFpQixDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQztnQkFDbEMsQ0FBQztxQkFBTSxJQUFJLEtBQUssQ0FBQyxjQUFjLElBQUksRUFBRSxJQUFJLEtBQUssQ0FBQyxZQUFZLElBQUksRUFBRSxFQUFFLENBQUM7b0JBQ2xFLE1BQU0sVUFBVSxHQUFHLEdBQUksV0FBVyxDQUFDLFNBQVMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFFLEdBQUksZUFBZSxDQUFDLFFBQVEsQ0FBQyxDQUFDLEVBQUUsR0FBRyxDQUFFLEdBQUksV0FBVyxDQUFDLFNBQVMsQ0FBQyxFQUFFLENBQUUsRUFBRSxDQUFDO29CQUMxSCxJQUFJLENBQUMsZUFBZSxDQUFDLFFBQVEsQ0FBQyxVQUFVLENBQUMsQ0FBQztvQkFDMUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxRQUFRLENBQUM7d0JBQ3pCLEdBQUcsSUFBSSxDQUFDLFlBQVksQ0FBQyxLQUFLO3dCQUMxQixNQUFNLEVBQUUsTUFBTSxDQUFDLGVBQWUsQ0FBQztxQkFDaEMsQ0FBQyxDQUFDO29CQUNILElBQUksSUFBSSxDQUFDLE1BQU0sSUFBSSxFQUFFO3dCQUFFLEtBQUssQ0FBQyxpQkFBaUIsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUM7O3dCQUNsRCxLQUFLLENBQUMsaUJBQWlCLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDO2dCQUN2QyxDQUFDO2dCQUNELElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQztZQUNoQixDQUFDO2lCQUFNLElBQUksQ0FBQyxDQUFDLEdBQUcsSUFBSSxPQUFPLElBQUksQ0FBQyxDQUFDLEdBQUcsSUFBSSxXQUFXLEVBQUUsQ0FBQztnQkFDcEQsSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDO1lBQ2hCLENBQUM7aUJBQU0sSUFBSSxDQUFDLENBQUMsR0FBRyxJQUFJLFNBQVMsRUFBRSxDQUFDO2dCQUM5QixJQUFJLENBQUMsTUFBTSxFQUFFLENBQUM7WUFDaEIsQ0FBQztpQkFBTSxJQUFJLENBQUMsQ0FBQyxHQUFHLElBQUksUUFBUSxFQUFFLENBQUM7Z0JBQzdCLElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQztZQUNyQixDQUFDO2lCQUFNLElBQUksQ0FBQyxDQUFDLEdBQUcsSUFBSSxXQUFXLEVBQUUsQ0FBQztnQkFDaEMsSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDO1lBQ2pCLENBQUM7UUFDSCxDQUFDO0lBQ0gsQ0FBQztJQUVELE1BQU07UUFDSixJQUFJLElBQUksQ0FBQyxJQUFJLElBQUksU0FBUyxFQUFFLENBQUM7WUFDM0IsSUFBSSxJQUFJLENBQUMsSUFBSSxDQUFDLFFBQVEsSUFBSSxJQUFJLENBQUMsSUFBSSxDQUFDLFFBQVEsRUFBRSxDQUFDO2dCQUM3QyxJQUFJLElBQUksQ0FBQyxhQUFhLElBQUksU0FBUyxFQUFFLENBQUM7b0JBQ3BDLElBQUksQ0FBQyxhQUFhLENBQUMsS0FBSyxFQUFFLENBQUM7Z0JBQzdCLENBQUM7WUFDSCxDQUFDO2lCQUFNLENBQUM7Z0JBQ04sSUFBSSxDQUFDLElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQztZQUNwQixDQUFDO1FBQ0gsQ0FBQzthQUFNLENBQUM7WUFDTixJQUFJLElBQUksQ0FBQyxhQUFhLElBQUksU0FBUyxFQUFFLENBQUM7Z0JBQ3BDLElBQUksQ0FBQyxhQUFhLENBQUMsS0FBSyxFQUFFLENBQUM7WUFDN0IsQ0FBQztpQkFBTSxDQUFDO2dCQUNOLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxFQUFFLENBQUM7WUFDckIsQ0FBQztRQUNILENBQUM7SUFDSCxDQUFDO0lBRUQsTUFBTTtRQUNKLElBQUksSUFBSSxDQUFDLElBQUksSUFBSSxTQUFTLEVBQUUsQ0FBQztZQUMzQixJQUFJLElBQUksQ0FBQyxJQUFJLENBQUMsUUFBUSxJQUFJLElBQUksQ0FBQyxJQUFJLENBQUMsUUFBUSxFQUFFLENBQUM7Z0JBQzdDLElBQUksSUFBSSxDQUFDLGFBQWEsSUFBSSxTQUFTLEVBQUUsQ0FBQztvQkFDcEMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxLQUFLLEVBQUUsQ0FBQztnQkFDN0IsQ0FBQztZQUNILENBQUM7aUJBQU0sQ0FBQztnQkFDTixJQUFJLENBQUMsSUFBSSxDQUFDLEtBQUssRUFBRSxDQUFDO1lBQ3BCLENBQUM7UUFDSCxDQUFDO2FBQU0sQ0FBQztZQUNOLElBQUksSUFBSSxDQUFDLGFBQWEsSUFBSSxTQUFTLEVBQUUsQ0FBQztnQkFDcEMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxLQUFLLEVBQUUsQ0FBQztZQUM3QixDQUFDO2lCQUFNLENBQUM7Z0JBQ04sSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLEVBQUUsQ0FBQztZQUNyQixDQUFDO1FBQ0gsQ0FBQztJQUNILENBQUM7SUFFRCxXQUFXO1FBQ1QsSUFBSSxDQUFDLFFBQVEsR0FBRyxDQUFDLENBQUM7UUFDbEIsSUFBSSxDQUFDLFlBQVksQ0FBQyxRQUFRLENBQ3hCO1lBQ0UsSUFBSSxFQUFFLElBQUk7WUFDVixNQUFNLEVBQUUsSUFBSTtTQUNiLEVBQ0QsRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFFLENBQ3JCLENBQUM7UUFDRixJQUFJLENBQUMsV0FBVyxDQUFDLFFBQVEsQ0FDdkI7WUFDRSxJQUFJLEVBQUUsSUFBSTtZQUNWLEtBQUssRUFBRSxJQUFJO1lBQ1gsR0FBRyxFQUFFLElBQUk7U0FDVixFQUNELEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBRSxDQUNyQixDQUFDO1FBQ0YsSUFBSSxJQUFJLENBQUMsTUFBTSxJQUFJLEVBQUU7WUFBRSxJQUFJLENBQUMsZUFBZSxDQUFDLFFBQVEsQ0FBQyxxQkFBcUIsQ0FBQyxDQUFDO2FBQ3ZFLElBQUksSUFBSSxDQUFDLE1BQU0sSUFBSSxFQUFFO1lBQUUsSUFBSSxDQUFDLGVBQWUsQ0FBQyxRQUFRLENBQUMsa0JBQWtCLENBQUMsQ0FBQztRQUM5RSxJQUFJLENBQUMsYUFBYSxDQUFDLGFBQWEsQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7UUFDekQsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUNwQixJQUFJLENBQUMsT0FBTyxFQUFFLENBQUM7SUFDakIsQ0FBQztJQUVELE9BQU87UUFDTCxJQUFJLElBQUksQ0FBQyxhQUFhLENBQUMsYUFBYSxDQUFDLGNBQWMsSUFBSSxDQUFDLElBQUksSUFBSSxDQUFDLGFBQWEsQ0FBQyxhQUFhLENBQUMsWUFBWSxJQUFJLENBQUMsRUFBRSxDQUFDO1lBQy9HLElBQUksQ0FBQyxXQUFXLENBQUMsUUFBUSxDQUN2QjtnQkFDRSxHQUFHLElBQUksQ0FBQyxXQUFXLENBQUMsS0FBSztnQkFDekIsR0FBRyxFQUFFLElBQUk7YUFDVixFQUNELEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBRSxDQUNyQixDQUFDO1lBQ0YsSUFBSSxDQUFDLGVBQWUsQ0FBQyxRQUFRLENBQUMsS0FBTSxJQUFJLENBQUMsZUFBZSxDQUFDLEtBQU0sQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFFLEVBQUUsQ0FBQyxDQUFDO1lBQ2pGLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLENBQUM7WUFDcEIsSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDO1lBQ2YsSUFBSSxDQUFDLGFBQWEsQ0FBQyxhQUFhLENBQUMsaUJBQWlCLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO1lBQ3pELElBQUksQ0FBQyxRQUFRLEdBQUcsQ0FBQyxDQUFDO1FBQ3BCLENBQUM7YUFBTSxJQUFJLElBQUksQ0FBQyxhQUFhLENBQUMsYUFBYSxDQUFDLGNBQWMsSUFBSSxDQUFDLElBQUksSUFBSSxDQUFDLGFBQWEsQ0FBQyxhQUFhLENBQUMsWUFBWSxJQUFJLENBQUMsRUFBRSxDQUFDO1lBQ3RILElBQUksQ0FBQyxXQUFXLENBQUMsUUFBUSxDQUN2QjtnQkFDRSxHQUFHLElBQUksQ0FBQyxXQUFXLENBQUMsS0FBSztnQkFDekIsS0FBSyxFQUFFLElBQUk7YUFDWixFQUNELEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBRSxDQUNyQixDQUFDO1lBQ0YsSUFBSSxDQUFDLGVBQWUsQ0FBQyxRQUFRLENBQUMsR0FBSSxJQUFJLENBQUMsZUFBZSxDQUFDLEtBQU0sQ0FBQyxTQUFTLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBRSxLQUFNLElBQUksQ0FBQyxlQUFlLENBQUMsS0FBTSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUUsRUFBRSxDQUFDLENBQUM7WUFDakksSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsQ0FBQztZQUNwQixJQUFJLENBQUMsT0FBTyxFQUFFLENBQUM7WUFDZixJQUFJLENBQUMsYUFBYSxDQUFDLGFBQWEsQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7WUFDekQsSUFBSSxDQUFDLFFBQVEsR0FBRyxDQUFDLENBQUM7UUFDcEIsQ0FBQzthQUFNLElBQUksSUFBSSxDQUFDLGFBQWEsQ0FBQyxhQUFhLENBQUMsY0FBYyxJQUFJLENBQUMsSUFBSSxJQUFJLENBQUMsYUFBYSxDQUFDLGFBQWEsQ0FBQyxZQUFZLElBQUksRUFBRSxFQUFFLENBQUM7WUFDdkgsSUFBSSxDQUFDLFdBQVcsQ0FBQyxRQUFRLENBQ3ZCO2dCQUNFLEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FBQyxLQUFLO2dCQUN6QixJQUFJLEVBQUUsSUFBSTthQUNYLEVBQ0QsRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFFLENBQ3JCLENBQUM7WUFDRixJQUFJLENBQUMsZUFBZSxDQUFDLFFBQVEsQ0FBQyxHQUFJLElBQUksQ0FBQyxlQUFlLENBQUMsS0FBTSxDQUFDLFNBQVMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFFLE9BQVEsSUFBSSxDQUFDLGVBQWUsQ0FBQyxLQUFNLENBQUMsU0FBUyxDQUFDLEVBQUUsQ0FBRSxFQUFFLENBQUMsQ0FBQztZQUNwSSxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxDQUFDO1lBQ3BCLElBQUksQ0FBQyxPQUFPLEVBQUUsQ0FBQztZQUNmLElBQUksQ0FBQyxhQUFhLENBQUMsYUFBYSxDQUFDLGlCQUFpQixDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQztZQUMxRCxJQUFJLENBQUMsUUFBUSxHQUFHLENBQUMsQ0FBQztRQUNwQixDQUFDO2FBQU0sSUFBSSxJQUFJLENBQUMsYUFBYSxDQUFDLGFBQWEsQ0FBQyxjQUFjLElBQUksRUFBRSxJQUFJLElBQUksQ0FBQyxhQUFhLENBQUMsYUFBYSxDQUFDLFlBQVksSUFBSSxFQUFFLEVBQUUsQ0FBQztZQUN4SCxJQUFJLENBQUMsWUFBWSxDQUFDLFFBQVEsQ0FDeEI7Z0JBQ0UsR0FBRyxJQUFJLENBQUMsV0FBVyxDQUFDLEtBQUs7Z0JBQ3pCLElBQUksRUFBRSxJQUFJO2FBQ1gsRUFDRCxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQUUsQ0FDckIsQ0FBQztZQUNGLElBQUksQ0FBQyxlQUFlLENBQUMsUUFBUSxDQUFDLEdBQUksSUFBSSxDQUFDLGVBQWUsQ0FBQyxLQUFNLENBQUMsU0FBUyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUUsS0FBTSxJQUFJLENBQUMsZUFBZSxDQUFDLEtBQU0sQ0FBQyxTQUFTLENBQUMsRUFBRSxDQUFFLEVBQUUsQ0FBQyxDQUFDO1lBQ25JLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLENBQUM7WUFDcEIsSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDO1lBQ2YsSUFBSSxDQUFDLGFBQWEsQ0FBQyxhQUFhLENBQUMsaUJBQWlCLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDO1lBQzNELElBQUksQ0FBQyxRQUFRLEdBQUcsQ0FBQyxDQUFDO1FBQ3BCLENBQUM7YUFBTSxJQUFJLElBQUksQ0FBQyxhQUFhLENBQUMsYUFBYSxDQUFDLGNBQWMsSUFBSSxFQUFFLElBQUksSUFBSSxDQUFDLGFBQWEsQ0FBQyxhQUFhLENBQUMsWUFBWSxJQUFJLEVBQUUsRUFBRSxDQUFDO1lBQ3hILElBQUksQ0FBQyxZQUFZLENBQUMsUUFBUSxDQUN4QjtnQkFDRSxHQUFHLElBQUksQ0FBQyxXQUFXLENBQUMsS0FBSztnQkFDekIsTUFBTSxFQUFFLElBQUk7YUFDYixFQUNELEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBRSxDQUNyQixDQUFDO1lBQ0YsSUFBSSxDQUFDLGVBQWUsQ0FBQyxRQUFRLENBQUMsR0FBSSxJQUFJLENBQUMsZUFBZSxDQUFDLEtBQU0sQ0FBQyxTQUFTLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBRSxLQUFNLElBQUksQ0FBQyxlQUFlLENBQUMsS0FBTSxDQUFDLFNBQVMsQ0FBQyxFQUFFLENBQUUsRUFBRSxDQUFDLENBQUM7WUFDbkksSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsQ0FBQztZQUNwQixJQUFJLENBQUMsT0FBTyxFQUFFLENBQUM7WUFDZixJQUFJLENBQUMsYUFBYSxDQUFDLGFBQWEsQ0FBQyxpQkFBaUIsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUM7WUFDM0QsSUFBSSxDQUFDLFFBQVEsR0FBRyxDQUFDLENBQUM7UUFDcEIsQ0FBQztJQUNILENBQUM7SUFDRCxjQUFjLENBQUUsQ0FBTTtRQUNwQixDQUFDLENBQUMsY0FBYyxFQUFFLENBQUM7UUFDbkIsT0FBTyxLQUFLLENBQUM7SUFDZixDQUFDO0lBRUQsT0FBTyxDQUFFLENBQVEsRUFBRSxLQUF1QjtRQUN4QyxDQUFDLENBQUMsY0FBYyxFQUFFLENBQUM7UUFFbkIsSUFBSSxJQUFJLENBQUMsUUFBUTtZQUFFLE9BQU87UUFFMUIsSUFBSSxLQUFLLENBQUMsY0FBYyxJQUFJLENBQUMsSUFBSSxLQUFLLENBQUMsY0FBYyxJQUFJLENBQUMsSUFBSSxLQUFLLENBQUMsY0FBYyxJQUFJLENBQUMsRUFBRSxDQUFDO1lBQ3hGLE1BQU0sT0FBTyxHQUFHLFVBQVUsQ0FBQyxHQUFHLEVBQUU7Z0JBQzlCLEtBQUssQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7Z0JBQzlCLElBQUksQ0FBQyxRQUFRLEdBQUcsQ0FBQyxDQUFDO2dCQUNsQixZQUFZLENBQUMsT0FBTyxDQUFDLENBQUM7WUFDeEIsQ0FBQyxFQUFFLEdBQUcsQ0FBQyxDQUFDO1FBQ1YsQ0FBQzthQUFNLElBQUksS0FBSyxDQUFDLGNBQWMsSUFBSSxDQUFDLElBQUksS0FBSyxDQUFDLGNBQWMsSUFBSSxDQUFDLElBQUksS0FBSyxDQUFDLGNBQWMsSUFBSSxDQUFDLEVBQUUsQ0FBQztZQUMvRixNQUFNLE9BQU8sR0FBRyxVQUFVLENBQUMsR0FBRyxFQUFFO2dCQUM5QixLQUFLLENBQUMsaUJBQWlCLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO2dCQUM5QixJQUFJLENBQUMsUUFBUSxHQUFHLENBQUMsQ0FBQztnQkFDbEIsWUFBWSxDQUFDLE9BQU8sQ0FBQyxDQUFDO1lBQ3hCLENBQUMsRUFBRSxHQUFHLENBQUMsQ0FBQztRQUNWLENBQUM7YUFBTSxJQUNMLEtBQUssQ0FBQyxjQUFjLElBQUksQ0FBQztZQUN6QixLQUFLLENBQUMsY0FBYyxJQUFJLENBQUM7WUFDekIsS0FBSyxDQUFDLGNBQWMsSUFBSSxDQUFDO1lBQ3pCLEtBQUssQ0FBQyxjQUFjLElBQUksQ0FBQztZQUN6QixLQUFLLENBQUMsY0FBYyxJQUFJLEVBQUUsRUFDMUIsQ0FBQztZQUNELE1BQU0sT0FBTyxHQUFHLFVBQVUsQ0FBQyxHQUFHLEVBQUU7Z0JBQzlCLEtBQUssQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUM7Z0JBQy9CLElBQUksQ0FBQyxRQUFRLEdBQUcsQ0FBQyxDQUFDO2dCQUNsQixZQUFZLENBQUMsT0FBTyxDQUFDLENBQUM7WUFDeEIsQ0FBQyxFQUFFLEdBQUcsQ0FBQyxDQUFDO1FBQ1YsQ0FBQzthQUFNLElBQUksS0FBSyxDQUFDLGNBQWMsSUFBSSxFQUFFLElBQUksS0FBSyxDQUFDLGNBQWMsSUFBSSxFQUFFLElBQUksS0FBSyxDQUFDLGNBQWMsSUFBSSxFQUFFLEVBQUUsQ0FBQztZQUNsRyxNQUFNLE9BQU8sR0FBRyxVQUFVLENBQUMsR0FBRyxFQUFFO2dCQUM5QixLQUFLLENBQUMsaUJBQWlCLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDO2dCQUNoQyxJQUFJLENBQUMsUUFBUSxHQUFHLENBQUMsQ0FBQztnQkFDbEIsWUFBWSxDQUFDLE9BQU8sQ0FBQyxDQUFDO1lBQ3hCLENBQUMsRUFBRSxHQUFHLENBQUMsQ0FBQztRQUNWLENBQUM7YUFBTSxJQUFJLEtBQUssQ0FBQyxjQUFjLElBQUksRUFBRSxJQUFJLEtBQUssQ0FBQyxjQUFjLElBQUksRUFBRSxJQUFJLEtBQUssQ0FBQyxjQUFjLElBQUksRUFBRSxFQUFFLENBQUM7WUFDbEcsTUFBTSxPQUFPLEdBQUcsVUFBVSxDQUFDLEdBQUcsRUFBRTtnQkFDOUIsS0FBSyxDQUFDLGlCQUFpQixDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQztnQkFDaEMsSUFBSSxDQUFDLFFBQVEsR0FBRyxDQUFDLENBQUM7Z0JBQ2xCLFlBQVksQ0FBQyxPQUFPLENBQUMsQ0FBQztZQUN4QixDQUFDLEVBQUUsR0FBRyxDQUFDLENBQUM7UUFDVixDQUFDO2FBQU0sSUFBSSxLQUFLLENBQUMsY0FBYyxJQUFJLEVBQUUsSUFBSSxLQUFLLENBQUMsY0FBYyxJQUFJLEVBQUUsSUFBSSxLQUFLLENBQUMsY0FBYyxJQUFJLEVBQUUsRUFBRSxDQUFDO1lBQ2xHLE1BQU0sT0FBTyxHQUFHLFVBQVUsQ0FBQyxHQUFHLEVBQUU7Z0JBQzlCLEtBQUssQ0FBQyxpQkFBaUIsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUM7Z0JBQ2hDLElBQUksQ0FBQyxRQUFRLEdBQUcsQ0FBQyxDQUFDO2dCQUNsQixZQUFZLENBQUMsT0FBTyxDQUFDLENBQUM7WUFDeEIsQ0FBQyxFQUFFLEdBQUcsQ0FBQyxDQUFDO1FBQ1YsQ0FBQzthQUFNLENBQUM7WUFDTixNQUFNLE9BQU8sR0FBRyxVQUFVLENBQUMsR0FBRyxFQUFFO2dCQUM5QixLQUFLLENBQUMsaUJBQWlCLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO2dCQUM5QixJQUFJLENBQUMsUUFBUSxHQUFHLENBQUMsQ0FBQztnQkFDbEIsWUFBWSxDQUFDLE9BQU8sQ0FBQyxDQUFDO1lBQ3hCLENBQUMsRUFBRSxHQUFHLENBQUMsQ0FBQztRQUNWLENBQUM7SUFDSCxDQUFDO0lBQ0QsSUFBSSxDQUFFLENBQXFCO1FBQ3pCLElBQUksSUFBSSxDQUFDLGVBQWUsQ0FBQyxLQUFLLElBQUkscUJBQXFCLElBQUksSUFBSSxDQUFDLGVBQWUsQ0FBQyxLQUFLLElBQUksa0JBQWtCLEVBQUUsQ0FBQztZQUM1RyxJQUFJLENBQUMsWUFBWSxDQUFDLFFBQVEsQ0FBQztnQkFDekIsSUFBSSxFQUFFLElBQUksSUFBSSxFQUFFLENBQUMsUUFBUSxFQUFFO2dCQUMzQixNQUFNLEVBQUUsSUFBSSxJQUFJLEVBQUUsQ0FBQyxVQUFVLEVBQUU7Z0JBQy9CLE1BQU0sRUFBRSxJQUFJLElBQUksRUFBRSxDQUFDLFVBQVUsRUFBRTthQUNoQyxDQUFDLENBQUM7WUFDSCxJQUFJLENBQUMsV0FBVyxDQUFDLFFBQVEsQ0FBQztnQkFDeEIsSUFBSSxFQUFFLElBQUksSUFBSSxFQUFFLENBQUMsV0FBVyxFQUFFO2dCQUM5QixLQUFLLEVBQUUsSUFBSSxJQUFJLEVBQUUsQ0FBQyxRQUFRLEVBQUUsR0FBRyxDQUFDO2dCQUNoQyxHQUFHLEVBQUUsSUFBSSxJQUFJLEVBQUUsQ0FBQyxPQUFPLEVBQUU7Z0JBQ3pCLEdBQUcsSUFBSSxDQUFDLFlBQVksQ0FBQyxLQUFLO2FBQzNCLENBQUMsQ0FBQztZQUNILE1BQU0sS0FBSyxHQUFHLElBQUksYUFBYSxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxLQUFLLEVBQUUsSUFBSSxDQUFDLFlBQVksQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDO1lBQ2hHLElBQUksQ0FBQyxlQUFlLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsU0FBUyxDQUFDLEtBQUssQ0FBQyxRQUFRLEVBQUUsRUFBRSxJQUFJLENBQUMsWUFBWSxDQUFDLENBQUMsQ0FBQztZQUM3RixJQUFJLENBQUMsTUFBTSxFQUFFLENBQUM7UUFDaEIsQ0FBQztJQUNILENBQUM7SUFFRCxRQUFRLENBQUUsS0FBVTtRQUNsQixJQUFJLEtBQUssQ0FBQyxNQUFNLENBQUMsU0FBUyxJQUFJLFNBQVMsRUFBRSxDQUFDO1lBQ3hDLElBQUksQ0FBQyxhQUFhLEVBQUUsS0FBSyxFQUFFLENBQUM7WUFDNUIsSUFBSSxJQUFJLENBQUMsZ0JBQWdCLEVBQUUsQ0FBQztnQkFDMUIsSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDO1lBQ2hCLENBQUM7UUFDSCxDQUFDO0lBQ0gsQ0FBQzsrR0FwaUNVLCtCQUErQjttR0FBL0IsK0JBQStCLHVtQkFoQi9CO1lBQ1Q7Z0JBQ0UsT0FBTyxFQUFFLGlCQUFpQjtnQkFDMUIsS0FBSyxFQUFFLElBQUk7Z0JBQ1gsV0FBVyxFQUFFLCtCQUErQjthQUM3QztZQUNEO2dCQUNFLE9BQU8sRUFBRSxhQUFhO2dCQUN0QixXQUFXLEVBQUUsVUFBVSxDQUFDLEdBQUcsRUFBRSxDQUFDLCtCQUErQixDQUFDO2dCQUM5RCxLQUFLLEVBQUUsSUFBSTthQUNaO1lBQ0QsSUFBSTtZQUNKLEVBQUUsT0FBTyxFQUFFLGlCQUFpQixFQUFFLFFBQVEsRUFBRSxvQkFBb0IsRUFBRTtZQUM5RCxFQUFFLE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxRQUFRLEVBQUUsc0JBQXNCLEVBQUU7U0FDdEUsaWFDdkRILHUrR0ErRUE7OzRGRHRCYSwrQkFBK0I7a0JBcEIzQyxTQUFTOytCQUNFLDJCQUEyQixhQUcxQjt3QkFDVDs0QkFDRSxPQUFPLEVBQUUsaUJBQWlCOzRCQUMxQixLQUFLLEVBQUUsSUFBSTs0QkFDWCxXQUFXLGlDQUFpQzt5QkFDN0M7d0JBQ0Q7NEJBQ0UsT0FBTyxFQUFFLGFBQWE7NEJBQ3RCLFdBQVcsRUFBRSxVQUFVLENBQUMsR0FBRyxFQUFFLGdDQUFnQyxDQUFDOzRCQUM5RCxLQUFLLEVBQUUsSUFBSTt5QkFDWjt3QkFDRCxJQUFJO3dCQUNKLEVBQUUsT0FBTyxFQUFFLGlCQUFpQixFQUFFLFFBQVEsRUFBRSxvQkFBb0IsRUFBRTt3QkFDOUQsRUFBRSxPQUFPLEVBQUUsc0JBQXNCLEVBQUUsUUFBUSxFQUFFLHNCQUFzQixFQUFFO3FCQUN0RTt3REFRMkIsYUFBYTtzQkFBeEMsU0FBUzt1QkFBQyxlQUFlO2dCQUNKLE9BQU87c0JBQTVCLFNBQVM7dUJBQUMsU0FBUztnQkFDRyxRQUFRO3NCQUE5QixTQUFTO3VCQUFDLFVBQVU7Z0JBQ0osYUFBYTtzQkFBN0IsU0FBUzt1QkFBQyxJQUFJO2dCQU9OLEtBQUs7c0JBQWIsS0FBSztnQkFNRyxTQUFTO3NCQUFqQixLQUFLO2dCQUNHLFFBQVE7c0JBQWhCLEtBQUs7Z0JBTUcsUUFBUTtzQkFBaEIsS0FBSztnQkFDRyxnQkFBZ0I7c0JBQXhCLEtBQUs7Z0JBQ0csY0FBYztzQkFBdEIsS0FBSztnQkFDRyxTQUFTO3NCQUFqQixLQUFLO2dCQU1HLE1BQU07c0JBQWQsS0FBSztnQkFJRyxJQUFJO3NCQUFaLEtBQUs7Z0JBSUcsYUFBYTtzQkFBckIsS0FBSztnQkFDRyxTQUFTO3NCQUFqQixLQUFLO2dCQUNHLGFBQWE7c0JBQXJCLEtBQUs7Z0JBSUcsSUFBSTtzQkFBWixLQUFLO2dCQUlHLGFBQWE7c0JBQXJCLEtBQUs7Z0JBQ0csYUFBYTtzQkFBckIsS0FBSztnQkFDRyxnQkFBZ0I7c0JBQXhCLEtBQUs7Z0JBTUcsU0FBUztzQkFBakIsS0FBSztnQkFRRyxpQkFBaUI7c0JBQXpCLEtBQUs7Z0JBQ0csUUFBUTtzQkFBaEIsS0FBSztnQkFDSSxNQUFNO3NCQUFmLE1BQU07Z0JBQ0csTUFBTTtzQkFBZixNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRGF0ZVBpcGUgfSBmcm9tIFwiQGFuZ3VsYXIvY29tbW9uXCI7XHJcbmltcG9ydCB7XHJcbiAgQ2hhbmdlRGV0ZWN0b3JSZWYsXHJcbiAgQ29tcG9uZW50LFxyXG4gIEVsZW1lbnRSZWYsXHJcbiAgRXZlbnRFbWl0dGVyLFxyXG4gIElucHV0LFxyXG4gIE9uQ2hhbmdlcyxcclxuICBPbkluaXQsXHJcbiAgT3V0cHV0LFxyXG4gIFNpbXBsZUNoYW5nZXMsXHJcbiAgVmlld0NoaWxkLFxyXG4gIGZvcndhcmRSZWYsXHJcbiAgaW5qZWN0LFxyXG4gIGlucHV0LFxyXG4gIHZpZXdDaGlsZCxcclxufSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xyXG5pbXBvcnQge1xyXG4gIEFic3RyYWN0Q29udHJvbCxcclxuICBDb250cm9sVmFsdWVBY2Nlc3NvcixcclxuICBGb3JtQ29udHJvbCxcclxuICBOR19WQUxJREFUT1JTLFxyXG4gIE5HX1ZBTFVFX0FDQ0VTU09SLFxyXG4gIFVudHlwZWRGb3JtQ29udHJvbCxcclxuICBWYWxpZGF0aW9uRXJyb3JzLFxyXG59IGZyb20gXCJAYW5ndWxhci9mb3Jtc1wiO1xyXG5pbXBvcnQgeyBOZ2JDYWxlbmRhciwgTmdiRGF0ZVBhcnNlckZvcm1hdHRlciwgTmdiRGF0ZXBpY2tlckkxOG4sIE5nYklucHV0RGF0ZXBpY2tlciB9IGZyb20gXCJAbmctYm9vdHN0cmFwL25nLWJvb3RzdHJhcFwiO1xyXG5pbXBvcnQgeyBDdXN0b21EYXRlcGlja2VyRm9ybWF0IH0gZnJvbSBcIi4uL2RhdGUtcGlja2VyL0N1c3RvbURhdGVQaWNrZXJGb3JtYXRcIjtcclxuaW1wb3J0IHsgQ3VzdG9tRGF0ZXBpY2tlckkxOG4sIEkxOG4gfSBmcm9tIFwiLi4vZGF0ZS1waWNrZXIvQ3VzdG9tRGF0ZVBpY2tlckkxOG5cIjtcclxuaW1wb3J0IHsgRGF0ZVRpbWVNb2RlbCB9IGZyb20gXCIuLi91dGlscy9EYXRlVGltZU1vZGVsXCI7XHJcbmltcG9ydCB7IGZvcm1hdEhvdXIgfSBmcm9tIFwiLi4vdXRpbHMvRGF0ZVRpbWVQaWNrZXJFZGl0YWJsZVwiO1xyXG5pbXBvcnQgeyBEYXRlVXRpbCB9IGZyb20gXCIuLi91dGlscy9EYXRlVXRpbFwiO1xyXG5pbXBvcnQgeyBEYXRlVGltZVBpY2tlckVkaXRhYmxlU2VydmljZSB9IGZyb20gXCIuL2RhdGUtdGltZS1waWNrZXItZWRpdGFibGUuc2VydmljZVwiO1xyXG5cclxuY29uc3QgTUFTS18xMl9IT1VSUyA9IFwiZGQvbW0veXl5eSAtLTotLSAtLVwiO1xyXG5jb25zdCBNQVNLXzI0X0hPVVJTID0gXCJkZC9tbS95eXl5IC0tOi0tXCI7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogXCJkYXRlLXRpbWUtcGlja2VyLWVkaXRhYmxlXCIsXHJcbiAgdGVtcGxhdGVVcmw6IFwiLi9kYXRlLXRpbWUtcGlja2VyLWVkaXRhYmxlLmNvbXBvbmVudC5odG1sXCIsXHJcbiAgc3R5bGVVcmxzOiBbXCIuL2RhdGUtdGltZS1waWNrZXItZWRpdGFibGUuY29tcG9uZW50LnNjc3NcIl0sXHJcbiAgcHJvdmlkZXJzOiBbXHJcbiAgICB7XHJcbiAgICAgIHByb3ZpZGU6IE5HX1ZBTFVFX0FDQ0VTU09SLFxyXG4gICAgICBtdWx0aTogdHJ1ZSxcclxuICAgICAgdXNlRXhpc3Rpbmc6IERhdGVUaW1lUGlja2VyRWRpdGFibGVDb21wb25lbnQsXHJcbiAgICB9LFxyXG4gICAge1xyXG4gICAgICBwcm92aWRlOiBOR19WQUxJREFUT1JTLFxyXG4gICAgICB1c2VFeGlzdGluZzogZm9yd2FyZFJlZigoKSA9PiBEYXRlVGltZVBpY2tlckVkaXRhYmxlQ29tcG9uZW50KSxcclxuICAgICAgbXVsdGk6IHRydWUsXHJcbiAgICB9LFxyXG4gICAgSTE4bixcclxuICAgIHsgcHJvdmlkZTogTmdiRGF0ZXBpY2tlckkxOG4sIHVzZUNsYXNzOiBDdXN0b21EYXRlcGlja2VySTE4biB9LFxyXG4gICAgeyBwcm92aWRlOiBOZ2JEYXRlUGFyc2VyRm9ybWF0dGVyLCB1c2VDbGFzczogQ3VzdG9tRGF0ZXBpY2tlckZvcm1hdCB9LFxyXG4gIF0sXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBEYXRlVGltZVBpY2tlckVkaXRhYmxlQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBDb250cm9sVmFsdWVBY2Nlc3NvciwgT25DaGFuZ2VzIHtcclxuICBwcml2YXRlIF9kYXRlUGlwZSA9IGluamVjdChEYXRlUGlwZSk7XHJcbiAgcHJpdmF0ZSBfY2FsZW5kYXIgPSBpbmplY3QoTmdiQ2FsZW5kYXIpO1xyXG4gIHByaXZhdGUgX2RhdGVUaW1lUGlja2VyRWRpdGFibGVTZXJ2aWNlID0gaW5qZWN0KERhdGVUaW1lUGlja2VyRWRpdGFibGVTZXJ2aWNlKTtcclxuICBwcml2YXRlIF9jZHJmID0gaW5qZWN0KENoYW5nZURldGVjdG9yUmVmKTtcclxuXHJcbiAgQFZpZXdDaGlsZChcImlucHV0RGF0ZVRpbWVcIikgaW5wdXREYXRlVGltZTogYW55O1xyXG4gIEBWaWV3Q2hpbGQoXCJidG5PcGVuXCIpIGJ0bk9wZW4hOiBFbGVtZW50UmVmO1xyXG4gIEBWaWV3Q2hpbGQoXCJidG5DbGVhblwiKSBidG5DbGVhbiE6IEVsZW1lbnRSZWY7XHJcbiAgQFZpZXdDaGlsZChcImQyXCIpIG5nYkRhdGVwaWNrZXIhOiBOZ2JJbnB1dERhdGVwaWNrZXI7XHJcblxyXG4gIC8qKlxyXG4gICAqIEBkZXNjcmlwdGlvbiBUZXh0byBzdXBlcmlvblxyXG4gICAqIEBkZWZhdWx0IG51bGxcclxuICAgKiBAdHlwZSBhbnlcclxuICAgKi9cclxuICBASW5wdXQoKSBsYWJlbDogc3RyaW5nID0gXCJcIjtcclxuICAvKipcclxuICAgKiBAZGVzY3JpcHRpb24gUGFyYW1ldHJvIGRlIGxhIHZpc3VhbGl6YWNpw7NuIGRlbCB0ZXh0byBzdXBlcmlvclxyXG4gICAqIEBkZWZhdWx0IHRydWVcclxuICAgKiBAdHlwZSBib29sZWFuXHJcbiAgICovXHJcbiAgQElucHV0KCkgc2hvd0xhYmVsOiBib29sZWFuID0gdHJ1ZTtcclxuICBASW5wdXQoKSByZWFkb25seTogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIC8qKlxyXG4gICAqIEBkZXNjcmlwdGlvbiBQYXJhbWV0cm8gZGUgY29udHJvbCByZXF1ZXJpZG9cclxuICAgKiBAZGVmYXVsdCBmYWxzZVxyXG4gICAqIEB0eXBlIGJvb2xlYW5cclxuICAgKi9cclxuICBASW5wdXQoKSByZXF1aXJlZDogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIEBJbnB1dCgpIHZhbGlkYXRvck1lc3NhZ2U6IGJvb2xlYW4gPSBmYWxzZTtcclxuICBASW5wdXQoKSB0b29sdGlwTWVzc2FnZTogYm9vbGVhbiA9IHRydWU7XHJcbiAgQElucHV0KCkgc3VibWl0dGVkOiBib29sZWFuID0gdHJ1ZTtcclxuICAvKipcclxuICAgKiBAZGVzY3JpcHRpb24gUGFyYW1ldHJvIGRlIGZvcm1hdG8gZGUgZmVjaGE6IDEyIHwgMTRcclxuICAgKiBAZGVmYXVsdCAyNFxyXG4gICAqIEB0eXBlIDEyIHwgMTRcclxuICAgKi9cclxuICBASW5wdXQoKSBmb3JtYXQ6IGZvcm1hdEhvdXIgPSAyNDtcclxuICAvKipcclxuICAgKiBAZGVzY3JpcHRpb24gUHLDs3hpbW8gY29udHJvbCBhIGhhY2VyIGZvY3VzXHJcbiAgICovXHJcbiAgQElucHV0KCkgbmV4dDogYW55O1xyXG4gIC8qKlxyXG4gICAqIEBkZXNjcmlwdGlvbiBQcsOzeGltbyBjb250cm9sIGEgaGFjZXIgZm9jdXMgZW4gY2FzbyBlbCBORVhUIGVzdMOpIGRlc2hhYmlsaXRhZG9cclxuICAgKi9cclxuICBASW5wdXQoKSBuZXh0SXNEaXNhYmxlOiBhbnk7XHJcbiAgQElucHV0KCkgbGFiZWxJbmZvOiBib29sZWFuID0gZmFsc2U7XHJcbiAgQElucHV0KCkgdGV4dExhYmVsSW5mbzogc3RyaW5nID0gXCJcIjtcclxuICAvKipcclxuICAgKiBAZGVzY3JpcHRpb24gQW50ZXJpb3IgY29udHJvbCBhIGhhY2VyIGZvY3VzXHJcbiAgICovXHJcbiAgQElucHV0KCkgYmFjazogYW55O1xyXG4gIC8qKlxyXG4gICAqIEBkZXNjcmlwdGlvbiBBbnRlcmlvciBjb250cm9sIGEgaGFjZXIgZm9jdXMgZW4gY2FzbyBlbCBCQUNLIGVzdMOpIGRlc2hhYmlsaXRhZG9cclxuICAgKi9cclxuICBASW5wdXQoKSBiYWNrSXNEaXNhYmxlOiBhbnk7XHJcbiAgQElucHV0KCkgb3BlbldoZW5Gb2N1czogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIEBJbnB1dCgpIGdvTmV4dFdoZW5TZWxlY3Q6IGJvb2xlYW4gPSBmYWxzZTtcclxuICAvKipcclxuICAgKiBAZGVzY3JpcHRpb24gUGFyYW1ldHJvIHBhcmEgbW9zdHJhciBlbCBib3TDs24gZGUgZWxpbWluYXJcclxuICAgKiBAZGVmYXVsdCBmYWxzZVxyXG4gICAqIEB0eXBlIGJvb2xlYW5cclxuICAgKi9cclxuICBASW5wdXQoKSBjbGVhcmFibGU6IGJvb2xlYW4gPSB0cnVlO1xyXG4gIC8qKlxyXG4gICAqIEBkZXNjcmlwdGlvbiBQYXJhbWV0cm8gZGUgYXV0b2NvbXBsZXRhZG86XHJcbiAgICogVHJ1ZTogYXV0b2NvbXBsZXRhIGNvbiBsYSBob3JhIMOzIG1pbnV0byBhY3R1YWxcclxuICAgKiBGYWxzZTogYXV0b2NvbXBsZXRhIGNvbiAwMDowMFxyXG4gICAqIEBkZWZhdWx0IGZhbHNlXHJcbiAgICogQHR5cGUgYm9vbGVhblxyXG4gICAqL1xyXG4gIEBJbnB1dCgpIGF1dG9Db21wbGV0ZUhvdXJzOiBib29sZWFuID0gZmFsc2U7XHJcbiAgQElucHV0KCkgZGlzYWJsZWQgPSBmYWxzZTtcclxuICBAT3V0cHV0KCkgb25OZXh0OiBFdmVudEVtaXR0ZXI8YW55PiA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcclxuICBAT3V0cHV0KCkgb25CYWNrOiBFdmVudEVtaXR0ZXI8YW55PiA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcclxuXHJcbiAgb25DaGFuZ2UgPSAoXzogYW55KSA9PiB7IH07XHJcbiAgb25Ub3VjaCA9ICgpID0+IHsgfTtcclxuICBvblZhbGlkYXRpb25DaGFuZ2UgPSAoKSA9PiB7IH07XHJcblxyXG4gIGNvbnRyb2xzOiBBYnN0cmFjdENvbnRyb2wgfCB1bmRlZmluZWQ7XHJcbiAgY29udGFkb3IgPSAwO1xyXG4gIHBvc2l0aW9uID0gMDtcclxuICBkYXRlVGltZUNvbnRyb2wgPSBuZXcgRm9ybUNvbnRyb2woXCJkZC9tbS95eXl5IC0tOi0tIC0tXCIpO1xyXG4gIGhvdXJzQ29udHJvbCA9IG5ldyBVbnR5cGVkRm9ybUNvbnRyb2woe1xyXG4gICAgaG91cjogbnVsbCxcclxuICAgIG1pbnV0ZTogbnVsbCxcclxuICB9KTtcclxuICBkYXRlQ29udHJvbCA9IG5ldyBVbnR5cGVkRm9ybUNvbnRyb2woe1xyXG4gICAgeWVhcjogbnVsbCxcclxuICAgIG1vbnRoOiBudWxsLFxyXG4gICAgZGF5OiBudWxsLFxyXG4gIH0pO1xyXG4gIHRvZGF5ID0gdGhpcy5fY2FsZW5kYXIuZ2V0VG9kYXkoKTtcclxuXHJcbiAgZ2V0IHN0cmluZ0Zvcm1hdCAoKTogc3RyaW5nIHtcclxuICAgIHJldHVybiB0aGlzLmZvcm1hdCA9PT0gMTIgPyBcImRkL01NL3l5eXkgaGg6bW0gYVwiIDogXCJkZC9NTS95eXl5IEhIOm1tXCI7XHJcbiAgfVxyXG5cclxuICBjb25zdHJ1Y3RvcigpIHtcclxuICAgIHRoaXMuc2hvd0xhYmVsID0gdGhpcy5fZGF0ZVRpbWVQaWNrZXJFZGl0YWJsZVNlcnZpY2UuZ2V0U2hvd0xhYmVsKCk7XHJcbiAgICB0aGlzLm9wZW5XaGVuRm9jdXMgPSB0aGlzLl9kYXRlVGltZVBpY2tlckVkaXRhYmxlU2VydmljZS5nZXRPcGVuV2hlbkZvY3VzKCk7XHJcbiAgICB0aGlzLmdvTmV4dFdoZW5TZWxlY3QgPSB0aGlzLl9kYXRlVGltZVBpY2tlckVkaXRhYmxlU2VydmljZS5nZXRHb05leHRXaGVuU2VsZWN0KCk7XHJcbiAgICB0aGlzLnZhbGlkYXRvck1lc3NhZ2UgPSB0aGlzLl9kYXRlVGltZVBpY2tlckVkaXRhYmxlU2VydmljZS5nZXRWYWxpZGF0b3JNZXNzYWdlKCk7XHJcbiAgICB0aGlzLnRvb2x0aXBNZXNzYWdlID0gdGhpcy5fZGF0ZVRpbWVQaWNrZXJFZGl0YWJsZVNlcnZpY2UuZ2V0VG9vbHRpcE1lc3NhZ2UoKTtcclxuICAgIHRoaXMuc3VibWl0dGVkID0gdGhpcy5fZGF0ZVRpbWVQaWNrZXJFZGl0YWJsZVNlcnZpY2UuZ2V0U3VibWl0dGVkKCk7XHJcbiAgICB0aGlzLmZvcm1hdCA9IHRoaXMuX2RhdGVUaW1lUGlja2VyRWRpdGFibGVTZXJ2aWNlLmdldEZvcm1hdCgpO1xyXG4gICAgdGhpcy5jbGVhcmFibGUgPSB0aGlzLl9kYXRlVGltZVBpY2tlckVkaXRhYmxlU2VydmljZS5nZXRDbGVhcmFibGUoKTtcclxuICAgIHRoaXMuYXV0b0NvbXBsZXRlSG91cnMgPSB0aGlzLl9kYXRlVGltZVBpY2tlckVkaXRhYmxlU2VydmljZS5nZXRBdXRvQ29tcGxldGVIb3VycygpO1xyXG4gIH1cclxuXHJcblxyXG4gIHZhbGlkYXRlIChjb250cm9sOiBBYnN0cmFjdENvbnRyb2wpOiBWYWxpZGF0aW9uRXJyb3JzIHwgYW55IHtcclxuICAgIHRoaXMuY29udHJvbHMgPSBjb250cm9sO1xyXG4gICAgdGhpcy5fY2RyZi5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICByZXR1cm4gbnVsbDtcclxuICB9XHJcblxyXG4gIHJlZ2lzdGVyT25WYWxpZGF0b3JDaGFuZ2U/KGZuOiAoKSA9PiB2b2lkKTogdm9pZCB7XHJcbiAgICB0aGlzLm9uVmFsaWRhdGlvbkNoYW5nZSA9IGZuO1xyXG4gIH1cclxuXHJcbiAgbmdPbkluaXQgKCk6IHZvaWQge1xyXG4gICAgdGhpcy5ob3Vyc0NoYW5nZSgpO1xyXG4gICAgY29uc3QgdGltZW91dCA9IHNldFRpbWVvdXQoKCkgPT4ge1xyXG4gICAgICB0aGlzLmRhdGVDaGFuZ2UoKTtcclxuICAgICAgY2xlYXJUaW1lb3V0KHRpbWVvdXQpO1xyXG4gICAgICBpZiAoIXRoaXMuY2xlYXJhYmxlKSB0aGlzLmJ0bkNsZWFuIS5uYXRpdmVFbGVtZW50LnN0eWxlLnZpc2liaWxpdHkgPSBcImhpZGRlblwiO1xyXG4gICAgfSwgMTAwKTtcclxuXHJcbiAgICBpZiAodGhpcy5mb3JtYXQgPT0gMTIpIHtcclxuICAgICAgdGhpcy5kYXRlVGltZUNvbnRyb2wuc2V0VmFsdWUoTUFTS18xMl9IT1VSUyk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aGlzLmRhdGVUaW1lQ29udHJvbC5zZXRWYWx1ZShNQVNLXzI0X0hPVVJTKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIG5nT25DaGFuZ2VzIChjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKTogdm9pZCB7XHJcbiAgICBpZiAoY2hhbmdlc1tcInN1Ym1pdHRlZFwiXSkge1xyXG4gICAgICBpZiAodGhpcy5jb250cm9scyAhPT0gdW5kZWZpbmVkICYmIGNoYW5nZXNbXCJzdWJtaXR0ZWRcIl0uY3VycmVudFZhbHVlKSB7XHJcbiAgICAgICAgdGhpcy5jb250cm9scy5tYXJrQXNEaXJ0eSgpO1xyXG4gICAgICAgIHRoaXMuY29udHJvbHMubWFya0FzVG91Y2hlZCgpO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBmb2N1cyAoKTogdm9pZCB7XHJcbiAgICB0aGlzLmlucHV0RGF0ZVRpbWUubmF0aXZlRWxlbWVudC5mb2N1cygpO1xyXG5cclxuICAgIGNvbnN0IHRpbWVvdXQgPSBzZXRUaW1lb3V0KCgpID0+IHtcclxuICAgICAgaWYgKCF0aGlzLmRpc2FibGVkKSB0aGlzLmlucHV0RGF0ZVRpbWUubmF0aXZlRWxlbWVudC5zZXRTZWxlY3Rpb25SYW5nZSgwLCAyKTtcclxuXHJcbiAgICAgIGNsZWFyVGltZW91dCh0aW1lb3V0KTtcclxuICAgIH0sIDEwMCk7XHJcblxyXG4gICAgaWYgKCF0aGlzLnJlYWRvbmx5ICYmIHRoaXMub3BlbldoZW5Gb2N1cykge1xyXG4gICAgICB0aGlzLm5nYkRhdGVwaWNrZXI/Lm9wZW4oKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHdyaXRlVmFsdWUgKG9iajogYW55KTogdm9pZCB7XHJcbiAgICBpZiAob2JqICE9IG51bGwpIHtcclxuICAgICAgdGhpcy5kYXRlQ29udHJvbC5zZXRWYWx1ZShEYXRlVGltZU1vZGVsLmZyb21Mb2NhbFN0cmluZyhvYmopKTtcclxuICAgICAgdGhpcy5ob3Vyc0NvbnRyb2wuc2V0VmFsdWUoe1xyXG4gICAgICAgIGhvdXI6IHRoaXMuZGF0ZUNvbnRyb2wudmFsdWUuaG91cixcclxuICAgICAgICBtaW51dGU6IHRoaXMuZGF0ZUNvbnRyb2wudmFsdWUubWludXRlLFxyXG4gICAgICAgIHNlY29uZDogdGhpcy5kYXRlQ29udHJvbC52YWx1ZS5zZWNvbmQsXHJcbiAgICAgIH0pO1xyXG4gICAgICB0aGlzLmRhdGVUaW1lQ29udHJvbC5zZXRWYWx1ZSh0aGlzLl9kYXRlUGlwZS50cmFuc2Zvcm0ob2JqLCB0aGlzLnN0cmluZ0Zvcm1hdCkpO1xyXG4gICAgfVxyXG4gIH1cclxuICByZWdpc3Rlck9uQ2hhbmdlIChmbjogYW55KTogdm9pZCB7XHJcbiAgICB0aGlzLm9uQ2hhbmdlID0gZm47XHJcbiAgfVxyXG4gIHJlZ2lzdGVyT25Ub3VjaGVkIChmbjogYW55KTogdm9pZCB7XHJcbiAgICB0aGlzLm9uVG91Y2ggPSBmbjtcclxuICB9XHJcbiAgc2V0RGlzYWJsZWRTdGF0ZT8oaXNEaXNhYmxlZDogYm9vbGVhbik6IHZvaWQge1xyXG4gICAgdGhpcy5kaXNhYmxlZCA9IGlzRGlzYWJsZWQ7XHJcbiAgICBpZiAodGhpcy5kaXNhYmxlZCkgdGhpcy5kYXRlVGltZUNvbnRyb2wuZGlzYWJsZSgpO1xyXG4gICAgZWxzZSB0aGlzLmRhdGVUaW1lQ29udHJvbC5lbmFibGUoKTtcclxuICB9XHJcblxyXG4gIGhvdXJzQ2hhbmdlICgpIHtcclxuICAgIGlmICh0aGlzLmZvcm1hdCA9PSAxMilcclxuICAgICAgdGhpcy5ob3Vyc0NvbnRyb2wudmFsdWVDaGFuZ2VzLnN1YnNjcmliZSgocmVzKSA9PiB7XHJcbiAgICAgICAgaWYgKFxyXG4gICAgICAgICAgL1swLTNdWzAtOV1cXC9bMC0xXVswLTldXFwvWzAtOV1bMC05XVswLTldWzAtOV0gWzAtMV1bMC05XTpbMC02XVswLTldIFtBLFBdTS8udGVzdCh0aGlzLmRhdGVUaW1lQ29udHJvbC52YWx1ZSEpIHx8XHJcbiAgICAgICAgICAvWzAtM11bMC05XVxcL1swLTFdWzAtOV1cXC9bMC05XVswLTldWzAtOV1bMC05XS8udGVzdCh0aGlzLmRhdGVUaW1lQ29udHJvbC52YWx1ZSEuc3Vic3RyaW5nKDAsIDEwKSlcclxuICAgICAgICApIHtcclxuICAgICAgICAgIHRoaXMuZGF0ZUNvbnRyb2wuc2V0VmFsdWUoXHJcbiAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICAuLi50aGlzLmRhdGVDb250cm9sLnZhbHVlISxcclxuICAgICAgICAgICAgICAuLi5yZXMsXHJcbiAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgIHsgZW1pdEV2ZW50OiBmYWxzZSB9XHJcbiAgICAgICAgICApO1xyXG4gICAgICAgICAgdHJ5IHtcclxuICAgICAgICAgICAgY29uc3QgaW5wdXQ6IGFueSA9IG5ldyBEYXRlVGltZU1vZGVsKE9iamVjdC5hc3NpZ24odGhpcy5kYXRlQ29udHJvbC52YWx1ZSwgdGhpcy5ob3Vyc0NvbnRyb2wudmFsdWUpKTtcclxuXHJcbiAgICAgICAgICAgIHRoaXMuZGF0ZVRpbWVDb250cm9sLnNldFZhbHVlKHRoaXMuX2RhdGVQaXBlLnRyYW5zZm9ybShpbnB1dCwgdGhpcy5zdHJpbmdGb3JtYXQpKTtcclxuICAgICAgICAgIH0gZmluYWxseSB7XHJcbiAgICAgICAgICAgIHRoaXMub25FbWl0KCk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICB9KTtcclxuICAgIGVsc2UgaWYgKHRoaXMuZm9ybWF0ID09IDI0KVxyXG4gICAgICB0aGlzLmhvdXJzQ29udHJvbC52YWx1ZUNoYW5nZXMuc3Vic2NyaWJlKChyZXMpID0+IHtcclxuICAgICAgICBpZiAoXHJcbiAgICAgICAgICAvWzAtM11bMC05XVxcL1swLTFdWzAtOV1cXC9bMC05XVswLTldWzAtOV1bMC05XSBbMC0xXVswLTldOlswLTZdWzAtOV0vLnRlc3QodGhpcy5kYXRlVGltZUNvbnRyb2wudmFsdWUhKSB8fFxyXG4gICAgICAgICAgL1swLTNdWzAtOV1cXC9bMC0xXVswLTldXFwvWzAtOV1bMC05XVswLTldWzAtOV0vLnRlc3QodGhpcy5kYXRlVGltZUNvbnRyb2wudmFsdWUhLnN1YnN0cmluZygwLCAxMCkpXHJcbiAgICAgICAgKSB7XHJcbiAgICAgICAgICB0aGlzLmRhdGVDb250cm9sLnNldFZhbHVlKFxyXG4gICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgLi4udGhpcy5kYXRlQ29udHJvbC52YWx1ZSxcclxuICAgICAgICAgICAgICAuLi5yZXMsXHJcbiAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgIHsgZW1pdEV2ZW50OiBmYWxzZSB9XHJcbiAgICAgICAgICApO1xyXG4gICAgICAgICAgdHJ5IHtcclxuICAgICAgICAgICAgY29uc3QgaW5wdXQ6IGFueSA9IG5ldyBEYXRlVGltZU1vZGVsKE9iamVjdC5hc3NpZ24odGhpcy5kYXRlQ29udHJvbC52YWx1ZSwgdGhpcy5ob3Vyc0NvbnRyb2wudmFsdWUpKTtcclxuICAgICAgICAgICAgdGhpcy5kYXRlVGltZUNvbnRyb2wuc2V0VmFsdWUodGhpcy5fZGF0ZVBpcGUudHJhbnNmb3JtKGlucHV0LCB0aGlzLnN0cmluZ0Zvcm1hdCkpO1xyXG4gICAgICAgICAgfSBjYXRjaCAoZXJyb3IpIHtcclxuICAgICAgICAgICAgLyogY29uc29sZS5lcnJvcihlcnJvcikgKi9cclxuICAgICAgICAgIH0gZmluYWxseSB7XHJcbiAgICAgICAgICAgIHRoaXMub25FbWl0KCk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICB9KTtcclxuICB9XHJcblxyXG4gIG9uRW1pdCAoZW1pdFZhbHVlOiBhbnkgPSBudWxsKSB7XHJcbiAgICB0cnkge1xyXG4gICAgICBjb25zdCB2YWx1ZSA9IG5ldyBEYXRlVGltZU1vZGVsKE9iamVjdC5hc3NpZ24odGhpcy5kYXRlQ29udHJvbC52YWx1ZSwgdGhpcy5ob3Vyc0NvbnRyb2wudmFsdWUpKTtcclxuICAgICAgZW1pdFZhbHVlID0gdGhpcy5fZGF0ZVBpcGUudHJhbnNmb3JtKHZhbHVlLnRvU3RyaW5nKCksIFwieXl5eS1NTS1kZFRISDptbVwiKTtcclxuICAgIH0gY2F0Y2ggKGUpIHsgfVxyXG4gICAgdGhpcy5vbkNoYW5nZShlbWl0VmFsdWUpO1xyXG4gICAgdGhpcy5vblRvdWNoKCk7XHJcbiAgfVxyXG5cclxuICBkYXRlQ2hhbmdlICgpIHtcclxuICAgIGlmICh0aGlzLmZvcm1hdCA9PSAxMilcclxuICAgICAgdGhpcy5kYXRlQ29udHJvbC52YWx1ZUNoYW5nZXMuc3Vic2NyaWJlKChyZXMpID0+IHtcclxuICAgICAgICBpZiAoXHJcbiAgICAgICAgICAvWzAtM11bMC05XVxcL1swLTFdWzAtOV1cXC9bMC05XVswLTldWzAtOV1bMC05XSBbMC0xXVswLTldOlswLTZdWzAtOV0gW0EsUF1NLy50ZXN0KHRoaXMuZGF0ZVRpbWVDb250cm9sLnZhbHVlISkgfHxcclxuICAgICAgICAgIC9bMC0xXVswLTldOlswLTZdWzAtOV0vLnRlc3QodGhpcy5kYXRlVGltZUNvbnRyb2wudmFsdWUhLnN1YnN0cmluZygxMSwgMTYpKVxyXG4gICAgICAgICkge1xyXG4gICAgICAgICAgdGhpcy5kYXRlQ29udHJvbC5zZXRWYWx1ZShcclxuICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgIC4uLnRoaXMuaG91cnNDb250cm9sLnZhbHVlLFxyXG4gICAgICAgICAgICAgIC4uLnJlcyxcclxuICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgeyBlbWl0RXZlbnQ6IGZhbHNlIH1cclxuICAgICAgICAgICk7XHJcblxyXG4gICAgICAgICAgdHJ5IHtcclxuICAgICAgICAgICAgY29uc3QgaW5wdXQ6IGFueSA9IG5ldyBEYXRlVGltZU1vZGVsKE9iamVjdC5hc3NpZ24odGhpcy5kYXRlQ29udHJvbC52YWx1ZSwgdGhpcy5ob3Vyc0NvbnRyb2wudmFsdWUpKTtcclxuICAgICAgICAgICAgdGhpcy5kYXRlVGltZUNvbnRyb2wuc2V0VmFsdWUodGhpcy5fZGF0ZVBpcGUudHJhbnNmb3JtKGlucHV0LCB0aGlzLnN0cmluZ0Zvcm1hdCkpO1xyXG4gICAgICAgICAgfSBjYXRjaCAoZXJyb3IpIHtcclxuICAgICAgICAgIH0gZmluYWxseSB7XHJcbiAgICAgICAgICAgIHRoaXMub25FbWl0KCk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICB9KTtcclxuICAgIGVsc2UgaWYgKHRoaXMuZm9ybWF0ID09IDI0KVxyXG4gICAgICB0aGlzLmRhdGVDb250cm9sLnZhbHVlQ2hhbmdlcy5zdWJzY3JpYmUoKHJlcykgPT4ge1xyXG4gICAgICAgIGlmIChcclxuICAgICAgICAgIC9bMC0zXVswLTldXFwvWzAtMV1bMC05XVxcL1swLTldWzAtOV1bMC05XVswLTldIFswLTFdWzAtOV06WzAtNl1bMC05XSBbQSxQXU0vLnRlc3QodGhpcy5kYXRlVGltZUNvbnRyb2wudmFsdWUhKSB8fFxyXG4gICAgICAgICAgL1swLTFdWzAtOV06WzAtNl1bMC05XS8udGVzdCh0aGlzLmRhdGVUaW1lQ29udHJvbC52YWx1ZSEuc3Vic3RyaW5nKDExLCAxNikpXHJcbiAgICAgICAgKSB7XHJcbiAgICAgICAgICB0aGlzLmRhdGVDb250cm9sLnNldFZhbHVlKFxyXG4gICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgLi4udGhpcy5ob3Vyc0NvbnRyb2wudmFsdWUsXHJcbiAgICAgICAgICAgICAgLi4ucmVzLFxyXG4gICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICB7IGVtaXRFdmVudDogZmFsc2UgfVxyXG4gICAgICAgICAgKTtcclxuXHJcbiAgICAgICAgICB0cnkge1xyXG4gICAgICAgICAgICBjb25zdCBpbnB1dDogYW55ID0gbmV3IERhdGVUaW1lTW9kZWwoT2JqZWN0LmFzc2lnbih0aGlzLmRhdGVDb250cm9sLnZhbHVlLCB0aGlzLmhvdXJzQ29udHJvbC52YWx1ZSkpO1xyXG4gICAgICAgICAgICB0aGlzLmRhdGVUaW1lQ29udHJvbC5zZXRWYWx1ZSh0aGlzLl9kYXRlUGlwZS50cmFuc2Zvcm0oaW5wdXQsIHRoaXMuc3RyaW5nRm9ybWF0KSk7XHJcbiAgICAgICAgICB9IGNhdGNoIChlcnJvcikge1xyXG4gICAgICAgICAgfSBmaW5hbGx5IHtcclxuICAgICAgICAgICAgdGhpcy5vbkVtaXQoKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgb25CbHVyICgpOiB2b2lkIHtcclxuICAgIHRoaXMub25FbWl0KCk7XHJcbiAgfVxyXG5cclxuICBmb2N1c091dElucHV0ICgpOiB2b2lkIHtcclxuICAgIGNvbnN0IHZhbHVlID0gdGhpcy5kYXRlVGltZUNvbnRyb2wudmFsdWU7XHJcblxyXG4gICAgaWYgKCh2YWx1ZSAhPSBNQVNLXzEyX0hPVVJTICYmIHRoaXMuZm9ybWF0ID09IDEyKSB8fCAodmFsdWUgIT0gTUFTS18yNF9IT1VSUyAmJiB0aGlzLmZvcm1hdCA9PSAyNCkpIHtcclxuICAgICAgY29uc3QgZGlhID0gdmFsdWU/LnN1YnN0cmluZygwLCAyKTtcclxuICAgICAgY29uc3QgbWVzID0gdmFsdWU/LnN1YnN0cmluZygzLCA1KTtcclxuICAgICAgY29uc3QgYW5pbyA9IHZhbHVlPy5zdWJzdHJpbmcoNiwgMTApO1xyXG4gICAgICBjb25zdCBob3JhID0gdmFsdWU/LnN1YnN0cmluZygxMSwgMTMpO1xyXG4gICAgICBjb25zdCBtaW51dG9zID0gdmFsdWU/LnN1YnN0cmluZygxNCwgMTYpO1xyXG5cclxuICAgICAgaWYgKFxyXG4gICAgICAgIGlzTmFOKE51bWJlcihkaWEpKSB8fFxyXG4gICAgICAgIGRpYSA9PSBcIjAwXCIgfHxcclxuICAgICAgICBpc05hTihOdW1iZXIobWVzKSkgfHxcclxuICAgICAgICBtZXMgPT0gXCIwMFwiIHx8XHJcbiAgICAgICAgaXNOYU4oTnVtYmVyKGFuaW8pKSB8fFxyXG4gICAgICAgIGFuaW8gPT0gXCIwMDAwXCIgfHxcclxuICAgICAgICBpc05hTihOdW1iZXIoaG9yYSkpIHx8XHJcbiAgICAgICAgaXNOYU4oTnVtYmVyKG1pbnV0b3MpKVxyXG4gICAgICApIHtcclxuICAgICAgICB0aGlzLmRhdGVDb250cm9sLnNldFZhbHVlKFxyXG4gICAgICAgICAge1xyXG4gICAgICAgICAgICB5ZWFyOiBpc05hTihOdW1iZXIoYW5pbykpIHx8IGFuaW8gPT0gXCIwMDAwXCIgPyB0aGlzLnRvZGF5LnllYXIgOiBOdW1iZXIoYW5pbyksXHJcbiAgICAgICAgICAgIG1vbnRoOiBpc05hTihOdW1iZXIobWVzKSkgfHwgbWVzID09IFwiMDBcIiA/IHRoaXMudG9kYXkubW9udGggOiBOdW1iZXIobWVzKSxcclxuICAgICAgICAgICAgZGF5OiBpc05hTihOdW1iZXIoZGlhKSkgfHwgZGlhID09IFwiMDBcIiA/IHRoaXMudG9kYXkuZGF5IDogTnVtYmVyKGRpYSksXHJcbiAgICAgICAgICB9LFxyXG4gICAgICAgICAgeyBlbWl0RXZlbnQ6IGZhbHNlIH1cclxuICAgICAgICApO1xyXG4gICAgICAgIGxldCBob3VyID0gdGhpcy5ob3Vyc0NvbnRyb2wudmFsdWUuaG91cjtcclxuICAgICAgICBpZiAoaXNOYU4oTnVtYmVyKGhvcmEpKSkgaG91ciA9IHRoaXMuYXV0b0NvbXBsZXRlSG91cnMgPyBEYXRlVXRpbC5nZXRIb3VycyhEYXRlVXRpbC5ub3coKSkgOiAwO1xyXG5cclxuICAgICAgICBsZXQgbWludXRlID0gdGhpcy5ob3Vyc0NvbnRyb2wudmFsdWUubWludXRlO1xyXG4gICAgICAgIGlmIChpc05hTihOdW1iZXIobWludXRvcykpKSBtaW51dGUgPSB0aGlzLmF1dG9Db21wbGV0ZUhvdXJzID8gRGF0ZVV0aWwuZ2V0TWludXRlcyhEYXRlVXRpbC5ub3coKSkgOiAwO1xyXG5cclxuICAgICAgICB0aGlzLmhvdXJzQ29udHJvbC5zZXRWYWx1ZShcclxuICAgICAgICAgIHtcclxuICAgICAgICAgICAgaG91cixcclxuICAgICAgICAgICAgbWludXRlLFxyXG4gICAgICAgICAgfSxcclxuICAgICAgICAgIHsgZW1pdEV2ZW50OiBmYWxzZSB9XHJcbiAgICAgICAgKTtcclxuICAgICAgICBjb25zdCBpbnB1dDogYW55ID0gbmV3IERhdGVUaW1lTW9kZWwoT2JqZWN0LmFzc2lnbih0aGlzLmRhdGVDb250cm9sLnZhbHVlLCB0aGlzLmhvdXJzQ29udHJvbC52YWx1ZSkpO1xyXG4gICAgICAgIHRyeSB7XHJcbiAgICAgICAgICB0aGlzLmRhdGVUaW1lQ29udHJvbC5zZXRWYWx1ZSh0aGlzLl9kYXRlUGlwZS50cmFuc2Zvcm0oaW5wdXQsIHRoaXMuc3RyaW5nRm9ybWF0KSk7XHJcbiAgICAgICAgfSBmaW5hbGx5IHtcclxuICAgICAgICAgIHRoaXMub25FbWl0KCk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgdGhpcy5jb250YWRvciA9IDA7XHJcbiAgfVxyXG5cclxuICBvbktleVVwIChlOiBhbnkpOiB2b2lkIHtcclxuICAgIGNvbnN0IGlucHV0ID0gZS50YXJnZXQ7XHJcblxyXG4gICAgaWYgKHRoaXMuZGlzYWJsZWQpIHJldHVybjtcclxuXHJcbiAgICBpZiAoIWlzTmFOKE51bWJlcihlLmtleSkpICYmIGUua2V5LnRyaW0oKSAhPSBcIlwiKSB7XHJcbiAgICAgIC8vPT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gRElBID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cclxuICAgICAgaWYgKGlucHV0LnNlbGVjdGlvblN0YXJ0ID09IDAgJiYgaW5wdXQuc2VsZWN0aW9uRW5kID09IDIpIHtcclxuICAgICAgICBjb25zdCB2YWxvckFjdHVhbDogc3RyaW5nID0gdGhpcy5kYXRlVGltZUNvbnRyb2wudmFsdWUhO1xyXG4gICAgICAgIGNvbnN0IGRpYUFjdHVhbDogc3RyaW5nID0gdmFsb3JBY3R1YWwuc3Vic3RyaW5nKDAsIDIpO1xyXG5cclxuICAgICAgICBpZiAoZGlhQWN0dWFsID09IFwiZGRcIikge1xyXG4gICAgICAgICAgY29uc3QgbnVldm9WYWxvciA9IGAkeyBlLmtleS5wYWRTdGFydCgyLCAwKSB9JHsgdmFsb3JBY3R1YWwuc3Vic3RyaW5nKDIpIH1gO1xyXG4gICAgICAgICAgdGhpcy5kYXRlVGltZUNvbnRyb2wuc2V0VmFsdWUobnVldm9WYWxvcik7XHJcbiAgICAgICAgICB0aGlzLmRhdGVDb250cm9sLnNldFZhbHVlKHtcclxuICAgICAgICAgICAgLi4udGhpcy5kYXRlQ29udHJvbC52YWx1ZSxcclxuICAgICAgICAgICAgZGF5OiBOdW1iZXIodGhpcy5kYXRlVGltZUNvbnRyb2wudmFsdWUhLnN1YnN0cmluZygwLCAyKSksXHJcbiAgICAgICAgICB9KTtcclxuICAgICAgICAgIHRoaXMuY29udGFkb3IrKztcclxuICAgICAgICAgIGlmIChlLmtleSA+IDMpIHtcclxuICAgICAgICAgICAgdGhpcy5jb250YWRvciA9IDA7XHJcbiAgICAgICAgICAgIGlucHV0LnNldFNlbGVjdGlvblJhbmdlKDMsIDUpO1xyXG4gICAgICAgICAgICB0aGlzLm9uRW1pdCgpO1xyXG4gICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgICB9IGVsc2UgdGhpcy5vbkVtaXQoKTtcclxuICAgICAgICB9IGVsc2UgaWYgKE51bWJlcihkaWFBY3R1YWwpIDw9IDMgJiYgTnVtYmVyKGRpYUFjdHVhbCkgPiAwICYmIHRoaXMuY29udGFkb3IgPiAwKSB7XHJcbiAgICAgICAgICBjb25zdCBudWV2b1ZhbG9yID0gYCR7IE51bWJlcihOdW1iZXIoZGlhQWN0dWFsKS50b1N0cmluZygpICsgTnVtYmVyKGUua2V5KSkgPiAzMSA/IDMxIDogTnVtYmVyKGRpYUFjdHVhbCkudG9TdHJpbmcoKSArIE51bWJlcihlLmtleSlcclxuICAgICAgICAgICAgfSR7IHZhbG9yQWN0dWFsLnN1YnN0cmluZygyKSB9YDtcclxuICAgICAgICAgIHRoaXMuZGF0ZVRpbWVDb250cm9sLnNldFZhbHVlKG51ZXZvVmFsb3IpO1xyXG4gICAgICAgICAgdGhpcy5kYXRlQ29udHJvbC5zZXRWYWx1ZSh7XHJcbiAgICAgICAgICAgIC4uLnRoaXMuZGF0ZUNvbnRyb2wudmFsdWUsXHJcbiAgICAgICAgICAgIGRheTogTnVtYmVyKHRoaXMuZGF0ZVRpbWVDb250cm9sLnZhbHVlIS5zdWJzdHJpbmcoMCwgMikpLFxyXG4gICAgICAgICAgfSk7XHJcbiAgICAgICAgICB0aGlzLmNvbnRhZG9yKys7XHJcbiAgICAgICAgICB0aGlzLm9uRW1pdCgpO1xyXG4gICAgICAgICAgaW5wdXQuc2V0U2VsZWN0aW9uUmFuZ2UoMywgNSk7XHJcbiAgICAgICAgICB0aGlzLmNvbnRhZG9yID0gMDtcclxuICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgY29uc3QgbnVldm9WYWxvciA9IGAkeyBlLmtleS5wYWRTdGFydCgyLCAwKSB9JHsgdmFsb3JBY3R1YWwuc3Vic3RyaW5nKDIpIH1gO1xyXG4gICAgICAgICAgdGhpcy5kYXRlVGltZUNvbnRyb2wuc2V0VmFsdWUobnVldm9WYWxvcik7XHJcbiAgICAgICAgICB0aGlzLmRhdGVDb250cm9sLnNldFZhbHVlKHtcclxuICAgICAgICAgICAgLi4udGhpcy5kYXRlQ29udHJvbC52YWx1ZSxcclxuICAgICAgICAgICAgZGF5OiBOdW1iZXIodGhpcy5kYXRlVGltZUNvbnRyb2wudmFsdWUhLnN1YnN0cmluZygwLCAyKSksXHJcbiAgICAgICAgICB9KTtcclxuICAgICAgICAgIHRoaXMuY29udGFkb3IrKztcclxuICAgICAgICAgIGlmIChOdW1iZXIoZS5rZXkucGFkU3RhcnQoMiwgMCkpID4gMyB8fCB0aGlzLmNvbnRhZG9yID4gMSkge1xyXG4gICAgICAgICAgICB0aGlzLmNvbnRhZG9yID0gMDtcclxuICAgICAgICAgICAgaW5wdXQuc2V0U2VsZWN0aW9uUmFuZ2UoMywgNSk7XHJcbiAgICAgICAgICAgIHRoaXMub25FbWl0KCk7XHJcbiAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICAgIH0gZWxzZSB0aGlzLm9uRW1pdCgpO1xyXG4gICAgICAgIH1cclxuICAgICAgICB0aGlzLm9uRW1pdCgpO1xyXG4gICAgICAgIGlucHV0LnNldFNlbGVjdGlvblJhbmdlKDAsIDIpO1xyXG4gICAgICB9XHJcbiAgICAgIC8vPT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gTUVTID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cclxuICAgICAgZWxzZSBpZiAoaW5wdXQuc2VsZWN0aW9uU3RhcnQgPT0gMyAmJiBpbnB1dC5zZWxlY3Rpb25FbmQgPT0gNSkge1xyXG4gICAgICAgIGNvbnN0IHZhbG9yQWN0dWFsOiBzdHJpbmcgPSB0aGlzLmRhdGVUaW1lQ29udHJvbC52YWx1ZSE7XHJcbiAgICAgICAgY29uc3QgbWVzQWN0dWFsOiBzdHJpbmcgPSB2YWxvckFjdHVhbC5zdWJzdHJpbmcoMywgNSk7XHJcblxyXG4gICAgICAgIGlmIChtZXNBY3R1YWwgPT0gXCJtbVwiKSB7XHJcbiAgICAgICAgICBjb25zdCBudWV2b1ZhbG9yID0gYCR7IHZhbG9yQWN0dWFsLnN1YnN0cmluZygwLCAzKSB9JHsgZS5rZXkucGFkU3RhcnQoMiwgMCkgfSR7IHZhbG9yQWN0dWFsLnN1YnN0cmluZyg1KSB9YDtcclxuICAgICAgICAgIHRoaXMuZGF0ZVRpbWVDb250cm9sLnNldFZhbHVlKG51ZXZvVmFsb3IpO1xyXG4gICAgICAgICAgdGhpcy5kYXRlQ29udHJvbC5zZXRWYWx1ZSh7XHJcbiAgICAgICAgICAgIC4uLnRoaXMuZGF0ZUNvbnRyb2wudmFsdWUsXHJcbiAgICAgICAgICAgIG1vbnRoOiBOdW1iZXIodGhpcy5kYXRlVGltZUNvbnRyb2wudmFsdWUhLnN1YnN0cmluZygzLCA1KSksXHJcbiAgICAgICAgICB9KTtcclxuICAgICAgICAgIHRoaXMuY29udGFkb3IrKztcclxuICAgICAgICAgIGlmIChlLmtleSA+IDEpIHtcclxuICAgICAgICAgICAgdGhpcy5vbkVtaXQoKTtcclxuICAgICAgICAgICAgaW5wdXQuc2V0U2VsZWN0aW9uUmFuZ2UoNiwgMTApO1xyXG4gICAgICAgICAgICB0aGlzLmNvbnRhZG9yID0gMDtcclxuICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgICAgfSBlbHNlIHRoaXMub25FbWl0KCk7XHJcbiAgICAgICAgfSBlbHNlIGlmIChOdW1iZXIobWVzQWN0dWFsKSA8PSAxICYmIE51bWJlcihtZXNBY3R1YWwpID4gMCAmJiB0aGlzLmNvbnRhZG9yID4gMCkge1xyXG4gICAgICAgICAgY29uc3QgbnVldm9WYWxvciA9IGAkeyB2YWxvckFjdHVhbC5zdWJzdHJpbmcoMCwgMykgfSR7IE51bWJlcihOdW1iZXIobWVzQWN0dWFsKS50b1N0cmluZygpICsgTnVtYmVyKGUua2V5KSkgPiAxMiA/IDEyIDogTnVtYmVyKG1lc0FjdHVhbCkudG9TdHJpbmcoKSArIE51bWJlcihlLmtleSlcclxuICAgICAgICAgICAgfSR7IHZhbG9yQWN0dWFsLnN1YnN0cmluZyg1KSB9YDtcclxuICAgICAgICAgIHRoaXMuZGF0ZVRpbWVDb250cm9sLnNldFZhbHVlKG51ZXZvVmFsb3IpO1xyXG4gICAgICAgICAgdGhpcy5kYXRlQ29udHJvbC5zZXRWYWx1ZSh7XHJcbiAgICAgICAgICAgIC4uLnRoaXMuZGF0ZUNvbnRyb2wudmFsdWUsXHJcbiAgICAgICAgICAgIG1vbnRoOiBOdW1iZXIodGhpcy5kYXRlVGltZUNvbnRyb2wudmFsdWUhLnN1YnN0cmluZygzLCA1KSksXHJcbiAgICAgICAgICB9KTtcclxuICAgICAgICAgIHRoaXMuY29udGFkb3IrKztcclxuICAgICAgICAgIHRoaXMub25FbWl0KCk7XHJcbiAgICAgICAgICBpbnB1dC5zZXRTZWxlY3Rpb25SYW5nZSg2LCAxMCk7XHJcbiAgICAgICAgICB0aGlzLmNvbnRhZG9yID0gMDtcclxuICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgY29uc3QgbnVldm9WYWxvciA9IGAkeyB2YWxvckFjdHVhbC5zdWJzdHJpbmcoMCwgMykgfSR7IGUua2V5LnBhZFN0YXJ0KDIsIDApIH0keyB2YWxvckFjdHVhbC5zdWJzdHJpbmcoNSkgfWA7XHJcbiAgICAgICAgICB0aGlzLmRhdGVUaW1lQ29udHJvbC5zZXRWYWx1ZShudWV2b1ZhbG9yKTtcclxuICAgICAgICAgIHRoaXMuZGF0ZUNvbnRyb2wuc2V0VmFsdWUoe1xyXG4gICAgICAgICAgICAuLi50aGlzLmRhdGVDb250cm9sLnZhbHVlLFxyXG4gICAgICAgICAgICBtb250aDogTnVtYmVyKHRoaXMuZGF0ZVRpbWVDb250cm9sLnZhbHVlIS5zdWJzdHJpbmcoMywgNSkpLFxyXG4gICAgICAgICAgfSk7XHJcbiAgICAgICAgICB0aGlzLmNvbnRhZG9yKys7XHJcbiAgICAgICAgICBpZiAoTnVtYmVyKGUua2V5LnBhZFN0YXJ0KDIsIDApKSA+IDEgfHwgdGhpcy5jb250YWRvciA+IDEpIHtcclxuICAgICAgICAgICAgdGhpcy5vbkVtaXQoKTtcclxuICAgICAgICAgICAgaW5wdXQuc2V0U2VsZWN0aW9uUmFuZ2UoNiwgMTApO1xyXG4gICAgICAgICAgICB0aGlzLmNvbnRhZG9yID0gMDtcclxuICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgICAgfSBlbHNlIHRoaXMub25FbWl0KCk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHRoaXMub25FbWl0KCk7XHJcbiAgICAgICAgaW5wdXQuc2V0U2VsZWN0aW9uUmFuZ2UoMywgNSk7XHJcbiAgICAgIH1cclxuICAgICAgLy89PT09PT09PT09PT09PT09PT09PT09PT09PT09PSBBw5FPID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cclxuICAgICAgZWxzZSBpZiAoaW5wdXQuc2VsZWN0aW9uU3RhcnQgPT0gNiAmJiBpbnB1dC5zZWxlY3Rpb25FbmQgPT0gMTApIHtcclxuICAgICAgICBjb25zdCB2YWxvckFjdHVhbDogc3RyaW5nID0gdGhpcy5kYXRlVGltZUNvbnRyb2wudmFsdWUhO1xyXG4gICAgICAgIGNvbnN0IGFuaW9BY3R1YWw6IHN0cmluZyA9IHZhbG9yQWN0dWFsLnN1YnN0cmluZyg2LCAxMCk7XHJcbiAgICAgICAgaWYgKGFuaW9BY3R1YWwgPT0gXCJ5eXl5XCIpIHtcclxuICAgICAgICAgIGNvbnN0IG51ZXZvVmFsb3IgPSBgJHsgdmFsb3JBY3R1YWwuc3Vic3RyaW5nKDAsIDYpIH0keyBlLmtleS5wYWRTdGFydCg0LCAwKSB9JHsgdmFsb3JBY3R1YWwuc3Vic3RyaW5nKDEwKSB9YDtcclxuICAgICAgICAgIHRoaXMuZGF0ZVRpbWVDb250cm9sLnNldFZhbHVlKG51ZXZvVmFsb3IpO1xyXG4gICAgICAgICAgdGhpcy5kYXRlQ29udHJvbC5zZXRWYWx1ZSh7XHJcbiAgICAgICAgICAgIC4uLnRoaXMuZGF0ZUNvbnRyb2wudmFsdWUsXHJcbiAgICAgICAgICAgIHllYXI6IE51bWJlcih0aGlzLmRhdGVUaW1lQ29udHJvbC52YWx1ZSEuc3Vic3RyaW5nKDYsIDEwKSksXHJcbiAgICAgICAgICB9KTtcclxuICAgICAgICAgIHRoaXMuY29udGFkb3IrKztcclxuICAgICAgICAgIGlmIChlLmtleSA+IDIpIHtcclxuICAgICAgICAgICAgY29uc3QgbnVldm9WYWxvciA9IGAkeyB2YWxvckFjdHVhbC5zdWJzdHJpbmcoMCwgNikgfSR7IERhdGVVdGlsLmdldFllYXIoRGF0ZVV0aWwubm93KCkpIH0keyB2YWxvckFjdHVhbC5zdWJzdHJpbmcoMTApIH1gO1xyXG4gICAgICAgICAgICB0aGlzLmRhdGVUaW1lQ29udHJvbC5zZXRWYWx1ZShudWV2b1ZhbG9yKTtcclxuICAgICAgICAgICAgdGhpcy5kYXRlQ29udHJvbC5zZXRWYWx1ZSh7XHJcbiAgICAgICAgICAgICAgLi4udGhpcy5kYXRlQ29udHJvbC52YWx1ZSxcclxuICAgICAgICAgICAgICB5ZWFyOiBOdW1iZXIodGhpcy5kYXRlVGltZUNvbnRyb2wudmFsdWUhLnN1YnN0cmluZyg2LCAxMCkpLFxyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgdGhpcy5vbkVtaXQoKTtcclxuICAgICAgICAgICAgaW5wdXQuc2V0U2VsZWN0aW9uUmFuZ2UoMTEsIDEzKTtcclxuICAgICAgICAgICAgdGhpcy5jb250YWRvciA9IDA7XHJcbiAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICAgIH0gZWxzZSB0aGlzLm9uRW1pdCgpO1xyXG4gICAgICAgIH0gZWxzZSBpZiAoTnVtYmVyKGFuaW9BY3R1YWwpIDw9IDI5OTkgJiYgTnVtYmVyKGFuaW9BY3R1YWwpID4gMCkge1xyXG4gICAgICAgICAgbGV0IG51ZXZvVmFsb3I7XHJcbiAgICAgICAgICB0aGlzLmNvbnRhZG9yKys7XHJcbiAgICAgICAgICBpZiAoTnVtYmVyKGFuaW9BY3R1YWwpID49IDEwMDApIHtcclxuICAgICAgICAgICAgbnVldm9WYWxvciA9IGAkeyB2YWxvckFjdHVhbC5zdWJzdHJpbmcoMCwgNikgfSR7IE51bWJlcihlLmtleSkudG9TdHJpbmcoKS5wYWRTdGFydCg0LCBcIjBcIikgfSR7IHZhbG9yQWN0dWFsLnN1YnN0cmluZygxMCkgfWA7XHJcbiAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICBudWV2b1ZhbG9yID0gYCR7IHZhbG9yQWN0dWFsLnN1YnN0cmluZygwLCA2KSB9JHsgKE51bWJlcihhbmlvQWN0dWFsKS50b1N0cmluZygpICsgTnVtYmVyKGUua2V5KSkucGFkU3RhcnQoXHJcbiAgICAgICAgICAgICAgNCxcclxuICAgICAgICAgICAgICBcIjBcIlxyXG4gICAgICAgICAgICApIH0keyB2YWxvckFjdHVhbC5zdWJzdHJpbmcoMTApIH1gO1xyXG4gICAgICAgICAgICB0aGlzLmRhdGVUaW1lQ29udHJvbC5zZXRWYWx1ZShudWV2b1ZhbG9yKTtcclxuICAgICAgICAgICAgdGhpcy5kYXRlQ29udHJvbC5zZXRWYWx1ZSh7XHJcbiAgICAgICAgICAgICAgLi4udGhpcy5kYXRlQ29udHJvbC52YWx1ZSxcclxuICAgICAgICAgICAgICB5ZWFyOiBOdW1iZXIodGhpcy5kYXRlVGltZUNvbnRyb2wudmFsdWUhLnN1YnN0cmluZyg2LCAxMCkpLFxyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgaWYgKFxyXG4gICAgICAgICAgICAgIE51bWJlcihOdW1iZXIoYW5pb0FjdHVhbCkudG9TdHJpbmcoKSArIE51bWJlcihlLmtleSkpID4gMTAwMCAmJlxyXG4gICAgICAgICAgICAgIE51bWJlcihOdW1iZXIoYW5pb0FjdHVhbCkudG9TdHJpbmcoKSArIE51bWJlcihlLmtleSkpIDwgMzAwMFxyXG4gICAgICAgICAgICApIHtcclxuICAgICAgICAgICAgICB0aGlzLm9uRW1pdCgpO1xyXG4gICAgICAgICAgICAgIGlucHV0LnNldFNlbGVjdGlvblJhbmdlKDExLCAxMyk7XHJcbiAgICAgICAgICAgICAgdGhpcy5jb250YWRvciA9IDA7XHJcbiAgICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgICAgICB9IGVsc2UgaWYgKE51bWJlcihOdW1iZXIoYW5pb0FjdHVhbCkudG9TdHJpbmcoKSArIE51bWJlcihlLmtleSkpID4gMjk5OSkge1xyXG4gICAgICAgICAgICAgIG51ZXZvVmFsb3IgPSBgJHsgdmFsb3JBY3R1YWwuc3Vic3RyaW5nKDAsIDYpIH0keyBEYXRlVXRpbC5nZXRZZWFyKERhdGVVdGlsLm5vdygpKSB9JHsgdmFsb3JBY3R1YWwuc3Vic3RyaW5nKDEwKSB9YDtcclxuICAgICAgICAgICAgICB0aGlzLmRhdGVUaW1lQ29udHJvbC5zZXRWYWx1ZShudWV2b1ZhbG9yKTtcclxuICAgICAgICAgICAgICB0aGlzLmRhdGVDb250cm9sLnNldFZhbHVlKHtcclxuICAgICAgICAgICAgICAgIC4uLnRoaXMuZGF0ZUNvbnRyb2wudmFsdWUsXHJcbiAgICAgICAgICAgICAgICB5ZWFyOiBOdW1iZXIodGhpcy5kYXRlVGltZUNvbnRyb2wudmFsdWUhLnN1YnN0cmluZyg2LCAxMCkpLFxyXG4gICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICAgIHRoaXMub25FbWl0KCk7XHJcbiAgICAgICAgICAgICAgaW5wdXQuc2V0U2VsZWN0aW9uUmFuZ2UoMTEsIDEzKTtcclxuICAgICAgICAgICAgICB0aGlzLmNvbnRhZG9yID0gMDtcclxuICAgICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH1cclxuICAgICAgICAgIHRoaXMuZGF0ZVRpbWVDb250cm9sLnNldFZhbHVlKG51ZXZvVmFsb3IpO1xyXG4gICAgICAgICAgdGhpcy5kYXRlQ29udHJvbC5zZXRWYWx1ZSh7XHJcbiAgICAgICAgICAgIC4uLnRoaXMuZGF0ZUNvbnRyb2wudmFsdWUsXHJcbiAgICAgICAgICAgIHllYXI6IE51bWJlcih0aGlzLmRhdGVUaW1lQ29udHJvbC52YWx1ZSEuc3Vic3RyaW5nKDYsIDEwKSksXHJcbiAgICAgICAgICB9KTtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgY29uc3QgbnVldm9WYWxvciA9IGAkeyB2YWxvckFjdHVhbC5zdWJzdHJpbmcoMCwgNikgfSR7IGUua2V5LnBhZFN0YXJ0KDQsIDApIH0keyB2YWxvckFjdHVhbC5zdWJzdHJpbmcoMTApIH1gO1xyXG4gICAgICAgICAgdGhpcy5kYXRlVGltZUNvbnRyb2wuc2V0VmFsdWUobnVldm9WYWxvcik7XHJcbiAgICAgICAgICB0aGlzLmRhdGVDb250cm9sLnNldFZhbHVlKHtcclxuICAgICAgICAgICAgLi4udGhpcy5kYXRlQ29udHJvbC52YWx1ZSxcclxuICAgICAgICAgICAgeWVhcjogTnVtYmVyKHRoaXMuZGF0ZVRpbWVDb250cm9sLnZhbHVlIS5zdWJzdHJpbmcoNiwgMTApKSxcclxuICAgICAgICAgIH0pO1xyXG4gICAgICAgIH1cclxuICAgICAgICB0aGlzLmNvbnRhZG9yKys7XHJcbiAgICAgICAgdGhpcy5vbkVtaXQoKTtcclxuICAgICAgICBpbnB1dC5zZXRTZWxlY3Rpb25SYW5nZSg2LCAxMCk7XHJcbiAgICAgIH1cclxuICAgICAgLy89PT09PT09PT09PT09PT09PT09PT09PT09PT09PSBIT1JBID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxyXG4gICAgICBlbHNlIGlmIChpbnB1dC5zZWxlY3Rpb25TdGFydCA9PSAxMSAmJiBpbnB1dC5zZWxlY3Rpb25FbmQgPT0gMTMpIHtcclxuICAgICAgICBjb25zdCB2YWxvckFjdHVhbDogc3RyaW5nID0gdGhpcy5kYXRlVGltZUNvbnRyb2wudmFsdWUhO1xyXG4gICAgICAgIGNvbnN0IGhvcmFBY3R1YWw6IHN0cmluZyA9IHZhbG9yQWN0dWFsLnN1YnN0cmluZygxMSwgMTMpO1xyXG5cclxuICAgICAgICBpZiAoaG9yYUFjdHVhbCA9PSBcIi0tXCIpIHtcclxuICAgICAgICAgIGNvbnN0IG51ZXZvVmFsb3IgPSBgJHsgdmFsb3JBY3R1YWwuc3Vic3RyaW5nKDAsIDExKSB9JHsgZS5rZXkucGFkU3RhcnQoMiwgMCkgfSR7IHZhbG9yQWN0dWFsLnN1YnN0cmluZygxMykgfWA7XHJcbiAgICAgICAgICB0aGlzLmRhdGVUaW1lQ29udHJvbC5zZXRWYWx1ZShudWV2b1ZhbG9yKTtcclxuICAgICAgICAgIC8vPT09PT09PT09PT0gRk9STUFUTyAxMiBIT1JBUz09PT09PT09PT09XHJcbiAgICAgICAgICBpZiAodGhpcy5mb3JtYXQgPT0gMTIpXHJcbiAgICAgICAgICAgIHRoaXMuaG91cnNDb250cm9sLnNldFZhbHVlKHtcclxuICAgICAgICAgICAgICAuLi50aGlzLmhvdXJzQ29udHJvbC52YWx1ZSxcclxuICAgICAgICAgICAgICBob3VyOiAvWzAtMV1bMC05XTpbMC02XVswLTldIFtBLFBdTS8udGVzdCh0aGlzLmRhdGVUaW1lQ29udHJvbC52YWx1ZSEuc3Vic3RyaW5nKDExKSlcclxuICAgICAgICAgICAgICAgID8gTnVtYmVyKHRoaXMuX2RhdGVQaXBlLnRyYW5zZm9ybShgMDEvMDEvMjAyMCAkeyB0aGlzLmRhdGVUaW1lQ29udHJvbC52YWx1ZSEuc3Vic3RyaW5nKDExKSB9YCwgXCJISFwiKSlcclxuICAgICAgICAgICAgICAgIDogTnVtYmVyKHRoaXMuZGF0ZVRpbWVDb250cm9sLnZhbHVlIS5zdWJzdHJpbmcoMTEsIDEzKSksXHJcbiAgICAgICAgICAgICAgbWludXRlOiB0aGlzLmRhdGVUaW1lQ29udHJvbC52YWx1ZSEuc3Vic3RyaW5nKDE0LCAxNikgPT0gXCItLVwiID8gMCA6IHRoaXMuaG91cnNDb250cm9sLnZhbHVlLm1pbnV0ZSxcclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAvLz09PT09PT09PT09IEZPUk1BVE8gMjQgSE9SQVM9PT09PT09PT09PVxyXG4gICAgICAgICAgZWxzZVxyXG4gICAgICAgICAgICB0aGlzLmhvdXJzQ29udHJvbC5zZXRWYWx1ZSh7XHJcbiAgICAgICAgICAgICAgLi4udGhpcy5ob3Vyc0NvbnRyb2wudmFsdWUsXHJcbiAgICAgICAgICAgICAgaG91cjogL1swLTFdWzAtOV06WzAtNl1bMC05XS8udGVzdCh0aGlzLmRhdGVUaW1lQ29udHJvbC52YWx1ZSEuc3Vic3RyaW5nKDExKSlcclxuICAgICAgICAgICAgICAgID8gTnVtYmVyKHRoaXMuX2RhdGVQaXBlLnRyYW5zZm9ybShgMDEvMDEvMjAyMCAkeyB0aGlzLmRhdGVUaW1lQ29udHJvbC52YWx1ZSEuc3Vic3RyaW5nKDExKSB9YCwgXCJISFwiKSlcclxuICAgICAgICAgICAgICAgIDogTnVtYmVyKHRoaXMuZGF0ZVRpbWVDb250cm9sLnZhbHVlIS5zdWJzdHJpbmcoMTEsIDEzKSksXHJcbiAgICAgICAgICAgICAgbWludXRlOiB0aGlzLmRhdGVUaW1lQ29udHJvbC52YWx1ZSEuc3Vic3RyaW5nKDE0LCAxNikgPT0gXCIwMFwiID8gMCA6IHRoaXMuaG91cnNDb250cm9sLnZhbHVlLm1pbnV0ZSxcclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICB0aGlzLmNvbnRhZG9yKys7XHJcbiAgICAgICAgICBpZiAoZS5rZXkgPiAxICYmIHRoaXMuZm9ybWF0ID09IDEyKSB7XHJcbiAgICAgICAgICAgIHRoaXMub25FbWl0KCk7XHJcbiAgICAgICAgICAgIGlucHV0LnNldFNlbGVjdGlvblJhbmdlKDE0LCAxNik7XHJcbiAgICAgICAgICAgIHRoaXMuY29udGFkb3IgPSAwO1xyXG4gICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgICB9IGVsc2UgaWYgKGUua2V5ID4gMiAmJiB0aGlzLmZvcm1hdCA9PSAyNCkge1xyXG4gICAgICAgICAgICB0aGlzLm9uRW1pdCgpO1xyXG4gICAgICAgICAgICBpbnB1dC5zZXRTZWxlY3Rpb25SYW5nZSgxNCwgMTYpO1xyXG4gICAgICAgICAgICB0aGlzLmNvbnRhZG9yID0gMDtcclxuICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgICAgfSBlbHNlIHRoaXMub25FbWl0KCk7XHJcbiAgICAgICAgfSBlbHNlIGlmIChOdW1iZXIoaG9yYUFjdHVhbCkgPD0gMSAmJiBOdW1iZXIoaG9yYUFjdHVhbCkgPiAwICYmIHRoaXMuY29udGFkb3IgPiAwICYmIHRoaXMuZm9ybWF0ID09IDEyKSB7XHJcbiAgICAgICAgICBjb25zdCBudWV2b1ZhbG9yID0gYCR7IHZhbG9yQWN0dWFsLnN1YnN0cmluZygwLCAxMSkgfSR7IE51bWJlcihOdW1iZXIoaG9yYUFjdHVhbCkudG9TdHJpbmcoKSArIE51bWJlcihlLmtleSkpID4gMTIgPyAxMiA6IE51bWJlcihob3JhQWN0dWFsKS50b1N0cmluZygpICsgTnVtYmVyKGUua2V5KVxyXG4gICAgICAgICAgICB9JHsgdmFsb3JBY3R1YWwuc3Vic3RyaW5nKDEzKSB9YDtcclxuICAgICAgICAgIHRoaXMuZGF0ZVRpbWVDb250cm9sLnNldFZhbHVlKG51ZXZvVmFsb3IpO1xyXG4gICAgICAgICAgdGhpcy5ob3Vyc0NvbnRyb2wuc2V0VmFsdWUoe1xyXG4gICAgICAgICAgICAuLi50aGlzLmhvdXJzQ29udHJvbC52YWx1ZSxcclxuICAgICAgICAgICAgaG91cjogL1swLTFdWzAtOV06WzAtNl1bMC05XSBbQSxQXU0vLnRlc3QodGhpcy5kYXRlVGltZUNvbnRyb2wudmFsdWUhLnN1YnN0cmluZygxMSkpXHJcbiAgICAgICAgICAgICAgPyBOdW1iZXIodGhpcy5fZGF0ZVBpcGUudHJhbnNmb3JtKGAwMS8wMS8yMDIwICR7IHRoaXMuZGF0ZVRpbWVDb250cm9sLnZhbHVlIS5zdWJzdHJpbmcoMTEpIH1gLCBcIkhIXCIpKVxyXG4gICAgICAgICAgICAgIDogTnVtYmVyKHRoaXMuZGF0ZVRpbWVDb250cm9sLnZhbHVlIS5zdWJzdHJpbmcoMTEsIDEzKSksXHJcbiAgICAgICAgICAgIG1pbnV0ZTogdGhpcy5kYXRlVGltZUNvbnRyb2wudmFsdWUhLnN1YnN0cmluZygxNCwgMTYpID09IFwiMDBcIiA/IDAgOiB0aGlzLmhvdXJzQ29udHJvbC52YWx1ZS5taW51dGUsXHJcbiAgICAgICAgICB9KTtcclxuICAgICAgICAgIHRoaXMuY29udGFkb3IrKztcclxuICAgICAgICAgIHRoaXMub25FbWl0KCk7XHJcbiAgICAgICAgICBpbnB1dC5zZXRTZWxlY3Rpb25SYW5nZSgxNCwgMTYpO1xyXG4gICAgICAgICAgdGhpcy5jb250YWRvciA9IDA7XHJcbiAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfSBlbHNlIGlmIChOdW1iZXIoaG9yYUFjdHVhbCkgPD0gMiAmJiBOdW1iZXIoaG9yYUFjdHVhbCkgPiAwICYmIHRoaXMuY29udGFkb3IgPiAwICYmIHRoaXMuZm9ybWF0ID09IDI0KSB7XHJcbiAgICAgICAgICBjb25zdCBudWV2b1ZhbG9yID0gYCR7IHZhbG9yQWN0dWFsLnN1YnN0cmluZygwLCAxMSkgfSR7IE51bWJlcihOdW1iZXIoaG9yYUFjdHVhbCkudG9TdHJpbmcoKSArIE51bWJlcihlLmtleSkpID4gMjQgPyAyNCA6IE51bWJlcihob3JhQWN0dWFsKS50b1N0cmluZygpICsgTnVtYmVyKGUua2V5KVxyXG4gICAgICAgICAgICB9JHsgdmFsb3JBY3R1YWwuc3Vic3RyaW5nKDEzKSB9YDtcclxuICAgICAgICAgIHRoaXMuZGF0ZVRpbWVDb250cm9sLnNldFZhbHVlKG51ZXZvVmFsb3IpO1xyXG4gICAgICAgICAgbGV0IGhvdXI7XHJcbiAgICAgICAgICB0cnkge1xyXG4gICAgICAgICAgICBob3VyID0gL1swLTFdWzAtOV06WzAtNl1bMC05XS8udGVzdCh0aGlzLmRhdGVUaW1lQ29udHJvbC52YWx1ZSEuc3Vic3RyaW5nKDExKSlcclxuICAgICAgICAgICAgICA/IE51bWJlcih0aGlzLl9kYXRlUGlwZS50cmFuc2Zvcm0oYDAxLzAxLzIwMjAgJHsgdGhpcy5kYXRlVGltZUNvbnRyb2wudmFsdWUhLnN1YnN0cmluZygxMSkgfWAsIFwiSEhcIikpXHJcbiAgICAgICAgICAgICAgOiBOdW1iZXIodGhpcy5kYXRlVGltZUNvbnRyb2wudmFsdWUhLnN1YnN0cmluZygxMSwgMTMpKTtcclxuICAgICAgICAgIH0gY2F0Y2ggKGVycm9yKSB7XHJcbiAgICAgICAgICAgIGhvdXIgPSBOdW1iZXIodGhpcy5kYXRlVGltZUNvbnRyb2wudmFsdWUhLnN1YnN0cmluZygxMSwgMTMpKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIHRoaXMuaG91cnNDb250cm9sLnNldFZhbHVlKHtcclxuICAgICAgICAgICAgLi4udGhpcy5ob3Vyc0NvbnRyb2wudmFsdWUsXHJcbiAgICAgICAgICAgIGhvdXIsXHJcbiAgICAgICAgICAgIG1pbnV0ZTogdGhpcy5kYXRlVGltZUNvbnRyb2wudmFsdWUhLnN1YnN0cmluZygxNCwgMTYpID09IFwiMDBcIiA/IDAgOiB0aGlzLmhvdXJzQ29udHJvbC52YWx1ZS5taW51dGUsXHJcbiAgICAgICAgICB9KTtcclxuICAgICAgICAgIHRoaXMuY29udGFkb3IrKztcclxuICAgICAgICAgIHRoaXMub25FbWl0KCk7XHJcbiAgICAgICAgICBpbnB1dC5zZXRTZWxlY3Rpb25SYW5nZSgxNCwgMTYpO1xyXG4gICAgICAgICAgdGhpcy5jb250YWRvciA9IDA7XHJcbiAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgIGNvbnN0IG51ZXZvVmFsb3IgPSBgJHsgdmFsb3JBY3R1YWwuc3Vic3RyaW5nKDAsIDExKSB9JHsgZS5rZXkucGFkU3RhcnQoMiwgMCkgfSR7IHZhbG9yQWN0dWFsLnN1YnN0cmluZygxMykgfWA7XHJcbiAgICAgICAgICB0aGlzLmRhdGVUaW1lQ29udHJvbC5zZXRWYWx1ZShudWV2b1ZhbG9yKTtcclxuICAgICAgICAgIGNvbnN0IHJlZ2V4ID0gdGhpcy5mb3JtYXQgPT0gMTIgPyAvWzAtMV1bMC05XTpbMC02XVswLTldIFtBLFBdTS8gOiAvWzAtMV1bMC05XTpbMC02XVswLTldLztcclxuXHJcbiAgICAgICAgICB0aGlzLmhvdXJzQ29udHJvbC5zZXRWYWx1ZSh7XHJcbiAgICAgICAgICAgIC4uLnRoaXMuaG91cnNDb250cm9sLnZhbHVlLFxyXG4gICAgICAgICAgICBob3VyOiByZWdleC50ZXN0KHRoaXMuZGF0ZVRpbWVDb250cm9sLnZhbHVlIS5zdWJzdHJpbmcoMTEpKVxyXG4gICAgICAgICAgICAgID8gTnVtYmVyKHRoaXMuX2RhdGVQaXBlLnRyYW5zZm9ybShgMDEvMDEvMjAyMCAkeyB0aGlzLmRhdGVUaW1lQ29udHJvbC52YWx1ZSEuc3Vic3RyaW5nKDExKSB9YCwgXCJISFwiKSlcclxuICAgICAgICAgICAgICA6IE51bWJlcih0aGlzLmRhdGVUaW1lQ29udHJvbC52YWx1ZSEuc3Vic3RyaW5nKDExLCAxMykpLFxyXG4gICAgICAgICAgICBtaW51dGU6XHJcbiAgICAgICAgICAgICAgdGhpcy5kYXRlVGltZUNvbnRyb2wudmFsdWUhLnN1YnN0cmluZygxNCwgMTYpID09IFwiMDBcIiB8fCB0aGlzLmRhdGVUaW1lQ29udHJvbC52YWx1ZSEuc3Vic3RyaW5nKDE0LCAxNikgPT0gXCItLVwiXHJcbiAgICAgICAgICAgICAgICA/IDBcclxuICAgICAgICAgICAgICAgIDogdGhpcy5ob3Vyc0NvbnRyb2wudmFsdWUubWludXRlLFxyXG4gICAgICAgICAgfSk7XHJcbiAgICAgICAgICB0aGlzLmNvbnRhZG9yKys7XHJcbiAgICAgICAgICBpZiAoKE51bWJlcihlLmtleS5wYWRTdGFydCgyLCAwKSkgPiAxIHx8IHRoaXMuY29udGFkb3IgPiAxKSAmJiB0aGlzLmZvcm1hdCA9PSAxMikge1xyXG4gICAgICAgICAgICB0aGlzLm9uRW1pdCgpO1xyXG4gICAgICAgICAgICBpbnB1dC5zZXRTZWxlY3Rpb25SYW5nZSgxNCwgMTYpO1xyXG4gICAgICAgICAgICB0aGlzLmNvbnRhZG9yID0gMDtcclxuICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgICAgfSBlbHNlIGlmICgoTnVtYmVyKGUua2V5LnBhZFN0YXJ0KDIsIDApKSA+IDIgfHwgdGhpcy5jb250YWRvciA+IDEpICYmIHRoaXMuZm9ybWF0ID09IDI0KSB7XHJcbiAgICAgICAgICAgIHRoaXMub25FbWl0KCk7XHJcbiAgICAgICAgICAgIGlucHV0LnNldFNlbGVjdGlvblJhbmdlKDE0LCAxNik7XHJcbiAgICAgICAgICAgIHRoaXMuY29udGFkb3IgPSAwO1xyXG4gICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgICB9IGVsc2UgdGhpcy5vbkVtaXQoKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgdGhpcy5vbkVtaXQoKTtcclxuICAgICAgICBpbnB1dC5zZXRTZWxlY3Rpb25SYW5nZSgxMSwgMTMpO1xyXG4gICAgICB9XHJcbiAgICAgIC8vPT09PT09PT09PT09PT09PT09PT09PT09PT09PSBNSU5VVE9TID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cclxuICAgICAgZWxzZSBpZiAoaW5wdXQuc2VsZWN0aW9uU3RhcnQgPT0gMTQgJiYgaW5wdXQuc2VsZWN0aW9uRW5kID09IDE2KSB7XHJcbiAgICAgICAgY29uc3QgdmFsb3JBY3R1YWw6IHN0cmluZyA9IHRoaXMuZGF0ZVRpbWVDb250cm9sLnZhbHVlITtcclxuICAgICAgICBjb25zdCBtaW51dG9zQWN0dWFsZXM6IHN0cmluZyA9IHZhbG9yQWN0dWFsLnN1YnN0cmluZygxNCwgMTYpO1xyXG4gICAgICAgIGlmIChtaW51dG9zQWN0dWFsZXMgPT0gXCItLVwiKSB7XHJcbiAgICAgICAgICBjb25zdCBudWV2b1ZhbG9yID0gYCR7IHZhbG9yQWN0dWFsLnN1YnN0cmluZygwLCAxNCkgfSR7IGUua2V5LnBhZFN0YXJ0KDIsIDApIH0keyB2YWxvckFjdHVhbC5zdWJzdHJpbmcoMTYpIH1gO1xyXG4gICAgICAgICAgdGhpcy5kYXRlVGltZUNvbnRyb2wuc2V0VmFsdWUobnVldm9WYWxvcik7XHJcbiAgICAgICAgICB0aGlzLmhvdXJzQ29udHJvbC5zZXRWYWx1ZSh7XHJcbiAgICAgICAgICAgIC4uLnRoaXMuaG91cnNDb250cm9sLnZhbHVlLFxyXG4gICAgICAgICAgICBtaW51dGU6IC9bMC0xXVswLTldOlswLTZdWzAtOV0gW0EsUF1NLy50ZXN0KHRoaXMuZGF0ZVRpbWVDb250cm9sLnZhbHVlIS5zdWJzdHJpbmcoMTEpKVxyXG4gICAgICAgICAgICAgID8gTnVtYmVyKHRoaXMuX2RhdGVQaXBlLnRyYW5zZm9ybShgMDEvMDEvMjAyMCAkeyB0aGlzLmRhdGVUaW1lQ29udHJvbC52YWx1ZSEuc3Vic3RyaW5nKDExKSB9YCwgXCJtbVwiKSlcclxuICAgICAgICAgICAgICA6IE51bWJlcih0aGlzLmRhdGVUaW1lQ29udHJvbC52YWx1ZSEuc3Vic3RyaW5nKDE0LCAxNikpLFxyXG4gICAgICAgICAgfSk7XHJcbiAgICAgICAgICB0aGlzLmNvbnRhZG9yKys7XHJcbiAgICAgICAgICBpZiAoZS5rZXkgPiA1KSB7XHJcbiAgICAgICAgICAgIHRoaXMub25FbWl0KCk7XHJcbiAgICAgICAgICAgIGlmICh0aGlzLmZvcm1hdCA9PSAxMikgaW5wdXQuc2V0U2VsZWN0aW9uUmFuZ2UoMTcsIDE5KTtcclxuICAgICAgICAgICAgZWxzZSBpbnB1dC5zZXRTZWxlY3Rpb25SYW5nZSgxNCwgMTYpO1xyXG4gICAgICAgICAgICB0aGlzLmNvbnRhZG9yID0gMDtcclxuICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgICAgfSBlbHNlIHRoaXMub25FbWl0KCk7XHJcbiAgICAgICAgfSBlbHNlIGlmIChOdW1iZXIobWludXRvc0FjdHVhbGVzKSA8PSA1ICYmIE51bWJlcihtaW51dG9zQWN0dWFsZXMpID4gMCAmJiB0aGlzLmNvbnRhZG9yID4gMCkge1xyXG4gICAgICAgICAgY29uc3QgbnVldm9WYWxvciA9IGAkeyB2YWxvckFjdHVhbC5zdWJzdHJpbmcoMCwgMTQpIH0keyBOdW1iZXIoTnVtYmVyKG1pbnV0b3NBY3R1YWxlcykudG9TdHJpbmcoKSArIE51bWJlcihlLmtleSkpID4gNTkgPyA1OSA6IE51bWJlcihtaW51dG9zQWN0dWFsZXMpLnRvU3RyaW5nKCkgKyBOdW1iZXIoZS5rZXkpXHJcbiAgICAgICAgICAgIH0keyB2YWxvckFjdHVhbC5zdWJzdHJpbmcoMTYpIH1gO1xyXG4gICAgICAgICAgdGhpcy5kYXRlVGltZUNvbnRyb2wuc2V0VmFsdWUobnVldm9WYWxvcik7XHJcbiAgICAgICAgICBsZXQgbWludXRlO1xyXG4gICAgICAgICAgY29uc3QgcmVnZXggPSB0aGlzLmZvcm1hdCA9PSAxMiA/IC9bMC0xXVswLTldOlswLTZdWzAtOV0gW0EsUF1NLyA6IC9bMC0xXVswLTldOlswLTZdWzAtOV0vO1xyXG4gICAgICAgICAgdHJ5IHtcclxuICAgICAgICAgICAgbWludXRlID0gcmVnZXgudGVzdCh0aGlzLmRhdGVUaW1lQ29udHJvbC52YWx1ZSEuc3Vic3RyaW5nKDExKSlcclxuICAgICAgICAgICAgICA/IE51bWJlcih0aGlzLl9kYXRlUGlwZS50cmFuc2Zvcm0oYDAxLzAxLzIwMjAgJHsgdGhpcy5kYXRlVGltZUNvbnRyb2wudmFsdWUhLnN1YnN0cmluZygxMSkgfWAsIFwibW1cIikpXHJcbiAgICAgICAgICAgICAgOiBOdW1iZXIodGhpcy5kYXRlVGltZUNvbnRyb2wudmFsdWUhLnN1YnN0cmluZygxNCwgMTYpKTtcclxuICAgICAgICAgIH0gY2F0Y2ggKGVycm9yKSB7XHJcbiAgICAgICAgICAgIG1pbnV0ZSA9IE51bWJlcih0aGlzLmRhdGVUaW1lQ29udHJvbC52YWx1ZSEuc3Vic3RyaW5nKDE0LCAxNikpO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgdGhpcy5ob3Vyc0NvbnRyb2wuc2V0VmFsdWUoe1xyXG4gICAgICAgICAgICAuLi50aGlzLmhvdXJzQ29udHJvbC52YWx1ZSxcclxuICAgICAgICAgICAgbWludXRlLFxyXG4gICAgICAgICAgfSk7XHJcbiAgICAgICAgICB0aGlzLmNvbnRhZG9yKys7XHJcbiAgICAgICAgICB0aGlzLm9uRW1pdCgpO1xyXG4gICAgICAgICAgaWYgKHRoaXMuZm9ybWF0ID09IDEyKSBpbnB1dC5zZXRTZWxlY3Rpb25SYW5nZSgxNywgMTkpO1xyXG4gICAgICAgICAgZWxzZSBpbnB1dC5zZXRTZWxlY3Rpb25SYW5nZSgxNCwgMTYpO1xyXG4gICAgICAgICAgdGhpcy5jb250YWRvciA9IDA7XHJcbiAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgIGNvbnN0IG51ZXZvVmFsb3IgPSBgJHsgdmFsb3JBY3R1YWwuc3Vic3RyaW5nKDAsIDE0KSB9JHsgZS5rZXkucGFkU3RhcnQoMiwgMCkgfSR7IHZhbG9yQWN0dWFsLnN1YnN0cmluZygxNikgfWA7XHJcbiAgICAgICAgICB0aGlzLmRhdGVUaW1lQ29udHJvbC5zZXRWYWx1ZShudWV2b1ZhbG9yKTtcclxuICAgICAgICAgIHRoaXMuaG91cnNDb250cm9sLnNldFZhbHVlKHtcclxuICAgICAgICAgICAgLi4udGhpcy5ob3Vyc0NvbnRyb2wudmFsdWUsXHJcbiAgICAgICAgICAgIG1pbnV0ZTogL1swLTFdWzAtOV06WzAtNl1bMC05XSBbQSxQXU0vLnRlc3QodGhpcy5kYXRlVGltZUNvbnRyb2wudmFsdWUhLnN1YnN0cmluZygxMSkpXHJcbiAgICAgICAgICAgICAgPyBOdW1iZXIodGhpcy5fZGF0ZVBpcGUudHJhbnNmb3JtKGAwMS8wMS8yMDIwICR7IHRoaXMuZGF0ZVRpbWVDb250cm9sLnZhbHVlIS5zdWJzdHJpbmcoMTEpIH1gLCBcIm1tXCIpKVxyXG4gICAgICAgICAgICAgIDogTnVtYmVyKHRoaXMuZGF0ZVRpbWVDb250cm9sLnZhbHVlIS5zdWJzdHJpbmcoMTQsIDE2KSksXHJcbiAgICAgICAgICB9KTtcclxuICAgICAgICAgIHRoaXMuY29udGFkb3IrKztcclxuICAgICAgICAgIGlmIChOdW1iZXIoZS5rZXkucGFkU3RhcnQoMiwgMCkpID4gNSB8fCB0aGlzLmNvbnRhZG9yID4gMSkge1xyXG4gICAgICAgICAgICB0aGlzLm9uRW1pdCgpO1xyXG4gICAgICAgICAgICBpZiAodGhpcy5mb3JtYXQgPT0gMTIpIGlucHV0LnNldFNlbGVjdGlvblJhbmdlKDE3LCAxOSk7XHJcbiAgICAgICAgICAgIGVsc2UgaW5wdXQuc2V0U2VsZWN0aW9uUmFuZ2UoMTQsIDE2KTtcclxuICAgICAgICAgICAgdGhpcy5jb250YWRvciA9IDA7XHJcbiAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICAgIH0gZWxzZSB0aGlzLm9uRW1pdCgpO1xyXG4gICAgICAgIH1cclxuICAgICAgICB0aGlzLm9uRW1pdCgpO1xyXG4gICAgICAgIGlucHV0LnNldFNlbGVjdGlvblJhbmdlKDE0LCAxNik7XHJcbiAgICAgIH1cclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIC8vPT09PT09PT09PT09PT09PT09PT09PT09IEVWRU5UT1MgVEVDTEFETyA9PT09PT09PT09PT09PT09PT09PT09PT09PT1cclxuICAgICAgaWYgKGUua2V5ID09IFwiQXJyb3dSaWdodFwiKSB7XHJcbiAgICAgICAgaWYgKGlucHV0LnNlbGVjdGlvblN0YXJ0ID09IDAgJiYgaW5wdXQuc2VsZWN0aW9uRW5kID09IDIpIHtcclxuICAgICAgICAgIGlucHV0LnNldFNlbGVjdGlvblJhbmdlKDMsIDUpO1xyXG4gICAgICAgICAgdGhpcy5jb250YWRvciA9IDA7XHJcbiAgICAgICAgfSBlbHNlIGlmIChpbnB1dC5zZWxlY3Rpb25TdGFydCA9PSAzICYmIGlucHV0LnNlbGVjdGlvbkVuZCA9PSA1KSB7XHJcbiAgICAgICAgICBpbnB1dC5zZXRTZWxlY3Rpb25SYW5nZSg2LCAxMCk7XHJcbiAgICAgICAgICB0aGlzLmNvbnRhZG9yID0gMDtcclxuICAgICAgICB9IGVsc2UgaWYgKGlucHV0LnNlbGVjdGlvblN0YXJ0ID09IDYgJiYgaW5wdXQuc2VsZWN0aW9uRW5kID09IDEwKSB7XHJcbiAgICAgICAgICBpbnB1dC5zZXRTZWxlY3Rpb25SYW5nZSgxMSwgMTMpO1xyXG4gICAgICAgICAgdGhpcy5jb250YWRvciA9IDA7XHJcbiAgICAgICAgfSBlbHNlIGlmIChpbnB1dC5zZWxlY3Rpb25TdGFydCA9PSAxMSAmJiBpbnB1dC5zZWxlY3Rpb25FbmQgPT0gMTMpIHtcclxuICAgICAgICAgIGlucHV0LnNldFNlbGVjdGlvblJhbmdlKDE0LCAxNik7XHJcbiAgICAgICAgICB0aGlzLmNvbnRhZG9yID0gMDtcclxuICAgICAgICB9IGVsc2UgaWYgKGlucHV0LnNlbGVjdGlvblN0YXJ0ID09IDE0ICYmIGlucHV0LnNlbGVjdGlvbkVuZCA9PSAxNikge1xyXG4gICAgICAgICAgaWYgKHRoaXMuZm9ybWF0ID09IDEyKSBpbnB1dC5zZXRTZWxlY3Rpb25SYW5nZSgxNywgMTkpO1xyXG4gICAgICAgICAgZWxzZSBpZiAodGhpcy5mb3JtYXQgPT0gMjQpIHRoaXMuYnRuT3Blbj8ubmF0aXZlRWxlbWVudC5mb2N1cygpO1xyXG4gICAgICAgICAgdGhpcy5jb250YWRvciA9IDA7XHJcbiAgICAgICAgfSBlbHNlIGlmIChpbnB1dC5zZWxlY3Rpb25TdGFydCA9PSAxNyAmJiBpbnB1dC5zZWxlY3Rpb25FbmQgPT0gMTkpIHtcclxuICAgICAgICAgIHRoaXMuYnRuT3Blbj8ubmF0aXZlRWxlbWVudC5mb2N1cygpO1xyXG4gICAgICAgICAgdGhpcy5jb250YWRvciA9IDA7XHJcbiAgICAgICAgfVxyXG4gICAgICB9IGVsc2UgaWYgKGUua2V5ID09IFwiQXJyb3dMZWZ0XCIpIHtcclxuICAgICAgICBpZiAoaW5wdXQuc2VsZWN0aW9uU3RhcnQgPT0gMCAmJiBpbnB1dC5zZWxlY3Rpb25FbmQgPT0gMikge1xyXG4gICAgICAgICAgdGhpcy5nb0JhY2soKTtcclxuICAgICAgICAgIHRoaXMuY29udGFkb3IgPSAwO1xyXG4gICAgICAgIH0gZWxzZSBpZiAoaW5wdXQuc2VsZWN0aW9uU3RhcnQgPT0gMyAmJiBpbnB1dC5zZWxlY3Rpb25FbmQgPT0gNSkge1xyXG4gICAgICAgICAgaW5wdXQuc2V0U2VsZWN0aW9uUmFuZ2UoMCwgMik7XHJcbiAgICAgICAgICB0aGlzLmNvbnRhZG9yID0gMDtcclxuICAgICAgICB9IGVsc2UgaWYgKGlucHV0LnNlbGVjdGlvblN0YXJ0ID09IDYgJiYgaW5wdXQuc2VsZWN0aW9uRW5kID09IDEwKSB7XHJcbiAgICAgICAgICBpbnB1dC5zZXRTZWxlY3Rpb25SYW5nZSgzLCA1KTtcclxuICAgICAgICAgIHRoaXMuY29udGFkb3IgPSAwO1xyXG4gICAgICAgIH0gZWxzZSBpZiAoaW5wdXQuc2VsZWN0aW9uU3RhcnQgPT0gMTEgJiYgaW5wdXQuc2VsZWN0aW9uRW5kID09IDEzKSB7XHJcbiAgICAgICAgICBpbnB1dC5zZXRTZWxlY3Rpb25SYW5nZSg2LCAxMCk7XHJcbiAgICAgICAgICB0aGlzLmNvbnRhZG9yID0gMDtcclxuICAgICAgICB9IGVsc2UgaWYgKGlucHV0LnNlbGVjdGlvblN0YXJ0ID09IDE0ICYmIGlucHV0LnNlbGVjdGlvbkVuZCA9PSAxNikge1xyXG4gICAgICAgICAgaW5wdXQuc2V0U2VsZWN0aW9uUmFuZ2UoMTEsIDEzKTtcclxuICAgICAgICAgIHRoaXMuY29udGFkb3IgPSAwO1xyXG4gICAgICAgIH0gZWxzZSBpZiAoaW5wdXQuc2VsZWN0aW9uU3RhcnQgPT0gMTcgJiYgaW5wdXQuc2VsZWN0aW9uRW5kID09IDE5KSB7XHJcbiAgICAgICAgICBpbnB1dC5zZXRTZWxlY3Rpb25SYW5nZSgxNCwgMTYpO1xyXG4gICAgICAgICAgdGhpcy5jb250YWRvciA9IDA7XHJcbiAgICAgICAgfVxyXG4gICAgICB9IGVsc2UgaWYgKGUua2V5LnRvTG93ZXJDYXNlKCkgPT0gXCJhXCIpIHtcclxuICAgICAgICBpZiAoaW5wdXQuc2VsZWN0aW9uU3RhcnQgPT0gMTcgJiYgaW5wdXQuc2VsZWN0aW9uRW5kID09IDE5KSB7XHJcbiAgICAgICAgICBjb25zdCB2YWxvckFjdHVhbCA9IHRoaXMuZGF0ZVRpbWVDb250cm9sLnZhbHVlO1xyXG4gICAgICAgICAgY29uc3QgbnVldm9WYWxvciA9IGAkeyB2YWxvckFjdHVhbCEuc3Vic3RyaW5nKDAsIDE3KSB9QU1gO1xyXG4gICAgICAgICAgdGhpcy5kYXRlVGltZUNvbnRyb2wuc2V0VmFsdWUobnVldm9WYWxvcik7XHJcbiAgICAgICAgICB0aGlzLmhvdXJzQ29udHJvbC5zZXRWYWx1ZSh7XHJcbiAgICAgICAgICAgIC4uLnRoaXMuaG91cnNDb250cm9sLnZhbHVlLFxyXG4gICAgICAgICAgICBob3VyOiBOdW1iZXIodGhpcy5fZGF0ZVBpcGUudHJhbnNmb3JtKGAwMS8wMS8yMDIwICR7IHRoaXMuZGF0ZVRpbWVDb250cm9sLnZhbHVlIS5zdWJzdHJpbmcoMTEpIH1gLCBcIkhIXCIpKSxcclxuICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgdGhpcy5vbkVtaXQoKTtcclxuICAgICAgICAgIGlucHV0LnNldFNlbGVjdGlvblJhbmdlKDE3LCAxOSk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9IGVsc2UgaWYgKGUua2V5LnRvTG93ZXJDYXNlKCkgPT0gXCJwXCIpIHtcclxuICAgICAgICBpZiAoaW5wdXQuc2VsZWN0aW9uU3RhcnQgPT0gMTcgJiYgaW5wdXQuc2VsZWN0aW9uRW5kID09IDE5KSB7XHJcbiAgICAgICAgICBjb25zdCB2YWxvckFjdHVhbCA9IHRoaXMuZGF0ZVRpbWVDb250cm9sLnZhbHVlO1xyXG4gICAgICAgICAgY29uc3QgbnVldm9WYWxvciA9IGAkeyB2YWxvckFjdHVhbCEuc3Vic3RyaW5nKDAsIDE3KSB9UE1gO1xyXG4gICAgICAgICAgdGhpcy5kYXRlVGltZUNvbnRyb2wuc2V0VmFsdWUobnVldm9WYWxvcik7XHJcbiAgICAgICAgICB0aGlzLmhvdXJzQ29udHJvbC5zZXRWYWx1ZSh7XHJcbiAgICAgICAgICAgIC4uLnRoaXMuaG91cnNDb250cm9sLnZhbHVlLFxyXG4gICAgICAgICAgICBob3VyOiBOdW1iZXIodGhpcy5fZGF0ZVBpcGUudHJhbnNmb3JtKGAwMS8wMS8yMDIwICR7IHRoaXMuZGF0ZVRpbWVDb250cm9sLnZhbHVlIS5zdWJzdHJpbmcoMTEpIH1gLCBcIkhIXCIpKSxcclxuICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgdGhpcy5vbkVtaXQoKTtcclxuICAgICAgICAgIGlucHV0LnNldFNlbGVjdGlvblJhbmdlKDE3LCAxOSk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9IGVsc2UgaWYgKGUuY29kZSA9PSBcIlNwYWNlXCIpIHtcclxuICAgICAgICBjb25zdCB2YWxvckFjdHVhbDogc3RyaW5nID0gdGhpcy5kYXRlVGltZUNvbnRyb2wudmFsdWUhO1xyXG4gICAgICAgIGNvbnN0IGRpYUFjdHVhbDogc3RyaW5nID0gdGhpcy50b2RheS5kYXkudG9TdHJpbmcoKTtcclxuICAgICAgICBjb25zdCBtZXNBY3R1YWw6IHN0cmluZyA9IHRoaXMudG9kYXkubW9udGgudG9TdHJpbmcoKTtcclxuICAgICAgICBjb25zdCBhbmlvQWN0dWFsOiBzdHJpbmcgPSB0aGlzLnRvZGF5LnllYXIudG9TdHJpbmcoKTtcclxuICAgICAgICBjb25zdCBob3JhQWN0dWFsOiBzdHJpbmcgPSBEYXRlVXRpbC50b1N0ckZvcm1hdChEYXRlVXRpbC5ub3coKSwgdGhpcy5mb3JtYXQgPT0gMjQgPyBcIk1BU0tfMjRfSE9VUlNcIiA6IFwiTUFTS18xMl9IT1VSU1wiKTtcclxuICAgICAgICBjb25zdCB0OiBzdHJpbmcgPSBEYXRlVXRpbC50b1N0ckZvcm1hdChEYXRlVXRpbC5ub3coKSwgXCJNSUREQVlfSU5ESUNBVE9SXCIpO1xyXG4gICAgICAgIGNvbnN0IG1pbnV0b3NBY3R1YWxlczogc3RyaW5nID0gRGF0ZVV0aWwuZ2V0TWludXRlcyhEYXRlVXRpbC5ub3coKSkudG9TdHJpbmcoKS5wYWRTdGFydCgyLCBcIjBcIik7XHJcbiAgICAgICAgaWYgKGlucHV0LnNlbGVjdGlvblN0YXJ0ID09IDAgJiYgaW5wdXQuc2VsZWN0aW9uRW5kID09IDIpIHtcclxuICAgICAgICAgIGNvbnN0IG51ZXZvVmFsb3IgPSBgJHsgZGlhQWN0dWFsLnBhZFN0YXJ0KDIsIFwiMFwiKSB9JHsgdmFsb3JBY3R1YWwuc3Vic3RyaW5nKDIpIH1gO1xyXG4gICAgICAgICAgdGhpcy5kYXRlVGltZUNvbnRyb2wuc2V0VmFsdWUobnVldm9WYWxvcik7XHJcbiAgICAgICAgICB0aGlzLmRhdGVDb250cm9sLnNldFZhbHVlKFxyXG4gICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgLi4udGhpcy5kYXRlQ29udHJvbC52YWx1ZSxcclxuICAgICAgICAgICAgICBkYXk6IHRoaXMudG9kYXkuZGF5LFxyXG4gICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICB7IGVtaXRFdmVudDogZmFsc2UgfVxyXG4gICAgICAgICAgKTtcclxuICAgICAgICAgIGlucHV0LnNldFNlbGVjdGlvblJhbmdlKDMsIDUpO1xyXG4gICAgICAgIH0gZWxzZSBpZiAoaW5wdXQuc2VsZWN0aW9uU3RhcnQgPT0gMyAmJiBpbnB1dC5zZWxlY3Rpb25FbmQgPT0gNSkge1xyXG4gICAgICAgICAgY29uc3QgbnVldm9WYWxvciA9IGAkeyB2YWxvckFjdHVhbC5zdWJzdHJpbmcoMCwgMykgfSR7IG1lc0FjdHVhbC5wYWRTdGFydCgyLCBcIjBcIikgfSR7IHZhbG9yQWN0dWFsLnN1YnN0cmluZyg1KSB9YDtcclxuICAgICAgICAgIHRoaXMuZGF0ZVRpbWVDb250cm9sLnNldFZhbHVlKG51ZXZvVmFsb3IpO1xyXG4gICAgICAgICAgdGhpcy5kYXRlQ29udHJvbC5zZXRWYWx1ZShcclxuICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgIC4uLnRoaXMuZGF0ZUNvbnRyb2wudmFsdWUsXHJcbiAgICAgICAgICAgICAgbW9udGg6IHRoaXMudG9kYXkubW9udGgsXHJcbiAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgIHsgZW1pdEV2ZW50OiBmYWxzZSB9XHJcbiAgICAgICAgICApO1xyXG4gICAgICAgICAgaW5wdXQuc2V0U2VsZWN0aW9uUmFuZ2UoNiwgMTApO1xyXG4gICAgICAgIH0gZWxzZSBpZiAoaW5wdXQuc2VsZWN0aW9uU3RhcnQgPT0gNiAmJiBpbnB1dC5zZWxlY3Rpb25FbmQgPT0gMTApIHtcclxuICAgICAgICAgIGNvbnN0IG51ZXZvVmFsb3IgPSBgJHsgdmFsb3JBY3R1YWwuc3Vic3RyaW5nKDAsIDYpIH0keyBhbmlvQWN0dWFsLnBhZFN0YXJ0KDQsIFwiMFwiKSB9JHsgdmFsb3JBY3R1YWwuc3Vic3RyaW5nKDEwKSB9YDtcclxuICAgICAgICAgIHRoaXMuZGF0ZVRpbWVDb250cm9sLnNldFZhbHVlKG51ZXZvVmFsb3IpO1xyXG4gICAgICAgICAgdGhpcy5kYXRlQ29udHJvbC5zZXRWYWx1ZShcclxuICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgIC4uLnRoaXMuZGF0ZUNvbnRyb2wudmFsdWUsXHJcbiAgICAgICAgICAgICAgeWVhcjogdGhpcy50b2RheS55ZWFyLFxyXG4gICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICB7IGVtaXRFdmVudDogZmFsc2UgfVxyXG4gICAgICAgICAgKTtcclxuICAgICAgICAgIGlucHV0LnNldFNlbGVjdGlvblJhbmdlKDExLCAxMyk7XHJcbiAgICAgICAgfSBlbHNlIGlmIChpbnB1dC5zZWxlY3Rpb25TdGFydCA9PSAxMSAmJiBpbnB1dC5zZWxlY3Rpb25FbmQgPT0gMTMpIHtcclxuICAgICAgICAgIGxldCBudWV2b1ZhbG9yO1xyXG4gICAgICAgICAgaWYgKHRoaXMuZm9ybWF0ID09IDI0KSBudWV2b1ZhbG9yID0gYCR7IHZhbG9yQWN0dWFsLnN1YnN0cmluZygwLCAxMSkgfSR7IGhvcmFBY3R1YWwgfSR7IHZhbG9yQWN0dWFsLnN1YnN0cmluZygxMykgfWA7XHJcbiAgICAgICAgICBlbHNlIGlmICh0aGlzLmZvcm1hdCA9PSAxMilcclxuICAgICAgICAgICAgbnVldm9WYWxvciA9IGAkeyB2YWxvckFjdHVhbC5zdWJzdHJpbmcoMCwgMTEpIH0keyBob3JhQWN0dWFsIH0keyB2YWxvckFjdHVhbC5zdWJzdHJpbmcoMTMsIDE3KSB9JHsgdC50b1VwcGVyQ2FzZSgpIH1gO1xyXG5cclxuICAgICAgICAgIHRoaXMuZGF0ZVRpbWVDb250cm9sLnNldFZhbHVlKG51ZXZvVmFsb3IhKTtcclxuICAgICAgICAgIHRoaXMuaG91cnNDb250cm9sLnNldFZhbHVlKHtcclxuICAgICAgICAgICAgLi4udGhpcy5ob3Vyc0NvbnRyb2wudmFsdWUsXHJcbiAgICAgICAgICAgIG1pbnV0ZTogdGhpcy5ob3Vyc0NvbnRyb2wudmFsdWUubWludXRlICE9IG51bGwgPyB0aGlzLmhvdXJzQ29udHJvbC52YWx1ZS5taW51dGUgOiAwLFxyXG4gICAgICAgICAgICBob3VyOiB0aGlzLmZvcm1hdCA9PSAxMiA/IE51bWJlcihob3JhQWN0dWFsKSA6IE51bWJlcihob3JhQWN0dWFsKSArIDEyLFxyXG4gICAgICAgICAgfSk7XHJcbiAgICAgICAgICBpbnB1dC5zZXRTZWxlY3Rpb25SYW5nZSgxNCwgMTYpO1xyXG4gICAgICAgIH0gZWxzZSBpZiAoaW5wdXQuc2VsZWN0aW9uU3RhcnQgPT0gMTQgJiYgaW5wdXQuc2VsZWN0aW9uRW5kID09IDE2KSB7XHJcbiAgICAgICAgICBjb25zdCBudWV2b1ZhbG9yID0gYCR7IHZhbG9yQWN0dWFsLnN1YnN0cmluZygwLCAxNCkgfSR7IG1pbnV0b3NBY3R1YWxlcy5wYWRTdGFydCgyLCBcIjBcIikgfSR7IHZhbG9yQWN0dWFsLnN1YnN0cmluZygxNikgfWA7XHJcbiAgICAgICAgICB0aGlzLmRhdGVUaW1lQ29udHJvbC5zZXRWYWx1ZShudWV2b1ZhbG9yKTtcclxuICAgICAgICAgIHRoaXMuaG91cnNDb250cm9sLnNldFZhbHVlKHtcclxuICAgICAgICAgICAgLi4udGhpcy5ob3Vyc0NvbnRyb2wudmFsdWUsXHJcbiAgICAgICAgICAgIG1pbnV0ZTogTnVtYmVyKG1pbnV0b3NBY3R1YWxlcyksXHJcbiAgICAgICAgICB9KTtcclxuICAgICAgICAgIGlmICh0aGlzLmZvcm1hdCA9PSAxMikgaW5wdXQuc2V0U2VsZWN0aW9uUmFuZ2UoMTcsIDE5KTtcclxuICAgICAgICAgIGVsc2UgaW5wdXQuc2V0U2VsZWN0aW9uUmFuZ2UoMTQsIDE2KTtcclxuICAgICAgICB9XHJcbiAgICAgICAgdGhpcy5vbkVtaXQoKTtcclxuICAgICAgfSBlbHNlIGlmIChlLmtleSA9PSBcIkVudGVyXCIgfHwgZS5rZXkgPT0gXCJBcnJvd0Rvd25cIikge1xyXG4gICAgICAgIHRoaXMuZ29OZXh0KCk7XHJcbiAgICAgIH0gZWxzZSBpZiAoZS5rZXkgPT0gXCJBcnJvd1VwXCIpIHtcclxuICAgICAgICB0aGlzLmdvQmFjaygpO1xyXG4gICAgICB9IGVsc2UgaWYgKGUua2V5ID09IFwiRGVsZXRlXCIpIHtcclxuICAgICAgICB0aGlzLmxpbXBpYXJUb2RvKCk7XHJcbiAgICAgIH0gZWxzZSBpZiAoZS5rZXkgPT0gXCJCYWNrc3BhY2VcIikge1xyXG4gICAgICAgIHRoaXMubGltcGlhcigpO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBnb05leHQgKCk6IHZvaWQge1xyXG4gICAgaWYgKHRoaXMubmV4dCAhPSB1bmRlZmluZWQpIHtcclxuICAgICAgaWYgKHRoaXMubmV4dC5kaXNhYmxlZCB8fCB0aGlzLm5leHQucmVhZG9ubHkpIHtcclxuICAgICAgICBpZiAodGhpcy5uZXh0SXNEaXNhYmxlICE9IHVuZGVmaW5lZCkge1xyXG4gICAgICAgICAgdGhpcy5uZXh0SXNEaXNhYmxlLmZvY3VzKCk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIHRoaXMubmV4dC5mb2N1cygpO1xyXG4gICAgICB9XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICBpZiAodGhpcy5uZXh0SXNEaXNhYmxlICE9IHVuZGVmaW5lZCkge1xyXG4gICAgICAgIHRoaXMubmV4dElzRGlzYWJsZS5mb2N1cygpO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIHRoaXMub25OZXh0LmVtaXQoKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgZ29CYWNrICgpOiB2b2lkIHtcclxuICAgIGlmICh0aGlzLmJhY2sgIT0gdW5kZWZpbmVkKSB7XHJcbiAgICAgIGlmICh0aGlzLmJhY2suZGlzYWJsZWQgfHwgdGhpcy5iYWNrLnJlYWRvbmx5KSB7XHJcbiAgICAgICAgaWYgKHRoaXMuYmFja0lzRGlzYWJsZSAhPSB1bmRlZmluZWQpIHtcclxuICAgICAgICAgIHRoaXMuYmFja0lzRGlzYWJsZS5mb2N1cygpO1xyXG4gICAgICAgIH1cclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICB0aGlzLmJhY2suZm9jdXMoKTtcclxuICAgICAgfVxyXG4gICAgfSBlbHNlIHtcclxuICAgICAgaWYgKHRoaXMuYmFja0lzRGlzYWJsZSAhPSB1bmRlZmluZWQpIHtcclxuICAgICAgICB0aGlzLmJhY2tJc0Rpc2FibGUuZm9jdXMoKTtcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICB0aGlzLm9uQmFjay5lbWl0KCk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcblxyXG4gIGxpbXBpYXJUb2RvICgpIHtcclxuICAgIHRoaXMuY29udGFkb3IgPSAwO1xyXG4gICAgdGhpcy5ob3Vyc0NvbnRyb2wuc2V0VmFsdWUoXHJcbiAgICAgIHtcclxuICAgICAgICBob3VyOiBudWxsLFxyXG4gICAgICAgIG1pbnV0ZTogbnVsbCxcclxuICAgICAgfSxcclxuICAgICAgeyBlbWl0RXZlbnQ6IGZhbHNlIH1cclxuICAgICk7XHJcbiAgICB0aGlzLmRhdGVDb250cm9sLnNldFZhbHVlKFxyXG4gICAgICB7XHJcbiAgICAgICAgeWVhcjogbnVsbCxcclxuICAgICAgICBtb250aDogbnVsbCxcclxuICAgICAgICBkYXk6IG51bGwsXHJcbiAgICAgIH0sXHJcbiAgICAgIHsgZW1pdEV2ZW50OiBmYWxzZSB9XHJcbiAgICApO1xyXG4gICAgaWYgKHRoaXMuZm9ybWF0ID09IDEyKSB0aGlzLmRhdGVUaW1lQ29udHJvbC5zZXRWYWx1ZShcImRkL21tL3l5eXkgLS06LS0gLS1cIik7XHJcbiAgICBlbHNlIGlmICh0aGlzLmZvcm1hdCA9PSAyNCkgdGhpcy5kYXRlVGltZUNvbnRyb2wuc2V0VmFsdWUoXCJkZC9tbS95eXl5IC0tOi0tXCIpO1xyXG4gICAgdGhpcy5pbnB1dERhdGVUaW1lLm5hdGl2ZUVsZW1lbnQuc2V0U2VsZWN0aW9uUmFuZ2UoMCwgMik7XHJcbiAgICB0aGlzLm9uQ2hhbmdlKG51bGwpO1xyXG4gICAgdGhpcy5vblRvdWNoKCk7XHJcbiAgfVxyXG5cclxuICBsaW1waWFyICgpIHtcclxuICAgIGlmICh0aGlzLmlucHV0RGF0ZVRpbWUubmF0aXZlRWxlbWVudC5zZWxlY3Rpb25TdGFydCA9PSAwICYmIHRoaXMuaW5wdXREYXRlVGltZS5uYXRpdmVFbGVtZW50LnNlbGVjdGlvbkVuZCA9PSAyKSB7XHJcbiAgICAgIHRoaXMuZGF0ZUNvbnRyb2wuc2V0VmFsdWUoXHJcbiAgICAgICAge1xyXG4gICAgICAgICAgLi4udGhpcy5kYXRlQ29udHJvbC52YWx1ZSxcclxuICAgICAgICAgIGRheTogbnVsbCxcclxuICAgICAgICB9LFxyXG4gICAgICAgIHsgZW1pdEV2ZW50OiBmYWxzZSB9XHJcbiAgICAgICk7XHJcbiAgICAgIHRoaXMuZGF0ZVRpbWVDb250cm9sLnNldFZhbHVlKGBkZCR7IHRoaXMuZGF0ZVRpbWVDb250cm9sLnZhbHVlIS5zdWJzdHJpbmcoMikgfWApO1xyXG4gICAgICB0aGlzLm9uQ2hhbmdlKG51bGwpO1xyXG4gICAgICB0aGlzLm9uVG91Y2goKTtcclxuICAgICAgdGhpcy5pbnB1dERhdGVUaW1lLm5hdGl2ZUVsZW1lbnQuc2V0U2VsZWN0aW9uUmFuZ2UoMCwgMik7XHJcbiAgICAgIHRoaXMuY29udGFkb3IgPSAwO1xyXG4gICAgfSBlbHNlIGlmICh0aGlzLmlucHV0RGF0ZVRpbWUubmF0aXZlRWxlbWVudC5zZWxlY3Rpb25TdGFydCA9PSAzICYmIHRoaXMuaW5wdXREYXRlVGltZS5uYXRpdmVFbGVtZW50LnNlbGVjdGlvbkVuZCA9PSA1KSB7XHJcbiAgICAgIHRoaXMuZGF0ZUNvbnRyb2wuc2V0VmFsdWUoXHJcbiAgICAgICAge1xyXG4gICAgICAgICAgLi4udGhpcy5kYXRlQ29udHJvbC52YWx1ZSxcclxuICAgICAgICAgIG1vbnRoOiBudWxsLFxyXG4gICAgICAgIH0sXHJcbiAgICAgICAgeyBlbWl0RXZlbnQ6IGZhbHNlIH1cclxuICAgICAgKTtcclxuICAgICAgdGhpcy5kYXRlVGltZUNvbnRyb2wuc2V0VmFsdWUoYCR7IHRoaXMuZGF0ZVRpbWVDb250cm9sLnZhbHVlIS5zdWJzdHJpbmcoMCwgMykgfW1tJHsgdGhpcy5kYXRlVGltZUNvbnRyb2wudmFsdWUhLnN1YnN0cmluZyg1KSB9YCk7XHJcbiAgICAgIHRoaXMub25DaGFuZ2UobnVsbCk7XHJcbiAgICAgIHRoaXMub25Ub3VjaCgpO1xyXG4gICAgICB0aGlzLmlucHV0RGF0ZVRpbWUubmF0aXZlRWxlbWVudC5zZXRTZWxlY3Rpb25SYW5nZSgzLCA1KTtcclxuICAgICAgdGhpcy5jb250YWRvciA9IDA7XHJcbiAgICB9IGVsc2UgaWYgKHRoaXMuaW5wdXREYXRlVGltZS5uYXRpdmVFbGVtZW50LnNlbGVjdGlvblN0YXJ0ID09IDYgJiYgdGhpcy5pbnB1dERhdGVUaW1lLm5hdGl2ZUVsZW1lbnQuc2VsZWN0aW9uRW5kID09IDEwKSB7XHJcbiAgICAgIHRoaXMuZGF0ZUNvbnRyb2wuc2V0VmFsdWUoXHJcbiAgICAgICAge1xyXG4gICAgICAgICAgLi4udGhpcy5kYXRlQ29udHJvbC52YWx1ZSxcclxuICAgICAgICAgIHllYXI6IG51bGwsXHJcbiAgICAgICAgfSxcclxuICAgICAgICB7IGVtaXRFdmVudDogZmFsc2UgfVxyXG4gICAgICApO1xyXG4gICAgICB0aGlzLmRhdGVUaW1lQ29udHJvbC5zZXRWYWx1ZShgJHsgdGhpcy5kYXRlVGltZUNvbnRyb2wudmFsdWUhLnN1YnN0cmluZygwLCA2KSB9eXl5eSR7IHRoaXMuZGF0ZVRpbWVDb250cm9sLnZhbHVlIS5zdWJzdHJpbmcoMTApIH1gKTtcclxuICAgICAgdGhpcy5vbkNoYW5nZShudWxsKTtcclxuICAgICAgdGhpcy5vblRvdWNoKCk7XHJcbiAgICAgIHRoaXMuaW5wdXREYXRlVGltZS5uYXRpdmVFbGVtZW50LnNldFNlbGVjdGlvblJhbmdlKDYsIDEwKTtcclxuICAgICAgdGhpcy5jb250YWRvciA9IDA7XHJcbiAgICB9IGVsc2UgaWYgKHRoaXMuaW5wdXREYXRlVGltZS5uYXRpdmVFbGVtZW50LnNlbGVjdGlvblN0YXJ0ID09IDExICYmIHRoaXMuaW5wdXREYXRlVGltZS5uYXRpdmVFbGVtZW50LnNlbGVjdGlvbkVuZCA9PSAxMykge1xyXG4gICAgICB0aGlzLmhvdXJzQ29udHJvbC5zZXRWYWx1ZShcclxuICAgICAgICB7XHJcbiAgICAgICAgICAuLi50aGlzLmRhdGVDb250cm9sLnZhbHVlLFxyXG4gICAgICAgICAgaG91cjogbnVsbCxcclxuICAgICAgICB9LFxyXG4gICAgICAgIHsgZW1pdEV2ZW50OiBmYWxzZSB9XHJcbiAgICAgICk7XHJcbiAgICAgIHRoaXMuZGF0ZVRpbWVDb250cm9sLnNldFZhbHVlKGAkeyB0aGlzLmRhdGVUaW1lQ29udHJvbC52YWx1ZSEuc3Vic3RyaW5nKDAsIDExKSB9LS0keyB0aGlzLmRhdGVUaW1lQ29udHJvbC52YWx1ZSEuc3Vic3RyaW5nKDEzKSB9YCk7XHJcbiAgICAgIHRoaXMub25DaGFuZ2UobnVsbCk7XHJcbiAgICAgIHRoaXMub25Ub3VjaCgpO1xyXG4gICAgICB0aGlzLmlucHV0RGF0ZVRpbWUubmF0aXZlRWxlbWVudC5zZXRTZWxlY3Rpb25SYW5nZSgxMSwgMTMpO1xyXG4gICAgICB0aGlzLmNvbnRhZG9yID0gMDtcclxuICAgIH0gZWxzZSBpZiAodGhpcy5pbnB1dERhdGVUaW1lLm5hdGl2ZUVsZW1lbnQuc2VsZWN0aW9uU3RhcnQgPT0gMTQgJiYgdGhpcy5pbnB1dERhdGVUaW1lLm5hdGl2ZUVsZW1lbnQuc2VsZWN0aW9uRW5kID09IDE2KSB7XHJcbiAgICAgIHRoaXMuaG91cnNDb250cm9sLnNldFZhbHVlKFxyXG4gICAgICAgIHtcclxuICAgICAgICAgIC4uLnRoaXMuZGF0ZUNvbnRyb2wudmFsdWUsXHJcbiAgICAgICAgICBtaW51dGU6IG51bGwsXHJcbiAgICAgICAgfSxcclxuICAgICAgICB7IGVtaXRFdmVudDogZmFsc2UgfVxyXG4gICAgICApO1xyXG4gICAgICB0aGlzLmRhdGVUaW1lQ29udHJvbC5zZXRWYWx1ZShgJHsgdGhpcy5kYXRlVGltZUNvbnRyb2wudmFsdWUhLnN1YnN0cmluZygwLCAxNCkgfS0tJHsgdGhpcy5kYXRlVGltZUNvbnRyb2wudmFsdWUhLnN1YnN0cmluZygxNikgfWApO1xyXG4gICAgICB0aGlzLm9uQ2hhbmdlKG51bGwpO1xyXG4gICAgICB0aGlzLm9uVG91Y2goKTtcclxuICAgICAgdGhpcy5pbnB1dERhdGVUaW1lLm5hdGl2ZUVsZW1lbnQuc2V0U2VsZWN0aW9uUmFuZ2UoMTQsIDE2KTtcclxuICAgICAgdGhpcy5jb250YWRvciA9IDA7XHJcbiAgICB9XHJcbiAgfVxyXG4gIHByZXZlbnREZWZhdWx0IChlOiBhbnkpIHtcclxuICAgIGUucHJldmVudERlZmF1bHQoKTtcclxuICAgIHJldHVybiBmYWxzZTtcclxuICB9XHJcblxyXG4gIG9uQ2xpY2sgKGU6IEV2ZW50LCBpbnB1dDogSFRNTElucHV0RWxlbWVudCkge1xyXG4gICAgZS5wcmV2ZW50RGVmYXVsdCgpO1xyXG5cclxuICAgIGlmICh0aGlzLmRpc2FibGVkKSByZXR1cm47XHJcblxyXG4gICAgaWYgKGlucHV0LnNlbGVjdGlvblN0YXJ0ID09IDAgfHwgaW5wdXQuc2VsZWN0aW9uU3RhcnQgPT0gMSB8fCBpbnB1dC5zZWxlY3Rpb25TdGFydCA9PSAyKSB7XHJcbiAgICAgIGNvbnN0IHRpbWVvdXQgPSBzZXRUaW1lb3V0KCgpID0+IHtcclxuICAgICAgICBpbnB1dC5zZXRTZWxlY3Rpb25SYW5nZSgwLCAyKTtcclxuICAgICAgICB0aGlzLmNvbnRhZG9yID0gMDtcclxuICAgICAgICBjbGVhclRpbWVvdXQodGltZW91dCk7XHJcbiAgICAgIH0sIDEwMCk7XHJcbiAgICB9IGVsc2UgaWYgKGlucHV0LnNlbGVjdGlvblN0YXJ0ID09IDMgfHwgaW5wdXQuc2VsZWN0aW9uU3RhcnQgPT0gNCB8fCBpbnB1dC5zZWxlY3Rpb25TdGFydCA9PSA1KSB7XHJcbiAgICAgIGNvbnN0IHRpbWVvdXQgPSBzZXRUaW1lb3V0KCgpID0+IHtcclxuICAgICAgICBpbnB1dC5zZXRTZWxlY3Rpb25SYW5nZSgzLCA1KTtcclxuICAgICAgICB0aGlzLmNvbnRhZG9yID0gMDtcclxuICAgICAgICBjbGVhclRpbWVvdXQodGltZW91dCk7XHJcbiAgICAgIH0sIDEwMCk7XHJcbiAgICB9IGVsc2UgaWYgKFxyXG4gICAgICBpbnB1dC5zZWxlY3Rpb25TdGFydCA9PSA2IHx8XHJcbiAgICAgIGlucHV0LnNlbGVjdGlvblN0YXJ0ID09IDcgfHxcclxuICAgICAgaW5wdXQuc2VsZWN0aW9uU3RhcnQgPT0gOCB8fFxyXG4gICAgICBpbnB1dC5zZWxlY3Rpb25TdGFydCA9PSA5IHx8XHJcbiAgICAgIGlucHV0LnNlbGVjdGlvblN0YXJ0ID09IDEwXHJcbiAgICApIHtcclxuICAgICAgY29uc3QgdGltZW91dCA9IHNldFRpbWVvdXQoKCkgPT4ge1xyXG4gICAgICAgIGlucHV0LnNldFNlbGVjdGlvblJhbmdlKDYsIDEwKTtcclxuICAgICAgICB0aGlzLmNvbnRhZG9yID0gMDtcclxuICAgICAgICBjbGVhclRpbWVvdXQodGltZW91dCk7XHJcbiAgICAgIH0sIDEwMCk7XHJcbiAgICB9IGVsc2UgaWYgKGlucHV0LnNlbGVjdGlvblN0YXJ0ID09IDExIHx8IGlucHV0LnNlbGVjdGlvblN0YXJ0ID09IDEyIHx8IGlucHV0LnNlbGVjdGlvblN0YXJ0ID09IDEzKSB7XHJcbiAgICAgIGNvbnN0IHRpbWVvdXQgPSBzZXRUaW1lb3V0KCgpID0+IHtcclxuICAgICAgICBpbnB1dC5zZXRTZWxlY3Rpb25SYW5nZSgxMSwgMTMpO1xyXG4gICAgICAgIHRoaXMuY29udGFkb3IgPSAwO1xyXG4gICAgICAgIGNsZWFyVGltZW91dCh0aW1lb3V0KTtcclxuICAgICAgfSwgMTAwKTtcclxuICAgIH0gZWxzZSBpZiAoaW5wdXQuc2VsZWN0aW9uU3RhcnQgPT0gMTQgfHwgaW5wdXQuc2VsZWN0aW9uU3RhcnQgPT0gMTUgfHwgaW5wdXQuc2VsZWN0aW9uU3RhcnQgPT0gMTYpIHtcclxuICAgICAgY29uc3QgdGltZW91dCA9IHNldFRpbWVvdXQoKCkgPT4ge1xyXG4gICAgICAgIGlucHV0LnNldFNlbGVjdGlvblJhbmdlKDE0LCAxNik7XHJcbiAgICAgICAgdGhpcy5jb250YWRvciA9IDA7XHJcbiAgICAgICAgY2xlYXJUaW1lb3V0KHRpbWVvdXQpO1xyXG4gICAgICB9LCAxMDApO1xyXG4gICAgfSBlbHNlIGlmIChpbnB1dC5zZWxlY3Rpb25TdGFydCA9PSAxNyB8fCBpbnB1dC5zZWxlY3Rpb25TdGFydCA9PSAxOCB8fCBpbnB1dC5zZWxlY3Rpb25TdGFydCA9PSAxOSkge1xyXG4gICAgICBjb25zdCB0aW1lb3V0ID0gc2V0VGltZW91dCgoKSA9PiB7XHJcbiAgICAgICAgaW5wdXQuc2V0U2VsZWN0aW9uUmFuZ2UoMTcsIDE5KTtcclxuICAgICAgICB0aGlzLmNvbnRhZG9yID0gMDtcclxuICAgICAgICBjbGVhclRpbWVvdXQodGltZW91dCk7XHJcbiAgICAgIH0sIDEwMCk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICBjb25zdCB0aW1lb3V0ID0gc2V0VGltZW91dCgoKSA9PiB7XHJcbiAgICAgICAgaW5wdXQuc2V0U2VsZWN0aW9uUmFuZ2UoMCwgMik7XHJcbiAgICAgICAgdGhpcy5jb250YWRvciA9IDA7XHJcbiAgICAgICAgY2xlYXJUaW1lb3V0KHRpbWVvdXQpO1xyXG4gICAgICB9LCAxMDApO1xyXG4gICAgfVxyXG4gIH1cclxuICBvcGVuIChkOiBOZ2JJbnB1dERhdGVwaWNrZXIpOiB2b2lkIHtcclxuICAgIGlmICh0aGlzLmRhdGVUaW1lQ29udHJvbC52YWx1ZSA9PSBcImRkL21tL3l5eXkgLS06LS0gLS1cIiB8fCB0aGlzLmRhdGVUaW1lQ29udHJvbC52YWx1ZSA9PSBcImRkL21tL3l5eXkgLS06LS1cIikge1xyXG4gICAgICB0aGlzLmhvdXJzQ29udHJvbC5zZXRWYWx1ZSh7XHJcbiAgICAgICAgaG91cjogbmV3IERhdGUoKS5nZXRIb3VycygpLFxyXG4gICAgICAgIG1pbnV0ZTogbmV3IERhdGUoKS5nZXRNaW51dGVzKCksXHJcbiAgICAgICAgc2Vjb25kOiBuZXcgRGF0ZSgpLmdldFNlY29uZHMoKSxcclxuICAgICAgfSk7XHJcbiAgICAgIHRoaXMuZGF0ZUNvbnRyb2wuc2V0VmFsdWUoe1xyXG4gICAgICAgIHllYXI6IG5ldyBEYXRlKCkuZ2V0RnVsbFllYXIoKSxcclxuICAgICAgICBtb250aDogbmV3IERhdGUoKS5nZXRNb250aCgpICsgMSxcclxuICAgICAgICBkYXk6IG5ldyBEYXRlKCkuZ2V0RGF0ZSgpLFxyXG4gICAgICAgIC4uLnRoaXMuaG91cnNDb250cm9sLnZhbHVlLFxyXG4gICAgICB9KTtcclxuICAgICAgY29uc3QgdmFsdWUgPSBuZXcgRGF0ZVRpbWVNb2RlbChPYmplY3QuYXNzaWduKHRoaXMuZGF0ZUNvbnRyb2wudmFsdWUsIHRoaXMuaG91cnNDb250cm9sLnZhbHVlKSk7XHJcbiAgICAgIHRoaXMuZGF0ZVRpbWVDb250cm9sLnNldFZhbHVlKHRoaXMuX2RhdGVQaXBlLnRyYW5zZm9ybSh2YWx1ZS50b1N0cmluZygpLCB0aGlzLnN0cmluZ0Zvcm1hdCkpO1xyXG4gICAgICB0aGlzLm9uRW1pdCgpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgZm9jdXNPdXQgKGV2ZW50OiBhbnkpOiB2b2lkIHtcclxuICAgIGlmIChldmVudC50YXJnZXQuYXJpYUxhYmVsID09IFwiTWludXRlc1wiKSB7XHJcbiAgICAgIHRoaXMubmdiRGF0ZXBpY2tlcj8uY2xvc2UoKTtcclxuICAgICAgaWYgKHRoaXMuZ29OZXh0V2hlblNlbGVjdCkge1xyXG4gICAgICAgIHRoaXMuZ29OZXh0KCk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcbn1cclxuIiwiPGRpdiBjbGFzcz1cInJvd1wiPlxyXG4gIDxkaXYgY2xhc3M9XCJjb2wtMTJcIiBzdHlsZT1cIm92ZXJmbG93OiBoaWRkZW5cIj5cclxuICAgIDxsYWJlbCAqbmdJZj1cImxhYmVsICE9IG51bGwgJiYgbGFiZWwgIT0gJycgJiYgc2hvd0xhYmVsXCIgY2xhc3M9XCJkLWZsZXggc3VtYXgtbGFiZWwgbWItMCBwLTBcIlxyXG4gICAgICA+PHNwYW4gW3RpdGxlXT1cImxhYmVsXCIgc3R5bGU9XCJ3aGl0ZS1zcGFjZTogbm93cmFwOyBvdmVyZmxvdzogaGlkZGVuOyB0ZXh0LW92ZXJmbG93OiBlbGxpcHNpc1wiPnt7IGxhYmVsIH19PC9zcGFuPlxyXG4gICAgICA8c3BhbiAqbmdJZj1cInJlcXVpcmVkXCIgY2xhc3M9XCJtcy0xXCIgW2NsYXNzLnRleHQtZGFuZ2VyXT1cImNvbnRyb2xzPy5lcnJvcnMgIT0gbnVsbFwiPiAqPC9zcGFuPlxyXG4gICAgICA8c3BhbiAqbmdJZj1cImxhYmVsSW5mb1wiPlxyXG4gICAgICAgIDxpIGNsYXNzPVwiZmEgZmEtZXhjbGFtYXRpb24tY2lyY2xlIHRleHQtaW5mbyBtcy0yXCIgW21hdFRvb2x0aXBdPVwidGV4dExhYmVsSW5mb1wiIG1hdFRvb2x0aXBDbGFzcz1cImJnLWluZm9cIj48L2k+XHJcbiAgICAgIDwvc3Bhbj5cclxuICAgIDwvbGFiZWw+XHJcbiAgICA8aW5wdXRcclxuICAgICAgdHlwZT1cInRleHRcIlxyXG4gICAgICBjbGFzcz1cImZvcm0tY29udHJvbCBmb3JtLWNvbnRyb2wtc20gcG9zaXRpb24tYWJzb2x1dGVcIlxyXG4gICAgICBjb250YWluZXI9XCJib2R5XCJcclxuICAgICAgaWQ9XCJmYWtlSW5wdXRcIlxyXG4gICAgICBuZ2JEYXRlcGlja2VyXHJcbiAgICAgIFtmb3JtQ29udHJvbF09XCJkYXRlQ29udHJvbFwiXHJcbiAgICAgIFthdXRvQ2xvc2VdPVwiJ291dHNpZGUnXCJcclxuICAgICAgW2Zvb3RlclRlbXBsYXRlXT1cImZvb3RlclRlbXBsYXRlXCJcclxuICAgICAgI2QyPVwibmdiRGF0ZXBpY2tlclwiIC8+XHJcbiAgICA8ZGl2IGNsYXNzPVwiaW5wdXQtZ3JvdXAgdy0xMDBcIj5cclxuICAgICAgPGlucHV0XHJcbiAgICAgICAgdHlwZT1cInRleHRcIlxyXG4gICAgICAgIHJlYWRvbmx5XHJcbiAgICAgICAgaWQ9XCJpbnB1dERhdGVUaW1lXCJcclxuICAgICAgICAjaW5wdXREYXRlVGltZVxyXG4gICAgICAgIHN0eWxlPVwiZmxleDogMVwiXHJcbiAgICAgICAgW2NsYXNzLmlzLWludmFsaWRdPVwiY29udHJvbHM/LmVycm9ycyAhPSBudWxsICYmIChjb250cm9scz8uZGlydHkgfHwgY29udHJvbHM/LnRvdWNoZWQpICYmIHN1Ym1pdHRlZFwiXHJcbiAgICAgICAgW2Rpc2FibGVkXT1cImRpc2FibGVkIHx8IHJlYWRvbmx5XCJcclxuICAgICAgICBjbGFzcz1cImZvcm0tY29udHJvbCBmb3JtLWNvbnRyb2wtc21cIlxyXG4gICAgICAgIChibHVyKT1cIm9uQmx1cigpXCJcclxuICAgICAgICAoZm9jdXNvdXQpPVwiZm9jdXNPdXRJbnB1dCgpXCJcclxuICAgICAgICAoa2V5dXApPVwib25LZXlVcCgkZXZlbnQpXCJcclxuICAgICAgICAoZGJsY2xpY2spPVwicHJldmVudERlZmF1bHQoJGV2ZW50KVwiXHJcbiAgICAgICAgKGNsaWNrKT1cInByZXZlbnREZWZhdWx0KCRldmVudClcIlxyXG4gICAgICAgIChtb3VzZXVwKT1cIm9uQ2xpY2soJGV2ZW50LCBpbnB1dERhdGVUaW1lKVwiXHJcbiAgICAgICAgW2Zvcm1Db250cm9sXT1cImRhdGVUaW1lQ29udHJvbFwiIC8+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJpbnB1dC1ncm91cC1hcHBlbmRcIj5cclxuICAgICAgICA8YnV0dG9uXHJcbiAgICAgICAgICAjYnRuT3BlblxyXG4gICAgICAgICAgKGtleXVwLkFycm93TGVmdCk9XCJnb0JhY2soKVwiXHJcbiAgICAgICAgICBbZGlzYWJsZWRdPVwiZGlzYWJsZWQgfHwgcmVhZG9ubHlcIlxyXG4gICAgICAgICAgKGtleXVwLkFycm93UmlnaHQpPVwiY2xlYXJhYmxlID8gYnRuQ2xlYW4uZm9jdXMoKSA6IGdvTmV4dCgpXCJcclxuICAgICAgICAgIGNsYXNzPVwiYnRuIGJ0bi1pbmZvIHAtMCByb3VuZGVkLTAgdXNlLWJ1dHRvblwiXHJcbiAgICAgICAgICAoY2xpY2spPVwiZDIudG9nZ2xlKCk7IG9wZW4oZDIpXCJcclxuICAgICAgICAgIHR5cGU9XCJidXR0b25cIj5cclxuICAgICAgICAgIDxpIGFyaWEtaGlkZGVuPVwidHJ1ZVwiIGNsYXNzPVwiZmEgZmEtY2FsZW5kYXIgdGV4dC1saWdodCBweC0xXCI+PC9pPlxyXG4gICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgIDxidXR0b25cclxuICAgICAgICAgICNidG5DbGVhblxyXG4gICAgICAgICAgY2xhc3M9XCJidG4gYnRuLWRhbmdlciBwLTAgcm91bmRlZC0wIGxpbXBpYXJcIlxyXG4gICAgICAgICAgW2Rpc2FibGVkXT1cImRpc2FibGVkIHx8IHJlYWRvbmx5XCJcclxuICAgICAgICAgIChjbGljayk9XCJsaW1waWFyVG9kbygpXCJcclxuICAgICAgICAgIChrZXl1cC5BcnJvd0xlZnQpPVwiYnRuT3Blbi5mb2N1cygpXCJcclxuICAgICAgICAgIChrZXl1cC5BcnJvd1JpZ2h0KT1cImdvTmV4dCgpXCJcclxuICAgICAgICAgIHR5cGU9XCJidXR0b25cIj5cclxuICAgICAgICAgIDwhLS0gPG1hdC1pY29uIGNsYXNzPVwidGV4dC13aGl0ZSBwdC0xXCIgc3R5bGU9XCJmb250LXNpemU6IDE4cHg7XCIgW21hdFRvb2x0aXBdPVwiJ0xpbXBpYXInXCIgbWF0VG9vbHRpcENsYXNzPVwiYmctZGFuZ2VyXCI+Y2xvc2U8L21hdC1pY29uPiAtLT5cclxuICAgICAgICAgIDxpIGFyaWEtaGlkZGVuPVwidHJ1ZVwiIGNsYXNzPVwiZmEgZmEtdGltZXMgcHgtMSB0ZXh0LWxpZ2h0XCI+PC9pPlxyXG4gICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICA8L2Rpdj5cclxuICAgICAgPGRpdiBjbGFzcz1cInBvc2l0aW9uLWFic29sdXRlIGNvbnRhaW5lci10b29sdGlwbWVzc2FnZVwiPlxyXG4gICAgICAgIDx0b29sdGlwLW1lc3NhZ2VcclxuICAgICAgICAgIFtsYWJlbF09XCJsYWJlbFwiXHJcbiAgICAgICAgICBbY29udHJvbHNdPVwiY29udHJvbHNcIlxyXG4gICAgICAgICAgW3ZhbGlkYXRvck1lc3NhZ2VdPVwidmFsaWRhdG9yTWVzc2FnZVwiXHJcbiAgICAgICAgICBbdG9vbHRpcE1lc3NhZ2VdPVwidG9vbHRpcE1lc3NhZ2VcIlxyXG4gICAgICAgICAgW3N1Ym1pdHRlZF09XCJzdWJtaXR0ZWRcIj48L3Rvb2x0aXAtbWVzc2FnZT5cclxuICAgICAgPC9kaXY+XHJcbiAgICA8L2Rpdj5cclxuICAgIDxlcnJvci1tZXNzYWdlXHJcbiAgICAgIFtsYWJlbF09XCJsYWJlbFwiXHJcbiAgICAgIFtjb250cm9sc109XCJjb250cm9sc1wiXHJcbiAgICAgIFt2YWxpZGF0b3JNZXNzYWdlXT1cInZhbGlkYXRvck1lc3NhZ2VcIlxyXG4gICAgICBbdG9vbHRpcE1lc3NhZ2VdPVwidG9vbHRpcE1lc3NhZ2VcIlxyXG4gICAgICBbc3VibWl0dGVkXT1cInN1Ym1pdHRlZFwiPjwvZXJyb3ItbWVzc2FnZT5cclxuICAgIDxuZy10ZW1wbGF0ZSAjZm9vdGVyVGVtcGxhdGU+XHJcbiAgICAgIDxuZ2ItdGltZXBpY2tlciBbZm9ybUNvbnRyb2xdPVwiaG91cnNDb250cm9sXCIgW21lcmlkaWFuXT1cImZvcm1hdCA9PSAxMiA/IHRydWUgOiBmYWxzZVwiIChmb2N1c291dCk9XCJmb2N1c091dCgkZXZlbnQpXCI+PC9uZ2ItdGltZXBpY2tlcj5cclxuICAgIDwvbmctdGVtcGxhdGU+XHJcbiAgPC9kaXY+XHJcbjwvZGl2PlxyXG4iXX0=
|
|
1140
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0ZS10aW1lLXBpY2tlci1lZGl0YWJsZS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtc3VtYXgtZXJwLWNvbXBvbmVudC9zcmMvbGliL2RhdGUtdGltZS1waWNrZXItZWRpdGFibGUvZGF0ZS10aW1lLXBpY2tlci1lZGl0YWJsZS5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtc3VtYXgtZXJwLWNvbXBvbmVudC9zcmMvbGliL2RhdGUtdGltZS1waWNrZXItZWRpdGFibGUvZGF0ZS10aW1lLXBpY2tlci1lZGl0YWJsZS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDM0MsT0FBTyxFQUNMLGlCQUFpQixFQUNqQixTQUFTLEVBRVQsWUFBWSxFQUNaLEtBQUssRUFHTCxNQUFNLEVBRU4sU0FBUyxFQUNULFVBQVUsRUFDVixNQUFNLEdBR1AsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUdMLFdBQVcsRUFDWCxhQUFhLEVBQ2IsaUJBQWlCLEVBQ2pCLGtCQUFrQixHQUVuQixNQUFNLGdCQUFnQixDQUFDO0FBQ3hCLE9BQU8sRUFBRSxXQUFXLEVBQUUsc0JBQXNCLEVBQUUsaUJBQWlCLEVBQXNCLE1BQU0sNEJBQTRCLENBQUM7QUFDeEgsT0FBTyxFQUFFLHNCQUFzQixFQUFFLE1BQU0sdUNBQXVDLENBQUM7QUFDL0UsT0FBTyxFQUFFLG9CQUFvQixFQUFFLElBQUksRUFBRSxNQUFNLHFDQUFxQyxDQUFDO0FBQ2pGLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUV2RCxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFDN0MsT0FBTyxFQUFFLDZCQUE2QixFQUFFLE1BQU0scUNBQXFDLENBQUM7Ozs7Ozs7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LFNBQVM7c0JBQWpCLEtBQUs7Z0JBTUcsTUFBTTtzQkFBZCxLQUFLO2dCQUlHLElBQUk7c0JBQVosS0FBSztnQkFJRyxhQUFhO3NCQUFyQixLQUFLO2dCQUNHLFNBQVM7c0JBQWpCLEtBQUs7Z0JBQ0csYUFBYTtzQkFBckIsS0FBSztnQkFJRyxJQUFJO3NCQUFaLEtBQUs7Z0JBSUcsYUFBYTtzQkFBckIsS0FBSztnQkFDRyxhQUFhO3NCQUFyQixLQUFLO2dCQUNHLGdCQUFnQjtzQkFBeEIsS0FBSztnQkFNRyxTQUFTO3NCQUFqQixLQUFLO2dCQVFHLGlCQUFpQjtzQkFBekIsS0FBSztnQkFDRyxZQUFZO3NCQUFwQixLQUFLO2dCQUNHLFFBQVE7c0JBQWhCLEtBQUs7Z0JBQ0ksTUFBTTtzQkFBZixNQUFNO2dCQUNHLE1BQU07c0JBQWYsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IERhdGVQaXBlIH0gZnJvbSBcIkBhbmd1bGFyL2NvbW1vblwiO1xyXG5pbXBvcnQge1xyXG4gIENoYW5nZURldGVjdG9yUmVmLFxyXG4gIENvbXBvbmVudCxcclxuICBFbGVtZW50UmVmLFxyXG4gIEV2ZW50RW1pdHRlcixcclxuICBJbnB1dCxcclxuICBPbkNoYW5nZXMsXHJcbiAgT25Jbml0LFxyXG4gIE91dHB1dCxcclxuICBTaW1wbGVDaGFuZ2VzLFxyXG4gIFZpZXdDaGlsZCxcclxuICBmb3J3YXJkUmVmLFxyXG4gIGluamVjdCxcclxuICBpbnB1dCxcclxuICB2aWV3Q2hpbGQsXHJcbn0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcclxuaW1wb3J0IHtcclxuICBBYnN0cmFjdENvbnRyb2wsXHJcbiAgQ29udHJvbFZhbHVlQWNjZXNzb3IsXHJcbiAgRm9ybUNvbnRyb2wsXHJcbiAgTkdfVkFMSURBVE9SUyxcclxuICBOR19WQUxVRV9BQ0NFU1NPUixcclxuICBVbnR5cGVkRm9ybUNvbnRyb2wsXHJcbiAgVmFsaWRhdGlvbkVycm9ycyxcclxufSBmcm9tIFwiQGFuZ3VsYXIvZm9ybXNcIjtcclxuaW1wb3J0IHsgTmdiQ2FsZW5kYXIsIE5nYkRhdGVQYXJzZXJGb3JtYXR0ZXIsIE5nYkRhdGVwaWNrZXJJMThuLCBOZ2JJbnB1dERhdGVwaWNrZXIgfSBmcm9tIFwiQG5nLWJvb3RzdHJhcC9uZy1ib290c3RyYXBcIjtcclxuaW1wb3J0IHsgQ3VzdG9tRGF0ZXBpY2tlckZvcm1hdCB9IGZyb20gXCIuLi9kYXRlLXBpY2tlci9DdXN0b21EYXRlUGlja2VyRm9ybWF0XCI7XHJcbmltcG9ydCB7IEN1c3RvbURhdGVwaWNrZXJJMThuLCBJMThuIH0gZnJvbSBcIi4uL2RhdGUtcGlja2VyL0N1c3RvbURhdGVQaWNrZXJJMThuXCI7XHJcbmltcG9ydCB7IERhdGVUaW1lTW9kZWwgfSBmcm9tIFwiLi4vdXRpbHMvRGF0ZVRpbWVNb2RlbFwiO1xyXG5pbXBvcnQgeyBmb3JtYXRIb3VyIH0gZnJvbSBcIi4uL3V0aWxzL0RhdGVUaW1lUGlja2VyRWRpdGFibGVcIjtcclxuaW1wb3J0IHsgRGF0ZVV0aWwgfSBmcm9tIFwiLi4vdXRpbHMvRGF0ZVV0aWxcIjtcclxuaW1wb3J0IHsgRGF0ZVRpbWVQaWNrZXJFZGl0YWJsZVNlcnZpY2UgfSBmcm9tIFwiLi9kYXRlLXRpbWUtcGlja2VyLWVkaXRhYmxlLnNlcnZpY2VcIjtcclxuXHJcbmNvbnN0IE1BU0tfMTJfSE9VUlMgPSBcImRkL21tL3l5eXkgLS06LS0gLS1cIjtcclxuY29uc3QgTUFTS18yNF9IT1VSUyA9IFwiZGQvbW0veXl5eSAtLTotLVwiO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6IFwiZGF0ZS10aW1lLXBpY2tlci1lZGl0YWJsZVwiLFxyXG4gIHRlbXBsYXRlVXJsOiBcIi4vZGF0ZS10aW1lLXBpY2tlci1lZGl0YWJsZS5jb21wb25lbnQuaHRtbFwiLFxyXG4gIHN0eWxlVXJsczogW1wiLi9kYXRlLXRpbWUtcGlja2VyLWVkaXRhYmxlLmNvbXBvbmVudC5zY3NzXCJdLFxyXG4gIHByb3ZpZGVyczogW1xyXG4gICAge1xyXG4gICAgICBwcm92aWRlOiBOR19WQUxVRV9BQ0NFU1NPUixcclxuICAgICAgbXVsdGk6IHRydWUsXHJcbiAgICAgIHVzZUV4aXN0aW5nOiBEYXRlVGltZVBpY2tlckVkaXRhYmxlQ29tcG9uZW50LFxyXG4gICAgfSxcclxuICAgIHtcclxuICAgICAgcHJvdmlkZTogTkdfVkFMSURBVE9SUyxcclxuICAgICAgdXNlRXhpc3Rpbmc6IGZvcndhcmRSZWYoKCkgPT4gRGF0ZVRpbWVQaWNrZXJFZGl0YWJsZUNvbXBvbmVudCksXHJcbiAgICAgIG11bHRpOiB0cnVlLFxyXG4gICAgfSxcclxuICAgIEkxOG4sXHJcbiAgICB7IHByb3ZpZGU6IE5nYkRhdGVwaWNrZXJJMThuLCB1c2VDbGFzczogQ3VzdG9tRGF0ZXBpY2tlckkxOG4gfSxcclxuICAgIHsgcHJvdmlkZTogTmdiRGF0ZVBhcnNlckZvcm1hdHRlciwgdXNlQ2xhc3M6IEN1c3RvbURhdGVwaWNrZXJGb3JtYXQgfSxcclxuICBdLFxyXG59KVxyXG5leHBvcnQgY2xhc3MgRGF0ZVRpbWVQaWNrZXJFZGl0YWJsZUNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgQ29udHJvbFZhbHVlQWNjZXNzb3IsIE9uQ2hhbmdlcyB7XHJcbiAgcHJpdmF0ZSBfZGF0ZVBpcGUgPSBpbmplY3QoRGF0ZVBpcGUpO1xyXG4gIHByaXZhdGUgX2NhbGVuZGFyID0gaW5qZWN0KE5nYkNhbGVuZGFyKTtcclxuICBwcml2YXRlIF9kYXRlVGltZVBpY2tlckVkaXRhYmxlU2VydmljZSA9IGluamVjdChEYXRlVGltZVBpY2tlckVkaXRhYmxlU2VydmljZSk7XHJcbiAgcHJpdmF0ZSBfY2RyZiA9IGluamVjdChDaGFuZ2VEZXRlY3RvclJlZik7XHJcblxyXG4gIEBWaWV3Q2hpbGQoXCJpbnB1dERhdGVUaW1lXCIpIGlucHV0RGF0ZVRpbWU6IGFueTtcclxuICBAVmlld0NoaWxkKFwiYnRuT3BlblwiKSBidG5PcGVuITogRWxlbWVudFJlZjtcclxuICBAVmlld0NoaWxkKFwiYnRuQ2xlYW5cIikgYnRuQ2xlYW4hOiBFbGVtZW50UmVmO1xyXG4gIEBWaWV3Q2hpbGQoXCJkMlwiKSBuZ2JEYXRlcGlja2VyITogTmdiSW5wdXREYXRlcGlja2VyO1xyXG5cclxuICAvKipcclxuICAgKiBAZGVzY3JpcHRpb24gVGV4dG8gc3VwZXJpb25cclxuICAgKiBAZGVmYXVsdCBudWxsXHJcbiAgICogQHR5cGUgYW55XHJcbiAgICovXHJcbiAgQElucHV0KCkgbGFiZWw6IHN0cmluZyA9IFwiXCI7XHJcbiAgLyoqXHJcbiAgICogQGRlc2NyaXB0aW9uIFBhcmFtZXRybyBkZSBsYSB2aXN1YWxpemFjacOzbiBkZWwgdGV4dG8gc3VwZXJpb3JcclxuICAgKiBAZGVmYXVsdCB0cnVlXHJcbiAgICogQHR5cGUgYm9vbGVhblxyXG4gICAqL1xyXG4gIEBJbnB1dCgpIHNob3dMYWJlbDogYm9vbGVhbiA9IHRydWU7XHJcbiAgQElucHV0KCkgcmVhZG9ubHk6IGJvb2xlYW4gPSBmYWxzZTtcclxuICAvKipcclxuICAgKiBAZGVzY3JpcHRpb24gUGFyYW1ldHJvIGRlIGNvbnRyb2wgcmVxdWVyaWRvXHJcbiAgICogQGRlZmF1bHQgZmFsc2VcclxuICAgKiBAdHlwZSBib29sZWFuXHJcbiAgICovXHJcbiAgQElucHV0KCkgcmVxdWlyZWQ6IGJvb2xlYW4gPSBmYWxzZTtcclxuICBASW5wdXQoKSB2YWxpZGF0b3JNZXNzYWdlOiBib29sZWFuID0gZmFsc2U7XHJcbiAgQElucHV0KCkgdG9vbHRpcE1lc3NhZ2U6IGJvb2xlYW4gPSB0cnVlO1xyXG4gIEBJbnB1dCgpIHN1Ym1pdHRlZDogYm9vbGVhbiA9IHRydWU7XHJcbiAgLyoqXHJcbiAgICogQGRlc2NyaXB0aW9uIFBhcmFtZXRybyBkZSBmb3JtYXRvIGRlIGZlY2hhOiAxMiB8IDE0XHJcbiAgICogQGRlZmF1bHQgMjRcclxuICAgKiBAdHlwZSAxMiB8IDE0XHJcbiAgICovXHJcbiAgQElucHV0KCkgZm9ybWF0OiBmb3JtYXRIb3VyID0gMjQ7XHJcbiAgLyoqXHJcbiAgICogQGRlc2NyaXB0aW9uIFByw7N4aW1vIGNvbnRyb2wgYSBoYWNlciBmb2N1c1xyXG4gICAqL1xyXG4gIEBJbnB1dCgpIG5leHQ6IGFueTtcclxuICAvKipcclxuICAgKiBAZGVzY3JpcHRpb24gUHLDs3hpbW8gY29udHJvbCBhIGhhY2VyIGZvY3VzIGVuIGNhc28gZWwgTkVYVCBlc3TDqSBkZXNoYWJpbGl0YWRvXHJcbiAgICovXHJcbiAgQElucHV0KCkgbmV4dElzRGlzYWJsZTogYW55O1xyXG4gIEBJbnB1dCgpIGxhYmVsSW5mbzogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIEBJbnB1dCgpIHRleHRMYWJlbEluZm86IHN0cmluZyA9IFwiXCI7XHJcbiAgLyoqXHJcbiAgICogQGRlc2NyaXB0aW9uIEFudGVyaW9yIGNvbnRyb2wgYSBoYWNlciBmb2N1c1xyXG4gICAqL1xyXG4gIEBJbnB1dCgpIGJhY2s6IGFueTtcclxuICAvKipcclxuICAgKiBAZGVzY3JpcHRpb24gQW50ZXJpb3IgY29udHJvbCBhIGhhY2VyIGZvY3VzIGVuIGNhc28gZWwgQkFDSyBlc3TDqSBkZXNoYWJpbGl0YWRvXHJcbiAgICovXHJcbiAgQElucHV0KCkgYmFja0lzRGlzYWJsZTogYW55O1xyXG4gIEBJbnB1dCgpIG9wZW5XaGVuRm9jdXM6IGJvb2xlYW4gPSBmYWxzZTtcclxuICBASW5wdXQoKSBnb05leHRXaGVuU2VsZWN0OiBib29sZWFuID0gZmFsc2U7XHJcbiAgLyoqXHJcbiAgICogQGRlc2NyaXB0aW9uIFBhcmFtZXRybyBwYXJhIG1vc3RyYXIgZWwgYm90w7NuIGRlIGVsaW1pbmFyXHJcbiAgICogQGRlZmF1bHQgZmFsc2VcclxuICAgKiBAdHlwZSBib29sZWFuXHJcbiAgICovXHJcbiAgQElucHV0KCkgY2xlYXJhYmxlOiBib29sZWFuID0gdHJ1ZTtcclxuICAvKipcclxuICAgKiBAZGVzY3JpcHRpb24gUGFyYW1ldHJvIGRlIGF1dG9jb21wbGV0YWRvOlxyXG4gICAqIFRydWU6IGF1dG9jb21wbGV0YSBjb24gbGEgaG9yYSDDsyBtaW51dG8gYWN0dWFsXHJcbiAgICogRmFsc2U6IGF1dG9jb21wbGV0YSBjb24gMDA6MDBcclxuICAgKiBAZGVmYXVsdCBmYWxzZVxyXG4gICAqIEB0eXBlIGJvb2xlYW5cclxuICAgKi9cclxuICBASW5wdXQoKSBhdXRvQ29tcGxldGVIb3VyczogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIEBJbnB1dCgpIGF1dG9Db21wbGV0ZTogYm9vbGVhbiA9IHRydWU7XHJcbiAgQElucHV0KCkgZGlzYWJsZWQgPSBmYWxzZTtcclxuICBAT3V0cHV0KCkgb25OZXh0OiBFdmVudEVtaXR0ZXI8YW55PiA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcclxuICBAT3V0cHV0KCkgb25CYWNrOiBFdmVudEVtaXR0ZXI8YW55PiA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcclxuXHJcbiAgb25DaGFuZ2UgPSAoXzogYW55KSA9PiB7IH07XHJcbiAgb25Ub3VjaCA9ICgpID0+IHsgfTtcclxuICBvblZhbGlkYXRpb25DaGFuZ2UgPSAoKSA9PiB7IH07XHJcblxyXG4gIGNvbnRyb2xzOiBBYnN0cmFjdENvbnRyb2wgfCB1bmRlZmluZWQ7XHJcbiAgY29udGFkb3IgPSAwO1xyXG4gIHBvc2l0aW9uID0gMDtcclxuICBkYXRlVGltZUNvbnRyb2wgPSBuZXcgRm9ybUNvbnRyb2woXCJkZC9tbS95eXl5IC0tOi0tIC0tXCIpO1xyXG4gIGhvdXJzQ29udHJvbCA9IG5ldyBVbnR5cGVkRm9ybUNvbnRyb2woe1xyXG4gICAgaG91cjogbnVsbCxcclxuICAgIG1pbnV0ZTogbnVsbCxcclxuICB9KTtcclxuICBkYXRlQ29udHJvbCA9IG5ldyBVbnR5cGVkRm9ybUNvbnRyb2woe1xyXG4gICAgeWVhcjogbnVsbCxcclxuICAgIG1vbnRoOiBudWxsLFxyXG4gICAgZGF5OiBudWxsLFxyXG4gIH0pO1xyXG4gIHRvZGF5ID0gdGhpcy5fY2FsZW5kYXIuZ2V0VG9kYXkoKTtcclxuXHJcbiAgZ2V0IHN0cmluZ0Zvcm1hdCAoKTogc3RyaW5nIHtcclxuICAgIHJldHVybiB0aGlzLmZvcm1hdCA9PT0gMTIgPyBcImRkL01NL3l5eXkgaGg6bW0gYVwiIDogXCJkZC9NTS95eXl5IEhIOm1tXCI7XHJcbiAgfVxyXG5cclxuICBjb25zdHJ1Y3RvcigpIHtcclxuICAgIHRoaXMuc2hvd0xhYmVsID0gdGhpcy5fZGF0ZVRpbWVQaWNrZXJFZGl0YWJsZVNlcnZpY2UuZ2V0U2hvd0xhYmVsKCk7XHJcbiAgICB0aGlzLm9wZW5XaGVuRm9jdXMgPSB0aGlzLl9kYXRlVGltZVBpY2tlckVkaXRhYmxlU2VydmljZS5nZXRPcGVuV2hlbkZvY3VzKCk7XHJcbiAgICB0aGlzLmdvTmV4dFdoZW5TZWxlY3QgPSB0aGlzLl9kYXRlVGltZVBpY2tlckVkaXRhYmxlU2VydmljZS5nZXRHb05leHRXaGVuU2VsZWN0KCk7XHJcbiAgICB0aGlzLnZhbGlkYXRvck1lc3NhZ2UgPSB0aGlzLl9kYXRlVGltZVBpY2tlckVkaXRhYmxlU2VydmljZS5nZXRWYWxpZGF0b3JNZXNzYWdlKCk7XHJcbiAgICB0aGlzLnRvb2x0aXBNZXNzYWdlID0gdGhpcy5fZGF0ZVRpbWVQaWNrZXJFZGl0YWJsZVNlcnZpY2UuZ2V0VG9vbHRpcE1lc3NhZ2UoKTtcclxuICAgIHRoaXMuc3VibWl0dGVkID0gdGhpcy5fZGF0ZVRpbWVQaWNrZXJFZGl0YWJsZVNlcnZpY2UuZ2V0U3VibWl0dGVkKCk7XHJcbiAgICB0aGlzLmZvcm1hdCA9IHRoaXMuX2RhdGVUaW1lUGlja2VyRWRpdGFibGVTZXJ2aWNlLmdldEZvcm1hdCgpO1xyXG4gICAgdGhpcy5jbGVhcmFibGUgPSB0aGlzLl9kYXRlVGltZVBpY2tlckVkaXRhYmxlU2VydmljZS5nZXRDbGVhcmFibGUoKTtcclxuICAgIHRoaXMuYXV0b0NvbXBsZXRlSG91cnMgPSB0aGlzLl9kYXRlVGltZVBpY2tlckVkaXRhYmxlU2VydmljZS5nZXRBdXRvQ29tcGxldGVIb3VycygpO1xyXG4gICAgdGhpcy5hdXRvQ29tcGxldGUgPSB0aGlzLl9kYXRlVGltZVBpY2tlckVkaXRhYmxlU2VydmljZS5nZXRBdXRvQ29tcGxldGUoKTtcclxuICB9XHJcblxyXG5cclxuICB2YWxpZGF0ZSAoY29udHJvbDogQWJzdHJhY3RDb250cm9sKTogVmFsaWRhdGlvbkVycm9ycyB8IGFueSB7XHJcbiAgICB0aGlzLmNvbnRyb2xzID0gY29udHJvbDtcclxuICAgIHRoaXMuX2NkcmYuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgcmV0dXJuIG51bGw7XHJcbiAgfVxyXG5cclxuICByZWdpc3Rlck9uVmFsaWRhdG9yQ2hhbmdlPyhmbjogKCkgPT4gdm9pZCk6IHZvaWQge1xyXG4gICAgdGhpcy5vblZhbGlkYXRpb25DaGFuZ2UgPSBmbjtcclxuICB9XHJcblxyXG4gIG5nT25Jbml0ICgpOiB2b2lkIHtcclxuICAgIHRoaXMuaG91cnNDaGFuZ2UoKTtcclxuICAgIGNvbnN0IHRpbWVvdXQgPSBzZXRUaW1lb3V0KCgpID0+IHtcclxuICAgICAgdGhpcy5kYXRlQ2hhbmdlKCk7XHJcbiAgICAgIGNsZWFyVGltZW91dCh0aW1lb3V0KTtcclxuICAgICAgaWYgKCF0aGlzLmNsZWFyYWJsZSkgdGhpcy5idG5DbGVhbiEubmF0aXZlRWxlbWVudC5zdHlsZS52aXNpYmlsaXR5ID0gXCJoaWRkZW5cIjtcclxuICAgIH0sIDEwMCk7XHJcblxyXG4gICAgaWYgKHRoaXMuZm9ybWF0ID09IDEyKSB7XHJcbiAgICAgIHRoaXMuZGF0ZVRpbWVDb250cm9sLnNldFZhbHVlKE1BU0tfMTJfSE9VUlMpO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdGhpcy5kYXRlVGltZUNvbnRyb2wuc2V0VmFsdWUoTUFTS18yNF9IT1VSUyk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBuZ09uQ2hhbmdlcyAoY2hhbmdlczogU2ltcGxlQ2hhbmdlcyk6IHZvaWQge1xyXG4gICAgaWYgKGNoYW5nZXNbXCJzdWJtaXR0ZWRcIl0pIHtcclxuICAgICAgaWYgKHRoaXMuY29udHJvbHMgIT09IHVuZGVmaW5lZCAmJiBjaGFuZ2VzW1wic3VibWl0dGVkXCJdLmN1cnJlbnRWYWx1ZSkge1xyXG4gICAgICAgIHRoaXMuY29udHJvbHMubWFya0FzRGlydHkoKTtcclxuICAgICAgICB0aGlzLmNvbnRyb2xzLm1hcmtBc1RvdWNoZWQoKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgZm9jdXMgKCk6IHZvaWQge1xyXG4gICAgdGhpcy5pbnB1dERhdGVUaW1lLm5hdGl2ZUVsZW1lbnQuZm9jdXMoKTtcclxuXHJcbiAgICBjb25zdCB0aW1lb3V0ID0gc2V0VGltZW91dCgoKSA9PiB7XHJcbiAgICAgIGlmICghdGhpcy5kaXNhYmxlZCkgdGhpcy5pbnB1dERhdGVUaW1lLm5hdGl2ZUVsZW1lbnQuc2V0U2VsZWN0aW9uUmFuZ2UoMCwgMik7XHJcblxyXG4gICAgICBjbGVhclRpbWVvdXQodGltZW91dCk7XHJcbiAgICB9LCAxMDApO1xyXG5cclxuICAgIGlmICghdGhpcy5yZWFkb25seSAmJiB0aGlzLm9wZW5XaGVuRm9jdXMpIHtcclxuICAgICAgdGhpcy5uZ2JEYXRlcGlja2VyPy5vcGVuKCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICB3cml0ZVZhbHVlIChvYmo6IGFueSk6IHZvaWQge1xyXG4gICAgaWYgKG9iaiAhPSBudWxsKSB7XHJcbiAgICAgIHRoaXMuZGF0ZUNvbnRyb2wuc2V0VmFsdWUoRGF0ZVRpbWVNb2RlbC5mcm9tTG9jYWxTdHJpbmcob2JqKSk7XHJcbiAgICAgIHRoaXMuaG91cnNDb250cm9sLnNldFZhbHVlKHtcclxuICAgICAgICBob3VyOiB0aGlzLmRhdGVDb250cm9sLnZhbHVlLmhvdXIsXHJcbiAgICAgICAgbWludXRlOiB0aGlzLmRhdGVDb250cm9sLnZhbHVlLm1pbnV0ZSxcclxuICAgICAgICBzZWNvbmQ6IHRoaXMuZGF0ZUNvbnRyb2wudmFsdWUuc2Vjb25kLFxyXG4gICAgICB9KTtcclxuICAgICAgdGhpcy5kYXRlVGltZUNvbnRyb2wuc2V0VmFsdWUodGhpcy5fZGF0ZVBpcGUudHJhbnNmb3JtKG9iaiwgdGhpcy5zdHJpbmdGb3JtYXQpKTtcclxuICAgIH1cclxuICB9XHJcbiAgcmVnaXN0ZXJPbkNoYW5nZSAoZm46IGFueSk6IHZvaWQge1xyXG4gICAgdGhpcy5vbkNoYW5nZSA9IGZuO1xyXG4gIH1cclxuICByZWdpc3Rlck9uVG91Y2hlZCAoZm46IGFueSk6IHZvaWQge1xyXG4gICAgdGhpcy5vblRvdWNoID0gZm47XHJcbiAgfVxyXG4gIHNldERpc2FibGVkU3RhdGU/KGlzRGlzYWJsZWQ6IGJvb2xlYW4pOiB2b2lkIHtcclxuICAgIHRoaXMuZGlzYWJsZWQgPSBpc0Rpc2FibGVkO1xyXG4gICAgaWYgKHRoaXMuZGlzYWJsZWQpIHRoaXMuZGF0ZVRpbWVDb250cm9sLmRpc2FibGUoKTtcclxuICAgIGVsc2UgdGhpcy5kYXRlVGltZUNvbnRyb2wuZW5hYmxlKCk7XHJcbiAgfVxyXG5cclxuICBob3Vyc0NoYW5nZSAoKSB7XHJcbiAgICBpZiAodGhpcy5mb3JtYXQgPT0gMTIpXHJcbiAgICAgIHRoaXMuaG91cnNDb250cm9sLnZhbHVlQ2hhbmdlcy5zdWJzY3JpYmUoKHJlcykgPT4ge1xyXG4gICAgICAgIGlmIChcclxuICAgICAgICAgIC9bMC0zXVswLTldXFwvWzAtMV1bMC05XVxcL1swLTldWzAtOV1bMC05XVswLTldIFswLTFdWzAtOV06WzAtNl1bMC05XSBbQSxQXU0vLnRlc3QodGhpcy5kYXRlVGltZUNvbnRyb2wudmFsdWUhKSB8fFxyXG4gICAgICAgICAgL1swLTNdWzAtOV1cXC9bMC0xXVswLTldXFwvWzAtOV1bMC05XVswLTldWzAtOV0vLnRlc3QodGhpcy5kYXRlVGltZUNvbnRyb2wudmFsdWUhLnN1YnN0cmluZygwLCAxMCkpXHJcbiAgICAgICAgKSB7XHJcbiAgICAgICAgICB0aGlzLmRhdGVDb250cm9sLnNldFZhbHVlKFxyXG4gICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgLi4udGhpcy5kYXRlQ29udHJvbC52YWx1ZSEsXHJcbiAgICAgICAgICAgICAgLi4ucmVzLFxyXG4gICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICB7IGVtaXRFdmVudDogZmFsc2UgfVxyXG4gICAgICAgICAgKTtcclxuICAgICAgICAgIHRyeSB7XHJcbiAgICAgICAgICAgIGNvbnN0IGlucHV0OiBhbnkgPSBuZXcgRGF0ZVRpbWVNb2RlbChPYmplY3QuYXNzaWduKHRoaXMuZGF0ZUNvbnRyb2wudmFsdWUsIHRoaXMuaG91cnNDb250cm9sLnZhbHVlKSk7XHJcblxyXG4gICAgICAgICAgICB0aGlzLmRhdGVUaW1lQ29udHJvbC5zZXRWYWx1ZSh0aGlzLl9kYXRlUGlwZS50cmFuc2Zvcm0oaW5wdXQsIHRoaXMuc3RyaW5nRm9ybWF0KSk7XHJcbiAgICAgICAgICB9IGZpbmFsbHkge1xyXG4gICAgICAgICAgICB0aGlzLm9uRW1pdCgpO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgfSk7XHJcbiAgICBlbHNlIGlmICh0aGlzLmZvcm1hdCA9PSAyNClcclxuICAgICAgdGhpcy5ob3Vyc0NvbnRyb2wudmFsdWVDaGFuZ2VzLnN1YnNjcmliZSgocmVzKSA9PiB7XHJcbiAgICAgICAgaWYgKFxyXG4gICAgICAgICAgL1swLTNdWzAtOV1cXC9bMC0xXVswLTldXFwvWzAtOV1bMC05XVswLTldWzAtOV0gWzAtMV1bMC05XTpbMC02XVswLTldLy50ZXN0KHRoaXMuZGF0ZVRpbWVDb250cm9sLnZhbHVlISkgfHxcclxuICAgICAgICAgIC9bMC0zXVswLTldXFwvWzAtMV1bMC05XVxcL1swLTldWzAtOV1bMC05XVswLTldLy50ZXN0KHRoaXMuZGF0ZVRpbWVDb250cm9sLnZhbHVlIS5zdWJzdHJpbmcoMCwgMTApKVxyXG4gICAgICAgICkge1xyXG4gICAgICAgICAgdGhpcy5kYXRlQ29udHJvbC5zZXRWYWx1ZShcclxuICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgIC4uLnRoaXMuZGF0ZUNvbnRyb2wudmFsdWUsXHJcbiAgICAgICAgICAgICAgLi4ucmVzLFxyXG4gICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICB7IGVtaXRFdmVudDogZmFsc2UgfVxyXG4gICAgICAgICAgKTtcclxuICAgICAgICAgIHRyeSB7XHJcbiAgICAgICAgICAgIGNvbnN0IGlucHV0OiBhbnkgPSBuZXcgRGF0ZVRpbWVNb2RlbChPYmplY3QuYXNzaWduKHRoaXMuZGF0ZUNvbnRyb2wudmFsdWUsIHRoaXMuaG91cnNDb250cm9sLnZhbHVlKSk7XHJcbiAgICAgICAgICAgIHRoaXMuZGF0ZVRpbWVDb250cm9sLnNldFZhbHVlKHRoaXMuX2RhdGVQaXBlLnRyYW5zZm9ybShpbnB1dCwgdGhpcy5zdHJpbmdGb3JtYXQpKTtcclxuICAgICAgICAgIH0gY2F0Y2ggKGVycm9yKSB7XHJcbiAgICAgICAgICAgIC8qIGNvbnNvbGUuZXJyb3IoZXJyb3IpICovXHJcbiAgICAgICAgICB9IGZpbmFsbHkge1xyXG4gICAgICAgICAgICB0aGlzLm9uRW1pdCgpO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgfSk7XHJcbiAgfVxyXG5cclxuICBvbkVtaXQgKGVtaXRWYWx1ZTogYW55ID0gbnVsbCkge1xyXG4gICAgdHJ5IHtcclxuICAgICAgY29uc3QgdmFsdWUgPSBuZXcgRGF0ZVRpbWVNb2RlbChPYmplY3QuYXNzaWduKHRoaXMuZGF0ZUNvbnRyb2wudmFsdWUsIHRoaXMuaG91cnNDb250cm9sLnZhbHVlKSk7XHJcbiAgICAgIGVtaXRWYWx1ZSA9IHRoaXMuX2RhdGVQaXBlLnRyYW5zZm9ybSh2YWx1ZS50b1N0cmluZygpLCBcInl5eXktTU0tZGRUSEg6bW1cIik7XHJcbiAgICB9IGNhdGNoIChlKSB7IH1cclxuICAgIHRoaXMub25DaGFuZ2UoZW1pdFZhbHVlKTtcclxuICAgIHRoaXMub25Ub3VjaCgpO1xyXG4gIH1cclxuXHJcbiAgZGF0ZUNoYW5nZSAoKSB7XHJcbiAgICBpZiAodGhpcy5mb3JtYXQgPT0gMTIpXHJcbiAgICAgIHRoaXMuZGF0ZUNvbnRyb2wudmFsdWVDaGFuZ2VzLnN1YnNjcmliZSgocmVzKSA9PiB7XHJcbiAgICAgICAgaWYgKFxyXG4gICAgICAgICAgL1swLTNdWzAtOV1cXC9bMC0xXVswLTldXFwvWzAtOV1bMC05XVswLTldWzAtOV0gWzAtMV1bMC05XTpbMC02XVswLTldIFtBLFBdTS8udGVzdCh0aGlzLmRhdGVUaW1lQ29udHJvbC52YWx1ZSEpIHx8XHJcbiAgICAgICAgICAvWzAtMV1bMC05XTpbMC02XVswLTldLy50ZXN0KHRoaXMuZGF0ZVRpbWVDb250cm9sLnZhbHVlIS5zdWJzdHJpbmcoMTEsIDE2KSlcclxuICAgICAgICApIHtcclxuICAgICAgICAgIHRoaXMuZGF0ZUNvbnRyb2wuc2V0VmFsdWUoXHJcbiAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICAuLi50aGlzLmhvdXJzQ29udHJvbC52YWx1ZSxcclxuICAgICAgICAgICAgICAuLi5yZXMsXHJcbiAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgIHsgZW1pdEV2ZW50OiBmYWxzZSB9XHJcbiAgICAgICAgICApO1xyXG5cclxuICAgICAgICAgIHRyeSB7XHJcbiAgICAgICAgICAgIGNvbnN0IGlucHV0OiBhbnkgPSBuZXcgRGF0ZVRpbWVNb2RlbChPYmplY3QuYXNzaWduKHRoaXMuZGF0ZUNvbnRyb2wudmFsdWUsIHRoaXMuaG91cnNDb250cm9sLnZhbHVlKSk7XHJcbiAgICAgICAgICAgIHRoaXMuZGF0ZVRpbWVDb250cm9sLnNldFZhbHVlKHRoaXMuX2RhdGVQaXBlLnRyYW5zZm9ybShpbnB1dCwgdGhpcy5zdHJpbmdGb3JtYXQpKTtcclxuICAgICAgICAgIH0gY2F0Y2ggKGVycm9yKSB7XHJcbiAgICAgICAgICB9IGZpbmFsbHkge1xyXG4gICAgICAgICAgICB0aGlzLm9uRW1pdCgpO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgfSk7XHJcbiAgICBlbHNlIGlmICh0aGlzLmZvcm1hdCA9PSAyNClcclxuICAgICAgdGhpcy5kYXRlQ29udHJvbC52YWx1ZUNoYW5nZXMuc3Vic2NyaWJlKChyZXMpID0+IHtcclxuICAgICAgICBpZiAoXHJcbiAgICAgICAgICAvWzAtM11bMC05XVxcL1swLTFdWzAtOV1cXC9bMC05XVswLTldWzAtOV1bMC05XSBbMC0xXVswLTldOlswLTZdWzAtOV0gW0EsUF1NLy50ZXN0KHRoaXMuZGF0ZVRpbWVDb250cm9sLnZhbHVlISkgfHxcclxuICAgICAgICAgIC9bMC0xXVswLTldOlswLTZdWzAtOV0vLnRlc3QodGhpcy5kYXRlVGltZUNvbnRyb2wudmFsdWUhLnN1YnN0cmluZygxMSwgMTYpKVxyXG4gICAgICAgICkge1xyXG4gICAgICAgICAgdGhpcy5kYXRlQ29udHJvbC5zZXRWYWx1ZShcclxuICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgIC4uLnRoaXMuaG91cnNDb250cm9sLnZhbHVlLFxyXG4gICAgICAgICAgICAgIC4uLnJlcyxcclxuICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgeyBlbWl0RXZlbnQ6IGZhbHNlIH1cclxuICAgICAgICAgICk7XHJcblxyXG4gICAgICAgICAgdHJ5IHtcclxuICAgICAgICAgICAgY29uc3QgaW5wdXQ6IGFueSA9IG5ldyBEYXRlVGltZU1vZGVsKE9iamVjdC5hc3NpZ24odGhpcy5kYXRlQ29udHJvbC52YWx1ZSwgdGhpcy5ob3Vyc0NvbnRyb2wudmFsdWUpKTtcclxuICAgICAgICAgICAgdGhpcy5kYXRlVGltZUNvbnRyb2wuc2V0VmFsdWUodGhpcy5fZGF0ZVBpcGUudHJhbnNmb3JtKGlucHV0LCB0aGlzLnN0cmluZ0Zvcm1hdCkpO1xyXG4gICAgICAgICAgfSBjYXRjaCAoZXJyb3IpIHtcclxuICAgICAgICAgIH0gZmluYWxseSB7XHJcbiAgICAgICAgICAgIHRoaXMub25FbWl0KCk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICB9KTtcclxuICB9XHJcblxyXG4gIG9uQmx1ciAoKTogdm9pZCB7XHJcbiAgICB0aGlzLm9uRW1pdCgpO1xyXG4gIH1cclxuXHJcbiAgZm9jdXNPdXRJbnB1dCAoKTogdm9pZCB7XHJcbiAgICBjb25zdCB2YWx1ZSA9IHRoaXMuZGF0ZVRpbWVDb250cm9sLnZhbHVlO1xyXG5cclxuICAgIGlmICgodmFsdWUgIT0gTUFTS18xMl9IT1VSUyAmJiB0aGlzLmZvcm1hdCA9PSAxMikgfHwgKHZhbHVlICE9IE1BU0tfMjRfSE9VUlMgJiYgdGhpcy5mb3JtYXQgPT0gMjQpKSB7XHJcbiAgICAgIGNvbnN0IGRpYSA9IHZhbHVlPy5zdWJzdHJpbmcoMCwgMik7XHJcbiAgICAgIGNvbnN0IG1lcyA9IHZhbHVlPy5zdWJzdHJpbmcoMywgNSk7XHJcbiAgICAgIGNvbnN0IGFuaW8gPSB2YWx1ZT8uc3Vic3RyaW5nKDYsIDEwKTtcclxuICAgICAgY29uc3QgaG9yYSA9IHZhbHVlPy5zdWJzdHJpbmcoMTEsIDEzKTtcclxuICAgICAgY29uc3QgbWludXRvcyA9IHZhbHVlPy5zdWJzdHJpbmcoMTQsIDE2KTtcclxuXHJcbiAgICAgIGlmIChcclxuICAgICAgICBpc05hTihOdW1iZXIoZGlhKSkgfHxcclxuICAgICAgICBkaWEgPT0gXCIwMFwiIHx8XHJcbiAgICAgICAgaXNOYU4oTnVtYmVyKG1lcykpIHx8XHJcbiAgICAgICAgbWVzID09IFwiMDBcIiB8fFxyXG4gICAgICAgIGlzTmFOKE51bWJlcihhbmlvKSkgfHxcclxuICAgICAgICBhbmlvID09IFwiMDAwMFwiIHx8XHJcbiAgICAgICAgaXNOYU4oTnVtYmVyKGhvcmEpKSB8fFxyXG4gICAgICAgIGlzTmFOKE51bWJlcihtaW51dG9zKSlcclxuICAgICAgKSB7XHJcbiAgICAgICAgdGhpcy5kYXRlQ29udHJvbC5zZXRWYWx1ZShcclxuICAgICAgICAgIHtcclxuICAgICAgICAgICAgeWVhcjogaXNOYU4oTnVtYmVyKGFuaW8pKSB8fCBhbmlvID09IFwiMDAwMFwiID8gdGhpcy50b2RheS55ZWFyIDogTnVtYmVyKGFuaW8pLFxyXG4gICAgICAgICAgICBtb250aDogaXNOYU4oTnVtYmVyKG1lcykpIHx8IG1lcyA9PSBcIjAwXCIgPyB0aGlzLnRvZGF5Lm1vbnRoIDogTnVtYmVyKG1lcyksXHJcbiAgICAgICAgICAgIGRheTogaXNOYU4oTnVtYmVyKGRpYSkpIHx8IGRpYSA9PSBcIjAwXCIgPyB0aGlzLnRvZGF5LmRheSA6IE51bWJlcihkaWEpLFxyXG4gICAgICAgICAgfSxcclxuICAgICAgICAgIHsgZW1pdEV2ZW50OiBmYWxzZSB9XHJcbiAgICAgICAgKTtcclxuICAgICAgICBsZXQgaG91ciA9IHRoaXMuaG91cnNDb250cm9sLnZhbHVlLmhvdXI7XHJcbiAgICAgICAgaWYgKGlzTmFOKE51bWJlcihob3JhKSkpIGhvdXIgPSB0aGlzLmF1dG9Db21wbGV0ZUhvdXJzID8gRGF0ZVV0aWwuZ2V0SG91cnMoRGF0ZVV0aWwubm93KCkpIDogMDtcclxuXHJcbiAgICAgICAgbGV0IG1pbnV0ZSA9IHRoaXMuaG91cnNDb250cm9sLnZhbHVlLm1pbnV0ZTtcclxuICAgICAgICBpZiAoaXNOYU4oTnVtYmVyKG1pbnV0b3MpKSkgbWludXRlID0gdGhpcy5hdXRvQ29tcGxldGVIb3VycyA/IERhdGVVdGlsLmdldE1pbnV0ZXMoRGF0ZVV0aWwubm93KCkpIDogMDtcclxuXHJcbiAgICAgICAgdGhpcy5ob3Vyc0NvbnRyb2wuc2V0VmFsdWUoXHJcbiAgICAgICAgICB7XHJcbiAgICAgICAgICAgIGhvdXIsXHJcbiAgICAgICAgICAgIG1pbnV0ZSxcclxuICAgICAgICAgIH0sXHJcbiAgICAgICAgICB7IGVtaXRFdmVudDogZmFsc2UgfVxyXG4gICAgICAgICk7XHJcbiAgICAgICAgY29uc3QgaW5wdXQ6IGFueSA9IG5ldyBEYXRlVGltZU1vZGVsKE9iamVjdC5hc3NpZ24odGhpcy5kYXRlQ29udHJvbC52YWx1ZSwgdGhpcy5ob3Vyc0NvbnRyb2wudmFsdWUpKTtcclxuICAgICAgICB0cnkge1xyXG4gICAgICAgICAgdGhpcy5kYXRlVGltZUNvbnRyb2wuc2V0VmFsdWUodGhpcy5fZGF0ZVBpcGUudHJhbnNmb3JtKGlucHV0LCB0aGlzLnN0cmluZ0Zvcm1hdCkpO1xyXG4gICAgICAgIH0gZmluYWxseSB7XHJcbiAgICAgICAgICB0aGlzLm9uRW1pdCgpO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIHRoaXMuY29udGFkb3IgPSAwO1xyXG4gIH1cclxuXHJcbiAgb25LZXlVcCAoZTogYW55KTogdm9pZCB7XHJcbiAgICBjb25zdCBpbnB1dCA9IGUudGFyZ2V0O1xyXG5cclxuICAgIGlmICh0aGlzLmRpc2FibGVkKSByZXR1cm47XHJcblxyXG4gICAgaWYgKCFpc05hTihOdW1iZXIoZS5rZXkpKSAmJiBlLmtleS50cmltKCkgIT0gXCJcIikge1xyXG4gICAgICAvLz09PT09PT09PT09PT09PT09PT09PT09PT09PT09IERJQSA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XHJcbiAgICAgIGlmIChpbnB1dC5zZWxlY3Rpb25TdGFydCA9PSAwICYmIGlucHV0LnNlbGVjdGlvbkVuZCA9PSAyKSB7XHJcbiAgICAgICAgY29uc3QgdmFsb3JBY3R1YWw6IHN0cmluZyA9IHRoaXMuZGF0ZVRpbWVDb250cm9sLnZhbHVlITtcclxuICAgICAgICBjb25zdCBkaWFBY3R1YWw6IHN0cmluZyA9IHZhbG9yQWN0dWFsLnN1YnN0cmluZygwLCAyKTtcclxuXHJcbiAgICAgICAgaWYgKGRpYUFjdHVhbCA9PSBcImRkXCIpIHtcclxuICAgICAgICAgIGNvbnN0IG51ZXZvVmFsb3IgPSBgJHsgZS5rZXkucGFkU3RhcnQoMiwgMCkgfSR7IHZhbG9yQWN0dWFsLnN1YnN0cmluZygyKSB9YDtcclxuICAgICAgICAgIHRoaXMuZGF0ZVRpbWVDb250cm9sLnNldFZhbHVlKG51ZXZvVmFsb3IpO1xyXG4gICAgICAgICAgdGhpcy5kYXRlQ29udHJvbC5zZXRWYWx1ZSh7XHJcbiAgICAgICAgICAgIC4uLnRoaXMuZGF0ZUNvbnRyb2wudmFsdWUsXHJcbiAgICAgICAgICAgIGRheTogTnVtYmVyKHRoaXMuZGF0ZVRpbWVDb250cm9sLnZhbHVlIS5zdWJzdHJpbmcoMCwgMikpLFxyXG4gICAgICAgICAgfSk7XHJcbiAgICAgICAgICB0aGlzLmNvbnRhZG9yKys7XHJcbiAgICAgICAgICBpZiAoZS5rZXkgPiAzKSB7XHJcbiAgICAgICAgICAgIHRoaXMuY29udGFkb3IgPSAwO1xyXG4gICAgICAgICAgICBpbnB1dC5zZXRTZWxlY3Rpb25SYW5nZSgzLCA1KTtcclxuICAgICAgICAgICAgdGhpcy5vbkVtaXQoKTtcclxuICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgICAgfSBlbHNlIHRoaXMub25FbWl0KCk7XHJcbiAgICAgICAgfSBlbHNlIGlmIChOdW1iZXIoZGlhQWN0dWFsKSA8PSAzICYmIE51bWJlcihkaWFBY3R1YWwpID4gMCAmJiB0aGlzLmNvbnRhZG9yID4gMCkge1xyXG4gICAgICAgICAgY29uc3QgbnVldm9WYWxvciA9IGAkeyBOdW1iZXIoTnVtYmVyKGRpYUFjdHVhbCkudG9TdHJpbmcoKSArIE51bWJlcihlLmtleSkpID4gMzEgPyAzMSA6IE51bWJlcihkaWFBY3R1YWwpLnRvU3RyaW5nKCkgKyBOdW1iZXIoZS5rZXkpXHJcbiAgICAgICAgICAgIH0keyB2YWxvckFjdHVhbC5zdWJzdHJpbmcoMikgfWA7XHJcbiAgICAgICAgICB0aGlzLmRhdGVUaW1lQ29udHJvbC5zZXRWYWx1ZShudWV2b1ZhbG9yKTtcclxuICAgICAgICAgIHRoaXMuZGF0ZUNvbnRyb2wuc2V0VmFsdWUoe1xyXG4gICAgICAgICAgICAuLi50aGlzLmRhdGVDb250cm9sLnZhbHVlLFxyXG4gICAgICAgICAgICBkYXk6IE51bWJlcih0aGlzLmRhdGVUaW1lQ29udHJvbC52YWx1ZSEuc3Vic3RyaW5nKDAsIDIpKSxcclxuICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgdGhpcy5jb250YWRvcisrO1xyXG4gICAgICAgICAgdGhpcy5vbkVtaXQoKTtcclxuICAgICAgICAgIGlucHV0LnNldFNlbGVjdGlvblJhbmdlKDMsIDUpO1xyXG4gICAgICAgICAgdGhpcy5jb250YWRvciA9IDA7XHJcbiAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgIGNvbnN0IG51ZXZvVmFsb3IgPSBgJHsgZS5rZXkucGFkU3RhcnQoMiwgMCkgfSR7IHZhbG9yQWN0dWFsLnN1YnN0cmluZygyKSB9YDtcclxuICAgICAgICAgIHRoaXMuZGF0ZVRpbWVDb250cm9sLnNldFZhbHVlKG51ZXZvVmFsb3IpO1xyXG4gICAgICAgICAgdGhpcy5kYXRlQ29udHJvbC5zZXRWYWx1ZSh7XHJcbiAgICAgICAgICAgIC4uLnRoaXMuZGF0ZUNvbnRyb2wudmFsdWUsXHJcbiAgICAgICAgICAgIGRheTogTnVtYmVyKHRoaXMuZGF0ZVRpbWVDb250cm9sLnZhbHVlIS5zdWJzdHJpbmcoMCwgMikpLFxyXG4gICAgICAgICAgfSk7XHJcbiAgICAgICAgICB0aGlzLmNvbnRhZG9yKys7XHJcbiAgICAgICAgICBpZiAoTnVtYmVyKGUua2V5LnBhZFN0YXJ0KDIsIDApKSA+IDMgfHwgdGhpcy5jb250YWRvciA+IDEpIHtcclxuICAgICAgICAgICAgdGhpcy5jb250YWRvciA9IDA7XHJcbiAgICAgICAgICAgIGlucHV0LnNldFNlbGVjdGlvblJhbmdlKDMsIDUpO1xyXG4gICAgICAgICAgICB0aGlzLm9uRW1pdCgpO1xyXG4gICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgICB9IGVsc2UgdGhpcy5vbkVtaXQoKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgdGhpcy5vbkVtaXQoKTtcclxuICAgICAgICBpbnB1dC5zZXRTZWxlY3Rpb25SYW5nZSgwLCAyKTtcclxuICAgICAgfVxyXG4gICAgICAvLz09PT09PT09PT09PT09PT09PT09PT09PT09PT09IE1FUyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XHJcbiAgICAgIGVsc2UgaWYgKGlucHV0LnNlbGVjdGlvblN0YXJ0ID09IDMgJiYgaW5wdXQuc2VsZWN0aW9uRW5kID09IDUpIHtcclxuICAgICAgICBjb25zdCB2YWxvckFjdHVhbDogc3RyaW5nID0gdGhpcy5kYXRlVGltZUNvbnRyb2wudmFsdWUhO1xyXG4gICAgICAgIGNvbnN0IG1lc0FjdHVhbDogc3RyaW5nID0gdmFsb3JBY3R1YWwuc3Vic3RyaW5nKDMsIDUpO1xyXG5cclxuICAgICAgICBpZiAobWVzQWN0dWFsID09IFwibW1cIikge1xyXG4gICAgICAgICAgY29uc3QgbnVldm9WYWxvciA9IGAkeyB2YWxvckFjdHVhbC5zdWJzdHJpbmcoMCwgMykgfSR7IGUua2V5LnBhZFN0YXJ0KDIsIDApIH0keyB2YWxvckFjdHVhbC5zdWJzdHJpbmcoNSkgfWA7XHJcbiAgICAgICAgICB0aGlzLmRhdGVUaW1lQ29udHJvbC5zZXRWYWx1ZShudWV2b1ZhbG9yKTtcclxuICAgICAgICAgIHRoaXMuZGF0ZUNvbnRyb2wuc2V0VmFsdWUoe1xyXG4gICAgICAgICAgICAuLi50aGlzLmRhdGVDb250cm9sLnZhbHVlLFxyXG4gICAgICAgICAgICBtb250aDogTnVtYmVyKHRoaXMuZGF0ZVRpbWVDb250cm9sLnZhbHVlIS5zdWJzdHJpbmcoMywgNSkpLFxyXG4gICAgICAgICAgfSk7XHJcbiAgICAgICAgICB0aGlzLmNvbnRhZG9yKys7XHJcbiAgICAgICAgICBpZiAoZS5rZXkgPiAxKSB7XHJcbiAgICAgICAgICAgIHRoaXMub25FbWl0KCk7XHJcbiAgICAgICAgICAgIGlucHV0LnNldFNlbGVjdGlvblJhbmdlKDYsIDEwKTtcclxuICAgICAgICAgICAgdGhpcy5jb250YWRvciA9IDA7XHJcbiAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICAgIH0gZWxzZSB0aGlzLm9uRW1pdCgpO1xyXG4gICAgICAgIH0gZWxzZSBpZiAoTnVtYmVyKG1lc0FjdHVhbCkgPD0gMSAmJiBOdW1iZXIobWVzQWN0dWFsKSA+IDAgJiYgdGhpcy5jb250YWRvciA+IDApIHtcclxuICAgICAgICAgIGNvbnN0IG51ZXZvVmFsb3IgPSBgJHsgdmFsb3JBY3R1YWwuc3Vic3RyaW5nKDAsIDMpIH0keyBOdW1iZXIoTnVtYmVyKG1lc0FjdHVhbCkudG9TdHJpbmcoKSArIE51bWJlcihlLmtleSkpID4gMTIgPyAxMiA6IE51bWJlcihtZXNBY3R1YWwpLnRvU3RyaW5nKCkgKyBOdW1iZXIoZS5rZXkpXHJcbiAgICAgICAgICAgIH0keyB2YWxvckFjdHVhbC5zdWJzdHJpbmcoNSkgfWA7XHJcbiAgICAgICAgICB0aGlzLmRhdGVUaW1lQ29udHJvbC5zZXRWYWx1ZShudWV2b1ZhbG9yKTtcclxuICAgICAgICAgIHRoaXMuZGF0ZUNvbnRyb2wuc2V0VmFsdWUoe1xyXG4gICAgICAgICAgICAuLi50aGlzLmRhdGVDb250cm9sLnZhbHVlLFxyXG4gICAgICAgICAgICBtb250aDogTnVtYmVyKHRoaXMuZGF0ZVRpbWVDb250cm9sLnZhbHVlIS5zdWJzdHJpbmcoMywgNSkpLFxyXG4gICAgICAgICAgfSk7XHJcbiAgICAgICAgICB0aGlzLmNvbnRhZG9yKys7XHJcbiAgICAgICAgICB0aGlzLm9uRW1pdCgpO1xyXG4gICAgICAgICAgaW5wdXQuc2V0U2VsZWN0aW9uUmFuZ2UoNiwgMTApO1xyXG4gICAgICAgICAgdGhpcy5jb250YWRvciA9IDA7XHJcbiAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgIGNvbnN0IG51ZXZvVmFsb3IgPSBgJHsgdmFsb3JBY3R1YWwuc3Vic3RyaW5nKDAsIDMpIH0keyBlLmtleS5wYWRTdGFydCgyLCAwKSB9JHsgdmFsb3JBY3R1YWwuc3Vic3RyaW5nKDUpIH1gO1xyXG4gICAgICAgICAgdGhpcy5kYXRlVGltZUNvbnRyb2wuc2V0VmFsdWUobnVldm9WYWxvcik7XHJcbiAgICAgICAgICB0aGlzLmRhdGVDb250cm9sLnNldFZhbHVlKHtcclxuICAgICAgICAgICAgLi4udGhpcy5kYXRlQ29udHJvbC52YWx1ZSxcclxuICAgICAgICAgICAgbW9udGg6IE51bWJlcih0aGlzLmRhdGVUaW1lQ29udHJvbC52YWx1ZSEuc3Vic3RyaW5nKDMsIDUpKSxcclxuICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgdGhpcy5jb250YWRvcisrO1xyXG4gICAgICAgICAgaWYgKE51bWJlcihlLmtleS5wYWRTdGFydCgyLCAwKSkgPiAxIHx8IHRoaXMuY29udGFkb3IgPiAxKSB7XHJcbiAgICAgICAgICAgIHRoaXMub25FbWl0KCk7XHJcbiAgICAgICAgICAgIGlucHV0LnNldFNlbGVjdGlvblJhbmdlKDYsIDEwKTtcclxuICAgICAgICAgICAgdGhpcy5jb250YWRvciA9IDA7XHJcbiAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICAgIH0gZWxzZSB0aGlzLm9uRW1pdCgpO1xyXG4gICAgICAgIH1cclxuICAgICAgICB0aGlzLm9uRW1pdCgpO1xyXG4gICAgICAgIGlucHV0LnNldFNlbGVjdGlvblJhbmdlKDMsIDUpO1xyXG4gICAgICB9XHJcbiAgICAgIC8vPT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gQcORTyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XHJcbiAgICAgIGVsc2UgaWYgKGlucHV0LnNlbGVjdGlvblN0YXJ0ID09IDYgJiYgaW5wdXQuc2VsZWN0aW9uRW5kID09IDEwKSB7XHJcbiAgICAgICAgY29uc3QgdmFsb3JBY3R1YWw6IHN0cmluZyA9IHRoaXMuZGF0ZVRpbWVDb250cm9sLnZhbHVlITtcclxuICAgICAgICBjb25zdCBhbmlvQWN0dWFsOiBzdHJpbmcgPSB2YWxvckFjdHVhbC5zdWJzdHJpbmcoNiwgMTApO1xyXG4gICAgICAgIGlmIChhbmlvQWN0dWFsID09IFwieXl5eVwiKSB7XHJcbiAgICAgICAgICBjb25zdCBudWV2b1ZhbG9yID0gYCR7IHZhbG9yQWN0dWFsLnN1YnN0cmluZygwLCA2KSB9JHsgZS5rZXkucGFkU3RhcnQoNCwgMCkgfSR7IHZhbG9yQWN0dWFsLnN1YnN0cmluZygxMCkgfWA7XHJcbiAgICAgICAgICB0aGlzLmRhdGVUaW1lQ29udHJvbC5zZXRWYWx1ZShudWV2b1ZhbG9yKTtcclxuICAgICAgICAgIHRoaXMuZGF0ZUNvbnRyb2wuc2V0VmFsdWUoe1xyXG4gICAgICAgICAgICAuLi50aGlzLmRhdGVDb250cm9sLnZhbHVlLFxyXG4gICAgICAgICAgICB5ZWFyOiBOdW1iZXIodGhpcy5kYXRlVGltZUNvbnRyb2wudmFsdWUhLnN1YnN0cmluZyg2LCAxMCkpLFxyXG4gICAgICAgICAgfSk7XHJcbiAgICAgICAgICB0aGlzLmNvbnRhZG9yKys7XHJcbiAgICAgICAgICBpZiAoZS5rZXkgPiAyKSB7XHJcbiAgICAgICAgICAgIGNvbnN0IG51ZXZvVmFsb3IgPSBgJHsgdmFsb3JBY3R1YWwuc3Vic3RyaW5nKDAsIDYpIH0keyBEYXRlVXRpbC5nZXRZZWFyKERhdGVVdGlsLm5vdygpKSB9JHsgdmFsb3JBY3R1YWwuc3Vic3RyaW5nKDEwKSB9YDtcclxuICAgICAgICAgICAgdGhpcy5kYXRlVGltZUNvbnRyb2wuc2V0VmFsdWUobnVldm9WYWxvcik7XHJcbiAgICAgICAgICAgIHRoaXMuZGF0ZUNvbnRyb2wuc2V0VmFsdWUoe1xyXG4gICAgICAgICAgICAgIC4uLnRoaXMuZGF0ZUNvbnRyb2wudmFsdWUsXHJcbiAgICAgICAgICAgICAgeWVhcjogTnVtYmVyKHRoaXMuZGF0ZVRpbWVDb250cm9sLnZhbHVlIS5zdWJzdHJpbmcoNiwgMTApKSxcclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgIHRoaXMub25FbWl0KCk7XHJcbiAgICAgICAgICAgIGlucHV0LnNldFNlbGVjdGlvblJhbmdlKDExLCAxMyk7XHJcbiAgICAgICAgICAgIHRoaXMuY29udGFkb3IgPSAwO1xyXG4gICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgICB9IGVsc2UgdGhpcy5vbkVtaXQoKTtcclxuICAgICAgICB9IGVsc2UgaWYgKE51bWJlcihhbmlvQWN0dWFsKSA8PSAyOTk5ICYmIE51bWJlcihhbmlvQWN0dWFsKSA+IDApIHtcclxuICAgICAgICAgIGxldCBudWV2b1ZhbG9yO1xyXG4gICAgICAgICAgdGhpcy5jb250YWRvcisrO1xyXG4gICAgICAgICAgaWYgKE51bWJlcihhbmlvQWN0dWFsKSA+PSAxMDAwKSB7XHJcbiAgICAgICAgICAgIG51ZXZvVmFsb3IgPSBgJHsgdmFsb3JBY3R1YWwuc3Vic3RyaW5nKDAsIDYpIH0keyBOdW1iZXIoZS5rZXkpLnRvU3RyaW5nKCkucGFkU3RhcnQoNCwgXCIwXCIpIH0keyB2YWxvckFjdHVhbC5zdWJzdHJpbmcoMTApIH1gO1xyXG4gICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgbnVldm9WYWxvciA9IGAkeyB2YWxvckFjdHVhbC5zdWJzdHJpbmcoMCwgNikgfSR7IChOdW1iZXIoYW5pb0FjdHVhbCkudG9TdHJpbmcoKSArIE51bWJlcihlLmtleSkpLnBhZFN0YXJ0KFxyXG4gICAgICAgICAgICAgIDQsXHJcbiAgICAgICAgICAgICAgXCIwXCJcclxuICAgICAgICAgICAgKSB9JHsgdmFsb3JBY3R1YWwuc3Vic3RyaW5nKDEwKSB9YDtcclxuICAgICAgICAgICAgdGhpcy5kYXRlVGltZUNvbnRyb2wuc2V0VmFsdWUobnVldm9WYWxvcik7XHJcbiAgICAgICAgICAgIHRoaXMuZGF0ZUNvbnRyb2wuc2V0VmFsdWUoe1xyXG4gICAgICAgICAgICAgIC4uLnRoaXMuZGF0ZUNvbnRyb2wudmFsdWUsXHJcbiAgICAgICAgICAgICAgeWVhcjogTnVtYmVyKHRoaXMuZGF0ZVRpbWVDb250cm9sLnZhbHVlIS5zdWJzdHJpbmcoNiwgMTApKSxcclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgIGlmIChcclxuICAgICAgICAgICAgICBOdW1iZXIoTnVtYmVyKGFuaW9BY3R1YWwpLnRvU3RyaW5nKCkgKyBOdW1iZXIoZS5rZXkpKSA+IDEwMDAgJiZcclxuICAgICAgICAgICAgICBOdW1iZXIoTnVtYmVyKGFuaW9BY3R1YWwpLnRvU3RyaW5nKCkgKyBOdW1iZXIoZS5rZXkpKSA8IDMwMDBcclxuICAgICAgICAgICAgKSB7XHJcbiAgICAgICAgICAgICAgdGhpcy5vbkVtaXQoKTtcclxuICAgICAgICAgICAgICBpbnB1dC5zZXRTZWxlY3Rpb25SYW5nZSgxMSwgMTMpO1xyXG4gICAgICAgICAgICAgIHRoaXMuY29udGFkb3IgPSAwO1xyXG4gICAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICAgICAgfSBlbHNlIGlmIChOdW1iZXIoTnVtYmVyKGFuaW9BY3R1YWwpLnRvU3RyaW5nKCkgKyBOdW1iZXIoZS5rZXkpKSA+IDI5OTkpIHtcclxuICAgICAgICAgICAgICBudWV2b1ZhbG9yID0gYCR7IHZhbG9yQWN0dWFsLnN1YnN0cmluZygwLCA2KSB9JHsgRGF0ZVV0aWwuZ2V0WWVhcihEYXRlVXRpbC5ub3coKSkgfSR7IHZhbG9yQWN0dWFsLnN1YnN0cmluZygxMCkgfWA7XHJcbiAgICAgICAgICAgICAgdGhpcy5kYXRlVGltZUNvbnRyb2wuc2V0VmFsdWUobnVldm9WYWxvcik7XHJcbiAgICAgICAgICAgICAgdGhpcy5kYXRlQ29udHJvbC5zZXRWYWx1ZSh7XHJcbiAgICAgICAgICAgICAgICAuLi50aGlzLmRhdGVDb250cm9sLnZhbHVlLFxyXG4gICAgICAgICAgICAgICAgeWVhcjogTnVtYmVyKHRoaXMuZGF0ZVRpbWVDb250cm9sLnZhbHVlIS5zdWJzdHJpbmcoNiwgMTApKSxcclxuICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgICB0aGlzLm9uRW1pdCgpO1xyXG4gICAgICAgICAgICAgIGlucHV0LnNldFNlbGVjdGlvblJhbmdlKDExLCAxMyk7XHJcbiAgICAgICAgICAgICAgdGhpcy5jb250YWRvciA9IDA7XHJcbiAgICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICB0aGlzLmRhdGVUaW1lQ29udHJvbC5zZXRWYWx1ZShudWV2b1ZhbG9yKTtcclxuICAgICAgICAgIHRoaXMuZGF0ZUNvbnRyb2wuc2V0VmFsdWUoe1xyXG4gICAgICAgICAgICAuLi50aGlzLmRhdGVDb250cm9sLnZhbHVlLFxyXG4gICAgICAgICAgICB5ZWFyOiBOdW1iZXIodGhpcy5kYXRlVGltZUNvbnRyb2wudmFsdWUhLnN1YnN0cmluZyg2LCAxMCkpLFxyXG4gICAgICAgICAgfSk7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgIGNvbnN0IG51ZXZvVmFsb3IgPSBgJHsgdmFsb3JBY3R1YWwuc3Vic3RyaW5nKDAsIDYpIH0keyBlLmtleS5wYWRTdGFydCg0LCAwKSB9JHsgdmFsb3JBY3R1YWwuc3Vic3RyaW5nKDEwKSB9YDtcclxuICAgICAgICAgIHRoaXMuZGF0ZVRpbWVDb250cm9sLnNldFZhbHVlKG51ZXZvVmFsb3IpO1xyXG4gICAgICAgICAgdGhpcy5kYXRlQ29udHJvbC5zZXRWYWx1ZSh7XHJcbiAgICAgICAgICAgIC4uLnRoaXMuZGF0ZUNvbnRyb2wudmFsdWUsXHJcbiAgICAgICAgICAgIHllYXI6IE51bWJlcih0aGlzLmRhdGVUaW1lQ29udHJvbC52YWx1ZSEuc3Vic3RyaW5nKDYsIDEwKSksXHJcbiAgICAgICAgICB9KTtcclxuICAgICAgICB9XHJcbiAgICAgICAgdGhpcy5jb250YWRvcisrO1xyXG4gICAgICAgIHRoaXMub25FbWl0KCk7XHJcbiAgICAgICAgaW5wdXQuc2V0U2VsZWN0aW9uUmFuZ2UoNiwgMTApO1xyXG4gICAgICB9XHJcbiAgICAgIC8vPT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gSE9SQSA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cclxuICAgICAgZWxzZSBpZiAoaW5wdXQuc2VsZWN0aW9uU3RhcnQgPT0gMTEgJiYgaW5wdXQuc2VsZWN0aW9uRW5kID09IDEzKSB7XHJcbiAgICAgICAgY29uc3QgdmFsb3JBY3R1YWw6IHN0cmluZyA9IHRoaXMuZGF0ZVRpbWVDb250cm9sLnZhbHVlITtcclxuICAgICAgICBjb25zdCBob3JhQWN0dWFsOiBzdHJpbmcgPSB2YWxvckFjdHVhbC5zdWJzdHJpbmcoMTEsIDEzKTtcclxuXHJcbiAgICAgICAgaWYgKGhvcmFBY3R1YWwgPT0gXCItLVwiKSB7XHJcbiAgICAgICAgICBjb25zdCBudWV2b1ZhbG9yID0gYCR7IHZhbG9yQWN0dWFsLnN1YnN0cmluZygwLCAxMSkgfSR7IGUua2V5LnBhZFN0YXJ0KDIsIDApIH0keyB2YWxvckFjdHVhbC5zdWJzdHJpbmcoMTMpIH1gO1xyXG4gICAgICAgICAgdGhpcy5kYXRlVGltZUNvbnRyb2wuc2V0VmFsdWUobnVldm9WYWxvcik7XHJcbiAgICAgICAgICAvLz09PT09PT09PT09IEZPUk1BVE8gMTIgSE9SQVM9PT09PT09PT09PVxyXG4gICAgICAgICAgaWYgKHRoaXMuZm9ybWF0ID09IDEyKVxyXG4gICAgICAgICAgICB0aGlzLmhvdXJzQ29udHJvbC5zZXRWYWx1ZSh7XHJcbiAgICAgICAgICAgICAgLi4udGhpcy5ob3Vyc0NvbnRyb2wudmFsdWUsXHJcbiAgICAgICAgICAgICAgaG91cjogL1swLTFdWzAtOV06WzAtNl1bMC05XSBbQSxQXU0vLnRlc3QodGhpcy5kYXRlVGltZUNvbnRyb2wudmFsdWUhLnN1YnN0cmluZygxMSkpXHJcbiAgICAgICAgICAgICAgICA/IE51bWJlcih0aGlzLl9kYXRlUGlwZS50cmFuc2Zvcm0oYDAxLzAxLzIwMjAgJHsgdGhpcy5kYXRlVGltZUNvbnRyb2wudmFsdWUhLnN1YnN0cmluZygxMSkgfWAsIFwiSEhcIikpXHJcbiAgICAgICAgICAgICAgICA6IE51bWJlcih0aGlzLmRhdGVUaW1lQ29udHJvbC52YWx1ZSEuc3Vic3RyaW5nKDExLCAxMykpLFxyXG4gICAgICAgICAgICAgIG1pbnV0ZTogdGhpcy5kYXRlVGltZUNvbnRyb2wudmFsdWUhLnN1YnN0cmluZygxNCwgMTYpID09IFwiLS1cIiA/IDAgOiB0aGlzLmhvdXJzQ29udHJvbC52YWx1ZS5taW51dGUsXHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgLy89PT09PT09PT09PSBGT1JNQVRPIDI0IEhPUkFTPT09PT09PT09PT1cclxuICAgICAgICAgIGVsc2VcclxuICAgICAgICAgICAgdGhpcy5ob3Vyc0NvbnRyb2wuc2V0VmFsdWUoe1xyXG4gICAgICAgICAgICAgIC4uLnRoaXMuaG91cnNDb250cm9sLnZhbHVlLFxyXG4gICAgICAgICAgICAgIGhvdXI6IC9bMC0xXVswLTldOlswLTZdWzAtOV0vLnRlc3QodGhpcy5kYXRlVGltZUNvbnRyb2wudmFsdWUhLnN1YnN0cmluZygxMSkpXHJcbiAgICAgICAgICAgICAgICA/IE51bWJlcih0aGlzLl9kYXRlUGlwZS50cmFuc2Zvcm0oYDAxLzAxLzIwMjAgJHsgdGhpcy5kYXRlVGltZUNvbnRyb2wudmFsdWUhLnN1YnN0cmluZygxMSkgfWAsIFwiSEhcIikpXHJcbiAgICAgICAgICAgICAgICA6IE51bWJlcih0aGlzLmRhdGVUaW1lQ29udHJvbC52YWx1ZSEuc3Vic3RyaW5nKDExLCAxMykpLFxyXG4gICAgICAgICAgICAgIG1pbnV0ZTogdGhpcy5kYXRlVGltZUNvbnRyb2wudmFsdWUhLnN1YnN0cmluZygxNCwgMTYpID09IFwiMDBcIiA/IDAgOiB0aGlzLmhvdXJzQ29udHJvbC52YWx1ZS5taW51dGUsXHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgdGhpcy5jb250YWRvcisrO1xyXG4gICAgICAgICAgaWYgKGUua2V5ID4gMSAmJiB0aGlzLmZvcm1hdCA9PSAxMikge1xyXG4gICAgICAgICAgICB0aGlzLm9uRW1pdCgpO1xyXG4gICAgICAgICAgICBpbnB1dC5zZXRTZWxlY3Rpb25SYW5nZSgxNCwgMTYpO1xyXG4gICAgICAgICAgICB0aGlzLmNvbnRhZG9yID0gMDtcclxuICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgICAgfSBlbHNlIGlmIChlLmtleSA+IDIgJiYgdGhpcy5mb3JtYXQgPT0gMjQpIHtcclxuICAgICAgICAgICAgdGhpcy5vbkVtaXQoKTtcclxuICAgICAgICAgICAgaW5wdXQuc2V0U2VsZWN0aW9uUmFuZ2UoMTQsIDE2KTtcclxuICAgICAgICAgICAgdGhpcy5jb250YWRvciA9IDA7XHJcbiAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICAgIH0gZWxzZSB0aGlzLm9uRW1pdCgpO1xyXG4gICAgICAgIH0gZWxzZSBpZiAoTnVtYmVyKGhvcmFBY3R1YWwpIDw9IDEgJiYgTnVtYmVyKGhvcmFBY3R1YWwpID4gMCAmJiB0aGlzLmNvbnRhZG9yID4gMCAmJiB0aGlzLmZvcm1hdCA9PSAxMikge1xyXG4gICAgICAgICAgY29uc3QgbnVldm9WYWxvciA9IGAkeyB2YWxvckFjdHVhbC5zdWJzdHJpbmcoMCwgMTEpIH0keyBOdW1iZXIoTnVtYmVyKGhvcmFBY3R1YWwpLnRvU3RyaW5nKCkgKyBOdW1iZXIoZS5rZXkpKSA+IDEyID8gMTIgOiBOdW1iZXIoaG9yYUFjdHVhbCkudG9TdHJpbmcoKSArIE51bWJlcihlLmtleSlcclxuICAgICAgICAgICAgfSR7IHZhbG9yQWN0dWFsLnN1YnN0cmluZygxMykgfWA7XHJcbiAgICAgICAgICB0aGlzLmRhdGVUaW1lQ29udHJvbC5zZXRWYWx1ZShudWV2b1ZhbG9yKTtcclxuICAgICAgICAgIHRoaXMuaG91cnNDb250cm9sLnNldFZhbHVlKHtcclxuICAgICAgICAgICAgLi4udGhpcy5ob3Vyc0NvbnRyb2wudmFsdWUsXHJcbiAgICAgICAgICAgIGhvdXI6IC9bMC0xXVswLTldOlswLTZdWzAtOV0gW0EsUF1NLy50ZXN0KHRoaXMuZGF0ZVRpbWVDb250cm9sLnZhbHVlIS5zdWJzdHJpbmcoMTEpKVxyXG4gICAgICAgICAgICAgID8gTnVtYmVyKHRoaXMuX2RhdGVQaXBlLnRyYW5zZm9ybShgMDEvMDEvMjAyMCAkeyB0aGlzLmRhdGVUaW1lQ29udHJvbC52YWx1ZSEuc3Vic3RyaW5nKDExKSB9YCwgXCJISFwiKSlcclxuICAgICAgICAgICAgICA6IE51bWJlcih0aGlzLmRhdGVUaW1lQ29udHJvbC52YWx1ZSEuc3Vic3RyaW5nKDExLCAxMykpLFxyXG4gICAgICAgICAgICBtaW51dGU6IHRoaXMuZGF0ZVRpbWVDb250cm9sLnZhbHVlIS5zdWJzdHJpbmcoMTQsIDE2KSA9PSBcIjAwXCIgPyAwIDogdGhpcy5ob3Vyc0NvbnRyb2wudmFsdWUubWludXRlLFxyXG4gICAgICAgICAgfSk7XHJcbiAgICAgICAgICB0aGlzLmNvbnRhZG9yKys7XHJcbiAgICAgICAgICB0aGlzLm9uRW1pdCgpO1xyXG4gICAgICAgICAgaW5wdXQuc2V0U2VsZWN0aW9uUmFuZ2UoMTQsIDE2KTtcclxuICAgICAgICAgIHRoaXMuY29udGFkb3IgPSAwO1xyXG4gICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIH0gZWxzZSBpZiAoTnVtYmVyKGhvcmFBY3R1YWwpIDw9IDIgJiYgTnVtYmVyKGhvcmFBY3R1YWwpID4gMCAmJiB0aGlzLmNvbnRhZG9yID4gMCAmJiB0aGlzLmZvcm1hdCA9PSAyNCkge1xyXG4gICAgICAgICAgY29uc3QgbnVldm9WYWxvciA9IGAkeyB2YWxvckFjdHVhbC5zdWJzdHJpbmcoMCwgMTEpIH0keyBOdW1iZXIoTnVtYmVyKGhvcmFBY3R1YWwpLnRvU3RyaW5nKCkgKyBOdW1iZXIoZS5rZXkpKSA+IDI0ID8gMjQgOiBOdW1iZXIoaG9yYUFjdHVhbCkudG9TdHJpbmcoKSArIE51bWJlcihlLmtleSlcclxuICAgICAgICAgICAgfSR7IHZhbG9yQWN0dWFsLnN1YnN0cmluZygxMykgfWA7XHJcbiAgICAgICAgICB0aGlzLmRhdGVUaW1lQ29udHJvbC5zZXRWYWx1ZShudWV2b1ZhbG9yKTtcclxuICAgICAgICAgIGxldCBob3VyO1xyXG4gICAgICAgICAgdHJ5IHtcclxuICAgICAgICAgICAgaG91ciA9IC9bMC0xXVswLTldOlswLTZdWzAtOV0vLnRlc3QodGhpcy5kYXRlVGltZUNvbnRyb2wudmFsdWUhLnN1YnN0cmluZygxMSkpXHJcbiAgICAgICAgICAgICAgPyBOdW1iZXIodGhpcy5fZGF0ZVBpcGUudHJhbnNmb3JtKGAwMS8wMS8yMDIwICR7IHRoaXMuZGF0ZVRpbWVDb250cm9sLnZhbHVlIS5zdWJzdHJpbmcoMTEpIH1gLCBcIkhIXCIpKVxyXG4gICAgICAgICAgICAgIDogTnVtYmVyKHRoaXMuZGF0ZVRpbWVDb250cm9sLnZhbHVlIS5zdWJzdHJpbmcoMTEsIDEzKSk7XHJcbiAgICAgICAgICB9IGNhdGNoIChlcnJvcikge1xyXG4gICAgICAgICAgICBob3VyID0gTnVtYmVyKHRoaXMuZGF0ZVRpbWVDb250cm9sLnZhbHVlIS5zdWJzdHJpbmcoMTEsIDEzKSk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICB0aGlzLmhvdXJzQ29udHJvbC5zZXRWYWx1ZSh7XHJcbiAgICAgICAgICAgIC4uLnRoaXMuaG91cnNDb250cm9sLnZhbHVlLFxyXG4gICAgICAgICAgICBob3VyLFxyXG4gICAgICAgICAgICBtaW51dGU6IHRoaXMuZGF0ZVRpbWVDb250cm9sLnZhbHVlIS5zdWJzdHJpbmcoMTQsIDE2KSA9PSBcIjAwXCIgPyAwIDogdGhpcy5ob3Vyc0NvbnRyb2wudmFsdWUubWludXRlLFxyXG4gICAgICAgICAgfSk7XHJcbiAgICAgICAgICB0aGlzLmNvbnRhZG9yKys7XHJcbiAgICAgICAgICB0aGlzLm9uRW1pdCgpO1xyXG4gICAgICAgICAgaW5wdXQuc2V0U2VsZWN0aW9uUmFuZ2UoMTQsIDE2KTtcclxuICAgICAgICAgIHRoaXMuY29udGFkb3IgPSAwO1xyXG4gICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICBjb25zdCBudWV2b1ZhbG9yID0gYCR7IHZhbG9yQWN0dWFsLnN1YnN0cmluZygwLCAxMSkgfSR7IGUua2V5LnBhZFN0YXJ0KDIsIDApIH0keyB2YWxvckFjdHVhbC5zdWJzdHJpbmcoMTMpIH1gO1xyXG4gICAgICAgICAgdGhpcy5kYXRlVGltZUNvbnRyb2wuc2V0VmFsdWUobnVldm9WYWxvcik7XHJcbiAgICAgICAgICBjb25zdCByZWdleCA9IHRoaXMuZm9ybWF0ID09IDEyID8gL1swLTFdWzAtOV06WzAtNl1bMC05XSBbQSxQXU0vIDogL1swLTFdWzAtOV06WzAtNl1bMC05XS87XHJcblxyXG4gICAgICAgICAgdGhpcy5ob3Vyc0NvbnRyb2wuc2V0VmFsdWUoe1xyXG4gICAgICAgICAgICAuLi50aGlzLmhvdXJzQ29udHJvbC52YWx1ZSxcclxuICAgICAgICAgICAgaG91cjogcmVnZXgudGVzdCh0aGlzLmRhdGVUaW1lQ29udHJvbC52YWx1ZSEuc3Vic3RyaW5nKDExKSlcclxuICAgICAgICAgICAgICA/IE51bWJlcih0aGlzLl9kYXRlUGlwZS50cmFuc2Zvcm0oYDAxLzAxLzIwMjAgJHsgdGhpcy5kYXRlVGltZUNvbnRyb2wudmFsdWUhLnN1YnN0cmluZygxMSkgfWAsIFwiSEhcIikpXHJcbiAgICAgICAgICAgICAgOiBOdW1iZXIodGhpcy5kYXRlVGltZUNvbnRyb2wudmFsdWUhLnN1YnN0cmluZygxMSwgMTMpKSxcclxuICAgICAgICAgICAgbWludXRlOlxyXG4gICAgICAgICAgICAgIHRoaXMuZGF0ZVRpbWVDb250cm9sLnZhbHVlIS5zdWJzdHJpbmcoMTQsIDE2KSA9PSBcIjAwXCIgfHwgdGhpcy5kYXRlVGltZUNvbnRyb2wudmFsdWUhLnN1YnN0cmluZygxNCwgMTYpID09IFwiLS1cIlxyXG4gICAgICAgICAgICAgICAgPyAwXHJcbiAgICAgICAgICAgICAgICA6IHRoaXMuaG91cnNDb250cm9sLnZhbHVlLm1pbnV0ZSxcclxuICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgdGhpcy5jb250YWRvcisrO1xyXG4gICAgICAgICAgaWYgKChOdW1iZXIoZS5rZXkucGFkU3RhcnQoMiwgMCkpID4gMSB8fCB0aGlzLmNvbnRhZG9yID4gMSkgJiYgdGhpcy5mb3JtYXQgPT0gMTIpIHtcclxuICAgICAgICAgICAgdGhpcy5vbkVtaXQoKTtcclxuICAgICAgICAgICAgaW5wdXQuc2V0U2VsZWN0aW9uUmFuZ2UoMTQsIDE2KTtcclxuICAgICAgICAgICAgdGhpcy5jb250YWRvciA9IDA7XHJcbiAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICAgIH0gZWxzZSBpZiAoKE51bWJlcihlLmtleS5wYWRTdGFydCgyLCAwKSkgPiAyIHx8IHRoaXMuY29udGFkb3IgPiAxKSAmJiB0aGlzLmZvcm1hdCA9PSAyNCkge1xyXG4gICAgICAgICAgICB0aGlzLm9uRW1pdCgpO1xyXG4gICAgICAgICAgICBpbnB1dC5zZXRTZWxlY3Rpb25SYW5nZSgxNCwgMTYpO1xyXG4gICAgICAgICAgICB0aGlzLmNvbnRhZG9yID0gMDtcclxuICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgICAgfSBlbHNlIHRoaXMub25FbWl0KCk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHRoaXMub25FbWl0KCk7XHJcbiAgICAgICAgaW5wdXQuc2V0U2VsZWN0aW9uUmFuZ2UoMTEsIDEzKTtcclxuICAgICAgfVxyXG4gICAgICAvLz09PT09PT09PT09PT09PT09PT09PT09PT09PT0gTUlOVVRPUyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XHJcbiAgICAgIGVsc2UgaWYgKGlucHV0LnNlbGVjdGlvblN0YXJ0ID09IDE0ICYmIGlucHV0LnNlbGVjdGlvbkVuZCA9PSAxNikge1xyXG4gICAgICAgIGNvbnN0IHZhbG9yQWN0dWFsOiBzdHJpbmcgPSB0aGlzLmRhdGVUaW1lQ29udHJvbC52YWx1ZSE7XHJcbiAgICAgICAgY29uc3QgbWludXRvc0FjdHVhbGVzOiBzdHJpbmcgPSB2YWxvckFjdHVhbC5zdWJzdHJpbmcoMTQsIDE2KTtcclxuICAgICAgICBpZiAobWludXRvc0FjdHVhbGVzID09IFwiLS1cIikge1xyXG4gICAgICAgICAgY29uc3QgbnVldm9WYWxvciA9IGAkeyB2YWxvckFjdHVhbC5zdWJzdHJpbmcoMCwgMTQpIH0keyBlLmtleS5wYWRTdGFydCgyLCAwKSB9JHsgdmFsb3JBY3R1YWwuc3Vic3RyaW5nKDE2KSB9YDtcclxuICAgICAgICAgIHRoaXMuZGF0ZVRpbWVDb250cm9sLnNldFZhbHVlKG51ZXZvVmFsb3IpO1xyXG4gICAgICAgICAgdGhpcy5ob3Vyc0NvbnRyb2wuc2V0VmFsdWUoe1xyXG4gICAgICAgICAgICAuLi50aGlzLmhvdXJzQ29udHJvbC52YWx1ZSxcclxuICAgICAgICAgICAgbWludXRlOiAvWzAtMV1bMC05XTpbMC02XVswLTldIFtBLFBdTS8udGVzdCh0aGlzLmRhdGVUaW1lQ29udHJvbC52YWx1ZSEuc3Vic3RyaW5nKDExKSlcclxuICAgICAgICAgICAgICA/IE51bWJlcih0aGlzLl9kYXRlUGlwZS50cmFuc2Zvcm0oYDAxLzAxLzIwMjAgJHsgdGhpcy5kYXRlVGltZUNvbnRyb2wudmFsdWUhLnN1YnN0cmluZygxMSkgfWAsIFwibW1cIikpXHJcbiAgICAgICAgICAgICAgOiBOdW1iZXIodGhpcy5kYXRlVGltZUNvbnRyb2wudmFsdWUhLnN1YnN0cmluZygxNCwgMTYpKSxcclxuICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgdGhpcy5jb250YWRvcisrO1xyXG4gICAgICAgICAgaWYgKGUua2V5ID4gNSkge1xyXG4gICAgICAgICAgICB0aGlzLm9uRW1pdCgpO1xyXG4gICAgICAgICAgICBpZiAodGhpcy5mb3JtYXQgPT0gMTIpIGlucHV0LnNldFNlbGVjdGlvblJhbmdlKDE3LCAxOSk7XHJcbiAgICAgICAgICAgIGVsc2UgaW5wdXQuc2V0U2VsZWN0aW9uUmFuZ2UoMTQsIDE2KTtcclxuICAgICAgICAgICAgdGhpcy5jb250YWRvciA9IDA7XHJcbiAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICAgIH0gZWxzZSB0aGlzLm9uRW1pdCgpO1xyXG4gICAgICAgIH0gZWxzZSBpZiAoTnVtYmVyKG1pbnV0b3NBY3R1YWxlcykgPD0gNSAmJiBOdW1iZXIobWludXRvc0FjdHVhbGVzKSA+IDAgJiYgdGhpcy5jb250YWRvciA+IDApIHtcclxuICAgICAgICAgIGNvbnN0IG51ZXZvVmFsb3IgPSBgJHsgdmFsb3JBY3R1YWwuc3Vic3RyaW5nKDAsIDE0KSB9JHsgTnVtYmVyKE51bWJlcihtaW51dG9zQWN0dWFsZXMpLnRvU3RyaW5nKCkgKyBOdW1iZXIoZS5rZXkpKSA+IDU5ID8gNTkgOiBOdW1iZXIobWludXRvc0FjdHVhbGVzKS50b1N0cmluZygpICsgTnVtYmVyKGUua2V5KVxyXG4gICAgICAgICAgICB9JHsgdmFsb3JBY3R1YWwuc3Vic3RyaW5nKDE2KSB9YDtcclxuICAgICAgICAgIHRoaXMuZGF0ZVRpbWVDb250cm9sLnNldFZhbHVlKG51ZXZvVmFsb3IpO1xyXG4gICAgICAgICAgbGV0IG1pbnV0ZTtcclxuICAgICAgICAgIGNvbnN0IHJlZ2V4ID0gdGhpcy5mb3JtYXQgPT0gMTIgPyAvWzAtMV1bMC05XTpbMC02XVswLTldIFtBLFBdTS8gOiAvWzAtMV1bMC05XTpbMC02XVswLTldLztcclxuICAgICAgICAgIHRyeSB7XHJcbiAgICAgICAgICAgIG1pbnV0ZSA9IHJlZ2V4LnRlc3QodGhpcy5kYXRlVGltZUNvbnRyb2wudmFsdWUhLnN1YnN0cmluZygxMSkpXHJcbiAgICAgICAgICAgICAgPyBOdW1iZXIodGhpcy5fZGF0ZVBpcGUudHJhbnNmb3JtKGAwMS8wMS8yMDIwICR7IHRoaXMuZGF0ZVRpbWVDb250cm9sLnZhbHVlIS5zdWJzdHJpbmcoMTEpIH1gLCBcIm1tXCIpKVxyXG4gICAgICAgICAgICAgIDogTnVtYmVyKHRoaXMuZGF0ZVRpbWVDb250cm9sLnZhbHVlIS5zdWJzdHJpbmcoMTQsIDE2KSk7XHJcbiAgICAgICAgICB9IGNhdGNoIChlcnJvcikge1xyXG4gICAgICAgICAgICBtaW51dGUgPSBOdW1iZXIodGhpcy5kYXRlVGltZUNvbnRyb2wudmFsdWUhLnN1YnN0cmluZygxNCwgMTYpKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIHRoaXMuaG91cnNDb250cm9sLnNldFZhbHVlKHtcclxuICAgICAgICAgICAgLi4udGhpcy5ob3Vyc0NvbnRyb2wudmFsdWUsXHJcbiAgICAgICAgICAgIG1pbnV0ZSxcclxuICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgdGhpcy5jb250YWRvcisrO1xyXG4gICAgICAgICAgdGhpcy5vbkVtaXQoKTtcclxuICAgICAgICAgIGlmICh0aGlzLmZvcm1hdCA9PSAxMikgaW5wdXQuc2V0U2VsZWN0aW9uUmFuZ2UoMTcsIDE5KTtcclxuICAgICAgICAgIGVsc2UgaW5wdXQuc2V0U2VsZWN0aW9uUmFuZ2UoMTQsIDE2KTtcclxuICAgICAgICAgIHRoaXMuY29udGFkb3IgPSAwO1xyXG4gICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICBjb25zdCBudWV2b1ZhbG9yID0gYCR7IHZhbG9yQWN0dWFsLnN1YnN0cmluZygwLCAxNCkgfSR7IGUua2V5LnBhZFN0YXJ0KDIsIDApIH0keyB2YWxvckFjdHVhbC5zdWJzdHJpbmcoMTYpIH1gO1xyXG4gICAgICAgICAgdGhpcy5kYXRlVGltZUNvbnRyb2wuc2V0VmFsdWUobnVldm9WYWxvcik7XHJcbiAgICAgICAgICB0aGlzLmhvdXJzQ29udHJvbC5zZXRWYWx1ZSh7XHJcbiAgICAgICAgICAgIC4uLnRoaXMuaG91cnNDb250cm9sLnZhbHVlLFxyXG4gICAgICAgICAgICBtaW51dGU6IC9bMC0xXVswLTldOlswLTZdWzAtOV0gW0EsUF1NLy50ZXN0KHRoaXMuZGF0ZVRpbWVDb250cm9sLnZhbHVlIS5zdWJzdHJpbmcoMTEpKVxyXG4gICAgICAgICAgICAgID8gTnVtYmVyKHRoaXMuX2RhdGVQaXBlLnRyYW5zZm9ybShgMDEvMDEvMjAyMCAkeyB0aGlzLmRhdGVUaW1lQ29udHJvbC52YWx1ZSEuc3Vic3RyaW5nKDExKSB9YCwgXCJtbVwiKSlcclxuICAgICAgICAgICAgICA6IE51bWJlcih0aGlzLmRhdGVUaW1lQ29udHJvbC52YWx1ZSEuc3Vic3RyaW5nKDE0LCAxNikpLFxyXG4gICAgICAgICAgfSk7XHJcbiAgICAgICAgICB0aGlzLmNvbnRhZG9yKys7XHJcbiAgICAgICAgICBpZiAoTnVtYmVyKGUua2V5LnBhZFN0YXJ0KDIsIDApKSA+IDUgfHwgdGhpcy5jb250YWRvciA+IDEpIHtcclxuICAgICAgICAgICAgdGhpcy5vbkVtaXQoKTtcclxuICAgICAgICAgICAgaWYgKHRoaXMuZm9ybWF0ID09IDEyKSBpbnB1dC5zZXRTZWxlY3Rpb25SYW5nZSgxNywgMTkpO1xyXG4gICAgICAgICAgICBlbHNlIGlucHV0LnNldFNlbGVjdGlvblJhbmdlKDE0LCAxNik7XHJcbiAgICAgICAgICAgIHRoaXMuY29udGFkb3IgPSAwO1xyXG4gICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgICB9IGVsc2UgdGhpcy5vbkVtaXQoKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgdGhpcy5vbkVtaXQoKTtcclxuICAgICAgICBpbnB1dC5zZXRTZWxlY3Rpb25SYW5nZSgxNCwgMTYpO1xyXG4gICAgICB9XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICAvLz09PT09PT09PT09PT09PT09PT09PT09PSBFVkVOVE9TIFRFQ0xBRE8gPT09PT09PT09PT09PT09PT09PT09PT09PT09XHJcbiAgICAgIGlmIChlLmtleSA9PSBcIkFycm93UmlnaHRcIikge1xyXG4gICAgICAgIGlmIChpbnB1dC5zZWxlY3Rpb25TdGFydCA9PSAwICYmIGlucHV0LnNlbGVjdGlvbkVuZCA9PSAyKSB7XHJcbiAgICAgICAgICBpbnB1dC5zZXRTZWxlY3Rpb25SYW5nZSgzLCA1KTtcclxuICAgICAgICAgIHRoaXMuY29udGFkb3IgPSAwO1xyXG4gICAgICAgIH0gZWxzZSBpZiAoaW5wdXQuc2VsZWN0aW9uU3RhcnQgPT0gMyAmJiBpbnB1dC5zZWxlY3Rpb25FbmQgPT0gNSkge1xyXG4gICAgICAgICAgaW5wdXQuc2V0U2VsZWN0aW9uUmFuZ2UoNiwgMTApO1xyXG4gICAgICAgICAgdGhpcy5jb250YWRvciA9IDA7XHJcbiAgICAgICAgfSBlbHNlIGlmIChpbnB1dC5zZWxlY3Rpb25TdGFydCA9PSA2ICYmIGlucHV0LnNlbGVjdGlvbkVuZCA9PSAxMCkge1xyXG4gICAgICAgICAgaW5wdXQuc2V0U2VsZWN0aW9uUmFuZ2UoMTEsIDEzKTtcclxuICAgICAgICAgIHRoaXMuY29udGFkb3IgPSAwO1xyXG4gICAgICAgIH0gZWxzZSBpZiAoaW5wdXQuc2VsZWN0aW9uU3RhcnQgPT0gMTEgJiYgaW5wdXQuc2VsZWN0aW9uRW5kID09IDEzKSB7XHJcbiAgICAgICAgICBpbnB1dC5zZXRTZWxlY3Rpb25SYW5nZSgxNCwgMTYpO1xyXG4gICAgICAgICAgdGhpcy5jb250YWRvciA9IDA7XHJcbiAgICAgICAgfSBlbHNlIGlmIChpbnB1dC5zZWxlY3Rpb25TdGFydCA9PSAxNCAmJiBpbnB1dC5zZWxlY3Rpb25FbmQgPT0gMTYpIHtcclxuICAgICAgICAgIGlmICh0aGlzLmZvcm1hdCA9PSAxMikgaW5wdXQuc2V0U2VsZWN0aW9uUmFuZ2UoMTcsIDE5KTtcclxuICAgICAgICAgIGVsc2UgaWYgKHRoaXMuZm9ybWF0ID09IDI0KSB0aGlzLmJ0bk9wZW4/Lm5hdGl2ZUVsZW1lbnQuZm9jdXMoKTtcclxuICAgICAgICAgIHRoaXMuY29udGFkb3IgPSAwO1xyXG4gICAgICAgIH0gZWxzZSBpZiAoaW5wdXQuc2VsZWN0aW9uU3RhcnQgPT0gMTcgJiYgaW5wdXQuc2VsZWN0aW9uRW5kID09IDE5KSB7XHJcbiAgICAgICAgICB0aGlzLmJ0bk9wZW4/Lm5hdGl2ZUVsZW1lbnQuZm9jdXMoKTtcclxuICAgICAgICAgIHRoaXMuY29udGFkb3IgPSAwO1xyXG4gICAgICAgIH1cclxuICAgICAgfSBlbHNlIGlmIChlLmtleSA9PSBcIkFycm93TGVmdFwiKSB7XHJcbiAgICAgICAgaWYgKGlucHV0LnNlbGVjdGlvblN0YXJ0ID09IDAgJiYgaW5wdXQuc2VsZWN0aW9uRW5kID09IDIpIHtcclxuICAgICAgICAgIHRoaXMuZ29CYWNrKCk7XHJcbiAgICAgICAgICB0aGlzLmNvbnRhZG9yID0gMDtcclxuICAgICAgICB9IGVsc2UgaWYgKGlucHV0LnNlbGVjdGlvblN0YXJ0ID09IDMgJiYgaW5wdXQuc2VsZWN0aW9uRW5kID09IDUpIHtcclxuICAgICAgICAgIGlucHV0LnNldFNlbGVjdGlvblJhbmdlKDAsIDIpO1xyXG4gICAgICAgICAgdGhpcy5jb250YWRvciA9IDA7XHJcbiAgICAgICAgfSBlbHNlIGlmIChpbnB1dC5zZWxlY3Rpb25TdGFydCA9PSA2ICYmIGlucHV0LnNlbGVjdGlvbkVuZCA9PSAxMCkge1xyXG4gICAgICAgICAgaW5wdXQuc2V0U2VsZWN0aW9uUmFuZ2UoMywgNSk7XHJcbiAgICAgICAgICB0aGlzLmNvbnRhZG9yID0gMDtcclxuICAgICAgICB9IGVsc2UgaWYgKGlucHV0LnNlbGVjdGlvblN0YXJ0ID09IDExICYmIGlucHV0LnNlbGVjdGlvbkVuZCA9PSAxMykge1xyXG4gICAgICAgICAgaW5wdXQuc2V0U2VsZWN0aW9uUmFuZ2UoNiwgMTApO1xyXG4gICAgICAgICAgdGhpcy5jb250YWRvciA9IDA7XHJcbiAgICAgICAgfSBlbHNlIGlmIChpbnB1dC5zZWxlY3Rpb25TdGFydCA9PSAxNCAmJiBpbnB1dC5zZWxlY3Rpb25FbmQgPT0gMTYpIHtcclxuICAgICAgICAgIGlucHV0LnNldFNlbGVjdGlvblJhbmdlKDExLCAxMyk7XHJcbiAgICAgICAgICB0aGlzLmNvbnRhZG9yID0gMDtcclxuICAgICAgICB9IGVsc2UgaWYgKGlucHV0LnNlbGVjdGlvblN0YXJ0ID09IDE3ICYmIGlucHV0LnNlbGVjdGlvbkVuZCA9PSAxOSkge1xyXG4gICAgICAgICAgaW5wdXQuc2V0U2VsZWN0aW9uUmFuZ2UoMTQsIDE2KTtcclxuICAgICAgICAgIHRoaXMuY29udGFkb3IgPSAwO1xyXG4gICAgICAgIH1cclxuICAgICAgfSBlbHNlIGlmIChlLmtleS50b0xvd2VyQ2FzZSgpID09IFwiYVwiKSB7XHJcbiAgICAgICAgaWYgKGlucHV0LnNlbGVjdGlvblN0YXJ0ID09IDE3ICYmIGlucHV0LnNlbGVjdGlvbkVuZCA9PSAxOSkge1xyXG4gICAgICAgICAgY29uc3QgdmFsb3JBY3R1YWwgPSB0aGlzLmRhdGVUaW1lQ29udHJvbC52YWx1ZTtcclxuICAgICAgICAgIGNvbnN0IG51ZXZvVmFsb3IgPSBgJHsgdmFsb3JBY3R1YWwhLnN1YnN0cmluZygwLCAxNykgfUFNYDtcclxuICAgICAgICAgIHRoaXMuZGF0ZVRpbWVDb250cm9sLnNldFZhbHVlKG51ZXZvVmFsb3IpO1xyXG4gICAgICAgICAgdGhpcy5ob3Vyc0NvbnRyb2wuc2V0VmFsdWUoe1xyXG4gICAgICAgICAgICAuLi50aGlzLmhvdXJzQ29udHJvbC52YWx1ZSxcclxuICAgICAgICAgICAgaG91cjogTnVtYmVyKHRoaXMuX2RhdGVQaXBlLnRyYW5zZm9ybShgMDEvMDEvMjAyMCAkeyB0aGlzLmRhdGVUaW1lQ29udHJvbC52YWx1ZSEuc3Vic3RyaW5nKDExKSB9YCwgXCJISFwiKSksXHJcbiAgICAgICAgICB9KTtcclxuICAgICAgICAgIHRoaXMub25FbWl0KCk7XHJcbiAgICAgICAgICBpbnB1dC5zZXRTZWxlY3Rpb25SYW5nZSgxNywgMTkpO1xyXG4gICAgICAgIH1cclxuICAgICAgfSBlbHNlIGlmIChlLmtleS50b0xvd2VyQ2FzZSgpID09IFwicFwiKSB7XHJcbiAgICAgICAgaWYgKGlucHV0LnNlbGVjdGlvblN0YXJ0ID09IDE3ICYmIGlucHV0LnNlbGVjdGlvbkVuZCA9PSAxOSkge1xyXG4gICAgICAgICAgY29uc3QgdmFsb3JBY3R1YWwgPSB0aGlzLmRhdGVUaW1lQ29udHJvbC52YWx1ZTtcclxuICAgICAgICAgIGNvbnN0IG51ZXZvVmFsb3IgPSBgJHsgdmFsb3JBY3R1YWwhLnN1YnN0cmluZygwLCAxNykgfVBNYDtcclxuICAgICAgICAgIHRoaXMuZGF0ZVRpbWVDb250cm9sLnNldFZhbHVlKG51ZXZvVmFsb3IpO1xyXG4gICAgICAgICAgdGhpcy5ob3Vyc0NvbnRyb2wuc2V0VmFsdWUoe1xyXG4gICAgICAgICAgICAuLi50aGlzLmhvdXJzQ29udHJvbC52YWx1ZSxcclxuICAgICAgICAgICAgaG91cjogTnVtYmVyKHRoaXMuX2RhdGVQaXBlLnRyYW5zZm9ybShgMDEvMDEvMjAyMCAkeyB0aGlzLmRhdGVUaW1lQ29udHJvbC52YWx1ZSEuc3Vic3RyaW5nKDExKSB9YCwgXCJISFwiKSksXHJcbiAgICAgICAgICB9KTtcclxuICAgICAgICAgIHRoaXMub25FbWl0KCk7XHJcbiAgICAgICAgICBpbnB1dC5zZXRTZWxlY3Rpb25SYW5nZSgxNywgMTkpO1xyXG4gICAgICAgIH1cclxuICAgICAgfSBlbHNlIGlmIChlLmNvZGUgPT0gXCJTcGFjZVwiICYmIHRoaXMuYXV0b0NvbXBsZXRlKSB7XHJcbiAgICAgICAgY29uc3QgdmFsb3JBY3R1YWw6IHN0cmluZyA9IHRoaXMuZGF0ZVRpbWVDb250cm9sLnZhbHVlITtcclxuICAgICAgICBjb25zdCBkaWFBY3R1YWw6IHN0cmluZyA9IHRoaXMudG9kYXkuZGF5LnRvU3RyaW5nKCk7XHJcbiAgICAgICAgY29uc3QgbWVzQWN0dWFsOiBzdHJpbmcgPSB0aGlzLnRvZGF5Lm1vbnRoLnRvU3RyaW5nKCk7XHJcbiAgICAgICAgY29uc3QgYW5pb0FjdHVhbDogc3RyaW5nID0gdGhpcy50b2RheS55ZWFyLnRvU3RyaW5nKCk7XHJcbiAgICAgICAgY29uc3QgaG9yYUFjdHVhbDogc3RyaW5nID0gRGF0ZVV0aWwudG9TdHJGb3JtYXQoRGF0ZVV0aWwubm93KCksIHRoaXMuZm9ybWF0ID09IDI0ID8gXCJNQVNLXzI0X0hPVVJTXCIgOiBcIk1BU0tfMTJfSE9VUlNcIik7XHJcbiAgICAgICAgY29uc3QgdDogc3RyaW5nID0gRGF0ZVV0aWwudG9TdHJGb3JtYXQoRGF0ZVV0aWwubm93KCksIFwiTUlEREFZX0lORElDQVRPUlwiKTtcclxuICAgICAgICBjb25zdCBtaW51dG9zQWN0dWFsZXM6IHN0cmluZyA9IERhdGVVdGlsLmdldE1pbnV0ZXMoRGF0ZVV0aWwubm93KCkpLnRvU3RyaW5nKCkucGFkU3RhcnQoMiwgXCIwXCIpO1xyXG4gICAgICAgIGlmIChpbnB1dC5zZWxlY3Rpb25TdGFydCA9PSAwICYmIGlucHV0LnNlbGVjdGlvbkVuZCA9PSAyKSB7XHJcbiAgICAgICAgICBjb25zdCBudWV2b1ZhbG9yID0gYCR7IGRpYUFjdHVhbC5wYWRTdGFydCgyLCBcIjBcIikgfSR7IHZhbG9yQWN0dWFsLnN1YnN0cmluZygyKSB9YDtcclxuICAgICAgICAgIHRoaXMuZGF0ZVRpbWVDb250cm9sLnNldFZhbHVlKG51ZXZvVmFsb3IpO1xyXG4gICAgICAgICAgdGhpcy5kYXRlQ29udHJvbC5zZXRWYWx1ZShcclxuICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgIC4uLnRoaXMuZGF0ZUNvbnRyb2wudmFsdWUsXHJcbiAgICAgICAgICAgICAgZGF5OiB0aGlzLnRvZGF5LmRheSxcclxuICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgeyBlbWl0RXZlbnQ6IGZhbHNlIH1cclxuICAgICAgICAgICk7XHJcbiAgICAgICAgICBpbnB1dC5zZXRTZWxlY3Rpb25SYW5nZSgzLCA1KTtcclxuICAgICAgICB9IGVsc2UgaWYgKGlucHV0LnNlbGVjdGlvblN0YXJ0ID09IDMgJiYgaW5wdXQuc2VsZWN0aW9uRW5kID09IDUpIHtcclxuICAgICAgICAgIGNvbnN0IG51ZXZvVmFsb3IgPSBgJHsgdmFsb3JBY3R1YWwuc3Vic3RyaW5nKDAsIDMpIH0keyBtZXNBY3R1YWwucGFkU3RhcnQoMiwgXCIwXCIpIH0keyB2YWxvckFjdHVhbC5zdWJzdHJpbmcoNSkgfWA7XHJcbiAgICAgICAgICB0aGlzLmRhdGVUaW1lQ29udHJvbC5zZXRWYWx1ZShudWV2b1ZhbG9yKTtcclxuICAgICAgICAgIHRoaXMuZGF0ZUNvbnRyb2wuc2V0VmFsdWUoXHJcbiAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICAuLi50aGlzLmRhdGVDb250cm9sLnZhbHVlLFxyXG4gICAgICAgICAgICAgIG1vbnRoOiB0aGlzLnRvZGF5Lm1vbnRoLFxyXG4gICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICB7IGVtaXRFdmVudDogZmFsc2UgfVxyXG4gICAgICAgICAgKTtcclxuICAgICAgICAgIGlucHV0LnNldFNlbGVjdGlvblJhbmdlKDYsIDEwKTtcclxuICAgICAgICB9IGVsc2UgaWYgKGlucHV0LnNlbGVjdGlvblN0YXJ0ID09IDYgJiYgaW5wdXQuc2VsZWN0aW9uRW5kID09IDEwKSB7XHJcbiAgICAgICAgICBjb25zdCBudWV2b1ZhbG9yID0gYCR7IHZhbG9yQWN0dWFsLnN1YnN0cmluZygwLCA2KSB9JHsgYW5pb0FjdHVhbC5wYWRTdGFydCg0LCBcIjBcIikgfSR7IHZhbG9yQWN0dWFsLnN1YnN0cmluZygxMCkgfWA7XHJcbiAgICAgICAgICB0aGlzLmRhdGVUaW1lQ29udHJvbC5zZXRWYWx1ZShudWV2b1ZhbG9yKTtcclxuICAgICAgICAgIHRoaXMuZGF0ZUNvbnRyb2wuc2V0VmFsdWUoXHJcbiAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICAuLi50aGlzLmRhdGVDb250cm9sLnZhbHVlLFxyXG4gICAgICAgICAgICAgIHllYXI6IHRoaXMudG9kYXkueWVhcixcclxuICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgeyBlbWl0RXZlbnQ6IGZhbHNlIH1cclxuICAgICAgICAgICk7XHJcbiAgICAgICAgICBpbnB1dC5zZXRTZWxlY3Rpb25SYW5nZSgxMSwgMTMpO1xyXG4gICAgICAgIH0gZWxzZSBpZiAoaW5wdXQuc2VsZWN0aW9uU3RhcnQgPT0gMTEgJiYgaW5wdXQuc2VsZWN0aW9uRW5kID09IDEzKSB7XHJcbiAgICAgICAgICBsZXQgbnVldm9WYWxvcjtcclxuICAgICAgICAgIGlmICh0aGlzLmZvcm1hdCA9PSAyNCkgbnVldm9WYWxvciA9IGAkeyB2YWxvckFjdHVhbC5zdWJzdHJpbmcoMCwgMTEpIH0keyBob3JhQWN0dWFsIH0keyB2YWxvckFjdHVhbC5zdWJzdHJpbmcoMTMpIH1gO1xyXG4gICAgICAgICAgZWxzZSBpZiAodGhpcy5mb3JtYXQgPT0gMTIpXHJcbiAgICAgICAgICAgIG51ZXZvVmFsb3IgPSBgJHsgdmFsb3JBY3R1YWwuc3Vic3RyaW5nKDAsIDExKSB9JHsgaG9yYUFjdHVhbCB9JHsgdmFsb3JBY3R1YWwuc3Vic3RyaW5nKDEzLCAxNykgfSR7IHQudG9VcHBlckNhc2UoKSB9YDtcclxuXHJcbiAgICAgICAgICB0aGlzLmRhdGVUaW1lQ29udHJvbC5zZXRWYWx1ZShudWV2b1ZhbG9yISk7XHJcbiAgICAgICAgICB0aGlzLmhvdXJzQ29udHJvbC5zZXRWYWx1ZSh7XHJcbiAgICAgICAgICAgIC4uLnRoaXMuaG91cnNDb250cm9sLnZhbHVlLFxyXG4gICAgICAgICAgICBtaW51dGU6IHRoaXMuaG91cnNDb250cm9sLnZhbHVlLm1pbnV0ZSAhPSBudWxsID8gdGhpcy5ob3Vyc0NvbnRyb2wudmFsdWUubWludXRlIDogMCxcclxuICAgICAgICAgICAgaG91cjogdGhpcy5mb3JtYXQgPT0gMTIgPyBOdW1iZXIoaG9yYUFjdHVhbCkgOiBOdW1iZXIoaG9yYUFjdHVhbCkgKyAxMixcclxuICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgaW5wdXQuc2V0U2VsZWN0aW9uUmFuZ2UoMTQsIDE2KTtcclxuICAgICAgICB9IGVsc2UgaWYgKGlucHV0LnNlbGVjdGlvblN0YXJ0ID09IDE0ICYmIGlucHV0LnNlbGVjdGlvbkVuZCA9PSAxNikge1xyXG4gICAgICAgICAgY29uc3QgbnVldm9WYWxvciA9IGAkeyB2YWxvckFjdHVhbC5zdWJzdHJpbmcoMCwgMTQpIH0keyBtaW51dG9zQWN0dWFsZXMucGFkU3RhcnQoMiwgXCIwXCIpIH0keyB2YWxvckFjdHVhbC5zdWJzdHJpbmcoMTYpIH1gO1xyXG4gICAgICAgICAgdGhpcy5kYXRlVGltZUNvbnRyb2wuc2V0VmFsdWUobnVldm9WYWxvcik7XHJcbiAgICAgICAgICB0aGlzLmhvdXJzQ29udHJvbC5zZXRWYWx1ZSh7XHJcbiAgICAgICAgICAgIC4uLnRoaXMuaG91cnNDb250cm9sLnZhbHVlLFxyXG4gICAgICAgICAgICBtaW51dGU6IE51bWJlcihtaW51dG9zQWN0dWFsZXMpLFxyXG4gICAgICAgICAgfSk7XHJcbiAgICAgICAgICBpZiAodGhpcy5mb3JtYXQgPT0gMTIpIGlucHV0LnNldFNlbGVjdGlvblJhbmdlKDE3LCAxOSk7XHJcbiAgICAgICAgICBlbHNlIGlucHV0LnNldFNlbGVjdGlvblJhbmdlKDE0LCAxNik7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHRoaXMub25FbWl0KCk7XHJcbiAgICAgIH0gZWxzZSBpZiAoZS5rZXkgPT0gXCJFbnRlclwiIHx8IGUua2V5ID09IFwiQXJyb3dEb3duXCIpIHtcclxuICAgICAgICB0aGlzLmdvTmV4dCgpO1xyXG4gICAgICB9IGVsc2UgaWYgKGUua2V5ID09IFwiQXJyb3dVcFwiKSB7XHJcbiAgICAgICAgdGhpcy5nb0JhY2soKTtcclxuICAgICAgfSBlbHNlIGlmIChlLmtleSA9PSBcIkRlbGV0ZVwiKSB7XHJcbiAgICAgICAgdGhpcy5saW1waWFyVG9kbygpO1xyXG4gICAgICB9IGVsc2UgaWYgKGUua2V5ID09IFwiQmFja3NwYWNlXCIpIHtcclxuICAgICAgICB0aGlzLmxpbXBpYXIoKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgZ29OZXh0ICgpOiB2b2lkIHtcclxuICAgIGlmICh0aGlzLm5leHQgIT0gdW5kZWZpbmVkKSB7XHJcbiAgICAgIGlmICh0aGlzLm5leHQuZGlzYWJsZWQgfHwgdGhpcy5uZXh0LnJlYWRvbmx5KSB7XHJcbiAgICAgICAgaWYgKHRoaXMubmV4dElzRGlzYWJsZSAhPSB1bmRlZmluZWQpIHtcclxuICAgICAgICAgIHRoaXMubmV4dElzRGlzYWJsZS5mb2N1cygpO1xyXG4gICAgICAgIH1cclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICB0aGlzLm5leHQuZm9jdXMoKTtcclxuICAgICAgfVxyXG4gICAgfSBlbHNlIHtcclxuICAgICAgaWYgKHRoaXMubmV4dElzRGlzYWJsZSAhPSB1bmRlZmluZWQpIHtcclxuICAgICAgICB0aGlzLm5leHRJc0Rpc2FibGUuZm9jdXMoKTtcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICB0aGlzLm9uTmV4dC5lbWl0KCk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcblxyXG4gIGdvQmFjayAoKTogdm9pZCB7XHJcbiAgICBpZiAodGhpcy5iYWNrICE9IHVuZGVmaW5lZCkge1xyXG4gICAgICBpZiAodGhpcy5iYWNrLmRpc2FibGVkIHx8IHRoaXMuYmFjay5yZWFkb25seSkge1xyXG4gICAgICAgIGlmICh0aGlzLmJhY2tJc0Rpc2FibGUgIT0gdW5kZWZpbmVkKSB7XHJcbiAgICAgICAgICB0aGlzLmJhY2tJc0Rpc2FibGUuZm9jdXMoKTtcclxuICAgICAgICB9XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgdGhpcy5iYWNrLmZvY3VzKCk7XHJcbiAgICAgIH1cclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIGlmICh0aGlzLmJhY2tJc0Rpc2FibGUgIT0gdW5kZWZpbmVkKSB7XHJcbiAgICAgICAgdGhpcy5iYWNrSXNEaXNhYmxlLmZvY3VzKCk7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgdGhpcy5vbkJhY2suZW1pdCgpO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBsaW1waWFyVG9kbyAoKSB7XHJcbiAgICB0aGlzLmNvbnRhZG9yID0gMDtcclxuICAgIHRoaXMuaG91cnNDb250cm9sLnNldFZhbHVlKFxyXG4gICAgICB7XHJcbiAgICAgICAgaG91cjogbnVsbCxcclxuICAgICAgICBtaW51dGU6IG51bGwsXHJcbiAgICAgIH0sXHJcbiAgICAgIHsgZW1pdEV2ZW50OiBmYWxzZSB9XHJcbiAgICApO1xyXG4gICAgdGhpcy5kYXRlQ29udHJvbC5zZXRWYWx1ZShcclxuICAgICAge1xyXG4gICAgICAgIHllYXI6IG51bGwsXHJcbiAgICAgICAgbW9udGg6IG51bGwsXHJcbiAgICAgICAgZGF5OiBudWxsLFxyXG4gICAgICB9LFxyXG4gICAgICB7IGVtaXRFdmVudDogZmFsc2UgfVxyXG4gICAgKTtcclxuICAgIGlmICh0aGlzLmZvcm1hdCA9PSAxMikgdGhpcy5kYXRlVGltZUNvbnRyb2wuc2V0VmFsdWUoXCJkZC9tbS95eXl5IC0tOi0tIC0tXCIpO1xyXG4gICAgZWxzZSBpZiAodGhpcy5mb3JtYXQgPT0gMjQpIHRoaXMuZGF0ZVRpbWVDb250cm9sLnNldFZhbHVlKFwiZGQvbW0veXl5eSAtLTotLVwiKTtcclxuICAgIHRoaXMuaW5wdXREYXRlVGltZS5uYXRpdmVFbGVtZW50LnNldFNlbGVjdGlvblJhbmdlKDAsIDIpO1xyXG4gICAgdGhpcy5vbkNoYW5nZShudWxsKTtcclxuICAgIHRoaXMub25Ub3VjaCgpO1xyXG4gIH1cclxuXHJcbiAgbGltcGlhciAoKSB7XHJcbiAgICBpZiAodGhpcy5pbnB1dERhdGVUaW1lLm5hdGl2ZUVsZW1lbnQuc2VsZWN0aW9uU3RhcnQgPT0gMCAmJiB0aGlzLmlucHV0RGF0ZVRpbWUubmF0aXZlRWxlbWVudC5zZWxlY3Rpb25FbmQgPT0gMikge1xyXG4gICAgICB0aGlzLmRhdGVDb250cm9sLnNldFZhbHVlKFxyXG4gICAgICAgIHtcclxuICAgICAgICAgIC4uLnRoaXMuZGF0ZUNvbnRyb2wudmFsdWUsXHJcbiAgICAgICAgICBkYXk6IG51bGwsXHJcbiAgICAgICAgfSxcclxuICAgICAgICB7IGVtaXRFdmVudDogZmFsc2UgfVxyXG4gICAgICApO1xyXG4gICAgICB0aGlzLmRhdGVUaW1lQ29udHJvbC5zZXRWYWx1ZShgZGQkeyB0aGlzLmRhdGVUaW1lQ29udHJvbC52YWx1ZSEuc3Vic3RyaW5nKDIpIH1gKTtcclxuICAgICAgdGhpcy5vbkNoYW5nZShudWxsKTtcclxuICAgICAgdGhpcy5vblRvdWNoKCk7XHJcbiAgICAgIHRoaXMuaW5wdXREYXRlVGltZS5uYXRpdmVFbGVtZW50LnNldFNlbGVjdGlvblJhbmdlKDAsIDIpO1xyXG4gICAgICB0aGlzLmNvbnRhZG9yID0gMDtcclxuICAgIH0gZWxzZSBpZiAodGhpcy5pbnB1dERhdGVUaW1lLm5hdGl2ZUVsZW1lbnQuc2VsZWN0aW9uU3RhcnQgPT0gMyAmJiB0aGlzLmlucHV0RGF0ZVRpbWUubmF0aXZlRWxlbWVudC5zZWxlY3Rpb25FbmQgPT0gNSkge1xyXG4gICAgICB0aGlzLmRhdGVDb250cm9sLnNldFZhbHVlKFxyXG4gICAgICAgIHtcclxuICAgICAgICAgIC4uLnRoaXMuZGF0ZUNvbnRyb2wudmFsdWUsXHJcbiAgICAgICAgICBtb250aDogbnVsbCxcclxuICAgICAgICB9LFxyXG4gICAgICAgIHsgZW1pdEV2ZW50OiBmYWxzZSB9XHJcbiAgICAgICk7XHJcbiAgICAgIHRoaXMuZGF0ZVRpbWVDb250cm9sLnNldFZhbHVlKGAkeyB0aGlzLmRhdGVUaW1lQ29udHJvbC52YWx1ZSEuc3Vic3RyaW5nKDAsIDMpIH1tbSR7IHRoaXMuZGF0ZVRpbWVDb250cm9sLnZhbHVlIS5zdWJzdHJpbmcoNSkgfWApO1xyXG4gICAgICB0aGlzLm9uQ2hhbmdlKG51bGwpO1xyXG4gICAgICB0aGlzLm9uVG91Y2goKTtcclxuICAgICAgdGhpcy5pbnB1dERhdGVUaW1lLm5hdGl2ZUVsZW1lbnQuc2V0U2VsZWN0aW9uUmFuZ2UoMywgNSk7XHJcbiAgICAgIHRoaXMuY29udGFkb3IgPSAwO1xyXG4gICAgfSBlbHNlIGlmICh0aGlzLmlucHV0RGF0ZVRpbWUubmF0aXZlRWxlbWVudC5zZWxlY3Rpb25TdGFydCA9PSA2ICYmIHRoaXMuaW5wdXREYXRlVGltZS5uYXRpdmVFbGVtZW50LnNlbGVjdGlvbkVuZCA9PSAxMCkge1xyXG4gICAgICB0aGlzLmRhdGVDb250cm9sLnNldFZhbHVlKFxyXG4gICAgICAgIHtcclxuICAgICAgICAgIC4uLnRoaXMuZGF0ZUNvbnRyb2wudmFsdWUsXHJcbiAgICAgICAgICB5ZWFyOiBudWxsLFxyXG4gICAgICAgIH0sXHJcbiAgICAgICAgeyBlbWl0RXZlbnQ6IGZhbHNlIH1cclxuICAgICAgKTtcclxuICAgICAgdGhpcy5kYXRlVGltZUNvbnRyb2wuc2V0VmFsdWUoYCR7IHRoaXMuZGF0ZVRpbWVDb250cm9sLnZhbHVlIS5zdWJzdHJpbmcoMCwgNikgfXl5eXkkeyB0aGlzLmRhdGVUaW1lQ29udHJvbC52YWx1ZSEuc3Vic3RyaW5nKDEwKSB9YCk7XHJcbiAgICAgIHRoaXMub25DaGFuZ2UobnVsbCk7XHJcbiAgICAgIHRoaXMub25Ub3VjaCgpO1xyXG4gICAgICB0aGlzLmlucHV0RGF0ZVRpbWUubmF0aXZlRWxlbWVudC5zZXRTZWxlY3Rpb25SYW5nZSg2LCAxMCk7XHJcbiAgICAgIHRoaXMuY29udGFkb3IgPSAwO1xyXG4gICAgfSBlbHNlIGlmICh0aGlzLmlucHV0RGF0ZVRpbWUubmF0aXZlRWxlbWVudC5zZWxlY3Rpb25TdGFydCA9PSAxMSAmJiB0aGlzLmlucHV0RGF0ZVRpbWUubmF0aXZlRWxlbWVudC5zZWxlY3Rpb25FbmQgPT0gMTMpIHtcclxuICAgICAgdGhpcy5ob3Vyc0NvbnRyb2wuc2V0VmFsdWUoXHJcbiAgICAgICAge1xyXG4gICAgICAgICAgLi4udGhpcy5kYXRlQ29udHJvbC52YWx1ZSxcclxuICAgICAgICAgIGhvdXI6IG51bGwsXHJcbiAgICAgICAgfSxcclxuICAgICAgICB7IGVtaXRFdmVudDogZmFsc2UgfVxyXG4gICAgICApO1xyXG4gICAgICB0aGlzLmRhdGVUaW1lQ29udHJvbC5zZXRWYWx1ZShgJHsgdGhpcy5kYXRlVGltZUNvbnRyb2wudmFsdWUhLnN1YnN0cmluZygwLCAxMSkgfS0tJHsgdGhpcy5kYXRlVGltZUNvbnRyb2wudmFsdWUhLnN1YnN0cmluZygxMykgfWApO1xyXG4gICAgICB0aGlzLm9uQ2hhbmdlKG51bGwpO1xyXG4gICAgICB0aGlzLm9uVG91Y2goKTtcclxuICAgICAgdGhpcy5pbnB1dERhdGVUaW1lLm5hdGl2ZUVsZW1lbnQuc2V0U2VsZWN0aW9uUmFuZ2UoMTEsIDEzKTtcclxuICAgICAgdGhpcy5jb250YWRvciA9IDA7XHJcbiAgICB9IGVsc2UgaWYgKHRoaXMuaW5wdXREYXRlVGltZS5uYXRpdmVFbGVtZW50LnNlbGVjdGlvblN0YXJ0ID09IDE0ICYmIHRoaXMuaW5wdXREYXRlVGltZS5uYXRpdmVFbGVtZW50LnNlbGVjdGlvbkVuZCA9PSAxNikge1xyXG4gICAgICB0aGlzLmhvdXJzQ29udHJvbC5zZXRWYWx1ZShcclxuICAgICAgICB7XHJcbiAgICAgICAgICAuLi50aGlzLmRhdGVDb250cm9sLnZhbHVlLFxyXG4gICAgICAgICAgbWludXRlOiBudWxsLFxyXG4gICAgICAgIH0sXHJcbiAgICAgICAgeyBlbWl0RXZlbnQ6IGZhbHNlIH1cclxuICAgICAgKTtcclxuICAgICAgdGhpcy5kYXRlVGltZUNvbnRyb2wuc2V0VmFsdWUoYCR7IHRoaXMuZGF0ZVRpbWVDb250cm9sLnZhbHVlIS5zdWJzdHJpbmcoMCwgMTQpIH0tLSR7IHRoaXMuZGF0ZVRpbWVDb250cm9sLnZhbHVlIS5zdWJzdHJpbmcoMTYpIH1gKTtcclxuICAgICAgdGhpcy5vbkNoYW5nZShudWxsKTtcclxuICAgICAgdGhpcy5vblRvdWNoKCk7XHJcbiAgICAgIHRoaXMuaW5wdXREYXRlVGltZS5uYXRpdmVFbGVtZW50LnNldFNlbGVjdGlvblJhbmdlKDE0LCAxNik7XHJcbiAgICAgIHRoaXMuY29udGFkb3IgPSAwO1xyXG4gICAgfVxyXG4gIH1cclxuICBwcmV2ZW50RGVmYXVsdCAoZTogYW55KSB7XHJcbiAgICBlLnByZXZlbnREZWZhdWx0KCk7XHJcbiAgICByZXR1cm4gZmFsc2U7XHJcbiAgfVxyXG5cclxuICBvbkNsaWNrIChlOiBFdmVudCwgaW5wdXQ6IEhUTUxJbnB1dEVsZW1lbnQpIHtcclxuICAgIGUucHJldmVudERlZmF1bHQoKTtcclxuXHJcbiAgICBpZiAodGhpcy5kaXNhYmxlZCkgcmV0dXJuO1xyXG5cclxuICAgIGlmIChpbnB1dC5zZWxlY3Rpb25TdGFydCA9PSAwIHx8IGlucHV0LnNlbGVjdGlvblN0YXJ0ID09IDEgfHwgaW5wdXQuc2VsZWN0aW9uU3RhcnQgPT0gMikge1xyXG4gICAgICBjb25zdCB0aW1lb3V0ID0gc2V0VGltZW91dCgoKSA9PiB7XHJcbiAgICAgICAgaW5wdXQuc2V0U2VsZWN0aW9uUmFuZ2UoMCwgMik7XHJcbiAgICAgICAgdGhpcy5jb250YWRvciA9IDA7XHJcbiAgICAgICAgY2xlYXJUaW1lb3V0KHRpbWVvdXQpO1xyXG4gICAgICB9LCAxMDApO1xyXG4gICAgfSBlbHNlIGlmIChpbnB1dC5zZWxlY3Rpb25TdGFydCA9PSAzIHx8IGlucHV0LnNlbGVjdGlvblN0YXJ0ID09IDQgfHwgaW5wdXQuc2VsZWN0aW9uU3RhcnQgPT0gNSkge1xyXG4gICAgICBjb25zdCB0aW1lb3V0ID0gc2V0VGltZW91dCgoKSA9PiB7XHJcbiAgICAgICAgaW5wdXQuc2V0U2VsZWN0aW9uUmFuZ2UoMywgNSk7XHJcbiAgICAgICAgdGhpcy5jb250YWRvciA9IDA7XHJcbiAgICAgICAgY2xlYXJUaW1lb3V0KHRpbWVvdXQpO1xyXG4gICAgICB9LCAxMDApO1xyXG4gICAgfSBlbHNlIGlmIChcclxuICAgICAgaW5wdXQuc2VsZWN0aW9uU3RhcnQgPT0gNiB8fFxyXG4gICAgICBpbnB1dC5zZWxlY3Rpb25TdGFydCA9PSA3IHx8XHJcbiAgICAgIGlucHV0LnNlbGVjdGlvblN0YXJ0ID09IDggfHxcclxuICAgICAgaW5wdXQuc2VsZWN0aW9uU3RhcnQgPT0gOSB8fFxyXG4gICAgICBpbnB1dC5zZWxlY3Rpb25TdGFydCA9PSAxMFxyXG4gICAgKSB7XHJcbiAgICAgIGNvbnN0IHRpbWVvdXQgPSBzZXRUaW1lb3V0KCgpID0+IHtcclxuICAgICAgICBpbnB1dC5zZXRTZWxlY3Rpb25SYW5nZSg2LCAxMCk7XHJcbiAgICAgICAgdGhpcy5jb250YWRvciA9IDA7XHJcbiAgICAgICAgY2xlYXJUaW1lb3V0KHRpbWVvdXQpO1xyXG4gICAgICB9LCAxMDApO1xyXG4gICAgfSBlbHNlIGlmIChpbnB1dC5zZWxlY3Rpb25TdGFydCA9PSAxMSB8fCBpbnB1dC5zZWxlY3Rpb25TdGFydCA9PSAxMiB8fCBpbnB1dC5zZWxlY3Rpb25TdGFydCA9PSAxMykge1xyXG4gICAgICBjb25zdCB0aW1lb3V0ID0gc2V0VGltZW91dCgoKSA9PiB7XHJcbiAgICAgICAgaW5wdXQuc2V0U2VsZWN0aW9uUmFuZ2UoMTEsIDEzKTtcclxuICAgICAgICB0aGlzLmNvbnRhZG9yID0gMDtcclxuICAgICAgICBjbGVhclRpbWVvdXQodGltZW91dCk7XHJcbiAgICAgIH0sIDEwMCk7XHJcbiAgICB9IGVsc2UgaWYgKGlucHV0LnNlbGVjdGlvblN0YXJ0ID09IDE0IHx8IGlucHV0LnNlbGVjdGlvblN0YXJ0ID09IDE1IHx8IGlucHV0LnNlbGVjdGlvblN0YXJ0ID09IDE2KSB7XHJcbiAgICAgIGNvbnN0IHRpbWVvdXQgPSBzZXRUaW1lb3V0KCgpID0+IHtcclxuICAgICAgICBpbnB1dC5zZXRTZWxlY3Rpb25SYW5nZSgxNCwgMTYpO1xyXG4gICAgICAgIHRoaXMuY29udGFkb3IgPSAwO1xyXG4gICAgICAgIGNsZWFyVGltZW91dCh0aW1lb3V0KTtcclxuICAgICAgfSwgMTAwKTtcclxuICAgIH0gZWxzZSBpZiAoaW5wdXQuc2VsZWN0aW9uU3RhcnQgPT0gMTcgfHwgaW5wdXQuc2VsZWN0aW9uU3RhcnQgPT0gMTggfHwgaW5wdXQuc2VsZWN0aW9uU3RhcnQgPT0gMTkpIHtcclxuICAgICAgY29uc3QgdGltZW91dCA9IHNldFRpbWVvdXQoKCkgPT4ge1xyXG4gICAgICAgIGlucHV0LnNldFNlbGVjdGlvblJhbmdlKDE3LCAxOSk7XHJcbiAgICAgICAgdGhpcy5jb250YWRvciA9IDA7XHJcbiAgICAgICAgY2xlYXJUaW1lb3V0KHRpbWVvdXQpO1xyXG4gICAgICB9LCAxMDApO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgY29uc3QgdGltZW91dCA9IHNldFRpbWVvdXQoKCkgPT4ge1xyXG4gICAgICAgIGlucHV0LnNldFNlbGVjdGlvblJhbmdlKDAsIDIpO1xyXG4gICAgICAgIHRoaXMuY29udGFkb3IgPSAwO1xyXG4gICAgICAgIGNsZWFyVGltZW91dCh0aW1lb3V0KTtcclxuICAgICAgfSwgMTAwKTtcclxuICAgIH1cclxuICB9XHJcbiAgb3BlbiAoZDogTmdiSW5wdXREYXRlcGlja2VyKTogdm9pZCB7XHJcbiAgICBpZiAodGhpcy5kYXRlVGltZUNvbnRyb2wudmFsdWUgPT0gXCJkZC9tbS95eXl5IC0tOi0tIC0tXCIgfHwgdGhpcy5kYXRlVGltZUNvbnRyb2wudmFsdWUgPT0gXCJkZC9tbS95eXl5IC0tOi0tXCIpIHtcclxuICAgICAgdGhpcy5ob3Vyc0NvbnRyb2wuc2V0VmFsdWUoe1xyXG4gICAgICAgIGhvdXI6IG5ldyBEYXRlKCkuZ2V0SG91cnMoKSxcclxuICAgICAgICBtaW51dGU6IG5ldyBEYXRlKCkuZ2V0TWludXRlcygpLFxyXG4gICAgICAgIHNlY29uZDogbmV3IERhdGUoKS5nZXRTZWNvbmRzKCksXHJcbiAgICAgIH0pO1xyXG4gICAgICB0aGlzLmRhdGVDb250cm9sLnNldFZhbHVlKHtcclxuICAgICAgICB5ZWFyOiBuZXcgRGF0ZSgpLmdldEZ1bGxZZWFyKCksXHJcbiAgICAgICAgbW9udGg6IG5ldyBEYXRlKCkuZ2V0TW9udGgoKSArIDEsXHJcbiAgICAgICAgZGF5OiBuZXcgRGF0ZSgpLmdldERhdGUoKSxcclxuICAgICAgICAuLi50aGlzLmhvdXJzQ29udHJvbC52YWx1ZSxcclxuICAgICAgfSk7XHJcbiAgICAgIGNvbnN0IHZhbHVlID0gbmV3IERhdGVUaW1lTW9kZWwoT2JqZWN0LmFzc2lnbih0aGlzLmRhdGVDb250cm9sLnZhbHVlLCB0aGlzLmhvdXJzQ29udHJvbC52YWx1ZSkpO1xyXG4gICAgICB0aGlzLmRhdGVUaW1lQ29udHJvbC5zZXRWYWx1ZSh0aGlzLl9kYXRlUGlwZS50cmFuc2Zvcm0odmFsdWUudG9TdHJpbmcoKSwgdGhpcy5zdHJpbmdGb3JtYXQpKTtcclxuICAgICAgdGhpcy5vbkVtaXQoKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGZvY3VzT3V0IChldmVudDogYW55KTogdm9pZCB7XHJcbiAgICBpZiAoZXZlbnQudGFyZ2V0LmFyaWFMYWJlbCA9PSBcIk1pbnV0ZXNcIikge1xyXG4gICAgICB0aGlzLm5nYkRhdGVwaWNrZXI/LmNsb3NlKCk7XHJcbiAgICAgIGlmICh0aGlzLmdvTmV4dFdoZW5TZWxlY3QpIHtcclxuICAgICAgICB0aGlzLmdvTmV4dCgpO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG59XHJcbiIsIjxkaXYgY2xhc3M9XCJyb3dcIj5cclxuICA8ZGl2IGNsYXNzPVwiY29sLTEyXCIgc3R5bGU9XCJvdmVyZmxvdzogaGlkZGVuXCI+XHJcbiAgICA8bGFiZWwgKm5nSWY9XCJsYWJlbCAhPSBudWxsICYmIGxhYmVsICE9ICcnICYmIHNob3dMYWJlbFwiIGNsYXNzPVwiZC1mbGV4IHN1bWF4LWxhYmVsIG1iLTAgcC0wXCJcclxuICAgICAgPjxzcGFuIFt0aXRsZV09XCJsYWJlbFwiIHN0eWxlPVwid2hpdGUtc3BhY2U6IG5vd3JhcDsgb3ZlcmZsb3c6IGhpZGRlbjsgdGV4dC1vdmVyZmxvdzogZWxsaXBzaXNcIj57eyBsYWJlbCB9fTwvc3Bhbj5cclxuICAgICAgPHNwYW4gKm5nSWY9XCJyZXF1aXJlZFwiIGNsYXNzPVwibXMtMVwiIFtjbGFzcy50ZXh0LWRhbmdlcl09XCJjb250cm9scz8uZXJyb3JzICE9IG51bGxcIj4gKjwvc3Bhbj5cclxuICAgICAgPHNwYW4gKm5nSWY9XCJsYWJlbEluZm9cIj5cclxuICAgICAgICA8aSBjbGFzcz1cImZhIGZhLWV4Y2xhbWF0aW9uLWNpcmNsZSB0ZXh0LWluZm8gbXMtMlwiIFttYXRUb29sdGlwXT1cInRleHRMYWJlbEluZm9cIiBtYXRUb29sdGlwQ2xhc3M9XCJiZy1pbmZvXCI+PC9pPlxyXG4gICAgICA8L3NwYW4+XHJcbiAgICA8L2xhYmVsPlxyXG4gICAgPGlucHV0XHJcbiAgICAgIHR5cGU9XCJ0ZXh0XCJcclxuICAgICAgY2xhc3M9XCJmb3JtLWNvbnRyb2wgZm9ybS1jb250cm9sLXNtIHBvc2l0aW9uLWFic29sdXRlXCJcclxuICAgICAgY29udGFpbmVyPVwiYm9keVwiXHJcbiAgICAgIGlkPVwiZmFrZUlucHV0XCJcclxuICAgICAgbmdiRGF0ZXBpY2tlclxyXG4gICAgICBbZm9ybUNvbnRyb2xdPVwiZGF0ZUNvbnRyb2xcIlxyXG4gICAgICBbYXV0b0Nsb3NlXT1cIidvdXRzaWRlJ1wiXHJcbiAgICAgIFtmb290ZXJUZW1wbGF0ZV09XCJmb290ZXJUZW1wbGF0ZVwiXHJcbiAgICAgICNkMj1cIm5nYkRhdGVwaWNrZXJcIiAvPlxyXG4gICAgPGRpdiBjbGFzcz1cImlucHV0LWdyb3VwIHctMTAwXCI+XHJcbiAgICAgIDxpbnB1dFxyXG4gICAgICAgIHR5cGU9XCJ0ZXh0XCJcclxuICAgICAgICByZWFkb25seVxyXG4gICAgICAgIGlkPVwiaW5wdXREYXRlVGltZVwiXHJcbiAgICAgICAgI2lucHV0RGF0ZVRpbWVcclxuICAgICAgICBzdHlsZT1cImZsZXg6IDFcIlxyXG4gICAgICAgIFtjbGFzcy5pcy1pbnZhbGlkXT1cImNvbnRyb2xzPy5lcnJvcnMgIT0gbnVsbCAmJiAoY29udHJvbHM/LmRpcnR5IHx8IGNvbnRyb2xzPy50b3VjaGVkKSAmJiBzdWJtaXR0ZWRcIlxyXG4gICAgICAgIFtkaXNhYmxlZF09XCJkaXNhYmxlZCB8fCByZWFkb25seVwiXHJcbiAgICAgICAgY2xhc3M9XCJmb3JtLWNvbnRyb2wgZm9ybS1jb250cm9sLXNtXCJcclxuICAgICAgICAoYmx1cik9XCJvbkJsdXIoKVwiXHJcbiAgICAgICAgKGZvY3Vzb3V0KT1cImZvY3VzT3V0SW5wdXQoKVwiXHJcbiAgICAgICAgKGtleXVwKT1cIm9uS2V5VXAoJGV2ZW50KVwiXHJcbiAgICAgICAgKGRibGNsaWNrKT1cInByZXZlbnREZWZhdWx0KCRldmVudClcIlxyXG4gICAgICAgIChjbGljayk9XCJwcmV2ZW50RGVmYXVsdCgkZXZlbnQpXCJcclxuICAgICAgICAobW91c2V1cCk9XCJvbkNsaWNrKCRldmVudCwgaW5wdXREYXRlVGltZSlcIlxyXG4gICAgICAgIFtmb3JtQ29udHJvbF09XCJkYXRlVGltZUNvbnRyb2xcIiAvPlxyXG4gICAgICA8ZGl2IGNsYXNzPVwiaW5wdXQtZ3JvdXAtYXBwZW5kXCI+XHJcbiAgICAgICAgPGJ1dHRvblxyXG4gICAgICAgICAgI2J0bk9wZW5cclxuICAgICAgICAgIChrZXl1cC5BcnJvd0xlZnQpPVwiZ29CYWNrKClcIlxyXG4gICAgICAgICAgW2Rpc2FibGVkXT1cImRpc2FibGVkIHx8IHJlYWRvbmx5XCJcclxuICAgICAgICAgIChrZXl1cC5BcnJvd1JpZ2h0KT1cImNsZWFyYWJsZSA/IGJ0bkNsZWFuLmZvY3VzKCkgOiBnb05leHQoKVwiXHJcbiAgICAgICAgICBjbGFzcz1cImJ0biBidG4taW5mbyBwLTAgcm91bmRlZC0wIHVzZS1idXR0b25cIlxyXG4gICAgICAgICAgKGNsaWNrKT1cImQyLnRvZ2dsZSgpOyBvcGVuKGQyKVwiXHJcbiAgICAgICAgICB0eXBlPVwiYnV0dG9uXCI+XHJcbiAgICAgICAgICA8aSBhcmlhLWhpZGRlbj1cInRydWVcIiBjbGFzcz1cImZhIGZhLWNhbGVuZGFyIHRleHQtbGlnaHQgcHgtMVwiPjwvaT5cclxuICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICA8YnV0dG9uXHJcbiAgICAgICAgICAjYnRuQ2xlYW5cclxuICAgICAgICAgIGNsYXNzPVwiYnRuIGJ0bi1kYW5nZXIgcC0wIHJvdW5kZWQtMCBsaW1waWFyXCJcclxuICAgICAgICAgIFtkaXNhYmxlZF09XCJkaXNhYmxlZCB8fCByZWFkb25seVwiXHJcbiAgICAgICAgICAoY2xpY2spPVwibGltcGlhclRvZG8oKVwiXHJcbiAgICAgICAgICAoa2V5dXAuQXJyb3dMZWZ0KT1cImJ0bk9wZW4uZm9jdXMoKVwiXHJcbiAgICAgICAgICAoa2V5dXAuQXJyb3dSaWdodCk9XCJnb05leHQoKVwiXHJcbiAgICAgICAgICB0eXBlPVwiYnV0dG9uXCI+XHJcbiAgICAgICAgICA8IS0tIDxtYXQtaWNvbiBjbGFzcz1cInRleHQtd2hpdGUgcHQtMVwiIHN0eWxlPVwiZm9udC1zaXplOiAxOHB4O1wiIFttYXRUb29sdGlwXT1cIidMaW1waWFyJ1wiIG1hdFRvb2x0aXBDbGFzcz1cImJnLWRhbmdlclwiPmNsb3NlPC9tYXQtaWNvbj4gLS0+XHJcbiAgICAgICAgICA8aSBhcmlhLWhpZGRlbj1cInRydWVcIiBjbGFzcz1cImZhIGZhLXRpbWVzIHB4LTEgdGV4dC1saWdodFwiPjwvaT5cclxuICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgPC9kaXY+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJwb3NpdGlvbi1hYnNvbHV0ZSBjb250YWluZXItdG9vbHRpcG1lc3NhZ2VcIj5cclxuICAgICAgICA8dG9vbHRpcC1tZXNzYWdlXHJcbiAgICAgICAgICBbbGFiZWxdPVwibGFiZWxcIlxyXG4gICAgICAgICAgW2NvbnRyb2xzXT1cImNvbnRyb2xzXCJcclxuICAgICAgICAgIFt2YWxpZGF0b3JNZXNzYWdlXT1cInZhbGlkYXRvck1lc3NhZ2VcIlxyXG4gICAgICAgICAgW3Rvb2x0aXBNZXNzYWdlXT1cInRvb2x0aXBNZXNzYWdlXCJcclxuICAgICAgICAgIFtzdWJtaXR0ZWRdPVwic3VibWl0dGVkXCI+PC90b29sdGlwLW1lc3NhZ2U+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgPC9kaXY+XHJcbiAgICA8ZXJyb3ItbWVzc2FnZVxyXG4gICAgICBbbGFiZWxdPVwibGFiZWxcIlxyXG4gICAgICBbY29udHJvbHNdPVwiY29udHJvbHNcIlxyXG4gICAgICBbdmFsaWRhdG9yTWVzc2FnZV09XCJ2YWxpZGF0b3JNZXNzYWdlXCJcclxuICAgICAgW3Rvb2x0aXBNZXNzYWdlXT1cInRvb2x0aXBNZXNzYWdlXCJcclxuICAgICAgW3N1Ym1pdHRlZF09XCJzdWJtaXR0ZWRcIj48L2Vycm9yLW1lc3NhZ2U+XHJcbiAgICA8bmctdGVtcGxhdGUgI2Zvb3RlclRlbXBsYXRlPlxyXG4gICAgICA8bmdiLXRpbWVwaWNrZXIgW2Zvcm1Db250cm9sXT1cImhvdXJzQ29udHJvbFwiIFttZXJpZGlhbl09XCJmb3JtYXQgPT0gMTIgPyB0cnVlIDogZmFsc2VcIiAoZm9jdXNvdXQpPVwiZm9jdXNPdXQoJGV2ZW50KVwiPjwvbmdiLXRpbWVwaWNrZXI+XHJcbiAgICA8L25nLXRlbXBsYXRlPlxyXG4gIDwvZGl2PlxyXG48L2Rpdj5cclxuIl19
|