{"version":3,"file":"index.cjs","sources":["../src/config/locale/esm-locale-th/_lib/formatDistance/index.js","../src/config/locale/_lib/buildFormatLongFn/index.js","../src/config/locale/esm-locale-th/_lib/formatLong/index.js","../src/config/locale/esm-locale-th/_lib/formatRelative/index.js","../src/config/locale/_lib/buildLocalizeFn/index.js","../src/config/locale/_lib/buildMatchFn/index.js","../src/config/locale/esm-locale-th/_lib/match/index.js","../src/config/locale/_lib/buildMatchPatternFn/index.js","../src/config/locale/esm-locale-th/index.js","../src/config/locale/esm-locale-th/_lib/localize/index.js","../src/hooks/useStylesheet.ts","../node_modules/clsx/dist/clsx.mjs","../node_modules/tailwind-merge/dist/bundle-mjs.mjs","../src/components/CustomInputWrapped.tsx","../src/utils/index.ts","../src/utils/YearListGenerator.ts","../src/config/constants.ts","../src/components/NavigateButton.tsx","../src/components/NavigateSelect.tsx","../src/components/CustomHeader.tsx","../src/components/index.tsx"],"sourcesContent":["var formatDistanceLocale = {\n  lessThanXSeconds: {\n    one: 'น้อยกว่า 1 วินาที',\n    other: 'น้อยกว่า {{count}} วินาที'\n  },\n  xSeconds: {\n    one: '1 วินาที',\n    other: '{{count}} วินาที'\n  },\n  halfAMinute: 'ครึ่งนาที',\n  lessThanXMinutes: {\n    one: 'น้อยกว่า 1 นาที',\n    other: 'น้อยกว่า {{count}} นาที'\n  },\n  xMinutes: {\n    one: '1 นาที',\n    other: '{{count}} นาที'\n  },\n  aboutXHours: {\n    one: 'ประมาณ 1 ชั่วโมง',\n    other: 'ประมาณ {{count}} ชั่วโมง'\n  },\n  xHours: {\n    one: '1 ชั่วโมง',\n    other: '{{count}} ชั่วโมง'\n  },\n  xDays: {\n    one: '1 วัน',\n    other: '{{count}} วัน'\n  },\n  aboutXMonths: {\n    one: 'ประมาณ 1 เดือน',\n    other: 'ประมาณ {{count}} เดือน'\n  },\n  xMonths: {\n    one: '1 เดือน',\n    other: '{{count}} เดือน'\n  },\n  aboutXYears: {\n    one: 'ประมาณ 1 ปี',\n    other: 'ประมาณ {{count}} ปี'\n  },\n  xYears: {\n    one: '1 ปี',\n    other: '{{count}} ปี'\n  },\n  overXYears: {\n    one: 'มากกว่า 1 ปี',\n    other: 'มากกว่า {{count}} ปี'\n  },\n  almostXYears: {\n    one: 'เกือบ 1 ปี',\n    other: 'เกือบ {{count}} ปี'\n  }\n};\nexport default function formatDistance(token, count, options) {\n  options = options || {};\n  var result;\n\n  if (typeof formatDistanceLocale[token] === 'string') {\n    result = formatDistanceLocale[token];\n  } else if (count === 1) {\n    result = formatDistanceLocale[token].one;\n  } else {\n    result = formatDistanceLocale[token].other.replace('{{count}}', count);\n  }\n\n  if (options.addSuffix) {\n    if (options.comparison > 0) {\n      if (token === 'halfAMinute') {\n        return 'ใน' + result;\n      } else {\n        return 'ใน ' + result;\n      }\n    } else {\n      return result + 'ที่ผ่านมา';\n    }\n  }\n\n  return result;\n}","export default function buildFormatLongFn(args) {\n  return function (dirtyOptions) {\n    var options = dirtyOptions || {};\n    var width = options.width ? String(options.width) : args.defaultWidth;\n    var format = args.formats[width] || args.formats[args.defaultWidth];\n    return format;\n  };\n}","import buildFormatLongFn from '../../../_lib/buildFormatLongFn/index.js';\nvar dateFormats = {\n  full: 'วันEEEEที่ do MMMM y',\n  long: 'do MMMM y',\n  medium: 'd MMM y',\n  short: 'dd/MM/yyyy'\n};\nvar timeFormats = {\n  full: 'H:mm:ss น. zzzz',\n  long: 'H:mm:ss น. z',\n  medium: 'H:mm:ss น.',\n  short: 'H:mm น.'\n};\nvar dateTimeFormats = {\n  full: \"{{date}} 'เวลา' {{time}}\",\n  long: \"{{date}} 'เวลา' {{time}}\",\n  medium: '{{date}}, {{time}}',\n  short: '{{date}}, {{time}}'\n};\nvar formatLong = {\n  date: buildFormatLongFn({\n    formats: dateFormats,\n    defaultWidth: 'full'\n  }),\n  time: buildFormatLongFn({\n    formats: timeFormats,\n    defaultWidth: 'medium'\n  }),\n  dateTime: buildFormatLongFn({\n    formats: dateTimeFormats,\n    defaultWidth: 'full'\n  })\n};\nexport default formatLong;","var formatRelativeLocale = {\n  lastWeek: \"eeee'ที่แล้วเวลา' p\",\n  yesterday: \"'เมื่อวานนี้เวลา' p\",\n  today: \"'วันนี้เวลา' p\",\n  tomorrow: \"'พรุ่งนี้เวลา' p\",\n  nextWeek: \"eeee 'เวลา' p\",\n  other: 'P'\n};\nexport default function formatRelative(token, _date, _baseDate, _options) {\n  return formatRelativeLocale[token];\n}","export default function buildLocalizeFn(args) {\n  return function (dirtyIndex, dirtyOptions) {\n    var options = dirtyOptions || {};\n    var context = options.context ? String(options.context) : 'standalone';\n    var valuesArray;\n\n    if (context === 'formatting' && args.formattingValues) {\n      var defaultWidth = args.defaultFormattingWidth || args.defaultWidth;\n      var width = options.width ? String(options.width) : defaultWidth;\n      valuesArray = args.formattingValues[width] || args.formattingValues[defaultWidth];\n    } else {\n      var _defaultWidth = args.defaultWidth;\n\n      var _width = options.width ? String(options.width) : args.defaultWidth;\n\n      valuesArray = args.values[_width] || args.values[_defaultWidth];\n    }\n\n    var index = args.argumentCallback ? args.argumentCallback(dirtyIndex) : dirtyIndex;\n    return valuesArray[index];\n  };\n}","export default function buildMatchFn(args) {\n  return function (dirtyString, dirtyOptions) {\n    var string = String(dirtyString);\n    var options = dirtyOptions || {};\n    var width = options.width;\n    var matchPattern = (width && args.matchPatterns[width]) || args.matchPatterns[args.defaultMatchWidth];\n    var matchResult = string.match(matchPattern);\n\n    if (!matchResult) {\n      return null;\n    }\n\n    var matchedString = matchResult[0];\n    var parsePatterns = (width && args.parsePatterns[width]) || args.parsePatterns[args.defaultParseWidth];\n    var value;\n\n    if (Object.prototype.toString.call(parsePatterns) === '[object Array]') {\n      value = findIndex(parsePatterns, function (pattern) {\n        return pattern.test(matchedString);\n      });\n    } else {\n      value = findKey(parsePatterns, function (pattern) {\n        return pattern.test(matchedString);\n      });\n    }\n\n    value = args.valueCallback ? args.valueCallback(value) : value;\n    value = options.valueCallback ? options.valueCallback(value) : value;\n    return {\n      value: value,\n      rest: string.slice(matchedString.length)\n    };\n  };\n}\n\nfunction findKey(object, predicate) {\n  for (var key in object) {\n    if (object.hasOwnProperty(key) && predicate(object[key])) {\n      return key;\n    }\n  }\n}\n\nfunction findIndex(array, predicate) {\n  for (var key = 0; key < array.length; key++) {\n    if (predicate(array[key])) {\n      return key;\n    }\n  }\n}","import buildMatchPatternFn from '../../../_lib/buildMatchPatternFn/index.js';\nimport buildMatchFn from '../../../_lib/buildMatchFn/index.js';\nvar matchOrdinalNumberPattern = /^\\d+/i;\nvar parseOrdinalNumberPattern = /\\d+/i;\nvar matchEraPatterns = {\n  narrow: /^([bB]|[aA]|คศ)/i,\n  abbreviated: /^([bB]\\.?\\s?[cC]\\.?|b\\.?\\s?c\\.?\\s?e\\.?|a\\.?\\s?d\\.?|c\\.?\\s?e\\.?|ค\\.?ศ\\.?)/i,\n  wide: /^(ก่อนคริสตกาล|คริสต์ศักราช|คริสตกาล)/i\n};\nvar parseEraPatterns = {\n  any: [/^[bB]/i, /^(^[aA]|ค\\.?ศ\\.?|คริสตกาล|คริสต์ศักราช|)/i]\n};\nvar matchQuarterPatterns = {\n  narrow: /^[1234]/i,\n  abbreviated: /^q[1234]/i,\n  wide: /^ไตรมาส(ที่)? ?[1234]/i\n};\nvar parseQuarterPatterns = {\n  any: [/(1|แรก|หนึ่ง)/i, /(2|สอง)/i, /(3|สาม)/i, /(4|สี่)/i]\n};\nvar matchMonthPatterns = {\n  narrow: /^(ม\\.?ค\\.?|ก\\.?พ\\.?|มี\\.?ค\\.?|เม\\.?ย\\.?|พ\\.?ค\\.?|มิ\\.?ย\\.?|ก\\.?ค\\.?|ส\\.?ค\\.?|ก\\.?ย\\.?|ต\\.?ค\\.?|พ\\.?ย\\.?|ธ\\.?ค\\.?)/i,\n  abbreviated: /^(ม\\.?ค\\.?|ก\\.?พ\\.?|มี\\.?ค\\.?|เม\\.?ย\\.?|พ\\.?ค\\.?|มิ\\.?ย\\.?|ก\\.?ค\\.?|ส\\.?ค\\.?|ก\\.?ย\\.?|ต\\.?ค\\.?|พ\\.?ย\\.?|ธ\\.?ค\\.?')/i,\n  wide: /^(มกราคม|กุมภาพันธ์|มีนาคม|เมษายน|พฤษภาคม|มิถุนายน|กรกฎาคม|สิงหาคม|กันยายน|ตุลาคม|พฤศจิกายน|ธันวาคม)/i\n};\nvar parseMonthPatterns = {\n  wide: [/^มก/i, /^กุม/i, /^มี/i, /^เม/i, /^พฤษ/i, /^มิ/i, /^กรก/i, /^ส/i, /^กัน/i, /^ต/i, /^พฤศ/i, /^ธ/i],\n  any: [/^ม\\.?ค\\.?/i, /^ก\\.?พ\\.?/i, /^มี\\.?ค\\.?/i, /^เม\\.?ย\\.?/i, /^พ\\.?ค\\.?/i, /^มิ\\.?ย\\.?/i, /^ก\\.?ค\\.?/i, /^ส\\.?ค\\.?/i, /^ก\\.?ย\\.?/i, /^ต\\.?ค\\.?/i, /^พ\\.?ย\\.?/i, /^ธ\\.?ค\\.?/i]\n};\nvar matchDayPatterns = {\n  narrow: /^(อา\\.?|จ\\.?|อ\\.?|พฤ\\.?|พ\\.?|ศ\\.?|ส\\.?)/i,\n  short: /^(อา\\.?|จ\\.?|อ\\.?|พฤ\\.?|พ\\.?|ศ\\.?|ส\\.?)/i,\n  abbreviated: /^(อา\\.?|จ\\.?|อ\\.?|พฤ\\.?|พ\\.?|ศ\\.?|ส\\.?)/i,\n  wide: /^(อาทิตย์|จันทร์|อังคาร|พุธ|พฤหัสบดี|ศุกร์|เสาร์)/i\n};\nvar parseDayPatterns = {\n  wide: [/^อา/i, /^จั/i, /^อั/i, /^พุธ/i, /^พฤ/i, /^ศ/i, /^เส/i],\n  any: [/^อา/i, /^จ/i, /^อ/i, /^พ(?!ฤ)/i, /^พฤ/i, /^ศ/i, /^ส/i]\n};\nvar matchDayPeriodPatterns = {\n  any: /^(ก่อนเที่ยง|หลังเที่ยง|เที่ยงคืน|เที่ยง|(ตอน.*?)?.*(เที่ยง|เช้า|บ่าย|เย็น|กลางคืน))/i\n};\nvar parseDayPeriodPatterns = {\n  any: {\n    am: /^ก่อนเที่ยง/i,\n    pm: /^หลังเที่ยง/i,\n    midnight: /^เที่ยงคืน/i,\n    noon: /^เที่ยง/i,\n    morning: /เช้า/i,\n    afternoon: /บ่าย/i,\n    evening: /เย็น/i,\n    night: /กลางคืน/i\n  }\n};\nvar match = {\n  ordinalNumber: buildMatchPatternFn({\n    matchPattern: matchOrdinalNumberPattern,\n    parsePattern: parseOrdinalNumberPattern,\n    valueCallback: function (value) {\n      return parseInt(value, 10);\n    }\n  }),\n  era: buildMatchFn({\n    matchPatterns: matchEraPatterns,\n    defaultMatchWidth: 'wide',\n    parsePatterns: parseEraPatterns,\n    defaultParseWidth: 'any'\n  }),\n  quarter: buildMatchFn({\n    matchPatterns: matchQuarterPatterns,\n    defaultMatchWidth: 'wide',\n    parsePatterns: parseQuarterPatterns,\n    defaultParseWidth: 'any',\n    valueCallback: function (index) {\n      return index + 1;\n    }\n  }),\n  month: buildMatchFn({\n    matchPatterns: matchMonthPatterns,\n    defaultMatchWidth: 'wide',\n    parsePatterns: parseMonthPatterns,\n    defaultParseWidth: 'any'\n  }),\n  day: buildMatchFn({\n    matchPatterns: matchDayPatterns,\n    defaultMatchWidth: 'wide',\n    parsePatterns: parseDayPatterns,\n    defaultParseWidth: 'any'\n  }),\n  dayPeriod: buildMatchFn({\n    matchPatterns: matchDayPeriodPatterns,\n    defaultMatchWidth: 'any',\n    parsePatterns: parseDayPeriodPatterns,\n    defaultParseWidth: 'any'\n  })\n};\nexport default match;","export default function buildMatchPatternFn(args) {\n  return function (dirtyString, dirtyOptions) {\n    var string = String(dirtyString);\n    var options = dirtyOptions || {};\n    var matchResult = string.match(args.matchPattern);\n\n    if (!matchResult) {\n      return null;\n    }\n\n    var matchedString = matchResult[0];\n    var parseResult = string.match(args.parsePattern);\n\n    if (!parseResult) {\n      return null;\n    }\n\n    var value = args.valueCallback ? args.valueCallback(parseResult[0]) : parseResult[0];\n    value = options.valueCallback ? options.valueCallback(value) : value;\n    return {\n      value: value,\n      rest: string.slice(matchedString.length)\n    };\n  };\n}","import formatDistance from './_lib/formatDistance/index.js';\nimport formatLong from './_lib/formatLong/index.js';\nimport formatRelative from './_lib/formatRelative/index.js';\nimport localize from './_lib/localize/index.js';\nimport match from './_lib/match/index.js';\n/**\n * @type {Locale}\n * @category Locales\n * @summary Thai locale.\n * @language Thai\n * @iso-639-2 tha\n * @author Athiwat Hirunworawongkun [@athivvat]{@link https://github.com/athivvat}\n * @author [@hawkup]{@link https://github.com/hawkup}\n * @author  Jirawat I. [@nodtem66]{@link https://github.com/nodtem66}\n */\n\nvar locale = {\n  code: 'th',\n  formatDistance: formatDistance,\n  formatLong: formatLong,\n  formatRelative: formatRelative,\n  localize: localize,\n  match: match,\n  options: {\n    weekStartsOn: 0\n    /* Sunday */\n    ,\n    firstWeekContainsDate: 1\n  }\n};\nexport default locale;","import buildLocalizeFn from '../../../_lib/buildLocalizeFn/index.js';\nvar eraValues = {\n  narrow: ['B', 'คศ'],\n  abbreviated: ['BC', 'ค.ศ.'],\n  wide: ['ปีก่อนคริสตกาล', 'คริสต์ศักราช']\n};\nvar quarterValues = {\n  narrow: ['1', '2', '3', '4'],\n  abbreviated: ['Q1', 'Q2', 'Q3', 'Q4'],\n  wide: ['ไตรมาสแรก', 'ไตรมาสที่สอง', 'ไตรมาสที่สาม', 'ไตรมาสที่สี่']\n};\nvar dayValues = {\n  narrow: ['อา.', 'จ.', 'อ.', 'พ.', 'พฤ.', 'ศ.', 'ส.'],\n  short: ['อา.', 'จ.', 'อ.', 'พ.', 'พฤ.', 'ศ.', 'ส.'],\n  abbreviated: ['อา.', 'จ.', 'อ.', 'พ.', 'พฤ.', 'ศ.', 'ส.'],\n  wide: ['อาทิตย์', 'จันทร์', 'อังคาร', 'พุธ', 'พฤหัสบดี', 'ศุกร์', 'เสาร์']\n};\nvar monthValues = {\n  narrow: ['ม.ค.', 'ก.พ.', 'มี.ค.', 'เม.ย.', 'พ.ค.', 'มิ.ย.', 'ก.ค.', 'ส.ค.', 'ก.ย.', 'ต.ค.', 'พ.ย.', 'ธ.ค.'],\n  abbreviated: ['ม.ค.', 'ก.พ.', 'มี.ค.', 'เม.ย.', 'พ.ค.', 'มิ.ย.', 'ก.ค.', 'ส.ค.', 'ก.ย.', 'ต.ค.', 'พ.ย.', 'ธ.ค.'],\n  wide: ['มกราคม', 'กุมภาพันธ์', 'มีนาคม', 'เมษายน', 'พฤษภาคม', 'มิถุนายน', 'กรกฎาคม', 'สิงหาคม', 'กันยายน', 'ตุลาคม', 'พฤศจิกายน', 'ธันวาคม']\n};\nvar dayPeriodValues = {\n  narrow: {\n    am: 'ก่อนเที่ยง',\n    pm: 'หลังเที่ยง',\n    midnight: 'เที่ยงคืน',\n    noon: 'เที่ยง',\n    morning: 'เช้า',\n    afternoon: 'บ่าย',\n    evening: 'เย็น',\n    night: 'กลางคืน'\n  },\n  abbreviated: {\n    am: 'ก่อนเที่ยง',\n    pm: 'หลังเที่ยง',\n    midnight: 'เที่ยงคืน',\n    noon: 'เที่ยง',\n    morning: 'เช้า',\n    afternoon: 'บ่าย',\n    evening: 'เย็น',\n    night: 'กลางคืน'\n  },\n  wide: {\n    am: 'ก่อนเที่ยง',\n    pm: 'หลังเที่ยง',\n    midnight: 'เที่ยงคืน',\n    noon: 'เที่ยง',\n    morning: 'เช้า',\n    afternoon: 'บ่าย',\n    evening: 'เย็น',\n    night: 'กลางคืน'\n  }\n};\nvar formattingDayPeriodValues = {\n  narrow: {\n    am: 'ก่อนเที่ยง',\n    pm: 'หลังเที่ยง',\n    midnight: 'เที่ยงคืน',\n    noon: 'เที่ยง',\n    morning: 'ตอนเช้า',\n    afternoon: 'ตอนกลางวัน',\n    evening: 'ตอนเย็น',\n    night: 'ตอนกลางคืน'\n  },\n  abbreviated: {\n    am: 'ก่อนเที่ยง',\n    pm: 'หลังเที่ยง',\n    midnight: 'เที่ยงคืน',\n    noon: 'เที่ยง',\n    morning: 'ตอนเช้า',\n    afternoon: 'ตอนกลางวัน',\n    evening: 'ตอนเย็น',\n    night: 'ตอนกลางคืน'\n  },\n  wide: {\n    am: 'ก่อนเที่ยง',\n    pm: 'หลังเที่ยง',\n    midnight: 'เที่ยงคืน',\n    noon: 'เที่ยง',\n    morning: 'ตอนเช้า',\n    afternoon: 'ตอนกลางวัน',\n    evening: 'ตอนเย็น',\n    night: 'ตอนกลางคืน'\n  }\n};\n\nfunction ordinalNumber(dirtyNumber) {\n  var number = Number(dirtyNumber);\n  return number;\n}\n\nvar localize = {\n  ordinalNumber: ordinalNumber,\n  era: buildLocalizeFn({\n    values: eraValues,\n    defaultWidth: 'wide'\n  }),\n  quarter: buildLocalizeFn({\n    values: quarterValues,\n    defaultWidth: 'wide',\n    argumentCallback: function (quarter) {\n      return Number(quarter) - 1;\n    }\n  }),\n  month: buildLocalizeFn({\n    values: monthValues,\n    defaultWidth: 'wide'\n  }),\n  day: buildLocalizeFn({\n    values: dayValues,\n    defaultWidth: 'wide'\n  }),\n  dayPeriod: buildLocalizeFn({\n    values: dayPeriodValues,\n    defaultWidth: 'wide',\n    formattingValues: formattingDayPeriodValues,\n    defaultFormattingWidth: 'wide'\n  })\n};\nexport default localize;","// Thanks idea: https://dev.to/omgovich/the-tiniest-css-in-js-solution-for-your-open-source-react-components-1o94\nimport { useEffect, useLayoutEffect } from \"react\";\n\n// React currently throws a warning when using useLayoutEffect on the server.\n// To get around it, we can conditionally useEffect on the server (no-op) and\n// useLayoutEffect in the browser.\nconst useIsomorphicLayoutEffect =\n  typeof window !== \"undefined\" ? useLayoutEffect : useEffect;\n\n// Bundler is configured to load this as a processed minified CSS-string\nimport styles from \"../external/react-datepicker.css\";\n\nconst styleElementMap = new Map();\nconst getParentDocument = (nodeRef: React.RefObject<null>) => {\n  return nodeRef.current ? nodeRef.current?.[\"ownerDocument\"] : document;\n};\n\n/**\n * Injects CSS code into the document's <head>\n */\nexport const useStylesheet = (\n  nodeRef: React.RefObject<null>,\n  enable: boolean = true\n) => {\n  useIsomorphicLayoutEffect(() => {\n    const parentDocument = getParentDocument(nodeRef);\n\n    if (\n      typeof parentDocument !== \"undefined\" &&\n      !styleElementMap.has(parentDocument) &&\n      enable\n    ) {\n      const styleElement = parentDocument.createElement(\"style\");\n      styleElement.id = \"external_react-datepicker.css\";\n      styleElement.innerHTML = styles as string;\n      styleElementMap.set(parentDocument, styleElement);\n\n      parentDocument.head.appendChild(styleElement);\n    }\n  }, []);\n};\n","function r(e){var t,f,n=\"\";if(\"string\"==typeof e||\"number\"==typeof e)n+=e;else if(\"object\"==typeof e)if(Array.isArray(e)){var o=e.length;for(t=0;t<o;t++)e[t]&&(f=r(e[t]))&&(n&&(n+=\" \"),n+=f)}else for(f in e)e[f]&&(n&&(n+=\" \"),n+=f);return n}export function clsx(){for(var e,t,f=0,n=\"\",o=arguments.length;f<o;f++)(e=arguments[f])&&(t=r(e))&&(n&&(n+=\" \"),n+=t);return n}export default clsx;","const CLASS_PART_SEPARATOR = '-';\nconst createClassGroupUtils = config => {\n  const classMap = createClassMap(config);\n  const {\n    conflictingClassGroups,\n    conflictingClassGroupModifiers\n  } = config;\n  const getClassGroupId = className => {\n    const classParts = className.split(CLASS_PART_SEPARATOR);\n    // Classes like `-inset-1` produce an empty string as first classPart. We assume that classes for negative values are used correctly and remove it from classParts.\n    if (classParts[0] === '' && classParts.length !== 1) {\n      classParts.shift();\n    }\n    return getGroupRecursive(classParts, classMap) || getGroupIdForArbitraryProperty(className);\n  };\n  const getConflictingClassGroupIds = (classGroupId, hasPostfixModifier) => {\n    const conflicts = conflictingClassGroups[classGroupId] || [];\n    if (hasPostfixModifier && conflictingClassGroupModifiers[classGroupId]) {\n      return [...conflicts, ...conflictingClassGroupModifiers[classGroupId]];\n    }\n    return conflicts;\n  };\n  return {\n    getClassGroupId,\n    getConflictingClassGroupIds\n  };\n};\nconst getGroupRecursive = (classParts, classPartObject) => {\n  if (classParts.length === 0) {\n    return classPartObject.classGroupId;\n  }\n  const currentClassPart = classParts[0];\n  const nextClassPartObject = classPartObject.nextPart.get(currentClassPart);\n  const classGroupFromNextClassPart = nextClassPartObject ? getGroupRecursive(classParts.slice(1), nextClassPartObject) : undefined;\n  if (classGroupFromNextClassPart) {\n    return classGroupFromNextClassPart;\n  }\n  if (classPartObject.validators.length === 0) {\n    return undefined;\n  }\n  const classRest = classParts.join(CLASS_PART_SEPARATOR);\n  return classPartObject.validators.find(({\n    validator\n  }) => validator(classRest))?.classGroupId;\n};\nconst arbitraryPropertyRegex = /^\\[(.+)\\]$/;\nconst getGroupIdForArbitraryProperty = className => {\n  if (arbitraryPropertyRegex.test(className)) {\n    const arbitraryPropertyClassName = arbitraryPropertyRegex.exec(className)[1];\n    const property = arbitraryPropertyClassName?.substring(0, arbitraryPropertyClassName.indexOf(':'));\n    if (property) {\n      // I use two dots here because one dot is used as prefix for class groups in plugins\n      return 'arbitrary..' + property;\n    }\n  }\n};\n/**\n * Exported for testing only\n */\nconst createClassMap = config => {\n  const {\n    theme,\n    classGroups\n  } = config;\n  const classMap = {\n    nextPart: new Map(),\n    validators: []\n  };\n  for (const classGroupId in classGroups) {\n    processClassesRecursively(classGroups[classGroupId], classMap, classGroupId, theme);\n  }\n  return classMap;\n};\nconst processClassesRecursively = (classGroup, classPartObject, classGroupId, theme) => {\n  classGroup.forEach(classDefinition => {\n    if (typeof classDefinition === 'string') {\n      const classPartObjectToEdit = classDefinition === '' ? classPartObject : getPart(classPartObject, classDefinition);\n      classPartObjectToEdit.classGroupId = classGroupId;\n      return;\n    }\n    if (typeof classDefinition === 'function') {\n      if (isThemeGetter(classDefinition)) {\n        processClassesRecursively(classDefinition(theme), classPartObject, classGroupId, theme);\n        return;\n      }\n      classPartObject.validators.push({\n        validator: classDefinition,\n        classGroupId\n      });\n      return;\n    }\n    Object.entries(classDefinition).forEach(([key, classGroup]) => {\n      processClassesRecursively(classGroup, getPart(classPartObject, key), classGroupId, theme);\n    });\n  });\n};\nconst getPart = (classPartObject, path) => {\n  let currentClassPartObject = classPartObject;\n  path.split(CLASS_PART_SEPARATOR).forEach(pathPart => {\n    if (!currentClassPartObject.nextPart.has(pathPart)) {\n      currentClassPartObject.nextPart.set(pathPart, {\n        nextPart: new Map(),\n        validators: []\n      });\n    }\n    currentClassPartObject = currentClassPartObject.nextPart.get(pathPart);\n  });\n  return currentClassPartObject;\n};\nconst isThemeGetter = func => func.isThemeGetter;\n\n// LRU cache inspired from hashlru (https://github.com/dominictarr/hashlru/blob/v1.0.4/index.js) but object replaced with Map to improve performance\nconst createLruCache = maxCacheSize => {\n  if (maxCacheSize < 1) {\n    return {\n      get: () => undefined,\n      set: () => {}\n    };\n  }\n  let cacheSize = 0;\n  let cache = new Map();\n  let previousCache = new Map();\n  const update = (key, value) => {\n    cache.set(key, value);\n    cacheSize++;\n    if (cacheSize > maxCacheSize) {\n      cacheSize = 0;\n      previousCache = cache;\n      cache = new Map();\n    }\n  };\n  return {\n    get(key) {\n      let value = cache.get(key);\n      if (value !== undefined) {\n        return value;\n      }\n      if ((value = previousCache.get(key)) !== undefined) {\n        update(key, value);\n        return value;\n      }\n    },\n    set(key, value) {\n      if (cache.has(key)) {\n        cache.set(key, value);\n      } else {\n        update(key, value);\n      }\n    }\n  };\n};\nconst IMPORTANT_MODIFIER = '!';\nconst MODIFIER_SEPARATOR = ':';\nconst MODIFIER_SEPARATOR_LENGTH = MODIFIER_SEPARATOR.length;\nconst createParseClassName = config => {\n  const {\n    prefix,\n    experimentalParseClassName\n  } = config;\n  /**\n   * Parse class name into parts.\n   *\n   * Inspired by `splitAtTopLevelOnly` used in Tailwind CSS\n   * @see https://github.com/tailwindlabs/tailwindcss/blob/v3.2.2/src/util/splitAtTopLevelOnly.js\n   */\n  let parseClassName = className => {\n    const modifiers = [];\n    let bracketDepth = 0;\n    let parenDepth = 0;\n    let modifierStart = 0;\n    let postfixModifierPosition;\n    for (let index = 0; index < className.length; index++) {\n      let currentCharacter = className[index];\n      if (bracketDepth === 0 && parenDepth === 0) {\n        if (currentCharacter === MODIFIER_SEPARATOR) {\n          modifiers.push(className.slice(modifierStart, index));\n          modifierStart = index + MODIFIER_SEPARATOR_LENGTH;\n          continue;\n        }\n        if (currentCharacter === '/') {\n          postfixModifierPosition = index;\n          continue;\n        }\n      }\n      if (currentCharacter === '[') {\n        bracketDepth++;\n      } else if (currentCharacter === ']') {\n        bracketDepth--;\n      } else if (currentCharacter === '(') {\n        parenDepth++;\n      } else if (currentCharacter === ')') {\n        parenDepth--;\n      }\n    }\n    const baseClassNameWithImportantModifier = modifiers.length === 0 ? className : className.substring(modifierStart);\n    const baseClassName = stripImportantModifier(baseClassNameWithImportantModifier);\n    const hasImportantModifier = baseClassName !== baseClassNameWithImportantModifier;\n    const maybePostfixModifierPosition = postfixModifierPosition && postfixModifierPosition > modifierStart ? postfixModifierPosition - modifierStart : undefined;\n    return {\n      modifiers,\n      hasImportantModifier,\n      baseClassName,\n      maybePostfixModifierPosition\n    };\n  };\n  if (prefix) {\n    const fullPrefix = prefix + MODIFIER_SEPARATOR;\n    const parseClassNameOriginal = parseClassName;\n    parseClassName = className => className.startsWith(fullPrefix) ? parseClassNameOriginal(className.substring(fullPrefix.length)) : {\n      isExternal: true,\n      modifiers: [],\n      hasImportantModifier: false,\n      baseClassName: className,\n      maybePostfixModifierPosition: undefined\n    };\n  }\n  if (experimentalParseClassName) {\n    const parseClassNameOriginal = parseClassName;\n    parseClassName = className => experimentalParseClassName({\n      className,\n      parseClassName: parseClassNameOriginal\n    });\n  }\n  return parseClassName;\n};\nconst stripImportantModifier = baseClassName => {\n  if (baseClassName.endsWith(IMPORTANT_MODIFIER)) {\n    return baseClassName.substring(0, baseClassName.length - 1);\n  }\n  /**\n   * In Tailwind CSS v3 the important modifier was at the start of the base class name. This is still supported for legacy reasons.\n   * @see https://github.com/dcastil/tailwind-merge/issues/513#issuecomment-2614029864\n   */\n  if (baseClassName.startsWith(IMPORTANT_MODIFIER)) {\n    return baseClassName.substring(1);\n  }\n  return baseClassName;\n};\n\n/**\n * Sorts modifiers according to following schema:\n * - Predefined modifiers are sorted alphabetically\n * - When an arbitrary variant appears, it must be preserved which modifiers are before and after it\n */\nconst createSortModifiers = config => {\n  const orderSensitiveModifiers = Object.fromEntries(config.orderSensitiveModifiers.map(modifier => [modifier, true]));\n  const sortModifiers = modifiers => {\n    if (modifiers.length <= 1) {\n      return modifiers;\n    }\n    const sortedModifiers = [];\n    let unsortedModifiers = [];\n    modifiers.forEach(modifier => {\n      const isPositionSensitive = modifier[0] === '[' || orderSensitiveModifiers[modifier];\n      if (isPositionSensitive) {\n        sortedModifiers.push(...unsortedModifiers.sort(), modifier);\n        unsortedModifiers = [];\n      } else {\n        unsortedModifiers.push(modifier);\n      }\n    });\n    sortedModifiers.push(...unsortedModifiers.sort());\n    return sortedModifiers;\n  };\n  return sortModifiers;\n};\nconst createConfigUtils = config => ({\n  cache: createLruCache(config.cacheSize),\n  parseClassName: createParseClassName(config),\n  sortModifiers: createSortModifiers(config),\n  ...createClassGroupUtils(config)\n});\nconst SPLIT_CLASSES_REGEX = /\\s+/;\nconst mergeClassList = (classList, configUtils) => {\n  const {\n    parseClassName,\n    getClassGroupId,\n    getConflictingClassGroupIds,\n    sortModifiers\n  } = configUtils;\n  /**\n   * Set of classGroupIds in following format:\n   * `{importantModifier}{variantModifiers}{classGroupId}`\n   * @example 'float'\n   * @example 'hover:focus:bg-color'\n   * @example 'md:!pr'\n   */\n  const classGroupsInConflict = [];\n  const classNames = classList.trim().split(SPLIT_CLASSES_REGEX);\n  let result = '';\n  for (let index = classNames.length - 1; index >= 0; index -= 1) {\n    const originalClassName = classNames[index];\n    const {\n      isExternal,\n      modifiers,\n      hasImportantModifier,\n      baseClassName,\n      maybePostfixModifierPosition\n    } = parseClassName(originalClassName);\n    if (isExternal) {\n      result = originalClassName + (result.length > 0 ? ' ' + result : result);\n      continue;\n    }\n    let hasPostfixModifier = !!maybePostfixModifierPosition;\n    let classGroupId = getClassGroupId(hasPostfixModifier ? baseClassName.substring(0, maybePostfixModifierPosition) : baseClassName);\n    if (!classGroupId) {\n      if (!hasPostfixModifier) {\n        // Not a Tailwind class\n        result = originalClassName + (result.length > 0 ? ' ' + result : result);\n        continue;\n      }\n      classGroupId = getClassGroupId(baseClassName);\n      if (!classGroupId) {\n        // Not a Tailwind class\n        result = originalClassName + (result.length > 0 ? ' ' + result : result);\n        continue;\n      }\n      hasPostfixModifier = false;\n    }\n    const variantModifier = sortModifiers(modifiers).join(':');\n    const modifierId = hasImportantModifier ? variantModifier + IMPORTANT_MODIFIER : variantModifier;\n    const classId = modifierId + classGroupId;\n    if (classGroupsInConflict.includes(classId)) {\n      // Tailwind class omitted due to conflict\n      continue;\n    }\n    classGroupsInConflict.push(classId);\n    const conflictGroups = getConflictingClassGroupIds(classGroupId, hasPostfixModifier);\n    for (let i = 0; i < conflictGroups.length; ++i) {\n      const group = conflictGroups[i];\n      classGroupsInConflict.push(modifierId + group);\n    }\n    // Tailwind class not in conflict\n    result = originalClassName + (result.length > 0 ? ' ' + result : result);\n  }\n  return result;\n};\n\n/**\n * The code in this file is copied from https://github.com/lukeed/clsx and modified to suit the needs of tailwind-merge better.\n *\n * Specifically:\n * - Runtime code from https://github.com/lukeed/clsx/blob/v1.2.1/src/index.js\n * - TypeScript types from https://github.com/lukeed/clsx/blob/v1.2.1/clsx.d.ts\n *\n * Original code has MIT license: Copyright (c) Luke Edwards <luke.edwards05@gmail.com> (lukeed.com)\n */\nfunction twJoin() {\n  let index = 0;\n  let argument;\n  let resolvedValue;\n  let string = '';\n  while (index < arguments.length) {\n    if (argument = arguments[index++]) {\n      if (resolvedValue = toValue(argument)) {\n        string && (string += ' ');\n        string += resolvedValue;\n      }\n    }\n  }\n  return string;\n}\nconst toValue = mix => {\n  if (typeof mix === 'string') {\n    return mix;\n  }\n  let resolvedValue;\n  let string = '';\n  for (let k = 0; k < mix.length; k++) {\n    if (mix[k]) {\n      if (resolvedValue = toValue(mix[k])) {\n        string && (string += ' ');\n        string += resolvedValue;\n      }\n    }\n  }\n  return string;\n};\nfunction createTailwindMerge(createConfigFirst, ...createConfigRest) {\n  let configUtils;\n  let cacheGet;\n  let cacheSet;\n  let functionToCall = initTailwindMerge;\n  function initTailwindMerge(classList) {\n    const config = createConfigRest.reduce((previousConfig, createConfigCurrent) => createConfigCurrent(previousConfig), createConfigFirst());\n    configUtils = createConfigUtils(config);\n    cacheGet = configUtils.cache.get;\n    cacheSet = configUtils.cache.set;\n    functionToCall = tailwindMerge;\n    return tailwindMerge(classList);\n  }\n  function tailwindMerge(classList) {\n    const cachedResult = cacheGet(classList);\n    if (cachedResult) {\n      return cachedResult;\n    }\n    const result = mergeClassList(classList, configUtils);\n    cacheSet(classList, result);\n    return result;\n  }\n  return function callTailwindMerge() {\n    return functionToCall(twJoin.apply(null, arguments));\n  };\n}\nconst fromTheme = key => {\n  const themeGetter = theme => theme[key] || [];\n  themeGetter.isThemeGetter = true;\n  return themeGetter;\n};\nconst arbitraryValueRegex = /^\\[(?:(\\w[\\w-]*):)?(.+)\\]$/i;\nconst arbitraryVariableRegex = /^\\((?:(\\w[\\w-]*):)?(.+)\\)$/i;\nconst fractionRegex = /^\\d+\\/\\d+$/;\nconst tshirtUnitRegex = /^(\\d+(\\.\\d+)?)?(xs|sm|md|lg|xl)$/;\nconst lengthUnitRegex = /\\d+(%|px|r?em|[sdl]?v([hwib]|min|max)|pt|pc|in|cm|mm|cap|ch|ex|r?lh|cq(w|h|i|b|min|max))|\\b(calc|min|max|clamp)\\(.+\\)|^0$/;\nconst colorFunctionRegex = /^(rgba?|hsla?|hwb|(ok)?(lab|lch))\\(.+\\)$/;\n// Shadow always begins with x and y offset separated by underscore optionally prepended by inset\nconst shadowRegex = /^(inset_)?-?((\\d+)?\\.?(\\d+)[a-z]+|0)_-?((\\d+)?\\.?(\\d+)[a-z]+|0)/;\nconst imageRegex = /^(url|image|image-set|cross-fade|element|(repeating-)?(linear|radial|conic)-gradient)\\(.+\\)$/;\nconst isFraction = value => fractionRegex.test(value);\nconst isNumber = value => Boolean(value) && !Number.isNaN(Number(value));\nconst isInteger = value => Boolean(value) && Number.isInteger(Number(value));\nconst isPercent = value => value.endsWith('%') && isNumber(value.slice(0, -1));\nconst isTshirtSize = value => tshirtUnitRegex.test(value);\nconst isAny = () => true;\nconst isLengthOnly = value =>\n// `colorFunctionRegex` check is necessary because color functions can have percentages in them which which would be incorrectly classified as lengths.\n// For example, `hsl(0 0% 0%)` would be classified as a length without this check.\n// I could also use lookbehind assertion in `lengthUnitRegex` but that isn't supported widely enough.\nlengthUnitRegex.test(value) && !colorFunctionRegex.test(value);\nconst isNever = () => false;\nconst isShadow = value => shadowRegex.test(value);\nconst isImage = value => imageRegex.test(value);\nconst isAnyNonArbitrary = value => !isArbitraryValue(value) && !isArbitraryVariable(value);\nconst isArbitrarySize = value => getIsArbitraryValue(value, isLabelSize, isNever);\nconst isArbitraryValue = value => arbitraryValueRegex.test(value);\nconst isArbitraryLength = value => getIsArbitraryValue(value, isLabelLength, isLengthOnly);\nconst isArbitraryNumber = value => getIsArbitraryValue(value, isLabelNumber, isNumber);\nconst isArbitraryPosition = value => getIsArbitraryValue(value, isLabelPosition, isNever);\nconst isArbitraryImage = value => getIsArbitraryValue(value, isLabelImage, isImage);\nconst isArbitraryShadow = value => getIsArbitraryValue(value, isNever, isShadow);\nconst isArbitraryVariable = value => arbitraryVariableRegex.test(value);\nconst isArbitraryVariableLength = value => getIsArbitraryVariable(value, isLabelLength);\nconst isArbitraryVariableFamilyName = value => getIsArbitraryVariable(value, isLabelFamilyName);\nconst isArbitraryVariablePosition = value => getIsArbitraryVariable(value, isLabelPosition);\nconst isArbitraryVariableSize = value => getIsArbitraryVariable(value, isLabelSize);\nconst isArbitraryVariableImage = value => getIsArbitraryVariable(value, isLabelImage);\nconst isArbitraryVariableShadow = value => getIsArbitraryVariable(value, isLabelShadow, true);\n// Helpers\nconst getIsArbitraryValue = (value, testLabel, testValue) => {\n  const result = arbitraryValueRegex.exec(value);\n  if (result) {\n    if (result[1]) {\n      return testLabel(result[1]);\n    }\n    return testValue(result[2]);\n  }\n  return false;\n};\nconst getIsArbitraryVariable = (value, testLabel, shouldMatchNoLabel = false) => {\n  const result = arbitraryVariableRegex.exec(value);\n  if (result) {\n    if (result[1]) {\n      return testLabel(result[1]);\n    }\n    return shouldMatchNoLabel;\n  }\n  return false;\n};\n// Labels\nconst isLabelPosition = label => label === 'position';\nconst imageLabels = /*#__PURE__*/new Set(['image', 'url']);\nconst isLabelImage = label => imageLabels.has(label);\nconst sizeLabels = /*#__PURE__*/new Set(['length', 'size', 'percentage']);\nconst isLabelSize = label => sizeLabels.has(label);\nconst isLabelLength = label => label === 'length';\nconst isLabelNumber = label => label === 'number';\nconst isLabelFamilyName = label => label === 'family-name';\nconst isLabelShadow = label => label === 'shadow';\nconst validators = /*#__PURE__*/Object.defineProperty({\n  __proto__: null,\n  isAny,\n  isAnyNonArbitrary,\n  isArbitraryImage,\n  isArbitraryLength,\n  isArbitraryNumber,\n  isArbitraryPosition,\n  isArbitraryShadow,\n  isArbitrarySize,\n  isArbitraryValue,\n  isArbitraryVariable,\n  isArbitraryVariableFamilyName,\n  isArbitraryVariableImage,\n  isArbitraryVariableLength,\n  isArbitraryVariablePosition,\n  isArbitraryVariableShadow,\n  isArbitraryVariableSize,\n  isFraction,\n  isInteger,\n  isNumber,\n  isPercent,\n  isTshirtSize\n}, Symbol.toStringTag, {\n  value: 'Module'\n});\nconst getDefaultConfig = () => {\n  /**\n   * Theme getters for theme variable namespaces\n   * @see https://tailwindcss.com/docs/theme#theme-variable-namespaces\n   */\n  /***/\n  const themeColor = fromTheme('color');\n  const themeFont = fromTheme('font');\n  const themeText = fromTheme('text');\n  const themeFontWeight = fromTheme('font-weight');\n  const themeTracking = fromTheme('tracking');\n  const themeLeading = fromTheme('leading');\n  const themeBreakpoint = fromTheme('breakpoint');\n  const themeContainer = fromTheme('container');\n  const themeSpacing = fromTheme('spacing');\n  const themeRadius = fromTheme('radius');\n  const themeShadow = fromTheme('shadow');\n  const themeInsetShadow = fromTheme('inset-shadow');\n  const themeDropShadow = fromTheme('drop-shadow');\n  const themeBlur = fromTheme('blur');\n  const themePerspective = fromTheme('perspective');\n  const themeAspect = fromTheme('aspect');\n  const themeEase = fromTheme('ease');\n  const themeAnimate = fromTheme('animate');\n  /**\n   * Helpers to avoid repeating the same scales\n   *\n   * We use functions that create a new array every time they're called instead of static arrays.\n   * This ensures that users who modify any scale by mutating the array (e.g. with `array.push(element)`) don't accidentally mutate arrays in other parts of the config.\n   */\n  /***/\n  const scaleBreak = () => ['auto', 'avoid', 'all', 'avoid-page', 'page', 'left', 'right', 'column'];\n  const scalePosition = () => ['bottom', 'center', 'left', 'left-bottom', 'left-top', 'right', 'right-bottom', 'right-top', 'top'];\n  const scaleOverflow = () => ['auto', 'hidden', 'clip', 'visible', 'scroll'];\n  const scaleOverscroll = () => ['auto', 'contain', 'none'];\n  const scaleInset = () => [isFraction, 'px', 'full', 'auto', isArbitraryVariable, isArbitraryValue, themeSpacing];\n  const scaleGridTemplateColsRows = () => [isInteger, 'none', 'subgrid', isArbitraryVariable, isArbitraryValue];\n  const scaleGridColRowStartAndEnd = () => ['auto', {\n    span: ['full', isInteger, isArbitraryVariable, isArbitraryValue]\n  }, isArbitraryVariable, isArbitraryValue];\n  const scaleGridColRowStartOrEnd = () => [isInteger, 'auto', isArbitraryVariable, isArbitraryValue];\n  const scaleGridAutoColsRows = () => ['auto', 'min', 'max', 'fr', isArbitraryVariable, isArbitraryValue];\n  const scaleGap = () => [isArbitraryVariable, isArbitraryValue, themeSpacing];\n  const scaleAlignPrimaryAxis = () => ['start', 'end', 'center', 'between', 'around', 'evenly', 'stretch', 'baseline'];\n  const scaleAlignSecondaryAxis = () => ['start', 'end', 'center', 'stretch'];\n  const scaleUnambiguousSpacing = () => [isArbitraryVariable, isArbitraryValue, themeSpacing];\n  const scalePadding = () => ['px', ...scaleUnambiguousSpacing()];\n  const scaleMargin = () => ['px', 'auto', ...scaleUnambiguousSpacing()];\n  const scaleSizing = () => [isFraction, 'auto', 'px', 'full', 'dvw', 'dvh', 'lvw', 'lvh', 'svw', 'svh', 'min', 'max', 'fit', isArbitraryVariable, isArbitraryValue, themeSpacing];\n  const scaleColor = () => [themeColor, isArbitraryVariable, isArbitraryValue];\n  const scaleGradientStopPosition = () => [isPercent, isArbitraryLength];\n  const scaleRadius = () => [\n  // Deprecated since Tailwind CSS v4.0.0\n  '', 'none', 'full', themeRadius, isArbitraryVariable, isArbitraryValue];\n  const scaleBorderWidth = () => ['', isNumber, isArbitraryVariableLength, isArbitraryLength];\n  const scaleLineStyle = () => ['solid', 'dashed', 'dotted', 'double'];\n  const scaleBlendMode = () => ['normal', 'multiply', 'screen', 'overlay', 'darken', 'lighten', 'color-dodge', 'color-burn', 'hard-light', 'soft-light', 'difference', 'exclusion', 'hue', 'saturation', 'color', 'luminosity'];\n  const scaleBlur = () => [\n  // Deprecated since Tailwind CSS v4.0.0\n  '', 'none', themeBlur, isArbitraryVariable, isArbitraryValue];\n  const scaleOrigin = () => ['center', 'top', 'top-right', 'right', 'bottom-right', 'bottom', 'bottom-left', 'left', 'top-left', isArbitraryVariable, isArbitraryValue];\n  const scaleRotate = () => ['none', isNumber, isArbitraryVariable, isArbitraryValue];\n  const scaleScale = () => ['none', isNumber, isArbitraryVariable, isArbitraryValue];\n  const scaleSkew = () => [isNumber, isArbitraryVariable, isArbitraryValue];\n  const scaleTranslate = () => [isFraction, 'full', 'px', isArbitraryVariable, isArbitraryValue, themeSpacing];\n  return {\n    cacheSize: 500,\n    theme: {\n      animate: ['spin', 'ping', 'pulse', 'bounce'],\n      aspect: ['video'],\n      blur: [isTshirtSize],\n      breakpoint: [isTshirtSize],\n      color: [isAny],\n      container: [isTshirtSize],\n      'drop-shadow': [isTshirtSize],\n      ease: ['in', 'out', 'in-out'],\n      font: [isAnyNonArbitrary],\n      'font-weight': ['thin', 'extralight', 'light', 'normal', 'medium', 'semibold', 'bold', 'extrabold', 'black'],\n      'inset-shadow': [isTshirtSize],\n      leading: ['none', 'tight', 'snug', 'normal', 'relaxed', 'loose'],\n      perspective: ['dramatic', 'near', 'normal', 'midrange', 'distant', 'none'],\n      radius: [isTshirtSize],\n      shadow: [isTshirtSize],\n      spacing: [isNumber],\n      text: [isTshirtSize],\n      tracking: ['tighter', 'tight', 'normal', 'wide', 'wider', 'widest']\n    },\n    classGroups: {\n      // --------------\n      // --- Layout ---\n      // --------------\n      /**\n       * Aspect Ratio\n       * @see https://tailwindcss.com/docs/aspect-ratio\n       */\n      aspect: [{\n        aspect: ['auto', 'square', isFraction, isArbitraryValue, isArbitraryVariable, themeAspect]\n      }],\n      /**\n       * Container\n       * @see https://tailwindcss.com/docs/container\n       * @deprecated since Tailwind CSS v4.0.0\n       */\n      container: ['container'],\n      /**\n       * Columns\n       * @see https://tailwindcss.com/docs/columns\n       */\n      columns: [{\n        columns: [isNumber, isArbitraryValue, isArbitraryVariable, themeContainer]\n      }],\n      /**\n       * Break After\n       * @see https://tailwindcss.com/docs/break-after\n       */\n      'break-after': [{\n        'break-after': scaleBreak()\n      }],\n      /**\n       * Break Before\n       * @see https://tailwindcss.com/docs/break-before\n       */\n      'break-before': [{\n        'break-before': scaleBreak()\n      }],\n      /**\n       * Break Inside\n       * @see https://tailwindcss.com/docs/break-inside\n       */\n      'break-inside': [{\n        'break-inside': ['auto', 'avoid', 'avoid-page', 'avoid-column']\n      }],\n      /**\n       * Box Decoration Break\n       * @see https://tailwindcss.com/docs/box-decoration-break\n       */\n      'box-decoration': [{\n        'box-decoration': ['slice', 'clone']\n      }],\n      /**\n       * Box Sizing\n       * @see https://tailwindcss.com/docs/box-sizing\n       */\n      box: [{\n        box: ['border', 'content']\n      }],\n      /**\n       * Display\n       * @see https://tailwindcss.com/docs/display\n       */\n      display: ['block', 'inline-block', 'inline', 'flex', 'inline-flex', 'table', 'inline-table', 'table-caption', 'table-cell', 'table-column', 'table-column-group', 'table-footer-group', 'table-header-group', 'table-row-group', 'table-row', 'flow-root', 'grid', 'inline-grid', 'contents', 'list-item', 'hidden'],\n      /**\n       * Screen Reader Only\n       * @see https://tailwindcss.com/docs/display#screen-reader-only\n       */\n      sr: ['sr-only', 'not-sr-only'],\n      /**\n       * Floats\n       * @see https://tailwindcss.com/docs/float\n       */\n      float: [{\n        float: ['right', 'left', 'none', 'start', 'end']\n      }],\n      /**\n       * Clear\n       * @see https://tailwindcss.com/docs/clear\n       */\n      clear: [{\n        clear: ['left', 'right', 'both', 'none', 'start', 'end']\n      }],\n      /**\n       * Isolation\n       * @see https://tailwindcss.com/docs/isolation\n       */\n      isolation: ['isolate', 'isolation-auto'],\n      /**\n       * Object Fit\n       * @see https://tailwindcss.com/docs/object-fit\n       */\n      'object-fit': [{\n        object: ['contain', 'cover', 'fill', 'none', 'scale-down']\n      }],\n      /**\n       * Object Position\n       * @see https://tailwindcss.com/docs/object-position\n       */\n      'object-position': [{\n        object: [...scalePosition(), isArbitraryValue, isArbitraryVariable]\n      }],\n      /**\n       * Overflow\n       * @see https://tailwindcss.com/docs/overflow\n       */\n      overflow: [{\n        overflow: scaleOverflow()\n      }],\n      /**\n       * Overflow X\n       * @see https://tailwindcss.com/docs/overflow\n       */\n      'overflow-x': [{\n        'overflow-x': scaleOverflow()\n      }],\n      /**\n       * Overflow Y\n       * @see https://tailwindcss.com/docs/overflow\n       */\n      'overflow-y': [{\n        'overflow-y': scaleOverflow()\n      }],\n      /**\n       * Overscroll Behavior\n       * @see https://tailwindcss.com/docs/overscroll-behavior\n       */\n      overscroll: [{\n        overscroll: scaleOverscroll()\n      }],\n      /**\n       * Overscroll Behavior X\n       * @see https://tailwindcss.com/docs/overscroll-behavior\n       */\n      'overscroll-x': [{\n        'overscroll-x': scaleOverscroll()\n      }],\n      /**\n       * Overscroll Behavior Y\n       * @see https://tailwindcss.com/docs/overscroll-behavior\n       */\n      'overscroll-y': [{\n        'overscroll-y': scaleOverscroll()\n      }],\n      /**\n       * Position\n       * @see https://tailwindcss.com/docs/position\n       */\n      position: ['static', 'fixed', 'absolute', 'relative', 'sticky'],\n      /**\n       * Top / Right / Bottom / Left\n       * @see https://tailwindcss.com/docs/top-right-bottom-left\n       */\n      inset: [{\n        inset: scaleInset()\n      }],\n      /**\n       * Right / Left\n       * @see https://tailwindcss.com/docs/top-right-bottom-left\n       */\n      'inset-x': [{\n        'inset-x': scaleInset()\n      }],\n      /**\n       * Top / Bottom\n       * @see https://tailwindcss.com/docs/top-right-bottom-left\n       */\n      'inset-y': [{\n        'inset-y': scaleInset()\n      }],\n      /**\n       * Start\n       * @see https://tailwindcss.com/docs/top-right-bottom-left\n       */\n      start: [{\n        start: scaleInset()\n      }],\n      /**\n       * End\n       * @see https://tailwindcss.com/docs/top-right-bottom-left\n       */\n      end: [{\n        end: scaleInset()\n      }],\n      /**\n       * Top\n       * @see https://tailwindcss.com/docs/top-right-bottom-left\n       */\n      top: [{\n        top: scaleInset()\n      }],\n      /**\n       * Right\n       * @see https://tailwindcss.com/docs/top-right-bottom-left\n       */\n      right: [{\n        right: scaleInset()\n      }],\n      /**\n       * Bottom\n       * @see https://tailwindcss.com/docs/top-right-bottom-left\n       */\n      bottom: [{\n        bottom: scaleInset()\n      }],\n      /**\n       * Left\n       * @see https://tailwindcss.com/docs/top-right-bottom-left\n       */\n      left: [{\n        left: scaleInset()\n      }],\n      /**\n       * Visibility\n       * @see https://tailwindcss.com/docs/visibility\n       */\n      visibility: ['visible', 'invisible', 'collapse'],\n      /**\n       * Z-Index\n       * @see https://tailwindcss.com/docs/z-index\n       */\n      z: [{\n        z: [isInteger, 'auto', isArbitraryVariable, isArbitraryValue]\n      }],\n      // ------------------------\n      // --- Flexbox and Grid ---\n      // ------------------------\n      /**\n       * Flex Basis\n       * @see https://tailwindcss.com/docs/flex-basis\n       */\n      basis: [{\n        basis: [isFraction, 'full', 'auto', isArbitraryVariable, isArbitraryValue, themeContainer, themeSpacing]\n      }],\n      /**\n       * Flex Direction\n       * @see https://tailwindcss.com/docs/flex-direction\n       */\n      'flex-direction': [{\n        flex: ['row', 'row-reverse', 'col', 'col-reverse']\n      }],\n      /**\n       * Flex Wrap\n       * @see https://tailwindcss.com/docs/flex-wrap\n       */\n      'flex-wrap': [{\n        flex: ['nowrap', 'wrap', 'wrap-reverse']\n      }],\n      /**\n       * Flex\n       * @see https://tailwindcss.com/docs/flex\n       */\n      flex: [{\n        flex: [isNumber, isFraction, 'auto', 'initial', 'none', isArbitraryValue]\n      }],\n      /**\n       * Flex Grow\n       * @see https://tailwindcss.com/docs/flex-grow\n       */\n      grow: [{\n        grow: ['', isNumber, isArbitraryVariable, isArbitraryValue]\n      }],\n      /**\n       * Flex Shrink\n       * @see https://tailwindcss.com/docs/flex-shrink\n       */\n      shrink: [{\n        shrink: ['', isNumber, isArbitraryVariable, isArbitraryValue]\n      }],\n      /**\n       * Order\n       * @see https://tailwindcss.com/docs/order\n       */\n      order: [{\n        order: [isInteger, 'first', 'last', 'none', isArbitraryVariable, isArbitraryValue]\n      }],\n      /**\n       * Grid Template Columns\n       * @see https://tailwindcss.com/docs/grid-template-columns\n       */\n      'grid-cols': [{\n        'grid-cols': scaleGridTemplateColsRows()\n      }],\n      /**\n       * Grid Column Start / End\n       * @see https://tailwindcss.com/docs/grid-column\n       */\n      'col-start-end': [{\n        col: scaleGridColRowStartAndEnd()\n      }],\n      /**\n       * Grid Column Start\n       * @see https://tailwindcss.com/docs/grid-column\n       */\n      'col-start': [{\n        'col-start': scaleGridColRowStartOrEnd()\n      }],\n      /**\n       * Grid Column End\n       * @see https://tailwindcss.com/docs/grid-column\n       */\n      'col-end': [{\n        'col-end': scaleGridColRowStartOrEnd()\n      }],\n      /**\n       * Grid Template Rows\n       * @see https://tailwindcss.com/docs/grid-template-rows\n       */\n      'grid-rows': [{\n        'grid-rows': scaleGridTemplateColsRows()\n      }],\n      /**\n       * Grid Row Start / End\n       * @see https://tailwindcss.com/docs/grid-row\n       */\n      'row-start-end': [{\n        row: scaleGridColRowStartAndEnd()\n      }],\n      /**\n       * Grid Row Start\n       * @see https://tailwindcss.com/docs/grid-row\n       */\n      'row-start': [{\n        'row-start': scaleGridColRowStartOrEnd()\n      }],\n      /**\n       * Grid Row End\n       * @see https://tailwindcss.com/docs/grid-row\n       */\n      'row-end': [{\n        'row-end': scaleGridColRowStartOrEnd()\n      }],\n      /**\n       * Grid Auto Flow\n       * @see https://tailwindcss.com/docs/grid-auto-flow\n       */\n      'grid-flow': [{\n        'grid-flow': ['row', 'col', 'dense', 'row-dense', 'col-dense']\n      }],\n      /**\n       * Grid Auto Columns\n       * @see https://tailwindcss.com/docs/grid-auto-columns\n       */\n      'auto-cols': [{\n        'auto-cols': scaleGridAutoColsRows()\n      }],\n      /**\n       * Grid Auto Rows\n       * @see https://tailwindcss.com/docs/grid-auto-rows\n       */\n      'auto-rows': [{\n        'auto-rows': scaleGridAutoColsRows()\n      }],\n      /**\n       * Gap\n       * @see https://tailwindcss.com/docs/gap\n       */\n      gap: [{\n        gap: scaleGap()\n      }],\n      /**\n       * Gap X\n       * @see https://tailwindcss.com/docs/gap\n       */\n      'gap-x': [{\n        'gap-x': scaleGap()\n      }],\n      /**\n       * Gap Y\n       * @see https://tailwindcss.com/docs/gap\n       */\n      'gap-y': [{\n        'gap-y': scaleGap()\n      }],\n      /**\n       * Justify Content\n       * @see https://tailwindcss.com/docs/justify-content\n       */\n      'justify-content': [{\n        justify: [...scaleAlignPrimaryAxis(), 'normal']\n      }],\n      /**\n       * Justify Items\n       * @see https://tailwindcss.com/docs/justify-items\n       */\n      'justify-items': [{\n        'justify-items': [...scaleAlignSecondaryAxis(), 'normal']\n      }],\n      /**\n       * Justify Self\n       * @see https://tailwindcss.com/docs/justify-self\n       */\n      'justify-self': [{\n        'justify-self': ['auto', ...scaleAlignSecondaryAxis()]\n      }],\n      /**\n       * Align Content\n       * @see https://tailwindcss.com/docs/align-content\n       */\n      'align-content': [{\n        content: ['normal', ...scaleAlignPrimaryAxis()]\n      }],\n      /**\n       * Align Items\n       * @see https://tailwindcss.com/docs/align-items\n       */\n      'align-items': [{\n        items: [...scaleAlignSecondaryAxis(), 'baseline']\n      }],\n      /**\n       * Align Self\n       * @see https://tailwindcss.com/docs/align-self\n       */\n      'align-self': [{\n        self: ['auto', ...scaleAlignSecondaryAxis(), 'baseline']\n      }],\n      /**\n       * Place Content\n       * @see https://tailwindcss.com/docs/place-content\n       */\n      'place-content': [{\n        'place-content': scaleAlignPrimaryAxis()\n      }],\n      /**\n       * Place Items\n       * @see https://tailwindcss.com/docs/place-items\n       */\n      'place-items': [{\n        'place-items': [...scaleAlignSecondaryAxis(), 'baseline']\n      }],\n      /**\n       * Place Self\n       * @see https://tailwindcss.com/docs/place-self\n       */\n      'place-self': [{\n        'place-self': ['auto', ...scaleAlignSecondaryAxis()]\n      }],\n      // Spacing\n      /**\n       * Padding\n       * @see https://tailwindcss.com/docs/padding\n       */\n      p: [{\n        p: scalePadding()\n      }],\n      /**\n       * Padding X\n       * @see https://tailwindcss.com/docs/padding\n       */\n      px: [{\n        px: scalePadding()\n      }],\n      /**\n       * Padding Y\n       * @see https://tailwindcss.com/docs/padding\n       */\n      py: [{\n        py: scalePadding()\n      }],\n      /**\n       * Padding Start\n       * @see https://tailwindcss.com/docs/padding\n       */\n      ps: [{\n        ps: scalePadding()\n      }],\n      /**\n       * Padding End\n       * @see https://tailwindcss.com/docs/padding\n       */\n      pe: [{\n        pe: scalePadding()\n      }],\n      /**\n       * Padding Top\n       * @see https://tailwindcss.com/docs/padding\n       */\n      pt: [{\n        pt: scalePadding()\n      }],\n      /**\n       * Padding Right\n       * @see https://tailwindcss.com/docs/padding\n       */\n      pr: [{\n        pr: scalePadding()\n      }],\n      /**\n       * Padding Bottom\n       * @see https://tailwindcss.com/docs/padding\n       */\n      pb: [{\n        pb: scalePadding()\n      }],\n      /**\n       * Padding Left\n       * @see https://tailwindcss.com/docs/padding\n       */\n      pl: [{\n        pl: scalePadding()\n      }],\n      /**\n       * Margin\n       * @see https://tailwindcss.com/docs/margin\n       */\n      m: [{\n        m: scaleMargin()\n      }],\n      /**\n       * Margin X\n       * @see https://tailwindcss.com/docs/margin\n       */\n      mx: [{\n        mx: scaleMargin()\n      }],\n      /**\n       * Margin Y\n       * @see https://tailwindcss.com/docs/margin\n       */\n      my: [{\n        my: scaleMargin()\n      }],\n      /**\n       * Margin Start\n       * @see https://tailwindcss.com/docs/margin\n       */\n      ms: [{\n        ms: scaleMargin()\n      }],\n      /**\n       * Margin End\n       * @see https://tailwindcss.com/docs/margin\n       */\n      me: [{\n        me: scaleMargin()\n      }],\n      /**\n       * Margin Top\n       * @see https://tailwindcss.com/docs/margin\n       */\n      mt: [{\n        mt: scaleMargin()\n      }],\n      /**\n       * Margin Right\n       * @see https://tailwindcss.com/docs/margin\n       */\n      mr: [{\n        mr: scaleMargin()\n      }],\n      /**\n       * Margin Bottom\n       * @see https://tailwindcss.com/docs/margin\n       */\n      mb: [{\n        mb: scaleMargin()\n      }],\n      /**\n       * Margin Left\n       * @see https://tailwindcss.com/docs/margin\n       */\n      ml: [{\n        ml: scaleMargin()\n      }],\n      /**\n       * Space Between X\n       * @see https://tailwindcss.com/docs/margin#adding-space-between-children\n       */\n      'space-x': [{\n        'space-x': scaleUnambiguousSpacing()\n      }],\n      /**\n       * Space Between X Reverse\n       * @see https://tailwindcss.com/docs/margin#adding-space-between-children\n       */\n      'space-x-reverse': ['space-x-reverse'],\n      /**\n       * Space Between Y\n       * @see https://tailwindcss.com/docs/margin#adding-space-between-children\n       */\n      'space-y': [{\n        'space-y': scaleUnambiguousSpacing()\n      }],\n      /**\n       * Space Between Y Reverse\n       * @see https://tailwindcss.com/docs/margin#adding-space-between-children\n       */\n      'space-y-reverse': ['space-y-reverse'],\n      // --------------\n      // --- Sizing ---\n      // --------------\n      /**\n       * Width\n       * @see https://tailwindcss.com/docs/width\n       */\n      /**\n       * Size\n       * @see https://tailwindcss.com/docs/width#setting-both-width-and-height\n       */\n      size: [{\n        size: scaleSizing()\n      }],\n      w: [{\n        w: [themeContainer, 'screen', ...scaleSizing()]\n      }],\n      /**\n       * Min-Width\n       * @see https://tailwindcss.com/docs/min-width\n       */\n      'min-w': [{\n        'min-w': [themeContainer, 'screen', /** Deprecated. @see https://github.com/tailwindlabs/tailwindcss.com/issues/2027#issuecomment-2620152757 */\n        'none', ...scaleSizing()]\n      }],\n      /**\n       * Max-Width\n       * @see https://tailwindcss.com/docs/max-width\n       */\n      'max-w': [{\n        'max-w': [themeContainer, 'screen', 'none', /** Deprecated since Tailwind CSS v4.0.0. @see https://github.com/tailwindlabs/tailwindcss.com/issues/2027#issuecomment-2620152757 */\n        'prose', /** Deprecated since Tailwind CSS v4.0.0. @see https://github.com/tailwindlabs/tailwindcss.com/issues/2027#issuecomment-2620152757 */\n        {\n          screen: [themeBreakpoint]\n        }, ...scaleSizing()]\n      }],\n      /**\n       * Height\n       * @see https://tailwindcss.com/docs/height\n       */\n      h: [{\n        h: ['screen', ...scaleSizing()]\n      }],\n      /**\n       * Min-Height\n       * @see https://tailwindcss.com/docs/min-height\n       */\n      'min-h': [{\n        'min-h': ['screen', 'none', ...scaleSizing()]\n      }],\n      /**\n       * Max-Height\n       * @see https://tailwindcss.com/docs/max-height\n       */\n      'max-h': [{\n        'max-h': ['screen', ...scaleSizing()]\n      }],\n      // ------------------\n      // --- Typography ---\n      // ------------------\n      /**\n       * Font Size\n       * @see https://tailwindcss.com/docs/font-size\n       */\n      'font-size': [{\n        text: ['base', themeText, isArbitraryVariableLength, isArbitraryLength]\n      }],\n      /**\n       * Font Smoothing\n       * @see https://tailwindcss.com/docs/font-smoothing\n       */\n      'font-smoothing': ['antialiased', 'subpixel-antialiased'],\n      /**\n       * Font Style\n       * @see https://tailwindcss.com/docs/font-style\n       */\n      'font-style': ['italic', 'not-italic'],\n      /**\n       * Font Weight\n       * @see https://tailwindcss.com/docs/font-weight\n       */\n      'font-weight': [{\n        font: [themeFontWeight, isArbitraryVariable, isArbitraryNumber]\n      }],\n      /**\n       * Font Stretch\n       * @see https://tailwindcss.com/docs/font-stretch\n       */\n      'font-stretch': [{\n        'font-stretch': ['ultra-condensed', 'extra-condensed', 'condensed', 'semi-condensed', 'normal', 'semi-expanded', 'expanded', 'extra-expanded', 'ultra-expanded', isPercent, isArbitraryValue]\n      }],\n      /**\n       * Font Family\n       * @see https://tailwindcss.com/docs/font-family\n       */\n      'font-family': [{\n        font: [isArbitraryVariableFamilyName, isArbitraryValue, themeFont]\n      }],\n      /**\n       * Font Variant Numeric\n       * @see https://tailwindcss.com/docs/font-variant-numeric\n       */\n      'fvn-normal': ['normal-nums'],\n      /**\n       * Font Variant Numeric\n       * @see https://tailwindcss.com/docs/font-variant-numeric\n       */\n      'fvn-ordinal': ['ordinal'],\n      /**\n       * Font Variant Numeric\n       * @see https://tailwindcss.com/docs/font-variant-numeric\n       */\n      'fvn-slashed-zero': ['slashed-zero'],\n      /**\n       * Font Variant Numeric\n       * @see https://tailwindcss.com/docs/font-variant-numeric\n       */\n      'fvn-figure': ['lining-nums', 'oldstyle-nums'],\n      /**\n       * Font Variant Numeric\n       * @see https://tailwindcss.com/docs/font-variant-numeric\n       */\n      'fvn-spacing': ['proportional-nums', 'tabular-nums'],\n      /**\n       * Font Variant Numeric\n       * @see https://tailwindcss.com/docs/font-variant-numeric\n       */\n      'fvn-fraction': ['diagonal-fractions', 'stacked-fractions'],\n      /**\n       * Letter Spacing\n       * @see https://tailwindcss.com/docs/letter-spacing\n       */\n      tracking: [{\n        tracking: [themeTracking, isArbitraryVariable, isArbitraryValue]\n      }],\n      /**\n       * Line Clamp\n       * @see https://tailwindcss.com/docs/line-clamp\n       */\n      'line-clamp': [{\n        'line-clamp': [isNumber, 'none', isArbitraryVariable, isArbitraryNumber]\n      }],\n      /**\n       * Line Height\n       * @see https://tailwindcss.com/docs/line-height\n       */\n      leading: [{\n        leading: [isArbitraryVariable, isArbitraryValue, /** Deprecated since Tailwind CSS v4.0.0. @see https://github.com/tailwindlabs/tailwindcss.com/issues/2027#issuecomment-2620152757 */\n        themeLeading, themeSpacing]\n      }],\n      /**\n       * List Style Image\n       * @see https://tailwindcss.com/docs/list-style-image\n       */\n      'list-image': [{\n        'list-image': ['none', isArbitraryVariable, isArbitraryValue]\n      }],\n      /**\n       * List Style Position\n       * @see https://tailwindcss.com/docs/list-style-position\n       */\n      'list-style-position': [{\n        list: ['inside', 'outside']\n      }],\n      /**\n       * List Style Type\n       * @see https://tailwindcss.com/docs/list-style-type\n       */\n      'list-style-type': [{\n        list: ['disc', 'decimal', 'none', isArbitraryVariable, isArbitraryValue]\n      }],\n      /**\n       * Text Alignment\n       * @see https://tailwindcss.com/docs/text-align\n       */\n      'text-alignment': [{\n        text: ['left', 'center', 'right', 'justify', 'start', 'end']\n      }],\n      /**\n       * Placeholder Color\n       * @deprecated since Tailwind CSS v3.0.0\n       * @see https://v3.tailwindcss.com/docs/placeholder-color\n       */\n      'placeholder-color': [{\n        placeholder: scaleColor()\n      }],\n      /**\n       * Text Color\n       * @see https://tailwindcss.com/docs/text-color\n       */\n      'text-color': [{\n        text: scaleColor()\n      }],\n      /**\n       * Text Decoration\n       * @see https://tailwindcss.com/docs/text-decoration\n       */\n      'text-decoration': ['underline', 'overline', 'line-through', 'no-underline'],\n      /**\n       * Text Decoration Style\n       * @see https://tailwindcss.com/docs/text-decoration-style\n       */\n      'text-decoration-style': [{\n        decoration: [...scaleLineStyle(), 'wavy']\n      }],\n      /**\n       * Text Decoration Thickness\n       * @see https://tailwindcss.com/docs/text-decoration-thickness\n       */\n      'text-decoration-thickness': [{\n        decoration: [isNumber, 'from-font', 'auto', isArbitraryVariable, isArbitraryLength]\n      }],\n      /**\n       * Text Decoration Color\n       * @see https://tailwindcss.com/docs/text-decoration-color\n       */\n      'text-decoration-color': [{\n        decoration: scaleColor()\n      }],\n      /**\n       * Text Underline Offset\n       * @see https://tailwindcss.com/docs/text-underline-offset\n       */\n      'underline-offset': [{\n        'underline-offset': [isNumber, 'auto', isArbitraryVariable, isArbitraryValue]\n      }],\n      /**\n       * Text Transform\n       * @see https://tailwindcss.com/docs/text-transform\n       */\n      'text-transform': ['uppercase', 'lowercase', 'capitalize', 'normal-case'],\n      /**\n       * Text Overflow\n       * @see https://tailwindcss.com/docs/text-overflow\n       */\n      'text-overflow': ['truncate', 'text-ellipsis', 'text-clip'],\n      /**\n       * Text Wrap\n       * @see https://tailwindcss.com/docs/text-wrap\n       */\n      'text-wrap': [{\n        text: ['wrap', 'nowrap', 'balance', 'pretty']\n      }],\n      /**\n       * Text Indent\n       * @see https://tailwindcss.com/docs/text-indent\n       */\n      indent: [{\n        indent: ['px', ...scaleUnambiguousSpacing()]\n      }],\n      /**\n       * Vertical Alignment\n       * @see https://tailwindcss.com/docs/vertical-align\n       */\n      'vertical-align': [{\n        align: ['baseline', 'top', 'middle', 'bottom', 'text-top', 'text-bottom', 'sub', 'super', isArbitraryVariable, isArbitraryValue]\n      }],\n      /**\n       * Whitespace\n       * @see https://tailwindcss.com/docs/whitespace\n       */\n      whitespace: [{\n        whitespace: ['normal', 'nowrap', 'pre', 'pre-line', 'pre-wrap', 'break-spaces']\n      }],\n      /**\n       * Word Break\n       * @see https://tailwindcss.com/docs/word-break\n       */\n      break: [{\n        break: ['normal', 'words', 'all', 'keep']\n      }],\n      /**\n       * Hyphens\n       * @see https://tailwindcss.com/docs/hyphens\n       */\n      hyphens: [{\n        hyphens: ['none', 'manual', 'auto']\n      }],\n      /**\n       * Content\n       * @see https://tailwindcss.com/docs/content\n       */\n      content: [{\n        content: ['none', isArbitraryVariable, isArbitraryValue]\n      }],\n      // -------------------\n      // --- Backgrounds ---\n      // -------------------\n      /**\n       * Background Attachment\n       * @see https://tailwindcss.com/docs/background-attachment\n       */\n      'bg-attachment': [{\n        bg: ['fixed', 'local', 'scroll']\n      }],\n      /**\n       * Background Clip\n       * @see https://tailwindcss.com/docs/background-clip\n       */\n      'bg-clip': [{\n        'bg-clip': ['border', 'padding', 'content', 'text']\n      }],\n      /**\n       * Background Origin\n       * @see https://tailwindcss.com/docs/background-origin\n       */\n      'bg-origin': [{\n        'bg-origin': ['border', 'padding', 'content']\n      }],\n      /**\n       * Background Position\n       * @see https://tailwindcss.com/docs/background-position\n       */\n      'bg-position': [{\n        bg: [...scalePosition(), isArbitraryVariablePosition, isArbitraryPosition]\n      }],\n      /**\n       * Background Repeat\n       * @see https://tailwindcss.com/docs/background-repeat\n       */\n      'bg-repeat': [{\n        bg: ['no-repeat', {\n          repeat: ['', 'x', 'y', 'space', 'round']\n        }]\n      }],\n      /**\n       * Background Size\n       * @see https://tailwindcss.com/docs/background-size\n       */\n      'bg-size': [{\n        bg: ['auto', 'cover', 'contain', isArbitraryVariableSize, isArbitrarySize]\n      }],\n      /**\n       * Background Image\n       * @see https://tailwindcss.com/docs/background-image\n       */\n      'bg-image': [{\n        bg: ['none', {\n          linear: [{\n            to: ['t', 'tr', 'r', 'br', 'b', 'bl', 'l', 'tl']\n          }, isInteger, isArbitraryVariable, isArbitraryValue],\n          radial: ['', isArbitraryVariable, isArbitraryValue],\n          conic: [isInteger, isArbitraryVariable, isArbitraryValue]\n        }, isArbitraryVariableImage, isArbitraryImage]\n      }],\n      /**\n       * Background Color\n       * @see https://tailwindcss.com/docs/background-color\n       */\n      'bg-color': [{\n        bg: scaleColor()\n      }],\n      /**\n       * Gradient Color Stops From Position\n       * @see https://tailwindcss.com/docs/gradient-color-stops\n       */\n      'gradient-from-pos': [{\n        from: scaleGradientStopPosition()\n      }],\n      /**\n       * Gradient Color Stops Via Position\n       * @see https://tailwindcss.com/docs/gradient-color-stops\n       */\n      'gradient-via-pos': [{\n        via: scaleGradientStopPosition()\n      }],\n      /**\n       * Gradient Color Stops To Position\n       * @see https://tailwindcss.com/docs/gradient-color-stops\n       */\n      'gradient-to-pos': [{\n        to: scaleGradientStopPosition()\n      }],\n      /**\n       * Gradient Color Stops From\n       * @see https://tailwindcss.com/docs/gradient-color-stops\n       */\n      'gradient-from': [{\n        from: scaleColor()\n      }],\n      /**\n       * Gradient Color Stops Via\n       * @see https://tailwindcss.com/docs/gradient-color-stops\n       */\n      'gradient-via': [{\n        via: scaleColor()\n      }],\n      /**\n       * Gradient Color Stops To\n       * @see https://tailwindcss.com/docs/gradient-color-stops\n       */\n      'gradient-to': [{\n        to: scaleColor()\n      }],\n      // ---------------\n      // --- Borders ---\n      // ---------------\n      /**\n       * Border Radius\n       * @see https://tailwindcss.com/docs/border-radius\n       */\n      rounded: [{\n        rounded: scaleRadius()\n      }],\n      /**\n       * Border Radius Start\n       * @see https://tailwindcss.com/docs/border-radius\n       */\n      'rounded-s': [{\n        'rounded-s': scaleRadius()\n      }],\n      /**\n       * Border Radius End\n       * @see https://tailwindcss.com/docs/border-radius\n       */\n      'rounded-e': [{\n        'rounded-e': scaleRadius()\n      }],\n      /**\n       * Border Radius Top\n       * @see https://tailwindcss.com/docs/border-radius\n       */\n      'rounded-t': [{\n        'rounded-t': scaleRadius()\n      }],\n      /**\n       * Border Radius Right\n       * @see https://tailwindcss.com/docs/border-radius\n       */\n      'rounded-r': [{\n        'rounded-r': scaleRadius()\n      }],\n      /**\n       * Border Radius Bottom\n       * @see https://tailwindcss.com/docs/border-radius\n       */\n      'rounded-b': [{\n        'rounded-b': scaleRadius()\n      }],\n      /**\n       * Border Radius Left\n       * @see https://tailwindcss.com/docs/border-radius\n       */\n      'rounded-l': [{\n        'rounded-l': scaleRadius()\n      }],\n      /**\n       * Border Radius Start Start\n       * @see https://tailwindcss.com/docs/border-radius\n       */\n      'rounded-ss': [{\n        'rounded-ss': scaleRadius()\n      }],\n      /**\n       * Border Radius Start End\n       * @see https://tailwindcss.com/docs/border-radius\n       */\n      'rounded-se': [{\n        'rounded-se': scaleRadius()\n      }],\n      /**\n       * Border Radius End End\n       * @see https://tailwindcss.com/docs/border-radius\n       */\n      'rounded-ee': [{\n        'rounded-ee': scaleRadius()\n      }],\n      /**\n       * Border Radius End Start\n       * @see https://tailwindcss.com/docs/border-radius\n       */\n      'rounded-es': [{\n        'rounded-es': scaleRadius()\n      }],\n      /**\n       * Border Radius Top Left\n       * @see https://tailwindcss.com/docs/border-radius\n       */\n      'rounded-tl': [{\n        'rounded-tl': scaleRadius()\n      }],\n      /**\n       * Border Radius Top Right\n       * @see https://tailwindcss.com/docs/border-radius\n       */\n      'rounded-tr': [{\n        'rounded-tr': scaleRadius()\n      }],\n      /**\n       * Border Radius Bottom Right\n       * @see https://tailwindcss.com/docs/border-radius\n       */\n      'rounded-br': [{\n        'rounded-br': scaleRadius()\n      }],\n      /**\n       * Border Radius Bottom Left\n       * @see https://tailwindcss.com/docs/border-radius\n       */\n      'rounded-bl': [{\n        'rounded-bl': scaleRadius()\n      }],\n      /**\n       * Border Width\n       * @see https://tailwindcss.com/docs/border-width\n       */\n      'border-w': [{\n        border: scaleBorderWidth()\n      }],\n      /**\n       * Border Width X\n       * @see https://tailwindcss.com/docs/border-width\n       */\n      'border-w-x': [{\n        'border-x': scaleBorderWidth()\n      }],\n      /**\n       * Border Width Y\n       * @see https://tailwindcss.com/docs/border-width\n       */\n      'border-w-y': [{\n        'border-y': scaleBorderWidth()\n      }],\n      /**\n       * Border Width Start\n       * @see https://tailwindcss.com/docs/border-width\n       */\n      'border-w-s': [{\n        'border-s': scaleBorderWidth()\n      }],\n      /**\n       * Border Width End\n       * @see https://tailwindcss.com/docs/border-width\n       */\n      'border-w-e': [{\n        'border-e': scaleBorderWidth()\n      }],\n      /**\n       * Border Width Top\n       * @see https://tailwindcss.com/docs/border-width\n       */\n      'border-w-t': [{\n        'border-t': scaleBorderWidth()\n      }],\n      /**\n       * Border Width Right\n       * @see https://tailwindcss.com/docs/border-width\n       */\n      'border-w-r': [{\n        'border-r': scaleBorderWidth()\n      }],\n      /**\n       * Border Width Bottom\n       * @see https://tailwindcss.com/docs/border-width\n       */\n      'border-w-b': [{\n        'border-b': scaleBorderWidth()\n      }],\n      /**\n       * Border Width Left\n       * @see https://tailwindcss.com/docs/border-width\n       */\n      'border-w-l': [{\n        'border-l': scaleBorderWidth()\n      }],\n      /**\n       * Divide Width X\n       * @see https://tailwindcss.com/docs/border-width#between-children\n       */\n      'divide-x': [{\n        'divide-x': scaleBorderWidth()\n      }],\n      /**\n       * Divide Width X Reverse\n       * @see https://tailwindcss.com/docs/border-width#between-children\n       */\n      'divide-x-reverse': ['divide-x-reverse'],\n      /**\n       * Divide Width Y\n       * @see https://tailwindcss.com/docs/border-width#between-children\n       */\n      'divide-y': [{\n        'divide-y': scaleBorderWidth()\n      }],\n      /**\n       * Divide Width Y Reverse\n       * @see https://tailwindcss.com/docs/border-width#between-children\n       */\n      'divide-y-reverse': ['divide-y-reverse'],\n      /**\n       * Border Style\n       * @see https://tailwindcss.com/docs/border-style\n       */\n      'border-style': [{\n        border: [...scaleLineStyle(), 'hidden', 'none']\n      }],\n      /**\n       * Divide Style\n       * @see https://tailwindcss.com/docs/border-style#setting-the-divider-style\n       */\n      'divide-style': [{\n        divide: [...scaleLineStyle(), 'hidden', 'none']\n      }],\n      /**\n       * Border Color\n       * @see https://tailwindcss.com/docs/border-color\n       */\n      'border-color': [{\n        border: scaleColor()\n      }],\n      /**\n       * Border Color X\n       * @see https://tailwindcss.com/docs/border-color\n       */\n      'border-color-x': [{\n        'border-x': scaleColor()\n      }],\n      /**\n       * Border Color Y\n       * @see https://tailwindcss.com/docs/border-color\n       */\n      'border-color-y': [{\n        'border-y': scaleColor()\n      }],\n      /**\n       * Border Color S\n       * @see https://tailwindcss.com/docs/border-color\n       */\n      'border-color-s': [{\n        'border-s': scaleColor()\n      }],\n      /**\n       * Border Color E\n       * @see https://tailwindcss.com/docs/border-color\n       */\n      'border-color-e': [{\n        'border-e': scaleColor()\n      }],\n      /**\n       * Border Color Top\n       * @see https://tailwindcss.com/docs/border-color\n       */\n      'border-color-t': [{\n        'border-t': scaleColor()\n      }],\n      /**\n       * Border Color Right\n       * @see https://tailwindcss.com/docs/border-color\n       */\n      'border-color-r': [{\n        'border-r': scaleColor()\n      }],\n      /**\n       * Border Color Bottom\n       * @see https://tailwindcss.com/docs/border-color\n       */\n      'border-color-b': [{\n        'border-b': scaleColor()\n      }],\n      /**\n       * Border Color Left\n       * @see https://tailwindcss.com/docs/border-color\n       */\n      'border-color-l': [{\n        'border-l': scaleColor()\n      }],\n      /**\n       * Divide Color\n       * @see https://tailwindcss.com/docs/divide-color\n       */\n      'divide-color': [{\n        divide: scaleColor()\n      }],\n      /**\n       * Outline Style\n       * @see https://tailwindcss.com/docs/outline-style\n       */\n      'outline-style': [{\n        outline: [...scaleLineStyle(), 'none', 'hidden']\n      }],\n      /**\n       * Outline Offset\n       * @see https://tailwindcss.com/docs/outline-offset\n       */\n      'outline-offset': [{\n        'outline-offset': [isNumber, isArbitraryVariable, isArbitraryValue]\n      }],\n      /**\n       * Outline Width\n       * @see https://tailwindcss.com/docs/outline-width\n       */\n      'outline-w': [{\n        outline: ['', isNumber, isArbitraryVariableLength, isArbitraryLength]\n      }],\n      /**\n       * Outline Color\n       * @see https://tailwindcss.com/docs/outline-color\n       */\n      'outline-color': [{\n        outline: [themeColor]\n      }],\n      // ---------------\n      // --- Effects ---\n      // ---------------\n      /**\n       * Box Shadow\n       * @see https://tailwindcss.com/docs/box-shadow\n       */\n      shadow: [{\n        shadow: [\n        // Deprecated since Tailwind CSS v4.0.0\n        '', 'none', themeShadow, isArbitraryVariableShadow, isArbitraryShadow]\n      }],\n      /**\n       * Box Shadow Color\n       * @see https://tailwindcss.com/docs/box-shadow#setting-the-shadow-color\n       */\n      'shadow-color': [{\n        shadow: scaleColor()\n      }],\n      /**\n       * Inset Box Shadow\n       * @see https://tailwindcss.com/docs/box-shadow#adding-an-inset-shadow\n       */\n      'inset-shadow': [{\n        'inset-shadow': ['none', isArbitraryVariable, isArbitraryValue, themeInsetShadow]\n      }],\n      /**\n       * Inset Box Shadow Color\n       * @see https://tailwindcss.com/docs/box-shadow#setting-the-inset-shadow-color\n       */\n      'inset-shadow-color': [{\n        'inset-shadow': scaleColor()\n      }],\n      /**\n       * Ring Width\n       * @see https://tailwindcss.com/docs/box-shadow#adding-a-ring\n       */\n      'ring-w': [{\n        ring: scaleBorderWidth()\n      }],\n      /**\n       * Ring Width Inset\n       * @see https://v3.tailwindcss.com/docs/ring-width#inset-rings\n       * @deprecated since Tailwind CSS v4.0.0\n       * @see https://github.com/tailwindlabs/tailwindcss/blob/v4.0.0/packages/tailwindcss/src/utilities.ts#L4158\n       */\n      'ring-w-inset': ['ring-inset'],\n      /**\n       * Ring Color\n       * @see https://tailwindcss.com/docs/box-shadow#setting-the-ring-color\n       */\n      'ring-color': [{\n        ring: scaleColor()\n      }],\n      /**\n       * Ring Offset Width\n       * @see https://v3.tailwindcss.com/docs/ring-offset-width\n       * @deprecated since Tailwind CSS v4.0.0\n       * @see https://github.com/tailwindlabs/tailwindcss/blob/v4.0.0/packages/tailwindcss/src/utilities.ts#L4158\n       */\n      'ring-offset-w': [{\n        'ring-offset': [isNumber, isArbitraryLength]\n      }],\n      /**\n       * Ring Offset Color\n       * @see https://v3.tailwindcss.com/docs/ring-offset-color\n       * @deprecated since Tailwind CSS v4.0.0\n       * @see https://github.com/tailwindlabs/tailwindcss/blob/v4.0.0/packages/tailwindcss/src/utilities.ts#L4158\n       */\n      'ring-offset-color': [{\n        'ring-offset': scaleColor()\n      }],\n      /**\n       * Inset Ring Width\n       * @see https://tailwindcss.com/docs/box-shadow#adding-an-inset-ring\n       */\n      'inset-ring-w': [{\n        'inset-ring': scaleBorderWidth()\n      }],\n      /**\n       * Inset Ring Color\n       * @see https://tailwindcss.com/docs/box-shadow#setting-the-inset-ring-color\n       */\n      'inset-ring-color': [{\n        'inset-ring': scaleColor()\n      }],\n      /**\n       * Opacity\n       * @see https://tailwindcss.com/docs/opacity\n       */\n      opacity: [{\n        opacity: [isNumber, isArbitraryVariable, isArbitraryValue]\n      }],\n      /**\n       * Mix Blend Mode\n       * @see https://tailwindcss.com/docs/mix-blend-mode\n       */\n      'mix-blend': [{\n        'mix-blend': [...scaleBlendMode(), 'plus-darker', 'plus-lighter']\n      }],\n      /**\n       * Background Blend Mode\n       * @see https://tailwindcss.com/docs/background-blend-mode\n       */\n      'bg-blend': [{\n        'bg-blend': scaleBlendMode()\n      }],\n      // ---------------\n      // --- Filters ---\n      // ---------------\n      /**\n       * Filter\n       * @see https://tailwindcss.com/docs/filter\n       */\n      filter: [{\n        filter: [\n        // Deprecated since Tailwind CSS v3.0.0\n        '', 'none', isArbitraryVariable, isArbitraryValue]\n      }],\n      /**\n       * Blur\n       * @see https://tailwindcss.com/docs/blur\n       */\n      blur: [{\n        blur: scaleBlur()\n      }],\n      /**\n       * Brightness\n       * @see https://tailwindcss.com/docs/brightness\n       */\n      brightness: [{\n        brightness: [isNumber, isArbitraryVariable, isArbitraryValue]\n      }],\n      /**\n       * Contrast\n       * @see https://tailwindcss.com/docs/contrast\n       */\n      contrast: [{\n        contrast: [isNumber, isArbitraryVariable, isArbitraryValue]\n      }],\n      /**\n       * Drop Shadow\n       * @see https://tailwindcss.com/docs/drop-shadow\n       */\n      'drop-shadow': [{\n        'drop-shadow': [\n        // Deprecated since Tailwind CSS v4.0.0\n        '', 'none', themeDropShadow, isArbitraryVariable, isArbitraryValue]\n      }],\n      /**\n       * Grayscale\n       * @see https://tailwindcss.com/docs/grayscale\n       */\n      grayscale: [{\n        grayscale: ['', isNumber, isArbitraryVariable, isArbitraryValue]\n      }],\n      /**\n       * Hue Rotate\n       * @see https://tailwindcss.com/docs/hue-rotate\n       */\n      'hue-rotate': [{\n        'hue-rotate': [isNumber, isArbitraryVariable, isArbitraryValue]\n      }],\n      /**\n       * Invert\n       * @see https://tailwindcss.com/docs/invert\n       */\n      invert: [{\n        invert: ['', isNumber, isArbitraryVariable, isArbitraryValue]\n      }],\n      /**\n       * Saturate\n       * @see https://tailwindcss.com/docs/saturate\n       */\n      saturate: [{\n        saturate: [isNumber, isArbitraryVariable, isArbitraryValue]\n      }],\n      /**\n       * Sepia\n       * @see https://tailwindcss.com/docs/sepia\n       */\n      sepia: [{\n        sepia: ['', isNumber, isArbitraryVariable, isArbitraryValue]\n      }],\n      /**\n       * Backdrop Filter\n       * @see https://tailwindcss.com/docs/backdrop-filter\n       */\n      'backdrop-filter': [{\n        'backdrop-filter': [\n        // Deprecated since Tailwind CSS v3.0.0\n        '', 'none', isArbitraryVariable, isArbitraryValue]\n      }],\n      /**\n       * Backdrop Blur\n       * @see https://tailwindcss.com/docs/backdrop-blur\n       */\n      'backdrop-blur': [{\n        'backdrop-blur': scaleBlur()\n      }],\n      /**\n       * Backdrop Brightness\n       * @see https://tailwindcss.com/docs/backdrop-brightness\n       */\n      'backdrop-brightness': [{\n        'backdrop-brightness': [isNumber, isArbitraryVariable, isArbitraryValue]\n      }],\n      /**\n       * Backdrop Contrast\n       * @see https://tailwindcss.com/docs/backdrop-contrast\n       */\n      'backdrop-contrast': [{\n        'backdrop-contrast': [isNumber, isArbitraryVariable, isArbitraryValue]\n      }],\n      /**\n       * Backdrop Grayscale\n       * @see https://tailwindcss.com/docs/backdrop-grayscale\n       */\n      'backdrop-grayscale': [{\n        'backdrop-grayscale': ['', isNumber, isArbitraryVariable, isArbitraryValue]\n      }],\n      /**\n       * Backdrop Hue Rotate\n       * @see https://tailwindcss.com/docs/backdrop-hue-rotate\n       */\n      'backdrop-hue-rotate': [{\n        'backdrop-hue-rotate': [isNumber, isArbitraryVariable, isArbitraryValue]\n      }],\n      /**\n       * Backdrop Invert\n       * @see https://tailwindcss.com/docs/backdrop-invert\n       */\n      'backdrop-invert': [{\n        'backdrop-invert': ['', isNumber, isArbitraryVariable, isArbitraryValue]\n      }],\n      /**\n       * Backdrop Opacity\n       * @see https://tailwindcss.com/docs/backdrop-opacity\n       */\n      'backdrop-opacity': [{\n        'backdrop-opacity': [isNumber, isArbitraryVariable, isArbitraryValue]\n      }],\n      /**\n       * Backdrop Saturate\n       * @see https://tailwindcss.com/docs/backdrop-saturate\n       */\n      'backdrop-saturate': [{\n        'backdrop-saturate': [isNumber, isArbitraryVariable, isArbitraryValue]\n      }],\n      /**\n       * Backdrop Sepia\n       * @see https://tailwindcss.com/docs/backdrop-sepia\n       */\n      'backdrop-sepia': [{\n        'backdrop-sepia': ['', isNumber, isArbitraryVariable, isArbitraryValue]\n      }],\n      // --------------\n      // --- Tables ---\n      // --------------\n      /**\n       * Border Collapse\n       * @see https://tailwindcss.com/docs/border-collapse\n       */\n      'border-collapse': [{\n        border: ['collapse', 'separate']\n      }],\n      /**\n       * Border Spacing\n       * @see https://tailwindcss.com/docs/border-spacing\n       */\n      'border-spacing': [{\n        'border-spacing': scaleUnambiguousSpacing()\n      }],\n      /**\n       * Border Spacing X\n       * @see https://tailwindcss.com/docs/border-spacing\n       */\n      'border-spacing-x': [{\n        'border-spacing-x': scaleUnambiguousSpacing()\n      }],\n      /**\n       * Border Spacing Y\n       * @see https://tailwindcss.com/docs/border-spacing\n       */\n      'border-spacing-y': [{\n        'border-spacing-y': scaleUnambiguousSpacing()\n      }],\n      /**\n       * Table Layout\n       * @see https://tailwindcss.com/docs/table-layout\n       */\n      'table-layout': [{\n        table: ['auto', 'fixed']\n      }],\n      /**\n       * Caption Side\n       * @see https://tailwindcss.com/docs/caption-side\n       */\n      caption: [{\n        caption: ['top', 'bottom']\n      }],\n      // ---------------------------------\n      // --- Transitions and Animation ---\n      // ---------------------------------\n      /**\n       * Transition Property\n       * @see https://tailwindcss.com/docs/transition-property\n       */\n      transition: [{\n        transition: ['', 'all', 'colors', 'opacity', 'shadow', 'transform', 'none', isArbitraryVariable, isArbitraryValue]\n      }],\n      /**\n       * Transition Behavior\n       * @see https://tailwindcss.com/docs/transition-behavior\n       */\n      'transition-behavior': [{\n        transition: ['normal', 'discrete']\n      }],\n      /**\n       * Transition Duration\n       * @see https://tailwindcss.com/docs/transition-duration\n       */\n      duration: [{\n        duration: [isNumber, 'initial', isArbitraryVariable, isArbitraryValue]\n      }],\n      /**\n       * Transition Timing Function\n       * @see https://tailwindcss.com/docs/transition-timing-function\n       */\n      ease: [{\n        ease: ['linear', 'initial', themeEase, isArbitraryVariable, isArbitraryValue]\n      }],\n      /**\n       * Transition Delay\n       * @see https://tailwindcss.com/docs/transition-delay\n       */\n      delay: [{\n        delay: [isNumber, isArbitraryVariable, isArbitraryValue]\n      }],\n      /**\n       * Animation\n       * @see https://tailwindcss.com/docs/animation\n       */\n      animate: [{\n        animate: ['none', themeAnimate, isArbitraryVariable, isArbitraryValue]\n      }],\n      // ------------------\n      // --- Transforms ---\n      // ------------------\n      /**\n       * Backface Visibility\n       * @see https://tailwindcss.com/docs/backface-visibility\n       */\n      backface: [{\n        backface: ['hidden', 'visible']\n      }],\n      /**\n       * Perspective\n       * @see https://tailwindcss.com/docs/perspective\n       */\n      perspective: [{\n        perspective: [themePerspective, isArbitraryVariable, isArbitraryValue]\n      }],\n      /**\n       * Perspective Origin\n       * @see https://tailwindcss.com/docs/perspective-origin\n       */\n      'perspective-origin': [{\n        'perspective-origin': scaleOrigin()\n      }],\n      /**\n       * Rotate\n       * @see https://tailwindcss.com/docs/rotate\n       */\n      rotate: [{\n        rotate: scaleRotate()\n      }],\n      /**\n       * Rotate X\n       * @see https://tailwindcss.com/docs/rotate\n       */\n      'rotate-x': [{\n        'rotate-x': scaleRotate()\n      }],\n      /**\n       * Rotate Y\n       * @see https://tailwindcss.com/docs/rotate\n       */\n      'rotate-y': [{\n        'rotate-y': scaleRotate()\n      }],\n      /**\n       * Rotate Z\n       * @see https://tailwindcss.com/docs/rotate\n       */\n      'rotate-z': [{\n        'rotate-z': scaleRotate()\n      }],\n      /**\n       * Scale\n       * @see https://tailwindcss.com/docs/scale\n       */\n      scale: [{\n        scale: scaleScale()\n      }],\n      /**\n       * Scale X\n       * @see https://tailwindcss.com/docs/scale\n       */\n      'scale-x': [{\n        'scale-x': scaleScale()\n      }],\n      /**\n       * Scale Y\n       * @see https://tailwindcss.com/docs/scale\n       */\n      'scale-y': [{\n        'scale-y': scaleScale()\n      }],\n      /**\n       * Scale Z\n       * @see https://tailwindcss.com/docs/scale\n       */\n      'scale-z': [{\n        'scale-z': scaleScale()\n      }],\n      /**\n       * Scale 3D\n       * @see https://tailwindcss.com/docs/scale\n       */\n      'scale-3d': ['scale-3d'],\n      /**\n       * Skew\n       * @see https://tailwindcss.com/docs/skew\n       */\n      skew: [{\n        skew: scaleSkew()\n      }],\n      /**\n       * Skew X\n       * @see https://tailwindcss.com/docs/skew\n       */\n      'skew-x': [{\n        'skew-x': scaleSkew()\n      }],\n      /**\n       * Skew Y\n       * @see https://tailwindcss.com/docs/skew\n       */\n      'skew-y': [{\n        'skew-y': scaleSkew()\n      }],\n      /**\n       * Transform\n       * @see https://tailwindcss.com/docs/transform\n       */\n      transform: [{\n        transform: [isArbitraryVariable, isArbitraryValue, '', 'none', 'gpu', 'cpu']\n      }],\n      /**\n       * Transform Origin\n       * @see https://tailwindcss.com/docs/transform-origin\n       */\n      'transform-origin': [{\n        origin: scaleOrigin()\n      }],\n      /**\n       * Transform Style\n       * @see https://tailwindcss.com/docs/transform-style\n       */\n      'transform-style': [{\n        transform: ['3d', 'flat']\n      }],\n      /**\n       * Translate\n       * @see https://tailwindcss.com/docs/translate\n       */\n      translate: [{\n        translate: scaleTranslate()\n      }],\n      /**\n       * Translate X\n       * @see https://tailwindcss.com/docs/translate\n       */\n      'translate-x': [{\n        'translate-x': scaleTranslate()\n      }],\n      /**\n       * Translate Y\n       * @see https://tailwindcss.com/docs/translate\n       */\n      'translate-y': [{\n        'translate-y': scaleTranslate()\n      }],\n      /**\n       * Translate Z\n       * @see https://tailwindcss.com/docs/translate\n       */\n      'translate-z': [{\n        'translate-z': scaleTranslate()\n      }],\n      /**\n       * Translate None\n       * @see https://tailwindcss.com/docs/translate\n       */\n      'translate-none': ['translate-none'],\n      // ---------------------\n      // --- Interactivity ---\n      // ---------------------\n      /**\n       * Accent Color\n       * @see https://tailwindcss.com/docs/accent-color\n       */\n      accent: [{\n        accent: scaleColor()\n      }],\n      /**\n       * Appearance\n       * @see https://tailwindcss.com/docs/appearance\n       */\n      appearance: [{\n        appearance: ['none', 'auto']\n      }],\n      /**\n       * Caret Color\n       * @see https://tailwindcss.com/docs/just-in-time-mode#caret-color-utilities\n       */\n      'caret-color': [{\n        caret: scaleColor()\n      }],\n      /**\n       * Color Scheme\n       * @see https://tailwindcss.com/docs/color-scheme\n       */\n      'color-scheme': [{\n        scheme: ['normal', 'dark', 'light', 'light-dark', 'only-dark', 'only-light']\n      }],\n      /**\n       * Cursor\n       * @see https://tailwindcss.com/docs/cursor\n       */\n      cursor: [{\n        cursor: ['auto', 'default', 'pointer', 'wait', 'text', 'move', 'help', 'not-allowed', 'none', 'context-menu', 'progress', 'cell', 'crosshair', 'vertical-text', 'alias', 'copy', 'no-drop', 'grab', 'grabbing', 'all-scroll', 'col-resize', 'row-resize', 'n-resize', 'e-resize', 's-resize', 'w-resize', 'ne-resize', 'nw-resize', 'se-resize', 'sw-resize', 'ew-resize', 'ns-resize', 'nesw-resize', 'nwse-resize', 'zoom-in', 'zoom-out', isArbitraryVariable, isArbitraryValue]\n      }],\n      /**\n       * Field Sizing\n       * @see https://tailwindcss.com/docs/field-sizing\n       */\n      'field-sizing': [{\n        'field-sizing': ['fixed', 'content']\n      }],\n      /**\n       * Pointer Events\n       * @see https://tailwindcss.com/docs/pointer-events\n       */\n      'pointer-events': [{\n        'pointer-events': ['auto', 'none']\n      }],\n      /**\n       * Resize\n       * @see https://tailwindcss.com/docs/resize\n       */\n      resize: [{\n        resize: ['none', '', 'y', 'x']\n      }],\n      /**\n       * Scroll Behavior\n       * @see https://tailwindcss.com/docs/scroll-behavior\n       */\n      'scroll-behavior': [{\n        scroll: ['auto', 'smooth']\n      }],\n      /**\n       * Scroll Margin\n       * @see https://tailwindcss.com/docs/scroll-margin\n       */\n      'scroll-m': [{\n        'scroll-m': scaleUnambiguousSpacing()\n      }],\n      /**\n       * Scroll Margin X\n       * @see https://tailwindcss.com/docs/scroll-margin\n       */\n      'scroll-mx': [{\n        'scroll-mx': scaleUnambiguousSpacing()\n      }],\n      /**\n       * Scroll Margin Y\n       * @see https://tailwindcss.com/docs/scroll-margin\n       */\n      'scroll-my': [{\n        'scroll-my': scaleUnambiguousSpacing()\n      }],\n      /**\n       * Scroll Margin Start\n       * @see https://tailwindcss.com/docs/scroll-margin\n       */\n      'scroll-ms': [{\n        'scroll-ms': scaleUnambiguousSpacing()\n      }],\n      /**\n       * Scroll Margin End\n       * @see https://tailwindcss.com/docs/scroll-margin\n       */\n      'scroll-me': [{\n        'scroll-me': scaleUnambiguousSpacing()\n      }],\n      /**\n       * Scroll Margin Top\n       * @see https://tailwindcss.com/docs/scroll-margin\n       */\n      'scroll-mt': [{\n        'scroll-mt': scaleUnambiguousSpacing()\n      }],\n      /**\n       * Scroll Margin Right\n       * @see https://tailwindcss.com/docs/scroll-margin\n       */\n      'scroll-mr': [{\n        'scroll-mr': scaleUnambiguousSpacing()\n      }],\n      /**\n       * Scroll Margin Bottom\n       * @see https://tailwindcss.com/docs/scroll-margin\n       */\n      'scroll-mb': [{\n        'scroll-mb': scaleUnambiguousSpacing()\n      }],\n      /**\n       * Scroll Margin Left\n       * @see https://tailwindcss.com/docs/scroll-margin\n       */\n      'scroll-ml': [{\n        'scroll-ml': scaleUnambiguousSpacing()\n      }],\n      /**\n       * Scroll Padding\n       * @see https://tailwindcss.com/docs/scroll-padding\n       */\n      'scroll-p': [{\n        'scroll-p': scaleUnambiguousSpacing()\n      }],\n      /**\n       * Scroll Padding X\n       * @see https://tailwindcss.com/docs/scroll-padding\n       */\n      'scroll-px': [{\n        'scroll-px': scaleUnambiguousSpacing()\n      }],\n      /**\n       * Scroll Padding Y\n       * @see https://tailwindcss.com/docs/scroll-padding\n       */\n      'scroll-py': [{\n        'scroll-py': scaleUnambiguousSpacing()\n      }],\n      /**\n       * Scroll Padding Start\n       * @see https://tailwindcss.com/docs/scroll-padding\n       */\n      'scroll-ps': [{\n        'scroll-ps': scaleUnambiguousSpacing()\n      }],\n      /**\n       * Scroll Padding End\n       * @see https://tailwindcss.com/docs/scroll-padding\n       */\n      'scroll-pe': [{\n        'scroll-pe': scaleUnambiguousSpacing()\n      }],\n      /**\n       * Scroll Padding Top\n       * @see https://tailwindcss.com/docs/scroll-padding\n       */\n      'scroll-pt': [{\n        'scroll-pt': scaleUnambiguousSpacing()\n      }],\n      /**\n       * Scroll Padding Right\n       * @see https://tailwindcss.com/docs/scroll-padding\n       */\n      'scroll-pr': [{\n        'scroll-pr': scaleUnambiguousSpacing()\n      }],\n      /**\n       * Scroll Padding Bottom\n       * @see https://tailwindcss.com/docs/scroll-padding\n       */\n      'scroll-pb': [{\n        'scroll-pb': scaleUnambiguousSpacing()\n      }],\n      /**\n       * Scroll Padding Left\n       * @see https://tailwindcss.com/docs/scroll-padding\n       */\n      'scroll-pl': [{\n        'scroll-pl': scaleUnambiguousSpacing()\n      }],\n      /**\n       * Scroll Snap Align\n       * @see https://tailwindcss.com/docs/scroll-snap-align\n       */\n      'snap-align': [{\n        snap: ['start', 'end', 'center', 'align-none']\n      }],\n      /**\n       * Scroll Snap Stop\n       * @see https://tailwindcss.com/docs/scroll-snap-stop\n       */\n      'snap-stop': [{\n        snap: ['normal', 'always']\n      }],\n      /**\n       * Scroll Snap Type\n       * @see https://tailwindcss.com/docs/scroll-snap-type\n       */\n      'snap-type': [{\n        snap: ['none', 'x', 'y', 'both']\n      }],\n      /**\n       * Scroll Snap Type Strictness\n       * @see https://tailwindcss.com/docs/scroll-snap-type\n       */\n      'snap-strictness': [{\n        snap: ['mandatory', 'proximity']\n      }],\n      /**\n       * Touch Action\n       * @see https://tailwindcss.com/docs/touch-action\n       */\n      touch: [{\n        touch: ['auto', 'none', 'manipulation']\n      }],\n      /**\n       * Touch Action X\n       * @see https://tailwindcss.com/docs/touch-action\n       */\n      'touch-x': [{\n        'touch-pan': ['x', 'left', 'right']\n      }],\n      /**\n       * Touch Action Y\n       * @see https://tailwindcss.com/docs/touch-action\n       */\n      'touch-y': [{\n        'touch-pan': ['y', 'up', 'down']\n      }],\n      /**\n       * Touch Action Pinch Zoom\n       * @see https://tailwindcss.com/docs/touch-action\n       */\n      'touch-pz': ['touch-pinch-zoom'],\n      /**\n       * User Select\n       * @see https://tailwindcss.com/docs/user-select\n       */\n      select: [{\n        select: ['none', 'text', 'all', 'auto']\n      }],\n      /**\n       * Will Change\n       * @see https://tailwindcss.com/docs/will-change\n       */\n      'will-change': [{\n        'will-change': ['auto', 'scroll', 'contents', 'transform', isArbitraryVariable, isArbitraryValue]\n      }],\n      // -----------\n      // --- SVG ---\n      // -----------\n      /**\n       * Fill\n       * @see https://tailwindcss.com/docs/fill\n       */\n      fill: [{\n        fill: ['none', ...scaleColor()]\n      }],\n      /**\n       * Stroke Width\n       * @see https://tailwindcss.com/docs/stroke-width\n       */\n      'stroke-w': [{\n        stroke: [isNumber, isArbitraryVariableLength, isArbitraryLength, isArbitraryNumber]\n      }],\n      /**\n       * Stroke\n       * @see https://tailwindcss.com/docs/stroke\n       */\n      stroke: [{\n        stroke: ['none', ...scaleColor()]\n      }],\n      // ---------------------\n      // --- Accessibility ---\n      // ---------------------\n      /**\n       * Forced Color Adjust\n       * @see https://tailwindcss.com/docs/forced-color-adjust\n       */\n      'forced-color-adjust': [{\n        'forced-color-adjust': ['auto', 'none']\n      }]\n    },\n    conflictingClassGroups: {\n      overflow: ['overflow-x', 'overflow-y'],\n      overscroll: ['overscroll-x', 'overscroll-y'],\n      inset: ['inset-x', 'inset-y', 'start', 'end', 'top', 'right', 'bottom', 'left'],\n      'inset-x': ['right', 'left'],\n      'inset-y': ['top', 'bottom'],\n      flex: ['basis', 'grow', 'shrink'],\n      gap: ['gap-x', 'gap-y'],\n      p: ['px', 'py', 'ps', 'pe', 'pt', 'pr', 'pb', 'pl'],\n      px: ['pr', 'pl'],\n      py: ['pt', 'pb'],\n      m: ['mx', 'my', 'ms', 'me', 'mt', 'mr', 'mb', 'ml'],\n      mx: ['mr', 'ml'],\n      my: ['mt', 'mb'],\n      size: ['w', 'h'],\n      'font-size': ['leading'],\n      'fvn-normal': ['fvn-ordinal', 'fvn-slashed-zero', 'fvn-figure', 'fvn-spacing', 'fvn-fraction'],\n      'fvn-ordinal': ['fvn-normal'],\n      'fvn-slashed-zero': ['fvn-normal'],\n      'fvn-figure': ['fvn-normal'],\n      'fvn-spacing': ['fvn-normal'],\n      'fvn-fraction': ['fvn-normal'],\n      'line-clamp': ['display', 'overflow'],\n      rounded: ['rounded-s', 'rounded-e', 'rounded-t', 'rounded-r', 'rounded-b', 'rounded-l', 'rounded-ss', 'rounded-se', 'rounded-ee', 'rounded-es', 'rounded-tl', 'rounded-tr', 'rounded-br', 'rounded-bl'],\n      'rounded-s': ['rounded-ss', 'rounded-es'],\n      'rounded-e': ['rounded-se', 'rounded-ee'],\n      'rounded-t': ['rounded-tl', 'rounded-tr'],\n      'rounded-r': ['rounded-tr', 'rounded-br'],\n      'rounded-b': ['rounded-br', 'rounded-bl'],\n      'rounded-l': ['rounded-tl', 'rounded-bl'],\n      'border-spacing': ['border-spacing-x', 'border-spacing-y'],\n      'border-w': ['border-w-s', 'border-w-e', 'border-w-t', 'border-w-r', 'border-w-b', 'border-w-l'],\n      'border-w-x': ['border-w-r', 'border-w-l'],\n      'border-w-y': ['border-w-t', 'border-w-b'],\n      'border-color': ['border-color-s', 'border-color-e', 'border-color-t', 'border-color-r', 'border-color-b', 'border-color-l'],\n      'border-color-x': ['border-color-r', 'border-color-l'],\n      'border-color-y': ['border-color-t', 'border-color-b'],\n      translate: ['translate-x', 'translate-y', 'translate-none'],\n      'translate-none': ['translate', 'translate-x', 'translate-y', 'translate-z'],\n      'scroll-m': ['scroll-mx', 'scroll-my', 'scroll-ms', 'scroll-me', 'scroll-mt', 'scroll-mr', 'scroll-mb', 'scroll-ml'],\n      'scroll-mx': ['scroll-mr', 'scroll-ml'],\n      'scroll-my': ['scroll-mt', 'scroll-mb'],\n      'scroll-p': ['scroll-px', 'scroll-py', 'scroll-ps', 'scroll-pe', 'scroll-pt', 'scroll-pr', 'scroll-pb', 'scroll-pl'],\n      'scroll-px': ['scroll-pr', 'scroll-pl'],\n      'scroll-py': ['scroll-pt', 'scroll-pb'],\n      touch: ['touch-x', 'touch-y', 'touch-pz'],\n      'touch-x': ['touch'],\n      'touch-y': ['touch'],\n      'touch-pz': ['touch']\n    },\n    conflictingClassGroupModifiers: {\n      'font-size': ['leading']\n    },\n    orderSensitiveModifiers: ['before', 'after', 'placeholder', 'file', 'marker', 'selection', 'first-line', 'first-letter', 'backdrop', '*', '**']\n  };\n};\n\n/**\n * @param baseConfig Config where other config will be merged into. This object will be mutated.\n * @param configExtension Partial config to merge into the `baseConfig`.\n */\nconst mergeConfigs = (baseConfig, {\n  cacheSize,\n  prefix,\n  experimentalParseClassName,\n  extend = {},\n  override = {}\n}) => {\n  overrideProperty(baseConfig, 'cacheSize', cacheSize);\n  overrideProperty(baseConfig, 'prefix', prefix);\n  overrideProperty(baseConfig, 'experimentalParseClassName', experimentalParseClassName);\n  overrideConfigProperties(baseConfig.theme, override.theme);\n  overrideConfigProperties(baseConfig.classGroups, override.classGroups);\n  overrideConfigProperties(baseConfig.conflictingClassGroups, override.conflictingClassGroups);\n  overrideConfigProperties(baseConfig.conflictingClassGroupModifiers, override.conflictingClassGroupModifiers);\n  overrideProperty(baseConfig, 'orderSensitiveModifiers', override.orderSensitiveModifiers);\n  mergeConfigProperties(baseConfig.theme, extend.theme);\n  mergeConfigProperties(baseConfig.classGroups, extend.classGroups);\n  mergeConfigProperties(baseConfig.conflictingClassGroups, extend.conflictingClassGroups);\n  mergeConfigProperties(baseConfig.conflictingClassGroupModifiers, extend.conflictingClassGroupModifiers);\n  mergeArrayProperties(baseConfig, extend, 'orderSensitiveModifiers');\n  return baseConfig;\n};\nconst overrideProperty = (baseObject, overrideKey, overrideValue) => {\n  if (overrideValue !== undefined) {\n    baseObject[overrideKey] = overrideValue;\n  }\n};\nconst overrideConfigProperties = (baseObject, overrideObject) => {\n  if (overrideObject) {\n    for (const key in overrideObject) {\n      overrideProperty(baseObject, key, overrideObject[key]);\n    }\n  }\n};\nconst mergeConfigProperties = (baseObject, mergeObject) => {\n  if (mergeObject) {\n    for (const key in mergeObject) {\n      mergeArrayProperties(baseObject, mergeObject, key);\n    }\n  }\n};\nconst mergeArrayProperties = (baseObject, mergeObject, key) => {\n  const mergeValue = mergeObject[key];\n  if (mergeValue !== undefined) {\n    baseObject[key] = baseObject[key] ? baseObject[key].concat(mergeValue) : mergeValue;\n  }\n};\nconst extendTailwindMerge = (configExtension, ...createConfig) => typeof configExtension === 'function' ? createTailwindMerge(getDefaultConfig, configExtension, ...createConfig) : createTailwindMerge(() => mergeConfigs(getDefaultConfig(), configExtension), ...createConfig);\nconst twMerge = /*#__PURE__*/createTailwindMerge(getDefaultConfig);\nexport { createTailwindMerge, extendTailwindMerge, fromTheme, getDefaultConfig, mergeConfigs, twJoin, twMerge, validators };\n//# sourceMappingURL=bundle-mjs.mjs.map\n","import dayjs from \"dayjs\";\nimport React, { ForwardedRef, forwardRef, RefObject, useMemo } from \"react\";\nimport { ConvertToThaiYear } from \"../utils\";\n\nconst isReact19OrNewer =\n  parseInt(`${React.version}.`.split(\".\").at(0) ?? \"\", 10) >= 19;\n\nconst componentWithRefBinding = (\n  combinedProps: any,\n  ref: RefObject<any> | ForwardedRef<HTMLInputElement>,\n  InputComponent?: React.ElementType | null\n) => {\n  const { _displayFormat, value, onChange, ...props } = combinedProps;\n  const thaiDate = useMemo(() => {\n    if (value) {\n      const date = dayjs(value);\n      const thaiYear = ConvertToThaiYear(date.year());\n      if (_displayFormat) {\n        let wrappedDisplayFormat = _displayFormat\n          .replace(/YYYY/, `${thaiYear}`)\n          .replace(/YY/, `${thaiYear % 100}`);\n        return `${date.format(wrappedDisplayFormat)}`;\n      }\n      return `${thaiYear}${date.format(\"-MM-DD\")}`;\n    }\n    return \"\";\n  }, [value]);\n\n  if (InputComponent) {\n    return (\n      <InputComponent\n        ref={ref}\n        value={thaiDate}\n        onChange={onChange}\n        {...props}\n      />\n    );\n  }\n  return (\n    <input\n      ref={ref}\n      value={thaiDate}\n      data-testid=\"thdpk-input\"\n      onChange={onChange}\n      {...props}\n    />\n  );\n};\nexport const CustomInputWrapped = (\n  InputComponent?: React.ElementType | null,\n  inputProps?: React.InputHTMLAttributes<HTMLInputElement>,\n  displayFormat?: string\n) => {\n  if (isReact19OrNewer) {\n    return ({ ref, ...props }: any) =>\n      componentWithRefBinding(\n        { ...props, ...inputProps, _displayFormat: displayFormat },\n        ref,\n        InputComponent\n      );\n  }\n  return forwardRef<HTMLInputElement, any>((props, ref) =>\n    componentWithRefBinding(\n      { ...props, ...inputProps, _displayFormat: displayFormat },\n      ref,\n      InputComponent\n    )\n  );\n};\n","import { clsx, type ClassValue } from \"clsx\";\nimport { twMerge } from \"tailwind-merge\";\n\n/**\n * Convert christ year to buddhist year (+543)\n */\nexport const ConvertToThaiYear = (christYear: number) => {\n  return christYear + 543;\n};\n\n/**\n * Get highlighted list by date\n */\nexport const GetHighlightByDate = (date = new Date()) => [\n  {\n    \"react-datepicker__day--highlighted-today\": [date],\n  },\n];\n\n/**\n * Merge and deduplicate classnames using tailwind-merge and clsx.\n */\nexport const cn = (...inputs: ClassValue[]) => {\n  return twMerge(clsx(inputs));\n};\n","class YearListGenerator {\n  dateLibrary: (_d?: any) => any;\n\n  constructor(dateLibrary?: any) {\n    this.dateLibrary = dateLibrary;\n  }\n\n  RangeMaker(startVal = 0, endVal = 0, increment = 0) {\n    let list: Array<number> = [];\n    if (increment <= 0) {\n      return list;\n    }\n    for (let index = startVal; index <= endVal; index = index + increment) {\n      list = [...list, index];\n    }\n    return list;\n  }\n\n  Generate(scope: number = 99, minDate: any, maxDate: any) {\n    const scopeYear = scope;\n    const currentYear = this.dateLibrary().year();\n    const minYear = minDate\n      ? this.dateLibrary(minDate).year()\n      : currentYear - scopeYear;\n    const maxYear = maxDate\n      ? this.dateLibrary(maxDate).year()\n      : currentYear + scopeYear;\n    return this.RangeMaker(minYear, maxYear, 1);\n  }\n}\n\nexport default YearListGenerator;\n","export const THAI_MONTH_LIST: Array<string> = [\n  \"มกราคม\",\n  \"กุมภาพันธ์\",\n  \"มีนาคม\",\n  \"เมษายน\",\n  \"พฤษภาคม\",\n  \"มิถุนายน\",\n  \"กรกฎาคม\",\n  \"สิงหาคม\",\n  \"กันยายน\",\n  \"ตุลาคม\",\n  \"พฤศจิกายน\",\n  \"ธันวาคม\",\n];\n","import React from \"react\";\nimport { cn } from \"../utils\";\n\nconst NavigateButton = ({\n  className,\n  type = \"button\",\n  disabled,\n  onClick,\n  children,\n  ...props\n}: React.ComponentProps<\"button\">) => {\n  return (\n    <button\n      className={cn(className)}\n      type={type}\n      onClick={onClick}\n      disabled={disabled}\n      {...props}\n    >\n      {children}\n    </button>\n  );\n};\n\nexport default NavigateButton;\n","import React from \"react\";\nimport { cn } from \"../utils\";\n\nconst NavigateSelect = ({\n  className,\n  value,\n  onChange,\n  children,\n  ...props\n}: React.SelectHTMLAttributes<HTMLSelectElement>) => {\n  return (\n    <select\n      className={cn(className)}\n      value={value}\n      onChange={onChange}\n      {...props}\n    >\n      {children}\n    </select>\n  );\n};\n\nexport default NavigateSelect;\n","import dayjs from \"dayjs\";\nimport React, { PropsWithChildren } from \"react\";\nimport { type ReactDatePickerCustomHeaderProps } from \"react-datepicker\";\n\nimport { THAI_MONTH_LIST } from \"../config/constants\";\nimport { cn, ConvertToThaiYear } from \"../utils\";\nimport NavigateButton from \"./NavigateButton\";\nimport NavigateSelect from \"./NavigateSelect\";\n\nexport const HeaderContainer: React.FC<PropsWithChildren> = ({\n  className = \"\",\n  children,\n}: PropsWithChildren<{ className?: string }>) => (\n  <div className={cn(\"tdpk-header\", className)}>{children}</div>\n);\n\nexport const CustomHeader = (\n  prevButtonIcon: React.ReactNode = \"<\",\n  nextButtonIcon: React.ReactNode = \">\",\n  prevButtonClassName: string = \"\",\n  nextButtonClassName: string = \"\",\n  monthSelectClassName: string = \"\",\n  yearSelectClassName: string = \"\",\n  yearOptions: Array<number> = []\n) => {\n  return ({\n    date,\n    changeYear,\n    changeMonth,\n    decreaseMonth,\n    increaseMonth,\n    prevMonthButtonDisabled,\n    nextMonthButtonDisabled,\n  }: ReactDatePickerCustomHeaderProps) => {\n    return (\n      <HeaderContainer>\n        <NavigateButton\n          className={cn(\"tdpk-header-prev-btn\", prevButtonClassName)}\n          disabled={prevMonthButtonDisabled}\n          onClick={decreaseMonth}\n        >\n          {prevButtonIcon}\n        </NavigateButton>\n\n        <NavigateSelect\n          className={cn(\"tdpk-header-select-month\", monthSelectClassName)}\n          value={THAI_MONTH_LIST[dayjs(date).month()]}\n          onChange={({ target }) =>\n            changeMonth(THAI_MONTH_LIST.indexOf(target.value))\n          }\n        >\n          {THAI_MONTH_LIST.map((option) => (\n            <option key={option} value={option}>\n              {option}\n            </option>\n          ))}\n        </NavigateSelect>\n\n        <NavigateSelect\n          className={cn(\"tdpk-header-select-year\", yearSelectClassName)}\n          value={dayjs(date).year()}\n          onChange={({ target }) => changeYear(Number(target.value))}\n        >\n          {yearOptions.map((option) => (\n            <option key={`${option}`} value={`${option}`}>\n              {ConvertToThaiYear(option)}\n            </option>\n          ))}\n        </NavigateSelect>\n\n        <NavigateButton\n          className={cn(\"tdpk-header-next-btn\", nextButtonClassName)}\n          disabled={nextMonthButtonDisabled}\n          onClick={increaseMonth}\n        >\n          {nextButtonIcon}\n        </NavigateButton>\n      </HeaderContainer>\n    );\n  };\n};\n","import dayjs from \"dayjs\";\nimport \"dayjs/locale/th\";\nimport buddhistEra from \"dayjs/plugin/buddhistEra\";\nimport React, { useMemo, useRef, useState } from \"react\";\nimport DatePicker, { registerLocale, setDefaultLocale } from \"react-datepicker\";\n\nimport th from \"../config/locale/th\";\nimport { useStylesheet } from \"../hooks/useStylesheet\";\nimport { ConvertToThaiYear, GetHighlightByDate } from \"../utils\";\nimport YearListGenerator from \"../utils/YearListGenerator\";\nimport { CustomHeader } from \"./CustomHeader\";\nimport { CustomInputWrapped } from \"./CustomInputWrapped\";\n\nconst locale = \"th\";\nregisterLocale(locale, th);\nsetDefaultLocale(locale);\n\ndayjs.locale(locale);\ndayjs.extend(buddhistEra);\n\nconst yearGenerator = new YearListGenerator(dayjs);\n\nconst ReactDatePicker =\n  (DatePicker as unknown as { default: typeof DatePicker }).default ??\n  DatePicker;\n\nexport interface HighlightDate {\n  [className: string]: Date[];\n}\nexport interface ThaiDatePickerProps {\n  children?: React.ReactNode | null;\n  clearable?: boolean;\n  customInput?: React.ElementType<any> | null;\n  disabled?: boolean;\n  header?: {\n    prevButtonIcon?: React.ReactNode;\n    nextButtonIcon?: React.ReactNode;\n    prevButtonClassName?: string;\n    nextButtonClassName?: string;\n    monthSelectClassName?: string;\n    yearSelectClassName?: string;\n  } | null;\n  highlightDates?: (Date | HighlightDate)[];\n  id?: string;\n  inputProps?:\n    | (any & {\n        displayFormat?: string;\n      })\n    | null;\n  maxDate?: Date | string;\n  minDate?: Date | string;\n  noIntegratedStyle?: boolean;\n  onChange?: (christDate: string, thaiDate: string) => void;\n  placeholder?: string;\n  reactDatePickerProps?: React.ComponentProps<typeof DatePicker>;\n  readOnly?: boolean;\n  value?: string;\n  yearBoundary?: number;\n}\n\nconst defaultProps = {\n  children: null,\n  clearable: true,\n  customInput: null,\n  disabled: false,\n  header: null,\n  highlightDates: GetHighlightByDate(),\n  id: \"thdpk-container\",\n  inputProps: null,\n  maxDate: undefined,\n  minDate: undefined,\n  noIntegratedStyle: false,\n  onChange: (_christDate: string, _thaiDate: string) => null,\n  placeholder: \"\",\n  reactDatePickerProps: {},\n  readOnly: false,\n  value: \"\",\n  yearBoundary: 99,\n};\n\nexport const ThaiDatePicker = ({\n  children = defaultProps.children,\n  clearable = defaultProps.clearable,\n  customInput = defaultProps.customInput,\n  disabled = defaultProps.disabled,\n  header = defaultProps.header,\n  highlightDates = defaultProps.highlightDates,\n  id = defaultProps.id,\n  inputProps = defaultProps.inputProps,\n  maxDate = defaultProps.maxDate,\n  minDate = defaultProps.minDate,\n  noIntegratedStyle = defaultProps.noIntegratedStyle,\n  onChange = defaultProps.onChange,\n  placeholder = defaultProps.placeholder,\n  reactDatePickerProps = defaultProps.reactDatePickerProps,\n  readOnly = defaultProps.readOnly,\n  value = defaultProps.value,\n  yearBoundary = defaultProps.yearBoundary,\n}: ThaiDatePickerProps) => {\n  const isClearable = !(disabled || readOnly) && (clearable ?? true);\n  const {\n    prevButtonIcon,\n    nextButtonIcon,\n    prevButtonClassName,\n    nextButtonClassName,\n    monthSelectClassName,\n    yearSelectClassName,\n  } = header ?? {};\n\n  const datePickerRef = useRef(null);\n  useStylesheet(datePickerRef, !noIntegratedStyle);\n\n  const [selectedDate, setSelectedDate] = useState<dayjs.Dayjs | null>(\n    value ? dayjs(value) : null\n  );\n\n  const valueAsDate = useMemo(() => {\n    if (value) {\n      return new Date(value);\n    } else if (value === \"\") {\n      return null;\n    }\n    return selectedDate ? new Date(selectedDate.toDate()) : null;\n  }, [value, selectedDate]);\n  const minDateAsDate = useMemo(\n    () => (minDate ? new Date(minDate) : undefined),\n    [minDate]\n  );\n  const maxDateAsDate = useMemo(\n    () => (maxDate ? new Date(maxDate) : undefined),\n    [maxDate]\n  );\n  const YearOptions = useMemo(\n    () => yearGenerator.Generate(yearBoundary, minDateAsDate, maxDateAsDate),\n    [yearBoundary, minDateAsDate, maxDateAsDate]\n  );\n  const CustomInput = useMemo(() => {\n    const { displayFormat, style, ...remainInputProps } = inputProps ?? {};\n    return CustomInputWrapped(\n      customInput,\n      {\n        ...remainInputProps,\n        style: { width: \"100%\", ...style },\n      },\n      displayFormat\n    );\n  }, [customInput, inputProps]);\n\n  const handleChange = (date: any) => {\n    const dayjsObj = dayjs(date);\n    if (dayjsObj.isValid()) {\n      setSelectedDate(dayjsObj);\n      let christDate = dayjsObj.format(\"YYYY-MM-DD\");\n      let thaiDate = `${ConvertToThaiYear(dayjsObj.year())}${dayjsObj.format(\n        \"-MM-DD\"\n      )}`;\n      onChange?.(christDate, thaiDate);\n      return;\n    }\n    onChange?.(\"\", \"\");\n  };\n\n  return (\n    <div id={id} ref={datePickerRef}>\n      <ReactDatePicker\n        locale={locale}\n        minDate={minDateAsDate}\n        maxDate={maxDateAsDate}\n        isClearable={isClearable}\n        disabled={disabled}\n        readOnly={readOnly}\n        placeholderText={placeholder}\n        highlightDates={highlightDates}\n        customInput={React.createElement(CustomInput)}\n        selected={valueAsDate}\n        onChange={handleChange}\n        renderCustomHeader={CustomHeader(\n          prevButtonIcon,\n          nextButtonIcon,\n          prevButtonClassName,\n          nextButtonClassName,\n          monthSelectClassName,\n          yearSelectClassName,\n          YearOptions\n        )}\n        {...reactDatePickerProps}\n      >\n        {children}\n      </ReactDatePicker>\n    </div>\n  );\n};\n"],"names":["formatDistanceLocale","lessThanXSeconds","one","other","xSeconds","halfAMinute","lessThanXMinutes","xMinutes","aboutXHours","xHours","xDays","aboutXMonths","xMonths","aboutXYears","xYears","overXYears","almostXYears","buildFormatLongFn","args","dirtyOptions","options","width","String","defaultWidth","formats","formatLong","date","full","long","medium","short","time","dateTime","formatRelativeLocale","lastWeek","yesterday","today","tomorrow","nextWeek","buildLocalizeFn","dirtyIndex","valuesArray","context","formattingValues","defaultFormattingWidth","_defaultWidth","_width","values","argumentCallback","buildMatchFn","dirtyString","string","matchResult","match","matchPatterns","defaultMatchWidth","value","matchedString","parsePatterns","defaultParseWidth","Object","prototype","toString","call","array","key","length","test","findIndex","object","hasOwnProperty","findKey","valueCallback","rest","slice","code","formatDistance","token","count","result","replace","addSuffix","comparison","formatRelative","_date","_baseDate","_options","localize","ordinalNumber","dirtyNumber","Number","era","narrow","abbreviated","wide","quarter","month","day","dayPeriod","am","pm","midnight","noon","morning","afternoon","evening","night","matchPattern","parsePattern","parseInt","parseResult","any","index","weekStartsOn","firstWeekContainsDate","useIsomorphicLayoutEffect","window","useLayoutEffect","useEffect","styleElementMap","Map","r","e","t","f","n","Array","isArray","o","createClassGroupUtils","config","classMap","createClassMap","conflictingClassGroups","conflictingClassGroupModifiers","getClassGroupId","className","classParts","split","shift","getGroupRecursive","getGroupIdForArbitraryProperty","getConflictingClassGroupIds","classGroupId","hasPostfixModifier","conflicts","classPartObject","nextClassPartObject","nextPart","get","classGroupFromNextClassPart","undefined","validators","classRest","join","find","validator","arbitraryPropertyRegex","arbitraryPropertyClassName","exec","property","substring","indexOf","theme","classGroups","processClassesRecursively","classGroup","forEach","classDefinition","isThemeGetter","push","entries","getPart","path","currentClassPartObject","pathPart","has","set","func","createLruCache","maxCacheSize","cacheSize","cache","previousCache","update","createParseClassName","prefix","experimentalParseClassName","parseClassName","modifiers","postfixModifierPosition","bracketDepth","parenDepth","modifierStart","currentCharacter","MODIFIER_SEPARATOR","baseClassNameWithImportantModifier","baseClassName","stripImportantModifier","hasImportantModifier","maybePostfixModifierPosition","fullPrefix","parseClassNameOriginal","startsWith","isExternal","endsWith","createSortModifiers","orderSensitiveModifiers","fromEntries","map","modifier","sortedModifiers","unsortedModifiers","sort","SPLIT_CLASSES_REGEX","twJoin","argument","resolvedValue","arguments","toValue","mix","k","createTailwindMerge","createConfigFirst","createConfigRest","configUtils","cacheGet","cacheSet","functionToCall","classList","reduce","previousConfig","createConfigCurrent","sortModifiers","createConfigUtils","tailwindMerge","cachedResult","classGroupsInConflict","classNames","trim","originalClassName","variantModifier","modifierId","classId","includes","conflictGroups","i","mergeClassList","apply","fromTheme","themeGetter","arbitraryValueRegex","arbitraryVariableRegex","fractionRegex","tshirtUnitRegex","lengthUnitRegex","colorFunctionRegex","shadowRegex","imageRegex","isFraction","isNumber","Boolean","isNaN","isInteger","isPercent","isTshirtSize","isAny","isLengthOnly","isNever","isShadow","isImage","isAnyNonArbitrary","isArbitraryValue","isArbitraryVariable","isArbitrarySize","getIsArbitraryValue","isLabelSize","isArbitraryLength","isLabelLength","isArbitraryNumber","isLabelNumber","isArbitraryPosition","isLabelPosition","isArbitraryImage","isLabelImage","isArbitraryShadow","isArbitraryVariableLength","getIsArbitraryVariable","isArbitraryVariableFamilyName","isLabelFamilyName","isArbitraryVariablePosition","isArbitraryVariableSize","isArbitraryVariableImage","isArbitraryVariableShadow","isLabelShadow","testLabel","testValue","shouldMatchNoLabel","label","imageLabels","Set","sizeLabels","twMerge","themeColor","themeFont","themeText","themeFontWeight","themeTracking","themeLeading","themeBreakpoint","themeContainer","themeSpacing","themeRadius","themeShadow","themeInsetShadow","themeDropShadow","themeBlur","themePerspective","themeAspect","themeEase","themeAnimate","scaleInset","scaleGridTemplateColsRows","scaleGridColRowStartAndEnd","span","scaleGridColRowStartOrEnd","scaleGridAutoColsRows","scaleGap","scaleUnambiguousSpacing","scalePadding","scaleMargin","scaleSizing","scaleColor","scaleGradientStopPosition","scaleRadius","scaleBorderWidth","scaleBlur","scaleOrigin","scaleRotate","scaleScale","scaleSkew","scaleTranslate","animate","aspect","blur","breakpoint","color","container","ease","font","leading","perspective","radius","shadow","spacing","text","tracking","columns","box","display","sr","float","clear","isolation","overflow","overscroll","position","inset","start","end","top","right","bottom","left","visibility","z","basis","flex","grow","shrink","order","col","row","gap","justify","content","items","self","p","px","py","ps","pe","pt","pr","pb","pl","m","mx","my","ms","me","mt","mr","mb","ml","size","w","screen","h","list","placeholder","decoration","indent","align","whitespace","break","hyphens","bg","repeat","linear","to","radial","conic","from","via","rounded","border","divide","outline","ring","opacity","filter","brightness","contrast","grayscale","invert","saturate","sepia","table","caption","transition","duration","delay","backface","rotate","scale","skew","transform","origin","translate","accent","appearance","caret","scheme","cursor","resize","scroll","snap","touch","select","fill","stroke","_split$at","ConvertToThaiYear","christYear","cn","clsx","YearListGenerator","dateLibrary","this","_proto","RangeMaker","startVal","endVal","increment","concat","Generate","scope","minDate","maxDate","scopeYear","currentYear","year","minYear","maxYear","THAI_MONTH_LIST","NavigateButton","_ref","_ref$type","type","disabled","onClick","children","props","_objectWithoutPropertiesLoose","_excluded","React","createElement","_extends","NavigateSelect","onChange","HeaderContainer","_ref$className","CustomHeader","prevButtonIcon","nextButtonIcon","prevButtonClassName","nextButtonClassName","monthSelectClassName","yearSelectClassName","yearOptions","_ref2","changeYear","changeMonth","decreaseMonth","increaseMonth","prevMonthButtonDisabled","nextMonthButtonDisabled","dayjs","_ref3","target","option","_ref4","_excluded2","isReact19OrNewer","version","at","componentWithRefBinding","combinedProps","ref","InputComponent","_displayFormat","thaiDate","useMemo","thaiYear","wrappedDisplayFormat","format","locale","registerLocale","th","setDefaultLocale","extend","buddhistEra","yearGenerator","ReactDatePicker","_DatePicker$default","DatePicker","defaultProps","clearable","customInput","header","highlightDates","Date","id","inputProps","noIntegratedStyle","_christDate","_thaiDate","reactDatePickerProps","readOnly","yearBoundary","_ref$children","nodeRef","enable","_ref$clearable","_ref$customInput","_ref$disabled","_ref$header","_ref$highlightDates","_ref$id","_ref$inputProps","_ref$maxDate","_ref$minDate","_ref$noIntegratedStyl","_ref$onChange","_ref$placeholder","_ref$reactDatePickerP","_ref$readOnly","_ref$value","_ref$yearBoundary","isClearable","datePickerRef","useRef","parentDocument","_nodeRef$current","current","document","getParentDocument","styleElement","innerHTML","head","appendChild","_useState","useState","selectedDate","setSelectedDate","valueAsDate","toDate","minDateAsDate","maxDateAsDate","YearOptions","CustomInput","displayFormat","style","remainInputProps","forwardRef","CustomInputWrapped","placeholderText","selected","dayjsObj","isValid","christDate","renderCustomHeader"],"mappings":"0oBAAA,IAAIA,EAAuB,CACzBC,iBAAkB,CAChBC,IAAK,oBACLC,MAAO,6BAETC,SAAU,CACRF,IAAK,WACLC,MAAO,oBAETE,YAAa,YACbC,iBAAkB,CAChBJ,IAAK,kBACLC,MAAO,2BAETI,SAAU,CACRL,IAAK,SACLC,MAAO,kBAETK,YAAa,CACXN,IAAK,mBACLC,MAAO,4BAETM,OAAQ,CACNP,IAAK,YACLC,MAAO,qBAETO,MAAO,CACLR,IAAK,QACLC,MAAO,iBAETQ,aAAc,CACZT,IAAK,iBACLC,MAAO,0BAETS,QAAS,CACPV,IAAK,UACLC,MAAO,mBAETU,YAAa,CACXX,IAAK,cACLC,MAAO,uBAETW,OAAQ,CACNZ,IAAK,OACLC,MAAO,gBAETY,WAAY,CACVb,IAAK,eACLC,MAAO,wBAETa,aAAc,CACZd,IAAK,aACLC,MAAO,uBCpDa,SAAAc,EAAkBC,GACxC,OAAiBC,SAAAA,GACf,IAAIC,EAAUD,GAAgB,CAAA,EAC1BE,EAAQD,EAAQC,MAAQC,OAAOF,EAAQC,OAASH,EAAKK,aAEzD,OADaL,EAAKM,QAAQH,IAAUH,EAAKM,QAAQN,EAAKK,aAExD,CACF,CCNA,IAkBIE,EAAa,CACfC,KAAMT,EAAkB,CACtBO,QApBc,CAChBG,KAAM,uBACNC,KAAM,YACNC,OAAQ,UACRC,MAAO,cAiBLP,aAAc,SAEhBQ,KAAMd,EAAkB,CACtBO,QAlBc,CAChBG,KAAM,kBACNC,KAAM,eACNC,OAAQ,aACRC,MAAO,WAeLP,aAAc,WAEhBS,SAAUf,EAAkB,CAC1BO,QAhBkB,CACpBG,KAAM,2BACNC,KAAM,2BACNC,OAAQ,qBACRC,MAAO,sBAaLP,aAAc,UC9BdU,EAAuB,CACzBC,SAAU,sBACVC,UAAW,sBACXC,MAAO,iBACPC,SAAU,mBACVC,SAAU,gBACVnC,MAAO,cCNeoC,EAAgBrB,GACtC,OAAiBsB,SAAAA,EAAYrB,GAC3B,IAEIsB,EAFArB,EAAUD,GAAgB,CAAE,EAIhC,GAAgB,gBAHFC,EAAQsB,QAAUpB,OAAOF,EAAQsB,SAAW,eAG1BxB,EAAKyB,iBAAkB,CACrD,IAAIpB,EAAeL,EAAK0B,wBAA0B1B,EAAKK,aACnDF,EAAQD,EAAQC,MAAQC,OAAOF,EAAQC,OAASE,EACpDkB,EAAcvB,EAAKyB,iBAAiBtB,IAAUH,EAAKyB,iBAAiBpB,EACtE,KAAO,CACL,IAAIsB,EAAgB3B,EAAKK,aAErBuB,EAAS1B,EAAQC,MAAQC,OAAOF,EAAQC,OAASH,EAAKK,aAE1DkB,EAAcvB,EAAK6B,OAAOD,IAAW5B,EAAK6B,OAAOF,EACnD,CAGA,OAAOJ,EADKvB,EAAK8B,iBAAmB9B,EAAK8B,iBAAiBR,GAAcA,EAE1E,CACF,CCrBwB,SAAAS,EAAa/B,GACnC,OAAO,SAAUgC,EAAa/B,GAC5B,IAAIgC,EAAS7B,OAAO4B,GAChB9B,EAAUD,GAAgB,CAAE,EAC5BE,EAAQD,EAAQC,MAEhB+B,EAAcD,EAAOE,MADLhC,GAASH,EAAKoC,cAAcjC,IAAWH,EAAKoC,cAAcpC,EAAKqC,oBAGnF,IAAKH,EACH,OACF,KAEA,IAEII,EAFAC,EAAgBL,EAAY,GAC5BM,EAAiBrC,GAASH,EAAKwC,cAAcrC,IAAWH,EAAKwC,cAAcxC,EAAKyC,mBAepF,OAXEH,EADoD,mBAAlDI,OAAOC,UAAUC,SAASC,KAAKL,GA2BvC,SAAmBM,GACjB,IAAK,IAAIC,EAAM,EAAGA,EAAMD,EAAME,OAAQD,IACpC,GAAcD,EAAMC,GA3BDE,KAAKV,GA4BtB,OAAOQ,CAGb,CAhCcG,CAAUV,GAkBxB,SAAiBW,GACf,IAAK,IAAIJ,KAAOI,EACd,GAAIA,EAAOC,eAAeL,IAAkBI,EAAOJ,GAfhCE,KAAKV,GAgBtB,OAAOQ,CAGb,CApBcM,CAAQb,GAKlBF,EAAQtC,EAAKsD,cAAgBtD,EAAKsD,cAAchB,GAASA,EAElD,CACLA,MAFFA,EAAQpC,EAAQoD,cAAgBpD,EAAQoD,cAAchB,GAASA,EAG7DiB,KAAMtB,EAAOuB,MAAMjB,EAAcS,QAErC,CACF,CC/BA,ICF4ChD,ICgB/B,CACXyD,KAAM,KACNC,wBRqCqCC,EAAOC,EAAO1D,GAEnD,IAAI2D,EAUJ,OAXA3D,EAAUA,GAAW,CAAA,EAInB2D,EADyC,iBAAhC/E,EAAqB6E,GACrB7E,EAAqB6E,GACX,IAAVC,EACA9E,EAAqB6E,GAAO3E,IAE5BF,EAAqB6E,GAAO1E,MAAM6E,QAAQ,YAAaF,GAG9D1D,EAAQ6D,UACN7D,EAAQ8D,WAAa,EACT,gBAAVL,EACK,KAAOE,EAEP,MAAQA,EAGVA,EAAS,YAIbA,CACT,EQ7DEtD,WNcaA,EMbb0D,wBLZqCN,EAAOO,EAAOC,EAAWC,GAC9D,OAAOrD,EAAqB4C,EAC9B,EKWEU,SCuEa,CACbC,cANF,SAAuBC,GAErB,OADaC,OAAOD,EAEtB,EAIEE,IAAKpD,EAAgB,CACnBQ,OA9FY,CACd6C,OAAQ,CAAC,IAAK,MACdC,YAAa,CAAC,KAAM,QACpBC,KAAM,CAAC,iBAAkB,iBA4FvBvE,aAAc,SAEhBwE,QAASxD,EAAgB,CACvBQ,OA7FgB,CAClB6C,OAAQ,CAAC,IAAK,IAAK,IAAK,KACxBC,YAAa,CAAC,KAAM,KAAM,KAAM,MAChCC,KAAM,CAAC,YAAa,eAAgB,eAAgB,iBA2FlDvE,aAAc,OACdyB,iBAAkB,SAAU+C,GAC1B,OAAOL,OAAOK,GAAW,CAC3B,IAEFC,MAAOzD,EAAgB,CACrBQ,OAzFc,CAChB6C,OAAQ,CAAC,OAAQ,OAAQ,QAAS,QAAS,OAAQ,QAAS,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,QACpGC,YAAa,CAAC,OAAQ,OAAQ,QAAS,QAAS,OAAQ,QAAS,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,QACzGC,KAAM,CAAC,SAAU,aAAc,SAAU,SAAU,UAAW,WAAY,UAAW,UAAW,UAAW,SAAU,YAAa,YAuFhIvE,aAAc,SAEhB0E,IAAK1D,EAAgB,CACnBQ,OAnGY,CACd6C,OAAQ,CAAC,MAAO,KAAM,KAAM,KAAM,MAAO,KAAM,MAC/C9D,MAAO,CAAC,MAAO,KAAM,KAAM,KAAM,MAAO,KAAM,MAC9C+D,YAAa,CAAC,MAAO,KAAM,KAAM,KAAM,MAAO,KAAM,MACpDC,KAAM,CAAC,UAAW,SAAU,SAAU,MAAO,WAAY,QAAS,UAgGhEvE,aAAc,SAEhB2E,UAAW3D,EAAgB,CACzBQ,OA5FkB,CACpB6C,OAAQ,CACNO,GAAI,aACJC,GAAI,aACJC,SAAU,YACVC,KAAM,SACNC,QAAS,OACTC,UAAW,OACXC,QAAS,OACTC,MAAO,WAETb,YAAa,CACXM,GAAI,aACJC,GAAI,aACJC,SAAU,YACVC,KAAM,SACNC,QAAS,OACTC,UAAW,OACXC,QAAS,OACTC,MAAO,WAETZ,KAAM,CACJK,GAAI,aACJC,GAAI,aACJC,SAAU,YACVC,KAAM,SACNC,QAAS,OACTC,UAAW,OACXC,QAAS,OACTC,MAAO,YAgEPnF,aAAc,OACdoB,iBA9D4B,CAC9BiD,OAAQ,CACNO,GAAI,aACJC,GAAI,aACJC,SAAU,YACVC,KAAM,SACNC,QAAS,UACTC,UAAW,aACXC,QAAS,UACTC,MAAO,cAETb,YAAa,CACXM,GAAI,aACJC,GAAI,aACJC,SAAU,YACVC,KAAM,SACNC,QAAS,UACTC,UAAW,aACXC,QAAS,UACTC,MAAO,cAETZ,KAAM,CACJK,GAAI,aACJC,GAAI,aACJC,SAAU,YACVC,KAAM,SACNC,QAAS,UACTC,UAAW,aACXC,QAAS,UACTC,MAAO,eAkCP9D,uBAAwB,UD/F1BS,MFgCU,CACVmC,eCvD0CtE,EDuDP,CACjCyF,aAtD4B,QAuD5BC,aAtD4B,OAuD5BpC,cAAe,SAAUhB,GACvB,OAAOqD,SAASrD,EAAO,GACzB,GC3DeN,SAAAA,EAAa/B,GAC5B,IAAIgC,EAAS7B,OAAO4B,GAChB9B,EAAUD,GAAgB,CAAA,EAC1BiC,EAAcD,EAAOE,MAAMnC,EAAKyF,cAEpC,IAAKvD,EACH,OACF,KAEA,IAAIK,EAAgBL,EAAY,GAC5B0D,EAAc3D,EAAOE,MAAMnC,EAAK0F,cAEpC,IAAKE,EACH,OACF,KAEA,IAAItD,EAAQtC,EAAKsD,cAAgBtD,EAAKsD,cAAcsC,EAAY,IAAMA,EAAY,GAElF,MAAO,CACLtD,MAFFA,EAAQpC,EAAQoD,cAAgBpD,EAAQoD,cAAchB,GAASA,EAG7DiB,KAAMtB,EAAOuB,MAAMjB,EAAcS,QAErC,GDuCAyB,IAAK1C,EAAa,CAChBK,cA3DmB,CACrBsC,OAAQ,mBACRC,YAAa,4EACbC,KAAM,0CAyDJvC,kBAAmB,OACnBG,cAxDmB,CACrBqD,IAAK,CAAC,SAAU,8CAwDdpD,kBAAmB,QAErBoC,QAAS9C,EAAa,CACpBK,cAzDuB,CACzBsC,OAAQ,WACRC,YAAa,YACbC,KAAM,0BAuDJvC,kBAAmB,OACnBG,cAtDuB,CACzBqD,IAAK,CAAC,iBAAkB,WAAY,WAAY,aAsD9CpD,kBAAmB,MACnBa,cAAe,SAAUwC,GACvB,OAAOA,EAAQ,CACjB,IAEFhB,MAAO/C,EAAa,CAClBK,cA1DqB,CACvBsC,OAAQ,qHACRC,YAAa,sHACbC,KAAM,yGAwDJvC,kBAAmB,OACnBG,cAvDqB,CACvBoC,KAAM,CAAC,OAAQ,QAAS,OAAQ,OAAQ,QAAS,OAAQ,QAAS,MAAO,QAAS,MAAO,QAAS,OAClGiB,IAAK,CAAC,aAAc,aAAc,cAAe,cAAe,aAAc,cAAe,aAAc,aAAc,aAAc,aAAc,aAAc,eAsDjKpD,kBAAmB,QAErBsC,IAAKhD,EAAa,CAChBK,cAvDmB,CACrBsC,OAAQ,2CACR9D,MAAO,2CACP+D,YAAa,2CACbC,KAAM,sDAoDJvC,kBAAmB,OACnBG,cAnDmB,CACrBoC,KAAM,CAAC,OAAQ,OAAQ,OAAQ,QAAS,OAAQ,MAAO,QACvDiB,IAAK,CAAC,OAAQ,MAAO,MAAO,WAAY,OAAQ,MAAO,QAkDrDpD,kBAAmB,QAErBuC,UAAWjD,EAAa,CACtBK,cAnDyB,CAC3ByD,IAAK,yFAmDHxD,kBAAmB,MACnBG,cAlDyB,CAC3BqD,IAAK,CACHZ,GAAI,eACJC,GAAI,eACJC,SAAU,cACVC,KAAM,WACNC,QAAS,QACTC,UAAW,QACXC,QAAS,QACTC,MAAO,aA0CP/C,kBAAmB,SEtErBvC,QAAS,CACP6F,aAAc,EAGdC,sBAAuB,IErBrBC,EACc,oBAAXC,OAAyBC,EAAeA,gBAAGC,YAK9CC,EAAkB,IAAIC,ICZ5B,SAASC,EAAEC,GAAG,IAAIC,EAAEC,EAAEC,EAAE,GAAG,GAAG,iBAAiBH,GAAG,iBAAiBA,EAAEG,GAAGH,OAAO,GAAG,iBAAiBA,EAAE,GAAGI,MAAMC,QAAQL,GAAG,CAAC,IAAIM,EAAEN,EAAExD,OAAO,IAAIyD,EAAE,EAAEA,EAAEK,EAAEL,IAAID,EAAEC,KAAKC,EAAEH,EAAEC,EAAEC,OAAOE,IAAIA,GAAG,KAAKA,GAAGD,EAAE,MAAM,IAAIA,KAAKF,EAAEA,EAAEE,KAAKC,IAAIA,GAAG,KAAKA,GAAGD,GAAG,OAAOC,CAAC,CCAhP,MACMI,EAAwBC,IAC5B,MAAMC,EAAWC,EAAeF,IAC1BG,uBACJA,EAAsBC,+BACtBA,GACEJ,EAgBJ,MAAO,CACLK,gBAhBsBC,IACtB,MAAMC,EAAaD,EAAUE,MARJ,KAazB,MAHsB,KAAlBD,EAAW,IAAmC,IAAtBA,EAAWvE,QACrCuE,EAAWE,QAENC,EAAkBH,EAAYN,IAAaU,EAA+BL,EAAU,EAW3FM,4BATkC,CAACC,EAAcC,KACjD,MAAMC,EAAYZ,EAAuBU,IAAiB,GAC1D,OAAIC,GAAsBV,EAA+BS,GAChD,IAAIE,KAAcX,EAA+BS,IAEnDE,CAAS,EAKjB,EAEGL,EAAoB,CAACH,EAAYS,KACrC,GAA0B,IAAtBT,EAAWvE,OACb,OAAOgF,EAAgBH,aAEzB,MACMI,EAAsBD,EAAgBE,SAASC,IAD5BZ,EAAW,IAE9Ba,EAA8BH,EAAsBP,EAAkBH,EAAW/D,MAAM,GAAIyE,QAAuBI,EACxH,GAAID,EACF,OAAOA,EAET,GAA0C,IAAtCJ,EAAgBM,WAAWtF,OAC7B,OAEF,MAAMuF,EAAYhB,EAAWiB,KAxCF,KAyC3B,OAAOR,EAAgBM,WAAWG,KAAK,EACrCC,eACIA,EAAUH,KAAaV,YAAY,EAErCc,EAAyB,aACzBhB,EAAiCL,IACrC,GAAIqB,EAAuB1F,KAAKqE,GAAY,CAC1C,MAAMsB,EAA6BD,EAAuBE,KAAKvB,GAAW,GACpEwB,EAAWF,GAA4BG,UAAU,EAAGH,EAA2BI,QAAQ,MAC7F,GAAIF,EAEF,MAAO,cAAgBA,CAE1B,GAKG5B,EAAiBF,IACrB,MAAMiC,MACJA,EAAKC,YACLA,GACElC,EACEC,EAAW,CACfiB,SAAU,IAAI5B,IACdgC,WAAY,IAEd,IAAK,MAAMT,KAAgBqB,EACzBC,EAA0BD,EAAYrB,GAAeZ,EAAUY,EAAcoB,GAE/E,OAAOhC,CAAQ,EAEXkC,EAA4B,CAACC,EAAYpB,EAAiBH,EAAcoB,KAC5EG,EAAWC,QAAQC,IACjB,GAA+B,iBAApBA,EAAX,CAKA,GAA+B,mBAApBA,EACT,OAAIC,EAAcD,QAChBH,EAA0BG,EAAgBL,GAAQjB,EAAiBH,EAAcoB,QAGnFjB,EAAgBM,WAAWkB,KAAK,CAC9Bd,UAAWY,EACXzB,iBAIJnF,OAAO+G,QAAQH,GAAiBD,QAAQ,EAAEtG,EAAKqG,MAC7CD,EAA0BC,EAAYM,EAAQ1B,EAAiBjF,GAAM8E,EAAcoB,EAAM,EAb1F,MAHmD,KAApBK,EAAyBtB,EAAkB0B,EAAQ1B,EAAiBsB,IAC5EzB,aAAeA,CAgBrC,EACF,EAEE6B,EAAU,CAAC1B,EAAiB2B,KAChC,IAAIC,EAAyB5B,EAU7B,OATA2B,EAAKnC,MAlGsB,KAkGM6B,QAAQQ,IAClCD,EAAuB1B,SAAS4B,IAAID,IACvCD,EAAuB1B,SAAS6B,IAAIF,EAAU,CAC5C3B,SAAU,IAAI5B,IACdgC,WAAY,KAGhBsB,EAAyBA,EAAuB1B,SAASC,IAAI0B,EAAS,GAEjED,CAAsB,EAEzBL,EAAgBS,GAAQA,EAAKT,cAG7BU,EAAiBC,IACrB,GAAIA,EAAe,EACjB,MAAO,CACL/B,IAAK,KAAe,EACpB4B,IAAK,QAGT,IAAII,EAAY,EACZC,EAAQ,IAAI9D,IACZ+D,EAAgB,IAAI/D,IACxB,MAAMgE,EAAS,CAACvH,EAAKT,KACnB8H,EAAML,IAAIhH,EAAKT,GACf6H,IACIA,EAAYD,IACdC,EAAY,EACZE,EAAgBD,EAChBA,EAAQ,IAAI9D,IACb,EAEH,MAAO,CACL,GAAA6B,CAAIpF,GACF,IAAIT,EAAQ8H,EAAMjC,IAAIpF,GACtB,YAAcsF,IAAV/F,EACKA,OAEgC+F,KAApC/F,EAAQ+H,EAAclC,IAAIpF,KAC7BuH,EAAOvH,EAAKT,GACLA,QAFT,CAID,EACD,GAAAyH,CAAIhH,EAAKT,GACH8H,EAAMN,IAAI/G,GACZqH,EAAML,IAAIhH,EAAKT,GAEfgI,EAAOvH,EAAKT,EAEf,EACF,EAKGiI,EAAuBvD,IAC3B,MAAMwD,OACJA,EAAMC,2BACNA,GACEzD,EAOJ,IAAI0D,EAAiBpD,IACnB,MAAMqD,EAAY,GAClB,IAGIC,EAHAC,EAAe,EACfC,EAAa,EACbC,EAAgB,EAEpB,IAAK,IAAIjF,EAAQ,EAAGA,EAAQwB,EAAUtE,OAAQ8C,IAAS,CACrD,IAAIkF,EAAmB1D,EAAUxB,GACjC,GAAqB,IAAjB+E,GAAqC,IAAfC,EAAkB,CAC1C,GAtBmB,MAsBfE,EAAyC,CAC3CL,EAAUnB,KAAKlC,EAAU9D,MAAMuH,EAAejF,IAC9CiF,EAAgBjF,EAvBQmF,EAwBxB,QACD,CACD,GAAyB,MAArBD,EAA0B,CAC5BJ,EAA0B9E,EAC1B,QACD,CACF,CACwB,MAArBkF,EACFH,IAC8B,MAArBG,EACTH,IAC8B,MAArBG,EACTF,IAC8B,MAArBE,GACTF,GAEH,CACD,MAAMI,EAA0D,IAArBP,EAAU3H,OAAesE,EAAYA,EAAUyB,UAAUgC,GAC9FI,EAAgBC,EAAuBF,GAG7C,MAAO,CACLP,YACAU,qBAJ2BF,IAAkBD,EAK7CC,gBACAG,6BALmCV,GAA2BA,EAA0BG,EAAgBH,EAA0BG,OAAgB1C,EAMnJ,EAEH,GAAImC,EAAQ,CACV,MAAMe,EAAaf,EAtDI,IAuDjBgB,EAAyBd,EAC/BA,EAAiBpD,GAAaA,EAAUmE,WAAWF,GAAcC,EAAuBlE,EAAUyB,UAAUwC,EAAWvI,SAAW,CAChI0I,YAAY,EACZf,UAAW,GACXU,sBAAsB,EACtBF,cAAe7D,EACfgE,kCAA8BjD,EAEjC,CACD,GAAIoC,EAA4B,CAC9B,MAAMe,EAAyBd,EAC/BA,EAAiBpD,GAAamD,EAA2B,CACvDnD,YACAoD,eAAgBc,GAEnB,CACD,OAAOd,CAAc,EAEjBU,EAAyBD,GACzBA,EAAcQ,SA3EO,KA4EhBR,EAAcpC,UAAU,EAAGoC,EAAcnI,OAAS,GAMvDmI,EAAcM,WAlFO,KAmFhBN,EAAcpC,UAAU,GAE1BoC,EAQHS,EAAsB5E,IAC1B,MAAM6E,EAA0BnJ,OAAOoJ,YAAY9E,EAAO6E,wBAAwBE,IAAIC,GAAY,CAACA,GAAU,KAmB7G,OAlBsBrB,IACpB,GAAIA,EAAU3H,QAAU,EACtB,OAAO2H,EAET,MAAMsB,EAAkB,GACxB,IAAIC,EAAoB,GAWxB,OAVAvB,EAAUtB,QAAQ2C,IAC4B,MAAhBA,EAAS,IAAcH,EAAwBG,IAEzEC,EAAgBzC,QAAQ0C,EAAkBC,OAAQH,GAClDE,EAAoB,IAEpBA,EAAkB1C,KAAKwC,EACxB,GAEHC,EAAgBzC,QAAQ0C,EAAkBC,QACnCF,CAAe,CAEJ,EAQhBG,EAAsB,MA2E5B,SAASC,IACP,IACIC,EACAC,EAFAzG,EAAQ,EAGR7D,EAAS,GACb,KAAO6D,EAAQ0G,UAAUxJ,SACnBsJ,EAAWE,UAAU1G,QACnByG,EAAgBE,EAAQH,MAC1BrK,IAAWA,GAAU,KACrBA,GAAUsK,GAIhB,OAAOtK,CACT,CACA,MAAMwK,EAAUC,IACd,GAAmB,iBAARA,EACT,OAAOA,EAET,IAAIH,EACAtK,EAAS,GACb,IAAK,IAAI0K,EAAI,EAAGA,EAAID,EAAI1J,OAAQ2J,IAC1BD,EAAIC,KACFJ,EAAgBE,EAAQC,EAAIC,OAC9B1K,IAAWA,GAAU,KACrBA,GAAUsK,GAIhB,OAAOtK,CAAM,EAEf,SAAS2K,EAAoBC,KAAsBC,GACjD,IAAIC,EACAC,EACAC,EACAC,EACJ,SAA2BC,GACzB,MAAMnG,EAAS8F,EAAiBM,OAAO,CAACC,EAAgBC,IAAwBA,EAAoBD,GAAiBR,KAKrH,OAJAE,EAvHsB/F,KAAW,CACnCoD,MAAOH,EAAejD,EAAOmD,WAC7BO,eAAgBH,EAAqBvD,GACrCuG,cAAe3B,EAAoB5E,MAChCD,EAAsBC,KAmHTwG,CAAkBxG,GAChCgG,EAAWD,EAAY3C,MAAMjC,IAC7B8E,EAAWF,EAAY3C,MAAML,IAC7BmD,EAAiBO,EACVA,EAAcN,EACtB,EACD,SAASM,EAAcN,GACrB,MAAMO,EAAeV,EAASG,GAC9B,GAAIO,EACF,OAAOA,EAET,MAAM7J,EA3Ha,EAACsJ,EAAWJ,KACjC,MAAMrC,eACJA,EAAcrD,gBACdA,EAAeO,4BACfA,EAA2B2F,cAC3BA,GACER,EAQEY,EAAwB,GACxBC,EAAaT,EAAUU,OAAOrG,MAAM4E,GAC1C,IAAIvI,EAAS,GACb,IAAK,IAAIiC,EAAQ8H,EAAW5K,OAAS,EAAG8C,GAAS,EAAGA,GAAS,EAAG,CAC9D,MAAMgI,EAAoBF,EAAW9H,IAC/B4F,WACJA,EAAUf,UACVA,EAASU,qBACTA,EAAoBF,cACpBA,EAAaG,6BACbA,GACEZ,EAAeoD,GACnB,GAAIpC,EAAY,CACd7H,EAASiK,GAAqBjK,EAAOb,OAAS,EAAI,IAAMa,EAASA,GACjE,QACD,CACD,IAAIiE,IAAuBwD,EACvBzD,EAAeR,EAAgBS,EAAqBqD,EAAcpC,UAAU,EAAGuC,GAAgCH,GACnH,IAAKtD,EAAc,CACjB,IAAKC,EAAoB,CAEvBjE,EAASiK,GAAqBjK,EAAOb,OAAS,EAAI,IAAMa,EAASA,GACjE,QACD,CAED,GADAgE,EAAeR,EAAgB8D,IAC1BtD,EAAc,CAEjBhE,EAASiK,GAAqBjK,EAAOb,OAAS,EAAI,IAAMa,EAASA,GACjE,QACD,CACDiE,GAAqB,CACtB,CACD,MAAMiG,EAAkBR,EAAc5C,GAAWnC,KAAK,KAChDwF,EAAa3C,EAAuB0C,EAzKnB,IAyK0DA,EAC3EE,EAAUD,EAAanG,EAC7B,GAAI8F,EAAsBO,SAASD,GAEjC,SAEFN,EAAsBnE,KAAKyE,GAC3B,MAAME,EAAiBvG,EAA4BC,EAAcC,GACjE,IAAK,IAAIsG,EAAI,EAAGA,EAAID,EAAenL,SAAUoL,EAE3CT,EAAsBnE,KAAKwE,EADbG,EAAeC,IAI/BvK,EAASiK,GAAqBjK,EAAOb,OAAS,EAAI,IAAMa,EAASA,EAClE,CACD,OAAOA,CAAM,EA6DIwK,CAAelB,EAAWJ,GAEzC,OADAE,EAASE,EAAWtJ,GACbA,CACR,CACD,OAAO,WACL,OAAOqJ,EAAeb,EAAOiC,MAAM,KAAM9B,WAC7C,CACA,CACA,MAAM+B,EAAYxL,IAChB,MAAMyL,EAAcvF,GAASA,EAAMlG,IAAQ,GAE3C,OADAyL,EAAYjF,eAAgB,EACrBiF,CAAW,EAEdC,EAAsB,8BACtBC,EAAyB,8BACzBC,EAAgB,aAChBC,EAAkB,mCAClBC,EAAkB,4HAClBC,EAAqB,2CAErBC,EAAc,kEACdC,EAAa,+FACbC,EAAa3M,GAASqM,EAAc1L,KAAKX,GACzC4M,EAAW5M,GAAS6M,QAAQ7M,KAAWkC,OAAO4K,MAAM5K,OAAOlC,IAC3D+M,EAAY/M,GAAS6M,QAAQ7M,IAAUkC,OAAO6K,UAAU7K,OAAOlC,IAC/DgN,EAAYhN,GAASA,EAAMqJ,SAAS,MAAQuD,EAAS5M,EAAMkB,MAAM,GAAI,IACrE+L,EAAejN,GAASsM,EAAgB3L,KAAKX,GAC7CkN,EAAQ,KAAM,EACdC,EAAenN,GAIrBuM,EAAgB5L,KAAKX,KAAWwM,EAAmB7L,KAAKX,GAClDoN,GAAU,KAAM,EAChBC,GAAWrN,GAASyM,EAAY9L,KAAKX,GACrCsN,GAAUtN,GAAS0M,EAAW/L,KAAKX,GACnCuN,GAAoBvN,IAAUwN,GAAiBxN,KAAWyN,GAAoBzN,GAC9E0N,GAAkB1N,GAAS2N,GAAoB3N,EAAO4N,GAAaR,IACnEI,GAAmBxN,GAASmM,EAAoBxL,KAAKX,GACrD6N,GAAoB7N,GAAS2N,GAAoB3N,EAAO8N,GAAeX,GACvEY,GAAoB/N,GAAS2N,GAAoB3N,EAAOgO,GAAepB,GACvEqB,GAAsBjO,GAAS2N,GAAoB3N,EAAOkO,GAAiBd,IAC3Ee,GAAmBnO,GAAS2N,GAAoB3N,EAAOoO,GAAcd,IACrEe,GAAoBrO,GAAS2N,GAAoB3N,EAAOoN,GAASC,IACjEI,GAAsBzN,GAASoM,EAAuBzL,KAAKX,GAC3DsO,GAA4BtO,GAASuO,GAAuBvO,EAAO8N,IACnEU,GAAgCxO,GAASuO,GAAuBvO,EAAOyO,IACvEC,GAA8B1O,GAASuO,GAAuBvO,EAAOkO,IACrES,GAA0B3O,GAASuO,GAAuBvO,EAAO4N,IACjEgB,GAA2B5O,GAASuO,GAAuBvO,EAAOoO,IAClES,GAA4B7O,GAASuO,GAAuBvO,EAAO8O,IAAe,GAElFnB,GAAsB,CAAC3N,EAAO+O,EAAWC,KAC7C,MAAMzN,EAAS4K,EAAoB5F,KAAKvG,GACxC,QAAIuB,IACEA,EAAO,GACFwN,EAAUxN,EAAO,IAEnByN,EAAUzN,EAAO,IAEd,EAERgN,GAAyB,CAACvO,EAAO+O,EAAWE,GAAqB,KACrE,MAAM1N,EAAS6K,EAAuB7F,KAAKvG,GAC3C,QAAIuB,IACEA,EAAO,GACFwN,EAAUxN,EAAO,IAEnB0N,EAEG,EAGRf,GAAkBgB,GAAmB,aAAVA,EAC3BC,gBAA2B,IAAIC,IAAI,CAAC,QAAS,QAC7ChB,GAAec,GAASC,GAAY3H,IAAI0H,GACxCG,gBAA0B,IAAID,IAAI,CAAC,SAAU,OAAQ,eACrDxB,GAAcsB,GAASG,GAAW7H,IAAI0H,GACtCpB,GAAgBoB,GAAmB,WAAVA,EACzBlB,GAAgBkB,GAAmB,WAAVA,EACzBT,GAAoBS,GAAmB,gBAAVA,EAC7BJ,GAAgBI,GAAmB,WAAVA,EAywEzBI,gBAAuBhF,EA9uEJ,KAMvB,MAAMiF,EAAatD,EAAU,SACvBuD,EAAYvD,EAAU,QACtBwD,EAAYxD,EAAU,QACtByD,EAAkBzD,EAAU,eAC5B0D,EAAgB1D,EAAU,YAC1B2D,EAAe3D,EAAU,WACzB4D,EAAkB5D,EAAU,cAC5B6D,EAAiB7D,EAAU,aAC3B8D,EAAe9D,EAAU,WACzB+D,EAAc/D,EAAU,UACxBgE,EAAchE,EAAU,UACxBiE,EAAmBjE,EAAU,gBAC7BkE,EAAkBlE,EAAU,eAC5BmE,EAAYnE,EAAU,QACtBoE,EAAmBpE,EAAU,eAC7BqE,EAAcrE,EAAU,UACxBsE,EAAYtE,EAAU,QACtBuE,EAAevE,EAAU,WAYzBwE,EAAa,IAAM,CAAC9D,EAAY,KAAM,OAAQ,OAAQc,GAAqBD,GAAkBuC,GAC7FW,EAA4B,IAAM,CAAC3D,EAAW,OAAQ,UAAWU,GAAqBD,IACtFmD,EAA6B,IAAM,CAAC,OAAQ,CAChDC,KAAM,CAAC,OAAQ7D,EAAWU,GAAqBD,KAC9CC,GAAqBD,IAClBqD,EAA4B,IAAM,CAAC9D,EAAW,OAAQU,GAAqBD,IAC3EsD,EAAwB,IAAM,CAAC,OAAQ,MAAO,MAAO,KAAMrD,GAAqBD,IAChFuD,EAAW,IAAM,CAACtD,GAAqBD,GAAkBuC,GAGzDiB,EAA0B,IAAM,CAACvD,GAAqBD,GAAkBuC,GACxEkB,EAAe,IAAM,CAAC,QAASD,KAC/BE,EAAc,IAAM,CAAC,KAAM,UAAWF,KACtCG,EAAc,IAAM,CAACxE,EAAY,OAAQ,KAAM,OAAQ,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAOc,GAAqBD,GAAkBuC,GAC7JqB,EAAa,IAAM,CAAC7B,EAAY9B,GAAqBD,IACrD6D,EAA4B,IAAM,CAACrE,EAAWa,IAC9CyD,EAAc,IAAM,CAE1B,GAAI,OAAQ,OAAQtB,EAAavC,GAAqBD,IAChD+D,EAAmB,IAAM,CAAC,GAAI3E,EAAU0B,GAA2BT,IAGnE2D,EAAY,IAAM,CAExB,GAAI,OAAQpB,EAAW3C,GAAqBD,IACtCiE,EAAc,IAAM,CAAC,SAAU,MAAO,YAAa,QAAS,eAAgB,SAAU,cAAe,OAAQ,WAAYhE,GAAqBD,IAC9IkE,EAAc,IAAM,CAAC,OAAQ9E,EAAUa,GAAqBD,IAC5DmE,EAAa,IAAM,CAAC,OAAQ/E,EAAUa,GAAqBD,IAC3DoE,EAAY,IAAM,CAAChF,EAAUa,GAAqBD,IAClDqE,EAAiB,IAAM,CAAClF,EAAY,OAAQ,KAAMc,GAAqBD,GAAkBuC,GAC/F,MAAO,CACLlI,UAAW,IACXlB,MAAO,CACLmL,QAAS,CAAC,OAAQ,OAAQ,QAAS,UACnCC,OAAQ,CAAC,SACTC,KAAM,CAAC/E,GACPgF,WAAY,CAAChF,GACbiF,MAAO,CAAChF,GACRiF,UAAW,CAAClF,GACZ,cAAe,CAACA,GAChBmF,KAAM,CAAC,KAAM,MAAO,UACpBC,KAAM,CAAC9E,IACP,cAAe,CAAC,OAAQ,aAAc,QAAS,SAAU,SAAU,WAAY,OAAQ,YAAa,SACpG,eAAgB,CAACN,GACjBqF,QAAS,CAAC,OAAQ,QAAS,OAAQ,SAAU,UAAW,SACxDC,YAAa,CAAC,WAAY,OAAQ,SAAU,WAAY,UAAW,QACnEC,OAAQ,CAACvF,GACTwF,OAAQ,CAACxF,GACTyF,QAAS,CAAC9F,GACV+F,KAAM,CAAC1F,GACP2F,SAAU,CAAC,UAAW,QAAS,SAAU,OAAQ,QAAS,WAE5DhM,YAAa,CAQXmL,OAAQ,CAAC,CACPA,OAAQ,CAAC,OAAQ,SAAUpF,EAAYa,GAAkBC,GAAqB6C,KAOhF6B,UAAW,CAAC,aAKZU,QAAS,CAAC,CACRA,QAAS,CAACjG,EAAUY,GAAkBC,GAAqBqC,KAM7D,cAAe,CAAC,CACd,cArFmB,CAAC,OAAQ,QAAS,MAAO,aAAc,OAAQ,OAAQ,QAAS,YA2FrF,eAAgB,CAAC,CACf,eA5FmB,CAAC,OAAQ,QAAS,MAAO,aAAc,OAAQ,OAAQ,QAAS,YAkGrF,eAAgB,CAAC,CACf,eAAgB,CAAC,OAAQ,QAAS,aAAc,kBAMlD,iBAAkB,CAAC,CACjB,iBAAkB,CAAC,QAAS,WAM9BgD,IAAK,CAAC,CACJA,IAAK,CAAC,SAAU,aAMlBC,QAAS,CAAC,QAAS,eAAgB,SAAU,OAAQ,cAAe,QAAS,eAAgB,gBAAiB,aAAc,eAAgB,qBAAsB,qBAAsB,qBAAsB,kBAAmB,YAAa,YAAa,OAAQ,cAAe,WAAY,YAAa,UAK3SC,GAAI,CAAC,UAAW,eAKhBC,MAAO,CAAC,CACNA,MAAO,CAAC,QAAS,OAAQ,OAAQ,QAAS,SAM5CC,MAAO,CAAC,CACNA,MAAO,CAAC,OAAQ,QAAS,OAAQ,OAAQ,QAAS,SAMpDC,UAAW,CAAC,UAAW,kBAKvB,aAAc,CAAC,CACbtS,OAAQ,CAAC,UAAW,QAAS,OAAQ,OAAQ,gBAM/C,kBAAmB,CAAC,CAClBA,OAAQ,CA3Je,SAAU,SAAU,OAAQ,cAAe,WAAY,QAAS,eAAgB,YAAa,MA2JvF2M,GAAkBC,MAMjD2F,SAAU,CAAC,CACTA,SAjKsB,CAAC,OAAQ,SAAU,OAAQ,UAAW,YAuK9D,aAAc,CAAC,CACb,aAxKsB,CAAC,OAAQ,SAAU,OAAQ,UAAW,YA8K9D,aAAc,CAAC,CACb,aA/KsB,CAAC,OAAQ,SAAU,OAAQ,UAAW,YAqL9DC,WAAY,CAAC,CACXA,WArLwB,CAAC,OAAQ,UAAW,UA2L9C,eAAgB,CAAC,CACf,eA5LwB,CAAC,OAAQ,UAAW,UAkM9C,eAAgB,CAAC,CACf,eAnMwB,CAAC,OAAQ,UAAW,UAyM9CC,SAAU,CAAC,SAAU,QAAS,WAAY,WAAY,UAKtDC,MAAO,CAAC,CACNA,MAAO9C,MAMT,UAAW,CAAC,CACV,UAAWA,MAMb,UAAW,CAAC,CACV,UAAWA,MAMb+C,MAAO,CAAC,CACNA,MAAO/C,MAMTgD,IAAK,CAAC,CACJA,IAAKhD,MAMPiD,IAAK,CAAC,CACJA,IAAKjD,MAMPkD,MAAO,CAAC,CACNA,MAAOlD,MAMTmD,OAAQ,CAAC,CACPA,OAAQnD,MAMVoD,KAAM,CAAC,CACLA,KAAMpD,MAMRqD,WAAY,CAAC,UAAW,YAAa,YAKrCC,EAAG,CAAC,CACFA,EAAG,CAAChH,EAAW,OAAQU,GAAqBD,MAS9CwG,MAAO,CAAC,CACNA,MAAO,CAACrH,EAAY,OAAQ,OAAQc,GAAqBD,GAAkBsC,EAAgBC,KAM7F,iBAAkB,CAAC,CACjBkE,KAAM,CAAC,MAAO,cAAe,MAAO,iBAMtC,YAAa,CAAC,CACZA,KAAM,CAAC,SAAU,OAAQ,kBAM3BA,KAAM,CAAC,CACLA,KAAM,CAACrH,EAAUD,EAAY,OAAQ,UAAW,OAAQa,MAM1D0G,KAAM,CAAC,CACLA,KAAM,CAAC,GAAItH,EAAUa,GAAqBD,MAM5C2G,OAAQ,CAAC,CACPA,OAAQ,CAAC,GAAIvH,EAAUa,GAAqBD,MAM9C4G,MAAO,CAAC,CACNA,MAAO,CAACrH,EAAW,QAAS,OAAQ,OAAQU,GAAqBD,MAMnE,YAAa,CAAC,CACZ,YAAakD,MAMf,gBAAiB,CAAC,CAChB2D,IAAK1D,MAMP,YAAa,CAAC,CACZ,YAAaE,MAMf,UAAW,CAAC,CACV,UAAWA,MAMb,YAAa,CAAC,CACZ,YAAaH,MAMf,gBAAiB,CAAC,CAChB4D,IAAK3D,MAMP,YAAa,CAAC,CACZ,YAAaE,MAMf,UAAW,CAAC,CACV,UAAWA,MAMb,YAAa,CAAC,CACZ,YAAa,CAAC,MAAO,MAAO,QAAS,YAAa,eAMpD,YAAa,CAAC,CACZ,YAAaC,MAMf,YAAa,CAAC,CACZ,YAAaA,MAMfyD,IAAK,CAAC,CACJA,IAAKxD,MAMP,QAAS,CAAC,CACR,QAASA,MAMX,QAAS,CAAC,CACR,QAASA,MAMX,kBAAmB,CAAC,CAClByD,QAAS,CAvasB,QAAS,MAAO,SAAU,UAAW,SAAU,SAAU,UAAW,WAua7D,YAMxC,gBAAiB,CAAC,CAChB,gBAAiB,CA7agB,QAAS,MAAO,SAAU,UA6aX,YAMlD,eAAgB,CAAC,CACf,eAAgB,CAAC,OApbgB,QAAS,MAAO,SAAU,aA0b7D,gBAAiB,CAAC,CAChBC,QAAS,CAAC,SA5bqB,QAAS,MAAO,SAAU,UAAW,SAAU,SAAU,UAAW,cAkcrG,cAAe,CAAC,CACdC,MAAO,CAlc0B,QAAS,MAAO,SAAU,UAkcrB,cAMxC,aAAc,CAAC,CACbC,KAAM,CAAC,OAzc0B,QAAS,MAAO,SAAU,UAycd,cAM/C,gBAAiB,CAAC,CAChB,gBAjd8B,CAAC,QAAS,MAAO,SAAU,UAAW,SAAU,SAAU,UAAW,cAudrG,cAAe,CAAC,CACd,cAAe,CAvdkB,QAAS,MAAO,SAAU,UAudb,cAMhD,aAAc,CAAC,CACb,aAAc,CAAC,OA9dkB,QAAS,MAAO,SAAU,aAqe7DC,EAAG,CAAC,CACFA,EAAG3D,MAML4D,GAAI,CAAC,CACHA,GAAI5D,MAMN6D,GAAI,CAAC,CACHA,GAAI7D,MAMN8D,GAAI,CAAC,CACHA,GAAI9D,MAMN+D,GAAI,CAAC,CACHA,GAAI/D,MAMNgE,GAAI,CAAC,CACHA,GAAIhE,MAMNiE,GAAI,CAAC,CACHA,GAAIjE,MAMNkE,GAAI,CAAC,CACHA,GAAIlE,MAMNmE,GAAI,CAAC,CACHA,GAAInE,MAMNoE,EAAG,CAAC,CACFA,EAAGnE,MAMLoE,GAAI,CAAC,CACHA,GAAIpE,MAMNqE,GAAI,CAAC,CACHA,GAAIrE,MAMNsE,GAAI,CAAC,CACHA,GAAItE,MAMNuE,GAAI,CAAC,CACHA,GAAIvE,MAMNwE,GAAI,CAAC,CACHA,GAAIxE,MAMNyE,GAAI,CAAC,CACHA,GAAIzE,MAMN0E,GAAI,CAAC,CACHA,GAAI1E,MAMN2E,GAAI,CAAC,CACHA,GAAI3E,MAMN,UAAW,CAAC,CACV,UAAWF,MAMb,kBAAmB,CAAC,mBAKpB,UAAW,CAAC,CACV,UAAWA,MAMb,kBAAmB,CAAC,mBAYpB8E,KAAM,CAAC,CACLA,KAAM3E,MAER4E,EAAG,CAAC,CACFA,EAAG,CAACjG,EAAgB,YAAaqB,OAMnC,QAAS,CAAC,CACR,QAAS,CAACrB,EAAgB,SAC1B,UAAWqB,OAMb,QAAS,CAAC,CACR,QAAS,CAACrB,EAAgB,SAAU,OACpC,QACA,CACEkG,OAAQ,CAACnG,OACLsB,OAMR8E,EAAG,CAAC,CACFA,EAAG,CAAC,YAAa9E,OAMnB,QAAS,CAAC,CACR,QAAS,CAAC,SAAU,UAAWA,OAMjC,QAAS,CAAC,CACR,QAAS,CAAC,YAAaA,OASzB,YAAa,CAAC,CACZwB,KAAM,CAAC,OAAQlD,EAAWnB,GAA2BT,MAMvD,iBAAkB,CAAC,cAAe,wBAKlC,aAAc,CAAC,SAAU,cAKzB,cAAe,CAAC,CACdwE,KAAM,CAAC3C,EAAiBjC,GAAqBM,MAM/C,eAAgB,CAAC,CACf,eAAgB,CAAC,kBAAmB,kBAAmB,YAAa,iBAAkB,SAAU,gBAAiB,WAAY,iBAAkB,iBAAkBf,EAAWQ,MAM9K,cAAe,CAAC,CACd6E,KAAM,CAAC7D,GAA+BhB,GAAkBgC,KAM1D,aAAc,CAAC,eAKf,cAAe,CAAC,WAKhB,mBAAoB,CAAC,gBAKrB,aAAc,CAAC,cAAe,iBAK9B,cAAe,CAAC,oBAAqB,gBAKrC,eAAgB,CAAC,qBAAsB,qBAKvCoD,SAAU,CAAC,CACTA,SAAU,CAACjD,EAAelC,GAAqBD,MAMjD,aAAc,CAAC,CACb,aAAc,CAACZ,EAAU,OAAQa,GAAqBM,MAMxDuE,QAAS,CAAC,CACRA,QAAS,CAAC7E,GAAqBD,GAC/BoC,EAAcG,KAMhB,aAAc,CAAC,CACb,aAAc,CAAC,OAAQtC,GAAqBD,MAM9C,sBAAuB,CAAC,CACtB0I,KAAM,CAAC,SAAU,aAMnB,kBAAmB,CAAC,CAClBA,KAAM,CAAC,OAAQ,UAAW,OAAQzI,GAAqBD,MAMzD,iBAAkB,CAAC,CACjBmF,KAAM,CAAC,OAAQ,SAAU,QAAS,UAAW,QAAS,SAOxD,oBAAqB,CAAC,CACpBwD,YAAa/E,MAMf,aAAc,CAAC,CACbuB,KAAMvB,MAMR,kBAAmB,CAAC,YAAa,WAAY,eAAgB,gBAK7D,wBAAyB,CAAC,CACxBgF,WAAY,CAvzBY,QAAS,SAAU,SAAU,SAuzBnB,UAMpC,4BAA6B,CAAC,CAC5BA,WAAY,CAACxJ,EAAU,YAAa,OAAQa,GAAqBI,MAMnE,wBAAyB,CAAC,CACxBuI,WAAYhF,MAMd,mBAAoB,CAAC,CACnB,mBAAoB,CAACxE,EAAU,OAAQa,GAAqBD,MAM9D,iBAAkB,CAAC,YAAa,YAAa,aAAc,eAK3D,gBAAiB,CAAC,WAAY,gBAAiB,aAK/C,YAAa,CAAC,CACZmF,KAAM,CAAC,OAAQ,SAAU,UAAW,YAMtC0D,OAAQ,CAAC,CACPA,OAAQ,CAAC,QAASrF,OAMpB,iBAAkB,CAAC,CACjBsF,MAAO,CAAC,WAAY,MAAO,SAAU,SAAU,WAAY,cAAe,MAAO,QAAS7I,GAAqBD,MAMjH+I,WAAY,CAAC,CACXA,WAAY,CAAC,SAAU,SAAU,MAAO,WAAY,WAAY,kBAMlEC,MAAO,CAAC,CACNA,MAAO,CAAC,SAAU,QAAS,MAAO,UAMpCC,QAAS,CAAC,CACRA,QAAS,CAAC,OAAQ,SAAU,UAM9BhC,QAAS,CAAC,CACRA,QAAS,CAAC,OAAQhH,GAAqBD,MASzC,gBAAiB,CAAC,CAChBkJ,GAAI,CAAC,QAAS,QAAS,YAMzB,UAAW,CAAC,CACV,UAAW,CAAC,SAAU,UAAW,UAAW,UAM9C,YAAa,CAAC,CACZ,YAAa,CAAC,SAAU,UAAW,aAMrC,cAAe,CAAC,CACdA,GAAI,CA77BmB,SAAU,SAAU,OAAQ,cAAe,WAAY,QAAS,eAAgB,YAAa,MA67B3FhI,GAA6BT,MAMxD,YAAa,CAAC,CACZyI,GAAI,CAAC,YAAa,CAChBC,OAAQ,CAAC,GAAI,IAAK,IAAK,QAAS,aAOpC,UAAW,CAAC,CACVD,GAAI,CAAC,OAAQ,QAAS,UAAW/H,GAAyBjB,MAM5D,WAAY,CAAC,CACXgJ,GAAI,CAAC,OAAQ,CACXE,OAAQ,CAAC,CACPC,GAAI,CAAC,IAAK,KAAM,IAAK,KAAM,IAAK,KAAM,IAAK,OAC1C9J,EAAWU,GAAqBD,IACnCsJ,OAAQ,CAAC,GAAIrJ,GAAqBD,IAClCuJ,MAAO,CAAChK,EAAWU,GAAqBD,KACvCoB,GAA0BT,MAM/B,WAAY,CAAC,CACXuI,GAAItF,MAMN,oBAAqB,CAAC,CACpB4F,KAAM3F,MAMR,mBAAoB,CAAC,CACnB4F,IAAK5F,MAMP,kBAAmB,CAAC,CAClBwF,GAAIxF,MAMN,gBAAiB,CAAC,CAChB2F,KAAM5F,MAMR,eAAgB,CAAC,CACf6F,IAAK7F,MAMP,cAAe,CAAC,CACdyF,GAAIzF,MASN8F,QAAS,CAAC,CACRA,QAAS5F,MAMX,YAAa,CAAC,CACZ,YAAaA,MAMf,YAAa,CAAC,CACZ,YAAaA,MAMf,YAAa,CAAC,CACZ,YAAaA,MAMf,YAAa,CAAC,CACZ,YAAaA,MAMf,YAAa,CAAC,CACZ,YAAaA,MAMf,YAAa,CAAC,CACZ,YAAaA,MAMf,aAAc,CAAC,CACb,aAAcA,MAMhB,aAAc,CAAC,CACb,aAAcA,MAMhB,aAAc,CAAC,CACb,aAAcA,MAMhB,aAAc,CAAC,CACb,aAAcA,MAMhB,aAAc,CAAC,CACb,aAAcA,MAMhB,aAAc,CAAC,CACb,aAAcA,MAMhB,aAAc,CAAC,CACb,aAAcA,MAMhB,aAAc,CAAC,CACb,aAAcA,MAMhB,WAAY,CAAC,CACX6F,OAAQ5F,MAMV,aAAc,CAAC,CACb,WAAYA,MAMd,aAAc,CAAC,CACb,WAAYA,MAMd,aAAc,CAAC,CACb,WAAYA,MAMd,aAAc,CAAC,CACb,WAAYA,MAMd,aAAc,CAAC,CACb,WAAYA,MAMd,aAAc,CAAC,CACb,WAAYA,MAMd,aAAc,CAAC,CACb,WAAYA,MAMd,aAAc,CAAC,CACb,WAAYA,MAMd,WAAY,CAAC,CACX,WAAYA,MAMd,mBAAoB,CAAC,oBAKrB,WAAY,CAAC,CACX,WAAYA,MAMd,mBAAoB,CAAC,oBAKrB,eAAgB,CAAC,CACf4F,OAAQ,CA9rCgB,QAAS,SAAU,SAAU,SA8rCvB,SAAU,UAM1C,eAAgB,CAAC,CACfC,OAAQ,CArsCgB,QAAS,SAAU,SAAU,SAqsCvB,SAAU,UAM1C,eAAgB,CAAC,CACfD,OAAQ/F,MAMV,iBAAkB,CAAC,CACjB,WAAYA,MAMd,iBAAkB,CAAC,CACjB,WAAYA,MAMd,iBAAkB,CAAC,CACjB,WAAYA,MAMd,iBAAkB,CAAC,CACjB,WAAYA,MAMd,iBAAkB,CAAC,CACjB,WAAYA,MAMd,iBAAkB,CAAC,CACjB,WAAYA,MAMd,iBAAkB,CAAC,CACjB,WAAYA,MAMd,iBAAkB,CAAC,CACjB,WAAYA,MAMd,eAAgB,CAAC,CACfgG,OAAQhG,MAMV,gBAAiB,CAAC,CAChBiG,QAAS,CAlxCe,QAAS,SAAU,SAAU,SAkxCtB,OAAQ,YAMzC,iBAAkB,CAAC,CACjB,iBAAkB,CAACzK,EAAUa,GAAqBD,MAMpD,YAAa,CAAC,CACZ6J,QAAS,CAAC,GAAIzK,EAAU0B,GAA2BT,MAMrD,gBAAiB,CAAC,CAChBwJ,QAAS,CAAC9H,KASZkD,OAAQ,CAAC,CACPA,OAAQ,CAER,GAAI,OAAQxC,EAAapB,GAA2BR,MAMtD,eAAgB,CAAC,CACfoE,OAAQrB,MAMV,eAAgB,CAAC,CACf,eAAgB,CAAC,OAAQ3D,GAAqBD,GAAkB0C,KAMlE,qBAAsB,CAAC,CACrB,eAAgBkB,MAMlB,SAAU,CAAC,CACTkG,KAAM/F,MAQR,eAAgB,CAAC,cAKjB,aAAc,CAAC,CACb+F,KAAMlG,MAQR,gBAAiB,CAAC,CAChB,cAAe,CAACxE,EAAUiB,MAQ5B,oBAAqB,CAAC,CACpB,cAAeuD,MAMjB,eAAgB,CAAC,CACf,aAAcG,MAMhB,mBAAoB,CAAC,CACnB,aAAcH,MAMhBmG,QAAS,CAAC,CACRA,QAAS,CAAC3K,EAAUa,GAAqBD,MAM3C,YAAa,CAAC,CACZ,YAAa,CA14CW,SAAU,WAAY,SAAU,UAAW,SAAU,UAAW,cAAe,aAAc,aAAc,aAAc,aAAc,YAAa,MAAO,aAAc,QAAS,aA04CvK,cAAe,kBAMpD,WAAY,CAAC,CACX,WAj5CuB,CAAC,SAAU,WAAY,SAAU,UAAW,SAAU,UAAW,cAAe,aAAc,aAAc,aAAc,aAAc,YAAa,MAAO,aAAc,QAAS,gBA05C5MgK,OAAQ,CAAC,CACPA,OAAQ,CAER,GAAI,OAAQ/J,GAAqBD,MAMnCwE,KAAM,CAAC,CACLA,KAAMR,MAMRiG,WAAY,CAAC,CACXA,WAAY,CAAC7K,EAAUa,GAAqBD,MAM9CkK,SAAU,CAAC,CACTA,SAAU,CAAC9K,EAAUa,GAAqBD,MAM5C,cAAe,CAAC,CACd,cAAe,CAEf,GAAI,OAAQ2C,EAAiB1C,GAAqBD,MAMpDmK,UAAW,CAAC,CACVA,UAAW,CAAC,GAAI/K,EAAUa,GAAqBD,MAMjD,aAAc,CAAC,CACb,aAAc,CAACZ,EAAUa,GAAqBD,MAMhDoK,OAAQ,CAAC,CACPA,OAAQ,CAAC,GAAIhL,EAAUa,GAAqBD,MAM9CqK,SAAU,CAAC,CACTA,SAAU,CAACjL,EAAUa,GAAqBD,MAM5CsK,MAAO,CAAC,CACNA,MAAO,CAAC,GAAIlL,EAAUa,GAAqBD,MAM7C,kBAAmB,CAAC,CAClB,kBAAmB,CAEnB,GAAI,OAAQC,GAAqBD,MAMnC,gBAAiB,CAAC,CAChB,gBAAiBgE,MAMnB,sBAAuB,CAAC,CACtB,sBAAuB,CAAC5E,EAAUa,GAAqBD,MAMzD,oBAAqB,CAAC,CACpB,oBAAqB,CAACZ,EAAUa,GAAqBD,MAMvD,qBAAsB,CAAC,CACrB,qBAAsB,CAAC,GAAIZ,EAAUa,GAAqBD,MAM5D,sBAAuB,CAAC,CACtB,sBAAuB,CAACZ,EAAUa,GAAqBD,MAMzD,kBAAmB,CAAC,CAClB,kBAAmB,CAAC,GAAIZ,EAAUa,GAAqBD,MAMzD,mBAAoB,CAAC,CACnB,mBAAoB,CAACZ,EAAUa,GAAqBD,MAMtD,oBAAqB,CAAC,CACpB,oBAAqB,CAACZ,EAAUa,GAAqBD,MAMvD,iBAAkB,CAAC,CACjB,iBAAkB,CAAC,GAAIZ,EAAUa,GAAqBD,MASxD,kBAAmB,CAAC,CAClB2J,OAAQ,CAAC,WAAY,cAMvB,iBAAkB,CAAC,CACjB,iBAAkBnG,MAMpB,mBAAoB,CAAC,CACnB,mBAAoBA,MAMtB,mBAAoB,CAAC,CACnB,mBAAoBA,MAMtB,eAAgB,CAAC,CACf+G,MAAO,CAAC,OAAQ,WAMlBC,QAAS,CAAC,CACRA,QAAS,CAAC,MAAO,YASnBC,WAAY,CAAC,CACXA,WAAY,CAAC,GAAI,MAAO,SAAU,UAAW,SAAU,YAAa,OAAQxK,GAAqBD,MAMnG,sBAAuB,CAAC,CACtByK,WAAY,CAAC,SAAU,cAMzBC,SAAU,CAAC,CACTA,SAAU,CAACtL,EAAU,UAAWa,GAAqBD,MAMvD4E,KAAM,CAAC,CACLA,KAAM,CAAC,SAAU,UAAW7B,EAAW9C,GAAqBD,MAM9D2K,MAAO,CAAC,CACNA,MAAO,CAACvL,EAAUa,GAAqBD,MAMzCsE,QAAS,CAAC,CACRA,QAAS,CAAC,OAAQtB,EAAc/C,GAAqBD,MASvD4K,SAAU,CAAC,CACTA,SAAU,CAAC,SAAU,aAMvB7F,YAAa,CAAC,CACZA,YAAa,CAAClC,EAAkB5C,GAAqBD,MAMvD,qBAAsB,CAAC,CACrB,qBAAsBiE,MAMxB4G,OAAQ,CAAC,CACPA,OAAQ3G,MAMV,WAAY,CAAC,CACX,WAAYA,MAMd,WAAY,CAAC,CACX,WAAYA,MAMd,WAAY,CAAC,CACX,WAAYA,MAMd4G,MAAO,CAAC,CACNA,MAAO3G,MAMT,UAAW,CAAC,CACV,UAAWA,MAMb,UAAW,CAAC,CACV,UAAWA,MAMb,UAAW,CAAC,CACV,UAAWA,MAMb,WAAY,CAAC,YAKb4G,KAAM,CAAC,CACLA,KAAM3G,MAMR,SAAU,CAAC,CACT,SAAUA,MAMZ,SAAU,CAAC,CACT,SAAUA,MAMZ4G,UAAW,CAAC,CACVA,UAAW,CAAC/K,GAAqBD,GAAkB,GAAI,OAAQ,MAAO,SAMxE,mBAAoB,CAAC,CACnBiL,OAAQhH,MAMV,kBAAmB,CAAC,CAClB+G,UAAW,CAAC,KAAM,UAMpBE,UAAW,CAAC,CACVA,UAAW7G,MAMb,cAAe,CAAC,CACd,cAAeA,MAMjB,cAAe,CAAC,CACd,cAAeA,MAMjB,cAAe,CAAC,CACd,cAAeA,MAMjB,iBAAkB,CAAC,kBAQnB8G,OAAQ,CAAC,CACPA,OAAQvH,MAMVwH,WAAY,CAAC,CACXA,WAAY,CAAC,OAAQ,UAMvB,cAAe,CAAC,CACdC,MAAOzH,MAMT,eAAgB,CAAC,CACf0H,OAAQ,CAAC,SAAU,OAAQ,QAAS,aAAc,YAAa,gBAMjEC,OAAQ,CAAC,CACPA,OAAQ,CAAC,OAAQ,UAAW,UAAW,OAAQ,OAAQ,OAAQ,OAAQ,cAAe,OAAQ,eAAgB,WAAY,OAAQ,YAAa,gBAAiB,QAAS,OAAQ,UAAW,OAAQ,WAAY,aAAc,aAAc,aAAc,WAAY,WAAY,WAAY,WAAY,YAAa,YAAa,YAAa,YAAa,YAAa,YAAa,cAAe,cAAe,UAAW,WAAYtL,GAAqBD,MAMpc,eAAgB,CAAC,CACf,eAAgB,CAAC,QAAS,aAM5B,iBAAkB,CAAC,CACjB,iBAAkB,CAAC,OAAQ,UAM7BwL,OAAQ,CAAC,CACPA,OAAQ,CAAC,OAAQ,GAAI,IAAK,OAM5B,kBAAmB,CAAC,CAClBC,OAAQ,CAAC,OAAQ,YAMnB,WAAY,CAAC,CACX,WAAYjI,MAMd,YAAa,CAAC,CACZ,YAAaA,MAMf,YAAa,CAAC,CACZ,YAAaA,MAMf,YAAa,CAAC,CACZ,YAAaA,MAMf,YAAa,CAAC,CACZ,YAAaA,MAMf,YAAa,CAAC,CACZ,YAAaA,MAMf,YAAa,CAAC,CACZ,YAAaA,MAMf,YAAa,CAAC,CACZ,YAAaA,MAMf,YAAa,CAAC,CACZ,YAAaA,MAMf,WAAY,CAAC,CACX,WAAYA,MAMd,YAAa,CAAC,CACZ,YAAaA,MAMf,YAAa,CAAC,CACZ,YAAaA,MAMf,YAAa,CAAC,CACZ,YAAaA,MAMf,YAAa,CAAC,CACZ,YAAaA,MAMf,YAAa,CAAC,CACZ,YAAaA,MAMf,YAAa,CAAC,CACZ,YAAaA,MAMf,YAAa,CAAC,CACZ,YAAaA,MAMf,YAAa,CAAC,CACZ,YAAaA,MAMf,aAAc,CAAC,CACbkI,KAAM,CAAC,QAAS,MAAO,SAAU,gBAMnC,YAAa,CAAC,CACZA,KAAM,CAAC,SAAU,YAMnB,YAAa,CAAC,CACZA,KAAM,CAAC,OAAQ,IAAK,IAAK,UAM3B,kBAAmB,CAAC,CAClBA,KAAM,CAAC,YAAa,eAMtBC,MAAO,CAAC,CACNA,MAAO,CAAC,OAAQ,OAAQ,kBAM1B,UAAW,CAAC,CACV,YAAa,CAAC,IAAK,OAAQ,WAM7B,UAAW,CAAC,CACV,YAAa,CAAC,IAAK,KAAM,UAM3B,WAAY,CAAC,oBAKbC,OAAQ,CAAC,CACPA,OAAQ,CAAC,OAAQ,OAAQ,MAAO,UAMlC,cAAe,CAAC,CACd,cAAe,CAAC,OAAQ,SAAU,WAAY,YAAa3L,GAAqBD,MASlF6L,KAAM,CAAC,CACLA,KAAM,CAAC,UAAWjI,OAMpB,WAAY,CAAC,CACXkI,OAAQ,CAAC1M,EAAU0B,GAA2BT,GAAmBE,MAMnEuL,OAAQ,CAAC,CACPA,OAAQ,CAAC,UAAWlI,OAStB,sBAAuB,CAAC,CACtB,sBAAuB,CAAC,OAAQ,WAGpCvM,uBAAwB,CACtBuO,SAAU,CAAC,aAAc,cACzBC,WAAY,CAAC,eAAgB,gBAC7BE,MAAO,CAAC,UAAW,UAAW,QAAS,MAAO,MAAO,QAAS,SAAU,QACxE,UAAW,CAAC,QAAS,QACrB,UAAW,CAAC,MAAO,UACnBU,KAAM,CAAC,QAAS,OAAQ,UACxBM,IAAK,CAAC,QAAS,SACfK,EAAG,CAAC,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,MAC9CC,GAAI,CAAC,KAAM,MACXC,GAAI,CAAC,KAAM,MACXO,EAAG,CAAC,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,MAC9CC,GAAI,CAAC,KAAM,MACXC,GAAI,CAAC,KAAM,MACXO,KAAM,CAAC,IAAK,KACZ,YAAa,CAAC,WACd,aAAc,CAAC,cAAe,mBAAoB,aAAc,cAAe,gBAC/E,cAAe,CAAC,cAChB,mBAAoB,CAAC,cACrB,aAAc,CAAC,cACf,cAAe,CAAC,cAChB,eAAgB,CAAC,cACjB,aAAc,CAAC,UAAW,YAC1BoB,QAAS,CAAC,YAAa,YAAa,YAAa,YAAa,YAAa,YAAa,aAAc,aAAc,aAAc,aAAc,aAAc,aAAc,aAAc,cAC1L,YAAa,CAAC,aAAc,cAC5B,YAAa,CAAC,aAAc,cAC5B,YAAa,CAAC,aAAc,cAC5B,YAAa,CAAC,aAAc,cAC5B,YAAa,CAAC,aAAc,cAC5B,YAAa,CAAC,aAAc,cAC5B,iBAAkB,CAAC,mBAAoB,oBACvC,WAAY,CAAC,aAAc,aAAc,aAAc,aAAc,aAAc,cACnF,aAAc,CAAC,aAAc,cAC7B,aAAc,CAAC,aAAc,cAC7B,eAAgB,CAAC,iBAAkB,iBAAkB,iBAAkB,iBAAkB,iBAAkB,kBAC3G,iBAAkB,CAAC,iBAAkB,kBACrC,iBAAkB,CAAC,iBAAkB,kBACrCwB,UAAW,CAAC,cAAe,cAAe,kBAC1C,iBAAkB,CAAC,YAAa,cAAe,cAAe,eAC9D,WAAY,CAAC,YAAa,YAAa,YAAa,YAAa,YAAa,YAAa,YAAa,aACxG,YAAa,CAAC,YAAa,aAC3B,YAAa,CAAC,YAAa,aAC3B,WAAY,CAAC,YAAa,YAAa,YAAa,YAAa,YAAa,YAAa,YAAa,aACxG,YAAa,CAAC,YAAa,aAC3B,YAAa,CAAC,YAAa,aAC3BS,MAAO,CAAC,UAAW,UAAW,YAC9B,UAAW,CAAC,SACZ,UAAW,CAAC,SACZ,WAAY,CAAC,UAEfrU,+BAAgC,CAC9B,YAAa,CAAC,YAEhByE,wBAAyB,CAAC,SAAU,QAAS,cAAe,OAAQ,SAAU,YAAa,aAAc,eAAgB,WAAY,IAAK,MAC3I,OC/qFHgQ,MCMaC,GAAoB,SAACC,GAChC,OAAOA,EAAa,GACtB,EAcaC,GAAK,WAChB,OAAOpK,GHvB+O,WAAgB,IAAI,IAAIpL,EAAEC,EAAEC,EAAE,EAAEC,EAAE,GAAGG,EAAE0F,UAAUxJ,OAAO0D,EAAEI,EAAEJ,KAAKF,EAAEgG,UAAU9F,MAAMD,EAAEF,EAAEC,MAAMG,IAAIA,GAAG,KAAKA,GAAGF,GAAG,OAAOE,CAAC,CGuB9VsV,CAAIzY,GAAAA,MAAAX,KAAA2J,YACrB,ECxBM0P,2BAGJ,SAAAA,EAAYC,GAAiBC,KAF7BD,iBAGE,EAAAC,KAAKD,YAAcA,CACrB,CAAC,IAAAE,EAAAH,EAAAvZ,iBAAA0Z,EAEDC,WAAA,SAAWC,EAAcC,EAAYC,QAA1BF,IAAAA,IAAAA,EAAW,QAAGC,IAAAA,IAAAA,EAAS,YAAGC,IAAAA,EAAY,GAC/C,IAAIjE,EAAsB,GAC1B,GAAIiE,GAAa,EACf,OAAOjE,EAET,IAAK,IAAI1S,EAAQyW,EAAUzW,GAAS0W,EAAQ1W,GAAgB2W,EAC1DjE,EAAI,GAAAkE,OAAOlE,GAAM1S,IAEnB,OAAO0S,CACT,EAAC6D,EAEDM,SAAA,SAASC,EAAoBC,EAAcC,QAAlB,IAAhBF,IAAAA,EAAgB,IACvB,IAAMG,EAAYH,EACZI,EAAcZ,KAAKD,cAAcc,OACjCC,EAAUL,EACZT,KAAKD,YAAYU,GAASI,OAC1BD,EAAcD,EACZI,EAAUL,EACZV,KAAKD,YAAYW,GAASG,OAC1BD,EAAcD,EAClB,OAAOX,KAAKE,WAAWY,EAASC,EAAS,EAC3C,EAACjB,CAAA,IC5BUkB,GAAiC,CAC5C,SACA,aACA,SACA,SACA,UACA,WACA,UACA,UACA,UACA,SACA,YACA,mECTIC,GAAiB,SAAHC,GAClB,IAAAhW,EAASgW,EAAThW,UAASiW,EAAAD,EACTE,KAAAA,WAAID,EAAG,SAAQA,EACfE,EAAQH,EAARG,SACAC,EAAOJ,EAAPI,QACAC,EAAQL,EAARK,SACGC,EAAKC,EAAAP,EAAAQ,iBAER,OACEC,UAAAC,cAAA,SAAAC,EAAA,CACE3W,UAAW0U,GAAG1U,GACdkW,KAAMA,EACNE,QAASA,EACTD,SAAUA,GACNG,GAEHD,EAGP,ECtBAG,GAAA,CAAA,YAAA,QAAA,WAAA,YAGMI,GAAiB,SAAHZ,GAClB,IAAAhW,EAASgW,EAAThW,UACAhF,EAAKgb,EAALhb,MACA6b,EAAQb,EAARa,SACAR,EAAQL,EAARK,SACGC,EAAKC,EAAAP,EAAAQ,iBAER,OACEC,UAAAC,uBAAAC,EAAA,CACE3W,UAAW0U,GAAG1U,GACdhF,MAAOA,EACP6b,SAAUA,GACNP,GAEHD,EAGP,ECXaS,GAA+C,SAAhCd,GAAAe,IAAAA,EAAAf,EAC1BhW,UACAqW,EAAQL,EAARK,sBAEAI,OAAAA,UAAAC,cAAA,MAAA,CAAK1W,UAAW0U,GAAG,mBAHP,IAAHqC,EAAG,GAAEA,IAGiCV,EAAe,EAGnDW,GAAe,SAC1BC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,GAEA,YARAN,IAAAA,IAAAA,EAAkC,UAClC,IAAAC,IAAAA,EAAkC,cAClCC,IAAAA,EAA8B,SAC9BC,IAAAA,IAAAA,EAA8B,SAC9B,IAAAC,IAAAA,EAA+B,SACD,IAA9BC,IAAAA,EAA8B,SAC9BC,IAAAA,IAAAA,EAA6B,aAEtBC,GACL,IAAAte,EAAIse,EAAJte,KACAue,EAAUD,EAAVC,WACAC,EAAWF,EAAXE,YACAC,EAAaH,EAAbG,cACAC,EAAaJ,EAAbI,cACAC,EAAuBL,EAAvBK,wBACAC,EAAuBN,EAAvBM,qCAEA,OACErB,EAAAA,QAAAC,cAACI,qBACCL,UAAAC,cAACX,GAAc,CACb/V,UAAW0U,GAAG,uBAAwByC,GACtChB,SAAU0B,EACVzB,QAASuB,GAERV,gBAGHR,EAAAA,QAAAC,cAACE,GAAc,CACb5W,UAAW0U,GAAG,2BAA4B2C,GAC1Crc,MAAO8a,GAAgBiC,EAAK,QAAC7e,GAAMsE,SACnCqZ,SAAU,SAAFmB,GAAW,OACjBN,EAAY5B,GAAgBpU,QADXsW,EAANC,OACgCjd,OAC7C,GAEC8a,GAAgBrR,IAAI,SAACyT,gBAAM,OAC1BzB,EAAAA,QAAAC,cAAQjb,SAAAA,CAAAA,IAAKyc,EAAQld,MAAOkd,GACzBA,EACM,iBAIbzB,EAAA,QAAAC,cAACE,GAAc,CACb5W,UAAW0U,GAAG,0BAA2B4C,GACzCtc,MAAO+c,EAAK,QAAC7e,GAAMyc,OACnBkB,SAAU,SAAFsB,GAAkB,OAAAV,EAAWva,OAAlBib,EAANF,OAAsCjd,OAAO,GAEzDuc,EAAY9S,IAAI,SAACyT,uBAChBzB,EAAAA,QAAAC,cAAQjb,SAAAA,CAAAA,IAAQyc,GAAAA,EAAUld,SAAUkd,GACjC1D,GAAkB0D,GACZ,iBAIbzB,EAAA,QAAAC,cAACX,IACC/V,UAAW0U,GAAG,uBAAwB0C,GACtCjB,SAAU2B,EACV1B,QAASwB,GAERV,GAIT,CACF,ENhFAV,GAAA,CAAA,iBAAA,QAAA,YAAA4B,GAAA,CAAA,OAIMC,GACJha,SAA6C,OAArCkW,IAAIkC,EAAK,QAAC6B,QAAO,KAAIpY,MAAM,KAAKqY,GAAG,IAAEhE,GAAI,GAAI,KAAO,GAExDiE,GAA0B,SAC9BC,EACAC,EACAC,GAEA,IAAQC,EAA8CH,EAA9CG,eAAgB5d,EAA8Byd,EAA9Bzd,MAAO6b,EAAuB4B,EAAvB5B,SAAaP,EAAKC,EAAKkC,EAAajC,IAC7DqC,EAAWC,EAAAA,QAAQ,WACvB,GAAI9d,EAAO,CACT,IAAM9B,EAAO6e,EAAAA,QAAM/c,GACb+d,EAAWvE,GAAkBtb,EAAKyc,QACxC,GAAIiD,EAAgB,CAClB,IAAII,EAAuBJ,EACxBpc,QAAQ,UAAWuc,GACnBvc,QAAQ,KAAI,GAAKuc,EAAW,KAC/B,SAAU7f,EAAK+f,OAAOD,EACxB,CACA,SAAUD,EAAW7f,EAAK+f,OAAO,SACnC,CACA,MAAO,EACT,EAAG,CAACje,IAEJ,OAAI2d,eAEAlC,EAAA,QAAAC,cAACiC,EAAchC,EACb+B,CAAAA,IAAKA,EACL1d,MAAO6d,EACPhC,SAAUA,GACNP,iBAKRG,EAAA,QAAAC,cAAAC,QAAAA,EACE+B,CAAAA,IAAKA,EACL1d,MAAO6d,EACP,cAAY,cACZhC,SAAUA,GACNP,GAGV,+BOlCM4C,GAAS,KACfC,EAAcA,eAACD,GAAQE,GACvBC,EAAAA,iBAAiBH,IAEjBnB,UAAMmB,OAAOA,IACbnB,EAAK,QAACuB,OAAOC,EAAW,SAExB,INPmCrgB,GMO7BsgB,GAAgB,IAAI5E,GAAkBmD,EAAAA,SAEtC0B,UAAeC,GAClBC,EAAwD,QAAA,SAAQD,GACjEC,EAAU,QAoCNC,GAAe,CACnBvD,SAAU,KACVwD,WAAW,EACXC,YAAa,KACb3D,UAAU,EACV4D,OAAQ,KACRC,qBNrDqC,IAAJ9gB,KAAAA,GAAO,IAAI+gB,MAAW,CACvD,CACE,2CAA4C,CAAC/gB,OMoD/CghB,GAAI,kBACJC,WAAY,KACZ3E,aAASzU,EACTwU,aAASxU,EACTqZ,mBAAmB,EACnBvD,SAAU,SAACwD,EAAqBC,GAAiB,OAAS,IAAA,EAC1DnJ,YAAa,GACboJ,qBAAsB,CAAE,EACxBC,UAAU,EACVxf,MAAO,GACPyf,aAAc,2BAGc,SAAHzE,GAkBD0E,IV7ExBC,EACAC,EU4EwBF,EAAA1E,EAjBxBK,SAAAA,OAAWuD,IAAHc,EAAGd,GAAavD,SAAQqE,EAAAG,EAAA7E,EAChC6D,UAAAA,OAAS,IAAAgB,EAAGjB,GAAaC,UAASgB,EAAAC,EAAA9E,EAClC8D,YAAAA,OAAcF,IAAHkB,EAAGlB,GAAaE,YAAWgB,EAAAC,EAAA/E,EACtCG,SAAAA,OAAQ,IAAA4E,EAAGnB,GAAazD,SAAQ4E,EAAAC,EAAAhF,EAChC+D,OAAAA,OAAM,IAAAiB,EAAGpB,GAAaG,OAAMiB,EAAAC,EAAAjF,EAC5BgE,eAAAA,OAAiBJ,IAAHqB,EAAGrB,GAAaI,eAAciB,EAAAC,EAAAlF,EAC5CkE,GAAAA,OAAKN,IAAHsB,EAAGtB,GAAaM,GAAEgB,EAAAC,EAAAnF,EACpBmE,WAAAA,OAAU,IAAAgB,EAAGvB,GAAaO,WAAUgB,EAAAC,EAAApF,EACpCR,QAAAA,OAAO,IAAA4F,EAAGxB,GAAapE,QAAO4F,EAAAC,EAAArF,EAC9BT,QAAAA,OAAUqE,IAAHyB,EAAGzB,GAAarE,QAAO8F,EAAAC,EAAAtF,EAC9BoE,kBAAAA,OAAiB,IAAAkB,EAAG1B,GAAaQ,kBAAiBkB,EAAAC,EAAAvF,EAClDa,SAAAA,OAAW+C,IAAH2B,EAAG3B,GAAa/C,SAAQ0E,EAAAC,EAAAxF,EAChC7E,YAAAA,OAAcyI,IAAH4B,EAAG5B,GAAazI,YAAWqK,EAAAC,EAAAzF,EACtCuE,qBAAAA,OAAoB,IAAAkB,EAAG7B,GAAaW,qBAAoBkB,EAAAC,EAAA1F,EACxDwE,SAAAA,OAAQ,IAAAkB,EAAG9B,GAAaY,SAAQkB,EAAAC,EAAA3F,EAChChb,MAAAA,OAAQ4e,IAAH+B,EAAG/B,GAAa5e,MAAK2gB,EAAAC,EAAA5F,EAC1ByE,aAAAA,OAAeb,IAAHgC,EAAGhC,GAAaa,aAAYmB,EAElCC,IAAgB1F,GAAYqE,KAAcX,MAAAA,GAAAA,GAChDrC,EAOIuC,MAAAA,EAAAA,EAAU,CAAA,EANZ9C,EAAcO,EAAdP,eACAC,EAAcM,EAAdN,eACAC,EAAmBK,EAAnBL,oBACAC,EAAmBI,EAAnBJ,oBACAC,EAAoBG,EAApBH,qBACAC,EAAmBE,EAAnBF,oBAGIwE,EAAgBC,EAAMA,OAAC,MVxF7BpB,EUyFcmB,OVxFd,KAAAlB,GUwF8BR,KVxF9BQ,GAAkB,GAElBjc,EAA0B,WACxB,IAAMqd,EAZgB,SAACrB,GAAkCsB,IAAAA,EAC3D,OAAOtB,EAAQuB,QAAUD,OAAHA,EAAGtB,EAAQuB,cAARD,EAAAA,EAAiC,cAAIE,QAChE,CAU2BC,CAAkBzB,GAEzC,QAC4B,IAAnBqB,IACNjd,EAAgByD,IAAIwZ,IACrBpB,EACA,CACA,IAAMyB,EAAeL,EAAetF,cAAc,SAClD2F,EAAanC,GAAK,gCAClBmC,EAAaC,4jsBACbvd,EAAgB0D,IAAIuZ,EAAgBK,GAEpCL,EAAeO,KAAKC,YAAYH,EAClC,CACF,EAAG,IUyEH,IAAAI,EAAwCC,EAAQA,SAC9C1hB,EAAQ+c,EAAK,QAAC/c,GAAS,MADlB2hB,GAAYF,EAAEG,GAAAA,GAAeH,EAIpC,GAAMI,GAAc/D,EAAOA,QAAC,WAC1B,OAAI9d,EACS,IAAAif,KAAKjf,GACG,KAAVA,EAEX,KACO2hB,GAAe,IAAI1C,KAAK0C,GAAaG,UAAY,IAC1D,EAAG,CAAC9hB,EAAO2hB,KACLI,GAAgBjE,EAAOA,QAC3B,WAAA,OAAOvD,EAAU,IAAI0E,KAAK1E,QAAWxU,CAAS,EAC9C,CAACwU,IAEGyH,GAAgBlE,EAAOA,QAC3B,WAAA,OAAOtD,EAAU,IAAIyE,KAAKzE,QAAWzU,CAAS,EAC9C,CAACyU,IAEGyH,GAAcnE,EAAAA,QAClB,WAAA,OAAMU,GAAcnE,SAASoF,EAAcsC,GAAeC,GAAc,EACxE,CAACvC,EAAcsC,GAAeC,KAE1BE,GAAcpE,EAAAA,QAAQ,WAC1B,IAAAd,EAAsDmC,MAAAA,EAAAA,EAAc,GAA5DgD,EAAanF,EAAbmF,cAAeC,EAAKpF,EAALoF,MAAUC,EAAgB9G,EAAAyB,EAAAxB,IACjD,OP1F8B,SAChCmC,EACAwB,EACAgD,GAEA,OAAI9E,GACK,SAAArC,GAAG,IAAA0C,EAAG1C,EAAH0C,IAAQpC,EAAKC,EAAAP,EAAAoC,IACrB,OAAAI,GAAuB7B,KAChBL,EAAU6D,EAAU,CAAEvB,eAAgBuE,IAC3CzE,EACAC,EACD,EAEE2E,EAAAA,WAAkC,SAAChH,EAAOoC,GAC/C,OAAAF,GAAuB7B,EAChBL,CAAAA,EAAAA,EAAU6D,EAAU,CAAEvB,eAAgBuE,IAC3CzE,EACAC,EACD,EAEL,COsEW4E,CACLzD,EAAWnD,EAAA,GAEN0G,EAAgB,CACnBD,MAAKzG,EAAA,CAAI9d,MAAO,QAAWukB,KAE7BD,EAEJ,EAAG,CAACrD,EAAaK,iBAgBjB,OACE1D,EAAA,QAAAC,cAAKwD,MAAAA,CAAAA,GAAIA,EAAIxB,IAAKoD,gBAChBrF,EAAAA,QAAAC,cAAC+C,GAAe9C,EACduC,CAAAA,OAAQA,GACR3D,QAASwH,GACTvH,QAASwH,GACTnB,YAAaA,EACb1F,SAAUA,EACVqE,SAAUA,EACVgD,gBAAiBrM,EACjB6I,eAAgBA,EAChBF,YAAarD,EAAAA,QAAMC,cAAcwG,IACjCO,SAAUZ,GACVhG,SA3Be,SAAC3d,GACpB,IAAMwkB,EAAW3F,EAAAA,QAAM7e,GACvB,GAAIwkB,EAASC,UAAb,CACEf,GAAgBc,GAChB,IAAIE,EAAaF,EAASzE,OAAO,cAC7BJ,EAAQ,GAAMrE,GAAkBkJ,EAAS/H,QAAU+H,EAASzE,OAC9D,UAEFpC,MAAAA,GAAAA,EAAW+G,EAAY/E,EAEzB,MACAhC,MAAAA,GAAAA,EAAW,GAAI,GACjB,EAgBMgH,mBAAoB7G,GAClBC,EACAC,EACAC,EACAC,EACAC,EACAC,EACA2F,KAEE1C,GAEHlE,GAIT"}