@fundamental-ngx/core 0.61.2-rc.8 → 0.61.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/fesm2022/fundamental-ngx-core-action-sheet.mjs +2 -3
- package/fesm2022/fundamental-ngx-core-action-sheet.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-core-avatar-group.mjs +4 -6
- package/fesm2022/fundamental-ngx-core-avatar-group.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-core-breadcrumb.mjs +13 -11
- package/fesm2022/fundamental-ngx-core-breadcrumb.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-core-busy-indicator.mjs +7 -5
- package/fesm2022/fundamental-ngx-core-busy-indicator.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-core-calendar.mjs +31 -35
- package/fesm2022/fundamental-ngx-core-calendar.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-core-carousel.mjs +2 -2
- package/fesm2022/fundamental-ngx-core-carousel.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-core-combobox.mjs +3 -5
- package/fesm2022/fundamental-ngx-core-combobox.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-core-date-picker.mjs +2 -2
- package/fesm2022/fundamental-ngx-core-date-picker.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-core-datetime-picker.mjs +2 -2
- package/fesm2022/fundamental-ngx-core-datetime-picker.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-core-datetime.mjs +13 -7
- package/fesm2022/fundamental-ngx-core-datetime.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-core-dynamic-page.mjs +13 -13
- package/fesm2022/fundamental-ngx-core-dynamic-page.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-core-feed-list-item.mjs +2 -2
- package/fesm2022/fundamental-ngx-core-feed-list-item.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-core-form.mjs +1 -1
- package/fesm2022/fundamental-ngx-core-form.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-core-grid-list.mjs +4 -4
- package/fesm2022/fundamental-ngx-core-grid-list.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-core-info-label.mjs +2 -2
- package/fesm2022/fundamental-ngx-core-info-label.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-core-inline-help.mjs +65 -59
- package/fesm2022/fundamental-ngx-core-inline-help.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-core-link.mjs +2 -2
- package/fesm2022/fundamental-ngx-core-link.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-core-menu.mjs +1 -3
- package/fesm2022/fundamental-ngx-core-menu.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-core-message-strip.mjs +49 -44
- package/fesm2022/fundamental-ngx-core-message-strip.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-core-multi-combobox.mjs +17 -23
- package/fesm2022/fundamental-ngx-core-multi-combobox.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-core-multi-input.mjs +2 -2
- package/fesm2022/fundamental-ngx-core-multi-input.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-core-nested-list.mjs +21 -22
- package/fesm2022/fundamental-ngx-core-nested-list.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-core-notification.mjs +16 -13
- package/fesm2022/fundamental-ngx-core-notification.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-core-object-identifier.mjs +2 -2
- package/fesm2022/fundamental-ngx-core-object-identifier.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-core-object-number.mjs +2 -2
- package/fesm2022/fundamental-ngx-core-object-number.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-core-object-status.mjs +2 -2
- package/fesm2022/fundamental-ngx-core-object-status.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-core-overflow-layout.mjs +2 -2
- package/fesm2022/fundamental-ngx-core-overflow-layout.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-core-pagination.mjs +14 -11
- package/fesm2022/fundamental-ngx-core-pagination.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-core-popover.mjs +6 -0
- package/fesm2022/fundamental-ngx-core-popover.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-core-product-switch.mjs +2 -2
- package/fesm2022/fundamental-ngx-core-product-switch.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-core-rating-indicator.mjs +7 -4
- package/fesm2022/fundamental-ngx-core-rating-indicator.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-core-segmented-button.mjs +11 -10
- package/fesm2022/fundamental-ngx-core-segmented-button.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-core-select.mjs +6 -7
- package/fesm2022/fundamental-ngx-core-select.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-core-shellbar.mjs +6 -6
- package/fesm2022/fundamental-ngx-core-shellbar.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-core-slider.mjs +6 -6
- package/fesm2022/fundamental-ngx-core-slider.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-core-split-button.mjs +2 -2
- package/fesm2022/fundamental-ngx-core-split-button.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-core-step-input.mjs +2 -2
- package/fesm2022/fundamental-ngx-core-step-input.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-core-switch.mjs +2 -2
- package/fesm2022/fundamental-ngx-core-switch.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-core-tabs.mjs +2 -2
- package/fesm2022/fundamental-ngx-core-tabs.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-core-text.mjs +2 -2
- package/fesm2022/fundamental-ngx-core-text.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-core-time-picker.mjs +29 -4
- package/fesm2022/fundamental-ngx-core-time-picker.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-core-time.mjs +4 -4
- package/fesm2022/fundamental-ngx-core-time.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-core-token.mjs +15 -12
- package/fesm2022/fundamental-ngx-core-token.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-core-toolbar.mjs +3 -5
- package/fesm2022/fundamental-ngx-core-toolbar.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-core-tree.mjs +4 -4
- package/fesm2022/fundamental-ngx-core-tree.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-core-upload-collection.mjs +4 -4
- package/fesm2022/fundamental-ngx-core-upload-collection.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-core-user-menu.mjs +3 -5
- package/fesm2022/fundamental-ngx-core-user-menu.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-core-vertical-navigation.mjs +2 -2
- package/fesm2022/fundamental-ngx-core-vertical-navigation.mjs.map +1 -1
- package/package.json +3 -3
- package/types/fundamental-ngx-core-breadcrumb.d.ts +5 -5
- package/types/fundamental-ngx-core-busy-indicator.d.ts +3 -3
- package/types/fundamental-ngx-core-combobox.d.ts +2 -4
- package/types/fundamental-ngx-core-datetime.d.ts +5 -1
- package/types/fundamental-ngx-core-dynamic-page.d.ts +2 -1
- package/types/fundamental-ngx-core-inline-help.d.ts +45 -24
- package/types/fundamental-ngx-core-menu.d.ts +0 -2
- package/types/fundamental-ngx-core-message-strip.d.ts +12 -3
- package/types/fundamental-ngx-core-multi-combobox.d.ts +1 -1
- package/types/fundamental-ngx-core-nested-list.d.ts +10 -10
- package/types/fundamental-ngx-core-notification.d.ts +7 -5
- package/types/fundamental-ngx-core-pagination.d.ts +4 -3
- package/types/fundamental-ngx-core-rating-indicator.d.ts +2 -3
- package/types/fundamental-ngx-core-segmented-button.d.ts +5 -3
- package/types/fundamental-ngx-core-slider.d.ts +1 -1
- package/types/fundamental-ngx-core-time-picker.d.ts +17 -1
- package/types/fundamental-ngx-core-token.d.ts +4 -4
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"fundamental-ngx-core-datetime.mjs","sources":["../../../../libs/core/datetime/datetime-adapter.ts","../../../../libs/core/datetime/datetime-formats.ts","../../../../libs/core/datetime/datetime-format.pipes.ts","../../../../libs/core/datetime/datetime-utils.ts","../../../../libs/core/datetime/fd-date.utils.ts","../../../../libs/core/datetime/fd-date.ts","../../../../libs/core/datetime/fd-date-formats.ts","../../../../libs/core/datetime/fd-datetime-adapter.ts","../../../../libs/core/datetime/fd-datetime-pipes.module.ts","../../../../libs/core/datetime/fd-datetime.module.ts","../../../../libs/core/datetime/provide-date-time.ts","../../../../libs/core/datetime/fundamental-ngx-core-datetime.ts"],"sourcesContent":["import { Nullable } from '@fundamental-ngx/cdk/utils';\nimport { Observable, Subject } from 'rxjs';\n\n/**\n * Datetime Adapter is an abstract class that must be implemented by each adapter.\n * It's used to encapsulate a date/time manipulations as result\n * others places that uses it remain date type agnostic.\n *\n */\nexport abstract class DatetimeAdapter<D> {\n /**\n * Gets the year component of the given date.\n * @param date The date to extract the year from.\n * @returns The year number.\n */\n abstract getYear(date: D): number;\n\n /**\n * Gets the month of the given date.\n * @param date The date to extract the month from.\n * @returns The month number (min 1, max 12).\n */\n abstract getMonth(date: D): number;\n\n /**\n * Gets the day of month of the given date.\n * @param date The date to extract the date of the month from.\n * @returns The date number (min 1, max 31).\n */\n abstract getDate(date: D): number;\n\n /**\n * Gets the day of the week component of the given date.\n * @param date The date to extract the day of the week from.\n * @returns The day of week number (min 1, max 7, 1 = Sunday).\n */\n abstract getDayOfWeek(date: D): number;\n\n /**\n * Gets hours of the given date.\n * @param date The date to extract the hours from.\n * @returns The hours number (min 0, max 23).\n */\n abstract getHours(date: D): number;\n\n /**\n * Gets minutes of the given date.\n * @param date The date to extract the minutes from.\n * @returns The minutes number (min 0, max 59).\n */\n abstract getMinutes(date: D): number;\n\n /**\n * Gets seconds of the given date.\n * @param date The date to extract the seconds from.\n * @returns The seconds number (min 0, max 59).\n */\n abstract getSeconds(date: D): number;\n\n /**\n * Set hours.\n * @param date The date to set hours to.\n * @param hours\n * @returns The new date instance.\n */\n abstract setHours(date: D, hours: number): D;\n\n /**\n * Set minutes.\n * @param date The date to set minutes to.\n * @param minutes\n * @returns The new date instance.\n */\n abstract setMinutes(date: D, minutes: number): D;\n\n /**\n * Set seconds.\n * @param date The date to set seconds to.\n * @param seconds\n * @returns The new date instance.\n */\n abstract setSeconds(date: D, seconds: number): D;\n\n /**\n * Gets week number of the given date\n * @param date The date to extract the week number from.\n * @returns The week number (min 1, max 53).\n */\n abstract getWeekNumber(date: D): number;\n\n /**\n * Gets a list of names for the months.\n * @param style The naming style (e.g. long = 'January', short = 'Jan', narrow = 'J').\n * @returns An ordered list of all month names, starting with January.\n */\n abstract getMonthNames(style: 'long' | 'short' | 'narrow'): string[];\n\n /**\n * Gets a list of names for the dates of the month.\n * @returns An ordered list of all date of the month names, starting with '1'.\n */\n abstract getDateNames(): string[];\n\n /**\n * Gets a list of names for the days of the week.\n * @param style The naming style (e.g. long = 'Sunday', short = 'Sun', narrow = 'S').\n * @returns An ordered list of all weekday names, starting with Sunday.\n */\n abstract getDayOfWeekNames(style: 'long' | 'short' | 'narrow'): string[];\n\n /**\n * Gets the name for the year of the given date.\n * @param date The date to get the year name from.\n * @returns The name of the given year (e.g. '2020').\n */\n abstract getYearName(date: D): string;\n\n /**\n * Gets the name for the week of the given date.\n * @param date The date to get the week name from.\n * @returns The name of the the week.\n */\n abstract getWeekName(date: D): string;\n\n /**\n * Gets a list of hour names.\n * @returns An ordered list of all hours (0 - 24).\n */\n abstract getHourNames(options: { twoDigit: boolean; meridian: boolean }): string[];\n\n /**\n * Gets a list of minute names.\n * @param options Configuration options for minute names\n * @param options.twoDigit Whether to format minutes with two digits (e.g., '05' vs '5')\n * @param options.minuteStep The interval between minutes (e.g., 1 for every minute, 5 for 5-minute intervals, 15 for 15-minute intervals). Defaults to 1.\n * @returns An ordered list of minute names based on the step interval.\n */\n abstract getMinuteNames(options: { twoDigit: boolean; minuteStep?: number }): string[];\n\n /**\n * Gets a list of second names.\n * @returns An ordered list of all hours (0 - 24).\n */\n abstract getSecondNames(options: { twoDigit: boolean }): string[];\n\n /**\n * Gets a list of day periods.\n * @returns List of day periods, starts from AM ['AM', 'PM'].\n */\n abstract getDayPeriodNames(): [string, string];\n\n /**\n * Gets the first day of the week.\n * @returns The first day of the week (0-indexed, 0 = Sunday).\n */\n abstract getFirstDayOfWeek(): number;\n\n /**\n * Gets the number of days in the month of the given date.\n * @param date The date whose month should be checked.\n * @returns The number of days in the month of the given date.\n */\n abstract getNumDaysInMonth(date: D): number;\n\n /**\n * Parses a date from a user-provided value.\n * @param value The value to parse.\n * @param parseFormat The expected format of the value being parsed\n * (type is implementation-dependent).\n * @returns The parsed date.\n */\n abstract parse(value: unknown, parseFormat: unknown): D | null;\n\n /**\n * Formats a date as a string according to the given format.\n * @param date The value to format.\n * @param displayFormat The format to use to display the date as a string.\n * @returns The formatted date string.\n */\n abstract format(date: Nullable<D>, displayFormat: unknown): string;\n\n /**\n * Creates a date with the given year, month, and date.\n * @param year The full year of the date. (e.g. 1989).\n * @param month The month of the date (1 = January). Must be an integer 1 - 12.\n * @param date The month date. Must be an integer 1 - length of the given month.\n * @returns The new date, or null if invalid.\n */\n abstract createDate(year: number, month?: number, date?: number): D;\n\n /**\n * Gets today's date where time value is set to 0\n * @returns Today's date.\n */\n abstract today(): D;\n\n /**\n * Gets date and time at this moment.\n * @returns date and time at this moment.\n */\n abstract now(): D;\n\n /**\n * Adds the given number of years to the date. Years are counted as if flipping 12 pages on the\n * calendar for each year and then finding the closest date in the new month. For example when\n * adding 1 year to Feb 29, 2016, the resulting date will be Feb 28, 2017.\n * @param date The date to add years to.\n * @param years The number of years to add (may be negative).\n * @returns A new date equal to the given one with the specified number of years added.\n */\n abstract addCalendarYears(date: D, years: number): D;\n\n /**\n * Adds the given number of months to the date. Months are counted as if flipping a page on the\n * calendar for each month and then finding the closest date in the new month. For example when\n * adding 1 month to Jan 31, 2017, the resulting date will be Feb 28, 2017.\n * @param date The date to add months to.\n * @param months The number of months to add (may be negative).\n * @returns A new date equal to the given one with the specified number of months added.\n */\n abstract addCalendarMonths(date: D, months: number): D;\n\n /**\n * Adds the given number of days to the date. Days are counted as if moving one cell on the\n * calendar for each day.\n * @param date The date to add days to.\n * @param days The number of days to add (may be negative).\n * @returns A new date equal to the given one with the specified number of days added.\n */\n abstract addCalendarDays(date: D, days: number): D;\n\n /**\n * Clones the given date.\n * @param date The date to clone\n * @returns A new date equal to the given date.\n */\n abstract clone(date: D): D;\n\n /**\n * Method that check equality of 2 dates.\n * Does not take into account time value\n * @param date1 The first date to compare with\n * @param date2 The second date to compare with\n * @returns If dates are equal or not\n */\n abstract datesEqual(date1: Nullable<D>, date2: Nullable<D>): boolean;\n\n /**\n * Method that check equality of 2 dates taking into account time value as well\n * @param date1 The first date to compare with\n * @param date2 The second date to compare with\n * @returns If dates are equal or not\n */\n abstract dateTimesEqual(date1: Nullable<D>, date2: Nullable<D>): boolean;\n\n /**\n * Method to check if date is between 2 dates\n * @param dateToCheck The date to check if it's in a range\n * @param startDate The start date of a range\n * @param endDate The end date of a range\n * @returns If date is in a given date range\n */\n abstract isBetween(dateToCheck: D, startDate: D, endDate: D): boolean;\n\n /**\n * Method that checks validity of current date.\n * @param date The date to be checked\n */\n abstract isValid(date: Nullable<D>): date is D;\n\n /**\n * Gets the RFC 3339 compatible string (https://tools.ietf.org/html/rfc3339) for the given date.\n * This method is used to generate date strings that are compatible with native HTML attributes\n * such as the `min` or `max` attribute of an `<input>`.\n * @param date The date to get the ISO date string for.\n * @returns The ISO date string date string.\n */\n abstract toIso8601(date: D): string;\n\n /**\n * Format option includes period info.\n * @param displayFormat The format to use to display the date as a string.\n * @returns If time format includes period info.\n */\n abstract isTimeFormatIncludesDayPeriod(displayFormat: unknown): boolean;\n\n /**\n * Format option includes hours info.\n * @param displayFormat The format to use to display the date as a string.\n * @returns If time format includes minutes info.\n */\n abstract isTimeFormatIncludesHours(displayFormat: unknown): boolean;\n\n /**\n * Format option includes minutes info.\n * @param displayFormat The format to use to display the date as a string.\n * @returns If time format includes minutes info.\n */\n abstract isTimeFormatIncludesMinutes(displayFormat: unknown): boolean;\n\n /**\n * Format option includes seconds info.\n * @param displayFormat The format to use to display the date as a string.\n * @returns If time format includes seconds info.\n */\n abstract isTimeFormatIncludesSeconds(displayFormat: unknown): boolean;\n\n /**\n * @param date The date being referenced.\n * @returns String representing how much time has passed since the date param.\n */\n abstract fromNow?(date: D): string;\n\n /** locale changes stream */\n readonly localeChanges: Observable<void>;\n\n /** current locale */\n protected locale: string;\n\n /** @hidden */\n private _localeChanges: Subject<void> = new Subject();\n\n protected constructor() {\n this.localeChanges = this._localeChanges.asObservable();\n }\n /**\n * Sets the locale used for all dates.\n * @param locale The new locale.\n */\n setLocale(locale: string): void {\n this.locale = locale;\n this._localeChanges.next();\n }\n\n /**\n * Set hours, minutes and seconds at once.\n * @param date The date to set time to.\n * @param hours\n * @param minutes\n * @param seconds\n * @returns The new date instance.\n */\n setTime(date: D, hours: number, minutes: number, seconds: number): D {\n date = this.setHours(date, hours);\n date = this.setMinutes(date, minutes);\n date = this.setSeconds(date, seconds);\n return date;\n }\n\n /**\n * Get Amount of weeks in given month/year\n * @param year The year of the date\n * @param month The month of the date\n * @param firstDayOfWeek The first day of week. 1 - Sunday, 2 - Monday...\n * @returns Number of weeks in the given month\n */\n getAmountOfWeeks(year: number, month: number, firstDayOfWeek: number): number {\n const firstOfMonth = new Date(year, month - 1, 1);\n const lastOfMonth = new Date(year, month, 0);\n\n const dayOffset = (firstOfMonth.getDay() - firstDayOfWeek + 8) % 7;\n const used = dayOffset + lastOfMonth.getDate();\n\n return Math.ceil(used / 7);\n }\n\n /**\n * Compares two dates.\n * @param first The first date to compare.\n * @param second The second date to compare.\n * @returns 0 if the dates are equal, a number less than 0 if the first date is earlier,\n * a number greater than 0 if the first date is later.\n */\n compareDate(first: D, second: D): number {\n return (\n this.getYear(first) - this.getYear(second) ||\n this.getMonth(first) - this.getMonth(second) ||\n this.getDate(first) - this.getDate(second) ||\n this.getHours(first) - this.getHours(second) ||\n this.getMinutes(first) - this.getMinutes(second) ||\n this.getSeconds(first) - this.getSeconds(second)\n );\n }\n}\n","import { InjectionToken } from '@angular/core';\n\n/**\n * DateTimeFormats is intended to keep options\n * related to date-time formatting / parsing\n *\n */\nexport interface DateTimeFormats {\n parse: {\n dateInput: unknown;\n timeInput: unknown;\n dateTimeInput: unknown;\n };\n display: {\n dateInput: unknown;\n timeInput: unknown;\n dateTimeInput: unknown;\n\n dateA11yLabel: unknown;\n monthA11yLabel: unknown;\n yearA11yLabel: unknown;\n };\n rangeDelimiter: string;\n}\n\n/**\n * DateTimeFormats injection token\n */\nexport const DATE_TIME_FORMATS = new InjectionToken<DateTimeFormats>('date-formats');\n","import { Inject, Optional, Pipe, PipeTransform, Signal, inject } from '@angular/core';\nimport { FD_LANGUAGE_SIGNAL, FdLanguage, FdLanguageKeyIdentifier, TranslationResolver } from '@fundamental-ngx/i18n';\nimport { DatetimeAdapter } from './datetime-adapter';\nimport { DATE_TIME_FORMATS, DateTimeFormats } from './datetime-formats';\n\n@Pipe({\n name: 'dateFormat',\n standalone: true\n})\nexport class DateFormatPipe<D> implements PipeTransform {\n /** @hidden */\n constructor(\n private _dateTimeAdapter: DatetimeAdapter<D>,\n @Optional() @Inject(DATE_TIME_FORMATS) private _dateTimeFormats: DateTimeFormats\n ) {}\n\n /** Format date object */\n transform(date: D, noDateMessage = ''): string {\n if (date) {\n return this._dateTimeAdapter.format(date, this._dateTimeFormats.display.dateInput);\n } else {\n return noDateMessage;\n }\n }\n}\n\n@Pipe({\n name: 'dateTimeFormat',\n standalone: true\n})\nexport class DateTimeFormatPipe<D> implements PipeTransform {\n /** @hidden */\n constructor(\n private _dateTimeAdapter: DatetimeAdapter<D>,\n @Optional() @Inject(DATE_TIME_FORMATS) private _dateTimeFormats: DateTimeFormats\n ) {}\n\n /** Format date object */\n transform(date: D, noDateMessage = ''): string {\n if (date) {\n return this._dateTimeAdapter.format(date, this._dateTimeFormats.display.dateTimeInput);\n } else {\n return noDateMessage;\n }\n }\n}\n\n@Pipe({\n name: 'dateFromNow',\n standalone: true\n})\nexport class DateFromNowPipe<D> implements PipeTransform {\n /** @hidden */\n constructor(private _dateTimeAdapter: DatetimeAdapter<D>) {}\n\n /** Format date object */\n transform(date: D, noDateMessage = ''): string {\n if (this._dateTimeAdapter.fromNow && typeof this._dateTimeAdapter.fromNow === 'function') {\n if (date) {\n return this._dateTimeAdapter.fromNow(date);\n } else {\n return noDateMessage;\n }\n } else {\n console.warn('No fromNow function provided to the DatetimeAdapter');\n return '';\n }\n }\n}\n\n@Pipe({\n name: 'dayPeriodFormat',\n standalone: true\n})\nexport class DayPeriodFormatPipe<D> implements PipeTransform {\n /** @hidden */\n constructor(\n private _dateTimeAdapter: DatetimeAdapter<D>,\n @Optional() @Inject(DATE_TIME_FORMATS) private _dateTimeFormats: DateTimeFormats\n ) {}\n\n /** Format date object for day period */\n transform(date: D, customFormat: any = {}, noDateMessage = ''): string {\n if (!date) {\n return noDateMessage;\n }\n\n return this._dateTimeAdapter.format(date, customFormat);\n }\n}\n\n@Pipe({\n name: 'translateDayPeriod',\n standalone: true,\n pure: false // required to update the value when the observable is resolved\n})\nexport class TranslateDayPeriodPipe implements PipeTransform {\n /** @hidden */\n private readonly _translationResolver = new TranslationResolver();\n /** @hidden */\n private readonly _currentLanguageSignal: Signal<FdLanguage> = inject(FD_LANGUAGE_SIGNAL);\n\n /** Format date object for day period */\n transform(value: string | null): string | null {\n if (!value) {\n return value;\n }\n\n const dayPeriodPattern = /(coreTime\\.\\w+Label)/;\n const match = value.match(dayPeriodPattern);\n\n if (match?.[0]) {\n const currentLanguage = this._currentLanguageSignal();\n const translatedValue = this._translationResolver.resolve(\n currentLanguage,\n match[0] as FdLanguageKeyIdentifier\n );\n return translatedValue ? value.replace(dayPeriodPattern, translatedValue) : value;\n }\n\n // If no day period pattern is found, return the original value\n return value;\n }\n}\n","/**\n * Converts a given time string to a desired format.\n *\n * @param {string} inputStr - The input time string to be converted.\n * @returns {string} - The converted time string in the desired format.\n */\nexport function convertToDesiredFormat(inputStr: string): string {\n const dayPeriodMapping = {\n morning: 0,\n afternoon: 12,\n evening: 12,\n night: 0\n };\n\n const dayPeriodPattern = /\\b(morning|afternoon|evening|night)\\b/;\n const amPmPattern = /\\b(AM|PM)\\b/i;\n\n const convertDayPeriod = (input: string): string => {\n const match = input.match(dayPeriodPattern);\n if (match) {\n const period = match[0].toLowerCase();\n const timeShift = dayPeriodMapping[period];\n input = input.replace(dayPeriodPattern, '').trim();\n const timeMatch = input.match(/\\d{1,2}:\\d{2}/);\n if (timeMatch) {\n const [hoursStr, minutesStr] = timeMatch[0].split(':');\n let hours = Number(hoursStr);\n const minutes = Number(minutesStr);\n hours = (hours % 12) + timeShift;\n input = input.replace(\n timeMatch[0],\n `${hours.toString().padStart(2, '0')}:${minutes.toString().padStart(2, '0')}`\n );\n }\n }\n return input;\n };\n\n const convertAmPm = (input: string): string => {\n const match = input.match(amPmPattern);\n if (match) {\n const period = match[0].toUpperCase();\n input = input.replace(amPmPattern, '').trim();\n const timeMatch = input.match(/\\d{1,2}:\\d{2}/);\n if (timeMatch) {\n const [hoursStr, minutesStr] = timeMatch[0].split(':');\n let hours = Number(hoursStr);\n const minutes = Number(minutesStr);\n if (period === 'PM' && hours < 12) {\n hours += 12;\n }\n if (period === 'AM' && hours === 12) {\n hours = 0;\n }\n input = input.replace(\n timeMatch[0],\n `${hours.toString().padStart(2, '0')}:${minutes.toString().padStart(2, '0')}`\n );\n }\n }\n return input;\n };\n\n inputStr = convertDayPeriod(inputStr);\n inputStr = convertAmPm(inputStr);\n\n return inputStr.replace(/\\bat\\b/i, '').trim();\n}\n","/** Adds 0 if number is less then 10 */\nexport function _leftPad(n: number): string {\n return n === n % 10 ? `0${n}` : `${n}`;\n}\n\n/** Converts date to ISO8601 */\nexport function toIso8601(fdDate: {\n year: number;\n month: number;\n day: number;\n hour: number;\n minute: number;\n second: number;\n}): string {\n return [\n [fdDate.year, _leftPad(fdDate.month), _leftPad(fdDate.day)].join('-'),\n 'T',\n [_leftPad(fdDate.hour), _leftPad(fdDate.minute), _leftPad(fdDate.second)].join(':')\n ].join('');\n}\n\n/**\n * @param params e.g. { year: 2020, month: 1, day: 1, hour: 0, minute: 0, second: 0 }\n */\nexport function isValidByParams(params: {\n year: number;\n month: number;\n day?: number;\n hour?: number;\n minute?: number;\n second?: number;\n}): boolean {\n const { year, month, day, hour, minute, second } = params;\n if (\n !undefinedOrInRange(month, 1, 12) ||\n !undefinedOrInRange(day, 1, 31) ||\n !undefinedOrInRange(hour, 0, 23) ||\n !undefinedOrInRange(minute, 0, 59) ||\n !undefinedOrInRange(second, 0, 59)\n ) {\n return false;\n }\n if (!isNaN(year) && !isNaN(month) && day != null && !isNaN(day)) {\n const tempDate = new Date(year, month - 1, day);\n if (tempDate.getMonth() + 1 !== month) {\n return false;\n }\n }\n const date = new Date(year, month - 1, day, hour, minute, second);\n return !Number.isNaN(date.getTime());\n}\n\nfunction undefinedOrInRange(value: number | undefined, from: number, to: number): boolean {\n return value == null || (value >= from && value <= to);\n}\n","import { INVALID_DATE_ERROR } from '@fundamental-ngx/cdk/utils';\nimport { isValidByParams, toIso8601 } from './fd-date.utils';\n\n/**\n * FdDate class is used to represent date and time.\n *\n * It's a simplified analog of native Date instance.\n * It gives some convenience methods to work with date or time data.\n *\n */\nexport class FdDate {\n /**\n * The year of the date.\n */\n year: number;\n\n /**\n * The month of the date. 1 = January, 12 = December.\n */\n month: number;\n\n /**\n * Day of the date. Starts at 1.\n */\n day: number;\n\n /**\n * Date hours. 0 - 23.\n */\n hour: number;\n\n /**\n * Date minutes. 0 - 59.\n */\n minute: number;\n\n /**\n * Date seconds. 0 - 59.\n */\n second: number;\n\n /**\n * Validation state\n */\n /** @hidden */\n private _isValid: boolean;\n\n /**\n * Create FdDate\n * @param year e.g. 2020\n * @param month 1 = January, 12 = December\n * @param day 1 - 31\n * @param hour 0 - 23\n * @param minute 0 - 59\n * @param second 0 - 59\n */\n constructor(\n year?: number,\n month: number = 1,\n day: number = 1,\n hour: number = 0,\n minute: number = 0,\n second: number = 0\n ) {\n if (year === undefined) {\n return FdDate.getNow();\n }\n\n year = Number.parseInt(year + '', 10);\n month = Number.parseInt(month + '', 10);\n day = Number.parseInt(day + '', 10);\n hour = Number.parseInt(hour + '', 10);\n minute = Number.parseInt(minute + '', 10);\n second = Number.parseInt(second + '', 10);\n\n this._isValid = isValidByParams({\n year,\n month,\n day,\n hour,\n minute,\n second\n });\n\n this.year = this._isValid ? year : NaN;\n this.month = this._isValid ? month : NaN;\n this.day = this._isValid ? day : NaN;\n this.hour = this._isValid ? hour : NaN;\n this.minute = this._isValid ? minute : NaN;\n this.second = this._isValid ? second : NaN;\n\n return this;\n }\n\n /**\n * Create FdDate instance of the current moment\n */\n static getNow(): FdDate {\n return FdDate.getFdDateByDate(new Date());\n }\n\n /**\n * Gets today's FdDate where hour, minute and second is set to 0\n */\n static getToday(): FdDate {\n return FdDate.getNow().setTime(0, 0, 0);\n }\n\n /**\n * Convert js date object to FdDate model\n */\n static getFdDateByDate(date: Date): FdDate {\n return new FdDate(\n date.getFullYear(),\n date.getMonth() + 1,\n date.getDate(),\n date.getHours(),\n date.getMinutes(),\n date.getSeconds()\n );\n }\n\n /**\n * Set hour, minute and second data\n * @param hour\n * @param minute\n * @param second\n */\n setTime(hour: number, minute?: number, second?: number): FdDate {\n this._isValid = isValidByParams({\n year: this.year,\n month: this.month,\n day: this.day,\n hour,\n minute,\n second\n });\n\n if (!this._isValid) {\n this.hour = NaN;\n this.minute = NaN;\n this.second = NaN;\n } else {\n this.hour = hour || hour === 0 ? hour : this.hour;\n this.minute = minute || minute === 0 ? minute : this.minute;\n this.second = second || second === 0 ? second : this.second;\n }\n\n return this;\n }\n\n /**\n * Get amount of milliseconds from 01.01.1970\n */\n getTimeStamp(): number {\n return this.toDate().getTime();\n }\n\n /**\n * Get number of weekday ex. Sunday = 1, Monday = 2, Tuesday = 3 etc.\n */\n getDayOfWeek(): number {\n return this.toDate().getDay() + 1;\n }\n\n /**\n * Get native date object from FdDate.\n */\n toDate(): Date {\n // We have stricter validation rules than Date object.\n // For example, Date allows values for month=100 or for day=100.\n // Therefore, we need to do this trick for the consistency of the validation status\n if (!this.isDateValid()) {\n return new Date(NaN);\n }\n return new Date(this.year, this.month - 1, this.day, this.hour, this.minute, this.second);\n }\n\n /**\n * Method that checks validity of current FdDate instance.\n */\n isDateValid(): boolean {\n return this instanceof FdDate && this._isValid;\n }\n\n /**\n * Get string representation in yyyy-mm-ddThh:mm:ss format\n */\n toString(): string {\n if (!this.isDateValid()) {\n return INVALID_DATE_ERROR;\n }\n if (!this.year || !this.month || !this.day) {\n return '';\n }\n\n return toIso8601(this);\n }\n\n /**\n * The valueOf() method returns the primitive value of a FdDate.\n * Returns: The number of milliseconds between 1 January 1970 00:00:00 UTC and the given date.\n */\n valueOf(): number {\n return this.getTimeStamp();\n }\n\n /**\n * Get date string in yyyy-mm-dd format\n */\n toDateString(): string {\n if (!this.isDateValid()) {\n return INVALID_DATE_ERROR;\n }\n if (!this.year || !this.month || !this.day) {\n return '';\n }\n\n return toIso8601(this).split('T')[0];\n }\n\n /**\n * Get time string in hh:mm:ss format\n */\n toTimeString(): string {\n if (!this.isDateValid()) {\n return INVALID_DATE_ERROR;\n }\n if (!this.year || !this.month || !this.day) {\n return '';\n }\n return toIso8601(this).split('T')[1];\n }\n}\n","import { DateTimeFormats } from './datetime-formats';\n\nconst dateInput = { year: 'numeric', month: 'numeric', day: 'numeric' };\nconst timeInput = { hour: 'numeric', minute: '2-digit' };\nconst dateTimeInput = {\n year: 'numeric',\n month: 'numeric',\n day: 'numeric',\n hour: 'numeric',\n minute: '2-digit'\n};\n\nexport const FD_DATETIME_FORMATS: DateTimeFormats = {\n parse: {\n dateInput,\n timeInput,\n dateTimeInput\n },\n display: {\n dateInput,\n timeInput,\n dateTimeInput,\n\n dateA11yLabel: { year: 'numeric', month: 'long', day: 'numeric' },\n monthA11yLabel: { month: 'long', year: 'numeric' },\n yearA11yLabel: { year: 'numeric' }\n },\n rangeDelimiter: ' - '\n};\n","import { Platform } from '@angular/cdk/platform';\nimport { Inject, Injectable, LOCALE_ID, Optional } from '@angular/core';\n\nimport { INVALID_DATE_ERROR, LETTERS_UNICODE_RANGE, range } from '@fundamental-ngx/cdk/utils';\n\nimport { FdLanguageKeyIdentifier } from '@fundamental-ngx/i18n';\nimport { DatetimeAdapter } from './datetime-adapter';\nimport { FdDate } from './fd-date';\nimport { toIso8601 } from './fd-date.utils';\n\nconst AM_DAY_PERIOD_DEFAULT = 'AM';\nconst PM_DAY_PERIOD_DEFAULT = 'PM';\n\ntype CustomDateTimeFormatOptions = Omit<Intl.DateTimeFormatOptions, 'dayPeriod'> & {\n dayPeriod?: boolean;\n};\n\n/**\n * DatetimeAdapter implementation based on FdDate.\n *\n * This uses FdDate as a date model and relies on Intl.DateTimeFormat\n * for formatting and translation purposes.\n *\n */\n@Injectable()\nexport class FdDatetimeAdapter extends DatetimeAdapter<FdDate> {\n /** Whether to clamp the date between 1 and 9999 to avoid IE and Edge errors. */\n private readonly _fixYearsRangeIssue: boolean;\n\n /** @hidden */\n constructor(@Optional() @Inject(LOCALE_ID) localeId: string, platform: Platform) {\n super();\n super.setLocale(localeId);\n this._fixYearsRangeIssue = platform.TRIDENT || platform.EDGE;\n }\n\n /** @hidden */\n fromNow?(date: FdDate): string;\n\n /** Get year */\n getYear(date: FdDate): number {\n return date.year;\n }\n\n /** Get month */\n getMonth(date: FdDate): number {\n return date.month;\n }\n\n /** Get date */\n getDate(date: FdDate): number {\n return date.day;\n }\n\n /** Get day of week */\n getDayOfWeek(date: FdDate): number {\n return this._createDateInstanceByFdDate(date).getDay() + 1;\n }\n\n /** Get hours */\n getHours(date: FdDate): number {\n return date.hour;\n }\n\n /** Get minutes */\n getMinutes(date: FdDate): number {\n return date.minute;\n }\n\n /** Get seconds */\n getSeconds(date: FdDate): number {\n return date.second;\n }\n\n /** Get week number */\n getWeekNumber(fdDate: FdDate): number {\n const date = this._createDateInstanceByFdDate(fdDate);\n\n date.setDate(date.getDate() + 3 - ((date.getDay() + 6) % 7));\n\n // January 4 is always in week 1.\n const firstWeek = new Date(date.getFullYear(), 0, 4);\n\n // Adjust to Thursday in week 1 and count number of weeks from date to week1.\n return (\n 1 + Math.round(((date.getTime() - firstWeek.getTime()) / 86400000 - 3 + ((firstWeek.getDay() + 6) % 7)) / 7)\n );\n }\n\n /** Get month names */\n getMonthNames(style: 'long' | 'short' | 'narrow'): string[] {\n const dateTimeFormat = new Intl.DateTimeFormat(this.locale, { month: style, timeZone: 'utc' });\n return range(12, (i) =>\n this._stripDirectionalityCharacters(this._format(dateTimeFormat, new Date(2017, i, 1)))\n );\n }\n\n /** Get date names */\n getDateNames(): string[] {\n const dateTimeFormat = new Intl.DateTimeFormat(this.locale, { day: 'numeric', timeZone: 'utc' });\n return range(31, (i) =>\n this._stripDirectionalityCharacters(this._format(dateTimeFormat, new Date(2017, 0, i + 1)))\n );\n }\n\n /** Get day of week names */\n getDayOfWeekNames(style: 'long' | 'short' | 'narrow'): string[] {\n const dateTimeFormat = new Intl.DateTimeFormat(this.locale, { weekday: style, timeZone: 'utc' });\n return range(7, (i) =>\n this._stripDirectionalityCharacters(this._format(dateTimeFormat, new Date(2017, 0, i + 1)))\n );\n }\n\n /** Get year name */\n getYearName(date: FdDate): string {\n const dateTimeFormat = new Intl.DateTimeFormat(this.locale, { year: 'numeric', timeZone: 'utc' });\n const dateInstance = this._createDateInstanceByFdDate(date);\n return this._stripDirectionalityCharacters(this._format(dateTimeFormat, dateInstance));\n }\n\n /** Get week name */\n getWeekName(date: FdDate): string {\n const weekNumber = this.getWeekNumber(date);\n return weekNumber.toLocaleString(this.locale);\n }\n\n /** Get hour names */\n getHourNames({ meridian, twoDigit }: { twoDigit: boolean; meridian: boolean }): string[] {\n return range(24, (hour) => {\n if (meridian) {\n hour = hour === 0 || hour === 12 ? 12 : hour % 12;\n }\n return hour.toLocaleString(this.locale, { minimumIntegerDigits: twoDigit ? 2 : 1 });\n });\n }\n\n /** Get minute names */\n getMinuteNames({ twoDigit, minuteStep = 1 }: { twoDigit: boolean; minuteStep?: number }): string[] {\n const length = Math.ceil(60 / minuteStep);\n return range(length, (index) => {\n const minute = index * minuteStep;\n return minute.toLocaleString(this.locale, { minimumIntegerDigits: twoDigit ? 2 : 1 });\n });\n }\n\n /** Get second names */\n getSecondNames({ twoDigit }: { twoDigit: boolean }): string[] {\n return range(60, (second) => second.toLocaleString(this.locale, { minimumIntegerDigits: twoDigit ? 2 : 1 }));\n }\n\n /** Get day period names */\n getDayPeriodNames(): [string, string] {\n const DEFAULT_PERIODS: [string, string] = [AM_DAY_PERIOD_DEFAULT, PM_DAY_PERIOD_DEFAULT];\n\n const formatter = new Intl.DateTimeFormat(this.locale, {\n hour: 'numeric',\n minute: 'numeric',\n hour12: true\n });\n\n try {\n const am = formatter.formatToParts(new Date(2020, 0, 1, 6)).find(({ type }) => type === 'dayPeriod')?.value;\n const pm = formatter\n .formatToParts(new Date(2020, 0, 1, 16))\n .find(({ type }) => type === 'dayPeriod')?.value;\n\n return am && pm ? [am, pm] : DEFAULT_PERIODS;\n } catch {\n const dayPeriodRegexp = new RegExp(`(${LETTERS_UNICODE_RANGE}+\\\\.*)+`, 'g');\n const amRegExpMatch = formatter.format(new Date(2020, 0, 1, 6)).match(dayPeriodRegexp);\n const pmRegExpMatch = formatter.format(new Date(2020, 0, 1, 16)).match(dayPeriodRegexp);\n\n return amRegExpMatch && pmRegExpMatch\n ? [amRegExpMatch[0], pmRegExpMatch[0]]\n : [AM_DAY_PERIOD_DEFAULT, PM_DAY_PERIOD_DEFAULT];\n }\n }\n\n /** Set hours */\n setHours(date: FdDate, hours: number): FdDate {\n const dateInstance = this._createDateInstanceByFdDate(date);\n dateInstance.setHours(hours);\n return this._createFdDateFromDateInstance(dateInstance);\n }\n\n /** Set minutes */\n setMinutes(date: FdDate, hours: number): FdDate {\n const dateInstance = this._createDateInstanceByFdDate(date);\n dateInstance.setMinutes(hours);\n return this._createFdDateFromDateInstance(dateInstance);\n }\n\n /** Set seconds */\n setSeconds(date: FdDate, hours: number): FdDate {\n const dateInstance = this._createDateInstanceByFdDate(date);\n dateInstance.setSeconds(hours);\n return this._createFdDateFromDateInstance(dateInstance);\n }\n\n /** Get first day of week */\n getFirstDayOfWeek(): number {\n // can't retrieve this info from Intl object or Date object, default to Sunday.\n return 0;\n }\n\n /** Get number of days in a month */\n getNumDaysInMonth(fdDate: FdDate): number {\n const date = this._createDateInstanceByFdDate(fdDate);\n date.setMonth(date.getMonth() + 1);\n date.setDate(0);\n return date.getDate();\n }\n\n /** Create a date object */\n createDate(year: number, month = 1, date = 1): FdDate {\n return new FdDate(year, month, date);\n }\n\n /** Get a today date object */\n today(): FdDate {\n return FdDate.getToday();\n }\n\n /** Get a now date object */\n now(): FdDate {\n return FdDate.getNow();\n }\n\n /** Parse any value to date object */\n parse(value: any, parseFormat: Intl.DateTimeFormatOptions = {}): FdDate | null {\n if (!value && value !== 0) {\n return null;\n }\n\n if (value instanceof FdDate) {\n return this.clone(value);\n }\n /**\n * We have no way using the native JS Date to set the parse format or locale,\n * so we ignore these parameters.\n */\n let date = new Date(Date.parse(value));\n if (typeof value === 'number') {\n date = new Date(value);\n }\n\n // Check if we are dealing with a time string\n if (\n Number.isNaN(date.valueOf()) &&\n typeof value === 'string' &&\n !parseFormat.year &&\n !parseFormat.day &&\n !parseFormat.month &&\n parseFormat.hour\n ) {\n date = this._parseTimeString(value);\n }\n\n return this._createFdDateFromDateInstance(date);\n }\n\n /** Format date object to string */\n format(date: FdDate, displayFormat: CustomDateTimeFormatOptions): string {\n if (!this.isValid(date)) {\n return INVALID_DATE_ERROR;\n }\n\n // On IE and Edge the i18n API will throw a hard error that can crash the entire app\n // if we attempt to format a date whose year is less than 1 or greater than 9999.\n if (this._fixYearsRangeIssue && (date.year < 1 || date.year > 9999)) {\n date = this.clone(date);\n date.year = Math.max(1, Math.min(9999, date.year));\n }\n displayFormat = { ...displayFormat, timeZone: 'utc' };\n\n return displayFormat.dayPeriod\n ? this._formatWithDayPeriod(date, displayFormat)\n : this._formatWithIntl(date, displayFormat);\n }\n\n /** Add years to a date */\n addCalendarYears(date: FdDate, years: number): FdDate {\n return this.addCalendarMonths(date, years * 12);\n }\n\n /** Add months to a date */\n addCalendarMonths(fdDate: FdDate, months: number): FdDate {\n const date = this._createDateInstanceByFdDate(fdDate);\n\n date.setMonth(date.getMonth() + months);\n\n // It's possible to wind up in the wrong month if the original month has more days than the new\n // month. In this case we want to go to the last day of the desired month.\n if (date.getDate() !== fdDate.day) {\n date.setDate(0);\n }\n\n return this._createFdDateFromDateInstance(date);\n }\n\n /** Add days to a date */\n addCalendarDays(fdDate: FdDate, days: number): FdDate {\n const date = this._createDateInstanceByFdDate(fdDate);\n date.setDate(date.getDate() + days);\n return this._createFdDateFromDateInstance(date);\n }\n\n /** Clone a date object */\n clone(date: FdDate): FdDate {\n return new FdDate(date.year, date.month, date.day, date.hour, date.minute, date.second);\n }\n\n /** Check if date object is valid */\n isValid(date: FdDate): date is FdDate {\n if (!(date instanceof FdDate)) {\n return false;\n }\n return date.isDateValid();\n }\n\n /** Check if date between given dates */\n isBetween(dateToCheck: FdDate, startDate: FdDate, endDate: FdDate): boolean {\n const date = this._createDateInstanceByFdDate(dateToCheck);\n const start = this._createDateInstanceByFdDate(startDate);\n const end = this._createDateInstanceByFdDate(endDate);\n return date.getTime() > start.getTime() && date.getTime() < end.getTime();\n }\n\n /** Check if dates are equal */\n datesEqual(date1: FdDate, date2: FdDate): boolean {\n if (!date1 || !date2) {\n return false;\n }\n // skip time value\n const date1Str = this.toIso8601(date1).split('T')[0];\n const date2Str = this.toIso8601(date2).split('T')[0];\n return date1Str === date2Str;\n }\n\n /** Check if dates and time are equal */\n dateTimesEqual(date1: FdDate, date2: FdDate): boolean {\n if (!date1 || !date2) {\n return false;\n }\n return this.toIso8601(date1) === this.toIso8601(date2);\n }\n\n /** Format date object to ISO8601 string */\n toIso8601(fdDate: FdDate): string {\n return toIso8601(fdDate);\n }\n\n /** Check if a time format includes a day period */\n isTimeFormatIncludesDayPeriod(displayFormat: CustomDateTimeFormatOptions): boolean {\n if (typeof displayFormat?.hour12 === 'boolean') {\n return displayFormat.hour12;\n }\n const formattedDateNoPeriodOption = this.format(this.createDate(2020), displayFormat);\n const formattedDateWithPeriodOption = this.format(this.createDate(2020), { ...displayFormat, hour12: true });\n return formattedDateWithPeriodOption === formattedDateNoPeriodOption;\n }\n\n /** Check if a time format includes hours */\n isTimeFormatIncludesHours(displayFormat: Intl.DateTimeFormatOptions): boolean {\n return typeof displayFormat?.hour === 'string';\n }\n\n /** Check if a time format includes minutes */\n isTimeFormatIncludesMinutes(displayFormat: Intl.DateTimeFormatOptions): boolean {\n return typeof displayFormat?.minute === 'string';\n }\n\n /** Check if a time format includes seconds */\n isTimeFormatIncludesSeconds(displayFormat: Intl.DateTimeFormatOptions): boolean {\n return typeof displayFormat?.second === 'string';\n }\n\n /** Format with custom pattern including day period names */\n private _formatWithDayPeriod(date: FdDate, displayFormat: CustomDateTimeFormatOptions): string {\n const formattedTime = this._formatWithIntl(date, { ...displayFormat, dayPeriod: undefined });\n const dayPeriodName = this._getDayPeriodName(date);\n\n return this._insertDayPeriod(formattedTime, dayPeriodName, displayFormat);\n }\n\n /** Insert day period into the formatted string */\n private _insertDayPeriod(\n formattedTime: string,\n dayPeriodName: FdLanguageKeyIdentifier,\n displayFormat: CustomDateTimeFormatOptions\n ): string {\n if (displayFormat.year || displayFormat.month || displayFormat.day) {\n return formattedTime\n .replace(/(\\d{1,2}:\\d{2})( [AP]M)?/, `$1 ${dayPeriodName}`)\n .replace(/,\\s*(\\d{1,2}:\\d{2})/, `, at $1 ${dayPeriodName}`);\n } else {\n return formattedTime.replace(/(\\d{1,2}:\\d{2}(:\\d{2})?)/, `$1 ${dayPeriodName}`);\n }\n }\n\n /** Get day period name based on the hour */\n private _getDayPeriodName(date: FdDate): FdLanguageKeyIdentifier {\n const hour = date.hour;\n if (hour < 6) {\n return 'coreTime.nightLabel';\n } else if (hour < 12) {\n return 'coreTime.morningLabel';\n } else if (hour < 18) {\n return 'coreTime.afternoonLabel';\n } else {\n return 'coreTime.eveningLabel';\n }\n }\n\n /** Format date using Intl.DateTimeFormat */\n private _formatWithIntl(date: FdDate, displayFormat: any): string {\n const formatter = new Intl.DateTimeFormat(this.locale, displayFormat);\n const dateInstance = this._createDateInstanceByFdDate(date);\n return this._stripDirectionalityCharacters(this._format(formatter, dateInstance));\n }\n\n /**\n * @hidden\n * Strip out unicode LTR and RTL characters. Edge and IE insert these into formatted dates while\n * other browsers do not. We remove them to make output consistent and because they interfere with\n * date parsing.\n * @param str The string to strip direction characters from.\n * @returns The stripped string.\n */\n private _stripDirectionalityCharacters(str: string): string {\n return str.replace(/[\\u200e\\u200f]/g, '').replace(/\\u202f/g, ' ');\n }\n\n /** @hidden */\n private _format(formatter: Intl.DateTimeFormat, date: Date): string {\n if (Number.isNaN(date.valueOf())) {\n return INVALID_DATE_ERROR;\n }\n date = this._createUTCDateInstance(\n date.getFullYear(),\n date.getMonth(),\n date.getDate(),\n date.getHours(),\n date.getMinutes(),\n date.getSeconds(),\n date.getMilliseconds()\n );\n return formatter.format(date);\n }\n\n /**\n * @hidden\n * Create native Date instance from FdDate\n * @param date FdDate instance\n * @returns date Native date instance\n */\n private _createDateInstanceByFdDate(fdDate: FdDate): Date {\n const { year, month, day, hour, minute, second } = fdDate;\n // We have stricter validation rules than Date object.\n // For example, Date allows values for month=100 or for day=100.\n // Therefore, we need to do this trick for the consistency of the validation status\n if (!this.isValid(fdDate)) {\n return new Date(NaN);\n }\n const date = new Date();\n date.setFullYear(year, month - 1, day);\n date.setHours(hour, minute, second, 0);\n return date;\n }\n\n /**\n * @hidden\n * Create native Date instance in UTC\n * @param year The year\n * @param month The month as a number between 0 and 11\n * @param day The date as a number between 1 and 31.\n * @param hours The hours as a number between 0 - 24\n * @param minutes The minutes as a number between 0 - 59\n * @param seconds The seconds as a number between 0 - 59\n * @param milliseconds The milliseconds as a number between 0 - 59\n */\n private _createUTCDateInstance(\n year: number,\n month: number,\n day: number,\n hours = 0,\n minutes = 0,\n seconds = 0,\n milliseconds = 0\n ): Date {\n const utcDate = new Date();\n utcDate.setUTCFullYear(year, month, day);\n utcDate.setUTCHours(hours, minutes, seconds, milliseconds);\n return utcDate;\n }\n\n /** @hidden */\n private _createFdDateFromDateInstance(date: Date): FdDate {\n return new FdDate(\n date.getFullYear(),\n date.getMonth() + 1,\n date.getDate(),\n date.getHours(),\n date.getMinutes(),\n date.getSeconds()\n );\n }\n\n /**\n * @hidden\n *\n * Since FdDatetimeAdapter can parse only \"en-US\" locale\n * there is no reason to create comprehensive time parse\n * that can understand plenty of locales.\n *\n * @param timeStr Time string to parse (E.g. '10:30 PM')\n * @returns date Native date instance\n *\n */\n private _parseTimeString(timeStr: string): Date {\n /**\n * Date.parse('10:30 AM') doesn't work so we need do a trick\n * and prepend it by a date string.\n */\n const dateStr = new Intl.DateTimeFormat('en-US').format(new Date());\n const dateTimeString = `${dateStr} ${timeStr}`;\n return new Date(Date.parse(dateTimeString));\n }\n}\n","import { NgModule, Type } from '@angular/core';\nimport {\n DateFormatPipe,\n DateFromNowPipe,\n DateTimeFormatPipe,\n DayPeriodFormatPipe,\n TranslateDayPeriodPipe\n} from './datetime-format.pipes';\n\nconst PIPES: Type<unknown>[] = [\n DateFormatPipe,\n DateTimeFormatPipe,\n DateFromNowPipe,\n DayPeriodFormatPipe,\n TranslateDayPeriodPipe\n];\n\n/**\n * @deprecated\n * Use imports of `DateFormatPipe`, `DateTimeFormatPipe`, `DateFromNowPipe` instead.\n */\n@NgModule({\n imports: [...PIPES],\n exports: [...PIPES]\n})\nexport class FdDatetimePipesModule {}\n","import { PlatformModule } from '@angular/cdk/platform';\nimport { NgModule } from '@angular/core';\n\nimport { DatetimeAdapter } from './datetime-adapter';\nimport { DATE_TIME_FORMATS } from './datetime-formats';\nimport { FD_DATETIME_FORMATS } from './fd-date-formats';\nimport { FdDatetimeAdapter } from './fd-datetime-adapter';\nimport { FdDatetimePipesModule } from './fd-datetime-pipes.module';\n\n/**\n * @deprecated\n * Use direct imports of components and directives.\n */\n@NgModule({\n imports: [PlatformModule],\n providers: [{ provide: DatetimeAdapter, useClass: FdDatetimeAdapter }]\n})\nexport class FdDatetimeAdapterModule {}\n\n@NgModule({\n imports: [FdDatetimeAdapterModule, FdDatetimePipesModule],\n exports: [FdDatetimePipesModule, FdDatetimeAdapterModule],\n providers: [{ provide: DATE_TIME_FORMATS, useValue: FD_DATETIME_FORMATS }]\n})\nexport class FdDatetimeModule {}\n","import { Provider } from '@angular/core';\nimport { DatetimeAdapter } from './datetime-adapter';\nimport { DATE_TIME_FORMATS } from './datetime-formats';\nimport { FD_DATETIME_FORMATS } from './fd-date-formats';\nimport { FdDatetimeAdapter } from './fd-datetime-adapter';\n\n/**\n * Provides default datetime formats and datetime adapter.\n */\nexport function provideDateTimeFormats(): Provider[] {\n return [\n { provide: DATE_TIME_FORMATS, useValue: FD_DATETIME_FORMATS },\n {\n provide: DatetimeAdapter,\n useClass: FdDatetimeAdapter\n }\n ];\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["i1.DatetimeAdapter"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"fundamental-ngx-core-datetime.mjs","sources":["../../../../libs/core/datetime/datetime-adapter.ts","../../../../libs/core/datetime/datetime-formats.ts","../../../../libs/core/datetime/datetime-format.pipes.ts","../../../../libs/core/datetime/datetime-utils.ts","../../../../libs/core/datetime/fd-date.utils.ts","../../../../libs/core/datetime/fd-date.ts","../../../../libs/core/datetime/fd-date-formats.ts","../../../../libs/core/datetime/fd-datetime-adapter.ts","../../../../libs/core/datetime/fd-datetime-pipes.module.ts","../../../../libs/core/datetime/fd-datetime.module.ts","../../../../libs/core/datetime/provide-date-time.ts","../../../../libs/core/datetime/fundamental-ngx-core-datetime.ts"],"sourcesContent":["import { Nullable } from '@fundamental-ngx/cdk/utils';\nimport { Observable, Subject } from 'rxjs';\n\n/**\n * Datetime Adapter is an abstract class that must be implemented by each adapter.\n * It's used to encapsulate a date/time manipulations as result\n * others places that uses it remain date type agnostic.\n *\n */\nexport abstract class DatetimeAdapter<D> {\n /**\n * Gets the year component of the given date.\n * @param date The date to extract the year from.\n * @returns The year number.\n */\n abstract getYear(date: D): number;\n\n /**\n * Gets the month of the given date.\n * @param date The date to extract the month from.\n * @returns The month number (min 1, max 12).\n */\n abstract getMonth(date: D): number;\n\n /**\n * Gets the day of month of the given date.\n * @param date The date to extract the date of the month from.\n * @returns The date number (min 1, max 31).\n */\n abstract getDate(date: D): number;\n\n /**\n * Gets the day of the week component of the given date.\n * @param date The date to extract the day of the week from.\n * @returns The day of week number (min 1, max 7, 1 = Sunday).\n */\n abstract getDayOfWeek(date: D): number;\n\n /**\n * Gets hours of the given date.\n * @param date The date to extract the hours from.\n * @returns The hours number (min 0, max 23).\n */\n abstract getHours(date: D): number;\n\n /**\n * Gets minutes of the given date.\n * @param date The date to extract the minutes from.\n * @returns The minutes number (min 0, max 59).\n */\n abstract getMinutes(date: D): number;\n\n /**\n * Gets seconds of the given date.\n * @param date The date to extract the seconds from.\n * @returns The seconds number (min 0, max 59).\n */\n abstract getSeconds(date: D): number;\n\n /**\n * Set hours.\n * @param date The date to set hours to.\n * @param hours\n * @returns The new date instance.\n */\n abstract setHours(date: D, hours: number): D;\n\n /**\n * Set minutes.\n * @param date The date to set minutes to.\n * @param minutes\n * @returns The new date instance.\n */\n abstract setMinutes(date: D, minutes: number): D;\n\n /**\n * Set seconds.\n * @param date The date to set seconds to.\n * @param seconds\n * @returns The new date instance.\n */\n abstract setSeconds(date: D, seconds: number): D;\n\n /**\n * Gets week number of the given date\n * @param date The date to extract the week number from.\n * @returns The week number (min 1, max 53).\n */\n abstract getWeekNumber(date: D): number;\n\n /**\n * Gets a list of names for the months.\n * @param style The naming style (e.g. long = 'January', short = 'Jan', narrow = 'J').\n * @returns An ordered list of all month names, starting with January.\n */\n abstract getMonthNames(style: 'long' | 'short' | 'narrow'): string[];\n\n /**\n * Gets a list of names for the dates of the month.\n * @returns An ordered list of all date of the month names, starting with '1'.\n */\n abstract getDateNames(): string[];\n\n /**\n * Gets a list of names for the days of the week.\n * @param style The naming style (e.g. long = 'Sunday', short = 'Sun', narrow = 'S').\n * @returns An ordered list of all weekday names, starting with Sunday.\n */\n abstract getDayOfWeekNames(style: 'long' | 'short' | 'narrow'): string[];\n\n /**\n * Gets the name for the year of the given date.\n * @param date The date to get the year name from.\n * @returns The name of the given year (e.g. '2020').\n */\n abstract getYearName(date: D): string;\n\n /**\n * Gets the name for the week of the given date.\n * @param date The date to get the week name from.\n * @returns The name of the the week.\n */\n abstract getWeekName(date: D): string;\n\n /**\n * Gets a list of hour names.\n * @returns An ordered list of all hours (0 - 24).\n */\n abstract getHourNames(options: { twoDigit: boolean; meridian: boolean }): string[];\n\n /**\n * Gets a list of minute names.\n * @param options Configuration options for minute names\n * @param options.twoDigit Whether to format minutes with two digits (e.g., '05' vs '5')\n * @param options.minuteStep The interval between minutes (e.g., 1 for every minute, 5 for 5-minute intervals, 15 for 15-minute intervals). Defaults to 1.\n * @returns An ordered list of minute names based on the step interval.\n */\n abstract getMinuteNames(options: { twoDigit: boolean; minuteStep?: number }): string[];\n\n /**\n * Gets a list of second names.\n * @returns An ordered list of all hours (0 - 24).\n */\n abstract getSecondNames(options: { twoDigit: boolean }): string[];\n\n /**\n * Gets a list of day periods.\n * @returns List of day periods, starts from AM ['AM', 'PM'].\n */\n abstract getDayPeriodNames(): [string, string];\n\n /**\n * Gets the first day of the week.\n * @returns The first day of the week (0-indexed, 0 = Sunday).\n */\n abstract getFirstDayOfWeek(): number;\n\n /**\n * Gets the number of days in the month of the given date.\n * @param date The date whose month should be checked.\n * @returns The number of days in the month of the given date.\n */\n abstract getNumDaysInMonth(date: D): number;\n\n /**\n * Parses a date from a user-provided value.\n * @param value The value to parse.\n * @param parseFormat The expected format of the value being parsed\n * (type is implementation-dependent).\n * @returns The parsed date.\n */\n abstract parse(value: unknown, parseFormat: unknown): D | null;\n\n /**\n * Formats a date as a string according to the given format.\n * @param date The value to format.\n * @param displayFormat The format to use to display the date as a string.\n * @returns The formatted date string.\n */\n abstract format(date: Nullable<D>, displayFormat: unknown): string;\n\n /**\n * Creates a date with the given year, month, and date.\n * @param year The full year of the date. (e.g. 1989).\n * @param month The month of the date (1 = January). Must be an integer 1 - 12.\n * @param date The month date. Must be an integer 1 - length of the given month.\n * @returns The new date, or null if invalid.\n */\n abstract createDate(year: number, month?: number, date?: number): D;\n\n /**\n * Gets today's date where time value is set to 0\n * @returns Today's date.\n */\n abstract today(): D;\n\n /**\n * Gets date and time at this moment.\n * @returns date and time at this moment.\n */\n abstract now(): D;\n\n /**\n * Adds the given number of years to the date. Years are counted as if flipping 12 pages on the\n * calendar for each year and then finding the closest date in the new month. For example when\n * adding 1 year to Feb 29, 2016, the resulting date will be Feb 28, 2017.\n * @param date The date to add years to.\n * @param years The number of years to add (may be negative).\n * @returns A new date equal to the given one with the specified number of years added.\n */\n abstract addCalendarYears(date: D, years: number): D;\n\n /**\n * Adds the given number of months to the date. Months are counted as if flipping a page on the\n * calendar for each month and then finding the closest date in the new month. For example when\n * adding 1 month to Jan 31, 2017, the resulting date will be Feb 28, 2017.\n * @param date The date to add months to.\n * @param months The number of months to add (may be negative).\n * @returns A new date equal to the given one with the specified number of months added.\n */\n abstract addCalendarMonths(date: D, months: number): D;\n\n /**\n * Adds the given number of days to the date. Days are counted as if moving one cell on the\n * calendar for each day.\n * @param date The date to add days to.\n * @param days The number of days to add (may be negative).\n * @returns A new date equal to the given one with the specified number of days added.\n */\n abstract addCalendarDays(date: D, days: number): D;\n\n /**\n * Clones the given date.\n * @param date The date to clone\n * @returns A new date equal to the given date.\n */\n abstract clone(date: D): D;\n\n /**\n * Method that check equality of 2 dates.\n * Does not take into account time value\n * @param date1 The first date to compare with\n * @param date2 The second date to compare with\n * @returns If dates are equal or not\n */\n abstract datesEqual(date1: Nullable<D>, date2: Nullable<D>): boolean;\n\n /**\n * Method that check equality of 2 dates taking into account time value as well\n * @param date1 The first date to compare with\n * @param date2 The second date to compare with\n * @returns If dates are equal or not\n */\n abstract dateTimesEqual(date1: Nullable<D>, date2: Nullable<D>): boolean;\n\n /**\n * Method to check if date is between 2 dates\n * @param dateToCheck The date to check if it's in a range\n * @param startDate The start date of a range\n * @param endDate The end date of a range\n * @returns If date is in a given date range\n */\n abstract isBetween(dateToCheck: D, startDate: D, endDate: D): boolean;\n\n /**\n * Method that checks validity of current date.\n * @param date The date to be checked\n */\n abstract isValid(date: Nullable<D>): date is D;\n\n /**\n * Gets the RFC 3339 compatible string (https://tools.ietf.org/html/rfc3339) for the given date.\n * This method is used to generate date strings that are compatible with native HTML attributes\n * such as the `min` or `max` attribute of an `<input>`.\n * @param date The date to get the ISO date string for.\n * @returns The ISO date string date string.\n */\n abstract toIso8601(date: D): string;\n\n /**\n * Format option includes period info.\n * @param displayFormat The format to use to display the date as a string.\n * @returns If time format includes period info.\n */\n abstract isTimeFormatIncludesDayPeriod(displayFormat: unknown): boolean;\n\n /**\n * Format option includes hours info.\n * @param displayFormat The format to use to display the date as a string.\n * @returns If time format includes minutes info.\n */\n abstract isTimeFormatIncludesHours(displayFormat: unknown): boolean;\n\n /**\n * Format option includes minutes info.\n * @param displayFormat The format to use to display the date as a string.\n * @returns If time format includes minutes info.\n */\n abstract isTimeFormatIncludesMinutes(displayFormat: unknown): boolean;\n\n /**\n * Format option includes seconds info.\n * @param displayFormat The format to use to display the date as a string.\n * @returns If time format includes seconds info.\n */\n abstract isTimeFormatIncludesSeconds(displayFormat: unknown): boolean;\n\n /**\n * @param date The date being referenced.\n * @returns String representing how much time has passed since the date param.\n */\n abstract fromNow?(date: D): string;\n\n /** locale changes stream */\n readonly localeChanges: Observable<void>;\n\n /** current locale */\n protected locale: string;\n\n /** @hidden */\n private _localeChanges: Subject<void> = new Subject();\n\n protected constructor() {\n this.localeChanges = this._localeChanges.asObservable();\n }\n /**\n * Sets the locale used for all dates.\n * @param locale The new locale.\n */\n setLocale(locale: string): void {\n this.locale = locale;\n this._localeChanges.next();\n }\n\n /**\n * Set hours, minutes and seconds at once.\n * @param date The date to set time to.\n * @param hours\n * @param minutes\n * @param seconds\n * @returns The new date instance.\n */\n setTime(date: D, hours: number, minutes: number, seconds: number): D {\n date = this.setHours(date, hours);\n date = this.setMinutes(date, minutes);\n date = this.setSeconds(date, seconds);\n return date;\n }\n\n /**\n * Get Amount of weeks in given month/year\n * @param year The year of the date\n * @param month The month of the date\n * @param firstDayOfWeek The first day of week. 1 - Sunday, 2 - Monday...\n * @returns Number of weeks in the given month\n */\n getAmountOfWeeks(year: number, month: number, firstDayOfWeek: number): number {\n const firstOfMonth = new Date(year, month - 1, 1);\n const lastOfMonth = new Date(year, month, 0);\n\n const dayOffset = (firstOfMonth.getDay() - firstDayOfWeek + 8) % 7;\n const used = dayOffset + lastOfMonth.getDate();\n\n return Math.ceil(used / 7);\n }\n\n /**\n * Compares two dates.\n * @param first The first date to compare.\n * @param second The second date to compare.\n * @returns 0 if the dates are equal, a number less than 0 if the first date is earlier,\n * a number greater than 0 if the first date is later.\n */\n compareDate(first: D, second: D): number {\n return (\n this.getYear(first) - this.getYear(second) ||\n this.getMonth(first) - this.getMonth(second) ||\n this.getDate(first) - this.getDate(second) ||\n this.getHours(first) - this.getHours(second) ||\n this.getMinutes(first) - this.getMinutes(second) ||\n this.getSeconds(first) - this.getSeconds(second)\n );\n }\n}\n","import { InjectionToken } from '@angular/core';\n\n/**\n * DateTimeFormats is intended to keep options\n * related to date-time formatting / parsing\n *\n */\nexport interface DateTimeFormats {\n parse: {\n dateInput: unknown;\n timeInput: unknown;\n dateTimeInput: unknown;\n };\n display: {\n dateInput: unknown;\n timeInput: unknown;\n dateTimeInput: unknown;\n\n dateA11yLabel: unknown;\n monthA11yLabel: unknown;\n yearA11yLabel: unknown;\n };\n rangeDelimiter: string;\n}\n\n/**\n * DateTimeFormats injection token\n */\nexport const DATE_TIME_FORMATS = new InjectionToken<DateTimeFormats>('date-formats');\n","import { Inject, Optional, Pipe, PipeTransform, Signal } from '@angular/core';\nimport { toSignal } from '@angular/core/rxjs-interop';\nimport { FD_LANGUAGE, FdLanguage, FdLanguageKeyIdentifier, TranslationResolver } from '@fundamental-ngx/i18n';\nimport { Observable } from 'rxjs';\nimport { DatetimeAdapter } from './datetime-adapter';\nimport { DATE_TIME_FORMATS, DateTimeFormats } from './datetime-formats';\n\n@Pipe({\n name: 'dateFormat',\n standalone: true\n})\nexport class DateFormatPipe<D> implements PipeTransform {\n /** @hidden */\n constructor(\n private _dateTimeAdapter: DatetimeAdapter<D>,\n @Optional() @Inject(DATE_TIME_FORMATS) private _dateTimeFormats: DateTimeFormats\n ) {}\n\n /** Format date object */\n transform(date: D, noDateMessage = ''): string {\n if (date) {\n return this._dateTimeAdapter.format(date, this._dateTimeFormats.display.dateInput);\n } else {\n return noDateMessage;\n }\n }\n}\n\n@Pipe({\n name: 'dateTimeFormat',\n standalone: true\n})\nexport class DateTimeFormatPipe<D> implements PipeTransform {\n /** @hidden */\n constructor(\n private _dateTimeAdapter: DatetimeAdapter<D>,\n @Optional() @Inject(DATE_TIME_FORMATS) private _dateTimeFormats: DateTimeFormats\n ) {}\n\n /** Format date object */\n transform(date: D, noDateMessage = ''): string {\n if (date) {\n return this._dateTimeAdapter.format(date, this._dateTimeFormats.display.dateTimeInput);\n } else {\n return noDateMessage;\n }\n }\n}\n\n@Pipe({\n name: 'dateFromNow',\n standalone: true\n})\nexport class DateFromNowPipe<D> implements PipeTransform {\n /** @hidden */\n constructor(private _dateTimeAdapter: DatetimeAdapter<D>) {}\n\n /** Format date object */\n transform(date: D, noDateMessage = ''): string {\n if (this._dateTimeAdapter.fromNow && typeof this._dateTimeAdapter.fromNow === 'function') {\n if (date) {\n return this._dateTimeAdapter.fromNow(date);\n } else {\n return noDateMessage;\n }\n } else {\n console.warn('No fromNow function provided to the DatetimeAdapter');\n return '';\n }\n }\n}\n\n@Pipe({\n name: 'dayPeriodFormat',\n standalone: true\n})\nexport class DayPeriodFormatPipe<D> implements PipeTransform {\n /** @hidden */\n constructor(\n private _dateTimeAdapter: DatetimeAdapter<D>,\n @Optional() @Inject(DATE_TIME_FORMATS) private _dateTimeFormats: DateTimeFormats\n ) {}\n\n /** Format date object for day period */\n transform(date: D, customFormat: any = {}, noDateMessage = ''): string {\n if (!date) {\n return noDateMessage;\n }\n\n return this._dateTimeAdapter.format(date, customFormat);\n }\n}\n\n@Pipe({\n name: 'translateDayPeriod',\n standalone: true,\n pure: false // required to update the value when the observable is resolved\n})\nexport class TranslateDayPeriodPipe implements PipeTransform {\n /** @hidden */\n private readonly _translationResolver = new TranslationResolver();\n\n /** Signal that will hold the current language */\n private readonly _currentLanguageSignal: Signal<FdLanguage>;\n\n /** @hidden */\n constructor(@Inject(FD_LANGUAGE) private _language$: Observable<FdLanguage>) {\n this._currentLanguageSignal = toSignal(this._language$, { initialValue: {} as FdLanguage });\n }\n\n /** Format date object for day period */\n transform(value: string | null): string | null {\n if (!value) {\n return value;\n }\n\n const dayPeriodPattern = /(coreTime\\.\\w+Label)/;\n const match = value.match(dayPeriodPattern);\n\n if (match?.[0]) {\n const currentLanguage = this._currentLanguageSignal();\n const translatedValue = this._translationResolver.resolve(\n currentLanguage,\n match[0] as FdLanguageKeyIdentifier\n );\n return translatedValue ? value.replace(dayPeriodPattern, translatedValue) : value;\n }\n\n // If no day period pattern is found, return the original value\n return value;\n }\n}\n","/**\n * Converts a given time string to a desired format.\n *\n * @param {string} inputStr - The input time string to be converted.\n * @returns {string} - The converted time string in the desired format.\n */\nexport function convertToDesiredFormat(inputStr: string): string {\n const dayPeriodMapping = {\n morning: 0,\n afternoon: 12,\n evening: 12,\n night: 0\n };\n\n const dayPeriodPattern = /\\b(morning|afternoon|evening|night)\\b/;\n const amPmPattern = /\\b(AM|PM)\\b/i;\n\n const convertDayPeriod = (input: string): string => {\n const match = input.match(dayPeriodPattern);\n if (match) {\n const period = match[0].toLowerCase();\n const timeShift = dayPeriodMapping[period];\n input = input.replace(dayPeriodPattern, '').trim();\n const timeMatch = input.match(/\\d{1,2}:\\d{2}/);\n if (timeMatch) {\n const [hoursStr, minutesStr] = timeMatch[0].split(':');\n let hours = Number(hoursStr);\n const minutes = Number(minutesStr);\n hours = (hours % 12) + timeShift;\n input = input.replace(\n timeMatch[0],\n `${hours.toString().padStart(2, '0')}:${minutes.toString().padStart(2, '0')}`\n );\n }\n }\n return input;\n };\n\n const convertAmPm = (input: string): string => {\n const match = input.match(amPmPattern);\n if (match) {\n const period = match[0].toUpperCase();\n input = input.replace(amPmPattern, '').trim();\n const timeMatch = input.match(/\\d{1,2}:\\d{2}/);\n if (timeMatch) {\n const [hoursStr, minutesStr] = timeMatch[0].split(':');\n let hours = Number(hoursStr);\n const minutes = Number(minutesStr);\n if (period === 'PM' && hours < 12) {\n hours += 12;\n }\n if (period === 'AM' && hours === 12) {\n hours = 0;\n }\n input = input.replace(\n timeMatch[0],\n `${hours.toString().padStart(2, '0')}:${minutes.toString().padStart(2, '0')}`\n );\n }\n }\n return input;\n };\n\n inputStr = convertDayPeriod(inputStr);\n inputStr = convertAmPm(inputStr);\n\n return inputStr.replace(/\\bat\\b/i, '').trim();\n}\n","/** Adds 0 if number is less then 10 */\nexport function _leftPad(n: number): string {\n return n === n % 10 ? `0${n}` : `${n}`;\n}\n\n/** Converts date to ISO8601 */\nexport function toIso8601(fdDate: {\n year: number;\n month: number;\n day: number;\n hour: number;\n minute: number;\n second: number;\n}): string {\n return [\n [fdDate.year, _leftPad(fdDate.month), _leftPad(fdDate.day)].join('-'),\n 'T',\n [_leftPad(fdDate.hour), _leftPad(fdDate.minute), _leftPad(fdDate.second)].join(':')\n ].join('');\n}\n\n/**\n * @param params e.g. { year: 2020, month: 1, day: 1, hour: 0, minute: 0, second: 0 }\n */\nexport function isValidByParams(params: {\n year: number;\n month: number;\n day?: number;\n hour?: number;\n minute?: number;\n second?: number;\n}): boolean {\n const { year, month, day, hour, minute, second } = params;\n if (\n !undefinedOrInRange(month, 1, 12) ||\n !undefinedOrInRange(day, 1, 31) ||\n !undefinedOrInRange(hour, 0, 23) ||\n !undefinedOrInRange(minute, 0, 59) ||\n !undefinedOrInRange(second, 0, 59)\n ) {\n return false;\n }\n if (!isNaN(year) && !isNaN(month) && day != null && !isNaN(day)) {\n const tempDate = new Date(year, month - 1, day);\n if (tempDate.getMonth() + 1 !== month) {\n return false;\n }\n }\n const date = new Date(year, month - 1, day, hour, minute, second);\n return !Number.isNaN(date.getTime());\n}\n\nfunction undefinedOrInRange(value: number | undefined, from: number, to: number): boolean {\n return value == null || (value >= from && value <= to);\n}\n","import { INVALID_DATE_ERROR } from '@fundamental-ngx/cdk/utils';\nimport { isValidByParams, toIso8601 } from './fd-date.utils';\n\n/**\n * FdDate class is used to represent date and time.\n *\n * It's a simplified analog of native Date instance.\n * It gives some convenience methods to work with date or time data.\n *\n */\nexport class FdDate {\n /**\n * The year of the date.\n */\n year: number;\n\n /**\n * The month of the date. 1 = January, 12 = December.\n */\n month: number;\n\n /**\n * Day of the date. Starts at 1.\n */\n day: number;\n\n /**\n * Date hours. 0 - 23.\n */\n hour: number;\n\n /**\n * Date minutes. 0 - 59.\n */\n minute: number;\n\n /**\n * Date seconds. 0 - 59.\n */\n second: number;\n\n /**\n * Validation state\n */\n /** @hidden */\n private _isValid: boolean;\n\n /**\n * Create FdDate\n * @param year e.g. 2020\n * @param month 1 = January, 12 = December\n * @param day 1 - 31\n * @param hour 0 - 23\n * @param minute 0 - 59\n * @param second 0 - 59\n */\n constructor(\n year?: number,\n month: number = 1,\n day: number = 1,\n hour: number = 0,\n minute: number = 0,\n second: number = 0\n ) {\n if (year === undefined) {\n return FdDate.getNow();\n }\n\n year = Number.parseInt(year + '', 10);\n month = Number.parseInt(month + '', 10);\n day = Number.parseInt(day + '', 10);\n hour = Number.parseInt(hour + '', 10);\n minute = Number.parseInt(minute + '', 10);\n second = Number.parseInt(second + '', 10);\n\n this._isValid = isValidByParams({\n year,\n month,\n day,\n hour,\n minute,\n second\n });\n\n this.year = this._isValid ? year : NaN;\n this.month = this._isValid ? month : NaN;\n this.day = this._isValid ? day : NaN;\n this.hour = this._isValid ? hour : NaN;\n this.minute = this._isValid ? minute : NaN;\n this.second = this._isValid ? second : NaN;\n\n return this;\n }\n\n /**\n * Create FdDate instance of the current moment\n */\n static getNow(): FdDate {\n return FdDate.getFdDateByDate(new Date());\n }\n\n /**\n * Gets today's FdDate where hour, minute and second is set to 0\n */\n static getToday(): FdDate {\n return FdDate.getNow().setTime(0, 0, 0);\n }\n\n /**\n * Convert js date object to FdDate model\n */\n static getFdDateByDate(date: Date): FdDate {\n return new FdDate(\n date.getFullYear(),\n date.getMonth() + 1,\n date.getDate(),\n date.getHours(),\n date.getMinutes(),\n date.getSeconds()\n );\n }\n\n /**\n * Set hour, minute and second data\n * @param hour\n * @param minute\n * @param second\n */\n setTime(hour: number, minute?: number, second?: number): FdDate {\n this._isValid = isValidByParams({\n year: this.year,\n month: this.month,\n day: this.day,\n hour,\n minute,\n second\n });\n\n if (!this._isValid) {\n this.hour = NaN;\n this.minute = NaN;\n this.second = NaN;\n } else {\n this.hour = hour || hour === 0 ? hour : this.hour;\n this.minute = minute || minute === 0 ? minute : this.minute;\n this.second = second || second === 0 ? second : this.second;\n }\n\n return this;\n }\n\n /**\n * Get amount of milliseconds from 01.01.1970\n */\n getTimeStamp(): number {\n return this.toDate().getTime();\n }\n\n /**\n * Get number of weekday ex. Sunday = 1, Monday = 2, Tuesday = 3 etc.\n */\n getDayOfWeek(): number {\n return this.toDate().getDay() + 1;\n }\n\n /**\n * Get native date object from FdDate.\n */\n toDate(): Date {\n // We have stricter validation rules than Date object.\n // For example, Date allows values for month=100 or for day=100.\n // Therefore, we need to do this trick for the consistency of the validation status\n if (!this.isDateValid()) {\n return new Date(NaN);\n }\n return new Date(this.year, this.month - 1, this.day, this.hour, this.minute, this.second);\n }\n\n /**\n * Method that checks validity of current FdDate instance.\n */\n isDateValid(): boolean {\n return this instanceof FdDate && this._isValid;\n }\n\n /**\n * Get string representation in yyyy-mm-ddThh:mm:ss format\n */\n toString(): string {\n if (!this.isDateValid()) {\n return INVALID_DATE_ERROR;\n }\n if (!this.year || !this.month || !this.day) {\n return '';\n }\n\n return toIso8601(this);\n }\n\n /**\n * The valueOf() method returns the primitive value of a FdDate.\n * Returns: The number of milliseconds between 1 January 1970 00:00:00 UTC and the given date.\n */\n valueOf(): number {\n return this.getTimeStamp();\n }\n\n /**\n * Get date string in yyyy-mm-dd format\n */\n toDateString(): string {\n if (!this.isDateValid()) {\n return INVALID_DATE_ERROR;\n }\n if (!this.year || !this.month || !this.day) {\n return '';\n }\n\n return toIso8601(this).split('T')[0];\n }\n\n /**\n * Get time string in hh:mm:ss format\n */\n toTimeString(): string {\n if (!this.isDateValid()) {\n return INVALID_DATE_ERROR;\n }\n if (!this.year || !this.month || !this.day) {\n return '';\n }\n return toIso8601(this).split('T')[1];\n }\n}\n","import { DateTimeFormats } from './datetime-formats';\n\nconst dateInput = { year: 'numeric', month: 'numeric', day: 'numeric' };\nconst timeInput = { hour: 'numeric', minute: '2-digit' };\nconst dateTimeInput = {\n year: 'numeric',\n month: 'numeric',\n day: 'numeric',\n hour: 'numeric',\n minute: '2-digit'\n};\n\nexport const FD_DATETIME_FORMATS: DateTimeFormats = {\n parse: {\n dateInput,\n timeInput,\n dateTimeInput\n },\n display: {\n dateInput,\n timeInput,\n dateTimeInput,\n\n dateA11yLabel: { year: 'numeric', month: 'long', day: 'numeric' },\n monthA11yLabel: { month: 'long', year: 'numeric' },\n yearA11yLabel: { year: 'numeric' }\n },\n rangeDelimiter: ' - '\n};\n","import { Platform } from '@angular/cdk/platform';\nimport { Inject, Injectable, LOCALE_ID, Optional } from '@angular/core';\n\nimport { INVALID_DATE_ERROR, LETTERS_UNICODE_RANGE, range } from '@fundamental-ngx/cdk/utils';\n\nimport { FdLanguageKeyIdentifier } from '@fundamental-ngx/i18n';\nimport { DatetimeAdapter } from './datetime-adapter';\nimport { FdDate } from './fd-date';\nimport { toIso8601 } from './fd-date.utils';\n\nconst AM_DAY_PERIOD_DEFAULT = 'AM';\nconst PM_DAY_PERIOD_DEFAULT = 'PM';\n\ntype CustomDateTimeFormatOptions = Omit<Intl.DateTimeFormatOptions, 'dayPeriod'> & {\n dayPeriod?: boolean;\n};\n\n/**\n * DatetimeAdapter implementation based on FdDate.\n *\n * This uses FdDate as a date model and relies on Intl.DateTimeFormat\n * for formatting and translation purposes.\n *\n */\n@Injectable()\nexport class FdDatetimeAdapter extends DatetimeAdapter<FdDate> {\n /** Whether to clamp the date between 1 and 9999 to avoid IE and Edge errors. */\n private readonly _fixYearsRangeIssue: boolean;\n\n /** @hidden */\n constructor(@Optional() @Inject(LOCALE_ID) localeId: string, platform: Platform) {\n super();\n super.setLocale(localeId);\n this._fixYearsRangeIssue = platform.TRIDENT || platform.EDGE;\n }\n\n /** @hidden */\n fromNow?(date: FdDate): string;\n\n /** Get year */\n getYear(date: FdDate): number {\n return date.year;\n }\n\n /** Get month */\n getMonth(date: FdDate): number {\n return date.month;\n }\n\n /** Get date */\n getDate(date: FdDate): number {\n return date.day;\n }\n\n /** Get day of week */\n getDayOfWeek(date: FdDate): number {\n return this._createDateInstanceByFdDate(date).getDay() + 1;\n }\n\n /** Get hours */\n getHours(date: FdDate): number {\n return date.hour;\n }\n\n /** Get minutes */\n getMinutes(date: FdDate): number {\n return date.minute;\n }\n\n /** Get seconds */\n getSeconds(date: FdDate): number {\n return date.second;\n }\n\n /** Get week number */\n getWeekNumber(fdDate: FdDate): number {\n const date = this._createDateInstanceByFdDate(fdDate);\n\n date.setDate(date.getDate() + 3 - ((date.getDay() + 6) % 7));\n\n // January 4 is always in week 1.\n const firstWeek = new Date(date.getFullYear(), 0, 4);\n\n // Adjust to Thursday in week 1 and count number of weeks from date to week1.\n return (\n 1 + Math.round(((date.getTime() - firstWeek.getTime()) / 86400000 - 3 + ((firstWeek.getDay() + 6) % 7)) / 7)\n );\n }\n\n /** Get month names */\n getMonthNames(style: 'long' | 'short' | 'narrow'): string[] {\n const dateTimeFormat = new Intl.DateTimeFormat(this.locale, { month: style, timeZone: 'utc' });\n return range(12, (i) =>\n this._stripDirectionalityCharacters(this._format(dateTimeFormat, new Date(2017, i, 1)))\n );\n }\n\n /** Get date names */\n getDateNames(): string[] {\n const dateTimeFormat = new Intl.DateTimeFormat(this.locale, { day: 'numeric', timeZone: 'utc' });\n return range(31, (i) =>\n this._stripDirectionalityCharacters(this._format(dateTimeFormat, new Date(2017, 0, i + 1)))\n );\n }\n\n /** Get day of week names */\n getDayOfWeekNames(style: 'long' | 'short' | 'narrow'): string[] {\n const dateTimeFormat = new Intl.DateTimeFormat(this.locale, { weekday: style, timeZone: 'utc' });\n return range(7, (i) =>\n this._stripDirectionalityCharacters(this._format(dateTimeFormat, new Date(2017, 0, i + 1)))\n );\n }\n\n /** Get year name */\n getYearName(date: FdDate): string {\n const dateTimeFormat = new Intl.DateTimeFormat(this.locale, { year: 'numeric', timeZone: 'utc' });\n const dateInstance = this._createDateInstanceByFdDate(date);\n return this._stripDirectionalityCharacters(this._format(dateTimeFormat, dateInstance));\n }\n\n /** Get week name */\n getWeekName(date: FdDate): string {\n const weekNumber = this.getWeekNumber(date);\n return weekNumber.toLocaleString(this.locale);\n }\n\n /** Get hour names */\n getHourNames({ meridian, twoDigit }: { twoDigit: boolean; meridian: boolean }): string[] {\n return range(24, (hour) => {\n if (meridian) {\n hour = hour === 0 || hour === 12 ? 12 : hour % 12;\n }\n return hour.toLocaleString(this.locale, { minimumIntegerDigits: twoDigit ? 2 : 1 });\n });\n }\n\n /** Get minute names */\n getMinuteNames({ twoDigit, minuteStep = 1 }: { twoDigit: boolean; minuteStep?: number }): string[] {\n const length = Math.ceil(60 / minuteStep);\n return range(length, (index) => {\n const minute = index * minuteStep;\n return minute.toLocaleString(this.locale, { minimumIntegerDigits: twoDigit ? 2 : 1 });\n });\n }\n\n /** Get second names */\n getSecondNames({ twoDigit }: { twoDigit: boolean }): string[] {\n return range(60, (second) => second.toLocaleString(this.locale, { minimumIntegerDigits: twoDigit ? 2 : 1 }));\n }\n\n /** Get day period names */\n getDayPeriodNames(): [string, string] {\n const DEFAULT_PERIODS: [string, string] = [AM_DAY_PERIOD_DEFAULT, PM_DAY_PERIOD_DEFAULT];\n\n const formatter = new Intl.DateTimeFormat(this.locale, {\n hour: 'numeric',\n minute: 'numeric',\n hour12: true\n });\n\n try {\n const am = formatter.formatToParts(new Date(2020, 0, 1, 6)).find(({ type }) => type === 'dayPeriod')?.value;\n const pm = formatter\n .formatToParts(new Date(2020, 0, 1, 16))\n .find(({ type }) => type === 'dayPeriod')?.value;\n\n return am && pm ? [am, pm] : DEFAULT_PERIODS;\n } catch {\n const dayPeriodRegexp = new RegExp(`(${LETTERS_UNICODE_RANGE}+\\\\.*)+`, 'g');\n const amRegExpMatch = formatter.format(new Date(2020, 0, 1, 6)).match(dayPeriodRegexp);\n const pmRegExpMatch = formatter.format(new Date(2020, 0, 1, 16)).match(dayPeriodRegexp);\n\n return amRegExpMatch && pmRegExpMatch\n ? [amRegExpMatch[0], pmRegExpMatch[0]]\n : [AM_DAY_PERIOD_DEFAULT, PM_DAY_PERIOD_DEFAULT];\n }\n }\n\n /** Set hours */\n setHours(date: FdDate, hours: number): FdDate {\n const dateInstance = this._createDateInstanceByFdDate(date);\n dateInstance.setHours(hours);\n return this._createFdDateFromDateInstance(dateInstance);\n }\n\n /** Set minutes */\n setMinutes(date: FdDate, hours: number): FdDate {\n const dateInstance = this._createDateInstanceByFdDate(date);\n dateInstance.setMinutes(hours);\n return this._createFdDateFromDateInstance(dateInstance);\n }\n\n /** Set seconds */\n setSeconds(date: FdDate, hours: number): FdDate {\n const dateInstance = this._createDateInstanceByFdDate(date);\n dateInstance.setSeconds(hours);\n return this._createFdDateFromDateInstance(dateInstance);\n }\n\n /** Get first day of week */\n getFirstDayOfWeek(): number {\n // can't retrieve this info from Intl object or Date object, default to Sunday.\n return 0;\n }\n\n /** Get number of days in a month */\n getNumDaysInMonth(fdDate: FdDate): number {\n const date = this._createDateInstanceByFdDate(fdDate);\n date.setMonth(date.getMonth() + 1);\n date.setDate(0);\n return date.getDate();\n }\n\n /** Create a date object */\n createDate(year: number, month = 1, date = 1): FdDate {\n return new FdDate(year, month, date);\n }\n\n /** Get a today date object */\n today(): FdDate {\n return FdDate.getToday();\n }\n\n /** Get a now date object */\n now(): FdDate {\n return FdDate.getNow();\n }\n\n /** Parse any value to date object */\n parse(value: any, parseFormat: Intl.DateTimeFormatOptions = {}): FdDate | null {\n if (!value && value !== 0) {\n return null;\n }\n\n if (value instanceof FdDate) {\n return this.clone(value);\n }\n /**\n * We have no way using the native JS Date to set the parse format or locale,\n * so we ignore these parameters.\n */\n let date = new Date(Date.parse(value));\n if (typeof value === 'number') {\n date = new Date(value);\n }\n\n // Check if we are dealing with a time string\n if (\n Number.isNaN(date.valueOf()) &&\n typeof value === 'string' &&\n !parseFormat.year &&\n !parseFormat.day &&\n !parseFormat.month &&\n parseFormat.hour\n ) {\n date = this._parseTimeString(value);\n }\n\n return this._createFdDateFromDateInstance(date);\n }\n\n /** Format date object to string */\n format(date: FdDate, displayFormat: CustomDateTimeFormatOptions): string {\n if (!this.isValid(date)) {\n return INVALID_DATE_ERROR;\n }\n\n // On IE and Edge the i18n API will throw a hard error that can crash the entire app\n // if we attempt to format a date whose year is less than 1 or greater than 9999.\n if (this._fixYearsRangeIssue && (date.year < 1 || date.year > 9999)) {\n date = this.clone(date);\n date.year = Math.max(1, Math.min(9999, date.year));\n }\n displayFormat = { ...displayFormat, timeZone: 'utc' };\n\n return displayFormat.dayPeriod\n ? this._formatWithDayPeriod(date, displayFormat)\n : this._formatWithIntl(date, displayFormat);\n }\n\n /** Add years to a date */\n addCalendarYears(date: FdDate, years: number): FdDate {\n return this.addCalendarMonths(date, years * 12);\n }\n\n /** Add months to a date */\n addCalendarMonths(fdDate: FdDate, months: number): FdDate {\n const date = this._createDateInstanceByFdDate(fdDate);\n\n date.setMonth(date.getMonth() + months);\n\n // It's possible to wind up in the wrong month if the original month has more days than the new\n // month. In this case we want to go to the last day of the desired month.\n if (date.getDate() !== fdDate.day) {\n date.setDate(0);\n }\n\n return this._createFdDateFromDateInstance(date);\n }\n\n /** Add days to a date */\n addCalendarDays(fdDate: FdDate, days: number): FdDate {\n const date = this._createDateInstanceByFdDate(fdDate);\n date.setDate(date.getDate() + days);\n return this._createFdDateFromDateInstance(date);\n }\n\n /** Clone a date object */\n clone(date: FdDate): FdDate {\n return new FdDate(date.year, date.month, date.day, date.hour, date.minute, date.second);\n }\n\n /** Check if date object is valid */\n isValid(date: FdDate): date is FdDate {\n if (!(date instanceof FdDate)) {\n return false;\n }\n return date.isDateValid();\n }\n\n /** Check if date between given dates */\n isBetween(dateToCheck: FdDate, startDate: FdDate, endDate: FdDate): boolean {\n const date = this._createDateInstanceByFdDate(dateToCheck);\n const start = this._createDateInstanceByFdDate(startDate);\n const end = this._createDateInstanceByFdDate(endDate);\n return date.getTime() > start.getTime() && date.getTime() < end.getTime();\n }\n\n /** Check if dates are equal */\n datesEqual(date1: FdDate, date2: FdDate): boolean {\n if (!date1 || !date2) {\n return false;\n }\n // skip time value\n const date1Str = this.toIso8601(date1).split('T')[0];\n const date2Str = this.toIso8601(date2).split('T')[0];\n return date1Str === date2Str;\n }\n\n /** Check if dates and time are equal */\n dateTimesEqual(date1: FdDate, date2: FdDate): boolean {\n if (!date1 || !date2) {\n return false;\n }\n return this.toIso8601(date1) === this.toIso8601(date2);\n }\n\n /** Format date object to ISO8601 string */\n toIso8601(fdDate: FdDate): string {\n return toIso8601(fdDate);\n }\n\n /** Check if a time format includes a day period */\n isTimeFormatIncludesDayPeriod(displayFormat: CustomDateTimeFormatOptions): boolean {\n if (typeof displayFormat?.hour12 === 'boolean') {\n return displayFormat.hour12;\n }\n const formattedDateNoPeriodOption = this.format(this.createDate(2020), displayFormat);\n const formattedDateWithPeriodOption = this.format(this.createDate(2020), { ...displayFormat, hour12: true });\n return formattedDateWithPeriodOption === formattedDateNoPeriodOption;\n }\n\n /** Check if a time format includes hours */\n isTimeFormatIncludesHours(displayFormat: Intl.DateTimeFormatOptions): boolean {\n return typeof displayFormat?.hour === 'string';\n }\n\n /** Check if a time format includes minutes */\n isTimeFormatIncludesMinutes(displayFormat: Intl.DateTimeFormatOptions): boolean {\n return typeof displayFormat?.minute === 'string';\n }\n\n /** Check if a time format includes seconds */\n isTimeFormatIncludesSeconds(displayFormat: Intl.DateTimeFormatOptions): boolean {\n return typeof displayFormat?.second === 'string';\n }\n\n /** Format with custom pattern including day period names */\n private _formatWithDayPeriod(date: FdDate, displayFormat: CustomDateTimeFormatOptions): string {\n const formattedTime = this._formatWithIntl(date, { ...displayFormat, dayPeriod: undefined });\n const dayPeriodName = this._getDayPeriodName(date);\n\n return this._insertDayPeriod(formattedTime, dayPeriodName, displayFormat);\n }\n\n /** Insert day period into the formatted string */\n private _insertDayPeriod(\n formattedTime: string,\n dayPeriodName: FdLanguageKeyIdentifier,\n displayFormat: CustomDateTimeFormatOptions\n ): string {\n if (displayFormat.year || displayFormat.month || displayFormat.day) {\n return formattedTime\n .replace(/(\\d{1,2}:\\d{2})( [AP]M)?/, `$1 ${dayPeriodName}`)\n .replace(/,\\s*(\\d{1,2}:\\d{2})/, `, at $1 ${dayPeriodName}`);\n } else {\n return formattedTime.replace(/(\\d{1,2}:\\d{2}(:\\d{2})?)/, `$1 ${dayPeriodName}`);\n }\n }\n\n /** Get day period name based on the hour */\n private _getDayPeriodName(date: FdDate): FdLanguageKeyIdentifier {\n const hour = date.hour;\n if (hour < 6) {\n return 'coreTime.nightLabel';\n } else if (hour < 12) {\n return 'coreTime.morningLabel';\n } else if (hour < 18) {\n return 'coreTime.afternoonLabel';\n } else {\n return 'coreTime.eveningLabel';\n }\n }\n\n /** Format date using Intl.DateTimeFormat */\n private _formatWithIntl(date: FdDate, displayFormat: any): string {\n const formatter = new Intl.DateTimeFormat(this.locale, displayFormat);\n const dateInstance = this._createDateInstanceByFdDate(date);\n return this._stripDirectionalityCharacters(this._format(formatter, dateInstance));\n }\n\n /**\n * @hidden\n * Strip out unicode LTR and RTL characters. Edge and IE insert these into formatted dates while\n * other browsers do not. We remove them to make output consistent and because they interfere with\n * date parsing.\n * @param str The string to strip direction characters from.\n * @returns The stripped string.\n */\n private _stripDirectionalityCharacters(str: string): string {\n return str.replace(/[\\u200e\\u200f]/g, '').replace(/\\u202f/g, ' ');\n }\n\n /** @hidden */\n private _format(formatter: Intl.DateTimeFormat, date: Date): string {\n if (Number.isNaN(date.valueOf())) {\n return INVALID_DATE_ERROR;\n }\n date = this._createUTCDateInstance(\n date.getFullYear(),\n date.getMonth(),\n date.getDate(),\n date.getHours(),\n date.getMinutes(),\n date.getSeconds(),\n date.getMilliseconds()\n );\n return formatter.format(date);\n }\n\n /**\n * @hidden\n * Create native Date instance from FdDate\n * @param date FdDate instance\n * @returns date Native date instance\n */\n private _createDateInstanceByFdDate(fdDate: FdDate): Date {\n const { year, month, day, hour, minute, second } = fdDate;\n // We have stricter validation rules than Date object.\n // For example, Date allows values for month=100 or for day=100.\n // Therefore, we need to do this trick for the consistency of the validation status\n if (!this.isValid(fdDate)) {\n return new Date(NaN);\n }\n const date = new Date();\n date.setFullYear(year, month - 1, day);\n date.setHours(hour, minute, second, 0);\n return date;\n }\n\n /**\n * @hidden\n * Create native Date instance in UTC\n * @param year The year\n * @param month The month as a number between 0 and 11\n * @param day The date as a number between 1 and 31.\n * @param hours The hours as a number between 0 - 24\n * @param minutes The minutes as a number between 0 - 59\n * @param seconds The seconds as a number between 0 - 59\n * @param milliseconds The milliseconds as a number between 0 - 59\n */\n private _createUTCDateInstance(\n year: number,\n month: number,\n day: number,\n hours = 0,\n minutes = 0,\n seconds = 0,\n milliseconds = 0\n ): Date {\n const utcDate = new Date();\n utcDate.setUTCFullYear(year, month, day);\n utcDate.setUTCHours(hours, minutes, seconds, milliseconds);\n return utcDate;\n }\n\n /** @hidden */\n private _createFdDateFromDateInstance(date: Date): FdDate {\n return new FdDate(\n date.getFullYear(),\n date.getMonth() + 1,\n date.getDate(),\n date.getHours(),\n date.getMinutes(),\n date.getSeconds()\n );\n }\n\n /**\n * @hidden\n *\n * Since FdDatetimeAdapter can parse only \"en-US\" locale\n * there is no reason to create comprehensive time parse\n * that can understand plenty of locales.\n *\n * @param timeStr Time string to parse (E.g. '10:30 PM')\n * @returns date Native date instance\n *\n */\n private _parseTimeString(timeStr: string): Date {\n /**\n * Date.parse('10:30 AM') doesn't work so we need do a trick\n * and prepend it by a date string.\n */\n const dateStr = new Intl.DateTimeFormat('en-US').format(new Date());\n const dateTimeString = `${dateStr} ${timeStr}`;\n return new Date(Date.parse(dateTimeString));\n }\n}\n","import { NgModule, Type } from '@angular/core';\nimport {\n DateFormatPipe,\n DateFromNowPipe,\n DateTimeFormatPipe,\n DayPeriodFormatPipe,\n TranslateDayPeriodPipe\n} from './datetime-format.pipes';\n\nconst PIPES: Type<unknown>[] = [\n DateFormatPipe,\n DateTimeFormatPipe,\n DateFromNowPipe,\n DayPeriodFormatPipe,\n TranslateDayPeriodPipe\n];\n\n/**\n * @deprecated\n * Use imports of `DateFormatPipe`, `DateTimeFormatPipe`, `DateFromNowPipe` instead.\n */\n@NgModule({\n imports: [...PIPES],\n exports: [...PIPES]\n})\nexport class FdDatetimePipesModule {}\n","import { PlatformModule } from '@angular/cdk/platform';\nimport { NgModule } from '@angular/core';\n\nimport { DatetimeAdapter } from './datetime-adapter';\nimport { DATE_TIME_FORMATS } from './datetime-formats';\nimport { FD_DATETIME_FORMATS } from './fd-date-formats';\nimport { FdDatetimeAdapter } from './fd-datetime-adapter';\nimport { FdDatetimePipesModule } from './fd-datetime-pipes.module';\n\n/**\n * @deprecated\n * Use direct imports of components and directives.\n */\n@NgModule({\n imports: [PlatformModule],\n providers: [{ provide: DatetimeAdapter, useClass: FdDatetimeAdapter }]\n})\nexport class FdDatetimeAdapterModule {}\n\n@NgModule({\n imports: [FdDatetimeAdapterModule, FdDatetimePipesModule],\n exports: [FdDatetimePipesModule, FdDatetimeAdapterModule],\n providers: [{ provide: DATE_TIME_FORMATS, useValue: FD_DATETIME_FORMATS }]\n})\nexport class FdDatetimeModule {}\n","import { Provider } from '@angular/core';\nimport { DatetimeAdapter } from './datetime-adapter';\nimport { DATE_TIME_FORMATS } from './datetime-formats';\nimport { FD_DATETIME_FORMATS } from './fd-date-formats';\nimport { FdDatetimeAdapter } from './fd-datetime-adapter';\n\n/**\n * Provides default datetime formats and datetime adapter.\n */\nexport function provideDateTimeFormats(): Provider[] {\n return [\n { provide: DATE_TIME_FORMATS, useValue: FD_DATETIME_FORMATS },\n {\n provide: DatetimeAdapter,\n useClass: FdDatetimeAdapter\n }\n ];\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["i1.DatetimeAdapter"],"mappings":";;;;;;;;;;AAGA;;;;;AAKG;MACmB,eAAe,CAAA;AAyTjC,IAAA,WAAA,GAAA;;AAFQ,QAAA,IAAA,CAAA,cAAc,GAAkB,IAAI,OAAO,EAAE;QAGjD,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,cAAc,CAAC,YAAY,EAAE;IAC3D;AACA;;;AAGG;AACH,IAAA,SAAS,CAAC,MAAc,EAAA;AACpB,QAAA,IAAI,CAAC,MAAM,GAAG,MAAM;AACpB,QAAA,IAAI,CAAC,cAAc,CAAC,IAAI,EAAE;IAC9B;AAEA;;;;;;;AAOG;AACH,IAAA,OAAO,CAAC,IAAO,EAAE,KAAa,EAAE,OAAe,EAAE,OAAe,EAAA;QAC5D,IAAI,GAAG,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,KAAK,CAAC;QACjC,IAAI,GAAG,IAAI,CAAC,UAAU,CAAC,IAAI,EAAE,OAAO,CAAC;QACrC,IAAI,GAAG,IAAI,CAAC,UAAU,CAAC,IAAI,EAAE,OAAO,CAAC;AACrC,QAAA,OAAO,IAAI;IACf;AAEA;;;;;;AAMG;AACH,IAAA,gBAAgB,CAAC,IAAY,EAAE,KAAa,EAAE,cAAsB,EAAA;AAChE,QAAA,MAAM,YAAY,GAAG,IAAI,IAAI,CAAC,IAAI,EAAE,KAAK,GAAG,CAAC,EAAE,CAAC,CAAC;QACjD,MAAM,WAAW,GAAG,IAAI,IAAI,CAAC,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC;AAE5C,QAAA,MAAM,SAAS,GAAG,CAAC,YAAY,CAAC,MAAM,EAAE,GAAG,cAAc,GAAG,CAAC,IAAI,CAAC;QAClE,MAAM,IAAI,GAAG,SAAS,GAAG,WAAW,CAAC,OAAO,EAAE;QAE9C,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI,GAAG,CAAC,CAAC;IAC9B;AAEA;;;;;;AAMG;IACH,WAAW,CAAC,KAAQ,EAAE,MAAS,EAAA;AAC3B,QAAA,QACI,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC;YAC1C,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC;YAC5C,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC;YAC1C,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC;YAC5C,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC;AAChD,YAAA,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC;IAExD;AACH;;ACtWD;;AAEG;MACU,iBAAiB,GAAG,IAAI,cAAc,CAAkB,cAAc;;MCjBtE,cAAc,CAAA;;IAEvB,WAAA,CACY,gBAAoC,EACG,gBAAiC,EAAA;QADxE,IAAA,CAAA,gBAAgB,GAAhB,gBAAgB;QACuB,IAAA,CAAA,gBAAgB,GAAhB,gBAAgB;IAChE;;AAGH,IAAA,SAAS,CAAC,IAAO,EAAE,aAAa,GAAG,EAAE,EAAA;QACjC,IAAI,IAAI,EAAE;AACN,YAAA,OAAO,IAAI,CAAC,gBAAgB,CAAC,MAAM,CAAC,IAAI,EAAE,IAAI,CAAC,gBAAgB,CAAC,OAAO,CAAC,SAAS,CAAC;QACtF;aAAO;AACH,YAAA,OAAO,aAAa;QACxB;IACJ;AAdS,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,kBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,cAAc,8CAIC,iBAAiB,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,IAAA,EAAA,CAAA,CAAA;4GAJhC,cAAc,EAAA,YAAA,EAAA,IAAA,EAAA,IAAA,EAAA,YAAA,EAAA,CAAA,CAAA;;2FAAd,cAAc,EAAA,UAAA,EAAA,CAAA;kBAJ1B,IAAI;AAAC,YAAA,IAAA,EAAA,CAAA;AACF,oBAAA,IAAI,EAAE,YAAY;AAClB,oBAAA,UAAU,EAAE;AACf,iBAAA;;0BAKQ;;0BAAY,MAAM;2BAAC,iBAAiB;;MAiBhC,kBAAkB,CAAA;;IAE3B,WAAA,CACY,gBAAoC,EACG,gBAAiC,EAAA;QADxE,IAAA,CAAA,gBAAgB,GAAhB,gBAAgB;QACuB,IAAA,CAAA,gBAAgB,GAAhB,gBAAgB;IAChE;;AAGH,IAAA,SAAS,CAAC,IAAO,EAAE,aAAa,GAAG,EAAE,EAAA;QACjC,IAAI,IAAI,EAAE;AACN,YAAA,OAAO,IAAI,CAAC,gBAAgB,CAAC,MAAM,CAAC,IAAI,EAAE,IAAI,CAAC,gBAAgB,CAAC,OAAO,CAAC,aAAa,CAAC;QAC1F;aAAO;AACH,YAAA,OAAO,aAAa;QACxB;IACJ;AAdS,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,kBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,kBAAkB,8CAIH,iBAAiB,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,IAAA,EAAA,CAAA,CAAA;4GAJhC,kBAAkB,EAAA,YAAA,EAAA,IAAA,EAAA,IAAA,EAAA,gBAAA,EAAA,CAAA,CAAA;;2FAAlB,kBAAkB,EAAA,UAAA,EAAA,CAAA;kBAJ9B,IAAI;AAAC,YAAA,IAAA,EAAA,CAAA;AACF,oBAAA,IAAI,EAAE,gBAAgB;AACtB,oBAAA,UAAU,EAAE;AACf,iBAAA;;0BAKQ;;0BAAY,MAAM;2BAAC,iBAAiB;;MAiBhC,eAAe,CAAA;;AAExB,IAAA,WAAA,CAAoB,gBAAoC,EAAA;QAApC,IAAA,CAAA,gBAAgB,GAAhB,gBAAgB;IAAuB;;AAG3D,IAAA,SAAS,CAAC,IAAO,EAAE,aAAa,GAAG,EAAE,EAAA;AACjC,QAAA,IAAI,IAAI,CAAC,gBAAgB,CAAC,OAAO,IAAI,OAAO,IAAI,CAAC,gBAAgB,CAAC,OAAO,KAAK,UAAU,EAAE;YACtF,IAAI,IAAI,EAAE;gBACN,OAAO,IAAI,CAAC,gBAAgB,CAAC,OAAO,CAAC,IAAI,CAAC;YAC9C;iBAAO;AACH,gBAAA,OAAO,aAAa;YACxB;QACJ;aAAO;AACH,YAAA,OAAO,CAAC,IAAI,CAAC,qDAAqD,CAAC;AACnE,YAAA,OAAO,EAAE;QACb;IACJ;8GAhBS,eAAe,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAA,eAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,IAAA,EAAA,CAAA,CAAA;4GAAf,eAAe,EAAA,YAAA,EAAA,IAAA,EAAA,IAAA,EAAA,aAAA,EAAA,CAAA,CAAA;;2FAAf,eAAe,EAAA,UAAA,EAAA,CAAA;kBAJ3B,IAAI;AAAC,YAAA,IAAA,EAAA,CAAA;AACF,oBAAA,IAAI,EAAE,aAAa;AACnB,oBAAA,UAAU,EAAE;AACf,iBAAA;;MAwBY,mBAAmB,CAAA;;IAE5B,WAAA,CACY,gBAAoC,EACG,gBAAiC,EAAA;QADxE,IAAA,CAAA,gBAAgB,GAAhB,gBAAgB;QACuB,IAAA,CAAA,gBAAgB,GAAhB,gBAAgB;IAChE;;IAGH,SAAS,CAAC,IAAO,EAAE,YAAA,GAAoB,EAAE,EAAE,aAAa,GAAG,EAAE,EAAA;QACzD,IAAI,CAAC,IAAI,EAAE;AACP,YAAA,OAAO,aAAa;QACxB;QAEA,OAAO,IAAI,CAAC,gBAAgB,CAAC,MAAM,CAAC,IAAI,EAAE,YAAY,CAAC;IAC3D;AAdS,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,kBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,mBAAmB,8CAIJ,iBAAiB,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,IAAA,EAAA,CAAA,CAAA;4GAJhC,mBAAmB,EAAA,YAAA,EAAA,IAAA,EAAA,IAAA,EAAA,iBAAA,EAAA,CAAA,CAAA;;2FAAnB,mBAAmB,EAAA,UAAA,EAAA,CAAA;kBAJ/B,IAAI;AAAC,YAAA,IAAA,EAAA,CAAA;AACF,oBAAA,IAAI,EAAE,iBAAiB;AACvB,oBAAA,UAAU,EAAE;AACf,iBAAA;;0BAKQ;;0BAAY,MAAM;2BAAC,iBAAiB;;MAkBhC,sBAAsB,CAAA;;AAQ/B,IAAA,WAAA,CAAyC,UAAkC,EAAA;QAAlC,IAAA,CAAA,UAAU,GAAV,UAAU;;AANlC,QAAA,IAAA,CAAA,oBAAoB,GAAG,IAAI,mBAAmB,EAAE;AAO7D,QAAA,IAAI,CAAC,sBAAsB,GAAG,QAAQ,CAAC,IAAI,CAAC,UAAU,EAAE,EAAE,YAAY,EAAE,EAAgB,EAAE,CAAC;IAC/F;;AAGA,IAAA,SAAS,CAAC,KAAoB,EAAA;QAC1B,IAAI,CAAC,KAAK,EAAE;AACR,YAAA,OAAO,KAAK;QAChB;QAEA,MAAM,gBAAgB,GAAG,sBAAsB;QAC/C,MAAM,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC,gBAAgB,CAAC;AAE3C,QAAA,IAAI,KAAK,GAAG,CAAC,CAAC,EAAE;AACZ,YAAA,MAAM,eAAe,GAAG,IAAI,CAAC,sBAAsB,EAAE;AACrD,YAAA,MAAM,eAAe,GAAG,IAAI,CAAC,oBAAoB,CAAC,OAAO,CACrD,eAAe,EACf,KAAK,CAAC,CAAC,CAA4B,CACtC;AACD,YAAA,OAAO,eAAe,GAAG,KAAK,CAAC,OAAO,CAAC,gBAAgB,EAAE,eAAe,CAAC,GAAG,KAAK;QACrF;;AAGA,QAAA,OAAO,KAAK;IAChB;AAhCS,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,kBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,sBAAsB,kBAQX,WAAW,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,IAAA,EAAA,CAAA,CAAA;4GARtB,sBAAsB,EAAA,YAAA,EAAA,IAAA,EAAA,IAAA,EAAA,oBAAA,EAAA,IAAA,EAAA,KAAA,EAAA,CAAA,CAAA;;2FAAtB,sBAAsB,EAAA,UAAA,EAAA,CAAA;kBALlC,IAAI;AAAC,YAAA,IAAA,EAAA,CAAA;AACF,oBAAA,IAAI,EAAE,oBAAoB;AAC1B,oBAAA,UAAU,EAAE,IAAI;oBAChB,IAAI,EAAE,KAAK;AACd,iBAAA;;0BASgB,MAAM;2BAAC,WAAW;;;AC1GnC;;;;;AAKG;AACG,SAAU,sBAAsB,CAAC,QAAgB,EAAA;AACnD,IAAA,MAAM,gBAAgB,GAAG;AACrB,QAAA,OAAO,EAAE,CAAC;AACV,QAAA,SAAS,EAAE,EAAE;AACb,QAAA,OAAO,EAAE,EAAE;AACX,QAAA,KAAK,EAAE;KACV;IAED,MAAM,gBAAgB,GAAG,uCAAuC;IAChE,MAAM,WAAW,GAAG,cAAc;AAElC,IAAA,MAAM,gBAAgB,GAAG,CAAC,KAAa,KAAY;QAC/C,MAAM,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC,gBAAgB,CAAC;QAC3C,IAAI,KAAK,EAAE;YACP,MAAM,MAAM,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE;AACrC,YAAA,MAAM,SAAS,GAAG,gBAAgB,CAAC,MAAM,CAAC;AAC1C,YAAA,KAAK,GAAG,KAAK,CAAC,OAAO,CAAC,gBAAgB,EAAE,EAAE,CAAC,CAAC,IAAI,EAAE;YAClD,MAAM,SAAS,GAAG,KAAK,CAAC,KAAK,CAAC,eAAe,CAAC;YAC9C,IAAI,SAAS,EAAE;AACX,gBAAA,MAAM,CAAC,QAAQ,EAAE,UAAU,CAAC,GAAG,SAAS,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC;AACtD,gBAAA,IAAI,KAAK,GAAG,MAAM,CAAC,QAAQ,CAAC;AAC5B,gBAAA,MAAM,OAAO,GAAG,MAAM,CAAC,UAAU,CAAC;gBAClC,KAAK,GAAG,CAAC,KAAK,GAAG,EAAE,IAAI,SAAS;AAChC,gBAAA,KAAK,GAAG,KAAK,CAAC,OAAO,CACjB,SAAS,CAAC,CAAC,CAAC,EACZ,GAAG,KAAK,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,CAAA,CAAA,EAAI,OAAO,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,CAAA,CAAE,CAChF;YACL;QACJ;AACA,QAAA,OAAO,KAAK;AAChB,IAAA,CAAC;AAED,IAAA,MAAM,WAAW,GAAG,CAAC,KAAa,KAAY;QAC1C,MAAM,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC,WAAW,CAAC;QACtC,IAAI,KAAK,EAAE;YACP,MAAM,MAAM,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE;AACrC,YAAA,KAAK,GAAG,KAAK,CAAC,OAAO,CAAC,WAAW,EAAE,EAAE,CAAC,CAAC,IAAI,EAAE;YAC7C,MAAM,SAAS,GAAG,KAAK,CAAC,KAAK,CAAC,eAAe,CAAC;YAC9C,IAAI,SAAS,EAAE;AACX,gBAAA,MAAM,CAAC,QAAQ,EAAE,UAAU,CAAC,GAAG,SAAS,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC;AACtD,gBAAA,IAAI,KAAK,GAAG,MAAM,CAAC,QAAQ,CAAC;AAC5B,gBAAA,MAAM,OAAO,GAAG,MAAM,CAAC,UAAU,CAAC;gBAClC,IAAI,MAAM,KAAK,IAAI,IAAI,KAAK,GAAG,EAAE,EAAE;oBAC/B,KAAK,IAAI,EAAE;gBACf;gBACA,IAAI,MAAM,KAAK,IAAI,IAAI,KAAK,KAAK,EAAE,EAAE;oBACjC,KAAK,GAAG,CAAC;gBACb;AACA,gBAAA,KAAK,GAAG,KAAK,CAAC,OAAO,CACjB,SAAS,CAAC,CAAC,CAAC,EACZ,GAAG,KAAK,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,CAAA,CAAA,EAAI,OAAO,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,CAAA,CAAE,CAChF;YACL;QACJ;AACA,QAAA,OAAO,KAAK;AAChB,IAAA,CAAC;AAED,IAAA,QAAQ,GAAG,gBAAgB,CAAC,QAAQ,CAAC;AACrC,IAAA,QAAQ,GAAG,WAAW,CAAC,QAAQ,CAAC;IAEhC,OAAO,QAAQ,CAAC,OAAO,CAAC,SAAS,EAAE,EAAE,CAAC,CAAC,IAAI,EAAE;AACjD;;ACnEA;AACM,SAAU,QAAQ,CAAC,CAAS,EAAA;AAC9B,IAAA,OAAO,CAAC,KAAK,CAAC,GAAG,EAAE,GAAG,CAAA,CAAA,EAAI,CAAC,EAAE,GAAG,CAAA,EAAG,CAAC,EAAE;AAC1C;AAEA;AACM,SAAU,SAAS,CAAC,MAOzB,EAAA;IACG,OAAO;QACH,CAAC,MAAM,CAAC,IAAI,EAAE,QAAQ,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,QAAQ,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC;QACrE,GAAG;QACH,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG;AACrF,KAAA,CAAC,IAAI,CAAC,EAAE,CAAC;AACd;AAEA;;AAEG;AACG,SAAU,eAAe,CAAC,MAO/B,EAAA;AACG,IAAA,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,GAAG,MAAM;IACzD,IACI,CAAC,kBAAkB,CAAC,KAAK,EAAE,CAAC,EAAE,EAAE,CAAC;AACjC,QAAA,CAAC,kBAAkB,CAAC,GAAG,EAAE,CAAC,EAAE,EAAE,CAAC;AAC/B,QAAA,CAAC,kBAAkB,CAAC,IAAI,EAAE,CAAC,EAAE,EAAE,CAAC;AAChC,QAAA,CAAC,kBAAkB,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QAClC,CAAC,kBAAkB,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC,EACpC;AACE,QAAA,OAAO,KAAK;IAChB;IACA,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,GAAG,IAAI,IAAI,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE;AAC7D,QAAA,MAAM,QAAQ,GAAG,IAAI,IAAI,CAAC,IAAI,EAAE,KAAK,GAAG,CAAC,EAAE,GAAG,CAAC;QAC/C,IAAI,QAAQ,CAAC,QAAQ,EAAE,GAAG,CAAC,KAAK,KAAK,EAAE;AACnC,YAAA,OAAO,KAAK;QAChB;IACJ;AACA,IAAA,MAAM,IAAI,GAAG,IAAI,IAAI,CAAC,IAAI,EAAE,KAAK,GAAG,CAAC,EAAE,GAAG,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,CAAC;IACjE,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC;AACxC;AAEA,SAAS,kBAAkB,CAAC,KAAyB,EAAE,IAAY,EAAE,EAAU,EAAA;AAC3E,IAAA,OAAO,KAAK,IAAI,IAAI,KAAK,KAAK,IAAI,IAAI,IAAI,KAAK,IAAI,EAAE,CAAC;AAC1D;;ACnDA;;;;;;AAMG;MACU,MAAM,CAAA;AAqCf;;;;;;;;AAQG;AACH,IAAA,WAAA,CACI,IAAa,EACb,KAAA,GAAgB,CAAC,EACjB,GAAA,GAAc,CAAC,EACf,IAAA,GAAe,CAAC,EAChB,MAAA,GAAiB,CAAC,EAClB,SAAiB,CAAC,EAAA;AAElB,QAAA,IAAI,IAAI,KAAK,SAAS,EAAE;AACpB,YAAA,OAAO,MAAM,CAAC,MAAM,EAAE;QAC1B;QAEA,IAAI,GAAG,MAAM,CAAC,QAAQ,CAAC,IAAI,GAAG,EAAE,EAAE,EAAE,CAAC;QACrC,KAAK,GAAG,MAAM,CAAC,QAAQ,CAAC,KAAK,GAAG,EAAE,EAAE,EAAE,CAAC;QACvC,GAAG,GAAG,MAAM,CAAC,QAAQ,CAAC,GAAG,GAAG,EAAE,EAAE,EAAE,CAAC;QACnC,IAAI,GAAG,MAAM,CAAC,QAAQ,CAAC,IAAI,GAAG,EAAE,EAAE,EAAE,CAAC;QACrC,MAAM,GAAG,MAAM,CAAC,QAAQ,CAAC,MAAM,GAAG,EAAE,EAAE,EAAE,CAAC;QACzC,MAAM,GAAG,MAAM,CAAC,QAAQ,CAAC,MAAM,GAAG,EAAE,EAAE,EAAE,CAAC;AAEzC,QAAA,IAAI,CAAC,QAAQ,GAAG,eAAe,CAAC;YAC5B,IAAI;YACJ,KAAK;YACL,GAAG;YACH,IAAI;YACJ,MAAM;YACN;AACH,SAAA,CAAC;AAEF,QAAA,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,QAAQ,GAAG,IAAI,GAAG,GAAG;AACtC,QAAA,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,QAAQ,GAAG,KAAK,GAAG,GAAG;AACxC,QAAA,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC,QAAQ,GAAG,GAAG,GAAG,GAAG;AACpC,QAAA,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,QAAQ,GAAG,IAAI,GAAG,GAAG;AACtC,QAAA,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,QAAQ,GAAG,MAAM,GAAG,GAAG;AAC1C,QAAA,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,QAAQ,GAAG,MAAM,GAAG,GAAG;AAE1C,QAAA,OAAO,IAAI;IACf;AAEA;;AAEG;AACH,IAAA,OAAO,MAAM,GAAA;QACT,OAAO,MAAM,CAAC,eAAe,CAAC,IAAI,IAAI,EAAE,CAAC;IAC7C;AAEA;;AAEG;AACH,IAAA,OAAO,QAAQ,GAAA;AACX,QAAA,OAAO,MAAM,CAAC,MAAM,EAAE,CAAC,OAAO,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;IAC3C;AAEA;;AAEG;IACH,OAAO,eAAe,CAAC,IAAU,EAAA;AAC7B,QAAA,OAAO,IAAI,MAAM,CACb,IAAI,CAAC,WAAW,EAAE,EAClB,IAAI,CAAC,QAAQ,EAAE,GAAG,CAAC,EACnB,IAAI,CAAC,OAAO,EAAE,EACd,IAAI,CAAC,QAAQ,EAAE,EACf,IAAI,CAAC,UAAU,EAAE,EACjB,IAAI,CAAC,UAAU,EAAE,CACpB;IACL;AAEA;;;;;AAKG;AACH,IAAA,OAAO,CAAC,IAAY,EAAE,MAAe,EAAE,MAAe,EAAA;AAClD,QAAA,IAAI,CAAC,QAAQ,GAAG,eAAe,CAAC;YAC5B,IAAI,EAAE,IAAI,CAAC,IAAI;YACf,KAAK,EAAE,IAAI,CAAC,KAAK;YACjB,GAAG,EAAE,IAAI,CAAC,GAAG;YACb,IAAI;YACJ,MAAM;YACN;AACH,SAAA,CAAC;AAEF,QAAA,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE;AAChB,YAAA,IAAI,CAAC,IAAI,GAAG,GAAG;AACf,YAAA,IAAI,CAAC,MAAM,GAAG,GAAG;AACjB,YAAA,IAAI,CAAC,MAAM,GAAG,GAAG;QACrB;aAAO;AACH,YAAA,IAAI,CAAC,IAAI,GAAG,IAAI,IAAI,IAAI,KAAK,CAAC,GAAG,IAAI,GAAG,IAAI,CAAC,IAAI;AACjD,YAAA,IAAI,CAAC,MAAM,GAAG,MAAM,IAAI,MAAM,KAAK,CAAC,GAAG,MAAM,GAAG,IAAI,CAAC,MAAM;AAC3D,YAAA,IAAI,CAAC,MAAM,GAAG,MAAM,IAAI,MAAM,KAAK,CAAC,GAAG,MAAM,GAAG,IAAI,CAAC,MAAM;QAC/D;AAEA,QAAA,OAAO,IAAI;IACf;AAEA;;AAEG;IACH,YAAY,GAAA;AACR,QAAA,OAAO,IAAI,CAAC,MAAM,EAAE,CAAC,OAAO,EAAE;IAClC;AAEA;;AAEG;IACH,YAAY,GAAA;QACR,OAAO,IAAI,CAAC,MAAM,EAAE,CAAC,MAAM,EAAE,GAAG,CAAC;IACrC;AAEA;;AAEG;IACH,MAAM,GAAA;;;;AAIF,QAAA,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,EAAE;AACrB,YAAA,OAAO,IAAI,IAAI,CAAC,GAAG,CAAC;QACxB;AACA,QAAA,OAAO,IAAI,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,KAAK,GAAG,CAAC,EAAE,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,MAAM,CAAC;IAC7F;AAEA;;AAEG;IACH,WAAW,GAAA;AACP,QAAA,OAAO,IAAI,YAAY,MAAM,IAAI,IAAI,CAAC,QAAQ;IAClD;AAEA;;AAEG;IACH,QAAQ,GAAA;AACJ,QAAA,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,EAAE;AACrB,YAAA,OAAO,kBAAkB;QAC7B;AACA,QAAA,IAAI,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,KAAK,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE;AACxC,YAAA,OAAO,EAAE;QACb;AAEA,QAAA,OAAO,SAAS,CAAC,IAAI,CAAC;IAC1B;AAEA;;;AAGG;IACH,OAAO,GAAA;AACH,QAAA,OAAO,IAAI,CAAC,YAAY,EAAE;IAC9B;AAEA;;AAEG;IACH,YAAY,GAAA;AACR,QAAA,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,EAAE;AACrB,YAAA,OAAO,kBAAkB;QAC7B;AACA,QAAA,IAAI,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,KAAK,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE;AACxC,YAAA,OAAO,EAAE;QACb;AAEA,QAAA,OAAO,SAAS,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;IACxC;AAEA;;AAEG;IACH,YAAY,GAAA;AACR,QAAA,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,EAAE;AACrB,YAAA,OAAO,kBAAkB;QAC7B;AACA,QAAA,IAAI,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,KAAK,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE;AACxC,YAAA,OAAO,EAAE;QACb;AACA,QAAA,OAAO,SAAS,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;IACxC;AACH;;ACvOD,MAAM,SAAS,GAAG,EAAE,IAAI,EAAE,SAAS,EAAE,KAAK,EAAE,SAAS,EAAE,GAAG,EAAE,SAAS,EAAE;AACvE,MAAM,SAAS,GAAG,EAAE,IAAI,EAAE,SAAS,EAAE,MAAM,EAAE,SAAS,EAAE;AACxD,MAAM,aAAa,GAAG;AAClB,IAAA,IAAI,EAAE,SAAS;AACf,IAAA,KAAK,EAAE,SAAS;AAChB,IAAA,GAAG,EAAE,SAAS;AACd,IAAA,IAAI,EAAE,SAAS;AACf,IAAA,MAAM,EAAE;CACX;AAEM,MAAM,mBAAmB,GAAoB;AAChD,IAAA,KAAK,EAAE;QACH,SAAS;QACT,SAAS;QACT;AACH,KAAA;AACD,IAAA,OAAO,EAAE;QACL,SAAS;QACT,SAAS;QACT,aAAa;AAEb,QAAA,aAAa,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,EAAE,SAAS,EAAE;QACjE,cAAc,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,SAAS,EAAE;AAClD,QAAA,aAAa,EAAE,EAAE,IAAI,EAAE,SAAS;AACnC,KAAA;AACD,IAAA,cAAc,EAAE;;;ACjBpB,MAAM,qBAAqB,GAAG,IAAI;AAClC,MAAM,qBAAqB,GAAG,IAAI;AAMlC;;;;;;AAMG;AAEG,MAAO,iBAAkB,SAAQ,eAAuB,CAAA;;IAK1D,WAAA,CAA2C,QAAgB,EAAE,QAAkB,EAAA;AAC3E,QAAA,KAAK,EAAE;AACP,QAAA,KAAK,CAAC,SAAS,CAAC,QAAQ,CAAC;QACzB,IAAI,CAAC,mBAAmB,GAAG,QAAQ,CAAC,OAAO,IAAI,QAAQ,CAAC,IAAI;IAChE;;AAMA,IAAA,OAAO,CAAC,IAAY,EAAA;QAChB,OAAO,IAAI,CAAC,IAAI;IACpB;;AAGA,IAAA,QAAQ,CAAC,IAAY,EAAA;QACjB,OAAO,IAAI,CAAC,KAAK;IACrB;;AAGA,IAAA,OAAO,CAAC,IAAY,EAAA;QAChB,OAAO,IAAI,CAAC,GAAG;IACnB;;AAGA,IAAA,YAAY,CAAC,IAAY,EAAA;QACrB,OAAO,IAAI,CAAC,2BAA2B,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,GAAG,CAAC;IAC9D;;AAGA,IAAA,QAAQ,CAAC,IAAY,EAAA;QACjB,OAAO,IAAI,CAAC,IAAI;IACpB;;AAGA,IAAA,UAAU,CAAC,IAAY,EAAA;QACnB,OAAO,IAAI,CAAC,MAAM;IACtB;;AAGA,IAAA,UAAU,CAAC,IAAY,EAAA;QACnB,OAAO,IAAI,CAAC,MAAM;IACtB;;AAGA,IAAA,aAAa,CAAC,MAAc,EAAA;QACxB,MAAM,IAAI,GAAG,IAAI,CAAC,2BAA2B,CAAC,MAAM,CAAC;QAErD,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,EAAE,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC;;AAG5D,QAAA,MAAM,SAAS,GAAG,IAAI,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC;;AAGpD,QAAA,QACI,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,EAAE,GAAG,SAAS,CAAC,OAAO,EAAE,IAAI,QAAQ,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC;IAEpH;;AAGA,IAAA,aAAa,CAAC,KAAkC,EAAA;QAC5C,MAAM,cAAc,GAAG,IAAI,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,MAAM,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,QAAQ,EAAE,KAAK,EAAE,CAAC;AAC9F,QAAA,OAAO,KAAK,CAAC,EAAE,EAAE,CAAC,CAAC,KACf,IAAI,CAAC,8BAA8B,CAAC,IAAI,CAAC,OAAO,CAAC,cAAc,EAAE,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAC1F;IACL;;IAGA,YAAY,GAAA;QACR,MAAM,cAAc,GAAG,IAAI,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,MAAM,EAAE,EAAE,GAAG,EAAE,SAAS,EAAE,QAAQ,EAAE,KAAK,EAAE,CAAC;AAChG,QAAA,OAAO,KAAK,CAAC,EAAE,EAAE,CAAC,CAAC,KACf,IAAI,CAAC,8BAA8B,CAAC,IAAI,CAAC,OAAO,CAAC,cAAc,EAAE,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAC9F;IACL;;AAGA,IAAA,iBAAiB,CAAC,KAAkC,EAAA;QAChD,MAAM,cAAc,GAAG,IAAI,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,MAAM,EAAE,EAAE,OAAO,EAAE,KAAK,EAAE,QAAQ,EAAE,KAAK,EAAE,CAAC;AAChG,QAAA,OAAO,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,KACd,IAAI,CAAC,8BAA8B,CAAC,IAAI,CAAC,OAAO,CAAC,cAAc,EAAE,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAC9F;IACL;;AAGA,IAAA,WAAW,CAAC,IAAY,EAAA;QACpB,MAAM,cAAc,GAAG,IAAI,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,MAAM,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,QAAQ,EAAE,KAAK,EAAE,CAAC;QACjG,MAAM,YAAY,GAAG,IAAI,CAAC,2BAA2B,CAAC,IAAI,CAAC;AAC3D,QAAA,OAAO,IAAI,CAAC,8BAA8B,CAAC,IAAI,CAAC,OAAO,CAAC,cAAc,EAAE,YAAY,CAAC,CAAC;IAC1F;;AAGA,IAAA,WAAW,CAAC,IAAY,EAAA;QACpB,MAAM,UAAU,GAAG,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC;QAC3C,OAAO,UAAU,CAAC,cAAc,CAAC,IAAI,CAAC,MAAM,CAAC;IACjD;;AAGA,IAAA,YAAY,CAAC,EAAE,QAAQ,EAAE,QAAQ,EAA4C,EAAA;AACzE,QAAA,OAAO,KAAK,CAAC,EAAE,EAAE,CAAC,IAAI,KAAI;YACtB,IAAI,QAAQ,EAAE;AACV,gBAAA,IAAI,GAAG,IAAI,KAAK,CAAC,IAAI,IAAI,KAAK,EAAE,GAAG,EAAE,GAAG,IAAI,GAAG,EAAE;YACrD;YACA,OAAO,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,MAAM,EAAE,EAAE,oBAAoB,EAAE,QAAQ,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC;AACvF,QAAA,CAAC,CAAC;IACN;;AAGA,IAAA,cAAc,CAAC,EAAE,QAAQ,EAAE,UAAU,GAAG,CAAC,EAA8C,EAAA;QACnF,MAAM,MAAM,GAAG,IAAI,CAAC,IAAI,CAAC,EAAE,GAAG,UAAU,CAAC;AACzC,QAAA,OAAO,KAAK,CAAC,MAAM,EAAE,CAAC,KAAK,KAAI;AAC3B,YAAA,MAAM,MAAM,GAAG,KAAK,GAAG,UAAU;YACjC,OAAO,MAAM,CAAC,cAAc,CAAC,IAAI,CAAC,MAAM,EAAE,EAAE,oBAAoB,EAAE,QAAQ,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC;AACzF,QAAA,CAAC,CAAC;IACN;;IAGA,cAAc,CAAC,EAAE,QAAQ,EAAyB,EAAA;AAC9C,QAAA,OAAO,KAAK,CAAC,EAAE,EAAE,CAAC,MAAM,KAAK,MAAM,CAAC,cAAc,CAAC,IAAI,CAAC,MAAM,EAAE,EAAE,oBAAoB,EAAE,QAAQ,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IAChH;;IAGA,iBAAiB,GAAA;AACb,QAAA,MAAM,eAAe,GAAqB,CAAC,qBAAqB,EAAE,qBAAqB,CAAC;QAExF,MAAM,SAAS,GAAG,IAAI,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,MAAM,EAAE;AACnD,YAAA,IAAI,EAAE,SAAS;AACf,YAAA,MAAM,EAAE,SAAS;AACjB,YAAA,MAAM,EAAE;AACX,SAAA,CAAC;AAEF,QAAA,IAAI;AACA,YAAA,MAAM,EAAE,GAAG,SAAS,CAAC,aAAa,CAAC,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,IAAI,EAAE,KAAK,IAAI,KAAK,WAAW,CAAC,EAAE,KAAK;YAC3G,MAAM,EAAE,GAAG;AACN,iBAAA,aAAa,CAAC,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;AACtC,iBAAA,IAAI,CAAC,CAAC,EAAE,IAAI,EAAE,KAAK,IAAI,KAAK,WAAW,CAAC,EAAE,KAAK;AAEpD,YAAA,OAAO,EAAE,IAAI,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,CAAC,GAAG,eAAe;QAChD;AAAE,QAAA,MAAM;YACJ,MAAM,eAAe,GAAG,IAAI,MAAM,CAAC,CAAA,CAAA,EAAI,qBAAqB,CAAA,OAAA,CAAS,EAAE,GAAG,CAAC;YAC3E,MAAM,aAAa,GAAG,SAAS,CAAC,MAAM,CAAC,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,eAAe,CAAC;YACtF,MAAM,aAAa,GAAG,SAAS,CAAC,MAAM,CAAC,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,eAAe,CAAC;YAEvF,OAAO,aAAa,IAAI;kBAClB,CAAC,aAAa,CAAC,CAAC,CAAC,EAAE,aAAa,CAAC,CAAC,CAAC;AACrC,kBAAE,CAAC,qBAAqB,EAAE,qBAAqB,CAAC;QACxD;IACJ;;IAGA,QAAQ,CAAC,IAAY,EAAE,KAAa,EAAA;QAChC,MAAM,YAAY,GAAG,IAAI,CAAC,2BAA2B,CAAC,IAAI,CAAC;AAC3D,QAAA,YAAY,CAAC,QAAQ,CAAC,KAAK,CAAC;AAC5B,QAAA,OAAO,IAAI,CAAC,6BAA6B,CAAC,YAAY,CAAC;IAC3D;;IAGA,UAAU,CAAC,IAAY,EAAE,KAAa,EAAA;QAClC,MAAM,YAAY,GAAG,IAAI,CAAC,2BAA2B,CAAC,IAAI,CAAC;AAC3D,QAAA,YAAY,CAAC,UAAU,CAAC,KAAK,CAAC;AAC9B,QAAA,OAAO,IAAI,CAAC,6BAA6B,CAAC,YAAY,CAAC;IAC3D;;IAGA,UAAU,CAAC,IAAY,EAAE,KAAa,EAAA;QAClC,MAAM,YAAY,GAAG,IAAI,CAAC,2BAA2B,CAAC,IAAI,CAAC;AAC3D,QAAA,YAAY,CAAC,UAAU,CAAC,KAAK,CAAC;AAC9B,QAAA,OAAO,IAAI,CAAC,6BAA6B,CAAC,YAAY,CAAC;IAC3D;;IAGA,iBAAiB,GAAA;;AAEb,QAAA,OAAO,CAAC;IACZ;;AAGA,IAAA,iBAAiB,CAAC,MAAc,EAAA;QAC5B,MAAM,IAAI,GAAG,IAAI,CAAC,2BAA2B,CAAC,MAAM,CAAC;QACrD,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,QAAQ,EAAE,GAAG,CAAC,CAAC;AAClC,QAAA,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC;AACf,QAAA,OAAO,IAAI,CAAC,OAAO,EAAE;IACzB;;IAGA,UAAU,CAAC,IAAY,EAAE,KAAK,GAAG,CAAC,EAAE,IAAI,GAAG,CAAC,EAAA;QACxC,OAAO,IAAI,MAAM,CAAC,IAAI,EAAE,KAAK,EAAE,IAAI,CAAC;IACxC;;IAGA,KAAK,GAAA;AACD,QAAA,OAAO,MAAM,CAAC,QAAQ,EAAE;IAC5B;;IAGA,GAAG,GAAA;AACC,QAAA,OAAO,MAAM,CAAC,MAAM,EAAE;IAC1B;;AAGA,IAAA,KAAK,CAAC,KAAU,EAAE,WAAA,GAA0C,EAAE,EAAA;AAC1D,QAAA,IAAI,CAAC,KAAK,IAAI,KAAK,KAAK,CAAC,EAAE;AACvB,YAAA,OAAO,IAAI;QACf;AAEA,QAAA,IAAI,KAAK,YAAY,MAAM,EAAE;AACzB,YAAA,OAAO,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC;QAC5B;AACA;;;AAGG;AACH,QAAA,IAAI,IAAI,GAAG,IAAI,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;AACtC,QAAA,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE;AAC3B,YAAA,IAAI,GAAG,IAAI,IAAI,CAAC,KAAK,CAAC;QAC1B;;QAGA,IACI,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC;YAC5B,OAAO,KAAK,KAAK,QAAQ;YACzB,CAAC,WAAW,CAAC,IAAI;YACjB,CAAC,WAAW,CAAC,GAAG;YAChB,CAAC,WAAW,CAAC,KAAK;YAClB,WAAW,CAAC,IAAI,EAClB;AACE,YAAA,IAAI,GAAG,IAAI,CAAC,gBAAgB,CAAC,KAAK,CAAC;QACvC;AAEA,QAAA,OAAO,IAAI,CAAC,6BAA6B,CAAC,IAAI,CAAC;IACnD;;IAGA,MAAM,CAAC,IAAY,EAAE,aAA0C,EAAA;QAC3D,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE;AACrB,YAAA,OAAO,kBAAkB;QAC7B;;;AAIA,QAAA,IAAI,IAAI,CAAC,mBAAmB,KAAK,IAAI,CAAC,IAAI,GAAG,CAAC,IAAI,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,EAAE;AACjE,YAAA,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC;YACvB,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC;QACtD;QACA,aAAa,GAAG,EAAE,GAAG,aAAa,EAAE,QAAQ,EAAE,KAAK,EAAE;QAErD,OAAO,aAAa,CAAC;cACf,IAAI,CAAC,oBAAoB,CAAC,IAAI,EAAE,aAAa;cAC7C,IAAI,CAAC,eAAe,CAAC,IAAI,EAAE,aAAa,CAAC;IACnD;;IAGA,gBAAgB,CAAC,IAAY,EAAE,KAAa,EAAA;QACxC,OAAO,IAAI,CAAC,iBAAiB,CAAC,IAAI,EAAE,KAAK,GAAG,EAAE,CAAC;IACnD;;IAGA,iBAAiB,CAAC,MAAc,EAAE,MAAc,EAAA;QAC5C,MAAM,IAAI,GAAG,IAAI,CAAC,2BAA2B,CAAC,MAAM,CAAC;QAErD,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,QAAQ,EAAE,GAAG,MAAM,CAAC;;;QAIvC,IAAI,IAAI,CAAC,OAAO,EAAE,KAAK,MAAM,CAAC,GAAG,EAAE;AAC/B,YAAA,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC;QACnB;AAEA,QAAA,OAAO,IAAI,CAAC,6BAA6B,CAAC,IAAI,CAAC;IACnD;;IAGA,eAAe,CAAC,MAAc,EAAE,IAAY,EAAA;QACxC,MAAM,IAAI,GAAG,IAAI,CAAC,2BAA2B,CAAC,MAAM,CAAC;QACrD,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,EAAE,GAAG,IAAI,CAAC;AACnC,QAAA,OAAO,IAAI,CAAC,6BAA6B,CAAC,IAAI,CAAC;IACnD;;AAGA,IAAA,KAAK,CAAC,IAAY,EAAA;QACd,OAAO,IAAI,MAAM,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,MAAM,CAAC;IAC3F;;AAGA,IAAA,OAAO,CAAC,IAAY,EAAA;AAChB,QAAA,IAAI,EAAE,IAAI,YAAY,MAAM,CAAC,EAAE;AAC3B,YAAA,OAAO,KAAK;QAChB;AACA,QAAA,OAAO,IAAI,CAAC,WAAW,EAAE;IAC7B;;AAGA,IAAA,SAAS,CAAC,WAAmB,EAAE,SAAiB,EAAE,OAAe,EAAA;QAC7D,MAAM,IAAI,GAAG,IAAI,CAAC,2BAA2B,CAAC,WAAW,CAAC;QAC1D,MAAM,KAAK,GAAG,IAAI,CAAC,2BAA2B,CAAC,SAAS,CAAC;QACzD,MAAM,GAAG,GAAG,IAAI,CAAC,2BAA2B,CAAC,OAAO,CAAC;AACrD,QAAA,OAAO,IAAI,CAAC,OAAO,EAAE,GAAG,KAAK,CAAC,OAAO,EAAE,IAAI,IAAI,CAAC,OAAO,EAAE,GAAG,GAAG,CAAC,OAAO,EAAE;IAC7E;;IAGA,UAAU,CAAC,KAAa,EAAE,KAAa,EAAA;AACnC,QAAA,IAAI,CAAC,KAAK,IAAI,CAAC,KAAK,EAAE;AAClB,YAAA,OAAO,KAAK;QAChB;;AAEA,QAAA,MAAM,QAAQ,GAAG,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;AACpD,QAAA,MAAM,QAAQ,GAAG,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;QACpD,OAAO,QAAQ,KAAK,QAAQ;IAChC;;IAGA,cAAc,CAAC,KAAa,EAAE,KAAa,EAAA;AACvC,QAAA,IAAI,CAAC,KAAK,IAAI,CAAC,KAAK,EAAE;AAClB,YAAA,OAAO,KAAK;QAChB;AACA,QAAA,OAAO,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,KAAK,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC;IAC1D;;AAGA,IAAA,SAAS,CAAC,MAAc,EAAA;AACpB,QAAA,OAAO,SAAS,CAAC,MAAM,CAAC;IAC5B;;AAGA,IAAA,6BAA6B,CAAC,aAA0C,EAAA;AACpE,QAAA,IAAI,OAAO,aAAa,EAAE,MAAM,KAAK,SAAS,EAAE;YAC5C,OAAO,aAAa,CAAC,MAAM;QAC/B;AACA,QAAA,MAAM,2BAA2B,GAAG,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE,aAAa,CAAC;QACrF,MAAM,6BAA6B,GAAG,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE,EAAE,GAAG,aAAa,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC;QAC5G,OAAO,6BAA6B,KAAK,2BAA2B;IACxE;;AAGA,IAAA,yBAAyB,CAAC,aAAyC,EAAA;AAC/D,QAAA,OAAO,OAAO,aAAa,EAAE,IAAI,KAAK,QAAQ;IAClD;;AAGA,IAAA,2BAA2B,CAAC,aAAyC,EAAA;AACjE,QAAA,OAAO,OAAO,aAAa,EAAE,MAAM,KAAK,QAAQ;IACpD;;AAGA,IAAA,2BAA2B,CAAC,aAAyC,EAAA;AACjE,QAAA,OAAO,OAAO,aAAa,EAAE,MAAM,KAAK,QAAQ;IACpD;;IAGQ,oBAAoB,CAAC,IAAY,EAAE,aAA0C,EAAA;AACjF,QAAA,MAAM,aAAa,GAAG,IAAI,CAAC,eAAe,CAAC,IAAI,EAAE,EAAE,GAAG,aAAa,EAAE,SAAS,EAAE,SAAS,EAAE,CAAC;QAC5F,MAAM,aAAa,GAAG,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC;QAElD,OAAO,IAAI,CAAC,gBAAgB,CAAC,aAAa,EAAE,aAAa,EAAE,aAAa,CAAC;IAC7E;;AAGQ,IAAA,gBAAgB,CACpB,aAAqB,EACrB,aAAsC,EACtC,aAA0C,EAAA;AAE1C,QAAA,IAAI,aAAa,CAAC,IAAI,IAAI,aAAa,CAAC,KAAK,IAAI,aAAa,CAAC,GAAG,EAAE;AAChE,YAAA,OAAO;AACF,iBAAA,OAAO,CAAC,0BAA0B,EAAE,CAAA,GAAA,EAAM,aAAa,EAAE;AACzD,iBAAA,OAAO,CAAC,qBAAqB,EAAE,WAAW,aAAa,CAAA,CAAE,CAAC;QACnE;aAAO;YACH,OAAO,aAAa,CAAC,OAAO,CAAC,0BAA0B,EAAE,CAAA,GAAA,EAAM,aAAa,CAAA,CAAE,CAAC;QACnF;IACJ;;AAGQ,IAAA,iBAAiB,CAAC,IAAY,EAAA;AAClC,QAAA,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI;AACtB,QAAA,IAAI,IAAI,GAAG,CAAC,EAAE;AACV,YAAA,OAAO,qBAAqB;QAChC;AAAO,aAAA,IAAI,IAAI,GAAG,EAAE,EAAE;AAClB,YAAA,OAAO,uBAAuB;QAClC;AAAO,aAAA,IAAI,IAAI,GAAG,EAAE,EAAE;AAClB,YAAA,OAAO,yBAAyB;QACpC;aAAO;AACH,YAAA,OAAO,uBAAuB;QAClC;IACJ;;IAGQ,eAAe,CAAC,IAAY,EAAE,aAAkB,EAAA;AACpD,QAAA,MAAM,SAAS,GAAG,IAAI,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,MAAM,EAAE,aAAa,CAAC;QACrE,MAAM,YAAY,GAAG,IAAI,CAAC,2BAA2B,CAAC,IAAI,CAAC;AAC3D,QAAA,OAAO,IAAI,CAAC,8BAA8B,CAAC,IAAI,CAAC,OAAO,CAAC,SAAS,EAAE,YAAY,CAAC,CAAC;IACrF;AAEA;;;;;;;AAOG;AACK,IAAA,8BAA8B,CAAC,GAAW,EAAA;AAC9C,QAAA,OAAO,GAAG,CAAC,OAAO,CAAC,iBAAiB,EAAE,EAAE,CAAC,CAAC,OAAO,CAAC,SAAS,EAAE,GAAG,CAAC;IACrE;;IAGQ,OAAO,CAAC,SAA8B,EAAE,IAAU,EAAA;QACtD,IAAI,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC,EAAE;AAC9B,YAAA,OAAO,kBAAkB;QAC7B;AACA,QAAA,IAAI,GAAG,IAAI,CAAC,sBAAsB,CAC9B,IAAI,CAAC,WAAW,EAAE,EAClB,IAAI,CAAC,QAAQ,EAAE,EACf,IAAI,CAAC,OAAO,EAAE,EACd,IAAI,CAAC,QAAQ,EAAE,EACf,IAAI,CAAC,UAAU,EAAE,EACjB,IAAI,CAAC,UAAU,EAAE,EACjB,IAAI,CAAC,eAAe,EAAE,CACzB;AACD,QAAA,OAAO,SAAS,CAAC,MAAM,CAAC,IAAI,CAAC;IACjC;AAEA;;;;;AAKG;AACK,IAAA,2BAA2B,CAAC,MAAc,EAAA;AAC9C,QAAA,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,GAAG,MAAM;;;;QAIzD,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE;AACvB,YAAA,OAAO,IAAI,IAAI,CAAC,GAAG,CAAC;QACxB;AACA,QAAA,MAAM,IAAI,GAAG,IAAI,IAAI,EAAE;QACvB,IAAI,CAAC,WAAW,CAAC,IAAI,EAAE,KAAK,GAAG,CAAC,EAAE,GAAG,CAAC;QACtC,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC;AACtC,QAAA,OAAO,IAAI;IACf;AAEA;;;;;;;;;;AAUG;IACK,sBAAsB,CAC1B,IAAY,EACZ,KAAa,EACb,GAAW,EACX,KAAK,GAAG,CAAC,EACT,OAAO,GAAG,CAAC,EACX,OAAO,GAAG,CAAC,EACX,YAAY,GAAG,CAAC,EAAA;AAEhB,QAAA,MAAM,OAAO,GAAG,IAAI,IAAI,EAAE;QAC1B,OAAO,CAAC,cAAc,CAAC,IAAI,EAAE,KAAK,EAAE,GAAG,CAAC;QACxC,OAAO,CAAC,WAAW,CAAC,KAAK,EAAE,OAAO,EAAE,OAAO,EAAE,YAAY,CAAC;AAC1D,QAAA,OAAO,OAAO;IAClB;;AAGQ,IAAA,6BAA6B,CAAC,IAAU,EAAA;AAC5C,QAAA,OAAO,IAAI,MAAM,CACb,IAAI,CAAC,WAAW,EAAE,EAClB,IAAI,CAAC,QAAQ,EAAE,GAAG,CAAC,EACnB,IAAI,CAAC,OAAO,EAAE,EACd,IAAI,CAAC,QAAQ,EAAE,EACf,IAAI,CAAC,UAAU,EAAE,EACjB,IAAI,CAAC,UAAU,EAAE,CACpB;IACL;AAEA;;;;;;;;;;AAUG;AACK,IAAA,gBAAgB,CAAC,OAAe,EAAA;AACpC;;;AAGG;AACH,QAAA,MAAM,OAAO,GAAG,IAAI,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,IAAI,IAAI,EAAE,CAAC;AACnE,QAAA,MAAM,cAAc,GAAG,CAAA,EAAG,OAAO,CAAA,CAAA,EAAI,OAAO,EAAE;QAC9C,OAAO,IAAI,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,cAAc,CAAC,CAAC;IAC/C;AAtfS,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,kBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,iBAAiB,kBAKM,SAAS,EAAA,QAAA,EAAA,IAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,QAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;kHALhC,iBAAiB,EAAA,CAAA,CAAA;;2FAAjB,iBAAiB,EAAA,UAAA,EAAA,CAAA;kBAD7B;;0BAMgB;;0BAAY,MAAM;2BAAC,SAAS;;;ACrB7C,MAAM,KAAK,GAAoB;IAC3B,cAAc;IACd,kBAAkB;IAClB,eAAe;IACf,mBAAmB;IACnB;CACH;AAED;;;AAGG;MAKU,qBAAqB,CAAA;8GAArB,qBAAqB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA,CAAA;AAArB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,qBAAqB,YAf9B,cAAc;YACd,kBAAkB;YAClB,eAAe;YACf,mBAAmB;AACnB,YAAA,sBAAsB,aAJtB,cAAc;YACd,kBAAkB;YAClB,eAAe;YACf,mBAAmB;YACnB,sBAAsB,CAAA,EAAA,CAAA,CAAA;+GAWb,qBAAqB,EAAA,CAAA,CAAA;;2FAArB,qBAAqB,EAAA,UAAA,EAAA,CAAA;kBAJjC,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;AACN,oBAAA,OAAO,EAAE,CAAC,GAAG,KAAK,CAAC;AACnB,oBAAA,OAAO,EAAE,CAAC,GAAG,KAAK;AACrB,iBAAA;;;ACfD;;;AAGG;MAKU,uBAAuB,CAAA;8GAAvB,uBAAuB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA,CAAA;AAAvB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,uBAAuB,YAHtB,cAAc,CAAA,EAAA,CAAA,CAAA;AAGf,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,uBAAuB,EAAA,SAAA,EAFrB,CAAC,EAAE,OAAO,EAAE,eAAe,EAAE,QAAQ,EAAE,iBAAiB,EAAE,CAAC,YAD5D,cAAc,CAAA,EAAA,CAAA,CAAA;;2FAGf,uBAAuB,EAAA,UAAA,EAAA,CAAA;kBAJnC,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;oBACN,OAAO,EAAE,CAAC,cAAc,CAAC;oBACzB,SAAS,EAAE,CAAC,EAAE,OAAO,EAAE,eAAe,EAAE,QAAQ,EAAE,iBAAiB,EAAE;AACxE,iBAAA;;MAQY,gBAAgB,CAAA;8GAAhB,gBAAgB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA,CAAA;AAAhB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,gBAAgB,YAPhB,uBAAuB,EAGG,qBAAqB,CAAA,EAAA,OAAA,EAAA,CAC9C,qBAAqB,EAJtB,uBAAuB,CAAA,EAAA,CAAA,CAAA;AAOvB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,gBAAgB,aAFd,CAAC,EAAE,OAAO,EAAE,iBAAiB,EAAE,QAAQ,EAAE,mBAAmB,EAAE,CAAC,YAFhE,uBAAuB,EAAE,qBAAqB,EAC9C,qBAAqB,EAJtB,uBAAuB,CAAA,EAAA,CAAA,CAAA;;2FAOvB,gBAAgB,EAAA,UAAA,EAAA,CAAA;kBAL5B,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;AACN,oBAAA,OAAO,EAAE,CAAC,uBAAuB,EAAE,qBAAqB,CAAC;AACzD,oBAAA,OAAO,EAAE,CAAC,qBAAqB,EAAE,uBAAuB,CAAC;oBACzD,SAAS,EAAE,CAAC,EAAE,OAAO,EAAE,iBAAiB,EAAE,QAAQ,EAAE,mBAAmB,EAAE;AAC5E,iBAAA;;;ACjBD;;AAEG;SACa,sBAAsB,GAAA;IAClC,OAAO;AACH,QAAA,EAAE,OAAO,EAAE,iBAAiB,EAAE,QAAQ,EAAE,mBAAmB,EAAE;AAC7D,QAAA;AACI,YAAA,OAAO,EAAE,eAAe;AACxB,YAAA,QAAQ,EAAE;AACb;KACJ;AACL;;ACjBA;;AAEG;;;;"}
|