raain-app 1.6.12 → 1.6.13
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/CHANGELOG.md
CHANGED
|
@@ -7,6 +7,12 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
|
|
|
7
7
|
|
|
8
8
|
## [Unreleased]
|
|
9
9
|
|
|
10
|
+
### Fixed
|
|
11
|
+
|
|
12
|
+
- gauges histo quick fix (+-24h above)
|
|
13
|
+
|
|
14
|
+
## [1.6.12] - 2025-11-13
|
|
15
|
+
|
|
10
16
|
### Changed
|
|
11
17
|
|
|
12
18
|
- [RAD-140] more error, and selectGauge in compare
|
|
@@ -206,9 +206,13 @@ export class RaainDetailsComponent {
|
|
|
206
206
|
await this.compareManager.selectGauge(gaugeSelected.id, 0);
|
|
207
207
|
}
|
|
208
208
|
async refreshGaugeValues(gaugeSelected) {
|
|
209
|
-
const
|
|
210
|
-
const
|
|
211
|
-
|
|
209
|
+
const gaugeValueShowBegin = new Date(this.periodBegin.getTime() - 24 * 60 * 60 * 1000);
|
|
210
|
+
const gaugeValueShowEnd = new Date(this.periodEnd.getTime() + 24 * 60 * 60 * 1000);
|
|
211
|
+
gaugeValueShowBegin.setHours(0);
|
|
212
|
+
gaugeValueShowBegin.setMinutes(0);
|
|
213
|
+
gaugeValueShowEnd.setHours(23);
|
|
214
|
+
gaugeValueShowEnd.setMinutes(59);
|
|
215
|
+
const gaugeMeasures = await this.profileService.getGaugeMeasures(gaugeSelected.id, gaugeValueShowBegin, gaugeValueShowEnd);
|
|
212
216
|
const gaugeValues = gaugeMeasures.map((gm) => {
|
|
213
217
|
const cartesianMeasureValue = new CartesianMeasureValue(gm.values[0]);
|
|
214
218
|
const value = cartesianMeasureValue.getCartesianValues()[0].value;
|
|
@@ -361,4 +365,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.4", ngImpor
|
|
|
361
365
|
}], toggleCumulative: [{
|
|
362
366
|
type: Input
|
|
363
367
|
}] } });
|
|
364
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmFhaW4tZGV0YWlscy5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvY29yZS9zaGFyZWQvcmFhaW4tZGV0YWlscy9yYWFpbi1kZXRhaWxzLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uL3NyYy9jb3JlL3NoYXJlZC9yYWFpbi1kZXRhaWxzL3JhYWluLWRldGFpbHMuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFDLFNBQVMsRUFBRSxLQUFLLEVBQXNDLE1BQU0sZUFBZSxDQUFDO0FBRXBGLE9BQU8sRUFBQyxxQkFBcUIsRUFBWSxRQUFRLEVBQUMsTUFBTSxhQUFhLENBQUM7QUFDdEUsT0FBTyxFQUFDLFNBQVMsRUFBRSxTQUFTLEVBQUUsbUJBQW1CLEVBQUMsTUFBTSxVQUFVLENBQUM7QUFDbkUsT0FBTyxFQUEyQixvQkFBb0IsRUFBaUIsTUFBTSxVQUFVLENBQUM7Ozs7Ozs7Ozs7QUFVeEYsTUFBTSxPQUFPLHFCQUFxQjtJQXdEOUIsWUFBc0IsT0FBZ0I7UUFBaEIsWUFBTyxHQUFQLE9BQU8sQ0FBUztRQUZuQixjQUFTLEdBQUcsU0FBUyxDQUFDO1FBMEl6QyxnRUFBZ0U7UUFDekQscUJBQWdCLEdBQUcsS0FBSyxFQUFFLFNBQWUsRUFBRSxVQUFxQixFQUFFLEVBQUU7WUFDdkUsT0FBTyxNQUFNLElBQUksQ0FBQyxTQUFTLENBQUMsU0FBUyxFQUFFLFVBQVUsQ0FBQyxDQUFDO1FBQ3ZELENBQUMsQ0FBQztJQTNJdUMsQ0FBQztJQUVsQyxNQUFNLENBQUMsYUFBYSxDQUFDLElBQW1CO1FBQzVDLElBQUksQ0FBQyxHQUFHLElBQUksSUFBSSxFQUFFLENBQUM7UUFDbkIsSUFBSSxJQUFJLEVBQUU7WUFDTixDQUFDLEdBQUcsSUFBSSxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7WUFDbkIsTUFBTSxrQkFBa0IsR0FBRyxDQUFDLENBQUMsaUJBQWlCLEVBQUUsR0FBRyxL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WUFBWTtzQkFEbEIsS0FBSztnQkFHQyxnQkFBZ0I7c0JBRHRCLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0NvbXBvbmVudCwgSW5wdXQsIE9uQ2hhbmdlcywgT25EZXN0cm95LCBTaW1wbGVDaGFuZ2VzfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7UHJvZmlsZVNlcnZpY2V9IGZyb20gJy4uL3Byb2ZpbGUuc2VydmljZSc7XG5pbXBvcnQge0NhcnRlc2lhbk1lYXN1cmVWYWx1ZSwgUmFpbk5vZGUsIFRlYW1Ob2RlfSBmcm9tICdyYWFpbi1tb2RlbCc7XG5pbXBvcnQge0RhdGVSYW5nZSwgTWFwTGF0TG5nLCBUaW1lZnJhbWVDb250YWluZXJzfSBmcm9tICdyYWFpbi11aSc7XG5pbXBvcnQge0NvbXBhcmVNYW5hZ2VyLCBGcmFtZVNldCwgbWFwRGF0ZVJhbmdlVG9TdHJpbmcsIFJlZnJlc2hNYW5hZ2VyfSBmcm9tICcuLi90b29scyc7XG5pbXBvcnQge1hZVHlwZX0gZnJvbSAnLi4veHl0eXBlJztcbmltcG9ydCB7UmFkYXJTZXJ2aWNlfSBmcm9tICcuLi9yYWRhci5zZXJ2aWNlJztcbmltcG9ydCB7U3RvcmFnZX0gZnJvbSAnLi4vc3RvcmFnZS5zZXJ2aWNlJztcblxuQENvbXBvbmVudCh7XG4gICAgc2VsZWN0b3I6ICdyYWFpbi1kZXRhaWxzJyxcbiAgICB0ZW1wbGF0ZVVybDogJ3JhYWluLWRldGFpbHMuY29tcG9uZW50Lmh0bWwnLFxuICAgIHN0eWxlVXJsczogWydyYWFpbi1kZXRhaWxzLmNvbXBvbmVudC5zY3NzJ10sXG59KVxuZXhwb3J0IGNsYXNzIFJhYWluRGV0YWlsc0NvbXBvbmVudCBpbXBsZW1lbnRzIE9uRGVzdHJveSwgT25DaGFuZ2VzIHtcbiAgICBASW5wdXQoKVxuICAgIHB1YmxpYyB0b2dnbGVBZG1pbjogYm9vbGVhbjtcbiAgICBASW5wdXQoKVxuICAgIHB1YmxpYyByYWluTm9kZTogUmFpbk5vZGU7XG4gICAgQElucHV0KClcbiAgICBwdWJsaWMgY29tcGFyZU1hbmFnZXI6IENvbXBhcmVNYW5hZ2VyO1xuICAgIEBJbnB1dCgpXG4gICAgcHVibGljIHJlZnJlc2hNYW5hZ2VyOiBSZWZyZXNoTWFuYWdlcjtcbiAgICBASW5wdXQoKVxuICAgIHB1YmxpYyBwcm9maWxlU2VydmljZTogUHJvZmlsZVNlcnZpY2U7XG4gICAgQElucHV0KClcbiAgICBwdWJsaWMgcmFkYXJTZXJ2aWNlOiBSYWRhclNlcnZpY2U7XG4gICAgQElucHV0KClcbiAgICBwdWJsaWMgdG9nZ2xlQ3VtdWxhdGl2ZTogYm9vbGVhbjtcblxuICAgIHB1YmxpYyBwZXJpb2RCZWdpbjogRGF0ZTtcbiAgICBwdWJsaWMgcGVyaW9kRW5kOiBEYXRlO1xuXG4gICAgLy8gcHVibGljIFVJIHZhcmlhYmxlc1xuICAgIHB1YmxpYyB0ZWFtTm9kZTogVGVhbU5vZGU7XG4gICAgcHVibGljIHBlcmlvZEJlZ2luQXNTdHJpbmc6IHN0cmluZztcbiAgICBwdWJsaWMgcGVyaW9kRW5kQXNTdHJpbmc6IHN0cmluZztcbiAgICBwdWJsaWMgcGVyaW9kRHVyYXRpb25Bc1N0cmluZzogc3RyaW5nO1xuICAgIHB1YmxpYyBkYXRlU2hvd246IERhdGU7XG4gICAgcHVibGljIGNvb3JkaW5hdGVzOiBNYXBMYXRMbmc7XG4gICAgcHVibGljIGJvcmRlcnM6IE1hcExhdExuZ1tdO1xuICAgIHB1YmxpYyB0aW1lZnJhbWVDb250YWluZXJzOiBUaW1lZnJhbWVDb250YWluZXJzO1xuICAgIHB1YmxpYyBjdXJyZW50VGltZWZyYW1lVGFyZ2V0OiBGcmFtZVNldDtcbiAgICBwdWJsaWMgdGltZWZyYW1lRGF0ZXM6IERhdGVbXTtcbiAgICBwdWJsaWMgY291bnRQb2ludHM6IHtcbiAgICAgICAgbGFiZWw6IHN0cmluZztcbiAgICAgICAgc3R5bGU6IHN0cmluZztcbiAgICAgICAgdmFsdWVzOiB7ZGF0ZTogRGF0ZTsgdmFsdWU6IG51bWJlcn1bXTtcbiAgICB9W107XG4gICAgcHVibGljIGNvdW50c1BlcmlvZDoge1xuICAgICAgICBwZXJjZW50SW1hZ2VzPzogWFlUeXBlW107XG4gICAgICAgIHF1ZXVlUnVubmluZz86IG51bWJlcjtcbiAgICAgICAgcHJvZ3Jlc3M/OiBudW1iZXI7XG4gICAgfTtcblxuICAgIHB1YmxpYyBnYXVnZVNlbGVjdGVkUG9pbnRzOiB7XG4gICAgICAgIGxhYmVsOiBzdHJpbmc7XG4gICAgICAgIHN0eWxlOiBzdHJpbmc7XG4gICAgICAgIHZhbHVlczoge2RhdGU6IERhdGU7IHZhbHVlOiBudW1iZXJ9W107XG4gICAgfVtdO1xuICAgIHB1YmxpYyB0b2dnbGVIaXN0b3J5OiBib29sZWFuO1xuICAgIHB1YmxpYyB0b2dnbGVNYXA6IGJvb2xlYW47XG4gICAgcHVibGljIHRvZ2dsZUNvbXBhcmU6IGJvb2xlYW47XG4gICAgcHVibGljIHRvZ2dsZUdhdWdlTWVhc3VyZXM6IGJvb2xlYW47XG4gICAgcHVibGljIHRvZ2dsZVJlbW92ZUNvbXBhcmVEdXBsaWNhdGU6IGJvb2xlYW47XG4gICAgcHVibGljIHJlZnJlc2hJblByb2dyZXNzOiBib29sZWFuO1xuICAgIHB1YmxpYyBzdW1EZXRhaWxzOiBzdHJpbmc7XG4gICAgcHVibGljIGlzQWRtaW46IGJvb2xlYW47XG4gICAgcHJvdGVjdGVkIHJlYWRvbmx5IERhdGVSYW5nZSA9IERhdGVSYW5nZTtcblxuICAgIGNvbnN0cnVjdG9yKHByb3RlY3RlZCBzdG9yYWdlOiBTdG9yYWdlKSB7fVxuXG4gICAgcHJpdmF0ZSBzdGF0aWMgUGVyaW9kRGlzcGxheShkYXRlOiBEYXRlIHwgc3RyaW5nKSB7XG4gICAgICAgIGxldCBkID0gbmV3IERhdGUoKTtcbiAgICAgICAgaWYgKGRhdGUpIHtcbiAgICAgICAgICAgIGQgPSBuZXcgRGF0ZShkYXRlKTtcbiAgICAgICAgICAgIGNvbnN0IHVzZXJUaW1lem9uZU9mZnNldCA9IGQuZ2V0VGltZXpvbmVPZmZzZXQoKSAqIDYwMDAwO1xuICAgICAgICAgICAgZCA9IG5ldyBEYXRlKGQuZ2V0VGltZSgpIC0gdXNlclRpbWV6b25lT2Zmc2V0KTtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBleGFtcGxlRm9ybWF0dGVkRGF0ZSA9ICcyMDE3LTA2LTAxVDA4OjMwJztcbiAgICAgICAgcmV0dXJuIGQudG9JU09TdHJpbmcoKS5zdWJzdHJpbmcoMCwgZXhhbXBsZUZvcm1hdHRlZERhdGUubGVuZ3RoKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIHN0YXRpYyBEYXRlVVRDKGRhdGU6IHN0cmluZykge1xuICAgICAgICBjb25zdCBoYXNJU09Gb3JtYXQgPSBkYXRlLm1hdGNoKC9eXFxkezR9LVxcZHsyfS1cXGR7Mn1UXFxkezJ9OlxcZHsyfTpcXGR7Mn1cXC5cXGR7M31aJC8pO1xuICAgICAgICBsZXQgZCA9IG5ldyBEYXRlKGRhdGUpO1xuICAgICAgICBpZiAoIWhhc0lTT0Zvcm1hdCkge1xuICAgICAgICAgICAgY29uc3QgdXNlclRpbWV6b25lT2Zmc2V0ID0gZC5nZXRUaW1lem9uZU9mZnNldCgpICogNjAwMDA7XG4gICAgICAgICAgICBkID0gbmV3IERhdGUoZC5nZXRUaW1lKCkgLSB1c2VyVGltZXpvbmVPZmZzZXQpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBkO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBmZXRjaERhdGEoZm9jdXNEYXRlOiBEYXRlLCBmb2N1c1JhbmdlOiBEYXRlUmFuZ2UpIHtcbiAgICAgICAgY29uc3QgdmFsdWVzID0gW107XG4gICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgMTA7IGkrKykge1xuICAgICAgICAgICAgdmFsdWVzLnB1c2goe2RhdGU6IG5ldyBEYXRlKDIwMjAgKyBpLCAwKSwgdmFsdWU6IDEwfSk7XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgZmFrZURhdGEgPSBbXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgbGFiZWw6ICclIFJhaW55JyxcbiAgICAgICAgICAgICAgICBzdHlsZTogJ2JhcicsXG4gICAgICAgICAgICAgICAgdmFsdWVzLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBsYWJlbDogJyUgSW1hZ2VzJyxcbiAgICAgICAgICAgICAgICBzdHlsZTogJ2JhcicsXG4gICAgICAgICAgICAgICAgdmFsdWVzLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIC8vICB7XG4gICAgICAgICAgICAvLyAgICAgIGxhYmVsOiAnJSBRdWFsaXR5JyxcbiAgICAgICAgICAgIC8vICAgICAgc3R5bGU6ICdsaW5lJyxcbiAgICAgICAgICAgIC8vICAgICAgdmFsdWVzLFxuICAgICAgICAgICAgLy8gIH0sXG4gICAgICAgIF07XG5cbiAgICAgICAgY29uc3QgcmFuZ2UgPSBtYXBEYXRlUmFuZ2VUb1N0cmluZyhmb2N1c1JhbmdlKTtcbiAgICAgICAgbGV0IGRhdGEgPSBmYWtlRGF0YTtcbiAgICAgICAgaWYgKCF0aGlzLnJhaW5Ob2RlKSB7XG4gICAgICAgICAgICByZXR1cm4gZGF0YTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChmb2N1c1JhbmdlID09PSBEYXRlUmFuZ2UuQ0VOVFVSWSkge1xuICAgICAgICAgICAgLy8gZmFrZVxuICAgICAgICB9IGVsc2UgaWYgKGZvY3VzUmFuZ2UgPT09IERhdGVSYW5nZS5IT1VSKSB7XG4gICAgICAgICAgICBjb25zdCBob3VyQ291bnRzID0gYXdhaXQgdGhpcy5wcm9maWxlU2VydmljZS5nZXRDb3VudHNIb3VyKHRoaXMucmFpbk5vZGUuaWQsIHtcbiAgICAgICAgICAgICAgICBwZXJpb2RCZWdpbjogZm9jdXNEYXRlLFxuICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgICAgIGRhdGEgPSBbXG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICBsYWJlbDogJ1JhaW55IENvdW50JyxcbiAgICAgICAgICAgICAgICAgICAgc3R5bGU6ICdsaW5lJyxcbiAgICAgICAgICAgICAgICAgICAgdmFsdWVzOiBob3VyQ291bnRzLnJhaW55Q291bnQubWFwKChjKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGU6IFJhYWluRGV0YWlsc0NvbXBvbmVudC5EYXRlVVRDKGMubmFtZSksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU6IE1hdGgubWluKDEwMCwgYy54KSxcbiAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICBsYWJlbDogJyUgSW1hZ2VzJyxcbiAgICAgICAgICAgICAgICAgICAgc3R5bGU6ICdiYXInLFxuICAgICAgICAgICAgICAgICAgICB2YWx1ZXM6IGhvdXJDb3VudHMucGVyY2VudEltYWdlcy5tYXAoKGMpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0ZTogUmFhaW5EZXRhaWxzQ29tcG9uZW50LkRhdGVVVEMoYy5uYW1lKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZTogTWF0aC5taW4oMTAwLCBjLngpLFxuICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgfSksXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgIGxhYmVsOiAnUmFpbnkgU3VtJyxcbiAgICAgICAgICAgICAgICAgICAgc3R5bGU6ICdsaW5lJyxcbiAgICAgICAgICAgICAgICAgICAgdmFsdWVzOiBob3VyQ291bnRzLnJhaW55U3VtLm1hcCgoYykgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBkYXRlOiBSYWFpbkRldGFpbHNDb21wb25lbnQuRGF0ZVVUQyhjLm5hbWUpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlOiBNYXRoLm1pbigxMDAsIGMueCksXG4gICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICB9KSxcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgXTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIC8vIGNvbnNvbGUubG9nKCdmZXRjaERhdGEgVE9ETzonLCBmb2N1c0RhdGUudG9JU09TdHJpbmcoKSwgcmFuZ2UpO1xuICAgICAgICAgICAgY29uc3QgY291bnRzID0gYXdhaXQgdGhpcy5wcm9maWxlU2VydmljZS5nZXRDb3VudHModGhpcy5yYWluTm9kZS5pZCwge1xuICAgICAgICAgICAgICAgIHJhbmdlLFxuICAgICAgICAgICAgICAgIHBlcmlvZEJlZ2luOiBmb2N1c0RhdGUsXG4gICAgICAgICAgICB9KTtcblxuICAgICAgICAgICAgZGF0YSA9IFtcbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgIGxhYmVsOiAnJSBSYWlueScsXG4gICAgICAgICAgICAgICAgICAgIHN0eWxlOiAnYmFyJyxcbiAgICAgICAgICAgICAgICAgICAgdmFsdWVzOiBjb3VudHMucGVyY2VudFJhaW55Lm1hcCgoYykgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBkYXRlOiBSYWFpbkRldGFpbHNDb21wb25lbnQuRGF0ZVVUQyhjLm5hbWUpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlOiBNYXRoLm1pbigxMDAsIGMueCksXG4gICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICB9KSxcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgbGFiZWw6ICclIEltYWdlcycsXG4gICAgICAgICAgICAgICAgICAgIHN0eWxlOiAnYmFyJyxcbiAgICAgICAgICAgICAgICAgICAgdmFsdWVzOiBjb3VudHMucGVyY2VudEltYWdlcy5tYXAoKGMpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0ZTogUmFhaW5EZXRhaWxzQ29tcG9uZW50LkRhdGVVVEMoYy5uYW1lKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZTogTWF0aC5taW4oMTAwLCBjLngpLFxuICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgfSksXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAvLyAge1xuICAgICAgICAgICAgICAgIC8vICAgICAgbGFiZWw6ICclIFF1YWxpdHknLFxuICAgICAgICAgICAgICAgIC8vICAgICAgc3R5bGU6ICdsaW5lJyxcbiAgICAgICAgICAgICAgICAvLyAgICAgIHZhbHVlczogY291bnRzLnBlcmNlbnRRLm1hcCgoYykgPT4ge1xuICAgICAgICAgICAgICAgIC8vICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgICAgLy8gICAgICAgICAgICAgIGRhdGU6IFJhYWluRGV0YWlsc0NvbXBvbmVudC5EYXRlVVRDKGMubmFtZSksXG4gICAgICAgICAgICAgICAgLy8gICAgICAgICAgICAgIHZhbHVlOiBNYXRoLm1pbigxMDAsIGMueCksXG4gICAgICAgICAgICAgICAgLy8gICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAvLyAgICAgIH0pLFxuICAgICAgICAgICAgICAgIC8vICB9LFxuICAgICAgICAgICAgXTtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIGNvbnNvbGUubG9nKGBmZXRjaERhdGEgRE9ORSAke3JhbmdlfWAsIGRhdGEpO1xuICAgICAgICByZXR1cm4gZGF0YTtcbiAgICB9XG5cbiAgICAvLyBXcmFwcGVyIGZ1bmN0aW9uIHRoYXQgcHJlc2VydmVzIHRoZSBhc3luYyBuYXR1cmUgb2YgZmV0Y2hEYXRhXG4gICAgcHVibGljIGZldGNoRGF0YVdyYXBwZXIgPSBhc3luYyAoZm9jdXNEYXRlOiBEYXRlLCBmb2N1c1JhbmdlOiBEYXRlUmFuZ2UpID0+IHtcbiAgICAgICAgcmV0dXJuIGF3YWl0IHRoaXMuZmV0Y2hEYXRhKGZvY3VzRGF0ZSwgZm9jdXNSYW5nZSk7XG4gICAgfTtcblxuICAgIHB1YmxpYyBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKTogdm9pZCB7XG4gICAgICAgIHRoaXMuY2hhbmdlKGNoYW5nZXMpLnRoZW4oKGlnbm9yZWQpID0+IHt9KTtcbiAgICB9XG5cbiAgICBuZ09uRGVzdHJveSgpIHtcbiAgICAgICAgdGhpcy5jbGVhbkFsbCgpO1xuICAgIH1cblxuICAgIGFzeW5jIG9uRW5hYmxlQ291bnRIaXN0b3J5VGFiKHJhaW46IFJhaW5Ob2RlKSB7XG4gICAgICAgIGlmICghdGhpcy50b2dnbGVIaXN0b3J5KSB7XG4gICAgICAgICAgICB0aGlzLmNvdW50UG9pbnRzID0gW107XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBhc3luYyBvblBlcmlvZEJlZ2luQ2hhbmdlKGV2ZW50OiBhbnkpIHtcbiAgICAgICAgY29uc3QgbmV3VmFsdWUgPSBldmVudD8udGFyZ2V0Py52YWx1ZSA/PyB0aGlzLnBlcmlvZEJlZ2luQXNTdHJpbmc7XG4gICAgICAgIHRoaXMucGVyaW9kQmVnaW4gPSBuZXcgRGF0ZShuZXdWYWx1ZSk7XG4gICAgICAgIHRoaXMucGVyaW9kQmVnaW5Bc1N0cmluZyA9IG5ld1ZhbHVlO1xuICAgICAgICB0aGlzLnN0b3JhZ2Uuc2V0KCdyYWFpbi1wZXJpb2RCZWdpbicsIHRoaXMucGVyaW9kQmVnaW4pO1xuXG4gICAgICAgIGF3YWl0IHRoaXMub25QZXJpb2REdXJhdGlvbkNoYW5nZShldmVudCk7XG4gICAgfVxuXG4gICAgYXN5bmMgb25QZXJpb2REdXJhdGlvbkNoYW5nZShfZXZlbnQ6IEV2ZW50KSB7XG4gICAgICAgIGNvbnN0IGR1cmF0aW9uSW5Ib3VyID0gcGFyc2VGbG9hdCh0aGlzLnBlcmlvZER1cmF0aW9uQXNTdHJpbmcpO1xuICAgICAgICB0aGlzLnBlcmlvZEVuZCA9IG5ldyBEYXRlKHRoaXMucGVyaW9kQmVnaW4uZ2V0VGltZSgpICsgZHVyYXRpb25JbkhvdXIgKiAoNjAgKiA2MDAwMCkpO1xuICAgICAgICB0aGlzLnBlcmlvZEVuZEFzU3RyaW5nID0gdGhpcy5wZXJpb2RFbmQudG9JU09TdHJpbmcoKTtcbiAgICAgICAgdGhpcy5zdG9yYWdlLnNldCgncmFhaW4tcGVyaW9kRW5kJywgdGhpcy5wZXJpb2RFbmQpO1xuICAgICAgICB0aGlzLnN0b3JhZ2Uuc2V0KCdyYWFpbi1wZXJpb2REdXJhdGlvbkluSG91cnMnLCBkdXJhdGlvbkluSG91cik7XG4gICAgICAgIHRoaXMucmVmcmVzaE1hbmFnZXIucGVyaW9kID0ge2JlZ2luOiB0aGlzLnBlcmlvZEJlZ2luLCBlbmQ6IHRoaXMucGVyaW9kRW5kfTtcbiAgICB9XG5cbiAgICBhc3luYyBvbkRhdGVDaGFuZ2VJbkNvdW50KGRhdGVDaGFuZ2VkOiBEYXRlKSB7XG4gICAgICAgIC8vIGNvbnNvbGUubG9nKCdvbkRhdGVDaGFuZ2VJbkNvdW50JywgZGF0ZUNoYW5nZWQpO1xuICAgICAgICB0aGlzLnBlcmlvZEJlZ2luQXNTdHJpbmcgPVxuICAgICAgICAgICAgZGF0ZUNoYW5nZWQudG9JU09TdHJpbmcoKS5zdWJzdHJpbmcoMCwgMTEpICtcbiAgICAgICAgICAgIGRhdGVDaGFuZ2VkLnRvTG9jYWxlVGltZVN0cmluZygpLnN1YnN0cmluZygwLCA1KTtcbiAgICAgICAgdGhpcy5wZXJpb2REdXJhdGlvbkFzU3RyaW5nID0gJzEnO1xuICAgICAgICBhd2FpdCB0aGlzLm9uUGVyaW9kQmVnaW5DaGFuZ2UobnVsbCk7XG4gICAgICAgIGF3YWl0IHRoaXMucmVmcmVzaE1hbmFnZXIucmVmcmVzaChmYWxzZSwgdHJ1ZSk7XG4gICAgfVxuXG4gICAgYXN5bmMgb25EYXRlQ2hhbmdlSW5NYXAoZGF0ZVNob3duOiBEYXRlKSB7XG4gICAgICAgIC8vIGNvbnNvbGUubG9nKCdvbkRhdGVDaGFuZ2VJbk1hcCcsIGRhdGVTaG93bik7XG4gICAgICAgIHRoaXMuZGF0ZVNob3duID0gZGF0ZVNob3duO1xuICAgICAgICBjb25zdCBjdW11bGF0aXZlSG91cnM6IG51bWJlciA9ICF0aGlzLnRvZ2dsZUN1bXVsYXRpdmVcbiAgICAgICAgICAgID8gMFxuICAgICAgICAgICAgOiBwYXJzZUZsb2F0KHRoaXMucGVyaW9kRHVyYXRpb25Bc1N0cmluZyk7XG4gICAgICAgIGF3YWl0IHRoaXMucmVmcmVzaE1hbmFnZXIuZmV0Y2godGhpcy5kYXRlU2hvd24sIHRoaXMudG9nZ2xlR2F1Z2VNZWFzdXJlcywgY3VtdWxhdGl2ZUhvdXJzKTtcbiAgICAgICAgdGhpcy5jdXJyZW50VGltZWZyYW1lVGFyZ2V0ID0gdGhpcy5yZWZyZXNoTWFuYWdlci5nZXRUaW1lbGluZVNlbGVjdGVkRnJhbWVTZXQoKTtcbiAgICAgICAgYXdhaXQgdGhpcy5yZWZyZXNoTWFuYWdlci5zZXRSZXBvcnRQZXJpb2QodGhpcy5kYXRlU2hvd24pO1xuICAgIH1cblxuICAgIGFzeW5jIG9uU3VtQ2hhbmdlSW5NYXAoc3VtOiBzdHJpbmcpIHtcbiAgICAgICAgdGhpcy5zdW1EZXRhaWxzID0gc3VtO1xuICAgIH1cblxuICAgIGFzeW5jIG9uR2F1Z2VTZWxlY3RJbk1hcChtYXBMYXRMbmc6IE1hcExhdExuZykge1xuICAgICAgICBjb25zdCBnYXVnZXNGaWx0ZXJlZCA9IHRoaXMuY29tcGFyZU1hbmFnZXIuZ2F1Z2VzSW5NYXAuZmlsdGVyKFxuICAgICAgICAgICAgKGcpID0+IGcubGF0ID09PSBtYXBMYXRMbmcubGF0ICYmIGcubG5nID09PSBtYXBMYXRMbmcubG5nXG4gICAgICAgICk7XG4gICAgICAgIGlmIChnYXVnZXNGaWx0ZXJlZC5sZW5ndGggIT09IDEpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBnYXVnZVNlbGVjdGVkID0gZ2F1Z2VzRmlsdGVyZWRbMF07XG5cbiAgICAgICAgYXdhaXQgdGhpcy5yZWZyZXNoR2F1Z2VWYWx1ZXMoe2lkOiBnYXVnZVNlbGVjdGVkLmlkLCBuYW1lOiBnYXVnZVNlbGVjdGVkLm5hbWV9KTtcblxuICAgICAgICBhd2FpdCB0aGlzLmNvbXBhcmVNYW5hZ2VyLnNlbGVjdEdhdWdlKGdhdWdlU2VsZWN0ZWQuaWQsIDApO1xuICAgIH1cblxuICAgIGFzeW5jIHJlZnJlc2hHYXVnZVZhbHVlcyhnYXVnZVNlbGVjdGVkOiB7aWQ6IHN0cmluZzsgbmFtZTogc3RyaW5nfSkge1xuICAgICAgICBjb25zdCBkYXlCZWdpbiA9IG5ldyBEYXRlKHRoaXMucGVyaW9kQmVnaW4udG9JU09TdHJpbmcoKS5zdWJzdHJpbmcoMCwgMTApKTtcbiAgICAgICAgY29uc3QgZGF5RW5kID0gbmV3IERhdGUoZGF5QmVnaW4uZ2V0VGltZSgpICsgMjQgKiA2MCAqIDYwICogMTAwMCAtIDEpO1xuICAgICAgICBjb25zdCBnYXVnZU1lYXN1cmVzID0gYXdhaXQgdGhpcy5wcm9maWxlU2VydmljZS5nZXRHYXVnZU1lYXN1cmVzKFxuICAgICAgICAgICAgZ2F1Z2VTZWxlY3RlZC5pZCxcbiAgICAgICAgICAgIGRheUJlZ2luLFxuICAgICAgICAgICAgZGF5RW5kXG4gICAgICAgICk7XG4gICAgICAgIGNvbnN0IGdhdWdlVmFsdWVzOiB7ZGF0ZTogRGF0ZTsgdmFsdWU6IG51bWJlcn1bXSA9IGdhdWdlTWVhc3VyZXMubWFwKChnbSkgPT4ge1xuICAgICAgICAgICAgY29uc3QgY2FydGVzaWFuTWVhc3VyZVZhbHVlID0gbmV3IENhcnRlc2lhbk1lYXN1cmVWYWx1ZShnbS52YWx1ZXNbMF0gYXMgYW55KTtcbiAgICAgICAgICAgIGNvbnN0IHZhbHVlID0gY2FydGVzaWFuTWVhc3VyZVZhbHVlLmdldENhcnRlc2lhblZhbHVlcygpWzBdLnZhbHVlO1xuICAgICAgICAgICAgcmV0dXJuIHtkYXRlOiBnbS5kYXRlLCB2YWx1ZX07XG4gICAgICAgIH0pO1xuICAgICAgICB0aGlzLmdhdWdlU2VsZWN0ZWRQb2ludHMgPSBbXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgbGFiZWw6IGdhdWdlU2VsZWN0ZWQubmFtZSxcbiAgICAgICAgICAgICAgICBzdHlsZTogJ2JhcicsXG4gICAgICAgICAgICAgICAgdmFsdWVzOiBnYXVnZVZhbHVlcyxcbiAgICAgICAgICAgIH0sXG4gICAgICAgIF07XG4gICAgICAgIC8vIGNvbnNvbGUubG9nKCd0aGlzLmdhdWdlU2VsZWN0ZWRQb2ludHM6JywgdGhpcy5nYXVnZVNlbGVjdGVkUG9pbnRzKTtcbiAgICB9XG5cbiAgICBhc3luYyBvbkdhdWdlU2VsZWN0SW5Db21wYXJlKGU6IHtwb2ludDogWFlUeXBlOyBjb21wYXJlSW5kZXg6IG51bWJlcn0pIHtcbiAgICAgICAgYXdhaXQgdGhpcy5yZWZyZXNoR2F1Z2VWYWx1ZXMoe2lkOiBlLnBvaW50LmlkLCBuYW1lOiBlLnBvaW50Lm5hbWV9KTtcblxuICAgICAgICBhd2FpdCB0aGlzLmNvbXBhcmVNYW5hZ2VyLnNlbGVjdEdhdWdlKGUucG9pbnQuaWQsIGUuY29tcGFyZUluZGV4KTtcbiAgICB9XG5cbiAgICBhc3luYyBvblRvZ2dsZU1hcCgkZXZlbnQ6IEV2ZW50KSB7XG4gICAgICAgIC8vIGlmICh0aGlzLnRvZ2dsZU1hcCkge1xuICAgICAgICAvLyAgICBhd2FpdCB0aGlzLnJlZnJlc2hNYXAoKTtcbiAgICAgICAgLy8gfVxuICAgIH1cblxuICAgIG9uQ2hhbmdlRGV0ZWN0aW9uVGVzdChyYWluTm9kZTogUmFpbk5vZGUpIHtcbiAgICAgICAgLy8gVE9ETyBjb25zb2xlLmxvZyhURVNUX0RFVEVDVElPTisrLCAnb25DaGFuZ2VEZXRlY3Rpb25UZXN0Jyk7XG4gICAgICAgIHJldHVybiAnJztcbiAgICB9XG5cbiAgICBhc3luYyByZWZyZXNoTWFwKCkge1xuICAgICAgICB0aGlzLmdhdWdlU2VsZWN0ZWRQb2ludHMgPSBbXTtcbiAgICAgICAgLy8gdGhpcy5xdWFsaXR5Q29uZi50cnVzdGZ1bEdhdWdlSWRzID0gdGhpcy5xdWFsaXR5Q29uZi50cnVzdGZ1bEdhdWdlSWRzPy5sZW5ndGggPiAwID9cbiAgICAgICAgLy8gIHRoaXMucXVhbGl0eUNvbmYudHJ1c3RmdWxHYXVnZUlkcyA6IHRoaXMuZ2F1Z2VzVG9GaWx0ZXIuZmlsdGVyKGcgPT4gZy5pc0luKS5tYXAoZyA9PiBnLmlkKTtcbiAgICAgICAgdGhpcy5ib3JkZXJzID0gW1xuICAgICAgICAgICAgLy8gIG5ldyBNYXBMYXRMbmcocmFpbk5vZGUubGF0aXR1ZGUgLSAyNTAgKiAwLjAwOCwgcmFpbk5vZGUubG9uZ2l0dWRlKSxcbiAgICAgICAgICAgIC8vICBuZXcgTWFwTGF0TG5nKHJhaW5Ob2RlLmxhdGl0dWRlLCByYWluTm9kZS5sb25naXR1ZGUgLSAyNTAgKiAwLjAxMyksXG4gICAgICAgICAgICAvLyAgbmV3IE1hcExhdExuZyhyYWluTm9kZS5sYXRpdHVkZSwgcmFpbk5vZGUubG9uZ2l0dWRlICsgMjUwICogMC4wMTMpLFxuICAgICAgICAgICAgLy8gIG5ldyBNYXBMYXRMbmcocmFpbk5vZGUubGF0aXR1ZGUgKyAyNTAgKiAwLjAwOCwgcmFpbk5vZGUubG9uZ2l0dWRlKSxcbiAgICAgICAgXTtcblxuICAgICAgICB0aGlzLmNvbXBhcmVNYW5hZ2VyLmNsZWFuQWxsKCk7XG4gICAgICAgIGF3YWl0IHRoaXMuY29tcGFyZU1hbmFnZXIuc2V0R2F1Z2VzSW5NYXAoKTtcbiAgICAgICAgdGhpcy5yZWZyZXNoTWFuYWdlci5yZWZyZXNoKGZhbHNlLCB0aGlzLnRvZ2dsZUFkbWluKS50aGVuKChfaWdub3JlZCkgPT4ge30pO1xuICAgIH1cblxuICAgIGFzeW5jIHNldFBlcmlvZE9mTm93KCkge1xuICAgICAgICAvLyBzaG91bGQgbG9vayBsaWtlOiBcIjIwMjQtMDgtMjZUMTI6MTNcIlxuICAgICAgICBjb25zdCBsYXN0MzBtbiA9IG5ldyBEYXRlKCk7XG4gICAgICAgIGxhc3QzMG1uLnNldE1pbnV0ZXMobGFzdDMwbW4uZ2V0TWludXRlcygpIC0gMzApO1xuICAgICAgICB0aGlzLnBlcmlvZEJlZ2luQXNTdHJpbmcgPVxuICAgICAgICAgICAgbGFzdDMwbW4udG9JU09TdHJpbmcoKS5zdWJzdHJpbmcoMCwgMTEpICsgbGFzdDMwbW4udG9Mb2NhbGVUaW1lU3RyaW5nKCkuc3Vic3RyaW5nKDAsIDUpO1xuICAgICAgICB0aGlzLnBlcmlvZER1cmF0aW9uQXNTdHJpbmcgPSAnMSc7XG4gICAgICAgIGF3YWl0IHRoaXMub25QZXJpb2RCZWdpbkNoYW5nZShudWxsKTtcbiAgICAgICAgdGhpcy5yZWZyZXNoTWFuYWdlci5yZWZyZXNoKGZhbHNlLCB0cnVlKTtcbiAgICB9XG5cbiAgICBnZXRQZXJjZW50T2ZJbWFnZXMoKSB7XG4gICAgICAgIGlmICghdGhpcy5jb3VudHNQZXJpb2QucGVyY2VudEltYWdlcz8ubGVuZ3RoKSB7XG4gICAgICAgICAgICByZXR1cm4gMDtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IGR1cmluZ1BlcmlvZCA9IHRoaXMuY291bnRzUGVyaW9kLnBlcmNlbnRJbWFnZXMuZmlsdGVyKFxuICAgICAgICAgICAgKGEpID0+XG4gICAgICAgICAgICAgICAgdGhpcy5wZXJpb2RCZWdpbi5nZXRUaW1lKCkgPD0gbmV3IERhdGUoYS5uYW1lKS5nZXRUaW1lKCkgJiZcbiAgICAgICAgICAgICAgICBuZXcgRGF0ZShhLm5hbWUpLmdldFRpbWUoKSA8PSB0aGlzLnBlcmlvZEVuZC5nZXRUaW1lKClcbiAgICAgICAgKTtcbiAgICAgICAgY29uc3Qgc3VtbWVkID0gZHVyaW5nUGVyaW9kLnJlZHVjZSgoYSwgYikgPT4gYSArIChiLnggPz8gMCksIDApO1xuICAgICAgICByZXR1cm4gTWF0aC5yb3VuZChzdW1tZWQgLyBkdXJpbmdQZXJpb2QubGVuZ3RoKTtcbiAgICB9XG5cbiAgICBnZXRQZXJjZW50T2ZDb21wdXRhdGlvbnMoKSB7XG4gICAgICAgIGNvbnN0IHRpbWVsaW5lID0gdGhpcy5yZWZyZXNoTWFuYWdlci5nZXRUaW1lbGluZUZyYW1lU2V0KCk7XG4gICAgICAgIGlmICghdGltZWxpbmU/Lmxlbmd0aCkge1xuICAgICAgICAgICAgcmV0dXJuIDA7XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCB0aW1lbGluZVdpdGhDb21wdXRhdGlvbiA9IHRpbWVsaW5lLmZpbHRlcigoYSkgPT4gISFhLnJhaW5Db21wdXRhdGlvbklkKTtcbiAgICAgICAgY29uc3QgcmF0aW8gPSB0aW1lbGluZVdpdGhDb21wdXRhdGlvbi5sZW5ndGggLyB0aW1lbGluZS5sZW5ndGg7XG4gICAgICAgIHJldHVybiBNYXRoLnJvdW5kKHJhdGlvICogMTAwKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGNsZWFuQWxsKCkge1xuICAgICAgICB0aGlzLmJvcmRlcnMgPSBbXTtcblxuICAgICAgICB0aGlzLmlzQWRtaW4gPSBmYWxzZTtcbiAgICAgICAgdGhpcy50aW1lZnJhbWVDb250YWluZXJzID0gbmV3IFRpbWVmcmFtZUNvbnRhaW5lcnMoW10pO1xuICAgICAgICB0aGlzLmN1cnJlbnRUaW1lZnJhbWVUYXJnZXQgPSBudWxsO1xuICAgICAgICB0aGlzLnRpbWVmcmFtZURhdGVzID0gW107XG4gICAgICAgIHRoaXMuY291bnRQb2ludHMgPSBbXTtcbiAgICAgICAgdGhpcy5jb3VudHNQZXJpb2QgPSB7cHJvZ3Jlc3M6IDAsIHF1ZXVlUnVubmluZzogMCwgcGVyY2VudEltYWdlczogW119O1xuICAgICAgICB0aGlzLmdhdWdlU2VsZWN0ZWRQb2ludHMgPSBbXTtcblxuICAgICAgICB0aGlzLnRvZ2dsZUhpc3RvcnkgPSBmYWxzZTtcbiAgICAgICAgdGhpcy50b2dnbGVNYXAgPSB0cnVlO1xuICAgICAgICB0aGlzLnRvZ2dsZUNvbXBhcmUgPSBmYWxzZTtcbiAgICAgICAgdGhpcy50b2dnbGVHYXVnZU1lYXN1cmVzID0gZmFsc2U7XG4gICAgICAgIHRoaXMudG9nZ2xlUmVtb3ZlQ29tcGFyZUR1cGxpY2F0ZSA9IHRydWU7XG5cbiAgICAgICAgdGhpcy5wZXJpb2RCZWdpbiA9IG5ldyBEYXRlKHRoaXMuc3RvcmFnZS5nZXQoJ3JhYWluLXBlcmlvZEJlZ2luJykpO1xuICAgICAgICB0aGlzLnBlcmlvZEVuZCA9IG5ldyBEYXRlKHRoaXMuc3RvcmFnZS5nZXQoJ3JhYWluLXBlcmlvZEVuZCcpKTtcbiAgICAgICAgdGhpcy5wZXJpb2RCZWdpbkFzU3RyaW5nID0gUmFhaW5EZXRhaWxzQ29tcG9uZW50LlBlcmlvZERpc3BsYXkodGhpcy5wZXJpb2RCZWdpbik7XG4gICAgICAgIHRoaXMucGVyaW9kRW5kQXNTdHJpbmcgPSBSYWFpbkRldGFpbHNDb21wb25lbnQuUGVyaW9kRGlzcGxheSh0aGlzLnBlcmlvZEVuZCk7XG4gICAgICAgIHRoaXMucGVyaW9kRHVyYXRpb25Bc1N0cmluZyA9XG4gICAgICAgICAgICAnJyArICh0aGlzLnBlcmlvZEVuZC5nZXRUaW1lKCkgLSB0aGlzLnBlcmlvZEJlZ2luLmdldFRpbWUoKSkgLyAoNjAgKiA2MDAwMCk7XG5cbiAgICAgICAgdGhpcy5kYXRlU2hvd24gPSB0aGlzLnBlcmlvZEJlZ2luO1xuXG4gICAgICAgIHRoaXMucmVmcmVzaEluUHJvZ3Jlc3MgPSBmYWxzZTtcblxuICAgICAgICB0aGlzLmNvbXBhcmVNYW5hZ2VyPy5jbGVhbkFsbCgpO1xuICAgICAgICB0aGlzLnJlZnJlc2hNYW5hZ2VyPy5jbGVhbkFsbCgpO1xuICAgIH1cblxuICAgIHByaXZhdGUgYXN5bmMgaW5pdCgpIHtcbiAgICAgICAgdGhpcy5jbGVhbkFsbCgpO1xuICAgICAgICBhd2FpdCB0aGlzLmluaXRSYWluKCk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBhc3luYyBpbml0UmFpbigpIHtcbiAgICAgICAgaWYgKCF0aGlzLnJhaW5Ob2RlKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLmlzQWRtaW4gPSB0aGlzLnByb2ZpbGVTZXJ2aWNlLmlzQWRtaW4oKTtcblxuICAgICAgICB0aGlzLnJlZnJlc2hNYW5hZ2VyLnJhaW5Ob2RlID0gdGhpcy5yYWluTm9kZTtcbiAgICAgICAgdGhpcy5jb21wYXJlTWFuYWdlci5yYWluTm9kZSA9IHRoaXMucmFpbk5vZGU7XG5cbiAgICAgICAgdGhpcy5yZWZyZXNoTWFuYWdlci5zZXRNZXRob2RzKFxuICAgICAgICAgICAgdGhpcy5vblJlZnJlc2hJblByb2dyZXNzLmJpbmQodGhpcyksXG4gICAgICAgICAgICB0aGlzLm9uUmVmcmVzaERvbmUuYmluZCh0aGlzKSxcbiAgICAgICAgICAgIHRoaXMub25GZXRjaERvbmUuYmluZCh0aGlzKVxuICAgICAgICApO1xuXG4gICAgICAgIGNvbnN0IGNlbnRlciA9IHRoaXMucmFpbk5vZGUuZ2V0Q2VudGVyKCk7XG4gICAgICAgIHRoaXMuY29vcmRpbmF0ZXMgPSBuZXcgTWFwTGF0TG5nKGNlbnRlci5sYXQsIGNlbnRlci5sbmcpO1xuICAgICAgICB0aGlzLnRlYW1Ob2RlID0gYXdhaXQgdGhpcy5wcm9maWxlU2VydmljZS5nZXRUZWFtKFxuICAgICAgICAgICAgdGhpcy5yYWluTm9kZS5nZXRMaW5rKFRlYW1Ob2RlLlRZUEUpLmdldElkKClcbiAgICAgICAgKTtcblxuICAgICAgICBpZiAodGhpcy5wZXJpb2RCZWdpbiAmJiB0aGlzLnBlcmlvZEVuZCkge1xuICAgICAgICAgICAgdGhpcy5yZWZyZXNoTWFuYWdlci5wZXJpb2QgPSB7YmVnaW46IHRoaXMucGVyaW9kQmVnaW4sIGVuZDogdGhpcy5wZXJpb2RFbmR9O1xuICAgICAgICAgICAgYXdhaXQgdGhpcy5yZWZyZXNoTWFuYWdlci5yZWZyZXNoKGZhbHNlLCB0aGlzLnRvZ2dsZUFkbWluKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHByaXZhdGUgYXN5bmMgb25SZWZyZXNoSW5Qcm9ncmVzcyhcbiAgICAgICAgY291bnRQZXJpb2RzOiB7XG4gICAgICAgICAgICBwZXJjZW50SW1hZ2VzPzogWFlUeXBlW107XG4gICAgICAgICAgICBxdWV1ZVJ1bm5pbmc/OiBudW1iZXI7XG4gICAgICAgICAgICBwcm9ncmVzcz86IG51bWJlcjtcbiAgICAgICAgfSxcbiAgICAgICAgdGltZWZyYW1lRGF0ZXM6IERhdGVbXVxuICAgICkge1xuICAgICAgICB0aGlzLnJlZnJlc2hJblByb2dyZXNzID0gdHJ1ZTtcbiAgICAgICAgdGhpcy5jb3VudHNQZXJpb2QgPSBjb3VudFBlcmlvZHM7XG4gICAgICAgIHRoaXMudGltZWZyYW1lRGF0ZXMgPSB0aW1lZnJhbWVEYXRlcztcbiAgICB9XG5cbiAgICBwcml2YXRlIGFzeW5jIG9uUmVmcmVzaERvbmUodGltZWZyYW1lRGF0ZXM6IERhdGVbXSkge1xuICAgICAgICB0aGlzLnRpbWVmcmFtZURhdGVzID0gdGltZWZyYW1lRGF0ZXM7XG4gICAgICAgIHRoaXMucmVmcmVzaEluUHJvZ3Jlc3MgPSBmYWxzZTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGFzeW5jIG9uRmV0Y2hEb25lKHRpbWVmcmFtZUNvbnRhaW5lcnM/OiBUaW1lZnJhbWVDb250YWluZXJzKSB7XG4gICAgICAgIGlmICh0aW1lZnJhbWVDb250YWluZXJzKSB7XG4gICAgICAgICAgICB0aGlzLnRpbWVmcmFtZUNvbnRhaW5lcnMgPSB0aW1lZnJhbWVDb250YWluZXJzO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBhc3luYyBjaGFuZ2UoY2hhbmdlczogU2ltcGxlQ2hhbmdlcykge1xuICAgICAgICBhd2FpdCB0aGlzLmluaXQoKTtcbiAgICB9XG59XG4iLCI8IS0tIE1haW4gY29udGVudCBjb250YWluZXIgLS0+XG48ZGl2ICpuZ0lmPVwicmFpbk5vZGVcIiBjbGFzcz1cInJhYWluLWRldGFpbHMtY29udGFpbmVyXCI+XG5cbiAgICA8IS0tIFBlcmlvZCBzZWxlY3Rpb24gc2VjdGlvbiAtLT5cbiAgICA8aW9uLWNhcmQgY2xhc3M9XCJwZXJpb2QtY2FyZFwiPlxuICAgICAgICA8aW9uLWNhcmQtY29udGVudD5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJwZXJpb2QtY29udHJvbHNcIj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicGVyaW9kLXJvd1wiPlxuICAgICAgICAgICAgICAgICAgICA8aW9uLWJ1dHRvbiAoY2xpY2spPVwic2V0UGVyaW9kT2ZOb3coKVwiIGNsYXNzPVwibm93LWJ1dHRvblwiIGZpbGw9XCJvdXRsaW5lXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8aW9uLWljb24gbmFtZT1cInRpbWUtb3V0bGluZVwiIHNsb3Q9XCJzdGFydFwiPjwvaW9uLWljb24+XG4gICAgICAgICAgICAgICAgICAgICAgICBOb3dcbiAgICAgICAgICAgICAgICAgICAgPC9pb24tYnV0dG9uPlxuXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJwZXJpb2Qtc3RhcnQgaW9uLWhpZGUtbWQtZG93blwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGlvbi1sYWJlbD5TdGFydDo8L2lvbi1sYWJlbD5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCAoY2hhbmdlKT1cIm9uUGVyaW9kQmVnaW5DaGFuZ2UoJGV2ZW50KVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3ZhbHVlXT1cInBlcmlvZEJlZ2luQXNTdHJpbmdcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiZGF0ZXRpbWUtaW5wdXRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU9XCJkYXRldGltZS1sb2NhbFwiPlxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicGVyaW9kLWR1cmF0aW9uIGlvbi1oaWRlLW1kLWRvd25cIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxpb24tbGFiZWw+RHVyYXRpb246PC9pb24tbGFiZWw+XG4gICAgICAgICAgICAgICAgICAgICAgICA8aW9uLXNlbGVjdCAoaW9uRGlzbWlzcyk9XCJvblBlcmlvZER1cmF0aW9uQ2hhbmdlKCRldmVudClcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWyhuZ01vZGVsKV09XCJwZXJpb2REdXJhdGlvbkFzU3RyaW5nXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiZHVyYXRpb24tc2VsZWN0XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkPVwicGVyaW9kRHVyYXRpb25cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50ZXJmYWNlPVwicG9wb3ZlclwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpb24tc2VsZWN0LW9wdGlvbiB2YWx1ZT1cIjAuMjVcIj4xNSBtaW51dGVzPC9pb24tc2VsZWN0LW9wdGlvbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW9uLXNlbGVjdC1vcHRpb24gdmFsdWU9XCIwLjVcIj4zMCBtaW51dGVzPC9pb24tc2VsZWN0LW9wdGlvbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW9uLXNlbGVjdC1vcHRpb24gdmFsdWU9XCIxXCI+MSBob3VyPC9pb24tc2VsZWN0LW9wdGlvbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW9uLXNlbGVjdC1vcHRpb24gdmFsdWU9XCIyXCI+MiBob3VyczwvaW9uLXNlbGVjdC1vcHRpb24+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlvbi1zZWxlY3Qtb3B0aW9uIHZhbHVlPVwiM1wiPjMgaG91cnM8L2lvbi1zZWxlY3Qtb3B0aW9uPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpb24tc2VsZWN0LW9wdGlvbiB2YWx1ZT1cIjRcIj40IGhvdXJzPC9pb24tc2VsZWN0LW9wdGlvbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW9uLXNlbGVjdC1vcHRpb24gdmFsdWU9XCI1XCI+NSBob3VyczwvaW9uLXNlbGVjdC1vcHRpb24+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlvbi1zZWxlY3Qtb3B0aW9uIHZhbHVlPVwiNlwiPjYgaG91cnM8L2lvbi1zZWxlY3Qtb3B0aW9uPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpb24tc2VsZWN0LW9wdGlvbiAqbmdJZj1cImlzQWRtaW5cIiB2YWx1ZT1cIjI0XCI+MjQgaG91cnM8L2lvbi1zZWxlY3Qtb3B0aW9uPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9pb24tc2VsZWN0PlxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGlkPVwiYWxsLWRhdGVzXCIgc2xvdD1cImVuZFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGlvbi1sYWJlbCBjbGFzcz1cInRvZ2dsZS1sYWJlbFwiPkFsbCBkYXRlczwvaW9uLWxhYmVsPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGlvbi10b2dnbGUgKGlvbkNoYW5nZSk9XCJvbkVuYWJsZUNvdW50SGlzdG9yeVRhYihyYWluTm9kZSlcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWyhuZ01vZGVsKV09XCJ0b2dnbGVIaXN0b3J5XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtjaGVja2VkXT1cInRvZ2dsZUhpc3RvcnlcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvaW9uLXRvZ2dsZT5cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICAgICAgICA8IS0tIEhpZGRlbiBsYWJlbCBmb3IgY2hhbmdlIGRldGVjdGlvbiAtLT5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiaGlkZGVuLWxhYmVsXCI+e3sgb25DaGFuZ2VEZXRlY3Rpb25UZXN0KHJhaW5Ob2RlKSB9fTwvZGl2PlxuICAgICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICAgIDwhLS0gSGlzdG9yaWNhbCBtYXAgc2VjdGlvbiAtLT5cbiAgICAgICAgICAgIDxkaXYgKm5nSWY9XCJ0b2dnbGVIaXN0b3J5XCIgY2xhc3M9XCJwZXJpb2QtY29udHJvbHNcIj5cbiAgICAgICAgICAgICAgICA8cmFhaW4tZGF0ZS1keW5hbWljIChjaGFuZ2VkRGF0ZSk9XCJvbkRhdGVDaGFuZ2VJbkNvdW50KCRldmVudClcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2N1cnJlbnRIZWlnaHRdPVwiMzAwXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtmZXRjaERhdGFdPVwiZmV0Y2hEYXRhV3JhcHBlclwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbcG9pbnRzXT1cImNvdW50UG9pbnRzXCI+XG4gICAgICAgICAgICAgICAgPC9yYWFpbi1kYXRlLWR5bmFtaWM+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9pb24tY2FyZC1jb250ZW50PlxuICAgIDwvaW9uLWNhcmQ+XG5cbiAgICA8IS0tIE1hcCBzZWN0aW9uIC0tPlxuICAgIDxpb24tY2FyZCBjbGFzcz1cIm1hcC1jYXJkXCI+XG4gICAgICAgIDxpb24tY2FyZC1jb250ZW50IGNsYXNzPVwibWFwLWNvbnRlbnRcIj5cbiAgICAgICAgICAgIDxpb24tZ3JpZD5cbiAgICAgICAgICAgICAgICA8aW9uLXJvdyBpZD1cInByb2dyZXNzQW5kUmVmcmVzaFwiPlxuICAgICAgICAgICAgICAgICAgICA8aW9uLWNvbCBzaXplPVwiMTJcIiBzaXplLW1kPVwiNlwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPCEtLSBsZWZ0IGNvbnRlbnQgKGlmIGFueSkgLS0+XG4gICAgICAgICAgICAgICAgICAgIDwvaW9uLWNvbD5cbiAgICAgICAgICAgICAgICAgICAgPGlvbi1jb2wgY2xhc3M9XCJpb24tdGV4dC1yaWdodFwiIHNpemU9XCIxMlwiIHNpemUtbWQ9XCI2XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8aW9uLWxhYmVsIGNsYXNzPVwiaW9uLW1hcmdpbi1lbmRcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiAqbmdJZj1cImdldFBlcmNlbnRPZkNvbXB1dGF0aW9ucygpXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7IGdldFBlcmNlbnRPZkNvbXB1dGF0aW9ucygpIH19JSBJbWFnZXNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGkgKm5nSWY9XCJjb3VudHNQZXJpb2QucHJvZ3Jlc3NcIiBjbGFzcz1cInByb2dyZXNzLWluZGljYXRvclwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSW4gUHJvZ3Jlc3M6IHt7IGNvdW50c1BlcmlvZC5wcm9ncmVzcyB9fS4uLlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2k+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwiIWdldFBlcmNlbnRPZkNvbXB1dGF0aW9ucygpXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5vIGltYWdlIGF2YWlsYWJsZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiAqbmdJZj1cInJlZnJlc2hNYW5hZ2VyLmxhc3RFcnJvclwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Yj5FcnJvcnM6IHt7IHJlZnJlc2hNYW5hZ2VyLmxhc3RFcnJvciB9fTwvYj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2lvbi1sYWJlbD5cblxuICAgICAgICAgICAgICAgICAgICAgICAgPGlvbi1idXR0b24gKGNsaWNrKT1cInJlZnJlc2hNYXAoKVwiIFtkaXNhYmxlZF09XCJyZWZyZXNoSW5Qcm9ncmVzc1wiIGNsYXNzPVwicmVmcmVzaC1idXR0b25cIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBSZWZyZXNoIE1hcFxuICAgICAgICAgICAgICAgICAgICAgICAgPC9pb24tYnV0dG9uPlxuICAgICAgICAgICAgICAgICAgICA8L2lvbi1jb2w+XG5cbiAgICAgICAgICAgICAgICAgICAgPCEtLSBQcm9ncmVzcyBpbmRpY2F0b3IgLS0+XG4gICAgICAgICAgICAgICAgICAgIDxpb24tcHJvZ3Jlc3MtYmFyICpuZ0lmPVwicmVmcmVzaEluUHJvZ3Jlc3NcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbYnVmZmVyXT1cIihjb3VudHNQZXJpb2QucHJvZ3Jlc3MgLyAoKHRpbWVmcmFtZURhdGVzPy5sZW5ndGggfHwgMTApICszKSkrMC4wMVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFt2YWx1ZV09XCJjb3VudHNQZXJpb2QucHJvZ3Jlc3MgLyAoKHRpbWVmcmFtZURhdGVzPy5sZW5ndGggfHwgMTApICszKVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbG9yPVwicHJpbWFyeVwiPlxuICAgICAgICAgICAgICAgICAgICA8L2lvbi1wcm9ncmVzcy1iYXI+XG4gICAgICAgICAgICAgICAgPC9pb24tcm93PlxuICAgICAgICAgICAgICAgIDxpb24tcm93ICpuZ0lmPVwidG9nZ2xlTWFwICYmIGdldFBlcmNlbnRPZkltYWdlcygpXCI+XG4gICAgICAgICAgICAgICAgICAgIDwhLS0gTWFwIGNvbXBvbmVudCAtLT5cbiAgICAgICAgICAgICAgICAgICAgPGlvbi1jb2wgY2xhc3M9XCJtYXAtY29sdW1uXCIgc2l6ZS1sZz1cIjdcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtYXAtY29udGFpbmVyXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHJhYWluLW1hcFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNoYW5nZWREYXRlKT1cIm9uRGF0ZUNoYW5nZUluTWFwKCRldmVudClcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNoYW5nZWRTdW0pPVwib25TdW1DaGFuZ2VJbk1hcCgkZXZlbnQpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChzZWxlY3RlZE1hcmtlcik9XCJvbkdhdWdlU2VsZWN0SW5NYXAoJGV2ZW50KVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbY29vcmRpbmF0ZXNdPVwiY29vcmRpbmF0ZXNcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2N1cnJlbnRIZWlnaHRdPVwiNTAwXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtkZWZhdWx0RGF0ZV09XCJkYXRlU2hvd25cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW21hcmtlcnNdPVwie1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvcmRlcnMsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2F1Z2VzOiBjb21wYXJlTWFuYWdlci5nYXVnZXNJbk1hcCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnYXVnZXNJbkNvbXBhcmU6IGNvbXBhcmVNYW5hZ2VyLmdhdWdlc0luQ29tcGFyZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxlY3RlZEdhdWdlczogY29tcGFyZU1hbmFnZXIuc2VsZWN0ZWRHYXVnZXMsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGl4ZWxzOiBjb21wYXJlTWFuYWdlci5zZWxlY3RlZFBpeGVscyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwaXhlbHNTb2x1dGlvbjogY29tcGFyZU1hbmFnZXIucGl4ZWxzU29sdXRpb25zPy5sZW5ndGggPyBjb21wYXJlTWFuYWdlci5waXhlbHNTb2x1dGlvbnNbMF0gOiBbXSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzcGVlZHM6IGNvbXBhcmVNYW5hZ2VyLnNwZWVkc1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbc2hvd0N1bXVsYXRpdmVdPVwidG9nZ2xlQ3VtdWxhdGl2ZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbc3VtRm5dPVwicmVmcmVzaE1hbmFnZXIuc3VtRm5cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3N1bVZhbHVlc109XCJyZWZyZXNoTWFuYWdlci5zdW1WYWx1ZXNcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3RpbWVmcmFtZUNvbnRhaW5lcnNdPVwidGltZWZyYW1lQ29udGFpbmVyc1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbdGltZWZyYW1lRGF0ZXNdPVwidGltZWZyYW1lRGF0ZXNcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3JhYWluLW1hcD5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZGF0YS1jb2x1bW5cIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8IS0tIFRlY2huaWNhbCBkZXRhaWxzIChjb2xsYXBzaWJsZSBmb3IgY2xlYW5lciBVSSkgLS0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRldGFpbHMgY2xhc3M9XCJ0ZWNobmljYWwtZGV0YWlsc1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3VtbWFyeT5JbWFnZSBEZXRhaWxzPC9zdW1tYXJ5PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZGV0YWlscy1jb250ZW50XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZGV0YWlsLXJvd1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiZGV0YWlsLWxhYmVsXCI+Q29tcHV0ZWQ6PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiZGV0YWlsLXZhbHVlXCI+e3sgcmVmcmVzaE1hbmFnZXIucmFpbkNvbXB1dGF0aW9uTWFwRG9uZURhdGUgfCBkYXRlOid5eXl5LU1NLWRkIEhIOm1tJyB9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImRldGFpbC1yb3dcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImRldGFpbC1sYWJlbFwiPlZlcnNpb246PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiZGV0YWlsLXZhbHVlXCI+e3sgcmVmcmVzaE1hbmFnZXIucmFpbkNvbXB1dGF0aW9uTWFwVmVyc2lvbiB9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImRldGFpbC1yb3dcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImRldGFpbC1sYWJlbFwiPkxhdW5jaGVkIGJ5Ojwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImRldGFpbC12YWx1ZVwiPnt7IHJlZnJlc2hNYW5hZ2VyLnJhaW5Db21wdXRhdGlvbk1hcExhdW5jaGVkQnkgfX08L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkZXRhaWwtcm93XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJkZXRhaWwtbGFiZWxcIj5UaW1lIHNwZW50Ojwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImRldGFpbC12YWx1ZVwiPnt7IHJlZnJlc2hNYW5hZ2VyLnJhaW5Db21wdXRhdGlvbk1hcFRpbWVTcGVudEluTXMgfX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbXM8L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkZXRhaWwtcm93XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJkZXRhaWwtbGFiZWxcIj5EYXRlOjwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImRldGFpbC12YWx1ZVwiPnt7IHJlZnJlc2hNYW5hZ2VyLnJhaW5Db21wdXRhdGlvbk1hcERhdGU/LnRvSVNPU3RyaW5nKCkgfX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCB7eyByZWZyZXNoTWFuYWdlci5yYWluQ29tcHV0YXRpb25NYXBEYXRlIHwgZGF0ZToneXl5eS1NTS1kZCBISDptbScgfX08L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkZXRhaWwtcm93XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJkZXRhaWwtbGFiZWxcIj5XYXRlciBpbiB0aGUgbWFwOjwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImRldGFpbC12YWx1ZVwiPnt7IHN1bURldGFpbHMgfX08L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkZXRhaWwtcm93XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJkZXRhaWwtbGFiZWxcIj5Tb3VyY2UgREJaIG1pbjo8L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJkZXRhaWwtdmFsdWVcIj57eyByZWZyZXNoTWFuYWdlci5yYWluQ29tcHV0YXRpb25NYXBPcmlnaW5hbE1pbiB9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImRldGFpbC1yb3dcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImRldGFpbC1sYWJlbFwiPlNvdXJjZSBEQlogbWF4Ojwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImRldGFpbC12YWx1ZVwiPnt7IHJlZnJlc2hNYW5hZ2VyLnJhaW5Db21wdXRhdGlvbk1hcE9yaWdpbmFsTWF4IH19PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGV0YWlscz5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICA8L2lvbi1jb2w+XG5cbiAgICAgICAgICAgICAgICAgICAgPCEtLSBEYXRhIHBhbmVsIC0tPlxuICAgICAgICAgICAgICAgICAgICA8aW9uLWNvbCBjbGFzcz1cImRhdGEtY29sdW1uXCIgc2l6ZS1sZz1cIjVcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkYXRhLXBhbmVsXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPCEtLSBDb21wYXJlIHN0YWNrIGNvbXBvbmVudCAtLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29tcGFyZS1zdGFja1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cmFhaW4tY29tcGFyZS1zdGFja1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChzZWxlY3RlZFBvaW50KT1cIm9uR2F1Z2VTZWxlY3RJbkNvbXBhcmUoJGV2ZW50KVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2NvbXBhcmVNYW5hZ2VyXT1cImNvbXBhcmVNYW5hZ2VyXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbY3VtdWxhdGl2ZV09XCJ0b2dnbGVDdW11bGF0aXZlXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcmFhaW4tY29tcGFyZS1zdGFjaz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwhLS0gVGVjaG5pY2FsIGRldGFpbHMgKGNvbGxhcHNpYmxlIGZvciBjbGVhbmVyIFVJKSAtLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGV0YWlscyBjbGFzcz1cInRlY2huaWNhbC1kZXRhaWxzXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzdW1tYXJ5PkNvbXBhcmUgRGV0YWlsczwvc3VtbWFyeT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImRldGFpbHMtY29udGVudFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBbbmdDbGFzc109XCJ7J3dhcm5pbmcnOiByZWZyZXNoTWFuYWdlci5yYWluQ29tcHV0YXRpb25NYXBEb25lRGF0ZT8uZ2V0VGltZSgpID4gY29tcGFyZU1hbmFnZXIuY3VycmVudFF1YWxpdHlEb25lRGF0ZT8uZ2V0VGltZSgpICsgNjAwMDB9XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJkZXRhaWwtcm93XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJkZXRhaWwtbGFiZWxcIj5Db21wdXRlZDo8L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJkZXRhaWwtdmFsdWVcIj57eyBjb21wYXJlTWFuYWdlci5jdXJyZW50UXVhbGl0eURvbmVEYXRlIHwgZGF0ZToneXl5eS1NTS1kZCBISDptbScgfX08L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkZXRhaWwtcm93XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJkZXRhaWwtbGFiZWxcIj5WZXJzaW9uOjwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImRldGFpbC12YWx1ZVwiPnt7IGNvbXBhcmVNYW5hZ2VyLmNvbXBhcmVWZXJzaW9uIH19PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZGV0YWlsLXJvd1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiZGV0YWlsLWxhYmVsXCI+TGF1bmNoZWQgYnk6PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiZGV0YWlsLXZhbHVlXCI+e3sgY29tcGFyZU1hbmFnZXIuY3VycmVudFF1YWxpdHlMYXVuY2hlZEJ5IH19PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZGV0YWlsLXJvd1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiZGV0YWlsLWxhYmVsXCI+VGltZSBzcGVudDo8L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJkZXRhaWwtdmFsdWVcIj57eyBjb21wYXJlTWFuYWdlci5jdXJyZW50UXVhbGl0eVRpbWVTcGVudEluTXMgfX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbXM8L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkZXRhaWwtcm93XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJkZXRhaWwtbGFiZWxcIj5HYXVnZXM6PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiZGV0YWlsLXZhbHVlXCI+e3sgY29tcGFyZU1hbmFnZXIuZ2F1Z2VzSW5Db21wYXJlLmxlbmd0aCB9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImRldGFpbC1yb3dcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImRldGFpbC1sYWJlbFwiPlBvaW50czo8L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJkZXRhaWwtdmFsdWVcIj57eyBjb21wYXJlTWFuYWdlci5nbG9iYWxDb21wYXJlUG9pbnRzLmxlbmd0aCB9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2RldGFpbHM+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgPC9pb24tY29sPlxuICAgICAgICAgICAgICAgIDwvaW9uLXJvdz5cbiAgICAgICAgICAgICAgICA8aW9uLXJvdz5cbiAgICAgICAgICAgICAgICAgICAgPCEtLSBCb3R0b20gcHJvZ3Jlc3MgYmFyIC0tPlxuICAgICAgICAgICAgICAgICAgICA8aW9uLXByb2dyZXNzLWJhciAqbmdJZj1cInJlZnJlc2hJblByb2dyZXNzXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2J1ZmZlcl09XCIoY291bnRzUGVyaW9kLnByb2dyZXNzIC8gKCh0aW1lZnJhbWVEYXRlcz8ubGVuZ3RoIHx8IDEwKSArMykpKzAuMDFcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbdmFsdWVdPVwiY291bnRzUGVyaW9kLnByb2dyZXNzIC8gKCh0aW1lZnJhbWVEYXRlcz8ubGVuZ3RoIHx8IDEwKSArMylcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb2xvcj1cInByaW1hcnlcIj5cbiAgICAgICAgICAgICAgICAgICAgPC9pb24tcHJvZ3Jlc3MtYmFyPlxuICAgICAgICAgICAgICAgIDwvaW9uLXJvdz5cbiAgICAgICAgICAgIDwvaW9uLWdyaWQ+XG4gICAgICAgIDwvaW9uLWNhcmQtY29udGVudD5cbiAgICA8L2lvbi1jYXJkPlxuXG4gICAgPCEtLSBHYXVnZSB2YWx1ZXMgc2VjdGlvbiAtLT5cbiAgICA8aW9uLWNhcmQgKm5nSWY9XCJnYXVnZVNlbGVjdGVkUG9pbnRzLmxlbmd0aCAmJiBnYXVnZVNlbGVjdGVkUG9pbnRzWzBdLnZhbHVlcy5sZW5ndGhcIiBjbGFzcz1cImdhdWdlLWNhcmRcIj5cbiAgICAgICAgPGlvbi1jYXJkLWhlYWRlcj5cbiAgICAgICAgICAgIDxpb24tY2FyZC10aXRsZT5cbiAgICAgICAgICAgICAgICA8aW9uLWljb24gbmFtZT1cImFuYWx5dGljcy1vdXRsaW5lXCI+PC9pb24taWNvbj5cbiAgICAgICAgICAgICAgICBTZWxlY3RlZCBHYXVnZSBEYXRhXG4gICAgICAgICAgICA8L2lvbi1jYXJkLXRpdGxlPlxuICAgICAgICA8L2lvbi1jYXJkLWhlYWRlcj5cbiAgICAgICAgPGlvbi1jYXJkLWNvbnRlbnQ+XG4gICAgICAgICAgICA8cmFhaW4tZGF0ZS1mb2N1c1xuICAgICAgICAgICAgICAgICAgICBbY3VycmVudEhlaWdodF09XCIzMDBcIlxuICAgICAgICAgICAgICAgICAgICBbZm9jdXNEYXRlXT1cInBlcmlvZEJlZ2luXCJcbiAgICAgICAgICAgICAgICAgICAgW2ZvY3VzUmFuZ2VdPVwiRGF0ZVJhbmdlLkRBWVwiXG4gICAgICAgICAgICAgICAgICAgIFtwb2ludHNdPVwiZ2F1Z2VTZWxlY3RlZFBvaW50c1wiXG4gICAgICAgICAgICAgICAgICAgIFt3aXRob3V0QWxsXT1cInRydWVcIj5cbiAgICAgICAgICAgIDwvcmFhaW4tZGF0ZS1mb2N1cz5cbiAgICAgICAgPC9pb24tY2FyZC1jb250ZW50PlxuICAgIDwvaW9uLWNhcmQ+XG5cbjwvZGl2PlxuIl19
|
|
368
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmFhaW4tZGV0YWlscy5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvY29yZS9zaGFyZWQvcmFhaW4tZGV0YWlscy9yYWFpbi1kZXRhaWxzLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uL3NyYy9jb3JlL3NoYXJlZC9yYWFpbi1kZXRhaWxzL3JhYWluLWRldGFpbHMuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFDLFNBQVMsRUFBRSxLQUFLLEVBQXNDLE1BQU0sZUFBZSxDQUFDO0FBRXBGLE9BQU8sRUFBQyxxQkFBcUIsRUFBWSxRQUFRLEVBQUMsTUFBTSxhQUFhLENBQUM7QUFDdEUsT0FBTyxFQUFDLFNBQVMsRUFBRSxTQUFTLEVBQUUsbUJBQW1CLEVBQUMsTUFBTSxVQUFVLENBQUM7QUFDbkUsT0FBTyxFQUEyQixvQkFBb0IsRUFBaUIsTUFBTSxVQUFVLENBQUM7Ozs7Ozs7Ozs7QUFVeEYsTUFBTSxPQUFPLHFCQUFxQjtJQXdEOUIsWUFBc0IsT0FBZ0I7UUFBaEIsWUFBTyxHQUFQLE9BQU8sQ0FBUztRQUZuQixjQUFTLEdBQUcsU0FBUyxDQUFDO1FBMEl6QyxnRUFBZ0U7UUFDekQscUJBQWdCLEdBQUcsS0FBSyxFQUFFLFNBQWUsRUFBRSxVQUFxQixFQUFFLEVBQUU7WUFDdkUsT0FBTyxNQUFNLElBQUksQ0FBQyxTQUFTLENBQUMsU0FBUyxFQUFFLFVBQVUsQ0FBQyxDQUFDO1FBQ3ZELENBQUMsQ0FBQztJQTNJdUMsQ0FBQztJQUVsQyxNQUFNLENBQUMsYUFBYSxDQUFDLElBQW1CO1FBQzVDLElBQUksQ0FBQyxHQUFHLElBQUksSUFBSSxFQUFFLENBQUM7UUFDbkIsSUFBSSxJQUFJLEVBQUU7WUFDTixDQUFDLEdBQUcsSUFBSSxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7WUFDbkIsTUFBTSxrQkFBa0IsR0FBRyxDQUFDLENBQUMsaUJBQWlCLEVBQUUsR0FBRyxL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c0dBQXJCLHFCQUFxQixrVENkbEMsbXhkQTJQQTsyRkQ3T2EscUJBQXFCO2tCQUxqQyxTQUFTOytCQUNJLGVBQWU7OEZBTWxCLFdBQVc7c0JBRGpCLEtBQUs7Z0JBR0MsUUFBUTtzQkFEZCxLQUFLO2dCQUdDLGNBQWM7c0JBRHBCLEtBQUs7Z0JBR0MsY0FBYztzQkFEcEIsS0FBSztnQkFHQyxjQUFjO3NCQURwQixLQUFLO2dCQUdDLFlBQVk7c0JBRGxCLEtBQUs7Z0JBR0MsZ0JBQWdCO3NCQUR0QixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtDb21wb25lbnQsIElucHV0LCBPbkNoYW5nZXMsIE9uRGVzdHJveSwgU2ltcGxlQ2hhbmdlc30gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge1Byb2ZpbGVTZXJ2aWNlfSBmcm9tICcuLi9wcm9maWxlLnNlcnZpY2UnO1xuaW1wb3J0IHtDYXJ0ZXNpYW5NZWFzdXJlVmFsdWUsIFJhaW5Ob2RlLCBUZWFtTm9kZX0gZnJvbSAncmFhaW4tbW9kZWwnO1xuaW1wb3J0IHtEYXRlUmFuZ2UsIE1hcExhdExuZywgVGltZWZyYW1lQ29udGFpbmVyc30gZnJvbSAncmFhaW4tdWknO1xuaW1wb3J0IHtDb21wYXJlTWFuYWdlciwgRnJhbWVTZXQsIG1hcERhdGVSYW5nZVRvU3RyaW5nLCBSZWZyZXNoTWFuYWdlcn0gZnJvbSAnLi4vdG9vbHMnO1xuaW1wb3J0IHtYWVR5cGV9IGZyb20gJy4uL3h5dHlwZSc7XG5pbXBvcnQge1JhZGFyU2VydmljZX0gZnJvbSAnLi4vcmFkYXIuc2VydmljZSc7XG5pbXBvcnQge1N0b3JhZ2V9IGZyb20gJy4uL3N0b3JhZ2Uuc2VydmljZSc7XG5cbkBDb21wb25lbnQoe1xuICAgIHNlbGVjdG9yOiAncmFhaW4tZGV0YWlscycsXG4gICAgdGVtcGxhdGVVcmw6ICdyYWFpbi1kZXRhaWxzLmNvbXBvbmVudC5odG1sJyxcbiAgICBzdHlsZVVybHM6IFsncmFhaW4tZGV0YWlscy5jb21wb25lbnQuc2NzcyddLFxufSlcbmV4cG9ydCBjbGFzcyBSYWFpbkRldGFpbHNDb21wb25lbnQgaW1wbGVtZW50cyBPbkRlc3Ryb3ksIE9uQ2hhbmdlcyB7XG4gICAgQElucHV0KClcbiAgICBwdWJsaWMgdG9nZ2xlQWRtaW46IGJvb2xlYW47XG4gICAgQElucHV0KClcbiAgICBwdWJsaWMgcmFpbk5vZGU6IFJhaW5Ob2RlO1xuICAgIEBJbnB1dCgpXG4gICAgcHVibGljIGNvbXBhcmVNYW5hZ2VyOiBDb21wYXJlTWFuYWdlcjtcbiAgICBASW5wdXQoKVxuICAgIHB1YmxpYyByZWZyZXNoTWFuYWdlcjogUmVmcmVzaE1hbmFnZXI7XG4gICAgQElucHV0KClcbiAgICBwdWJsaWMgcHJvZmlsZVNlcnZpY2U6IFByb2ZpbGVTZXJ2aWNlO1xuICAgIEBJbnB1dCgpXG4gICAgcHVibGljIHJhZGFyU2VydmljZTogUmFkYXJTZXJ2aWNlO1xuICAgIEBJbnB1dCgpXG4gICAgcHVibGljIHRvZ2dsZUN1bXVsYXRpdmU6IGJvb2xlYW47XG5cbiAgICBwdWJsaWMgcGVyaW9kQmVnaW46IERhdGU7XG4gICAgcHVibGljIHBlcmlvZEVuZDogRGF0ZTtcblxuICAgIC8vIHB1YmxpYyBVSSB2YXJpYWJsZXNcbiAgICBwdWJsaWMgdGVhbU5vZGU6IFRlYW1Ob2RlO1xuICAgIHB1YmxpYyBwZXJpb2RCZWdpbkFzU3RyaW5nOiBzdHJpbmc7XG4gICAgcHVibGljIHBlcmlvZEVuZEFzU3RyaW5nOiBzdHJpbmc7XG4gICAgcHVibGljIHBlcmlvZER1cmF0aW9uQXNTdHJpbmc6IHN0cmluZztcbiAgICBwdWJsaWMgZGF0ZVNob3duOiBEYXRlO1xuICAgIHB1YmxpYyBjb29yZGluYXRlczogTWFwTGF0TG5nO1xuICAgIHB1YmxpYyBib3JkZXJzOiBNYXBMYXRMbmdbXTtcbiAgICBwdWJsaWMgdGltZWZyYW1lQ29udGFpbmVyczogVGltZWZyYW1lQ29udGFpbmVycztcbiAgICBwdWJsaWMgY3VycmVudFRpbWVmcmFtZVRhcmdldDogRnJhbWVTZXQ7XG4gICAgcHVibGljIHRpbWVmcmFtZURhdGVzOiBEYXRlW107XG4gICAgcHVibGljIGNvdW50UG9pbnRzOiB7XG4gICAgICAgIGxhYmVsOiBzdHJpbmc7XG4gICAgICAgIHN0eWxlOiBzdHJpbmc7XG4gICAgICAgIHZhbHVlczoge2RhdGU6IERhdGU7IHZhbHVlOiBudW1iZXJ9W107XG4gICAgfVtdO1xuICAgIHB1YmxpYyBjb3VudHNQZXJpb2Q6IHtcbiAgICAgICAgcGVyY2VudEltYWdlcz86IFhZVHlwZVtdO1xuICAgICAgICBxdWV1ZVJ1bm5pbmc/OiBudW1iZXI7XG4gICAgICAgIHByb2dyZXNzPzogbnVtYmVyO1xuICAgIH07XG5cbiAgICBwdWJsaWMgZ2F1Z2VTZWxlY3RlZFBvaW50czoge1xuICAgICAgICBsYWJlbDogc3RyaW5nO1xuICAgICAgICBzdHlsZTogc3RyaW5nO1xuICAgICAgICB2YWx1ZXM6IHtkYXRlOiBEYXRlOyB2YWx1ZTogbnVtYmVyfVtdO1xuICAgIH1bXTtcbiAgICBwdWJsaWMgdG9nZ2xlSGlzdG9yeTogYm9vbGVhbjtcbiAgICBwdWJsaWMgdG9nZ2xlTWFwOiBib29sZWFuO1xuICAgIHB1YmxpYyB0b2dnbGVDb21wYXJlOiBib29sZWFuO1xuICAgIHB1YmxpYyB0b2dnbGVHYXVnZU1lYXN1cmVzOiBib29sZWFuO1xuICAgIHB1YmxpYyB0b2dnbGVSZW1vdmVDb21wYXJlRHVwbGljYXRlOiBib29sZWFuO1xuICAgIHB1YmxpYyByZWZyZXNoSW5Qcm9ncmVzczogYm9vbGVhbjtcbiAgICBwdWJsaWMgc3VtRGV0YWlsczogc3RyaW5nO1xuICAgIHB1YmxpYyBpc0FkbWluOiBib29sZWFuO1xuICAgIHByb3RlY3RlZCByZWFkb25seSBEYXRlUmFuZ2UgPSBEYXRlUmFuZ2U7XG5cbiAgICBjb25zdHJ1Y3Rvcihwcm90ZWN0ZWQgc3RvcmFnZTogU3RvcmFnZSkge31cblxuICAgIHByaXZhdGUgc3RhdGljIFBlcmlvZERpc3BsYXkoZGF0ZTogRGF0ZSB8IHN0cmluZykge1xuICAgICAgICBsZXQgZCA9IG5ldyBEYXRlKCk7XG4gICAgICAgIGlmIChkYXRlKSB7XG4gICAgICAgICAgICBkID0gbmV3IERhdGUoZGF0ZSk7XG4gICAgICAgICAgICBjb25zdCB1c2VyVGltZXpvbmVPZmZzZXQgPSBkLmdldFRpbWV6b25lT2Zmc2V0KCkgKiA2MDAwMDtcbiAgICAgICAgICAgIGQgPSBuZXcgRGF0ZShkLmdldFRpbWUoKSAtIHVzZXJUaW1lem9uZU9mZnNldCk7XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgZXhhbXBsZUZvcm1hdHRlZERhdGUgPSAnMjAxNy0wNi0wMVQwODozMCc7XG4gICAgICAgIHJldHVybiBkLnRvSVNPU3RyaW5nKCkuc3Vic3RyaW5nKDAsIGV4YW1wbGVGb3JtYXR0ZWREYXRlLmxlbmd0aCk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBzdGF0aWMgRGF0ZVVUQyhkYXRlOiBzdHJpbmcpIHtcbiAgICAgICAgY29uc3QgaGFzSVNPRm9ybWF0ID0gZGF0ZS5tYXRjaCgvXlxcZHs0fS1cXGR7Mn0tXFxkezJ9VFxcZHsyfTpcXGR7Mn06XFxkezJ9XFwuXFxkezN9WiQvKTtcbiAgICAgICAgbGV0IGQgPSBuZXcgRGF0ZShkYXRlKTtcbiAgICAgICAgaWYgKCFoYXNJU09Gb3JtYXQpIHtcbiAgICAgICAgICAgIGNvbnN0IHVzZXJUaW1lem9uZU9mZnNldCA9IGQuZ2V0VGltZXpvbmVPZmZzZXQoKSAqIDYwMDAwO1xuICAgICAgICAgICAgZCA9IG5ldyBEYXRlKGQuZ2V0VGltZSgpIC0gdXNlclRpbWV6b25lT2Zmc2V0KTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gZDtcbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgZmV0Y2hEYXRhKGZvY3VzRGF0ZTogRGF0ZSwgZm9jdXNSYW5nZTogRGF0ZVJhbmdlKSB7XG4gICAgICAgIGNvbnN0IHZhbHVlcyA9IFtdO1xuICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IDEwOyBpKyspIHtcbiAgICAgICAgICAgIHZhbHVlcy5wdXNoKHtkYXRlOiBuZXcgRGF0ZSgyMDIwICsgaSwgMCksIHZhbHVlOiAxMH0pO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IGZha2VEYXRhID0gW1xuICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIGxhYmVsOiAnJSBSYWlueScsXG4gICAgICAgICAgICAgICAgc3R5bGU6ICdiYXInLFxuICAgICAgICAgICAgICAgIHZhbHVlcyxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgbGFiZWw6ICclIEltYWdlcycsXG4gICAgICAgICAgICAgICAgc3R5bGU6ICdiYXInLFxuICAgICAgICAgICAgICAgIHZhbHVlcyxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAvLyAge1xuICAgICAgICAgICAgLy8gICAgICBsYWJlbDogJyUgUXVhbGl0eScsXG4gICAgICAgICAgICAvLyAgICAgIHN0eWxlOiAnbGluZScsXG4gICAgICAgICAgICAvLyAgICAgIHZhbHVlcyxcbiAgICAgICAgICAgIC8vICB9LFxuICAgICAgICBdO1xuXG4gICAgICAgIGNvbnN0IHJhbmdlID0gbWFwRGF0ZVJhbmdlVG9TdHJpbmcoZm9jdXNSYW5nZSk7XG4gICAgICAgIGxldCBkYXRhID0gZmFrZURhdGE7XG4gICAgICAgIGlmICghdGhpcy5yYWluTm9kZSkge1xuICAgICAgICAgICAgcmV0dXJuIGRhdGE7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoZm9jdXNSYW5nZSA9PT0gRGF0ZVJhbmdlLkNFTlRVUlkpIHtcbiAgICAgICAgICAgIC8vIGZha2VcbiAgICAgICAgfSBlbHNlIGlmIChmb2N1c1JhbmdlID09PSBEYXRlUmFuZ2UuSE9VUikge1xuICAgICAgICAgICAgY29uc3QgaG91ckNvdW50cyA9IGF3YWl0IHRoaXMucHJvZmlsZVNlcnZpY2UuZ2V0Q291bnRzSG91cih0aGlzLnJhaW5Ob2RlLmlkLCB7XG4gICAgICAgICAgICAgICAgcGVyaW9kQmVnaW46IGZvY3VzRGF0ZSxcbiAgICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgICBkYXRhID0gW1xuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgbGFiZWw6ICdSYWlueSBDb3VudCcsXG4gICAgICAgICAgICAgICAgICAgIHN0eWxlOiAnbGluZScsXG4gICAgICAgICAgICAgICAgICAgIHZhbHVlczogaG91ckNvdW50cy5yYWlueUNvdW50Lm1hcCgoYykgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBkYXRlOiBSYWFpbkRldGFpbHNDb21wb25lbnQuRGF0ZVVUQyhjLm5hbWUpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlOiBNYXRoLm1pbigxMDAsIGMueCksXG4gICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICB9KSxcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgbGFiZWw6ICclIEltYWdlcycsXG4gICAgICAgICAgICAgICAgICAgIHN0eWxlOiAnYmFyJyxcbiAgICAgICAgICAgICAgICAgICAgdmFsdWVzOiBob3VyQ291bnRzLnBlcmNlbnRJbWFnZXMubWFwKChjKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGU6IFJhYWluRGV0YWlsc0NvbXBvbmVudC5EYXRlVVRDKGMubmFtZSksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU6IE1hdGgubWluKDEwMCwgYy54KSxcbiAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICBsYWJlbDogJ1JhaW55IFN1bScsXG4gICAgICAgICAgICAgICAgICAgIHN0eWxlOiAnbGluZScsXG4gICAgICAgICAgICAgICAgICAgIHZhbHVlczogaG91ckNvdW50cy5yYWlueVN1bS5tYXAoKGMpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0ZTogUmFhaW5EZXRhaWxzQ29tcG9uZW50LkRhdGVVVEMoYy5uYW1lKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZTogTWF0aC5taW4oMTAwLCBjLngpLFxuICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgfSksXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIF07XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAvLyBjb25zb2xlLmxvZygnZmV0Y2hEYXRhIFRPRE86JywgZm9jdXNEYXRlLnRvSVNPU3RyaW5nKCksIHJhbmdlKTtcbiAgICAgICAgICAgIGNvbnN0IGNvdW50cyA9IGF3YWl0IHRoaXMucHJvZmlsZVNlcnZpY2UuZ2V0Q291bnRzKHRoaXMucmFpbk5vZGUuaWQsIHtcbiAgICAgICAgICAgICAgICByYW5nZSxcbiAgICAgICAgICAgICAgICBwZXJpb2RCZWdpbjogZm9jdXNEYXRlLFxuICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgICAgIGRhdGEgPSBbXG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICBsYWJlbDogJyUgUmFpbnknLFxuICAgICAgICAgICAgICAgICAgICBzdHlsZTogJ2JhcicsXG4gICAgICAgICAgICAgICAgICAgIHZhbHVlczogY291bnRzLnBlcmNlbnRSYWlueS5tYXAoKGMpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0ZTogUmFhaW5EZXRhaWxzQ29tcG9uZW50LkRhdGVVVEMoYy5uYW1lKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZTogTWF0aC5taW4oMTAwLCBjLngpLFxuICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgfSksXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgIGxhYmVsOiAnJSBJbWFnZXMnLFxuICAgICAgICAgICAgICAgICAgICBzdHlsZTogJ2JhcicsXG4gICAgICAgICAgICAgICAgICAgIHZhbHVlczogY291bnRzLnBlcmNlbnRJbWFnZXMubWFwKChjKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGU6IFJhYWluRGV0YWlsc0NvbXBvbmVudC5EYXRlVVRDKGMubmFtZSksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU6IE1hdGgubWluKDEwMCwgYy54KSxcbiAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgLy8gIHtcbiAgICAgICAgICAgICAgICAvLyAgICAgIGxhYmVsOiAnJSBRdWFsaXR5JyxcbiAgICAgICAgICAgICAgICAvLyAgICAgIHN0eWxlOiAnbGluZScsXG4gICAgICAgICAgICAgICAgLy8gICAgICB2YWx1ZXM6IGNvdW50cy5wZXJjZW50US5tYXAoKGMpID0+IHtcbiAgICAgICAgICAgICAgICAvLyAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAgIC8vICAgICAgICAgICAgICBkYXRlOiBSYWFpbkRldGFpbHNDb21wb25lbnQuRGF0ZVVUQyhjLm5hbWUpLFxuICAgICAgICAgICAgICAgIC8vICAgICAgICAgICAgICB2YWx1ZTogTWF0aC5taW4oMTAwLCBjLngpLFxuICAgICAgICAgICAgICAgIC8vICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgLy8gICAgICB9KSxcbiAgICAgICAgICAgICAgICAvLyAgfSxcbiAgICAgICAgICAgIF07XG4gICAgICAgIH1cblxuICAgICAgICAvLyBjb25zb2xlLmxvZyhgZmV0Y2hEYXRhIERPTkUgJHtyYW5nZX1gLCBkYXRhKTtcbiAgICAgICAgcmV0dXJuIGRhdGE7XG4gICAgfVxuXG4gICAgLy8gV3JhcHBlciBmdW5jdGlvbiB0aGF0IHByZXNlcnZlcyB0aGUgYXN5bmMgbmF0dXJlIG9mIGZldGNoRGF0YVxuICAgIHB1YmxpYyBmZXRjaERhdGFXcmFwcGVyID0gYXN5bmMgKGZvY3VzRGF0ZTogRGF0ZSwgZm9jdXNSYW5nZTogRGF0ZVJhbmdlKSA9PiB7XG4gICAgICAgIHJldHVybiBhd2FpdCB0aGlzLmZldGNoRGF0YShmb2N1c0RhdGUsIGZvY3VzUmFuZ2UpO1xuICAgIH07XG5cbiAgICBwdWJsaWMgbmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcyk6IHZvaWQge1xuICAgICAgICB0aGlzLmNoYW5nZShjaGFuZ2VzKS50aGVuKChpZ25vcmVkKSA9PiB7fSk7XG4gICAgfVxuXG4gICAgbmdPbkRlc3Ryb3koKSB7XG4gICAgICAgIHRoaXMuY2xlYW5BbGwoKTtcbiAgICB9XG5cbiAgICBhc3luYyBvbkVuYWJsZUNvdW50SGlzdG9yeVRhYihyYWluOiBSYWluTm9kZSkge1xuICAgICAgICBpZiAoIXRoaXMudG9nZ2xlSGlzdG9yeSkge1xuICAgICAgICAgICAgdGhpcy5jb3VudFBvaW50cyA9IFtdO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgYXN5bmMgb25QZXJpb2RCZWdpbkNoYW5nZShldmVudDogYW55KSB7XG4gICAgICAgIGNvbnN0IG5ld1ZhbHVlID0gZXZlbnQ/LnRhcmdldD8udmFsdWUgPz8gdGhpcy5wZXJpb2RCZWdpbkFzU3RyaW5nO1xuICAgICAgICB0aGlzLnBlcmlvZEJlZ2luID0gbmV3IERhdGUobmV3VmFsdWUpO1xuICAgICAgICB0aGlzLnBlcmlvZEJlZ2luQXNTdHJpbmcgPSBuZXdWYWx1ZTtcbiAgICAgICAgdGhpcy5zdG9yYWdlLnNldCgncmFhaW4tcGVyaW9kQmVnaW4nLCB0aGlzLnBlcmlvZEJlZ2luKTtcblxuICAgICAgICBhd2FpdCB0aGlzLm9uUGVyaW9kRHVyYXRpb25DaGFuZ2UoZXZlbnQpO1xuICAgIH1cblxuICAgIGFzeW5jIG9uUGVyaW9kRHVyYXRpb25DaGFuZ2UoX2V2ZW50OiBFdmVudCkge1xuICAgICAgICBjb25zdCBkdXJhdGlvbkluSG91ciA9IHBhcnNlRmxvYXQodGhpcy5wZXJpb2REdXJhdGlvbkFzU3RyaW5nKTtcbiAgICAgICAgdGhpcy5wZXJpb2RFbmQgPSBuZXcgRGF0ZSh0aGlzLnBlcmlvZEJlZ2luLmdldFRpbWUoKSArIGR1cmF0aW9uSW5Ib3VyICogKDYwICogNjAwMDApKTtcbiAgICAgICAgdGhpcy5wZXJpb2RFbmRBc1N0cmluZyA9IHRoaXMucGVyaW9kRW5kLnRvSVNPU3RyaW5nKCk7XG4gICAgICAgIHRoaXMuc3RvcmFnZS5zZXQoJ3JhYWluLXBlcmlvZEVuZCcsIHRoaXMucGVyaW9kRW5kKTtcbiAgICAgICAgdGhpcy5zdG9yYWdlLnNldCgncmFhaW4tcGVyaW9kRHVyYXRpb25JbkhvdXJzJywgZHVyYXRpb25JbkhvdXIpO1xuICAgICAgICB0aGlzLnJlZnJlc2hNYW5hZ2VyLnBlcmlvZCA9IHtiZWdpbjogdGhpcy5wZXJpb2RCZWdpbiwgZW5kOiB0aGlzLnBlcmlvZEVuZH07XG4gICAgfVxuXG4gICAgYXN5bmMgb25EYXRlQ2hhbmdlSW5Db3VudChkYXRlQ2hhbmdlZDogRGF0ZSkge1xuICAgICAgICAvLyBjb25zb2xlLmxvZygnb25EYXRlQ2hhbmdlSW5Db3VudCcsIGRhdGVDaGFuZ2VkKTtcbiAgICAgICAgdGhpcy5wZXJpb2RCZWdpbkFzU3RyaW5nID1cbiAgICAgICAgICAgIGRhdGVDaGFuZ2VkLnRvSVNPU3RyaW5nKCkuc3Vic3RyaW5nKDAsIDExKSArXG4gICAgICAgICAgICBkYXRlQ2hhbmdlZC50b0xvY2FsZVRpbWVTdHJpbmcoKS5zdWJzdHJpbmcoMCwgNSk7XG4gICAgICAgIHRoaXMucGVyaW9kRHVyYXRpb25Bc1N0cmluZyA9ICcxJztcbiAgICAgICAgYXdhaXQgdGhpcy5vblBlcmlvZEJlZ2luQ2hhbmdlKG51bGwpO1xuICAgICAgICBhd2FpdCB0aGlzLnJlZnJlc2hNYW5hZ2VyLnJlZnJlc2goZmFsc2UsIHRydWUpO1xuICAgIH1cblxuICAgIGFzeW5jIG9uRGF0ZUNoYW5nZUluTWFwKGRhdGVTaG93bjogRGF0ZSkge1xuICAgICAgICAvLyBjb25zb2xlLmxvZygnb25EYXRlQ2hhbmdlSW5NYXAnLCBkYXRlU2hvd24pO1xuICAgICAgICB0aGlzLmRhdGVTaG93biA9IGRhdGVTaG93bjtcbiAgICAgICAgY29uc3QgY3VtdWxhdGl2ZUhvdXJzOiBudW1iZXIgPSAhdGhpcy50b2dnbGVDdW11bGF0aXZlXG4gICAgICAgICAgICA/IDBcbiAgICAgICAgICAgIDogcGFyc2VGbG9hdCh0aGlzLnBlcmlvZER1cmF0aW9uQXNTdHJpbmcpO1xuICAgICAgICBhd2FpdCB0aGlzLnJlZnJlc2hNYW5hZ2VyLmZldGNoKHRoaXMuZGF0ZVNob3duLCB0aGlzLnRvZ2dsZUdhdWdlTWVhc3VyZXMsIGN1bXVsYXRpdmVIb3Vycyk7XG4gICAgICAgIHRoaXMuY3VycmVudFRpbWVmcmFtZVRhcmdldCA9IHRoaXMucmVmcmVzaE1hbmFnZXIuZ2V0VGltZWxpbmVTZWxlY3RlZEZyYW1lU2V0KCk7XG4gICAgICAgIGF3YWl0IHRoaXMucmVmcmVzaE1hbmFnZXIuc2V0UmVwb3J0UGVyaW9kKHRoaXMuZGF0ZVNob3duKTtcbiAgICB9XG5cbiAgICBhc3luYyBvblN1bUNoYW5nZUluTWFwKHN1bTogc3RyaW5nKSB7XG4gICAgICAgIHRoaXMuc3VtRGV0YWlscyA9IHN1bTtcbiAgICB9XG5cbiAgICBhc3luYyBvbkdhdWdlU2VsZWN0SW5NYXAobWFwTGF0TG5nOiBNYXBMYXRMbmcpIHtcbiAgICAgICAgY29uc3QgZ2F1Z2VzRmlsdGVyZWQgPSB0aGlzLmNvbXBhcmVNYW5hZ2VyLmdhdWdlc0luTWFwLmZpbHRlcihcbiAgICAgICAgICAgIChnKSA9PiBnLmxhdCA9PT0gbWFwTGF0TG5nLmxhdCAmJiBnLmxuZyA9PT0gbWFwTGF0TG5nLmxuZ1xuICAgICAgICApO1xuICAgICAgICBpZiAoZ2F1Z2VzRmlsdGVyZWQubGVuZ3RoICE9PSAxKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgZ2F1Z2VTZWxlY3RlZCA9IGdhdWdlc0ZpbHRlcmVkWzBdO1xuXG4gICAgICAgIGF3YWl0IHRoaXMucmVmcmVzaEdhdWdlVmFsdWVzKHtpZDogZ2F1Z2VTZWxlY3RlZC5pZCwgbmFtZTogZ2F1Z2VTZWxlY3RlZC5uYW1lfSk7XG5cbiAgICAgICAgYXdhaXQgdGhpcy5jb21wYXJlTWFuYWdlci5zZWxlY3RHYXVnZShnYXVnZVNlbGVjdGVkLmlkLCAwKTtcbiAgICB9XG5cbiAgICBhc3luYyByZWZyZXNoR2F1Z2VWYWx1ZXMoZ2F1Z2VTZWxlY3RlZDoge2lkOiBzdHJpbmc7IG5hbWU6IHN0cmluZ30pIHtcbiAgICAgICAgY29uc3QgZ2F1Z2VWYWx1ZVNob3dCZWdpbiA9IG5ldyBEYXRlKHRoaXMucGVyaW9kQmVnaW4uZ2V0VGltZSgpIC0gMjQgKiA2MCAqIDYwICogMTAwMCk7XG4gICAgICAgIGNvbnN0IGdhdWdlVmFsdWVTaG93RW5kID0gbmV3IERhdGUodGhpcy5wZXJpb2RFbmQuZ2V0VGltZSgpICsgMjQgKiA2MCAqIDYwICogMTAwMCk7XG4gICAgICAgIGdhdWdlVmFsdWVTaG93QmVnaW4uc2V0SG91cnMoMCk7XG4gICAgICAgIGdhdWdlVmFsdWVTaG93QmVnaW4uc2V0TWludXRlcygwKTtcbiAgICAgICAgZ2F1Z2VWYWx1ZVNob3dFbmQuc2V0SG91cnMoMjMpO1xuICAgICAgICBnYXVnZVZhbHVlU2hvd0VuZC5zZXRNaW51dGVzKDU5KTtcbiAgICAgICAgY29uc3QgZ2F1Z2VNZWFzdXJlcyA9IGF3YWl0IHRoaXMucHJvZmlsZVNlcnZpY2UuZ2V0R2F1Z2VNZWFzdXJlcyhcbiAgICAgICAgICAgIGdhdWdlU2VsZWN0ZWQuaWQsXG4gICAgICAgICAgICBnYXVnZVZhbHVlU2hvd0JlZ2luLFxuICAgICAgICAgICAgZ2F1Z2VWYWx1ZVNob3dFbmRcbiAgICAgICAgKTtcbiAgICAgICAgY29uc3QgZ2F1Z2VWYWx1ZXM6IHtkYXRlOiBEYXRlOyB2YWx1ZTogbnVtYmVyfVtdID0gZ2F1Z2VNZWFzdXJlcy5tYXAoKGdtKSA9PiB7XG4gICAgICAgICAgICBjb25zdCBjYXJ0ZXNpYW5NZWFzdXJlVmFsdWUgPSBuZXcgQ2FydGVzaWFuTWVhc3VyZVZhbHVlKGdtLnZhbHVlc1swXSBhcyBhbnkpO1xuICAgICAgICAgICAgY29uc3QgdmFsdWUgPSBjYXJ0ZXNpYW5NZWFzdXJlVmFsdWUuZ2V0Q2FydGVzaWFuVmFsdWVzKClbMF0udmFsdWU7XG4gICAgICAgICAgICByZXR1cm4ge2RhdGU6IGdtLmRhdGUsIHZhbHVlfTtcbiAgICAgICAgfSk7XG4gICAgICAgIHRoaXMuZ2F1Z2VTZWxlY3RlZFBvaW50cyA9IFtcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBsYWJlbDogZ2F1Z2VTZWxlY3RlZC5uYW1lLFxuICAgICAgICAgICAgICAgIHN0eWxlOiAnYmFyJyxcbiAgICAgICAgICAgICAgICB2YWx1ZXM6IGdhdWdlVmFsdWVzLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgXTtcbiAgICAgICAgLy8gY29uc29sZS5sb2coJ3RoaXMuZ2F1Z2VTZWxlY3RlZFBvaW50czonLCB0aGlzLmdhdWdlU2VsZWN0ZWRQb2ludHMpO1xuICAgIH1cblxuICAgIGFzeW5jIG9uR2F1Z2VTZWxlY3RJbkNvbXBhcmUoZToge3BvaW50OiBYWVR5cGU7IGNvbXBhcmVJbmRleDogbnVtYmVyfSkge1xuICAgICAgICBhd2FpdCB0aGlzLnJlZnJlc2hHYXVnZVZhbHVlcyh7aWQ6IGUucG9pbnQuaWQsIG5hbWU6IGUucG9pbnQubmFtZX0pO1xuXG4gICAgICAgIGF3YWl0IHRoaXMuY29tcGFyZU1hbmFnZXIuc2VsZWN0R2F1Z2UoZS5wb2ludC5pZCwgZS5jb21wYXJlSW5kZXgpO1xuICAgIH1cblxuICAgIGFzeW5jIG9uVG9nZ2xlTWFwKCRldmVudDogRXZlbnQpIHtcbiAgICAgICAgLy8gaWYgKHRoaXMudG9nZ2xlTWFwKSB7XG4gICAgICAgIC8vICAgIGF3YWl0IHRoaXMucmVmcmVzaE1hcCgpO1xuICAgICAgICAvLyB9XG4gICAgfVxuXG4gICAgb25DaGFuZ2VEZXRlY3Rpb25UZXN0KHJhaW5Ob2RlOiBSYWluTm9kZSkge1xuICAgICAgICAvLyBUT0RPIGNvbnNvbGUubG9nKFRFU1RfREVURUNUSU9OKyssICdvbkNoYW5nZURldGVjdGlvblRlc3QnKTtcbiAgICAgICAgcmV0dXJuICcnO1xuICAgIH1cblxuICAgIGFzeW5jIHJlZnJlc2hNYXAoKSB7XG4gICAgICAgIHRoaXMuZ2F1Z2VTZWxlY3RlZFBvaW50cyA9IFtdO1xuICAgICAgICAvLyB0aGlzLnF1YWxpdHlDb25mLnRydXN0ZnVsR2F1Z2VJZHMgPSB0aGlzLnF1YWxpdHlDb25mLnRydXN0ZnVsR2F1Z2VJZHM/Lmxlbmd0aCA+IDAgP1xuICAgICAgICAvLyAgdGhpcy5xdWFsaXR5Q29uZi50cnVzdGZ1bEdhdWdlSWRzIDogdGhpcy5nYXVnZXNUb0ZpbHRlci5maWx0ZXIoZyA9PiBnLmlzSW4pLm1hcChnID0+IGcuaWQpO1xuICAgICAgICB0aGlzLmJvcmRlcnMgPSBbXG4gICAgICAgICAgICAvLyAgbmV3IE1hcExhdExuZyhyYWluTm9kZS5sYXRpdHVkZSAtIDI1MCAqIDAuMDA4LCByYWluTm9kZS5sb25naXR1ZGUpLFxuICAgICAgICAgICAgLy8gIG5ldyBNYXBMYXRMbmcocmFpbk5vZGUubGF0aXR1ZGUsIHJhaW5Ob2RlLmxvbmdpdHVkZSAtIDI1MCAqIDAuMDEzKSxcbiAgICAgICAgICAgIC8vICBuZXcgTWFwTGF0TG5nKHJhaW5Ob2RlLmxhdGl0dWRlLCByYWluTm9kZS5sb25naXR1ZGUgKyAyNTAgKiAwLjAxMyksXG4gICAgICAgICAgICAvLyAgbmV3IE1hcExhdExuZyhyYWluTm9kZS5sYXRpdHVkZSArIDI1MCAqIDAuMDA4LCByYWluTm9kZS5sb25naXR1ZGUpLFxuICAgICAgICBdO1xuXG4gICAgICAgIHRoaXMuY29tcGFyZU1hbmFnZXIuY2xlYW5BbGwoKTtcbiAgICAgICAgYXdhaXQgdGhpcy5jb21wYXJlTWFuYWdlci5zZXRHYXVnZXNJbk1hcCgpO1xuICAgICAgICB0aGlzLnJlZnJlc2hNYW5hZ2VyLnJlZnJlc2goZmFsc2UsIHRoaXMudG9nZ2xlQWRtaW4pLnRoZW4oKF9pZ25vcmVkKSA9PiB7fSk7XG4gICAgfVxuXG4gICAgYXN5bmMgc2V0UGVyaW9kT2ZOb3coKSB7XG4gICAgICAgIC8vIHNob3VsZCBsb29rIGxpa2U6IFwiMjAyNC0wOC0yNlQxMjoxM1wiXG4gICAgICAgIGNvbnN0IGxhc3QzMG1uID0gbmV3IERhdGUoKTtcbiAgICAgICAgbGFzdDMwbW4uc2V0TWludXRlcyhsYXN0MzBtbi5nZXRNaW51dGVzKCkgLSAzMCk7XG4gICAgICAgIHRoaXMucGVyaW9kQmVnaW5Bc1N0cmluZyA9XG4gICAgICAgICAgICBsYXN0MzBtbi50b0lTT1N0cmluZygpLnN1YnN0cmluZygwLCAxMSkgKyBsYXN0MzBtbi50b0xvY2FsZVRpbWVTdHJpbmcoKS5zdWJzdHJpbmcoMCwgNSk7XG4gICAgICAgIHRoaXMucGVyaW9kRHVyYXRpb25Bc1N0cmluZyA9ICcxJztcbiAgICAgICAgYXdhaXQgdGhpcy5vblBlcmlvZEJlZ2luQ2hhbmdlKG51bGwpO1xuICAgICAgICB0aGlzLnJlZnJlc2hNYW5hZ2VyLnJlZnJlc2goZmFsc2UsIHRydWUpO1xuICAgIH1cblxuICAgIGdldFBlcmNlbnRPZkltYWdlcygpIHtcbiAgICAgICAgaWYgKCF0aGlzLmNvdW50c1BlcmlvZC5wZXJjZW50SW1hZ2VzPy5sZW5ndGgpIHtcbiAgICAgICAgICAgIHJldHVybiAwO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgZHVyaW5nUGVyaW9kID0gdGhpcy5jb3VudHNQZXJpb2QucGVyY2VudEltYWdlcy5maWx0ZXIoXG4gICAgICAgICAgICAoYSkgPT5cbiAgICAgICAgICAgICAgICB0aGlzLnBlcmlvZEJlZ2luLmdldFRpbWUoKSA8PSBuZXcgRGF0ZShhLm5hbWUpLmdldFRpbWUoKSAmJlxuICAgICAgICAgICAgICAgIG5ldyBEYXRlKGEubmFtZSkuZ2V0VGltZSgpIDw9IHRoaXMucGVyaW9kRW5kLmdldFRpbWUoKVxuICAgICAgICApO1xuICAgICAgICBjb25zdCBzdW1tZWQgPSBkdXJpbmdQZXJpb2QucmVkdWNlKChhLCBiKSA9PiBhICsgKGIueCA/PyAwKSwgMCk7XG4gICAgICAgIHJldHVybiBNYXRoLnJvdW5kKHN1bW1lZCAvIGR1cmluZ1BlcmlvZC5sZW5ndGgpO1xuICAgIH1cblxuICAgIGdldFBlcmNlbnRPZkNvbXB1dGF0aW9ucygpIHtcbiAgICAgICAgY29uc3QgdGltZWxpbmUgPSB0aGlzLnJlZnJlc2hNYW5hZ2VyLmdldFRpbWVsaW5lRnJhbWVTZXQoKTtcbiAgICAgICAgaWYgKCF0aW1lbGluZT8ubGVuZ3RoKSB7XG4gICAgICAgICAgICByZXR1cm4gMDtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IHRpbWVsaW5lV2l0aENvbXB1dGF0aW9uID0gdGltZWxpbmUuZmlsdGVyKChhKSA9PiAhIWEucmFpbkNvbXB1dGF0aW9uSWQpO1xuICAgICAgICBjb25zdCByYXRpbyA9IHRpbWVsaW5lV2l0aENvbXB1dGF0aW9uLmxlbmd0aCAvIHRpbWVsaW5lLmxlbmd0aDtcbiAgICAgICAgcmV0dXJuIE1hdGgucm91bmQocmF0aW8gKiAxMDApO1xuICAgIH1cblxuICAgIHByaXZhdGUgY2xlYW5BbGwoKSB7XG4gICAgICAgIHRoaXMuYm9yZGVycyA9IFtdO1xuXG4gICAgICAgIHRoaXMuaXNBZG1pbiA9IGZhbHNlO1xuICAgICAgICB0aGlzLnRpbWVmcmFtZUNvbnRhaW5lcnMgPSBuZXcgVGltZWZyYW1lQ29udGFpbmVycyhbXSk7XG4gICAgICAgIHRoaXMuY3VycmVudFRpbWVmcmFtZVRhcmdldCA9IG51bGw7XG4gICAgICAgIHRoaXMudGltZWZyYW1lRGF0ZXMgPSBbXTtcbiAgICAgICAgdGhpcy5jb3VudFBvaW50cyA9IFtdO1xuICAgICAgICB0aGlzLmNvdW50c1BlcmlvZCA9IHtwcm9ncmVzczogMCwgcXVldWVSdW5uaW5nOiAwLCBwZXJjZW50SW1hZ2VzOiBbXX07XG4gICAgICAgIHRoaXMuZ2F1Z2VTZWxlY3RlZFBvaW50cyA9IFtdO1xuXG4gICAgICAgIHRoaXMudG9nZ2xlSGlzdG9yeSA9IGZhbHNlO1xuICAgICAgICB0aGlzLnRvZ2dsZU1hcCA9IHRydWU7XG4gICAgICAgIHRoaXMudG9nZ2xlQ29tcGFyZSA9IGZhbHNlO1xuICAgICAgICB0aGlzLnRvZ2dsZUdhdWdlTWVhc3VyZXMgPSBmYWxzZTtcbiAgICAgICAgdGhpcy50b2dnbGVSZW1vdmVDb21wYXJlRHVwbGljYXRlID0gdHJ1ZTtcblxuICAgICAgICB0aGlzLnBlcmlvZEJlZ2luID0gbmV3IERhdGUodGhpcy5zdG9yYWdlLmdldCgncmFhaW4tcGVyaW9kQmVnaW4nKSk7XG4gICAgICAgIHRoaXMucGVyaW9kRW5kID0gbmV3IERhdGUodGhpcy5zdG9yYWdlLmdldCgncmFhaW4tcGVyaW9kRW5kJykpO1xuICAgICAgICB0aGlzLnBlcmlvZEJlZ2luQXNTdHJpbmcgPSBSYWFpbkRldGFpbHNDb21wb25lbnQuUGVyaW9kRGlzcGxheSh0aGlzLnBlcmlvZEJlZ2luKTtcbiAgICAgICAgdGhpcy5wZXJpb2RFbmRBc1N0cmluZyA9IFJhYWluRGV0YWlsc0NvbXBvbmVudC5QZXJpb2REaXNwbGF5KHRoaXMucGVyaW9kRW5kKTtcbiAgICAgICAgdGhpcy5wZXJpb2REdXJhdGlvbkFzU3RyaW5nID1cbiAgICAgICAgICAgICcnICsgKHRoaXMucGVyaW9kRW5kLmdldFRpbWUoKSAtIHRoaXMucGVyaW9kQmVnaW4uZ2V0VGltZSgpKSAvICg2MCAqIDYwMDAwKTtcblxuICAgICAgICB0aGlzLmRhdGVTaG93biA9IHRoaXMucGVyaW9kQmVnaW47XG5cbiAgICAgICAgdGhpcy5yZWZyZXNoSW5Qcm9ncmVzcyA9IGZhbHNlO1xuXG4gICAgICAgIHRoaXMuY29tcGFyZU1hbmFnZXI/LmNsZWFuQWxsKCk7XG4gICAgICAgIHRoaXMucmVmcmVzaE1hbmFnZXI/LmNsZWFuQWxsKCk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBhc3luYyBpbml0KCkge1xuICAgICAgICB0aGlzLmNsZWFuQWxsKCk7XG4gICAgICAgIGF3YWl0IHRoaXMuaW5pdFJhaW4oKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGFzeW5jIGluaXRSYWluKCkge1xuICAgICAgICBpZiAoIXRoaXMucmFpbk5vZGUpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMuaXNBZG1pbiA9IHRoaXMucHJvZmlsZVNlcnZpY2UuaXNBZG1pbigpO1xuXG4gICAgICAgIHRoaXMucmVmcmVzaE1hbmFnZXIucmFpbk5vZGUgPSB0aGlzLnJhaW5Ob2RlO1xuICAgICAgICB0aGlzLmNvbXBhcmVNYW5hZ2VyLnJhaW5Ob2RlID0gdGhpcy5yYWluTm9kZTtcblxuICAgICAgICB0aGlzLnJlZnJlc2hNYW5hZ2VyLnNldE1ldGhvZHMoXG4gICAgICAgICAgICB0aGlzLm9uUmVmcmVzaEluUHJvZ3Jlc3MuYmluZCh0aGlzKSxcbiAgICAgICAgICAgIHRoaXMub25SZWZyZXNoRG9uZS5iaW5kKHRoaXMpLFxuICAgICAgICAgICAgdGhpcy5vbkZldGNoRG9uZS5iaW5kKHRoaXMpXG4gICAgICAgICk7XG5cbiAgICAgICAgY29uc3QgY2VudGVyID0gdGhpcy5yYWluTm9kZS5nZXRDZW50ZXIoKTtcbiAgICAgICAgdGhpcy5jb29yZGluYXRlcyA9IG5ldyBNYXBMYXRMbmcoY2VudGVyLmxhdCwgY2VudGVyLmxuZyk7XG4gICAgICAgIHRoaXMudGVhbU5vZGUgPSBhd2FpdCB0aGlzLnByb2ZpbGVTZXJ2aWNlLmdldFRlYW0oXG4gICAgICAgICAgICB0aGlzLnJhaW5Ob2RlLmdldExpbmsoVGVhbU5vZGUuVFlQRSkuZ2V0SWQoKVxuICAgICAgICApO1xuXG4gICAgICAgIGlmICh0aGlzLnBlcmlvZEJlZ2luICYmIHRoaXMucGVyaW9kRW5kKSB7XG4gICAgICAgICAgICB0aGlzLnJlZnJlc2hNYW5hZ2VyLnBlcmlvZCA9IHtiZWdpbjogdGhpcy5wZXJpb2RCZWdpbiwgZW5kOiB0aGlzLnBlcmlvZEVuZH07XG4gICAgICAgICAgICBhd2FpdCB0aGlzLnJlZnJlc2hNYW5hZ2VyLnJlZnJlc2goZmFsc2UsIHRoaXMudG9nZ2xlQWRtaW4pO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBhc3luYyBvblJlZnJlc2hJblByb2dyZXNzKFxuICAgICAgICBjb3VudFBlcmlvZHM6IHtcbiAgICAgICAgICAgIHBlcmNlbnRJbWFnZXM/OiBYWVR5cGVbXTtcbiAgICAgICAgICAgIHF1ZXVlUnVubmluZz86IG51bWJlcjtcbiAgICAgICAgICAgIHByb2dyZXNzPzogbnVtYmVyO1xuICAgICAgICB9LFxuICAgICAgICB0aW1lZnJhbWVEYXRlczogRGF0ZVtdXG4gICAgKSB7XG4gICAgICAgIHRoaXMucmVmcmVzaEluUHJvZ3Jlc3MgPSB0cnVlO1xuICAgICAgICB0aGlzLmNvdW50c1BlcmlvZCA9IGNvdW50UGVyaW9kcztcbiAgICAgICAgdGhpcy50aW1lZnJhbWVEYXRlcyA9IHRpbWVmcmFtZURhdGVzO1xuICAgIH1cblxuICAgIHByaXZhdGUgYXN5bmMgb25SZWZyZXNoRG9uZSh0aW1lZnJhbWVEYXRlczogRGF0ZVtdKSB7XG4gICAgICAgIHRoaXMudGltZWZyYW1lRGF0ZXMgPSB0aW1lZnJhbWVEYXRlcztcbiAgICAgICAgdGhpcy5yZWZyZXNoSW5Qcm9ncmVzcyA9IGZhbHNlO1xuICAgIH1cblxuICAgIHByaXZhdGUgYXN5bmMgb25GZXRjaERvbmUodGltZWZyYW1lQ29udGFpbmVycz86IFRpbWVmcmFtZUNvbnRhaW5lcnMpIHtcbiAgICAgICAgaWYgKHRpbWVmcmFtZUNvbnRhaW5lcnMpIHtcbiAgICAgICAgICAgIHRoaXMudGltZWZyYW1lQ29udGFpbmVycyA9IHRpbWVmcmFtZUNvbnRhaW5lcnM7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcml2YXRlIGFzeW5jIGNoYW5nZShjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKSB7XG4gICAgICAgIGF3YWl0IHRoaXMuaW5pdCgpO1xuICAgIH1cbn1cbiIsIjwhLS0gTWFpbiBjb250ZW50IGNvbnRhaW5lciAtLT5cbjxkaXYgKm5nSWY9XCJyYWluTm9kZVwiIGNsYXNzPVwicmFhaW4tZGV0YWlscy1jb250YWluZXJcIj5cblxuICAgIDwhLS0gUGVyaW9kIHNlbGVjdGlvbiBzZWN0aW9uIC0tPlxuICAgIDxpb24tY2FyZCBjbGFzcz1cInBlcmlvZC1jYXJkXCI+XG4gICAgICAgIDxpb24tY2FyZC1jb250ZW50PlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cInBlcmlvZC1jb250cm9sc1wiPlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJwZXJpb2Qtcm93XCI+XG4gICAgICAgICAgICAgICAgICAgIDxpb24tYnV0dG9uIChjbGljayk9XCJzZXRQZXJpb2RPZk5vdygpXCIgY2xhc3M9XCJub3ctYnV0dG9uXCIgZmlsbD1cIm91dGxpbmVcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxpb24taWNvbiBuYW1lPVwidGltZS1vdXRsaW5lXCIgc2xvdD1cInN0YXJ0XCI+PC9pb24taWNvbj5cbiAgICAgICAgICAgICAgICAgICAgICAgIE5vd1xuICAgICAgICAgICAgICAgICAgICA8L2lvbi1idXR0b24+XG5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInBlcmlvZC1zdGFydCBpb24taGlkZS1tZC1kb3duXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8aW9uLWxhYmVsPlN0YXJ0OjwvaW9uLWxhYmVsPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IChjaGFuZ2UpPVwib25QZXJpb2RCZWdpbkNoYW5nZSgkZXZlbnQpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbdmFsdWVdPVwicGVyaW9kQmVnaW5Bc1N0cmluZ1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJkYXRldGltZS1pbnB1dFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHlwZT1cImRhdGV0aW1lLWxvY2FsXCI+XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJwZXJpb2QtZHVyYXRpb24gaW9uLWhpZGUtbWQtZG93blwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGlvbi1sYWJlbD5EdXJhdGlvbjo8L2lvbi1sYWJlbD5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxpb24tc2VsZWN0IChpb25EaXNtaXNzKT1cIm9uUGVyaW9kRHVyYXRpb25DaGFuZ2UoJGV2ZW50KVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbKG5nTW9kZWwpXT1cInBlcmlvZER1cmF0aW9uQXNTdHJpbmdcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJkdXJhdGlvbi1zZWxlY3RcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWQ9XCJwZXJpb2REdXJhdGlvblwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnRlcmZhY2U9XCJwb3BvdmVyXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlvbi1zZWxlY3Qtb3B0aW9uIHZhbHVlPVwiMC4yNVwiPjE1IG1pbnV0ZXM8L2lvbi1zZWxlY3Qtb3B0aW9uPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpb24tc2VsZWN0LW9wdGlvbiB2YWx1ZT1cIjAuNVwiPjMwIG1pbnV0ZXM8L2lvbi1zZWxlY3Qtb3B0aW9uPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpb24tc2VsZWN0LW9wdGlvbiB2YWx1ZT1cIjFcIj4xIGhvdXI8L2lvbi1zZWxlY3Qtb3B0aW9uPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpb24tc2VsZWN0LW9wdGlvbiB2YWx1ZT1cIjJcIj4yIGhvdXJzPC9pb24tc2VsZWN0LW9wdGlvbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW9uLXNlbGVjdC1vcHRpb24gdmFsdWU9XCIzXCI+MyBob3VyczwvaW9uLXNlbGVjdC1vcHRpb24+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlvbi1zZWxlY3Qtb3B0aW9uIHZhbHVlPVwiNFwiPjQgaG91cnM8L2lvbi1zZWxlY3Qtb3B0aW9uPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpb24tc2VsZWN0LW9wdGlvbiB2YWx1ZT1cIjVcIj41IGhvdXJzPC9pb24tc2VsZWN0LW9wdGlvbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW9uLXNlbGVjdC1vcHRpb24gdmFsdWU9XCI2XCI+NiBob3VyczwvaW9uLXNlbGVjdC1vcHRpb24+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlvbi1zZWxlY3Qtb3B0aW9uICpuZ0lmPVwiaXNBZG1pblwiIHZhbHVlPVwiMjRcIj4yNCBob3VyczwvaW9uLXNlbGVjdC1vcHRpb24+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2lvbi1zZWxlY3Q+XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgaWQ9XCJhbGwtZGF0ZXNcIiBzbG90PVwiZW5kXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8aW9uLWxhYmVsIGNsYXNzPVwidG9nZ2xlLWxhYmVsXCI+QWxsIGRhdGVzPC9pb24tbGFiZWw+XG4gICAgICAgICAgICAgICAgICAgICAgICA8aW9uLXRvZ2dsZSAoaW9uQ2hhbmdlKT1cIm9uRW5hYmxlQ291bnRIaXN0b3J5VGFiKHJhaW5Ob2RlKVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbKG5nTW9kZWwpXT1cInRvZ2dsZUhpc3RvcnlcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2NoZWNrZWRdPVwidG9nZ2xlSGlzdG9yeVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9pb24tdG9nZ2xlPlxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgICAgICAgIDwhLS0gSGlkZGVuIGxhYmVsIGZvciBjaGFuZ2UgZGV0ZWN0aW9uIC0tPlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJoaWRkZW4tbGFiZWxcIj57eyBvbkNoYW5nZURldGVjdGlvblRlc3QocmFpbk5vZGUpIH19PC9kaXY+XG4gICAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgICAgPCEtLSBIaXN0b3JpY2FsIG1hcCBzZWN0aW9uIC0tPlxuICAgICAgICAgICAgPGRpdiAqbmdJZj1cInRvZ2dsZUhpc3RvcnlcIiBjbGFzcz1cInBlcmlvZC1jb250cm9sc1wiPlxuICAgICAgICAgICAgICAgIDxyYWFpbi1kYXRlLWR5bmFtaWMgKGNoYW5nZWREYXRlKT1cIm9uRGF0ZUNoYW5nZUluQ291bnQoJGV2ZW50KVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbY3VycmVudEhlaWdodF09XCIzMDBcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2ZldGNoRGF0YV09XCJmZXRjaERhdGFXcmFwcGVyXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtwb2ludHNdPVwiY291bnRQb2ludHNcIj5cbiAgICAgICAgICAgICAgICA8L3JhYWluLWRhdGUtZHluYW1pYz5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2lvbi1jYXJkLWNvbnRlbnQ+XG4gICAgPC9pb24tY2FyZD5cblxuICAgIDwhLS0gTWFwIHNlY3Rpb24gLS0+XG4gICAgPGlvbi1jYXJkIGNsYXNzPVwibWFwLWNhcmRcIj5cbiAgICAgICAgPGlvbi1jYXJkLWNvbnRlbnQgY2xhc3M9XCJtYXAtY29udGVudFwiPlxuICAgICAgICAgICAgPGlvbi1ncmlkPlxuICAgICAgICAgICAgICAgIDxpb24tcm93IGlkPVwicHJvZ3Jlc3NBbmRSZWZyZXNoXCI+XG4gICAgICAgICAgICAgICAgICAgIDxpb24tY29sIHNpemU9XCIxMlwiIHNpemUtbWQ9XCI2XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8IS0tIGxlZnQgY29udGVudCAoaWYgYW55KSAtLT5cbiAgICAgICAgICAgICAgICAgICAgPC9pb24tY29sPlxuICAgICAgICAgICAgICAgICAgICA8aW9uLWNvbCBjbGFzcz1cImlvbi10ZXh0LXJpZ2h0XCIgc2l6ZT1cIjEyXCIgc2l6ZS1tZD1cIjZcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxpb24tbGFiZWwgY2xhc3M9XCJpb24tbWFyZ2luLWVuZFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwiZ2V0UGVyY2VudE9mQ29tcHV0YXRpb25zKClcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3sgZ2V0UGVyY2VudE9mQ29tcHV0YXRpb25zKCkgfX0lIEltYWdlc1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aSAqbmdJZj1cImNvdW50c1BlcmlvZC5wcm9ncmVzc1wiIGNsYXNzPVwicHJvZ3Jlc3MtaW5kaWNhdG9yXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBJbiBQcm9ncmVzczoge3sgY291bnRzUGVyaW9kLnByb2dyZXNzIH19Li4uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvaT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCIhZ2V0UGVyY2VudE9mQ29tcHV0YXRpb25zKClcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTm8gaW1hZ2UgYXZhaWxhYmxlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwicmVmcmVzaE1hbmFnZXIubGFzdEVycm9yXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxiPkVycm9yczoge3sgcmVmcmVzaE1hbmFnZXIubGFzdEVycm9yIH19PC9iPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvaW9uLWxhYmVsPlxuXG4gICAgICAgICAgICAgICAgICAgICAgICA8aW9uLWJ1dHRvbiAoY2xpY2spPVwicmVmcmVzaE1hcCgpXCIgW2Rpc2FibGVkXT1cInJlZnJlc2hJblByb2dyZXNzXCIgY2xhc3M9XCJyZWZyZXNoLWJ1dHRvblwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFJlZnJlc2ggTWFwXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2lvbi1idXR0b24+XG4gICAgICAgICAgICAgICAgICAgIDwvaW9uLWNvbD5cblxuICAgICAgICAgICAgICAgICAgICA8IS0tIFByb2dyZXNzIGluZGljYXRvciAtLT5cbiAgICAgICAgICAgICAgICAgICAgPGlvbi1wcm9ncmVzcy1iYXIgKm5nSWY9XCJyZWZyZXNoSW5Qcm9ncmVzc1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtidWZmZXJdPVwiKGNvdW50c1BlcmlvZC5wcm9ncmVzcyAvICgodGltZWZyYW1lRGF0ZXM/Lmxlbmd0aCB8fCAxMCkgKzMpKSswLjAxXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3ZhbHVlXT1cImNvdW50c1BlcmlvZC5wcm9ncmVzcyAvICgodGltZWZyYW1lRGF0ZXM/Lmxlbmd0aCB8fCAxMCkgKzMpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29sb3I9XCJwcmltYXJ5XCI+XG4gICAgICAgICAgICAgICAgICAgIDwvaW9uLXByb2dyZXNzLWJhcj5cbiAgICAgICAgICAgICAgICA8L2lvbi1yb3c+XG4gICAgICAgICAgICAgICAgPGlvbi1yb3cgKm5nSWY9XCJ0b2dnbGVNYXAgJiYgZ2V0UGVyY2VudE9mSW1hZ2VzKClcIj5cbiAgICAgICAgICAgICAgICAgICAgPCEtLSBNYXAgY29tcG9uZW50IC0tPlxuICAgICAgICAgICAgICAgICAgICA8aW9uLWNvbCBjbGFzcz1cIm1hcC1jb2x1bW5cIiBzaXplLWxnPVwiN1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm1hcC1jb250YWluZXJcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cmFhaW4tbWFwXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2hhbmdlZERhdGUpPVwib25EYXRlQ2hhbmdlSW5NYXAoJGV2ZW50KVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2hhbmdlZFN1bSk9XCJvblN1bUNoYW5nZUluTWFwKCRldmVudClcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHNlbGVjdGVkTWFya2VyKT1cIm9uR2F1Z2VTZWxlY3RJbk1hcCgkZXZlbnQpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtjb29yZGluYXRlc109XCJjb29yZGluYXRlc1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbY3VycmVudEhlaWdodF09XCI1MDBcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2RlZmF1bHREYXRlXT1cImRhdGVTaG93blwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbWFya2Vyc109XCJ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9yZGVycyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnYXVnZXM6IGNvbXBhcmVNYW5hZ2VyLmdhdWdlc0luTWFwLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdhdWdlc0luQ29tcGFyZTogY29tcGFyZU1hbmFnZXIuZ2F1Z2VzSW5Db21wYXJlLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGVjdGVkR2F1Z2VzOiBjb21wYXJlTWFuYWdlci5zZWxlY3RlZEdhdWdlcyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwaXhlbHM6IGNvbXBhcmVNYW5hZ2VyLnNlbGVjdGVkUGl4ZWxzLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBpeGVsc1NvbHV0aW9uOiBjb21wYXJlTWFuYWdlci5waXhlbHNTb2x1dGlvbnM/Lmxlbmd0aCA/IGNvbXBhcmVNYW5hZ2VyLnBpeGVsc1NvbHV0aW9uc1swXSA6IFtdLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNwZWVkczogY29tcGFyZU1hbmFnZXIuc3BlZWRzXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtzaG93Q3VtdWxhdGl2ZV09XCJ0b2dnbGVDdW11bGF0aXZlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtzdW1Gbl09XCJyZWZyZXNoTWFuYWdlci5zdW1GblwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbc3VtVmFsdWVzXT1cInJlZnJlc2hNYW5hZ2VyLnN1bVZhbHVlc1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbdGltZWZyYW1lQ29udGFpbmVyc109XCJ0aW1lZnJhbWVDb250YWluZXJzXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFt0aW1lZnJhbWVEYXRlc109XCJ0aW1lZnJhbWVEYXRlc1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcmFhaW4tbWFwPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkYXRhLWNvbHVtblwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwhLS0gVGVjaG5pY2FsIGRldGFpbHMgKGNvbGxhcHNpYmxlIGZvciBjbGVhbmVyIFVJKSAtLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGV0YWlscyBjbGFzcz1cInRlY2huaWNhbC1kZXRhaWxzXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzdW1tYXJ5PkltYWdlIERldGFpbHM8L3N1bW1hcnk+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkZXRhaWxzLWNvbnRlbnRcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkZXRhaWwtcm93XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJkZXRhaWwtbGFiZWxcIj5Db21wdXRlZDo8L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJkZXRhaWwtdmFsdWVcIj57eyByZWZyZXNoTWFuYWdlci5yYWluQ29tcHV0YXRpb25NYXBEb25lRGF0ZSB8IGRhdGU6J3l5eXktTU0tZGQgSEg6bW0nIH19PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZGV0YWlsLXJvd1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiZGV0YWlsLWxhYmVsXCI+VmVyc2lvbjo8L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJkZXRhaWwtdmFsdWVcIj57eyByZWZyZXNoTWFuYWdlci5yYWluQ29tcHV0YXRpb25NYXBWZXJzaW9uIH19PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZGV0YWlsLXJvd1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiZGV0YWlsLWxhYmVsXCI+TGF1bmNoZWQgYnk6PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiZGV0YWlsLXZhbHVlXCI+e3sgcmVmcmVzaE1hbmFnZXIucmFpbkNvbXB1dGF0aW9uTWFwTGF1bmNoZWRCeSB9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImRldGFpbC1yb3dcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImRldGFpbC1sYWJlbFwiPlRpbWUgc3BlbnQ6PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiZGV0YWlsLXZhbHVlXCI+e3sgcmVmcmVzaE1hbmFnZXIucmFpbkNvbXB1dGF0aW9uTWFwVGltZVNwZW50SW5NcyB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtczwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImRldGFpbC1yb3dcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImRldGFpbC1sYWJlbFwiPkRhdGU6PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiZGV0YWlsLXZhbHVlXCI+e3sgcmVmcmVzaE1hbmFnZXIucmFpbkNvbXB1dGF0aW9uTWFwRGF0ZT8udG9JU09TdHJpbmcoKSB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IHt7IHJlZnJlc2hNYW5hZ2VyLnJhaW5Db21wdXRhdGlvbk1hcERhdGUgfCBkYXRlOid5eXl5LU1NLWRkIEhIOm1tJyB9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImRldGFpbC1yb3dcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImRldGFpbC1sYWJlbFwiPldhdGVyIGluIHRoZSBtYXA6PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiZGV0YWlsLXZhbHVlXCI+e3sgc3VtRGV0YWlscyB9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImRldGFpbC1yb3dcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImRldGFpbC1sYWJlbFwiPlNvdXJjZSBEQlogbWluOjwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImRldGFpbC12YWx1ZVwiPnt7IHJlZnJlc2hNYW5hZ2VyLnJhaW5Db21wdXRhdGlvbk1hcE9yaWdpbmFsTWluIH19PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZGV0YWlsLXJvd1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiZGV0YWlsLWxhYmVsXCI+U291cmNlIERCWiBtYXg6PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiZGV0YWlsLXZhbHVlXCI+e3sgcmVmcmVzaE1hbmFnZXIucmFpbkNvbXB1dGF0aW9uTWFwT3JpZ2luYWxNYXggfX08L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kZXRhaWxzPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIDwvaW9uLWNvbD5cblxuICAgICAgICAgICAgICAgICAgICA8IS0tIERhdGEgcGFuZWwgLS0+XG4gICAgICAgICAgICAgICAgICAgIDxpb24tY29sIGNsYXNzPVwiZGF0YS1jb2x1bW5cIiBzaXplLWxnPVwiNVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImRhdGEtcGFuZWxcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8IS0tIENvbXBhcmUgc3RhY2sgY29tcG9uZW50IC0tPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb21wYXJlLXN0YWNrXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxyYWFpbi1jb21wYXJlLXN0YWNrXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHNlbGVjdGVkUG9pbnQpPVwib25HYXVnZVNlbGVjdEluQ29tcGFyZSgkZXZlbnQpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbY29tcGFyZU1hbmFnZXJdPVwiY29tcGFyZU1hbmFnZXJcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtjdW11bGF0aXZlXT1cInRvZ2dsZUN1bXVsYXRpdmVcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9yYWFpbi1jb21wYXJlLXN0YWNrPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPCEtLSBUZWNobmljYWwgZGV0YWlscyAoY29sbGFwc2libGUgZm9yIGNsZWFuZXIgVUkpIC0tPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkZXRhaWxzIGNsYXNzPVwidGVjaG5pY2FsLWRldGFpbHNcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHN1bW1hcnk+Q29tcGFyZSBEZXRhaWxzPC9zdW1tYXJ5PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZGV0YWlscy1jb250ZW50XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IFtuZ0NsYXNzXT1cInsnd2FybmluZyc6IHJlZnJlc2hNYW5hZ2VyLnJhaW5Db21wdXRhdGlvbk1hcERvbmVEYXRlPy5nZXRUaW1lKCkgPiBjb21wYXJlTWFuYWdlci5jdXJyZW50UXVhbGl0eURvbmVEYXRlPy5nZXRUaW1lKCkgKyA2MDAwMH1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImRldGFpbC1yb3dcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImRldGFpbC1sYWJlbFwiPkNvbXB1dGVkOjwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImRldGFpbC12YWx1ZVwiPnt7IGNvbXBhcmVNYW5hZ2VyLmN1cnJlbnRRdWFsaXR5RG9uZURhdGUgfCBkYXRlOid5eXl5LU1NLWRkIEhIOm1tJyB9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImRldGFpbC1yb3dcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImRldGFpbC1sYWJlbFwiPlZlcnNpb246PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiZGV0YWlsLXZhbHVlXCI+e3sgY29tcGFyZU1hbmFnZXIuY29tcGFyZVZlcnNpb24gfX08L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkZXRhaWwtcm93XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJkZXRhaWwtbGFiZWxcIj5MYXVuY2hlZCBieTo8L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJkZXRhaWwtdmFsdWVcIj57eyBjb21wYXJlTWFuYWdlci5jdXJyZW50UXVhbGl0eUxhdW5jaGVkQnkgfX08L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkZXRhaWwtcm93XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJkZXRhaWwtbGFiZWxcIj5UaW1lIHNwZW50Ojwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImRldGFpbC12YWx1ZVwiPnt7IGNvbXBhcmVNYW5hZ2VyLmN1cnJlbnRRdWFsaXR5VGltZVNwZW50SW5NcyB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtczwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImRldGFpbC1yb3dcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImRldGFpbC1sYWJlbFwiPkdhdWdlczo8L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJkZXRhaWwtdmFsdWVcIj57eyBjb21wYXJlTWFuYWdlci5nYXVnZXNJbkNvbXBhcmUubGVuZ3RoIH19PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZGV0YWlsLXJvd1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiZGV0YWlsLWxhYmVsXCI+UG9pbnRzOjwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImRldGFpbC12YWx1ZVwiPnt7IGNvbXBhcmVNYW5hZ2VyLmdsb2JhbENvbXBhcmVQb2ludHMubGVuZ3RoIH19PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGV0YWlscz5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICA8L2lvbi1jb2w+XG4gICAgICAgICAgICAgICAgPC9pb24tcm93PlxuICAgICAgICAgICAgICAgIDxpb24tcm93PlxuICAgICAgICAgICAgICAgICAgICA8IS0tIEJvdHRvbSBwcm9ncmVzcyBiYXIgLS0+XG4gICAgICAgICAgICAgICAgICAgIDxpb24tcHJvZ3Jlc3MtYmFyICpuZ0lmPVwicmVmcmVzaEluUHJvZ3Jlc3NcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbYnVmZmVyXT1cIihjb3VudHNQZXJpb2QucHJvZ3Jlc3MgLyAoKHRpbWVmcmFtZURhdGVzPy5sZW5ndGggfHwgMTApICszKSkrMC4wMVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFt2YWx1ZV09XCJjb3VudHNQZXJpb2QucHJvZ3Jlc3MgLyAoKHRpbWVmcmFtZURhdGVzPy5sZW5ndGggfHwgMTApICszKVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbG9yPVwicHJpbWFyeVwiPlxuICAgICAgICAgICAgICAgICAgICA8L2lvbi1wcm9ncmVzcy1iYXI+XG4gICAgICAgICAgICAgICAgPC9pb24tcm93PlxuICAgICAgICAgICAgPC9pb24tZ3JpZD5cbiAgICAgICAgPC9pb24tY2FyZC1jb250ZW50PlxuICAgIDwvaW9uLWNhcmQ+XG5cbiAgICA8IS0tIEdhdWdlIHZhbHVlcyBzZWN0aW9uIC0tPlxuICAgIDxpb24tY2FyZCAqbmdJZj1cImdhdWdlU2VsZWN0ZWRQb2ludHMubGVuZ3RoICYmIGdhdWdlU2VsZWN0ZWRQb2ludHNbMF0udmFsdWVzLmxlbmd0aFwiIGNsYXNzPVwiZ2F1Z2UtY2FyZFwiPlxuICAgICAgICA8aW9uLWNhcmQtaGVhZGVyPlxuICAgICAgICAgICAgPGlvbi1jYXJkLXRpdGxlPlxuICAgICAgICAgICAgICAgIDxpb24taWNvbiBuYW1lPVwiYW5hbHl0aWNzLW91dGxpbmVcIj48L2lvbi1pY29uPlxuICAgICAgICAgICAgICAgIFNlbGVjdGVkIEdhdWdlIERhdGFcbiAgICAgICAgICAgIDwvaW9uLWNhcmQtdGl0bGU+XG4gICAgICAgIDwvaW9uLWNhcmQtaGVhZGVyPlxuICAgICAgICA8aW9uLWNhcmQtY29udGVudD5cbiAgICAgICAgICAgIDxyYWFpbi1kYXRlLWZvY3VzXG4gICAgICAgICAgICAgICAgICAgIFtjdXJyZW50SGVpZ2h0XT1cIjMwMFwiXG4gICAgICAgICAgICAgICAgICAgIFtmb2N1c0RhdGVdPVwicGVyaW9kQmVnaW5cIlxuICAgICAgICAgICAgICAgICAgICBbZm9jdXNSYW5nZV09XCJEYXRlUmFuZ2UuREFZXCJcbiAgICAgICAgICAgICAgICAgICAgW3BvaW50c109XCJnYXVnZVNlbGVjdGVkUG9pbnRzXCJcbiAgICAgICAgICAgICAgICAgICAgW3dpdGhvdXRBbGxdPVwidHJ1ZVwiPlxuICAgICAgICAgICAgPC9yYWFpbi1kYXRlLWZvY3VzPlxuICAgICAgICA8L2lvbi1jYXJkLWNvbnRlbnQ+XG4gICAgPC9pb24tY2FyZD5cblxuPC9kaXY+XG4iXX0=
|
package/fesm2015/raain-app.mjs
CHANGED
|
@@ -2224,9 +2224,13 @@ class RaainDetailsComponent {
|
|
|
2224
2224
|
}
|
|
2225
2225
|
refreshGaugeValues(gaugeSelected) {
|
|
2226
2226
|
return __awaiter(this, void 0, void 0, function* () {
|
|
2227
|
-
const
|
|
2228
|
-
const
|
|
2229
|
-
|
|
2227
|
+
const gaugeValueShowBegin = new Date(this.periodBegin.getTime() - 24 * 60 * 60 * 1000);
|
|
2228
|
+
const gaugeValueShowEnd = new Date(this.periodEnd.getTime() + 24 * 60 * 60 * 1000);
|
|
2229
|
+
gaugeValueShowBegin.setHours(0);
|
|
2230
|
+
gaugeValueShowBegin.setMinutes(0);
|
|
2231
|
+
gaugeValueShowEnd.setHours(23);
|
|
2232
|
+
gaugeValueShowEnd.setMinutes(59);
|
|
2233
|
+
const gaugeMeasures = yield this.profileService.getGaugeMeasures(gaugeSelected.id, gaugeValueShowBegin, gaugeValueShowEnd);
|
|
2230
2234
|
const gaugeValues = gaugeMeasures.map((gm) => {
|
|
2231
2235
|
const cartesianMeasureValue = new CartesianMeasureValue(gm.values[0]);
|
|
2232
2236
|
const value = cartesianMeasureValue.getCartesianValues()[0].value;
|