@agorapulse/ui-components 16.1.2-beta → 16.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (36) hide show
  1. package/agorapulse-ui-components-16.2.0.tgz +0 -0
  2. package/esm2022/avatar/avatar.component.mjs +3 -3
  3. package/esm2022/icon-button/icon-button.component.mjs +3 -3
  4. package/esm2022/modal/modal.component.mjs +3 -3
  5. package/esm2022/neo-datepicker/neo-datepicker.component.mjs +3 -3
  6. package/esm2022/range-slider/agorapulse-ui-components-range-slider.mjs +5 -0
  7. package/esm2022/range-slider/public_api.mjs +2 -0
  8. package/esm2022/range-slider/range-slider.component.mjs +155 -0
  9. package/esm2022/select/select.component.mjs +3 -3
  10. package/esm2022/snackbars-thread/component/snackbars-thread.component.mjs +3 -3
  11. package/esm2022/social-button/social-button.component.mjs +3 -3
  12. package/esm2022/toggle/toggle.component.mjs +3 -3
  13. package/fesm2022/agorapulse-ui-components-avatar.mjs +2 -2
  14. package/fesm2022/agorapulse-ui-components-avatar.mjs.map +1 -1
  15. package/fesm2022/agorapulse-ui-components-icon-button.mjs +2 -2
  16. package/fesm2022/agorapulse-ui-components-icon-button.mjs.map +1 -1
  17. package/fesm2022/agorapulse-ui-components-modal.mjs +2 -2
  18. package/fesm2022/agorapulse-ui-components-modal.mjs.map +1 -1
  19. package/fesm2022/agorapulse-ui-components-neo-datepicker.mjs +2 -2
  20. package/fesm2022/agorapulse-ui-components-neo-datepicker.mjs.map +1 -1
  21. package/fesm2022/agorapulse-ui-components-range-slider.mjs +162 -0
  22. package/fesm2022/agorapulse-ui-components-range-slider.mjs.map +1 -0
  23. package/fesm2022/agorapulse-ui-components-select.mjs +2 -2
  24. package/fesm2022/agorapulse-ui-components-select.mjs.map +1 -1
  25. package/fesm2022/agorapulse-ui-components-snackbars-thread.mjs +2 -2
  26. package/fesm2022/agorapulse-ui-components-snackbars-thread.mjs.map +1 -1
  27. package/fesm2022/agorapulse-ui-components-social-button.mjs +2 -2
  28. package/fesm2022/agorapulse-ui-components-social-button.mjs.map +1 -1
  29. package/fesm2022/agorapulse-ui-components-toggle.mjs +2 -2
  30. package/fesm2022/agorapulse-ui-components-toggle.mjs.map +1 -1
  31. package/package.json +21 -15
  32. package/range-slider/index.d.ts +5 -0
  33. package/range-slider/public_api.d.ts +1 -0
  34. package/range-slider/range-slider.component.d.ts +35 -0
  35. package/snackbars-thread/component/snackbars-thread.component.d.ts +1 -1
  36. package/agorapulse-ui-components-16.1.2-beta.tgz +0 -0
@@ -203,7 +203,7 @@ export class NeoDatepickerComponent {
203
203
  }
204
204
  }
205
205
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.10", ngImport: i0, type: NeoDatepickerComponent, deps: [{ token: i1.SymbolRegistry }], target: i0.ɵɵFactoryTarget.Component });
206
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.10", type: NeoDatepickerComponent, isStandalone: true, selector: "ap-neo-date-picker", inputs: { dayTemplate: "dayTemplate", locale: "locale", maxDate: "maxDate", minDate: "minDate", mode: "mode", selectedDates: "selectedDates", startsOn: "startsOn" }, outputs: { datesSelected: "datesSelected", nextMonth: "nextMonth", previousMonth: "previousMonth" }, providers: [DayDisabledPipe], ngImport: i0, template: "<div class=\"date-picker-container\">\n <div class=\"date-picker\">\n <div class=\"month-navigation\">\n <ap-icon-button\n name=\"neo-date-picker-previous-month\"\n [disabled]=\"!previousMonthAvailable\"\n (click)=\"onPreviousMonth()\">\n <ap-symbol\n symbolId=\"arrow-button-left\"\n size=\"micro\" />\n </ap-icon-button>\n <span>{{ months[currentMonth] | titlecase }} {{ currentYear }}</span>\n <ap-icon-button\n name=\"neo-date-picker-next-month\"\n (click)=\"onNextMonth()\">\n <ap-symbol\n symbolId=\"arrow-button-right\"\n size=\"micro\" />\n </ap-icon-button>\n </div>\n <div class=\"week-header\">\n <ng-container *ngFor=\"let day of weekDays\">\n <div class=\"day\">\n {{ day | slice : 0 : 2 | titlecase }}\n </div>\n </ng-container>\n </div>\n <div class=\"days-container\">\n <ng-container *ngFor=\"let day of currentMonthDates$ | async\">\n <ng-container\n *ngIf=\"dayTemplate\"\n [ngTemplateOutlet]=\"dayTemplate\"\n [ngTemplateOutletContext]=\"{ day: day }\" />\n <ng-container *ngIf=\"!dayTemplate\">\n <div\n class=\"day\"\n [class.disabled]=\"day | dayDisabled : TODAY_TIMESTAMP : minDateTimestamp : maxDateTimestamp\"\n [class.today]=\"day.timestamp === TODAY_TIMESTAMP\"\n [class.selected]=\"selectedDaysTimestamp.has(day.timestamp)\"\n (click)=\"onSelectDay(day)\">\n <span>\n {{ day.date }}\n </span>\n </div>\n </ng-container>\n </ng-container>\n </div>\n </div>\n</div>\n", styles: ["[color=facebook]{color:#0866ff}[bgcolor=facebook],[hcolor=facebook]:hover{background-color:#0866ff}[border=facebook]{border:1px solid #0866ff}[color=google]{color:#4e85e8}[bgcolor=google],[hcolor=google]:hover{background-color:#4e85e8}[border=google]{border:1px solid #4e85e8}[color=instagram]{color:#e1306c}[bgcolor=instagram],[hcolor=instagram]:hover{background-color:#e1306c}[border=instagram]{border:1px solid #e1306c}[color=instagrammagenta]{color:#c13584}[bgcolor=instagrammagenta],[hcolor=instagrammagenta]:hover{background-color:#c13584}[border=instagrammagenta]{border:1px solid #c13584}[color=instagramblue]{color:#5851db}[bgcolor=instagramblue],[hcolor=instagramblue]:hover{background-color:#5851db}[border=instagramblue]{border:1px solid #5851db}[color=instagrampurple]{color:#833ab4}[bgcolor=instagrampurple],[hcolor=instagrampurple]:hover{background-color:#833ab4}[border=instagrampurple]{border:1px solid #833ab4}[color=instagramorange]{color:#f56040}[bgcolor=instagramorange],[hcolor=instagramorange]:hover{background-color:#f56040}[border=instagramorange]{border:1px solid #f56040}[color=instagramyellow]{color:#ffdc80}[bgcolor=instagramyellow],[hcolor=instagramyellow]:hover{background-color:#ffdc80}[border=instagramyellow]{border:1px solid #ffdc80}[color=linkedin]{color:#2c67bc}[bgcolor=linkedin],[hcolor=linkedin]:hover{background-color:#2c67bc}[border=linkedin]{border:1px solid #2c67bc}[color=twitter]{color:#55acee}[bgcolor=twitter],[hcolor=twitter]:hover{background-color:#55acee}[border=twitter]{border:1px solid #55acee}[color=youtube]{color:red}[bgcolor=youtube],[hcolor=youtube]:hover{background-color:red}[border=youtube]{border:1px solid #ff0000}[color=blood-orange]{color:#ff4d00}[bgcolor=blood-orange],[hcolor=blood-orange]:hover{background-color:#ff4d00}[border=blood-orange]{border:1px solid #ff4d00}[color=pinkish-orange]{color:#ff7b49}[bgcolor=pinkish-orange],[hcolor=pinkish-orange]:hover{background-color:#ff7b49}[border=pinkish-orange]{border:1px solid #ff7b49}[color=charcoal-grey]{color:#2a2f34}[bgcolor=charcoal-grey],[hcolor=charcoal-grey]:hover{background-color:#2a2f34}[border=charcoal-grey]{border:1px solid #2a2f34}[color=azure]{color:#00aeef}[bgcolor=azure],[hcolor=azure]:hover{background-color:#00aeef}[border=azure]{border:1px solid #00aeef}[color=light-azure]{color:#eaf5fd}[bgcolor=light-azure],[hcolor=light-azure]:hover{background-color:#eaf5fd}[border=light-azure]{border:1px solid #eaf5fd}[color=blue-grey]{color:#8d98a9}[bgcolor=blue-grey],[hcolor=blue-grey]:hover{background-color:#8d98a9}[border=blue-grey]{border:1px solid #8d98a9}[color=silver]{color:#ced0da}[bgcolor=silver],[hcolor=silver]:hover{background-color:#ced0da}[border=silver]{border:1px solid #ced0da}[color=pale-grey]{color:#dfe3e9}[bgcolor=pale-grey],[hcolor=pale-grey]:hover{background-color:#dfe3e9}[border=pale-grey]{border:1px solid #dfe3e9}[color=grey-white]{color:#f5f7f8}[bgcolor=grey-white],[hcolor=grey-white]:hover{background-color:#f5f7f8}[border=grey-white]{border:1px solid #f5f7f8}[color=cool-grey]{color:#b4bbc6}[bgcolor=cool-grey],[hcolor=cool-grey]:hover{background-color:#b4bbc6}[border=cool-grey]{border:1px solid #b4bbc6}[color=black]{color:#344563}[bgcolor=black],[hcolor=black]:hover{background-color:#344563}[border=black]{border:1px solid #344563}[color=grey-blue]{color:#68768c}[bgcolor=grey-blue],[hcolor=grey-blue]:hover{background-color:#68768c}[border=grey-blue]{border:1px solid #68768c}[color=strawberry]{color:#f4282d}[bgcolor=strawberry],[hcolor=strawberry]:hover{background-color:#f4282d}[border=strawberry]{border:1px solid #f4282d}[color=light-strawberry]{color:#f8eded}[bgcolor=light-strawberry],[hcolor=light-strawberry]:hover{background-color:#f8eded}[border=light-strawberry]{border:1px solid #f8eded}[color=white]{color:#fff}[bgcolor=white],[hcolor=white]:hover{background-color:#fff}[border=white]{border:1px solid #ffffff}[color=cool-green]{color:#33c15d}[bgcolor=cool-green],[hcolor=cool-green]:hover{background-color:#33c15d}[border=cool-green]{border:1px solid #33c15d}[color=light-green]{color:#ebfaef}[bgcolor=light-green],[hcolor=light-green]:hover{background-color:#ebfaef}[border=light-green]{border:1px solid #ebfaef}[color=transparent]{color:transparent}[bgcolor=transparent],[hcolor=transparent]:hover{background-color:transparent}[border=transparent]{border:1px solid transparent}[color=c0]{color:#a566a5}[bgcolor=c0],[hcolor=c0]:hover{background-color:#a566a5}[border=c0]{border:1px solid #a566a5}[color=c1]{color:#c7ab82}[bgcolor=c1],[hcolor=c1]:hover{background-color:#c7ab82}[border=c1]{border:1px solid #c7ab82}[color=c2]{color:#f2713c}[bgcolor=c2],[hcolor=c2]:hover{background-color:#f2713c}[border=c2]{border:1px solid #f2713c}[color=c3]{color:#ffd006}[bgcolor=c3],[hcolor=c3]:hover{background-color:#ffd006}[border=c3]{border:1px solid #ffd006}[color=c4]{color:#94c5aa}[bgcolor=c4],[hcolor=c4]:hover{background-color:#94c5aa}[border=c4]{border:1px solid #94c5aa}[color=c5]{color:#2a9d8f}[bgcolor=c5],[hcolor=c5]:hover{background-color:#2a9d8f}[border=c5]{border:1px solid #2a9d8f}[color=c6]{color:#78acd8}[bgcolor=c6],[hcolor=c6]:hover{background-color:#78acd8}[border=c6]{border:1px solid #78acd8}[color=c7]{color:#525a9e}[bgcolor=c7],[hcolor=c7]:hover{background-color:#525a9e}[border=c7]{border:1px solid #525a9e}[color=c8]{color:#6a2459}[bgcolor=c8],[hcolor=c8]:hover{background-color:#6a2459}[border=c8]{border:1px solid #6a2459}[color=c9]{color:#74729e}[bgcolor=c9],[hcolor=c9]:hover{background-color:#74729e}[border=c9]{border:1px solid #74729e}:host .date-picker-container{display:flex;justify-content:center;align-items:center}:host .date-picker-container .date-picker{width:248px}:host .date-picker-container .date-picker .month-navigation{display:flex;justify-content:space-between;margin-bottom:24px}:host .date-picker-container .date-picker .month-navigation button:disabled{background:transparent}:host .date-picker-container .date-picker .month-navigation button:disabled ap-symbol{color:#d6dae0!important}:host .date-picker-container .date-picker .month-navigation button:disabled:hover{background:transparent!important}:host .date-picker-container .date-picker .month-navigation .left ap-symbol{margin-right:2px}:host .date-picker-container .date-picker .month-navigation .right ap-symbol{margin-left:2px}:host .date-picker-container .date-picker .month-navigation ap-symbol{display:grid;place-content:center}:host .date-picker-container .date-picker .month-navigation button:hover{background:#f5f5f7}:host .date-picker-container .date-picker .month-navigation span{font-style:normal;font-weight:700;font-size:16px;line-height:20px;text-align:center;color:#344563;align-items:center;display:flex}:host .date-picker-container .date-picker .week-header{display:flex;justify-content:space-between;margin-bottom:8px}:host .date-picker-container .date-picker .week-header .day{width:32px;text-align:center;font-weight:700;font-size:12px;line-height:15px;color:#aeb5c1}:host .date-picker-container .date-picker .days-container{display:grid;grid-template-columns:repeat(7,minmax(0,1fr));gap:2px}:host .date-picker-container .date-picker .days-container .day{font-style:normal;font-weight:400;font-size:14px;line-height:128.7%;text-align:center;width:32px;height:32px;display:flex;justify-content:center;align-items:center;border-radius:100%;position:relative}:host .date-picker-container .date-picker .days-container .day:hover{cursor:pointer}:host .date-picker-container .date-picker .days-container .day:hover:not(.disabled):not(.selected){background:#f5f5f7}:host .date-picker-container .date-picker .days-container .day.today{border:1px #178dfe solid}:host .date-picker-container .date-picker .days-container .day.selected{background:#178dfe;color:#fff!important}:host .date-picker-container .date-picker .days-container .day.selected .bubble{background:white!important}:host .date-picker-container .date-picker .days-container .day.disabled{color:#aeb5c1}:host .date-picker-container .date-picker .days-container .day .bubble{width:4px;height:4px;border-radius:100%;bottom:3px;position:absolute;background:#178dfe}\n"], dependencies: [{ kind: "component", type: SymbolComponent, selector: "ap-symbol", inputs: ["color", "symbolId", "size"] }, { kind: "pipe", type: TitleCasePipe, name: "titlecase" }, { kind: "directive", type: NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "pipe", type: SlicePipe, name: "slice" }, { kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "pipe", type: DayDisabledPipe, name: "dayDisabled" }, { kind: "pipe", type: AsyncPipe, name: "async" }, { kind: "component", type: IconButtonComponent, selector: "ap-icon-button", inputs: ["ariaLabel", "name", "color", "disabled", "menuTrigger", "locked", "loading", "type"], outputs: ["onClick", "onFocus", "onBlur", "menuOpened", "menuClosed"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
206
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.10", type: NeoDatepickerComponent, isStandalone: true, selector: "ap-neo-date-picker", inputs: { dayTemplate: "dayTemplate", locale: "locale", maxDate: "maxDate", minDate: "minDate", mode: "mode", selectedDates: "selectedDates", startsOn: "startsOn" }, outputs: { datesSelected: "datesSelected", nextMonth: "nextMonth", previousMonth: "previousMonth" }, providers: [DayDisabledPipe], ngImport: i0, template: "<div class=\"date-picker-container\">\n <div class=\"date-picker\">\n <div class=\"month-navigation\">\n <ap-icon-button\n name=\"neo-date-picker-previous-month\"\n [disabled]=\"!previousMonthAvailable\"\n (click)=\"onPreviousMonth()\">\n <ap-symbol\n symbolId=\"arrow-button-left\"\n size=\"micro\" />\n </ap-icon-button>\n <span>{{ months[currentMonth] | titlecase }} {{ currentYear }}</span>\n <ap-icon-button\n name=\"neo-date-picker-next-month\"\n (click)=\"onNextMonth()\">\n <ap-symbol\n symbolId=\"arrow-button-right\"\n size=\"micro\" />\n </ap-icon-button>\n </div>\n <div class=\"week-header\">\n <ng-container *ngFor=\"let day of weekDays\">\n <div class=\"day\">\n {{ day | slice : 0 : 2 | titlecase }}\n </div>\n </ng-container>\n </div>\n <div class=\"days-container\">\n <ng-container *ngFor=\"let day of currentMonthDates$ | async\">\n <ng-container\n *ngIf=\"dayTemplate\"\n [ngTemplateOutlet]=\"dayTemplate\"\n [ngTemplateOutletContext]=\"{ day: day }\" />\n <ng-container *ngIf=\"!dayTemplate\">\n <div\n class=\"day\"\n [class.disabled]=\"day | dayDisabled : TODAY_TIMESTAMP : minDateTimestamp : maxDateTimestamp\"\n [class.today]=\"day.timestamp === TODAY_TIMESTAMP\"\n [class.selected]=\"selectedDaysTimestamp.has(day.timestamp)\"\n (click)=\"onSelectDay(day)\">\n <span>\n {{ day.date }}\n </span>\n </div>\n </ng-container>\n </ng-container>\n </div>\n </div>\n</div>\n", styles: ["[color=facebook]{color:#0866ff}[bgcolor=facebook],[hcolor=facebook]:hover{background-color:#0866ff}[border=facebook]{border:1px solid #0866ff}[color=google]{color:#4e85e8}[bgcolor=google],[hcolor=google]:hover{background-color:#4e85e8}[border=google]{border:1px solid #4e85e8}[color=instagram]{color:#e1306c}[bgcolor=instagram],[hcolor=instagram]:hover{background-color:#e1306c}[border=instagram]{border:1px solid #e1306c}[color=instagrammagenta]{color:#c13584}[bgcolor=instagrammagenta],[hcolor=instagrammagenta]:hover{background-color:#c13584}[border=instagrammagenta]{border:1px solid #c13584}[color=instagramblue]{color:#5851db}[bgcolor=instagramblue],[hcolor=instagramblue]:hover{background-color:#5851db}[border=instagramblue]{border:1px solid #5851db}[color=instagrampurple]{color:#833ab4}[bgcolor=instagrampurple],[hcolor=instagrampurple]:hover{background-color:#833ab4}[border=instagrampurple]{border:1px solid #833ab4}[color=instagramorange]{color:#f56040}[bgcolor=instagramorange],[hcolor=instagramorange]:hover{background-color:#f56040}[border=instagramorange]{border:1px solid #f56040}[color=instagramyellow]{color:#ffdc80}[bgcolor=instagramyellow],[hcolor=instagramyellow]:hover{background-color:#ffdc80}[border=instagramyellow]{border:1px solid #ffdc80}[color=linkedin]{color:#2c67bc}[bgcolor=linkedin],[hcolor=linkedin]:hover{background-color:#2c67bc}[border=linkedin]{border:1px solid #2c67bc}[color=twitter]{color:#55acee}[bgcolor=twitter],[hcolor=twitter]:hover{background-color:#55acee}[border=twitter]{border:1px solid #55acee}[color=youtube]{color:red}[bgcolor=youtube],[hcolor=youtube]:hover{background-color:red}[border=youtube]{border:1px solid #ff0000}[color=blood-orange]{color:#ff4d00}[bgcolor=blood-orange],[hcolor=blood-orange]:hover{background-color:#ff4d00}[border=blood-orange]{border:1px solid #ff4d00}[color=pinkish-orange]{color:#ff7b49}[bgcolor=pinkish-orange],[hcolor=pinkish-orange]:hover{background-color:#ff7b49}[border=pinkish-orange]{border:1px solid #ff7b49}[color=charcoal-grey]{color:#2a2f34}[bgcolor=charcoal-grey],[hcolor=charcoal-grey]:hover{background-color:#2a2f34}[border=charcoal-grey]{border:1px solid #2a2f34}[color=azure]{color:#00aeef}[bgcolor=azure],[hcolor=azure]:hover{background-color:#00aeef}[border=azure]{border:1px solid #00aeef}[color=light-azure]{color:#eaf5fd}[bgcolor=light-azure],[hcolor=light-azure]:hover{background-color:#eaf5fd}[border=light-azure]{border:1px solid #eaf5fd}[color=blue-grey]{color:#8d98a9}[bgcolor=blue-grey],[hcolor=blue-grey]:hover{background-color:#8d98a9}[border=blue-grey]{border:1px solid #8d98a9}[color=silver]{color:#ced0da}[bgcolor=silver],[hcolor=silver]:hover{background-color:#ced0da}[border=silver]{border:1px solid #ced0da}[color=pale-grey]{color:#dfe3e9}[bgcolor=pale-grey],[hcolor=pale-grey]:hover{background-color:#dfe3e9}[border=pale-grey]{border:1px solid #dfe3e9}[color=grey-white]{color:#f5f7f8}[bgcolor=grey-white],[hcolor=grey-white]:hover{background-color:#f5f7f8}[border=grey-white]{border:1px solid #f5f7f8}[color=cool-grey]{color:#b4bbc6}[bgcolor=cool-grey],[hcolor=cool-grey]:hover{background-color:#b4bbc6}[border=cool-grey]{border:1px solid #b4bbc6}[color=black]{color:#344563}[bgcolor=black],[hcolor=black]:hover{background-color:#344563}[border=black]{border:1px solid #344563}[color=grey-blue]{color:#68768c}[bgcolor=grey-blue],[hcolor=grey-blue]:hover{background-color:#68768c}[border=grey-blue]{border:1px solid #68768c}[color=strawberry]{color:#f4282d}[bgcolor=strawberry],[hcolor=strawberry]:hover{background-color:#f4282d}[border=strawberry]{border:1px solid #f4282d}[color=light-strawberry]{color:#f8eded}[bgcolor=light-strawberry],[hcolor=light-strawberry]:hover{background-color:#f8eded}[border=light-strawberry]{border:1px solid #f8eded}[color=white]{color:#fff}[bgcolor=white],[hcolor=white]:hover{background-color:#fff}[border=white]{border:1px solid #ffffff}[color=cool-green]{color:#33c15d}[bgcolor=cool-green],[hcolor=cool-green]:hover{background-color:#33c15d}[border=cool-green]{border:1px solid #33c15d}[color=light-green]{color:#ebfaef}[bgcolor=light-green],[hcolor=light-green]:hover{background-color:#ebfaef}[border=light-green]{border:1px solid #ebfaef}[color=transparent]{color:transparent}[bgcolor=transparent],[hcolor=transparent]:hover{background-color:transparent}[border=transparent]{border:1px solid transparent}[color=c0]{color:#a566a5}[bgcolor=c0],[hcolor=c0]:hover{background-color:#a566a5}[border=c0]{border:1px solid #a566a5}[color=c1]{color:#c7ab82}[bgcolor=c1],[hcolor=c1]:hover{background-color:#c7ab82}[border=c1]{border:1px solid #c7ab82}[color=c2]{color:#f2713c}[bgcolor=c2],[hcolor=c2]:hover{background-color:#f2713c}[border=c2]{border:1px solid #f2713c}[color=c3]{color:#ffd006}[bgcolor=c3],[hcolor=c3]:hover{background-color:#ffd006}[border=c3]{border:1px solid #ffd006}[color=c4]{color:#94c5aa}[bgcolor=c4],[hcolor=c4]:hover{background-color:#94c5aa}[border=c4]{border:1px solid #94c5aa}[color=c5]{color:#2a9d8f}[bgcolor=c5],[hcolor=c5]:hover{background-color:#2a9d8f}[border=c5]{border:1px solid #2a9d8f}[color=c6]{color:#78acd8}[bgcolor=c6],[hcolor=c6]:hover{background-color:#78acd8}[border=c6]{border:1px solid #78acd8}[color=c7]{color:#525a9e}[bgcolor=c7],[hcolor=c7]:hover{background-color:#525a9e}[border=c7]{border:1px solid #525a9e}[color=c8]{color:#6a2459}[bgcolor=c8],[hcolor=c8]:hover{background-color:#6a2459}[border=c8]{border:1px solid #6a2459}[color=c9]{color:#74729e}[bgcolor=c9],[hcolor=c9]:hover{background-color:#74729e}[border=c9]{border:1px solid #74729e}:host .date-picker-container{display:flex;justify-content:center;align-items:center}:host .date-picker-container .date-picker{width:248px}:host .date-picker-container .date-picker .month-navigation{display:flex;justify-content:space-between;margin-bottom:24px}:host .date-picker-container .date-picker .month-navigation button:disabled{background:transparent}:host .date-picker-container .date-picker .month-navigation button:disabled ap-symbol{color:#d6dae0!important}:host .date-picker-container .date-picker .month-navigation button:disabled:hover{background:transparent!important}:host .date-picker-container .date-picker .month-navigation .left ap-symbol{margin-right:2px}:host .date-picker-container .date-picker .month-navigation .right ap-symbol{margin-left:2px}:host .date-picker-container .date-picker .month-navigation ap-symbol{display:grid;place-content:center}:host .date-picker-container .date-picker .month-navigation button:hover{background:#f5f5f7}:host .date-picker-container .date-picker .month-navigation span{font-style:normal;font-weight:700;font-size:16px;line-height:20px;text-align:center;color:#344563;align-items:center;display:flex}:host .date-picker-container .date-picker .week-header{display:flex;justify-content:space-between;margin-bottom:8px}:host .date-picker-container .date-picker .week-header .day{width:32px;text-align:center;font-weight:700;font-size:12px;line-height:15px;color:#aeb5c1}:host .date-picker-container .date-picker .days-container{display:grid;grid-template-columns:repeat(7,minmax(0,1fr));gap:2px}:host .date-picker-container .date-picker .days-container .day{font-style:normal;font-weight:400;font-size:14px;line-height:128.7%;text-align:center;width:32px;height:32px;display:flex;justify-content:center;align-items:center;border-radius:100%;position:relative}:host .date-picker-container .date-picker .days-container .day:hover{cursor:pointer}:host .date-picker-container .date-picker .days-container .day:hover:not(.disabled):not(.selected){background:#f5f5f7}:host .date-picker-container .date-picker .days-container .day.today{border:1px #178dfe solid}:host .date-picker-container .date-picker .days-container .day.selected{background:#178dfe;color:#fff!important}:host .date-picker-container .date-picker .days-container .day.selected .bubble{background:#fff!important}:host .date-picker-container .date-picker .days-container .day.disabled{color:#aeb5c1}:host .date-picker-container .date-picker .days-container .day .bubble{width:4px;height:4px;border-radius:100%;bottom:3px;position:absolute;background:#178dfe}\n"], dependencies: [{ kind: "component", type: SymbolComponent, selector: "ap-symbol", inputs: ["color", "symbolId", "size"] }, { kind: "pipe", type: TitleCasePipe, name: "titlecase" }, { kind: "directive", type: NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "pipe", type: SlicePipe, name: "slice" }, { kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "pipe", type: DayDisabledPipe, name: "dayDisabled" }, { kind: "pipe", type: AsyncPipe, name: "async" }, { kind: "component", type: IconButtonComponent, selector: "ap-icon-button", inputs: ["ariaLabel", "name", "color", "disabled", "menuTrigger", "locked", "loading", "type"], outputs: ["onClick", "onFocus", "onBlur", "menuOpened", "menuClosed"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
207
207
  }
208
208
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.10", ngImport: i0, type: NeoDatepickerComponent, decorators: [{
209
209
  type: Component,
@@ -218,7 +218,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.10", ngImpo
218
218
  DayDisabledPipe,
219
219
  AsyncPipe,
220
220
  IconButtonComponent,
221
- ], standalone: true, template: "<div class=\"date-picker-container\">\n <div class=\"date-picker\">\n <div class=\"month-navigation\">\n <ap-icon-button\n name=\"neo-date-picker-previous-month\"\n [disabled]=\"!previousMonthAvailable\"\n (click)=\"onPreviousMonth()\">\n <ap-symbol\n symbolId=\"arrow-button-left\"\n size=\"micro\" />\n </ap-icon-button>\n <span>{{ months[currentMonth] | titlecase }} {{ currentYear }}</span>\n <ap-icon-button\n name=\"neo-date-picker-next-month\"\n (click)=\"onNextMonth()\">\n <ap-symbol\n symbolId=\"arrow-button-right\"\n size=\"micro\" />\n </ap-icon-button>\n </div>\n <div class=\"week-header\">\n <ng-container *ngFor=\"let day of weekDays\">\n <div class=\"day\">\n {{ day | slice : 0 : 2 | titlecase }}\n </div>\n </ng-container>\n </div>\n <div class=\"days-container\">\n <ng-container *ngFor=\"let day of currentMonthDates$ | async\">\n <ng-container\n *ngIf=\"dayTemplate\"\n [ngTemplateOutlet]=\"dayTemplate\"\n [ngTemplateOutletContext]=\"{ day: day }\" />\n <ng-container *ngIf=\"!dayTemplate\">\n <div\n class=\"day\"\n [class.disabled]=\"day | dayDisabled : TODAY_TIMESTAMP : minDateTimestamp : maxDateTimestamp\"\n [class.today]=\"day.timestamp === TODAY_TIMESTAMP\"\n [class.selected]=\"selectedDaysTimestamp.has(day.timestamp)\"\n (click)=\"onSelectDay(day)\">\n <span>\n {{ day.date }}\n </span>\n </div>\n </ng-container>\n </ng-container>\n </div>\n </div>\n</div>\n", styles: ["[color=facebook]{color:#0866ff}[bgcolor=facebook],[hcolor=facebook]:hover{background-color:#0866ff}[border=facebook]{border:1px solid #0866ff}[color=google]{color:#4e85e8}[bgcolor=google],[hcolor=google]:hover{background-color:#4e85e8}[border=google]{border:1px solid #4e85e8}[color=instagram]{color:#e1306c}[bgcolor=instagram],[hcolor=instagram]:hover{background-color:#e1306c}[border=instagram]{border:1px solid #e1306c}[color=instagrammagenta]{color:#c13584}[bgcolor=instagrammagenta],[hcolor=instagrammagenta]:hover{background-color:#c13584}[border=instagrammagenta]{border:1px solid #c13584}[color=instagramblue]{color:#5851db}[bgcolor=instagramblue],[hcolor=instagramblue]:hover{background-color:#5851db}[border=instagramblue]{border:1px solid #5851db}[color=instagrampurple]{color:#833ab4}[bgcolor=instagrampurple],[hcolor=instagrampurple]:hover{background-color:#833ab4}[border=instagrampurple]{border:1px solid #833ab4}[color=instagramorange]{color:#f56040}[bgcolor=instagramorange],[hcolor=instagramorange]:hover{background-color:#f56040}[border=instagramorange]{border:1px solid #f56040}[color=instagramyellow]{color:#ffdc80}[bgcolor=instagramyellow],[hcolor=instagramyellow]:hover{background-color:#ffdc80}[border=instagramyellow]{border:1px solid #ffdc80}[color=linkedin]{color:#2c67bc}[bgcolor=linkedin],[hcolor=linkedin]:hover{background-color:#2c67bc}[border=linkedin]{border:1px solid #2c67bc}[color=twitter]{color:#55acee}[bgcolor=twitter],[hcolor=twitter]:hover{background-color:#55acee}[border=twitter]{border:1px solid #55acee}[color=youtube]{color:red}[bgcolor=youtube],[hcolor=youtube]:hover{background-color:red}[border=youtube]{border:1px solid #ff0000}[color=blood-orange]{color:#ff4d00}[bgcolor=blood-orange],[hcolor=blood-orange]:hover{background-color:#ff4d00}[border=blood-orange]{border:1px solid #ff4d00}[color=pinkish-orange]{color:#ff7b49}[bgcolor=pinkish-orange],[hcolor=pinkish-orange]:hover{background-color:#ff7b49}[border=pinkish-orange]{border:1px solid #ff7b49}[color=charcoal-grey]{color:#2a2f34}[bgcolor=charcoal-grey],[hcolor=charcoal-grey]:hover{background-color:#2a2f34}[border=charcoal-grey]{border:1px solid #2a2f34}[color=azure]{color:#00aeef}[bgcolor=azure],[hcolor=azure]:hover{background-color:#00aeef}[border=azure]{border:1px solid #00aeef}[color=light-azure]{color:#eaf5fd}[bgcolor=light-azure],[hcolor=light-azure]:hover{background-color:#eaf5fd}[border=light-azure]{border:1px solid #eaf5fd}[color=blue-grey]{color:#8d98a9}[bgcolor=blue-grey],[hcolor=blue-grey]:hover{background-color:#8d98a9}[border=blue-grey]{border:1px solid #8d98a9}[color=silver]{color:#ced0da}[bgcolor=silver],[hcolor=silver]:hover{background-color:#ced0da}[border=silver]{border:1px solid #ced0da}[color=pale-grey]{color:#dfe3e9}[bgcolor=pale-grey],[hcolor=pale-grey]:hover{background-color:#dfe3e9}[border=pale-grey]{border:1px solid #dfe3e9}[color=grey-white]{color:#f5f7f8}[bgcolor=grey-white],[hcolor=grey-white]:hover{background-color:#f5f7f8}[border=grey-white]{border:1px solid #f5f7f8}[color=cool-grey]{color:#b4bbc6}[bgcolor=cool-grey],[hcolor=cool-grey]:hover{background-color:#b4bbc6}[border=cool-grey]{border:1px solid #b4bbc6}[color=black]{color:#344563}[bgcolor=black],[hcolor=black]:hover{background-color:#344563}[border=black]{border:1px solid #344563}[color=grey-blue]{color:#68768c}[bgcolor=grey-blue],[hcolor=grey-blue]:hover{background-color:#68768c}[border=grey-blue]{border:1px solid #68768c}[color=strawberry]{color:#f4282d}[bgcolor=strawberry],[hcolor=strawberry]:hover{background-color:#f4282d}[border=strawberry]{border:1px solid #f4282d}[color=light-strawberry]{color:#f8eded}[bgcolor=light-strawberry],[hcolor=light-strawberry]:hover{background-color:#f8eded}[border=light-strawberry]{border:1px solid #f8eded}[color=white]{color:#fff}[bgcolor=white],[hcolor=white]:hover{background-color:#fff}[border=white]{border:1px solid #ffffff}[color=cool-green]{color:#33c15d}[bgcolor=cool-green],[hcolor=cool-green]:hover{background-color:#33c15d}[border=cool-green]{border:1px solid #33c15d}[color=light-green]{color:#ebfaef}[bgcolor=light-green],[hcolor=light-green]:hover{background-color:#ebfaef}[border=light-green]{border:1px solid #ebfaef}[color=transparent]{color:transparent}[bgcolor=transparent],[hcolor=transparent]:hover{background-color:transparent}[border=transparent]{border:1px solid transparent}[color=c0]{color:#a566a5}[bgcolor=c0],[hcolor=c0]:hover{background-color:#a566a5}[border=c0]{border:1px solid #a566a5}[color=c1]{color:#c7ab82}[bgcolor=c1],[hcolor=c1]:hover{background-color:#c7ab82}[border=c1]{border:1px solid #c7ab82}[color=c2]{color:#f2713c}[bgcolor=c2],[hcolor=c2]:hover{background-color:#f2713c}[border=c2]{border:1px solid #f2713c}[color=c3]{color:#ffd006}[bgcolor=c3],[hcolor=c3]:hover{background-color:#ffd006}[border=c3]{border:1px solid #ffd006}[color=c4]{color:#94c5aa}[bgcolor=c4],[hcolor=c4]:hover{background-color:#94c5aa}[border=c4]{border:1px solid #94c5aa}[color=c5]{color:#2a9d8f}[bgcolor=c5],[hcolor=c5]:hover{background-color:#2a9d8f}[border=c5]{border:1px solid #2a9d8f}[color=c6]{color:#78acd8}[bgcolor=c6],[hcolor=c6]:hover{background-color:#78acd8}[border=c6]{border:1px solid #78acd8}[color=c7]{color:#525a9e}[bgcolor=c7],[hcolor=c7]:hover{background-color:#525a9e}[border=c7]{border:1px solid #525a9e}[color=c8]{color:#6a2459}[bgcolor=c8],[hcolor=c8]:hover{background-color:#6a2459}[border=c8]{border:1px solid #6a2459}[color=c9]{color:#74729e}[bgcolor=c9],[hcolor=c9]:hover{background-color:#74729e}[border=c9]{border:1px solid #74729e}:host .date-picker-container{display:flex;justify-content:center;align-items:center}:host .date-picker-container .date-picker{width:248px}:host .date-picker-container .date-picker .month-navigation{display:flex;justify-content:space-between;margin-bottom:24px}:host .date-picker-container .date-picker .month-navigation button:disabled{background:transparent}:host .date-picker-container .date-picker .month-navigation button:disabled ap-symbol{color:#d6dae0!important}:host .date-picker-container .date-picker .month-navigation button:disabled:hover{background:transparent!important}:host .date-picker-container .date-picker .month-navigation .left ap-symbol{margin-right:2px}:host .date-picker-container .date-picker .month-navigation .right ap-symbol{margin-left:2px}:host .date-picker-container .date-picker .month-navigation ap-symbol{display:grid;place-content:center}:host .date-picker-container .date-picker .month-navigation button:hover{background:#f5f5f7}:host .date-picker-container .date-picker .month-navigation span{font-style:normal;font-weight:700;font-size:16px;line-height:20px;text-align:center;color:#344563;align-items:center;display:flex}:host .date-picker-container .date-picker .week-header{display:flex;justify-content:space-between;margin-bottom:8px}:host .date-picker-container .date-picker .week-header .day{width:32px;text-align:center;font-weight:700;font-size:12px;line-height:15px;color:#aeb5c1}:host .date-picker-container .date-picker .days-container{display:grid;grid-template-columns:repeat(7,minmax(0,1fr));gap:2px}:host .date-picker-container .date-picker .days-container .day{font-style:normal;font-weight:400;font-size:14px;line-height:128.7%;text-align:center;width:32px;height:32px;display:flex;justify-content:center;align-items:center;border-radius:100%;position:relative}:host .date-picker-container .date-picker .days-container .day:hover{cursor:pointer}:host .date-picker-container .date-picker .days-container .day:hover:not(.disabled):not(.selected){background:#f5f5f7}:host .date-picker-container .date-picker .days-container .day.today{border:1px #178dfe solid}:host .date-picker-container .date-picker .days-container .day.selected{background:#178dfe;color:#fff!important}:host .date-picker-container .date-picker .days-container .day.selected .bubble{background:white!important}:host .date-picker-container .date-picker .days-container .day.disabled{color:#aeb5c1}:host .date-picker-container .date-picker .days-container .day .bubble{width:4px;height:4px;border-radius:100%;bottom:3px;position:absolute;background:#178dfe}\n"] }]
221
+ ], standalone: true, template: "<div class=\"date-picker-container\">\n <div class=\"date-picker\">\n <div class=\"month-navigation\">\n <ap-icon-button\n name=\"neo-date-picker-previous-month\"\n [disabled]=\"!previousMonthAvailable\"\n (click)=\"onPreviousMonth()\">\n <ap-symbol\n symbolId=\"arrow-button-left\"\n size=\"micro\" />\n </ap-icon-button>\n <span>{{ months[currentMonth] | titlecase }} {{ currentYear }}</span>\n <ap-icon-button\n name=\"neo-date-picker-next-month\"\n (click)=\"onNextMonth()\">\n <ap-symbol\n symbolId=\"arrow-button-right\"\n size=\"micro\" />\n </ap-icon-button>\n </div>\n <div class=\"week-header\">\n <ng-container *ngFor=\"let day of weekDays\">\n <div class=\"day\">\n {{ day | slice : 0 : 2 | titlecase }}\n </div>\n </ng-container>\n </div>\n <div class=\"days-container\">\n <ng-container *ngFor=\"let day of currentMonthDates$ | async\">\n <ng-container\n *ngIf=\"dayTemplate\"\n [ngTemplateOutlet]=\"dayTemplate\"\n [ngTemplateOutletContext]=\"{ day: day }\" />\n <ng-container *ngIf=\"!dayTemplate\">\n <div\n class=\"day\"\n [class.disabled]=\"day | dayDisabled : TODAY_TIMESTAMP : minDateTimestamp : maxDateTimestamp\"\n [class.today]=\"day.timestamp === TODAY_TIMESTAMP\"\n [class.selected]=\"selectedDaysTimestamp.has(day.timestamp)\"\n (click)=\"onSelectDay(day)\">\n <span>\n {{ day.date }}\n </span>\n </div>\n </ng-container>\n </ng-container>\n </div>\n </div>\n</div>\n", styles: ["[color=facebook]{color:#0866ff}[bgcolor=facebook],[hcolor=facebook]:hover{background-color:#0866ff}[border=facebook]{border:1px solid #0866ff}[color=google]{color:#4e85e8}[bgcolor=google],[hcolor=google]:hover{background-color:#4e85e8}[border=google]{border:1px solid #4e85e8}[color=instagram]{color:#e1306c}[bgcolor=instagram],[hcolor=instagram]:hover{background-color:#e1306c}[border=instagram]{border:1px solid #e1306c}[color=instagrammagenta]{color:#c13584}[bgcolor=instagrammagenta],[hcolor=instagrammagenta]:hover{background-color:#c13584}[border=instagrammagenta]{border:1px solid #c13584}[color=instagramblue]{color:#5851db}[bgcolor=instagramblue],[hcolor=instagramblue]:hover{background-color:#5851db}[border=instagramblue]{border:1px solid #5851db}[color=instagrampurple]{color:#833ab4}[bgcolor=instagrampurple],[hcolor=instagrampurple]:hover{background-color:#833ab4}[border=instagrampurple]{border:1px solid #833ab4}[color=instagramorange]{color:#f56040}[bgcolor=instagramorange],[hcolor=instagramorange]:hover{background-color:#f56040}[border=instagramorange]{border:1px solid #f56040}[color=instagramyellow]{color:#ffdc80}[bgcolor=instagramyellow],[hcolor=instagramyellow]:hover{background-color:#ffdc80}[border=instagramyellow]{border:1px solid #ffdc80}[color=linkedin]{color:#2c67bc}[bgcolor=linkedin],[hcolor=linkedin]:hover{background-color:#2c67bc}[border=linkedin]{border:1px solid #2c67bc}[color=twitter]{color:#55acee}[bgcolor=twitter],[hcolor=twitter]:hover{background-color:#55acee}[border=twitter]{border:1px solid #55acee}[color=youtube]{color:red}[bgcolor=youtube],[hcolor=youtube]:hover{background-color:red}[border=youtube]{border:1px solid #ff0000}[color=blood-orange]{color:#ff4d00}[bgcolor=blood-orange],[hcolor=blood-orange]:hover{background-color:#ff4d00}[border=blood-orange]{border:1px solid #ff4d00}[color=pinkish-orange]{color:#ff7b49}[bgcolor=pinkish-orange],[hcolor=pinkish-orange]:hover{background-color:#ff7b49}[border=pinkish-orange]{border:1px solid #ff7b49}[color=charcoal-grey]{color:#2a2f34}[bgcolor=charcoal-grey],[hcolor=charcoal-grey]:hover{background-color:#2a2f34}[border=charcoal-grey]{border:1px solid #2a2f34}[color=azure]{color:#00aeef}[bgcolor=azure],[hcolor=azure]:hover{background-color:#00aeef}[border=azure]{border:1px solid #00aeef}[color=light-azure]{color:#eaf5fd}[bgcolor=light-azure],[hcolor=light-azure]:hover{background-color:#eaf5fd}[border=light-azure]{border:1px solid #eaf5fd}[color=blue-grey]{color:#8d98a9}[bgcolor=blue-grey],[hcolor=blue-grey]:hover{background-color:#8d98a9}[border=blue-grey]{border:1px solid #8d98a9}[color=silver]{color:#ced0da}[bgcolor=silver],[hcolor=silver]:hover{background-color:#ced0da}[border=silver]{border:1px solid #ced0da}[color=pale-grey]{color:#dfe3e9}[bgcolor=pale-grey],[hcolor=pale-grey]:hover{background-color:#dfe3e9}[border=pale-grey]{border:1px solid #dfe3e9}[color=grey-white]{color:#f5f7f8}[bgcolor=grey-white],[hcolor=grey-white]:hover{background-color:#f5f7f8}[border=grey-white]{border:1px solid #f5f7f8}[color=cool-grey]{color:#b4bbc6}[bgcolor=cool-grey],[hcolor=cool-grey]:hover{background-color:#b4bbc6}[border=cool-grey]{border:1px solid #b4bbc6}[color=black]{color:#344563}[bgcolor=black],[hcolor=black]:hover{background-color:#344563}[border=black]{border:1px solid #344563}[color=grey-blue]{color:#68768c}[bgcolor=grey-blue],[hcolor=grey-blue]:hover{background-color:#68768c}[border=grey-blue]{border:1px solid #68768c}[color=strawberry]{color:#f4282d}[bgcolor=strawberry],[hcolor=strawberry]:hover{background-color:#f4282d}[border=strawberry]{border:1px solid #f4282d}[color=light-strawberry]{color:#f8eded}[bgcolor=light-strawberry],[hcolor=light-strawberry]:hover{background-color:#f8eded}[border=light-strawberry]{border:1px solid #f8eded}[color=white]{color:#fff}[bgcolor=white],[hcolor=white]:hover{background-color:#fff}[border=white]{border:1px solid #ffffff}[color=cool-green]{color:#33c15d}[bgcolor=cool-green],[hcolor=cool-green]:hover{background-color:#33c15d}[border=cool-green]{border:1px solid #33c15d}[color=light-green]{color:#ebfaef}[bgcolor=light-green],[hcolor=light-green]:hover{background-color:#ebfaef}[border=light-green]{border:1px solid #ebfaef}[color=transparent]{color:transparent}[bgcolor=transparent],[hcolor=transparent]:hover{background-color:transparent}[border=transparent]{border:1px solid transparent}[color=c0]{color:#a566a5}[bgcolor=c0],[hcolor=c0]:hover{background-color:#a566a5}[border=c0]{border:1px solid #a566a5}[color=c1]{color:#c7ab82}[bgcolor=c1],[hcolor=c1]:hover{background-color:#c7ab82}[border=c1]{border:1px solid #c7ab82}[color=c2]{color:#f2713c}[bgcolor=c2],[hcolor=c2]:hover{background-color:#f2713c}[border=c2]{border:1px solid #f2713c}[color=c3]{color:#ffd006}[bgcolor=c3],[hcolor=c3]:hover{background-color:#ffd006}[border=c3]{border:1px solid #ffd006}[color=c4]{color:#94c5aa}[bgcolor=c4],[hcolor=c4]:hover{background-color:#94c5aa}[border=c4]{border:1px solid #94c5aa}[color=c5]{color:#2a9d8f}[bgcolor=c5],[hcolor=c5]:hover{background-color:#2a9d8f}[border=c5]{border:1px solid #2a9d8f}[color=c6]{color:#78acd8}[bgcolor=c6],[hcolor=c6]:hover{background-color:#78acd8}[border=c6]{border:1px solid #78acd8}[color=c7]{color:#525a9e}[bgcolor=c7],[hcolor=c7]:hover{background-color:#525a9e}[border=c7]{border:1px solid #525a9e}[color=c8]{color:#6a2459}[bgcolor=c8],[hcolor=c8]:hover{background-color:#6a2459}[border=c8]{border:1px solid #6a2459}[color=c9]{color:#74729e}[bgcolor=c9],[hcolor=c9]:hover{background-color:#74729e}[border=c9]{border:1px solid #74729e}:host .date-picker-container{display:flex;justify-content:center;align-items:center}:host .date-picker-container .date-picker{width:248px}:host .date-picker-container .date-picker .month-navigation{display:flex;justify-content:space-between;margin-bottom:24px}:host .date-picker-container .date-picker .month-navigation button:disabled{background:transparent}:host .date-picker-container .date-picker .month-navigation button:disabled ap-symbol{color:#d6dae0!important}:host .date-picker-container .date-picker .month-navigation button:disabled:hover{background:transparent!important}:host .date-picker-container .date-picker .month-navigation .left ap-symbol{margin-right:2px}:host .date-picker-container .date-picker .month-navigation .right ap-symbol{margin-left:2px}:host .date-picker-container .date-picker .month-navigation ap-symbol{display:grid;place-content:center}:host .date-picker-container .date-picker .month-navigation button:hover{background:#f5f5f7}:host .date-picker-container .date-picker .month-navigation span{font-style:normal;font-weight:700;font-size:16px;line-height:20px;text-align:center;color:#344563;align-items:center;display:flex}:host .date-picker-container .date-picker .week-header{display:flex;justify-content:space-between;margin-bottom:8px}:host .date-picker-container .date-picker .week-header .day{width:32px;text-align:center;font-weight:700;font-size:12px;line-height:15px;color:#aeb5c1}:host .date-picker-container .date-picker .days-container{display:grid;grid-template-columns:repeat(7,minmax(0,1fr));gap:2px}:host .date-picker-container .date-picker .days-container .day{font-style:normal;font-weight:400;font-size:14px;line-height:128.7%;text-align:center;width:32px;height:32px;display:flex;justify-content:center;align-items:center;border-radius:100%;position:relative}:host .date-picker-container .date-picker .days-container .day:hover{cursor:pointer}:host .date-picker-container .date-picker .days-container .day:hover:not(.disabled):not(.selected){background:#f5f5f7}:host .date-picker-container .date-picker .days-container .day.today{border:1px #178dfe solid}:host .date-picker-container .date-picker .days-container .day.selected{background:#178dfe;color:#fff!important}:host .date-picker-container .date-picker .days-container .day.selected .bubble{background:#fff!important}:host .date-picker-container .date-picker .days-container .day.disabled{color:#aeb5c1}:host .date-picker-container .date-picker .days-container .day .bubble{width:4px;height:4px;border-radius:100%;bottom:3px;position:absolute;background:#178dfe}\n"] }]
222
222
  }], ctorParameters: function () { return [{ type: i1.SymbolRegistry }]; }, propDecorators: { dayTemplate: [{
223
223
  type: Input
224
224
  }], locale: [{
@@ -240,4 +240,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.10", ngImpo
240
240
  }], previousMonth: [{
241
241
  type: Output
242
242
  }] } });
243
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmVvLWRhdGVwaWNrZXIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vbGlicy91aS1jb21wb25lbnRzL25lby1kYXRlcGlja2VyL3NyYy9uZW8tZGF0ZXBpY2tlci5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi9saWJzL3VpLWNvbXBvbmVudHMvbmVvLWRhdGVwaWNrZXIvc3JjL25lby1kYXRlcGlja2VyLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxrQ0FBa0MsQ0FBQztBQUNuRSxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSx1Q0FBdUMsQ0FBQztBQUM1RSxPQUFPLEVBQUUsZUFBZSxFQUFFLGlCQUFpQixFQUFFLGtCQUFrQixFQUFrQixNQUFNLHVCQUF1QixDQUFDO0FBQy9HLE9BQU8sRUFBRSxTQUFTLEVBQUUsT0FBTyxFQUFFLElBQUksRUFBRSxnQkFBZ0IsRUFBRSxTQUFTLEVBQUUsYUFBYSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDdkcsT0FBTyxFQUFFLHVCQUF1QixFQUFFLFNBQVMsRUFBRSxZQUFZLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBVSxNQUFNLEVBQWUsTUFBTSxlQUFlLENBQUM7QUFDN0gsT0FBTyxLQUFLLE1BQU0sT0FBTyxDQUFDO0FBQzFCLE9BQU8saUJBQWlCLENBQUM7QUFDekIsT0FBTyxpQkFBaUIsQ0FBQztBQUN6QixPQUFPLGlCQUFpQixDQUFDO0FBQ3pCLE9BQU8saUJBQWlCLENBQUM7QUFDekIsT0FBTyxpQkFBaUIsQ0FBQztBQUN6QixPQUFPLFVBQVUsTUFBTSx5QkFBeUIsQ0FBQztBQUNqRCxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDMUQsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDL0MsT0FBTyxFQUFFLG9CQUFv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K0NBQ2YsU0FBUyw4Q0FDVCxtQkFBbUI7OzRGQUlkLHNCQUFzQjtrQkFwQmxDLFNBQVM7K0JBQ0ksb0JBQW9CLG1CQUdiLHVCQUF1QixDQUFDLE1BQU0sYUFDcEMsQ0FBQyxlQUFlLENBQUMsV0FDbkI7d0JBQ0wsZUFBZTt3QkFDZixhQUFhO3dCQUNiLGVBQWU7d0JBQ2YsT0FBTzt3QkFDUCxJQUFJO3dCQUNKLFNBQVM7d0JBQ1QsZ0JBQWdCO3dCQUNoQixlQUFlO3dCQUNmLFNBQVM7d0JBQ1QsbUJBQW1CO3FCQUN0QixjQUNXLElBQUk7cUdBTVAsV0FBVztzQkFBbkIsS0FBSztnQkFDRyxNQUFNO3NCQUFkLEtBQUs7Z0JBSU8sT0FBTztzQkFBbkIsS0FBSztnQkFTTyxPQUFPO3NCQUFuQixLQUFLO2dCQVdPLElBQUk7c0JBQWhCLEtBQUs7Z0JBWU8sYUFBYTtzQkFBekIsS0FBSztnQkFpQkcsUUFBUTtzQkFBaEIsS0FBSztnQkFFSSxhQUFhO3NCQUF0QixNQUFNO2dCQUNHLFNBQVM7c0JBQWxCLE1BQU07Z0JBQ0csYUFBYTtzQkFBdEIsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEJ1dHRvbkNvbXBvbmVudCB9IGZyb20gJ0BhZ29yYXB1bHNlL3VpLWNvbXBvbmVudHMvYnV0dG9uJztcbmltcG9ydCB7IEljb25CdXR0b25Db21wb25lbnQgfSBmcm9tICdAYWdvcmFwdWxzZS91aS1jb21wb25lbnRzL2ljb24tYnV0dG9uJztcbmltcG9ydCB7IFN5bWJvbENvbXBvbmVudCwgYXBBcnJvd0J1dHRvbkxlZnQsIGFwQXJyb3dCdXR0b25SaWdodCwgU3ltYm9sUmVnaXN0cnkgfSBmcm9tICdAYWdvcmFwdWxzZS91aS1zeW1ib2wnO1xuaW1wb3J0IHsgQXN5bmNQaXBlLCBOZ0Zvck9mLCBOZ0lmLCBOZ1RlbXBsYXRlT3V0bGV0LCBTbGljZVBpcGUsIFRpdGxlQ2FzZVBpcGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksIENvbXBvbmVudCwgRXZlbnRFbWl0dGVyLCBpbmplY3QsIElucHV0LCBPbkluaXQsIE91dHB1dCwgVGVtcGxhdGVSZWYgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCBkYXlqcyBmcm9tICdkYXlqcyc7XG5pbXBvcnQgJ2RheWpzL2xvY2FsZS9kZSc7XG5pbXBvcnQgJ2RheWpzL2xvY2FsZS9lbic7XG5pbXBvcnQgJ2RheWpzL2xvY2FsZS9lcyc7XG5pbXBvcnQgJ2RheWpzL2xvY2FsZS9mcic7XG5pbXBvcnQgJ2RheWpzL2xvY2FsZS9wdCc7XG5pbXBvcnQgbG9jYWxlRGF0YSBmcm9tICdkYXlqcy9wbHVnaW4vbG9jYWxlRGF0YSc7XG5pbXBvcnQgeyBpbmplY3REZXN0cm95IH0gZnJvbSAnbmd4dGVuc2lvbi9pbmplY3QtZGVzdHJveSc7XG5pbXBvcnQgeyBCZWhhdmlvclN1YmplY3QsIGZpbHRlciB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgZGlzdGluY3RVbnRpbENoYW5nZWQsIHRha2VVbnRpbCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7IERheURldGFpbCB9IGZyb20gJy4vZGF5LWRldGFpbC5tb2RlbCc7XG5pbXBvcnQgeyBEYXlEaXNhYmxlZFBpcGUgfSBmcm9tICcuL2RheS1kaXNhYmxlZC5waXBlJztcblxuZXhwb3J0IHR5cGUgTmVvRGF0ZVBpY2tlck1vZGUgPSAnc2luZ2xlJyB8ICdtdWx0aXBsZSc7XG5leHBvcnQgdHlwZSBOZW9EYXRlUGlja2VyU3RhcnRzT24gPSAnbW9uZGF5JyB8ICdzdW5kYXknO1xuZXhwb3J0IHR5cGUgTmVvRGF0ZVBpY2tlckxvY2FsZSA9ICdlbicgfCAnZXMnIHwgJ2ZyJyB8ICdwdCcgfCAnZGUnO1xuXG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvcjogJ2FwLW5lby1kYXRlLXBpY2tlcicsXG4gICAgc3R5bGVVcmxzOiBbJ25lby1kYXRlcGlja2VyLmNvbXBvbmVudC5zY3NzJ10sXG4gICAgdGVtcGxhdGVVcmw6ICduZW8tZGF0ZXBpY2tlci5jb21wb25lbnQuaHRtbCcsXG4gICAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gICAgcHJvdmlkZXJzOiBbRGF5RGlzYWJsZWRQaXBlXSxcbiAgICBpbXBvcnRzOiBbXG4gICAgICAgIFN5bWJvbENvbXBvbmVudCxcbiAgICAgICAgVGl0bGVDYXNlUGlwZSxcbiAgICAgICAgQnV0dG9uQ29tcG9uZW50LFxuICAgICAgICBOZ0Zvck9mLFxuICAgICAgICBOZ0lmLFxuICAgICAgICBTbGljZVBpcGUsXG4gICAgICAgIE5nVGVtcGxhdGVPdXRsZXQsXG4gICAgICAgIERheURpc2FibGVkUGlwZSxcbiAgICAgICAgQXN5bmNQaXBlLFxuICAgICAgICBJY29uQnV0dG9uQ29tcG9uZW50LFxuICAgIF0sXG4gICAgc3RhbmRhbG9uZTogdHJ1ZSxcbn0pXG5leHBvcnQgY2xhc3MgTmVvRGF0ZXBpY2tlckNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XG4gICAgcmVhZG9ubHkgT05FX0RBWTogbnVtYmVyID0gNjAgKiA2MCAqIDI0ICogMTAwMDtcbiAgICByZWFkb25seSBUT0RBWV9USU1FU1RBTVA6IG51bWJlciA9IERhdGUubm93KCkgLSAoRGF0ZS5ub3coKSAlIHRoaXMuT05FX0RBWSkgKyBuZXcgRGF0ZSgpLmdldFRpbWV6b25lT2Zmc2V0KCkgKiAxMDAwICogNjA7XG5cbiAgICBASW5wdXQoKSBkYXlUZW1wbGF0ZTogVGVtcGxhdGVSZWY8eyBkYXk6IERheURldGFpbCB9PiB8IHVuZGVmaW5lZCA9IHVuZGVmaW5lZDtcbiAgICBASW5wdXQoKSBsb2NhbGU6IE5lb0RhdGVQaWNrZXJMb2NhbGUgPSAnZW4nO1xuXG4gICAgcHJpdmF0ZSBfbWF4RGF0ZTogZGF5anMuRGF5anMgfCB1bmRlZmluZWQ7XG5cbiAgICBASW5wdXQoKSBzZXQgbWF4RGF0ZShtYXhEYXRlOiBkYXlqcy5EYXlqcykge1xuICAgICAgICB0aGlzLl9tYXhEYXRlID0gbWF4RGF0ZTtcbiAgICAgICAgdGhpcy5tYXhEYXRlVGltZXN0YW1wID0gbWF4RGF0ZS50b0RhdGUoKS5nZXRUaW1lKCk7XG4gICAgfVxuICAgIGdldCBtYXhEYXRlKCk6IGRheWpzLkRheWpzIHwgdW5kZWZpbmVkIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX21heERhdGU7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBfbWluRGF0ZTogZGF5anMuRGF5anMgfCB1bmRlZmluZWQ7XG4gICAgQElucHV0KCkgc2V0IG1pbkRhdGUobWluRGF0ZTogZGF5anMuRGF5anMpIHtcbiAgICAgICAgdGhpcy5fbWluRGF0ZSA9IG1pbkRhdGU7XG4gICAgICAgIHRoaXMubWluRGF0ZVRpbWVzdGFtcCA9IG1pbkRhdGUudG9EYXRlKCkuZ2V0VGltZSgpO1xuICAgIH1cbiAgICBnZXQgbWluRGF0ZSgpOiBkYXlqcy5EYXlqcyB8IHVuZGVmaW5lZCB7XG4gICAgICAgIHJldHVybiB0aGlzLl9taW5EYXRlO1xuICAgIH1cblxuICAgIHByZXZpb3VzTW9udGhBdmFpbGFibGU6IGJvb2xlYW4gPSB0cnVlO1xuXG4gICAgcHJpdmF0ZSBfbW9kZTogTmVvRGF0ZVBpY2tlck1vZGUgPSAnc2luZ2xlJztcbiAgICBASW5wdXQoKSBzZXQgbW9kZShtb2RlOiBOZW9EYXRlUGlja2VyTW9kZSkge1xuICAgICAgICB0aGlzLl9tb2RlID0gbW9kZTtcbiAgICAgICAgaWYgKHRoaXMuX21vZGUgPT09ICdzaW5nbGUnKSB7XG4gICAgICAgICAgICB0aGlzLl9zZWxlY3RlZERhdGVzID0gdGhpcy5fc2VsZWN0ZWREYXRlcy5zbGljZSgwLCAxKTtcbiAgICAgICAgICAgIHRoaXMuc2VsZWN0ZWREYXlzVGltZXN0YW1wID0gbmV3IFNldChBcnJheS5mcm9tKHRoaXMuc2VsZWN0ZWREYXlzVGltZXN0YW1wKS5zbGljZSgwLCAxKSk7XG4gICAgICAgIH1cbiAgICB9XG4gICAgZ2V0IG1vZGUoKTogTmVvRGF0ZVBpY2tlck1vZGUge1xuICAgICAgICByZXR1cm4gdGhpcy5fbW9kZTtcbiAgICB9XG5cbiAgICBwcml2YXRlIF9zZWxlY3RlZERhdGVzOiBkYXlqcy5EYXlqc1tdID0gW107XG4gICAgQElucHV0KCkgc2V0IHNlbGVjdGVkRGF0ZXMoZGF0ZXM6IGRheWpzLkRheWpzW10pIHtcbiAgICAgICAgaWYgKHRoaXMuX21vZGUgPT09ICdzaW5nbGUnKSB7XG4gICAgICAgICAgICBkYXRlcyA9IGRhdGVzLnNsaWNlKDAsIDEpO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuc2VsZWN0ZWREYXlzVGltZXN0YW1wID0gbmV3IFNldCgpO1xuICAgICAgICB0aGlzLl9zZWxlY3RlZERhdGVzID0gZGF0ZXM7XG4gICAgICAgIGlmICh0aGlzLl9zZWxlY3RlZERhdGVzLmxlbmd0aCkge1xuICAgICAgICAgICAgdGhpcy5fc2VsZWN0ZWREYXRlcy5mb3JFYWNoKGRheSA9PiB7XG4gICAgICAgICAgICAgICAgdGhpcy5zZWxlY3RlZERheXNUaW1lc3RhbXAuYWRkKGRheS50b0RhdGUoKS5nZXRUaW1lKCkpO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBnZXQgc2VsZWN0ZWREYXRlcygpOiBkYXlqcy5EYXlqc1tdIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX3NlbGVjdGVkRGF0ZXM7XG4gICAgfVxuXG4gICAgQElucHV0KCkgc3RhcnRzT246IE5lb0RhdGVQaWNrZXJTdGFydHNPbiA9ICdtb25kYXknO1xuXG4gICAgQE91dHB1dCgpIGRhdGVzU2VsZWN0ZWQ6IEV2ZW50RW1pdHRlcjxkYXlqcy5EYXlqc1tdPiA9IG5ldyBFdmVudEVtaXR0ZXI8ZGF5anMuRGF5anNbXT4oKTtcbiAgICBAT3V0cHV0KCkgbmV4dE1vbnRoOiBFdmVudEVtaXR0ZXI8dm9pZD4gPSBuZXcgRXZlbnRFbWl0dGVyPHZvaWQ+KCk7XG4gICAgQE91dHB1dCgpIHByZXZpb3VzTW9udGg6IEV2ZW50RW1pdHRlcjx2b2lkPiA9IG5ldyBFdmVudEVtaXR0ZXI8dm9pZD4oKTtcblxuICAgIGN1cnJlbnRZZWFyITogbnVtYmVyO1xuICAgIGN1cnJlbnRNb250aCE6IG51bWJlcjtcbiAgICBjdXJyZW50TW9udGhEYXRlcyQ6IEJlaGF2aW9yU3ViamVjdDxEYXlEZXRhaWxbXT4gPSBuZXcgQmVoYXZpb3JTdWJqZWN0PERheURldGFpbFtdPihbXSk7XG4gICAgbWluRGF0ZVRpbWVzdGFtcDogbnVtYmVyIHwgdW5kZWZpbmVkID0gdW5kZWZpbmVkO1xuICAgIG1heERhdGVUaW1lc3RhbXA6IG51bWJlciB8IHVuZGVmaW5lZCA9IHVuZGVmaW5lZDtcbiAgICBtb250aHM6IHN0cmluZ1tdID0gW107XG4gICAgc2VsZWN0ZWREYXlzVGltZXN0YW1wOiBTZXQ8bnVtYmVyPiA9IG5ldyBTZXQoKTtcbiAgICB3ZWVrRGF5czogc3RyaW5nW10gPSBbXTtcblxuICAgIGRheURpc2FibGVkUGlwZTogRGF5RGlzYWJsZWRQaXBlID0gaW5qZWN0KERheURpc2FibGVkUGlwZSk7XG5cbiAgICBwcml2YXRlIGRlc3Ryb3kkID0gaW5qZWN0RGVzdHJveSgpO1xuXG4gICAgY29uc3RydWN0b3IocHVibGljIHN5bWJvbFJlZ2lzdHJ5OiBTeW1ib2xSZWdpc3RyeSkge1xuICAgICAgICB0aGlzLnN5bWJvbFJlZ2lzdHJ5LnJlZ2lzdGVyU3ltYm9scyhbYXBBcnJvd0J1dHRvbkxlZnQsIGFwQXJyb3dCdXR0b25SaWdodF0pO1xuICAgIH1cblxuICAgIG5nT25Jbml0KCk6IHZvaWQge1xuICAgICAgICBkYXlqcy5leHRlbmQobG9jYWxlRGF0YSk7XG4gICAgICAgIGNvbnN0IGRhdGUgPSBuZXcgRGF0ZSgpO1xuICAgICAgICB0aGlzLmN1cnJlbnRZZWFyID0gZGF0ZS5nZXRGdWxsWWVhcigpO1xuICAgICAgICB0aGlzLmN1cnJlbnRNb250aCA9IGRhdGUuZ2V0TW9udGgoKTtcbiAgICAgICAgaWYgKHRoaXMubG9jYWxlKSB7XG4gICAgICAgICAgICBkYXlqcy5sb2NhbGUodGhpcy5sb2NhbGUpO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMubW9udGhzID0gZGF5anMubW9udGhzKCk7XG4gICAgICAgIHRoaXMud2Vla0RheXMgPSBbLi4uZGF5anMud2Vla2RheXMoKV07XG5cbiAgICAgICAgaWYgKHRoaXMuc3RhcnRzT24gPT09ICdtb25kYXknKSB7XG4gICAgICAgICAgICBjb25zdCBzdW5kYXkgPSB0aGlzLndlZWtEYXlzLnNsaWNlKDAsIDEpO1xuICAgICAgICAgICAgdGhpcy53ZWVrRGF5cy5zcGxpY2UoMCwgMSk7XG4gICAgICAgICAgICB0aGlzLndlZWtEYXlzID0gdGhpcy53ZWVrRGF5cy5jb25jYXQoc3VuZGF5KTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLmN1cnJlbnRNb250aERhdGVzJC5uZXh0KHRoaXMuZ2V0TW9udGhEZXRhaWxzKHRoaXMuY3VycmVudFllYXIsIHRoaXMuY3VycmVudE1vbnRoKSk7XG4gICAgICAgIHRoaXMuY3VycmVudE1vbnRoRGF0ZXMkXG4gICAgICAgICAgICAucGlwZShcbiAgICAgICAgICAgICAgICBkaXN0aW5jdFVudGlsQ2hhbmdlZCgpLFxuICAgICAgICAgICAgICAgIGZpbHRlcigoKSA9PiAhIXRoaXMubWluRGF0ZVRpbWVzdGFtcCksXG4gICAgICAgICAgICAgICAgdGFrZVVudGlsKHRoaXMuZGVzdHJveSQpXG4gICAgICAgICAgICApXG4gICAgICAgICAgICAuc3Vic2NyaWJlKGN1cnJlbnRNb250aERhdGVzID0+IHtcbiAgICAgICAgICAgICAgICBjb25zdCBtaW5EYXRlSW5QcmV2aW91c01vbnRoID0gdGhpcy5taW5EYXRlVGltZXN0YW1wXG4gICAgICAgICAgICAgICAgICAgID8gbmV3IERhdGUodGhpcy5taW5EYXRlVGltZXN0YW1wKS5nZXRNb250aCgpIDwgdGhpcy5jdXJyZW50TW9udGhcbiAgICAgICAgICAgICAgICAgICAgOiB1bmRlZmluZWQ7XG4gICAgICAgICAgICAgICAgdGhpcy5wcmV2aW91c01vbnRoQXZhaWxhYmxlID1cbiAgICAgICAgICAgICAgICAgICAgIWN1cnJlbnRNb250aERhdGVzLnNvbWUoZGF5RGV0YWlsID0+IGRheURldGFpbC50aW1lc3RhbXAgPT09IHRoaXMubWluRGF0ZVRpbWVzdGFtcCkgfHwgISFtaW5EYXRlSW5QcmV2aW91c01vbnRoO1xuICAgICAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgZ2V0RGF5RGV0YWlscyhpbmRleDogbnVtYmVyLCBmaXJzdERheTogbnVtYmVyLCBtb250aDogbnVtYmVyLCBudW1iZXJPZkRheXM6IG51bWJlciwgeWVhcjogbnVtYmVyKTogRGF5RGV0YWlsIHtcbiAgICAgICAgY29uc3QgZGF0ZSA9IGluZGV4IC0gZmlyc3REYXk7XG4gICAgICAgIGNvbnN0IGRheSA9IGluZGV4ICUgNztcbiAgICAgICAgbGV0IHByZXZNb250aCA9IG1vbnRoIC0gMTtcbiAgICAgICAgbGV0IHByZXZZZWFyID0geWVhcjtcbiAgICAgICAgaWYgKHByZXZNb250aCA8IDApIHtcbiAgICAgICAgICAgIHByZXZNb250aCA9IDExO1xuICAgICAgICAgICAgcHJldlllYXItLTtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBwcmV2TW9udGhOdW1iZXJPZkRheXMgPSB0aGlzLmdldE51bWJlck9mRGF5cyhwcmV2WWVhciwgcHJldk1vbnRoKTtcbiAgICAgICAgY29uc3QgX2RhdGUgPSAoZGF0ZSA8IDAgPyBwcmV2TW9udGhOdW1iZXJPZkRheXMgKyBkYXRlIDogZGF0ZSAlIG51bWJlck9mRGF5cykgKyAxO1xuICAgICAgICBjb25zdCBfbW9udGggPSBkYXRlIDwgMCA/IC0xIDogZGF0ZSA+PSBudW1iZXJPZkRheXMgPyAxIDogMDtcbiAgICAgICAgY29uc3QgbmV3RGF0ZSA9IG5ldyBEYXRlKHllYXIsIF9tb250aCArIG1vbnRoLCBfZGF0ZSk7XG4gICAgICAgIGNvbnN0IHRpbWVzdGFtcCA9IG5ld0RhdGUuZ2V0VGltZSgpO1xuICAgICAgICBjb25zdCBkYXlTdHJpbmcgPSB0aGlzLndlZWtEYXlzW2RheV07XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBkYXRlOiBfZGF0ZSxcbiAgICAgICAgICAgIGRheSxcbiAgICAgICAgICAgIG1vbnRoOiBfbW9udGgsXG4gICAgICAgICAgICB0aW1lc3RhbXAsXG4gICAgICAgICAgICBkYXlTdHJpbmcsXG4gICAgICAgICAgICBkYXlqczogZGF5anMobmV3RGF0ZSksXG4gICAgICAgIH07XG4gICAgfVxuXG4gICAgZ2V0TnVtYmVyT2ZEYXlzKHllYXI6IG51bWJlciwgbW9udGg6IG51bWJlcik6IG51bWJlciB7XG4gICAgICAgIHJldHVybiA0MCAtIG5ldyBEYXRlKHllYXIsIG1vbnRoLCA0MCkuZ2V0RGF0ZSgpO1xuICAgIH1cblxuICAgIGdldE1vbnRoRGV0YWlscyh5ZWFyOiBudW1iZXIsIG1vbnRoOiBudW1iZXIpOiBEYXlEZXRhaWxbXSB7XG4gICAgICAgIGxldCBmaXJzdERheSA9IG5ldyBEYXRlKHllYXIsIG1vbnRoKS5nZXREYXkoKTtcbiAgICAgICAgaWYgKHRoaXMuc3RhcnRzT24gPT09ICdtb25kYXknKSB7XG4gICAgICAgICAgICBmaXJzdERheSAtPSAxO1xuICAgICAgICB9XG4gICAgICAgIC8vIElmIHRoZSBmaXJzdCBkYXkgaXMgYmVsb3cgMCBpdCBtZWFucyB0aGUgc3VuZGF5IGlzIHRoZSBmaXJzdCBkYXkgb2YgdGhlIG1vbnRoIHNvIHdlIG5lZWQgdG8gc2hvdyB0aGUgbGFzdCBtb250aFxuICAgICAgICBpZiAoZmlyc3REYXkgPCAwKSB7XG4gICAgICAgICAgICBmaXJzdERheSA9IDY7XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgbnVtYmVyT2ZEYXlzID0gdGhpcy5nZXROdW1iZXJPZkRheXMoeWVhciwgbW9udGgpO1xuICAgICAgICBjb25zdCBtb250aEFycmF5ID0gW107XG4gICAgICAgIGNvbnN0IHJvd3MgPSA2O1xuICAgICAgICBsZXQgY3VycmVudERheSA9IG51bGw7XG4gICAgICAgIGxldCBpbmRleCA9IDA7XG4gICAgICAgIGNvbnN0IGNvbHMgPSA3O1xuXG4gICAgICAgIGZvciAobGV0IHJvdyA9IDA7IHJvdyA8IHJvd3M7IHJvdysrKSB7XG4gICAgICAgICAgICBmb3IgKGxldCBjb2wgPSAwOyBjb2wgPCBjb2xzOyBjb2wrKykge1xuICAgICAgICAgICAgICAgIGN1cnJlbnREYXkgPSB0aGlzLmdldERheURldGFpbHMoaW5kZXgsIGZpcnN0RGF5LCBtb250aCwgbnVtYmVyT2ZEYXlzLCB5ZWFyKTtcbiAgICAgICAgICAgICAgICBtb250aEFycmF5LnB1c2goY3VycmVudERheSk7XG4gICAgICAgICAgICAgICAgaW5kZXgrKztcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gbW9udGhBcnJheTtcbiAgICB9XG5cbiAgICBvblByZXZpb3VzTW9udGgoKTogdm9pZCB7XG4gICAgICAgIGlmICh0aGlzLnByZXZpb3VzTW9udGhBdmFpbGFibGUpIHtcbiAgICAgICAgICAgIHRoaXMucHJldmlvdXNNb250aC5lbWl0KCk7XG4gICAgICAgICAgICB0aGlzLmN1cnJlbnRNb250aCAtPSAxO1xuICAgICAgICAgICAgaWYgKHRoaXMuY3VycmVudE1vbnRoID09PSAtMSkge1xuICAgICAgICAgICAgICAgIHRoaXMuY3VycmVudE1vbnRoID0gMTE7XG4gICAgICAgICAgICAgICAgdGhpcy5jdXJyZW50WWVhciAtPSAxO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgdGhpcy5jdXJyZW50TW9udGhEYXRlcyQubmV4dCh0aGlzLmdldE1vbnRoRGV0YWlscyh0aGlzLmN1cnJlbnRZZWFyLCB0aGlzLmN1cnJlbnRNb250aCkpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgb25OZXh0TW9udGgoKTogdm9pZCB7XG4gICAgICAgIHRoaXMubmV4dE1vbnRoLmVtaXQoKTtcbiAgICAgICAgdGhpcy5jdXJyZW50TW9udGggKz0gMTtcbiAgICAgICAgaWYgKHRoaXMuY3VycmVudE1vbnRoID09PSAxMikge1xuICAgICAgICAgICAgdGhpcy5jdXJyZW50TW9udGggPSAwO1xuICAgICAgICAgICAgdGhpcy5jdXJyZW50WWVhciArPSAxO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuY3VycmVudE1vbnRoRGF0ZXMkLm5leHQodGhpcy5nZXRNb250aERldGFpbHModGhpcy5jdXJyZW50WWVhciwgdGhpcy5jdXJyZW50TW9udGgpKTtcbiAgICB9XG5cbiAgICBvblNlbGVjdERheShkYXlEZXRhaWw6IERheURldGFpbCk6IHZvaWQge1xuICAgICAgICBjb25zdCBkYXlEaXNhYmxlZCA9IHRoaXMuZGF5RGlzYWJsZWRQaXBlLnRyYW5zZm9ybShkYXlEZXRhaWwsIHRoaXMuVE9EQVlfVElNRVNUQU1QLCB0aGlzLm1pbkRhdGVUaW1lc3RhbXAsIHRoaXMubWF4RGF0ZVRpbWVzdGFtcCk7XG4gICAgICAgIGlmICghZGF5RGlzYWJsZWQpIHtcbiAgICAgICAgICAgIGlmICh0aGlzLm1vZGUgPT09ICdzaW5nbGUnKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5zZWxlY3RlZERheXNUaW1lc3RhbXAuY2xlYXIoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmICh0aGlzLm1pbkRhdGUgJiYgZGF5RGV0YWlsLmRheWpzLmlzQmVmb3JlKGRheWpzKHRoaXMubWluRGF0ZSkpKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKHRoaXMubWF4RGF0ZSAmJiBkYXlEZXRhaWwuZGF5anMuaXNBZnRlcihkYXlqcyh0aGlzLm1heERhdGUpKSkge1xuICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmICh0aGlzLnNlbGVjdGVkRGF5c1RpbWVzdGFtcC5oYXMoZGF5RGV0YWlsLnRpbWVzdGFtcCkpIHtcbiAgICAgICAgICAgICAgICB0aGlzLnNlbGVjdGVkRGF5c1RpbWVzdGFtcC5kZWxldGUoZGF5RGV0YWlsLnRpbWVzdGFtcCk7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHRoaXMuc2VsZWN0ZWREYXlzVGltZXN0YW1wLmFkZChkYXlEZXRhaWwudGltZXN0YW1wKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHRoaXMuZGF0ZXNTZWxlY3RlZC5lbWl0KEFycmF5LmZyb20odGhpcy5zZWxlY3RlZERheXNUaW1lc3RhbXApLm1hcCh0aW1lc3RhbXAgPT4gZGF5anModGltZXN0YW1wKSkpO1xuICAgICAgICB9XG4gICAgfVxufVxuIiwiPGRpdiBjbGFzcz1cImRhdGUtcGlja2VyLWNvbnRhaW5lclwiPlxuICAgIDxkaXYgY2xhc3M9XCJkYXRlLXBpY2tlclwiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwibW9udGgtbmF2aWdhdGlvblwiPlxuICAgICAgICAgICAgPGFwLWljb24tYnV0dG9uXG4gICAgICAgICAgICAgICAgbmFtZT1cIm5lby1kYXRlLXBpY2tlci1wcmV2aW91cy1tb250aFwiXG4gICAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cIiFwcmV2aW91c01vbnRoQXZhaWxhYmxlXCJcbiAgICAgICAgICAgICAgICAoY2xpY2spPVwib25QcmV2aW91c01vbnRoKClcIj5cbiAgICAgICAgICAgICAgICA8YXAtc3ltYm9sXG4gICAgICAgICAgICAgICAgICAgIHN5bWJvbElkPVwiYXJyb3ctYnV0dG9uLWxlZnRcIlxuICAgICAgICAgICAgICAgICAgICBzaXplPVwibWljcm9cIiAvPlxuICAgICAgICAgICAgPC9hcC1pY29uLWJ1dHRvbj5cbiAgICAgICAgICAgIDxzcGFuPnt7IG1vbnRoc1tjdXJyZW50TW9udGhdIHwgdGl0bGVjYXNlIH19IHt7IGN1cnJlbnRZZWFyIH19PC9zcGFuPlxuICAgICAgICAgICAgPGFwLWljb24tYnV0dG9uXG4gICAgICAgICAgICAgICAgbmFtZT1cIm5lby1kYXRlLXBpY2tlci1uZXh0LW1vbnRoXCJcbiAgICAgICAgICAgICAgICAoY2xpY2spPVwib25OZXh0TW9udGgoKVwiPlxuICAgICAgICAgICAgICAgIDxhcC1zeW1ib2xcbiAgICAgICAgICAgICAgICAgICAgc3ltYm9sSWQ9XCJhcnJvdy1idXR0b24tcmlnaHRcIlxuICAgICAgICAgICAgICAgICAgICBzaXplPVwibWljcm9cIiAvPlxuICAgICAgICAgICAgPC9hcC1pY29uLWJ1dHRvbj5cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJ3ZWVrLWhlYWRlclwiPlxuICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgZGF5IG9mIHdlZWtEYXlzXCI+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImRheVwiPlxuICAgICAgICAgICAgICAgICAgICB7eyBkYXkgfCBzbGljZSA6IDAgOiAyIHwgdGl0bGVjYXNlIH19XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJkYXlzLWNvbnRhaW5lclwiPlxuICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgZGF5IG9mIGN1cnJlbnRNb250aERhdGVzJCB8IGFzeW5jXCI+XG4gICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lclxuICAgICAgICAgICAgICAgICAgICAqbmdJZj1cImRheVRlbXBsYXRlXCJcbiAgICAgICAgICAgICAgICAgICAgW25nVGVtcGxhdGVPdXRsZXRdPVwiZGF5VGVtcGxhdGVcIlxuICAgICAgICAgICAgICAgICAgICBbbmdUZW1wbGF0ZU91dGxldENvbnRleHRdPVwieyBkYXk6IGRheSB9XCIgLz5cbiAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiIWRheVRlbXBsYXRlXCI+XG4gICAgICAgICAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiZGF5XCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtjbGFzcy5kaXNhYmxlZF09XCJkYXkgfCBkYXlEaXNhYmxlZCA6IFRPREFZX1RJTUVTVEFNUCA6IG1pbkRhdGVUaW1lc3RhbXAgOiBtYXhEYXRlVGltZXN0YW1wXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtjbGFzcy50b2RheV09XCJkYXkudGltZXN0YW1wID09PSBUT0RBWV9USU1FU1RBTVBcIlxuICAgICAgICAgICAgICAgICAgICAgICAgW2NsYXNzLnNlbGVjdGVkXT1cInNlbGVjdGVkRGF5c1RpbWVzdGFtcC5oYXMoZGF5LnRpbWVzdGFtcClcIlxuICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cIm9uU2VsZWN0RGF5KGRheSlcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7IGRheS5kYXRlIH19XG4gICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuPC9kaXY+XG4iXX0=
243
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmVvLWRhdGVwaWNrZXIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vbGlicy91aS1jb21wb25lbnRzL25lby1kYXRlcGlja2VyL3NyYy9uZW8tZGF0ZXBpY2tlci5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi9saWJzL3VpLWNvbXBvbmVudHMvbmVvLWRhdGVwaWNrZXIvc3JjL25lby1kYXRlcGlja2VyLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxrQ0FBa0MsQ0FBQztBQUNuRSxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSx1Q0FBdUMsQ0FBQztBQUM1RSxPQUFPLEVBQUUsZUFBZSxFQUFFLGlCQUFpQixFQUFFLGtCQUFrQixFQUFrQixNQUFNLHVCQUF1QixDQUFDO0FBQy9HLE9BQU8sRUFBRSxTQUFTLEVBQUUsT0FBTyxFQUFFLElBQUksRUFBRSxnQkFBZ0IsRUFBRSxTQUFTLEVBQUUsYUFBYSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDdkcsT0FBTyxFQUFFLHVCQUF1QixFQUFFLFNBQVMsRUFBRSxZQUFZLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBVSxNQUFNLEVBQWUsTUFBTSxlQUFlLENBQUM7QUFDN0gsT0FBTyxLQUFLLE1BQU0sT0FBTyxDQUFDO0FBQzFCLE9BQU8saUJBQWlCLENBQUM7QUFDekIsT0FBTyxpQkFBaUIsQ0FBQztBQUN6QixPQUFPLGlCQUFpQixDQUFDO0FBQ3pCLE9BQU8saUJBQWlCLENBQUM7QUFDekIsT0FBTyxpQkFBaUIsQ0FBQztBQUN6QixPQUFPLFVBQVUsTUFBTSx5QkFBeUIsQ0FBQztBQUNqRCxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDMUQsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDL0MsT0FBTyxFQUFFLG9CQUFv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K0NBQ2YsU0FBUyw4Q0FDVCxtQkFBbUI7OzRGQUlkLHNCQUFzQjtrQkFwQmxDLFNBQVM7K0JBQ0ksb0JBQW9CLG1CQUdiLHVCQUF1QixDQUFDLE1BQU0sYUFDcEMsQ0FBQyxlQUFlLENBQUMsV0FDbkI7d0JBQ0wsZUFBZTt3QkFDZixhQUFhO3dCQUNiLGVBQWU7d0JBQ2YsT0FBTzt3QkFDUCxJQUFJO3dCQUNKLFNBQVM7d0JBQ1QsZ0JBQWdCO3dCQUNoQixlQUFlO3dCQUNmLFNBQVM7d0JBQ1QsbUJBQW1CO3FCQUN0QixjQUNXLElBQUk7cUdBTVAsV0FBVztzQkFBbkIsS0FBSztnQkFDRyxNQUFNO3NCQUFkLEtBQUs7Z0JBSU8sT0FBTztzQkFBbkIsS0FBSztnQkFTTyxPQUFPO3NCQUFuQixLQUFLO2dCQVdPLElBQUk7c0JBQWhCLEtBQUs7Z0JBWU8sYUFBYTtzQkFBekIsS0FBSztnQkFpQkcsUUFBUTtzQkFBaEIsS0FBSztnQkFFSSxhQUFhO3NCQUF0QixNQUFNO2dCQUNHLFNBQVM7c0JBQWxCLE1BQU07Z0JBQ0csYUFBYTtzQkFBdEIsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEJ1dHRvbkNvbXBvbmVudCB9IGZyb20gJ0BhZ29yYXB1bHNlL3VpLWNvbXBvbmVudHMvYnV0dG9uJztcbmltcG9ydCB7IEljb25CdXR0b25Db21wb25lbnQgfSBmcm9tICdAYWdvcmFwdWxzZS91aS1jb21wb25lbnRzL2ljb24tYnV0dG9uJztcbmltcG9ydCB7IFN5bWJvbENvbXBvbmVudCwgYXBBcnJvd0J1dHRvbkxlZnQsIGFwQXJyb3dCdXR0b25SaWdodCwgU3ltYm9sUmVnaXN0cnkgfSBmcm9tICdAYWdvcmFwdWxzZS91aS1zeW1ib2wnO1xuaW1wb3J0IHsgQXN5bmNQaXBlLCBOZ0Zvck9mLCBOZ0lmLCBOZ1RlbXBsYXRlT3V0bGV0LCBTbGljZVBpcGUsIFRpdGxlQ2FzZVBpcGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksIENvbXBvbmVudCwgRXZlbnRFbWl0dGVyLCBpbmplY3QsIElucHV0LCBPbkluaXQsIE91dHB1dCwgVGVtcGxhdGVSZWYgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCBkYXlqcyBmcm9tICdkYXlqcyc7XG5pbXBvcnQgJ2RheWpzL2xvY2FsZS9kZSc7XG5pbXBvcnQgJ2RheWpzL2xvY2FsZS9lbic7XG5pbXBvcnQgJ2RheWpzL2xvY2FsZS9lcyc7XG5pbXBvcnQgJ2RheWpzL2xvY2FsZS9mcic7XG5pbXBvcnQgJ2RheWpzL2xvY2FsZS9wdCc7XG5pbXBvcnQgbG9jYWxlRGF0YSBmcm9tICdkYXlqcy9wbHVnaW4vbG9jYWxlRGF0YSc7XG5pbXBvcnQgeyBpbmplY3REZXN0cm95IH0gZnJvbSAnbmd4dGVuc2lvbi9pbmplY3QtZGVzdHJveSc7XG5pbXBvcnQgeyBCZWhhdmlvclN1YmplY3QsIGZpbHRlciB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgZGlzdGluY3RVbnRpbENoYW5nZWQsIHRha2VVbnRpbCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7IERheURldGFpbCB9IGZyb20gJy4vZGF5LWRldGFpbC5tb2RlbCc7XG5pbXBvcnQgeyBEYXlEaXNhYmxlZFBpcGUgfSBmcm9tICcuL2RheS1kaXNhYmxlZC5waXBlJztcblxuZXhwb3J0IHR5cGUgTmVvRGF0ZVBpY2tlck1vZGUgPSAnc2luZ2xlJyB8ICdtdWx0aXBsZSc7XG5leHBvcnQgdHlwZSBOZW9EYXRlUGlja2VyU3RhcnRzT24gPSAnbW9uZGF5JyB8ICdzdW5kYXknO1xuZXhwb3J0IHR5cGUgTmVvRGF0ZVBpY2tlckxvY2FsZSA9ICdlbicgfCAnZXMnIHwgJ2ZyJyB8ICdwdCcgfCAnZGUnO1xuXG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvcjogJ2FwLW5lby1kYXRlLXBpY2tlcicsXG4gICAgc3R5bGVVcmxzOiBbJ25lby1kYXRlcGlja2VyLmNvbXBvbmVudC5zY3NzJ10sXG4gICAgdGVtcGxhdGVVcmw6ICduZW8tZGF0ZXBpY2tlci5jb21wb25lbnQuaHRtbCcsXG4gICAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gICAgcHJvdmlkZXJzOiBbRGF5RGlzYWJsZWRQaXBlXSxcbiAgICBpbXBvcnRzOiBbXG4gICAgICAgIFN5bWJvbENvbXBvbmVudCxcbiAgICAgICAgVGl0bGVDYXNlUGlwZSxcbiAgICAgICAgQnV0dG9uQ29tcG9uZW50LFxuICAgICAgICBOZ0Zvck9mLFxuICAgICAgICBOZ0lmLFxuICAgICAgICBTbGljZVBpcGUsXG4gICAgICAgIE5nVGVtcGxhdGVPdXRsZXQsXG4gICAgICAgIERheURpc2FibGVkUGlwZSxcbiAgICAgICAgQXN5bmNQaXBlLFxuICAgICAgICBJY29uQnV0dG9uQ29tcG9uZW50LFxuICAgIF0sXG4gICAgc3RhbmRhbG9uZTogdHJ1ZSxcbn0pXG5leHBvcnQgY2xhc3MgTmVvRGF0ZXBpY2tlckNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XG4gICAgcmVhZG9ubHkgT05FX0RBWTogbnVtYmVyID0gNjAgKiA2MCAqIDI0ICogMTAwMDtcbiAgICByZWFkb25seSBUT0RBWV9USU1FU1RBTVA6IG51bWJlciA9IERhdGUubm93KCkgLSAoRGF0ZS5ub3coKSAlIHRoaXMuT05FX0RBWSkgKyBuZXcgRGF0ZSgpLmdldFRpbWV6b25lT2Zmc2V0KCkgKiAxMDAwICogNjA7XG5cbiAgICBASW5wdXQoKSBkYXlUZW1wbGF0ZTogVGVtcGxhdGVSZWY8eyBkYXk6IERheURldGFpbCB9PiB8IHVuZGVmaW5lZCA9IHVuZGVmaW5lZDtcbiAgICBASW5wdXQoKSBsb2NhbGU6IE5lb0RhdGVQaWNrZXJMb2NhbGUgPSAnZW4nO1xuXG4gICAgcHJpdmF0ZSBfbWF4RGF0ZTogZGF5anMuRGF5anMgfCB1bmRlZmluZWQ7XG5cbiAgICBASW5wdXQoKSBzZXQgbWF4RGF0ZShtYXhEYXRlOiBkYXlqcy5EYXlqcykge1xuICAgICAgICB0aGlzLl9tYXhEYXRlID0gbWF4RGF0ZTtcbiAgICAgICAgdGhpcy5tYXhEYXRlVGltZXN0YW1wID0gbWF4RGF0ZS50b0RhdGUoKS5nZXRUaW1lKCk7XG4gICAgfVxuICAgIGdldCBtYXhEYXRlKCk6IGRheWpzLkRheWpzIHwgdW5kZWZpbmVkIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX21heERhdGU7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBfbWluRGF0ZTogZGF5anMuRGF5anMgfCB1bmRlZmluZWQ7XG4gICAgQElucHV0KCkgc2V0IG1pbkRhdGUobWluRGF0ZTogZGF5anMuRGF5anMpIHtcbiAgICAgICAgdGhpcy5fbWluRGF0ZSA9IG1pbkRhdGU7XG4gICAgICAgIHRoaXMubWluRGF0ZVRpbWVzdGFtcCA9IG1pbkRhdGUudG9EYXRlKCkuZ2V0VGltZSgpO1xuICAgIH1cbiAgICBnZXQgbWluRGF0ZSgpOiBkYXlqcy5EYXlqcyB8IHVuZGVmaW5lZCB7XG4gICAgICAgIHJldHVybiB0aGlzLl9taW5EYXRlO1xuICAgIH1cblxuICAgIHByZXZpb3VzTW9udGhBdmFpbGFibGU6IGJvb2xlYW4gPSB0cnVlO1xuXG4gICAgcHJpdmF0ZSBfbW9kZTogTmVvRGF0ZVBpY2tlck1vZGUgPSAnc2luZ2xlJztcbiAgICBASW5wdXQoKSBzZXQgbW9kZShtb2RlOiBOZW9EYXRlUGlja2VyTW9kZSkge1xuICAgICAgICB0aGlzLl9tb2RlID0gbW9kZTtcbiAgICAgICAgaWYgKHRoaXMuX21vZGUgPT09ICdzaW5nbGUnKSB7XG4gICAgICAgICAgICB0aGlzLl9zZWxlY3RlZERhdGVzID0gdGhpcy5fc2VsZWN0ZWREYXRlcy5zbGljZSgwLCAxKTtcbiAgICAgICAgICAgIHRoaXMuc2VsZWN0ZWREYXlzVGltZXN0YW1wID0gbmV3IFNldChBcnJheS5mcm9tKHRoaXMuc2VsZWN0ZWREYXlzVGltZXN0YW1wKS5zbGljZSgwLCAxKSk7XG4gICAgICAgIH1cbiAgICB9XG4gICAgZ2V0IG1vZGUoKTogTmVvRGF0ZVBpY2tlck1vZGUge1xuICAgICAgICByZXR1cm4gdGhpcy5fbW9kZTtcbiAgICB9XG5cbiAgICBwcml2YXRlIF9zZWxlY3RlZERhdGVzOiBkYXlqcy5EYXlqc1tdID0gW107XG4gICAgQElucHV0KCkgc2V0IHNlbGVjdGVkRGF0ZXMoZGF0ZXM6IGRheWpzLkRheWpzW10pIHtcbiAgICAgICAgaWYgKHRoaXMuX21vZGUgPT09ICdzaW5nbGUnKSB7XG4gICAgICAgICAgICBkYXRlcyA9IGRhdGVzLnNsaWNlKDAsIDEpO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuc2VsZWN0ZWREYXlzVGltZXN0YW1wID0gbmV3IFNldCgpO1xuICAgICAgICB0aGlzLl9zZWxlY3RlZERhdGVzID0gZGF0ZXM7XG4gICAgICAgIGlmICh0aGlzLl9zZWxlY3RlZERhdGVzLmxlbmd0aCkge1xuICAgICAgICAgICAgdGhpcy5fc2VsZWN0ZWREYXRlcy5mb3JFYWNoKGRheSA9PiB7XG4gICAgICAgICAgICAgICAgdGhpcy5zZWxlY3RlZERheXNUaW1lc3RhbXAuYWRkKGRheS50b0RhdGUoKS5nZXRUaW1lKCkpO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBnZXQgc2VsZWN0ZWREYXRlcygpOiBkYXlqcy5EYXlqc1tdIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX3NlbGVjdGVkRGF0ZXM7XG4gICAgfVxuXG4gICAgQElucHV0KCkgc3RhcnRzT246IE5lb0RhdGVQaWNrZXJTdGFydHNPbiA9ICdtb25kYXknO1xuXG4gICAgQE91dHB1dCgpIGRhdGVzU2VsZWN0ZWQ6IEV2ZW50RW1pdHRlcjxkYXlqcy5EYXlqc1tdPiA9IG5ldyBFdmVudEVtaXR0ZXI8ZGF5anMuRGF5anNbXT4oKTtcbiAgICBAT3V0cHV0KCkgbmV4dE1vbnRoOiBFdmVudEVtaXR0ZXI8dm9pZD4gPSBuZXcgRXZlbnRFbWl0dGVyPHZvaWQ+KCk7XG4gICAgQE91dHB1dCgpIHByZXZpb3VzTW9udGg6IEV2ZW50RW1pdHRlcjx2b2lkPiA9IG5ldyBFdmVudEVtaXR0ZXI8dm9pZD4oKTtcblxuICAgIGN1cnJlbnRZZWFyITogbnVtYmVyO1xuICAgIGN1cnJlbnRNb250aCE6IG51bWJlcjtcbiAgICBjdXJyZW50TW9udGhEYXRlcyQ6IEJlaGF2aW9yU3ViamVjdDxEYXlEZXRhaWxbXT4gPSBuZXcgQmVoYXZpb3JTdWJqZWN0PERheURldGFpbFtdPihbXSk7XG4gICAgbWluRGF0ZVRpbWVzdGFtcDogbnVtYmVyIHwgdW5kZWZpbmVkID0gdW5kZWZpbmVkO1xuICAgIG1heERhdGVUaW1lc3RhbXA6IG51bWJlciB8IHVuZGVmaW5lZCA9IHVuZGVmaW5lZDtcbiAgICBtb250aHM6IHN0cmluZ1tdID0gW107XG4gICAgc2VsZWN0ZWREYXlzVGltZXN0YW1wOiBTZXQ8bnVtYmVyPiA9IG5ldyBTZXQoKTtcbiAgICB3ZWVrRGF5czogc3RyaW5nW10gPSBbXTtcblxuICAgIGRheURpc2FibGVkUGlwZTogRGF5RGlzYWJsZWRQaXBlID0gaW5qZWN0KERheURpc2FibGVkUGlwZSk7XG5cbiAgICBwcml2YXRlIGRlc3Ryb3kkID0gaW5qZWN0RGVzdHJveSgpO1xuXG4gICAgY29uc3RydWN0b3IocHVibGljIHN5bWJvbFJlZ2lzdHJ5OiBTeW1ib2xSZWdpc3RyeSkge1xuICAgICAgICB0aGlzLnN5bWJvbFJlZ2lzdHJ5LnJlZ2lzdGVyU3ltYm9scyhbYXBBcnJvd0J1dHRvbkxlZnQsIGFwQXJyb3dCdXR0b25SaWdodF0pO1xuICAgIH1cblxuICAgIG5nT25Jbml0KCk6IHZvaWQge1xuICAgICAgICBkYXlqcy5leHRlbmQobG9jYWxlRGF0YSk7XG4gICAgICAgIGNvbnN0IGRhdGUgPSBuZXcgRGF0ZSgpO1xuICAgICAgICB0aGlzLmN1cnJlbnRZZWFyID0gZGF0ZS5nZXRGdWxsWWVhcigpO1xuICAgICAgICB0aGlzLmN1cnJlbnRNb250aCA9IGRhdGUuZ2V0TW9udGgoKTtcbiAgICAgICAgaWYgKHRoaXMubG9jYWxlKSB7XG4gICAgICAgICAgICBkYXlqcy5sb2NhbGUodGhpcy5sb2NhbGUpO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMubW9udGhzID0gZGF5anMubW9udGhzKCk7XG4gICAgICAgIHRoaXMud2Vla0RheXMgPSBbLi4uZGF5anMud2Vla2RheXMoKV07XG5cbiAgICAgICAgaWYgKHRoaXMuc3RhcnRzT24gPT09ICdtb25kYXknKSB7XG4gICAgICAgICAgICBjb25zdCBzdW5kYXkgPSB0aGlzLndlZWtEYXlzLnNsaWNlKDAsIDEpO1xuICAgICAgICAgICAgdGhpcy53ZWVrRGF5cy5zcGxpY2UoMCwgMSk7XG4gICAgICAgICAgICB0aGlzLndlZWtEYXlzID0gdGhpcy53ZWVrRGF5cy5jb25jYXQoc3VuZGF5KTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLmN1cnJlbnRNb250aERhdGVzJC5uZXh0KHRoaXMuZ2V0TW9udGhEZXRhaWxzKHRoaXMuY3VycmVudFllYXIsIHRoaXMuY3VycmVudE1vbnRoKSk7XG4gICAgICAgIHRoaXMuY3VycmVudE1vbnRoRGF0ZXMkXG4gICAgICAgICAgICAucGlwZShcbiAgICAgICAgICAgICAgICBkaXN0aW5jdFVudGlsQ2hhbmdlZCgpLFxuICAgICAgICAgICAgICAgIGZpbHRlcigoKSA9PiAhIXRoaXMubWluRGF0ZVRpbWVzdGFtcCksXG4gICAgICAgICAgICAgICAgdGFrZVVudGlsKHRoaXMuZGVzdHJveSQpXG4gICAgICAgICAgICApXG4gICAgICAgICAgICAuc3Vic2NyaWJlKGN1cnJlbnRNb250aERhdGVzID0+IHtcbiAgICAgICAgICAgICAgICBjb25zdCBtaW5EYXRlSW5QcmV2aW91c01vbnRoID0gdGhpcy5taW5EYXRlVGltZXN0YW1wXG4gICAgICAgICAgICAgICAgICAgID8gbmV3IERhdGUodGhpcy5taW5EYXRlVGltZXN0YW1wKS5nZXRNb250aCgpIDwgdGhpcy5jdXJyZW50TW9udGhcbiAgICAgICAgICAgICAgICAgICAgOiB1bmRlZmluZWQ7XG4gICAgICAgICAgICAgICAgdGhpcy5wcmV2aW91c01vbnRoQXZhaWxhYmxlID1cbiAgICAgICAgICAgICAgICAgICAgIWN1cnJlbnRNb250aERhdGVzLnNvbWUoZGF5RGV0YWlsID0+IGRheURldGFpbC50aW1lc3RhbXAgPT09IHRoaXMubWluRGF0ZVRpbWVzdGFtcCkgfHwgISFtaW5EYXRlSW5QcmV2aW91c01vbnRoO1xuICAgICAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgZ2V0RGF5RGV0YWlscyhpbmRleDogbnVtYmVyLCBmaXJzdERheTogbnVtYmVyLCBtb250aDogbnVtYmVyLCBudW1iZXJPZkRheXM6IG51bWJlciwgeWVhcjogbnVtYmVyKTogRGF5RGV0YWlsIHtcbiAgICAgICAgY29uc3QgZGF0ZSA9IGluZGV4IC0gZmlyc3REYXk7XG4gICAgICAgIGNvbnN0IGRheSA9IGluZGV4ICUgNztcbiAgICAgICAgbGV0IHByZXZNb250aCA9IG1vbnRoIC0gMTtcbiAgICAgICAgbGV0IHByZXZZZWFyID0geWVhcjtcbiAgICAgICAgaWYgKHByZXZNb250aCA8IDApIHtcbiAgICAgICAgICAgIHByZXZNb250aCA9IDExO1xuICAgICAgICAgICAgcHJldlllYXItLTtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBwcmV2TW9udGhOdW1iZXJPZkRheXMgPSB0aGlzLmdldE51bWJlck9mRGF5cyhwcmV2WWVhciwgcHJldk1vbnRoKTtcbiAgICAgICAgY29uc3QgX2RhdGUgPSAoZGF0ZSA8IDAgPyBwcmV2TW9udGhOdW1iZXJPZkRheXMgKyBkYXRlIDogZGF0ZSAlIG51bWJlck9mRGF5cykgKyAxO1xuICAgICAgICBjb25zdCBfbW9udGggPSBkYXRlIDwgMCA/IC0xIDogZGF0ZSA+PSBudW1iZXJPZkRheXMgPyAxIDogMDtcbiAgICAgICAgY29uc3QgbmV3RGF0ZSA9IG5ldyBEYXRlKHllYXIsIF9tb250aCArIG1vbnRoLCBfZGF0ZSk7XG4gICAgICAgIGNvbnN0IHRpbWVzdGFtcCA9IG5ld0RhdGUuZ2V0VGltZSgpO1xuICAgICAgICBjb25zdCBkYXlTdHJpbmcgPSB0aGlzLndlZWtEYXlzW2RheV07XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBkYXRlOiBfZGF0ZSxcbiAgICAgICAgICAgIGRheSxcbiAgICAgICAgICAgIG1vbnRoOiBfbW9udGgsXG4gICAgICAgICAgICB0aW1lc3RhbXAsXG4gICAgICAgICAgICBkYXlTdHJpbmcsXG4gICAgICAgICAgICBkYXlqczogZGF5anMobmV3RGF0ZSksXG4gICAgICAgIH07XG4gICAgfVxuXG4gICAgZ2V0TnVtYmVyT2ZEYXlzKHllYXI6IG51bWJlciwgbW9udGg6IG51bWJlcik6IG51bWJlciB7XG4gICAgICAgIHJldHVybiA0MCAtIG5ldyBEYXRlKHllYXIsIG1vbnRoLCA0MCkuZ2V0RGF0ZSgpO1xuICAgIH1cblxuICAgIGdldE1vbnRoRGV0YWlscyh5ZWFyOiBudW1iZXIsIG1vbnRoOiBudW1iZXIpOiBEYXlEZXRhaWxbXSB7XG4gICAgICAgIGxldCBmaXJzdERheSA9IG5ldyBEYXRlKHllYXIsIG1vbnRoKS5nZXREYXkoKTtcbiAgICAgICAgaWYgKHRoaXMuc3RhcnRzT24gPT09ICdtb25kYXknKSB7XG4gICAgICAgICAgICBmaXJzdERheSAtPSAxO1xuICAgICAgICB9XG4gICAgICAgIC8vIElmIHRoZSBmaXJzdCBkYXkgaXMgYmVsb3cgMCBpdCBtZWFucyB0aGUgc3VuZGF5IGlzIHRoZSBmaXJzdCBkYXkgb2YgdGhlIG1vbnRoIHNvIHdlIG5lZWQgdG8gc2hvdyB0aGUgbGFzdCBtb250aFxuICAgICAgICBpZiAoZmlyc3REYXkgPCAwKSB7XG4gICAgICAgICAgICBmaXJzdERheSA9IDY7XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgbnVtYmVyT2ZEYXlzID0gdGhpcy5nZXROdW1iZXJPZkRheXMoeWVhciwgbW9udGgpO1xuICAgICAgICBjb25zdCBtb250aEFycmF5ID0gW107XG4gICAgICAgIGNvbnN0IHJvd3MgPSA2O1xuICAgICAgICBsZXQgY3VycmVudERheSA9IG51bGw7XG4gICAgICAgIGxldCBpbmRleCA9IDA7XG4gICAgICAgIGNvbnN0IGNvbHMgPSA3O1xuXG4gICAgICAgIGZvciAobGV0IHJvdyA9IDA7IHJvdyA8IHJvd3M7IHJvdysrKSB7XG4gICAgICAgICAgICBmb3IgKGxldCBjb2wgPSAwOyBjb2wgPCBjb2xzOyBjb2wrKykge1xuICAgICAgICAgICAgICAgIGN1cnJlbnREYXkgPSB0aGlzLmdldERheURldGFpbHMoaW5kZXgsIGZpcnN0RGF5LCBtb250aCwgbnVtYmVyT2ZEYXlzLCB5ZWFyKTtcbiAgICAgICAgICAgICAgICBtb250aEFycmF5LnB1c2goY3VycmVudERheSk7XG4gICAgICAgICAgICAgICAgaW5kZXgrKztcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gbW9udGhBcnJheTtcbiAgICB9XG5cbiAgICBvblByZXZpb3VzTW9udGgoKTogdm9pZCB7XG4gICAgICAgIGlmICh0aGlzLnByZXZpb3VzTW9udGhBdmFpbGFibGUpIHtcbiAgICAgICAgICAgIHRoaXMucHJldmlvdXNNb250aC5lbWl0KCk7XG4gICAgICAgICAgICB0aGlzLmN1cnJlbnRNb250aCAtPSAxO1xuICAgICAgICAgICAgaWYgKHRoaXMuY3VycmVudE1vbnRoID09PSAtMSkge1xuICAgICAgICAgICAgICAgIHRoaXMuY3VycmVudE1vbnRoID0gMTE7XG4gICAgICAgICAgICAgICAgdGhpcy5jdXJyZW50WWVhciAtPSAxO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgdGhpcy5jdXJyZW50TW9udGhEYXRlcyQubmV4dCh0aGlzLmdldE1vbnRoRGV0YWlscyh0aGlzLmN1cnJlbnRZZWFyLCB0aGlzLmN1cnJlbnRNb250aCkpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgb25OZXh0TW9udGgoKTogdm9pZCB7XG4gICAgICAgIHRoaXMubmV4dE1vbnRoLmVtaXQoKTtcbiAgICAgICAgdGhpcy5jdXJyZW50TW9udGggKz0gMTtcbiAgICAgICAgaWYgKHRoaXMuY3VycmVudE1vbnRoID09PSAxMikge1xuICAgICAgICAgICAgdGhpcy5jdXJyZW50TW9udGggPSAwO1xuICAgICAgICAgICAgdGhpcy5jdXJyZW50WWVhciArPSAxO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuY3VycmVudE1vbnRoRGF0ZXMkLm5leHQodGhpcy5nZXRNb250aERldGFpbHModGhpcy5jdXJyZW50WWVhciwgdGhpcy5jdXJyZW50TW9udGgpKTtcbiAgICB9XG5cbiAgICBvblNlbGVjdERheShkYXlEZXRhaWw6IERheURldGFpbCk6IHZvaWQge1xuICAgICAgICBjb25zdCBkYXlEaXNhYmxlZCA9IHRoaXMuZGF5RGlzYWJsZWRQaXBlLnRyYW5zZm9ybShkYXlEZXRhaWwsIHRoaXMuVE9EQVlfVElNRVNUQU1QLCB0aGlzLm1pbkRhdGVUaW1lc3RhbXAsIHRoaXMubWF4RGF0ZVRpbWVzdGFtcCk7XG4gICAgICAgIGlmICghZGF5RGlzYWJsZWQpIHtcbiAgICAgICAgICAgIGlmICh0aGlzLm1vZGUgPT09ICdzaW5nbGUnKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5zZWxlY3RlZERheXNUaW1lc3RhbXAuY2xlYXIoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmICh0aGlzLm1pbkRhdGUgJiYgZGF5RGV0YWlsLmRheWpzLmlzQmVmb3JlKGRheWpzKHRoaXMubWluRGF0ZSkpKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKHRoaXMubWF4RGF0ZSAmJiBkYXlEZXRhaWwuZGF5anMuaXNBZnRlcihkYXlqcyh0aGlzLm1heERhdGUpKSkge1xuICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmICh0aGlzLnNlbGVjdGVkRGF5c1RpbWVzdGFtcC5oYXMoZGF5RGV0YWlsLnRpbWVzdGFtcCkpIHtcbiAgICAgICAgICAgICAgICB0aGlzLnNlbGVjdGVkRGF5c1RpbWVzdGFtcC5kZWxldGUoZGF5RGV0YWlsLnRpbWVzdGFtcCk7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHRoaXMuc2VsZWN0ZWREYXlzVGltZXN0YW1wLmFkZChkYXlEZXRhaWwudGltZXN0YW1wKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHRoaXMuZGF0ZXNTZWxlY3RlZC5lbWl0KEFycmF5LmZyb20odGhpcy5zZWxlY3RlZERheXNUaW1lc3RhbXApLm1hcCh0aW1lc3RhbXAgPT4gZGF5anModGltZXN0YW1wKSkpO1xuICAgICAgICB9XG4gICAgfVxufVxuIiwiPGRpdiBjbGFzcz1cImRhdGUtcGlja2VyLWNvbnRhaW5lclwiPlxuICAgIDxkaXYgY2xhc3M9XCJkYXRlLXBpY2tlclwiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwibW9udGgtbmF2aWdhdGlvblwiPlxuICAgICAgICAgICAgPGFwLWljb24tYnV0dG9uXG4gICAgICAgICAgICAgICAgbmFtZT1cIm5lby1kYXRlLXBpY2tlci1wcmV2aW91cy1tb250aFwiXG4gICAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cIiFwcmV2aW91c01vbnRoQXZhaWxhYmxlXCJcbiAgICAgICAgICAgICAgICAoY2xpY2spPVwib25QcmV2aW91c01vbnRoKClcIj5cbiAgICAgICAgICAgICAgICA8YXAtc3ltYm9sXG4gICAgICAgICAgICAgICAgICAgIHN5bWJvbElkPVwiYXJyb3ctYnV0dG9uLWxlZnRcIlxuICAgICAgICAgICAgICAgICAgICBzaXplPVwibWljcm9cIiAvPlxuICAgICAgICAgICAgPC9hcC1pY29uLWJ1dHRvbj5cbiAgICAgICAgICAgIDxzcGFuPnt7IG1vbnRoc1tjdXJyZW50TW9udGhdIHwgdGl0bGVjYXNlIH19IHt7IGN1cnJlbnRZZWFyIH19PC9zcGFuPlxuICAgICAgICAgICAgPGFwLWljb24tYnV0dG9uXG4gICAgICAgICAgICAgICAgbmFtZT1cIm5lby1kYXRlLXBpY2tlci1uZXh0LW1vbnRoXCJcbiAgICAgICAgICAgICAgICAoY2xpY2spPVwib25OZXh0TW9udGgoKVwiPlxuICAgICAgICAgICAgICAgIDxhcC1zeW1ib2xcbiAgICAgICAgICAgICAgICAgICAgc3ltYm9sSWQ9XCJhcnJvdy1idXR0b24tcmlnaHRcIlxuICAgICAgICAgICAgICAgICAgICBzaXplPVwibWljcm9cIiAvPlxuICAgICAgICAgICAgPC9hcC1pY29uLWJ1dHRvbj5cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJ3ZWVrLWhlYWRlclwiPlxuICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgZGF5IG9mIHdlZWtEYXlzXCI+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImRheVwiPlxuICAgICAgICAgICAgICAgICAgICB7eyBkYXkgfCBzbGljZSA6IDAgOiAyIHwgdGl0bGVjYXNlIH19XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJkYXlzLWNvbnRhaW5lclwiPlxuICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgZGF5IG9mIGN1cnJlbnRNb250aERhdGVzJCB8IGFzeW5jXCI+XG4gICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lclxuICAgICAgICAgICAgICAgICAgICAqbmdJZj1cImRheVRlbXBsYXRlXCJcbiAgICAgICAgICAgICAgICAgICAgW25nVGVtcGxhdGVPdXRsZXRdPVwiZGF5VGVtcGxhdGVcIlxuICAgICAgICAgICAgICAgICAgICBbbmdUZW1wbGF0ZU91dGxldENvbnRleHRdPVwieyBkYXk6IGRheSB9XCIgLz5cbiAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiIWRheVRlbXBsYXRlXCI+XG4gICAgICAgICAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiZGF5XCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtjbGFzcy5kaXNhYmxlZF09XCJkYXkgfCBkYXlEaXNhYmxlZCA6IFRPREFZX1RJTUVTVEFNUCA6IG1pbkRhdGVUaW1lc3RhbXAgOiBtYXhEYXRlVGltZXN0YW1wXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtjbGFzcy50b2RheV09XCJkYXkudGltZXN0YW1wID09PSBUT0RBWV9USU1FU1RBTVBcIlxuICAgICAgICAgICAgICAgICAgICAgICAgW2NsYXNzLnNlbGVjdGVkXT1cInNlbGVjdGVkRGF5c1RpbWVzdGFtcC5oYXMoZGF5LnRpbWVzdGFtcClcIlxuICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cIm9uU2VsZWN0RGF5KGRheSlcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7IGRheS5kYXRlIH19XG4gICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuPC9kaXY+XG4iXX0=
@@ -0,0 +1,5 @@
1
+ /**
2
+ * Generated bundle index. Do not edit.
3
+ */
4
+ export * from './public_api';
5
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWdvcmFwdWxzZS11aS1jb21wb25lbnRzLXJhbmdlLXNsaWRlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL2xpYnMvdWktY29tcG9uZW50cy9yYW5nZS1zbGlkZXIvc3JjL2Fnb3JhcHVsc2UtdWktY29tcG9uZW50cy1yYW5nZS1zbGlkZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7O0dBRUc7QUFFSCxjQUFjLGNBQWMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogR2VuZXJhdGVkIGJ1bmRsZSBpbmRleC4gRG8gbm90IGVkaXQuXG4gKi9cblxuZXhwb3J0ICogZnJvbSAnLi9wdWJsaWNfYXBpJztcbiJdfQ==
@@ -0,0 +1,2 @@
1
+ export * from './range-slider.component';
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVibGljX2FwaS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL2xpYnMvdWktY29tcG9uZW50cy9yYW5nZS1zbGlkZXIvc3JjL3B1YmxpY19hcGkudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsY0FBYywwQkFBMEIsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCAqIGZyb20gJy4vcmFuZ2Utc2xpZGVyLmNvbXBvbmVudCc7XG4iXX0=
@@ -0,0 +1,155 @@
1
+ import { NgClass } from '@angular/common';
2
+ import { Component, forwardRef, Input } from '@angular/core';
3
+ import { MatSliderModule } from '@angular/material/slider';
4
+ import { NG_VALIDATORS, NG_VALUE_ACCESSOR, ReactiveFormsModule, Validators } from '@angular/forms';
5
+ import * as i0 from "@angular/core";
6
+ import * as i1 from "@angular/forms";
7
+ import * as i2 from "@angular/material/slider";
8
+ export class RangeSliderComponent {
9
+ fb;
10
+ set min(min) {
11
+ this.minimumFormControl.setValue(min);
12
+ this.change();
13
+ }
14
+ get min() {
15
+ return this.minFormControl.getRawValue();
16
+ }
17
+ set max(max) {
18
+ this.maximumFormControl.setValue(max);
19
+ this.change();
20
+ }
21
+ get max() {
22
+ return this.maxFormControl.getRawValue();
23
+ }
24
+ rangeSliderFormGroup;
25
+ constructor(fb) {
26
+ this.fb = fb;
27
+ const minimumValidator = (control) => {
28
+ let errors = null;
29
+ const rangeFormValue = control.getRawValue();
30
+ if (rangeFormValue.min && rangeFormValue.minimum && (rangeFormValue.min < rangeFormValue.minimum)) {
31
+ errors = {
32
+ minimumError: {
33
+ expectedMin: rangeFormValue.minimum,
34
+ currentMin: rangeFormValue.min
35
+ }
36
+ };
37
+ }
38
+ return errors;
39
+ };
40
+ const minimumRequiredValidator = (control) => {
41
+ let errors = null;
42
+ const rangeFormValue = control.getRawValue();
43
+ if (rangeFormValue.min == undefined) {
44
+ errors = {
45
+ minimumRequired: true
46
+ };
47
+ }
48
+ return errors;
49
+ };
50
+ const maximumValidator = (control) => {
51
+ let errors = null;
52
+ const rangeFormValue = control.getRawValue();
53
+ if (rangeFormValue.max && rangeFormValue.maximum && (rangeFormValue.max > rangeFormValue.maximum)) {
54
+ errors = {
55
+ maximumError: {
56
+ expectedMax: rangeFormValue.maximum,
57
+ currentMax: rangeFormValue.max
58
+ }
59
+ };
60
+ }
61
+ return errors;
62
+ };
63
+ const maximumRequiredValidator = (control) => {
64
+ let errors = null;
65
+ const rangeFormValue = control.getRawValue();
66
+ if (rangeFormValue.max == undefined) {
67
+ errors = {
68
+ maximumRequired: true
69
+ };
70
+ }
71
+ return errors;
72
+ };
73
+ this.rangeSliderFormGroup = fb.group({
74
+ maximum: fb.control(0, { nonNullable: true }),
75
+ minimum: fb.control(100, { nonNullable: true }),
76
+ min: fb.control(undefined, { nonNullable: true }),
77
+ max: fb.control(undefined, { nonNullable: true }),
78
+ }, { validators: Validators.compose([minimumRequiredValidator, maximumRequiredValidator, minimumValidator, maximumValidator]) });
79
+ }
80
+ propagateChange = null;
81
+ propagateOnTouch = null;
82
+ registerOnChange(fn) {
83
+ this.propagateChange = fn;
84
+ }
85
+ registerOnTouched(fn) {
86
+ this.propagateOnTouch = fn;
87
+ }
88
+ get minimum() {
89
+ return this.minimumFormControl.getRawValue();
90
+ }
91
+ get maximum() {
92
+ return this.maximumFormControl.getRawValue();
93
+ }
94
+ get minFormControl() {
95
+ return this.rangeSliderFormGroup.controls.min;
96
+ }
97
+ get minimumFormControl() {
98
+ return this.rangeSliderFormGroup.controls.minimum;
99
+ }
100
+ get maximumFormControl() {
101
+ return this.rangeSliderFormGroup.controls.maximum;
102
+ }
103
+ get maxFormControl() {
104
+ return this.rangeSliderFormGroup.controls.max;
105
+ }
106
+ writeValue(inputRange) {
107
+ this.minFormControl.setValue(inputRange.min);
108
+ this.maxFormControl.setValue(inputRange.max);
109
+ }
110
+ change() {
111
+ if (this.propagateChange) {
112
+ const formValue = this.rangeSliderFormGroup.getRawValue();
113
+ this.propagateChange({
114
+ min: formValue.min,
115
+ max: formValue.max
116
+ });
117
+ }
118
+ }
119
+ validate() {
120
+ return this.rangeSliderFormGroup.errors;
121
+ }
122
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.10", ngImport: i0, type: RangeSliderComponent, deps: [{ token: i1.FormBuilder }], target: i0.ɵɵFactoryTarget.Component });
123
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.10", type: RangeSliderComponent, isStandalone: true, selector: "ap-range-slider", inputs: { min: "min", max: "max" }, providers: [
124
+ {
125
+ provide: NG_VALUE_ACCESSOR,
126
+ useExisting: forwardRef(() => RangeSliderComponent),
127
+ multi: true,
128
+ },
129
+ {
130
+ provide: NG_VALIDATORS,
131
+ useExisting: forwardRef(() => RangeSliderComponent),
132
+ multi: true
133
+ }
134
+ ], ngImport: i0, template: "<div class=\"slider-wrapper\" [formGroup]=\"rangeSliderFormGroup\">\n <div class=\"number\"><span>{{min}}</span></div>\n <mat-slider class=\"slider\" [min]=\"minimum\" [max]=\"maximum\">\n <input matSliderStartThumb formControlName=\"min\" (change)=\"change()\">\n <input matSliderEndThumb formControlName=\"max\" (change)=\"change()\">\n </mat-slider>\n <div class=\"number\">\n <span>{{max > maximum ? max + '+' : max}}</span>\n </div>\n</div>\n", styles: [":host{width:100%;height:52px}:host .slider-wrapper{display:flex;justify-content:space-between;align-items:center;gap:var(--ref-spacing-xxs)}:host .slider-wrapper .slider{flex-grow:2}:host .slider-wrapper .slider .mat-slider-thumb{background-color:var(--ref-color-electric-blue-100)}:host .slider-wrapper .number{flex-shrink:0;display:flex;justify-content:center;align-items:center;width:46px;height:36px;border:1px solid var(--ref-color-grey-20);border-radius:3px}::ng-deep .slider-wrapper .mat-mdc-slider .mdc-slider__thumb--focused .mdc-slider__thumb-knob{background-color:var(--ref-color-white);border:3px solid var(--ref-color-electric-blue-100)}::ng-deep .slider-wrapper .mat-mdc-slider .mdc-slider__thumb-knob{background-color:var(--ref-color-white);border:3px solid var(--ref-color-electric-blue-100);width:var(--ref-spacing-md);height:var(--ref-spacing-md)}::ng-deep .slider-wrapper .mat-mdc-slider .mdc-slider__track--active_fill{border-color:var(--ref-color-electric-blue-150)}::ng-deep .slider-wrapper .mat-mdc-slider .mdc-slider__track--active{height:var(--ref-spacing-xxxs)}::ng-deep .slider-wrapper .mat-mdc-slider .mdc-slider__track--inactive{background-color:var(--ref-color-grey-20)}\n"], dependencies: [{ kind: "ngmodule", type: MatSliderModule }, { kind: "component", type: i2.MatSlider, selector: "mat-slider", inputs: ["color", "disableRipple", "disabled", "discrete", "showTickMarks", "min", "max", "step", "displayWith"], exportAs: ["matSlider"] }, { kind: "directive", type: i2.MatSliderRangeThumb, selector: "input[matSliderStartThumb], input[matSliderEndThumb]", exportAs: ["matSliderRangeThumb"] }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i1.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i1.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i1.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }] });
135
+ }
136
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.10", ngImport: i0, type: RangeSliderComponent, decorators: [{
137
+ type: Component,
138
+ args: [{ selector: 'ap-range-slider', standalone: true, imports: [NgClass, MatSliderModule, ReactiveFormsModule], providers: [
139
+ {
140
+ provide: NG_VALUE_ACCESSOR,
141
+ useExisting: forwardRef(() => RangeSliderComponent),
142
+ multi: true,
143
+ },
144
+ {
145
+ provide: NG_VALIDATORS,
146
+ useExisting: forwardRef(() => RangeSliderComponent),
147
+ multi: true
148
+ }
149
+ ], template: "<div class=\"slider-wrapper\" [formGroup]=\"rangeSliderFormGroup\">\n <div class=\"number\"><span>{{min}}</span></div>\n <mat-slider class=\"slider\" [min]=\"minimum\" [max]=\"maximum\">\n <input matSliderStartThumb formControlName=\"min\" (change)=\"change()\">\n <input matSliderEndThumb formControlName=\"max\" (change)=\"change()\">\n </mat-slider>\n <div class=\"number\">\n <span>{{max > maximum ? max + '+' : max}}</span>\n </div>\n</div>\n", styles: [":host{width:100%;height:52px}:host .slider-wrapper{display:flex;justify-content:space-between;align-items:center;gap:var(--ref-spacing-xxs)}:host .slider-wrapper .slider{flex-grow:2}:host .slider-wrapper .slider .mat-slider-thumb{background-color:var(--ref-color-electric-blue-100)}:host .slider-wrapper .number{flex-shrink:0;display:flex;justify-content:center;align-items:center;width:46px;height:36px;border:1px solid var(--ref-color-grey-20);border-radius:3px}::ng-deep .slider-wrapper .mat-mdc-slider .mdc-slider__thumb--focused .mdc-slider__thumb-knob{background-color:var(--ref-color-white);border:3px solid var(--ref-color-electric-blue-100)}::ng-deep .slider-wrapper .mat-mdc-slider .mdc-slider__thumb-knob{background-color:var(--ref-color-white);border:3px solid var(--ref-color-electric-blue-100);width:var(--ref-spacing-md);height:var(--ref-spacing-md)}::ng-deep .slider-wrapper .mat-mdc-slider .mdc-slider__track--active_fill{border-color:var(--ref-color-electric-blue-150)}::ng-deep .slider-wrapper .mat-mdc-slider .mdc-slider__track--active{height:var(--ref-spacing-xxxs)}::ng-deep .slider-wrapper .mat-mdc-slider .mdc-slider__track--inactive{background-color:var(--ref-color-grey-20)}\n"] }]
150
+ }], ctorParameters: function () { return [{ type: i1.FormBuilder }]; }, propDecorators: { min: [{
151
+ type: Input
152
+ }], max: [{
153
+ type: Input
154
+ }] } });
155
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmFuZ2Utc2xpZGVyLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL2xpYnMvdWktY29tcG9uZW50cy9yYW5nZS1zbGlkZXIvc3JjL3JhbmdlLXNsaWRlci5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi9saWJzL3VpLWNvbXBvbmVudHMvcmFuZ2Utc2xpZGVyL3NyYy9yYW5nZS1zbGlkZXIuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQzFDLE9BQU8sRUFBRSxTQUFTLEVBQUUsVUFBVSxFQUFFLEtBQUssRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUM3RCxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDM0QsT0FBTyxFQU1ILGFBQWEsRUFDYixpQkFBaUIsRUFDakIsbUJBQW1CLEVBSW5CLFVBQVUsRUFDYixNQUFNLGdCQUFnQixDQUFDOzs7O0FBNkJ4QixNQUFNLE9BQU8sb0JBQW9CO0lBNEJUO0lBM0JwQixJQUNJLEdBQUcsQ0FBQyxHQUFXO1FBQ2YsSUFBSSxDQUFDLGtCQUFrQixDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUN0QyxJQUFJLENBQUMsTUFBTSxFQUFFLENBQUE7SUFDakIsQ0FBQztJQUVELElBQUksR0FBRztRQUNILE9BQU8sSUFBSSxDQUFDLGNBQWMsQ0FBQyxXQUFXLEVBQUUsQ0FBQztJQUM3QyxDQUFDO0lBRUQsSUFDSSxHQUFHLENBQUMsR0FBVztRQUNmLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLENBQUM7UUFDdEMsSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFBO0lBQ2pCLENBQUM7SUFFRCxJQUFJLEdBQUc7UUFDSCxPQUFPLElBQUksQ0FBQyxjQUFjLENBQUMsV0FBVyxFQUFFLENBQUM7SUFDN0MsQ0FBQztJQUVELG9C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cm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgQ29tcG9uZW50LCBmb3J3YXJkUmVmLCBJbnB1dCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgTWF0U2xpZGVyTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvc2xpZGVyJztcbmltcG9ydCB7XG4gICAgQWJzdHJhY3RDb250cm9sLFxuICAgIENvbnRyb2xWYWx1ZUFjY2Vzc29yLFxuICAgIEZvcm1CdWlsZGVyLFxuICAgIEZvcm1Db250cm9sLFxuICAgIEZvcm1Hcm91cCxcbiAgICBOR19WQUxJREFUT1JTLFxuICAgIE5HX1ZBTFVFX0FDQ0VTU09SLFxuICAgIFJlYWN0aXZlRm9ybXNNb2R1bGUsXG4gICAgVmFsaWRhdGlvbkVycm9ycyxcbiAgICBWYWxpZGF0b3IsXG4gICAgVmFsaWRhdG9yRm4sXG4gICAgVmFsaWRhdG9yc1xufSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5cbmV4cG9ydCB0eXBlIFJhbmdlU2xpZGVyID0geyBtaW46IG51bWJlciwgbWF4OiBudW1iZXIgfTtcbnR5cGUgUmFuZ2VGb3JtVmFsdWUgPSB7XG4gICAgbWluaW11bTogbnVtYmVyLFxuICAgIG1heGltdW06IG51bWJlcixcbiAgICBtaW46IG51bWJlcixcbiAgICBtYXg6IG51bWJlcixcbn07XG5cbkBDb21wb25lbnQoe1xuICAgIHNlbGVjdG9yOiAnYXAtcmFuZ2Utc2xpZGVyJyxcbiAgICB0ZW1wbGF0ZVVybDogJy4vcmFuZ2Utc2xpZGVyLmNvbXBvbmVudC5odG1sJyxcbiAgICBzdHlsZVVybHM6IFsnLi9yYW5nZS1zbGlkZXIuY29tcG9uZW50LnNjc3MnXSxcbiAgICBzdGFuZGFsb25lOiB0cnVlLFxuICAgIGltcG9ydHM6IFtOZ0NsYXNzLCBNYXRTbGlkZXJNb2R1bGUsIFJlYWN0aXZlRm9ybXNNb2R1bGVdLFxuICAgIHByb3ZpZGVyczogW1xuICAgICAgICB7XG4gICAgICAgICAgICBwcm92aWRlOiBOR19WQUxVRV9BQ0NFU1NPUixcbiAgICAgICAgICAgIHVzZUV4aXN0aW5nOiBmb3J3YXJkUmVmKCgpID0+IFJhbmdlU2xpZGVyQ29tcG9uZW50KSxcbiAgICAgICAgICAgIG11bHRpOiB0cnVlLFxuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgICBwcm92aWRlOiBOR19WQUxJREFUT1JTLFxuICAgICAgICAgICAgdXNlRXhpc3Rpbmc6IGZvcndhcmRSZWYoKCkgPT4gUmFuZ2VTbGlkZXJDb21wb25lbnQpLFxuICAgICAgICAgICAgbXVsdGk6IHRydWVcbiAgICAgICAgfVxuICAgIF0sXG59KVxuZXhwb3J0IGNsYXNzIFJhbmdlU2xpZGVyQ29tcG9uZW50IGltcGxlbWVudHMgQ29udHJvbFZhbHVlQWNjZXNzb3IsIFZhbGlkYXRvciB7XG4gICAgQElucHV0KClcbiAgICBzZXQgbWluKG1pbjogbnVtYmVyKSB7XG4gICAgICAgIHRoaXMubWluaW11bUZvcm1Db250cm9sLnNldFZhbHVlKG1pbik7XG4gICAgICAgIHRoaXMuY2hhbmdlKClcbiAgICB9XG5cbiAgICBnZXQgbWluKCk6IG51bWJlciB7XG4gICAgICAgIHJldHVybiB0aGlzLm1pbkZvcm1Db250cm9sLmdldFJhd1ZhbHVlKCk7XG4gICAgfVxuXG4gICAgQElucHV0KClcbiAgICBzZXQgbWF4KG1heDogbnVtYmVyKSB7XG4gICAgICAgIHRoaXMubWF4aW11bUZvcm1Db250cm9sLnNldFZhbHVlKG1heCk7XG4gICAgICAgIHRoaXMuY2hhbmdlKClcbiAgICB9XG5cbiAgICBnZXQgbWF4KCk6IG51bWJlciB7XG4gICAgICAgIHJldHVybiB0aGlzLm1heEZvcm1Db250cm9sLmdldFJhd1ZhbHVlKCk7XG4gICAgfVxuXG4gICAgcmFuZ2VTbGlkZXJGb3JtR3JvdXA6IEZvcm1Hcm91cDx7XG4gICAgICAgIG1heGltdW06IEZvcm1Db250cm9sPG51bWJlcj47XG4gICAgICAgIG1pbmltdW06IEZvcm1Db250cm9sPG51bWJlcj47XG4gICAgICAgIG1pbjogRm9ybUNvbnRyb2w8bnVtYmVyIHwgdW5kZWZpbmVkPjtcbiAgICAgICAgbWF4OiBGb3JtQ29udHJvbDxudW1iZXIgfCB1bmRlZmluZWQ+O1xuICAgIH0+O1xuXG4gICAgY29uc3RydWN0b3IocHJpdmF0ZSBmYjogRm9ybUJ1aWxkZXIpIHtcbiAgICAgICAgY29uc3QgbWluaW11bVZhbGlkYXRvcjogVmFsaWRhdG9yRm4gPSAoY29udHJvbDogQWJzdHJhY3RDb250cm9sKTogVmFsaWRhdGlvbkVycm9ycyB8IG51bGwgPT4ge1xuICAgICAgICAgICAgbGV0IGVycm9yczogVmFsaWRhdGlvbkVycm9ycyB8IG51bGwgPSBudWxsO1xuICAgICAgICAgICAgY29uc3QgcmFuZ2VGb3JtVmFsdWUgPSBjb250cm9sLmdldFJhd1ZhbHVlKCkgYXMgUmFuZ2VGb3JtVmFsdWU7XG4gICAgICAgICAgICBpZiAocmFuZ2VGb3JtVmFsdWUubWluICYmIHJhbmdlRm9ybVZhbHVlLm1pbmltdW0gJiYgKHJhbmdlRm9ybVZhbHVlLm1pbiA8IHJhbmdlRm9ybVZhbHVlLm1pbmltdW0pKSB7XG4gICAgICAgICAgICAgICAgZXJyb3JzID0ge1xuICAgICAgICAgICAgICAgICAgICBtaW5pbXVtRXJyb3I6IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGV4cGVjdGVkTWluOiByYW5nZUZvcm1WYWx1ZS5taW5pbXVtLFxuICAgICAgICAgICAgICAgICAgICAgICAgY3VycmVudE1pbjogcmFuZ2VGb3JtVmFsdWUubWluXG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gZXJyb3JzO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgbWluaW11bVJlcXVpcmVkVmFsaWRhdG9yOiBWYWxpZGF0b3JGbiA9IChjb250cm9sOiBBYnN0cmFjdENvbnRyb2wpOiBWYWxpZGF0aW9uRXJyb3JzIHwgbnVsbCA9PiB7XG4gICAgICAgICAgICBsZXQgZXJyb3JzOiBWYWxpZGF0aW9uRXJyb3JzIHwgbnVsbCA9IG51bGw7XG4gICAgICAgICAgICBjb25zdCByYW5nZUZvcm1WYWx1ZSA9IGNvbnRyb2wuZ2V0UmF3VmFsdWUoKSBhcyBSYW5nZUZvcm1WYWx1ZTtcbiAgICAgICAgICAgIGlmIChyYW5nZUZvcm1WYWx1ZS5taW4gPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICAgICAgZXJyb3JzID0ge1xuICAgICAgICAgICAgICAgICAgICBtaW5pbXVtUmVxdWlyZWQ6IHRydWVcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gZXJyb3JzO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgbWF4aW11bVZhbGlkYXRvcjogVmFsaWRhdG9yRm4gPSAoY29udHJvbDogQWJzdHJhY3RDb250cm9sKTogVmFsaWRhdGlvbkVycm9ycyB8IG51bGwgPT4ge1xuICAgICAgICAgICAgbGV0IGVycm9yczogVmFsaWRhdGlvbkVycm9ycyB8IG51bGwgPSBudWxsO1xuICAgICAgICAgICAgY29uc3QgcmFuZ2VGb3JtVmFsdWUgPSBjb250cm9sLmdldFJhd1ZhbHVlKCkgYXMgUmFuZ2VGb3JtVmFsdWU7XG4gICAgICAgICAgICBpZiAocmFuZ2VGb3JtVmFsdWUubWF4ICYmIHJhbmdlRm9ybVZhbHVlLm1heGltdW0gJiYgKHJhbmdlRm9ybVZhbHVlLm1heCA+IHJhbmdlRm9ybVZhbHVlLm1heGltdW0pKSB7XG4gICAgICAgICAgICAgICAgZXJyb3JzID0ge1xuICAgICAgICAgICAgICAgICAgICBtYXhpbXVtRXJyb3I6IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGV4cGVjdGVkTWF4OiByYW5nZUZvcm1WYWx1ZS5tYXhpbXVtLFxuICAgICAgICAgICAgICAgICAgICAgICAgY3VycmVudE1heDogcmFuZ2VGb3JtVmFsdWUubWF4XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gZXJyb3JzO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgbWF4aW11bVJlcXVpcmVkVmFsaWRhdG9yOiBWYWxpZGF0b3JGbiA9IChjb250cm9sOiBBYnN0cmFjdENvbnRyb2wpOiBWYWxpZGF0aW9uRXJyb3JzIHwgbnVsbCA9PiB7XG4gICAgICAgICAgICBsZXQgZXJyb3JzOiBWYWxpZGF0aW9uRXJyb3JzIHwgbnVsbCA9IG51bGw7XG4gICAgICAgICAgICBjb25zdCByYW5nZUZvcm1WYWx1ZSA9IGNvbnRyb2wuZ2V0UmF3VmFsdWUoKSBhcyBSYW5nZUZvcm1WYWx1ZTtcbiAgICAgICAgICAgIGlmIChyYW5nZUZvcm1WYWx1ZS5tYXggPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICAgICAgZXJyb3JzID0ge1xuICAgICAgICAgICAgICAgICAgICBtYXhpbXVtUmVxdWlyZWQ6IHRydWVcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gZXJyb3JzO1xuICAgICAgICB9O1xuXG4gICAgICAgIHRoaXMucmFuZ2VTbGlkZXJGb3JtR3JvdXAgPSBmYi5ncm91cCh7XG4gICAgICAgICAgICBtYXhpbXVtOiBmYi5jb250cm9sKDAsIHsgbm9uTnVsbGFibGU6IHRydWUgfSksXG4gICAgICAgICAgICBtaW5pbXVtOiBmYi5jb250cm9sKDEwMCwgeyBub25OdWxsYWJsZTogdHJ1ZSB9KSxcbiAgICAgICAgICAgIG1pbjogZmIuY29udHJvbDxudW1iZXIgfCB1bmRlZmluZWQ+KHVuZGVmaW5lZCwgeyBub25OdWxsYWJsZTogdHJ1ZSB9KSxcbiAgICAgICAgICAgIG1heDogZmIuY29udHJvbDxudW1iZXIgfCB1bmRlZmluZWQ+KHVuZGVmaW5lZCwgeyBub25OdWxsYWJsZTogdHJ1ZSB9KSxcbiAgICAgICAgfSwgeyB2YWxpZGF0b3JzOiBWYWxpZGF0b3JzLmNvbXBvc2UoW21pbmltdW1SZXF1aXJlZFZhbGlkYXRvciwgbWF4aW11bVJlcXVpcmVkVmFsaWRhdG9yLCBtaW5pbXVtVmFsaWRhdG9yLCBtYXhpbXVtVmFsaWRhdG9yXSkgfSlcbiAgICB9XG5cbiAgICBwcm9wYWdhdGVDaGFuZ2U6ICgodjogUmFuZ2VTbGlkZXIpID0+IHZvaWQpIHwgbnVsbCA9IG51bGw7XG5cbiAgICBwcm9wYWdhdGVPblRvdWNoOiAoKCkgPT4gdm9pZCkgfCBudWxsID0gbnVsbDtcblxuICAgIHJlZ2lzdGVyT25DaGFuZ2UoZm46ICh2OiBSYW5nZVNsaWRlcikgPT4gdm9pZCk6IHZvaWQge1xuICAgICAgICB0aGlzLnByb3BhZ2F0ZUNoYW5nZSA9IGZuO1xuICAgIH1cblxuICAgIHJlZ2lzdGVyT25Ub3VjaGVkKGZuOiAoKSA9PiB2b2lkKTogdm9pZCB7XG4gICAgICAgIHRoaXMucHJvcGFnYXRlT25Ub3VjaCA9IGZuXG4gICAgfVxuXG4gICAgZ2V0IG1pbmltdW0oKTogbnVtYmVyIHtcbiAgICAgICAgcmV0dXJuIHRoaXMubWluaW11bUZvcm1Db250cm9sLmdldFJhd1ZhbHVlKCk7XG4gICAgfVxuXG4gICAgZ2V0IG1heGltdW0oKTogbnVtYmVyIHtcbiAgICAgICAgcmV0dXJuIHRoaXMubWF4aW11bUZvcm1Db250cm9sLmdldFJhd1ZhbHVlKCk7XG4gICAgfVxuXG4gICAgZ2V0IG1pbkZvcm1Db250cm9sKCk6IEZvcm1Db250cm9sIHtcbiAgICAgICAgcmV0dXJuIHRoaXMucmFuZ2VTbGlkZXJGb3JtR3JvdXAuY29udHJvbHMubWluO1xuICAgIH1cblxuICAgIGdldCBtaW5pbXVtRm9ybUNvbnRyb2woKTogRm9ybUNvbnRyb2wge1xuICAgICAgICByZXR1cm4gdGhpcy5yYW5nZVNsaWRlckZvcm1Hcm91cC5jb250cm9scy5taW5pbXVtO1xuICAgIH1cblxuICAgIGdldCBtYXhpbXVtRm9ybUNvbnRyb2woKTogRm9ybUNvbnRyb2wge1xuICAgICAgICByZXR1cm4gdGhpcy5yYW5nZVNsaWRlckZvcm1Hcm91cC5jb250cm9scy5tYXhpbXVtO1xuICAgIH1cblxuICAgIGdldCBtYXhGb3JtQ29udHJvbCgpOiBGb3JtQ29udHJvbCB7XG4gICAgICAgIHJldHVybiB0aGlzLnJhbmdlU2xpZGVyRm9ybUdyb3VwLmNvbnRyb2xzLm1heDtcbiAgICB9XG5cbiAgICB3cml0ZVZhbHVlKGlucHV0UmFuZ2U6IFJhbmdlU2xpZGVyKTogdm9pZCB7XG4gICAgICAgIHRoaXMubWluRm9ybUNvbnRyb2wuc2V0VmFsdWUoaW5wdXRSYW5nZS5taW4pXG4gICAgICAgIHRoaXMubWF4Rm9ybUNvbnRyb2wuc2V0VmFsdWUoaW5wdXRSYW5nZS5tYXgpXG4gICAgfVxuXG4gICAgY2hhbmdlKCk6IHZvaWQge1xuICAgICAgICBpZiAodGhpcy5wcm9wYWdhdGVDaGFuZ2UpIHtcbiAgICAgICAgICAgIGNvbnN0IGZvcm1WYWx1ZSA9IHRoaXMucmFuZ2VTbGlkZXJGb3JtR3JvdXAuZ2V0UmF3VmFsdWUoKTtcbiAgICAgICAgICAgIHRoaXMucHJvcGFnYXRlQ2hhbmdlKHtcbiAgICAgICAgICAgICAgICBtaW46IGZvcm1WYWx1ZS5taW4sXG4gICAgICAgICAgICAgICAgbWF4OiBmb3JtVmFsdWUubWF4XG4gICAgICAgICAgICB9IGFzIFJhbmdlU2xpZGVyKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHZhbGlkYXRlKCk6IFZhbGlkYXRpb25FcnJvcnMgfCBudWxsIHtcbiAgICAgICAgcmV0dXJuIHRoaXMucmFuZ2VTbGlkZXJGb3JtR3JvdXAuZXJyb3JzO1xuICAgIH1cbn1cbiIsIjxkaXYgY2xhc3M9XCJzbGlkZXItd3JhcHBlclwiIFtmb3JtR3JvdXBdPVwicmFuZ2VTbGlkZXJGb3JtR3JvdXBcIj5cbiAgICA8ZGl2IGNsYXNzPVwibnVtYmVyXCI+PHNwYW4+e3ttaW59fTwvc3Bhbj48L2Rpdj5cbiAgICA8bWF0LXNsaWRlciBjbGFzcz1cInNsaWRlclwiIFttaW5dPVwibWluaW11bVwiIFttYXhdPVwibWF4aW11bVwiPlxuICAgICAgICA8aW5wdXQgbWF0U2xpZGVyU3RhcnRUaHVtYiBmb3JtQ29udHJvbE5hbWU9XCJtaW5cIiAoY2hhbmdlKT1cImNoYW5nZSgpXCI+XG4gICAgICAgIDxpbnB1dCBtYXRTbGlkZXJFbmRUaHVtYiBmb3JtQ29udHJvbE5hbWU9XCJtYXhcIiAoY2hhbmdlKT1cImNoYW5nZSgpXCI+XG4gICAgPC9tYXQtc2xpZGVyPlxuICAgIDxkaXYgY2xhc3M9XCJudW1iZXJcIj5cbiAgICAgICAgPHNwYW4+e3ttYXggPiBtYXhpbXVtID8gbWF4ICsgJysnIDogbWF4fX08L3NwYW4+XG4gICAgPC9kaXY+XG48L2Rpdj5cbiJdfQ==