@progressio_resources/gravity-design-system 3.0.42 → 3.0.44

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.
@@ -1,5 +1,6 @@
1
1
  import { Component, EventEmitter, Input, Output } from '@angular/core';
2
2
  import { CALENDAR_I18N, DAYS_EN, DAYS_ES, MONTHS_EN, MONTHS_ES } from "../../shared/calendar.constants";
3
+ import { toDate, getMonthStart, changeMonth, toCalendarDay, trackByWeek, trackByDay, } from '../../shared/calendar.utils';
3
4
  import * as i0 from "@angular/core";
4
5
  import * as i1 from "@angular/common";
5
6
  import * as i2 from "../../../gravity-button/gravity-button.component";
@@ -9,112 +10,96 @@ import * as i5 from "../../../gravity-dropdown-label/gravity-dropdown-label.comp
9
10
  export class DaysCalendarComponent {
10
11
  constructor() {
11
12
  this.range = false;
13
+ this.restart = false;
12
14
  this.disabled = false;
13
15
  this.language = 'en';
14
16
  this.actionsSection = true;
15
17
  this.navType = 'both';
16
- this.clearAction = new EventEmitter();
17
- this.applyAction = new EventEmitter();
18
+ this.clearSelectionDate = new EventEmitter();
18
19
  this.calendarResponse = new EventEmitter();
20
+ this.trackByDay = trackByDay;
21
+ this.trackByWeek = trackByWeek;
22
+ this.changeMonth = changeMonth;
19
23
  this.currentDate = new Date();
20
24
  this.hoveredDay = null;
21
25
  this.selectedDay = null;
22
26
  this.selectedRangeEnd = null;
23
27
  this.selectedRangeStart = null;
24
28
  }
25
- get i18n() {
26
- return CALENDAR_I18N[this.language];
27
- }
28
- get daysList() {
29
- return this.language === 'en' ? DAYS_EN : DAYS_ES;
30
- }
31
- get monthsList() {
32
- return this.language === 'en' ? MONTHS_EN : MONTHS_ES;
33
- }
34
- trackByWeek(index, _) {
35
- return index;
36
- }
37
- trackByDay(_, day) {
38
- return `${day.year}-${day.month}-${day.day}`;
39
- }
29
+ get i18n() { return CALENDAR_I18N[this.language]; }
30
+ get daysList() { return this.language === 'en' ? DAYS_EN : DAYS_ES; }
31
+ get monthsList() { return this.language === 'en' ? MONTHS_EN : MONTHS_ES; }
40
32
  ngOnChanges(changes) {
41
- if (changes['preSelectedDate'] && this.preSelectedDate instanceof Date) {
42
- this.selectedDay = {
43
- inCurrentMonth: true,
44
- isToday: false,
45
- day: this.preSelectedDate.getDate(),
46
- month: this.preSelectedDate.getMonth() - 1,
47
- year: this.preSelectedDate.getFullYear(),
48
- };
49
- this.currentDate = new Date(this.preSelectedDate.getFullYear(), this.preSelectedDate.getMonth() - 1, 1);
33
+ const shouldRestart = changes['restart'] && this.restart;
34
+ const shouldProcessPreSelected = changes['preSelectedDate'] && this.preSelectedDate;
35
+ if (shouldRestart || shouldProcessPreSelected) {
36
+ this.processPreselectedDate();
50
37
  }
51
38
  }
52
- applySelectedDate() {
53
- if (!this.range) {
54
- this.applyAction.emit(new Date(this.selectedDay.year, this.selectedDay.month + 1, this.selectedDay.day));
39
+ processPreselectedDate() {
40
+ if (this.range && Array.isArray(this.preSelectedDate)) {
41
+ const [start, end] = this.preSelectedDate;
42
+ if (start instanceof Date) {
43
+ this.selectedRangeStart = toCalendarDay(start);
44
+ this.currentDate = getMonthStart(start);
45
+ }
46
+ if (end instanceof Date) {
47
+ this.selectedRangeEnd = toCalendarDay(end);
48
+ }
49
+ }
50
+ else if (this.preSelectedDate instanceof Date) {
51
+ this.selectedDay = toCalendarDay(this.preSelectedDate);
52
+ this.currentDate = getMonthStart(this.preSelectedDate);
55
53
  }
56
54
  }
57
55
  isDateSelected() {
58
- if (!this.range && this.selectedDay) {
59
- return true;
56
+ if (!this.range) {
57
+ return !!this.selectedDay;
58
+ }
59
+ else {
60
+ return !!this.selectedRangeStart && !!this.selectedRangeEnd;
60
61
  }
61
- return this.selectedRangeEnd;
62
- }
63
- clearSelectedDate() {
64
- this.clearAction.emit();
65
- this.selectedDay = null;
66
- this.selectedRangeEnd = null;
67
- this.selectedRangeStart = null;
68
62
  }
69
63
  isPreview(day) {
70
64
  if (!this.selectedRangeStart || this.selectedRangeEnd || !this.hoveredDay) {
71
65
  return false;
72
66
  }
73
- const current = new Date(day.year, day.month, day.day);
74
- const hover = new Date(this.hoveredDay.year, this.hoveredDay.month, this.hoveredDay.day);
75
- const start = new Date(this.selectedRangeStart.year, this.selectedRangeStart.month, this.selectedRangeStart.day);
76
- if (hover <= start)
67
+ const current = toDate(day);
68
+ const hover = toDate(this.hoveredDay);
69
+ const start = toDate(this.selectedRangeStart);
70
+ if (hover <= start) {
77
71
  return false;
78
- return current > start && current <= hover;
79
- }
80
- onHoverDay(day) {
81
- if (this.selectedRangeEnd) {
82
- return;
83
72
  }
84
- this.hoveredDay = day;
85
- }
86
- clearHover() {
87
- this.hoveredDay = null;
73
+ return current > start && current <= hover;
88
74
  }
89
75
  getDaySelectionClass(day) {
90
76
  if (!day.inCurrentMonth)
91
77
  return 'disabled';
92
- if (!this.range) {
93
- if (this.selectedDay &&
94
- day.day === this.selectedDay.day &&
95
- day.month === this.selectedDay.month &&
96
- day.year === this.selectedDay.year) {
97
- return 'sl single';
98
- }
99
- return '';
78
+ return this.range ? this.getRangeSelectionClass(day) : this.getSingleDaySelectionClass(day);
79
+ }
80
+ getSingleDaySelectionClass(day) {
81
+ if (this.selectedDay && day.day === this.selectedDay.day &&
82
+ day.month === this.selectedDay.month && day.year === this.selectedDay.year) {
83
+ return 'sl single';
100
84
  }
85
+ return '';
86
+ }
87
+ getRangeSelectionClass(day) {
101
88
  if (!this.selectedRangeStart)
102
89
  return 'nsl-start';
103
- const current = new Date(day.year, day.month, day.day);
104
- const start = new Date(this.selectedRangeStart.year, this.selectedRangeStart.month, this.selectedRangeStart.day);
90
+ const current = toDate(day);
91
+ const start = toDate(this.selectedRangeStart);
105
92
  if (!this.selectedRangeEnd) {
106
- if (current.getTime() === start.getTime()) {
93
+ if (current.getTime() === start.getTime())
107
94
  return 'sl start';
108
- }
109
95
  if (this.hoveredDay) {
110
- const hover = new Date(this.hoveredDay.year, this.hoveredDay.month, this.hoveredDay.day);
111
- if (current.getTime() === hover.getTime() && hover < start) {
96
+ const hover = toDate(this.hoveredDay);
97
+ if (current.getTime() === hover.getTime() && hover < start)
112
98
  return 'nsl-start';
113
- }
114
99
  }
115
100
  return 'nsl-end';
116
101
  }
117
- const end = new Date(this.selectedRangeEnd.year, this.selectedRangeEnd.month, this.selectedRangeEnd.day);
102
+ const end = toDate(this.selectedRangeEnd);
118
103
  if (current.getTime() === start.getTime())
119
104
  return 'sl start';
120
105
  if (current.getTime() === end.getTime())
@@ -123,12 +108,36 @@ export class DaysCalendarComponent {
123
108
  return 'sl range';
124
109
  return 'nsl-start';
125
110
  }
111
+ applySelectedDate() {
112
+ if (!this.range && this.selectedDay) {
113
+ const date = toDate(this.selectedDay);
114
+ this.calendarResponse.emit(date);
115
+ }
116
+ else if (this.range && this.selectedRangeStart && this.selectedRangeEnd) {
117
+ const start = toDate(this.selectedRangeStart);
118
+ const end = toDate(this.selectedRangeEnd);
119
+ this.calendarResponse.emit([start, end]);
120
+ }
121
+ }
122
+ clearSelectedDate() {
123
+ this.selectedDay = null;
124
+ this.selectedRangeEnd = null;
125
+ this.selectedRangeStart = null;
126
+ this.clearSelectionDate.emit();
127
+ }
128
+ onHoverDay(day) {
129
+ if (this.selectedRangeEnd) {
130
+ return;
131
+ }
132
+ this.hoveredDay = day;
133
+ }
134
+ clearHover() { this.hoveredDay = null; }
126
135
  onSelectDay(day) {
127
136
  if (!day.inCurrentMonth)
128
137
  return;
129
138
  if (!this.range) {
130
139
  this.selectedDay = day;
131
- const currentDate = new Date(day.year, day.month + 1, day.day);
140
+ const currentDate = toDate(day);
132
141
  this.calendarResponse.emit(currentDate);
133
142
  return;
134
143
  }
@@ -137,16 +146,11 @@ export class DaysCalendarComponent {
137
146
  this.selectedRangeEnd = null;
138
147
  }
139
148
  else {
140
- const startDate = new Date(this.selectedRangeStart.year, this.selectedRangeStart.month, this.selectedRangeStart.day);
141
- const selectedDate = new Date(day.year, day.month, day.day);
149
+ const selectedDate = toDate(day);
150
+ const startDate = toDate(this.selectedRangeStart);
142
151
  selectedDate >= startDate ? this.selectedRangeEnd = day : this.selectedRangeStart = day;
143
152
  }
144
153
  }
145
- changeMonth(offset) {
146
- const month = this.currentDate.getMonth();
147
- const year = this.currentDate.getFullYear();
148
- this.currentDate = new Date(year, month + offset, 1);
149
- }
150
154
  getMonthGrid() {
151
155
  let week = [];
152
156
  const today = new Date();
@@ -184,29 +188,29 @@ export class DaysCalendarComponent {
184
188
  return grid;
185
189
  }
186
190
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: DaysCalendarComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
187
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: DaysCalendarComponent, selector: "days-calendar", inputs: { preSelectedDate: "preSelectedDate", range: "range", disabled: "disabled", language: "language", actionsSection: "actionsSection", navType: "navType" }, outputs: { clearAction: "clearAction", applyAction: "applyAction", calendarResponse: "response" }, usesOnChanges: true, ngImport: i0, template: "<section class=\"gravity-calendar-header\">\n <div class=\"previous-button\">\n <gravity-icon *ngIf=\"!(navType === 'next')\" [style.--icon-color]=\"'var(--text-highlight-primary)'\" [iconName]=\"'arrow-left'\"\n [iconSize]=\"'sm-12'\" (click)=\"changeMonth(-1)\" ></gravity-icon> </div>\n\n <gravity-dropdown-label [fontClass]=\"'hr-title sm-bold'\" [size]=\"'sm'\"\n\n [label]=\"monthsList[currentDate.getMonth()]\"></gravity-dropdown-label>\n <gravity-dropdown-label [fontClass]=\"'hr-title sm-bold'\"\n\n [size]=\"'sm'\" [label]=\"currentDate.getFullYear().toString()\"></gravity-dropdown-label>\n <div class=\"next-button\">\n <gravity-icon *ngIf=\"!(navType === 'prev')\" [style.--icon-color]=\"'var(--text-highlight-primary)'\" [iconName]=\"'arrow-right'\"\n [iconSize]=\"'sm-12'\" (click)=\"changeMonth(1)\"></gravity-icon> </div>\n</section>\n\n<section class=\"gravity-calendar-body\">\n <section class=\"days-name-line\">\n <div class=\"days-name\">\n <span class=\"hr-body sm-regular\" *ngFor=\"let day of daysList\">{{day}}</span>\n </div>\n <div class=\"separator-line\"></div>\n </section>\n\n <section class=\"days-number-selector\">\n <div class=\"days-number-table\">\n <div class=\"week-row\" *ngFor=\"let week of getMonthGrid(); trackBy: trackByWeek\">\n <span class=\"hr-body sm-regular\" *ngFor=\"let d of week; trackBy: trackByDay\"\n [ngClass]=\"disabled ? 'disabled' : getDaySelectionClass(d)\"\n [class.disabled]=\"!d.inCurrentMonth\" [class.today]=\"d.isToday\" [class.preview]=\"range ? isPreview(d) : null\"\n (click)=\"onSelectDay(d)\" (mouseenter)=\"range ? onHoverDay(d) : null\" (mouseleave)=\"range ? clearHover() : null\">\n {{ d.day }}\n </span>\n </div>\n </div>\n\n <div class=\"action-section\">\n <gravity-link *ngIf=\"actionsSection\" [linkText]=\"i18n.clear\" [state]=\"!isDateSelected() ? 'disabled' : 'active'\" (click)=\"clearSelectedDate()\"></gravity-link>\n <gravity-button *ngIf=\"actionsSection\" [size]=\"'sm'\" [type]=\"'tertiary'\" [disabled]=\"!isDateSelected()\" (click)=\"applySelectedDate()\">{{i18n.apply}}</gravity-button>\n </div>\n </section>\n</section>\n", styles: [":root{--gravity-spacing-none: 0;--gravity-spacing-xxs: .25rem;--gravity-spacing-xs: .5rem;--gravity-spacing-sm: 1rem;--gravity-spacing-md: 1.5rem;--gravity-spacing-lg: 2rem;--gravity-spacing-xl: 2.5rem;--gravity-spacing-xxl: 3rem;--gravity-spacing-xxxl: 4rem;--gravity-spacing-xxxxl: 6rem;--gravity-spacing-xxxxxl: 12rem}.gravity-padding-none{padding:0!important}.gravity-padding-top-none{padding-top:0!important}.gravity-padding-bottom-none{padding-bottom:0!important}.gravity-padding-left-none{padding-left:0!important}.gravity-padding-right-none{padding-right:0!important}.gravity-padding-block-none{padding-block:0!important}.gravity-padding-inline-none{padding-inline:0!important}.gravity-padding-xxs{padding:.25rem!important}.gravity-padding-top-xxs{padding-top:.25rem!important}.gravity-padding-bottom-xxs{padding-bottom:.25rem!important}.gravity-padding-left-xxs{padding-left:.25rem!important}.gravity-padding-right-xxs{padding-right:.25rem!important}.gravity-padding-block-xxs{padding-block:.25rem!important}.gravity-padding-inline-xxs{padding-inline:.25rem!important}.gravity-padding-xs{padding:.5rem!important}.gravity-padding-top-xs{padding-top:.5rem!important}.gravity-padding-bottom-xs{padding-bottom:.5rem!important}.gravity-padding-left-xs{padding-left:.5rem!important}.gravity-padding-right-xs{padding-right:.5rem!important}.gravity-padding-block-xs{padding-block:.5rem!important}.gravity-padding-inline-xs{padding-inline:.5rem!important}.gravity-padding-sm{padding:1rem!important}.gravity-padding-top-sm{padding-top:1rem!important}.gravity-padding-bottom-sm{padding-bottom:1rem!important}.gravity-padding-left-sm{padding-left:1rem!important}.gravity-padding-right-sm{padding-right:1rem!important}.gravity-padding-block-sm{padding-block:1rem!important}.gravity-padding-inline-sm{padding-inline:1rem!important}.gravity-padding-md{padding:1.5rem!important}.gravity-padding-top-md{padding-top:1.5rem!important}.gravity-padding-bottom-md{padding-bottom:1.5rem!important}.gravity-padding-left-md{padding-left:1.5rem!important}.gravity-padding-right-md{padding-right:1.5rem!important}.gravity-padding-block-md{padding-block:1.5rem!important}.gravity-padding-inline-md{padding-inline:1.5rem!important}.gravity-padding-lg{padding:2rem!important}.gravity-padding-top-lg{padding-top:2rem!important}.gravity-padding-bottom-lg{padding-bottom:2rem!important}.gravity-padding-left-lg{padding-left:2rem!important}.gravity-padding-right-lg{padding-right:2rem!important}.gravity-padding-block-lg{padding-block:2rem!important}.gravity-padding-inline-lg{padding-inline:2rem!important}.gravity-padding-xl{padding:2.5rem!important}.gravity-padding-top-xl{padding-top:2.5rem!important}.gravity-padding-bottom-xl{padding-bottom:2.5rem!important}.gravity-padding-left-xl{padding-left:2.5rem!important}.gravity-padding-right-xl{padding-right:2.5rem!important}.gravity-padding-block-xl{padding-block:2.5rem!important}.gravity-padding-inline-xl{padding-inline:2.5rem!important}.gravity-padding-xxl{padding:3rem!important}.gravity-padding-top-xxl{padding-top:3rem!important}.gravity-padding-bottom-xxl{padding-bottom:3rem!important}.gravity-padding-left-xxl{padding-left:3rem!important}.gravity-padding-right-xxl{padding-right:3rem!important}.gravity-padding-block-xxl{padding-block:3rem!important}.gravity-padding-inline-xxl{padding-inline:3rem!important}.gravity-padding-xxxl{padding:4rem!important}.gravity-padding-top-xxxl{padding-top:4rem!important}.gravity-padding-bottom-xxxl{padding-bottom:4rem!important}.gravity-padding-left-xxxl{padding-left:4rem!important}.gravity-padding-right-xxxl{padding-right:4rem!important}.gravity-padding-block-xxxl{padding-block:4rem!important}.gravity-padding-inline-xxxl{padding-inline:4rem!important}.gravity-padding-xxxxl{padding:6rem!important}.gravity-padding-top-xxxxl{padding-top:6rem!important}.gravity-padding-bottom-xxxxl{padding-bottom:6rem!important}.gravity-padding-left-xxxxl{padding-left:6rem!important}.gravity-padding-right-xxxxl{padding-right:6rem!important}.gravity-padding-block-xxxxl{padding-block:6rem!important}.gravity-padding-inline-xxxxl{padding-inline:6rem!important}.gravity-padding-xxxxxl{padding:12rem!important}.gravity-padding-top-xxxxxl{padding-top:12rem!important}.gravity-padding-bottom-xxxxxl{padding-bottom:12rem!important}.gravity-padding-left-xxxxxl{padding-left:12rem!important}.gravity-padding-right-xxxxxl{padding-right:12rem!important}.gravity-padding-block-xxxxxl{padding-block:12rem!important}.gravity-padding-inline-xxxxxl{padding-inline:12rem!important}.gravity-margin-none{margin:0!important}.gravity-margin-top-none{margin-top:0!important}.gravity-margin-bottom-none{margin-bottom:0!important}.gravity-margin-left-none{margin-left:0!important}.gravity-margin-right-none{margin-right:0!important}.gravity-margin-block-none{margin-block:0!important}.gravity-margin-inline-none{margin-inline:0!important}.gravity-margin-xxs{margin:.25rem!important}.gravity-margin-top-xxs{margin-top:.25rem!important}.gravity-margin-bottom-xxs{margin-bottom:.25rem!important}.gravity-margin-left-xxs{margin-left:.25rem!important}.gravity-margin-right-xxs{margin-right:.25rem!important}.gravity-margin-block-xxs{margin-block:.25rem!important}.gravity-margin-inline-xxs{margin-inline:.25rem!important}.gravity-margin-xs{margin:.5rem!important}.gravity-margin-top-xs{margin-top:.5rem!important}.gravity-margin-bottom-xs{margin-bottom:.5rem!important}.gravity-margin-left-xs{margin-left:.5rem!important}.gravity-margin-right-xs{margin-right:.5rem!important}.gravity-margin-block-xs{margin-block:.5rem!important}.gravity-margin-inline-xs{margin-inline:.5rem!important}.gravity-margin-sm{margin:1rem!important}.gravity-margin-top-sm{margin-top:1rem!important}.gravity-margin-bottom-sm{margin-bottom:1rem!important}.gravity-margin-left-sm{margin-left:1rem!important}.gravity-margin-right-sm{margin-right:1rem!important}.gravity-margin-block-sm{margin-block:1rem!important}.gravity-margin-inline-sm{margin-inline:1rem!important}.gravity-margin-md{margin:1.5rem!important}.gravity-margin-top-md{margin-top:1.5rem!important}.gravity-margin-bottom-md{margin-bottom:1.5rem!important}.gravity-margin-left-md{margin-left:1.5rem!important}.gravity-margin-right-md{margin-right:1.5rem!important}.gravity-margin-block-md{margin-block:1.5rem!important}.gravity-margin-inline-md{margin-inline:1.5rem!important}.gravity-margin-lg{margin:2rem!important}.gravity-margin-top-lg{margin-top:2rem!important}.gravity-margin-bottom-lg{margin-bottom:2rem!important}.gravity-margin-left-lg{margin-left:2rem!important}.gravity-margin-right-lg{margin-right:2rem!important}.gravity-margin-block-lg{margin-block:2rem!important}.gravity-margin-inline-lg{margin-inline:2rem!important}.gravity-margin-xl{margin:2.5rem!important}.gravity-margin-top-xl{margin-top:2.5rem!important}.gravity-margin-bottom-xl{margin-bottom:2.5rem!important}.gravity-margin-left-xl{margin-left:2.5rem!important}.gravity-margin-right-xl{margin-right:2.5rem!important}.gravity-margin-block-xl{margin-block:2.5rem!important}.gravity-margin-inline-xl{margin-inline:2.5rem!important}.gravity-margin-xxl{margin:3rem!important}.gravity-margin-top-xxl{margin-top:3rem!important}.gravity-margin-bottom-xxl{margin-bottom:3rem!important}.gravity-margin-left-xxl{margin-left:3rem!important}.gravity-margin-right-xxl{margin-right:3rem!important}.gravity-margin-block-xxl{margin-block:3rem!important}.gravity-margin-inline-xxl{margin-inline:3rem!important}.gravity-margin-xxxl{margin:4rem!important}.gravity-margin-top-xxxl{margin-top:4rem!important}.gravity-margin-bottom-xxxl{margin-bottom:4rem!important}.gravity-margin-left-xxxl{margin-left:4rem!important}.gravity-margin-right-xxxl{margin-right:4rem!important}.gravity-margin-block-xxxl{margin-block:4rem!important}.gravity-margin-inline-xxxl{margin-inline:4rem!important}.gravity-margin-xxxxl{margin:6rem!important}.gravity-margin-top-xxxxl{margin-top:6rem!important}.gravity-margin-bottom-xxxxl{margin-bottom:6rem!important}.gravity-margin-left-xxxxl{margin-left:6rem!important}.gravity-margin-right-xxxxl{margin-right:6rem!important}.gravity-margin-block-xxxxl{margin-block:6rem!important}.gravity-margin-inline-xxxxl{margin-inline:6rem!important}.gravity-margin-xxxxxl{margin:12rem!important}.gravity-margin-top-xxxxxl{margin-top:12rem!important}.gravity-margin-bottom-xxxxxl{margin-bottom:12rem!important}.gravity-margin-left-xxxxxl{margin-left:12rem!important}.gravity-margin-right-xxxxxl{margin-right:12rem!important}.gravity-margin-block-xxxxxl{margin-block:12rem!important}.gravity-margin-inline-xxxxxl{margin-inline:12rem!important}.border-radius-none{border-radius:0}.border-radius-xs{border-radius:.0625rem}.border-radius-sm{border-radius:.3125rem}.border-radius-md{border-radius:.625rem}.border-radius-lg{border-radius:.9375rem}.border-radius-xl{border-radius:1.25rem}.border-radius-xxl{border-radius:2rem}.border-radius-rounded{border-radius:6.25rem}.gravity-calendar-header{width:248px;display:flex;align-items:center;align-self:stretch;justify-content:center;gap:var(--gravity-spacing-sm)}.gravity-calendar-header .next-button,.gravity-calendar-header .previous-button{cursor:pointer;margin:var(--gravity-spacing-xs)}.gravity-calendar-body{width:248px;display:flex;align-items:center;align-self:stretch;flex-direction:column;justify-content:center}.gravity-calendar-body .days-name-line{display:flex;align-items:center;align-self:stretch;flex-direction:column;justify-content:center;gap:var(--gravity-spacing-xs);padding-bottom:var(--gravity-spacing-xs)}.gravity-calendar-body .days-name-line .days-name{display:flex;align-items:center;align-self:stretch;justify-content:space-between}.gravity-calendar-body .days-name-line .days-name span{display:flex;cursor:default;align-items:center;justify-content:center;padding:var(--gravity-spacing-xs);color:var(--text-highlight-primary)}.gravity-calendar-body .days-name-line .separator-line{width:248px;border-bottom:2px solid var(--divider-menu-active-primary)}.gravity-calendar-body .days-number-selector{display:flex;align-items:center;align-self:stretch;flex-direction:column;justify-content:center;gap:var(--gravity-spacing-sm)}.gravity-calendar-body .days-number-selector .days-number-table{display:flex;min-height:150px;align-items:center;align-self:stretch;flex-direction:column;justify-content:flex-start}.gravity-calendar-body .days-number-selector .days-number-table .week-row{height:25px;display:flex;align-items:center;align-self:stretch}.gravity-calendar-body .days-number-selector .days-number-table .week-row span{gap:10px;flex:1 0 0;display:flex;cursor:pointer;align-items:center;align-self:stretch;flex-direction:column;justify-content:center;padding:var(--gravity-spacing-xs);border-radius:var(--gravity-spacing-xs);border:2px solid var(--bg-calender-primary)}.gravity-calendar-body .days-number-selector .days-number-table .week-row span:not(.sl).today{border-color:var(--bg-number-calendar-hover-primary)}.gravity-calendar-body .days-number-selector .days-number-table .week-row span:not(.disabled):not(.sl):hover{color:var(--on-bg-button-pressed-tertiary);background:var(--bg-button-active-tertiary);border-color:var(--bg-button-active-tertiary)}.gravity-calendar-body .days-number-selector .days-number-table .week-row span.single,.gravity-calendar-body .days-number-selector .days-number-table .week-row span.start,.gravity-calendar-body .days-number-selector .days-number-table .week-row span.end{color:var(--on-bg-button-pressed-primary);background:var(--bg-button-pressed-primary);border-color:var(--bg-button-pressed-primary)}.gravity-calendar-body .days-number-selector .days-number-table .week-row span.range,.gravity-calendar-body .days-number-selector .days-number-table .week-row span:not(.disabled).preview{border-radius:0;background:var(--bg-button-active-tertiary);border-color:var(--bg-button-active-tertiary)}.gravity-calendar-body .days-number-selector .days-number-table .week-row span.start,.gravity-calendar-body .days-number-selector .days-number-table .week-row span.nsl-start:hover{border-radius:var(--gravity-spacing-xs) 0 0 var(--gravity-spacing-xs)}.gravity-calendar-body .days-number-selector .days-number-table .week-row span.end,.gravity-calendar-body .days-number-selector .days-number-table .week-row span.nsl-end:hover{border-radius:0 var(--gravity-spacing-xs) var(--gravity-spacing-xs) 0}.gravity-calendar-body .days-number-selector .days-number-table .week-row span.nsl-end:hover{border-color:var(--bg-button-pressed-primary)!important}.gravity-calendar-body .days-number-selector .days-number-table .week-row span.disabled{cursor:default;pointer-events:none;color:var(--on-bg-disabled)}.gravity-calendar-body .days-number-selector .action-section{height:25px;display:flex;align-items:center;align-self:stretch;justify-content:space-between}\n"], dependencies: [{ kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i2.GravityButtonComponent, selector: "gravity-button", inputs: ["cypressTag", "disabled", "customState", "iconPosition", "iconName", "isLoading", "showContent", "size", "type"] }, { kind: "component", type: i3.GravityIconComponent, selector: "gravity-icon", inputs: ["customIconColorVariable", "iconName", "iconSize", "hoverIcon", "size", "isCoin"] }, { kind: "component", type: i4.GravityLinkComponent, selector: "gravity-link", inputs: ["linkText", "fontClass", "link", "cypressTag", "iconName", "target", "iconPosition", "iconSize", "state"] }, { kind: "component", type: i5.GravityDropdownLabelComponent, selector: "gravity-dropdown-label", inputs: ["label", "fontClass", "isOpen", "stopPropagation", "size"], outputs: ["onClickLabel"] }] }); }
191
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: DaysCalendarComponent, selector: "days-calendar", inputs: { range: "range", restart: "restart", disabled: "disabled", language: "language", preSelectedDate: "preSelectedDate", actionsSection: "actionsSection", navType: "navType" }, outputs: { clearSelectionDate: "clearSelectionDate", calendarResponse: "response" }, usesOnChanges: true, ngImport: i0, template: "<section class=\"gravity-calendar-header\">\n <div class=\"previous-button\">\n <gravity-icon *ngIf=\"!(navType === 'next')\" [style.--icon-color]=\"'var(--text-highlight-primary)'\" [iconName]=\"'arrow-left'\"\n [iconSize]=\"'sm-12'\" (click)=\"currentDate = changeMonth(-1, currentDate)\" ></gravity-icon>\n </div>\n\n <div class=\"month-year-label\">\n <gravity-dropdown-label [fontClass]=\"'hr-title sm-bold'\" [size]=\"'sm'\" [label]=\"monthsList[currentDate.getMonth()]\"></gravity-dropdown-label>\n <gravity-dropdown-label [fontClass]=\"'hr-title sm-bold'\" [size]=\"'sm'\" [label]=\"currentDate.getFullYear().toString()\"></gravity-dropdown-label>\n </div>\n\n <div class=\"next-button\">\n <gravity-icon *ngIf=\"!(navType === 'prev')\" [style.--icon-color]=\"'var(--text-highlight-primary)'\" [iconName]=\"'arrow-right'\"\n [iconSize]=\"'sm-12'\" (click)=\"currentDate = changeMonth(1, currentDate)\"></gravity-icon>\n </div>\n</section>\n\n<section class=\"gravity-calendar-body\">\n <section class=\"days-name-line\">\n <div class=\"days-name\">\n <span class=\"hr-body sm-regular\" *ngFor=\"let day of daysList\">{{day}}</span>\n </div>\n <div class=\"separator-line\"></div>\n </section>\n\n <section class=\"days-number-selector\">\n <div class=\"days-number-table\">\n <div class=\"week-row\" *ngFor=\"let week of getMonthGrid(); trackBy: trackByWeek\">\n <span class=\"hr-body sm-regular\" *ngFor=\"let d of week; trackBy: trackByDay\"\n [ngClass]=\"disabled ? 'disabled' : getDaySelectionClass(d)\"\n [class.disabled]=\"!d.inCurrentMonth\" [class.today]=\"d.isToday\" [class.preview]=\"range ? isPreview(d) : null\"\n (click)=\"onSelectDay(d)\" (mouseenter)=\"range ? onHoverDay(d) : null\" (mouseleave)=\"range ? clearHover() : null\">\n {{ d.day }}\n </span>\n </div>\n </div>\n\n <div class=\"action-section\">\n <gravity-link *ngIf=\"actionsSection\" [linkText]=\"i18n.clear\" [state]=\"!isDateSelected() ? 'disabled' : 'active'\" (click)=\"clearSelectedDate()\"></gravity-link>\n <gravity-button *ngIf=\"actionsSection\" [size]=\"'sm'\" [type]=\"'tertiary'\" [disabled]=\"!isDateSelected()\" (click)=\"applySelectedDate()\">{{i18n.apply}}</gravity-button>\n </div>\n </section>\n</section>\n", styles: [":root{--gravity-spacing-none: 0;--gravity-spacing-xxs: .25rem;--gravity-spacing-xs: .5rem;--gravity-spacing-sm: 1rem;--gravity-spacing-md: 1.5rem;--gravity-spacing-lg: 2rem;--gravity-spacing-xl: 2.5rem;--gravity-spacing-xxl: 3rem;--gravity-spacing-xxxl: 4rem;--gravity-spacing-xxxxl: 6rem;--gravity-spacing-xxxxxl: 12rem}.gravity-padding-none{padding:0!important}.gravity-padding-top-none{padding-top:0!important}.gravity-padding-bottom-none{padding-bottom:0!important}.gravity-padding-left-none{padding-left:0!important}.gravity-padding-right-none{padding-right:0!important}.gravity-padding-block-none{padding-block:0!important}.gravity-padding-inline-none{padding-inline:0!important}.gravity-padding-xxs{padding:.25rem!important}.gravity-padding-top-xxs{padding-top:.25rem!important}.gravity-padding-bottom-xxs{padding-bottom:.25rem!important}.gravity-padding-left-xxs{padding-left:.25rem!important}.gravity-padding-right-xxs{padding-right:.25rem!important}.gravity-padding-block-xxs{padding-block:.25rem!important}.gravity-padding-inline-xxs{padding-inline:.25rem!important}.gravity-padding-xs{padding:.5rem!important}.gravity-padding-top-xs{padding-top:.5rem!important}.gravity-padding-bottom-xs{padding-bottom:.5rem!important}.gravity-padding-left-xs{padding-left:.5rem!important}.gravity-padding-right-xs{padding-right:.5rem!important}.gravity-padding-block-xs{padding-block:.5rem!important}.gravity-padding-inline-xs{padding-inline:.5rem!important}.gravity-padding-sm{padding:1rem!important}.gravity-padding-top-sm{padding-top:1rem!important}.gravity-padding-bottom-sm{padding-bottom:1rem!important}.gravity-padding-left-sm{padding-left:1rem!important}.gravity-padding-right-sm{padding-right:1rem!important}.gravity-padding-block-sm{padding-block:1rem!important}.gravity-padding-inline-sm{padding-inline:1rem!important}.gravity-padding-md{padding:1.5rem!important}.gravity-padding-top-md{padding-top:1.5rem!important}.gravity-padding-bottom-md{padding-bottom:1.5rem!important}.gravity-padding-left-md{padding-left:1.5rem!important}.gravity-padding-right-md{padding-right:1.5rem!important}.gravity-padding-block-md{padding-block:1.5rem!important}.gravity-padding-inline-md{padding-inline:1.5rem!important}.gravity-padding-lg{padding:2rem!important}.gravity-padding-top-lg{padding-top:2rem!important}.gravity-padding-bottom-lg{padding-bottom:2rem!important}.gravity-padding-left-lg{padding-left:2rem!important}.gravity-padding-right-lg{padding-right:2rem!important}.gravity-padding-block-lg{padding-block:2rem!important}.gravity-padding-inline-lg{padding-inline:2rem!important}.gravity-padding-xl{padding:2.5rem!important}.gravity-padding-top-xl{padding-top:2.5rem!important}.gravity-padding-bottom-xl{padding-bottom:2.5rem!important}.gravity-padding-left-xl{padding-left:2.5rem!important}.gravity-padding-right-xl{padding-right:2.5rem!important}.gravity-padding-block-xl{padding-block:2.5rem!important}.gravity-padding-inline-xl{padding-inline:2.5rem!important}.gravity-padding-xxl{padding:3rem!important}.gravity-padding-top-xxl{padding-top:3rem!important}.gravity-padding-bottom-xxl{padding-bottom:3rem!important}.gravity-padding-left-xxl{padding-left:3rem!important}.gravity-padding-right-xxl{padding-right:3rem!important}.gravity-padding-block-xxl{padding-block:3rem!important}.gravity-padding-inline-xxl{padding-inline:3rem!important}.gravity-padding-xxxl{padding:4rem!important}.gravity-padding-top-xxxl{padding-top:4rem!important}.gravity-padding-bottom-xxxl{padding-bottom:4rem!important}.gravity-padding-left-xxxl{padding-left:4rem!important}.gravity-padding-right-xxxl{padding-right:4rem!important}.gravity-padding-block-xxxl{padding-block:4rem!important}.gravity-padding-inline-xxxl{padding-inline:4rem!important}.gravity-padding-xxxxl{padding:6rem!important}.gravity-padding-top-xxxxl{padding-top:6rem!important}.gravity-padding-bottom-xxxxl{padding-bottom:6rem!important}.gravity-padding-left-xxxxl{padding-left:6rem!important}.gravity-padding-right-xxxxl{padding-right:6rem!important}.gravity-padding-block-xxxxl{padding-block:6rem!important}.gravity-padding-inline-xxxxl{padding-inline:6rem!important}.gravity-padding-xxxxxl{padding:12rem!important}.gravity-padding-top-xxxxxl{padding-top:12rem!important}.gravity-padding-bottom-xxxxxl{padding-bottom:12rem!important}.gravity-padding-left-xxxxxl{padding-left:12rem!important}.gravity-padding-right-xxxxxl{padding-right:12rem!important}.gravity-padding-block-xxxxxl{padding-block:12rem!important}.gravity-padding-inline-xxxxxl{padding-inline:12rem!important}.gravity-margin-none{margin:0!important}.gravity-margin-top-none{margin-top:0!important}.gravity-margin-bottom-none{margin-bottom:0!important}.gravity-margin-left-none{margin-left:0!important}.gravity-margin-right-none{margin-right:0!important}.gravity-margin-block-none{margin-block:0!important}.gravity-margin-inline-none{margin-inline:0!important}.gravity-margin-xxs{margin:.25rem!important}.gravity-margin-top-xxs{margin-top:.25rem!important}.gravity-margin-bottom-xxs{margin-bottom:.25rem!important}.gravity-margin-left-xxs{margin-left:.25rem!important}.gravity-margin-right-xxs{margin-right:.25rem!important}.gravity-margin-block-xxs{margin-block:.25rem!important}.gravity-margin-inline-xxs{margin-inline:.25rem!important}.gravity-margin-xs{margin:.5rem!important}.gravity-margin-top-xs{margin-top:.5rem!important}.gravity-margin-bottom-xs{margin-bottom:.5rem!important}.gravity-margin-left-xs{margin-left:.5rem!important}.gravity-margin-right-xs{margin-right:.5rem!important}.gravity-margin-block-xs{margin-block:.5rem!important}.gravity-margin-inline-xs{margin-inline:.5rem!important}.gravity-margin-sm{margin:1rem!important}.gravity-margin-top-sm{margin-top:1rem!important}.gravity-margin-bottom-sm{margin-bottom:1rem!important}.gravity-margin-left-sm{margin-left:1rem!important}.gravity-margin-right-sm{margin-right:1rem!important}.gravity-margin-block-sm{margin-block:1rem!important}.gravity-margin-inline-sm{margin-inline:1rem!important}.gravity-margin-md{margin:1.5rem!important}.gravity-margin-top-md{margin-top:1.5rem!important}.gravity-margin-bottom-md{margin-bottom:1.5rem!important}.gravity-margin-left-md{margin-left:1.5rem!important}.gravity-margin-right-md{margin-right:1.5rem!important}.gravity-margin-block-md{margin-block:1.5rem!important}.gravity-margin-inline-md{margin-inline:1.5rem!important}.gravity-margin-lg{margin:2rem!important}.gravity-margin-top-lg{margin-top:2rem!important}.gravity-margin-bottom-lg{margin-bottom:2rem!important}.gravity-margin-left-lg{margin-left:2rem!important}.gravity-margin-right-lg{margin-right:2rem!important}.gravity-margin-block-lg{margin-block:2rem!important}.gravity-margin-inline-lg{margin-inline:2rem!important}.gravity-margin-xl{margin:2.5rem!important}.gravity-margin-top-xl{margin-top:2.5rem!important}.gravity-margin-bottom-xl{margin-bottom:2.5rem!important}.gravity-margin-left-xl{margin-left:2.5rem!important}.gravity-margin-right-xl{margin-right:2.5rem!important}.gravity-margin-block-xl{margin-block:2.5rem!important}.gravity-margin-inline-xl{margin-inline:2.5rem!important}.gravity-margin-xxl{margin:3rem!important}.gravity-margin-top-xxl{margin-top:3rem!important}.gravity-margin-bottom-xxl{margin-bottom:3rem!important}.gravity-margin-left-xxl{margin-left:3rem!important}.gravity-margin-right-xxl{margin-right:3rem!important}.gravity-margin-block-xxl{margin-block:3rem!important}.gravity-margin-inline-xxl{margin-inline:3rem!important}.gravity-margin-xxxl{margin:4rem!important}.gravity-margin-top-xxxl{margin-top:4rem!important}.gravity-margin-bottom-xxxl{margin-bottom:4rem!important}.gravity-margin-left-xxxl{margin-left:4rem!important}.gravity-margin-right-xxxl{margin-right:4rem!important}.gravity-margin-block-xxxl{margin-block:4rem!important}.gravity-margin-inline-xxxl{margin-inline:4rem!important}.gravity-margin-xxxxl{margin:6rem!important}.gravity-margin-top-xxxxl{margin-top:6rem!important}.gravity-margin-bottom-xxxxl{margin-bottom:6rem!important}.gravity-margin-left-xxxxl{margin-left:6rem!important}.gravity-margin-right-xxxxl{margin-right:6rem!important}.gravity-margin-block-xxxxl{margin-block:6rem!important}.gravity-margin-inline-xxxxl{margin-inline:6rem!important}.gravity-margin-xxxxxl{margin:12rem!important}.gravity-margin-top-xxxxxl{margin-top:12rem!important}.gravity-margin-bottom-xxxxxl{margin-bottom:12rem!important}.gravity-margin-left-xxxxxl{margin-left:12rem!important}.gravity-margin-right-xxxxxl{margin-right:12rem!important}.gravity-margin-block-xxxxxl{margin-block:12rem!important}.gravity-margin-inline-xxxxxl{margin-inline:12rem!important}.border-radius-none{border-radius:0}.border-radius-xs{border-radius:.0625rem}.border-radius-sm{border-radius:.3125rem}.border-radius-md{border-radius:.625rem}.border-radius-lg{border-radius:.9375rem}.border-radius-xl{border-radius:1.25rem}.border-radius-xxl{border-radius:2rem}.border-radius-rounded{border-radius:6.25rem}.gravity-calendar-header{display:flex;align-items:center;justify-content:space-between}.gravity-calendar-header .month-year-label{display:flex;gap:var(--gravity-spacing-sm)}.gravity-calendar-header .next-button,.gravity-calendar-header .previous-button{cursor:pointer;margin:var(--gravity-spacing-xs)}.gravity-calendar-body{width:248px;display:flex;align-items:center;align-self:stretch;flex-direction:column;justify-content:center}.gravity-calendar-body .days-name-line{display:flex;align-items:center;align-self:stretch;flex-direction:column;justify-content:center;gap:var(--gravity-spacing-xs);padding-bottom:var(--gravity-spacing-xs)}.gravity-calendar-body .days-name-line .days-name{display:flex;align-items:center;align-self:stretch;justify-content:space-between}.gravity-calendar-body .days-name-line .days-name span{display:flex;cursor:default;align-items:center;justify-content:center;padding:var(--gravity-spacing-xs);color:var(--text-highlight-primary)}.gravity-calendar-body .days-name-line .separator-line{width:248px;border-bottom:2px solid var(--divider-menu-active-primary)}.gravity-calendar-body .days-number-selector{display:flex;align-items:center;align-self:stretch;flex-direction:column;justify-content:center;gap:var(--gravity-spacing-sm)}.gravity-calendar-body .days-number-selector .days-number-table{display:flex;min-height:150px;align-items:center;align-self:stretch;flex-direction:column;justify-content:flex-start}.gravity-calendar-body .days-number-selector .days-number-table .week-row{height:25px;display:flex;align-items:center;align-self:stretch}.gravity-calendar-body .days-number-selector .days-number-table .week-row span{gap:10px;flex:1 0 0;display:flex;cursor:pointer;align-items:center;align-self:stretch;flex-direction:column;justify-content:center;padding:var(--gravity-spacing-xs);border-radius:var(--gravity-spacing-xs);border:2px solid var(--bg-calender-primary)}.gravity-calendar-body .days-number-selector .days-number-table .week-row span:not(.sl).today{border-color:var(--bg-number-calendar-hover-primary)}.gravity-calendar-body .days-number-selector .days-number-table .week-row span:not(.disabled):not(.sl):hover{color:var(--on-bg-button-pressed-tertiary);background:var(--bg-button-active-tertiary);border-color:var(--bg-button-active-tertiary)}.gravity-calendar-body .days-number-selector .days-number-table .week-row span.single,.gravity-calendar-body .days-number-selector .days-number-table .week-row span.start,.gravity-calendar-body .days-number-selector .days-number-table .week-row span.end{color:var(--on-bg-button-pressed-primary);background:var(--bg-button-pressed-primary);border-color:var(--bg-button-pressed-primary)}.gravity-calendar-body .days-number-selector .days-number-table .week-row span.range,.gravity-calendar-body .days-number-selector .days-number-table .week-row span:not(.disabled).preview{border-radius:0;background:var(--bg-button-active-tertiary);border-color:var(--bg-button-active-tertiary)}.gravity-calendar-body .days-number-selector .days-number-table .week-row span.start,.gravity-calendar-body .days-number-selector .days-number-table .week-row span.nsl-start:hover{border-radius:var(--gravity-spacing-xs) 0 0 var(--gravity-spacing-xs)}.gravity-calendar-body .days-number-selector .days-number-table .week-row span.end,.gravity-calendar-body .days-number-selector .days-number-table .week-row span.nsl-end:hover{border-radius:0 var(--gravity-spacing-xs) var(--gravity-spacing-xs) 0}.gravity-calendar-body .days-number-selector .days-number-table .week-row span.nsl-end:hover{border-color:var(--bg-button-pressed-primary)!important}.gravity-calendar-body .days-number-selector .days-number-table .week-row span.disabled{cursor:default;pointer-events:none;color:var(--on-bg-disabled)}.gravity-calendar-body .days-number-selector .action-section{height:25px;display:flex;align-items:center;align-self:stretch;justify-content:space-between}\n"], dependencies: [{ kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i2.GravityButtonComponent, selector: "gravity-button", inputs: ["cypressTag", "disabled", "customState", "iconPosition", "iconName", "isLoading", "showContent", "size", "type"] }, { kind: "component", type: i3.GravityIconComponent, selector: "gravity-icon", inputs: ["customIconColorVariable", "iconName", "iconSize", "hoverIcon", "size", "isCoin"] }, { kind: "component", type: i4.GravityLinkComponent, selector: "gravity-link", inputs: ["linkText", "fontClass", "link", "cypressTag", "iconName", "target", "iconPosition", "iconSize", "state"] }, { kind: "component", type: i5.GravityDropdownLabelComponent, selector: "gravity-dropdown-label", inputs: ["label", "fontClass", "isOpen", "stopPropagation", "size"], outputs: ["onClickLabel"] }] }); }
188
192
  }
189
193
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: DaysCalendarComponent, decorators: [{
190
194
  type: Component,
191
- args: [{ selector: 'days-calendar', template: "<section class=\"gravity-calendar-header\">\n <div class=\"previous-button\">\n <gravity-icon *ngIf=\"!(navType === 'next')\" [style.--icon-color]=\"'var(--text-highlight-primary)'\" [iconName]=\"'arrow-left'\"\n [iconSize]=\"'sm-12'\" (click)=\"changeMonth(-1)\" ></gravity-icon> </div>\n\n <gravity-dropdown-label [fontClass]=\"'hr-title sm-bold'\" [size]=\"'sm'\"\n\n [label]=\"monthsList[currentDate.getMonth()]\"></gravity-dropdown-label>\n <gravity-dropdown-label [fontClass]=\"'hr-title sm-bold'\"\n\n [size]=\"'sm'\" [label]=\"currentDate.getFullYear().toString()\"></gravity-dropdown-label>\n <div class=\"next-button\">\n <gravity-icon *ngIf=\"!(navType === 'prev')\" [style.--icon-color]=\"'var(--text-highlight-primary)'\" [iconName]=\"'arrow-right'\"\n [iconSize]=\"'sm-12'\" (click)=\"changeMonth(1)\"></gravity-icon> </div>\n</section>\n\n<section class=\"gravity-calendar-body\">\n <section class=\"days-name-line\">\n <div class=\"days-name\">\n <span class=\"hr-body sm-regular\" *ngFor=\"let day of daysList\">{{day}}</span>\n </div>\n <div class=\"separator-line\"></div>\n </section>\n\n <section class=\"days-number-selector\">\n <div class=\"days-number-table\">\n <div class=\"week-row\" *ngFor=\"let week of getMonthGrid(); trackBy: trackByWeek\">\n <span class=\"hr-body sm-regular\" *ngFor=\"let d of week; trackBy: trackByDay\"\n [ngClass]=\"disabled ? 'disabled' : getDaySelectionClass(d)\"\n [class.disabled]=\"!d.inCurrentMonth\" [class.today]=\"d.isToday\" [class.preview]=\"range ? isPreview(d) : null\"\n (click)=\"onSelectDay(d)\" (mouseenter)=\"range ? onHoverDay(d) : null\" (mouseleave)=\"range ? clearHover() : null\">\n {{ d.day }}\n </span>\n </div>\n </div>\n\n <div class=\"action-section\">\n <gravity-link *ngIf=\"actionsSection\" [linkText]=\"i18n.clear\" [state]=\"!isDateSelected() ? 'disabled' : 'active'\" (click)=\"clearSelectedDate()\"></gravity-link>\n <gravity-button *ngIf=\"actionsSection\" [size]=\"'sm'\" [type]=\"'tertiary'\" [disabled]=\"!isDateSelected()\" (click)=\"applySelectedDate()\">{{i18n.apply}}</gravity-button>\n </div>\n </section>\n</section>\n", styles: [":root{--gravity-spacing-none: 0;--gravity-spacing-xxs: .25rem;--gravity-spacing-xs: .5rem;--gravity-spacing-sm: 1rem;--gravity-spacing-md: 1.5rem;--gravity-spacing-lg: 2rem;--gravity-spacing-xl: 2.5rem;--gravity-spacing-xxl: 3rem;--gravity-spacing-xxxl: 4rem;--gravity-spacing-xxxxl: 6rem;--gravity-spacing-xxxxxl: 12rem}.gravity-padding-none{padding:0!important}.gravity-padding-top-none{padding-top:0!important}.gravity-padding-bottom-none{padding-bottom:0!important}.gravity-padding-left-none{padding-left:0!important}.gravity-padding-right-none{padding-right:0!important}.gravity-padding-block-none{padding-block:0!important}.gravity-padding-inline-none{padding-inline:0!important}.gravity-padding-xxs{padding:.25rem!important}.gravity-padding-top-xxs{padding-top:.25rem!important}.gravity-padding-bottom-xxs{padding-bottom:.25rem!important}.gravity-padding-left-xxs{padding-left:.25rem!important}.gravity-padding-right-xxs{padding-right:.25rem!important}.gravity-padding-block-xxs{padding-block:.25rem!important}.gravity-padding-inline-xxs{padding-inline:.25rem!important}.gravity-padding-xs{padding:.5rem!important}.gravity-padding-top-xs{padding-top:.5rem!important}.gravity-padding-bottom-xs{padding-bottom:.5rem!important}.gravity-padding-left-xs{padding-left:.5rem!important}.gravity-padding-right-xs{padding-right:.5rem!important}.gravity-padding-block-xs{padding-block:.5rem!important}.gravity-padding-inline-xs{padding-inline:.5rem!important}.gravity-padding-sm{padding:1rem!important}.gravity-padding-top-sm{padding-top:1rem!important}.gravity-padding-bottom-sm{padding-bottom:1rem!important}.gravity-padding-left-sm{padding-left:1rem!important}.gravity-padding-right-sm{padding-right:1rem!important}.gravity-padding-block-sm{padding-block:1rem!important}.gravity-padding-inline-sm{padding-inline:1rem!important}.gravity-padding-md{padding:1.5rem!important}.gravity-padding-top-md{padding-top:1.5rem!important}.gravity-padding-bottom-md{padding-bottom:1.5rem!important}.gravity-padding-left-md{padding-left:1.5rem!important}.gravity-padding-right-md{padding-right:1.5rem!important}.gravity-padding-block-md{padding-block:1.5rem!important}.gravity-padding-inline-md{padding-inline:1.5rem!important}.gravity-padding-lg{padding:2rem!important}.gravity-padding-top-lg{padding-top:2rem!important}.gravity-padding-bottom-lg{padding-bottom:2rem!important}.gravity-padding-left-lg{padding-left:2rem!important}.gravity-padding-right-lg{padding-right:2rem!important}.gravity-padding-block-lg{padding-block:2rem!important}.gravity-padding-inline-lg{padding-inline:2rem!important}.gravity-padding-xl{padding:2.5rem!important}.gravity-padding-top-xl{padding-top:2.5rem!important}.gravity-padding-bottom-xl{padding-bottom:2.5rem!important}.gravity-padding-left-xl{padding-left:2.5rem!important}.gravity-padding-right-xl{padding-right:2.5rem!important}.gravity-padding-block-xl{padding-block:2.5rem!important}.gravity-padding-inline-xl{padding-inline:2.5rem!important}.gravity-padding-xxl{padding:3rem!important}.gravity-padding-top-xxl{padding-top:3rem!important}.gravity-padding-bottom-xxl{padding-bottom:3rem!important}.gravity-padding-left-xxl{padding-left:3rem!important}.gravity-padding-right-xxl{padding-right:3rem!important}.gravity-padding-block-xxl{padding-block:3rem!important}.gravity-padding-inline-xxl{padding-inline:3rem!important}.gravity-padding-xxxl{padding:4rem!important}.gravity-padding-top-xxxl{padding-top:4rem!important}.gravity-padding-bottom-xxxl{padding-bottom:4rem!important}.gravity-padding-left-xxxl{padding-left:4rem!important}.gravity-padding-right-xxxl{padding-right:4rem!important}.gravity-padding-block-xxxl{padding-block:4rem!important}.gravity-padding-inline-xxxl{padding-inline:4rem!important}.gravity-padding-xxxxl{padding:6rem!important}.gravity-padding-top-xxxxl{padding-top:6rem!important}.gravity-padding-bottom-xxxxl{padding-bottom:6rem!important}.gravity-padding-left-xxxxl{padding-left:6rem!important}.gravity-padding-right-xxxxl{padding-right:6rem!important}.gravity-padding-block-xxxxl{padding-block:6rem!important}.gravity-padding-inline-xxxxl{padding-inline:6rem!important}.gravity-padding-xxxxxl{padding:12rem!important}.gravity-padding-top-xxxxxl{padding-top:12rem!important}.gravity-padding-bottom-xxxxxl{padding-bottom:12rem!important}.gravity-padding-left-xxxxxl{padding-left:12rem!important}.gravity-padding-right-xxxxxl{padding-right:12rem!important}.gravity-padding-block-xxxxxl{padding-block:12rem!important}.gravity-padding-inline-xxxxxl{padding-inline:12rem!important}.gravity-margin-none{margin:0!important}.gravity-margin-top-none{margin-top:0!important}.gravity-margin-bottom-none{margin-bottom:0!important}.gravity-margin-left-none{margin-left:0!important}.gravity-margin-right-none{margin-right:0!important}.gravity-margin-block-none{margin-block:0!important}.gravity-margin-inline-none{margin-inline:0!important}.gravity-margin-xxs{margin:.25rem!important}.gravity-margin-top-xxs{margin-top:.25rem!important}.gravity-margin-bottom-xxs{margin-bottom:.25rem!important}.gravity-margin-left-xxs{margin-left:.25rem!important}.gravity-margin-right-xxs{margin-right:.25rem!important}.gravity-margin-block-xxs{margin-block:.25rem!important}.gravity-margin-inline-xxs{margin-inline:.25rem!important}.gravity-margin-xs{margin:.5rem!important}.gravity-margin-top-xs{margin-top:.5rem!important}.gravity-margin-bottom-xs{margin-bottom:.5rem!important}.gravity-margin-left-xs{margin-left:.5rem!important}.gravity-margin-right-xs{margin-right:.5rem!important}.gravity-margin-block-xs{margin-block:.5rem!important}.gravity-margin-inline-xs{margin-inline:.5rem!important}.gravity-margin-sm{margin:1rem!important}.gravity-margin-top-sm{margin-top:1rem!important}.gravity-margin-bottom-sm{margin-bottom:1rem!important}.gravity-margin-left-sm{margin-left:1rem!important}.gravity-margin-right-sm{margin-right:1rem!important}.gravity-margin-block-sm{margin-block:1rem!important}.gravity-margin-inline-sm{margin-inline:1rem!important}.gravity-margin-md{margin:1.5rem!important}.gravity-margin-top-md{margin-top:1.5rem!important}.gravity-margin-bottom-md{margin-bottom:1.5rem!important}.gravity-margin-left-md{margin-left:1.5rem!important}.gravity-margin-right-md{margin-right:1.5rem!important}.gravity-margin-block-md{margin-block:1.5rem!important}.gravity-margin-inline-md{margin-inline:1.5rem!important}.gravity-margin-lg{margin:2rem!important}.gravity-margin-top-lg{margin-top:2rem!important}.gravity-margin-bottom-lg{margin-bottom:2rem!important}.gravity-margin-left-lg{margin-left:2rem!important}.gravity-margin-right-lg{margin-right:2rem!important}.gravity-margin-block-lg{margin-block:2rem!important}.gravity-margin-inline-lg{margin-inline:2rem!important}.gravity-margin-xl{margin:2.5rem!important}.gravity-margin-top-xl{margin-top:2.5rem!important}.gravity-margin-bottom-xl{margin-bottom:2.5rem!important}.gravity-margin-left-xl{margin-left:2.5rem!important}.gravity-margin-right-xl{margin-right:2.5rem!important}.gravity-margin-block-xl{margin-block:2.5rem!important}.gravity-margin-inline-xl{margin-inline:2.5rem!important}.gravity-margin-xxl{margin:3rem!important}.gravity-margin-top-xxl{margin-top:3rem!important}.gravity-margin-bottom-xxl{margin-bottom:3rem!important}.gravity-margin-left-xxl{margin-left:3rem!important}.gravity-margin-right-xxl{margin-right:3rem!important}.gravity-margin-block-xxl{margin-block:3rem!important}.gravity-margin-inline-xxl{margin-inline:3rem!important}.gravity-margin-xxxl{margin:4rem!important}.gravity-margin-top-xxxl{margin-top:4rem!important}.gravity-margin-bottom-xxxl{margin-bottom:4rem!important}.gravity-margin-left-xxxl{margin-left:4rem!important}.gravity-margin-right-xxxl{margin-right:4rem!important}.gravity-margin-block-xxxl{margin-block:4rem!important}.gravity-margin-inline-xxxl{margin-inline:4rem!important}.gravity-margin-xxxxl{margin:6rem!important}.gravity-margin-top-xxxxl{margin-top:6rem!important}.gravity-margin-bottom-xxxxl{margin-bottom:6rem!important}.gravity-margin-left-xxxxl{margin-left:6rem!important}.gravity-margin-right-xxxxl{margin-right:6rem!important}.gravity-margin-block-xxxxl{margin-block:6rem!important}.gravity-margin-inline-xxxxl{margin-inline:6rem!important}.gravity-margin-xxxxxl{margin:12rem!important}.gravity-margin-top-xxxxxl{margin-top:12rem!important}.gravity-margin-bottom-xxxxxl{margin-bottom:12rem!important}.gravity-margin-left-xxxxxl{margin-left:12rem!important}.gravity-margin-right-xxxxxl{margin-right:12rem!important}.gravity-margin-block-xxxxxl{margin-block:12rem!important}.gravity-margin-inline-xxxxxl{margin-inline:12rem!important}.border-radius-none{border-radius:0}.border-radius-xs{border-radius:.0625rem}.border-radius-sm{border-radius:.3125rem}.border-radius-md{border-radius:.625rem}.border-radius-lg{border-radius:.9375rem}.border-radius-xl{border-radius:1.25rem}.border-radius-xxl{border-radius:2rem}.border-radius-rounded{border-radius:6.25rem}.gravity-calendar-header{width:248px;display:flex;align-items:center;align-self:stretch;justify-content:center;gap:var(--gravity-spacing-sm)}.gravity-calendar-header .next-button,.gravity-calendar-header .previous-button{cursor:pointer;margin:var(--gravity-spacing-xs)}.gravity-calendar-body{width:248px;display:flex;align-items:center;align-self:stretch;flex-direction:column;justify-content:center}.gravity-calendar-body .days-name-line{display:flex;align-items:center;align-self:stretch;flex-direction:column;justify-content:center;gap:var(--gravity-spacing-xs);padding-bottom:var(--gravity-spacing-xs)}.gravity-calendar-body .days-name-line .days-name{display:flex;align-items:center;align-self:stretch;justify-content:space-between}.gravity-calendar-body .days-name-line .days-name span{display:flex;cursor:default;align-items:center;justify-content:center;padding:var(--gravity-spacing-xs);color:var(--text-highlight-primary)}.gravity-calendar-body .days-name-line .separator-line{width:248px;border-bottom:2px solid var(--divider-menu-active-primary)}.gravity-calendar-body .days-number-selector{display:flex;align-items:center;align-self:stretch;flex-direction:column;justify-content:center;gap:var(--gravity-spacing-sm)}.gravity-calendar-body .days-number-selector .days-number-table{display:flex;min-height:150px;align-items:center;align-self:stretch;flex-direction:column;justify-content:flex-start}.gravity-calendar-body .days-number-selector .days-number-table .week-row{height:25px;display:flex;align-items:center;align-self:stretch}.gravity-calendar-body .days-number-selector .days-number-table .week-row span{gap:10px;flex:1 0 0;display:flex;cursor:pointer;align-items:center;align-self:stretch;flex-direction:column;justify-content:center;padding:var(--gravity-spacing-xs);border-radius:var(--gravity-spacing-xs);border:2px solid var(--bg-calender-primary)}.gravity-calendar-body .days-number-selector .days-number-table .week-row span:not(.sl).today{border-color:var(--bg-number-calendar-hover-primary)}.gravity-calendar-body .days-number-selector .days-number-table .week-row span:not(.disabled):not(.sl):hover{color:var(--on-bg-button-pressed-tertiary);background:var(--bg-button-active-tertiary);border-color:var(--bg-button-active-tertiary)}.gravity-calendar-body .days-number-selector .days-number-table .week-row span.single,.gravity-calendar-body .days-number-selector .days-number-table .week-row span.start,.gravity-calendar-body .days-number-selector .days-number-table .week-row span.end{color:var(--on-bg-button-pressed-primary);background:var(--bg-button-pressed-primary);border-color:var(--bg-button-pressed-primary)}.gravity-calendar-body .days-number-selector .days-number-table .week-row span.range,.gravity-calendar-body .days-number-selector .days-number-table .week-row span:not(.disabled).preview{border-radius:0;background:var(--bg-button-active-tertiary);border-color:var(--bg-button-active-tertiary)}.gravity-calendar-body .days-number-selector .days-number-table .week-row span.start,.gravity-calendar-body .days-number-selector .days-number-table .week-row span.nsl-start:hover{border-radius:var(--gravity-spacing-xs) 0 0 var(--gravity-spacing-xs)}.gravity-calendar-body .days-number-selector .days-number-table .week-row span.end,.gravity-calendar-body .days-number-selector .days-number-table .week-row span.nsl-end:hover{border-radius:0 var(--gravity-spacing-xs) var(--gravity-spacing-xs) 0}.gravity-calendar-body .days-number-selector .days-number-table .week-row span.nsl-end:hover{border-color:var(--bg-button-pressed-primary)!important}.gravity-calendar-body .days-number-selector .days-number-table .week-row span.disabled{cursor:default;pointer-events:none;color:var(--on-bg-disabled)}.gravity-calendar-body .days-number-selector .action-section{height:25px;display:flex;align-items:center;align-self:stretch;justify-content:space-between}\n"] }]
192
- }], propDecorators: { preSelectedDate: [{
195
+ args: [{ selector: 'days-calendar', template: "<section class=\"gravity-calendar-header\">\n <div class=\"previous-button\">\n <gravity-icon *ngIf=\"!(navType === 'next')\" [style.--icon-color]=\"'var(--text-highlight-primary)'\" [iconName]=\"'arrow-left'\"\n [iconSize]=\"'sm-12'\" (click)=\"currentDate = changeMonth(-1, currentDate)\" ></gravity-icon>\n </div>\n\n <div class=\"month-year-label\">\n <gravity-dropdown-label [fontClass]=\"'hr-title sm-bold'\" [size]=\"'sm'\" [label]=\"monthsList[currentDate.getMonth()]\"></gravity-dropdown-label>\n <gravity-dropdown-label [fontClass]=\"'hr-title sm-bold'\" [size]=\"'sm'\" [label]=\"currentDate.getFullYear().toString()\"></gravity-dropdown-label>\n </div>\n\n <div class=\"next-button\">\n <gravity-icon *ngIf=\"!(navType === 'prev')\" [style.--icon-color]=\"'var(--text-highlight-primary)'\" [iconName]=\"'arrow-right'\"\n [iconSize]=\"'sm-12'\" (click)=\"currentDate = changeMonth(1, currentDate)\"></gravity-icon>\n </div>\n</section>\n\n<section class=\"gravity-calendar-body\">\n <section class=\"days-name-line\">\n <div class=\"days-name\">\n <span class=\"hr-body sm-regular\" *ngFor=\"let day of daysList\">{{day}}</span>\n </div>\n <div class=\"separator-line\"></div>\n </section>\n\n <section class=\"days-number-selector\">\n <div class=\"days-number-table\">\n <div class=\"week-row\" *ngFor=\"let week of getMonthGrid(); trackBy: trackByWeek\">\n <span class=\"hr-body sm-regular\" *ngFor=\"let d of week; trackBy: trackByDay\"\n [ngClass]=\"disabled ? 'disabled' : getDaySelectionClass(d)\"\n [class.disabled]=\"!d.inCurrentMonth\" [class.today]=\"d.isToday\" [class.preview]=\"range ? isPreview(d) : null\"\n (click)=\"onSelectDay(d)\" (mouseenter)=\"range ? onHoverDay(d) : null\" (mouseleave)=\"range ? clearHover() : null\">\n {{ d.day }}\n </span>\n </div>\n </div>\n\n <div class=\"action-section\">\n <gravity-link *ngIf=\"actionsSection\" [linkText]=\"i18n.clear\" [state]=\"!isDateSelected() ? 'disabled' : 'active'\" (click)=\"clearSelectedDate()\"></gravity-link>\n <gravity-button *ngIf=\"actionsSection\" [size]=\"'sm'\" [type]=\"'tertiary'\" [disabled]=\"!isDateSelected()\" (click)=\"applySelectedDate()\">{{i18n.apply}}</gravity-button>\n </div>\n </section>\n</section>\n", styles: [":root{--gravity-spacing-none: 0;--gravity-spacing-xxs: .25rem;--gravity-spacing-xs: .5rem;--gravity-spacing-sm: 1rem;--gravity-spacing-md: 1.5rem;--gravity-spacing-lg: 2rem;--gravity-spacing-xl: 2.5rem;--gravity-spacing-xxl: 3rem;--gravity-spacing-xxxl: 4rem;--gravity-spacing-xxxxl: 6rem;--gravity-spacing-xxxxxl: 12rem}.gravity-padding-none{padding:0!important}.gravity-padding-top-none{padding-top:0!important}.gravity-padding-bottom-none{padding-bottom:0!important}.gravity-padding-left-none{padding-left:0!important}.gravity-padding-right-none{padding-right:0!important}.gravity-padding-block-none{padding-block:0!important}.gravity-padding-inline-none{padding-inline:0!important}.gravity-padding-xxs{padding:.25rem!important}.gravity-padding-top-xxs{padding-top:.25rem!important}.gravity-padding-bottom-xxs{padding-bottom:.25rem!important}.gravity-padding-left-xxs{padding-left:.25rem!important}.gravity-padding-right-xxs{padding-right:.25rem!important}.gravity-padding-block-xxs{padding-block:.25rem!important}.gravity-padding-inline-xxs{padding-inline:.25rem!important}.gravity-padding-xs{padding:.5rem!important}.gravity-padding-top-xs{padding-top:.5rem!important}.gravity-padding-bottom-xs{padding-bottom:.5rem!important}.gravity-padding-left-xs{padding-left:.5rem!important}.gravity-padding-right-xs{padding-right:.5rem!important}.gravity-padding-block-xs{padding-block:.5rem!important}.gravity-padding-inline-xs{padding-inline:.5rem!important}.gravity-padding-sm{padding:1rem!important}.gravity-padding-top-sm{padding-top:1rem!important}.gravity-padding-bottom-sm{padding-bottom:1rem!important}.gravity-padding-left-sm{padding-left:1rem!important}.gravity-padding-right-sm{padding-right:1rem!important}.gravity-padding-block-sm{padding-block:1rem!important}.gravity-padding-inline-sm{padding-inline:1rem!important}.gravity-padding-md{padding:1.5rem!important}.gravity-padding-top-md{padding-top:1.5rem!important}.gravity-padding-bottom-md{padding-bottom:1.5rem!important}.gravity-padding-left-md{padding-left:1.5rem!important}.gravity-padding-right-md{padding-right:1.5rem!important}.gravity-padding-block-md{padding-block:1.5rem!important}.gravity-padding-inline-md{padding-inline:1.5rem!important}.gravity-padding-lg{padding:2rem!important}.gravity-padding-top-lg{padding-top:2rem!important}.gravity-padding-bottom-lg{padding-bottom:2rem!important}.gravity-padding-left-lg{padding-left:2rem!important}.gravity-padding-right-lg{padding-right:2rem!important}.gravity-padding-block-lg{padding-block:2rem!important}.gravity-padding-inline-lg{padding-inline:2rem!important}.gravity-padding-xl{padding:2.5rem!important}.gravity-padding-top-xl{padding-top:2.5rem!important}.gravity-padding-bottom-xl{padding-bottom:2.5rem!important}.gravity-padding-left-xl{padding-left:2.5rem!important}.gravity-padding-right-xl{padding-right:2.5rem!important}.gravity-padding-block-xl{padding-block:2.5rem!important}.gravity-padding-inline-xl{padding-inline:2.5rem!important}.gravity-padding-xxl{padding:3rem!important}.gravity-padding-top-xxl{padding-top:3rem!important}.gravity-padding-bottom-xxl{padding-bottom:3rem!important}.gravity-padding-left-xxl{padding-left:3rem!important}.gravity-padding-right-xxl{padding-right:3rem!important}.gravity-padding-block-xxl{padding-block:3rem!important}.gravity-padding-inline-xxl{padding-inline:3rem!important}.gravity-padding-xxxl{padding:4rem!important}.gravity-padding-top-xxxl{padding-top:4rem!important}.gravity-padding-bottom-xxxl{padding-bottom:4rem!important}.gravity-padding-left-xxxl{padding-left:4rem!important}.gravity-padding-right-xxxl{padding-right:4rem!important}.gravity-padding-block-xxxl{padding-block:4rem!important}.gravity-padding-inline-xxxl{padding-inline:4rem!important}.gravity-padding-xxxxl{padding:6rem!important}.gravity-padding-top-xxxxl{padding-top:6rem!important}.gravity-padding-bottom-xxxxl{padding-bottom:6rem!important}.gravity-padding-left-xxxxl{padding-left:6rem!important}.gravity-padding-right-xxxxl{padding-right:6rem!important}.gravity-padding-block-xxxxl{padding-block:6rem!important}.gravity-padding-inline-xxxxl{padding-inline:6rem!important}.gravity-padding-xxxxxl{padding:12rem!important}.gravity-padding-top-xxxxxl{padding-top:12rem!important}.gravity-padding-bottom-xxxxxl{padding-bottom:12rem!important}.gravity-padding-left-xxxxxl{padding-left:12rem!important}.gravity-padding-right-xxxxxl{padding-right:12rem!important}.gravity-padding-block-xxxxxl{padding-block:12rem!important}.gravity-padding-inline-xxxxxl{padding-inline:12rem!important}.gravity-margin-none{margin:0!important}.gravity-margin-top-none{margin-top:0!important}.gravity-margin-bottom-none{margin-bottom:0!important}.gravity-margin-left-none{margin-left:0!important}.gravity-margin-right-none{margin-right:0!important}.gravity-margin-block-none{margin-block:0!important}.gravity-margin-inline-none{margin-inline:0!important}.gravity-margin-xxs{margin:.25rem!important}.gravity-margin-top-xxs{margin-top:.25rem!important}.gravity-margin-bottom-xxs{margin-bottom:.25rem!important}.gravity-margin-left-xxs{margin-left:.25rem!important}.gravity-margin-right-xxs{margin-right:.25rem!important}.gravity-margin-block-xxs{margin-block:.25rem!important}.gravity-margin-inline-xxs{margin-inline:.25rem!important}.gravity-margin-xs{margin:.5rem!important}.gravity-margin-top-xs{margin-top:.5rem!important}.gravity-margin-bottom-xs{margin-bottom:.5rem!important}.gravity-margin-left-xs{margin-left:.5rem!important}.gravity-margin-right-xs{margin-right:.5rem!important}.gravity-margin-block-xs{margin-block:.5rem!important}.gravity-margin-inline-xs{margin-inline:.5rem!important}.gravity-margin-sm{margin:1rem!important}.gravity-margin-top-sm{margin-top:1rem!important}.gravity-margin-bottom-sm{margin-bottom:1rem!important}.gravity-margin-left-sm{margin-left:1rem!important}.gravity-margin-right-sm{margin-right:1rem!important}.gravity-margin-block-sm{margin-block:1rem!important}.gravity-margin-inline-sm{margin-inline:1rem!important}.gravity-margin-md{margin:1.5rem!important}.gravity-margin-top-md{margin-top:1.5rem!important}.gravity-margin-bottom-md{margin-bottom:1.5rem!important}.gravity-margin-left-md{margin-left:1.5rem!important}.gravity-margin-right-md{margin-right:1.5rem!important}.gravity-margin-block-md{margin-block:1.5rem!important}.gravity-margin-inline-md{margin-inline:1.5rem!important}.gravity-margin-lg{margin:2rem!important}.gravity-margin-top-lg{margin-top:2rem!important}.gravity-margin-bottom-lg{margin-bottom:2rem!important}.gravity-margin-left-lg{margin-left:2rem!important}.gravity-margin-right-lg{margin-right:2rem!important}.gravity-margin-block-lg{margin-block:2rem!important}.gravity-margin-inline-lg{margin-inline:2rem!important}.gravity-margin-xl{margin:2.5rem!important}.gravity-margin-top-xl{margin-top:2.5rem!important}.gravity-margin-bottom-xl{margin-bottom:2.5rem!important}.gravity-margin-left-xl{margin-left:2.5rem!important}.gravity-margin-right-xl{margin-right:2.5rem!important}.gravity-margin-block-xl{margin-block:2.5rem!important}.gravity-margin-inline-xl{margin-inline:2.5rem!important}.gravity-margin-xxl{margin:3rem!important}.gravity-margin-top-xxl{margin-top:3rem!important}.gravity-margin-bottom-xxl{margin-bottom:3rem!important}.gravity-margin-left-xxl{margin-left:3rem!important}.gravity-margin-right-xxl{margin-right:3rem!important}.gravity-margin-block-xxl{margin-block:3rem!important}.gravity-margin-inline-xxl{margin-inline:3rem!important}.gravity-margin-xxxl{margin:4rem!important}.gravity-margin-top-xxxl{margin-top:4rem!important}.gravity-margin-bottom-xxxl{margin-bottom:4rem!important}.gravity-margin-left-xxxl{margin-left:4rem!important}.gravity-margin-right-xxxl{margin-right:4rem!important}.gravity-margin-block-xxxl{margin-block:4rem!important}.gravity-margin-inline-xxxl{margin-inline:4rem!important}.gravity-margin-xxxxl{margin:6rem!important}.gravity-margin-top-xxxxl{margin-top:6rem!important}.gravity-margin-bottom-xxxxl{margin-bottom:6rem!important}.gravity-margin-left-xxxxl{margin-left:6rem!important}.gravity-margin-right-xxxxl{margin-right:6rem!important}.gravity-margin-block-xxxxl{margin-block:6rem!important}.gravity-margin-inline-xxxxl{margin-inline:6rem!important}.gravity-margin-xxxxxl{margin:12rem!important}.gravity-margin-top-xxxxxl{margin-top:12rem!important}.gravity-margin-bottom-xxxxxl{margin-bottom:12rem!important}.gravity-margin-left-xxxxxl{margin-left:12rem!important}.gravity-margin-right-xxxxxl{margin-right:12rem!important}.gravity-margin-block-xxxxxl{margin-block:12rem!important}.gravity-margin-inline-xxxxxl{margin-inline:12rem!important}.border-radius-none{border-radius:0}.border-radius-xs{border-radius:.0625rem}.border-radius-sm{border-radius:.3125rem}.border-radius-md{border-radius:.625rem}.border-radius-lg{border-radius:.9375rem}.border-radius-xl{border-radius:1.25rem}.border-radius-xxl{border-radius:2rem}.border-radius-rounded{border-radius:6.25rem}.gravity-calendar-header{display:flex;align-items:center;justify-content:space-between}.gravity-calendar-header .month-year-label{display:flex;gap:var(--gravity-spacing-sm)}.gravity-calendar-header .next-button,.gravity-calendar-header .previous-button{cursor:pointer;margin:var(--gravity-spacing-xs)}.gravity-calendar-body{width:248px;display:flex;align-items:center;align-self:stretch;flex-direction:column;justify-content:center}.gravity-calendar-body .days-name-line{display:flex;align-items:center;align-self:stretch;flex-direction:column;justify-content:center;gap:var(--gravity-spacing-xs);padding-bottom:var(--gravity-spacing-xs)}.gravity-calendar-body .days-name-line .days-name{display:flex;align-items:center;align-self:stretch;justify-content:space-between}.gravity-calendar-body .days-name-line .days-name span{display:flex;cursor:default;align-items:center;justify-content:center;padding:var(--gravity-spacing-xs);color:var(--text-highlight-primary)}.gravity-calendar-body .days-name-line .separator-line{width:248px;border-bottom:2px solid var(--divider-menu-active-primary)}.gravity-calendar-body .days-number-selector{display:flex;align-items:center;align-self:stretch;flex-direction:column;justify-content:center;gap:var(--gravity-spacing-sm)}.gravity-calendar-body .days-number-selector .days-number-table{display:flex;min-height:150px;align-items:center;align-self:stretch;flex-direction:column;justify-content:flex-start}.gravity-calendar-body .days-number-selector .days-number-table .week-row{height:25px;display:flex;align-items:center;align-self:stretch}.gravity-calendar-body .days-number-selector .days-number-table .week-row span{gap:10px;flex:1 0 0;display:flex;cursor:pointer;align-items:center;align-self:stretch;flex-direction:column;justify-content:center;padding:var(--gravity-spacing-xs);border-radius:var(--gravity-spacing-xs);border:2px solid var(--bg-calender-primary)}.gravity-calendar-body .days-number-selector .days-number-table .week-row span:not(.sl).today{border-color:var(--bg-number-calendar-hover-primary)}.gravity-calendar-body .days-number-selector .days-number-table .week-row span:not(.disabled):not(.sl):hover{color:var(--on-bg-button-pressed-tertiary);background:var(--bg-button-active-tertiary);border-color:var(--bg-button-active-tertiary)}.gravity-calendar-body .days-number-selector .days-number-table .week-row span.single,.gravity-calendar-body .days-number-selector .days-number-table .week-row span.start,.gravity-calendar-body .days-number-selector .days-number-table .week-row span.end{color:var(--on-bg-button-pressed-primary);background:var(--bg-button-pressed-primary);border-color:var(--bg-button-pressed-primary)}.gravity-calendar-body .days-number-selector .days-number-table .week-row span.range,.gravity-calendar-body .days-number-selector .days-number-table .week-row span:not(.disabled).preview{border-radius:0;background:var(--bg-button-active-tertiary);border-color:var(--bg-button-active-tertiary)}.gravity-calendar-body .days-number-selector .days-number-table .week-row span.start,.gravity-calendar-body .days-number-selector .days-number-table .week-row span.nsl-start:hover{border-radius:var(--gravity-spacing-xs) 0 0 var(--gravity-spacing-xs)}.gravity-calendar-body .days-number-selector .days-number-table .week-row span.end,.gravity-calendar-body .days-number-selector .days-number-table .week-row span.nsl-end:hover{border-radius:0 var(--gravity-spacing-xs) var(--gravity-spacing-xs) 0}.gravity-calendar-body .days-number-selector .days-number-table .week-row span.nsl-end:hover{border-color:var(--bg-button-pressed-primary)!important}.gravity-calendar-body .days-number-selector .days-number-table .week-row span.disabled{cursor:default;pointer-events:none;color:var(--on-bg-disabled)}.gravity-calendar-body .days-number-selector .action-section{height:25px;display:flex;align-items:center;align-self:stretch;justify-content:space-between}\n"] }]
196
+ }], propDecorators: { range: [{
193
197
  type: Input
194
- }], range: [{
198
+ }], restart: [{
195
199
  type: Input
196
200
  }], disabled: [{
197
201
  type: Input
198
202
  }], language: [{
199
203
  type: Input
204
+ }], preSelectedDate: [{
205
+ type: Input
200
206
  }], actionsSection: [{
201
207
  type: Input
202
208
  }], navType: [{
203
209
  type: Input
204
- }], clearAction: [{
205
- type: Output
206
- }], applyAction: [{
210
+ }], clearSelectionDate: [{
207
211
  type: Output
208
212
  }], calendarResponse: [{
209
213
  type: Output,
210
214
  args: ['response']
211
215
  }] } });
212
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF5cy1jYWxlbmRhci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9ncmF2aXR5LWRlc2lnbi1zeXN0ZW0vc3JjL2xpYi9jb21wb25lbnRzL2dyYXZpdHktY2FsZW5kYXItbmV4dC9jb21wb25lbnRzL2RheXMtY2FsZW5kYXIvZGF5cy1jYWxlbmRhci5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9ncmF2aXR5LWRlc2lnbi1zeXN0ZW0vc3JjL2xpYi9jb21wb25lbnRzL2dyYXZpdHktY2FsZW5kYXItbmV4dC9jb21wb25lbnRzL2RheXMtY2FsZW5kYXIvZGF5cy1jYWxlbmRhci5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEVBQUMsU0FBUyxFQUFFLFlBQVksRUFBRSxLQUFLLEVBQWEsTUFBTSxFQUFnQixNQUFNLGVBQWUsQ0FBQztBQUMvRixPQUFPLEVBQUMsYUFBYSxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsU0FBUyxFQUFFLFNBQVMsRUFBQyxNQUFNLGlDQUFpQyxDQUFDOzs7Ozs7O0FBT3RHLE1BQU0sT0FBTyxxQkFBcUI7SUFMbEM7UUFPb0IsVUFBSyxHQUFZLEtBQUssQ0FBQztRQUN2QixhQUFRLEdBQVksS0FBSyxDQUFDO1FBQzFCLGFBQVEsR0FBZ0IsSUFBSSxDQUFDO1FBQzdCLG1CQUFjLEdBQVksSUFBSSxDQUFDO1FBQy9CLFlBQU8sR0FBNkIsTUFBTSxDQUFBO1FBRXpDLGdCQUFXLEdBQXVCLElBQUksWUFBWSxFQUFRLENBQUM7UUFDM0QsZ0JBQVcsR0FBZ0MsSUFBSSxZQUFZLEVBQWlCLENBQUM7UUFDbkUscUJBQWdCLEdBQWdDLElBQUksWUFBWSxFQUFpQixDQUFDO1FBR3RHLGdCQUFXLEdBQUcsSUFBSSxJQUFJLEVBQUUsQ0FBQztRQUN6QixlQUFVLEdBQXVCLElBQUks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QUFLLEdBQUcsQ0FBQyxFQUFFLElBQUksRUFBRSxPQUFPLEVBQUUsS0FBSyxFQUFFLGNBQWMsRUFBRSxLQUFLLEVBQUUsQ0FBQyxDQUFDO1NBQ2hHO1FBRUQsTUFBTSxrQkFBa0IsR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLGNBQWMsQ0FBQyxDQUFDO1FBQ2hFLElBQUksa0JBQWtCLEVBQUU7WUFBRSxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO1NBQUU7UUFFNUMsT0FBTyxJQUFJLENBQUM7SUFDaEIsQ0FBQzsrR0FyTU0scUJBQXFCO21HQUFyQixxQkFBcUIsK1VDVGxDLHU2RUEwQ0E7OzRGRGpDYSxxQkFBcUI7a0JBTGpDLFNBQVM7K0JBQ0UsZUFBZTs4QkFLUCxlQUFlO3NCQUE5QixLQUFLO2dCQUNVLEtBQUs7c0JBQXBCLEtBQUs7Z0JBQ1UsUUFBUTtzQkFBdkIsS0FBSztnQkFDVSxRQUFRO3NCQUF2QixLQUFLO2dCQUNVLGNBQWM7c0JBQTdCLEtBQUs7Z0JBQ1UsT0FBTztzQkFBdEIsS0FBSztnQkFFVyxXQUFXO3NCQUEzQixNQUFNO2dCQUNVLFdBQVc7c0JBQTNCLE1BQU07Z0JBQ29CLGdCQUFnQjtzQkFBMUMsTUFBTTt1QkFBQyxVQUFVIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtDYWxlbmRhckRheX0gZnJvbSBcIi4uLy4uL3NoYXJlZC9jYWxlbmRhci5tb2RhbFwiO1xuaW1wb3J0IHtDb21wb25lbnQsIEV2ZW50RW1pdHRlciwgSW5wdXQsIE9uQ2hhbmdlcywgT3V0cHV0LCBTaW1wbGVDaGFuZ2VzfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7Q0FMRU5EQVJfSTE4TiwgREFZU19FTiwgREFZU19FUywgTU9OVEhTX0VOLCBNT05USFNfRVN9IGZyb20gXCIuLi8uLi9zaGFyZWQvY2FsZW5kYXIuY29uc3RhbnRzXCI7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2RheXMtY2FsZW5kYXInLFxuICB0ZW1wbGF0ZVVybDogJy4vZGF5cy1jYWxlbmRhci5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL2RheXMtY2FsZW5kYXIuY29tcG9uZW50LnNjc3MnXVxufSlcbmV4cG9ydCBjbGFzcyBEYXlzQ2FsZW5kYXJDb21wb25lbnQgaW1wbGVtZW50cyBPbkNoYW5nZXMge1xuICAgIEBJbnB1dCgpIHB1YmxpYyBwcmVTZWxlY3RlZERhdGU6IERhdGU7XG4gICAgQElucHV0KCkgcHVibGljIHJhbmdlOiBib29sZWFuID0gZmFsc2U7XG4gICAgQElucHV0KCkgcHVibGljIGRpc2FibGVkOiBib29sZWFuID0gZmFsc2U7XG4gICAgQElucHV0KCkgcHVibGljIGxhbmd1YWdlOiAnZXMnIHwgJ2VuJyA9ICdlbic7XG4gICAgQElucHV0KCkgcHVibGljIGFjdGlvbnNTZWN0aW9uOiBib29sZWFuID0gdHJ1ZTtcbiAgICBASW5wdXQoKSBwdWJsaWMgbmF2VHlwZTogJ3ByZXYnIHwgJ25leHQnIHwgJ2JvdGgnID0gJ2JvdGgnXG5cbiAgICBAT3V0cHV0KCkgcHVibGljIGNsZWFyQWN0aW9uOiBFdmVudEVtaXR0ZXI8dm9pZD4gPSBuZXcgRXZlbnRFbWl0dGVyPHZvaWQ+KCk7XG4gICAgQE91dHB1dCgpIHB1YmxpYyBhcHBseUFjdGlvbjogRXZlbnRFbWl0dGVyPERhdGVbXSB8IERhdGU+ID0gbmV3IEV2ZW50RW1pdHRlcjxEYXRlW10gfCBEYXRlPigpO1xuICAgIEBPdXRwdXQoJ3Jlc3BvbnNlJykgcHVibGljIGNhbGVuZGFyUmVzcG9uc2U6IEV2ZW50RW1pdHRlcjxEYXRlW10gfCBEYXRlPiA9IG5ldyBFdmVudEVtaXR0ZXI8RGF0ZVtdIHwgRGF0ZT4oKTtcblxuXG4gICAgcHVibGljIGN1cnJlbnREYXRlID0gbmV3IERhdGUoKTtcbiAgICBwdWJsaWMgaG92ZXJlZERheTogQ2FsZW5kYXJEYXkgfCBudWxsID0gbnVsbDtcbiAgICBwdWJsaWMgc2VsZWN0ZWREYXk6IENhbGVuZGFyRGF5IHwgbnVsbCA9IG51bGw7XG4gICAgcHVibGljIHNlbGVjdGVkUmFuZ2VFbmQ6IENhbGVuZGFyRGF5IHwgbnVsbCA9IG51bGw7XG4gICAgcHVibGljIHNlbGVjdGVkUmFuZ2VTdGFydDogQ2FsZW5kYXJEYXkgfCBudWxsID0gbnVsbDtcblxuXG4gICAgICBwdWJsaWMgZ2V0IGkxOG4oKSB7XG4gICAgICAgIHJldHVybiBDQUxFTkRBUl9JMThOW3RoaXMubGFuZ3VhZ2VdO1xuICAgICAgfVxuXG4gICAgICBwdWJsaWMgZ2V0IGRheXNMaXN0KCkge1xuICAgICAgICByZXR1cm4gdGhpcy5sYW5ndWFnZSA9PT0gJ2VuJyA/IERBWVNfRU4gOiBEQVlTX0VTO1xuICAgICAgfVxuXG4gICAgICBwdWJsaWMgZ2V0IG1vbnRoc0xpc3QoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmxhbmd1YWdlID09PSAnZW4nID8gTU9OVEhTX0VOIDogTU9OVEhTX0VTO1xuICAgICAgfVxuXG4gICAgICBwdWJsaWMgdHJhY2tCeVdlZWsoaW5kZXg6IG51bWJlciwgXzogYW55KTogbnVtYmVyIHtcbiAgICAgICAgICByZXR1cm4gaW5kZXg7XG4gICAgICB9XG5cbiAgICAgIHB1YmxpYyB0cmFja0J5RGF5KF86IG51bWJlciwgZGF5OiBDYWxlbmRhckRheSk6IHN0cmluZyB7XG4gICAgICAgICAgcmV0dXJuIGAke2RheS55ZWFyfS0ke2RheS5tb250aH0tJHtkYXkuZGF5fWA7XG4gICAgICB9XG5cbiAgICAgIG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpOiB2b2lkIHtcbiAgICAgICAgICBpZiAoY2hhbmdlc1sncHJlU2VsZWN0ZWREYXRlJ10gJiYgdGhpcy5wcmVTZWxlY3RlZERhdGUgaW5zdGFuY2VvZiBEYXRlKSB7XG4gICAgICAgICAgICAgIHRoaXMuc2VsZWN0ZWREYXkgPSB7XG4gICAgICAgICAgICAgICAgICBpbkN1cnJlbnRNb250aDogdHJ1ZSxcbiAgICAgICAgICAgICAgICAgIGlzVG9kYXk6IGZhbHNlLFxuICAgICAgICAgICAgICAgICAgZGF5OiB0aGlzLnByZVNlbGVjdGVkRGF0ZS5nZXREYXRlKCksXG4gICAgICAgICAgICAgICAgICBtb250aDogdGhpcy5wcmVTZWxlY3RlZERhdGUuZ2V0TW9udGgoKSAtIDEsXG4gICAgICAgICAgICAgICAgICB5ZWFyOiB0aGlzLnByZVNlbGVjdGVkRGF0ZS5nZXRGdWxsWWVhcigpLFxuICAgICAgICAgICAgICB9O1xuXG4gICAgICAgICAgICAgIHRoaXMuY3VycmVudERhdGUgPSBuZXcgRGF0ZSh0aGlzLnByZVNlbGVjdGVkRGF0ZS5nZXRGdWxsWWVhcigpLCB0aGlzLnByZVNlbGVjdGVkRGF0ZS5nZXRNb250aCgpIC0xICwgMSk7XG4gICAgICAgICAgfVxuICAgICAgfVxuXG4gICAgcHVibGljIGFwcGx5U2VsZWN0ZWREYXRlKCk6IHZvaWQge1xuICAgICAgICBpZiAoIXRoaXMucmFuZ2UpIHtcbiAgICAgICAgICAgIHRoaXMuYXBwbHlBY3Rpb24uZW1pdChuZXcgRGF0ZSh0aGlzLnNlbGVjdGVkRGF5LnllYXIsIHRoaXMuc2VsZWN0ZWREYXkubW9udGggKyAxLCB0aGlzLnNlbGVjdGVkRGF5LmRheSkpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgICBwdWJsaWMgaXNEYXRlU2VsZWN0ZWQoKXtcbiAgICAgICAgICBpZighdGhpcy5yYW5nZSAmJiB0aGlzLnNlbGVjdGVkRGF5KSB7IHJldHVybiB0cnVlOyB9XG4gICAgICAgICAgcmV0dXJuIHRoaXMuc2VsZWN0ZWRSYW5nZUVuZDtcbiAgICAgIH1cblxuICAgICAgcHVibGljIGNsZWFyU2VsZWN0ZWREYXRlKCkge1xuICAgICAgICAgIHRoaXMuY2xlYXJBY3Rpb24uZW1pdCgpO1xuICAgICAgICAgIHRoaXMuc2VsZWN0ZWREYXkgPSBudWxsO1xuICAgICAgICAgIHRoaXMuc2VsZWN0ZWRSYW5nZUVuZCA9IG51bGw7XG4gICAgICAgICAgdGhpcy5zZWxlY3RlZFJhbmdlU3RhcnQgPSBudWxsO1xuICAgICAgfVxuXG4gICAgICBwdWJsaWMgaXNQcmV2aWV3KGRheTogQ2FsZW5kYXJEYXkpOiBib29sZWFuIHtcbiAgICAgICAgICBpZiAoIXRoaXMuc2VsZWN0ZWRSYW5nZVN0YXJ0IHx8IHRoaXMuc2VsZWN0ZWRSYW5nZUVuZCB8fCAhdGhpcy5ob3ZlcmVkRGF5KSB7IHJldHVybiBmYWxzZTsgfVxuXG4gICAgICAgICAgY29uc3QgY3VycmVudCA9IG5ldyBEYXRlKGRheS55ZWFyLCBkYXkubW9udGgsIGRheS5kYXkpO1xuICAgICAgICAgIGNvbnN0IGhvdmVyID0gbmV3IERhdGUodGhpcy5ob3ZlcmVkRGF5LnllYXIsIHRoaXMuaG92ZXJlZERheS5tb250aCwgdGhpcy5ob3ZlcmVkRGF5LmRheSk7XG4gICAgICAgICAgY29uc3Qgc3RhcnQgPSBuZXcgRGF0ZSh0aGlzLnNlbGVjdGVkUmFuZ2VTdGFydC55ZWFyLCB0aGlzLnNlbGVjdGVkUmFuZ2VTdGFydC5tb250aCwgdGhpcy5zZWxlY3RlZFJhbmdlU3RhcnQuZGF5KTtcblxuICAgICAgICAgIGlmIChob3ZlciA8PSBzdGFydCkgcmV0dXJuIGZhbHNlO1xuICAgICAgICAgIHJldHVybiBjdXJyZW50ID4gc3RhcnQgJiYgY3VycmVudCA8PSBob3ZlcjtcbiAgICAgIH1cblxuICAgICAgcHVibGljIG9uSG92ZXJEYXkoZGF5OiBDYWxlbmRhckRheSk6IHZvaWQge1xuICAgICAgICAgIGlmICh0aGlzLnNlbGVjdGVkUmFuZ2VFbmQpIHsgcmV0dXJuOyB9XG4gICAgICAgICAgdGhpcy5ob3ZlcmVkRGF5ID0gZGF5O1xuICAgICAgfVxuXG4gICAgICBwdWJsaWMgY2xlYXJIb3ZlcigpOiB2b2lkIHtcbiAgICAgICAgICB0aGlzLmhvdmVyZWREYXkgPSBudWxsO1xuICAgICAgfVxuXG4gICAgICBwdWJsaWMgZ2V0RGF5U2VsZWN0aW9uQ2xhc3MoZGF5OiBDYWxlbmRhckRheSk6IHN0cmluZyB7XG4gICAgICAgICAgaWYgKCFkYXkuaW5DdXJyZW50TW9udGgpIHJldHVybiAnZGlzYWJsZWQnO1xuXG4gICAgICAgICAgaWYgKCF0aGlzLnJhbmdlKSB7XG4gICAgICAgICAgICAgIGlmICh0aGlzLnNlbGVjdGVkRGF5ICYmXG4gICAgICAgICAgICAgICAgICBkYXkuZGF5ID09PSB0aGlzLnNlbGVjdGVkRGF5LmRheSAmJlxuICAgICAgICAgICAgICAgICAgZGF5Lm1vbnRoID09PSB0aGlzLnNlbGVjdGVkRGF5Lm1vbnRoICYmXG4gICAgICAgICAgICAgICAgICBkYXkueWVhciA9PT0gdGhpcy5zZWxlY3RlZERheS55ZWFyKSB7XG4gICAgICAgICAgICAgICAgICByZXR1cm4gJ3NsIHNpbmdsZSc7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgcmV0dXJuICcnO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIGlmICghdGhpcy5zZWxlY3RlZFJhbmdlU3RhcnQpIHJldHVybiAnbnNsLXN0YXJ0JztcblxuICAgICAgICAgIGNvbnN0IGN1cnJlbnQgPSBuZXcgRGF0ZShkYXkueWVhciwgZGF5Lm1vbnRoLCBkYXkuZGF5KTtcbiAgICAgICAgICBjb25zdCBzdGFydCA9IG5ldyBEYXRlKHRoaXMuc2VsZWN0ZWRSYW5nZVN0YXJ0LnllYXIsIHRoaXMuc2VsZWN0ZWRSYW5nZVN0YXJ0Lm1vbnRoLCB0aGlzLnNlbGVjdGVkUmFuZ2VTdGFydC5kYXkpO1xuXG4gICAgICAgICAgaWYgKCF0aGlzLnNlbGVjdGVkUmFuZ2VFbmQpIHtcbiAgICAgICAgICAgICAgaWYgKGN1cnJlbnQuZ2V0VGltZSgpID09PSBzdGFydC5nZXRUaW1lKCkpIHsgcmV0dXJuICdzbCBzdGFydCc7IH1cblxuICAgICAgICAgICAgICBpZiAodGhpcy5ob3ZlcmVkRGF5KSB7XG4gICAgICAgICAgICAgICAgICBjb25zdCBob3ZlciA9IG5ldyBEYXRlKHRoaXMuaG92ZXJlZERheS55ZWFyLCB0aGlzLmhvdmVyZWREYXkubW9udGgsIHRoaXMuaG92ZXJlZERheS5kYXkpO1xuICAgICAgICAgICAgICAgICAgaWYgKGN1cnJlbnQuZ2V0VGltZSgpID09PSBob3Zlci5nZXRUaW1lKCkgJiYgaG92ZXIgPCBzdGFydCkgeyByZXR1cm4gJ25zbC1zdGFydCc7IH1cbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICByZXR1cm4gJ25zbC1lbmQnO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIGNvbnN0IGVuZCA9IG5ldyBEYXRlKHRoaXMuc2VsZWN0ZWRSYW5nZUVuZC55ZWFyLCB0aGlzLnNlbGVjdGVkUmFuZ2VFbmQubW9udGgsIHRoaXMuc2VsZWN0ZWRSYW5nZUVuZC5kYXkpO1xuXG4gICAgICAgICAgaWYgKGN1cnJlbnQuZ2V0VGltZSgpID09PSBzdGFydC5nZXRUaW1lKCkpIHJldHVybiAnc2wgc3RhcnQnO1xuICAgICAgICAgIGlmIChjdXJyZW50LmdldFRpbWUoKSA9PT0gZW5kLmdldFRpbWUoKSkgcmV0dXJuICdzbCBlbmQnO1xuICAgICAgICAgIGlmIChjdXJyZW50ID4gc3RhcnQgJiYgY3VycmVudCA8IGVuZCkgcmV0dXJuICdzbCByYW5nZSc7XG5cbiAgICAgICAgICByZXR1cm4gJ25zbC1zdGFydCc7XG4gICAgICB9XG5cbiAgICAgIHB1YmxpYyBvblNlbGVjdERheShkYXk6IENhbGVuZGFyRGF5KTogdm9pZCB7XG4gICAgICAgICAgaWYgKCFkYXkuaW5DdXJyZW50TW9udGgpIHJldHVybjtcblxuICAgICAgICAgIGlmICghdGhpcy5yYW5nZSkge1xuICAgICAgICAgICAgICB0aGlzLnNlbGVjdGVkRGF5ID0gZGF5O1xuICAgICAgICAgICAgICBjb25zdCBjdXJyZW50RGF0ZSA9IG5ldyBEYXRlKGRheS55ZWFyLCBkYXkubW9udGggKyAxLCBkYXkuZGF5KTtcbiAgICAgICAgICAgICAgdGhpcy5jYWxlbmRhclJlc3BvbnNlLmVtaXQoY3VycmVudERhdGUpO1xuICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgaWYgKCF0aGlzLnNlbGVjdGVkUmFuZ2VTdGFydCB8fCB0aGlzLnNlbGVjdGVkUmFuZ2VFbmQpIHtcbiAgICAgICAgICAgICAgdGhpcy5zZWxlY3RlZFJhbmdlU3RhcnQgPSBkYXk7XG4gICAgICAgICAgICAgIHRoaXMuc2VsZWN0ZWRSYW5nZUVuZCA9IG51bGw7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgY29uc3Qgc3RhcnREYXRlID0gbmV3IERhdGUoXG4gICAgICAgICAgICAgICAgICB0aGlzLnNlbGVjdGVkUmFuZ2VTdGFydC55ZWFyLFxuICAgICAgICAgICAgICAgICAgdGhpcy5zZWxlY3RlZFJhbmdlU3RhcnQubW9udGgsXG4gICAgICAgICAgICAgICAgICB0aGlzLnNlbGVjdGVkUmFuZ2VTdGFydC5kYXkgKTtcblxuICAgICAgICAgICAgICBjb25zdCBzZWxlY3RlZERhdGUgPSBuZXcgRGF0ZShkYXkueWVhciwgZGF5Lm1vbnRoLCBkYXkuZGF5KTtcbiAgICAgICAgICAgICAgc2VsZWN0ZWREYXRlID49IHN0YXJ0RGF0ZSA/IHRoaXMuc2VsZWN0ZWRSYW5nZUVuZCA9IGRheSA6IHRoaXMuc2VsZWN0ZWRSYW5nZVN0YXJ0ID0gZGF5O1xuICAgICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgcHVibGljIGNoYW5nZU1vbnRoKG9mZnNldDogbnVtYmVyKTogdm9pZCB7XG4gICAgICAgICAgY29uc3QgbW9udGggPSB0aGlzLmN1cnJlbnREYXRlLmdldE1vbnRoKCk7XG4gICAgICAgICAgY29uc3QgeWVhciA9IHRoaXMuY3VycmVudERhdGUuZ2V0RnVsbFllYXIoKTtcbiAgICAgICAgICB0aGlzLmN1cnJlbnREYXRlID0gbmV3IERhdGUoeWVhciwgbW9udGggKyBvZmZzZXQsIDEpO1xuICAgICAgfVxuXG4gICAgICBwdWJsaWMgZ2V0TW9udGhHcmlkKCk6IENhbGVuZGFyRGF5W11bXSB7XG4gICAgICAgICAgbGV0IHdlZWs6IENhbGVuZGFyRGF5W10gPSBbXTtcblxuICAgICAgICAgIGNvbnN0IHRvZGF5ID0gbmV3IERhdGUoKTtcbiAgICAgICAgICBjb25zdCBncmlkOiBDYWxlbmRhckRheVtdW10gPSBbXTtcbiAgICAgICAgICBjb25zdCBiYXNlRGF0ZSA9IHRoaXMuY3VycmVudERhdGU7XG4gICAgICAgICAgY29uc3QgbW9udGggPSBiYXNlRGF0ZS5nZXRNb250aCgpO1xuICAgICAgICAgIGNvbnN0IHllYXIgPSBiYXNlRGF0ZS5nZXRGdWxsWWVhcigpO1xuXG4gICAgICAgICAgY29uc3QgZmlyc3REYXkgPSBuZXcgRGF0ZSh5ZWFyLCBtb250aCwgMSk7XG4gICAgICAgICAgY29uc3Qgc3RhcnRXZWVrZGF5ID0gKGZpcnN0RGF5LmdldERheSgpICsgNikgJSA3O1xuICAgICAgICAgIGNvbnN0IGRheXNJbk1vbnRoID0gbmV3IERhdGUoeWVhciwgbW9udGggKyAxLCAwKS5nZXREYXRlKCk7XG4gICAgICAgICAgY29uc3QgZGF5c0luUHJldk1vbnRoID0gbmV3IERhdGUoeWVhciwgbW9udGgsIDApLmdldERhdGUoKTtcblxuICAgICAgICAgIC8vIGZpbGwgZGF5cyBmcm9tIHByZXZpb3VzIG1vbnRoXG4gICAgICAgICAgZm9yIChsZXQgaSA9IHN0YXJ0V2Vla2RheSAtIDE7IGkgPj0gMDsgaS0tKSB7XG4gICAgICAgICAgICAgIGNvbnN0IGRheSA9IGRheXNJblByZXZNb250aCAtIGk7XG4gICAgICAgICAgICAgIHdlZWsucHVzaCh7IGRheSwgbW9udGg6IG1vbnRoIC0gMSwgeWVhciwgaXNUb2RheTogZmFsc2UsIGluQ3VycmVudE1vbnRoOiBmYWxzZSB9KTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICAvLyBmaWxsIGRheXMgZnJvbSBjdXJyZW50IG1vbnRoXG4gICAgICAgICAgZm9yIChsZXQgZCA9IDE7IGQgPD0gZGF5c0luTW9udGg7IGQrKykge1xuICAgICAgICAgICAgICBjb25zdCBpc1RvZGF5ID0gZCA9PT0gdG9kYXkuZ2V0RGF0ZSgpICYmIG1vbnRoID09PSB0b2RheS5nZXRNb250aCgpICYmIHllYXIgPT09IHRvZGF5LmdldEZ1bGxZZWFyKCk7XG4gICAgICAgICAgICAgIHdlZWsucHVzaCh7IGRheTogZCwgbW9udGgsIHllYXIsIGlzVG9kYXksIGluQ3VycmVudE1vbnRoOiB0cnVlIH0pO1xuXG4gICAgICAgICAgICAgIGlmICh3ZWVrLmxlbmd0aCA9PT0gNykgeyBncmlkLnB1c2god2Vlayk7IHdlZWsgPSBbXTsgfVxuICAgICAgICAgIH1cblxuICAgICAgICAgIC8vIGZpbGwgcmVtYWluaW5nIGRheXMgZnJvbSBuZXh0IG1vbnRoXG4gICAgICAgICAgbGV0IG5leHREYXkgPSAxO1xuICAgICAgICAgIHdoaWxlICh3ZWVrLmxlbmd0aCA8IDcpIHtcbiAgICAgICAgICAgICAgd2Vlay5wdXNoKHsgZGF5OiBuZXh0RGF5KyssIG1vbnRoOiBtb250aCArIDEsIHllYXIsIGlzVG9kYXk6IGZhbHNlLCBpbkN1cnJlbnRNb250aDogZmFsc2UgfSk7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgY29uc3QgaGFzQ3VycmVudE1vbnRoRGF5ID0gd2Vlay5zb21lKGRheSA9PiBkYXkuaW5DdXJyZW50TW9udGgpO1xuICAgICAgICAgIGlmIChoYXNDdXJyZW50TW9udGhEYXkpIHsgZ3JpZC5wdXNoKHdlZWspOyB9XG5cbiAgICAgICAgICByZXR1cm4gZ3JpZDtcbiAgICAgIH1cblxufVxuIiwiPHNlY3Rpb24gY2xhc3M9XCJncmF2aXR5LWNhbGVuZGFyLWhlYWRlclwiPlxuICAgIDxkaXYgY2xhc3M9XCJwcmV2aW91cy1idXR0b25cIj5cbiAgICAgICAgPGdyYXZpdHktaWNvbiAqbmdJZj1cIiEobmF2VHlwZSA9PT0gJ25leHQnKVwiIFtzdHlsZS4tLWljb24tY29sb3JdPVwiJ3ZhcigtLXRleHQtaGlnaGxpZ2h0LXByaW1hcnkpJ1wiIFtpY29uTmFtZV09XCInYXJyb3ctbGVmdCdcIlxuICAgICAgICAgICAgICAgICAgICAgIFtpY29uU2l6ZV09XCInc20tMTInXCIgKGNsaWNrKT1cImNoYW5nZU1vbnRoKC0xKVwiID48L2dyYXZpdHktaWNvbj4gPC9kaXY+XG5cbiAgICAgICAgPGdyYXZpdHktZHJvcGRvd24tbGFiZWwgW2ZvbnRDbGFzc109XCInaHItdGl0bGUgc20tYm9sZCdcIiBbc2l6ZV09XCInc20nXCJcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbGFiZWxdPVwibW9udGhzTGlzdFtjdXJyZW50RGF0ZS5nZXRNb250aCgpXVwiPjwvZ3Jhdml0eS1kcm9wZG93bi1sYWJlbD5cbiAgICAgICAgPGdyYXZpdHktZHJvcGRvd24tbGFiZWwgW2ZvbnRDbGFzc109XCInaHItdGl0bGUgc20tYm9sZCdcIlxuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtzaXplXT1cIidzbSdcIiBbbGFiZWxdPVwiY3VycmVudERhdGUuZ2V0RnVsbFllYXIoKS50b1N0cmluZygpXCI+PC9ncmF2aXR5LWRyb3Bkb3duLWxhYmVsPlxuICAgIDxkaXYgY2xhc3M9XCJuZXh0LWJ1dHRvblwiPlxuICAgICAgICA8Z3Jhdml0eS1pY29uICpuZ0lmPVwiIShuYXZUeXBlID09PSAncHJldicpXCIgW3N0eWxlLi0taWNvbi1jb2xvcl09XCIndmFyKC0tdGV4dC1oaWdobGlnaHQtcHJpbWFyeSknXCIgW2ljb25OYW1lXT1cIidhcnJvdy1yaWdodCdcIlxuICAgICAgICAgICAgICAgICAgICAgIFtpY29uU2l6ZV09XCInc20tMTInXCIgKGNsaWNrKT1cImNoYW5nZU1vbnRoKDEpXCI+PC9ncmF2aXR5LWljb24+IDwvZGl2PlxuPC9zZWN0aW9uPlxuXG48c2VjdGlvbiBjbGFzcz1cImdyYXZpdHktY2FsZW5kYXItYm9keVwiPlxuICAgIDxzZWN0aW9uIGNsYXNzPVwiZGF5cy1uYW1lLWxpbmVcIj5cbiAgICAgICAgPGRpdiBjbGFzcz1cImRheXMtbmFtZVwiPlxuICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJoci1ib2R5IHNtLXJlZ3VsYXJcIiAqbmdGb3I9XCJsZXQgZGF5IG9mIGRheXNMaXN0XCI+e3tkYXl9fTwvc3Bhbj5cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJzZXBhcmF0b3ItbGluZVwiPjwvZGl2PlxuICAgIDwvc2VjdGlvbj5cblxuICAgIDxzZWN0aW9uIGNsYXNzPVwiZGF5cy1udW1iZXItc2VsZWN0b3JcIj5cbiAgICAgICAgPGRpdiBjbGFzcz1cImRheXMtbnVtYmVyLXRhYmxlXCI+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwid2Vlay1yb3dcIiAqbmdGb3I9XCJsZXQgd2VlayBvZiBnZXRNb250aEdyaWQoKTsgdHJhY2tCeTogdHJhY2tCeVdlZWtcIj5cbiAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJoci1ib2R5IHNtLXJlZ3VsYXJcIiAqbmdGb3I9XCJsZXQgZCBvZiB3ZWVrOyB0cmFja0J5OiB0cmFja0J5RGF5XCJcbiAgICAgICAgICAgICAgICAgICAgW25nQ2xhc3NdPVwiZGlzYWJsZWQgPyAnZGlzYWJsZWQnIDogZ2V0RGF5U2VsZWN0aW9uQ2xhc3MoZClcIlxuICAgICAgICAgICAgICAgICAgICBbY2xhc3MuZGlzYWJsZWRdPVwiIWQuaW5DdXJyZW50TW9udGhcIiBbY2xhc3MudG9kYXldPVwiZC5pc1RvZGF5XCIgW2NsYXNzLnByZXZpZXddPVwicmFuZ2UgPyBpc1ByZXZpZXcoZCkgOiBudWxsXCJcbiAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cIm9uU2VsZWN0RGF5KGQpXCIgKG1vdXNlZW50ZXIpPVwicmFuZ2UgPyBvbkhvdmVyRGF5KGQpIDogbnVsbFwiIChtb3VzZWxlYXZlKT1cInJhbmdlID8gY2xlYXJIb3ZlcigpIDogbnVsbFwiPlxuICAgICAgICAgICAgICAgIHt7IGQuZGF5IH19XG4gICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cblxuICAgICAgICA8ZGl2IGNsYXNzPVwiYWN0aW9uLXNlY3Rpb25cIj5cbiAgICAgICAgICAgIDxncmF2aXR5LWxpbmsgKm5nSWY9XCJhY3Rpb25zU2VjdGlvblwiIFtsaW5rVGV4dF09XCJpMThuLmNsZWFyXCIgW3N0YXRlXT1cIiFpc0RhdGVTZWxlY3RlZCgpID8gJ2Rpc2FibGVkJyA6ICdhY3RpdmUnXCIgKGNsaWNrKT1cImNsZWFyU2VsZWN0ZWREYXRlKClcIj48L2dyYXZpdHktbGluaz5cbiAgICAgICAgICAgIDxncmF2aXR5LWJ1dHRvbiAqbmdJZj1cImFjdGlvbnNTZWN0aW9uXCIgW3NpemVdPVwiJ3NtJ1wiIFt0eXBlXT1cIid0ZXJ0aWFyeSdcIiBbZGlzYWJsZWRdPVwiIWlzRGF0ZVNlbGVjdGVkKClcIiAoY2xpY2spPVwiYXBwbHlTZWxlY3RlZERhdGUoKVwiPnt7aTE4bi5hcHBseX19PC9ncmF2aXR5LWJ1dHRvbj5cbiAgICAgICAgPC9kaXY+XG4gICAgPC9zZWN0aW9uPlxuPC9zZWN0aW9uPlxuIl19
216
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF5cy1jYWxlbmRhci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9ncmF2aXR5LWRlc2lnbi1zeXN0ZW0vc3JjL2xpYi9jb21wb25lbnRzL2dyYXZpdHktY2FsZW5kYXItbmV4dC9jb21wb25lbnRzL2RheXMtY2FsZW5kYXIvZGF5cy1jYWxlbmRhci5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9ncmF2aXR5LWRlc2lnbi1zeXN0ZW0vc3JjL2xpYi9jb21wb25lbnRzL2dyYXZpdHktY2FsZW5kYXItbmV4dC9jb21wb25lbnRzL2RheXMtY2FsZW5kYXIvZGF5cy1jYWxlbmRhci5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEVBQUMsU0FBUyxFQUFFLFlBQVksRUFBRSxLQUFLLEVBQWEsTUFBTSxFQUFnQixNQUFNLGVBQWUsQ0FBQztBQUMvRixPQUFPLEVBQUMsYUFBYSxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsU0FBUyxFQUFFLFNBQVMsRUFBQyxNQUFNLGlDQUFpQyxDQUFDO0FBQ3RHLE9BQU8sRUFBQyxNQUFNLEVBQUUsYUFBYSxFQUFFLFdBQVcsRUFBRSxhQUFhLEVBQUUsV0FBVyxFQUFFLFVBQVUsR0FBRSxNQUFNLDZCQUE2QixDQUFDOzs7Ozs7O0FBT3hILE1BQU0sT0FBTyxxQkFBcUI7SUFMbEM7UUFNb0IsVUFBSyxHQUFZLEtBQUssQ0FBQztRQUN2QixZQUFPLEdBQVksS0FBSyxDQUFDO1FBQ3pCLGFBQVEsR0FBWSxLQUFLLENBQUM7UUFDMUIsYUFBUSxHQUFnQixJQUFJLENBQUM7UUFFN0IsbUJBQWMsR0FBWSxJQUFJLENBQUM7UUFDL0IsWUFBTyxHQUE2QixNQUFNLENBQUE7UUFFekMsdUJBQWtCLEdBQXVCLElBQUksWUFBWSxFQUFRLENBQUM7UUFDeEQscUJBQWdCLEdBQWdD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O1lBQUUsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztTQUFFO1FBRTVDLE9BQU8sSUFBSSxDQUFDO0lBQ2hCLENBQUM7K0dBM0xRLHFCQUFxQjttR0FBckIscUJBQXFCLHFWQ1ZsQyxxOUVBMkNBOzs0RkRqQ2EscUJBQXFCO2tCQUxqQyxTQUFTOytCQUNJLGVBQWU7OEJBS1QsS0FBSztzQkFBcEIsS0FBSztnQkFDVSxPQUFPO3NCQUF0QixLQUFLO2dCQUNVLFFBQVE7c0JBQXZCLEtBQUs7Z0JBQ1UsUUFBUTtzQkFBdkIsS0FBSztnQkFDVSxlQUFlO3NCQUE5QixLQUFLO2dCQUNVLGNBQWM7c0JBQTdCLEtBQUs7Z0JBQ1UsT0FBTztzQkFBdEIsS0FBSztnQkFFVyxrQkFBa0I7c0JBQWxDLE1BQU07Z0JBQ29CLGdCQUFnQjtzQkFBMUMsTUFBTTt1QkFBQyxVQUFVIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtDYWxlbmRhckRheX0gZnJvbSBcIi4uLy4uL3NoYXJlZC9jYWxlbmRhci5tb2RhbFwiO1xuaW1wb3J0IHtDb21wb25lbnQsIEV2ZW50RW1pdHRlciwgSW5wdXQsIE9uQ2hhbmdlcywgT3V0cHV0LCBTaW1wbGVDaGFuZ2VzfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7Q0FMRU5EQVJfSTE4TiwgREFZU19FTiwgREFZU19FUywgTU9OVEhTX0VOLCBNT05USFNfRVN9IGZyb20gXCIuLi8uLi9zaGFyZWQvY2FsZW5kYXIuY29uc3RhbnRzXCI7XG5pbXBvcnQge3RvRGF0ZSwgZ2V0TW9udGhTdGFydCwgY2hhbmdlTW9udGgsIHRvQ2FsZW5kYXJEYXksIHRyYWNrQnlXZWVrLCB0cmFja0J5RGF5LH0gZnJvbSAnLi4vLi4vc2hhcmVkL2NhbGVuZGFyLnV0aWxzJztcblxuQENvbXBvbmVudCh7XG4gICAgc2VsZWN0b3I6ICdkYXlzLWNhbGVuZGFyJyxcbiAgICB0ZW1wbGF0ZVVybDogJy4vZGF5cy1jYWxlbmRhci5jb21wb25lbnQuaHRtbCcsXG4gICAgc3R5bGVVcmxzOiBbJy4vZGF5cy1jYWxlbmRhci5jb21wb25lbnQuc2NzcyddXG59KVxuZXhwb3J0IGNsYXNzIERheXNDYWxlbmRhckNvbXBvbmVudCBpbXBsZW1lbnRzIE9uQ2hhbmdlcyB7XG4gICAgQElucHV0KCkgcHVibGljIHJhbmdlOiBib29sZWFuID0gZmFsc2U7XG4gICAgQElucHV0KCkgcHVibGljIHJlc3RhcnQ6IGJvb2xlYW4gPSBmYWxzZTtcbiAgICBASW5wdXQoKSBwdWJsaWMgZGlzYWJsZWQ6IGJvb2xlYW4gPSBmYWxzZTtcbiAgICBASW5wdXQoKSBwdWJsaWMgbGFuZ3VhZ2U6ICdlcycgfCAnZW4nID0gJ2VuJztcbiAgICBASW5wdXQoKSBwdWJsaWMgcHJlU2VsZWN0ZWREYXRlOiBEYXRlIHwgRGF0ZVtdO1xuICAgIEBJbnB1dCgpIHB1YmxpYyBhY3Rpb25zU2VjdGlvbjogYm9vbGVhbiA9IHRydWU7XG4gICAgQElucHV0KCkgcHVibGljIG5hdlR5cGU6ICdwcmV2JyB8ICduZXh0JyB8ICdib3RoJyA9ICdib3RoJ1xuXG4gICAgQE91dHB1dCgpIHB1YmxpYyBjbGVhclNlbGVjdGlvbkRhdGU6IEV2ZW50RW1pdHRlcjx2b2lkPiA9IG5ldyBFdmVudEVtaXR0ZXI8dm9pZD4oKTtcbiAgICBAT3V0cHV0KCdyZXNwb25zZScpIHB1YmxpYyBjYWxlbmRhclJlc3BvbnNlOiBFdmVudEVtaXR0ZXI8RGF0ZVtdIHwgRGF0ZT4gPSBuZXcgRXZlbnRFbWl0dGVyPERhdGVbXSB8IERhdGU+KCk7XG5cbiAgICBwcm90ZWN0ZWQgcmVhZG9ubHkgdHJhY2tCeURheSA9IHRyYWNrQnlEYXk7XG4gICAgcHJvdGVjdGVkIHJlYWRvbmx5IHRyYWNrQnlXZWVrID0gdHJhY2tCeVdlZWs7XG4gICAgcHJvdGVjdGVkIHJlYWRvbmx5IGNoYW5nZU1vbnRoID0gY2hhbmdlTW9udGg7XG5cbiAgICBwdWJsaWMgY3VycmVudERhdGU6IERhdGUgPSBuZXcgRGF0ZSgpO1xuICAgIHB1YmxpYyBob3ZlcmVkRGF5OiBDYWxlbmRhckRheSB8IG51bGwgPSBudWxsO1xuICAgIHB1YmxpYyBzZWxlY3RlZERheTogQ2FsZW5kYXJEYXkgfCBudWxsID0gbnVsbDtcbiAgICBwdWJsaWMgc2VsZWN0ZWRSYW5nZUVuZDogQ2FsZW5kYXJEYXkgfCBudWxsID0gbnVsbDtcbiAgICBwdWJsaWMgc2VsZWN0ZWRSYW5nZVN0YXJ0OiBDYWxlbmRhckRheSB8IG51bGwgPSBudWxsO1xuXG4gICAgcHVibGljIGdldCBpMThuKCkgeyByZXR1cm4gQ0FMRU5EQVJfSTE4Tlt0aGlzLmxhbmd1YWdlXTsgfVxuICAgIHB1YmxpYyBnZXQgZGF5c0xpc3QoKSB7IHJldHVybiB0aGlzLmxhbmd1YWdlID09PSAnZW4nID8gREFZU19FTiA6IERBWVNfRVM7IH1cbiAgICBwdWJsaWMgZ2V0IG1vbnRoc0xpc3QoKSB7IHJldHVybiB0aGlzLmxhbmd1YWdlID09PSAnZW4nID8gTU9OVEhTX0VOIDogTU9OVEhTX0VTOyB9XG5cbiAgICBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKTogdm9pZCB7XG4gICAgICAgIGNvbnN0IHNob3VsZFJlc3RhcnQgPSBjaGFuZ2VzWydyZXN0YXJ0J10gJiYgdGhpcy5yZXN0YXJ0O1xuICAgICAgICBjb25zdCBzaG91bGRQcm9jZXNzUHJlU2VsZWN0ZWQgPSBjaGFuZ2VzWydwcmVTZWxlY3RlZERhdGUnXSAmJiB0aGlzLnByZVNlbGVjdGVkRGF0ZTtcbiAgICAgICAgaWYgKHNob3VsZFJlc3RhcnQgfHwgc2hvdWxkUHJvY2Vzc1ByZVNlbGVjdGVkKSB7IHRoaXMucHJvY2Vzc1ByZXNlbGVjdGVkRGF0ZSgpOyB9XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBwcm9jZXNzUHJlc2VsZWN0ZWREYXRlKCk6IHZvaWQge1xuICAgICAgICBpZiAodGhpcy5yYW5nZSAmJiBBcnJheS5pc0FycmF5KHRoaXMucHJlU2VsZWN0ZWREYXRlKSkge1xuICAgICAgICAgICAgY29uc3QgW3N0YXJ0LCBlbmRdID0gdGhpcy5wcmVTZWxlY3RlZERhdGU7XG5cbiAgICAgICAgICAgIGlmIChzdGFydCBpbnN0YW5jZW9mIERhdGUpIHtcbiAgICAgICAgICAgICAgICB0aGlzLnNlbGVjdGVkUmFuZ2VTdGFydCA9IHRvQ2FsZW5kYXJEYXkoc3RhcnQpO1xuICAgICAgICAgICAgICAgIHRoaXMuY3VycmVudERhdGUgPSBnZXRNb250aFN0YXJ0KHN0YXJ0KTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgaWYgKGVuZCBpbnN0YW5jZW9mIERhdGUpIHsgdGhpcy5zZWxlY3RlZFJhbmdlRW5kID0gdG9DYWxlbmRhckRheShlbmQpOyB9XG5cbiAgICAgICAgfSBlbHNlIGlmICh0aGlzLnByZVNlbGVjdGVkRGF0ZSBpbnN0YW5jZW9mIERhdGUpIHtcbiAgICAgICAgICAgIHRoaXMuc2VsZWN0ZWREYXkgPSB0b0NhbGVuZGFyRGF5KHRoaXMucHJlU2VsZWN0ZWREYXRlKTtcbiAgICAgICAgICAgIHRoaXMuY3VycmVudERhdGUgPSBnZXRNb250aFN0YXJ0KHRoaXMucHJlU2VsZWN0ZWREYXRlKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHB1YmxpYyBpc0RhdGVTZWxlY3RlZCgpOiBib29sZWFuIHtcbiAgICAgICAgaWYgKCF0aGlzLnJhbmdlKSB7IHJldHVybiAhIXRoaXMuc2VsZWN0ZWREYXk7IH1cbiAgICAgICAgZWxzZSB7IHJldHVybiAhIXRoaXMuc2VsZWN0ZWRSYW5nZVN0YXJ0ICYmICEhdGhpcy5zZWxlY3RlZFJhbmdlRW5kOyB9XG4gICAgfVxuXG4gICAgcHVibGljIGlzUHJldmlldyhkYXk6IENhbGVuZGFyRGF5KTogYm9vbGVhbiB7XG4gICAgICAgIGlmICghdGhpcy5zZWxlY3RlZFJhbmdlU3RhcnQgfHwgdGhpcy5zZWxlY3RlZFJhbmdlRW5kIHx8ICF0aGlzLmhvdmVyZWREYXkpIHsgcmV0dXJuIGZhbHNlOyB9XG5cbiAgICAgICAgY29uc3QgY3VycmVudCA9IHRvRGF0ZShkYXkpO1xuICAgICAgICBjb25zdCBob3ZlciA9IHRvRGF0ZSh0aGlzLmhvdmVyZWREYXkpO1xuICAgICAgICBjb25zdCBzdGFydCA9IHRvRGF0ZSh0aGlzLnNlbGVjdGVkUmFuZ2VTdGFydCk7XG5cbiAgICAgICAgaWYgKGhvdmVyIDw9IHN0YXJ0KSB7IHJldHVybiBmYWxzZTsgfVxuICAgICAgICByZXR1cm4gY3VycmVudCA+IHN0YXJ0ICYmIGN1cnJlbnQgPD0gaG92ZXI7XG4gICAgfVxuXG4gICAgcHVibGljIGdldERheVNlbGVjdGlvbkNsYXNzKGRheTogQ2FsZW5kYXJEYXkpOiBzdHJpbmcge1xuICAgICAgICBpZiAoIWRheS5pbkN1cnJlbnRNb250aCkgcmV0dXJuICdkaXNhYmxlZCc7XG4gICAgICAgIHJldHVybiB0aGlzLnJhbmdlID8gdGhpcy5nZXRSYW5nZVNlbGVjdGlvbkNsYXNzKGRheSkgOiB0aGlzLmdldFNpbmdsZURheVNlbGVjdGlvbkNsYXNzKGRheSk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBnZXRTaW5nbGVEYXlTZWxlY3Rpb25DbGFzcyhkYXk6IENhbGVuZGFyRGF5KTogc3RyaW5nIHtcbiAgICAgICAgaWYgKHRoaXMuc2VsZWN0ZWREYXkgJiYgZGF5LmRheSA9PT0gdGhpcy5zZWxlY3RlZERheS5kYXkgJiZcbiAgICAgICAgICAgIGRheS5tb250aCA9PT0gdGhpcy5zZWxlY3RlZERheS5tb250aCAmJiBkYXkueWVhciA9PT0gdGhpcy5zZWxlY3RlZERheS55ZWFyKSB7XG4gICAgICAgICAgICByZXR1cm4gJ3NsIHNpbmdsZSc7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuICcnO1xuICAgIH1cblxuICAgIHByaXZhdGUgZ2V0UmFuZ2VTZWxlY3Rpb25DbGFzcyhkYXk6IENhbGVuZGFyRGF5KTogc3RyaW5nIHtcbiAgICAgICAgaWYgKCF0aGlzLnNlbGVjdGVkUmFuZ2VTdGFydCkgcmV0dXJuICduc2wtc3RhcnQnO1xuXG4gICAgICAgIGNvbnN0IGN1cnJlbnQgPSB0b0RhdGUoZGF5KTtcbiAgICAgICAgY29uc3Qgc3RhcnQgPSB0b0RhdGUodGhpcy5zZWxlY3RlZFJhbmdlU3RhcnQpO1xuXG4gICAgICAgIGlmICghdGhpcy5zZWxlY3RlZFJhbmdlRW5kKSB7XG4gICAgICAgICAgICBpZiAoY3VycmVudC5nZXRUaW1lKCkgPT09IHN0YXJ0LmdldFRpbWUoKSkgcmV0dXJuICdzbCBzdGFydCc7XG5cbiAgICAgICAgICAgIGlmICh0aGlzLmhvdmVyZWREYXkpIHtcbiAgICAgICAgICAgICAgICBjb25zdCBob3ZlciA9IHRvRGF0ZSh0aGlzLmhvdmVyZWREYXkpO1xuICAgICAgICAgICAgICAgIGlmIChjdXJyZW50LmdldFRpbWUoKSA9PT0gaG92ZXIuZ2V0VGltZSgpICYmIGhvdmVyIDwgc3RhcnQpIHJldHVybiAnbnNsLXN0YXJ0JztcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgcmV0dXJuICduc2wtZW5kJztcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IGVuZCA9IHRvRGF0ZSh0aGlzLnNlbGVjdGVkUmFuZ2VFbmQpO1xuXG4gICAgICAgIGlmIChjdXJyZW50LmdldFRpbWUoKSA9PT0gc3RhcnQuZ2V0VGltZSgpKSByZXR1cm4gJ3NsIHN0YXJ0JztcbiAgICAgICAgaWYgKGN1cnJlbnQuZ2V0VGltZSgpID09PSBlbmQuZ2V0VGltZSgpKSByZXR1cm4gJ3NsIGVuZCc7XG4gICAgICAgIGlmIChjdXJyZW50ID4gc3RhcnQgJiYgY3VycmVudCA8IGVuZCkgcmV0dXJuICdzbCByYW5nZSc7XG5cbiAgICAgICAgcmV0dXJuICduc2wtc3RhcnQnO1xuICAgIH1cblxuICAgIHB1YmxpYyBhcHBseVNlbGVjdGVkRGF0ZSgpOiB2b2lkIHtcbiAgICAgICAgaWYgKCF0aGlzLnJhbmdlICYmIHRoaXMuc2VsZWN0ZWREYXkpIHtcbiAgICAgICAgICAgIGNvbnN0IGRhdGUgPSB0b0RhdGUodGhpcy5zZWxlY3RlZERheSlcbiAgICAgICAgICAgIHRoaXMuY2FsZW5kYXJSZXNwb25zZS5lbWl0KGRhdGUpO1xuICAgICAgICB9IGVsc2UgaWYgKHRoaXMucmFuZ2UgJiYgdGhpcy5zZWxlY3RlZFJhbmdlU3RhcnQgJiYgdGhpcy5zZWxlY3RlZFJhbmdlRW5kKSB7XG4gICAgICAgICAgICBjb25zdCBzdGFydCA9IHRvRGF0ZSh0aGlzLnNlbGVjdGVkUmFuZ2VTdGFydCk7XG4gICAgICAgICAgICBjb25zdCBlbmQgPXRvRGF0ZSh0aGlzLnNlbGVjdGVkUmFuZ2VFbmQpO1xuICAgICAgICAgICAgdGhpcy5jYWxlbmRhclJlc3BvbnNlLmVtaXQoW3N0YXJ0LCBlbmRdKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHB1YmxpYyBjbGVhclNlbGVjdGVkRGF0ZSgpIHtcbiAgICAgICAgdGhpcy5zZWxlY3RlZERheSA9IG51bGw7XG4gICAgICAgIHRoaXMuc2VsZWN0ZWRSYW5nZUVuZCA9IG51bGw7XG4gICAgICAgIHRoaXMuc2VsZWN0ZWRSYW5nZVN0YXJ0ID0gbnVsbDtcbiAgICAgICAgdGhpcy5jbGVhclNlbGVjdGlvbkRhdGUuZW1pdCgpO1xuICAgIH1cblxuICAgIHB1YmxpYyBvbkhvdmVyRGF5KGRheTogQ2FsZW5kYXJEYXkpOiB2b2lkIHtcbiAgICAgICAgaWYgKHRoaXMuc2VsZWN0ZWRSYW5nZUVuZCkgeyByZXR1cm47IH1cbiAgICAgICAgdGhpcy5ob3ZlcmVkRGF5ID0gZGF5O1xuICAgIH1cblxuICAgIHB1YmxpYyBjbGVhckhvdmVyKCk6IHZvaWQgeyB0aGlzLmhvdmVyZWREYXkgPSBudWxsOyB9XG5cbiAgICBwdWJsaWMgb25TZWxlY3REYXkoZGF5OiBDYWxlbmRhckRheSk6IHZvaWQge1xuICAgICAgICBpZiAoIWRheS5pbkN1cnJlbnRNb250aCkgcmV0dXJuO1xuXG4gICAgICAgIGlmICghdGhpcy5yYW5nZSkge1xuICAgICAgICAgICAgdGhpcy5zZWxlY3RlZERheSA9IGRheTtcbiAgICAgICAgICAgIGNvbnN0IGN1cnJlbnREYXRlID0gdG9EYXRlKGRheSlcbiAgICAgICAgICAgIHRoaXMuY2FsZW5kYXJSZXNwb25zZS5lbWl0KGN1cnJlbnREYXRlKTtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICghdGhpcy5zZWxlY3RlZFJhbmdlU3RhcnQgfHwgdGhpcy5zZWxlY3RlZFJhbmdlRW5kKSB7XG4gICAgICAgICAgICB0aGlzLnNlbGVjdGVkUmFuZ2VTdGFydCA9IGRheTtcbiAgICAgICAgICAgIHRoaXMuc2VsZWN0ZWRSYW5nZUVuZCA9IG51bGw7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBjb25zdCBzZWxlY3RlZERhdGUgPSB0b0RhdGUoZGF5KTtcbiAgICAgICAgICAgIGNvbnN0IHN0YXJ0RGF0ZSA9IHRvRGF0ZSh0aGlzLnNlbGVjdGVkUmFuZ2VTdGFydCk7XG4gICAgICAgICAgICBzZWxlY3RlZERhdGUgPj0gc3RhcnREYXRlID8gdGhpcy5zZWxlY3RlZFJhbmdlRW5kID0gZGF5IDogdGhpcy5zZWxlY3RlZFJhbmdlU3RhcnQgPSBkYXk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0TW9udGhHcmlkKCk6IENhbGVuZGFyRGF5W11bXSB7XG4gICAgICAgIGxldCB3ZWVrOiBDYWxlbmRhckRheVtdID0gW107XG5cbiAgICAgICAgY29uc3QgdG9kYXkgPSBuZXcgRGF0ZSgpO1xuICAgICAgICBjb25zdCBncmlkOiBDYWxlbmRhckRheVtdW10gPSBbXTtcbiAgICAgICAgY29uc3QgYmFzZURhdGUgPSB0aGlzLmN1cnJlbnREYXRlO1xuICAgICAgICBjb25zdCBtb250aCA9IGJhc2VEYXRlLmdldE1vbnRoKCk7XG4gICAgICAgIGNvbnN0IHllYXIgPSBiYXNlRGF0ZS5nZXRGdWxsWWVhcigpO1xuXG4gICAgICAgIGNvbnN0IGZpcnN0RGF5ID0gbmV3IERhdGUoeWVhciwgbW9udGgsIDEpO1xuICAgICAgICBjb25zdCBzdGFydFdlZWtkYXkgPSAoZmlyc3REYXkuZ2V0RGF5KCkgKyA2KSAlIDc7XG4gICAgICAgIGNvbnN0IGRheXNJbk1vbnRoID0gbmV3IERhdGUoeWVhciwgbW9udGggKyAxLCAwKS5nZXREYXRlKCk7XG4gICAgICAgIGNvbnN0IGRheXNJblByZXZNb250aCA9IG5ldyBEYXRlKHllYXIsIG1vbnRoLCAwKS5nZXREYXRlKCk7XG5cbiAgICAgICAgLy8gZmlsbCBkYXlzIGZyb20gcHJldmlvdXMgbW9udGhcbiAgICAgICAgZm9yIChsZXQgaSA9IHN0YXJ0V2Vla2RheSAtIDE7IGkgPj0gMDsgaS0tKSB7XG4gICAgICAgICAgICBjb25zdCBkYXkgPSBkYXlzSW5QcmV2TW9udGggLSBpO1xuICAgICAgICAgICAgd2Vlay5wdXNoKHsgZGF5LCBtb250aDogbW9udGggLSAxLCB5ZWFyLCBpc1RvZGF5OiBmYWxzZSwgaW5DdXJyZW50TW9udGg6IGZhbHNlIH0pO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gZmlsbCBkYXlzIGZyb20gY3VycmVudCBtb250aFxuICAgICAgICBmb3IgKGxldCBkID0gMTsgZCA8PSBkYXlzSW5Nb250aDsgZCsrKSB7XG4gICAgICAgICAgICBjb25zdCBpc1RvZGF5ID0gZCA9PT0gdG9kYXkuZ2V0RGF0ZSgpICYmIG1vbnRoID09PSB0b2RheS5nZXRNb250aCgpICYmIHllYXIgPT09IHRvZGF5LmdldEZ1bGxZZWFyKCk7XG4gICAgICAgICAgICB3ZWVrLnB1c2goeyBkYXk6IGQsIG1vbnRoLCB5ZWFyLCBpc1RvZGF5LCBpbkN1cnJlbnRNb250aDogdHJ1ZSB9KTtcblxuICAgICAgICAgICAgaWYgKHdlZWsubGVuZ3RoID09PSA3KSB7IGdyaWQucHVzaCh3ZWVrKTsgd2VlayA9IFtdOyB9XG4gICAgICAgIH1cblxuICAgICAgICAvLyBmaWxsIHJlbWFpbmluZyBkYXlzIGZyb20gbmV4dCBtb250aFxuICAgICAgICBsZXQgbmV4dERheSA9IDE7XG4gICAgICAgIHdoaWxlICh3ZWVrLmxlbmd0aCA8IDcpIHtcbiAgICAgICAgICAgIHdlZWsucHVzaCh7IGRheTogbmV4dERheSsrLCBtb250aDogbW9udGggKyAxLCB5ZWFyLCBpc1RvZGF5OiBmYWxzZSwgaW5DdXJyZW50TW9udGg6IGZhbHNlIH0pO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgaGFzQ3VycmVudE1vbnRoRGF5ID0gd2Vlay5zb21lKGRheSA9PiBkYXkuaW5DdXJyZW50TW9udGgpO1xuICAgICAgICBpZiAoaGFzQ3VycmVudE1vbnRoRGF5KSB7IGdyaWQucHVzaCh3ZWVrKTsgfVxuXG4gICAgICAgIHJldHVybiBncmlkO1xuICAgIH1cblxufSIsIjxzZWN0aW9uIGNsYXNzPVwiZ3Jhdml0eS1jYWxlbmRhci1oZWFkZXJcIj5cbiAgICA8ZGl2IGNsYXNzPVwicHJldmlvdXMtYnV0dG9uXCI+XG4gICAgICAgIDxncmF2aXR5LWljb24gKm5nSWY9XCIhKG5hdlR5cGUgPT09ICduZXh0JylcIiBbc3R5bGUuLS1pY29uLWNvbG9yXT1cIid2YXIoLS10ZXh0LWhpZ2hsaWdodC1wcmltYXJ5KSdcIiBbaWNvbk5hbWVdPVwiJ2Fycm93LWxlZnQnXCJcbiAgICAgICAgICAgICAgICAgICAgICBbaWNvblNpemVdPVwiJ3NtLTEyJ1wiIChjbGljayk9XCJjdXJyZW50RGF0ZSA9IGNoYW5nZU1vbnRoKC0xLCBjdXJyZW50RGF0ZSlcIiA+PC9ncmF2aXR5LWljb24+XG4gICAgPC9kaXY+XG5cbiAgICA8ZGl2IGNsYXNzPVwibW9udGgteWVhci1sYWJlbFwiPlxuICAgICAgICA8Z3Jhdml0eS1kcm9wZG93bi1sYWJlbCBbZm9udENsYXNzXT1cIidoci10aXRsZSBzbS1ib2xkJ1wiIFtzaXplXT1cIidzbSdcIiBbbGFiZWxdPVwibW9udGhzTGlzdFtjdXJyZW50RGF0ZS5nZXRNb250aCgpXVwiPjwvZ3Jhdml0eS1kcm9wZG93bi1sYWJlbD5cbiAgICAgICAgPGdyYXZpdHktZHJvcGRvd24tbGFiZWwgW2ZvbnRDbGFzc109XCInaHItdGl0bGUgc20tYm9sZCdcIiBbc2l6ZV09XCInc20nXCIgW2xhYmVsXT1cImN1cnJlbnREYXRlLmdldEZ1bGxZZWFyKCkudG9TdHJpbmcoKVwiPjwvZ3Jhdml0eS1kcm9wZG93bi1sYWJlbD5cbiAgICA8L2Rpdj5cblxuICAgIDxkaXYgY2xhc3M9XCJuZXh0LWJ1dHRvblwiPlxuICAgICAgICA8Z3Jhdml0eS1pY29uICpuZ0lmPVwiIShuYXZUeXBlID09PSAncHJldicpXCIgW3N0eWxlLi0taWNvbi1jb2xvcl09XCIndmFyKC0tdGV4dC1oaWdobGlnaHQtcHJpbWFyeSknXCIgW2ljb25OYW1lXT1cIidhcnJvdy1yaWdodCdcIlxuICAgICAgICAgICAgICAgICAgICAgIFtpY29uU2l6ZV09XCInc20tMTInXCIgKGNsaWNrKT1cImN1cnJlbnREYXRlID0gY2hhbmdlTW9udGgoMSwgY3VycmVudERhdGUpXCI+PC9ncmF2aXR5LWljb24+XG4gICAgPC9kaXY+XG48L3NlY3Rpb24+XG5cbjxzZWN0aW9uIGNsYXNzPVwiZ3Jhdml0eS1jYWxlbmRhci1ib2R5XCI+XG4gICAgPHNlY3Rpb24gY2xhc3M9XCJkYXlzLW5hbWUtbGluZVwiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwiZGF5cy1uYW1lXCI+XG4gICAgICAgICAgICA8c3BhbiBjbGFzcz1cImhyLWJvZHkgc20tcmVndWxhclwiICpuZ0Zvcj1cImxldCBkYXkgb2YgZGF5c0xpc3RcIj57e2RheX19PC9zcGFuPlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPGRpdiBjbGFzcz1cInNlcGFyYXRvci1saW5lXCI+PC9kaXY+XG4gICAgPC9zZWN0aW9uPlxuXG4gICAgPHNlY3Rpb24gY2xhc3M9XCJkYXlzLW51bWJlci1zZWxlY3RvclwiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwiZGF5cy1udW1iZXItdGFibGVcIj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ3ZWVrLXJvd1wiICpuZ0Zvcj1cImxldCB3ZWVrIG9mIGdldE1vbnRoR3JpZCgpOyB0cmFja0J5OiB0cmFja0J5V2Vla1wiPlxuICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImhyLWJvZHkgc20tcmVndWxhclwiICpuZ0Zvcj1cImxldCBkIG9mIHdlZWs7IHRyYWNrQnk6IHRyYWNrQnlEYXlcIlxuICAgICAgICAgICAgICAgICAgICBbbmdDbGFzc109XCJkaXNhYmxlZCA/ICdkaXNhYmxlZCcgOiBnZXREYXlTZWxlY3Rpb25DbGFzcyhkKVwiXG4gICAgICAgICAgICAgICAgICAgIFtjbGFzcy5kaXNhYmxlZF09XCIhZC5pbkN1cnJlbnRNb250aFwiIFtjbGFzcy50b2RheV09XCJkLmlzVG9kYXlcIiBbY2xhc3MucHJldmlld109XCJyYW5nZSA/IGlzUHJldmlldyhkKSA6IG51bGxcIlxuICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwib25TZWxlY3REYXkoZClcIiAobW91c2VlbnRlcik9XCJyYW5nZSA/IG9uSG92ZXJEYXkoZCkgOiBudWxsXCIgKG1vdXNlbGVhdmUpPVwicmFuZ2UgPyBjbGVhckhvdmVyKCkgOiBudWxsXCI+XG4gICAgICAgICAgICAgICAge3sgZC5kYXkgfX1cbiAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuXG4gICAgICAgIDxkaXYgY2xhc3M9XCJhY3Rpb24tc2VjdGlvblwiPlxuICAgICAgICAgICAgPGdyYXZpdHktbGluayAqbmdJZj1cImFjdGlvbnNTZWN0aW9uXCIgW2xpbmtUZXh0XT1cImkxOG4uY2xlYXJcIiBbc3RhdGVdPVwiIWlzRGF0ZVNlbGVjdGVkKCkgPyAnZGlzYWJsZWQnIDogJ2FjdGl2ZSdcIiAoY2xpY2spPVwiY2xlYXJTZWxlY3RlZERhdGUoKVwiPjwvZ3Jhdml0eS1saW5rPlxuICAgICAgICAgICAgPGdyYXZpdHktYnV0dG9uICpuZ0lmPVwiYWN0aW9uc1NlY3Rpb25cIiBbc2l6ZV09XCInc20nXCIgW3R5cGVdPVwiJ3RlcnRpYXJ5J1wiIFtkaXNhYmxlZF09XCIhaXNEYXRlU2VsZWN0ZWQoKVwiIChjbGljayk9XCJhcHBseVNlbGVjdGVkRGF0ZSgpXCI+e3tpMThuLmFwcGx5fX08L2dyYXZpdHktYnV0dG9uPlxuICAgICAgICA8L2Rpdj5cbiAgICA8L3NlY3Rpb24+XG48L3NlY3Rpb24+XG4iXX0=