UNPKG

tdesign-vue-next

Version:
1 lines 62 kB
{"version":3,"file":"base-table.mjs","sources":["../../../components/table/base-table.tsx"],"sourcesContent":["import { computed, defineComponent, SetupContext, ref, nextTick, PropType, watch, onMounted, toRefs } from 'vue';\nimport { pick } from 'lodash-es';\nimport { get } from 'lodash-es';\nimport props from './base-table-props';\nimport useTableHeader from './hooks/useTableHeader';\nimport useColumnResize from './hooks/useColumnResize';\nimport useFixed from './hooks/useFixed';\nimport usePagination from './hooks/usePagination';\nimport useVirtualScrollNew from '../hooks/useVirtualScrollNew';\nimport useAffix from './hooks/useAffix';\nimport Loading from '../loading';\nimport TBody, { extendTableProps } from './tbody';\nimport { BaseTableProps } from './interface';\nimport { useTNodeJSX } from '../hooks/tnode';\nimport useStyle, { formatCSSUnit } from './hooks/useStyle';\nimport useClassName from './hooks/useClassName';\nimport { useConfig } from '../hooks/useConfig';\nimport { Affix } from '../affix';\nimport { ROW_LISTENERS } from './tr';\nimport THead from './thead';\nimport TFoot from './tfoot';\nimport { getAffixProps } from './utils';\nimport { Styles, ComponentScrollToElementParams } from '../common';\nimport { getIEVersion } from '@tdesign/common-js/utils/helper';\nimport { BaseTableInstanceFunctions } from './type';\nimport log from '@tdesign/common-js/log/index';\nimport { useRowHighlight } from './hooks/useRowHighlight';\nimport useHoverKeyboardEvent from './hooks/useHoverKeyboardEvent';\nimport useElementLazyRender from '../hooks/useElementLazyRender';\nimport { isFunction } from 'lodash-es';\nimport { throttle } from 'lodash-es';\n\nexport const BASE_TABLE_EVENTS = ['page-change', 'cell-click', 'scroll', 'scrollX', 'scrollY'];\nexport const BASE_TABLE_ALL_EVENTS = ROW_LISTENERS.map((t) => `row-${t}`).concat(BASE_TABLE_EVENTS);\n\nexport interface TableListeners {\n [key: string]: Function;\n}\n\nexport default defineComponent({\n name: 'TBaseTable',\n\n props: {\n ...props,\n /**\n * 渲染展开行,非公开属性,请勿在业务中使用\n */\n renderExpandedRow: Function as PropType<BaseTableProps['renderExpandedRow']>,\n onLeafColumnsChange: Function as PropType<BaseTableProps['onLeafColumnsChange']>,\n thDraggable: Boolean,\n },\n\n emits: ['show-element-change'],\n\n setup(props: BaseTableProps, context: SetupContext) {\n const { lazyLoad } = toRefs(props);\n const renderTNode = useTNodeJSX();\n const tableRef = ref<HTMLDivElement>();\n const tableElmRef = ref<HTMLTableElement>();\n const tableBodyRef = ref<InstanceType<typeof TBody>>();\n const bottomContentRef = ref<HTMLDivElement>();\n const tableFootHeight = ref(0);\n const { classPrefix, virtualScrollClasses, tableLayoutClasses, tableBaseClass, tableColFixedClasses } =\n useClassName();\n // 表格基础样式类\n const { tableClasses, sizeClassNames, tableContentStyles, tableElementStyles } = useStyle(props);\n const { globalConfig } = useConfig('table', props.locale);\n const { isMultipleHeader, spansAndLeafNodes, thList } = useTableHeader(props);\n const finalColumns = computed(() => spansAndLeafNodes.value?.leafColumns || props.columns);\n const tableSize = computed(() => props.size ?? globalConfig.value.size);\n\n const { showElement } = useElementLazyRender(tableRef, lazyLoad);\n\n // 吸附相关ref 用来做视图resize后重新定位\n const paginationAffixRef = ref();\n const horizontalScrollAffixRef = ref();\n const headerTopAffixRef = ref();\n const footerBottomAffixRef = ref();\n\n // 固定表头和固定列逻辑\n const {\n scrollbarWidth,\n virtualScrollHeaderPos,\n tableWidth,\n tableElmWidth,\n tableContentRef,\n isFixedHeader,\n isWidthOverflow,\n isFixedColumn,\n thWidthList,\n showColumnShadow,\n rowAndColFixedPosition,\n setData,\n refreshTable,\n setTableElmWidth,\n emitScrollEvent,\n setUseFixedTableElmRef,\n updateColumnFixedShadow,\n getThWidthList,\n updateThWidthList,\n addTableResizeObserver,\n updateTableAfterColumnResize,\n } = useFixed(props, context, finalColumns, {\n paginationAffixRef,\n horizontalScrollAffixRef,\n headerTopAffixRef,\n footerBottomAffixRef,\n });\n\n // 1. 表头吸顶;2. 表尾吸底;3. 底部滚动条吸底;4. 分页器吸底\n const {\n affixHeaderRef,\n affixFooterRef,\n horizontalScrollbarRef,\n paginationRef,\n showAffixHeader,\n showAffixFooter,\n showAffixPagination,\n onHorizontalScroll,\n setTableContentRef,\n updateAffixHeaderOrFooter,\n } = useAffix(props);\n\n const { dataSource, innerPagination, isPaginateData, renderPagination } = usePagination(props, context);\n\n // 列宽拖拽逻辑\n const columnResizeParams = useColumnResize({\n isWidthOverflow,\n tableContentRef,\n showColumnShadow,\n getThWidthList,\n updateThWidthList,\n setTableElmWidth,\n updateTableAfterColumnResize,\n onColumnResizeChange: props.onColumnResizeChange,\n });\n const { resizeLineRef, resizeLineStyle, setEffectColMap } = columnResizeParams;\n\n const dynamicBaseTableClasses = computed(() => [\n tableClasses.value,\n {\n [tableBaseClass.headerFixed]: isFixedHeader.value,\n [tableBaseClass.columnFixed]: isFixedColumn.value,\n [tableBaseClass.widthOverflow]: isWidthOverflow.value,\n [tableBaseClass.multipleHeader]: isMultipleHeader.value,\n [tableColFixedClasses.leftShadow]: showColumnShadow.left,\n [tableColFixedClasses.rightShadow]: showColumnShadow.right,\n [tableBaseClass.columnResizableTable]: props.resizable,\n [`${classPrefix}-table__row--active-${props.activeRowType}`]: props.activeRowType,\n },\n ]);\n\n const tableElmClasses = computed(() => [[tableLayoutClasses[props.tableLayout]]]);\n\n const showRightDivider = computed(\n () =>\n props.bordered &&\n isFixedHeader.value &&\n ((isMultipleHeader.value && isWidthOverflow.value) || !isMultipleHeader.value),\n );\n\n const dividerBottom = computed(() => {\n if (!props.bordered) return 0;\n const bottomRect = bottomContentRef.value?.getBoundingClientRect();\n const paginationRect = paginationRef.value?.getBoundingClientRect();\n return (bottomRect?.height || 0) + (paginationRect?.height || 0);\n });\n\n // 行高亮\n const { tActiveRow, onHighlightRow, addHighlightKeyboardListener, removeHighlightKeyboardListener } =\n useRowHighlight(props, tableRef);\n\n const {\n hoverRow,\n needKeyboardRowHover,\n clearHoverRow,\n addRowHoverKeyboardListener,\n removeRowHoverKeyboardListener,\n tableRefTabIndex,\n } = useHoverKeyboardEvent(props, tableRef);\n\n watch(tableElmRef, () => {\n setUseFixedTableElmRef(tableElmRef.value);\n });\n\n watch(\n () => [props.data, dataSource],\n () => {\n setData(isPaginateData.value ? dataSource.value : props.data);\n },\n );\n\n watch(\n spansAndLeafNodes,\n () => {\n props.onLeafColumnsChange?.(spansAndLeafNodes.value.leafColumns);\n setEffectColMap(spansAndLeafNodes.value.leafColumns, null);\n },\n { immediate: true },\n );\n\n const onFixedChange = () => {\n nextTick(() => {\n onHorizontalScroll();\n updateAffixHeaderOrFooter();\n });\n };\n\n const syncThWidthList = throttle(() => {\n updateThWidthList(getThWidthList('calculate'));\n });\n\n // 虚拟滚动相关数据\n const virtualScrollParams = computed(() => ({\n data: props.data,\n // 传递 fixedRows 的配置\n scroll: { ...props.scroll, fixedRows: props.fixedRows },\n }));\n const virtualConfig = useVirtualScrollNew(tableContentRef, virtualScrollParams);\n\n let lastScrollY = -1;\n const onInnerVirtualScroll = (e: WheelEvent) => {\n const target = (e.target || e.srcElement) as HTMLElement;\n const top = target.scrollTop;\n // 排除横向滚动触发的纵向虚拟滚动计算\n if (lastScrollY !== top) {\n virtualConfig.isVirtualScroll.value && virtualConfig.handleScroll();\n } else {\n lastScrollY = -1;\n updateColumnFixedShadow(target);\n }\n lastScrollY = top;\n emitScrollEvent(e);\n if (props.tableLayout === 'auto') {\n syncThWidthList();\n }\n };\n\n // used for top margin\n const getTFootHeight = () => {\n if (!tableElmRef.value) return;\n tableFootHeight.value = tableElmRef.value.querySelector('tfoot')?.getBoundingClientRect().height;\n };\n\n // 对外暴露方法,修改时需谨慎(expose)\n const scrollColumnIntoView: BaseTableInstanceFunctions['scrollColumnIntoView'] = (colKey: string) => {\n if (!tableContentRef.value) return;\n const thDom = tableContentRef.value.querySelector(`th[data-colkey=\"${colKey}\"]`);\n const fixedThDom = tableContentRef.value.querySelectorAll('th.t-table__cell--fixed-left');\n let totalWidth = 0;\n for (let i = 0, len = fixedThDom.length; i < len; i++) {\n totalWidth += fixedThDom[i].getBoundingClientRect().width;\n }\n const domRect = thDom.getBoundingClientRect();\n const contentRect = tableContentRef.value.getBoundingClientRect();\n const distance = domRect.left - contentRect.left - totalWidth;\n tableContentRef.value.scrollTo({ left: distance, behavior: 'smooth' });\n };\n\n watch(tableContentRef, () => {\n setTableContentRef(tableContentRef.value);\n // auto 布局下,初始化表头列宽,避免 affix 表头列宽不对齐\n if (props.tableLayout === 'auto') {\n syncThWidthList();\n }\n });\n\n // 应该有多种情况下需要更新 foot 高度\n // 原方案只监听 tableElmRef,但是可能有异步渲染的情况,footer 的渲染晚于 dom 引用的产生\n // 加入 timeout,避免渲染延迟导致的高度获取失败\n watch(\n () => [tableElmRef.value, props.footData, props.footerSummary, props.columns],\n () => {\n const timer = setTimeout(() => {\n getTFootHeight();\n clearTimeout(timer);\n }, 0);\n },\n );\n\n watch(tableRef, (tableRef) => {\n addTableResizeObserver(tableRef);\n });\n\n onMounted(() => {\n getTFootHeight();\n setTableContentRef(tableContentRef.value);\n addTableResizeObserver(tableRef.value);\n });\n\n const onTableFocus = () => {\n props.activeRowType && addHighlightKeyboardListener();\n needKeyboardRowHover.value && addRowHoverKeyboardListener();\n };\n\n const onTableBlur = () => {\n props.activeRowType && removeHighlightKeyboardListener();\n needKeyboardRowHover.value && removeRowHoverKeyboardListener();\n };\n\n const onInnerRowClick: BaseTableProps['onRowClick'] = (ctx) => {\n props.onRowClick?.(ctx);\n props.activeRowType && onHighlightRow(ctx);\n needKeyboardRowHover.value && clearHoverRow();\n };\n\n watch(\n [showElement],\n ([showElement]) => {\n context.emit('show-element-change', showElement);\n },\n { immediate: true },\n );\n\n const tableData = computed(() => (isPaginateData.value ? dataSource.value : props.data));\n\n const scrollToElement = (params: ComponentScrollToElementParams) => {\n let { index } = params;\n if (!index && index !== 0) {\n if (!params.key) {\n log.error('Table', 'scrollToElement: one of `index` or `key` must exist.');\n return;\n }\n index = tableData.value?.findIndex((item) => get(item, props.rowKey) === params.key);\n if (index < 0) {\n log.error('Table', `${params.key} does not exist in data, check \\`rowKey\\` or \\`data\\` please.`);\n }\n }\n if (virtualConfig.isVirtualScroll.value) {\n virtualConfig.scrollToElement({ ...params, index: index + 1 });\n } else {\n // 执行普通的滚动\n // 获取 tbody\n const el = tableBodyRef.value?.$el as HTMLElement | undefined;\n const row = el?.children?.[index] as HTMLElement;\n if (row) {\n const { offsetTop } = row;\n const scrollTop = tableContentRef.value.scrollTop;\n const scrollHeight = offsetTop - scrollTop - (params.top ?? 0);\n // 实现偏移量的支持\n tableContentRef.value.scrollBy({ top: scrollHeight, behavior: params.behavior ?? 'auto' });\n }\n }\n };\n\n return {\n thList,\n classPrefix,\n innerPagination,\n globalConfig,\n tableFootHeight,\n virtualScrollHeaderPos,\n tableSize,\n tableWidth,\n tableElmWidth,\n tableRef,\n tableElmRef,\n sizeClassNames,\n tableBaseClass,\n spansAndLeafNodes,\n dynamicBaseTableClasses,\n tableContentStyles,\n tableElementStyles,\n dividerBottom,\n virtualScrollClasses,\n tableLayoutClasses,\n tableElmClasses,\n tableContentRef,\n isFixedHeader,\n isWidthOverflow,\n isFixedColumn,\n rowAndColFixedPosition,\n showColumnShadow,\n thWidthList,\n isPaginateData,\n dataSource,\n affixHeaderRef,\n affixFooterRef,\n bottomContentRef,\n paginationRef,\n showAffixHeader,\n showAffixFooter,\n scrollbarWidth,\n isMultipleHeader,\n showRightDivider,\n resizeLineRef,\n resizeLineStyle,\n columnResizeParams,\n horizontalScrollbarRef,\n tableBodyRef,\n virtualConfig,\n showAffixPagination,\n tActiveRow,\n hoverRow,\n showElement,\n scrollToElement,\n renderPagination,\n renderTNode,\n onFixedChange,\n onHorizontalScroll,\n updateAffixHeaderOrFooter,\n onInnerVirtualScroll,\n refreshTable,\n scrollColumnIntoView,\n onTableFocus,\n onTableBlur,\n onInnerRowClick,\n paginationAffixRef,\n horizontalScrollAffixRef,\n headerTopAffixRef,\n footerBottomAffixRef,\n tableRefTabIndex,\n };\n },\n\n render() {\n if (!this.showElement) {\n return <div ref=\"tableRef\"></div>;\n }\n\n const { rowAndColFixedPosition, tableLayout } = this;\n const data = this.isPaginateData ? this.dataSource : this.data;\n const columns = this.spansAndLeafNodes?.leafColumns || this.columns;\n\n const columnResizable = this.allowResizeColumnWidth ?? this.resizable;\n if (columnResizable && tableLayout === 'auto') {\n log.warn(\n 'Table',\n 'table-layout can not be `auto`, cause you are using column resizable, set `table-layout: fixed` please.',\n );\n }\n\n const defaultColWidth = tableLayout === 'fixed' && this.isWidthOverflow ? '100px' : undefined;\n\n const renderColGroup = (isAffixHeader = true) => (\n <colgroup>\n {columns.map((col) => {\n const style: Styles = {\n width:\n formatCSSUnit(\n (isAffixHeader || columnResizable ? this.thWidthList[col.colKey] : undefined) || col.width,\n ) || defaultColWidth,\n };\n if (col.minWidth) {\n style.minWidth = formatCSSUnit(col.minWidth);\n }\n // 没有设置任何宽度的场景下,需要保留表格正常显示的最小宽度,否则会出现因宽度过小的抖动问题\n if (!style.width && !col.minWidth && this.tableLayout === 'fixed') {\n style.minWidth = '80px';\n }\n return <col key={col.colKey} style={style}></col>;\n })}\n </colgroup>\n );\n\n const renderAffixedHeader = () => {\n if (this.showHeader === false) return null;\n return (\n !!(this.virtualConfig.isVirtualScroll.value || this.headerAffixedTop) &&\n (this.headerAffixedTop ? (\n <Affix\n offsetTop={0}\n {...getAffixProps(this.headerAffixedTop)}\n onFixedChange={this.onFixedChange}\n ref=\"headerTopAffixRef\"\n >\n {affixHeaderWithWrap}\n </Affix>\n ) : (\n this.isFixedHeader && affixHeaderWithWrap\n ))\n );\n };\n\n const renderAffixedHorizontalScrollbar = () => (\n <Affix\n offsetBottom={0}\n {...getAffixProps(this.horizontalScrollAffixedBottom)}\n style={{ marginTop: `-${this.scrollbarWidth * 2}px` }}\n horizontalScrollAffixedBottom\n ref=\"horizontalScrollAffixRef\"\n >\n <div\n ref=\"horizontalScrollbarRef\"\n class={['scrollbar', this.tableBaseClass.obviousScrollbar]}\n style={{\n width: `${this.tableWidth}px`,\n overflow: 'auto',\n opacity: Number(this.showAffixFooter),\n }}\n >\n <div style={{ width: `${this.tableElmWidth}px`, height: '5px' }}></div>\n </div>\n </Affix>\n );\n\n const headProps = {\n isFixedHeader: this.isFixedHeader,\n rowAndColFixedPosition: this.rowAndColFixedPosition,\n isMultipleHeader: this.isMultipleHeader,\n bordered: this.bordered,\n maxHeight: this.maxHeight,\n height: this.height,\n spansAndLeafNodes: this.spansAndLeafNodes,\n thList: this.thList,\n thWidthList: this.thWidthList,\n resizable: this.resizable,\n columnResizeParams: this.columnResizeParams,\n classPrefix: this.classPrefix,\n ellipsisOverlayClassName: this.tableSize !== 'medium' ? this.sizeClassNames[this.tableSize] : '',\n attach: this.attach,\n showColumnShadow: this.showColumnShadow,\n thDraggable: this.thDraggable,\n };\n\n /**\n * Affixed Header\n */\n // IE 浏览器需要遮挡 header 吸顶滚动条,要减去 getBoundingClientRect.height 的滚动条高度 4 像素\n const IEHeaderWrap = getIEVersion() <= 11 ? 4 : 0;\n const barWidth = this.isWidthOverflow ? this.scrollbarWidth : 0;\n const affixHeaderHeight = ref((this.affixHeaderRef?.getBoundingClientRect().height || 0) - IEHeaderWrap);\n // 等待表头渲染完成后再更新高度,有可能列变动带来多级表头的高度变化,错误高度会导致滚动条显示\n const timer = setTimeout(() => {\n affixHeaderHeight.value = (this.affixHeaderRef?.getBoundingClientRect().height || 0) - IEHeaderWrap;\n clearTimeout(timer);\n }, 0);\n const affixHeaderWrapHeight = computed(() => affixHeaderHeight.value - barWidth);\n // 两类场景:1. 虚拟滚动,永久显示表头,直到表头消失在可视区域; 2. 表头吸顶,根据滚动情况判断是否显示吸顶表头\n const headerOpacity = props.headerAffixedTop ? Number(this.showAffixHeader) : 1;\n const affixHeaderWrapHeightStyle = computed(() => {\n return {\n width: `${this.tableWidth}px`,\n height: `${affixHeaderWrapHeight.value}px`,\n opacity: headerOpacity,\n };\n });\n // 多级表头左边线缺失\n const affixedLeftBorder = this.bordered ? 1 : 0;\n const affixedHeader = Boolean(\n (this.headerAffixedTop || this.virtualConfig.isVirtualScroll.value) && this.tableWidth,\n ) && (\n <div\n ref=\"affixHeaderRef\"\n style={{\n width: `${this.tableWidth - affixedLeftBorder}px`,\n opacity: Number(this.showAffixHeader),\n }}\n class={[\n 'scrollbar',\n {\n [this.tableBaseClass.affixedHeaderElm]: this.headerAffixedTop || this.virtualConfig.isVirtualScroll.value,\n },\n ]}\n >\n <table class={this.tableElmClasses} style={{ ...this.tableElementStyles, width: `${this.tableElmWidth}px` }}>\n {renderColGroup(true)}\n <THead v-slots={this.$slots} {...headProps} />\n </table>\n </div>\n );\n\n // 添加这一层,是为了隐藏表头的横向滚动条。如果以后不需要照顾 IE 10 以下的项目,则可直接移除这一层\n // 彼时,可更为使用 CSS 样式中的 .hideScrollbar()\n const affixHeaderWithWrap = (\n <div class={this.tableBaseClass.affixedHeaderWrap} style={affixHeaderWrapHeightStyle.value}>\n {affixedHeader}\n </div>\n );\n\n /**\n * Affixed Footer\n */\n let marginScrollbarWidth = this.isWidthOverflow ? this.scrollbarWidth : 0;\n if (this.bordered) {\n marginScrollbarWidth += 1;\n }\n // Hack: Affix 组件,marginTop 临时使用 负 margin 定位位置\n const showFooter = Boolean(this.virtualConfig.isVirtualScroll.value || this.footerAffixedBottom);\n const hasFooter = this.footData?.length || this.footerSummary || this.$slots['footerSummary'];\n const affixedFooter = Boolean(showFooter && hasFooter && this.tableWidth) && (\n <Affix\n class={this.tableBaseClass.affixedFooterWrap}\n onFixedChange={this.onFixedChange}\n offsetBottom={marginScrollbarWidth || 0}\n {...getAffixProps(this.footerAffixedBottom)}\n style={{ marginTop: `${-1 * ((this.tableFootHeight ?? 0) + marginScrollbarWidth)}px` }}\n ref=\"footerBottomAffixRef\"\n >\n <div\n ref=\"affixFooterRef\"\n style={{ width: `${this.tableWidth - affixedLeftBorder}px`, opacity: Number(this.showAffixFooter) }}\n class={[\n 'scrollbar',\n {\n [this.tableBaseClass.affixedFooterElm]:\n this.footerAffixedBottom || this.virtualConfig.isVirtualScroll.value,\n },\n ]}\n >\n <table class={this.tableElmClasses} style={{ ...this.tableElementStyles, width: `${this.tableElmWidth}px` }}>\n {/* 此处和 Vue2 不同,Vue3 里面必须每一处单独写 <colgroup> */}\n {renderColGroup(true)}\n <TFoot\n rowKey={this.rowKey}\n v-slots={this.$slots}\n isFixedHeader={this.isFixedHeader}\n rowAndColFixedPosition={rowAndColFixedPosition}\n footData={this.footData}\n columns={columns}\n rowAttributes={this.rowAttributes}\n rowClassName={this.rowClassName}\n thWidthList={this.thWidthList}\n footerSummary={this.footerSummary}\n rowspanAndColspanInFooter={this.rowspanAndColspanInFooter}\n ></TFoot>\n </table>\n </div>\n </Affix>\n );\n\n // 通过 translate 撑开虚拟滚动的高度,应该是内容高度加上表头和表尾的高度\n const translate = `translate(0, ${\n this.virtualConfig.scrollHeight.value + (this.tableFootHeight ?? 0) + (affixHeaderHeight.value ?? 0)\n }px)`;\n const virtualStyle = {\n transform: translate,\n '-ms-transform': translate,\n '-moz-transform': translate,\n '-webkit-transform': translate,\n };\n const tableBodyProps = {\n classPrefix: this.classPrefix,\n ellipsisOverlayClassName: this.tableSize !== 'medium' ? this.sizeClassNames[this.tableSize] : '',\n rowAndColFixedPosition,\n showColumnShadow: this.showColumnShadow,\n data: data,\n virtualConfig: this.virtualConfig,\n columns: this.spansAndLeafNodes.leafColumns,\n tableElm: this.tableRef,\n tableWidth: this.tableWidth,\n isWidthOverflow: this.isWidthOverflow,\n scroll: this.scroll,\n cellEmptyContent: this.cellEmptyContent,\n tableContentElm: this.tableContentRef,\n handleRowMounted: this.virtualConfig.handleRowMounted,\n renderExpandedRow: this.renderExpandedRow,\n ...pick(this.$props, extendTableProps),\n // 内部使用分页信息必须取 innerPagination\n pagination: this.innerPagination,\n attach: this.attach,\n hoverRow: this.hoverRow,\n activeRow: this.tActiveRow,\n onRowClick: this.onInnerRowClick,\n };\n const tableContent = (\n <div\n ref=\"tableContentRef\"\n class={this.tableBaseClass.content}\n style={this.tableContentStyles}\n onScroll={this.onInnerVirtualScroll}\n >\n {this.virtualConfig.isVirtualScroll.value && (\n <div class={this.virtualScrollClasses.cursor} style={virtualStyle} />\n )}\n\n <table\n ref=\"tableElmRef\"\n class={this.tableElmClasses}\n style={{\n ...this.tableElementStyles,\n width:\n this.resizable && this.isWidthOverflow && this.tableElmWidth\n ? `${this.tableElmWidth}px`\n : this.tableElementStyles.width,\n }}\n >\n {renderColGroup(false)}\n {this.showHeader && (\n <THead v-slots={this.$slots} {...{ ...headProps, thWidthList: columnResizable ? this.thWidthList : {} }} />\n )}\n <TBody v-slots={this.$slots} ref=\"tableBodyRef\" {...tableBodyProps} />\n <TFoot\n v-slots={this.$slots}\n rowKey={this.rowKey}\n isFixedHeader={this.isFixedHeader}\n rowAndColFixedPosition={rowAndColFixedPosition}\n footData={this.footData}\n columns={columns}\n rowAttributes={this.rowAttributes}\n rowClassName={this.rowClassName}\n footerSummary={this.footerSummary}\n rowspanAndColspanInFooter={this.rowspanAndColspanInFooter}\n virtualScroll={this.virtualConfig.isVirtualScroll.value}\n ></TFoot>\n </table>\n </div>\n );\n\n const getCustomLoadingText = isFunction(this.loading) ? this.loading : this.$slots.loading;\n const loadingContent = this.loading !== undefined && (\n <Loading\n loading={!!this.loading}\n text={getCustomLoadingText}\n attach={this.tableRef ? () => this.tableRef : undefined}\n showOverlay\n size=\"small\"\n {...(this.loadingProps as BaseTableProps['loadingProps'])}\n ></Loading>\n );\n\n const topContent = this.renderTNode('topContent');\n const bottomContent = this.renderTNode('bottomContent');\n const pagination = (\n <div\n ref=\"paginationRef\"\n class={this.tableBaseClass.paginationWrap}\n style={{ opacity: Number(this.showAffixPagination) }}\n >\n {this.renderPagination()}\n </div>\n );\n\n const bottom = !!bottomContent && (\n <div ref=\"bottomContentRef\" class={this.tableBaseClass.bottomContent}>\n {bottomContent}\n </div>\n );\n\n return (\n <div\n ref=\"tableRef\"\n tabindex={this.tableRefTabIndex}\n class={this.dynamicBaseTableClasses}\n onFocus={this.onTableFocus}\n onBlur={this.onTableBlur}\n >\n {!!topContent && <div class={this.tableBaseClass.topContent}>{topContent}</div>}\n\n {renderAffixedHeader()}\n\n {tableContent}\n\n {affixedFooter}\n\n {loadingContent}\n\n {bottom}\n\n {/* 右侧滚动条分隔线 */}\n {this.showRightDivider && (\n <div\n class={this.tableBaseClass.scrollbarDivider}\n style={{\n right: `${this.scrollbarWidth}px`,\n bottom: this.dividerBottom ? `${this.dividerBottom}px` : undefined,\n height: `${this.tableContentRef?.getBoundingClientRect().height}px`,\n }}\n ></div>\n )}\n\n {/* 吸底的滚动条 */}\n {this.horizontalScrollAffixedBottom && renderAffixedHorizontalScrollbar()}\n\n {/* 吸底的分页器 */}\n {this.paginationAffixedBottom ? (\n <Affix offsetBottom={0} {...getAffixProps(this.paginationAffixedBottom)} ref=\"paginationAffixRef\">\n {pagination}\n </Affix>\n ) : (\n pagination\n )}\n\n {/* 调整列宽时的指示线。由于层级需要比较高,因而放在根节点,避免被吸顶表头覆盖。非必要情况,请勿调整辅助线位置 */}\n <div ref=\"resizeLineRef\" class={this.tableBaseClass.resizeLine} style={this.resizeLineStyle}></div>\n </div>\n );\n },\n});\n"],"names":["_isSlot","s","Object","prototype","toString","call","_isVNode","BASE_TABLE_EVENTS","BASE_TABLE_ALL_EVENTS","ROW_LISTENERS","map","t","concat","defineComponent","name","props","_objectSpread","renderExpandedRow","Function","onLeafColumnsChange","thDraggable","Boolean","emits","setup","context","_toRefs","toRefs","lazyLoad","renderTNode","useTNodeJSX","tableRef","ref","tableElmRef","tableBodyRef","bottomContentRef","tableFootHeight","_useClassName","useClassName","classPrefix","virtualScrollClasses","tableLayoutClasses","tableBaseClass","tableColFixedClasses","_useStyle","useStyle","tableClasses","sizeClassNames","tableContentStyles","tableElementStyles","_useConfig","useConfig","locale","globalConfig","_useTableHeader","useTableHeader","isMultipleHeader","spansAndLeafNodes","thList","finalColumns","computed","_spansAndLeafNodes$va","value","leafColumns","columns","tableSize","_props2$size","size","_useElementLazyRender","useElementLazyRender","showElement","paginationAffixRef","horizontalScrollAffixRef","headerTopAffixRef","footerBottomAffixRef","_useFixed","useFixed","scrollbarWidth","virtualScrollHeaderPos","tableWidth","tableElmWidth","tableContentRef","isFixedHeader","isWidthOverflow","isFixedColumn","thWidthList","showColumnShadow","rowAndColFixedPosition","setData","refreshTable","setTableElmWidth","emitScrollEvent","setUseFixedTableElmRef","updateColumnFixedShadow","getThWidthList","updateThWidthList","addTableResizeObserver","updateTableAfterColumnResize","_useAffix","useAffix","affixHeaderRef","affixFooterRef","horizontalScrollbarRef","paginationRef","showAffixHeader","showAffixFooter","showAffixPagination","onHorizontalScroll","setTableContentRef","updateAffixHeaderOrFooter","_usePagination","usePagination","dataSource","innerPagination","isPaginateData","renderPagination","columnResizeParams","useColumnResize","onColumnResizeChange","resizeLineRef","resizeLineStyle","setEffectColMap","dynamicBaseTableClasses","_defineProperty","headerFixed","columnFixed","widthOverflow","multipleHeader","leftShadow","left","rightShadow","right","columnResizableTable","resizable","activeRowType","tableElmClasses","tableLayout","showRightDivider","bordered","dividerBottom","_bottomContentRef$val","_paginationRef$value","bottomRect","getBoundingClientRect","paginationRect","height","_useRowHighlight","useRowHighlight","tActiveRow","onHighlightRow","addHighlightKeyboardListener","removeHighlightKeyboardListener","_useHoverKeyboardEven","useHoverKeyboardEvent","hoverRow","needKeyboardRowHover","clearHoverRow","addRowHoverKeyboardListener","removeRowHoverKeyboardListener","tableRefTabIndex","watch","data","_props2$onLeafColumns","immediate","onFixedChange","nextTick","syncThWidthList","throttle","virtualScrollParams","scroll","fixedRows","virtualConfig","useVirtualScrollNew","lastScrollY","onInnerVirtualScroll","e","target","srcElement","top","scrollTop","isVirtualScroll","handleScroll","getTFootHeight","_tableElmRef$value$qu","querySelector","scrollColumnIntoView","colKey","thDom","fixedThDom","querySelectorAll","totalWidth","i","len","length","width","domRect","contentRect","distance","scrollTo","behavior","footData","footerSummary","timer","setTimeout","clearTimeout","onMounted","onTableFocus","onTableBlur","onInnerRowClick","ctx","_props2$onRowClick","onRowClick","_ref2","_ref3","_slicedToArray","emit","tableData","scrollToElement","params","index","_tableData$value","key","log","error","findIndex","item","get","rowKey","_tableBodyRef$value","_el$children","el","$el","row","children","_params$top","_params$behavior","offsetTop","scrollHeight","scrollBy","render","_this$spansAndLeafNod","_this$allowResizeColu","_this","_this$affixHeaderRef","_this$footData","_this$tableFootHeight","_this$tableFootHeight2","_affixHeaderHeight$va","_this$tableContentRef","_createVNode","columnResizable","allowResizeColumnWidth","warn","defaultColWidth","renderColGroup","isAffixHeader","arguments","undefined","col","style","formatCSSUnit","minWidth","renderAffixedHeader","showHeader","headerAffixedTop","Affix","_mergeProps","getAffixProps","affixHeaderWithWrap","_default","renderAffixedHorizontalScrollbar","horizontalScrollAffixedBottom","marginTop","obviousScrollbar","overflow","opacity","Number","headProps","maxHeight","ellipsisOverlayClassName","attach","IEHeaderWrap","getIEVersion","barWidth","affixHeaderHeight","_this$affixHeaderRef2","affixHeaderWrapHeight","headerOpacity","affixHeaderWrapHeightStyle","affixedLeftBorder","affixedHeader","affixedHeaderElm","THead","$slots","affixedHeaderWrap","marginScrollbarWidth","showFooter","footerAffixedBottom","hasFooter","affixedFooter","affixedFooterWrap","affixedFooterElm","TFoot","rowAttributes","rowClassName","rowspanAndColspanInFooter","translate","virtualStyle","transform","tableBodyProps","tableElm","cellEmptyContent","tableContentElm","handleRowMounted","pick","$props","extendTableProps","pagination","activeRow","tableContent","content","cursor","TBody","getCustomLoadingText","isFunction","loading","loadingContent","Loading","loadingProps","topContent","bottomContent","paginationWrap","bottom","scrollbarDivider","paginationAffixedBottom","resizeLine"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA8ByB,SAAAA,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;AAEZM,IAAAA,oBAAoB,CAAC,aAAA,EAAe,YAAc,EAAA,QAAA,EAAU,WAAW,SAAS,EAAA;AAChF,IAAAC,qBAAA,GAAwBC,cAAcC,GAAI,CAAA,UAACC;uBAAaA,CAAA,CAAA,CAAA;AAAA,CAAG,CAAE,CAAAC,MAAA,CAAOL,iBAAiB,EAAA;AAMlG,iBAAeM,eAAgB,CAAA;AAC7BC,EAAAA,IAAM,EAAA,YAAA;AAENC,EAAAA,KAAO,EAAAC,aAAA,CAAAA,aAAA,KACFD,cAAA,CAAA,EAAA,EAAA,EAAA;AAIHE,IAAAA,iBAAmB,EAAAC,QAAA;AACnBC,IAAAA,mBAAqB,EAAAD,QAAA;AACrBE,IAAAA,WAAa,EAAAC,OAAAA;GACf,CAAA;EAEAC,KAAA,EAAO,CAAC,qBAAqB,CAAA;AAE7BC,EAAAA,KAAA,WAAAA,KAAAA,CAAMR,QAAuBS,OAAuB,EAAA;AAClD,IAAA,IAAAC,OAAA,GAAqBC,MAAA,CAAOX,MAAK,CAAA;MAAzBY,QAAA,GAAAF,OAAA,CAAAE,QAAA,CAAA;AACR,IAAA,IAAMC,cAAcC,WAAY,EAAA,CAAA;AAChC,IAAA,IAAMC,WAAWC,GAAoB,EAAA,CAAA;AACrC,IAAA,IAAMC,cAAcD,GAAsB,EAAA,CAAA;AAC1C,IAAA,IAAME,eAAeF,GAAgC,EAAA,CAAA;AACrD,IAAA,IAAMG,mBAAmBH,GAAoB,EAAA,CAAA;AACvC,IAAA,IAAAI,eAAA,GAAkBJ,IAAI,CAAC,CAAA,CAAA;AAC7B,IAAA,IAAAK,aAAA,GACEC,YAAa,EAAA;MADPC,WAAa,GAAAF,aAAA,CAAbE,WAAa;MAAAC,oBAAA,GAAAH,aAAA,CAAAG,oBAAA;MAAsBC,mCAAAA;MAAoBC,cAAgB,GAAAL,aAAA,CAAhBK,cAAgB;MAAAC,oBAAA,GAAAN,aAAA,CAAAM,oBAAA,CAAA;AAG/E,IAAA,IAAAC,SAAA,GAAiFC,SAAS7B,MAAK,CAAA;MAAvF8B,YAAc,GAAAF,SAAA,CAAdE,YAAc;MAAAC,cAAA,GAAAH,SAAA,CAAAG,cAAA;MAAgBC,+BAAAA;MAAoBC,kBAAmB,GAAAL,SAAA,CAAnBK,kBAAmB,CAAA;IAC7E,IAAAC,UAAA,GAAyBC,SAAU,CAAA,OAAA,EAASnC,OAAMoC,MAAM,CAAA;MAAhDC,YAAa,GAAAH,UAAA,CAAbG,YAAa,CAAA;AACrB,IAAA,IAAAC,eAAA,GAAwDC,eAAevC,MAAK,CAAA;MAApEwC,gBAAkB,GAAAF,eAAA,CAAlBE,gBAAkB;MAAAC,iBAAA,GAAAH,eAAA,CAAAG,iBAAA;MAAmBC,MAAO,GAAAJ,eAAA,CAAPI,MAAO,CAAA;IACpD,IAAMC,eAAeC,QAAS,CAAA,YAAA;AAAA,MAAA,IAAAC,qBAAA,CAAA;AAAA,MAAA,OAAM,CAAAA,CAAAA,qBAAA,GAAAJ,kBAAkBK,KAAO,MAAA,IAAA,IAAAD,qBAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAzBA,qBAAA,CAAyBE,WAAA,KAAe/C,OAAMgD,OAAO,CAAA;KAAA,CAAA,CAAA;IACzF,IAAMC,YAAYL,QAAS,CAAA,YAAA;AAAA,MAAA,IAAAM,YAAA,CAAA;AAAA,MAAA,OAAA,CAAAA,YAAA,GAAMlD,OAAMmD,IAAQ,MAAAD,IAAAA,IAAAA,YAAA,KAAAA,KAAAA,CAAAA,GAAAA,YAAA,GAAAb,YAAA,CAAaS,MAAMK,IAAI,CAAA;KAAA,CAAA,CAAA;AAEtE,IAAA,IAAAC,qBAAA,GAAwBC,oBAAA,CAAqBtC,UAAUH,QAAQ,CAAA;MAAvD0C,WAAA,GAAAF,qBAAA,CAAAE,WAAA,CAAA;AAGR,IAAA,IAAMC,qBAAqBvC,GAAI,EAAA,CAAA;AAC/B,IAAA,IAAMwC,2BAA2BxC,GAAI,EAAA,CAAA;AACrC,IAAA,IAAMyC,oBAAoBzC,GAAI,EAAA,CAAA;AAC9B,IAAA,IAAM0C,uBAAuB1C,GAAI,EAAA,CAAA;IAG3B,IAAA2C,SAAA,GAsBFC,QAAA,CAAS5D,MAAO,EAAAS,OAAA,EAASkC,YAAc,EAAA;AACzCY,QAAAA,kBAAA,EAAAA,kBAAA;AACAC,QAAAA,wBAAA,EAAAA,wBAAA;AACAC,QAAAA,iBAAA,EAAAA,iBAAA;AACAC,QAAAA,oBAAA,EAAAA,oBAAAA;AACF,OAAC,CAAA;MA1BCG,cAAA,GAAAF,SAAA,CAAAE,cAAA;MACAC,sBAAA,GAAAH,SAAA,CAAAG,sBAAA;MACAC,UAAA,GAAAJ,SAAA,CAAAI,UAAA;MACAC,aAAA,GAAAL,SAAA,CAAAK,aAAA;MACAC,eAAA,GAAAN,SAAA,CAAAM,eAAA;MACAC,aAAA,GAAAP,SAAA,CAAAO,aAAA;MACAC,eAAA,GAAAR,SAAA,CAAAQ,eAAA;MACAC,aAAA,GAAAT,SAAA,CAAAS,aAAA;MACAC,WAAA,GAAAV,SAAA,CAAAU,WAAA;MACAC,gBAAA,GAAAX,SAAA,CAAAW,gBAAA;MACAC,sBAAA,GAAAZ,SAAA,CAAAY,sBAAA;MACAC,OAAA,GAAAb,SAAA,CAAAa,OAAA;MACAC,YAAA,GAAAd,SAAA,CAAAc,YAAA;MACAC,gBAAA,GAAAf,SAAA,CAAAe,gBAAA;MACAC,eAAA,GAAAhB,SAAA,CAAAgB,eAAA;MACAC,sBAAA,GAAAjB,SAAA,CAAAiB,sBAAA;MACAC,uBAAA,GAAAlB,SAAA,CAAAkB,uBAAA;MACAC,cAAA,GAAAnB,SAAA,CAAAmB,cAAA;MACAC,iBAAA,GAAApB,SAAA,CAAAoB,iBAAA;MACAC,sBAAA,GAAArB,SAAA,CAAAqB,sBAAA;MACAC,4BAAA,GAAAtB,SAAA,CAAAsB,4BAAA,CAAA;AASI,IAAA,IAAAC,SAAA,GAWFC,SAASnF,MAAK,CAAA;MAVhBoF,cAAA,GAAAF,SAAA,CAAAE,cAAA;MACAC,cAAA,GAAAH,SAAA,CAAAG,cAAA;MACAC,sBAAA,GAAAJ,SAAA,CAAAI,sBAAA;MACAC,aAAA,GAAAL,SAAA,CAAAK,aAAA;MACAC,eAAA,GAAAN,SAAA,CAAAM,eAAA;MACAC,eAAA,GAAAP,SAAA,CAAAO,eAAA;MACAC,mBAAA,GAAAR,SAAA,CAAAQ,mBAAA;MACAC,kBAAA,GAAAT,SAAA,CAAAS,kBAAA;MACAC,kBAAA,GAAAV,SAAA,CAAAU,kBAAA;MACAC,yBAAA,GAAAX,SAAA,CAAAW,yBAAA,CAAA;AAGI,IAAA,IAAAC,cAAA,GAAoEC,aAAA,CAAc/F,QAAOS,OAAO,CAAA;MAA9FuF,4BAAAA;MAAYC,eAAiB,GAAAH,cAAA,CAAjBG,eAAiB;MAAAC,cAAA,GAAAJ,cAAA,CAAAI,cAAA;MAAgBC,kCAAAA;IAGrD,IAAMC,qBAAqBC,eAAgB,CAAA;AACzClC,MAAAA,eAAA,EAAAA,eAAA;AACAF,MAAAA,eAAA,EAAAA,eAAA;AACAK,MAAAA,gBAAA,EAAAA,gBAAA;AACAQ,MAAAA,cAAA,EAAAA,cAAA;AACAC,MAAAA,iBAAA,EAAAA,iBAAA;AACAL,MAAAA,gBAAA,EAAAA,gBAAA;AACAO,MAAAA,4BAAA,EAAAA,4BAAA;MACAqB,sBAAsBtG,MAAM,CAAAsG,oBAAAA;AAC9B,KAAC,CAAA,CAAA;AACD,IAAA,IAAQC,aAAA,GAAoDH,kBAAA,CAApDG,aAAA;MAAeC,eAAiB,GAAoBJ,kBAAA,CAArCI,eAAiB;MAAAC,eAAA,GAAoBL,kBAAA,CAApBK,eAAA,CAAA;IAElC,IAAAC,uBAAA,GAA0B9D,SAAS,YAAA;AAAA,MAAA,OAAM,CAC7Cd,YAAa,CAAAgB,KAAA,EAAA6D,eAAA,CAAAA,eAAA,CAAAA,eAAA,CAAAA,eAAA,CAAAA,eAAA,CAAAA,eAAA,CAAAA,eAAA,CAAAA,eAAA,CAAA,EAAA,EAEVjF,cAAe,CAAAkF,WAAA,EAAc1C,aAAc,CAAApB,KAAA,CAC3CpB,EAAAA,cAAe,CAAAmF,WAAA,EAAczC,aAAc,CAAAtB,KAAA,GAC3CpB,cAAe,CAAAoF,aAAA,EAAgB3C,eAAgB,CAAArB,KAAA,CAAA,EAC/CpB,cAAe,CAAAqF,cAAA,EAAiBvE,gBAAiB,CAAAM,KAAA,CAAA,EACjDnB,oBAAqB,CAAAqF,UAAA,EAAa1C,gBAAiB,CAAA2C,IAAA,CACnDtF,EAAAA,oBAAqB,CAAAuF,WAAA,EAAc5C,gBAAiB,CAAA6C,KAAA,GACpDzF,cAAe,CAAA0F,oBAAA,EAAuBpH,MAAM,CAAAqH,SAAA,CAAA,EAAA,EAAA,CAAAxH,MAAA,CACzC0B,WAAkCvB,0BAAAA,MAAAA,CAAAA,MAAAA,CAAMsH,gBAAkBtH,MAAM,CAAAsH,aAAA,CAEvE,CAAA,CAAA;KAAA,CAAA,CAAA;IAEK,IAAAC,eAAA,GAAkB3E,SAAS,YAAA;MAAA,OAAM,CAAC,CAACnB,kBAAmBzB,CAAAA,MAAAA,CAAMwH,WAAY,CAAA,CAAC,CAAC,CAAA;KAAA,CAAA,CAAA;IAEhF,IAAMC,gBAAmB,GAAA7E,QAAA,CACvB,YAAA;MAAA,OACE5C,MAAM,CAAA0H,QAAA,IACNxD,aAAc,CAAApB,KAAA,KACZN,iBAAiBM,KAAS,IAAAqB,eAAA,CAAgBrB,KAAU,IAAA,CAACN,gBAAiB,CAAAM,KAAA,CAAA,CAAA;AAAA,KAC5E,CAAA,CAAA;AAEM,IAAA,IAAA6E,aAAA,GAAgB/E,SAAS,YAAM;MAAA,IAAAgF,qBAAA,EAAAC,oBAAA,CAAA;AACnC,MAAA,IAAI,CAAC7H,MAAM,CAAA0H,QAAA,EAAiB,OAAA,CAAA,CAAA;AACtB,MAAA,IAAAI,UAAA,GAAA,CAAAF,qBAAA,GAAazG,gBAAiB,CAAA2B,KAAA,MAAA8E,IAAAA,IAAAA,qBAAA,KAAjBA,KAAAA,CAAAA,GAAAA,KAAAA,CAAAA,GAAAA,qBAAA,CAAwBG,qBAAsB,EAAA,CAAA;AAC3D,MAAA,IAAAC,cAAA,GAAA,CAAAH,oBAAA,GAAiBtC,aAAc,CAAAzC,KAAA,MAAA+E,IAAAA,IAAAA,oBAAA,KAAdA,KAAAA,CAAAA,GAAAA,KAAAA,CAAAA,GAAAA,oBAAA,CAAqBE,qBAAsB,EAAA,CAAA;MAClE,OAAA,CAAQ,CAAAD,UAAY,KAAA,IAAA,IAAZA,UAAY,KAAZA,KAAAA,CAAAA,GAAAA,KAAAA,CAAAA,GAAAA,UAAY,CAAAG,MAAA,KAAU,CAAM,KAAA,CAAAD,cAAA,aAAAA,cAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAAA,cAAA,CAAgBC,MAAU,KAAA,CAAA,CAAA,CAAA;AAChE,KAAC,CAAA,CAAA;AAGK,IAAA,IAAAC,gBAAA,GACJC,eAAA,CAAgBnI,QAAOe,QAAQ,CAAA;MADzBqH,8BAAAA;MAAYC,cAAgB,GAAAH,gBAAA,CAAhBG,cAAgB;MAAAC,4BAAA,GAAAJ,gBAAA,CAAAI,4BAAA;MAA8BC,mDAAAA;AAG5D,IAAA,IAAAC,qBAAA,GAOFC,qBAAsBzI,CAAAA,MAAAA,EAAOe,QAAQ,CAAA;MANvC2H,QAAA,GAAAF,qBAAA,CAAAE,QAAA;MACAC,oBAAA,GAAAH,qBAAA,CAAAG,oBAAA;MACAC,aAAA,GAAAJ,qBAAA,CAAAI,aAAA;MACAC,2BAAA,GAAAL,qBAAA,CAAAK,2BAAA;MACAC,8BAAA,GAAAN,qBAAA,CAAAM,8BAAA;MACAC,gBAAA,GAAAP,qBAAA,CAAAO,gBAAA,CAAA;IAGFC,KAAA,CAAM/H,aAAa,YAAM;AACvB2D,MAAAA,sBAAA,CAAuB3D,YAAY6B,KAAK,CAAA,CAAA;AAC1C,KAAC,CAAA,CAAA;AAEDkG,IAAAA,KAAA,CACE,YAAA;AAAA,MAAA,OAAM,CAAChJ,MAAM,CAAAiJ,IAAA,EAAMjD,UAAU,CAAA,CAAA;AAAA,KAAA,EAC7B,YAAM;AACJxB,MAAAA,OAAA,CAAQ0B,cAAe,CAAApD,KAAA,GAAQkD,UAAW,CAAAlD,KAAA,GAAQ9C,OAAMiJ,IAAI,CAAA,CAAA;AAC9D,KACF,CAAA,CAAA;IAEAD,KAAA,CACEvG,iBAAA,EACA,YAAM;AAAA,MAAA,IAAAyG,qBAAA,CAAA;AACJlJ,MAAAA,CAAAA,qBAAAA,GAAAA,MAAM,CAAAI,mBAAA,MAAA,IAAA,IAAA8I,qBAAA,KAANlJ,KAAAA,CAAAA,IAAAA,qBAAAA,CAAAA,IAAAA,CAAAA,MAAM,EAAsByC,iBAAkB,CAAAK,KAAA,CAAMC,WAAW,CAAA,CAAA;MAC/C0D,eAAA,CAAAhE,iBAAA,CAAkBK,KAAM,CAAAC,WAAA,EAAa,IAAI,CAAA,CAAA;AAC3D,KAAA,EACA;AAAEoG,MAAAA,WAAW,IAAA;AAAK,KACpB,CAAA,CAAA;AAEA,IAAA,IAAMC,gBAAgB,SAAhBA,gBAAsB;AAC1BC,MAAAA,QAAA,CAAS,YAAM;AACM1D,QAAAA,kBAAA,EAAA,CAAA;AACOE,QAAAA,yBAAA,EAAA,CAAA;AAC5B,OAAC,CAAA,CAAA;KACH,CAAA;AAEM,IAAA,IAAAyD,eAAA,GAAkBC,SAAS,YAAM;AACnBxE,MAAAA,iBAAA,CAAAD,cAAA,CAAe,WAAW,CAAC,CAAA,CAAA;AAC/C,KAAC,CAAA,CAAA;IAGK,IAAA0E,mBAAA,GAAsB5G,SAAS,YAAA;MAAA,OAAO;QAC1CqG,MAAMjJ,MAAM,CAAAiJ,IAAA;AAEZQ,QAAAA,oCAAazJ,EAAAA,EAAAA,OAAMyJ,MAAQ,CAAA,EAAA,EAAA,EAAA;UAAAC,SAAA,EAAW1J,OAAM0J,SAAAA;AAAU,SAAA,CAAA;OACtD,CAAA;AAAA,KAAA,CAAA,CAAA;AACI,IAAA,IAAAC,aAAA,GAAgBC,gBAAoB,CAAA3F,eAAA,EAAiBuF,mBAAmB,CAAA,CAAA;IAE9E,IAAIK,WAAc,GAAA,CAAA,CAAA,CAAA;AACZ,IAAA,IAAAC,oBAAA,GAAuB,SAAvBA,oBAAAA,CAAwBC,CAAkB,EAAA;MACxC,IAAAC,MAAA,GAAUD,CAAE,CAAAC,MAAA,IAAUD,CAAE,CAAAE,UAAA,CAAA;AAC9B,MAAA,IAAMC,MAAMF,MAAO,CAAAG,SAAA,CAAA;MAEnB,IAAIN,gBAAgBK,GAAK,EAAA;QACTP,aAAA,CAAAS,eAAA,CAAgBtH,KAAS,IAAA6G,aAAA,CAAcU,YAAa,EAAA,CAAA;AACpE,OAAO,MAAA;QACSR,WAAA,GAAA,CAAA,CAAA,CAAA;QACdhF,uBAAA,CAAwBmF,MAAM,CAAA,CAAA;AAChC,OAAA;AACcH,MAAAA,WAAA,GAAAK,GAAA,CAAA;MACdvF,eAAA,CAAgBoF,CAAC,CAAA,CAAA;AACb/J,MAAAA,IAAAA,MAAAA,CAAMwH,gBAAgB,MAAQ,EAAA;AAChB8B,QAAAA,eAAA,EAAA,CAAA;AAClB,OAAA;KACF,CAAA;AAGA,IAAA,IAAMgB,iBAAiB,SAAjBA,iBAAuB;AAAA,MAAA,IAAAC,qBAAA,CAAA;AAC3B,MAAA,IAAI,CAACtJ,WAAY,CAAA6B,KAAA,EAAO,OAAA;MACxB1B,eAAA,CAAgB0B,iCAAQ7B,WAAY,CAAA6B,KAAA,CAAM0H,cAAc,OAAO,CAAA,MAAA,IAAA,IAAAD,qBAAA,KAAvCA,KAAAA,CAAAA,GAAAA,KAAAA,CAAAA,GAAAA,qBAAA,CAA0CxC,uBAAwB,CAAAE,MAAA,CAAA;KAC5F,CAAA;AAGM,IAAA,IAAAwC,oBAAA,GAA2E,SAA3EA,oBAAAA,CAA4EC,MAAmB,EAAA;AACnG,MAAA,IAAI,CAACzG,eAAgB,CAAAnB,KAAA,EAAO,OAAA;AAC5B,MAAA,IAAM6H,KAAQ,GAAA1G,eAAA,CAAgBnB,KAAM,CAAA0H,aAAA,CAAA,mBAAA,CAAA3K,MAAA,CAAiC6K,MAAU,EAAA,KAAA,CAAA,CAAA,CAAA;MAC/E,IAAME,UAAa,GAAA3G,eAAA,CAAgBnB,KAAM,CAAA+H,gBAAA,CAAiB,8BAA8B,CAAA,CAAA;MACxF,IAAIC,UAAa,GAAA,CAAA,CAAA;AACjB,MAAA,KAAA,IAASC,IAAI,CAAG,EAAAC,GAAA,GAAMJ,WAAWK,MAAQ,EAAAF,CAAA,GAAIC,KAAKD,CAAK,EAAA,EAAA;QACvCD,UAAA,IAAAF,UAAA,CAAWG,CAAG,CAAA,CAAAhD,qBAAA,EAAwB,CAAAmD,KAAA,CAAA;AACtD,OAAA;AACM,MAAA,IAAAC,OAAA,GAAUR,MAAM5C,qBAAsB,EAAA,CAAA;MACtC,IAAAqD,WAAA,GAAcnH,eAAgB,CAAAnB,KAAA,CAAMiF,qBAAsB,EAAA,CAAA;MAChE,IAAMsD,QAAW,GAAAF,OAAA,CAAQlE,IAAO,GAAAmE,WAAA,CAAYnE,IAAO,GAAA6D,UAAA,CAAA;AACnD7G,MAAAA,eAAA,CAAgBnB,MAAMwI,QAAS,CAAA;AAAErE,QAAAA,MAAMoE,QAAU;AAAAE,QAAAA,QAAA,EAAU,QAAA;AAAS,OAAC,CAAA,CAAA;KACvE,CAAA;IAEAvC,KAAA,CAAM/E,iBAAiB,YAAM;AAC3B2B,MAAAA,kBAAA,CAAmB3B,gBAAgBnB,KAAK,CAAA,CAAA;AAEpC9C,MAAAA,IAAAA,MAAAA,CAAMwH,gBAAgB,MAAQ,EAAA;AAChB8B,QAAAA,eAAA,EAAA,CAAA;AAClB,OAAA;AACF,KAAC,CAAA,CAAA;AAKDN,IAAAA,KAAA,CACE,YAAA;AAAA,MAAA,OAAM,CAAC/H,WAAY,CAAA6B,KAAA,EAAO9C,OAAMwL,QAAUxL,EAAAA,MAAAA,CAAMyL,aAAezL,EAAAA,MAAAA,CAAMgD,OAAO,CAAA,CAAA;AAAA,KAAA,EAC5E,YAAM;AACE,MAAA,IAAA0I,KAAA,GAAQC,WAAW,YAAM;AACdrB,QAAAA,cAAA,EAAA,CAAA;QACfsB,YAAA,CAAaF,KAAK,CAAA,CAAA;SACjB,CAAC,CAAA,CAAA;AACN,KACF,CAAA,CAAA;AAEM1C,IAAAA,KAAA,CAAAjI,QAAA,EAAU,UAACA,SAAa,EAAA;MAC5BiE,sBAAA,CAAuBjE,SAAQ,CAAA,CAAA;AACjC,KAAC,CAAA,CAAA;AAED8K,IAAAA,SAAA,CAAU,YAAM;AACCvB,MAAAA,cAAA,EAAA,CAAA;AACf1E,MAAAA,kBAAA,CAAmB3B,gBAAgBnB,KAAK,CAAA,CAAA;AACxCkC,MAAAA,sBAAA,CAAuBjE,SAAS+B,KAAK,CAAA,CAAA;AACvC,KAAC,CAAA,CAAA;AAED,IAAA,IAAMgJ,eAAe,SAAfA,eAAqB;AACzB9L,MAAAA,MAAAA,CAAMsH,iBAAiBgB,4BAA6B,EAAA,CAAA;AACpDK,MAAAA,oBAAA,CAAqB7F,SAAS+F,2BAA4B,EAAA,CAAA;KAC5D,CAAA;AAEA,IAAA,IAAMkD,cAAc,SAAdA,cAAoB;AACxB/L,MAAAA,MAAAA,CAAMsH,iBAAiBiB,+BAAgC,EAAA,CAAA;AACvDI,MAAAA,oBAAA,CAAqB7F,SAASgG,8BAA+B,EAAA,CAAA;KAC/D,CAAA;AAEM,IAAA,IAAAkD,eAAA,GAAgD,SAAhDA,eAAAA,CAAiDC,GAAQ,EAAA;AAAA,MAAA,IAAAC,kBAAA,CAAA;AAC7DlM,MAAAA,CAAAA,kBAAAA,GAAAA,MAAAA,CAAMmM,+CAANnM,KAAAA,CAAAA,IAAAA,kBAAAA,CAAAA,IAAAA,CAAAA,MAAAA,EAAmBiM,GAAG,CAAA,CAAA;AACtBjM,MAAAA,MAAAA,CAAMsH,aAAiB,IAAAe,cAAA,CAAe4D,GAAG,CAAA,CAAA;AACzCtD,MAAAA,oBAAA,CAAqB7F,SAAS8F,aAAc,EAAA,CAAA;KAC9C,CAAA;AAEAI,IAAAA,KAAA,CACE,CAAC1F,WAAW,CAAA,EACZ,UAAA8I,KAAA,EAAmB;AAAA,MAAA,IAAAC,KAAA,GAAAC,cAAA,CAAAF,KAAA,EAAA,CAAA,CAAA;AAAjB9I,QAAAA,YAAW,GAAA+I,KAAA,CAAA,CAAA,CAAA,CAAA;AACH5L,MAAAA,OAAA,CAAA8L,IAAA,CAAK,uBAAuBjJ,YAAW,CAAA,CAAA;AACjD,KAAA,EACA;AAAE6F,MAAAA,WAAW,IAAA;AAAK,KACpB,CAAA,CAAA;IAEM,IAAAqD,SAAA,GAAY5J,SAAS,YAAA;MAAA,OAAOsD,cAAA,CAAepD,QAAQkD,UAAW,CAAAlD,KAAA,GAAQ9C,OAAMiJ,IAAK,CAAA;KAAA,CAAA,CAAA;AAEjF,IAAA,IAAAwD,eAAA,GAAkB,SAAlBA,eAAAA,CAAmBC,MAA2C,EAAA;AAC9D,MAAA,IAAEC,QAAUD,MAAA,CAAVC;AACF,MAAA,IAAA,CAACA,KAAS,IAAAA,KAAA,KAAU,CAAG,EAAA;AAAA,QAAA,IAAAC,gBAAA,CAAA;AACrB,QAAA,IAAA,CAACF,OAAOG,GAAK,EAAA;AACXC,UAAAA,GAAA,CAAAC,KAAA,CAAM,SAAS,sDAAsD,CAAA,CAAA;AACzE,UAAA,OAAA;AACF,SAAA;AACQJ,QAAAA,KAAA,GAAAC,CAAAA,gBAAA,GAAAJ,SAAA,CAAU1J,KAAO,MAAA,IAAA,IAAA8J,gBAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAjBA,gBAAA,CAAiBI,SAAA,CAAU,UAACC,IAAA,EAAA;UAAA,OAASC,GAAI,CAAAD,IAAA,EAAMjN,MAAM,CAAAmN,MAAM,CAAM,KAAAT,MAAA,CAAOG,GAAG,CAAA;SAAA,CAAA,CAAA;QACnF,IAAIF,QAAQ,CAAG,EAAA;UACbG,GAAA,CAAIC,KAAM,CAAA,OAAA,EAAA,EAAA,CAAAlN,MAAA,CAAY6M,MAAA,CAAOG,GAAkE,EAAA,2DAAA,CAAA,CAAA,CAAA;AACjG,SAAA;AACF,OAAA;AACI,MAAA,IAAAlD,aAAA,CAAcS,gBAAgBtH,KAAO,EAAA;AACvC6G,QAAAA,aAAA,CAAc8C,gDAAqBC;UAAQC,KAAO,EAAAA,KAAA,GAAQ,CAAA;UAAG,CAAA,CAAA;AAC/D,OAAO,MAAA;QAAA,IAAAS,mBAAA,EAAAC,YAAA,CAAA;AAGC,QAAA,IAAAC,EAAA,GAAA,CAAAF,mBAAA,GAAKlM,aAAa4B,KAAO,MAAA,IAAA,IAAAsK,mBAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAApBA,mBAAA,CAAoBG,GAAA,CAAA;AACzB,QAAA,IAAAC,GAAA,GAAMF,OAAAA,IAAAA,IAAAA,iCAAAA,GAAIG,QAAW,MAAAJ,IAAAA,IAAAA,YAAA,uBAAfA,YAAA,CAAeV,KAAA,CAAA,CAAA;AAC3B,QAAA,IAAIa,GAAK,EAAA;UAAA,IAAAE,WAAA,EAAAC,gBAAA,CAAA;AACD,UAAA,IAAEC,YAAcJ,GAAA,CAAdI;AACF,UAAA,IAAAzD,SAAA,GAAYlG,gBAAgBnB,KAAM,CAAAqH,SAAA,CAAA;AACxC,UAAA,IAAM0D,YAAe,GAAAD,SAAA,GAAYzD,SAAa,KAAAuD,WAAA,GAAAhB,MAAA,CAAOxC,GAAO,MAAAwD,IAAAA,IAAAA,WAAA,cAAAA,WAAA,GAAA,CAAA,CAAA,CAAA;AAE5CzJ,UAAAA,eAAA,CAAAnB,KAAA,CAAMgL,SAAS;AAAE5D,YAAAA,GAAA,EAAK2D;YAActC,QAAU,EAAA,CAAAoC,gBAAA,GAAAjB,MAAA,CAAOnB,QAAY,MAAAoC,IAAAA,IAAAA,gBAAA,KAAAA,KAAAA,CAAAA,GAAAA,gBAAA,GAAA,MAAA;AAAO,WAAC,CAAA,CAAA;AAC3F,SAAA;AACF,OAAA;KACF,CAAA;IAEO,OAAA;AACLjL,MAAAA,MAAA,EAAAA,MAAA;AACAnB,MAAAA,WAAA,EAAAA,WAAA;AACA0E,MAAAA,eAAA,EAAAA,eAAA;AACA5D,MAAAA,YAAA,EAAAA,YAAA;AACAjB,MAAAA,eAAA,EAAAA,eAAA;AACA0C,MAAAA,sBAAA,EAAAA,sBAAA;AACAb,MAAAA,SAAA,EAAAA,SAAA;AACAc,MAAAA,UAAA,EAAAA,UAAA;AACAC,MAAAA,aAAA,EAAAA,aAAA;AACAjD,MAAAA,QAAA,EAAAA,QAAA;AACAE,MAAAA,WAAA,EAAAA,WAAA;AACAc,MAAAA,cAAA,EAAAA,cAAA;AACAL,MAAAA,cAAA,EAAAA,cAAA;AACAe,MAAAA,iBAAA,EAAAA,iBAAA;AACAiE,MAAAA,uBAAA,EAAAA,uBAAA;AACA1E,MAAAA,kBAAA,EAAAA,kBAAA;AACAC,MAAAA,kBAAA,EAAAA,kBAAA;AACA0F,MAAAA,aAAA,EAAAA,aAAA;AACAnG,MAAAA,oBAAA,EAAAA,oBAAA;AACAC,MAAAA,kBAAA,EAAAA,kBAAA;AACA8F,MAAAA,eAAA,EAAAA,eAAA;AACAtD,MAAAA,eAAA,EAAAA,eAAA;AACAC,MAAAA,aAAA,EAAAA,aAAA;AACAC,MAAAA,eAAA,EAAAA,eAAA;AACAC,MAAAA,aAAA,EAAAA,aAAA;AACAG,MAAAA,sBAAA,EAAAA,sBAAA;AACAD,MAAAA,gBAAA,EAAAA,gBAAA;AACAD,MAAAA,WAAA,EAAAA,WAAA;AACA6B,MAAAA,cAAA,EAAAA,cAAA;AACAF,MAAAA,UAAA,EAAAA,UAAA;AACAZ,MAAAA,cAAA,EAAAA,cAAA;AACAC,MAAAA,cAAA,EAAAA,cAAA;AACAlE,MAAAA,gBAAA,EAAAA,gBAAA;AACAoE,MAAAA,aAAA,EAAAA,aAAA;AACAC,MAAAA,eAAA,EAAAA,eAAA;AACAC,MAAAA,eAAA,EAAAA,eAAA;AACA5B,MAAAA,cAAA,EAAAA,cAAA;AACArB,MAAAA,gBAAA,EAAAA,gBAAA;AACAiF,MAAAA,gBAAA,EAAAA,gBAAA;AACAlB,MAAAA,aAAA,EAAAA,aAAA;AACAC,MAAAA,eAAA,EAAAA,eAAA;AACAJ,MAAAA,kBAAA,EAAAA,kBAAA;AACAd,MAAAA,sBAAA,EAAAA,sBAAA;AACApE,MAAAA,YAAA,EAAAA,YAAA;AACAyI,MAAAA,aAAA,EAAAA,aAAA;AACAjE,MAAAA,mBAAA,EAAAA,mBAAA;AACA0C,MAAAA,UAAA,EAAAA,UAAA;AACAM,MAAAA,QAAA,EAAAA,QAAA;AACApF,MAAAA,WAAA,EAAAA,WAAA;AACAmJ,MAAAA,eAAA,EAAAA,eAAA;AACAtG,MAAAA,gBAAA,EAAAA,gBAAA;AACAtF,MAAAA,WAAA,EAAAA,WAAA;AACAuI,MAAAA,aAAA,EAAAA,aAAA;AACAzD,MAAAA,kBAAA,EAAAA,kBAAA;AACAE,MAAAA,yBAAA,EAAAA,yBAAA;AACAiE,MAAAA,oBAAA,EAAAA,oBAAA;AACArF,MAAAA,YAAA,EAAAA,YAAA;AACAgG,MAAAA,oBAAA,EAAAA,oBAAA;AACAqB,MAAAA,YAAA,EAAAA,YAAA;AACAC,MAAAA,WAAA,EAAAA,WAAA;AACAC,MAAAA,eAAA,EAAAA,eAAA;AACAzI,MAAAA,kBAAA,EAAAA,kBAAA;AACAC,MAAAA,wBAAA,EAAAA,wBAAA;AACAC,MAAAA,iBAAA,EAAAA,iBAAA;AACAC,MAAAA,oBAAA,EAAAA,oBAAA;AACAqF,MAAAA,gBAAA,EAAAA,gBAAAA;KACF,CAAA;GACF;EAEAgF,MAAS,EAAA,SAATA,MAASA,GAAA;AAAA,IAAA,IAAAC,qBAAA;MAAAC,qBAAA;MAAAC,KAAA,GAAA,IAAA;MAAAC,oBAAA;MAAAC,cAAA;MAAAC,qBAAA;MAAAC,sBAAA;MAAAC,qBAAA;MAAAC,qBAAA,CAAA;AACH,IAAA,IAAA,CAAC,KAAKlL,WAAa,EAAA;AACd,MAAA,OAAAmL,WAAA,CAAA,KAAA,EAAA;AAAA,QAAA,KAAA,EAAA,UAAA;AAAA,OAAA,EAAA,IAAA,CAAA,CAAA;AACT,KAAA;AAEM,IAAA,IAAElK,sBAAwB,GAAgB,IAAA,CAAxCA,sBAAwB;MAAAiD,WAAA,GAAgB,IAAA,CAAhBA,WAAA,CAAA;AAChC,IAAA,IAAMyB,IAAO,GAAA,IAAA,CAAK/C,cAAiB,GAAA,IAAA,CAAKF,aAAa,IAAK,CAAAiD,IAAA,CAAA;AAC1D,IAAA,IAAMjG,OAAU,GAAA,CAAA,CAAAgL,qBAAA,GAAA,IAAA,CAAKvL,iBAAmB,MAAA,IAAA,IAAAuL,qBAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAxBA,qBAAA,CAAwBjL,WAAA,KAAe,IAAK,CAAAC,OAAA,CAAA;AAEtD,IAAA,IAAA0L,eAAA,GAAA,CAAAT,qBAAA,GAAkB,IAAK,CAAAU,sBAAA,MAAAV,IAAAA,IAAAA,qBAAA,KAAAA,KAAAA,CAAAA,GAAAA,qBAAA,GAA0B,IAAK,CAAA5G,SAAA,CAAA;AACxD,IAAA,IAAAqH,eAAA,IAAmBlH,gBAAgB,MAAQ,EAAA;AACzCsF,MAAAA,GAAA,CAAA8B,IAAA,CACF,OAAA,EACA,yGACF,CAAA,CAAA;AACF,KAAA;AAEA,IAAA,IAAMC,eAAkB,GAAArH,WAAA,KAAgB,OAAW,IAAA,IAAA,CAAKrD,kBAAkB,OAAU,GAAA,KAAA,CAAA,CAAA;AAE9E,IAAA,IAAA2K,cAAA,GAAiB,SAAjBA,cAAAA,GAAA;AAAA,MAAA,IAAkBC,aAAgB,GAAAC,SAAA,CAAA/D,MAAA,GAAA,CAAA,IAAA+D,SAAA,CAAA,CAAA,CAAA,KAAAC,SAAA,GAAAD,SAAA,CAAA,CAAA,CAAA,GAAA,IAAA,CAAA;MAAA,OAAAP,WAAA,oBAEnCzL,OAAA,CAAQrD,GAAI,CAAA,UAACuP,GAAQ,EAAA;AACpB,QAAA,IAAMC,KAAgB,GAAA;UACpBjE,KACE,EAAAkE,aAAA,CAAA,CACGL,iBAAiBL,eAAkB,GAAAR,KAAA,CAAK7J,YAAY6K,GAAI,CAAAxE,MAAA,CAAA,GAAU,WAAcwE,GAAI,CAAAhE,KACvF,CAAK,IAAA2D,eAAAA;SACT,CAAA;QACA,IAAIK,IAAIG,QAAU,EAAA;UACVF,KAAA,CAAAE,QAAA,GAAWD,aAAc,CAAAF,GAAA,CAAIG,QAAQ,CAAA,CAAA;AAC7C,SAAA;AAEI,QAAA,IAAA,CAACF,MAAMjE,KAAS,IAAA,CAACgE,IAAIG,QAAY,IAAAnB,KAAA,CAAK1G,gBAAgB,OAAS,EAAA;UACjE2H,KAAA,CAAME,QAAW,GAAA,MAAA,CAAA;AACnB,SAAA;AACA,QAAA,OAAAZ,WAAA,CAAA,KAAA,EAAA;UAAA,KAAiBS,EAAAA,GAAI,CAAAxE,MAAA;UAAA,OAAeyE,EAAAA,KAAAA;AAAO,SAAA,EAAA,IAAA,CAAA,CAAA;AAC7C,OAAC;KAhBF,CAAA;AAoBH,IAAA,IAAMG,sBAAsB,SAAtBA,sBAA4B;AAChC,MAAA,IAAIpB,MAAKqB,UAAe,KAAA,KAAA,EAAc,OAAA,IAAA,CAAA;MAEpC,OAAA,CAAC,EAAErB,KAAA,CAAKvE,aAAc,CAAAS,eAAA,CAAgBtH,KAAS,IAAAoL,KAAA,CAAKsB,gBACnD,CAAA,KAAAtB,KAAA,CAAKsB,gBACJ,GAAAf,WAAA,CAAAgB,KAAA,EAAAC,UAAA,CAAA;QAAA,WACa,EAAA,CAAA;AACP,OAAA,EAAAC,aAAA,CAAczB,KAAK,CAAAsB,gBAAgB,CACvC,EAAA;QAAA,eAAetB,EAAAA,KAAK,CAAA9E,aAAA;AAAA,QAAA,KAAA,EAAA,mBAAA;AAAA,OAAA,CAAA,EAAAnK,OAAA,CAGnB2Q,mBACH,CAAA,GADGA,mBACH,GAAA;AAAA,QAAA,SAAA,EAAA,SAAAC,QAAA,GAAA;AAAA,UAAA,OAAA,CADGD,mBACH,CAAA,CAAA;AAAA,SAAA;AAAA,OAAA,CAAA,GAEA1B,KAAA,CAAKhK,aAAiB,IAAA0L,mBAAA,CAAA,CAAA;KAG5B,CAAA;AAEA,IAAA,IAAME,gCAAmC,GAAA,SAAnCA,gCAAmCA,GAAA;AAAA,MAAA,OAAArB,WAAA,CAAAgB,KAAA,EAAAC,UAAA,