@dsivd/prestations-ng 15.0.0-rc4 → 15.0.0
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 +34 -1
- package/UPGRADING_V15.md +62 -1
- package/dsivd-prestations-ng-v15.0.0.tgz +0 -0
- package/esm2020/foehn-agenda/foehn-agenda-navigation/foehn-agenda-navigation.component.mjs +7 -3
- package/esm2020/foehn-agenda/foehn-agenda-timeslot-panel/foehn-agenda-timeslot-panel.component.mjs +8 -4
- package/esm2020/foehn-agenda/foehn-agenda.component.mjs +8 -4
- package/esm2020/foehn-autocomplete/foehn-autocomplete.component.mjs +8 -3
- package/esm2020/foehn-checkables/foehn-checkable-group.component.mjs +2 -1
- package/esm2020/foehn-checkables/foehn-checkbox.component.mjs +3 -3
- package/esm2020/foehn-checkables/foehn-radio.component.mjs +3 -3
- package/esm2020/foehn-checkables/foehn-select.component.mjs +3 -3
- package/esm2020/foehn-date-picker/date-picker-navigation.helper.mjs +69 -19
- package/esm2020/foehn-date-picker/date-picker.helper.mjs +7 -1
- package/esm2020/foehn-date-picker/foehn-date-picker.component.mjs +98 -10
- package/esm2020/foehn-date-picker-button/foehn-date-picker-button.component.mjs +31 -4
- package/esm2020/foehn-input/foehn-input.module.mjs +8 -4
- package/esm2020/foehn-input-date/foehn-input-date.component.mjs +33 -6
- package/esm2020/foehn-status-progress-bar/foehn-status-progress-bar.component.mjs +20 -5
- package/esm2020/sdk-dictionary/default-dictionary.mjs +4 -3
- package/esm2020/sdk-session-info/session-info.service.mjs +5 -6
- package/fesm2015/dsivd-prestations-ng.mjs +3554 -3321
- package/fesm2015/dsivd-prestations-ng.mjs.map +1 -1
- package/fesm2020/dsivd-prestations-ng.mjs +3556 -3323
- package/fesm2020/dsivd-prestations-ng.mjs.map +1 -1
- package/foehn-agenda/foehn-agenda-navigation/foehn-agenda-navigation.component.d.ts +3 -1
- package/foehn-agenda/foehn-agenda-timeslot-panel/foehn-agenda-timeslot-panel.component.d.ts +1 -0
- package/foehn-agenda/foehn-agenda.component.d.ts +3 -1
- package/foehn-autocomplete/foehn-autocomplete.component.d.ts +1 -0
- package/foehn-date-picker/date-picker-navigation.helper.d.ts +6 -0
- package/foehn-date-picker/date-picker.helper.d.ts +1 -0
- package/foehn-date-picker/foehn-date-picker.component.d.ts +14 -3
- package/foehn-date-picker-button/foehn-date-picker-button.component.d.ts +11 -3
- package/foehn-input/foehn-input.module.d.ts +2 -1
- package/foehn-input-date/foehn-input-date.component.d.ts +9 -2
- package/foehn-status-progress-bar/foehn-status-progress-bar.component.d.ts +7 -3
- package/package.json +1 -1
- package/sdk-session-info/session-info.service.d.ts +2 -2
- package/dsivd-prestations-ng-v15.0.0-rc4.tgz +0 -0
package/CHANGELOG.md
CHANGED
|
@@ -42,8 +42,20 @@ A change is considered **breaking** if you have to change your code or update yo
|
|
|
42
42
|
- Model `pagination-week.type.ts` ([PaginationWeek](projects/prestations-ng/src/foehn-agenda/pagination-week.type.ts))
|
|
43
43
|
- `@Input() calendar: Observable<Calendar>`
|
|
44
44
|
- `@Input() nbVisibleElements: number` default number of visible elements is 22
|
|
45
|
+
- `@Input() minDate: number[]` used as minDate in datePicker
|
|
46
|
+
- `@Input() maxDate: number[]` used as maxDate in datePicker
|
|
45
47
|
- `@Output() paginationChange: EventEmitter<PaginationWeek>()`
|
|
46
48
|
|
|
49
|
+
- Add [foehn-status-progress-bar.component.spec.ts](projects/prestations-ng/src/foehn-status-progress-bar/foehn-status-progress-bar.component.spec.ts)
|
|
50
|
+
|
|
51
|
+
- [foehn-input-date.component.html](projects/prestations-ng/src/foehn-input-date/foehn-input-date.component.html)
|
|
52
|
+
- Added `<foehn-date-picker-button>` directly into template. Please refer to the [datepicker documentation](https://dsi-vd.github.io/prestations-ng/datepicker)
|
|
53
|
+
|
|
54
|
+
### Updated
|
|
55
|
+
|
|
56
|
+
- [foehn-status-progress-bar.component.ts](projects/prestations-ng/src/foehn-status-progress-bar/foehn-status-progress-bar.component.ts)
|
|
57
|
+
- Bugfix: no visual glitch on the first page (step 2 "Verification" was briefly displayed when starting)
|
|
58
|
+
|
|
47
59
|
- [foehn-confirm-modal.component.html](projects/prestations-ng/src/foehn-confirm-modal/foehn-confirm-modal.component.html)
|
|
48
60
|
- Add closeable on FoehnConfirmModalContent. Default value is true. If false, modal has to be closed by the yes and no buttons.
|
|
49
61
|
|
|
@@ -55,7 +67,10 @@ A change is considered **breaking** if you have to change your code or update yo
|
|
|
55
67
|
- [place-of-origin.ts](projects/prestations-ng/src/refinf/model/place-of-origin.ts)
|
|
56
68
|
- [postal-locality.ts](projects/prestations-ng/src/refinf/model/postal-locality.ts)
|
|
57
69
|
|
|
58
|
-
|
|
70
|
+
- [foehn-date-picker.component.ts](projects/prestations-ng/src/foehn-date-picker/foehn-date-picker.component.ts)
|
|
71
|
+
- [foehn-date-picker-button.component.ts](projects/prestations-ng/src/foehn-date-picker-button/foehn-date-picker-button.component.ts)
|
|
72
|
+
- added `@Input() minDate: number[]` - minDate's year will override minYear setting
|
|
73
|
+
- added `@Input() maxDate: number[]` - maxDate's year will override maxYear setting
|
|
59
74
|
|
|
60
75
|
- [package.json](package.json)
|
|
61
76
|
- Updated angular stack to ^13.1.0
|
|
@@ -80,10 +95,28 @@ A change is considered **breaking** if you have to change your code or update yo
|
|
|
80
95
|
- Street : `estrid`
|
|
81
96
|
- Locality : `postalLocalityHistoryId`, `zipCodeId`
|
|
82
97
|
|
|
98
|
+
- [foehn-date-picker.component.html](projects/prestations-ng/src/foehn-date-picker/foehn-date-picker.component.html)
|
|
99
|
+
- added unique ids
|
|
100
|
+
|
|
101
|
+
- [foehn-checkable-group.component.ts](projects/prestations-ng/src/foehn-checkables/foehn-checkable-group.component.ts)
|
|
102
|
+
- set default value for `autocomplete` to `off`
|
|
103
|
+
|
|
104
|
+
- [foehn-input-date.component.ts](projects/prestations-ng/src/foehn-input-date/foehn-input-date.component.ts)
|
|
105
|
+
- Added `@Input() hideDatePickerButton: boolean` (default: false). Set to `true` to hide `foehn-date-picker-button`
|
|
106
|
+
|
|
83
107
|
### Removed
|
|
84
108
|
- [session-info-data.ts](projects/prestations-ng/src/sdk-session-info/session-info-data.ts)
|
|
85
109
|
- removed field `email` since this is the security e-mail that should not be used by prestations (`preferences.email` is the one that is allowed)]
|
|
86
110
|
|
|
111
|
+
- [foehn-page.component.html](projects/prestations-ng/src/foehn-page/foehn-page.component.html)
|
|
112
|
+
- removed `@Input() neverConnected`, if you needed this feature, you have to inject the value as a provider :
|
|
113
|
+
```json
|
|
114
|
+
providers: [{ provide: 'neverConnected', useValue: true },]
|
|
115
|
+
```
|
|
116
|
+
|
|
117
|
+
- [foehn-input-date.component.html](projects/prestations-ng/src/foehn-input-date/foehn-input-date.component.html)
|
|
118
|
+
- Removed `<ng-content select="[date-picker-button]">` from template. Please refer to the [UPGRADING_V15](UPGRADING_V15.md)
|
|
119
|
+
|
|
87
120
|
## [14.5.25]
|
|
88
121
|
|
|
89
122
|
### Updated
|
package/UPGRADING_V15.md
CHANGED
|
@@ -42,7 +42,8 @@ ng update \
|
|
|
42
42
|
@types/jasmine \
|
|
43
43
|
@types/node@15 \
|
|
44
44
|
ts-node@10
|
|
45
|
-
ng update ngx-image-cropper
|
|
45
|
+
ng update ngx-image-cropper@~6.0.0
|
|
46
|
+
ng update ng-http-loader@11
|
|
46
47
|
# Remove your resolutions in package.json before executing 'yarn upgrade'
|
|
47
48
|
yarn upgrade
|
|
48
49
|
```
|
|
@@ -50,3 +51,63 @@ yarn upgrade
|
|
|
50
51
|
## Migrating to ESLint
|
|
51
52
|
|
|
52
53
|
- Follow [our migration guide](ESLINT_MIGRATION_GUIDE.md) to migrate your project from TSLint to ESLint
|
|
54
|
+
|
|
55
|
+
## Deprecated features
|
|
56
|
+
|
|
57
|
+
### foehn-input-date component
|
|
58
|
+
|
|
59
|
+
Added `<foehn-date-picker-button>` directly into template. Please refer to the [datepicker documentation](https://dsi-vd.github.io/prestations-ng/datepicker)
|
|
60
|
+
|
|
61
|
+
- removed
|
|
62
|
+
```html
|
|
63
|
+
<ng-content select="[date-picker-button]"></ng-content>
|
|
64
|
+
```
|
|
65
|
+
- replaced by
|
|
66
|
+
```html
|
|
67
|
+
<foehn-date-picker-button></foehn-date-picker-button>
|
|
68
|
+
```
|
|
69
|
+
which is visible by default. To hide it, set `hideDatePickerButton` to `true` as a `foehn-input-date` attribute. See example below for more information.
|
|
70
|
+
|
|
71
|
+
#### Migration step by step:
|
|
72
|
+
|
|
73
|
+
##### Case 1: When using `foehn-input-date` with `foehn-date-picker-button`:
|
|
74
|
+
Before :
|
|
75
|
+
```html
|
|
76
|
+
<foehn-input-date
|
|
77
|
+
label="Date"
|
|
78
|
+
[(model)]="yourModel"
|
|
79
|
+
>
|
|
80
|
+
<foehn-date-picker-button
|
|
81
|
+
date-picker-button
|
|
82
|
+
[(model)]="yourModel"
|
|
83
|
+
[displaySelectedDate]="false"
|
|
84
|
+
class="align-self-center"
|
|
85
|
+
></foehn-date-picker-button>
|
|
86
|
+
</foehn-input-date>
|
|
87
|
+
```
|
|
88
|
+
|
|
89
|
+
After :
|
|
90
|
+
```html
|
|
91
|
+
<foehn-input-date
|
|
92
|
+
label="Date"
|
|
93
|
+
[(model)]="yourModel"
|
|
94
|
+
></foehn-input-date>
|
|
95
|
+
```
|
|
96
|
+
|
|
97
|
+
##### Case 2: When using `foehn-input-date` without `foehn-date-picker-button`:
|
|
98
|
+
Before :
|
|
99
|
+
```html
|
|
100
|
+
<foehn-input-date
|
|
101
|
+
label="Date"
|
|
102
|
+
[(model)]="yourModel"
|
|
103
|
+
></foehn-input-date>
|
|
104
|
+
```
|
|
105
|
+
|
|
106
|
+
After :
|
|
107
|
+
```html
|
|
108
|
+
<foehn-input-date
|
|
109
|
+
label="Date"
|
|
110
|
+
[(model)]="yourModel"
|
|
111
|
+
[hideDatePickerButton]="true"
|
|
112
|
+
></foehn-input-date>
|
|
113
|
+
```
|
|
Binary file
|
|
@@ -54,17 +54,21 @@ export class FoehnAgendaNavigationComponent {
|
|
|
54
54
|
}
|
|
55
55
|
}
|
|
56
56
|
FoehnAgendaNavigationComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.1.3", ngImport: i0, type: FoehnAgendaNavigationComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
57
|
-
FoehnAgendaNavigationComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.1.3", type: FoehnAgendaNavigationComponent, selector: "foehn-agenda-navigation", inputs: { id: "id", calendar: "calendar", isSrOnly: "isSrOnly" }, outputs: { paginationChange: "paginationChange" }, usesOnChanges: true, ngImport: i0, template: "<div class=\"row mb-3\" *ngIf=\"!!calendar\">\n <div class=\"col-12\">\n <nav\n class=\"vd-pagination calendar-week-navigation\"\n [attr.id]=\"id\"\n [attr.aria-label]=\"\n 'foehn-agenda-navigation.nav.aria-label' | fromDictionary\n \"\n >\n <ul class=\"vd-pagination__list\">\n <li\n class=\"vd-pagination__item vd-pagination__item--previous col-4\"\n *ngIf=\"!!calendar.previousWeek\"\n >\n <button\n [id]=\"id + 'ButtonPreviousWeek'\"\n class=\"btn-link vd-pagination__link vd-pagination__link-reset\"\n (click)=\"paginate(calendar.previousWeek)\"\n type=\"button\"\n >\n <
|
|
57
|
+
FoehnAgendaNavigationComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.1.3", type: FoehnAgendaNavigationComponent, selector: "foehn-agenda-navigation", inputs: { id: "id", calendar: "calendar", isSrOnly: "isSrOnly", minDate: "minDate", maxDate: "maxDate" }, outputs: { paginationChange: "paginationChange" }, usesOnChanges: true, ngImport: i0, template: "<div class=\"row mb-3\" *ngIf=\"!!calendar\">\n <div class=\"col-12\">\n <nav\n class=\"vd-pagination calendar-week-navigation\"\n [attr.id]=\"id\"\n [attr.aria-label]=\"\n 'foehn-agenda-navigation.nav.aria-label' | fromDictionary\n \"\n >\n <ul class=\"vd-pagination__list\">\n <li\n class=\"vd-pagination__item vd-pagination__item--previous col-4\"\n *ngIf=\"!!calendar.previousWeek\"\n >\n <button\n [id]=\"id + 'ButtonPreviousWeek'\"\n class=\"btn-link vd-pagination__link vd-pagination__link-reset\"\n (click)=\"paginate(calendar.previousWeek)\"\n type=\"button\"\n >\n <span class=\"d-flex align-items-center\">\n <foehn-icon-chevron-left\n class=\"vd-pagination__title\"\n [title]=\"\n 'foehn-agenda-navigation.previous-week'\n | fromDictionary\n \"\n aria-hidden=\"true\"\n ></foehn-icon-chevron-left>\n <span\n class=\"vd-pagination__title ml-2 d-xs-none d-sm-block\"\n aria-hidden=\"true\"\n >\n {{\n 'foehn-agenda-navigation.previous-week'\n | fromDictionary\n }}\n </span>\n <span\n [id]=\"id + 'NavigationPreviousSrOnly'\"\n class=\"sr-only\"\n >\n {{\n 'foehn-agenda-navigation.previous-week-sr-only'\n | fromDictionary\n : {\n previousWeek:\n calendar.previousWeek\n .label\n }\n }}\n </span>\n </span>\n </button>\n </li>\n <li\n class=\"vd-pagination__item vd-pagination__item--previous col-4\"\n *ngIf=\"!calendar.previousWeek && !isSrOnly\"\n >\n <div\n [id]=\"id + 'NavigationPreviousDisabled'\"\n class=\"d-flex align-items-center link-week-disabled\"\n >\n <foehn-icon-chevron-left\n class=\"vd-pagination__title\"\n [title]=\"\n 'foehn-agenda-navigation.previous-week'\n | fromDictionary\n \"\n ></foehn-icon-chevron-left>\n <span\n class=\"vd-pagination__title ml-2 d-xs-none d-sm-block\"\n >\n {{\n 'foehn-agenda-navigation.previous-week'\n | fromDictionary\n }}\n </span>\n </div>\n </li>\n\n <li\n class=\"vd-pagination__item d-flex justify-content-center col-4\"\n *ngIf=\"!isSrOnly\"\n >\n <foehn-date-picker-button\n [model]=\"currentDay\"\n [minDate]=\"minDate\"\n [maxDate]=\"maxDate\"\n [selectedDateSrOnlyLabelKey]=\"\n 'foehn-agenda-navigation.date-picker-button.screen-reader.selected-date'\n \"\n (userInput)=\"datePickerUserInput($event)\"\n ></foehn-date-picker-button>\n </li>\n\n <li\n class=\"vd-pagination__item vd-pagination__item--next col-4 d-flex justify-content-end\"\n *ngIf=\"!!calendar.nextWeek\"\n >\n <button\n [id]=\"id + 'ButtonNextWeek'\"\n class=\"btn-link vd-pagination__link vd-pagination__link-reset\"\n (click)=\"paginate(calendar.nextWeek)\"\n type=\"button\"\n >\n <span class=\"d-flex align-items-center\">\n <span\n aria-hidden=\"true\"\n class=\"vd-pagination__title d-xs-none d-sm-block\"\n >\n {{\n 'foehn-agenda-navigation.next-week'\n | fromDictionary\n }}\n </span>\n <span\n [id]=\"id + 'NavigationNextSrOnly'\"\n class=\"sr-only\"\n >\n {{\n 'foehn-agenda-navigation.next-week-sr-only'\n | fromDictionary\n : {\n nextWeek:\n calendar.nextWeek.label\n }\n }}\n </span>\n <foehn-icon-chevron-right\n class=\"vd-pagination__title ml-2\"\n [title]=\"\n 'foehn-agenda-navigation.next-week'\n | fromDictionary\n \"\n aria-hidden=\"true\"\n ></foehn-icon-chevron-right>\n </span>\n </button>\n </li>\n <li\n class=\"vd-pagination__item vd-pagination__item--next col-4 d-flex justify-content-end\"\n *ngIf=\"!calendar.nextWeek && !isSrOnly\"\n >\n <div\n [id]=\"id + 'NavigationNextDisabled'\"\n class=\"d-flex align-items-center link-week-disabled\"\n >\n <span class=\"vd-pagination__title d-xs-none d-sm-block\">\n {{\n 'foehn-agenda-navigation.next-week'\n | fromDictionary\n }}\n </span>\n <foehn-icon-chevron-right\n class=\"vd-pagination__title ml-2\"\n [title]=\"\n 'foehn-agenda-navigation.next-week'\n | fromDictionary\n \"\n ></foehn-icon-chevron-right>\n </div>\n </li>\n </ul>\n </nav>\n </div>\n</div>\n", styles: [".calendar-week-navigation{margin-bottom:0}.calendar-week-navigation li.vd-pagination__item{margin-top:0}.calendar-week-navigation span.vd-pagination__title{font-size:1em;line-height:1.2em;color:var(--gray-dark)}.calendar-week-navigation foehn-icon-chevron-right.vd-pagination__title,.calendar-week-navigation foehn-icon-chevron-left.vd-pagination__title{font-size:1.5em;color:var(--gray-dark)}.calendar-week-navigation .link-week-disabled .vd-pagination__title{color:#c3d1dc;cursor:not-allowed}.calendar-week-navigation .vd-pagination__link-reset{background:none;border:none;font-weight:inherit;-webkit-text-decoration-line:none;text-decoration-line:none;text-align:inherit;cursor:pointer}.calendar-week-navigation .vd-pagination__link-reset:focus{background-color:var(--focus)}nav ul{margin-bottom:0}\n"], components: [{ type: i1.FoehnIconChevronLeftComponent, selector: "foehn-icon-chevron-left" }, { type: i2.FoehnDatePickerButtonComponent, selector: "foehn-date-picker-button", inputs: ["id", "name", "minYear", "maxYear", "minDate", "maxDate", "displaySelectedDate", "selectedDateSrOnlyLabelKey", "model"], outputs: ["modelChange", "userInput"] }, { type: i3.FoehnIconChevronRightComponent, selector: "foehn-icon-chevron-right" }], directives: [{ type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }], pipes: { "fromDictionary": i5.SdkDictionaryPipe } });
|
|
58
58
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.1.3", ngImport: i0, type: FoehnAgendaNavigationComponent, decorators: [{
|
|
59
59
|
type: Component,
|
|
60
|
-
args: [{ selector: 'foehn-agenda-navigation', template: "<div class=\"row mb-3\" *ngIf=\"!!calendar\">\n <div class=\"col-12\">\n <nav\n class=\"vd-pagination calendar-week-navigation\"\n [attr.id]=\"id\"\n [attr.aria-label]=\"\n 'foehn-agenda-navigation.nav.aria-label' | fromDictionary\n \"\n >\n <ul class=\"vd-pagination__list\">\n <li\n class=\"vd-pagination__item vd-pagination__item--previous col-4\"\n *ngIf=\"!!calendar.previousWeek\"\n >\n <button\n [id]=\"id + 'ButtonPreviousWeek'\"\n class=\"btn-link vd-pagination__link vd-pagination__link-reset\"\n (click)=\"paginate(calendar.previousWeek)\"\n type=\"button\"\n >\n <
|
|
60
|
+
args: [{ selector: 'foehn-agenda-navigation', template: "<div class=\"row mb-3\" *ngIf=\"!!calendar\">\n <div class=\"col-12\">\n <nav\n class=\"vd-pagination calendar-week-navigation\"\n [attr.id]=\"id\"\n [attr.aria-label]=\"\n 'foehn-agenda-navigation.nav.aria-label' | fromDictionary\n \"\n >\n <ul class=\"vd-pagination__list\">\n <li\n class=\"vd-pagination__item vd-pagination__item--previous col-4\"\n *ngIf=\"!!calendar.previousWeek\"\n >\n <button\n [id]=\"id + 'ButtonPreviousWeek'\"\n class=\"btn-link vd-pagination__link vd-pagination__link-reset\"\n (click)=\"paginate(calendar.previousWeek)\"\n type=\"button\"\n >\n <span class=\"d-flex align-items-center\">\n <foehn-icon-chevron-left\n class=\"vd-pagination__title\"\n [title]=\"\n 'foehn-agenda-navigation.previous-week'\n | fromDictionary\n \"\n aria-hidden=\"true\"\n ></foehn-icon-chevron-left>\n <span\n class=\"vd-pagination__title ml-2 d-xs-none d-sm-block\"\n aria-hidden=\"true\"\n >\n {{\n 'foehn-agenda-navigation.previous-week'\n | fromDictionary\n }}\n </span>\n <span\n [id]=\"id + 'NavigationPreviousSrOnly'\"\n class=\"sr-only\"\n >\n {{\n 'foehn-agenda-navigation.previous-week-sr-only'\n | fromDictionary\n : {\n previousWeek:\n calendar.previousWeek\n .label\n }\n }}\n </span>\n </span>\n </button>\n </li>\n <li\n class=\"vd-pagination__item vd-pagination__item--previous col-4\"\n *ngIf=\"!calendar.previousWeek && !isSrOnly\"\n >\n <div\n [id]=\"id + 'NavigationPreviousDisabled'\"\n class=\"d-flex align-items-center link-week-disabled\"\n >\n <foehn-icon-chevron-left\n class=\"vd-pagination__title\"\n [title]=\"\n 'foehn-agenda-navigation.previous-week'\n | fromDictionary\n \"\n ></foehn-icon-chevron-left>\n <span\n class=\"vd-pagination__title ml-2 d-xs-none d-sm-block\"\n >\n {{\n 'foehn-agenda-navigation.previous-week'\n | fromDictionary\n }}\n </span>\n </div>\n </li>\n\n <li\n class=\"vd-pagination__item d-flex justify-content-center col-4\"\n *ngIf=\"!isSrOnly\"\n >\n <foehn-date-picker-button\n [model]=\"currentDay\"\n [minDate]=\"minDate\"\n [maxDate]=\"maxDate\"\n [selectedDateSrOnlyLabelKey]=\"\n 'foehn-agenda-navigation.date-picker-button.screen-reader.selected-date'\n \"\n (userInput)=\"datePickerUserInput($event)\"\n ></foehn-date-picker-button>\n </li>\n\n <li\n class=\"vd-pagination__item vd-pagination__item--next col-4 d-flex justify-content-end\"\n *ngIf=\"!!calendar.nextWeek\"\n >\n <button\n [id]=\"id + 'ButtonNextWeek'\"\n class=\"btn-link vd-pagination__link vd-pagination__link-reset\"\n (click)=\"paginate(calendar.nextWeek)\"\n type=\"button\"\n >\n <span class=\"d-flex align-items-center\">\n <span\n aria-hidden=\"true\"\n class=\"vd-pagination__title d-xs-none d-sm-block\"\n >\n {{\n 'foehn-agenda-navigation.next-week'\n | fromDictionary\n }}\n </span>\n <span\n [id]=\"id + 'NavigationNextSrOnly'\"\n class=\"sr-only\"\n >\n {{\n 'foehn-agenda-navigation.next-week-sr-only'\n | fromDictionary\n : {\n nextWeek:\n calendar.nextWeek.label\n }\n }}\n </span>\n <foehn-icon-chevron-right\n class=\"vd-pagination__title ml-2\"\n [title]=\"\n 'foehn-agenda-navigation.next-week'\n | fromDictionary\n \"\n aria-hidden=\"true\"\n ></foehn-icon-chevron-right>\n </span>\n </button>\n </li>\n <li\n class=\"vd-pagination__item vd-pagination__item--next col-4 d-flex justify-content-end\"\n *ngIf=\"!calendar.nextWeek && !isSrOnly\"\n >\n <div\n [id]=\"id + 'NavigationNextDisabled'\"\n class=\"d-flex align-items-center link-week-disabled\"\n >\n <span class=\"vd-pagination__title d-xs-none d-sm-block\">\n {{\n 'foehn-agenda-navigation.next-week'\n | fromDictionary\n }}\n </span>\n <foehn-icon-chevron-right\n class=\"vd-pagination__title ml-2\"\n [title]=\"\n 'foehn-agenda-navigation.next-week'\n | fromDictionary\n \"\n ></foehn-icon-chevron-right>\n </div>\n </li>\n </ul>\n </nav>\n </div>\n</div>\n", styles: [".calendar-week-navigation{margin-bottom:0}.calendar-week-navigation li.vd-pagination__item{margin-top:0}.calendar-week-navigation span.vd-pagination__title{font-size:1em;line-height:1.2em;color:var(--gray-dark)}.calendar-week-navigation foehn-icon-chevron-right.vd-pagination__title,.calendar-week-navigation foehn-icon-chevron-left.vd-pagination__title{font-size:1.5em;color:var(--gray-dark)}.calendar-week-navigation .link-week-disabled .vd-pagination__title{color:#c3d1dc;cursor:not-allowed}.calendar-week-navigation .vd-pagination__link-reset{background:none;border:none;font-weight:inherit;-webkit-text-decoration-line:none;text-decoration-line:none;text-align:inherit;cursor:pointer}.calendar-week-navigation .vd-pagination__link-reset:focus{background-color:var(--focus)}nav ul{margin-bottom:0}\n"] }]
|
|
61
61
|
}], propDecorators: { id: [{
|
|
62
62
|
type: Input
|
|
63
63
|
}], calendar: [{
|
|
64
64
|
type: Input
|
|
65
65
|
}], isSrOnly: [{
|
|
66
66
|
type: Input
|
|
67
|
+
}], minDate: [{
|
|
68
|
+
type: Input
|
|
69
|
+
}], maxDate: [{
|
|
70
|
+
type: Input
|
|
67
71
|
}], paginationChange: [{
|
|
68
72
|
type: Output
|
|
69
73
|
}] } });
|
|
70
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9laG4tYWdlbmRhLW5hdmlnYXRpb24uY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvcHJlc3RhdGlvbnMtbmcvc3JjL2ZvZWhuLWFnZW5kYS9mb2Vobi1hZ2VuZGEtbmF2aWdhdGlvbi9mb2Vobi1hZ2VuZGEtbmF2aWdhdGlvbi5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9wcmVzdGF0aW9ucy1uZy9zcmMvZm9laG4tYWdlbmRhL2ZvZWhuLWFnZW5kYS1uYXZpZ2F0aW9uL2ZvZWhuLWFnZW5kYS1uYXZpZ2F0aW9uLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDSCxTQUFTLEVBQ1QsWUFBWSxFQUNaLEtBQUssRUFFTCxNQUFNLEVBR1QsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxLQUFLLE1BQU0sT0FBTyxDQUFDO0FBQzFCLE9BQU8sVUFBVSxNQUFNLHlCQUF5QixDQUFDOzs7Ozs7O0FBSWpELEtBQUssQ0FBQyxNQUFNLENBQUMsVUFBVSxDQUFDLENBQUM7QUFPekIsTUFBTSxPQUFPLDhCQUE4QjtJQUwzQztRQWFJLGFBQVEsR0FBRyxLQUFLLENBQUM7UUFHakIscUJBQWdCLEdBQUcsSUFBSSxZQUFZLEVBQWtCLENBQUM7UUFJOUMsNkJBQXdCLEdBQUcsSUFBSSxDQUFDO0tBOEMzQztJQTVDVyxNQUFNLENBQUMscUJBQXFCO1FBQ2hDLE1BQU0sR0FBRyxHQUFHLEtBQUssRUFBRSxDQUFDO1FBQ3BCLE9BQU8sQ0FBQyxHQUFHLENBQUMsSUFBSSxFQUFFLEVBQUUsR0FBRyxDQUFDLEtBQUssRUFBRSxHQUFHLENBQUMsRUFBRSxHQUFHLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQztJQUNyRCxDQUFDO0lBRUQsV0FBVyxDQUFDLE9BQXNCO1FBQzlCLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxPQUFPLENBQUMsUUFBUSxDQUFDLENBQUM7SUFDNUMsQ0FBQztJQUVELFFBQVEsQ0FBQyxjQUE4QjtRQUNuQyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxDQUFDO0lBQy9DLENBQUM7SUFFRCxtQkFBbUIsQ0FBQyxZQUFzQjtRQUN0QyxJQUFJLENBQUMsd0JBQXdCLEdBQUcsS0FBSyxDQUFDO1FBQ3RDLE1BQU0sWUFBWSxHQUFHLEdBQUcsWUFBWSxDQUFDLENBQUMsQ0FBQyxJQUFJLFlBQVksQ0FBQyxDQUFDLENBQUMsSUFBSSxZQUFZLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQztRQUNoRixNQUFNLGFBQWEsR0FBRyxLQUFLLENBQUMsWUFBWSxDQUFDLENBQUM7UUFDMUMsTUFBTSxVQUFVLEdBQUcsYUFBYSxDQUFDLElBQUksRUFBRSxDQUFDO1FBQ3hDLE1BQU0sY0FBYyxHQUFtQjtZQUNuQyxLQUFLLEVBQUUsSUFBSTtZQUNYLFVBQVUsRUFBRSxVQUFVO1lBQ3RCLElBQUksRUFBRSxhQUFhLENBQUMsSUFBSSxFQUFFO1NBQzdCLENBQUM7UUFDRixJQUFJLENBQUMsZ0JBQWdCLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxDQUFDO0lBQy9DLENBQUM7SUFFTyxnQkFBZ0IsQ0FBQyxNQUFvQjtRQUN6QyxJQUFJLE1BQU0sRUFBRTtZQUNSLE1BQU0sUUFBUSxHQUFHLE1BQU0sQ0FBQyxZQUFZLENBQUM7WUFDckMsSUFBSSxDQUFDLElBQUksQ0FBQyx3QkFBd0IsRUFBRTtnQkFDaEMsSUFBSSxDQUFDLHdCQUF3QixHQUFHLElBQUksQ0FBQztnQkFDckMsT0FBTzthQUNWO1lBQ0QsSUFDSSxDQUFDLFFBQVE7Z0JBQ1QsQ0FBQyxRQUFRLENBQUMsV0FBVyxDQUFDLElBQUk7Z0JBQzFCLENBQUMsUUFBUSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsTUFBTSxFQUNuQztnQkFDRSxJQUFJLENBQUMsVUFBVSxHQUFHLDhCQUE4QixDQUFDLHFCQUFxQixFQUFFLENBQUM7Z0JBQ3pFLE9BQU87YUFDVjtZQUNELElBQUksQ0FBQyxVQUFVLEdBQUcsUUFBUSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDO1NBQ3ZEO0lBQ0wsQ0FBQzs7MkhBNURRLDhCQUE4QjsrR0FBOUIsOEJBQThCLHlNQ3JCM0MsODlPQWtLQTsyRkQ3SWEsOEJBQThCO2tCQUwxQyxTQUFTOytCQUNJLHlCQUF5Qjs4QkFNbkMsRUFBRTtzQkFERCxLQUFLO2dCQUlOLFFBQVE7c0JBRFAsS0FBSztnQkFJTixRQUFRO3NCQURQLEtBQUs7Z0JBSU4sZ0JBQWdCO3NCQURmLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICAgIENvbXBvbmVudCxcbiAgICBFdmVudEVtaXR0ZXIsXG4gICAgSW5wdXQsXG4gICAgT25DaGFuZ2VzLFxuICAgIE91dHB1dCxcbiAgICBTaW1wbGVDaGFuZ2UsXG4gICAgU2ltcGxlQ2hhbmdlc1xufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCBkYXlqcyBmcm9tICdkYXlqcyc7XG5pbXBvcnQgd2Vla09mWWVhciBmcm9tICdkYXlqcy9wbHVnaW4vd2Vla09mWWVhcic7XG5pbXBvcnQgeyBDYWxlbmRhciB9IGZyb20gJy4uL2NhbGVuZGFyLnR5cGUnO1xuaW1wb3J0IHsgUGFnaW5hdGlvbldlZWsgfSBmcm9tICcuLi9wYWdpbmF0aW9uLXdlZWsudHlwZSc7XG5cbmRheWpzLmV4dGVuZCh3ZWVrT2ZZZWFyKTtcblxuQENvbXBvbmVudCh7XG4gICAgc2VsZWN0b3I6ICdmb2Vobi1hZ2VuZGEtbmF2aWdhdGlvbicsXG4gICAgdGVtcGxhdGVVcmw6ICcuL2ZvZWhuLWFnZW5kYS1uYXZpZ2F0aW9uLmNvbXBvbmVudC5odG1sJyxcbiAgICBzdHlsZVVybHM6IFsnLi9mb2Vobi1hZ2VuZGEtbmF2aWdhdGlvbi5jb21wb25lbnQuY3NzJ11cbn0pXG5leHBvcnQgY2xhc3MgRm9laG5BZ2VuZGFOYXZpZ2F0aW9uQ29tcG9uZW50IGltcGxlbWVudHMgT25DaGFuZ2VzIHtcbiAgICBASW5wdXQoKVxuICAgIGlkOiBzdHJpbmc7XG5cbiAgICBASW5wdXQoKVxuICAgIGNhbGVuZGFyOiBDYWxlbmRhcjtcblxuICAgIEBJbnB1dCgpXG4gICAgaXNTck9ubHkgPSBmYWxzZTtcblxuICAgIEBPdXRwdXQoKVxuICAgIHBhZ2luYXRpb25DaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyPFBhZ2luYXRpb25XZWVrPigpO1xuXG4gICAgY3VycmVudERheTogbnVtYmVyW107XG5cbiAgICBwcml2YXRlIG92ZXJyaWRlV2l0aENhbGVuZGFyRGF0ZSA9IHRydWU7XG5cbiAgICBwcml2YXRlIHN0YXRpYyBnZXRDdXJyZW50RGF0ZUFzQXJyYXkoKTogbnVtYmVyW10ge1xuICAgICAgICBjb25zdCBub3cgPSBkYXlqcygpO1xuICAgICAgICByZXR1cm4gW25vdy55ZWFyKCksIG5vdy5tb250aCgpICsgMSwgbm93LmRhdGUoKV07XG4gICAgfVxuXG4gICAgbmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcyk6IHZvaWQge1xuICAgICAgICB0aGlzLm9uQ2FsZW5kYXJDaGFuZ2UoY2hhbmdlcy5jYWxlbmRhcik7XG4gICAgfVxuXG4gICAgcGFnaW5hdGUocGFnaW5hdGlvbldlZWs6IFBhZ2luYXRpb25XZWVrKTogdm9pZCB7XG4gICAgICAgIHRoaXMucGFnaW5hdGlvbkNoYW5nZS5uZXh0KHBhZ2luYXRpb25XZWVrKTtcbiAgICB9XG5cbiAgICBkYXRlUGlja2VyVXNlcklucHV0KHNlbGVjdGVkRGF0ZTogbnVtYmVyW10pOiB2b2lkIHtcbiAgICAgICAgdGhpcy5vdmVycmlkZVdpdGhDYWxlbmRhckRhdGUgPSBmYWxzZTtcbiAgICAgICAgY29uc3QgZGF0ZUFzU3RyaW5nID0gYCR7c2VsZWN0ZWREYXRlWzBdfS0ke3NlbGVjdGVkRGF0ZVsxXX0tJHtzZWxlY3RlZERhdGVbMl19YDtcbiAgICAgICAgY29uc3Qgc2VsZWN0ZWREYXlqcyA9IGRheWpzKGRhdGVBc1N0cmluZyk7XG4gICAgICAgIGNvbnN0IG51bWJlcldlZWsgPSBzZWxlY3RlZERheWpzLndlZWsoKTtcbiAgICAgICAgY29uc3QgcGFnaW5hdGlvbldlZWs6IFBhZ2luYXRpb25XZWVrID0ge1xuICAgICAgICAgICAgbGFiZWw6IG51bGwsXG4gICAgICAgICAgICB3ZWVrTnVtYmVyOiBudW1iZXJXZWVrLFxuICAgICAgICAgICAgeWVhcjogc2VsZWN0ZWREYXlqcy55ZWFyKClcbiAgICAgICAgfTtcbiAgICAgICAgdGhpcy5wYWdpbmF0aW9uQ2hhbmdlLm5leHQocGFnaW5hdGlvbldlZWspO1xuICAgIH1cblxuICAgIHByaXZhdGUgb25DYWxlbmRhckNoYW5nZShjaGFuZ2U6IFNpbXBsZUNoYW5nZSk6IHZvaWQge1xuICAgICAgICBpZiAoY2hhbmdlKSB7XG4gICAgICAgICAgICBjb25zdCBjYWxlbmRhciA9IGNoYW5nZS5jdXJyZW50VmFsdWU7XG4gICAgICAgICAgICBpZiAoIXRoaXMub3ZlcnJpZGVXaXRoQ2FsZW5kYXJEYXRlKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5vdmVycmlkZVdpdGhDYWxlbmRhckRhdGUgPSB0cnVlO1xuICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChcbiAgICAgICAgICAgICAgICAhY2FsZW5kYXIgfHxcbiAgICAgICAgICAgICAgICAhY2FsZW5kYXIuY3VycmVudFdlZWsud2VlayB8fFxuICAgICAgICAgICAgICAgICFjYWxlbmRhci5jdXJyZW50V2Vlay53ZWVrLmxlbmd0aFxuICAgICAgICAgICAgKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5jdXJyZW50RGF5ID0gRm9laG5BZ2VuZGFOYXZpZ2F0aW9uQ29tcG9uZW50LmdldEN1cnJlbnREYXRlQXNBcnJheSgpO1xuICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHRoaXMuY3VycmVudERheSA9IGNhbGVuZGFyLmN1cnJlbnRXZWVrLndlZWtbMF0uZGF0ZTtcbiAgICAgICAgfVxuICAgIH1cbn1cbiIsIjxkaXYgY2xhc3M9XCJyb3cgbWItM1wiICpuZ0lmPVwiISFjYWxlbmRhclwiPlxuICAgIDxkaXYgY2xhc3M9XCJjb2wtMTJcIj5cbiAgICAgICAgPG5hdlxuICAgICAgICAgICAgY2xhc3M9XCJ2ZC1wYWdpbmF0aW9uIGNhbGVuZGFyLXdlZWstbmF2aWdhdGlvblwiXG4gICAgICAgICAgICBbYXR0ci5pZF09XCJpZFwiXG4gICAgICAgICAgICBbYXR0ci5hcmlhLWxhYmVsXT1cIlxuICAgICAgICAgICAgICAgICdmb2Vobi1hZ2VuZGEtbmF2aWdhdGlvbi5uYXYuYXJpYS1sYWJlbCcgfCBmcm9tRGljdGlvbmFyeVxuICAgICAgICAgICAgXCJcbiAgICAgICAgPlxuICAgICAgICAgICAgPHVsIGNsYXNzPVwidmQtcGFnaW5hdGlvbl9fbGlzdFwiPlxuICAgICAgICAgICAgICAgIDxsaVxuICAgICAgICAgICAgICAgICAgICBjbGFzcz1cInZkLXBhZ2luYXRpb25fX2l0ZW0gdmQtcGFnaW5hdGlvbl9faXRlbS0tcHJldmlvdXMgY29sLTRcIlxuICAgICAgICAgICAgICAgICAgICAqbmdJZj1cIiEhY2FsZW5kYXIucHJldmlvdXNXZWVrXCJcbiAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICAgICAgICAgICAgIFtpZF09XCJpZCArICdCdXR0b25QcmV2aW91c1dlZWsnXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiYnRuLWxpbmsgdmQtcGFnaW5hdGlvbl9fbGluayB2ZC1wYWdpbmF0aW9uX19saW5rLXJlc2V0XCJcbiAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJwYWdpbmF0ZShjYWxlbmRhci5wcmV2aW91c1dlZWspXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IGFsaWduLWl0ZW1zLWNlbnRlclwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxmb2Vobi1pY29uLWNoZXZyb24tbGVmdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cInZkLXBhZ2luYXRpb25fX3RpdGxlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3RpdGxlXT1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2ZvZWhuLWFnZW5kYS1uYXZpZ2F0aW9uLnByZXZpb3VzLXdlZWsnXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBmcm9tRGljdGlvbmFyeVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhcmlhLWhpZGRlbj1cInRydWVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgID48L2ZvZWhuLWljb24tY2hldnJvbi1sZWZ0PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwidmQtcGFnaW5hdGlvbl9fdGl0bGUgbWwtMiBkLXhzLW5vbmUgZC1zbS1ibG9ja1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFyaWEtaGlkZGVuPVwidHJ1ZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7e1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2ZvZWhuLWFnZW5kYS1uYXZpZ2F0aW9uLnByZXZpb3VzLXdlZWsnXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBmcm9tRGljdGlvbmFyeVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbaWRdPVwiaWQgKyAnTmF2aWdhdGlvblByZXZpb3VzU3JPbmx5J1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwic3Itb25seVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7e1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2ZvZWhuLWFnZW5kYS1uYXZpZ2F0aW9uLnByZXZpb3VzLXdlZWstc3Itb25seSdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IGZyb21EaWN0aW9uYXJ5XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDoge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcmV2aW91c1dlZWs6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYWxlbmRhci5wcmV2aW91c1dlZWtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAubGFiZWxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgICAgIDwvbGk+XG4gICAgICAgICAgICAgICAgPGxpXG4gICAgICAgICAgICAgICAgICAgIGNsYXNzPVwidmQtcGFnaW5hdGlvbl9faXRlbSB2ZC1wYWdpbmF0aW9uX19pdGVtLS1wcmV2aW91cyBjb2wtNFwiXG4gICAgICAgICAgICAgICAgICAgICpuZ0lmPVwiIWNhbGVuZGFyLnByZXZpb3VzV2VlayAmJiAhaXNTck9ubHlcIlxuICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICAgICAgICAgICAgW2lkXT1cImlkICsgJ05hdmlnYXRpb25QcmV2aW91c0Rpc2FibGVkJ1wiXG4gICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImQtZmxleCBhbGlnbi1pdGVtcy1jZW50ZXIgbGluay13ZWVrLWRpc2FibGVkXCJcbiAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGZvZWhuLWljb24tY2hldnJvbi1sZWZ0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJ2ZC1wYWdpbmF0aW9uX190aXRsZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW3RpdGxlXT1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZm9laG4tYWdlbmRhLW5hdmlnYXRpb24ucHJldmlvdXMtd2VlaydcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgZnJvbURpY3Rpb25hcnlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlxuICAgICAgICAgICAgICAgICAgICAgICAgPjwvZm9laG4taWNvbi1jaGV2cm9uLWxlZnQ+XG4gICAgICAgICAgICAgICAgICAgICAgICA8c3BhblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwidmQtcGFnaW5hdGlvbl9fdGl0bGUgbWwtMiBkLXhzLW5vbmUgZC1zbS1ibG9ja1wiXG4gICAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge3tcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2ZvZWhuLWFnZW5kYS1uYXZpZ2F0aW9uLnByZXZpb3VzLXdlZWsnXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IGZyb21EaWN0aW9uYXJ5XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPC9saT5cblxuICAgICAgICAgICAgICAgIDxsaVxuICAgICAgICAgICAgICAgICAgICBjbGFzcz1cInZkLXBhZ2luYXRpb25fX2l0ZW0gZC1mbGV4IGp1c3RpZnktY29udGVudC1jZW50ZXIgY29sLTRcIlxuICAgICAgICAgICAgICAgICAgICAqbmdJZj1cIiFpc1NyT25seVwiXG4gICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICA8Zm9laG4tZGF0ZS1waWNrZXItYnV0dG9uXG4gICAgICAgICAgICAgICAgICAgICAgICBbbW9kZWxdPVwiY3VycmVudERheVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAodXNlcklucHV0KT1cImRhdGVQaWNrZXJVc2VySW5wdXQoJGV2ZW50KVwiXG4gICAgICAgICAgICAgICAgICAgID48L2ZvZWhuLWRhdGUtcGlja2VyLWJ1dHRvbj5cbiAgICAgICAgICAgICAgICA8L2xpPlxuXG4gICAgICAgICAgICAgICAgPGxpXG4gICAgICAgICAgICAgICAgICAgIGNsYXNzPVwidmQtcGFnaW5hdGlvbl9faXRlbSB2ZC1wYWdpbmF0aW9uX19pdGVtLS1uZXh0IGNvbC00IGQtZmxleCBqdXN0aWZ5LWNvbnRlbnQtZW5kXCJcbiAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCIhIWNhbGVuZGFyLm5leHRXZWVrXCJcbiAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICAgICAgICAgICAgIFtpZF09XCJpZCArICdCdXR0b25OZXh0V2VlaydcIlxuICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJidG4tbGluayB2ZC1wYWdpbmF0aW9uX19saW5rIHZkLXBhZ2luYXRpb25fX2xpbmstcmVzZXRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cInBhZ2luYXRlKGNhbGVuZGFyLm5leHRXZWVrKVwiXG4gICAgICAgICAgICAgICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImQtZmxleCBhbGlnbi1pdGVtcy1jZW50ZXJcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhcmlhLWhpZGRlbj1cInRydWVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cInZkLXBhZ2luYXRpb25fX3RpdGxlIGQteHMtbm9uZSBkLXNtLWJsb2NrXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZm9laG4tYWdlbmRhLW5hdmlnYXRpb24ubmV4dC13ZWVrJ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgZnJvbURpY3Rpb25hcnlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2lkXT1cImlkICsgJ05hdmlnYXRpb25OZXh0U3JPbmx5J1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwic3Itb25seVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7e1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2ZvZWhuLWFnZW5kYS1uYXZpZ2F0aW9uLm5leHQtd2Vlay1zci1vbmx5J1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgZnJvbURpY3Rpb25hcnlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5leHRXZWVrOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FsZW5kYXIubmV4dFdlZWsubGFiZWxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxmb2Vobi1pY29uLWNoZXZyb24tcmlnaHRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJ2ZC1wYWdpbmF0aW9uX190aXRsZSBtbC0yXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3RpdGxlXT1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2ZvZWhuLWFnZW5kYS1uYXZpZ2F0aW9uLm5leHQtd2VlaydcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IGZyb21EaWN0aW9uYXJ5XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFyaWEtaGlkZGVuPVwidHJ1ZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPjwvZm9laG4taWNvbi1jaGV2cm9uLXJpZ2h0PlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgICAgIDwvbGk+XG4gICAgICAgICAgICAgICAgPGxpXG4gICAgICAgICAgICAgICAgICAgIGNsYXNzPVwidmQtcGFnaW5hdGlvbl9faXRlbSB2ZC1wYWdpbmF0aW9uX19pdGVtLS1uZXh0IGNvbC00IGQtZmxleCBqdXN0aWZ5LWNvbnRlbnQtZW5kXCJcbiAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCIhY2FsZW5kYXIubmV4dFdlZWsgJiYgIWlzU3JPbmx5XCJcbiAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgICAgICAgICAgIFtpZF09XCJpZCArICdOYXZpZ2F0aW9uTmV4dERpc2FibGVkJ1wiXG4gICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImQtZmxleCBhbGlnbi1pdGVtcy1jZW50ZXIgbGluay13ZWVrLWRpc2FibGVkXCJcbiAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJ2ZC1wYWdpbmF0aW9uX190aXRsZSBkLXhzLW5vbmUgZC1zbS1ibG9ja1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdmb2Vobi1hZ2VuZGEtbmF2aWdhdGlvbi5uZXh0LXdlZWsnXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IGZyb21EaWN0aW9uYXJ5XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxmb2Vobi1pY29uLWNoZXZyb24tcmlnaHRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cInZkLXBhZ2luYXRpb25fX3RpdGxlIG1sLTJcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFt0aXRsZV09XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2ZvZWhuLWFnZW5kYS1uYXZpZ2F0aW9uLm5leHQtd2VlaydcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgZnJvbURpY3Rpb25hcnlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlxuICAgICAgICAgICAgICAgICAgICAgICAgPjwvZm9laG4taWNvbi1jaGV2cm9uLXJpZ2h0PlxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8L2xpPlxuICAgICAgICAgICAgPC91bD5cbiAgICAgICAgPC9uYXY+XG4gICAgPC9kaXY+XG48L2Rpdj5cbiJdfQ==
|
|
74
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9laG4tYWdlbmRhLW5hdmlnYXRpb24uY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvcHJlc3RhdGlvbnMtbmcvc3JjL2ZvZWhuLWFnZW5kYS9mb2Vobi1hZ2VuZGEtbmF2aWdhdGlvbi9mb2Vobi1hZ2VuZGEtbmF2aWdhdGlvbi5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9wcmVzdGF0aW9ucy1uZy9zcmMvZm9laG4tYWdlbmRhL2ZvZWhuLWFnZW5kYS1uYXZpZ2F0aW9uL2ZvZWhuLWFnZW5kYS1uYXZpZ2F0aW9uLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDSCxTQUFTLEVBQ1QsWUFBWSxFQUNaLEtBQUssRUFFTCxNQUFNLEVBR1QsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxLQUFLLE1BQU0sT0FBTyxDQUFDO0FBQzFCLE9BQU8sVUFBVSxNQUFNLHlCQUF5QixDQUFDOzs7Ozs7O0FBSWpELEtBQUssQ0FBQyxNQUFNLENBQUMsVUFBVSxDQUFDLENBQUM7QUFPekIsTUFBTSxPQUFPLDhCQUE4QjtJQUwzQztRQWFJLGFBQVEsR0FBRyxLQUFLLENBQUM7UUFTakIscUJBQWdCLEdBQUcsSUFBSSxZQUFZLEVBQWtCLENBQUM7UUFJOUMsNkJBQXdCLEdBQUcsSUFBSSxDQUFDO0tBOEMzQztJQTVDVyxNQUFNLENBQUMscUJBQXFCO1FBQ2hDLE1BQU0sR0FBRyxHQUFHLEtBQUssRUFBRSxDQUFDO1FBQ3BCLE9BQU8sQ0FBQyxHQUFHLENBQUMsSUFBSSxFQUFFLEVBQUUsR0FBRyxDQUFDLEtBQUssRUFBRSxHQUFHLENBQUMsRUFBRSxHQUFHLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQztJQUNyRCxDQUFDO0lBRUQsV0FBVyxDQUFDLE9BQXNCO1FBQzlCLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxPQUFPLENBQUMsUUFBUSxDQUFDLENBQUM7SUFDNUMsQ0FBQztJQUVELFFBQVEsQ0FBQyxjQUE4QjtRQUNuQyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxDQUFDO0lBQy9DLENBQUM7SUFFRCxtQkFBbUIsQ0FBQyxZQUFzQjtRQUN0QyxJQUFJLENBQUMsd0JBQXdCLEdBQUcsS0FBSyxDQUFDO1FBQ3RDLE1BQU0sWUFBWSxHQUFHLEdBQUcsWUFBWSxDQUFDLENBQUMsQ0FBQyxJQUFJLFlBQVksQ0FBQyxDQUFDLENBQUMsSUFBSSxZQUFZLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQztRQUNoRixNQUFNLGFBQWEsR0FBRyxLQUFLLENBQUMsWUFBWSxDQUFDLENBQUM7UUFDMUMsTUFBTSxVQUFVLEdBQUcsYUFBYSxDQUFDLElBQUksRUFBRSxDQUFDO1FBQ3hDLE1BQU0sY0FBYyxHQUFtQjtZQUNuQyxLQUFLLEVBQUUsSUFBSTtZQUNYLFVBQVUsRUFBRSxVQUFVO1lBQ3RCLElBQUksRUFBRSxhQUFhLENBQUMsSUFBSSxFQUFFO1NBQzdCLENBQUM7UUFDRixJQUFJLENBQUMsZ0JBQWdCLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxDQUFDO0lBQy9DLENBQUM7SUFFTyxnQkFBZ0IsQ0FBQyxNQUFvQjtRQUN6QyxJQUFJLE1BQU0sRUFBRTtZQUNSLE1BQU0sUUFBUSxHQUFHLE1BQU0sQ0FBQyxZQUFZLENBQUM7WUFDckMsSUFBSSxDQUFDLElBQUksQ0FBQyx3QkFBd0IsRUFBRTtnQkFDaEMsSUFBSSxDQUFDLHdCQUF3QixHQUFHLElBQUksQ0FBQztnQkFDckMsT0FBTzthQUNWO1lBQ0QsSUFDSSxDQUFDLFFBQVE7Z0JBQ1QsQ0FBQyxRQUFRLENBQUMsV0FBVyxDQUFDLElBQUk7Z0JBQzFCLENBQUMsUUFBUSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsTUFBTSxFQUNuQztnQkFDRSxJQUFJLENBQUMsVUFBVSxHQUFHLDhCQUE4QixDQUFDLHFCQUFxQixFQUFFLENBQUM7Z0JBQ3pFLE9BQU87YUFDVjtZQUNELElBQUksQ0FBQyxVQUFVLEdBQUcsUUFBUSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDO1NBQ3ZEO0lBQ0wsQ0FBQzs7MkhBbEVRLDhCQUE4QjsrR0FBOUIsOEJBQThCLGlQQ3JCM0MsMnZQQXVLQTsyRkRsSmEsOEJBQThCO2tCQUwxQyxTQUFTOytCQUNJLHlCQUF5Qjs4QkFNbkMsRUFBRTtzQkFERCxLQUFLO2dCQUlOLFFBQVE7c0JBRFAsS0FBSztnQkFJTixRQUFRO3NCQURQLEtBQUs7Z0JBSU4sT0FBTztzQkFETixLQUFLO2dCQUlOLE9BQU87c0JBRE4sS0FBSztnQkFJTixnQkFBZ0I7c0JBRGYsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gICAgQ29tcG9uZW50LFxuICAgIEV2ZW50RW1pdHRlcixcbiAgICBJbnB1dCxcbiAgICBPbkNoYW5nZXMsXG4gICAgT3V0cHV0LFxuICAgIFNpbXBsZUNoYW5nZSxcbiAgICBTaW1wbGVDaGFuZ2VzXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IGRheWpzIGZyb20gJ2RheWpzJztcbmltcG9ydCB3ZWVrT2ZZZWFyIGZyb20gJ2RheWpzL3BsdWdpbi93ZWVrT2ZZZWFyJztcbmltcG9ydCB7IENhbGVuZGFyIH0gZnJvbSAnLi4vY2FsZW5kYXIudHlwZSc7XG5pbXBvcnQgeyBQYWdpbmF0aW9uV2VlayB9IGZyb20gJy4uL3BhZ2luYXRpb24td2Vlay50eXBlJztcblxuZGF5anMuZXh0ZW5kKHdlZWtPZlllYXIpO1xuXG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvcjogJ2ZvZWhuLWFnZW5kYS1uYXZpZ2F0aW9uJyxcbiAgICB0ZW1wbGF0ZVVybDogJy4vZm9laG4tYWdlbmRhLW5hdmlnYXRpb24uY29tcG9uZW50Lmh0bWwnLFxuICAgIHN0eWxlVXJsczogWycuL2ZvZWhuLWFnZW5kYS1uYXZpZ2F0aW9uLmNvbXBvbmVudC5jc3MnXVxufSlcbmV4cG9ydCBjbGFzcyBGb2VobkFnZW5kYU5hdmlnYXRpb25Db21wb25lbnQgaW1wbGVtZW50cyBPbkNoYW5nZXMge1xuICAgIEBJbnB1dCgpXG4gICAgaWQ6IHN0cmluZztcblxuICAgIEBJbnB1dCgpXG4gICAgY2FsZW5kYXI6IENhbGVuZGFyO1xuXG4gICAgQElucHV0KClcbiAgICBpc1NyT25seSA9IGZhbHNlO1xuXG4gICAgQElucHV0KClcbiAgICBtaW5EYXRlOiBudW1iZXJbXTtcblxuICAgIEBJbnB1dCgpXG4gICAgbWF4RGF0ZTogbnVtYmVyW107XG5cbiAgICBAT3V0cHV0KClcbiAgICBwYWdpbmF0aW9uQ2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjxQYWdpbmF0aW9uV2Vlaz4oKTtcblxuICAgIGN1cnJlbnREYXk6IG51bWJlcltdO1xuXG4gICAgcHJpdmF0ZSBvdmVycmlkZVdpdGhDYWxlbmRhckRhdGUgPSB0cnVlO1xuXG4gICAgcHJpdmF0ZSBzdGF0aWMgZ2V0Q3VycmVudERhdGVBc0FycmF5KCk6IG51bWJlcltdIHtcbiAgICAgICAgY29uc3Qgbm93ID0gZGF5anMoKTtcbiAgICAgICAgcmV0dXJuIFtub3cueWVhcigpLCBub3cubW9udGgoKSArIDEsIG5vdy5kYXRlKCldO1xuICAgIH1cblxuICAgIG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5vbkNhbGVuZGFyQ2hhbmdlKGNoYW5nZXMuY2FsZW5kYXIpO1xuICAgIH1cblxuICAgIHBhZ2luYXRlKHBhZ2luYXRpb25XZWVrOiBQYWdpbmF0aW9uV2Vlayk6IHZvaWQge1xuICAgICAgICB0aGlzLnBhZ2luYXRpb25DaGFuZ2UubmV4dChwYWdpbmF0aW9uV2Vlayk7XG4gICAgfVxuXG4gICAgZGF0ZVBpY2tlclVzZXJJbnB1dChzZWxlY3RlZERhdGU6IG51bWJlcltdKTogdm9pZCB7XG4gICAgICAgIHRoaXMub3ZlcnJpZGVXaXRoQ2FsZW5kYXJEYXRlID0gZmFsc2U7XG4gICAgICAgIGNvbnN0IGRhdGVBc1N0cmluZyA9IGAke3NlbGVjdGVkRGF0ZVswXX0tJHtzZWxlY3RlZERhdGVbMV19LSR7c2VsZWN0ZWREYXRlWzJdfWA7XG4gICAgICAgIGNvbnN0IHNlbGVjdGVkRGF5anMgPSBkYXlqcyhkYXRlQXNTdHJpbmcpO1xuICAgICAgICBjb25zdCBudW1iZXJXZWVrID0gc2VsZWN0ZWREYXlqcy53ZWVrKCk7XG4gICAgICAgIGNvbnN0IHBhZ2luYXRpb25XZWVrOiBQYWdpbmF0aW9uV2VlayA9IHtcbiAgICAgICAgICAgIGxhYmVsOiBudWxsLFxuICAgICAgICAgICAgd2Vla051bWJlcjogbnVtYmVyV2VlayxcbiAgICAgICAgICAgIHllYXI6IHNlbGVjdGVkRGF5anMueWVhcigpXG4gICAgICAgIH07XG4gICAgICAgIHRoaXMucGFnaW5hdGlvbkNoYW5nZS5uZXh0KHBhZ2luYXRpb25XZWVrKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIG9uQ2FsZW5kYXJDaGFuZ2UoY2hhbmdlOiBTaW1wbGVDaGFuZ2UpOiB2b2lkIHtcbiAgICAgICAgaWYgKGNoYW5nZSkge1xuICAgICAgICAgICAgY29uc3QgY2FsZW5kYXIgPSBjaGFuZ2UuY3VycmVudFZhbHVlO1xuICAgICAgICAgICAgaWYgKCF0aGlzLm92ZXJyaWRlV2l0aENhbGVuZGFyRGF0ZSkge1xuICAgICAgICAgICAgICAgIHRoaXMub3ZlcnJpZGVXaXRoQ2FsZW5kYXJEYXRlID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoXG4gICAgICAgICAgICAgICAgIWNhbGVuZGFyIHx8XG4gICAgICAgICAgICAgICAgIWNhbGVuZGFyLmN1cnJlbnRXZWVrLndlZWsgfHxcbiAgICAgICAgICAgICAgICAhY2FsZW5kYXIuY3VycmVudFdlZWsud2Vlay5sZW5ndGhcbiAgICAgICAgICAgICkge1xuICAgICAgICAgICAgICAgIHRoaXMuY3VycmVudERheSA9IEZvZWhuQWdlbmRhTmF2aWdhdGlvbkNvbXBvbmVudC5nZXRDdXJyZW50RGF0ZUFzQXJyYXkoKTtcbiAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB0aGlzLmN1cnJlbnREYXkgPSBjYWxlbmRhci5jdXJyZW50V2Vlay53ZWVrWzBdLmRhdGU7XG4gICAgICAgIH1cbiAgICB9XG59XG4iLCI8ZGl2IGNsYXNzPVwicm93IG1iLTNcIiAqbmdJZj1cIiEhY2FsZW5kYXJcIj5cbiAgICA8ZGl2IGNsYXNzPVwiY29sLTEyXCI+XG4gICAgICAgIDxuYXZcbiAgICAgICAgICAgIGNsYXNzPVwidmQtcGFnaW5hdGlvbiBjYWxlbmRhci13ZWVrLW5hdmlnYXRpb25cIlxuICAgICAgICAgICAgW2F0dHIuaWRdPVwiaWRcIlxuICAgICAgICAgICAgW2F0dHIuYXJpYS1sYWJlbF09XCJcbiAgICAgICAgICAgICAgICAnZm9laG4tYWdlbmRhLW5hdmlnYXRpb24ubmF2LmFyaWEtbGFiZWwnIHwgZnJvbURpY3Rpb25hcnlcbiAgICAgICAgICAgIFwiXG4gICAgICAgID5cbiAgICAgICAgICAgIDx1bCBjbGFzcz1cInZkLXBhZ2luYXRpb25fX2xpc3RcIj5cbiAgICAgICAgICAgICAgICA8bGlcbiAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJ2ZC1wYWdpbmF0aW9uX19pdGVtIHZkLXBhZ2luYXRpb25fX2l0ZW0tLXByZXZpb3VzIGNvbC00XCJcbiAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCIhIWNhbGVuZGFyLnByZXZpb3VzV2Vla1wiXG4gICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgICAgICAgICAgICBbaWRdPVwiaWQgKyAnQnV0dG9uUHJldmlvdXNXZWVrJ1wiXG4gICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImJ0bi1saW5rIHZkLXBhZ2luYXRpb25fX2xpbmsgdmQtcGFnaW5hdGlvbl9fbGluay1yZXNldFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwicGFnaW5hdGUoY2FsZW5kYXIucHJldmlvdXNXZWVrKVwiXG4gICAgICAgICAgICAgICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJkLWZsZXggYWxpZ24taXRlbXMtY2VudGVyXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGZvZWhuLWljb24tY2hldnJvbi1sZWZ0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwidmQtcGFnaW5hdGlvbl9fdGl0bGVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbdGl0bGVdPVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZm9laG4tYWdlbmRhLW5hdmlnYXRpb24ucHJldmlvdXMtd2VlaydcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IGZyb21EaWN0aW9uYXJ5XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFyaWEtaGlkZGVuPVwidHJ1ZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPjwvZm9laG4taWNvbi1jaGV2cm9uLWxlZnQ+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJ2ZC1wYWdpbmF0aW9uX190aXRsZSBtbC0yIGQteHMtbm9uZSBkLXNtLWJsb2NrXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXJpYS1oaWRkZW49XCJ0cnVlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZm9laG4tYWdlbmRhLW5hdmlnYXRpb24ucHJldmlvdXMtd2VlaydcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IGZyb21EaWN0aW9uYXJ5XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtpZF09XCJpZCArICdOYXZpZ2F0aW9uUHJldmlvdXNTck9ubHknXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJzci1vbmx5XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZm9laG4tYWdlbmRhLW5hdmlnYXRpb24ucHJldmlvdXMtd2Vlay1zci1vbmx5J1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgZnJvbURpY3Rpb25hcnlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByZXZpb3VzV2VlazpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhbGVuZGFyLnByZXZpb3VzV2Vla1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC5sYWJlbFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgICAgIDwvbGk+XG4gICAgICAgICAgICAgICAgPGxpXG4gICAgICAgICAgICAgICAgICAgIGNsYXNzPVwidmQtcGFnaW5hdGlvbl9faXRlbSB2ZC1wYWdpbmF0aW9uX19pdGVtLS1wcmV2aW91cyBjb2wtNFwiXG4gICAgICAgICAgICAgICAgICAgICpuZ0lmPVwiIWNhbGVuZGFyLnByZXZpb3VzV2VlayAmJiAhaXNTck9ubHlcIlxuICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICAgICAgICAgICAgW2lkXT1cImlkICsgJ05hdmlnYXRpb25QcmV2aW91c0Rpc2FibGVkJ1wiXG4gICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImQtZmxleCBhbGlnbi1pdGVtcy1jZW50ZXIgbGluay13ZWVrLWRpc2FibGVkXCJcbiAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGZvZWhuLWljb24tY2hldnJvbi1sZWZ0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJ2ZC1wYWdpbmF0aW9uX190aXRsZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW3RpdGxlXT1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZm9laG4tYWdlbmRhLW5hdmlnYXRpb24ucHJldmlvdXMtd2VlaydcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgZnJvbURpY3Rpb25hcnlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlxuICAgICAgICAgICAgICAgICAgICAgICAgPjwvZm9laG4taWNvbi1jaGV2cm9uLWxlZnQ+XG4gICAgICAgICAgICAgICAgICAgICAgICA8c3BhblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwidmQtcGFnaW5hdGlvbl9fdGl0bGUgbWwtMiBkLXhzLW5vbmUgZC1zbS1ibG9ja1wiXG4gICAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge3tcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2ZvZWhuLWFnZW5kYS1uYXZpZ2F0aW9uLnByZXZpb3VzLXdlZWsnXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IGZyb21EaWN0aW9uYXJ5XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPC9saT5cblxuICAgICAgICAgICAgICAgIDxsaVxuICAgICAgICAgICAgICAgICAgICBjbGFzcz1cInZkLXBhZ2luYXRpb25fX2l0ZW0gZC1mbGV4IGp1c3RpZnktY29udGVudC1jZW50ZXIgY29sLTRcIlxuICAgICAgICAgICAgICAgICAgICAqbmdJZj1cIiFpc1NyT25seVwiXG4gICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICA8Zm9laG4tZGF0ZS1waWNrZXItYnV0dG9uXG4gICAgICAgICAgICAgICAgICAgICAgICBbbW9kZWxdPVwiY3VycmVudERheVwiXG4gICAgICAgICAgICAgICAgICAgICAgICBbbWluRGF0ZV09XCJtaW5EYXRlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFttYXhEYXRlXT1cIm1heERhdGVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgW3NlbGVjdGVkRGF0ZVNyT25seUxhYmVsS2V5XT1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICdmb2Vobi1hZ2VuZGEtbmF2aWdhdGlvbi5kYXRlLXBpY2tlci1idXR0b24uc2NyZWVuLXJlYWRlci5zZWxlY3RlZC1kYXRlJ1xuICAgICAgICAgICAgICAgICAgICAgICAgXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICh1c2VySW5wdXQpPVwiZGF0ZVBpY2tlclVzZXJJbnB1dCgkZXZlbnQpXCJcbiAgICAgICAgICAgICAgICAgICAgPjwvZm9laG4tZGF0ZS1waWNrZXItYnV0dG9uPlxuICAgICAgICAgICAgICAgIDwvbGk+XG5cbiAgICAgICAgICAgICAgICA8bGlcbiAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJ2ZC1wYWdpbmF0aW9uX19pdGVtIHZkLXBhZ2luYXRpb25fX2l0ZW0tLW5leHQgY29sLTQgZC1mbGV4IGp1c3RpZnktY29udGVudC1lbmRcIlxuICAgICAgICAgICAgICAgICAgICAqbmdJZj1cIiEhY2FsZW5kYXIubmV4dFdlZWtcIlxuICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICAgICAgICAgICAgW2lkXT1cImlkICsgJ0J1dHRvbk5leHRXZWVrJ1wiXG4gICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImJ0bi1saW5rIHZkLXBhZ2luYXRpb25fX2xpbmsgdmQtcGFnaW5hdGlvbl9fbGluay1yZXNldFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwicGFnaW5hdGUoY2FsZW5kYXIubmV4dFdlZWspXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImQtZmxleCBhbGlnbi1pdGVtcy1jZW50ZXJcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhcmlhLWhpZGRlbj1cInRydWVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cInZkLXBhZ2luYXRpb25fX3RpdGxlIGQteHMtbm9uZSBkLXNtLWJsb2NrXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZm9laG4tYWdlbmRhLW5hdmlnYXRpb24ubmV4dC13ZWVrJ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgZnJvbURpY3Rpb25hcnlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2lkXT1cImlkICsgJ05hdmlnYXRpb25OZXh0U3JPbmx5J1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwic3Itb25seVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7e1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2ZvZWhuLWFnZW5kYS1uYXZpZ2F0aW9uLm5leHQtd2Vlay1zci1vbmx5J1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgZnJvbURpY3Rpb25hcnlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5leHRXZWVrOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FsZW5kYXIubmV4dFdlZWsubGFiZWxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxmb2Vobi1pY29uLWNoZXZyb24tcmlnaHRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJ2ZC1wYWdpbmF0aW9uX190aXRsZSBtbC0yXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3RpdGxlXT1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2ZvZWhuLWFnZW5kYS1uYXZpZ2F0aW9uLm5leHQtd2VlaydcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IGZyb21EaWN0aW9uYXJ5XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFyaWEtaGlkZGVuPVwidHJ1ZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPjwvZm9laG4taWNvbi1jaGV2cm9uLXJpZ2h0PlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgICAgICA8L2xpPlxuICAgICAgICAgICAgICAgIDxsaVxuICAgICAgICAgICAgICAgICAgICBjbGFzcz1cInZkLXBhZ2luYXRpb25fX2l0ZW0gdmQtcGFnaW5hdGlvbl9faXRlbS0tbmV4dCBjb2wtNCBkLWZsZXgganVzdGlmeS1jb250ZW50LWVuZFwiXG4gICAgICAgICAgICAgICAgICAgICpuZ0lmPVwiIWNhbGVuZGFyLm5leHRXZWVrICYmICFpc1NyT25seVwiXG4gICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgICAgICAgICAgICBbaWRdPVwiaWQgKyAnTmF2aWdhdGlvbk5leHREaXNhYmxlZCdcIlxuICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJkLWZsZXggYWxpZ24taXRlbXMtY2VudGVyIGxpbmstd2Vlay1kaXNhYmxlZFwiXG4gICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwidmQtcGFnaW5hdGlvbl9fdGl0bGUgZC14cy1ub25lIGQtc20tYmxvY2tcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7e1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZm9laG4tYWdlbmRhLW5hdmlnYXRpb24ubmV4dC13ZWVrJ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBmcm9tRGljdGlvbmFyeVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICA8Zm9laG4taWNvbi1jaGV2cm9uLXJpZ2h0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJ2ZC1wYWdpbmF0aW9uX190aXRsZSBtbC0yXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbdGl0bGVdPVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdmb2Vobi1hZ2VuZGEtbmF2aWdhdGlvbi5uZXh0LXdlZWsnXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IGZyb21EaWN0aW9uYXJ5XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJcbiAgICAgICAgICAgICAgICAgICAgICAgID48L2ZvZWhuLWljb24tY2hldnJvbi1yaWdodD5cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPC9saT5cbiAgICAgICAgICAgIDwvdWw+XG4gICAgICAgIDwvbmF2PlxuICAgIDwvZGl2PlxuPC9kaXY+XG4iXX0=
|
package/esm2020/foehn-agenda/foehn-agenda-timeslot-panel/foehn-agenda-timeslot-panel.component.mjs
CHANGED
|
@@ -59,7 +59,7 @@ export class FoehnAgendaTimeslotPanelComponent extends FoehnInputComponent {
|
|
|
59
59
|
this.sliceNbVisibleElements();
|
|
60
60
|
}
|
|
61
61
|
else {
|
|
62
|
-
// Need setTimeout because we are outside angular
|
|
62
|
+
// Need setTimeout because we are outside angular cycle when reloading page
|
|
63
63
|
setTimeout(() => {
|
|
64
64
|
this.timeSlots = this.currentWeek.timeSlots;
|
|
65
65
|
});
|
|
@@ -130,6 +130,10 @@ export class FoehnAgendaTimeslotPanelComponent extends FoehnInputComponent {
|
|
|
130
130
|
}
|
|
131
131
|
return -1;
|
|
132
132
|
}
|
|
133
|
+
cleanIdForQuerySelector(s) {
|
|
134
|
+
s = s.replace(new RegExp(' ', 'g'), '_');
|
|
135
|
+
return s.replace(new RegExp(':', 'g'), '_');
|
|
136
|
+
}
|
|
133
137
|
sliceNbVisibleElements() {
|
|
134
138
|
if (!this.nbVisibleElements) {
|
|
135
139
|
this.nbVisibleElements = this.DEFAULT_NB_VISISBLE_ELEMENTS;
|
|
@@ -210,7 +214,7 @@ FoehnAgendaTimeslotPanelComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion
|
|
|
210
214
|
useExisting: forwardRef(() => FoehnAgendaTimeslotPanelComponent),
|
|
211
215
|
multi: true
|
|
212
216
|
}
|
|
213
|
-
], viewQueries: [{ propertyName: "timeSlotButtonsElemRef", predicate: ["timeSlotButtonsElemRef"], descendants: true }], usesInheritance: true, usesOnChanges: true, ngImport: i0, template: "<section\n *ngIf=\"calendar | async as loadedCalendar\"\n class=\"panel panel-default mb-3\"\n>\n <div class=\"panel-heading mt-2 mb-2 py-2 d-flex align-items-baseline\">\n <h3 class=\"h5 ml-3 mt-0 mb-0\">\n {{ capitalCaseFirstLetter(currentWeek.day) }}\n <span class=\"sr-only\" *ngIf=\"!!isSelected(timeInputValue)\">\n {{\n 'foehn-agenda-timeslot-panel.selected-time'\n | fromDictionary: { timeSelectedValue: timeInputValue }\n }}\n </span>\n </h3>\n <small *ngIf=\"!!currentWeek.timeSlots.length\" class=\"sr-only\">\n {{\n 'foehn-agenda-timeslot-panel.nbr-dispo'\n | fromDictionary\n : {\n nbElements: currentWeek.timeSlots.length.toString()\n }\n }}\n </small>\n <small\n *ngIf=\"!currentWeek.timeSlots.length\"\n class=\"font-italic align-self-end ml-2\"\n >\n {{ 'foehn-agenda-timeslot-panel.no-dispo' | fromDictionary }}\n </small>\n </div>\n\n <div\n *ngIf=\"!!currentWeek.timeSlots.length\"\n class=\"panel-body row d-flex flex-wrap ml-auto mr-auto pl-3\"\n (focusin)=\"onTimeFocusin()\"\n (focusout)=\"onTimeFocusout()\"\n role=\"application\"\n >\n <button\n *ngFor=\"let timeSlot of timeSlots; let index = index\"\n class=\"btn btn-info mr-2 mb-2\"\n #timeSlotButtonsElemRef\n [attr.id]=\"currentWeek.day + '-' + timeSlot\"\n [tabindex]=\"getTimeSlotTabIndex(timeSlot, index)\"\n [class.btn-danger]=\"isSelected(timeSlot)\"\n (click)=\"\n handleUserInput(\n currentWeek.day,\n currentWeek.date,\n timeSlot,\n loadedCalendar\n )\n \"\n [attr.aria-label]=\"\n getButtonTimeSlotAriaLabel(currentWeek.day, timeSlot)\n \"\n >\n {{ timeSlot }}\n </button>\n <div\n class=\"col-12 d-flex justify-content-end mb-1\"\n *ngIf=\"currentWeek.timeSlots.length > nbVisibleElements\"\n >\n <button\n class=\"btn btn-link show-more\"\n #timeSlotButtonsElemRef\n (click)=\"togglePanel()\"\n [attr.aria-label]=\"\n (isClosed\n ? 'foehn-agenda-timeslot-panel.show-more-sr-only'\n : 'foehn-agenda-timeslot-panel.show-less'\n )\n | fromDictionary\n : {\n nbrElementsHidden: timeslotRemaining.toString()\n }\n \"\n >\n {{\n (isClosed\n ? 'foehn.agenda-timeslot-panel.show-more'\n : 'foehn-agenda-timeslot-panel.show-less'\n )\n | fromDictionary\n : {\n nbrElementsHidden: timeslotRemaining.toString()\n }\n }}\n </button>\n </div>\n </div>\n</section>\n", styles: [".panel-default{border:1px solid #dfdfdf}.panel-heading{position:sticky;background-color:#fff;width:100%;top:0}.panel-heading small{font-size:.9rem}.panel-heading:focus{outline:0;box-shadow:inset 0 1px 1px #00000013,0 0 0 .2rem var(--focus)}.panel-body .btn-info{padding-right:.4rem;padding-left:.4rem}.panel-body .btn-link{padding:0}.show-more{cursor:pointer;font-size:.9rem}\n"], directives: [{ type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }], pipes: { "async": i2.AsyncPipe, "fromDictionary": i3.SdkDictionaryPipe } });
|
|
217
|
+
], viewQueries: [{ propertyName: "timeSlotButtonsElemRef", predicate: ["timeSlotButtonsElemRef"], descendants: true }], usesInheritance: true, usesOnChanges: true, ngImport: i0, template: "<section\n *ngIf=\"calendar | async as loadedCalendar\"\n class=\"panel panel-default mb-3\"\n>\n <div class=\"panel-heading mt-2 mb-2 py-2 d-flex align-items-baseline\">\n <h3 class=\"h5 ml-3 mt-0 mb-0\">\n {{ capitalCaseFirstLetter(currentWeek.day) }}\n <span class=\"sr-only\" *ngIf=\"!!isSelected(timeInputValue)\">\n {{\n 'foehn-agenda-timeslot-panel.selected-time'\n | fromDictionary: { timeSelectedValue: timeInputValue }\n }}\n </span>\n </h3>\n <small *ngIf=\"!!currentWeek.timeSlots.length\" class=\"sr-only\">\n {{\n 'foehn-agenda-timeslot-panel.nbr-dispo'\n | fromDictionary\n : {\n nbElements: currentWeek.timeSlots.length.toString()\n }\n }}\n </small>\n <small\n *ngIf=\"!currentWeek.timeSlots.length\"\n class=\"font-italic align-self-end ml-2\"\n >\n {{ 'foehn-agenda-timeslot-panel.no-dispo' | fromDictionary }}\n </small>\n </div>\n\n <div\n *ngIf=\"!!currentWeek.timeSlots.length\"\n class=\"panel-body row d-flex flex-wrap ml-auto mr-auto pl-3\"\n (focusin)=\"onTimeFocusin()\"\n (focusout)=\"onTimeFocusout()\"\n role=\"application\"\n >\n <button\n *ngFor=\"let timeSlot of timeSlots; let index = index\"\n class=\"btn btn-info mr-2 mb-2\"\n #timeSlotButtonsElemRef\n [attr.id]=\"\n cleanIdForQuerySelector(currentWeek.day + '-' + timeSlot)\n \"\n [tabindex]=\"getTimeSlotTabIndex(timeSlot, index)\"\n [class.btn-danger]=\"isSelected(timeSlot)\"\n (click)=\"\n handleUserInput(\n currentWeek.day,\n currentWeek.date,\n timeSlot,\n loadedCalendar\n )\n \"\n [attr.aria-label]=\"\n getButtonTimeSlotAriaLabel(currentWeek.day, timeSlot)\n \"\n >\n {{ timeSlot }}\n </button>\n <div\n class=\"col-12 d-flex justify-content-end mb-1\"\n *ngIf=\"currentWeek.timeSlots.length > nbVisibleElements\"\n >\n <button\n class=\"btn btn-link show-more\"\n #timeSlotButtonsElemRef\n (click)=\"togglePanel()\"\n [attr.aria-label]=\"\n (isClosed\n ? 'foehn-agenda-timeslot-panel.show-more-sr-only'\n : 'foehn-agenda-timeslot-panel.show-less'\n )\n | fromDictionary\n : {\n nbrElementsHidden: timeslotRemaining.toString()\n }\n \"\n >\n {{\n (isClosed\n ? 'foehn.agenda-timeslot-panel.show-more'\n : 'foehn-agenda-timeslot-panel.show-less'\n )\n | fromDictionary\n : {\n nbrElementsHidden: timeslotRemaining.toString()\n }\n }}\n </button>\n </div>\n </div>\n</section>\n", styles: [".panel-default{border:1px solid #dfdfdf}.panel-heading{position:sticky;background-color:#fff;width:100%;top:0}.panel-heading small{font-size:.9rem}.panel-heading:focus{outline:0;box-shadow:inset 0 1px 1px #00000013,0 0 0 .2rem var(--focus)}.panel-body .btn-info{padding-right:.4rem;padding-left:.4rem}.panel-body .btn-link{padding:0}.show-more{cursor:pointer;font-size:.9rem}\n"], directives: [{ type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }], pipes: { "async": i2.AsyncPipe, "fromDictionary": i3.SdkDictionaryPipe } });
|
|
214
218
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.1.3", ngImport: i0, type: FoehnAgendaTimeslotPanelComponent, decorators: [{
|
|
215
219
|
type: Component,
|
|
216
220
|
args: [{ selector: 'foehn-agenda-timeslot-panel', providers: [
|
|
@@ -219,7 +223,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.1.3", ngImpor
|
|
|
219
223
|
useExisting: forwardRef(() => FoehnAgendaTimeslotPanelComponent),
|
|
220
224
|
multi: true
|
|
221
225
|
}
|
|
222
|
-
], template: "<section\n *ngIf=\"calendar | async as loadedCalendar\"\n class=\"panel panel-default mb-3\"\n>\n <div class=\"panel-heading mt-2 mb-2 py-2 d-flex align-items-baseline\">\n <h3 class=\"h5 ml-3 mt-0 mb-0\">\n {{ capitalCaseFirstLetter(currentWeek.day) }}\n <span class=\"sr-only\" *ngIf=\"!!isSelected(timeInputValue)\">\n {{\n 'foehn-agenda-timeslot-panel.selected-time'\n | fromDictionary: { timeSelectedValue: timeInputValue }\n }}\n </span>\n </h3>\n <small *ngIf=\"!!currentWeek.timeSlots.length\" class=\"sr-only\">\n {{\n 'foehn-agenda-timeslot-panel.nbr-dispo'\n | fromDictionary\n : {\n nbElements: currentWeek.timeSlots.length.toString()\n }\n }}\n </small>\n <small\n *ngIf=\"!currentWeek.timeSlots.length\"\n class=\"font-italic align-self-end ml-2\"\n >\n {{ 'foehn-agenda-timeslot-panel.no-dispo' | fromDictionary }}\n </small>\n </div>\n\n <div\n *ngIf=\"!!currentWeek.timeSlots.length\"\n class=\"panel-body row d-flex flex-wrap ml-auto mr-auto pl-3\"\n (focusin)=\"onTimeFocusin()\"\n (focusout)=\"onTimeFocusout()\"\n role=\"application\"\n >\n <button\n *ngFor=\"let timeSlot of timeSlots; let index = index\"\n class=\"btn btn-info mr-2 mb-2\"\n #timeSlotButtonsElemRef\n [attr.id]=\"currentWeek.day + '-' + timeSlot\"\n [tabindex]=\"getTimeSlotTabIndex(timeSlot, index)\"\n [class.btn-danger]=\"isSelected(timeSlot)\"\n (click)=\"\n handleUserInput(\n currentWeek.day,\n currentWeek.date,\n timeSlot,\n loadedCalendar\n )\n \"\n [attr.aria-label]=\"\n getButtonTimeSlotAriaLabel(currentWeek.day, timeSlot)\n \"\n >\n {{ timeSlot }}\n </button>\n <div\n class=\"col-12 d-flex justify-content-end mb-1\"\n *ngIf=\"currentWeek.timeSlots.length > nbVisibleElements\"\n >\n <button\n class=\"btn btn-link show-more\"\n #timeSlotButtonsElemRef\n (click)=\"togglePanel()\"\n [attr.aria-label]=\"\n (isClosed\n ? 'foehn-agenda-timeslot-panel.show-more-sr-only'\n : 'foehn-agenda-timeslot-panel.show-less'\n )\n | fromDictionary\n : {\n nbrElementsHidden: timeslotRemaining.toString()\n }\n \"\n >\n {{\n (isClosed\n ? 'foehn.agenda-timeslot-panel.show-more'\n : 'foehn-agenda-timeslot-panel.show-less'\n )\n | fromDictionary\n : {\n nbrElementsHidden: timeslotRemaining.toString()\n }\n }}\n </button>\n </div>\n </div>\n</section>\n", styles: [".panel-default{border:1px solid #dfdfdf}.panel-heading{position:sticky;background-color:#fff;width:100%;top:0}.panel-heading small{font-size:.9rem}.panel-heading:focus{outline:0;box-shadow:inset 0 1px 1px #00000013,0 0 0 .2rem var(--focus)}.panel-body .btn-info{padding-right:.4rem;padding-left:.4rem}.panel-body .btn-link{padding:0}.show-more{cursor:pointer;font-size:.9rem}\n"] }]
|
|
226
|
+
], template: "<section\n *ngIf=\"calendar | async as loadedCalendar\"\n class=\"panel panel-default mb-3\"\n>\n <div class=\"panel-heading mt-2 mb-2 py-2 d-flex align-items-baseline\">\n <h3 class=\"h5 ml-3 mt-0 mb-0\">\n {{ capitalCaseFirstLetter(currentWeek.day) }}\n <span class=\"sr-only\" *ngIf=\"!!isSelected(timeInputValue)\">\n {{\n 'foehn-agenda-timeslot-panel.selected-time'\n | fromDictionary: { timeSelectedValue: timeInputValue }\n }}\n </span>\n </h3>\n <small *ngIf=\"!!currentWeek.timeSlots.length\" class=\"sr-only\">\n {{\n 'foehn-agenda-timeslot-panel.nbr-dispo'\n | fromDictionary\n : {\n nbElements: currentWeek.timeSlots.length.toString()\n }\n }}\n </small>\n <small\n *ngIf=\"!currentWeek.timeSlots.length\"\n class=\"font-italic align-self-end ml-2\"\n >\n {{ 'foehn-agenda-timeslot-panel.no-dispo' | fromDictionary }}\n </small>\n </div>\n\n <div\n *ngIf=\"!!currentWeek.timeSlots.length\"\n class=\"panel-body row d-flex flex-wrap ml-auto mr-auto pl-3\"\n (focusin)=\"onTimeFocusin()\"\n (focusout)=\"onTimeFocusout()\"\n role=\"application\"\n >\n <button\n *ngFor=\"let timeSlot of timeSlots; let index = index\"\n class=\"btn btn-info mr-2 mb-2\"\n #timeSlotButtonsElemRef\n [attr.id]=\"\n cleanIdForQuerySelector(currentWeek.day + '-' + timeSlot)\n \"\n [tabindex]=\"getTimeSlotTabIndex(timeSlot, index)\"\n [class.btn-danger]=\"isSelected(timeSlot)\"\n (click)=\"\n handleUserInput(\n currentWeek.day,\n currentWeek.date,\n timeSlot,\n loadedCalendar\n )\n \"\n [attr.aria-label]=\"\n getButtonTimeSlotAriaLabel(currentWeek.day, timeSlot)\n \"\n >\n {{ timeSlot }}\n </button>\n <div\n class=\"col-12 d-flex justify-content-end mb-1\"\n *ngIf=\"currentWeek.timeSlots.length > nbVisibleElements\"\n >\n <button\n class=\"btn btn-link show-more\"\n #timeSlotButtonsElemRef\n (click)=\"togglePanel()\"\n [attr.aria-label]=\"\n (isClosed\n ? 'foehn-agenda-timeslot-panel.show-more-sr-only'\n : 'foehn-agenda-timeslot-panel.show-less'\n )\n | fromDictionary\n : {\n nbrElementsHidden: timeslotRemaining.toString()\n }\n \"\n >\n {{\n (isClosed\n ? 'foehn.agenda-timeslot-panel.show-more'\n : 'foehn-agenda-timeslot-panel.show-less'\n )\n | fromDictionary\n : {\n nbrElementsHidden: timeslotRemaining.toString()\n }\n }}\n </button>\n </div>\n </div>\n</section>\n", styles: [".panel-default{border:1px solid #dfdfdf}.panel-heading{position:sticky;background-color:#fff;width:100%;top:0}.panel-heading small{font-size:.9rem}.panel-heading:focus{outline:0;box-shadow:inset 0 1px 1px #00000013,0 0 0 .2rem var(--focus)}.panel-body .btn-info{padding-right:.4rem;padding-left:.4rem}.panel-body .btn-link{padding:0}.show-more{cursor:pointer;font-size:.9rem}\n"] }]
|
|
223
227
|
}], ctorParameters: function () { return [{ type: i1.SdkDictionaryService }]; }, propDecorators: { timeSlotButtonsElemRef: [{
|
|
224
228
|
type: ViewChildren,
|
|
225
229
|
args: ['timeSlotButtonsElemRef']
|
|
@@ -233,4 +237,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.1.3", ngImpor
|
|
|
233
237
|
type: HostListener,
|
|
234
238
|
args: ['keydown', ['$event']]
|
|
235
239
|
}] } });
|
|
236
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9laG4tYWdlbmRhLXRpbWVzbG90LXBhbmVsLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3ByZXN0YXRpb25zLW5nL3NyYy9mb2Vobi1hZ2VuZGEvZm9laG4tYWdlbmRhLXRpbWVzbG90LXBhbmVsL2ZvZWhuLWFnZW5kYS10aW1lc2xvdC1wYW5lbC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9wcmVzdGF0aW9ucy1uZy9zcmMvZm9laG4tYWdlbmRhL2ZvZWhuLWFnZW5kYS10aW1lc2xvdC1wYW5lbC9mb2Vobi1hZ2VuZGEtdGltZXNsb3QtcGFuZWwuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNILFNBQVMsRUFFVCxVQUFVLEVBQ1YsWUFBWSxFQUNaLEtBQUssRUFLTCxZQUFZLEVBQ2YsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0seUNBQXlDLENBQUM7Ozs7O0FBbUI5RSxNQUFNLE9BQU8saUNBQ1QsU0FBUSxtQkFBaUM7SUF5QnpDLFlBQW9CLGlCQUF1QztRQUN2RCxLQUFLLEVBQUUsQ0FBQztRQURRLHNCQUFpQixHQUFqQixpQkFBaUIsQ0FBc0I7UUFaM0QsYUFBUSxHQUFHLElBQUksQ0FBQztRQUlQLGlDQUE0QixHQUFHLEVBQUUsQ0FBQztRQUluQyw4QkFBeUIsR0FBRyxLQUFLLENBQUM7UUFFbEMsMkJBQXNCLEdBQUcsS0FBSyxDQUFDO1FBSW5DLElBQUksQ0FBQyxpQkFBaUIsR0FBRyxJQUFJLENBQUMsNEJBQTRCLENBQUM7SUFDL0QsQ0FBQztJQUVELElBQUksV0FBVztRQUNYLE9BQU8sSUFBSSxDQUFDLFlBQVksQ0FBQztJQUM3QixDQUFDO0lBRUQsSUFDSSxXQUFXLENBQUMsS0FBZTtRQUMzQixJQUFJLENBQUMsWUFBWSxHQUFHLEtBQUssQ0FBQztRQUMxQixJ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LENBQUM7NEJBQ2hFLEtBQUssRUFBRSxJQUFJO3lCQUNkO3FCQUNKOzJHQU1ELHNCQUFzQjtzQkFEckIsWUFBWTt1QkFBQyx3QkFBd0I7Z0JBSXRDLFFBQVE7c0JBRFAsS0FBSztnQkFJTixpQkFBaUI7c0JBRGhCLEtBQUs7Z0JBMkJGLFdBQVc7c0JBRGQsS0FBSztnQkFPTix1QkFBdUI7c0JBRHRCLFlBQVk7dUJBQUMsU0FBUyxFQUFFLENBQUMsUUFBUSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgICBDb21wb25lbnQsXG4gICAgRWxlbWVudFJlZixcbiAgICBmb3J3YXJkUmVmLFxuICAgIEhvc3RMaXN0ZW5lcixcbiAgICBJbnB1dCxcbiAgICBPbkNoYW5nZXMsXG4gICAgUXVlcnlMaXN0LFxuICAgIFNpbXBsZUNoYW5nZSxcbiAgICBTaW1wbGVDaGFuZ2VzLFxuICAgIFZpZXdDaGlsZHJlblxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEZvZWhuSW5wdXRDb21wb25lbnQgfSBmcm9tICcuLi8uLi9mb2Vobi1pbnB1dC9mb2Vobi1pbnB1dC5jb21wb25lbnQnO1xuaW1wb3J0IHsgT2JzZXJ2YWJsZSB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgU2RrRGljdGlvbmFyeVNlcnZpY2UgfSBmcm9tICcuLi8uLi9zZGstZGljdGlvbmFyeS9zZGstZGljdGlvbmFyeS5zZXJ2aWNlJztcbmltcG9ydCB7IFNlbGVjdGVkU2xvdCB9IGZyb20gJy4uL3NlbGVjdGVkLXNsb3QudHlwZSc7XG5pbXBvcnQgeyBEYXlTbG90cyB9IGZyb20gJy4uL2RheS1zbG90cy50eXBlJztcbmltcG9ydCB7IENhbGVuZGFyIH0gZnJvbSAnLi4vY2FsZW5kYXIudHlwZSc7XG5cbkBDb21wb25lbnQoe1xuICAgIHNlbGVjdG9yOiAnZm9laG4tYWdlbmRhLXRpbWVzbG90LXBhbmVsJyxcbiAgICB0ZW1wbGF0ZVVybDogJy4vZm9laG4tYWdlbmRhLXRpbWVzbG90LXBhbmVsLmNvbXBvbmVudC5odG1sJyxcbiAgICBzdHlsZVVybHM6IFsnLi9mb2Vobi1hZ2VuZGEtdGltZXNsb3QtcGFuZWwuY29tcG9uZW50LmNzcyddLFxuICAgIHByb3ZpZGVyczogW1xuICAgICAgICB7XG4gICAgICAgICAgICBwcm92aWRlOiBGb2VobklucHV0Q29tcG9uZW50LFxuICAgICAgICAgICAgdXNlRXhpc3Rpbmc6IGZvcndhcmRSZWYoKCkgPT4gRm9laG5BZ2VuZGFUaW1lc2xvdFBhbmVsQ29tcG9uZW50KSxcbiAgICAgICAgICAgIG11bHRpOiB0cnVlXG4gICAgICAgIH1cbiAgICBdXG59KVxuZXhwb3J0IGNsYXNzIEZvZWhuQWdlbmRhVGltZXNsb3RQYW5lbENvbXBvbmVudFxuICAgIGV4dGVuZHMgRm9laG5JbnB1dENvbXBvbmVudDxTZWxlY3RlZFNsb3Q+XG4gICAgaW1wbGVtZW50cyBPbkNoYW5nZXMge1xuICAgIEBWaWV3Q2hpbGRyZW4oJ3RpbWVTbG90QnV0dG9uc0VsZW1SZWYnKVxuICAgIHRpbWVTbG90QnV0dG9uc0VsZW1SZWY6IFF1ZXJ5TGlzdDxFbGVtZW50UmVmPjtcblxuICAgIEBJbnB1dCgpXG4gICAgY2FsZW5kYXI6IE9ic2VydmFibGU8Q2FsZW5kYXI+O1xuXG4gICAgQElucHV0KClcbiAgICBuYlZpc2libGVFbGVtZW50czogbnVtYmVyO1xuXG4gICAgc2VsZWN0ZWRUaW1lU2xvdDogc3RyaW5nO1xuICAgIHRpbWVTbG90czogc3RyaW5nW107XG4gICAgaXNDbG9zZWQgPSB0cnVlO1xuICAgIHRpbWVzbG90UmVtYWluaW5nOiBudW1iZXI7XG4gICAgdGltZUlucHV0VmFsdWU6IHN0cmluZztcblxuICAgIHJlYWRvbmx5IERFRkFVTFRfTkJfVklTSVNCTEVfRUxFTUVOVFMgPSAyMjtcblxuICAgIHByaXZhdGUgY3VycmVudFdlZWtfOiBEYXlTbG90cztcbiAgICBwcml2YXRlIGRheUlucHV0VmFsdWU6IHN0cmluZztcbiAgICBwcml2YXRlIGtleWJvYXJkTmF2aWdhdGlvbkFsbG93ZWQgPSBmYWxzZTtcbiAgICBwcml2YXRlIGN1cnJlbnRBY3RpdmVFbGVtZW50OiBFbGVtZW50O1xuICAgIHByaXZhdGUgaGFzU2VsZWN0ZWRTbG90SW5QYW5lbCA9IGZhbHNlO1xuXG4gICAgY29uc3RydWN0b3IocHJpdmF0ZSBkaWN0aW9uYXJ5U2VydmljZTogU2RrRGljdGlvbmFyeVNlcnZpY2UpIHtcbiAgICAgICAgc3VwZXIoKTtcbiAgICAgICAgdGhpcy5uYlZpc2libGVFbGVtZW50cyA9IHRoaXMuREVGQVVMVF9OQl9WSVNJU0JMRV9FTEVNRU5UUztcbiAgICB9XG5cbiAgICBnZXQgY3VycmVudFdlZWsoKTogRGF5U2xvdHMge1xuICAgICAgICByZXR1cm4gdGhpcy5jdXJyZW50V2Vla187XG4gICAgfVxuXG4gICAgQElucHV0KClcbiAgICBzZXQgY3VycmVudFdlZWsodmFsdWU6IERheVNsb3RzKSB7XG4gICAgICAgIHRoaXMuY3VycmVudFdlZWtfID0gdmFsdWU7XG4gICAgICAgIHRoaXMuc2xpY2VOYlZpc2libGVFbGVtZW50cygpO1xuICAgIH1cblxuICAgIEBIb3N0TGlzdGVuZXIoJ2tleWRvd24nLCBbJyRldmVudCddKVxuICAgIGhhbmRsZUtleWJvYXJkRG93bkV2ZW50KGV2ZW50OiBLZXlib2FyZEV2ZW50KTogdm9pZCB7XG4gICAgICAgIGlmICh0aGlzLmtleWJvYXJkTmF2aWdhdGlvbkFsbG93ZWQpIHtcbiAgICAgICAgICAgIHRoaXMub25LZXlEb3duSW5uZXIoZXZlbnQpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgZm9jdXMoKTogdm9pZCB7XG4gICAgICAgIGNvbnN0IHRpbWVTbG90QnV0dG9uc0VsZW1SZWZBcnJheSA9IFtcbiAgICAgICAgICAgIC4uLnRoaXMudGltZVNsb3RCdXR0b25zRWxlbVJlZi50b0FycmF5KClcbiAgICAgICAgXTtcbiAgICAgICAgaWYgKCEhdGltZVNsb3RCdXR0b25zRWxlbVJlZkFycmF5Lmxlbmd0aCkge1xuICAgICAgICAgICAgdGltZVNsb3RCdXR0b25zRWxlbVJlZkFycmF5WzBdLm5hdGl2ZUVsZW1lbnQuZm9jdXMoKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5vbk5iVmlzaWJsZUVsZW1lbnRzQ2hhbmdlKGNoYW5nZXMubmJWaXNpYmxlRWxlbWVudHMpO1xuICAgIH1cblxuICAgIGNhcGl0YWxDYXNlRmlyc3RMZXR0ZXIoczogc3RyaW5nKTogc3RyaW5nIHtcbiAgICAgICAgaWYgKCFzKSB7XG4gICAgICAgICAgICByZXR1cm4gcztcbiAgICAgICAgfVxuICAgICAgICBpZiAocy5sZW5ndGggPT09IDEpIHtcbiAgICAgICAgICAgIHJldHVybiBzLnRvVXBwZXJDYXNlKCk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGAke3MuY2hhckF0KDApLnRvVXBwZXJDYXNlKCl9JHtzLnNsaWNlKDEpfWA7XG4gICAgfVxuXG4gICAgaGFuZGxlVXNlcklucHV0KFxuICAgICAgICBkYXk6IHN0cmluZyxcbiAgICAgICAgZGF0ZTogbnVtYmVyW10sXG4gICAgICAgIHRpbWU6IHN0cmluZyxcbiAgICAgICAgY2FsZW5kYXI6IENhbGVuZGFyXG4gICAgKTogdm9pZCB7XG4gICAgICAgIGNvbnN0IHZhbGlkVmFsdWUgPSB0aGlzLmdldFZhbGlkVmFsdWUoZGF5LCBkYXRlLCB0aW1lLCBjYWxlbmRhcik7XG4gICAgICAgIGlmICh0eXBlb2YgdmFsaWRWYWx1ZSAhPT0gJ3VuZGVmaW5lZCcpIHtcbiAgICAgICAgICAgIHRoaXMudXNlcklucHV0Lm5leHQodmFsaWRWYWx1ZSk7XG4gICAgICAgICAgICB0aGlzLnVwZGF0ZU5nTW9kZWwodmFsaWRWYWx1ZSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICB0b2dnbGVQYW5lbCgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5pc0Nsb3NlZCA9ICF0aGlzLmlzQ2xvc2VkO1xuICAgICAgICBpZiAodGhpcy5pc0Nsb3NlZCkge1xuICAgICAgICAgICAgdGhpcy5zbGljZU5iVmlzaWJsZUVsZW1lbnRzKCk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAvLyBOZWVkIHNldFRpbWVvdXQgYmVjYXVzZSB3ZSBhcmUgb3V0c2lkZSBhbmd1bGFyIGNpY2xlIHdoZW4gcmVsb2FkaW5nIHBhZ2VcbiAgICAgICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgICAgICAgIHRoaXMudGltZVNsb3RzID0gdGhpcy5jdXJyZW50V2Vlay50aW1lU2xvdHM7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIG9uTW9kZWxDaGFuZ2UodmFsdWU6IFNlbGVjdGVkU2xvdCk6IHZvaWQge1xuICAgICAgICBpZiAodmFsdWUpIHtcbiAgICAgICAgICAgIHRoaXMuc2VsZWN0ZWRUaW1lU2xvdCA9IGAke3ZhbHVlLmRheX0tJHt2YWx1ZS50aW1lfWA7XG4gICAgICAgICAgICB0aGlzLnRpbWVJbnB1dFZhbHVlID0gdmFsdWUudGltZTtcbiAgICAgICAgICAgIHRoaXMuZGF5SW5wdXRWYWx1ZSA9IHZhbHVlLmRheTtcbiAgICAgICAgfSBlbHNlIGlmICghdmFsdWUpIHtcbiAgICAgICAgICAgIHRoaXMuc2VsZWN0ZWRUaW1lU2xvdCA9IG51bGw7XG4gICAgICAgICAgICB0aGlzLnRpbWVJbnB1dFZhbHVlID0gbnVsbDtcbiAgICAgICAgICAgIHRoaXMuZGF5SW5wdXRWYWx1ZSA9IG51bGw7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5zZWFyY2hUaW1lVmFsdWVJblRpbWVTbG90KCk7XG4gICAgfVxuXG4gICAgZ2V0VGltZUlucHV0VmFsdWUoczogc3RyaW5nKTogc3RyaW5nIHtcbiAgICAgICAgaWYgKCEhcykge1xuICAgICAgICAgICAgY29uc3QgdmFsdWVTcGxpdCA9IHMuc3BsaXQoJy0nKTtcbiAgICAgICAgICAgIGlmICh2YWx1ZVNwbGl0Lmxlbmd0aCA+PSAyKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHZhbHVlU3BsaXRbMV07XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHM7XG4gICAgfVxuXG4gICAgc2VhcmNoVGltZVZhbHVlSW5UaW1lU2xvdCgpOiB2b2lkIHtcbiAgICAgICAgY29uc3QgcG9zaXRpb25WYWx1ZSA9IHRoaXMuY3VycmVudFdlZWsudGltZVNsb3RzLmZpbmRJbmRleChcbiAgICAgICAgICAgIHggPT5cbiAgICAgICAgICAgICAgICB4ID09PSB0aGlzLnRpbWVJbnB1dFZhbHVlICYmXG4gICAgICAgICAgICAgICAgdGhpcy5jdXJyZW50V2Vlay5kYXkgPT09IHRoaXMuZGF5SW5wdXRWYWx1ZVxuICAgICAgICApO1xuICAgICAgICBpZiAocG9zaXRpb25WYWx1ZSAhPT0gLTEgJiYgISF0aGlzLnNlbGVjdGVkVGltZVNsb3QpIHtcbiAgICAgICAgICAgIHRoaXMuaGFzU2VsZWN0ZWRTbG90SW5QYW5lbCA9IHRydWU7XG4gICAgICAgICAgICBpZiAodGhpcy5pc0Nsb3NlZCAmJiBwb3NpdGlvblZhbHVlID49IHRoaXMubmJWaXNpYmxlRWxlbWVudHMpIHtcbiAgICAgICAgICAgICAgICB0aGlzLnRvZ2dsZVBhbmVsKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLmhhc1NlbGVjdGVkU2xvdEluUGFuZWwgPSBmYWxzZTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIG9uVGltZUZvY3VzaW4oKTogdm9pZCB7XG4gICAgICAgIHRoaXMua2V5Ym9hcmROYXZpZ2F0aW9uQWxsb3dlZCA9IHRydWU7XG4gICAgICAgIHRoaXMuY3VycmVudEFjdGl2ZUVsZW1lbnQgPSBkb2N1bWVudC5hY3RpdmVFbGVtZW50O1xuICAgIH1cblxuICAgIG9uVGltZUZvY3Vzb3V0KCk6IHZvaWQge1xuICAgICAgICB0aGlzLmtleWJvYXJkTmF2aWdhdGlvbkFsbG93ZWQgPSBmYWxzZTtcbiAgICB9XG5cbiAgICBpc1NlbGVjdGVkKHRpbWVTbG90OiBzdHJpbmcpOiBib29sZWFuIHtcbiAgICAgICAgaWYgKCF0aGlzLnNlbGVjdGVkVGltZVNsb3QpIHtcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgdGltZVNsb3QgPT09IHRoaXMudGltZUlucHV0VmFsdWUgJiZcbiAgICAgICAgICAgIHRoaXMuY3VycmVudFdlZWsuZGF5ID09PSB0aGlzLmRheUlucHV0VmFsdWVcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICBnZXRCdXR0b25UaW1lU2xvdEFyaWFMYWJlbChkYXk6IHN0cmluZywgdGltZVNsb3Q6IHN0cmluZyk6IHN0cmluZyB7XG4gICAgICAgIGxldCByZXN1bHQgPSBgJHtkYXl9ICR7dGltZVNsb3R9YDtcbiAgICAgICAgaWYgKHRoaXMuaXNTZWxlY3RlZCh0aW1lU2xvdCkpIHtcbiAgICAgICAgICAgIHJlc3VsdCArPSB0aGlzLmRpY3Rpb25hcnlTZXJ2aWNlLmdldEtleVN5bmMoXG4gICAgICAgICAgICAgICAgJ2ZvZWhuLWFnZW5kYS50aW1lc2xvdC5zZWxlY3RlZCdcbiAgICAgICAgICAgICk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICB9XG5cbiAgICBnZXRUaW1lU2xvdFRhYkluZGV4KHRpbWVTbG90OiBzdHJpbmcsIGluZGV4OiBudW1iZXIpOiBudW1iZXIge1xuICAgICAgICBpZiAodGhpcy5pc1NlbGVjdGVkKHRpbWVTbG90KSkge1xuICAgICAgICAgICAgcmV0dXJuIDA7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKCFpbmRleCAmJiAhdGhpcy5oYXNTZWxlY3RlZFNsb3RJblBhbmVsKSB7XG4gICAgICAgICAgICByZXR1cm4gMDtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gLTE7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBzbGljZU5iVmlzaWJsZUVsZW1lbnRzKCk6IHZvaWQge1xuICAgICAgICBpZiAoIXRoaXMubmJWaXNpYmxlRWxlbWVudHMpIHtcbiAgICAgICAgICAgIHRoaXMubmJWaXNpYmxlRWxlbWVudHMgPSB0aGlzLkRFRkFVTFRfTkJfVklTSVNCTEVfRUxFTUVOVFM7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy50aW1lU2xvdHMgPSB0aGlzLmN1cnJlbnRXZWVrLnRpbWVTbG90cy5zbGljZShcbiAgICAgICAgICAgIDAsXG4gICAgICAgICAgICB0aGlzLm5iVmlzaWJsZUVsZW1lbnRzXG4gICAgICAgICk7XG4gICAgICAgIHRoaXMudGltZXNsb3RSZW1haW5pbmcgPVxuICAgICAgICAgICAgdGhpcy5jdXJyZW50V2Vlay50aW1lU2xvdHMubGVuZ3RoIC0gdGhpcy5uYlZpc2libGVFbGVtZW50cztcbiAgICB9XG5cbiAgICBwcml2YXRlIGdldFZhbGlkVmFsdWUoXG4gICAgICAgIGRheTogc3RyaW5nLFxuICAgICAgICBkYXRlOiBudW1iZXJbXSxcbiAgICAgICAgdGltZTogc3RyaW5nLFxuICAgICAgICBjYWxlbmRhcjogQ2FsZW5kYXJcbiAgICApOiBTZWxlY3RlZFNsb3QgfCBudWxsIHwgdW5kZWZpbmVkIHtcbiAgICAgICAgaWYgKCFkYXkgfHwgIXRpbWUpIHtcbiAgICAgICAgICAgIGlmICh0aGlzLm1vZGVsXyAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBkYXksXG4gICAgICAgICAgICB0aW1lLFxuICAgICAgICAgICAgeWVhcjogY2FsZW5kYXIuY3VycmVudFdlZWsueWVhcixcbiAgICAgICAgICAgIHdlZWtOdW1iZXI6IGNhbGVuZGFyLmN1cnJlbnRXZWVrLndlZWtOdW1iZXIsXG4gICAgICAgICAgICBkYXRlXG4gICAgICAgIH07XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBvbk5iVmlzaWJsZUVsZW1lbnRzQ2hhbmdlKGNoYW5nZTogU2ltcGxlQ2hhbmdlKTogdm9pZCB7XG4gICAgICAgIGlmIChjaGFuZ2UpIHtcbiAgICAgICAgICAgIHRoaXMuc2xpY2VOYlZpc2libGVFbGVtZW50cygpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBvbktleURvd25Jbm5lcihrZXlFdmVudDogS2V5Ym9hcmRFdmVudCk6IGJvb2xlYW4ge1xuICAgICAgICAvLyBJRSBkb2Vzbid0IHN1cHBvcnQga2V5RXZlbnQuY29kZSwgYW5kIGhhcyBkaWZmZXJlbnQgdmFsdWVzXG4gICAgICAgIC8vIGluIGtleUV2ZW50LmtleSAoRG93biBpbnN0ZWFkIG9mIEFycm93RG93biBmb3IgaW5zdGFuY2UpLCBoZW5jZSB0aGUgbXVsdGktc3VwcG9ydC5cbiAgICAgICAgY29uc3QgaWUxMUNvbXBhdGlibGVDb2RlID0ga2V5RXZlbnQuY29kZSB8fCBrZXlFdmVudC5rZXk7XG4gICAgICAgIHN3aXRjaCAoaWUxMUNvbXBhdGlibGVDb2RlKSB7XG4gICAgICAgICAgICBjYXNlICdEb3duJzpcbiAgICAgICAgICAgIGNhc2UgJ0Fycm93RG93bic6XG4gICAgICAgICAgICBjYXNlICdSaWdodCc6XG4gICAgICAgICAgICBjYXNlICdBcnJvd1JpZ2h0JzpcbiAgICAgICAgICAgICAgICB0aGlzLmZvY3VzVGltZVNsb3QoMSk7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlICdVcCc6XG4gICAgICAgICAgICBjYXNlICdBcnJvd1VwJzpcbiAgICAgICAgICAgIGNhc2UgJ0xlZnQnOlxuICAgICAgICAgICAgY2FzZSAnQXJyb3dMZWZ0JzpcbiAgICAgICAgICAgICAgICB0aGlzLmZvY3VzVGltZVNsb3QoLTEpO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSAnU3BhY2UnOlxuICAgICAgICAgICAgY2FzZSAnU3BhY2ViYXInOlxuICAgICAgICAgICAgY2FzZSAnRW50ZXInOlxuICAgICAgICAgICAgICAgIGRvY3VtZW50LmFjdGl2ZUVsZW1lbnQuZGlzcGF0Y2hFdmVudChuZXcgRXZlbnQoJ2NsaWNrJykpO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgfVxuXG4gICAgICAgIGtleUV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgIGtleUV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xuXG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGZvY3VzVGltZVNsb3QoaW5jOiBudW1iZXIpOiB2b2lkIHtcbiAgICAgICAgY29uc3QgYnV0dG9uc0FycmF5ID0gWy4uLnRoaXMudGltZVNsb3RCdXR0b25zRWxlbVJlZi50b0FycmF5KCldO1xuICAgICAgICBjb25zdCBpbmRleHNlbGVjdGVkID0gYnV0dG9uc0FycmF5LmZpbmRJbmRleChcbiAgICAgICAgICAgIGl0ZW0gPT5cbiAgICAgICAgICAgICAgICBpdGVtLm5hdGl2ZUVsZW1lbnQuZ2V0QXR0cmlidXRlKCdpZCcpID09PVxuICAgICAgICAgICAgICAgIHRoaXMuY3VycmVudEFjdGl2ZUVsZW1lbnQuZ2V0QXR0cmlidXRlKCdpZCcpXG4gICAgICAgICk7XG4gICAgICAgIGNvbnN0IG5ld0luZGV4ID0gaW5kZXhzZWxlY3RlZCArIGluYztcbiAgICAgICAgaWYgKG5ld0luZGV4ID49IGJ1dHRvbnNBcnJheS5sZW5ndGgpIHtcbiAgICAgICAgICAgIGJ1dHRvbnNBcnJheVswXS5uYXRpdmVFbGVtZW50LmZvY3VzKCk7XG4gICAgICAgIH0gZWxzZSBpZiAobmV3SW5kZXggPCAwKSB7XG4gICAgICAgICAgICBidXR0b25zQXJyYXlbYnV0dG9uc0FycmF5Lmxlbmd0aCAtIDFdLm5hdGl2ZUVsZW1lbnQuZm9jdXMoKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGJ1dHRvbnNBcnJheVtuZXdJbmRleF0ubmF0aXZlRWxlbWVudC5mb2N1cygpO1xuICAgICAgICB9XG4gICAgfVxufVxuIiwiPHNlY3Rpb25cbiAgICAqbmdJZj1cImNhbGVuZGFyIHwgYXN5bmMgYXMgbG9hZGVkQ2FsZW5kYXJcIlxuICAgIGNsYXNzPVwicGFuZWwgcGFuZWwtZGVmYXVsdCBtYi0zXCJcbj5cbiAgICA8ZGl2IGNsYXNzPVwicGFuZWwtaGVhZGluZyBtdC0yIG1iLTIgcHktMiBkLWZsZXggYWxpZ24taXRlbXMtYmFzZWxpbmVcIj5cbiAgICAgICAgPGgzIGNsYXNzPVwiaDUgbWwtMyBtdC0wIG1iLTBcIj5cbiAgICAgICAgICAgIHt7IGNhcGl0YWxDYXNlRmlyc3RMZXR0ZXIoY3VycmVudFdlZWsuZGF5KSB9fVxuICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJzci1vbmx5XCIgKm5nSWY9XCIhIWlzU2VsZWN0ZWQodGltZUlucHV0VmFsdWUpXCI+XG4gICAgICAgICAgICAgICAgJm5ic3A7e3tcbiAgICAgICAgICAgICAgICAgICAgJ2ZvZWhuLWFnZW5kYS10aW1lc2xvdC1wYW5lbC5zZWxlY3RlZC10aW1lJ1xuICAgICAgICAgICAgICAgICAgICAgICAgfCBmcm9tRGljdGlvbmFyeTogeyB0aW1lU2VsZWN0ZWRWYWx1ZTogdGltZUlucHV0VmFsdWUgfVxuICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgIDwvaDM+XG4gICAgICAgIDxzbWFsbCAqbmdJZj1cIiEhY3VycmVudFdlZWsudGltZVNsb3RzLmxlbmd0aFwiIGNsYXNzPVwic3Itb25seVwiPlxuICAgICAgICAgICAge3tcbiAgICAgICAgICAgICAgICAnZm9laG4tYWdlbmRhLXRpbWVzbG90LXBhbmVsLm5ici1kaXNwbydcbiAgICAgICAgICAgICAgICAgICAgfCBmcm9tRGljdGlvbmFyeVxuICAgICAgICAgICAgICAgICAgICAgICAgOiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYkVsZW1lbnRzOiBjdXJyZW50V2Vlay50aW1lU2xvdHMubGVuZ3RoLnRvU3RyaW5nKClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfX1cbiAgICAgICAgPC9zbWFsbD5cbiAgICAgICAgPHNtYWxsXG4gICAgICAgICAgICAqbmdJZj1cIiFjdXJyZW50V2Vlay50aW1lU2xvdHMubGVuZ3RoXCJcbiAgICAgICAgICAgIGNsYXNzPVwiZm9udC1pdGFsaWMgYWxpZ24tc2VsZi1lbmQgbWwtMlwiXG4gICAgICAgID5cbiAgICAgICAgICAgIHt7ICdmb2Vobi1hZ2VuZGEtdGltZXNsb3QtcGFuZWwubm8tZGlzcG8nIHwgZnJvbURpY3Rpb25hcnkgfX1cbiAgICAgICAgPC9zbWFsbD5cbiAgICA8L2Rpdj5cblxuICAgIDxkaXZcbiAgICAgICAgKm5nSWY9XCIhIWN1cnJlbnRXZWVrLnRpbWVTbG90cy5sZW5ndGhcIlxuICAgICAgICBjbGFzcz1cInBhbmVsLWJvZHkgcm93IGQtZmxleCBmbGV4LXdyYXAgbWwtYXV0byBtci1hdXRvIHBsLTNcIlxuICAgICAgICAoZm9jdXNpbik9XCJvblRpbWVGb2N1c2luKClcIlxuICAgICAgICAoZm9jdXNvdXQpPVwib25UaW1lRm9jdXNvdXQoKVwiXG4gICAgICAgIHJvbGU9XCJhcHBsaWNhdGlvblwiXG4gICAgPlxuICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAqbmdGb3I9XCJsZXQgdGltZVNsb3Qgb2YgdGltZVNsb3RzOyBsZXQgaW5kZXggPSBpbmRleFwiXG4gICAgICAgICAgICBjbGFzcz1cImJ0biBidG4taW5mbyBtci0yIG1iLTJcIlxuICAgICAgICAgICAgI3RpbWVTbG90QnV0dG9uc0VsZW1SZWZcbiAgICAgICAgICAgIFthdHRyLmlkXT1cImN1cnJlbnRXZWVrLmRheSArICctJyArIHRpbWVTbG90XCJcbiAgICAgICAgICAgIFt0YWJpbmRleF09XCJnZXRUaW1lU2xvdFRhYkluZGV4KHRpbWVTbG90LCBpbmRleClcIlxuICAgICAgICAgICAgW2NsYXNzLmJ0bi1kYW5nZXJdPVwiaXNTZWxlY3RlZCh0aW1lU2xvdClcIlxuICAgICAgICAgICAgKGNsaWNrKT1cIlxuICAgICAgICAgICAgICAgIGhhbmRsZVVzZXJJbnB1dChcbiAgICAgICAgICAgICAgICAgICAgY3VycmVudFdlZWsuZGF5LFxuICAgICAgICAgICAgICAgICAgICBjdXJyZW50V2Vlay5kYXRlLFxuICAgICAgICAgICAgICAgICAgICB0aW1lU2xvdCxcbiAgICAgICAgICAgICAgICAgICAgbG9hZGVkQ2FsZW5kYXJcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICBcIlxuICAgICAgICAgICAgW2F0dHIuYXJpYS1sYWJlbF09XCJcbiAgICAgICAgICAgICAgICBnZXRCdXR0b25UaW1lU2xvdEFyaWFMYWJlbChjdXJyZW50V2Vlay5kYXksIHRpbWVTbG90KVxuICAgICAgICAgICAgXCJcbiAgICAgICAgPlxuICAgICAgICAgICAge3sgdGltZVNsb3QgfX1cbiAgICAgICAgPC9idXR0b24+XG4gICAgICAgIDxkaXZcbiAgICAgICAgICAgIGNsYXNzPVwiY29sLTEyIGQtZmxleCBqdXN0aWZ5LWNvbnRlbnQtZW5kIG1iLTFcIlxuICAgICAgICAgICAgKm5nSWY9XCJjdXJyZW50V2Vlay50aW1lU2xvdHMubGVuZ3RoID4gbmJWaXNpYmxlRWxlbWVudHNcIlxuICAgICAgICA+XG4gICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJidG4gYnRuLWxpbmsgc2hvdy1tb3JlXCJcbiAgICAgICAgICAgICAgICAjdGltZVNsb3RCdXR0b25zRWxlbVJlZlxuICAgICAgICAgICAgICAgIChjbGljayk9XCJ0b2dnbGVQYW5lbCgpXCJcbiAgICAgICAgICAgICAgICBbYXR0ci5hcmlhLWxhYmVsXT1cIlxuICAgICAgICAgICAgICAgICAgICAoaXNDbG9zZWRcbiAgICAgICAgICAgICAgICAgICAgICAgID8gJ2ZvZWhuLWFnZW5kYS10aW1lc2xvdC1wYW5lbC5zaG93LW1vcmUtc3Itb25seSdcbiAgICAgICAgICAgICAgICAgICAgICAgIDogJ2ZvZWhuLWFnZW5kYS10aW1lc2xvdC1wYW5lbC5zaG93LWxlc3MnXG4gICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgICAgIHwgZnJvbURpY3Rpb25hcnlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYnJFbGVtZW50c0hpZGRlbjogdGltZXNsb3RSZW1haW5pbmcudG9TdHJpbmcoKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIFwiXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAge3tcbiAgICAgICAgICAgICAgICAgICAgKGlzQ2xvc2VkXG4gICAgICAgICAgICAgICAgICAgICAgICA/ICdmb2Vobi5hZ2VuZGEtdGltZXNsb3QtcGFuZWwuc2hvdy1tb3JlJ1xuICAgICAgICAgICAgICAgICAgICAgICAgOiAnZm9laG4tYWdlbmRhLXRpbWVzbG90LXBhbmVsLnNob3ctbGVzcydcbiAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgICAgfCBmcm9tRGljdGlvbmFyeVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDoge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5ickVsZW1lbnRzSGlkZGVuOiB0aW1lc2xvdFJlbWFpbmluZy50b1N0cmluZygpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbjwvc2VjdGlvbj5cbiJdfQ==
|
|
240
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9laG4tYWdlbmRhLXRpbWVzbG90LXBhbmVsLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3ByZXN0YXRpb25zLW5nL3NyYy9mb2Vobi1hZ2VuZGEvZm9laG4tYWdlbmRhLXRpbWVzbG90LXBhbmVsL2ZvZWhuLWFnZW5kYS10aW1lc2xvdC1wYW5lbC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9wcmVzdGF0aW9ucy1uZy9zcmMvZm9laG4tYWdlbmRhL2ZvZWhuLWFnZW5kYS10aW1lc2xvdC1wYW5lbC9mb2Vobi1hZ2VuZGEtdGltZXNsb3QtcGFuZWwuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNILFNBQVMsRUFFVCxVQUFVLEVBQ1YsWUFBWSxFQUNaLEtBQUssRUFLTCxZQUFZLEVBQ2YsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0seUNBQXlDLENBQUM7Ozs7O0FBbUI5RSxNQUFNLE9BQU8saUNBQ1QsU0FBUSxtQkFBaUM7SUF5QnpDLFlBQW9CLGlCQUF1QztRQUN2RCxLQUFLLEVBQUUsQ0FBQztRQURRLHNCQUFpQixHQUFqQixpQkFBaUIsQ0FBc0I7UUFaM0QsYUFBUSxHQUFHLElBQUksQ0FBQztRQUlQLGlDQUE0QixHQUFHLEVBQUUsQ0FBQztRQUluQyw4QkFBeUIsR0FBRyxLQUFLLENBQUM7UUFFbEMsMkJBQXNCLEdBQUcsS0FBSyxDQUFDO1FBSW5DLElBQUksQ0FBQyxpQkFBaUIsR0FBRyxJQUFJLENBQUMsNEJBQTRCLENBQUM7SUFDL0QsQ0FBQztJQUVELElBQUksV0FBVztRQUNYLE9BQU8sSUFBSSxDQUFDLFlBQVksQ0FBQztJQUM3QixDQUFDO0lBRUQsSUFDSSxXQUFXLENBQUMsS0FBZTtRQUMzQixJQUFJLENBQUMsWUFBWSxHQUFHLEtBQUssQ0FBQztRQUMxQixJ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V0FBVyxFQUFFLFVBQVUsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxpQ0FBaUMsQ0FBQztZQUNoRSxLQUFLLEVBQUUsSUFBSTtTQUNkO0tBQ0osMkxDN0JMLGs4R0E4RkE7MkZEL0RhLGlDQUFpQztrQkFaN0MsU0FBUzsrQkFDSSw2QkFBNkIsYUFHNUI7d0JBQ1A7NEJBQ0ksT0FBTyxFQUFFLG1CQUFtQjs0QkFDNUIsV0FBVyxFQUFFLFVBQVUsQ0FBQyxHQUFHLEVBQUUsa0NBQWtDLENBQUM7NEJBQ2hFLEtBQUssRUFBRSxJQUFJO3lCQUNkO3FCQUNKOzJHQU1ELHNCQUFzQjtzQkFEckIsWUFBWTt1QkFBQyx3QkFBd0I7Z0JBSXRDLFFBQVE7c0JBRFAsS0FBSztnQkFJTixpQkFBaUI7c0JBRGhCLEtBQUs7Z0JBMkJGLFdBQVc7c0JBRGQsS0FBSztnQkFPTix1QkFBdUI7c0JBRHRCLFlBQVk7dUJBQUMsU0FBUyxFQUFFLENBQUMsUUFBUSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgICBDb21wb25lbnQsXG4gICAgRWxlbWVudFJlZixcbiAgICBmb3J3YXJkUmVmLFxuICAgIEhvc3RMaXN0ZW5lcixcbiAgICBJbnB1dCxcbiAgICBPbkNoYW5nZXMsXG4gICAgUXVlcnlMaXN0LFxuICAgIFNpbXBsZUNoYW5nZSxcbiAgICBTaW1wbGVDaGFuZ2VzLFxuICAgIFZpZXdDaGlsZHJlblxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEZvZWhuSW5wdXRDb21wb25lbnQgfSBmcm9tICcuLi8uLi9mb2Vobi1pbnB1dC9mb2Vobi1pbnB1dC5jb21wb25lbnQnO1xuaW1wb3J0IHsgT2JzZXJ2YWJsZSB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgU2RrRGljdGlvbmFyeVNlcnZpY2UgfSBmcm9tICcuLi8uLi9zZGstZGljdGlvbmFyeS9zZGstZGljdGlvbmFyeS5zZXJ2aWNlJztcbmltcG9ydCB7IFNlbGVjdGVkU2xvdCB9IGZyb20gJy4uL3NlbGVjdGVkLXNsb3QudHlwZSc7XG5pbXBvcnQgeyBEYXlTbG90cyB9IGZyb20gJy4uL2RheS1zbG90cy50eXBlJztcbmltcG9ydCB7IENhbGVuZGFyIH0gZnJvbSAnLi4vY2FsZW5kYXIudHlwZSc7XG5cbkBDb21wb25lbnQoe1xuICAgIHNlbGVjdG9yOiAnZm9laG4tYWdlbmRhLXRpbWVzbG90LXBhbmVsJyxcbiAgICB0ZW1wbGF0ZVVybDogJy4vZm9laG4tYWdlbmRhLXRpbWVzbG90LXBhbmVsLmNvbXBvbmVudC5odG1sJyxcbiAgICBzdHlsZVVybHM6IFsnLi9mb2Vobi1hZ2VuZGEtdGltZXNsb3QtcGFuZWwuY29tcG9uZW50LmNzcyddLFxuICAgIHByb3ZpZGVyczogW1xuICAgICAgICB7XG4gICAgICAgICAgICBwcm92aWRlOiBGb2VobklucHV0Q29tcG9uZW50LFxuICAgICAgICAgICAgdXNlRXhpc3Rpbmc6IGZvcndhcmRSZWYoKCkgPT4gRm9laG5BZ2VuZGFUaW1lc2xvdFBhbmVsQ29tcG9uZW50KSxcbiAgICAgICAgICAgIG11bHRpOiB0cnVlXG4gICAgICAgIH1cbiAgICBdXG59KVxuZXhwb3J0IGNsYXNzIEZvZWhuQWdlbmRhVGltZXNsb3RQYW5lbENvbXBvbmVudFxuICAgIGV4dGVuZHMgRm9laG5JbnB1dENvbXBvbmVudDxTZWxlY3RlZFNsb3Q+XG4gICAgaW1wbGVtZW50cyBPbkNoYW5nZXMge1xuICAgIEBWaWV3Q2hpbGRyZW4oJ3RpbWVTbG90QnV0dG9uc0VsZW1SZWYnKVxuICAgIHRpbWVTbG90QnV0dG9uc0VsZW1SZWY6IFF1ZXJ5TGlzdDxFbGVtZW50UmVmPjtcblxuICAgIEBJbnB1dCgpXG4gICAgY2FsZW5kYXI6IE9ic2VydmFibGU8Q2FsZW5kYXI+O1xuXG4gICAgQElucHV0KClcbiAgICBuYlZpc2libGVFbGVtZW50czogbnVtYmVyO1xuXG4gICAgc2VsZWN0ZWRUaW1lU2xvdDogc3RyaW5nO1xuICAgIHRpbWVTbG90czogc3RyaW5nW107XG4gICAgaXNDbG9zZWQgPSB0cnVlO1xuICAgIHRpbWVzbG90UmVtYWluaW5nOiBudW1iZXI7XG4gICAgdGltZUlucHV0VmFsdWU6IHN0cmluZztcblxuICAgIHJlYWRvbmx5IERFRkFVTFRfTkJfVklTSVNCTEVfRUxFTUVOVFMgPSAyMjtcblxuICAgIHByaXZhdGUgY3VycmVudFdlZWtfOiBEYXlTbG90cztcbiAgICBwcml2YXRlIGRheUlucHV0VmFsdWU6IHN0cmluZztcbiAgICBwcml2YXRlIGtleWJvYXJkTmF2aWdhdGlvbkFsbG93ZWQgPSBmYWxzZTtcbiAgICBwcml2YXRlIGN1cnJlbnRBY3RpdmVFbGVtZW50OiBFbGVtZW50O1xuICAgIHByaXZhdGUgaGFzU2VsZWN0ZWRTbG90SW5QYW5lbCA9IGZhbHNlO1xuXG4gICAgY29uc3RydWN0b3IocHJpdmF0ZSBkaWN0aW9uYXJ5U2VydmljZTogU2RrRGljdGlvbmFyeVNlcnZpY2UpIHtcbiAgICAgICAgc3VwZXIoKTtcbiAgICAgICAgdGhpcy5uYlZpc2libGVFbGVtZW50cyA9IHRoaXMuREVGQVVMVF9OQl9WSVNJU0JMRV9FTEVNRU5UUztcbiAgICB9XG5cbiAgICBnZXQgY3VycmVudFdlZWsoKTogRGF5U2xvdHMge1xuICAgICAgICByZXR1cm4gdGhpcy5jdXJyZW50V2Vla187XG4gICAgfVxuXG4gICAgQElucHV0KClcbiAgICBzZXQgY3VycmVudFdlZWsodmFsdWU6IERheVNsb3RzKSB7XG4gICAgICAgIHRoaXMuY3VycmVudFdlZWtfID0gdmFsdWU7XG4gICAgICAgIHRoaXMuc2xpY2VOYlZpc2libGVFbGVtZW50cygpO1xuICAgIH1cblxuICAgIEBIb3N0TGlzdGVuZXIoJ2tleWRvd24nLCBbJyRldmVudCddKVxuICAgIGhhbmRsZUtleWJvYXJkRG93bkV2ZW50KGV2ZW50OiBLZXlib2FyZEV2ZW50KTogdm9pZCB7XG4gICAgICAgIGlmICh0aGlzLmtleWJvYXJkTmF2aWdhdGlvbkFsbG93ZWQpIHtcbiAgICAgICAgICAgIHRoaXMub25LZXlEb3duSW5uZXIoZXZlbnQpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgZm9jdXMoKTogdm9pZCB7XG4gICAgICAgIGNvbnN0IHRpbWVTbG90QnV0dG9uc0VsZW1SZWZBcnJheSA9IFtcbiAgICAgICAgICAgIC4uLnRoaXMudGltZVNsb3RCdXR0b25zRWxlbVJlZi50b0FycmF5KClcbiAgICAgICAgXTtcbiAgICAgICAgaWYgKCEhdGltZVNsb3RCdXR0b25zRWxlbVJlZkFycmF5Lmxlbmd0aCkge1xuICAgICAgICAgICAgdGltZVNsb3RCdXR0b25zRWxlbVJlZkFycmF5WzBdLm5hdGl2ZUVsZW1lbnQuZm9jdXMoKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5vbk5iVmlzaWJsZUVsZW1lbnRzQ2hhbmdlKGNoYW5nZXMubmJWaXNpYmxlRWxlbWVudHMpO1xuICAgIH1cblxuICAgIGNhcGl0YWxDYXNlRmlyc3RMZXR0ZXIoczogc3RyaW5nKTogc3RyaW5nIHtcbiAgICAgICAgaWYgKCFzKSB7XG4gICAgICAgICAgICByZXR1cm4gcztcbiAgICAgICAgfVxuICAgICAgICBpZiAocy5sZW5ndGggPT09IDEpIHtcbiAgICAgICAgICAgIHJldHVybiBzLnRvVXBwZXJDYXNlKCk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGAke3MuY2hhckF0KDApLnRvVXBwZXJDYXNlKCl9JHtzLnNsaWNlKDEpfWA7XG4gICAgfVxuXG4gICAgaGFuZGxlVXNlcklucHV0KFxuICAgICAgICBkYXk6IHN0cmluZyxcbiAgICAgICAgZGF0ZTogbnVtYmVyW10sXG4gICAgICAgIHRpbWU6IHN0cmluZyxcbiAgICAgICAgY2FsZW5kYXI6IENhbGVuZGFyXG4gICAgKTogdm9pZCB7XG4gICAgICAgIGNvbnN0IHZhbGlkVmFsdWUgPSB0aGlzLmdldFZhbGlkVmFsdWUoZGF5LCBkYXRlLCB0aW1lLCBjYWxlbmRhcik7XG4gICAgICAgIGlmICh0eXBlb2YgdmFsaWRWYWx1ZSAhPT0gJ3VuZGVmaW5lZCcpIHtcbiAgICAgICAgICAgIHRoaXMudXNlcklucHV0Lm5leHQodmFsaWRWYWx1ZSk7XG4gICAgICAgICAgICB0aGlzLnVwZGF0ZU5nTW9kZWwodmFsaWRWYWx1ZSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICB0b2dnbGVQYW5lbCgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5pc0Nsb3NlZCA9ICF0aGlzLmlzQ2xvc2VkO1xuICAgICAgICBpZiAodGhpcy5pc0Nsb3NlZCkge1xuICAgICAgICAgICAgdGhpcy5zbGljZU5iVmlzaWJsZUVsZW1lbnRzKCk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAvLyBOZWVkIHNldFRpbWVvdXQgYmVjYXVzZSB3ZSBhcmUgb3V0c2lkZSBhbmd1bGFyIGN5Y2xlIHdoZW4gcmVsb2FkaW5nIHBhZ2VcbiAgICAgICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgICAgICAgIHRoaXMudGltZVNsb3RzID0gdGhpcy5jdXJyZW50V2Vlay50aW1lU2xvdHM7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIG9uTW9kZWxDaGFuZ2UodmFsdWU6IFNlbGVjdGVkU2xvdCk6IHZvaWQge1xuICAgICAgICBpZiAodmFsdWUpIHtcbiAgICAgICAgICAgIHRoaXMuc2VsZWN0ZWRUaW1lU2xvdCA9IGAke3ZhbHVlLmRheX0tJHt2YWx1ZS50aW1lfWA7XG4gICAgICAgICAgICB0aGlzLnRpbWVJbnB1dFZhbHVlID0gdmFsdWUudGltZTtcbiAgICAgICAgICAgIHRoaXMuZGF5SW5wdXRWYWx1ZSA9IHZhbHVlLmRheTtcbiAgICAgICAgfSBlbHNlIGlmICghdmFsdWUpIHtcbiAgICAgICAgICAgIHRoaXMuc2VsZWN0ZWRUaW1lU2xvdCA9IG51bGw7XG4gICAgICAgICAgICB0aGlzLnRpbWVJbnB1dFZhbHVlID0gbnVsbDtcbiAgICAgICAgICAgIHRoaXMuZGF5SW5wdXRWYWx1ZSA9IG51bGw7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5zZWFyY2hUaW1lVmFsdWVJblRpbWVTbG90KCk7XG4gICAgfVxuXG4gICAgZ2V0VGltZUlucHV0VmFsdWUoczogc3RyaW5nKTogc3RyaW5nIHtcbiAgICAgICAgaWYgKCEhcykge1xuICAgICAgICAgICAgY29uc3QgdmFsdWVTcGxpdCA9IHMuc3BsaXQoJy0nKTtcbiAgICAgICAgICAgIGlmICh2YWx1ZVNwbGl0Lmxlbmd0aCA+PSAyKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHZhbHVlU3BsaXRbMV07XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHM7XG4gICAgfVxuXG4gICAgc2VhcmNoVGltZVZhbHVlSW5UaW1lU2xvdCgpOiB2b2lkIHtcbiAgICAgICAgY29uc3QgcG9zaXRpb25WYWx1ZSA9IHRoaXMuY3VycmVudFdlZWsudGltZVNsb3RzLmZpbmRJbmRleChcbiAgICAgICAgICAgIHggPT5cbiAgICAgICAgICAgICAgICB4ID09PSB0aGlzLnRpbWVJbnB1dFZhbHVlICYmXG4gICAgICAgICAgICAgICAgdGhpcy5jdXJyZW50V2Vlay5kYXkgPT09IHRoaXMuZGF5SW5wdXRWYWx1ZVxuICAgICAgICApO1xuICAgICAgICBpZiAocG9zaXRpb25WYWx1ZSAhPT0gLTEgJiYgISF0aGlzLnNlbGVjdGVkVGltZVNsb3QpIHtcbiAgICAgICAgICAgIHRoaXMuaGFzU2VsZWN0ZWRTbG90SW5QYW5lbCA9IHRydWU7XG4gICAgICAgICAgICBpZiAodGhpcy5pc0Nsb3NlZCAmJiBwb3NpdGlvblZhbHVlID49IHRoaXMubmJWaXNpYmxlRWxlbWVudHMpIHtcbiAgICAgICAgICAgICAgICB0aGlzLnRvZ2dsZVBhbmVsKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLmhhc1NlbGVjdGVkU2xvdEluUGFuZWwgPSBmYWxzZTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIG9uVGltZUZvY3VzaW4oKTogdm9pZCB7XG4gICAgICAgIHRoaXMua2V5Ym9hcmROYXZpZ2F0aW9uQWxsb3dlZCA9IHRydWU7XG4gICAgICAgIHRoaXMuY3VycmVudEFjdGl2ZUVsZW1lbnQgPSBkb2N1bWVudC5hY3RpdmVFbGVtZW50O1xuICAgIH1cblxuICAgIG9uVGltZUZvY3Vzb3V0KCk6IHZvaWQge1xuICAgICAgICB0aGlzLmtleWJvYXJkTmF2aWdhdGlvbkFsbG93ZWQgPSBmYWxzZTtcbiAgICB9XG5cbiAgICBpc1NlbGVjdGVkKHRpbWVTbG90OiBzdHJpbmcpOiBib29sZWFuIHtcbiAgICAgICAgaWYgKCF0aGlzLnNlbGVjdGVkVGltZVNsb3QpIHtcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgdGltZVNsb3QgPT09IHRoaXMudGltZUlucHV0VmFsdWUgJiZcbiAgICAgICAgICAgIHRoaXMuY3VycmVudFdlZWsuZGF5ID09PSB0aGlzLmRheUlucHV0VmFsdWVcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICBnZXRCdXR0b25UaW1lU2xvdEFyaWFMYWJlbChkYXk6IHN0cmluZywgdGltZVNsb3Q6IHN0cmluZyk6IHN0cmluZyB7XG4gICAgICAgIGxldCByZXN1bHQgPSBgJHtkYXl9ICR7dGltZVNsb3R9YDtcbiAgICAgICAgaWYgKHRoaXMuaXNTZWxlY3RlZCh0aW1lU2xvdCkpIHtcbiAgICAgICAgICAgIHJlc3VsdCArPSB0aGlzLmRpY3Rpb25hcnlTZXJ2aWNlLmdldEtleVN5bmMoXG4gICAgICAgICAgICAgICAgJ2ZvZWhuLWFnZW5kYS50aW1lc2xvdC5zZWxlY3RlZCdcbiAgICAgICAgICAgICk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICB9XG5cbiAgICBnZXRUaW1lU2xvdFRhYkluZGV4KHRpbWVTbG90OiBzdHJpbmcsIGluZGV4OiBudW1iZXIpOiBudW1iZXIge1xuICAgICAgICBpZiAodGhpcy5pc1NlbGVjdGVkKHRpbWVTbG90KSkge1xuICAgICAgICAgICAgcmV0dXJuIDA7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKCFpbmRleCAmJiAhdGhpcy5oYXNTZWxlY3RlZFNsb3RJblBhbmVsKSB7XG4gICAgICAgICAgICByZXR1cm4gMDtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gLTE7XG4gICAgfVxuXG4gICAgY2xlYW5JZEZvclF1ZXJ5U2VsZWN0b3Ioczogc3RyaW5nKTogc3RyaW5nIHtcbiAgICAgICAgcyA9IHMucmVwbGFjZShuZXcgUmVnRXhwKCcgJywgJ2cnKSwgJ18nKTtcbiAgICAgICAgcmV0dXJuIHMucmVwbGFjZShuZXcgUmVnRXhwKCc6JywgJ2cnKSwgJ18nKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIHNsaWNlTmJWaXNpYmxlRWxlbWVudHMoKTogdm9pZCB7XG4gICAgICAgIGlmICghdGhpcy5uYlZpc2libGVFbGVtZW50cykge1xuICAgICAgICAgICAgdGhpcy5uYlZpc2libGVFbGVtZW50cyA9IHRoaXMuREVGQVVMVF9OQl9WSVNJU0JMRV9FTEVNRU5UUztcbiAgICAgICAgfVxuICAgICAgICB0aGlzLnRpbWVTbG90cyA9IHRoaXMuY3VycmVudFdlZWsudGltZVNsb3RzLnNsaWNlKFxuICAgICAgICAgICAgMCxcbiAgICAgICAgICAgIHRoaXMubmJWaXNpYmxlRWxlbWVudHNcbiAgICAgICAgKTtcbiAgICAgICAgdGhpcy50aW1lc2xvdFJlbWFpbmluZyA9XG4gICAgICAgICAgICB0aGlzLmN1cnJlbnRXZWVrLnRpbWVTbG90cy5sZW5ndGggLSB0aGlzLm5iVmlzaWJsZUVsZW1lbnRzO1xuICAgIH1cblxuICAgIHByaXZhdGUgZ2V0VmFsaWRWYWx1ZShcbiAgICAgICAgZGF5OiBzdHJpbmcsXG4gICAgICAgIGRhdGU6IG51bWJlcltdLFxuICAgICAgICB0aW1lOiBzdHJpbmcsXG4gICAgICAgIGNhbGVuZGFyOiBDYWxlbmRhclxuICAgICk6IFNlbGVjdGVkU2xvdCB8IG51bGwgfCB1bmRlZmluZWQge1xuICAgICAgICBpZiAoIWRheSB8fCAhdGltZSkge1xuICAgICAgICAgICAgaWYgKHRoaXMubW9kZWxfICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIGRheSxcbiAgICAgICAgICAgIHRpbWUsXG4gICAgICAgICAgICB5ZWFyOiBjYWxlbmRhci5jdXJyZW50V2Vlay55ZWFyLFxuICAgICAgICAgICAgd2Vla051bWJlcjogY2FsZW5kYXIuY3VycmVudFdlZWsud2Vla051bWJlcixcbiAgICAgICAgICAgIGRhdGVcbiAgICAgICAgfTtcbiAgICB9XG5cbiAgICBwcml2YXRlIG9uTmJWaXNpYmxlRWxlbWVudHNDaGFuZ2UoY2hhbmdlOiBTaW1wbGVDaGFuZ2UpOiB2b2lkIHtcbiAgICAgICAgaWYgKGNoYW5nZSkge1xuICAgICAgICAgICAgdGhpcy5zbGljZU5iVmlzaWJsZUVsZW1lbnRzKCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcml2YXRlIG9uS2V5RG93bklubmVyKGtleUV2ZW50OiBLZXlib2FyZEV2ZW50KTogYm9vbGVhbiB7XG4gICAgICAgIC8vIElFIGRvZXNuJ3Qgc3VwcG9ydCBrZXlFdmVudC5jb2RlLCBhbmQgaGFzIGRpZmZlcmVudCB2YWx1ZXNcbiAgICAgICAgLy8gaW4ga2V5RXZlbnQua2V5IChEb3duIGluc3RlYWQgb2YgQXJyb3dEb3duIGZvciBpbnN0YW5jZSksIGhlbmNlIHRoZSBtdWx0aS1zdXBwb3J0LlxuICAgICAgICBjb25zdCBpZTExQ29tcGF0aWJsZUNvZGUgPSBrZXlFdmVudC5jb2RlIHx8IGtleUV2ZW50LmtleTtcbiAgICAgICAgc3dpdGNoIChpZTExQ29tcGF0aWJsZUNvZGUpIHtcbiAgICAgICAgICAgIGNhc2UgJ0Rvd24nOlxuICAgICAgICAgICAgY2FzZSAnQXJyb3dEb3duJzpcbiAgICAgICAgICAgIGNhc2UgJ1JpZ2h0JzpcbiAgICAgICAgICAgIGNhc2UgJ0Fycm93UmlnaHQnOlxuICAgICAgICAgICAgICAgIHRoaXMuZm9jdXNUaW1lU2xvdCgxKTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgJ1VwJzpcbiAgICAgICAgICAgIGNhc2UgJ0Fycm93VXAnOlxuICAgICAgICAgICAgY2FzZSAnTGVmdCc6XG4gICAgICAgICAgICBjYXNlICdBcnJvd0xlZnQnOlxuICAgICAgICAgICAgICAgIHRoaXMuZm9jdXNUaW1lU2xvdCgtMSk7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlICdTcGFjZSc6XG4gICAgICAgICAgICBjYXNlICdTcGFjZWJhcic6XG4gICAgICAgICAgICBjYXNlICdFbnRlcic6XG4gICAgICAgICAgICAgICAgZG9jdW1lbnQuYWN0aXZlRWxlbWVudC5kaXNwYXRjaEV2ZW50KG5ldyBFdmVudCgnY2xpY2snKSk7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICB9XG5cbiAgICAgICAga2V5RXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAga2V5RXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XG5cbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cblxuICAgIHByaXZhdGUgZm9jdXNUaW1lU2xvdChpbmM6IG51bWJlcik6IHZvaWQge1xuICAgICAgICBjb25zdCBidXR0b25zQXJyYXkgPSBbLi4udGhpcy50aW1lU2xvdEJ1dHRvbnNFbGVtUmVmLnRvQXJyYXkoKV07XG4gICAgICAgIGNvbnN0IGluZGV4c2VsZWN0ZWQgPSBidXR0b25zQXJyYXkuZmluZEluZGV4KFxuICAgICAgICAgICAgaXRlbSA9PlxuICAgICAgICAgICAgICAgIGl0ZW0ubmF0aXZlRWxlbWVudC5nZXRBdHRyaWJ1dGUoJ2lkJykgPT09XG4gICAgICAgICAgICAgICAgdGhpcy5jdXJyZW50QWN0aXZlRWxlbWVudC5nZXRBdHRyaWJ1dGUoJ2lkJylcbiAgICAgICAgKTtcbiAgICAgICAgY29uc3QgbmV3SW5kZXggPSBpbmRleHNlbGVjdGVkICsgaW5jO1xuICAgICAgICBpZiAobmV3SW5kZXggPj0gYnV0dG9uc0FycmF5Lmxlbmd0aCkge1xuICAgICAgICAgICAgYnV0dG9uc0FycmF5WzBdLm5hdGl2ZUVsZW1lbnQuZm9jdXMoKTtcbiAgICAgICAgfSBlbHNlIGlmIChuZXdJbmRleCA8IDApIHtcbiAgICAgICAgICAgIGJ1dHRvbnNBcnJheVtidXR0b25zQXJyYXkubGVuZ3RoIC0gMV0ubmF0aXZlRWxlbWVudC5mb2N1cygpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgYnV0dG9uc0FycmF5W25ld0luZGV4XS5uYXRpdmVFbGVtZW50LmZvY3VzKCk7XG4gICAgICAgIH1cbiAgICB9XG59XG4iLCI8c2VjdGlvblxuICAgICpuZ0lmPVwiY2FsZW5kYXIgfCBhc3luYyBhcyBsb2FkZWRDYWxlbmRhclwiXG4gICAgY2xhc3M9XCJwYW5lbCBwYW5lbC1kZWZhdWx0IG1iLTNcIlxuPlxuICAgIDxkaXYgY2xhc3M9XCJwYW5lbC1oZWFkaW5nIG10LTIgbWItMiBweS0yIGQtZmxleCBhbGlnbi1pdGVtcy1iYXNlbGluZVwiPlxuICAgICAgICA8aDMgY2xhc3M9XCJoNSBtbC0zIG10LTAgbWItMFwiPlxuICAgICAgICAgICAge3sgY2FwaXRhbENhc2VGaXJzdExldHRlcihjdXJyZW50V2Vlay5kYXkpIH19XG4gICAgICAgICAgICA8c3BhbiBjbGFzcz1cInNyLW9ubHlcIiAqbmdJZj1cIiEhaXNTZWxlY3RlZCh0aW1lSW5wdXRWYWx1ZSlcIj5cbiAgICAgICAgICAgICAgICAmbmJzcDt7e1xuICAgICAgICAgICAgICAgICAgICAnZm9laG4tYWdlbmRhLXRpbWVzbG90LXBhbmVsLnNlbGVjdGVkLXRpbWUnXG4gICAgICAgICAgICAgICAgICAgICAgICB8IGZyb21EaWN0aW9uYXJ5OiB7IHRpbWVTZWxlY3RlZFZhbHVlOiB0aW1lSW5wdXRWYWx1ZSB9XG4gICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgPC9oMz5cbiAgICAgICAgPHNtYWxsICpuZ0lmPVwiISFjdXJyZW50V2Vlay50aW1lU2xvdHMubGVuZ3RoXCIgY2xhc3M9XCJzci1vbmx5XCI+XG4gICAgICAgICAgICB7e1xuICAgICAgICAgICAgICAgICdmb2Vobi1hZ2VuZGEtdGltZXNsb3QtcGFuZWwubmJyLWRpc3BvJ1xuICAgICAgICAgICAgICAgICAgICB8IGZyb21EaWN0aW9uYXJ5XG4gICAgICAgICAgICAgICAgICAgICAgICA6IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5iRWxlbWVudHM6IGN1cnJlbnRXZWVrLnRpbWVTbG90cy5sZW5ndGgudG9TdHJpbmcoKVxuICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9fVxuICAgICAgICA8L3NtYWxsPlxuICAgICAgICA8c21hbGxcbiAgICAgICAgICAgICpuZ0lmPVwiIWN1cnJlbnRXZWVrLnRpbWVTbG90cy5sZW5ndGhcIlxuICAgICAgICAgICAgY2xhc3M9XCJmb250LWl0YWxpYyBhbGlnbi1zZWxmLWVuZCBtbC0yXCJcbiAgICAgICAgPlxuICAgICAgICAgICAge3sgJ2ZvZWhuLWFnZW5kYS10aW1lc2xvdC1wYW5lbC5uby1kaXNwbycgfCBmcm9tRGljdGlvbmFyeSB9fVxuICAgICAgICA8L3NtYWxsPlxuICAgIDwvZGl2PlxuXG4gICAgPGRpdlxuICAgICAgICAqbmdJZj1cIiEhY3VycmVudFdlZWsudGltZVNsb3RzLmxlbmd0aFwiXG4gICAgICAgIGNsYXNzPVwicGFuZWwtYm9keSByb3cgZC1mbGV4IGZsZXgtd3JhcCBtbC1hdXRvIG1yLWF1dG8gcGwtM1wiXG4gICAgICAgIChmb2N1c2luKT1cIm9uVGltZUZvY3VzaW4oKVwiXG4gICAgICAgIChmb2N1c291dCk9XCJvblRpbWVGb2N1c291dCgpXCJcbiAgICAgICAgcm9sZT1cImFwcGxpY2F0aW9uXCJcbiAgICA+XG4gICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICpuZ0Zvcj1cImxldCB0aW1lU2xvdCBvZiB0aW1lU2xvdHM7IGxldCBpbmRleCA9IGluZGV4XCJcbiAgICAgICAgICAgIGNsYXNzPVwiYnRuIGJ0bi1pbmZvIG1yLTIgbWItMlwiXG4gICAgICAgICAgICAjdGltZVNsb3RCdXR0b25zRWxlbVJlZlxuICAgICAgICAgICAgW2F0dHIuaWRdPVwiXG4gICAgICAgICAgICAgICAgY2xlYW5JZEZvclF1ZXJ5U2VsZWN0b3IoY3VycmVudFdlZWsuZGF5ICsgJy0nICsgdGltZVNsb3QpXG4gICAgICAgICAgICBcIlxuICAgICAgICAgICAgW3RhYmluZGV4XT1cImdldFRpbWVTbG90VGFiSW5kZXgodGltZVNsb3QsIGluZGV4KVwiXG4gICAgICAgICAgICBbY2xhc3MuYnRuLWRhbmdlcl09XCJpc1NlbGVjdGVkKHRpbWVTbG90KVwiXG4gICAgICAgICAgICAoY2xpY2spPVwiXG4gICAgICAgICAgICAgICAgaGFuZGxlVXNlcklucHV0KFxuICAgICAgICAgICAgICAgICAgICBjdXJyZW50V2Vlay5kYXksXG4gICAgICAgICAgICAgICAgICAgIGN1cnJlbnRXZWVrLmRhdGUsXG4gICAgICAgICAgICAgICAgICAgIHRpbWVTbG90LFxuICAgICAgICAgICAgICAgICAgICBsb2FkZWRDYWxlbmRhclxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgIFwiXG4gICAgICAgICAgICBbYXR0ci5hcmlhLWxhYmVsXT1cIlxuICAgICAgICAgICAgICAgIGdldEJ1dHRvblRpbWVTbG90QXJpYUxhYmVsKGN1cnJlbnRXZWVrLmRheSwgdGltZVNsb3QpXG4gICAgICAgICAgICBcIlxuICAgICAgICA+XG4gICAgICAgICAgICB7eyB0aW1lU2xvdCB9fVxuICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgPGRpdlxuICAgICAgICAgICAgY2xhc3M9XCJjb2wtMTIgZC1mbGV4IGp1c3RpZnktY29udGVudC1lbmQgbWItMVwiXG4gICAgICAgICAgICAqbmdJZj1cImN1cnJlbnRXZWVrLnRpbWVTbG90cy5sZW5ndGggPiBuYlZpc2libGVFbGVtZW50c1wiXG4gICAgICAgID5cbiAgICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICAgICBjbGFzcz1cImJ0biBidG4tbGluayBzaG93LW1vcmVcIlxuICAgICAgICAgICAgICAgICN0aW1lU2xvdEJ1dHRvbnNFbGVtUmVmXG4gICAgICAgICAgICAgICAgKGNsaWNrKT1cInRvZ2dsZVBhbmVsKClcIlxuICAgICAgICAgICAgICAgIFthdHRyLmFyaWEtbGFiZWxdPVwiXG4gICAgICAgICAgICAgICAgICAgIChpc0Nsb3NlZFxuICAgICAgICAgICAgICAgICAgICAgICAgPyAnZm9laG4tYWdlbmRhLXRpbWVzbG90LXBhbmVsLnNob3ctbW9yZS1zci1vbmx5J1xuICAgICAgICAgICAgICAgICAgICAgICAgOiAnZm9laG4tYWdlbmRhLXRpbWVzbG90LXBhbmVsLnNob3ctbGVzcydcbiAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgICAgfCBmcm9tRGljdGlvbmFyeVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDoge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5ickVsZW1lbnRzSGlkZGVuOiB0aW1lc2xvdFJlbWFpbmluZy50b1N0cmluZygpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgXCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICB7e1xuICAgICAgICAgICAgICAgICAgICAoaXNDbG9zZWRcbiAgICAgICAgICAgICAgICAgICAgICAgID8gJ2ZvZWhuLmFnZW5kYS10aW1lc2xvdC1wYW5lbC5zaG93LW1vcmUnXG4gICAgICAgICAgICAgICAgICAgICAgICA6ICdmb2Vobi1hZ2VuZGEtdGltZXNsb3QtcGFuZWwuc2hvdy1sZXNzJ1xuICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgICB8IGZyb21EaWN0aW9uYXJ5XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgOiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmJyRWxlbWVudHNIaWRkZW46IHRpbWVzbG90UmVtYWluaW5nLnRvU3RyaW5nKClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuPC9zZWN0aW9uPlxuIl19
|