@elderbyte/ngx-starter 18.9.0 → 18.10.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.
Files changed (22) hide show
  1. package/esm2022/lib/common/time/public_api.mjs +3 -1
  2. package/esm2022/lib/common/time/temporal-plain-date-interval.mjs +34 -0
  3. package/esm2022/lib/common/time/temporal-util.mjs +187 -0
  4. package/esm2022/lib/components/time/elder-interval-input/elder-interval-input.component.mjs +13 -4
  5. package/esm2022/lib/components/time/elder-interval-picker/elder-interval-picker-binding.directive.mjs +45 -0
  6. package/esm2022/lib/components/time/elder-interval-picker/elder-interval-picker-toggle/elder-interval-picker-toggle.component.mjs +203 -0
  7. package/esm2022/lib/components/time/elder-interval-picker/elder-interval-picker.component.mjs +269 -0
  8. package/esm2022/lib/components/time/elder-interval-picker/elder-interval-picker.service.mjs +703 -0
  9. package/esm2022/lib/components/time/elder-time.module.mjs +22 -2
  10. package/fesm2022/elderbyte-ngx-starter.mjs +1790 -375
  11. package/fesm2022/elderbyte-ngx-starter.mjs.map +1 -1
  12. package/lib/common/time/public_api.d.ts +2 -0
  13. package/lib/common/time/temporal-plain-date-interval.d.ts +15 -0
  14. package/lib/common/time/temporal-util.d.ts +34 -0
  15. package/lib/components/time/elder-interval-input/elder-interval-input.component.d.ts +4 -1
  16. package/lib/components/time/elder-interval-picker/elder-interval-picker-binding.directive.d.ts +30 -0
  17. package/lib/components/time/elder-interval-picker/elder-interval-picker-toggle/elder-interval-picker-toggle.component.d.ts +48 -0
  18. package/lib/components/time/elder-interval-picker/elder-interval-picker.component.d.ts +73 -0
  19. package/lib/components/time/elder-interval-picker/elder-interval-picker.service.d.ts +130 -0
  20. package/lib/components/time/elder-time.module.d.ts +8 -2
  21. package/package.json +3 -2
  22. package/src/lib/components/time/elder-interval-picker/elder-interval-picker.component.scss +36 -0
@@ -3,4 +3,6 @@ export * from './interval';
3
3
  export * from './interval-coerce';
4
4
  export * from './time-util';
5
5
  export * from './date-util';
6
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVibGljX2FwaS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2VsZGVyYnl0ZS9uZ3gtc3RhcnRlci9zcmMvbGliL2NvbW1vbi90aW1lL3B1YmxpY19hcGkudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBRUEsY0FBYyxtQkFBbUIsQ0FBQztBQUNsQyxjQUFjLFlBQVksQ0FBQztBQUMzQixjQUFjLG1CQUFtQixDQUFDO0FBQ2xDLGNBQWMsYUFBYSxDQUFDO0FBQzVCLGNBQWMsYUFBYSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiXG5cbmV4cG9ydCAqIGZyb20gJy4vcGVyaW9kLWR1cmF0aW9uJztcbmV4cG9ydCAqIGZyb20gJy4vaW50ZXJ2YWwnO1xuZXhwb3J0ICogZnJvbSAnLi9pbnRlcnZhbC1jb2VyY2UnO1xuZXhwb3J0ICogZnJvbSAnLi90aW1lLXV0aWwnO1xuZXhwb3J0ICogZnJvbSAnLi9kYXRlLXV0aWwnO1xuIl19
6
+ export * from './temporal-util';
7
+ export * from './temporal-plain-date-interval';
8
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVibGljX2FwaS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2VsZGVyYnl0ZS9uZ3gtc3RhcnRlci9zcmMvbGliL2NvbW1vbi90aW1lL3B1YmxpY19hcGkudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBRUEsY0FBYyxtQkFBbUIsQ0FBQztBQUNsQyxjQUFjLFlBQVksQ0FBQztBQUMzQixjQUFjLG1CQUFtQixDQUFDO0FBQ2xDLGNBQWMsYUFBYSxDQUFDO0FBQzVCLGNBQWMsYUFBYSxDQUFDO0FBQzVCLGNBQWMsaUJBQWlCLENBQUM7QUFDaEMsY0FBYyxnQ0FBZ0MsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIlxuXG5leHBvcnQgKiBmcm9tICcuL3BlcmlvZC1kdXJhdGlvbic7XG5leHBvcnQgKiBmcm9tICcuL2ludGVydmFsJztcbmV4cG9ydCAqIGZyb20gJy4vaW50ZXJ2YWwtY29lcmNlJztcbmV4cG9ydCAqIGZyb20gJy4vdGltZS11dGlsJztcbmV4cG9ydCAqIGZyb20gJy4vZGF0ZS11dGlsJztcbmV4cG9ydCAqIGZyb20gJy4vdGVtcG9yYWwtdXRpbCc7XG5leHBvcnQgKiBmcm9tICcuL3RlbXBvcmFsLXBsYWluLWRhdGUtaW50ZXJ2YWwnO1xuIl19
@@ -0,0 +1,34 @@
1
+ export class TemporalPlainDateInterval {
2
+ constructor(start, end) {
3
+ this.start = start;
4
+ this.end = end;
5
+ }
6
+ shiftDays(days) {
7
+ return new TemporalPlainDateInterval(this.start.add({ days }), this.end.add({ days }));
8
+ }
9
+ shiftMonths(months) {
10
+ return new TemporalPlainDateInterval(this.start.add({ months }), this.end.add({ months }));
11
+ }
12
+ shiftYears(years) {
13
+ return new TemporalPlainDateInterval(this.start.add({ years }), this.end.add({ years }));
14
+ }
15
+ toString() {
16
+ return `${this.start.toString()} - ${this.end.toString()} (duration: ${this.getDurationInDays()} days)`;
17
+ }
18
+ getDuration() {
19
+ return this.start.until(this.end);
20
+ }
21
+ getDurationInDays() {
22
+ return this.getDuration().days;
23
+ }
24
+ getDurationInWeeks() {
25
+ return this.getDurationInDays() / 7;
26
+ }
27
+ getDurationInMonths() {
28
+ return this.getDuration().months;
29
+ }
30
+ getDurationInYears() {
31
+ return this.getDuration().years;
32
+ }
33
+ }
34
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGVtcG9yYWwtcGxhaW4tZGF0ZS1pbnRlcnZhbC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2VsZGVyYnl0ZS9uZ3gtc3RhcnRlci9zcmMvbGliL2NvbW1vbi90aW1lL3RlbXBvcmFsLXBsYWluLWRhdGUtaW50ZXJ2YWwudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBRUEsTUFBTSxPQUFPLHlCQUF5QjtJQUlsQyxZQUFZLEtBQXlCLEVBQUUsR0FBdUI7UUFDNUQsSUFBSSxDQUFDLEtBQUssR0FBRyxLQUFLLENBQUM7UUFDbkIsSUFBSSxDQUFDLEdBQUcsR0FBRyxHQUFHLENBQUM7SUFDakIsQ0FBQztJQUVELFNBQVMsQ0FBQyxJQUFZO1FBQ3BCLE9BQU8sSUFBSSx5QkFBeUIsQ0FDbEMsSUFBSSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsRUFBRSxJQUFJLEVBQUUsQ0FBQyxFQUN4QixJQUFJLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxFQUFFLElBQUksRUFBRSxDQUFDLENBQ3ZCLENBQUM7SUFDSixDQUFDO0lBRUQsV0FBVyxDQUFDLE1BQWM7UUFDeEIsT0FBTyxJQUFJLHlCQUF5QixDQUNsQyxJQUFJLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxFQUFFLE1BQU0sRUFBRSxDQUFDLEVBQzFCLElBQUksQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEVBQUUsTUFBTSxFQUFFLENBQUMsQ0FDekIsQ0FBQztJQUNKLENBQUM7SUFFRCxVQUFVLENBQUMsS0FBYTtRQUN0QixPQUFPLElBQUkseUJBQXlCLENBQ2xDLElBQUksQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLEVBQUUsS0FBSyxFQUFFLENBQUMsRUFDekIsSUFBSSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsRUFBRSxLQUFLLEVBQUUsQ0FBQyxDQUN4QixDQUFDO0lBQ0osQ0FBQztJQUVELFFBQVE7UUFDTixPQUFPLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxRQUFRLEVBQUUsTUFBTSxJQUFJLENBQUMsR0FBRyxDQUFDLFFBQVEsRUFBRSxlQUFlLElBQUksQ0FBQyxpQkFBaUIsRUFBRSxRQUFRLENBQUM7SUFDMUcsQ0FBQztJQUVELFdBQVc7UUFDVCxPQUFPLElBQUksQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUNwQyxDQUFDO0lBRUQsaUJBQWlCO1FBQ2YsT0FBTyxJQUFJLENBQUMsV0FBVyxFQUFFLENBQUMsSUFBSSxDQUFDO0lBQ2pDLENBQUM7SUFFRCxrQkFBa0I7UUFDaEIsT0FBTyxJQUFJLENBQUMsaUJBQWlCLEVBQUUsR0FBRyxDQUFDLENBQUM7SUFDdEMsQ0FBQztJQUVELG1CQUFtQjtRQUNqQixPQUFPLElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQyxNQUFNLENBQUM7SUFDbkMsQ0FBQztJQUVELGtCQUFrQjtRQUNoQixPQUFPLElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQyxLQUFLLENBQUM7SUFDbEMsQ0FBQztDQUNGIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgVGVtcG9yYWwgfSBmcm9tICdAanMtdGVtcG9yYWwvcG9seWZpbGwnO1xuXG5leHBvcnQgY2xhc3MgVGVtcG9yYWxQbGFpbkRhdGVJbnRlcnZhbCB7XG4gICAgc3RhcnQ6IFRlbXBvcmFsLlBsYWluRGF0ZTtcbiAgICBlbmQ6IFRlbXBvcmFsLlBsYWluRGF0ZTtcblxuICAgIGNvbnN0cnVjdG9yKHN0YXJ0OiBUZW1wb3JhbC5QbGFpbkRhdGUsIGVuZDogVGVtcG9yYWwuUGxhaW5EYXRlKSB7XG4gICAgICB0aGlzLnN0YXJ0ID0gc3RhcnQ7XG4gICAgICB0aGlzLmVuZCA9IGVuZDtcbiAgICB9XG5cbiAgICBzaGlmdERheXMoZGF5czogbnVtYmVyKTogVGVtcG9yYWxQbGFpbkRhdGVJbnRlcnZhbCB7XG4gICAgICByZXR1cm4gbmV3IFRlbXBvcmFsUGxhaW5EYXRlSW50ZXJ2YWwoXG4gICAgICAgIHRoaXMuc3RhcnQuYWRkKHsgZGF5cyB9KSxcbiAgICAgICAgdGhpcy5lbmQuYWRkKHsgZGF5cyB9KVxuICAgICAgKTtcbiAgICB9XG5cbiAgICBzaGlmdE1vbnRocyhtb250aHM6IG51bWJlcik6IFRlbXBvcmFsUGxhaW5EYXRlSW50ZXJ2YWwge1xuICAgICAgcmV0dXJuIG5ldyBUZW1wb3JhbFBsYWluRGF0ZUludGVydmFsKFxuICAgICAgICB0aGlzLnN0YXJ0LmFkZCh7IG1vbnRocyB9KSxcbiAgICAgICAgdGhpcy5lbmQuYWRkKHsgbW9udGhzIH0pXG4gICAgICApO1xuICAgIH1cblxuICAgIHNoaWZ0WWVhcnMoeWVhcnM6IG51bWJlcik6IFRlbXBvcmFsUGxhaW5EYXRlSW50ZXJ2YWwge1xuICAgICAgcmV0dXJuIG5ldyBUZW1wb3JhbFBsYWluRGF0ZUludGVydmFsKFxuICAgICAgICB0aGlzLnN0YXJ0LmFkZCh7IHllYXJzIH0pLFxuICAgICAgICB0aGlzLmVuZC5hZGQoeyB5ZWFycyB9KVxuICAgICAgKTtcbiAgICB9XG5cbiAgICB0b1N0cmluZygpOiBzdHJpbmcge1xuICAgICAgcmV0dXJuIGAke3RoaXMuc3RhcnQudG9TdHJpbmcoKX0gLSAke3RoaXMuZW5kLnRvU3RyaW5nKCl9IChkdXJhdGlvbjogJHt0aGlzLmdldER1cmF0aW9uSW5EYXlzKCl9IGRheXMpYDtcbiAgICB9XG5cbiAgICBnZXREdXJhdGlvbigpOiBUZW1wb3JhbC5EdXJhdGlvbiB7XG4gICAgICByZXR1cm4gdGhpcy5zdGFydC51bnRpbCh0aGlzLmVuZCk7XG4gICAgfVxuXG4gICAgZ2V0RHVyYXRpb25JbkRheXMoKTogbnVtYmVyIHtcbiAgICAgIHJldHVybiB0aGlzLmdldER1cmF0aW9uKCkuZGF5cztcbiAgICB9XG5cbiAgICBnZXREdXJhdGlvbkluV2Vla3MoKTogbnVtYmVyIHtcbiAgICAgIHJldHVybiB0aGlzLmdldER1cmF0aW9uSW5EYXlzKCkgLyA3O1xuICAgIH1cblxuICAgIGdldER1cmF0aW9uSW5Nb250aHMoKTogbnVtYmVyIHtcbiAgICAgIHJldHVybiB0aGlzLmdldER1cmF0aW9uKCkubW9udGhzO1xuICAgIH1cblxuICAgIGdldER1cmF0aW9uSW5ZZWFycygpOiBudW1iZXIge1xuICAgICAgcmV0dXJuIHRoaXMuZ2V0RHVyYXRpb24oKS55ZWFycztcbiAgICB9XG4gIH1cbiJdfQ==
@@ -0,0 +1,187 @@
1
+ import { Temporal } from '@js-temporal/polyfill';
2
+ import { TemporalPlainDateInterval } from './temporal-plain-date-interval';
3
+ export class TemporalUtil {
4
+ static getJSDateFromPlainDateTime(date) {
5
+ if (date instanceof Temporal.PlainDateTime) {
6
+ return new Date(date.year, date.month - 1, date.day, date.hour, date.minute, date.second, date.millisecond);
7
+ }
8
+ return new Date(date.year, date.month - 1, date.day);
9
+ }
10
+ static getPlainDateTimeFromJSDate(date) {
11
+ const instant = Temporal.Instant.fromEpochMilliseconds(date.getTime());
12
+ const dateTimeIso = instant.toZonedDateTimeISO(Temporal.Now.timeZoneId());
13
+ return Temporal.PlainDateTime.from(dateTimeIso);
14
+ }
15
+ static getPlainDateTimeFromPlainDateAndPlainTime(date, time) {
16
+ return Temporal.PlainDateTime.from({
17
+ year: date.year,
18
+ month: date.month,
19
+ day: date.day,
20
+ hour: time.hour,
21
+ minute: time.minute,
22
+ second: time.second,
23
+ millisecond: time.millisecond,
24
+ });
25
+ }
26
+ static isFirstDayOfWeek(date) {
27
+ return date.dayOfWeek === 1;
28
+ }
29
+ static getPlainDateFromJSDate(date) {
30
+ return this.createTemporalLocalizedDateFromTimestamp(date.getTime());
31
+ }
32
+ static getPlainTimeFromJSDate(date) {
33
+ const instant = Temporal.Instant.fromEpochMilliseconds(date.getTime());
34
+ const dateTimeIso = instant.toZonedDateTimeISO(Temporal.Now.timeZoneId());
35
+ return Temporal.PlainTime.from(dateTimeIso);
36
+ }
37
+ static getPlainDateTimeFromString(dateString) {
38
+ let jsDate = null;
39
+ try {
40
+ jsDate = new Date(dateString);
41
+ if (typeof jsDate !== 'object' || jsDate.constructor.name !== 'Date') {
42
+ throw new Error('Invalid date string');
43
+ }
44
+ }
45
+ catch (e) {
46
+ console.warn('Invalid date string', dateString);
47
+ return null;
48
+ }
49
+ return this.getPlainDateTimeFromJSDate(jsDate);
50
+ }
51
+ static getHtmlTimeStringFromPlainTime(time) {
52
+ if (!time) {
53
+ return '00:00:00';
54
+ }
55
+ return (time.hour.toString().padStart(2, '0') +
56
+ ':' +
57
+ time.minute.toString().padStart(2, '0') +
58
+ ':' +
59
+ time.second.toString().padStart(2, '0'));
60
+ }
61
+ static getQuarterForDate(date = TemporalUtil.getDateTodayLocalized()) {
62
+ return Math.floor((date.month - 1) / 3) + 1;
63
+ }
64
+ static getCurrentDay(referenceDate = TemporalUtil.getDateTodayLocalized()) {
65
+ const today = referenceDate;
66
+ const tomorrow = today.add({ days: 1 });
67
+ return new TemporalPlainDateInterval(today, tomorrow);
68
+ }
69
+ static getYesterday(referenceDate = TemporalUtil.getDateTodayLocalized()) {
70
+ const yesterday = referenceDate.subtract({ days: 1 });
71
+ return new TemporalPlainDateInterval(yesterday, referenceDate);
72
+ }
73
+ static getLastSevenDays(referenceDate = TemporalUtil.getDateTodayLocalized()) {
74
+ return new TemporalPlainDateInterval(referenceDate.subtract({ days: 7 }), referenceDate);
75
+ }
76
+ static getLastThirtyDays(referenceDate = TemporalUtil.getDateTodayLocalized()) {
77
+ return new TemporalPlainDateInterval(referenceDate.subtract({ days: 30 }), referenceDate);
78
+ }
79
+ static getCurrentWeek(referenceDate = TemporalUtil.getDateTodayLocalized()) {
80
+ const startOfWeek = referenceDate.subtract({
81
+ days: referenceDate.dayOfWeek - 1,
82
+ });
83
+ const endOfWeek = startOfWeek.add({ days: 7 });
84
+ return new TemporalPlainDateInterval(startOfWeek, endOfWeek);
85
+ }
86
+ static getCurrentMonth(referenceDate = TemporalUtil.getDateTodayLocalized()) {
87
+ const startOfMonth = referenceDate.subtract({
88
+ days: referenceDate.day - 1,
89
+ });
90
+ const endOfMonth = startOfMonth.add({ months: 1 });
91
+ return new TemporalPlainDateInterval(startOfMonth, endOfMonth);
92
+ }
93
+ static getCurrentQuarter(referenceDate = TemporalUtil.getDateTodayLocalized()) {
94
+ const quarter = Math.floor((referenceDate.month - 1) / 3);
95
+ const startOfQuarter = referenceDate.subtract({
96
+ months: referenceDate.month - 1 - quarter * 3,
97
+ days: referenceDate.day - 1,
98
+ });
99
+ const endOfQuarter = startOfQuarter.add({ months: 3 });
100
+ return new TemporalPlainDateInterval(startOfQuarter, endOfQuarter);
101
+ }
102
+ static getPreviousQuarter(referenceDate = TemporalUtil.getDateTodayLocalized()) {
103
+ return TemporalUtil.getCurrentQuarter(referenceDate).shiftMonths(-3);
104
+ }
105
+ static getCurrentYear(referenceDate = TemporalUtil.getDateTodayLocalized()) {
106
+ const startOfYear = referenceDate.subtract({
107
+ days: referenceDate.dayOfYear - 1,
108
+ });
109
+ const endOfYear = startOfYear.add({ years: 1 });
110
+ return new TemporalPlainDateInterval(startOfYear, endOfYear);
111
+ }
112
+ static getPreviousYear(referenceDate = TemporalUtil.getDateTodayLocalized()) {
113
+ return TemporalUtil.getCurrentYear(referenceDate).shiftYears(-1);
114
+ }
115
+ static getNextYear(referenceDate = TemporalUtil.getDateTodayLocalized()) {
116
+ return TemporalUtil.getCurrentYear(referenceDate).shiftYears(1);
117
+ }
118
+ static getLast365Days(referenceDate = TemporalUtil.getDateTodayLocalized()) {
119
+ return new TemporalPlainDateInterval(referenceDate.subtract({ days: 365 }), referenceDate);
120
+ }
121
+ static getLast90Days(referenceDate = TemporalUtil.getDateTodayLocalized()) {
122
+ return new TemporalPlainDateInterval(referenceDate.subtract({ days: 90 }), referenceDate);
123
+ }
124
+ static getPreviousMonth(referenceDate = TemporalUtil.getDateTodayLocalized()) {
125
+ return TemporalUtil.getCurrentMonth(referenceDate).shiftMonths(-1);
126
+ }
127
+ static getNextMonth(referenceDate = TemporalUtil.getDateTodayLocalized()) {
128
+ return TemporalUtil.getCurrentMonth(referenceDate).shiftMonths(1);
129
+ }
130
+ static getPreviousWeek(referenceDate = TemporalUtil.getDateTodayLocalized()) {
131
+ return TemporalUtil.getCurrentWeek(referenceDate).shiftDays(-7);
132
+ }
133
+ static getDateTodayLocalized() {
134
+ return this.createTemporalLocalizedDateFromTimestamp(Date.now());
135
+ }
136
+ static createTemporalLocalizedDateFromTimestamp(timestamp) {
137
+ const instant = Temporal.Instant.fromEpochMilliseconds(timestamp);
138
+ const dateTimeIso = instant.toZonedDateTimeISO(Temporal.Now.timeZoneId());
139
+ const date = Temporal.PlainDate.from(dateTimeIso);
140
+ return date;
141
+ }
142
+ static getHtmlDateString(date) {
143
+ if (!date) {
144
+ return '';
145
+ }
146
+ return (date.year +
147
+ '-' +
148
+ date.month.toString().padStart(2, '0') +
149
+ '-' +
150
+ date.day.toString().padStart(2, '0'));
151
+ }
152
+ static getPlainDateFromHtmlDateString(dateString) {
153
+ if (!dateString) {
154
+ return null;
155
+ }
156
+ const dateArr = dateString.split('-');
157
+ if (dateArr.length !== 3) {
158
+ return null;
159
+ }
160
+ return Temporal.PlainDate.from({
161
+ year: parseInt(dateArr[0]),
162
+ month: parseInt(dateArr[1]),
163
+ day: parseInt(dateArr[2]),
164
+ });
165
+ }
166
+ static getPlainTimeFromHtmlTimeString(timeString) {
167
+ if (!timeString) {
168
+ return null;
169
+ }
170
+ const timeArr = timeString.split(':');
171
+ if (timeArr.length !== 2 && timeArr.length !== 3) {
172
+ return null;
173
+ }
174
+ if (timeArr.length === 2) {
175
+ return Temporal.PlainTime.from({
176
+ hour: parseInt(timeArr[0]),
177
+ minute: parseInt(timeArr[1]),
178
+ });
179
+ }
180
+ return Temporal.PlainTime.from({
181
+ hour: parseInt(timeArr[0]),
182
+ minute: parseInt(timeArr[1]),
183
+ second: parseInt(timeArr[2]),
184
+ });
185
+ }
186
+ }
187
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGVtcG9yYWwtdXRpbC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2VsZGVyYnl0ZS9uZ3gtc3RhcnRlci9zcmMvbGliL2NvbW1vbi90aW1lL3RlbXBvcmFsLXV0aWwudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBQ2pELE9BQU8sRUFBRSx5QkFBeUIsRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBRTNFLE1BQU0sT0FBTyxZQUFZO0lBQ3ZCLE1BQU0sQ0FBQywwQkFBMEIsQ0FDL0IsSUFBaUQ7UUFFakQsSUFBSSxJQUFJLFlBQVksUUFBUSxDQUFDLGFBQWEsRUFBRSxDQUFDO1lBQzNDLE9BQU8sSUFBSSxJQUFJLENBQ2IsSUFBSSxDQUFDLElBQUksRUFDVCxJQUFJLENBQUMsS0FBSyxHQUFHLENBQUMsRUFDZCxJQUFJLENBQUMsR0FBRyxFQUNSLElBQUksQ0FBQyxJQUFJLEVBQ1QsSUFBSSxDQUFDLE1BQU0sRUFDWCxJQUFJLENBQUMsTUFBTSxFQUNYLElBQUksQ0FBQyxXQUFXLENBQ2pCLENBQUM7UUFDSixDQUFDO1FBQ0QsT0FBTyxJQUFJLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQyxLQUFLLEdBQUcsQ0FBQyxFQUFFLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUN2RCxDQUFDO0lBRUQsTUFBTSxDQUFDLDBCQUEwQixDQUFDLElBQVU7UUFDMUMsTUFBTSxPQUFPLEdBQUcsUUFBUSxDQUFDLE9BQU8sQ0FBQyxxQkFBcUIsQ0FBQyxJQUFJLENBQUMsT0FBTyxFQUFFLENBQUMsQ0FBQztRQUN2RSxNQUFNLFdBQVcsR0FBRyxPQUFPLENBQUMsa0JBQWtCLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxVQUFVLEVBQUUsQ0FBQyxDQUFDO1FBQzFFLE9BQU8sUUFBUSxDQUFDLGFBQWEsQ0FB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S0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQ3RDLElBQUksT0FBTyxDQUFDLE1BQU0sS0FBSyxDQUFDLElBQUksT0FBTyxDQUFDLE1BQU0sS0FBSyxDQUFDLEVBQUUsQ0FBQztZQUNqRCxPQUFPLElBQUksQ0FBQztRQUNkLENBQUM7UUFFRCxJQUFJLE9BQU8sQ0FBQyxNQUFNLEtBQUssQ0FBQyxFQUFHLENBQUM7WUFDMUIsT0FBTyxRQUFRLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQztnQkFDN0IsSUFBSSxFQUFFLFFBQVEsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUM7Z0JBQzFCLE1BQU0sRUFBRSxRQUFRLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDO2FBQzdCLENBQUMsQ0FBQztRQUNMLENBQUM7UUFFRCxPQUFPLFFBQVEsQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDO1lBQzdCLElBQUksRUFBRSxRQUFRLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBQzFCLE1BQU0sRUFBRSxRQUFRLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBQzVCLE1BQU0sRUFBRSxRQUFRLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDO1NBQzdCLENBQUMsQ0FBQztJQUNMLENBQUM7Q0FDRiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFRlbXBvcmFsIH0gZnJvbSAnQGpzLXRlbXBvcmFsL3BvbHlmaWxsJztcbmltcG9ydCB7IFRlbXBvcmFsUGxhaW5EYXRlSW50ZXJ2YWwgfSBmcm9tICcuL3RlbXBvcmFsLXBsYWluLWRhdGUtaW50ZXJ2YWwnO1xuXG5leHBvcnQgY2xhc3MgVGVtcG9yYWxVdGlsIHtcbiAgc3RhdGljIGdldEpTRGF0ZUZyb21QbGFpbkRhdGVUaW1lKFxuICAgIGRhdGU6IFRlbXBvcmFsLlBsYWluRGF0ZSB8IFRlbXBvcmFsLlBsYWluRGF0ZVRpbWVcbiAgKTogRGF0ZSB7XG4gICAgaWYgKGRhdGUgaW5zdGFuY2VvZiBUZW1wb3JhbC5QbGFpbkRhdGVUaW1lKSB7XG4gICAgICByZXR1cm4gbmV3IERhdGUoXG4gICAgICAgIGRhdGUueWVhcixcbiAgICAgICAgZGF0ZS5tb250aCAtIDEsXG4gICAgICAgIGRhdGUuZGF5LFxuICAgICAgICBkYXRlLmhvdXIsXG4gICAgICAgIGRhdGUubWludXRlLFxuICAgICAgICBkYXRlLnNlY29uZCxcbiAgICAgICAgZGF0ZS5taWxsaXNlY29uZFxuICAgICAgKTtcbiAgICB9XG4gICAgcmV0dXJuIG5ldyBEYXRlKGRhdGUueWVhciwgZGF0ZS5tb250aCAtIDEsIGRhdGUuZGF5KTtcbiAgfVxuXG4gIHN0YXRpYyBnZXRQbGFpbkRhdGVUaW1lRnJvbUpTRGF0ZShkYXRlOiBEYXRlKTogVGVtcG9yYWwuUGxhaW5EYXRlVGltZSB7XG4gICAgY29uc3QgaW5zdGFudCA9IFRlbXBvcmFsLkluc3RhbnQuZnJvbUVwb2NoTWlsbGlzZWNvbmRzKGRhdGUuZ2V0VGltZSgpKTtcbiAgICBjb25zdCBkYXRlVGltZUlzbyA9IGluc3RhbnQudG9ab25lZERhdGVUaW1lSVNPKFRlbXBvcmFsLk5vdy50aW1lWm9uZUlkKCkpO1xuICAgIHJldHVybiBUZW1wb3JhbC5QbGFpbkRhdGVUaW1lLmZyb20oZGF0ZVRpbWVJc28pO1xuICB9XG5cbiAgc3RhdGljIGdldFBsYWluRGF0ZVRpbWVGcm9tUGxhaW5EYXRlQW5kUGxhaW5UaW1lKFxuICAgIGRhdGU6IFRlbXBvcmFsLlBsYWluRGF0ZSxcbiAgICB0aW1lOiBUZW1wb3JhbC5QbGFpblRpbWVcbiAgKTogVGVtcG9yYWwuUGxhaW5EYXRlVGltZSB7XG4gICAgcmV0dXJuIFRlbXBvcmFsLlBsYWluRGF0ZVRpbWUuZnJvbSh7XG4gICAgICB5ZWFyOiBkYXRlLnllYXIsXG4gICAgICBtb250aDogZGF0ZS5tb250aCxcbiAgICAgIGRheTogZGF0ZS5kYXksXG4gICAgICBob3VyOiB0aW1lLmhvdXIsXG4gICAgICBtaW51dGU6IHRpbWUubWludXRlLFxuICAgICAgc2Vjb25kOiB0aW1lLnNlY29uZCxcbiAgICAgIG1pbGxpc2Vjb25kOiB0aW1lLm1pbGxpc2Vjb25kLFxuICAgIH0pO1xuICB9XG5cbiAgc3RhdGljIGlzRmlyc3REYXlPZldlZWsoXG4gICAgZGF0ZTogVGVtcG9yYWwuUGxhaW5EYXRlIHwgVGVtcG9yYWwuUGxhaW5EYXRlVGltZVxuICApOiBib29sZWFuIHtcbiAgICByZXR1cm4gZGF0ZS5kYXlPZldlZWsgPT09IDE7XG4gIH1cblxuICBzdGF0aWMgZ2V0UGxhaW5EYXRlRnJvbUpTRGF0ZShkYXRlOiBEYXRlKTogVGVtcG9yYWwuUGxhaW5EYXRlIHtcbiAgICByZXR1cm4gdGhpcy5jcmVhdGVUZW1wb3JhbExvY2FsaXplZERhdGVGcm9tVGltZXN0YW1wKGRhdGUuZ2V0VGltZSgpKTtcbiAgfVxuXG4gIHN0YXRpYyBnZXRQbGFpblRpbWVGcm9tSlNEYXRlKGRhdGU6IERhdGUpOiBUZW1wb3JhbC5QbGFpblRpbWUge1xuICAgIGNvbnN0IGluc3RhbnQgPSBUZW1wb3JhbC5JbnN0YW50LmZyb21FcG9jaE1pbGxpc2Vjb25kcyhkYXRlLmdldFRpbWUoKSk7XG4gICAgY29uc3QgZGF0ZVRpbWVJc28gPSBpbnN0YW50LnRvWm9uZWREYXRlVGltZUlTTyhUZW1wb3JhbC5Ob3cudGltZVpvbmVJZCgpKTtcbiAgICByZXR1cm4gVGVtcG9yYWwuUGxhaW5UaW1lLmZyb20oZGF0ZVRpbWVJc28pO1xuICB9XG5cbiAgc3RhdGljIGdldFBsYWluRGF0ZVRpbWVGcm9tU3RyaW5nKFxuICAgIGRhdGVTdHJpbmc6IHN0cmluZ1xuICApOiBUZW1wb3JhbC5QbGFpbkRhdGVUaW1lIHtcbiAgICBsZXQganNEYXRlOiBEYXRlID0gbnVsbDtcbiAgICB0cnkge1xuICAgICAganNEYXRlID0gbmV3IERhdGUoZGF0ZVN0cmluZyk7XG4gICAgICBpZiAodHlwZW9mIGpzRGF0ZSAhPT0gJ29iamVjdCcgfHwganNEYXRlLmNvbnN0cnVjdG9yLm5hbWUgIT09ICdEYXRlJykge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ0ludmFsaWQgZGF0ZSBzdHJpbmcnKTtcbiAgICAgIH1cbiAgICB9IGNhdGNoIChlKSB7XG4gICAgICBjb25zb2xlLndhcm4oJ0ludmFsaWQgZGF0ZSBzdHJpbmcnLCBkYXRlU3RyaW5nKTtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cblxuICAgIHJldHVybiB0aGlzLmdldFBsYWluRGF0ZVRpbWVGcm9tSlNEYXRlKGpzRGF0ZSk7XG4gIH1cblxuICBzdGF0aWMgZ2V0SHRtbFRpbWVTdHJpbmdGcm9tUGxhaW5UaW1lKFxuICAgIHRpbWU6IFRlbXBvcmFsLlBsYWluVGltZSB8IFRlbXBvcmFsLlBsYWluRGF0ZVRpbWVcbiAgKTogc3RyaW5nIHtcbiAgICBpZiAoIXRpbWUpIHtcbiAgICAgIHJldHVybiAnMDA6MDA6MDAnO1xuICAgIH1cbiAgICByZXR1cm4gKFxuICAgICAgdGltZS5ob3VyLnRvU3RyaW5nKCkucGFkU3RhcnQoMiwgJzAnKSArXG4gICAgICAnOicgK1xuICAgICAgdGltZS5taW51dGUudG9TdHJpbmcoKS5wYWRTdGFydCgyLCAnMCcpICtcbiAgICAgICc6JyArXG4gICAgICB0aW1lLnNlY29uZC50b1N0cmluZygpLnBhZFN0YXJ0KDIsICcwJylcbiAgICApO1xuICB9XG5cbiAgc3RhdGljIGdldFF1YXJ0ZXJGb3JEYXRlKFxuICAgIGRhdGU6IFRlbXBvcmFsLlBsYWluRGF0ZSA9IFRlbXBvcmFsVXRpbC5nZXREYXRlVG9kYXlMb2NhbGl6ZWQoKVxuICApOiBudW1iZXIge1xuICAgIHJldHVybiBNYXRoLmZsb29yKChkYXRlLm1vbnRoIC0gMSkgLyAzKSArIDE7XG4gIH1cblxuICBzdGF0aWMgZ2V0Q3VycmVudERheShcbiAgICByZWZlcmVuY2VEYXRlOiBUZW1wb3JhbC5QbGFpbkRhdGUgPSBUZW1wb3JhbFV0aWwuZ2V0RGF0ZVRvZGF5TG9jYWxpemVkKClcbiAgKTogVGVtcG9yYWxQbGFpbkRhdGVJbnRlcnZhbCB7XG4gICAgY29uc3QgdG9kYXkgPSByZWZlcmVuY2VEYXRlO1xuICAgIGNvbnN0IHRvbW9ycm93ID0gdG9kYXkuYWRkKHsgZGF5czogMSB9KTtcbiAgICByZXR1cm4gbmV3IFRlbXBvcmFsUGxhaW5EYXRlSW50ZXJ2YWwodG9kYXksIHRvbW9ycm93KTtcbiAgfVxuXG4gIHN0YXRpYyBnZXRZZXN0ZXJkYXkoXG4gICAgcmVmZXJlbmNlRGF0ZTogVGVtcG9yYWwuUGxhaW5EYXRlID0gVGVtcG9yYWxVdGlsLmdldERhdGVUb2RheUxvY2FsaXplZCgpXG4gICk6IFRlbXBvcmFsUGxhaW5EYXRlSW50ZXJ2YWwge1xuICAgIGNvbnN0IHllc3RlcmRheSA9IHJlZmVyZW5jZURhdGUuc3VidHJhY3QoeyBkYXlzOiAxIH0pO1xuICAgIHJldHVybiBuZXcgVGVtcG9yYWxQbGFpbkRhdGVJbnRlcnZhbCh5ZXN0ZXJkYXksIHJlZmVyZW5jZURhdGUpO1xuICB9XG5cbiAgc3RhdGljIGdldExhc3RTZXZlbkRheXMoXG4gICAgcmVmZXJlbmNlRGF0ZTogVGVtcG9yYWwuUGxhaW5EYXRlID0gVGVtcG9yYWxVdGlsLmdldERhdGVUb2RheUxvY2FsaXplZCgpXG4gICk6IFRlbXBvcmFsUGxhaW5EYXRlSW50ZXJ2YWwge1xuICAgIHJldHVybiBuZXcgVGVtcG9yYWxQbGFpbkRhdGVJbnRlcnZhbChcbiAgICAgIHJlZmVyZW5jZURhdGUuc3VidHJhY3QoeyBkYXlzOiA3IH0pLFxuICAgICAgcmVmZXJlbmNlRGF0ZVxuICAgICk7XG4gIH1cblxuICBzdGF0aWMgZ2V0TGFzdFRoaXJ0eURheXMoXG4gICAgcmVmZXJlbmNlRGF0ZTogVGVtcG9yYWwuUGxhaW5EYXRlID0gVGVtcG9yYWxVdGlsLmdldERhdGVUb2RheUxvY2FsaXplZCgpXG4gICk6IFRlbXBvcmFsUGxhaW5EYXRlSW50ZXJ2YWwge1xuICAgIHJldHVybiBuZXcgVGVtcG9yYWxQbGFpbkRhdGVJbnRlcnZhbChcbiAgICAgIHJlZmVyZW5jZURhdGUuc3VidHJhY3QoeyBkYXlzOiAzMCB9KSxcbiAgICAgIHJlZmVyZW5jZURhdGVcbiAgICApO1xuICB9XG5cbiAgc3RhdGljIGdldEN1cnJlbnRXZWVrKFxuICAgIHJlZmVyZW5jZURhdGU6IFRlbXBvcmFsLlBsYWluRGF0ZSA9IFRlbXBvcmFsVXRpbC5nZXREYXRlVG9kYXlMb2NhbGl6ZWQoKVxuICApOiBUZW1wb3JhbFBsYWluRGF0ZUludGVydmFsIHtcbiAgICBjb25zdCBzdGFydE9mV2VlayA9IHJlZmVyZW5jZURhdGUuc3VidHJhY3Qoe1xuICAgICAgZGF5czogcmVmZXJlbmNlRGF0ZS5kYXlPZldlZWsgLSAxLFxuICAgIH0pO1xuICAgIGNvbnN0IGVuZE9mV2VlayA9IHN0YXJ0T2ZXZWVrLmFkZCh7IGRheXM6IDcgfSk7XG4gICAgcmV0dXJuIG5ldyBUZW1wb3JhbFBsYWluRGF0ZUludGVydmFsKHN0YXJ0T2ZXZWVrLCBlbmRPZldlZWspO1xuICB9XG5cbiAgc3RhdGljIGdldEN1cnJlbnRNb250aChcbiAgICByZWZlcmVuY2VEYXRlOiBUZW1wb3JhbC5QbGFpbkRhdGUgPSBUZW1wb3JhbFV0aWwuZ2V0RGF0ZVRvZGF5TG9jYWxpemVkKClcbiAgKTogVGVtcG9yYWxQbGFpbkRhdGVJbnRlcnZhbCB7XG4gICAgY29uc3Qgc3RhcnRPZk1vbnRoID0gcmVmZXJlbmNlRGF0ZS5zdWJ0cmFjdCh7XG4gICAgICBkYXlzOiByZWZlcmVuY2VEYXRlLmRheSAtIDEsXG4gICAgfSk7XG4gICAgY29uc3QgZW5kT2ZNb250aCA9IHN0YXJ0T2ZNb250aC5hZGQoeyBtb250aHM6IDEgfSk7XG4gICAgcmV0dXJuIG5ldyBUZW1wb3JhbFBsYWluRGF0ZUludGVydmFsKHN0YXJ0T2ZNb250aCwgZW5kT2ZNb250aCk7XG4gIH1cblxuICBzdGF0aWMgZ2V0Q3VycmVudFF1YXJ0ZXIoXG4gICAgcmVmZXJlbmNlRGF0ZTogVGVtcG9yYWwuUGxhaW5EYXRlID0gVGVtcG9yYWxVdGlsLmdldERhdGVUb2RheUxvY2FsaXplZCgpXG4gICk6IFRlbXBvcmFsUGxhaW5EYXRlSW50ZXJ2YWwge1xuICAgIGNvbnN0IHF1YXJ0ZXIgPSBNYXRoLmZsb29yKChyZWZlcmVuY2VEYXRlLm1vbnRoIC0gMSkgLyAzKTtcbiAgICBjb25zdCBzdGFydE9mUXVhcnRlciA9IHJlZmVyZW5jZURhdGUuc3VidHJhY3Qoe1xuICAgICAgbW9udGhzOiByZWZlcmVuY2VEYXRlLm1vbnRoIC0gMSAtIHF1YXJ0ZXIgKiAzLFxuICAgICAgZGF5czogcmVmZXJlbmNlRGF0ZS5kYXkgLSAxLFxuICAgIH0pO1xuICAgIGNvbnN0IGVuZE9mUXVhcnRlciA9IHN0YXJ0T2ZRdWFydGVyLmFkZCh7IG1vbnRoczogMyB9KTtcbiAgICByZXR1cm4gbmV3IFRlbXBvcmFsUGxhaW5EYXRlSW50ZXJ2YWwoc3RhcnRPZlF1YXJ0ZXIsIGVuZE9mUXVhcnRlcik7XG4gIH1cblxuICBzdGF0aWMgZ2V0UHJldmlvdXNRdWFydGVyKFxuICAgIHJlZmVyZW5jZURhdGU6IFRlbXBvcmFsLlBsYWluRGF0ZSA9IFRlbXBvcmFsVXRpbC5nZXREYXRlVG9kYXlMb2NhbGl6ZWQoKVxuICApOiBUZW1wb3JhbFBsYWluRGF0ZUludGVydmFsIHtcbiAgICByZXR1cm4gVGVtcG9yYWxVdGlsLmdldEN1cnJlbnRRdWFydGVyKHJlZmVyZW5jZURhdGUpLnNoaWZ0TW9udGhzKC0zKTtcbiAgfVxuXG4gIHN0YXRpYyBnZXRDdXJyZW50WWVhcihcbiAgICByZWZlcmVuY2VEYXRlOiBUZW1wb3JhbC5QbGFpbkRhdGUgPSBUZW1wb3JhbFV0aWwuZ2V0RGF0ZVRvZGF5TG9jYWxpemVkKClcbiAgKTogVGVtcG9yYWxQbGFpbkRhdGVJbnRlcnZhbCB7XG4gICAgY29uc3Qgc3RhcnRPZlllYXIgPSByZWZlcmVuY2VEYXRlLnN1YnRyYWN0KHtcbiAgICAgIGRheXM6IHJlZmVyZW5jZURhdGUuZGF5T2ZZZWFyIC0gMSxcbiAgICB9KTtcbiAgICBjb25zdCBlbmRPZlllYXIgPSBzdGFydE9mWWVhci5hZGQoeyB5ZWFyczogMSB9KTtcbiAgICByZXR1cm4gbmV3IFRlbXBvcmFsUGxhaW5EYXRlSW50ZXJ2YWwoc3RhcnRPZlllYXIsIGVuZE9mWWVhcik7XG4gIH1cblxuICBzdGF0aWMgZ2V0UHJldmlvdXNZZWFyKFxuICAgIHJlZmVyZW5jZURhdGU6IFRlbXBvcmFsLlBsYWluRGF0ZSA9IFRlbXBvcmFsVXRpbC5nZXREYXRlVG9kYXlMb2NhbGl6ZWQoKVxuICApOiBUZW1wb3JhbFBsYWluRGF0ZUludGVydmFsIHtcbiAgICByZXR1cm4gVGVtcG9yYWxVdGlsLmdldEN1cnJlbnRZZWFyKHJlZmVyZW5jZURhdGUpLnNoaWZ0WWVhcnMoLTEpO1xuICB9XG5cbiAgc3RhdGljIGdldE5leHRZZWFyKFxuICAgIHJlZmVyZW5jZURhdGU6IFRlbXBvcmFsLlBsYWluRGF0ZSA9IFRlbXBvcmFsVXRpbC5nZXREYXRlVG9kYXlMb2NhbGl6ZWQoKVxuICApOiBUZW1wb3JhbFBsYWluRGF0ZUludGVydmFsIHtcbiAgICByZXR1cm4gVGVtcG9yYWxVdGlsLmdldEN1cnJlbnRZZWFyKHJlZmVyZW5jZURhdGUpLnNoaWZ0WWVhcnMoMSk7XG4gIH1cblxuICBzdGF0aWMgZ2V0TGFzdDM2NURheXMoXG4gICAgcmVmZXJlbmNlRGF0ZTogVGVtcG9yYWwuUGxhaW5EYXRlID0gVGVtcG9yYWxVdGlsLmdldERhdGVUb2RheUxvY2FsaXplZCgpXG4gICk6IFRlbXBvcmFsUGxhaW5EYXRlSW50ZXJ2YWwge1xuICAgIHJldHVybiBuZXcgVGVtcG9yYWxQbGFpbkRhdGVJbnRlcnZhbChcbiAgICAgIHJlZmVyZW5jZURhdGUuc3VidHJhY3QoeyBkYXlzOiAzNjUgfSksXG4gICAgICByZWZlcmVuY2VEYXRlXG4gICAgKTtcbiAgfVxuXG4gIHN0YXRpYyBnZXRMYXN0OTBEYXlzKFxuICAgIHJlZmVyZW5jZURhdGU6IFRlbXBvcmFsLlBsYWluRGF0ZSA9IFRlbXBvcmFsVXRpbC5nZXREYXRlVG9kYXlMb2NhbGl6ZWQoKVxuICApOiBUZW1wb3JhbFBsYWluRGF0ZUludGVydmFsIHtcbiAgICByZXR1cm4gbmV3IFRlbXBvcmFsUGxhaW5EYXRlSW50ZXJ2YWwoXG4gICAgICByZWZlcmVuY2VEYXRlLnN1YnRyYWN0KHsgZGF5czogOTAgfSksXG4gICAgICByZWZlcmVuY2VEYXRlXG4gICAgKTtcbiAgfVxuXG4gIHN0YXRpYyBnZXRQcmV2aW91c01vbnRoKFxuICAgIHJlZmVyZW5jZURhdGU6IFRlbXBvcmFsLlBsYWluRGF0ZSA9IFRlbXBvcmFsVXRpbC5nZXREYXRlVG9kYXlMb2NhbGl6ZWQoKVxuICApOiBUZW1wb3JhbFBsYWluRGF0ZUludGVydmFsIHtcbiAgICByZXR1cm4gVGVtcG9yYWxVdGlsLmdldEN1cnJlbnRNb250aChyZWZlcmVuY2VEYXRlKS5zaGlmdE1vbnRocygtMSk7XG4gIH1cblxuICBzdGF0aWMgZ2V0TmV4dE1vbnRoKFxuICAgIHJlZmVyZW5jZURhdGU6IFRlbXBvcmFsLlBsYWluRGF0ZSA9IFRlbXBvcmFsVXRpbC5nZXREYXRlVG9kYXlMb2NhbGl6ZWQoKVxuICApOiBUZW1wb3JhbFBsYWluRGF0ZUludGVydmFsIHtcbiAgICByZXR1cm4gVGVtcG9yYWxVdGlsLmdldEN1cnJlbnRNb250aChyZWZlcmVuY2VEYXRlKS5zaGlmdE1vbnRocygxKTtcbiAgfVxuXG4gIHN0YXRpYyBnZXRQcmV2aW91c1dlZWsoXG4gICAgcmVmZXJlbmNlRGF0ZTogVGVtcG9yYWwuUGxhaW5EYXRlID0gVGVtcG9yYWxVdGlsLmdldERhdGVUb2RheUxvY2FsaXplZCgpXG4gICk6IFRlbXBvcmFsUGxhaW5EYXRlSW50ZXJ2YWwge1xuICAgIHJldHVybiBUZW1wb3JhbFV0aWwuZ2V0Q3VycmVudFdlZWsocmVmZXJlbmNlRGF0ZSkuc2hpZnREYXlzKC03KTtcbiAgfVxuXG4gIHN0YXRpYyBnZXREYXRlVG9kYXlMb2NhbGl6ZWQoKTogVGVtcG9yYWwuUGxhaW5EYXRlIHtcbiAgICByZXR1cm4gdGhpcy5jcmVhdGVUZW1wb3JhbExvY2FsaXplZERhdGVGcm9tVGltZXN0YW1wKERhdGUubm93KCkpO1xuICB9XG5cbiAgc3RhdGljIGNyZWF0ZVRlbXBvcmFsTG9jYWxpemVkRGF0ZUZyb21UaW1lc3RhbXAoXG4gICAgdGltZXN0YW1wOiBudW1iZXJcbiAgKTogVGVtcG9yYWwuUGxhaW5EYXRlIHtcbiAgICBjb25zdCBpbnN0YW50ID0gVGVtcG9yYWwuSW5zdGFudC5mcm9tRXBvY2hNaWxsaXNlY29uZHModGltZXN0YW1wKTtcbiAgICBjb25zdCBkYXRlVGltZUlzbyA9IGluc3RhbnQudG9ab25lZERhdGVUaW1lSVNPKFRlbXBvcmFsLk5vdy50aW1lWm9uZUlkKCkpO1xuICAgIGNvbnN0IGRhdGUgPSBUZW1wb3JhbC5QbGFpbkRhdGUuZnJvbShkYXRlVGltZUlzbyk7XG4gICAgcmV0dXJuIGRhdGU7XG4gIH1cblxuICBzdGF0aWMgZ2V0SHRtbERhdGVTdHJpbmcoXG4gICAgZGF0ZTogVGVtcG9yYWwuUGxhaW5EYXRlIHwgVGVtcG9yYWwuUGxhaW5EYXRlVGltZVxuICApOiBzdHJpbmcge1xuICAgIGlmICghZGF0ZSkge1xuICAgICAgcmV0dXJuICcnO1xuICAgIH1cbiAgICByZXR1cm4gKFxuICAgICAgZGF0ZS55ZWFyICtcbiAgICAgICctJyArXG4gICAgICBkYXRlLm1vbnRoLnRvU3RyaW5nKCkucGFkU3RhcnQoMiwgJzAnKSArXG4gICAgICAnLScgK1xuICAgICAgZGF0ZS5kYXkudG9TdHJpbmcoKS5wYWRTdGFydCgyLCAnMCcpXG4gICAgKTtcbiAgfVxuXG4gIHN0YXRpYyBnZXRQbGFpbkRhdGVGcm9tSHRtbERhdGVTdHJpbmcoXG4gICAgZGF0ZVN0cmluZzogc3RyaW5nXG4gICk6IFRlbXBvcmFsLlBsYWluRGF0ZSB7XG4gICAgaWYgKCFkYXRlU3RyaW5nKSB7XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG4gICAgY29uc3QgZGF0ZUFyciA9IGRhdGVTdHJpbmcuc3BsaXQoJy0nKTtcbiAgICBpZiAoZGF0ZUFyci5sZW5ndGggIT09IDMpIHtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cbiAgICByZXR1cm4gVGVtcG9yYWwuUGxhaW5EYXRlLmZyb20oe1xuICAgICAgeWVhcjogcGFyc2VJbnQoZGF0ZUFyclswXSksXG4gICAgICBtb250aDogcGFyc2VJbnQoZGF0ZUFyclsxXSksXG4gICAgICBkYXk6IHBhcnNlSW50KGRhdGVBcnJbMl0pLFxuICAgIH0pO1xuICB9XG5cbiAgc3RhdGljIGdldFBsYWluVGltZUZyb21IdG1sVGltZVN0cmluZyhcbiAgICB0aW1lU3RyaW5nOiBzdHJpbmdcbiAgKTogVGVtcG9yYWwuUGxhaW5UaW1lIHtcbiAgICBpZiAoIXRpbWVTdHJpbmcpIHtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cbiAgICBjb25zdCB0aW1lQXJyID0gdGltZVN0cmluZy5zcGxpdCgnOicpO1xuICAgIGlmICh0aW1lQXJyLmxlbmd0aCAhPT0gMiAmJiB0aW1lQXJyLmxlbmd0aCAhPT0gMykge1xuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuXG4gICAgaWYoIHRpbWVBcnIubGVuZ3RoID09PSAyICkge1xuICAgICAgcmV0dXJuIFRlbXBvcmFsLlBsYWluVGltZS5mcm9tKHtcbiAgICAgICAgaG91cjogcGFyc2VJbnQodGltZUFyclswXSksXG4gICAgICAgIG1pbnV0ZTogcGFyc2VJbnQodGltZUFyclsxXSksXG4gICAgICB9KTtcbiAgICB9XG5cbiAgICByZXR1cm4gVGVtcG9yYWwuUGxhaW5UaW1lLmZyb20oe1xuICAgICAgaG91cjogcGFyc2VJbnQodGltZUFyclswXSksXG4gICAgICBtaW51dGU6IHBhcnNlSW50KHRpbWVBcnJbMV0pLFxuICAgICAgc2Vjb25kOiBwYXJzZUludCh0aW1lQXJyWzJdKSxcbiAgICB9KTtcbiAgfVxufVxuIl19
@@ -41,6 +41,7 @@ export class ElderIntervalInputComponent extends ElderFormFieldControlBase {
41
41
  **************************************************************************/
42
42
  this.logger = LoggerFactory.getLogger(this.constructor.name);
43
43
  this._mode = 'date-time-range';
44
+ this._isDefaultDatePickerDisabled = false;
44
45
  this.zone = ZoneId.systemDefault();
45
46
  this.controlType = this._mode;
46
47
  this.interval$ = this.value$.pipe(map(value => coerceInterval(value)));
@@ -69,6 +70,12 @@ export class ElderIntervalInputComponent extends ElderFormFieldControlBase {
69
70
  get mode() {
70
71
  return this._mode;
71
72
  }
73
+ set isDefaultDatePickerDisabled(hide) {
74
+ this._isDefaultDatePickerDisabled = coerceBooleanProperty(hide);
75
+ }
76
+ get isDefaultDatePickerDisabled() {
77
+ return this._isDefaultDatePickerDisabled;
78
+ }
72
79
  get isoValueChange() {
73
80
  return this.valueChange.pipe(map(value => coerceIntervalIsoStr(value)));
74
81
  }
@@ -179,9 +186,9 @@ export class ElderIntervalInputComponent extends ElderFormFieldControlBase {
179
186
  }
180
187
  }
181
188
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.2", ngImport: i0, type: ElderIntervalInputComponent, deps: [{ token: i0.ElementRef }, { token: i0.NgZone }, { token: i1.FocusMonitor }, { token: i2.TranslateService }, { token: i3.NgControl, optional: true, self: true }, { token: i4.DateAdapter }, { token: MAT_DATE_LOCALE }], target: i0.ɵɵFactoryTarget.Component }); }
182
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.2", type: ElderIntervalInputComponent, isStandalone: true, selector: "elder-interval-input", inputs: { zone: "zone", valueAsIsoStr: "valueAsIsoStr", mode: "mode", isoValue: "isoValue" }, outputs: { isoValueChange: "isoValueChange" }, providers: [
189
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.2", type: ElderIntervalInputComponent, isStandalone: true, selector: "elder-interval-input", inputs: { zone: "zone", valueAsIsoStr: "valueAsIsoStr", mode: "mode", isDefaultDatePickerDisabled: "isDefaultDatePickerDisabled", isoValue: "isoValue" }, outputs: { isoValueChange: "isoValueChange" }, providers: [
183
190
  { provide: MatFormFieldControl, useExisting: ElderIntervalInputComponent },
184
- ], usesInheritance: true, ngImport: i0, template: "@switch (mode) {\n\n @case ('date-time-range') {\n <div class=\"layout-row\">\n <elder-date-time-input class=\"flex\" center\n [value]=\"(interval$ | async)?.start\"\n (valueUpdated)=\"onStartChanged($event)\"\n [required]=\"required\"\n [readonly]=\"readonly\"\n [disabled]=\"disabled\"\n [placeholder]=\"(placeholder || '') + ' ' + ('interval.from' | translate)\"\n ></elder-date-time-input>\n <span class=\"mat-date-range-input-separator flex-none\">\u2013</span>\n <elder-date-time-input class=\"flex\" center\n [value]=\"(interval$ | async)?.end\"\n (valueUpdated)=\"onEndChanged($event)\"\n [required]=\"required\"\n [readonly]=\"readonly\"\n [disabled]=\"disabled\"\n [placeholder]=\"(placeholder || '') + ' ' + ('interval.to' | translate)\"\n ></elder-date-time-input>\n </div>\n }\n @case ('day-time-range') {\n <div class=\"layout-row gap-xs elder-flex-interval-control\">\n\n <!-- [name]=\"name + '-day-start'\" -->\n <elder-date-time-input\n [value]=\"(interval$ | async)?.start\"\n (valueUpdated)=\"onDayTimeStartChanged($event)\"\n [required]=\"required\"\n [readonly]=\"readonly\"\n [disabled]=\"disabled\"\n [placeholder]=\"(placeholder || '') + ' ' + ('interval.from' | translate)\"\n ></elder-date-time-input>\n\n <!-- [name]=\"name + '-day-end'\" -->\n <elder-local-time-input\n [value]=\"endTime$ | async\"\n (valueUpdated)=\"onDayTimeEndTimeChanged($event)\"\n [required]=\"required\"\n [readonly]=\"readonly\"\n [disabled]=\"disabled\"\n [placeholder]=\"(placeholder || '') + ' ' + ('interval.to' | translate)\"\n ></elder-local-time-input>\n </div>\n }\n\n @case ('date-range') {\n <div class=\"layout-row gap-xs elder-flex-interval-control\">\n\n <mat-date-range-input\n class=\"mdc-text-field__input\"\n [rangePicker]=\"picker\"\n [disabled]=\"!!disabled\"\n >\n <input matStartDate\n [placeholder]=\"dateformat\"\n [ngModel]=\"startDate$ | async\" name=\"date-range.start\"\n [ngModelOptions]=\"{ standalone: true, updateOn: 'blur'}\"\n (ngModelChange)=\"onStartDateChanged($event)\"\n [readonly]=\"readonly\"\n [disabled]=\"!!disabled\"\n >\n <input matEndDate\n [placeholder]=\"dateformat\"\n [ngModel]=\"endDate$ | async\" name=\"date-range.end\"\n [ngModelOptions]=\"{ standalone: true, updateOn: 'blur'}\"\n (ngModelChange)=\"onEndDateChanged($event)\"\n [readonly]=\"readonly\"\n [disabled]=\"!!disabled\"\n >\n </mat-date-range-input>\n <mat-datepicker-toggle class=\"elder-control-icon-button\"\n [disabled]=\"isLocked\"\n [for]=\"picker\">\n <mat-icon matDatepickerToggleIcon>calendar_month</mat-icon>\n </mat-datepicker-toggle>\n <mat-date-range-picker #picker></mat-date-range-picker>\n </div>\n }\n\n @case ('single-day') {\n <div class=\"layout-row elder-flex-control\">\n\n <!-- [name]=\"name\" -->\n <elder-local-date-input class=\"flex\" center\n [value]=\"startLocalDate$ | async\"\n (valueUpdated)=\"onSingleDayDateChanged($event)\"\n [required]=\"required\"\n [readonly]=\"readonly\"\n [disabled]=\"disabled\"\n [placeholder]=\"(placeholder || '')\"\n ></elder-local-date-input>\n </div>\n }\n}\n\n\n\n\n\n\n", styles: [".elder-flex-interval-control{flex:1 1 auto;overflow:hidden}\n"], dependencies: [{ kind: "pipe", type: AsyncPipe, name: "async" }, { kind: "ngmodule", type: TranslateModule }, { kind: "pipe", type: i2.TranslatePipe, name: "translate" }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i3.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i3.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i3.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: ElderDateTimeInputComponent, selector: "elder-date-time-input", inputs: ["center", "isoValue"], outputs: ["isoValueChange"] }, { kind: "component", type: ElderLocalTimeInputComponent, selector: "elder-local-time-input", inputs: ["isoValue"], outputs: ["isoValueChange"] }, { kind: "component", type: MatDateRangeInput, selector: "mat-date-range-input", inputs: ["rangePicker", "required", "dateFilter", "min", "max", "disabled", "separator", "comparisonStart", "comparisonEnd"], exportAs: ["matDateRangeInput"] }, { kind: "directive", type: MatStartDate, selector: "input[matStartDate]", outputs: ["dateChange", "dateInput"] }, { kind: "directive", type: MatEndDate, selector: "input[matEndDate]", outputs: ["dateChange", "dateInput"] }, { kind: "component", type: MatDatepickerToggle, selector: "mat-datepicker-toggle", inputs: ["for", "tabIndex", "aria-label", "disabled", "disableRipple"], exportAs: ["matDatepickerToggle"] }, { kind: "component", type: MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "directive", type: MatDatepickerToggleIcon, selector: "[matDatepickerToggleIcon]" }, { kind: "component", type: MatDateRangePicker, selector: "mat-date-range-picker", exportAs: ["matDateRangePicker"] }, { kind: "component", type: ElderLocalDateInputComponent, selector: "elder-local-date-input", inputs: ["zone", "autoDatePicker", "arrows", "today", "center", "datePickerTouchUi", "allowNull", "datePickerEnabled", "isoValue", "dateValue", "isoDateValue"], outputs: ["blurred", "valueUpdatedBlur", "isoValueChange", "dateValueChange", "isoDateValueChange"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
191
+ ], usesInheritance: true, ngImport: i0, template: "@switch (mode) {\n\n @case ('date-time-range') {\n <div class=\"layout-row\">\n <elder-date-time-input class=\"flex\" center\n [value]=\"(interval$ | async)?.start\"\n (valueUpdated)=\"onStartChanged($event)\"\n [required]=\"required\"\n [readonly]=\"readonly\"\n [disabled]=\"disabled\"\n [placeholder]=\"(placeholder || '') + ' ' + ('interval.from' | translate)\"\n ></elder-date-time-input>\n <span class=\"mat-date-range-input-separator flex-none\">\u2013</span>\n <elder-date-time-input class=\"flex\" center\n [value]=\"(interval$ | async)?.end\"\n (valueUpdated)=\"onEndChanged($event)\"\n [required]=\"required\"\n [readonly]=\"readonly\"\n [disabled]=\"disabled\"\n [placeholder]=\"(placeholder || '') + ' ' + ('interval.to' | translate)\"\n ></elder-date-time-input>\n </div>\n }\n @case ('day-time-range') {\n <div class=\"layout-row gap-xs elder-flex-interval-control\">\n\n <!-- [name]=\"name + '-day-start'\" -->\n <elder-date-time-input\n [value]=\"(interval$ | async)?.start\"\n (valueUpdated)=\"onDayTimeStartChanged($event)\"\n [required]=\"required\"\n [readonly]=\"readonly\"\n [disabled]=\"disabled\"\n [placeholder]=\"(placeholder || '') + ' ' + ('interval.from' | translate)\"\n ></elder-date-time-input>\n\n <!-- [name]=\"name + '-day-end'\" -->\n <elder-local-time-input\n [value]=\"endTime$ | async\"\n (valueUpdated)=\"onDayTimeEndTimeChanged($event)\"\n [required]=\"required\"\n [readonly]=\"readonly\"\n [disabled]=\"disabled\"\n [placeholder]=\"(placeholder || '') + ' ' + ('interval.to' | translate)\"\n ></elder-local-time-input>\n </div>\n }\n\n @case ('date-range') {\n <div class=\"layout-row gap-xs elder-flex-interval-control\">\n <mat-date-range-input\n class=\"mdc-text-field__input\"\n [rangePicker]=\"picker\"\n [disabled]=\"!!disabled\"\n >\n <input matStartDate\n [placeholder]=\"dateformat\"\n [ngModel]=\"startDate$ | async\" name=\"date-range.start\"\n [ngModelOptions]=\"{ standalone: true, updateOn: 'blur'}\"\n (ngModelChange)=\"onStartDateChanged($event)\"\n [readonly]=\"readonly\"\n [disabled]=\"!!disabled\"\n >\n <input matEndDate\n [placeholder]=\"dateformat\"\n [ngModel]=\"endDate$ | async\" name=\"date-range.end\"\n [ngModelOptions]=\"{ standalone: true, updateOn: 'blur'}\"\n (ngModelChange)=\"onEndDateChanged($event)\"\n [readonly]=\"readonly\"\n [disabled]=\"!!disabled\"\n >\n </mat-date-range-input>\n\n @if(!isDefaultDatePickerDisabled){\n <mat-datepicker-toggle class=\"elder-control-icon-button\"\n [disabled]=\"isLocked\"\n [for]=\"picker\">\n <mat-icon matDatepickerToggleIcon>calendar_month</mat-icon>\n </mat-datepicker-toggle>\n }\n <mat-date-range-picker #picker></mat-date-range-picker>\n </div>\n }\n\n @case ('single-day') {\n <div class=\"layout-row elder-flex-control\">\n\n <!-- [name]=\"name\" -->\n <elder-local-date-input class=\"flex\" center\n [value]=\"startLocalDate$ | async\"\n (valueUpdated)=\"onSingleDayDateChanged($event)\"\n [required]=\"required\"\n [readonly]=\"readonly\"\n [disabled]=\"disabled\"\n [placeholder]=\"(placeholder || '')\"\n ></elder-local-date-input>\n </div>\n }\n}\n\n\n\n\n\n\n", styles: [".elder-flex-interval-control{flex:1 1 auto;overflow:hidden}\n"], dependencies: [{ kind: "pipe", type: AsyncPipe, name: "async" }, { kind: "ngmodule", type: TranslateModule }, { kind: "pipe", type: i2.TranslatePipe, name: "translate" }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i3.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i3.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i3.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: ElderDateTimeInputComponent, selector: "elder-date-time-input", inputs: ["center", "isoValue"], outputs: ["isoValueChange"] }, { kind: "component", type: ElderLocalTimeInputComponent, selector: "elder-local-time-input", inputs: ["isoValue"], outputs: ["isoValueChange"] }, { kind: "component", type: MatDateRangeInput, selector: "mat-date-range-input", inputs: ["rangePicker", "required", "dateFilter", "min", "max", "disabled", "separator", "comparisonStart", "comparisonEnd"], exportAs: ["matDateRangeInput"] }, { kind: "directive", type: MatStartDate, selector: "input[matStartDate]", outputs: ["dateChange", "dateInput"] }, { kind: "directive", type: MatEndDate, selector: "input[matEndDate]", outputs: ["dateChange", "dateInput"] }, { kind: "component", type: MatDatepickerToggle, selector: "mat-datepicker-toggle", inputs: ["for", "tabIndex", "aria-label", "disabled", "disableRipple"], exportAs: ["matDatepickerToggle"] }, { kind: "component", type: MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "directive", type: MatDatepickerToggleIcon, selector: "[matDatepickerToggleIcon]" }, { kind: "component", type: MatDateRangePicker, selector: "mat-date-range-picker", exportAs: ["matDateRangePicker"] }, { kind: "component", type: ElderLocalDateInputComponent, selector: "elder-local-date-input", inputs: ["zone", "autoDatePicker", "arrows", "today", "center", "datePickerTouchUi", "allowNull", "datePickerEnabled", "isoValue", "dateValue", "isoDateValue"], outputs: ["blurred", "valueUpdatedBlur", "isoValueChange", "dateValueChange", "isoDateValueChange"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
185
192
  }
186
193
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.2", ngImport: i0, type: ElderIntervalInputComponent, decorators: [{
187
194
  type: Component,
@@ -191,7 +198,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.2", ngImpor
191
198
  ElderDateTimeInputComponent, ElderLocalTimeInputComponent,
192
199
  MatDateRangeInput, MatStartDate,
193
200
  MatEndDate, MatDatepickerToggle, MatIcon, MatDatepickerToggleIcon, MatDateRangePicker,
194
- ElderLocalDateInputComponent], template: "@switch (mode) {\n\n @case ('date-time-range') {\n <div class=\"layout-row\">\n <elder-date-time-input class=\"flex\" center\n [value]=\"(interval$ | async)?.start\"\n (valueUpdated)=\"onStartChanged($event)\"\n [required]=\"required\"\n [readonly]=\"readonly\"\n [disabled]=\"disabled\"\n [placeholder]=\"(placeholder || '') + ' ' + ('interval.from' | translate)\"\n ></elder-date-time-input>\n <span class=\"mat-date-range-input-separator flex-none\">\u2013</span>\n <elder-date-time-input class=\"flex\" center\n [value]=\"(interval$ | async)?.end\"\n (valueUpdated)=\"onEndChanged($event)\"\n [required]=\"required\"\n [readonly]=\"readonly\"\n [disabled]=\"disabled\"\n [placeholder]=\"(placeholder || '') + ' ' + ('interval.to' | translate)\"\n ></elder-date-time-input>\n </div>\n }\n @case ('day-time-range') {\n <div class=\"layout-row gap-xs elder-flex-interval-control\">\n\n <!-- [name]=\"name + '-day-start'\" -->\n <elder-date-time-input\n [value]=\"(interval$ | async)?.start\"\n (valueUpdated)=\"onDayTimeStartChanged($event)\"\n [required]=\"required\"\n [readonly]=\"readonly\"\n [disabled]=\"disabled\"\n [placeholder]=\"(placeholder || '') + ' ' + ('interval.from' | translate)\"\n ></elder-date-time-input>\n\n <!-- [name]=\"name + '-day-end'\" -->\n <elder-local-time-input\n [value]=\"endTime$ | async\"\n (valueUpdated)=\"onDayTimeEndTimeChanged($event)\"\n [required]=\"required\"\n [readonly]=\"readonly\"\n [disabled]=\"disabled\"\n [placeholder]=\"(placeholder || '') + ' ' + ('interval.to' | translate)\"\n ></elder-local-time-input>\n </div>\n }\n\n @case ('date-range') {\n <div class=\"layout-row gap-xs elder-flex-interval-control\">\n\n <mat-date-range-input\n class=\"mdc-text-field__input\"\n [rangePicker]=\"picker\"\n [disabled]=\"!!disabled\"\n >\n <input matStartDate\n [placeholder]=\"dateformat\"\n [ngModel]=\"startDate$ | async\" name=\"date-range.start\"\n [ngModelOptions]=\"{ standalone: true, updateOn: 'blur'}\"\n (ngModelChange)=\"onStartDateChanged($event)\"\n [readonly]=\"readonly\"\n [disabled]=\"!!disabled\"\n >\n <input matEndDate\n [placeholder]=\"dateformat\"\n [ngModel]=\"endDate$ | async\" name=\"date-range.end\"\n [ngModelOptions]=\"{ standalone: true, updateOn: 'blur'}\"\n (ngModelChange)=\"onEndDateChanged($event)\"\n [readonly]=\"readonly\"\n [disabled]=\"!!disabled\"\n >\n </mat-date-range-input>\n <mat-datepicker-toggle class=\"elder-control-icon-button\"\n [disabled]=\"isLocked\"\n [for]=\"picker\">\n <mat-icon matDatepickerToggleIcon>calendar_month</mat-icon>\n </mat-datepicker-toggle>\n <mat-date-range-picker #picker></mat-date-range-picker>\n </div>\n }\n\n @case ('single-day') {\n <div class=\"layout-row elder-flex-control\">\n\n <!-- [name]=\"name\" -->\n <elder-local-date-input class=\"flex\" center\n [value]=\"startLocalDate$ | async\"\n (valueUpdated)=\"onSingleDayDateChanged($event)\"\n [required]=\"required\"\n [readonly]=\"readonly\"\n [disabled]=\"disabled\"\n [placeholder]=\"(placeholder || '')\"\n ></elder-local-date-input>\n </div>\n }\n}\n\n\n\n\n\n\n", styles: [".elder-flex-interval-control{flex:1 1 auto;overflow:hidden}\n"] }]
201
+ ElderLocalDateInputComponent], template: "@switch (mode) {\n\n @case ('date-time-range') {\n <div class=\"layout-row\">\n <elder-date-time-input class=\"flex\" center\n [value]=\"(interval$ | async)?.start\"\n (valueUpdated)=\"onStartChanged($event)\"\n [required]=\"required\"\n [readonly]=\"readonly\"\n [disabled]=\"disabled\"\n [placeholder]=\"(placeholder || '') + ' ' + ('interval.from' | translate)\"\n ></elder-date-time-input>\n <span class=\"mat-date-range-input-separator flex-none\">\u2013</span>\n <elder-date-time-input class=\"flex\" center\n [value]=\"(interval$ | async)?.end\"\n (valueUpdated)=\"onEndChanged($event)\"\n [required]=\"required\"\n [readonly]=\"readonly\"\n [disabled]=\"disabled\"\n [placeholder]=\"(placeholder || '') + ' ' + ('interval.to' | translate)\"\n ></elder-date-time-input>\n </div>\n }\n @case ('day-time-range') {\n <div class=\"layout-row gap-xs elder-flex-interval-control\">\n\n <!-- [name]=\"name + '-day-start'\" -->\n <elder-date-time-input\n [value]=\"(interval$ | async)?.start\"\n (valueUpdated)=\"onDayTimeStartChanged($event)\"\n [required]=\"required\"\n [readonly]=\"readonly\"\n [disabled]=\"disabled\"\n [placeholder]=\"(placeholder || '') + ' ' + ('interval.from' | translate)\"\n ></elder-date-time-input>\n\n <!-- [name]=\"name + '-day-end'\" -->\n <elder-local-time-input\n [value]=\"endTime$ | async\"\n (valueUpdated)=\"onDayTimeEndTimeChanged($event)\"\n [required]=\"required\"\n [readonly]=\"readonly\"\n [disabled]=\"disabled\"\n [placeholder]=\"(placeholder || '') + ' ' + ('interval.to' | translate)\"\n ></elder-local-time-input>\n </div>\n }\n\n @case ('date-range') {\n <div class=\"layout-row gap-xs elder-flex-interval-control\">\n <mat-date-range-input\n class=\"mdc-text-field__input\"\n [rangePicker]=\"picker\"\n [disabled]=\"!!disabled\"\n >\n <input matStartDate\n [placeholder]=\"dateformat\"\n [ngModel]=\"startDate$ | async\" name=\"date-range.start\"\n [ngModelOptions]=\"{ standalone: true, updateOn: 'blur'}\"\n (ngModelChange)=\"onStartDateChanged($event)\"\n [readonly]=\"readonly\"\n [disabled]=\"!!disabled\"\n >\n <input matEndDate\n [placeholder]=\"dateformat\"\n [ngModel]=\"endDate$ | async\" name=\"date-range.end\"\n [ngModelOptions]=\"{ standalone: true, updateOn: 'blur'}\"\n (ngModelChange)=\"onEndDateChanged($event)\"\n [readonly]=\"readonly\"\n [disabled]=\"!!disabled\"\n >\n </mat-date-range-input>\n\n @if(!isDefaultDatePickerDisabled){\n <mat-datepicker-toggle class=\"elder-control-icon-button\"\n [disabled]=\"isLocked\"\n [for]=\"picker\">\n <mat-icon matDatepickerToggleIcon>calendar_month</mat-icon>\n </mat-datepicker-toggle>\n }\n <mat-date-range-picker #picker></mat-date-range-picker>\n </div>\n }\n\n @case ('single-day') {\n <div class=\"layout-row elder-flex-control\">\n\n <!-- [name]=\"name\" -->\n <elder-local-date-input class=\"flex\" center\n [value]=\"startLocalDate$ | async\"\n (valueUpdated)=\"onSingleDayDateChanged($event)\"\n [required]=\"required\"\n [readonly]=\"readonly\"\n [disabled]=\"disabled\"\n [placeholder]=\"(placeholder || '')\"\n ></elder-local-date-input>\n </div>\n }\n}\n\n\n\n\n\n\n", styles: [".elder-flex-interval-control{flex:1 1 auto;overflow:hidden}\n"] }]
195
202
  }], ctorParameters: () => [{ type: i0.ElementRef }, { type: i0.NgZone }, { type: i1.FocusMonitor }, { type: i2.TranslateService }, { type: i3.NgControl, decorators: [{
196
203
  type: Optional
197
204
  }, {
@@ -205,9 +212,11 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.2", ngImpor
205
212
  type: Input
206
213
  }], mode: [{
207
214
  type: Input
215
+ }], isDefaultDatePickerDisabled: [{
216
+ type: Input
208
217
  }], isoValueChange: [{
209
218
  type: Output
210
219
  }], isoValue: [{
211
220
  type: Input
212
221
  }] } });
213
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZWxkZXItaW50ZXJ2YWwtaW5wdXQuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZWxkZXJieXRlL25neC1zdGFydGVyL3NyYy9saWIvY29tcG9uZW50cy90aW1lL2VsZGVyLWludGVydmFsLWlucHV0L2VsZGVyLWludGVydmFsLWlucHV0LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2VsZGVyYnl0ZS9uZ3gtc3RhcnRlci9zcmMvbGliL2NvbXBvbmVudHMvdGltZS9lbGRlci1pbnRlcnZhbC1pbnB1dC9lbGRlci1pbnRlcnZhbC1pbnB1dC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0wsdUJBQXVCLEVBQ3ZCLFNBQVMsRUFFVCxNQUFNLEVBQ04sS0FBSyxFQUVMLFFBQVEsRUFDUixNQUFNLEVBQ04sSUFBSSxFQUNMLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBQyxhQUFhLEVBQUMsTUFBTSxzQkFBc0IsQ0FBQztBQUNuRCxPQUFPLEVBQUMsUUFBUSxFQUFpQixNQUFNLCtCQUErQixDQUFDO0FBQ3ZFLE9BQU8sRUFBYSxFQUFFLEVBQUMsTUFBTSxNQUFNLENBQUM7QUFDcEMsT0FBTyxFQUFDLFVBQVUsRUFBRSxHQUFHLEVBQUMsTUFBTSxnQkFBZ0IsQ0FBQztBQUMvQyxPQUFPLEVBQVUsU0FBUyxFQUFFLFNBQVMsRUFBRSxNQUFNLEVBQUMsTUFBTSxlQUFlLENBQUM7QUFDcEUsT0FBTyxFQUFDLHlCQUF5QixFQUFDLE1BQU0sK0RBQStELENBQUM7QUFFeEcsT0FBTyxFQUFtQixlQUFlLEVBQUMsTUFBTSxxQkFBcUIsQ0FBQztBQUN0RSxPQUFPLEVBQVksV0FBVyxFQUFDLE1BQU0sZ0JBQWdCLENBQUM7QUFDdEQsT0FBTyxFQUFDLG1CQUFtQixFQUFDLE1BQU0sOEJBQThCLENB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QUFtQixFQUFFLFdBQVcsRUFBRSwyQkFBMkIsRUFBQztTQUN6RSxpREMzRUgsODlIQXVHQSxrSEQxQlksU0FBUyw2Q0FBRSxlQUFlLDJGQUFFLFdBQVcsK21CQUMvQywyQkFBMkIsK0hBQUUsNEJBQTRCLHNIQUN6RCxpQkFBaUIsZ09BQUUsWUFBWSxzR0FDL0IsVUFBVSxvR0FBRSxtQkFBbUIsNktBQUUsT0FBTywySUFBRSx1QkFBdUIsc0VBQUUsa0JBQWtCLG9HQUNyRiw0QkFBNEI7OzJGQUVuQiwyQkFBMkI7a0JBZnZDLFNBQVM7K0JBQ0Usc0JBQXNCLG1CQUdmLHVCQUF1QixDQUFDLE1BQU0sYUFDcEM7d0JBQ1QsRUFBQyxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsV0FBVyw2QkFBNkIsRUFBQztxQkFDekUsY0FDVyxJQUFJLFdBQ1AsQ0FBQyxTQUFTLEVBQUUsZUFBZSxFQUFFLFdBQVc7d0JBQy9DLDJCQUEyQixFQUFFLDRCQUE0Qjt3QkFDekQsaUJBQWlCLEVBQUUsWUFBWTt3QkFDL0IsVUFBVSxFQUFFLG1CQUFtQixFQUFFLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxrQkFBa0I7d0JBQ3JGLDRCQUE0QixDQUFDOzswQkF5QzVCLFFBQVE7OzBCQUFJLElBQUk7OzBCQUVoQixNQUFNOzJCQUFDLGVBQWU7eUNBNUJsQixJQUFJO3NCQURWLEtBQUs7Z0JBc0VLLGFBQWE7c0JBRHZCLEtBQUs7Z0JBVUssSUFBSTtzQkFEZCxLQUFLO2dCQVdLLGNBQWM7c0JBRHhCLE1BQU07Z0JBUUksUUFBUTtzQkFEbEIsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxuICBDb21wb25lbnQsXG4gIEVsZW1lbnRSZWYsXG4gIEluamVjdCxcbiAgSW5wdXQsXG4gIE5nWm9uZSxcbiAgT3B0aW9uYWwsXG4gIE91dHB1dCxcbiAgU2VsZlxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7TG9nZ2VyRmFjdG9yeX0gZnJvbSAnQGVsZGVyYnl0ZS90cy1sb2dnZXInO1xuaW1wb3J0IHtJbnRlcnZhbCwgSXNvSW50ZXJ2YWxTdHJ9IGZyb20gJy4uLy4uLy4uL2NvbW1vbi90aW1lL2ludGVydmFsJztcbmltcG9ydCB7T2JzZXJ2YWJsZSwgb2Z9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHtjYXRjaEVycm9yLCBtYXB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7SW5zdGFudCwgTG9jYWxEYXRlLCBMb2NhbFRpbWUsIFpvbmVJZH0gZnJvbSAnQGpzLWpvZGEvY29yZSc7XG5pbXBvcnQge0VsZGVyRm9ybUZpZWxkQ29udHJvbEJhc2V9IGZyb20gJy4uLy4uLy4uL2NvbW1vbi9mb3Jtcy9lbGRlci1mb3JtLWZpZWxkLWNvbnRyb2wtYmFzZS5kaXJlY3RpdmUnO1xuaW1wb3J0IHtGb2N1c01vbml0b3J9IGZyb20gJ0Bhbmd1bGFyL2Nkay9hMTF5JztcbmltcG9ydCB7VHJhbnNsYXRlU2VydmljZSwgVHJhbnNsYXRlTW9kdWxlfSBmcm9tICdAbmd4LXRyYW5zbGF0ZS9jb3JlJztcbmltcG9ydCB7TmdDb250cm9sLCBGb3Jtc01vZHVsZX0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHtNYXRGb3JtRmllbGRDb250cm9sfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9mb3JtLWZpZWxkJztcbmltcG9ydCB7VGltZVV0aWx9IGZyb20gJy4uLy4uLy4uL2NvbW1vbi90aW1lL3RpbWUtdXRpbCc7XG5pbXBvcnQge0RhdGVBZGFwdGVyLCBNQVRfREFURV9MT0NBTEV9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2NvcmUnO1xuaW1wb3J0IHtMb2NhbGVEYXRlRm9ybWF0c30gZnJvbSAnLi4vZGF0ZS1mb3JtYXRzL2xvY2FsZS1kYXRlLWZvcm1hdHMnO1xuaW1wb3J0IHtFbGRlckxvY2FsRGF0ZUlucHV0Q29tcG9uZW50fSBmcm9tICcuLi9lbGRlci1sb2NhbC1kYXRlLWlucHV0L2VsZGVyLWxvY2FsLWRhdGUtaW5wdXQuY29tcG9uZW50JztcbmltcG9ydCB7TWF0SWNvbn0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvaWNvbic7XG5pbXBvcnQge1xuICBNYXREYXRlUmFuZ2VJbnB1dCxcbiAgTWF0U3RhcnREYXRlLFxuICBNYXRFbmREYXRlLFxuICBNYXREYXRlcGlja2VyVG9nZ2xlLFxuICBNYXREYXRlcGlja2VyVG9nZ2xlSWNvbixcbiAgTWF0RGF0ZVJhbmdlUGlja2VyXG59IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2RhdGVwaWNrZXInO1xuaW1wb3J0IHtFbGRlckxvY2FsVGltZUlucHV0Q29tcG9uZW50fSBmcm9tICcuLi9lbGRlci1sb2NhbC10aW1lLWlucHV0L2VsZGVyLWxvY2FsLXRpbWUtaW5wdXQuY29tcG9uZW50JztcbmltcG9ydCB7RWxkZXJEYXRlVGltZUlucHV0Q29tcG9uZW50fSBmcm9tICcuLi9lbGRlci1kYXRlLXRpbWUtaW5wdXQvZWxkZXItZGF0ZS10aW1lLWlucHV0LmNvbXBvbmVudCc7XG5pbXBvcnQge0FzeW5jUGlwZX0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7Qm9vbGVhbklucHV0LCBjb2VyY2VCb29sZWFuUHJvcGVydHl9IGZyb20gJ0Bhbmd1bGFyL2Nkay9jb2VyY2lvbic7XG5pbXBvcnQge2NvZXJjZUludGVydmFsLCBjb2VyY2VJbnRlcnZhbElzb1N0cn0gZnJvbSAnLi4vLi4vLi4vY29tbW9uL3RpbWUvaW50ZXJ2YWwtY29lcmNlJztcblxuZXhwb3J0IHR5cGUgSW50ZXJ2YWxJbnB1dE1vZGUgPVxuXG4vKipcbiAqIFN1cHBvcnRzIHRoZSBzZWxlY3Rpb24gb2YgYSBzaW5nbGUgKGZ1bGwpIGRheTpcbiAqIDEyLjEyLjIwMjBcbiAqL1xuICAnc2luZ2xlLWRheScgfFxuXG4gIC8qKlxuICAgKiBTdXBwb3J0cyBhIHRpbWUgaW50ZXJ2YWwgaW4gYSBkYXk6XG4gICAqIDEyLjEyLjIwMjAgMTM6MDAgLSAxODowMFxuICAgKi9cbiAgJ2RheS10aW1lLXJhbmdlJyB8XG5cbiAgLyoqXG4gICAqIFN1cHBvcnRzIGEgZGF0ZSBpbnRlcnZhbCB3aXRob3V0IHRpbWVcbiAgICogMTIuMTIuMjAyMCAtIDIyLjA2LjIwMjFcbiAgICovXG4gICdkYXRlLXJhbmdlJyB8XG5cbiAgLyoqXG4gICAqIFN1cHBvcnRzIGEgZGF0ZS10aW1lIHRvIGRhdGUtdGltZSBpbnRlcnZhbFxuICAgKiAxMi4xMi4yMDIwIDg6MDAgLSAyMi4wNi4yMDIxIDE3OjAwXG4gICAqIFRoaXMgaXMgdGhlIGRlZmF1bHQgYXMgaXQgc3VwcG9ydHMgdGhlIG1vc3QgZGV0YWlsZWQgaW5wdXQuXG4gICAqL1xuICAnZGF0ZS10aW1lLXJhbmdlJ1xuICA7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2VsZGVyLWludGVydmFsLWlucHV0JyxcbiAgdGVtcGxhdGVVcmw6ICcuL2VsZGVyLWludGVydmFsLWlucHV0LmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vZWxkZXItaW50ZXJ2YWwtaW5wdXQuY29tcG9uZW50LnNjc3MnXSxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIHByb3ZpZGVyczogW1xuICAgIHtwcm92aWRlOiBNYXRGb3JtRmllbGRDb250cm9sLCB1c2VFeGlzdGluZzogRWxkZXJJbnRlcnZhbElucHV0Q29tcG9uZW50fSxcbiAgXSxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgaW1wb3J0czogW0FzeW5jUGlwZSwgVHJhbnNsYXRlTW9kdWxlLCBGb3Jtc01vZHVsZSxcbiAgICBFbGRlckRhdGVUaW1lSW5wdXRDb21wb25lbnQsIEVsZGVyTG9jYWxUaW1lSW5wdXRDb21wb25lbnQsXG4gICAgTWF0RGF0ZVJhbmdlSW5wdXQsIE1hdFN0YXJ0RGF0ZSxcbiAgICBNYXRFbmREYXRlLCBNYXREYXRlcGlja2VyVG9nZ2xlLCBNYXRJY29uLCBNYXREYXRlcGlja2VyVG9nZ2xlSWNvbiwgTWF0RGF0ZVJhbmdlUGlja2VyLFxuICAgIEVsZGVyTG9jYWxEYXRlSW5wdXRDb21wb25lbnRdXG59KVxuZXhwb3J0IGNsYXNzIEVsZGVySW50ZXJ2YWxJbnB1dENvbXBvbmVudCBleHRlbmRzIEVsZGVyRm9ybUZpZWxkQ29udHJvbEJhc2U8SW50ZXJ2YWwgfCBJc29JbnRlcnZhbFN0cj4ge1xuXG4gIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcbiAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKlxuICAgKiBGaWVsZHMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqXG4gICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpcbiAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xuXG4gIHByaXZhdGUgcmVhZG9ubHkgbG9nZ2VyID0gTG9nZ2VyRmFjdG9yeS5nZXRMb2dnZXIodGhpcy5jb25zdHJ1Y3Rvci5uYW1lKTtcblxuICBwcml2YXRlIF9tb2RlOiBJbnRlcnZhbElucHV0TW9kZSA9ICdkYXRlLXRpbWUtcmFuZ2UnO1xuXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyB6b25lID0gWm9uZUlkLnN5c3RlbURlZmF1bHQoKTtcblxuICBwdWJsaWMgcmVhZG9ubHkgZW5kVGltZSQ6IE9ic2VydmFibGU8TG9jYWxUaW1lPjtcblxuICBwdWJsaWMgcmVhZG9ubHkgc3RhcnRMb2NhbERhdGUkOiBPYnNlcnZhYmxlPExvY2FsRGF0ZT47XG4gIHB1YmxpYyByZWFkb25seSBlbmRMb2NhbERhdGUkOiBPYnNlcnZhYmxlPExvY2FsRGF0ZT47XG5cbiAgcHVibGljIHJlYWRvbmx5IHN0YXJ0RGF0ZSQ6IE9ic2VydmFibGU8RGF0ZT47XG4gIHB1YmxpYyByZWFkb25seSBlbmREYXRlJDogT2JzZXJ2YWJsZTxEYXRlPjtcblxuICBwdWJsaWMgcmVhZG9ubHkgZGF0ZWZvcm1hdDogc3RyaW5nO1xuXG4gIHB1YmxpYyByZWFkb25seSBpbnRlcnZhbCQ6IE9ic2VydmFibGU8SW50ZXJ2YWw+O1xuICBwcml2YXRlIF92YWx1ZUFzSXNvU3RyOiBib29sZWFuO1xuXG4gIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcbiAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKlxuICAgKiBDb25zdHJ1Y3RvciAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqXG4gICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpcbiAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIGhvc3RSZWY6IEVsZW1lbnRSZWYsXG4gICAgem9uZTogTmdab25lLFxuICAgIGZvY3VzTW9uaXRvcjogRm9jdXNNb25pdG9yLFxuICAgIHRyYW5zbGF0ZVNlcnZpY2U6IFRyYW5zbGF0ZVNlcnZpY2UsXG4gICAgQE9wdGlvbmFsKCkgQFNlbGYoKSBwdWJsaWMgbmdDb250cm9sOiBOZ0NvbnRyb2wsXG4gICAgY3VzdG9tRGF0ZUFkYXB0ZXI6IERhdGVBZGFwdGVyPERhdGU+LFxuICAgIEBJbmplY3QoTUFUX0RBVEVfTE9DQUxFKSBtYXREYXRlTG9jYWxlOiBzdHJpbmdcbiAgKSB7XG4gICAgc3VwZXIoXG4gICAgICBob3N0UmVmLFxuICAgICAgJ2ludGVydmFsLWlucHV0JywgLy8gPT4gbWF0LW1kYy1mb3JtLWZpZWxkLXR5cGUtaW50ZXJ2YWwtaW5wdXRcbiAgICAgIGZvY3VzTW9uaXRvcixcbiAgICAgIHRyYW5zbGF0ZVNlcnZpY2UsXG4gICAgICBuZ0NvbnRyb2xcbiAgICApO1xuXG4gICAgdGhpcy5jb250cm9sVHlwZSA9IHRoaXMuX21vZGU7XG4gICAgdGhpcy5pbnRlcnZhbCQgPSB0aGlzLnZhbHVlJC5waXBlKFxuICAgICAgbWFwKHZhbHVlID0+IGNvZXJjZUludGVydmFsKHZhbHVlKSlcbiAgICApO1xuXG4gICAgdGhpcy5lbmRUaW1lJCA9IHRoaXMuaW50ZXJ2YWwkLnBpcGUoXG4gICAgICBtYXAoaW50ZXJ2YWwgPT4gaW50ZXJ2YWw/LmVuZCA/IExvY2FsVGltZS5mcm9tKGludGVydmFsLmVuZC5hdFpvbmUodGhpcy56b25lKSkgOiBudWxsKVxuICAgICk7XG5cbiAgICB0aGlzLnN0YXJ0TG9jYWxEYXRlJCA9IHRoaXMuaW50ZXJ2YWwkLnBpcGUoXG4gICAgICBtYXAoaW50ZXJ2YWwgPT4gaW50ZXJ2YWw/LnN0YXJ0ID8gTG9jYWxEYXRlLmZyb20oaW50ZXJ2YWwuc3RhcnQuYXRab25lKHRoaXMuem9uZSkpIDogbnVsbClcbiAgICApO1xuXG4gICAgdGhpcy5lbmRMb2NhbERhdGUkID0gdGhpcy5pbnRlcnZhbCQucGlwZShcbiAgICAgIG1hcChpbnRlcnZhbCA9PiBpbnRlcnZhbD8uZW5kID8gTG9jYWxEYXRlLmZyb20oaW50ZXJ2YWwuZW5kLmF0Wm9uZSh0aGlzLnpvbmUpKSA6IG51bGwpXG4gICAgKTtcblxuICAgIHRoaXMuc3RhcnREYXRlJCA9IHRoaXMubWFwSWdub3JlRXJyb3JPYnNlcnZhYmxlKHRoaXMuc3RhcnRMb2NhbERhdGUkLCAoZDogTG9jYWxEYXRlKSA9PiBUaW1lVXRpbC5sb2NhbERhdGVUb0RhdGUoZCkpO1xuICAgIHRoaXMuZW5kRGF0ZSQgPSB0aGlzLm1hcElnbm9yZUVycm9yT2JzZXJ2YWJsZSh0aGlzLmVuZExvY2FsRGF0ZSQsIChkOiBMb2NhbERhdGUpID0+IFRpbWVVdGlsLmxvY2FsRGF0ZVRvRGF0ZShkKSk7XG5cbiAgICB0aGlzLmRhdGVmb3JtYXQgPSBMb2NhbGVEYXRlRm9ybWF0cy5nZXRGb3JtYXRzT2ZMb2NhbGUobWF0RGF0ZUxvY2FsZSlbMF0udG9Mb3dlckNhc2UoKTtcbiAgfVxuXG4gIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcbiAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKlxuICAgKiBQcm9wZXJ0aWVzICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqXG4gICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpcbiAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xuXG5cbiAgQElucHV0KClcbiAgcHVibGljIHNldCB2YWx1ZUFzSXNvU3RyKGVuYWJsZWQ6IEJvb2xlYW5JbnB1dCkge1xuICAgIHRoaXMuX3ZhbHVlQXNJc29TdHIgPSBjb2VyY2VCb29sZWFuUHJvcGVydHkoZW5hYmxlZCk7XG4gIH1cblxuICBwdWJsaWMgZ2V0IHZhbHVlQXNJc29TdHIoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuX3ZhbHVlQXNJc29TdHI7XG4gIH1cblxuICBASW5wdXQoKVxuICBwdWJsaWMgc2V0IG1vZGUobW9kZTogSW50ZXJ2YWxJbnB1dE1vZGUpIHtcbiAgICB0aGlzLl9tb2RlID0gbW9kZTtcbiAgICB0aGlzLmNvbnRyb2xUeXBlID0gbW9kZTtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgbW9kZSgpOiBJbnRlcnZhbElucHV0TW9kZSB7XG4gICAgcmV0dXJuIHRoaXMuX21vZGU7XG4gIH1cblxuICBAT3V0cHV0KClcbiAgcHVibGljIGdldCBpc29WYWx1ZUNoYW5nZSgpOiBPYnNlcnZhYmxlPElzb0ludGVydmFsU3RyIHwgbnVsbD4ge1xuICAgIHJldHVybiB0aGlzLnZhbHVlQ2hhbmdlLnBpcGUoXG4gICAgICBtYXAodmFsdWUgPT4gY29lcmNlSW50ZXJ2YWxJc29TdHIodmFsdWUpKVxuICAgICk7XG4gIH1cblxuICBASW5wdXQoKVxuICBwdWJsaWMgc2V0IGlzb1ZhbHVlKHZhbHVlOiBJc29JbnRlcnZhbFN0ciB8IG51bGwpIHtcbiAgICB0aGlzLnZhbHVlID0gdmFsdWUgPyB0aGlzLmNvZXJjZVZhbHVlKHZhbHVlKSA6IG51bGw7XG4gIH1cblxuICBwdWJsaWMgZ2V0IHNob3VsZExhYmVsRmxvYXQoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRydWU7XG4gIH1cblxuICBwdWJsaWMgZ2V0IGludGVydmFsKCk6IEludGVydmFsIHwgdW5kZWZpbmVkIHtcbiAgICByZXR1cm4gY29lcmNlSW50ZXJ2YWwodGhpcy52YWx1ZSk7XG4gIH1cblxuICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXG4gICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpcbiAgICogUHVibGljIEFQSSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKlxuICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqXG4gICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi9cblxuXG4gIHB1YmxpYyBmb2N1cyhvcHRpb25zPzogRm9jdXNPcHRpb25zKTogdm9pZCB7XG4gICAgdGhpcy5sb2dnZXIud2FybignZm9jdXMoKSBub3QgeWV0IHN1cHBvcnRlZCEnKTtcbiAgICAvLyB0aGlzLmlucHV0UmVmPy5uYXRpdmVFbGVtZW50Py5mb2N1cyhvcHRpb25zKTtcbiAgfVxuXG4gIHB1YmxpYyBibHVyKCk6IHZvaWQge1xuICAgIHRoaXMubG9nZ2VyLndhcm4oJ2JsdXIoKSBub3QgeWV0IHN1cHBvcnRlZCEnKTtcbiAgICAvLyB0aGlzLmlucHV0UmVmPy5uYXRpdmVFbGVtZW50Py5ibHVyKCk7XG4gIH1cblxuICBwdWJsaWMgb25EYXlUaW1lU3RhcnRDaGFuZ2VkKHN0YXJ0OiBJbnN0YW50KSB7XG4gICAgdGhpcy51cGRhdGVDb2VyY2VkVmFsdWUoXG4gICAgICBJbnRlcnZhbC5vZihcbiAgICAgICAgc3RhcnQsXG4gICAgICAgIHRoaXMuaW5zdGFudEF0RW5kT2ZEYXkoc3RhcnQpXG4gICAgICApXG4gICAgKTtcbiAgfVxuXG4gIHB1YmxpYyBvbkRheVRpbWVFbmRUaW1lQ2hhbmdlZChlbmRUaW1lOiBMb2NhbFRpbWUpOiB2b2lkIHtcbiAgICBjb25zdCBzdGFydCA9IHRoaXMuaW50ZXJ2YWwuc3RhcnQ7XG4gICAgY29uc3QgZW5kID0gdGhpcy5pbnN0YW50V2l0aFRpbWUoc3RhcnQsIGVuZFRpbWUpO1xuICAgIHRoaXMudXBkYXRlQ29lcmNlZFZhbHVlKFxuICAgICAgSW50ZXJ2YWwub2YoXG4gICAgICAgIHN0YXJ0LFxuICAgICAgICAhZW5kLmlzQWZ0ZXIoc3RhcnQpID8gdGhpcy5pbnN0YW50QXRFbmRPZkRheShzdGFydCkgOiBlbmRcbiAgICAgIClcbiAgICApO1xuICB9XG5cbiAgcHVibGljIG9uU3RhcnRDaGFuZ2VkKHN0YXJ0OiBJbnN0YW50KTogdm9pZCB7XG4gICAgdGhpcy51cGRhdGVDb2VyY2VkVmFsdWUoXG4gICAgICBJbnRlcnZhbC5vZihcbiAgICAgICAgc3RhcnQsXG4gICAgICAgIHRoaXMuaW50ZXJ2YWwuZW5kXG4gICAgICApXG4gICAgKTtcbiAgfVxuXG4gIHB1YmxpYyBvbkVuZENoYW5nZWQoZW5kOiBJbnN0YW50KTogdm9pZCB7XG4gICAgdGhpcy51cGRhdGVDb2VyY2VkVmFsdWUoXG4gICAgICBJbnRlcnZhbC5vZihcbiAgICAgICAgdGhpcy5pbnRlcnZhbC5zdGFydCxcbiAgICAgICAgZW5kXG4gICAgICApXG4gICAgKTtcbiAgfVxuXG4gIHB1YmxpYyBvblN0YXJ0RGF0ZUNoYW5nZWQodmFsdWU6IERhdGUgfCBudWxsKTogdm9pZCB7XG4gICAgY29uc3QgZGF0ZSA9IHRoaXMudG9Mb2NhbERhdGUodmFsdWUpO1xuICAgIHRoaXMudXBkYXRlQ29lcmNlZFZhbHVlKFxuICAgICAgSW50ZXJ2YWwub2YoXG4gICAgICAgIHRoaXMubG9jYWxEYXRlVG9JbnN0YW50KGRhdGUpLFxuICAgICAgICB0aGlzLmludGVydmFsPy5lbmRcbiAgICAgIClcbiAgICApO1xuICB9XG5cbiAgcHVibGljIG9uRW5kRGF0ZUNoYW5nZWQodmFsdWU6IERhdGUgfCBudWxsKTogdm9pZCB7XG4gICAgY29uc3QgZGF0ZSA9IHRoaXMudG9Mb2NhbERhdGUodmFsdWUpO1xuICAgIHRoaXMudXBkYXRlQ29lcmNlZFZhbHVlKFxuICAgICAgSW50ZXJ2YWwub2YoXG4gICAgICAgIHRoaXMuaW50ZXJ2YWw/LnN0YXJ0LFxuICAgICAgICB0aGlzLmxvY2FsRGF0ZVRvSW5zdGFudChkYXRlKVxuICAgICAgKVxuICAgICk7XG4gIH1cblxuICBwdWJsaWMgb25TaW5nbGVEYXlEYXRlQ2hhbmdlZChkYXRlOiBMb2NhbERhdGUpOiB2b2lkIHtcbiAgICB0aGlzLnVwZGF0ZUNvZXJjZWRWYWx1ZShcbiAgICAgIEludGVydmFsLm9mRGF5KGRhdGUsIHRoaXMuem9uZSlcbiAgICApO1xuICB9XG5cbiAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxuICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqXG4gICAqIFByaXZhdGUgbWV0aG9kcyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpcbiAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKlxuICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXG5cbiAgcHJpdmF0ZSB1cGRhdGVDb2VyY2VkVmFsdWUoXG4gICAgdmFsdWU6IEludGVydmFsIHwgSXNvSW50ZXJ2YWxTdHIgfCB1bmRlZmluZWQgfCBudWxsXG4gICk6IHZvaWQge1xuICAgIHRoaXMudXBkYXRlVmFsdWUodGhpcy5jb2VyY2VWYWx1ZSh2YWx1ZSkpO1xuICB9XG5cbiAgcHJpdmF0ZSBpbnN0YW50QXRTdGFydE9mRGF5Tm93KCk6IEluc3RhbnQge1xuICAgIHJldHVybiBMb2NhbERhdGUubm93KCkuYXRTdGFydE9mRGF5KCkuYXRab25lKHRoaXMuem9uZSkudG9JbnN0YW50KCk7XG4gIH1cblxuICBwcml2YXRlIGluc3RhbnRBdEVuZE9mRGF5KGluc3RhbnQ6IEluc3RhbnQpOiBJbnN0YW50IHtcbiAgICByZXR1cm4gTG9jYWxEYXRlLm9mSW5zdGFudChpbnN0YW50KS5hdFN0YXJ0T2ZEYXkoKS5wbHVzRGF5cygxKS5hdFpvbmUodGhpcy56b25lKS50b0luc3RhbnQoKTtcbiAgfVxuXG4gIHByaXZhdGUgbG9jYWxEYXRlVG9JbnN0YW50KGRhdGU6IExvY2FsRGF0ZSk6IEluc3RhbnQgfCB1bmRlZmluZWQge1xuICAgIGlmIChkYXRlKSB7XG4gICAgICByZXR1cm4gZGF0ZS5hdFN0YXJ0T2ZEYXkoKS5hdFpvbmUodGhpcy56b25lKS50b0luc3RhbnQoKTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICB9XG4gIH1cblxuICBwcm90ZWN0ZWQgdmFsdWVzRXF1YWxzKFxuICAgIGE6IEludGVydmFsIHwgSXNvSW50ZXJ2YWxTdHIgfCB1bmRlZmluZWQgfCBudWxsLFxuICAgIGI6IEludGVydmFsIHwgSXNvSW50ZXJ2YWxTdHIgfCB1bmRlZmluZWQgfCBudWxsXG4gICk6IGJvb2xlYW4ge1xuICAgIGNvbnN0IGFJbnRlcnZhbCA9IGNvZXJjZUludGVydmFsKGEpO1xuICAgIGNvbnN0IGJJbnRlcnZhbCA9IGNvZXJjZUludGVydmFsKGIpO1xuICAgIHJldHVybiAoYUludGVydmFsICYmIGJJbnRlcnZhbClcbiAgICAgID8gYUludGVydmFsLmVxdWFscyhiSW50ZXJ2YWwpXG4gICAgICA6IGFJbnRlcnZhbCA9PT0gYkludGVydmFsO1xuICB9XG5cbiAgcHJpdmF0ZSBpbnN0YW50V2l0aFRpbWUoaW5zdGFudDogSW5zdGFudCwgdGltZTogTG9jYWxUaW1lKTogSW5zdGFudCB7XG4gICAgcmV0dXJuIGluc3RhbnRcbiAgICAgIC5hdFpvbmUodGhpcy56b25lKVxuICAgICAgLndpdGhIb3VyKHRpbWUuaG91cigpKVxuICAgICAgLndpdGhNaW51dGUodGltZS5taW51dGUoKSlcbiAgICAgIC50b0luc3RhbnQoKTtcbiAgfVxuXG4gIHByaXZhdGUgdG9Mb2NhbERhdGUodmFsdWU6IERhdGUpOiBMb2NhbERhdGUgfCBudWxsIHtcbiAgICB0cnkge1xuICAgICAgcmV0dXJuIHZhbHVlID8gVGltZVV0aWwuZGF0ZVRvTG9jYWxEYXRlKHZhbHVlKSA6IG51bGw7XG4gICAgfSBjYXRjaCAoZXJyKSB7XG4gICAgICB0aGlzLmxvZ2dlci53YXJuKCdGYWlsZWQgdG8gYXBwbHkgdmFsdWUgdG8gZGF0ZVZhbHVlOiAnICsgdmFsdWUsIGVycik7XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIG1hcElnbm9yZUVycm9yT2JzZXJ2YWJsZTxUPihcbiAgICBkYXRlOiBPYnNlcnZhYmxlPExvY2FsRGF0ZT4sXG4gICAgY29udmVyc2lvbkZuOiAoZDogTG9jYWxEYXRlKSA9PiBUXG4gICk6IE9ic2VydmFibGU8VCB8IG51bGw+IHtcbiAgICByZXR1cm4gZGF0ZS5waXBlKFxuICAgICAgbWFwKGxvY2FsRGF0ZSA9PiBsb2NhbERhdGUgPyBjb252ZXJzaW9uRm4obG9jYWxEYXRlKSA6IG51bGwpLFxuICAgICAgY2F0Y2hFcnJvcihlcnIgPT4ge1xuICAgICAgICB0aGlzLmxvZ2dlci5lcnJvcignRmFpbGVkIHRvIGNvbnZlcnQgbG9jYWwgZGF0ZSEnLCBlcnIpO1xuICAgICAgICByZXR1cm4gb2YobnVsbCk7XG4gICAgICB9KVxuICAgICk7XG4gIH1cblxuICBwcml2YXRlIGNvZXJjZVZhbHVlKFxuICAgIHZhbHVlOiBJbnRlcnZhbCB8IElzb0ludGVydmFsU3RyIHwgdW5kZWZpbmVkIHwgbnVsbFxuICApOiBJbnRlcnZhbCB8IElzb0ludGVydmFsU3RyIHwgdW5kZWZpbmVkIHwgbnVsbCB7XG4gICAgaWYgKHRoaXMudmFsdWVBc0lzb1N0cikge1xuICAgICAgcmV0dXJuIGNvZXJjZUludGVydmFsSXNvU3RyKHZhbHVlKTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIGNvZXJjZUludGVydmFsKHZhbHVlKTtcbiAgICB9XG4gIH1cbn1cbiIsIkBzd2l0Y2ggKG1vZGUpIHtcblxuICBAY2FzZSAoJ2RhdGUtdGltZS1yYW5nZScpIHtcbiAgICA8ZGl2IGNsYXNzPVwibGF5b3V0LXJvd1wiPlxuICAgICAgPGVsZGVyLWRhdGUtdGltZS1pbnB1dCBjbGFzcz1cImZsZXhcIiBjZW50ZXJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3ZhbHVlXT1cIihpbnRlcnZhbCQgfCBhc3luYyk/LnN0YXJ0XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHZhbHVlVXBkYXRlZCk9XCJvblN0YXJ0Q2hhbmdlZCgkZXZlbnQpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3JlcXVpcmVkXT1cInJlcXVpcmVkXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3JlYWRvbmx5XT1cInJlYWRvbmx5XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cImRpc2FibGVkXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3BsYWNlaG9sZGVyXT1cIihwbGFjZWhvbGRlciB8fCAnJykgKyAnICcgKyAoJ2ludGVydmFsLmZyb20nIHwgdHJhbnNsYXRlKVwiXG4gICAgICA+PC9lbGRlci1kYXRlLXRpbWUtaW5wdXQ+XG4gICAgICA8c3BhbiBjbGFzcz1cIm1hdC1kYXRlLXJhbmdlLWlucHV0LXNlcGFyYXRvciBmbGV4LW5vbmVcIj7igJM8L3NwYW4+XG4gICAgICA8ZWxkZXItZGF0ZS10aW1lLWlucHV0IGNsYXNzPVwiZmxleFwiIGNlbnRlclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbdmFsdWVdPVwiKGludGVydmFsJCB8IGFzeW5jKT8uZW5kXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHZhbHVlVXBkYXRlZCk9XCJvbkVuZENoYW5nZWQoJGV2ZW50KVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtyZXF1aXJlZF09XCJyZXF1aXJlZFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtyZWFkb25seV09XCJyZWFkb25seVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtkaXNhYmxlZF09XCJkaXNhYmxlZFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtwbGFjZWhvbGRlcl09XCIocGxhY2Vob2xkZXIgfHwgJycpICsgJyAnICsgKCdpbnRlcnZhbC50bycgfCB0cmFuc2xhdGUpXCJcbiAgICAgID48L2VsZGVyLWRhdGUtdGltZS1pbnB1dD5cbiAgICA8L2Rpdj5cbiAgfVxuICBAY2FzZSAoJ2RheS10aW1lLXJhbmdlJykge1xuICAgIDxkaXYgY2xhc3M9XCJsYXlvdXQtcm93IGdhcC14cyBlbGRlci1mbGV4LWludGVydmFsLWNvbnRyb2xcIj5cblxuICAgICAgPCEtLSAgW25hbWVdPVwibmFtZSArICctZGF5LXN0YXJ0J1wiIC0tPlxuICAgICAgPGVsZGVyLWRhdGUtdGltZS1pbnB1dFxuICAgICAgICBbdmFsdWVdPVwiKGludGVydmFsJCB8IGFzeW5jKT8uc3RhcnRcIlxuICAgICAgICAodmFsdWVVcGRhdGVkKT1cIm9uRGF5VGltZVN0YXJ0Q2hhbmdlZCgkZXZlbnQpXCJcbiAgICAgICAgW3JlcXVpcmVkXT1cInJlcXVpcmVkXCJcbiAgICAgICAgW3JlYWRvbmx5XT1cInJlYWRvbmx5XCJcbiAgICAgICAgW2Rpc2FibGVkXT1cImRpc2FibGVkXCJcbiAgICAgICAgW3BsYWNlaG9sZGVyXT1cIihwbGFjZWhvbGRlciB8fCAnJykgKyAnICcgKyAoJ2ludGVydmFsLmZyb20nIHwgdHJhbnNsYXRlKVwiXG4gICAgICA+PC9lbGRlci1kYXRlLXRpbWUtaW5wdXQ+XG5cbiAgICAgIDwhLS0gW25hbWVdPVwibmFtZSArICctZGF5LWVuZCdcIiAtLT5cbiAgICAgIDxlbGRlci1sb2NhbC10aW1lLWlucHV0XG4gICAgICAgIFt2YWx1ZV09XCJlbmRUaW1lJCB8IGFzeW5jXCJcbiAgICAgICAgKHZhbHVlVXBkYXRlZCk9XCJvbkRheVRpbWVFbmRUaW1lQ2hhbmdlZCgkZXZlbnQpXCJcbiAgICAgICAgW3JlcXVpcmVkXT1cInJlcXVpcmVkXCJcbiAgICAgICAgW3JlYWRvbmx5XT1cInJlYWRvbmx5XCJcbiAgICAgICAgW2Rpc2FibGVkXT1cImRpc2FibGVkXCJcbiAgICAgICAgW3BsYWNlaG9sZGVyXT1cIihwbGFjZWhvbGRlciB8fCAnJykgKyAnICcgKyAoJ2ludGVydmFsLnRvJyB8IHRyYW5zbGF0ZSlcIlxuICAgICAgPjwvZWxkZXItbG9jYWwtdGltZS1pbnB1dD5cbiAgICA8L2Rpdj5cbiAgfVxuXG4gIEBjYXNlICgnZGF0ZS1yYW5nZScpIHtcbiAgICA8ZGl2IGNsYXNzPVwibGF5b3V0LXJvdyBnYXAteHMgZWxkZXItZmxleC1pbnRlcnZhbC1jb250cm9sXCI+XG5cbiAgICAgIDxtYXQtZGF0ZS1yYW5nZS1pbnB1dFxuICAgICAgICBjbGFzcz1cIm1kYy10ZXh0LWZpZWxkX19pbnB1dFwiXG4gICAgICAgIFtyYW5nZVBpY2tlcl09XCJwaWNrZXJcIlxuICAgICAgICBbZGlzYWJsZWRdPVwiISFkaXNhYmxlZFwiXG4gICAgICA+XG4gICAgICAgIDxpbnB1dCBtYXRTdGFydERhdGVcbiAgICAgICAgICAgICAgIFtwbGFjZWhvbGRlcl09XCJkYXRlZm9ybWF0XCJcbiAgICAgICAgICAgICAgIFtuZ01vZGVsXT1cInN0YXJ0RGF0ZSQgfCBhc3luY1wiIG5hbWU9XCJkYXRlLXJhbmdlLnN0YXJ0XCJcbiAgICAgICAgICAgICAgIFtuZ01vZGVsT3B0aW9uc109XCJ7IHN0YW5kYWxvbmU6IHRydWUsIHVwZGF0ZU9uOiAnYmx1cid9XCJcbiAgICAgICAgICAgICAgIChuZ01vZGVsQ2hhbmdlKT1cIm9uU3RhcnREYXRlQ2hhbmdlZCgkZXZlbnQpXCJcbiAgICAgICAgICAgICAgIFtyZWFkb25seV09XCJyZWFkb25seVwiXG4gICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwiISFkaXNhYmxlZFwiXG4gICAgICAgID5cbiAgICAgICAgPGlucHV0IG1hdEVuZERhdGVcbiAgICAgICAgICAgICAgIFtwbGFjZWhvbGRlcl09XCJkYXRlZm9ybWF0XCJcbiAgICAgICAgICAgICAgIFtuZ01vZGVsXT1cImVuZERhdGUkIHwgYXN5bmNcIiBuYW1lPVwiZGF0ZS1yYW5nZS5lbmRcIlxuICAgICAgICAgICAgICAgW25nTW9kZWxPcHRpb25zXT1cInsgc3RhbmRhbG9uZTogdHJ1ZSwgdXBkYXRlT246ICdibHVyJ31cIlxuICAgICAgICAgICAgICAgKG5nTW9kZWxDaGFuZ2UpPVwib25FbmREYXRlQ2hhbmdlZCgkZXZlbnQpXCJcbiAgICAgICAgICAgICAgIFtyZWFkb25seV09XCJyZWFkb25seVwiXG4gICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwiISFkaXNhYmxlZFwiXG4gICAgICAgID5cbiAgICAgIDwvbWF0LWRhdGUtcmFuZ2UtaW5wdXQ+XG4gICAgICA8bWF0LWRhdGVwaWNrZXItdG9nZ2xlIGNsYXNzPVwiZWxkZXItY29udHJvbC1pY29uLWJ1dHRvblwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtkaXNhYmxlZF09XCJpc0xvY2tlZFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtmb3JdPVwicGlja2VyXCI+XG4gICAgICAgIDxtYXQtaWNvbiBtYXREYXRlcGlja2VyVG9nZ2xlSWNvbj5jYWxlbmRhcl9tb250aDwvbWF0LWljb24+XG4gICAgICA8L21hdC1kYXRlcGlja2VyLXRvZ2dsZT5cbiAgICAgIDxtYXQtZGF0ZS1yYW5nZS1waWNrZXIgI3BpY2tlcj48L21hdC1kYXRlLXJhbmdlLXBpY2tlcj5cbiAgICA8L2Rpdj5cbiAgfVxuXG4gIEBjYXNlICgnc2luZ2xlLWRheScpIHtcbiAgICA8ZGl2IGNsYXNzPVwibGF5b3V0LXJvdyBlbGRlci1mbGV4LWNvbnRyb2xcIj5cblxuICAgICAgPCEtLSBbbmFtZV09XCJuYW1lXCIgLS0+XG4gICAgICA8ZWxkZXItbG9jYWwtZGF0ZS1pbnB1dCBjbGFzcz1cImZsZXhcIiBjZW50ZXJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFt2YWx1ZV09XCJzdGFydExvY2FsRGF0ZSQgfCBhc3luY1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAodmFsdWVVcGRhdGVkKT1cIm9uU2luZ2xlRGF5RGF0ZUNoYW5nZWQoJGV2ZW50KVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbcmVxdWlyZWRdPVwicmVxdWlyZWRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3JlYWRvbmx5XT1cInJlYWRvbmx5XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtkaXNhYmxlZF09XCJkaXNhYmxlZFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbcGxhY2Vob2xkZXJdPVwiKHBsYWNlaG9sZGVyIHx8ICcnKVwiXG4gICAgICA+PC9lbGRlci1sb2NhbC1kYXRlLWlucHV0PlxuICAgIDwvZGl2PlxuICB9XG59XG5cblxuXG5cblxuXG4iXX0=
222
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZWxkZXItaW50ZXJ2YWwtaW5wdXQuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZWxkZXJieXRlL25neC1zdGFydGVyL3NyYy9saWIvY29tcG9uZW50cy90aW1lL2VsZGVyLWludGVydmFsLWlucHV0L2VsZGVyLWludGVydmFsLWlucHV0LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2VsZGVyYnl0ZS9uZ3gtc3RhcnRlci9zcmMvbGliL2NvbXBvbmVudHMvdGltZS9lbGRlci1pbnRlcnZhbC1pbnB1dC9lbGRlci1pbnRlcnZhbC1pbnB1dC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0wsdUJBQXVCLEVBQ3ZCLFNBQVMsRUFFVCxNQUFNLEVBQ04sS0FBSyxFQUVMLFFBQVEsRUFDUixNQUFNLEVBQ04sSUFBSSxFQUNMLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBQyxhQUFhLEVBQUMsTUFBTSxzQkFBc0IsQ0FBQztBQUNuRCxPQUFPLEVBQUMsUUFBUSxFQUFpQixNQUFNLCtCQUErQixDQUFDO0FBQ3ZFLE9BQU8sRUFBYSxFQUFFLEVBQUMsTUFBTSxNQUFNLENBQUM7QUFDcEMsT0FBTyxFQUFDLFVBQVUsRUFBRSxHQUFHLEVBQUMsTUFBTSxnQkFBZ0IsQ0FBQztBQUMvQyxPQUFPLEVBQVUsU0FBUyxFQUFFLFNBQVMsRUFBRSxNQUFNLEVBQUMsTUFBTSxlQUFlLENBQUM7QUFDcEUsT0FBTyxFQUFDLHlCQUF5QixFQUFDLE1BQU0sK0RBQStELENBQUM7QUFFeEcsT0FBTyxFQUFtQixlQUFlLEVBQUMsTUFBTSxxQkFBcUIsQ0FBQztBQUN0RSxPQUFPLEVBQVksV0FBVyxFQUFDLE1BQU0sZ0JBQWdCLENBQUM7QUFDdEQsT0FBTyxFQUFDLG1CQUFtQixFQUFDLE1BQU0sOEJBQThCLENB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dGVudCI6WyJpbXBvcnQge1xuICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbiAgQ29tcG9uZW50LFxuICBFbGVtZW50UmVmLFxuICBJbmplY3QsXG4gIElucHV0LFxuICBOZ1pvbmUsXG4gIE9wdGlvbmFsLFxuICBPdXRwdXQsXG4gIFNlbGZcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge0xvZ2dlckZhY3Rvcnl9IGZyb20gJ0BlbGRlcmJ5dGUvdHMtbG9nZ2VyJztcbmltcG9ydCB7SW50ZXJ2YWwsIElzb0ludGVydmFsU3RyfSBmcm9tICcuLi8uLi8uLi9jb21tb24vdGltZS9pbnRlcnZhbCc7XG5pbXBvcnQge09ic2VydmFibGUsIG9mfSBmcm9tICdyeGpzJztcbmltcG9ydCB7Y2F0Y2hFcnJvciwgbWFwfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQge0luc3RhbnQsIExvY2FsRGF0ZSwgTG9jYWxUaW1lLCBab25lSWR9IGZyb20gJ0Bqcy1qb2RhL2NvcmUnO1xuaW1wb3J0IHtFbGRlckZvcm1GaWVsZENvbnRyb2xCYXNlfSBmcm9tICcuLi8uLi8uLi9jb21tb24vZm9ybXMvZWxkZXItZm9ybS1maWVsZC1jb250cm9sLWJhc2UuZGlyZWN0aXZlJztcbmltcG9ydCB7Rm9jdXNNb25pdG9yfSBmcm9tICdAYW5ndWxhci9jZGsvYTExeSc7XG5pbXBvcnQge1RyYW5zbGF0ZVNlcnZpY2UsIFRyYW5zbGF0ZU1vZHVsZX0gZnJvbSAnQG5neC10cmFuc2xhdGUvY29yZSc7XG5pbXBvcnQge05nQ29udHJvbCwgRm9ybXNNb2R1bGV9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7TWF0Rm9ybUZpZWxkQ29udHJvbH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvZm9ybS1maWVsZCc7XG5pbXBvcnQge1RpbWVVdGlsfSBmcm9tICcuLi8uLi8uLi9jb21tb24vdGltZS90aW1lLXV0aWwnO1xuaW1wb3J0IHtEYXRlQWRhcHRlciwgTUFUX0RBVEVfTE9DQUxFfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9jb3JlJztcbmltcG9ydCB7TG9jYWxlRGF0ZUZvcm1hdHN9IGZyb20gJy4uL2RhdGUtZm9ybWF0cy9sb2NhbGUtZGF0ZS1mb3JtYXRzJztcbmltcG9ydCB7RWxkZXJMb2NhbERhdGVJbnB1dENvbXBvbmVudH0gZnJvbSAnLi4vZWxkZXItbG9jYWwtZGF0ZS1pbnB1dC9lbGRlci1sb2NhbC1kYXRlLWlucHV0LmNvbXBvbmVudCc7XG5pbXBvcnQge01hdEljb259IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2ljb24nO1xuaW1wb3J0IHtcbiAgTWF0RGF0ZVJhbmdlSW5wdXQsXG4gIE1hdFN0YXJ0RGF0ZSxcbiAgTWF0RW5kRGF0ZSxcbiAgTWF0RGF0ZXBpY2tlclRvZ2dsZSxcbiAgTWF0RGF0ZXBpY2tlclRvZ2dsZUljb24sXG4gIE1hdERhdGVSYW5nZVBpY2tlclxufSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9kYXRlcGlja2VyJztcbmltcG9ydCB7RWxkZXJMb2NhbFRpbWVJbnB1dENvbXBvbmVudH0gZnJvbSAnLi4vZWxkZXItbG9jYWwtdGltZS1pbnB1dC9lbGRlci1sb2NhbC10aW1lLWlucHV0LmNvbXBvbmVudCc7XG5pbXBvcnQge0VsZGVyRGF0ZVRpbWVJbnB1dENvbXBvbmVudH0gZnJvbSAnLi4vZWxkZXItZGF0ZS10aW1lLWlucHV0L2VsZGVyLWRhdGUtdGltZS1pbnB1dC5jb21wb25lbnQnO1xuaW1wb3J0IHtBc3luY1BpcGV9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQge0Jvb2xlYW5JbnB1dCwgY29lcmNlQm9vbGVhblByb3BlcnR5fSBmcm9tICdAYW5ndWxhci9jZGsvY29lcmNpb24nO1xuaW1wb3J0IHtjb2VyY2VJbnRlcnZhbCwgY29lcmNlSW50ZXJ2YWxJc29TdHJ9IGZyb20gJy4uLy4uLy4uL2NvbW1vbi90aW1lL2ludGVydmFsLWNvZXJjZSc7XG5cbmV4cG9ydCB0eXBlIEludGVydmFsSW5wdXRNb2RlID1cblxuLyoqXG4gKiBTdXBwb3J0cyB0aGUgc2VsZWN0aW9uIG9mIGEgc2luZ2xlIChmdWxsKSBkYXk6XG4gKiAxMi4xMi4yMDIwXG4gKi9cbiAgJ3NpbmdsZS1kYXknIHxcblxuICAvKipcbiAgICogU3VwcG9ydHMgYSB0aW1lIGludGVydmFsIGluIGEgZGF5OlxuICAgKiAxMi4xMi4yMDIwIDEzOjAwIC0gMTg6MDBcbiAgICovXG4gICdkYXktdGltZS1yYW5nZScgfFxuXG4gIC8qKlxuICAgKiBTdXBwb3J0cyBhIGRhdGUgaW50ZXJ2YWwgd2l0aG91dCB0aW1lXG4gICAqIDEyLjEyLjIwMjAgLSAyMi4wNi4yMDIxXG4gICAqL1xuICAnZGF0ZS1yYW5nZScgfFxuXG4gIC8qKlxuICAgKiBTdXBwb3J0cyBhIGRhdGUtdGltZSB0byBkYXRlLXRpbWUgaW50ZXJ2YWxcbiAgICogMTIuMTIuMjAyMCA4OjAwIC0gMjIuMDYuMjAyMSAxNzowMFxuICAgKiBUaGlzIGlzIHRoZSBkZWZhdWx0IGFzIGl0IHN1cHBvcnRzIHRoZSBtb3N0IGRldGFpbGVkIGlucHV0LlxuICAgKi9cbiAgJ2RhdGUtdGltZS1yYW5nZSdcbiAgO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdlbGRlci1pbnRlcnZhbC1pbnB1dCcsXG4gIHRlbXBsYXRlVXJsOiAnLi9lbGRlci1pbnRlcnZhbC1pbnB1dC5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL2VsZGVyLWludGVydmFsLWlucHV0LmNvbXBvbmVudC5zY3NzJ10sXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICBwcm92aWRlcnM6IFtcbiAgICB7cHJvdmlkZTogTWF0Rm9ybUZpZWxkQ29udHJvbCwgdXNlRXhpc3Rpbmc6IEVsZGVySW50ZXJ2YWxJbnB1dENvbXBvbmVudH0sXG4gIF0sXG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIGltcG9ydHM6IFtBc3luY1BpcGUsIFRyYW5zbGF0ZU1vZHVsZSwgRm9ybXNNb2R1bGUsXG4gICAgRWxkZXJEYXRlVGltZUlucHV0Q29tcG9uZW50LCBFbGRlckxvY2FsVGltZUlucHV0Q29tcG9uZW50LFxuICAgIE1hdERhdGVSYW5nZUlucHV0LCBNYXRTdGFydERhdGUsXG4gICAgTWF0RW5kRGF0ZSwgTWF0RGF0ZXBpY2tlclRvZ2dsZSwgTWF0SWNvbiwgTWF0RGF0ZXBpY2tlclRvZ2dsZUljb24sIE1hdERhdGVSYW5nZVBpY2tlcixcbiAgICBFbGRlckxvY2FsRGF0ZUlucHV0Q29tcG9uZW50XVxufSlcbmV4cG9ydCBjbGFzcyBFbGRlckludGVydmFsSW5wdXRDb21wb25lbnQgZXh0ZW5kcyBFbGRlckZvcm1GaWVsZENvbnRyb2xCYXNlPEludGVydmFsIHwgSXNvSW50ZXJ2YWxTdHI+IHtcblxuICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXG4gICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpcbiAgICogRmllbGRzICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKlxuICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqXG4gICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi9cblxuICBwcml2YXRlIHJlYWRvbmx5IGxvZ2dlciA9IExvZ2dlckZhY3RvcnkuZ2V0TG9nZ2VyKHRoaXMuY29uc3RydWN0b3IubmFtZSk7XG5cbiAgcHJpdmF0ZSBfbW9kZTogSW50ZXJ2YWxJbnB1dE1vZGUgPSAnZGF0ZS10aW1lLXJhbmdlJztcbiAgcHJpdmF0ZSBfaXNEZWZhdWx0RGF0ZVBpY2tlckRpc2FibGVkID0gZmFsc2U7XG5cbiAgQElucHV0KClcbiAgcHVibGljIHpvbmUgPSBab25lSWQuc3lzdGVtRGVmYXVsdCgpO1xuXG4gIHB1YmxpYyByZWFkb25seSBlbmRUaW1lJDogT2JzZXJ2YWJsZTxMb2NhbFRpbWU+O1xuXG4gIHB1YmxpYyByZWFkb25seSBzdGFydExvY2FsRGF0ZSQ6IE9ic2VydmFibGU8TG9jYWxEYXRlPjtcbiAgcHVibGljIHJlYWRvbmx5IGVuZExvY2FsRGF0ZSQ6IE9ic2VydmFibGU8TG9jYWxEYXRlPjtcblxuICBwdWJsaWMgcmVhZG9ubHkgc3RhcnREYXRlJDogT2JzZXJ2YWJsZTxEYXRlPjtcbiAgcHVibGljIHJlYWRvbmx5IGVuZERhdGUkOiBPYnNlcnZhYmxlPERhdGU+O1xuXG4gIHB1YmxpYyByZWFkb25seSBkYXRlZm9ybWF0OiBzdHJpbmc7XG5cbiAgcHVibGljIHJlYWRvbmx5IGludGVydmFsJDogT2JzZXJ2YWJsZTxJbnRlcnZhbD47XG4gIHByaXZhdGUgX3ZhbHVlQXNJc29TdHI6IGJvb2xlYW47XG5cbiAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxuICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqXG4gICAqIENvbnN0cnVjdG9yICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpcbiAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKlxuICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXG5cbiAgY29uc3RydWN0b3IoXG4gICAgaG9zdFJlZjogRWxlbWVudFJlZixcbiAgICB6b25lOiBOZ1pvbmUsXG4gICAgZm9jdXNNb25pdG9yOiBGb2N1c01vbml0b3IsXG4gICAgdHJhbnNsYXRlU2VydmljZTogVHJhbnNsYXRlU2VydmljZSxcbiAgICBAT3B0aW9uYWwoKSBAU2VsZigpIHB1YmxpYyBuZ0NvbnRyb2w6IE5nQ29udHJvbCxcbiAgICBjdXN0b21EYXRlQWRhcHRlcjogRGF0ZUFkYXB0ZXI8RGF0ZT4sXG4gICAgQEluamVjdChNQVRfREFURV9MT0NBTEUpIG1hdERhdGVMb2NhbGU6IHN0cmluZ1xuICApIHtcbiAgICBzdXBlcihcbiAgICAgIGhvc3RSZWYsXG4gICAgICAnaW50ZXJ2YWwtaW5wdXQnLCAvLyA9PiBtYXQtbWRjLWZvcm0tZmllbGQtdHlwZS1pbnRlcnZhbC1pbnB1dFxuICAgICAgZm9jdXNNb25pdG9yLFxuICAgICAgdHJhbnNsYXRlU2VydmljZSxcbiAgICAgIG5nQ29udHJvbFxuICAgICk7XG5cbiAgICB0aGlzLmNvbnRyb2xUeXBlID0gdGhpcy5fbW9kZTtcbiAgICB0aGlzLmludGVydmFsJCA9IHRoaXMudmFsdWUkLnBpcGUoXG4gICAgICBtYXAodmFsdWUgPT4gY29lcmNlSW50ZXJ2YWwodmFsdWUpKVxuICAgICk7XG5cbiAgICB0aGlzLmVuZFRpbWUkID0gdGhpcy5pbnRlcnZhbCQucGlwZShcbiAgICAgIG1hcChpbnRlcnZhbCA9PiBpbnRlcnZhbD8uZW5kID8gTG9jYWxUaW1lLmZyb20oaW50ZXJ2YWwuZW5kLmF0Wm9uZSh0aGlzLnpvbmUpKSA6IG51bGwpXG4gICAgKTtcblxuICAgIHRoaXMuc3RhcnRMb2NhbERhdGUkID0gdGhpcy5pbnRlcnZhbCQucGlwZShcbiAgICAgIG1hcChpbnRlcnZhbCA9PiBpbnRlcnZhbD8uc3RhcnQgPyBMb2NhbERhdGUuZnJvbShpbnRlcnZhbC5zdGFydC5hdFpvbmUodGhpcy56b25lKSkgOiBudWxsKVxuICAgICk7XG5cbiAgICB0aGlzLmVuZExvY2FsRGF0ZSQgPSB0aGlzLmludGVydmFsJC5waXBlKFxuICAgICAgbWFwKGludGVydmFsID0+IGludGVydmFsPy5lbmQgPyBMb2NhbERhdGUuZnJvbShpbnRlcnZhbC5lbmQuYXRab25lKHRoaXMuem9uZSkpIDogbnVsbClcbiAgICApO1xuXG4gICAgdGhpcy5zdGFydERhdGUkID0gdGhpcy5tYXBJZ25vcmVFcnJvck9ic2VydmFibGUodGhpcy5zdGFydExvY2FsRGF0ZSQsIChkOiBMb2NhbERhdGUpID0+IFRpbWVVdGlsLmxvY2FsRGF0ZVRvRGF0ZShkKSk7XG4gICAgdGhpcy5lbmREYXRlJCA9IHRoaXMubWFwSWdub3JlRXJyb3JPYnNlcnZhYmxlKHRoaXMuZW5kTG9jYWxEYXRlJCwgKGQ6IExvY2FsRGF0ZSkgPT4gVGltZVV0aWwubG9jYWxEYXRlVG9EYXRlKGQpKTtcblxuICAgIHRoaXMuZGF0ZWZvcm1hdCA9IExvY2FsZURhdGVGb3JtYXRzLmdldEZvcm1hdHNPZkxvY2FsZShtYXREYXRlTG9jYWxlKVswXS50b0xvd2VyQ2FzZSgpO1xuICB9XG5cbiAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxuICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqXG4gICAqIFByb3BlcnRpZXMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpcbiAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKlxuICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXG5cblxuICBASW5wdXQoKVxuICBwdWJsaWMgc2V0IHZhbHVlQXNJc29TdHIoZW5hYmxlZDogQm9vbGVhbklucHV0KSB7XG4gICAgdGhpcy5fdmFsdWVBc0lzb1N0ciA9IGNvZXJjZUJvb2xlYW5Qcm9wZXJ0eShlbmFibGVkKTtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgdmFsdWVBc0lzb1N0cigpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5fdmFsdWVBc0lzb1N0cjtcbiAgfVxuXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBzZXQgbW9kZShtb2RlOiBJbnRlcnZhbElucHV0TW9kZSkge1xuICAgIHRoaXMuX21vZGUgPSBtb2RlO1xuICAgIHRoaXMuY29udHJvbFR5cGUgPSBtb2RlO1xuICB9XG5cbiAgcHVibGljIGdldCBtb2RlKCk6IEludGVydmFsSW5wdXRNb2RlIHtcbiAgICByZXR1cm4gdGhpcy5fbW9kZTtcbiAgfVxuXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBzZXQgaXNEZWZhdWx0RGF0ZVBpY2tlckRpc2FibGVkKGhpZGU6IEJvb2xlYW5JbnB1dCkge1xuICAgIHRoaXMuX2lzRGVmYXVsdERhdGVQaWNrZXJEaXNhYmxlZCA9IGNvZXJjZUJvb2xlYW5Qcm9wZXJ0eShoaWRlKTtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgaXNEZWZhdWx0RGF0ZVBpY2tlckRpc2FibGVkKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLl9pc0RlZmF1bHREYXRlUGlja2VyRGlzYWJsZWQ7XG4gIH1cblxuICBAT3V0cHV0KClcbiAgcHVibGljIGdldCBpc29WYWx1ZUNoYW5nZSgpOiBPYnNlcnZhYmxlPElzb0ludGVydmFsU3RyIHwgbnVsbD4ge1xuICAgIHJldHVybiB0aGlzLnZhbHVlQ2hhbmdlLnBpcGUoXG4gICAgICBtYXAodmFsdWUgPT4gY29lcmNlSW50ZXJ2YWxJc29TdHIodmFsdWUpKVxuICAgICk7XG4gIH1cblxuICBASW5wdXQoKVxuICBwdWJsaWMgc2V0IGlzb1ZhbHVlKHZhbHVlOiBJc29JbnRlcnZhbFN0ciB8IG51bGwpIHtcbiAgICB0aGlzLnZhbHVlID0gdmFsdWUgPyB0aGlzLmNvZXJjZVZhbHVlKHZhbHVlKSA6IG51bGw7XG4gIH1cblxuICBwdWJsaWMgZ2V0IHNob3VsZExhYmVsRmxvYXQoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRydWU7XG4gIH1cblxuICBwdWJsaWMgZ2V0IGludGVydmFsKCk6IEludGVydmFsIHwgdW5kZWZpbmVkIHtcbiAgICByZXR1cm4gY29lcmNlSW50ZXJ2YWwodGhpcy52YWx1ZSk7XG4gIH1cblxuICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXG4gICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpcbiAgICogUHVibGljIEFQSSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKlxuICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqXG4gICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi9cblxuXG4gIHB1YmxpYyBmb2N1cyhvcHRpb25zPzogRm9jdXNPcHRpb25zKTogdm9pZCB7XG4gICAgdGhpcy5sb2dnZXIud2FybignZm9jdXMoKSBub3QgeWV0IHN1cHBvcnRlZCEnKTtcbiAgICAvLyB0aGlzLmlucHV0UmVmPy5uYXRpdmVFbGVtZW50Py5mb2N1cyhvcHRpb25zKTtcbiAgfVxuXG4gIHB1YmxpYyBibHVyKCk6IHZvaWQge1xuICAgIHRoaXMubG9nZ2VyLndhcm4oJ2JsdXIoKSBub3QgeWV0IHN1cHBvcnRlZCEnKTtcbiAgICAvLyB0aGlzLmlucHV0UmVmPy5uYXRpdmVFbGVtZW50Py5ibHVyKCk7XG4gIH1cblxuICBwdWJsaWMgb25EYXlUaW1lU3RhcnRDaGFuZ2VkKHN0YXJ0OiBJbnN0YW50KSB7XG4gICAgdGhpcy51cGRhdGVDb2VyY2VkVmFsdWUoXG4gICAgICBJbnRlcnZhbC5vZihcbiAgICAgICAgc3RhcnQsXG4gICAgICAgIHRoaXMuaW5zdGFudEF0RW5kT2ZEYXkoc3RhcnQpXG4gICAgICApXG4gICAgKTtcbiAgfVxuXG4gIHB1YmxpYyBvbkRheVRpbWVFbmRUaW1lQ2hhbmdlZChlbmRUaW1lOiBMb2NhbFRpbWUpOiB2b2lkIHtcbiAgICBjb25zdCBzdGFydCA9IHRoaXMuaW50ZXJ2YWwuc3RhcnQ7XG4gICAgY29uc3QgZW5kID0gdGhpcy5pbnN0YW50V2l0aFRpbWUoc3RhcnQsIGVuZFRpbWUpO1xuICAgIHRoaXMudXBkYXRlQ29lcmNlZFZhbHVlKFxuICAgICAgSW50ZXJ2YWwub2YoXG4gICAgICAgIHN0YXJ0LFxuICAgICAgICAhZW5kLmlzQWZ0ZXIoc3RhcnQpID8gdGhpcy5pbnN0YW50QXRFbmRPZkRheShzdGFydCkgOiBlbmRcbiAgICAgIClcbiAgICApO1xuICB9XG5cbiAgcHVibGljIG9uU3RhcnRDaGFuZ2VkKHN0YXJ0OiBJbnN0YW50KTogdm9pZCB7XG4gICAgdGhpcy51cGRhdGVDb2VyY2VkVmFsdWUoXG4gICAgICBJbnRlcnZhbC5vZihcbiAgICAgICAgc3RhcnQsXG4gICAgICAgIHRoaXMuaW50ZXJ2YWwuZW5kXG4gICAgICApXG4gICAgKTtcbiAgfVxuXG4gIHB1YmxpYyBvbkVuZENoYW5nZWQoZW5kOiBJbnN0YW50KTogdm9pZCB7XG4gICAgdGhpcy51cGRhdGVDb2VyY2VkVmFsdWUoXG4gICAgICBJbnRlcnZhbC5vZihcbiAgICAgICAgdGhpcy5pbnRlcnZhbC5zdGFydCxcbiAgICAgICAgZW5kXG4gICAgICApXG4gICAgKTtcbiAgfVxuXG4gIHB1YmxpYyBvblN0YXJ0RGF0ZUNoYW5nZWQodmFsdWU6IERhdGUgfCBudWxsKTogdm9pZCB7XG4gICAgY29uc3QgZGF0ZSA9IHRoaXMudG9Mb2NhbERhdGUodmFsdWUpO1xuICAgIHRoaXMudXBkYXRlQ29lcmNlZFZhbHVlKFxuICAgICAgSW50ZXJ2YWwub2YoXG4gICAgICAgIHRoaXMubG9jYWxEYXRlVG9JbnN0YW50KGRhdGUpLFxuICAgICAgICB0aGlzLmludGVydmFsPy5lbmRcbiAgICAgIClcbiAgICApO1xuICB9XG5cbiAgcHVibGljIG9uRW5kRGF0ZUNoYW5nZWQodmFsdWU6IERhdGUgfCBudWxsKTogdm9pZCB7XG4gICAgY29uc3QgZGF0ZSA9IHRoaXMudG9Mb2NhbERhdGUodmFsdWUpO1xuICAgIHRoaXMudXBkYXRlQ29lcmNlZFZhbHVlKFxuICAgICAgSW50ZXJ2YWwub2YoXG4gICAgICAgIHRoaXMuaW50ZXJ2YWw/LnN0YXJ0LFxuICAgICAgICB0aGlzLmxvY2FsRGF0ZVRvSW5zdGFudChkYXRlKVxuICAgICAgKVxuICAgICk7XG4gIH1cblxuICBwdWJsaWMgb25TaW5nbGVEYXlEYXRlQ2hhbmdlZChkYXRlOiBMb2NhbERhdGUpOiB2b2lkIHtcbiAgICB0aGlzLnVwZGF0ZUNvZXJjZWRWYWx1ZShcbiAgICAgIEludGVydmFsLm9mRGF5KGRhdGUsIHRoaXMuem9uZSlcbiAgICApO1xuICB9XG5cbiAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxuICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqXG4gICAqIFByaXZhdGUgbWV0aG9kcyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpcbiAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKlxuICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXG5cbiAgcHJpdmF0ZSB1cGRhdGVDb2VyY2VkVmFsdWUoXG4gICAgdmFsdWU6IEludGVydmFsIHwgSXNvSW50ZXJ2YWxTdHIgfCB1bmRlZmluZWQgfCBudWxsXG4gICk6IHZvaWQge1xuICAgIHRoaXMudXBkYXRlVmFsdWUodGhpcy5jb2VyY2VWYWx1ZSh2YWx1ZSkpO1xuICB9XG5cbiAgcHJpdmF0ZSBpbnN0YW50QXRTdGFydE9mRGF5Tm93KCk6IEluc3RhbnQge1xuICAgIHJldHVybiBMb2NhbERhdGUubm93KCkuYXRTdGFydE9mRGF5KCkuYXRab25lKHRoaXMuem9uZSkudG9JbnN0YW50KCk7XG4gIH1cblxuICBwcml2YXRlIGluc3RhbnRBdEVuZE9mRGF5KGluc3RhbnQ6IEluc3RhbnQpOiBJbnN0YW50IHtcbiAgICByZXR1cm4gTG9jYWxEYXRlLm9mSW5zdGFudChpbnN0YW50KS5hdFN0YXJ0T2ZEYXkoKS5wbHVzRGF5cygxKS5hdFpvbmUodGhpcy56b25lKS50b0luc3RhbnQoKTtcbiAgfVxuXG4gIHByaXZhdGUgbG9jYWxEYXRlVG9JbnN0YW50KGRhdGU6IExvY2FsRGF0ZSk6IEluc3RhbnQgfCB1bmRlZmluZWQge1xuICAgIGlmIChkYXRlKSB7XG4gICAgICByZXR1cm4gZGF0ZS5hdFN0YXJ0T2ZEYXkoKS5hdFpvbmUodGhpcy56b25lKS50b0luc3RhbnQoKTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICB9XG4gIH1cblxuICBwcm90ZWN0ZWQgdmFsdWVzRXF1YWxzKFxuICAgIGE6IEludGVydmFsIHwgSXNvSW50ZXJ2YWxTdHIgfCB1bmRlZmluZWQgfCBudWxsLFxuICAgIGI6IEludGVydmFsIHwgSXNvSW50ZXJ2YWxTdHIgfCB1bmRlZmluZWQgfCBudWxsXG4gICk6IGJvb2xlYW4ge1xuICAgIGNvbnN0IGFJbnRlcnZhbCA9IGNvZXJjZUludGVydmFsKGEpO1xuICAgIGNvbnN0IGJJbnRlcnZhbCA9IGNvZXJjZUludGVydmFsKGIpO1xuICAgIHJldHVybiAoYUludGVydmFsICYmIGJJbnRlcnZhbClcbiAgICAgID8gYUludGVydmFsLmVxdWFscyhiSW50ZXJ2YWwpXG4gICAgICA6IGFJbnRlcnZhbCA9PT0gYkludGVydmFsO1xuICB9XG5cbiAgcHJpdmF0ZSBpbnN0YW50V2l0aFRpbWUoaW5zdGFudDogSW5zdGFudCwgdGltZTogTG9jYWxUaW1lKTogSW5zdGFudCB7XG4gICAgcmV0dXJuIGluc3RhbnRcbiAgICAgIC5hdFpvbmUodGhpcy56b25lKVxuICAgICAgLndpdGhIb3VyKHRpbWUuaG91cigpKVxuICAgICAgLndpdGhNaW51dGUodGltZS5taW51dGUoKSlcbiAgICAgIC50b0luc3RhbnQoKTtcbiAgfVxuXG4gIHByaXZhdGUgdG9Mb2NhbERhdGUodmFsdWU6IERhdGUpOiBMb2NhbERhdGUgfCBudWxsIHtcbiAgICB0cnkge1xuICAgICAgcmV0dXJuIHZhbHVlID8gVGltZVV0aWwuZGF0ZVRvTG9jYWxEYXRlKHZhbHVlKSA6IG51bGw7XG4gICAgfSBjYXRjaCAoZXJyKSB7XG4gICAgICB0aGlzLmxvZ2dlci53YXJuKCdGYWlsZWQgdG8gYXBwbHkgdmFsdWUgdG8gZGF0ZVZhbHVlOiAnICsgdmFsdWUsIGVycik7XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIG1hcElnbm9yZUVycm9yT2JzZXJ2YWJsZTxUPihcbiAgICBkYXRlOiBPYnNlcnZhYmxlPExvY2FsRGF0ZT4sXG4gICAgY29udmVyc2lvbkZuOiAoZDogTG9jYWxEYXRlKSA9PiBUXG4gICk6IE9ic2VydmFibGU8VCB8IG51bGw+IHtcbiAgICByZXR1cm4gZGF0ZS5waXBlKFxuICAgICAgbWFwKGxvY2FsRGF0ZSA9PiBsb2NhbERhdGUgPyBjb252ZXJzaW9uRm4obG9jYWxEYXRlKSA6IG51bGwpLFxuICAgICAgY2F0Y2hFcnJvcihlcnIgPT4ge1xuICAgICAgICB0aGlzLmxvZ2dlci5lcnJvcignRmFpbGVkIHRvIGNvbnZlcnQgbG9jYWwgZGF0ZSEnLCBlcnIpO1xuICAgICAgICByZXR1cm4gb2YobnVsbCk7XG4gICAgICB9KVxuICAgICk7XG4gIH1cblxuICBwcml2YXRlIGNvZXJjZVZhbHVlKFxuICAgIHZhbHVlOiBJbnRlcnZhbCB8IElzb0ludGVydmFsU3RyIHwgdW5kZWZpbmVkIHwgbnVsbFxuICApOiBJbnRlcnZhbCB8IElzb0ludGVydmFsU3RyIHwgdW5kZWZpbmVkIHwgbnVsbCB7XG4gICAgaWYgKHRoaXMudmFsdWVBc0lzb1N0cikge1xuICAgICAgcmV0dXJuIGNvZXJjZUludGVydmFsSXNvU3RyKHZhbHVlKTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIGNvZXJjZUludGVydmFsKHZhbHVlKTtcbiAgICB9XG4gIH1cbn1cbiIsIkBzd2l0Y2ggKG1vZGUpIHtcblxuICBAY2FzZSAoJ2RhdGUtdGltZS1yYW5nZScpIHtcbiAgICA8ZGl2IGNsYXNzPVwibGF5b3V0LXJvd1wiPlxuICAgICAgPGVsZGVyLWRhdGUtdGltZS1pbnB1dCBjbGFzcz1cImZsZXhcIiBjZW50ZXJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3ZhbHVlXT1cIihpbnRlcnZhbCQgfCBhc3luYyk/LnN0YXJ0XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHZhbHVlVXBkYXRlZCk9XCJvblN0YXJ0Q2hhbmdlZCgkZXZlbnQpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3JlcXVpcmVkXT1cInJlcXVpcmVkXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3JlYWRvbmx5XT1cInJlYWRvbmx5XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cImRpc2FibGVkXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3BsYWNlaG9sZGVyXT1cIihwbGFjZWhvbGRlciB8fCAnJykgKyAnICcgKyAoJ2ludGVydmFsLmZyb20nIHwgdHJhbnNsYXRlKVwiXG4gICAgICA+PC9lbGRlci1kYXRlLXRpbWUtaW5wdXQ+XG4gICAgICA8c3BhbiBjbGFzcz1cIm1hdC1kYXRlLXJhbmdlLWlucHV0LXNlcGFyYXRvciBmbGV4LW5vbmVcIj7igJM8L3NwYW4+XG4gICAgICA8ZWxkZXItZGF0ZS10aW1lLWlucHV0IGNsYXNzPVwiZmxleFwiIGNlbnRlclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbdmFsdWVdPVwiKGludGVydmFsJCB8IGFzeW5jKT8uZW5kXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHZhbHVlVXBkYXRlZCk9XCJvbkVuZENoYW5nZWQoJGV2ZW50KVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtyZXF1aXJlZF09XCJyZXF1aXJlZFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtyZWFkb25seV09XCJyZWFkb25seVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtkaXNhYmxlZF09XCJkaXNhYmxlZFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtwbGFjZWhvbGRlcl09XCIocGxhY2Vob2xkZXIgfHwgJycpICsgJyAnICsgKCdpbnRlcnZhbC50bycgfCB0cmFuc2xhdGUpXCJcbiAgICAgID48L2VsZGVyLWRhdGUtdGltZS1pbnB1dD5cbiAgICA8L2Rpdj5cbiAgfVxuICBAY2FzZSAoJ2RheS10aW1lLXJhbmdlJykge1xuICAgIDxkaXYgY2xhc3M9XCJsYXlvdXQtcm93IGdhcC14cyBlbGRlci1mbGV4LWludGVydmFsLWNvbnRyb2xcIj5cblxuICAgICAgPCEtLSAgW25hbWVdPVwibmFtZSArICctZGF5LXN0YXJ0J1wiIC0tPlxuICAgICAgPGVsZGVyLWRhdGUtdGltZS1pbnB1dFxuICAgICAgICBbdmFsdWVdPVwiKGludGVydmFsJCB8IGFzeW5jKT8uc3RhcnRcIlxuICAgICAgICAodmFsdWVVcGRhdGVkKT1cIm9uRGF5VGltZVN0YXJ0Q2hhbmdlZCgkZXZlbnQpXCJcbiAgICAgICAgW3JlcXVpcmVkXT1cInJlcXVpcmVkXCJcbiAgICAgICAgW3JlYWRvbmx5XT1cInJlYWRvbmx5XCJcbiAgICAgICAgW2Rpc2FibGVkXT1cImRpc2FibGVkXCJcbiAgICAgICAgW3BsYWNlaG9sZGVyXT1cIihwbGFjZWhvbGRlciB8fCAnJykgKyAnICcgKyAoJ2ludGVydmFsLmZyb20nIHwgdHJhbnNsYXRlKVwiXG4gICAgICA+PC9lbGRlci1kYXRlLXRpbWUtaW5wdXQ+XG5cbiAgICAgIDwhLS0gW25hbWVdPVwibmFtZSArICctZGF5LWVuZCdcIiAtLT5cbiAgICAgIDxlbGRlci1sb2NhbC10aW1lLWlucHV0XG4gICAgICAgIFt2YWx1ZV09XCJlbmRUaW1lJCB8IGFzeW5jXCJcbiAgICAgICAgKHZhbHVlVXBkYXRlZCk9XCJvbkRheVRpbWVFbmRUaW1lQ2hhbmdlZCgkZXZlbnQpXCJcbiAgICAgICAgW3JlcXVpcmVkXT1cInJlcXVpcmVkXCJcbiAgICAgICAgW3JlYWRvbmx5XT1cInJlYWRvbmx5XCJcbiAgICAgICAgW2Rpc2FibGVkXT1cImRpc2FibGVkXCJcbiAgICAgICAgW3BsYWNlaG9sZGVyXT1cIihwbGFjZWhvbGRlciB8fCAnJykgKyAnICcgKyAoJ2ludGVydmFsLnRvJyB8IHRyYW5zbGF0ZSlcIlxuICAgICAgPjwvZWxkZXItbG9jYWwtdGltZS1pbnB1dD5cbiAgICA8L2Rpdj5cbiAgfVxuXG4gIEBjYXNlICgnZGF0ZS1yYW5nZScpIHtcbiAgICA8ZGl2IGNsYXNzPVwibGF5b3V0LXJvdyBnYXAteHMgZWxkZXItZmxleC1pbnRlcnZhbC1jb250cm9sXCI+XG4gICAgICAgIDxtYXQtZGF0ZS1yYW5nZS1pbnB1dFxuICAgICAgICAgIGNsYXNzPVwibWRjLXRleHQtZmllbGRfX2lucHV0XCJcbiAgICAgICAgICBbcmFuZ2VQaWNrZXJdPVwicGlja2VyXCJcbiAgICAgICAgICBbZGlzYWJsZWRdPVwiISFkaXNhYmxlZFwiXG4gICAgICAgID5cbiAgICAgICAgICA8aW5wdXQgbWF0U3RhcnREYXRlXG4gICAgICAgICAgICAgICAgW3BsYWNlaG9sZGVyXT1cImRhdGVmb3JtYXRcIlxuICAgICAgICAgICAgICAgIFtuZ01vZGVsXT1cInN0YXJ0RGF0ZSQgfCBhc3luY1wiIG5hbWU9XCJkYXRlLXJhbmdlLnN0YXJ0XCJcbiAgICAgICAgICAgICAgICBbbmdNb2RlbE9wdGlvbnNdPVwieyBzdGFuZGFsb25lOiB0cnVlLCB1cGRhdGVPbjogJ2JsdXInfVwiXG4gICAgICAgICAgICAgICAgKG5nTW9kZWxDaGFuZ2UpPVwib25TdGFydERhdGVDaGFuZ2VkKCRldmVudClcIlxuICAgICAgICAgICAgICAgIFtyZWFkb25seV09XCJyZWFkb25seVwiXG4gICAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cIiEhZGlzYWJsZWRcIlxuICAgICAgICAgID5cbiAgICAgICAgICA8aW5wdXQgbWF0RW5kRGF0ZVxuICAgICAgICAgICAgICAgIFtwbGFjZWhvbGRlcl09XCJkYXRlZm9ybWF0XCJcbiAgICAgICAgICAgICAgICBbbmdNb2RlbF09XCJlbmREYXRlJCB8IGFzeW5jXCIgbmFtZT1cImRhdGUtcmFuZ2UuZW5kXCJcbiAgICAgICAgICAgICAgICBbbmdNb2RlbE9wdGlvbnNdPVwieyBzdGFuZGFsb25lOiB0cnVlLCB1cGRhdGVPbjogJ2JsdXInfVwiXG4gICAgICAgICAgICAgICAgKG5nTW9kZWxDaGFuZ2UpPVwib25FbmREYXRlQ2hhbmdlZCgkZXZlbnQpXCJcbiAgICAgICAgICAgICAgICBbcmVhZG9ubHldPVwicmVhZG9ubHlcIlxuICAgICAgICAgICAgICAgIFtkaXNhYmxlZF09XCIhIWRpc2FibGVkXCJcbiAgICAgICAgICA+XG4gICAgICAgIDwvbWF0LWRhdGUtcmFuZ2UtaW5wdXQ+XG5cbiAgICAgICAgQGlmKCFpc0RlZmF1bHREYXRlUGlja2VyRGlzYWJsZWQpe1xuICAgICAgICAgIDxtYXQtZGF0ZXBpY2tlci10b2dnbGUgY2xhc3M9XCJlbGRlci1jb250cm9sLWljb24tYnV0dG9uXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cImlzTG9ja2VkXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2Zvcl09XCJwaWNrZXJcIj5cbiAgICAgICAgICAgIDxtYXQtaWNvbiBtYXREYXRlcGlja2VyVG9nZ2xlSWNvbj5jYWxlbmRhcl9tb250aDwvbWF0LWljb24+XG4gICAgICAgICAgPC9tYXQtZGF0ZXBpY2tlci10b2dnbGU+XG4gICAgICAgIH1cbiAgICAgICAgPG1hdC1kYXRlLXJhbmdlLXBpY2tlciAjcGlja2VyPjwvbWF0LWRhdGUtcmFuZ2UtcGlja2VyPlxuICAgIDwvZGl2PlxuICB9XG5cbiAgQGNhc2UgKCdzaW5nbGUtZGF5Jykge1xuICAgIDxkaXYgY2xhc3M9XCJsYXlvdXQtcm93IGVsZGVyLWZsZXgtY29udHJvbFwiPlxuXG4gICAgICA8IS0tIFtuYW1lXT1cIm5hbWVcIiAtLT5cbiAgICAgIDxlbGRlci1sb2NhbC1kYXRlLWlucHV0IGNsYXNzPVwiZmxleFwiIGNlbnRlclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3ZhbHVlXT1cInN0YXJ0TG9jYWxEYXRlJCB8IGFzeW5jXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICh2YWx1ZVVwZGF0ZWQpPVwib25TaW5nbGVEYXlEYXRlQ2hhbmdlZCgkZXZlbnQpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtyZXF1aXJlZF09XCJyZXF1aXJlZFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbcmVhZG9ubHldPVwicmVhZG9ubHlcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cImRpc2FibGVkXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtwbGFjZWhvbGRlcl09XCIocGxhY2Vob2xkZXIgfHwgJycpXCJcbiAgICAgID48L2VsZGVyLWxvY2FsLWRhdGUtaW5wdXQ+XG4gICAgPC9kaXY+XG4gIH1cbn1cblxuXG5cblxuXG5cbiJdfQ==
@@ -0,0 +1,45 @@
1
+ import { ContentChild, Directive, } from '@angular/core';
2
+ import { ElderIntervalInputComponent } from '../../../components/time/elder-interval-input/elder-interval-input.component';
3
+ import { ElderIntervalPickerToggleComponent } from './elder-interval-picker-toggle/elder-interval-picker-toggle.component';
4
+ import * as i0 from "@angular/core";
5
+ export class ElderIntervalPickerBindingDirective {
6
+ /***************************************************************************
7
+ * *
8
+ * Constructor *
9
+ * *
10
+ **************************************************************************/
11
+ constructor(elementRef, ref, viewContainerRef) {
12
+ this.elementRef = elementRef;
13
+ this.ref = ref;
14
+ this.viewContainerRef = viewContainerRef;
15
+ }
16
+ /***************************************************************************
17
+ * *
18
+ * Life Cycle *
19
+ * *
20
+ **************************************************************************/
21
+ ngAfterContentInit() {
22
+ if (!this.intervalInputComponent || !this.intervalPickerToggleComponent) {
23
+ console.error('ElderIntervalPickerBindingDirective: Both components are required, IntervalInputComponent and IntervalPickerToggleComponent.');
24
+ return;
25
+ }
26
+ this.intervalInputComponent.isDefaultDatePickerDisabled = true;
27
+ this.intervalPickerToggleComponent.registerInputComponent(this.intervalInputComponent);
28
+ }
29
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.2", ngImport: i0, type: ElderIntervalPickerBindingDirective, deps: [{ token: i0.ElementRef }, { token: i0.ChangeDetectorRef }, { token: i0.ViewContainerRef }], target: i0.ɵɵFactoryTarget.Directive }); }
30
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.2.2", type: ElderIntervalPickerBindingDirective, isStandalone: true, selector: "[elderIntervalPickerBinding]", queries: [{ propertyName: "intervalInputComponent", first: true, predicate: ElderIntervalInputComponent, descendants: true }, { propertyName: "intervalPickerToggleComponent", first: true, predicate: ElderIntervalPickerToggleComponent, descendants: true }], ngImport: i0 }); }
31
+ }
32
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.2", ngImport: i0, type: ElderIntervalPickerBindingDirective, decorators: [{
33
+ type: Directive,
34
+ args: [{
35
+ selector: '[elderIntervalPickerBinding]',
36
+ standalone: true,
37
+ }]
38
+ }], ctorParameters: () => [{ type: i0.ElementRef }, { type: i0.ChangeDetectorRef }, { type: i0.ViewContainerRef }], propDecorators: { intervalInputComponent: [{
39
+ type: ContentChild,
40
+ args: [ElderIntervalInputComponent]
41
+ }], intervalPickerToggleComponent: [{
42
+ type: ContentChild,
43
+ args: [ElderIntervalPickerToggleComponent]
44
+ }] } });
45
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZWxkZXItaW50ZXJ2YWwtcGlja2VyLWJpbmRpbmcuZGlyZWN0aXZlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZWxkZXJieXRlL25neC1zdGFydGVyL3NyYy9saWIvY29tcG9uZW50cy90aW1lL2VsZGVyLWludGVydmFsLXBpY2tlci9lbGRlci1pbnRlcnZhbC1waWNrZXItYmluZGluZy5kaXJlY3RpdmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUVMLFlBQVksRUFDWixTQUFTLEdBR1YsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLDJCQUEyQixFQUFFLE1BQU0sOEVBQThFLENBQUM7QUFDM0gsT0FBTyxFQUFFLGtDQUFrQyxFQUFFLE1BQU0sdUVBQXVFLENBQUM7O0FBTTNILE1BQU0sT0FBTyxtQ0FBbUM7SUFZOUM7Ozs7Z0ZBSTRFO0lBRTVFLFlBQ1MsVUFBbUMsRUFDbkMsR0FBc0IsRUFDdEIsZ0JBQWtDO1FBRmxDLGVBQVUsR0FBVixVQUFVLENBQXlCO1FBQ25DLFFBQUcsR0FBSCxHQUFHLENBQW1CO1FBQ3RCLHFCQUFnQixHQUFoQixnQkFBZ0IsQ0FBa0I7SUFDeEMsQ0FBQztJQUVKOzs7O2dGQUk0RTtJQUU1RSxrQkFBa0I7UUFDaEIsSUFBSSxDQUFDLElBQUksQ0FBQyxzQkFBc0IsSUFBSSxDQUFDLElBQUksQ0FBQyw2QkFBNkIsRUFBRSxDQUFDO1lBQ3hFLE9BQU8sQ0FBQyxLQUFLLENBQ1gsOEhBQThILENBQy9ILENBQUM7WUFDRixPQUFPO1FBQ1QsQ0FBQztRQUVELElBQUksQ0FBQyxzQkFBc0IsQ0FBQywyQkFBMkIsR0FBRyxJQUFJLENBQUM7UUFFL0QsSUFBSSxDQUFDLDZCQUE2QixDQUFDLHNCQUFzQixDQUN2RCxJQUFJLENBQUMsc0JBQXNCLENBQzVCLENBQUM7SUFDSixDQUFDOzhHQTNDVSxtQ0FBbUM7a0dBQW5DLG1DQUFtQyw0SUFPaEMsMkJBQTJCLGdHQUUzQixrQ0FBa0M7OzJGQVRyQyxtQ0FBbUM7a0JBSi9DLFNBQVM7bUJBQUM7b0JBQ1QsUUFBUSxFQUFFLDhCQUE4QjtvQkFDeEMsVUFBVSxFQUFFLElBQUk7aUJBQ2pCOzhJQVNDLHNCQUFzQjtzQkFEckIsWUFBWTt1QkFBQywyQkFBMkI7Z0JBR3pDLDZCQUE2QjtzQkFENUIsWUFBWTt1QkFBQyxrQ0FBa0MiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBDaGFuZ2VEZXRlY3RvclJlZixcbiAgQ29udGVudENoaWxkLFxuICBEaXJlY3RpdmUsXG4gIEVsZW1lbnRSZWYsXG4gIFZpZXdDb250YWluZXJSZWYsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgRWxkZXJJbnRlcnZhbElucHV0Q29tcG9uZW50IH0gZnJvbSAnLi4vLi4vLi4vY29tcG9uZW50cy90aW1lL2VsZGVyLWludGVydmFsLWlucHV0L2VsZGVyLWludGVydmFsLWlucHV0LmNvbXBvbmVudCc7XG5pbXBvcnQgeyBFbGRlckludGVydmFsUGlja2VyVG9nZ2xlQ29tcG9uZW50IH0gZnJvbSAnLi9lbGRlci1pbnRlcnZhbC1waWNrZXItdG9nZ2xlL2VsZGVyLWludGVydmFsLXBpY2tlci10b2dnbGUuY29tcG9uZW50JztcblxuQERpcmVjdGl2ZSh7XG4gIHNlbGVjdG9yOiAnW2VsZGVySW50ZXJ2YWxQaWNrZXJCaW5kaW5nXScsXG4gIHN0YW5kYWxvbmU6IHRydWUsXG59KVxuZXhwb3J0IGNsYXNzIEVsZGVySW50ZXJ2YWxQaWNrZXJCaW5kaW5nRGlyZWN0aXZlIHtcbiAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxuICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqXG4gICAqIEZpZWxkcyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpcbiAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKlxuICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXG5cbiAgQENvbnRlbnRDaGlsZChFbGRlckludGVydmFsSW5wdXRDb21wb25lbnQpXG4gIGludGVydmFsSW5wdXRDb21wb25lbnQ6IEVsZGVySW50ZXJ2YWxJbnB1dENvbXBvbmVudDtcbiAgQENvbnRlbnRDaGlsZChFbGRlckludGVydmFsUGlja2VyVG9nZ2xlQ29tcG9uZW50KVxuICBpbnRlcnZhbFBpY2tlclRvZ2dsZUNvbXBvbmVudDogRWxkZXJJbnRlcnZhbFBpY2tlclRvZ2dsZUNvbXBvbmVudDtcblxuICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXG4gICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpcbiAgICogQ29uc3RydWN0b3IgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKlxuICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqXG4gICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi9cblxuICBjb25zdHJ1Y3RvcihcbiAgICBwdWJsaWMgZWxlbWVudFJlZjogRWxlbWVudFJlZjxIVE1MRWxlbWVudD4sXG4gICAgcHVibGljIHJlZjogQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gICAgcHVibGljIHZpZXdDb250YWluZXJSZWY6IFZpZXdDb250YWluZXJSZWZcbiAgKSB7fVxuXG4gIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcbiAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKlxuICAgKiBMaWZlIEN5Y2xlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqXG4gICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpcbiAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xuXG4gIG5nQWZ0ZXJDb250ZW50SW5pdCgpIHtcbiAgICBpZiAoIXRoaXMuaW50ZXJ2YWxJbnB1dENvbXBvbmVudCB8fCAhdGhpcy5pbnRlcnZhbFBpY2tlclRvZ2dsZUNvbXBvbmVudCkge1xuICAgICAgY29uc29sZS5lcnJvcihcbiAgICAgICAgJ0VsZGVySW50ZXJ2YWxQaWNrZXJCaW5kaW5nRGlyZWN0aXZlOiBCb3RoIGNvbXBvbmVudHMgYXJlIHJlcXVpcmVkLCBJbnRlcnZhbElucHV0Q29tcG9uZW50IGFuZCBJbnRlcnZhbFBpY2tlclRvZ2dsZUNvbXBvbmVudC4nXG4gICAgICApO1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHRoaXMuaW50ZXJ2YWxJbnB1dENvbXBvbmVudC5pc0RlZmF1bHREYXRlUGlja2VyRGlzYWJsZWQgPSB0cnVlO1xuXG4gICAgdGhpcy5pbnRlcnZhbFBpY2tlclRvZ2dsZUNvbXBvbmVudC5yZWdpc3RlcklucHV0Q29tcG9uZW50KFxuICAgICAgdGhpcy5pbnRlcnZhbElucHV0Q29tcG9uZW50XG4gICAgKTtcbiAgfVxufVxuIl19