{"version":3,"file":"format-8qs-kXlN.mjs","sources":["../../node_modules/date-fns/constants.js","../../node_modules/date-fns/constructFrom.js","../../node_modules/date-fns/toDate.js","../../node_modules/date-fns/addDays.js","../../node_modules/date-fns/_lib/defaultOptions.js","../../node_modules/date-fns/startOfWeek.js","../../node_modules/date-fns/startOfISOWeek.js","../../node_modules/date-fns/getISOWeekYear.js","../../node_modules/date-fns/_lib/getTimezoneOffsetInMilliseconds.js","../../node_modules/date-fns/_lib/normalizeDates.js","../../node_modules/date-fns/startOfDay.js","../../node_modules/date-fns/differenceInCalendarDays.js","../../node_modules/date-fns/startOfISOWeekYear.js","../../node_modules/date-fns/isDate.js","../../node_modules/date-fns/isValid.js","../../node_modules/date-fns/startOfYear.js","../../node_modules/date-fns/locale/en-US/_lib/formatDistance.js","../../node_modules/date-fns/locale/_lib/buildFormatLongFn.js","../../node_modules/date-fns/locale/en-US/_lib/formatLong.js","../../node_modules/date-fns/locale/en-US/_lib/formatRelative.js","../../node_modules/date-fns/locale/_lib/buildLocalizeFn.js","../../node_modules/date-fns/locale/en-US/_lib/localize.js","../../node_modules/date-fns/locale/_lib/buildMatchFn.js","../../node_modules/date-fns/locale/_lib/buildMatchPatternFn.js","../../node_modules/date-fns/locale/en-US/_lib/match.js","../../node_modules/date-fns/locale/en-US.js","../../node_modules/date-fns/getDayOfYear.js","../../node_modules/date-fns/getISOWeek.js","../../node_modules/date-fns/getWeekYear.js","../../node_modules/date-fns/startOfWeekYear.js","../../node_modules/date-fns/getWeek.js","../../node_modules/date-fns/_lib/addLeadingZeros.js","../../node_modules/date-fns/_lib/format/lightFormatters.js","../../node_modules/date-fns/_lib/format/formatters.js","../../node_modules/date-fns/_lib/format/longFormatters.js","../../node_modules/date-fns/_lib/protectedTokens.js","../../node_modules/date-fns/format.js"],"sourcesContent":["/**\n * @module constants\n * @summary Useful constants\n * @description\n * Collection of useful date constants.\n *\n * The constants could be imported from `date-fns/constants`:\n *\n * ```ts\n * import { maxTime, minTime } from \"./constants/date-fns/constants\";\n *\n * function isAllowedTime(time) {\n *   return time <= maxTime && time >= minTime;\n * }\n * ```\n */\n\n/**\n * @constant\n * @name daysInWeek\n * @summary Days in 1 week.\n */\nexport const daysInWeek = 7;\n\n/**\n * @constant\n * @name daysInYear\n * @summary Days in 1 year.\n *\n * @description\n * How many days in a year.\n *\n * One years equals 365.2425 days according to the formula:\n *\n * > Leap year occurs every 4 years, except for years that are divisible by 100 and not divisible by 400.\n * > 1 mean year = (365+1/4-1/100+1/400) days = 365.2425 days\n */\nexport const daysInYear = 365.2425;\n\n/**\n * @constant\n * @name maxTime\n * @summary Maximum allowed time.\n *\n * @example\n * import { maxTime } from \"./constants/date-fns/constants\";\n *\n * const isValid = 8640000000000001 <= maxTime;\n * //=> false\n *\n * new Date(8640000000000001);\n * //=> Invalid Date\n */\nexport const maxTime = Math.pow(10, 8) * 24 * 60 * 60 * 1000;\n\n/**\n * @constant\n * @name minTime\n * @summary Minimum allowed time.\n *\n * @example\n * import { minTime } from \"./constants/date-fns/constants\";\n *\n * const isValid = -8640000000000001 >= minTime;\n * //=> false\n *\n * new Date(-8640000000000001)\n * //=> Invalid Date\n */\nexport const minTime = -maxTime;\n\n/**\n * @constant\n * @name millisecondsInWeek\n * @summary Milliseconds in 1 week.\n */\nexport const millisecondsInWeek = 604800000;\n\n/**\n * @constant\n * @name millisecondsInDay\n * @summary Milliseconds in 1 day.\n */\nexport const millisecondsInDay = 86400000;\n\n/**\n * @constant\n * @name millisecondsInMinute\n * @summary Milliseconds in 1 minute\n */\nexport const millisecondsInMinute = 60000;\n\n/**\n * @constant\n * @name millisecondsInHour\n * @summary Milliseconds in 1 hour\n */\nexport const millisecondsInHour = 3600000;\n\n/**\n * @constant\n * @name millisecondsInSecond\n * @summary Milliseconds in 1 second\n */\nexport const millisecondsInSecond = 1000;\n\n/**\n * @constant\n * @name minutesInYear\n * @summary Minutes in 1 year.\n */\nexport const minutesInYear = 525600;\n\n/**\n * @constant\n * @name minutesInMonth\n * @summary Minutes in 1 month.\n */\nexport const minutesInMonth = 43200;\n\n/**\n * @constant\n * @name minutesInDay\n * @summary Minutes in 1 day.\n */\nexport const minutesInDay = 1440;\n\n/**\n * @constant\n * @name minutesInHour\n * @summary Minutes in 1 hour.\n */\nexport const minutesInHour = 60;\n\n/**\n * @constant\n * @name monthsInQuarter\n * @summary Months in 1 quarter.\n */\nexport const monthsInQuarter = 3;\n\n/**\n * @constant\n * @name monthsInYear\n * @summary Months in 1 year.\n */\nexport const monthsInYear = 12;\n\n/**\n * @constant\n * @name quartersInYear\n * @summary Quarters in 1 year\n */\nexport const quartersInYear = 4;\n\n/**\n * @constant\n * @name secondsInHour\n * @summary Seconds in 1 hour.\n */\nexport const secondsInHour = 3600;\n\n/**\n * @constant\n * @name secondsInMinute\n * @summary Seconds in 1 minute.\n */\nexport const secondsInMinute = 60;\n\n/**\n * @constant\n * @name secondsInDay\n * @summary Seconds in 1 day.\n */\nexport const secondsInDay = secondsInHour * 24;\n\n/**\n * @constant\n * @name secondsInWeek\n * @summary Seconds in 1 week.\n */\nexport const secondsInWeek = secondsInDay * 7;\n\n/**\n * @constant\n * @name secondsInYear\n * @summary Seconds in 1 year.\n */\nexport const secondsInYear = secondsInDay * daysInYear;\n\n/**\n * @constant\n * @name secondsInMonth\n * @summary Seconds in 1 month\n */\nexport const secondsInMonth = secondsInYear / 12;\n\n/**\n * @constant\n * @name secondsInQuarter\n * @summary Seconds in 1 quarter.\n */\nexport const secondsInQuarter = secondsInMonth * 3;\n\n/**\n * @constant\n * @name constructFromSymbol\n * @summary Symbol enabling Date extensions to inherit properties from the reference date.\n *\n * The symbol is used to enable the `constructFrom` function to construct a date\n * using a reference date and a value. It allows to transfer extra properties\n * from the reference date to the new date. It's useful for extensions like\n * [`TZDate`](https://github.com/date-fns/tz) that accept a time zone as\n * a constructor argument.\n */\nexport const constructFromSymbol = Symbol.for(\"constructDateFrom\");\n","import { constructFromSymbol } from \"./constants.js\";\n\n/**\n * @name constructFrom\n * @category Generic Helpers\n * @summary Constructs a date using the reference date and the value\n *\n * @description\n * The function constructs a new date using the constructor from the reference\n * date and the given value. It helps to build generic functions that accept\n * date extensions.\n *\n * It defaults to `Date` if the passed reference date is a number or a string.\n *\n * Starting from v3.7.0, it allows to construct a date using `[Symbol.for(\"constructDateFrom\")]`\n * enabling to transfer extra properties from the reference date to the new date.\n * It's useful for extensions like [`TZDate`](https://github.com/date-fns/tz)\n * that accept a time zone as a constructor argument.\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 reference date to take constructor from\n * @param value - The value to create the date\n *\n * @returns Date initialized using the given date and value\n *\n * @example\n * import { constructFrom } from \"./constructFrom/date-fns\";\n *\n * // A function that clones a date preserving the original type\n * function cloneDate<DateType extends Date>(date: DateType): DateType {\n *   return constructFrom(\n *     date, // Use constructor from the given date\n *     date.getTime() // Use the date value to create a new date\n *   );\n * }\n */\nexport function constructFrom(date, value) {\n  if (typeof date === \"function\") return date(value);\n\n  if (date && typeof date === \"object\" && constructFromSymbol in date)\n    return date[constructFromSymbol](value);\n\n  if (date instanceof Date) return new date.constructor(value);\n\n  return new Date(value);\n}\n\n// Fallback for modularized imports:\nexport default constructFrom;\n","import { constructFrom } from \"./constructFrom.js\";\n\n/**\n * @name toDate\n * @category Common Helpers\n * @summary Convert the given argument to an instance of Date.\n *\n * @description\n * Convert the given argument to an instance of Date.\n *\n * If the argument is an instance of Date, the function returns its clone.\n *\n * If the argument is a number, it is treated as a timestamp.\n *\n * If the argument is none of the above, the function returns Invalid Date.\n *\n * Starting from v3.7.0, it clones a date using `[Symbol.for(\"constructDateFrom\")]`\n * enabling to transfer extra properties from the reference date to the new date.\n * It's useful for extensions like [`TZDate`](https://github.com/date-fns/tz)\n * that accept a time zone as a constructor argument.\n *\n * **Note**: *all* Date arguments passed to any *date-fns* function is processed by `toDate`.\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 * @typeParam ResultDate - The result `Date` type, it is the type returned from the context function if it is passed, or inferred from the arguments.\n *\n * @param argument - The value to convert\n *\n * @returns The parsed date in the local time zone\n *\n * @example\n * // Clone the date:\n * const result = toDate(new Date(2014, 1, 11, 11, 30, 30))\n * //=> Tue Feb 11 2014 11:30:30\n *\n * @example\n * // Convert the timestamp to date:\n * const result = toDate(1392098430000)\n * //=> Tue Feb 11 2014 11:30:30\n */\nexport function toDate(argument, context) {\n  // [TODO] Get rid of `toDate` or `constructFrom`?\n  return constructFrom(context || argument, argument);\n}\n\n// Fallback for modularized imports:\nexport default toDate;\n","import { constructFrom } from \"./constructFrom.js\";\nimport { toDate } from \"./toDate.js\";\n\n/**\n * The {@link addDays} function options.\n */\n\n/**\n * @name addDays\n * @category Day Helpers\n * @summary Add the specified number of days to the given date.\n *\n * @description\n * Add the specified number of days 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 * @typeParam ResultDate - The result `Date` type, it is the type returned from the context function if it is passed, or inferred from the arguments.\n *\n * @param date - The date to be changed\n * @param amount - The amount of days to be added.\n * @param options - An object with options\n *\n * @returns The new date with the days added\n *\n * @example\n * // Add 10 days to 1 September 2014:\n * const result = addDays(new Date(2014, 8, 1), 10)\n * //=> Thu Sep 11 2014 00:00:00\n */\nexport function addDays(date, amount, options) {\n  const _date = toDate(date, options?.in);\n  if (isNaN(amount)) return constructFrom(options?.in || date, NaN);\n\n  // If 0 days, no-op to avoid changing times in the hour before end of DST\n  if (!amount) return _date;\n\n  _date.setDate(_date.getDate() + amount);\n  return _date;\n}\n\n// Fallback for modularized imports:\nexport default addDays;\n","let defaultOptions = {};\n\nexport function getDefaultOptions() {\n  return defaultOptions;\n}\n\nexport function setDefaultOptions(newOptions) {\n  defaultOptions = newOptions;\n}\n","import { getDefaultOptions } from \"./_lib/defaultOptions.js\";\nimport { toDate } from \"./toDate.js\";\n\n/**\n * The {@link startOfWeek} function options.\n */\n\n/**\n * @name startOfWeek\n * @category Week Helpers\n * @summary Return the start of a week for the given date.\n *\n * @description\n * Return the start of a week for the given date.\n * The result will be in the local timezone.\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 * @typeParam ResultDate - The result `Date` type, it is the type returned from the context function if it is passed, or inferred from the arguments.\n *\n * @param date - The original date\n * @param options - An object with options\n *\n * @returns The start of a week\n *\n * @example\n * // The start of a week for 2 September 2014 11:55:00:\n * const result = startOfWeek(new Date(2014, 8, 2, 11, 55, 0))\n * //=> Sun Aug 31 2014 00:00:00\n *\n * @example\n * // If the week starts on Monday, the start of the week for 2 September 2014 11:55:00:\n * const result = startOfWeek(new Date(2014, 8, 2, 11, 55, 0), { weekStartsOn: 1 })\n * //=> Mon Sep 01 2014 00:00:00\n */\nexport function startOfWeek(date, options) {\n  const defaultOptions = getDefaultOptions();\n  const weekStartsOn =\n    options?.weekStartsOn ??\n    options?.locale?.options?.weekStartsOn ??\n    defaultOptions.weekStartsOn ??\n    defaultOptions.locale?.options?.weekStartsOn ??\n    0;\n\n  const _date = toDate(date, options?.in);\n  const day = _date.getDay();\n  const diff = (day < weekStartsOn ? 7 : 0) + day - weekStartsOn;\n\n  _date.setDate(_date.getDate() - diff);\n  _date.setHours(0, 0, 0, 0);\n  return _date;\n}\n\n// Fallback for modularized imports:\nexport default startOfWeek;\n","import { startOfWeek } from \"./startOfWeek.js\";\n\n/**\n * The {@link startOfISOWeek} function options.\n */\n\n/**\n * @name startOfISOWeek\n * @category ISO Week Helpers\n * @summary Return the start of an ISO week for the given date.\n *\n * @description\n * Return the start of an ISO week for the given date.\n * The result will be in the local timezone.\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 * @typeParam ResultDate - The result `Date` type, it is the type returned from the context function if it is passed, or inferred from the arguments.\n *\n * @param date - The original date\n * @param options - An object with options\n *\n * @returns The start of an ISO week\n *\n * @example\n * // The start of an ISO week for 2 September 2014 11:55:00:\n * const result = startOfISOWeek(new Date(2014, 8, 2, 11, 55, 0))\n * //=> Mon Sep 01 2014 00:00:00\n */\nexport function startOfISOWeek(date, options) {\n  return startOfWeek(date, { ...options, weekStartsOn: 1 });\n}\n\n// Fallback for modularized imports:\nexport default startOfISOWeek;\n","import { constructFrom } from \"./constructFrom.js\";\nimport { startOfISOWeek } from \"./startOfISOWeek.js\";\nimport { toDate } from \"./toDate.js\";\n\n/**\n * The {@link getISOWeekYear} function options.\n */\n\n/**\n * @name getISOWeekYear\n * @category ISO Week-Numbering Year Helpers\n * @summary Get the ISO week-numbering year of the given date.\n *\n * @description\n * Get the ISO week-numbering year of the given date,\n * which always starts 3 days before the year's first Thursday.\n *\n * ISO week-numbering year: http://en.wikipedia.org/wiki/ISO_week_date\n *\n * @param date - The given date\n *\n * @returns The ISO week-numbering year\n *\n * @example\n * // Which ISO-week numbering year is 2 January 2005?\n * const result = getISOWeekYear(new Date(2005, 0, 2))\n * //=> 2004\n */\nexport function getISOWeekYear(date, options) {\n  const _date = toDate(date, options?.in);\n  const year = _date.getFullYear();\n\n  const fourthOfJanuaryOfNextYear = constructFrom(_date, 0);\n  fourthOfJanuaryOfNextYear.setFullYear(year + 1, 0, 4);\n  fourthOfJanuaryOfNextYear.setHours(0, 0, 0, 0);\n  const startOfNextYear = startOfISOWeek(fourthOfJanuaryOfNextYear);\n\n  const fourthOfJanuaryOfThisYear = constructFrom(_date, 0);\n  fourthOfJanuaryOfThisYear.setFullYear(year, 0, 4);\n  fourthOfJanuaryOfThisYear.setHours(0, 0, 0, 0);\n  const startOfThisYear = startOfISOWeek(fourthOfJanuaryOfThisYear);\n\n  if (_date.getTime() >= startOfNextYear.getTime()) {\n    return year + 1;\n  } else if (_date.getTime() >= startOfThisYear.getTime()) {\n    return year;\n  } else {\n    return year - 1;\n  }\n}\n\n// Fallback for modularized imports:\nexport default getISOWeekYear;\n","import { toDate } from \"../toDate.js\";\n\n/**\n * Google Chrome as of 67.0.3396.87 introduced timezones with offset that includes seconds.\n * They usually appear for dates that denote time before the timezones were introduced\n * (e.g. for 'Europe/Prague' timezone the offset is GMT+00:57:44 before 1 October 1891\n * and GMT+01:00:00 after that date)\n *\n * Date#getTimezoneOffset returns the offset in minutes and would return 57 for the example above,\n * which would lead to incorrect calculations.\n *\n * This function returns the timezone offset in milliseconds that takes seconds in account.\n */\nexport function getTimezoneOffsetInMilliseconds(date) {\n  const _date = toDate(date);\n  const utcDate = new Date(\n    Date.UTC(\n      _date.getFullYear(),\n      _date.getMonth(),\n      _date.getDate(),\n      _date.getHours(),\n      _date.getMinutes(),\n      _date.getSeconds(),\n      _date.getMilliseconds(),\n    ),\n  );\n  utcDate.setUTCFullYear(_date.getFullYear());\n  return +date - +utcDate;\n}\n","import { constructFrom } from \"../constructFrom.js\";\n\nexport function normalizeDates(context, ...dates) {\n  const normalize = constructFrom.bind(\n    null,\n    context || dates.find((date) => typeof date === \"object\"),\n  );\n  return dates.map(normalize);\n}\n","import { toDate } from \"./toDate.js\";\n\n/**\n * The {@link startOfDay} function options.\n */\n\n/**\n * @name startOfDay\n * @category Day Helpers\n * @summary Return the start of a day for the given date.\n *\n * @description\n * Return the start of a day for the given date.\n * The result will be in the local timezone.\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 * @typeParam ResultDate - The result `Date` type, it is the type returned from the context function if it is passed, or inferred from the arguments.\n *\n * @param date - The original date\n * @param options - The options\n *\n * @returns The start of a day\n *\n * @example\n * // The start of a day for 2 September 2014 11:55:00:\n * const result = startOfDay(new Date(2014, 8, 2, 11, 55, 0))\n * //=> Tue Sep 02 2014 00:00:00\n */\nexport function startOfDay(date, options) {\n  const _date = toDate(date, options?.in);\n  _date.setHours(0, 0, 0, 0);\n  return _date;\n}\n\n// Fallback for modularized imports:\nexport default startOfDay;\n","import { getTimezoneOffsetInMilliseconds } from \"./_lib/getTimezoneOffsetInMilliseconds.js\";\nimport { normalizeDates } from \"./_lib/normalizeDates.js\";\nimport { millisecondsInDay } from \"./constants.js\";\nimport { startOfDay } from \"./startOfDay.js\";\n\n/**\n * The {@link differenceInCalendarDays} function options.\n */\n\n/**\n * @name differenceInCalendarDays\n * @category Day Helpers\n * @summary Get the number of calendar days between the given dates.\n *\n * @description\n * Get the number of calendar days between the given dates. This means that the times are removed\n * from the dates and then the difference in days is calculated.\n *\n * @param laterDate - The later date\n * @param earlierDate - The earlier date\n * @param options - The options object\n *\n * @returns The number of calendar days\n *\n * @example\n * // How many calendar days are between\n * // 2 July 2011 23:00:00 and 2 July 2012 00:00:00?\n * const result = differenceInCalendarDays(\n *   new Date(2012, 6, 2, 0, 0),\n *   new Date(2011, 6, 2, 23, 0)\n * )\n * //=> 366\n * // How many calendar days are between\n * // 2 July 2011 23:59:00 and 3 July 2011 00:01:00?\n * const result = differenceInCalendarDays(\n *   new Date(2011, 6, 3, 0, 1),\n *   new Date(2011, 6, 2, 23, 59)\n * )\n * //=> 1\n */\nexport function differenceInCalendarDays(laterDate, earlierDate, options) {\n  const [laterDate_, earlierDate_] = normalizeDates(\n    options?.in,\n    laterDate,\n    earlierDate,\n  );\n\n  const laterStartOfDay = startOfDay(laterDate_);\n  const earlierStartOfDay = startOfDay(earlierDate_);\n\n  const laterTimestamp =\n    +laterStartOfDay - getTimezoneOffsetInMilliseconds(laterStartOfDay);\n  const earlierTimestamp =\n    +earlierStartOfDay - getTimezoneOffsetInMilliseconds(earlierStartOfDay);\n\n  // Round the number of days to the nearest integer because the number of\n  // milliseconds in a day is not constant (e.g. it's different in the week of\n  // the daylight saving time clock shift).\n  return Math.round((laterTimestamp - earlierTimestamp) / millisecondsInDay);\n}\n\n// Fallback for modularized imports:\nexport default differenceInCalendarDays;\n","import { constructFrom } from \"./constructFrom.js\";\nimport { getISOWeekYear } from \"./getISOWeekYear.js\";\nimport { startOfISOWeek } from \"./startOfISOWeek.js\";\n\n/**\n * The {@link startOfISOWeekYear} function options.\n */\n\n/**\n * @name startOfISOWeekYear\n * @category ISO Week-Numbering Year Helpers\n * @summary Return the start of an ISO week-numbering year for the given date.\n *\n * @description\n * Return the start of an ISO week-numbering year,\n * which always starts 3 days before the year's first Thursday.\n * The result will be in the local timezone.\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 * @typeParam ResultDate - The result `Date` type, it is the type returned from the context function if it is passed, or inferred from the arguments.\n *\n * @param date - The original date\n * @param options - An object with options\n *\n * @returns The start of an ISO week-numbering year\n *\n * @example\n * // The start of an ISO week-numbering year for 2 July 2005:\n * const result = startOfISOWeekYear(new Date(2005, 6, 2))\n * //=> Mon Jan 03 2005 00:00:00\n */\nexport function startOfISOWeekYear(date, options) {\n  const year = getISOWeekYear(date, options);\n  const fourthOfJanuary = constructFrom(options?.in || date, 0);\n  fourthOfJanuary.setFullYear(year, 0, 4);\n  fourthOfJanuary.setHours(0, 0, 0, 0);\n  return startOfISOWeek(fourthOfJanuary);\n}\n\n// Fallback for modularized imports:\nexport default startOfISOWeekYear;\n","/**\n * @name isDate\n * @category Common Helpers\n * @summary Is the given value a date?\n *\n * @description\n * Returns true if the given value is an instance of Date. The function works for dates transferred across iframes.\n *\n * @param value - The value to check\n *\n * @returns True if the given value is a date\n *\n * @example\n * // For a valid date:\n * const result = isDate(new Date())\n * //=> true\n *\n * @example\n * // For an invalid date:\n * const result = isDate(new Date(NaN))\n * //=> true\n *\n * @example\n * // For some value:\n * const result = isDate('2014-02-31')\n * //=> false\n *\n * @example\n * // For an object:\n * const result = isDate({})\n * //=> false\n */\nexport function isDate(value) {\n  return (\n    value instanceof Date ||\n    (typeof value === \"object\" &&\n      Object.prototype.toString.call(value) === \"[object Date]\")\n  );\n}\n\n// Fallback for modularized imports:\nexport default isDate;\n","import { isDate } from \"./isDate.js\";\nimport { toDate } from \"./toDate.js\";\n\n/**\n * @name isValid\n * @category Common Helpers\n * @summary Is the given date valid?\n *\n * @description\n * Returns false if argument is Invalid Date and true otherwise.\n * Argument is converted to Date using `toDate`. See [toDate](https://date-fns.org/docs/toDate)\n * Invalid Date is a Date, whose time value is NaN.\n *\n * Time value of Date: http://es5.github.io/#x15.9.1.1\n *\n * @param date - The date to check\n *\n * @returns The date is valid\n *\n * @example\n * // For the valid date:\n * const result = isValid(new Date(2014, 1, 31))\n * //=> true\n *\n * @example\n * // For the value, convertible into a date:\n * const result = isValid(1393804800000)\n * //=> true\n *\n * @example\n * // For the invalid date:\n * const result = isValid(new Date(''))\n * //=> false\n */\nexport function isValid(date) {\n  return !((!isDate(date) && typeof date !== \"number\") || isNaN(+toDate(date)));\n}\n\n// Fallback for modularized imports:\nexport default isValid;\n","import { toDate } from \"./toDate.js\";\n\n/**\n * The {@link startOfYear} function options.\n */\n\n/**\n * @name startOfYear\n * @category Year Helpers\n * @summary Return the start of a year for the given date.\n *\n * @description\n * Return the start of a year for the given date.\n * The result will be in the local timezone.\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 * @typeParam ResultDate - The result `Date` type, it is the type returned from the context function if it is passed, or inferred from the arguments.\n *\n * @param date - The original date\n * @param options - The options\n *\n * @returns The start of a year\n *\n * @example\n * // The start of a year for 2 September 2014 11:55:00:\n * const result = startOfYear(new Date(2014, 8, 2, 11, 55, 00))\n * //=> Wed Jan 01 2014 00:00:00\n */\nexport function startOfYear(date, options) {\n  const date_ = toDate(date, options?.in);\n  date_.setFullYear(date_.getFullYear(), 0, 1);\n  date_.setHours(0, 0, 0, 0);\n  return date_;\n}\n\n// Fallback for modularized imports:\nexport default startOfYear;\n","const formatDistanceLocale = {\n  lessThanXSeconds: {\n    one: \"less than a second\",\n    other: \"less than {{count}} seconds\",\n  },\n\n  xSeconds: {\n    one: \"1 second\",\n    other: \"{{count}} seconds\",\n  },\n\n  halfAMinute: \"half a minute\",\n\n  lessThanXMinutes: {\n    one: \"less than a minute\",\n    other: \"less than {{count}} minutes\",\n  },\n\n  xMinutes: {\n    one: \"1 minute\",\n    other: \"{{count}} minutes\",\n  },\n\n  aboutXHours: {\n    one: \"about 1 hour\",\n    other: \"about {{count}} hours\",\n  },\n\n  xHours: {\n    one: \"1 hour\",\n    other: \"{{count}} hours\",\n  },\n\n  xDays: {\n    one: \"1 day\",\n    other: \"{{count}} days\",\n  },\n\n  aboutXWeeks: {\n    one: \"about 1 week\",\n    other: \"about {{count}} weeks\",\n  },\n\n  xWeeks: {\n    one: \"1 week\",\n    other: \"{{count}} weeks\",\n  },\n\n  aboutXMonths: {\n    one: \"about 1 month\",\n    other: \"about {{count}} months\",\n  },\n\n  xMonths: {\n    one: \"1 month\",\n    other: \"{{count}} months\",\n  },\n\n  aboutXYears: {\n    one: \"about 1 year\",\n    other: \"about {{count}} years\",\n  },\n\n  xYears: {\n    one: \"1 year\",\n    other: \"{{count}} years\",\n  },\n\n  overXYears: {\n    one: \"over 1 year\",\n    other: \"over {{count}} years\",\n  },\n\n  almostXYears: {\n    one: \"almost 1 year\",\n    other: \"almost {{count}} years\",\n  },\n};\n\nexport const formatDistance = (token, count, options) => {\n  let result;\n\n  const tokenValue = formatDistanceLocale[token];\n  if (typeof tokenValue === \"string\") {\n    result = tokenValue;\n  } else if (count === 1) {\n    result = tokenValue.one;\n  } else {\n    result = tokenValue.other.replace(\"{{count}}\", count.toString());\n  }\n\n  if (options?.addSuffix) {\n    if (options.comparison && options.comparison > 0) {\n      return \"in \" + result;\n    } else {\n      return result + \" ago\";\n    }\n  }\n\n  return result;\n};\n","export function buildFormatLongFn(args) {\n  return (options = {}) => {\n    // TODO: Remove String()\n    const width = options.width ? String(options.width) : args.defaultWidth;\n    const format = args.formats[width] || args.formats[args.defaultWidth];\n    return format;\n  };\n}\n","import { buildFormatLongFn } from \"../../_lib/buildFormatLongFn.js\";\n\nconst dateFormats = {\n  full: \"EEEE, MMMM do, y\",\n  long: \"MMMM do, y\",\n  medium: \"MMM d, y\",\n  short: \"MM/dd/yyyy\",\n};\n\nconst timeFormats = {\n  full: \"h:mm:ss a zzzz\",\n  long: \"h:mm:ss a z\",\n  medium: \"h:mm:ss a\",\n  short: \"h:mm a\",\n};\n\nconst dateTimeFormats = {\n  full: \"{{date}} 'at' {{time}}\",\n  long: \"{{date}} 'at' {{time}}\",\n  medium: \"{{date}}, {{time}}\",\n  short: \"{{date}}, {{time}}\",\n};\n\nexport const formatLong = {\n  date: buildFormatLongFn({\n    formats: dateFormats,\n    defaultWidth: \"full\",\n  }),\n\n  time: buildFormatLongFn({\n    formats: timeFormats,\n    defaultWidth: \"full\",\n  }),\n\n  dateTime: buildFormatLongFn({\n    formats: dateTimeFormats,\n    defaultWidth: \"full\",\n  }),\n};\n","const formatRelativeLocale = {\n  lastWeek: \"'last' eeee 'at' p\",\n  yesterday: \"'yesterday at' p\",\n  today: \"'today at' p\",\n  tomorrow: \"'tomorrow at' p\",\n  nextWeek: \"eeee 'at' p\",\n  other: \"P\",\n};\n\nexport const formatRelative = (token, _date, _baseDate, _options) =>\n  formatRelativeLocale[token];\n","/**\n * The localize function argument callback which allows to convert raw value to\n * the actual type.\n *\n * @param value - The value to convert\n *\n * @returns The converted value\n */\n\n/**\n * The map of localized values for each width.\n */\n\n/**\n * The index type of the locale unit value. It types conversion of units of\n * values that don't start at 0 (i.e. quarters).\n */\n\n/**\n * Converts the unit value to the tuple of values.\n */\n\n/**\n * The tuple of localized era values. The first element represents BC,\n * the second element represents AD.\n */\n\n/**\n * The tuple of localized quarter values. The first element represents Q1.\n */\n\n/**\n * The tuple of localized day values. The first element represents Sunday.\n */\n\n/**\n * The tuple of localized month values. The first element represents January.\n */\n\nexport function buildLocalizeFn(args) {\n  return (value, options) => {\n    const context = options?.context ? String(options.context) : \"standalone\";\n\n    let valuesArray;\n    if (context === \"formatting\" && args.formattingValues) {\n      const defaultWidth = args.defaultFormattingWidth || args.defaultWidth;\n      const width = options?.width ? String(options.width) : defaultWidth;\n\n      valuesArray =\n        args.formattingValues[width] || args.formattingValues[defaultWidth];\n    } else {\n      const defaultWidth = args.defaultWidth;\n      const width = options?.width ? String(options.width) : args.defaultWidth;\n\n      valuesArray = args.values[width] || args.values[defaultWidth];\n    }\n    const index = args.argumentCallback ? args.argumentCallback(value) : value;\n\n    // @ts-expect-error - For some reason TypeScript just don't want to match it, no matter how hard we try. I challenge you to try to remove it!\n    return valuesArray[index];\n  };\n}\n","import { buildLocalizeFn } from \"../../_lib/buildLocalizeFn.js\";\n\nconst eraValues = {\n  narrow: [\"B\", \"A\"],\n  abbreviated: [\"BC\", \"AD\"],\n  wide: [\"Before Christ\", \"Anno Domini\"],\n};\n\nconst quarterValues = {\n  narrow: [\"1\", \"2\", \"3\", \"4\"],\n  abbreviated: [\"Q1\", \"Q2\", \"Q3\", \"Q4\"],\n  wide: [\"1st quarter\", \"2nd quarter\", \"3rd quarter\", \"4th quarter\"],\n};\n\n// Note: in English, the names of days of the week and months are capitalized.\n// If you are making a new locale based on this one, check if the same is true for the language you're working on.\n// Generally, formatted dates should look like they are in the middle of a sentence,\n// e.g. in Spanish language the weekdays and months should be in the lowercase.\nconst monthValues = {\n  narrow: [\"J\", \"F\", \"M\", \"A\", \"M\", \"J\", \"J\", \"A\", \"S\", \"O\", \"N\", \"D\"],\n  abbreviated: [\n    \"Jan\",\n    \"Feb\",\n    \"Mar\",\n    \"Apr\",\n    \"May\",\n    \"Jun\",\n    \"Jul\",\n    \"Aug\",\n    \"Sep\",\n    \"Oct\",\n    \"Nov\",\n    \"Dec\",\n  ],\n\n  wide: [\n    \"January\",\n    \"February\",\n    \"March\",\n    \"April\",\n    \"May\",\n    \"June\",\n    \"July\",\n    \"August\",\n    \"September\",\n    \"October\",\n    \"November\",\n    \"December\",\n  ],\n};\n\nconst dayValues = {\n  narrow: [\"S\", \"M\", \"T\", \"W\", \"T\", \"F\", \"S\"],\n  short: [\"Su\", \"Mo\", \"Tu\", \"We\", \"Th\", \"Fr\", \"Sa\"],\n  abbreviated: [\"Sun\", \"Mon\", \"Tue\", \"Wed\", \"Thu\", \"Fri\", \"Sat\"],\n  wide: [\n    \"Sunday\",\n    \"Monday\",\n    \"Tuesday\",\n    \"Wednesday\",\n    \"Thursday\",\n    \"Friday\",\n    \"Saturday\",\n  ],\n};\n\nconst dayPeriodValues = {\n  narrow: {\n    am: \"a\",\n    pm: \"p\",\n    midnight: \"mi\",\n    noon: \"n\",\n    morning: \"morning\",\n    afternoon: \"afternoon\",\n    evening: \"evening\",\n    night: \"night\",\n  },\n  abbreviated: {\n    am: \"AM\",\n    pm: \"PM\",\n    midnight: \"midnight\",\n    noon: \"noon\",\n    morning: \"morning\",\n    afternoon: \"afternoon\",\n    evening: \"evening\",\n    night: \"night\",\n  },\n  wide: {\n    am: \"a.m.\",\n    pm: \"p.m.\",\n    midnight: \"midnight\",\n    noon: \"noon\",\n    morning: \"morning\",\n    afternoon: \"afternoon\",\n    evening: \"evening\",\n    night: \"night\",\n  },\n};\n\nconst formattingDayPeriodValues = {\n  narrow: {\n    am: \"a\",\n    pm: \"p\",\n    midnight: \"mi\",\n    noon: \"n\",\n    morning: \"in the morning\",\n    afternoon: \"in the afternoon\",\n    evening: \"in the evening\",\n    night: \"at night\",\n  },\n  abbreviated: {\n    am: \"AM\",\n    pm: \"PM\",\n    midnight: \"midnight\",\n    noon: \"noon\",\n    morning: \"in the morning\",\n    afternoon: \"in the afternoon\",\n    evening: \"in the evening\",\n    night: \"at night\",\n  },\n  wide: {\n    am: \"a.m.\",\n    pm: \"p.m.\",\n    midnight: \"midnight\",\n    noon: \"noon\",\n    morning: \"in the morning\",\n    afternoon: \"in the afternoon\",\n    evening: \"in the evening\",\n    night: \"at night\",\n  },\n};\n\nconst ordinalNumber = (dirtyNumber, _options) => {\n  const number = Number(dirtyNumber);\n\n  // If ordinal numbers depend on context, for example,\n  // if they are different for different grammatical genders,\n  // use `options.unit`.\n  //\n  // `unit` can be 'year', 'quarter', 'month', 'week', 'date', 'dayOfYear',\n  // 'day', 'hour', 'minute', 'second'.\n\n  const rem100 = number % 100;\n  if (rem100 > 20 || rem100 < 10) {\n    switch (rem100 % 10) {\n      case 1:\n        return number + \"st\";\n      case 2:\n        return number + \"nd\";\n      case 3:\n        return number + \"rd\";\n    }\n  }\n  return number + \"th\";\n};\n\nexport const localize = {\n  ordinalNumber,\n\n  era: buildLocalizeFn({\n    values: eraValues,\n    defaultWidth: \"wide\",\n  }),\n\n  quarter: buildLocalizeFn({\n    values: quarterValues,\n    defaultWidth: \"wide\",\n    argumentCallback: (quarter) => quarter - 1,\n  }),\n\n  month: buildLocalizeFn({\n    values: monthValues,\n    defaultWidth: \"wide\",\n  }),\n\n  day: buildLocalizeFn({\n    values: dayValues,\n    defaultWidth: \"wide\",\n  }),\n\n  dayPeriod: buildLocalizeFn({\n    values: dayPeriodValues,\n    defaultWidth: \"wide\",\n    formattingValues: formattingDayPeriodValues,\n    defaultFormattingWidth: \"wide\",\n  }),\n};\n","export function buildMatchFn(args) {\n  return (string, options = {}) => {\n    const width = options.width;\n\n    const matchPattern =\n      (width && args.matchPatterns[width]) ||\n      args.matchPatterns[args.defaultMatchWidth];\n    const matchResult = string.match(matchPattern);\n\n    if (!matchResult) {\n      return null;\n    }\n    const matchedString = matchResult[0];\n\n    const parsePatterns =\n      (width && args.parsePatterns[width]) ||\n      args.parsePatterns[args.defaultParseWidth];\n\n    const key = Array.isArray(parsePatterns)\n      ? findIndex(parsePatterns, (pattern) => pattern.test(matchedString))\n      : // [TODO] -- I challenge you to fix the type\n        findKey(parsePatterns, (pattern) => pattern.test(matchedString));\n\n    let value;\n\n    value = args.valueCallback ? args.valueCallback(key) : key;\n    value = options.valueCallback\n      ? // [TODO] -- I challenge you to fix the type\n        options.valueCallback(value)\n      : value;\n\n    const rest = string.slice(matchedString.length);\n\n    return { value, rest };\n  };\n}\n\nfunction findKey(object, predicate) {\n  for (const key in object) {\n    if (\n      Object.prototype.hasOwnProperty.call(object, key) &&\n      predicate(object[key])\n    ) {\n      return key;\n    }\n  }\n  return undefined;\n}\n\nfunction findIndex(array, predicate) {\n  for (let key = 0; key < array.length; key++) {\n    if (predicate(array[key])) {\n      return key;\n    }\n  }\n  return undefined;\n}\n","export function buildMatchPatternFn(args) {\n  return (string, options = {}) => {\n    const matchResult = string.match(args.matchPattern);\n    if (!matchResult) return null;\n    const matchedString = matchResult[0];\n\n    const parseResult = string.match(args.parsePattern);\n    if (!parseResult) return null;\n    let value = args.valueCallback\n      ? args.valueCallback(parseResult[0])\n      : parseResult[0];\n\n    // [TODO] I challenge you to fix the type\n    value = options.valueCallback ? options.valueCallback(value) : value;\n\n    const rest = string.slice(matchedString.length);\n\n    return { value, rest };\n  };\n}\n","import { buildMatchFn } from \"../../_lib/buildMatchFn.js\";\nimport { buildMatchPatternFn } from \"../../_lib/buildMatchPatternFn.js\";\n\nconst matchOrdinalNumberPattern = /^(\\d+)(th|st|nd|rd)?/i;\nconst parseOrdinalNumberPattern = /\\d+/i;\n\nconst matchEraPatterns = {\n  narrow: /^(b|a)/i,\n  abbreviated: /^(b\\.?\\s?c\\.?|b\\.?\\s?c\\.?\\s?e\\.?|a\\.?\\s?d\\.?|c\\.?\\s?e\\.?)/i,\n  wide: /^(before christ|before common era|anno domini|common era)/i,\n};\nconst parseEraPatterns = {\n  any: [/^b/i, /^(a|c)/i],\n};\n\nconst matchQuarterPatterns = {\n  narrow: /^[1234]/i,\n  abbreviated: /^q[1234]/i,\n  wide: /^[1234](th|st|nd|rd)? quarter/i,\n};\nconst parseQuarterPatterns = {\n  any: [/1/i, /2/i, /3/i, /4/i],\n};\n\nconst matchMonthPatterns = {\n  narrow: /^[jfmasond]/i,\n  abbreviated: /^(jan|feb|mar|apr|may|jun|jul|aug|sep|oct|nov|dec)/i,\n  wide: /^(january|february|march|april|may|june|july|august|september|october|november|december)/i,\n};\nconst parseMonthPatterns = {\n  narrow: [\n    /^j/i,\n    /^f/i,\n    /^m/i,\n    /^a/i,\n    /^m/i,\n    /^j/i,\n    /^j/i,\n    /^a/i,\n    /^s/i,\n    /^o/i,\n    /^n/i,\n    /^d/i,\n  ],\n\n  any: [\n    /^ja/i,\n    /^f/i,\n    /^mar/i,\n    /^ap/i,\n    /^may/i,\n    /^jun/i,\n    /^jul/i,\n    /^au/i,\n    /^s/i,\n    /^o/i,\n    /^n/i,\n    /^d/i,\n  ],\n};\n\nconst matchDayPatterns = {\n  narrow: /^[smtwf]/i,\n  short: /^(su|mo|tu|we|th|fr|sa)/i,\n  abbreviated: /^(sun|mon|tue|wed|thu|fri|sat)/i,\n  wide: /^(sunday|monday|tuesday|wednesday|thursday|friday|saturday)/i,\n};\nconst parseDayPatterns = {\n  narrow: [/^s/i, /^m/i, /^t/i, /^w/i, /^t/i, /^f/i, /^s/i],\n  any: [/^su/i, /^m/i, /^tu/i, /^w/i, /^th/i, /^f/i, /^sa/i],\n};\n\nconst matchDayPeriodPatterns = {\n  narrow: /^(a|p|mi|n|(in the|at) (morning|afternoon|evening|night))/i,\n  any: /^([ap]\\.?\\s?m\\.?|midnight|noon|(in the|at) (morning|afternoon|evening|night))/i,\n};\nconst parseDayPeriodPatterns = {\n  any: {\n    am: /^a/i,\n    pm: /^p/i,\n    midnight: /^mi/i,\n    noon: /^no/i,\n    morning: /morning/i,\n    afternoon: /afternoon/i,\n    evening: /evening/i,\n    night: /night/i,\n  },\n};\n\nexport const match = {\n  ordinalNumber: buildMatchPatternFn({\n    matchPattern: matchOrdinalNumberPattern,\n    parsePattern: parseOrdinalNumberPattern,\n    valueCallback: (value) => parseInt(value, 10),\n  }),\n\n  era: buildMatchFn({\n    matchPatterns: matchEraPatterns,\n    defaultMatchWidth: \"wide\",\n    parsePatterns: parseEraPatterns,\n    defaultParseWidth: \"any\",\n  }),\n\n  quarter: buildMatchFn({\n    matchPatterns: matchQuarterPatterns,\n    defaultMatchWidth: \"wide\",\n    parsePatterns: parseQuarterPatterns,\n    defaultParseWidth: \"any\",\n    valueCallback: (index) => index + 1,\n  }),\n\n  month: buildMatchFn({\n    matchPatterns: matchMonthPatterns,\n    defaultMatchWidth: \"wide\",\n    parsePatterns: parseMonthPatterns,\n    defaultParseWidth: \"any\",\n  }),\n\n  day: buildMatchFn({\n    matchPatterns: matchDayPatterns,\n    defaultMatchWidth: \"wide\",\n    parsePatterns: parseDayPatterns,\n    defaultParseWidth: \"any\",\n  }),\n\n  dayPeriod: buildMatchFn({\n    matchPatterns: matchDayPeriodPatterns,\n    defaultMatchWidth: \"any\",\n    parsePatterns: parseDayPeriodPatterns,\n    defaultParseWidth: \"any\",\n  }),\n};\n","import { formatDistance } from \"./en-US/_lib/formatDistance.js\";\nimport { formatLong } from \"./en-US/_lib/formatLong.js\";\nimport { formatRelative } from \"./en-US/_lib/formatRelative.js\";\nimport { localize } from \"./en-US/_lib/localize.js\";\nimport { match } from \"./en-US/_lib/match.js\";\n\n/**\n * @category Locales\n * @summary English locale (United States).\n * @language English\n * @iso-639-2 eng\n * @author Sasha Koss [@kossnocorp](https://github.com/kossnocorp)\n * @author Lesha Koss [@leshakoss](https://github.com/leshakoss)\n */\nexport const enUS = {\n  code: \"en-US\",\n  formatDistance: formatDistance,\n  formatLong: formatLong,\n  formatRelative: formatRelative,\n  localize: localize,\n  match: match,\n  options: {\n    weekStartsOn: 0 /* Sunday */,\n    firstWeekContainsDate: 1,\n  },\n};\n\n// Fallback for modularized imports:\nexport default enUS;\n","import { differenceInCalendarDays } from \"./differenceInCalendarDays.js\";\nimport { startOfYear } from \"./startOfYear.js\";\nimport { toDate } from \"./toDate.js\";\n\n/**\n * The {@link getDayOfYear} function options.\n */\n\n/**\n * @name getDayOfYear\n * @category Day Helpers\n * @summary Get the day of the year of the given date.\n *\n * @description\n * Get the day of the year of the given date.\n *\n * @param date - The given date\n * @param options - The options\n *\n * @returns The day of year\n *\n * @example\n * // Which day of the year is 2 July 2014?\n * const result = getDayOfYear(new Date(2014, 6, 2))\n * //=> 183\n */\nexport function getDayOfYear(date, options) {\n  const _date = toDate(date, options?.in);\n  const diff = differenceInCalendarDays(_date, startOfYear(_date));\n  const dayOfYear = diff + 1;\n  return dayOfYear;\n}\n\n// Fallback for modularized imports:\nexport default getDayOfYear;\n","import { millisecondsInWeek } from \"./constants.js\";\nimport { startOfISOWeek } from \"./startOfISOWeek.js\";\nimport { startOfISOWeekYear } from \"./startOfISOWeekYear.js\";\nimport { toDate } from \"./toDate.js\";\n\n/**\n * The {@link getISOWeek} function options.\n */\n\n/**\n * @name getISOWeek\n * @category ISO Week Helpers\n * @summary Get the ISO week of the given date.\n *\n * @description\n * Get the ISO week of the given date.\n *\n * ISO week-numbering year: http://en.wikipedia.org/wiki/ISO_week_date\n *\n * @param date - The given date\n * @param options - The options\n *\n * @returns The ISO week\n *\n * @example\n * // Which week of the ISO-week numbering year is 2 January 2005?\n * const result = getISOWeek(new Date(2005, 0, 2))\n * //=> 53\n */\nexport function getISOWeek(date, options) {\n  const _date = toDate(date, options?.in);\n  const diff = +startOfISOWeek(_date) - +startOfISOWeekYear(_date);\n\n  // Round the number of weeks to the nearest integer because the number of\n  // milliseconds in a week is not constant (e.g. it's different in the week of\n  // the daylight saving time clock shift).\n  return Math.round(diff / millisecondsInWeek) + 1;\n}\n\n// Fallback for modularized imports:\nexport default getISOWeek;\n","import { getDefaultOptions } from \"./_lib/defaultOptions.js\";\nimport { constructFrom } from \"./constructFrom.js\";\nimport { startOfWeek } from \"./startOfWeek.js\";\nimport { toDate } from \"./toDate.js\";\n\n/**\n * The {@link getWeekYear} function options.\n */\n\n/**\n * @name getWeekYear\n * @category Week-Numbering Year Helpers\n * @summary Get the local week-numbering year of the given date.\n *\n * @description\n * Get the local week-numbering year of the given date.\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 * @param date - The given date\n * @param options - An object with options.\n *\n * @returns The local week-numbering year\n *\n * @example\n * // Which week numbering year is 26 December 2004 with the default settings?\n * const result = getWeekYear(new Date(2004, 11, 26))\n * //=> 2005\n *\n * @example\n * // Which week numbering year is 26 December 2004 if week starts on Saturday?\n * const result = getWeekYear(new Date(2004, 11, 26), { weekStartsOn: 6 })\n * //=> 2004\n *\n * @example\n * // Which week numbering year is 26 December 2004 if the first week contains 4 January?\n * const result = getWeekYear(new Date(2004, 11, 26), { firstWeekContainsDate: 4 })\n * //=> 2004\n */\nexport function getWeekYear(date, options) {\n  const _date = toDate(date, options?.in);\n  const year = _date.getFullYear();\n\n  const defaultOptions = getDefaultOptions();\n  const firstWeekContainsDate =\n    options?.firstWeekContainsDate ??\n    options?.locale?.options?.firstWeekContainsDate ??\n    defaultOptions.firstWeekContainsDate ??\n    defaultOptions.locale?.options?.firstWeekContainsDate ??\n    1;\n\n  const firstWeekOfNextYear = constructFrom(options?.in || date, 0);\n  firstWeekOfNextYear.setFullYear(year + 1, 0, firstWeekContainsDate);\n  firstWeekOfNextYear.setHours(0, 0, 0, 0);\n  const startOfNextYear = startOfWeek(firstWeekOfNextYear, options);\n\n  const firstWeekOfThisYear = constructFrom(options?.in || date, 0);\n  firstWeekOfThisYear.setFullYear(year, 0, firstWeekContainsDate);\n  firstWeekOfThisYear.setHours(0, 0, 0, 0);\n  const startOfThisYear = startOfWeek(firstWeekOfThisYear, options);\n\n  if (+_date >= +startOfNextYear) {\n    return year + 1;\n  } else if (+_date >= +startOfThisYear) {\n    return year;\n  } else {\n    return year - 1;\n  }\n}\n\n// Fallback for modularized imports:\nexport default getWeekYear;\n","import { getDefaultOptions } from \"./_lib/defaultOptions.js\";\nimport { constructFrom } from \"./constructFrom.js\";\nimport { getWeekYear } from \"./getWeekYear.js\";\nimport { startOfWeek } from \"./startOfWeek.js\";\n\n/**\n * The {@link startOfWeekYear} function options.\n */\n\n/**\n * @name startOfWeekYear\n * @category Week-Numbering Year Helpers\n * @summary Return the start of a local week-numbering year for the given date.\n *\n * @description\n * Return the start of a local week-numbering year.\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 * @typeParam ResultDate - The result `Date` type.\n *\n * @param date - The original date\n * @param options - An object with options\n *\n * @returns The start of a week-numbering year\n *\n * @example\n * // The start of an a week-numbering year for 2 July 2005 with default settings:\n * const result = startOfWeekYear(new Date(2005, 6, 2))\n * //=> Sun Dec 26 2004 00:00:00\n *\n * @example\n * // The start of a week-numbering year for 2 July 2005\n * // if Monday is the first day of week\n * // and 4 January is always in the first week of the year:\n * const result = startOfWeekYear(new Date(2005, 6, 2), {\n *   weekStartsOn: 1,\n *   firstWeekContainsDate: 4\n * })\n * //=> Mon Jan 03 2005 00:00:00\n */\nexport function startOfWeekYear(date, options) {\n  const defaultOptions = getDefaultOptions();\n  const firstWeekContainsDate =\n    options?.firstWeekContainsDate ??\n    options?.locale?.options?.firstWeekContainsDate ??\n    defaultOptions.firstWeekContainsDate ??\n    defaultOptions.locale?.options?.firstWeekContainsDate ??\n    1;\n\n  const year = getWeekYear(date, options);\n  const firstWeek = constructFrom(options?.in || date, 0);\n  firstWeek.setFullYear(year, 0, firstWeekContainsDate);\n  firstWeek.setHours(0, 0, 0, 0);\n  const _date = startOfWeek(firstWeek, options);\n  return _date;\n}\n\n// Fallback for modularized imports:\nexport default startOfWeekYear;\n","import { millisecondsInWeek } from \"./constants.js\";\nimport { startOfWeek } from \"./startOfWeek.js\";\nimport { startOfWeekYear } from \"./startOfWeekYear.js\";\nimport { toDate } from \"./toDate.js\";\n\n/**\n * The {@link getWeek} function options.\n */\n\n/**\n * @name getWeek\n * @category Week Helpers\n * @summary Get the local week index of the given date.\n *\n * @description\n * Get the local week index of the given date.\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 * @param date - The given date\n * @param options - An object with options\n *\n * @returns The week\n *\n * @example\n * // Which week of the local week numbering year is 2 January 2005 with default options?\n * const result = getWeek(new Date(2005, 0, 2))\n * //=> 2\n *\n * @example\n * // Which week of the local week numbering year is 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 = getWeek(new Date(2005, 0, 2), {\n *   weekStartsOn: 1,\n *   firstWeekContainsDate: 4\n * })\n * //=> 53\n */\nexport function getWeek(date, options) {\n  const _date = toDate(date, options?.in);\n  const diff = +startOfWeek(_date, options) - +startOfWeekYear(_date, options);\n\n  // Round the number of weeks to the nearest integer because the number of\n  // milliseconds in a week is not constant (e.g. it's different in the week of\n  // the daylight saving time clock shift).\n  return Math.round(diff / millisecondsInWeek) + 1;\n}\n\n// Fallback for modularized imports:\nexport default getWeek;\n","export function addLeadingZeros(number, targetLength) {\n  const sign = number < 0 ? \"-\" : \"\";\n  const output = Math.abs(number).toString().padStart(targetLength, \"0\");\n  return sign + output;\n}\n","import { addLeadingZeros } from \"../addLeadingZeros.js\";\n\n/*\n * |     | Unit                           |     | Unit                           |\n * |-----|--------------------------------|-----|--------------------------------|\n * |  a  | AM, PM                         |  A* |                                |\n * |  d  | Day of month                   |  D  |                                |\n * |  h  | Hour [1-12]                    |  H  | Hour [0-23]                    |\n * |  m  | Minute                         |  M  | Month                          |\n * |  s  | Second                         |  S  | Fraction of second             |\n * |  y  | Year (abs)                     |  Y  |                                |\n *\n * Letters marked by * are not implemented but reserved by Unicode standard.\n */\n\nexport const lightFormatters = {\n  // Year\n  y(date, token) {\n    // From http://www.unicode.org/reports/tr35/tr35-31/tr35-dates.html#Date_Format_tokens\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 |\n\n    const signedYear = date.getFullYear();\n    // Returns 1 for 1 BC (which is year 0 in JavaScript)\n    const year = signedYear > 0 ? signedYear : 1 - signedYear;\n    return addLeadingZeros(token === \"yy\" ? year % 100 : year, token.length);\n  },\n\n  // Month\n  M(date, token) {\n    const month = date.getMonth();\n    return token === \"M\" ? String(month + 1) : addLeadingZeros(month + 1, 2);\n  },\n\n  // Day of the month\n  d(date, token) {\n    return addLeadingZeros(date.getDate(), token.length);\n  },\n\n  // AM or PM\n  a(date, token) {\n    const dayPeriodEnumValue = date.getHours() / 12 >= 1 ? \"pm\" : \"am\";\n\n    switch (token) {\n      case \"a\":\n      case \"aa\":\n        return dayPeriodEnumValue.toUpperCase();\n      case \"aaa\":\n        return dayPeriodEnumValue;\n      case \"aaaaa\":\n        return dayPeriodEnumValue[0];\n      case \"aaaa\":\n      default:\n        return dayPeriodEnumValue === \"am\" ? \"a.m.\" : \"p.m.\";\n    }\n  },\n\n  // Hour [1-12]\n  h(date, token) {\n    return addLeadingZeros(date.getHours() % 12 || 12, token.length);\n  },\n\n  // Hour [0-23]\n  H(date, token) {\n    return addLeadingZeros(date.getHours(), token.length);\n  },\n\n  // Minute\n  m(date, token) {\n    return addLeadingZeros(date.getMinutes(), token.length);\n  },\n\n  // Second\n  s(date, token) {\n    return addLeadingZeros(date.getSeconds(), token.length);\n  },\n\n  // Fraction of second\n  S(date, token) {\n    const numberOfDigits = token.length;\n    const milliseconds = date.getMilliseconds();\n    const fractionalSeconds = Math.trunc(\n      milliseconds * Math.pow(10, numberOfDigits - 3),\n    );\n    return addLeadingZeros(fractionalSeconds, token.length);\n  },\n};\n","import { getDayOfYear } from \"../../getDayOfYear.js\";\nimport { getISOWeek } from \"../../getISOWeek.js\";\nimport { getISOWeekYear } from \"../../getISOWeekYear.js\";\nimport { getWeek } from \"../../getWeek.js\";\nimport { getWeekYear } from \"../../getWeekYear.js\";\n\nimport { addLeadingZeros } from \"../addLeadingZeros.js\";\nimport { lightFormatters } from \"./lightFormatters.js\";\n\nconst dayPeriodEnum = {\n  am: \"am\",\n  pm: \"pm\",\n  midnight: \"midnight\",\n  noon: \"noon\",\n  morning: \"morning\",\n  afternoon: \"afternoon\",\n  evening: \"evening\",\n  night: \"night\",\n};\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! | Long localized time            |  P! | Long localized date            |\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 `format` 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 * - `P` is long localized date format\n * - `p` is long localized time format\n */\n\nexport const formatters = {\n  // Era\n  G: function (date, token, localize) {\n    const era = date.getFullYear() > 0 ? 1 : 0;\n    switch (token) {\n      // AD, BC\n      case \"G\":\n      case \"GG\":\n      case \"GGG\":\n        return localize.era(era, { width: \"abbreviated\" });\n      // A, B\n      case \"GGGGG\":\n        return localize.era(era, { width: \"narrow\" });\n      // Anno Domini, Before Christ\n      case \"GGGG\":\n      default:\n        return localize.era(era, { width: \"wide\" });\n    }\n  },\n\n  // Year\n  y: function (date, token, localize) {\n    // Ordinal number\n    if (token === \"yo\") {\n      const signedYear = date.getFullYear();\n      // Returns 1 for 1 BC (which is year 0 in JavaScript)\n      const year = signedYear > 0 ? signedYear : 1 - signedYear;\n      return localize.ordinalNumber(year, { unit: \"year\" });\n    }\n\n    return lightFormatters.y(date, token);\n  },\n\n  // Local week-numbering year\n  Y: function (date, token, localize, options) {\n    const signedWeekYear = getWeekYear(date, options);\n    // Returns 1 for 1 BC (which is year 0 in JavaScript)\n    const weekYear = signedWeekYear > 0 ? signedWeekYear : 1 - signedWeekYear;\n\n    // Two digit year\n    if (token === \"YY\") {\n      const twoDigitYear = weekYear % 100;\n      return addLeadingZeros(twoDigitYear, 2);\n    }\n\n    // Ordinal number\n    if (token === \"Yo\") {\n      return localize.ordinalNumber(weekYear, { unit: \"year\" });\n    }\n\n    // Padding\n    return addLeadingZeros(weekYear, token.length);\n  },\n\n  // ISO week-numbering year\n  R: function (date, token) {\n    const isoWeekYear = getISOWeekYear(date);\n\n    // Padding\n    return addLeadingZeros(isoWeekYear, token.length);\n  },\n\n  // Extended year. This is a single number designating the year of this calendar system.\n  // The main difference between `y` and `u` localizers are B.C. years:\n  // | Year | `y` | `u` |\n  // |------|-----|-----|\n  // | AC 1 |   1 |   1 |\n  // | BC 1 |   1 |   0 |\n  // | BC 2 |   2 |  -1 |\n  // Also `yy` always returns the last two digits of a year,\n  // while `uu` pads single digit years to 2 characters and returns other years unchanged.\n  u: function (date, token) {\n    const year = date.getFullYear();\n    return addLeadingZeros(year, token.length);\n  },\n\n  // Quarter\n  Q: function (date, token, localize) {\n    const quarter = Math.ceil((date.getMonth() + 1) / 3);\n    switch (token) {\n      // 1, 2, 3, 4\n      case \"Q\":\n        return String(quarter);\n      // 01, 02, 03, 04\n      case \"QQ\":\n        return addLeadingZeros(quarter, 2);\n      // 1st, 2nd, 3rd, 4th\n      case \"Qo\":\n        return localize.ordinalNumber(quarter, { unit: \"quarter\" });\n      // Q1, Q2, Q3, Q4\n      case \"QQQ\":\n        return localize.quarter(quarter, {\n          width: \"abbreviated\",\n          context: \"formatting\",\n        });\n      // 1, 2, 3, 4 (narrow quarter; could be not numerical)\n      case \"QQQQQ\":\n        return localize.quarter(quarter, {\n          width: \"narrow\",\n          context: \"formatting\",\n        });\n      // 1st quarter, 2nd quarter, ...\n      case \"QQQQ\":\n      default:\n        return localize.quarter(quarter, {\n          width: \"wide\",\n          context: \"formatting\",\n        });\n    }\n  },\n\n  // Stand-alone quarter\n  q: function (date, token, localize) {\n    const quarter = Math.ceil((date.getMonth() + 1) / 3);\n    switch (token) {\n      // 1, 2, 3, 4\n      case \"q\":\n        return String(quarter);\n      // 01, 02, 03, 04\n      case \"qq\":\n        return addLeadingZeros(quarter, 2);\n      // 1st, 2nd, 3rd, 4th\n      case \"qo\":\n        return localize.ordinalNumber(quarter, { unit: \"quarter\" });\n      // Q1, Q2, Q3, Q4\n      case \"qqq\":\n        return localize.quarter(quarter, {\n          width: \"abbreviated\",\n          context: \"standalone\",\n        });\n      // 1, 2, 3, 4 (narrow quarter; could be not numerical)\n      case \"qqqqq\":\n        return localize.quarter(quarter, {\n          width: \"narrow\",\n          context: \"standalone\",\n        });\n      // 1st quarter, 2nd quarter, ...\n      case \"qqqq\":\n      default:\n        return localize.quarter(quarter, {\n          width: \"wide\",\n          context: \"standalone\",\n        });\n    }\n  },\n\n  // Month\n  M: function (date, token, localize) {\n    const month = date.getMonth();\n    switch (token) {\n      case \"M\":\n      case \"MM\":\n        return lightFormatters.M(date, token);\n      // 1st, 2nd, ..., 12th\n      case \"Mo\":\n        return localize.ordinalNumber(month + 1, { unit: \"month\" });\n      // Jan, Feb, ..., Dec\n      case \"MMM\":\n        return localize.month(month, {\n          width: \"abbreviated\",\n          context: \"formatting\",\n        });\n      // J, F, ..., D\n      case \"MMMMM\":\n        return localize.month(month, {\n          width: \"narrow\",\n          context: \"formatting\",\n        });\n      // January, February, ..., December\n      case \"MMMM\":\n      default:\n        return localize.month(month, { width: \"wide\", context: \"formatting\" });\n    }\n  },\n\n  // Stand-alone month\n  L: function (date, token, localize) {\n    const month = date.getMonth();\n    switch (token) {\n      // 1, 2, ..., 12\n      case \"L\":\n        return String(month + 1);\n      // 01, 02, ..., 12\n      case \"LL\":\n        return addLeadingZeros(month + 1, 2);\n      // 1st, 2nd, ..., 12th\n      case \"Lo\":\n        return localize.ordinalNumber(month + 1, { unit: \"month\" });\n      // Jan, Feb, ..., Dec\n      case \"LLL\":\n        return localize.month(month, {\n          width: \"abbreviated\",\n          context: \"standalone\",\n        });\n      // J, F, ..., D\n      case \"LLLLL\":\n        return localize.month(month, {\n          width: \"narrow\",\n          context: \"standalone\",\n        });\n      // January, February, ..., December\n      case \"LLLL\":\n      default:\n        return localize.month(month, { width: \"wide\", context: \"standalone\" });\n    }\n  },\n\n  // Local week of year\n  w: function (date, token, localize, options) {\n    const week = getWeek(date, options);\n\n    if (token === \"wo\") {\n      return localize.ordinalNumber(week, { unit: \"week\" });\n    }\n\n    return addLeadingZeros(week, token.length);\n  },\n\n  // ISO week of year\n  I: function (date, token, localize) {\n    const isoWeek = getISOWeek(date);\n\n    if (token === \"Io\") {\n      return localize.ordinalNumber(isoWeek, { unit: \"week\" });\n    }\n\n    return addLeadingZeros(isoWeek, token.length);\n  },\n\n  // Day of the month\n  d: function (date, token, localize) {\n    if (token === \"do\") {\n      return localize.ordinalNumber(date.getDate(), { unit: \"date\" });\n    }\n\n    return lightFormatters.d(date, token);\n  },\n\n  // Day of year\n  D: function (date, token, localize) {\n    const dayOfYear = getDayOfYear(date);\n\n    if (token === \"Do\") {\n      return localize.ordinalNumber(dayOfYear, { unit: \"dayOfYear\" });\n    }\n\n    return addLeadingZeros(dayOfYear, token.length);\n  },\n\n  // Day of week\n  E: function (date, token, localize) {\n    const dayOfWeek = date.getDay();\n    switch (token) {\n      // Tue\n      case \"E\":\n      case \"EE\":\n      case \"EEE\":\n        return localize.day(dayOfWeek, {\n          width: \"abbreviated\",\n          context: \"formatting\",\n        });\n      // T\n      case \"EEEEE\":\n        return localize.day(dayOfWeek, {\n          width: \"narrow\",\n          context: \"formatting\",\n        });\n      // Tu\n      case \"EEEEEE\":\n        return localize.day(dayOfWeek, {\n          width: \"short\",\n          context: \"formatting\",\n        });\n      // Tuesday\n      case \"EEEE\":\n      default:\n        return localize.day(dayOfWeek, {\n          width: \"wide\",\n          context: \"formatting\",\n        });\n    }\n  },\n\n  // Local day of week\n  e: function (date, token, localize, options) {\n    const dayOfWeek = date.getDay();\n    const localDayOfWeek = (dayOfWeek - options.weekStartsOn + 8) % 7 || 7;\n    switch (token) {\n      // Numerical value (Nth day of week with current locale or weekStartsOn)\n      case \"e\":\n        return String(localDayOfWeek);\n      // Padded numerical value\n      case \"ee\":\n        return addLeadingZeros(localDayOfWeek, 2);\n      // 1st, 2nd, ..., 7th\n      case \"eo\":\n        return localize.ordinalNumber(localDayOfWeek, { unit: \"day\" });\n      case \"eee\":\n        return localize.day(dayOfWeek, {\n          width: \"abbreviated\",\n          context: \"formatting\",\n        });\n      // T\n      case \"eeeee\":\n        return localize.day(dayOfWeek, {\n          width: \"narrow\",\n          context: \"formatting\",\n        });\n      // Tu\n      case \"eeeeee\":\n        return localize.day(dayOfWeek, {\n          width: \"short\",\n          context: \"formatting\",\n        });\n      // Tuesday\n      case \"eeee\":\n      default:\n        return localize.day(dayOfWeek, {\n          width: \"wide\",\n          context: \"formatting\",\n        });\n    }\n  },\n\n  // Stand-alone local day of week\n  c: function (date, token, localize, options) {\n    const dayOfWeek = date.getDay();\n    const localDayOfWeek = (dayOfWeek - options.weekStartsOn + 8) % 7 || 7;\n    switch (token) {\n      // Numerical value (same as in `e`)\n      case \"c\":\n        return String(localDayOfWeek);\n      // Padded numerical value\n      case \"cc\":\n        return addLeadingZeros(localDayOfWeek, token.length);\n      // 1st, 2nd, ..., 7th\n      case \"co\":\n        return localize.ordinalNumber(localDayOfWeek, { unit: \"day\" });\n      case \"ccc\":\n        return localize.day(dayOfWeek, {\n          width: \"abbreviated\",\n          context: \"standalone\",\n        });\n      // T\n      case \"ccccc\":\n        return localize.day(dayOfWeek, {\n          width: \"narrow\",\n          context: \"standalone\",\n        });\n      // Tu\n      case \"cccccc\":\n        return localize.day(dayOfWeek, {\n          width: \"short\",\n          context: \"standalone\",\n        });\n      // Tuesday\n      case \"cccc\":\n      default:\n        return localize.day(dayOfWeek, {\n          width: \"wide\",\n          context: \"standalone\",\n        });\n    }\n  },\n\n  // ISO day of week\n  i: function (date, token, localize) {\n    const dayOfWeek = date.getDay();\n    const isoDayOfWeek = dayOfWeek === 0 ? 7 : dayOfWeek;\n    switch (token) {\n      // 2\n      case \"i\":\n        return String(isoDayOfWeek);\n      // 02\n      case \"ii\":\n        return addLeadingZeros(isoDayOfWeek, token.length);\n      // 2nd\n      case \"io\":\n        return localize.ordinalNumber(isoDayOfWeek, { unit: \"day\" });\n      // Tue\n      case \"iii\":\n        return localize.day(dayOfWeek, {\n          width: \"abbreviated\",\n          context: \"formatting\",\n        });\n      // T\n      case \"iiiii\":\n        return localize.day(dayOfWeek, {\n          width: \"narrow\",\n          context: \"formatting\",\n        });\n      // Tu\n      case \"iiiiii\":\n        return localize.day(dayOfWeek, {\n          width: \"short\",\n          context: \"formatting\",\n        });\n      // Tuesday\n      case \"iiii\":\n      default:\n        return localize.day(dayOfWeek, {\n          width: \"wide\",\n          context: \"formatting\",\n        });\n    }\n  },\n\n  // AM or PM\n  a: function (date, token, localize) {\n    const hours = date.getHours();\n    const dayPeriodEnumValue = hours / 12 >= 1 ? \"pm\" : \"am\";\n\n    switch (token) {\n      case \"a\":\n      case \"aa\":\n        return localize.dayPeriod(dayPeriodEnumValue, {\n          width: \"abbreviated\",\n          context: \"formatting\",\n        });\n      case \"aaa\":\n        return localize\n          .dayPeriod(dayPeriodEnumValue, {\n            width: \"abbreviated\",\n            context: \"formatting\",\n          })\n          .toLowerCase();\n      case \"aaaaa\":\n        return localize.dayPeriod(dayPeriodEnumValue, {\n          width: \"narrow\",\n          context: \"formatting\",\n        });\n      case \"aaaa\":\n      default:\n        return localize.dayPeriod(dayPeriodEnumValue, {\n          width: \"wide\",\n          context: \"formatting\",\n        });\n    }\n  },\n\n  // AM, PM, midnight, noon\n  b: function (date, token, localize) {\n    const hours = date.getHours();\n    let dayPeriodEnumValue;\n    if (hours === 12) {\n      dayPeriodEnumValue = dayPeriodEnum.noon;\n    } else if (hours === 0) {\n      dayPeriodEnumValue = dayPeriodEnum.midnight;\n    } else {\n      dayPeriodEnumValue = hours / 12 >= 1 ? \"pm\" : \"am\";\n    }\n\n    switch (token) {\n      case \"b\":\n      case \"bb\":\n        return localize.dayPeriod(dayPeriodEnumValue, {\n          width: \"abbreviated\",\n          context: \"formatting\",\n        });\n      case \"bbb\":\n        return localize\n          .dayPeriod(dayPeriodEnumValue, {\n            width: \"abbreviated\",\n            context: \"formatting\",\n          })\n          .toLowerCase();\n      case \"bbbbb\":\n        return localize.dayPeriod(dayPeriodEnumValue, {\n          width: \"narrow\",\n          context: \"formatting\",\n        });\n      case \"bbbb\":\n      default:\n        return localize.dayPeriod(dayPeriodEnumValue, {\n          width: \"wide\",\n          context: \"formatting\",\n        });\n    }\n  },\n\n  // in the morning, in the afternoon, in the evening, at night\n  B: function (date, token, localize) {\n    const hours = date.getHours();\n    let dayPeriodEnumValue;\n    if (hours >= 17) {\n      dayPeriodEnumValue = dayPeriodEnum.evening;\n    } else if (hours >= 12) {\n      dayPeriodEnumValue = dayPeriodEnum.afternoon;\n    } else if (hours >= 4) {\n      dayPeriodEnumValue = dayPeriodEnum.morning;\n    } else {\n      dayPeriodEnumValue = dayPeriodEnum.night;\n    }\n\n    switch (token) {\n      case \"B\":\n      case \"BB\":\n      case \"BBB\":\n        return localize.dayPeriod(dayPeriodEnumValue, {\n          width: \"abbreviated\",\n          context: \"formatting\",\n        });\n      case \"BBBBB\":\n        return localize.dayPeriod(dayPeriodEnumValue, {\n          width: \"narrow\",\n          context: \"formatting\",\n        });\n      case \"BBBB\":\n      default:\n        return localize.dayPeriod(dayPeriodEnumValue, {\n          width: \"wide\",\n          context: \"formatting\",\n        });\n    }\n  },\n\n  // Hour [1-12]\n  h: function (date, token, localize) {\n    if (token === \"ho\") {\n      let hours = date.getHours() % 12;\n      if (hours === 0) hours = 12;\n      return localize.ordinalNumber(hours, { unit: \"hour\" });\n    }\n\n    return lightFormatters.h(date, token);\n  },\n\n  // Hour [0-23]\n  H: function (date, token, localize) {\n    if (token === \"Ho\") {\n      return localize.ordinalNumber(date.getHours(), { unit: \"hour\" });\n    }\n\n    return lightFormatters.H(date, token);\n  },\n\n  // Hour [0-11]\n  K: function (date, token, localize) {\n    const hours = date.getHours() % 12;\n\n    if (token === \"Ko\") {\n      return localize.ordinalNumber(hours, { unit: \"hour\" });\n    }\n\n    return addLeadingZeros(hours, token.length);\n  },\n\n  // Hour [1-24]\n  k: function (date, token, localize) {\n    let hours = date.getHours();\n    if (hours === 0) hours = 24;\n\n    if (token === \"ko\") {\n      return localize.ordinalNumber(hours, { unit: \"hour\" });\n    }\n\n    return addLeadingZeros(hours, token.length);\n  },\n\n  // Minute\n  m: function (date, token, localize) {\n    if (token === \"mo\") {\n      return localize.ordinalNumber(date.getMinutes(), { unit: \"minute\" });\n    }\n\n    return lightFormatters.m(date, token);\n  },\n\n  // Second\n  s: function (date, token, localize) {\n    if (token === \"so\") {\n      return localize.ordinalNumber(date.getSeconds(), { unit: \"second\" });\n    }\n\n    return lightFormatters.s(date, token);\n  },\n\n  // Fraction of second\n  S: function (date, token) {\n    return lightFormatters.S(date, token);\n  },\n\n  // Timezone (ISO-8601. If offset is 0, output is always `'Z'`)\n  X: function (date, token, _localize) {\n    const timezoneOffset = date.getTimezoneOffset();\n\n    if (timezoneOffset === 0) {\n      return \"Z\";\n    }\n\n    switch (token) {\n      // Hours and optional minutes\n      case \"X\":\n        return formatTimezoneWithOptionalMinutes(timezoneOffset);\n\n      // Hours, minutes and optional seconds without `:` delimiter\n      // Note: neither ISO-8601 nor JavaScript supports seconds in timezone offsets\n      // so this token always has the same output as `XX`\n      case \"XXXX\":\n      case \"XX\": // Hours and minutes without `:` delimiter\n        return formatTimezone(timezoneOffset);\n\n      // Hours, minutes and optional seconds with `:` delimiter\n      // Note: neither ISO-8601 nor JavaScript supports seconds in timezone offsets\n      // so this token always has the same output as `XXX`\n      case \"XXXXX\":\n      case \"XXX\": // Hours and minutes with `:` delimiter\n      default:\n        return formatTimezone(timezoneOffset, \":\");\n    }\n  },\n\n  // Timezone (ISO-8601. If offset is 0, output is `'+00:00'` or equivalent)\n  x: function (date, token, _localize) {\n    const timezoneOffset = date.getTimezoneOffset();\n\n    switch (token) {\n      // Hours and optional minutes\n      case \"x\":\n        return formatTimezoneWithOptionalMinutes(timezoneOffset);\n\n      // Hours, minutes and optional seconds without `:` delimiter\n      // Note: neither ISO-8601 nor JavaScript supports seconds in timezone offsets\n      // so this token always has the same output as `xx`\n      case \"xxxx\":\n      case \"xx\": // Hours and minutes without `:` delimiter\n        return formatTimezone(timezoneOffset);\n\n      // Hours, minutes and optional seconds with `:` delimiter\n      // Note: neither ISO-8601 nor JavaScript supports seconds in timezone offsets\n      // so this token always has the same output as `xxx`\n      case \"xxxxx\":\n      case \"xxx\": // Hours and minutes with `:` delimiter\n      default:\n        return formatTimezone(timezoneOffset, \":\");\n    }\n  },\n\n  // Timezone (GMT)\n  O: function (date, token, _localize) {\n    const timezoneOffset = date.getTimezoneOffset();\n\n    switch (token) {\n      // Short\n      case \"O\":\n      case \"OO\":\n      case \"OOO\":\n        return \"GMT\" + formatTimezoneShort(timezoneOffset, \":\");\n      // Long\n      case \"OOOO\":\n      default:\n        return \"GMT\" + formatTimezone(timezoneOffset, \":\");\n    }\n  },\n\n  // Timezone (specific non-location)\n  z: function (date, token, _localize) {\n    const timezoneOffset = date.getTimezoneOffset();\n\n    switch (token) {\n      // Short\n      case \"z\":\n      case \"zz\":\n      case \"zzz\":\n        return \"GMT\" + formatTimezoneShort(timezoneOffset, \":\");\n      // Long\n      case \"zzzz\":\n      default:\n        return \"GMT\" + formatTimezone(timezoneOffset, \":\");\n    }\n  },\n\n  // Seconds timestamp\n  t: function (date, token, _localize) {\n    const timestamp = Math.trunc(+date / 1000);\n    return addLeadingZeros(timestamp, token.length);\n  },\n\n  // Milliseconds timestamp\n  T: function (date, token, _localize) {\n    return addLeadingZeros(+date, token.length);\n  },\n};\n\nfunction formatTimezoneShort(offset, delimiter = \"\") {\n  const sign = offset > 0 ? \"-\" : \"+\";\n  const absOffset = Math.abs(offset);\n  const hours = Math.trunc(absOffset / 60);\n  const minutes = absOffset % 60;\n  if (minutes === 0) {\n    return sign + String(hours);\n  }\n  return sign + String(hours) + delimiter + addLeadingZeros(minutes, 2);\n}\n\nfunction formatTimezoneWithOptionalMinutes(offset, delimiter) {\n  if (offset % 60 === 0) {\n    const sign = offset > 0 ? \"-\" : \"+\";\n    return sign + addLeadingZeros(Math.abs(offset) / 60, 2);\n  }\n  return formatTimezone(offset, delimiter);\n}\n\nfunction formatTimezone(offset, delimiter = \"\") {\n  const sign = offset > 0 ? \"-\" : \"+\";\n  const absOffset = Math.abs(offset);\n  const hours = addLeadingZeros(Math.trunc(absOffset / 60), 2);\n  const minutes = addLeadingZeros(absOffset % 60, 2);\n  return sign + hours + delimiter + minutes;\n}\n","const dateLongFormatter = (pattern, formatLong) => {\n  switch (pattern) {\n    case \"P\":\n      return formatLong.date({ width: \"short\" });\n    case \"PP\":\n      return formatLong.date({ width: \"medium\" });\n    case \"PPP\":\n      return formatLong.date({ width: \"long\" });\n    case \"PPPP\":\n    default:\n      return formatLong.date({ width: \"full\" });\n  }\n};\n\nconst timeLongFormatter = (pattern, formatLong) => {\n  switch (pattern) {\n    case \"p\":\n      return formatLong.time({ width: \"short\" });\n    case \"pp\":\n      return formatLong.time({ width: \"medium\" });\n    case \"ppp\":\n      return formatLong.time({ width: \"long\" });\n    case \"pppp\":\n    default:\n      return formatLong.time({ width: \"full\" });\n  }\n};\n\nconst dateTimeLongFormatter = (pattern, formatLong) => {\n  const matchResult = pattern.match(/(P+)(p+)?/) || [];\n  const datePattern = matchResult[1];\n  const timePattern = matchResult[2];\n\n  if (!timePattern) {\n    return dateLongFormatter(pattern, formatLong);\n  }\n\n  let dateTimeFormat;\n\n  switch (datePattern) {\n    case \"P\":\n      dateTimeFormat = formatLong.dateTime({ width: \"short\" });\n      break;\n    case \"PP\":\n      dateTimeFormat = formatLong.dateTime({ width: \"medium\" });\n      break;\n    case \"PPP\":\n      dateTimeFormat = formatLong.dateTime({ width: \"long\" });\n      break;\n    case \"PPPP\":\n    default:\n      dateTimeFormat = formatLong.dateTime({ width: \"full\" });\n      break;\n  }\n\n  return dateTimeFormat\n    .replace(\"{{date}}\", dateLongFormatter(datePattern, formatLong))\n    .replace(\"{{time}}\", timeLongFormatter(timePattern, formatLong));\n};\n\nexport const longFormatters = {\n  p: timeLongFormatter,\n  P: dateTimeLongFormatter,\n};\n","const dayOfYearTokenRE = /^D+$/;\nconst weekYearTokenRE = /^Y+$/;\n\nconst throwTokens = [\"D\", \"DD\", \"YY\", \"YYYY\"];\n\nexport function isProtectedDayOfYearToken(token) {\n  return dayOfYearTokenRE.test(token);\n}\n\nexport function isProtectedWeekYearToken(token) {\n  return weekYearTokenRE.test(token);\n}\n\nexport function warnOrThrowProtectedError(token, format, input) {\n  const _message = message(token, format, input);\n  console.warn(_message);\n  if (throwTokens.includes(token)) throw new RangeError(_message);\n}\n\nfunction message(token, format, input) {\n  const subject = token[0] === \"Y\" ? \"years\" : \"days of the month\";\n  return `Use \\`${token.toLowerCase()}\\` instead of \\`${token}\\` (in \\`${format}\\`) for formatting ${subject} to the input \\`${input}\\`; see: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md`;\n}\n","import { defaultLocale } from \"./_lib/defaultLocale.js\";\nimport { getDefaultOptions } from \"./_lib/defaultOptions.js\";\nimport { formatters } from \"./_lib/format/formatters.js\";\nimport { longFormatters } from \"./_lib/format/longFormatters.js\";\nimport {\n  isProtectedDayOfYearToken,\n  isProtectedWeekYearToken,\n  warnOrThrowProtectedError,\n} from \"./_lib/protectedTokens.js\";\nimport { isValid } from \"./isValid.js\";\nimport { toDate } from \"./toDate.js\";\n\n// Rexports of internal for libraries to use.\n// See: https://github.com/date-fns/date-fns/issues/3638#issuecomment-1877082874\nexport { formatters, longFormatters };\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 =\n  /[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;\n\nconst escapedStringRegExp = /^'([^]*?)'?$/;\nconst doubleQuoteRegExp = /''/g;\nconst unescapedLatinCharacterRegExp = /[a-zA-Z]/;\n\nexport { format as formatDate };\n\n/**\n * The {@link format} function options.\n */\n\n/**\n * @name format\n * @alias formatDate\n * @category Common Helpers\n * @summary Format the date.\n *\n * @description\n * Return the formatted date string in the given format. The result may vary by locale.\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 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 * (see the last example)\n *\n * Format of the 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 7 below the table).\n *\n * Accepted patterns:\n * | Unit                            | Pattern | Result examples                   | Notes |\n * |---------------------------------|---------|-----------------------------------|-------|\n * | Era                             | G..GGG  | AD, BC                            |       |\n * |                                 | GGGG    | Anno Domini, Before Christ        | 2     |\n * |                                 | GGGGG   | A, B                              |       |\n * | Calendar year                   | y       | 44, 1, 1900, 2017                 | 5     |\n * |                                 | yo      | 44th, 1st, 0th, 17th              | 5,7   |\n * |                                 | yy      | 44, 01, 00, 17                    | 5     |\n * |                                 | yyy     | 044, 001, 1900, 2017              | 5     |\n * |                                 | yyyy    | 0044, 0001, 1900, 2017            | 5     |\n * |                                 | yyyyy   | ...                               | 3,5   |\n * | Local week-numbering year       | Y       | 44, 1, 1900, 2017                 | 5     |\n * |                                 | Yo      | 44th, 1st, 1900th, 2017th         | 5,7   |\n * |                                 | YY      | 44, 01, 00, 17                    | 5,8   |\n * |                                 | YYY     | 044, 001, 1900, 2017              | 5     |\n * |                                 | YYYY    | 0044, 0001, 1900, 2017            | 5,8   |\n * |                                 | YYYYY   | ...                               | 3,5   |\n * | ISO week-numbering year         | R       | -43, 0, 1, 1900, 2017             | 5,7   |\n * |                                 | RR      | -43, 00, 01, 1900, 2017           | 5,7   |\n * |                                 | RRR     | -043, 000, 001, 1900, 2017        | 5,7   |\n * |                                 | RRRR    | -0043, 0000, 0001, 1900, 2017     | 5,7   |\n * |                                 | RRRRR   | ...                               | 3,5,7 |\n * | Extended year                   | u       | -43, 0, 1, 1900, 2017             | 5     |\n * |                                 | uu      | -43, 01, 1900, 2017               | 5     |\n * |                                 | uuu     | -043, 001, 1900, 2017             | 5     |\n * |                                 | uuuu    | -0043, 0001, 1900, 2017           | 5     |\n * |                                 | uuuuu   | ...                               | 3,5   |\n * | Quarter (formatting)            | Q       | 1, 2, 3, 4                        |       |\n * |                                 | Qo      | 1st, 2nd, 3rd, 4th                | 7     |\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)           | q       | 1, 2, 3, 4                        |       |\n * |                                 | qo      | 1st, 2nd, 3rd, 4th                | 7     |\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 * | Month (formatting)              | M       | 1, 2, ..., 12                     |       |\n * |                                 | Mo      | 1st, 2nd, ..., 12th               | 7     |\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)             | L       | 1, 2, ..., 12                     |       |\n * |                                 | Lo      | 1st, 2nd, ..., 12th               | 7     |\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              | w       | 1, 2, ..., 53                     |       |\n * |                                 | wo      | 1st, 2nd, ..., 53th               | 7     |\n * |                                 | ww      | 01, 02, ..., 53                   |       |\n * | ISO week of year                | I       | 1, 2, ..., 53                     | 7     |\n * |                                 | Io      | 1st, 2nd, ..., 53th               | 7     |\n * |                                 | II      | 01, 02, ..., 53                   | 7     |\n * | Day of month                    | d       | 1, 2, ..., 31                     |       |\n * |                                 | do      | 1st, 2nd, ..., 31st               | 7     |\n * |                                 | dd      | 01, 02, ..., 31                   |       |\n * | Day of year                     | D       | 1, 2, ..., 365, 366               | 9     |\n * |                                 | Do      | 1st, 2nd, ..., 365th, 366th       | 7     |\n * |                                 | DD      | 01, 02, ..., 365, 366             | 9     |\n * |                                 | DDD     | 001, 002, ..., 365, 366           |       |\n * |                                 | DDDD    | ...                               | 3     |\n * | Day of week (formatting)        | 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)    | i       | 1, 2, 3, ..., 7                   | 7     |\n * |                                 | io      | 1st, 2nd, ..., 7th                | 7     |\n * |                                 | ii      | 01, 02, ..., 07                   | 7     |\n * |                                 | iii     | Mon, Tue, Wed, ..., Sun           | 7     |\n * |                                 | iiii    | Monday, Tuesday, ..., Sunday      | 2,7   |\n * |                                 | iiiii   | M, T, W, T, F, S, S               | 7     |\n * |                                 | iiiiii  | Mo, Tu, We, Th, Fr, Sa, Su        | 7     |\n * | Local day of week (formatting)  | e       | 2, 3, 4, ..., 1                   |       |\n * |                                 | eo      | 2nd, 3rd, ..., 1st                | 7     |\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) | c       | 2, 3, 4, ..., 1                   |       |\n * |                                 | co      | 2nd, 3rd, ..., 1st                | 7     |\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                          | a..aa   | AM, PM                            |       |\n * |                                 | aaa     | am, pm                            |       |\n * |                                 | aaaa    | a.m., p.m.                        | 2     |\n * |                                 | aaaaa   | a, p                              |       |\n * | AM, PM, noon, midnight          | b..bb   | AM, PM, noon, midnight            |       |\n * |                                 | bbb     | am, pm, noon, midnight            |       |\n * |                                 | bbbb    | a.m., p.m., noon, midnight        | 2     |\n * |                                 | bbbbb   | a, p, n, mi                       |       |\n * | Flexible day period             | 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]                     | h       | 1, 2, ..., 11, 12                 |       |\n * |                                 | ho      | 1st, 2nd, ..., 11th, 12th         | 7     |\n * |                                 | hh      | 01, 02, ..., 11, 12               |       |\n * | Hour [0-23]                     | H       | 0, 1, 2, ..., 23                  |       |\n * |                                 | Ho      | 0th, 1st, 2nd, ..., 23rd          | 7     |\n * |                                 | HH      | 00, 01, 02, ..., 23               |       |\n * | Hour [0-11]                     | K       | 1, 2, ..., 11, 0                  |       |\n * |                                 | Ko      | 1st, 2nd, ..., 11th, 0th          | 7     |\n * |                                 | KK      | 01, 02, ..., 11, 00               |       |\n * | Hour [1-24]                     | k       | 24, 1, 2, ..., 23                 |       |\n * |                                 | ko      | 24th, 1st, 2nd, ..., 23rd         | 7     |\n * |                                 | kk      | 24, 01, 02, ..., 23               |       |\n * | Minute                          | m       | 0, 1, ..., 59                     |       |\n * |                                 | mo      | 0th, 1st, ..., 59th               | 7     |\n * |                                 | mm      | 00, 01, ..., 59                   |       |\n * | Second                          | s       | 0, 1, ..., 59                     |       |\n * |                                 | so      | 0th, 1st, ..., 59th               | 7     |\n * |                                 | ss      | 00, 01, ..., 59                   |       |\n * | Fraction of second              | S       | 0, 1, ..., 9                      |       |\n * |                                 | SS      | 00, 01, ..., 99                   |       |\n * |                                 | SSS     | 000, 001, ..., 999                |       |\n * |                                 | SSSS    | ...                               | 3     |\n * | Timezone (ISO-8601 w/ Z)        | 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)       | 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 * | Timezone (GMT)                  | O...OOO | GMT-8, GMT+5:30, GMT+0            |       |\n * |                                 | OOOO    | GMT-08:00, GMT+05:30, GMT+00:00   | 2     |\n * | Timezone (specific non-locat.)  | z...zzz | GMT-8, GMT+5:30, GMT+0            | 6     |\n * |                                 | zzzz    | GMT-08:00, GMT+05:30, GMT+00:00   | 2,6   |\n * | Seconds timestamp               | t       | 512969520                         | 7     |\n * |                                 | tt      | ...                               | 3,7   |\n * | Milliseconds timestamp          | T       | 512969520900                      | 7     |\n * |                                 | TT      | ...                               | 3,7   |\n * | Long localized date             | P       | 04/29/1453                        | 7     |\n * |                                 | PP      | Apr 29, 1453                      | 7     |\n * |                                 | PPP     | April 29th, 1453                  | 7     |\n * |                                 | PPPP    | Friday, April 29th, 1453          | 2,7   |\n * | Long localized time             | p       | 12:00 AM                          | 7     |\n * |                                 | pp      | 12:00:00 AM                       | 7     |\n * |                                 | ppp     | 12:00:00 AM GMT+2                 | 7     |\n * |                                 | pppp    | 12:00:00 AM GMT+02:00             | 2,7   |\n * | Combination of date and time    | Pp      | 04/29/1453, 12:00 AM              | 7     |\n * |                                 | PPpp    | Apr 29, 1453, 12:00:00 AM         | 7     |\n * |                                 | PPPppp  | April 29th, 1453 at ...           | 7     |\n * |                                 | PPPPpppp| Friday, April 29th, 1453 at ...   | 2,7   |\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 *\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 * 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 (e.g. `EEEEEEEEEEE`)\n *    the output will be the same as default pattern for this unit, usually\n *    the longest one (in case of ISO weekdays, `EEEE`). Default patterns for units\n *    are marked with \"2\" in the last column of the table.\n *\n *    `format(new Date(2017, 10, 6), 'MMM') //=> 'Nov'`\n *\n *    `format(new Date(2017, 10, 6), 'MMMM') //=> 'November'`\n *\n *    `format(new Date(2017, 10, 6), 'MMMMM') //=> 'N'`\n *\n *    `format(new Date(2017, 10, 6), 'MMMMMM') //=> 'November'`\n *\n *    `format(new Date(2017, 10, 6), 'MMMMMMM') //=> 'November'`\n *\n * 3. Some patterns could be unlimited length (such as `yyyyyyyy`).\n *    The output will be padded with zeros to match the length of the pattern.\n *\n *    `format(new Date(2017, 10, 6), 'yyyyyyyy') //=> '00002017'`\n *\n * 4. `QQQQQ` and `qqqqq` could be not strictly numerical in some locales.\n *    These tokens represent the shortest form of the quarter.\n *\n * 5. 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` always returns the last two digits of a year,\n *    while `uu` pads single digit years to 2 characters and returns other years unchanged:\n *\n *    | Year | `yy` | `uu` |\n *    |------|------|------|\n *    | 1    |   01 |   01 |\n *    | 14   |   14 |   14 |\n *    | 376  |   76 |  376 |\n *    | 1453 |   53 | 1453 |\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 [getISOWeekYear](https://date-fns.org/docs/getISOWeekYear)\n *    and [getWeekYear](https://date-fns.org/docs/getWeekYear)).\n *\n * 6. Specific non-location timezones are currently unavailable in `date-fns`,\n *    so right now these tokens fall back to GMT timezones.\n *\n * 7. 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 *    - `t`: seconds timestamp\n *    - `T`: milliseconds timestamp\n *    - `o`: ordinal number modifier\n *    - `P`: long localized date\n *    - `p`: long localized time\n *\n * 8. `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 * 9. `D` and `DD` tokens represent days of the year but they are often 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 * @param date - The original date\n * @param format - The string of tokens\n * @param options - An object with options\n *\n * @returns The formatted date string\n *\n * @throws `date` must not be Invalid Date\n * @throws `options.locale` must contain `localize` property\n * @throws `options.locale` must contain `formatLong` 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 * // Represent 11 February 2014 in middle-endian format:\n * const result = format(new Date(2014, 1, 11), 'MM/dd/yyyy')\n * //=> '02/11/2014'\n *\n * @example\n * // Represent 2 July 2014 in Esperanto:\n * import { eoLocale } from 'date-fns/locale/eo'\n * const result = format(new Date(2014, 6, 2), \"do 'de' MMMM yyyy\", {\n *   locale: eoLocale\n * })\n * //=> '2-a de julio 2014'\n *\n * @example\n * // Escape string by single quote characters:\n * const result = format(new Date(2014, 6, 2, 15), \"h 'o''clock'\")\n * //=> \"3 o'clock\"\n */\nexport function format(date, formatStr, options) {\n  const defaultOptions = getDefaultOptions();\n  const locale = options?.locale ?? defaultOptions.locale ?? defaultLocale;\n\n  const firstWeekContainsDate =\n    options?.firstWeekContainsDate ??\n    options?.locale?.options?.firstWeekContainsDate ??\n    defaultOptions.firstWeekContainsDate ??\n    defaultOptions.locale?.options?.firstWeekContainsDate ??\n    1;\n\n  const weekStartsOn =\n    options?.weekStartsOn ??\n    options?.locale?.options?.weekStartsOn ??\n    defaultOptions.weekStartsOn ??\n    defaultOptions.locale?.options?.weekStartsOn ??\n    0;\n\n  const originalDate = toDate(date, options?.in);\n\n  if (!isValid(originalDate)) {\n    throw new RangeError(\"Invalid time value\");\n  }\n\n  let parts = formatStr\n    .match(longFormattingTokensRegExp)\n    .map((substring) => {\n      const firstCharacter = substring[0];\n      if (firstCharacter === \"p\" || firstCharacter === \"P\") {\n        const longFormatter = longFormatters[firstCharacter];\n        return longFormatter(substring, locale.formatLong);\n      }\n      return substring;\n    })\n    .join(\"\")\n    .match(formattingTokensRegExp)\n    .map((substring) => {\n      // Replace two single quote characters with one single quote character\n      if (substring === \"''\") {\n        return { isToken: false, value: \"'\" };\n      }\n\n      const firstCharacter = substring[0];\n      if (firstCharacter === \"'\") {\n        return { isToken: false, value: cleanEscapedString(substring) };\n      }\n\n      if (formatters[firstCharacter]) {\n        return { isToken: true, value: substring };\n      }\n\n      if (firstCharacter.match(unescapedLatinCharacterRegExp)) {\n        throw new RangeError(\n          \"Format string contains an unescaped latin alphabet character `\" +\n            firstCharacter +\n            \"`\",\n        );\n      }\n\n      return { isToken: false, value: substring };\n    });\n\n  // invoke localize preprocessor (only for french locales at the moment)\n  if (locale.localize.preprocessor) {\n    parts = locale.localize.preprocessor(originalDate, parts);\n  }\n\n  const formatterOptions = {\n    firstWeekContainsDate,\n    weekStartsOn,\n    locale,\n  };\n\n  return parts\n    .map((part) => {\n      if (!part.isToken) return part.value;\n\n      const token = part.value;\n\n      if (\n        (!options?.useAdditionalWeekYearTokens &&\n          isProtectedWeekYearToken(token)) ||\n        (!options?.useAdditionalDayOfYearTokens &&\n          isProtectedDayOfYearToken(token))\n      ) {\n        warnOrThrowProtectedError(token, formatStr, String(date));\n      }\n\n      const formatter = formatters[token[0]];\n      return formatter(originalDate, token, locale.localize, formatterOptions);\n    })\n    .join(\"\");\n}\n\nfunction cleanEscapedString(input) {\n  const matched = input.match(escapedStringRegExp);\n\n  if (!matched) {\n    return input;\n  }\n\n  return matched[1].replace(doubleQuoteRegExp, \"'\");\n}\n\n// Fallback for modularized imports:\nexport default format;\n"],"names":["millisecondsInWeek","millisecondsInDay","millisecondsInMinute","millisecondsInHour","millisecondsInSecond","constructFromSymbol","Symbol","for","constructFrom","date","value","Date","toDate","argument","context","addDays","amount","options","_date","in","isNaN","NaN","setDate","getDate","defaultOptions","getDefaultOptions","startOfWeek","weekStartsOn","locale","day","getDay","diff","setHours","startOfISOWeek","getISOWeekYear","year","getFullYear","fourthOfJanuaryOfNextYear","setFullYear","startOfNextYear","fourthOfJanuaryOfThisYear","startOfThisYear","getTime","getTimezoneOffsetInMilliseconds","utcDate","UTC","getMonth","getHours","getMinutes","getSeconds","getMilliseconds","setUTCFullYear","normalizeDates","dates","normalize","bind","find","map","startOfDay","differenceInCalendarDays","laterDate","earlierDate","laterDate_","earlierDate_","laterStartOfDay","earlierStartOfDay","laterTimestamp","earlierTimestamp","Math","round","startOfISOWeekYear","fourthOfJanuary","isDate","Object","prototype","toString","call","isValid","startOfYear","date_","formatDistanceLocale","lessThanXSeconds","one","other","xSeconds","halfAMinute","lessThanXMinutes","xMinutes","aboutXHours","xHours","xDays","aboutXWeeks","xWeeks","aboutXMonths","xMonths","aboutXYears","xYears","overXYears","almostXYears","formatDistance","token","count","result","tokenValue","replace","addSuffix","comparison","buildFormatLongFn","args","width","String","defaultWidth","format","formats","dateFormats","full","long","medium","short","timeFormats","dateTimeFormats","formatLong","time","dateTime","formatRelativeLocale","lastWeek","yesterday","today","tomorrow","nextWeek","formatRelative","_baseDate","_options","buildLocalizeFn","valuesArray","formattingValues","defaultFormattingWidth","values","index","argumentCallback","eraValues","narrow","abbreviated","wide","quarterValues","monthValues","dayValues","dayPeriodValues","am","pm","midnight","noon","morning","afternoon","evening","night","formattingDayPeriodValues","ordinalNumber","dirtyNumber","number","Number","rem100","localize","era","quarter","month","dayPeriod","buildMatchFn","string","matchPattern","matchPatterns","defaultMatchWidth","matchResult","match","matchedString","parsePatterns","defaultParseWidth","key","Array","isArray","findIndex","pattern","test","findKey","valueCallback","rest","slice","length","object","predicate","hasOwnProperty","undefined","array","buildMatchPatternFn","parseResult","parsePattern","matchOrdinalNumberPattern","parseOrdinalNumberPattern","matchEraPatterns","parseEraPatterns","any","matchQuarterPatterns","parseQuarterPatterns","matchMonthPatterns","parseMonthPatterns","matchDayPatterns","parseDayPatterns","matchDayPeriodPatterns","parseDayPeriodPatterns","parseInt","enUS","code","firstWeekContainsDate","getDayOfYear","dayOfYear","getISOWeek","getWeekYear","firstWeekOfNextYear","firstWeekOfThisYear","startOfWeekYear","firstWeek","getWeek","addLeadingZeros","targetLength","sign","output","abs","padStart","lightFormatters","y","signedYear","M","d","a","dayPeriodEnumValue","toUpperCase","h","H","m","s","S","numberOfDigits","milliseconds","fractionalSeconds","trunc","pow","dayPeriodEnum","formatters","G","unit","Y","signedWeekYear","weekYear","twoDigitYear","R","isoWeekYear","u","Q","ceil","q","L","w","week","I","isoWeek","D","E","dayOfWeek","e","localDayOfWeek","c","i","isoDayOfWeek","hours","toLowerCase","b","B","K","k","X","_localize","timezoneOffset","getTimezoneOffset","formatTimezoneWithOptionalMinutes","formatTimezone","x","O","formatTimezoneShort","z","t","timestamp","T","offset","delimiter","absOffset","minutes","dateLongFormatter","timeLongFormatter","dateTimeLongFormatter","datePattern","timePattern","dateTimeFormat","longFormatters","p","P","dayOfYearTokenRE","weekYearTokenRE","throwTokens","isProtectedDayOfYearToken","isProtectedWeekYearToken","warnOrThrowProtectedError","input","_message","message","console","warn","includes","RangeError","subject","formattingTokensRegExp","longFormattingTokensRegExp","escapedStringRegExp","doubleQuoteRegExp","unescapedLatinCharacterRegExp","formatStr","defaultLocale","originalDate","parts","substring","firstCharacter","longFormatter","join","isToken","cleanEscapedString","preprocessor","formatterOptions","part","useAdditionalWeekYearTokens","useAdditionalDayOfYearTokens","formatter","matched"],"mappings":"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","x_google_ignoreList":[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36]}