ngx-sumax-erp-components 1.1.4 → 1.1.6
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 +10 -4
- package/esm2022/lib/sc-ag-grid/sc-ag-grid-customizable/sc-ag-grid-customizable.component.mjs +22 -4
- package/fesm2022/ngx-sumax-erp-components.mjs +30 -7
- package/fesm2022/ngx-sumax-erp-components.mjs.map +1 -1
- package/lib/sc-ag-grid/sc-ag-grid-customizable/sc-ag-grid-customizable.component.d.ts +13 -1
- package/package.json +1 -1
|
@@ -7,6 +7,7 @@ import { CustomDatepickerI18n, I18n } from "../date-picker/CustomDatePickerI18n"
|
|
|
7
7
|
import { DateTimeModel } from "../utils/DateTimeModel";
|
|
8
8
|
import { DateUtil } from "../utils/DateUtil";
|
|
9
9
|
import { DateTimePickerEditableService } from "./date-time-picker-editable.service";
|
|
10
|
+
import { timer } from "rxjs";
|
|
10
11
|
import * as i0 from "@angular/core";
|
|
11
12
|
import * as i1 from "@angular/common";
|
|
12
13
|
import * as i2 from "@ng-bootstrap/ng-bootstrap";
|
|
@@ -202,6 +203,9 @@ export class DateTimePickerEditableComponent {
|
|
|
202
203
|
});
|
|
203
204
|
this.dateTimeControl.setValue(this._datePipe.transform(obj, this.stringFormat));
|
|
204
205
|
}
|
|
206
|
+
else {
|
|
207
|
+
this.limpiarTodo();
|
|
208
|
+
}
|
|
205
209
|
}
|
|
206
210
|
registerOnChange(fn) {
|
|
207
211
|
this.onChange = fn;
|
|
@@ -947,7 +951,7 @@ export class DateTimePickerEditableComponent {
|
|
|
947
951
|
this.dateTimeControl.setValue("dd/mm/yyyy --:-- --");
|
|
948
952
|
else if (this.format == 24)
|
|
949
953
|
this.dateTimeControl.setValue("dd/mm/yyyy --:--");
|
|
950
|
-
this.inputDateTime.nativeElement.setSelectionRange(0, 2);
|
|
954
|
+
timer(60).subscribe(() => this.inputDateTime.nativeElement.setSelectionRange(0, 2));
|
|
951
955
|
this.onChange(null);
|
|
952
956
|
this.onTouch();
|
|
953
957
|
}
|
|
@@ -1101,7 +1105,8 @@ export class DateTimePickerEditableComponent {
|
|
|
1101
1105
|
{
|
|
1102
1106
|
provide: NG_VALUE_ACCESSOR,
|
|
1103
1107
|
multi: true,
|
|
1104
|
-
useExisting: DateTimePickerEditableComponent
|
|
1108
|
+
useExisting: forwardRef(() => DateTimePickerEditableComponent)
|
|
1109
|
+
//useExisting: DateTimePickerEditableComponent,
|
|
1105
1110
|
},
|
|
1106
1111
|
{
|
|
1107
1112
|
provide: NG_VALIDATORS,
|
|
@@ -1119,7 +1124,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.11", ngImpo
|
|
|
1119
1124
|
{
|
|
1120
1125
|
provide: NG_VALUE_ACCESSOR,
|
|
1121
1126
|
multi: true,
|
|
1122
|
-
useExisting: DateTimePickerEditableComponent
|
|
1127
|
+
useExisting: forwardRef(() => DateTimePickerEditableComponent)
|
|
1128
|
+
//useExisting: DateTimePickerEditableComponent,
|
|
1123
1129
|
},
|
|
1124
1130
|
{
|
|
1125
1131
|
provide: NG_VALIDATORS,
|
|
@@ -1187,4 +1193,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.11", ngImpo
|
|
|
1187
1193
|
}], onBack: [{
|
|
1188
1194
|
type: Output
|
|
1189
1195
|
}] } });
|
|
1190
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0ZS10aW1lLXBpY2tlci1lZGl0YWJsZS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtc3VtYXgtZXJwLWNvbXBvbmVudC9zcmMvbGliL2RhdGUtdGltZS1waWNrZXItZWRpdGFibGUvZGF0ZS10aW1lLXBpY2tlci1lZGl0YWJsZS5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtc3VtYXgtZXJwLWNvbXBvbmVudC9zcmMvbGliL2RhdGUtdGltZS1waWNrZXItZWRpdGFibGUvZGF0ZS10aW1lLXBpY2tlci1lZGl0YWJsZS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDM0MsT0FBTyxFQUNMLGlCQUFpQixFQUNqQixTQUFTLEVBRVQsWUFBWSxFQUNaLEtBQUssRUFHTCxNQUFNLEVBRU4sU0FBUyxFQUNULFVBQVUsRUFDVixNQUFNLEdBR1AsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUdMLFdBQVcsRUFDWCxhQUFhLEVBQ2IsaUJBQWlCLEVBQ2pCLGtCQUFrQixHQUVuQixNQUFNLGdCQUFnQixDQUFDO0FBQ3hCLE9BQU8sRUFBRSxXQUFXLEVBQUUsc0JBQXNCLEVBQUUsaUJBQWlCLEVBQXNCLE1BQU0sNEJBQTRCLENBQUM7QUFDeEgsT0FBTyxFQUFFLHNCQUFzQixFQUFFLE1BQU0sdUNBQXVDLENBQUM7QUFDL0UsT0FBTyxFQUFFLG9CQUFvQixFQUFFLElBQUksRUFBRSxNQUFNLHFDQUFxQyxDQUFDO0FBQ2pGLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUV2RCxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFDN0MsT0FBTyxFQUFFLDZCQUE2QixFQUFFLE1BQU0scUNBQXFDLENBQUM7Ozs7Ozs7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Q0osT0FBTztzQkFBNUIsU0FBUzt1QkFBQyxTQUFTO2dCQUNHLFFBQVE7c0JBQTlCLFNBQVM7dUJBQUMsVUFBVTtnQkFDSixhQUFhO3NCQUE3QixTQUFTO3VCQUFDLElBQUk7Z0JBT04sS0FBSztzQkFBYixLQUFLO2dCQU9HLFNBQVM7c0JBQWpCLEtBQUs7Z0JBT0csUUFBUTtzQkFBaEIsS0FBSztnQkFPRyxRQUFRO3NCQUFoQixLQUFLO2dCQU9HLGdCQUFnQjtzQkFBeEIsS0FBSztnQkFPRyxjQUFjO3NCQUF0QixLQUFLO2dCQU9HLFNBQVM7c0JBQWpCLEtBQUs7Z0JBT0csTUFBTTtzQkFBZCxLQUFLO2dCQU9HLElBQUk7c0JBQVosS0FBSztnQkFPRyxhQUFhO3NCQUFyQixLQUFLO2dCQU9HLFNBQVM7c0JBQWpCLEtBQUs7Z0JBT0csYUFBYTtzQkFBckIsS0FBSztnQkFPRyxJQUFJO3NCQUFaLEtBQUs7Z0JBT0csYUFBYTtzQkFBckIsS0FBSztnQkFPRyxhQUFhO3NCQUFyQixLQUFLO2dCQU9HLGdCQUFnQjtzQkFBeEIsS0FBSztnQkFPRyxTQUFTO3NCQUFqQixLQUFLO2dCQU9HLGlCQUFpQjtzQkFBekIsS0FBSztnQkFPRyxZQUFZO3NCQUFwQixLQUFLO2dCQU9HLFFBQVE7c0JBQWhCLEtBQUs7Z0JBQ0ksTUFBTTtzQkFBZixNQUFNO2dCQUNHLE1BQU07c0JBQWYsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IERhdGVQaXBlIH0gZnJvbSBcIkBhbmd1bGFyL2NvbW1vblwiO1xyXG5pbXBvcnQge1xyXG4gIENoYW5nZURldGVjdG9yUmVmLFxyXG4gIENvbXBvbmVudCxcclxuICBFbGVtZW50UmVmLFxyXG4gIEV2ZW50RW1pdHRlcixcclxuICBJbnB1dCxcclxuICBPbkNoYW5nZXMsXHJcbiAgT25Jbml0LFxyXG4gIE91dHB1dCxcclxuICBTaW1wbGVDaGFuZ2VzLFxyXG4gIFZpZXdDaGlsZCxcclxuICBmb3J3YXJkUmVmLFxyXG4gIGluamVjdCxcclxuICBpbnB1dCxcclxuICB2aWV3Q2hpbGQsXHJcbn0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcclxuaW1wb3J0IHtcclxuICBBYnN0cmFjdENvbnRyb2wsXHJcbiAgQ29udHJvbFZhbHVlQWNjZXNzb3IsXHJcbiAgRm9ybUNvbnRyb2wsXHJcbiAgTkdfVkFMSURBVE9SUyxcclxuICBOR19WQUxVRV9BQ0NFU1NPUixcclxuICBVbnR5cGVkRm9ybUNvbnRyb2wsXHJcbiAgVmFsaWRhdGlvbkVycm9ycyxcclxufSBmcm9tIFwiQGFuZ3VsYXIvZm9ybXNcIjtcclxuaW1wb3J0IHsgTmdiQ2FsZW5kYXIsIE5nYkRhdGVQYXJzZXJGb3JtYXR0ZXIsIE5nYkRhdGVwaWNrZXJJMThuLCBOZ2JJbnB1dERhdGVwaWNrZXIgfSBmcm9tIFwiQG5nLWJvb3RzdHJhcC9uZy1ib290c3RyYXBcIjtcclxuaW1wb3J0IHsgQ3VzdG9tRGF0ZXBpY2tlckZvcm1hdCB9IGZyb20gXCIuLi9kYXRlLXBpY2tlci9DdXN0b21EYXRlUGlja2VyRm9ybWF0XCI7XHJcbmltcG9ydCB7IEN1c3RvbURhdGVwaWNrZXJJMThuLCBJMThuIH0gZnJvbSBcIi4uL2RhdGUtcGlja2VyL0N1c3RvbURhdGVQaWNrZXJJMThuXCI7XHJcbmltcG9ydCB7IERhdGVUaW1lTW9kZWwgfSBmcm9tIFwiLi4vdXRpbHMvRGF0ZVRpbWVNb2RlbFwiO1xyXG5pbXBvcnQgeyBmb3JtYXRIb3VyIH0gZnJvbSBcIi4uL3V0aWxzL0RhdGVUaW1lUGlja2VyRWRpdGFibGVcIjtcclxuaW1wb3J0IHsgRGF0ZVV0aWwgfSBmcm9tIFwiLi4vdXRpbHMvRGF0ZVV0aWxcIjtcclxuaW1wb3J0IHsgRGF0ZVRpbWVQaWNrZXJFZGl0YWJsZVNlcnZpY2UgfSBmcm9tIFwiLi9kYXRlLXRpbWUtcGlja2VyLWVkaXRhYmxlLnNlcnZpY2VcIjtcclxuXHJcbmNvbnN0IE1BU0tfMTJfSE9VUlMgPSBcImRkL21tL3l5eXkgLS06LS0gLS1cIjtcclxuY29uc3QgTUFTS18yNF9IT1VSUyA9IFwiZGQvbW0veXl5eSAtLTotLVwiO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6IFwiZGF0ZS10aW1lLXBpY2tlci1lZGl0YWJsZVwiLFxyXG4gIHRlbXBsYXRlVXJsOiBcIi4vZGF0ZS10aW1lLXBpY2tlci1lZGl0YWJsZS5jb21wb25lbnQuaHRtbFwiLFxyXG4gIHN0eWxlVXJsczogW1wiLi9kYXRlLXRpbWUtcGlja2VyLWVkaXRhYmxlLmNvbXBvbmVudC5zY3NzXCJdLFxyXG4gIHByb3ZpZGVyczogW1xyXG4gICAge1xyXG4gICAgICBwcm92aWRlOiBOR19WQUxVRV9BQ0NFU1NPUixcclxuICAgICAgbXVsdGk6IHRydWUsXHJcbiAgICAgIHVzZUV4aXN0aW5nOiBEYXRlVGltZVBpY2tlckVkaXRhYmxlQ29tcG9uZW50LFxyXG4gICAgfSxcclxuICAgIHtcclxuICAgICAgcHJvdmlkZTogTkdfVkFMSURBVE9SUyxcclxuICAgICAgdXNlRXhpc3Rpbmc6IGZvcndhcmRSZWYoKCkgPT4gRGF0ZVRpbWVQaWNrZXJFZGl0YWJsZUNvbXBvbmVudCksXHJcbiAgICAgIG11bHRpOiB0cnVlLFxyXG4gICAgfSxcclxuICAgIEkxOG4sXHJcbiAgICB7IHByb3ZpZGU6IE5nYkRhdGVwaWNrZXJJMThuLCB1c2VDbGFzczogQ3VzdG9tRGF0ZXBpY2tlckkxOG4gfSxcclxuICAgIHsgcHJvdmlkZTogTmdiRGF0ZVBhcnNlckZvcm1hdHRlciwgdXNlQ2xhc3M6IEN1c3RvbURhdGVwaWNrZXJGb3JtYXQgfSxcclxuICBdLFxyXG59KVxyXG5leHBvcnQgY2xhc3MgRGF0ZVRpbWVQaWNrZXJFZGl0YWJsZUNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgQ29udHJvbFZhbHVlQWNjZXNzb3IsIE9uQ2hhbmdlcyB7XHJcbiAgcHJpdmF0ZSBfZGF0ZVBpcGUgPSBpbmplY3QoRGF0ZVBpcGUpO1xyXG4gIHByaXZhdGUgX2NhbGVuZGFyID0gaW5qZWN0KE5nYkNhbGVuZGFyKTtcclxuICBwcml2YXRlIF9kYXRlVGltZVBpY2tlckVkaXRhYmxlU2VydmljZSA9IGluamVjdChEYXRlVGltZVBpY2tlckVkaXRhYmxlU2VydmljZSk7XHJcbiAgcHJpdmF0ZSBfY2RyZiA9IGluamVjdChDaGFuZ2VEZXRlY3RvclJlZik7XHJcblxyXG4gIEBWaWV3Q2hpbGQoXCJpbnB1dERhdGVUaW1lXCIpIGlucHV0RGF0ZVRpbWU6IGFueTtcclxuICBAVmlld0NoaWxkKFwiYnRuT3BlblwiKSBidG5PcGVuITogRWxlbWVudFJlZjtcclxuICBAVmlld0NoaWxkKFwiYnRuQ2xlYW5cIikgYnRuQ2xlYW4hOiBFbGVtZW50UmVmO1xyXG4gIEBWaWV3Q2hpbGQoXCJkMlwiKSBuZ2JEYXRlcGlja2VyITogTmdiSW5wdXREYXRlcGlja2VyO1xyXG5cclxuICAvKipcclxuICAgKiBAZGVzY3JpcHRpb24gVGV4dG8gc3VwZXJpb3JcclxuICAgKiBAZGVmYXVsdCBcIlwiXHJcbiAgICogQHR5cGUgc3RyaW5nXHJcbiAgICovXHJcbiAgQElucHV0KCkgbGFiZWw6IHN0cmluZyA9IFwiXCI7XHJcbiAgXHJcbiAgLyoqXHJcbiAgICogQGRlc2NyaXB0aW9uIENvbnRyb2xhIGxhIHZpc3VhbGl6YWNpw7NuIGRlbCB0ZXh0byBzdXBlcmlvclxyXG4gICAqIEBkZWZhdWx0IHRydWVcclxuICAgKiBAdHlwZSBib29sZWFuXHJcbiAgICovXHJcbiAgQElucHV0KCkgc2hvd0xhYmVsOiBib29sZWFuID0gdHJ1ZTtcclxuICBcclxuICAvKipcclxuICAgKiBAZGVzY3JpcHRpb24gRXN0YWJsZWNlIGVsIGNvbnRyb2wgY29tbyBzb2xvIGxlY3R1cmFcclxuICAgKiBAZGVmYXVsdCBmYWxzZVxyXG4gICAqIEB0eXBlIGJvb2xlYW5cclxuICAgKi9cclxuICBASW5wdXQoKSByZWFkb25seTogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIFxyXG4gIC8qKlxyXG4gICAqIEBkZXNjcmlwdGlvbiBJbmRpY2Egc2kgZWwgY2FtcG8gZXMgb2JsaWdhdG9yaW9cclxuICAgKiBAZGVmYXVsdCBmYWxzZVxyXG4gICAqIEB0eXBlIGJvb2xlYW5cclxuICAgKi9cclxuICBASW5wdXQoKSByZXF1aXJlZDogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIFxyXG4gIC8qKlxyXG4gICAqIEBkZXNjcmlwdGlvbiBNdWVzdHJhIG1lbnNhamVzIGRlIHZhbGlkYWNpw7NuXHJcbiAgICogQGRlZmF1bHQgZmFsc2VcclxuICAgKiBAdHlwZSBib29sZWFuXHJcbiAgICovXHJcbiAgQElucHV0KCkgdmFsaWRhdG9yTWVzc2FnZTogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIFxyXG4gIC8qKlxyXG4gICAqIEBkZXNjcmlwdGlvbiBNdWVzdHJhIG1lbnNhamVzIGRlIGF5dWRhIGNvbW8gdG9vbHRpcHNcclxuICAgKiBAZGVmYXVsdCB0cnVlXHJcbiAgICogQHR5cGUgYm9vbGVhblxyXG4gICAqL1xyXG4gIEBJbnB1dCgpIHRvb2x0aXBNZXNzYWdlOiBib29sZWFuID0gdHJ1ZTtcclxuICBcclxuICAvKipcclxuICAgKiBAZGVzY3JpcHRpb24gSW5kaWNhIHNpIGVsIGZvcm11bGFyaW8gaGEgc2lkbyBlbnZpYWRvIHBhcmEgbW9zdHJhciB2YWxpZGFjaW9uZXNcclxuICAgKiBAZGVmYXVsdCB0cnVlXHJcbiAgICogQHR5cGUgYm9vbGVhblxyXG4gICAqL1xyXG4gIEBJbnB1dCgpIHN1Ym1pdHRlZDogYm9vbGVhbiA9IHRydWU7XHJcbiAgXHJcbiAgLyoqXHJcbiAgICogQGRlc2NyaXB0aW9uIEZvcm1hdG8gZGUgaG9yYTogMTIgbyAyNCBob3Jhc1xyXG4gICAqIEBkZWZhdWx0IDI0XHJcbiAgICogQHR5cGUgZm9ybWF0SG91clxyXG4gICAqL1xyXG4gIEBJbnB1dCgpIGZvcm1hdDogZm9ybWF0SG91ciA9IDI0O1xyXG4gIFxyXG4gIC8qKlxyXG4gICAqIEBkZXNjcmlwdGlvbiBSZWZlcmVuY2lhIGFsIHNpZ3VpZW50ZSBjb250cm9sIHBhcmEgbmF2ZWdhY2nDs25cclxuICAgKiBAZGVmYXVsdCB1bmRlZmluZWRcclxuICAgKiBAdHlwZSBhbnlcclxuICAgKi9cclxuICBASW5wdXQoKSBuZXh0OiBhbnk7XHJcbiAgXHJcbiAgLyoqXHJcbiAgICogQGRlc2NyaXB0aW9uIFJlZmVyZW5jaWEgYWwgY29udHJvbCBhbHRlcm5hdGl2byBjdWFuZG8gZWwgc2lndWllbnRlIGVzdMOhIGRlc2hhYmlsaXRhZG9cclxuICAgKiBAZGVmYXVsdCB1bmRlZmluZWRcclxuICAgKiBAdHlwZSBhbnlcclxuICAgKi9cclxuICBASW5wdXQoKSBuZXh0SXNEaXNhYmxlOiBhbnk7XHJcbiAgXHJcbiAgLyoqXHJcbiAgICogQGRlc2NyaXB0aW9uIEhhYmlsaXRhIGluZm9ybWFjacOzbiBhZGljaW9uYWwgcGFyYSBsYSBldGlxdWV0YVxyXG4gICAqIEBkZWZhdWx0IGZhbHNlXHJcbiAgICogQHR5cGUgYm9vbGVhblxyXG4gICAqL1xyXG4gIEBJbnB1dCgpIGxhYmVsSW5mbzogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIFxyXG4gIC8qKlxyXG4gICAqIEBkZXNjcmlwdGlvbiBUZXh0byBpbmZvcm1hdGl2byBhZGljaW9uYWwgcGFyYSBsYSBldGlxdWV0YVxyXG4gICAqIEBkZWZhdWx0IFwiXCJcclxuICAgKiBAdHlwZSBzdHJpbmdcclxuICAgKi9cclxuICBASW5wdXQoKSB0ZXh0TGFiZWxJbmZvOiBzdHJpbmcgPSBcIlwiO1xyXG4gIFxyXG4gIC8qKlxyXG4gICAqIEBkZXNjcmlwdGlvbiBSZWZlcmVuY2lhIGFsIGNvbnRyb2wgYW50ZXJpb3IgcGFyYSBuYXZlZ2FjacOzblxyXG4gICAqIEBkZWZhdWx0IHVuZGVmaW5lZFxyXG4gICAqIEB0eXBlIGFueVxyXG4gICAqL1xyXG4gIEBJbnB1dCgpIGJhY2s6IGFueTtcclxuICBcclxuICAvKipcclxuICAgKiBAZGVzY3JpcHRpb24gUmVmZXJlbmNpYSBhbCBjb250cm9sIGFsdGVybmF0aXZvIGN1YW5kbyBlbCBhbnRlcmlvciBlc3TDoSBkZXNoYWJpbGl0YWRvXHJcbiAgICogQGRlZmF1bHQgdW5kZWZpbmVkXHJcbiAgICogQHR5cGUgYW55XHJcbiAgICovXHJcbiAgQElucHV0KCkgYmFja0lzRGlzYWJsZTogYW55O1xyXG4gIFxyXG4gIC8qKlxyXG4gICAqIEBkZXNjcmlwdGlvbiBBYnJlIGVsIHNlbGVjdG9yIGFsIHJlY2liaXIgZWwgZm9jb1xyXG4gICAqIEBkZWZhdWx0IGZhbHNlXHJcbiAgICogQHR5cGUgYm9vbGVhblxyXG4gICAqL1xyXG4gIEBJbnB1dCgpIG9wZW5XaGVuRm9jdXM6IGJvb2xlYW4gPSBmYWxzZTtcclxuICBcclxuICAvKipcclxuICAgKiBAZGVzY3JpcHRpb24gTmF2ZWdhIGFsIHNpZ3VpZW50ZSBjb250cm9sIGFsIHNlbGVjY2lvbmFyIHVuYSBmZWNoYVxyXG4gICAqIEBkZWZhdWx0IGZhbHNlXHJcbiAgICogQHR5cGUgYm9vbGVhblxyXG4gICAqL1xyXG4gIEBJbnB1dCgpIGdvTmV4dFdoZW5TZWxlY3Q6IGJvb2xlYW4gPSBmYWxzZTtcclxuICBcclxuICAvKipcclxuICAgKiBAZGVzY3JpcHRpb24gTXVlc3RyYSBlbCBib3TDs24gZGUgZWxpbWluYXJcclxuICAgKiBAZGVmYXVsdCBmYWxzZVxyXG4gICAqIEB0eXBlIGJvb2xlYW5cclxuICAgKi9cclxuICBASW5wdXQoKSBjbGVhcmFibGU6IGJvb2xlYW4gPSB0cnVlO1xyXG4gIFxyXG4gIC8qKlxyXG4gICAqIEBkZXNjcmlwdGlvbiBBdXRvY29tcGxldGEgY29uIGxhIGhvcmEvbWludXRvIGFjdHVhbCAodHJ1ZSkgbyBjb24gMDA6MDAgKGZhbHNlKVxyXG4gICAqIEBkZWZhdWx0IGZhbHNlXHJcbiAgICogQHR5cGUgYm9vbGVhblxyXG4gICAqL1xyXG4gIEBJbnB1dCgpIGF1dG9Db21wbGV0ZUhvdXJzOiBib29sZWFuID0gZmFsc2U7XHJcbiAgXHJcbiAgLyoqXHJcbiAgICogQGRlc2NyaXB0aW9uIEhhYmlsaXRhIGVsIGF1dG9jb21wbGV0YWRvXHJcbiAgICogQGRlZmF1bHQgdHJ1ZVxyXG4gICAqIEB0eXBlIGJvb2xlYW5cclxuICAgKi9cclxuICBASW5wdXQoKSBhdXRvQ29tcGxldGU6IGJvb2xlYW4gPSB0cnVlO1xyXG4gIFxyXG4gIC8qKlxyXG4gICAqIEBkZXNjcmlwdGlvbiBEZXNoYWJpbGl0YSBlbCBjb250cm9sXHJcbiAgICogQGRlZmF1bHQgZmFsc2VcclxuICAgKiBAdHlwZSBib29sZWFuXHJcbiAgICovXHJcbiAgQElucHV0KCkgZGlzYWJsZWQgPSBmYWxzZTtcclxuICBAT3V0cHV0KCkgb25OZXh0OiBFdmVudEVtaXR0ZXI8YW55PiA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcclxuICBAT3V0cHV0KCkgb25CYWNrOiBFdmVudEVtaXR0ZXI8YW55PiA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcclxuXHJcbiAgb25DaGFuZ2UgPSAoXzogYW55KSA9PiB7IH07XHJcbiAgb25Ub3VjaCA9ICgpID0+IHsgfTtcclxuICBvblZhbGlkYXRpb25DaGFuZ2UgPSAoKSA9PiB7IH07XHJcblxyXG4gIGNvbnRyb2xzOiBBYnN0cmFjdENvbnRyb2wgfCB1bmRlZmluZWQ7XHJcbiAgY29udGFkb3IgPSAwO1xyXG4gIHBvc2l0aW9uID0gMDtcclxuICBkYXRlVGltZUNvbnRyb2wgPSBuZXcgRm9ybUNvbnRyb2woXCJkZC9tbS95eXl5IC0tOi0tIC0tXCIpO1xyXG4gIGhvdXJzQ29udHJvbCA9IG5ldyBVbnR5cGVkRm9ybUNvbnRyb2woe1xyXG4gICAgaG91cjogbnVsbCxcclxuICAgIG1pbnV0ZTogbnVsbCxcclxuICB9KTtcclxuICBkYXRlQ29udHJvbCA9IG5ldyBVbnR5cGVkRm9ybUNvbnRyb2woe1xyXG4gICAgeWVhcjogbnVsbCxcclxuICAgIG1vbnRoOiBudWxsLFxyXG4gICAgZGF5OiBudWxsLFxyXG4gIH0pO1xyXG4gIHRvZGF5ID0gdGhpcy5fY2FsZW5kYXIuZ2V0VG9kYXkoKTtcclxuXHJcbiAgZ2V0IHN0cmluZ0Zvcm1hdCAoKTogc3RyaW5nIHtcclxuICAgIHJldHVybiB0aGlzLmZvcm1hdCA9PT0gMTIgPyBcImRkL01NL3l5eXkgaGg6bW0gYVwiIDogXCJkZC9NTS95eXl5IEhIOm1tXCI7XHJcbiAgfVxyXG5cclxuICBjb25zdHJ1Y3RvcigpIHtcclxuICAgIHRoaXMuc2hvd0xhYmVsID0gdGhpcy5fZGF0ZVRpbWVQaWNrZXJFZGl0YWJsZVNlcnZpY2UuZ2V0U2hvd0xhYmVsKCk7XHJcbiAgICB0aGlzLm9wZW5XaGVuRm9jdXMgPSB0aGlzLl9kYXRlVGltZVBpY2tlckVkaXRhYmxlU2VydmljZS5nZXRPcGVuV2hlbkZvY3VzKCk7XHJcbiAgICB0aGlzLmdvTmV4dFdoZW5TZWxlY3QgPSB0aGlzLl9kYXRlVGltZVBpY2tlckVkaXRhYmxlU2VydmljZS5nZXRHb05leHRXaGVuU2VsZWN0KCk7XHJcbiAgICB0aGlzLnZhbGlkYXRvck1lc3NhZ2UgPSB0aGlzLl9kYXRlVGltZVBpY2tlckVkaXRhYmxlU2VydmljZS5nZXRWYWxpZGF0b3JNZXNzYWdlKCk7XHJcbiAgICB0aGlzLnRvb2x0aXBNZXNzYWdlID0gdGhpcy5fZGF0ZVRpbWVQaWNrZXJFZGl0YWJsZVNlcnZpY2UuZ2V0VG9vbHRpcE1lc3NhZ2UoKTtcclxuICAgIHRoaXMuc3VibWl0dGVkID0gdGhpcy5fZGF0ZVRpbWVQaWNrZXJFZGl0YWJsZVNlcnZpY2UuZ2V0U3VibWl0dGVkKCk7XHJcbiAgICB0aGlzLmZvcm1hdCA9IHRoaXMuX2RhdGVUaW1lUGlja2VyRWRpdGFibGVTZXJ2aWNlLmdldEZvcm1hdCgpO1xyXG4gICAgdGhpcy5jbGVhcmFibGUgPSB0aGlzLl9kYXRlVGltZVBpY2tlckVkaXRhYmxlU2VydmljZS5nZXRDbGVhcmFibGUoKTtcclxuICAgIHRoaXMuYXV0b0NvbXBsZXRlSG91cnMgPSB0aGlzLl9kYXRlVGltZVBpY2tlckVkaXRhYmxlU2VydmljZS5nZXRBdXRvQ29tcGxldGVIb3VycygpO1xyXG4gICAgdGhpcy5hdXRvQ29tcGxldGUgPSB0aGlzLl9kYXRlVGltZVBpY2tlckVkaXRhYmxlU2VydmljZS5nZXRBdXRvQ29tcGxldGUoKTtcclxuICB9XHJcblxyXG5cclxuICB2YWxpZGF0ZSAoY29udHJvbDogQWJzdHJhY3RDb250cm9sKTogVmFsaWRhdGlvbkVycm9ycyB8IGFueSB7XHJcbiAgICB0aGlzLmNvbnRyb2xzID0gY29udHJvbDtcclxuICAgIHRoaXMuX2NkcmYuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgcmV0dXJuIG51bGw7XHJcbiAgfVxyXG5cclxuICByZWdpc3Rlck9uVmFsaWRhdG9yQ2hhbmdlPyhmbjogKCkgPT4gdm9pZCk6IHZvaWQge1xyXG4gICAgdGhpcy5vblZhbGlkYXRpb25DaGFuZ2UgPSBmbjtcclxuICB9XHJcblxyXG4gIG5nT25Jbml0ICgpOiB2b2lkIHtcclxuICAgIHRoaXMuaG91cnNDaGFuZ2UoKTtcclxuICAgIGNvbnN0IHRpbWVvdXQgPSBzZXRUaW1lb3V0KCgpID0+IHtcclxuICAgICAgdGhpcy5kYXRlQ2hhbmdlKCk7XHJcbiAgICAgIGNsZWFyVGltZW91dCh0aW1lb3V0KTtcclxuICAgICAgaWYgKCF0aGlzLmNsZWFyYWJsZSkgdGhpcy5idG5DbGVhbiEubmF0aXZlRWxlbWVudC5zdHlsZS52aXNpYmlsaXR5ID0gXCJoaWRkZW5cIjtcclxuICAgIH0sIDEwMCk7XHJcblxyXG4gICAgaWYgKHRoaXMuZm9ybWF0ID09IDEyKSB7XHJcbiAgICAgIHRoaXMuZGF0ZVRpbWVDb250cm9sLnNldFZhbHVlKE1BU0tfMTJfSE9VUlMpO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdGhpcy5kYXRlVGltZUNvbnRyb2wuc2V0VmFsdWUoTUFTS18yNF9IT1VSUyk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBuZ09uQ2hhbmdlcyAoY2hhbmdlczogU2ltcGxlQ2hhbmdlcyk6IHZvaWQge1xyXG4gICAgaWYgKGNoYW5nZXNbXCJzdWJtaXR0ZWRcIl0pIHtcclxuICAgICAgaWYgKHRoaXMuY29udHJvbHMgIT09IHVuZGVmaW5lZCAmJiBjaGFuZ2VzW1wic3VibWl0dGVkXCJdLmN1cnJlbnRWYWx1ZSkge1xyXG4gICAgICAgIHRoaXMuY29udHJvbHMubWFya0FzRGlydHkoKTtcclxuICAgICAgICB0aGlzLmNvbnRyb2xzLm1hcmtBc1RvdWNoZWQoKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgZm9jdXMgKCk6IHZvaWQge1xyXG4gICAgdGhpcy5pbnB1dERhdGVUaW1lLm5hdGl2ZUVsZW1lbnQuZm9jdXMoKTtcclxuXHJcbiAgICBjb25zdCB0aW1lb3V0ID0gc2V0VGltZW91dCgoKSA9PiB7XHJcbiAgICAgIGlmICghdGhpcy5kaXNhYmxlZCkgdGhpcy5pbnB1dERhdGVUaW1lLm5hdGl2ZUVsZW1lbnQuc2V0U2VsZWN0aW9uUmFuZ2UoMCwgMik7XHJcblxyXG4gICAgICBjbGVhclRpbWVvdXQodGltZW91dCk7XHJcbiAgICB9LCAxMDApO1xyXG5cclxuICAgIGlmICghdGhpcy5yZWFkb25seSAmJiB0aGlzLm9wZW5XaGVuRm9jdXMpIHtcclxuICAgICAgdGhpcy5uZ2JEYXRlcGlja2VyPy5vcGVuKCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICB3cml0ZVZhbHVlIChvYmo6IGFueSk6IHZvaWQge1xyXG4gICAgaWYgKG9iaiAhPSBudWxsKSB7XHJcbiAgICAgIHRoaXMuZGF0ZUNvbnRyb2wuc2V0VmFsdWUoRGF0ZVRpbWVNb2RlbC5mcm9tTG9jYWxTdHJpbmcob2JqKSk7XHJcbiAgICAgIHRoaXMuaG91cnNDb250cm9sLnNldFZhbHVlKHtcclxuICAgICAgICBob3VyOiB0aGlzLmRhdGVDb250cm9sLnZhbHVlLmhvdXIsXHJcbiAgICAgICAgbWludXRlOiB0aGlzLmRhdGVDb250cm9sLnZhbHVlLm1pbnV0ZSxcclxuICAgICAgICBzZWNvbmQ6IHRoaXMuZGF0ZUNvbnRyb2wudmFsdWUuc2Vjb25kLFxyXG4gICAgICB9KTtcclxuICAgICAgdGhpcy5kYXRlVGltZUNvbnRyb2wuc2V0VmFsdWUodGhpcy5fZGF0ZVBpcGUudHJhbnNmb3JtKG9iaiwgdGhpcy5zdHJpbmdGb3JtYXQpKTtcclxuICAgIH1cclxuICB9XHJcbiAgcmVnaXN0ZXJPbkNoYW5nZSAoZm46IGFueSk6IHZvaWQge1xyXG4gICAgdGhpcy5vbkNoYW5nZSA9IGZuO1xyXG4gIH1cclxuICByZWdpc3Rlck9uVG91Y2hlZCAoZm46IGFueSk6IHZvaWQge1xyXG4gICAgdGhpcy5vblRvdWNoID0gZm47XHJcbiAgfVxyXG4gIHNldERpc2FibGVkU3RhdGU/KGlzRGlzYWJsZWQ6IGJvb2xlYW4pOiB2b2lkIHtcclxuICAgIHRoaXMuZGlzYWJsZWQgPSBpc0Rpc2FibGVkO1xyXG4gICAgaWYgKHRoaXMuZGlzYWJsZWQpIHRoaXMuZGF0ZVRpbWVDb250cm9sLmRpc2FibGUoKTtcclxuICAgIGVsc2UgdGhpcy5kYXRlVGltZUNvbnRyb2wuZW5hYmxlKCk7XHJcbiAgfVxyXG5cclxuICBob3Vyc0NoYW5nZSAoKSB7XHJcbiAgICBpZiAodGhpcy5mb3JtYXQgPT0gMTIpXHJcbiAgICAgIHRoaXMuaG91cnNDb250cm9sLnZhbHVlQ2hhbmdlcy5zdWJzY3JpYmUoKHJlcykgPT4ge1xyXG4gICAgICAgIGlmIChcclxuICAgICAgICAgIC9bMC0zXVswLTldXFwvWzAtMV1bMC05XVxcL1swLTldWzAtOV1bMC05XVswLTldIFswLTFdWzAtOV06WzAtNl1bMC05XSBbQSxQXU0vLnRlc3QodGhpcy5kYXRlVGltZUNvbnRyb2wudmFsdWUhKSB8fFxyXG4gICAgICAgICAgL1swLTNdWzAtOV1cXC9bMC0xXVswLTldXFwvWzAtOV1bMC05XVswLTldWzAtOV0vLnRlc3QodGhpcy5kYXRlVGltZUNvbnRyb2wudmFsdWUhLnN1YnN0cmluZygwLCAxMCkpXHJcbiAgICAgICAgKSB7XHJcbiAgICAgICAgICB0aGlzLmRhdGVDb250cm9sLnNldFZhbHVlKFxyXG4gICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgLi4udGhpcy5kYXRlQ29udHJvbC52YWx1ZSEsXHJcbiAgICAgICAgICAgICAgLi4ucmVzLFxyXG4gICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICB7IGVtaXRFdmVudDogZmFsc2UgfVxyXG4gICAgICAgICAgKTtcclxuICAgICAgICAgIHRyeSB7XHJcbiAgICAgICAgICAgIGNvbnN0IGlucHV0OiBhbnkgPSBuZXcgRGF0ZVRpbWVNb2RlbChPYmplY3QuYXNzaWduKHRoaXMuZGF0ZUNvbnRyb2wudmFsdWUsIHRoaXMuaG91cnNDb250cm9sLnZhbHVlKSk7XHJcblxyXG4gICAgICAgICAgICB0aGlzLmRhdGVUaW1lQ29udHJvbC5zZXRWYWx1ZSh0aGlzLl9kYXRlUGlwZS50cmFuc2Zvcm0oaW5wdXQsIHRoaXMuc3RyaW5nRm9ybWF0KSk7XHJcbiAgICAgICAgICB9IGZpbmFsbHkge1xyXG4gICAgICAgICAgICB0aGlzLm9uRW1pdCgpO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgfSk7XHJcbiAgICBlbHNlIGlmICh0aGlzLmZvcm1hdCA9PSAyNClcclxuICAgICAgdGhpcy5ob3Vyc0NvbnRyb2wudmFsdWVDaGFuZ2VzLnN1YnNjcmliZSgocmVzKSA9PiB7XHJcbiAgICAgICAgaWYgKFxyXG4gICAgICAgICAgL1swLTNdWzAtOV1cXC9bMC0xXVswLTldXFwvWzAtOV1bMC05XVswLTldWzAtOV0gWzAtMV1bMC05XTpbMC02XVswLTldLy50ZXN0KHRoaXMuZGF0ZVRpbWVDb250cm9sLnZhbHVlISkgfHxcclxuICAgICAgICAgIC9bMC0zXVswLTldXFwvWzAtMV1bMC05XVxcL1swLTldWzAtOV1bMC05XVswLTldLy50ZXN0KHRoaXMuZGF0ZVRpbWVDb250cm9sLnZhbHVlIS5zdWJzdHJpbmcoMCwgMTApKVxyXG4gICAgICAgICkge1xyXG4gICAgICAgICAgdGhpcy5kYXRlQ29udHJvbC5zZXRWYWx1ZShcclxuICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgIC4uLnRoaXMuZGF0ZUNvbnRyb2wudmFsdWUsXHJcbiAgICAgICAgICAgICAgLi4ucmVzLFxyXG4gICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICB7IGVtaXRFdmVudDogZmFsc2UgfVxyXG4gICAgICAgICAgKTtcclxuICAgICAgICAgIHRyeSB7XHJcbiAgICAgICAgICAgIGNvbnN0IGlucHV0OiBhbnkgPSBuZXcgRGF0ZVRpbWVNb2RlbChPYmplY3QuYXNzaWduKHRoaXMuZGF0ZUNvbnRyb2wudmFsdWUsIHRoaXMuaG91cnNDb250cm9sLnZhbHVlKSk7XHJcbiAgICAgICAgICAgIHRoaXMuZGF0ZVRpbWVDb250cm9sLnNldFZhbHVlKHRoaXMuX2RhdGVQaXBlLnRyYW5zZm9ybShpbnB1dCwgdGhpcy5zdHJpbmdGb3JtYXQpKTtcclxuICAgICAgICAgIH0gY2F0Y2ggKGVycm9yKSB7XHJcbiAgICAgICAgICAgIC8qIGNvbnNvbGUuZXJyb3IoZXJyb3IpICovXHJcbiAgICAgICAgICB9IGZpbmFsbHkge1xyXG4gICAgICAgICAgICB0aGlzLm9uRW1pdCgpO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgfSk7XHJcbiAgfVxyXG5cclxuICBvbkVtaXQgKGVtaXRWYWx1ZTogYW55ID0gbnVsbCkge1xyXG4gICAgdHJ5IHtcclxuICAgICAgY29uc3QgdmFsdWUgPSBuZXcgRGF0ZVRpbWVNb2RlbChPYmplY3QuYXNzaWduKHRoaXMuZGF0ZUNvbnRyb2wudmFsdWUsIHRoaXMuaG91cnNDb250cm9sLnZhbHVlKSk7XHJcbiAgICAgIGVtaXRWYWx1ZSA9IHRoaXMuX2RhdGVQaXBlLnRyYW5zZm9ybSh2YWx1ZS50b1N0cmluZygpLCBcInl5eXktTU0tZGRUSEg6bW1cIik7XHJcbiAgICB9IGNhdGNoIChlKSB7IH1cclxuICAgIHRoaXMub25DaGFuZ2UoZW1pdFZhbHVlKTtcclxuICAgIHRoaXMub25Ub3VjaCgpO1xyXG4gIH1cclxuXHJcbiAgZGF0ZUNoYW5nZSAoKSB7XHJcbiAgICBpZiAodGhpcy5mb3JtYXQgPT0gMTIpXHJcbiAgICAgIHRoaXMuZGF0ZUNvbnRyb2wudmFsdWVDaGFuZ2VzLnN1YnNjcmliZSgocmVzKSA9PiB7XHJcbiAgICAgICAgaWYgKFxyXG4gICAgICAgICAgL1swLTNdWzAtOV1cXC9bMC0xXVswLTldXFwvWzAtOV1bMC05XVswLTldWzAtOV0gWzAtMV1bMC05XTpbMC02XVswLTldIFtBLFBdTS8udGVzdCh0aGlzLmRhdGVUaW1lQ29udHJvbC52YWx1ZSEpIHx8XHJcbiAgICAgICAgICAvWzAtMV1bMC05XTpbMC02XVswLTldLy50ZXN0KHRoaXMuZGF0ZVRpbWVDb250cm9sLnZhbHVlIS5zdWJzdHJpbmcoMTEsIDE2KSlcclxuICAgICAgICApIHtcclxuICAgICAgICAgIHRoaXMuZGF0ZUNvbnRyb2wuc2V0VmFsdWUoXHJcbiAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICAuLi50aGlzLmhvdXJzQ29udHJvbC52YWx1ZSxcclxuICAgICAgICAgICAgICAuLi5yZXMsXHJcbiAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgIHsgZW1pdEV2ZW50OiBmYWxzZSB9XHJcbiAgICAgICAgICApO1xyXG5cclxuICAgICAgICAgIHRyeSB7XHJcbiAgICAgICAgICAgIGNvbnN0IGlucHV0OiBhbnkgPSBuZXcgRGF0ZVRpbWVNb2RlbChPYmplY3QuYXNzaWduKHRoaXMuZGF0ZUNvbnRyb2wudmFsdWUsIHRoaXMuaG91cnNDb250cm9sLnZhbHVlKSk7XHJcbiAgICAgICAgICAgIHRoaXMuZGF0ZVRpbWVDb250cm9sLnNldFZhbHVlKHRoaXMuX2RhdGVQaXBlLnRyYW5zZm9ybShpbnB1dCwgdGhpcy5zdHJpbmdGb3JtYXQpKTtcclxuICAgICAgICAgIH0gY2F0Y2ggKGVycm9yKSB7XHJcbiAgICAgICAgICB9IGZpbmFsbHkge1xyXG4gICAgICAgICAgICB0aGlzLm9uRW1pdCgpO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgfSk7XHJcbiAgICBlbHNlIGlmICh0aGlzLmZvcm1hdCA9PSAyNClcclxuICAgICAgdGhpcy5kYXRlQ29udHJvbC52YWx1ZUNoYW5nZXMuc3Vic2NyaWJlKChyZXMpID0+IHtcclxuICAgICAgICBpZiAoXHJcbiAgICAgICAgICAvWzAtM11bMC05XVxcL1swLTFdWzAtOV1cXC9bMC05XVswLTldWzAtOV1bMC05XSBbMC0xXVswLTldOlswLTZdWzAtOV0gW0EsUF1NLy50ZXN0KHRoaXMuZGF0ZVRpbWVDb250cm9sLnZhbHVlISkgfHxcclxuICAgICAgICAgIC9bMC0xXVswLTldOlswLTZdWzAtOV0vLnRlc3QodGhpcy5kYXRlVGltZUNvbnRyb2wudmFsdWUhLnN1YnN0cmluZygxMSwgMTYpKVxyXG4gICAgICAgICkge1xyXG4gICAgICAgICAgdGhpcy5kYXRlQ29udHJvbC5zZXRWYWx1ZShcclxuICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgIC4uLnRoaXMuaG91cnNDb250cm9sLnZhbHVlLFxyXG4gICAgICAgICAgICAgIC4uLnJlcyxcclxuICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgeyBlbWl0RXZlbnQ6IGZhbHNlIH1cclxuICAgICAgICAgICk7XHJcblxyXG4gICAgICAgICAgdHJ5IHtcclxuICAgICAgICAgICAgY29uc3QgaW5wdXQ6IGFueSA9IG5ldyBEYXRlVGltZU1vZGVsKE9iamVjdC5hc3NpZ24odGhpcy5kYXRlQ29udHJvbC52YWx1ZSwgdGhpcy5ob3Vyc0NvbnRyb2wudmFsdWUpKTtcclxuICAgICAgICAgICAgdGhpcy5kYXRlVGltZUNvbnRyb2wuc2V0VmFsdWUodGhpcy5fZGF0ZVBpcGUudHJhbnNmb3JtKGlucHV0LCB0aGlzLnN0cmluZ0Zvcm1hdCkpO1xyXG4gICAgICAgICAgfSBjYXRjaCAoZXJyb3IpIHtcclxuICAgICAgICAgIH0gZmluYWxseSB7XHJcbiAgICAgICAgICAgIHRoaXMub25FbWl0KCk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICB9KTtcclxuICB9XHJcblxyXG4gIG9uQmx1ciAoKTogdm9pZCB7XHJcbiAgICB0aGlzLm9uRW1pdCgpO1xyXG4gIH1cclxuXHJcbiAgZm9jdXNPdXRJbnB1dCAoKTogdm9pZCB7XHJcbiAgICBpZih0aGlzLmF1dG9Db21wbGV0ZSl7XHJcbiAgICAgIGNvbnN0IHZhbHVlID0gdGhpcy5kYXRlVGltZUNvbnRyb2wudmFsdWU7XHJcblxyXG4gICAgICBpZiAoKHZhbHVlICE9IE1BU0tfMTJfSE9VUlMgJiYgdGhpcy5mb3JtYXQgPT0gMTIpIHx8ICh2YWx1ZSAhPSBNQVNLXzI0X0hPVVJTICYmIHRoaXMuZm9ybWF0ID09IDI0KSkge1xyXG4gICAgICAgIGNvbnN0IGRpYSA9IHZhbHVlPy5zdWJzdHJpbmcoMCwgMik7XHJcbiAgICAgICAgY29uc3QgbWVzID0gdmFsdWU/LnN1YnN0cmluZygzLCA1KTtcclxuICAgICAgICBjb25zdCBhbmlvID0gdmFsdWU/LnN1YnN0cmluZyg2LCAxMCk7XHJcbiAgICAgICAgY29uc3QgaG9yYSA9IHZhbHVlPy5zdWJzdHJpbmcoMTEsIDEzKTtcclxuICAgICAgICBjb25zdCBtaW51dG9zID0gdmFsdWU/LnN1YnN0cmluZygxNCwgMTYpO1xyXG5cclxuICAgICAgICBpZiAoXHJcbiAgICAgICAgICBpc05hTihOdW1iZXIoZGlhKSkgfHxcclxuICAgICAgICAgIGRpYSA9PSBcIjAwXCIgfHxcclxuICAgICAgICAgIGlzTmFOKE51bWJlcihtZXMpKSB8fFxyXG4gICAgICAgICAgbWVzID09IFwiMDBcIiB8fFxyXG4gICAgICAgICAgaXNOYU4oTnVtYmVyKGFuaW8pKSB8fFxyXG4gICAgICAgICAgYW5pbyA9PSBcIjAwMDBcIiB8fFxyXG4gICAgICAgICAgaXNOYU4oTnVtYmVyKGhvcmEpKSB8fFxyXG4gICAgICAgICAgaXNOYU4oTnVtYmVyKG1pbnV0b3MpKVxyXG4gICAgICAgICkge1xyXG4gICAgICAgICAgdGhpcy5kYXRlQ29udHJvbC5zZXRWYWx1ZShcclxuICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgIHllYXI6IGlzTmFOKE51bWJlcihhbmlvKSkgfHwgYW5pbyA9PSBcIjAwMDBcIiA/IHRoaXMudG9kYXkueWVhciA6IE51bWJlcihhbmlvKSxcclxuICAgICAgICAgICAgICBtb250aDogaXNOYU4oTnVtYmVyKG1lcykpIHx8IG1lcyA9PSBcIjAwXCIgPyB0aGlzLnRvZGF5Lm1vbnRoIDogTnVtYmVyKG1lcyksXHJcbiAgICAgICAgICAgICAgZGF5OiBpc05hTihOdW1iZXIoZGlhKSkgfHwgZGlhID09IFwiMDBcIiA/IHRoaXMudG9kYXkuZGF5IDogTnVtYmVyKGRpYSksXHJcbiAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgIHsgZW1pdEV2ZW50OiBmYWxzZSB9XHJcbiAgICAgICAgICApO1xyXG4gICAgICAgICAgbGV0IGhvdXIgPSB0aGlzLmhvdXJzQ29udHJvbC52YWx1ZS5ob3VyO1xyXG4gICAgICAgICAgaWYgKGlzTmFOKE51bWJlcihob3JhKSkpIGhvdXIgPSB0aGlzLmF1dG9Db21wbGV0ZUhvdXJzID8gRGF0ZVV0aWwuZ2V0SG91cnMoRGF0ZVV0aWwubm93KFwiSVNPREFURVRJTUVfTk9fVElNRVpPTkVcIikpIDogMDtcclxuXHJcbiAgICAgICAgICBsZXQgbWludXRlID0gdGhpcy5ob3Vyc0NvbnRyb2wudmFsdWUubWludXRlO1xyXG4gICAgICAgICAgaWYgKGlzTmFOKE51bWJlcihtaW51dG9zKSkpIG1pbnV0ZSA9IHRoaXMuYXV0b0NvbXBsZXRlSG91cnMgPyBEYXRlVXRpbC5nZXRNaW51dGVzKERhdGVVdGlsLm5vdyhcIklTT0RBVEVUSU1FX05PX1RJTUVaT05FXCIpKSA6IDA7XHJcblxyXG4gICAgICAgICAgdGhpcy5ob3Vyc0NvbnRyb2wuc2V0VmFsdWUoXHJcbiAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICBob3VyLFxyXG4gICAgICAgICAgICAgIG1pbnV0ZSxcclxuICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgeyBlbWl0RXZlbnQ6IGZhbHNlIH1cclxuICAgICAgICAgICk7XHJcbiAgICAgICAgICBjb25zdCBpbnB1dDogYW55ID0gbmV3IERhdGVUaW1lTW9kZWwoT2JqZWN0LmFzc2lnbih0aGlzLmRhdGVDb250cm9sLnZhbHVlLCB0aGlzLmhvdXJzQ29udHJvbC52YWx1ZSkpO1xyXG4gICAgICAgICAgdHJ5IHtcclxuICAgICAgICAgICAgdGhpcy5kYXRlVGltZUNvbnRyb2wuc2V0VmFsdWUodGhpcy5fZGF0ZVBpcGUudHJhbnNmb3JtKGlucHV0LCB0aGlzLnN0cmluZ0Zvcm1hdCkpO1xyXG4gICAgICAgICAgfSBmaW5hbGx5IHtcclxuICAgICAgICAgICAgdGhpcy5vbkVtaXQoKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIHRoaXMuY29udGFkb3IgPSAwO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgb25LZXlVcCAoZTogYW55KTogdm9pZCB7XHJcbiAgICBjb25zdCBpbnB1dCA9IGUudGFyZ2V0O1xyXG5cclxuICAgIGlmICh0aGlzLmRpc2FibGVkKSByZXR1cm47XHJcblxyXG4gICAgaWYgKCFpc05hTihOdW1iZXIoZS5rZXkpKSAmJiBlLmtleS50cmltKCkgIT0gXCJcIikge1xyXG4gICAgICAvLz09PT09PT09PT09PT09PT09PT09PT09PT09PT09IERJQSA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XHJcbiAgICAgIGlmIChpbnB1dC5zZWxlY3Rpb25TdGFydCA9PSAwICYmIGlucHV0LnNlbGVjdGlvbkVuZCA9PSAyKSB7XHJcbiAgICAgICAgY29uc3QgdmFsb3JBY3R1YWw6IHN0cmluZyA9IHRoaXMuZGF0ZVRpbWVDb250cm9sLnZhbHVlITtcclxuICAgICAgICBjb25zdCBkaWFBY3R1YWw6IHN0cmluZyA9IHZhbG9yQWN0dWFsLnN1YnN0cmluZygwLCAyKTtcclxuXHJcbiAgICAgICAgaWYgKGRpYUFjdHVhbCA9PSBcImRkXCIpIHtcclxuICAgICAgICAgIGNvbnN0IG51ZXZvVmFsb3IgPSBgJHsgZS5rZXkucGFkU3RhcnQoMiwgMCkgfSR7IHZhbG9yQWN0dWFsLnN1YnN0cmluZygyKSB9YDtcclxuICAgICAgICAgIHRoaXMuZGF0ZVRpbWVDb250cm9sLnNldFZhbHVlKG51ZXZvVmFsb3IpO1xyXG4gICAgICAgICAgdGhpcy5kYXRlQ29udHJvbC5zZXRWYWx1ZSh7XHJcbiAgICAgICAgICAgIC4uLnRoaXMuZGF0ZUNvbnRyb2wudmFsdWUsXHJcbiAgICAgICAgICAgIGRheTogTnVtYmVyKHRoaXMuZGF0ZVRpbWVDb250cm9sLnZhbHVlIS5zdWJzdHJpbmcoMCwgMikpLFxyXG4gICAgICAgICAgfSk7XHJcbiAgICAgICAgICB0aGlzLmNvbnRhZG9yKys7XHJcbiAgICAgICAgICBpZiAoZS5rZXkgPiAzKSB7XHJcbiAgICAgICAgICAgIHRoaXMuY29udGFkb3IgPSAwO1xyXG4gICAgICAgICAgICBpbnB1dC5zZXRTZWxlY3Rpb25SYW5nZSgzLCA1KTtcclxuICAgICAgICAgICAgdGhpcy5vbkVtaXQoKTtcclxuICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgICAgfSBlbHNlIHRoaXMub25FbWl0KCk7XHJcbiAgICAgICAgfSBlbHNlIGlmIChOdW1iZXIoZGlhQWN0dWFsKSA8PSAzICYmIE51bWJlcihkaWFBY3R1YWwpID4gMCAmJiB0aGlzLmNvbnRhZG9yID4gMCkge1xyXG4gICAgICAgICAgY29uc3QgbnVldm9WYWxvciA9IGAkeyBOdW1iZXIoTnVtYmVyKGRpYUFjdHVhbCkudG9TdHJpbmcoKSArIE51bWJlcihlLmtleSkpID4gMzEgPyAzMSA6IE51bWJlcihkaWFBY3R1YWwpLnRvU3RyaW5nKCkgKyBOdW1iZXIoZS5rZXkpXHJcbiAgICAgICAgICAgIH0keyB2YWxvckFjdHVhbC5zdWJzdHJpbmcoMikgfWA7XHJcbiAgICAgICAgICB0aGlzLmRhdGVUaW1lQ29udHJvbC5zZXRWYWx1ZShudWV2b1ZhbG9yKTtcclxuICAgICAgICAgIHRoaXMuZGF0ZUNvbnRyb2wuc2V0VmFsdWUoe1xyXG4gICAgICAgICAgICAuLi50aGlzLmRhdGVDb250cm9sLnZhbHVlLFxyXG4gICAgICAgICAgICBkYXk6IE51bWJlcih0aGlzLmRhdGVUaW1lQ29udHJvbC52YWx1ZSEuc3Vic3RyaW5nKDAsIDIpKSxcclxuICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgdGhpcy5jb250YWRvcisrO1xyXG4gICAgICAgICAgdGhpcy5vbkVtaXQoKTtcclxuICAgICAgICAgIGlucHV0LnNldFNlbGVjdGlvblJhbmdlKDMsIDUpO1xyXG4gICAgICAgICAgdGhpcy5jb250YWRvciA9IDA7XHJcbiAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgIGNvbnN0IG51ZXZvVmFsb3IgPSBgJHsgZS5rZXkucGFkU3RhcnQoMiwgMCkgfSR7IHZhbG9yQWN0dWFsLnN1YnN0cmluZygyKSB9YDtcclxuICAgICAgICAgIHRoaXMuZGF0ZVRpbWVDb250cm9sLnNldFZhbHVlKG51ZXZvVmFsb3IpO1xyXG4gICAgICAgICAgdGhpcy5kYXRlQ29udHJvbC5zZXRWYWx1ZSh7XHJcbiAgICAgICAgICAgIC4uLnRoaXMuZGF0ZUNvbnRyb2wudmFsdWUsXHJcbiAgICAgICAgICAgIGRheTogTnVtYmVyKHRoaXMuZGF0ZVRpbWVDb250cm9sLnZhbHVlIS5zdWJzdHJpbmcoMCwgMikpLFxyXG4gICAgICAgICAgfSk7XHJcbiAgICAgICAgICB0aGlzLmNvbnRhZG9yKys7XHJcbiAgICAgICAgICBpZiAoTnVtYmVyKGUua2V5LnBhZFN0YXJ0KDIsIDApKSA+IDMgfHwgdGhpcy5jb250YWRvciA+IDEpIHtcclxuICAgICAgICAgICAgdGhpcy5jb250YWRvciA9IDA7XHJcbiAgICAgICAgICAgIGlucHV0LnNldFNlbGVjdGlvblJhbmdlKDMsIDUpO1xyXG4gICAgICAgICAgICB0aGlzLm9uRW1pdCgpO1xyXG4gICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgICB9IGVsc2UgdGhpcy5vbkVtaXQoKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgdGhpcy5vbkVtaXQoKTtcclxuICAgICAgICBpbnB1dC5zZXRTZWxlY3Rpb25SYW5nZSgwLCAyKTtcclxuICAgICAgfVxyXG4gICAgICAvLz09PT09PT09PT09PT09PT09PT09PT09PT09PT09IE1FUyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XHJcbiAgICAgIGVsc2UgaWYgKGlucHV0LnNlbGVjdGlvblN0YXJ0ID09IDMgJiYgaW5wdXQuc2VsZWN0aW9uRW5kID09IDUpIHtcclxuICAgICAgICBjb25zdCB2YWxvckFjdHVhbDogc3RyaW5nID0gdGhpcy5kYXRlVGltZUNvbnRyb2wudmFsdWUhO1xyXG4gICAgICAgIGNvbnN0IG1lc0FjdHVhbDogc3RyaW5nID0gdmFsb3JBY3R1YWwuc3Vic3RyaW5nKDMsIDUpO1xyXG5cclxuICAgICAgICBpZiAobWVzQWN0dWFsID09IFwibW1cIikge1xyXG4gICAgICAgICAgY29uc3QgbnVldm9WYWxvciA9IGAkeyB2YWxvckFjdHVhbC5zdWJzdHJpbmcoMCwgMykgfSR7IGUua2V5LnBhZFN0YXJ0KDIsIDApIH0keyB2YWxvckFjdHVhbC5zdWJzdHJpbmcoNSkgfWA7XHJcbiAgICAgICAgICB0aGlzLmRhdGVUaW1lQ29udHJvbC5zZXRWYWx1ZShudWV2b1ZhbG9yKTtcclxuICAgICAgICAgIHRoaXMuZGF0ZUNvbnRyb2wuc2V0VmFsdWUoe1xyXG4gICAgICAgICAgICAuLi50aGlzLmRhdGVDb250cm9sLnZhbHVlLFxyXG4gICAgICAgICAgICBtb250aDogTnVtYmVyKHRoaXMuZGF0ZVRpbWVDb250cm9sLnZhbHVlIS5zdWJzdHJpbmcoMywgNSkpLFxyXG4gICAgICAgICAgfSk7XHJcbiAgICAgICAgICB0aGlzLmNvbnRhZG9yKys7XHJcbiAgICAgICAgICBpZiAoZS5rZXkgPiAxKSB7XHJcbiAgICAgICAgICAgIHRoaXMub25FbWl0KCk7XHJcbiAgICAgICAgICAgIGlucHV0LnNldFNlbGVjdGlvblJhbmdlKDYsIDEwKTtcclxuICAgICAgICAgICAgdGhpcy5jb250YWRvciA9IDA7XHJcbiAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICAgIH0gZWxzZSB0aGlzLm9uRW1pdCgpO1xyXG4gICAgICAgIH0gZWxzZSBpZiAoTnVtYmVyKG1lc0FjdHVhbCkgPD0gMSAmJiBOdW1iZXIobWVzQWN0dWFsKSA+IDAgJiYgdGhpcy5jb250YWRvciA+IDApIHtcclxuICAgICAgICAgIGNvbnN0IG51ZXZvVmFsb3IgPSBgJHsgdmFsb3JBY3R1YWwuc3Vic3RyaW5nKDAsIDMpIH0keyBOdW1iZXIoTnVtYmVyKG1lc0FjdHVhbCkudG9TdHJpbmcoKSArIE51bWJlcihlLmtleSkpID4gMTIgPyAxMiA6IE51bWJlcihtZXNBY3R1YWwpLnRvU3RyaW5nKCkgKyBOdW1iZXIoZS5rZXkpXHJcbiAgICAgICAgICAgIH0keyB2YWxvckFjdHVhbC5zdWJzdHJpbmcoNSkgfWA7XHJcbiAgICAgICAgICB0aGlzLmRhdGVUaW1lQ29udHJvbC5zZXRWYWx1ZShudWV2b1ZhbG9yKTtcclxuICAgICAgICAgIHRoaXMuZGF0ZUNvbnRyb2wuc2V0VmFsdWUoe1xyXG4gICAgICAgICAgICAuLi50aGlzLmRhdGVDb250cm9sLnZhbHVlLFxyXG4gICAgICAgICAgICBtb250aDogTnVtYmVyKHRoaXMuZGF0ZVRpbWVDb250cm9sLnZhbHVlIS5zdWJzdHJpbmcoMywgNSkpLFxyXG4gICAgICAgICAgfSk7XHJcbiAgICAgICAgICB0aGlzLmNvbnRhZG9yKys7XHJcbiAgICAgICAgICB0aGlzLm9uRW1pdCgpO1xyXG4gICAgICAgICAgaW5wdXQuc2V0U2VsZWN0aW9uUmFuZ2UoNiwgMTApO1xyXG4gICAgICAgICAgdGhpcy5jb250YWRvciA9IDA7XHJcbiAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgIGNvbnN0IG51ZXZvVmFsb3IgPSBgJHsgdmFsb3JBY3R1YWwuc3Vic3RyaW5nKDAsIDMpIH0keyBlLmtleS5wYWRTdGFydCgyLCAwKSB9JHsgdmFsb3JBY3R1YWwuc3Vic3RyaW5nKDUpIH1gO1xyXG4gICAgICAgICAgdGhpcy5kYXRlVGltZUNvbnRyb2wuc2V0VmFsdWUobnVldm9WYWxvcik7XHJcbiAgICAgICAgICB0aGlzLmRhdGVDb250cm9sLnNldFZhbHVlKHtcclxuICAgICAgICAgICAgLi4udGhpcy5kYXRlQ29udHJvbC52YWx1ZSxcclxuICAgICAgICAgICAgbW9udGg6IE51bWJlcih0aGlzLmRhdGVUaW1lQ29udHJvbC52YWx1ZSEuc3Vic3RyaW5nKDMsIDUpKSxcclxuICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgdGhpcy5jb250YWRvcisrO1xyXG4gICAgICAgICAgaWYgKE51bWJlcihlLmtleS5wYWRTdGFydCgyLCAwKSkgPiAxIHx8IHRoaXMuY29udGFkb3IgPiAxKSB7XHJcbiAgICAgICAgICAgIHRoaXMub25FbWl0KCk7XHJcbiAgICAgICAgICAgIGlucHV0LnNldFNlbGVjdGlvblJhbmdlKDYsIDEwKTtcclxuICAgICAgICAgICAgdGhpcy5jb250YWRvciA9IDA7XHJcbiAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICAgIH0gZWxzZSB0aGlzLm9uRW1pdCgpO1xyXG4gICAgICAgIH1cclxuICAgICAgICB0aGlzLm9uRW1pdCgpO1xyXG4gICAgICAgIGlucHV0LnNldFNlbGVjdGlvblJhbmdlKDMsIDUpO1xyXG4gICAgICB9XHJcbiAgICAgIC8vPT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gQcORTyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XHJcbiAgICAgIGVsc2UgaWYgKGlucHV0LnNlbGVjdGlvblN0YXJ0ID09IDYgJiYgaW5wdXQuc2VsZWN0aW9uRW5kID09IDEwKSB7XHJcbiAgICAgICAgY29uc3QgdmFsb3JBY3R1YWw6IHN0cmluZyA9IHRoaXMuZGF0ZVRpbWVDb250cm9sLnZhbHVlITtcclxuICAgICAgICBjb25zdCBhbmlvQWN0dWFsOiBzdHJpbmcgPSB2YWxvckFjdHVhbC5zdWJzdHJpbmcoNiwgMTApO1xyXG4gICAgICAgIGlmIChhbmlvQWN0dWFsID09IFwieXl5eVwiKSB7XHJcbiAgICAgICAgICBjb25zdCBudWV2b1ZhbG9yID0gYCR7IHZhbG9yQWN0dWFsLnN1YnN0cmluZygwLCA2KSB9JHsgZS5rZXkucGFkU3RhcnQoNCwgMCkgfSR7IHZhbG9yQWN0dWFsLnN1YnN0cmluZygxMCkgfWA7XHJcbiAgICAgICAgICB0aGlzLmRhdGVUaW1lQ29udHJvbC5zZXRWYWx1ZShudWV2b1ZhbG9yKTtcclxuICAgICAgICAgIHRoaXMuZGF0ZUNvbnRyb2wuc2V0VmFsdWUoe1xyXG4gICAgICAgICAgICAuLi50aGlzLmRhdGVDb250cm9sLnZhbHVlLFxyXG4gICAgICAgICAgICB5ZWFyOiBOdW1iZXIodGhpcy5kYXRlVGltZUNvbnRyb2wudmFsdWUhLnN1YnN0cmluZyg2LCAxMCkpLFxyXG4gICAgICAgICAgfSk7XHJcbiAgICAgICAgICB0aGlzLmNvbnRhZG9yKys7XHJcbiAgICAgICAgICBpZiAoZS5rZXkgPiAyKSB7XHJcbiAgICAgICAgICAgIGNvbnN0IG51ZXZvVmFsb3IgPSBgJHsgdmFsb3JBY3R1YWwuc3Vic3RyaW5nKDAsIDYpIH0keyBEYXRlVXRpbC5nZXRZZWFyKERhdGVVdGlsLm5vdygpKSB9JHsgdmFsb3JBY3R1YWwuc3Vic3RyaW5nKDEwKSB9YDtcclxuICAgICAgICAgICAgdGhpcy5kYXRlVGltZUNvbnRyb2wuc2V0VmFsdWUobnVldm9WYWxvcik7XHJcbiAgICAgICAgICAgIHRoaXMuZGF0ZUNvbnRyb2wuc2V0VmFsdWUoe1xyXG4gICAgICAgICAgICAgIC4uLnRoaXMuZGF0ZUNvbnRyb2wudmFsdWUsXHJcbiAgICAgICAgICAgICAgeWVhcjogTnVtYmVyKHRoaXMuZGF0ZVRpbWVDb250cm9sLnZhbHVlIS5zdWJzdHJpbmcoNiwgMTApKSxcclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgIHRoaXMub25FbWl0KCk7XHJcbiAgICAgICAgICAgIGlucHV0LnNldFNlbGVjdGlvblJhbmdlKDExLCAxMyk7XHJcbiAgICAgICAgICAgIHRoaXMuY29udGFkb3IgPSAwO1xyXG4gICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgICB9IGVsc2UgdGhpcy5vbkVtaXQoKTtcclxuICAgICAgICB9IGVsc2UgaWYgKE51bWJlcihhbmlvQWN0dWFsKSA8PSAyOTk5ICYmIE51bWJlcihhbmlvQWN0dWFsKSA+IDApIHtcclxuICAgICAgICAgIGxldCBudWV2b1ZhbG9yO1xyXG4gICAgICAgICAgdGhpcy5jb250YWRvcisrO1xyXG4gICAgICAgICAgaWYgKE51bWJlcihhbmlvQWN0dWFsKSA+PSAxMDAwKSB7XHJcbiAgICAgICAgICAgIG51ZXZvVmFsb3IgPSBgJHsgdmFsb3JBY3R1YWwuc3Vic3RyaW5nKDAsIDYpIH0keyBOdW1iZXIoZS5rZXkpLnRvU3RyaW5nKCkucGFkU3RhcnQoNCwgXCIwXCIpIH0keyB2YWxvckFjdHVhbC5zdWJzdHJpbmcoMTApIH1gO1xyXG4gICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgbnVldm9WYWxvciA9IGAkeyB2YWxvckFjdHVhbC5zdWJzdHJpbmcoMCwgNikgfSR7IChOdW1iZXIoYW5pb0FjdHVhbCkudG9TdHJpbmcoKSArIE51bWJlcihlLmtleSkpLnBhZFN0YXJ0KFxyXG4gICAgICAgICAgICAgIDQsXHJcbiAgICAgICAgICAgICAgXCIwXCJcclxuICAgICAgICAgICAgKSB9JHsgdmFsb3JBY3R1YWwuc3Vic3RyaW5nKDEwKSB9YDtcclxuICAgICAgICAgICAgdGhpcy5kYXRlVGltZUNvbnRyb2wuc2V0VmFsdWUobnVldm9WYWxvcik7XHJcbiAgICAgICAgICAgIHRoaXMuZGF0ZUNvbnRyb2wuc2V0VmFsdWUoe1xyXG4gICAgICAgICAgICAgIC4uLnRoaXMuZGF0ZUNvbnRyb2wudmFsdWUsXHJcbiAgICAgICAgICAgICAgeWVhcjogTnVtYmVyKHRoaXMuZGF0ZVRpbWVDb250cm9sLnZhbHVlIS5zdWJzdHJpbmcoNiwgMTApKSxcclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgIGlmIChcclxuICAgICAgICAgICAgICBOdW1iZXIoTnVtYmVyKGFuaW9BY3R1YWwpLnRvU3RyaW5nKCkgKyBOdW1iZXIoZS5rZXkpKSA+IDEwMDAgJiZcclxuICAgICAgICAgICAgICBOdW1iZXIoTnVtYmVyKGFuaW9BY3R1YWwpLnRvU3RyaW5nKCkgKyBOdW1iZXIoZS5rZXkpKSA8IDMwMDBcclxuICAgICAgICAgICAgKSB7XHJcbiAgICAgICAgICAgICAgdGhpcy5vbkVtaXQoKTtcclxuICAgICAgICAgICAgICBpbnB1dC5zZXRTZWxlY3Rpb25SYW5nZSgxMSwgMTMpO1xyXG4gICAgICAgICAgICAgIHRoaXMuY29udGFkb3IgPSAwO1xyXG4gICAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICAgICAgfSBlbHNlIGlmIChOdW1iZXIoTnVtYmVyKGFuaW9BY3R1YWwpLnRvU3RyaW5nKCkgKyBOdW1iZXIoZS5rZXkpKSA+IDI5OTkpIHtcclxuICAgICAgICAgICAgICBudWV2b1ZhbG9yID0gYCR7IHZhbG9yQWN0dWFsLnN1YnN0cmluZygwLCA2KSB9JHsgRGF0ZVV0aWwuZ2V0WWVhcihEYXRlVXRpbC5ub3coKSkgfSR7IHZhbG9yQWN0dWFsLnN1YnN0cmluZygxMCkgfWA7XHJcbiAgICAgICAgICAgICAgdGhpcy5kYXRlVGltZUNvbnRyb2wuc2V0VmFsdWUobnVldm9WYWxvcik7XHJcbiAgICAgICAgICAgICAgdGhpcy5kYXRlQ29udHJvbC5zZXRWYWx1ZSh7XHJcbiAgICAgICAgICAgICAgICAuLi50aGlzLmRhdGVDb250cm9sLnZhbHVlLFxyXG4gICAgICAgICAgICAgICAgeWVhcjogTnVtYmVyKHRoaXMuZGF0ZVRpbWVDb250cm9sLnZhbHVlIS5zdWJzdHJpbmcoNiwgMTApKSxcclxuICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgICB0aGlzLm9uRW1pdCgpO1xyXG4gICAgICAgICAgICAgIGlucHV0LnNldFNlbGVjdGlvblJhbmdlKDExLCAxMyk7XHJcbiAgICAgICAgICAgICAgdGhpcy5jb250YWRvciA9IDA7XHJcbiAgICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICB0aGlzLmRhdGVUaW1lQ29udHJvbC5zZXRWYWx1ZShudWV2b1ZhbG9yKTtcclxuICAgICAgICAgIHRoaXMuZGF0ZUNvbnRyb2wuc2V0VmFsdWUoe1xyXG4gICAgICAgICAgICAuLi50aGlzLmRhdGVDb250cm9sLnZhbHVlLFxyXG4gICAgICAgICAgICB5ZWFyOiBOdW1iZXIodGhpcy5kYXRlVGltZUNvbnRyb2wudmFsdWUhLnN1YnN0cmluZyg2LCAxMCkpLFxyXG4gICAgICAgICAgfSk7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgIGNvbnN0IG51ZXZvVmFsb3IgPSBgJHsgdmFsb3JBY3R1YWwuc3Vic3RyaW5nKDAsIDYpIH0keyBlLmtleS5wYWRTdGFydCg0LCAwKSB9JHsgdmFsb3JBY3R1YWwuc3Vic3RyaW5nKDEwKSB9YDtcclxuICAgICAgICAgIHRoaXMuZGF0ZVRpbWVDb250cm9sLnNldFZhbHVlKG51ZXZvVmFsb3IpO1xyXG4gICAgICAgICAgdGhpcy5kYXRlQ29udHJvbC5zZXRWYWx1ZSh7XHJcbiAgICAgICAgICAgIC4uLnRoaXMuZGF0ZUNvbnRyb2wudmFsdWUsXHJcbiAgICAgICAgICAgIHllYXI6IE51bWJlcih0aGlzLmRhdGVUaW1lQ29udHJvbC52YWx1ZSEuc3Vic3RyaW5nKDYsIDEwKSksXHJcbiAgICAgICAgICB9KTtcclxuICAgICAgICB9XHJcbiAgICAgICAgdGhpcy5jb250YWRvcisrO1xyXG4gICAgICAgIHRoaXMub25FbWl0KCk7XHJcbiAgICAgICAgaW5wdXQuc2V0U2VsZWN0aW9uUmFuZ2UoNiwgMTApO1xyXG4gICAgICB9XHJcbiAgICAgIC8vPT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gSE9SQSA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cclxuICAgICAgZWxzZSBpZiAoaW5wdXQuc2VsZWN0aW9uU3RhcnQgPT0gMTEgJiYgaW5wdXQuc2VsZWN0aW9uRW5kID09IDEzKSB7XHJcbiAgICAgICAgY29uc3QgdmFsb3JBY3R1YWw6IHN0cmluZyA9IHRoaXMuZGF0ZVRpbWVDb250cm9sLnZhbHVlITtcclxuICAgICAgICBjb25zdCBob3JhQWN0dWFsOiBzdHJpbmcgPSB2YWxvckFjdHVhbC5zdWJzdHJpbmcoMTEsIDEzKTtcclxuXHJcbiAgICAgICAgaWYgKGhvcmFBY3R1YWwgPT0gXCItLVwiKSB7XHJcbiAgICAgICAgICBjb25zdCBudWV2b1ZhbG9yID0gYCR7IHZhbG9yQWN0dWFsLnN1YnN0cmluZygwLCAxMSkgfSR7IGUua2V5LnBhZFN0YXJ0KDIsIDApIH0keyB2YWxvckFjdHVhbC5zdWJzdHJpbmcoMTMpIH1gO1xyXG4gICAgICAgICAgdGhpcy5kYXRlVGltZUNvbnRyb2wuc2V0VmFsdWUobnVldm9WYWxvcik7XHJcbiAgICAgICAgICAvLz09PT09PT09PT09IEZPUk1BVE8gMTIgSE9SQVM9PT09PT09PT09PVxyXG4gICAgICAgICAgaWYgKHRoaXMuZm9ybWF0ID09IDEyKVxyXG4gICAgICAgICAgICB0aGlzLmhvdXJzQ29udHJvbC5zZXRWYWx1ZSh7XHJcbiAgICAgICAgICAgICAgLi4udGhpcy5ob3Vyc0NvbnRyb2wudmFsdWUsXHJcbiAgICAgICAgICAgICAgaG91cjogL1swLTFdWzAtOV06WzAtNl1bMC05XSBbQSxQXU0vLnRlc3QodGhpcy5kYXRlVGltZUNvbnRyb2wudmFsdWUhLnN1YnN0cmluZygxMSkpXHJcbiAgICAgICAgICAgICAgICA/IE51bWJlcih0aGlzLl9kYXRlUGlwZS50cmFuc2Zvcm0oYDAxLzAxLzIwMjAgJHsgdGhpcy5kYXRlVGltZUNvbnRyb2wudmFsdWUhLnN1YnN0cmluZygxMSkgfWAsIFwiSEhcIikpXHJcbiAgICAgICAgICAgICAgICA6IE51bWJlcih0aGlzLmRhdGVUaW1lQ29udHJvbC52YWx1ZSEuc3Vic3RyaW5nKDExLCAxMykpLFxyXG4gICAgICAgICAgICAgIG1pbnV0ZTogdGhpcy5kYXRlVGltZUNvbnRyb2wudmFsdWUhLnN1YnN0cmluZygxNCwgMTYpID09IFwiLS1cIiA/IDAgOiB0aGlzLmhvdXJzQ29udHJvbC52YWx1ZS5taW51dGUsXHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgLy89PT09PT09PT09PSBGT1JNQVRPIDI0IEhPUkFTPT09PT09PT09PT1cclxuICAgICAgICAgIGVsc2VcclxuICAgICAgICAgICAgdGhpcy5ob3Vyc0NvbnRyb2wuc2V0VmFsdWUoe1xyXG4gICAgICAgICAgICAgIC4uLnRoaXMuaG91cnNDb250cm9sLnZhbHVlLFxyXG4gICAgICAgICAgICAgIGhvdXI6IC9bMC0xXVswLTldOlswLTZdWzAtOV0vLnRlc3QodGhpcy5kYXRlVGltZUNvbnRyb2wudmFsdWUhLnN1YnN0cmluZygxMSkpXHJcbiAgICAgICAgICAgICAgICA/IE51bWJlcih0aGlzLl9kYXRlUGlwZS50cmFuc2Zvcm0oYDAxLzAxLzIwMjAgJHsgdGhpcy5kYXRlVGltZUNvbnRyb2wudmFsdWUhLnN1YnN0cmluZygxMSkgfWAsIFwiSEhcIikpXHJcbiAgICAgICAgICAgICAgICA6IE51bWJlcih0aGlzLmRhdGVUaW1lQ29udHJvbC52YWx1ZSEuc3Vic3RyaW5nKDExLCAxMykpLFxyXG4gICAgICAgICAgICAgIG1pbnV0ZTogdGhpcy5kYXRlVGltZUNvbnRyb2wudmFsdWUhLnN1YnN0cmluZygxNCwgMTYpID09IFwiMDBcIiA/IDAgOiB0aGlzLmhvdXJzQ29udHJvbC52YWx1ZS5taW51dGUsXHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgdGhpcy5jb250YWRvcisrO1xyXG4gICAgICAgICAgaWYgKGUua2V5ID4gMSAmJiB0aGlzLmZvcm1hdCA9PSAxMikge1xyXG4gICAgICAgICAgICB0aGlzLm9uRW1pdCgpO1xyXG4gICAgICAgICAgICBpbnB1dC5zZXRTZWxlY3Rpb25SYW5nZSgxNCwgMTYpO1xyXG4gICAgICAgICAgICB0aGlzLmNvbnRhZG9yID0gMDtcclxuICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgICAgfSBlbHNlIGlmIChlLmtleSA+IDIgJiYgdGhpcy5mb3JtYXQgPT0gMjQpIHtcclxuICAgICAgICAgICAgdGhpcy5vbkVtaXQoKTtcclxuICAgICAgICAgICAgaW5wdXQuc2V0U2VsZWN0aW9uUmFuZ2UoMTQsIDE2KTtcclxuICAgICAgICAgICAgdGhpcy5jb250YWRvciA9IDA7XHJcbiAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICAgIH0gZWxzZSB0aGlzLm9uRW1pdCgpO1xyXG4gICAgICAgIH0gZWxzZSBpZiAoTnVtYmVyKGhvcmFBY3R1YWwpIDw9IDEgJiYgTnVtYmVyKGhvcmFBY3R1YWwpID4gMCAmJiB0aGlzLmNvbnRhZG9yID4gMCAmJiB0aGlzLmZvcm1hdCA9PSAxMikge1xyXG4gICAgICAgICAgY29uc3QgbnVldm9WYWxvciA9IGAkeyB2YWxvckFjdHVhbC5zdWJzdHJpbmcoMCwgMTEpIH0keyBOdW1iZXIoTnVtYmVyKGhvcmFBY3R1YWwpLnRvU3RyaW5nKCkgKyBOdW1iZXIoZS5rZXkpKSA+IDEyID8gMTIgOiBOdW1iZXIoaG9yYUFjdHVhbCkudG9TdHJpbmcoKSArIE51bWJlcihlLmtleSlcclxuICAgICAgICAgICAgfSR7IHZhbG9yQWN0dWFsLnN1YnN0cmluZygxMykgfWA7XHJcbiAgICAgICAgICB0aGlzLmRhdGVUaW1lQ29udHJvbC5zZXRWYWx1ZShudWV2b1ZhbG9yKTtcclxuICAgICAgICAgIHRoaXMuaG91cnNDb250cm9sLnNldFZhbHVlKHtcclxuICAgICAgICAgICAgLi4udGhpcy5ob3Vyc0NvbnRyb2wudmFsdWUsXHJcbiAgICAgICAgICAgIGhvdXI6IC9bMC0xXVswLTldOlswLTZdWzAtOV0gW0EsUF1NLy50ZXN0KHRoaXMuZGF0ZVRpbWVDb250cm9sLnZhbHVlIS5zdWJzdHJpbmcoMTEpKVxyXG4gICAgICAgICAgICAgID8gTnVtYmVyKHRoaXMuX2RhdGVQaXBlLnRyYW5zZm9ybShgMDEvMDEvMjAyMCAkeyB0aGlzLmRhdGVUaW1lQ29udHJvbC52YWx1ZSEuc3Vic3RyaW5nKDExKSB9YCwgXCJISFwiKSlcclxuICAgICAgICAgICAgICA6IE51bWJlcih0aGlzLmRhdGVUaW1lQ29udHJvbC52YWx1ZSEuc3Vic3RyaW5nKDExLCAxMykpLFxyXG4gICAgICAgICAgICBtaW51dGU6IHRoaXMuZGF0ZVRpbWVDb250cm9sLnZhbHVlIS5zdWJzdHJpbmcoMTQsIDE2KSA9PSBcIjAwXCIgPyAwIDogdGhpcy5ob3Vyc0NvbnRyb2wudmFsdWUubWludXRlLFxyXG4gICAgICAgICAgfSk7XHJcbiAgICAgICAgICB0aGlzLmNvbnRhZG9yKys7XHJcbiAgICAgICAgICB0aGlzLm9uRW1pdCgpO1xyXG4gICAgICAgICAgaW5wdXQuc2V0U2VsZWN0aW9uUmFuZ2UoMTQsIDE2KTtcclxuICAgICAgICAgIHRoaXMuY29udGFkb3IgPSAwO1xyXG4gICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIH0gZWxzZSBpZiAoTnVtYmVyKGhvcmFBY3R1YWwpIDw9IDIgJiYgTnVtYmVyKGhvcmFBY3R1YWwpID4gMCAmJiB0aGlzLmNvbnRhZG9yID4gMCAmJiB0aGlzLmZvcm1hdCA9PSAyNCkge1xyXG4gICAgICAgICAgY29uc3QgbnVldm9WYWxvciA9IGAkeyB2YWxvckFjdHVhbC5zdWJzdHJpbmcoMCwgMTEpIH0keyBOdW1iZXIoTnVtYmVyKGhvcmFBY3R1YWwpLnRvU3RyaW5nKCkgKyBOdW1iZXIoZS5rZXkpKSA+IDI0ID8gMjQgOiBOdW1iZXIoaG9yYUFjdHVhbCkudG9TdHJpbmcoKSArIE51bWJlcihlLmtleSlcclxuICAgICAgICAgICAgfSR7IHZhbG9yQWN0dWFsLnN1YnN0cmluZygxMykgfWA7XHJcbiAgICAgICAgICB0aGlzLmRhdGVUaW1lQ29udHJvbC5zZXRWYWx1ZShudWV2b1ZhbG9yKTtcclxuICAgICAgICAgIGxldCBob3VyO1xyXG4gICAgICAgICAgdHJ5IHtcclxuICAgICAgICAgICAgaG91ciA9IC9bMC0xXVswLTldOlswLTZdWzAtOV0vLnRlc3QodGhpcy5kYXRlVGltZUNvbnRyb2wudmFsdWUhLnN1YnN0cmluZygxMSkpXHJcbiAgICAgICAgICAgICAgPyBOdW1iZXIodGhpcy5fZGF0ZVBpcGUudHJhbnNmb3JtKGAwMS8wMS8yMDIwICR7IHRoaXMuZGF0ZVRpbWVDb250cm9sLnZhbHVlIS5zdWJzdHJpbmcoMTEpIH1gLCBcIkhIXCIpKVxyXG4gICAgICAgICAgICAgIDogTnVtYmVyKHRoaXMuZGF0ZVRpbWVDb250cm9sLnZhbHVlIS5zdWJzdHJpbmcoMTEsIDEzKSk7XHJcbiAgICAgICAgICB9IGNhdGNoIChlcnJvcikge1xyXG4gICAgICAgICAgICBob3VyID0gTnVtYmVyKHRoaXMuZGF0ZVRpbWVDb250cm9sLnZhbHVlIS5zdWJzdHJpbmcoMTEsIDEzKSk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICB0aGlzLmhvdXJzQ29udHJvbC5zZXRWYWx1ZSh7XHJcbiAgICAgICAgICAgIC4uLnRoaXMuaG91cnNDb250cm9sLnZhbHVlLFxyXG4gICAgICAgICAgICBob3VyLFxyXG4gICAgICAgICAgICBtaW51dGU6IHRoaXMuZGF0ZVRpbWVDb250cm9sLnZhbHVlIS5zdWJzdHJpbmcoMTQsIDE2KSA9PSBcIjAwXCIgPyAwIDogdGhpcy5ob3Vyc0NvbnRyb2wudmFsdWUubWludXRlLFxyXG4gICAgICAgICAgfSk7XHJcbiAgICAgICAgICB0aGlzLmNvbnRhZG9yKys7XHJcbiAgICAgICAgICB0aGlzLm9uRW1pdCgpO1xyXG4gICAgICAgICAgaW5wdXQuc2V0U2VsZWN0aW9uUmFuZ2UoMTQsIDE2KTtcclxuICAgICAgICAgIHRoaXMuY29udGFkb3IgPSAwO1xyXG4gICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICBjb25zdCBudWV2b1ZhbG9yID0gYCR7IHZhbG9yQWN0dWFsLnN1YnN0cmluZygwLCAxMSkgfSR7IGUua2V5LnBhZFN0YXJ0KDIsIDApIH0keyB2YWxvckFjdHVhbC5zdWJzdHJpbmcoMTMpIH1gO1xyXG4gICAgICAgICAgdGhpcy5kYXRlVGltZUNvbnRyb2wuc2V0VmFsdWUobnVldm9WYWxvcik7XHJcbiAgICAgICAgICBjb25zdCByZWdleCA9IHRoaXMuZm9ybWF0ID09IDEyID8gL1swLTFdWzAtOV06WzAtNl1bMC05XSBbQSxQXU0vIDogL1swLTFdWzAtOV06WzAtNl1bMC05XS87XHJcblxyXG4gICAgICAgICAgdGhpcy5ob3Vyc0NvbnRyb2wuc2V0VmFsdWUoe1xyXG4gICAgICAgICAgICAuLi50aGlzLmhvdXJzQ29udHJvbC52YWx1ZSxcclxuICAgICAgICAgICAgaG91cjogcmVnZXgudGVzdCh0aGlzLmRhdGVUaW1lQ29udHJvbC52YWx1ZSEuc3Vic3RyaW5nKDExKSlcclxuICAgICAgICAgICAgICA/IE51bWJlcih0aGlzLl9kYXRlUGlwZS50cmFuc2Zvcm0oYDAxLzAxLzIwMjAgJHsgdGhpcy5kYXRlVGltZUNvbnRyb2wudmFsdWUhLnN1YnN0cmluZygxMSkgfWAsIFwiSEhcIikpXHJcbiAgICAgICAgICAgICAgOiBOdW1iZXIodGhpcy5kYXRlVGltZUNvbnRyb2wudmFsdWUhLnN1YnN0cmluZygxMSwgMTMpKSxcclxuICAgICAgICAgICAgbWludXRlOlxyXG4gICAgICAgICAgICAgIHRoaXMuZGF0ZVRpbWVDb250cm9sLnZhbHVlIS5zdWJzdHJpbmcoMTQsIDE2KSA9PSBcIjAwXCIgfHwgdGhpcy5kYXRlVGltZUNvbnRyb2wudmFsdWUhLnN1YnN0cmluZygxNCwgMTYpID09IFwiLS1cIlxyXG4gICAgICAgICAgICAgICAgPyAwXHJcbiAgICAgICAgICAgICAgICA6IHRoaXMuaG91cnNDb250cm9sLnZhbHVlLm1pbnV0ZSxcclxuICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgdGhpcy5jb250YWRvcisrO1xyXG4gICAgICAgICAgaWYgKChOdW1iZXIoZS5rZXkucGFkU3RhcnQoMiwgMCkpID4gMSB8fCB0aGlzLmNvbnRhZG9yID4gMSkgJiYgdGhpcy5mb3JtYXQgPT0gMTIpIHtcclxuICAgICAgICAgICAgdGhpcy5vbkVtaXQoKTtcclxuICAgICAgICAgICAgaW5wdXQuc2V0U2VsZWN0aW9uUmFuZ2UoMTQsIDE2KTtcclxuICAgICAgICAgICAgdGhpcy5jb250YWRvciA9IDA7XHJcbiAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICAgIH0gZWxzZSBpZiAoKE51bWJlcihlLmtleS5wYWRTdGFydCgyLCAwKSkgPiAyIHx8IHRoaXMuY29udGFkb3IgPiAxKSAmJiB0aGlzLmZvcm1hdCA9PSAyNCkge1xyXG4gICAgICAgICAgICB0aGlzLm9uRW1pdCgpO1xyXG4gICAgICAgICAgICBpbnB1dC5zZXRTZWxlY3Rpb25SYW5nZSgxNCwgMTYpO1xyXG4gICAgICAgICAgICB0aGlzLmNvbnRhZG9yID0gMDtcclxuICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgICAgfSBlbHNlIHRoaXMub25FbWl0KCk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHRoaXMub25FbWl0KCk7XHJcbiAgICAgICAgaW5wdXQuc2V0U2VsZWN0aW9uUmFuZ2UoMTEsIDEzKTtcclxuICAgICAgfVxyXG4gICAgICAvLz09PT09PT09PT09PT09PT09PT09PT09PT09PT0gTUlOVVRPUyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XHJcbiAgICAgIGVsc2UgaWYgKGlucHV0LnNlbGVjdGlvblN0YXJ0ID09IDE0ICYmIGlucHV0LnNlbGVjdGlvbkVuZCA9PSAxNikge1xyXG4gICAgICAgIGNvbnN0IHZhbG9yQWN0dWFsOiBzdHJpbmcgPSB0aGlzLmRhdGVUaW1lQ29udHJvbC52YWx1ZSE7XHJcbiAgICAgICAgY29uc3QgbWludXRvc0FjdHVhbGVzOiBzdHJpbmcgPSB2YWxvckFjdHVhbC5zdWJzdHJpbmcoMTQsIDE2KTtcclxuICAgICAgICBpZiAobWludXRvc0FjdHVhbGVzID09IFwiLS1cIikge1xyXG4gICAgICAgICAgY29uc3QgbnVldm9WYWxvciA9IGAkeyB2YWxvckFjdHVhbC5zdWJzdHJpbmcoMCwgMTQpIH0keyBlLmtleS5wYWRTdGFydCgyLCAwKSB9JHsgdmFsb3JBY3R1YWwuc3Vic3RyaW5nKDE2KSB9YDtcclxuICAgICAgICAgIHRoaXMuZGF0ZVRpbWVDb250cm9sLnNldFZhbHVlKG51ZXZvVmFsb3IpO1xyXG4gICAgICAgICAgdGhpcy5ob3Vyc0NvbnRyb2wuc2V0VmFsdWUoe1xyXG4gICAgICAgICAgICAuLi50aGlzLmhvdXJzQ29udHJvbC52YWx1ZSxcclxuICAgICAgICAgICAgbWludXRlOiAvWzAtMV1bMC05XTpbMC02XVswLTldIFtBLFBdTS8udGVzdCh0aGlzLmRhdGVUaW1lQ29udHJvbC52YWx1ZSEuc3Vic3RyaW5nKDExKSlcclxuICAgICAgICAgICAgICA/IE51bWJlcih0aGlzLl9kYXRlUGlwZS50cmFuc2Zvcm0oYDAxLzAxLzIwMjAgJHsgdGhpcy5kYXRlVGltZUNvbnRyb2wudmFsdWUhLnN1YnN0cmluZygxMSkgfWAsIFwibW1cIikpXHJcbiAgICAgICAgICAgICAgOiBOdW1iZXIodGhpcy5kYXRlVGltZUNvbnRyb2wudmFsdWUhLnN1YnN0cmluZygxNCwgMTYpKSxcclxuICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgdGhpcy5jb250YWRvcisrO1xyXG4gICAgICAgICAgaWYgKGUua2V5ID4gNSkge1xyXG4gICAgICAgICAgICB0aGlzLm9uRW1pdCgpO1xyXG4gICAgICAgICAgICBpZiAodGhpcy5mb3JtYXQgPT0gMTIpIGlucHV0LnNldFNlbGVjdGlvblJhbmdlKDE3LCAxOSk7XHJcbiAgICAgICAgICAgIGVsc2UgaW5wdXQuc2V0U2VsZWN0aW9uUmFuZ2UoMTQsIDE2KTtcclxuICAgICAgICAgICAgdGhpcy5jb250YWRvciA9IDA7XHJcbiAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICAgIH0gZWxzZSB0aGlzLm9uRW1pdCgpO1xyXG4gICAgICAgIH0gZWxzZSBpZiAoTnVtYmVyKG1pbnV0b3NBY3R1YWxlcykgPD0gNSAmJiBOdW1iZXIobWludXRvc0FjdHVhbGVzKSA+IDAgJiYgdGhpcy5jb250YWRvciA+IDApIHtcclxuICAgICAgICAgIGNvbnN0IG51ZXZvVmFsb3IgPSBgJHsgdmFsb3JBY3R1YWwuc3Vic3RyaW5nKDAsIDE0KSB9JHsgTnVtYmVyKE51bWJlcihtaW51dG9zQWN0dWFsZXMpLnRvU3RyaW5nKCkgKyBOdW1iZXIoZS5rZXkpKSA+IDU5ID8gNTkgOiBOdW1iZXIobWludXRvc0FjdHVhbGVzKS50b1N0cmluZygpICsgTnVtYmVyKGUua2V5KVxyXG4gICAgICAgICAgICB9JHsgdmFsb3JBY3R1YWwuc3Vic3RyaW5nKDE2KSB9YDtcclxuICAgICAgICAgIHRoaXMuZGF0ZVRpbWVDb250cm9sLnNldFZhbHVlKG51ZXZvVmFsb3IpO1xyXG4gICAgICAgICAgbGV0IG1pbnV0ZTtcclxuICAgICAgICAgIGNvbnN0IHJlZ2V4ID0gdGhpcy5mb3JtYXQgPT0gMTIgPyAvWzAtMV1bMC05XTpbMC02XVswLTldIFtBLFBdTS8gOiAvWzAtMV1bMC05XTpbMC02XVswLTldLztcclxuICAgICAgICAgIHRyeSB7XHJcbiAgICAgICAgICAgIG1pbnV0ZSA9IHJlZ2V4LnRlc3QodGhpcy5kYXRlVGltZUNvbnRyb2wudmFsdWUhLnN1YnN0cmluZygxMSkpXHJcbiAgICAgICAgICAgICAgPyBOdW1iZXIodGhpcy5fZGF0ZVBpcGUudHJhbnNmb3JtKGAwMS8wMS8yMDIwICR7IHRoaXMuZGF0ZVRpbWVDb250cm9sLnZhbHVlIS5zdWJzdHJpbmcoMTEpIH1gLCBcIm1tXCIpKVxyXG4gICAgICAgICAgICAgIDogTnVtYmVyKHRoaXMuZGF0ZVRpbWVDb250cm9sLnZhbHVlIS5zdWJzdHJpbmcoMTQsIDE2KSk7XHJcbiAgICAgICAgICB9IGNhdGNoIChlcnJvcikge1xyXG4gICAgICAgICAgICBtaW51dGUgPSBOdW1iZXIodGhpcy5kYXRlVGltZUNvbnRyb2wudmFsdWUhLnN1YnN0cmluZygxNCwgMTYpKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIHRoaXMuaG91cnNDb250cm9sLnNldFZhbHVlKHtcclxuICAgICAgICAgICAgLi4udGhpcy5ob3Vyc0NvbnRyb2wudmFsdWUsXHJcbiAgICAgICAgICAgIG1pbnV0ZSxcclxuICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgdGhpcy5jb250YWRvcisrO1xyXG4gICAgICAgICAgdGhpcy5vbkVtaXQoKTtcclxuICAgICAgICAgIGlmICh0aGlzLmZvcm1hdCA9PSAxMikgaW5wdXQuc2V0U2VsZWN0aW9uUmFuZ2UoMTcsIDE5KTtcclxuICAgICAgICAgIGVsc2UgaW5wdXQuc2V0U2VsZWN0aW9uUmFuZ2UoMTQsIDE2KTtcclxuICAgICAgICAgIHRoaXMuY29udGFkb3IgPSAwO1xyXG4gICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICBjb25zdCBudWV2b1ZhbG9yID0gYCR7IHZhbG9yQWN0dWFsLnN1YnN0cmluZygwLCAxNCkgfSR7IGUua2V5LnBhZFN0YXJ0KDIsIDApIH0keyB2YWxvckFjdHVhbC5zdWJzdHJpbmcoMTYpIH1gO1xyXG4gICAgICAgICAgdGhpcy5kYXRlVGltZUNvbnRyb2wuc2V0VmFsdWUobnVldm9WYWxvcik7XHJcbiAgICAgICAgICB0aGlzLmhvdXJzQ29udHJvbC5zZXRWYWx1ZSh7XHJcbiAgICAgICAgICAgIC4uLnRoaXMuaG91cnNDb250cm9sLnZhbHVlLFxyXG4gICAgICAgICAgICBtaW51dGU6IC9bMC0xXVswLTldOlswLTZdWzAtOV0gW0EsUF1NLy50ZXN0KHRoaXMuZGF0ZVRpbWVDb250cm9sLnZhbHVlIS5zdWJzdHJpbmcoMTEpKVxyXG4gICAgICAgICAgICAgID8gTnVtYmVyKHRoaXMuX2RhdGVQaXBlLnRyYW5zZm9ybShgMDEvMDEvMjAyMCAkeyB0aGlzLmRhdGVUaW1lQ29udHJvbC52YWx1ZSEuc3Vic3RyaW5nKDExKSB9YCwgXCJtbVwiKSlcclxuICAgICAgICAgICAgICA6IE51bWJlcih0aGlzLmRhdGVUaW1lQ29udHJvbC52YWx1ZSEuc3Vic3RyaW5nKDE0LCAxNikpLFxyXG4gICAgICAgICAgfSk7XHJcbiAgICAgICAgICB0aGlzLmNvbnRhZG9yKys7XHJcbiAgICAgICAgICBpZiAoTnVtYmVyKGUua2V5LnBhZFN0YXJ0KDIsIDApKSA+IDUgfHwgdGhpcy5jb250YWRvciA+IDEpIHtcclxuICAgICAgICAgICAgdGhpcy5vbkVtaXQoKTtcclxuICAgICAgICAgICAgaWYgKHRoaXMuZm9ybWF0ID09IDEyKSBpbnB1dC5zZXRTZWxlY3Rpb25SYW5nZSgxNywgMTkpO1xyXG4gICAgICAgICAgICBlbHNlIGlucHV0LnNldFNlbGVjdGlvblJhbmdlKDE0LCAxNik7XHJcbiAgICAgICAgICAgIHRoaXMuY29udGFkb3IgPSAwO1xyXG4gICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgICB9IGVsc2UgdGhpcy5vbkVtaXQoKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgdGhpcy5vbkVtaXQoKTtcclxuICAgICAgICBpbnB1dC5zZXRTZWxlY3Rpb25SYW5nZSgxNCwgMTYpO1xyXG4gICAgICB9XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICAvLz09PT09PT09PT09PT09PT09PT09PT09PSBFVkVOVE9TIFRFQ0xBRE8gPT09PT09PT09PT09PT09PT09PT09PT09PT09XHJcbiAgICAgIGlmIChlLmtleSA9PSBcIkFycm93UmlnaHRcIikge1xyXG4gICAgICAgIGlmIChpbnB1dC5zZWxlY3Rpb25TdGFydCA9PSAwICYmIGlucHV0LnNlbGVjdGlvbkVuZCA9PSAyKSB7XHJcbiAgICAgICAgICBpbnB1dC5zZXRTZWxlY3Rpb25SYW5nZSgzLCA1KTtcclxuICAgICAgICAgIHRoaXMuY29udGFkb3IgPSAwO1xyXG4gICAgICAgIH0gZWxzZSBpZiAoaW5wdXQuc2VsZWN0aW9uU3RhcnQgPT0gMyAmJiBpbnB1dC5zZWxlY3Rpb25FbmQgPT0gNSkge1xyXG4gICAgICAgICAgaW5wdXQuc2V0U2VsZWN0aW9uUmFuZ2UoNiwgMTApO1xyXG4gICAgICAgICAgdGhpcy5jb250YWRvciA9IDA7XHJcbiAgICAgICAgfSBlbHNlIGlmIChpbnB1dC5zZWxlY3Rpb25TdGFydCA9PSA2ICYmIGlucHV0LnNlbGVjdGlvbkVuZCA9PSAxMCkge1xyXG4gICAgICAgICAgaW5wdXQuc2V0U2VsZWN0aW9uUmFuZ2UoMTEsIDEzKTtcclxuICAgICAgICAgIHRoaXMuY29udGFkb3IgPSAwO1xyXG4gICAgICAgIH0gZWxzZSBpZiAoaW5wdXQuc2VsZWN0aW9uU3RhcnQgPT0gMTEgJiYgaW5wdXQuc2VsZWN0aW9uRW5kID09IDEzKSB7XHJcbiAgICAgICAgICBpbnB1dC5zZXRTZWxlY3Rpb25SYW5nZSgxNCwgMTYpO1xyXG4gICAgICAgICAgdGhpcy5jb250YWRvciA9IDA7XHJcbiAgICAgICAgfSBlbHNlIGlmIChpbnB1dC5zZWxlY3Rpb25TdGFydCA9PSAxNCAmJiBpbnB1dC5zZWxlY3Rpb25FbmQgPT0gMTYpIHtcclxuICAgICAgICAgIGlmICh0aGlzLmZvcm1hdCA9PSAxMikgaW5wdXQuc2V0U2VsZWN0aW9uUmFuZ2UoMTcsIDE5KTtcclxuICAgICAgICAgIGVsc2UgaWYgKHRoaXMuZm9ybWF0ID09IDI0KSB0aGlzLmJ0bk9wZW4/Lm5hdGl2ZUVsZW1lbnQuZm9jdXMoKTtcclxuICAgICAgICAgIHRoaXMuY29udGFkb3IgPSAwO1xyXG4gICAgICAgIH0gZWxzZSBpZiAoaW5wdXQuc2VsZWN0aW9uU3RhcnQgPT0gMTcgJiYgaW5wdXQuc2VsZWN0aW9uRW5kID09IDE5KSB7XHJcbiAgICAgICAgICB0aGlzLmJ0bk9wZW4/Lm5hdGl2ZUVsZW1lbnQuZm9jdXMoKTtcclxuICAgICAgICAgIHRoaXMuY29udGFkb3IgPSAwO1xyXG4gICAgICAgIH1cclxuICAgICAgfSBlbHNlIGlmIChlLmtleSA9PSBcIkFycm93TGVmdFwiKSB7XHJcbiAgICAgICAgaWYgKGlucHV0LnNlbGVjdGlvblN0YXJ0ID09IDAgJiYgaW5wdXQuc2VsZWN0aW9uRW5kID09IDIpIHtcclxuICAgICAgICAgIHRoaXMuZ29CYWNrKCk7XHJcbiAgICAgICAgICB0aGlzLmNvbnRhZG9yID0gMDtcclxuICAgICAgICB9IGVsc2UgaWYgKGlucHV0LnNlbGVjdGlvblN0YXJ0ID09IDMgJiYgaW5wdXQuc2VsZWN0aW9uRW5kID09IDUpIHtcclxuICAgICAgICAgIGlucHV0LnNldFNlbGVjdGlvblJhbmdlKDAsIDIpO1xyXG4gICAgICAgICAgdGhpcy5jb250YWRvciA9IDA7XHJcbiAgICAgICAgfSBlbHNlIGlmIChpbnB1dC5zZWxlY3Rpb25TdGFydCA9PSA2ICYmIGlucHV0LnNlbGVjdGlvbkVuZCA9PSAxMCkge1xyXG4gICAgICAgICAgaW5wdXQuc2V0U2VsZWN0aW9uUmFuZ2UoMywgNSk7XHJcbiAgICAgICAgICB0aGlzLmNvbnRhZG9yID0gMDtcclxuICAgICAgICB9IGVsc2UgaWYgKGlucHV0LnNlbGVjdGlvblN0YXJ0ID09IDExICYmIGlucHV0LnNlbGVjdGlvbkVuZCA9PSAxMykge1xyXG4gICAgICAgICAgaW5wdXQuc2V0U2VsZWN0aW9uUmFuZ2UoNiwgMTApO1xyXG4gICAgICAgICAgdGhpcy5jb250YWRvciA9IDA7XHJcbiAgICAgICAgfSBlbHNlIGlmIChpbnB1dC5zZWxlY3Rpb25TdGFydCA9PSAxNCAmJiBpbnB1dC5zZWxlY3Rpb25FbmQgPT0gMTYpIHtcclxuICAgICAgICAgIGlucHV0LnNldFNlbGVjdGlvblJhbmdlKDExLCAxMyk7XHJcbiAgICAgICAgICB0aGlzLmNvbnRhZG9yID0gMDtcclxuICAgICAgICB9IGVsc2UgaWYgKGlucHV0LnNlbGVjdGlvblN0YXJ0ID09IDE3ICYmIGlucHV0LnNlbGVjdGlvbkVuZCA9PSAxOSkge1xyXG4gICAgICAgICAgaW5wdXQuc2V0U2VsZWN0aW9uUmFuZ2UoMTQsIDE2KTtcclxuICAgICAgICAgIHRoaXMuY29udGFkb3IgPSAwO1xyXG4gICAgICAgIH1cclxuICAgICAgfSBlbHNlIGlmIChlLmtleS50b0xvd2VyQ2FzZSgpID09IFwiYVwiKSB7XHJcbiAgICAgICAgaWYgKGlucHV0LnNlbGVjdGlvblN0YXJ0ID09IDE3ICYmIGlucHV0LnNlbGVjdGlvbkVuZCA9PSAxOSkge1xyXG4gICAgICAgICAgY29uc3QgdmFsb3JBY3R1YWwgPSB0aGlzLmRhdGVUaW1lQ29udHJvbC52YWx1ZTtcclxuICAgICAgICAgIGNvbnN0IG51ZXZvVmFsb3IgPSBgJHsgdmFsb3JBY3R1YWwhLnN1YnN0cmluZygwLCAxNykgfUFNYDtcclxuICAgICAgICAgIHRoaXMuZGF0ZVRpbWVDb250cm9sLnNldFZhbHVlKG51ZXZvVmFsb3IpO1xyXG4gICAgICAgICAgdGhpcy5ob3Vyc0NvbnRyb2wuc2V0VmFsdWUoe1xyXG4gICAgICAgICAgICAuLi50aGlzLmhvdXJzQ29udHJvbC52YWx1ZSxcclxuICAgICAgICAgICAgaG91cjogTnVtYmVyKHRoaXMuX2RhdGVQaXBlLnRyYW5zZm9ybShgMDEvMDEvMjAyMCAkeyB0aGlzLmRhdGVUaW1lQ29udHJvbC52YWx1ZSEuc3Vic3RyaW5nKDExKSB9YCwgXCJISFwiKSksXHJcbiAgICAgICAgICB9KTtcclxuICAgICAgICAgIHRoaXMub25FbWl0KCk7XHJcbiAgICAgICAgICBpbnB1dC5zZXRTZWxlY3Rpb25SYW5nZSgxNywgMTkpO1xyXG4gICAgICAgIH1cclxuICAgICAgfSBlbHNlIGlmIChlLmtleS50b0xvd2VyQ2FzZSgpID09IFwicFwiKSB7XHJcbiAgICAgICAgaWYgKGlucHV0LnNlbGVjdGlvblN0YXJ0ID09IDE3ICYmIGlucHV0LnNlbGVjdGlvbkVuZCA9PSAxOSkge1xyXG4gICAgICAgICAgY29uc3QgdmFsb3JBY3R1YWwgPSB0aGlzLmRhdGVUaW1lQ29udHJvbC52YWx1ZTtcclxuICAgICAgICAgIGNvbnN0IG51ZXZvVmFsb3IgPSBgJHsgdmFsb3JBY3R1YWwhLnN1YnN0cmluZygwLCAxNykgfVBNYDtcclxuICAgICAgICAgIHRoaXMuZGF0ZVRpbWVDb250cm9sLnNldFZhbHVlKG51ZXZvVmFsb3IpO1xyXG4gICAgICAgICAgdGhpcy5ob3Vyc0NvbnRyb2wuc2V0VmFsdWUoe1xyXG4gICAgICAgICAgICAuLi50aGlzLmhvdXJzQ29udHJvbC52YWx1ZSxcclxuICAgICAgICAgICAgaG91cjogTnVtYmVyKHRoaXMuX2RhdGVQaXBlLnRyYW5zZm9ybShgMDEvMDEvMjAyMCAkeyB0aGlzLmRhdGVUaW1lQ29udHJvbC52YWx1ZSEuc3Vic3RyaW5nKDExKSB9YCwgXCJISFwiKSksXHJcbiAgICAgICAgICB9KTtcclxuICAgICAgICAgIHRoaXMub25FbWl0KCk7XHJcbiAgICAgICAgICBpbnB1dC5zZXRTZWxlY3Rpb25SYW5nZSgxNywgMTkpO1xyXG4gICAgICAgIH1cclxuICAgICAgfSBlbHNlIGlmIChlLmNvZGUgPT0gXCJTcGFjZVwiICYmIHRoaXMuYXV0b0NvbXBsZXRlKSB7XHJcbiAgICAgICAgY29uc3QgdmFsb3JBY3R1YWw6IHN0cmluZyA9IHRoaXMuZGF0ZVRpbWVDb250cm9sLnZhbHVlITtcclxuICAgICAgICBjb25zdCBkaWFBY3R1YWw6IHN0cmluZyA9IHRoaXMudG9kYXkuZGF5LnRvU3RyaW5nKCk7XHJcbiAgICAgICAgY29uc3QgbWVzQWN0dWFsOiBzdHJpbmcgPSB0aGlzLnRvZGF5Lm1vbnRoLnRvU3RyaW5nKCk7XHJcbiAgICAgICAgY29uc3QgYW5pb0FjdHVhbDogc3RyaW5nID0gdGhpcy50b2RheS55ZWFyLnRvU3RyaW5nKCk7XHJcbiAgICAgICAgY29uc3QgaG9yYUFjdHVhbDogc3RyaW5nID0gRGF0ZVV0aWwudG9TdHJGb3JtYXQoRGF0ZVV0aWwubm93KFwiSVNPREFURVRJTUVfTk9fVElNRVpPTkVcIiksIHRoaXMuZm9ybWF0ID09IDI0ID8gXCJNQVNLXzI0X0hPVVJTXCIgOiBcIk1BU0tfMTJfSE9VUlNcIik7XHJcbiAgICAgICAgY29uc3QgdDogc3RyaW5nID0gRGF0ZVV0aWwudG9TdHJGb3JtYXQoRGF0ZVV0aWwubm93KFwiSVNPREFURVRJTUVfTk9fVElNRVpPTkVcIiksIFwiTUlEREFZX0lORElDQVRPUlwiKTtcclxuICAgICAgICBjb25zdCBtaW51dG9zQWN0dWFsZXM6IHN0cmluZyA9IERhdGVVdGlsLmdldE1pbnV0ZXMoRGF0ZVV0aWwubm93KFwiSVNPREFURVRJTUVfTk9fVElNRVpPTkVcIikpLnRvU3RyaW5nKCkucGFkU3RhcnQoMiwgXCIwXCIpO1xyXG4gICAgICAgIGlmIChpbnB1dC5zZWxlY3Rpb25TdGFydCA9PSAwICYmIGlucHV0LnNlbGVjdGlvbkVuZCA9PSAyKSB7XHJcbiAgICAgICAgICBjb25zdCBudWV2b1ZhbG9yID0gYCR7IGRpYUFjdHVhbC5wYWRTdGFydCgyLCBcIjBcIikgfSR7IHZhbG9yQWN0dWFsLnN1YnN0cmluZygyKSB9YDtcclxuICAgICAgICAgIHRoaXMuZGF0ZVRpbWVDb250cm9sLnNldFZhbHVlKG51ZXZvVmFsb3IpO1xyXG4gICAgICAgICAgdGhpcy5kYXRlQ29udHJvbC5zZXRWYWx1ZShcclxuICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgIC4uLnRoaXMuZGF0ZUNvbnRyb2wudmFsdWUsXHJcbiAgICAgICAgICAgICAgZGF5OiB0aGlzLnRvZGF5LmRheSxcclxuICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgeyBlbWl0RXZlbnQ6IGZhbHNlIH1cclxuICAgICAgICAgICk7XHJcbiAgICAgICAgICBpbnB1dC5zZXRTZWxlY3Rpb25SYW5nZSgzLCA1KTtcclxuICAgICAgICB9IGVsc2UgaWYgKGlucHV0LnNlbGVjdGlvblN0YXJ0ID09IDMgJiYgaW5wdXQuc2VsZWN0aW9uRW5kID09IDUpIHtcclxuICAgICAgICAgIGNvbnN0IG51ZXZvVmFsb3IgPSBgJHsgdmFsb3JBY3R1YWwuc3Vic3RyaW5nKDAsIDMpIH0keyBtZXNBY3R1YWwucGFkU3RhcnQoMiwgXCIwXCIpIH0keyB2YWxvckFjdHVhbC5zdWJzdHJpbmcoNSkgfWA7XHJcbiAgICAgICAgICB0aGlzLmRhdGVUaW1lQ29udHJvbC5zZXRWYWx1ZShudWV2b1ZhbG9yKTtcclxuICAgICAgICAgIHRoaXMuZGF0ZUNvbnRyb2wuc2V0VmFsdWUoXHJcbiAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICAuLi50aGlzLmRhdGVDb250cm9sLnZhbHVlLFxyXG4gICAgICAgICAgICAgIG1vbnRoOiB0aGlzLnRvZGF5Lm1vbnRoLFxyXG4gICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICB7IGVtaXRFdmVudDogZmFsc2UgfVxyXG4gICAgICAgICAgKTtcclxuICAgICAgICAgIGlucHV0LnNldFNlbGVjdGlvblJhbmdlKDYsIDEwKTtcclxuICAgICAgICB9IGVsc2UgaWYgKGlucHV0LnNlbGVjdGlvblN0YXJ0ID09IDYgJiYgaW5wdXQuc2VsZWN0aW9uRW5kID09IDEwKSB7XHJcbiAgICAgICAgICBjb25zdCBudWV2b1ZhbG9yID0gYCR7IHZhbG9yQWN0dWFsLnN1YnN0cmluZygwLCA2KSB9JHsgYW5pb0FjdHVhbC5wYWRTdGFydCg0LCBcIjBcIikgfSR7IHZhbG9yQWN0dWFsLnN1YnN0cmluZygxMCkgfWA7XHJcbiAgICAgICAgICB0aGlzLmRhdGVUaW1lQ29udHJvbC5zZXRWYWx1ZShudWV2b1ZhbG9yKTtcclxuICAgICAgICAgIHRoaXMuZGF0ZUNvbnRyb2wuc2V0VmFsdWUoXHJcbiAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICAuLi50aGlzLmRhdGVDb250cm9sLnZhbHVlLFxyXG4gICAgICAgICAgICAgIHllYXI6IHRoaXMudG9kYXkueWVhcixcclxuICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgeyBlbWl0RXZlbnQ6IGZhbHNlIH1cclxuICAgICAgICAgICk7XHJcbiAgICAgICAgICBpbnB1dC5zZXRTZWxlY3Rpb25SYW5nZSgxMSwgMTMpO1xyXG4gICAgICAgIH0gZWxzZSBpZiAoaW5wdXQuc2VsZWN0aW9uU3RhcnQgPT0gMTEgJiYgaW5wdXQuc2VsZWN0aW9uRW5kID09IDEzKSB7XHJcbiAgICAgICAgICBsZXQgbnVldm9WYWxvcjtcclxuICAgICAgICAgIGlmICh0aGlzLmZvcm1hdCA9PSAyNCkgbnVldm9WYWxvciA9IGAkeyB2YWxvckFjdHVhbC5zdWJzdHJpbmcoMCwgMTEpIH0keyBob3JhQWN0dWFsIH0keyB2YWxvckFjdHVhbC5zdWJzdHJpbmcoMTMpIH1gO1xyXG4gICAgICAgICAgZWxzZSBpZiAodGhpcy5mb3JtYXQgPT0gMTIpXHJcbiAgICAgICAgICAgIG51ZXZvVmFsb3IgPSBgJHsgdmFsb3JBY3R1YWwuc3Vic3RyaW5nKDAsIDExKSB9JHsgaG9yYUFjdHVhbCB9JHsgdmFsb3JBY3R1YWwuc3Vic3RyaW5nKDEzLCAxNykgfSR7IHQudG9VcHBlckNhc2UoKSB9YDtcclxuXHJcbiAgICAgICAgICB0aGlzLmRhdGVUaW1lQ29udHJvbC5zZXRWYWx1ZShudWV2b1ZhbG9yISk7XHJcbiAgICAgICAgICB0aGlzLmhvdXJzQ29udHJvbC5zZXRWYWx1ZSh7XHJcbiAgICAgICAgICAgIC4uLnRoaXMuaG91cnNDb250cm9sLnZhbHVlLFxyXG4gICAgICAgICAgICBtaW51dGU6IHRoaXMuaG91cnNDb250cm9sLnZhbHVlLm1pbnV0ZSAhPSBudWxsID8gdGhpcy5ob3Vyc0NvbnRyb2wudmFsdWUubWludXRlIDogMCxcclxuICAgICAgICAgICAgaG91cjogdGhpcy5mb3JtYXQgPT0gMTIgPyBOdW1iZXIoaG9yYUFjdHVhbCkgOiBOdW1iZXIoaG9yYUFjdHVhbCkgKyAxMixcclxuICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgaW5wdXQuc2V0U2VsZWN0aW9uUmFuZ2UoMTQsIDE2KTtcclxuICAgICAgICB9IGVsc2UgaWYgKGlucHV0LnNlbGVjdGlvblN0YXJ0ID09IDE0ICYmIGlucHV0LnNlbGVjdGlvbkVuZCA9PSAxNikge1xyXG4gICAgICAgICAgY29uc3QgbnVldm9WYWxvciA9IGAkeyB2YWxvckFjdHVhbC5zdWJzdHJpbmcoMCwgMTQpIH0keyBtaW51dG9zQWN0dWFsZXMucGFkU3RhcnQoMiwgXCIwXCIpIH0keyB2YWxvckFjdHVhbC5zdWJzdHJpbmcoMTYpIH1gO1xyXG4gICAgICAgICAgdGhpcy5kYXRlVGltZUNvbnRyb2wuc2V0VmFsdWUobnVldm9WYWxvcik7XHJcbiAgICAgICAgICB0aGlzLmhvdXJzQ29udHJvbC5zZXRWYWx1ZSh7XHJcbiAgICAgICAgICAgIC4uLnRoaXMuaG91cnNDb250cm9sLnZhbHVlLFxyXG4gICAgICAgICAgICBtaW51dGU6IE51bWJlcihtaW51dG9zQWN0dWFsZXMpLFxyXG4gICAgICAgICAgfSk7XHJcbiAgICAgICAgICBpZiAodGhpcy5mb3JtYXQgPT0gMTIpIGlucHV0LnNldFNlbGVjdGlvblJhbmdlKDE3LCAxOSk7XHJcbiAgICAgICAgICBlbHNlIGlucHV0LnNldFNlbGVjdGlvblJhbmdlKDE0LCAxNik7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHRoaXMub25FbWl0KCk7XHJcbiAgICAgIH0gZWxzZSBpZiAoZS5rZXkgPT0gXCJFbnRlclwiIHx8IGUua2V5ID09IFwiQXJyb3dEb3duXCIpIHtcclxuICAgICAgICB0aGlzLmdvTmV4dCgpO1xyXG4gICAgICB9IGVsc2UgaWYgKGUua2V5ID09IFwiQXJyb3dVcFwiKSB7XHJcbiAgICAgICAgdGhpcy5nb0JhY2soKTtcclxuICAgICAgfSBlbHNlIGlmIChlLmtleSA9PSBcIkRlbGV0ZVwiKSB7XHJcbiAgICAgICAgdGhpcy5saW1waWFyVG9kbygpO1xyXG4gICAgICB9IGVsc2UgaWYgKGUua2V5ID09IFwiQmFja3NwYWNlXCIpIHtcclxuICAgICAgICB0aGlzLmxpbXBpYXIoKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgZ29OZXh0ICgpOiB2b2lkIHtcclxuICAgIGlmICh0aGlzLm5leHQgIT0gdW5kZWZpbmVkKSB7XHJcbiAgICAgIGlmICh0aGlzLm5leHQuZGlzYWJsZWQgfHwgdGhpcy5uZXh0LnJlYWRvbmx5KSB7XHJcbiAgICAgICAgaWYgKHRoaXMubmV4dElzRGlzYWJsZSAhPSB1bmRlZmluZWQpIHtcclxuICAgICAgICAgIHRoaXMubmV4dElzRGlzYWJsZS5mb2N1cygpO1xyXG4gICAgICAgIH1cclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICB0aGlzLm5leHQuZm9jdXMoKTtcclxuICAgICAgfVxyXG4gICAgfSBlbHNlIHtcclxuICAgICAgaWYgKHRoaXMubmV4dElzRGlzYWJsZSAhPSB1bmRlZmluZWQpIHtcclxuICAgICAgICB0aGlzLm5leHRJc0Rpc2FibGUuZm9jdXMoKTtcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICB0aGlzLm9uTmV4dC5lbWl0KCk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcblxyXG4gIGdvQmFjayAoKTogdm9pZCB7XHJcbiAgICBpZiAodGhpcy5iYWNrICE9IHVuZGVmaW5lZCkge1xyXG4gICAgICBpZiAodGhpcy5iYWNrLmRpc2FibGVkIHx8IHRoaXMuYmFjay5yZWFkb25seSkge1xyXG4gICAgICAgIGlmICh0aGlzLmJhY2tJc0Rpc2FibGUgIT0gdW5kZWZpbmVkKSB7XHJcbiAgICAgICAgICB0aGlzLmJhY2tJc0Rpc2FibGUuZm9jdXMoKTtcclxuICAgICAgICB9XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgdGhpcy5iYWNrLmZvY3VzKCk7XHJcbiAgICAgIH1cclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIGlmICh0aGlzLmJhY2tJc0Rpc2FibGUgIT0gdW5kZWZpbmVkKSB7XHJcbiAgICAgICAgdGhpcy5iYWNrSXNEaXNhYmxlLmZvY3VzKCk7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgdGhpcy5vbkJhY2suZW1pdCgpO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBsaW1waWFyVG9kbyAoKSB7XHJcbiAgICB0aGlzLmNvbnRhZG9yID0gMDtcclxuICAgIHRoaXMuaG91cnNDb250cm9sLnNldFZhbHVlKFxyXG4gICAgICB7XHJcbiAgICAgICAgaG91cjogbnVsbCxcclxuICAgICAgICBtaW51dGU6IG51bGwsXHJcbiAgICAgIH0sXHJcbiAgICAgIHsgZW1pdEV2ZW50OiBmYWxzZSB9XHJcbiAgICApO1xyXG4gICAgdGhpcy5kYXRlQ29udHJvbC5zZXRWYWx1ZShcclxuICAgICAge1xyXG4gICAgICAgIHllYXI6IG51bGwsXHJcbiAgICAgICAgbW9udGg6IG51bGwsXHJcbiAgICAgICAgZGF5OiBudWxsLFxyXG4gICAgICB9LFxyXG4gICAgICB7IGVtaXRFdmVudDogZmFsc2UgfVxyXG4gICAgKTtcclxuICAgIGlmICh0aGlzLmZvcm1hdCA9PSAxMikgdGhpcy5kYXRlVGltZUNvbnRyb2wuc2V0VmFsdWUoXCJkZC9tbS95eXl5IC0tOi0tIC0tXCIpO1xyXG4gICAgZWxzZSBpZiAodGhpcy5mb3JtYXQgPT0gMjQpIHRoaXMuZGF0ZVRpbWVDb250cm9sLnNldFZhbHVlKFwiZGQvbW0veXl5eSAtLTotLVwiKTtcclxuICAgIHRoaXMuaW5wdXREYXRlVGltZS5uYXRpdmVFbGVtZW50LnNldFNlbGVjdGlvblJhbmdlKDAsIDIpO1xyXG4gICAgdGhpcy5vbkNoYW5nZShudWxsKTtcclxuICAgIHRoaXMub25Ub3VjaCgpO1xyXG4gIH1cclxuXHJcbiAgbGltcGlhciAoKSB7XHJcbiAgICBpZiAodGhpcy5pbnB1dERhdGVUaW1lLm5hdGl2ZUVsZW1lbnQuc2VsZWN0aW9uU3RhcnQgPT0gMCAmJiB0aGlzLmlucHV0RGF0ZVRpbWUubmF0aXZlRWxlbWVudC5zZWxlY3Rpb25FbmQgPT0gMikge1xyXG4gICAgICB0aGlzLmRhdGVDb250cm9sLnNldFZhbHVlKFxyXG4gICAgICAgIHtcclxuICAgICAgICAgIC4uLnRoaXMuZGF0ZUNvbnRyb2wudmFsdWUsXHJcbiAgICAgICAgICBkYXk6IG51bGwsXHJcbiAgICAgICAgfSxcclxuICAgICAgICB7IGVtaXRFdmVudDogZmFsc2UgfVxyXG4gICAgICApO1xyXG4gICAgICB0aGlzLmRhdGVUaW1lQ29udHJvbC5zZXRWYWx1ZShgZGQkeyB0aGlzLmRhdGVUaW1lQ29udHJvbC52YWx1ZSEuc3Vic3RyaW5nKDIpIH1gKTtcclxuICAgICAgdGhpcy5vbkNoYW5nZShudWxsKTtcclxuICAgICAgdGhpcy5vblRvdWNoKCk7XHJcbiAgICAgIHRoaXMuaW5wdXREYXRlVGltZS5uYXRpdmVFbGVtZW50LnNldFNlbGVjdGlvblJhbmdlKDAsIDIpO1xyXG4gICAgICB0aGlzLmNvbnRhZG9yID0gMDtcclxuICAgIH0gZWxzZSBpZiAodGhpcy5pbnB1dERhdGVUaW1lLm5hdGl2ZUVsZW1lbnQuc2VsZWN0aW9uU3RhcnQgPT0gMyAmJiB0aGlzLmlucHV0RGF0ZVRpbWUubmF0aXZlRWxlbWVudC5zZWxlY3Rpb25FbmQgPT0gNSkge1xyXG4gICAgICB0aGlzLmRhdGVDb250cm9sLnNldFZhbHVlKFxyXG4gICAgICAgIHtcclxuICAgICAgICAgIC4uLnRoaXMuZGF0ZUNvbnRyb2wudmFsdWUsXHJcbiAgICAgICAgICBtb250aDogbnVsbCxcclxuICAgICAgICB9LFxyXG4gICAgICAgIHsgZW1pdEV2ZW50OiBmYWxzZSB9XHJcbiAgICAgICk7XHJcbiAgICAgIHRoaXMuZGF0ZVRpbWVDb250cm9sLnNldFZhbHVlKGAkeyB0aGlzLmRhdGVUaW1lQ29udHJvbC52YWx1ZSEuc3Vic3RyaW5nKDAsIDMpIH1tbSR7IHRoaXMuZGF0ZVRpbWVDb250cm9sLnZhbHVlIS5zdWJzdHJpbmcoNSkgfWApO1xyXG4gICAgICB0aGlzLm9uQ2hhbmdlKG51bGwpO1xyXG4gICAgICB0aGlzLm9uVG91Y2goKTtcclxuICAgICAgdGhpcy5pbnB1dERhdGVUaW1lLm5hdGl2ZUVsZW1lbnQuc2V0U2VsZWN0aW9uUmFuZ2UoMywgNSk7XHJcbiAgICAgIHRoaXMuY29udGFkb3IgPSAwO1xyXG4gICAgfSBlbHNlIGlmICh0aGlzLmlucHV0RGF0ZVRpbWUubmF0aXZlRWxlbWVudC5zZWxlY3Rpb25TdGFydCA9PSA2ICYmIHRoaXMuaW5wdXREYXRlVGltZS5uYXRpdmVFbGVtZW50LnNlbGVjdGlvbkVuZCA9PSAxMCkge1xyXG4gICAgICB0aGlzLmRhdGVDb250cm9sLnNldFZhbHVlKFxyXG4gICAgICAgIHtcclxuICAgICAgICAgIC4uLnRoaXMuZGF0ZUNvbnRyb2wudmFsdWUsXHJcbiAgICAgICAgICB5ZWFyOiBudWxsLFxyXG4gICAgICAgIH0sXHJcbiAgICAgICAgeyBlbWl0RXZlbnQ6IGZhbHNlIH1cclxuICAgICAgKTtcclxuICAgICAgdGhpcy5kYXRlVGltZUNvbnRyb2wuc2V0VmFsdWUoYCR7IHRoaXMuZGF0ZVRpbWVDb250cm9sLnZhbHVlIS5zdWJzdHJpbmcoMCwgNikgfXl5eXkkeyB0aGlzLmRhdGVUaW1lQ29udHJvbC52YWx1ZSEuc3Vic3RyaW5nKDEwKSB9YCk7XHJcbiAgICAgIHRoaXMub25DaGFuZ2UobnVsbCk7XHJcbiAgICAgIHRoaXMub25Ub3VjaCgpO1xyXG4gICAgICB0aGlzLmlucHV0RGF0ZVRpbWUubmF0aXZlRWxlbWVudC5zZXRTZWxlY3Rpb25SYW5nZSg2LCAxMCk7XHJcbiAgICAgIHRoaXMuY29udGFkb3IgPSAwO1xyXG4gICAgfSBlbHNlIGlmICh0aGlzLmlucHV0RGF0ZVRpbWUubmF0aXZlRWxlbWVudC5zZWxlY3Rpb25TdGFydCA9PSAxMSAmJiB0aGlzLmlucHV0RGF0ZVRpbWUubmF0aXZlRWxlbWVudC5zZWxlY3Rpb25FbmQgPT0gMTMpIHtcclxuICAgICAgdGhpcy5ob3Vyc0NvbnRyb2wuc2V0VmFsdWUoXHJcbiAgICAgICAge1xyXG4gICAgICAgICAgLi4udGhpcy5kYXRlQ29udHJvbC52YWx1ZSxcclxuICAgICAgICAgIGhvdXI6IG51bGwsXHJcbiAgICAgICAgfSxcclxuICAgICAgICB7IGVtaXRFdmVudDogZmFsc2UgfVxyXG4gICAgICApO1xyXG4gICAgICB0aGlzLmRhdGVUaW1lQ29udHJvbC5zZXRWYWx1ZShgJHsgdGhpcy5kYXRlVGltZUNvbnRyb2wudmFsdWUhLnN1YnN0cmluZygwLCAxMSkgfS0tJHsgdGhpcy5kYXRlVGltZUNvbnRyb2wudmFsdWUhLnN1YnN0cmluZygxMykgfWApO1xyXG4gICAgICB0aGlzLm9uQ2hhbmdlKG51bGwpO1xyXG4gICAgICB0aGlzLm9uVG91Y2goKTtcclxuICAgICAgdGhpcy5pbnB1dERhdGVUaW1lLm5hdGl2ZUVsZW1lbnQuc2V0U2VsZWN0aW9uUmFuZ2UoMTEsIDEzKTtcclxuICAgICAgdGhpcy5jb250YWRvciA9IDA7XHJcbiAgICB9IGVsc2UgaWYgKHRoaXMuaW5wdXREYXRlVGltZS5uYXRpdmVFbGVtZW50LnNlbGVjdGlvblN0YXJ0ID09IDE0ICYmIHRoaXMuaW5wdXREYXRlVGltZS5uYXRpdmVFbGVtZW50LnNlbGVjdGlvbkVuZCA9PSAxNikge1xyXG4gICAgICB0aGlzLmhvdXJzQ29udHJvbC5zZXRWYWx1ZShcclxuICAgICAgICB7XHJcbiAgICAgICAgICAuLi50aGlzLmRhdGVDb250cm9sLnZhbHVlLFxyXG4gICAgICAgICAgbWludXRlOiBudWxsLFxyXG4gICAgICAgIH0sXHJcbiAgICAgICAgeyBlbWl0RXZlbnQ6IGZhbHNlIH1cclxuICAgICAgKTtcclxuICAgICAgdGhpcy5kYXRlVGltZUNvbnRyb2wuc2V0VmFsdWUoYCR7IHRoaXMuZGF0ZVRpbWVDb250cm9sLnZhbHVlIS5zdWJzdHJpbmcoMCwgMTQpIH0tLSR7IHRoaXMuZGF0ZVRpbWVDb250cm9sLnZhbHVlIS5zdWJzdHJpbmcoMTYpIH1gKTtcclxuICAgICAgdGhpcy5vbkNoYW5nZShudWxsKTtcclxuICAgICAgdGhpcy5vblRvdWNoKCk7XHJcbiAgICAgIHRoaXMuaW5wdXREYXRlVGltZS5uYXRpdmVFbGVtZW50LnNldFNlbGVjdGlvblJhbmdlKDE0LCAxNik7XHJcbiAgICAgIHRoaXMuY29udGFkb3IgPSAwO1xyXG4gICAgfVxyXG4gIH1cclxuICBwcmV2ZW50RGVmYXVsdCAoZTogYW55KSB7XHJcbiAgICBlLnByZXZlbnREZWZhdWx0KCk7XHJcbiAgICByZXR1cm4gZmFsc2U7XHJcbiAgfVxyXG5cclxuICBvbkNsaWNrIChlOiBFdmVudCwgaW5wdXQ6IEhUTUxJbnB1dEVsZW1lbnQpIHtcclxuICAgIGUucHJldmVudERlZmF1bHQoKTtcclxuXHJcbiAgICBpZiAodGhpcy5kaXNhYmxlZCkgcmV0dXJuO1xyXG5cclxuICAgIGlmIChpbnB1dC5zZWxlY3Rpb25TdGFydCA9PSAwIHx8IGlucHV0LnNlbGVjdGlvblN0YXJ0ID09IDEgfHwgaW5wdXQuc2VsZWN0aW9uU3RhcnQgPT0gMikge1xyXG4gICAgICBjb25zdCB0aW1lb3V0ID0gc2V0VGltZW91dCgoKSA9PiB7XHJcbiAgICAgICAgaW5wdXQuc2V0U2VsZWN0aW9uUmFuZ2UoMCwgMik7XHJcbiAgICAgICAgdGhpcy5jb250YWRvciA9IDA7XHJcbiAgICAgICAgY2xlYXJUaW1lb3V0KHRpbWVvdXQpO1xyXG4gICAgICB9LCAxMDApO1xyXG4gICAgfSBlbHNlIGlmIChpbnB1dC5zZWxlY3Rpb25TdGFydCA9PSAzIHx8IGlucHV0LnNlbGVjdGlvblN0YXJ0ID09IDQgfHwgaW5wdXQuc2VsZWN0aW9uU3RhcnQgPT0gNSkge1xyXG4gICAgICBjb25zdCB0aW1lb3V0ID0gc2V0VGltZW91dCgoKSA9PiB7XHJcbiAgICAgICAgaW5wdXQuc2V0U2VsZWN0aW9uUmFuZ2UoMywgNSk7XHJcbiAgICAgICAgdGhpcy5jb250YWRvciA9IDA7XHJcbiAgICAgICAgY2xlYXJUaW1lb3V0KHRpbWVvdXQpO1xyXG4gICAgICB9LCAxMDApO1xyXG4gICAgfSBlbHNlIGlmIChcclxuICAgICAgaW5wdXQuc2VsZWN0aW9uU3RhcnQgPT0gNiB8fFxyXG4gICAgICBpbnB1dC5zZWxlY3Rpb25TdGFydCA9PSA3IHx8XHJcbiAgICAgIGlucHV0LnNlbGVjdGlvblN0YXJ0ID09IDggfHxcclxuICAgICAgaW5wdXQuc2VsZWN0aW9uU3RhcnQgPT0gOSB8fFxyXG4gICAgICBpbnB1dC5zZWxlY3Rpb25TdGFydCA9PSAxMFxyXG4gICAgKSB7XHJcbiAgICAgIGNvbnN0IHRpbWVvdXQgPSBzZXRUaW1lb3V0KCgpID0+IHtcclxuICAgICAgICBpbnB1dC5zZXRTZWxlY3Rpb25SYW5nZSg2LCAxMCk7XHJcbiAgICAgICAgdGhpcy5jb250YWRvciA9IDA7XHJcbiAgICAgICAgY2xlYXJUaW1lb3V0KHRpbWVvdXQpO1xyXG4gICAgICB9LCAxMDApO1xyXG4gICAgfSBlbHNlIGlmIChpbnB1dC5zZWxlY3Rpb25TdGFydCA9PSAxMSB8fCBpbnB1dC5zZWxlY3Rpb25TdGFydCA9PSAxMiB8fCBpbnB1dC5zZWxlY3Rpb25TdGFydCA9PSAxMykge1xyXG4gICAgICBjb25zdCB0aW1lb3V0ID0gc2V0VGltZW91dCgoKSA9PiB7XHJcbiAgICAgICAgaW5wdXQuc2V0U2VsZWN0aW9uUmFuZ2UoMTEsIDEzKTtcclxuICAgICAgICB0aGlzLmNvbnRhZG9yID0gMDtcclxuICAgICAgICBjbGVhclRpbWVvdXQodGltZW91dCk7XHJcbiAgICAgIH0sIDEwMCk7XHJcbiAgICB9IGVsc2UgaWYgKGlucHV0LnNlbGVjdGlvblN0YXJ0ID09IDE0IHx8IGlucHV0LnNlbGVjdGlvblN0YXJ0ID09IDE1IHx8IGlucHV0LnNlbGVjdGlvblN0YXJ0ID09IDE2KSB7XHJcbiAgICAgIGNvbnN0IHRpbWVvdXQgPSBzZXRUaW1lb3V0KCgpID0+IHtcclxuICAgICAgICBpbnB1dC5zZXRTZWxlY3Rpb25SYW5nZSgxNCwgMTYpO1xyXG4gICAgICAgIHRoaXMuY29udGFkb3IgPSAwO1xyXG4gICAgICAgIGNsZWFyVGltZW91dCh0aW1lb3V0KTtcclxuICAgICAgfSwgMTAwKTtcclxuICAgIH0gZWxzZSBpZiAoaW5wdXQuc2VsZWN0aW9uU3RhcnQgPT0gMTcgfHwgaW5wdXQuc2VsZWN0aW9uU3RhcnQgPT0gMTggfHwgaW5wdXQuc2VsZWN0aW9uU3RhcnQgPT0gMTkpIHtcclxuICAgICAgY29uc3QgdGltZW91dCA9IHNldFRpbWVvdXQoKCkgPT4ge1xyXG4gICAgICAgIGlucHV0LnNldFNlbGVjdGlvblJhbmdlKDE3LCAxOSk7XHJcbiAgICAgICAgdGhpcy5jb250YWRvciA9IDA7XHJcbiAgICAgICAgY2xlYXJUaW1lb3V0KHRpbWVvdXQpO1xyXG4gICAgICB9LCAxMDApO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgY29uc3QgdGltZW91dCA9IHNldFRpbWVvdXQoKCkgPT4ge1xyXG4gICAgICAgIGlucHV0LnNldFNlbGVjdGlvblJhbmdlKDAsIDIpO1xyXG4gICAgICAgIHRoaXMuY29udGFkb3IgPSAwO1xyXG4gICAgICAgIGNsZWFyVGltZW91dCh0aW1lb3V0KTtcclxuICAgICAgfSwgMTAwKTtcclxuICAgIH1cclxuICB9XHJcbiAgb3BlbiAoZDogTmdiSW5wdXREYXRlcGlja2VyKTogdm9pZCB7XHJcbiAgICBpZiAodGhpcy5kYXRlVGltZUNvbnRyb2wudmFsdWUgPT0gXCJkZC9tbS95eXl5IC0tOi0tIC0tXCIgfHwgdGhpcy5kYXRlVGltZUNvbnRyb2wudmFsdWUgPT0gXCJkZC9tbS95eXl5IC0tOi0tXCIpIHtcclxuICAgICAgdGhpcy5ob3Vyc0NvbnRyb2wuc2V0VmFsdWUoe1xyXG4gICAgICAgIGhvdXI6IG5ldyBEYXRlKCkuZ2V0SG91cnMoKSxcclxuICAgICAgICBtaW51dGU6IG5ldyBEYXRlKCkuZ2V0TWludXRlcygpLFxyXG4gICAgICAgIHNlY29uZDogbmV3IERhdGUoKS5nZXRTZWNvbmRzKCksXHJcbiAgICAgIH0pO1xyXG4gICAgICB0aGlzLmRhdGVDb250cm9sLnNldFZhbHVlKHtcclxuICAgICAgICB5ZWFyOiBuZXcgRGF0ZSgpLmdldEZ1bGxZZWFyKCksXHJcbiAgICAgICAgbW9udGg6IG5ldyBEYXRlKCkuZ2V0TW9udGgoKSArIDEsXHJcbiAgICAgICAgZGF5OiBuZXcgRGF0ZSgpLmdldERhdGUoKSxcclxuICAgICAgICAuLi50aGlzLmhvdXJzQ29udHJvbC52YWx1ZSxcclxuICAgICAgfSk7XHJcbiAgICAgIGNvbnN0IHZhbHVlID0gbmV3IERhdGVUaW1lTW9kZWwoT2JqZWN0LmFzc2lnbih0aGlzLmRhdGVDb250cm9sLnZhbHVlLCB0aGlzLmhvdXJzQ29udHJvbC52YWx1ZSkpO1xyXG4gICAgICB0aGlzLmRhdGVUaW1lQ29udHJvbC5zZXRWYWx1ZSh0aGlzLl9kYXRlUGlwZS50cmFuc2Zvcm0odmFsdWUudG9TdHJpbmcoKSwgdGhpcy5zdHJpbmdGb3JtYXQpKTtcclxuICAgICAgdGhpcy5vbkVtaXQoKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGZvY3VzT3V0IChldmVudDogYW55KTogdm9pZCB7XHJcbiAgICBpZiAoZXZlbnQudGFyZ2V0LmFyaWFMYWJlbCA9PSBcIk1pbnV0ZXNcIikge1xyXG4gICAgICB0aGlzLm5nYkRhdGVwaWNrZXI/LmNsb3NlKCk7XHJcbiAgICAgIGlmICh0aGlzLmdvTmV4dFdoZW5TZWxlY3QpIHtcclxuICAgICAgICB0aGlzLmdvTmV4dCgpO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG59XHJcbiIsIjxkaXYgY2xhc3M9XCJyb3dcIj5cclxuICA8ZGl2IGNsYXNzPVwiY29sLTEyXCIgc3R5bGU9XCJvdmVyZmxvdzogaGlkZGVuXCI+XHJcbiAgICA8bGFiZWwgKm5nSWY9XCJsYWJlbCAhPSBudWxsICYmIGxhYmVsICE9ICcnICYmIHNob3dMYWJlbFwiIGNsYXNzPVwiZC1mbGV4IHN1bWF4LWxhYmVsIG1iLTAgcC0wXCJcclxuICAgICAgPjxzcGFuIFt0aXRsZV09XCJsYWJlbFwiIHN0eWxlPVwid2hpdGUtc3BhY2U6IG5vd3JhcDsgb3ZlcmZsb3c6IGhpZGRlbjsgdGV4dC1vdmVyZmxvdzogZWxsaXBzaXNcIj57eyBsYWJlbCB9fTwvc3Bhbj5cclxuICAgICAgPHNwYW4gKm5nSWY9XCJyZXF1aXJlZFwiIGNsYXNzPVwibXMtMVwiIFtjbGFzcy50ZXh0LWRhbmdlcl09XCJjb250cm9scz8uZXJyb3JzICE9IG51bGxcIj4gKjwvc3Bhbj5cclxuICAgICAgPHNwYW4gKm5nSWY9XCJsYWJlbEluZm9cIj5cclxuICAgICAgICA8aSBjbGFzcz1cImZhIGZhLWV4Y2xhbWF0aW9uLWNpcmNsZSB0ZXh0LWluZm8gbXMtMlwiIFttYXRUb29sdGlwXT1cInRleHRMYWJlbEluZm9cIiBtYXRUb29sdGlwQ2xhc3M9XCJiZy1pbmZvXCI+PC9pPlxyXG4gICAgICA8L3NwYW4+XHJcbiAgICA8L2xhYmVsPlxyXG4gICAgPGlucHV0XHJcbiAgICAgIHR5cGU9XCJ0ZXh0XCJcclxuICAgICAgY2xhc3M9XCJmb3JtLWNvbnRyb2wgZm9ybS1jb250cm9sLXNtIHBvc2l0aW9uLWFic29sdXRlXCJcclxuICAgICAgY29udGFpbmVyPVwiYm9keVwiXHJcbiAgICAgIGlkPVwiZmFrZUlucHV0XCJcclxuICAgICAgbmdiRGF0ZXBpY2tlclxyXG4gICAgICBbZm9ybUNvbnRyb2xdPVwiZGF0ZUNvbnRyb2xcIlxyXG4gICAgICBbYXV0b0Nsb3NlXT1cIidvdXRzaWRlJ1wiXHJcbiAgICAgIFtmb290ZXJUZW1wbGF0ZV09XCJmb290ZXJUZW1wbGF0ZVwiXHJcbiAgICAgIFttaW5EYXRlXT1cInsgeWVhcjogMTk2MCwgbW9udGg6IDEsIGRheTogMSB9XCJcclxuICAgICAgI2QyPVwibmdiRGF0ZXBpY2tlclwiIC8+XHJcbiAgICA8ZGl2IGNsYXNzPVwiaW5wdXQtZ3JvdXAgdy0xMDBcIj5cclxuICAgICAgPGlucHV0XHJcbiAgICAgICAgdHlwZT1cInRleHRcIlxyXG4gICAgICAgIHJlYWRvbmx5XHJcbiAgICAgICAgaWQ9XCJpbnB1dERhdGVUaW1lXCJcclxuICAgICAgICAjaW5wdXREYXRlVGltZVxyXG4gICAgICAgIHN0eWxlPVwiZmxleDogMVwiXHJcbiAgICAgICAgW2NsYXNzLmlzLWludmFsaWRdPVwiY29udHJvbHM/LmVycm9ycyAhPSBudWxsICYmIChjb250cm9scz8uZGlydHkgfHwgY29udHJvbHM/LnRvdWNoZWQpICYmIHN1Ym1pdHRlZFwiXHJcbiAgICAgICAgW2Rpc2FibGVkXT1cImRpc2FibGVkIHx8IHJlYWRvbmx5XCJcclxuICAgICAgICBjbGFzcz1cImZvcm0tY29udHJvbCBmb3JtLWNvbnRyb2wtc21cIlxyXG4gICAgICAgIChibHVyKT1cIm9uQmx1cigpXCJcclxuICAgICAgICAoZm9jdXNvdXQpPVwiZm9jdXNPdXRJbnB1dCgpXCJcclxuICAgICAgICAoa2V5dXApPVwib25LZXlVcCgkZXZlbnQpXCJcclxuICAgICAgICAoZGJsY2xpY2spPVwicHJldmVudERlZmF1bHQoJGV2ZW50KVwiXHJcbiAgICAgICAgKGNsaWNrKT1cInByZXZlbnREZWZhdWx0KCRldmVudClcIlxyXG4gICAgICAgIChtb3VzZXVwKT1cIm9uQ2xpY2soJGV2ZW50LCBpbnB1dERhdGVUaW1lKVwiXHJcbiAgICAgICAgW2Zvcm1Db250cm9sXT1cImRhdGVUaW1lQ29udHJvbFwiIC8+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJpbnB1dC1ncm91cC1hcHBlbmRcIj5cclxuICAgICAgICA8YnV0dG9uXHJcbiAgICAgICAgICAjYnRuT3BlblxyXG4gICAgICAgICAgKGtleXVwLkFycm93TGVmdCk9XCJnb0JhY2soKVwiXHJcbiAgICAgICAgICBbZGlzYWJsZWRdPVwiZGlzYWJsZWQgfHwgcmVhZG9ubHlcIlxyXG4gICAgICAgICAgKGtleXVwLkFycm93UmlnaHQpPVwiY2xlYXJhYmxlID8gYnRuQ2xlYW4uZm9jdXMoKSA6IGdvTmV4dCgpXCJcclxuICAgICAgICAgIGNsYXNzPVwiYnRuIGJ0bi1pbmZvIHAtMCByb3VuZGVkLTAgdXNlLWJ1dHRvblwiXHJcbiAgICAgICAgICAoY2xpY2spPVwiZDIudG9nZ2xlKCk7IG9wZW4oZDIpXCJcclxuICAgICAgICAgIHR5cGU9XCJidXR0b25cIj5cclxuICAgICAgICAgIDxpIGFyaWEtaGlkZGVuPVwidHJ1ZVwiIGNsYXNzPVwiZmEgZmEtY2FsZW5kYXIgdGV4dC1saWdodCBweC0xXCI+PC9pPlxyXG4gICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgIDxidXR0b25cclxuICAgICAgICAgICNidG5DbGVhblxyXG4gICAgICAgICAgW2hpZGRlbl09XCIhY2xlYXJhYmxlXCJcclxuICAgICAgICAgIGNsYXNzPVwiYnRuIGJ0bi1kYW5nZXIgcC0wIHJvdW5kZWQtMCBsaW1waWFyXCJcclxuICAgICAgICAgIFtkaXNhYmxlZF09XCJkaXNhYmxlZCB8fCByZWFkb25seVwiXHJcbiAgICAgICAgICAoY2xpY2spPVwibGltcGlhclRvZG8oKVwiXHJcbiAgICAgICAgICAoa2V5dXAuQXJyb3dMZWZ0KT1cImJ0bk9wZW4uZm9jdXMoKVwiXHJcbiAgICAgICAgICAoa2V5dXAuQXJyb3dSaWdodCk9XCJnb05leHQoKVwiXHJcbiAgICAgICAgICB0eXBlPVwiYnV0dG9uXCI+XHJcbiAgICAgICAgICA8IS0tIDxtYXQtaWNvbiBjbGFzcz1cInRleHQtd2hpdGUgcHQtMVwiIHN0eWxlPVwiZm9udC1zaXplOiAxOHB4O1wiIFttYXRUb29sdGlwXT1cIidMaW1waWFyJ1wiIG1hdFRvb2x0aXBDbGFzcz1cImJnLWRhbmdlclwiPmNsb3NlPC9tYXQtaWNvbj4gLS0+XHJcbiAgICAgICAgICA8aSBhcmlhLWhpZGRlbj1cInRydWVcIiBjbGFzcz1cImZhIGZhLXRpbWVzIHB4LTEgdGV4dC1saWdodFwiPjwvaT5cclxuICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgPC9kaXY+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJwb3NpdGlvbi1hYnNvbHV0ZSBjb250YWluZXItdG9vbHRpcG1lc3NhZ2VcIj5cclxuICAgICAgICA8dG9vbHRpcC1tZXNzYWdlXHJcbiAgICAgICAgICBbbGFiZWxdPVwibGFiZWxcIlxyXG4gICAgICAgICAgW2NvbnRyb2xzXT1cImNvbnRyb2xzXCJcclxuICAgICAgICAgIFt2YWxpZGF0b3JNZXNzYWdlXT1cInZhbGlkYXRvck1lc3NhZ2VcIlxyXG4gICAgICAgICAgW3Rvb2x0aXBNZXNzYWdlXT1cInRvb2x0aXBNZXNzYWdlXCJcclxuICAgICAgICAgIFtzdWJtaXR0ZWRdPVwic3VibWl0dGVkXCI+PC90b29sdGlwLW1lc3NhZ2U+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgPC9kaXY+XHJcbiAgICA8ZXJyb3ItbWVzc2FnZVxyXG4gICAgICBbbGFiZWxdPVwibGFiZWxcIlxyXG4gICAgICBbY29udHJvbHNdPVwiY29udHJvbHNcIlxyXG4gICAgICBbdmFsaWRhdG9yTWVzc2FnZV09XCJ2YWxpZGF0b3JNZXNzYWdlXCJcclxuICAgICAgW3Rvb2x0aXBNZXNzYWdlXT1cInRvb2x0aXBNZXNzYWdlXCJcclxuICAgICAgW3N1Ym1pdHRlZF09XCJzdWJtaXR0ZWRcIj48L2Vycm9yLW1lc3NhZ2U+XHJcbiAgICA8bmctdGVtcGxhdGUgI2Zvb3RlclRlbXBsYXRlPlxyXG4gICAgICA8bmdiLXRpbWVwaWNrZXIgW2Zvcm1Db250cm9sXT1cImhvdXJzQ29udHJvbFwiIFttZXJpZGlhbl09XCJmb3JtYXQgPT0gMTIgPyB0cnVlIDogZmFsc2VcIiAoZm9jdXNvdXQpPVwiZm9jdXNPdXQoJGV2ZW50KVwiPjwvbmdiLXRpbWVwaWNrZXI+XHJcbiAgICA8L25nLXRlbXBsYXRlPlxyXG4gIDwvZGl2PlxyXG48L2Rpdj5cclxuIl19
|
|
1196
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0ZS10aW1lLXBpY2tlci1lZGl0YWJsZS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtc3VtYXgtZXJwLWNvbXBvbmVudC9zcmMvbGliL2RhdGUtdGltZS1waWNrZXItZWRpdGFibGUvZGF0ZS10aW1lLXBpY2tlci1lZGl0YWJsZS5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtc3VtYXgtZXJwLWNvbXBvbmVudC9zcmMvbGliL2RhdGUtdGltZS1waWNrZXItZWRpdGFibGUvZGF0ZS10aW1lLXBpY2tlci1lZGl0YWJsZS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDM0MsT0FBTyxFQUNMLGlCQUFpQixFQUNqQixTQUFTLEVBRVQsWUFBWSxFQUNaLEtBQUssRUFHTCxNQUFNLEVBRU4sU0FBUyxFQUNULFVBQVUsRUFDVixNQUFNLEdBR1AsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUdMLFdBQVcsRUFDWCxhQUFhLEVBQ2IsaUJBQWlCLEVBQ2pCLGtCQUFrQixHQUVuQixNQUFNLGdCQUFnQixDQUFDO0FBQ3hCLE9BQU8sRUFBRSxXQUFXLEVBQUUsc0JBQXNCLEVBQUUsaUJBQWlCLEVBQXNCLE1BQU0sNEJBQTRCLENBQUM7QUFDeEgsT0FBTyxFQUFFLHNCQUFzQixFQUFFLE1BQU0sdUNBQXVDLENBQUM7QUFDL0UsT0FBTyxFQUFFLG9CQUFvQixFQUFFLElBQUksRUFBRSxNQUFNLHFDQUFxQyxDQUFDO0FBQ2pGLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUV2RCxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFDN0MsT0FBTyxFQUFFLDZCQUE2QixFQUFFLE1BQU0scUNBQXFDLENBQUM7QUFDcEYs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b25cIjtcclxuaW1wb3J0IHtcclxuICBDaGFuZ2VEZXRlY3RvclJlZixcclxuICBDb21wb25lbnQsXHJcbiAgRWxlbWVudFJlZixcclxuICBFdmVudEVtaXR0ZXIsXHJcbiAgSW5wdXQsXHJcbiAgT25DaGFuZ2VzLFxyXG4gIE9uSW5pdCxcclxuICBPdXRwdXQsXHJcbiAgU2ltcGxlQ2hhbmdlcyxcclxuICBWaWV3Q2hpbGQsXHJcbiAgZm9yd2FyZFJlZixcclxuICBpbmplY3QsXHJcbiAgaW5wdXQsXHJcbiAgdmlld0NoaWxkLFxyXG59IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XHJcbmltcG9ydCB7XHJcbiAgQWJzdHJhY3RDb250cm9sLFxyXG4gIENvbnRyb2xWYWx1ZUFjY2Vzc29yLFxyXG4gIEZvcm1Db250cm9sLFxyXG4gIE5HX1ZBTElEQVRPUlMsXHJcbiAgTkdfVkFMVUVfQUNDRVNTT1IsXHJcbiAgVW50eXBlZEZvcm1Db250cm9sLFxyXG4gIFZhbGlkYXRpb25FcnJvcnMsXHJcbn0gZnJvbSBcIkBhbmd1bGFyL2Zvcm1zXCI7XHJcbmltcG9ydCB7IE5nYkNhbGVuZGFyLCBOZ2JEYXRlUGFyc2VyRm9ybWF0dGVyLCBOZ2JEYXRlcGlja2VySTE4biwgTmdiSW5wdXREYXRlcGlja2VyIH0gZnJvbSBcIkBuZy1ib290c3RyYXAvbmctYm9vdHN0cmFwXCI7XHJcbmltcG9ydCB7IEN1c3RvbURhdGVwaWNrZXJGb3JtYXQgfSBmcm9tIFwiLi4vZGF0ZS1waWNrZXIvQ3VzdG9tRGF0ZVBpY2tlckZvcm1hdFwiO1xyXG5pbXBvcnQgeyBDdXN0b21EYXRlcGlja2VySTE4biwgSTE4biB9IGZyb20gXCIuLi9kYXRlLXBpY2tlci9DdXN0b21EYXRlUGlja2VySTE4blwiO1xyXG5pbXBvcnQgeyBEYXRlVGltZU1vZGVsIH0gZnJvbSBcIi4uL3V0aWxzL0RhdGVUaW1lTW9kZWxcIjtcclxuaW1wb3J0IHsgZm9ybWF0SG91ciB9IGZyb20gXCIuLi91dGlscy9EYXRlVGltZVBpY2tlckVkaXRhYmxlXCI7XHJcbmltcG9ydCB7IERhdGVVdGlsIH0gZnJvbSBcIi4uL3V0aWxzL0RhdGVVdGlsXCI7XHJcbmltcG9ydCB7IERhdGVUaW1lUGlja2VyRWRpdGFibGVTZXJ2aWNlIH0gZnJvbSBcIi4vZGF0ZS10aW1lLXBpY2tlci1lZGl0YWJsZS5zZXJ2aWNlXCI7XHJcbmltcG9ydCB7IHRpbWVyIH0gZnJvbSBcInJ4anNcIjtcclxuXHJcbmNvbnN0IE1BU0tfMTJfSE9VUlMgPSBcImRkL21tL3l5eXkgLS06LS0gLS1cIjtcclxuY29uc3QgTUFTS18yNF9IT1VSUyA9IFwiZGQvbW0veXl5eSAtLTotLVwiO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6IFwiZGF0ZS10aW1lLXBpY2tlci1lZGl0YWJsZVwiLFxyXG4gIHRlbXBsYXRlVXJsOiBcIi4vZGF0ZS10aW1lLXBpY2tlci1lZGl0YWJsZS5jb21wb25lbnQuaHRtbFwiLFxyXG4gIHN0eWxlVXJsczogW1wiLi9kYXRlLXRpbWUtcGlja2VyLWVkaXRhYmxlLmNvbXBvbmVudC5zY3NzXCJdLFxyXG4gIHByb3ZpZGVyczogW1xyXG4gICAge1xyXG4gICAgICBwcm92aWRlOiBOR19WQUxVRV9BQ0NFU1NPUixcclxuICAgICAgbXVsdGk6IHRydWUsXHJcbiAgICAgIHVzZUV4aXN0aW5nOiBmb3J3YXJkUmVmKCgpPT4gRGF0ZVRpbWVQaWNrZXJFZGl0YWJsZUNvbXBvbmVudClcclxuICAgICAgLy91c2VFeGlzdGluZzogRGF0ZVRpbWVQaWNrZXJFZGl0YWJsZUNvbXBvbmVudCxcclxuICAgIH0sXHJcbiAgICB7XHJcbiAgICAgIHByb3ZpZGU6IE5HX1ZBTElEQVRPUlMsXHJcbiAgICAgIHVzZUV4aXN0aW5nOiBmb3J3YXJkUmVmKCgpID0+IERhdGVUaW1lUGlja2VyRWRpdGFibGVDb21wb25lbnQpLFxyXG4gICAgICBtdWx0aTogdHJ1ZSxcclxuICAgIH0sXHJcbiAgICBJMThuLFxyXG4gICAgeyBwcm92aWRlOiBOZ2JEYXRlcGlja2VySTE4biwgdXNlQ2xhc3M6IEN1c3RvbURhdGVwaWNrZXJJMThuIH0sXHJcbiAgICB7IHByb3ZpZGU6IE5nYkRhdGVQYXJzZXJGb3JtYXR0ZXIsIHVzZUNsYXNzOiBDdXN0b21EYXRlcGlja2VyRm9ybWF0IH0sXHJcbiAgXSxcclxufSlcclxuZXhwb3J0IGNsYXNzIERhdGVUaW1lUGlja2VyRWRpdGFibGVDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIENvbnRyb2xWYWx1ZUFjY2Vzc29yLCBPbkNoYW5nZXMge1xyXG4gIHByaXZhdGUgX2RhdGVQaXBlID0gaW5qZWN0KERhdGVQaXBlKTtcclxuICBwcml2YXRlIF9jYWxlbmRhciA9IGluamVjdChOZ2JDYWxlbmRhcik7XHJcbiAgcHJpdmF0ZSBfZGF0ZVRpbWVQaWNrZXJFZGl0YWJsZVNlcnZpY2UgPSBpbmplY3QoRGF0ZVRpbWVQaWNrZXJFZGl0YWJsZVNlcnZpY2UpO1xyXG4gIHByaXZhdGUgX2NkcmYgPSBpbmplY3QoQ2hhbmdlRGV0ZWN0b3JSZWYpO1xyXG5cclxuICBAVmlld0NoaWxkKFwiaW5wdXREYXRlVGltZVwiKSBpbnB1dERhdGVUaW1lOiBhbnk7XHJcbiAgQFZpZXdDaGlsZChcImJ0bk9wZW5cIikgYnRuT3BlbiE6IEVsZW1lbnRSZWY7XHJcbiAgQFZpZXdDaGlsZChcImJ0bkNsZWFuXCIpIGJ0bkNsZWFuITogRWxlbWVudFJlZjtcclxuICBAVmlld0NoaWxkKFwiZDJcIikgbmdiRGF0ZXBpY2tlciE6IE5nYklucHV0RGF0ZXBpY2tlcjtcclxuXHJcbiAgLyoqXHJcbiAgICogQGRlc2NyaXB0aW9uIFRleHRvIHN1cGVyaW9yXHJcbiAgICogQGRlZmF1bHQgXCJcIlxyXG4gICAqIEB0eXBlIHN0cmluZ1xyXG4gICAqL1xyXG4gIEBJbnB1dCgpIGxhYmVsOiBzdHJpbmcgPSBcIlwiO1xyXG4gIFxyXG4gIC8qKlxyXG4gICAqIEBkZXNjcmlwdGlvbiBDb250cm9sYSBsYSB2aXN1YWxpemFjacOzbiBkZWwgdGV4dG8gc3VwZXJpb3JcclxuICAgKiBAZGVmYXVsdCB0cnVlXHJcbiAgICogQHR5cGUgYm9vbGVhblxyXG4gICAqL1xyXG4gIEBJbnB1dCgpIHNob3dMYWJlbDogYm9vbGVhbiA9IHRydWU7XHJcbiAgXHJcbiAgLyoqXHJcbiAgICogQGRlc2NyaXB0aW9uIEVzdGFibGVjZSBlbCBjb250cm9sIGNvbW8gc29sbyBsZWN0dXJhXHJcbiAgICogQGRlZmF1bHQgZmFsc2VcclxuICAgKiBAdHlwZSBib29sZWFuXHJcbiAgICovXHJcbiAgQElucHV0KCkgcmVhZG9ubHk6IGJvb2xlYW4gPSBmYWxzZTtcclxuICBcclxuICAvKipcclxuICAgKiBAZGVzY3JpcHRpb24gSW5kaWNhIHNpIGVsIGNhbXBvIGVzIG9ibGlnYXRvcmlvXHJcbiAgICogQGRlZmF1bHQgZmFsc2VcclxuICAgKiBAdHlwZSBib29sZWFuXHJcbiAgICovXHJcbiAgQElucHV0KCkgcmVxdWlyZWQ6IGJvb2xlYW4gPSBmYWxzZTtcclxuICBcclxuICAvKipcclxuICAgKiBAZGVzY3JpcHRpb24gTXVlc3RyYSBtZW5zYWplcyBkZSB2YWxpZGFjacOzblxyXG4gICAqIEBkZWZhdWx0IGZhbHNlXHJcbiAgICogQHR5cGUgYm9vbGVhblxyXG4gICAqL1xyXG4gIEBJbnB1dCgpIHZhbGlkYXRvck1lc3NhZ2U6IGJvb2xlYW4gPSBmYWxzZTtcclxuICBcclxuICAvKipcclxuICAgKiBAZGVzY3JpcHRpb24gTXVlc3RyYSBtZW5zYWplcyBkZSBheXVkYSBjb21vIHRvb2x0aXBzXHJcbiAgICogQGRlZmF1bHQgdHJ1ZVxyXG4gICAqIEB0eXBlIGJvb2xlYW5cclxuICAgKi9cclxuICBASW5wdXQoKSB0b29sdGlwTWVzc2FnZTogYm9vbGVhbiA9IHRydWU7XHJcbiAgXHJcbiAgLyoqXHJcbiAgICogQGRlc2NyaXB0aW9uIEluZGljYSBzaSBlbCBmb3JtdWxhcmlvIGhhIHNpZG8gZW52aWFkbyBwYXJhIG1vc3RyYXIgdmFsaWRhY2lvbmVzXHJcbiAgICogQGRlZmF1bHQgdHJ1ZVxyXG4gICAqIEB0eXBlIGJvb2xlYW5cclxuICAgKi9cclxuICBASW5wdXQoKSBzdWJtaXR0ZWQ6IGJvb2xlYW4gPSB0cnVlO1xyXG4gIFxyXG4gIC8qKlxyXG4gICAqIEBkZXNjcmlwdGlvbiBGb3JtYXRvIGRlIGhvcmE6IDEyIG8gMjQgaG9yYXNcclxuICAgKiBAZGVmYXVsdCAyNFxyXG4gICAqIEB0eXBlIGZvcm1hdEhvdXJcclxuICAgKi9cclxuICBASW5wdXQoKSBmb3JtYXQ6IGZvcm1hdEhvdXIgPSAyNDtcclxuICBcclxuICAvKipcclxuICAgKiBAZGVzY3JpcHRpb24gUmVmZXJlbmNpYSBhbCBzaWd1aWVudGUgY29udHJvbCBwYXJhIG5hdmVnYWNpw7NuXHJcbiAgICogQGRlZmF1bHQgdW5kZWZpbmVkXHJcbiAgICogQHR5cGUgYW55XHJcbiAgICovXHJcbiAgQElucHV0KCkgbmV4dDogYW55O1xyXG4gIFxyXG4gIC8qKlxyXG4gICAqIEBkZXNjcmlwdGlvbiBSZWZlcmVuY2lhIGFsIGNvbnRyb2wgYWx0ZXJuYXRpdm8gY3VhbmRvIGVsIHNpZ3VpZW50ZSBlc3TDoSBkZXNoYWJpbGl0YWRvXHJcbiAgICogQGRlZmF1bHQgdW5kZWZpbmVkXHJcbiAgICogQHR5cGUgYW55XHJcbiAgICovXHJcbiAgQElucHV0KCkgbmV4dElzRGlzYWJsZTogYW55O1xyXG4gIFxyXG4gIC8qKlxyXG4gICAqIEBkZXNjcmlwdGlvbiBIYWJpbGl0YSBpbmZvcm1hY2nDs24gYWRpY2lvbmFsIHBhcmEgbGEgZXRpcXVldGFcclxuICAgKiBAZGVmYXVsdCBmYWxzZVxyXG4gICAqIEB0eXBlIGJvb2xlYW5cclxuICAgKi9cclxuICBASW5wdXQoKSBsYWJlbEluZm86IGJvb2xlYW4gPSBmYWxzZTtcclxuICBcclxuICAvKipcclxuICAgKiBAZGVzY3JpcHRpb24gVGV4dG8gaW5mb3JtYXRpdm8gYWRpY2lvbmFsIHBhcmEgbGEgZXRpcXVldGFcclxuICAgKiBAZGVmYXVsdCBcIlwiXHJcbiAgICogQHR5cGUgc3RyaW5nXHJcbiAgICovXHJcbiAgQElucHV0KCkgdGV4dExhYmVsSW5mbzogc3RyaW5nID0gXCJcIjtcclxuICBcclxuICAvKipcclxuICAgKiBAZGVzY3JpcHRpb24gUmVmZXJlbmNpYSBhbCBjb250cm9sIGFudGVyaW9yIHBhcmEgbmF2ZWdhY2nDs25cclxuICAgKiBAZGVmYXVsdCB1bmRlZmluZWRcclxuICAgKiBAdHlwZSBhbnlcclxuICAgKi9cclxuICBASW5wdXQoKSBiYWNrOiBhbnk7XHJcbiAgXHJcbiAgLyoqXHJcbiAgICogQGRlc2NyaXB0aW9uIFJlZmVyZW5jaWEgYWwgY29udHJvbCBhbHRlcm5hdGl2byBjdWFuZG8gZWwgYW50ZXJpb3IgZXN0w6EgZGVzaGFiaWxpdGFkb1xyXG4gICAqIEBkZWZhdWx0IHVuZGVmaW5lZFxyXG4gICAqIEB0eXBlIGFueVxyXG4gICAqL1xyXG4gIEBJbnB1dCgpIGJhY2tJc0Rpc2FibGU6IGFueTtcclxuICBcclxuICAvKipcclxuICAgKiBAZGVzY3JpcHRpb24gQWJyZSBlbCBzZWxlY3RvciBhbCByZWNpYmlyIGVsIGZvY29cclxuICAgKiBAZGVmYXVsdCBmYWxzZVxyXG4gICAqIEB0eXBlIGJvb2xlYW5cclxuICAgKi9cclxuICBASW5wdXQoKSBvcGVuV2hlbkZvY3VzOiBib29sZWFuID0gZmFsc2U7XHJcbiAgXHJcbiAgLyoqXHJcbiAgICogQGRlc2NyaXB0aW9uIE5hdmVnYSBhbCBzaWd1aWVudGUgY29udHJvbCBhbCBzZWxlY2Npb25hciB1bmEgZmVjaGFcclxuICAgKiBAZGVmYXVsdCBmYWxzZVxyXG4gICAqIEB0eXBlIGJvb2xlYW5cclxuICAgKi9cclxuICBASW5wdXQoKSBnb05leHRXaGVuU2VsZWN0OiBib29sZWFuID0gZmFsc2U7XHJcbiAgXHJcbiAgLyoqXHJcbiAgICogQGRlc2NyaXB0aW9uIE11ZXN0cmEgZWwgYm90w7NuIGRlIGVsaW1pbmFyXHJcbiAgICogQGRlZmF1bHQgZmFsc2VcclxuICAgKiBAdHlwZSBib29sZWFuXHJcbiAgICovXHJcbiAgQElucHV0KCkgY2xlYXJhYmxlOiBib29sZWFuID0gdHJ1ZTtcclxuICBcclxuICAvKipcclxuICAgKiBAZGVzY3JpcHRpb24gQXV0b2NvbXBsZXRhIGNvbiBsYSBob3JhL21pbnV0byBhY3R1YWwgKHRydWUpIG8gY29uIDAwOjAwIChmYWxzZSlcclxuICAgKiBAZGVmYXVsdCBmYWxzZVxyXG4gICAqIEB0eXBlIGJvb2xlYW5cclxuICAgKi9cclxuICBASW5wdXQoKSBhdXRvQ29tcGxldGVIb3VyczogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIFxyXG4gIC8qKlxyXG4gICAqIEBkZXNjcmlwdGlvbiBIYWJpbGl0YSBlbCBhdXRvY29tcGxldGFkb1xyXG4gICAqIEBkZWZhdWx0IHRydWVcclxuICAgKiBAdHlwZSBib29sZWFuXHJcbiAgICovXHJcbiAgQElucHV0KCkgYXV0b0NvbXBsZXRlOiBib29sZWFuID0gdHJ1ZTtcclxuICBcclxuICAvKipcclxuICAgKiBAZGVzY3JpcHRpb24gRGVzaGFiaWxpdGEgZWwgY29udHJvbFxyXG4gICAqIEBkZWZhdWx0IGZhbHNlXHJcbiAgICogQHR5cGUgYm9vbGVhblxyXG4gICAqL1xyXG4gIEBJbnB1dCgpIGRpc2FibGVkID0gZmFsc2U7XHJcbiAgQE91dHB1dCgpIG9uTmV4dDogRXZlbnRFbWl0dGVyPGFueT4gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XHJcbiAgQE91dHB1dCgpIG9uQmFjazogRXZlbnRFbWl0dGVyPGFueT4gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XHJcblxyXG4gIG9uQ2hhbmdlID0gKF86IGFueSkgPT4geyB9O1xyXG4gIG9uVG91Y2ggPSAoKSA9PiB7IH07XHJcbiAgb25WYWxpZGF0aW9uQ2hhbmdlID0gKCkgPT4geyB9O1xyXG5cclxuICBjb250cm9sczogQWJzdHJhY3RDb250cm9sIHwgdW5kZWZpbmVkO1xyXG4gIGNvbnRhZG9yID0gMDtcclxuICBwb3NpdGlvbiA9IDA7XHJcbiAgZGF0ZVRpbWVDb250cm9sID0gbmV3IEZvcm1Db250cm9sKFwiZGQvbW0veXl5eSAtLTotLSAtLVwiKTtcclxuICBob3Vyc0NvbnRyb2wgPSBuZXcgVW50eXBlZEZvcm1Db250cm9sKHtcclxuICAgIGhvdXI6IG51bGwsXHJcbiAgICBtaW51dGU6IG51bGwsXHJcbiAgfSk7XHJcbiAgZGF0ZUNvbnRyb2wgPSBuZXcgVW50eXBlZEZvcm1Db250cm9sKHtcclxuICAgIHllYXI6IG51bGwsXHJcbiAgICBtb250aDogbnVsbCxcclxuICAgIGRheTogbnVsbCxcclxuICB9KTtcclxuICB0b2RheSA9IHRoaXMuX2NhbGVuZGFyLmdldFRvZGF5KCk7XHJcblxyXG4gIGdldCBzdHJpbmdGb3JtYXQgKCk6IHN0cmluZyB7XHJcbiAgICByZXR1cm4gdGhpcy5mb3JtYXQgPT09IDEyID8gXCJkZC9NTS95eXl5IGhoOm1tIGFcIiA6IFwiZGQvTU0veXl5eSBISDptbVwiO1xyXG4gIH1cclxuXHJcbiAgY29uc3RydWN0b3IoKSB7XHJcbiAgICB0aGlzLnNob3dMYWJlbCA9IHRoaXMuX2RhdGVUaW1lUGlja2VyRWRpdGFibGVTZXJ2aWNlLmdldFNob3dMYWJlbCgpO1xyXG4gICAgdGhpcy5vcGVuV2hlbkZvY3VzID0gdGhpcy5fZGF0ZVRpbWVQaWNrZXJFZGl0YWJsZVNlcnZpY2UuZ2V0T3BlbldoZW5Gb2N1cygpO1xyXG4gICAgdGhpcy5nb05leHRXaGVuU2VsZWN0ID0gdGhpcy5fZGF0ZVRpbWVQaWNrZXJFZGl0YWJsZVNlcnZpY2UuZ2V0R29OZXh0V2hlblNlbGVjdCgpO1xyXG4gICAgdGhpcy52YWxpZGF0b3JNZXNzYWdlID0gdGhpcy5fZGF0ZVRpbWVQaWNrZXJFZGl0YWJsZVNlcnZpY2UuZ2V0VmFsaWRhdG9yTWVzc2FnZSgpO1xyXG4gICAgdGhpcy50b29sdGlwTWVzc2FnZSA9IHRoaXMuX2RhdGVUaW1lUGlja2VyRWRpdGFibGVTZXJ2aWNlLmdldFRvb2x0aXBNZXNzYWdlKCk7XHJcbiAgICB0aGlzLnN1Ym1pdHRlZCA9IHRoaXMuX2RhdGVUaW1lUGlja2VyRWRpdGFibGVTZXJ2aWNlLmdldFN1Ym1pdHRlZCgpO1xyXG4gICAgdGhpcy5mb3JtYXQgPSB0aGlzLl9kYXRlVGltZVBpY2tlckVkaXRhYmxlU2VydmljZS5nZXRGb3JtYXQoKTtcclxuICAgIHRoaXMuY2xlYXJhYmxlID0gdGhpcy5fZGF0ZVRpbWVQaWNrZXJFZGl0YWJsZVNlcnZpY2UuZ2V0Q2xlYXJhYmxlKCk7XHJcbiAgICB0aGlzLmF1dG9Db21wbGV0ZUhvdXJzID0gdGhpcy5fZGF0ZVRpbWVQaWNrZXJFZGl0YWJsZVNlcnZpY2UuZ2V0QXV0b0NvbXBsZXRlSG91cnMoKTtcclxuICAgIHRoaXMuYXV0b0NvbXBsZXRlID0gdGhpcy5fZGF0ZVRpbWVQaWNrZXJFZGl0YWJsZVNlcnZpY2UuZ2V0QXV0b0NvbXBsZXRlKCk7XHJcbiAgfVxyXG5cclxuXHJcbiAgdmFsaWRhdGUgKGNvbnRyb2w6IEFic3RyYWN0Q29udHJvbCk6IFZhbGlkYXRpb25FcnJvcnMgfCBhbnkge1xyXG4gICAgdGhpcy5jb250cm9scyA9IGNvbnRyb2w7XHJcbiAgICB0aGlzLl9jZHJmLmRldGVjdENoYW5nZXMoKTtcclxuICAgIHJldHVybiBudWxsO1xyXG4gIH1cclxuXHJcbiAgcmVnaXN0ZXJPblZhbGlkYXRvckNoYW5nZT8oZm46ICgpID0+IHZvaWQpOiB2b2lkIHtcclxuICAgIHRoaXMub25WYWxpZGF0aW9uQ2hhbmdlID0gZm47XHJcbiAgfVxyXG5cclxuICBuZ09uSW5pdCAoKTogdm9pZCB7XHJcbiAgICB0aGlzLmhvdXJzQ2hhbmdlKCk7XHJcbiAgICBjb25zdCB0aW1lb3V0ID0gc2V0VGltZW91dCgoKSA9PiB7XHJcbiAgICAgIHRoaXMuZGF0ZUNoYW5nZSgpO1xyXG4gICAgICBjbGVhclRpbWVvdXQodGltZW91dCk7XHJcbiAgICAgIGlmICghdGhpcy5jbGVhcmFibGUpIHRoaXMuYnRuQ2xlYW4hLm5hdGl2ZUVsZW1lbnQuc3R5bGUudmlzaWJpbGl0eSA9IFwiaGlkZGVuXCI7XHJcbiAgICB9LCAxMDApO1xyXG5cclxuICAgIGlmICh0aGlzLmZvcm1hdCA9PSAxMikge1xyXG4gICAgICB0aGlzLmRhdGVUaW1lQ29udHJvbC5zZXRWYWx1ZShNQVNLXzEyX0hPVVJTKTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRoaXMuZGF0ZVRpbWVDb250cm9sLnNldFZhbHVlKE1BU0tfMjRfSE9VUlMpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgbmdPbkNoYW5nZXMgKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpOiB2b2lkIHtcclxuICAgIGlmIChjaGFuZ2VzW1wic3VibWl0dGVkXCJdKSB7XHJcbiAgICAgIGlmICh0aGlzLmNvbnRyb2xzICE9PSB1bmRlZmluZWQgJiYgY2hhbmdlc1tcInN1Ym1pdHRlZFwiXS5jdXJyZW50VmFsdWUpIHtcclxuICAgICAgICB0aGlzLmNvbnRyb2xzLm1hcmtBc0RpcnR5KCk7XHJcbiAgICAgICAgdGhpcy5jb250cm9scy5tYXJrQXNUb3VjaGVkKCk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcblxyXG4gIGZvY3VzICgpOiB2b2lkIHtcclxuICAgIHRoaXMuaW5wdXREYXRlVGltZS5uYXRpdmVFbGVtZW50LmZvY3VzKCk7XHJcblxyXG4gICAgY29uc3QgdGltZW91dCA9IHNldFRpbWVvdXQoKCkgPT4ge1xyXG4gICAgICBpZiAoIXRoaXMuZGlzYWJsZWQpIHRoaXMuaW5wdXREYXRlVGltZS5uYXRpdmVFbGVtZW50LnNldFNlbGVjdGlvblJhbmdlKDAsIDIpO1xyXG5cclxuICAgICAgY2xlYXJUaW1lb3V0KHRpbWVvdXQpO1xyXG4gICAgfSwgMTAwKTtcclxuXHJcbiAgICBpZiAoIXRoaXMucmVhZG9ubHkgJiYgdGhpcy5vcGVuV2hlbkZvY3VzKSB7XHJcbiAgICAgIHRoaXMubmdiRGF0ZXBpY2tlcj8ub3BlbigpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgd3JpdGVWYWx1ZSAob2JqOiBhbnkpOiB2b2lkIHtcclxuICAgIGlmIChvYmogIT0gbnVsbCkge1xyXG4gICAgICB0aGlzLmRhdGVDb250cm9sLnNldFZhbHVlKERhdGVUaW1lTW9kZWwuZnJvbUxvY2FsU3RyaW5nKG9iaikpO1xyXG4gICAgICB0aGlzLmhvdXJzQ29udHJvbC5zZXRWYWx1ZSh7XHJcbiAgICAgICAgaG91cjogdGhpcy5kYXRlQ29udHJvbC52YWx1ZS5ob3VyLFxyXG4gICAgICAgIG1pbnV0ZTogdGhpcy5kYXRlQ29udHJvbC52YWx1ZS5taW51dGUsXHJcbiAgICAgICAgc2Vjb25kOiB0aGlzLmRhdGVDb250cm9sLnZhbHVlLnNlY29uZCxcclxuICAgICAgfSk7XHJcbiAgICAgIHRoaXMuZGF0ZVRpbWVDb250cm9sLnNldFZhbHVlKHRoaXMuX2RhdGVQaXBlLnRyYW5zZm9ybShvYmosIHRoaXMuc3RyaW5nRm9ybWF0KSk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aGlzLmxpbXBpYXJUb2RvKCk7XHJcbiAgICB9XHJcbiAgfVxyXG4gIHJlZ2lzdGVyT25DaGFuZ2UgKGZuOiBhbnkpOiB2b2lkIHtcclxuICAgIHRoaXMub25DaGFuZ2UgPSBmbjtcclxuICB9XHJcbiAgcmVnaXN0ZXJPblRvdWNoZWQgKGZuOiBhbnkpOiB2b2lkIHtcclxuICAgIHRoaXMub25Ub3VjaCA9IGZuO1xyXG4gIH1cclxuICBzZXREaXNhYmxlZFN0YXRlPyhpc0Rpc2FibGVkOiBib29sZWFuKTogdm9pZCB7XHJcbiAgICB0aGlzLmRpc2FibGVkID0gaXNEaXNhYmxlZDtcclxuICAgIGlmICh0aGlzLmRpc2FibGVkKSB0aGlzLmRhdGVUaW1lQ29udHJvbC5kaXNhYmxlKCk7XHJcbiAgICBlbHNlIHRoaXMuZGF0ZVRpbWVDb250cm9sLmVuYWJsZSgpO1xyXG4gIH1cclxuXHJcbiAgaG91cnNDaGFuZ2UgKCkge1xyXG4gICAgaWYgKHRoaXMuZm9ybWF0ID09IDEyKVxyXG4gICAgICB0aGlzLmhvdXJzQ29udHJvbC52YWx1ZUNoYW5nZXMuc3Vic2NyaWJlKChyZXMpID0+IHtcclxuICAgICAgICBpZiAoXHJcbiAgICAgICAgICAvWzAtM11bMC05XVxcL1swLTFdWzAtOV1cXC9bMC05XVswLTldWzAtOV1bMC05XSBbMC0xXVswLTldOlswLTZdWzAtOV0gW0EsUF1NLy50ZXN0KHRoaXMuZGF0ZVRpbWVDb250cm9sLnZhbHVlISkgfHxcclxuICAgICAgICAgIC9bMC0zXVswLTldXFwvWzAtMV1bMC05XVxcL1swLTldWzAtOV1bMC05XVswLTldLy50ZXN0KHRoaXMuZGF0ZVRpbWVDb250cm9sLnZhbHVlIS5zdWJzdHJpbmcoMCwgMTApKVxyXG4gICAgICAgICkge1xyXG4gICAgICAgICAgdGhpcy5kYXRlQ29udHJvbC5zZXRWYWx1ZShcclxuICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgIC4uLnRoaXMuZGF0ZUNvbnRyb2wudmFsdWUhLFxyXG4gICAgICAgICAgICAgIC4uLnJlcyxcclxuICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgeyBlbWl0RXZlbnQ6IGZhbHNlIH1cclxuICAgICAgICAgICk7XHJcbiAgICAgICAgICB0cnkge1xyXG4gICAgICAgICAgICBjb25zdCBpbnB1dDogYW55ID0gbmV3IERhdGVUaW1lTW9kZWwoT2JqZWN0LmFzc2lnbih0aGlzLmRhdGVDb250cm9sLnZhbHVlLCB0aGlzLmhvdXJzQ29udHJvbC52YWx1ZSkpO1xyXG5cclxuICAgICAgICAgICAgdGhpcy5kYXRlVGltZUNvbnRyb2wuc2V0VmFsdWUodGhpcy5fZGF0ZVBpcGUudHJhbnNmb3JtKGlucHV0LCB0aGlzLnN0cmluZ0Zvcm1hdCkpO1xyXG4gICAgICAgICAgfSBmaW5hbGx5IHtcclxuICAgICAgICAgICAgdGhpcy5vbkVtaXQoKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgIH0pO1xyXG4gICAgZWxzZSBpZiAodGhpcy5mb3JtYXQgPT0gMjQpXHJcbiAgICAgIHRoaXMuaG91cnNDb250cm9sLnZhbHVlQ2hhbmdlcy5zdWJzY3JpYmUoKHJlcykgPT4ge1xyXG4gICAgICAgIGlmIChcclxuICAgICAgICAgIC9bMC0zXVswLTldXFwvWzAtMV1bMC05XVxcL1swLTldWzAtOV1bMC05XVswLTldIFswLTFdWzAtOV06WzAtNl1bMC05XS8udGVzdCh0aGlzLmRhdGVUaW1lQ29udHJvbC52YWx1ZSEpIHx8XHJcbiAgICAgICAgICAvWzAtM11bMC05XVxcL1swLTFdWzAtOV1cXC9bMC05XVswLTldWzAtOV1bMC05XS8udGVzdCh0aGlzLmRhdGVUaW1lQ29udHJvbC52YWx1ZSEuc3Vic3RyaW5nKDAsIDEwKSlcclxuICAgICAgICApIHtcclxuICAgICAgICAgIHRoaXMuZGF0ZUNvbnRyb2wuc2V0VmFsdWUoXHJcbiAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICAuLi50aGlzLmRhdGVDb250cm9sLnZhbHVlLFxyXG4gICAgICAgICAgICAgIC4uLnJlcyxcclxuICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgeyBlbWl0RXZlbnQ6IGZhbHNlIH1cclxuICAgICAgICAgICk7XHJcbiAgICAgICAgICB0cnkge1xyXG4gICAgICAgICAgICBjb25zdCBpbnB1dDogYW55ID0gbmV3IERhdGVUaW1lTW9kZWwoT2JqZWN0LmFzc2lnbih0aGlzLmRhdGVDb250cm9sLnZhbHVlLCB0aGlzLmhvdXJzQ29udHJvbC52YWx1ZSkpO1xyXG4gICAgICAgICAgICB0aGlzLmRhdGVUaW1lQ29udHJvbC5zZXRWYWx1ZSh0aGlzLl9kYXRlUGlwZS50cmFuc2Zvcm0oaW5wdXQsIHRoaXMuc3RyaW5nRm9ybWF0KSk7XHJcbiAgICAgICAgICB9IGNhdGNoIChlcnJvcikge1xyXG4gICAgICAgICAgICAvKiBjb25zb2xlLmVycm9yKGVycm9yKSAqL1xyXG4gICAgICAgICAgfSBmaW5hbGx5IHtcclxuICAgICAgICAgICAgdGhpcy5vbkVtaXQoKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgb25FbWl0IChlbWl0VmFsdWU6IGFueSA9IG51bGwpIHtcclxuICAgIHRyeSB7XHJcbiAgICAgIGNvbnN0IHZhbHVlID0gbmV3IERhdGVUaW1lTW9kZWwoT2JqZWN0LmFzc2lnbih0aGlzLmRhdGVDb250cm9sLnZhbHVlLCB0aGlzLmhvdXJzQ29udHJvbC52YWx1ZSkpO1xyXG4gICAgICBlbWl0VmFsdWUgPSB0aGlzLl9kYXRlUGlwZS50cmFuc2Zvcm0odmFsdWUudG9TdHJpbmcoKSwgXCJ5eXl5LU1NLWRkVEhIOm1tXCIpO1xyXG4gICAgfSBjYXRjaCAoZSkgeyB9XHJcbiAgICB0aGlzLm9uQ2hhbmdlKGVtaXRWYWx1ZSk7XHJcbiAgICB0aGlzLm9uVG91Y2goKTtcclxuICB9XHJcblxyXG4gIGRhdGVDaGFuZ2UgKCkge1xyXG4gICAgaWYgKHRoaXMuZm9ybWF0ID09IDEyKVxyXG4gICAgICB0aGlzLmRhdGVDb250cm9sLnZhbHVlQ2hhbmdlcy5zdWJzY3JpYmUoKHJlcykgPT4ge1xyXG4gICAgICAgIGlmIChcclxuICAgICAgICAgIC9bMC0zXVswLTldXFwvWzAtMV1bMC05XVxcL1swLTldWzAtOV1bMC05XVswLTldIFswLTFdWzAtOV06WzAtNl1bMC05XSBbQSxQXU0vLnRlc3QodGhpcy5kYXRlVGltZUNvbnRyb2wudmFsdWUhKSB8fFxyXG4gICAgICAgICAgL1swLTFdWzAtOV06WzAtNl1bMC05XS8udGVzdCh0aGlzLmRhdGVUaW1lQ29udHJvbC52YWx1ZSEuc3Vic3RyaW5nKDExLCAxNikpXHJcbiAgICAgICAgKSB7XHJcbiAgICAgICAgICB0aGlzLmRhdGVDb250cm9sLnNldFZhbHVlKFxyXG4gICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgLi4udGhpcy5ob3Vyc0NvbnRyb2wudmFsdWUsXHJcbiAgICAgICAgICAgICAgLi4ucmVzLFxyXG4gICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICB7IGVtaXRFdmVudDogZmFsc2UgfVxyXG4gICAgICAgICAgKTtcclxuXHJcbiAgICAgICAgICB0cnkge1xyXG4gICAgICAgICAgICBjb25zdCBpbnB1dDogYW55ID0gbmV3IERhdGVUaW1lTW9kZWwoT2JqZWN0LmFzc2lnbih0aGlzLmRhdGVDb250cm9sLnZhbHVlLCB0aGlzLmhvdXJzQ29udHJvbC52YWx1ZSkpO1xyXG4gICAgICAgICAgICB0aGlzLmRhdGVUaW1lQ29udHJvbC5zZXRWYWx1ZSh0aGlzLl9kYXRlUGlwZS50cmFuc2Zvcm0oaW5wdXQsIHRoaXMuc3RyaW5nRm9ybWF0KSk7XHJcbiAgICAgICAgICB9IGNhdGNoIChlcnJvcikge1xyXG4gICAgICAgICAgfSBmaW5hbGx5IHtcclxuICAgICAgICAgICAgdGhpcy5vbkVtaXQoKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgIH0pO1xyXG4gICAgZWxzZSBpZiAodGhpcy5mb3JtYXQgPT0gMjQpXHJcbiAgICAgIHRoaXMuZGF0ZUNvbnRyb2wudmFsdWVDaGFuZ2VzLnN1YnNjcmliZSgocmVzKSA9PiB7XHJcbiAgICAgICAgaWYgKFxyXG4gICAgICAgICAgL1swLTNdWzAtOV1cXC9bMC0xXVswLTldXFwvWzAtOV1bMC05XVswLTldWzAtOV0gWzAtMV1bMC05XTpbMC02XVswLTldIFtBLFBdTS8udGVzdCh0aGlzLmRhdGVUaW1lQ29udHJvbC52YWx1ZSEpIHx8XHJcbiAgICAgICAgICAvWzAtMV1bMC05XTpbMC02XVswLTldLy50ZXN0KHRoaXMuZGF0ZVRpbWVDb250cm9sLnZhbHVlIS5zdWJzdHJpbmcoMTEsIDE2KSlcclxuICAgICAgICApIHtcclxuICAgICAgICAgIHRoaXMuZGF0ZUNvbnRyb2wuc2V0VmFsdWUoXHJcbiAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICAuLi50aGlzLmhvdXJzQ29udHJvbC52YWx1ZSxcclxuICAgICAgICAgICAgICAuLi5yZXMsXHJcbiAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgIHsgZW1pdEV2ZW50OiBmYWxzZSB9XHJcbiAgICAgICAgICApO1xyXG5cclxuICAgICAgICAgIHRyeSB7XHJcbiAgICAgICAgICAgIGNvbnN0IGlucHV0OiBhbnkgPSBuZXcgRGF0ZVRpbWVNb2RlbChPYmplY3QuYXNzaWduKHRoaXMuZGF0ZUNvbnRyb2wudmFsdWUsIHRoaXMuaG91cnNDb250cm9sLnZhbHVlKSk7XHJcbiAgICAgICAgICAgIHRoaXMuZGF0ZVRpbWVDb250cm9sLnNldFZhbHVlKHRoaXMuX2RhdGVQaXBlLnRyYW5zZm9ybShpbnB1dCwgdGhpcy5zdHJpbmdGb3JtYXQpKTtcclxuICAgICAgICAgIH0gY2F0Y2ggKGVycm9yKSB7XHJcbiAgICAgICAgICB9IGZpbmFsbHkge1xyXG4gICAgICAgICAgICB0aGlzLm9uRW1pdCgpO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgfSk7XHJcbiAgfVxyXG5cclxuICBvbkJsdXIgKCk6IHZvaWQge1xyXG4gICAgdGhpcy5vbkVtaXQoKTtcclxuICB9XHJcblxyXG4gIGZvY3VzT3V0SW5wdXQgKCk6IHZvaWQge1xyXG4gICAgaWYodGhpcy5hdXRvQ29tcGxldGUpe1xyXG4gICAgICBjb25zdCB2YWx1ZSA9IHRoaXMuZGF0ZVRpbWVDb250cm9sLnZhbHVlO1xyXG5cclxuICAgICAgaWYgKCh2YWx1ZSAhPSBNQVNLXzEyX0hPVVJTICYmIHRoaXMuZm9ybWF0ID09IDEyKSB8fCAodmFsdWUgIT0gTUFTS18yNF9IT1VSUyAmJiB0aGlzLmZvcm1hdCA9PSAyNCkpIHtcclxuICAgICAgICBjb25zdCBkaWEgPSB2YWx1ZT8uc3Vic3RyaW5nKDAsIDIpO1xyXG4gICAgICAgIGNvbnN0IG1lcyA9IHZhbHVlPy5zdWJzdHJpbmcoMywgNSk7XHJcbiAgICAgICAgY29uc3QgYW5pbyA9IHZhbHVlPy5zdWJzdHJpbmcoNiwgMTApO1xyXG4gICAgICAgIGNvbnN0IGhvcmEgPSB2YWx1ZT8uc3Vic3RyaW5nKDExLCAxMyk7XHJcbiAgICAgICAgY29uc3QgbWludXRvcyA9IHZhbHVlPy5zdWJzdHJpbmcoMTQsIDE2KTtcclxuXHJcbiAgICAgICAgaWYgKFxyXG4gICAgICAgICAgaXNOYU4oTnVtYmVyKGRpYSkpIHx8XHJcbiAgICAgICAgICBkaWEgPT0gXCIwMFwiIHx8XHJcbiAgICAgICAgICBpc05hTihOdW1iZXIobWVzKSkgfHxcclxuICAgICAgICAgIG1lcyA9PSBcIjAwXCIgfHxcclxuICAgICAgICAgIGlzTmFOKE51bWJlcihhbmlvKSkgfHxcclxuICAgICAgICAgIGFuaW8gPT0gXCIwMDAwXCIgfHxcclxuICAgICAgICAgIGlzTmFOKE51bWJlcihob3JhKSkgfHxcclxuICAgICAgICAgIGlzTmFOKE51bWJlcihtaW51dG9zKSlcclxuICAgICAgICApIHtcclxuICAgICAgICAgIHRoaXMuZGF0ZUNvbnRyb2wuc2V0VmFsdWUoXHJcbiAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICB5ZWFyOiBpc05hTihOdW1iZXIoYW5pbykpIHx8IGFuaW8gPT0gXCIwMDAwXCIgPyB0aGlzLnRvZGF5LnllYXIgOiBOdW1iZXIoYW5pbyksXHJcbiAgICAgICAgICAgICAgbW9udGg6IGlzTmFOKE51bWJlcihtZXMpKSB8fCBtZXMgPT0gXCIwMFwiID8gdGhpcy50b2RheS5tb250aCA6IE51bWJlcihtZXMpLFxyXG4gICAgICAgICAgICAgIGRheTogaXNOYU4oTnVtYmVyKGRpYSkpIHx8IGRpYSA9PSBcIjAwXCIgPyB0aGlzLnRvZGF5LmRheSA6IE51bWJlcihkaWEpLFxyXG4gICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICB7IGVtaXRFdmVudDogZmFsc2UgfVxyXG4gICAgICAgICAgKTtcclxuICAgICAgICAgIGxldCBob3VyID0gdGhpcy5ob3Vyc0NvbnRyb2wudmFsdWUuaG91cjtcclxuICAgICAgICAgIGlmIChpc05hTihOdW1iZXIoaG9yYSkpKSBob3VyID0gdGhpcy5hdXRvQ29tcGxldGVIb3VycyA/IERhdGVVdGlsLmdldEhvdXJzKERhdGVVdGlsLm5vdyhcIklTT0RBVEVUSU1FX05PX1RJTUVaT05FXCIpKSA6IDA7XHJcblxyXG4gICAgICAgICAgbGV0IG1pbnV0ZSA9IHRoaXMuaG91cnNDb250cm9sLnZhbHVlLm1pbnV0ZTtcclxuICAgICAgICAgIGlmIChpc05hTihOdW1iZXIobWludXRvcykpKSBtaW51dGUgPSB0aGlzLmF1dG9Db21wbGV0ZUhvdXJzID8gRGF0ZVV0aWwuZ2V0TWludXRlcyhEYXRlVXRpbC5ub3coXCJJU09EQVRFVElNRV9OT19USU1FWk9ORVwiKSkgOiAwO1xyXG5cclxuICAgICAgICAgIHRoaXMuaG91cnNDb250cm9sLnNldFZhbHVlKFxyXG4gICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgaG91cixcclxuICAgICAgICAgICAgICBtaW51dGUsXHJcbiAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgIHsgZW1pdEV2ZW50OiBmYWxzZSB9XHJcbiAgICAgICAgICApO1xyXG4gICAgICAgICAgY29uc3QgaW5wdXQ6IGFueSA9IG5ldyBEYXRlVGltZU1vZGVsKE9iamVjdC5hc3NpZ24odGhpcy5kYXRlQ29udHJvbC52YWx1ZSwgdGhpcy5ob3Vyc0NvbnRyb2wudmFsdWUpKTtcclxuICAgICAgICAgIHRyeSB7XHJcbiAgICAgICAgICAgIHRoaXMuZGF0ZVRpbWVDb250cm9sLnNldFZhbHVlKHRoaXMuX2RhdGVQaXBlLnRyYW5zZm9ybShpbnB1dCwgdGhpcy5zdHJpbmdGb3JtYXQpKTtcclxuICAgICAgICAgIH0gZmluYWxseSB7XHJcbiAgICAgICAgICAgIHRoaXMub25FbWl0KCk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcblxyXG4gICAgICB0aGlzLmNvbnRhZG9yID0gMDtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIG9uS2V5VXAgKGU6IGFueSk6IHZvaWQge1xyXG4gICAgY29uc3QgaW5wdXQgPSBlLnRhcmdldDtcclxuXHJcbiAgICBpZiAodGhpcy5kaXNhYmxlZCkgcmV0dXJuO1xyXG5cclxuICAgIGlmICghaXNOYU4oTnVtYmVyKGUua2V5KSkgJiYgZS5rZXkudHJpbSgpICE9IFwiXCIpIHtcclxuICAgICAgLy89PT09PT09PT09PT09PT09PT09PT09PT09PT09PSBESUEgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxyXG4gICAgICBpZiAoaW5wdXQuc2VsZWN0aW9uU3RhcnQgPT0gMCAmJiBpbnB1dC5zZWxlY3Rpb25FbmQgPT0gMikge1xyXG4gICAgICAgIGNvbnN0IHZhbG9yQWN0dWFsOiBzdHJpbmcgPSB0aGlzLmRhdGVUaW1lQ29udHJvbC52YWx1ZSE7XHJcbiAgICAgICAgY29uc3QgZGlhQWN0dWFsOiBzdHJpbmcgPSB2YWxvckFjdHVhbC5zdWJzdHJpbmcoMCwgMik7XHJcblxyXG4gICAgICAgIGlmIChkaWFBY3R1YWwgPT0gXCJkZFwiKSB7XHJcbiAgICAgICAgICBjb25zdCBudWV2b1ZhbG9yID0gYCR7IGUua2V5LnBhZFN0YXJ0KDIsIDApIH0keyB2YWxvckFjdHVhbC5zdWJzdHJpbmcoMikgfWA7XHJcbiAgICAgICAgICB0aGlzLmRhdGVUaW1lQ29udHJvbC5zZXRWYWx1ZShudWV2b1ZhbG9yKTtcclxuICAgICAgICAgIHRoaXMuZGF0ZUNvbnRyb2wuc2V0VmFsdWUoe1xyXG4gICAgICAgICAgICAuLi50aGlzLmRhdGVDb250cm9sLnZhbHVlLFxyXG4gICAgICAgICAgICBkYXk6IE51bWJlcih0aGlzLmRhdGVUaW1lQ29udHJvbC52YWx1ZSEuc3Vic3RyaW5nKDAsIDIpKSxcclxuICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgdGhpcy5jb250YWRvcisrO1xyXG4gICAgICAgICAgaWYgKGUua2V5ID4gMykge1xyXG4gICAgICAgICAgICB0aGlzLmNvbnRhZG9yID0gMDtcclxuICAgICAgICAgICAgaW5wdXQuc2V0U2VsZWN0aW9uUmFuZ2UoMywgNSk7XHJcbiAgICAgICAgICAgIHRoaXMub25FbWl0KCk7XHJcbiAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICAgIH0gZWxzZSB0aGlzLm9uRW1pdCgpO1xyXG4gICAgICAgIH0gZWxzZSBpZiAoTnVtYmVyKGRpYUFjdHVhbCkgPD0gMyAmJiBOdW1iZXIoZGlhQWN0dWFsKSA+IDAgJiYgdGhpcy5jb250YWRvciA+IDApIHtcclxuICAgICAgICAgIGNvbnN0IG51ZXZvVmFsb3IgPSBgJHsgTnVtYmVyKE51bWJlcihkaWFBY3R1YWwpLnRvU3RyaW5nKCkgKyBOdW1iZXIoZS5rZXkpKSA+IDMxID8gMzEgOiBOdW1iZXIoZGlhQWN0dWFsKS50b1N0cmluZygpICsgTnVtYmVyKGUua2V5KVxyXG4gICAgICAgICAgICB9JHsgdmFsb3JBY3R1YWwuc3Vic3RyaW5nKDIpIH1gO1xyXG4gICAgICAgICAgdGhpcy5kYXRlVGltZUNvbnRyb2wuc2V0VmFsdWUobnVldm9WYWxvcik7XHJcbiAgICAgICAgICB0aGlzLmRhdGVDb250cm9sLnNldFZhbHVlKHtcclxuICAgICAgICAgICAgLi4udGhpcy5kYXRlQ29udHJvbC52YWx1ZSxcclxuICAgICAgICAgICAgZGF5OiBOdW1iZXIodGhpcy5kYXRlVGltZUNvbnRyb2wudmFsdWUhLnN1YnN0cmluZygwLCAyKSksXHJcbiAgICAgICAgICB9KTtcclxuICAgICAgICAgIHRoaXMuY29udGFkb3IrKztcclxuICAgICAgICAgIHRoaXMub25FbWl0KCk7XHJcbiAgICAgICAgICBpbnB1dC5zZXRTZWxlY3Rpb25SYW5nZSgzLCA1KTtcclxuICAgICAgICAgIHRoaXMuY29udGFkb3IgPSAwO1xyXG4gICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICBjb25zdCBudWV2b1ZhbG9yID0gYCR7IGUua2V5LnBhZFN0YXJ0KDIsIDApIH0keyB2YWxvckFjdHVhbC5zdWJzdHJpbmcoMikgfWA7XHJcbiAgICAgICAgICB0aGlzLmRhdGVUaW1lQ29udHJvbC5zZXRWYWx1ZShudWV2b1ZhbG9yKTtcclxuICAgICAgICAgIHRoaXMuZGF0ZUNvbnRyb2wuc2V0VmFsdWUoe1xyXG4gICAgICAgICAgICAuLi50aGlzLmRhdGVDb250cm9sLnZhbHVlLFxyXG4gICAgICAgICAgICBkYXk6IE51bWJlcih0aGlzLmRhdGVUaW1lQ29udHJvbC52YWx1ZSEuc3Vic3RyaW5nKDAsIDIpKSxcclxuICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgdGhpcy5jb250YWRvcisrO1xyXG4gICAgICAgICAgaWYgKE51bWJlcihlLmtleS5wYWRTdGFydCgyLCAwKSkgPiAzIHx8IHRoaXMuY29udGFkb3IgPiAxKSB7XHJcbiAgICAgICAgICAgIHRoaXMuY29udGFkb3IgPSAwO1xyXG4gICAgICAgICAgICBpbnB1dC5zZXRTZWxlY3Rpb25SYW5nZSgzLCA1KTtcclxuICAgICAgICAgICAgdGhpcy5vbkVtaXQoKTtcclxuICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgICAgfSBlbHNlIHRoaXMub25FbWl0KCk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHRoaXMub25FbWl0KCk7XHJcbiAgICAgICAgaW5wdXQuc2V0U2VsZWN0aW9uUmFuZ2UoMCwgMik7XHJcbiAgICAgIH1cclxuICAgICAgLy89PT09PT09PT09PT09PT09PT09PT09PT09PT09PSBNRVMgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxyXG4gICAgICBlbHNlIGlmIChpbnB1dC5zZWxlY3Rpb25TdGFydCA9PSAzICYmIGlucHV0LnNlbGVjdGlvbkVuZCA9PSA1KSB7XHJcbiAgICAgICAgY29uc3QgdmFsb3JBY3R1YWw6IHN0cmluZyA9IHRoaXMuZGF0ZVRpbWVDb250cm9sLnZhbHVlITtcclxuICAgICAgICBjb25zdCBtZXNBY3R1YWw6IHN0cmluZyA9IHZhbG9yQWN0dWFsLnN1YnN0cmluZygzLCA1KTtcclxuXHJcbiAgICAgICAgaWYgKG1lc0FjdHVhbCA9PSBcIm1tXCIpIHtcclxuICAgICAgICAgIGNvbnN0IG51ZXZvVmFsb3IgPSBgJHsgdmFsb3JBY3R1YWwuc3Vic3RyaW5nKDAsIDMpIH0keyBlLmtleS5wYWRTdGFydCgyLCAwKSB9JHsgdmFsb3JBY3R1YWwuc3Vic3RyaW5nKDUpIH1gO1xyXG4gICAgICAgICAgdGhpcy5kYXRlVGltZUNvbnRyb2wuc2V0VmFsdWUobnVldm9WYWxvcik7XHJcbiAgICAgICAgICB0aGlzLmRhdGVDb250cm9sLnNldFZhbHVlKHtcclxuICAgICAgICAgICAgLi4udGhpcy5kYXRlQ29udHJvbC52YWx1ZSxcclxuICAgICAgICAgICAgbW9udGg6IE51bWJlcih0aGlzLmRhdGVUaW1lQ29udHJvbC52YWx1ZSEuc3Vic3RyaW5nKDMsIDUpKSxcclxuICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgdGhpcy5jb250YWRvcisrO1xyXG4gICAgICAgICAgaWYgKGUua2V5ID4gMSkge1xyXG4gICAgICAgICAgICB0aGlzLm9uRW1pdCgpO1xyXG4gICAgICAgICAgICBpbnB1dC5zZXRTZWxlY3Rpb25SYW5nZSg2LCAxMCk7XHJcbiAgICAgICAgICAgIHRoaXMuY29udGFkb3IgPSAwO1xyXG4gICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgICB9IGVsc2UgdGhpcy5vbkVtaXQoKTtcclxuICAgICAgICB9IGVsc2UgaWYgKE51bWJlcihtZXNBY3R1YWwpIDw9IDEgJiYgTnVtYmVyKG1lc0FjdHVhbCkgPiAwICYmIHRoaXMuY29udGFkb3IgPiAwKSB7XHJcbiAgICAgICAgICBjb25zdCBudWV2b1ZhbG9yID0gYCR7IHZhbG9yQWN0dWFsLnN1YnN0cmluZygwLCAzKSB9JHsgTnVtYmVyKE51bWJlcihtZXNBY3R1YWwpLnRvU3RyaW5nKCkgKyBOdW1iZXIoZS5rZXkpKSA+IDEyID8gMTIgOiBOdW1iZXIobWVzQWN0dWFsKS50b1N0cmluZygpICsgTnVtYmVyKGUua2V5KVxyXG4gICAgICAgICAgICB9JHsgdmFsb3JBY3R1YWwuc3Vic3RyaW5nKDUpIH1gO1xyXG4gICAgICAgICAgdGhpcy5kYXRlVGltZUNvbnRyb2wuc2V0VmFsdWUobnVldm9WYWxvcik7XHJcbiAgICAgICAgICB0aGlzLmRhdGVDb250cm9sLnNldFZhbHVlKHtcclxuICAgICAgICAgICAgLi4udGhpcy5kYXRlQ29udHJvbC52YWx1ZSxcclxuICAgICAgICAgICAgbW9udGg6IE51bWJlcih0aGlzLmRhdGVUaW1lQ29udHJvbC52YWx1ZSEuc3Vic3RyaW5nKDMsIDUpKSxcclxuICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgdGhpcy5jb250YWRvcisrO1xyXG4gICAgICAgICAgdGhpcy5vbkVtaXQoKTtcclxuICAgICAgICAgIGlucHV0LnNldFNlbGVjdGlvblJhbmdlKDYsIDEwKTtcclxuICAgICAgICAgIHRoaXMuY29udGFkb3IgPSAwO1xyXG4gICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICBjb25zdCBudWV2b1ZhbG9yID0gYCR7IHZhbG9yQWN0dWFsLnN1YnN0cmluZygwLCAzKSB9JHsgZS5rZXkucGFkU3RhcnQoMiwgMCkgfSR7IHZhbG9yQWN0dWFsLnN1YnN0cmluZyg1KSB9YDtcclxuICAgICAgICAgIHRoaXMuZGF0ZVRpbWVDb250cm9sLnNldFZhbHVlKG51ZXZvVmFsb3IpO1xyXG4gICAgICAgICAgdGhpcy5kYXRlQ29udHJvbC5zZXRWYWx1ZSh7XHJcbiAgICAgICAgICAgIC4uLnRoaXMuZGF0ZUNvbnRyb2wudmFsdWUsXHJcbiAgICAgICAgICAgIG1vbnRoOiBOdW1iZXIodGhpcy5kYXRlVGltZUNvbnRyb2wudmFsdWUhLnN1YnN0cmluZygzLCA1KSksXHJcbiAgICAgICAgICB9KTtcclxuICAgICAgICAgIHRoaXMuY29udGFkb3IrKztcclxuICAgICAgICAgIGlmIChOdW1iZXIoZS5rZXkucGFkU3RhcnQoMiwgMCkpID4gMSB8fCB0aGlzLmNvbnRhZG9yID4gMSkge1xyXG4gICAgICAgICAgICB0aGlzLm9uRW1pdCgpO1xyXG4gICAgICAgICAgICBpbnB1dC5zZXRTZWxlY3Rpb25SYW5nZSg2LCAxMCk7XHJcbiAgICAgICAgICAgIHRoaXMuY29udGFkb3IgPSAwO1xyXG4gICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgICB9IGVsc2UgdGhpcy5vbkVtaXQoKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgdGhpcy5vbkVtaXQoKTtcclxuICAgICAgICBpbnB1dC5zZXRTZWxlY3Rpb25SYW5nZSgzLCA1KTtcclxuICAgICAgfVxyXG4gICAgICAvLz09PT09PT09PT09PT09PT09PT09PT09PT09PT09IEHDkU8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxyXG4gICAgICBlbHNlIGlmIChpbnB1dC5zZWxlY3Rpb25TdGFydCA9PSA2ICYmIGlucHV0LnNlbGVjdGlvbkVuZCA9PSAxMCkge1xyXG4gICAgICAgIGNvbnN0IHZhbG9yQWN0dWFsOiBzdHJpbmcgPSB0aGlzLmRhdGVUaW1lQ29udHJvbC52YWx1ZSE7XHJcbiAgICAgICAgY29uc3QgYW5pb0FjdHVhbDogc3RyaW5nID0gdmFsb3JBY3R1YWwuc3Vic3RyaW5nKDYsIDEwKTtcclxuICAgICAgICBpZiAoYW5pb0FjdHVhbCA9PSBcInl5eXlcIikge1xyXG4gICAgICAgICAgY29uc3QgbnVldm9WYWxvciA9IGAkeyB2YWxvckFjdHVhbC5zdWJzdHJpbmcoMCwgNikgfSR7IGUua2V5LnBhZFN0YXJ0KDQsIDApIH0keyB2YWxvckFjdHVhbC5zdWJzdHJpbmcoMTApIH1gO1xyXG4gICAgICAgICAgdGhpcy5kYXRlVGltZUNvbnRyb2wuc2V0VmFsdWUobnVldm9WYWxvcik7XHJcbiAgICAgICAgICB0aGlzLmRhdGVDb250cm9sLnNldFZhbHVlKHtcclxuICAgICAgICAgICAgLi4udGhpcy5kYXRlQ29udHJvbC52YWx1ZSxcclxuICAgICAgICAgICAgeWVhcjogTnVtYmVyKHRoaXMuZGF0ZVRpbWVDb250cm9sLnZhbHVlIS5zdWJzdHJpbmcoNiwgMTApKSxcclxuICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgdGhpcy5jb250YWRvcisrO1xyXG4gICAgICAgICAgaWYgKGUua2V5ID4gMikge1xyXG4gICAgICAgICAgICBjb25zdCBudWV2b1ZhbG9yID0gYCR7IHZhbG9yQWN0dWFsLnN1YnN0cmluZygwLCA2KSB9JHsgRGF0ZVV0aWwuZ2V0WWVhcihEYXRlVXRpbC5ub3coKSkgfSR7IHZhbG9yQWN0dWFsLnN1YnN0cmluZygxMCkgfWA7XHJcbiAgICAgICAgICAgIHRoaXMuZGF0ZVRpbWVDb250cm9sLnNldFZhbHVlKG51ZXZvVmFsb3IpO1xyXG4gICAgICAgICAgICB0aGlzLmRhdGVDb250cm9sLnNldFZhbHVlKHtcclxuICAgICAgICAgICAgICAuLi50aGlzLmRhdGVDb250cm9sLnZhbHVlLFxyXG4gICAgICAgICAgICAgIHllYXI6IE51bWJlcih0aGlzLmRhdGVUaW1lQ29udHJvbC52YWx1ZSEuc3Vic3RyaW5nKDYsIDEwKSksXHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICB0aGlzLm9uRW1pdCgpO1xyXG4gICAgICAgICAgICBpbnB1dC5zZXRTZWxlY3Rpb25SYW5nZSgxMSwgMTMpO1xyXG4gICAgICAgICAgICB0aGlzLmNvbnRhZG9yID0gMDtcclxuICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgICAgfSBlbHNlIHRoaXMub25FbWl0KCk7XHJcbiAgICAgICAgfSBlbHNlIGlmIChOdW1iZXIoYW5pb0FjdHVhbCkgPD0gMjk5OSAmJiBOdW1iZXIoYW5pb0FjdHVhbCkgPiAwKSB7XHJcbiAgICAgICAgICBsZXQgbnVldm9WYWxvcjtcclxuICAgICAgICAgIHRoaXMuY29udGFkb3IrKztcclxuICAgICAgICAgIGlmIChOdW1iZXIoYW5pb0FjdHVhbCkgPj0gMTAwMCkge1xyXG4gICAgICAgICAgICBudWV2b1ZhbG9yID0gYCR7IHZhbG9yQWN0dWFsLnN1YnN0cmluZygwLCA2KSB9JHsgTnVtYmVyKGUua2V5KS50b1N0cmluZygpLnBhZFN0YXJ0KDQsIFwiMFwiKSB9JHsgdmFsb3JBY3R1YWwuc3Vic3RyaW5nKDEwKSB9YDtcclxuICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIG51ZXZvVmFsb3IgPSBgJHsgdmFsb3JBY3R1YWwuc3Vic3RyaW5nKDAsIDYpIH0keyAoTnVtYmVyKGFuaW9BY3R1YWwpLnRvU3RyaW5nKCkgKyBOdW1iZXIoZS5rZXkpKS5wYWRTdGFydChcclxuICAgICAgICAgICAgICA0LFxyXG4gICAgICAgICAgICAgIFwiMFwiXHJcbiAgICAgICAgICAgICkgfSR7IHZhbG9yQWN0dWFsLnN1YnN0cmluZygxMCkgfWA7XHJcbiAgICAgICAgICAgIHRoaXMuZGF0ZVRpbWVDb250cm9sLnNldFZhbHVlKG51ZXZvVmFsb3IpO1xyXG4gICAgICAgICAgICB0aGlzLmRhdGVDb250cm9sLnNldFZhbHVlKHtcclxuICAgICAgICAgICAgICAuLi50aGlzLmRhdGVDb250cm9sLnZhbHVlLFxyXG4gICAgICAgICAgICAgIHllYXI6IE51bWJlcih0aGlzLmRhdGVUaW1lQ29udHJvbC52YWx1ZSEuc3Vic3RyaW5nKDYsIDEwKSksXHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICBpZiAoXHJcbiAgICAgICAgICAgICAgTnVtYmVyKE51bWJlcihhbmlvQWN0dWFsKS50b1N0cmluZygpICsgTnVtYmVyKGUua2V5KSkgPiAxMDAwICYmXHJcbiAgICAgICAgICAgICAgTnVtYmVyKE51bWJlcihhbmlvQWN0dWFsKS50b1N0cmluZygpICsgTnVtYmVyKGUua2V5KSkgPCAzMDAwXHJcbiAgICAgICAgICAgICkge1xyXG4gICAgICAgICAgICAgIHRoaXMub25FbWl0KCk7XHJcbiAgICAgICAgICAgICAgaW5wdXQuc2V0U2VsZWN0aW9uUmFuZ2UoMTEsIDEzKTtcclxuICAgICAgICAgICAgICB0aGlzLmNvbnRhZG9yID0gMDtcclxuICAgICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoTnVtYmVyKE51bWJlcihhbmlvQWN0dWFsKS50b1N0cmluZygpICsgTnVtYmVyKGUua2V5KSkgPiAyOTk5KSB7XHJcbiAgICAgICAgICAgICAgbnVldm9WYWxvciA9IGAkeyB2YWxvckFjdHVhbC5zdWJzdHJpbmcoMCwgNikgfSR7IERhdGVVdGlsLmdldFllYXIoRGF0ZVV0aWwubm93KCkpIH0keyB2YWxvckFjdHVhbC5zdWJzdHJpbmcoMTApIH1gO1xyXG4gICAgICAgICAgICAgIHRoaXMuZGF0ZVRpbWVDb250cm9sLnNldFZhbHVlKG51ZXZvVmFsb3IpO1xyXG4gICAgICAgICAgICAgIHRoaXMuZGF0ZUNvbnRyb2wuc2V0VmFsdWUoe1xyXG4gICAgICAgICAgICAgICAgLi4udGhpcy5kYXRlQ29udHJvbC52YWx1ZSxcclxuICAgICAgICAgICAgICAgIHllYXI6IE51bWJlcih0aGlzLmRhdGVUaW1lQ29udHJvbC52YWx1ZSEuc3Vic3RyaW5nKDYsIDEwKSksXHJcbiAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgICAgdGhpcy5vbkVtaXQoKTtcclxuICAgICAgICAgICAgICBpbnB1dC5zZXRTZWxlY3Rpb25SYW5nZSgxMSwgMTMpO1xyXG4gICAgICAgICAgICAgIHRoaXMuY29udGFkb3IgPSAwO1xyXG4gICAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgdGhpcy5kYXRlVGltZUNvbnRyb2wuc2V0VmFsdWUobnVldm9WYWxvcik7XHJcbiAgICAgICAgICB0aGlzLmRhdGVDb250cm9sLnNldFZhbHVlKHtcclxuICAgICAgICAgICAgLi4udGhpcy5kYXRlQ29udHJvbC52YWx1ZSxcclxuICAgICAgICAgICAgeWVhcjogTnVtYmVyKHRoaXMuZGF0ZVRpbWVDb250cm9sLnZhbHVlIS5zdWJzdHJpbmcoNiwgMTApKSxcclxuICAgICAgICAgIH0pO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICBjb25zdCBudWV2b1ZhbG9yID0gYCR7IHZhbG9yQWN0dWFsLnN1YnN0cmluZygwLCA2KSB9JHsgZS5rZXkucGFkU3RhcnQoNCwgMCkgfSR7IHZhbG9yQWN0dWFsLnN1YnN0cmluZygxMCkgfWA7XHJcbiAgICAgICAgICB0aGlzLmRhdGVUaW1lQ29udHJvbC5zZXRWYWx1ZShudWV2b1ZhbG9yKTtcclxuICAgICAgICAgIHRoaXMuZGF0ZUNvbnRyb2wuc2V0VmFsdWUoe1xyXG4gICAgICAgICAgICAuLi50aGlzLmRhdGVDb250cm9sLnZhbHVlLFxyXG4gICAgICAgICAgICB5ZWFyOiBOdW1iZXIodGhpcy5kYXRlVGltZUNvbnRyb2wudmFsdWUhLnN1YnN0cmluZyg2LCAxMCkpLFxyXG4gICAgICAgICAgfSk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHRoaXMuY29udGFkb3IrKztcclxuICAgICAgICB0aGlzLm9uRW1pdCgpO1xyXG4gICAgICAgIGlucHV0LnNldFNlbGVjdGlvblJhbmdlKDYsIDEwKTtcclxuICAgICAgfVxyXG4gICAgICAvLz09PT09PT09PT09PT09PT09PT09PT09PT09PT09IEhPUkEgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XHJcbiAgICAgIGVsc2UgaWYgKGlucHV0LnNlbGVjdGlvblN0YXJ0ID09IDExICYmIGlucHV0LnNlbGVjdGlvbkVuZCA9PSAxMykge1xyXG4gICAgICAgIGNvbnN0IHZhbG9yQWN0dWFsOiBzdHJpbmcgPSB0aGlzLmRhdGVUaW1lQ29udHJvbC52YWx1ZSE7XHJcbiAgICAgICAgY29uc3QgaG9yYUFjdHVhbDogc3RyaW5nID0gdmFsb3JBY3R1YWwuc3Vic3RyaW5nKDExLCAxMyk7XHJcblxyXG4gICAgICAgIGlmIChob3JhQWN0dWFsID09IFwiLS1cIikge1xyXG4gICAgICAgICAgY29uc3QgbnVldm9WYWxvciA9IGAkeyB2YWxvckFjdHVhbC5zdWJzdHJpbmcoMCwgMTEpIH0keyBlLmtleS5wYWRTdGFydCgyLCAwKSB9JHsgdmFsb3JBY3R1YWwuc3Vic3RyaW5nKDEzKSB9YDtcclxuICAgICAgICAgIHRoaXMuZGF0ZVRpbWVDb250cm9sLnNldFZhbHVlKG51ZXZvVmFsb3IpO1xyXG4gICAgICAgICAgLy89PT09PT09PT09PSBGT1JNQVRPIDEyIEhPUkFTPT09PT09PT09PT1cclxuICAgICAgICAgIGlmICh0aGlzLmZvcm1hdCA9PSAxMilcclxuICAgICAgICAgICAgdGhpcy5ob3Vyc0NvbnRyb2wuc2V0VmFsdWUoe1xyXG4gICAgICAgICAgICAgIC4uLnRoaXMuaG91cnNDb250cm9sLnZhbHVlLFxyXG4gICAgICAgICAgICAgIGhvdXI6IC9bMC0xXVswLTldOlswLTZdWzAtOV0gW0EsUF1NLy50ZXN0KHRoaXMuZGF0ZVRpbWVDb250cm9sLnZhbHVlIS5zdWJzdHJpbmcoMTEpKVxyXG4gICAgICAgICAgICAgICAgPyBOdW1iZXIodGhpcy5fZGF0ZVBpcGUudHJhbnNmb3JtKGAwMS8wMS8yMDIwICR7IHRoaXMuZGF0ZVRpbWVDb250cm9sLnZhbHVlIS5zdWJzdHJpbmcoMTEpIH1gLCBcIkhIXCIpKVxyXG4gICAgICAgICAgICAgICAgOiBOdW1iZXIodGhpcy5kYXRlVGltZUNvbnRyb2wudmFsdWUhLnN1YnN0cmluZygxMSwgMTMpKSxcclxuICAgICAgICAgICAgICBtaW51dGU6IHRoaXMuZGF0ZVRpbWVDb250cm9sLnZhbHVlIS5zdWJzdHJpbmcoMTQsIDE2KSA9PSBcIi0tXCIgPyAwIDogdGhpcy5ob3Vyc0NvbnRyb2wudmFsdWUubWludXRlLFxyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICAgIC8vPT09PT09PT09PT0gRk9STUFUTyAyNCBIT1JBUz09PT09PT09PT09XHJcbiAgICAgICAgICBlbHNlXHJcbiAgICAgICAgICAgIHRoaXMuaG91cnNDb250cm9sLnNldFZhbHVlKHtcclxuICAgICAgICAgICAgICAuLi50aGlzLmhvdXJzQ29udHJvbC52YWx1ZSxcclxuICAgICAgICAgICAgICBob3VyOiAvWzAtMV1bMC05XTpbMC02XVswLTldLy50ZXN0KHRoaXMuZGF0ZVRpbWVDb250cm9sLnZhbHVlIS5zdWJzdHJpbmcoMTEpKVxyXG4gICAgICAgICAgICAgICAgPyBOdW1iZXIodGhpcy5fZGF0ZVBpcGUudHJhbnNmb3JtKGAwMS8wMS8yMDIwICR7IHRoaXMuZGF0ZVRpbWVDb250cm9sLnZhbHVlIS5zdWJzdHJpbmcoMTEpIH1gLCBcIkhIXCIpKVxyXG4gICAgICAgICAgICAgICAgOiBOdW1iZXIodGhpcy5kYXRlVGltZUNvbnRyb2wudmFsdWUhLnN1YnN0cmluZygxMSwgMTMpKSxcclxuICAgICAgICAgICAgICBtaW51dGU6IHRoaXMuZGF0ZVRpbWVDb250cm9sLnZhbHVlIS5zdWJzdHJpbmcoMTQsIDE2KSA9PSBcIjAwXCIgPyAwIDogdGhpcy5ob3Vyc0NvbnRyb2wudmFsdWUubWludXRlLFxyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICAgIHRoaXMuY29udGFkb3IrKztcclxuICAgICAgICAgIGlmIChlLmtleSA+IDEgJiYgdGhpcy5mb3JtYXQgPT0gMTIpIHtcclxuICAgICAgICAgICAgdGhpcy5vbkVtaXQoKTtcclxuICAgICAgICAgICAgaW5wdXQuc2V0U2VsZWN0aW9uUmFuZ2UoMTQsIDE2KTtcclxuICAgICAgICAgICAgdGhpcy5jb250YWRvciA9IDA7XHJcbiAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICAgIH0gZWxzZSBpZiAoZS5rZXkgPiAyICYmIHRoaXMuZm9ybWF0ID09IDI0KSB7XHJcbiAgICAgICAgICAgIHRoaXMub25FbWl0KCk7XHJcbiAgICAgICAgICAgIGlucHV0LnNldFNlbGVjdGlvblJhbmdlKDE0LCAxNik7XHJcbiAgICAgICAgICAgIHRoaXMuY29udGFkb3IgPSAwO1xyXG4gICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgICB9IGVsc2UgdGhpcy5vbkVtaXQoKTtcclxuICAgICAgICB9IGVsc2UgaWYgKE51bWJlcihob3JhQWN0dWFsKSA8PSAxICYmIE51bWJlcihob3JhQWN0dWFsKSA+IDAgJiYgdGhpcy5jb250YWRvciA+IDAgJiYgdGhpcy5mb3JtYXQgPT0gMTIpIHtcclxuICAgICAgICAgIGNvbnN0IG51ZXZvVmFsb3IgPSBgJHsgdmFsb3JBY3R1YWwuc3Vic3RyaW5nKDAsIDExKSB9JHsgTnVtYmVyKE51bWJlcihob3JhQWN0dWFsKS50b1N0cmluZygpICsgTnVtYmVyKGUua2V5KSkgPiAxMiA/IDEyIDogTnVtYmVyKGhvcmFBY3R1YWwpLnRvU3RyaW5nKCkgKyBOdW1iZXIoZS5rZXkpXHJcbiAgICAgICAgICAgIH0keyB2YWxvckFjdHVhbC5zdWJzdHJpbmcoMTMpIH1gO1xyXG4gICAgICAgICAgdGhpcy5kYXRlVGltZUNvbnRyb2wuc2V0VmFsdWUobnVldm9WYWxvcik7XHJcbiAgICAgICAgICB0aGlzLmhvdXJzQ29udHJvbC5zZXRWYWx1ZSh7XHJcbiAgICAgICAgICAgIC4uLnRoaXMuaG91cnNDb250cm9sLnZhbHVlLFxyXG4gICAgICAgICAgICBob3VyOiAvWzAtMV1bMC05XTpbMC02XVswLTldIFtBLFBdTS8udGVzdCh0aGlzLmRhdGVUaW1lQ29udHJvbC52YWx1ZSEuc3Vic3RyaW5nKDExKSlcclxuICAgICAgICAgICAgICA/IE51bWJlcih0aGlzLl9kYXRlUGlwZS50cmFuc2Zvcm0oYDAxLzAxLzIwMjAgJHsgdGhpcy5kYXRlVGltZUNvbnRyb2wudmFsdWUhLnN1YnN0cmluZygxMSkgfWAsIFwiSEhcIikpXHJcbiAgICAgICAgICAgICAgOiBOdW1iZXIodGhpcy5kYXRlVGltZUNvbnRyb2wudmFsdWUhLnN1YnN0cmluZygxMSwgMTMpKSxcclxuICAgICAgICAgICAgbWludXRlOiB0aGlzLmRhdGVUaW1lQ29udHJvbC52YWx1ZSEuc3Vic3RyaW5nKDE0LCAxNikgPT0gXCIwMFwiID8gMCA6IHRoaXMuaG91cnNDb250cm9sLnZhbHVlLm1pbnV0ZSxcclxuICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgdGhpcy5jb250YWRvcisrO1xyXG4gICAgICAgICAgdGhpcy5vbkVtaXQoKTtcclxuICAgICAgICAgIGlucHV0LnNldFNlbGVjdGlvblJhbmdlKDE0LCAxNik7XHJcbiAgICAgICAgICB0aGlzLmNvbnRhZG9yID0gMDtcclxuICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9IGVsc2UgaWYgKE51bWJlcihob3JhQWN0dWFsKSA8PSAyICYmIE51bWJlcihob3JhQWN0dWFsKSA+IDAgJiYgdGhpcy5jb250YWRvciA+IDAgJiYgdGhpcy5mb3JtYXQgPT0gMjQpIHtcclxuICAgICAgICAgIGNvbnN0IG51ZXZvVmFsb3IgPSBgJHsgdmFsb3JBY3R1YWwuc3Vic3RyaW5nKDAsIDExKSB9JHsgTnVtYmVyKE51bWJlcihob3JhQWN0dWFsKS50b1N0cmluZygpICsgTnVtYmVyKGUua2V5KSkgPiAyNCA/IDI0IDogTnVtYmVyKGhvcmFBY3R1YWwpLnRvU3RyaW5nKCkgKyBOdW1iZXIoZS5rZXkpXHJcbiAgICAgICAgICAgIH0keyB2YWxvckFjdHVhbC5zdWJzdHJpbmcoMTMpIH1gO1xyXG4gICAgICAgICAgdGhpcy5kYXRlVGltZUNvbnRyb2wuc2V0VmFsdWUobnVldm9WYWxvcik7XHJcbiAgICAgICAgICBsZXQgaG91cjtcclxuICAgICAgICAgIHRyeSB7XHJcbiAgICAgICAgICAgIGhvdXIgPSAvWzAtMV1bMC05XTpbMC02XVswLTldLy50ZXN0KHRoaXMuZGF0ZVRpbWVDb250cm9sLnZhbHVlIS5zdWJzdHJpbmcoMTEpKVxyXG4gICAgICAgICAgICAgID8gTnVtYmVyKHRoaXMuX2RhdGVQaXBlLnRyYW5zZm9ybShgMDEvMDEvMjAyMCAkeyB0aGlzLmRhdGVUaW1lQ29udHJvbC52YWx1ZSEuc3Vic3RyaW5nKDExKSB9YCwgXCJISFwiKSlcclxuICAgICAgICAgICAgICA6IE51bWJlcih0aGlzLmRhdGVUaW1lQ29udHJvbC52YWx1ZSEuc3Vic3RyaW5nKDExLCAxMykpO1xyXG4gICAgICAgICAgfSBjYXRjaCAoZXJyb3IpIHtcclxuICAgICAgICAgICAgaG91ciA9IE51bWJlcih0aGlzLmRhdGVUaW1lQ29udHJvbC52YWx1ZSEuc3Vic3RyaW5nKDExLCAxMykpO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgdGhpcy5ob3Vyc0NvbnRyb2wuc2V0VmFsdWUoe1xyXG4gICAgICAgICAgICAuLi50aGlzLmhvdXJzQ29udHJvbC52YWx1ZSxcclxuICAgICAgICAgICAgaG91cixcclxuICAgICAgICAgICAgbWludXRlOiB0aGlzLmRhdGVUaW1lQ29udHJvbC52YWx1ZSEuc3Vic3RyaW5nKDE0LCAxNikgPT0gXCIwMFwiID8gMCA6IHRoaXMuaG91cnNDb250cm9sLnZhbHVlLm1pbnV0ZSxcclxuICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgdGhpcy5jb250YWRvcisrO1xyXG4gICAgICAgICAgdGhpcy5vbkVtaXQoKTtcclxuICAgICAgICAgIGlucHV0LnNldFNlbGVjdGlvblJhbmdlKDE0LCAxNik7XHJcbiAgICAgICAgICB0aGlzLmNvbnRhZG9yID0gMDtcclxuICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgY29uc3QgbnVldm9WYWxvciA9IGAkeyB2YWxvckFjdHVhbC5zdWJzdHJpbmcoMCwgMTEpIH0keyBlLmtleS5wYWRTdGFydCgyLCAwKSB9JHsgdmFsb3JBY3R1YWwuc3Vic3RyaW5nKDEzKSB9YDtcclxuICAgICAgICAgIHRoaXMuZGF0ZVRpbWVDb250cm9sLnNldFZhbHVlKG51ZXZvVmFsb3IpO1xyXG4gICAgICAgICAgY29uc3QgcmVnZXggPSB0aGlzLmZvcm1hdCA9PSAxMiA/IC9bMC0xXVswLTldOlswLTZdWzAtOV0gW0EsUF1NLyA6IC9bMC0xXVswLTldOlswLTZdWzAtOV0vO1xyXG5cclxuICAgICAgICAgIHRoaXMuaG91cnNDb250cm9sLnNldFZhbHVlKHtcclxuICAgICAgICAgICAgLi4udGhpcy5ob3Vyc0NvbnRyb2wudmFsdWUsXHJcbiAgICAgICAgICAgIGhvdXI6IHJlZ2V4LnRlc3QodGhpcy5kYXRlVGltZUNvbnRyb2wudmFsdWUhLnN1YnN0cmluZygxMSkpXHJcbiAgICAgICAgICAgICAgPyBOdW1iZXIodGhpcy5fZGF0ZVBpcGUudHJhbnNmb3JtKGAwMS8wMS8yMDIwICR7IHRoaXMuZGF0ZVRpbWVDb250cm9sLnZhbHVlIS5zdWJzdHJpbmcoMTEpIH1gLCBcIkhIXCIpKVxyXG4gICAgICAgICAgICAgIDogTnVtYmVyKHRoaXMuZGF0ZVRpbWVDb250cm9sLnZhbHVlIS5zdWJzdHJpbmcoMTEsIDEzKSksXHJcbiAgICAgICAgICAgIG1pbnV0ZTpcclxuICAgICAgICAgICAgICB0aGlzLmRhdGVUaW1lQ29udHJvbC52YWx1ZSEuc3Vic3RyaW5nKDE0LCAxNikgPT0gXCIwMFwiIHx8IHRoaXMuZGF0ZVRpbWVDb250cm9sLnZhbHVlIS5zdWJzdHJpbmcoMTQsIDE2KSA9PSBcIi0tXCJcclxuICAgICAgICAgICAgICAgID8gMFxyXG4gICAgICAgICAgICAgICAgOiB0aGlzLmhvdXJzQ29udHJvbC52YWx1ZS5taW51dGUsXHJcbiAgICAgICAgICB9KTtcclxuICAgICAgICAgIHRoaXMuY29udGFkb3IrKztcclxuICAgICAgICAgIGlmICgoTnVtYmVyKGUua2V5LnBhZFN0YXJ0KDIsIDApKSA+IDEgfHwgdGhpcy5jb250YWRvciA+IDEpICYmIHRoaXMuZm9ybWF0ID09IDEyKSB7XHJcbiAgICAgICAgICAgIHRoaXMub25FbWl0KCk7XHJcbiAgICAgICAgICAgIGlucHV0LnNldFNlbGVjdGlvblJhbmdlKDE0LCAxNik7XHJcbiAgICAgICAgICAgIHRoaXMuY29udGFkb3IgPSAwO1xyXG4gICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgICB9IGVsc2UgaWYgKChOdW1iZXIoZS5rZXkucGFkU3RhcnQoMiwgMCkpID4gMiB8fCB0aGlzLmNvbnRhZG9yID4gMSkgJiYgdGhpcy5mb3JtYXQgPT0gMjQpIHtcclxuICAgICAgICAgICAgdGhpcy5vbkVtaXQoKTtcclxuICAgICAgICAgICAgaW5wdXQuc2V0U2VsZWN0aW9uUmFuZ2UoMTQsIDE2KTtcclxuICAgICAgICAgICAgdGhpcy5jb250YWRvciA9IDA7XHJcbiAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICAgIH0gZWxzZSB0aGlzLm9uRW1pdCgpO1xyXG4gICAgICAgIH1cclxuICAgICAgICB0aGlzLm9uRW1pdCgpO1xyXG4gICAgICAgIGlucHV0LnNldFNlbGVjdGlvblJhbmdlKDExLCAxMyk7XHJcbiAgICAgIH1cclxuICAgICAgLy89PT09PT09PT09PT09PT09PT09PT09PT09PT09IE1JTlVUT1MgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxyXG4gICAgICBlbHNlIGlmIChpbnB1dC5zZWxlY3Rpb25TdGFydCA9PSAxNCAmJiBpbnB1dC5zZWxlY3Rpb25FbmQgPT0gMTYpIHtcclxuICAgICAgICBjb25zdCB2YWxvckFjdHVhbDogc3RyaW5nID0gdGhpcy5kYXRlVGltZUNvbnRyb2wudmFsdWUhO1xyXG4gICAgICAgIGNvbnN0IG1pbnV0b3NBY3R1YWxlczogc3RyaW5nID0gdmFsb3JBY3R1YWwuc3Vic3RyaW5nKDE0LCAxNik7XHJcbiAgICAgICAgaWYgKG1pbnV0b3NBY3R1YWxlcyA9PSBcIi0tXCIpIHtcclxuICAgICAgICAgIGNvbnN0IG51ZXZvVmFsb3IgPSBgJHsgdmFsb3JBY3R1YWwuc3Vic3RyaW5nKDAsIDE0KSB9JHsgZS5rZXkucGFkU3RhcnQoMiwgMCkgfSR7IHZhbG9yQWN0dWFsLnN1YnN0cmluZygxNikgfWA7XHJcbiAgICAgICAgICB0aGlzLmRhdGVUaW1lQ29udHJvbC5zZXRWYWx1ZShudWV2b1ZhbG9yKTtcclxuICAgICAgICAgIHRoaXMuaG91cnNDb250cm9sLnNldFZhbHVlKHtcclxuICAgICAgICAgICAgLi4udGhpcy5ob3Vyc0NvbnRyb2wudmFsdWUsXHJcbiAgICAgICAgICAgIG1pbnV0ZTogL1swLTFdWzAtOV06WzAtNl1bMC05XSBbQSxQXU0vLnRlc3QodGhpcy5kYXRlVGltZUNvbnRyb2wudmFsdWUhLnN1YnN0cmluZygxMSkpXHJcbiAgICAgICAgICAgICAgPyBOdW1iZXIodGhpcy5fZGF0ZVBpcGUudHJhbnNmb3JtKGAwMS8wMS8yMDIwICR7IHRoaXMuZGF0ZVRpbWVDb250cm9sLnZhbHVlIS5zdWJzdHJpbmcoMTEpIH1gLCBcIm1tXCIpKVxyXG4gICAgICAgICAgICAgIDogTnVtYmVyKHRoaXMuZGF0ZVRpbWVDb250cm9sLnZhbHVlIS5zdWJzdHJpbmcoMTQsIDE2KSksXHJcbiAgICAgICAgICB9KTtcclxuICAgICAgICAgIHRoaXMuY29udGFkb3IrKztcclxuICAgICAgICAgIGlmIChlLmtleSA+IDUpIHtcclxuICAgICAgICAgICAgdGhpcy5vbkVtaXQoKTtcclxuICAgICAgICAgICAgaWYgKHRoaXMuZm9ybWF0ID09IDEyKSBpbnB1dC5zZXRTZWxlY3Rpb25SYW5nZSgxNywgMTkpO1xyXG4gICAgICAgICAgICBlbHNlIGlucHV0LnNldFNlbGVjdGlvblJhbmdlKDE0LCAxNik7XHJcbiAgICAgICAgICAgIHRoaXMuY29udGFkb3IgPSAwO1xyXG4gICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgICB9IGVsc2UgdGhpcy5vbkVtaXQoKTtcclxuICAgICAgICB9IGVsc2UgaWYgKE51bWJlcihtaW51dG9zQWN0dWFsZXMpIDw9IDUgJiYgTnVtYmVyKG1pbnV0b3NBY3R1YWxlcykgPiAwICYmIHRoaXMuY29udGFkb3IgPiAwKSB7XHJcbiAgICAgICAgICBjb25zdCBudWV2b1ZhbG9yID0gYCR7IHZhbG9yQWN0dWFsLnN1YnN0cmluZygwLCAxNCkgfSR7IE51bWJlcihOdW1iZXIobWludXRvc0FjdHVhbGVzKS50b1N0cmluZygpICsgTnVtYmVyKGUua2V5KSkgPiA1OSA/IDU5IDogTnVtYmVyKG1pbnV0b3NBY3R1YWxlcykudG9TdHJpbmcoKSArIE51bWJlcihlLmtleSlcclxuICAgICAgICAgICAgfSR7IHZhbG9yQWN0dWFsLnN1YnN0cmluZygxNikgfWA7XHJcbiAgICAgICAgICB0aGlzLmRhdGVUaW1lQ29udHJvbC5zZXRWYWx1ZShudWV2b1ZhbG9yKTtcclxuICAgICAgICAgIGxldCBtaW51dGU7XHJcbiAgICAgICAgICBjb25zdCByZWdleCA9IHRoaXMuZm9ybWF0ID09IDEyID8gL1swLTFdWzAtOV06WzAtNl1bMC05XSBbQSxQXU0vIDogL1swLTFdWzAtOV06WzAtNl1bMC05XS87XHJcbiAgICAgICAgICB0cnkge1xyXG4gICAgICAgICAgICBtaW51dGUgPSByZWdleC50ZXN0KHRoaXMuZGF0ZVRpbWVDb250cm9sLnZhbHVlIS5zdWJzdHJpbmcoMTEpKVxyXG4gICAgICAgICAgICAgID8gTnVtYmVyKHRoaXMuX2RhdGVQaXBlLnRyYW5zZm9ybShgMDEvMDEvMjAyMCAkeyB0aGlzLmRhdGVUaW1lQ29udHJvbC52YWx1ZSEuc3Vic3RyaW5nKDExKSB9YCwgXCJtbVwiKSlcclxuICAgICAgICAgICAgICA6IE51bWJlcih0aGlzLmRhdGVUaW1lQ29udHJvbC52YWx1ZSEuc3Vic3RyaW5nKDE0LCAxNikpO1xyXG4gICAgICAgICAgfSBjYXRjaCAoZXJyb3IpIHtcclxuICAgICAgICAgICAgbWludXRlID0gTnVtYmVyKHRoaXMuZGF0ZVRpbWVDb250cm9sLnZhbHVlIS5zdWJzdHJpbmcoMTQsIDE2KSk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICB0aGlzLmhvdXJzQ29udHJvbC5zZXRWYWx1ZSh7XHJcbiAgICAgICAgICAgIC4uLnRoaXMuaG91cnNDb250cm9sLnZhbHVlLFxyXG4gICAgICAgICAgICBtaW51dGUsXHJcbiAgICAgICAgICB9KTtcclxuICAgICAgICAgIHRoaXMuY29udGFkb3IrKztcclxuICAgICAgICAgIHRoaXMub25FbWl0KCk7XHJcbiAgICAgICAgICBpZiAodGhpcy5mb3JtYXQgPT0gMTIpIGlucHV0LnNldFNlbGVjdGlvblJhbmdlKDE3LCAxOSk7XHJcbiAgICAgICAgICBlbHNlIGlucHV0LnNldFNlbGVjdGlvblJhbmdlKDE0LCAxNik7XHJcbiAgICAgICAgICB0aGlzLmNvbnRhZG9yID0gMDtcclxuICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgY29uc3QgbnVldm9WYWxvciA9IGAkeyB2YWxvckFjdHVhbC5zdWJzdHJpbmcoMCwgMTQpIH0keyBlLmtleS5wYWRTdGFydCgyLCAwKSB9JHsgdmFsb3JBY3R1YWwuc3Vic3RyaW5nKDE2KSB9YDtcclxuICAgICAgICAgIHRoaXMuZGF0ZVRpbWVDb250cm9sLnNldFZhbHVlKG51ZXZvVmFsb3IpO1xyXG4gICAgICAgICAgdGhpcy5ob3Vyc0NvbnRyb2wuc2V0VmFsdWUoe1xyXG4gICAgICAgICAgICAuLi50aGlzLmhvdXJzQ29udHJvbC52YWx1ZSxcclxuICAgICAgICAgICAgbWludXRlOiAvWzAtMV1bMC05XTpbMC02XVswLTldIFtBLFBdTS8udGVzdCh0aGlzLmRhdGVUaW1lQ29udHJvbC52YWx1ZSEuc3Vic3RyaW5nKDExKSlcclxuICAgICAgICAgICAgICA/IE51bWJlcih0aGlzLl9kYXRlUGlwZS50cmFuc2Zvcm0oYDAxLzAxLzIwMjAgJHsgdGhpcy5kYXRlVGltZUNvbnRyb2wudmFsdWUhLnN1YnN0cmluZygxMSkgfWAsIFwibW1cIikpXHJcbiAgICAgICAgICAgICAgOiBOdW1iZXIodGhpcy5kYXRlVGltZUNvbnRyb2wudmFsdWUhLnN1YnN0cmluZygxNCwgMTYpKSxcclxuICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgdGhpcy5jb250YWRvcisrO1xyXG4gICAgICAgICAgaWYgKE51bWJlcihlLmtleS5wYWRTdGFydCgyLCAwKSkgPiA1IHx8IHRoaXMuY29udGFkb3IgPiAxKSB7XHJcbiAgICAgICAgICAgIHRoaXMub25FbWl0KCk7XHJcbiAgICAgICAgICAgIGlmICh0aGlzLmZvcm1hdCA9PSAxMikgaW5wdXQuc2V0U2VsZWN0aW9uUmFuZ2UoMTcsIDE5KTtcclxuICAgICAgICAgICAgZWxzZSBpbnB1dC5zZXRTZWxlY3Rpb25SYW5nZSgxNCwgMTYpO1xyXG4gICAgICAgICAgICB0aGlzLmNvbnRhZG9yID0gMDtcclxuICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgICAgfSBlbHNlIHRoaXMub25FbWl0KCk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHRoaXMub25FbWl0KCk7XHJcbiAgICAgICAgaW5wdXQuc2V0U2VsZWN0aW9uUmFuZ2UoMTQsIDE2KTtcclxuICAgICAgfVxyXG4gICAgfSBlbHNlIHtcclxuICAgICAgLy89PT09PT09PT09PT09PT09PT09PT09PT0gRVZFTlRPUyBURUNMQURPID09PT09PT09PT09PT09PT09PT09PT09PT09PVxyXG4gICAgICBpZiAoZS5rZXkgPT0gXCJBcnJvd1JpZ2h0XCIpIHtcclxuICAgICAgICBpZiAoaW5wdXQuc2VsZWN0aW9uU3RhcnQgPT0gMCAmJiBpbnB1dC5zZWxlY3Rpb25FbmQgPT0gMikge1xyXG4gICAgICAgICAgaW5wdXQuc2V0U2VsZWN0aW9uUmFuZ2UoMywgNSk7XHJcbiAgICAgICAgICB0aGlzLmNvbnRhZG9yID0gMDtcclxuICAgICAgICB9IGVsc2UgaWYgKGlucHV0LnNlbGVjdGlvblN0YXJ0ID09IDMgJiYgaW5wdXQuc2VsZWN0aW9uRW5kID09IDUpIHtcclxuICAgICAgICAgIGlucHV0LnNldFNlbGVjdGlvblJhbmdlKDYsIDEwKTtcclxuICAgICAgICAgIHRoaXMuY29udGFkb3IgPSAwO1xyXG4gICAgICAgIH0gZWxzZSBpZiAoaW5wdXQuc2VsZWN0aW9uU3RhcnQgPT0gNiAmJiBpbnB1dC5zZWxlY3Rpb25FbmQgPT0gMTApIHtcclxuICAgICAgICAgIGlucHV0LnNldFNlbGVjdGlvblJhbmdlKDExLCAxMyk7XHJcbiAgICAgICAgICB0aGlzLmNvbnRhZG9yID0gMDtcclxuICAgICAgICB9IGVsc2UgaWYgKGlucHV0LnNlbGVjdGlvblN0YXJ0ID09IDExICYmIGlucHV0LnNlbGVjdGlvbkVuZCA9PSAxMykge1xyXG4gICAgICAgICAgaW5wdXQuc2V0U2VsZWN0aW9uUmFuZ2UoMTQsIDE2KTtcclxuICAgICAgICAgIHRoaXMuY29udGFkb3IgPSAwO1xyXG4gICAgICAgIH0gZWxzZSBpZiAoaW5wdXQuc2VsZWN0aW9uU3RhcnQgPT0gMTQgJiYgaW5wdXQuc2VsZWN0aW9uRW5kID09IDE2KSB7XHJcbiAgICAgICAgICBpZiAodGhpcy5mb3JtYXQgPT0gMTIpIGlucHV0LnNldFNlbGVjdGlvblJhbmdlKDE3LCAxOSk7XHJcbiAgICAgICAgICBlbHNlIGlmICh0aGlzLmZvcm1hdCA9PSAyNCkgdGhpcy5idG5PcGVuPy5uYXRpdmVFbGVtZW50LmZvY3VzKCk7XHJcbiAgICAgICAgICB0aGlzLmNvbnRhZG9yID0gMDtcclxuICAgICAgICB9IGVsc2UgaWYgKGlucHV0LnNlbGVjdGlvblN0YXJ0ID09IDE3ICYmIGlucHV0LnNlbGVjdGlvbkVuZCA9PSAxOSkge1xyXG4gICAgICAgICAgdGhpcy5idG5PcGVuPy5uYXRpdmVFbGVtZW50LmZvY3VzKCk7XHJcbiAgICAgICAgICB0aGlzLmNvbnRhZG9yID0gMDtcclxuICAgICAgICB9XHJcbiAgICAgIH0gZWxzZSBpZiAoZS5rZXkgPT0gXCJBcnJvd0xlZnRcIikge1xyXG4gICAgICAgIGlmIChpbnB1dC5zZWxlY3Rpb25TdGFydCA9PSAwICYmIGlucHV0LnNlbGVjdGlvbkVuZCA9PSAyKSB7XHJcbiAgICAgICAgICB0aGlzLmdvQmFjaygpO1xyXG4gICAgICAgICAgdGhpcy5jb250YWRvciA9IDA7XHJcbiAgICAgICAgfSBlbHNlIGlmIChpbnB1dC5zZWxlY3Rpb25TdGFydCA9PSAzICYmIGlucHV0LnNlbGVjdGlvbkVuZCA9PSA1KSB7XHJcbiAgICAgICAgICBpbnB1dC5zZXRTZWxlY3Rpb25SYW5nZSgwLCAyKTtcclxuICAgICAgICAgIHRoaXMuY29udGFkb3IgPSAwO1xyXG4gICAgICAgIH0gZWxzZSBpZiAoaW5wdXQuc2VsZWN0aW9uU3RhcnQgPT0gNiAmJiBpbnB1dC5zZWxlY3Rpb25FbmQgPT0gMTApIHtcclxuICAgICAgICAgIGlucHV0LnNldFNlbGVjdGlvblJhbmdlKDMsIDUpO1xyXG4gICAgICAgICAgdGhpcy5jb250YWRvciA9IDA7XHJcbiAgICAgICAgfSBlbHNlIGlmIChpbnB1dC5zZWxlY3Rpb25TdGFydCA9PSAxMSAmJiBpbnB1dC5zZWxlY3Rpb25FbmQgPT0gMTMpIHtcclxuICAgICAgICAgIGlucHV0LnNldFNlbGVjdGlvblJhbmdlKDYsIDEwKTtcclxuICAgICAgICAgIHRoaXMuY29udGFkb3IgPSAwO1xyXG4gICAgICAgIH0gZWxzZSBpZiAoaW5wdXQuc2VsZWN0aW9uU3RhcnQgPT0gMTQgJiYgaW5wdXQuc2VsZWN0aW9uRW5kID09IDE2KSB7XHJcbiAgICAgICAgICBpbnB1dC5zZXRTZWxlY3Rpb25SYW5nZSgxMSwgMTMpO1xyXG4gICAgICAgICAgdGhpcy5jb250YWRvciA9IDA7XHJcbiAgICAgICAgfSBlbHNlIGlmIChpbnB1dC5zZWxlY3Rpb25TdGFydCA9PSAxNyAmJiBpbnB1dC5zZWxlY3Rpb25FbmQgPT0gMTkpIHtcclxuICAgICAgICAgIGlucHV0LnNldFNlbGVjdGlvblJhbmdlKDE0LCAxNik7XHJcbiAgICAgICAgICB0aGlzLmNvbnRhZG9yID0gMDtcclxuICAgICAgICB9XHJcbiAgICAgIH0gZWxzZSBpZiAoZS5rZXkudG9Mb3dlckNhc2UoKSA9PSBcImFcIikge1xyXG4gICAgICAgIGlmIChpbnB1dC5zZWxlY3Rpb25TdGFydCA9PSAxNyAmJiBpbnB1dC5zZWxlY3Rpb25FbmQgPT0gMTkpIHtcclxuICAgICAgICAgIGNvbnN0IHZhbG9yQWN0dWFsID0gdGhpcy5kYXRlVGltZUNvbnRyb2wudmFsdWU7XHJcbiAgICAgICAgICBjb25zdCBudWV2b1ZhbG9yID0gYCR7IHZhbG9yQWN0dWFsIS5zdWJzdHJpbmcoMCwgMTcpIH1BTWA7XHJcbiAgICAgICAgICB0aGlzLmRhdGVUaW1lQ29udHJvbC5zZXRWYWx1ZShudWV2b1ZhbG9yKTtcclxuICAgICAgICAgIHRoaXMuaG91cnNDb250cm9sLnNldFZhbHVlKHtcclxuICAgICAgICAgICAgLi4udGhpcy5ob3Vyc0NvbnRyb2wudmFsdWUsXHJcbiAgICAgICAgICAgIGhvdXI6IE51bWJlcih0aGlzLl9kYXRlUGlwZS50cmFuc2Zvcm0oYDAxLzAxLzIwMjAgJHsgdGhpcy5kYXRlVGltZUNvbnRyb2wudmFsdWUhLnN1YnN0cmluZygxMSkgfWAsIFwiSEhcIikpLFxyXG4gICAgICAgICAgfSk7XHJcbiAgICAgICAgICB0aGlzLm9uRW1pdCgpO1xyXG4gICAgICAgICAgaW5wdXQuc2V0U2VsZWN0aW9uUmFuZ2UoMTcsIDE5KTtcclxuICAgICAgICB9XHJcbiAgICAgIH0gZWxzZSBpZiAoZS5rZXkudG9Mb3dlckNhc2UoKSA9PSBcInBcIikge1xyXG4gICAgICAgIGlmIChpbnB1dC5zZWxlY3Rpb25TdGFydCA9PSAxNyAmJiBpbnB1dC5zZWxlY3Rpb25FbmQgPT0gMTkpIHtcclxuICAgICAgICAgIGNvbnN0IHZhbG9yQWN0dWFsID0gdGhpcy5kYXRlVGltZUNvbnRyb2wudmFsdWU7XHJcbiAgICAgICAgICBjb25zdCBudWV2b1ZhbG9yID0gYCR7IHZhbG9yQWN0dWFsIS5zdWJzdHJpbmcoMCwgMTcpIH1QTWA7XHJcbiAgICAgICAgICB0aGlzLmRhdGVUaW1lQ29udHJvbC5zZXRWYWx1ZShudWV2b1ZhbG9yKTtcclxuICAgICAgICAgIHRoaXMuaG91cnNDb250cm9sLnNldFZhbHVlKHtcclxuICAgICAgICAgICAgLi4udGhpcy5ob3Vyc0NvbnRyb2wudmFsdWUsXHJcbiAgICAgICAgICAgIGhvdXI6IE51bWJlcih0aGlzLl9kYXRlUGlwZS50cmFuc2Zvcm0oYDAxLzAxLzIwMjAgJHsgdGhpcy5kYXRlVGltZUNvbnRyb2wudmFsdWUhLnN1YnN0cmluZygxMSkgfWAsIFwiSEhcIikpLFxyXG4gICAgICAgICAgfSk7XHJcbiAgICAgICAgICB0aGlzLm9uRW1pdCgpO1xyXG4gICAgICAgICAgaW5wdXQuc2V0U2VsZWN0aW9uUmFuZ2UoMTcsIDE5KTtcclxuICAgICAgICB9XHJcbiAgICAgIH0gZWxzZSBpZiAoZS5jb2RlID09IFwiU3BhY2VcIiAmJiB0aGlzLmF1dG9Db21wbGV0ZSkge1xyXG4gICAgICAgIGNvbnN0IHZhbG9yQWN0dWFsOiBzdHJpbmcgPSB0aGlzLmRhdGVUaW1lQ29udHJvbC52YWx1ZSE7XHJcbiAgICAgICAgY29uc3QgZGlhQWN0dWFsOiBzdHJpbmcgPSB0aGlzLnRvZGF5LmRheS50b1N0cmluZygpO1xyXG4gICAgICAgIGNvbnN0IG1lc0FjdHVhbDogc3RyaW5nID0gdGhpcy50b2RheS5tb250aC50b1N0cmluZygpO1xyXG4gICAgICAgIGNvbnN0IGFuaW9BY3R1YWw6IHN0cmluZyA9IHRoaXMudG9kYXkueWVhci50b1N0cmluZygpO1xyXG4gICAgICAgIGNvbnN0IGhvcmFBY3R1YWw6IHN0cmluZyA9IERhdGVVdGlsLnRvU3RyRm9ybWF0KERhdGVVdGlsLm5vdyhcIklTT0RBVEVUSU1FX05PX1RJTUVaT05FXCIpLCB0aGlzLmZvcm1hdCA9PSAyNCA/IFwiTUFTS18yNF9IT1VSU1wiIDogXCJNQVNLXzEyX0hPVVJTXCIpO1xyXG4gICAgICAgIGNvbnN0IHQ6IHN0cmluZyA9IERhdGVVdGlsLnRvU3RyRm9ybWF0KERhdGVVdGlsLm5vdyhcIklTT0RBVEVUSU1FX05PX1RJTUVaT05FXCIpLCBcIk1JRERBWV9JTkRJQ0FUT1JcIik7XHJcbiAgICAgICAgY29uc3QgbWludXRvc0FjdHVhbGVzOiBzdHJpbmcgPSBEYXRlVXRpbC5nZXRNaW51dGVzKERhdGVVdGlsLm5vdyhcIklTT0RBVEVUSU1FX05PX1RJTUVaT05FXCIpKS50b1N0cmluZygpLnBhZFN0YXJ0KDIsIFwiMFwiKTtcclxuICAgICAgICBpZiAoaW5wdXQuc2VsZWN0aW9uU3RhcnQgPT0gMCAmJiBpbnB1dC5zZWxlY3Rpb25FbmQgPT0gMikge1xyXG4gICAgICAgICAgY29uc3QgbnVldm9WYWxvciA9IGAkeyBkaWFBY3R1YWwucGFkU3RhcnQoMiwgXCIwXCIpIH0keyB2YWxvckFjdHVhbC5zdWJzdHJpbmcoMikgfWA7XHJcbiAgICAgICAgICB0aGlzLmRhdGVUaW1lQ29udHJvbC5zZXRWYWx1ZShudWV2b1ZhbG9yKTtcclxuICAgICAgICAgIHRoaXMuZGF0ZUNvbnRyb2wuc2V0VmFsdWUoXHJcbiAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICAuLi50aGlzLmRhdGVDb250cm9sLnZhbHVlLFxyXG4gICAgICAgICAgICAgIGRheTogdGhpcy50b2RheS5kYXksXHJcbiAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgIHsgZW1pdEV2ZW50OiBmYWxzZSB9XHJcbiAgICAgICAgICApO1xyXG4gICAgICAgICAgaW5wdXQuc2V0U2VsZWN0aW9uUmFuZ2UoMywgNSk7XHJcbiAgICAgICAgfSBlbHNlIGlmIChpbnB1dC5zZWxlY3Rpb25TdGFydCA9PSAzICYmIGlucHV0LnNlbGVjdGlvbkVuZCA9PSA1KSB7XHJcbiAgICAgICAgICBjb25zdCBudWV2b1ZhbG9yID0gYCR7IHZhbG9yQWN0dWFsLnN1YnN0cmluZygwLCAzKSB9JHsgbWVzQWN0dWFsLnBhZFN0YXJ0KDIsIFwiMFwiKSB9JHsgdmFsb3JBY3R1YWwuc3Vic3RyaW5nKDUpIH1gO1xyXG4gICAgICAgICAgdGhpcy5kYXRlVGltZUNvbnRyb2wuc2V0VmFsdWUobnVldm9WYWxvcik7XHJcbiAgICAgICAgICB0aGlzLmRhdGVDb250cm9sLnNldFZhbHVlKFxyXG4gICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgLi4udGhpcy5kYXRlQ29udHJvbC52YWx1ZSxcclxuICAgICAgICAgICAgICBtb250aDogdGhpcy50b2RheS5tb250aCxcclxuICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgeyBlbWl0RXZlbnQ6IGZhbHNlIH1cclxuICAgICAgICAgICk7XHJcbiAgICAgICAgICBpbnB1dC5zZXRTZWxlY3Rpb25SYW5nZSg2LCAxMCk7XHJcbiAgICAgICAgfSBlbHNlIGlmIChpbnB1dC5zZWxlY3Rpb25TdGFydCA9PSA2ICYmIGlucHV0LnNlbGVjdGlvbkVuZCA9PSAxMCkge1xyXG4gICAgICAgICAgY29uc3QgbnVldm9WYWxvciA9IGAkeyB2YWxvckFjdHVhbC5zdWJzdHJpbmcoMCwgNikgfSR7IGFuaW9BY3R1YWwucGFkU3RhcnQoNCwgXCIwXCIpIH0keyB2YWxvckFjdHVhbC5zdWJzdHJpbmcoMTApIH1gO1xyXG4gICAgICAgICAgdGhpcy5kYXRlVGltZUNvbnRyb2wuc2V0VmFsdWUobnVldm9WYWxvcik7XHJcbiAgICAgICAgICB0aGlzLmRhdGVDb250cm9sLnNldFZhbHVlKFxyXG4gICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgLi4udGhpcy5kYXRlQ29udHJvbC52YWx1ZSxcclxuICAgICAgICAgICAgICB5ZWFyOiB0aGlzLnRvZGF5LnllYXIsXHJcbiAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgIHsgZW1pdEV2ZW50OiBmYWxzZSB9XHJcbiAgICAgICAgICApO1xyXG4gICAgICAgICAgaW5wdXQuc2V0U2VsZWN0aW9uUmFuZ2UoMTEsIDEzKTtcclxuICAgICAgICB9IGVsc2UgaWYgKGlucHV0LnNlbGVjdGlvblN0YXJ0ID09IDExICYmIGlucHV0LnNlbGVjdGlvbkVuZCA9PSAxMykge1xyXG4gICAgICAgICAgbGV0IG51ZXZvVmFsb3I7XHJcbiAgICAgICAgICBpZiAodGhpcy5mb3JtYXQgPT0gMjQpIG51ZXZvVmFsb3IgPSBgJHsgdmFsb3JBY3R1YWwuc3Vic3RyaW5nKDAsIDExKSB9JHsgaG9yYUFjdHVhbCB9JHsgdmFsb3JBY3R1YWwuc3Vic3RyaW5nKDEzKSB9YDtcclxuICAgICAgICAgIGVsc2UgaWYgKHRoaXMuZm9ybWF0ID09IDEyKVxyXG4gICAgICAgICAgICBudWV2b1ZhbG9yID0gYCR7IHZhbG9yQWN0dWFsLnN1YnN0cmluZygwLCAxMSkgfSR7IGhvcmFBY3R1YWwgfSR7IHZhbG9yQWN0dWFsLnN1YnN0cmluZygxMywgMTcpIH0keyB0LnRvVXBwZXJDYXNlKCkgfWA7XHJcblxyXG4gICAgICAgICAgdGhpcy5kYXRlVGltZUNvbnRyb2wuc2V0VmFsdWUobnVldm9WYWxvciEpO1xyXG4gICAgICAgICAgdGhpcy5ob3Vyc0NvbnRyb2wuc2V0VmFsdWUoe1xyXG4gICAgICAgICAgICAuLi50aGlzLmhvdXJzQ29udHJvbC52YWx1ZSxcclxuICAgICAgICAgICAgbWludXRlOiB0aGlzLmhvdXJzQ29udHJvbC52YWx1ZS5taW51dGUgIT0gbnVsbCA/IHRoaXMuaG91cnNDb250cm9sLnZhbHVlLm1pbnV0ZSA6IDAsXHJcbiAgICAgICAgICAgIGhvdXI6IHRoaXMuZm9ybWF0ID09IDEyID8gTnVtYmVyKGhvcmFBY3R1YWwpIDogTnVtYmVyKGhvcmFBY3R1YWwpICsgMTIsXHJcbiAgICAgICAgICB9KTtcclxuICAgICAgICAgIGlucHV0LnNldFNlbGVjdGlvblJhbmdlKDE0LCAxNik7XHJcbiAgICAgICAgfSBlbHNlIGlmIChpbnB1dC5zZWxlY3Rpb25TdGFydCA9PSAxNCAmJiBpbnB1dC5zZWxlY3Rpb25FbmQgPT0gMTYpIHtcclxuICAgICAgICAgIGNvbnN0IG51ZXZvVmFsb3IgPSBgJHsgdmFsb3JBY3R1YWwuc3Vic3RyaW5nKDAsIDE0KSB9JHsgbWludXRvc0FjdHVhbGVzLnBhZFN0YXJ0KDIsIFwiMFwiKSB9JHsgdmFsb3JBY3R1YWwuc3Vic3RyaW5nKDE2KSB9YDtcclxuICAgICAgICAgIHRoaXMuZGF0ZVRpbWVDb250cm9sLnNldFZhbHVlKG51ZXZvVmFsb3IpO1xyXG4gICAgICAgICAgdGhpcy5ob3Vyc0NvbnRyb2wuc2V0VmFsdWUoe1xyXG4gICAgICAgICAgICAuLi50aGlzLmhvdXJzQ29udHJvbC52YWx1ZSxcclxuICAgICAgICAgICAgbWludXRlOiBOdW1iZXIobWludXRvc0FjdHVhbGVzKSxcclxuICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgaWYgKHRoaXMuZm9ybWF0ID09IDEyKSBpbnB1dC5zZXRTZWxlY3Rpb25SYW5nZSgxNywgMTkpO1xyXG4gICAgICAgICAgZWxzZSBpbnB1dC5zZXRTZWxlY3Rpb25SYW5nZSgxNCwgMTYpO1xyXG4gICAgICAgIH1cclxuICAgICAgICB0aGlzLm9uRW1pdCgpO1xyXG4gICAgICB9IGVsc2UgaWYgKGUua2V5ID09IFwiRW50ZXJcIiB8fCBlLmtleSA9PSBcIkFycm93RG93blwiKSB7XHJcbiAgICAgICAgdGhpcy5nb05leHQoKTtcclxuICAgICAgfSBlbHNlIGlmIChlLmtleSA9PSBcIkFycm93VXBcIikge1xyXG4gICAgICAgIHRoaXMuZ29CYWNrKCk7XHJcbiAgICAgIH0gZWxzZSBpZiAoZS5rZXkgPT0gXCJEZWxldGVcIikge1xyXG4gICAgICAgIHRoaXMubGltcGlhclRvZG8oKTtcclxuICAgICAgfSBlbHNlIGlmIChlLmtleSA9PSBcIkJhY2tzcGFjZVwiKSB7XHJcbiAgICAgICAgdGhpcy5saW1waWFyKCk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcblxyXG4gIGdvTmV4dCAoKTogdm9pZCB7XHJcbiAgICBpZiAodGhpcy5uZXh0ICE9IHVuZGVmaW5lZCkge1xyXG4gICAgICBpZiAodGhpcy5uZXh0LmRpc2FibGVkIHx8IHRoaXMubmV4dC5yZWFkb25seSkge1xyXG4gICAgICAgIGlmICh0aGlzLm5leHRJc0Rpc2FibGUgIT0gdW5kZWZpbmVkKSB7XHJcbiAgICAgICAgICB0aGlzLm5leHRJc0Rpc2FibGUuZm9jdXMoKTtcclxuICAgICAgICB9XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgdGhpcy5uZXh0LmZvY3VzKCk7XHJcbiAgICAgIH1cclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIGlmICh0aGlzLm5leHRJc0Rpc2FibGUgIT0gdW5kZWZpbmVkKSB7XHJcbiAgICAgICAgdGhpcy5uZXh0SXNEaXNhYmxlLmZvY3VzKCk7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgdGhpcy5vbk5leHQuZW1pdCgpO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBnb0JhY2sgKCk6IHZvaWQge1xyXG4gICAgaWYgKHRoaXMuYmFjayAhPSB1bmRlZmluZWQpIHtcclxuICAgICAgaWYgKHRoaXMuYmFjay5kaXNhYmxlZCB8fCB0aGlzLmJhY2sucmVhZG9ubHkpIHtcclxuICAgICAgICBpZiAodGhpcy5iYWNrSXNEaXNhYmxlICE9IHVuZGVmaW5lZCkge1xyXG4gICAgICAgICAgdGhpcy5iYWNrSXNEaXNhYmxlLmZvY3VzKCk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIHRoaXMuYmFjay5mb2N1cygpO1xyXG4gICAgICB9XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICBpZiAodGhpcy5iYWNrSXNEaXNhYmxlICE9IHVuZGVmaW5lZCkge1xyXG4gICAgICAgIHRoaXMuYmFja0lzRGlzYWJsZS5mb2N1cygpO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIHRoaXMub25CYWNrLmVtaXQoKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgbGltcGlhclRvZG8gKCkge1xyXG4gICAgdGhpcy5jb250YWRvciA9IDA7XHJcbiAgICB0aGlzLmhvdXJzQ29udHJvbC5zZXRWYWx1ZShcclxuICAgICAge1xyXG4gICAgICAgIGhvdXI6IG51bGwsXHJcbiAgICAgICAgbWludXRlOiBudWxsLFxyXG4gICAgICB9LFxyXG4gICAgICB7IGVtaXRFdmVudDogZmFsc2UgfVxyXG4gICAgKTtcclxuICAgIHRoaXMuZGF0ZUNvbnRyb2wuc2V0VmFsdWUoXHJcbiAgICAgIHtcclxuICAgICAgICB5ZWFyOiBudWxsLFxyXG4gICAgICAgIG1vbnRoOiBudWxsLFxyXG4gICAgICAgIGRheTogbnVsbCxcclxuICAgICAgfSxcclxuICAgICAgeyBlbWl0RXZlbnQ6IGZhbHNlIH1cclxuICAgICk7XHJcbiAgICBpZiAodGhpcy5mb3JtYXQgPT0gMTIpIHRoaXMuZGF0ZVRpbWVDb250cm9sLnNldFZhbHVlKFwiZGQvbW0veXl5eSAtLTotLSAtLVwiKTtcclxuICAgIGVsc2UgaWYgKHRoaXMuZm9ybWF0ID09IDI0KSB0aGlzLmRhdGVUaW1lQ29udHJvbC5zZXRWYWx1ZShcImRkL21tL3l5eXkgLS06LS1cIik7XHJcbiAgICB0aW1lcig2MCkuc3Vic2NyaWJlKCgpPT4gdGhpcy5pbnB1dERhdGVUaW1lLm5hdGl2ZUVsZW1lbnQuc2V0U2VsZWN0aW9uUmFuZ2UoMCwgMikpXHJcbiAgICB0aGlzLm9uQ2hhbmdlKG51bGwpO1xyXG4gICAgdGhpcy5vblRvdWNoKCk7XHJcbiAgfVxyXG5cclxuICBsaW1waWFyICgpIHtcclxuICAgIGlmICh0aGlzLmlucHV0RGF0ZVRpbWUubmF0aXZlRWxlbWVudC5zZWxlY3Rpb25TdGFydCA9PSAwICYmIHRoaXMuaW5wdXREYXRlVGltZS5uYXRpdmVFbGVtZW50LnNlbGVjdGlvbkVuZCA9PSAyKSB7XHJcbiAgICAgIHRoaXMuZGF0ZUNvbnRyb2wuc2V0VmFsdWUoXHJcbiAgICAgICAge1xyXG4gICAgICAgICAgLi4udGhpcy5kYXRlQ29udHJvbC52YWx1ZSxcclxuICAgICAgICAgIGRheTogbnVsbCxcclxuICAgICAgICB9LFxyXG4gICAgICAgIHsgZW1pdEV2ZW50OiBmYWxzZSB9XHJcbiAgICAgICk7XHJcbiAgICAgIHRoaXMuZGF0ZVRpbWVDb250cm9sLnNldFZhbHVlKGBkZCR7IHRoaXMuZGF0ZVRpbWVDb250cm9sLnZhbHVlIS5zdWJzdHJpbmcoMikgfWApO1xyXG4gICAgICB0aGlzLm9uQ2hhbmdlKG51bGwpO1xyXG4gICAgICB0aGlzLm9uVG91Y2goKTtcclxuICAgICAgdGhpcy5pbnB1dERhdGVUaW1lLm5hdGl2ZUVsZW1lbnQuc2V0U2VsZWN0aW9uUmFuZ2UoMCwgMik7XHJcbiAgICAgIHRoaXMuY29udGFkb3IgPSAwO1xyXG4gICAgfSBlbHNlIGlmICh0aGlzLmlucHV0RGF0ZVRpbWUubmF0aXZlRWxlbWVudC5zZWxlY3Rpb25TdGFydCA9PSAzICYmIHRoaXMuaW5wdXREYXRlVGltZS5uYXRpdmVFbGVtZW50LnNlbGVjdGlvbkVuZCA9PSA1KSB7XHJcbiAgICAgIHRoaXMuZGF0ZUNvbnRyb2wuc2V0VmFsdWUoXHJcbiAgICAgICAge1xyXG4gICAgICAgICAgLi4udGhpcy5kYXRlQ29udHJvbC52YWx1ZSxcclxuICAgICAgICAgIG1vbnRoOiBudWxsLFxyXG4gICAgICAgIH0sXHJcbiAgICAgICAgeyBlbWl0RXZlbnQ6IGZhbHNlIH1cclxuICAgICAgKTtcclxuICAgICAgdGhpcy5kYXRlVGltZUNvbnRyb2wuc2V0VmFsdWUoYCR7IHRoaXMuZGF0ZVRpbWVDb250cm9sLnZhbHVlIS5zdWJzdHJpbmcoMCwgMykgfW1tJHsgdGhpcy5kYXRlVGltZUNvbnRyb2wudmFsdWUhLnN1YnN0cmluZyg1KSB9YCk7XHJcbiAgICAgIHRoaXMub25DaGFuZ2UobnVsbCk7XHJcbiAgICAgIHRoaXMub25Ub3VjaCgpO1xyXG4gICAgICB0aGlzLmlucHV0RGF0ZVRpbWUubmF0aXZlRWxlbWVudC5zZXRTZWxlY3Rpb25SYW5nZSgzLCA1KTtcclxuICAgICAgdGhpcy5jb250YWRvciA9IDA7XHJcbiAgICB9IGVsc2UgaWYgKHRoaXMuaW5wdXREYXRlVGltZS5uYXRpdmVFbGVtZW50LnNlbGVjdGlvblN0YXJ0ID09IDYgJiYgdGhpcy5pbnB1dERhdGVUaW1lLm5hdGl2ZUVsZW1lbnQuc2VsZWN0aW9uRW5kID09IDEwKSB7XHJcbiAgICAgIHRoaXMuZGF0ZUNvbnRyb2wuc2V0VmFsdWUoXHJcbiAgICAgICAge1xyXG4gICAgICAgICAgLi4udGhpcy5kYXRlQ29udHJvbC52YWx1ZSxcclxuICAgICAgICAgIHllYXI6IG51bGwsXHJcbiAgICAgICAgfSxcclxuICAgICAgICB7IGVtaXRFdmVudDogZmFsc2UgfVxyXG4gICAgICApO1xyXG4gICAgICB0aGlzLmRhdGVUaW1lQ29udHJvbC5zZXRWYWx1ZShgJHsgdGhpcy5kYXRlVGltZUNvbnRyb2wudmFsdWUhLnN1YnN0cmluZygwLCA2KSB9eXl5eSR7IHRoaXMuZGF0ZVRpbWVDb250cm9sLnZhbHVlIS5zdWJzdHJpbmcoMTApIH1gKTtcclxuICAgICAgdGhpcy5vbkNoYW5nZShudWxsKTtcclxuICAgICAgdGhpcy5vblRvdWNoKCk7XHJcbiAgICAgIHRoaXMuaW5wdXREYXRlVGltZS5uYXRpdmVFbGVtZW50LnNldFNlbGVjdGlvblJhbmdlKDYsIDEwKTtcclxuICAgICAgdGhpcy5jb250YWRvciA9IDA7XHJcbiAgICB9IGVsc2UgaWYgKHRoaXMuaW5wdXREYXRlVGltZS5uYXRpdmVFbGVtZW50LnNlbGVjdGlvblN0YXJ0ID09IDExICYmIHRoaXMuaW5wdXREYXRlVGltZS5uYXRpdmVFbGVtZW50LnNlbGVjdGlvbkVuZCA9PSAxMykge1xyXG4gICAgICB0aGlzLmhvdXJzQ29udHJvbC5zZXRWYWx1ZShcclxuICAgICAgICB7XHJcbiAgICAgICAgICAuLi50aGlzLmRhdGVDb250cm9sLnZhbHVlLFxyXG4gICAgICAgICAgaG91cjogbnVsbCxcclxuICAgICAgICB9LFxyXG4gICAgICAgIHsgZW1pdEV2ZW50OiBmYWxzZSB9XHJcbiAgICAgICk7XHJcbiAgICAgIHRoaXMuZGF0ZVRpbWVDb250cm9sLnNldFZhbHVlKGAkeyB0aGlzLmRhdGVUaW1lQ29udHJvbC52YWx1ZSEuc3Vic3RyaW5nKDAsIDExKSB9LS0keyB0aGlzLmRhdGVUaW1lQ29udHJvbC52YWx1ZSEuc3Vic3RyaW5nKDEzKSB9YCk7XHJcbiAgICAgIHRoaXMub25DaGFuZ2UobnVsbCk7XHJcbiAgICAgIHRoaXMub25Ub3VjaCgpO1xyXG4gICAgICB0aGlzLmlucHV0RGF0ZVRpbWUubmF0aXZlRWxlbWVudC5zZXRTZWxlY3Rpb25SYW5nZSgxMSwgMTMpO1xyXG4gICAgICB0aGlzLmNvbnRhZG9yID0gMDtcclxuICAgIH0gZWxzZSBpZiAodGhpcy5pbnB1dERhdGVUaW1lLm5hdGl2ZUVsZW1lbnQuc2VsZWN0aW9uU3RhcnQgPT0gMTQgJiYgdGhpcy5pbnB1dERhdGVUaW1lLm5hdGl2ZUVsZW1lbnQuc2VsZWN0aW9uRW5kID09IDE2KSB7XHJcbiAgICAgIHRoaXMuaG91cnNDb250cm9sLnNldFZhbHVlKFxyXG4gICAgICAgIHtcclxuICAgICAgICAgIC4uLnRoaXMuZGF0ZUNvbnRyb2wudmFsdWUsXHJcbiAgICAgICAgICBtaW51dGU6IG51bGwsXHJcbiAgICAgICAgfSxcclxuICAgICAgICB7IGVtaXRFdmVudDogZmFsc2UgfVxyXG4gICAgICApO1xyXG4gICAgICB0aGlzLmRhdGVUaW1lQ29udHJvbC5zZXRWYWx1ZShgJHsgdGhpcy5kYXRlVGltZUNvbnRyb2wudmFsdWUhLnN1YnN0cmluZygwLCAxNCkgfS0tJHsgdGhpcy5kYXRlVGltZUNvbnRyb2wudmFsdWUhLnN1YnN0cmluZygxNikgfWApO1xyXG4gICAgICB0aGlzLm9uQ2hhbmdlKG51bGwpO1xyXG4gICAgICB0aGlzLm9uVG91Y2goKTtcclxuICAgICAgdGhpcy5pbnB1dERhdGVUaW1lLm5hdGl2ZUVsZW1lbnQuc2V0U2VsZWN0aW9uUmFuZ2UoMTQsIDE2KTtcclxuICAgICAgdGhpcy5jb250YWRvciA9IDA7XHJcbiAgICB9XHJcbiAgfVxyXG4gIHByZXZlbnREZWZhdWx0IChlOiBhbnkpIHtcclxuICAgIGUucHJldmVudERlZmF1bHQoKTtcclxuICAgIHJldHVybiBmYWxzZTtcclxuICB9XHJcblxyXG4gIG9uQ2xpY2sgKGU6IEV2ZW50LCBpbnB1dDogSFRNTElucHV0RWxlbWVudCkge1xyXG4gICAgZS5wcmV2ZW50RGVmYXVsdCgpO1xyXG5cclxuICAgIGlmICh0aGlzLmRpc2FibGVkKSByZXR1cm47XHJcblxyXG4gICAgaWYgKGlucHV0LnNlbGVjdGlvblN0YXJ0ID09IDAgfHwgaW5wdXQuc2VsZWN0aW9uU3RhcnQgPT0gMSB8fCBpbnB1dC5zZWxlY3Rpb25TdGFydCA9PSAyKSB7XHJcbiAgICAgIGNvbnN0IHRpbWVvdXQgPSBzZXRUaW1lb3V0KCgpID0+IHtcclxuICAgICAgICBpbnB1dC5zZXRTZWxlY3Rpb25SYW5nZSgwLCAyKTtcclxuICAgICAgICB0aGlzLmNvbnRhZG9yID0gMDtcclxuICAgICAgICBjbGVhclRpbWVvdXQodGltZW91dCk7XHJcbiAgICAgIH0sIDEwMCk7XHJcbiAgICB9IGVsc2UgaWYgKGlucHV0LnNlbGVjdGlvblN0YXJ0ID09IDMgfHwgaW5wdXQuc2VsZWN0aW9uU3RhcnQgPT0gNCB8fCBpbnB1dC5zZWxlY3Rpb25TdGFydCA9PSA1KSB7XHJcbiAgICAgIGNvbnN0IHRpbWVvdXQgPSBzZXRUaW1lb3V0KCgpID0+IHtcclxuICAgICAgICBpbnB1dC5zZXRTZWxlY3Rpb25SYW5nZSgzLCA1KTtcclxuICAgICAgICB0aGlzLmNvbnRhZG9yID0gMDtcclxuICAgICAgICBjbGVhclRpbWVvdXQodGltZW91dCk7XHJcbiAgICAgIH0sIDEwMCk7XHJcbiAgICB9IGVsc2UgaWYgKFxyXG4gICAgICBpbnB1dC5zZWxlY3Rpb25TdGFydCA9PSA2IHx8XHJcbiAgICAgIGlucHV0LnNlbGVjdGlvblN0YXJ0ID09IDcgfHxcclxuICAgICAgaW5wdXQuc2VsZWN0aW9uU3RhcnQgPT0gOCB8fFxyXG4gICAgICBpbnB1dC5zZWxlY3Rpb25TdGFydCA9PSA5IHx8XHJcbiAgICAgIGlucHV0LnNlbGVjdGlvblN0YXJ0ID09IDEwXHJcbiAgICApIHtcclxuICAgICAgY29uc3QgdGltZW91dCA9IHNldFRpbWVvdXQoKCkgPT4ge1xyXG4gICAgICAgIGlucHV0LnNldFNlbGVjdGlvblJhbmdlKDYsIDEwKTtcclxuICAgICAgICB0aGlzLmNvbnRhZG9yID0gMDtcclxuICAgICAgICBjbGVhclRpbWVvdXQodGltZW91dCk7XHJcbiAgICAgIH0sIDEwMCk7XHJcbiAgICB9IGVsc2UgaWYgKGlucHV0LnNlbGVjdGlvblN0YXJ0ID09IDExIHx8IGlucHV0LnNlbGVjdGlvblN0YXJ0ID09IDEyIHx8IGlucHV0LnNlbGVjdGlvblN0YXJ0ID09IDEzKSB7XHJcbiAgICAgIGNvbnN0IHRpbWVvdXQgPSBzZXRUaW1lb3V0KCgpID0+IHtcclxuICAgICAgICBpbnB1dC5zZXRTZWxlY3Rpb25SYW5nZSgxMSwgMTMpO1xyXG4gICAgICAgIHRoaXMuY29udGFkb3IgPSAwO1xyXG4gICAgICAgIGNsZWFyVGltZW91dCh0aW1lb3V0KTtcclxuICAgICAgfSwgMTAwKTtcclxuICAgIH0gZWxzZSBpZiAoaW5wdXQuc2VsZWN0aW9uU3RhcnQgPT0gMTQgfHwgaW5wdXQuc2VsZWN0aW9uU3RhcnQgPT0gMTUgfHwgaW5wdXQuc2VsZWN0aW9uU3RhcnQgPT0gMTYpIHtcclxuICAgICAgY29uc3QgdGltZW91dCA9IHNldFRpbWVvdXQoKCkgPT4ge1xyXG4gICAgICAgIGlucHV0LnNldFNlbGVjdGlvblJhbmdlKDE0LCAxNik7XHJcbiAgICAgICAgdGhpcy5jb250YWRvciA9IDA7XHJcbiAgICAgICAgY2xlYXJUaW1lb3V0KHRpbWVvdXQpO1xyXG4gICAgICB9LCAxMDApO1xyXG4gICAgfSBlbHNlIGlmIChpbnB1dC5zZWxlY3Rpb25TdGFydCA9PSAxNyB8fCBpbnB1dC5zZWxlY3Rpb25TdGFydCA9PSAxOCB8fCBpbnB1dC5zZWxlY3Rpb25TdGFydCA9PSAxOSkge1xyXG4gICAgICBjb25zdCB0aW1lb3V0ID0gc2V0VGltZW91dCgoKSA9PiB7XHJcbiAgICAgICAgaW5wdXQuc2V0U2VsZWN0aW9uUmFuZ2UoMTcsIDE5KTtcclxuICAgICAgICB0aGlzLmNvbnRhZG9yID0gMDtcclxuICAgICAgICBjbGVhclRpbWVvdXQodGltZW91dCk7XHJcbiAgICAgIH0sIDEwMCk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICBjb25zdCB0aW1lb3V0ID0gc2V0VGltZW91dCgoKSA9PiB7XHJcbiAgICAgICAgaW5wdXQuc2V0U2VsZWN0aW9uUmFuZ2UoMCwgMik7XHJcbiAgICAgICAgdGhpcy5jb250YWRvciA9IDA7XHJcbiAgICAgICAgY2xlYXJUaW1lb3V0KHRpbWVvdXQpO1xyXG4gICAgICB9LCAxMDApO1xyXG4gICAgfVxyXG4gIH1cclxuICBvcGVuIChkOiBOZ2JJbnB1dERhdGVwaWNrZXIpOiB2b2lkIHtcclxuICAgIGlmICh0aGlzLmRhdGVUaW1lQ29udHJvbC52YWx1ZSA9PSBcImRkL21tL3l5eXkgLS06LS0gLS1cIiB8fCB0aGlzLmRhdGVUaW1lQ29udHJvbC52YWx1ZSA9PSBcImRkL21tL3l5eXkgLS06LS1cIikge1xyXG4gICAgICB0aGlzLmhvdXJzQ29udHJvbC5zZXRWYWx1ZSh7XHJcbiAgICAgICAgaG91cjogbmV3IERhdGUoKS5nZXRIb3VycygpLFxyXG4gICAgICAgIG1pbnV0ZTogbmV3IERhdGUoKS5nZXRNaW51dGVzKCksXHJcbiAgICAgICAgc2Vjb25kOiBuZXcgRGF0ZSgpLmdldFNlY29uZHMoKSxcclxuICAgICAgfSk7XHJcbiAgICAgIHRoaXMuZGF0ZUNvbnRyb2wuc2V0VmFsdWUoe1xyXG4gICAgICAgIHllYXI6IG5ldyBEYXRlKCkuZ2V0RnVsbFllYXIoKSxcclxuICAgICAgICBtb250aDogbmV3IERhdGUoKS5nZXRNb250aCgpICsgMSxcclxuICAgICAgICBkYXk6IG5ldyBEYXRlKCkuZ2V0RGF0ZSgpLFxyXG4gICAgICAgIC4uLnRoaXMuaG91cnNDb250cm9sLnZhbHVlLFxyXG4gICAgICB9KTtcclxuICAgICAgY29uc3QgdmFsdWUgPSBuZXcgRGF0ZVRpbWVNb2RlbChPYmplY3QuYXNzaWduKHRoaXMuZGF0ZUNvbnRyb2wudmFsdWUsIHRoaXMuaG91cnNDb250cm9sLnZhbHVlKSk7XHJcbiAgICAgIHRoaXMuZGF0ZVRpbWVDb250cm9sLnNldFZhbHVlKHRoaXMuX2RhdGVQaXBlLnRyYW5zZm9ybSh2YWx1ZS50b1N0cmluZygpLCB0aGlzLnN0cmluZ0Zvcm1hdCkpO1xyXG4gICAgICB0aGlzLm9uRW1pdCgpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgZm9jdXNPdXQgKGV2ZW50OiBhbnkpOiB2b2lkIHtcclxuICAgIGlmIChldmVudC50YXJnZXQuYXJpYUxhYmVsID09IFwiTWludXRlc1wiKSB7XHJcbiAgICAgIHRoaXMubmdiRGF0ZXBpY2tlcj8uY2xvc2UoKTtcclxuICAgICAgaWYgKHRoaXMuZ29OZXh0V2hlblNlbGVjdCkge1xyXG4gICAgICAgIHRoaXMuZ29OZXh0KCk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcbn1cclxuIiwiPGRpdiBjbGFzcz1cInJvd1wiPlxyXG4gIDxkaXYgY2xhc3M9XCJjb2wtMTJcIiBzdHlsZT1cIm92ZXJmbG93OiBoaWRkZW5cIj5cclxuICAgIDxsYWJlbCAqbmdJZj1cImxhYmVsICE9IG51bGwgJiYgbGFiZWwgIT0gJycgJiYgc2hvd0xhYmVsXCIgY2xhc3M9XCJkLWZsZXggc3VtYXgtbGFiZWwgbWItMCBwLTBcIlxyXG4gICAgICA+PHNwYW4gW3RpdGxlXT1cImxhYmVsXCIgc3R5bGU9XCJ3aGl0ZS1zcGFjZTogbm93cmFwOyBvdmVyZmxvdzogaGlkZGVuOyB0ZXh0LW92ZXJmbG93OiBlbGxpcHNpc1wiPnt7IGxhYmVsIH19PC9zcGFuPlxyXG4gICAgICA8c3BhbiAqbmdJZj1cInJlcXVpcmVkXCIgY2xhc3M9XCJtcy0xXCIgW2NsYXNzLnRleHQtZGFuZ2VyXT1cImNvbnRyb2xzPy5lcnJvcnMgIT0gbnVsbFwiPiAqPC9zcGFuPlxyXG4gICAgICA8c3BhbiAqbmdJZj1cImxhYmVsSW5mb1wiPlxyXG4gICAgICAgIDxpIGNsYXNzPVwiZmEgZmEtZXhjbGFtYXRpb24tY2lyY2xlIHRleHQtaW5mbyBtcy0yXCIgW21hdFRvb2x0aXBdPVwidGV4dExhYmVsSW5mb1wiIG1hdFRvb2x0aXBDbGFzcz1cImJnLWluZm9cIj48L2k+XHJcbiAgICAgIDwvc3Bhbj5cclxuICAgIDwvbGFiZWw+XHJcbiAgICA8aW5wdXRcclxuICAgICAgdHlwZT1cInRleHRcIlxyXG4gICAgICBjbGFzcz1cImZvcm0tY29udHJvbCBmb3JtLWNvbnRyb2wtc20gcG9zaXRpb24tYWJzb2x1dGVcIlxyXG4gICAgICBjb250YWluZXI9XCJib2R5XCJcclxuICAgICAgaWQ9XCJmYWtlSW5wdXRcIlxyXG4gICAgICBuZ2JEYXRlcGlja2VyXHJcbiAgICAgIFtmb3JtQ29udHJvbF09XCJkYXRlQ29udHJvbFwiXHJcbiAgICAgIFthdXRvQ2xvc2VdPVwiJ291dHNpZGUnXCJcclxuICAgICAgW2Zvb3RlclRlbXBsYXRlXT1cImZvb3RlclRlbXBsYXRlXCJcclxuICAgICAgW21pbkRhdGVdPVwieyB5ZWFyOiAxOTYwLCBtb250aDogMSwgZGF5OiAxIH1cIlxyXG4gICAgICAjZDI9XCJuZ2JEYXRlcGlja2VyXCIgLz5cclxuICAgIDxkaXYgY2xhc3M9XCJpbnB1dC1ncm91cCB3LTEwMFwiPlxyXG4gICAgICA8aW5wdXRcclxuICAgICAgICB0eXBlPVwidGV4dFwiXHJcbiAgICAgICAgcmVhZG9ubHlcclxuICAgICAgICBpZD1cImlucHV0RGF0ZVRpbWVcIlxyXG4gICAgICAgICNpbnB1dERhdGVUaW1lXHJcbiAgICAgICAgc3R5bGU9XCJmbGV4OiAxXCJcclxuICAgICAgICBbY2xhc3MuaXMtaW52YWxpZF09XCJjb250cm9scz8uZXJyb3JzICE9IG51bGwgJiYgKGNvbnRyb2xzPy5kaXJ0eSB8fCBjb250cm9scz8udG91Y2hlZCkgJiYgc3VibWl0dGVkXCJcclxuICAgICAgICBbZGlzYWJsZWRdPVwiZGlzYWJsZWQgfHwgcmVhZG9ubHlcIlxyXG4gICAgICAgIGNsYXNzPVwiZm9ybS1jb250cm9sIGZvcm0tY29udHJvbC1zbVwiXHJcbiAgICAgICAgKGJsdXIpPVwib25CbHVyKClcIlxyXG4gICAgICAgIChmb2N1c291dCk9XCJmb2N1c091dElucHV0KClcIlxyXG4gICAgICAgIChrZXl1cCk9XCJvbktleVVwKCRldmVudClcIlxyXG4gICAgICAgIChkYmxjbGljayk9XCJwcmV2ZW50RGVmYXVsdCgkZXZlbnQpXCJcclxuICAgICAgICAoY2xpY2spPVwicHJldmVudERlZmF1bHQoJGV2ZW50KVwiXHJcbiAgICAgICAgKG1vdXNldXApPVwib25DbGljaygkZXZlbnQsIGlucHV0RGF0ZVRpbWUpXCJcclxuICAgICAgICBbZm9ybUNvbnRyb2xdPVwiZGF0ZVRpbWVDb250cm9sXCIgLz5cclxuICAgICAgPGRpdiBjbGFzcz1cImlucHV0LWdyb3VwLWFwcGVuZFwiPlxyXG4gICAgICAgIDxidXR0b25cclxuICAgICAgICAgICNidG5PcGVuXHJcbiAgICAgICAgICAoa2V5dXAuQXJyb3dMZWZ0KT1cImdvQmFjaygpXCJcclxuICAgICAgICAgIFtkaXNhYmxlZF09XCJkaXNhYmxlZCB8fCByZWFkb25seVwiXHJcbiAgICAgICAgICAoa2V5dXAuQXJyb3dSaWdodCk9XCJjbGVhcmFibGUgPyBidG5DbGVhbi5mb2N1cygpIDogZ29OZXh0KClcIlxyXG4gICAgICAgICAgY2xhc3M9XCJidG4gYnRuLWluZm8gcC0wIHJvdW5kZWQtMCB1c2UtYnV0dG9uXCJcclxuICAgICAgICAgIChjbGljayk9XCJkMi50b2dnbGUoKTsgb3BlbihkMilcIlxyXG4gICAgICAgICAgdHlwZT1cImJ1dHRvblwiPlxyXG4gICAgICAgICAgPGkgYXJpYS1oaWRkZW49XCJ0cnVlXCIgY2xhc3M9XCJmYSBmYS1jYWxlbmRhciB0ZXh0LWxpZ2h0IHB4LTFcIj48L2k+XHJcbiAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgPGJ1dHRvblxyXG4gICAgICAgICAgI2J0bkNsZWFuXHJcbiAgICAgICAgICBbaGlkZGVuXT1cIiFjbGVhcmFibGVcIlxyXG4gICAgICAgICAgY2xhc3M9XCJidG4gYnRuLWRhbmdlciBwLTAgcm91bmRlZC0wIGxpbXBpYXJcIlxyXG4gICAgICAgICAgW2Rpc2FibGVkXT1cImRpc2FibGVkIHx8IHJlYWRvbmx5XCJcclxuICAgICAgICAgIChjbGljayk9XCJsaW1waWFyVG9kbygpXCJcclxuICAgICAgICAgIChrZXl1cC5BcnJvd0xlZnQpPVwiYnRuT3Blbi5mb2N1cygpXCJcclxuICAgICAgICAgIChrZXl1cC5BcnJvd1JpZ2h0KT1cImdvTmV4dCgpXCJcclxuICAgICAgICAgIHR5cGU9XCJidXR0b25cIj5cclxuICAgICAgICAgIDwhLS0gPG1hdC1pY29uIGNsYXNzPVwidGV4dC13aGl0ZSBwdC0xXCIgc3R5bGU9XCJmb250LXNpemU6IDE4cHg7XCIgW21hdFRvb2x0aXBdPVwiJ0xpbXBpYXInXCIgbWF0VG9vbHRpcENsYXNzPVwiYmctZGFuZ2VyXCI+Y2xvc2U8L21hdC1pY29uPiAtLT5cclxuICAgICAgICAgIDxpIGFyaWEtaGlkZGVuPVwidHJ1ZVwiIGNsYXNzPVwiZmEgZmEtdGltZXMgcHgtMSB0ZXh0LWxpZ2h0XCI+PC9pPlxyXG4gICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICA8L2Rpdj5cclxuICAgICAgPGRpdiBjbGFzcz1cInBvc2l0aW9uLWFic29sdXRlIGNvbnRhaW5lci10b29sdGlwbWVzc2FnZVwiPlxyXG4gICAgICAgIDx0b29sdGlwLW1lc3NhZ2VcclxuICAgICAgICAgIFtsYWJlbF09XCJsYWJlbFwiXHJcbiAgICAgICAgICBbY29udHJvbHNdPVwiY29udHJvbHNcIlxyXG4gICAgICAgICAgW3ZhbGlkYXRvck1lc3NhZ2VdPVwidmFsaWRhdG9yTWVzc2FnZVwiXHJcbiAgICAgICAgICBbdG9vbHRpcE1lc3NhZ2VdPVwidG9vbHRpcE1lc3NhZ2VcIlxyXG4gICAgICAgICAgW3N1Ym1pdHRlZF09XCJzdWJtaXR0ZWRcIj48L3Rvb2x0aXAtbWVzc2FnZT5cclxuICAgICAgPC9kaXY+XHJcbiAgICA8L2Rpdj5cclxuICAgIDxlcnJvci1tZXNzYWdlXHJcbiAgICAgIFtsYWJlbF09XCJsYWJlbFwiXHJcbiAgICAgIFtjb250cm9sc109XCJjb250cm9sc1wiXHJcbiAgICAgIFt2YWxpZGF0b3JNZXNzYWdlXT1cInZhbGlkYXRvck1lc3NhZ2VcIlxyXG4gICAgICBbdG9vbHRpcE1lc3NhZ2VdPVwidG9vbHRpcE1lc3NhZ2VcIlxyXG4gICAgICBbc3VibWl0dGVkXT1cInN1Ym1pdHRlZFwiPjwvZXJyb3ItbWVzc2FnZT5cclxuICAgIDxuZy10ZW1wbGF0ZSAjZm9vdGVyVGVtcGxhdGU+XHJcbiAgICAgIDxuZ2ItdGltZXBpY2tlciBbZm9ybUNvbnRyb2xdPVwiaG91cnNDb250cm9sXCIgW21lcmlkaWFuXT1cImZvcm1hdCA9PSAxMiA/IHRydWUgOiBmYWxzZVwiIChmb2N1c291dCk9XCJmb2N1c091dCgkZXZlbnQpXCI+PC9uZ2ItdGltZXBpY2tlcj5cclxuICAgIDwvbmctdGVtcGxhdGU+XHJcbiAgPC9kaXY+XHJcbjwvZGl2PlxyXG4iXX0=
|