@progressio_resources/gravity-design-system 3.6.5 → 3.6.7

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (35) hide show
  1. package/esm2022/lib/components/gravity-calendar-next/components/day-calendar/day-calendar.component.mjs +85 -30
  2. package/esm2022/lib/components/gravity-calendar-next/components/day-calendar/range-days-calendar.utils.mjs +197 -46
  3. package/esm2022/lib/components/gravity-calendar-next/components/month-calendar/month-calendar.component.mjs +26 -10
  4. package/esm2022/lib/components/gravity-calendar-next/components/year-calendar/year-calendar.component.mjs +27 -9
  5. package/esm2022/lib/components/gravity-calendar-next/gravity-calendar-next.component.mjs +30 -20
  6. package/esm2022/lib/components/gravity-calendar-next/shared/calendar.constants.mjs +43 -3
  7. package/esm2022/lib/components/gravity-calendar-next/shared/calendar.modal.mjs +1 -1
  8. package/esm2022/lib/components/gravity-calendar-next/shared/calendar.utils.mjs +101 -6
  9. package/esm2022/lib/components/gravity-detail-container/gravity-detail-container.component.mjs +54 -12
  10. package/esm2022/lib/components/gravity-dropdown-label/gravity-dropdown-label.component.mjs +3 -3
  11. package/esm2022/lib/components/gravity-icon-button/gravity-icon-button.component.mjs +2 -2
  12. package/esm2022/lib/components/gravity-link/gravity-link.component.mjs +2 -2
  13. package/esm2022/lib/components/gravity-text-field/gravity-text-field.component.mjs +12 -6
  14. package/esm2022/lib/gravity-design-system.module.mjs +1 -4
  15. package/esm2022/lib/layout/gravity-header/gravity-header.component.mjs +3 -3
  16. package/esm2022/lib/layout/gravity-menu/gravity-menu.component.mjs +4 -5
  17. package/esm2022/lib/services/gravity-responsive.service.mjs +47 -0
  18. package/fesm2022/progressio_resources-gravity-design-system.mjs +599 -230
  19. package/fesm2022/progressio_resources-gravity-design-system.mjs.map +1 -1
  20. package/lib/components/gravity-calendar-next/components/day-calendar/day-calendar.component.d.ts +57 -10
  21. package/lib/components/gravity-calendar-next/components/day-calendar/range-days-calendar.utils.d.ts +4 -1
  22. package/lib/components/gravity-calendar-next/components/month-calendar/month-calendar.component.d.ts +38 -6
  23. package/lib/components/gravity-calendar-next/components/year-calendar/year-calendar.component.d.ts +39 -5
  24. package/lib/components/gravity-calendar-next/gravity-calendar-next.component.d.ts +48 -6
  25. package/lib/components/gravity-calendar-next/shared/calendar.constants.d.ts +33 -3
  26. package/lib/components/gravity-calendar-next/shared/calendar.modal.d.ts +6 -2
  27. package/lib/components/gravity-calendar-next/shared/calendar.utils.d.ts +7 -2
  28. package/lib/components/gravity-detail-container/gravity-detail-container.component.d.ts +13 -3
  29. package/lib/components/gravity-text-field/gravity-text-field.component.d.ts +5 -3
  30. package/lib/gravity-design-system.module.d.ts +14 -15
  31. package/lib/layout/gravity-menu/gravity-menu.component.d.ts +2 -2
  32. package/lib/services/gravity-responsive.service.d.ts +11 -0
  33. package/package.json +1 -1
  34. package/esm2022/lib/components/gravity-calendar-next/components/dual-month-calendar/dual-month-calendar.component.mjs +0 -109
  35. package/lib/components/gravity-calendar-next/components/dual-month-calendar/dual-month-calendar.component.d.ts +0 -46
@@ -1,19 +1,22 @@
1
- import { toDate, toCalendarDay, getStartDate, changeDate } from '../../shared/calendar.utils';
2
- import { Component, EventEmitter, Input, Output } from '@angular/core';
1
+ import { Component, EventEmitter, Input, Output, ViewChild } from '@angular/core';
3
2
  import { CALENDAR_I18N, DAYS_SHORT_EN, DAYS_SHORT_ES, MONTHS_EN, MONTHS_ES } from "../../shared/calendar.constants";
4
- import { getRangeSelectionClass, isPreview, onApplyRageDate, onClearHover, onHoverDay, onSelectRageDays, processPreselectedRangeDate } from "./range-days-calendar.utils";
3
+ import { dateToCalendarDay, getStartDate, changeDate, calendarDateToDate, isPeriodAvailable } from '../../shared/calendar.utils';
4
+ import { getRangeSelectionClass, isPreview, onApplyRageDate, onClearHover, onDateKeyup, onHoverDay, onSelectDaysRange, processPreselectedRangeDate, searchDate } from "./range-days-calendar.utils";
5
5
  import * as i0 from "@angular/core";
6
6
  import * as i1 from "@angular/common";
7
7
  import * as i2 from "../../../gravity-button/gravity-button.component";
8
- import * as i3 from "../../../gravity-icon/gravity-icon.component";
9
- import * as i4 from "../../../gravity-link/gravity-link.component";
10
- import * as i5 from "../../../gravity-dropdown-label/gravity-dropdown-label.component";
11
- import * as i6 from "../month-calendar/month-calendar.component";
12
- import * as i7 from "../year-calendar/year-calendar.component";
8
+ import * as i3 from "../../../gravity-icon-button/gravity-icon-button.component";
9
+ import * as i4 from "../../../gravity-icon/gravity-icon.component";
10
+ import * as i5 from "../../../gravity-text-field/gravity-text-field.component";
11
+ import * as i6 from "../../../gravity-link/gravity-link.component";
12
+ import * as i7 from "../../../gravity-dropdown-label/gravity-dropdown-label.component";
13
+ import * as i8 from "../month-calendar/month-calendar.component";
14
+ import * as i9 from "../year-calendar/year-calendar.component";
13
15
  export class DayCalendarComponent {
14
16
  constructor() {
15
17
  this.range = false;
16
18
  this.restart = false;
19
+ this.appyOnClose = false;
17
20
  this.currentDate = new Date();
18
21
  this.navType = 'both';
19
22
  this.clearHover = new EventEmitter();
@@ -22,18 +25,27 @@ export class DayCalendarComponent {
22
25
  this.hoverDay = new EventEmitter();
23
26
  this.openIntegratedCalendar = new EventEmitter();
24
27
  this.selectedRage = new EventEmitter();
25
- this.changeMonthYearResponse = new EventEmitter();
26
28
  this.calendarResponse = new EventEmitter();
29
+ this.changeMonthYearResponse = new EventEmitter();
30
+ this.endDateError = '';
31
+ this.startDateError = '';
32
+ this.endFieldDisabled = false;
33
+ this.startFieldDisabled = false;
34
+ this.selectedRangeEnd = null;
35
+ this.selectedRangeStart = null;
27
36
  this.showYearCalendar = false;
28
37
  this.showMonthCalendar = false;
38
+ this.focused = 'start';
29
39
  this.hoveredDay = null;
30
40
  this.selectedDay = null;
31
- this.selectedRangeEnd = null;
32
- this.selectedRangeStart = null;
33
41
  this.changeDate = changeDate;
34
42
  this.isPreview = isPreview;
43
+ this.searchDate = searchDate;
35
44
  this.onHoverDay = onHoverDay;
45
+ this.onDateKeyup = onDateKeyup;
36
46
  this.onClearHover = onClearHover;
47
+ this.calendarDateToDate = calendarDateToDate;
48
+ this.isPeriodAvailable = isPeriodAvailable;
37
49
  }
38
50
  get i18n() { return CALENDAR_I18N[this.appearance.language]; }
39
51
  get monthsList() { return this.appearance.language === 'en' ? MONTHS_EN : MONTHS_ES; }
@@ -44,18 +56,22 @@ export class DayCalendarComponent {
44
56
  }
45
57
  ngOnChanges(changes) {
46
58
  const shouldRestart = changes['restart'] && this.restart;
59
+ const shouldAppy = changes['appyOnClose'] && this.appyOnClose;
47
60
  const shouldProcessPreSelected = changes['preSelectedDate'] && this.config.initDate;
61
+ if (shouldAppy) {
62
+ this.applySelectedDate();
63
+ }
48
64
  if (shouldRestart || shouldProcessPreSelected) {
49
65
  this.processInitDate();
50
66
  }
51
67
  }
52
68
  processInitDate() {
53
- if (this.range && Array.isArray(this.config.initDate)) {
54
- processPreselectedRangeDate(this);
69
+ if (this.range) {
70
+ setTimeout(() => { processPreselectedRangeDate(this); }, 0);
55
71
  }
56
72
  else if (this.config.initDate instanceof Date) {
57
- this.selectedDay = toCalendarDay(this.config.initDate);
58
73
  this.currentDate = getStartDate(this.config.initDate);
74
+ this.selectedDay = dateToCalendarDay(this.config.initDate);
59
75
  }
60
76
  }
61
77
  isDateSelected() {
@@ -88,27 +104,59 @@ export class DayCalendarComponent {
88
104
  return;
89
105
  if (!this.range) {
90
106
  this.selectedDay = day;
91
- const currentDate = toDate(day);
107
+ const currentDate = calendarDateToDate(day);
92
108
  this.calendarResponse.emit(currentDate);
93
109
  }
94
110
  else {
95
- onSelectRageDays(this, day);
111
+ onSelectDaysRange(this, day);
96
112
  this.selectedRage.emit(day);
97
113
  }
98
114
  }
99
115
  applySelectedDate() {
100
- if (!this.range && this.selectedDay) {
101
- const date = toDate(this.selectedDay);
102
- this.calendarResponse.emit(date);
116
+ if (this.range) {
117
+ if (this.selectedRangeStart && this.selectedRangeEnd) {
118
+ onApplyRageDate(this);
119
+ }
120
+ else if (this.endDateField && this.startDateField) {
121
+ this.clearSelectedDate('all');
122
+ }
103
123
  }
104
- else if (this.range && this.selectedRangeStart && this.selectedRangeEnd) {
105
- onApplyRageDate(this);
124
+ else if (this.selectedDay) {
125
+ const date = calendarDateToDate(this.selectedDay);
126
+ this.calendarResponse.emit(date);
106
127
  }
107
128
  }
108
- clearSelectedDate() {
129
+ clearSelectedDate(clearTarget) {
130
+ if (this.range && (clearTarget === 'all' || clearTarget === 'end')) {
131
+ this.endDateError = '';
132
+ this.endDateField.focus();
133
+ this.selectedRangeEnd = null;
134
+ this.startFieldDisabled = false;
135
+ this.endDateField.inputValue = '';
136
+ if (this.selectedRangeStart) {
137
+ this.currentDate = calendarDateToDate(this.selectedRangeStart);
138
+ }
139
+ }
140
+ if (this.range && (clearTarget === 'all' || clearTarget === 'start')) {
141
+ this.startDateError = '';
142
+ this.startDateField.focus();
143
+ this.endFieldDisabled = false;
144
+ this.selectedRangeStart = null;
145
+ this.startDateField.inputValue = '';
146
+ if (this.selectedRangeEnd) {
147
+ this.currentDate = calendarDateToDate(this.selectedRangeEnd);
148
+ }
149
+ }
150
+ if (this.range && this.selectedRangeStart === null && this.selectedRangeEnd === null) {
151
+ this.focused = 'start';
152
+ this.startDateField.focus();
153
+ this.currentDate = new Date();
154
+ }
109
155
  this.selectedDay = null;
110
- this.selectedRangeEnd = null;
111
- this.selectedRangeStart = null;
156
+ this.notification = null;
157
+ if (!this.range) {
158
+ this.currentDate = new Date();
159
+ }
112
160
  this.clearSelection.emit();
113
161
  }
114
162
  handleCalendarResponse(date, isMonth) {
@@ -174,11 +222,11 @@ export class DayCalendarComponent {
174
222
  return grid;
175
223
  }
176
224
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: DayCalendarComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
177
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: DayCalendarComponent, selector: "day-calendar", inputs: { initYear: "initYear", initMonth: "initMonth", config: "config", range: "range", restart: "restart", currentDate: "currentDate", appearance: "appearance", navType: "navType" }, outputs: { clearHover: "clearHover", clearSelection: "clearSelection", changeMonth: "changeMonth", hoverDay: "hoverDay", openIntegratedCalendar: "openIntegratedCalendar", selectedRage: "selectedRage", changeMonthYearResponse: "changeMonthYearResponse", calendarResponse: "response" }, usesOnChanges: true, ngImport: i0, template: "<section *ngIf=\"showMonthCalendar\">\n <month-calendar\n [integratedMode]=\"true\"\n [restart]=\"showMonthCalendar\"\n (response)=\"handleCalendarResponse($event, true)\" [initDate]=\"initMonth\"\n [appearance]=\"{language: appearance.language, isMobile: appearance.isMobile, actions: false, }\">\n </month-calendar>\n</section>\n\n<section *ngIf=\"showYearCalendar\">\n <year-calendar\n [integratedMode]=\"true\"\n [restart]=\"showYearCalendar\"\n (response)=\"handleCalendarResponse($event, false)\" [initDate]=\"initYear\"\n [appearance]=\"{language: appearance.language, isMobile: appearance.isMobile, actions: false}\">\n </year-calendar>\n</section>\n\n<ng-container *ngIf=\"!showYearCalendar && !showMonthCalendar\">\n <section class=\"gravity-calendar-header\" [class.mobile]=\"appearance.isMobile\">\n <div class=\"previous-button\" (click)=\"currentDate = changeDate(-1, currentDate, true); changeMonth.emit(-1)\">\n <gravity-icon *ngIf=\"(navType === 'prev' || navType === 'both') && appearance.state !== 'disabled'\" [style.--icon-color]=\"'var(--text-highlight-primary)'\"\n [iconName]=\"'arrow-left'\" [iconSize]=\"'sm-12'\" > </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()]\"\n [state]=\"appearance.state === 'disabled' ? 'inactive' : 'active'\" (onClickLabel)=\"handleOnClickDropdownLabel(true)\"> </gravity-dropdown-label>\n\n <gravity-dropdown-label [fontClass]=\"'hr-title sm-bold'\" [size]=\"'sm'\" [label]=\"currentDate.getFullYear().toString()\"\n [state]=\"appearance.state === 'disabled' ? 'inactive' : 'active'\" (onClickLabel)=\"handleOnClickDropdownLabel(false)\"> </gravity-dropdown-label>\n </div>\n\n <div class=\"next-button\" (click)=\"currentDate = changeDate(1, currentDate, true); changeMonth.emit(1)\">\n <gravity-icon *ngIf=\"(navType === 'next' || navType === 'both') && appearance.state !== 'disabled'\" [style.--icon-color]=\"'var(--text-highlight-primary)'\"\n [iconName]=\"'arrow-right'\" [iconSize]=\"'sm-12'\" > </gravity-icon>\n </div>\n </section>\n\n <section class=\"gravity-calendar-body\" [class.mobile]=\"appearance.isMobile\">\n <section class=\"days-name-line\">\n <div class=\"days-name\">\n <span class=\"hr-body\" [ngClass]=\"appearance.isMobile ? 'md-regular' : 'sm-regular'\"\n *ngFor=\"let day of daysList\"> {{ day }} </span>\n </div>\n\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\" *ngFor=\"let day of week; trackBy: trackByDay\"\n [class.preview]=\"range ? isPreview(this, day) : null\"\n [class.disabled]=\"!day.inCurrentMonth\" [class.today]=\"day.isToday\"\n (mouseenter)=\"range ? onHoverDay(this, day) : null; hoverDay.emit(day)\"\n (mouseleave)=\"range ? onClearHover(this) : null; this.clearHover.emit()\"\n [ngClass]=\"[appearance.isMobile ? 'md-regular' : 'sm-regular',\n appearance.state === 'disabled' ? 'disabled' : getDaySelectionClass(day)]\"\n (click)=\"onSelectDay(day)\"> {{ day.day }} </span>\n </div>\n </div>\n\n <div *ngIf=\"appearance.actions\" class=\"action-section\" >\n <gravity-link [linkText]=\"i18n.clear\"\n [state]=\"!isDateSelected() ? 'disabled' : 'active'\" (click)=\"clearSelectedDate()\"> </gravity-link>\n\n <gravity-button [size]=\"'sm'\" [type]=\"'tertiary'\"\n [disabled]=\"!isDateSelected()\" (click)=\"applySelectedDate()\"> {{i18n.apply}} </gravity-button>\n </div>\n </section>\n </section>\n</ng-container>\n", styles: [":root{--gravity-spacing-none: 0;--gravity-spacing-xxxs: .125rem;--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}.next-button,.previous-button{cursor:pointer;padding:var(--gravity-spacing-xs);border-radius:var(--gravity-spacing-xs)}.next-button:not(.disabled):hover,.previous-button:not(.disabled):hover{background:var(--bg-button-active-tertiary)}.next-button.disabled,.previous-button.disabled{cursor:default;pointer-events:none;--icon-color: var(--on-bg-disabled)}.separator-line{border-bottom:2px solid var(--divider-menu-active-primary)}.action-section{height:25px;display:flex;align-self:stretch;align-items:center;justify-content:space-between}.gravity-calendar-header{gap:0;width:268px;height:auto;display:flex;padding-top:0;align-items:center;justify-content:space-between}.gravity-calendar-header .month-year-label{display:flex;gap:var(--gravity-spacing-sm)}.gravity-calendar-header.mobile{width:100%}.gravity-calendar-body{width:268px}.gravity-calendar-body .days-name-line{display:flex;flex-direction:column;gap:var(--gravity-spacing-xs);padding-bottom:var(--gravity-spacing-xs)}.gravity-calendar-body .days-name-line .days-name{display:flex;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:268px}.gravity-calendar-body .days-number-selector{display:flex;align-self:stretch;flex-direction:column;gap:var(--gravity-spacing-sm)}.gravity-calendar-body .days-number-selector .days-number-table{display:flex;min-height:150px;flex-direction:column}.gravity-calendar-body .days-number-selector .days-number-table .week-row{height:25px;display:flex;align-self:stretch}.gravity-calendar-body .days-number-selector .days-number-table .week-row span{gap:10px;flex:1 0 0;width:31px;height:25px;display:flex;cursor:pointer;align-items:center;justify-content:center;border-radius:var(--gravity-spacing-xs);color:var(--on-bg-button-pressed-tertiary);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.mobile{width:100%;height:auto}.gravity-calendar-body.mobile .days-name-line .separator-line{width:100%}.gravity-calendar-body.mobile .days-number-selector{gap:0}.gravity-calendar-body.mobile .days-number-selector .days-number-table{min-height:270px}.gravity-calendar-body.mobile .days-number-selector .days-number-table .week-row{height:43px}.gravity-calendar-body.mobile .days-number-selector .days-number-table .week-row span{width:51px;height:43px}\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", "iconName", "isLoading", "showContent", "size", "iconPosition", "customState", "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", "state"], outputs: ["onClickLabel"] }, { kind: "component", type: i6.MonthCalendarComponent, selector: "month-calendar", inputs: ["initDate", "restart", "appearance", "integratedMode"], outputs: ["clearSelection", "response"] }, { kind: "component", type: i7.YearCalendarComponent, selector: "year-calendar", inputs: ["initDate", "restart", "appearance", "integratedMode"], outputs: ["clearSelection", "response"] }] }); }
225
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: DayCalendarComponent, selector: "day-calendar", inputs: { initYear: "initYear", initMonth: "initMonth", config: "config", range: "range", restart: "restart", appyOnClose: "appyOnClose", currentDate: "currentDate", appearance: "appearance", navType: "navType" }, outputs: { clearHover: "clearHover", clearSelection: "clearSelection", changeMonth: "changeMonth", hoverDay: "hoverDay", openIntegratedCalendar: "openIntegratedCalendar", selectedRage: "selectedRage", calendarResponse: "calendarResponse", changeMonthYearResponse: "changeMonthYearResponse" }, viewQueries: [{ propertyName: "endDateField", first: true, predicate: ["endDate"], descendants: true }, { propertyName: "startDateField", first: true, predicate: ["startDate"], descendants: true }], usesOnChanges: true, ngImport: i0, template: "<section *ngIf=\"showMonthCalendar\">\n <month-calendar\n [config]=\"config\"\n [integratedMode]=\"true\"\n [restart]=\"showMonthCalendar\"\n (response)=\"handleCalendarResponse($event, true)\" [initDate]=\"initMonth\"\n [appearance]=\"{language: appearance.language, isMobile: appearance.isMobile, actions: false, }\">\n </month-calendar>\n</section>\n\n<section *ngIf=\"showYearCalendar\">\n <year-calendar\n [config]=\"config\"\n [integratedMode]=\"true\"\n [restart]=\"showYearCalendar\"\n (response)=\"handleCalendarResponse($event, false)\" [initDate]=\"initYear\"\n [appearance]=\"{language: appearance.language, isMobile: appearance.isMobile, actions: false}\">\n </year-calendar>\n</section>\n\n<div *ngIf=\"!showYearCalendar && !showMonthCalendar\" class=\"gravity-calendar-content\" [class.mobile]=\"appearance.isMobile\">\n <span *ngIf=\"!appearance.isMobile\" class=\"hr-label sm-bold title\">{{range ? i18n.select_range : i18n.select_date}}</span>\n\n <div *ngIf=\"range\" class=\"selected-dates\">\n <gravity-text-field #startDate\n [size]=\"'sm'\"\n [width]=\"'short'\"\n [label]=\"i18n.start_date\"\n [inputContentType]=\"'date'\"\n [supportText]=\"startDateError\"\n [placeholder]=\"i18n.date_placeholder\"\n [clickOnRightIcon]=\"!startFieldDisabled\"\n (keyup)=\"onDateKeyup(this, $event, 'start')\"\n (clickIconRight)=\"clearSelectedDate('start')\"\n (focusout)=\"searchDate(this, startDate.inputValue, 'start')\"\n [iconRight]=\"(selectedRangeStart || startDate.inputValue.length > 9) ? 'unsuccess' : ''\"\n (click)=\"focused = 'start'; selectedRangeStart ? currentDate = calendarDateToDate(selectedRangeStart) : null\"\n [customState]=\"startFieldDisabled ? 'disabled' : startDateError ? 'typed-error' : (startDate.inputValue.length < 1 ? 'default' : 'typing')\"/>\n\n <gravity-text-field #endDate\n [size]=\"'sm'\"\n [width]=\"'short'\"\n [label]=\"i18n.end_date\"\n [inputContentType]=\"'date'\"\n [supportText]=\"endDateError\"\n [placeholder]=\"i18n.date_placeholder\"\n [clickOnRightIcon]=\"!endFieldDisabled\"\n (keyup)=\"onDateKeyup(this, $event, 'end')\"\n (clickIconRight)=\"clearSelectedDate('end')\"\n (focusout)=\"searchDate(this, endDate.inputValue, 'end')\"\n [iconRight]=\"(selectedRangeEnd || endDate.inputValue.length > 9) ? 'unsuccess' : ''\"\n (click)=\" focused = 'end'; selectedRangeEnd ? currentDate = calendarDateToDate(selectedRangeEnd) : null\"\n [customState]=\"endFieldDisabled ? 'disabled' : endDateError ? 'typed-error' : (endDate.inputValue.length < 1 ? 'default' : 'typing')\"/>\n </div>\n\n <section class=\"gravity-calendar-header\" [class.mobile]=\"appearance.isMobile\">\n <gravity-icon-button [type]=\"'primary'\" [size]=\"'sm'\" [icon]=\"'arrow-left'\" [supportText]=\"i18n.preview_month\"\n (clickOnIcon)=\"currentDate = changeDate(-1, currentDate, true); changeMonth.emit(-1)\"\n [state]=\"(navType === 'prev' || navType === 'both') && (appearance.state !== 'disabled') &&\n isPeriodAvailable(currentDate, config.minDate, 'month', 'prev') ? 'active' : 'disabled'\"/>\n\n <div class=\"month-year-label\">\n <gravity-dropdown-label [fontClass]=\"'hr-title sm-bold'\" [size]=\"'sm'\" [label]=\"monthsList[currentDate.getMonth()]\"\n [state]=\"appearance.state === 'disabled' ? 'inactive' : 'active'\" (onClickLabel)=\"handleOnClickDropdownLabel(true)\"> </gravity-dropdown-label>\n\n <gravity-dropdown-label [fontClass]=\"'hr-title sm-bold'\" [size]=\"'sm'\" [label]=\"currentDate.getFullYear().toString()\"\n [state]=\"appearance.state === 'disabled' ? 'inactive' : 'active'\" (onClickLabel)=\"handleOnClickDropdownLabel(false)\"> </gravity-dropdown-label>\n </div>\n\n <gravity-icon-button [type]=\"'primary'\" [size]=\"'sm'\" [icon]=\"'arrow-right'\" [supportText]=\"i18n.next_month\"\n (clickOnIcon)=\"currentDate = changeDate(1, currentDate, true); changeMonth.emit(1)\"\n [state]=\"(navType === 'next' || navType === 'both') && (appearance.state !== 'disabled') &&\n isPeriodAvailable(currentDate, config.maxDate, 'month', 'next') ? 'active' : 'disabled'\"/>\n </section>\n\n <section class=\"gravity-calendar-body\" [class.mobile]=\"appearance.isMobile\">\n <section class=\"days-name-line\">\n <div class=\"days-name\">\n <span class=\"hr-body\" [ngClass]=\"appearance.isMobile ? 'md-regular' : 'sm-regular'\"\n *ngFor=\"let day of daysList\"> {{ day }} </span>\n </div>\n\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\" *ngFor=\"let day of week; trackBy: trackByDay\"\n [class.preview]=\"range ? isPreview(this, day) : null\"\n [class.disabled]=\"!day.inCurrentMonth\" [class.today]=\"day.isToday\"\n (mouseenter)=\"range ? onHoverDay(this, day) : null; hoverDay.emit(day)\"\n (mouseleave)=\"range ? onClearHover(this) : null; this.clearHover.emit()\"\n [ngClass]=\"[appearance.isMobile ? 'md-regular' : 'sm-regular',\n appearance.state === 'disabled' ? 'disabled' : getDaySelectionClass(day)]\"\n (click)=\"day.inCurrentMonth ? onSelectDay(day): null\"> {{ day.day }} </span>\n </div>\n </div>\n\n <div *ngIf=\"notification\" class=\"notification\" [class.error]=\"notification.error\">\n <gravity-icon [style.--icon-color]=\"'var(--notification-icon-color)'\" [iconSize]=\"'sm-12'\" [iconName]=\"'information-circle'\"/>\n <span class=\"hr-label sm-regular\">{{notification.text}}</span>\n </div>\n\n <div *ngIf=\"appearance.actions\" class=\"action-section\" >\n <gravity-link [linkText]=\"i18n.clear\" [state]=\"!isDateSelected() ? 'disabled' : 'active'\"\n (click)=\" isDateSelected() ? clearSelectedDate('all') : null\"> </gravity-link>\n\n <gravity-button [size]=\"'sm'\" [type]=\"'tertiary'\" [disabled]=\"!isDateSelected()\"\n (click)=\"isDateSelected() ? applySelectedDate() : null\"> {{i18n.apply}} </gravity-button>\n </div>\n </section>\n </section>\n</div>\n", styles: [":root{--gravity-spacing-none: 0;--gravity-spacing-xxxs: .125rem;--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}.next-button,.previous-button{cursor:pointer;padding:var(--gravity-spacing-xs);border-radius:var(--gravity-spacing-xs)}.next-button:not(.disabled):hover,.previous-button:not(.disabled):hover{background:var(--bg-button-active-tertiary)}.next-button.disabled,.previous-button.disabled{cursor:default;pointer-events:none;--icon-color: var(--on-bg-disabled)}.separator-line{border-bottom:2px solid var(--divider-menu-active-primary)}.action-section{height:25px;display:flex;align-self:stretch;align-items:center;justify-content:space-between}.gravity-calendar-content{display:flex;align-items:center;justify-items:center;flex-direction:column;gap:var(--gravity-spacing-md)}.gravity-calendar-content .title{color:var(--label-text-empty-enabled-primary)}.gravity-calendar-content .selected-dates{width:100%;display:flex;align-items:flex-start;gap:var(--gravity-spacing-xs)}.gravity-calendar-content .selected-dates ::ng-deep gravity-text-field .gravity-input-field{width:130px}.gravity-calendar-content .gravity-calendar-header{gap:0;width:268px;height:auto;display:flex;padding-top:0;align-items:center;justify-content:space-between}.gravity-calendar-content .gravity-calendar-header .month-year-label{display:flex;gap:var(--gravity-spacing-sm)}.gravity-calendar-content .gravity-calendar-header.mobile,.gravity-calendar-content .gravity-calendar-body{width:100%}.gravity-calendar-content .gravity-calendar-body .days-name-line{display:flex;flex-direction:column;gap:var(--gravity-spacing-xs);padding-bottom:var(--gravity-spacing-xs)}.gravity-calendar-content .gravity-calendar-body .days-name-line .days-name{display:flex;align-self:stretch;justify-content:space-between}.gravity-calendar-content .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-content .gravity-calendar-body .days-name-line .separator-line{width:100%}.gravity-calendar-content .gravity-calendar-body .days-number-selector{display:flex;align-self:stretch;flex-direction:column;gap:var(--gravity-spacing-sm)}.gravity-calendar-content .gravity-calendar-body .days-number-selector .days-number-table{display:flex;flex-direction:column}.gravity-calendar-content .gravity-calendar-body .days-number-selector .days-number-table .week-row{height:25px;display:flex;align-self:stretch}.gravity-calendar-content .gravity-calendar-body .days-number-selector .days-number-table .week-row span{gap:10px;flex:1 0 0;width:31px;height:25px;display:flex;cursor:pointer;align-items:center;justify-content:center;border-radius:var(--gravity-spacing-xs);color:var(--on-bg-button-pressed-tertiary);border:2px solid var(--bg-calender-primary)}.gravity-calendar-content .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-content .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-content .gravity-calendar-body .days-number-selector .days-number-table .week-row span.single,.gravity-calendar-content .gravity-calendar-body .days-number-selector .days-number-table .week-row span.start,.gravity-calendar-content .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-content .gravity-calendar-body .days-number-selector .days-number-table .week-row span.range,.gravity-calendar-content .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-content .gravity-calendar-body .days-number-selector .days-number-table .week-row span.start,.gravity-calendar-content .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-content .gravity-calendar-body .days-number-selector .days-number-table .week-row span.end,.gravity-calendar-content .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-content .gravity-calendar-body .days-number-selector .days-number-table .week-row span.in-slt:hover{border-color:var(--bg-button-pressed-primary)!important}.gravity-calendar-content .gravity-calendar-body .days-number-selector .days-number-table .week-row span.default{border-radius:0!important;border-color:transparent!important}.gravity-calendar-content .gravity-calendar-body .days-number-selector .days-number-table .week-row span.same-sln{border-radius:var(--gravity-spacing-xs)!important}.gravity-calendar-content .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-content .gravity-calendar-body .days-number-selector .notification{display:flex;align-items:center;align-self:stretch;gap:var(--gravity-spacing-xxs);border-radius:.3125rem;padding:var(--gravity-spacing-xs);color:var(--on-bg-button-active-tertiary);background:var(--bg-button-active-tertiary);--notification-icon-color: var(--on-bg-button-active-tertiary)}.gravity-calendar-content .gravity-calendar-body .days-number-selector .notification.error{color:var(--on-bg-button-active-negative);background:var(--bg-button-active-negative);--notification-icon-color: var(--on-bg-button-active-negative)}.gravity-calendar-content.mobile{width:100%;height:auto}.gravity-calendar-content.mobile .selected-dates ::ng-deep gravity-text-field{width:100%}.gravity-calendar-content.mobile .selected-dates ::ng-deep gravity-text-field .gravity-input-field{min-width:100%}.gravity-calendar-content.mobile .days-name-line .separator-line{width:100%}.gravity-calendar-content.mobile .days-number-selector .days-number-table .week-row,.gravity-calendar-content.mobile .days-number-selector .days-number-table span{height:43px!important}\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", "iconName", "isLoading", "showContent", "size", "iconPosition", "customState", "type"] }, { kind: "component", type: i3.GravityIconButtonComponent, selector: "gravity-icon-button", inputs: ["cypressTag", "icon", "supportText", "variant", "size", "type", "state", "badge"], outputs: ["clickOnIcon"] }, { kind: "component", type: i4.GravityIconComponent, selector: "gravity-icon", inputs: ["customIconColorVariable", "iconName", "iconSize", "hoverIcon", "size", "isCoin"] }, { kind: "component", type: i5.GravityTextFieldComponent, selector: "gravity-text-field", inputs: ["currentLang", "customInputValue", "customState", "cypressTag", "label", "prefix", "required", "supportText", "textFieldType", "clickOnLeftIcon", "clickOnRightIcon", "iconColor", "iconLeft", "iconRight", "autocomplete", "inputContentType", "placeholder", "validations", "size", "width"], outputs: ["clickIconLeft", "clickIconRight", "response"] }, { kind: "component", type: i6.GravityLinkComponent, selector: "gravity-link", inputs: ["linkText", "fontClass", "link", "cypressTag", "iconName", "target", "iconPosition", "iconSize", "state"] }, { kind: "component", type: i7.GravityDropdownLabelComponent, selector: "gravity-dropdown-label", inputs: ["label", "fontClass", "isOpen", "stopPropagation", "size", "state"], outputs: ["onClickLabel"] }, { kind: "component", type: i8.MonthCalendarComponent, selector: "month-calendar", inputs: ["config", "initDate", "restart", "appearance", "integratedMode"], outputs: ["clearSelection", "response"] }, { kind: "component", type: i9.YearCalendarComponent, selector: "year-calendar", inputs: ["config", "initDate", "restart", "appearance", "integratedMode"], outputs: ["clearSelection", "response"] }] }); }
178
226
  }
179
227
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: DayCalendarComponent, decorators: [{
180
228
  type: Component,
181
- args: [{ selector: 'day-calendar', template: "<section *ngIf=\"showMonthCalendar\">\n <month-calendar\n [integratedMode]=\"true\"\n [restart]=\"showMonthCalendar\"\n (response)=\"handleCalendarResponse($event, true)\" [initDate]=\"initMonth\"\n [appearance]=\"{language: appearance.language, isMobile: appearance.isMobile, actions: false, }\">\n </month-calendar>\n</section>\n\n<section *ngIf=\"showYearCalendar\">\n <year-calendar\n [integratedMode]=\"true\"\n [restart]=\"showYearCalendar\"\n (response)=\"handleCalendarResponse($event, false)\" [initDate]=\"initYear\"\n [appearance]=\"{language: appearance.language, isMobile: appearance.isMobile, actions: false}\">\n </year-calendar>\n</section>\n\n<ng-container *ngIf=\"!showYearCalendar && !showMonthCalendar\">\n <section class=\"gravity-calendar-header\" [class.mobile]=\"appearance.isMobile\">\n <div class=\"previous-button\" (click)=\"currentDate = changeDate(-1, currentDate, true); changeMonth.emit(-1)\">\n <gravity-icon *ngIf=\"(navType === 'prev' || navType === 'both') && appearance.state !== 'disabled'\" [style.--icon-color]=\"'var(--text-highlight-primary)'\"\n [iconName]=\"'arrow-left'\" [iconSize]=\"'sm-12'\" > </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()]\"\n [state]=\"appearance.state === 'disabled' ? 'inactive' : 'active'\" (onClickLabel)=\"handleOnClickDropdownLabel(true)\"> </gravity-dropdown-label>\n\n <gravity-dropdown-label [fontClass]=\"'hr-title sm-bold'\" [size]=\"'sm'\" [label]=\"currentDate.getFullYear().toString()\"\n [state]=\"appearance.state === 'disabled' ? 'inactive' : 'active'\" (onClickLabel)=\"handleOnClickDropdownLabel(false)\"> </gravity-dropdown-label>\n </div>\n\n <div class=\"next-button\" (click)=\"currentDate = changeDate(1, currentDate, true); changeMonth.emit(1)\">\n <gravity-icon *ngIf=\"(navType === 'next' || navType === 'both') && appearance.state !== 'disabled'\" [style.--icon-color]=\"'var(--text-highlight-primary)'\"\n [iconName]=\"'arrow-right'\" [iconSize]=\"'sm-12'\" > </gravity-icon>\n </div>\n </section>\n\n <section class=\"gravity-calendar-body\" [class.mobile]=\"appearance.isMobile\">\n <section class=\"days-name-line\">\n <div class=\"days-name\">\n <span class=\"hr-body\" [ngClass]=\"appearance.isMobile ? 'md-regular' : 'sm-regular'\"\n *ngFor=\"let day of daysList\"> {{ day }} </span>\n </div>\n\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\" *ngFor=\"let day of week; trackBy: trackByDay\"\n [class.preview]=\"range ? isPreview(this, day) : null\"\n [class.disabled]=\"!day.inCurrentMonth\" [class.today]=\"day.isToday\"\n (mouseenter)=\"range ? onHoverDay(this, day) : null; hoverDay.emit(day)\"\n (mouseleave)=\"range ? onClearHover(this) : null; this.clearHover.emit()\"\n [ngClass]=\"[appearance.isMobile ? 'md-regular' : 'sm-regular',\n appearance.state === 'disabled' ? 'disabled' : getDaySelectionClass(day)]\"\n (click)=\"onSelectDay(day)\"> {{ day.day }} </span>\n </div>\n </div>\n\n <div *ngIf=\"appearance.actions\" class=\"action-section\" >\n <gravity-link [linkText]=\"i18n.clear\"\n [state]=\"!isDateSelected() ? 'disabled' : 'active'\" (click)=\"clearSelectedDate()\"> </gravity-link>\n\n <gravity-button [size]=\"'sm'\" [type]=\"'tertiary'\"\n [disabled]=\"!isDateSelected()\" (click)=\"applySelectedDate()\"> {{i18n.apply}} </gravity-button>\n </div>\n </section>\n </section>\n</ng-container>\n", styles: [":root{--gravity-spacing-none: 0;--gravity-spacing-xxxs: .125rem;--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}.next-button,.previous-button{cursor:pointer;padding:var(--gravity-spacing-xs);border-radius:var(--gravity-spacing-xs)}.next-button:not(.disabled):hover,.previous-button:not(.disabled):hover{background:var(--bg-button-active-tertiary)}.next-button.disabled,.previous-button.disabled{cursor:default;pointer-events:none;--icon-color: var(--on-bg-disabled)}.separator-line{border-bottom:2px solid var(--divider-menu-active-primary)}.action-section{height:25px;display:flex;align-self:stretch;align-items:center;justify-content:space-between}.gravity-calendar-header{gap:0;width:268px;height:auto;display:flex;padding-top:0;align-items:center;justify-content:space-between}.gravity-calendar-header .month-year-label{display:flex;gap:var(--gravity-spacing-sm)}.gravity-calendar-header.mobile{width:100%}.gravity-calendar-body{width:268px}.gravity-calendar-body .days-name-line{display:flex;flex-direction:column;gap:var(--gravity-spacing-xs);padding-bottom:var(--gravity-spacing-xs)}.gravity-calendar-body .days-name-line .days-name{display:flex;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:268px}.gravity-calendar-body .days-number-selector{display:flex;align-self:stretch;flex-direction:column;gap:var(--gravity-spacing-sm)}.gravity-calendar-body .days-number-selector .days-number-table{display:flex;min-height:150px;flex-direction:column}.gravity-calendar-body .days-number-selector .days-number-table .week-row{height:25px;display:flex;align-self:stretch}.gravity-calendar-body .days-number-selector .days-number-table .week-row span{gap:10px;flex:1 0 0;width:31px;height:25px;display:flex;cursor:pointer;align-items:center;justify-content:center;border-radius:var(--gravity-spacing-xs);color:var(--on-bg-button-pressed-tertiary);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.mobile{width:100%;height:auto}.gravity-calendar-body.mobile .days-name-line .separator-line{width:100%}.gravity-calendar-body.mobile .days-number-selector{gap:0}.gravity-calendar-body.mobile .days-number-selector .days-number-table{min-height:270px}.gravity-calendar-body.mobile .days-number-selector .days-number-table .week-row{height:43px}.gravity-calendar-body.mobile .days-number-selector .days-number-table .week-row span{width:51px;height:43px}\n"] }]
229
+ args: [{ selector: 'day-calendar', template: "<section *ngIf=\"showMonthCalendar\">\n <month-calendar\n [config]=\"config\"\n [integratedMode]=\"true\"\n [restart]=\"showMonthCalendar\"\n (response)=\"handleCalendarResponse($event, true)\" [initDate]=\"initMonth\"\n [appearance]=\"{language: appearance.language, isMobile: appearance.isMobile, actions: false, }\">\n </month-calendar>\n</section>\n\n<section *ngIf=\"showYearCalendar\">\n <year-calendar\n [config]=\"config\"\n [integratedMode]=\"true\"\n [restart]=\"showYearCalendar\"\n (response)=\"handleCalendarResponse($event, false)\" [initDate]=\"initYear\"\n [appearance]=\"{language: appearance.language, isMobile: appearance.isMobile, actions: false}\">\n </year-calendar>\n</section>\n\n<div *ngIf=\"!showYearCalendar && !showMonthCalendar\" class=\"gravity-calendar-content\" [class.mobile]=\"appearance.isMobile\">\n <span *ngIf=\"!appearance.isMobile\" class=\"hr-label sm-bold title\">{{range ? i18n.select_range : i18n.select_date}}</span>\n\n <div *ngIf=\"range\" class=\"selected-dates\">\n <gravity-text-field #startDate\n [size]=\"'sm'\"\n [width]=\"'short'\"\n [label]=\"i18n.start_date\"\n [inputContentType]=\"'date'\"\n [supportText]=\"startDateError\"\n [placeholder]=\"i18n.date_placeholder\"\n [clickOnRightIcon]=\"!startFieldDisabled\"\n (keyup)=\"onDateKeyup(this, $event, 'start')\"\n (clickIconRight)=\"clearSelectedDate('start')\"\n (focusout)=\"searchDate(this, startDate.inputValue, 'start')\"\n [iconRight]=\"(selectedRangeStart || startDate.inputValue.length > 9) ? 'unsuccess' : ''\"\n (click)=\"focused = 'start'; selectedRangeStart ? currentDate = calendarDateToDate(selectedRangeStart) : null\"\n [customState]=\"startFieldDisabled ? 'disabled' : startDateError ? 'typed-error' : (startDate.inputValue.length < 1 ? 'default' : 'typing')\"/>\n\n <gravity-text-field #endDate\n [size]=\"'sm'\"\n [width]=\"'short'\"\n [label]=\"i18n.end_date\"\n [inputContentType]=\"'date'\"\n [supportText]=\"endDateError\"\n [placeholder]=\"i18n.date_placeholder\"\n [clickOnRightIcon]=\"!endFieldDisabled\"\n (keyup)=\"onDateKeyup(this, $event, 'end')\"\n (clickIconRight)=\"clearSelectedDate('end')\"\n (focusout)=\"searchDate(this, endDate.inputValue, 'end')\"\n [iconRight]=\"(selectedRangeEnd || endDate.inputValue.length > 9) ? 'unsuccess' : ''\"\n (click)=\" focused = 'end'; selectedRangeEnd ? currentDate = calendarDateToDate(selectedRangeEnd) : null\"\n [customState]=\"endFieldDisabled ? 'disabled' : endDateError ? 'typed-error' : (endDate.inputValue.length < 1 ? 'default' : 'typing')\"/>\n </div>\n\n <section class=\"gravity-calendar-header\" [class.mobile]=\"appearance.isMobile\">\n <gravity-icon-button [type]=\"'primary'\" [size]=\"'sm'\" [icon]=\"'arrow-left'\" [supportText]=\"i18n.preview_month\"\n (clickOnIcon)=\"currentDate = changeDate(-1, currentDate, true); changeMonth.emit(-1)\"\n [state]=\"(navType === 'prev' || navType === 'both') && (appearance.state !== 'disabled') &&\n isPeriodAvailable(currentDate, config.minDate, 'month', 'prev') ? 'active' : 'disabled'\"/>\n\n <div class=\"month-year-label\">\n <gravity-dropdown-label [fontClass]=\"'hr-title sm-bold'\" [size]=\"'sm'\" [label]=\"monthsList[currentDate.getMonth()]\"\n [state]=\"appearance.state === 'disabled' ? 'inactive' : 'active'\" (onClickLabel)=\"handleOnClickDropdownLabel(true)\"> </gravity-dropdown-label>\n\n <gravity-dropdown-label [fontClass]=\"'hr-title sm-bold'\" [size]=\"'sm'\" [label]=\"currentDate.getFullYear().toString()\"\n [state]=\"appearance.state === 'disabled' ? 'inactive' : 'active'\" (onClickLabel)=\"handleOnClickDropdownLabel(false)\"> </gravity-dropdown-label>\n </div>\n\n <gravity-icon-button [type]=\"'primary'\" [size]=\"'sm'\" [icon]=\"'arrow-right'\" [supportText]=\"i18n.next_month\"\n (clickOnIcon)=\"currentDate = changeDate(1, currentDate, true); changeMonth.emit(1)\"\n [state]=\"(navType === 'next' || navType === 'both') && (appearance.state !== 'disabled') &&\n isPeriodAvailable(currentDate, config.maxDate, 'month', 'next') ? 'active' : 'disabled'\"/>\n </section>\n\n <section class=\"gravity-calendar-body\" [class.mobile]=\"appearance.isMobile\">\n <section class=\"days-name-line\">\n <div class=\"days-name\">\n <span class=\"hr-body\" [ngClass]=\"appearance.isMobile ? 'md-regular' : 'sm-regular'\"\n *ngFor=\"let day of daysList\"> {{ day }} </span>\n </div>\n\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\" *ngFor=\"let day of week; trackBy: trackByDay\"\n [class.preview]=\"range ? isPreview(this, day) : null\"\n [class.disabled]=\"!day.inCurrentMonth\" [class.today]=\"day.isToday\"\n (mouseenter)=\"range ? onHoverDay(this, day) : null; hoverDay.emit(day)\"\n (mouseleave)=\"range ? onClearHover(this) : null; this.clearHover.emit()\"\n [ngClass]=\"[appearance.isMobile ? 'md-regular' : 'sm-regular',\n appearance.state === 'disabled' ? 'disabled' : getDaySelectionClass(day)]\"\n (click)=\"day.inCurrentMonth ? onSelectDay(day): null\"> {{ day.day }} </span>\n </div>\n </div>\n\n <div *ngIf=\"notification\" class=\"notification\" [class.error]=\"notification.error\">\n <gravity-icon [style.--icon-color]=\"'var(--notification-icon-color)'\" [iconSize]=\"'sm-12'\" [iconName]=\"'information-circle'\"/>\n <span class=\"hr-label sm-regular\">{{notification.text}}</span>\n </div>\n\n <div *ngIf=\"appearance.actions\" class=\"action-section\" >\n <gravity-link [linkText]=\"i18n.clear\" [state]=\"!isDateSelected() ? 'disabled' : 'active'\"\n (click)=\" isDateSelected() ? clearSelectedDate('all') : null\"> </gravity-link>\n\n <gravity-button [size]=\"'sm'\" [type]=\"'tertiary'\" [disabled]=\"!isDateSelected()\"\n (click)=\"isDateSelected() ? applySelectedDate() : null\"> {{i18n.apply}} </gravity-button>\n </div>\n </section>\n </section>\n</div>\n", styles: [":root{--gravity-spacing-none: 0;--gravity-spacing-xxxs: .125rem;--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}.next-button,.previous-button{cursor:pointer;padding:var(--gravity-spacing-xs);border-radius:var(--gravity-spacing-xs)}.next-button:not(.disabled):hover,.previous-button:not(.disabled):hover{background:var(--bg-button-active-tertiary)}.next-button.disabled,.previous-button.disabled{cursor:default;pointer-events:none;--icon-color: var(--on-bg-disabled)}.separator-line{border-bottom:2px solid var(--divider-menu-active-primary)}.action-section{height:25px;display:flex;align-self:stretch;align-items:center;justify-content:space-between}.gravity-calendar-content{display:flex;align-items:center;justify-items:center;flex-direction:column;gap:var(--gravity-spacing-md)}.gravity-calendar-content .title{color:var(--label-text-empty-enabled-primary)}.gravity-calendar-content .selected-dates{width:100%;display:flex;align-items:flex-start;gap:var(--gravity-spacing-xs)}.gravity-calendar-content .selected-dates ::ng-deep gravity-text-field .gravity-input-field{width:130px}.gravity-calendar-content .gravity-calendar-header{gap:0;width:268px;height:auto;display:flex;padding-top:0;align-items:center;justify-content:space-between}.gravity-calendar-content .gravity-calendar-header .month-year-label{display:flex;gap:var(--gravity-spacing-sm)}.gravity-calendar-content .gravity-calendar-header.mobile,.gravity-calendar-content .gravity-calendar-body{width:100%}.gravity-calendar-content .gravity-calendar-body .days-name-line{display:flex;flex-direction:column;gap:var(--gravity-spacing-xs);padding-bottom:var(--gravity-spacing-xs)}.gravity-calendar-content .gravity-calendar-body .days-name-line .days-name{display:flex;align-self:stretch;justify-content:space-between}.gravity-calendar-content .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-content .gravity-calendar-body .days-name-line .separator-line{width:100%}.gravity-calendar-content .gravity-calendar-body .days-number-selector{display:flex;align-self:stretch;flex-direction:column;gap:var(--gravity-spacing-sm)}.gravity-calendar-content .gravity-calendar-body .days-number-selector .days-number-table{display:flex;flex-direction:column}.gravity-calendar-content .gravity-calendar-body .days-number-selector .days-number-table .week-row{height:25px;display:flex;align-self:stretch}.gravity-calendar-content .gravity-calendar-body .days-number-selector .days-number-table .week-row span{gap:10px;flex:1 0 0;width:31px;height:25px;display:flex;cursor:pointer;align-items:center;justify-content:center;border-radius:var(--gravity-spacing-xs);color:var(--on-bg-button-pressed-tertiary);border:2px solid var(--bg-calender-primary)}.gravity-calendar-content .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-content .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-content .gravity-calendar-body .days-number-selector .days-number-table .week-row span.single,.gravity-calendar-content .gravity-calendar-body .days-number-selector .days-number-table .week-row span.start,.gravity-calendar-content .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-content .gravity-calendar-body .days-number-selector .days-number-table .week-row span.range,.gravity-calendar-content .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-content .gravity-calendar-body .days-number-selector .days-number-table .week-row span.start,.gravity-calendar-content .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-content .gravity-calendar-body .days-number-selector .days-number-table .week-row span.end,.gravity-calendar-content .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-content .gravity-calendar-body .days-number-selector .days-number-table .week-row span.in-slt:hover{border-color:var(--bg-button-pressed-primary)!important}.gravity-calendar-content .gravity-calendar-body .days-number-selector .days-number-table .week-row span.default{border-radius:0!important;border-color:transparent!important}.gravity-calendar-content .gravity-calendar-body .days-number-selector .days-number-table .week-row span.same-sln{border-radius:var(--gravity-spacing-xs)!important}.gravity-calendar-content .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-content .gravity-calendar-body .days-number-selector .notification{display:flex;align-items:center;align-self:stretch;gap:var(--gravity-spacing-xxs);border-radius:.3125rem;padding:var(--gravity-spacing-xs);color:var(--on-bg-button-active-tertiary);background:var(--bg-button-active-tertiary);--notification-icon-color: var(--on-bg-button-active-tertiary)}.gravity-calendar-content .gravity-calendar-body .days-number-selector .notification.error{color:var(--on-bg-button-active-negative);background:var(--bg-button-active-negative);--notification-icon-color: var(--on-bg-button-active-negative)}.gravity-calendar-content.mobile{width:100%;height:auto}.gravity-calendar-content.mobile .selected-dates ::ng-deep gravity-text-field{width:100%}.gravity-calendar-content.mobile .selected-dates ::ng-deep gravity-text-field .gravity-input-field{min-width:100%}.gravity-calendar-content.mobile .days-name-line .separator-line{width:100%}.gravity-calendar-content.mobile .days-number-selector .days-number-table .week-row,.gravity-calendar-content.mobile .days-number-selector .days-number-table span{height:43px!important}\n"] }]
182
230
  }], propDecorators: { initYear: [{
183
231
  type: Input
184
232
  }], initMonth: [{
@@ -189,6 +237,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
189
237
  type: Input
190
238
  }], restart: [{
191
239
  type: Input
240
+ }], appyOnClose: [{
241
+ type: Input
192
242
  }], currentDate: [{
193
243
  type: Input
194
244
  }], appearance: [{
@@ -207,10 +257,15 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
207
257
  type: Output
208
258
  }], selectedRage: [{
209
259
  type: Output
260
+ }], calendarResponse: [{
261
+ type: Output
210
262
  }], changeMonthYearResponse: [{
211
263
  type: Output
212
- }], calendarResponse: [{
213
- type: Output,
214
- args: ['response']
264
+ }], endDateField: [{
265
+ type: ViewChild,
266
+ args: ['endDate']
267
+ }], startDateField: [{
268
+ type: ViewChild,
269
+ args: ['startDate']
215
270
  }] } });
216
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF5LWNhbGVuZGFyLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2dyYXZpdHktZGVzaWduLXN5c3RlbS9zcmMvbGliL2NvbXBvbmVudHMvZ3Jhdml0eS1jYWxlbmRhci1uZXh0L2NvbXBvbmVudHMvZGF5LWNhbGVuZGFyL2RheS1jYWxlbmRhci5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9ncmF2aXR5LWRlc2lnbi1zeXN0ZW0vc3JjL2xpYi9jb21wb25lbnRzL2dyYXZpdHktY2FsZW5kYXItbmV4dC9jb21wb25lbnRzL2RheS1jYWxlbmRhci9kYXktY2FsZW5kYXIuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxFQUFDLE1BQU0sRUFBRSxhQUFhLEVBQUUsWUFBWSxFQUFFLFVBQVUsRUFBQyxNQUFNLDZCQUE2QixDQUFDO0FBQzVGLE9BQU8sRUFBQyxTQUFTLEVBQUUsWUFBWSxFQUFFLEtBQUssRUFBYSxNQUFNLEVBQWdCLE1BQU0sZUFBZSxDQUFDO0FBQy9GLE9BQU8sRUFBQyxhQUFhLEVBQUUsYUFBYSxFQUFFLGFBQWEsRUFBRSxTQUFTLEVBQUUsU0FBUyxFQUFDLE1BQU0saUNBQWlDLENBQUM7QUFDbEgsT0FBTyxFQUFDLHNCQUFzQixFQUFFLFNBQVMsRUFBRSxlQUFlLEVBQUUsWUFBWSxFQUFFLFVBQVUsRUFBRSxnQkFBZ0IsRUFBRSwyQkFBMkIsRUFBQyxNQUFNLDZCQUE2QixDQUFDOzs7Ozs7Ozs7QUFPeEssTUFBTSxPQUFPLG9CQUFvQjtJQUxqQztRQVNvQixVQUFLLEdBQVksS0FBSyxDQUFDO1FBQ3ZCLFlBQU8sR0FBWSxLQUFLLENBQUM7UUFDekIsZ0JBQVcsR0FBUyxJQUFJLElBQUksRUFBRSxDQUFDO1FBRS9CLFlBQU8sR0FBcUMsTUFBTSxDQUFBO1FBRWpELGVBQVUsR0FB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QUssR0FBRyxDQUFDLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBQyxFQUFFLE9BQU8sRUFBRSxLQUFLLEVBQUUsY0FBYyxFQUFFLEtBQUssRUFBRSxPQUFPLEVBQUUsQ0FBQyxDQUFDO1NBQzVIO1FBRUQsTUFBTSxrQkFBa0IsR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLGNBQWMsQ0FBQyxDQUFDO1FBQ2hFLElBQUksa0JBQWtCLEVBQUU7WUFDcEIsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztTQUNuQjtRQUVELE9BQU8sSUFBSSxDQUFDO0lBQ2hCLENBQUM7K0dBL0tRLG9CQUFvQjttR0FBcEIsb0JBQW9CLGdpQkNYakMsMnlJQXlFQTs7NEZEOURhLG9CQUFvQjtrQkFMaEMsU0FBUzsrQkFDSSxjQUFjOzhCQUtSLFFBQVE7c0JBQXZCLEtBQUs7Z0JBQ1UsU0FBUztzQkFBeEIsS0FBSztnQkFDVSxNQUFNO3NCQUFyQixLQUFLO2dCQUNVLEtBQUs7c0JBQXBCLEtBQUs7Z0JBQ1UsT0FBTztzQkFBdEIsS0FBSztnQkFDVSxXQUFXO3NCQUExQixLQUFLO2dCQUNVLFVBQVU7c0JBQXpCLEtBQUs7Z0JBQ1UsT0FBTztzQkFBdEIsS0FBSztnQkFFVyxVQUFVO3NCQUExQixNQUFNO2dCQUNVLGNBQWM7c0JBQTlCLE1BQU07Z0JBQ1UsV0FBVztzQkFBM0IsTUFBTTtnQkFDVSxRQUFRO3NCQUF4QixNQUFNO2dCQUNVLHNCQUFzQjtzQkFBdEMsTUFBTTtnQkFDVSxZQUFZO3NCQUE1QixNQUFNO2dCQUNVLHVCQUF1QjtzQkFBdkMsTUFBTTtnQkFDb0IsZ0JBQWdCO3NCQUExQyxNQUFNO3VCQUFDLFVBQVUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0NhbGVuZGFyQXBwZWFyYW5jZSwgQ2FsZW5kYXJDb25maWcsIENhbGVuZGFyRGF0ZX0gZnJvbSBcIi4uLy4uL3NoYXJlZC9jYWxlbmRhci5tb2RhbFwiO1xuaW1wb3J0IHt0b0RhdGUsIHRvQ2FsZW5kYXJEYXksIGdldFN0YXJ0RGF0ZSwgY2hhbmdlRGF0ZX0gZnJvbSAnLi4vLi4vc2hhcmVkL2NhbGVuZGFyLnV0aWxzJztcbmltcG9ydCB7Q29tcG9uZW50LCBFdmVudEVtaXR0ZXIsIElucHV0LCBPbkNoYW5nZXMsIE91dHB1dCwgU2ltcGxlQ2hhbmdlc30gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge0NBTEVOREFSX0kxOE4sIERBWVNfU0hPUlRfRU4sIERBWVNfU0hPUlRfRVMsIE1PTlRIU19FTiwgTU9OVEhTX0VTfSBmcm9tIFwiLi4vLi4vc2hhcmVkL2NhbGVuZGFyLmNvbnN0YW50c1wiO1xuaW1wb3J0IHtnZXRSYW5nZVNlbGVjdGlvbkNsYXNzLCBpc1ByZXZpZXcsIG9uQXBwbHlSYWdlRGF0ZSwgb25DbGVhckhvdmVyLCBvbkhvdmVyRGF5LCBvblNlbGVjdFJhZ2VEYXlzLCBwcm9jZXNzUHJlc2VsZWN0ZWRSYW5nZURhdGV9IGZyb20gXCIuL3JhbmdlLWRheXMtY2FsZW5kYXIudXRpbHNcIjtcblxuQENvbXBvbmVudCh7XG4gICAgc2VsZWN0b3I6ICdkYXktY2FsZW5kYXInLFxuICAgIHRlbXBsYXRlVXJsOiAnLi9kYXktY2FsZW5kYXIuY29tcG9uZW50Lmh0bWwnLFxuICAgIHN0eWxlVXJsczogWycuL2RheS1jYWxlbmRhci5jb21wb25lbnQuc2NzcyddXG59KVxuZXhwb3J0IGNsYXNzIERheUNhbGVuZGFyQ29tcG9uZW50IGltcGxlbWVudHMgT25DaGFuZ2VzIHtcbiAgICBASW5wdXQoKSBwdWJsaWMgaW5pdFllYXI6IERhdGU7XG4gICAgQElucHV0KCkgcHVibGljIGluaXRNb250aDogRGF0ZTtcbiAgICBASW5wdXQoKSBwdWJsaWMgY29uZmlnOiBDYWxlbmRhckNvbmZpZztcbiAgICBASW5wdXQoKSBwdWJsaWMgcmFuZ2U6IGJvb2xlYW4gPSBmYWxzZTtcbiAgICBASW5wdXQoKSBwdWJsaWMgcmVzdGFydDogYm9vbGVhbiA9IGZhbHNlO1xuICAgIEBJbnB1dCgpIHB1YmxpYyBjdXJyZW50RGF0ZTogRGF0ZSA9IG5ldyBEYXRlKCk7XG4gICAgQElucHV0KCkgcHVibGljIGFwcGVhcmFuY2U6IENhbGVuZGFyQXBwZWFyYW5jZTtcbiAgICBASW5wdXQoKSBwdWJsaWMgbmF2VHlwZTogJ3ByZXYnIHwgJ25leHQnIHwgJ2JvdGgnIHwgJ25vbmUnPSAnYm90aCdcblxuICAgIEBPdXRwdXQoKSBwdWJsaWMgY2xlYXJIb3ZlcjogRXZlbnRFbWl0dGVyPHZvaWQ+ID0gbmV3IEV2ZW50RW1pdHRlcjx2b2lkPigpO1xuICAgIEBPdXRwdXQoKSBwdWJsaWMgY2xlYXJTZWxlY3Rpb246IEV2ZW50RW1pdHRlcjx2b2lkPiA9IG5ldyBFdmVudEVtaXR0ZXI8dm9pZD4oKTtcbiAgICBAT3V0cHV0KCkgcHVibGljIGNoYW5nZU1vbnRoOiBFdmVudEVtaXR0ZXI8bnVtYmVyPiA9IG5ldyBFdmVudEVtaXR0ZXI8bnVtYmVyPigpO1xuICAgIEBPdXRwdXQoKSBwdWJsaWMgaG92ZXJEYXk6IEV2ZW50RW1pdHRlcjxDYWxlbmRhckRhdGU+ID0gbmV3IEV2ZW50RW1pdHRlcjxDYWxlbmRhckRhdGU+KCk7XG4gICAgQE91dHB1dCgpIHB1YmxpYyBvcGVuSW50ZWdyYXRlZENhbGVuZGFyOiBFdmVudEVtaXR0ZXI8dm9pZD4gPSBuZXcgRXZlbnRFbWl0dGVyPHZvaWQ+KCk7XG4gICAgQE91dHB1dCgpIHB1YmxpYyBzZWxlY3RlZFJhZ2U6IEV2ZW50RW1pdHRlcjxDYWxlbmRhckRhdGU+ID0gbmV3IEV2ZW50RW1pdHRlcjxDYWxlbmRhckRhdGU+KCk7XG4gICAgQE91dHB1dCgpIHB1YmxpYyBjaGFuZ2VNb250aFllYXJSZXNwb25zZTogRXZlbnRFbWl0dGVyPERhdGUgfCBEYXRlW10+ID0gbmV3IEV2ZW50RW1pdHRlcjxEYXRlIHwgRGF0ZVtdPigpO1xuICAgIEBPdXRwdXQoJ3Jlc3BvbnNlJykgcHVibGljIGNhbGVuZGFyUmVzcG9uc2U6IEV2ZW50RW1pdHRlcjxEYXRlW10gfCBEYXRlPiA9IG5ldyBFdmVudEVtaXR0ZXI8RGF0ZVtdIHwgRGF0ZT4oKTtcblxuICAgIHB1YmxpYyBzaG93WWVhckNhbGVuZGFyOiBib29sZWFuID0gZmFsc2U7XG4gICAgcHVibGljIHNob3dNb250aENhbGVuZGFyOiBib29sZWFuID0gZmFsc2U7XG4gICAgcHVibGljIGhvdmVyZWREYXk6IENhbGVuZGFyRGF0ZSB8IG51bGwgPSBudWxsO1xuICAgIHB1YmxpYyBzZWxlY3RlZERheTogQ2FsZW5kYXJEYXRlIHwgbnVsbCA9IG51bGw7XG4gICAgcHVibGljIHNlbGVjdGVkUmFuZ2VFbmQ6IENhbGVuZGFyRGF0ZSB8IG51bGwgPSBudWxsO1xuICAgIHB1YmxpYyBzZWxlY3RlZFJhbmdlU3RhcnQ6IENhbGVuZGFyRGF0ZSB8IG51bGwgPSBudWxsO1xuXG4gICAgcHVibGljIGdldCBpMThuKCkgeyByZXR1cm4gQ0FMRU5EQVJfSTE4Tlt0aGlzLmFwcGVhcmFuY2UubGFuZ3VhZ2VdOyB9XG4gICAgcHVibGljIGdldCBtb250aHNMaXN0KCkgeyByZXR1cm4gdGhpcy5hcHBlYXJhbmNlLmxhbmd1YWdlID09PSAnZW4nID8gTU9OVEhTX0VOIDogTU9OVEhTX0VTOyB9XG4gICAgcHVibGljIGdldCBkYXlzTGlzdCgpIHsgcmV0dXJuIHRoaXMuYXBwZWFyYW5jZS5sYW5ndWFnZSA9PT0gJ2VuJyA/IERBWVNfU0hPUlRfRU4gOiBEQVlTX1NIT1JUX0VTOyB9XG5cbiAgICBwdWJsaWMgdHJhY2tCeVdlZWsoaW5kZXg6IG51bWJlciwgXzogYW55KTogbnVtYmVyIHsgcmV0dXJuIGluZGV4OyB9XG4gICAgcHVibGljIHRyYWNrQnlEYXkoXzogbnVtYmVyLCBkYXk6IENhbGVuZGFyRGF0ZSk6IHN0cmluZyB7XG4gICAgICAgIHJldHVybiBgJHtkYXkubW9udGhZZWFyLnllYXJ9LSR7ZGF5Lm1vbnRoWWVhci5tb250aH0tJHtkYXkuZGF5fWA7XG4gICAgfVxuXG4gICAgbmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcyk6IHZvaWQge1xuICAgICAgICBjb25zdCBzaG91bGRSZXN0YXJ0ID0gY2hhbmdlc1sncmVzdGFydCddICYmIHRoaXMucmVzdGFydDtcbiAgICAgICAgY29uc3Qgc2hvdWxkUHJvY2Vzc1ByZVNlbGVjdGVkID0gY2hhbmdlc1sncHJlU2VsZWN0ZWREYXRlJ10gJiYgdGhpcy5jb25maWcuaW5pdERhdGU7XG5cbiAgICAgICAgaWYgKHNob3VsZFJlc3RhcnQgfHwgc2hvdWxkUHJvY2Vzc1ByZVNlbGVjdGVkKSB7IHRoaXMucHJvY2Vzc0luaXREYXRlKCk7IH1cbiAgICB9XG5cbiAgICBwcml2YXRlIHByb2Nlc3NJbml0RGF0ZSgpOiB2b2lkIHtcbiAgICAgICAgaWYgKHRoaXMucmFuZ2UgJiYgQXJyYXkuaXNBcnJheSh0aGlzLmNvbmZpZy5pbml0RGF0ZSkpIHtcbiAgICAgICAgICAgIHByb2Nlc3NQcmVzZWxlY3RlZFJhbmdlRGF0ZSh0aGlzKTtcbiAgICAgICAgfSBlbHNlIGlmICh0aGlzLmNvbmZpZy5pbml0RGF0ZSBpbnN0YW5jZW9mIERhdGUpIHtcbiAgICAgICAgICAgIHRoaXMuc2VsZWN0ZWREYXkgPSB0b0NhbGVuZGFyRGF5KHRoaXMuY29uZmlnLmluaXREYXRlKTtcbiAgICAgICAgICAgIHRoaXMuY3VycmVudERhdGUgPSBnZXRTdGFydERhdGUodGhpcy5jb25maWcuaW5pdERhdGUpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHVibGljIGlzRGF0ZVNlbGVjdGVkKCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gIXRoaXMucmFuZ2UgPyAhIXRoaXMuc2VsZWN0ZWREYXkgOiAhIXRoaXMuc2VsZWN0ZWRSYW5nZVN0YXJ0ICYmICEhdGhpcy5zZWxlY3RlZFJhbmdlRW5kO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXREYXlTZWxlY3Rpb25DbGFzcyhkYXk6IENhbGVuZGFyRGF0ZSk6IHN0cmluZyB7XG4gICAgICAgIGlmICghZGF5LmluQ3VycmVudE1vbnRoKSByZXR1cm4gJ2Rpc2FibGVkJztcblxuICAgICAgICBjb25zdCBkYXlEYXRlID0gbmV3IERhdGUoZGF5Lm1vbnRoWWVhci55ZWFyLCBkYXkubW9udGhZZWFyLm1vbnRoLCBkYXkuZGF5KTtcblxuICAgICAgICBpZiAodGhpcy5jb25maWc/Lm1pbkRhdGUpIHsgaWYgKGRheURhdGUgPCB0aGlzLmNvbmZpZy5taW5EYXRlKSByZXR1cm4gJ2Rpc2FibGVkJzsgfVxuICAgICAgICBpZiAodGhpcy5jb25maWc/Lm1heERhdGUpIHsgaWYgKGRheURhdGUgPiB0aGlzLmNvbmZpZy5tYXhEYXRlKSByZXR1cm4gJ2Rpc2FibGVkJzsgfVxuXG4gICAgICAgIHJldHVybiB0aGlzLnJhbmdlID8gZ2V0UmFuZ2VTZWxlY3Rpb25DbGFzcyh0aGlzLCBkYXkpIDogdGhpcy5nZXRTaW5nbGVEYXlTZWxlY3Rpb25DbGFzcyhkYXkpO1xuICAgIH1cblxuICAgIHByaXZhdGUgZ2V0U2luZ2xlRGF5U2VsZWN0aW9uQ2xhc3MoZGF5OiBDYWxlbmRhckRhdGUpOiBzdHJpbmcge1xuICAgICAgICBpZiAodGhpcy5zZWxlY3RlZERheSAmJiBkYXkuZGF5ID09PSB0aGlzLnNlbGVjdGVkRGF5LmRheSAmJlxuICAgICAgICAgICAgZGF5Lm1vbnRoWWVhci5tb250aCA9PT0gdGhpcy5zZWxlY3RlZERheS5tb250aFllYXIubW9udGggJiZcbiAgICAgICAgICAgIGRheS5tb250aFllYXIueWVhciA9PT0gdGhpcy5zZWxlY3RlZERheS5tb250aFllYXIueWVhcikge1xuICAgICAgICAgICAgcmV0dXJuICdzbCBzaW5nbGUnO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiAnJztcbiAgICB9XG5cbiAgICBwdWJsaWMgb25TZWxlY3REYXkoZGF5OiBDYWxlbmRhckRhdGUpOiB2b2lkIHtcbiAgICAgICAgaWYgKCFkYXkuaW5DdXJyZW50TW9udGgpIHJldHVybjtcblxuICAgICAgICBpZiAoIXRoaXMucmFuZ2UpIHtcbiAgICAgICAgICAgIHRoaXMuc2VsZWN0ZWREYXkgPSBkYXk7XG4gICAgICAgICAgICBjb25zdCBjdXJyZW50RGF0ZSA9IHRvRGF0ZShkYXkpO1xuICAgICAgICAgICAgdGhpcy5jYWxlbmRhclJlc3BvbnNlLmVtaXQoY3VycmVudERhdGUpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgb25TZWxlY3RSYWdlRGF5cyh0aGlzLCBkYXkpO1xuICAgICAgICAgICAgdGhpcy5zZWxlY3RlZFJhZ2UuZW1pdChkYXkpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHVibGljIGFwcGx5U2VsZWN0ZWREYXRlKCk6IHZvaWQge1xuICAgICAgICBpZiAoIXRoaXMucmFuZ2UgJiYgdGhpcy5zZWxlY3RlZERheSkge1xuICAgICAgICAgICAgY29uc3QgZGF0ZSA9IHRvRGF0ZSh0aGlzLnNlbGVjdGVkRGF5KVxuICAgICAgICAgICAgdGhpcy5jYWxlbmRhclJlc3BvbnNlLmVtaXQoZGF0ZSk7XG4gICAgICAgIH0gZWxzZSBpZiAodGhpcy5yYW5nZSAmJiB0aGlzLnNlbGVjdGVkUmFuZ2VTdGFydCAmJiB0aGlzLnNlbGVjdGVkUmFuZ2VFbmQpIHtcbiAgICAgICAgICAgIG9uQXBwbHlSYWdlRGF0ZSh0aGlzKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHB1YmxpYyBjbGVhclNlbGVjdGVkRGF0ZSgpIHtcbiAgICAgICAgdGhpcy5zZWxlY3RlZERheSA9IG51bGw7XG4gICAgICAgIHRoaXMuc2VsZWN0ZWRSYW5nZUVuZCA9IG51bGw7XG4gICAgICAgIHRoaXMuc2VsZWN0ZWRSYW5nZVN0YXJ0ID0gbnVsbDtcbiAgICAgICAgdGhpcy5jbGVhclNlbGVjdGlvbi5lbWl0KCk7XG4gICAgfVxuXG4gICAgcHVibGljIGhhbmRsZUNhbGVuZGFyUmVzcG9uc2UoZGF0ZTogRGF0ZSB8IERhdGVbXSwgaXNNb250aDogYm9vbGVhbik6IHZvaWQge1xuICAgICAgICBpZiAoIShkYXRlIGluc3RhbmNlb2YgRGF0ZSkpIHJldHVybjtcblxuICAgICAgICBjb25zdCB5ZWFyID0gaXNNb250aCA/IHRoaXMuY3VycmVudERhdGUuZ2V0RnVsbFllYXIoKSA6IGRhdGUuZ2V0RnVsbFllYXIoKTtcbiAgICAgICAgY29uc3QgbW9udGggPSBpc01vbnRoID8gZGF0ZS5nZXRNb250aCgpIDogdGhpcy5jdXJyZW50RGF0ZS5nZXRNb250aCgpO1xuXG4gICAgICAgIHRoaXMuY3VycmVudERhdGUgPSBuZXcgRGF0ZSh5ZWFyLCBtb250aCwgdGhpcy5jdXJyZW50RGF0ZS5nZXREYXRlKCkpO1xuXG4gICAgICAgIGlmIChpc01vbnRoKSB7IHRoaXMuaW5pdE1vbnRoID0gdGhpcy5jdXJyZW50RGF0ZTsgdGhpcy5zaG93TW9udGhDYWxlbmRhciA9IGZhbHNlOyB9XG4gICAgICAgIGVsc2UgeyB0aGlzLmluaXRZZWFyID0gdGhpcy5jdXJyZW50RGF0ZTsgdGhpcy5zaG93WWVhckNhbGVuZGFyID0gZmFsc2U7IH1cblxuICAgICAgICB0aGlzLmNoYW5nZU1vbnRoWWVhclJlc3BvbnNlLmVtaXQodGhpcy5jdXJyZW50RGF0ZSk7XG4gICAgfVxuXG4gICAgcHVibGljIGhhbmRsZU9uQ2xpY2tEcm9wZG93bkxhYmVsKGlzTW9udGg6IGJvb2xlYW4pOiB2b2lkIHtcbiAgICAgICAgdGhpcy5pbml0TW9udGggPSBpc01vbnRoID8gdGhpcy5jdXJyZW50RGF0ZSA6IHRoaXMuaW5pdE1vbnRoO1xuICAgICAgICB0aGlzLmluaXRZZWFyID0gIWlzTW9udGggPyB0aGlzLmN1cnJlbnREYXRlIDogdGhpcy5pbml0WWVhcjtcblxuICAgICAgICB0aGlzLnNob3dNb250aENhbGVuZGFyID0gaXNNb250aDtcbiAgICAgICAgdGhpcy5zaG93WWVhckNhbGVuZGFyID0gIWlzTW9udGg7XG5cbiAgICAgICAgdGhpcy5vcGVuSW50ZWdyYXRlZENhbGVuZGFyLmVtaXQoKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0TW9udGhHcmlkKCk6IENhbGVuZGFyRGF0ZVtdW10ge1xuICAgICAgICBsZXQgd2VlazogQ2FsZW5kYXJEYXRlW10gPSBbXTtcblxuICAgICAgICBjb25zdCB0b2RheSA9IG5ldyBEYXRlKCk7XG4gICAgICAgIGNvbnN0IGdyaWQ6IENhbGVuZGFyRGF0ZVtdW10gPSBbXTtcbiAgICAgICAgY29uc3QgYmFzZURhdGUgPSB0aGlzLmN1cnJlbnREYXRlO1xuICAgICAgICBjb25zdCBtb250aCA9IGJhc2VEYXRlLmdldE1vbnRoKCk7XG4gICAgICAgIGNvbnN0IHllYXIgPSBiYXNlRGF0ZS5nZXRGdWxsWWVhcigpO1xuXG4gICAgICAgIGNvbnN0IGZpcnN0RGF5ID0gbmV3IERhdGUoeWVhciwgbW9udGgsIDEpO1xuICAgICAgICBjb25zdCBzdGFydFdlZWtkYXkgPSAoZmlyc3REYXkuZ2V0RGF5KCkgKyA2KSAlIDc7XG5cbiAgICAgICAgY29uc3QgZGF5c0luTW9udGggPSBuZXcgRGF0ZSh5ZWFyLCBtb250aCArIDEsIDApLmdldERhdGUoKTtcbiAgICAgICAgY29uc3QgZGF5c0luUHJldk1vbnRoID0gbmV3IERhdGUoeWVhciwgbW9udGgsIDApLmdldERhdGUoKTtcblxuICAgICAgICAvLyBmaWxsIGRheXMgZnJvbSBwcmV2aW91cyBtb250aFxuICAgICAgICBmb3IgKGxldCBpID0gc3RhcnRXZWVrZGF5IC0gMTsgaSA+PSAwOyBpLS0pIHtcbiAgICAgICAgICAgIGNvbnN0IGRheSA9IGRheXNJblByZXZNb250aCAtIGk7XG4gICAgICAgICAgICBjb25zdCB3ZWVrRGF5ID0gKHN0YXJ0V2Vla2RheSAtIDEgLSBpICsgNykgJSA3O1xuICAgICAgICAgICAgd2Vlay5wdXNoKHsgZGF5LCBtb250aFllYXI6IHttb250aDogbW9udGggLSAxLCB5ZWFyOiB5ZWFyfSwgaXNUb2RheTogZmFsc2UsIGluQ3VycmVudE1vbnRoOiBmYWxzZSwgd2Vla0RheSB9KTtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIGZpbGwgZGF5cyBmcm9tIGN1cnJlbnQgbW9udGhcbiAgICAgICAgZm9yIChsZXQgZCA9IDE7IGQgPD0gZGF5c0luTW9udGg7IGQrKykge1xuICAgICAgICAgICAgY29uc3QgaXNUb2RheSA9IGQgPT09IHRvZGF5LmdldERhdGUoKSAmJiBtb250aCA9PT0gdG9kYXkuZ2V0TW9udGgoKSAmJiB5ZWFyID09PSB0b2RheS5nZXRGdWxsWWVhcigpO1xuICAgICAgICAgICAgY29uc3Qgd2Vla0RheSA9IHdlZWsubGVuZ3RoICUgNztcbiAgICAgICAgICAgIHdlZWsucHVzaCh7IGRheTogZCwgbW9udGhZZWFyOiB7bW9udGg6IG1vbnRoLCB5ZWFyOiB5ZWFyfSwgaXNUb2RheSwgaW5DdXJyZW50TW9udGg6IHRydWUsIHdlZWtEYXkgfSk7XG5cbiAgICAgICAgICAgIGlmICh3ZWVrLmxlbmd0aCA9PT0gNykge1xuICAgICAgICAgICAgICAgIGdyaWQucHVzaCh3ZWVrKTtcbiAgICAgICAgICAgICAgICB3ZWVrID0gW107XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICAvLyBmaWxsIHJlbWFpbmluZyBkYXlzIGZyb20gbmV4dCBtb250aFxuICAgICAgICBsZXQgbmV4dERheSA9IDE7XG4gICAgICAgIHdoaWxlICh3ZWVrLmxlbmd0aCA8IDcpIHtcbiAgICAgICAgICAgIGNvbnN0IHdlZWtEYXkgPSB3ZWVrLmxlbmd0aDtcbiAgICAgICAgICAgIHdlZWsucHVzaCh7IGRheTogbmV4dERheSsrLCBtb250aFllYXI6IHttb250aDogbW9udGggKyAxLCB5ZWFyOiB5ZWFyfSwgaXNUb2RheTogZmFsc2UsIGluQ3VycmVudE1vbnRoOiBmYWxzZSwgd2Vla0RheSB9KTtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IGhhc0N1cnJlbnRNb250aERheSA9IHdlZWsuc29tZShkYXkgPT4gZGF5LmluQ3VycmVudE1vbnRoKTtcbiAgICAgICAgaWYgKGhhc0N1cnJlbnRNb250aERheSkge1xuICAgICAgICAgICAgZ3JpZC5wdXNoKHdlZWspO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIGdyaWQ7XG4gICAgfVxuXG4gICAgcHJvdGVjdGVkIHJlYWRvbmx5IGNoYW5nZURhdGUgPSBjaGFuZ2VEYXRlO1xuICAgIHByb3RlY3RlZCByZWFkb25seSBpc1ByZXZpZXcgPSBpc1ByZXZpZXc7XG4gICAgcHJvdGVjdGVkIHJlYWRvbmx5IG9uSG92ZXJEYXkgPSBvbkhvdmVyRGF5O1xuICAgIHByb3RlY3RlZCByZWFkb25seSBvbkNsZWFySG92ZXIgPSBvbkNsZWFySG92ZXI7XG59IiwiPHNlY3Rpb24gKm5nSWY9XCJzaG93TW9udGhDYWxlbmRhclwiPlxuICAgIDxtb250aC1jYWxlbmRhclxuICAgICAgICBbaW50ZWdyYXRlZE1vZGVdPVwidHJ1ZVwiXG4gICAgICAgIFtyZXN0YXJ0XT1cInNob3dNb250aENhbGVuZGFyXCJcbiAgICAgICAgKHJlc3BvbnNlKT1cImhhbmRsZUNhbGVuZGFyUmVzcG9uc2UoJGV2ZW50LCB0cnVlKVwiIFtpbml0RGF0ZV09XCJpbml0TW9udGhcIlxuICAgICAgICBbYXBwZWFyYW5jZV09XCJ7bGFuZ3VhZ2U6IGFwcGVhcmFuY2UubGFuZ3VhZ2UsIGlzTW9iaWxlOiBhcHBlYXJhbmNlLmlzTW9iaWxlLCBhY3Rpb25zOiBmYWxzZSwgfVwiPlxuICAgIDwvbW9udGgtY2FsZW5kYXI+XG48L3NlY3Rpb24+XG5cbjxzZWN0aW9uICpuZ0lmPVwic2hvd1llYXJDYWxlbmRhclwiPlxuICAgIDx5ZWFyLWNhbGVuZGFyXG4gICAgICAgICBbaW50ZWdyYXRlZE1vZGVdPVwidHJ1ZVwiXG4gICAgICAgICBbcmVzdGFydF09XCJzaG93WWVhckNhbGVuZGFyXCJcbiAgICAgICAgKHJlc3BvbnNlKT1cImhhbmRsZUNhbGVuZGFyUmVzcG9uc2UoJGV2ZW50LCBmYWxzZSlcIiBbaW5pdERhdGVdPVwiaW5pdFllYXJcIlxuICAgICAgICBbYXBwZWFyYW5jZV09XCJ7bGFuZ3VhZ2U6IGFwcGVhcmFuY2UubGFuZ3VhZ2UsIGlzTW9iaWxlOiBhcHBlYXJhbmNlLmlzTW9iaWxlLCBhY3Rpb25zOiBmYWxzZX1cIj5cbiAgICA8L3llYXItY2FsZW5kYXI+XG48L3NlY3Rpb24+XG5cbjxuZy1jb250YWluZXIgKm5nSWY9XCIhc2hvd1llYXJDYWxlbmRhciAmJiAhc2hvd01vbnRoQ2FsZW5kYXJcIj5cbiAgICA8c2VjdGlvbiAgY2xhc3M9XCJncmF2aXR5LWNhbGVuZGFyLWhlYWRlclwiIFtjbGFzcy5tb2JpbGVdPVwiYXBwZWFyYW5jZS5pc01vYmlsZVwiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwicHJldmlvdXMtYnV0dG9uXCIgKGNsaWNrKT1cImN1cnJlbnREYXRlID0gY2hhbmdlRGF0ZSgtMSwgY3VycmVudERhdGUsIHRydWUpOyBjaGFuZ2VNb250aC5lbWl0KC0xKVwiPlxuICAgICAgICAgICAgPGdyYXZpdHktaWNvbiAqbmdJZj1cIihuYXZUeXBlID09PSAncHJldicgfHwgbmF2VHlwZSA9PT0gJ2JvdGgnKSAmJiBhcHBlYXJhbmNlLnN0YXRlICE9PSAnZGlzYWJsZWQnXCIgW3N0eWxlLi0taWNvbi1jb2xvcl09XCIndmFyKC0tdGV4dC1oaWdobGlnaHQtcHJpbWFyeSknXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgW2ljb25OYW1lXT1cIidhcnJvdy1sZWZ0J1wiIFtpY29uU2l6ZV09XCInc20tMTInXCIgPiA8L2dyYXZpdHktaWNvbj5cbiAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgPGRpdiBjbGFzcz1cIm1vbnRoLXllYXItbGFiZWxcIj5cbiAgICAgICAgICAgIDxncmF2aXR5LWRyb3Bkb3duLWxhYmVsIFtmb250Q2xhc3NdPVwiJ2hyLXRpdGxlIHNtLWJvbGQnXCIgW3NpemVdPVwiJ3NtJ1wiIFtsYWJlbF09XCJtb250aHNMaXN0W2N1cnJlbnREYXRlLmdldE1vbnRoKCldXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtzdGF0ZV09XCJhcHBlYXJhbmNlLnN0YXRlID09PSAnZGlzYWJsZWQnID8gJ2luYWN0aXZlJyA6ICdhY3RpdmUnXCIgKG9uQ2xpY2tMYWJlbCk9XCJoYW5kbGVPbkNsaWNrRHJvcGRvd25MYWJlbCh0cnVlKVwiPiA8L2dyYXZpdHktZHJvcGRvd24tbGFiZWw+XG5cbiAgICAgICAgICAgIDxncmF2aXR5LWRyb3Bkb3duLWxhYmVsIFtmb250Q2xhc3NdPVwiJ2hyLXRpdGxlIHNtLWJvbGQnXCIgW3NpemVdPVwiJ3NtJ1wiIFtsYWJlbF09XCJjdXJyZW50RGF0ZS5nZXRGdWxsWWVhcigpLnRvU3RyaW5nKClcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3N0YXRlXT1cImFwcGVhcmFuY2Uuc3RhdGUgPT09ICdkaXNhYmxlZCcgPyAnaW5hY3RpdmUnIDogJ2FjdGl2ZSdcIiAob25DbGlja0xhYmVsKT1cImhhbmRsZU9uQ2xpY2tEcm9wZG93bkxhYmVsKGZhbHNlKVwiPiA8L2dyYXZpdHktZHJvcGRvd24tbGFiZWw+XG4gICAgICAgIDwvZGl2PlxuXG4gICAgICAgIDxkaXYgY2xhc3M9XCJuZXh0LWJ1dHRvblwiIChjbGljayk9XCJjdXJyZW50RGF0ZSA9IGNoYW5nZURhdGUoMSwgY3VycmVudERhdGUsIHRydWUpOyBjaGFuZ2VNb250aC5lbWl0KDEpXCI+XG4gICAgICAgICAgICA8Z3Jhdml0eS1pY29uICpuZ0lmPVwiKG5hdlR5cGUgPT09ICduZXh0JyB8fCBuYXZUeXBlID09PSAnYm90aCcpICYmIGFwcGVhcmFuY2Uuc3RhdGUgIT09ICdkaXNhYmxlZCdcIiBbc3R5bGUuLS1pY29uLWNvbG9yXT1cIid2YXIoLS10ZXh0LWhpZ2hsaWdodC1wcmltYXJ5KSdcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICBbaWNvbk5hbWVdPVwiJ2Fycm93LXJpZ2h0J1wiIFtpY29uU2l6ZV09XCInc20tMTInXCIgPiA8L2dyYXZpdHktaWNvbj5cbiAgICAgICAgPC9kaXY+XG4gICAgPC9zZWN0aW9uPlxuXG4gICAgPHNlY3Rpb24gY2xhc3M9XCJncmF2aXR5LWNhbGVuZGFyLWJvZHlcIiBbY2xhc3MubW9iaWxlXT1cImFwcGVhcmFuY2UuaXNNb2JpbGVcIj5cbiAgICAgICAgPHNlY3Rpb24gY2xhc3M9XCJkYXlzLW5hbWUtbGluZVwiPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImRheXMtbmFtZVwiPlxuICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiaHItYm9keVwiIFtuZ0NsYXNzXT1cImFwcGVhcmFuY2UuaXNNb2JpbGUgPyAnbWQtcmVndWxhcicgOiAnc20tcmVndWxhcidcIlxuICAgICAgICAgICAgICAgICAgICAgICpuZ0Zvcj1cImxldCBkYXkgb2YgZGF5c0xpc3RcIj4ge3sgZGF5IH19IDwvc3Bhbj5cbiAgICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwic2VwYXJhdG9yLWxpbmVcIj48L2Rpdj5cbiAgICAgICAgPC9zZWN0aW9uPlxuXG4gICAgICAgIDxzZWN0aW9uIGNsYXNzPVwiZGF5cy1udW1iZXItc2VsZWN0b3JcIj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkYXlzLW51bWJlci10YWJsZVwiPlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ3ZWVrLXJvd1wiICpuZ0Zvcj1cImxldCB3ZWVrIG9mIGdldE1vbnRoR3JpZCgpOyB0cmFja0J5OiB0cmFja0J5V2Vla1wiPlxuICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiaHItYm9keVwiICpuZ0Zvcj1cImxldCBkYXkgb2Ygd2VlazsgdHJhY2tCeTogdHJhY2tCeURheVwiXG4gICAgICAgICAgICAgICAgICAgICAgICBbY2xhc3MucHJldmlld109XCJyYW5nZSA/IGlzUHJldmlldyh0aGlzLCBkYXkpIDogbnVsbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICBbY2xhc3MuZGlzYWJsZWRdPVwiIWRheS5pbkN1cnJlbnRNb250aFwiIFtjbGFzcy50b2RheV09XCJkYXkuaXNUb2RheVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAobW91c2VlbnRlcik9XCJyYW5nZSA/IG9uSG92ZXJEYXkodGhpcywgZGF5KSA6IG51bGw7IGhvdmVyRGF5LmVtaXQoZGF5KVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAobW91c2VsZWF2ZSk9XCJyYW5nZSA/IG9uQ2xlYXJIb3Zlcih0aGlzKSA6IG51bGw7IHRoaXMuY2xlYXJIb3Zlci5lbWl0KClcIlxuICAgICAgICAgICAgICAgICAgICAgICAgW25nQ2xhc3NdPVwiW2FwcGVhcmFuY2UuaXNNb2JpbGUgPyAnbWQtcmVndWxhcicgOiAnc20tcmVndWxhcicsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhcHBlYXJhbmNlLnN0YXRlID09PSAnZGlzYWJsZWQnID8gJ2Rpc2FibGVkJyA6IGdldERheVNlbGVjdGlvbkNsYXNzKGRheSldXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJvblNlbGVjdERheShkYXkpXCI+IHt7IGRheS5kYXkgfX0gPC9zcGFuPlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICAgIDxkaXYgKm5nSWY9XCJhcHBlYXJhbmNlLmFjdGlvbnNcIiBjbGFzcz1cImFjdGlvbi1zZWN0aW9uXCIgPlxuICAgICAgICAgICAgICAgIDxncmF2aXR5LWxpbmsgW2xpbmtUZXh0XT1cImkxOG4uY2xlYXJcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3N0YXRlXT1cIiFpc0RhdGVTZWxlY3RlZCgpID8gJ2Rpc2FibGVkJyA6ICdhY3RpdmUnXCIgKGNsaWNrKT1cImNsZWFyU2VsZWN0ZWREYXRlKClcIj4gPC9ncmF2aXR5LWxpbms+XG5cbiAgICAgICAgICAgICAgICA8Z3Jhdml0eS1idXR0b24gW3NpemVdPVwiJ3NtJ1wiIFt0eXBlXT1cIid0ZXJ0aWFyeSdcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwiIWlzRGF0ZVNlbGVjdGVkKClcIiAoY2xpY2spPVwiYXBwbHlTZWxlY3RlZERhdGUoKVwiPiB7e2kxOG4uYXBwbHl9fSA8L2dyYXZpdHktYnV0dG9uPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvc2VjdGlvbj5cbiAgICA8L3NlY3Rpb24+XG48L25nLWNvbnRhaW5lcj5cbiJdfQ==
271
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF5LWNhbGVuZGFyLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2dyYXZpdHktZGVzaWduLXN5c3RlbS9zcmMvbGliL2NvbXBvbmVudHMvZ3Jhdml0eS1jYWxlbmRhci1uZXh0L2NvbXBvbmVudHMvZGF5LWNhbGVuZGFyL2RheS1jYWxlbmRhci5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9ncmF2aXR5LWRlc2lnbi1zeXN0ZW0vc3JjL2xpYi9jb21wb25lbnRzL2dyYXZpdHktY2FsZW5kYXItbmV4dC9jb21wb25lbnRzL2RheS1jYWxlbmRhci9kYXktY2FsZW5kYXIuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBRUEsT0FBTyxFQUFDLFNBQVMsRUFBRSxZQUFZLEVBQUUsS0FBSyxFQUFhLE1BQU0sRUFBaUIsU0FBUyxFQUFDLE1BQU0sZUFBZSxDQUFDO0FBQzFHLE9BQU8sRUFBQyxhQUFhLEVBQUUsYUFBYSxFQUFFLGFBQWEsRUFBRSxTQUFTLEVBQUUsU0FBUyxFQUFDLE1BQU0saUNBQWlDLENBQUM7QUFDbEgsT0FBTyxFQUFDLGlCQUFpQixFQUFFLFlBQVksRUFBRSxVQUFVLEVBQUUsa0JBQWtCLEVBQUUsaUJBQWlCLEVBQUMsTUFBTSw2QkFBNkIsQ0FBQztBQUMvSCxPQUFPLEVBQUMsc0JBQXNCLEVBQUUsU0FBUyxFQUFFLGVBQWUsRUFBRSxZQUFZLEVBQUUsV0FBVyxFQUFFLFVBQVUsRUFBRSxpQkFBaUIsRUFBRSwyQkFBMkIsRUFBRSxVQUFVLEVBQUMsTUFBTSw2QkFBNkIsQ0FBQzs7Ozs7Ozs7Ozs7QUFPbE0sTUFBTSxPQUFPLG9CQUFvQjtJQUxqQztRQVNrQixVQUFLLEdBQVksS0FBSyxDQUFDO1FBQ3ZCLFlBQU8sR0FBWSxLQUFLLENBQUM7UUFDMUIsZ0JBQVcsR0FBWSxLQUFLLENBQUM7UUFD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QUNoRSxJQUFJLGtCQUFrQixFQUFFO1lBQ3BCLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7U0FDbkI7UUFFRCxPQUFPLElBQUksQ0FBQztJQUNkLENBQUM7K0dBek5VLG9CQUFvQjttR0FBcEIsb0JBQW9CLDJ3QkNaakMsczhNQWtIQTs7NEZEdEdhLG9CQUFvQjtrQkFMaEMsU0FBUzsrQkFDSSxjQUFjOzhCQUtWLFFBQVE7c0JBQXZCLEtBQUs7Z0JBQ1UsU0FBUztzQkFBeEIsS0FBSztnQkFDVSxNQUFNO3NCQUFyQixLQUFLO2dCQUNVLEtBQUs7c0JBQXBCLEtBQUs7Z0JBQ1UsT0FBTztzQkFBdEIsS0FBSztnQkFDUyxXQUFXO3NCQUExQixLQUFLO2dCQUNXLFdBQVc7c0JBQTFCLEtBQUs7Z0JBQ1UsVUFBVTtzQkFBekIsS0FBSztnQkFDVSxPQUFPO3NCQUF0QixLQUFLO2dCQUVXLFVBQVU7c0JBQTFCLE1BQU07Z0JBQ1UsY0FBYztzQkFBOUIsTUFBTTtnQkFDVSxXQUFXO3NCQUEzQixNQUFNO2dCQUNVLFFBQVE7c0JBQXhCLE1BQU07Z0JBQ1Usc0JBQXNCO3NCQUF0QyxNQUFNO2dCQUNVLFlBQVk7c0JBQTVCLE1BQU07Z0JBQ1UsZ0JBQWdCO3NCQUFoQyxNQUFNO2dCQUNVLHVCQUF1QjtzQkFBdkMsTUFBTTtnQkFFZSxZQUFZO3NCQUFqQyxTQUFTO3VCQUFDLFNBQVM7Z0JBQ0ksY0FBYztzQkFBckMsU0FBUzt1QkFBQyxXQUFXIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtDYWxlbmRhckFwcGVhcmFuY2UsIENhbGVuZGFyQ29uZmlnLCBDYWxlbmRhckRhdGV9IGZyb20gXCIuLi8uLi9zaGFyZWQvY2FsZW5kYXIubW9kYWxcIjtcbmltcG9ydCB7R3Jhdml0eVRleHRGaWVsZENvbXBvbmVudH0gZnJvbSBcIi4uLy4uLy4uL2dyYXZpdHktdGV4dC1maWVsZC9ncmF2aXR5LXRleHQtZmllbGQuY29tcG9uZW50XCI7XG5pbXBvcnQge0NvbXBvbmVudCwgRXZlbnRFbWl0dGVyLCBJbnB1dCwgT25DaGFuZ2VzLCBPdXRwdXQsIFNpbXBsZUNoYW5nZXMsIFZpZXdDaGlsZH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge0NBTEVOREFSX0kxOE4sIERBWVNfU0hPUlRfRU4sIERBWVNfU0hPUlRfRVMsIE1PTlRIU19FTiwgTU9OVEhTX0VTfSBmcm9tIFwiLi4vLi4vc2hhcmVkL2NhbGVuZGFyLmNvbnN0YW50c1wiO1xuaW1wb3J0IHtkYXRlVG9DYWxlbmRhckRheSwgZ2V0U3RhcnREYXRlLCBjaGFuZ2VEYXRlLCBjYWxlbmRhckRhdGVUb0RhdGUsIGlzUGVyaW9kQXZhaWxhYmxlfSBmcm9tICcuLi8uLi9zaGFyZWQvY2FsZW5kYXIudXRpbHMnO1xuaW1wb3J0IHtnZXRSYW5nZVNlbGVjdGlvbkNsYXNzLCBpc1ByZXZpZXcsIG9uQXBwbHlSYWdlRGF0ZSwgb25DbGVhckhvdmVyLCBvbkRhdGVLZXl1cCwgb25Ib3ZlckRheSwgb25TZWxlY3REYXlzUmFuZ2UsIHByb2Nlc3NQcmVzZWxlY3RlZFJhbmdlRGF0ZSwgc2VhcmNoRGF0ZX0gZnJvbSBcIi4vcmFuZ2UtZGF5cy1jYWxlbmRhci51dGlsc1wiO1xuXG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvcjogJ2RheS1jYWxlbmRhcicsXG4gICAgdGVtcGxhdGVVcmw6ICcuL2RheS1jYWxlbmRhci5jb21wb25lbnQuaHRtbCcsXG4gICAgc3R5bGVVcmxzOiBbJy4vZGF5LWNhbGVuZGFyLmNvbXBvbmVudC5zY3NzJ11cbn0pXG5leHBvcnQgY2xhc3MgRGF5Q2FsZW5kYXJDb21wb25lbnQgaW1wbGVtZW50cyBPbkNoYW5nZXMge1xuICBASW5wdXQoKSBwdWJsaWMgaW5pdFllYXI6IERhdGU7XG4gIEBJbnB1dCgpIHB1YmxpYyBpbml0TW9udGg6IERhdGU7XG4gIEBJbnB1dCgpIHB1YmxpYyBjb25maWc6IENhbGVuZGFyQ29uZmlnO1xuICBASW5wdXQoKSBwdWJsaWMgcmFuZ2U6IGJvb2xlYW4gPSBmYWxzZTtcbiAgQElucHV0KCkgcHVibGljIHJlc3RhcnQ6IGJvb2xlYW4gPSBmYWxzZTtcblx0QElucHV0KCkgcHVibGljIGFwcHlPbkNsb3NlOiBib29sZWFuID0gZmFsc2U7XG4gIEBJbnB1dCgpIHB1YmxpYyBjdXJyZW50RGF0ZTogRGF0ZSA9IG5ldyBEYXRlKCk7XG4gIEBJbnB1dCgpIHB1YmxpYyBhcHBlYXJhbmNlOiBDYWxlbmRhckFwcGVhcmFuY2U7XG4gIEBJbnB1dCgpIHB1YmxpYyBuYXZUeXBlOiAncHJldicgfCAnbmV4dCcgfCAnYm90aCcgfCAnbm9uZSc9ICdib3RoJ1xuXG4gIEBPdXRwdXQoKSBwdWJsaWMgY2xlYXJIb3ZlcjogRXZlbnRFbWl0dGVyPHZvaWQ+ID0gbmV3IEV2ZW50RW1pdHRlcjx2b2lkPigpO1xuICBAT3V0cHV0KCkgcHVibGljIGNsZWFyU2VsZWN0aW9uOiBFdmVudEVtaXR0ZXI8dm9pZD4gPSBuZXcgRXZlbnRFbWl0dGVyPHZvaWQ+KCk7XG4gIEBPdXRwdXQoKSBwdWJsaWMgY2hhbmdlTW9udGg6IEV2ZW50RW1pdHRlcjxudW1iZXI+ID0gbmV3IEV2ZW50RW1pdHRlcjxudW1iZXI+KCk7XG4gIEBPdXRwdXQoKSBwdWJsaWMgaG92ZXJEYXk6IEV2ZW50RW1pdHRlcjxDYWxlbmRhckRhdGU+ID0gbmV3IEV2ZW50RW1pdHRlcjxDYWxlbmRhckRhdGU+KCk7XG4gIEBPdXRwdXQoKSBwdWJsaWMgb3BlbkludGVncmF0ZWRDYWxlbmRhcjogRXZlbnRFbWl0dGVyPHZvaWQ+ID0gbmV3IEV2ZW50RW1pdHRlcjx2b2lkPigpO1xuICBAT3V0cHV0KCkgcHVibGljIHNlbGVjdGVkUmFnZTogRXZlbnRFbWl0dGVyPENhbGVuZGFyRGF0ZT4gPSBuZXcgRXZlbnRFbWl0dGVyPENhbGVuZGFyRGF0ZT4oKTtcbiAgQE91dHB1dCgpIHB1YmxpYyBjYWxlbmRhclJlc3BvbnNlOiBFdmVudEVtaXR0ZXI8RGF0ZVtdIHwgRGF0ZT4gPSBuZXcgRXZlbnRFbWl0dGVyPERhdGVbXSB8IERhdGU+KCk7XG4gIEBPdXRwdXQoKSBwdWJsaWMgY2hhbmdlTW9udGhZZWFyUmVzcG9uc2U6IEV2ZW50RW1pdHRlcjxEYXRlIHwgRGF0ZVtdPiA9IG5ldyBFdmVudEVtaXR0ZXI8RGF0ZSB8IERhdGVbXT4oKTtcblxuICBAVmlld0NoaWxkKCdlbmREYXRlJykgZW5kRGF0ZUZpZWxkITogR3Jhdml0eVRleHRGaWVsZENvbXBvbmVudDtcbiAgQFZpZXdDaGlsZCgnc3RhcnREYXRlJykgc3RhcnREYXRlRmllbGQhOiBHcmF2aXR5VGV4dEZpZWxkQ29tcG9uZW50O1xuXG4gIHB1YmxpYyBlbmREYXRlRXJyb3I6IHN0cmluZyA9ICcnO1xuICBwdWJsaWMgc3RhcnREYXRlRXJyb3I6IHN0cmluZyA9ICcnO1xuXHRwdWJsaWMgZW5kRmllbGREaXNhYmxlZDogYm9vbGVhbiA9IGZhbHNlO1xuXHRwdWJsaWMgc3RhcnRGaWVsZERpc2FibGVkOiBib29sZWFuID0gZmFsc2U7XG5cdHB1YmxpYyBzZWxlY3RlZFJhbmdlRW5kOiBDYWxlbmRhckRhdGUgfCBudWxsID0gbnVsbDtcblx0cHVibGljIHNlbGVjdGVkUmFuZ2VTdGFydDogQ2FsZW5kYXJEYXRlIHwgbnVsbCA9IG51bGw7XG5cbiAgcHVibGljIHNob3dZZWFyQ2FsZW5kYXI6IGJvb2xlYW4gPSBmYWxzZTtcbiAgcHVibGljIHNob3dNb250aENhbGVuZGFyOiBib29sZWFuID0gZmFsc2U7XG5cdHB1YmxpYyBmb2N1c2VkOiAnc3RhcnQnIHwgJ2VuZCcgPSAnc3RhcnQnO1xuXHRwdWJsaWMgaG92ZXJlZERheTogQ2FsZW5kYXJEYXRlIHwgbnVsbCA9IG51bGw7XG5cdHB1YmxpYyBzZWxlY3RlZERheTogQ2FsZW5kYXJEYXRlIHwgbnVsbCA9IG51bGw7XG5cdHB1YmxpYyBub3RpZmljYXRpb246IHt0ZXh0OiBzdHJpbmcsIGVycm9yOiBib29sZWFufTtcblxuICBwdWJsaWMgZ2V0IGkxOG4oKSB7IHJldHVybiBDQUxFTkRBUl9JMThOW3RoaXMuYXBwZWFyYW5jZS5sYW5ndWFnZV07IH1cbiAgcHVibGljIGdldCBtb250aHNMaXN0KCkgeyByZXR1cm4gdGhpcy5hcHBlYXJhbmNlLmxhbmd1YWdlID09PSAnZW4nID8gTU9OVEhTX0VOIDogTU9OVEhTX0VTOyB9XG4gIHB1YmxpYyBnZXQgZGF5c0xpc3QoKSB7IHJldHVybiB0aGlzLmFwcGVhcmFuY2UubGFuZ3VhZ2UgPT09ICdlbicgPyBEQVlTX1NIT1JUX0VOIDogREFZU19TSE9SVF9FUzsgfVxuXG4gIHB1YmxpYyB0cmFja0J5V2VlayhpbmRleDogbnVtYmVyLCBfOiBhbnkpOiBudW1iZXIgeyByZXR1cm4gaW5kZXg7IH1cbiAgcHVibGljIHRyYWNrQnlEYXkoXzogbnVtYmVyLCBkYXk6IENhbGVuZGFyRGF0ZSk6IHN0cmluZyB7XG4gICAgcmV0dXJuIGAke2RheS5tb250aFllYXIueWVhcn0tJHtkYXkubW9udGhZZWFyLm1vbnRofS0ke2RheS5kYXl9YDtcbiAgfVxuXG4gIG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpOiB2b2lkIHtcbiAgICBjb25zdCBzaG91bGRSZXN0YXJ0ID0gY2hhbmdlc1sncmVzdGFydCddICYmIHRoaXMucmVzdGFydDtcblx0XHRjb25zdCBzaG91bGRBcHB5ID0gY2hhbmdlc1snYXBweU9uQ2xvc2UnXSAmJiB0aGlzLmFwcHlPbkNsb3NlO1xuICAgIGNvbnN0IHNob3VsZFByb2Nlc3NQcmVTZWxlY3RlZCA9IGNoYW5nZXNbJ3ByZVNlbGVjdGVkRGF0ZSddICYmIHRoaXMuY29uZmlnLmluaXREYXRlO1xuXG5cdFx0aWYgKHNob3VsZEFwcHkpIHsgdGhpcy5hcHBseVNlbGVjdGVkRGF0ZSgpOyB9XG4gICAgaWYgKHNob3VsZFJlc3RhcnQgfHwgc2hvdWxkUHJvY2Vzc1ByZVNlbGVjdGVkKSB7IHRoaXMucHJvY2Vzc0luaXREYXRlKCk7IH1cbiAgfVxuXG4gIHByaXZhdGUgcHJvY2Vzc0luaXREYXRlKCk6IHZvaWQge1xuICAgIGlmICh0aGlzLnJhbmdlKSB7XG4gICAgICBzZXRUaW1lb3V0KCgpID0+IHtwcm9jZXNzUHJlc2VsZWN0ZWRSYW5nZURhdGUodGhpcyl9LCAwKTtcbiAgICB9IGVsc2UgaWYgKHRoaXMuY29uZmlnLmluaXREYXRlIGluc3RhbmNlb2YgRGF0ZSkge1xuICAgICAgdGhpcy5jdXJyZW50RGF0ZSA9IGdldFN0YXJ0RGF0ZSh0aGlzLmNvbmZpZy5pbml0RGF0ZSk7XG4gICAgICB0aGlzLnNlbGVjdGVkRGF5ID0gZGF0ZVRvQ2FsZW5kYXJEYXkodGhpcy5jb25maWcuaW5pdERhdGUpO1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBpc0RhdGVTZWxlY3RlZCgpOiBib29sZWFuIHtcbiAgICAgIHJldHVybiAhdGhpcy5yYW5nZSA/ICEhdGhpcy5zZWxlY3RlZERheSA6ICEhdGhpcy5zZWxlY3RlZFJhbmdlU3RhcnQgJiYgISF0aGlzLnNlbGVjdGVkUmFuZ2VFbmQ7XG4gIH1cblxuICBwdWJsaWMgZ2V0RGF5U2VsZWN0aW9uQ2xhc3MoZGF5OiBDYWxlbmRhckRhdGUpOiBzdHJpbmcge1xuICAgIGlmICghZGF5LmluQ3VycmVudE1vbnRoKSByZXR1cm4gJ2Rpc2FibGVkJztcblxuICAgIGNvbnN0IGRheURhdGUgPSBuZXcgRGF0ZShkYXkubW9udGhZZWFyLnllYXIsIGRheS5tb250aFllYXIubW9udGgsIGRheS5kYXkpO1xuXG4gICAgaWYgKHRoaXMuY29uZmlnPy5taW5EYXRlKSB7IGlmIChkYXlEYXRlIDwgdGhpcy5jb25maWcubWluRGF0ZSkgcmV0dXJuICdkaXNhYmxlZCc7IH1cbiAgICBpZiAodGhpcy5jb25maWc/Lm1heERhdGUpIHsgaWYgKGRheURhdGUgPiB0aGlzLmNvbmZpZy5tYXhEYXRlKSByZXR1cm4gJ2Rpc2FibGVkJzsgfVxuXG4gICAgcmV0dXJuIHRoaXMucmFuZ2UgPyBnZXRSYW5nZVNlbGVjdGlvbkNsYXNzKHRoaXMsIGRheSkgOiB0aGlzLmdldFNpbmdsZURheVNlbGVjdGlvbkNsYXNzKGRheSk7XG4gIH1cblxuICBwcml2YXRlIGdldFNpbmdsZURheVNlbGVjdGlvbkNsYXNzKGRheTogQ2FsZW5kYXJEYXRlKTogc3RyaW5nIHtcbiAgICBpZiAodGhpcy5zZWxlY3RlZERheSAmJiBkYXkuZGF5ID09PSB0aGlzLnNlbGVjdGVkRGF5LmRheSAmJlxuICAgICAgZGF5Lm1vbnRoWWVhci5tb250aCA9PT0gdGhpcy5zZWxlY3RlZERheS5tb250aFllYXIubW9udGggJiZcbiAgICAgIGRheS5tb250aFllYXIueWVhciA9PT0gdGhpcy5zZWxlY3RlZERheS5tb250aFllYXIueWVhcikge1xuICAgICAgcmV0dXJuICdzbCBzaW5nbGUnO1xuICAgIH1cbiAgICByZXR1cm4gJyc7XG4gIH1cblxuICBwdWJsaWMgb25TZWxlY3REYXkoZGF5OiBDYWxlbmRhckRhdGUpOiB2b2lkIHtcbiAgICBpZiAoIWRheS5pbkN1cnJlbnRNb250aCkgcmV0dXJuO1xuXG4gICAgaWYgKCF0aGlzLnJhbmdlKSB7XG4gICAgICB0aGlzLnNlbGVjdGVkRGF5ID0gZGF5O1xuICAgICAgY29uc3QgY3VycmVudERhdGUgPSBjYWxlbmRhckRhdGVUb0RhdGUoZGF5KTtcbiAgICAgIHRoaXMuY2FsZW5kYXJSZXNwb25zZS5lbWl0KGN1cnJlbnREYXRlKTtcbiAgICB9IGVsc2Uge1xuICAgICAgb25TZWxlY3REYXlzUmFuZ2UodGhpcywgZGF5KTtcbiAgICAgIHRoaXMuc2VsZWN0ZWRSYWdlLmVtaXQoZGF5KTtcbiAgICB9XG4gIH1cblxuXHRwdWJsaWMgYXBwbHlTZWxlY3RlZERhdGUoKTogdm9pZCB7XG5cdFx0aWYgKHRoaXMucmFuZ2UpIHtcblx0XHRcdGlmICh0aGlzLnNlbGVjdGVkUmFuZ2VTdGFydCAmJiB0aGlzLnNlbGVjdGVkUmFuZ2VFbmQpIHtcblx0XHRcdFx0b25BcHBseVJhZ2VEYXRlKHRoaXMpO1xuXHRcdFx0fSBlbHNlIGlmICh0aGlzLmVuZERhdGVGaWVsZCAmJiB0aGlzLnN0YXJ0RGF0ZUZpZWxkKSB7XG5cdFx0XHRcdHRoaXMuY2xlYXJTZWxlY3RlZERhdGUoJ2FsbCcpO1xuXHRcdFx0fVxuXHRcdH0gZWxzZSBpZiAodGhpcy5zZWxlY3RlZERheSkge1xuXHRcdFx0Y29uc3QgZGF0ZSA9IGNhbGVuZGFyRGF0ZVRvRGF0ZSh0aGlzLnNlbGVjdGVkRGF5KTtcblx0XHRcdHRoaXMuY2FsZW5kYXJSZXNwb25zZS5lbWl0KGRhdGUpO1xuXHRcdH1cblx0fVxuXG4gIHB1YmxpYyBjbGVhclNlbGVjdGVkRGF0ZShjbGVhclRhcmdldDogJ2FsbCcgfCAnc3RhcnQnIHwgJ2VuZCcpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5yYW5nZSAmJiAoY2xlYXJUYXJnZXQgPT09ICdhbGwnIHx8IGNsZWFyVGFyZ2V0ID09PSAnZW5kJykpIHtcblx0XHRcdHRoaXMuZW5kRGF0ZUVycm9yID0gJyc7XG5cdCAgICB0aGlzLmVuZERhdGVGaWVsZC5mb2N1cygpO1xuICAgICAgdGhpcy5zZWxlY3RlZFJhbmdlRW5kID0gbnVsbDtcblx0XHRcdHRoaXMuc3RhcnRGaWVsZERpc2FibGVkID0gZmFsc2U7XG4gICAgICB0aGlzLmVuZERhdGVGaWVsZC5pbnB1dFZhbHVlID0gJyc7XG5cdFx0XHRpZih0aGlzLnNlbGVjdGVkUmFuZ2VTdGFydCkgeyB0aGlzLmN1cnJlbnREYXRlID0gY2FsZW5kYXJEYXRlVG9EYXRlKHRoaXMuc2VsZWN0ZWRSYW5nZVN0YXJ0KSB9XG4gICAgfVxuXG5cdCAgaWYgKHRoaXMucmFuZ2UgJiYgKGNsZWFyVGFyZ2V0ID09PSAnYWxsJyB8fCBjbGVhclRhcmdldCA9PT0gJ3N0YXJ0JykpIHtcblx0XHQgIHRoaXMuc3RhcnREYXRlRXJyb3IgPSAnJztcblx0XHRcdHRoaXMuc3RhcnREYXRlRmllbGQuZm9jdXMoKTtcblx0XHRcdHRoaXMuZW5kRmllbGREaXNhYmxlZCA9IGZhbHNlO1xuXHRcdCAgdGhpcy5zZWxlY3RlZFJhbmdlU3RhcnQgPSBudWxsO1xuXHRcdCAgdGhpcy5zdGFydERhdGVGaWVsZC5pbnB1dFZhbHVlID0gJyc7XG5cdFx0ICBpZih0aGlzLnNlbGVjdGVkUmFuZ2VFbmQpIHsgdGhpcy5jdXJyZW50RGF0ZSA9IGNhbGVuZGFyRGF0ZVRvRGF0ZSh0aGlzLnNlbGVjdGVkUmFuZ2VFbmQpIH1cblx0ICB9XG5cblx0XHRpZiAodGhpcy5yYW5nZSAmJiB0aGlzLnNlbGVjdGVkUmFuZ2VTdGFydCA9PT0gbnVsbCAmJiB0aGlzLnNlbGVjdGVkUmFuZ2VFbmQgPT09IG51bGwpIHtcblx0XHRcdHRoaXMuZm9jdXNlZCA9ICdzdGFydCc7XG5cdFx0XHR0aGlzLnN0YXJ0RGF0ZUZpZWxkLmZvY3VzKCk7XG5cdFx0XHR0aGlzLmN1cnJlbnREYXRlID0gbmV3IERhdGUoKTtcblx0XHR9XG5cbiAgICB0aGlzLnNlbGVjdGVkRGF5ID0gbnVsbDtcblx0XHR0aGlzLm5vdGlmaWNhdGlvbiA9IG51bGw7XG5cdFx0aWYgKCF0aGlzLnJhbmdlKSB7IHRoaXMuY3VycmVudERhdGUgPSBuZXcgRGF0ZSgpOyB9XG5cbiAgICB0aGlzLmNsZWFyU2VsZWN0aW9uLmVtaXQoKTtcbiAgfVxuXG4gIHB1YmxpYyBoYW5kbGVDYWxlbmRhclJlc3BvbnNlKGRhdGU6IERhdGUgfCBEYXRlW10sIGlzTW9udGg6IGJvb2xlYW4pOiB2b2lkIHtcbiAgICBpZiAoIShkYXRlIGluc3RhbmNlb2YgRGF0ZSkpIHJldHVybjtcblxuICAgIGNvbnN0IHllYXIgPSBpc01vbnRoID8gdGhpcy5jdXJyZW50RGF0ZS5nZXRGdWxsWWVhcigpIDogZGF0ZS5nZXRGdWxsWWVhcigpO1xuICAgIGNvbnN0IG1vbnRoID0gaXNNb250aCA/IGRhdGUuZ2V0TW9udGgoKSA6IHRoaXMuY3VycmVudERhdGUuZ2V0TW9udGgoKTtcblxuICAgIHRoaXMuY3VycmVudERhdGUgPSBuZXcgRGF0ZSh5ZWFyLCBtb250aCwgdGhpcy5jdXJyZW50RGF0ZS5nZXREYXRlKCkpO1xuXG4gICAgaWYgKGlzTW9udGgpIHsgdGhpcy5pbml0TW9udGggPSB0aGlzLmN1cnJlbnREYXRlOyB0aGlzLnNob3dNb250aENhbGVuZGFyID0gZmFsc2U7IH1cbiAgICBlbHNlIHsgdGhpcy5pbml0WWVhciA9IHRoaXMuY3VycmVudERhdGU7IHRoaXMuc2hvd1llYXJDYWxlbmRhciA9IGZhbHNlOyB9XG5cbiAgICB0aGlzLmNoYW5nZU1vbnRoWWVhclJlc3BvbnNlLmVtaXQodGhpcy5jdXJyZW50RGF0ZSk7XG4gIH1cblxuICBwdWJsaWMgaGFuZGxlT25DbGlja0Ryb3Bkb3duTGFiZWwoaXNNb250aDogYm9vbGVhbik6IHZvaWQge1xuICAgICAgdGhpcy5pbml0TW9udGggPSBpc01vbnRoID8gdGhpcy5jdXJyZW50RGF0ZSA6IHRoaXMuaW5pdE1vbnRoO1xuICAgICAgdGhpcy5pbml0WWVhciA9ICFpc01vbnRoID8gdGhpcy5jdXJyZW50RGF0ZSA6IHRoaXMuaW5pdFllYXI7XG5cbiAgICAgIHRoaXMuc2hvd01vbnRoQ2FsZW5kYXIgPSBpc01vbnRoO1xuICAgICAgdGhpcy5zaG93WWVhckNhbGVuZGFyID0gIWlzTW9udGg7XG5cbiAgICAgIHRoaXMub3BlbkludGVncmF0ZWRDYWxlbmRhci5lbWl0KCk7XG4gIH1cblxuICBwdWJsaWMgZ2V0TW9udGhHcmlkKCk6IENhbGVuZGFyRGF0ZVtdW10ge1xuICAgIGxldCB3ZWVrOiBDYWxlbmRhckRhdGVbXSA9IFtdO1xuXG4gICAgY29uc3QgdG9kYXkgPSBuZXcgRGF0ZSgpO1xuICAgIGNvbnN0IGdyaWQ6IENhbGVuZGFyRGF0ZVtdW10gPSBbXTtcbiAgICBjb25zdCBiYXNlRGF0ZSA9IHRoaXMuY3VycmVudERhdGU7XG4gICAgY29uc3QgbW9udGggPSBiYXNlRGF0ZS5nZXRNb250aCgpO1xuICAgIGNvbnN0IHllYXIgPSBiYXNlRGF0ZS5nZXRGdWxsWWVhcigpO1xuXG4gICAgY29uc3QgZmlyc3REYXkgPSBuZXcgRGF0ZSh5ZWFyLCBtb250aCwgMSk7XG4gICAgY29uc3Qgc3RhcnRXZWVrZGF5ID0gKGZpcnN0RGF5LmdldERheSgpICsgNikgJSA3O1xuXG4gICAgY29uc3QgZGF5c0luTW9udGggPSBuZXcgRGF0ZSh5ZWFyLCBtb250aCArIDEsIDApLmdldERhdGUoKTtcbiAgICBjb25zdCBkYXlzSW5QcmV2TW9udGggPSBuZXcgRGF0ZSh5ZWFyLCBtb250aCwgMCkuZ2V0RGF0ZSgpO1xuXG4gICAgLy8gZmlsbCBkYXlzIGZyb20gcHJldmlvdXMgbW9udGhcbiAgICBmb3IgKGxldCBpID0gc3RhcnRXZWVrZGF5IC0gMTsgaSA+PSAwOyBpLS0pIHtcbiAgICAgICAgY29uc3QgZGF5ID0gZGF5c0luUHJldk1vbnRoIC0gaTtcbiAgICAgICAgY29uc3Qgd2Vla0RheSA9IChzdGFydFdlZWtkYXkgLSAxIC0gaSArIDcpICUgNztcbiAgICAgICAgd2Vlay5wdXNoKHsgZGF5LCBtb250aFllYXI6IHttb250aDogbW9udGggLSAxLCB5ZWFyOiB5ZWFyfSwgaXNUb2RheTogZmFsc2UsIGluQ3VycmVudE1vbnRoOiBmYWxzZSwgd2Vla0RheSB9KTtcbiAgICB9XG5cbiAgICAvLyBmaWxsIGRheXMgZnJvbSBjdXJyZW50IG1vbnRoXG4gICAgZm9yIChsZXQgZCA9IDE7IGQgPD0gZGF5c0luTW9udGg7IGQrKykge1xuICAgICAgICBjb25zdCBpc1RvZGF5ID0gZCA9PT0gdG9kYXkuZ2V0RGF0ZSgpICYmIG1vbnRoID09PSB0b2RheS5nZXRNb250aCgpICYmIHllYXIgPT09IHRvZGF5LmdldEZ1bGxZZWFyKCk7XG4gICAgICAgIGNvbnN0IHdlZWtEYXkgPSB3ZWVrLmxlbmd0aCAlIDc7XG4gICAgICAgIHdlZWsucHVzaCh7IGRheTogZCwgbW9udGhZZWFyOiB7bW9udGg6IG1vbnRoLCB5ZWFyOiB5ZWFyfSwgaXNUb2RheSwgaW5DdXJyZW50TW9udGg6IHRydWUsIHdlZWtEYXkgfSk7XG5cbiAgICAgICAgaWYgKHdlZWsubGVuZ3RoID09PSA3KSB7XG4gICAgICAgICAgICBncmlkLnB1c2god2Vlayk7XG4gICAgICAgICAgICB3ZWVrID0gW107XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBmaWxsIHJlbWFpbmluZyBkYXlzIGZyb20gbmV4dCBtb250aFxuICAgIGxldCBuZXh0RGF5ID0gMTtcbiAgICB3aGlsZSAod2Vlay5sZW5ndGggPCA3KSB7XG4gICAgICAgIGNvbnN0IHdlZWtEYXkgPSB3ZWVrLmxlbmd0aDtcbiAgICAgICAgd2Vlay5wdXNoKHsgZGF5OiBuZXh0RGF5KyssIG1vbnRoWWVhcjoge21vbnRoOiBtb250aCArIDEsIHllYXI6IHllYXJ9LCBpc1RvZGF5OiBmYWxzZSwgaW5DdXJyZW50TW9udGg6IGZhbHNlLCB3ZWVrRGF5IH0pO1xuICAgIH1cblxuICAgIGNvbnN0IGhhc0N1cnJlbnRNb250aERheSA9IHdlZWsuc29tZShkYXkgPT4gZGF5LmluQ3VycmVudE1vbnRoKTtcbiAgICBpZiAoaGFzQ3VycmVudE1vbnRoRGF5KSB7XG4gICAgICAgIGdyaWQucHVzaCh3ZWVrKTtcbiAgICB9XG5cbiAgICByZXR1cm4gZ3JpZDtcbiAgfVxuXG5cdHByb3RlY3RlZCByZWFkb25seSBjaGFuZ2VEYXRlID0gY2hhbmdlRGF0ZTtcbiAgcHJvdGVjdGVkIHJlYWRvbmx5IGlzUHJldmlldyA9IGlzUHJldmlldztcblx0cHJvdGVjdGVkIHJlYWRvbmx5IHNlYXJjaERhdGUgPSBzZWFyY2hEYXRlO1xuICBwcm90ZWN0ZWQgcmVhZG9ubHkgb25Ib3ZlckRheSA9IG9uSG92ZXJEYXk7XG5cdHByb3RlY3RlZCByZWFkb25seSBvbkRhdGVLZXl1cCA9IG9uRGF0ZUtleXVwO1xuICBwcm90ZWN0ZWQgcmVhZG9ubHkgb25DbGVhckhvdmVyID0gb25DbGVhckhvdmVyO1xuXHRwcm90ZWN0ZWQgcmVhZG9ubHkgY2FsZW5kYXJEYXRlVG9EYXRlID0gY2FsZW5kYXJEYXRlVG9EYXRlO1xuXHRwcm90ZWN0ZWQgcmVhZG9ubHkgaXNQZXJpb2RBdmFpbGFibGUgPSBpc1BlcmlvZEF2YWlsYWJsZTtcbn0iLCI8c2VjdGlvbiAqbmdJZj1cInNob3dNb250aENhbGVuZGFyXCI+XG4gIDxtb250aC1jYWxlbmRhclxuICAgIFtjb25maWddPVwiY29uZmlnXCJcbiAgICBbaW50ZWdyYXRlZE1vZGVdPVwidHJ1ZVwiXG4gICAgW3Jlc3RhcnRdPVwic2hvd01vbnRoQ2FsZW5kYXJcIlxuICAgIChyZXNwb25zZSk9XCJoYW5kbGVDYWxlbmRhclJlc3BvbnNlKCRldmVudCwgdHJ1ZSlcIiBbaW5pdERhdGVdPVwiaW5pdE1vbnRoXCJcbiAgICBbYXBwZWFyYW5jZV09XCJ7bGFuZ3VhZ2U6IGFwcGVhcmFuY2UubGFuZ3VhZ2UsIGlzTW9iaWxlOiBhcHBlYXJhbmNlLmlzTW9iaWxlLCBhY3Rpb25zOiBmYWxzZSwgfVwiPlxuICA8L21vbnRoLWNhbGVuZGFyPlxuPC9zZWN0aW9uPlxuXG48c2VjdGlvbiAqbmdJZj1cInNob3dZZWFyQ2FsZW5kYXJcIj5cbiAgPHllYXItY2FsZW5kYXJcbiAgICBbY29uZmlnXT1cImNvbmZpZ1wiXG4gICAgW2ludGVncmF0ZWRNb2RlXT1cInRydWVcIlxuICAgIFtyZXN0YXJ0XT1cInNob3dZZWFyQ2FsZW5kYXJcIlxuICAgIChyZXNwb25zZSk9XCJoYW5kbGVDYWxlbmRhclJlc3BvbnNlKCRldmVudCwgZmFsc2UpXCIgW2luaXREYXRlXT1cImluaXRZZWFyXCJcbiAgICBbYXBwZWFyYW5jZV09XCJ7bGFuZ3VhZ2U6IGFwcGVhcmFuY2UubGFuZ3VhZ2UsIGlzTW9iaWxlOiBhcHBlYXJhbmNlLmlzTW9iaWxlLCBhY3Rpb25zOiBmYWxzZX1cIj5cbiAgPC95ZWFyLWNhbGVuZGFyPlxuPC9zZWN0aW9uPlxuXG48ZGl2ICpuZ0lmPVwiIXNob3dZZWFyQ2FsZW5kYXIgJiYgIXNob3dNb250aENhbGVuZGFyXCIgY2xhc3M9XCJncmF2aXR5LWNhbGVuZGFyLWNvbnRlbnRcIiBbY2xhc3MubW9iaWxlXT1cImFwcGVhcmFuY2UuaXNNb2JpbGVcIj5cbiAgPHNwYW4gKm5nSWY9XCIhYXBwZWFyYW5jZS5pc01vYmlsZVwiIGNsYXNzPVwiaHItbGFiZWwgc20tYm9sZCB0aXRsZVwiPnt7cmFuZ2UgPyBpMThuLnNlbGVjdF9yYW5nZSA6IGkxOG4uc2VsZWN0X2RhdGV9fTwvc3Bhbj5cblxuICA8ZGl2ICpuZ0lmPVwicmFuZ2VcIiBjbGFzcz1cInNlbGVjdGVkLWRhdGVzXCI+XG4gICAgPGdyYXZpdHktdGV4dC1maWVsZCAjc3RhcnREYXRlXG4gICAgICBbc2l6ZV09XCInc20nXCJcbiAgICAgIFt3aWR0aF09XCInc2hvcnQnXCJcbiAgICAgIFtsYWJlbF09XCJpMThuLnN0YXJ0X2RhdGVcIlxuICAgICAgW2lucHV0Q29udGVudFR5cGVdPVwiJ2RhdGUnXCJcbiAgICAgIFtzdXBwb3J0VGV4dF09XCJzdGFydERhdGVFcnJvclwiXG4gICAgICBbcGxhY2Vob2xkZXJdPVwiaTE4bi5kYXRlX3BsYWNlaG9sZGVyXCJcbiAgICAgIFtjbGlja09uUmlnaHRJY29uXT1cIiFzdGFydEZpZWxkRGlzYWJsZWRcIlxuICAgICAgKGtleXVwKT1cIm9uRGF0ZUtleXVwKHRoaXMsICRldmVudCwgJ3N0YXJ0JylcIlxuICAgICAgKGNsaWNrSWNvblJpZ2h0KT1cImNsZWFyU2VsZWN0ZWREYXRlKCdzdGFydCcpXCJcbiAgICAgIChmb2N1c291dCk9XCJzZWFyY2hEYXRlKHRoaXMsIHN0YXJ0RGF0ZS5pbnB1dFZhbHVlLCAnc3RhcnQnKVwiXG4gICAgICBbaWNvblJpZ2h0XT1cIihzZWxlY3RlZFJhbmdlU3RhcnQgfHwgc3RhcnREYXRlLmlucHV0VmFsdWUubGVuZ3RoID4gOSkgPyAndW5zdWNjZXNzJyA6ICAnJ1wiXG4gICAgICAoY2xpY2spPVwiZm9jdXNlZCA9ICdzdGFydCc7IHNlbGVjdGVkUmFuZ2VTdGFydCA/IGN1cnJlbnREYXRlID0gY2FsZW5kYXJEYXRlVG9EYXRlKHNlbGVjdGVkUmFuZ2VTdGFydCkgOiBudWxsXCJcbiAgICAgIFtjdXN0b21TdGF0ZV09XCJzdGFydEZpZWxkRGlzYWJsZWQgPyAnZGlzYWJsZWQnIDogc3RhcnREYXRlRXJyb3IgPyAndHlwZWQtZXJyb3InIDogKHN0YXJ0RGF0ZS5pbnB1dFZhbHVlLmxlbmd0aCA8IDEgPyAnZGVmYXVsdCcgOiAndHlwaW5nJylcIi8+XG5cbiAgICA8Z3Jhdml0eS10ZXh0LWZpZWxkICNlbmREYXRlXG4gICAgICBbc2l6ZV09XCInc20nXCJcbiAgICAgIFt3aWR0aF09XCInc2hvcnQnXCJcbiAgICAgIFtsYWJlbF09XCJpMThuLmVuZF9kYXRlXCJcbiAgICAgIFtpbnB1dENvbnRlbnRUeXBlXT1cIidkYXRlJ1wiXG4gICAgICBbc3VwcG9ydFRleHRdPVwiZW5kRGF0ZUVycm9yXCJcbiAgICAgIFtwbGFjZWhvbGRlcl09XCJpMThuLmRhdGVfcGxhY2Vob2xkZXJcIlxuICAgICAgW2NsaWNrT25SaWdodEljb25dPVwiIWVuZEZpZWxkRGlzYWJsZWRcIlxuICAgICAgKGtleXVwKT1cIm9uRGF0ZUtleXVwKHRoaXMsICRldmVudCwgJ2VuZCcpXCJcbiAgICAgIChjbGlja0ljb25SaWdodCk9XCJjbGVhclNlbGVjdGVkRGF0ZSgnZW5kJylcIlxuICAgICAgKGZvY3Vzb3V0KT1cInNlYXJjaERhdGUodGhpcywgZW5kRGF0ZS5pbnB1dFZhbHVlLCAnZW5kJylcIlxuICAgICAgW2ljb25SaWdodF09XCIoc2VsZWN0ZWRSYW5nZUVuZCB8fCBlbmREYXRlLmlucHV0VmFsdWUubGVuZ3RoID4gOSkgPyAndW5zdWNjZXNzJyA6ICcnXCJcbiAgICAgIChjbGljayk9XCIgZm9jdXNlZCA9ICdlbmQnOyBzZWxlY3RlZFJhbmdlRW5kID8gY3VycmVudERhdGUgPSBjYWxlbmRhckRhdGVUb0RhdGUoc2VsZWN0ZWRSYW5nZUVuZCkgOiBudWxsXCJcbiAgICAgIFtjdXN0b21TdGF0ZV09XCJlbmRGaWVsZERpc2FibGVkID8gJ2Rpc2FibGVkJyA6IGVuZERhdGVFcnJvciA/ICd0eXBlZC1lcnJvcicgOiAoZW5kRGF0ZS5pbnB1dFZhbHVlLmxlbmd0aCA8IDEgPyAnZGVmYXVsdCcgOiAndHlwaW5nJylcIi8+XG4gIDwvZGl2PlxuXG4gIDxzZWN0aW9uICBjbGFzcz1cImdyYXZpdHktY2FsZW5kYXItaGVhZGVyXCIgW2NsYXNzLm1vYmlsZV09XCJhcHBlYXJhbmNlLmlzTW9iaWxlXCI+XG4gICAgPGdyYXZpdHktaWNvbi1idXR0b24gW3R5cGVdPVwiJ3ByaW1hcnknXCIgW3NpemVdPVwiJ3NtJ1wiIFtpY29uXT1cIidhcnJvdy1sZWZ0J1wiIFtzdXBwb3J0VGV4dF09XCJpMThuLnByZXZpZXdfbW9udGhcIlxuICAgICAgICAgICAgICAgICAgICAgICAgIChjbGlja09uSWNvbik9XCJjdXJyZW50RGF0ZSA9IGNoYW5nZURhdGUoLTEsIGN1cnJlbnREYXRlLCB0cnVlKTsgY2hhbmdlTW9udGguZW1pdCgtMSlcIlxuICAgICAgICAgICAgICAgICAgICAgICAgIFtzdGF0ZV09XCIobmF2VHlwZSA9PT0gJ3ByZXYnIHx8IG5hdlR5cGUgPT09ICdib3RoJykgJiYgKGFwcGVhcmFuY2Uuc3RhdGUgIT09ICdkaXNhYmxlZCcpICYmXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGlzUGVyaW9kQXZhaWxhYmxlKGN1cnJlbnREYXRlLCBjb25maWcubWluRGF0ZSwgJ21vbnRoJywgJ3ByZXYnKSA/ICdhY3RpdmUnIDogJ2Rpc2FibGVkJ1wiLz5cblxuICAgIDxkaXYgY2xhc3M9XCJtb250aC15ZWFyLWxhYmVsXCI+XG4gICAgICA8Z3Jhdml0eS1kcm9wZG93bi1sYWJlbCBbZm9udENsYXNzXT1cIidoci10aXRsZSBzbS1ib2xkJ1wiIFtzaXplXT1cIidzbSdcIiBbbGFiZWxdPVwibW9udGhzTGlzdFtjdXJyZW50RGF0ZS5nZXRNb250aCgpXVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbc3RhdGVdPVwiYXBwZWFyYW5jZS5zdGF0ZSA9PT0gJ2Rpc2FibGVkJyA/ICdpbmFjdGl2ZScgOiAnYWN0aXZlJ1wiIChvbkNsaWNrTGFiZWwpPVwiaGFuZGxlT25DbGlja0Ryb3Bkb3duTGFiZWwodHJ1ZSlcIj4gPC9ncmF2aXR5LWRyb3Bkb3duLWxhYmVsPlxuXG4gICAgICA8Z3Jhdml0eS1kcm9wZG93bi1sYWJlbCBbZm9udENsYXNzXT1cIidoci10aXRsZSBzbS1ib2xkJ1wiIFtzaXplXT1cIidzbSdcIiBbbGFiZWxdPVwiY3VycmVudERhdGUuZ2V0RnVsbFllYXIoKS50b1N0cmluZygpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtzdGF0ZV09XCJhcHBlYXJhbmNlLnN0YXRlID09PSAnZGlzYWJsZWQnID8gJ2luYWN0aXZlJyA6ICdhY3RpdmUnXCIgKG9uQ2xpY2tMYWJlbCk9XCJoYW5kbGVPbkNsaWNrRHJvcGRvd25MYWJlbChmYWxzZSlcIj4gPC9ncmF2aXR5LWRyb3Bkb3duLWxhYmVsPlxuICAgIDwvZGl2PlxuXG4gICAgICA8Z3Jhdml0eS1pY29uLWJ1dHRvbiBbdHlwZV09XCIncHJpbWFyeSdcIiBbc2l6ZV09XCInc20nXCIgW2ljb25dPVwiJ2Fycm93LXJpZ2h0J1wiIFtzdXBwb3J0VGV4dF09XCJpMThuLm5leHRfbW9udGhcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrT25JY29uKT1cImN1cnJlbnREYXRlID0gY2hhbmdlRGF0ZSgxLCBjdXJyZW50RGF0ZSwgdHJ1ZSk7IGNoYW5nZU1vbnRoLmVtaXQoMSlcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgW3N0YXRlXT1cIihuYXZUeXBlID09PSAnbmV4dCcgfHwgbmF2VHlwZSA9PT0gJ2JvdGgnKSAmJiAoYXBwZWFyYW5jZS5zdGF0ZSAhPT0gJ2Rpc2FibGVkJykgJiZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpc1BlcmlvZEF2YWlsYWJsZShjdXJyZW50RGF0ZSwgY29uZmlnLm1heERhdGUsICdtb250aCcsICduZXh0JykgPyAnYWN0aXZlJyA6ICdkaXNhYmxlZCdcIi8+XG4gIDwvc2VjdGlvbj5cblxuICA8c2VjdGlvbiBjbGFzcz1cImdyYXZpdHktY2FsZW5kYXItYm9keVwiIFtjbGFzcy5tb2JpbGVdPVwiYXBwZWFyYW5jZS5pc01vYmlsZVwiPlxuICAgIDxzZWN0aW9uIGNsYXNzPVwiZGF5cy1uYW1lLWxpbmVcIj5cbiAgICAgIDxkaXYgY2xhc3M9XCJkYXlzLW5hbWVcIj5cbiAgICAgICAgPHNwYW4gY2xhc3M9XCJoci1ib2R5XCIgW25nQ2xhc3NdPVwiYXBwZWFyYW5jZS5pc01vYmlsZSA/ICdtZC1yZWd1bGFyJyA6ICdzbS1yZWd1bGFyJ1wiXG4gICAgICAgICAgICAgICpuZ0Zvcj1cImxldCBkYXkgb2YgZGF5c0xpc3RcIj4ge3sgZGF5IH19IDwvc3Bhbj5cbiAgICAgIDwvZGl2PlxuXG4gICAgICA8ZGl2IGNsYXNzPVwic2VwYXJhdG9yLWxpbmVcIj48L2Rpdj5cbiAgICA8L3NlY3Rpb24+XG5cbiAgICA8c2VjdGlvbiBjbGFzcz1cImRheXMtbnVtYmVyLXNlbGVjdG9yXCI+XG4gICAgICA8ZGl2IGNsYXNzPVwiZGF5cy1udW1iZXItdGFibGVcIj5cbiAgICAgICAgPGRpdiBjbGFzcz1cIndlZWstcm93XCIgKm5nRm9yPVwibGV0IHdlZWsgb2YgZ2V0TW9udGhHcmlkKCk7IHRyYWNrQnk6IHRyYWNrQnlXZWVrXCI+XG4gICAgICAgICA8c3BhbiBjbGFzcz1cImhyLWJvZHlcIiAqbmdGb3I9XCJsZXQgZGF5IG9mIHdlZWs7IHRyYWNrQnk6IHRyYWNrQnlEYXlcIlxuICAgICAgICAgIFtjbGFzcy5wcmV2aWV3XT1cInJhbmdlID8gaXNQcmV2aWV3KHRoaXMsIGRheSkgOiBudWxsXCJcbiAgICAgICAgICBbY2xhc3MuZGlzYWJsZWRdPVwiIWRheS5pbkN1cnJlbnRNb250aFwiIFtjbGFzcy50b2RheV09XCJkYXkuaXNUb2RheVwiXG4gICAgICAgICAgKG1vdXNlZW50ZXIpPVwicmFuZ2UgPyBvbkhvdmVyRGF5KHRoaXMsIGRheSkgOiBudWxsOyBob3ZlckRheS5lbWl0KGRheSlcIlxuICAgICAgICAgIChtb3VzZWxlYXZlKT1cInJhbmdlID8gb25DbGVhckhvdmVyKHRoaXMpIDogbnVsbDsgdGhpcy5jbGVhckhvdmVyLmVtaXQoKVwiXG4gICAgICAgICAgW25nQ2xhc3NdPVwiW2FwcGVhcmFuY2UuaXNNb2JpbGUgPyAnbWQtcmVndWxhcicgOiAnc20tcmVndWxhcicsXG4gICAgICAgICAgICAgICAgICAgICAgYXBwZWFyYW5jZS5zdGF0ZSA9PT0gJ2Rpc2FibGVkJyA/ICdkaXNhYmxlZCcgOiBnZXREYXlTZWxlY3Rpb25DbGFzcyhkYXkpXVwiXG4gICAgICAgICAgKGNsaWNrKT1cImRheS5pbkN1cnJlbnRNb250aCA/IG9uU2VsZWN0RGF5KGRheSk6IG51bGxcIj4ge3sgZGF5LmRheSB9fSA8L3NwYW4+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9kaXY+XG5cbiAgICAgIDxkaXYgKm5nSWY9XCJub3RpZmljYXRpb25cIiBjbGFzcz1cIm5vdGlmaWNhdGlvblwiIFtjbGFzcy5lcnJvcl09XCJub3RpZmljYXRpb24uZXJyb3JcIj5cbiAgICAgICAgPGdyYXZpdHktaWNvbiBbc3R5bGUuLS1pY29uLWNvbG9yXT1cIid2YXIoLS1ub3RpZmljYXRpb24taWNvbi1jb2xvciknXCIgW2ljb25TaXplXT1cIidzbS0xMidcIiBbaWNvbk5hbWVdPVwiJ2luZm9ybWF0aW9uLWNpcmNsZSdcIi8+XG4gICAgICAgIDxzcGFuIGNsYXNzPVwiaHItbGFiZWwgc20tcmVndWxhclwiPnt7bm90aWZpY2F0aW9uLnRleHR9fTwvc3Bhbj5cbiAgICAgIDwvZGl2PlxuXG4gICAgICA8ZGl2ICpuZ0lmPVwiYXBwZWFyYW5jZS5hY3Rpb25zXCIgY2xhc3M9XCJhY3Rpb24tc2VjdGlvblwiID5cbiAgICAgICAgPGdyYXZpdHktbGluayBbbGlua1RleHRdPVwiaTE4bi5jbGVhclwiIFtzdGF0ZV09XCIhaXNEYXRlU2VsZWN0ZWQoKSA/ICdkaXNhYmxlZCcgOiAnYWN0aXZlJ1wiXG4gICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cIiBpc0RhdGVTZWxlY3RlZCgpID8gY2xlYXJTZWxlY3RlZERhdGUoJ2FsbCcpIDogbnVsbFwiPiA8L2dyYXZpdHktbGluaz5cblxuICAgICAgICA8Z3Jhdml0eS1idXR0b24gW3NpemVdPVwiJ3NtJ1wiIFt0eXBlXT1cIid0ZXJ0aWFyeSdcIiBbZGlzYWJsZWRdPVwiIWlzRGF0ZVNlbGVjdGVkKClcIlxuICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cImlzRGF0ZVNlbGVjdGVkKCkgPyBhcHBseVNlbGVjdGVkRGF0ZSgpIDogbnVsbFwiPiB7e2kxOG4uYXBwbHl9fSA8L2dyYXZpdHktYnV0dG9uPlxuICAgICAgPC9kaXY+XG4gICAgPC9zZWN0aW9uPlxuICA8L3NlY3Rpb24+XG48L2Rpdj5cbiJdfQ==