@entake/particle 18.0.4 → 19.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/LICENSE +1 -1
- package/app/{modules → shared/components}/accordion/accordion.component.d.ts +3 -3
- package/app/{modules/date-picker → shared}/components/calendar/calendar.component.d.ts +7 -12
- package/app/{modules → shared/components}/checkbox/checkbox.component.d.ts +5 -7
- package/app/{modules → shared/components}/color-picker/color-picker.component.d.ts +3 -9
- package/app/{modules → shared/components}/date-picker/date-picker.component.d.ts +20 -26
- package/app/{modules/date-picker → shared}/components/date-range-picker/date-range-picker.component.d.ts +10 -11
- package/app/{modules → shared/components}/dialog/dialog.component.d.ts +14 -24
- package/app/{modules → shared/components}/dropdown/dropdown.component.d.ts +12 -14
- package/app/{modules/icons/components → shared/components/icon-select}/icon-select.component.d.ts +14 -17
- package/app/{modules → shared/components}/idle-timeout/idle-timeout.component.d.ts +3 -4
- package/app/{modules → shared/components}/input-mask/input-mask.component.d.ts +6 -7
- package/app/shared/components/layout-full-framing/layout-full-framing.component.d.ts +27 -0
- package/app/shared/components/layout-fullwidth-sidebar/layout-fullwidth-sidebar.component.d.ts +23 -0
- package/app/{modules/loader/components → shared/components/loader}/loader.component.d.ts +2 -2
- package/app/{modules → shared/components}/multi-select/multi-select.component.d.ts +18 -24
- package/app/{modules → shared/components}/notification/notification.component.d.ts +5 -13
- package/app/{modules → shared/components}/paginator/paginator.component.d.ts +12 -11
- package/app/{modules → shared/components}/popover/popover.component.d.ts +10 -15
- package/app/{modules → shared/components}/profile-pic/profile-pic.component.d.ts +1 -1
- package/app/shared/components/progress-bar/progress-bar.component.d.ts +15 -0
- package/app/{modules → shared/components}/rich-text/rich-text.component.d.ts +11 -12
- package/app/shared/components/scroll-to-top/scroll-to-top.component.d.ts +18 -0
- package/app/shared/components/slideover/slideover.component.d.ts +35 -0
- package/app/{modules → shared/components}/slider/slider.component.d.ts +8 -22
- package/app/{modules → shared/components}/toggle-switch/toggle-switch.component.d.ts +4 -6
- package/app/{modules → shared/components}/week-picker/week-picker.component.d.ts +21 -22
- package/app/{modules/accordion → shared}/directives/accordion-content.directive.d.ts +1 -2
- package/app/{modules/accordion → shared}/directives/accordion-header.directive.d.ts +1 -2
- package/app/{modules/accordion → shared}/directives/accordion-item.directive.d.ts +1 -1
- package/app/{modules/background-carousel → shared/directives}/background-carousel.directive.d.ts +4 -4
- package/app/{modules/keyfilter → shared/directives}/keyfilter.directive.d.ts +1 -7
- package/app/{modules/tooltip → shared/directives}/tooltip.directive.d.ts +3 -9
- package/app/shared/models/carousel-options.model.d.ts +21 -0
- package/app/shared/models/pagination-event.model.d.ts +8 -0
- package/app/shared/models/particle-component-text.model.d.ts +0 -24
- package/app/shared/modules/icons/particle-icons.module.d.ts +7 -0
- package/app/{modules/ordinal-number-pipe → shared/pipes}/ordinal-number.pipe.d.ts +1 -1
- package/app/shared/services/base-data.service.d.ts +2 -2
- package/app/shared/services/dialog.service.d.ts +1 -1
- package/app/{modules/notification → shared}/services/notification.service.d.ts +0 -4
- package/app/{modules/theming → shared}/services/theming.service.d.ts +0 -19
- package/fesm2022/entake-particle.mjs +3873 -5572
- package/fesm2022/entake-particle.mjs.map +1 -1
- package/package.json +16 -25
- package/public_api.d.ts +47 -82
- package/app/modules/accordion/accordion.module.d.ts +0 -11
- package/app/modules/background-carousel/carousel-options.model.d.ts +0 -30
- package/app/modules/background-carousel/particle-background-carousel.module.d.ts +0 -8
- package/app/modules/checkbox/checkbox.module.d.ts +0 -9
- package/app/modules/color-picker/color-picker.module.d.ts +0 -9
- package/app/modules/date-picker/date-picker.module.d.ts +0 -15
- package/app/modules/dialog/dialog.module.d.ts +0 -9
- package/app/modules/dropdown/dropdown.module.d.ts +0 -9
- package/app/modules/endpoint-state/components/endpoint-state.component.d.ts +0 -46
- package/app/modules/endpoint-state/endpoint-state.module.d.ts +0 -8
- package/app/modules/icons/particle-icons.module.d.ts +0 -13
- package/app/modules/idle-timeout/particle-idle-timeout.module.d.ts +0 -9
- package/app/modules/input-mask/input-mask.module.d.ts +0 -8
- package/app/modules/keyfilter/keyfilter.module.d.ts +0 -8
- package/app/modules/layout/components/layout-full-framing/layout-full-framing.component.d.ts +0 -27
- package/app/modules/layout/components/layout-fullwidth-sidebar/layout-fullwidth-sidebar.component.d.ts +0 -23
- package/app/modules/layout/layout.module.d.ts +0 -10
- package/app/modules/loader/loader.module.d.ts +0 -8
- package/app/modules/multi-select/multi-select.module.d.ts +0 -8
- package/app/modules/notification/notification.module.d.ts +0 -8
- package/app/modules/ordinal-number-pipe/ordinal-number-pipe.module.d.ts +0 -8
- package/app/modules/paginator/pagination-event.model.d.ts +0 -24
- package/app/modules/paginator/particle-paginator.module.d.ts +0 -13
- package/app/modules/popover/popover.module.d.ts +0 -9
- package/app/modules/profile-pic/particle-profile-pic.module.d.ts +0 -9
- package/app/modules/progress-bar/progress-bar.component.d.ts +0 -16
- package/app/modules/progress-bar/progress-bar.module.d.ts +0 -8
- package/app/modules/push-container/particle-push-container.module.d.ts +0 -9
- package/app/modules/push-container/push-container-state.model.d.ts +0 -7
- package/app/modules/push-container/push-container.component.d.ts +0 -137
- package/app/modules/rich-text/particle-rich-text.module.d.ts +0 -15
- package/app/modules/rich-text/render-rich-text.component.d.ts +0 -6
- package/app/modules/scroll-to-top/particle-scroll-to-top.module.d.ts +0 -8
- package/app/modules/scroll-to-top/scroll-to-top.component.d.ts +0 -19
- package/app/modules/slideover/particle-slideover.module.d.ts +0 -8
- package/app/modules/slideover/slideover.component.d.ts +0 -35
- package/app/modules/slider/slider.module.d.ts +0 -9
- package/app/modules/theming/components/theming.component.d.ts +0 -43
- package/app/modules/theming/theming.module.d.ts +0 -12
- package/app/modules/toggle-switch/toggle-switch.module.d.ts +0 -8
- package/app/modules/tooltip/tooltip.module.d.ts +0 -8
- package/app/modules/week-picker/week-picker.module.d.ts +0 -13
- package/app/shared/enums/endpoint-status.enum.d.ts +0 -9
- package/esm2022/app/modules/accordion/accordion.component.mjs +0 -101
- package/esm2022/app/modules/accordion/accordion.module.mjs +0 -37
- package/esm2022/app/modules/accordion/directives/accordion-content.directive.mjs +0 -17
- package/esm2022/app/modules/accordion/directives/accordion-header.directive.mjs +0 -17
- package/esm2022/app/modules/accordion/directives/accordion-item.directive.mjs +0 -36
- package/esm2022/app/modules/background-carousel/background-carousel.directive.mjs +0 -91
- package/esm2022/app/modules/background-carousel/carousel-options.model.mjs +0 -36
- package/esm2022/app/modules/background-carousel/particle-background-carousel.module.mjs +0 -24
- package/esm2022/app/modules/checkbox/checkbox.component.mjs +0 -108
- package/esm2022/app/modules/checkbox/checkbox.module.mjs +0 -28
- package/esm2022/app/modules/color-picker/color-picker.component.mjs +0 -306
- package/esm2022/app/modules/color-picker/color-picker.module.mjs +0 -19
- package/esm2022/app/modules/date-picker/components/calendar/calendar.component.mjs +0 -496
- package/esm2022/app/modules/date-picker/components/date-range-picker/date-range-picker.component.mjs +0 -250
- package/esm2022/app/modules/date-picker/date-picker.component.mjs +0 -538
- package/esm2022/app/modules/date-picker/date-picker.module.mjs +0 -56
- package/esm2022/app/modules/dialog/dialog.component.mjs +0 -177
- package/esm2022/app/modules/dialog/dialog.module.mjs +0 -28
- package/esm2022/app/modules/dropdown/dropdown.component.mjs +0 -682
- package/esm2022/app/modules/dropdown/dropdown.module.mjs +0 -28
- package/esm2022/app/modules/dropdown/models/dropdown-option-group.model.mjs +0 -2
- package/esm2022/app/modules/dropdown/models/dropdown-option.model.mjs +0 -2
- package/esm2022/app/modules/endpoint-state/components/endpoint-state.component.mjs +0 -75
- package/esm2022/app/modules/endpoint-state/endpoint-state.module.mjs +0 -22
- package/esm2022/app/modules/icons/components/icon-select.component.mjs +0 -376
- package/esm2022/app/modules/icons/models/fontawesome-icons-brands.model.mjs +0 -471
- package/esm2022/app/modules/icons/models/fontawesome-icons-regular.model.mjs +0 -166
- package/esm2022/app/modules/icons/models/fontawesome-icons-solid.model.mjs +0 -1016
- package/esm2022/app/modules/icons/models/particle-icons-brands.model.mjs +0 -24
- package/esm2022/app/modules/icons/models/particle-icons-regular.model.mjs +0 -50
- package/esm2022/app/modules/icons/models/particle-icons-solid.model.mjs +0 -89
- package/esm2022/app/modules/icons/particle-icons.module.mjs +0 -66
- package/esm2022/app/modules/icons/services/icons.service.mjs +0 -82
- package/esm2022/app/modules/idle-timeout/idle-timeout.component.mjs +0 -85
- package/esm2022/app/modules/idle-timeout/idle-timer.mjs +0 -66
- package/esm2022/app/modules/idle-timeout/particle-idle-timeout.module.mjs +0 -28
- package/esm2022/app/modules/input-mask/input-mask.component.mjs +0 -594
- package/esm2022/app/modules/input-mask/input-mask.module.mjs +0 -18
- package/esm2022/app/modules/keyfilter/keyfilter.directive.mjs +0 -174
- package/esm2022/app/modules/keyfilter/keyfilter.module.mjs +0 -18
- package/esm2022/app/modules/layout/components/layout-full-framing/layout-full-framing.component.mjs +0 -81
- package/esm2022/app/modules/layout/components/layout-fullwidth-sidebar/layout-fullwidth-sidebar.component.mjs +0 -67
- package/esm2022/app/modules/layout/layout.module.mjs +0 -33
- package/esm2022/app/modules/loader/components/loader.component.mjs +0 -30
- package/esm2022/app/modules/loader/loader.module.mjs +0 -24
- package/esm2022/app/modules/multi-select/models/multi-select-option-group.model.mjs +0 -2
- package/esm2022/app/modules/multi-select/models/multi-select-option.model.mjs +0 -2
- package/esm2022/app/modules/multi-select/multi-select.component.mjs +0 -665
- package/esm2022/app/modules/multi-select/multi-select.module.mjs +0 -18
- package/esm2022/app/modules/notification/models/notification.model.mjs +0 -2
- package/esm2022/app/modules/notification/notification.component.mjs +0 -122
- package/esm2022/app/modules/notification/notification.module.mjs +0 -18
- package/esm2022/app/modules/notification/services/notification.service.mjs +0 -84
- package/esm2022/app/modules/ordinal-number-pipe/ordinal-number-pipe.module.mjs +0 -20
- package/esm2022/app/modules/ordinal-number-pipe/ordinal-number.pipe.mjs +0 -49
- package/esm2022/app/modules/paginator/pagination-event.model.mjs +0 -29
- package/esm2022/app/modules/paginator/paginator.component.mjs +0 -207
- package/esm2022/app/modules/paginator/particle-paginator.module.mjs +0 -48
- package/esm2022/app/modules/popover/popover.component.mjs +0 -352
- package/esm2022/app/modules/popover/popover.module.mjs +0 -24
- package/esm2022/app/modules/profile-pic/particle-profile-pic.module.mjs +0 -28
- package/esm2022/app/modules/profile-pic/profile-pic.component.mjs +0 -75
- package/esm2022/app/modules/progress-bar/progress-bar.component.mjs +0 -43
- package/esm2022/app/modules/progress-bar/progress-bar.module.mjs +0 -24
- package/esm2022/app/modules/push-container/particle-push-container.module.mjs +0 -26
- package/esm2022/app/modules/push-container/push-container-state.model.mjs +0 -2
- package/esm2022/app/modules/push-container/push-container.component.mjs +0 -363
- package/esm2022/app/modules/rich-text/particle-rich-text.module.mjs +0 -64
- package/esm2022/app/modules/rich-text/render-rich-text.component.mjs +0 -18
- package/esm2022/app/modules/rich-text/rich-text-capabilities.model.mjs +0 -2
- package/esm2022/app/modules/rich-text/rich-text.component.mjs +0 -206
- package/esm2022/app/modules/scroll-to-top/particle-scroll-to-top.module.mjs +0 -24
- package/esm2022/app/modules/scroll-to-top/scroll-to-top.component.mjs +0 -49
- package/esm2022/app/modules/slideover/particle-slideover.module.mjs +0 -24
- package/esm2022/app/modules/slideover/slideover.component.mjs +0 -115
- package/esm2022/app/modules/slider/slider.component.mjs +0 -243
- package/esm2022/app/modules/slider/slider.module.mjs +0 -26
- package/esm2022/app/modules/theming/components/theming.component.mjs +0 -86
- package/esm2022/app/modules/theming/models/theme.model.mjs +0 -9
- package/esm2022/app/modules/theming/services/theme-change-detection.service.mjs +0 -38
- package/esm2022/app/modules/theming/services/theming.service.mjs +0 -510
- package/esm2022/app/modules/theming/theming.module.mjs +0 -55
- package/esm2022/app/modules/toggle-switch/models/toggle-options.model.mjs +0 -2
- package/esm2022/app/modules/toggle-switch/toggle-switch.component.mjs +0 -107
- package/esm2022/app/modules/toggle-switch/toggle-switch.module.mjs +0 -24
- package/esm2022/app/modules/tooltip/tooltip.directive.mjs +0 -381
- package/esm2022/app/modules/tooltip/tooltip.module.mjs +0 -18
- package/esm2022/app/modules/week-picker/week-picker.component.mjs +0 -511
- package/esm2022/app/modules/week-picker/week-picker.module.mjs +0 -40
- package/esm2022/app/shared/enums/endpoint-status.enum.mjs +0 -11
- package/esm2022/app/shared/interceptors/json.interceptor.mjs +0 -23
- package/esm2022/app/shared/models/auditable.model.mjs +0 -2
- package/esm2022/app/shared/models/data-list.model.mjs +0 -2
- package/esm2022/app/shared/models/id.model.mjs +0 -2
- package/esm2022/app/shared/models/observable-container.mjs +0 -15
- package/esm2022/app/shared/models/particle-component-text.model.mjs +0 -2
- package/esm2022/app/shared/services/base-data.service.mjs +0 -190
- package/esm2022/app/shared/services/dialog.service.mjs +0 -50
- package/esm2022/app/shared/services/local-storage.service.mjs +0 -60
- package/esm2022/entake-particle.mjs +0 -5
- package/esm2022/public_api.mjs +0 -98
- /package/app/{modules/dropdown → shared}/models/dropdown-option-group.model.d.ts +0 -0
- /package/app/{modules/dropdown → shared}/models/dropdown-option.model.d.ts +0 -0
- /package/app/{modules/icons → shared}/models/fontawesome-icons-brands.model.d.ts +0 -0
- /package/app/{modules/icons → shared}/models/fontawesome-icons-regular.model.d.ts +0 -0
- /package/app/{modules/icons → shared}/models/fontawesome-icons-solid.model.d.ts +0 -0
- /package/app/{modules/multi-select → shared}/models/multi-select-option-group.model.d.ts +0 -0
- /package/app/{modules/multi-select → shared}/models/multi-select-option.model.d.ts +0 -0
- /package/app/{modules/notification → shared}/models/notification.model.d.ts +0 -0
- /package/app/{modules/icons → shared}/models/particle-icons-brands.model.d.ts +0 -0
- /package/app/{modules/icons → shared}/models/particle-icons-regular.model.d.ts +0 -0
- /package/app/{modules/icons → shared}/models/particle-icons-solid.model.d.ts +0 -0
- /package/app/{modules/rich-text → shared/models}/rich-text-capabilities.model.d.ts +0 -0
- /package/app/{modules/theming → shared}/models/theme.model.d.ts +0 -0
- /package/app/{modules/toggle-switch → shared}/models/toggle-options.model.d.ts +0 -0
- /package/app/{modules/icons → shared}/services/icons.service.d.ts +0 -0
- /package/app/{modules/idle-timeout → shared/services}/idle-timer.d.ts +0 -0
- /package/app/{modules/theming → shared}/services/theme-change-detection.service.d.ts +0 -0
package/esm2022/app/modules/date-picker/components/date-range-picker/date-range-picker.component.mjs
DELETED
|
@@ -1,250 +0,0 @@
|
|
|
1
|
-
import { Component, forwardRef, Input, ViewChild } from '@angular/core';
|
|
2
|
-
import { NG_VALUE_ACCESSOR } from '@angular/forms';
|
|
3
|
-
import { BehaviorSubject, tap } from 'rxjs';
|
|
4
|
-
import * as i0 from "@angular/core";
|
|
5
|
-
import * as i1 from "@angular/common";
|
|
6
|
-
import * as i2 from "@angular/forms";
|
|
7
|
-
import * as i3 from "../../../popover/popover.component";
|
|
8
|
-
import * as i4 from "../../date-picker.component";
|
|
9
|
-
import * as i5 from "../calendar/calendar.component";
|
|
10
|
-
export class DateRangePickerComponent {
|
|
11
|
-
changeDetectorRef;
|
|
12
|
-
currentYear = new Date().getFullYear();
|
|
13
|
-
_disabled = false;
|
|
14
|
-
_value$ = new BehaviorSubject(null);
|
|
15
|
-
_lastValue = null;
|
|
16
|
-
_init = false;
|
|
17
|
-
valueObs$ = this._value$.asObservable().pipe(tap(value => {
|
|
18
|
-
let newValue = { start: null, end: null };
|
|
19
|
-
if (value && value.start && value.end) {
|
|
20
|
-
newValue = { start: value.start, end: value.end };
|
|
21
|
-
}
|
|
22
|
-
if (newValue !== this._lastValue) {
|
|
23
|
-
this._lastValue = newValue;
|
|
24
|
-
if (this._init) {
|
|
25
|
-
this.onChange(this._lastValue);
|
|
26
|
-
}
|
|
27
|
-
}
|
|
28
|
-
}));
|
|
29
|
-
inputId = null;
|
|
30
|
-
inputClassList = '';
|
|
31
|
-
calendarButtonClassList = '';
|
|
32
|
-
text = {
|
|
33
|
-
begin: 'Begin',
|
|
34
|
-
end: 'End',
|
|
35
|
-
done: 'Done',
|
|
36
|
-
clear: 'Clear',
|
|
37
|
-
openCalendar: 'Open Calendar',
|
|
38
|
-
selectRange: 'Choose a Range'
|
|
39
|
-
};
|
|
40
|
-
set dateRange(value) {
|
|
41
|
-
this._dateRange = value;
|
|
42
|
-
if (this.value && this.value.start) {
|
|
43
|
-
this._endDateRange = {
|
|
44
|
-
minDate: this.value.start,
|
|
45
|
-
maxDate: value.maxDate
|
|
46
|
-
};
|
|
47
|
-
}
|
|
48
|
-
else {
|
|
49
|
-
this._endDateRange = value;
|
|
50
|
-
}
|
|
51
|
-
}
|
|
52
|
-
get dateRange() {
|
|
53
|
-
return this._dateRange;
|
|
54
|
-
}
|
|
55
|
-
get endDateRange() {
|
|
56
|
-
return this._endDateRange;
|
|
57
|
-
}
|
|
58
|
-
_dateRange = {
|
|
59
|
-
minDate: new Date(this.currentYear - 100, 0, 1),
|
|
60
|
-
maxDate: new Date(this.currentYear + 100, 11, 31)
|
|
61
|
-
};
|
|
62
|
-
_endDateRange = {
|
|
63
|
-
minDate: new Date(this.currentYear - 100, 0, 1),
|
|
64
|
-
maxDate: new Date(this.currentYear + 100, 11, 31)
|
|
65
|
-
};
|
|
66
|
-
set value(value) {
|
|
67
|
-
if (!value) {
|
|
68
|
-
value = { start: null, end: null };
|
|
69
|
-
}
|
|
70
|
-
this._value$.next(value);
|
|
71
|
-
if (value) {
|
|
72
|
-
this.beginDate = value.start;
|
|
73
|
-
}
|
|
74
|
-
}
|
|
75
|
-
get value() {
|
|
76
|
-
return this._lastValue;
|
|
77
|
-
}
|
|
78
|
-
set disabled(disabled) {
|
|
79
|
-
this._disabled = disabled;
|
|
80
|
-
}
|
|
81
|
-
get disabled() {
|
|
82
|
-
return this._disabled;
|
|
83
|
-
}
|
|
84
|
-
ariaLabel = null;
|
|
85
|
-
/**
|
|
86
|
-
* Format for the selected date range in the selection preview. Must
|
|
87
|
-
* be a valid Angular DatePipe format
|
|
88
|
-
*/
|
|
89
|
-
dateFormat = 'MM/dd/y';
|
|
90
|
-
calendarPopover = null;
|
|
91
|
-
beginCalendar = null;
|
|
92
|
-
endCalendar = null;
|
|
93
|
-
ngAfterViewInit() {
|
|
94
|
-
this._init = true;
|
|
95
|
-
}
|
|
96
|
-
get beginDate() {
|
|
97
|
-
if (this._value$.value) {
|
|
98
|
-
return this._value$.value.start;
|
|
99
|
-
}
|
|
100
|
-
return null;
|
|
101
|
-
}
|
|
102
|
-
set beginDate(beginDate) {
|
|
103
|
-
let value = this._value$.value;
|
|
104
|
-
value.start = beginDate;
|
|
105
|
-
if (!beginDate && this.beginCalendar) {
|
|
106
|
-
if (this.beginCalendar) {
|
|
107
|
-
this.beginCalendar.clear();
|
|
108
|
-
}
|
|
109
|
-
}
|
|
110
|
-
this._value$.next(value);
|
|
111
|
-
if (!beginDate || beginDate > this.endDate) {
|
|
112
|
-
this.endDate = null;
|
|
113
|
-
}
|
|
114
|
-
this._endDateRange = {
|
|
115
|
-
minDate: beginDate,
|
|
116
|
-
maxDate: this.dateRange.maxDate
|
|
117
|
-
};
|
|
118
|
-
}
|
|
119
|
-
get endDate() {
|
|
120
|
-
if (this._value$.value) {
|
|
121
|
-
return this._value$.value.end;
|
|
122
|
-
}
|
|
123
|
-
return null;
|
|
124
|
-
}
|
|
125
|
-
set endDate(endDate) {
|
|
126
|
-
if (this._value$.value && endDate < this._value$.value.start) {
|
|
127
|
-
endDate = null;
|
|
128
|
-
if (this.endCalendar) {
|
|
129
|
-
this.endCalendar.clear();
|
|
130
|
-
}
|
|
131
|
-
}
|
|
132
|
-
let value = this._value$.value;
|
|
133
|
-
value.end = endDate;
|
|
134
|
-
if (!endDate && this.endCalendar) {
|
|
135
|
-
if (this.endCalendar) {
|
|
136
|
-
this.endCalendar.clear();
|
|
137
|
-
}
|
|
138
|
-
}
|
|
139
|
-
this._value$.next(value);
|
|
140
|
-
}
|
|
141
|
-
/**
|
|
142
|
-
* Function to call on change
|
|
143
|
-
*/
|
|
144
|
-
onChange = () => { };
|
|
145
|
-
/**
|
|
146
|
-
* Function to call on touch
|
|
147
|
-
*/
|
|
148
|
-
onTouched = () => { };
|
|
149
|
-
constructor(changeDetectorRef) {
|
|
150
|
-
this.changeDetectorRef = changeDetectorRef;
|
|
151
|
-
}
|
|
152
|
-
/**
|
|
153
|
-
* Write value
|
|
154
|
-
* @param value the value to write
|
|
155
|
-
*/
|
|
156
|
-
writeValue(value) {
|
|
157
|
-
this.value = value;
|
|
158
|
-
this.changeDetectorRef.markForCheck();
|
|
159
|
-
}
|
|
160
|
-
/**
|
|
161
|
-
* Register function on change
|
|
162
|
-
* @param fn the function to change
|
|
163
|
-
*/
|
|
164
|
-
registerOnChange(fn) {
|
|
165
|
-
this.onChange = fn;
|
|
166
|
-
}
|
|
167
|
-
/**
|
|
168
|
-
* Register function on touch
|
|
169
|
-
* @param fn the function to register
|
|
170
|
-
*/
|
|
171
|
-
registerOnTouched(fn) {
|
|
172
|
-
this.onTouched = fn;
|
|
173
|
-
}
|
|
174
|
-
/**
|
|
175
|
-
* Set disabled state
|
|
176
|
-
* @param isDisabled whether or not the control is disabled
|
|
177
|
-
*/
|
|
178
|
-
setDisabledState(isDisabled) {
|
|
179
|
-
this.disabled = isDisabled;
|
|
180
|
-
this.changeDetectorRef.markForCheck();
|
|
181
|
-
}
|
|
182
|
-
openCalendar(event) {
|
|
183
|
-
if (!this.disabled) {
|
|
184
|
-
this.calendarPopover.toggle(event);
|
|
185
|
-
}
|
|
186
|
-
}
|
|
187
|
-
updateModel(isBegin, date) {
|
|
188
|
-
if (isBegin) {
|
|
189
|
-
this.beginDate = date;
|
|
190
|
-
}
|
|
191
|
-
else {
|
|
192
|
-
this.endDate = date;
|
|
193
|
-
}
|
|
194
|
-
}
|
|
195
|
-
checkState() {
|
|
196
|
-
const val = this._value$.value;
|
|
197
|
-
if (val && ((val.start > val.end) || !(val.start && val.end))) {
|
|
198
|
-
this.clear();
|
|
199
|
-
}
|
|
200
|
-
}
|
|
201
|
-
clear() {
|
|
202
|
-
this.value = null;
|
|
203
|
-
}
|
|
204
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.1", ngImport: i0, type: DateRangePickerComponent, deps: [{ token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component });
|
|
205
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.0.1", type: DateRangePickerComponent, selector: "particle-date-range-picker", inputs: { inputId: "inputId", inputClassList: "inputClassList", calendarButtonClassList: "calendarButtonClassList", text: "text", dateRange: "dateRange", value: "value", disabled: "disabled", ariaLabel: "ariaLabel", dateFormat: "dateFormat" }, providers: [
|
|
206
|
-
{
|
|
207
|
-
provide: NG_VALUE_ACCESSOR,
|
|
208
|
-
useExisting: forwardRef(() => DateRangePickerComponent),
|
|
209
|
-
multi: true
|
|
210
|
-
}
|
|
211
|
-
], viewQueries: [{ propertyName: "calendarPopover", first: true, predicate: ["calendarPopover"], descendants: true }, { propertyName: "beginCalendar", first: true, predicate: ["beginCalendar"], descendants: true }, { propertyName: "endCalendar", first: true, predicate: ["endCalendar"], descendants: true }], ngImport: i0, template: "<div style=\"cursor:default;overflow: hidden;\"\r\n [ngClass]=\"inputClassList ? '' : 'row ptl_input ptl_input_height ptl_input_bg_color ptl_brdr_color ptl_brdr_size ptl_brdr_radius ent_r2l_dir'\"\r\n [style.filter]=\"disabled ? 'brightness(.95)' : ''\">\r\n <button (click)=\"openCalendar($event)\"\r\n type=\"button\"\r\n aria-haspopup=\"dialog\"\r\n [disabled]=\"disabled\"\r\n [attr.aria-label]=\"(ariaLabel ? ariaLabel + ', ' : '') + text.openCalendar\"\r\n [attr.aria-expanded]=\"calendarPopover.visible\"\r\n [ngClass]=\"inputClassList ? inputClassList : 'clear'\"\r\n class=\"access btnset width100 height100 center_center\"\r\n style=\"outline-offset: -2px;\"\r\n >\r\n <div class=\"col size_1 height100 width100 ptl_input_text_size ptl_input_padding v_center\">\r\n <ng-container *ngIf=\"valueObs$ | async as value\">\r\n <ng-container *ngIf=\"value.start && value.end else placeholderTemplate\">\r\n {{value.start | date: dateFormat}} - {{value.end | date: dateFormat}}\r\n </ng-container>\r\n </ng-container>\r\n <ng-template #placeholderTemplate>\r\n <div class=\"ent_r2l_txt\">{{text.selectRange}}...</div>\r\n </ng-template>\r\n </div>\r\n <div class=\"col min_w50 height100 center_center border_left\"\r\n [ngClass]=\"calendarButtonClassList ? calendarButtonClassList : 'bg_overlay ptl_brdr_color ptl_input_text_size'\">\r\n <div class=\"width100 height100 center_center\">\r\n <i class=\"fas fa-calendar-days ptl_input_text_size\"></i>\r\n </div>\r\n </div>\r\n </button>\r\n</div>\r\n\r\n<particle-popover (closed)=\"checkState()\" #calendarPopover>\r\n <div class=\"width100 space_between\">\r\n <div>\r\n <div class=\"pad_10 pad_bot0\">\r\n <div>{{text.begin}}:</div>\r\n <div>\r\n <particle-date-picker\r\n inputClassList=\"access input sm content_color\"\r\n [inputOnly]=\"true\"\r\n [(ngModel)]=\"beginDate\"\r\n [dateRange]=\"dateRange\">\r\n </particle-date-picker>\r\n </div>\r\n </div>\r\n <particle-calendar [value]=\"beginDate\"\r\n [text]=\"$any(text.calendarText)\"\r\n [dateRange]=\"dateRange\"\r\n [showControls]=\"false\"\r\n class=\"hide_element\"\r\n (selected)=\"updateModel(true, $event)\"\r\n #beginCalendar>\r\n </particle-calendar>\r\n </div>\r\n <div>\r\n <div class=\"pad_10 pad_bot0\">\r\n <div>{{text.end}}:</div>\r\n <div>\r\n <particle-date-picker\r\n inputClassList=\"access input sm content_color\"\r\n [inputOnly]=\"true\"\r\n [dateRange]=\"endDateRange\"\r\n [(ngModel)]=\"endDate\">\r\n </particle-date-picker>\r\n </div>\r\n </div>\r\n <particle-calendar [value]=\"endDate\"\r\n [text]=\"$any(text.calendarText)\"\r\n [dateRange]=\"endDateRange\"\r\n [showControls]=\"false\"\r\n class=\"hide_element\"\r\n (selected)=\"updateModel(false, $event)\"\r\n #endCalendar>\r\n </particle-calendar>\r\n <div class=\"mobile_only pad_bot10\"></div>\r\n </div>\r\n </div>\r\n <div class=\"bg_overlay brdr hr mar_5 mar_top0\"></div>\r\n <div class=\"row space_between\">\r\n <button (click)=\"clear()\"\r\n class=\"access btn sm bg_overlay_rev brdr mar_5 hov_bg\"\r\n [attr.aria-label]=\"text.clear\">\r\n <i class=\"fas fa-x mar_right5\"></i><span class=\"text bold\">{{text.clear}}</span>\r\n </button>\r\n\r\n <button (keyup.escape)=\"calendarPopover.close()\"\r\n (click)=\"calendarPopover.close()\"\r\n [attr.data-dialog-close-override]=\"true\"\r\n class=\"access btn sm bg_overlay_rev brdr mar_5 hov_bg\"\r\n [attr.aria-label]=\"text.done\">\r\n <i class=\"fas fa-check mar_right5\"></i><span class=\"text bold\">{{text.done}}</span>\r\n </button>\r\n </div>\r\n</particle-popover>\r\n\r\n", styles: [""], dependencies: [{ kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: i3.PopoverComponent, selector: "particle-popover", inputs: ["offset", "width", "height", "classList", "targetOverride", "openDirection", "alignment", "scaleForMobile"], outputs: ["opened", "closed"] }, { kind: "component", type: i4.DatePickerComponent, selector: "particle-date-picker", inputs: ["value", "disabled", "dateRange", "inputId", "ariaLabel", "inputClassList", "calendarButtonClassList", "closeOnSelect", "placeholder", "inputOnly", "text"], outputs: ["input", "dateSelected"] }, { kind: "component", type: i5.CalendarComponent, selector: "particle-calendar", inputs: ["value", "dateRange", "text", "showControls"], outputs: ["selected", "closed"] }, { kind: "pipe", type: i1.AsyncPipe, name: "async" }, { kind: "pipe", type: i1.DatePipe, name: "date" }] });
|
|
212
|
-
}
|
|
213
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.1", ngImport: i0, type: DateRangePickerComponent, decorators: [{
|
|
214
|
-
type: Component,
|
|
215
|
-
args: [{ selector: 'particle-date-range-picker', providers: [
|
|
216
|
-
{
|
|
217
|
-
provide: NG_VALUE_ACCESSOR,
|
|
218
|
-
useExisting: forwardRef(() => DateRangePickerComponent),
|
|
219
|
-
multi: true
|
|
220
|
-
}
|
|
221
|
-
], template: "<div style=\"cursor:default;overflow: hidden;\"\r\n [ngClass]=\"inputClassList ? '' : 'row ptl_input ptl_input_height ptl_input_bg_color ptl_brdr_color ptl_brdr_size ptl_brdr_radius ent_r2l_dir'\"\r\n [style.filter]=\"disabled ? 'brightness(.95)' : ''\">\r\n <button (click)=\"openCalendar($event)\"\r\n type=\"button\"\r\n aria-haspopup=\"dialog\"\r\n [disabled]=\"disabled\"\r\n [attr.aria-label]=\"(ariaLabel ? ariaLabel + ', ' : '') + text.openCalendar\"\r\n [attr.aria-expanded]=\"calendarPopover.visible\"\r\n [ngClass]=\"inputClassList ? inputClassList : 'clear'\"\r\n class=\"access btnset width100 height100 center_center\"\r\n style=\"outline-offset: -2px;\"\r\n >\r\n <div class=\"col size_1 height100 width100 ptl_input_text_size ptl_input_padding v_center\">\r\n <ng-container *ngIf=\"valueObs$ | async as value\">\r\n <ng-container *ngIf=\"value.start && value.end else placeholderTemplate\">\r\n {{value.start | date: dateFormat}} - {{value.end | date: dateFormat}}\r\n </ng-container>\r\n </ng-container>\r\n <ng-template #placeholderTemplate>\r\n <div class=\"ent_r2l_txt\">{{text.selectRange}}...</div>\r\n </ng-template>\r\n </div>\r\n <div class=\"col min_w50 height100 center_center border_left\"\r\n [ngClass]=\"calendarButtonClassList ? calendarButtonClassList : 'bg_overlay ptl_brdr_color ptl_input_text_size'\">\r\n <div class=\"width100 height100 center_center\">\r\n <i class=\"fas fa-calendar-days ptl_input_text_size\"></i>\r\n </div>\r\n </div>\r\n </button>\r\n</div>\r\n\r\n<particle-popover (closed)=\"checkState()\" #calendarPopover>\r\n <div class=\"width100 space_between\">\r\n <div>\r\n <div class=\"pad_10 pad_bot0\">\r\n <div>{{text.begin}}:</div>\r\n <div>\r\n <particle-date-picker\r\n inputClassList=\"access input sm content_color\"\r\n [inputOnly]=\"true\"\r\n [(ngModel)]=\"beginDate\"\r\n [dateRange]=\"dateRange\">\r\n </particle-date-picker>\r\n </div>\r\n </div>\r\n <particle-calendar [value]=\"beginDate\"\r\n [text]=\"$any(text.calendarText)\"\r\n [dateRange]=\"dateRange\"\r\n [showControls]=\"false\"\r\n class=\"hide_element\"\r\n (selected)=\"updateModel(true, $event)\"\r\n #beginCalendar>\r\n </particle-calendar>\r\n </div>\r\n <div>\r\n <div class=\"pad_10 pad_bot0\">\r\n <div>{{text.end}}:</div>\r\n <div>\r\n <particle-date-picker\r\n inputClassList=\"access input sm content_color\"\r\n [inputOnly]=\"true\"\r\n [dateRange]=\"endDateRange\"\r\n [(ngModel)]=\"endDate\">\r\n </particle-date-picker>\r\n </div>\r\n </div>\r\n <particle-calendar [value]=\"endDate\"\r\n [text]=\"$any(text.calendarText)\"\r\n [dateRange]=\"endDateRange\"\r\n [showControls]=\"false\"\r\n class=\"hide_element\"\r\n (selected)=\"updateModel(false, $event)\"\r\n #endCalendar>\r\n </particle-calendar>\r\n <div class=\"mobile_only pad_bot10\"></div>\r\n </div>\r\n </div>\r\n <div class=\"bg_overlay brdr hr mar_5 mar_top0\"></div>\r\n <div class=\"row space_between\">\r\n <button (click)=\"clear()\"\r\n class=\"access btn sm bg_overlay_rev brdr mar_5 hov_bg\"\r\n [attr.aria-label]=\"text.clear\">\r\n <i class=\"fas fa-x mar_right5\"></i><span class=\"text bold\">{{text.clear}}</span>\r\n </button>\r\n\r\n <button (keyup.escape)=\"calendarPopover.close()\"\r\n (click)=\"calendarPopover.close()\"\r\n [attr.data-dialog-close-override]=\"true\"\r\n class=\"access btn sm bg_overlay_rev brdr mar_5 hov_bg\"\r\n [attr.aria-label]=\"text.done\">\r\n <i class=\"fas fa-check mar_right5\"></i><span class=\"text bold\">{{text.done}}</span>\r\n </button>\r\n </div>\r\n</particle-popover>\r\n\r\n" }]
|
|
222
|
-
}], ctorParameters: () => [{ type: i0.ChangeDetectorRef }], propDecorators: { inputId: [{
|
|
223
|
-
type: Input
|
|
224
|
-
}], inputClassList: [{
|
|
225
|
-
type: Input
|
|
226
|
-
}], calendarButtonClassList: [{
|
|
227
|
-
type: Input
|
|
228
|
-
}], text: [{
|
|
229
|
-
type: Input
|
|
230
|
-
}], dateRange: [{
|
|
231
|
-
type: Input
|
|
232
|
-
}], value: [{
|
|
233
|
-
type: Input
|
|
234
|
-
}], disabled: [{
|
|
235
|
-
type: Input
|
|
236
|
-
}], ariaLabel: [{
|
|
237
|
-
type: Input
|
|
238
|
-
}], dateFormat: [{
|
|
239
|
-
type: Input
|
|
240
|
-
}], calendarPopover: [{
|
|
241
|
-
type: ViewChild,
|
|
242
|
-
args: ['calendarPopover']
|
|
243
|
-
}], beginCalendar: [{
|
|
244
|
-
type: ViewChild,
|
|
245
|
-
args: ['beginCalendar']
|
|
246
|
-
}], endCalendar: [{
|
|
247
|
-
type: ViewChild,
|
|
248
|
-
args: ['endCalendar']
|
|
249
|
-
}] } });
|
|
250
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0ZS1yYW5nZS1waWNrZXIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2FwcC9tb2R1bGVzL2RhdGUtcGlja2VyL2NvbXBvbmVudHMvZGF0ZS1yYW5nZS1waWNrZXIvZGF0ZS1yYW5nZS1waWNrZXIuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2FwcC9tb2R1bGVzL2RhdGUtcGlja2VyL2NvbXBvbmVudHMvZGF0ZS1yYW5nZS1waWNrZXIvZGF0ZS1yYW5nZS1waWNrZXIuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFtQyxTQUFTLEVBQUUsVUFBVSxFQUFFLEtBQUssRUFBRSxTQUFTLEVBQUMsTUFBTSxlQUFlLENBQUM7QUFDeEcsT0FBTyxFQUF1QixpQkFBaUIsRUFBQyxNQUFNLGdCQUFnQixDQUFDO0FBQ3ZFLE9BQU8sRUFBQyxlQUFlLEVBQUUsR0FBRyxFQUFDLE1BQU0sTUFBTSxDQUFDOzs7Ozs7O0FBaUIxQyxNQUFNLE9BQU8sd0JBQXdCO0lBbU1mO0lBak1wQixXQUFXLEdBQUcsSUFBSSxJQUFJLEVBQUUsQ0FBQyxXQUFXLEVBQUUsQ0FBQztJQUN2QyxTQUFTLEdBQUcsS0FBSyxDQUFDO0lBRVYsT0FBTyxHQUFHLElBQUksZUFBZSxDQUFNLElBQUksQ0FBQyxDQUFDO0lBRXpDLFVBQVUsR0FBUSxJQUFXLENBQUM7SUFDOUIsS0FBSyxHQUFHLEtBQUssQ0FBQztJQUV0QixTQUFTLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxZQUFZLEVBQUUsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUM5QyxLQUFLLENBQUMsRUFBRTtRQUNOLElBQUksUUFBUSxHQUFHLEVBQUMsS0FBSyxFQUFFLElBQUksRUFBRSxHQUFHLEVBQUUsSUFBSSxFQUFDLENBQUM7UUFDeEMsSUFBSSxLQUFLLElBQUksS0FBSyxDQUFDLEtBQUss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QUksQ0FBQyxLQUFLLEVBQUUsQ0FBQztRQUNmLENBQUM7SUFDSCxDQUFDO0lBRUQsS0FBSztRQUNILElBQUksQ0FBQyxLQUFLLEdBQUcsSUFBVyxDQUFDO0lBQzNCLENBQUM7dUdBaFFVLHdCQUF3QjsyRkFBeEIsd0JBQXdCLHlTQVJ4QjtZQUNUO2dCQUNFLE9BQU8sRUFBRSxpQkFBaUI7Z0JBQzFCLFdBQVcsRUFBRSxVQUFVLENBQUMsR0FBRyxFQUFFLENBQUMsd0JBQXdCLENBQUM7Z0JBQ3ZELEtBQUssRUFBRSxJQUFJO2FBQ1o7U0FDRiw0VUNqQkgsMHRJQWdHQTs7MkZEN0VhLHdCQUF3QjtrQkFacEMsU0FBUzsrQkFDRSw0QkFBNEIsYUFHM0I7d0JBQ1Q7NEJBQ0UsT0FBTyxFQUFFLGlCQUFpQjs0QkFDMUIsV0FBVyxFQUFFLFVBQVUsQ0FBQyxHQUFHLEVBQUUseUJBQXlCLENBQUM7NEJBQ3ZELEtBQUssRUFBRSxJQUFJO3lCQUNaO3FCQUNGO3NGQThCRCxPQUFPO3NCQUROLEtBQUs7Z0JBSU4sY0FBYztzQkFEYixLQUFLO2dCQUlOLHVCQUF1QjtzQkFEdEIsS0FBSztnQkFJTixJQUFJO3NCQURILEtBQUs7Z0JBV0YsU0FBUztzQkFEWixLQUFLO2dCQWlDRixLQUFLO3NCQURSLEtBQUs7Z0JBa0JGLFFBQVE7c0JBRFgsS0FBSztnQkFVTixTQUFTO3NCQURSLEtBQUs7Z0JBUU4sVUFBVTtzQkFEVCxLQUFLO2dCQUlOLGVBQWU7c0JBRGQsU0FBUzt1QkFBQyxpQkFBaUI7Z0JBSTVCLGFBQWE7c0JBRFosU0FBUzt1QkFBQyxlQUFlO2dCQUkxQixXQUFXO3NCQURWLFNBQVM7dUJBQUMsYUFBYSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7QWZ0ZXJWaWV3SW5pdCwgQ2hhbmdlRGV0ZWN0b3JSZWYsIENvbXBvbmVudCwgZm9yd2FyZFJlZiwgSW5wdXQsIFZpZXdDaGlsZH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7Q29udHJvbFZhbHVlQWNjZXNzb3IsIE5HX1ZBTFVFX0FDQ0VTU09SfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XHJcbmltcG9ydCB7QmVoYXZpb3JTdWJqZWN0LCB0YXB9IGZyb20gJ3J4anMnO1xyXG5pbXBvcnQge0RhdGVSYW5nZVBpY2tlclRleHR9IGZyb20gJy4uLy4uLy4uLy4uL3NoYXJlZC9tb2RlbHMvcGFydGljbGUtY29tcG9uZW50LXRleHQubW9kZWwnO1xyXG5pbXBvcnQge1BvcG92ZXJDb21wb25lbnR9IGZyb20gJy4uLy4uLy4uL3BvcG92ZXIvcG9wb3Zlci5jb21wb25lbnQnO1xyXG5pbXBvcnQge0NhbGVuZGFyQ29tcG9uZW50fSBmcm9tICcuLi9jYWxlbmRhci9jYWxlbmRhci5jb21wb25lbnQnO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICdwYXJ0aWNsZS1kYXRlLXJhbmdlLXBpY2tlcicsXHJcbiAgdGVtcGxhdGVVcmw6ICcuL2RhdGUtcmFuZ2UtcGlja2VyLmNvbXBvbmVudC5odG1sJyxcclxuICBzdHlsZVVybHM6IFsnLi9kYXRlLXJhbmdlLXBpY2tlci5jb21wb25lbnQuY3NzJ10sXHJcbiAgcHJvdmlkZXJzOiBbXHJcbiAgICB7XHJcbiAgICAgIHByb3ZpZGU6IE5HX1ZBTFVFX0FDQ0VTU09SLFxyXG4gICAgICB1c2VFeGlzdGluZzogZm9yd2FyZFJlZigoKSA9PiBEYXRlUmFuZ2VQaWNrZXJDb21wb25lbnQpLFxyXG4gICAgICBtdWx0aTogdHJ1ZVxyXG4gICAgfVxyXG4gIF1cclxufSlcclxuZXhwb3J0IGNsYXNzIERhdGVSYW5nZVBpY2tlckNvbXBvbmVudCBpbXBsZW1lbnRzIENvbnRyb2xWYWx1ZUFjY2Vzc29yLCBBZnRlclZpZXdJbml0IHtcclxuXHJcbiAgY3VycmVudFllYXIgPSBuZXcgRGF0ZSgpLmdldEZ1bGxZZWFyKCk7XHJcbiAgX2Rpc2FibGVkID0gZmFsc2U7XHJcblxyXG4gIHByaXZhdGUgX3ZhbHVlJCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8YW55PihudWxsKTtcclxuXHJcbiAgcHJpdmF0ZSBfbGFzdFZhbHVlOiBhbnkgPSBudWxsIGFzIGFueTtcclxuICBwcml2YXRlIF9pbml0ID0gZmFsc2U7XHJcblxyXG4gIHZhbHVlT2JzJCA9IHRoaXMuX3ZhbHVlJC5hc09ic2VydmFibGUoKS5waXBlKHRhcChcclxuICAgIHZhbHVlID0+IHtcclxuICAgICAgbGV0IG5ld1ZhbHVlID0ge3N0YXJ0OiBudWxsLCBlbmQ6IG51bGx9O1xyXG4gICAgICBpZiAodmFsdWUgJiYgdmFsdWUuc3RhcnQgJiYgdmFsdWUuZW5kKSB7XHJcbiAgICAgICAgbmV3VmFsdWUgPSB7c3RhcnQ6IHZhbHVlLnN0YXJ0LCBlbmQ6IHZhbHVlLmVuZH07XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIGlmIChuZXdWYWx1ZSAhPT0gdGhpcy5fbGFzdFZhbHVlKSB7XHJcbiAgICAgICAgdGhpcy5fbGFzdFZhbHVlID0gbmV3VmFsdWU7XHJcblxyXG4gICAgICAgIGlmICh0aGlzLl9pbml0KSB7XHJcbiAgICAgICAgICB0aGlzLm9uQ2hhbmdlKHRoaXMuX2xhc3RWYWx1ZSk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgKSk7XHJcblxyXG4gIEBJbnB1dCgpXHJcbiAgaW5wdXRJZDogc3RyaW5nID0gbnVsbCBhcyBhbnk7XHJcblxyXG4gIEBJbnB1dCgpXHJcbiAgaW5wdXRDbGFzc0xpc3QgPSAnJztcclxuXHJcbiAgQElucHV0KClcclxuICBjYWxlbmRhckJ1dHRvbkNsYXNzTGlzdCA9ICcnO1xyXG5cclxuICBASW5wdXQoKVxyXG4gIHRleHQ6IERhdGVSYW5nZVBpY2tlclRleHQgPSB7XHJcbiAgICBiZWdpbjogJ0JlZ2luJyxcclxuICAgIGVuZDogJ0VuZCcsXHJcbiAgICBkb25lOiAnRG9uZScsXHJcbiAgICBjbGVhcjogJ0NsZWFyJyxcclxuICAgIG9wZW5DYWxlbmRhcjogJ09wZW4gQ2FsZW5kYXInLFxyXG4gICAgc2VsZWN0UmFuZ2U6ICdDaG9vc2UgYSBSYW5nZSdcclxuICB9IGFzIERhdGVSYW5nZVBpY2tlclRleHQ7XHJcblxyXG4gIEBJbnB1dCgpXHJcbiAgc2V0IGRhdGVSYW5nZSh2YWx1ZToge21pbkRhdGU6IERhdGUsICBtYXhEYXRlOiBEYXRlfSkge1xyXG4gICAgdGhpcy5fZGF0ZVJhbmdlID0gdmFsdWU7XHJcblxyXG4gICAgaWYgKHRoaXMudmFsdWUgJiYgdGhpcy52YWx1ZS5zdGFydCkge1xyXG4gICAgICB0aGlzLl9lbmREYXRlUmFuZ2UgPSB7XHJcbiAgICAgICAgbWluRGF0ZTogdGhpcy52YWx1ZS5zdGFydCxcclxuICAgICAgICBtYXhEYXRlOiB2YWx1ZS5tYXhEYXRlXHJcbiAgICAgIH07XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aGlzLl9lbmREYXRlUmFuZ2UgPSB2YWx1ZTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGdldCBkYXRlUmFuZ2UoKToge21pbkRhdGU6IERhdGUsICBtYXhEYXRlOiBEYXRlfSB7XHJcbiAgICByZXR1cm4gdGhpcy5fZGF0ZVJhbmdlO1xyXG4gIH1cclxuXHJcbiAgZ2V0IGVuZERhdGVSYW5nZSgpOiB7bWluRGF0ZTogRGF0ZSwgIG1heERhdGU6IERhdGV9IHtcclxuICAgIHJldHVybiB0aGlzLl9lbmREYXRlUmFuZ2U7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIF9kYXRlUmFuZ2UgPSB7XHJcbiAgICBtaW5EYXRlOiBuZXcgRGF0ZSh0aGlzLmN1cnJlbnRZZWFyIC0gMTAwLCAwLCAxKSxcclxuICAgIG1heERhdGU6IG5ldyBEYXRlKHRoaXMuY3VycmVudFllYXIgKyAxMDAsIDExLCAzMSlcclxuICB9O1xyXG5cclxuICBwcml2YXRlIF9lbmREYXRlUmFuZ2UgPSB7XHJcbiAgICBtaW5EYXRlOiBuZXcgRGF0ZSh0aGlzLmN1cnJlbnRZZWFyIC0gMTAwLCAwLCAxKSxcclxuICAgIG1heERhdGU6IG5ldyBEYXRlKHRoaXMuY3VycmVudFllYXIgKyAxMDAsIDExLCAzMSlcclxuICB9XHJcblxyXG4gIEBJbnB1dCgpXHJcbiAgc2V0IHZhbHVlKHZhbHVlOiB7IHN0YXJ0OiBEYXRlLCBlbmQ6IERhdGUgfSkge1xyXG4gICAgaWYgKCF2YWx1ZSkge1xyXG4gICAgICB2YWx1ZSA9IHtzdGFydDogbnVsbCBhcyBhbnksIGVuZDogbnVsbCBhcyBhbnl9O1xyXG4gICAgfVxyXG5cclxuICAgIHRoaXMuX3ZhbHVlJC5uZXh0KHZhbHVlKTtcclxuXHJcbiAgICBpZiAodmFsdWUpIHtcclxuICAgICAgdGhpcy5iZWdpbkRhdGUgPSB2YWx1ZS5zdGFydDtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGdldCB2YWx1ZSgpOiB7c3RhcnQ6IERhdGUsIGVuZDogRGF0ZX0ge1xyXG4gICAgcmV0dXJuIHRoaXMuX2xhc3RWYWx1ZTtcclxuICB9XHJcblxyXG4gIEBJbnB1dCgpXHJcbiAgc2V0IGRpc2FibGVkKGRpc2FibGVkOiBib29sZWFuKSB7XHJcbiAgICB0aGlzLl9kaXNhYmxlZCA9IGRpc2FibGVkO1xyXG4gIH1cclxuXHJcbiAgZ2V0IGRpc2FibGVkKCk6IGJvb2xlYW4ge1xyXG4gICAgcmV0dXJuIHRoaXMuX2Rpc2FibGVkO1xyXG4gIH1cclxuXHJcbiAgQElucHV0KClcclxuICBhcmlhTGFiZWw6IHN0cmluZyA9IG51bGwgYXMgYW55O1xyXG5cclxuICAvKipcclxuICAgKiBGb3JtYXQgZm9yIHRoZSBzZWxlY3RlZCBkYXRlIHJhbmdlIGluIHRoZSBzZWxlY3Rpb24gcHJldmlldy4gTXVzdFxyXG4gICAqIGJlIGEgdmFsaWQgQW5ndWxhciBEYXRlUGlwZSBmb3JtYXRcclxuICAgKi9cclxuICBASW5wdXQoKVxyXG4gIGRhdGVGb3JtYXQgPSAnTU0vZGQveSc7XHJcblxyXG4gIEBWaWV3Q2hpbGQoJ2NhbGVuZGFyUG9wb3ZlcicpXHJcbiAgY2FsZW5kYXJQb3BvdmVyOiBQb3BvdmVyQ29tcG9uZW50ID0gbnVsbCBhcyBhbnk7XHJcblxyXG4gIEBWaWV3Q2hpbGQoJ2JlZ2luQ2FsZW5kYXInKVxyXG4gIGJlZ2luQ2FsZW5kYXI6IENhbGVuZGFyQ29tcG9uZW50ID0gbnVsbCBhcyBhbnk7XHJcblxyXG4gIEBWaWV3Q2hpbGQoJ2VuZENhbGVuZGFyJylcclxuICBlbmRDYWxlbmRhcjogQ2FsZW5kYXJDb21wb25lbnQgPSBudWxsIGFzIGFueTtcclxuXHJcbiAgbmdBZnRlclZpZXdJbml0KCk6IHZvaWQge1xyXG4gICAgdGhpcy5faW5pdCA9IHRydWU7XHJcbiAgfVxyXG5cclxuICBnZXQgYmVnaW5EYXRlKCk6IERhdGUge1xyXG4gICAgaWYgKHRoaXMuX3ZhbHVlJC52YWx1ZSkge1xyXG4gICAgICByZXR1cm4gdGhpcy5fdmFsdWUkLnZhbHVlLnN0YXJ0O1xyXG4gICAgfVxyXG5cclxuICAgIHJldHVybiBudWxsIGFzIGFueTtcclxuICB9XHJcblxyXG4gIHNldCBiZWdpbkRhdGUoYmVnaW5EYXRlOiBEYXRlKSB7XHJcbiAgICBsZXQgdmFsdWUgPSB0aGlzLl92YWx1ZSQudmFsdWU7XHJcbiAgICB2YWx1ZS5zdGFydCA9IGJlZ2luRGF0ZTtcclxuXHJcbiAgICBpZiAoIWJlZ2luRGF0ZSAmJiB0aGlzLmJlZ2luQ2FsZW5kYXIpIHtcclxuICAgICAgaWYgKHRoaXMuYmVnaW5DYWxlbmRhcikge1xyXG4gICAgICAgIHRoaXMuYmVnaW5DYWxlbmRhci5jbGVhcigpO1xyXG4gICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgdGhpcy5fdmFsdWUkLm5leHQodmFsdWUpO1xyXG5cclxuICAgIGlmICghYmVnaW5EYXRlIHx8IGJlZ2luRGF0ZSA+IHRoaXMuZW5kRGF0ZSkge1xyXG4gICAgICB0aGlzLmVuZERhdGUgPSBudWxsIGFzIGFueTtcclxuICAgIH1cclxuXHJcbiAgICB0aGlzLl9lbmREYXRlUmFuZ2UgPSB7XHJcbiAgICAgIG1pbkRhdGU6IGJlZ2luRGF0ZSxcclxuICAgICAgbWF4RGF0ZTogdGhpcy5kYXRlUmFuZ2UubWF4RGF0ZVxyXG4gICAgfTtcclxuICB9XHJcblxyXG4gIGdldCBlbmREYXRlKCk6IERhdGUge1xyXG4gICAgaWYgKHRoaXMuX3ZhbHVlJC52YWx1ZSkge1xyXG4gICAgICByZXR1cm4gdGhpcy5fdmFsdWUkLnZhbHVlLmVuZDtcclxuICAgIH1cclxuXHJcbiAgICByZXR1cm4gbnVsbCBhcyBhbnk7XHJcbiAgfVxyXG5cclxuICBzZXQgZW5kRGF0ZShlbmREYXRlOiBEYXRlKSB7XHJcbiAgICBpZiAodGhpcy5fdmFsdWUkLnZhbHVlICYmIGVuZERhdGUgPCB0aGlzLl92YWx1ZSQudmFsdWUuc3RhcnQpIHtcclxuICAgICAgZW5kRGF0ZSA9IG51bGwgYXMgYW55O1xyXG4gICAgICBpZiAodGhpcy5lbmRDYWxlbmRhcikge1xyXG4gICAgICAgIHRoaXMuZW5kQ2FsZW5kYXIuY2xlYXIoKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIGxldCB2YWx1ZSA9IHRoaXMuX3ZhbHVlJC52YWx1ZTtcclxuICAgIHZhbHVlLmVuZCA9IGVuZERhdGU7XHJcblxyXG4gICAgaWYgKCFlbmREYXRlICYmIHRoaXMuZW5kQ2FsZW5kYXIpIHtcclxuICAgICAgaWYgKHRoaXMuZW5kQ2FsZW5kYXIpIHtcclxuICAgICAgICB0aGlzLmVuZENhbGVuZGFyLmNsZWFyKCk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICB0aGlzLl92YWx1ZSQubmV4dCh2YWx1ZSk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBGdW5jdGlvbiB0byBjYWxsIG9uIGNoYW5nZVxyXG4gICAqL1xyXG4gIG9uQ2hhbmdlOiAodmFsdWU6IGFueSkgPT4gdm9pZCA9ICgpID0+IHt9O1xyXG5cclxuICAvKipcclxuICAgKiBGdW5jdGlvbiB0byBjYWxsIG9uIHRvdWNoXHJcbiAgICovXHJcbiAgb25Ub3VjaGVkOiAoKSA9PiBhbnkgPSAoKSA9PiB7fTtcclxuXHJcbiAgY29uc3RydWN0b3IocHJpdmF0ZSBjaGFuZ2VEZXRlY3RvclJlZjogQ2hhbmdlRGV0ZWN0b3JSZWYpIHtcclxuXHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBXcml0ZSB2YWx1ZVxyXG4gICAqIEBwYXJhbSB2YWx1ZSB0aGUgdmFsdWUgdG8gd3JpdGVcclxuICAgKi9cclxuICB3cml0ZVZhbHVlKHZhbHVlOiB7IHN0YXJ0OiBEYXRlLCBlbmQ6IERhdGUgfSk6IHZvaWQge1xyXG4gICAgdGhpcy52YWx1ZSA9IHZhbHVlO1xyXG4gICAgdGhpcy5jaGFuZ2VEZXRlY3RvclJlZi5tYXJrRm9yQ2hlY2soKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIFJlZ2lzdGVyIGZ1bmN0aW9uIG9uIGNoYW5nZVxyXG4gICAqIEBwYXJhbSBmbiB0aGUgZnVuY3Rpb24gdG8gY2hhbmdlXHJcbiAgICovXHJcbiAgcmVnaXN0ZXJPbkNoYW5nZShmbjogYW55KTogdm9pZCB7XHJcbiAgICB0aGlzLm9uQ2hhbmdlID0gZm47XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBSZWdpc3RlciBmdW5jdGlvbiBvbiB0b3VjaFxyXG4gICAqIEBwYXJhbSBmbiB0aGUgZnVuY3Rpb24gdG8gcmVnaXN0ZXJcclxuICAgKi9cclxuICByZWdpc3Rlck9uVG91Y2hlZChmbjogYW55KTogdm9pZCB7XHJcbiAgICB0aGlzLm9uVG91Y2hlZCA9IGZuO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogU2V0IGRpc2FibGVkIHN0YXRlXHJcbiAgICogQHBhcmFtIGlzRGlzYWJsZWQgd2hldGhlciBvciBub3QgdGhlIGNvbnRyb2wgaXMgZGlzYWJsZWRcclxuICAgKi9cclxuICBzZXREaXNhYmxlZFN0YXRlKGlzRGlzYWJsZWQ6IGJvb2xlYW4pOiB2b2lkIHtcclxuICAgIHRoaXMuZGlzYWJsZWQgPSBpc0Rpc2FibGVkO1xyXG4gICAgdGhpcy5jaGFuZ2VEZXRlY3RvclJlZi5tYXJrRm9yQ2hlY2soKTtcclxuICB9XHJcblxyXG4gIG9wZW5DYWxlbmRhcihldmVudDogRXZlbnQpOiB2b2lkIHtcclxuICAgIGlmICghdGhpcy5kaXNhYmxlZCkge1xyXG4gICAgICB0aGlzLmNhbGVuZGFyUG9wb3Zlci50b2dnbGUoZXZlbnQpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgdXBkYXRlTW9kZWwoaXNCZWdpbjogYm9vbGVhbiwgZGF0ZTogRGF0ZSk6IHZvaWQge1xyXG4gICAgaWYgKGlzQmVnaW4pIHtcclxuICAgICAgdGhpcy5iZWdpbkRhdGUgPSBkYXRlO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdGhpcy5lbmREYXRlID0gZGF0ZTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGNoZWNrU3RhdGUoKTogdm9pZCB7XHJcbiAgICBjb25zdCB2YWwgPSB0aGlzLl92YWx1ZSQudmFsdWU7XHJcbiAgICBpZiAodmFsICYmICgodmFsLnN0YXJ0ID4gdmFsLmVuZCkgfHwgISh2YWwuc3RhcnQgJiYgdmFsLmVuZCkpKSB7XHJcbiAgICAgIHRoaXMuY2xlYXIoKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGNsZWFyKCk6IHZvaWQge1xyXG4gICAgdGhpcy52YWx1ZSA9IG51bGwgYXMgYW55O1xyXG4gIH1cclxuXHJcbn1cclxuIiwiPGRpdiBzdHlsZT1cImN1cnNvcjpkZWZhdWx0O292ZXJmbG93OiBoaWRkZW47XCJcclxuICAgICBbbmdDbGFzc109XCJpbnB1dENsYXNzTGlzdCA/ICcnIDogJ3JvdyBwdGxfaW5wdXQgcHRsX2lucHV0X2hlaWdodCBwdGxfaW5wdXRfYmdfY29sb3IgcHRsX2JyZHJfY29sb3IgcHRsX2JyZHJfc2l6ZSBwdGxfYnJkcl9yYWRpdXMgZW50X3IybF9kaXInXCJcclxuICAgICBbc3R5bGUuZmlsdGVyXT1cImRpc2FibGVkID8gJ2JyaWdodG5lc3MoLjk1KScgOiAnJ1wiPlxyXG4gIDxidXR0b24gKGNsaWNrKT1cIm9wZW5DYWxlbmRhcigkZXZlbnQpXCJcclxuICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxyXG4gICAgICAgICAgYXJpYS1oYXNwb3B1cD1cImRpYWxvZ1wiXHJcbiAgICAgICAgICBbZGlzYWJsZWRdPVwiZGlzYWJsZWRcIlxyXG4gICAgICAgICAgW2F0dHIuYXJpYS1sYWJlbF09XCIoYXJpYUxhYmVsID8gYXJpYUxhYmVsICsgJywgJyA6ICcnKSArIHRleHQub3BlbkNhbGVuZGFyXCJcclxuICAgICAgICAgIFthdHRyLmFyaWEtZXhwYW5kZWRdPVwiY2FsZW5kYXJQb3BvdmVyLnZpc2libGVcIlxyXG4gICAgICAgICAgW25nQ2xhc3NdPVwiaW5wdXRDbGFzc0xpc3QgPyBpbnB1dENsYXNzTGlzdCA6ICdjbGVhcidcIlxyXG4gICAgICAgICAgY2xhc3M9XCJhY2Nlc3MgYnRuc2V0IHdpZHRoMTAwIGhlaWdodDEwMCBjZW50ZXJfY2VudGVyXCJcclxuICAgICAgICAgIHN0eWxlPVwib3V0bGluZS1vZmZzZXQ6IC0ycHg7XCJcclxuICA+XHJcbiAgICA8ZGl2IGNsYXNzPVwiY29sIHNpemVfMSBoZWlnaHQxMDAgd2lkdGgxMDAgcHRsX2lucHV0X3RleHRfc2l6ZSBwdGxfaW5wdXRfcGFkZGluZyB2X2NlbnRlclwiPlxyXG4gICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwidmFsdWVPYnMkIHwgYXN5bmMgYXMgdmFsdWVcIj5cclxuICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwidmFsdWUuc3RhcnQgJiYgdmFsdWUuZW5kIGVsc2UgcGxhY2Vob2xkZXJUZW1wbGF0ZVwiPlxyXG4gICAgICAgICAge3t2YWx1ZS5zdGFydCB8IGRhdGU6IGRhdGVGb3JtYXR9fSAtIHt7dmFsdWUuZW5kIHwgZGF0ZTogZGF0ZUZvcm1hdH19XHJcbiAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICA8bmctdGVtcGxhdGUgI3BsYWNlaG9sZGVyVGVtcGxhdGU+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImVudF9yMmxfdHh0XCI+e3t0ZXh0LnNlbGVjdFJhbmdlfX0uLi48L2Rpdj5cclxuICAgICAgPC9uZy10ZW1wbGF0ZT5cclxuICAgIDwvZGl2PlxyXG4gICAgPGRpdiBjbGFzcz1cImNvbCBtaW5fdzUwIGhlaWdodDEwMCBjZW50ZXJfY2VudGVyIGJvcmRlcl9sZWZ0XCJcclxuICAgICAgICAgW25nQ2xhc3NdPVwiY2FsZW5kYXJCdXR0b25DbGFzc0xpc3QgPyBjYWxlbmRhckJ1dHRvbkNsYXNzTGlzdCA6ICdiZ19vdmVybGF5IHB0bF9icmRyX2NvbG9yIHB0bF9pbnB1dF90ZXh0X3NpemUnXCI+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJ3aWR0aDEwMCBoZWlnaHQxMDAgY2VudGVyX2NlbnRlclwiPlxyXG4gICAgICAgIDxpIGNsYXNzPVwiZmFzIGZhLWNhbGVuZGFyLWRheXMgcHRsX2lucHV0X3RleHRfc2l6ZVwiPjwvaT5cclxuICAgICAgPC9kaXY+XHJcbiAgICA8L2Rpdj5cclxuICA8L2J1dHRvbj5cclxuPC9kaXY+XHJcblxyXG48cGFydGljbGUtcG9wb3ZlciAoY2xvc2VkKT1cImNoZWNrU3RhdGUoKVwiICNjYWxlbmRhclBvcG92ZXI+XHJcbiAgPGRpdiBjbGFzcz1cIndpZHRoMTAwIHNwYWNlX2JldHdlZW5cIj5cclxuICAgIDxkaXY+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJwYWRfMTAgcGFkX2JvdDBcIj5cclxuICAgICAgICA8ZGl2Pnt7dGV4dC5iZWdpbn19OjwvZGl2PlxyXG4gICAgICAgIDxkaXY+XHJcbiAgICAgICAgICA8cGFydGljbGUtZGF0ZS1waWNrZXJcclxuICAgICAgICAgICAgaW5wdXRDbGFzc0xpc3Q9XCJhY2Nlc3MgaW5wdXQgc20gY29udGVudF9jb2xvclwiXHJcbiAgICAgICAgICAgIFtpbnB1dE9ubHldPVwidHJ1ZVwiXHJcbiAgICAgICAgICAgIFsobmdNb2RlbCldPVwiYmVnaW5EYXRlXCJcclxuICAgICAgICAgICAgW2RhdGVSYW5nZV09XCJkYXRlUmFuZ2VcIj5cclxuICAgICAgICAgIDwvcGFydGljbGUtZGF0ZS1waWNrZXI+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgICA8cGFydGljbGUtY2FsZW5kYXIgW3ZhbHVlXT1cImJlZ2luRGF0ZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICBbdGV4dF09XCIkYW55KHRleHQuY2FsZW5kYXJUZXh0KVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICBbZGF0ZVJhbmdlXT1cImRhdGVSYW5nZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICBbc2hvd0NvbnRyb2xzXT1cImZhbHNlXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiaGlkZV9lbGVtZW50XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgIChzZWxlY3RlZCk9XCJ1cGRhdGVNb2RlbCh0cnVlLCAkZXZlbnQpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICNiZWdpbkNhbGVuZGFyPlxyXG4gICAgICA8L3BhcnRpY2xlLWNhbGVuZGFyPlxyXG4gICAgPC9kaXY+XHJcbiAgICA8ZGl2PlxyXG4gICAgICA8ZGl2IGNsYXNzPVwicGFkXzEwIHBhZF9ib3QwXCI+XHJcbiAgICAgICAgPGRpdj57e3RleHQuZW5kfX06PC9kaXY+XHJcbiAgICAgICAgPGRpdj5cclxuICAgICAgICAgIDxwYXJ0aWNsZS1kYXRlLXBpY2tlclxyXG4gICAgICAgICAgICBpbnB1dENsYXNzTGlzdD1cImFjY2VzcyBpbnB1dCBzbSBjb250ZW50X2NvbG9yXCJcclxuICAgICAgICAgICAgW2lucHV0T25seV09XCJ0cnVlXCJcclxuICAgICAgICAgICAgW2RhdGVSYW5nZV09XCJlbmREYXRlUmFuZ2VcIlxyXG4gICAgICAgICAgICBbKG5nTW9kZWwpXT1cImVuZERhdGVcIj5cclxuICAgICAgICAgIDwvcGFydGljbGUtZGF0ZS1waWNrZXI+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgICA8cGFydGljbGUtY2FsZW5kYXIgW3ZhbHVlXT1cImVuZERhdGVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgW3RleHRdPVwiJGFueSh0ZXh0LmNhbGVuZGFyVGV4dClcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgW2RhdGVSYW5nZV09XCJlbmREYXRlUmFuZ2VcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgW3Nob3dDb250cm9sc109XCJmYWxzZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImhpZGVfZWxlbWVudFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAoc2VsZWN0ZWQpPVwidXBkYXRlTW9kZWwoZmFsc2UsICRldmVudClcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgI2VuZENhbGVuZGFyPlxyXG4gICAgICA8L3BhcnRpY2xlLWNhbGVuZGFyPlxyXG4gICAgICA8ZGl2IGNsYXNzPVwibW9iaWxlX29ubHkgcGFkX2JvdDEwXCI+PC9kaXY+XHJcbiAgICA8L2Rpdj5cclxuICA8L2Rpdj5cclxuICA8ZGl2IGNsYXNzPVwiYmdfb3ZlcmxheSBicmRyIGhyIG1hcl81IG1hcl90b3AwXCI+PC9kaXY+XHJcbiAgPGRpdiBjbGFzcz1cInJvdyBzcGFjZV9iZXR3ZWVuXCI+XHJcbiAgICA8YnV0dG9uIChjbGljayk9XCJjbGVhcigpXCJcclxuICAgICAgICAgICAgY2xhc3M9XCJhY2Nlc3MgYnRuIHNtIGJnX292ZXJsYXlfcmV2IGJyZHIgbWFyXzUgaG92X2JnXCJcclxuICAgICAgICAgICAgW2F0dHIuYXJpYS1sYWJlbF09XCJ0ZXh0LmNsZWFyXCI+XHJcbiAgICAgIDxpIGNsYXNzPVwiZmFzIGZhLXggbWFyX3JpZ2h0NVwiPjwvaT48c3BhbiBjbGFzcz1cInRleHQgYm9sZFwiPnt7dGV4dC5jbGVhcn19PC9zcGFuPlxyXG4gICAgPC9idXR0b24+XHJcblxyXG4gICAgPGJ1dHRvbiAoa2V5dXAuZXNjYXBlKT1cImNhbGVuZGFyUG9wb3Zlci5jbG9zZSgpXCJcclxuICAgICAgICAgICAgKGNsaWNrKT1cImNhbGVuZGFyUG9wb3Zlci5jbG9zZSgpXCJcclxuICAgICAgICAgICAgW2F0dHIuZGF0YS1kaWFsb2ctY2xvc2Utb3ZlcnJpZGVdPVwidHJ1ZVwiXHJcbiAgICAgICAgICAgIGNsYXNzPVwiYWNjZXNzIGJ0biBzbSBiZ19vdmVybGF5X3JldiBicmRyIG1hcl81IGhvdl9iZ1wiXHJcbiAgICAgICAgICAgIFthdHRyLmFyaWEtbGFiZWxdPVwidGV4dC5kb25lXCI+XHJcbiAgICAgIDxpIGNsYXNzPVwiZmFzIGZhLWNoZWNrIG1hcl9yaWdodDVcIj48L2k+PHNwYW4gY2xhc3M9XCJ0ZXh0IGJvbGRcIj57e3RleHQuZG9uZX19PC9zcGFuPlxyXG4gICAgPC9idXR0b24+XHJcbiAgPC9kaXY+XHJcbjwvcGFydGljbGUtcG9wb3Zlcj5cclxuXHJcbiJdfQ==
|