@rivet-health/design-system 5.4.1 → 5.4.2
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/esm2020/lib/visualization/metric/metric.component.mjs +7 -4
- package/esm2020/lib/visualization/time-series/time-series.component.mjs +2 -2
- package/fesm2015/rivet-health-design-system.mjs +6 -3
- package/fesm2015/rivet-health-design-system.mjs.map +1 -1
- package/fesm2020/rivet-health-design-system.mjs +6 -3
- package/fesm2020/rivet-health-design-system.mjs.map +1 -1
- package/package.json +1 -1
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { ChangeDetectionStrategy, Component, Input } from '@angular/core';
|
|
1
|
+
import { ChangeDetectionStrategy, Component, HostBinding, Input, } from '@angular/core';
|
|
2
2
|
import * as i0 from "@angular/core";
|
|
3
3
|
import * as i1 from "@angular/common";
|
|
4
4
|
import * as i2 from "../../icon/icon.component";
|
|
@@ -17,10 +17,10 @@ export class MetricComponent {
|
|
|
17
17
|
}
|
|
18
18
|
}
|
|
19
19
|
MetricComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: MetricComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
20
|
-
MetricComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.3.0", type: MetricComponent, selector: "riv-metric", inputs: { label: "label", value: "value", size: "size", card: "card", help: "help", align: "align", valueColorToken: "valueColorToken" },
|
|
20
|
+
MetricComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.3.0", type: MetricComponent, selector: "riv-metric", inputs: { label: "label", value: "value", size: "size", card: "card", help: "help", align: "align", valueColorToken: "valueColorToken" }, host: { properties: { "class.card": "this.card" } }, ngImport: i0, template: "<div class=\"label\" [ngClass]=\"align\">\n {{ label }}\n <span *ngIf=\"help\"\n ><riv-icon [rivTooltip]=\"help\" [name]=\"'Info'\" [size]=\"12\"></riv-icon>\n </span>\n</div>\n<div class=\"content\" [ngClass]=\"align\">\n <div class=\"value\" [ngClass]=\"size\" [style.color]=\"valueColor\">\n {{ value }}\n </div>\n <ng-content></ng-content>\n</div>\n", styles: [":host.card{border-radius:var(--size-xsmall);border:var(--border-width) solid var(--border-light-blend);padding:var(--size-xlarge);display:block}.label{font-size:var(--type-1-font-size);line-height:var(--type-1-line-height-0);color:var(--type-light-low-contrast);margin-bottom:var(--size-xsmall)}.value.xsmall{font:var(--stat-xsmall)}.value.small{font:var(--stat-small)}.value.medium{font:var(--stat-medium)}.value.large{font:var(--stat-large)}.content{display:flex;align-items:flex-end;gap:var(--size-small)}.right{text-align:end;justify-content:flex-end}\n"], dependencies: [{ kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i2.IconComponent, selector: "riv-icon", inputs: ["name", "size", "customSize", "strokeWidth"] }, { kind: "directive", type: i3.TooltipDirective, selector: "[rivTooltip]", inputs: ["rivTooltip", "rivTooltipTheme", "rivTooltipMaxWidth", "rivTooltipPreferredPosition", "rivTooltipCloseDelay"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
21
21
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: MetricComponent, decorators: [{
|
|
22
22
|
type: Component,
|
|
23
|
-
args: [{ selector: 'riv-metric', changeDetection: ChangeDetectionStrategy.OnPush, template: "<div
|
|
23
|
+
args: [{ selector: 'riv-metric', changeDetection: ChangeDetectionStrategy.OnPush, template: "<div class=\"label\" [ngClass]=\"align\">\n {{ label }}\n <span *ngIf=\"help\"\n ><riv-icon [rivTooltip]=\"help\" [name]=\"'Info'\" [size]=\"12\"></riv-icon>\n </span>\n</div>\n<div class=\"content\" [ngClass]=\"align\">\n <div class=\"value\" [ngClass]=\"size\" [style.color]=\"valueColor\">\n {{ value }}\n </div>\n <ng-content></ng-content>\n</div>\n", styles: [":host.card{border-radius:var(--size-xsmall);border:var(--border-width) solid var(--border-light-blend);padding:var(--size-xlarge);display:block}.label{font-size:var(--type-1-font-size);line-height:var(--type-1-line-height-0);color:var(--type-light-low-contrast);margin-bottom:var(--size-xsmall)}.value.xsmall{font:var(--stat-xsmall)}.value.small{font:var(--stat-small)}.value.medium{font:var(--stat-medium)}.value.large{font:var(--stat-large)}.content{display:flex;align-items:flex-end;gap:var(--size-small)}.right{text-align:end;justify-content:flex-end}\n"] }]
|
|
24
24
|
}], propDecorators: { label: [{
|
|
25
25
|
type: Input
|
|
26
26
|
}], value: [{
|
|
@@ -29,6 +29,9 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImpor
|
|
|
29
29
|
type: Input
|
|
30
30
|
}], card: [{
|
|
31
31
|
type: Input
|
|
32
|
+
}, {
|
|
33
|
+
type: HostBinding,
|
|
34
|
+
args: ['class.card']
|
|
32
35
|
}], help: [{
|
|
33
36
|
type: Input
|
|
34
37
|
}], align: [{
|
|
@@ -39,4 +42,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImpor
|
|
|
39
42
|
(function (MetricComponent) {
|
|
40
43
|
MetricComponent.Sizes = ['xsmall', 'small', 'medium', 'large'];
|
|
41
44
|
})(MetricComponent || (MetricComponent = {}));
|
|
42
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
45
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWV0cmljLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3Jpdi9zcmMvbGliL3Zpc3VhbGl6YXRpb24vbWV0cmljL21ldHJpYy5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9yaXYvc3JjL2xpYi92aXN1YWxpemF0aW9uL21ldHJpYy9tZXRyaWMuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNMLHVCQUF1QixFQUN2QixTQUFTLEVBQ1QsV0FBVyxFQUNYLEtBQUssR0FDTixNQUFNLGVBQWUsQ0FBQzs7Ozs7QUFRdkIsTUFBTSxPQUFPLGVBQWU7SUFONUI7UUFRRSxVQUFLLEdBQVcsRUFBRSxDQUFDO1FBR25CLFVBQUssR0FBVyxFQUFFLENBQUM7UUFHbkIsU0FBSSxHQUF5QixRQUFRLENBQUM7UUFJdEMsU0FBSSxHQUFZLEtBQUssQ0FBQztRQU10QixVQUFLLEdBQXNCLE1BQU0sQ0FBQztRQUdsQyxvQkFBZSxHQUFZLDRCQUE0QixDQUFDO0tBS3pEO0lBSEMsSUFBSSxVQUFVO1FBQ1osT0FBTyxPQUFPLElBQUksQ0FBQyxlQUFlLEdBQUcsQ0FBQztJQUN4QyxDQUFDOzs0R0F6QlUsZUFBZTtnR0FBZixlQUFlLGlQQ2I1QiwrV0FZQTsyRkRDYSxlQUFlO2tCQU4zQixTQUFTOytCQUNFLFlBQVksbUJBR0wsdUJBQXVCLENBQUMsTUFBTTs4QkFJL0MsS0FBSztzQkFESixLQUFLO2dCQUlOLEtBQUs7c0JBREosS0FBSztnQkFJTixJQUFJO3NCQURILEtBQUs7Z0JBS04sSUFBSTtzQkFGSCxLQUFLOztzQkFDTCxXQUFXO3VCQUFDLFlBQVk7Z0JBSXpCLElBQUk7c0JBREgsS0FBSztnQkFJTixLQUFLO3NCQURKLEtBQUs7Z0JBSU4sZUFBZTtzQkFEZCxLQUFLOztBQVFSLFdBQWlCLGVBQWU7SUFDakIscUJBQUssR0FBRyxDQUFDLFFBQVEsRUFBRSxPQUFPLEVBQUUsUUFBUSxFQUFFLE9BQU8sQ0FBVSxDQUFDO0FBRXZFLENBQUMsRUFIZ0IsZUFBZSxLQUFmLGVBQWUsUUFHL0IiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbiAgQ29tcG9uZW50LFxuICBIb3N0QmluZGluZyxcbiAgSW5wdXQsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdyaXYtbWV0cmljJyxcbiAgdGVtcGxhdGVVcmw6ICcuL21ldHJpYy5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL21ldHJpYy5jb21wb25lbnQuY3NzJ10sXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxufSlcbmV4cG9ydCBjbGFzcyBNZXRyaWNDb21wb25lbnQge1xuICBASW5wdXQoKVxuICBsYWJlbDogc3RyaW5nID0gJyc7XG5cbiAgQElucHV0KClcbiAgdmFsdWU6IHN0cmluZyA9ICcnO1xuXG4gIEBJbnB1dCgpXG4gIHNpemU6IE1ldHJpY0NvbXBvbmVudC5TaXplID0gJ21lZGl1bSc7XG5cbiAgQElucHV0KClcbiAgQEhvc3RCaW5kaW5nKCdjbGFzcy5jYXJkJylcbiAgY2FyZDogYm9vbGVhbiA9IGZhbHNlO1xuXG4gIEBJbnB1dCgpXG4gIGhlbHA/OiBzdHJpbmc7XG5cbiAgQElucHV0KClcbiAgYWxpZ24/OiAnbGVmdCcgfCAncmlnaHQnID0gJ2xlZnQnO1xuXG4gIEBJbnB1dCgpXG4gIHZhbHVlQ29sb3JUb2tlbj86IHN0cmluZyA9ICctLXR5cGUtbGlnaHQtaGlnaC1jb250cmFzdCc7XG5cbiAgZ2V0IHZhbHVlQ29sb3IoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gYHZhcigke3RoaXMudmFsdWVDb2xvclRva2VufSlgO1xuICB9XG59XG5cbmV4cG9ydCBuYW1lc3BhY2UgTWV0cmljQ29tcG9uZW50IHtcbiAgZXhwb3J0IGNvbnN0IFNpemVzID0gWyd4c21hbGwnLCAnc21hbGwnLCAnbWVkaXVtJywgJ2xhcmdlJ10gYXMgY29uc3Q7XG4gIGV4cG9ydCB0eXBlIFNpemUgPSAodHlwZW9mIFNpemVzKVtudW1iZXJdO1xufVxuIiwiPGRpdiBjbGFzcz1cImxhYmVsXCIgW25nQ2xhc3NdPVwiYWxpZ25cIj5cbiAge3sgbGFiZWwgfX1cbiAgPHNwYW4gKm5nSWY9XCJoZWxwXCJcbiAgICA+PHJpdi1pY29uIFtyaXZUb29sdGlwXT1cImhlbHBcIiBbbmFtZV09XCInSW5mbydcIiBbc2l6ZV09XCIxMlwiPjwvcml2LWljb24+XG4gIDwvc3Bhbj5cbjwvZGl2PlxuPGRpdiBjbGFzcz1cImNvbnRlbnRcIiBbbmdDbGFzc109XCJhbGlnblwiPlxuICA8ZGl2IGNsYXNzPVwidmFsdWVcIiBbbmdDbGFzc109XCJzaXplXCIgW3N0eWxlLmNvbG9yXT1cInZhbHVlQ29sb3JcIj5cbiAgICB7eyB2YWx1ZSB9fVxuICA8L2Rpdj5cbiAgPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PlxuPC9kaXY+XG4iXX0=
|
|
@@ -142,7 +142,7 @@ export class TimeSeriesComponent {
|
|
|
142
142
|
const xMinorTicks = getTimeInterval(interval)
|
|
143
143
|
.range(minDateValue, utcDay.offset(maxDateValue, 1))
|
|
144
144
|
.map(date => ({
|
|
145
|
-
value: date.valueOf(),
|
|
145
|
+
value: utcDay.offset(date, 1).valueOf(),
|
|
146
146
|
label: minorFormatter(date),
|
|
147
147
|
}))
|
|
148
148
|
.filter((_, i, arr) => arr.length > xMinorTickLimit
|
|
@@ -310,4 +310,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImpor
|
|
|
310
310
|
}], allowLegendToggle: [{
|
|
311
311
|
type: Input
|
|
312
312
|
}] } });
|
|
313
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGltZS1zZXJpZXMuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvcml2L3NyYy9saWIvdmlzdWFsaXphdGlvbi90aW1lLXNlcmllcy90aW1lLXNlcmllcy5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9yaXYvc3JjL2xpYi92aXN1YWxpemF0aW9uL3RpbWUtc2VyaWVzL3RpbWUtc2VyaWVzLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCx1QkFBdUIsRUFDdkIsU0FBUyxFQUNULEtBQUssRUFFTCxTQUFTLEdBQ1YsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLFVBQVUsQ0FBQztBQUN2QyxPQUFPLEVBQUUsSUFBSSxFQUFFLE1BQU0sVUFBVSxDQUFDO0FBQ2hDLE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxTQUFTLENBQUM7QUFDakMsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQzNDLE9BQU8sRUFDTCxlQUFlLEVBRWYsYUFBYSxFQUNiLEdBQUcsRUFDSCxXQUFXLEdBQ1osTUFBTSxNQUFNLENBQUM7QUFDZCxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZ0NBQWdDLENBQUM7QUFFNUQsT0FBTyxFQUVMLGdCQUFnQixFQUNoQixnQkFBZ0IsRUFDaEIsc0JBQXNCLEVBQ3RCLHNCQUFzQixFQUN0QixlQUFlLEVBQ2YsU0FBUyxHQUNWLE1BQU0sY0FBYyxDQUFDO0FBQ3RCLE9BQU8sRUFBb0IsWUFBWSxFQUFFLE1BQU0sdUJBQXVCLENBQUM7Ozs7Ozs7Ozs7QUFFdkUsTUFBTSxnQkFBZ0IsR0FBYSxLQUFLLENBQUM7QUFFekMsNkVBQTZFO0FBQzdFLCtDQUErQztBQU8vQyxNQUFNLE9BQU8sbUJBQW1CO0lBTmhDO1FBT21CLFdBQU0sR0FDckIsSUFB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LENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ3pCLENBQUM7SUFDRCxJQUFXLFFBQVE7UUFDakIsT0FBTyxJQUFJLENBQUMsU0FBUyxDQUFDLFFBQVEsRUFBRSxDQUFDO0lBQ25DLENBQUM7SUFNRCxJQUNXLGlCQUFpQixDQUFDLENBQVU7UUFDckMsSUFBSSxDQUFDLGtCQUFrQixDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUNsQyxDQUFDO0lBQ0QsSUFBVyxpQkFBaUI7UUFDMUIsT0FBTyxJQUFJLENBQUMsa0JBQWtCLENBQUMsUUFBUSxFQUFFLENBQUM7SUFDNUMsQ0FBQztJQTZFRCxpQkFBaUIsQ0FBQyxNQUFvQztRQUNwRCxJQUFJLENBQUMsUUFBUSxHQUFHLE1BQU0sQ0FBQyxFQUFjLENBQUM7SUFDeEMsQ0FBQzs7Z0hBdEpVLG1CQUFtQjtvR0FBbkIsbUJBQW1CLDZSQ3pDaEMsOC9KQXNLQTsyRkQ3SGEsbUJBQW1CO2tCQU4vQixTQUFTOytCQUNFLGlCQUFpQixtQkFHVix1QkFBdUIsQ0FBQyxNQUFNOzhCQWFwQyxLQUFLO3NCQURmLEtBQUs7Z0JBc0JLLGdCQUFnQjtzQkFEMUIsS0FBSztnQkF1QkssUUFBUTtzQkFEbEIsS0FBSztnQkFTVSxRQUFRO3NCQUR2QixTQUFTO3VCQUFDLFVBQVU7Z0JBS1YsaUJBQWlCO3NCQUQzQixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gIENvbXBvbmVudCxcbiAgSW5wdXQsXG4gIFRlbXBsYXRlUmVmLFxuICBWaWV3Q2hpbGQsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgc2NhbGVMaW5lYXIgfSBmcm9tICdkMy1zY2FsZSc7XG5pbXBvcnQgeyBsaW5lIH0gZnJvbSAnZDMtc2hhcGUnO1xuaW1wb3J0IHsgdXRjRGF5IH0gZnJvbSAnZDMtdGltZSc7XG5pbXBvcnQgeyB1dGNGb3JtYXQgfSBmcm9tICdkMy10aW1lLWZvcm1hdCc7XG5pbXBvcnQge1xuICBCZWhhdmlvclN1YmplY3QsXG4gIE9ic2VydmFibGUsXG4gIGNvbWJpbmVMYXRlc3QsXG4gIG1hcCxcbiAgc2hhcmVSZXBsYXksXG59IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgTnVtYmVyUGlwZSB9IGZyb20gJy4uLy4uL2Zvcm1hdC9waXBlcy9udW1iZXIucGlwZSc7XG5pbXBvcnQgeyBTaW5nbGVTZWxlY3RDb21wb25lbnQgfSBmcm9tICcuLi8uLi9pbnB1dC9zaW5nbGUtc2VsZWN0L3NpbmdsZS1zZWxlY3QuY29tcG9uZW50JztcbmltcG9ydCB7XG4gIEludGVydmFsLFxuICBnZXRJbnRlcnZhbFRpdGxlLFxuICBnZXRNYWpvckludGVydmFsLFxuICBnZXRNYWpvckludGVydmFsRm9ybWF0LFxuICBnZXRNaW5vckludGVydmFsRm9ybWF0LFxuICBnZXRUaW1lSW50ZXJ2YWwsXG4gIGludGVydmFscyxcbn0gZnJvbSAnLi4vaW50ZXJ2YWxzJztcbmltcG9ydCB7IERyYXdEYXRhLCBNYXJrZXIsIGdldERhdGVSYW5nZSB9IGZyb20gJy4vdGltZS1zZXJpZXMuaGVscGVycyc7XG5cbmNvbnN0IERFRkFVTFRfSU5URVJWQUw6IEludGVydmFsID0gJ2RheSc7XG5cbi8vIFRPRE86IG9uY2Ugd2UgdXBncmFkZSB0byBBbmd1bGFyIDE2LCB0aGlzIGNvbXBvbmVudCBjYW4gYmUgY2xlYW5lZCB1cCB3aXRoXG4vLyBzaWduYWxzIGluc3RlYWQgb2YgUnhKUy4gU2VlIGNvbW1pdCBlMjM4YzJkLlxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAncml2LXRpbWUtc2VyaWVzJyxcbiAgdGVtcGxhdGVVcmw6ICcuL3RpbWUtc2VyaWVzLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vdGltZS1zZXJpZXMuY29tcG9uZW50LmNzcyddLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbn0pXG5leHBvcnQgY2xhc3MgVGltZVNlcmllc0NvbXBvbmVudCB7XG4gIHByaXZhdGUgcmVhZG9ubHkgaW5wdXQkID1cbiAgICBuZXcgQmVoYXZpb3JTdWJqZWN0PFRpbWVTZXJpZXNDb21wb25lbnQuVGltZVNlcmllc0lucHV0PihbXG4gICAgICB7XG4gICAgICAgIHBvaW50UmVkdWNlcjogcG9pbnRzID0+XG4gICAgICAgICAgcG9pbnRzLnJlZHVjZSgodG90YWwsIHsgdmFsdWUgfSkgPT4gdG90YWwgKyB2YWx1ZSwgMCksXG4gICAgICAgIHZhbHVlRm9ybWF0dGVyOiB2ID0+IG5ldyBOdW1iZXJQaXBlKCkudHJhbnNmb3JtKHYpID8/ICcnLFxuICAgICAgICBzZXJpZXM6IFtdLFxuICAgICAgfSxcbiAgICBdKTtcbiAgQElucHV0KClcbiAgcHVibGljIHNldCBpbnB1dCh2OiBUaW1lU2VyaWVzQ29tcG9uZW50LlRpbWVTZXJpZXNJbnB1dCkge1xuICAgIHRoaXMuaW5wdXQkLm5leHQodik7XG4gIH1cbiAgcHVibGljIGdldCBpbnB1dCgpOiBUaW1lU2VyaWVzQ29tcG9uZW50LlRpbWVTZXJpZXNJbnB1dCB7XG4gICAgcmV0dXJuIHRoaXMuaW5wdXQkLmdldFZhbHVlKCk7XG4gIH1cblxuICBwcml2YXRlIHJlYWRvbmx5IHdpZHRoJCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8bnVtYmVyPigwKTtcbiAgcHJvdGVjdGVkIHNldCB3aWR0aCh2OiBudW1iZXIpIHtcbiAgICB0aGlzLndpZHRoJC5uZXh0KHYpO1xuICB9XG4gIHByb3RlY3RlZCBnZXQgd2lkdGgoKSB7XG4gICAgcmV0dXJuIHRoaXMud2lkdGgkLmdldFZhbHVlKCk7XG4gIH1cblxuICByZWFkb25seSBIRUlHSFQgPSAzMDA7XG5cbiAgcHJpdmF0ZSByZWFkb25seSB6ZXJvU3RhdGVNZXNzYWdlJCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8c3RyaW5nPihcbiAgICAnTm8gZGF0YSB0byBkaXNwbGF5LicsXG4gICk7XG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBzZXQgemVyb1N0YXRlTWVzc2FnZSh2OiBzdHJpbmcpIHtcbiAgICB0aGlzLnplcm9TdGF0ZU1lc3NhZ2UkLm5leHQodik7XG4gIH1cbiAgcHVibGljIGdldCB6ZXJvU3RhdGVNZXNzYWdlKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMuemVyb1N0YXRlTWVzc2FnZSQuZ2V0VmFsdWUoKTtcbiAgfVxuXG4gIHJlYWRvbmx5IEJPVFRPTV9PRkZTRVQgPSAyNDtcbiAgcmVhZG9ubHkgTEVGVF9SSUdIVF9PRkZTRVQgPSA0ODtcbiAgcmVhZG9ubHkgVE9QX1BBRERJTkcgPSAxNjtcbiAgcmVhZG9ubHkgTEVGVF9SSUdIVF9QQURESU5HID0gODtcbiAgcmVhZG9ubHkgQk9UVE9NX1BBRERJTkcgPSA4O1xuICByZWFkb25seSBZX1RJQ0tfQ09VTlQgPSA1O1xuICByZWFkb25seSBQT0lOVF9SQURJVVMgPSAzLjU7XG5cbiAgcmVhZG9ubHkgZGF0ZVJhbmdlJCA9IHRoaXMuaW5wdXQkLnBpcGUoXG4gICAgbWFwKGdldERhdGVSYW5nZSksXG4gICAgc2hhcmVSZXBsYXkoeyByZWZDb3VudDogdHJ1ZSwgYnVmZmVyU2l6ZTogMSB9KSxcbiAgKTtcblxuICBwcml2YXRlIHJlYWRvbmx5IGludGVydmFsJCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8SW50ZXJ2YWw+KERFRkFVTFRfSU5URVJWQUwpO1xuICBASW5wdXQoKVxuICBwdWJsaWMgc2V0IGludGVydmFsKHY6IEludGVydmFsKSB7XG4gICAgdGhpcy5pbnRlcnZhbCQubmV4dCh2KTtcbiAgfVxuICBwdWJsaWMgZ2V0IGludGVydmFsKCkge1xuICAgIHJldHVybiB0aGlzLmludGVydmFsJC5nZXRWYWx1ZSgpO1xuICB9XG5cbiAgQFZpZXdDaGlsZCgnY29udHJvbHMnKVxuICBwdWJsaWMgcmVhZG9ubHkgY29udHJvbHM/OiBUZW1wbGF0ZVJlZjxhbnk+O1xuXG4gIHByaXZhdGUgcmVhZG9ubHkgYWxsb3dMZWdlbmRUb2dnbGUkID0gbmV3IEJlaGF2aW9yU3ViamVjdDxib29sZWFuPihmYWxzZSk7XG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBzZXQgYWxsb3dMZWdlbmRUb2dnbGUodjogYm9vbGVhbikge1xuICAgIHRoaXMuYWxsb3dMZWdlbmRUb2dnbGUkLm5leHQodik7XG4gIH1cbiAgcHVibGljIGdldCBhbGxvd0xlZ2VuZFRvZ2dsZSgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5hbGxvd0xlZ2VuZFRvZ2dsZSQuZ2V0VmFsdWUoKTtcbiAgfVxuXG4gIHByaXZhdGUgcmVhZG9ubHkgbWF4UG9pbnRzJCA9IGNvbWJpbmVMYXRlc3QoW3RoaXMud2lkdGgkLCB0aGlzLmlucHV0JF0pLnBpcGUoXG4gICAgbWFwKChbd2lkdGgsIGlucHV0XSkgPT4ge1xuICAgICAgY29uc3QgaW5uZXJXaWR0aCA9IHdpZHRoIC0gdGhpcy5MRUZUX1JJR0hUX09GRlNFVCAqIGlucHV0Lmxlbmd0aDtcbiAgICAgIGNvbnN0IHBvaW50V2l0aFBhZGRpbmcgPSAodGhpcy5QT0lOVF9SQURJVVMgKyA0KSAqIDI7XG4gICAgICByZXR1cm4gTWF0aC5mbG9vcihpbm5lcldpZHRoIC8gcG9pbnRXaXRoUGFkZGluZyk7XG4gICAgfSksXG4gICk7XG4gIHByaXZhdGUgcmVhZG9ubHkgeE1pbm9yVGlja0xpbWl0JCA9IGNvbWJpbmVMYXRlc3QoW1xuICAgIHRoaXMud2lkdGgkLFxuICAgIHRoaXMuaW5wdXQkLFxuICBdKS5waXBlKFxuICAgIG1hcCgoW3dpZHRoLCBpbnB1dF0pID0+IHtcbiAgICAgIGNvbnN0IGlubmVyV2lkdGggPSB3aWR0aCAtIHRoaXMuTEVGVF9SSUdIVF9PRkZTRVQgKiBpbnB1dC5sZW5ndGg7XG4gICAgICBjb25zdCBtaW5TaXplUGVyVGljayA9IDQwO1xuICAgICAgcmV0dXJuIE1hdGgucm91bmQoaW5uZXJXaWR0aCAvIG1pblNpemVQZXJUaWNrKTtcbiAgICB9KSxcbiAgKTtcblxuICBwcml2YXRlIHJlYWRvbmx5IGFsbG93ZWRJbnRlcnZhbHMkOiBPYnNlcnZhYmxlPEludGVydmFsW10+ID0gY29tYmluZUxhdGVzdChbXG4gICAgdGhpcy5pbnB1dCQsXG4gICAgdGhpcy5tYXhQb2ludHMkLFxuICBdKS5waXBlKFxuICAgIG1hcCgoW2lucHV0LCBtYXhQb2ludHNdKSA9PiB7XG4gICAgICBjb25zdCBbbWluRGF0ZVZhbHVlLCBtYXhEYXRlVmFsdWVdID0gZ2V0RGF0ZVJhbmdlKGlucHV0KTtcblxuICAgICAgcmV0dXJuIGludGVydmFscy5maWx0ZXIoaW50ZXJ2YWwgPT4ge1xuICAgICAgICBjb25zdCB0aW1lSW50ZXJ2YWwgPSBnZXRUaW1lSW50ZXJ2YWwoaW50ZXJ2YWwpO1xuICAgICAgICBjb25zdCBudW1TdGVwcyA9IHRpbWVJbnRlcnZhbC5yYW5nZShcbiAgICAgICAgICB0aW1lSW50ZXJ2YWwuZmxvb3IobWluRGF0ZVZhbHVlKSxcbiAgICAgICAgICB0aW1lSW50ZXJ2YWwuY2VpbCh1dGNEYXkub2Zmc2V0KG1heERhdGVWYWx1ZSwgMSkpLFxuICAgICAgICApLmxlbmd0aDtcblxuICAgICAgICByZXR1cm4gbnVtU3RlcHMgPD0gbWF4UG9pbnRzICYmIG51bVN0ZXBzID4gMTtcbiAgICAgIH0pO1xuICAgIH0pLFxuICAgIHNoYXJlUmVwbGF5KHsgcmVmQ291bnQ6IHRydWUsIGJ1ZmZlclNpemU6IDEgfSksXG4gICk7XG5cbiAgcmVhZG9ubHkgaW50ZXJ2YWxPcHRpb25zJCA9IHRoaXMuYWxsb3dlZEludGVydmFscyQucGlwZShcbiAgICBtYXAoaW50ZXJ2YWxzID0+XG4gICAgICBpbnRlcnZhbHMubWFwKFxuICAgICAgICAoaW50ZXJ2YWwpOiBTaW5nbGVTZWxlY3RDb21wb25lbnQuT3B0aW9uID0+ICh7XG4gICAgICAgICAgaWQ6IGludGVydmFsLFxuICAgICAgICAgIHRpdGxlOiBnZXRJbnRlcnZhbFRpdGxlKGludGVydmFsKSxcbiAgICAgICAgfSksXG4gICAgICApLFxuICAgICksXG4gICAgc2hhcmVSZXBsYXkoeyByZWZDb3VudDogdHJ1ZSwgYnVmZmVyU2l6ZTogMSB9KSxcbiAgKTtcblxuICByZWFkb25seSBzZWxlY3RlZEludGVydmFsT3B0aW9uJCA9IGNvbWJpbmVMYXRlc3QoW1xuICAgIHRoaXMuaW50ZXJ2YWwkLFxuICAgIHRoaXMuaW50ZXJ2YWxPcHRpb25zJCxcbiAgXSkucGlwZShcbiAgICBtYXAoKFtpbnRlcnZhbCwgb3B0aW9uc10pID0+IHtcbiAgICAgIGNvbnN0IGFsbG93ZWRJbnRlcnZhbHMgPSBvcHRpb25zLm1hcCgoeyBpZCB9KSA9PiBpZCBhcyBJbnRlcnZhbCk7XG4gICAgICBpZiAoIWFsbG93ZWRJbnRlcnZhbHMuaW5jbHVkZXMoaW50ZXJ2YWwpKSB7XG4gICAgICAgIGNvbnN0IGZpcnN0QWxsb3dlZCA9IGFsbG93ZWRJbnRlcnZhbHMuYXQoMCk7XG4gICAgICAgIGNvbnN0IGxhc3RBbGxvd2VkID0gYWxsb3dlZEludGVydmFscy5hdCgtMSk7XG4gICAgICAgIGlmICghZmlyc3RBbGxvd2VkIHx8ICFsYXN0QWxsb3dlZCkgcmV0dXJuIG51bGw7XG5cbiAgICAgICAgaWYgKGludGVydmFscy5pbmRleE9mKGludGVydmFsKSA8IGludGVydmFscy5pbmRleE9mKGZpcnN0QWxsb3dlZCkpXG4gICAgICAgICAgaW50ZXJ2YWwgPSBmaXJzdEFsbG93ZWQ7XG4gICAgICAgIGlmIChpbnRlcnZhbHMuaW5kZXhPZihpbnRlcnZhbCkgPiBpbnRlcnZhbHMuaW5kZXhPZihsYXN0QWxsb3dlZCkpXG4gICAgICAgICAgaW50ZXJ2YWwgPSBsYXN0QWxsb3dlZDtcbiAgICAgIH1cbiAgICAgIHJldHVybiBvcHRpb25zLmZpbmQobyA9PiBvLmlkID09PSBpbnRlcnZhbCkgPz8gbnVsbDtcbiAgICB9KSxcbiAgICBzaGFyZVJlcGxheSh7IHJlZkNvdW50OiB0cnVlLCBidWZmZXJTaXplOiAxIH0pLFxuICApO1xuXG4gIHJlYWRvbmx5IHNlbGVjdGVkSW50ZXJ2YWwkID0gdGhpcy5zZWxlY3RlZEludGVydmFsT3B0aW9uJC5waXBlKFxuICAgIG1hcChvcHRpb24gPT4gKG9wdGlvbiA/IChvcHRpb24uaWQgYXMgSW50ZXJ2YWwpIDogREVGQVVMVF9JTlRFUlZBTCkpLFxuICApO1xuXG4gIHNldEludGVydmFsT3B0aW9uKG9wdGlvbjogU2luZ2xlU2VsZWN0Q29tcG9uZW50Lk9wdGlvbikge1xuICAgIHRoaXMuaW50ZXJ2YWwgPSBvcHRpb24uaWQgYXMgSW50ZXJ2YWw7XG4gIH1cblxuICByZWFkb25seSB0b2dnbGVWaXNpYmlsaXR5JCA9XG4gICAgbmV3IEJlaGF2aW9yU3ViamVjdDxUaW1lU2VyaWVzQ29tcG9uZW50LlRvZ2dsZVZpc2liaWxpdHkgfCBudWxsPihudWxsKTtcblxuICByZWFkb25seSBiaW5uZWREYXRhJCA9IGNvbWJpbmVMYXRlc3QoW1xuICAgIHRoaXMuaW5wdXQkLFxuICAgIHRoaXMuc2VsZWN0ZWRJbnRlcnZhbCQsXG4gICAgdGhpcy50b2dnbGVWaXNpYmlsaXR5JCxcbiAgXSkucGlwZShcbiAgICBtYXAoKFtpbnB1dCwgaW50ZXJ2YWwsIHRvZ2dsZVZpc2liaWxpdHldKSA9PlxuICAgICAgaW5wdXQubWFwKChjb25maWcpOiBUaW1lU2VyaWVzQ29tcG9uZW50LllDb25maWcgPT4ge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgIC4uLmNvbmZpZyxcbiAgICAgICAgICBzZXJpZXM6IGNvbmZpZy5zZXJpZXMubWFwKChzZXJpZXMsIGkpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IGJpbm5lZCA9IG5ldyBNYXA8bnVtYmVyLCBUaW1lU2VyaWVzQ29tcG9uZW50LkRhdGFQb2ludFtdPigpO1xuICAgICAgICAgICAgZm9yIChjb25zdCBwb2ludCBvZiBzZXJpZXMuZGF0YSkge1xuICAgICAgICAgICAgICBjb25zdCBiaW4gPSBnZXRUaW1lSW50ZXJ2YWwoaW50ZXJ2YWwpLmZsb29yKHBvaW50LmRhdGUpLnZhbHVlT2YoKTtcbiAgICAgICAgICAgICAgaWYgKCFiaW5uZWQuaGFzKGJpbikpIHtcbiAgICAgICAgICAgICAgICBiaW5uZWQuc2V0KGJpbiwgW10pO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIGJpbm5lZC5nZXQoYmluKSEucHVzaChwb2ludCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoXG4gICAgICAgICAgICAgIHRoaXMuYWxsb3dMZWdlbmRUb2dnbGUgJiZcbiAgICAgICAgICAgICAgdG9nZ2xlVmlzaWJpbGl0eSAmJlxuICAgICAgICAgICAgICBzZXJpZXMubGFiZWwgPT09IHRvZ2dsZVZpc2liaWxpdHkubGFiZWxcbiAgICAgICAgICAgICkge1xuICAgICAgICAgICAgICBzZXJpZXMudmlzaWJpbGl0eSA9IHRvZ2dsZVZpc2liaWxpdHkudmlzaWJpbGl0eTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgIC4uLnNlcmllcyxcbiAgICAgICAgICAgICAgZGF0YTogWy4uLmJpbm5lZC5lbnRyaWVzKCldLm1hcCgoW2RhdGVWYWx1ZSwgcG9pbnRzXSkgPT4gKHtcbiAgICAgICAgICAgICAgICBkYXRlOiBuZXcgRGF0ZShkYXRlVmFsdWUpLFxuICAgICAgICAgICAgICAgIHZhbHVlOiBjb25maWcucG9pbnRSZWR1Y2VyKHBvaW50cywgaSksXG4gICAgICAgICAgICAgIH0pKSxcbiAgICAgICAgICAgIH07XG4gICAgICAgICAgfSksXG4gICAgICAgIH07XG4gICAgICB9KSxcbiAgICApLFxuICAgIHNoYXJlUmVwbGF5KHsgcmVmQ291bnQ6IHRydWUsIGJ1ZmZlclNpemU6IDEgfSksXG4gICk7XG5cbiAgcmVhZG9ubHkgYmlubmVkRGF0ZVJhbmdlJCA9IHRoaXMuYmlubmVkRGF0YSQucGlwZShcbiAgICBtYXAoZ2V0RGF0ZVJhbmdlKSxcbiAgICBzaGFyZVJlcGxheSh7IHJlZkNvdW50OiB0cnVlLCBidWZmZXJTaXplOiAxIH0pLFxuICApO1xuXG4gIHJlYWRvbmx5IGRyYXdEYXRhJDogT2JzZXJ2YWJsZTxEcmF3RGF0YT4gPSBjb21iaW5lTGF0ZXN0KFtcbiAgICB0aGlzLmJpbm5lZERhdGEkLFxuICAgIHRoaXMuYmlubmVkRGF0ZVJhbmdlJCxcbiAgICB0aGlzLnNlbGVjdGVkSW50ZXJ2YWwkLFxuICAgIHRoaXMud2lkdGgkLFxuICAgIHRoaXMueE1pbm9yVGlja0xpbWl0JCxcbiAgXSkucGlwZShcbiAgICBtYXAoKFtiaW5uZWREYXRhLCBiaW5uZWREYXRlUmFuZ2UsIGludGVydmFsLCB3aWR0aCwgeE1pbm9yVGlja0xpbWl0XSkgPT4ge1xuICAgICAgY29uc3Qgdmlld0JveCA9IGAwIDAgJHt3aWR0aH0gJHt0aGlzLkhFSUdIVH1gO1xuXG4gICAgICBjb25zdCB4U2NhbGVSYW5nZVN0YXJ0ID0gdGhpcy5MRUZUX1JJR0hUX1BBRERJTkcgKyB0aGlzLkxFRlRfUklHSFRfT0ZGU0VUO1xuICAgICAgY29uc3QgeFNjYWxlUmFuZ2VFbmQgPVxuICAgICAgICB3aWR0aCAtXG4gICAgICAgIHRoaXMuTEVGVF9SSUdIVF9QQURESU5HICogMiAtXG4gICAgICAgIChiaW5uZWREYXRhLmxlbmd0aCA+IDEgPyB0aGlzLkxFRlRfUklHSFRfT0ZGU0VUIDogMCk7XG4gICAgICBjb25zdCB4U2NhbGUgPSBzY2FsZUxpbmVhcigpXG4gICAgICAgIC5kb21haW4oYmlubmVkRGF0ZVJhbmdlKVxuICAgICAgICAucmFuZ2UoW3hTY2FsZVJhbmdlU3RhcnQsIHhTY2FsZVJhbmdlRW5kXSk7XG4gICAgICBjb25zdCBbbWluRGF0ZVZhbHVlLCBtYXhEYXRlVmFsdWVdID0gYmlubmVkRGF0ZVJhbmdlO1xuICAgICAgY29uc3QgaGFzTXVsdGlwbGVZZWFycyA9XG4gICAgICAgIG1pbkRhdGVWYWx1ZS5nZXRGdWxsWWVhcigpIDwgbWF4RGF0ZVZhbHVlLmdldEZ1bGxZZWFyKCk7XG4gICAgICBjb25zdCB4TWlub3JJbnRlcnZhbEZvcm1hdCA9IGdldE1pbm9ySW50ZXJ2YWxGb3JtYXQoaW50ZXJ2YWwpO1xuICAgICAgY29uc3QgbWlub3JGb3JtYXR0ZXIgPSB1dGNGb3JtYXQoeE1pbm9ySW50ZXJ2YWxGb3JtYXQpO1xuICAgICAgY29uc3QgeE1pbm9yVGlja3MgPSBnZXRUaW1lSW50ZXJ2YWwoaW50ZXJ2YWwpXG4gICAgICAgIC5yYW5nZShtaW5EYXRlVmFsdWUsIHV0Y0RheS5vZmZzZXQobWF4RGF0ZVZhbHVlLCAxKSlcbiAgICAgICAgLm1hcChkYXRlID0+ICh7XG4gICAgICAgICAgdmFsdWU6IGRhdGUudmFsdWVPZigpLFxuICAgICAgICAgIGxhYmVsOiBtaW5vckZvcm1hdHRlcihkYXRlKSxcbiAgICAgICAgfSkpXG4gICAgICAgIC5maWx0ZXIoKF8sIGksIGFycikgPT5cbiAgICAgICAgICBhcnIubGVuZ3RoID4geE1pbm9yVGlja0xpbWl0XG4gICAgICAgICAgICA/IGkgJSBNYXRoLmNlaWwoYXJyLmxlbmd0aCAvIHhNaW5vclRpY2tMaW1pdCkgPT09IDBcbiAgICAgICAgICAgIDogdHJ1ZSxcbiAgICAgICAgKTtcbiAgICAgIGNvbnN0IHhNYWpvckludGVydmFsID0gZ2V0TWFqb3JJbnRlcnZhbChpbnRlcnZhbCk7XG4gICAgICBjb25zdCB4TWFqb3JJbnRlcnZhbEZvcm1hdCA9IGdldE1ham9ySW50ZXJ2YWxGb3JtYXQoXG4gICAgICAgIHhNYWpvckludGVydmFsLFxuICAgICAgICBoYXNNdWx0aXBsZVllYXJzLFxuICAgICAgKTtcbiAgICAgIGNvbnN0IHRpbWVJbnRlcnZhbCA9IGdldFRpbWVJbnRlcnZhbCh4TWFqb3JJbnRlcnZhbCk7XG4gICAgICBjb25zdCB0aWNrRmxvb3IgPSB0aW1lSW50ZXJ2YWwuZmxvb3IobWluRGF0ZVZhbHVlKTtcbiAgICAgIGNvbnN0IHRpY2tDZWlsaW5nID0gdGltZUludGVydmFsLmNlaWwodXRjRGF5Lm9mZnNldChtYXhEYXRlVmFsdWUsIDEpKTtcbiAgICAgIGNvbnN0IG1ham9yRm9ybWF0dGVyID0gdXRjRm9ybWF0KHhNYWpvckludGVydmFsRm9ybWF0KTtcbiAgICAgIGNvbnN0IHhNYWpvclRpY2tzID0gdGltZUludGVydmFsXG4gICAgICAgIC5yYW5nZSh0aWNrRmxvb3IsIHRpY2tDZWlsaW5nKVxuICAgICAgICAubWFwKHRpY2tEYXRlID0+ICh7XG4gICAgICAgICAgbGFiZWw6IHhNYWpvckludGVydmFsID09PSBpbnRlcnZhbCA/ICcnIDogbWFqb3JGb3JtYXR0ZXIodGlja0RhdGUpLFxuICAgICAgICAgIHZhbHVlOiB0aWNrRGF0ZS52YWx1ZU9mKCksXG4gICAgICAgIH0pKTtcbiAgICAgIGNvbnN0IHggPSB7IHhNYXg6IG1heERhdGVWYWx1ZSwgeFNjYWxlLCB4TWlub3JUaWNrcywgeE1ham9yVGlja3MgfTtcblxuICAgICAgY29uc3QgW3kxLCB5Ml0gPSBiaW5uZWREYXRhLm1hcChjb25maWcgPT4ge1xuICAgICAgICBjb25zdCB2aXNpYmxlU2VyaWVzID0gY29uZmlnLnNlcmllcy5maWx0ZXIoXG4gICAgICAgICAgcyA9PiBzLnZpc2liaWxpdHkgIT09ICdoaWRkZW4nLFxuICAgICAgICApO1xuICAgICAgICBjb25zdCBmbGF0dGVuZWRWYWx1ZXMgPSB2aXNpYmxlU2VyaWVzLnJlZHVjZTxudW1iZXJbXT4oXG4gICAgICAgICAgKHZhbHVlcywgc2VyaWVzKSA9PiBbXG4gICAgICAgICAgICAuLi52YWx1ZXMsXG4gICAgICAgICAgICAuLi5zZXJpZXMuZGF0YS5tYXAoKHsgdmFsdWUgfSkgPT4gdmFsdWUpLFxuICAgICAgICAgIF0sXG4gICAgICAgICAgW10sXG4gICAgICAgICk7XG4gICAgICAgIGxldCB5TWF4ID0gY29uZmlnLm1heCA/PyBNYXRoLm1heCguLi5mbGF0dGVuZWRWYWx1ZXMsIDApO1xuICAgICAgICBjb25zdCB5TWluID0gY29uZmlnLm1pbiA/PyBNYXRoLm1pbiguLi5mbGF0dGVuZWRWYWx1ZXMsIDApO1xuICAgICAgICAvLyBSSVZFVC0xNDYwNSAtIGlmIHJhbmdlIGlzIFswLDBdLCBtYWtlIGl0IFswLDFdIGluc3RlYWRcbiAgICAgICAgaWYgKHlNYXggPT0gMCAmJiB5TWluID09IDApIHtcbiAgICAgICAgICB5TWF4ID0gMTtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCB5U2NhbGUgPSBzY2FsZUxpbmVhcigpXG4gICAgICAgICAgLmRvbWFpbihbeU1pbiwgeU1heF0pXG4gICAgICAgICAgLnJhbmdlKFtcbiAgICAgICAgICAgIHRoaXMuSEVJR0hUIC1cbiAgICAgICAgICAgICAgdGhpcy5CT1RUT01fT0ZGU0VUIC1cbiAgICAgICAgICAgICAgKHRoaXMuQk9UVE9NX1BBRERJTkcgKyB0aGlzLlRPUF9QQURESU5HKSxcbiAgICAgICAgICAgIHRoaXMuVE9QX1BBRERJTkcsXG4gICAgICAgICAgXSk7XG4gICAgICAgIGNvbnN0IHlUaWNrcyA9IHlTY2FsZS50aWNrcyh0aGlzLllfVElDS19DT1VOVCk7XG4gICAgICAgIGNvbnN0IHNlcmllcyA9IGNvbmZpZy5zZXJpZXMubWFwKHNlcmllcyA9PiAoe1xuICAgICAgICAgIC4uLnNlcmllcyxcbiAgICAgICAgICBwYXRoOiBsaW5lPFRpbWVTZXJpZXNDb21wb25lbnQuRGF0YVBvaW50PigpXG4gICAgICAgICAgICAueChkID0+IHhTY2FsZShkLmRhdGUpKVxuICAgICAgICAgICAgLnkoZCA9PiB5U2NhbGUoZC52YWx1ZSkpKHNlcmllcy5kYXRhKSxcbiAgICAgICAgICBzdHJva2U6IGB2YXIoJHtzZXJpZXMuY29sb3JUb2tlbn0pYCxcbiAgICAgICAgICBtYXJrZXJzOiBzZXJpZXMuZGF0YS5tYXAocG9pbnQgPT4gKHtcbiAgICAgICAgICAgIC4uLnBvaW50LFxuICAgICAgICAgICAgeDogeFNjYWxlKHBvaW50LmRhdGUpLFxuICAgICAgICAgICAgeTogeVNjYWxlKHBvaW50LnZhbHVlKSxcbiAgICAgICAgICB9KSksXG4gICAgICAgIH0pKTtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAuLi5jb25maWcsXG4gICAgICAgICAgc2VyaWVzLFxuICAgICAgICAgIHlNYXgsXG4gICAgICAgICAgeU1pbixcbiAgICAgICAgICB5U2NhbGUsXG4gICAgICAgICAgeVRpY2tzLFxuICAgICAgICB9O1xuICAgICAgfSk7XG5cbiAgICAgIC8vIElmIHdlIGhhdmUgYSB5MiwgY29lcmNlIHkxJ3MgdGlja3MgdG8gYmUgdmlzdWFsbHkgZXF1aXZhbGVudCB0byB5MidzIHRpY2tzLlxuICAgICAgaWYgKHkyPy55VGlja3MpIHtcbiAgICAgICAgY29uc3QgdGlja0NvbnZlcnNpb25TY2FsZSA9IHNjYWxlTGluZWFyKClcbiAgICAgICAgICAucmFuZ2UoeTEueVNjYWxlLmRvbWFpbigpKVxuICAgICAgICAgIC5kb21haW4oeTIueVNjYWxlLmRvbWFpbigpKTtcbiAgICAgICAgeTEueVRpY2tzID0geTIueVRpY2tzLm1hcCh0aWNrQ29udmVyc2lvblNjYWxlKTtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIHsgdmlld0JveCwgeCwgeTEsIHkyIH07XG4gICAgfSksXG4gICAgc2hhcmVSZXBsYXkoeyByZWZDb3VudDogdHJ1ZSwgYnVmZmVyU2l6ZTogMSB9KSxcbiAgKTtcblxuICByZWFkb25seSBsZWdlbmQkID0gdGhpcy5iaW5uZWREYXRhJC5waXBlKFxuICAgIG1hcChiaW5uZWREYXRhID0+XG4gICAgICBiaW5uZWREYXRhLnJlZHVjZTxcbiAgICAgICAge1xuICAgICAgICAgIGxhYmVsOiBzdHJpbmc7XG4gICAgICAgICAgY29sb3JUb2tlbjogc3RyaW5nO1xuICAgICAgICAgIHZpc2liaWxpdHk6ICd2aXNpYmxlJyB8ICdoaWRkZW4nO1xuICAgICAgICB9W11cbiAgICAgID4oXG4gICAgICAgIChpdGVtcywgY29uZmlnKSA9PiBbXG4gICAgICAgICAgLi4uaXRlbXMsXG4gICAgICAgICAgLi4uY29uZmlnLnNlcmllcy5tYXAoc2VyaWVzID0+ICh7XG4gICAgICAgICAgICBsYWJlbDogc2VyaWVzLmxhYmVsLFxuICAgICAgICAgICAgY29sb3JUb2tlbjogc2VyaWVzLmNvbG9yVG9rZW4sXG4gICAgICAgICAgICB2aXNpYmlsaXR5OiBzZXJpZXMudmlzaWJpbGl0eSA/PyAndmlzaWJsZScsXG4gICAgICAgICAgfSkpLFxuICAgICAgICBdLFxuICAgICAgICBbXSxcbiAgICAgICksXG4gICAgKSxcbiAgKTtcblxuICByZWFkb25seSBlbXB0eSQgPSB0aGlzLmJpbm5lZERhdGEkLnBpcGUoXG4gICAgbWFwKGJpbm5lZERhdGEgPT5cbiAgICAgIGJpbm5lZERhdGEuZXZlcnkoY29uZmlnID0+XG4gICAgICAgIGNvbmZpZy5zZXJpZXMuZXZlcnkoc2VyaWVzID0+IHNlcmllcy5kYXRhLmxlbmd0aCA9PT0gMCksXG4gICAgICApLFxuICAgICksXG4gICAgc2hhcmVSZXBsYXkoeyByZWZDb3VudDogdHJ1ZSwgYnVmZmVyU2l6ZTogMSB9KSxcbiAgKTtcblxuICByZWFkb25seSBob3ZlcmVkTWFya2VyJCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8e1xuICAgIGV2ZW50OiBNb3VzZUV2ZW50O1xuICAgIG1hcmtlcjogTWFya2VyO1xuICB9IHwgbnVsbD4obnVsbCk7XG5cbiAgcmVhZG9ubHkgY2FsbG91dCQgPSBjb21iaW5lTGF0ZXN0KFt0aGlzLmhvdmVyZWRNYXJrZXIkLCB0aGlzLmRyYXdEYXRhJF0pLnBpcGUoXG4gICAgbWFwKChbaG92ZXJlZE1hcmtlciwgZHJhd0RhdGFdKSA9PiB7XG4gICAgICBpZiAoIWhvdmVyZWRNYXJrZXIpIHJldHVybiBudWxsO1xuXG4gICAgICBjb25zdCB7IHRhcmdldCB9ID0gaG92ZXJlZE1hcmtlci5ldmVudDtcbiAgICAgIGlmICghdGFyZ2V0KSByZXR1cm4gbnVsbDtcbiAgICAgIGNvbnN0IG1hcmtlclJlY3QgPSAoPFNWR0NpcmNsZUVsZW1lbnQ+dGFyZ2V0KS5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtcbiAgICAgIGNvbnN0IHBhZGRpbmcgPSA4O1xuICAgICAgY29uc3QgYW5jaG9yID0gbmV3IERPTVJlY3QoXG4gICAgICAgIG1hcmtlclJlY3QubGVmdCAtIHBhZGRpbmcsXG4gICAgICAgIG1hcmtlclJlY3QudG9wIC0gcGFkZGluZyxcbiAgICAgICAgbWFya2VyUmVjdC53aWR0aCArIHBhZGRpbmcgKiAyLFxuICAgICAgICBtYXJrZXJSZWN0LmhlaWdodCArIHBhZGRpbmcgKiAyLFxuICAgICAgKTtcblxuICAgICAgdHlwZSBNZXRyaWMgPSB7IGxhYmVsOiBzdHJpbmc7IHZhbHVlOiBzdHJpbmcgfTtcbiAgICAgIGNvbnN0IG1ldHJpY3M6IE1ldHJpY1tdID0gW107XG5cbiAgICAgIGZvciAoY29uc3Qgc2VyaWVzIG9mIGRyYXdEYXRhLnkxLnNlcmllcykge1xuICAgICAgICBpZiAoc2VyaWVzLnZpc2liaWxpdHkgIT09ICdoaWRkZW4nKSB7XG4gICAgICAgICAgY29uc3QgbWF0Y2ggPSBzZXJpZXMubWFya2Vycy5maW5kKFxuICAgICAgICAgICAgbWFya2VyID0+IG1hcmtlci54ID09PSBob3ZlcmVkTWFya2VyLm1hcmtlci54LFxuICAgICAgICAgICk7XG4gICAgICAgICAgaWYgKG1hdGNoKSB7XG4gICAgICAgICAgICBtZXRyaWNzLnB1c2goe1xuICAgICAgICAgICAgICBsYWJlbDogc2VyaWVzLmxhYmVsLFxuICAgICAgICAgICAgICB2YWx1ZTogZHJhd0RhdGEueTEudmFsdWVGb3JtYXR0ZXIobWF0Y2gudmFsdWUpLFxuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIGlmIChkcmF3RGF0YS55Mikge1xuICAgICAgICBmb3IgKGNvbnN0IHNlcmllcyBvZiBkcmF3RGF0YS55Mi5zZXJpZXMpIHtcbiAgICAgICAgICBpZiAoc2VyaWVzLnZpc2liaWxpdHkgIT09ICdoaWRkZW4nKSB7XG4gICAgICAgICAgICBjb25zdCBtYXRjaCA9IHNlcmllcy5tYXJrZXJzLmZpbmQoXG4gICAgICAgICAgICAgIG1hcmtlciA9PiBtYXJrZXIueCA9PT0gaG92ZXJlZE1hcmtlci5tYXJrZXIueCxcbiAgICAgICAgICAgICk7XG4gICAgICAgICAgICBpZiAobWF0Y2gpIHtcbiAgICAgICAgICAgICAgbWV0cmljcy5wdXNoKHtcbiAgICAgICAgICAgICAgICBsYWJlbDogc2VyaWVzLmxhYmVsLFxuICAgICAgICAgICAgICAgIHZhbHVlOiBkcmF3RGF0YS55Mi52YWx1ZUZvcm1hdHRlcihtYXRjaC52YWx1ZSksXG4gICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICByZXR1cm4geyBhbmNob3IsIG1ldHJpY3MgfTtcbiAgICB9KSxcbiAgKTtcbn1cblxuZXhwb3J0IG5hbWVzcGFjZSBUaW1lU2VyaWVzQ29tcG9uZW50IHtcbiAgZXhwb3J0IHR5cGUgU2VyaWVzID0ge1xuICAgIGxhYmVsOiBzdHJpbmc7XG4gICAgY29sb3JUb2tlbjogc3RyaW5nO1xuICAgIGRhdGE6IFRpbWVTZXJpZXNDb21wb25lbnQuRGF0YVBvaW50W107XG4gICAgc3R5bGU/OiAnc29saWQnIHwgJ2Rhc2hlZCc7XG4gICAgdmlzaWJpbGl0eT86ICd2aXNpYmxlJyB8ICdoaWRkZW4nO1xuICB9O1xuXG4gIGV4cG9ydCB0eXBlIERhdGFQb2ludCA9IHtcbiAgICB2YWx1ZTogbnVtYmVyO1xuICAgIGRhdGU6IERhdGU7XG4gIH07XG5cbiAgZXhwb3J0IHR5cGUgWUNvbmZpZyA9IHtcbiAgICBwb2ludFJlZHVjZXI6IChwb2ludHM6IERhdGFQb2ludFtdLCBzZXJpZXNJbmRleDogbnVtYmVyKSA9PiBudW1iZXI7XG4gICAgdmFsdWVGb3JtYXR0ZXI6IChyZWR1Y2VkVmFsdWU6IG51bWJlcikgPT4gc3RyaW5nO1xuICAgIHNlcmllczogU2VyaWVzW107XG4gICAgbWluPzogbnVtYmVyO1xuICAgIG1heD86IG51bWJlcjtcbiAgfTtcblxuICBleHBvcnQgdHlwZSBUaW1lU2VyaWVzSW5wdXQgPSBbWUNvbmZpZ10gfCBbWUNvbmZpZywgWUNvbmZpZ107XG5cbiAgZXhwb3J0IHR5cGUgVG9nZ2xlVmlzaWJpbGl0eSA9IHtcbiAgICBsYWJlbDogc3RyaW5nO1xuICAgIHZpc2liaWxpdHk6ICdoaWRkZW4nIHwgJ3Zpc2libGUnO1xuICB9O1xufVxuIiwiPGRpdlxuICAqbmdJZj1cIiEoZW1wdHkkIHwgYXN5bmMpOyBlbHNlIHplcm9TdGF0ZVwiXG4gIGNsYXNzPVwiY29udGFpbmVyXCJcbiAgKHJpdkNsaWVudFNpemUpPVwid2lkdGggPSAkZXZlbnQud2lkdGhcIlxuPlxuICA8c3ZnXG4gICAgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiXG4gICAgKm5nSWY9XCJkcmF3RGF0YSQgfCBhc3luYzsgbGV0IGRcIlxuICAgIFthdHRyLnZpZXdCb3hdPVwiZC52aWV3Qm94XCJcbiAgPlxuICAgIDxnICpuZ0Zvcj1cImxldCB0aWNrIG9mIGQueC54TWFqb3JUaWNrc1wiPlxuICAgICAgPHJlY3RcbiAgICAgICAgY2xhc3M9XCJ0aWNrXCJcbiAgICAgICAgW2F0dHIueF09XCJkLngueFNjYWxlKHRpY2sudmFsdWUpXCJcbiAgICAgICAgeT1cIjBcIlxuICAgICAgICB3aWR0aD1cIjFcIlxuICAgICAgICBbYXR0ci5oZWlnaHRdPVwiZC55MS55U2NhbGUoZC55MS55TWluKSArIEJPVFRPTV9PRkZTRVRcIlxuICAgICAgPjwvcmVjdD5cbiAgICAgIDx0ZXh0XG4gICAgICAgICpuZ0lmPVwiZC54LnhTY2FsZSh0aWNrLnZhbHVlKSA+PSAwXCJcbiAgICAgICAgY2xhc3M9XCJ4LW1ham9yLXRpY2stbGFiZWxcIlxuICAgICAgICBbYXR0ci54XT1cImQueC54U2NhbGUodGljay52YWx1ZSlcIlxuICAgICAgICBbYXR0ci55XT1cIkhFSUdIVCAtIEJPVFRPTV9PRkZTRVRcIlxuICAgICAgICBkeD1cIjRcIlxuICAgICAgICBkeT1cIi00XCJcbiAgICAgID5cbiAgICAgICAge3sgdGljay5sYWJlbCB9fVxuICAgICAgPC90ZXh0PlxuICAgIDwvZz5cbiAgICA8ZyAqbmdGb3I9XCJsZXQgdGljayBvZiBkLngueE1pbm9yVGlja3NcIj5cbiAgICAgIDx0ZXh0XG4gICAgICAgIGNsYXNzPVwieC1taW5vci10aWNrLWxhYmVsXCJcbiAgICAgICAgW2F0dHIueF09XCJkLngueFNjYWxlKHRpY2sudmFsdWUpXCJcbiAgICAgICAgW2F0dHIueV09XCJIRUlHSFQgLSBCT1RUT01fT0ZGU0VUXCJcbiAgICAgICAgdGV4dC1hbmNob3I9XCJtaWRkbGVcIlxuICAgICAgICBkb21pbmFudC1iYXNlbGluZT1cImhhbmdpbmdcIlxuICAgICAgICBkeT1cIjhcIlxuICAgICAgPlxuICAgICAgICB7eyB0aWNrLmxhYmVsIH19XG4gICAgICAgIDx0aXRsZT57eyB0aWNrLnZhbHVlIHwgZGF0ZSB9fTwvdGl0bGU+XG4gICAgICA8L3RleHQ+XG4gICAgPC9nPlxuICAgIDxnICpuZ0Zvcj1cImxldCB0aWNrIG9mIGQueTEueVRpY2tzXCI+XG4gICAgICA8cmVjdFxuICAgICAgICBjbGFzcz1cInRpY2tcIlxuICAgICAgICB4PVwiMFwiXG4gICAgICAgIFthdHRyLnldPVwiZC55MS55U2NhbGUodGljaylcIlxuICAgICAgICB3aWR0aD1cIjEwMCVcIlxuICAgICAgICBoZWlnaHQ9XCIxXCJcbiAgICAgID48L3JlY3Q+XG4gICAgICA8dGV4dCBjbGFzcz1cInktdGljay1sYWJlbFwiIHg9XCIwXCIgW2F0dHIueV09XCJkLnkxLnlTY2FsZSh0aWNrKVwiIGR5PVwiLTRcIj5cbiAgICAgICAge3sgZC55MS52YWx1ZUZvcm1hdHRlcih0aWNrKSB9fVxuICAgICAgPC90ZXh0PlxuICAgIDwvZz5cblxuICAgIDxnICpuZ0Zvcj1cImxldCB0aWNrIG9mIGQueTI/LnlUaWNrc1wiPlxuICAgICAgPHRleHRcbiAgICAgICAgY2xhc3M9XCJ5LXRpY2stbGFiZWxcIlxuICAgICAgICBbYXR0ci54XT1cIndpZHRoXCJcbiAgICAgICAgW2F0dHIueV09XCJkLnkyPy55U2NhbGUodGljaylcIlxuICAgICAgICB0ZXh0LWFuY2hvcj1cImVuZFwiXG4gICAgICAgIGR5PVwiLTRcIlxuICAgICAgPlxuICAgICAgICB7eyBkLnkyPy52YWx1ZUZvcm1hdHRlcih0aWNrKSB9fVxuICAgICAgPC90ZXh0PlxuICAgIDwvZz5cblxuICAgIDxnICpuZ0lmPVwiaG92ZXJlZE1hcmtlciQgfCBhc3luYzsgbGV0IGhvdmVyZWRNYXJrZXJcIj5cbiAgICAgIDxsaW5lXG4gICAgICAgIGNsYXNzPVwiaG92ZXItcnVsZVwiXG4gICAgICAgIFthdHRyLngxXT1cImhvdmVyZWRNYXJrZXIubWFya2VyLnhcIlxuICAgICAgICBbYXR0ci55MV09XCJkLnkxLnlTY2FsZShkLnkxLnlNaW4pXCJcbiAgICAgICAgW2F0dHIueDJdPVwiaG92ZXJlZE1hcmtlci5tYXJrZXIueFwiXG4gICAgICAgIFthdHRyLnkyXT1cImQueTEueVNjYWxlKGQueTEueU1heClcIlxuICAgICAgICBzdHJva2Utd2lkdGg9XCIyXCJcbiAgICAgICAgc3Ryb2tlLWRhc2hhcnJheT1cIjRcIlxuICAgICAgLz5cbiAgICA8L2c+XG5cbiAgICA8bmctdGVtcGxhdGUgI3Nlcmllc1RwbCBsZXQtc2VyaWVzPVwic2VyaWVzXCI+XG4gICAgICA8cGF0aFxuICAgICAgICAqbmdJZj1cInNlcmllcy52aXNpYmlsaXR5ICE9ICdoaWRkZW4nXCJcbiAgICAgICAgY2xhc3M9XCJkYXRhIHBhdGhcIlxuICAgICAgICBbY2xhc3MubWFya2VyLWhvdmVyZWRdPVwiISEoaG92ZXJlZE1hcmtlciQgfCBhc3luYylcIlxuICAgICAgICBbYXR0ci5kXT1cInNlcmllcy5wYXRoXCJcbiAgICAgICAgZmlsbD1cIm5vbmVcIlxuICAgICAgICBzdHJva2Utd2lkdGg9XCIyXCJcbiAgICAgICAgW2F0dHIuc3Ryb2tlXT1cInNlcmllcy5zdHJva2VcIlxuICAgICAgICBbYXR0ci5zdHJva2UtZGFzaGFycmF5XT1cInNlcmllcy5zdHlsZSA9PT0gJ2Rhc2hlZCcgPyAnNCcgOiBudWxsXCJcbiAgICAgID48L3BhdGg+XG4gICAgICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCBtYXJrZXIgb2Ygc2VyaWVzLm1hcmtlcnNcIj5cbiAgICAgICAgPGNpcmNsZVxuICAgICAgICAgICpuZ0lmPVwic2VyaWVzLnZpc2liaWxpdHkgIT0gJ2hpZGRlbidcIlxuICAgICAgICAgIGNsYXNzPVwiZGF0YSBtYXJrZXJcIlxuICAgICAgICAgIFtjbGFzcy5mb2N1c2VkXT1cIihob3ZlcmVkTWFya2VyJCB8IGFzeW5jKT8ubWFya2VyPy54ID09PSBtYXJrZXIueFwiXG4gICAgICAgICAgW2NsYXNzLmJsdXJyZWRdPVwiXG4gICAgICAgICAgICAoaG92ZXJlZE1hcmtlciQgfCBhc3luYykgIT09IG51bGwgJiZcbiAgICAgICAgICAgIChob3ZlcmVkTWFya2VyJCB8IGFzeW5jKT8ubWFya2VyPy54ICE9PSBtYXJrZXIueFxuICAgICAgICAgIFwiXG4gICAgICAgICAgW2F0dHIuY3hdPVwibWFya2VyLnhcIlxuICAgICAgICAgIFthdHRyLmN5XT1cIm1hcmtlci55XCJcbiAgICAgICAgICBbYXR0ci5yXT1cIlBPSU5UX1JBRElVU1wiXG4gICAgICAgICAgc3Ryb2tlLXdpZHRoPVwiMlwiXG4gICAgICAgICAgW2F0dHIuc3Ryb2tlXT1cInNlcmllcy5zdHJva2VcIlxuICAgICAgICAgIChtb3VzZW92ZXIpPVwiaG92ZXJlZE1hcmtlciQubmV4dCh7IGV2ZW50OiAkZXZlbnQsIG1hcmtlcjogbWFya2VyIH0pXCJcbiAgICAgICAgICAobW91c2VsZWF2ZSk9XCJob3ZlcmVkTWFya2VyJC5uZXh0KG51bGwpXCJcbiAgICAgICAgPjwvY2lyY2xlPlxuICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgPC9uZy10ZW1wbGF0ZT5cbiAgICA8ZyAqbmdGb3I9XCJsZXQgc2VyaWVzIG9mIGQueTEuc2VyaWVzXCI+XG4gICAgICA8bmctY29udGFpbmVyXG4gICAgICAgICpuZ1RlbXBsYXRlT3V0bGV0PVwic2VyaWVzVHBsOyBjb250ZXh0OiB7IHNlcmllczogc2VyaWVzIH1cIlxuICAgICAgPjwvbmctY29udGFpbmVyPlxuICAgIDwvZz5cbiAgICA8ZyAqbmdGb3I9XCJsZXQgc2VyaWVzIG9mIGQueTI/LnNlcmllc1wiPlxuICAgICAgPG5nLWNvbnRhaW5lclxuICAgICAgICAqbmdUZW1wbGF0ZU91dGxldD1cInNlcmllc1RwbDsgY29udGV4dDogeyBzZXJpZXM6IHNlcmllcyB9XCJcbiAgICAgID48L25nLWNvbnRhaW5lcj5cbiAgICA8L2c+XG4gIDwvc3ZnPlxuICA8bGVnZW5kPlxuICAgIDxyaXYtbGVnZW5kLWl0ZW1cbiAgICAgICpuZ0Zvcj1cImxldCBpdGVtIG9mIGxlZ2VuZCQgfCBhc3luY1wiXG4gICAgICBbbGFiZWxdPVwiaXRlbS5sYWJlbFwiXG4gICAgICBbY29sb3JUb2tlbl09XCJpdGVtLmNvbG9yVG9rZW5cIlxuICAgICAgW3Zpc2liaWxpdHldPVwiaXRlbS52aXNpYmlsaXR5XCJcbiAgICAgIFtjbGlja2FibGVdPVwiYWxsb3dMZWdlbmRUb2dnbGVcIlxuICAgICAgKGl0ZW1DbGljayk9XCJcbiAgICAgICAgYWxsb3dMZWdlbmRUb2dnbGVcbiAgICAgICAgICA/IHRvZ2dsZVZpc2liaWxpdHkkLm5leHQoe1xuICAgICAgICAgICAgICBsYWJlbDogaXRlbS5sYWJlbCxcbiAgICAgICAgICAgICAgdmlzaWJpbGl0eTogaXRlbS52aXNpYmlsaXR5ID09ICdoaWRkZW4nID8gJ3Zpc2libGUnIDogJ2hpZGRlbidcbiAgICAgICAgICAgIH0pXG4gICAgICAgICAgOiBudWxsXG4gICAgICBcIlxuICAgID48L3Jpdi1sZWdlbmQtaXRlbT5cbiAgPC9sZWdlbmQ+XG48L2Rpdj5cblxuPG5nLWNvbnRhaW5lciAqbmdJZj1cImNhbGxvdXQkIHwgYXN5bmM7IGxldCBjYWxsb3V0XCI+XG4gIDxyaXYtY2FsbG91dFxuICAgICpyaXYtY2FsbG91dFxuICAgIFthbmNob3JdPVwiY2FsbG91dC5hbmNob3JcIlxuICAgIFtpc01vZGFsXT1cImZhbHNlXCJcbiAgICBbcHJlZmVycmVkUG9zaXRpb25dPVwiJ3RvcC1jZW50ZXInXCJcbiAgPlxuICAgIDxkaXYgY2xhc3M9XCJjYWxsb3V0LWNvbnRlbnRcIj5cbiAgICAgIDxkaXYgY2xhc3M9XCJjYWxsb3V0LW1ldHJpY1wiICpuZ0Zvcj1cImxldCBtZXRyaWMgb2YgY2FsbG91dC5tZXRyaWNzXCI+XG4gICAgICAgIDxkaXY+e3sgbWV0cmljLmxhYmVsIH19PC9kaXY+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJjYWxsb3V0LW1ldHJpYy12YWx1ZVwiPnt7IG1ldHJpYy52YWx1ZSB9fTwvZGl2PlxuICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG4gIDwvcml2LWNhbGxvdXQ+XG48L25nLWNvbnRhaW5lcj5cblxuPG5nLXRlbXBsYXRlICN6ZXJvU3RhdGU+XG4gIDxyaXYtemVyby1zdGF0ZSBbbWVzc2FnZV09XCJ6ZXJvU3RhdGVNZXNzYWdlXCI+PC9yaXYtemVyby1zdGF0ZT5cbjwvbmctdGVtcGxhdGU+XG5cbjxuZy10ZW1wbGF0ZSAjY29udHJvbHM+XG4gIDxyaXYtc2luZ2xlLXNlbGVjdFxuICAgIFtncm91cHNdPVwiaW50ZXJ2YWxPcHRpb25zJCB8IGFzeW5jIHwgcml2T3B0aW9uR3JvdXBcIlxuICAgIFtzZWxlY3RlZE9wdGlvbl09XCJzZWxlY3RlZEludGVydmFsT3B0aW9uJCB8IGFzeW5jXCJcbiAgICAoc2VsZWN0ZWRPcHRpb25DaGFuZ2UpPVwic2V0SW50ZXJ2YWxPcHRpb24oJGV2ZW50KVwiXG4gID48L3Jpdi1zaW5nbGUtc2VsZWN0PlxuPC9uZy10ZW1wbGF0ZT5cbiJdfQ==
|
|
313
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGltZS1zZXJpZXMuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvcml2L3NyYy9saWIvdmlzdWFsaXphdGlvbi90aW1lLXNlcmllcy90aW1lLXNlcmllcy5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9yaXYvc3JjL2xpYi92aXN1YWxpemF0aW9uL3RpbWUtc2VyaWVzL3RpbWUtc2VyaWVzLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCx1QkFBdUIsRUFDdkIsU0FBUyxFQUNULEtBQUssRUFFTCxTQUFTLEdBQ1YsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLFVBQVUsQ0FBQztBQUN2QyxPQUFPLEVBQUUsSUFBSSxFQUFFLE1BQU0sVUFBVSxDQUFDO0FBQ2hDLE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxTQUFTLENBQUM7QUFDakMsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQzNDLE9BQU8sRUFDTCxlQUFlLEVBRWYsYUFBYSxFQUNiLEdBQUcsRUFDSCxXQUFXLEdBQ1osTUFBTSxNQUFNLENBQUM7QUFDZCxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZ0NBQWdDLENBQUM7QUFFNUQsT0FBTyxFQUVMLGdCQUFnQixFQUNoQixnQkFBZ0IsRUFDaEIsc0JBQXNCLEVBQ3RCLHNCQUFzQixFQUN0QixlQUFlLEVBQ2YsU0FBUyxHQUNWLE1BQU0sY0FBYyxDQUFDO0FBQ3RCLE9BQU8sRUFBb0IsWUFBWSxFQUFFLE1BQU0sdUJBQXVCLENBQUM7Ozs7Ozs7Ozs7QUFFdkUsTUFBTSxnQkFBZ0IsR0FBYSxLQUFLLENBQUM7QUFFekMsNkVBQTZFO0FBQzdFLCtDQUErQztBQU8vQyxNQUFNLE9BQU8sbUJBQW1CO0lBTmhDO1FBT21CLFdBQU0sR0FDckIsSUFB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UUFBUSxDQUFDLENBQVc7UUFDN0IsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDekIsQ0FBQztJQUNELElBQVcsUUFBUTtRQUNqQixPQUFPLElBQUksQ0FBQyxTQUFTLENBQUMsUUFBUSxFQUFFLENBQUM7SUFDbkMsQ0FBQztJQU1ELElBQ1csaUJBQWlCLENBQUMsQ0FBVTtRQUNyQyxJQUFJLENBQUMsa0JBQWtCLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ2xDLENBQUM7SUFDRCxJQUFXLGlCQUFpQjtRQUMxQixPQUFPLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxRQUFRLEVBQUUsQ0FBQztJQUM1QyxDQUFDO0lBNkVELGlCQUFpQixDQUFDLE1BQW9DO1FBQ3BELElBQUksQ0FBQyxRQUFRLEdBQUcsTUFBTSxDQUFDLEVBQWMsQ0FBQztJQUN4QyxDQUFDOztnSEF0SlUsbUJBQW1CO29HQUFuQixtQkFBbUIsNlJDekNoQyw4L0pBc0tBOzJGRDdIYSxtQkFBbUI7a0JBTi9CLFNBQVM7K0JBQ0UsaUJBQWlCLG1CQUdWLHVCQUF1QixDQUFDLE1BQU07OEJBYXBDLEtBQUs7c0JBRGYsS0FBSztnQkFzQkssZ0JBQWdCO3NCQUQxQixLQUFLO2dCQXVCSyxRQUFRO3NCQURsQixLQUFLO2dCQVNVLFFBQVE7c0JBRHZCLFNBQVM7dUJBQUMsVUFBVTtnQkFLVixpQkFBaUI7c0JBRDNCLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbiAgQ29tcG9uZW50LFxuICBJbnB1dCxcbiAgVGVtcGxhdGVSZWYsXG4gIFZpZXdDaGlsZCxcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBzY2FsZUxpbmVhciB9IGZyb20gJ2QzLXNjYWxlJztcbmltcG9ydCB7IGxpbmUgfSBmcm9tICdkMy1zaGFwZSc7XG5pbXBvcnQgeyB1dGNEYXkgfSBmcm9tICdkMy10aW1lJztcbmltcG9ydCB7IHV0Y0Zvcm1hdCB9IGZyb20gJ2QzLXRpbWUtZm9ybWF0JztcbmltcG9ydCB7XG4gIEJlaGF2aW9yU3ViamVjdCxcbiAgT2JzZXJ2YWJsZSxcbiAgY29tYmluZUxhdGVzdCxcbiAgbWFwLFxuICBzaGFyZVJlcGxheSxcbn0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBOdW1iZXJQaXBlIH0gZnJvbSAnLi4vLi4vZm9ybWF0L3BpcGVzL251bWJlci5waXBlJztcbmltcG9ydCB7IFNpbmdsZVNlbGVjdENvbXBvbmVudCB9IGZyb20gJy4uLy4uL2lucHV0L3NpbmdsZS1zZWxlY3Qvc2luZ2xlLXNlbGVjdC5jb21wb25lbnQnO1xuaW1wb3J0IHtcbiAgSW50ZXJ2YWwsXG4gIGdldEludGVydmFsVGl0bGUsXG4gIGdldE1ham9ySW50ZXJ2YWwsXG4gIGdldE1ham9ySW50ZXJ2YWxGb3JtYXQsXG4gIGdldE1pbm9ySW50ZXJ2YWxGb3JtYXQsXG4gIGdldFRpbWVJbnRlcnZhbCxcbiAgaW50ZXJ2YWxzLFxufSBmcm9tICcuLi9pbnRlcnZhbHMnO1xuaW1wb3J0IHsgRHJhd0RhdGEsIE1hcmtlciwgZ2V0RGF0ZVJhbmdlIH0gZnJvbSAnLi90aW1lLXNlcmllcy5oZWxwZXJzJztcblxuY29uc3QgREVGQVVMVF9JTlRFUlZBTDogSW50ZXJ2YWwgPSAnZGF5JztcblxuLy8gVE9ETzogb25jZSB3ZSB1cGdyYWRlIHRvIEFuZ3VsYXIgMTYsIHRoaXMgY29tcG9uZW50IGNhbiBiZSBjbGVhbmVkIHVwIHdpdGhcbi8vIHNpZ25hbHMgaW5zdGVhZCBvZiBSeEpTLiBTZWUgY29tbWl0IGUyMzhjMmQuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdyaXYtdGltZS1zZXJpZXMnLFxuICB0ZW1wbGF0ZVVybDogJy4vdGltZS1zZXJpZXMuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi90aW1lLXNlcmllcy5jb21wb25lbnQuY3NzJ10sXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxufSlcbmV4cG9ydCBjbGFzcyBUaW1lU2VyaWVzQ29tcG9uZW50IHtcbiAgcHJpdmF0ZSByZWFkb25seSBpbnB1dCQgPVxuICAgIG5ldyBCZWhhdmlvclN1YmplY3Q8VGltZVNlcmllc0NvbXBvbmVudC5UaW1lU2VyaWVzSW5wdXQ+KFtcbiAgICAgIHtcbiAgICAgICAgcG9pbnRSZWR1Y2VyOiBwb2ludHMgPT5cbiAgICAgICAgICBwb2ludHMucmVkdWNlKCh0b3RhbCwgeyB2YWx1ZSB9KSA9PiB0b3RhbCArIHZhbHVlLCAwKSxcbiAgICAgICAgdmFsdWVGb3JtYXR0ZXI6IHYgPT4gbmV3IE51bWJlclBpcGUoKS50cmFuc2Zvcm0odikgPz8gJycsXG4gICAgICAgIHNlcmllczogW10sXG4gICAgICB9LFxuICAgIF0pO1xuICBASW5wdXQoKVxuICBwdWJsaWMgc2V0IGlucHV0KHY6IFRpbWVTZXJpZXNDb21wb25lbnQuVGltZVNlcmllc0lucHV0KSB7XG4gICAgdGhpcy5pbnB1dCQubmV4dCh2KTtcbiAgfVxuICBwdWJsaWMgZ2V0IGlucHV0KCk6IFRpbWVTZXJpZXNDb21wb25lbnQuVGltZVNlcmllc0lucHV0IHtcbiAgICByZXR1cm4gdGhpcy5pbnB1dCQuZ2V0VmFsdWUoKTtcbiAgfVxuXG4gIHByaXZhdGUgcmVhZG9ubHkgd2lkdGgkID0gbmV3IEJlaGF2aW9yU3ViamVjdDxudW1iZXI+KDApO1xuICBwcm90ZWN0ZWQgc2V0IHdpZHRoKHY6IG51bWJlcikge1xuICAgIHRoaXMud2lkdGgkLm5leHQodik7XG4gIH1cbiAgcHJvdGVjdGVkIGdldCB3aWR0aCgpIHtcbiAgICByZXR1cm4gdGhpcy53aWR0aCQuZ2V0VmFsdWUoKTtcbiAgfVxuXG4gIHJlYWRvbmx5IEhFSUdIVCA9IDMwMDtcblxuICBwcml2YXRlIHJlYWRvbmx5IHplcm9TdGF0ZU1lc3NhZ2UkID0gbmV3IEJlaGF2aW9yU3ViamVjdDxzdHJpbmc+KFxuICAgICdObyBkYXRhIHRvIGRpc3BsYXkuJyxcbiAgKTtcbiAgQElucHV0KClcbiAgcHVibGljIHNldCB6ZXJvU3RhdGVNZXNzYWdlKHY6IHN0cmluZykge1xuICAgIHRoaXMuemVyb1N0YXRlTWVzc2FnZSQubmV4dCh2KTtcbiAgfVxuICBwdWJsaWMgZ2V0IHplcm9TdGF0ZU1lc3NhZ2UoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy56ZXJvU3RhdGVNZXNzYWdlJC5nZXRWYWx1ZSgpO1xuICB9XG5cbiAgcmVhZG9ubHkgQk9UVE9NX09GRlNFVCA9IDI0O1xuICByZWFkb25seSBMRUZUX1JJR0hUX09GRlNFVCA9IDQ4O1xuICByZWFkb25seSBUT1BfUEFERElORyA9IDE2O1xuICByZWFkb25seSBMRUZUX1JJR0hUX1BBRERJTkcgPSA4O1xuICByZWFkb25seSBCT1RUT01fUEFERElORyA9IDg7XG4gIHJlYWRvbmx5IFlfVElDS19DT1VOVCA9IDU7XG4gIHJlYWRvbmx5IFBPSU5UX1JBRElVUyA9IDMuNTtcblxuICByZWFkb25seSBkYXRlUmFuZ2UkID0gdGhpcy5pbnB1dCQucGlwZShcbiAgICBtYXAoZ2V0RGF0ZVJhbmdlKSxcbiAgICBzaGFyZVJlcGxheSh7IHJlZkNvdW50OiB0cnVlLCBidWZmZXJTaXplOiAxIH0pLFxuICApO1xuXG4gIHByaXZhdGUgcmVhZG9ubHkgaW50ZXJ2YWwkID0gbmV3IEJlaGF2aW9yU3ViamVjdDxJbnRlcnZhbD4oREVGQVVMVF9JTlRFUlZBTCk7XG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBzZXQgaW50ZXJ2YWwodjogSW50ZXJ2YWwpIHtcbiAgICB0aGlzLmludGVydmFsJC5uZXh0KHYpO1xuICB9XG4gIHB1YmxpYyBnZXQgaW50ZXJ2YWwoKSB7XG4gICAgcmV0dXJuIHRoaXMuaW50ZXJ2YWwkLmdldFZhbHVlKCk7XG4gIH1cblxuICBAVmlld0NoaWxkKCdjb250cm9scycpXG4gIHB1YmxpYyByZWFkb25seSBjb250cm9scz86IFRlbXBsYXRlUmVmPGFueT47XG5cbiAgcHJpdmF0ZSByZWFkb25seSBhbGxvd0xlZ2VuZFRvZ2dsZSQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PGJvb2xlYW4+KGZhbHNlKTtcbiAgQElucHV0KClcbiAgcHVibGljIHNldCBhbGxvd0xlZ2VuZFRvZ2dsZSh2OiBib29sZWFuKSB7XG4gICAgdGhpcy5hbGxvd0xlZ2VuZFRvZ2dsZSQubmV4dCh2KTtcbiAgfVxuICBwdWJsaWMgZ2V0IGFsbG93TGVnZW5kVG9nZ2xlKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLmFsbG93TGVnZW5kVG9nZ2xlJC5nZXRWYWx1ZSgpO1xuICB9XG5cbiAgcHJpdmF0ZSByZWFkb25seSBtYXhQb2ludHMkID0gY29tYmluZUxhdGVzdChbdGhpcy53aWR0aCQsIHRoaXMuaW5wdXQkXSkucGlwZShcbiAgICBtYXAoKFt3aWR0aCwgaW5wdXRdKSA9PiB7XG4gICAgICBjb25zdCBpbm5lcldpZHRoID0gd2lkdGggLSB0aGlzLkxFRlRfUklHSFRfT0ZGU0VUICogaW5wdXQubGVuZ3RoO1xuICAgICAgY29uc3QgcG9pbnRXaXRoUGFkZGluZyA9ICh0aGlzLlBPSU5UX1JBRElVUyArIDQpICogMjtcbiAgICAgIHJldHVybiBNYXRoLmZsb29yKGlubmVyV2lkdGggLyBwb2ludFdpdGhQYWRkaW5nKTtcbiAgICB9KSxcbiAgKTtcbiAgcHJpdmF0ZSByZWFkb25seSB4TWlub3JUaWNrTGltaXQkID0gY29tYmluZUxhdGVzdChbXG4gICAgdGhpcy53aWR0aCQsXG4gICAgdGhpcy5pbnB1dCQsXG4gIF0pLnBpcGUoXG4gICAgbWFwKChbd2lkdGgsIGlucHV0XSkgPT4ge1xuICAgICAgY29uc3QgaW5uZXJXaWR0aCA9IHdpZHRoIC0gdGhpcy5MRUZUX1JJR0hUX09GRlNFVCAqIGlucHV0Lmxlbmd0aDtcbiAgICAgIGNvbnN0IG1pblNpemVQZXJUaWNrID0gNDA7XG4gICAgICByZXR1cm4gTWF0aC5yb3VuZChpbm5lcldpZHRoIC8gbWluU2l6ZVBlclRpY2spO1xuICAgIH0pLFxuICApO1xuXG4gIHByaXZhdGUgcmVhZG9ubHkgYWxsb3dlZEludGVydmFscyQ6IE9ic2VydmFibGU8SW50ZXJ2YWxbXT4gPSBjb21iaW5lTGF0ZXN0KFtcbiAgICB0aGlzLmlucHV0JCxcbiAgICB0aGlzLm1heFBvaW50cyQsXG4gIF0pLnBpcGUoXG4gICAgbWFwKChbaW5wdXQsIG1heFBvaW50c10pID0+IHtcbiAgICAgIGNvbnN0IFttaW5EYXRlVmFsdWUsIG1heERhdGVWYWx1ZV0gPSBnZXREYXRlUmFuZ2UoaW5wdXQpO1xuXG4gICAgICByZXR1cm4gaW50ZXJ2YWxzLmZpbHRlcihpbnRlcnZhbCA9PiB7XG4gICAgICAgIGNvbnN0IHRpbWVJbnRlcnZhbCA9IGdldFRpbWVJbnRlcnZhbChpbnRlcnZhbCk7XG4gICAgICAgIGNvbnN0IG51bVN0ZXBzID0gdGltZUludGVydmFsLnJhbmdlKFxuICAgICAgICAgIHRpbWVJbnRlcnZhbC5mbG9vcihtaW5EYXRlVmFsdWUpLFxuICAgICAgICAgIHRpbWVJbnRlcnZhbC5jZWlsKHV0Y0RheS5vZmZzZXQobWF4RGF0ZVZhbHVlLCAxKSksXG4gICAgICAgICkubGVuZ3RoO1xuXG4gICAgICAgIHJldHVybiBudW1TdGVwcyA8PSBtYXhQb2ludHMgJiYgbnVtU3RlcHMgPiAxO1xuICAgICAgfSk7XG4gICAgfSksXG4gICAgc2hhcmVSZXBsYXkoeyByZWZDb3VudDogdHJ1ZSwgYnVmZmVyU2l6ZTogMSB9KSxcbiAgKTtcblxuICByZWFkb25seSBpbnRlcnZhbE9wdGlvbnMkID0gdGhpcy5hbGxvd2VkSW50ZXJ2YWxzJC5waXBlKFxuICAgIG1hcChpbnRlcnZhbHMgPT5cbiAgICAgIGludGVydmFscy5tYXAoXG4gICAgICAgIChpbnRlcnZhbCk6IFNpbmdsZVNlbGVjdENvbXBvbmVudC5PcHRpb24gPT4gKHtcbiAgICAgICAgICBpZDogaW50ZXJ2YWwsXG4gICAgICAgICAgdGl0bGU6IGdldEludGVydmFsVGl0bGUoaW50ZXJ2YWwpLFxuICAgICAgICB9KSxcbiAgICAgICksXG4gICAgKSxcbiAgICBzaGFyZVJlcGxheSh7IHJlZkNvdW50OiB0cnVlLCBidWZmZXJTaXplOiAxIH0pLFxuICApO1xuXG4gIHJlYWRvbmx5IHNlbGVjdGVkSW50ZXJ2YWxPcHRpb24kID0gY29tYmluZUxhdGVzdChbXG4gICAgdGhpcy5pbnRlcnZhbCQsXG4gICAgdGhpcy5pbnRlcnZhbE9wdGlvbnMkLFxuICBdKS5waXBlKFxuICAgIG1hcCgoW2ludGVydmFsLCBvcHRpb25zXSkgPT4ge1xuICAgICAgY29uc3QgYWxsb3dlZEludGVydmFscyA9IG9wdGlvbnMubWFwKCh7IGlkIH0pID0+IGlkIGFzIEludGVydmFsKTtcbiAgICAgIGlmICghYWxsb3dlZEludGVydmFscy5pbmNsdWRlcyhpbnRlcnZhbCkpIHtcbiAgICAgICAgY29uc3QgZmlyc3RBbGxvd2VkID0gYWxsb3dlZEludGVydmFscy5hdCgwKTtcbiAgICAgICAgY29uc3QgbGFzdEFsbG93ZWQgPSBhbGxvd2VkSW50ZXJ2YWxzLmF0KC0xKTtcbiAgICAgICAgaWYgKCFmaXJzdEFsbG93ZWQgfHwgIWxhc3RBbGxvd2VkKSByZXR1cm4gbnVsbDtcblxuICAgICAgICBpZiAoaW50ZXJ2YWxzLmluZGV4T2YoaW50ZXJ2YWwpIDwgaW50ZXJ2YWxzLmluZGV4T2YoZmlyc3RBbGxvd2VkKSlcbiAgICAgICAgICBpbnRlcnZhbCA9IGZpcnN0QWxsb3dlZDtcbiAgICAgICAgaWYgKGludGVydmFscy5pbmRleE9mKGludGVydmFsKSA+IGludGVydmFscy5pbmRleE9mKGxhc3RBbGxvd2VkKSlcbiAgICAgICAgICBpbnRlcnZhbCA9IGxhc3RBbGxvd2VkO1xuICAgICAgfVxuICAgICAgcmV0dXJuIG9wdGlvbnMuZmluZChvID0+IG8uaWQgPT09IGludGVydmFsKSA/PyBudWxsO1xuICAgIH0pLFxuICAgIHNoYXJlUmVwbGF5KHsgcmVmQ291bnQ6IHRydWUsIGJ1ZmZlclNpemU6IDEgfSksXG4gICk7XG5cbiAgcmVhZG9ubHkgc2VsZWN0ZWRJbnRlcnZhbCQgPSB0aGlzLnNlbGVjdGVkSW50ZXJ2YWxPcHRpb24kLnBpcGUoXG4gICAgbWFwKG9wdGlvbiA9PiAob3B0aW9uID8gKG9wdGlvbi5pZCBhcyBJbnRlcnZhbCkgOiBERUZBVUxUX0lOVEVSVkFMKSksXG4gICk7XG5cbiAgc2V0SW50ZXJ2YWxPcHRpb24ob3B0aW9uOiBTaW5nbGVTZWxlY3RDb21wb25lbnQuT3B0aW9uKSB7XG4gICAgdGhpcy5pbnRlcnZhbCA9IG9wdGlvbi5pZCBhcyBJbnRlcnZhbDtcbiAgfVxuXG4gIHJlYWRvbmx5IHRvZ2dsZVZpc2liaWxpdHkkID1cbiAgICBuZXcgQmVoYXZpb3JTdWJqZWN0PFRpbWVTZXJpZXNDb21wb25lbnQuVG9nZ2xlVmlzaWJpbGl0eSB8IG51bGw+KG51bGwpO1xuXG4gIHJlYWRvbmx5IGJpbm5lZERhdGEkID0gY29tYmluZUxhdGVzdChbXG4gICAgdGhpcy5pbnB1dCQsXG4gICAgdGhpcy5zZWxlY3RlZEludGVydmFsJCxcbiAgICB0aGlzLnRvZ2dsZVZpc2liaWxpdHkkLFxuICBdKS5waXBlKFxuICAgIG1hcCgoW2lucHV0LCBpbnRlcnZhbCwgdG9nZ2xlVmlzaWJpbGl0eV0pID0+XG4gICAgICBpbnB1dC5tYXAoKGNvbmZpZyk6IFRpbWVTZXJpZXNDb21wb25lbnQuWUNvbmZpZyA9PiB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgLi4uY29uZmlnLFxuICAgICAgICAgIHNlcmllczogY29uZmlnLnNlcmllcy5tYXAoKHNlcmllcywgaSkgPT4ge1xuICAgICAgICAgICAgY29uc3QgYmlubmVkID0gbmV3IE1hcDxudW1iZXIsIFRpbWVTZXJpZXNDb21wb25lbnQuRGF0YVBvaW50W10+KCk7XG4gICAgICAgICAgICBmb3IgKGNvbnN0IHBvaW50IG9mIHNlcmllcy5kYXRhKSB7XG4gICAgICAgICAgICAgIGNvbnN0IGJpbiA9IGdldFRpbWVJbnRlcnZhbChpbnRlcnZhbCkuZmxvb3IocG9pbnQuZGF0ZSkudmFsdWVPZigpO1xuICAgICAgICAgICAgICBpZiAoIWJpbm5lZC5oYXMoYmluKSkge1xuICAgICAgICAgICAgICAgIGJpbm5lZC5zZXQoYmluLCBbXSk7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgYmlubmVkLmdldChiaW4pIS5wdXNoKHBvaW50KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChcbiAgICAgICAgICAgICAgdGhpcy5hbGxvd0xlZ2VuZFRvZ2dsZSAmJlxuICAgICAgICAgICAgICB0b2dnbGVWaXNpYmlsaXR5ICYmXG4gICAgICAgICAgICAgIHNlcmllcy5sYWJlbCA9PT0gdG9nZ2xlVmlzaWJpbGl0eS5sYWJlbFxuICAgICAgICAgICAgKSB7XG4gICAgICAgICAgICAgIHNlcmllcy52aXNpYmlsaXR5ID0gdG9nZ2xlVmlzaWJpbGl0eS52aXNpYmlsaXR5O1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgLi4uc2VyaWVzLFxuICAgICAgICAgICAgICBkYXRhOiBbLi4uYmlubmVkLmVudHJpZXMoKV0ubWFwKChbZGF0ZVZhbHVlLCBwb2ludHNdKSA9PiAoe1xuICAgICAgICAgICAgICAgIGRhdGU6IG5ldyBEYXRlKGRhdGVWYWx1ZSksXG4gICAgICAgICAgICAgICAgdmFsdWU6IGNvbmZpZy5wb2ludFJlZHVjZXIocG9pbnRzLCBpKSxcbiAgICAgICAgICAgICAgfSkpLFxuICAgICAgICAgICAgfTtcbiAgICAgICAgICB9KSxcbiAgICAgICAgfTtcbiAgICAgIH0pLFxuICAgICksXG4gICAgc2hhcmVSZXBsYXkoeyByZWZDb3VudDogdHJ1ZSwgYnVmZmVyU2l6ZTogMSB9KSxcbiAgKTtcblxuICByZWFkb25seSBiaW5uZWREYXRlUmFuZ2UkID0gdGhpcy5iaW5uZWREYXRhJC5waXBlKFxuICAgIG1hcChnZXREYXRlUmFuZ2UpLFxuICAgIHNoYXJlUmVwbGF5KHsgcmVmQ291bnQ6IHRydWUsIGJ1ZmZlclNpemU6IDEgfSksXG4gICk7XG5cbiAgcmVhZG9ubHkgZHJhd0RhdGEkOiBPYnNlcnZhYmxlPERyYXdEYXRhPiA9IGNvbWJpbmVMYXRlc3QoW1xuICAgIHRoaXMuYmlubmVkRGF0YSQsXG4gICAgdGhpcy5iaW5uZWREYXRlUmFuZ2UkLFxuICAgIHRoaXMuc2VsZWN0ZWRJbnRlcnZhbCQsXG4gICAgdGhpcy53aWR0aCQsXG4gICAgdGhpcy54TWlub3JUaWNrTGltaXQkLFxuICBdKS5waXBlKFxuICAgIG1hcCgoW2Jpbm5lZERhdGEsIGJpbm5lZERhdGVSYW5nZSwgaW50ZXJ2YWwsIHdpZHRoLCB4TWlub3JUaWNrTGltaXRdKSA9PiB7XG4gICAgICBjb25zdCB2aWV3Qm94ID0gYDAgMCAke3dpZHRofSAke3RoaXMuSEVJR0hUfWA7XG5cbiAgICAgIGNvbnN0IHhTY2FsZVJhbmdlU3RhcnQgPSB0aGlzLkxFRlRfUklHSFRfUEFERElORyArIHRoaXMuTEVGVF9SSUdIVF9PRkZTRVQ7XG4gICAgICBjb25zdCB4U2NhbGVSYW5nZUVuZCA9XG4gICAgICAgIHdpZHRoIC1cbiAgICAgICAgdGhpcy5MRUZUX1JJR0hUX1BBRERJTkcgKiAyIC1cbiAgICAgICAgKGJpbm5lZERhdGEubGVuZ3RoID4gMSA/IHRoaXMuTEVGVF9SSUdIVF9PRkZTRVQgOiAwKTtcbiAgICAgIGNvbnN0IHhTY2FsZSA9IHNjYWxlTGluZWFyKClcbiAgICAgICAgLmRvbWFpbihiaW5uZWREYXRlUmFuZ2UpXG4gICAgICAgIC5yYW5nZShbeFNjYWxlUmFuZ2VTdGFydCwgeFNjYWxlUmFuZ2VFbmRdKTtcbiAgICAgIGNvbnN0IFttaW5EYXRlVmFsdWUsIG1heERhdGVWYWx1ZV0gPSBiaW5uZWREYXRlUmFuZ2U7XG4gICAgICBjb25zdCBoYXNNdWx0aXBsZVllYXJzID1cbiAgICAgICAgbWluRGF0ZVZhbHVlLmdldEZ1bGxZZWFyKCkgPCBtYXhEYXRlVmFsdWUuZ2V0RnVsbFllYXIoKTtcbiAgICAgIGNvbnN0IHhNaW5vckludGVydmFsRm9ybWF0ID0gZ2V0TWlub3JJbnRlcnZhbEZvcm1hdChpbnRlcnZhbCk7XG4gICAgICBjb25zdCBtaW5vckZvcm1hdHRlciA9IHV0Y0Zvcm1hdCh4TWlub3JJbnRlcnZhbEZvcm1hdCk7XG4gICAgICBjb25zdCB4TWlub3JUaWNrcyA9IGdldFRpbWVJbnRlcnZhbChpbnRlcnZhbClcbiAgICAgICAgLnJhbmdlKG1pbkRhdGVWYWx1ZSwgdXRjRGF5Lm9mZnNldChtYXhEYXRlVmFsdWUsIDEpKVxuICAgICAgICAubWFwKGRhdGUgPT4gKHtcbiAgICAgICAgICB2YWx1ZTogdXRjRGF5Lm9mZnNldChkYXRlLCAxKS52YWx1ZU9mKCksXG4gICAgICAgICAgbGFiZWw6IG1pbm9yRm9ybWF0dGVyKGRhdGUpLFxuICAgICAgICB9KSlcbiAgICAgICAgLmZpbHRlcigoXywgaSwgYXJyKSA9PlxuICAgICAgICAgIGFyci5sZW5ndGggPiB4TWlub3JUaWNrTGltaXRcbiAgICAgICAgICAgID8gaSAlIE1hdGguY2VpbChhcnIubGVuZ3RoIC8geE1pbm9yVGlja0xpbWl0KSA9PT0gMFxuICAgICAgICAgICAgOiB0cnVlLFxuICAgICAgICApO1xuICAgICAgY29uc3QgeE1ham9ySW50ZXJ2YWwgPSBnZXRNYWpvckludGVydmFsKGludGVydmFsKTtcbiAgICAgIGNvbnN0IHhNYWpvckludGVydmFsRm9ybWF0ID0gZ2V0TWFqb3JJbnRlcnZhbEZvcm1hdChcbiAgICAgICAgeE1ham9ySW50ZXJ2YWwsXG4gICAgICAgIGhhc011bHRpcGxlWWVhcnMsXG4gICAgICApO1xuICAgICAgY29uc3QgdGltZUludGVydmFsID0gZ2V0VGltZUludGVydmFsKHhNYWpvckludGVydmFsKTtcbiAgICAgIGNvbnN0IHRpY2tGbG9vciA9IHRpbWVJbnRlcnZhbC5mbG9vcihtaW5EYXRlVmFsdWUpO1xuICAgICAgY29uc3QgdGlja0NlaWxpbmcgPSB0aW1lSW50ZXJ2YWwuY2VpbCh1dGNEYXkub2Zmc2V0KG1heERhdGVWYWx1ZSwgMSkpO1xuICAgICAgY29uc3QgbWFqb3JGb3JtYXR0ZXIgPSB1dGNGb3JtYXQoeE1ham9ySW50ZXJ2YWxGb3JtYXQpO1xuICAgICAgY29uc3QgeE1ham9yVGlja3MgPSB0aW1lSW50ZXJ2YWxcbiAgICAgICAgLnJhbmdlKHRpY2tGbG9vciwgdGlja0NlaWxpbmcpXG4gICAgICAgIC5tYXAodGlja0RhdGUgPT4gKHtcbiAgICAgICAgICBsYWJlbDogeE1ham9ySW50ZXJ2YWwgPT09IGludGVydmFsID8gJycgOiBtYWpvckZvcm1hdHRlcih0aWNrRGF0ZSksXG4gICAgICAgICAgdmFsdWU6IHRpY2tEYXRlLnZhbHVlT2YoKSxcbiAgICAgICAgfSkpO1xuICAgICAgY29uc3QgeCA9IHsgeE1heDogbWF4RGF0ZVZhbHVlLCB4U2NhbGUsIHhNaW5vclRpY2tzLCB4TWFqb3JUaWNrcyB9O1xuXG4gICAgICBjb25zdCBbeTEsIHkyXSA9IGJpbm5lZERhdGEubWFwKGNvbmZpZyA9PiB7XG4gICAgICAgIGNvbnN0IHZpc2libGVTZXJpZXMgPSBjb25maWcuc2VyaWVzLmZpbHRlcihcbiAgICAgICAgICBzID0+IHMudmlzaWJpbGl0eSAhPT0gJ2hpZGRlbicsXG4gICAgICAgICk7XG4gICAgICAgIGNvbnN0IGZsYXR0ZW5lZFZhbHVlcyA9IHZpc2libGVTZXJpZXMucmVkdWNlPG51bWJlcltdPihcbiAgICAgICAgICAodmFsdWVzLCBzZXJpZXMpID0+IFtcbiAgICAgICAgICAgIC4uLnZhbHVlcyxcbiAgICAgICAgICAgIC4uLnNlcmllcy5kYXRhLm1hcCgoeyB2YWx1ZSB9KSA9PiB2YWx1ZSksXG4gICAgICAgICAgXSxcbiAgICAgICAgICBbXSxcbiAgICAgICAgKTtcbiAgICAgICAgbGV0IHlNYXggPSBjb25maWcubWF4ID8/IE1hdGgubWF4KC4uLmZsYXR0ZW5lZFZhbHVlcywgMCk7XG4gICAgICAgIGNvbnN0IHlNaW4gPSBjb25maWcubWluID8/IE1hdGgubWluKC4uLmZsYXR0ZW5lZFZhbHVlcywgMCk7XG4gICAgICAgIC8vIFJJVkVULTE0NjA1IC0gaWYgcmFuZ2UgaXMgWzAsMF0sIG1ha2UgaXQgWzAsMV0gaW5zdGVhZFxuICAgICAgICBpZiAoeU1heCA9PSAwICYmIHlNaW4gPT0gMCkge1xuICAgICAgICAgIHlNYXggPSAxO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IHlTY2FsZSA9IHNjYWxlTGluZWFyKClcbiAgICAgICAgICAuZG9tYWluKFt5TWluLCB5TWF4XSlcbiAgICAgICAgICAucmFuZ2UoW1xuICAgICAgICAgICAgdGhpcy5IRUlHSFQgLVxuICAgICAgICAgICAgICB0aGlzLkJPVFRPTV9PRkZTRVQgLVxuICAgICAgICAgICAgICAodGhpcy5CT1RUT01fUEFERElORyArIHRoaXMuVE9QX1BBRERJTkcpLFxuICAgICAgICAgICAgdGhpcy5UT1BfUEFERElORyxcbiAgICAgICAgICBdKTtcbiAgICAgICAgY29uc3QgeVRpY2tzID0geVNjYWxlLnRpY2tzKHRoaXMuWV9USUNLX0NPVU5UKTtcbiAgICAgICAgY29uc3Qgc2VyaWVzID0gY29uZmlnLnNlcmllcy5tYXAoc2VyaWVzID0+ICh7XG4gICAgICAgICAgLi4uc2VyaWVzLFxuICAgICAgICAgIHBhdGg6IGxpbmU8VGltZVNlcmllc0NvbXBvbmVudC5EYXRhUG9pbnQ+KClcbiAgICAgICAgICAgIC54KGQgPT4geFNjYWxlKGQuZGF0ZSkpXG4gICAgICAgICAgICAueShkID0+IHlTY2FsZShkLnZhbHVlKSkoc2VyaWVzLmRhdGEpLFxuICAgICAgICAgIHN0cm9rZTogYHZhcigke3Nlcmllcy5jb2xvclRva2VufSlgLFxuICAgICAgICAgIG1hcmtlcnM6IHNlcmllcy5kYXRhLm1hcChwb2ludCA9PiAoe1xuICAgICAgICAgICAgLi4ucG9pbnQsXG4gICAgICAgICAgICB4OiB4U2NhbGUocG9pbnQuZGF0ZSksXG4gICAgICAgICAgICB5OiB5U2NhbGUocG9pbnQudmFsdWUpLFxuICAgICAgICAgIH0pKSxcbiAgICAgICAgfSkpO1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgIC4uLmNvbmZpZyxcbiAgICAgICAgICBzZXJpZXMsXG4gICAgICAgICAgeU1heCxcbiAgICAgICAgICB5TWluLFxuICAgICAgICAgIHlTY2FsZSxcbiAgICAgICAgICB5VGlja3MsXG4gICAgICAgIH07XG4gICAgICB9KTtcblxuICAgICAgLy8gSWYgd2UgaGF2ZSBhIHkyLCBjb2VyY2UgeTEncyB0aWNrcyB0byBiZSB2aXN1YWxseSBlcXVpdmFsZW50IHRvIHkyJ3MgdGlja3MuXG4gICAgICBpZiAoeTI/LnlUaWNrcykge1xuICAgICAgICBjb25zdCB0aWNrQ29udmVyc2lvblNjYWxlID0gc2NhbGVMaW5lYXIoKVxuICAgICAgICAgIC5yYW5nZSh5MS55U2NhbGUuZG9tYWluKCkpXG4gICAgICAgICAgLmRvbWFpbih5Mi55U2NhbGUuZG9tYWluKCkpO1xuICAgICAgICB5MS55VGlja3MgPSB5Mi55VGlja3MubWFwKHRpY2tDb252ZXJzaW9uU2NhbGUpO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4geyB2aWV3Qm94LCB4LCB5MSwgeTIgfTtcbiAgICB9KSxcbiAgICBzaGFyZVJlcGxheSh7IHJlZkNvdW50OiB0cnVlLCBidWZmZXJTaXplOiAxIH0pLFxuICApO1xuXG4gIHJlYWRvbmx5IGxlZ2VuZCQgPSB0aGlzLmJpbm5lZERhdGEkLnBpcGUoXG4gICAgbWFwKGJpbm5lZERhdGEgPT5cbiAgICAgIGJpbm5lZERhdGEucmVkdWNlPFxuICAgICAgICB7XG4gICAgICAgICAgbGFiZWw6IHN0cmluZztcbiAgICAgICAgICBjb2xvclRva2VuOiBzdHJpbmc7XG4gICAgICAgICAgdmlzaWJpbGl0eTogJ3Zpc2libGUnIHwgJ2hpZGRlbic7XG4gICAgICAgIH1bXVxuICAgICAgPihcbiAgICAgICAgKGl0ZW1zLCBjb25maWcpID0+IFtcbiAgICAgICAgICAuLi5pdGVtcyxcbiAgICAgICAgICAuLi5jb25maWcuc2VyaWVzLm1hcChzZXJpZXMgPT4gKHtcbiAgICAgICAgICAgIGxhYmVsOiBzZXJpZXMubGFiZWwsXG4gICAgICAgICAgICBjb2xvclRva2VuOiBzZXJpZXMuY29sb3JUb2tlbixcbiAgICAgICAgICAgIHZpc2liaWxpdHk6IHNlcmllcy52aXNpYmlsaXR5ID8/ICd2aXNpYmxlJyxcbiAgICAgICAgICB9KSksXG4gICAgICAgIF0sXG4gICAgICAgIFtdLFxuICAgICAgKSxcbiAgICApLFxuICApO1xuXG4gIHJlYWRvbmx5IGVtcHR5JCA9IHRoaXMuYmlubmVkRGF0YSQucGlwZShcbiAgICBtYXAoYmlubmVkRGF0YSA9PlxuICAgICAgYmlubmVkRGF0YS5ldmVyeShjb25maWcgPT5cbiAgICAgICAgY29uZmlnLnNlcmllcy5ldmVyeShzZXJpZXMgPT4gc2VyaWVzLmRhdGEubGVuZ3RoID09PSAwKSxcbiAgICAgICksXG4gICAgKSxcbiAgICBzaGFyZVJlcGxheSh7IHJlZkNvdW50OiB0cnVlLCBidWZmZXJTaXplOiAxIH0pLFxuICApO1xuXG4gIHJlYWRvbmx5IGhvdmVyZWRNYXJrZXIkID0gbmV3IEJlaGF2aW9yU3ViamVjdDx7XG4gICAgZXZlbnQ6IE1vdXNlRXZlbnQ7XG4gICAgbWFya2VyOiBNYXJrZXI7XG4gIH0gfCBudWxsPihudWxsKTtcblxuICByZWFkb25seSBjYWxsb3V0JCA9IGNvbWJpbmVMYXRlc3QoW3RoaXMuaG92ZXJlZE1hcmtlciQsIHRoaXMuZHJhd0RhdGEkXSkucGlwZShcbiAgICBtYXAoKFtob3ZlcmVkTWFya2VyLCBkcmF3RGF0YV0pID0+IHtcbiAgICAgIGlmICghaG92ZXJlZE1hcmtlcikgcmV0dXJuIG51bGw7XG5cbiAgICAgIGNvbnN0IHsgdGFyZ2V0IH0gPSBob3ZlcmVkTWFya2VyLmV2ZW50O1xuICAgICAgaWYgKCF0YXJnZXQpIHJldHVybiBudWxsO1xuICAgICAgY29uc3QgbWFya2VyUmVjdCA9ICg8U1ZHQ2lyY2xlRWxlbWVudD50YXJnZXQpLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO1xuICAgICAgY29uc3QgcGFkZGluZyA9IDg7XG4gICAgICBjb25zdCBhbmNob3IgPSBuZXcgRE9NUmVjdChcbiAgICAgICAgbWFya2VyUmVjdC5sZWZ0IC0gcGFkZGluZyxcbiAgICAgICAgbWFya2VyUmVjdC50b3AgLSBwYWRkaW5nLFxuICAgICAgICBtYXJrZXJSZWN0LndpZHRoICsgcGFkZGluZyAqIDIsXG4gICAgICAgIG1hcmtlclJlY3QuaGVpZ2h0ICsgcGFkZGluZyAqIDIsXG4gICAgICApO1xuXG4gICAgICB0eXBlIE1ldHJpYyA9IHsgbGFiZWw6IHN0cmluZzsgdmFsdWU6IHN0cmluZyB9O1xuICAgICAgY29uc3QgbWV0cmljczogTWV0cmljW10gPSBbXTtcblxuICAgICAgZm9yIChjb25zdCBzZXJpZXMgb2YgZHJhd0RhdGEueTEuc2VyaWVzKSB7XG4gICAgICAgIGlmIChzZXJpZXMudmlzaWJpbGl0eSAhPT0gJ2hpZGRlbicpIHtcbiAgICAgICAgICBjb25zdCBtYXRjaCA9IHNlcmllcy5tYXJrZXJzLmZpbmQoXG4gICAgICAgICAgICBtYXJrZXIgPT4gbWFya2VyLnggPT09IGhvdmVyZWRNYXJrZXIubWFya2VyLngsXG4gICAgICAgICAgKTtcbiAgICAgICAgICBpZiAobWF0Y2gpIHtcbiAgICAgICAgICAgIG1ldHJpY3MucHVzaCh7XG4gICAgICAgICAgICAgIGxhYmVsOiBzZXJpZXMubGFiZWwsXG4gICAgICAgICAgICAgIHZhbHVlOiBkcmF3RGF0YS55MS52YWx1ZUZvcm1hdHRlcihtYXRjaC52YWx1ZSksXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgaWYgKGRyYXdEYXRhLnkyKSB7XG4gICAgICAgIGZvciAoY29uc3Qgc2VyaWVzIG9mIGRyYXdEYXRhLnkyLnNlcmllcykge1xuICAgICAgICAgIGlmIChzZXJpZXMudmlzaWJpbGl0eSAhPT0gJ2hpZGRlbicpIHtcbiAgICAgICAgICAgIGNvbnN0IG1hdGNoID0gc2VyaWVzLm1hcmtlcnMuZmluZChcbiAgICAgICAgICAgICAgbWFya2VyID0+IG1hcmtlci54ID09PSBob3ZlcmVkTWFya2VyLm1hcmtlci54LFxuICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIGlmIChtYXRjaCkge1xuICAgICAgICAgICAgICBtZXRyaWNzLnB1c2goe1xuICAgICAgICAgICAgICAgIGxhYmVsOiBzZXJpZXMubGFiZWwsXG4gICAgICAgICAgICAgICAgdmFsdWU6IGRyYXdEYXRhLnkyLnZhbHVlRm9ybWF0dGVyKG1hdGNoLnZhbHVlKSxcbiAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIHJldHVybiB7IGFuY2hvciwgbWV0cmljcyB9O1xuICAgIH0pLFxuICApO1xufVxuXG5leHBvcnQgbmFtZXNwYWNlIFRpbWVTZXJpZXNDb21wb25lbnQge1xuICBleHBvcnQgdHlwZSBTZXJpZXMgPSB7XG4gICAgbGFiZWw6IHN0cmluZztcbiAgICBjb2xvclRva2VuOiBzdHJpbmc7XG4gICAgZGF0YTogVGltZVNlcmllc0NvbXBvbmVudC5EYXRhUG9pbnRbXTtcbiAgICBzdHlsZT86ICdzb2xpZCcgfCAnZGFzaGVkJztcbiAgICB2aXNpYmlsaXR5PzogJ3Zpc2libGUnIHwgJ2hpZGRlbic7XG4gIH07XG5cbiAgZXhwb3J0IHR5cGUgRGF0YVBvaW50ID0ge1xuICAgIHZhbHVlOiBudW1iZXI7XG4gICAgZGF0ZTogRGF0ZTtcbiAgfTtcblxuICBleHBvcnQgdHlwZSBZQ29uZmlnID0ge1xuICAgIHBvaW50UmVkdWNlcjogKHBvaW50czogRGF0YVBvaW50W10sIHNlcmllc0luZGV4OiBudW1iZXIpID0+IG51bWJlcjtcbiAgICB2YWx1ZUZvcm1hdHRlcjogKHJlZHVjZWRWYWx1ZTogbnVtYmVyKSA9PiBzdHJpbmc7XG4gICAgc2VyaWVzOiBTZXJpZXNbXTtcbiAgICBtaW4/OiBudW1iZXI7XG4gICAgbWF4PzogbnVtYmVyO1xuICB9O1xuXG4gIGV4cG9ydCB0eXBlIFRpbWVTZXJpZXNJbnB1dCA9IFtZQ29uZmlnXSB8IFtZQ29uZmlnLCBZQ29uZmlnXTtcblxuICBleHBvcnQgdHlwZSBUb2dnbGVWaXNpYmlsaXR5ID0ge1xuICAgIGxhYmVsOiBzdHJpbmc7XG4gICAgdmlzaWJpbGl0eTogJ2hpZGRlbicgfCAndmlzaWJsZSc7XG4gIH07XG59XG4iLCI8ZGl2XG4gICpuZ0lmPVwiIShlbXB0eSQgfCBhc3luYyk7IGVsc2UgemVyb1N0YXRlXCJcbiAgY2xhc3M9XCJjb250YWluZXJcIlxuICAocml2Q2xpZW50U2l6ZSk9XCJ3aWR0aCA9ICRldmVudC53aWR0aFwiXG4+XG4gIDxzdmdcbiAgICB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCJcbiAgICAqbmdJZj1cImRyYXdEYXRhJCB8IGFzeW5jOyBsZXQgZFwiXG4gICAgW2F0dHIudmlld0JveF09XCJkLnZpZXdCb3hcIlxuICA+XG4gICAgPGcgKm5nRm9yPVwibGV0IHRpY2sgb2YgZC54LnhNYWpvclRpY2tzXCI+XG4gICAgICA8cmVjdFxuICAgICAgICBjbGFzcz1cInRpY2tcIlxuICAgICAgICBbYXR0ci54XT1cImQueC54U2NhbGUodGljay52YWx1ZSlcIlxuICAgICAgICB5PVwiMFwiXG4gICAgICAgIHdpZHRoPVwiMVwiXG4gICAgICAgIFthdHRyLmhlaWdodF09XCJkLnkxLnlTY2FsZShkLnkxLnlNaW4pICsgQk9UVE9NX09GRlNFVFwiXG4gICAgICA+PC9yZWN0PlxuICAgICAgPHRleHRcbiAgICAgICAgKm5nSWY9XCJkLngueFNjYWxlKHRpY2sudmFsdWUpID49IDBcIlxuICAgICAgICBjbGFzcz1cIngtbWFqb3ItdGljay1sYWJlbFwiXG4gICAgICAgIFthdHRyLnhdPVwiZC54LnhTY2FsZSh0aWNrLnZhbHVlKVwiXG4gICAgICAgIFthdHRyLnldPVwiSEVJR0hUIC0gQk9UVE9NX09GRlNFVFwiXG4gICAgICAgIGR4PVwiNFwiXG4gICAgICAgIGR5PVwiLTRcIlxuICAgICAgPlxuICAgICAgICB7eyB0aWNrLmxhYmVsIH19XG4gICAgICA8L3RleHQ+XG4gICAgPC9nPlxuICAgIDxnICpuZ0Zvcj1cImxldCB0aWNrIG9mIGQueC54TWlub3JUaWNrc1wiPlxuICAgICAgPHRleHRcbiAgICAgICAgY2xhc3M9XCJ4LW1pbm9yLXRpY2stbGFiZWxcIlxuICAgICAgICBbYXR0ci54XT1cImQueC54U2NhbGUodGljay52YWx1ZSlcIlxuICAgICAgICBbYXR0ci55XT1cIkhFSUdIVCAtIEJPVFRPTV9PRkZTRVRcIlxuICAgICAgICB0ZXh0LWFuY2hvcj1cIm1pZGRsZVwiXG4gICAgICAgIGRvbWluYW50LWJhc2VsaW5lPVwiaGFuZ2luZ1wiXG4gICAgICAgIGR5PVwiOFwiXG4gICAgICA+XG4gICAgICAgIHt7IHRpY2subGFiZWwgfX1cbiAgICAgICAgPHRpdGxlPnt7IHRpY2sudmFsdWUgfCBkYXRlIH19PC90aXRsZT5cbiAgICAgIDwvdGV4dD5cbiAgICA8L2c+XG4gICAgPGcgKm5nRm9yPVwibGV0IHRpY2sgb2YgZC55MS55VGlja3NcIj5cbiAgICAgIDxyZWN0XG4gICAgICAgIGNsYXNzPVwidGlja1wiXG4gICAgICAgIHg9XCIwXCJcbiAgICAgICAgW2F0dHIueV09XCJkLnkxLnlTY2FsZSh0aWNrKVwiXG4gICAgICAgIHdpZHRoPVwiMTAwJVwiXG4gICAgICAgIGhlaWdodD1cIjFcIlxuICAgICAgPjwvcmVjdD5cbiAgICAgIDx0ZXh0IGNsYXNzPVwieS10aWNrLWxhYmVsXCIgeD1cIjBcIiBbYXR0ci55XT1cImQueTEueVNjYWxlKHRpY2spXCIgZHk9XCItNFwiPlxuICAgICAgICB7eyBkLnkxLnZhbHVlRm9ybWF0dGVyKHRpY2spIH19XG4gICAgICA8L3RleHQ+XG4gICAgPC9nPlxuXG4gICAgPGcgKm5nRm9yPVwibGV0IHRpY2sgb2YgZC55Mj8ueVRpY2tzXCI+XG4gICAgICA8dGV4dFxuICAgICAgICBjbGFzcz1cInktdGljay1sYWJlbFwiXG4gICAgICAgIFthdHRyLnhdPVwid2lkdGhcIlxuICAgICAgICBbYXR0ci55XT1cImQueTI/LnlTY2FsZSh0aWNrKVwiXG4gICAgICAgIHRleHQtYW5jaG9yPVwiZW5kXCJcbiAgICAgICAgZHk9XCItNFwiXG4gICAgICA+XG4gICAgICAgIHt7IGQueTI/LnZhbHVlRm9ybWF0dGVyKHRpY2spIH19XG4gICAgICA8L3RleHQ+XG4gICAgPC9nPlxuXG4gICAgPGcgKm5nSWY9XCJob3ZlcmVkTWFya2VyJCB8IGFzeW5jOyBsZXQgaG92ZXJlZE1hcmtlclwiPlxuICAgICAgPGxpbmVcbiAgICAgICAgY2xhc3M9XCJob3Zlci1ydWxlXCJcbiAgICAgICAgW2F0dHIueDFdPVwiaG92ZXJlZE1hcmtlci5tYXJrZXIueFwiXG4gICAgICAgIFthdHRyLnkxXT1cImQueTEueVNjYWxlKGQueTEueU1pbilcIlxuICAgICAgICBbYXR0ci54Ml09XCJob3ZlcmVkTWFya2VyLm1hcmtlci54XCJcbiAgICAgICAgW2F0dHIueTJdPVwiZC55MS55U2NhbGUoZC55MS55TWF4KVwiXG4gICAgICAgIHN0cm9rZS13aWR0aD1cIjJcIlxuICAgICAgICBzdHJva2UtZGFzaGFycmF5PVwiNFwiXG4gICAgICAvPlxuICAgIDwvZz5cblxuICAgIDxuZy10ZW1wbGF0ZSAjc2VyaWVzVHBsIGxldC1zZXJpZXM9XCJzZXJpZXNcIj5cbiAgICAgIDxwYXRoXG4gICAgICAgICpuZ0lmPVwic2VyaWVzLnZpc2liaWxpdHkgIT0gJ2hpZGRlbidcIlxuICAgICAgICBjbGFzcz1cImRhdGEgcGF0aFwiXG4gICAgICAgIFtjbGFzcy5tYXJrZXItaG92ZXJlZF09XCIhIShob3ZlcmVkTWFya2VyJCB8IGFzeW5jKVwiXG4gICAgICAgIFthdHRyLmRdPVwic2VyaWVzLnBhdGhcIlxuICAgICAgICBmaWxsPVwibm9uZVwiXG4gICAgICAgIHN0cm9rZS13aWR0aD1cIjJcIlxuICAgICAgICBbYXR0ci5zdHJva2VdPVwic2VyaWVzLnN0cm9rZVwiXG4gICAgICAgIFthdHRyLnN0cm9rZS1kYXNoYXJyYXldPVwic2VyaWVzLnN0eWxlID09PSAnZGFzaGVkJyA/ICc0JyA6IG51bGxcIlxuICAgICAgPjwvcGF0aD5cbiAgICAgIDxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IG1hcmtlciBvZiBzZXJpZXMubWFya2Vyc1wiPlxuICAgICAgICA8Y2lyY2xlXG4gICAgICAgICAgKm5nSWY9XCJzZXJpZXMudmlzaWJpbGl0eSAhPSAnaGlkZGVuJ1wiXG4gICAgICAgICAgY2xhc3M9XCJkYXRhIG1hcmtlclwiXG4gICAgICAgICAgW2NsYXNzLmZvY3VzZWRdPVwiKGhvdmVyZWRNYXJrZXIkIHwgYXN5bmMpPy5tYXJrZXI/LnggPT09IG1hcmtlci54XCJcbiAgICAgICAgICBbY2xhc3MuYmx1cnJlZF09XCJcbiAgICAgICAgICAgIChob3ZlcmVkTWFya2VyJCB8IGFzeW5jKSAhPT0gbnVsbCAmJlxuICAgICAgICAgICAgKGhvdmVyZWRNYXJrZXIkIHwgYXN5bmMpPy5tYXJrZXI/LnggIT09IG1hcmtlci54XG4gICAgICAgICAgXCJcbiAgICAgICAgICBbYXR0ci5jeF09XCJtYXJrZXIueFwiXG4gICAgICAgICAgW2F0dHIuY3ldPVwibWFya2VyLnlcIlxuICAgICAgICAgIFthdHRyLnJdPVwiUE9JTlRfUkFESVVTXCJcbiAgICAgICAgICBzdHJva2Utd2lkdGg9XCIyXCJcbiAgICAgICAgICBbYXR0ci5zdHJva2VdPVwic2VyaWVzLnN0cm9rZVwiXG4gICAgICAgICAgKG1vdXNlb3Zlcik9XCJob3ZlcmVkTWFya2VyJC5uZXh0KHsgZXZlbnQ6ICRldmVudCwgbWFya2VyOiBtYXJrZXIgfSlcIlxuICAgICAgICAgIChtb3VzZWxlYXZlKT1cImhvdmVyZWRNYXJrZXIkLm5leHQobnVsbClcIlxuICAgICAgICA+PC9jaXJjbGU+XG4gICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICA8L25nLXRlbXBsYXRlPlxuICAgIDxnICpuZ0Zvcj1cImxldCBzZXJpZXMgb2YgZC55MS5zZXJpZXNcIj5cbiAgICAgIDxuZy1jb250YWluZXJcbiAgICAgICAgKm5nVGVtcGxhdGVPdXRsZXQ9XCJzZXJpZXNUcGw7IGNvbnRleHQ6IHsgc2VyaWVzOiBzZXJpZXMgfVwiXG4gICAgICA+PC9uZy1jb250YWluZXI+XG4gICAgPC9nPlxuICAgIDxnICpuZ0Zvcj1cImxldCBzZXJpZXMgb2YgZC55Mj8uc2VyaWVzXCI+XG4gICAgICA8bmctY29udGFpbmVyXG4gICAgICAgICpuZ1RlbXBsYXRlT3V0bGV0PVwic2VyaWVzVHBsOyBjb250ZXh0OiB7IHNlcmllczogc2VyaWVzIH1cIlxuICAgICAgPjwvbmctY29udGFpbmVyPlxuICAgIDwvZz5cbiAgPC9zdmc+XG4gIDxsZWdlbmQ+XG4gICAgPHJpdi1sZWdlbmQtaXRlbVxuICAgICAgKm5nRm9yPVwibGV0IGl0ZW0gb2YgbGVnZW5kJCB8IGFzeW5jXCJcbiAgICAgIFtsYWJlbF09XCJpdGVtLmxhYmVsXCJcbiAgICAgIFtjb2xvclRva2VuXT1cIml0ZW0uY29sb3JUb2tlblwiXG4gICAgICBbdmlzaWJpbGl0eV09XCJpdGVtLnZpc2liaWxpdHlcIlxuICAgICAgW2NsaWNrYWJsZV09XCJhbGxvd0xlZ2VuZFRvZ2dsZVwiXG4gICAgICAoaXRlbUNsaWNrKT1cIlxuICAgICAgICBhbGxvd0xlZ2VuZFRvZ2dsZVxuICAgICAgICAgID8gdG9nZ2xlVmlzaWJpbGl0eSQubmV4dCh7XG4gICAgICAgICAgICAgIGxhYmVsOiBpdGVtLmxhYmVsLFxuICAgICAgICAgICAgICB2aXNpYmlsaXR5OiBpdGVtLnZpc2liaWxpdHkgPT0gJ2hpZGRlbicgPyAndmlzaWJsZScgOiAnaGlkZGVuJ1xuICAgICAgICAgICAgfSlcbiAgICAgICAgICA6IG51bGxcbiAgICAgIFwiXG4gICAgPjwvcml2LWxlZ2VuZC1pdGVtPlxuICA8L2xlZ2VuZD5cbjwvZGl2PlxuXG48bmctY29udGFpbmVyICpuZ0lmPVwiY2FsbG91dCQgfCBhc3luYzsgbGV0IGNhbGxvdXRcIj5cbiAgPHJpdi1jYWxsb3V0XG4gICAgKnJpdi1jYWxsb3V0XG4gICAgW2FuY2hvcl09XCJjYWxsb3V0LmFuY2hvclwiXG4gICAgW2lzTW9kYWxdPVwiZmFsc2VcIlxuICAgIFtwcmVmZXJyZWRQb3NpdGlvbl09XCIndG9wLWNlbnRlcidcIlxuICA+XG4gICAgPGRpdiBjbGFzcz1cImNhbGxvdXQtY29udGVudFwiPlxuICAgICAgPGRpdiBjbGFzcz1cImNhbGxvdXQtbWV0cmljXCIgKm5nRm9yPVwibGV0IG1ldHJpYyBvZiBjYWxsb3V0Lm1ldHJpY3NcIj5cbiAgICAgICAgPGRpdj57eyBtZXRyaWMubGFiZWwgfX08L2Rpdj5cbiAgICAgICAgPGRpdiBjbGFzcz1cImNhbGxvdXQtbWV0cmljLXZhbHVlXCI+e3sgbWV0cmljLnZhbHVlIH19PC9kaXY+XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbiAgPC9yaXYtY2FsbG91dD5cbjwvbmctY29udGFpbmVyPlxuXG48bmctdGVtcGxhdGUgI3plcm9TdGF0ZT5cbiAgPHJpdi16ZXJvLXN0YXRlIFttZXNzYWdlXT1cInplcm9TdGF0ZU1lc3NhZ2VcIj48L3Jpdi16ZXJvLXN0YXRlPlxuPC9uZy10ZW1wbGF0ZT5cblxuPG5nLXRlbXBsYXRlICNjb250cm9scz5cbiAgPHJpdi1zaW5nbGUtc2VsZWN0XG4gICAgW2dyb3Vwc109XCJpbnRlcnZhbE9wdGlvbnMkIHwgYXN5bmMgfCByaXZPcHRpb25Hcm91cFwiXG4gICAgW3NlbGVjdGVkT3B0aW9uXT1cInNlbGVjdGVkSW50ZXJ2YWxPcHRpb24kIHwgYXN5bmNcIlxuICAgIChzZWxlY3RlZE9wdGlvbkNoYW5nZSk9XCJzZXRJbnRlcnZhbE9wdGlvbigkZXZlbnQpXCJcbiAgPjwvcml2LXNpbmdsZS1zZWxlY3Q+XG48L25nLXRlbXBsYXRlPlxuIl19
|
|
@@ -2433,10 +2433,10 @@ class MetricComponent {
|
|
|
2433
2433
|
}
|
|
2434
2434
|
}
|
|
2435
2435
|
MetricComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: MetricComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
2436
|
-
MetricComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.3.0", type: MetricComponent, selector: "riv-metric", inputs: { label: "label", value: "value", size: "size", card: "card", help: "help", align: "align", valueColorToken: "valueColorToken" },
|
|
2436
|
+
MetricComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.3.0", type: MetricComponent, selector: "riv-metric", inputs: { label: "label", value: "value", size: "size", card: "card", help: "help", align: "align", valueColorToken: "valueColorToken" }, host: { properties: { "class.card": "this.card" } }, ngImport: i0, template: "<div class=\"label\" [ngClass]=\"align\">\n {{ label }}\n <span *ngIf=\"help\"\n ><riv-icon [rivTooltip]=\"help\" [name]=\"'Info'\" [size]=\"12\"></riv-icon>\n </span>\n</div>\n<div class=\"content\" [ngClass]=\"align\">\n <div class=\"value\" [ngClass]=\"size\" [style.color]=\"valueColor\">\n {{ value }}\n </div>\n <ng-content></ng-content>\n</div>\n", styles: [":host.card{border-radius:var(--size-xsmall);border:var(--border-width) solid var(--border-light-blend);padding:var(--size-xlarge);display:block}.label{font-size:var(--type-1-font-size);line-height:var(--type-1-line-height-0);color:var(--type-light-low-contrast);margin-bottom:var(--size-xsmall)}.value.xsmall{font:var(--stat-xsmall)}.value.small{font:var(--stat-small)}.value.medium{font:var(--stat-medium)}.value.large{font:var(--stat-large)}.content{display:flex;align-items:flex-end;gap:var(--size-small)}.right{text-align:end;justify-content:flex-end}\n"], dependencies: [{ kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: IconComponent, selector: "riv-icon", inputs: ["name", "size", "customSize", "strokeWidth"] }, { kind: "directive", type: TooltipDirective, selector: "[rivTooltip]", inputs: ["rivTooltip", "rivTooltipTheme", "rivTooltipMaxWidth", "rivTooltipPreferredPosition", "rivTooltipCloseDelay"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
2437
2437
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: MetricComponent, decorators: [{
|
|
2438
2438
|
type: Component,
|
|
2439
|
-
args: [{ selector: 'riv-metric', changeDetection: ChangeDetectionStrategy.OnPush, template: "<div
|
|
2439
|
+
args: [{ selector: 'riv-metric', changeDetection: ChangeDetectionStrategy.OnPush, template: "<div class=\"label\" [ngClass]=\"align\">\n {{ label }}\n <span *ngIf=\"help\"\n ><riv-icon [rivTooltip]=\"help\" [name]=\"'Info'\" [size]=\"12\"></riv-icon>\n </span>\n</div>\n<div class=\"content\" [ngClass]=\"align\">\n <div class=\"value\" [ngClass]=\"size\" [style.color]=\"valueColor\">\n {{ value }}\n </div>\n <ng-content></ng-content>\n</div>\n", styles: [":host.card{border-radius:var(--size-xsmall);border:var(--border-width) solid var(--border-light-blend);padding:var(--size-xlarge);display:block}.label{font-size:var(--type-1-font-size);line-height:var(--type-1-line-height-0);color:var(--type-light-low-contrast);margin-bottom:var(--size-xsmall)}.value.xsmall{font:var(--stat-xsmall)}.value.small{font:var(--stat-small)}.value.medium{font:var(--stat-medium)}.value.large{font:var(--stat-large)}.content{display:flex;align-items:flex-end;gap:var(--size-small)}.right{text-align:end;justify-content:flex-end}\n"] }]
|
|
2440
2440
|
}], propDecorators: { label: [{
|
|
2441
2441
|
type: Input
|
|
2442
2442
|
}], value: [{
|
|
@@ -2445,6 +2445,9 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImpor
|
|
|
2445
2445
|
type: Input
|
|
2446
2446
|
}], card: [{
|
|
2447
2447
|
type: Input
|
|
2448
|
+
}, {
|
|
2449
|
+
type: HostBinding,
|
|
2450
|
+
args: ['class.card']
|
|
2448
2451
|
}], help: [{
|
|
2449
2452
|
type: Input
|
|
2450
2453
|
}], align: [{
|
|
@@ -3505,7 +3508,7 @@ class TimeSeriesComponent {
|
|
|
3505
3508
|
const xMinorTicks = getTimeInterval(interval)
|
|
3506
3509
|
.range(minDateValue, utcDay.offset(maxDateValue, 1))
|
|
3507
3510
|
.map(date => ({
|
|
3508
|
-
value: date.valueOf(),
|
|
3511
|
+
value: utcDay.offset(date, 1).valueOf(),
|
|
3509
3512
|
label: minorFormatter(date),
|
|
3510
3513
|
}))
|
|
3511
3514
|
.filter((_, i, arr) => arr.length > xMinorTickLimit
|