{"version":3,"file":"calendar.mjs","sources":["../../../common/js/calendar/constants.ts","../../../common/js/calendar/utils.ts","../../../components/calendar/calendar.tsx"],"sourcesContent":["// 最小年份\nexport const MIN_YEAR = 1970;\n\nexport default {\n  MIN_YEAR,\n};\n","import dayjs from 'dayjs';\n\nimport type { CalendarRange, CalendarValue } from './types';\nimport { MIN_YEAR } from './constants';\n\n/**\n * 根据当前时间创建一个默认日期\n * @returns 当前日期的dayjs对象\n */\nexport const createDefaultCurDate = (): dayjs.Dayjs => dayjs(dayjs().format('YYYY-MM-DD'));\n\n/**\n * 处理`range`参数输入值并生成日历范围\n * @param range 用于设置日历的年月份显示范围，[范围开始，范围结束]\n * @returns 处理完成的日历范围\n */\nexport const handleRange = (range?: Array<CalendarValue>): { from: CalendarValue; to: CalendarValue } | null => {\n  // 检查范围边界\n  const parseRangeBoundary = (value: CalendarRange['from'] | CalendarRange['to'] | null | undefined) => {\n    if (value === undefined || value === null) {\n      return null;\n    }\n    const parsed = dayjs(value);\n    if (!parsed.isValid()) {\n      return null;\n    }\n    return {\n      parsed, // dayjs 对象\n      original: value as CalendarRange['from'] | CalendarRange['to'], // 原始值\n    };\n  };\n\n  if (!range || range.length < 2) {\n    return null;\n  }\n  const [v1, v2] = range;\n  const start = parseRangeBoundary(v1);\n  const end = parseRangeBoundary(v2);\n\n  if (!start && !end) {\n    return null;\n  }\n\n  // 未指定边界上/下限时使用默认值\n  const fallback = (edge: 'from' | 'to'): { parsed: dayjs.Dayjs; original: string } => {\n    let fallbackParsed = dayjs(MIN_YEAR);\n    if (edge === 'to') {\n      fallbackParsed = createDefaultCurDate();\n    }\n    return {\n      parsed: fallbackParsed,\n      original: fallbackParsed.format('YYYY-MM-DD'),\n    };\n  };\n\n  let fromBoundary = start ?? fallback('from');\n  let toBoundary = end ?? fallback('to');\n\n  if (fromBoundary.parsed.isAfter(toBoundary.parsed)) {\n    [fromBoundary, toBoundary] = [toBoundary, fromBoundary]; // 当前一项日期大于后一项时交换两值以确保边界逻辑正确\n  }\n\n  return {\n    from: fromBoundary.original,\n    to: toBoundary.original,\n  };\n};\n","import { defineComponent, computed, watch } from 'vue';\n// 通用库\nimport dayjs from 'dayjs';\nimport { remove, isArray, isFunction } from 'lodash-es';\n\nimport props from './props';\nimport * as utils from './utils';\nimport { useConfig, useContent } from '@tdesign/shared-hooks';\nimport { handleRange } from '@tdesign/common-js/calendar/utils';\n\nimport { useState, useCalendarClass, userController, useColHeaders } from './hooks';\n\n// 组件的一些常量\nimport {\n  COMPONENT_NAME,\n  MIN_YEAR,\n  FIRST_MONTH_OF_YEAR,\n  LAST_MONTH_OF_YEAR,\n  DEFAULT_YEAR_CELL_NUMINROW,\n} from './constants';\n\n// 子组件\nimport { Select as TSelect } from '../select';\nimport { RadioGroup as TRadioGroup, RadioButton as TRadioButton } from '../radio';\nimport { Button as TButton } from '../button';\nimport { CheckTag as TCheckTag } from '../tag';\nimport CalendarCellItem from './calendar-cell';\n\n// 组件相关类型\nimport { CalendarCell } from './type';\nimport { CalendarRange, YearMonthOption, ModeOption, CellEventOption } from './types';\n\n// 组件逻辑\nexport default defineComponent({\n  name: 'TCalendar',\n  props,\n  setup(props, { slots }) {\n    const renderContent = useContent();\n    const { t, globalConfig } = useConfig(COMPONENT_NAME);\n    // 组件内部状态管理\n    const { state, toToday, checkDayVisible } = useState(props);\n\n    // 样式\n    const cls = useCalendarClass(props, state);\n\n    // 日历主体头部（日历模式下使用）\n    const { cellColHeaders } = useColHeaders(props, state);\n\n    // 日历控件栏（右上角）\n    const controller = userController(props, state);\n\n    // 年\\月份下拉框\n    const rangeFromTo = computed<CalendarRange>(() => handleRange(props.range));\n    function checkMonthAndYearSelectedDisabled(year: number, month: number): boolean {\n      let disabled = false;\n      if (rangeFromTo.value && rangeFromTo.value.from && rangeFromTo.value.to) {\n        // 读取起止年份\n        const beginYear = dayjs(rangeFromTo.value.from).year();\n        const endYear = dayjs(rangeFromTo.value.to).year();\n        // 读取起止月份\n        const beginMon = parseInt(dayjs(rangeFromTo.value.from).format('M'), 10);\n        const endMon = parseInt(dayjs(rangeFromTo.value.to).format('M'), 10);\n\n        if (beginYear === endYear) {\n          // 同一年内，禁用开始月份至结束月份之外的月份选项\n          disabled = month < beginMon || month > endMon;\n        } else if (year === beginYear) {\n          disabled = month < beginMon;\n        } else if (year === endYear) {\n          disabled = month > endMon;\n        }\n      }\n      return disabled;\n    }\n    // 当存在日期范围限制时，改变年份后应将月份调整为合法月份\n    function adjustMonth(): void {\n      if (rangeFromTo.value?.from && rangeFromTo.value?.to) {\n        const beginYear = dayjs(rangeFromTo.value.from).year();\n        const endYear = dayjs(rangeFromTo.value.to).year();\n        const beginMon = parseInt(dayjs(rangeFromTo.value.from).format('M'), 10);\n        if (checkMonthAndYearSelectedDisabled(state.curSelectedYear, state.curSelectedMonth)) {\n          state.curSelectedMonth =\n            state.curSelectedYear === beginYear\n              ? beginMon\n              : state.curSelectedYear === endYear\n              ? 1\n              : state.curSelectedMonth;\n        }\n      }\n    }\n    watch(\n      () => {\n        return {\n          year: `${state.curSelectedYear}`,\n          month: `${state.curSelectedMonth}`,\n        };\n      },\n      (v: { month: string; year: string }) => {\n        isFunction(props.onMonthChange) && props.onMonthChange({ ...v });\n        controller.emitControllerChange();\n      },\n    );\n    const dateSelect = {\n      yearSelectOptionList: computed<YearMonthOption[]>(() => {\n        const re: YearMonthOption[] = [];\n        let begin: number = state.curSelectedYear - 10;\n        let end: number = state.curSelectedYear + 10;\n        if (rangeFromTo.value && rangeFromTo.value.from && rangeFromTo.value.to) {\n          begin = dayjs(rangeFromTo.value.from).year();\n          end = dayjs(rangeFromTo.value.to).year();\n        }\n\n        if (begin < MIN_YEAR) {\n          begin = MIN_YEAR;\n        }\n        if (end < MIN_YEAR) {\n          end = MIN_YEAR;\n        }\n\n        for (let i = begin; i <= end; i++) {\n          re.push({\n            value: i,\n            label: t(globalConfig.value.yearSelection, { year: i }),\n            disabled: false,\n          });\n        }\n        return re;\n      }),\n      isYearSelectVisible: computed<boolean>(() => {\n        return controller.checkControllerVisible('year');\n      }),\n      isYearSelectDisabled: computed<boolean>(() => {\n        return controller.checkControllerDisabled('year', 'selectProps');\n      }),\n      monthSelectOptionList: computed<YearMonthOption[]>(() => {\n        adjustMonth();\n        const re: YearMonthOption[] = [];\n        for (let i = FIRST_MONTH_OF_YEAR; i <= LAST_MONTH_OF_YEAR; i++) {\n          const disabled = checkMonthAndYearSelectedDisabled(state.curSelectedYear, i);\n          re.push({\n            value: i,\n            label: t(globalConfig.value.monthSelection, { month: i }),\n            disabled,\n          });\n        }\n        return re;\n      }),\n      isMonthSelectVisible: computed<boolean>(() => {\n        return state.curSelectedMode === 'month' && controller.checkControllerVisible('month');\n      }),\n      isMonthSelectDisabled: computed<boolean>(() => {\n        return controller.checkControllerDisabled('month', 'selectProps');\n      }),\n    };\n    // 模式选项\n    const modeSelect = {\n      optionList: computed<ModeOption[]>(() => {\n        return [\n          { value: 'month', label: t(globalConfig.value.monthRadio) },\n          { value: 'year', label: t(globalConfig.value.yearRadio) },\n        ];\n      }),\n      isVisible: computed<boolean>(() => {\n        return controller.checkControllerVisible('mode');\n      }),\n      isDisabled: computed<boolean>(() => {\n        return controller.checkControllerDisabled('mode', 'radioGroupProps');\n      }),\n    };\n    // 显示\\隐藏周末按钮\n    const weekendBtn = {\n      text: computed<string>(() => {\n        return state.isShowWeekend ? t(globalConfig.value.hideWeekend) : t(globalConfig.value.showWeekend);\n      }),\n      vBind: computed<object>(() => {\n        const c = controller.configData.value.weekend;\n        return state.isShowWeekend ? c.hideWeekendButtonProps : c.showWeekendButtonProps;\n      }),\n      isVisible: computed<boolean>(() => {\n        return (\n          props.theme === 'full' &&\n          controller.checkControllerVisible('current') &&\n          controller.checkControllerVisible('weekend')\n        );\n      }),\n      isDisabled: computed<boolean>(() => {\n        const p = state.isShowWeekend ? 'hideWeekendButtonProps' : 'showWeekendButtonProps';\n        return controller.checkControllerDisabled('weekend', p);\n      }),\n    };\n    // 今天\\本月按钮\n    const currentBtn = {\n      text: computed<string>(() => {\n        return state.curSelectedMode === 'month' ? t(globalConfig.value.today) : t(globalConfig.value.thisMonth);\n      }),\n      vBind: computed<object>(() => {\n        const c = controller.configData.value.current;\n        return state.curSelectedMode === 'month' ? c.currentDayButtonProps : c.currentMonthButtonProps;\n      }),\n      isVisible: computed<boolean>(() => {\n        return props.theme === 'full' && controller.checkControllerVisible('current');\n      }),\n      isDisabled: computed(() => {\n        const p = state.curSelectedMode === 'month' ? 'currentDayButtonProps' : 'currentMonthButtonProps';\n        return controller.checkControllerDisabled('current', p);\n      }),\n    };\n    const renderControl = () => {\n      return (\n        <div class={cls.control.value}>\n          <div class={cls.title.value}>\n            {renderContent('head', undefined, {\n              params: { ...controller.options.value },\n            })}\n          </div>\n          <div class={cls.controlSection.value}>\n            {dateSelect.isYearSelectVisible.value && (\n              <div class={cls.controlSectionCell.value}>\n                <TSelect\n                  v-model={state.curSelectedYear}\n                  size={state.controlSize}\n                  autoWidth={true}\n                  {...controller.configData.value.year.selectProps}\n                  disabled={dateSelect.isYearSelectDisabled.value}\n                  options={dateSelect.yearSelectOptionList.value}\n                ></TSelect>\n              </div>\n            )}\n            {dateSelect.isMonthSelectVisible.value && (\n              <div class={cls.controlSectionCell.value}>\n                <TSelect\n                  autoWidth={true}\n                  v-model={state.curSelectedMonth}\n                  size={state.controlSize}\n                  {...controller.configData.value.month.selectProps}\n                  disabled={dateSelect.isMonthSelectDisabled.value}\n                  options={dateSelect.monthSelectOptionList.value}\n                ></TSelect>\n              </div>\n            )}\n            {modeSelect.isVisible.value && (\n              <div class={cls.controlSectionCell.value} style=\"height: auto\">\n                <TRadioGroup\n                  v-model={state.curSelectedMode}\n                  variant=\"default-filled\"\n                  size={state.controlSize}\n                  {...controller.configData.value.mode.radioGroupProps}\n                  disabled={modeSelect.isDisabled.value}\n                  onChange={controller.emitControllerChange}\n                >\n                  {modeSelect.optionList.value.map((item) => (\n                    <TRadioButton key={item.value} value={item.value}>\n                      {item.label}\n                    </TRadioButton>\n                  ))}\n                </TRadioGroup>\n              </div>\n            )}\n\n            {weekendBtn.isVisible.value && (\n              <div class={cls.controlSectionCell.value}>\n                <TCheckTag\n                  class={cls.controlTag.value}\n                  size=\"large\"\n                  {...weekendBtn.vBind.value}\n                  disabled={weekendBtn.isDisabled.value}\n                  onClick={() => {\n                    state.isShowWeekend = !state.isShowWeekend;\n                    controller.emitControllerChange();\n                  }}\n                >\n                  {weekendBtn.text.value}\n                </TCheckTag>\n              </div>\n            )}\n            {currentBtn.isVisible.value && (\n              <div class={cls.controlSectionCell.value}>\n                <TButton\n                  size={state.controlSize}\n                  {...currentBtn.vBind.value}\n                  disabled={currentBtn.isDisabled.value}\n                  onClick={() => {\n                    toToday();\n                  }}\n                >\n                  {currentBtn.text.value}\n                </TButton>\n              </div>\n            )}\n          </div>\n        </div>\n      );\n    };\n\n    const cellClickEmit = (eventPropsName: keyof typeof props, e: MouseEvent, cellData: CalendarCell): void => {\n      if (isFunction(props[eventPropsName])) {\n        const options: CellEventOption = {\n          cell: {\n            ...cellData,\n            ...controller.options.value,\n          },\n          e,\n        };\n        (props[eventPropsName] as Function)(options);\n      }\n    };\n    const clickCell = (e: MouseEvent, cellData: CalendarCell): void => {\n      const d = dayjs(cellData.date);\n      if (props.multiple) {\n        if (state.curDateList.find((item) => item.isSame(d))) {\n          // @ts-ignore @types/lodash 4.17.18\n          state.curDateList = remove(state.curDateList, (item) => !item.isSame(d));\n        } else {\n          state.curDateList.push(d);\n        }\n      } else {\n        state.curDate = d;\n      }\n      cellClickEmit('onCellClick', e, cellData);\n    };\n    const doubleClickCell = (e: MouseEvent, cellData: CalendarCell): void => {\n      cellClickEmit('onCellDoubleClick', e, cellData);\n    };\n    const rightClickCell = (e: MouseEvent, cellData: CalendarCell): void => {\n      if (props.preventCellContextmenu) {\n        e.preventDefault();\n      }\n      cellClickEmit('onCellRightClick', e, cellData);\n    };\n\n    const monthCellsData = computed<CalendarCell[][]>(() => {\n      const daysArr: CalendarCell[][] = utils.createMonthCellsData(props, state);\n      return daysArr;\n    });\n    const renderMonthBody = () => {\n      return (\n        <table class={cls.table.value}>\n          <thead class={cls.tableHead.value}>\n            <tr class={cls.tableHeadRow.value}>\n              {cellColHeaders.value.map(\n                (item, index) =>\n                  checkDayVisible(item.num) && (\n                    <th class={cls.tableHeadCell.value}>\n                      {isArray(props.week)\n                        ? props.week[index]\n                        : renderContent('week', undefined, {\n                            defaultNode: <span>{item.display}</span>,\n                            params: { day: item.num },\n                          })}\n                    </th>\n                  ),\n              )}\n            </tr>\n          </thead>\n\n          <tbody class={cls.tableBody.value}>\n            {monthCellsData.value.map((week, weekIndex) => (\n              <tr class={cls.tableBodyRow.value}>\n                {week.map(\n                  (item, itemIndex) =>\n                    (state.isShowWeekend || item.day < 6) && (\n                      <CalendarCellItem\n                        key={`d-${weekIndex}-${itemIndex}`}\n                        item={item}\n                        theme={props.theme}\n                        t={t}\n                        global={globalConfig.value}\n                        cell={props.cell}\n                        cellAppend={props.cellAppend}\n                        fillWithZero={props.fillWithZero}\n                        onClick={(e: MouseEvent) => clickCell(e, item)}\n                        onDblclick={(e: MouseEvent) => doubleClickCell(e, item)}\n                        onRightclick={(e: MouseEvent) => rightClickCell(e, item)}\n                        v-slots={{ ...slots }}\n                      ></CalendarCellItem>\n                    ),\n                )}\n              </tr>\n            ))}\n          </tbody>\n        </table>\n      );\n    };\n\n    const yearCellsData = computed<CalendarCell[][]>(() => {\n      const re: CalendarCell[][] = [];\n      const monthsArr: CalendarCell[] = utils.createYearCellsData(props, state);\n      const rowCount = Math.ceil(monthsArr.length / DEFAULT_YEAR_CELL_NUMINROW);\n      let index = 0;\n      for (let i = 1; i <= rowCount; i++) {\n        const row: CalendarCell[] = [];\n        for (let j = 1; j <= DEFAULT_YEAR_CELL_NUMINROW; j++) {\n          row.push(monthsArr[index]);\n          index += 1;\n        }\n        re.push(row);\n      }\n      return re;\n    });\n    const renderYearBody = () => {\n      return (\n        <table class={cls.table.value}>\n          <tbody class={cls.tableBody.value}>\n            {yearCellsData.value.map((cell, cellIndex) => (\n              <tr class={cls.tableBodyRow.value}>\n                {cell.map((item, itemIndex) => (\n                  <CalendarCellItem\n                    key={`m-${cellIndex}-${itemIndex}`}\n                    item={item}\n                    theme={props.theme}\n                    t={t}\n                    global={globalConfig.value}\n                    cell={props.cell}\n                    cellAppend={props.cellAppend}\n                    fillWithZero={props.fillWithZero}\n                    onClick={(e: MouseEvent) => clickCell(e, item)}\n                    onDblclick={(e: MouseEvent) => doubleClickCell(e, item)}\n                    onRightclick={(e: MouseEvent) => rightClickCell(e, item)}\n                    v-slots={{ ...slots }}\n                  ></CalendarCellItem>\n                ))}\n              </tr>\n            ))}\n          </tbody>\n        </table>\n      );\n    };\n\n    return () => {\n      return (\n        <div class={cls.body.value}>\n          {controller.visible.value && renderControl()}\n          <div class={cls.panel.value}>{state.curSelectedMode === 'month' ? renderMonthBody() : renderYearBody()}</div>\n        </div>\n      );\n    };\n  },\n});\n"],"names":["MIN_YEAR","createDefaultCurDate","dayjs","format","handleRange","range","parseRangeBoundary","value","parsed","isValid","original","length","_range","_slicedToArray","v1","v2","start","end","fallback","edge","fallbackParsed","fromBoundary","toBoundary","isAfter","_ref","from","to","_isSlot","s","Object","prototype","toString","call","_isVNode","defineComponent","name","props","setup","slots","renderContent","useContent","_useConfig","useConfig","COMPONENT_NAME","t","globalConfig","_useState","useState","state","toToday","checkDayVisible","cls","useCalendarClass","_useColHeaders","useColHeaders","cellColHeaders","controller","userController","rangeFromTo","computed","checkMonthAndYearSelectedDisabled","year","month","disabled","beginYear","endYear","beginMon","parseInt","endMon","adjustMonth","_rangeFromTo$value","_rangeFromTo$value2","curSelectedYear","curSelectedMonth","watch","concat","v","onMonthChange","emitControllerChange","dateSelect","yearSelectOptionList","re","begin","i","push","label","yearSelection","isYearSelectVisible","checkControllerVisible","isYearSelectDisabled","checkControllerDisabled","monthSelectOptionList","FIRST_MONTH_OF_YEAR","LAST_MONTH_OF_YEAR","monthSelection","isMonthSelectVisible","curSelectedMode","isMonthSelectDisabled","modeSelect","optionList","monthRadio","yearRadio","isVisible","isDisabled","weekendBtn","text","isShowWeekend","hideWeekend","showWeekend","vBind","c","configData","weekend","hideWeekendButtonProps","showWeekendButtonProps","theme","p","currentBtn","today","thisMonth","current","currentDayButtonProps","currentMonthButtonProps","renderControl","_slot","_createVNode","control","title","params","_objectSpread","options","controlSection","controlSectionCell","TSelect","_mergeProps","controlSize","selectProps","onUpdateModelValue","$event","TRadioGroup","mode","radioGroupProps","map","item","TRadioButton","_default","TCheckTag","controlTag","onClick","TButton","cellClickEmit","eventPropsName","e","cellData","isFunction","cell","clickCell","d","date","multiple","curDateList","find","isSame","remove","curDate","doubleClickCell","rightClickCell","preventCellContextmenu","preventDefault","monthCellsData","daysArr","utils","renderMonthBody","table","tableHead","tableHeadRow","index","num","tableHeadCell","isArray","week","defaultNode","display","day","tableBody","weekIndex","tableBodyRow","itemIndex","CalendarCellItem","cellAppend","fillWithZero","onDblclick","onRightclick","yearCellsData","monthsArr","rowCount","Math","ceil","DEFAULT_YEAR_CELL_NUMINROW","row","j","renderYearBody","cellIndex","body","visible","panel"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AACO,IAAMA,QAAW,GAAA,IAAA,CAAA;AAExB,gBAAe;AACbA,EAAAA,QAAA,EAAAA,QAAAA;AACF,CAAA;;ACIO,IAAMC,uBAAuB,SAAvBA;SAA0CC,KAAA,CAAMA,OAAQ,CAAAC,MAAA,CAAO,YAAY,CAAC,CAAA,CAAA;AAAA,CAAA,CAAA;AAO5E,IAAAC,WAAA,GAAc,SAAdA,WAAAA,CAAeC,KAAoF,EAAA;AAExG,EAAA,IAAAC,kBAAA,GAAqB,SAArBA,kBAAAA,CAAsBC,KAA0E,EAAA;IAChG,IAAAA,KAAA,KAAU,KAAa,CAAA,IAAAA,KAAA,KAAU,IAAM,EAAA;AAClC,MAAA,OAAA,IAAA,CAAA;AACT,KAAA;AACM,IAAA,IAAAC,MAAA,GAASN,MAAMK,KAAK,CAAA,CAAA;AACtB,IAAA,IAAA,CAACC,MAAO,CAAAC,OAAA,EAAW,EAAA;AACd,MAAA,OAAA,IAAA,CAAA;AACT,KAAA;IACO,OAAA;AACLD,MAAAA,MAAA,EAAAA,MAAA;AACAE,MAAAA,QAAU,EAAAH,KAAAA;KACZ,CAAA;GACF,CAAA;EAEA,IAAI,CAACF,KAAA,IAASA,KAAM,CAAAM,MAAA,GAAS,CAAG,EAAA;AACvB,IAAA,OAAA,IAAA,CAAA;AACT,GAAA;AACM,EAAA,IAAAC,MAAA,GAAAC,cAAA,CAAWR,KAAA,EAAA,CAAA,CAAA;AAAVS,IAAAA,EAAI,GAAAF,MAAA,CAAA,CAAA,CAAA;AAAAG,IAAAA,EAAE,GAAAH,MAAA,CAAA,CAAA,CAAA,CAAA;AACP,EAAA,IAAAI,KAAA,GAAQV,mBAAmBQ,EAAE,CAAA,CAAA;AAC7B,EAAA,IAAAG,GAAA,GAAMX,mBAAmBS,EAAE,CAAA,CAAA;AAE7B,EAAA,IAAA,CAACC,KAAS,IAAA,CAACC,GAAK,EAAA;AACX,IAAA,OAAA,IAAA,CAAA;AACT,GAAA;AAGM,EAAA,IAAAC,QAAA,GAAW,SAAXA,QAAAA,CAAYC,IAAmE,EAAA;AAC/E,IAAA,IAAAC,cAAA,GAAiBlB,MAAMF,QAAQ,CAAA,CAAA;IACnC,IAAImB,SAAS,IAAM,EAAA;MACjBC,cAAA,GAAiBnB,oBAAqB,EAAA,CAAA;AACxC,KAAA;IACO,OAAA;AACLO,MAAAA,MAAQ,EAAAY,cAAA;AACRV,MAAAA,QAAA,EAAUU,cAAe,CAAAjB,MAAA,CAAO,YAAY,CAAA;KAC9C,CAAA;GACF,CAAA;EAEI,IAAAkB,YAAA,GAAeL,KAAS,KAATA,IAAAA,IAAAA,KAAS,KAATA,KAAAA,CAAAA,GAAAA,KAAS,GAAAE,QAAA,CAAS,MAAM,CAAA,CAAA;EACvC,IAAAI,UAAA,GAAaL,GAAO,KAAPA,IAAAA,IAAAA,GAAO,KAAPA,KAAAA,CAAAA,GAAAA,GAAO,GAAAC,QAAA,CAAS,IAAI,CAAA,CAAA;EAErC,IAAIG,YAAa,CAAAb,MAAA,CAAOe,OAAQ,CAAAD,UAAA,CAAWd,MAAM,CAAG,EAAA;AAAA,IAAA,IAAAgB,IAAA,GACrB,CAACF,YAAYD,YAAY,CAAA,CAAA;AAArDA,IAAAA,YAAc,GAAAG,IAAA,CAAA,CAAA,CAAA,CAAA;AAAAF,IAAAA,UAAU,GAAAE,IAAA,CAAA,CAAA,CAAA,CAAA;AAC3B,GAAA;EAEO,OAAA;IACLC,MAAMJ,YAAa,CAAAX,QAAA;IACnBgB,IAAIJ,UAAW,CAAAZ,QAAAA;GACjB,CAAA;AACF,CAAA;;;;ACxC6B,SAAAiB,QAAAC,CAAA,EAAA;AAAA,EAAA,OAAA,OAAAA,CAAA,KAAA,UAAA,IAAAC,MAAA,CAAAC,SAAA,CAAAC,QAAA,CAAAC,IAAA,CAAAJ,CAAA,CAAAK,KAAAA,iBAAAA,IAAAA,CAAAA,OAAA,CAAAL,CAAA,CAAA,CAAA;AAAA,CAAA;AAO7B,gBAAeM,eAAgB,CAAA;AAC7BC,EAAAA,IAAM,EAAA,WAAA;AACNC,EAAAA,KAAA,EAAAA,KAAA;AACAC,EAAAA,KAAMD,WAANC,KAAMD,CAAAA,MAAAA,EAAAA,IAAAA,EAAkB;AAAA,IAAA,IAATE,KAAA,GAAAd,IAAA,CAAAc,KAAA,CAAA;AACb,IAAA,IAAMC,gBAAgBC,UAAW,EAAA,CAAA;AACjC,IAAA,IAAAC,UAAA,GAA4BC,UAAUC,cAAc,CAAA;MAA5CC,CAAA,GAAAH,UAAA,CAAAG,CAAA;MAAGC,YAAa,GAAAJ,UAAA,CAAbI,YAAa,CAAA;AAExB,IAAA,IAAAC,SAAA,GAA4CC,SAASX,MAAK,CAAA;MAAlDY,KAAO,GAAAF,SAAA,CAAPE,KAAO;MAAAC,OAAA,GAAAH,SAAA,CAAAG,OAAA;MAASC,eAAgB,GAAAJ,SAAA,CAAhBI,eAAgB,CAAA;AAGlC,IAAA,IAAAC,GAAA,GAAMC,gBAAiBhB,CAAAA,MAAAA,EAAOY,KAAK,CAAA,CAAA;AAGzC,IAAA,IAAAK,cAAA,GAA2BC,aAAA,CAAclB,QAAOY,KAAK,CAAA;MAA7CO,cAAA,GAAAF,cAAA,CAAAE,cAAA,CAAA;AAGF,IAAA,IAAAC,UAAA,GAAaC,cAAerB,CAAAA,MAAAA,EAAOY,KAAK,CAAA,CAAA;IAG9C,IAAMU,cAAcC,QAAwB,CAAA,YAAA;AAAA,MAAA,OAAMvD,WAAYgC,CAAAA,MAAAA,CAAM/B,KAAK,CAAC,CAAA;KAAA,CAAA,CAAA;AACjE,IAAA,SAAAuD,iCAAAA,CAAkCC,MAAcC,KAAwB,EAAA;MAC/E,IAAIC,QAAW,GAAA,KAAA,CAAA;AACf,MAAA,IAAIL,YAAYnD,KAAS,IAAAmD,WAAA,CAAYnD,MAAMkB,IAAQ,IAAAiC,WAAA,CAAYnD,MAAMmB,EAAI,EAAA;AAEvE,QAAA,IAAMsC,YAAY9D,KAAM,CAAAwD,WAAA,CAAYnD,KAAM,CAAAkB,IAAI,EAAEoC,IAAK,EAAA,CAAA;AACrD,QAAA,IAAMI,UAAU/D,KAAM,CAAAwD,WAAA,CAAYnD,KAAM,CAAAmB,EAAE,EAAEmC,IAAK,EAAA,CAAA;AAE3C,QAAA,IAAAK,QAAA,GAAWC,QAAS,CAAAjE,KAAA,CAAMwD,WAAY,CAAAnD,KAAA,CAAMkB,IAAI,CAAE,CAAAtB,MAAA,CAAO,GAAG,CAAA,EAAG,EAAE,CAAA,CAAA;AACjE,QAAA,IAAAiE,MAAA,GAASD,QAAS,CAAAjE,KAAA,CAAMwD,WAAY,CAAAnD,KAAA,CAAMmB,EAAE,CAAE,CAAAvB,MAAA,CAAO,GAAG,CAAA,EAAG,EAAE,CAAA,CAAA;QAEnE,IAAI6D,cAAcC,OAAS,EAAA;AAEdF,UAAAA,QAAA,GAAAD,KAAA,GAAQI,YAAYJ,KAAQ,GAAAM,MAAA,CAAA;AACzC,SAAA,MAAA,IAAWP,SAASG,SAAW,EAAA;UAC7BD,QAAA,GAAWD,KAAQ,GAAAI,QAAA,CAAA;AACrB,SAAA,MAAA,IAAWL,SAASI,OAAS,EAAA;UAC3BF,QAAA,GAAWD,KAAQ,GAAAM,MAAA,CAAA;AACrB,SAAA;AACF,OAAA;AACO,MAAA,OAAAL,QAAA,CAAA;AACT,KAAA;IAEA,SAASM,WAAoBA,GAAA;MAAA,IAAAC,kBAAA,EAAAC,mBAAA,CAAA;MAC3B,IAAI,CAAAD,kBAAA,GAAAZ,WAAY,CAAAnD,KAAA,MAAA+D,IAAAA,IAAAA,kBAAA,KAAZA,KAAAA,CAAAA,IAAAA,kBAAA,CAAmB7C,IAAQ,KAAA8C,mBAAA,GAAAb,WAAA,CAAYnD,2CAAZgE,KAAAA,CAAAA,IAAAA,mBAAA,CAAmB7C,EAAI,EAAA;AACpD,QAAA,IAAMsC,YAAY9D,KAAM,CAAAwD,WAAA,CAAYnD,KAAM,CAAAkB,IAAI,EAAEoC,IAAK,EAAA,CAAA;AACrD,QAAA,IAAMI,UAAU/D,KAAM,CAAAwD,WAAA,CAAYnD,KAAM,CAAAmB,EAAE,EAAEmC,IAAK,EAAA,CAAA;AAC3C,QAAA,IAAAK,QAAA,GAAWC,QAAS,CAAAjE,KAAA,CAAMwD,WAAY,CAAAnD,KAAA,CAAMkB,IAAI,CAAE,CAAAtB,MAAA,CAAO,GAAG,CAAA,EAAG,EAAE,CAAA,CAAA;QACvE,IAAIyD,iCAAkC,CAAAZ,KAAA,CAAMwB,eAAiB,EAAAxB,KAAA,CAAMyB,gBAAgB,CAAG,EAAA;UAC9EzB,KAAA,CAAAyB,gBAAA,GACJzB,MAAMwB,eAAoB,KAAAR,SAAA,GACtBE,WACAlB,KAAM,CAAAwB,eAAA,KAAoBP,OAC1B,GAAA,CAAA,GACAjB,KAAM,CAAAyB,gBAAA,CAAA;AACd,SAAA;AACF,OAAA;AACF,KAAA;AACAC,IAAAA,KAAA,CACE,YAAM;MACG,OAAA;AACLb,QAAAA,IAAA,KAAAc,MAAA,CAAS3B,KAAM,CAAAwB,eAAA,CAAA;AACfV,QAAAA,KAAA,EAAAa,EAAAA,CAAAA,MAAA,CAAU3B,KAAM,CAAAyB,gBAAA,CAAA;OAClB,CAAA;KACF,EACA,UAACG,CAAuC,EAAA;AAC3BxC,MAAAA,UAAAA,CAAAA,MAAAA,CAAMyC,aAAa,CAAKzC,IAAAA,MAAAA,CAAMyC,4BAAmBD,EAAAA,EAAAA,EAAG,CAAA,CAAA;MAC/DpB,UAAA,CAAWsB,oBAAqB,EAAA,CAAA;AAClC,KACF,CAAA,CAAA;AACA,IAAA,IAAMC,UAAa,GAAA;MACjBC,oBAAA,EAAsBrB,SAA4B,YAAM;QACtD,IAAMsB,KAAwB,EAAC,CAAA;AAC3B,QAAA,IAAAC,KAAA,GAAgBlC,MAAMwB,eAAkB,GAAA,EAAA,CAAA;AACxC,QAAA,IAAAvD,GAAA,GAAc+B,MAAMwB,eAAkB,GAAA,EAAA,CAAA;AAC1C,QAAA,IAAId,YAAYnD,KAAS,IAAAmD,WAAA,CAAYnD,MAAMkB,IAAQ,IAAAiC,WAAA,CAAYnD,MAAMmB,EAAI,EAAA;AACvEwD,UAAAA,KAAA,GAAQhF,KAAM,CAAAwD,WAAA,CAAYnD,KAAM,CAAAkB,IAAI,EAAEoC,IAAK,EAAA,CAAA;AAC3C5C,UAAAA,GAAA,GAAMf,KAAM,CAAAwD,WAAA,CAAYnD,KAAM,CAAAmB,EAAE,EAAEmC,IAAK,EAAA,CAAA;AACzC,SAAA;QAEA,IAAIqB,QAAQlF,UAAU,EAAA;AACZkF,UAAAA,KAAA,GAAAlF,UAAA,CAAA;AACV,SAAA;QACA,IAAIiB,MAAMjB,UAAU,EAAA;AACZiB,UAAAA,GAAA,GAAAjB,UAAA,CAAA;AACR,SAAA;QAEA,KAAA,IAASmF,CAAI,GAAAD,KAAA,EAAOC,CAAK,IAAAlE,GAAA,EAAKkE,CAAK,EAAA,EAAA;UACjCF,EAAA,CAAGG,IAAK,CAAA;AACN7E,YAAAA,KAAO,EAAA4E,CAAA;YACPE,KAAA,EAAOzC,EAAEC,YAAa,CAAAtC,KAAA,CAAM+E,eAAe;AAAEzB,cAAAA,IAAA,EAAMsB,CAAAA;AAAE,aAAC,CAAA;AACtDpB,YAAAA,QAAU,EAAA,KAAA;AACZ,WAAC,CAAA,CAAA;AACH,SAAA;AACO,QAAA,OAAAkB,EAAA,CAAA;AACT,OAAC,CAAA;MACDM,mBAAA,EAAqB5B,SAAkB,YAAM;AACpC,QAAA,OAAAH,UAAA,CAAWgC,uBAAuB,MAAM,CAAA,CAAA;AACjD,OAAC,CAAA;MACDC,oBAAA,EAAsB9B,SAAkB,YAAM;AACrC,QAAA,OAAAH,UAAA,CAAWkC,uBAAwB,CAAA,MAAA,EAAQ,aAAa,CAAA,CAAA;AACjE,OAAC,CAAA;MACDC,qBAAA,EAAuBhC,SAA4B,YAAM;AAC3CU,QAAAA,WAAA,EAAA,CAAA;QACZ,IAAMY,KAAwB,EAAC,CAAA;QAC/B,KAAA,IAASE,CAAI,GAAAS,mBAAA,EAAqBT,CAAK,IAAAU,kBAAA,EAAoBV,CAAK,EAAA,EAAA;UAC9D,IAAMpB,QAAW,GAAAH,iCAAA,CAAkCZ,KAAM,CAAAwB,eAAA,EAAiBW,CAAC,CAAA,CAAA;UAC3EF,EAAA,CAAGG,IAAK,CAAA;AACN7E,YAAAA,KAAO,EAAA4E,CAAA;YACPE,KAAA,EAAOzC,EAAEC,YAAa,CAAAtC,KAAA,CAAMuF,gBAAgB;AAAEhC,cAAAA,KAAA,EAAOqB,CAAAA;AAAE,aAAC,CAAA;AACxDpB,YAAAA,QAAA,EAAAA,QAAAA;AACF,WAAC,CAAA,CAAA;AACH,SAAA;AACO,QAAA,OAAAkB,EAAA,CAAA;AACT,OAAC,CAAA;MACDc,oBAAA,EAAsBpC,SAAkB,YAAM;QAC5C,OAAOX,KAAM,CAAAgD,eAAA,KAAoB,OAAW,IAAAxC,UAAA,CAAWgC,uBAAuB,OAAO,CAAA,CAAA;AACvF,OAAC,CAAA;MACDS,qBAAA,EAAuBtC,SAAkB,YAAM;AACtC,QAAA,OAAAH,UAAA,CAAWkC,uBAAwB,CAAA,OAAA,EAAS,aAAa,CAAA,CAAA;OACjE,CAAA;KACH,CAAA;AAEA,IAAA,IAAMQ,UAAa,GAAA;MACjBC,UAAA,EAAYxC,SAAuB,YAAM;AAChC,QAAA,OAAA,CACL;AAAEpD,UAAAA,OAAO,OAAS;AAAA8E,UAAAA,KAAA,EAAOzC,EAAEC,YAAa,CAAAtC,KAAA,CAAM6F,UAAU,CAAA;AAAE,SAAA,EAC1D;AAAE7F,UAAAA,OAAO,MAAQ;AAAA8E,UAAAA,KAAA,EAAOzC,EAAEC,YAAa,CAAAtC,KAAA,CAAM8F,SAAS,CAAA;AAAE,SAAA,CAC1D,CAAA;AACF,OAAC,CAAA;MACDC,SAAA,EAAW3C,SAAkB,YAAM;AAC1B,QAAA,OAAAH,UAAA,CAAWgC,uBAAuB,MAAM,CAAA,CAAA;AACjD,OAAC,CAAA;MACDe,UAAA,EAAY5C,SAAkB,YAAM;AAC3B,QAAA,OAAAH,UAAA,CAAWkC,uBAAwB,CAAA,MAAA,EAAQ,iBAAiB,CAAA,CAAA;OACpE,CAAA;KACH,CAAA;AAEA,IAAA,IAAMc,UAAa,GAAA;MACjBC,IAAA,EAAM9C,SAAiB,YAAM;QACpB,OAAAX,KAAA,CAAM0D,aAAgB,GAAA9D,CAAA,CAAEC,YAAa,CAAAtC,KAAA,CAAMoG,WAAW,CAAI,GAAA/D,CAAA,CAAEC,YAAa,CAAAtC,KAAA,CAAMqG,WAAW,CAAA,CAAA;AACnG,OAAC,CAAA;MACDC,KAAA,EAAOlD,SAAiB,YAAM;QACtB,IAAAmD,CAAA,GAAItD,UAAW,CAAAuD,UAAA,CAAWxG,KAAM,CAAAyG,OAAA,CAAA;QACtC,OAAOhE,KAAM,CAAA0D,aAAA,GAAgBI,CAAE,CAAAG,sBAAA,GAAyBH,CAAE,CAAAI,sBAAA,CAAA;AAC5D,OAAC,CAAA;MACDZ,SAAA,EAAW3C,SAAkB,YAAM;AAE/BvB,QAAAA,OAAAA,MAAAA,CAAM+E,UAAU,MAChB,IAAA3D,UAAA,CAAWgC,uBAAuB,SAAS,CAAA,IAC3ChC,UAAW,CAAAgC,sBAAA,CAAuB,SAAS,CAAA,CAAA;AAE/C,OAAC,CAAA;MACDe,UAAA,EAAY5C,SAAkB,YAAM;QAC5B,IAAAyD,CAAA,GAAIpE,KAAM,CAAA0D,aAAA,GAAgB,wBAA2B,GAAA,wBAAA,CAAA;AACpD,QAAA,OAAAlD,UAAA,CAAWkC,uBAAwB,CAAA,SAAA,EAAW0B,CAAC,CAAA,CAAA;OACvD,CAAA;KACH,CAAA;AAEA,IAAA,IAAMC,UAAa,GAAA;MACjBZ,IAAA,EAAM9C,SAAiB,YAAM;QACpB,OAAAX,KAAA,CAAMgD,eAAoB,KAAA,OAAA,GAAUpD,CAAE,CAAAC,YAAA,CAAatC,KAAM,CAAA+G,KAAK,CAAI,GAAA1E,CAAA,CAAEC,YAAa,CAAAtC,KAAA,CAAMgH,SAAS,CAAA,CAAA;AACzG,OAAC,CAAA;MACDV,KAAA,EAAOlD,SAAiB,YAAM;QACtB,IAAAmD,CAAA,GAAItD,UAAW,CAAAuD,UAAA,CAAWxG,KAAM,CAAAiH,OAAA,CAAA;AACtC,QAAA,OAAOxE,KAAM,CAAAgD,eAAA,KAAoB,OAAU,GAAAc,CAAA,CAAEW,wBAAwBX,CAAE,CAAAY,uBAAA,CAAA;AACzE,OAAC,CAAA;MACDpB,SAAA,EAAW3C,SAAkB,YAAM;QACjC,OAAOvB,MAAM,CAAA+E,KAAA,KAAU,MAAU,IAAA3D,UAAA,CAAWgC,uBAAuB,SAAS,CAAA,CAAA;AAC9E,OAAC,CAAA;MACDe,UAAA,EAAY5C,SAAS,YAAM;QACzB,IAAMyD,CAAI,GAAApE,KAAA,CAAMgD,eAAoB,KAAA,OAAA,GAAU,uBAA0B,GAAA,yBAAA,CAAA;AACjE,QAAA,OAAAxC,UAAA,CAAWkC,uBAAwB,CAAA,SAAA,EAAW0B,CAAC,CAAA,CAAA;OACvD,CAAA;KACH,CAAA;AACA,IAAA,IAAMO,gBAAgB,SAAhBA,gBAAsB;AAAA,MAAA,IAAAC,KAAA,CAAA;AAC1B,MAAA,OAAAC,WAAA,CAAA,KAAA,EAAA;QAAA,OACc1E,EAAAA,GAAA,CAAI2E,OAAQ,CAAAvH,KAAAA;AAAA,OAAA,EAAA,CAAAsH,WAAA,CAAA,KAAA,EAAA;QAAA,OACV1E,EAAAA,GAAA,CAAI4E,MAAMxH,KAAAA;AACnB,OAAA,EAAA,CAAAgC,aAAA,CAAc,QAAQ,KAAW,CAAA,EAAA;AAChCyF,QAAAA,MAAQ,EAAAC,aAAA,CAAA,EAAA,EAAKzE,UAAA,CAAW0E,QAAQ3H,KAAM,CAAA;OACvC;eAES4C,EAAAA,GAAA,CAAIgF,cAAe,CAAA5H,KAAAA;AAAA,OAAA,EAAA,CAC5BwE,UAAW,CAAAQ,mBAAA,CAAoBhF,KAC9B,IAAAsH,WAAA,CAAA,KAAA,EAAA;QAAA,OAAY1E,EAAAA,GAAA,CAAIiF,kBAAmB,CAAA7H,KAAAA;AAAA,OAAA,EAAA,CAAAsH,WAAA,CAAAQ,MAAA,EAAAC,UAAA,CAAA;QAAA,YAEtBtF,EAAAA,KAAA,CAAMwB;;iBAANxB,KAAA,CAAMwB;;cACTxB,EAAAA,KAAA,CAAMuF,WACZ;QAAA,WAAW,EAAA,IAAA;OACP/E,EAAAA,UAAA,CAAWuD,UAAW,CAAAxG,KAAA,CAAMsD,KAAK2E,WACrC,EAAA;AAAA,QAAA,UAAA,EAAUzD,UAAW,CAAAU,oBAAA,CAAqBlF;iBACjCwE,EAAAA,UAAA,CAAWC,oBAAqB,CAAAzE,KAAAA;AAAA,OAAA,CAAA,EAAA,IAAA,CAAA,CAAA,CAP5C,EAWFwE,UAAW,CAAAgB,oBAAA,CAAqBxF,KAC/B,IAAAsH,WAAA,CAAA,KAAA,EAAA;QAAA,OAAY1E,EAAAA,GAAA,CAAIiF,kBAAmB,CAAA7H,KAAAA;AAAA,OAAA,EAAA,CAAAsH,WAAA,CAAAQ,MAAA,EAAAC,UAAA,CAAA;AAAA,QAAA,WAAA,EAEpB,IAAA;QAAA,YACFtF,EAAAA,KAAM,CAAAyB,gBAAA;AAAA,QAAA,qBAAA,EAAA,SAAAgE,mBAAAC,MAAA,EAAA;AAAA,UAAA,OAAN1F,KAAM,CAAAyB,gBAAA,GAAAiE,MAAA,CAAA;AAAA,SAAA;AAAA,QAAA,MAAA,EACT1F,KAAA,CAAMuF,WAAAA;OACR/E,EAAAA,UAAA,CAAWuD,UAAW,CAAAxG,KAAA,CAAMuD,MAAM0E,WACtC,EAAA;AAAA,QAAA,UAAA,EAAUzD,UAAW,CAAAkB,qBAAA,CAAsB1F;iBAClCwE,EAAAA,UAAA,CAAWY,qBAAsB,CAAApF,KAAAA;AAAA,OAAA,CAAA,EAAA,IAAA,CAAA,CAAA,CAP7C,EAWF2F,UAAA,CAAWI,SAAU,CAAA/F,KAAA,IAAAsH,WAAA,CAAA,KAAA,EAAA;AAAA,QAAA,OAAA,EACR1E,GAAI,CAAAiF,kBAAA,CAAmB7H,KAAO;AAAA,QAAA,OAAA,EAAA,cAAA;AAAA,OAAA,EAAA,CAAAsH,WAAA,CAAAc,UAAA,EAAAL,UAAA,CAAA;QAAA,YAE7BtF,EAAAA,KAAA,CAAMgD,eACf;AAAA,QAAA,qBAAA,EAAA,SAAAyC,mBAAAC,MAAA,EAAA;AAAA,UAAA,OADS1F,KAAA,CAAMgD,eACf,GAAA0C,MAAA,CAAA;AAAA,SAAA;AAAA,QAAA,SAAA,EAAA,gBAAA;AAAA,QAAA,MAAA,EACM1F,KAAM,CAAAuF,WAAAA;OACR/E,EAAAA,UAAW,CAAAuD,UAAA,CAAWxG,KAAM,CAAAqI,IAAA,CAAKC,eACrC,EAAA;AAAA,QAAA,UAAA,EAAU3C,WAAWK,UAAW,CAAAhG,KAAA;AAAA,QAAA,UAAA,EACtBiD,UAAA,CAAWsB,oBAAAA;AAEpB,OAAA,CAAA,EAAAnD,OAAA,CAAAiG,KAAA,GAAA1B,UAAA,CAAWC,WAAW5F,KAAM,CAAAuI,GAAA,CAAI,UAACC,IAAA,EAAA;QAAA,OAAAlB,WAAA,CAAAmB,WAAA,EAAA;UAAA,KACbD,EAAAA,IAAK,CAAAxI,KAAA;AAAA,UAAA,OAAA,EAAcwI,IAAA,CAAKxI,KAAAA;AACxC,SAAA,EAAA;AAAA,UAAA,SAAA,EAAA,SAAA0I,QAAA,GAAA;YAAA,OAAAF,CAAAA,IAAA,CAAK1D,KACR,CAAA,CAAA;AAAA,WAAA;AAAA,SAAA,CAAA,CAAA;OACD,CAAA,IAAAuC,KAAA,GAAA;AAAA,QAAA,SAAA,EAAA,SAAAqB,QAAA,GAAA;AAAA,UAAA,OAAA,CAAArB,KAAA,CAAA,CAAA;AAAA,SAAA;AAAA,OAAA,CAAA,CAAA,CAbJ,EAkBFpB,UAAA,CAAWF,SAAU,CAAA/F,KAAA,IAAAsH,WAAA,CAAA,KAAA,EAAA;QAAA,OACR1E,EAAAA,GAAI,CAAAiF,kBAAA,CAAmB7H,KAAAA;AACjC,OAAA,EAAA,CAAAsH,WAAA,CAAAqB,QAAA,EAAAZ,UAAA,CAAA;AAAA,QAAA,OAAA,EACSnF,IAAIgG,UAAW,CAAA5I,KAAA;AAAA,QAAA,MAAA,EAAA,OAAA;AAAA,OAAA,EAElBiG,UAAW,CAAAK,KAAA,CAAMtG,KACrB,EAAA;AAAA,QAAA,UAAA,EAAUiG,UAAW,CAAAD,UAAA,CAAWhG,KAChC;QAAA,SAAS,EAAA,SAAA6I,UAAM;AACPpG,UAAAA,KAAA,CAAA0D,aAAA,GAAgB,CAAC1D,KAAM,CAAA0D,aAAA,CAAA;UAC7BlD,UAAA,CAAWsB,oBAAqB,EAAA,CAAA;AAClC,SAAA;;;kBAEC0B,UAAW,CAAAC,IAAA,CAAKlG,KACnB,CAAA,CAAA;AAAA,SAAA;AAAA,OAAA,CAAA,CAAA,CAZD,EAeF8G,UAAA,CAAWf,UAAU/F,KACpB,IAAAsH,WAAA,CAAA,KAAA,EAAA;QAAA,OAAY1E,EAAAA,GAAA,CAAIiF,kBAAmB,CAAA7H,KAAAA;AAAA,OAAA,EAAA,CAAAsH,WAAA,CAAAwB,MAAA,EAAAf,UAAA,CAAA;AAAA,QAAA,MAAA,EAEzBtF,KAAM,CAAAuF,WAAAA;AAAA,OAAA,EACRlB,WAAWR,KAAM,CAAAtG,KAAA,EAAA;AAAA,QAAA,UAAA,EACX8G,UAAW,CAAAd,UAAA,CAAWhG,KAChC;QAAA,SAAS,EAAA,SAAA6I,UAAM;AACLnG,UAAAA,OAAA,EAAA,CAAA;AACV,SAAA;;;kBAECoE,UAAW,CAAAZ,IAAA,CAAKlG,KACnB,CAAA,CAAA;AAAA,SAAA;OAVD,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA;KAgBX,CAAA;IAEA,IAAM+I,aAAgB,GAAA,SAAhBA,aAAgBA,CAACC,cAAoC,EAAAC,CAAA,EAAeC,QAAiC,EAAA;AACrG,MAAA,IAAAC,UAAA,CAAWtH,MAAM,CAAAmH,cAAA,CAAe,CAAG,EAAA;AACrC,QAAA,IAAMrB,OAA2B,GAAA;AAC/ByB,UAAAA,IAAM,EAAA1B,aAAA,CAAAA,aAAA,CACDwB,EAAAA,EAAAA,QAAA,CACAjG,EAAAA,WAAW0E,OAAQ,CAAA3H,KAAA,CACxB;AACAiJ,UAAAA,CAAA,EAAAA,CAAAA;SACF,CAAA;AACCpH,QAAAA,MAAAA,CAAMmH,gBAA6BrB,OAAO,CAAA,CAAA;AAC7C,OAAA;KACF,CAAA;IACM,IAAA0B,SAAA,GAAY,SAAZA,SAAAA,CAAaJ,CAAA,EAAeC,QAAiC,EAAA;AAC3D,MAAA,IAAAI,CAAA,GAAI3J,KAAM,CAAAuJ,QAAA,CAASK,IAAI,CAAA,CAAA;MAC7B,IAAI1H,OAAM2H,QAAU,EAAA;AACd,QAAA,IAAA/G,KAAA,CAAMgH,YAAYC,IAAK,CAAA,UAAClB;iBAASA,IAAK,CAAAmB,MAAA,CAAOL,CAAC,CAAC,CAAA;AAAA,SAAA,CAAG,EAAA;UAE9C7G,KAAA,CAAAgH,WAAA,GAAcG,MAAO,CAAAnH,KAAA,CAAMgH,WAAa,EAAA,UAACjB;mBAAS,CAACA,IAAA,CAAKmB,MAAO,CAAAL,CAAC,CAAC,CAAA;WAAA,CAAA,CAAA;AACzE,SAAO,MAAA;AACC7G,UAAAA,KAAA,CAAAgH,WAAA,CAAY5E,KAAKyE,CAAC,CAAA,CAAA;AAC1B,SAAA;AACF,OAAO,MAAA;QACL7G,KAAA,CAAMoH,OAAU,GAAAP,CAAA,CAAA;AAClB,OAAA;AACcP,MAAAA,aAAA,CAAA,aAAA,EAAeE,GAAGC,QAAQ,CAAA,CAAA;KAC1C,CAAA;IACM,IAAAY,eAAA,GAAkB,SAAlBA,eAAAA,CAAmBb,CAAA,EAAeC,QAAiC,EAAA;AACzDH,MAAAA,aAAA,CAAA,mBAAA,EAAqBE,GAAGC,QAAQ,CAAA,CAAA;KAChD,CAAA;IACM,IAAAa,cAAA,GAAiB,SAAjBA,cAAAA,CAAkBd,CAAA,EAAeC,QAAiC,EAAA;MACtE,IAAIrH,OAAMmI,sBAAwB,EAAA;QAChCf,CAAA,CAAEgB,cAAe,EAAA,CAAA;AACnB,OAAA;AACclB,MAAAA,aAAA,CAAA,kBAAA,EAAoBE,GAAGC,QAAQ,CAAA,CAAA;KAC/C,CAAA;AAEM,IAAA,IAAAgB,cAAA,GAAiB9G,SAA2B,YAAM;MACtD,IAAM+G,OAA4B,GAAAC,oBAA2BvI,CAAAA,MAAAA,EAAOY,KAAK,CAAA,CAAA;AAClE,MAAA,OAAA0H,OAAA,CAAA;AACT,KAAC,CAAA,CAAA;AACD,IAAA,IAAME,kBAAkB,SAAlBA,kBAAwB;AAC5B,MAAA,OAAA/C,WAAA,CAAA,OAAA,EAAA;QAAA,OACgB1E,EAAAA,GAAA,CAAI0H,KAAM,CAAAtK,KAAAA;AAAA,OAAA,EAAA,CAAAsH,WAAA,CAAA,OAAA,EAAA;QAAA,OACR1E,EAAAA,GAAA,CAAI2H,SAAU,CAAAvK,KAAAA;AAAA,OAAA,EAAA,CAAAsH,WAAA,CAAA,IAAA,EAAA;QAAA,OACf1E,EAAAA,GAAA,CAAI4H,YAAa,CAAAxK,KAAAA;OACzBgD,EAAAA,CAAAA,eAAehD,KAAM,CAAAuI,GAAA,CACpB,UAACC,MAAMiC,KACL,EAAA;AAAA,QAAA,OAAA9H,eAAA,CAAgB6F,KAAKkC,GAAG,CAAA,IAAApD,WAAA,CAAA,IAAA,EAAA;UAAA,OACX1E,EAAAA,GAAA,CAAI+H,cAAc3K,KAAAA;SAC1B4K,EAAAA,CAAAA,OAAA,CAAQ/I,OAAMgJ,IAAI,CAAA,GACfhJ,OAAMgJ,IAAK,CAAAJ,KAAA,CAAA,GACXzI,aAAc,CAAA,MAAA,EAAQ,KAAW,CAAA,EAAA;AAC/B8I,UAAAA,WAAa,EAAAxD,WAAA,CAAA,MAAA,EAAA,IAAA,EAAA,CAAOkB,IAAA,CAAKuC,QAAX,CAAA;AACdtD,UAAAA,MAAQ,EAAA;YAAEuD,GAAK,EAAAxC,IAAA,CAAKkC,GAAAA;AAAI,WAAA;AAC1B,SAAC,EANN,CAAA,CAAA;OASP,CAAA,MAAApD,WAAA,CAAA,OAAA,EAAA;QAAA,OAIU1E,EAAAA,IAAIqI,SAAU,CAAAjL,KAAAA;OACzBkK,EAAAA,CAAAA,eAAelK,KAAM,CAAAuI,GAAA,CAAI,UAACsC,IAAA,EAAMK;;iBACpBtI,EAAAA,GAAI,CAAAuI,YAAA,CAAanL,KAAAA;YACzB6K,IAAK,CAAAtC,GAAA,CACJ,UAACC,IAAM,EAAA4C,SAAA,EAAA;AAAA,UAAA,OAAA,CACJ3I,KAAM,CAAA0D,aAAA,IAAiBqC,IAAK,CAAAwC,GAAA,GAAM,CACjC,KAAA1D,WAAA,CAAA+D,gBAAA,EAAA;AAAA,YAAA,KAAA,EAAA,IAAA,CAAAjH,MAAA,CACY8G,SAAA,EAAA9G,GAAAA,CAAAA,CAAAA,MAAA,CAAagH,SACvB,CAAA;AAAA,YAAA,MAAA,EAAM5C,IACN;YAAA,OAAO3G,EAAAA,MAAM,CAAA+E,KAAA;AAAA,YAAA,GAAA,EACVvE,CAAA;YAAA,QACKC,EAAAA,YAAA,CAAatC,KACrB;YAAA,MAAM6B,EAAAA,MAAM,CAAAuH,IAAA;YAAA,YACAvH,EAAAA,MAAAA,CAAMyJ;0BACJzJ,EAAAA,MAAAA,CAAM0J,YACpB;YAAA,SAAS,EAAA,SAAA1C,QAACI,CAAA,EAAA;AAAA,cAAA,OAAkBI,SAAU,CAAAJ,CAAA,EAAGT,IAAI,CAAA,CAAA;AAAA,aAAA;YAAA,YACjC,EAAA,SAAAgD,WAACvC,CAAkB,EAAA;AAAA,cAAA,OAAAa,eAAA,CAAgBb,CAAG,EAAAT,IAAI,CACtD,CAAA;AAAA,aAAA;YAAA,cAAc,EAAA,SAAAiD,aAACxC,CAAA,EAAA;AAAA,cAAA,OAAkBc,cAAe,CAAAd,CAAA,EAAGT,IAAI,CAAA,CAAA;AAAA,aAAA;WAAAd,EAAAA,aAAA,CACzC3F,EAAAA,EAAAA,KAAA,CACf,CAAA,CAAA;AAAA,SAEP,CACF,CAAA,CAAA,CAAA;AAAA,OACD,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA;KAIT,CAAA;AAEM,IAAA,IAAA2J,aAAA,GAAgBtI,SAA2B,YAAM;MACrD,IAAMsB,KAAuB,EAAC,CAAA;MAC9B,IAAMiH,SAA4B,GAAAvB,mBAA0BvI,CAAAA,MAAAA,EAAOY,KAAK,CAAA,CAAA;MACxE,IAAMmJ,QAAW,GAAAC,IAAA,CAAKC,IAAK,CAAAH,SAAA,CAAUvL,SAAS2L,0BAA0B,CAAA,CAAA;MACxE,IAAItB,KAAQ,GAAA,CAAA,CAAA;MACZ,KAAA,IAAS7F,CAAI,GAAA,CAAA,EAAGA,CAAK,IAAAgH,QAAA,EAAUhH,CAAK,EAAA,EAAA;QAClC,IAAMoH,MAAsB,EAAC,CAAA;QAC7B,KAAA,IAASC,CAAI,GAAA,CAAA,EAAGA,CAAK,IAAAF,0BAAA,EAA4BE,CAAK,EAAA,EAAA;AAChDD,UAAAA,GAAA,CAAAnH,IAAA,CAAK8G,UAAUlB,KAAM,CAAA,CAAA,CAAA;AAChBA,UAAAA,KAAA,IAAA,CAAA,CAAA;AACX,SAAA;AACA/F,QAAAA,EAAA,CAAGG,KAAKmH,GAAG,CAAA,CAAA;AACb,OAAA;AACO,MAAA,OAAAtH,EAAA,CAAA;AACT,KAAC,CAAA,CAAA;AACD,IAAA,IAAMwH,iBAAiB,SAAjBA,iBAAuB;AAC3B,MAAA,OAAA5E,WAAA,CAAA,OAAA,EAAA;QAAA,OACgB1E,EAAAA,IAAI0H,KAAM,CAAAtK,KAAAA;AAAA,OAAA,EAAA,CAAAsH,WAAA,CAAA,OAAA,EAAA;QAAA,OACR1E,EAAAA,GAAI,CAAAqI,SAAA,CAAUjL,KAAAA;OACzB0L,EAAAA,CAAAA,aAAc,CAAA1L,KAAA,CAAMuI,IAAI,UAACa,IAAA,EAAM+C;;iBACnBvJ,EAAAA,GAAA,CAAIuI,aAAanL,KAAAA;AACzB,SAAA,EAAA,CAAAoJ,IAAA,CAAKb,IAAI,UAACC,IAAA,EAAM4C;;+BAEHe,SAAA,EAAA/H,GAAAA,CAAAA,CAAAA,MAAA,CAAagH;oBACjB5C,IAAA;YAAA,OACC3G,EAAAA,MAAM,CAAA+E,KAAA;AAAA,YAAA,GAAA,EACVvE,CACH;YAAA,QAAQC,EAAAA,YAAa,CAAAtC,KAAA;YAAA,MACf6B,EAAAA,MAAM,CAAAuH,IAAA;YAAA,YACAvH,EAAAA,MAAM,CAAAyJ,UAAA;YAAA,cACJzJ,EAAAA,MAAM,CAAA0J,YAAA;YAAA,SACX,EAAA,SAAA1C,QAACI,CAAA,EAAA;AAAA,cAAA,OAAkBI,UAAUJ,CAAG,EAAAT,IAAI;;wBACjC,EAAA,SAAAgD,WAACvC;qBAAkBa,eAAgB,CAAAb,CAAA,EAAGT,IAAI,CAAA,CAAA;AAAA,aAAA;YAAA,cACxC,EAAA,SAAAiD,aAACxC,CAAA,EAAA;AAAA,cAAA,OAAkBc,eAAed,CAAG,EAAAT,IAAI;;+BACzCzG,KAAM,CAAA,CAAA,CAAA;AAAA,SAEvB,CACH,CAAA,CAAA,CAAA;AAAA,OACD,CACH,CAAA,CAAA,CAAA,CAAA,CAAA;KAGN,CAAA;AAEA,IAAA,OAAO,YAAM;AACX,MAAA,OAAAuF,WAAA,CAAA,KAAA,EAAA;QAAA,OACc1E,EAAAA,GAAA,CAAIwJ,IAAK,CAAApM,KAAAA;OAClBiD,EAAAA,CAAAA,UAAA,CAAWoJ,OAAQ,CAAArM,KAAA,IAASoH,aAAc,EAAA,EAAAE,WAAA,CAAA,KAAA,EAAA;QAAA,OAC/B1E,EAAAA,GAAA,CAAI0J,KAAM,CAAAtM,KAAAA;AAAA,OAAA,EAAA,CAAQyC,KAAM,CAAAgD,eAAA,KAAoB,OAAU,GAAA4E,eAAA,EAAoB,GAAA6B,cAAA;KAG5F,CAAA;AACF,GAAA;AACF,CAAC,CAAA;;;;"}