{"version":3,"sources":["src/environments/environment.prod.ts","node_modules/date-fns/addMonths.mjs","node_modules/date-fns/addYears.mjs","node_modules/date-fns/differenceInMilliseconds.mjs","node_modules/date-fns/getDate.mjs","node_modules/date-fns/getDay.mjs","node_modules/date-fns/getDaysInMonth.mjs","node_modules/date-fns/getDefaultOptions.mjs","node_modules/date-fns/getISODay.mjs","node_modules/date-fns/getMonth.mjs","node_modules/date-fns/getYear.mjs","node_modules/date-fns/transpose.mjs","node_modules/date-fns/parse/_lib/Setter.mjs","node_modules/date-fns/parse/_lib/Parser.mjs","node_modules/date-fns/parse/_lib/parsers/EraParser.mjs","node_modules/date-fns/parse/_lib/constants.mjs","node_modules/date-fns/parse/_lib/utils.mjs","node_modules/date-fns/parse/_lib/parsers/YearParser.mjs","node_modules/date-fns/parse/_lib/parsers/LocalWeekYearParser.mjs","node_modules/date-fns/parse/_lib/parsers/ISOWeekYearParser.mjs","node_modules/date-fns/parse/_lib/parsers/ExtendedYearParser.mjs","node_modules/date-fns/parse/_lib/parsers/QuarterParser.mjs","node_modules/date-fns/parse/_lib/parsers/StandAloneQuarterParser.mjs","node_modules/date-fns/parse/_lib/parsers/MonthParser.mjs","node_modules/date-fns/parse/_lib/parsers/StandAloneMonthParser.mjs","node_modules/date-fns/setWeek.mjs","node_modules/date-fns/parse/_lib/parsers/LocalWeekParser.mjs","node_modules/date-fns/setISOWeek.mjs","node_modules/date-fns/parse/_lib/parsers/ISOWeekParser.mjs","node_modules/date-fns/parse/_lib/parsers/DateParser.mjs","node_modules/date-fns/parse/_lib/parsers/DayOfYearParser.mjs","node_modules/date-fns/setDay.mjs","node_modules/date-fns/parse/_lib/parsers/DayParser.mjs","node_modules/date-fns/parse/_lib/parsers/LocalDayParser.mjs","node_modules/date-fns/parse/_lib/parsers/StandAloneLocalDayParser.mjs","node_modules/date-fns/setISODay.mjs","node_modules/date-fns/parse/_lib/parsers/ISODayParser.mjs","node_modules/date-fns/parse/_lib/parsers/AMPMParser.mjs","node_modules/date-fns/parse/_lib/parsers/AMPMMidnightParser.mjs","node_modules/date-fns/parse/_lib/parsers/DayPeriodParser.mjs","node_modules/date-fns/parse/_lib/parsers/Hour1to12Parser.mjs","node_modules/date-fns/parse/_lib/parsers/Hour0to23Parser.mjs","node_modules/date-fns/parse/_lib/parsers/Hour0To11Parser.mjs","node_modules/date-fns/parse/_lib/parsers/Hour1To24Parser.mjs","node_modules/date-fns/parse/_lib/parsers/MinuteParser.mjs","node_modules/date-fns/parse/_lib/parsers/SecondParser.mjs","node_modules/date-fns/parse/_lib/parsers/FractionOfSecondParser.mjs","node_modules/date-fns/parse/_lib/parsers/ISOTimezoneWithZParser.mjs","node_modules/date-fns/parse/_lib/parsers/ISOTimezoneParser.mjs","node_modules/date-fns/parse/_lib/parsers/TimestampSecondsParser.mjs","node_modules/date-fns/parse/_lib/parsers/TimestampMillisecondsParser.mjs","node_modules/date-fns/parse/_lib/parsers.mjs","node_modules/date-fns/parse.mjs","node_modules/date-fns/isSameWeek.mjs","node_modules/date-fns/parseISO.mjs","node_modules/date-fns/setDefaultOptions.mjs","src/app/common/layout/login-button/login-button.component.ts","src/app/common/layout/login-button/login-button.component.html","src/app/common/layout/app-footer/app-footer.component.ts","src/app/common/layout/app-footer/app-footer.component.html","src/app/common/layout/nav-menu/nav-menu.component.ts","src/app/common/layout/nav-menu/nav-menu.component.html","src/app/app.component.ts","src/app/app.component.html","node_modules/@angular/common/locales/uk.mjs","src/app/pages/doctor-profile/doctor-profile.loader.ts","src/app/app-routing.module.ts","node_modules/date-fns/locale/uk/_lib/formatDistance.mjs","node_modules/date-fns/locale/uk/_lib/formatLong.mjs","node_modules/date-fns/locale/uk/_lib/formatRelative.mjs","node_modules/date-fns/locale/uk/_lib/localize.mjs","node_modules/date-fns/locale/uk/_lib/match.mjs","node_modules/date-fns/locale/uk.mjs","src/app/intl/stepper-intl.service.ts","src/app/api/api.interceptor.ts","src/app/configurations/date-fns-adapter.ts","node_modules/@angular/material-date-fns-adapter/fesm2022/material-date-fns-adapter.mjs","src/app/api/ssr-api.interceptor.ts","src/extensions/recaptha/tokens.ts","src/extensions/recaptha/load-script.ts","src/extensions/recaptha/recaptcha-loader.service.ts","src/extensions/recaptha/recaptcha-v3.service.ts","src/app/api/recaptcha.interceptor.ts","src/app/api/log.interceptor.ts","src/app/common/spinner/spinner.service.ts","src/app/api/spinner.interceptor.ts","node_modules/@angular/platform-browser/fesm2022/animations/async.mjs","src/app/title-strategy.ts","src/app/app.config.ts","src/main.ts"],"sourcesContent":["export const environment = {\n production: true,\n recaptchaEnabled: true,\n}\n","import { toDate } from \"./toDate.mjs\";\nimport { constructFrom } from \"./constructFrom.mjs\";\n\n/**\n * @name addMonths\n * @category Month Helpers\n * @summary Add the specified number of months to the given date.\n *\n * @description\n * Add the specified number of months to the given date.\n *\n * @typeParam DateType - The `Date` type, the function operates on. Gets inferred from passed arguments. Allows to use extensions like [`UTCDate`](https://github.com/date-fns/utc).\n *\n * @param date - The date to be changed\n * @param amount - The amount of months to be added.\n *\n * @returns The new date with the months added\n *\n * @example\n * // Add 5 months to 1 September 2014:\n * const result = addMonths(new Date(2014, 8, 1), 5)\n * //=> Sun Feb 01 2015 00:00:00\n *\n * // Add one month to 30 January 2023:\n * const result = addMonths(new Date(2023, 0, 30), 1)\n * //=> Tue Feb 28 2023 00:00:00\n */\nexport function addMonths(date, amount) {\n const _date = toDate(date);\n if (isNaN(amount)) return constructFrom(date, NaN);\n if (!amount) {\n // If 0 months, no-op to avoid changing times in the hour before end of DST\n return _date;\n }\n const dayOfMonth = _date.getDate();\n\n // The JS Date object supports date math by accepting out-of-bounds values for\n // month, day, etc. For example, new Date(2020, 0, 0) returns 31 Dec 2019 and\n // new Date(2020, 13, 1) returns 1 Feb 2021. This is *almost* the behavior we\n // want except that dates will wrap around the end of a month, meaning that\n // new Date(2020, 13, 31) will return 3 Mar 2021 not 28 Feb 2021 as desired. So\n // we'll default to the end of the desired month by adding 1 to the desired\n // month and using a date of 0 to back up one day to the end of the desired\n // month.\n const endOfDesiredMonth = constructFrom(date, _date.getTime());\n endOfDesiredMonth.setMonth(_date.getMonth() + amount + 1, 0);\n const daysInMonth = endOfDesiredMonth.getDate();\n if (dayOfMonth >= daysInMonth) {\n // If we're already at the end of the month, then this is the correct date\n // and we're done.\n return endOfDesiredMonth;\n } else {\n // Otherwise, we now know that setting the original day-of-month value won't\n // cause an overflow, so set the desired day-of-month. Note that we can't\n // just set the date of `endOfDesiredMonth` because that object may have had\n // its time changed in the unusual case where where a DST transition was on\n // the last day of the month and its local time was in the hour skipped or\n // repeated next to a DST transition. So we use `date` instead which is\n // guaranteed to still have the original time.\n _date.setFullYear(endOfDesiredMonth.getFullYear(), endOfDesiredMonth.getMonth(), dayOfMonth);\n return _date;\n }\n}\n\n// Fallback for modularized imports:\nexport default addMonths;","import { addMonths } from \"./addMonths.mjs\";\n\n/**\n * @name addYears\n * @category Year Helpers\n * @summary Add the specified number of years to the given date.\n *\n * @description\n * Add the specified number of years to the given date.\n *\n * @typeParam DateType - The `Date` type, the function operates on. Gets inferred from passed arguments. Allows to use extensions like [`UTCDate`](https://github.com/date-fns/utc).\n *\n * @param date - The date to be changed\n * @param amount - The amount of years to be added.\n *\n * @returns The new date with the years added\n *\n * @example\n * // Add 5 years to 1 September 2014:\n * const result = addYears(new Date(2014, 8, 1), 5)\n * //=> Sun Sep 01 2019 00:00:00\n */\nexport function addYears(date, amount) {\n return addMonths(date, amount * 12);\n}\n\n// Fallback for modularized imports:\nexport default addYears;","import { toDate } from \"./toDate.mjs\";\n\n/**\n * @name differenceInMilliseconds\n * @category Millisecond Helpers\n * @summary Get the number of milliseconds between the given dates.\n *\n * @description\n * Get the number of milliseconds between the given dates.\n *\n * @typeParam DateType - The `Date` type, the function operates on. Gets inferred from passed arguments. Allows to use extensions like [`UTCDate`](https://github.com/date-fns/utc).\n *\n * @param dateLeft - The later date\n * @param dateRight - The earlier date\n *\n * @returns The number of milliseconds\n *\n * @example\n * // How many milliseconds are between\n * // 2 July 2014 12:30:20.600 and 2 July 2014 12:30:21.700?\n * const result = differenceInMilliseconds(\n * new Date(2014, 6, 2, 12, 30, 21, 700),\n * new Date(2014, 6, 2, 12, 30, 20, 600)\n * )\n * //=> 1100\n */\nexport function differenceInMilliseconds(dateLeft, dateRight) {\n return +toDate(dateLeft) - +toDate(dateRight);\n}\n\n// Fallback for modularized imports:\nexport default differenceInMilliseconds;","import { toDate } from \"./toDate.mjs\";\n\n/**\n * @name getDate\n * @category Day Helpers\n * @summary Get the day of the month of the given date.\n *\n * @description\n * Get the day of the month of the given date.\n *\n * @typeParam DateType - The `Date` type, the function operates on. Gets inferred from passed arguments. Allows to use extensions like [`UTCDate`](https://github.com/date-fns/utc).\n *\n * @param date - The given date\n *\n * @returns The day of month\n *\n * @example\n * // Which day of the month is 29 February 2012?\n * const result = getDate(new Date(2012, 1, 29))\n * //=> 29\n */\nexport function getDate(date) {\n const _date = toDate(date);\n const dayOfMonth = _date.getDate();\n return dayOfMonth;\n}\n\n// Fallback for modularized imports:\nexport default getDate;","import { toDate } from \"./toDate.mjs\";\n\n/**\n * @name getDay\n * @category Weekday Helpers\n * @summary Get the day of the week of the given date.\n *\n * @description\n * Get the day of the week of the given date.\n *\n * @typeParam DateType - The `Date` type, the function operates on. Gets inferred from passed arguments. Allows to use extensions like [`UTCDate`](https://github.com/date-fns/utc).\n *\n * @param date - The given date\n *\n * @returns The day of week, 0 represents Sunday\n *\n * @example\n * // Which day of the week is 29 February 2012?\n * const result = getDay(new Date(2012, 1, 29))\n * //=> 3\n */\nexport function getDay(date) {\n const _date = toDate(date);\n const day = _date.getDay();\n return day;\n}\n\n// Fallback for modularized imports:\nexport default getDay;","import { toDate } from \"./toDate.mjs\";\nimport { constructFrom } from \"./constructFrom.mjs\";\n\n/**\n * @name getDaysInMonth\n * @category Month Helpers\n * @summary Get the number of days in a month of the given date.\n *\n * @description\n * Get the number of days in a month of the given date.\n *\n * @typeParam DateType - The `Date` type, the function operates on. Gets inferred from passed arguments. Allows to use extensions like [`UTCDate`](https://github.com/date-fns/utc).\n *\n * @param date - The given date\n *\n * @returns The number of days in a month\n *\n * @example\n * // How many days are in February 2000?\n * const result = getDaysInMonth(new Date(2000, 1))\n * //=> 29\n */\nexport function getDaysInMonth(date) {\n const _date = toDate(date);\n const year = _date.getFullYear();\n const monthIndex = _date.getMonth();\n const lastDayOfMonth = constructFrom(date, 0);\n lastDayOfMonth.setFullYear(year, monthIndex + 1, 0);\n lastDayOfMonth.setHours(0, 0, 0, 0);\n return lastDayOfMonth.getDate();\n}\n\n// Fallback for modularized imports:\nexport default getDaysInMonth;","import { getDefaultOptions as getInternalDefaultOptions } from \"./_lib/defaultOptions.mjs\";\n\n/**\n * @name getDefaultOptions\n * @category Common Helpers\n * @summary Get default options.\n * @pure false\n *\n * @description\n * Returns an object that contains defaults for\n * `options.locale`, `options.weekStartsOn` and `options.firstWeekContainsDate`\n * arguments for all functions.\n *\n * You can change these with [setDefaultOptions](https://date-fns.org/docs/setDefaultOptions).\n *\n * @returns The default options\n *\n * @example\n * const result = getDefaultOptions()\n * //=> {}\n *\n * @example\n * setDefaultOptions({ weekStarsOn: 1, firstWeekContainsDate: 4 })\n * const result = getDefaultOptions()\n * //=> { weekStarsOn: 1, firstWeekContainsDate: 4 }\n */\nexport function getDefaultOptions() {\n return Object.assign({}, getInternalDefaultOptions());\n}\n\n// Fallback for modularized imports:\nexport default getDefaultOptions;","import { toDate } from \"./toDate.mjs\";\n\n/**\n * @name getISODay\n * @category Weekday Helpers\n * @summary Get the day of the ISO week of the given date.\n *\n * @description\n * Get the day of the ISO week of the given date,\n * which is 7 for Sunday, 1 for Monday etc.\n *\n * ISO week-numbering year: http://en.wikipedia.org/wiki/ISO_week_date\n *\n * @typeParam DateType - The `Date` type, the function operates on. Gets inferred from passed arguments. Allows to use extensions like [`UTCDate`](https://github.com/date-fns/utc).\n *\n * @param date - The given date\n *\n * @returns The day of ISO week\n *\n * @example\n * // Which day of the ISO week is 26 February 2012?\n * const result = getISODay(new Date(2012, 1, 26))\n * //=> 7\n */\nexport function getISODay(date) {\n const _date = toDate(date);\n let day = _date.getDay();\n if (day === 0) {\n day = 7;\n }\n return day;\n}\n\n// Fallback for modularized imports:\nexport default getISODay;","import { toDate } from \"./toDate.mjs\";\n\n/**\n * @name getMonth\n * @category Month Helpers\n * @summary Get the month of the given date.\n *\n * @description\n * Get the month of the given date.\n *\n * @typeParam DateType - The `Date` type, the function operates on. Gets inferred from passed arguments. Allows to use extensions like [`UTCDate`](https://github.com/date-fns/utc).\n *\n * @param date - The given date\n *\n * @returns The month index (0-11)\n *\n * @example\n * // Which month is 29 February 2012?\n * const result = getMonth(new Date(2012, 1, 29))\n * //=> 1\n */\nexport function getMonth(date) {\n const _date = toDate(date);\n const month = _date.getMonth();\n return month;\n}\n\n// Fallback for modularized imports:\nexport default getMonth;","import { toDate } from \"./toDate.mjs\";\n\n/**\n * @name getYear\n * @category Year Helpers\n * @summary Get the year of the given date.\n *\n * @description\n * Get the year of the given date.\n *\n * @typeParam DateType - The `Date` type, the function operates on. Gets inferred from passed arguments. Allows to use extensions like [`UTCDate`](https://github.com/date-fns/utc).\n *\n * @param date - The given date\n *\n * @returns The year\n *\n * @example\n * // Which year is 2 July 2014?\n * const result = getYear(new Date(2014, 6, 2))\n * //=> 2014\n */\nexport function getYear(date) {\n return toDate(date).getFullYear();\n}\n\n// Fallback for modularized imports:\nexport default getYear;","import { constructFrom } from \"./constructFrom.mjs\";\n\n/**\n * @name transpose\n * @category Generic Helpers\n * @summary Transpose the date to the given constructor.\n *\n * @description\n * The function transposes the date to the given constructor. It helps you\n * to transpose the date in the system time zone to say `UTCDate` or any other\n * date extension.\n *\n * @typeParam DateInputType - The input `Date` type derived from the passed argument.\n * @typeParam DateOutputType - The output `Date` type derived from the passed constructor.\n *\n * @param fromDate - The date to use values from\n * @param constructor - The date constructor to use\n *\n * @returns Date transposed to the given constructor\n *\n * @example\n * // Create July 10, 2022 00:00 in locale time zone\n * const date = new Date(2022, 6, 10)\n * //=> 'Sun Jul 10 2022 00:00:00 GMT+0800 (Singapore Standard Time)'\n *\n * @example\n * // Transpose the date to July 10, 2022 00:00 in UTC\n * transpose(date, UTCDate)\n * //=> 'Sun Jul 10 2022 00:00:00 GMT+0000 (Coordinated Universal Time)'\n */\nexport function transpose(fromDate, constructor) {\n const date = constructor instanceof Date ? constructFrom(constructor, 0) : new constructor(0);\n date.setFullYear(fromDate.getFullYear(), fromDate.getMonth(), fromDate.getDate());\n date.setHours(fromDate.getHours(), fromDate.getMinutes(), fromDate.getSeconds(), fromDate.getMilliseconds());\n return date;\n}\n\n// Fallback for modularized imports:\nexport default transpose;","import { transpose } from \"../../transpose.mjs\";\nimport { constructFrom } from \"../../constructFrom.mjs\";\nconst TIMEZONE_UNIT_PRIORITY = 10;\nexport class Setter {\n subPriority = 0;\n validate(_utcDate, _options) {\n return true;\n }\n}\nexport class ValueSetter extends Setter {\n constructor(value, validateValue, setValue, priority, subPriority) {\n super();\n this.value = value;\n this.validateValue = validateValue;\n this.setValue = setValue;\n this.priority = priority;\n if (subPriority) {\n this.subPriority = subPriority;\n }\n }\n validate(date, options) {\n return this.validateValue(date, this.value, options);\n }\n set(date, flags, options) {\n return this.setValue(date, flags, this.value, options);\n }\n}\nexport class DateToSystemTimezoneSetter extends Setter {\n priority = TIMEZONE_UNIT_PRIORITY;\n subPriority = -1;\n set(date, flags) {\n if (flags.timestampIsSet) return date;\n return constructFrom(date, transpose(date, Date));\n }\n}","import { ValueSetter } from \"./Setter.mjs\";\nexport class Parser {\n run(dateString, token, match, options) {\n const result = this.parse(dateString, token, match, options);\n if (!result) {\n return null;\n }\n return {\n setter: new ValueSetter(result.value, this.validate, this.set, this.priority, this.subPriority),\n rest: result.rest\n };\n }\n validate(_utcDate, _value, _options) {\n return true;\n }\n}","import { Parser } from \"../Parser.mjs\";\nexport class EraParser extends Parser {\n priority = 140;\n parse(dateString, token, match) {\n switch (token) {\n // AD, BC\n case \"G\":\n case \"GG\":\n case \"GGG\":\n return match.era(dateString, {\n width: \"abbreviated\"\n }) || match.era(dateString, {\n width: \"narrow\"\n });\n\n // A, B\n case \"GGGGG\":\n return match.era(dateString, {\n width: \"narrow\"\n });\n // Anno Domini, Before Christ\n case \"GGGG\":\n default:\n return match.era(dateString, {\n width: \"wide\"\n }) || match.era(dateString, {\n width: \"abbreviated\"\n }) || match.era(dateString, {\n width: \"narrow\"\n });\n }\n }\n set(date, flags, value) {\n flags.era = value;\n date.setFullYear(value, 0, 1);\n date.setHours(0, 0, 0, 0);\n return date;\n }\n incompatibleTokens = [\"R\", \"u\", \"t\", \"T\"];\n}","export const numericPatterns = {\n month: /^(1[0-2]|0?\\d)/,\n // 0 to 12\n date: /^(3[0-1]|[0-2]?\\d)/,\n // 0 to 31\n dayOfYear: /^(36[0-6]|3[0-5]\\d|[0-2]?\\d?\\d)/,\n // 0 to 366\n week: /^(5[0-3]|[0-4]?\\d)/,\n // 0 to 53\n hour23h: /^(2[0-3]|[0-1]?\\d)/,\n // 0 to 23\n hour24h: /^(2[0-4]|[0-1]?\\d)/,\n // 0 to 24\n hour11h: /^(1[0-1]|0?\\d)/,\n // 0 to 11\n hour12h: /^(1[0-2]|0?\\d)/,\n // 0 to 12\n minute: /^[0-5]?\\d/,\n // 0 to 59\n second: /^[0-5]?\\d/,\n // 0 to 59\n\n singleDigit: /^\\d/,\n // 0 to 9\n twoDigits: /^\\d{1,2}/,\n // 0 to 99\n threeDigits: /^\\d{1,3}/,\n // 0 to 999\n fourDigits: /^\\d{1,4}/,\n // 0 to 9999\n\n anyDigitsSigned: /^-?\\d+/,\n singleDigitSigned: /^-?\\d/,\n // 0 to 9, -0 to -9\n twoDigitsSigned: /^-?\\d{1,2}/,\n // 0 to 99, -0 to -99\n threeDigitsSigned: /^-?\\d{1,3}/,\n // 0 to 999, -0 to -999\n fourDigitsSigned: /^-?\\d{1,4}/ // 0 to 9999, -0 to -9999\n};\nexport const timezonePatterns = {\n basicOptionalMinutes: /^([+-])(\\d{2})(\\d{2})?|Z/,\n basic: /^([+-])(\\d{2})(\\d{2})|Z/,\n basicOptionalSeconds: /^([+-])(\\d{2})(\\d{2})((\\d{2}))?|Z/,\n extended: /^([+-])(\\d{2}):(\\d{2})|Z/,\n extendedOptionalSeconds: /^([+-])(\\d{2}):(\\d{2})(:(\\d{2}))?|Z/\n};","import { millisecondsInHour, millisecondsInMinute, millisecondsInSecond } from \"../../constants.mjs\";\nimport { numericPatterns } from \"./constants.mjs\";\nexport function mapValue(parseFnResult, mapFn) {\n if (!parseFnResult) {\n return parseFnResult;\n }\n return {\n value: mapFn(parseFnResult.value),\n rest: parseFnResult.rest\n };\n}\nexport function parseNumericPattern(pattern, dateString) {\n const matchResult = dateString.match(pattern);\n if (!matchResult) {\n return null;\n }\n return {\n value: parseInt(matchResult[0], 10),\n rest: dateString.slice(matchResult[0].length)\n };\n}\nexport function parseTimezonePattern(pattern, dateString) {\n const matchResult = dateString.match(pattern);\n if (!matchResult) {\n return null;\n }\n\n // Input is 'Z'\n if (matchResult[0] === \"Z\") {\n return {\n value: 0,\n rest: dateString.slice(1)\n };\n }\n const sign = matchResult[1] === \"+\" ? 1 : -1;\n const hours = matchResult[2] ? parseInt(matchResult[2], 10) : 0;\n const minutes = matchResult[3] ? parseInt(matchResult[3], 10) : 0;\n const seconds = matchResult[5] ? parseInt(matchResult[5], 10) : 0;\n return {\n value: sign * (hours * millisecondsInHour + minutes * millisecondsInMinute + seconds * millisecondsInSecond),\n rest: dateString.slice(matchResult[0].length)\n };\n}\nexport function parseAnyDigitsSigned(dateString) {\n return parseNumericPattern(numericPatterns.anyDigitsSigned, dateString);\n}\nexport function parseNDigits(n, dateString) {\n switch (n) {\n case 1:\n return parseNumericPattern(numericPatterns.singleDigit, dateString);\n case 2:\n return parseNumericPattern(numericPatterns.twoDigits, dateString);\n case 3:\n return parseNumericPattern(numericPatterns.threeDigits, dateString);\n case 4:\n return parseNumericPattern(numericPatterns.fourDigits, dateString);\n default:\n return parseNumericPattern(new RegExp(\"^\\\\d{1,\" + n + \"}\"), dateString);\n }\n}\nexport function parseNDigitsSigned(n, dateString) {\n switch (n) {\n case 1:\n return parseNumericPattern(numericPatterns.singleDigitSigned, dateString);\n case 2:\n return parseNumericPattern(numericPatterns.twoDigitsSigned, dateString);\n case 3:\n return parseNumericPattern(numericPatterns.threeDigitsSigned, dateString);\n case 4:\n return parseNumericPattern(numericPatterns.fourDigitsSigned, dateString);\n default:\n return parseNumericPattern(new RegExp(\"^-?\\\\d{1,\" + n + \"}\"), dateString);\n }\n}\nexport function dayPeriodEnumToHours(dayPeriod) {\n switch (dayPeriod) {\n case \"morning\":\n return 4;\n case \"evening\":\n return 17;\n case \"pm\":\n case \"noon\":\n case \"afternoon\":\n return 12;\n case \"am\":\n case \"midnight\":\n case \"night\":\n default:\n return 0;\n }\n}\nexport function normalizeTwoDigitYear(twoDigitYear, currentYear) {\n const isCommonEra = currentYear > 0;\n // Absolute number of the current year:\n // 1 -> 1 AC\n // 0 -> 1 BC\n // -1 -> 2 BC\n const absCurrentYear = isCommonEra ? currentYear : 1 - currentYear;\n let result;\n if (absCurrentYear <= 50) {\n result = twoDigitYear || 100;\n } else {\n const rangeEnd = absCurrentYear + 50;\n const rangeEndCentury = Math.trunc(rangeEnd / 100) * 100;\n const isPreviousCentury = twoDigitYear >= rangeEnd % 100;\n result = twoDigitYear + rangeEndCentury - (isPreviousCentury ? 100 : 0);\n }\n return isCommonEra ? result : 1 - result;\n}\nexport function isLeapYearIndex(year) {\n return year % 400 === 0 || year % 4 === 0 && year % 100 !== 0;\n}","import { Parser } from \"../Parser.mjs\";\nimport { mapValue, normalizeTwoDigitYear, parseNDigits } from \"../utils.mjs\";\n\n// From http://www.unicode.org/reports/tr35/tr35-31/tr35-dates.html#Date_Format_Patterns\n// | Year | y | yy | yyy | yyyy | yyyyy |\n// |----------|-------|----|-------|-------|-------|\n// | AD 1 | 1 | 01 | 001 | 0001 | 00001 |\n// | AD 12 | 12 | 12 | 012 | 0012 | 00012 |\n// | AD 123 | 123 | 23 | 123 | 0123 | 00123 |\n// | AD 1234 | 1234 | 34 | 1234 | 1234 | 01234 |\n// | AD 12345 | 12345 | 45 | 12345 | 12345 | 12345 |\nexport class YearParser extends Parser {\n priority = 130;\n incompatibleTokens = [\"Y\", \"R\", \"u\", \"w\", \"I\", \"i\", \"e\", \"c\", \"t\", \"T\"];\n parse(dateString, token, match) {\n const valueCallback = year => ({\n year,\n isTwoDigitYear: token === \"yy\"\n });\n switch (token) {\n case \"y\":\n return mapValue(parseNDigits(4, dateString), valueCallback);\n case \"yo\":\n return mapValue(match.ordinalNumber(dateString, {\n unit: \"year\"\n }), valueCallback);\n default:\n return mapValue(parseNDigits(token.length, dateString), valueCallback);\n }\n }\n validate(_date, value) {\n return value.isTwoDigitYear || value.year > 0;\n }\n set(date, flags, value) {\n const currentYear = date.getFullYear();\n if (value.isTwoDigitYear) {\n const normalizedTwoDigitYear = normalizeTwoDigitYear(value.year, currentYear);\n date.setFullYear(normalizedTwoDigitYear, 0, 1);\n date.setHours(0, 0, 0, 0);\n return date;\n }\n const year = !(\"era\" in flags) || flags.era === 1 ? value.year : 1 - value.year;\n date.setFullYear(year, 0, 1);\n date.setHours(0, 0, 0, 0);\n return date;\n }\n}","import { getWeekYear } from \"../../../getWeekYear.mjs\";\nimport { startOfWeek } from \"../../../startOfWeek.mjs\";\nimport { Parser } from \"../Parser.mjs\";\nimport { mapValue, normalizeTwoDigitYear, parseNDigits } from \"../utils.mjs\";\n\n// Local week-numbering year\nexport class LocalWeekYearParser extends Parser {\n priority = 130;\n parse(dateString, token, match) {\n const valueCallback = year => ({\n year,\n isTwoDigitYear: token === \"YY\"\n });\n switch (token) {\n case \"Y\":\n return mapValue(parseNDigits(4, dateString), valueCallback);\n case \"Yo\":\n return mapValue(match.ordinalNumber(dateString, {\n unit: \"year\"\n }), valueCallback);\n default:\n return mapValue(parseNDigits(token.length, dateString), valueCallback);\n }\n }\n validate(_date, value) {\n return value.isTwoDigitYear || value.year > 0;\n }\n set(date, flags, value, options) {\n const currentYear = getWeekYear(date, options);\n if (value.isTwoDigitYear) {\n const normalizedTwoDigitYear = normalizeTwoDigitYear(value.year, currentYear);\n date.setFullYear(normalizedTwoDigitYear, 0, options.firstWeekContainsDate);\n date.setHours(0, 0, 0, 0);\n return startOfWeek(date, options);\n }\n const year = !(\"era\" in flags) || flags.era === 1 ? value.year : 1 - value.year;\n date.setFullYear(year, 0, options.firstWeekContainsDate);\n date.setHours(0, 0, 0, 0);\n return startOfWeek(date, options);\n }\n incompatibleTokens = [\"y\", \"R\", \"u\", \"Q\", \"q\", \"M\", \"L\", \"I\", \"d\", \"D\", \"i\", \"t\", \"T\"];\n}","import { startOfISOWeek } from \"../../../startOfISOWeek.mjs\";\nimport { constructFrom } from \"../../../constructFrom.mjs\";\nimport { Parser } from \"../Parser.mjs\";\nimport { parseNDigitsSigned } from \"../utils.mjs\";\n\n// ISO week-numbering year\nexport class ISOWeekYearParser extends Parser {\n priority = 130;\n parse(dateString, token) {\n if (token === \"R\") {\n return parseNDigitsSigned(4, dateString);\n }\n return parseNDigitsSigned(token.length, dateString);\n }\n set(date, _flags, value) {\n const firstWeekOfYear = constructFrom(date, 0);\n firstWeekOfYear.setFullYear(value, 0, 4);\n firstWeekOfYear.setHours(0, 0, 0, 0);\n return startOfISOWeek(firstWeekOfYear);\n }\n incompatibleTokens = [\"G\", \"y\", \"Y\", \"u\", \"Q\", \"q\", \"M\", \"L\", \"w\", \"d\", \"D\", \"e\", \"c\", \"t\", \"T\"];\n}","import { Parser } from \"../Parser.mjs\";\nimport { parseNDigitsSigned } from \"../utils.mjs\";\nexport class ExtendedYearParser extends Parser {\n priority = 130;\n parse(dateString, token) {\n if (token === \"u\") {\n return parseNDigitsSigned(4, dateString);\n }\n return parseNDigitsSigned(token.length, dateString);\n }\n set(date, _flags, value) {\n date.setFullYear(value, 0, 1);\n date.setHours(0, 0, 0, 0);\n return date;\n }\n incompatibleTokens = [\"G\", \"y\", \"Y\", \"R\", \"w\", \"I\", \"i\", \"e\", \"c\", \"t\", \"T\"];\n}","import { Parser } from \"../Parser.mjs\";\nimport { parseNDigits } from \"../utils.mjs\";\nexport class QuarterParser extends Parser {\n priority = 120;\n parse(dateString, token, match) {\n switch (token) {\n // 1, 2, 3, 4\n case \"Q\":\n case \"QQ\":\n // 01, 02, 03, 04\n return parseNDigits(token.length, dateString);\n // 1st, 2nd, 3rd, 4th\n case \"Qo\":\n return match.ordinalNumber(dateString, {\n unit: \"quarter\"\n });\n // Q1, Q2, Q3, Q4\n case \"QQQ\":\n return match.quarter(dateString, {\n width: \"abbreviated\",\n context: \"formatting\"\n }) || match.quarter(dateString, {\n width: \"narrow\",\n context: \"formatting\"\n });\n\n // 1, 2, 3, 4 (narrow quarter; could be not numerical)\n case \"QQQQQ\":\n return match.quarter(dateString, {\n width: \"narrow\",\n context: \"formatting\"\n });\n // 1st quarter, 2nd quarter, ...\n case \"QQQQ\":\n default:\n return match.quarter(dateString, {\n width: \"wide\",\n context: \"formatting\"\n }) || match.quarter(dateString, {\n width: \"abbreviated\",\n context: \"formatting\"\n }) || match.quarter(dateString, {\n width: \"narrow\",\n context: \"formatting\"\n });\n }\n }\n validate(_date, value) {\n return value >= 1 && value <= 4;\n }\n set(date, _flags, value) {\n date.setMonth((value - 1) * 3, 1);\n date.setHours(0, 0, 0, 0);\n return date;\n }\n incompatibleTokens = [\"Y\", \"R\", \"q\", \"M\", \"L\", \"w\", \"I\", \"d\", \"D\", \"i\", \"e\", \"c\", \"t\", \"T\"];\n}","import { Parser } from \"../Parser.mjs\";\nimport { parseNDigits } from \"../utils.mjs\";\nexport class StandAloneQuarterParser extends Parser {\n priority = 120;\n parse(dateString, token, match) {\n switch (token) {\n // 1, 2, 3, 4\n case \"q\":\n case \"qq\":\n // 01, 02, 03, 04\n return parseNDigits(token.length, dateString);\n // 1st, 2nd, 3rd, 4th\n case \"qo\":\n return match.ordinalNumber(dateString, {\n unit: \"quarter\"\n });\n // Q1, Q2, Q3, Q4\n case \"qqq\":\n return match.quarter(dateString, {\n width: \"abbreviated\",\n context: \"standalone\"\n }) || match.quarter(dateString, {\n width: \"narrow\",\n context: \"standalone\"\n });\n\n // 1, 2, 3, 4 (narrow quarter; could be not numerical)\n case \"qqqqq\":\n return match.quarter(dateString, {\n width: \"narrow\",\n context: \"standalone\"\n });\n // 1st quarter, 2nd quarter, ...\n case \"qqqq\":\n default:\n return match.quarter(dateString, {\n width: \"wide\",\n context: \"standalone\"\n }) || match.quarter(dateString, {\n width: \"abbreviated\",\n context: \"standalone\"\n }) || match.quarter(dateString, {\n width: \"narrow\",\n context: \"standalone\"\n });\n }\n }\n validate(_date, value) {\n return value >= 1 && value <= 4;\n }\n set(date, _flags, value) {\n date.setMonth((value - 1) * 3, 1);\n date.setHours(0, 0, 0, 0);\n return date;\n }\n incompatibleTokens = [\"Y\", \"R\", \"Q\", \"M\", \"L\", \"w\", \"I\", \"d\", \"D\", \"i\", \"e\", \"c\", \"t\", \"T\"];\n}","import { numericPatterns } from \"../constants.mjs\";\nimport { Parser } from \"../Parser.mjs\";\nimport { mapValue, parseNDigits, parseNumericPattern } from \"../utils.mjs\";\nexport class MonthParser extends Parser {\n incompatibleTokens = [\"Y\", \"R\", \"q\", \"Q\", \"L\", \"w\", \"I\", \"D\", \"i\", \"e\", \"c\", \"t\", \"T\"];\n priority = 110;\n parse(dateString, token, match) {\n const valueCallback = value => value - 1;\n switch (token) {\n // 1, 2, ..., 12\n case \"M\":\n return mapValue(parseNumericPattern(numericPatterns.month, dateString), valueCallback);\n // 01, 02, ..., 12\n case \"MM\":\n return mapValue(parseNDigits(2, dateString), valueCallback);\n // 1st, 2nd, ..., 12th\n case \"Mo\":\n return mapValue(match.ordinalNumber(dateString, {\n unit: \"month\"\n }), valueCallback);\n // Jan, Feb, ..., Dec\n case \"MMM\":\n return match.month(dateString, {\n width: \"abbreviated\",\n context: \"formatting\"\n }) || match.month(dateString, {\n width: \"narrow\",\n context: \"formatting\"\n });\n\n // J, F, ..., D\n case \"MMMMM\":\n return match.month(dateString, {\n width: \"narrow\",\n context: \"formatting\"\n });\n // January, February, ..., December\n case \"MMMM\":\n default:\n return match.month(dateString, {\n width: \"wide\",\n context: \"formatting\"\n }) || match.month(dateString, {\n width: \"abbreviated\",\n context: \"formatting\"\n }) || match.month(dateString, {\n width: \"narrow\",\n context: \"formatting\"\n });\n }\n }\n validate(_date, value) {\n return value >= 0 && value <= 11;\n }\n set(date, _flags, value) {\n date.setMonth(value, 1);\n date.setHours(0, 0, 0, 0);\n return date;\n }\n}","import { numericPatterns } from \"../constants.mjs\";\nimport { Parser } from \"../Parser.mjs\";\nimport { mapValue, parseNDigits, parseNumericPattern } from \"../utils.mjs\";\nexport class StandAloneMonthParser extends Parser {\n priority = 110;\n parse(dateString, token, match) {\n const valueCallback = value => value - 1;\n switch (token) {\n // 1, 2, ..., 12\n case \"L\":\n return mapValue(parseNumericPattern(numericPatterns.month, dateString), valueCallback);\n // 01, 02, ..., 12\n case \"LL\":\n return mapValue(parseNDigits(2, dateString), valueCallback);\n // 1st, 2nd, ..., 12th\n case \"Lo\":\n return mapValue(match.ordinalNumber(dateString, {\n unit: \"month\"\n }), valueCallback);\n // Jan, Feb, ..., Dec\n case \"LLL\":\n return match.month(dateString, {\n width: \"abbreviated\",\n context: \"standalone\"\n }) || match.month(dateString, {\n width: \"narrow\",\n context: \"standalone\"\n });\n\n // J, F, ..., D\n case \"LLLLL\":\n return match.month(dateString, {\n width: \"narrow\",\n context: \"standalone\"\n });\n // January, February, ..., December\n case \"LLLL\":\n default:\n return match.month(dateString, {\n width: \"wide\",\n context: \"standalone\"\n }) || match.month(dateString, {\n width: \"abbreviated\",\n context: \"standalone\"\n }) || match.month(dateString, {\n width: \"narrow\",\n context: \"standalone\"\n });\n }\n }\n validate(_date, value) {\n return value >= 0 && value <= 11;\n }\n set(date, _flags, value) {\n date.setMonth(value, 1);\n date.setHours(0, 0, 0, 0);\n return date;\n }\n incompatibleTokens = [\"Y\", \"R\", \"q\", \"Q\", \"M\", \"w\", \"I\", \"D\", \"i\", \"e\", \"c\", \"t\", \"T\"];\n}","import { getWeek } from \"./getWeek.mjs\";\nimport { toDate } from \"./toDate.mjs\";\n\n/**\n * The {@link setWeek} function options.\n */\n\n/**\n * @name setWeek\n * @category Week Helpers\n * @summary Set the local week to the given date.\n *\n * @description\n * Set the local week to the given date, saving the weekday number.\n * The exact calculation depends on the values of\n * `options.weekStartsOn` (which is the index of the first day of the week)\n * and `options.firstWeekContainsDate` (which is the day of January, which is always in\n * the first week of the week-numbering year)\n *\n * Week numbering: https://en.wikipedia.org/wiki/Week#The_ISO_week_date_system\n *\n * @typeParam DateType - The `Date` type, the function operates on. Gets inferred from passed arguments. Allows to use extensions like [`UTCDate`](https://github.com/date-fns/utc).\n *\n * @param date - The date to be changed\n * @param week - The week of the new date\n * @param options - An object with options\n *\n * @returns The new date with the local week set\n *\n * @example\n * // Set the 1st week to 2 January 2005 with default options:\n * const result = setWeek(new Date(2005, 0, 2), 1)\n * //=> Sun Dec 26 2004 00:00:00\n *\n * @example\n * // Set the 1st week to 2 January 2005,\n * // if Monday is the first day of the week,\n * // and the first week of the year always contains 4 January:\n * const result = setWeek(new Date(2005, 0, 2), 1, {\n * weekStartsOn: 1,\n * firstWeekContainsDate: 4\n * })\n * //=> Sun Jan 4 2004 00:00:00\n */\nexport function setWeek(date, week, options) {\n const _date = toDate(date);\n const diff = getWeek(_date, options) - week;\n _date.setDate(_date.getDate() - diff * 7);\n return _date;\n}\n\n// Fallback for modularized imports:\nexport default setWeek;","import { setWeek } from \"../../../setWeek.mjs\";\nimport { startOfWeek } from \"../../../startOfWeek.mjs\";\nimport { numericPatterns } from \"../constants.mjs\";\nimport { Parser } from \"../Parser.mjs\";\nimport { parseNDigits, parseNumericPattern } from \"../utils.mjs\";\n\n// Local week of year\nexport class LocalWeekParser extends Parser {\n priority = 100;\n parse(dateString, token, match) {\n switch (token) {\n case \"w\":\n return parseNumericPattern(numericPatterns.week, dateString);\n case \"wo\":\n return match.ordinalNumber(dateString, {\n unit: \"week\"\n });\n default:\n return parseNDigits(token.length, dateString);\n }\n }\n validate(_date, value) {\n return value >= 1 && value <= 53;\n }\n set(date, _flags, value, options) {\n return startOfWeek(setWeek(date, value, options), options);\n }\n incompatibleTokens = [\"y\", \"R\", \"u\", \"q\", \"Q\", \"M\", \"L\", \"I\", \"d\", \"D\", \"i\", \"t\", \"T\"];\n}","import { getISOWeek } from \"./getISOWeek.mjs\";\nimport { toDate } from \"./toDate.mjs\";\n\n/**\n * @name setISOWeek\n * @category ISO Week Helpers\n * @summary Set the ISO week to the given date.\n *\n * @description\n * Set the ISO week to the given date, saving the weekday number.\n *\n * ISO week-numbering year: http://en.wikipedia.org/wiki/ISO_week_date\n *\n * @typeParam DateType - The `Date` type, the function operates on. Gets inferred from passed arguments. Allows to use extensions like [`UTCDate`](https://github.com/date-fns/utc).\n *\n * @param date - The date to be changed\n * @param week - The ISO week of the new date\n *\n * @returns The new date with the ISO week set\n *\n * @example\n * // Set the 53rd ISO week to 7 August 2004:\n * const result = setISOWeek(new Date(2004, 7, 7), 53)\n * //=> Sat Jan 01 2005 00:00:00\n */\nexport function setISOWeek(date, week) {\n const _date = toDate(date);\n const diff = getISOWeek(_date) - week;\n _date.setDate(_date.getDate() - diff * 7);\n return _date;\n}\n\n// Fallback for modularized imports:\nexport default setISOWeek;","import { setISOWeek } from \"../../../setISOWeek.mjs\";\nimport { startOfISOWeek } from \"../../../startOfISOWeek.mjs\";\nimport { numericPatterns } from \"../constants.mjs\";\nimport { Parser } from \"../Parser.mjs\";\nimport { parseNDigits, parseNumericPattern } from \"../utils.mjs\";\n\n// ISO week of year\nexport class ISOWeekParser extends Parser {\n priority = 100;\n parse(dateString, token, match) {\n switch (token) {\n case \"I\":\n return parseNumericPattern(numericPatterns.week, dateString);\n case \"Io\":\n return match.ordinalNumber(dateString, {\n unit: \"week\"\n });\n default:\n return parseNDigits(token.length, dateString);\n }\n }\n validate(_date, value) {\n return value >= 1 && value <= 53;\n }\n set(date, _flags, value) {\n return startOfISOWeek(setISOWeek(date, value));\n }\n incompatibleTokens = [\"y\", \"Y\", \"u\", \"q\", \"Q\", \"M\", \"L\", \"w\", \"d\", \"D\", \"e\", \"c\", \"t\", \"T\"];\n}","import { numericPatterns } from \"../constants.mjs\";\nimport { Parser } from \"../Parser.mjs\";\nimport { isLeapYearIndex, parseNDigits, parseNumericPattern } from \"../utils.mjs\";\nconst DAYS_IN_MONTH = [31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31];\nconst DAYS_IN_MONTH_LEAP_YEAR = [31, 29, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31];\n\n// Day of the month\nexport class DateParser extends Parser {\n priority = 90;\n subPriority = 1;\n parse(dateString, token, match) {\n switch (token) {\n case \"d\":\n return parseNumericPattern(numericPatterns.date, dateString);\n case \"do\":\n return match.ordinalNumber(dateString, {\n unit: \"date\"\n });\n default:\n return parseNDigits(token.length, dateString);\n }\n }\n validate(date, value) {\n const year = date.getFullYear();\n const isLeapYear = isLeapYearIndex(year);\n const month = date.getMonth();\n if (isLeapYear) {\n return value >= 1 && value <= DAYS_IN_MONTH_LEAP_YEAR[month];\n } else {\n return value >= 1 && value <= DAYS_IN_MONTH[month];\n }\n }\n set(date, _flags, value) {\n date.setDate(value);\n date.setHours(0, 0, 0, 0);\n return date;\n }\n incompatibleTokens = [\"Y\", \"R\", \"q\", \"Q\", \"w\", \"I\", \"D\", \"i\", \"e\", \"c\", \"t\", \"T\"];\n}","import { numericPatterns } from \"../constants.mjs\";\nimport { Parser } from \"../Parser.mjs\";\nimport { isLeapYearIndex, parseNDigits, parseNumericPattern } from \"../utils.mjs\";\nexport class DayOfYearParser extends Parser {\n priority = 90;\n subpriority = 1;\n parse(dateString, token, match) {\n switch (token) {\n case \"D\":\n case \"DD\":\n return parseNumericPattern(numericPatterns.dayOfYear, dateString);\n case \"Do\":\n return match.ordinalNumber(dateString, {\n unit: \"date\"\n });\n default:\n return parseNDigits(token.length, dateString);\n }\n }\n validate(date, value) {\n const year = date.getFullYear();\n const isLeapYear = isLeapYearIndex(year);\n if (isLeapYear) {\n return value >= 1 && value <= 366;\n } else {\n return value >= 1 && value <= 365;\n }\n }\n set(date, _flags, value) {\n date.setMonth(0, value);\n date.setHours(0, 0, 0, 0);\n return date;\n }\n incompatibleTokens = [\"Y\", \"R\", \"q\", \"Q\", \"M\", \"L\", \"w\", \"I\", \"d\", \"E\", \"i\", \"e\", \"c\", \"t\", \"T\"];\n}","import { addDays } from \"./addDays.mjs\";\nimport { toDate } from \"./toDate.mjs\";\nimport { getDefaultOptions } from \"./_lib/defaultOptions.mjs\";\n\n/**\n * The {@link setDay} function options.\n */\n\n/**\n * @name setDay\n * @category Weekday Helpers\n * @summary Set the day of the week to the given date.\n *\n * @description\n * Set the day of the week to the given date.\n *\n * @typeParam DateType - The `Date` type, the function operates on. Gets inferred from passed arguments. Allows to use extensions like [`UTCDate`](https://github.com/date-fns/utc).\n *\n * @param date - The date to be changed\n * @param day - The day of the week of the new date\n * @param options - An object with options.\n *\n * @returns The new date with the day of the week set\n *\n * @example\n * // Set week day to Sunday, with the default weekStartsOn of Sunday:\n * const result = setDay(new Date(2014, 8, 1), 0)\n * //=> Sun Aug 31 2014 00:00:00\n *\n * @example\n * // Set week day to Sunday, with a weekStartsOn of Monday:\n * const result = setDay(new Date(2014, 8, 1), 0, { weekStartsOn: 1 })\n * //=> Sun Sep 07 2014 00:00:00\n */\nexport function setDay(date, day, options) {\n const defaultOptions = getDefaultOptions();\n const weekStartsOn = options?.weekStartsOn ?? options?.locale?.options?.weekStartsOn ?? defaultOptions.weekStartsOn ?? defaultOptions.locale?.options?.weekStartsOn ?? 0;\n const _date = toDate(date);\n const currentDay = _date.getDay();\n const remainder = day % 7;\n const dayIndex = (remainder + 7) % 7;\n const delta = 7 - weekStartsOn;\n const diff = day < 0 || day > 6 ? day - (currentDay + delta) % 7 : (dayIndex + delta) % 7 - (currentDay + delta) % 7;\n return addDays(_date, diff);\n}\n\n// Fallback for modularized imports:\nexport default setDay;","import { setDay } from \"../../../setDay.mjs\";\nimport { Parser } from \"../Parser.mjs\";\n\n// Day of week\nexport class DayParser extends Parser {\n priority = 90;\n parse(dateString, token, match) {\n switch (token) {\n // Tue\n case \"E\":\n case \"EE\":\n case \"EEE\":\n return match.day(dateString, {\n width: \"abbreviated\",\n context: \"formatting\"\n }) || match.day(dateString, {\n width: \"short\",\n context: \"formatting\"\n }) || match.day(dateString, {\n width: \"narrow\",\n context: \"formatting\"\n });\n\n // T\n case \"EEEEE\":\n return match.day(dateString, {\n width: \"narrow\",\n context: \"formatting\"\n });\n // Tu\n case \"EEEEEE\":\n return match.day(dateString, {\n width: \"short\",\n context: \"formatting\"\n }) || match.day(dateString, {\n width: \"narrow\",\n context: \"formatting\"\n });\n\n // Tuesday\n case \"EEEE\":\n default:\n return match.day(dateString, {\n width: \"wide\",\n context: \"formatting\"\n }) || match.day(dateString, {\n width: \"abbreviated\",\n context: \"formatting\"\n }) || match.day(dateString, {\n width: \"short\",\n context: \"formatting\"\n }) || match.day(dateString, {\n width: \"narrow\",\n context: \"formatting\"\n });\n }\n }\n validate(_date, value) {\n return value >= 0 && value <= 6;\n }\n set(date, _flags, value, options) {\n date = setDay(date, value, options);\n date.setHours(0, 0, 0, 0);\n return date;\n }\n incompatibleTokens = [\"D\", \"i\", \"e\", \"c\", \"t\", \"T\"];\n}","import { setDay } from \"../../../setDay.mjs\";\nimport { Parser } from \"../Parser.mjs\";\nimport { mapValue, parseNDigits } from \"../utils.mjs\";\n\n// Local day of week\nexport class LocalDayParser extends Parser {\n priority = 90;\n parse(dateString, token, match, options) {\n const valueCallback = value => {\n // We want here floor instead of trunc, so we get -7 for value 0 instead of 0\n const wholeWeekDays = Math.floor((value - 1) / 7) * 7;\n return (value + options.weekStartsOn + 6) % 7 + wholeWeekDays;\n };\n switch (token) {\n // 3\n case \"e\":\n case \"ee\":\n // 03\n return mapValue(parseNDigits(token.length, dateString), valueCallback);\n // 3rd\n case \"eo\":\n return mapValue(match.ordinalNumber(dateString, {\n unit: \"day\"\n }), valueCallback);\n // Tue\n case \"eee\":\n return match.day(dateString, {\n width: \"abbreviated\",\n context: \"formatting\"\n }) || match.day(dateString, {\n width: \"short\",\n context: \"formatting\"\n }) || match.day(dateString, {\n width: \"narrow\",\n context: \"formatting\"\n });\n\n // T\n case \"eeeee\":\n return match.day(dateString, {\n width: \"narrow\",\n context: \"formatting\"\n });\n // Tu\n case \"eeeeee\":\n return match.day(dateString, {\n width: \"short\",\n context: \"formatting\"\n }) || match.day(dateString, {\n width: \"narrow\",\n context: \"formatting\"\n });\n\n // Tuesday\n case \"eeee\":\n default:\n return match.day(dateString, {\n width: \"wide\",\n context: \"formatting\"\n }) || match.day(dateString, {\n width: \"abbreviated\",\n context: \"formatting\"\n }) || match.day(dateString, {\n width: \"short\",\n context: \"formatting\"\n }) || match.day(dateString, {\n width: \"narrow\",\n context: \"formatting\"\n });\n }\n }\n validate(_date, value) {\n return value >= 0 && value <= 6;\n }\n set(date, _flags, value, options) {\n date = setDay(date, value, options);\n date.setHours(0, 0, 0, 0);\n return date;\n }\n incompatibleTokens = [\"y\", \"R\", \"u\", \"q\", \"Q\", \"M\", \"L\", \"I\", \"d\", \"D\", \"E\", \"i\", \"c\", \"t\", \"T\"];\n}","import { setDay } from \"../../../setDay.mjs\";\nimport { Parser } from \"../Parser.mjs\";\nimport { mapValue, parseNDigits } from \"../utils.mjs\";\n\n// Stand-alone local day of week\nexport class StandAloneLocalDayParser extends Parser {\n priority = 90;\n parse(dateString, token, match, options) {\n const valueCallback = value => {\n // We want here floor instead of trunc, so we get -7 for value 0 instead of 0\n const wholeWeekDays = Math.floor((value - 1) / 7) * 7;\n return (value + options.weekStartsOn + 6) % 7 + wholeWeekDays;\n };\n switch (token) {\n // 3\n case \"c\":\n case \"cc\":\n // 03\n return mapValue(parseNDigits(token.length, dateString), valueCallback);\n // 3rd\n case \"co\":\n return mapValue(match.ordinalNumber(dateString, {\n unit: \"day\"\n }), valueCallback);\n // Tue\n case \"ccc\":\n return match.day(dateString, {\n width: \"abbreviated\",\n context: \"standalone\"\n }) || match.day(dateString, {\n width: \"short\",\n context: \"standalone\"\n }) || match.day(dateString, {\n width: \"narrow\",\n context: \"standalone\"\n });\n\n // T\n case \"ccccc\":\n return match.day(dateString, {\n width: \"narrow\",\n context: \"standalone\"\n });\n // Tu\n case \"cccccc\":\n return match.day(dateString, {\n width: \"short\",\n context: \"standalone\"\n }) || match.day(dateString, {\n width: \"narrow\",\n context: \"standalone\"\n });\n\n // Tuesday\n case \"cccc\":\n default:\n return match.day(dateString, {\n width: \"wide\",\n context: \"standalone\"\n }) || match.day(dateString, {\n width: \"abbreviated\",\n context: \"standalone\"\n }) || match.day(dateString, {\n width: \"short\",\n context: \"standalone\"\n }) || match.day(dateString, {\n width: \"narrow\",\n context: \"standalone\"\n });\n }\n }\n validate(_date, value) {\n return value >= 0 && value <= 6;\n }\n set(date, _flags, value, options) {\n date = setDay(date, value, options);\n date.setHours(0, 0, 0, 0);\n return date;\n }\n incompatibleTokens = [\"y\", \"R\", \"u\", \"q\", \"Q\", \"M\", \"L\", \"I\", \"d\", \"D\", \"E\", \"i\", \"e\", \"t\", \"T\"];\n}","import { addDays } from \"./addDays.mjs\";\nimport { getISODay } from \"./getISODay.mjs\";\nimport { toDate } from \"./toDate.mjs\";\n\n/**\n * @name setISODay\n * @category Weekday Helpers\n * @summary Set the day of the ISO week to the given date.\n *\n * @description\n * Set the day of the ISO week to the given date.\n * ISO week starts with Monday.\n * 7 is the index of Sunday, 1 is the index of Monday etc.\n *\n * @typeParam DateType - The `Date` type, the function operates on. Gets inferred from passed arguments. Allows to use extensions like [`UTCDate`](https://github.com/date-fns/utc).\n *\n * @param date - The date to be changed\n * @param day - The day of the ISO week of the new date\n *\n * @returns The new date with the day of the ISO week set\n *\n * @example\n * // Set Sunday to 1 September 2014:\n * const result = setISODay(new Date(2014, 8, 1), 7)\n * //=> Sun Sep 07 2014 00:00:00\n */\nexport function setISODay(date, day) {\n const _date = toDate(date);\n const currentDay = getISODay(_date);\n const diff = day - currentDay;\n return addDays(_date, diff);\n}\n\n// Fallback for modularized imports:\nexport default setISODay;","import { setISODay } from \"../../../setISODay.mjs\";\nimport { Parser } from \"../Parser.mjs\";\nimport { mapValue, parseNDigits } from \"../utils.mjs\";\n\n// ISO day of week\nexport class ISODayParser extends Parser {\n priority = 90;\n parse(dateString, token, match) {\n const valueCallback = value => {\n if (value === 0) {\n return 7;\n }\n return value;\n };\n switch (token) {\n // 2\n case \"i\":\n case \"ii\":\n // 02\n return parseNDigits(token.length, dateString);\n // 2nd\n case \"io\":\n return match.ordinalNumber(dateString, {\n unit: \"day\"\n });\n // Tue\n case \"iii\":\n return mapValue(match.day(dateString, {\n width: \"abbreviated\",\n context: \"formatting\"\n }) || match.day(dateString, {\n width: \"short\",\n context: \"formatting\"\n }) || match.day(dateString, {\n width: \"narrow\",\n context: \"formatting\"\n }), valueCallback);\n // T\n case \"iiiii\":\n return mapValue(match.day(dateString, {\n width: \"narrow\",\n context: \"formatting\"\n }), valueCallback);\n // Tu\n case \"iiiiii\":\n return mapValue(match.day(dateString, {\n width: \"short\",\n context: \"formatting\"\n }) || match.day(dateString, {\n width: \"narrow\",\n context: \"formatting\"\n }), valueCallback);\n // Tuesday\n case \"iiii\":\n default:\n return mapValue(match.day(dateString, {\n width: \"wide\",\n context: \"formatting\"\n }) || match.day(dateString, {\n width: \"abbreviated\",\n context: \"formatting\"\n }) || match.day(dateString, {\n width: \"short\",\n context: \"formatting\"\n }) || match.day(dateString, {\n width: \"narrow\",\n context: \"formatting\"\n }), valueCallback);\n }\n }\n validate(_date, value) {\n return value >= 1 && value <= 7;\n }\n set(date, _flags, value) {\n date = setISODay(date, value);\n date.setHours(0, 0, 0, 0);\n return date;\n }\n incompatibleTokens = [\"y\", \"Y\", \"u\", \"q\", \"Q\", \"M\", \"L\", \"w\", \"d\", \"D\", \"E\", \"e\", \"c\", \"t\", \"T\"];\n}","import { Parser } from \"../Parser.mjs\";\nimport { dayPeriodEnumToHours } from \"../utils.mjs\";\nexport class AMPMParser extends Parser {\n priority = 80;\n parse(dateString, token, match) {\n switch (token) {\n case \"a\":\n case \"aa\":\n case \"aaa\":\n return match.dayPeriod(dateString, {\n width: \"abbreviated\",\n context: \"formatting\"\n }) || match.dayPeriod(dateString, {\n width: \"narrow\",\n context: \"formatting\"\n });\n case \"aaaaa\":\n return match.dayPeriod(dateString, {\n width: \"narrow\",\n context: \"formatting\"\n });\n case \"aaaa\":\n default:\n return match.dayPeriod(dateString, {\n width: \"wide\",\n context: \"formatting\"\n }) || match.dayPeriod(dateString, {\n width: \"abbreviated\",\n context: \"formatting\"\n }) || match.dayPeriod(dateString, {\n width: \"narrow\",\n context: \"formatting\"\n });\n }\n }\n set(date, _flags, value) {\n date.setHours(dayPeriodEnumToHours(value), 0, 0, 0);\n return date;\n }\n incompatibleTokens = [\"b\", \"B\", \"H\", \"k\", \"t\", \"T\"];\n}","import { Parser } from \"../Parser.mjs\";\nimport { dayPeriodEnumToHours } from \"../utils.mjs\";\nexport class AMPMMidnightParser extends Parser {\n priority = 80;\n parse(dateString, token, match) {\n switch (token) {\n case \"b\":\n case \"bb\":\n case \"bbb\":\n return match.dayPeriod(dateString, {\n width: \"abbreviated\",\n context: \"formatting\"\n }) || match.dayPeriod(dateString, {\n width: \"narrow\",\n context: \"formatting\"\n });\n case \"bbbbb\":\n return match.dayPeriod(dateString, {\n width: \"narrow\",\n context: \"formatting\"\n });\n case \"bbbb\":\n default:\n return match.dayPeriod(dateString, {\n width: \"wide\",\n context: \"formatting\"\n }) || match.dayPeriod(dateString, {\n width: \"abbreviated\",\n context: \"formatting\"\n }) || match.dayPeriod(dateString, {\n width: \"narrow\",\n context: \"formatting\"\n });\n }\n }\n set(date, _flags, value) {\n date.setHours(dayPeriodEnumToHours(value), 0, 0, 0);\n return date;\n }\n incompatibleTokens = [\"a\", \"B\", \"H\", \"k\", \"t\", \"T\"];\n}","import { Parser } from \"../Parser.mjs\";\nimport { dayPeriodEnumToHours } from \"../utils.mjs\";\n\n// in the morning, in the afternoon, in the evening, at night\nexport class DayPeriodParser extends Parser {\n priority = 80;\n parse(dateString, token, match) {\n switch (token) {\n case \"B\":\n case \"BB\":\n case \"BBB\":\n return match.dayPeriod(dateString, {\n width: \"abbreviated\",\n context: \"formatting\"\n }) || match.dayPeriod(dateString, {\n width: \"narrow\",\n context: \"formatting\"\n });\n case \"BBBBB\":\n return match.dayPeriod(dateString, {\n width: \"narrow\",\n context: \"formatting\"\n });\n case \"BBBB\":\n default:\n return match.dayPeriod(dateString, {\n width: \"wide\",\n context: \"formatting\"\n }) || match.dayPeriod(dateString, {\n width: \"abbreviated\",\n context: \"formatting\"\n }) || match.dayPeriod(dateString, {\n width: \"narrow\",\n context: \"formatting\"\n });\n }\n }\n set(date, _flags, value) {\n date.setHours(dayPeriodEnumToHours(value), 0, 0, 0);\n return date;\n }\n incompatibleTokens = [\"a\", \"b\", \"t\", \"T\"];\n}","import { numericPatterns } from \"../constants.mjs\";\nimport { Parser } from \"../Parser.mjs\";\nimport { parseNDigits, parseNumericPattern } from \"../utils.mjs\";\nexport class Hour1to12Parser extends Parser {\n priority = 70;\n parse(dateString, token, match) {\n switch (token) {\n case \"h\":\n return parseNumericPattern(numericPatterns.hour12h, dateString);\n case \"ho\":\n return match.ordinalNumber(dateString, {\n unit: \"hour\"\n });\n default:\n return parseNDigits(token.length, dateString);\n }\n }\n validate(_date, value) {\n return value >= 1 && value <= 12;\n }\n set(date, _flags, value) {\n const isPM = date.getHours() >= 12;\n if (isPM && value < 12) {\n date.setHours(value + 12, 0, 0, 0);\n } else if (!isPM && value === 12) {\n date.setHours(0, 0, 0, 0);\n } else {\n date.setHours(value, 0, 0, 0);\n }\n return date;\n }\n incompatibleTokens = [\"H\", \"K\", \"k\", \"t\", \"T\"];\n}","import { numericPatterns } from \"../constants.mjs\";\nimport { Parser } from \"../Parser.mjs\";\nimport { parseNDigits, parseNumericPattern } from \"../utils.mjs\";\nexport class Hour0to23Parser extends Parser {\n priority = 70;\n parse(dateString, token, match) {\n switch (token) {\n case \"H\":\n return parseNumericPattern(numericPatterns.hour23h, dateString);\n case \"Ho\":\n return match.ordinalNumber(dateString, {\n unit: \"hour\"\n });\n default:\n return parseNDigits(token.length, dateString);\n }\n }\n validate(_date, value) {\n return value >= 0 && value <= 23;\n }\n set(date, _flags, value) {\n date.setHours(value, 0, 0, 0);\n return date;\n }\n incompatibleTokens = [\"a\", \"b\", \"h\", \"K\", \"k\", \"t\", \"T\"];\n}","import { numericPatterns } from \"../constants.mjs\";\nimport { Parser } from \"../Parser.mjs\";\nimport { parseNDigits, parseNumericPattern } from \"../utils.mjs\";\nexport class Hour0To11Parser extends Parser {\n priority = 70;\n parse(dateString, token, match) {\n switch (token) {\n case \"K\":\n return parseNumericPattern(numericPatterns.hour11h, dateString);\n case \"Ko\":\n return match.ordinalNumber(dateString, {\n unit: \"hour\"\n });\n default:\n return parseNDigits(token.length, dateString);\n }\n }\n validate(_date, value) {\n return value >= 0 && value <= 11;\n }\n set(date, _flags, value) {\n const isPM = date.getHours() >= 12;\n if (isPM && value < 12) {\n date.setHours(value + 12, 0, 0, 0);\n } else {\n date.setHours(value, 0, 0, 0);\n }\n return date;\n }\n incompatibleTokens = [\"h\", \"H\", \"k\", \"t\", \"T\"];\n}","import { numericPatterns } from \"../constants.mjs\";\nimport { Parser } from \"../Parser.mjs\";\nimport { parseNDigits, parseNumericPattern } from \"../utils.mjs\";\nexport class Hour1To24Parser extends Parser {\n priority = 70;\n parse(dateString, token, match) {\n switch (token) {\n case \"k\":\n return parseNumericPattern(numericPatterns.hour24h, dateString);\n case \"ko\":\n return match.ordinalNumber(dateString, {\n unit: \"hour\"\n });\n default:\n return parseNDigits(token.length, dateString);\n }\n }\n validate(_date, value) {\n return value >= 1 && value <= 24;\n }\n set(date, _flags, value) {\n const hours = value <= 24 ? value % 24 : value;\n date.setHours(hours, 0, 0, 0);\n return date;\n }\n incompatibleTokens = [\"a\", \"b\", \"h\", \"H\", \"K\", \"t\", \"T\"];\n}","import { numericPatterns } from \"../constants.mjs\";\nimport { Parser } from \"../Parser.mjs\";\nimport { parseNDigits, parseNumericPattern } from \"../utils.mjs\";\nexport class MinuteParser extends Parser {\n priority = 60;\n parse(dateString, token, match) {\n switch (token) {\n case \"m\":\n return parseNumericPattern(numericPatterns.minute, dateString);\n case \"mo\":\n return match.ordinalNumber(dateString, {\n unit: \"minute\"\n });\n default:\n return parseNDigits(token.length, dateString);\n }\n }\n validate(_date, value) {\n return value >= 0 && value <= 59;\n }\n set(date, _flags, value) {\n date.setMinutes(value, 0, 0);\n return date;\n }\n incompatibleTokens = [\"t\", \"T\"];\n}","import { numericPatterns } from \"../constants.mjs\";\nimport { Parser } from \"../Parser.mjs\";\nimport { parseNDigits, parseNumericPattern } from \"../utils.mjs\";\nexport class SecondParser extends Parser {\n priority = 50;\n parse(dateString, token, match) {\n switch (token) {\n case \"s\":\n return parseNumericPattern(numericPatterns.second, dateString);\n case \"so\":\n return match.ordinalNumber(dateString, {\n unit: \"second\"\n });\n default:\n return parseNDigits(token.length, dateString);\n }\n }\n validate(_date, value) {\n return value >= 0 && value <= 59;\n }\n set(date, _flags, value) {\n date.setSeconds(value, 0);\n return date;\n }\n incompatibleTokens = [\"t\", \"T\"];\n}","import { Parser } from \"../Parser.mjs\";\nimport { mapValue, parseNDigits } from \"../utils.mjs\";\nexport class FractionOfSecondParser extends Parser {\n priority = 30;\n parse(dateString, token) {\n const valueCallback = value => Math.trunc(value * Math.pow(10, -token.length + 3));\n return mapValue(parseNDigits(token.length, dateString), valueCallback);\n }\n set(date, _flags, value) {\n date.setMilliseconds(value);\n return date;\n }\n incompatibleTokens = [\"t\", \"T\"];\n}","import { constructFrom } from \"../../../constructFrom.mjs\";\nimport { getTimezoneOffsetInMilliseconds } from \"../../../_lib/getTimezoneOffsetInMilliseconds.mjs\";\nimport { timezonePatterns } from \"../constants.mjs\";\nimport { Parser } from \"../Parser.mjs\";\nimport { parseTimezonePattern } from \"../utils.mjs\";\n\n// Timezone (ISO-8601. +00:00 is `'Z'`)\nexport class ISOTimezoneWithZParser extends Parser {\n priority = 10;\n parse(dateString, token) {\n switch (token) {\n case \"X\":\n return parseTimezonePattern(timezonePatterns.basicOptionalMinutes, dateString);\n case \"XX\":\n return parseTimezonePattern(timezonePatterns.basic, dateString);\n case \"XXXX\":\n return parseTimezonePattern(timezonePatterns.basicOptionalSeconds, dateString);\n case \"XXXXX\":\n return parseTimezonePattern(timezonePatterns.extendedOptionalSeconds, dateString);\n case \"XXX\":\n default:\n return parseTimezonePattern(timezonePatterns.extended, dateString);\n }\n }\n set(date, flags, value) {\n if (flags.timestampIsSet) return date;\n return constructFrom(date, date.getTime() - getTimezoneOffsetInMilliseconds(date) - value);\n }\n incompatibleTokens = [\"t\", \"T\", \"x\"];\n}","import { constructFrom } from \"../../../constructFrom.mjs\";\nimport { getTimezoneOffsetInMilliseconds } from \"../../../_lib/getTimezoneOffsetInMilliseconds.mjs\";\nimport { timezonePatterns } from \"../constants.mjs\";\nimport { Parser } from \"../Parser.mjs\";\nimport { parseTimezonePattern } from \"../utils.mjs\";\n\n// Timezone (ISO-8601)\nexport class ISOTimezoneParser extends Parser {\n priority = 10;\n parse(dateString, token) {\n switch (token) {\n case \"x\":\n return parseTimezonePattern(timezonePatterns.basicOptionalMinutes, dateString);\n case \"xx\":\n return parseTimezonePattern(timezonePatterns.basic, dateString);\n case \"xxxx\":\n return parseTimezonePattern(timezonePatterns.basicOptionalSeconds, dateString);\n case \"xxxxx\":\n return parseTimezonePattern(timezonePatterns.extendedOptionalSeconds, dateString);\n case \"xxx\":\n default:\n return parseTimezonePattern(timezonePatterns.extended, dateString);\n }\n }\n set(date, flags, value) {\n if (flags.timestampIsSet) return date;\n return constructFrom(date, date.getTime() - getTimezoneOffsetInMilliseconds(date) - value);\n }\n incompatibleTokens = [\"t\", \"T\", \"X\"];\n}","import { constructFrom } from \"../../../constructFrom.mjs\";\nimport { Parser } from \"../Parser.mjs\";\nimport { parseAnyDigitsSigned } from \"../utils.mjs\";\nexport class TimestampSecondsParser extends Parser {\n priority = 40;\n parse(dateString) {\n return parseAnyDigitsSigned(dateString);\n }\n set(date, _flags, value) {\n return [constructFrom(date, value * 1000), {\n timestampIsSet: true\n }];\n }\n incompatibleTokens = \"*\";\n}","import { constructFrom } from \"../../../constructFrom.mjs\";\nimport { Parser } from \"../Parser.mjs\";\nimport { parseAnyDigitsSigned } from \"../utils.mjs\";\nexport class TimestampMillisecondsParser extends Parser {\n priority = 20;\n parse(dateString) {\n return parseAnyDigitsSigned(dateString);\n }\n set(date, _flags, value) {\n return [constructFrom(date, value), {\n timestampIsSet: true\n }];\n }\n incompatibleTokens = \"*\";\n}","import { EraParser } from \"./parsers/EraParser.mjs\";\nimport { YearParser } from \"./parsers/YearParser.mjs\";\nimport { LocalWeekYearParser } from \"./parsers/LocalWeekYearParser.mjs\";\nimport { ISOWeekYearParser } from \"./parsers/ISOWeekYearParser.mjs\";\nimport { ExtendedYearParser } from \"./parsers/ExtendedYearParser.mjs\";\nimport { QuarterParser } from \"./parsers/QuarterParser.mjs\";\nimport { StandAloneQuarterParser } from \"./parsers/StandAloneQuarterParser.mjs\";\nimport { MonthParser } from \"./parsers/MonthParser.mjs\";\nimport { StandAloneMonthParser } from \"./parsers/StandAloneMonthParser.mjs\";\nimport { LocalWeekParser } from \"./parsers/LocalWeekParser.mjs\";\nimport { ISOWeekParser } from \"./parsers/ISOWeekParser.mjs\";\nimport { DateParser } from \"./parsers/DateParser.mjs\";\nimport { DayOfYearParser } from \"./parsers/DayOfYearParser.mjs\";\nimport { DayParser } from \"./parsers/DayParser.mjs\";\nimport { LocalDayParser } from \"./parsers/LocalDayParser.mjs\";\nimport { StandAloneLocalDayParser } from \"./parsers/StandAloneLocalDayParser.mjs\";\nimport { ISODayParser } from \"./parsers/ISODayParser.mjs\";\nimport { AMPMParser } from \"./parsers/AMPMParser.mjs\";\nimport { AMPMMidnightParser } from \"./parsers/AMPMMidnightParser.mjs\";\nimport { DayPeriodParser } from \"./parsers/DayPeriodParser.mjs\";\nimport { Hour1to12Parser } from \"./parsers/Hour1to12Parser.mjs\";\nimport { Hour0to23Parser } from \"./parsers/Hour0to23Parser.mjs\";\nimport { Hour0To11Parser } from \"./parsers/Hour0To11Parser.mjs\";\nimport { Hour1To24Parser } from \"./parsers/Hour1To24Parser.mjs\";\nimport { MinuteParser } from \"./parsers/MinuteParser.mjs\";\nimport { SecondParser } from \"./parsers/SecondParser.mjs\";\nimport { FractionOfSecondParser } from \"./parsers/FractionOfSecondParser.mjs\";\nimport { ISOTimezoneWithZParser } from \"./parsers/ISOTimezoneWithZParser.mjs\";\nimport { ISOTimezoneParser } from \"./parsers/ISOTimezoneParser.mjs\";\nimport { TimestampSecondsParser } from \"./parsers/TimestampSecondsParser.mjs\";\nimport { TimestampMillisecondsParser } from \"./parsers/TimestampMillisecondsParser.mjs\";\n\n/*\n * | | Unit | | Unit |\n * |-----|--------------------------------|-----|--------------------------------|\n * | a | AM, PM | A* | Milliseconds in day |\n * | b | AM, PM, noon, midnight | B | Flexible day period |\n * | c | Stand-alone local day of week | C* | Localized hour w/ day period |\n * | d | Day of month | D | Day of year |\n * | e | Local day of week | E | Day of week |\n * | f | | F* | Day of week in month |\n * | g* | Modified Julian day | G | Era |\n * | h | Hour [1-12] | H | Hour [0-23] |\n * | i! | ISO day of week | I! | ISO week of year |\n * | j* | Localized hour w/ day period | J* | Localized hour w/o day period |\n * | k | Hour [1-24] | K | Hour [0-11] |\n * | l* | (deprecated) | L | Stand-alone month |\n * | m | Minute | M | Month |\n * | n | | N | |\n * | o! | Ordinal number modifier | O* | Timezone (GMT) |\n * | p | | P | |\n * | q | Stand-alone quarter | Q | Quarter |\n * | r* | Related Gregorian year | R! | ISO week-numbering year |\n * | s | Second | S | Fraction of second |\n * | t! | Seconds timestamp | T! | Milliseconds timestamp |\n * | u | Extended year | U* | Cyclic year |\n * | v* | Timezone (generic non-locat.) | V* | Timezone (location) |\n * | w | Local week of year | W* | Week of month |\n * | x | Timezone (ISO-8601 w/o Z) | X | Timezone (ISO-8601) |\n * | y | Year (abs) | Y | Local week-numbering year |\n * | z* | Timezone (specific non-locat.) | Z* | Timezone (aliases) |\n *\n * Letters marked by * are not implemented but reserved by Unicode standard.\n *\n * Letters marked by ! are non-standard, but implemented by date-fns:\n * - `o` modifies the previous token to turn it into an ordinal (see `parse` docs)\n * - `i` is ISO day of week. For `i` and `ii` is returns numeric ISO week days,\n * i.e. 7 for Sunday, 1 for Monday, etc.\n * - `I` is ISO week of year, as opposed to `w` which is local week of year.\n * - `R` is ISO week-numbering year, as opposed to `Y` which is local week-numbering year.\n * `R` is supposed to be used in conjunction with `I` and `i`\n * for universal ISO week-numbering date, whereas\n * `Y` is supposed to be used in conjunction with `w` and `e`\n * for week-numbering date specific to the locale.\n */\n// eslint-disable-next-line @typescript-eslint/no-explicit-any -- It's ok, we want any here\nexport const parsers = {\n G: new EraParser(),\n y: new YearParser(),\n Y: new LocalWeekYearParser(),\n R: new ISOWeekYearParser(),\n u: new ExtendedYearParser(),\n Q: new QuarterParser(),\n q: new StandAloneQuarterParser(),\n M: new MonthParser(),\n L: new StandAloneMonthParser(),\n w: new LocalWeekParser(),\n I: new ISOWeekParser(),\n d: new DateParser(),\n D: new DayOfYearParser(),\n E: new DayParser(),\n e: new LocalDayParser(),\n c: new StandAloneLocalDayParser(),\n i: new ISODayParser(),\n a: new AMPMParser(),\n b: new AMPMMidnightParser(),\n B: new DayPeriodParser(),\n h: new Hour1to12Parser(),\n H: new Hour0to23Parser(),\n K: new Hour0To11Parser(),\n k: new Hour1To24Parser(),\n m: new MinuteParser(),\n s: new SecondParser(),\n S: new FractionOfSecondParser(),\n X: new ISOTimezoneWithZParser(),\n x: new ISOTimezoneParser(),\n t: new TimestampSecondsParser(),\n T: new TimestampMillisecondsParser()\n};","import { constructFrom } from \"./constructFrom.mjs\";\nimport { getDefaultOptions } from \"./getDefaultOptions.mjs\";\nimport { defaultLocale } from \"./_lib/defaultLocale.mjs\";\nimport { toDate } from \"./toDate.mjs\";\nimport { longFormatters } from \"./_lib/format/longFormatters.mjs\";\nimport { isProtectedDayOfYearToken, isProtectedWeekYearToken, warnOrThrowProtectedError } from \"./_lib/protectedTokens.mjs\";\nimport { parsers } from \"./parse/_lib/parsers.mjs\";\nimport { DateToSystemTimezoneSetter } from \"./parse/_lib/Setter.mjs\";\n\n// Rexports of internal for libraries to use.\n// See: https://github.com/date-fns/date-fns/issues/3638#issuecomment-1877082874\nexport { longFormatters, parsers };\n\n/**\n * The {@link parse} function options.\n */\n\n// This RegExp consists of three parts separated by `|`:\n// - [yYQqMLwIdDecihHKkms]o matches any available ordinal number token\n// (one of the certain letters followed by `o`)\n// - (\\w)\\1* matches any sequences of the same letter\n// - '' matches two quote characters in a row\n// - '(''|[^'])+('|$) matches anything surrounded by two quote characters ('),\n// except a single quote symbol, which ends the sequence.\n// Two quote characters do not end the sequence.\n// If there is no matching single quote\n// then the sequence will continue until the end of the string.\n// - . matches any single character unmatched by previous parts of the RegExps\nconst formattingTokensRegExp = /[yYQqMLwIdDecihHKkms]o|(\\w)\\1*|''|'(''|[^'])+('|$)|./g;\n\n// This RegExp catches symbols escaped by quotes, and also\n// sequences of symbols P, p, and the combinations like `PPPPPPPppppp`\nconst longFormattingTokensRegExp = /P+p+|P+|p+|''|'(''|[^'])+('|$)|./g;\nconst escapedStringRegExp = /^'([^]*?)'?$/;\nconst doubleQuoteRegExp = /''/g;\nconst notWhitespaceRegExp = /\\S/;\nconst unescapedLatinCharacterRegExp = /[a-zA-Z]/;\n\n/**\n * @name parse\n * @category Common Helpers\n * @summary Parse the date.\n *\n * @description\n * Return the date parsed from string using the given format string.\n *\n * > ⚠️ Please note that the `format` tokens differ from Moment.js and other libraries.\n * > See: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md\n *\n * The characters in the format string wrapped between two single quotes characters (') are escaped.\n * Two single quotes in a row, whether inside or outside a quoted sequence, represent a 'real' single quote.\n *\n * Format of the format string is based on Unicode Technical Standard #35:\n * https://www.unicode.org/reports/tr35/tr35-dates.html#Date_Field_Symbol_Table\n * with a few additions (see note 5 below the table).\n *\n * Not all tokens are compatible. Combinations that don't make sense or could lead to bugs are prohibited\n * and will throw `RangeError`. For example usage of 24-hour format token with AM/PM token will throw an exception:\n *\n * ```javascript\n * parse('23 AM', 'HH a', new Date())\n * //=> RangeError: The format string mustn't contain `HH` and `a` at the same time\n * ```\n *\n * See the compatibility table: https://docs.google.com/spreadsheets/d/e/2PACX-1vQOPU3xUhplll6dyoMmVUXHKl_8CRDs6_ueLmex3SoqwhuolkuN3O05l4rqx5h1dKX8eb46Ul-CCSrq/pubhtml?gid=0&single=true\n *\n * Accepted format string patterns:\n * | Unit |Prior| Pattern | Result examples | Notes |\n * |---------------------------------|-----|---------|-----------------------------------|-------|\n * | Era | 140 | G..GGG | AD, BC | |\n * | | | GGGG | Anno Domini, Before Christ | 2 |\n * | | | GGGGG | A, B | |\n * | Calendar year | 130 | y | 44, 1, 1900, 2017, 9999 | 4 |\n * | | | yo | 44th, 1st, 1900th, 9999999th | 4,5 |\n * | | | yy | 44, 01, 00, 17 | 4 |\n * | | | yyy | 044, 001, 123, 999 | 4 |\n * | | | yyyy | 0044, 0001, 1900, 2017 | 4 |\n * | | | yyyyy | ... | 2,4 |\n * | Local week-numbering year | 130 | Y | 44, 1, 1900, 2017, 9000 | 4 |\n * | | | Yo | 44th, 1st, 1900th, 9999999th | 4,5 |\n * | | | YY | 44, 01, 00, 17 | 4,6 |\n * | | | YYY | 044, 001, 123, 999 | 4 |\n * | | | YYYY | 0044, 0001, 1900, 2017 | 4,6 |\n * | | | YYYYY | ... | 2,4 |\n * | ISO week-numbering year | 130 | R | -43, 1, 1900, 2017, 9999, -9999 | 4,5 |\n * | | | RR | -43, 01, 00, 17 | 4,5 |\n * | | | RRR | -043, 001, 123, 999, -999 | 4,5 |\n * | | | RRRR | -0043, 0001, 2017, 9999, -9999 | 4,5 |\n * | | | RRRRR | ... | 2,4,5 |\n * | Extended year | 130 | u | -43, 1, 1900, 2017, 9999, -999 | 4 |\n * | | | uu | -43, 01, 99, -99 | 4 |\n * | | | uuu | -043, 001, 123, 999, -999 | 4 |\n * | | | uuuu | -0043, 0001, 2017, 9999, -9999 | 4 |\n * | | | uuuuu | ... | 2,4 |\n * | Quarter (formatting) | 120 | Q | 1, 2, 3, 4 | |\n * | | | Qo | 1st, 2nd, 3rd, 4th | 5 |\n * | | | QQ | 01, 02, 03, 04 | |\n * | | | QQQ | Q1, Q2, Q3, Q4 | |\n * | | | QQQQ | 1st quarter, 2nd quarter, ... | 2 |\n * | | | QQQQQ | 1, 2, 3, 4 | 4 |\n * | Quarter (stand-alone) | 120 | q | 1, 2, 3, 4 | |\n * | | | qo | 1st, 2nd, 3rd, 4th | 5 |\n * | | | qq | 01, 02, 03, 04 | |\n * | | | qqq | Q1, Q2, Q3, Q4 | |\n * | | | qqqq | 1st quarter, 2nd quarter, ... | 2 |\n * | | | qqqqq | 1, 2, 3, 4 | 3 |\n * | Month (formatting) | 110 | M | 1, 2, ..., 12 | |\n * | | | Mo | 1st, 2nd, ..., 12th | 5 |\n * | | | MM | 01, 02, ..., 12 | |\n * | | | MMM | Jan, Feb, ..., Dec | |\n * | | | MMMM | January, February, ..., December | 2 |\n * | | | MMMMM | J, F, ..., D | |\n * | Month (stand-alone) | 110 | L | 1, 2, ..., 12 | |\n * | | | Lo | 1st, 2nd, ..., 12th | 5 |\n * | | | LL | 01, 02, ..., 12 | |\n * | | | LLL | Jan, Feb, ..., Dec | |\n * | | | LLLL | January, February, ..., December | 2 |\n * | | | LLLLL | J, F, ..., D | |\n * | Local week of year | 100 | w | 1, 2, ..., 53 | |\n * | | | wo | 1st, 2nd, ..., 53th | 5 |\n * | | | ww | 01, 02, ..., 53 | |\n * | ISO week of year | 100 | I | 1, 2, ..., 53 | 5 |\n * | | | Io | 1st, 2nd, ..., 53th | 5 |\n * | | | II | 01, 02, ..., 53 | 5 |\n * | Day of month | 90 | d | 1, 2, ..., 31 | |\n * | | | do | 1st, 2nd, ..., 31st | 5 |\n * | | | dd | 01, 02, ..., 31 | |\n * | Day of year | 90 | D | 1, 2, ..., 365, 366 | 7 |\n * | | | Do | 1st, 2nd, ..., 365th, 366th | 5 |\n * | | | DD | 01, 02, ..., 365, 366 | 7 |\n * | | | DDD | 001, 002, ..., 365, 366 | |\n * | | | DDDD | ... | 2 |\n * | Day of week (formatting) | 90 | E..EEE | Mon, Tue, Wed, ..., Sun | |\n * | | | EEEE | Monday, Tuesday, ..., Sunday | 2 |\n * | | | EEEEE | M, T, W, T, F, S, S | |\n * | | | EEEEEE | Mo, Tu, We, Th, Fr, Sa, Su | |\n * | ISO day of week (formatting) | 90 | i | 1, 2, 3, ..., 7 | 5 |\n * | | | io | 1st, 2nd, ..., 7th | 5 |\n * | | | ii | 01, 02, ..., 07 | 5 |\n * | | | iii | Mon, Tue, Wed, ..., Sun | 5 |\n * | | | iiii | Monday, Tuesday, ..., Sunday | 2,5 |\n * | | | iiiii | M, T, W, T, F, S, S | 5 |\n * | | | iiiiii | Mo, Tu, We, Th, Fr, Sa, Su | 5 |\n * | Local day of week (formatting) | 90 | e | 2, 3, 4, ..., 1 | |\n * | | | eo | 2nd, 3rd, ..., 1st | 5 |\n * | | | ee | 02, 03, ..., 01 | |\n * | | | eee | Mon, Tue, Wed, ..., Sun | |\n * | | | eeee | Monday, Tuesday, ..., Sunday | 2 |\n * | | | eeeee | M, T, W, T, F, S, S | |\n * | | | eeeeee | Mo, Tu, We, Th, Fr, Sa, Su | |\n * | Local day of week (stand-alone) | 90 | c | 2, 3, 4, ..., 1 | |\n * | | | co | 2nd, 3rd, ..., 1st | 5 |\n * | | | cc | 02, 03, ..., 01 | |\n * | | | ccc | Mon, Tue, Wed, ..., Sun | |\n * | | | cccc | Monday, Tuesday, ..., Sunday | 2 |\n * | | | ccccc | M, T, W, T, F, S, S | |\n * | | | cccccc | Mo, Tu, We, Th, Fr, Sa, Su | |\n * | AM, PM | 80 | a..aaa | AM, PM | |\n * | | | aaaa | a.m., p.m. | 2 |\n * | | | aaaaa | a, p | |\n * | AM, PM, noon, midnight | 80 | b..bbb | AM, PM, noon, midnight | |\n * | | | bbbb | a.m., p.m., noon, midnight | 2 |\n * | | | bbbbb | a, p, n, mi | |\n * | Flexible day period | 80 | B..BBB | at night, in the morning, ... | |\n * | | | BBBB | at night, in the morning, ... | 2 |\n * | | | BBBBB | at night, in the morning, ... | |\n * | Hour [1-12] | 70 | h | 1, 2, ..., 11, 12 | |\n * | | | ho | 1st, 2nd, ..., 11th, 12th | 5 |\n * | | | hh | 01, 02, ..., 11, 12 | |\n * | Hour [0-23] | 70 | H | 0, 1, 2, ..., 23 | |\n * | | | Ho | 0th, 1st, 2nd, ..., 23rd | 5 |\n * | | | HH | 00, 01, 02, ..., 23 | |\n * | Hour [0-11] | 70 | K | 1, 2, ..., 11, 0 | |\n * | | | Ko | 1st, 2nd, ..., 11th, 0th | 5 |\n * | | | KK | 01, 02, ..., 11, 00 | |\n * | Hour [1-24] | 70 | k | 24, 1, 2, ..., 23 | |\n * | | | ko | 24th, 1st, 2nd, ..., 23rd | 5 |\n * | | | kk | 24, 01, 02, ..., 23 | |\n * | Minute | 60 | m | 0, 1, ..., 59 | |\n * | | | mo | 0th, 1st, ..., 59th | 5 |\n * | | | mm | 00, 01, ..., 59 | |\n * | Second | 50 | s | 0, 1, ..., 59 | |\n * | | | so | 0th, 1st, ..., 59th | 5 |\n * | | | ss | 00, 01, ..., 59 | |\n * | Seconds timestamp | 40 | t | 512969520 | |\n * | | | tt | ... | 2 |\n * | Fraction of second | 30 | S | 0, 1, ..., 9 | |\n * | | | SS | 00, 01, ..., 99 | |\n * | | | SSS | 000, 001, ..., 999 | |\n * | | | SSSS | ... | 2 |\n * | Milliseconds timestamp | 20 | T | 512969520900 | |\n * | | | TT | ... | 2 |\n * | Timezone (ISO-8601 w/ Z) | 10 | X | -08, +0530, Z | |\n * | | | XX | -0800, +0530, Z | |\n * | | | XXX | -08:00, +05:30, Z | |\n * | | | XXXX | -0800, +0530, Z, +123456 | 2 |\n * | | | XXXXX | -08:00, +05:30, Z, +12:34:56 | |\n * | Timezone (ISO-8601 w/o Z) | 10 | x | -08, +0530, +00 | |\n * | | | xx | -0800, +0530, +0000 | |\n * | | | xxx | -08:00, +05:30, +00:00 | 2 |\n * | | | xxxx | -0800, +0530, +0000, +123456 | |\n * | | | xxxxx | -08:00, +05:30, +00:00, +12:34:56 | |\n * | Long localized date | NA | P | 05/29/1453 | 5,8 |\n * | | | PP | May 29, 1453 | |\n * | | | PPP | May 29th, 1453 | |\n * | | | PPPP | Sunday, May 29th, 1453 | 2,5,8 |\n * | Long localized time | NA | p | 12:00 AM | 5,8 |\n * | | | pp | 12:00:00 AM | |\n * | Combination of date and time | NA | Pp | 05/29/1453, 12:00 AM | |\n * | | | PPpp | May 29, 1453, 12:00:00 AM | |\n * | | | PPPpp | May 29th, 1453 at ... | |\n * | | | PPPPpp | Sunday, May 29th, 1453 at ... | 2,5,8 |\n * Notes:\n * 1. \"Formatting\" units (e.g. formatting quarter) in the default en-US locale\n * are the same as \"stand-alone\" units, but are different in some languages.\n * \"Formatting\" units are declined according to the rules of the language\n * in the context of a date. \"Stand-alone\" units are always nominative singular.\n * In `format` function, they will produce different result:\n *\n * `format(new Date(2017, 10, 6), 'do LLLL', {locale: cs}) //=> '6. listopad'`\n *\n * `format(new Date(2017, 10, 6), 'do MMMM', {locale: cs}) //=> '6. listopadu'`\n *\n * `parse` will try to match both formatting and stand-alone units interchangably.\n *\n * 2. Any sequence of the identical letters is a pattern, unless it is escaped by\n * the single quote characters (see below).\n * If the sequence is longer than listed in table:\n * - for numerical units (`yyyyyyyy`) `parse` will try to match a number\n * as wide as the sequence\n * - for text units (`MMMMMMMM`) `parse` will try to match the widest variation of the unit.\n * These variations are marked with \"2\" in the last column of the table.\n *\n * 3. `QQQQQ` and `qqqqq` could be not strictly numerical in some locales.\n * These tokens represent the shortest form of the quarter.\n *\n * 4. The main difference between `y` and `u` patterns are B.C. years:\n *\n * | Year | `y` | `u` |\n * |------|-----|-----|\n * | AC 1 | 1 | 1 |\n * | BC 1 | 1 | 0 |\n * | BC 2 | 2 | -1 |\n *\n * Also `yy` will try to guess the century of two digit year by proximity with `referenceDate`:\n *\n * `parse('50', 'yy', new Date(2018, 0, 1)) //=> Sat Jan 01 2050 00:00:00`\n *\n * `parse('75', 'yy', new Date(2018, 0, 1)) //=> Wed Jan 01 1975 00:00:00`\n *\n * while `uu` will just assign the year as is:\n *\n * `parse('50', 'uu', new Date(2018, 0, 1)) //=> Sat Jan 01 0050 00:00:00`\n *\n * `parse('75', 'uu', new Date(2018, 0, 1)) //=> Tue Jan 01 0075 00:00:00`\n *\n * The same difference is true for local and ISO week-numbering years (`Y` and `R`),\n * except local week-numbering years are dependent on `options.weekStartsOn`\n * and `options.firstWeekContainsDate` (compare [setISOWeekYear](https://date-fns.org/docs/setISOWeekYear)\n * and [setWeekYear](https://date-fns.org/docs/setWeekYear)).\n *\n * 5. These patterns are not in the Unicode Technical Standard #35:\n * - `i`: ISO day of week\n * - `I`: ISO week of year\n * - `R`: ISO week-numbering year\n * - `o`: ordinal number modifier\n * - `P`: long localized date\n * - `p`: long localized time\n *\n * 6. `YY` and `YYYY` tokens represent week-numbering years but they are often confused with years.\n * You should enable `options.useAdditionalWeekYearTokens` to use them. See: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md\n *\n * 7. `D` and `DD` tokens represent days of the year but they are ofthen confused with days of the month.\n * You should enable `options.useAdditionalDayOfYearTokens` to use them. See: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md\n *\n * 8. `P+` tokens do not have a defined priority since they are merely aliases to other tokens based\n * on the given locale.\n *\n * using `en-US` locale: `P` => `MM/dd/yyyy`\n * using `en-US` locale: `p` => `hh:mm a`\n * using `pt-BR` locale: `P` => `dd/MM/yyyy`\n * using `pt-BR` locale: `p` => `HH:mm`\n *\n * Values will be assigned to the date in the descending order of its unit's priority.\n * Units of an equal priority overwrite each other in the order of appearance.\n *\n * If no values of higher priority are parsed (e.g. when parsing string 'January 1st' without a year),\n * the values will be taken from 3rd argument `referenceDate` which works as a context of parsing.\n *\n * `referenceDate` must be passed for correct work of the function.\n * If you're not sure which `referenceDate` to supply, create a new instance of Date:\n * `parse('02/11/2014', 'MM/dd/yyyy', new Date())`\n * In this case parsing will be done in the context of the current date.\n * If `referenceDate` is `Invalid Date` or a value not convertible to valid `Date`,\n * then `Invalid Date` will be returned.\n *\n * The result may vary by locale.\n *\n * If `formatString` matches with `dateString` but does not provides tokens, `referenceDate` will be returned.\n *\n * If parsing failed, `Invalid Date` will be returned.\n * Invalid Date is a Date, whose time value is NaN.\n * Time value of Date: http://es5.github.io/#x15.9.1.1\n *\n * @typeParam DateType - The `Date` type, the function operates on. Gets inferred from passed arguments. Allows to use extensions like [`UTCDate`](https://github.com/date-fns/utc).\n *\n * @param dateStr - The string to parse\n * @param formatStr - The string of tokens\n * @param referenceDate - defines values missing from the parsed dateString\n * @param options - An object with options.\n * see: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md\n * see: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md\n *\n * @returns The parsed date\n *\n * @throws `options.locale` must contain `match` property\n * @throws use `yyyy` instead of `YYYY` for formatting years using [format provided] to the input [input provided]; see: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md\n * @throws use `yy` instead of `YY` for formatting years using [format provided] to the input [input provided]; see: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md\n * @throws use `d` instead of `D` for formatting days of the month using [format provided] to the input [input provided]; see: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md\n * @throws use `dd` instead of `DD` for formatting days of the month using [format provided] to the input [input provided]; see: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md\n * @throws format string contains an unescaped latin alphabet character\n *\n * @example\n * // Parse 11 February 2014 from middle-endian format:\n * var result = parse('02/11/2014', 'MM/dd/yyyy', new Date())\n * //=> Tue Feb 11 2014 00:00:00\n *\n * @example\n * // Parse 28th of February in Esperanto locale in the context of 2010 year:\n * import eo from 'date-fns/locale/eo'\n * var result = parse('28-a de februaro', \"do 'de' MMMM\", new Date(2010, 0, 1), {\n * locale: eo\n * })\n * //=> Sun Feb 28 2010 00:00:00\n */\nexport function parse(dateStr, formatStr, referenceDate, options) {\n const defaultOptions = getDefaultOptions();\n const locale = options?.locale ?? defaultOptions.locale ?? defaultLocale;\n const firstWeekContainsDate = options?.firstWeekContainsDate ?? options?.locale?.options?.firstWeekContainsDate ?? defaultOptions.firstWeekContainsDate ?? defaultOptions.locale?.options?.firstWeekContainsDate ?? 1;\n const weekStartsOn = options?.weekStartsOn ?? options?.locale?.options?.weekStartsOn ?? defaultOptions.weekStartsOn ?? defaultOptions.locale?.options?.weekStartsOn ?? 0;\n if (formatStr === \"\") {\n if (dateStr === \"\") {\n return toDate(referenceDate);\n } else {\n return constructFrom(referenceDate, NaN);\n }\n }\n const subFnOptions = {\n firstWeekContainsDate,\n weekStartsOn,\n locale\n };\n\n // If timezone isn't specified, it will be set to the system timezone\n const setters = [new DateToSystemTimezoneSetter()];\n const tokens = formatStr.match(longFormattingTokensRegExp).map(substring => {\n const firstCharacter = substring[0];\n if (firstCharacter in longFormatters) {\n const longFormatter = longFormatters[firstCharacter];\n return longFormatter(substring, locale.formatLong);\n }\n return substring;\n }).join(\"\").match(formattingTokensRegExp);\n const usedTokens = [];\n for (let token of tokens) {\n if (!options?.useAdditionalWeekYearTokens && isProtectedWeekYearToken(token)) {\n warnOrThrowProtectedError(token, formatStr, dateStr);\n }\n if (!options?.useAdditionalDayOfYearTokens && isProtectedDayOfYearToken(token)) {\n warnOrThrowProtectedError(token, formatStr, dateStr);\n }\n const firstCharacter = token[0];\n const parser = parsers[firstCharacter];\n if (parser) {\n const {\n incompatibleTokens\n } = parser;\n if (Array.isArray(incompatibleTokens)) {\n const incompatibleToken = usedTokens.find(usedToken => incompatibleTokens.includes(usedToken.token) || usedToken.token === firstCharacter);\n if (incompatibleToken) {\n throw new RangeError(`The format string mustn't contain \\`${incompatibleToken.fullToken}\\` and \\`${token}\\` at the same time`);\n }\n } else if (parser.incompatibleTokens === \"*\" && usedTokens.length > 0) {\n throw new RangeError(`The format string mustn't contain \\`${token}\\` and any other token at the same time`);\n }\n usedTokens.push({\n token: firstCharacter,\n fullToken: token\n });\n const parseResult = parser.run(dateStr, token, locale.match, subFnOptions);\n if (!parseResult) {\n return constructFrom(referenceDate, NaN);\n }\n setters.push(parseResult.setter);\n dateStr = parseResult.rest;\n } else {\n if (firstCharacter.match(unescapedLatinCharacterRegExp)) {\n throw new RangeError(\"Format string contains an unescaped latin alphabet character `\" + firstCharacter + \"`\");\n }\n\n // Replace two single quote characters with one single quote character\n if (token === \"''\") {\n token = \"'\";\n } else if (firstCharacter === \"'\") {\n token = cleanEscapedString(token);\n }\n\n // Cut token from string, or, if string doesn't match the token, return Invalid Date\n if (dateStr.indexOf(token) === 0) {\n dateStr = dateStr.slice(token.length);\n } else {\n return constructFrom(referenceDate, NaN);\n }\n }\n }\n\n // Check if the remaining input contains something other than whitespace\n if (dateStr.length > 0 && notWhitespaceRegExp.test(dateStr)) {\n return constructFrom(referenceDate, NaN);\n }\n const uniquePrioritySetters = setters.map(setter => setter.priority).sort((a, b) => b - a).filter((priority, index, array) => array.indexOf(priority) === index).map(priority => setters.filter(setter => setter.priority === priority).sort((a, b) => b.subPriority - a.subPriority)).map(setterArray => setterArray[0]);\n let date = toDate(referenceDate);\n if (isNaN(date.getTime())) {\n return constructFrom(referenceDate, NaN);\n }\n const flags = {};\n for (const setter of uniquePrioritySetters) {\n if (!setter.validate(date, subFnOptions)) {\n return constructFrom(referenceDate, NaN);\n }\n const result = setter.set(date, flags, subFnOptions);\n // Result is tuple (date, flags)\n if (Array.isArray(result)) {\n date = result[0];\n Object.assign(flags, result[1]);\n // Result is date\n } else {\n date = result;\n }\n }\n return constructFrom(referenceDate, date);\n}\nfunction cleanEscapedString(input) {\n return input.match(escapedStringRegExp)[1].replace(doubleQuoteRegExp, \"'\");\n}\n\n// Fallback for modularized imports:\nexport default parse;","import { startOfWeek } from \"./startOfWeek.mjs\";\n\n/**\n * The {@link isSameWeek} function options.\n */\n\n/**\n * @name isSameWeek\n * @category Week Helpers\n * @summary Are the given dates in the same week (and month and year)?\n *\n * @description\n * Are the given dates in the same week (and month and year)?\n *\n * @typeParam DateType - The `Date` type, the function operates on. Gets inferred from passed arguments. Allows to use extensions like [`UTCDate`](https://github.com/date-fns/utc).\n *\n * @param dateLeft - The first date to check\n * @param dateRight - The second date to check\n * @param options - An object with options\n *\n * @returns The dates are in the same week (and month and year)\n *\n * @example\n * // Are 31 August 2014 and 4 September 2014 in the same week?\n * const result = isSameWeek(new Date(2014, 7, 31), new Date(2014, 8, 4))\n * //=> true\n *\n * @example\n * // If week starts with Monday,\n * // are 31 August 2014 and 4 September 2014 in the same week?\n * const result = isSameWeek(new Date(2014, 7, 31), new Date(2014, 8, 4), {\n * weekStartsOn: 1\n * })\n * //=> false\n *\n * @example\n * // Are 1 January 2014 and 1 January 2015 in the same week?\n * const result = isSameWeek(new Date(2014, 0, 1), new Date(2015, 0, 1))\n * //=> false\n */\nexport function isSameWeek(dateLeft, dateRight, options) {\n const dateLeftStartOfWeek = startOfWeek(dateLeft, options);\n const dateRightStartOfWeek = startOfWeek(dateRight, options);\n return +dateLeftStartOfWeek === +dateRightStartOfWeek;\n}\n\n// Fallback for modularized imports:\nexport default isSameWeek;","import { millisecondsInHour, millisecondsInMinute } from \"./constants.mjs\";\n\n/**\n * The {@link parseISO} function options.\n */\n\n/**\n * @name parseISO\n * @category Common Helpers\n * @summary Parse ISO string\n *\n * @description\n * Parse the given string in ISO 8601 format and return an instance of Date.\n *\n * Function accepts complete ISO 8601 formats as well as partial implementations.\n * ISO 8601: http://en.wikipedia.org/wiki/ISO_8601\n *\n * If the argument isn't a string, the function cannot parse the string or\n * the values are invalid, it returns Invalid Date.\n *\n * @typeParam DateType - The `Date` type, the function operates on. Gets inferred from passed arguments. Allows to use extensions like [`UTCDate`](https://github.com/date-fns/utc).\n *\n * @param argument - The value to convert\n * @param options - An object with options\n *\n * @returns The parsed date in the local time zone\n *\n * @example\n * // Convert string '2014-02-11T11:30:30' to date:\n * const result = parseISO('2014-02-11T11:30:30')\n * //=> Tue Feb 11 2014 11:30:30\n *\n * @example\n * // Convert string '+02014101' to date,\n * // if the additional number of digits in the extended year format is 1:\n * const result = parseISO('+02014101', { additionalDigits: 1 })\n * //=> Fri Apr 11 2014 00:00:00\n */\nexport function parseISO(argument, options) {\n const additionalDigits = options?.additionalDigits ?? 2;\n const dateStrings = splitDateString(argument);\n let date;\n if (dateStrings.date) {\n const parseYearResult = parseYear(dateStrings.date, additionalDigits);\n date = parseDate(parseYearResult.restDateString, parseYearResult.year);\n }\n if (!date || isNaN(date.getTime())) {\n return new Date(NaN);\n }\n const timestamp = date.getTime();\n let time = 0;\n let offset;\n if (dateStrings.time) {\n time = parseTime(dateStrings.time);\n if (isNaN(time)) {\n return new Date(NaN);\n }\n }\n if (dateStrings.timezone) {\n offset = parseTimezone(dateStrings.timezone);\n if (isNaN(offset)) {\n return new Date(NaN);\n }\n } else {\n const dirtyDate = new Date(timestamp + time);\n // JS parsed string assuming it's in UTC timezone\n // but we need it to be parsed in our timezone\n // so we use utc values to build date in our timezone.\n // Year values from 0 to 99 map to the years 1900 to 1999\n // so set year explicitly with setFullYear.\n const result = new Date(0);\n result.setFullYear(dirtyDate.getUTCFullYear(), dirtyDate.getUTCMonth(), dirtyDate.getUTCDate());\n result.setHours(dirtyDate.getUTCHours(), dirtyDate.getUTCMinutes(), dirtyDate.getUTCSeconds(), dirtyDate.getUTCMilliseconds());\n return result;\n }\n return new Date(timestamp + time + offset);\n}\nconst patterns = {\n dateTimeDelimiter: /[T ]/,\n timeZoneDelimiter: /[Z ]/i,\n timezone: /([Z+-].*)$/\n};\nconst dateRegex = /^-?(?:(\\d{3})|(\\d{2})(?:-?(\\d{2}))?|W(\\d{2})(?:-?(\\d{1}))?|)$/;\nconst timeRegex = /^(\\d{2}(?:[.,]\\d*)?)(?::?(\\d{2}(?:[.,]\\d*)?))?(?::?(\\d{2}(?:[.,]\\d*)?))?$/;\nconst timezoneRegex = /^([+-])(\\d{2})(?::?(\\d{2}))?$/;\nfunction splitDateString(dateString) {\n const dateStrings = {};\n const array = dateString.split(patterns.dateTimeDelimiter);\n let timeString;\n\n // The regex match should only return at maximum two array elements.\n // [date], [time], or [date, time].\n if (array.length > 2) {\n return dateStrings;\n }\n if (/:/.test(array[0])) {\n timeString = array[0];\n } else {\n dateStrings.date = array[0];\n timeString = array[1];\n if (patterns.timeZoneDelimiter.test(dateStrings.date)) {\n dateStrings.date = dateString.split(patterns.timeZoneDelimiter)[0];\n timeString = dateString.substr(dateStrings.date.length, dateString.length);\n }\n }\n if (timeString) {\n const token = patterns.timezone.exec(timeString);\n if (token) {\n dateStrings.time = timeString.replace(token[1], \"\");\n dateStrings.timezone = token[1];\n } else {\n dateStrings.time = timeString;\n }\n }\n return dateStrings;\n}\nfunction parseYear(dateString, additionalDigits) {\n const regex = new RegExp(\"^(?:(\\\\d{4}|[+-]\\\\d{\" + (4 + additionalDigits) + \"})|(\\\\d{2}|[+-]\\\\d{\" + (2 + additionalDigits) + \"})$)\");\n const captures = dateString.match(regex);\n // Invalid ISO-formatted year\n if (!captures) return {\n year: NaN,\n restDateString: \"\"\n };\n const year = captures[1] ? parseInt(captures[1]) : null;\n const century = captures[2] ? parseInt(captures[2]) : null;\n\n // either year or century is null, not both\n return {\n year: century === null ? year : century * 100,\n restDateString: dateString.slice((captures[1] || captures[2]).length)\n };\n}\nfunction parseDate(dateString, year) {\n // Invalid ISO-formatted year\n if (year === null) return new Date(NaN);\n const captures = dateString.match(dateRegex);\n // Invalid ISO-formatted string\n if (!captures) return new Date(NaN);\n const isWeekDate = !!captures[4];\n const dayOfYear = parseDateUnit(captures[1]);\n const month = parseDateUnit(captures[2]) - 1;\n const day = parseDateUnit(captures[3]);\n const week = parseDateUnit(captures[4]);\n const dayOfWeek = parseDateUnit(captures[5]) - 1;\n if (isWeekDate) {\n if (!validateWeekDate(year, week, dayOfWeek)) {\n return new Date(NaN);\n }\n return dayOfISOWeekYear(year, week, dayOfWeek);\n } else {\n const date = new Date(0);\n if (!validateDate(year, month, day) || !validateDayOfYearDate(year, dayOfYear)) {\n return new Date(NaN);\n }\n date.setUTCFullYear(year, month, Math.max(dayOfYear, day));\n return date;\n }\n}\nfunction parseDateUnit(value) {\n return value ? parseInt(value) : 1;\n}\nfunction parseTime(timeString) {\n const captures = timeString.match(timeRegex);\n if (!captures) return NaN; // Invalid ISO-formatted time\n\n const hours = parseTimeUnit(captures[1]);\n const minutes = parseTimeUnit(captures[2]);\n const seconds = parseTimeUnit(captures[3]);\n if (!validateTime(hours, minutes, seconds)) {\n return NaN;\n }\n return hours * millisecondsInHour + minutes * millisecondsInMinute + seconds * 1000;\n}\nfunction parseTimeUnit(value) {\n return value && parseFloat(value.replace(\",\", \".\")) || 0;\n}\nfunction parseTimezone(timezoneString) {\n if (timezoneString === \"Z\") return 0;\n const captures = timezoneString.match(timezoneRegex);\n if (!captures) return 0;\n const sign = captures[1] === \"+\" ? -1 : 1;\n const hours = parseInt(captures[2]);\n const minutes = captures[3] && parseInt(captures[3]) || 0;\n if (!validateTimezone(hours, minutes)) {\n return NaN;\n }\n return sign * (hours * millisecondsInHour + minutes * millisecondsInMinute);\n}\nfunction dayOfISOWeekYear(isoWeekYear, week, day) {\n const date = new Date(0);\n date.setUTCFullYear(isoWeekYear, 0, 4);\n const fourthOfJanuaryDay = date.getUTCDay() || 7;\n const diff = (week - 1) * 7 + day + 1 - fourthOfJanuaryDay;\n date.setUTCDate(date.getUTCDate() + diff);\n return date;\n}\n\n// Validation functions\n\n// February is null to handle the leap year (using ||)\nconst daysInMonths = [31, null, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31];\nfunction isLeapYearIndex(year) {\n return year % 400 === 0 || year % 4 === 0 && year % 100 !== 0;\n}\nfunction validateDate(year, month, date) {\n return month >= 0 && month <= 11 && date >= 1 && date <= (daysInMonths[month] || (isLeapYearIndex(year) ? 29 : 28));\n}\nfunction validateDayOfYearDate(year, dayOfYear) {\n return dayOfYear >= 1 && dayOfYear <= (isLeapYearIndex(year) ? 366 : 365);\n}\nfunction validateWeekDate(_year, week, day) {\n return week >= 1 && week <= 53 && day >= 0 && day <= 6;\n}\nfunction validateTime(hours, minutes, seconds) {\n if (hours === 24) {\n return minutes === 0 && seconds === 0;\n }\n return seconds >= 0 && seconds < 60 && minutes >= 0 && minutes < 60 && hours >= 0 && hours < 25;\n}\nfunction validateTimezone(_hours, minutes) {\n return minutes >= 0 && minutes <= 59;\n}\n\n// Fallback for modularized imports:\nexport default parseISO;","import { getDefaultOptions, setDefaultOptions as setInternalDefaultOptions } from \"./_lib/defaultOptions.mjs\";\n\n/**\n * @name setDefaultOptions\n * @category Common Helpers\n * @summary Set default options including locale.\n * @pure false\n *\n * @description\n * Sets the defaults for\n * `options.locale`, `options.weekStartsOn` and `options.firstWeekContainsDate`\n * arguments for all functions.\n *\n * @param options - An object with options\n *\n * @example\n * // Set global locale:\n * import { es } from 'date-fns/locale'\n * setDefaultOptions({ locale: es })\n * const result = format(new Date(2014, 8, 2), 'PPPP')\n * //=> 'martes, 2 de septiembre de 2014'\n *\n * @example\n * // Start of the week for 2 September 2014:\n * const result = startOfWeek(new Date(2014, 8, 2))\n * //=> Sun Aug 31 2014 00:00:00\n *\n * @example\n * // Start of the week for 2 September 2014,\n * // when we set that week starts on Monday by default:\n * setDefaultOptions({ weekStartsOn: 1 })\n * const result = startOfWeek(new Date(2014, 8, 2))\n * //=> Mon Sep 01 2014 00:00:00\n *\n * @example\n * // Manually set options take priority over default options:\n * setDefaultOptions({ weekStartsOn: 1 })\n * const result = startOfWeek(new Date(2014, 8, 2), { weekStartsOn: 0 })\n * //=> Sun Aug 31 2014 00:00:00\n *\n * @example\n * // Remove the option by setting it to `undefined`:\n * setDefaultOptions({ weekStartsOn: 1 })\n * setDefaultOptions({ weekStartsOn: undefined })\n * const result = startOfWeek(new Date(2014, 8, 2))\n * //=> Sun Aug 31 2014 00:00:00\n */\nexport function setDefaultOptions(options) {\n const result = {};\n const defaultOptions = getDefaultOptions();\n for (const property in defaultOptions) {\n if (Object.prototype.hasOwnProperty.call(defaultOptions, property)) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any -- I challange you to fix the type\n result[property] = defaultOptions[property];\n }\n }\n for (const property in options) {\n if (Object.prototype.hasOwnProperty.call(options, property)) {\n if (options[property] === undefined) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any -- I challange you to fix the type\n delete result[property];\n } else {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any -- I challange you to fix the type\n result[property] = options[property];\n }\n }\n }\n setInternalDefaultOptions(result);\n}\n\n// Fallback for modularized imports:\nexport default setDefaultOptions;","import { Component, OnInit, Signal } from '@angular/core'\nimport { MatButton } from '@angular/material/button'\nimport { MatIcon } from '@angular/material/icon'\nimport { Router } from '@angular/router'\nimport { AccountContext } from 'src/app/services/account-context'\nimport { loginService } from '../../account/login/login-dialog/login-dialog.service'\n\n@Component({\n selector: 'app-login-button',\n templateUrl: './login-button.component.html',\n standalone: true,\n imports: [MatIcon, MatButton],\n})\nexport class LoginButtonComponent implements OnInit {\n isAuthorized: Signal\n\n constructor(\n private context: AccountContext,\n private router: Router,\n private loginService: loginService\n ) {\n this.isAuthorized = this.context.isAuthorized\n }\n public logoff() {\n this.context.logoff().subscribe((x) => {\n this.router.navigate(['/'])\n })\n }\n login() {\n this.loginService.open().subscribe()\n }\n ngOnInit(): void {}\n}\n","@if (isAuthorized()) {\n \n} @else {\n \n}\n","import { DatePipe } from '@angular/common'\nimport { Component, OnInit } from '@angular/core'\nimport { MatAnchor, MatIconAnchor } from '@angular/material/button'\nimport { MatIcon } from '@angular/material/icon'\nimport { AppContext } from 'src/app/services/app-context'\nimport { GoogleTagManager } from 'src/app/services/google-tag-manager'\n\n@Component({\n selector: 'app-footer',\n templateUrl: './app-footer.component.html',\n styleUrl: 'app-footer.component.scss',\n standalone: true,\n imports: [DatePipe, MatAnchor, MatIconAnchor, MatIcon],\n})\nexport class FooterComponent implements OnInit {\n now = new Date()\n\n title: string | null\n logo: string | null\n email: string\n link: string\n facebook: string | null\n instagram: string | null\n youtube: string\n primaryPhone: string | null\n hideMail: boolean\n hideTel: boolean\n\n\n constructor(private appContext: AppContext, private gtm: GoogleTagManager) {\n this.title = this.appContext.configurations.Title\n this.logo = this.appContext.configurations.Logo\n this.email = this.appContext.configurations.Email\n this.link = this.appContext.configurations.Link\n this.facebook = this.appContext.configurations.Fasebook\n this.instagram = this.appContext.configurations.Instagram\n this.youtube = this.appContext.configurations.Youtube\n this.primaryPhone = this.appContext.configurations.PrimaryPhone\n this.hideMail = this.appContext.configurations.HideEmail\n this.hideTel = this.appContext.configurations.HidePhone\n }\n\n gtmEventClickPhone(){\n this.gtm.Emit('', '', 'click_phone')\n }\n\n gtmEventClickMail(){\n this.gtm.Emit('', '', 'click_mail')\n }\n\n gtmEventClickSite(){\n this.gtm.Emit('', '', 'click_site')\n }\n\n gtmEventClickFacebook(){\n this.gtm.Emit('', '', 'click_facebook')\n }\n\n gtmEventClickInstagram(){\n this.gtm.Emit('', '', 'click_instagram')\n }\n\n gtmEventClickYoutube(){\n this.gtm.Emit('', '', 'click_youtube')\n }\n\n ngOnInit(): void {}\n}\n","
\n
\n @if (!!primaryPhone) {\n \n phone\n {{ primaryPhone }}\n \n }\n @if (!!email) {\n \n alternate_email\n \n \n {{ email }}\n \n \n \n }\n @if (!!link) {\n \n desktop_windows\n Наш сайт\n \n }\n @if (!!facebook || !!instagram || !!youtube) {\n
\n
\n @if (!!facebook) {\n \n \n \n }\n @if (!!instagram) {\n \n \n \n }\n @if (!!youtube) {\n \n \n \n }\n
\n
\n }\n
\n
\n\n","import {\n Component,\n ElementRef,\n EventEmitter,\n OnDestroy,\n OnInit,\n Output,\n Signal,\n computed,\n effect,\n input,\n signal,\n untracked,\n viewChild,\n} from '@angular/core'\nimport { MatAnchor, MatButton } from '@angular/material/button'\nimport { MatDivider } from '@angular/material/divider'\nimport { MatIcon } from '@angular/material/icon'\nimport { NavigationStart, NavigationSkipped, Router, RouterLink, RouterLinkActive } from '@angular/router'\nimport { ApiService } from 'src/app/api/api.client'\nimport { AccountContext } from 'src/app/services/account-context'\nimport { LoginButtonComponent } from '../login-button/login-button.component'\nimport { FooterComponent } from '../app-footer/app-footer.component'\nimport { NgClass } from '@angular/common'\nimport { Overlay, OverlayRef } from '@angular/cdk/overlay'\nimport { DomPortal } from '@angular/cdk/portal'\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop'\nimport { MatBadge } from '@angular/material/badge'\nimport { AppContext } from 'src/app/services/app-context'\nimport { GoogleTagManager } from 'src/app/services/google-tag-manager'\n\n@Component({\n selector: 'app-nav-menu',\n templateUrl: './nav-menu.component.html',\n styleUrl: 'nav-menu.component.scss',\n standalone: true,\n imports: [\n RouterLink,\n NgClass,\n RouterLinkActive,\n MatButton,\n LoginButtonComponent,\n MatIcon,\n MatAnchor,\n MatDivider,\n FooterComponent,\n MatBadge,\n ],\n})\nexport class NavMenuComponent implements OnInit, OnDestroy {\n container = viewChild>('navBarContainer')\n\n domPoratl = computed(() => new DomPortal(this.container()))\n\n burgerState = input.required()\n\n @Output()\n public burgerStateChange = new EventEmitter()\n\n private activeOverlay = signal(null)\n\n public hideResults: boolean\n\n public hideDoctors: boolean\n\n public hideAllDoctors: boolean\n\n public hidePrice: boolean\n\n public telegramConfigured: boolean\n public isAuthorized\n public telegramConnected\n public prerecordCount: Signal\n public readonly showPatientCards: boolean\n\n constructor(\n private context: AccountContext,\n public appContext: AppContext,\n private client: ApiService,\n private overlay: Overlay,\n private router: Router,\n private gtm: GoogleTagManager\n ) {\n this.isAuthorized = this.context.isAuthorized\n this.telegramConnected = this.context.telegramConnected\n this.prerecordCount = this.context.countOfPlanned\n this.telegramConfigured = this.appContext.configurations.TelegramConfigured\n this.router.events.pipe(takeUntilDestroyed()).subscribe((x) => {\n if (x instanceof NavigationStart || x instanceof NavigationSkipped) {\n if (this.burgerState()) {\n this.burgerStateChange.emit(false)\n }\n }\n })\n this.hideResults = this.appContext.configurations.HideResults\n this.hideDoctors = this.appContext.configurations.HideDoctors ?? false\n this.hideAllDoctors = this.appContext.configurations.HideAllDoctors ?? false\n this.hidePrice = this.appContext.configurations.HidePrice ?? false\n this.showPatientCards = this.appContext.showPatientCardNavLink()\n\n effect(() => {\n const state = this.burgerState()\n if (state) {\n const flex = this.overlay.position().global().top('var(--header-height, 65px)').left('0px')\n\n const o = this.overlay.create({\n width: '100vw',\n panelClass: ['nav-menu-overlay', 'mat-app-background'],\n positionStrategy: flex,\n })\n flex.attach(o)\n o.attach(this.domPoratl())\n\n untracked(() => {\n this.replace(o)\n })\n } else {\n untracked(() => {\n this.replace(null)\n })\n }\n })\n }\n\n ngOnInit(): void {}\n\n private replace(portal: OverlayRef | null) {\n const prev = this.activeOverlay()\n this.activeOverlay.set(portal)\n prev?.detach()\n }\n\n ngOnDestroy(): void {\n this.replace(null)\n }\n\n generateTelegramLink() {\n this.client.generateTelegramBotLink().subscribe((x) => {\n this.gtm.Emit('', '', 'click_connect_telegram')\n window.open(x, '_blank')\n })\n }\n\n gtmEventAllDoctors(){\n this.gtm.Emit('', '', 'view_all_doctors')\n }\n\n gtmEventPriceList(){\n this.gtm.Emit('', '', 'view_price_list')\n }\n\n gtmEventPreviewPrerecords(){\n this.gtm.Emit('', '', 'preview_prerecords')\n }\n}\n","\n
\n @if (burgerState()) {\n \n }\n @if (!hideDoctors) {\n \n event_available\n Запис до лікаря\n \n }\n @if (!hideAllDoctors) {\n \n person\n Лікарі\n \n }\n @if (!hidePrice) {\n \n monetization_on\n Прайс\n \n }\n @if (!hideResults && !isAuthorized()) {\n \n analytics\n Результати аналізів\n \n }\n @if (isAuthorized()) {\n @if (showPatientCards) {\n \n description\n Особистий кабінет\n \n }\n\n \n settings\n Налаштування\n \n\n @if (!telegramConnected() && telegramConfigured) {\n \n \n }\n\n @if (!!prerecordCount() && !appContext.configurations.HidePlannedPrerecords) {\n \n event\n Заплановані візити\n \n }\n }\n
\n \n\n","import { inject, OnDestroy, OnInit, PLATFORM_ID, Signal, signal } from '@angular/core'\nimport { Component } from '@angular/core'\nimport { Router, RouterOutlet } from '@angular/router'\nimport { Subject } from 'rxjs'\nimport { ApiService } from './api/api.client'\nimport { AccountContext } from './services/account-context'\nimport { AppContext } from './services/app-context'\nimport { MatIcon, MatIconRegistry } from '@angular/material/icon'\nimport { DomSanitizer } from '@angular/platform-browser'\nimport { isPlatformBrowser, NgOptimizedImage } from '@angular/common'\nimport { MatIconButton } from '@angular/material/button'\nimport { MatBadge } from '@angular/material/badge'\nimport { MatDivider } from '@angular/material/divider'\nimport { ToolbarComponent } from './common/toolbar/toolbar.component'\nimport { NavMenuComponent } from './common/layout/nav-menu/nav-menu.component'\nimport { LoginButtonComponent } from './common/layout/login-button/login-button.component'\nimport { LogoComponent } from './common/layout/logo/logo.component'\nimport { UAParser } from 'ua-parser-js'\n@Component({\n selector: 'app-root',\n templateUrl: './app.component.html',\n styleUrls: ['./app.component.scss'],\n standalone: true,\n imports: [\n RouterOutlet,\n MatDivider,\n ToolbarComponent,\n MatIconButton,\n MatIcon,\n LoginButtonComponent,\n NavMenuComponent,\n LogoComponent,\n MatBadge,\n ],\n})\nexport class AppComponent implements OnInit, OnDestroy {\n\n public now = new Date()\n\n public title: string | null\n\n public isMenuOpen = signal(false)\n\n showOrderCodeText: boolean = true\n\n public prerecordCount: Signal\n\n private platformId = inject(PLATFORM_ID)\n\n constructor(\n private context: AccountContext,\n private client: ApiService,\n private router: Router,\n private appContext: AppContext,\n private matIconRegistry: MatIconRegistry,\n private domSanitzer: DomSanitizer\n ) {\n this.prerecordCount = this.context.countOfPlanned\n this.title = this.appContext.configurations.HeaderTitle ?? this.appContext.configurations.Title\n\n this.appContext.LoginFooterText = this.appContext.configurations.LoginFooterText\n this.appContext.ResetPasswordFooterText = this.appContext.configurations.ResetPasswordFooterText\n this.appContext.ConfirmResetPasswordFooterText = this.appContext.configurations.ConfirmResetPasswordFooterText\n\n this.matIconRegistry.addSvgIcon(\n 'facebook',\n this.domSanitzer.bypassSecurityTrustResourceUrl('../assets/icons/facebook.svg')\n )\n this.matIconRegistry.addSvgIcon(\n 'instagram',\n this.domSanitzer.bypassSecurityTrustResourceUrl('../assets/icons/instagram.svg')\n )\n this.matIconRegistry.addSvgIcon(\n 'youtube',\n this.domSanitzer.bypassSecurityTrustResourceUrl('../assets/icons/youtube.svg')\n )\n this.matIconRegistry.addSvgIcon(\n 'apple',\n this.domSanitzer.bypassSecurityTrustResourceUrl('../assets/icons/apple.svg')\n )\n this.matIconRegistry.addSvgIcon(\n 'google',\n this.domSanitzer.bypassSecurityTrustResourceUrl('../assets/icons/google.svg')\n )\n this.matIconRegistry.addSvgIcon(\n 'microsoft',\n this.domSanitzer.bypassSecurityTrustResourceUrl('../assets/icons/microsoft.svg')\n )\n }\n\n public logoff() {\n this.context.logoff().subscribe((x) => {\n this.router.navigate(['/'])\n })\n }\n public get me$() {\n return this.context.me$\n }\n\n public get me() {\n return this.context.me\n }\n\n public get isAuthorized() {\n return this.context.isAuthorized\n }\n\n public get telegramConnected() {\n return this.context.telegramConnected\n }\n\n public onSidenavClick(): void {\n this.isMenuOpen.set(false)\n }\n\n generateTelegramLink() {\n this.client.generateTelegramBotLink().subscribe((x) => {\n window.open(x, '_blank')\n })\n }\n\n openSite(e: Event) {\n e.stopPropagation()\n e.preventDefault()\n window.open(this.appContext.configurations.Link, '_black')\n }\n\n ngOnInit(): void {}\n\n ngOnDestroy(): void {\n }\n ngAfterViewInit(): void {\n // if (isPlatformBrowser(this.platformId)) {\n // // let parser = new UAParser()\n // // let parserResults = parser.getResult()\n // // let os = `${parserResults.os.name}, ${parserResults.os.version}`\n // // let browser = `${parserResults.browser.name}, ${parserResults.browser.version}`\n // // //@ts-ignore\n // // clarity('set', 'browser', browser)\n // // //@ts-ignore\n // // clarity('set', 'os', os)\n // }\n }\n}\n","
\n
\n
\n
\n
\n \n
\n
\n
\n

{{ title }}

\n
\n
\n \n
\n
\n
\n @defer (on viewport) {\n \n } @placeholder {\n
\n }\n
\n
\n \n {{ isMenuOpen() ? 'close' : 'menu' }}\n \n
\n
\n \n
\n
\n \n
\n \n
\n
\n
\n
\n","/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.dev/license\n */\n// THIS CODE IS GENERATED - DO NOT MODIFY.\nconst u = undefined;\nfunction plural(val) {\n const n = val,\n i = Math.floor(Math.abs(val)),\n v = val.toString().replace(/^[^.]*\\.?/, '').length;\n if (v === 0 && i % 10 === 1 && !(i % 100 === 11)) return 1;\n if (v === 0 && i % 10 === Math.floor(i % 10) && i % 10 >= 2 && i % 10 <= 4 && !(i % 100 >= 12 && i % 100 <= 14)) return 3;\n if (v === 0 && i % 10 === 0 || v === 0 && i % 10 === Math.floor(i % 10) && i % 10 >= 5 && i % 10 <= 9 || v === 0 && i % 100 === Math.floor(i % 100) && i % 100 >= 11 && i % 100 <= 14) return 4;\n return 5;\n}\nexport default [\"uk\", [[\"дп\", \"пп\"], u, u], u, [[\"Н\", \"П\", \"В\", \"С\", \"Ч\", \"П\", \"С\"], [\"нд\", \"пн\", \"вт\", \"ср\", \"чт\", \"пт\", \"сб\"], [\"неділя\", \"понеділок\", \"вівторок\", \"середа\", \"четвер\", \"пʼятниця\", \"субота\"], [\"нд\", \"пн\", \"вт\", \"ср\", \"чт\", \"пт\", \"сб\"]], u, [[\"с\", \"л\", \"б\", \"к\", \"т\", \"ч\", \"л\", \"с\", \"в\", \"ж\", \"л\", \"г\"], [\"січ.\", \"лют.\", \"бер.\", \"квіт.\", \"трав.\", \"черв.\", \"лип.\", \"серп.\", \"вер.\", \"жовт.\", \"лист.\", \"груд.\"], [\"січня\", \"лютого\", \"березня\", \"квітня\", \"травня\", \"червня\", \"липня\", \"серпня\", \"вересня\", \"жовтня\", \"листопада\", \"грудня\"]], [[\"С\", \"Л\", \"Б\", \"К\", \"Т\", \"Ч\", \"Л\", \"С\", \"В\", \"Ж\", \"Л\", \"Г\"], [\"січ\", \"лют\", \"бер\", \"кві\", \"тра\", \"чер\", \"лип\", \"сер\", \"вер\", \"жов\", \"лис\", \"гру\"], [\"січень\", \"лютий\", \"березень\", \"квітень\", \"травень\", \"червень\", \"липень\", \"серпень\", \"вересень\", \"жовтень\", \"листопад\", \"грудень\"]], [[\"до н.е.\", \"н.е.\"], [\"до н. е.\", \"н. е.\"], [\"до нашої ери\", \"нашої ери\"]], 1, [6, 0], [\"dd.MM.yy\", \"d MMM y 'р'.\", \"d MMMM y 'р'.\", \"EEEE, d MMMM y 'р'.\"], [\"HH:mm\", \"HH:mm:ss\", \"HH:mm:ss z\", \"HH:mm:ss zzzz\"], [\"{1}, {0}\", u, \"{1} 'о' {0}\", u], [\",\", \" \", \";\", \"%\", \"+\", \"-\", \"Е\", \"×\", \"‰\", \"∞\", \"NaN\", \":\"], [\"#,##0.###\", \"#,##0%\", \"#,##0.00 ¤\", \"#E0\"], \"UAH\", \"₴\", \"українська гривня\", {\n \"AUD\": [u, \"$\"],\n \"BRL\": [u, \"R$\"],\n \"BYN\": [u, \"р.\"],\n \"CAD\": [u, \"$\"],\n \"CNY\": [u, \"¥\"],\n \"EUR\": [u, \"€\"],\n \"GBP\": [u, \"£\"],\n \"HKD\": [u, \"$\"],\n \"ILS\": [u, \"₪\"],\n \"INR\": [u, \"₹\"],\n \"KRW\": [u, \"₩\"],\n \"MXN\": [u, \"$\"],\n \"NZD\": [u, \"$\"],\n \"PHP\": [u, \"₱\"],\n \"RUR\": [u, \"р.\"],\n \"TWD\": [u, \"$\"],\n \"UAH\": [\"₴\"],\n \"UAK\": [\"крб.\"],\n \"USD\": [u, \"$\"],\n \"VND\": [u, \"₫\"],\n \"XCD\": [u, \"$\"]\n}, \"ltr\", plural];\n","import { inject } from '@angular/core'\nimport { ActivatedRouteSnapshot, ResolveFn, RouterStateSnapshot } from '@angular/router'\nimport { ApiService } from 'src/app/api/api.client'\nimport { IOnlineDoctorFull } from 'src/app/api/api.models'\n\nexport const doctorResolver: ResolveFn = (route: ActivatedRouteSnapshot, state: RouterStateSnapshot) => {\n const service = inject(ApiService)\n const id = parseInt(route.paramMap.get('id')!,10);\n if(isNaN(id)) {\n console.log(state);\n return null as any;\n }\n return service.onlineDoctor(id)\n}\n","import { inject } from '@angular/core'\nimport { RedirectFunction, Routes } from '@angular/router'\nimport { AppContext } from './services/app-context'\nimport { OnlinePages } from './api/api.models'\nimport { doctorResolver } from './pages/doctor-profile/doctor-profile.loader'\n\nconst redirectFunction: RedirectFunction = (x) => {\n const context = inject(AppContext)\n if (context.configurations.DefaultPage == OnlinePages.Doctors && !context.configurations.HideDoctors) {\n return 'doctors'\n } else if (context.configurations.DefaultPage == OnlinePages.Prices) {\n return 'price-list'\n } else if (context.configurations.DefaultPage == OnlinePages.Results) {\n return 'order'\n } else {\n if (!context.configurations.HideDoctors) {\n return 'doctors'\n } else {\n return 'price-list'\n }\n }\n}\n\nexport const appRoutes: Routes = [\n {\n path: 'doctors',\n data: {\n toolbar: {\n type: 'doctors',\n },\n },\n title: 'Запис до лікаря',\n loadComponent: () => import('./pages/doctors/doctors.component').then((m) => m.DoctorsComponent),\n },\n {\n path: 'account',\n loadChildren: () => import('./pages/login/login-page.module').then((m) => m.LoginPageModule),\n },\n {\n path: 'profile',\n loadChildren: () => import('./pages/profile/profile.module').then((m) => m.ProfileModule),\n },\n {\n path: 'patient',\n loadChildren: () => import('./pages/patient-card/patient-card.module').then((m) => m.PatientCardModule),\n },\n {\n path: 'order',\n loadChildren: () => import('./pages/order/order.module').then((m) => m.OrderModule),\n },\n {\n path: 'share',\n loadChildren: () => import('./pages/file-sharing/file-sharing.module').then((m) => m.FileSharingModule),\n },\n {\n path: 'all-doctors',\n title: 'Лікарі',\n loadComponent: () => import('./pages/all-doctors/all-doctors.component').then((m) => m.AllDoctorsComponent),\n },\n {\n path: 'price-list',\n title: 'Прайс',\n loadComponent: () => import('./pages/price-list/price-list.component').then((m) => m.PriceListComponent),\n },\n {\n path: 'bots',\n loadComponent: () => import('./pages/bots/bots.component').then((m) => m.BotsComponent),\n },\n {\n path: 'service/:id',\n loadComponent: () =>\n import('./pages/price-list/about-package/about-package.component').then((m) => m.AboutPackageComponent),\n },\n {\n path: 'doctor/:id',\n loadComponent: () => import('./pages/doctor-profile/doctor-profile.component').then((m) => m.DoctorProfileComponent),\n resolve: {\n doctor: doctorResolver,\n },\n },\n {\n path: 'order',\n loadChildren: () => import('./pages/order/order.module').then((m) => m.OrderModule),\n },\n {\n path: '',\n redirectTo: redirectFunction,\n pathMatch: 'full',\n },\n {\n path: '**',\n redirectTo: redirectFunction,\n },\n]\n","function declension(scheme, count) {\n // scheme for count=1 exists\n if (scheme.one !== undefined && count === 1) {\n return scheme.one;\n }\n const rem10 = count % 10;\n const rem100 = count % 100;\n\n // 1, 21, 31, ...\n if (rem10 === 1 && rem100 !== 11) {\n return scheme.singularNominative.replace(\"{{count}}\", String(count));\n\n // 2, 3, 4, 22, 23, 24, 32 ...\n } else if (rem10 >= 2 && rem10 <= 4 && (rem100 < 10 || rem100 > 20)) {\n return scheme.singularGenitive.replace(\"{{count}}\", String(count));\n\n // 5, 6, 7, 8, 9, 10, 11, ...\n } else {\n return scheme.pluralGenitive.replace(\"{{count}}\", String(count));\n }\n}\nfunction buildLocalizeTokenFn(scheme) {\n return (count, options) => {\n if (options && options.addSuffix) {\n if (options.comparison && options.comparison > 0) {\n if (scheme.future) {\n return declension(scheme.future, count);\n } else {\n return \"за \" + declension(scheme.regular, count);\n }\n } else {\n if (scheme.past) {\n return declension(scheme.past, count);\n } else {\n return declension(scheme.regular, count) + \" тому\";\n }\n }\n } else {\n return declension(scheme.regular, count);\n }\n };\n}\nconst halfAtMinute = (_, options) => {\n if (options && options.addSuffix) {\n if (options.comparison && options.comparison > 0) {\n return \"за півхвилини\";\n } else {\n return \"півхвилини тому\";\n }\n }\n return \"півхвилини\";\n};\nconst formatDistanceLocale = {\n lessThanXSeconds: buildLocalizeTokenFn({\n regular: {\n one: \"менше секунди\",\n singularNominative: \"менше {{count}} секунди\",\n singularGenitive: \"менше {{count}} секунд\",\n pluralGenitive: \"менше {{count}} секунд\"\n },\n future: {\n one: \"менше, ніж за секунду\",\n singularNominative: \"менше, ніж за {{count}} секунду\",\n singularGenitive: \"менше, ніж за {{count}} секунди\",\n pluralGenitive: \"менше, ніж за {{count}} секунд\"\n }\n }),\n xSeconds: buildLocalizeTokenFn({\n regular: {\n singularNominative: \"{{count}} секунда\",\n singularGenitive: \"{{count}} секунди\",\n pluralGenitive: \"{{count}} секунд\"\n },\n past: {\n singularNominative: \"{{count}} секунду тому\",\n singularGenitive: \"{{count}} секунди тому\",\n pluralGenitive: \"{{count}} секунд тому\"\n },\n future: {\n singularNominative: \"за {{count}} секунду\",\n singularGenitive: \"за {{count}} секунди\",\n pluralGenitive: \"за {{count}} секунд\"\n }\n }),\n halfAMinute: halfAtMinute,\n lessThanXMinutes: buildLocalizeTokenFn({\n regular: {\n one: \"менше хвилини\",\n singularNominative: \"менше {{count}} хвилини\",\n singularGenitive: \"менше {{count}} хвилин\",\n pluralGenitive: \"менше {{count}} хвилин\"\n },\n future: {\n one: \"менше, ніж за хвилину\",\n singularNominative: \"менше, ніж за {{count}} хвилину\",\n singularGenitive: \"менше, ніж за {{count}} хвилини\",\n pluralGenitive: \"менше, ніж за {{count}} хвилин\"\n }\n }),\n xMinutes: buildLocalizeTokenFn({\n regular: {\n singularNominative: \"{{count}} хвилина\",\n singularGenitive: \"{{count}} хвилини\",\n pluralGenitive: \"{{count}} хвилин\"\n },\n past: {\n singularNominative: \"{{count}} хвилину тому\",\n singularGenitive: \"{{count}} хвилини тому\",\n pluralGenitive: \"{{count}} хвилин тому\"\n },\n future: {\n singularNominative: \"за {{count}} хвилину\",\n singularGenitive: \"за {{count}} хвилини\",\n pluralGenitive: \"за {{count}} хвилин\"\n }\n }),\n aboutXHours: buildLocalizeTokenFn({\n regular: {\n singularNominative: \"близько {{count}} години\",\n singularGenitive: \"близько {{count}} годин\",\n pluralGenitive: \"близько {{count}} годин\"\n },\n future: {\n singularNominative: \"приблизно за {{count}} годину\",\n singularGenitive: \"приблизно за {{count}} години\",\n pluralGenitive: \"приблизно за {{count}} годин\"\n }\n }),\n xHours: buildLocalizeTokenFn({\n regular: {\n singularNominative: \"{{count}} годину\",\n singularGenitive: \"{{count}} години\",\n pluralGenitive: \"{{count}} годин\"\n }\n }),\n xDays: buildLocalizeTokenFn({\n regular: {\n singularNominative: \"{{count}} день\",\n singularGenitive: \"{{count}} днi\",\n pluralGenitive: \"{{count}} днів\"\n }\n }),\n aboutXWeeks: buildLocalizeTokenFn({\n regular: {\n singularNominative: \"близько {{count}} тижня\",\n singularGenitive: \"близько {{count}} тижнів\",\n pluralGenitive: \"близько {{count}} тижнів\"\n },\n future: {\n singularNominative: \"приблизно за {{count}} тиждень\",\n singularGenitive: \"приблизно за {{count}} тижні\",\n pluralGenitive: \"приблизно за {{count}} тижнів\"\n }\n }),\n xWeeks: buildLocalizeTokenFn({\n regular: {\n singularNominative: \"{{count}} тиждень\",\n singularGenitive: \"{{count}} тижні\",\n pluralGenitive: \"{{count}} тижнів\"\n }\n }),\n aboutXMonths: buildLocalizeTokenFn({\n regular: {\n singularNominative: \"близько {{count}} місяця\",\n singularGenitive: \"близько {{count}} місяців\",\n pluralGenitive: \"близько {{count}} місяців\"\n },\n future: {\n singularNominative: \"приблизно за {{count}} місяць\",\n singularGenitive: \"приблизно за {{count}} місяці\",\n pluralGenitive: \"приблизно за {{count}} місяців\"\n }\n }),\n xMonths: buildLocalizeTokenFn({\n regular: {\n singularNominative: \"{{count}} місяць\",\n singularGenitive: \"{{count}} місяці\",\n pluralGenitive: \"{{count}} місяців\"\n }\n }),\n aboutXYears: buildLocalizeTokenFn({\n regular: {\n singularNominative: \"близько {{count}} року\",\n singularGenitive: \"близько {{count}} років\",\n pluralGenitive: \"близько {{count}} років\"\n },\n future: {\n singularNominative: \"приблизно за {{count}} рік\",\n singularGenitive: \"приблизно за {{count}} роки\",\n pluralGenitive: \"приблизно за {{count}} років\"\n }\n }),\n xYears: buildLocalizeTokenFn({\n regular: {\n singularNominative: \"{{count}} рік\",\n singularGenitive: \"{{count}} роки\",\n pluralGenitive: \"{{count}} років\"\n }\n }),\n overXYears: buildLocalizeTokenFn({\n regular: {\n singularNominative: \"більше {{count}} року\",\n singularGenitive: \"більше {{count}} років\",\n pluralGenitive: \"більше {{count}} років\"\n },\n future: {\n singularNominative: \"більше, ніж за {{count}} рік\",\n singularGenitive: \"більше, ніж за {{count}} роки\",\n pluralGenitive: \"більше, ніж за {{count}} років\"\n }\n }),\n almostXYears: buildLocalizeTokenFn({\n regular: {\n singularNominative: \"майже {{count}} рік\",\n singularGenitive: \"майже {{count}} роки\",\n pluralGenitive: \"майже {{count}} років\"\n },\n future: {\n singularNominative: \"майже за {{count}} рік\",\n singularGenitive: \"майже за {{count}} роки\",\n pluralGenitive: \"майже за {{count}} років\"\n }\n })\n};\nexport const formatDistance = (token, count, options) => {\n options = options || {};\n return formatDistanceLocale[token](count, options);\n};","import { buildFormatLongFn } from \"../../_lib/buildFormatLongFn.mjs\";\nconst dateFormats = {\n full: \"EEEE, do MMMM y 'р.'\",\n long: \"do MMMM y 'р.'\",\n medium: \"d MMM y 'р.'\",\n short: \"dd.MM.y\"\n};\nconst timeFormats = {\n full: \"H:mm:ss zzzz\",\n long: \"H:mm:ss z\",\n medium: \"H:mm:ss\",\n short: \"H:mm\"\n};\nconst dateTimeFormats = {\n full: \"{{date}} 'о' {{time}}\",\n long: \"{{date}} 'о' {{time}}\",\n medium: \"{{date}}, {{time}}\",\n short: \"{{date}}, {{time}}\"\n};\nexport const formatLong = {\n date: buildFormatLongFn({\n formats: dateFormats,\n defaultWidth: \"full\"\n }),\n time: buildFormatLongFn({\n formats: timeFormats,\n defaultWidth: \"full\"\n }),\n dateTime: buildFormatLongFn({\n formats: dateTimeFormats,\n defaultWidth: \"full\"\n })\n};","import { isSameWeek } from \"../../../isSameWeek.mjs\";\nimport { toDate } from \"../../../toDate.mjs\";\nconst accusativeWeekdays = [\"неділю\", \"понеділок\", \"вівторок\", \"середу\", \"четвер\", \"п’ятницю\", \"суботу\"];\nfunction lastWeek(day) {\n const weekday = accusativeWeekdays[day];\n switch (day) {\n case 0:\n case 3:\n case 5:\n case 6:\n return \"'у минулу \" + weekday + \" о' p\";\n case 1:\n case 2:\n case 4:\n return \"'у минулий \" + weekday + \" о' p\";\n }\n}\nfunction thisWeek(day) {\n const weekday = accusativeWeekdays[day];\n return \"'у \" + weekday + \" о' p\";\n}\nfunction nextWeek(day) {\n const weekday = accusativeWeekdays[day];\n switch (day) {\n case 0:\n case 3:\n case 5:\n case 6:\n return \"'у наступну \" + weekday + \" о' p\";\n case 1:\n case 2:\n case 4:\n return \"'у наступний \" + weekday + \" о' p\";\n }\n}\nconst lastWeekFormat = (dirtyDate, baseDate, options) => {\n const date = toDate(dirtyDate);\n const day = date.getDay();\n if (isSameWeek(date, baseDate, options)) {\n return thisWeek(day);\n } else {\n return lastWeek(day);\n }\n};\nconst nextWeekFormat = (dirtyDate, baseDate, options) => {\n const date = toDate(dirtyDate);\n const day = date.getDay();\n if (isSameWeek(date, baseDate, options)) {\n return thisWeek(day);\n } else {\n return nextWeek(day);\n }\n};\nconst formatRelativeLocale = {\n lastWeek: lastWeekFormat,\n yesterday: \"'вчора о' p\",\n today: \"'сьогодні о' p\",\n tomorrow: \"'завтра о' p\",\n nextWeek: nextWeekFormat,\n other: \"P\"\n};\nexport const formatRelative = (token, date, baseDate, options) => {\n const format = formatRelativeLocale[token];\n if (typeof format === \"function\") {\n return format(date, baseDate, options);\n }\n return format;\n};","import { buildLocalizeFn } from \"../../_lib/buildLocalizeFn.mjs\";\nconst eraValues = {\n narrow: [\"до н.е.\", \"н.е.\"],\n abbreviated: [\"до н. е.\", \"н. е.\"],\n wide: [\"до нашої ери\", \"нашої ери\"]\n};\nconst quarterValues = {\n narrow: [\"1\", \"2\", \"3\", \"4\"],\n abbreviated: [\"1-й кв.\", \"2-й кв.\", \"3-й кв.\", \"4-й кв.\"],\n wide: [\"1-й квартал\", \"2-й квартал\", \"3-й квартал\", \"4-й квартал\"]\n};\nconst monthValues = {\n // ДСТУ 3582:2013\n narrow: [\"С\", \"Л\", \"Б\", \"К\", \"Т\", \"Ч\", \"Л\", \"С\", \"В\", \"Ж\", \"Л\", \"Г\"],\n abbreviated: [\"січ.\", \"лют.\", \"берез.\", \"квіт.\", \"трав.\", \"черв.\", \"лип.\", \"серп.\", \"верес.\", \"жовт.\", \"листоп.\", \"груд.\"],\n wide: [\"січень\", \"лютий\", \"березень\", \"квітень\", \"травень\", \"червень\", \"липень\", \"серпень\", \"вересень\", \"жовтень\", \"листопад\", \"грудень\"]\n};\nconst formattingMonthValues = {\n narrow: [\"С\", \"Л\", \"Б\", \"К\", \"Т\", \"Ч\", \"Л\", \"С\", \"В\", \"Ж\", \"Л\", \"Г\"],\n abbreviated: [\"січ.\", \"лют.\", \"берез.\", \"квіт.\", \"трав.\", \"черв.\", \"лип.\", \"серп.\", \"верес.\", \"жовт.\", \"листоп.\", \"груд.\"],\n wide: [\"січня\", \"лютого\", \"березня\", \"квітня\", \"травня\", \"червня\", \"липня\", \"серпня\", \"вересня\", \"жовтня\", \"листопада\", \"грудня\"]\n};\nconst dayValues = {\n narrow: [\"Н\", \"П\", \"В\", \"С\", \"Ч\", \"П\", \"С\"],\n short: [\"нд\", \"пн\", \"вт\", \"ср\", \"чт\", \"пт\", \"сб\"],\n abbreviated: [\"нед\", \"пон\", \"вів\", \"сер\", \"чтв\", \"птн\", \"суб\"],\n wide: [\"неділя\", \"понеділок\", \"вівторок\", \"середа\", \"четвер\", \"п’ятниця\", \"субота\"]\n};\nconst dayPeriodValues = {\n narrow: {\n am: \"ДП\",\n pm: \"ПП\",\n midnight: \"півн.\",\n noon: \"пол.\",\n morning: \"ранок\",\n afternoon: \"день\",\n evening: \"веч.\",\n night: \"ніч\"\n },\n abbreviated: {\n am: \"ДП\",\n pm: \"ПП\",\n midnight: \"півн.\",\n noon: \"пол.\",\n morning: \"ранок\",\n afternoon: \"день\",\n evening: \"веч.\",\n night: \"ніч\"\n },\n wide: {\n am: \"ДП\",\n pm: \"ПП\",\n midnight: \"північ\",\n noon: \"полудень\",\n morning: \"ранок\",\n afternoon: \"день\",\n evening: \"вечір\",\n night: \"ніч\"\n }\n};\nconst formattingDayPeriodValues = {\n narrow: {\n am: \"ДП\",\n pm: \"ПП\",\n midnight: \"півн.\",\n noon: \"пол.\",\n morning: \"ранку\",\n afternoon: \"дня\",\n evening: \"веч.\",\n night: \"ночі\"\n },\n abbreviated: {\n am: \"ДП\",\n pm: \"ПП\",\n midnight: \"півн.\",\n noon: \"пол.\",\n morning: \"ранку\",\n afternoon: \"дня\",\n evening: \"веч.\",\n night: \"ночі\"\n },\n wide: {\n am: \"ДП\",\n pm: \"ПП\",\n midnight: \"північ\",\n noon: \"полудень\",\n morning: \"ранку\",\n afternoon: \"дня\",\n evening: \"веч.\",\n night: \"ночі\"\n }\n};\nconst ordinalNumber = (dirtyNumber, options) => {\n const unit = String(options?.unit);\n const number = Number(dirtyNumber);\n let suffix;\n if (unit === \"date\") {\n if (number === 3 || number === 23) {\n suffix = \"-є\";\n } else {\n suffix = \"-е\";\n }\n } else if (unit === \"minute\" || unit === \"second\" || unit === \"hour\") {\n suffix = \"-а\";\n } else {\n suffix = \"-й\";\n }\n return number + suffix;\n};\nexport const localize = {\n ordinalNumber,\n era: buildLocalizeFn({\n values: eraValues,\n defaultWidth: \"wide\"\n }),\n quarter: buildLocalizeFn({\n values: quarterValues,\n defaultWidth: \"wide\",\n argumentCallback: quarter => quarter - 1\n }),\n month: buildLocalizeFn({\n values: monthValues,\n defaultWidth: \"wide\",\n formattingValues: formattingMonthValues,\n defaultFormattingWidth: \"wide\"\n }),\n day: buildLocalizeFn({\n values: dayValues,\n defaultWidth: \"wide\"\n }),\n dayPeriod: buildLocalizeFn({\n values: dayPeriodValues,\n defaultWidth: \"any\",\n formattingValues: formattingDayPeriodValues,\n defaultFormattingWidth: \"wide\"\n })\n};","import { buildMatchFn } from \"../../_lib/buildMatchFn.mjs\";\nimport { buildMatchPatternFn } from \"../../_lib/buildMatchPatternFn.mjs\";\nconst matchOrdinalNumberPattern = /^(\\d+)(-?(е|й|є|а|я))?/i;\nconst parseOrdinalNumberPattern = /\\d+/i;\nconst matchEraPatterns = {\n narrow: /^((до )?н\\.?\\s?е\\.?)/i,\n abbreviated: /^((до )?н\\.?\\s?е\\.?)/i,\n wide: /^(до нашої ери|нашої ери|наша ера)/i\n};\nconst parseEraPatterns = {\n any: [/^д/i, /^н/i]\n};\nconst matchQuarterPatterns = {\n narrow: /^[1234]/i,\n abbreviated: /^[1234](-?[иі]?й?)? кв.?/i,\n wide: /^[1234](-?[иі]?й?)? квартал/i\n};\nconst parseQuarterPatterns = {\n any: [/1/i, /2/i, /3/i, /4/i]\n};\nconst matchMonthPatterns = {\n narrow: /^[слбктчвжг]/i,\n abbreviated: /^(січ|лют|бер(ез)?|квіт|трав|черв|лип|серп|вер(ес)?|жовт|лис(топ)?|груд)\\.?/i,\n wide: /^(січень|січня|лютий|лютого|березень|березня|квітень|квітня|травень|травня|червня|червень|липень|липня|серпень|серпня|вересень|вересня|жовтень|жовтня|листопад[а]?|грудень|грудня)/i\n};\nconst parseMonthPatterns = {\n narrow: [/^с/i, /^л/i, /^б/i, /^к/i, /^т/i, /^ч/i, /^л/i, /^с/i, /^в/i, /^ж/i, /^л/i, /^г/i],\n any: [/^сі/i, /^лю/i, /^б/i, /^к/i, /^т/i, /^ч/i, /^лип/i, /^се/i, /^в/i, /^ж/i, /^лис/i, /^г/i]\n};\nconst matchDayPatterns = {\n narrow: /^[нпвсч]/i,\n short: /^(нд|пн|вт|ср|чт|пт|сб)\\.?/i,\n abbreviated: /^(нед|пон|вів|сер|че?тв|птн?|суб)\\.?/i,\n wide: /^(неділ[яі]|понеділ[ок][ка]|вівтор[ок][ка]|серед[аи]|четвер(га)?|п\\W*?ятниц[яі]|субот[аи])/i\n};\nconst parseDayPatterns = {\n narrow: [/^н/i, /^п/i, /^в/i, /^с/i, /^ч/i, /^п/i, /^с/i],\n any: [/^н/i, /^п[он]/i, /^в/i, /^с[ер]/i, /^ч/i, /^п\\W*?[ят]/i, /^с[уб]/i]\n};\nconst matchDayPeriodPatterns = {\n narrow: /^([дп]п|півн\\.?|пол\\.?|ранок|ранку|день|дня|веч\\.?|ніч|ночі)/i,\n abbreviated: /^([дп]п|півн\\.?|пол\\.?|ранок|ранку|день|дня|веч\\.?|ніч|ночі)/i,\n wide: /^([дп]п|північ|полудень|ранок|ранку|день|дня|вечір|вечора|ніч|ночі)/i\n};\nconst parseDayPeriodPatterns = {\n any: {\n am: /^дп/i,\n pm: /^пп/i,\n midnight: /^півн/i,\n noon: /^пол/i,\n morning: /^р/i,\n afternoon: /^д[ен]/i,\n evening: /^в/i,\n night: /^н/i\n }\n};\nexport const match = {\n ordinalNumber: buildMatchPatternFn({\n matchPattern: matchOrdinalNumberPattern,\n parsePattern: parseOrdinalNumberPattern,\n valueCallback: value => parseInt(value, 10)\n }),\n era: buildMatchFn({\n matchPatterns: matchEraPatterns,\n defaultMatchWidth: \"wide\",\n parsePatterns: parseEraPatterns,\n defaultParseWidth: \"any\"\n }),\n quarter: buildMatchFn({\n matchPatterns: matchQuarterPatterns,\n defaultMatchWidth: \"wide\",\n parsePatterns: parseQuarterPatterns,\n defaultParseWidth: \"any\",\n valueCallback: index => index + 1\n }),\n month: buildMatchFn({\n matchPatterns: matchMonthPatterns,\n defaultMatchWidth: \"wide\",\n parsePatterns: parseMonthPatterns,\n defaultParseWidth: \"any\"\n }),\n day: buildMatchFn({\n matchPatterns: matchDayPatterns,\n defaultMatchWidth: \"wide\",\n parsePatterns: parseDayPatterns,\n defaultParseWidth: \"any\"\n }),\n dayPeriod: buildMatchFn({\n matchPatterns: matchDayPeriodPatterns,\n defaultMatchWidth: \"wide\",\n parsePatterns: parseDayPeriodPatterns,\n defaultParseWidth: \"any\"\n })\n};","import { formatDistance } from \"./uk/_lib/formatDistance.mjs\";\nimport { formatLong } from \"./uk/_lib/formatLong.mjs\";\nimport { formatRelative } from \"./uk/_lib/formatRelative.mjs\";\nimport { localize } from \"./uk/_lib/localize.mjs\";\nimport { match } from \"./uk/_lib/match.mjs\";\n\n/**\n * @category Locales\n * @summary Ukrainian locale.\n * @language Ukrainian\n * @iso-639-2 ukr\n * @author Andrii Korzh [@korzhyk](https://github.com/korzhyk)\n * @author Andriy Shcherbyak [@shcherbyakdev](https://github.com/shcherbyakdev)\n */\nexport const uk = {\n code: \"uk\",\n formatDistance: formatDistance,\n formatLong: formatLong,\n formatRelative: formatRelative,\n localize: localize,\n match: match,\n options: {\n weekStartsOn: 1 /* Monday */,\n firstWeekContainsDate: 1\n }\n};\n\n// Fallback for modularized imports:\nexport default uk;","import { Injectable } from '@angular/core'\nimport { MatStepperIntl } from '@angular/material/stepper'\n\n@Injectable({\n providedIn: 'root',\n})\nexport class StepperIntl extends MatStepperIntl {\n override optionalLabel = \"Не обов'зяково\"\n}\n","import { isPlatformBrowser, isPlatformServer } from '@angular/common'\nimport { HttpHandlerFn, HttpHeaders, HttpRequest, HttpResponse } from '@angular/common/http'\nimport { PLATFORM_ID, TransferState, inject, makeStateKey } from '@angular/core'\nimport { map } from 'rxjs/operators'\nimport { IS_SSR_CACHE_ENABLED } from './ssr-cache'\nimport { of } from 'rxjs'\nimport { APP_PATH } from './tokens'\nconst BODY = 'b'\nconst HEADERS = 'h'\nconst STATUS = 's'\nconst STATUS_TEXT = 'st'\nconst URL = 'u'\nconst RESPONSE_TYPE = 'rt'\ninterface TransferHttpResponse {\n [BODY]: any\n [HEADERS]: Record\n [STATUS]?: number\n [STATUS_TEXT]?: string\n [URL]?: string\n [RESPONSE_TYPE]?: HttpRequest['responseType']\n}\n\nfunction getKey(req: HttpRequest, platform_id: object) {\n if (isPlatformServer(platform_id)) {\n const path = inject(APP_PATH)\n const uri = path != '' && path ? req.urlWithParams.replace(path, '') : req.urlWithParams\n return makeStateKey(generateHash(uri))\n } else {\n return makeStateKey(generateHash(req.urlWithParams))\n }\n}\n\nexport function ssrInterceptor(req: HttpRequest, next: HttpHandlerFn) {\n const cacheOptions = req.context.get(IS_SSR_CACHE_ENABLED)\n if (cacheOptions?.enabled) {\n const platform_id = inject(PLATFORM_ID)\n const storeKey = getKey(req, platform_id)\n\n const transferState = inject(TransferState)\n if (isPlatformServer(platform_id)) {\n return next(req).pipe(\n map((s) => {\n if (s instanceof HttpResponse) {\n transferState.set(storeKey, {\n [BODY]: s.body,\n [HEADERS]: getFilteredHeaders(s.headers, undefined),\n [STATUS]: s.status,\n [STATUS_TEXT]: s.statusText,\n [URL]: s.url || '',\n [RESPONSE_TYPE]: req.responseType,\n })\n }\n return s\n })\n )\n } else if (isPlatformBrowser(platform_id)) {\n const cachedResponse = transferState.get(storeKey, null)\n if (cachedResponse) {\n const {\n [BODY]: undecodedBody,\n [RESPONSE_TYPE]: responseType,\n [HEADERS]: httpHeaders,\n [STATUS]: status,\n [STATUS_TEXT]: statusText,\n [URL]: url,\n } = cachedResponse\n let body: ArrayBuffer | Blob | string | undefined = undecodedBody\n switch (responseType) {\n case 'arraybuffer':\n body = new TextEncoder().encode(undecodedBody).buffer\n break\n case 'blob':\n body = new Blob([undecodedBody])\n break\n }\n let headers = new HttpHeaders(httpHeaders)\n\n transferState.remove(storeKey);\n\n return of(\n new HttpResponse({\n body,\n headers,\n status,\n statusText,\n url,\n })\n )\n }\n }\n }\n return next(req)\n}\n\nfunction getFilteredHeaders(headers: HttpHeaders, includeHeaders: string[] | undefined): Record {\n if (!includeHeaders) {\n return {}\n }\n\n const headersMap: Record = {}\n for (const key of includeHeaders) {\n const values = headers.getAll(key)\n if (values !== null) {\n headersMap[key] = values\n }\n }\n\n return headersMap\n}\n\nfunction generateHash(value: string): string {\n let hash = 0\n\n for (const char of value) {\n hash = (Math.imul(31, hash) + char.charCodeAt(0)) << 0\n }\n\n // Force positive number hash.\n // 2147483647 = equivalent of Integer.MAX_VALUE.\n hash += 2147483647 + 1\n\n return hash.toString()\n}\n","import { MatDateFormats } from '@angular/material/core'\n\nexport const DATE_FNS_DATE_FORMATS: MatDateFormats = {\n parse: {\n dateInput: 'dd.MM.yyyy',\n },\n\n display: {\n dateInput: 'dd.MM.yyyy',\n monthYearLabel: 'MMMM Y',\n dateA11yLabel: 'LL',\n monthYearA11yLabel: 'MMMM Y',\n },\n}\n","import * as i0 from '@angular/core';\nimport { Injectable, Optional, Inject, NgModule } from '@angular/core';\nimport { DateAdapter, MAT_DATE_LOCALE, MAT_DATE_FORMATS } from '@angular/material/core';\nimport { getYear, getMonth, getDate, getDay, getDaysInMonth, parseISO, parse, format, addYears, addMonths, addDays, formatISO, isDate, isValid } from 'date-fns';\n\n/** Creates an array and fills it with values. */\nfunction range(length, valueFunction) {\n const valuesArray = Array(length);\n for (let i = 0; i < length; i++) {\n valuesArray[i] = valueFunction(i);\n }\n return valuesArray;\n}\n// date-fns doesn't have a way to read/print month names or days of the week directly,\n// so we get them by formatting a date with a format that produces the desired month/day.\nconst MONTH_FORMATS = {\n long: 'LLLL',\n short: 'LLL',\n narrow: 'LLLLL'\n};\nconst DAY_OF_WEEK_FORMATS = {\n long: 'EEEE',\n short: 'EEE',\n narrow: 'EEEEE'\n};\n/** Adds date-fns support to Angular Material. */\nlet DateFnsAdapter = /*#__PURE__*/(() => {\n class DateFnsAdapter extends DateAdapter {\n constructor(matDateLocale) {\n super();\n this.setLocale(matDateLocale);\n }\n getYear(date) {\n return getYear(date);\n }\n getMonth(date) {\n return getMonth(date);\n }\n getDate(date) {\n return getDate(date);\n }\n getDayOfWeek(date) {\n return getDay(date);\n }\n getMonthNames(style) {\n const pattern = MONTH_FORMATS[style];\n return range(12, i => this.format(new Date(2017, i, 1), pattern));\n }\n getDateNames() {\n const dtf = typeof Intl !== 'undefined' ? new Intl.DateTimeFormat(this.locale.code, {\n day: 'numeric',\n timeZone: 'utc'\n }) : null;\n return range(31, i => {\n if (dtf) {\n // date-fns doesn't appear to support this functionality.\n // Fall back to `Intl` on supported browsers.\n const date = new Date();\n date.setUTCFullYear(2017, 0, i + 1);\n date.setUTCHours(0, 0, 0, 0);\n return dtf.format(date).replace(/[\\u200e\\u200f]/g, '');\n }\n return i + '';\n });\n }\n getDayOfWeekNames(style) {\n const pattern = DAY_OF_WEEK_FORMATS[style];\n return range(7, i => this.format(new Date(2017, 0, i + 1), pattern));\n }\n getYearName(date) {\n return this.format(date, 'y');\n }\n getFirstDayOfWeek() {\n return this.locale.options?.weekStartsOn ?? 0;\n }\n getNumDaysInMonth(date) {\n return getDaysInMonth(date);\n }\n clone(date) {\n return new Date(date.getTime());\n }\n createDate(year, month, date) {\n if (typeof ngDevMode === 'undefined' || ngDevMode) {\n // Check for invalid month and date (except upper bound on date which we have to check after\n // creating the Date).\n if (month < 0 || month > 11) {\n throw Error(`Invalid month index \"${month}\". Month index has to be between 0 and 11.`);\n }\n if (date < 1) {\n throw Error(`Invalid date \"${date}\". Date has to be greater than 0.`);\n }\n }\n // Passing the year to the constructor causes year numbers <100 to be converted to 19xx.\n // To work around this we use `setFullYear` and `setHours` instead.\n const result = new Date();\n result.setFullYear(year, month, date);\n result.setHours(0, 0, 0, 0);\n // Check that the date wasn't above the upper bound for the month, causing the month to overflow\n if (result.getMonth() != month && (typeof ngDevMode === 'undefined' || ngDevMode)) {\n throw Error(`Invalid date \"${date}\" for month with index \"${month}\".`);\n }\n return result;\n }\n today() {\n return new Date();\n }\n parse(value, parseFormat) {\n if (typeof value == 'string' && value.length > 0) {\n const iso8601Date = parseISO(value);\n if (this.isValid(iso8601Date)) {\n return iso8601Date;\n }\n const formats = Array.isArray(parseFormat) ? parseFormat : [parseFormat];\n if (!parseFormat.length) {\n throw Error('Formats array must not be empty.');\n }\n for (const currentFormat of formats) {\n const fromFormat = parse(value, currentFormat, new Date(), {\n locale: this.locale\n });\n if (this.isValid(fromFormat)) {\n return fromFormat;\n }\n }\n return this.invalid();\n } else if (typeof value === 'number') {\n return new Date(value);\n } else if (value instanceof Date) {\n return this.clone(value);\n }\n return null;\n }\n format(date, displayFormat) {\n if (!this.isValid(date)) {\n throw Error('DateFnsAdapter: Cannot format invalid date.');\n }\n return format(date, displayFormat, {\n locale: this.locale\n });\n }\n addCalendarYears(date, years) {\n return addYears(date, years);\n }\n addCalendarMonths(date, months) {\n return addMonths(date, months);\n }\n addCalendarDays(date, days) {\n return addDays(date, days);\n }\n toIso8601(date) {\n return formatISO(date, {\n representation: 'date'\n });\n }\n /**\n * Returns the given value if given a valid Date or null. Deserializes valid ISO 8601 strings\n * (https://www.ietf.org/rfc/rfc3339.txt) into valid Dates and empty string into null. Returns an\n * invalid date for all other values.\n */\n deserialize(value) {\n if (typeof value === 'string') {\n if (!value) {\n return null;\n }\n const date = parseISO(value);\n if (this.isValid(date)) {\n return date;\n }\n }\n return super.deserialize(value);\n }\n isDateInstance(obj) {\n return isDate(obj);\n }\n isValid(date) {\n return isValid(date);\n }\n invalid() {\n return new Date(NaN);\n }\n static {\n this.ɵfac = function DateFnsAdapter_Factory(__ngFactoryType__) {\n return new (__ngFactoryType__ || DateFnsAdapter)(i0.ɵɵinject(MAT_DATE_LOCALE, 8));\n };\n }\n static {\n this.ɵprov = /* @__PURE__ */i0.ɵɵdefineInjectable({\n token: DateFnsAdapter,\n factory: DateFnsAdapter.ɵfac\n });\n }\n }\n return DateFnsAdapter;\n})();\n/*#__PURE__*/(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\nconst MAT_DATE_FNS_FORMATS = {\n parse: {\n dateInput: 'P'\n },\n display: {\n dateInput: 'P',\n monthYearLabel: 'LLL uuuu',\n dateA11yLabel: 'PP',\n monthYearA11yLabel: 'LLLL uuuu'\n }\n};\nlet DateFnsModule = /*#__PURE__*/(() => {\n class DateFnsModule {\n static {\n this.ɵfac = function DateFnsModule_Factory(__ngFactoryType__) {\n return new (__ngFactoryType__ || DateFnsModule)();\n };\n }\n static {\n this.ɵmod = /* @__PURE__ */i0.ɵɵdefineNgModule({\n type: DateFnsModule\n });\n }\n static {\n this.ɵinj = /* @__PURE__ */i0.ɵɵdefineInjector({\n providers: [{\n provide: DateAdapter,\n useClass: DateFnsAdapter,\n deps: [MAT_DATE_LOCALE]\n }]\n });\n }\n }\n return DateFnsModule;\n})();\n/*#__PURE__*/(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\nlet MatDateFnsModule = /*#__PURE__*/(() => {\n class MatDateFnsModule {\n static {\n this.ɵfac = function MatDateFnsModule_Factory(__ngFactoryType__) {\n return new (__ngFactoryType__ || MatDateFnsModule)();\n };\n }\n static {\n this.ɵmod = /* @__PURE__ */i0.ɵɵdefineNgModule({\n type: MatDateFnsModule\n });\n }\n static {\n this.ɵinj = /* @__PURE__ */i0.ɵɵdefineInjector({\n providers: [provideDateFnsAdapter()]\n });\n }\n }\n return MatDateFnsModule;\n})();\n/*#__PURE__*/(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\nfunction provideDateFnsAdapter(formats = MAT_DATE_FNS_FORMATS) {\n return [{\n provide: DateAdapter,\n useClass: DateFnsAdapter,\n deps: [MAT_DATE_LOCALE]\n }, {\n provide: MAT_DATE_FORMATS,\n useValue: formats\n }];\n}\n\n/**\n * Generated bundle index. Do not edit.\n */\n\nexport { DateFnsAdapter, DateFnsModule, MAT_DATE_FNS_FORMATS, MatDateFnsModule, provideDateFnsAdapter };\n","import { isPlatformServer } from '@angular/common'\nimport { HttpHandlerFn, HttpRequest } from '@angular/common/http'\nimport { PLATFORM_ID, inject } from '@angular/core'\nimport { CLINICA_WEB_COOKIE_VALUE } from './tokens'\n\nexport function ssrCookieInterceptor(req: HttpRequest, next: HttpHandlerFn) {\n if (isPlatformServer(inject(PLATFORM_ID))) {\n const clinicaWebCookie = inject(CLINICA_WEB_COOKIE_VALUE)\n if (clinicaWebCookie) {\n req = req.clone({\n setHeaders: {\n Cookie: clinicaWebCookie,\n },\n })\n }\n }\n return next(req)\n}\n","import { InjectionToken } from '@angular/core'\n\nexport const RECAPTCHA_V3_SITE_KEY = new InjectionToken('recaptcha-v3-site-key')\n\n/**\n * Specifies the options for loading the reCAPTCHA script tag.\n */\nexport type RecaptchaLoaderOptions = {\n /**\n * Invoked before the `