cats-charts 0.0.76 → 0.0.78
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +73 -0
- package/fesm2022/cats-charts.mjs +278 -28
- package/fesm2022/cats-charts.mjs.map +1 -1
- package/index.d.ts +113 -2
- package/package.json +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cats-charts.mjs","sources":["../../../projects/charts-lib/src/lib/components/right-click-card/right-click-card.ts","../../../projects/charts-lib/src/lib/components/right-click-card/right-click-card.html","../../../projects/charts-lib/src/lib/components/chart-legend/chart-legend.adapter.ts","../../../projects/charts-lib/src/lib/components/chart-legend/chart-legend.ts","../../../projects/charts-lib/src/lib/components/chart-legend/chart-legend.html","../../../projects/charts-lib/src/lib/service/charts.ts","../../../projects/charts-lib/src/lib/components/line-chart/line-chart.ts","../../../projects/charts-lib/src/lib/components/line-chart/line-chart.html","../../../projects/charts-lib/src/lib/components/bar-chart/bar-chart.ts","../../../projects/charts-lib/src/lib/components/bar-chart/bar-chart.html","../../../projects/charts-lib/src/lib/components/pie-chart/pie-chart.ts","../../../projects/charts-lib/src/lib/components/pie-chart/pie-chart.html","../../../projects/charts-lib/src/lib/components/doughnut-chart/doughnut-chart.ts","../../../projects/charts-lib/src/lib/components/doughnut-chart/doughnut-chart.html","../../../projects/charts-lib/src/lib/components/stacked-area-chart/stacked-area-chart.ts","../../../projects/charts-lib/src/lib/components/stacked-area-chart/stacked-area-chart.html","../../../projects/charts-lib/src/lib/components/custom-chart/custom-chart.ts","../../../projects/charts-lib/src/lib/components/custom-chart/custom-chart.html","../../../projects/charts-lib/src/lib/components/sankey-chart/sankey-chart.ts","../../../projects/charts-lib/src/lib/components/sankey-chart/sankey-chart.html","../../../projects/charts-lib/src/lib/components/heatmap/heatmap.ts","../../../projects/charts-lib/src/lib/components/heatmap/heatmap.html","../../../projects/charts-lib/src/lib/components/scatter-chart/scatter-chart.ts","../../../projects/charts-lib/src/lib/components/scatter-chart/scatter-chart.html","../../../projects/charts-lib/src/cats-charts.ts"],"sourcesContent":["import { Component, EventEmitter, Input, Output } from '@angular/core';\n\n@Component({\n selector: 'lib-right-click-card',\n imports: [],\n templateUrl: './right-click-card.html',\n styleUrl: './right-click-card.scss',\n})\nexport class RightClickCard {\n @Input() cardPosition: any;\n @Input() cardOptions: any;\n @Output() contextMenuClick = new EventEmitter<any>();\n \n onMenuClick(item: any) {\n this.contextMenuClick.emit(item);\n\n // this.closeMenu();\n }\n}\n","<div\n class=\"context-card\"\n [style.left.px]=\"cardPosition.x\"\n [style.top.px]=\"cardPosition.y\"\n (click)=\"$event.stopPropagation()\"\n>\n @for (item of cardOptions; track item.value) {\n <div class=\"context-item\" (click)=\"onMenuClick(item)\">\n @if (item.icon) {\n <img [src]=\"item.icon\" alt=\"icon\" />\n }\n\n <span>{{ item.label }}</span>\n </div>\n }\n</div>\n","import { Injectable } from '@angular/core';\nimport { ECharts } from 'echarts/core';\nimport {\n ChartLegendConfig,\n ChartLegendIcon,\n ChartLegendItem,\n ChartLegendSelectionMode,\n} from './chart-legend.types';\n\ntype DispatchPayload = Record<string, unknown> & { type: string };\n\n@Injectable({ providedIn: 'root' })\nexport class ChartLegendAdapter {\n buildItems<\n TSeries extends {\n name?: string;\n type?: string;\n symbol?: string;\n icon?: ChartLegendIcon;\n legendIcon?: ChartLegendIcon;\n legendType?: 'default' | 'marker' | 'line' | 'lineMarker';\n itemStyle?: { color?: string };\n lineStyle?: { color?: string };\n area?: boolean;\n color?: string;\n },\n >(\n series: readonly TSeries[],\n colors: readonly string[],\n selected: Record<string, boolean>,\n config: ChartLegendConfig<TSeries>,\n ): ChartLegendItem[] {\n return series\n .map((seriesItem, index) => {\n const name = String(seriesItem.name ?? `Series ${index + 1}`);\n const color =\n seriesItem?.color ??\n seriesItem.itemStyle?.color ??\n seriesItem.lineStyle?.color ??\n colors[index % Math.max(colors.length, 1)] ??\n '#64748b';\n const icon = this.resolveIcon(seriesItem, index, name, config);\n const disabled = !!config.disabled || !!config.disabledNames?.includes(name);\n const item: ChartLegendItem = {\n id: `${index}:${name}`,\n name,\n label: name,\n color,\n icon,\n disabled,\n selected: selected[name] !== false,\n seriesIndex: index,\n raw: seriesItem,\n legendType: seriesItem?.legendType,\n };\n\n item.label = config.formatter ? config.formatter(name, item) : name;\n item.group = config.groupBy ? config.groupBy(item) : undefined;\n\n return item;\n })\n .filter((item) => !!item.name);\n }\n\n readSelected(chart: ECharts | null | undefined): Record<string, boolean> {\n const option = chart?.getOption?.() as {\n legend?: Array<{ selected?: Record<string, boolean> }>;\n };\n return { ...(option?.legend?.[0]?.selected ?? {}) };\n }\n\n applySelection(\n chart: ECharts,\n item: ChartLegendItem,\n mode: ChartLegendSelectionMode,\n items: readonly ChartLegendItem[],\n ): void {\n if (item.disabled) return;\n\n if (mode === 'exclusive') {\n for (const other of items) {\n if (other.name !== item.name) {\n chart.dispatchAction({ type: 'legendUnSelect', name: other.name } as DispatchPayload);\n }\n }\n chart.dispatchAction({ type: 'legendSelect', name: item.name } as DispatchPayload);\n return;\n }\n\n chart.dispatchAction({ type: 'legendToggleSelect', name: item.name } as DispatchPayload);\n }\n\n highlight(chart: ECharts, item: ChartLegendItem): void {\n if (item.disabled || item.seriesIndex === undefined) return;\n chart.dispatchAction({ type: 'highlight', seriesIndex: item.seriesIndex } as DispatchPayload);\n }\n\n downplay(chart: ECharts, item: ChartLegendItem): void {\n if (item.seriesIndex === undefined) return;\n chart.dispatchAction({ type: 'downplay', seriesIndex: item.seriesIndex } as DispatchPayload);\n }\n\n private resolveIcon<\n TSeries extends {\n type?: string;\n symbol?: string;\n icon?: ChartLegendIcon;\n legendIcon?: ChartLegendIcon;\n area?: boolean;\n },\n >(\n seriesItem: TSeries,\n index: number,\n name: string,\n config: ChartLegendConfig<TSeries>,\n ): ChartLegendIcon {\n if (typeof config.icon === 'function') return config.icon(seriesItem, index);\n if (config.icons?.[name]) return config.icons[name];\n if (config.icon) return config.icon;\n if (seriesItem.legendIcon) return seriesItem.legendIcon;\n if (seriesItem.icon) return seriesItem.icon;\n if (seriesItem.symbol && seriesItem.symbol !== 'none') return seriesItem.symbol;\n if (seriesItem.area) return 'area';\n\n switch (seriesItem.type) {\n case 'bar':\n return 'rect';\n case 'pie':\n case 'scatter':\n case 'effectScatter':\n return 'circle';\n default:\n return 'line';\n }\n }\n}\n","import {\n AfterViewInit,\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n ElementRef,\n EventEmitter,\n Inject,\n Input,\n OnChanges,\n OnDestroy,\n Output,\n PLATFORM_ID,\n SimpleChanges,\n TemplateRef,\n ViewChild,\n} from '@angular/core';\nimport { CommonModule, isPlatformBrowser } from '@angular/common';\nimport { ECharts } from 'echarts/core';\nimport { ChartLegendAdapter } from './chart-legend.adapter';\nimport {\n ChartLegendConfig,\n ChartLegendIcon,\n ChartLegendEvent,\n ChartLegendItem,\n ChartLegendSelectionMode,\n ChartLegendState,\n ChartLegendTemplateContext,\n} from './chart-legend.types';\n\ntype LegendSelectChanged = { selected?: unknown; name?: string };\ntype IconRenderType = 'none' | 'image' | 'path' | 'shape';\nconst SUPPORTED_ICON_SHAPES = new Set([\n 'line',\n 'emptyLine',\n 'area',\n 'circle',\n 'emptyCircle',\n 'rect',\n 'emptyRect',\n 'roundRect',\n 'emptyRoundRect',\n 'square',\n 'emptySquare',\n 'triangle',\n 'emptyTriangle',\n 'diamond',\n 'emptyDiamond',\n 'pin',\n 'emptyPin',\n 'arrow',\n 'emptyArrow',\n 'x',\n 'plus',\n 'thickLine',\n]);\n\nfunction getLegendSelected(event: unknown): Record<string, boolean> | undefined {\n if (typeof event !== 'object' || event === null || !('selected' in event)) return undefined;\n\n const selected = (event as LegendSelectChanged).selected;\n return typeof selected === 'object' && selected !== null\n ? (selected as Record<string, boolean>)\n : undefined;\n}\n\n@Component({\n selector: 'lib-chart-legend',\n standalone: true,\n imports: [CommonModule],\n templateUrl: './chart-legend.html',\n styleUrl: './chart-legend.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class ChartLegendComponent implements AfterViewInit, OnChanges, OnDestroy {\n @Input() chart: ECharts | null = null;\n @Input() series: readonly any[] = [];\n @Input() colors: readonly string[] = [];\n @Input() config: ChartLegendConfig<any> = {};\n @Input() itemTemplate?: TemplateRef<ChartLegendTemplateContext>;\n\n @Output() legendEvent = new EventEmitter<ChartLegendEvent>();\n @ViewChild('itemsScroller') private itemsScroller?: ElementRef<HTMLElement>;\n\n state: ChartLegendState = {\n items: [],\n selected: {},\n hoveredName: null,\n pageIndex: 0,\n };\n canScrollLegend = false;\n canScrollStart = false;\n canScrollEnd = false;\n\n private readonly isBrowser: boolean;\n private readonly onLegendSelectChanged = (event: unknown) => {\n this.syncFromChart(getLegendSelected(event));\n };\n private resizeObserver?: ResizeObserver;\n private scrollStateFrame = 0;\n\n constructor(\n private readonly adapter: ChartLegendAdapter,\n private readonly cdr: ChangeDetectorRef,\n @Inject(PLATFORM_ID) platformId: object,\n ) {\n this.isBrowser = isPlatformBrowser(platformId);\n }\n\n ngOnChanges(changes: SimpleChanges): void {\n if (changes['chart']) this.rebindChart(changes['chart'].previousValue as ECharts | null);\n this.rebuildItems();\n this.scheduleScrollStateUpdate();\n }\n\n ngAfterViewInit(): void {\n if (!this.isBrowser) return;\n if (typeof ResizeObserver !== 'undefined' && this.itemsScroller?.nativeElement) {\n this.resizeObserver = new ResizeObserver(() => this.scheduleScrollStateUpdate());\n this.resizeObserver.observe(this.itemsScroller.nativeElement);\n }\n this.scheduleScrollStateUpdate();\n }\n\n ngOnDestroy(): void {\n this.detachChart(this.chart);\n this.resizeObserver?.disconnect();\n if (this.scrollStateFrame) cancelAnimationFrame(this.scrollStateFrame);\n }\n\n get visibleItems(): ChartLegendItem[] {\n const pageSize = this.config.pageSize;\n if (!this.config.showPagination || !pageSize || pageSize <= 0) return this.state.items;\n\n const start = this.state.pageIndex * pageSize;\n return this.state.items.slice(start, start + pageSize);\n }\n\n get groupedItems(): Array<{ group: string | null; items: ChartLegendItem[] }> {\n const groups = new Map<string | null, ChartLegendItem[]>();\n for (const item of this.visibleItems) {\n const key = item.group ?? null;\n groups.set(key, [...(groups.get(key) ?? []), item]);\n }\n return [...groups.entries()].map(([group, items]) => ({ group, items }));\n }\n\n get pageCount(): number {\n const pageSize = this.config.pageSize;\n if (!this.config.showPagination || !pageSize || pageSize <= 0) return 1;\n return Math.max(Math.ceil(this.state.items.length / pageSize), 1);\n }\n\n get isVerticalLegend(): boolean {\n return (\n this.config.layout === 'vertical' ||\n this.config.position === 'left' ||\n this.config.position === 'right'\n );\n }\n\n get isScrollableLegend(): boolean {\n return this.config.scrollable === true;\n }\n\n get isLimitedWrapLegend(): boolean {\n return this.config.scrollable === false && !this.hasConfiguredMaxWidth;\n }\n\n get usesInternalLegendScroll(): boolean {\n return this.isScrollableLegend || this.isLimitedWrapLegend;\n }\n\n get scrollsVertically(): boolean {\n return this.isLimitedWrapLegend ? !this.isVerticalLegend : this.isVerticalLegend;\n }\n\n get isLegendAlignedCenter(): boolean {\n return (\n this.config.align === 'center' || (this.isVerticalLegend && this.config.align === 'middle')\n );\n }\n\n get isLegendAlignedEnd(): boolean {\n return (\n this.config.align === 'end' ||\n (!this.isVerticalLegend && this.config.align === 'right') ||\n (this.isVerticalLegend && this.config.align === 'bottom')\n );\n }\n\n get scrollStartAriaLabel(): string {\n return this.scrollsVertically ? 'Scroll legend up' : 'Scroll legend left';\n }\n\n get scrollEndAriaLabel(): string {\n return this.scrollsVertically ? 'Scroll legend down' : 'Scroll legend right';\n }\n\n trackByItem(_: number, item: ChartLegendItem): string {\n return item.id;\n }\n\n trackByGroup(_: number, group: { group: string | null }): string {\n return group.group ?? '__default__';\n }\n\n templateFor(item: ChartLegendItem): TemplateRef<ChartLegendTemplateContext> | null {\n return this.itemTemplate ?? this.config.itemTemplate ?? null;\n }\n\n templateContext(item: ChartLegendItem): ChartLegendTemplateContext {\n return {\n $implicit: item,\n item,\n selected: item.selected,\n disabled: item.disabled,\n };\n }\n\n private legendType(item: ChartLegendItem): 'default' | 'marker' | 'line' | 'lineMarker' {\n return item.legendType ?? this.config.legendType ?? 'default';\n }\n\n iconForRender(item: ChartLegendItem): string {\n return this.legendType(item) === 'line' ? 'line' : item.icon;\n }\n\n iconRenderType(item: ChartLegendItem): IconRenderType {\n const icon = this.iconForRender(item).trim();\n if (!icon || icon === 'none') return 'none';\n if (icon.startsWith('image://')) return 'image';\n if (icon.startsWith('path://') || /^[Mm]\\s*-?\\d/.test(icon)) return 'path';\n return 'shape';\n }\n\n iconImageSrc(item: ChartLegendItem): string {\n return item.icon.replace(/^image:\\/\\//, '');\n }\n\n iconPathData(item: ChartLegendItem): string {\n return item.icon.replace(/^path:\\/\\//, '');\n }\n\n iconShapeClass(icon: ChartLegendIcon): string {\n const shape = SUPPORTED_ICON_SHAPES.has(icon) ? icon : 'rect';\n return `chart-legend__icon--${shape}`;\n }\n\n isLineMarker(item: ChartLegendItem): boolean {\n return this.legendType(item) === 'lineMarker';\n }\n\n isLineOnly(item: ChartLegendItem): boolean {\n return this.legendType(item) === 'line';\n }\n\n toggle(item: ChartLegendItem, event?: Event): void {\n event?.preventDefault();\n if (!this.chart || item.disabled) return;\n\n if (this.config?.preventLegendClickDefault) {\n this?.emit?.('toggle', item);\n return;\n }\n\n const mode = this.selectionMode();\n const wasSelected = item.selected;\n this.adapter.applySelection(this.chart, item, mode, this.state.items);\n this.syncFromChart();\n // this.emit(mode === 'exclusive' ? 'exclusive' : wasSelected ? 'unselect' : 'select', item);\n }\n\n hover(item: ChartLegendItem): void {\n if (!this.chart || item.disabled || this.config.hoverLink === false) return;\n this.state = { ...this.state, hoveredName: item.name };\n this.adapter.highlight(this.chart, item);\n // this.emit('highlight', item);\n this.cdr.markForCheck();\n }\n\n leave(item: ChartLegendItem): void {\n if (!this.chart || this.config.hoverLink === false) return;\n this.state = { ...this.state, hoveredName: null };\n this.adapter.downplay(this.chart, item);\n // this.emit('downplay', item);\n this.cdr.markForCheck();\n }\n\n page(step: number): void {\n const next = Math.min(Math.max(this.state.pageIndex + step, 0), this.pageCount - 1);\n if (next === this.state.pageIndex) return;\n this.state = { ...this.state, pageIndex: next };\n this.emit('page');\n this.scheduleScrollStateUpdate();\n }\n\n scrollLegend(direction: -1 | 1, event?: Event): void {\n event?.preventDefault();\n if (!this.usesInternalLegendScroll) return;\n const element = this.itemsScroller?.nativeElement;\n if (!element) return;\n\n const distance = this.scrollsVertically\n ? Math.max(element.clientHeight * 0.8, 120)\n : Math.max(element.clientWidth * 0.8, 120);\n\n element.scrollBy({\n left: this.scrollsVertically ? 0 : direction * distance,\n top: this.scrollsVertically ? direction * distance : 0,\n behavior: 'smooth',\n });\n this.scheduleScrollStateUpdate();\n }\n\n updateScrollState(): void {\n this.scheduleScrollStateUpdate();\n }\n\n itemTitle(item: ChartLegendItem): string | null {\n return this.config.tooltipFormatter ? this.config.tooltipFormatter(item) : item.label;\n }\n\n private rebuildItems(selectedFromChart?: Record<string, boolean>): void {\n const selected = selectedFromChart ?? this.adapter.readSelected(this.chart);\n const items = this.adapter.buildItems(this.series, this.colors, selected, this.config);\n const maxPage = Math.max(\n Math.ceil(items.length / (this.config.pageSize || items.length || 1)) - 1,\n 0,\n );\n this.state = {\n ...this.state,\n selected,\n items,\n pageIndex: Math.min(this.state.pageIndex, maxPage),\n };\n this.cdr.markForCheck();\n this.scheduleScrollStateUpdate();\n }\n\n private syncFromChart(selected?: Record<string, boolean>): void {\n this.rebuildItems(selected ?? this.adapter.readSelected(this.chart));\n this.emit('sync');\n }\n\n private rebindChart(previous: ECharts | null): void {\n this.detachChart(previous);\n if (!this.isBrowser || !this.chart) return;\n this.chart.on('legendselectchanged', this.onLegendSelectChanged);\n this.chart.on('legendselected', this.onLegendSelectChanged);\n this.chart.on('legendunselected', this.onLegendSelectChanged);\n }\n\n private detachChart(chart: ECharts | null | undefined): void {\n if (!chart) return;\n chart.off('legendselectchanged', this.onLegendSelectChanged);\n chart.off('legendselected', this.onLegendSelectChanged);\n chart.off('legendunselected', this.onLegendSelectChanged);\n }\n\n private selectionMode(): ChartLegendSelectionMode {\n return this.config.selectionMode ?? 'multiple';\n }\n\n private emit(type: ChartLegendEvent['type'], item?: ChartLegendItem): void {\n this.legendEvent.emit({ type, item, state: this.state });\n }\n\n private scheduleScrollStateUpdate(): void {\n if (!this.isBrowser || this.scrollStateFrame) return;\n if (!this.usesInternalLegendScroll) {\n this.setScrollState(false, false, false);\n return;\n }\n this.scrollStateFrame = requestAnimationFrame(() => {\n this.scrollStateFrame = 0;\n this.updateScrollStateNow();\n });\n }\n\n private updateScrollStateNow(): void {\n const element = this.itemsScroller?.nativeElement;\n if (!element) {\n this.setScrollState(false, false, false);\n return;\n }\n\n const hasOverflow = this.scrollsVertically\n ? element.scrollHeight > element.clientHeight + 1\n : element.scrollWidth > element.clientWidth + 1;\n const scrollPosition = this.scrollsVertically ? element.scrollTop : element.scrollLeft;\n const viewportSize = this.scrollsVertically ? element.clientHeight : element.clientWidth;\n const scrollSize = this.scrollsVertically ? element.scrollHeight : element.scrollWidth;\n\n this.setScrollState(\n hasOverflow,\n hasOverflow && scrollPosition > 1,\n hasOverflow && scrollPosition + viewportSize < scrollSize - 1,\n );\n }\n\n private setScrollState(\n canScrollLegend: boolean,\n canScrollStart: boolean,\n canScrollEnd: boolean,\n ): void {\n if (\n this.canScrollLegend === canScrollLegend &&\n this.canScrollStart === canScrollStart &&\n this.canScrollEnd === canScrollEnd\n ) {\n return;\n }\n this.canScrollLegend = canScrollLegend;\n this.canScrollStart = canScrollStart;\n this.canScrollEnd = canScrollEnd;\n this.cdr.markForCheck();\n }\n\n private get hasConfiguredMaxWidth(): boolean {\n return typeof this.config.maxWidth === 'string' && this.config.maxWidth.trim().length > 0;\n }\n}\n","@if (config.enabled !== false) {\n <nav\n class=\"chart-legend\"\n [class.chart-legend--vertical]=\"isVerticalLegend\"\n [class.chart-legend--scrollable]=\"isScrollableLegend\"\n [class.chart-legend--wrap]=\"!isScrollableLegend\"\n [class.chart-legend--limited-wrap]=\"isLimitedWrapLegend\"\n [ngClass]=\"config.className || null\"\n [style.max-height]=\"config.maxHeight || null\"\n [style.padding]=\"config.padding || '1rem'\"\n [attr.aria-label]=\"config.ariaLabel || 'Chart legend'\"\n >\n <div class=\"chart-legend__viewport\">\n @if (config.title) {\n <p\n class=\"chart-legend-title\"\n [class.chart-legend-title--uppercase]=\"config.legendTitleTransform === 'uppercase'\"\n [class.chart-legend-title--lowercase]=\"config.legendTitleTransform === 'lowercase'\"\n [class.chart-legend-title--capitalize]=\"config.legendTitleTransform === 'capitalize'\"\n [style.--legend-title-color]=\"config.legendTitleTextColor || null\"\n [style.--legend-title-font-size]=\"\n config.legendTitleFontSize ? config.legendTitleFontSize + 'px' : null\n \"\n [style.--legend-title-font-style]=\"config.legendTitleFontStyle || null\"\n [style.--legend-title-font-weight]=\"config.legendTitleFontWeight || null\"\n [style.--legend-title-text-decoration]=\"config.legendTitleTextDecoration || null\"\n [style.--legend-title-font-family]=\"config.legendTitleFontFamily || 'initial'\"\n >\n {{ config.title }}\n </p>\n }\n @if (usesInternalLegendScroll && canScrollLegend) {\n <button\n type=\"button\"\n class=\"chart-legend__scroll-button chart-legend__scroll-button--start\"\n [disabled]=\"!canScrollStart\"\n (click)=\"scrollLegend(-1, $event)\"\n [attr.aria-label]=\"scrollStartAriaLabel\"\n >\n <img\n src=\"images/legend_left.svg\"\n [class.chart-legend__scroll-icon--up]=\"scrollsVertically\"\n alt=\"left\"\n />\n </button>\n }\n\n <div #itemsScroller class=\"chart-legend__scroller\" (scroll)=\"updateScrollState()\">\n <div\n class=\"chart-legend__items\"\n role=\"list\"\n [class.chart-legend__items--center]=\"\n isLegendAlignedCenter && (!usesInternalLegendScroll || !canScrollLegend)\n \"\n [class.chart-legend__items--end]=\"isLegendAlignedEnd\"\n [style.--legend-text-color]=\"config.legendTextColor || null\"\n [style.--legend-font-size]=\"config.legendFontSize ? config.legendFontSize + 'px' : null\"\n [style.--legend-font-style]=\"config.legendFontStyle || null\"\n [style.--legend-font-weight]=\"config.legendFontWeight || null\"\n [style.--legend-text-decoration]=\"config.legendTextDecoration || null\"\n [style.--legend-font-family]=\"config.legendFontFamily || 'initial'\"\n >\n @for (group of groupedItems; track trackByGroup($index, group)) {\n @if (group.group) {\n <div class=\"chart-legend__group-label\">{{ group.group }}</div>\n }\n\n @for (item of group.items; track trackByItem($index, item)) {\n <button\n type=\"button\"\n class=\"chart-legend__item\"\n role=\"switch\"\n [class.chart-legend__item--off]=\"!item.selected\"\n [class.chart-legend__item--disabled]=\"item.disabled\"\n [class.chart-legend__item--hovered]=\"state.hoveredName === item.name\"\n [disabled]=\"item.disabled\"\n [attr.aria-checked]=\"item.selected\"\n [attr.aria-label]=\"item.label\"\n [style.--legend-item-color]=\"item.color\"\n [title]=\"itemTitle(item)\"\n (click)=\"toggle(item, $event)\"\n (keydown.enter)=\"toggle(item, $event)\"\n (keydown.space)=\"toggle(item, $event)\"\n (mouseenter)=\"hover(item)\"\n (focus)=\"hover(item)\"\n (mouseleave)=\"leave(item)\"\n (blur)=\"leave(item)\"\n >\n @if (templateFor(item); as template) {\n <ng-container\n [ngTemplateOutlet]=\"template\"\n [ngTemplateOutletContext]=\"templateContext(item)\"\n ></ng-container>\n } @else {\n @switch (iconRenderType(item)) {\n @case ('image') {\n @if (isLineMarker(item)) {\n <span\n class=\"chart-legend__icon chart-legend__icon--line-marker\"\n aria-hidden=\"true\"\n >\n <span class=\"chart-legend__icon-line\"></span>\n <img class=\"chart-legend__icon-image\" [src]=\"iconImageSrc(item)\" alt=\"\" />\n <span class=\"chart-legend__icon-line\"></span>\n </span>\n } @else {\n <img class=\"chart-legend__icon-image\" [src]=\"iconImageSrc(item)\" alt=\"\" />\n }\n }\n @case ('path') {\n @if (isLineMarker(item)) {\n <span\n class=\"chart-legend__icon chart-legend__icon--line-marker\"\n aria-hidden=\"true\"\n >\n <span class=\"chart-legend__icon-line\"></span>\n <svg\n class=\"chart-legend__icon-path\"\n viewBox=\"-512 -512 1024 1024\"\n aria-hidden=\"true\"\n >\n <path [attr.d]=\"iconPathData(item)\"></path>\n </svg>\n <span class=\"chart-legend__icon-line\"></span>\n </span>\n } @else {\n <svg\n class=\"chart-legend__icon-path\"\n viewBox=\"-512 -512 1024 1024\"\n aria-hidden=\"true\"\n >\n <path [attr.d]=\"iconPathData(item)\"></path>\n </svg>\n }\n }\n @case ('shape') {\n @if (isLineMarker(item)) {\n <span\n class=\"chart-legend__icon chart-legend__icon--line-marker\"\n aria-hidden=\"true\"\n >\n <span class=\"chart-legend__icon-line\"></span>\n <span\n class=\"chart-legend__icon chart-legend__icon--marker\"\n [ngClass]=\"iconShapeClass(item.icon)\"\n ></span>\n <span class=\"chart-legend__icon-line\"></span>\n </span>\n } @else {\n <span\n class=\"chart-legend__icon\"\n [ngClass]=\"iconShapeClass(iconForRender(item))\"\n aria-hidden=\"true\"\n ></span>\n }\n }\n }\n <span class=\"chart-legend__label\"\n >{{ item.label\n }}{{ this.config.showValue && this.config.valueFormatter && ':' }}</span\n >\n @if (this.config.showValue && this.config.valueFormatter) {\n <span class=\"chart-legend__value\">{{ this.config.valueFormatter(item) }}</span>\n }\n @if (this.config.showActionArrow) {\n @if (this.config.actionArrowTemplate) {\n <ng-container\n [ngTemplateOutlet]=\"this.config.actionArrowTemplate\"\n [ngTemplateOutletContext]=\"templateContext(item)\"\n ></ng-container>\n } @else {\n <svg\n class=\"chart-legend__action-arrow\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n stroke-width=\"2\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n >\n <polyline points=\"9 18 15 12 9 6\"></polyline>\n </svg>\n }\n }\n }\n </button>\n }\n }\n </div>\n </div>\n\n @if (usesInternalLegendScroll && canScrollLegend) {\n <button\n type=\"button\"\n class=\"chart-legend__scroll-button chart-legend__scroll-button--end\"\n [disabled]=\"!canScrollEnd\"\n (click)=\"scrollLegend(1, $event)\"\n [attr.aria-label]=\"scrollEndAriaLabel\"\n >\n <img\n src=\"images/legend_right.svg\"\n [class.chart-legend__scroll-icon--down]=\"scrollsVertically\"\n alt=\"right\"\n />\n </button>\n }\n </div>\n\n @if (config.showPagination && pageCount > 1) {\n <div class=\"chart-legend__pagination\" aria-label=\"Legend pages\">\n <button\n type=\"button\"\n class=\"chart-legend__page\"\n [disabled]=\"state.pageIndex === 0\"\n (click)=\"page(-1)\"\n aria-label=\"Previous legend page\"\n >\n <\n </button>\n <span class=\"chart-legend__page-count\">{{ state.pageIndex + 1 }} / {{ pageCount }}</span>\n <button\n type=\"button\"\n class=\"chart-legend__page\"\n [disabled]=\"state.pageIndex + 1 === pageCount\"\n (click)=\"page(1)\"\n aria-label=\"Next legend page\"\n >\n >\n </button>\n </div>\n }\n </nav>\n}\n","import { Injectable } from '@angular/core';\nimport * as echarts from 'echarts/core';\nimport {\n BarChartConfig,\n DoughnutChartConfig,\n HeatmapChartConfig,\n LineChartConfig,\n PieChartConfig,\n SankeyLink,\n SankeyNode,\n} from '../modal/charts-modal';\n@Injectable({\n providedIn: 'root',\n})\nexport class Charts {\n legendSelected: Record<string, boolean> = {};\n defaultColors: string[] = ['#22c55e', '#3b82f6', '#ef4444', '#6b7280'];\n\n // buildGraphicLegend(total: number | null, config: any, chartInstance: any, chartType?: string) {\n // const pillHeight = 28;\n // const spacing = 14;\n // const indicatorWidth = 12;\n // const padding = 8;\n // const font = '14px sans-serif';\n\n // const containerWidth = chartInstance?.getWidth?.() ?? 800;\n // const maxWidth = containerWidth * (config?.legendContainerWidth ?? 0.7);\n\n // const selectedMap = chartInstance?.getOption()?.legend?.[0]?.selected || {};\n // let colorIndex = 0;\n // const pills = (\n // chartType === 'line' || chartType === 'bar' || chartType === 'scatter'\n // ? config?.series\n // : config?.data\n // )?.map((item: any) => {\n // const hasCustomColors = Array.isArray(config?.colors) && config?.colors?.length > 0;\n // const color =\n // total === 0\n // ? '#E6E7E8'\n // : (item?.itemStyle?.color ??\n // (hasCustomColors\n // ? config?.colors[colorIndex % config?.colors?.length]\n // : this.defaultColors[colorIndex % this.defaultColors.length]));\n // if (\n // !item?.itemStyle?.color ||\n // (item?.itemStyle?.color && Object.keys(selectedMap).length && !selectedMap[item.name])\n // ) {\n // colorIndex += 1;\n // }\n // const nameRect = echarts.format.getTextRect(item.name, font);\n // const valueRect =\n // chartType === 'line' || chartType === 'bar' || chartType === 'scatter'\n // ? { width: 0 }\n // : echarts.format.getTextRect(\n // String(config?.valueFormatter ? config.valueFormatter(item.value) : item.value),\n // font,\n // );\n\n // const pillWidth =\n // padding +\n // indicatorWidth +\n // 6 +\n // nameRect.width +\n // (chartType === 'line' || chartType === 'bar' || chartType === 'scatter'\n // ? 0\n // : 8 + valueRect.width) +\n // padding;\n\n // return { item, color, pillWidth };\n // });\n\n // // 🔹 Build rows dynamically\n // const rows: any[] = [];\n // let currentRow: any[] = [];\n // let rowWidth = 0;\n\n // pills?.forEach((pill: any) => {\n // if (rowWidth + pill.pillWidth > maxWidth && currentRow.length) {\n // rows.push({ pills: currentRow, width: rowWidth });\n // currentRow = [];\n // rowWidth = 0;\n // }\n\n // currentRow.push(pill);\n // rowWidth += pill.pillWidth + spacing;\n // });\n\n // if (currentRow.length) rows.push({ pills: currentRow, width: rowWidth });\n\n // // 🔹 Build graphic children\n // let yOffset = 0;\n // const children: any[] = [];\n\n // rows?.forEach((row) => {\n // let xOffset =\n // config?.legendAlign === 'center' && config?.legendDirection !== 'vertical'\n // ? (maxWidth - row.width) / 2\n // : maxWidth;\n\n // row?.pills?.forEach((pill: any) => {\n // const isSelected = selectedMap[pill.item.name] !== false;\n // const isDisabled = pill.item.value === 0;\n // children.push({\n // type: 'group',\n // left: xOffset,\n // top: yOffset,\n // width: pill.pillWidth,\n // height: pillHeight,\n // cursor: isDisabled ? 'default' : 'pointer',\n\n // onclick: () => {\n // if (isDisabled) return;\n // chartInstance.dispatchAction({\n // type: 'legendToggleSelect',\n // name: pill.item.name,\n // });\n\n // chartInstance.setOption({\n // graphic: this.buildGraphicLegend(total, config, chartInstance, chartType),\n // });\n // },\n\n // children: [\n // {\n // type: 'rect',\n // shape: {\n // width: pill.pillWidth,\n // height: pillHeight,\n // r: 4,\n // },\n // style: {\n // fill:\n // isSelected && !isDisabled\n // ? this.hexToRgba(pill.color, total === 0 ? 0.3 : 0.03)\n // : '#F2F2F7',\n // stroke: isSelected && !isDisabled ? this.hexToRgba(pill.color, 0.3) : '#D1D1D6',\n // lineWidth: 1,\n // },\n // },\n\n // {\n // type: 'rect',\n // shape: { width: 12, height: config?.legendIndicatorHeight ?? 12, r: 2 },\n // left: padding,\n // top: (pillHeight - (config?.legendIndicatorHeight ?? 12)) / 2,\n // style: {\n // fill: isSelected && !isDisabled ? pill.color : '#C7C7CC',\n // },\n // },\n\n // {\n // type: 'text',\n // left: padding + indicatorWidth + 6,\n // top: (pillHeight - indicatorWidth) / 2,\n // style: {\n // text: `${pill.item.name}${chartType === 'line' || chartType === 'bar' || chartType === 'scatter' ? '' : ':'}`,\n // fontSize: 14,\n // fontWeight: 400,\n // fill: isSelected && !isDisabled && total !== 0 ? '#1C1C1E' : '#81858A',\n // textVerticalAlign: 'middle',\n // },\n // },\n\n // ...(chartType === 'line' || chartType === 'bar' || chartType === 'scatter'\n // ? []\n // : [\n // {\n // type: 'text',\n // right: padding,\n // top: (pillHeight - indicatorWidth) / 2,\n // style: {\n // text:\n // total === 0\n // ? '-'\n // : config?.valueFormatter\n // ? config.valueFormatter(pill.item.value)\n // : pill.item.value,\n // fontSize: 14,\n // fontWeight: 500,\n // fill: isSelected && !isDisabled ? '#1C1C1E' : '#81858A',\n // textAlign: 'right',\n // textVerticalAlign: 'middle',\n // },\n // },\n // ]),\n // ],\n // });\n\n // xOffset += pill.pillWidth + spacing;\n // });\n\n // yOffset += pillHeight + spacing;\n // });\n\n // // 🔹 Position logic\n // const positionConfig: any = {};\n // switch (config?.legendPosition) {\n // case 'top':\n // positionConfig.top = config?.legendEdgeGap?.top ?? 20;\n // break;\n // case 'bottom':\n // positionConfig.bottom = config?.legendEdgeGap?.bottom ?? 20;\n // break;\n // case 'left':\n // positionConfig.left = config?.legendEdgeGap?.left ?? 20;\n // break;\n // case 'right':\n // positionConfig.right = config?.legendEdgeGap?.right ?? 20;\n // break;\n // }\n\n // // ALIGNMENT (Cross-Axis)\n // if (config?.legendPosition === 'top' || config?.legendPosition === 'bottom') {\n // // Horizontal area → align horizontally\n // if (config?.legendAlign === 'center') {\n // positionConfig.left = 'center';\n // } else if (config?.legendAlign === 'right') {\n // positionConfig.right = config?.legendEdgeGap?.right ?? 20;\n // } else {\n // positionConfig.left = config?.legendEdgeGap?.left ?? 20;\n // }\n // } else {\n // // Vertical area → align vertically\n // if (config?.legendAlign === 'center') {\n // positionConfig.top = 'middle';\n // } else if (config?.legendAlign === 'right') {\n // positionConfig.bottom = config?.legendEdgeGap?.bottom ?? 20;\n // } else {\n // positionConfig.top = config?.legendEdgeGap?.top ?? 20;\n // }\n // }\n // return [\n // {\n // id: 'customLegend',\n // type: 'group',\n // ...positionConfig,\n // width: maxWidth,\n // height: yOffset,\n // children,\n // },\n // ];\n // }\n buildGraphicLegend(total: number | null, config: any, chartInstance: any, chartType?: string) {\n const pillHeight = 28;\n const spacing = 14;\n const indicatorWidth = 12;\n const padding = 8;\n const font = '14px sans-serif';\n\n // =========================================\n // CONTAINER + AVAILABLE WIDTH\n // =========================================\n\n const containerWidth = chartInstance?.getWidth?.() ?? 800;\n\n const leftGap = config?.legendEdgeGap?.left ?? 0;\n const rightGap = config?.legendEdgeGap?.right ?? 0;\n\n // actual usable width after gaps\n const usableWidth = containerWidth - leftGap - rightGap;\n\n const maxWidth = usableWidth * (config?.legendContainerWidth ?? 0.7);\n\n // =========================================\n // SELECTED LEGEND MAP\n // =========================================\n\n const selectedMap = chartInstance?.getOption()?.legend?.[0]?.selected || {};\n\n let colorIndex = 0;\n\n // =========================================\n // BUILD PILLS\n // =========================================\n\n const pills = (\n chartType === 'line' || chartType === 'bar' || chartType === 'scatter'\n ? config?.series\n : config?.data\n )?.map((item: any) => {\n const hasCustomColors = Array.isArray(config?.colors) && config?.colors?.length > 0;\n\n const color =\n total === 0\n ? '#E6E7E8'\n : (item?.itemStyle?.color ??\n (hasCustomColors\n ? config?.colors[colorIndex % config?.colors?.length]\n : this.defaultColors[colorIndex % this.defaultColors.length]));\n\n if (\n !item?.itemStyle?.color ||\n (item?.itemStyle?.color && Object.keys(selectedMap).length && !selectedMap[item.name])\n ) {\n colorIndex += 1;\n }\n\n const nameRect = echarts.format.getTextRect(item.name, font);\n\n const valueRect =\n chartType === 'line' || chartType === 'bar' || chartType === 'scatter'\n ? { width: 0 }\n : echarts.format.getTextRect(\n String(config?.valueFormatter ? config.valueFormatter(item.value) : item.value),\n font,\n );\n\n const pillWidth =\n padding +\n indicatorWidth +\n 6 +\n nameRect.width +\n (chartType === 'line' || chartType === 'bar' || chartType === 'scatter'\n ? 0\n : 8 + valueRect.width) +\n padding;\n\n return {\n item,\n color,\n pillWidth,\n };\n });\n\n // =========================================\n // BUILD ROWS PERFECTLY\n // =========================================\n\n const rows: any[] = [];\n\n let currentRow: any[] = [];\n let rowWidth = 0;\n\n pills?.forEach((pill: any) => {\n const additionalWidth = currentRow.length > 0 ? spacing : 0;\n\n // break row if width exceeded\n if (currentRow.length && rowWidth + additionalWidth + pill.pillWidth > maxWidth) {\n rows.push({\n pills: currentRow,\n width: rowWidth,\n });\n\n currentRow = [pill];\n rowWidth = pill.pillWidth;\n } else {\n rowWidth += additionalWidth + pill.pillWidth;\n currentRow.push(pill);\n }\n });\n\n if (currentRow.length) {\n rows.push({\n pills: currentRow,\n width: rowWidth,\n });\n }\n\n // =========================================\n // BUILD GRAPHIC CHILDREN\n // =========================================\n\n let yOffset = 0;\n\n const children: any[] = [];\n\n rows?.forEach((row) => {\n let xOffset = 0;\n\n // =====================================\n // HORIZONTAL ALIGNMENTS\n // =====================================\n\n if (config?.legendDirection !== 'vertical') {\n if (config?.legendAlign === 'center') {\n xOffset = Math.max((maxWidth - row.width) / 2, 0);\n } else if (config?.legendAlign === 'right') {\n xOffset = Math.max(maxWidth - row.width, 0);\n }\n }\n\n row?.pills?.forEach((pill: any) => {\n const isSelected = selectedMap[pill.item.name] !== false;\n\n const isDisabled = pill.item.value === 0;\n\n children.push({\n type: 'group',\n\n left: xOffset,\n top: yOffset,\n\n width: pill.pillWidth,\n height: pillHeight,\n\n cursor: isDisabled ? 'default' : 'pointer',\n\n onclick: () => {\n if (isDisabled) return;\n\n chartInstance.dispatchAction({\n type: 'legendToggleSelect',\n name: pill.item.name,\n });\n\n chartInstance.setOption({\n graphic: this.buildGraphicLegend(total, config, chartInstance, chartType),\n });\n },\n\n children: [\n // =================================\n // BACKGROUND\n // =================================\n\n {\n type: 'rect',\n\n shape: {\n width: pill.pillWidth,\n height: pillHeight,\n r: 4,\n },\n\n style: {\n fill:\n isSelected && !isDisabled\n ? this.hexToRgba(pill.color, total === 0 ? 0.3 : 0.03)\n : '#F2F2F7',\n\n stroke: isSelected && !isDisabled ? this.hexToRgba(pill.color, 0.3) : '#D1D1D6',\n\n lineWidth: 1,\n },\n },\n\n // =================================\n // INDICATOR\n // =================================\n\n {\n type: 'rect',\n\n shape: {\n width: 12,\n height: config?.legendIndicatorHeight ?? 12,\n r: 2,\n },\n\n left: padding,\n\n top: (pillHeight - (config?.legendIndicatorHeight ?? 12)) / 2,\n\n style: {\n fill: isSelected && !isDisabled ? pill.color : '#C7C7CC',\n },\n },\n\n // =================================\n // LABEL\n // =================================\n\n {\n type: 'text',\n\n left: padding + indicatorWidth + 6,\n\n top: (pillHeight - indicatorWidth) / 2,\n\n style: {\n text: `${pill.item.name}${\n chartType === 'line' || chartType === 'bar' || chartType === 'scatter' ? '' : ':'\n }`,\n\n fontSize: 14,\n fontWeight: 400,\n\n fill: isSelected && !isDisabled && total !== 0 ? '#1C1C1E' : '#81858A',\n\n textVerticalAlign: 'middle',\n },\n },\n\n // =================================\n // VALUE\n // =================================\n\n ...(chartType === 'line' || chartType === 'bar' || chartType === 'scatter'\n ? []\n : [\n {\n type: 'text',\n\n right: padding,\n\n top: (pillHeight - indicatorWidth) / 2,\n\n style: {\n text:\n total === 0\n ? '-'\n : config?.valueFormatter\n ? config.valueFormatter(pill.item.value)\n : pill.item.value,\n\n fontSize: 14,\n fontWeight: 500,\n\n fill: isSelected && !isDisabled ? '#1C1C1E' : '#81858A',\n\n textAlign: 'right',\n textVerticalAlign: 'middle',\n },\n },\n ]),\n ],\n });\n\n xOffset += pill.pillWidth + spacing;\n });\n\n yOffset += pillHeight + spacing;\n });\n\n // =========================================\n // POSITION CONFIG\n // =========================================\n\n const positionConfig: any = {};\n\n switch (config?.legendPosition) {\n case 'top':\n positionConfig.top = config?.legendEdgeGap?.top ?? 20;\n break;\n\n case 'bottom':\n positionConfig.bottom = config?.legendEdgeGap?.bottom ?? 20;\n break;\n\n case 'left':\n positionConfig.left = config?.legendEdgeGap?.left ?? 20;\n break;\n\n case 'right':\n positionConfig.right = config?.legendEdgeGap?.right ?? 20;\n break;\n }\n\n // =========================================\n // CROSS AXIS ALIGNMENT\n // =========================================\n\n if (config?.legendPosition === 'top' || config?.legendPosition === 'bottom') {\n // horizontal placement\n if (config?.legendAlign === 'center') {\n positionConfig.left = 'center';\n } else if (config?.legendAlign === 'right') {\n positionConfig.right = config?.legendEdgeGap?.right ?? 20;\n } else {\n positionConfig.left = config?.legendEdgeGap?.left ?? 20;\n }\n } else {\n // vertical placement\n if (config?.legendAlign === 'center') {\n positionConfig.top = 'middle';\n } else if (config?.legendAlign === 'right') {\n positionConfig.bottom = config?.legendEdgeGap?.bottom ?? 20;\n } else {\n positionConfig.top = config?.legendEdgeGap?.top ?? 20;\n }\n }\n\n // =========================================\n // RETURN GRAPHIC\n // =========================================\n\n return [\n {\n id: 'customLegend',\n\n type: 'group',\n\n ...positionConfig,\n\n width: maxWidth,\n height: yOffset,\n\n children,\n },\n ];\n }\n buildCenterGraphic(config: any, total: number) {\n if (!config?.centerLabel?.show) return [];\n\n const centerConfig = config.centerLabel;\n const titleFont = centerConfig.fontSizeTitle ?? 14;\n const valueFont = centerConfig.fontSizeValue ?? 22;\n\n // Use external top if provided, default to 'center'\n // config.bottom\n const groupTop = centerConfig.top ?? 'center';\n const groupLeft = centerConfig.left ?? 'center';\n\n // Offsets relative to groupTop\n const titleOffset = -valueFont / 2;\n const valueOffset = titleFont / 2;\n\n return [\n {\n id: 'centerLabel',\n type: 'group',\n left: groupLeft,\n top: groupTop,\n silent: true,\n children: [\n ...(centerConfig.title\n ? [\n {\n type: 'text',\n style: {\n text: centerConfig.title ?? '',\n fontSize: titleFont,\n fill: centerConfig.titleColor ?? '#666',\n textAlign: 'center',\n textBaseline: 'middle',\n },\n top: titleOffset, // relative to groupTop\n },\n ]\n : []),\n {\n type: 'text',\n style: {\n text:\n centerConfig.type === 'custom' && centerConfig.formatter\n ? centerConfig.formatter(total, config.data)\n : (centerConfig.value ?? ''),\n fontSize: valueFont,\n fontWeight: 'bold',\n fill: centerConfig.valueColor ?? '#000',\n textAlign: 'center',\n textBaseline: 'middle',\n },\n top: valueOffset + (centerConfig?.valueTopSpace || 0), // relative to groupTop\n },\n ],\n },\n ];\n }\n\n hexToRgba(hex: string, alpha: number) {\n const r = parseInt(hex.slice(1, 3), 16);\n const g = parseInt(hex.slice(3, 5), 16);\n const b = parseInt(hex.slice(5, 7), 16);\n\n return `rgba(${r}, ${g}, ${b}, ${alpha})`;\n }\n\n formatPercentage(value: string | number | null | undefined) {\n if (value === null || value === undefined || value === '') return 'NA';\n\n // already percentage string\n if (typeof value === 'string' && value.includes('%')) return value;\n\n // numeric/string number\n const num = Number(value);\n if (isNaN(num)) return 'NA';\n\n return `${num}%`;\n }\n\n getNumericValue(value: string | number | null | undefined): number | null {\n if (value === null || value === undefined || value === '') return null;\n\n // remove %\n const cleaned = typeof value === 'string' ? value.replace('%', '').trim() : value;\n const num = Number(cleaned);\n\n return isNaN(num) ? null : num;\n }\n\n getStatusColor(value: string | number | null | undefined) {\n const num = this.getNumericValue(value);\n if (num === null) return '#C0C2C5'; // grey\n if (num < 30) return '#EF4343'; // red\n if (num <= 60) return '#FFC107'; // yellow\n return '#29A277'; // green\n }\n\n pieTooltipFormatter(params: any, config: DoughnutChartConfig | PieChartConfig) {\n const color = params.color;\n const name = params.name;\n const value = params.value;\n const percent = params.percent;\n\n let extraTooltipData: any[] = [];\n if (typeof params?.data === 'object') {\n extraTooltipData = Object.entries(params.data?.[config?.extraTooltipKey || 'tooltip'] || {});\n }\n\n let extraTooltipDataTemplate = '';\n if (extraTooltipData.length) {\n extraTooltipData.forEach((data) => {\n extraTooltipDataTemplate += `<div style=\"\n font-size:13px;\n color:#434A51;\n padding-top: 0.5rem;\n \">\n ${data[0]}: <b style=\"color:#111;font-weight:600;\">${data[1]}</b>\n </div>`;\n });\n }\n\n return `<div style=\"\n position: relative;\n background-color: #fff;\n padding: 8px 16px;\n border-radius: 8px;\n box-shadow: 0 4px 16px rgba(0,0,0,0.08);\n \">\n <div style=\"\n display: flex;\n align-items: center;\n gap: 10px;\n \">\n <div style=\"\n position: absolute;\n left: -10px;\n top: 10px;\n width: 0;\n height: 0;\n border-top: 10px solid transparent;\n border-bottom: 10px solid transparent;\n border-right: 10px solid #ffffff;\n \"></div>\n\n <span style=\"\n width: 14px;\n height: 14px;\n background: ${color};\n border-radius: 3px;\n display: inline-block;\n \"></span>\n\n <span style=\"\n font-size: 12px;\n color: #434A51;\n \">\n ${name}: <b style=\"color:#111; font-weight:600;\">${config.valueFormatter ? config.valueFormatter(value) : this.toMaxDecimals(value)}</b> ${config.showTooltipPercent ? '(' + percent + '%)' : ''}\n </span>\n </div>\n ${extraTooltipDataTemplate}\n </div>\n `;\n }\n barLineTooltipFormatter(\n params: any,\n chartType?: 'bar' | 'line',\n config?: LineChartConfig | BarChartConfig,\n ) {\n if (!params || !params.length) return '';\n\n const date = params[0].axisValueLabel || params[0].name;\n\n let total = 0;\n let rows = '';\n\n let extraTooltipData: any[] = [];\n if (typeof params?.[0]?.data === 'object') {\n extraTooltipData = Object.entries(\n params[0].data?.[config?.extraTooltipKey || 'tooltip'] || {},\n );\n }\n\n let extraTooltipDataTemplate = '';\n if (extraTooltipData.length) {\n extraTooltipData.forEach((data) => {\n extraTooltipDataTemplate += `<div style=\"\n font-size:13px;\n color:#434A51;\n padding-top: 0.5rem;\n \">\n ${data[0]}: <b style=\"color:#111;font-weight:600;\">${data[1]}</b>\n </div>`;\n });\n }\n\n params?.forEach((item: any) => {\n const color = item.color;\n const name = item.seriesName;\n const value = item.value ?? 0;\n\n total += Number(value);\n\n rows += `\n <div style=\"\n display:flex;\n align-items:center;\n gap:8px;\n font-size:13px;\n color:#434A51;\n \">\n <span style=\"\n width:14px;\n height: ${chartType === 'line' ? '3px' : '14px'};\n background:${color};\n border-radius:3px;\n display:inline-block;\n \"></span>\n\n <span>${name}: <b style=\"color:#111;font-weight:600;\">${this.toMaxDecimals(value)}</b></span>\n </div>\n `;\n });\n\n return `\n <div style=\"\n border-radius: 8px;\n background-color: #ffffff;\n border: 1px solid #f0f0f0;\n box-shadow: 0px 10.55px 23.39px -3.52px #0a0d1214;\n min-width:190px;\n \">\n <div style=\"\n font-size:15px;\n font-weight:600;\n color:#111;\n padding: 0.5rem 1rem;\n border-bottom: 1px solid #F0F0F0 ;\n \">\n ${date}\n </div>\n <div style=\"padding: 1rem; display: flex; flex-direction: column; gap: 6px\">\n ${rows}\n <div>\n <div style=\"\n font-size:13px;\n color:#434A51;\n padding-top: 0.5rem;\n \">\n Total: <b style=\"color:#111;font-weight:600;\">${this.toMaxDecimals(total)}</b>\n ${extraTooltipDataTemplate}\n </div>\n\n </div>\n `;\n }\n\n heatmapTooltipFormatter(params: any, config: HeatmapChartConfig) {\n const value = params.value ?? [];\n const xAxisLabel = config.xAxisData?.[value[0]] ?? value[0] ?? '-';\n const yAxisLabel = config.yAxisData?.[value[1]] ?? value[1] ?? '-';\n const heatValue = value[2] ?? '-';\n const color = params.color ?? '#38bdf8';\n\n return `\n <div style=\"\n background:#ffffff;\n padding:12px 14px;\n border-radius:8px;\n border:1px solid #f0f0f0;\n box-shadow:0px 10.55px 23.39px -3.52px #0a0d1214;\n min-width:160px;\n font-family: Inter, sans-serif;\n \">\n <div style=\"\n display:flex;\n align-items:center;\n gap:8px;\n color:#111;\n font-size:14px;\n font-weight:600;\n margin-bottom:8px;\n \">\n <span style=\"\n width:12px;\n height:12px;\n background:${color};\n border-radius:3px;\n display:inline-block;\n \"></span>\n <span>${config.seriesName ?? config.title ?? 'Heatmap'}</span>\n </div>\n\n <div style=\"font-size:13px;color:#434A51;margin-top:4px;\">\n ${xAxisLabel} / ${yAxisLabel}: <b style=\"color:#111;font-weight:600;\">${heatValue}</b>\n </div>\n </div>\n `;\n }\n\n timelineChartTooltipFormatter(params: any) {\n const d = params.data;\n\n return `<div style=\"\n position: relative;\n background:#fff;\n border-radius:8px;\n font-size:12px;\n color:#444;\n box-shadow:0 2px 8px rgba(0,0,0,0.15);\n min-width:220px;\n max-width:500px;\n \">\n <div style=\"\n position: absolute;\n left: -10px;\n bottom: 10px;\n width: 0;\n height: 0;\n border-top: 10px solid transparent;\n border-bottom: 10px solid transparent;\n border-right: 10px solid #ffffff;\n \"></div>\n <div style=\"padding: 8px 16px; border-bottom:1px solid #E6E7E8;\">\n <div style=\"font-weight:400;color:#040D17;font-size: 14px;\">\n ${d.start || '00:00'} - ${d.end || '00:00'}\n </div>\n\n <div style=\"color:#81858A;margin-top:2px;\">\n ${d.date || 'NA'}\n </div>\n </div>\n <div style=\"padding: 8px 16px;\">\n <div>\n Work Mode: <b>${d.workMode || '-'}</b>\n </div>\n\n <div style=\"margin-top:6px;\">\n Productivity:\n <span style=\"color:${this.getStatusColor(d.productivity)};font-weight:600;\">\n ${this.formatPercentage(d.productivity)}\n </span>\n\n <span style=\"margin-left:12px;\">Activity:</span>\n <span style=\"color:${this.getStatusColor(d.activity)};font-weight:600;\">\n ${this.formatPercentage(d.activity)}\n </span>\n </div>\n\n <div style=\"margin-top:6px;\">\n System Presence: <b>${d.systemPresence || '-'}</b>\n </div>\n\n <div style=\"margin-top:6px;\">\n POW Source: <b>${d.powSource || '-'}</b>\n </div>\n\n <div style=\"margin-top:6px;\">\n Location: <b style=\"white-space: break-spaces;\">${d.location || '-'}</b>\n </div>\n\n <div style=\"\n display:flex;\n gap:10px;\n align-items:center;\n margin-top:6px;\n \">\n Apps Used:\n <span style=\"color:#2563eb;font-weight:600;\">\n ${d.appsUsed || 0}\n </span>\n\n <span style=\"color:#ccc;\">|</span>\n\n Screenshots:\n <span style=\"color:#2563eb;font-weight:600;\">\n ${d.screenShots || 0}\n </span>\n </div>\n </div>\n </div>`;\n }\n getSankeyLevels(nodes: SankeyNode[] = [], links: SankeyLink[] = []) {\n const graph = new Map();\n const indegree = new Map();\n\n nodes.forEach((n) => {\n graph.set(n.name, []);\n indegree.set(n.name, 0);\n });\n\n links.forEach((link) => {\n graph.get(link.source).push(link.target);\n indegree.set(link.target, indegree.get(link.target) + 1);\n });\n\n const queue: any[] = [];\n const levelMap = new Map();\n\n indegree.forEach((deg, node) => {\n if (deg === 0) {\n queue.push(node);\n levelMap.set(node, 0);\n }\n });\n\n while (queue.length) {\n const current = queue.shift();\n const currentLevel = levelMap.get(current);\n\n graph.get(current).forEach((neighbor: any) => {\n const newLevel = currentLevel + 1;\n\n if (!levelMap.has(neighbor) || levelMap.get(neighbor) < newLevel) {\n levelMap.set(neighbor, newLevel);\n queue.push(neighbor);\n }\n });\n }\n\n return Math.max(...levelMap.values());\n }\n\n sankeyTooltipFormatter(params: any) {\n if (params.dataType === 'edge') {\n const { source, target, sourceDesc, targetDesc } = params.data;\n return `\n <div style=\"\n background: #fff;\n padding: 12px 14px;\n border-radius: 10px;\n box-shadow: 0 4px 14px rgba(0,0,0,0.15);\n min-width: 220px;\n font-family: sans-serif;\n \">\n <div style=\"margin-bottom:10px;\">\n <div style=\"font-size:12px; color:#777;\">Source: \n <span style=\"font-weight:600; color:#000\">${source}</span>\n </div>\n ${\n sourceDesc\n ? `<div style=\"font-size:11px; color:#aaa;\">\n ${sourceDesc}\n </div>`\n : ''\n }\n </div>\n \n <div>\n <div style=\"font-size:12px; color:#777;\">Destination: \n <span style=\"font-weight:600; color:#000\">${target}</span>\n </div>\n ${\n targetDesc\n ? `<div style=\"font-size:11px; color:#aaa;\">\n ${targetDesc}\n </div>`\n : ''\n }\n </div>\n </div>\n `;\n }\n return `\n <div style=\"\n background: #fff;\n padding: 10px;\n border-radius: 8px;\n box-shadow: 0 4px 10px rgba(0,0,0,0.15);\n \">\n ${params.name}: <b>${params.value}</b>\n </div>\n `;\n }\n scatterTooltipFormatter(params: any, xName: string | undefined, yName: string | undefined) {\n return `\n <div style=\"\n background: #fff;\n padding: 10px;\n border-radius: 8px;\n box-shadow: 0 4px 10px rgba(0,0,0,0.15);\n \">\n <div><b>${params.seriesName}</b></div>\n <div>${xName ? xName + ':' : ''} ${params.value[0]}</div>\n <div>${yName ? xName + ':' : ''} ${params.value[1]}</div>\n </div>\n `;\n }\n calculateGridTopLineBar(config: LineChartConfig | BarChartConfig): number {\n let maxHeight = 0;\n\n const label = config?.series?.[0]?.['label'];\n\n if (\n (config?.showLabel !== true && label?.show !== true) ||\n (config?.labelPosition !== 'top' && label?.position !== 'top')\n ) {\n return 0;\n }\n\n const font = [\n label.fontStyle,\n label.fontWeight,\n `${label.fontSize ?? 12}px`,\n label.fontFamily ?? 'sans-serif',\n ]\n .filter(Boolean)\n .join(' ');\n\n const text = typeof label.formatter === 'string' ? label.formatter : '0';\n\n const rect = echarts.format.getTextRect(text, font);\n\n const padding = label.padding ?? 0;\n\n const verticalPadding = Array.isArray(padding)\n ? padding.length === 1\n ? padding[0] * 2\n : padding.length === 2\n ? padding[0] * 2\n : padding[0] + padding[2]\n : padding * 2;\n\n maxHeight = Math.max(maxHeight, rect.height + verticalPadding);\n\n return maxHeight + 6;\n }\n\n toMaxDecimals(value: number, maxDecimal: number = 2): number {\n if (!Number.isFinite(value)) {\n return value;\n }\n\n return Number(value.toFixed(maxDecimal));\n }\n}\n","import {\n Component,\n Input,\n Output,\n EventEmitter,\n SimpleChanges,\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n HostListener,\n} from '@angular/core';\n\nimport * as echarts from 'echarts/core';\nimport { ECharts, EChartsCoreOption } from 'echarts/core';\nimport { NgxEchartsDirective, provideEchartsCore } from 'ngx-echarts';\n\nimport { LineChart } from 'echarts/charts';\nimport {\n GridComponent,\n TooltipComponent,\n LegendComponent,\n TitleComponent,\n ToolboxComponent,\n DataZoomInsideComponent,\n DataZoomComponent,\n MarkAreaComponent,\n MarkLineComponent,\n} from 'echarts/components';\nimport { CanvasRenderer } from 'echarts/renderers';\nimport { LineChartConfig } from '../../modal/charts-modal';\nimport { Charts } from '../../service/charts';\nimport { RightClickCard } from '../right-click-card';\nimport { ChartLegendComponent, ChartLegendEvent } from '../chart-legend';\n\necharts.use([\n LineChart,\n GridComponent,\n TooltipComponent,\n LegendComponent,\n CanvasRenderer,\n TitleComponent,\n ToolboxComponent,\n DataZoomInsideComponent,\n DataZoomComponent,\n MarkAreaComponent,\n MarkLineComponent,\n]);\n\n@Component({\n selector: 'lib-line-chart',\n standalone: true,\n imports: [NgxEchartsDirective, RightClickCard, ChartLegendComponent],\n providers: [provideEchartsCore({ echarts })],\n templateUrl: './line-chart.html',\n styleUrls: ['./line-chart.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class LinesChart {\n @Input() config: LineChartConfig = { xAxisData: [], series: [] };\n @Input() theme: any;\n @Input() events: string[] = [];\n @Input() contextMenuOptions: any[] = [];\n @Input() showContextMenu: boolean = false;\n\n @Output() contextMenuClick = new EventEmitter<any>();\n @Output() chartEvent = new EventEmitter<{\n type: string;\n data: any;\n }>();\n @Output() legendEvent = new EventEmitter<ChartLegendEvent>();\n chartOption: EChartsCoreOption = {};\n chartInstance!: ECharts;\n cardPosition = { x: 0, y: 0 };\n openCard = false;\n\n get deafultColors() {\n return this.chartService.defaultColors;\n }\n\n get hasSideLegendWidth(): boolean {\n return this.isSideLegend && !!this.config.customLegend?.maxWidth;\n }\n\n get legendShellMaxWidth(): string | null {\n return this.isSideLegend ? (this.config.customLegend?.maxWidth ?? null) : null;\n }\n\n private get isSideLegend(): boolean {\n return (\n this.config.customLegend?.position === 'left' ||\n this.config.customLegend?.position === 'right'\n );\n }\n constructor(\n private chartService: Charts,\n private cdr: ChangeDetectorRef,\n ) {}\n\n /* ------------------ CHANGE HANDLING ------------------ */\n ngOnChanges(changes: SimpleChanges): void {\n if (!this.config) return;\n\n if (changes['theme'] && this.chartInstance) {\n this.chartInstance.dispose();\n // this.chartInstance = null;\n }\n\n this.buildOption();\n }\n private previousConfig: any = {\n xAxisName: '',\n yAxisName: '',\n secondaryYAxisName: '',\n };\n ngDoCheck(): void {\n if (!this.chartInstance || !this.config) return;\n\n const updateOption: any = {};\n\n if (this.previousConfig.xAxisName !== this.config.xAxisName) {\n this.previousConfig.xAxisName = this.config.xAxisName;\n\n updateOption.xAxis = {\n name: this.config?.xAxisName || '',\n };\n }\n\n if (this.previousConfig.yAxisName !== this.config.yAxisName) {\n this.previousConfig.yAxisName = this.config.yAxisName;\n\n updateOption.yAxis = [\n {\n name: this.config?.yAxisName || '',\n },\n ];\n }\n\n if (this.previousConfig.secondaryYAxisName !== this.config.secondaryYAxisName) {\n this.previousConfig.secondaryYAxisName = this.config.secondaryYAxisName;\n\n updateOption.yAxis = [\n {\n name: this.config?.yAxisName || '',\n },\n {\n name: this.config?.secondaryYAxisName || '',\n },\n ];\n }\n\n if (Object.keys(updateOption).length) {\n this.chartInstance.setOption(updateOption);\n }\n }\n\n /* ------------------ OPTION BUILDER ------------------ */\n private buildOption() {\n const selected = this.readLegendSelected();\n const selectedMode = this.config?.customLegend?.selectionMode === 'exclusive' ? 'single' : true;\n\n this.chartOption = {\n backgroundColor: 'transparent',\n color: this.config?.colors || this.chartService.defaultColors,\n title: {\n show: this.config?.showTitle ?? !!this.config?.title,\n text: this.config?.title,\n left: this.config?.titlePosition || 'center',\n },\n\n tooltip: {\n show: this.config?.showTooltip,\n trigger: 'axis',\n backgroundColor: 'transparent', // remove default box\n borderWidth: 0,\n padding: 0,\n confine: true,\n formatter: (params: any) =>\n this.config?.tooltipFormatter\n ? this.config?.tooltipFormatter(params)\n : this.chartService.barLineTooltipFormatter(params, 'line'),\n },\n legend: {\n show: false,\n data: (this.config?.series ?? []).map((series) => series.name),\n selected,\n selectedMode,\n },\n\n grid: this.config?.isTrendChart\n ? { left: 0, right: 0, top: 0, bottom: 0 }\n : {\n left: this.config?.gridLeft ?? 0,\n right: this.config?.gridRight ?? 0,\n bottom: this.config?.gridBottom ?? 0,\n top:\n this.config?.gridTop ?? this.chartService.calculateGridTopLineBar(this.config) ?? 0,\n },\n\n xAxis: {\n show: !this.config?.isTrendChart,\n type: 'category',\n // boundaryGap: false,\n data: this.config?.xAxisData,\n axisLine: {\n show: this.config?.showXAxisLine ?? true,\n lineStyle: {\n color: '#C0C2C5',\n width: 1,\n },\n },\n axisTick: {\n show: false,\n },\n axisLabel: {\n show: this.config?.showXAxisLabel ?? true,\n color: '#434A51',\n fontSize: 12,\n },\n name: this.config?.xAxisName || '',\n nameLocation: 'center',\n nameTextStyle: {\n color: '#434A51',\n fontSize: 14,\n fontWeight: 400,\n },\n splitLine: {\n show: this.config?.showXAxisSplitLine ?? true,\n lineStyle: {\n type: 'dashed',\n color: '#C0C2C5',\n width: 1,\n },\n },\n ...(this.config?.xAxis || {}),\n },\n\n yAxis: [\n {\n show: !this.config?.isTrendChart,\n type: 'value',\n boundaryGap: this.config?.isTrendChart ? [0.2] : undefined,\n\n axisLine: {\n show: this.config?.showYAxisLine ?? true,\n lineStyle: {\n color: '#C0C2C5',\n width: 1,\n },\n },\n axisTick: {\n show: false,\n },\n name: this.config?.yAxisName || '',\n nameLocation: 'center',\n nameTextStyle: {\n color: '#434A51',\n fontSize: 14,\n fontWeight: 400,\n },\n axisLabel: {\n show: this.config?.showYAxisLabel ?? true,\n color: '#434A51',\n fontSize: 12,\n formatter: (value: number) => {\n if (value === 0) {\n return '0';\n }\n\n const absValue = Math.abs(value);\n\n // Quadrillions\n if (absValue >= 1_000_000_000_000_000) {\n return `${+(value / 1_000_000_000_000_000).toFixed(1)}Q`;\n }\n\n // Trillions\n if (absValue >= 1_000_000_000_000) {\n return `${+(value / 1_000_000_000_000).toFixed(1)}T`;\n }\n\n // Billions\n if (absValue >= 1_000_000_000) {\n return `${+(value / 1_000_000_000).toFixed(1)}B`;\n }\n\n // Millions\n if (absValue >= 1_000_000) {\n return `${+(value / 1_000_000).toFixed(1)}M`;\n }\n\n // Thousands\n if (absValue >= 1_000) {\n return `${+(value / 1_000).toFixed(1)}K`;\n }\n\n // Decimal handling\n if (Number.isInteger(value)) {\n return value.toString();\n }\n\n return value;\n },\n },\n splitLine: {\n show: this.config?.showYAxisSplitLine ?? true,\n lineStyle: {\n type: 'dashed',\n color: '#C0C2C5',\n width: 1,\n },\n },\n ...(this.config?.yAxis || {}),\n },\n\n ...(this.config?.secondaryYAxis\n ? [\n {\n show: !this.config?.isTrendChart,\n type: 'value',\n boundaryGap: this.config?.isTrendChart ? [0.2] : undefined,\n\n axisLine: {\n show: this.config?.showYAxisLine ?? true,\n lineStyle: {\n color: '#C0C2C5',\n width: 1,\n },\n },\n axisTick: {\n show: false,\n },\n axisLabel: {\n show: this.config?.showSecondaryYAxisLabel ?? true,\n color: '#434A51',\n fontSize: 12,\n formatter: (value: number) => {\n if (value === 0) {\n return '0';\n }\n\n const absValue = Math.abs(value);\n\n // Quadrillions\n if (absValue >= 1_000_000_000_000_000) {\n return `${+(value / 1_000_000_000_000_000).toFixed(1)}Q`;\n }\n\n // Trillions\n if (absValue >= 1_000_000_000_000) {\n return `${+(value / 1_000_000_000_000).toFixed(1)}T`;\n }\n\n // Billions\n if (absValue >= 1_000_000_000) {\n return `${+(value / 1_000_000_000).toFixed(1)}B`;\n }\n\n // Millions\n if (absValue >= 1_000_000) {\n return `${+(value / 1_000_000).toFixed(1)}M`;\n }\n\n // Thousands\n if (absValue >= 1_000) {\n return `${+(value / 1_000).toFixed(1)}K`;\n }\n\n // Decimal handling\n if (Number.isInteger(value)) {\n return value.toString();\n }\n\n return value;\n },\n },\n name: this.config?.secondaryYAxisName || '',\n nameLocation: 'center',\n nameTextStyle: {\n color: '#434A51',\n fontSize: 14,\n fontWeight: 400,\n },\n splitLine: {\n show: this.config?.showSecondaryYAxisSplitLine ?? true,\n lineStyle: {\n type: 'dashed',\n color: '#C0C2C5',\n width: 1,\n },\n },\n ...(this.config?.secondaryYAxisConfig || {}),\n },\n ]\n : []),\n ],\n\n series: (this.config?.series || [])?.map((s, i) => {\n const lineColor =\n s['color'] ||\n s['itemStyle']?.color ||\n s['lineStyle']?.color ||\n s.areaColor ||\n this.config.colors?.[i % (this.config.colors || []).length] ||\n '#3b82f6';\n\n return {\n type: 'line',\n smooth: s.smooth ?? true,\n areaStyle: s.area\n ? {\n color: {\n type: 'linear',\n x: 0,\n y: 0,\n x2: 0,\n y2: 1,\n colorStops: [\n {\n offset: 0,\n color: lineColor,\n },\n {\n offset: 1,\n color: this.chartService.hexToRgba(lineColor, 0),\n },\n ],\n },\n opacity: s.areaOpacity ?? 0.4,\n }\n : undefined,\n ...s,\n symbol: this.resolveSeriesSymbol(s['symbol']),\n label: {\n show: this.config?.showLabel ?? false,\n position: this.config?.labelPosition ?? 'top',\n ...(s['label'] ? s['label'] : {}),\n },\n itemStyle: {\n borderRadius: this.config?.borderRadius ?? 0,\n ...(s['itemStyle'] ? s['itemStyle'] : {}),\n },\n };\n }),\n toolbox: {\n right: -1000,\n feature: {\n dataZoom: {},\n },\n },\n dataZoom: [\n {\n type: 'inside',\n disabled: true,\n },\n ],\n };\n }\n\n private resolveSeriesSymbol(symbol?: string): string | undefined {\n switch (symbol) {\n case 'plus':\n return 'path://M-2,-8 L2,-8 L2,-2 L8,-2 L8,2 L2,2 L2,8 L-2,8 L-2,2 L-8,2 L-8,-2 L-2,-2 Z';\n case 'x':\n return 'path://M-6,-4 L-4,-6 L0,-2 L4,-6 L6,-4 L2,0 L6,4 L4,6 L0,2 L-4,6 L-6,4 L-2,0 Z';\n case 'thickLine':\n return 'path://M -8 -2 L 8 -2 L 8 2 L -8 2 Z';\n default:\n return symbol;\n }\n }\n\n enableDataZoom(active: boolean) {\n if (!this.chartInstance) return;\n\n this.chartInstance.dispatchAction({\n type: 'takeGlobalCursor',\n key: 'dataZoomSelect',\n dataZoomSelectActive: active,\n });\n }\n\n resetZoom() {\n if (!this.chartInstance) return;\n this.enableDataZoom(false);\n this.chartInstance.dispatchAction({\n type: 'dataZoom',\n start: 0,\n end: 100,\n });\n }\n\n /* ------------------ INIT ------------------ */\n onChartInit(ec: ECharts) {\n this.chartInstance = ec;\n this.buildOption();\n this.bindEvents();\n }\n\n /* ------------------ EVENTS ------------------ */\n private bindEvents() {\n if (!this.chartInstance) return;\n this.chartInstance.off();\n\n // Existing chart events\n this.events.forEach((eventName) => {\n if (eventName === 'contextmenu') {\n this.chartInstance.on('contextmenu', (params: any) => {\n const event = params?.event?.event;\n if (event) {\n event.preventDefault();\n\n const container = this.chartInstance.getDom();\n const rect = container.getBoundingClientRect();\n\n this.cardPosition = {\n x: event.clientX - rect.left,\n y: event.clientY - rect.top,\n };\n\n this.openCard = true;\n\n this.cdr.markForCheck();\n }\n this.chartEvent.emit({\n type: 'contextmenu',\n data: params,\n });\n });\n const zr = this.chartInstance.getZr();\n zr.on('contextmenu', (zrEvent: any) => {\n if (!zrEvent.target) {\n const nativeEvent = zrEvent.event;\n\n nativeEvent.preventDefault();\n\n const container = this.chartInstance.getDom();\n const rect = container.getBoundingClientRect();\n\n this.cardPosition = {\n x: nativeEvent.clientX - rect.left,\n y: nativeEvent.clientY - rect.top,\n };\n\n this.openCard = true;\n this.cdr.markForCheck();\n\n this.chartEvent.emit({\n type: 'contextmenu',\n data: { ...zrEvent, isZrEvent: true },\n });\n }\n });\n } else if (eventName === 'click') {\n this.chartInstance.on('click', (params: any) => {\n this.chartEvent.emit({\n type: 'click',\n data: params,\n });\n });\n const zr = this.chartInstance.getZr();\n zr.on('click', (zrEvent: any) => {\n if (!zrEvent.target) {\n const nativeEvent = zrEvent.event;\n nativeEvent.preventDefault();\n this.chartEvent.emit({\n type: 'blur',\n data: { ...zrEvent, type: 'blur' },\n });\n }\n });\n } else {\n this.chartInstance.on(eventName, (params: any) => {\n this.chartEvent.emit({\n type: eventName,\n data: params,\n });\n });\n }\n });\n }\n\n onMenuClick(item: any) {\n this.contextMenuClick.emit(item);\n this.closeCard();\n }\n\n @HostListener('document:click')\n closeCard() {\n this.openCard = false;\n }\n\n /* ------------------ DESTROY ------------------ */\n\n ngOnDestroy(): void {\n if (this.chartInstance) {\n this.chartInstance.off();\n this.chartInstance.dispose();\n }\n }\n\n onLegendEvent(event: ChartLegendEvent): void {\n this.legendEvent.emit(event);\n this.chartEvent.emit({\n type: `legend:${event.type}`,\n data: event,\n });\n }\n\n private readLegendSelected(): Record<string, boolean> {\n const option = this.chartInstance?.getOption?.() as\n | { legend?: Array<{ selected?: Record<string, boolean> }> }\n | undefined;\n\n return { ...(option?.legend?.[0]?.selected ?? {}) };\n }\n}\n","<div\n class=\"line-chart-shell\"\n [class.line-chart-shell--legend-left]=\"config.customLegend?.position === 'left'\"\n [class.line-chart-shell--legend-right]=\"config.customLegend?.position === 'right'\"\n [class.line-chart-shell--legend-bottom]=\"config.customLegend?.position === 'bottom'\"\n>\n @if (\n !config.hideLegend &&\n config.customLegend?.position !== 'bottom' &&\n config.customLegend?.position !== 'right'\n ) {\n <lib-chart-legend\n class=\"line-chart-shell__legend\"\n [class.line-chart-shell__legend--custom-width]=\"hasSideLegendWidth\"\n [style.--line-chart-legend-max-width]=\"legendShellMaxWidth\"\n [chart]=\"chartInstance\"\n [series]=\"config.series\"\n [colors]=\"config.colors || deafultColors\"\n [config]=\"config.customLegend || {}\"\n (legendEvent)=\"onLegendEvent($event)\"\n ></lib-chart-legend>\n }\n\n <div\n echarts\n [options]=\"chartOption\"\n [theme]=\"theme\"\n (chartInit)=\"onChartInit($event)\"\n class=\"chart-container\"\n ></div>\n\n @if (\n !config.hideLegend &&\n (config.customLegend?.position === 'bottom' || config.customLegend?.position === 'right')\n ) {\n <lib-chart-legend\n class=\"line-chart-shell__legend\"\n [class.line-chart-shell__legend--custom-width]=\"hasSideLegendWidth\"\n [style.--line-chart-legend-max-width]=\"legendShellMaxWidth\"\n [chart]=\"chartInstance\"\n [series]=\"config.series\"\n [colors]=\"config.colors || deafultColors\"\n [config]=\"config.customLegend || {}\"\n (legendEvent)=\"onLegendEvent($event)\"\n ></lib-chart-legend>\n }\n</div>\n@if (openCard) {\n <lib-right-click-card\n [cardOptions]=\"contextMenuOptions\"\n (contextMenuClick)=\"onMenuClick($event)\"\n [cardPosition]=\"cardPosition\"\n ></lib-right-click-card>\n}\n","import {\n Component,\n Input,\n Output,\n EventEmitter,\n SimpleChanges,\n HostListener,\n ChangeDetectorRef,\n ChangeDetectionStrategy,\n} from '@angular/core';\n\nimport * as echarts from 'echarts/core';\nimport { ECharts, EChartsCoreOption } from 'echarts/core';\n\nimport { NgxEchartsDirective, provideEchartsCore } from 'ngx-echarts';\nimport { BarChart as EBarChart } from 'echarts/charts';\n\nimport {\n TitleComponent,\n TooltipComponent,\n GridComponent,\n LegendComponent,\n DatasetComponent,\n DataZoomComponent,\n ToolboxComponent,\n DataZoomInsideComponent,\n MarkAreaComponent,\n MarkLineComponent,\n} from 'echarts/components';\n\nimport { CanvasRenderer } from 'echarts/renderers';\nimport { RightClickCard } from '../right-click-card';\nimport { ChartLegendComponent } from '../chart-legend';\nimport type {\n ChartLegendAlign,\n ChartLegendConfig,\n ChartLegendEvent,\n ChartLegendPosition,\n} from '../chart-legend';\nimport { BarChartConfig } from '../../modal/charts-modal';\nimport { Charts } from '../../service/charts';\n\necharts.use([\n EBarChart,\n TitleComponent,\n TooltipComponent,\n GridComponent,\n LegendComponent,\n DatasetComponent,\n CanvasRenderer,\n DataZoomComponent,\n ToolboxComponent,\n DataZoomInsideComponent,\n DataZoomComponent,\n MarkAreaComponent,\n MarkLineComponent,\n]);\n\n@Component({\n selector: 'lib-bar-chart',\n imports: [NgxEchartsDirective, RightClickCard, ChartLegendComponent],\n providers: [provideEchartsCore({ echarts })],\n templateUrl: './bar-chart.html',\n styleUrl: './bar-chart.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class BarChart {\n @Input() config: BarChartConfig = { xAxisData: [], series: [] };\n @Input() theme: any;\n @Input() events: string[] = [];\n @Input() contextMenuOptions: any[] = [];\n @Input() showContextMenu: boolean = false;\n\n @Output() contextMenuClick = new EventEmitter<any>();\n\n @Output() chartEvent = new EventEmitter<{\n type: string;\n data: any;\n }>();\n @Output() legendEvent = new EventEmitter<ChartLegendEvent>();\n chartOption!: EChartsCoreOption;\n chartInstance!: ECharts;\n cardPosition = { x: 0, y: 0 };\n openCard = false;\n\n constructor(\n private chartService: Charts,\n private cdr: ChangeDetectorRef,\n ) {}\n get deafultColors() {\n return this.chartService.defaultColors;\n }\n /* ------------------ CONFIG CHANGE ------------------ */\n\n ngOnChanges(changes: SimpleChanges): void {\n if (!this.config) return;\n\n if (changes['theme'] && this.chartInstance) {\n this.chartInstance.dispose();\n }\n\n this.buildOption();\n }\n\n private previousConfig: any = {\n xAxisName: '',\n yAxisName: '',\n secondaryYAxisName: '',\n };\n ngDoCheck(): void {\n if (!this.chartInstance || !this.config) return;\n\n const updateOption: any = {};\n\n if (this.previousConfig.xAxisName !== this.config.xAxisName) {\n this.previousConfig.xAxisName = this.config.xAxisName;\n\n updateOption.xAxis = {\n name: this.config?.xAxisName || '',\n };\n }\n\n if (this.previousConfig.yAxisName !== this.config.yAxisName) {\n this.previousConfig.yAxisName = this.config.yAxisName;\n\n updateOption.yAxis = [\n {\n name: this.config?.yAxisName || '',\n },\n ];\n }\n\n if (this.previousConfig.secondaryYAxisName !== this.config.secondaryYAxisName) {\n this.previousConfig.secondaryYAxisName = this.config.secondaryYAxisName;\n\n updateOption.yAxis = [\n {\n name: this.config?.yAxisName || '',\n },\n {\n name: this.config?.secondaryYAxisName || '',\n },\n ];\n }\n\n if (Object.keys(updateOption).length) {\n this.chartInstance.setOption(updateOption);\n }\n }\n\n moveLeft() {\n this.moveZoom(-10);\n }\n\n moveRight() {\n this.moveZoom(10);\n }\n\n moveZoom(step: number) {\n const option: any = this.chartInstance.getOption();\n const zoom = option.dataZoom?.[0];\n if (!zoom) return;\n let start = zoom.start ?? 0;\n let end = zoom.end ?? 100;\n\n const windowSize = end - start;\n if ((step < 0 && start <= 0) || (step > 0 && end >= 100)) {\n return;\n }\n\n let newStart = start + step;\n let newEnd = end + step;\n\n if (newStart < 0) {\n newStart = 0;\n newEnd = windowSize;\n }\n\n if (newEnd > 100) {\n newEnd = 100;\n newStart = 100 - windowSize;\n }\n\n this.chartInstance.dispatchAction({\n type: 'dataZoom',\n start: newStart,\n end: newEnd,\n });\n }\n\n /* ------------------ OPTION BUILDER ------------------ */\n\n private buildOption() {\n const selected = this.readLegendSelected();\n const selectedMode = this.config?.customLegend?.selectionMode === 'exclusive' ? 'single' : true;\n\n // Common chart option\n this.chartOption = {\n backgroundColor: 'transparent',\n color: this.config?.colors || this.chartService.defaultColors,\n title: {\n show: this.config?.showTitle ?? !!this.config?.title,\n text: this.config?.title,\n left: this.config?.titlePosition || 'center',\n },\n\n tooltip: {\n show: this.config?.showTooltip,\n trigger: 'axis',\n backgroundColor: 'transparent', // remove default box\n borderWidth: 0,\n padding: 0,\n confine: true,\n formatter: (params: any) =>\n this.config.tooltipFormatter\n ? this.config.tooltipFormatter(params)\n : this.chartService.barLineTooltipFormatter(params),\n },\n legend: {\n show: false,\n data: (this.config?.series ?? []).map((series) => series.name),\n selected,\n selectedMode,\n },\n grid: {\n left: this.config.gridLeft ?? 0,\n right: this.config.gridRight ?? 0,\n bottom: this.config.gridBottom ?? 0,\n top: this.config.gridTop ?? this.chartService.calculateGridTopLineBar(this.config) ?? 0,\n },\n\n xAxis: {\n type: 'category',\n data: this.config?.xAxisData,\n axisLine: {\n show: this.config?.showXAxisLine ?? true,\n lineStyle: {\n color: '#C0C2C5',\n width: 1,\n },\n },\n axisTick: {\n show: false,\n },\n axisLabel: {\n show: this.config?.showXAxisLabel ?? true,\n color: '#434A51',\n fontSize: 12,\n },\n name: this.config?.xAxisName || '',\n nameLocation: 'center',\n nameTextStyle: {\n color: '#434A51',\n fontSize: 14,\n fontWeight: 400,\n },\n splitLine: {\n show: this.config?.showXAxisSplitLine ?? true,\n lineStyle: {\n type: 'dashed',\n color: '#C0C2C5',\n width: 1,\n },\n },\n ...(this.config?.xAxis || {}),\n },\n\n yAxis: [\n {\n type: 'value',\n axisLine: {\n show: this.config?.showYAxisLine ?? true,\n lineStyle: {\n color: '#C0C2C5',\n width: 1,\n },\n },\n axisTick: {\n show: false,\n },\n name: this.config?.yAxisName || '',\n nameLocation: 'center',\n nameTextStyle: {\n color: '#434A51',\n fontSize: 14,\n fontWeight: 400,\n },\n axisLabel: {\n show: this.config?.showYAxisLabel ?? true,\n color: '#434A51',\n fontSize: 12,\n formatter: (value: number) => {\n if (value === 0) {\n return '0';\n }\n\n const absValue = Math.abs(value);\n\n // Quadrillions\n if (absValue >= 1_000_000_000_000_000) {\n return `${+(value / 1_000_000_000_000_000).toFixed(1)}Q`;\n }\n\n // Trillions\n if (absValue >= 1_000_000_000_000) {\n return `${+(value / 1_000_000_000_000).toFixed(1)}T`;\n }\n\n // Billions\n if (absValue >= 1_000_000_000) {\n return `${+(value / 1_000_000_000).toFixed(1)}B`;\n }\n\n // Millions\n if (absValue >= 1_000_000) {\n return `${+(value / 1_000_000).toFixed(1)}M`;\n }\n\n // Thousands\n if (absValue >= 1_000) {\n return `${+(value / 1_000).toFixed(1)}K`;\n }\n\n // Decimal handling\n if (Number.isInteger(value)) {\n return value.toString();\n }\n\n return value;\n },\n },\n splitLine: {\n show: this.config?.showYAxisSplitLine ?? true,\n lineStyle: {\n type: 'dashed',\n color: '#C0C2C5',\n width: 1,\n },\n },\n ...(this.config?.yAxis || {}),\n },\n ...(this.config?.secondaryYAxis\n ? [\n {\n type: 'value',\n\n axisLine: {\n show: this.config?.showYAxisLine ?? true,\n lineStyle: {\n color: '#C0C2C5',\n width: 1,\n },\n },\n axisTick: {\n show: false,\n },\n axisLabel: {\n show: this.config?.showSecondaryYAxisLabel ?? true,\n color: '#434A51',\n fontSize: 12,\n formatter: (value: number) => {\n if (value === 0) {\n return '0';\n }\n\n const absValue = Math.abs(value);\n\n // Quadrillions\n if (absValue >= 1_000_000_000_000_000) {\n return `${+(value / 1_000_000_000_000_000).toFixed(1)}Q`;\n }\n\n // Trillions\n if (absValue >= 1_000_000_000_000) {\n return `${+(value / 1_000_000_000_000).toFixed(1)}T`;\n }\n\n // Billions\n if (absValue >= 1_000_000_000) {\n return `${+(value / 1_000_000_000).toFixed(1)}B`;\n }\n\n // Millions\n if (absValue >= 1_000_000) {\n return `${+(value / 1_000_000).toFixed(1)}M`;\n }\n\n // Thousands\n if (absValue >= 1_000) {\n return `${+(value / 1_000).toFixed(1)}K`;\n }\n\n // Decimal handling\n if (Number.isInteger(value)) {\n return value.toString();\n }\n\n return value;\n },\n },\n name: this.config?.secondaryYAxisName || '',\n nameLocation: 'center',\n nameTextStyle: {\n color: '#434A51',\n fontSize: 14,\n fontWeight: 400,\n },\n splitLine: {\n show: this.config?.showSecondaryYAxisSplitLine ?? true,\n lineStyle: {\n type: 'dashed',\n color: '#C0C2C5',\n width: 1,\n },\n },\n ...(this.config?.secondaryYAxisConfig || {}),\n },\n ]\n : []),\n ],\n\n series: (this.config?.series || [])?.map((s) => {\n return {\n type: 'bar',\n stack: this.config?.stacked ? 'total' : undefined,\n emphasis: {\n scale: false,\n },\n ...(this.config?.barWidth && { barWidth: this.config?.barWidth }),\n ...(this.config?.barMaxWidth && { barMaxWidth: this.config?.barMaxWidth }),\n ...s,\n label: {\n show: this.config?.showLabel ?? false,\n position: this.config?.labelPosition ?? 'top',\n ...(s['label'] ? s['label'] : {}),\n },\n itemStyle: {\n borderRadius: this.config?.borderRadius ?? 0,\n ...(s['itemStyle'] ? s['itemStyle'] : {}),\n },\n };\n }),\n\n ...(this.config?.showZoomSlider\n ? {\n dataZoom: [\n {\n type: 'slider',\n show: true,\n xAxisIndex: 0,\n bottom: 0,\n height: 8,\n ...(this.config.zoomStart && { start: this.config.zoomStart }),\n ...(this.config.zoomEnd && { end: this.config.zoomEnd }),\n // UI styling\n backgroundColor: '#F0F0F0',\n fillerColor: '#81858A',\n borderColor: 'transparent',\n borderRadius: 100,\n handleSize: 0,\n brushSelect: false,\n handleStyle: {\n color: '#F0F0F0',\n },\n textStyle: {\n color: 'transparent',\n },\n dataBackground: {\n lineStyle: {\n color: 'transparent',\n },\n areaStyle: {\n color: 'transparent',\n },\n },\n selectedDataBackground: {\n lineStyle: {\n color: 'transparent',\n },\n areaStyle: {\n color: 'transparent',\n },\n },\n\n moveHandleSize: 0,\n },\n {\n type: 'inside',\n xAxisIndex: 0,\n },\n ],\n }\n : {\n toolbox: {\n right: -1000,\n feature: {\n dataZoom: {},\n },\n },\n dataZoom: [\n {\n type: 'inside',\n disabled: true,\n },\n ],\n }),\n };\n }\n\n enableDataZoom(active: boolean) {\n if (!this.chartInstance) return;\n\n this.chartInstance.dispatchAction({\n type: 'takeGlobalCursor',\n key: 'dataZoomSelect',\n dataZoomSelectActive: active,\n });\n }\n\n resetZoom() {\n if (!this.chartInstance) return;\n this.enableDataZoom(false);\n this.chartInstance.dispatchAction({\n type: 'dataZoom',\n start: 0,\n end: 100,\n });\n }\n\n get hasSideLegendWidth(): boolean {\n return this.isSideLegend && !!this.config.customLegend?.maxWidth;\n }\n\n get legendShellMaxWidth(): string | null {\n return this.isSideLegend ? (this.config.customLegend?.maxWidth ?? null) : null;\n }\n\n private get isSideLegend(): boolean {\n return (\n this.config.customLegend?.position === 'left' ||\n this.config.customLegend?.position === 'right'\n );\n }\n\n onLegendEvent(event: ChartLegendEvent): void {\n this.legendEvent.emit(event);\n this.chartEvent.emit({\n type: `legend:${event.type}`,\n data: event,\n });\n }\n\n private readLegendSelected(): Record<string, boolean> {\n const option = this.chartInstance?.getOption?.() as\n | { legend?: Array<{ selected?: Record<string, boolean> }> }\n | undefined;\n\n return { ...(option?.legend?.[0]?.selected ?? {}) };\n }\n\n /* ------------------ INIT ------------------ */\n\n onChartInit(ec: ECharts) {\n this.chartInstance = ec;\n this.buildOption();\n this.bindEvents();\n }\n\n /* ------------------ EVENTS ------------------ */\n private bindEvents() {\n if (!this.chartInstance) return;\n this.chartInstance.off();\n\n // Existing chart events\n this.events.forEach((eventName) => {\n if (eventName === 'contextmenu') {\n this.chartInstance.on('contextmenu', (params: any) => {\n const event = params?.event?.event;\n if (event) {\n event.preventDefault();\n\n const container = this.chartInstance.getDom();\n const rect = container.getBoundingClientRect();\n\n this.cardPosition = {\n x: event.clientX - rect.left,\n y: event.clientY - rect.top,\n };\n\n this.openCard = true;\n\n this.cdr.markForCheck();\n }\n this.chartEvent.emit({\n type: 'contextmenu',\n data: params,\n });\n });\n const zr = this.chartInstance.getZr();\n zr.on('contextmenu', (zrEvent: any) => {\n if (!zrEvent.target) {\n const nativeEvent = zrEvent.event;\n\n nativeEvent.preventDefault();\n\n const container = this.chartInstance.getDom();\n const rect = container.getBoundingClientRect();\n\n this.cardPosition = {\n x: nativeEvent.clientX - rect.left,\n y: nativeEvent.clientY - rect.top,\n };\n\n this.openCard = true;\n this.cdr.markForCheck();\n\n this.chartEvent.emit({\n type: 'contextmenu',\n data: { ...zrEvent, isZrEvent: true },\n });\n }\n });\n } else if (eventName === 'click') {\n this.chartInstance.on('click', (params: any) => {\n this.chartEvent.emit({\n type: 'click',\n data: params,\n });\n });\n const zr = this.chartInstance.getZr();\n zr.on('click', (zrEvent: any) => {\n if (!zrEvent.target) {\n const nativeEvent = zrEvent.event;\n nativeEvent.preventDefault();\n this.chartEvent.emit({\n type: 'blur',\n data: { ...zrEvent, type: 'blur' },\n });\n }\n });\n } else {\n this.chartInstance.on(eventName, (params: any) => {\n this.chartEvent.emit({\n type: eventName,\n data: params,\n });\n });\n }\n });\n }\n\n /* ------------------ CONTEXT MENU ------------------ */\n\n onMenuClick(item: any) {\n this.contextMenuClick.emit(item);\n this.closeCard();\n }\n\n @HostListener('document:click')\n closeCard() {\n this.openCard = false;\n }\n\n /* ------------------ DESTROY ------------------ */\n\n ngOnDestroy(): void {\n if (this.chartInstance) {\n this.chartInstance.off();\n this.chartInstance.dispose();\n }\n }\n}\n","<div\n class=\"bar-chart-shell\"\n [class.bar-chart-shell--legend-left]=\"config.customLegend?.position === 'left'\"\n [class.bar-chart-shell--legend-right]=\"config.customLegend?.position === 'right'\"\n [class.bar-chart-shell--legend-bottom]=\"config.customLegend?.position === 'bottom'\"\n>\n @if (\n !config.hideLegend &&\n config.customLegend?.position !== 'bottom' &&\n config.customLegend?.position !== 'right'\n ) {\n <lib-chart-legend\n class=\"bar-chart-shell__legend\"\n [class.line-chart-shell__legend--custom-width]=\"hasSideLegendWidth\"\n [style.--line-chart-legend-max-width]=\"legendShellMaxWidth\"\n [chart]=\"chartInstance\"\n [series]=\"config.series\"\n [colors]=\"config.colors || deafultColors\"\n [config]=\"config.customLegend || {}\"\n (legendEvent)=\"onLegendEvent($event)\"\n ></lib-chart-legend>\n }\n\n <div\n echarts\n [options]=\"chartOption\"\n [theme]=\"theme\"\n (chartInit)=\"onChartInit($event)\"\n class=\"chart-container\"\n ></div>\n\n @if (\n !config.hideLegend &&\n (config.customLegend?.position === 'bottom' || config.customLegend?.position === 'right')\n ) {\n <lib-chart-legend\n class=\"bar-chart-shell__legend\"\n [class.line-chart-shell__legend--custom-width]=\"hasSideLegendWidth\"\n [style.--line-chart-legend-max-width]=\"legendShellMaxWidth\"\n [chart]=\"chartInstance\"\n [series]=\"config.series\"\n [colors]=\"config.colors || deafultColors\"\n [config]=\"config.customLegend || {}\"\n (legendEvent)=\"onLegendEvent($event)\"\n ></lib-chart-legend>\n }\n</div>\n@if (config.showZoomSlider) {\n <div class=\"zoom-controls\" [style]=\"config.zoomControlButtonStyle\">\n <button (click)=\"moveLeft()\"><img src=\"images/leftArrow.svg\" alt=\">\" /></button>\n <button (click)=\"moveRight()\"><img src=\"images/rightArrow.svg\" alt=\"<\" /></button>\n </div>\n}\n@if (openCard) {\n <lib-right-click-card\n [cardOptions]=\"contextMenuOptions\"\n (contextMenuClick)=\"onMenuClick($event)\"\n [cardPosition]=\"cardPosition\"\n ></lib-right-click-card>\n}\n","import {\n Component,\n Input,\n Output,\n EventEmitter,\n SimpleChanges,\n HostListener,\n ChangeDetectorRef,\n ChangeDetectionStrategy,\n} from '@angular/core';\n\nimport * as echarts from 'echarts/core';\nimport { ECharts, EChartsCoreOption } from 'echarts/core';\nimport { NgxEchartsDirective, provideEchartsCore } from 'ngx-echarts';\nimport { PieChart as EPieChart } from 'echarts/charts';\nimport { TitleComponent, TooltipComponent, LegendComponent } from 'echarts/components';\nimport { CanvasRenderer } from 'echarts/renderers';\nimport { RightClickCard } from '../right-click-card';\nimport { PieChartConfig } from '../../modal/charts-modal';\nimport { Charts } from '../../service/charts';\n\necharts.use([EPieChart, TitleComponent, TooltipComponent, LegendComponent, CanvasRenderer]);\n@Component({\n selector: 'lib-pie-chart',\n imports: [NgxEchartsDirective, RightClickCard],\n providers: [provideEchartsCore({ echarts })],\n templateUrl: './pie-chart.html',\n styleUrl: './pie-chart.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class PieChart {\n /* -------------------- Inputs -------------------- */\n\n @Input() config!: PieChartConfig;\n @Input() theme: any;\n @Input() events: string[] = [];\n @Input() cardOptions: any[] = [];\n\n /* -------------------- Outputs -------------------- */\n\n @Output() chartEvent = new EventEmitter<{ type: string; data: any }>();\n @Output() cardOptionClick = new EventEmitter<any>();\n\n /* -------------------- Local State -------------------- */\n\n chartOption!: EChartsCoreOption;\n private chartInstance!: ECharts;\n\n openCard = false;\n cardPosition = { x: 0, y: 0 };\n\n constructor(\n private chartService: Charts,\n private cdr: ChangeDetectorRef,\n ) {}\n\n /* -------------------- Lifecycle -------------------- */\n\n ngOnChanges(changes: SimpleChanges): void {\n if (!this.config) return;\n\n // If theme changes → dispose instance\n if (changes['theme'] && this.chartInstance) {\n this.chartInstance.dispose();\n }\n\n this.buildOption();\n }\n\n ngOnDestroy(): void {\n if (this.chartInstance) {\n this.chartInstance.off();\n this.chartInstance?.dispose();\n }\n }\n\n /* -------------------- Chart Init -------------------- */\n\n onChartInit(ec: ECharts) {\n this.chartInstance = ec;\n this.buildOption();\n this.bindEvents();\n }\n\n /* -------------------- Build Option -------------------- */\n\n private buildOption(): void {\n const total = this.config.data?.reduce((sum, item) => sum + item.value, 0);\n\n this.chartOption = {\n backgroundColor: this.config?.backgroundColor ?? 'transparent',\n\n title: {\n show: this.config.showTitle ?? !!this.config.title,\n text: this.config.title,\n left: this.config.titlePosition ?? 'center',\n },\n\n tooltip: {\n show: this.config.showTooltip ?? true,\n trigger: 'item',\n backgroundColor: 'transparent', // remove default box\n borderWidth: 0,\n padding: 0,\n confine: true,\n formatter: (params: any) =>\n this.config.tooltipFormatter\n ? this.config.tooltipFormatter(params, this.config)\n : this.chartService.pieTooltipFormatter(params, this.config),\n },\n\n legend: { show: false },\n\n graphic:\n this.chartInstance && !this.config.hideLegend\n ? this.chartService.buildGraphicLegend(total, this.config, this.chartInstance)\n : undefined,\n\n series: [\n {\n type: 'pie',\n top: this.config.top ?? 0,\n bottom: this.config.bottom ?? 0,\n radius: this.config.radius ?? '60%',\n center: this.config.center ?? ['50%', '50%'],\n data: this.config?.data || [],\n color: this.config.colors,\n\n label: {\n show: this.config.showLabel ?? false,\n position: this.config.labelPosition ?? 'outside',\n formatter: (params: any) => {\n const percent = ((params.value / total) * 100).toFixed(1);\n\n let text = params.name;\n if (this.config.showLabelValue) text += `\\n${params.value}`;\n if (this.config.showLabelPercentage) text += `\\n${percent}%`;\n\n return text;\n },\n },\n\n itemStyle: {\n borderRadius: this.config.borderRadius ?? 0,\n borderColor: this.config.borderColor ?? '#fff',\n borderWidth: this.config.borderWidth ?? 0,\n },\n\n emphasis:\n (this.config.enableHoverEffect ?? true)\n ? {\n itemStyle: {\n shadowBlur: 10,\n shadowOffsetX: 0,\n },\n }\n : undefined,\n },\n ],\n };\n }\n\n /* -------------------- Events -------------------- */\n\n private bindEvents(): void {\n if (!this.chartInstance) return;\n\n this.chartInstance.off();\n\n this.events.forEach((eventName) => {\n this.chartInstance.on(eventName, (params: any) => {\n if (eventName === 'contextmenu') {\n params.event?.event?.preventDefault();\n const container = this.chartInstance.getDom();\n const rect = container.getBoundingClientRect();\n\n this.cardPosition = {\n x: params.event.event.clientX - rect.left,\n y: params.event.event.clientY - rect.top,\n };\n\n this.openCard = true;\n this.cdr.markForCheck();\n }\n\n this.chartEvent.emit({ type: eventName, data: params });\n });\n });\n }\n\n onMenuClick(item: any) {\n this.cardOptionClick.emit(item);\n this.closeCard();\n }\n\n @HostListener('document:click')\n closeCard() {\n this.openCard = false;\n }\n}\n","<div\n echarts\n [options]=\"chartOption\"\n [theme]=\"theme\"\n class=\"chart-container\"\n (chartInit)=\"onChartInit($event)\"\n></div>\n\n@if (openCard) {\n <lib-right-click-card\n [cardOptions]=\"cardOptions\"\n [cardPosition]=\"cardPosition\"\n (contextMenuClick)=\"onMenuClick($event)\"\n >\n </lib-right-click-card>\n}\n","import {\n Component,\n Input,\n Output,\n EventEmitter,\n SimpleChanges,\n HostListener,\n ChangeDetectorRef,\n ChangeDetectionStrategy,\n} from '@angular/core';\nimport * as echarts from 'echarts/core';\nimport { ECharts, EChartsCoreOption } from 'echarts/core';\nimport { NgxEchartsDirective, provideEchartsCore } from 'ngx-echarts';\nimport { PieChart as EPieChart } from 'echarts/charts';\nimport { TitleComponent, TooltipComponent, LegendComponent } from 'echarts/components';\nimport { CanvasRenderer } from 'echarts/renderers';\nimport { RightClickCard } from '../right-click-card';\nimport { ChartLegendComponent } from '../chart-legend';\nimport type { ChartLegendEvent } from '../chart-legend';\nimport { DoughnutChartConfig } from '../../modal/charts-modal';\nimport { Charts } from '../../service/charts';\n\necharts.use([EPieChart, TitleComponent, TooltipComponent, LegendComponent, CanvasRenderer]);\n\n@Component({\n selector: 'lib-doughnut-chart',\n imports: [NgxEchartsDirective, RightClickCard, ChartLegendComponent],\n providers: [provideEchartsCore({ echarts })],\n templateUrl: './doughnut-chart.html',\n styleUrl: './doughnut-chart.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class DoughnutChart {\n @Input() config!: DoughnutChartConfig;\n @Input() theme: any;\n @Input() events: string[] = [];\n @Input() contextMenuOptions: any[] = [];\n @Input() showContextMenu: boolean = false;\n\n @Output() contextMenuClick = new EventEmitter<any>();\n @Output() chartEvent = new EventEmitter<{\n type: string;\n data: any;\n }>();\n @Output() legendEvent = new EventEmitter<ChartLegendEvent>();\n cardPosition = { x: 0, y: 0 };\n openCard: boolean = false;\n chartOption!: EChartsCoreOption;\n chartInstance!: ECharts;\n constructor(\n private chartService: Charts,\n private cdr: ChangeDetectorRef,\n ) {}\n\n get deafultColors() {\n return this.chartService.defaultColors;\n }\n /* ------------------ CONFIG CHANGE ------------------ */\n ngOnChanges(changes: SimpleChanges): void {\n if (!this.config) return;\n // If theme changes → dispose instance\n if (changes['theme'] && this.chartInstance) {\n this.chartInstance.dispose();\n }\n // Rebuild option when config changes\n this.buildOption();\n }\n // card open on right click\n /**\n * @description Determines whether menu click on\n * @author Shiva Kant\n * @param item\n */\n onMenuClick(item: any) {\n this.contextMenuClick.emit(item);\n\n this.closeCard();\n }\n\n /**\n * @description Hosts listener\n * @author Shiva Kant\n */\n @HostListener('document:click')\n closeCard() {\n this.openCard = false;\n }\n /* ------------------ OPTION BUILDER ------------------ */\n /**\n * @description Builds option\n * @author Shiva Kant\n * @param config\n * @returns option\n */\n buildOption() {\n const selected = this.readLegendSelected();\n const selectedMode = this.config?.customLegend?.selectionMode === 'exclusive' ? 'single' : true;\n\n const total = this.config?.data?.reduce((sum, item) => sum + item.value, 0);\n const seriesData = (this.config?.data || [])?.map((d) => ({\n ...d,\n ...(!d.value && {\n itemStyle: {\n color: total === 0 ? '#d3d3d3' : undefined,\n borderWidth: total == 0 ? (this.config.borderWidth ?? 2) : 0,\n },\n }), // grey\n }));\n\n const innerRadius = this.config.innerRadius ?? '70%';\n const outerRadius = this.config.outerRadius ?? '90%';\n\n this.chartOption = {\n backgroundColor: this.config?.backgroundColor || 'transparent',\n color: this.config.colors ?? this.chartService.defaultColors,\n title: {\n show: this.config.showTitle ?? !!this.config.title,\n text: this.config.title,\n left: this.config.titlePosition || 'center',\n },\n tooltip: {\n show: this.config.showTooltip ?? true,\n trigger: 'item',\n backgroundColor: 'transparent', // remove default box\n borderWidth: 0,\n padding: 0,\n confine: true,\n formatter: (params: any) =>\n this.config.tooltipFormatter\n ? this.config.tooltipFormatter(params, this.config)\n : this.chartService.pieTooltipFormatter(params, this.config),\n ...this.config.tooltip,\n },\n\n legend: {\n show: false,\n data: (this.config?.data ?? []).map((series) => series.name),\n selected,\n selectedMode,\n },\n\n series: this.config.series?.length\n ? this.config.series.map((s) => {\n return { type: 'pie', ...s };\n })\n : [\n {\n type: 'pie',\n top: this.config.top ?? 0,\n bottom: this.config.bottom ?? 0,\n radius: [innerRadius, outerRadius],\n center: this.config.center ?? ['50%', '50%'],\n data: seriesData,\n\n // label: {\n // show: this.config.showLabel ?? false,\n // position: this.config.labelPosition ?? 'outside',\n // },\n\n label: {\n show: this.config?.centerLabel?.show ?? false,\n position: 'center',\n formatter: (value: any) => {\n if (this.config?.centerLabel?.formatter) {\n return this.config.centerLabel.formatter(value, total, this.config.data);\n }\n const title = this.config?.centerLabel?.title || '';\n const centerValue = this.config?.centerLabel?.value;\n return `{title|${title}}${\n centerValue !== undefined && centerValue !== null && centerValue !== ''\n ? `\\n{desc|${centerValue}}`\n : ''\n }`;\n },\n rich: {\n title: {\n fontSize: this.config?.centerLabel?.fontSizeTitle || 12,\n fontWeight: this.config?.centerLabel?.fontWeightTitle || 400,\n color: this.config?.centerLabel?.titleColor || '#111827',\n lineHeight: this.config?.centerLabel?.titleLineheight || 20,\n },\n\n desc: {\n fontSize: this.config?.centerLabel?.fontSizeValue || 12,\n fontWeight: this.config?.centerLabel?.fontWeightValue || 600,\n color: this.config?.centerLabel?.valueColor || '#6B7280',\n lineHeight: this.config?.centerLabel?.valueLineheight || 20,\n },\n },\n ...(this.config?.label || {}),\n },\n\n itemStyle: {\n borderRadius: this.config.borderRadius ?? 8,\n borderColor: this.config.borderColor || '#fff',\n borderWidth: this.config.borderWidth ?? 2,\n },\n emphasis: {\n scale: this.config.emphasisScale,\n },\n },\n ],\n };\n }\n\n get hasSideLegendWidth(): boolean {\n return this.isSideLegend && !!this.config.customLegend?.maxWidth;\n }\n\n get legendShellMaxWidth(): string | null {\n return this.isSideLegend ? (this.config.customLegend?.maxWidth ?? null) : null;\n }\n\n private get isSideLegend(): boolean {\n return (\n this.config.customLegend?.position === 'left' ||\n this.config.customLegend?.position === 'right'\n );\n }\n\n onLegendEvent(event: ChartLegendEvent): void {\n this.legendEvent.emit(event);\n this.chartEvent.emit({\n type: `legend:${event.type}`,\n data: event,\n });\n }\n\n private readLegendSelected(): Record<string, boolean> {\n const option = this.chartInstance?.getOption?.() as\n | { legend?: Array<{ selected?: Record<string, boolean> }> }\n | undefined;\n\n return { ...(option?.legend?.[0]?.selected ?? {}) };\n }\n\n /* ------------------ INIT ------------------ */\n /**\n * @description Determines whether chart init on\n * @author Shiva Kant\n * @param ec\n * @param [container]\n */\n onChartInit(ec: ECharts) {\n this.chartInstance = ec;\n this.buildOption();\n this.bindEvents();\n }\n @HostListener('window:resize')\n onResize() {\n this.chartInstance?.resize();\n }\n /* ------------------ EVENTS ------------------ */\n /**\n * @description Binds events\n * @author Shiva Kant\n * @returns\n */\n private bindEvents() {\n if (!this.chartInstance) return;\n this.chartInstance.off();\n\n // Existing chart events\n this.events.forEach((eventName) => {\n if (eventName === 'contextmenu') {\n this.chartInstance.on('contextmenu', (params: any) => {\n const event = params?.event?.event;\n if (event) {\n event.preventDefault();\n\n const container = this.chartInstance.getDom();\n const rect = container.getBoundingClientRect();\n\n this.cardPosition = {\n x: event.clientX - rect.left,\n y: event.clientY - rect.top,\n };\n\n this.openCard = true;\n\n this.cdr.markForCheck();\n }\n this.chartEvent.emit({\n type: 'contextmenu',\n data: params,\n });\n });\n const zr = this.chartInstance.getZr();\n zr.on('contextmenu', (zrEvent: any) => {\n if (!zrEvent.target) {\n const nativeEvent = zrEvent.event;\n\n nativeEvent.preventDefault();\n\n const container = this.chartInstance.getDom();\n const rect = container.getBoundingClientRect();\n\n this.cardPosition = {\n x: nativeEvent.clientX - rect.left,\n y: nativeEvent.clientY - rect.top,\n };\n\n this.openCard = true;\n this.cdr.markForCheck();\n\n this.chartEvent.emit({\n type: 'contextmenu',\n data: { ...zrEvent, isZrEvent: true },\n });\n }\n });\n } else if (eventName === 'click') {\n this.chartInstance.on('click', (params: any) => {\n this.chartEvent.emit({\n type: 'click',\n data: params,\n });\n });\n const zr = this.chartInstance.getZr();\n zr.on('click', (zrEvent: any) => {\n if (!zrEvent.target) {\n const nativeEvent = zrEvent.event;\n nativeEvent.preventDefault();\n this.chartEvent.emit({\n type: 'blur',\n data: { ...zrEvent, type: 'blur' },\n });\n }\n });\n } else {\n this.chartInstance.on(eventName, (params: any) => {\n this.chartEvent.emit({\n type: eventName,\n data: params,\n });\n });\n }\n });\n }\n\n /* ------------------ DESTROY ------------------ */\n ngOnDestroy(): void {\n if (this.chartInstance) {\n this.chartInstance.off();\n this.chartInstance?.dispose();\n }\n }\n}\n","<div\n class=\"doughnut-chart-shell\"\n [class.doughnut-chart-shell--legend-left]=\"config.customLegend?.position === 'left'\"\n [class.doughnut-chart-shell--legend-right]=\"config.customLegend?.position === 'right'\"\n [class.doughnut-chart-shell--legend-bottom]=\"config.customLegend?.position === 'bottom'\"\n>\n @if (\n !config.hideLegend &&\n config.customLegend?.position !== 'bottom' &&\n config.customLegend?.position !== 'right'\n ) {\n <lib-chart-legend\n class=\"doughnut-chart-shell__legend\"\n [class.doughnut-chart-shell__legend--custom-width]=\"hasSideLegendWidth\"\n [style.--doughnut-chart-legend-max-width]=\"legendShellMaxWidth\"\n [chart]=\"chartInstance\"\n [series]=\"config.data || []\"\n [colors]=\"config.colors || deafultColors\"\n [config]=\"config.customLegend || {}\"\n (legendEvent)=\"onLegendEvent($event)\"\n ></lib-chart-legend>\n }\n\n <div\n echarts\n [options]=\"chartOption\"\n [theme]=\"theme\"\n class=\"chart-container\"\n (chartInit)=\"onChartInit($event)\"\n ></div>\n\n @if (\n !config.hideLegend &&\n (config.customLegend?.position === 'bottom' || config.customLegend?.position === 'right')\n ) {\n <lib-chart-legend\n class=\"doughnut-chart-shell__legend\"\n [class.doughnut-chart-shell__legend--custom-width]=\"hasSideLegendWidth\"\n [style.--doughnut-chart-legend-max-width]=\"legendShellMaxWidth\"\n [chart]=\"chartInstance\"\n [series]=\"config.data\"\n [colors]=\"config.colors || deafultColors\"\n [config]=\"config.customLegend || {}\"\n (legendEvent)=\"onLegendEvent($event)\"\n ></lib-chart-legend>\n }\n</div>\n@if (openCard) {\n <lib-right-click-card\n [cardOptions]=\"contextMenuOptions\"\n (contextMenuClick)=\"onMenuClick($event)\"\n [cardPosition]=\"cardPosition\"\n ></lib-right-click-card>\n}\n","import { Component, Input } from '@angular/core';\nimport * as echarts from 'echarts/core';\nimport { LineChart } from 'echarts/charts';\nimport { GridComponent, TooltipComponent, LegendComponent } from 'echarts/components';\nimport { CanvasRenderer } from 'echarts/renderers';\nimport { EChartsCoreOption } from 'echarts/core';\nimport { SimpleChanges } from '@angular/core';\nimport { NgxEchartsDirective, provideEchartsCore } from 'ngx-echarts';\necharts.use([LineChart, GridComponent, TooltipComponent, LegendComponent, CanvasRenderer]);\n@Component({\n selector: 'lib-stacked-area-chart',\n imports: [NgxEchartsDirective],\n providers: [provideEchartsCore({ echarts })],\n templateUrl: './stacked-area-chart.html',\n styleUrl: './stacked-area-chart.scss',\n})\nexport class StackedAreaChart {\n @Input() data: any;\n @Input() title: string = 'Protocol Traffic Overview';\n\n chartOption!: EChartsCoreOption;\n\n ngOnChanges(changes: SimpleChanges): void {\n if (changes['data']) {\n this.buildChart();\n }\n }\n\n buildChart() {\n this.chartOption = {\n tooltip: {\n trigger: 'axis',\n },\n legend: {\n data: this.data.series.map((s: any) => s.name),\n top: 10,\n },\n grid: {\n left: '3%',\n right: '4%',\n bottom: '3%',\n containLabel: true,\n },\n xAxis: {\n type: 'category',\n boundaryGap: false,\n data: this.data.time,\n },\n yAxis: {\n type: 'value',\n },\n series: this.data.series.map((s: any) => ({\n name: s.name,\n type: s.type??'line',\n smooth: true,\n data: s.values,\n areaStyle: {\n opacity: 0.15,\n },\n })),\n };\n }\n}\n","<div\n echarts\n class=\"chart-container\"\n [options]=\"chartOption\"\n ></div>","import {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n EventEmitter,\n HostListener,\n Input,\n OnChanges,\n OnDestroy,\n Output,\n SimpleChanges,\n} from '@angular/core';\n\nimport * as echarts from 'echarts/core';\nimport { ECharts, EChartsCoreOption } from 'echarts/core';\nimport { NgxEchartsDirective, provideEchartsCore } from 'ngx-echarts';\n\nimport { CustomChart } from 'echarts/charts';\nimport { GridComponent, TooltipComponent, LegendComponent } from 'echarts/components';\n\nimport { CanvasRenderer } from 'echarts/renderers';\nimport { CustomChartConfig, TimelineTrack, ShiftItem } from '../../modal/charts-modal';\nimport { Charts } from '../../service/charts';\nimport { RightClickCard } from '../right-click-card';\n\necharts.use([CustomChart, GridComponent, TooltipComponent, LegendComponent, CanvasRenderer]);\n@Component({\n selector: 'lib-custom-chart',\n imports: [NgxEchartsDirective, RightClickCard],\n templateUrl: './custom-chart.html',\n styleUrl: './custom-chart.scss',\n providers: [provideEchartsCore({ echarts })],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class CustomChartComponent implements OnChanges, OnDestroy {\n @Input() config!: CustomChartConfig;\n @Input() theme: any;\n @Input() events: string[] = [];\n @Input() contextMenuOptions: any[] = [];\n\n @Output() contextMenuClick = new EventEmitter<any>();\n @Output() chartEvent = new EventEmitter<{\n type: string;\n data: any;\n }>();\n cardPosition = { x: 0, y: 0 };\n openCard: boolean = false;\n\n chartOption!: EChartsCoreOption;\n filteredConetxtMenuOptions: any[] = [];\n\n private chartInstance!: ECharts;\n constructor(\n private chartService: Charts,\n private cdr: ChangeDetectorRef,\n ) {}\n\n onChartInit(ec: ECharts) {\n this.chartInstance = ec;\n this.buildOption();\n this.bindEvents();\n }\n\n ngOnChanges(changes: SimpleChanges): void {\n if (!this.config) return;\n\n if (changes['theme'] && this.chartInstance) {\n this.chartInstance.dispose();\n }\n\n this.buildOption();\n }\n\n onMenuClick(item: any) {\n this.contextMenuClick.emit(item);\n\n this.closeCard();\n }\n @HostListener('document:click')\n closeCard() {\n this.openCard = false;\n }\n\n private bindEvents() {\n if (!this.chartInstance) return;\n\n this.chartInstance.off();\n\n /* ---- existing chart events ---- */\n this.events.forEach((eventName) => {\n if (eventName === 'contextmenu') {\n /* ---- RIGHT CLICK ANYWHERE IN GRID ---- */\n\n const zr = this.chartInstance.getZr();\n\n zr.off('contextmenu');\n\n zr.on('contextmenu', (event: any) => {\n event.event.preventDefault();\n\n this.filteredConetxtMenuOptions = this.contextMenuOptions.filter(\n (opt) => (opt.showOnTarget && event.target?.type === 'rect') || !opt.showOnTarget,\n );\n\n const point = [event.offsetX, event.offsetY];\n\n // check if click is inside grid\n if (!this.chartInstance.containPixel({ gridIndex: 0 }, point)) return;\n\n const container = this.chartInstance.getDom();\n const rect = container.getBoundingClientRect();\n\n this.cardPosition = {\n x: event.event.clientX - rect.left,\n y: event.event.clientY - rect.top,\n };\n\n this.openCard = true;\n\n this.cdr.markForCheck();\n\n this.chartEvent.emit({\n type: 'contextmenu',\n data: event,\n });\n });\n } else {\n this.chartInstance.on(eventName, (params: any) => {\n this.chartEvent.emit({\n type: eventName,\n data: params,\n });\n });\n }\n });\n }\n\n // private convertTimeToNumber(time: string): number {\n // const [h, m] = time.split(':').map(Number);\n // return h + m / 60;\n // }\n\n private convertTimeToNumber(time: string): number {\n if (!time) return 0;\n const trimmed = time.trim().toLowerCase();\n const ampmMatch = trimmed.match(/^(\\d{1,2}):(\\d{2})\\s?(am|pm)$/);\n if (ampmMatch) {\n let hours = Number(ampmMatch[1]);\n const minutes = Number(ampmMatch[2]);\n const period = ampmMatch[3];\n\n if (period === 'pm' && hours !== 12) {\n hours += 12;\n }\n if (period === 'am' && hours === 12) {\n hours = 0;\n }\n return hours + minutes / 60;\n }\n\n const match24 = trimmed.match(/^(\\d{1,2}):(\\d{2})$/);\n\n if (match24) {\n const hours = Number(match24[1]);\n const minutes = Number(match24[2]);\n\n return hours + minutes / 60;\n }\n\n return 0;\n }\n\n private is12HourFormat(time?: string): boolean {\n if (!time) return false;\n return /am|pm/i.test(time);\n }\n\n private formatHourLabel(val: number, is12Hour: boolean): string {\n const hour = Math.floor(val);\n if (!is12Hour) {\n return `${hour.toString().padStart(2, '0')}:00`;\n }\n let h = hour;\n const suffix = h >= 12 ? 'PM' : 'AM';\n if (h === 0) h = 12;\n else if (h > 12) h -= 12;\n return `${h}:00 ${suffix}`;\n }\n\n private renderBlock =\n (catIndex: number, isShift = false) =>\n (params: any, api: any) => {\n const categoryIndex = this.config.chartMode === 'weekly' ? catIndex : api.value(0);\n\n const start = api.coord([api.value(1), categoryIndex]);\n const end = api.coord([api.value(2), categoryIndex]);\n const baseHeight = api.size([0, 1])[1];\n\n const height =\n baseHeight * (isShift ? (this.config.shiftHeight ?? 1) : (this.config.barHeight ?? 0.6));\n\n return {\n type: 'rect',\n shape: {\n x: start[0],\n y: start[1] - height / 2,\n width: end[0] - start[0],\n height: height,\n },\n style: api.style(),\n emphasis: {\n style: {\n stroke: '#434A51',\n lineWidth: 1,\n\n shadowBlur: 12,\n shadowColor: '#0A0D124D',\n shadowOffsetX: 4,\n shadowOffsetY: 4,\n },\n },\n };\n };\n\n private buildLegend() {\n const groups = Object.keys(this.config.legends);\n\n const legends: any[] = [];\n let topOffset = 0;\n\n groups.forEach((group) => {\n const items = this.config.legends[group];\n\n if (!items || !items.length) return;\n const names = [\n ...(this.config.hideLegendCategory\n ? []\n : [{ name: group, icon: 'none', itemStyle: { opacity: 0 } }]),\n ...items.map((i: any) => ({\n name: i.name,\n itemStyle: { color: i.color },\n })),\n ];\n\n legends.push({\n top: topOffset,\n left: 0,\n orient: 'horizontal',\n icon: 'roundRect',\n itemGap: 16,\n itemWidth: 12,\n itemHeight: 12,\n data: names,\n\n formatter: (name: string) => {\n if (name === group) {\n return `{title|${name}:}`;\n }\n return name;\n },\n\n textStyle: {\n fontSize: 14,\n rich: {\n title: {\n fontWeight: 'bold',\n padding: [0, 6, 0, -12],\n },\n },\n },\n });\n\n topOffset += 30;\n });\n return legends;\n }\n\n private buildMarkLines(): any {\n const logs = this.config.data?.[0]?.office_entry_logs;\n if (!logs?.length) return undefined;\n\n return {\n silent: true,\n symbol: 'none',\n data: logs.map((log) => ({\n xAxis: this.convertTimeToNumber(log.time),\n label: { formatter: '' },\n lineStyle: {\n color: '#5A5F66',\n type: log.type === 'OUT' ? ([8, 6] as any) : 'solid',\n width: 1,\n },\n })),\n };\n }\n\n private buildOption() {\n if (!this.config?.categories || !this.config?.data) return;\n\n const series: any[] = [];\n\n const categories = this.config.categories;\n\n /* ---------------- SHIFT DATA ---------------- */\n\n if (\n this.config.chartMode === 'daily' &&\n this.config.data?.length &&\n this.config.data[0]?.shifts?.items?.length\n ) {\n this.config.categories.forEach((cat, index) => {\n const shiftData: any[] = [];\n (this.config.data[0]?.shifts?.items || []).forEach((s: ShiftItem) => {\n shiftData.push({\n value: [index, this.convertTimeToNumber(s.start), this.convertTimeToNumber(s.end)],\n itemStyle: {\n color: this.config.shiftColor ?? '#F0F0F0',\n },\n });\n });\n if (shiftData.length) {\n series.push({\n name: this.config.data[0]?.shifts?.name || 'Shift',\n type: 'custom',\n renderItem: this.renderBlock(index, true),\n silent: true,\n z: 0,\n encode: { x: [1, 2], y: 0 },\n data: shiftData,\n });\n }\n });\n }\n\n /* -------- ACTIVITY LINE -------- */\n\n if (\n this.config.chartMode === 'daily' &&\n this.config.data?.length &&\n this.config.data[0]?.activity?.length\n ) {\n this.config.data[0].activity.forEach((act, index) => {\n const activityData: any[] = [];\n const categoryIndex = this.config.categories.indexOf(act.category);\n\n const activityTrack = this.config.legends[act.category]?.find(\n (leg) => leg.name === act.name,\n );\n let trackColor = '#C8DFF9';\n if (activityTrack) {\n trackColor = activityTrack?.color || '#C8DFF9';\n }\n if (categoryIndex === -1) return;\n\n act.items.forEach((p: any, i: number) => {\n const y =\n categoryIndex +\n p.value * (this.config.barHeight ?? 0.6) +\n (1 - (this.config.barHeight ?? 0.6)) / 2;\n\n activityData.push([this.convertTimeToNumber(p.time), y]);\n });\n if (activityData.length) {\n series.push({\n name: act.name,\n type: 'line',\n symbol: 'none',\n yAxisIndex: 1,\n z: 3,\n lineStyle: {\n width: 1,\n color: trackColor,\n },\n\n data: activityData,\n });\n }\n });\n }\n\n /* ---------------- TRACK SERIES ---------------- */\n this.config.data.forEach((data, index) => {\n if (this.config.chartMode === 'weekly' && data.shifts && data.shifts.items.length) {\n const shiftData: any[] = [];\n\n (data.shifts.items || []).forEach((s: ShiftItem) => {\n shiftData.push({\n value: [index, this.convertTimeToNumber(s.start), this.convertTimeToNumber(s.end)],\n itemStyle: {\n color: this.config.shiftColor ?? '#F0F0F0',\n },\n });\n });\n if (shiftData.length) {\n series.push({\n name: 'Shift',\n type: 'custom',\n renderItem: this.renderBlock(index, true),\n silent: true,\n z: 0,\n encode: { x: [1, 2], y: 0 },\n data: shiftData,\n });\n }\n }\n\n const activityData: any[] = [];\n if (this.config.chartMode === 'weekly' && data.activity && data.activity[0]?.items?.length) {\n const act = data.activity[0];\n const activityTrack = this.config.legends[act.category]?.find(\n (leg) => leg.name === act.name,\n );\n let trackColor = '#C8DFF9';\n if (activityTrack) {\n trackColor = activityTrack?.color || '#C8DFF9';\n }\n\n act.items.forEach((p: any, i: number) => {\n const y =\n index +\n p.value * (this.config.barHeight ?? 0.6) +\n (1 - (this.config.barHeight ?? 0.6)) / 2;\n\n activityData.push([this.convertTimeToNumber(p.time), y]);\n });\n if (activityData.length) {\n series.push({\n name: act.name,\n type: 'line',\n symbol: 'none',\n yAxisIndex: 1,\n z: 3,\n lineStyle: {\n width: 1,\n color: trackColor,\n },\n\n data: activityData,\n });\n }\n }\n\n data.tracks.forEach((track: TimelineTrack) => {\n if (!this.config.hideLegendCategory) {\n series.push({ name: track.category, type: 'custom', renderItem: () => {}, data: [] });\n }\n track.items.forEach((item) => {\n series.push({\n name: item.type,\n type: 'custom',\n renderItem: this.renderBlock(index, false),\n encode: { x: [1, 2], y: 0 },\n z: 2,\n data: [\n {\n ...item,\n category: track.category,\n value: [\n categories.indexOf(track.category),\n this.convertTimeToNumber(item.start),\n this.convertTimeToNumber(item.end),\n ],\n itemStyle: {\n color: this.config.legends[track.category]?.find((leg) => leg.name === item.type)\n ?.color,\n },\n type: item.type,\n },\n ],\n });\n });\n });\n });\n\n /* ---------------- CHART OPTION ---------------- */\n const is12Hour =\n this.is12HourFormat(this.config.startHour) || this.is12HourFormat(this.config.endHour);\n this.chartOption = {\n tooltip: {\n trigger: 'item',\n backgroundColor: 'transparent',\n borderWidth: 0,\n padding: 0,\n extraCssText: 'box-shadow:none;',\n formatter: (params: any) => {\n const tooltipCategories = this.config.tooltipCategories;\n\n if (tooltipCategories?.length && !tooltipCategories.includes(params.data?.category))\n return '';\n\n return this.chartService.timelineChartTooltipFormatter(params);\n },\n ...this.config.tooltip,\n },\n legend: this.buildLegend(),\n\n grid: {\n left: 0,\n right: 0,\n bottom: 0,\n top: Object.keys(this.config.legends).length * 30,\n },\n\n xAxis: {\n type: 'value',\n min: this.config.startHour\n ? Math.floor(this.convertTimeToNumber(this.config.startHour))\n : 0,\n max: this.config.endHour ? Math.ceil(this.convertTimeToNumber(this.config.endHour)) : 24,\n axisLine: {\n show: false,\n },\n axisTick: {\n show: false,\n },\n splitLine: {\n lineStyle: {\n width: 0.5,\n color: '#C0C2C5',\n },\n },\n minorSplitLine: {\n show: true,\n lineStyle: {\n width: 0.2,\n color: '#DADBDC',\n },\n },\n minorTick: { splitNumber: 4 },\n interval: 1,\n // axisLabel: {\n // formatter: (val: number) => `${val}:00`,\n // },\n axisLabel: {\n hideOverlap: true,\n formatter: (val: number) => this.formatHourLabel(val, is12Hour),\n },\n },\n\n yAxis: [\n {\n type: 'category',\n data: this.config.yAxisData,\n axisLine: {\n show: false,\n },\n },\n {\n type: 'value',\n min: 0,\n max: this.config.yAxisData.length,\n show: false,\n },\n ],\n\n series,\n };\n\n const markLines = this.buildMarkLines();\n if (markLines) {\n series.push({\n type: 'custom',\n silent: true,\n z: 10,\n data: [],\n markLine: markLines,\n });\n }\n }\n\n ngOnDestroy(): void {\n this.chartInstance?.dispose();\n }\n}\n","<div\n echarts\n [options]=\"chartOption\"\n [theme]=\"theme\"\n class=\"chart-container\"\n (chartInit)=\"onChartInit($event)\"\n></div>\n@if (openCard && filteredConetxtMenuOptions.length > 0) {\n <lib-right-click-card\n [cardOptions]=\"filteredConetxtMenuOptions\"\n (contextMenuClick)=\"onMenuClick($event)\"\n [cardPosition]=\"cardPosition\"\n ></lib-right-click-card>\n}\n","import {\n Component,\n EventEmitter,\n Input,\n OnChanges,\n OnDestroy,\n Output,\n SimpleChanges,\n} from '@angular/core';\nimport { NgxEchartsDirective, provideEchartsCore } from 'ngx-echarts';\nimport * as echarts from 'echarts/core';\nimport { EChartsCoreOption } from 'echarts';\nimport { SankeyChartConfig } from '../../modal/charts-modal';\nimport { TooltipComponent, TitleComponent } from 'echarts/components';\nimport { CanvasRenderer } from 'echarts/renderers';\nimport { SankeyChart as SankeyChartEchart } from 'echarts/charts';\nimport { Charts } from '../../service/charts';\necharts.use([SankeyChartEchart, TooltipComponent, TitleComponent, CanvasRenderer]);\n@Component({\n selector: 'lib-sankey-chart',\n imports: [NgxEchartsDirective],\n providers: [provideEchartsCore({ echarts })],\n templateUrl: './sankey-chart.html',\n styleUrl: './sankey-chart.scss',\n})\nexport class SankeyChart implements OnChanges, OnDestroy {\n @Input() config!: SankeyChartConfig;\n @Input() theme: any;\n @Input() events: string[] = [];\n\n @Output() chartEvent = new EventEmitter<{\n type: string;\n data: any;\n }>();\n\n constructor(private chartService: Charts) {}\n\n chartOption: EChartsCoreOption = {};\n private chartInstance!: echarts.ECharts;\n\n /* ------------------ CHANGE HANDLING ------------------ */\n\n ngOnChanges(changes: SimpleChanges): void {\n if (!this.config) return;\n\n if (changes['theme'] && this.chartInstance) {\n this.chartInstance.dispose();\n }\n\n this.buildOption();\n }\n\n /* ------------------ OPTION BUILDER ------------------ */\n\n private buildOption() {\n this.chartOption = {\n backgroundColor: this.config?.backgroundColor || 'transparent',\n color: this.config.colors ?? this.chartService.defaultColors,\n title: {\n show: this.config.showTitle ?? !!this.config.title,\n text: this.config.title,\n left: 'center',\n },\n\n tooltip: {\n show: this.config.showTooltip,\n trigger: 'item',\n triggerOn: 'mousemove',\n backgroundColor: 'transparent', // important for custom card\n borderWidth: 0,\n extraCssText: 'box-shadow:none;', // remove default shadow\n formatter: (params: any) =>\n this.config.tooltipFormatter\n ? this.config.tooltipFormatter(params)\n : this.chartService.sankeyTooltipFormatter(params),\n },\n series: [\n {\n left: 16,\n right: 16,\n top: 16,\n bottom: 16,\n ...this.config.seriesOption,\n type: 'sankey',\n data: (this.config?.nodes || []).map((n) => ({\n ...n,\n name: n.name,\n itemStyle: {\n color: n.color,\n },\n })),\n\n links: this.config?.links || [],\n levels: [\n {\n depth: this.chartService.getSankeyLevels(this.config?.nodes, this.config?.links),\n label: { position: 'left' },\n },\n ],\n lineStyle: {\n color: 'gradient',\n curveness: this.config.lineCurveness ?? 0.5,\n opacity: 0.3,\n },\n\n label: {\n color: '#333',\n },\n },\n ],\n };\n }\n\n /* ------------------ INIT ------------------ */\n\n onChartInit(ec: echarts.ECharts) {\n this.chartInstance = ec;\n this.buildOption();\n this.bindEvents();\n }\n\n /* ------------------ EVENTS ------------------ */\n\n private bindEvents() {\n if (!this.chartInstance) return;\n\n this.chartInstance.off();\n\n this.events.forEach((eventName) => {\n this.chartInstance.on(eventName, (params: any) => {\n if (eventName === 'contextmenu' && params.event?.event) {\n params.event.event.preventDefault();\n }\n\n this.chartEvent.emit({\n type: eventName,\n data: params,\n });\n });\n });\n }\n\n /* ------------------ DESTROY ------------------ */\n\n ngOnDestroy(): void {\n if (this.chartInstance) {\n this.chartInstance.off();\n this.chartInstance.dispose();\n }\n }\n}\n","<div\n echarts\n [options]=\"chartOption\"\n [theme]=\"theme\"\n class=\"chart-container\"\n (chartInit)=\"onChartInit($event)\"\n></div>","import {\n ChangeDetectionStrategy,\n Component,\n EventEmitter,\n Input,\n OnChanges,\n OnDestroy,\n Output,\n SimpleChanges,\n} from '@angular/core';\nimport * as echarts from 'echarts/core';\nimport { ECharts, EChartsCoreOption } from 'echarts/core';\nimport { HeatmapChart } from 'echarts/charts';\nimport {\n GridComponent,\n TooltipComponent,\n TitleComponent,\n VisualMapComponent,\n} from 'echarts/components';\nimport { CanvasRenderer } from 'echarts/renderers';\nimport { NgxEchartsDirective, provideEchartsCore } from 'ngx-echarts';\nimport { HeatmapChartConfig } from '../../modal/charts-modal';\nimport { Charts } from '../../service/charts';\n\necharts.use([\n HeatmapChart,\n GridComponent,\n TooltipComponent,\n TitleComponent,\n VisualMapComponent,\n CanvasRenderer,\n]);\n\n@Component({\n selector: 'lib-heatmap',\n standalone: true,\n imports: [NgxEchartsDirective],\n providers: [provideEchartsCore({ echarts })],\n templateUrl: './heatmap.html',\n styleUrl: './heatmap.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class Heatmap implements OnChanges, OnDestroy {\n @Input() config!: HeatmapChartConfig;\n @Input() theme: any;\n @Input() events: string[] = [];\n\n @Output() chartEvent = new EventEmitter<{\n type: string;\n data: any;\n }>();\n\n chartOption: EChartsCoreOption = {};\n legendItems: { label: string; color: string }[] = [];\n private chartInstance?: ECharts;\n\n constructor(private chartService: Charts) {}\n\n ngOnChanges(changes: SimpleChanges): void {\n if (!this.config) return;\n\n if (changes['theme'] && this.chartInstance) {\n this.chartInstance.dispose();\n this.chartInstance = undefined;\n }\n\n this.chartOption = this.buildOption(this.config);\n this.legendItems = this.buildLegendItems(this.config);\n\n if (this.chartInstance) {\n this.chartInstance.setOption(this.chartOption, true);\n this.bindEvents();\n }\n }\n\n private buildOption(config: HeatmapChartConfig): EChartsCoreOption {\n const data = config.data ?? [];\n const values = data.map((item) => item[2]).filter((value) => Number.isFinite(value));\n const min = config.min ?? (values.length ? Math.min(...values) : 0);\n const max = config.max ?? (values.length ? Math.max(...values) : 100);\n\n const baseSeries = {\n name: config.seriesName ?? config.title ?? 'Heatmap',\n type: 'heatmap',\n data,\n label: {\n show: config.showLabel ?? false,\n color: config.labelColor ?? '#111827',\n formatter: config.labelFormatter,\n },\n emphasis: {\n itemStyle: {\n shadowBlur: 10,\n shadowColor: 'rgba(0, 0, 0, 0.25)',\n },\n },\n };\n\n return {\n backgroundColor: config.backgroundColor || 'transparent',\n\n title: {\n show: config.showTitle ?? !!config.title,\n text: config.title,\n left: config.titlePosition || 'center',\n },\n\n tooltip: {\n show: config.showTooltip ?? true,\n trigger: 'item',\n backgroundColor: 'transparent',\n borderWidth: 0,\n padding: 0,\n confine: true,\n ...config.tooltip,\n formatter:\n config.tooltipFormatter ||\n ((params: any) => this.chartService.heatmapTooltipFormatter(params, config)),\n },\n\n grid: {\n left: config.grid?.left ?? '3%',\n right: config.grid?.right ?? '4%',\n top: config.grid?.top ?? '10%',\n bottom: config.grid?.bottom ?? '8%',\n height: config.grid?.height,\n containLabel: config.grid?.containLabel ?? true,\n },\n\n xAxis: {\n type: 'category',\n data: config.xAxisData ?? [],\n splitArea: { show: true },\n ...config.xAxis,\n },\n\n yAxis: {\n type: 'category',\n data: config.yAxisData ?? [],\n splitArea: { show: true },\n ...config.yAxis,\n },\n\n visualMap: {\n show: config.visualMap?.show ?? false,\n min,\n max,\n calculable: true,\n orient: 'horizontal',\n left: 'center',\n bottom: 0,\n inRange: {\n color: config.colors ?? ['#e0f2fe', '#38bdf8', '#0369a1'],\n },\n ...config.visualMap,\n },\n\n series: this.buildSeries(config.series, baseSeries),\n };\n }\n\n private buildLegendItems(config: HeatmapChartConfig) {\n const pieces = config.visualMap?.pieces;\n\n if (Array.isArray(pieces) && pieces.length) {\n return pieces.map((piece: any) => ({\n label: piece.label ?? `${piece.max ?? piece.value ?? piece.min}%`,\n color: piece.color ?? piece.itemStyle?.color ?? '#e5e7eb',\n }));\n }\n\n const colors = config.colors ?? ['#e0f2fe', '#38bdf8', '#0369a1'];\n const step = colors.length ? 100 / colors.length : 100;\n\n return colors.map((color, index) => ({\n label: `${Math.round(step * (index + 1))}%`,\n color,\n }));\n }\n\n private buildSeries(seriesConfig: HeatmapChartConfig['series'], baseSeries: any) {\n if (Array.isArray(seriesConfig)) {\n return seriesConfig.map((series) => ({\n ...baseSeries,\n ...series,\n }));\n }\n\n if (seriesConfig) {\n return [\n {\n ...baseSeries,\n ...seriesConfig,\n },\n ];\n }\n\n return [baseSeries];\n }\n\n onChartInit(ec: ECharts) {\n this.chartInstance = ec;\n this.bindEvents();\n }\n\n private bindEvents() {\n if (!this.chartInstance) return;\n\n const chartInstance = this.chartInstance;\n\n chartInstance.off();\n\n this.events.forEach((eventName) => {\n chartInstance.on(eventName, (params: any) => {\n if (eventName === 'contextmenu' && params.event?.event) {\n params.event.event.preventDefault();\n }\n\n this.chartEvent.emit({\n type: eventName,\n data: params,\n });\n });\n });\n }\n\n ngOnDestroy(): void {\n if (this.chartInstance) {\n this.chartInstance.off();\n this.chartInstance.dispose();\n }\n }\n}\n","<div class=\"heatmap-wrapper\">\n <div class=\"heatmap-legend\">\n @for (item of legendItems; track item.label) {\n <div class=\"heatmap-legend-item\">\n <span class=\"heatmap-legend-swatch\" [style.background]=\"item.color\"></span>\n <span>{{ item.label }}</span>\n </div>\n }\n </div>\n\n <div\n echarts\n [options]=\"chartOption\"\n [theme]=\"theme\"\n (chartInit)=\"onChartInit($event)\"\n class=\"chart-container\"\n ></div>\n</div>\n","import {\n Component,\n Input,\n SimpleChanges,\n ChangeDetectionStrategy,\n Output,\n EventEmitter,\n} from '@angular/core';\n\nimport * as echarts from 'echarts/core';\nimport { ECharts, EChartsCoreOption } from 'echarts/core';\nimport { NgxEchartsDirective, provideEchartsCore } from 'ngx-echarts';\n\nimport {\n GridComponent,\n TooltipComponent,\n LegendComponent,\n TitleComponent,\n} from 'echarts/components';\nimport { CanvasRenderer } from 'echarts/renderers';\nimport { Charts } from '../../service/charts';\nimport { ScatterChart } from 'echarts/charts';\nimport { ScatterChartConfig } from '../../modal/charts-modal';\nimport { ChartLegendComponent } from '../chart-legend';\nimport type { ChartLegendEvent } from '../chart-legend';\n\necharts.use([\n ScatterChart,\n GridComponent,\n TooltipComponent,\n LegendComponent,\n CanvasRenderer,\n TitleComponent,\n]);\n\n@Component({\n selector: 'lib-scatter-chart',\n imports: [NgxEchartsDirective, ChartLegendComponent],\n providers: [provideEchartsCore({ echarts })],\n templateUrl: './scatter-chart.html',\n styleUrl: './scatter-chart.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class ScatterChartComp {\n @Input() config!: ScatterChartConfig;\n @Input() theme: any;\n @Output() chartEvent = new EventEmitter<{\n type: string;\n data: any;\n }>();\n @Output() legendEvent = new EventEmitter<ChartLegendEvent>();\n chartOption: EChartsCoreOption = {};\n chartInstance!: ECharts;\n\n constructor(private chartService: Charts) {}\n get deafultColors() {\n return this.chartService.defaultColors;\n }\n ngOnChanges(changes: SimpleChanges): void {\n if (!this.config) return;\n\n if (changes['theme'] && this.chartInstance) {\n this.chartInstance.dispose();\n }\n\n this.buildOption();\n }\n private buildOption() {\n const selected = this.readLegendSelected();\n const selectedMode = this.config?.customLegend?.selectionMode === 'exclusive' ? 'single' : true;\n\n this.chartOption = {\n backgroundColor: this.config?.backgroundColor || 'transparent',\n color: this.config?.colors || this.chartService.defaultColors,\n title: {\n show: this.config?.showTitle ?? !!this.config?.title,\n text: this.config?.title,\n left: this.config?.titlePosition || 'center',\n },\n tooltip: {\n show: this.config?.showTooltip,\n trigger: 'item',\n backgroundColor: 'transparent',\n borderWidth: 0,\n padding: 0,\n confine: true,\n formatter: (params: any) =>\n this.config?.tooltipFormatter\n ? this.config?.tooltipFormatter(params)\n : this.chartService.scatterTooltipFormatter(\n params,\n this.config?.xAxisName,\n this.config?.yAxisName,\n ),\n },\n legend: {\n show: false,\n data: (this.config?.series ?? []).map((series) => series.name),\n selected,\n selectedMode,\n },\n\n grid: {\n left: this.config?.gridLeft ?? 0,\n right: this.config?.gridRight ?? 0,\n bottom: this.config?.gridBottom ?? 0,\n top: this.config?.gridTop ?? 0,\n },\n\n xAxis: {\n type: 'value',\n axisLine: {\n show: this.config?.showXAxisLine ?? true,\n lineStyle: {\n color: '#C0C2C5',\n width: 1,\n },\n },\n axisTick: {\n show: false,\n },\n axisLabel: {\n color: '#434A51',\n fontSize: 12,\n },\n name: this.config?.xAxisName || '',\n nameLocation: 'center',\n nameTextStyle: {\n color: '#434A51',\n fontSize: 14,\n fontWeight: 400,\n },\n\n splitLine: {\n show: true,\n lineStyle: {\n type: 'dashed',\n color: '#C0C2C5',\n width: 1,\n },\n },\n ...this.config?.xAxis,\n },\n\n yAxis: [\n {\n type: 'value',\n name: this.config?.yAxisName || '',\n nameLocation: 'center',\n nameTextStyle: {\n color: '#434A51',\n fontSize: 14,\n fontWeight: 400,\n },\n axisLine: {\n show: this.config?.showYAxisLine ?? true,\n lineStyle: {\n color: '#C0C2C5',\n width: 1,\n },\n },\n\n axisTick: {\n show: false,\n },\n axisLabel: {\n color: '#434A51',\n fontSize: 12,\n formatter: (value: number) => {\n if (value === 0) {\n return '0';\n }\n\n const absValue = Math.abs(value);\n\n // Quadrillions\n if (absValue >= 1_000_000_000_000_000) {\n return `${+(value / 1_000_000_000_000_000).toFixed(1)}Q`;\n }\n\n // Trillions\n if (absValue >= 1_000_000_000_000) {\n return `${+(value / 1_000_000_000_000).toFixed(1)}T`;\n }\n\n // Billions\n if (absValue >= 1_000_000_000) {\n return `${+(value / 1_000_000_000).toFixed(1)}B`;\n }\n\n // Millions\n if (absValue >= 1_000_000) {\n return `${+(value / 1_000_000).toFixed(1)}M`;\n }\n\n // Thousands\n if (absValue >= 1_000) {\n return `${+(value / 1_000).toFixed(1)}K`;\n }\n\n // Decimal handling\n if (Number.isInteger(value)) {\n return value.toString();\n }\n\n return value;\n },\n },\n splitLine: {\n show: true,\n lineStyle: {\n type: 'dashed',\n color: '#C0C2C5',\n width: 1,\n },\n },\n ...this.config?.yAxis,\n },\n ],\n\n series: (this.config?.series || []).map((s) => {\n return { symbolSize: 14, ...s, type: 'scatter' };\n }),\n };\n }\n get hasSideLegendWidth(): boolean {\n return this.isSideLegend && !!this.config.customLegend?.maxWidth;\n }\n\n get legendShellMaxWidth(): string | null {\n return this.isSideLegend ? (this.config.customLegend?.maxWidth ?? null) : null;\n }\n\n private get isSideLegend(): boolean {\n return (\n this.config.customLegend?.position === 'left' ||\n this.config.customLegend?.position === 'right'\n );\n }\n\n onLegendEvent(event: ChartLegendEvent): void {\n this.legendEvent.emit(event);\n this.chartEvent.emit({\n type: `legend:${event.type}`,\n data: event,\n });\n }\n\n private readLegendSelected(): Record<string, boolean> {\n const option = this.chartInstance?.getOption?.() as\n | { legend?: Array<{ selected?: Record<string, boolean> }> }\n | undefined;\n\n return { ...(option?.legend?.[0]?.selected ?? {}) };\n }\n\n onChartInit(ec: ECharts) {\n this.chartInstance = ec;\n this.buildOption();\n }\n\n ngOnDestroy(): void {\n if (this.chartInstance) {\n this.chartInstance.off();\n this.chartInstance.dispose();\n }\n }\n}\n","<div\n class=\"scatter-chart-shell\"\n [class.scatter-chart-shell--legend-left]=\"config.customLegend?.position === 'left'\"\n [class.scatter-chart-shell--legend-right]=\"config.customLegend?.position === 'right'\"\n [class.scatter-chart-shell--legend-bottom]=\"config.customLegend?.position === 'bottom'\"\n>\n @if (\n !config.hideLegend &&\n config.customLegend?.position !== 'bottom' &&\n config.customLegend?.position !== 'right'\n ) {\n <lib-chart-legend\n class=\"scatter-chart-shell__legend\"\n [class.scatter-chart-shell__legend--custom-width]=\"hasSideLegendWidth\"\n [style.--scatter-chart-legend-max-width]=\"legendShellMaxWidth\"\n [chart]=\"chartInstance\"\n [series]=\"config.series\"\n [colors]=\"config.colors || deafultColors\"\n [config]=\"config.customLegend || {}\"\n (legendEvent)=\"onLegendEvent($event)\"\n ></lib-chart-legend>\n }\n\n <div\n echarts\n [options]=\"chartOption\"\n [theme]=\"theme\"\n (chartInit)=\"onChartInit($event)\"\n class=\"chart-container\"\n ></div>\n\n @if (\n !config.hideLegend &&\n (config.customLegend?.position === 'bottom' || config.customLegend?.position === 'right')\n ) {\n <lib-chart-legend\n class=\"scatter-chart-shell__legend\"\n [class.scatter-chart-shell__legend--custom-width]=\"hasSideLegendWidth\"\n [style.--scatter-chart-legend-max-width]=\"legendShellMaxWidth\"\n [chart]=\"chartInstance\"\n [series]=\"config.series\"\n [colors]=\"config.colors || deafultColors\"\n [config]=\"config.customLegend || {}\"\n (legendEvent)=\"onLegendEvent($event)\"\n ></lib-chart-legend>\n }\n</div>\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i1.Charts","EBarChart","EPieChart","SankeyChartEchart"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"cats-charts.mjs","sources":["../../../projects/charts-lib/src/lib/components/right-click-card/right-click-card.ts","../../../projects/charts-lib/src/lib/components/right-click-card/right-click-card.html","../../../projects/charts-lib/src/lib/components/chart-legend/chart-legend.adapter.ts","../../../projects/charts-lib/src/lib/components/chart-legend/chart-legend.ts","../../../projects/charts-lib/src/lib/components/chart-legend/chart-legend.html","../../../projects/charts-lib/src/lib/service/charts.ts","../../../projects/charts-lib/src/lib/components/line-chart/line-chart.ts","../../../projects/charts-lib/src/lib/components/line-chart/line-chart.html","../../../projects/charts-lib/src/lib/components/bar-chart/bar-chart.ts","../../../projects/charts-lib/src/lib/components/bar-chart/bar-chart.html","../../../projects/charts-lib/src/lib/components/pie-chart/pie-chart.ts","../../../projects/charts-lib/src/lib/components/pie-chart/pie-chart.html","../../../projects/charts-lib/src/lib/components/doughnut-chart/doughnut-chart.ts","../../../projects/charts-lib/src/lib/components/doughnut-chart/doughnut-chart.html","../../../projects/charts-lib/src/lib/components/stacked-area-chart/stacked-area-chart.ts","../../../projects/charts-lib/src/lib/components/stacked-area-chart/stacked-area-chart.html","../../../projects/charts-lib/src/lib/components/custom-chart/custom-chart.ts","../../../projects/charts-lib/src/lib/components/custom-chart/custom-chart.html","../../../projects/charts-lib/src/lib/components/sankey-chart/sankey-chart.ts","../../../projects/charts-lib/src/lib/components/sankey-chart/sankey-chart.html","../../../projects/charts-lib/src/lib/components/heatmap/heatmap.ts","../../../projects/charts-lib/src/lib/components/heatmap/heatmap.html","../../../projects/charts-lib/src/lib/components/scatter-chart/scatter-chart.ts","../../../projects/charts-lib/src/lib/components/scatter-chart/scatter-chart.html","../../../projects/charts-lib/src/lib/components/status-timeline/status-timeline.ts","../../../projects/charts-lib/src/lib/components/status-timeline/status-timeline.html","../../../projects/charts-lib/src/cats-charts.ts"],"sourcesContent":["import { Component, EventEmitter, Input, Output } from '@angular/core';\n\n@Component({\n selector: 'lib-right-click-card',\n imports: [],\n templateUrl: './right-click-card.html',\n styleUrl: './right-click-card.scss',\n})\nexport class RightClickCard {\n @Input() cardPosition: any;\n @Input() cardOptions: any;\n @Output() contextMenuClick = new EventEmitter<any>();\n \n onMenuClick(item: any) {\n this.contextMenuClick.emit(item);\n\n // this.closeMenu();\n }\n}\n","<div\n class=\"context-card\"\n [style.left.px]=\"cardPosition.x\"\n [style.top.px]=\"cardPosition.y\"\n (click)=\"$event.stopPropagation()\"\n>\n @for (item of cardOptions; track item.value) {\n <div class=\"context-item\" (click)=\"onMenuClick(item)\">\n @if (item.icon) {\n <img [src]=\"item.icon\" alt=\"icon\" />\n }\n\n <span>{{ item.label }}</span>\n </div>\n }\n</div>\n","import { Injectable } from '@angular/core';\nimport { ECharts } from 'echarts/core';\nimport {\n ChartLegendConfig,\n ChartLegendIcon,\n ChartLegendItem,\n ChartLegendSelectionMode,\n} from './chart-legend.types';\n\ntype DispatchPayload = Record<string, unknown> & { type: string };\n\n@Injectable({ providedIn: 'root' })\nexport class ChartLegendAdapter {\n buildItems<\n TSeries extends {\n name?: string;\n type?: string;\n symbol?: string;\n icon?: ChartLegendIcon;\n legendIcon?: ChartLegendIcon;\n legendType?: 'default' | 'marker' | 'line' | 'lineMarker';\n itemStyle?: { color?: string };\n lineStyle?: { color?: string };\n area?: boolean;\n color?: string;\n },\n >(\n series: readonly TSeries[],\n colors: readonly string[],\n selected: Record<string, boolean>,\n config: ChartLegendConfig<TSeries>,\n ): ChartLegendItem[] {\n return series\n .map((seriesItem, index) => {\n const name = String(seriesItem.name ?? `Series ${index + 1}`);\n const color =\n seriesItem?.color ??\n seriesItem.itemStyle?.color ??\n seriesItem.lineStyle?.color ??\n colors[index % Math.max(colors.length, 1)] ??\n '#64748b';\n const icon = this.resolveIcon(seriesItem, index, name, config);\n const disabled = !!config.disabled || !!config.disabledNames?.includes(name);\n const item: ChartLegendItem = {\n id: `${index}:${name}`,\n name,\n label: name,\n color,\n icon,\n disabled,\n selected: selected[name] !== false,\n seriesIndex: index,\n raw: seriesItem,\n legendType: seriesItem?.legendType,\n };\n\n item.label = config.formatter ? config.formatter(name, item) : name;\n item.group = config.groupBy ? config.groupBy(item) : undefined;\n\n return item;\n })\n .filter((item) => !!item.name);\n }\n\n readSelected(chart: ECharts | null | undefined): Record<string, boolean> {\n const option = chart?.getOption?.() as {\n legend?: Array<{ selected?: Record<string, boolean> }>;\n };\n return { ...(option?.legend?.[0]?.selected ?? {}) };\n }\n\n applySelection(\n chart: ECharts,\n item: ChartLegendItem,\n mode: ChartLegendSelectionMode,\n items: readonly ChartLegendItem[],\n ): void {\n if (item.disabled) return;\n\n if (mode === 'exclusive') {\n for (const other of items) {\n if (other.name !== item.name) {\n chart.dispatchAction({ type: 'legendUnSelect', name: other.name } as DispatchPayload);\n }\n }\n chart.dispatchAction({ type: 'legendSelect', name: item.name } as DispatchPayload);\n return;\n }\n\n chart.dispatchAction({ type: 'legendToggleSelect', name: item.name } as DispatchPayload);\n }\n\n highlight(chart: ECharts, item: ChartLegendItem): void {\n if (item.disabled || item.seriesIndex === undefined) return;\n chart.dispatchAction({ type: 'highlight', seriesIndex: item.seriesIndex } as DispatchPayload);\n }\n\n downplay(chart: ECharts, item: ChartLegendItem): void {\n if (item.seriesIndex === undefined) return;\n chart.dispatchAction({ type: 'downplay', seriesIndex: item.seriesIndex } as DispatchPayload);\n }\n\n private resolveIcon<\n TSeries extends {\n type?: string;\n symbol?: string;\n icon?: ChartLegendIcon;\n legendIcon?: ChartLegendIcon;\n area?: boolean;\n },\n >(\n seriesItem: TSeries,\n index: number,\n name: string,\n config: ChartLegendConfig<TSeries>,\n ): ChartLegendIcon {\n if (typeof config.icon === 'function') return config.icon(seriesItem, index);\n if (config.icons?.[name]) return config.icons[name];\n if (config.icon) return config.icon;\n if (seriesItem.legendIcon) return seriesItem.legendIcon;\n if (seriesItem.icon) return seriesItem.icon;\n if (seriesItem.symbol && seriesItem.symbol !== 'none') return seriesItem.symbol;\n if (seriesItem.area) return 'area';\n\n switch (seriesItem.type) {\n case 'bar':\n return 'rect';\n case 'pie':\n case 'scatter':\n case 'effectScatter':\n return 'circle';\n default:\n return 'line';\n }\n }\n}\n","import {\n AfterViewInit,\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n ElementRef,\n EventEmitter,\n Inject,\n Input,\n OnChanges,\n OnDestroy,\n Output,\n PLATFORM_ID,\n SimpleChanges,\n TemplateRef,\n ViewChild,\n} from '@angular/core';\nimport { CommonModule, isPlatformBrowser } from '@angular/common';\nimport { ECharts } from 'echarts/core';\nimport { ChartLegendAdapter } from './chart-legend.adapter';\nimport {\n ChartLegendConfig,\n ChartLegendIcon,\n ChartLegendEvent,\n ChartLegendItem,\n ChartLegendSelectionMode,\n ChartLegendState,\n ChartLegendTemplateContext,\n} from './chart-legend.types';\n\ntype LegendSelectChanged = { selected?: unknown; name?: string };\ntype IconRenderType = 'none' | 'image' | 'path' | 'shape';\nconst SUPPORTED_ICON_SHAPES = new Set([\n 'line',\n 'emptyLine',\n 'area',\n 'circle',\n 'emptyCircle',\n 'rect',\n 'emptyRect',\n 'roundRect',\n 'emptyRoundRect',\n 'square',\n 'emptySquare',\n 'triangle',\n 'emptyTriangle',\n 'diamond',\n 'emptyDiamond',\n 'pin',\n 'emptyPin',\n 'arrow',\n 'emptyArrow',\n 'x',\n 'plus',\n 'thickLine',\n]);\n\nfunction getLegendSelected(event: unknown): Record<string, boolean> | undefined {\n if (typeof event !== 'object' || event === null || !('selected' in event)) return undefined;\n\n const selected = (event as LegendSelectChanged).selected;\n return typeof selected === 'object' && selected !== null\n ? (selected as Record<string, boolean>)\n : undefined;\n}\n\n@Component({\n selector: 'lib-chart-legend',\n standalone: true,\n imports: [CommonModule],\n templateUrl: './chart-legend.html',\n styleUrl: './chart-legend.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class ChartLegendComponent implements AfterViewInit, OnChanges, OnDestroy {\n @Input() chart: ECharts | null = null;\n @Input() series: readonly any[] = [];\n @Input() colors: readonly string[] = [];\n @Input() config: ChartLegendConfig<any> = {};\n @Input() itemTemplate?: TemplateRef<ChartLegendTemplateContext>;\n\n @Output() legendEvent = new EventEmitter<ChartLegendEvent>();\n @ViewChild('itemsScroller') private itemsScroller?: ElementRef<HTMLElement>;\n\n state: ChartLegendState = {\n items: [],\n selected: {},\n hoveredName: null,\n pageIndex: 0,\n };\n canScrollLegend = false;\n canScrollStart = false;\n canScrollEnd = false;\n\n private readonly isBrowser: boolean;\n private readonly onLegendSelectChanged = (event: unknown) => {\n this.syncFromChart(getLegendSelected(event));\n };\n private resizeObserver?: ResizeObserver;\n private scrollStateFrame = 0;\n\n constructor(\n private readonly adapter: ChartLegendAdapter,\n private readonly cdr: ChangeDetectorRef,\n @Inject(PLATFORM_ID) platformId: object,\n ) {\n this.isBrowser = isPlatformBrowser(platformId);\n }\n\n ngOnChanges(changes: SimpleChanges): void {\n if (changes['chart']) this.rebindChart(changes['chart'].previousValue as ECharts | null);\n this.rebuildItems();\n this.scheduleScrollStateUpdate();\n }\n\n ngAfterViewInit(): void {\n if (!this.isBrowser) return;\n if (typeof ResizeObserver !== 'undefined' && this.itemsScroller?.nativeElement) {\n this.resizeObserver = new ResizeObserver(() => this.scheduleScrollStateUpdate());\n this.resizeObserver.observe(this.itemsScroller.nativeElement);\n }\n this.scheduleScrollStateUpdate();\n }\n\n ngOnDestroy(): void {\n this.detachChart(this.chart);\n this.resizeObserver?.disconnect();\n if (this.scrollStateFrame) cancelAnimationFrame(this.scrollStateFrame);\n }\n\n get visibleItems(): ChartLegendItem[] {\n const pageSize = this.config.pageSize;\n if (!this.config.showPagination || !pageSize || pageSize <= 0) return this.state.items;\n\n const start = this.state.pageIndex * pageSize;\n return this.state.items.slice(start, start + pageSize);\n }\n\n get groupedItems(): Array<{ group: string | null; items: ChartLegendItem[] }> {\n const groups = new Map<string | null, ChartLegendItem[]>();\n for (const item of this.visibleItems) {\n const key = item.group ?? null;\n groups.set(key, [...(groups.get(key) ?? []), item]);\n }\n return [...groups.entries()].map(([group, items]) => ({ group, items }));\n }\n\n get pageCount(): number {\n const pageSize = this.config.pageSize;\n if (!this.config.showPagination || !pageSize || pageSize <= 0) return 1;\n return Math.max(Math.ceil(this.state.items.length / pageSize), 1);\n }\n\n get isVerticalLegend(): boolean {\n return (\n this.config.layout === 'vertical' ||\n this.config.position === 'left' ||\n this.config.position === 'right'\n );\n }\n\n get isScrollableLegend(): boolean {\n return this.config.scrollable === true;\n }\n\n get isLimitedWrapLegend(): boolean {\n return this.config.scrollable === false && !this.hasConfiguredMaxWidth;\n }\n\n get usesInternalLegendScroll(): boolean {\n return this.isScrollableLegend || this.isLimitedWrapLegend;\n }\n\n get scrollsVertically(): boolean {\n return this.isLimitedWrapLegend ? !this.isVerticalLegend : this.isVerticalLegend;\n }\n\n get isLegendAlignedCenter(): boolean {\n return (\n this.config.align === 'center' || (this.isVerticalLegend && this.config.align === 'middle')\n );\n }\n\n get isLegendAlignedEnd(): boolean {\n return (\n this.config.align === 'end' ||\n (!this.isVerticalLegend && this.config.align === 'right') ||\n (this.isVerticalLegend && this.config.align === 'bottom')\n );\n }\n\n get scrollStartAriaLabel(): string {\n return this.scrollsVertically ? 'Scroll legend up' : 'Scroll legend left';\n }\n\n get scrollEndAriaLabel(): string {\n return this.scrollsVertically ? 'Scroll legend down' : 'Scroll legend right';\n }\n\n trackByItem(_: number, item: ChartLegendItem): string {\n return item.id;\n }\n\n trackByGroup(_: number, group: { group: string | null }): string {\n return group.group ?? '__default__';\n }\n\n templateFor(item: ChartLegendItem): TemplateRef<ChartLegendTemplateContext> | null {\n return this.itemTemplate ?? this.config.itemTemplate ?? null;\n }\n\n templateContext(item: ChartLegendItem): ChartLegendTemplateContext {\n return {\n $implicit: item,\n item,\n selected: item.selected,\n disabled: item.disabled,\n };\n }\n\n private legendType(item: ChartLegendItem): 'default' | 'marker' | 'line' | 'lineMarker' {\n return item.legendType ?? this.config.legendType ?? 'default';\n }\n\n iconForRender(item: ChartLegendItem): string {\n return this.legendType(item) === 'line' ? 'line' : item.icon;\n }\n\n iconRenderType(item: ChartLegendItem): IconRenderType {\n const icon = this.iconForRender(item).trim();\n if (!icon || icon === 'none') return 'none';\n if (icon.startsWith('image://')) return 'image';\n if (icon.startsWith('path://') || /^[Mm]\\s*-?\\d/.test(icon)) return 'path';\n return 'shape';\n }\n\n iconImageSrc(item: ChartLegendItem): string {\n return item.icon.replace(/^image:\\/\\//, '');\n }\n\n iconPathData(item: ChartLegendItem): string {\n return item.icon.replace(/^path:\\/\\//, '');\n }\n\n iconShapeClass(icon: ChartLegendIcon): string {\n const shape = SUPPORTED_ICON_SHAPES.has(icon) ? icon : 'rect';\n return `chart-legend__icon--${shape}`;\n }\n\n isLineMarker(item: ChartLegendItem): boolean {\n return this.legendType(item) === 'lineMarker';\n }\n\n isLineOnly(item: ChartLegendItem): boolean {\n return this.legendType(item) === 'line';\n }\n\n toggle(item: ChartLegendItem, event?: Event): void {\n event?.preventDefault();\n if (!this.chart || item.disabled) return;\n\n if (this.config?.preventLegendClickDefault) {\n this?.emit?.('toggle', item);\n return;\n }\n\n const mode = this.selectionMode();\n const wasSelected = item.selected;\n this.adapter.applySelection(this.chart, item, mode, this.state.items);\n this.syncFromChart();\n // this.emit(mode === 'exclusive' ? 'exclusive' : wasSelected ? 'unselect' : 'select', item);\n }\n\n hover(item: ChartLegendItem): void {\n if (!this.chart || item.disabled || this.config.hoverLink === false) return;\n this.state = { ...this.state, hoveredName: item.name };\n this.adapter.highlight(this.chart, item);\n // this.emit('highlight', item);\n this.cdr.markForCheck();\n }\n\n leave(item: ChartLegendItem): void {\n if (!this.chart || this.config.hoverLink === false) return;\n this.state = { ...this.state, hoveredName: null };\n this.adapter.downplay(this.chart, item);\n // this.emit('downplay', item);\n this.cdr.markForCheck();\n }\n\n page(step: number): void {\n const next = Math.min(Math.max(this.state.pageIndex + step, 0), this.pageCount - 1);\n if (next === this.state.pageIndex) return;\n this.state = { ...this.state, pageIndex: next };\n this.emit('page');\n this.scheduleScrollStateUpdate();\n }\n\n scrollLegend(direction: -1 | 1, event?: Event): void {\n event?.preventDefault();\n if (!this.usesInternalLegendScroll) return;\n const element = this.itemsScroller?.nativeElement;\n if (!element) return;\n\n const distance = this.scrollsVertically\n ? Math.max(element.clientHeight * 0.8, 120)\n : Math.max(element.clientWidth * 0.8, 120);\n\n element.scrollBy({\n left: this.scrollsVertically ? 0 : direction * distance,\n top: this.scrollsVertically ? direction * distance : 0,\n behavior: 'smooth',\n });\n this.scheduleScrollStateUpdate();\n }\n\n updateScrollState(): void {\n this.scheduleScrollStateUpdate();\n }\n\n itemTitle(item: ChartLegendItem): string | null {\n return this.config.tooltipFormatter ? this.config.tooltipFormatter(item) : item.label;\n }\n\n private rebuildItems(selectedFromChart?: Record<string, boolean>): void {\n const selected = selectedFromChart ?? this.adapter.readSelected(this.chart);\n const items = this.adapter.buildItems(this.series, this.colors, selected, this.config);\n const maxPage = Math.max(\n Math.ceil(items.length / (this.config.pageSize || items.length || 1)) - 1,\n 0,\n );\n this.state = {\n ...this.state,\n selected,\n items,\n pageIndex: Math.min(this.state.pageIndex, maxPage),\n };\n this.cdr.markForCheck();\n this.scheduleScrollStateUpdate();\n }\n\n private syncFromChart(selected?: Record<string, boolean>): void {\n this.rebuildItems(selected ?? this.adapter.readSelected(this.chart));\n this.emit('sync');\n }\n\n private rebindChart(previous: ECharts | null): void {\n this.detachChart(previous);\n if (!this.isBrowser || !this.chart) return;\n this.chart.on('legendselectchanged', this.onLegendSelectChanged);\n this.chart.on('legendselected', this.onLegendSelectChanged);\n this.chart.on('legendunselected', this.onLegendSelectChanged);\n }\n\n private detachChart(chart: ECharts | null | undefined): void {\n if (!chart) return;\n chart.off('legendselectchanged', this.onLegendSelectChanged);\n chart.off('legendselected', this.onLegendSelectChanged);\n chart.off('legendunselected', this.onLegendSelectChanged);\n }\n\n private selectionMode(): ChartLegendSelectionMode {\n return this.config.selectionMode ?? 'multiple';\n }\n\n private emit(type: ChartLegendEvent['type'], item?: ChartLegendItem): void {\n this.legendEvent.emit({ type, item, state: this.state });\n }\n\n private scheduleScrollStateUpdate(): void {\n if (!this.isBrowser || this.scrollStateFrame) return;\n if (!this.usesInternalLegendScroll) {\n this.setScrollState(false, false, false);\n return;\n }\n this.scrollStateFrame = requestAnimationFrame(() => {\n this.scrollStateFrame = 0;\n this.updateScrollStateNow();\n });\n }\n\n private updateScrollStateNow(): void {\n const element = this.itemsScroller?.nativeElement;\n if (!element) {\n this.setScrollState(false, false, false);\n return;\n }\n\n const hasOverflow = this.scrollsVertically\n ? element.scrollHeight > element.clientHeight + 1\n : element.scrollWidth > element.clientWidth + 1;\n const scrollPosition = this.scrollsVertically ? element.scrollTop : element.scrollLeft;\n const viewportSize = this.scrollsVertically ? element.clientHeight : element.clientWidth;\n const scrollSize = this.scrollsVertically ? element.scrollHeight : element.scrollWidth;\n\n this.setScrollState(\n hasOverflow,\n hasOverflow && scrollPosition > 1,\n hasOverflow && scrollPosition + viewportSize < scrollSize - 1,\n );\n }\n\n private setScrollState(\n canScrollLegend: boolean,\n canScrollStart: boolean,\n canScrollEnd: boolean,\n ): void {\n if (\n this.canScrollLegend === canScrollLegend &&\n this.canScrollStart === canScrollStart &&\n this.canScrollEnd === canScrollEnd\n ) {\n return;\n }\n this.canScrollLegend = canScrollLegend;\n this.canScrollStart = canScrollStart;\n this.canScrollEnd = canScrollEnd;\n this.cdr.markForCheck();\n }\n\n private get hasConfiguredMaxWidth(): boolean {\n return typeof this.config.maxWidth === 'string' && this.config.maxWidth.trim().length > 0;\n }\n}\n","@if (config.enabled !== false) {\n <nav\n class=\"chart-legend\"\n [class.chart-legend--vertical]=\"isVerticalLegend\"\n [class.chart-legend--scrollable]=\"isScrollableLegend\"\n [class.chart-legend--wrap]=\"!isScrollableLegend\"\n [class.chart-legend--limited-wrap]=\"isLimitedWrapLegend\"\n [ngClass]=\"config.className || null\"\n [style.max-height]=\"config.maxHeight || null\"\n [style.padding]=\"config.padding || '1rem'\"\n [attr.aria-label]=\"config.ariaLabel || 'Chart legend'\"\n >\n <div class=\"chart-legend__viewport\">\n @if (config.title) {\n <p\n class=\"chart-legend-title\"\n [class.chart-legend-title--uppercase]=\"config.legendTitleTransform === 'uppercase'\"\n [class.chart-legend-title--lowercase]=\"config.legendTitleTransform === 'lowercase'\"\n [class.chart-legend-title--capitalize]=\"config.legendTitleTransform === 'capitalize'\"\n [style.--legend-title-color]=\"config.legendTitleTextColor || null\"\n [style.--legend-title-font-size]=\"\n config.legendTitleFontSize ? config.legendTitleFontSize + 'px' : null\n \"\n [style.--legend-title-font-style]=\"config.legendTitleFontStyle || null\"\n [style.--legend-title-font-weight]=\"config.legendTitleFontWeight || null\"\n [style.--legend-title-text-decoration]=\"config.legendTitleTextDecoration || null\"\n [style.--legend-title-font-family]=\"config.legendTitleFontFamily || 'initial'\"\n >\n {{ config.title }}\n </p>\n }\n @if (usesInternalLegendScroll && canScrollLegend) {\n <button\n type=\"button\"\n class=\"chart-legend__scroll-button chart-legend__scroll-button--start\"\n [disabled]=\"!canScrollStart\"\n (click)=\"scrollLegend(-1, $event)\"\n [attr.aria-label]=\"scrollStartAriaLabel\"\n >\n <img\n src=\"images/legend_left.svg\"\n [class.chart-legend__scroll-icon--up]=\"scrollsVertically\"\n alt=\"left\"\n />\n </button>\n }\n\n <div #itemsScroller class=\"chart-legend__scroller\" (scroll)=\"updateScrollState()\">\n <div\n class=\"chart-legend__items\"\n role=\"list\"\n [class.chart-legend__items--center]=\"\n isLegendAlignedCenter && (!usesInternalLegendScroll || !canScrollLegend)\n \"\n [class.chart-legend__items--end]=\"isLegendAlignedEnd\"\n [style.--legend-text-color]=\"config.legendTextColor || null\"\n [style.--legend-font-size]=\"config.legendFontSize ? config.legendFontSize + 'px' : null\"\n [style.--legend-font-style]=\"config.legendFontStyle || null\"\n [style.--legend-font-weight]=\"config.legendFontWeight || null\"\n [style.--legend-text-decoration]=\"config.legendTextDecoration || null\"\n [style.--legend-font-family]=\"config.legendFontFamily || 'initial'\"\n >\n @for (group of groupedItems; track trackByGroup($index, group)) {\n @if (group.group) {\n <div class=\"chart-legend__group-label\">{{ group.group }}</div>\n }\n\n @for (item of group.items; track trackByItem($index, item)) {\n <button\n type=\"button\"\n class=\"chart-legend__item\"\n role=\"switch\"\n [class.chart-legend__item--off]=\"!item.selected\"\n [class.chart-legend__item--disabled]=\"item.disabled\"\n [class.chart-legend__item--hovered]=\"state.hoveredName === item.name\"\n [disabled]=\"item.disabled\"\n [attr.aria-checked]=\"item.selected\"\n [attr.aria-label]=\"item.label\"\n [style.--legend-item-color]=\"item.color\"\n [title]=\"itemTitle(item)\"\n (click)=\"toggle(item, $event)\"\n (keydown.enter)=\"toggle(item, $event)\"\n (keydown.space)=\"toggle(item, $event)\"\n (mouseenter)=\"hover(item)\"\n (focus)=\"hover(item)\"\n (mouseleave)=\"leave(item)\"\n (blur)=\"leave(item)\"\n >\n @if (templateFor(item); as template) {\n <ng-container\n [ngTemplateOutlet]=\"template\"\n [ngTemplateOutletContext]=\"templateContext(item)\"\n ></ng-container>\n } @else {\n @switch (iconRenderType(item)) {\n @case ('image') {\n @if (isLineMarker(item)) {\n <span\n class=\"chart-legend__icon chart-legend__icon--line-marker\"\n aria-hidden=\"true\"\n >\n <span class=\"chart-legend__icon-line\"></span>\n <img class=\"chart-legend__icon-image\" [src]=\"iconImageSrc(item)\" alt=\"\" />\n <span class=\"chart-legend__icon-line\"></span>\n </span>\n } @else {\n <img class=\"chart-legend__icon-image\" [src]=\"iconImageSrc(item)\" alt=\"\" />\n }\n }\n @case ('path') {\n @if (isLineMarker(item)) {\n <span\n class=\"chart-legend__icon chart-legend__icon--line-marker\"\n aria-hidden=\"true\"\n >\n <span class=\"chart-legend__icon-line\"></span>\n <svg\n class=\"chart-legend__icon-path\"\n viewBox=\"-512 -512 1024 1024\"\n aria-hidden=\"true\"\n >\n <path [attr.d]=\"iconPathData(item)\"></path>\n </svg>\n <span class=\"chart-legend__icon-line\"></span>\n </span>\n } @else {\n <svg\n class=\"chart-legend__icon-path\"\n viewBox=\"-512 -512 1024 1024\"\n aria-hidden=\"true\"\n >\n <path [attr.d]=\"iconPathData(item)\"></path>\n </svg>\n }\n }\n @case ('shape') {\n @if (isLineMarker(item)) {\n <span\n class=\"chart-legend__icon chart-legend__icon--line-marker\"\n aria-hidden=\"true\"\n >\n <span class=\"chart-legend__icon-line\"></span>\n <span\n class=\"chart-legend__icon chart-legend__icon--marker\"\n [ngClass]=\"iconShapeClass(item.icon)\"\n ></span>\n <span class=\"chart-legend__icon-line\"></span>\n </span>\n } @else {\n <span\n class=\"chart-legend__icon\"\n [ngClass]=\"iconShapeClass(iconForRender(item))\"\n aria-hidden=\"true\"\n ></span>\n }\n }\n }\n <span class=\"chart-legend__label\"\n >{{ item.label\n }}{{ this.config.showValue && this.config.valueFormatter && ':' }}</span\n >\n @if (this.config.showValue && this.config.valueFormatter) {\n <span class=\"chart-legend__value\">{{ this.config.valueFormatter(item) }}</span>\n }\n @if (this.config.showActionArrow) {\n @if (this.config.actionArrowTemplate) {\n <ng-container\n [ngTemplateOutlet]=\"this.config.actionArrowTemplate\"\n [ngTemplateOutletContext]=\"templateContext(item)\"\n ></ng-container>\n } @else {\n <svg\n class=\"chart-legend__action-arrow\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n stroke-width=\"2\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n >\n <polyline points=\"9 18 15 12 9 6\"></polyline>\n </svg>\n }\n }\n }\n </button>\n }\n }\n </div>\n </div>\n\n @if (usesInternalLegendScroll && canScrollLegend) {\n <button\n type=\"button\"\n class=\"chart-legend__scroll-button chart-legend__scroll-button--end\"\n [disabled]=\"!canScrollEnd\"\n (click)=\"scrollLegend(1, $event)\"\n [attr.aria-label]=\"scrollEndAriaLabel\"\n >\n <img\n src=\"images/legend_right.svg\"\n [class.chart-legend__scroll-icon--down]=\"scrollsVertically\"\n alt=\"right\"\n />\n </button>\n }\n </div>\n\n @if (config.showPagination && pageCount > 1) {\n <div class=\"chart-legend__pagination\" aria-label=\"Legend pages\">\n <button\n type=\"button\"\n class=\"chart-legend__page\"\n [disabled]=\"state.pageIndex === 0\"\n (click)=\"page(-1)\"\n aria-label=\"Previous legend page\"\n >\n <\n </button>\n <span class=\"chart-legend__page-count\">{{ state.pageIndex + 1 }} / {{ pageCount }}</span>\n <button\n type=\"button\"\n class=\"chart-legend__page\"\n [disabled]=\"state.pageIndex + 1 === pageCount\"\n (click)=\"page(1)\"\n aria-label=\"Next legend page\"\n >\n >\n </button>\n </div>\n }\n </nav>\n}\n","import { Injectable } from '@angular/core';\nimport * as echarts from 'echarts/core';\nimport {\n BarChartConfig,\n DoughnutChartConfig,\n HeatmapChartConfig,\n LineChartConfig,\n PieChartConfig,\n SankeyLink,\n SankeyNode,\n} from '../modal/charts-modal';\n@Injectable({\n providedIn: 'root',\n})\nexport class Charts {\n legendSelected: Record<string, boolean> = {};\n defaultColors: string[] = ['#22c55e', '#3b82f6', '#ef4444', '#6b7280'];\n\n // buildGraphicLegend(total: number | null, config: any, chartInstance: any, chartType?: string) {\n // const pillHeight = 28;\n // const spacing = 14;\n // const indicatorWidth = 12;\n // const padding = 8;\n // const font = '14px sans-serif';\n\n // const containerWidth = chartInstance?.getWidth?.() ?? 800;\n // const maxWidth = containerWidth * (config?.legendContainerWidth ?? 0.7);\n\n // const selectedMap = chartInstance?.getOption()?.legend?.[0]?.selected || {};\n // let colorIndex = 0;\n // const pills = (\n // chartType === 'line' || chartType === 'bar' || chartType === 'scatter'\n // ? config?.series\n // : config?.data\n // )?.map((item: any) => {\n // const hasCustomColors = Array.isArray(config?.colors) && config?.colors?.length > 0;\n // const color =\n // total === 0\n // ? '#E6E7E8'\n // : (item?.itemStyle?.color ??\n // (hasCustomColors\n // ? config?.colors[colorIndex % config?.colors?.length]\n // : this.defaultColors[colorIndex % this.defaultColors.length]));\n // if (\n // !item?.itemStyle?.color ||\n // (item?.itemStyle?.color && Object.keys(selectedMap).length && !selectedMap[item.name])\n // ) {\n // colorIndex += 1;\n // }\n // const nameRect = echarts.format.getTextRect(item.name, font);\n // const valueRect =\n // chartType === 'line' || chartType === 'bar' || chartType === 'scatter'\n // ? { width: 0 }\n // : echarts.format.getTextRect(\n // String(config?.valueFormatter ? config.valueFormatter(item.value) : item.value),\n // font,\n // );\n\n // const pillWidth =\n // padding +\n // indicatorWidth +\n // 6 +\n // nameRect.width +\n // (chartType === 'line' || chartType === 'bar' || chartType === 'scatter'\n // ? 0\n // : 8 + valueRect.width) +\n // padding;\n\n // return { item, color, pillWidth };\n // });\n\n // // 🔹 Build rows dynamically\n // const rows: any[] = [];\n // let currentRow: any[] = [];\n // let rowWidth = 0;\n\n // pills?.forEach((pill: any) => {\n // if (rowWidth + pill.pillWidth > maxWidth && currentRow.length) {\n // rows.push({ pills: currentRow, width: rowWidth });\n // currentRow = [];\n // rowWidth = 0;\n // }\n\n // currentRow.push(pill);\n // rowWidth += pill.pillWidth + spacing;\n // });\n\n // if (currentRow.length) rows.push({ pills: currentRow, width: rowWidth });\n\n // // 🔹 Build graphic children\n // let yOffset = 0;\n // const children: any[] = [];\n\n // rows?.forEach((row) => {\n // let xOffset =\n // config?.legendAlign === 'center' && config?.legendDirection !== 'vertical'\n // ? (maxWidth - row.width) / 2\n // : maxWidth;\n\n // row?.pills?.forEach((pill: any) => {\n // const isSelected = selectedMap[pill.item.name] !== false;\n // const isDisabled = pill.item.value === 0;\n // children.push({\n // type: 'group',\n // left: xOffset,\n // top: yOffset,\n // width: pill.pillWidth,\n // height: pillHeight,\n // cursor: isDisabled ? 'default' : 'pointer',\n\n // onclick: () => {\n // if (isDisabled) return;\n // chartInstance.dispatchAction({\n // type: 'legendToggleSelect',\n // name: pill.item.name,\n // });\n\n // chartInstance.setOption({\n // graphic: this.buildGraphicLegend(total, config, chartInstance, chartType),\n // });\n // },\n\n // children: [\n // {\n // type: 'rect',\n // shape: {\n // width: pill.pillWidth,\n // height: pillHeight,\n // r: 4,\n // },\n // style: {\n // fill:\n // isSelected && !isDisabled\n // ? this.hexToRgba(pill.color, total === 0 ? 0.3 : 0.03)\n // : '#F2F2F7',\n // stroke: isSelected && !isDisabled ? this.hexToRgba(pill.color, 0.3) : '#D1D1D6',\n // lineWidth: 1,\n // },\n // },\n\n // {\n // type: 'rect',\n // shape: { width: 12, height: config?.legendIndicatorHeight ?? 12, r: 2 },\n // left: padding,\n // top: (pillHeight - (config?.legendIndicatorHeight ?? 12)) / 2,\n // style: {\n // fill: isSelected && !isDisabled ? pill.color : '#C7C7CC',\n // },\n // },\n\n // {\n // type: 'text',\n // left: padding + indicatorWidth + 6,\n // top: (pillHeight - indicatorWidth) / 2,\n // style: {\n // text: `${pill.item.name}${chartType === 'line' || chartType === 'bar' || chartType === 'scatter' ? '' : ':'}`,\n // fontSize: 14,\n // fontWeight: 400,\n // fill: isSelected && !isDisabled && total !== 0 ? '#1C1C1E' : '#81858A',\n // textVerticalAlign: 'middle',\n // },\n // },\n\n // ...(chartType === 'line' || chartType === 'bar' || chartType === 'scatter'\n // ? []\n // : [\n // {\n // type: 'text',\n // right: padding,\n // top: (pillHeight - indicatorWidth) / 2,\n // style: {\n // text:\n // total === 0\n // ? '-'\n // : config?.valueFormatter\n // ? config.valueFormatter(pill.item.value)\n // : pill.item.value,\n // fontSize: 14,\n // fontWeight: 500,\n // fill: isSelected && !isDisabled ? '#1C1C1E' : '#81858A',\n // textAlign: 'right',\n // textVerticalAlign: 'middle',\n // },\n // },\n // ]),\n // ],\n // });\n\n // xOffset += pill.pillWidth + spacing;\n // });\n\n // yOffset += pillHeight + spacing;\n // });\n\n // // 🔹 Position logic\n // const positionConfig: any = {};\n // switch (config?.legendPosition) {\n // case 'top':\n // positionConfig.top = config?.legendEdgeGap?.top ?? 20;\n // break;\n // case 'bottom':\n // positionConfig.bottom = config?.legendEdgeGap?.bottom ?? 20;\n // break;\n // case 'left':\n // positionConfig.left = config?.legendEdgeGap?.left ?? 20;\n // break;\n // case 'right':\n // positionConfig.right = config?.legendEdgeGap?.right ?? 20;\n // break;\n // }\n\n // // ALIGNMENT (Cross-Axis)\n // if (config?.legendPosition === 'top' || config?.legendPosition === 'bottom') {\n // // Horizontal area → align horizontally\n // if (config?.legendAlign === 'center') {\n // positionConfig.left = 'center';\n // } else if (config?.legendAlign === 'right') {\n // positionConfig.right = config?.legendEdgeGap?.right ?? 20;\n // } else {\n // positionConfig.left = config?.legendEdgeGap?.left ?? 20;\n // }\n // } else {\n // // Vertical area → align vertically\n // if (config?.legendAlign === 'center') {\n // positionConfig.top = 'middle';\n // } else if (config?.legendAlign === 'right') {\n // positionConfig.bottom = config?.legendEdgeGap?.bottom ?? 20;\n // } else {\n // positionConfig.top = config?.legendEdgeGap?.top ?? 20;\n // }\n // }\n // return [\n // {\n // id: 'customLegend',\n // type: 'group',\n // ...positionConfig,\n // width: maxWidth,\n // height: yOffset,\n // children,\n // },\n // ];\n // }\n buildGraphicLegend(total: number | null, config: any, chartInstance: any, chartType?: string) {\n const pillHeight = 28;\n const spacing = 14;\n const indicatorWidth = 12;\n const padding = 8;\n const font = '14px sans-serif';\n\n // =========================================\n // CONTAINER + AVAILABLE WIDTH\n // =========================================\n\n const containerWidth = chartInstance?.getWidth?.() ?? 800;\n\n const leftGap = config?.legendEdgeGap?.left ?? 0;\n const rightGap = config?.legendEdgeGap?.right ?? 0;\n\n // actual usable width after gaps\n const usableWidth = containerWidth - leftGap - rightGap;\n\n const maxWidth = usableWidth * (config?.legendContainerWidth ?? 0.7);\n\n // =========================================\n // SELECTED LEGEND MAP\n // =========================================\n\n const selectedMap = chartInstance?.getOption()?.legend?.[0]?.selected || {};\n\n let colorIndex = 0;\n\n // =========================================\n // BUILD PILLS\n // =========================================\n\n const pills = (\n chartType === 'line' || chartType === 'bar' || chartType === 'scatter'\n ? config?.series\n : config?.data\n )?.map((item: any) => {\n const hasCustomColors = Array.isArray(config?.colors) && config?.colors?.length > 0;\n\n const color =\n total === 0\n ? '#E6E7E8'\n : (item?.itemStyle?.color ??\n (hasCustomColors\n ? config?.colors[colorIndex % config?.colors?.length]\n : this.defaultColors[colorIndex % this.defaultColors.length]));\n\n if (\n !item?.itemStyle?.color ||\n (item?.itemStyle?.color && Object.keys(selectedMap).length && !selectedMap[item.name])\n ) {\n colorIndex += 1;\n }\n\n const nameRect = echarts.format.getTextRect(item.name, font);\n\n const valueRect =\n chartType === 'line' || chartType === 'bar' || chartType === 'scatter'\n ? { width: 0 }\n : echarts.format.getTextRect(\n String(config?.valueFormatter ? config.valueFormatter(item.value) : item.value),\n font,\n );\n\n const pillWidth =\n padding +\n indicatorWidth +\n 6 +\n nameRect.width +\n (chartType === 'line' || chartType === 'bar' || chartType === 'scatter'\n ? 0\n : 8 + valueRect.width) +\n padding;\n\n return {\n item,\n color,\n pillWidth,\n };\n });\n\n // =========================================\n // BUILD ROWS PERFECTLY\n // =========================================\n\n const rows: any[] = [];\n\n let currentRow: any[] = [];\n let rowWidth = 0;\n\n pills?.forEach((pill: any) => {\n const additionalWidth = currentRow.length > 0 ? spacing : 0;\n\n // break row if width exceeded\n if (currentRow.length && rowWidth + additionalWidth + pill.pillWidth > maxWidth) {\n rows.push({\n pills: currentRow,\n width: rowWidth,\n });\n\n currentRow = [pill];\n rowWidth = pill.pillWidth;\n } else {\n rowWidth += additionalWidth + pill.pillWidth;\n currentRow.push(pill);\n }\n });\n\n if (currentRow.length) {\n rows.push({\n pills: currentRow,\n width: rowWidth,\n });\n }\n\n // =========================================\n // BUILD GRAPHIC CHILDREN\n // =========================================\n\n let yOffset = 0;\n\n const children: any[] = [];\n\n rows?.forEach((row) => {\n let xOffset = 0;\n\n // =====================================\n // HORIZONTAL ALIGNMENTS\n // =====================================\n\n if (config?.legendDirection !== 'vertical') {\n if (config?.legendAlign === 'center') {\n xOffset = Math.max((maxWidth - row.width) / 2, 0);\n } else if (config?.legendAlign === 'right') {\n xOffset = Math.max(maxWidth - row.width, 0);\n }\n }\n\n row?.pills?.forEach((pill: any) => {\n const isSelected = selectedMap[pill.item.name] !== false;\n\n const isDisabled = pill.item.value === 0;\n\n children.push({\n type: 'group',\n\n left: xOffset,\n top: yOffset,\n\n width: pill.pillWidth,\n height: pillHeight,\n\n cursor: isDisabled ? 'default' : 'pointer',\n\n onclick: () => {\n if (isDisabled) return;\n\n chartInstance.dispatchAction({\n type: 'legendToggleSelect',\n name: pill.item.name,\n });\n\n chartInstance.setOption({\n graphic: this.buildGraphicLegend(total, config, chartInstance, chartType),\n });\n },\n\n children: [\n // =================================\n // BACKGROUND\n // =================================\n\n {\n type: 'rect',\n\n shape: {\n width: pill.pillWidth,\n height: pillHeight,\n r: 4,\n },\n\n style: {\n fill:\n isSelected && !isDisabled\n ? this.hexToRgba(pill.color, total === 0 ? 0.3 : 0.03)\n : '#F2F2F7',\n\n stroke: isSelected && !isDisabled ? this.hexToRgba(pill.color, 0.3) : '#D1D1D6',\n\n lineWidth: 1,\n },\n },\n\n // =================================\n // INDICATOR\n // =================================\n\n {\n type: 'rect',\n\n shape: {\n width: 12,\n height: config?.legendIndicatorHeight ?? 12,\n r: 2,\n },\n\n left: padding,\n\n top: (pillHeight - (config?.legendIndicatorHeight ?? 12)) / 2,\n\n style: {\n fill: isSelected && !isDisabled ? pill.color : '#C7C7CC',\n },\n },\n\n // =================================\n // LABEL\n // =================================\n\n {\n type: 'text',\n\n left: padding + indicatorWidth + 6,\n\n top: (pillHeight - indicatorWidth) / 2,\n\n style: {\n text: `${pill.item.name}${\n chartType === 'line' || chartType === 'bar' || chartType === 'scatter' ? '' : ':'\n }`,\n\n fontSize: 14,\n fontWeight: 400,\n\n fill: isSelected && !isDisabled && total !== 0 ? '#1C1C1E' : '#81858A',\n\n textVerticalAlign: 'middle',\n },\n },\n\n // =================================\n // VALUE\n // =================================\n\n ...(chartType === 'line' || chartType === 'bar' || chartType === 'scatter'\n ? []\n : [\n {\n type: 'text',\n\n right: padding,\n\n top: (pillHeight - indicatorWidth) / 2,\n\n style: {\n text:\n total === 0\n ? '-'\n : config?.valueFormatter\n ? config.valueFormatter(pill.item.value)\n : pill.item.value,\n\n fontSize: 14,\n fontWeight: 500,\n\n fill: isSelected && !isDisabled ? '#1C1C1E' : '#81858A',\n\n textAlign: 'right',\n textVerticalAlign: 'middle',\n },\n },\n ]),\n ],\n });\n\n xOffset += pill.pillWidth + spacing;\n });\n\n yOffset += pillHeight + spacing;\n });\n\n // =========================================\n // POSITION CONFIG\n // =========================================\n\n const positionConfig: any = {};\n\n switch (config?.legendPosition) {\n case 'top':\n positionConfig.top = config?.legendEdgeGap?.top ?? 20;\n break;\n\n case 'bottom':\n positionConfig.bottom = config?.legendEdgeGap?.bottom ?? 20;\n break;\n\n case 'left':\n positionConfig.left = config?.legendEdgeGap?.left ?? 20;\n break;\n\n case 'right':\n positionConfig.right = config?.legendEdgeGap?.right ?? 20;\n break;\n }\n\n // =========================================\n // CROSS AXIS ALIGNMENT\n // =========================================\n\n if (config?.legendPosition === 'top' || config?.legendPosition === 'bottom') {\n // horizontal placement\n if (config?.legendAlign === 'center') {\n positionConfig.left = 'center';\n } else if (config?.legendAlign === 'right') {\n positionConfig.right = config?.legendEdgeGap?.right ?? 20;\n } else {\n positionConfig.left = config?.legendEdgeGap?.left ?? 20;\n }\n } else {\n // vertical placement\n if (config?.legendAlign === 'center') {\n positionConfig.top = 'middle';\n } else if (config?.legendAlign === 'right') {\n positionConfig.bottom = config?.legendEdgeGap?.bottom ?? 20;\n } else {\n positionConfig.top = config?.legendEdgeGap?.top ?? 20;\n }\n }\n\n // =========================================\n // RETURN GRAPHIC\n // =========================================\n\n return [\n {\n id: 'customLegend',\n\n type: 'group',\n\n ...positionConfig,\n\n width: maxWidth,\n height: yOffset,\n\n children,\n },\n ];\n }\n buildCenterGraphic(config: any, total: number) {\n if (!config?.centerLabel?.show) return [];\n\n const centerConfig = config.centerLabel;\n const titleFont = centerConfig.fontSizeTitle ?? 14;\n const valueFont = centerConfig.fontSizeValue ?? 22;\n\n // Use external top if provided, default to 'center'\n // config.bottom\n const groupTop = centerConfig.top ?? 'center';\n const groupLeft = centerConfig.left ?? 'center';\n\n // Offsets relative to groupTop\n const titleOffset = -valueFont / 2;\n const valueOffset = titleFont / 2;\n\n return [\n {\n id: 'centerLabel',\n type: 'group',\n left: groupLeft,\n top: groupTop,\n silent: true,\n children: [\n ...(centerConfig.title\n ? [\n {\n type: 'text',\n style: {\n text: centerConfig.title ?? '',\n fontSize: titleFont,\n fill: centerConfig.titleColor ?? '#666',\n textAlign: 'center',\n textBaseline: 'middle',\n },\n top: titleOffset, // relative to groupTop\n },\n ]\n : []),\n {\n type: 'text',\n style: {\n text:\n centerConfig.type === 'custom' && centerConfig.formatter\n ? centerConfig.formatter(total, config.data)\n : (centerConfig.value ?? ''),\n fontSize: valueFont,\n fontWeight: 'bold',\n fill: centerConfig.valueColor ?? '#000',\n textAlign: 'center',\n textBaseline: 'middle',\n },\n top: valueOffset + (centerConfig?.valueTopSpace || 0), // relative to groupTop\n },\n ],\n },\n ];\n }\n\n hexToRgba(hex: string, alpha: number) {\n const r = parseInt(hex.slice(1, 3), 16);\n const g = parseInt(hex.slice(3, 5), 16);\n const b = parseInt(hex.slice(5, 7), 16);\n\n return `rgba(${r}, ${g}, ${b}, ${alpha})`;\n }\n\n formatPercentage(value: string | number | null | undefined) {\n if (value === null || value === undefined || value === '') return 'NA';\n\n // already percentage string\n if (typeof value === 'string' && value.includes('%')) return value;\n\n // numeric/string number\n const num = Number(value);\n if (isNaN(num)) return 'NA';\n\n return `${num}%`;\n }\n\n getNumericValue(value: string | number | null | undefined): number | null {\n if (value === null || value === undefined || value === '') return null;\n\n // remove %\n const cleaned = typeof value === 'string' ? value.replace('%', '').trim() : value;\n const num = Number(cleaned);\n\n return isNaN(num) ? null : num;\n }\n\n getStatusColor(value: string | number | null | undefined) {\n const num = this.getNumericValue(value);\n if (num === null) return '#C0C2C5'; // grey\n if (num < 30) return '#EF4343'; // red\n if (num <= 60) return '#FFC107'; // yellow\n return '#29A277'; // green\n }\n\n pieTooltipFormatter(params: any, config: DoughnutChartConfig | PieChartConfig) {\n const color = params.color;\n const name = params.name;\n const value = params.value;\n const percent = params.percent;\n\n let extraTooltipData: any[] = [];\n if (typeof params?.data === 'object') {\n extraTooltipData = Object.entries(params.data?.[config?.extraTooltipKey || 'tooltip'] || {});\n }\n\n let extraTooltipDataTemplate = '';\n if (extraTooltipData.length) {\n extraTooltipData.forEach((data) => {\n extraTooltipDataTemplate += `<div style=\"\n font-size:13px;\n color:#434A51;\n padding-top: 0.5rem;\n \">\n ${data[0]}: <b style=\"color:#111;font-weight:600;\">${data[1]}</b>\n </div>`;\n });\n }\n\n return `<div style=\"\n position: relative;\n background-color: #fff;\n padding: 8px 16px;\n border-radius: 8px;\n box-shadow: 0 4px 16px rgba(0,0,0,0.08);\n \">\n <div style=\"\n display: flex;\n align-items: center;\n gap: 10px;\n \">\n <div style=\"\n position: absolute;\n left: -10px;\n top: 10px;\n width: 0;\n height: 0;\n border-top: 10px solid transparent;\n border-bottom: 10px solid transparent;\n border-right: 10px solid #ffffff;\n \"></div>\n\n <span style=\"\n width: 14px;\n height: 14px;\n background: ${color};\n border-radius: 3px;\n display: inline-block;\n \"></span>\n\n <span style=\"\n font-size: 12px;\n color: #434A51;\n \">\n ${name}: <b style=\"color:#111; font-weight:600;\">${config.valueFormatter ? config.valueFormatter(value) : this.toMaxDecimals(value)}</b> ${config.showTooltipPercent ? '(' + percent + '%)' : ''}\n </span>\n </div>\n ${extraTooltipDataTemplate}\n </div>\n `;\n }\n barLineTooltipFormatter(\n params: any,\n chartType?: 'bar' | 'line',\n config?: LineChartConfig | BarChartConfig,\n ) {\n if (!params || !params.length) return '';\n\n const date = params[0].axisValueLabel || params[0].name;\n\n let total = 0;\n let rows = '';\n\n let extraTooltipData: any[] = [];\n if (typeof params?.[0]?.data === 'object') {\n extraTooltipData = Object.entries(\n params[0].data?.[config?.extraTooltipKey || 'tooltip'] || {},\n );\n }\n\n let extraTooltipDataTemplate = '';\n if (extraTooltipData.length) {\n extraTooltipData.forEach((data) => {\n extraTooltipDataTemplate += `<div style=\"\n font-size:13px;\n color:#434A51;\n padding-top: 0.5rem;\n \">\n ${data[0]}: <b style=\"color:#111;font-weight:600;\">${data[1]}</b>\n </div>`;\n });\n }\n\n params?.forEach((item: any) => {\n const color = item.color;\n const name = item.seriesName;\n const value = item.value ?? 0;\n\n total += Number(value);\n\n rows += `\n <div style=\"\n display:flex;\n align-items:center;\n gap:8px;\n font-size:13px;\n color:#434A51;\n \">\n <span style=\"\n width:14px;\n height: ${chartType === 'line' ? '3px' : '14px'};\n background:${color};\n border-radius:3px;\n display:inline-block;\n \"></span>\n\n <span>${name}: <b style=\"color:#111;font-weight:600;\">${this.toMaxDecimals(value)}</b></span>\n </div>\n `;\n });\n\n return `\n <div style=\"\n border-radius: 8px;\n background-color: #ffffff;\n border: 1px solid #f0f0f0;\n box-shadow: 0px 10.55px 23.39px -3.52px #0a0d1214;\n min-width:190px;\n \">\n <div style=\"\n font-size:15px;\n font-weight:600;\n color:#111;\n padding: 0.5rem 1rem;\n border-bottom: 1px solid #F0F0F0 ;\n \">\n ${date}\n </div>\n <div style=\"padding: 1rem; display: flex; flex-direction: column; gap: 6px\">\n ${rows}\n <div>\n <div style=\"\n font-size:13px;\n color:#434A51;\n padding-top: 0.5rem;\n \">\n Total: <b style=\"color:#111;font-weight:600;\">${this.toMaxDecimals(total)}</b>\n ${extraTooltipDataTemplate}\n </div>\n\n </div>\n `;\n }\n\n heatmapTooltipFormatter(params: any, config: HeatmapChartConfig) {\n const value = params.value ?? [];\n const xAxisLabel = config.xAxisData?.[value[0]] ?? value[0] ?? '-';\n const yAxisLabel = config.yAxisData?.[value[1]] ?? value[1] ?? '-';\n const heatValue = value[2] ?? '-';\n const color = params.color ?? '#38bdf8';\n\n return `\n <div style=\"\n background:#ffffff;\n padding:12px 14px;\n border-radius:8px;\n border:1px solid #f0f0f0;\n box-shadow:0px 10.55px 23.39px -3.52px #0a0d1214;\n min-width:160px;\n font-family: Inter, sans-serif;\n \">\n <div style=\"\n display:flex;\n align-items:center;\n gap:8px;\n color:#111;\n font-size:14px;\n font-weight:600;\n margin-bottom:8px;\n \">\n <span style=\"\n width:12px;\n height:12px;\n background:${color};\n border-radius:3px;\n display:inline-block;\n \"></span>\n <span>${config.seriesName ?? config.title ?? 'Heatmap'}</span>\n </div>\n\n <div style=\"font-size:13px;color:#434A51;margin-top:4px;\">\n ${xAxisLabel} / ${yAxisLabel}: <b style=\"color:#111;font-weight:600;\">${heatValue}</b>\n </div>\n </div>\n `;\n }\n\n timelineChartTooltipFormatter(params: any) {\n const d = params.data;\n\n return `<div style=\"\n position: relative;\n background:#fff;\n border-radius:8px;\n font-size:12px;\n color:#444;\n box-shadow:0 2px 8px rgba(0,0,0,0.15);\n min-width:220px;\n max-width:500px;\n \">\n <div style=\"\n position: absolute;\n left: -10px;\n bottom: 10px;\n width: 0;\n height: 0;\n border-top: 10px solid transparent;\n border-bottom: 10px solid transparent;\n border-right: 10px solid #ffffff;\n \"></div>\n <div style=\"padding: 8px 16px; border-bottom:1px solid #E6E7E8;\">\n <div style=\"font-weight:400;color:#040D17;font-size: 14px;\">\n ${d.start || '00:00'} - ${d.end || '00:00'}\n </div>\n\n <div style=\"color:#81858A;margin-top:2px;\">\n ${d.date || 'NA'}\n </div>\n </div>\n <div style=\"padding: 8px 16px;\">\n <div>\n Work Mode: <b>${d.workMode || '-'}</b>\n </div>\n\n <div style=\"margin-top:6px;\">\n Productivity:\n <span style=\"color:${this.getStatusColor(d.productivity)};font-weight:600;\">\n ${this.formatPercentage(d.productivity)}\n </span>\n\n <span style=\"margin-left:12px;\">Activity:</span>\n <span style=\"color:${this.getStatusColor(d.activity)};font-weight:600;\">\n ${this.formatPercentage(d.activity)}\n </span>\n </div>\n\n <div style=\"margin-top:6px;\">\n System Presence: <b>${d.systemPresence || '-'}</b>\n </div>\n\n <div style=\"margin-top:6px;\">\n POW Source: <b>${d.powSource || '-'}</b>\n </div>\n\n <div style=\"margin-top:6px;\">\n Location: <b style=\"white-space: break-spaces;\">${d.location || '-'}</b>\n </div>\n\n <div style=\"\n display:flex;\n gap:10px;\n align-items:center;\n margin-top:6px;\n \">\n Apps Used:\n <span style=\"color:#2563eb;font-weight:600;\">\n ${d.appsUsed || 0}\n </span>\n\n <span style=\"color:#ccc;\">|</span>\n\n Screenshots:\n <span style=\"color:#2563eb;font-weight:600;\">\n ${d.screenShots || 0}\n </span>\n </div>\n </div>\n </div>`;\n }\n getSankeyLevels(nodes: SankeyNode[] = [], links: SankeyLink[] = []) {\n const graph = new Map();\n const indegree = new Map();\n\n nodes.forEach((n) => {\n graph.set(n.name, []);\n indegree.set(n.name, 0);\n });\n\n links.forEach((link) => {\n graph.get(link.source).push(link.target);\n indegree.set(link.target, indegree.get(link.target) + 1);\n });\n\n const queue: any[] = [];\n const levelMap = new Map();\n\n indegree.forEach((deg, node) => {\n if (deg === 0) {\n queue.push(node);\n levelMap.set(node, 0);\n }\n });\n\n while (queue.length) {\n const current = queue.shift();\n const currentLevel = levelMap.get(current);\n\n graph.get(current).forEach((neighbor: any) => {\n const newLevel = currentLevel + 1;\n\n if (!levelMap.has(neighbor) || levelMap.get(neighbor) < newLevel) {\n levelMap.set(neighbor, newLevel);\n queue.push(neighbor);\n }\n });\n }\n\n return Math.max(...levelMap.values());\n }\n\n sankeyTooltipFormatter(params: any) {\n if (params.dataType === 'edge') {\n const { source, target, sourceDesc, targetDesc } = params.data;\n return `\n <div style=\"\n background: #fff;\n padding: 12px 14px;\n border-radius: 10px;\n box-shadow: 0 4px 14px rgba(0,0,0,0.15);\n min-width: 220px;\n font-family: sans-serif;\n \">\n <div style=\"margin-bottom:10px;\">\n <div style=\"font-size:12px; color:#777;\">Source: \n <span style=\"font-weight:600; color:#000\">${source}</span>\n </div>\n ${\n sourceDesc\n ? `<div style=\"font-size:11px; color:#aaa;\">\n ${sourceDesc}\n </div>`\n : ''\n }\n </div>\n \n <div>\n <div style=\"font-size:12px; color:#777;\">Destination: \n <span style=\"font-weight:600; color:#000\">${target}</span>\n </div>\n ${\n targetDesc\n ? `<div style=\"font-size:11px; color:#aaa;\">\n ${targetDesc}\n </div>`\n : ''\n }\n </div>\n </div>\n `;\n }\n return `\n <div style=\"\n background: #fff;\n padding: 10px;\n border-radius: 8px;\n box-shadow: 0 4px 10px rgba(0,0,0,0.15);\n \">\n ${params.name}: <b>${params.value}</b>\n </div>\n `;\n }\n scatterTooltipFormatter(params: any, xName: string | undefined, yName: string | undefined) {\n return `\n <div style=\"\n background: #fff;\n padding: 10px;\n border-radius: 8px;\n box-shadow: 0 4px 10px rgba(0,0,0,0.15);\n \">\n <div><b>${params.seriesName}</b></div>\n <div>${xName ? xName + ':' : ''} ${params.value[0]}</div>\n <div>${yName ? xName + ':' : ''} ${params.value[1]}</div>\n </div>\n `;\n }\n calculateGridTopLineBar(config: LineChartConfig | BarChartConfig): number {\n let maxHeight = 0;\n\n const label = config?.series?.[0]?.['label'];\n\n if (\n (config?.showLabel !== true && label?.show !== true) ||\n (config?.labelPosition !== 'top' && label?.position !== 'top')\n ) {\n return 0;\n }\n\n const font = [\n label.fontStyle,\n label.fontWeight,\n `${label.fontSize ?? 12}px`,\n label.fontFamily ?? 'sans-serif',\n ]\n .filter(Boolean)\n .join(' ');\n\n const text = typeof label.formatter === 'string' ? label.formatter : '0';\n\n const rect = echarts.format.getTextRect(text, font);\n\n const padding = label.padding ?? 0;\n\n const verticalPadding = Array.isArray(padding)\n ? padding.length === 1\n ? padding[0] * 2\n : padding.length === 2\n ? padding[0] * 2\n : padding[0] + padding[2]\n : padding * 2;\n\n maxHeight = Math.max(maxHeight, rect.height + verticalPadding);\n\n return maxHeight + 6;\n }\n\n toMaxDecimals(value: number, maxDecimal: number = 2): number {\n if (!Number.isFinite(value)) {\n return value;\n }\n\n return Number(value.toFixed(maxDecimal));\n }\n}\n","import {\n Component,\n Input,\n Output,\n EventEmitter,\n SimpleChanges,\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n HostListener,\n} from '@angular/core';\n\nimport * as echarts from 'echarts/core';\nimport { ECharts, EChartsCoreOption } from 'echarts/core';\nimport { NgxEchartsDirective, provideEchartsCore } from 'ngx-echarts';\n\nimport { LineChart } from 'echarts/charts';\nimport {\n GridComponent,\n TooltipComponent,\n LegendComponent,\n TitleComponent,\n ToolboxComponent,\n DataZoomInsideComponent,\n DataZoomComponent,\n MarkAreaComponent,\n MarkLineComponent,\n} from 'echarts/components';\nimport { CanvasRenderer } from 'echarts/renderers';\nimport { LineChartConfig } from '../../modal/charts-modal';\nimport { Charts } from '../../service/charts';\nimport { RightClickCard } from '../right-click-card';\nimport { ChartLegendComponent, ChartLegendEvent } from '../chart-legend';\n\necharts.use([\n LineChart,\n GridComponent,\n TooltipComponent,\n LegendComponent,\n CanvasRenderer,\n TitleComponent,\n ToolboxComponent,\n DataZoomInsideComponent,\n DataZoomComponent,\n MarkAreaComponent,\n MarkLineComponent,\n]);\n\n@Component({\n selector: 'lib-line-chart',\n standalone: true,\n imports: [NgxEchartsDirective, RightClickCard, ChartLegendComponent],\n providers: [provideEchartsCore({ echarts })],\n templateUrl: './line-chart.html',\n styleUrls: ['./line-chart.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class LinesChart {\n @Input() config: LineChartConfig = { xAxisData: [], series: [] };\n @Input() theme: any;\n @Input() events: string[] = [];\n @Input() contextMenuOptions: any[] = [];\n @Input() showContextMenu: boolean = false;\n\n @Output() contextMenuClick = new EventEmitter<any>();\n @Output() chartEvent = new EventEmitter<{\n type: string;\n data: any;\n }>();\n @Output() legendEvent = new EventEmitter<ChartLegendEvent>();\n chartOption: EChartsCoreOption = {};\n chartInstance!: ECharts;\n cardPosition = { x: 0, y: 0 };\n openCard = false;\n\n get deafultColors() {\n return this.chartService.defaultColors;\n }\n\n get hasSideLegendWidth(): boolean {\n return this.isSideLegend && !!this.config.customLegend?.maxWidth;\n }\n\n get legendShellMaxWidth(): string | null {\n return this.isSideLegend ? (this.config.customLegend?.maxWidth ?? null) : null;\n }\n\n private get isSideLegend(): boolean {\n return (\n this.config.customLegend?.position === 'left' ||\n this.config.customLegend?.position === 'right'\n );\n }\n constructor(\n private chartService: Charts,\n private cdr: ChangeDetectorRef,\n ) {}\n\n /* ------------------ CHANGE HANDLING ------------------ */\n ngOnChanges(changes: SimpleChanges): void {\n if (!this.config) return;\n\n if (changes['theme'] && this.chartInstance) {\n this.chartInstance.dispose();\n // this.chartInstance = null;\n }\n\n this.buildOption();\n }\n private previousConfig: any = {\n xAxisName: '',\n yAxisName: '',\n secondaryYAxisName: '',\n };\n ngDoCheck(): void {\n if (!this.chartInstance || !this.config) return;\n\n const updateOption: any = {};\n\n if (this.previousConfig.xAxisName !== this.config.xAxisName) {\n this.previousConfig.xAxisName = this.config.xAxisName;\n\n updateOption.xAxis = {\n name: this.config?.xAxisName || '',\n };\n }\n\n if (this.previousConfig.yAxisName !== this.config.yAxisName) {\n this.previousConfig.yAxisName = this.config.yAxisName;\n\n updateOption.yAxis = [\n {\n name: this.config?.yAxisName || '',\n },\n ];\n }\n\n if (this.previousConfig.secondaryYAxisName !== this.config.secondaryYAxisName) {\n this.previousConfig.secondaryYAxisName = this.config.secondaryYAxisName;\n\n updateOption.yAxis = [\n {\n name: this.config?.yAxisName || '',\n },\n {\n name: this.config?.secondaryYAxisName || '',\n },\n ];\n }\n\n if (Object.keys(updateOption).length) {\n this.chartInstance.setOption(updateOption);\n }\n }\n\n /* ------------------ OPTION BUILDER ------------------ */\n private buildOption() {\n const selected = this.readLegendSelected();\n const selectedMode = this.config?.customLegend?.selectionMode === 'exclusive' ? 'single' : true;\n\n this.chartOption = {\n backgroundColor: 'transparent',\n color: this.config?.colors || this.chartService.defaultColors,\n title: {\n show: this.config?.showTitle ?? !!this.config?.title,\n text: this.config?.title,\n left: this.config?.titlePosition || 'center',\n },\n\n tooltip: {\n show: this.config?.showTooltip,\n trigger: 'axis',\n backgroundColor: 'transparent', // remove default box\n borderWidth: 0,\n padding: 0,\n confine: true,\n formatter: (params: any) =>\n this.config?.tooltipFormatter\n ? this.config?.tooltipFormatter(params)\n : this.chartService.barLineTooltipFormatter(params, 'line'),\n },\n legend: {\n show: false,\n data: (this.config?.series ?? []).map((series) => series.name),\n selected,\n selectedMode,\n },\n\n grid: this.config?.isTrendChart\n ? { left: 0, right: 0, top: 0, bottom: 0 }\n : {\n left: this.config?.gridLeft ?? 0,\n right: this.config?.gridRight ?? 0,\n bottom: this.config?.gridBottom ?? 0,\n top:\n this.config?.gridTop ?? this.chartService.calculateGridTopLineBar(this.config) ?? 0,\n },\n\n xAxis: {\n show: !this.config?.isTrendChart,\n type: 'category',\n // boundaryGap: false,\n data: this.config?.xAxisData,\n name: this.config?.xAxisName || '',\n nameLocation: 'center',\n\n ...(this.config?.xAxis || {}),\n\n axisLine: {\n show: this.config?.showXAxisLine ?? true,\n ...(this.config?.xAxis?.axisLine || {}),\n lineStyle: {\n color: '#C0C2C5',\n width: 1,\n ...(this.config?.xAxis?.axisLine?.lineStyle || {}),\n },\n },\n axisTick: {\n show: false,\n ...(this.config?.xAxis?.axisTick || {}),\n },\n axisLabel: {\n show: this.config?.showXAxisLabel ?? true,\n color: '#434A51',\n fontSize: 12,\n alignMinLabel: 'left',\n alignMaxLabel: 'right',\n ...(this.config?.xAxis?.axisLabel || {}),\n },\n nameTextStyle: {\n color: '#434A51',\n fontSize: 14,\n fontWeight: 400,\n ...(this.config?.xAxis?.nameTextStyle || {}),\n },\n splitLine: {\n show: this.config?.showXAxisSplitLine ?? true,\n ...(this.config?.xAxis?.splitLine || {}),\n lineStyle: {\n type: 'dashed',\n color: '#C0C2C5',\n width: 1,\n ...(this.config?.xAxis?.splitLine?.lineStyle || {}),\n },\n },\n },\n\n yAxis: [\n {\n show: !this.config?.isTrendChart,\n type: 'value',\n boundaryGap: this.config?.isTrendChart ? [0.2] : undefined,\n name: this.config?.yAxisName || '',\n nameLocation: 'center',\n\n ...(this.config?.yAxis || {}),\n axisLine: {\n show: this.config?.showYAxisLine ?? true,\n ...(this.config?.yAxis?.axisLine || {}),\n lineStyle: {\n color: '#C0C2C5',\n width: 1,\n ...(this.config?.yAxis?.axisLine?.lineStyle || {}),\n },\n },\n axisTick: {\n show: false,\n ...(this.config?.yAxis?.axisTick || {}),\n },\n nameTextStyle: {\n color: '#434A51',\n fontSize: 14,\n fontWeight: 400,\n ...(this.config?.yAxis?.nameTextStyle || {}),\n },\n splitLine: {\n show: this.config?.showYAxisSplitLine ?? true,\n ...(this.config?.yAxis?.splitLine || {}),\n lineStyle: {\n type: 'dashed',\n color: '#C0C2C5',\n width: 1,\n ...(this.config?.yAxis?.splitLine?.lineStyle || {}),\n },\n },\n axisLabel: {\n show: this.config?.showYAxisLabel ?? true,\n color: '#434A51',\n fontSize: 12,\n formatter: (value: number) => {\n if (value === 0) {\n return '0';\n }\n\n const absValue = Math.abs(value);\n\n // Quadrillions\n if (absValue >= 1_000_000_000_000_000) {\n return `${+(value / 1_000_000_000_000_000).toFixed(1)}Q`;\n }\n\n // Trillions\n if (absValue >= 1_000_000_000_000) {\n return `${+(value / 1_000_000_000_000).toFixed(1)}T`;\n }\n\n // Billions\n if (absValue >= 1_000_000_000) {\n return `${+(value / 1_000_000_000).toFixed(1)}B`;\n }\n\n // Millions\n if (absValue >= 1_000_000) {\n return `${+(value / 1_000_000).toFixed(1)}M`;\n }\n\n // Thousands\n if (absValue >= 1_000) {\n return `${+(value / 1_000).toFixed(1)}K`;\n }\n\n // Decimal handling\n if (Number.isInteger(value)) {\n return value.toString();\n }\n\n return value;\n },\n ...(this.config?.yAxis?.axisLabel || {}),\n },\n },\n\n ...(this.config?.secondaryYAxis\n ? [\n {\n show: !this.config?.isTrendChart,\n type: 'value',\n boundaryGap: this.config?.isTrendChart ? [0.2] : undefined,\n name: this.config?.secondaryYAxisName || '',\n nameLocation: 'center',\n\n ...(this.config?.secondaryYAxisConfig || {}),\n\n axisLine: {\n show: this.config?.showYAxisLine ?? true,\n ...(this.config?.secondaryYAxisConfig?.axisLine || {}),\n lineStyle: {\n color: '#C0C2C5',\n width: 1,\n ...(this.config?.secondaryYAxisConfig?.axisLine?.lineStyle || {}),\n },\n },\n axisTick: {\n show: false,\n ...(this.config?.secondaryYAxisConfig?.axisTick || {}),\n },\n axisLabel: {\n show: this.config?.showSecondaryYAxisLabel ?? true,\n color: '#434A51',\n fontSize: 12,\n formatter: (value: number) => {\n if (value === 0) {\n return '0';\n }\n\n const absValue = Math.abs(value);\n\n // Quadrillions\n if (absValue >= 1_000_000_000_000_000) {\n return `${+(value / 1_000_000_000_000_000).toFixed(1)}Q`;\n }\n\n // Trillions\n if (absValue >= 1_000_000_000_000) {\n return `${+(value / 1_000_000_000_000).toFixed(1)}T`;\n }\n\n // Billions\n if (absValue >= 1_000_000_000) {\n return `${+(value / 1_000_000_000).toFixed(1)}B`;\n }\n\n // Millions\n if (absValue >= 1_000_000) {\n return `${+(value / 1_000_000).toFixed(1)}M`;\n }\n\n // Thousands\n if (absValue >= 1_000) {\n return `${+(value / 1_000).toFixed(1)}K`;\n }\n\n // Decimal handling\n if (Number.isInteger(value)) {\n return value.toString();\n }\n\n return value;\n },\n ...(this.config?.secondaryYAxisConfig?.axisLabel || {}),\n },\n nameTextStyle: {\n color: '#434A51',\n fontSize: 14,\n fontWeight: 400,\n ...(this.config?.secondaryYAxisConfig?.nameTextStyle || {}),\n },\n splitLine: {\n show: this.config?.showSecondaryYAxisSplitLine ?? true,\n ...(this.config?.secondaryYAxisConfig?.splitLine || {}),\n lineStyle: {\n type: 'dashed',\n color: '#C0C2C5',\n width: 1,\n ...(this.config?.secondaryYAxisConfig?.splitLine?.lineStyle || {}),\n },\n },\n },\n ]\n : []),\n ],\n\n series: (this.config?.series || [])?.map((s, i) => {\n const lineColor =\n s['color'] ||\n s['itemStyle']?.color ||\n s['lineStyle']?.color ||\n s.areaColor ||\n this.config.colors?.[i % (this.config.colors || []).length] ||\n '#3b82f6';\n\n return {\n type: 'line',\n smooth: s.smooth ?? true,\n areaStyle: s.area\n ? {\n color: {\n type: 'linear',\n x: 0,\n y: 0,\n x2: 0,\n y2: 1,\n colorStops: [\n {\n offset: 0,\n color: lineColor,\n },\n {\n offset: 1,\n color: this.chartService.hexToRgba(lineColor, 0),\n },\n ],\n },\n opacity: s.areaOpacity ?? 0.4,\n }\n : undefined,\n ...s,\n symbol: this.resolveSeriesSymbol(s['symbol']),\n label: {\n show: this.config?.showLabel ?? false,\n position: this.config?.labelPosition ?? 'top',\n ...(s['label'] ? s['label'] : {}),\n },\n itemStyle: {\n borderRadius: this.config?.borderRadius ?? 0,\n ...(s['itemStyle'] ? s['itemStyle'] : {}),\n },\n };\n }),\n toolbox: {\n right: -1000,\n feature: {\n dataZoom: {},\n },\n },\n dataZoom: [\n {\n type: 'inside',\n disabled: true,\n },\n ],\n };\n }\n\n private resolveSeriesSymbol(symbol?: string): string | undefined {\n switch (symbol) {\n case 'plus':\n return 'path://M-2,-8 L2,-8 L2,-2 L8,-2 L8,2 L2,2 L2,8 L-2,8 L-2,2 L-8,2 L-8,-2 L-2,-2 Z';\n case 'x':\n return 'path://M-6,-4 L-4,-6 L0,-2 L4,-6 L6,-4 L2,0 L6,4 L4,6 L0,2 L-4,6 L-6,4 L-2,0 Z';\n case 'thickLine':\n return 'path://M -8 -2 L 8 -2 L 8 2 L -8 2 Z';\n default:\n return symbol;\n }\n }\n\n enableDataZoom(active: boolean) {\n if (!this.chartInstance) return;\n\n this.chartInstance.dispatchAction({\n type: 'takeGlobalCursor',\n key: 'dataZoomSelect',\n dataZoomSelectActive: active,\n });\n }\n\n resetZoom() {\n if (!this.chartInstance) return;\n this.enableDataZoom(false);\n this.chartInstance.dispatchAction({\n type: 'dataZoom',\n start: 0,\n end: 100,\n });\n }\n\n /* ------------------ INIT ------------------ */\n onChartInit(ec: ECharts) {\n this.chartInstance = ec;\n this.buildOption();\n this.bindEvents();\n }\n\n /* ------------------ EVENTS ------------------ */\n private bindEvents() {\n if (!this.chartInstance) return;\n this.chartInstance.off();\n\n // Existing chart events\n this.events.forEach((eventName) => {\n if (eventName === 'contextmenu') {\n this.chartInstance.on('contextmenu', (params: any) => {\n const event = params?.event?.event;\n if (event) {\n event.preventDefault();\n\n const container = this.chartInstance.getDom();\n const rect = container.getBoundingClientRect();\n\n this.cardPosition = {\n x: event.clientX - rect.left,\n y: event.clientY - rect.top,\n };\n\n this.openCard = true;\n\n this.cdr.markForCheck();\n }\n this.chartEvent.emit({\n type: 'contextmenu',\n data: params,\n });\n });\n const zr = this.chartInstance.getZr();\n zr.on('contextmenu', (zrEvent: any) => {\n if (!zrEvent.target) {\n const nativeEvent = zrEvent.event;\n\n nativeEvent.preventDefault();\n\n const container = this.chartInstance.getDom();\n const rect = container.getBoundingClientRect();\n\n this.cardPosition = {\n x: nativeEvent.clientX - rect.left,\n y: nativeEvent.clientY - rect.top,\n };\n\n this.openCard = true;\n this.cdr.markForCheck();\n\n this.chartEvent.emit({\n type: 'contextmenu',\n data: { ...zrEvent, isZrEvent: true },\n });\n }\n });\n } else if (eventName === 'click') {\n this.chartInstance.on('click', (params: any) => {\n this.chartEvent.emit({\n type: 'click',\n data: params,\n });\n });\n const zr = this.chartInstance.getZr();\n zr.on('click', (zrEvent: any) => {\n if (!zrEvent.target) {\n const nativeEvent = zrEvent.event;\n nativeEvent.preventDefault();\n this.chartEvent.emit({\n type: 'blur',\n data: { ...zrEvent, type: 'blur' },\n });\n }\n });\n } else {\n this.chartInstance.on(eventName, (params: any) => {\n this.chartEvent.emit({\n type: eventName,\n data: params,\n });\n });\n }\n });\n }\n\n onMenuClick(item: any) {\n this.contextMenuClick.emit(item);\n this.closeCard();\n }\n\n @HostListener('document:click')\n closeCard() {\n this.openCard = false;\n }\n\n /* ------------------ DESTROY ------------------ */\n\n ngOnDestroy(): void {\n if (this.chartInstance) {\n this.chartInstance.off();\n this.chartInstance.dispose();\n }\n }\n\n onLegendEvent(event: ChartLegendEvent): void {\n this.legendEvent.emit(event);\n this.chartEvent.emit({\n type: `legend:${event.type}`,\n data: event,\n });\n }\n\n private readLegendSelected(): Record<string, boolean> {\n const option = this.chartInstance?.getOption?.() as\n | { legend?: Array<{ selected?: Record<string, boolean> }> }\n | undefined;\n\n return { ...(option?.legend?.[0]?.selected ?? {}) };\n }\n}\n","<div\n class=\"line-chart-shell\"\n [class.line-chart-shell--legend-left]=\"config.customLegend?.position === 'left'\"\n [class.line-chart-shell--legend-right]=\"config.customLegend?.position === 'right'\"\n [class.line-chart-shell--legend-bottom]=\"config.customLegend?.position === 'bottom'\"\n>\n @if (\n !config.hideLegend &&\n config.customLegend?.position !== 'bottom' &&\n config.customLegend?.position !== 'right'\n ) {\n <lib-chart-legend\n class=\"line-chart-shell__legend\"\n [class.line-chart-shell__legend--custom-width]=\"hasSideLegendWidth\"\n [style.--line-chart-legend-max-width]=\"legendShellMaxWidth\"\n [chart]=\"chartInstance\"\n [series]=\"config.series\"\n [colors]=\"config.colors || deafultColors\"\n [config]=\"config.customLegend || {}\"\n (legendEvent)=\"onLegendEvent($event)\"\n ></lib-chart-legend>\n }\n\n <div\n echarts\n [options]=\"chartOption\"\n [theme]=\"theme\"\n (chartInit)=\"onChartInit($event)\"\n class=\"chart-container\"\n ></div>\n\n @if (\n !config.hideLegend &&\n (config.customLegend?.position === 'bottom' || config.customLegend?.position === 'right')\n ) {\n <lib-chart-legend\n class=\"line-chart-shell__legend\"\n [class.line-chart-shell__legend--custom-width]=\"hasSideLegendWidth\"\n [style.--line-chart-legend-max-width]=\"legendShellMaxWidth\"\n [chart]=\"chartInstance\"\n [series]=\"config.series\"\n [colors]=\"config.colors || deafultColors\"\n [config]=\"config.customLegend || {}\"\n (legendEvent)=\"onLegendEvent($event)\"\n ></lib-chart-legend>\n }\n</div>\n@if (openCard) {\n <lib-right-click-card\n [cardOptions]=\"contextMenuOptions\"\n (contextMenuClick)=\"onMenuClick($event)\"\n [cardPosition]=\"cardPosition\"\n ></lib-right-click-card>\n}\n","import {\n Component,\n Input,\n Output,\n EventEmitter,\n SimpleChanges,\n HostListener,\n ChangeDetectorRef,\n ChangeDetectionStrategy,\n} from '@angular/core';\n\nimport * as echarts from 'echarts/core';\nimport { ECharts, EChartsCoreOption } from 'echarts/core';\n\nimport { NgxEchartsDirective, provideEchartsCore } from 'ngx-echarts';\nimport { BarChart as EBarChart } from 'echarts/charts';\n\nimport {\n TitleComponent,\n TooltipComponent,\n GridComponent,\n LegendComponent,\n DatasetComponent,\n DataZoomComponent,\n ToolboxComponent,\n DataZoomInsideComponent,\n MarkAreaComponent,\n MarkLineComponent,\n} from 'echarts/components';\n\nimport { CanvasRenderer } from 'echarts/renderers';\nimport { RightClickCard } from '../right-click-card';\nimport { ChartLegendComponent } from '../chart-legend';\nimport type {\n ChartLegendAlign,\n ChartLegendConfig,\n ChartLegendEvent,\n ChartLegendPosition,\n} from '../chart-legend';\nimport { BarChartConfig } from '../../modal/charts-modal';\nimport { Charts } from '../../service/charts';\n\necharts.use([\n EBarChart,\n TitleComponent,\n TooltipComponent,\n GridComponent,\n LegendComponent,\n DatasetComponent,\n CanvasRenderer,\n DataZoomComponent,\n ToolboxComponent,\n DataZoomInsideComponent,\n DataZoomComponent,\n MarkAreaComponent,\n MarkLineComponent,\n]);\n\n@Component({\n selector: 'lib-bar-chart',\n imports: [NgxEchartsDirective, RightClickCard, ChartLegendComponent],\n providers: [provideEchartsCore({ echarts })],\n templateUrl: './bar-chart.html',\n styleUrl: './bar-chart.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class BarChart {\n @Input() config: BarChartConfig = { xAxisData: [], series: [] };\n @Input() theme: any;\n @Input() events: string[] = [];\n @Input() contextMenuOptions: any[] = [];\n @Input() showContextMenu: boolean = false;\n\n @Output() contextMenuClick = new EventEmitter<any>();\n\n @Output() chartEvent = new EventEmitter<{\n type: string;\n data: any;\n }>();\n @Output() legendEvent = new EventEmitter<ChartLegendEvent>();\n chartOption!: EChartsCoreOption;\n chartInstance!: ECharts;\n cardPosition = { x: 0, y: 0 };\n openCard = false;\n\n constructor(\n private chartService: Charts,\n private cdr: ChangeDetectorRef,\n ) {}\n get deafultColors() {\n return this.chartService.defaultColors;\n }\n /* ------------------ CONFIG CHANGE ------------------ */\n\n ngOnChanges(changes: SimpleChanges): void {\n if (!this.config) return;\n\n if (changes['theme'] && this.chartInstance) {\n this.chartInstance.dispose();\n }\n\n this.buildOption();\n }\n\n private previousConfig: any = {\n xAxisName: '',\n yAxisName: '',\n secondaryYAxisName: '',\n };\n ngDoCheck(): void {\n if (!this.chartInstance || !this.config) return;\n\n const updateOption: any = {};\n\n if (this.previousConfig.xAxisName !== this.config.xAxisName) {\n this.previousConfig.xAxisName = this.config.xAxisName;\n\n updateOption.xAxis = {\n name: this.config?.xAxisName || '',\n };\n }\n\n if (this.previousConfig.yAxisName !== this.config.yAxisName) {\n this.previousConfig.yAxisName = this.config.yAxisName;\n\n updateOption.yAxis = [\n {\n name: this.config?.yAxisName || '',\n },\n ];\n }\n\n if (this.previousConfig.secondaryYAxisName !== this.config.secondaryYAxisName) {\n this.previousConfig.secondaryYAxisName = this.config.secondaryYAxisName;\n\n updateOption.yAxis = [\n {\n name: this.config?.yAxisName || '',\n },\n {\n name: this.config?.secondaryYAxisName || '',\n },\n ];\n }\n\n if (Object.keys(updateOption).length) {\n this.chartInstance.setOption(updateOption);\n }\n }\n\n moveLeft() {\n this.moveZoom(-10);\n }\n\n moveRight() {\n this.moveZoom(10);\n }\n\n moveZoom(step: number) {\n const option: any = this.chartInstance.getOption();\n const zoom = option.dataZoom?.[0];\n if (!zoom) return;\n let start = zoom.start ?? 0;\n let end = zoom.end ?? 100;\n\n const windowSize = end - start;\n if ((step < 0 && start <= 0) || (step > 0 && end >= 100)) {\n return;\n }\n\n let newStart = start + step;\n let newEnd = end + step;\n\n if (newStart < 0) {\n newStart = 0;\n newEnd = windowSize;\n }\n\n if (newEnd > 100) {\n newEnd = 100;\n newStart = 100 - windowSize;\n }\n\n this.chartInstance.dispatchAction({\n type: 'dataZoom',\n start: newStart,\n end: newEnd,\n });\n }\n\n /* ------------------ OPTION BUILDER ------------------ */\n\n private buildOption() {\n const selected = this.readLegendSelected();\n const selectedMode = this.config?.customLegend?.selectionMode === 'exclusive' ? 'single' : true;\n\n // Common chart option\n this.chartOption = {\n backgroundColor: 'transparent',\n color: this.config?.colors || this.chartService.defaultColors,\n title: {\n show: this.config?.showTitle ?? !!this.config?.title,\n text: this.config?.title,\n left: this.config?.titlePosition || 'center',\n },\n\n tooltip: {\n show: this.config?.showTooltip,\n trigger: 'axis',\n backgroundColor: 'transparent', // remove default box\n borderWidth: 0,\n padding: 0,\n confine: true,\n formatter: (params: any) =>\n this.config.tooltipFormatter\n ? this.config.tooltipFormatter(params)\n : this.chartService.barLineTooltipFormatter(params),\n },\n legend: {\n show: false,\n data: (this.config?.series ?? []).map((series) => series.name),\n selected,\n selectedMode,\n },\n grid: {\n left: this.config.gridLeft ?? 0,\n right: this.config.gridRight ?? 0,\n bottom: this.config.gridBottom ?? 0,\n top: this.config.gridTop ?? this.chartService.calculateGridTopLineBar(this.config) ?? 0,\n },\n\n xAxis: {\n type: 'category',\n data: this.config?.xAxisData,\n name: this.config?.xAxisName || '',\n nameLocation: 'center',\n\n ...(this.config?.xAxis || {}),\n axisLine: {\n show: this.config?.showXAxisLine ?? true,\n ...(this.config?.xAxis?.axisLine || {}),\n lineStyle: {\n color: '#C0C2C5',\n width: 1,\n ...(this.config?.xAxis?.axisLine?.lineStyle || {}),\n },\n },\n axisTick: {\n show: false,\n ...(this.config?.xAxis?.axisTick || {}),\n },\n axisLabel: {\n show: this.config?.showXAxisLabel ?? true,\n color: '#434A51',\n fontSize: 12,\n alignMinLabel: 'left',\n alignMaxLabel: 'right',\n ...(this.config?.xAxis?.axisLabel || {}),\n },\n nameTextStyle: {\n color: '#434A51',\n fontSize: 14,\n fontWeight: 400,\n ...(this.config?.xAxis?.nameTextStyle || {}),\n },\n splitLine: {\n show: this.config?.showXAxisSplitLine ?? true,\n ...(this.config?.xAxis?.splitLine || {}),\n lineStyle: {\n type: 'dashed',\n color: '#C0C2C5',\n width: 1,\n ...(this.config?.xAxis?.splitLine?.lineStyle || {}),\n },\n },\n },\n\n yAxis: [\n {\n type: 'value',\n name: this.config?.yAxisName || '',\n nameLocation: 'center',\n\n ...(this.config?.yAxis || {}),\n axisLine: {\n show: this.config?.showYAxisLine ?? true,\n ...(this.config?.yAxis?.axisLine || {}),\n lineStyle: {\n color: '#C0C2C5',\n width: 1,\n ...(this.config?.yAxis?.lineStyle || {}),\n },\n },\n axisTick: {\n show: false,\n ...(this.config?.yAxis?.axisTick || {}),\n },\n nameTextStyle: {\n color: '#434A51',\n fontSize: 14,\n fontWeight: 400,\n ...(this.config?.yAxis?.nameTextStyle || {}),\n },\n axisLabel: {\n show: this.config?.showYAxisLabel ?? true,\n color: '#434A51',\n fontSize: 12,\n formatter: (value: number) => {\n if (value === 0) {\n return '0';\n }\n\n const absValue = Math.abs(value);\n\n // Quadrillions\n if (absValue >= 1_000_000_000_000_000) {\n return `${+(value / 1_000_000_000_000_000).toFixed(1)}Q`;\n }\n\n // Trillions\n if (absValue >= 1_000_000_000_000) {\n return `${+(value / 1_000_000_000_000).toFixed(1)}T`;\n }\n\n // Billions\n if (absValue >= 1_000_000_000) {\n return `${+(value / 1_000_000_000).toFixed(1)}B`;\n }\n\n // Millions\n if (absValue >= 1_000_000) {\n return `${+(value / 1_000_000).toFixed(1)}M`;\n }\n\n // Thousands\n if (absValue >= 1_000) {\n return `${+(value / 1_000).toFixed(1)}K`;\n }\n\n // Decimal handling\n if (Number.isInteger(value)) {\n return value.toString();\n }\n\n return value;\n },\n ...(this.config?.yAxis?.axisLabel || {}),\n },\n splitLine: {\n show: this.config?.showYAxisSplitLine ?? true,\n ...(this.config?.yAxis?.splitLine || {}),\n lineStyle: {\n type: 'dashed',\n color: '#C0C2C5',\n width: 1,\n ...(this.config?.yAxis?.splitLine?.lineStyle || {}),\n },\n },\n },\n ...(this.config?.secondaryYAxis\n ? [\n {\n type: 'value',\n name: this.config?.secondaryYAxisName || '',\n nameLocation: 'center',\n\n ...(this.config?.secondaryYAxisConfig || {}),\n\n axisLine: {\n show: this.config?.showYAxisLine ?? true,\n ...(this.config?.secondaryYAxisConfig?.axisLine || {}),\n lineStyle: {\n color: '#C0C2C5',\n width: 1,\n ...(this.config?.secondaryYAxisConfig?.axisLine?.lineStyle || {}),\n },\n },\n axisTick: {\n show: false,\n ...(this.config?.secondaryYAxisConfig?.axisTick || {}),\n },\n axisLabel: {\n show: this.config?.showSecondaryYAxisLabel ?? true,\n color: '#434A51',\n fontSize: 12,\n formatter: (value: number) => {\n if (value === 0) {\n return '0';\n }\n\n const absValue = Math.abs(value);\n\n // Quadrillions\n if (absValue >= 1_000_000_000_000_000) {\n return `${+(value / 1_000_000_000_000_000).toFixed(1)}Q`;\n }\n\n // Trillions\n if (absValue >= 1_000_000_000_000) {\n return `${+(value / 1_000_000_000_000).toFixed(1)}T`;\n }\n\n // Billions\n if (absValue >= 1_000_000_000) {\n return `${+(value / 1_000_000_000).toFixed(1)}B`;\n }\n\n // Millions\n if (absValue >= 1_000_000) {\n return `${+(value / 1_000_000).toFixed(1)}M`;\n }\n\n // Thousands\n if (absValue >= 1_000) {\n return `${+(value / 1_000).toFixed(1)}K`;\n }\n\n // Decimal handling\n if (Number.isInteger(value)) {\n return value.toString();\n }\n\n return value;\n },\n ...(this.config?.secondaryYAxisConfig?.axisLabel || {}),\n },\n nameTextStyle: {\n color: '#434A51',\n fontSize: 14,\n fontWeight: 400,\n ...(this.config?.secondaryYAxisConfig?.nameTextStyle || {}),\n },\n splitLine: {\n show: this.config?.showSecondaryYAxisSplitLine ?? true,\n ...(this.config?.secondaryYAxisConfig?.splitLine || {}),\n lineStyle: {\n type: 'dashed',\n color: '#C0C2C5',\n width: 1,\n ...(this.config?.secondaryYAxisConfig?.splitLine?.lineStyle || {}),\n },\n },\n },\n ]\n : []),\n ],\n\n series: (this.config?.series || [])?.map((s) => {\n return {\n type: 'bar',\n stack: this.config?.stacked ? 'total' : undefined,\n emphasis: {\n scale: false,\n },\n ...(this.config?.barWidth && { barWidth: this.config?.barWidth }),\n ...(this.config?.barMaxWidth && { barMaxWidth: this.config?.barMaxWidth }),\n ...s,\n label: {\n show: this.config?.showLabel ?? false,\n position: this.config?.labelPosition ?? 'top',\n ...(s['label'] ? s['label'] : {}),\n },\n itemStyle: {\n borderRadius: this.config?.borderRadius ?? 0,\n ...(s['itemStyle'] ? s['itemStyle'] : {}),\n },\n };\n }),\n\n ...(this.config?.showZoomSlider\n ? {\n dataZoom: [\n {\n type: 'slider',\n show: true,\n xAxisIndex: 0,\n bottom: 0,\n height: 8,\n ...(this.config.zoomStart && { start: this.config.zoomStart }),\n ...(this.config.zoomEnd && { end: this.config.zoomEnd }),\n // UI styling\n backgroundColor: '#F0F0F0',\n fillerColor: '#81858A',\n borderColor: 'transparent',\n borderRadius: 100,\n handleSize: 0,\n brushSelect: false,\n handleStyle: {\n color: '#F0F0F0',\n },\n textStyle: {\n color: 'transparent',\n },\n dataBackground: {\n lineStyle: {\n color: 'transparent',\n },\n areaStyle: {\n color: 'transparent',\n },\n },\n selectedDataBackground: {\n lineStyle: {\n color: 'transparent',\n },\n areaStyle: {\n color: 'transparent',\n },\n },\n\n moveHandleSize: 0,\n },\n {\n type: 'inside',\n xAxisIndex: 0,\n },\n ],\n }\n : {\n toolbox: {\n right: -1000,\n feature: {\n dataZoom: {},\n },\n },\n dataZoom: [\n {\n type: 'inside',\n disabled: true,\n },\n ],\n }),\n };\n }\n\n enableDataZoom(active: boolean) {\n if (!this.chartInstance) return;\n\n this.chartInstance.dispatchAction({\n type: 'takeGlobalCursor',\n key: 'dataZoomSelect',\n dataZoomSelectActive: active,\n });\n }\n\n resetZoom() {\n if (!this.chartInstance) return;\n this.enableDataZoom(false);\n this.chartInstance.dispatchAction({\n type: 'dataZoom',\n start: 0,\n end: 100,\n });\n }\n\n get hasSideLegendWidth(): boolean {\n return this.isSideLegend && !!this.config.customLegend?.maxWidth;\n }\n\n get legendShellMaxWidth(): string | null {\n return this.isSideLegend ? (this.config.customLegend?.maxWidth ?? null) : null;\n }\n\n private get isSideLegend(): boolean {\n return (\n this.config.customLegend?.position === 'left' ||\n this.config.customLegend?.position === 'right'\n );\n }\n\n onLegendEvent(event: ChartLegendEvent): void {\n this.legendEvent.emit(event);\n this.chartEvent.emit({\n type: `legend:${event.type}`,\n data: event,\n });\n }\n\n private readLegendSelected(): Record<string, boolean> {\n const option = this.chartInstance?.getOption?.() as\n | { legend?: Array<{ selected?: Record<string, boolean> }> }\n | undefined;\n\n return { ...(option?.legend?.[0]?.selected ?? {}) };\n }\n\n /* ------------------ INIT ------------------ */\n\n onChartInit(ec: ECharts) {\n this.chartInstance = ec;\n this.buildOption();\n this.bindEvents();\n }\n\n /* ------------------ EVENTS ------------------ */\n private bindEvents() {\n if (!this.chartInstance) return;\n this.chartInstance.off();\n\n // Existing chart events\n this.events.forEach((eventName) => {\n if (eventName === 'contextmenu') {\n this.chartInstance.on('contextmenu', (params: any) => {\n const event = params?.event?.event;\n if (event) {\n event.preventDefault();\n\n const container = this.chartInstance.getDom();\n const rect = container.getBoundingClientRect();\n\n this.cardPosition = {\n x: event.clientX - rect.left,\n y: event.clientY - rect.top,\n };\n\n this.openCard = true;\n\n this.cdr.markForCheck();\n }\n this.chartEvent.emit({\n type: 'contextmenu',\n data: params,\n });\n });\n const zr = this.chartInstance.getZr();\n zr.on('contextmenu', (zrEvent: any) => {\n if (!zrEvent.target) {\n const nativeEvent = zrEvent.event;\n\n nativeEvent.preventDefault();\n\n const container = this.chartInstance.getDom();\n const rect = container.getBoundingClientRect();\n\n this.cardPosition = {\n x: nativeEvent.clientX - rect.left,\n y: nativeEvent.clientY - rect.top,\n };\n\n this.openCard = true;\n this.cdr.markForCheck();\n\n this.chartEvent.emit({\n type: 'contextmenu',\n data: { ...zrEvent, isZrEvent: true },\n });\n }\n });\n } else if (eventName === 'click') {\n this.chartInstance.on('click', (params: any) => {\n this.chartEvent.emit({\n type: 'click',\n data: params,\n });\n });\n const zr = this.chartInstance.getZr();\n zr.on('click', (zrEvent: any) => {\n if (!zrEvent.target) {\n const nativeEvent = zrEvent.event;\n nativeEvent.preventDefault();\n this.chartEvent.emit({\n type: 'blur',\n data: { ...zrEvent, type: 'blur' },\n });\n }\n });\n } else {\n this.chartInstance.on(eventName, (params: any) => {\n this.chartEvent.emit({\n type: eventName,\n data: params,\n });\n });\n }\n });\n }\n\n /* ------------------ CONTEXT MENU ------------------ */\n\n onMenuClick(item: any) {\n this.contextMenuClick.emit(item);\n this.closeCard();\n }\n\n @HostListener('document:click')\n closeCard() {\n this.openCard = false;\n }\n\n /* ------------------ DESTROY ------------------ */\n\n ngOnDestroy(): void {\n if (this.chartInstance) {\n this.chartInstance.off();\n this.chartInstance.dispose();\n }\n }\n}\n","<div\n class=\"bar-chart-shell\"\n [class.bar-chart-shell--legend-left]=\"config.customLegend?.position === 'left'\"\n [class.bar-chart-shell--legend-right]=\"config.customLegend?.position === 'right'\"\n [class.bar-chart-shell--legend-bottom]=\"config.customLegend?.position === 'bottom'\"\n>\n @if (\n !config.hideLegend &&\n config.customLegend?.position !== 'bottom' &&\n config.customLegend?.position !== 'right'\n ) {\n <lib-chart-legend\n class=\"bar-chart-shell__legend\"\n [class.line-chart-shell__legend--custom-width]=\"hasSideLegendWidth\"\n [style.--line-chart-legend-max-width]=\"legendShellMaxWidth\"\n [chart]=\"chartInstance\"\n [series]=\"config.series\"\n [colors]=\"config.colors || deafultColors\"\n [config]=\"config.customLegend || {}\"\n (legendEvent)=\"onLegendEvent($event)\"\n ></lib-chart-legend>\n }\n\n <div\n echarts\n [options]=\"chartOption\"\n [theme]=\"theme\"\n (chartInit)=\"onChartInit($event)\"\n class=\"chart-container\"\n ></div>\n\n @if (\n !config.hideLegend &&\n (config.customLegend?.position === 'bottom' || config.customLegend?.position === 'right')\n ) {\n <lib-chart-legend\n class=\"bar-chart-shell__legend\"\n [class.line-chart-shell__legend--custom-width]=\"hasSideLegendWidth\"\n [style.--line-chart-legend-max-width]=\"legendShellMaxWidth\"\n [chart]=\"chartInstance\"\n [series]=\"config.series\"\n [colors]=\"config.colors || deafultColors\"\n [config]=\"config.customLegend || {}\"\n (legendEvent)=\"onLegendEvent($event)\"\n ></lib-chart-legend>\n }\n</div>\n@if (config.showZoomSlider) {\n <div class=\"zoom-controls\" [style]=\"config.zoomControlButtonStyle\">\n <button (click)=\"moveLeft()\"><img src=\"images/leftArrow.svg\" alt=\">\" /></button>\n <button (click)=\"moveRight()\"><img src=\"images/rightArrow.svg\" alt=\"<\" /></button>\n </div>\n}\n@if (openCard) {\n <lib-right-click-card\n [cardOptions]=\"contextMenuOptions\"\n (contextMenuClick)=\"onMenuClick($event)\"\n [cardPosition]=\"cardPosition\"\n ></lib-right-click-card>\n}\n","import {\n Component,\n Input,\n Output,\n EventEmitter,\n SimpleChanges,\n HostListener,\n ChangeDetectorRef,\n ChangeDetectionStrategy,\n} from '@angular/core';\n\nimport * as echarts from 'echarts/core';\nimport { ECharts, EChartsCoreOption } from 'echarts/core';\nimport { NgxEchartsDirective, provideEchartsCore } from 'ngx-echarts';\nimport { PieChart as EPieChart } from 'echarts/charts';\nimport { TitleComponent, TooltipComponent, LegendComponent } from 'echarts/components';\nimport { CanvasRenderer } from 'echarts/renderers';\nimport { RightClickCard } from '../right-click-card';\nimport { PieChartConfig } from '../../modal/charts-modal';\nimport { Charts } from '../../service/charts';\n\necharts.use([EPieChart, TitleComponent, TooltipComponent, LegendComponent, CanvasRenderer]);\n@Component({\n selector: 'lib-pie-chart',\n imports: [NgxEchartsDirective, RightClickCard],\n providers: [provideEchartsCore({ echarts })],\n templateUrl: './pie-chart.html',\n styleUrl: './pie-chart.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class PieChart {\n /* -------------------- Inputs -------------------- */\n\n @Input() config!: PieChartConfig;\n @Input() theme: any;\n @Input() events: string[] = [];\n @Input() cardOptions: any[] = [];\n\n /* -------------------- Outputs -------------------- */\n\n @Output() chartEvent = new EventEmitter<{ type: string; data: any }>();\n @Output() cardOptionClick = new EventEmitter<any>();\n\n /* -------------------- Local State -------------------- */\n\n chartOption!: EChartsCoreOption;\n private chartInstance!: ECharts;\n\n openCard = false;\n cardPosition = { x: 0, y: 0 };\n\n constructor(\n private chartService: Charts,\n private cdr: ChangeDetectorRef,\n ) {}\n\n /* -------------------- Lifecycle -------------------- */\n\n ngOnChanges(changes: SimpleChanges): void {\n if (!this.config) return;\n\n // If theme changes → dispose instance\n if (changes['theme'] && this.chartInstance) {\n this.chartInstance.dispose();\n }\n\n this.buildOption();\n }\n\n ngOnDestroy(): void {\n if (this.chartInstance) {\n this.chartInstance.off();\n this.chartInstance?.dispose();\n }\n }\n\n /* -------------------- Chart Init -------------------- */\n\n onChartInit(ec: ECharts) {\n this.chartInstance = ec;\n this.buildOption();\n this.bindEvents();\n }\n\n /* -------------------- Build Option -------------------- */\n\n private buildOption(): void {\n const total = this.config.data?.reduce((sum, item) => sum + item.value, 0);\n\n this.chartOption = {\n backgroundColor: this.config?.backgroundColor ?? 'transparent',\n\n title: {\n show: this.config.showTitle ?? !!this.config.title,\n text: this.config.title,\n left: this.config.titlePosition ?? 'center',\n },\n\n tooltip: {\n show: this.config.showTooltip ?? true,\n trigger: 'item',\n backgroundColor: 'transparent', // remove default box\n borderWidth: 0,\n padding: 0,\n confine: true,\n formatter: (params: any) =>\n this.config.tooltipFormatter\n ? this.config.tooltipFormatter(params, this.config)\n : this.chartService.pieTooltipFormatter(params, this.config),\n },\n\n legend: { show: false },\n\n graphic:\n this.chartInstance && !this.config.hideLegend\n ? this.chartService.buildGraphicLegend(total, this.config, this.chartInstance)\n : undefined,\n\n series: [\n {\n type: 'pie',\n top: this.config.top ?? 0,\n bottom: this.config.bottom ?? 0,\n radius: this.config.radius ?? '60%',\n center: this.config.center ?? ['50%', '50%'],\n data: this.config?.data || [],\n color: this.config.colors,\n\n label: {\n show: this.config.showLabel ?? false,\n position: this.config.labelPosition ?? 'outside',\n formatter: (params: any) => {\n const percent = ((params.value / total) * 100).toFixed(1);\n\n let text = params.name;\n if (this.config.showLabelValue) text += `\\n${params.value}`;\n if (this.config.showLabelPercentage) text += `\\n${percent}%`;\n\n return text;\n },\n },\n\n itemStyle: {\n borderRadius: this.config.borderRadius ?? 0,\n borderColor: this.config.borderColor ?? '#fff',\n borderWidth: this.config.borderWidth ?? 0,\n },\n\n emphasis:\n (this.config.enableHoverEffect ?? true)\n ? {\n itemStyle: {\n shadowBlur: 10,\n shadowOffsetX: 0,\n },\n }\n : undefined,\n },\n ],\n };\n }\n\n /* -------------------- Events -------------------- */\n\n private bindEvents(): void {\n if (!this.chartInstance) return;\n\n this.chartInstance.off();\n\n this.events.forEach((eventName) => {\n this.chartInstance.on(eventName, (params: any) => {\n if (eventName === 'contextmenu') {\n params.event?.event?.preventDefault();\n const container = this.chartInstance.getDom();\n const rect = container.getBoundingClientRect();\n\n this.cardPosition = {\n x: params.event.event.clientX - rect.left,\n y: params.event.event.clientY - rect.top,\n };\n\n this.openCard = true;\n this.cdr.markForCheck();\n }\n\n this.chartEvent.emit({ type: eventName, data: params });\n });\n });\n }\n\n onMenuClick(item: any) {\n this.cardOptionClick.emit(item);\n this.closeCard();\n }\n\n @HostListener('document:click')\n closeCard() {\n this.openCard = false;\n }\n}\n","<div\n echarts\n [options]=\"chartOption\"\n [theme]=\"theme\"\n class=\"chart-container\"\n (chartInit)=\"onChartInit($event)\"\n></div>\n\n@if (openCard) {\n <lib-right-click-card\n [cardOptions]=\"cardOptions\"\n [cardPosition]=\"cardPosition\"\n (contextMenuClick)=\"onMenuClick($event)\"\n >\n </lib-right-click-card>\n}\n","import {\n Component,\n Input,\n Output,\n EventEmitter,\n SimpleChanges,\n HostListener,\n ChangeDetectorRef,\n ChangeDetectionStrategy,\n} from '@angular/core';\nimport * as echarts from 'echarts/core';\nimport { ECharts, EChartsCoreOption } from 'echarts/core';\nimport { NgxEchartsDirective, provideEchartsCore } from 'ngx-echarts';\nimport { PieChart as EPieChart } from 'echarts/charts';\nimport { TitleComponent, TooltipComponent, LegendComponent } from 'echarts/components';\nimport { CanvasRenderer } from 'echarts/renderers';\nimport { RightClickCard } from '../right-click-card';\nimport { ChartLegendComponent } from '../chart-legend';\nimport type { ChartLegendEvent } from '../chart-legend';\nimport { DoughnutChartConfig } from '../../modal/charts-modal';\nimport { Charts } from '../../service/charts';\n\necharts.use([EPieChart, TitleComponent, TooltipComponent, LegendComponent, CanvasRenderer]);\n\n@Component({\n selector: 'lib-doughnut-chart',\n imports: [NgxEchartsDirective, RightClickCard, ChartLegendComponent],\n providers: [provideEchartsCore({ echarts })],\n templateUrl: './doughnut-chart.html',\n styleUrl: './doughnut-chart.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class DoughnutChart {\n @Input() config!: DoughnutChartConfig;\n @Input() theme: any;\n @Input() events: string[] = [];\n @Input() contextMenuOptions: any[] = [];\n @Input() showContextMenu: boolean = false;\n\n @Output() contextMenuClick = new EventEmitter<any>();\n @Output() chartEvent = new EventEmitter<{\n type: string;\n data: any;\n }>();\n @Output() legendEvent = new EventEmitter<ChartLegendEvent>();\n cardPosition = { x: 0, y: 0 };\n openCard: boolean = false;\n chartOption!: EChartsCoreOption;\n chartInstance!: ECharts;\n constructor(\n private chartService: Charts,\n private cdr: ChangeDetectorRef,\n ) {}\n\n get deafultColors() {\n return this.chartService.defaultColors;\n }\n /* ------------------ CONFIG CHANGE ------------------ */\n ngOnChanges(changes: SimpleChanges): void {\n if (!this.config) return;\n // If theme changes → dispose instance\n if (changes['theme'] && this.chartInstance) {\n this.chartInstance.dispose();\n }\n // Rebuild option when config changes\n this.buildOption();\n }\n // card open on right click\n /**\n * @description Determines whether menu click on\n * @author Shiva Kant\n * @param item\n */\n onMenuClick(item: any) {\n this.contextMenuClick.emit(item);\n\n this.closeCard();\n }\n\n /**\n * @description Hosts listener\n * @author Shiva Kant\n */\n @HostListener('document:click')\n closeCard() {\n this.openCard = false;\n }\n /* ------------------ OPTION BUILDER ------------------ */\n /**\n * @description Builds option\n * @author Shiva Kant\n * @param config\n * @returns option\n */\n buildOption() {\n const selected = this.readLegendSelected();\n const selectedMode = this.config?.customLegend?.selectionMode === 'exclusive' ? 'single' : true;\n\n const total = this.config?.data?.reduce((sum, item) => sum + item.value, 0);\n const seriesData = (this.config?.data || [])?.map((d) => ({\n ...d,\n ...(!d.value && {\n itemStyle: {\n color: total === 0 ? '#d3d3d3' : undefined,\n borderWidth: total == 0 ? (this.config.borderWidth ?? 2) : 0,\n },\n }), // grey\n }));\n\n const innerRadius = this.config.innerRadius ?? '70%';\n const outerRadius = this.config.outerRadius ?? '90%';\n\n this.chartOption = {\n backgroundColor: this.config?.backgroundColor || 'transparent',\n color: this.config.colors ?? this.chartService.defaultColors,\n title: {\n show: this.config.showTitle ?? !!this.config.title,\n text: this.config.title,\n left: this.config.titlePosition || 'center',\n },\n tooltip: {\n show: this.config.showTooltip ?? true,\n trigger: 'item',\n backgroundColor: 'transparent', // remove default box\n borderWidth: 0,\n padding: 0,\n confine: true,\n formatter: (params: any) =>\n this.config.tooltipFormatter\n ? this.config.tooltipFormatter(params, this.config)\n : this.chartService.pieTooltipFormatter(params, this.config),\n ...this.config.tooltip,\n },\n\n legend: {\n show: false,\n data: (this.config?.data ?? []).map((series) => series.name),\n selected,\n selectedMode,\n },\n\n series: this.config.series?.length\n ? this.config.series.map((s) => {\n return { type: 'pie', ...s };\n })\n : [\n {\n type: 'pie',\n top: this.config.top ?? 0,\n bottom: this.config.bottom ?? 0,\n radius: [innerRadius, outerRadius],\n center: this.config.center ?? ['50%', '50%'],\n data: seriesData,\n\n // label: {\n // show: this.config.showLabel ?? false,\n // position: this.config.labelPosition ?? 'outside',\n // },\n\n label: {\n show: this.config?.centerLabel?.show ?? false,\n position: 'center',\n formatter: (value: any) => {\n if (this.config?.centerLabel?.formatter) {\n return this.config.centerLabel.formatter(value, total, this.config.data);\n }\n const title = this.config?.centerLabel?.title || '';\n const centerValue = this.config?.centerLabel?.value;\n return `{title|${title}}${\n centerValue !== undefined && centerValue !== null && centerValue !== ''\n ? `\\n{desc|${centerValue}}`\n : ''\n }`;\n },\n rich: {\n title: {\n fontSize: this.config?.centerLabel?.fontSizeTitle || 12,\n fontWeight: this.config?.centerLabel?.fontWeightTitle || 400,\n color: this.config?.centerLabel?.titleColor || '#111827',\n lineHeight: this.config?.centerLabel?.titleLineheight || 20,\n },\n\n desc: {\n fontSize: this.config?.centerLabel?.fontSizeValue || 12,\n fontWeight: this.config?.centerLabel?.fontWeightValue || 600,\n color: this.config?.centerLabel?.valueColor || '#6B7280',\n lineHeight: this.config?.centerLabel?.valueLineheight || 20,\n },\n },\n ...(this.config?.label || {}),\n },\n\n itemStyle: {\n borderRadius: this.config.borderRadius ?? 8,\n borderColor: this.config.borderColor || '#fff',\n borderWidth: this.config.borderWidth ?? 2,\n },\n emphasis: {\n scale: this.config.emphasisScale,\n },\n },\n ],\n };\n }\n\n get hasSideLegendWidth(): boolean {\n return this.isSideLegend && !!this.config.customLegend?.maxWidth;\n }\n\n get legendShellMaxWidth(): string | null {\n return this.isSideLegend ? (this.config.customLegend?.maxWidth ?? null) : null;\n }\n\n private get isSideLegend(): boolean {\n return (\n this.config.customLegend?.position === 'left' ||\n this.config.customLegend?.position === 'right'\n );\n }\n\n onLegendEvent(event: ChartLegendEvent): void {\n this.legendEvent.emit(event);\n this.chartEvent.emit({\n type: `legend:${event.type}`,\n data: event,\n });\n }\n\n private readLegendSelected(): Record<string, boolean> {\n const option = this.chartInstance?.getOption?.() as\n | { legend?: Array<{ selected?: Record<string, boolean> }> }\n | undefined;\n\n return { ...(option?.legend?.[0]?.selected ?? {}) };\n }\n\n /* ------------------ INIT ------------------ */\n /**\n * @description Determines whether chart init on\n * @author Shiva Kant\n * @param ec\n * @param [container]\n */\n onChartInit(ec: ECharts) {\n this.chartInstance = ec;\n this.buildOption();\n this.bindEvents();\n }\n @HostListener('window:resize')\n onResize() {\n this.chartInstance?.resize();\n }\n /* ------------------ EVENTS ------------------ */\n /**\n * @description Binds events\n * @author Shiva Kant\n * @returns\n */\n private bindEvents() {\n if (!this.chartInstance) return;\n this.chartInstance.off();\n\n // Existing chart events\n this.events.forEach((eventName) => {\n if (eventName === 'contextmenu') {\n this.chartInstance.on('contextmenu', (params: any) => {\n const event = params?.event?.event;\n if (event) {\n event.preventDefault();\n\n const container = this.chartInstance.getDom();\n const rect = container.getBoundingClientRect();\n\n this.cardPosition = {\n x: event.clientX - rect.left,\n y: event.clientY - rect.top,\n };\n\n this.openCard = true;\n\n this.cdr.markForCheck();\n }\n this.chartEvent.emit({\n type: 'contextmenu',\n data: params,\n });\n });\n const zr = this.chartInstance.getZr();\n zr.on('contextmenu', (zrEvent: any) => {\n if (!zrEvent.target) {\n const nativeEvent = zrEvent.event;\n\n nativeEvent.preventDefault();\n\n const container = this.chartInstance.getDom();\n const rect = container.getBoundingClientRect();\n\n this.cardPosition = {\n x: nativeEvent.clientX - rect.left,\n y: nativeEvent.clientY - rect.top,\n };\n\n this.openCard = true;\n this.cdr.markForCheck();\n\n this.chartEvent.emit({\n type: 'contextmenu',\n data: { ...zrEvent, isZrEvent: true },\n });\n }\n });\n } else if (eventName === 'click') {\n this.chartInstance.on('click', (params: any) => {\n this.chartEvent.emit({\n type: 'click',\n data: params,\n });\n });\n const zr = this.chartInstance.getZr();\n zr.on('click', (zrEvent: any) => {\n if (!zrEvent.target) {\n const nativeEvent = zrEvent.event;\n nativeEvent.preventDefault();\n this.chartEvent.emit({\n type: 'blur',\n data: { ...zrEvent, type: 'blur' },\n });\n }\n });\n } else {\n this.chartInstance.on(eventName, (params: any) => {\n this.chartEvent.emit({\n type: eventName,\n data: params,\n });\n });\n }\n });\n }\n\n /* ------------------ DESTROY ------------------ */\n ngOnDestroy(): void {\n if (this.chartInstance) {\n this.chartInstance.off();\n this.chartInstance?.dispose();\n }\n }\n}\n","<div\n class=\"doughnut-chart-shell\"\n [class.doughnut-chart-shell--legend-left]=\"config.customLegend?.position === 'left'\"\n [class.doughnut-chart-shell--legend-right]=\"config.customLegend?.position === 'right'\"\n [class.doughnut-chart-shell--legend-bottom]=\"config.customLegend?.position === 'bottom'\"\n>\n @if (\n !config.hideLegend &&\n config.customLegend?.position !== 'bottom' &&\n config.customLegend?.position !== 'right'\n ) {\n <lib-chart-legend\n class=\"doughnut-chart-shell__legend\"\n [class.doughnut-chart-shell__legend--custom-width]=\"hasSideLegendWidth\"\n [style.--doughnut-chart-legend-max-width]=\"legendShellMaxWidth\"\n [chart]=\"chartInstance\"\n [series]=\"config.data || []\"\n [colors]=\"config.colors || deafultColors\"\n [config]=\"config.customLegend || {}\"\n (legendEvent)=\"onLegendEvent($event)\"\n ></lib-chart-legend>\n }\n\n <div\n echarts\n [options]=\"chartOption\"\n [theme]=\"theme\"\n class=\"chart-container\"\n (chartInit)=\"onChartInit($event)\"\n ></div>\n\n @if (\n !config.hideLegend &&\n (config.customLegend?.position === 'bottom' || config.customLegend?.position === 'right')\n ) {\n <lib-chart-legend\n class=\"doughnut-chart-shell__legend\"\n [class.doughnut-chart-shell__legend--custom-width]=\"hasSideLegendWidth\"\n [style.--doughnut-chart-legend-max-width]=\"legendShellMaxWidth\"\n [chart]=\"chartInstance\"\n [series]=\"config.data\"\n [colors]=\"config.colors || deafultColors\"\n [config]=\"config.customLegend || {}\"\n (legendEvent)=\"onLegendEvent($event)\"\n ></lib-chart-legend>\n }\n</div>\n@if (openCard) {\n <lib-right-click-card\n [cardOptions]=\"contextMenuOptions\"\n (contextMenuClick)=\"onMenuClick($event)\"\n [cardPosition]=\"cardPosition\"\n ></lib-right-click-card>\n}\n","import { Component, Input } from '@angular/core';\nimport * as echarts from 'echarts/core';\nimport { LineChart } from 'echarts/charts';\nimport { GridComponent, TooltipComponent, LegendComponent } from 'echarts/components';\nimport { CanvasRenderer } from 'echarts/renderers';\nimport { EChartsCoreOption } from 'echarts/core';\nimport { SimpleChanges } from '@angular/core';\nimport { NgxEchartsDirective, provideEchartsCore } from 'ngx-echarts';\necharts.use([LineChart, GridComponent, TooltipComponent, LegendComponent, CanvasRenderer]);\n@Component({\n selector: 'lib-stacked-area-chart',\n imports: [NgxEchartsDirective],\n providers: [provideEchartsCore({ echarts })],\n templateUrl: './stacked-area-chart.html',\n styleUrl: './stacked-area-chart.scss',\n})\nexport class StackedAreaChart {\n @Input() data: any;\n @Input() title: string = 'Protocol Traffic Overview';\n\n chartOption!: EChartsCoreOption;\n\n ngOnChanges(changes: SimpleChanges): void {\n if (changes['data']) {\n this.buildChart();\n }\n }\n\n buildChart() {\n this.chartOption = {\n tooltip: {\n trigger: 'axis',\n },\n legend: {\n data: this.data.series.map((s: any) => s.name),\n top: 10,\n },\n grid: {\n left: '3%',\n right: '4%',\n bottom: '3%',\n containLabel: true,\n },\n xAxis: {\n type: 'category',\n boundaryGap: false,\n data: this.data.time,\n },\n yAxis: {\n type: 'value',\n },\n series: this.data.series.map((s: any) => ({\n name: s.name,\n type: s.type??'line',\n smooth: true,\n data: s.values,\n areaStyle: {\n opacity: 0.15,\n },\n })),\n };\n }\n}\n","<div\n echarts\n class=\"chart-container\"\n [options]=\"chartOption\"\n ></div>","import {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n EventEmitter,\n HostListener,\n Input,\n OnChanges,\n OnDestroy,\n Output,\n SimpleChanges,\n} from '@angular/core';\n\nimport * as echarts from 'echarts/core';\nimport { ECharts, EChartsCoreOption } from 'echarts/core';\nimport { NgxEchartsDirective, provideEchartsCore } from 'ngx-echarts';\n\nimport { CustomChart } from 'echarts/charts';\nimport { GridComponent, TooltipComponent, LegendComponent } from 'echarts/components';\n\nimport { CanvasRenderer } from 'echarts/renderers';\nimport { CustomChartConfig, TimelineTrack, ShiftItem } from '../../modal/charts-modal';\nimport { Charts } from '../../service/charts';\nimport { RightClickCard } from '../right-click-card';\n\necharts.use([CustomChart, GridComponent, TooltipComponent, LegendComponent, CanvasRenderer]);\n@Component({\n selector: 'lib-custom-chart',\n imports: [NgxEchartsDirective, RightClickCard],\n templateUrl: './custom-chart.html',\n styleUrl: './custom-chart.scss',\n providers: [provideEchartsCore({ echarts })],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class CustomChartComponent implements OnChanges, OnDestroy {\n @Input() config!: CustomChartConfig;\n @Input() theme: any;\n @Input() events: string[] = [];\n @Input() contextMenuOptions: any[] = [];\n\n @Output() contextMenuClick = new EventEmitter<any>();\n @Output() chartEvent = new EventEmitter<{\n type: string;\n data: any;\n }>();\n cardPosition = { x: 0, y: 0 };\n openCard: boolean = false;\n\n chartOption!: EChartsCoreOption;\n filteredConetxtMenuOptions: any[] = [];\n\n private chartInstance!: ECharts;\n constructor(\n private chartService: Charts,\n private cdr: ChangeDetectorRef,\n ) {}\n\n onChartInit(ec: ECharts) {\n this.chartInstance = ec;\n this.buildOption();\n this.bindEvents();\n }\n\n ngOnChanges(changes: SimpleChanges): void {\n if (!this.config) return;\n\n if (changes['theme'] && this.chartInstance) {\n this.chartInstance.dispose();\n }\n\n this.buildOption();\n }\n\n onMenuClick(item: any) {\n this.contextMenuClick.emit(item);\n\n this.closeCard();\n }\n @HostListener('document:click')\n closeCard() {\n this.openCard = false;\n }\n\n private bindEvents() {\n if (!this.chartInstance) return;\n\n this.chartInstance.off();\n\n /* ---- existing chart events ---- */\n this.events.forEach((eventName) => {\n if (eventName === 'contextmenu') {\n /* ---- RIGHT CLICK ANYWHERE IN GRID ---- */\n\n const zr = this.chartInstance.getZr();\n\n zr.off('contextmenu');\n\n zr.on('contextmenu', (event: any) => {\n event.event.preventDefault();\n\n this.filteredConetxtMenuOptions = this.contextMenuOptions.filter(\n (opt) => (opt.showOnTarget && event.target?.type === 'rect') || !opt.showOnTarget,\n );\n\n const point = [event.offsetX, event.offsetY];\n\n // check if click is inside grid\n if (!this.chartInstance.containPixel({ gridIndex: 0 }, point)) return;\n\n const container = this.chartInstance.getDom();\n const rect = container.getBoundingClientRect();\n\n this.cardPosition = {\n x: event.event.clientX - rect.left,\n y: event.event.clientY - rect.top,\n };\n\n this.openCard = true;\n\n this.cdr.markForCheck();\n\n this.chartEvent.emit({\n type: 'contextmenu',\n data: event,\n });\n });\n } else {\n this.chartInstance.on(eventName, (params: any) => {\n this.chartEvent.emit({\n type: eventName,\n data: params,\n });\n });\n }\n });\n }\n\n // private convertTimeToNumber(time: string): number {\n // const [h, m] = time.split(':').map(Number);\n // return h + m / 60;\n // }\n\n private convertTimeToNumber(time: string): number {\n if (!time) return 0;\n const trimmed = time.trim().toLowerCase();\n const ampmMatch = trimmed.match(/^(\\d{1,2}):(\\d{2})\\s?(am|pm)$/);\n if (ampmMatch) {\n let hours = Number(ampmMatch[1]);\n const minutes = Number(ampmMatch[2]);\n const period = ampmMatch[3];\n\n if (period === 'pm' && hours !== 12) {\n hours += 12;\n }\n if (period === 'am' && hours === 12) {\n hours = 0;\n }\n return hours + minutes / 60;\n }\n\n const match24 = trimmed.match(/^(\\d{1,2}):(\\d{2})$/);\n\n if (match24) {\n const hours = Number(match24[1]);\n const minutes = Number(match24[2]);\n\n return hours + minutes / 60;\n }\n\n return 0;\n }\n\n private is12HourFormat(time?: string): boolean {\n if (!time) return false;\n return /am|pm/i.test(time);\n }\n\n private formatHourLabel(val: number, is12Hour: boolean): string {\n const hour = Math.floor(val);\n if (!is12Hour) {\n return `${hour.toString().padStart(2, '0')}:00`;\n }\n let h = hour;\n const suffix = h >= 12 ? 'PM' : 'AM';\n if (h === 0) h = 12;\n else if (h > 12) h -= 12;\n return `${h}:00 ${suffix}`;\n }\n\n private renderBlock =\n (catIndex: number, isShift = false) =>\n (params: any, api: any) => {\n const categoryIndex = this.config.chartMode === 'weekly' ? catIndex : api.value(0);\n\n const start = api.coord([api.value(1), categoryIndex]);\n const end = api.coord([api.value(2), categoryIndex]);\n const baseHeight = api.size([0, 1])[1];\n\n const height =\n baseHeight * (isShift ? (this.config.shiftHeight ?? 1) : (this.config.barHeight ?? 0.6));\n\n return {\n type: 'rect',\n shape: {\n x: start[0],\n y: start[1] - height / 2,\n width: end[0] - start[0],\n height: height,\n },\n style: api.style(),\n emphasis: {\n style: {\n stroke: '#434A51',\n lineWidth: 1,\n\n shadowBlur: 12,\n shadowColor: '#0A0D124D',\n shadowOffsetX: 4,\n shadowOffsetY: 4,\n },\n },\n };\n };\n\n private buildLegend() {\n const groups = Object.keys(this.config.legends);\n\n const legends: any[] = [];\n let topOffset = 0;\n\n groups.forEach((group) => {\n const items = this.config.legends[group];\n\n if (!items || !items.length) return;\n const names = [\n ...(this.config.hideLegendCategory\n ? []\n : [{ name: group, icon: 'none', itemStyle: { opacity: 0 } }]),\n ...items.map((i: any) => ({\n name: i.name,\n itemStyle: { color: i.color },\n })),\n ];\n\n legends.push({\n top: topOffset,\n left: 0,\n orient: 'horizontal',\n icon: 'roundRect',\n itemGap: 16,\n itemWidth: 12,\n itemHeight: 12,\n data: names,\n\n formatter: (name: string) => {\n if (name === group) {\n return `{title|${name}:}`;\n }\n return name;\n },\n\n textStyle: {\n fontSize: 14,\n rich: {\n title: {\n fontWeight: 'bold',\n padding: [0, 6, 0, -12],\n },\n },\n },\n });\n\n topOffset += 30;\n });\n return legends;\n }\n\n private buildMarkLines(): any {\n const logs = this.config.data?.[0]?.office_entry_logs;\n if (!logs?.length) return undefined;\n\n return {\n silent: true,\n symbol: 'none',\n data: logs.map((log) => ({\n xAxis: this.convertTimeToNumber(log.time),\n label: { formatter: '' },\n lineStyle: {\n color: '#5A5F66',\n type: log.type === 'OUT' ? ([8, 6] as any) : 'solid',\n width: 1,\n },\n })),\n };\n }\n\n private buildOption() {\n if (!this.config?.categories || !this.config?.data) return;\n\n const series: any[] = [];\n\n const categories = this.config.categories;\n\n /* ---------------- SHIFT DATA ---------------- */\n\n if (\n this.config.chartMode === 'daily' &&\n this.config.data?.length &&\n this.config.data[0]?.shifts?.items?.length\n ) {\n this.config.categories.forEach((cat, index) => {\n const shiftData: any[] = [];\n (this.config.data[0]?.shifts?.items || []).forEach((s: ShiftItem) => {\n shiftData.push({\n value: [index, this.convertTimeToNumber(s.start), this.convertTimeToNumber(s.end)],\n itemStyle: {\n color: this.config.shiftColor ?? '#F0F0F0',\n },\n });\n });\n if (shiftData.length) {\n series.push({\n name: this.config.data[0]?.shifts?.name || 'Shift',\n type: 'custom',\n renderItem: this.renderBlock(index, true),\n silent: true,\n z: 0,\n encode: { x: [1, 2], y: 0 },\n data: shiftData,\n });\n }\n });\n }\n\n /* -------- ACTIVITY LINE -------- */\n\n if (\n this.config.chartMode === 'daily' &&\n this.config.data?.length &&\n this.config.data[0]?.activity?.length\n ) {\n this.config.data[0].activity.forEach((act, index) => {\n const activityData: any[] = [];\n const categoryIndex = this.config.categories.indexOf(act.category);\n\n const activityTrack = this.config.legends[act.category]?.find(\n (leg) => leg.name === act.name,\n );\n let trackColor = '#C8DFF9';\n if (activityTrack) {\n trackColor = activityTrack?.color || '#C8DFF9';\n }\n if (categoryIndex === -1) return;\n\n act.items.forEach((p: any, i: number) => {\n const y =\n categoryIndex +\n p.value * (this.config.barHeight ?? 0.6) +\n (1 - (this.config.barHeight ?? 0.6)) / 2;\n\n activityData.push([this.convertTimeToNumber(p.time), y]);\n });\n if (activityData.length) {\n series.push({\n name: act.name,\n type: 'line',\n symbol: 'none',\n yAxisIndex: 1,\n z: 3,\n lineStyle: {\n width: 1,\n color: trackColor,\n },\n\n data: activityData,\n });\n }\n });\n }\n\n /* ---------------- TRACK SERIES ---------------- */\n this.config.data.forEach((data, index) => {\n if (this.config.chartMode === 'weekly' && data.shifts && data.shifts.items.length) {\n const shiftData: any[] = [];\n\n (data.shifts.items || []).forEach((s: ShiftItem) => {\n shiftData.push({\n value: [index, this.convertTimeToNumber(s.start), this.convertTimeToNumber(s.end)],\n itemStyle: {\n color: this.config.shiftColor ?? '#F0F0F0',\n },\n });\n });\n if (shiftData.length) {\n series.push({\n name: 'Shift',\n type: 'custom',\n renderItem: this.renderBlock(index, true),\n silent: true,\n z: 0,\n encode: { x: [1, 2], y: 0 },\n data: shiftData,\n });\n }\n }\n\n const activityData: any[] = [];\n if (this.config.chartMode === 'weekly' && data.activity && data.activity[0]?.items?.length) {\n const act = data.activity[0];\n const activityTrack = this.config.legends[act.category]?.find(\n (leg) => leg.name === act.name,\n );\n let trackColor = '#C8DFF9';\n if (activityTrack) {\n trackColor = activityTrack?.color || '#C8DFF9';\n }\n\n act.items.forEach((p: any, i: number) => {\n const y =\n index +\n p.value * (this.config.barHeight ?? 0.6) +\n (1 - (this.config.barHeight ?? 0.6)) / 2;\n\n activityData.push([this.convertTimeToNumber(p.time), y]);\n });\n if (activityData.length) {\n series.push({\n name: act.name,\n type: 'line',\n symbol: 'none',\n yAxisIndex: 1,\n z: 3,\n lineStyle: {\n width: 1,\n color: trackColor,\n },\n\n data: activityData,\n });\n }\n }\n\n data.tracks.forEach((track: TimelineTrack) => {\n if (!this.config.hideLegendCategory) {\n series.push({ name: track.category, type: 'custom', renderItem: () => {}, data: [] });\n }\n track.items.forEach((item) => {\n series.push({\n name: item.type,\n type: 'custom',\n renderItem: this.renderBlock(index, false),\n encode: { x: [1, 2], y: 0 },\n z: 2,\n data: [\n {\n ...item,\n category: track.category,\n value: [\n categories.indexOf(track.category),\n this.convertTimeToNumber(item.start),\n this.convertTimeToNumber(item.end),\n ],\n itemStyle: {\n color: this.config.legends[track.category]?.find((leg) => leg.name === item.type)\n ?.color,\n },\n type: item.type,\n },\n ],\n });\n });\n });\n });\n\n /* ---------------- CHART OPTION ---------------- */\n const is12Hour =\n this.is12HourFormat(this.config.startHour) || this.is12HourFormat(this.config.endHour);\n this.chartOption = {\n tooltip: {\n trigger: 'item',\n backgroundColor: 'transparent',\n borderWidth: 0,\n padding: 0,\n extraCssText: 'box-shadow:none;',\n formatter: (params: any) => {\n const tooltipCategories = this.config.tooltipCategories;\n\n if (tooltipCategories?.length && !tooltipCategories.includes(params.data?.category))\n return '';\n\n return this.chartService.timelineChartTooltipFormatter(params);\n },\n ...this.config.tooltip,\n },\n legend: this.buildLegend(),\n\n grid: {\n left: 0,\n right: 0,\n bottom: 0,\n top: Object.keys(this.config.legends).length * 30,\n },\n\n xAxis: {\n type: 'value',\n min: this.config.startHour\n ? Math.floor(this.convertTimeToNumber(this.config.startHour))\n : 0,\n max: this.config.endHour ? Math.ceil(this.convertTimeToNumber(this.config.endHour)) : 24,\n axisLine: {\n show: false,\n },\n axisTick: {\n show: false,\n },\n splitLine: {\n lineStyle: {\n width: 0.5,\n color: '#C0C2C5',\n },\n },\n minorSplitLine: {\n show: true,\n lineStyle: {\n width: 0.2,\n color: '#DADBDC',\n },\n },\n minorTick: { splitNumber: 4 },\n interval: 1,\n // axisLabel: {\n // formatter: (val: number) => `${val}:00`,\n // },\n axisLabel: {\n hideOverlap: true,\n formatter: (val: number) => this.formatHourLabel(val, is12Hour),\n },\n },\n\n yAxis: [\n {\n type: 'category',\n data: this.config.yAxisData,\n axisLine: {\n show: false,\n },\n },\n {\n type: 'value',\n min: 0,\n max: this.config.yAxisData.length,\n show: false,\n },\n ],\n\n series,\n };\n\n const markLines = this.buildMarkLines();\n if (markLines) {\n series.push({\n type: 'custom',\n silent: true,\n z: 10,\n data: [],\n markLine: markLines,\n });\n }\n }\n\n ngOnDestroy(): void {\n this.chartInstance?.dispose();\n }\n}\n","<div\n echarts\n [options]=\"chartOption\"\n [theme]=\"theme\"\n class=\"chart-container\"\n (chartInit)=\"onChartInit($event)\"\n></div>\n@if (openCard && filteredConetxtMenuOptions.length > 0) {\n <lib-right-click-card\n [cardOptions]=\"filteredConetxtMenuOptions\"\n (contextMenuClick)=\"onMenuClick($event)\"\n [cardPosition]=\"cardPosition\"\n ></lib-right-click-card>\n}\n","import {\n Component,\n EventEmitter,\n Input,\n OnChanges,\n OnDestroy,\n Output,\n SimpleChanges,\n} from '@angular/core';\nimport { NgxEchartsDirective, provideEchartsCore } from 'ngx-echarts';\nimport * as echarts from 'echarts/core';\nimport { EChartsCoreOption } from 'echarts';\nimport { SankeyChartConfig } from '../../modal/charts-modal';\nimport { TooltipComponent, TitleComponent } from 'echarts/components';\nimport { CanvasRenderer } from 'echarts/renderers';\nimport { SankeyChart as SankeyChartEchart } from 'echarts/charts';\nimport { Charts } from '../../service/charts';\necharts.use([SankeyChartEchart, TooltipComponent, TitleComponent, CanvasRenderer]);\n@Component({\n selector: 'lib-sankey-chart',\n imports: [NgxEchartsDirective],\n providers: [provideEchartsCore({ echarts })],\n templateUrl: './sankey-chart.html',\n styleUrl: './sankey-chart.scss',\n})\nexport class SankeyChart implements OnChanges, OnDestroy {\n @Input() config!: SankeyChartConfig;\n @Input() theme: any;\n @Input() events: string[] = [];\n\n @Output() chartEvent = new EventEmitter<{\n type: string;\n data: any;\n }>();\n\n constructor(private chartService: Charts) {}\n\n chartOption: EChartsCoreOption = {};\n private chartInstance!: echarts.ECharts;\n\n /* ------------------ CHANGE HANDLING ------------------ */\n\n ngOnChanges(changes: SimpleChanges): void {\n if (!this.config) return;\n\n if (changes['theme'] && this.chartInstance) {\n this.chartInstance.dispose();\n }\n\n this.buildOption();\n }\n\n /* ------------------ OPTION BUILDER ------------------ */\n\n private buildOption() {\n this.chartOption = {\n backgroundColor: this.config?.backgroundColor || 'transparent',\n color: this.config.colors ?? this.chartService.defaultColors,\n title: {\n show: this.config.showTitle ?? !!this.config.title,\n text: this.config.title,\n left: 'center',\n },\n\n tooltip: {\n show: this.config.showTooltip,\n trigger: 'item',\n triggerOn: 'mousemove',\n backgroundColor: 'transparent', // important for custom card\n borderWidth: 0,\n extraCssText: 'box-shadow:none;', // remove default shadow\n formatter: (params: any) =>\n this.config.tooltipFormatter\n ? this.config.tooltipFormatter(params)\n : this.chartService.sankeyTooltipFormatter(params),\n },\n series: [\n {\n left: 16,\n right: 16,\n top: 16,\n bottom: 16,\n ...this.config.seriesOption,\n type: 'sankey',\n data: (this.config?.nodes || []).map((n) => ({\n ...n,\n name: n.name,\n itemStyle: {\n color: n.color,\n },\n })),\n\n links: this.config?.links || [],\n levels: [\n {\n depth: this.chartService.getSankeyLevels(this.config?.nodes, this.config?.links),\n label: { position: 'left' },\n },\n ],\n lineStyle: {\n color: 'gradient',\n curveness: this.config.lineCurveness ?? 0.5,\n opacity: 0.3,\n },\n\n label: {\n color: '#333',\n },\n },\n ],\n };\n }\n\n /* ------------------ INIT ------------------ */\n\n onChartInit(ec: echarts.ECharts) {\n this.chartInstance = ec;\n this.buildOption();\n this.bindEvents();\n }\n\n /* ------------------ EVENTS ------------------ */\n\n private bindEvents() {\n if (!this.chartInstance) return;\n\n this.chartInstance.off();\n\n this.events.forEach((eventName) => {\n this.chartInstance.on(eventName, (params: any) => {\n if (eventName === 'contextmenu' && params.event?.event) {\n params.event.event.preventDefault();\n }\n\n this.chartEvent.emit({\n type: eventName,\n data: params,\n });\n });\n });\n }\n\n /* ------------------ DESTROY ------------------ */\n\n ngOnDestroy(): void {\n if (this.chartInstance) {\n this.chartInstance.off();\n this.chartInstance.dispose();\n }\n }\n}\n","<div\n echarts\n [options]=\"chartOption\"\n [theme]=\"theme\"\n class=\"chart-container\"\n (chartInit)=\"onChartInit($event)\"\n></div>","import {\n ChangeDetectionStrategy,\n Component,\n EventEmitter,\n Input,\n OnChanges,\n OnDestroy,\n Output,\n SimpleChanges,\n} from '@angular/core';\nimport * as echarts from 'echarts/core';\nimport { ECharts, EChartsCoreOption } from 'echarts/core';\nimport { HeatmapChart } from 'echarts/charts';\nimport {\n GridComponent,\n TooltipComponent,\n TitleComponent,\n VisualMapComponent,\n} from 'echarts/components';\nimport { CanvasRenderer } from 'echarts/renderers';\nimport { NgxEchartsDirective, provideEchartsCore } from 'ngx-echarts';\nimport { HeatmapChartConfig } from '../../modal/charts-modal';\nimport { Charts } from '../../service/charts';\n\necharts.use([\n HeatmapChart,\n GridComponent,\n TooltipComponent,\n TitleComponent,\n VisualMapComponent,\n CanvasRenderer,\n]);\n\n@Component({\n selector: 'lib-heatmap',\n standalone: true,\n imports: [NgxEchartsDirective],\n providers: [provideEchartsCore({ echarts })],\n templateUrl: './heatmap.html',\n styleUrl: './heatmap.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class Heatmap implements OnChanges, OnDestroy {\n @Input() config!: HeatmapChartConfig;\n @Input() theme: any;\n @Input() events: string[] = [];\n\n @Output() chartEvent = new EventEmitter<{\n type: string;\n data: any;\n }>();\n\n chartOption: EChartsCoreOption = {};\n legendItems: { label: string; color: string }[] = [];\n private chartInstance?: ECharts;\n\n constructor(private chartService: Charts) {}\n\n ngOnChanges(changes: SimpleChanges): void {\n if (!this.config) return;\n\n if (changes['theme'] && this.chartInstance) {\n this.chartInstance.dispose();\n this.chartInstance = undefined;\n }\n\n this.chartOption = this.buildOption(this.config);\n this.legendItems = this.buildLegendItems(this.config);\n\n if (this.chartInstance) {\n this.chartInstance.setOption(this.chartOption, true);\n this.bindEvents();\n }\n }\n\n private buildOption(config: HeatmapChartConfig): EChartsCoreOption {\n const data = config.data ?? [];\n const values = data.map((item) => item[2]).filter((value) => Number.isFinite(value));\n const min = config.min ?? (values.length ? Math.min(...values) : 0);\n const max = config.max ?? (values.length ? Math.max(...values) : 100);\n\n const baseSeries = {\n name: config.seriesName ?? config.title ?? 'Heatmap',\n type: 'heatmap',\n data,\n label: {\n show: config.showLabel ?? false,\n color: config.labelColor ?? '#111827',\n formatter: config.labelFormatter,\n },\n emphasis: {\n itemStyle: {\n shadowBlur: 10,\n shadowColor: 'rgba(0, 0, 0, 0.25)',\n },\n },\n };\n\n return {\n backgroundColor: config.backgroundColor || 'transparent',\n\n title: {\n show: config.showTitle ?? !!config.title,\n text: config.title,\n left: config.titlePosition || 'center',\n },\n\n tooltip: {\n show: config.showTooltip ?? true,\n trigger: 'item',\n backgroundColor: 'transparent',\n borderWidth: 0,\n padding: 0,\n confine: true,\n ...config.tooltip,\n formatter:\n config.tooltipFormatter ||\n ((params: any) => this.chartService.heatmapTooltipFormatter(params, config)),\n },\n\n grid: {\n left: config.grid?.left ?? '3%',\n right: config.grid?.right ?? '4%',\n top: config.grid?.top ?? '10%',\n bottom: config.grid?.bottom ?? '8%',\n height: config.grid?.height,\n containLabel: config.grid?.containLabel ?? true,\n },\n\n xAxis: {\n type: 'category',\n data: config.xAxisData ?? [],\n splitArea: { show: true },\n ...config.xAxis,\n },\n\n yAxis: {\n type: 'category',\n data: config.yAxisData ?? [],\n splitArea: { show: true },\n ...config.yAxis,\n },\n\n visualMap: {\n show: config.visualMap?.show ?? false,\n min,\n max,\n calculable: true,\n orient: 'horizontal',\n left: 'center',\n bottom: 0,\n inRange: {\n color: config.colors ?? ['#e0f2fe', '#38bdf8', '#0369a1'],\n },\n ...config.visualMap,\n },\n\n series: this.buildSeries(config.series, baseSeries),\n };\n }\n\n private buildLegendItems(config: HeatmapChartConfig) {\n const pieces = config.visualMap?.pieces;\n\n if (Array.isArray(pieces) && pieces.length) {\n return pieces.map((piece: any) => ({\n label: piece.label ?? `${piece.max ?? piece.value ?? piece.min}%`,\n color: piece.color ?? piece.itemStyle?.color ?? '#e5e7eb',\n }));\n }\n\n const colors = config.colors ?? ['#e0f2fe', '#38bdf8', '#0369a1'];\n const step = colors.length ? 100 / colors.length : 100;\n\n return colors.map((color, index) => ({\n label: `${Math.round(step * (index + 1))}%`,\n color,\n }));\n }\n\n private buildSeries(seriesConfig: HeatmapChartConfig['series'], baseSeries: any) {\n if (Array.isArray(seriesConfig)) {\n return seriesConfig.map((series) => ({\n ...baseSeries,\n ...series,\n }));\n }\n\n if (seriesConfig) {\n return [\n {\n ...baseSeries,\n ...seriesConfig,\n },\n ];\n }\n\n return [baseSeries];\n }\n\n onChartInit(ec: ECharts) {\n this.chartInstance = ec;\n this.bindEvents();\n }\n\n private bindEvents() {\n if (!this.chartInstance) return;\n\n const chartInstance = this.chartInstance;\n\n chartInstance.off();\n\n this.events.forEach((eventName) => {\n chartInstance.on(eventName, (params: any) => {\n if (eventName === 'contextmenu' && params.event?.event) {\n params.event.event.preventDefault();\n }\n\n this.chartEvent.emit({\n type: eventName,\n data: params,\n });\n });\n });\n }\n\n ngOnDestroy(): void {\n if (this.chartInstance) {\n this.chartInstance.off();\n this.chartInstance.dispose();\n }\n }\n}\n","<div class=\"heatmap-wrapper\">\n <div class=\"heatmap-legend\">\n @for (item of legendItems; track item.label) {\n <div class=\"heatmap-legend-item\">\n <span class=\"heatmap-legend-swatch\" [style.background]=\"item.color\"></span>\n <span>{{ item.label }}</span>\n </div>\n }\n </div>\n\n <div\n echarts\n [options]=\"chartOption\"\n [theme]=\"theme\"\n (chartInit)=\"onChartInit($event)\"\n class=\"chart-container\"\n ></div>\n</div>\n","import {\n Component,\n Input,\n SimpleChanges,\n ChangeDetectionStrategy,\n Output,\n EventEmitter,\n} from '@angular/core';\n\nimport * as echarts from 'echarts/core';\nimport { ECharts, EChartsCoreOption } from 'echarts/core';\nimport { NgxEchartsDirective, provideEchartsCore } from 'ngx-echarts';\n\nimport {\n GridComponent,\n TooltipComponent,\n LegendComponent,\n TitleComponent,\n} from 'echarts/components';\nimport { CanvasRenderer } from 'echarts/renderers';\nimport { Charts } from '../../service/charts';\nimport { ScatterChart } from 'echarts/charts';\nimport { ScatterChartConfig } from '../../modal/charts-modal';\nimport { ChartLegendComponent } from '../chart-legend';\nimport type { ChartLegendEvent } from '../chart-legend';\n\necharts.use([\n ScatterChart,\n GridComponent,\n TooltipComponent,\n LegendComponent,\n CanvasRenderer,\n TitleComponent,\n]);\n\n@Component({\n selector: 'lib-scatter-chart',\n imports: [NgxEchartsDirective, ChartLegendComponent],\n providers: [provideEchartsCore({ echarts })],\n templateUrl: './scatter-chart.html',\n styleUrl: './scatter-chart.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class ScatterChartComp {\n @Input() config!: ScatterChartConfig;\n @Input() theme: any;\n @Output() chartEvent = new EventEmitter<{\n type: string;\n data: any;\n }>();\n @Output() legendEvent = new EventEmitter<ChartLegendEvent>();\n chartOption: EChartsCoreOption = {};\n chartInstance!: ECharts;\n\n constructor(private chartService: Charts) {}\n get deafultColors() {\n return this.chartService.defaultColors;\n }\n ngOnChanges(changes: SimpleChanges): void {\n if (!this.config) return;\n\n if (changes['theme'] && this.chartInstance) {\n this.chartInstance.dispose();\n }\n\n this.buildOption();\n }\n private buildOption() {\n const selected = this.readLegendSelected();\n const selectedMode = this.config?.customLegend?.selectionMode === 'exclusive' ? 'single' : true;\n\n this.chartOption = {\n backgroundColor: this.config?.backgroundColor || 'transparent',\n color: this.config?.colors || this.chartService.defaultColors,\n title: {\n show: this.config?.showTitle ?? !!this.config?.title,\n text: this.config?.title,\n left: this.config?.titlePosition || 'center',\n },\n tooltip: {\n show: this.config?.showTooltip,\n trigger: 'item',\n backgroundColor: 'transparent',\n borderWidth: 0,\n padding: 0,\n confine: true,\n formatter: (params: any) =>\n this.config?.tooltipFormatter\n ? this.config?.tooltipFormatter(params)\n : this.chartService.scatterTooltipFormatter(\n params,\n this.config?.xAxisName,\n this.config?.yAxisName,\n ),\n },\n legend: {\n show: false,\n data: (this.config?.series ?? []).map((series) => series.name),\n selected,\n selectedMode,\n },\n\n grid: {\n left: this.config?.gridLeft ?? 0,\n right: this.config?.gridRight ?? 0,\n bottom: this.config?.gridBottom ?? 0,\n top: this.config?.gridTop ?? 0,\n },\n\n xAxis: {\n type: 'value',\n axisLine: {\n show: this.config?.showXAxisLine ?? true,\n lineStyle: {\n color: '#C0C2C5',\n width: 1,\n },\n },\n axisTick: {\n show: false,\n },\n axisLabel: {\n color: '#434A51',\n fontSize: 12,\n },\n name: this.config?.xAxisName || '',\n nameLocation: 'center',\n nameTextStyle: {\n color: '#434A51',\n fontSize: 14,\n fontWeight: 400,\n },\n\n splitLine: {\n show: true,\n lineStyle: {\n type: 'dashed',\n color: '#C0C2C5',\n width: 1,\n },\n },\n ...this.config?.xAxis,\n },\n\n yAxis: [\n {\n type: 'value',\n name: this.config?.yAxisName || '',\n nameLocation: 'center',\n nameTextStyle: {\n color: '#434A51',\n fontSize: 14,\n fontWeight: 400,\n },\n axisLine: {\n show: this.config?.showYAxisLine ?? true,\n lineStyle: {\n color: '#C0C2C5',\n width: 1,\n },\n },\n\n axisTick: {\n show: false,\n },\n axisLabel: {\n color: '#434A51',\n fontSize: 12,\n formatter: (value: number) => {\n if (value === 0) {\n return '0';\n }\n\n const absValue = Math.abs(value);\n\n // Quadrillions\n if (absValue >= 1_000_000_000_000_000) {\n return `${+(value / 1_000_000_000_000_000).toFixed(1)}Q`;\n }\n\n // Trillions\n if (absValue >= 1_000_000_000_000) {\n return `${+(value / 1_000_000_000_000).toFixed(1)}T`;\n }\n\n // Billions\n if (absValue >= 1_000_000_000) {\n return `${+(value / 1_000_000_000).toFixed(1)}B`;\n }\n\n // Millions\n if (absValue >= 1_000_000) {\n return `${+(value / 1_000_000).toFixed(1)}M`;\n }\n\n // Thousands\n if (absValue >= 1_000) {\n return `${+(value / 1_000).toFixed(1)}K`;\n }\n\n // Decimal handling\n if (Number.isInteger(value)) {\n return value.toString();\n }\n\n return value;\n },\n },\n splitLine: {\n show: true,\n lineStyle: {\n type: 'dashed',\n color: '#C0C2C5',\n width: 1,\n },\n },\n ...this.config?.yAxis,\n },\n ],\n\n series: (this.config?.series || []).map((s) => {\n return { symbolSize: 14, ...s, type: 'scatter' };\n }),\n };\n }\n get hasSideLegendWidth(): boolean {\n return this.isSideLegend && !!this.config.customLegend?.maxWidth;\n }\n\n get legendShellMaxWidth(): string | null {\n return this.isSideLegend ? (this.config.customLegend?.maxWidth ?? null) : null;\n }\n\n private get isSideLegend(): boolean {\n return (\n this.config.customLegend?.position === 'left' ||\n this.config.customLegend?.position === 'right'\n );\n }\n\n onLegendEvent(event: ChartLegendEvent): void {\n this.legendEvent.emit(event);\n this.chartEvent.emit({\n type: `legend:${event.type}`,\n data: event,\n });\n }\n\n private readLegendSelected(): Record<string, boolean> {\n const option = this.chartInstance?.getOption?.() as\n | { legend?: Array<{ selected?: Record<string, boolean> }> }\n | undefined;\n\n return { ...(option?.legend?.[0]?.selected ?? {}) };\n }\n\n onChartInit(ec: ECharts) {\n this.chartInstance = ec;\n this.buildOption();\n }\n\n ngOnDestroy(): void {\n if (this.chartInstance) {\n this.chartInstance.off();\n this.chartInstance.dispose();\n }\n }\n}\n","<div\n class=\"scatter-chart-shell\"\n [class.scatter-chart-shell--legend-left]=\"config.customLegend?.position === 'left'\"\n [class.scatter-chart-shell--legend-right]=\"config.customLegend?.position === 'right'\"\n [class.scatter-chart-shell--legend-bottom]=\"config.customLegend?.position === 'bottom'\"\n>\n @if (\n !config.hideLegend &&\n config.customLegend?.position !== 'bottom' &&\n config.customLegend?.position !== 'right'\n ) {\n <lib-chart-legend\n class=\"scatter-chart-shell__legend\"\n [class.scatter-chart-shell__legend--custom-width]=\"hasSideLegendWidth\"\n [style.--scatter-chart-legend-max-width]=\"legendShellMaxWidth\"\n [chart]=\"chartInstance\"\n [series]=\"config.series\"\n [colors]=\"config.colors || deafultColors\"\n [config]=\"config.customLegend || {}\"\n (legendEvent)=\"onLegendEvent($event)\"\n ></lib-chart-legend>\n }\n\n <div\n echarts\n [options]=\"chartOption\"\n [theme]=\"theme\"\n (chartInit)=\"onChartInit($event)\"\n class=\"chart-container\"\n ></div>\n\n @if (\n !config.hideLegend &&\n (config.customLegend?.position === 'bottom' || config.customLegend?.position === 'right')\n ) {\n <lib-chart-legend\n class=\"scatter-chart-shell__legend\"\n [class.scatter-chart-shell__legend--custom-width]=\"hasSideLegendWidth\"\n [style.--scatter-chart-legend-max-width]=\"legendShellMaxWidth\"\n [chart]=\"chartInstance\"\n [series]=\"config.series\"\n [colors]=\"config.colors || deafultColors\"\n [config]=\"config.customLegend || {}\"\n (legendEvent)=\"onLegendEvent($event)\"\n ></lib-chart-legend>\n }\n</div>\n","import {\n APP_ID,\n ChangeDetectionStrategy,\n Component,\n EventEmitter,\n inject,\n Input,\n OnChanges,\n Output,\n} from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport {\n StatusTimelineConfig,\n StatusTimelineEvent,\n StatusTimelineItem,\n StatusTimelineStatus,\n StatusTimelineTooltipContext,\n} from './status-timeline.types';\n\ninterface RenderedTimelineItem {\n source: StatusTimelineItem;\n originalIndex: number;\n start: Date;\n end: Date;\n durationMs: number;\n status: StatusTimelineStatus;\n accessibleLabel: string;\n tooltip: string;\n tooltipLines: string[];\n}\n\nconst DEFAULT_COLORS = ['#2f8f3a', '#d0a020', '#dc8a1f', '#a43b35', '#d9dde1'];\nconst DEFAULT_UNKNOWN_STATUS: StatusTimelineStatus = {\n value: '__unknown__',\n label: 'Unknown status',\n color: '#7b8491',\n};\nlet statusTimelineInstanceSequence = 0;\n\n@Component({\n selector: 'lib-status-timeline',\n standalone: true,\n imports: [CommonModule],\n templateUrl: './status-timeline.html',\n styleUrl: './status-timeline.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class StatusTimelineComponent implements OnChanges {\n @Input({ required: true }) config!: StatusTimelineConfig;\n\n @Output() chartEvent = new EventEmitter<StatusTimelineEvent>();\n\n renderedItems: readonly RenderedTimelineItem[] = [];\n legendStatuses: readonly StatusTimelineStatus[] = [];\n activeIndex: number | null = null;\n timelineMinWidth = '100%';\n resolvedStartLabel = '';\n resolvedEndLabel = '';\n readonly tooltipIdPrefix = `${inject(APP_ID).replace(/[^a-zA-Z0-9_-]/g, '-')}-status-timeline-${statusTimelineInstanceSequence++}-tooltip`;\n private dimmedStatuses = new Set<string>();\n\n get legendPosition(): 'top' | 'bottom' | 'left' | 'right' {\n return this.config.legendPosition ?? 'bottom';\n }\n\n get legendLayout(): 'horizontal' | 'vertical' {\n return (\n this.config.legendLayout ??\n (this.legendPosition === 'left' || this.legendPosition === 'right' ? 'vertical' : 'horizontal')\n );\n }\n\n get legendScrollable(): boolean {\n return this.config.legendScrollable !== false;\n }\n\n get legendInteractive(): boolean {\n return this.config.legendInteractive !== false;\n }\n\n get legendAlign(): 'start' | 'center' | 'end' | 'space-between' {\n if (this.config.legendAlign === 'left') return 'start';\n if (this.config.legendAlign === 'right') return 'end';\n return this.config.legendAlign ?? 'start';\n }\n\n get legendLabelAlign(): 'left' | 'center' | 'right' {\n return this.config.legendLabelAlign ?? 'left';\n }\n\n get legendLabelJustify(): 'flex-start' | 'center' | 'flex-end' {\n if (this.legendLabelAlign === 'center') return 'center';\n if (this.legendLabelAlign === 'right') return 'flex-end';\n return 'flex-start';\n }\n\n get endpointLabelsAlign(): 'start' | 'center' | 'end' | 'space-between' {\n if (this.config.endpointLabelsAlign === 'left') return 'start';\n if (this.config.endpointLabelsAlign === 'right') return 'end';\n return this.config.endpointLabelsAlign ?? 'space-between';\n }\n\n get legendMaxWidth(): string | null {\n return this.config.legendMaxWidth ?? null;\n }\n\n get legendMaxHeight(): string | null {\n return this.config.legendMaxHeight ?? (this.legendLayout === 'vertical' ? '240px' : null);\n }\n\n ngOnChanges(): void {\n this.rebuild();\n }\n\n activate(index: number): void {\n this.activeIndex = index;\n }\n\n deactivate(index: number): void {\n if (this.activeIndex === index) this.activeIndex = null;\n }\n\n selectItem(item: RenderedTimelineItem): void {\n this.chartEvent.emit({\n type: 'itemClick',\n item: item.source,\n index: item.originalIndex,\n });\n }\n\n isStatusSelected(value: string): boolean {\n return !this.dimmedStatuses.has(value);\n }\n\n toggleStatus(status: StatusTimelineStatus): void {\n if (!this.legendInteractive) return;\n\n if (this.dimmedStatuses.has(status.value)) {\n this.dimmedStatuses.delete(status.value);\n } else {\n this.dimmedStatuses.add(status.value);\n }\n\n this.chartEvent.emit({\n type: 'legendToggle',\n status,\n selected: this.isStatusSelected(status.value),\n });\n }\n\n tooltipId(index: number): string {\n return `${this.tooltipIdPrefix}-${index}`;\n }\n\n trackItem(_: number, item: RenderedTimelineItem): string {\n return `${item.start.getTime()}-${item.end.getTime()}-${item.status.value}-${item.originalIndex}`;\n }\n\n trackStatus(_: number, status: StatusTimelineStatus): string {\n return status.value;\n }\n\n private rebuild(): void {\n const config = this.config;\n if (!config) {\n this.renderedItems = [];\n this.legendStatuses = [];\n return;\n }\n\n const statusMap = new Map<string, StatusTimelineStatus>();\n this.legendStatuses = (config.statuses ?? []).map((status, index) => {\n const resolved = { ...status, color: status.color ?? DEFAULT_COLORS[index % DEFAULT_COLORS.length] };\n statusMap.set(resolved.value, resolved);\n return resolved;\n });\n const configuredStatusValues = new Set(this.legendStatuses.map((status) => status.value));\n this.dimmedStatuses = new Set(\n [...this.dimmedStatuses].filter((value) => configuredStatusValues.has(value)),\n );\n\n const unknownStatus: StatusTimelineStatus = {\n ...DEFAULT_UNKNOWN_STATUS,\n ...config.unknownStatus,\n value: config.unknownStatus?.value ?? DEFAULT_UNKNOWN_STATUS.value,\n label: config.unknownStatus?.label ?? DEFAULT_UNKNOWN_STATUS.label,\n color: config.unknownStatus?.color ?? DEFAULT_UNKNOWN_STATUS.color,\n };\n\n this.renderedItems = (config.data ?? [])\n .map((item, originalIndex) => {\n const start = this.toDate(item.start);\n const end = this.toDate(item.end);\n if (!start || !end || end.getTime() <= start.getTime()) return null;\n\n const status = statusMap.get(item.status) ?? {\n ...unknownStatus,\n value: item.status,\n label: config.unknownStatus?.label ?? `Unknown (${item.status})`,\n };\n const durationMs = end.getTime() - start.getTime();\n const context: StatusTimelineTooltipContext = { item, status, start, end, durationMs };\n const tooltip = config.tooltipFormatter?.(context) ?? this.defaultTooltip(context);\n const accessibleLabel = [item.label, status.label, tooltip].filter(Boolean).join('. ');\n\n const tooltipLines = tooltip\n .split(/\\r?\\n/)\n .map((line) => line.trim())\n .filter(Boolean);\n\n return {\n source: item,\n originalIndex,\n start,\n end,\n durationMs,\n status,\n tooltip,\n tooltipLines,\n accessibleLabel,\n };\n })\n .filter((item): item is RenderedTimelineItem => item !== null)\n .sort((left, right) => left.start.getTime() - right.start.getTime());\n\n const gap = Math.max(config.segmentGap ?? 2, 0);\n const minimum = Math.max(config.minSegmentWidth ?? 6, 1);\n const requiredWidth = this.renderedItems.length * minimum + Math.max(this.renderedItems.length - 1, 0) * gap;\n this.timelineMinWidth = `max(100%, ${requiredWidth}px)`;\n this.resolvedStartLabel = config.startLabel ?? this.formatDate(this.renderedItems[0]?.start);\n this.resolvedEndLabel = config.endLabel ?? this.formatDate(this.renderedItems.at(-1)?.end);\n this.activeIndex = null;\n }\n\n private toDate(value: Date | string): Date | null {\n const date = value instanceof Date ? new Date(value.getTime()) : new Date(value);\n return Number.isFinite(date.getTime()) ? date : null;\n }\n\n private formatDate(date?: Date): string {\n if (!date) return '';\n return (\n this.config.dateFormatter?.(date) ??\n new Intl.DateTimeFormat(undefined, { dateStyle: 'medium' }).format(date)\n );\n }\n\n private defaultTooltip(context: StatusTimelineTooltipContext): string {\n const duration =\n this.config.durationFormatter?.(context.durationMs) ?? this.formatDuration(context.durationMs);\n return `${context.status.label}. Start: ${this.formatDate(context.start)}. End: ${this.formatDate(context.end)}. Duration: ${duration}`;\n }\n\n private formatDuration(durationMs: number): string {\n const totalMinutes = Math.max(Math.round(durationMs / 60_000), 1);\n const days = Math.floor(totalMinutes / 1_440);\n const hours = Math.floor((totalMinutes % 1_440) / 60);\n const minutes = totalMinutes % 60;\n return [days ? `${days}d` : '', hours ? `${hours}h` : '', minutes || (!days && !hours) ? `${minutes}m` : '']\n .filter(Boolean)\n .join(' ');\n }\n}\n","<section\n class=\"status-timeline\"\n [style.--status-timeline-gap]=\"config.segmentGap ?? 2\"\n [style.--status-timeline-min-segment-width]=\"config.minSegmentWidth ?? 6\"\n [style.--status-timeline-dimmed-opacity]=\"config.legendDimmedOpacity ?? 0.3\"\n [class.status-timeline--legend-top]=\"legendPosition === 'top'\"\n [class.status-timeline--legend-bottom]=\"legendPosition === 'bottom'\"\n [class.status-timeline--legend-left]=\"legendPosition === 'left'\"\n [class.status-timeline--legend-right]=\"legendPosition === 'right'\"\n [attr.aria-label]=\"config.ariaLabel || 'Status timeline'\"\n>\n @if (config.loading) {\n <div class=\"status-timeline__state\" role=\"status\" aria-live=\"polite\">\n <span class=\"status-timeline__skeleton\" aria-hidden=\"true\"></span>\n <span>{{ config.loadingLabel || 'Loading timeline' }}</span>\n </div>\n } @else if (config.error) {\n <div class=\"status-timeline__state status-timeline__state--error\" role=\"alert\">\n {{ config.error }}\n </div>\n } @else if (!renderedItems.length) {\n <div class=\"status-timeline__state\" role=\"status\">\n {{ config.emptyLabel || 'No timeline data available' }}\n </div>\n } @else {\n <div class=\"status-timeline__visual\">\n <div class=\"status-timeline__scroll\" tabindex=\"0\" aria-label=\"Scrollable status intervals\">\n <div class=\"status-timeline__content\" [style.min-width]=\"timelineMinWidth\">\n <div class=\"status-timeline__segments\" role=\"list\">\n @for (item of renderedItems; track trackItem($index, item); let index = $index) {\n <button\n type=\"button\"\n role=\"listitem\"\n class=\"status-timeline__segment\"\n [class.status-timeline__segment--dimmed]=\"!isStatusSelected(item.status.value)\"\n [style.background-color]=\"item.status.color\"\n [style.flex-grow]=\"item.durationMs\"\n [attr.aria-label]=\"item.accessibleLabel\"\n [attr.aria-describedby]=\"config.showTooltip !== false ? tooltipId(index) : null\"\n (mouseenter)=\"activate(index)\"\n (mouseleave)=\"deactivate(index)\"\n (focus)=\"activate(index)\"\n (blur)=\"deactivate(index)\"\n (click)=\"selectItem(item)\"\n >\n <span class=\"status-timeline__sr-only\">{{ item.status.label }}</span>\n @if (config.showTooltip !== false && activeIndex === index) {\n <span\n class=\"status-timeline__tooltip\"\n [class.status-timeline__tooltip--start]=\"index === 0\"\n [class.status-timeline__tooltip--end]=\"index === renderedItems.length - 1\"\n [id]=\"tooltipId(index)\"\n role=\"tooltip\"\n >\n @for (line of item.tooltipLines; track $index) {\n <span\n class=\"status-timeline__tooltip-line\"\n [class.status-timeline__tooltip-title]=\"$index === 0\"\n >{{ line }}</span\n >\n }\n </span>\n }\n </button>\n }\n </div>\n\n @if (config.showEndpointLabels !== false) {\n <div\n class=\"status-timeline__labels\"\n [class.status-timeline__labels--start]=\"endpointLabelsAlign === 'start'\"\n [class.status-timeline__labels--center]=\"endpointLabelsAlign === 'center'\"\n [class.status-timeline__labels--end]=\"endpointLabelsAlign === 'end'\"\n aria-hidden=\"true\"\n >\n <span>{{ resolvedStartLabel }}</span>\n <span>{{ resolvedEndLabel }}</span>\n </div>\n }\n </div>\n </div>\n </div>\n\n @if (config.showLegend !== false && legendStatuses.length) {\n <div\n class=\"status-timeline__legend-row\"\n [class.status-timeline__legend-row--vertical]=\"legendLayout === 'vertical'\"\n >\n <ul\n class=\"status-timeline__legend\"\n [class.status-timeline__legend--vertical]=\"legendLayout === 'vertical'\"\n [class.status-timeline__legend--scrollable]=\"legendScrollable\"\n [class.status-timeline__legend--align-center]=\"legendAlign === 'center'\"\n [class.status-timeline__legend--align-end]=\"legendAlign === 'end'\"\n [class.status-timeline__legend--align-space-between]=\"legendAlign === 'space-between'\"\n [style.max-width]=\"legendMaxWidth\"\n [style.max-height]=\"legendMaxHeight\"\n aria-label=\"Status legend\"\n tabindex=\"0\"\n >\n @for (status of legendStatuses; track trackStatus($index, status)) {\n <li\n class=\"status-timeline__legend-item\"\n [class.status-timeline__legend-item--dimmed]=\"!isStatusSelected(status.value)\"\n [style.justify-content]=\"legendLabelJustify\"\n [style.text-align]=\"legendLabelAlign\"\n >\n <button\n type=\"button\"\n class=\"status-timeline__legend-button\"\n role=\"switch\"\n [attr.aria-checked]=\"isStatusSelected(status.value)\"\n [attr.aria-label]=\"\n (isStatusSelected(status.value) ? 'Hide ' : 'Show ') + status.label + ' intervals'\n \"\n [disabled]=\"!legendInteractive\"\n (click)=\"toggleStatus(status)\"\n >\n <span\n class=\"status-timeline__legend-swatch\"\n [style.background-color]=\"status.color\"\n aria-hidden=\"true\"\n ></span>\n <span>{{ status.label }}</span>\n </button>\n </li>\n }\n </ul>\n @if (config.legendNote) {\n <p class=\"status-timeline__legend-note\">{{ config.legendNote }}</p>\n }\n </div>\n }\n }\n</section>\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i1.Charts","EBarChart","EPieChart","SankeyChartEchart"],"mappings":";;;;;;;;;;MAQa,cAAc,CAAA;AAChB,IAAA,YAAY;AACZ,IAAA,WAAW;AACV,IAAA,gBAAgB,GAAG,IAAI,YAAY,EAAO;AAEpD,IAAA,WAAW,CAAC,IAAS,EAAA;AACnB,QAAA,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,IAAI,CAAC;;IAGlC;wGATW,cAAc,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAAd,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,cAAc,yMCR3B,8ZAgBA,EAAA,MAAA,EAAA,CAAA,+SAAA,CAAA,EAAA,CAAA;;4FDRa,cAAc,EAAA,UAAA,EAAA,CAAA;kBAN1B,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,sBAAsB,WACvB,EAAE,EAAA,QAAA,EAAA,8ZAAA,EAAA,MAAA,EAAA,CAAA,+SAAA,CAAA,EAAA;;sBAKV;;sBACA;;sBACA;;;MECU,kBAAkB,CAAA;AAC7B,IAAA,UAAU,CAcR,MAA0B,EAC1B,MAAyB,EACzB,QAAiC,EACjC,MAAkC,EAAA;AAElC,QAAA,OAAO;AACJ,aAAA,GAAG,CAAC,CAAC,UAAU,EAAE,KAAK,KAAI;AACzB,YAAA,MAAM,IAAI,GAAG,MAAM,CAAC,UAAU,CAAC,IAAI,IAAI,CAAA,OAAA,EAAU,KAAK,GAAG,CAAC,CAAA,CAAE,CAAC;AAC7D,YAAA,MAAM,KAAK,GACT,UAAU,EAAE,KAAK;gBACjB,UAAU,CAAC,SAAS,EAAE,KAAK;gBAC3B,UAAU,CAAC,SAAS,EAAE,KAAK;AAC3B,gBAAA,MAAM,CAAC,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;AAC1C,gBAAA,SAAS;AACX,YAAA,MAAM,IAAI,GAAG,IAAI,CAAC,WAAW,CAAC,UAAU,EAAE,KAAK,EAAE,IAAI,EAAE,MAAM,CAAC;AAC9D,YAAA,MAAM,QAAQ,GAAG,CAAC,CAAC,MAAM,CAAC,QAAQ,IAAI,CAAC,CAAC,MAAM,CAAC,aAAa,EAAE,QAAQ,CAAC,IAAI,CAAC;AAC5E,YAAA,MAAM,IAAI,GAAoB;AAC5B,gBAAA,EAAE,EAAE,CAAA,EAAG,KAAK,CAAA,CAAA,EAAI,IAAI,CAAA,CAAE;gBACtB,IAAI;AACJ,gBAAA,KAAK,EAAE,IAAI;gBACX,KAAK;gBACL,IAAI;gBACJ,QAAQ;AACR,gBAAA,QAAQ,EAAE,QAAQ,CAAC,IAAI,CAAC,KAAK,KAAK;AAClC,gBAAA,WAAW,EAAE,KAAK;AAClB,gBAAA,GAAG,EAAE,UAAU;gBACf,UAAU,EAAE,UAAU,EAAE,UAAU;aACnC;YAED,IAAI,CAAC,KAAK,GAAG,MAAM,CAAC,SAAS,GAAG,MAAM,CAAC,SAAS,CAAC,IAAI,EAAE,IAAI,CAAC,GAAG,IAAI;AACnE,YAAA,IAAI,CAAC,KAAK,GAAG,MAAM,CAAC,OAAO,GAAG,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,SAAS;AAE9D,YAAA,OAAO,IAAI;AACb,QAAA,CAAC;AACA,aAAA,MAAM,CAAC,CAAC,IAAI,KAAK,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC;IAClC;AAEA,IAAA,YAAY,CAAC,KAAiC,EAAA;AAC5C,QAAA,MAAM,MAAM,GAAG,KAAK,EAAE,SAAS,IAE9B;AACD,QAAA,OAAO,EAAE,IAAI,MAAM,EAAE,MAAM,GAAG,CAAC,CAAC,EAAE,QAAQ,IAAI,EAAE,CAAC,EAAE;IACrD;AAEA,IAAA,cAAc,CACZ,KAAc,EACd,IAAqB,EACrB,IAA8B,EAC9B,KAAiC,EAAA;QAEjC,IAAI,IAAI,CAAC,QAAQ;YAAE;AAEnB,QAAA,IAAI,IAAI,KAAK,WAAW,EAAE;AACxB,YAAA,KAAK,MAAM,KAAK,IAAI,KAAK,EAAE;gBACzB,IAAI,KAAK,CAAC,IAAI,KAAK,IAAI,CAAC,IAAI,EAAE;AAC5B,oBAAA,KAAK,CAAC,cAAc,CAAC,EAAE,IAAI,EAAE,gBAAgB,EAAE,IAAI,EAAE,KAAK,CAAC,IAAI,EAAqB,CAAC;gBACvF;YACF;AACA,YAAA,KAAK,CAAC,cAAc,CAAC,EAAE,IAAI,EAAE,cAAc,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,EAAqB,CAAC;YAClF;QACF;AAEA,QAAA,KAAK,CAAC,cAAc,CAAC,EAAE,IAAI,EAAE,oBAAoB,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,EAAqB,CAAC;IAC1F;IAEA,SAAS,CAAC,KAAc,EAAE,IAAqB,EAAA;QAC7C,IAAI,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,WAAW,KAAK,SAAS;YAAE;AACrD,QAAA,KAAK,CAAC,cAAc,CAAC,EAAE,IAAI,EAAE,WAAW,EAAE,WAAW,EAAE,IAAI,CAAC,WAAW,EAAqB,CAAC;IAC/F;IAEA,QAAQ,CAAC,KAAc,EAAE,IAAqB,EAAA;AAC5C,QAAA,IAAI,IAAI,CAAC,WAAW,KAAK,SAAS;YAAE;AACpC,QAAA,KAAK,CAAC,cAAc,CAAC,EAAE,IAAI,EAAE,UAAU,EAAE,WAAW,EAAE,IAAI,CAAC,WAAW,EAAqB,CAAC;IAC9F;AAEQ,IAAA,WAAW,CASjB,UAAmB,EACnB,KAAa,EACb,IAAY,EACZ,MAAkC,EAAA;AAElC,QAAA,IAAI,OAAO,MAAM,CAAC,IAAI,KAAK,UAAU;YAAE,OAAO,MAAM,CAAC,IAAI,CAAC,UAAU,EAAE,KAAK,CAAC;AAC5E,QAAA,IAAI,MAAM,CAAC,KAAK,GAAG,IAAI,CAAC;AAAE,YAAA,OAAO,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC;QACnD,IAAI,MAAM,CAAC,IAAI;YAAE,OAAO,MAAM,CAAC,IAAI;QACnC,IAAI,UAAU,CAAC,UAAU;YAAE,OAAO,UAAU,CAAC,UAAU;QACvD,IAAI,UAAU,CAAC,IAAI;YAAE,OAAO,UAAU,CAAC,IAAI;QAC3C,IAAI,UAAU,CAAC,MAAM,IAAI,UAAU,CAAC,MAAM,KAAK,MAAM;YAAE,OAAO,UAAU,CAAC,MAAM;QAC/E,IAAI,UAAU,CAAC,IAAI;AAAE,YAAA,OAAO,MAAM;AAElC,QAAA,QAAQ,UAAU,CAAC,IAAI;AACrB,YAAA,KAAK,KAAK;AACR,gBAAA,OAAO,MAAM;AACf,YAAA,KAAK,KAAK;AACV,YAAA,KAAK,SAAS;AACd,YAAA,KAAK,eAAe;AAClB,gBAAA,OAAO,QAAQ;AACjB,YAAA;AACE,gBAAA,OAAO,MAAM;;IAEnB;wGA1HW,kBAAkB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA;AAAlB,IAAA,OAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,kBAAkB,cADL,MAAM,EAAA,CAAA;;4FACnB,kBAAkB,EAAA,UAAA,EAAA,CAAA;kBAD9B,UAAU;mBAAC,EAAE,UAAU,EAAE,MAAM,EAAE;;;ACqBlC,MAAM,qBAAqB,GAAG,IAAI,GAAG,CAAC;IACpC,MAAM;IACN,WAAW;IACX,MAAM;IACN,QAAQ;IACR,aAAa;IACb,MAAM;IACN,WAAW;IACX,WAAW;IACX,gBAAgB;IAChB,QAAQ;IACR,aAAa;IACb,UAAU;IACV,eAAe;IACf,SAAS;IACT,cAAc;IACd,KAAK;IACL,UAAU;IACV,OAAO;IACP,YAAY;IACZ,GAAG;IACH,MAAM;IACN,WAAW;AACZ,CAAA,CAAC;AAEF,SAAS,iBAAiB,CAAC,KAAc,EAAA;AACvC,IAAA,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,IAAI,IAAI,EAAE,UAAU,IAAI,KAAK,CAAC;AAAE,QAAA,OAAO,SAAS;AAE3F,IAAA,MAAM,QAAQ,GAAI,KAA6B,CAAC,QAAQ;AACxD,IAAA,OAAO,OAAO,QAAQ,KAAK,QAAQ,IAAI,QAAQ,KAAK;AAClD,UAAG;UACD,SAAS;AACf;MAUa,oBAAoB,CAAA;AA4BZ,IAAA,OAAA;AACA,IAAA,GAAA;IA5BV,KAAK,GAAmB,IAAI;IAC5B,MAAM,GAAmB,EAAE;IAC3B,MAAM,GAAsB,EAAE;IAC9B,MAAM,GAA2B,EAAE;AACnC,IAAA,YAAY;AAEX,IAAA,WAAW,GAAG,IAAI,YAAY,EAAoB;AACxB,IAAA,aAAa;AAEjD,IAAA,KAAK,GAAqB;AACxB,QAAA,KAAK,EAAE,EAAE;AACT,QAAA,QAAQ,EAAE,EAAE;AACZ,QAAA,WAAW,EAAE,IAAI;AACjB,QAAA,SAAS,EAAE,CAAC;KACb;IACD,eAAe,GAAG,KAAK;IACvB,cAAc,GAAG,KAAK;IACtB,YAAY,GAAG,KAAK;AAEH,IAAA,SAAS;AACT,IAAA,qBAAqB,GAAG,CAAC,KAAc,KAAI;QAC1D,IAAI,CAAC,aAAa,CAAC,iBAAiB,CAAC,KAAK,CAAC,CAAC;AAC9C,IAAA,CAAC;AACO,IAAA,cAAc;IACd,gBAAgB,GAAG,CAAC;AAE5B,IAAA,WAAA,CACmB,OAA2B,EAC3B,GAAsB,EAClB,UAAkB,EAAA;QAFtB,IAAA,CAAA,OAAO,GAAP,OAAO;QACP,IAAA,CAAA,GAAG,GAAH,GAAG;AAGpB,QAAA,IAAI,CAAC,SAAS,GAAG,iBAAiB,CAAC,UAAU,CAAC;IAChD;AAEA,IAAA,WAAW,CAAC,OAAsB,EAAA;QAChC,IAAI,OAAO,CAAC,OAAO,CAAC;YAAE,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,aAA+B,CAAC;QACxF,IAAI,CAAC,YAAY,EAAE;QACnB,IAAI,CAAC,yBAAyB,EAAE;IAClC;IAEA,eAAe,GAAA;QACb,IAAI,CAAC,IAAI,CAAC,SAAS;YAAE;QACrB,IAAI,OAAO,cAAc,KAAK,WAAW,IAAI,IAAI,CAAC,aAAa,EAAE,aAAa,EAAE;AAC9E,YAAA,IAAI,CAAC,cAAc,GAAG,IAAI,cAAc,CAAC,MAAM,IAAI,CAAC,yBAAyB,EAAE,CAAC;YAChF,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,IAAI,CAAC,aAAa,CAAC,aAAa,CAAC;QAC/D;QACA,IAAI,CAAC,yBAAyB,EAAE;IAClC;IAEA,WAAW,GAAA;AACT,QAAA,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,KAAK,CAAC;AAC5B,QAAA,IAAI,CAAC,cAAc,EAAE,UAAU,EAAE;QACjC,IAAI,IAAI,CAAC,gBAAgB;AAAE,YAAA,oBAAoB,CAAC,IAAI,CAAC,gBAAgB,CAAC;IACxE;AAEA,IAAA,IAAI,YAAY,GAAA;AACd,QAAA,MAAM,QAAQ,GAAG,IAAI,CAAC,MAAM,CAAC,QAAQ;AACrC,QAAA,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,cAAc,IAAI,CAAC,QAAQ,IAAI,QAAQ,IAAI,CAAC;AAAE,YAAA,OAAO,IAAI,CAAC,KAAK,CAAC,KAAK;QAEtF,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,SAAS,GAAG,QAAQ;AAC7C,QAAA,OAAO,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,EAAE,KAAK,GAAG,QAAQ,CAAC;IACxD;AAEA,IAAA,IAAI,YAAY,GAAA;AACd,QAAA,MAAM,MAAM,GAAG,IAAI,GAAG,EAAoC;AAC1D,QAAA,KAAK,MAAM,IAAI,IAAI,IAAI,CAAC,YAAY,EAAE;AACpC,YAAA,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,IAAI,IAAI;YAC9B,MAAM,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,IAAI,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC,EAAE,IAAI,CAAC,CAAC;QACrD;QACA,OAAO,CAAC,GAAG,MAAM,CAAC,OAAO,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,EAAE,KAAK,CAAC,MAAM,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC;IAC1E;AAEA,IAAA,IAAI,SAAS,GAAA;AACX,QAAA,MAAM,QAAQ,GAAG,IAAI,CAAC,MAAM,CAAC,QAAQ;AACrC,QAAA,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,cAAc,IAAI,CAAC,QAAQ,IAAI,QAAQ,IAAI,CAAC;AAAE,YAAA,OAAO,CAAC;QACvE,OAAO,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,MAAM,GAAG,QAAQ,CAAC,EAAE,CAAC,CAAC;IACnE;AAEA,IAAA,IAAI,gBAAgB,GAAA;AAClB,QAAA,QACE,IAAI,CAAC,MAAM,CAAC,MAAM,KAAK,UAAU;AACjC,YAAA,IAAI,CAAC,MAAM,CAAC,QAAQ,KAAK,MAAM;AAC/B,YAAA,IAAI,CAAC,MAAM,CAAC,QAAQ,KAAK,OAAO;IAEpC;AAEA,IAAA,IAAI,kBAAkB,GAAA;AACpB,QAAA,OAAO,IAAI,CAAC,MAAM,CAAC,UAAU,KAAK,IAAI;IACxC;AAEA,IAAA,IAAI,mBAAmB,GAAA;AACrB,QAAA,OAAO,IAAI,CAAC,MAAM,CAAC,UAAU,KAAK,KAAK,IAAI,CAAC,IAAI,CAAC,qBAAqB;IACxE;AAEA,IAAA,IAAI,wBAAwB,GAAA;AAC1B,QAAA,OAAO,IAAI,CAAC,kBAAkB,IAAI,IAAI,CAAC,mBAAmB;IAC5D;AAEA,IAAA,IAAI,iBAAiB,GAAA;AACnB,QAAA,OAAO,IAAI,CAAC,mBAAmB,GAAG,CAAC,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC,gBAAgB;IAClF;AAEA,IAAA,IAAI,qBAAqB,GAAA;QACvB,QACE,IAAI,CAAC,MAAM,CAAC,KAAK,KAAK,QAAQ,KAAK,IAAI,CAAC,gBAAgB,IAAI,IAAI,CAAC,MAAM,CAAC,KAAK,KAAK,QAAQ,CAAC;IAE/F;AAEA,IAAA,IAAI,kBAAkB,GAAA;AACpB,QAAA,QACE,IAAI,CAAC,MAAM,CAAC,KAAK,KAAK,KAAK;AAC3B,aAAC,CAAC,IAAI,CAAC,gBAAgB,IAAI,IAAI,CAAC,MAAM,CAAC,KAAK,KAAK,OAAO,CAAC;AACzD,aAAC,IAAI,CAAC,gBAAgB,IAAI,IAAI,CAAC,MAAM,CAAC,KAAK,KAAK,QAAQ,CAAC;IAE7D;AAEA,IAAA,IAAI,oBAAoB,GAAA;QACtB,OAAO,IAAI,CAAC,iBAAiB,GAAG,kBAAkB,GAAG,oBAAoB;IAC3E;AAEA,IAAA,IAAI,kBAAkB,GAAA;QACpB,OAAO,IAAI,CAAC,iBAAiB,GAAG,oBAAoB,GAAG,qBAAqB;IAC9E;IAEA,WAAW,CAAC,CAAS,EAAE,IAAqB,EAAA;QAC1C,OAAO,IAAI,CAAC,EAAE;IAChB;IAEA,YAAY,CAAC,CAAS,EAAE,KAA+B,EAAA;AACrD,QAAA,OAAO,KAAK,CAAC,KAAK,IAAI,aAAa;IACrC;AAEA,IAAA,WAAW,CAAC,IAAqB,EAAA;QAC/B,OAAO,IAAI,CAAC,YAAY,IAAI,IAAI,CAAC,MAAM,CAAC,YAAY,IAAI,IAAI;IAC9D;AAEA,IAAA,eAAe,CAAC,IAAqB,EAAA;QACnC,OAAO;AACL,YAAA,SAAS,EAAE,IAAI;YACf,IAAI;YACJ,QAAQ,EAAE,IAAI,CAAC,QAAQ;YACvB,QAAQ,EAAE,IAAI,CAAC,QAAQ;SACxB;IACH;AAEQ,IAAA,UAAU,CAAC,IAAqB,EAAA;QACtC,OAAO,IAAI,CAAC,UAAU,IAAI,IAAI,CAAC,MAAM,CAAC,UAAU,IAAI,SAAS;IAC/D;AAEA,IAAA,aAAa,CAAC,IAAqB,EAAA;AACjC,QAAA,OAAO,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,KAAK,MAAM,GAAG,MAAM,GAAG,IAAI,CAAC,IAAI;IAC9D;AAEA,IAAA,cAAc,CAAC,IAAqB,EAAA;QAClC,MAAM,IAAI,GAAG,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE;AAC5C,QAAA,IAAI,CAAC,IAAI,IAAI,IAAI,KAAK,MAAM;AAAE,YAAA,OAAO,MAAM;AAC3C,QAAA,IAAI,IAAI,CAAC,UAAU,CAAC,UAAU,CAAC;AAAE,YAAA,OAAO,OAAO;AAC/C,QAAA,IAAI,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,IAAI,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC;AAAE,YAAA,OAAO,MAAM;AAC1E,QAAA,OAAO,OAAO;IAChB;AAEA,IAAA,YAAY,CAAC,IAAqB,EAAA;QAChC,OAAO,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,aAAa,EAAE,EAAE,CAAC;IAC7C;AAEA,IAAA,YAAY,CAAC,IAAqB,EAAA;QAChC,OAAO,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,YAAY,EAAE,EAAE,CAAC;IAC5C;AAEA,IAAA,cAAc,CAAC,IAAqB,EAAA;AAClC,QAAA,MAAM,KAAK,GAAG,qBAAqB,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,IAAI,GAAG,MAAM;QAC7D,OAAO,CAAA,oBAAA,EAAuB,KAAK,CAAA,CAAE;IACvC;AAEA,IAAA,YAAY,CAAC,IAAqB,EAAA;QAChC,OAAO,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,KAAK,YAAY;IAC/C;AAEA,IAAA,UAAU,CAAC,IAAqB,EAAA;QAC9B,OAAO,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,KAAK,MAAM;IACzC;IAEA,MAAM,CAAC,IAAqB,EAAE,KAAa,EAAA;QACzC,KAAK,EAAE,cAAc,EAAE;AACvB,QAAA,IAAI,CAAC,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,QAAQ;YAAE;AAElC,QAAA,IAAI,IAAI,CAAC,MAAM,EAAE,yBAAyB,EAAE;YAC1C,IAAI,EAAE,IAAI,GAAG,QAAQ,EAAE,IAAI,CAAC;YAC5B;QACF;AAEA,QAAA,MAAM,IAAI,GAAG,IAAI,CAAC,aAAa,EAAE;AACjC,QAAA,MAAM,WAAW,GAAG,IAAI,CAAC,QAAQ;AACjC,QAAA,IAAI,CAAC,OAAO,CAAC,cAAc,CAAC,IAAI,CAAC,KAAK,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC;QACrE,IAAI,CAAC,aAAa,EAAE;;IAEtB;AAEA,IAAA,KAAK,CAAC,IAAqB,EAAA;AACzB,QAAA,IAAI,CAAC,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,MAAM,CAAC,SAAS,KAAK,KAAK;YAAE;AACrE,QAAA,IAAI,CAAC,KAAK,GAAG,EAAE,GAAG,IAAI,CAAC,KAAK,EAAE,WAAW,EAAE,IAAI,CAAC,IAAI,EAAE;QACtD,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC;;AAExC,QAAA,IAAI,CAAC,GAAG,CAAC,YAAY,EAAE;IACzB;AAEA,IAAA,KAAK,CAAC,IAAqB,EAAA;QACzB,IAAI,CAAC,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,MAAM,CAAC,SAAS,KAAK,KAAK;YAAE;AACpD,QAAA,IAAI,CAAC,KAAK,GAAG,EAAE,GAAG,IAAI,CAAC,KAAK,EAAE,WAAW,EAAE,IAAI,EAAE;QACjD,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC;;AAEvC,QAAA,IAAI,CAAC,GAAG,CAAC,YAAY,EAAE;IACzB;AAEA,IAAA,IAAI,CAAC,IAAY,EAAA;QACf,MAAM,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,SAAS,GAAG,IAAI,EAAE,CAAC,CAAC,EAAE,IAAI,CAAC,SAAS,GAAG,CAAC,CAAC;AACnF,QAAA,IAAI,IAAI,KAAK,IAAI,CAAC,KAAK,CAAC,SAAS;YAAE;AACnC,QAAA,IAAI,CAAC,KAAK,GAAG,EAAE,GAAG,IAAI,CAAC,KAAK,EAAE,SAAS,EAAE,IAAI,EAAE;AAC/C,QAAA,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC;QACjB,IAAI,CAAC,yBAAyB,EAAE;IAClC;IAEA,YAAY,CAAC,SAAiB,EAAE,KAAa,EAAA;QAC3C,KAAK,EAAE,cAAc,EAAE;QACvB,IAAI,CAAC,IAAI,CAAC,wBAAwB;YAAE;AACpC,QAAA,MAAM,OAAO,GAAG,IAAI,CAAC,aAAa,EAAE,aAAa;AACjD,QAAA,IAAI,CAAC,OAAO;YAAE;AAEd,QAAA,MAAM,QAAQ,GAAG,IAAI,CAAC;AACpB,cAAE,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,YAAY,GAAG,GAAG,EAAE,GAAG;AAC1C,cAAE,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,WAAW,GAAG,GAAG,EAAE,GAAG,CAAC;QAE5C,OAAO,CAAC,QAAQ,CAAC;AACf,YAAA,IAAI,EAAE,IAAI,CAAC,iBAAiB,GAAG,CAAC,GAAG,SAAS,GAAG,QAAQ;AACvD,YAAA,GAAG,EAAE,IAAI,CAAC,iBAAiB,GAAG,SAAS,GAAG,QAAQ,GAAG,CAAC;AACtD,YAAA,QAAQ,EAAE,QAAQ;AACnB,SAAA,CAAC;QACF,IAAI,CAAC,yBAAyB,EAAE;IAClC;IAEA,iBAAiB,GAAA;QACf,IAAI,CAAC,yBAAyB,EAAE;IAClC;AAEA,IAAA,SAAS,CAAC,IAAqB,EAAA;QAC7B,OAAO,IAAI,CAAC,MAAM,CAAC,gBAAgB,GAAG,IAAI,CAAC,MAAM,CAAC,gBAAgB,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,KAAK;IACvF;AAEQ,IAAA,YAAY,CAAC,iBAA2C,EAAA;AAC9D,QAAA,MAAM,QAAQ,GAAG,iBAAiB,IAAI,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,IAAI,CAAC,KAAK,CAAC;QAC3E,MAAM,KAAK,GAAG,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,MAAM,EAAE,QAAQ,EAAE,IAAI,CAAC,MAAM,CAAC;AACtF,QAAA,MAAM,OAAO,GAAG,IAAI,CAAC,GAAG,CACtB,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,IAAI,IAAI,CAAC,MAAM,CAAC,QAAQ,IAAI,KAAK,CAAC,MAAM,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,EACzE,CAAC,CACF;QACD,IAAI,CAAC,KAAK,GAAG;YACX,GAAG,IAAI,CAAC,KAAK;YACb,QAAQ;YACR,KAAK;AACL,YAAA,SAAS,EAAE,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,SAAS,EAAE,OAAO,CAAC;SACnD;AACD,QAAA,IAAI,CAAC,GAAG,CAAC,YAAY,EAAE;QACvB,IAAI,CAAC,yBAAyB,EAAE;IAClC;AAEQ,IAAA,aAAa,CAAC,QAAkC,EAAA;AACtD,QAAA,IAAI,CAAC,YAAY,CAAC,QAAQ,IAAI,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;AACpE,QAAA,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC;IACnB;AAEQ,IAAA,WAAW,CAAC,QAAwB,EAAA;AAC1C,QAAA,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC;QAC1B,IAAI,CAAC,IAAI,CAAC,SAAS,IAAI,CAAC,IAAI,CAAC,KAAK;YAAE;QACpC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,qBAAqB,EAAE,IAAI,CAAC,qBAAqB,CAAC;QAChE,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,gBAAgB,EAAE,IAAI,CAAC,qBAAqB,CAAC;QAC3D,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,kBAAkB,EAAE,IAAI,CAAC,qBAAqB,CAAC;IAC/D;AAEQ,IAAA,WAAW,CAAC,KAAiC,EAAA;AACnD,QAAA,IAAI,CAAC,KAAK;YAAE;QACZ,KAAK,CAAC,GAAG,CAAC,qBAAqB,EAAE,IAAI,CAAC,qBAAqB,CAAC;QAC5D,KAAK,CAAC,GAAG,CAAC,gBAAgB,EAAE,IAAI,CAAC,qBAAqB,CAAC;QACvD,KAAK,CAAC,GAAG,CAAC,kBAAkB,EAAE,IAAI,CAAC,qBAAqB,CAAC;IAC3D;IAEQ,aAAa,GAAA;AACnB,QAAA,OAAO,IAAI,CAAC,MAAM,CAAC,aAAa,IAAI,UAAU;IAChD;IAEQ,IAAI,CAAC,IAA8B,EAAE,IAAsB,EAAA;AACjE,QAAA,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE,CAAC;IAC1D;IAEQ,yBAAyB,GAAA;AAC/B,QAAA,IAAI,CAAC,IAAI,CAAC,SAAS,IAAI,IAAI,CAAC,gBAAgB;YAAE;AAC9C,QAAA,IAAI,CAAC,IAAI,CAAC,wBAAwB,EAAE;YAClC,IAAI,CAAC,cAAc,CAAC,KAAK,EAAE,KAAK,EAAE,KAAK,CAAC;YACxC;QACF;AACA,QAAA,IAAI,CAAC,gBAAgB,GAAG,qBAAqB,CAAC,MAAK;AACjD,YAAA,IAAI,CAAC,gBAAgB,GAAG,CAAC;YACzB,IAAI,CAAC,oBAAoB,EAAE;AAC7B,QAAA,CAAC,CAAC;IACJ;IAEQ,oBAAoB,GAAA;AAC1B,QAAA,MAAM,OAAO,GAAG,IAAI,CAAC,aAAa,EAAE,aAAa;QACjD,IAAI,CAAC,OAAO,EAAE;YACZ,IAAI,CAAC,cAAc,CAAC,KAAK,EAAE,KAAK,EAAE,KAAK,CAAC;YACxC;QACF;AAEA,QAAA,MAAM,WAAW,GAAG,IAAI,CAAC;cACrB,OAAO,CAAC,YAAY,GAAG,OAAO,CAAC,YAAY,GAAG;cAC9C,OAAO,CAAC,WAAW,GAAG,OAAO,CAAC,WAAW,GAAG,CAAC;AACjD,QAAA,MAAM,cAAc,GAAG,IAAI,CAAC,iBAAiB,GAAG,OAAO,CAAC,SAAS,GAAG,OAAO,CAAC,UAAU;AACtF,QAAA,MAAM,YAAY,GAAG,IAAI,CAAC,iBAAiB,GAAG,OAAO,CAAC,YAAY,GAAG,OAAO,CAAC,WAAW;AACxF,QAAA,MAAM,UAAU,GAAG,IAAI,CAAC,iBAAiB,GAAG,OAAO,CAAC,YAAY,GAAG,OAAO,CAAC,WAAW;QAEtF,IAAI,CAAC,cAAc,CACjB,WAAW,EACX,WAAW,IAAI,cAAc,GAAG,CAAC,EACjC,WAAW,IAAI,cAAc,GAAG,YAAY,GAAG,UAAU,GAAG,CAAC,CAC9D;IACH;AAEQ,IAAA,cAAc,CACpB,eAAwB,EACxB,cAAuB,EACvB,YAAqB,EAAA;AAErB,QAAA,IACE,IAAI,CAAC,eAAe,KAAK,eAAe;YACxC,IAAI,CAAC,cAAc,KAAK,cAAc;AACtC,YAAA,IAAI,CAAC,YAAY,KAAK,YAAY,EAClC;YACA;QACF;AACA,QAAA,IAAI,CAAC,eAAe,GAAG,eAAe;AACtC,QAAA,IAAI,CAAC,cAAc,GAAG,cAAc;AACpC,QAAA,IAAI,CAAC,YAAY,GAAG,YAAY;AAChC,QAAA,IAAI,CAAC,GAAG,CAAC,YAAY,EAAE;IACzB;AAEA,IAAA,IAAY,qBAAqB,GAAA;QAC/B,OAAO,OAAO,IAAI,CAAC,MAAM,CAAC,QAAQ,KAAK,QAAQ,IAAI,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC,MAAM,GAAG,CAAC;IAC3F;AA3VW,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,kBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,oBAAoB,kFA8BrB,WAAW,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;4FA9BV,oBAAoB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,EAAA,KAAA,EAAA,OAAA,EAAA,MAAA,EAAA,QAAA,EAAA,MAAA,EAAA,QAAA,EAAA,MAAA,EAAA,QAAA,EAAA,YAAA,EAAA,cAAA,EAAA,EAAA,OAAA,EAAA,EAAA,WAAA,EAAA,aAAA,EAAA,EAAA,WAAA,EAAA,CAAA,EAAA,YAAA,EAAA,eAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,eAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,CAAA,EAAA,aAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EC1EjC,sqUAyOA,EAAA,MAAA,EAAA,CAAA,ukVAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EDpKY,YAAY,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,gBAAA,EAAA,QAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,CAAA,yBAAA,EAAA,kBAAA,EAAA,0BAAA,CAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA;;4FAKX,oBAAoB,EAAA,UAAA,EAAA,CAAA;kBARhC,SAAS;+BACE,kBAAkB,EAAA,UAAA,EAChB,IAAI,EAAA,OAAA,EACP,CAAC,YAAY,CAAC,EAAA,eAAA,EAGN,uBAAuB,CAAC,MAAM,EAAA,QAAA,EAAA,sqUAAA,EAAA,MAAA,EAAA,CAAA,ukVAAA,CAAA,EAAA;;0BAgC5C,MAAM;2BAAC,WAAW;;sBA7BpB;;sBACA;;sBACA;;sBACA;;sBACA;;sBAEA;;sBACA,SAAS;uBAAC,eAAe;;;MEpEf,MAAM,CAAA;IACjB,cAAc,GAA4B,EAAE;IAC5C,aAAa,GAAa,CAAC,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAkOtE,IAAA,kBAAkB,CAAC,KAAoB,EAAE,MAAW,EAAE,aAAkB,EAAE,SAAkB,EAAA;QAC1F,MAAM,UAAU,GAAG,EAAE;QACrB,MAAM,OAAO,GAAG,EAAE;QAClB,MAAM,cAAc,GAAG,EAAE;QACzB,MAAM,OAAO,GAAG,CAAC;QACjB,MAAM,IAAI,GAAG,iBAAiB;;;;QAM9B,MAAM,cAAc,GAAG,aAAa,EAAE,QAAQ,IAAI,IAAI,GAAG;QAEzD,MAAM,OAAO,GAAG,MAAM,EAAE,aAAa,EAAE,IAAI,IAAI,CAAC;QAChD,MAAM,QAAQ,GAAG,MAAM,EAAE,aAAa,EAAE,KAAK,IAAI,CAAC;;AAGlD,QAAA,MAAM,WAAW,GAAG,cAAc,GAAG,OAAO,GAAG,QAAQ;QAEvD,MAAM,QAAQ,GAAG,WAAW,IAAI,MAAM,EAAE,oBAAoB,IAAI,GAAG,CAAC;;;;AAMpE,QAAA,MAAM,WAAW,GAAG,aAAa,EAAE,SAAS,EAAE,EAAE,MAAM,GAAG,CAAC,CAAC,EAAE,QAAQ,IAAI,EAAE;QAE3E,IAAI,UAAU,GAAG,CAAC;;;;AAMlB,QAAA,MAAM,KAAK,GAAG,CACZ,SAAS,KAAK,MAAM,IAAI,SAAS,KAAK,KAAK,IAAI,SAAS,KAAK;cACzD,MAAM,EAAE;cACR,MAAM,EAAE,IAAI,GACf,GAAG,CAAC,CAAC,IAAS,KAAI;AACnB,YAAA,MAAM,eAAe,GAAG,KAAK,CAAC,OAAO,CAAC,MAAM,EAAE,MAAM,CAAC,IAAI,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,CAAC;AAEnF,YAAA,MAAM,KAAK,GACT,KAAK,KAAK;AACR,kBAAE;AACF,mBAAG,IAAI,EAAE,SAAS,EAAE,KAAK;AACvB,qBAAC;AACC,0BAAE,MAAM,EAAE,MAAM,CAAC,UAAU,GAAG,MAAM,EAAE,MAAM,EAAE,MAAM;AACpD,0BAAE,IAAI,CAAC,aAAa,CAAC,UAAU,GAAG,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC,CAAC;AAEtE,YAAA,IACE,CAAC,IAAI,EAAE,SAAS,EAAE,KAAK;iBACtB,IAAI,EAAE,SAAS,EAAE,KAAK,IAAI,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,MAAM,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,EACtF;gBACA,UAAU,IAAI,CAAC;YACjB;AAEA,YAAA,MAAM,QAAQ,GAAG,OAAO,CAAC,MAAM,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC;AAE5D,YAAA,MAAM,SAAS,GACb,SAAS,KAAK,MAAM,IAAI,SAAS,KAAK,KAAK,IAAI,SAAS,KAAK;AAC3D,kBAAE,EAAE,KAAK,EAAE,CAAC;AACZ,kBAAE,OAAO,CAAC,MAAM,CAAC,WAAW,CACxB,MAAM,CAAC,MAAM,EAAE,cAAc,GAAG,MAAM,CAAC,cAAc,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,EAC/E,IAAI,CACL;YAEP,MAAM,SAAS,GACb,OAAO;gBACP,cAAc;gBACd,CAAC;AACD,gBAAA,QAAQ,CAAC,KAAK;iBACb,SAAS,KAAK,MAAM,IAAI,SAAS,KAAK,KAAK,IAAI,SAAS,KAAK;AAC5D,sBAAE;AACF,sBAAE,CAAC,GAAG,SAAS,CAAC,KAAK,CAAC;AACxB,gBAAA,OAAO;YAET,OAAO;gBACL,IAAI;gBACJ,KAAK;gBACL,SAAS;aACV;AACH,QAAA,CAAC,CAAC;;;;QAMF,MAAM,IAAI,GAAU,EAAE;QAEtB,IAAI,UAAU,GAAU,EAAE;QAC1B,IAAI,QAAQ,GAAG,CAAC;AAEhB,QAAA,KAAK,EAAE,OAAO,CAAC,CAAC,IAAS,KAAI;AAC3B,YAAA,MAAM,eAAe,GAAG,UAAU,CAAC,MAAM,GAAG,CAAC,GAAG,OAAO,GAAG,CAAC;;AAG3D,YAAA,IAAI,UAAU,CAAC,MAAM,IAAI,QAAQ,GAAG,eAAe,GAAG,IAAI,CAAC,SAAS,GAAG,QAAQ,EAAE;gBAC/E,IAAI,CAAC,IAAI,CAAC;AACR,oBAAA,KAAK,EAAE,UAAU;AACjB,oBAAA,KAAK,EAAE,QAAQ;AAChB,iBAAA,CAAC;AAEF,gBAAA,UAAU,GAAG,CAAC,IAAI,CAAC;AACnB,gBAAA,QAAQ,GAAG,IAAI,CAAC,SAAS;YAC3B;iBAAO;AACL,gBAAA,QAAQ,IAAI,eAAe,GAAG,IAAI,CAAC,SAAS;AAC5C,gBAAA,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC;YACvB;AACF,QAAA,CAAC,CAAC;AAEF,QAAA,IAAI,UAAU,CAAC,MAAM,EAAE;YACrB,IAAI,CAAC,IAAI,CAAC;AACR,gBAAA,KAAK,EAAE,UAAU;AACjB,gBAAA,KAAK,EAAE,QAAQ;AAChB,aAAA,CAAC;QACJ;;;;QAMA,IAAI,OAAO,GAAG,CAAC;QAEf,MAAM,QAAQ,GAAU,EAAE;AAE1B,QAAA,IAAI,EAAE,OAAO,CAAC,CAAC,GAAG,KAAI;YACpB,IAAI,OAAO,GAAG,CAAC;;;;AAMf,YAAA,IAAI,MAAM,EAAE,eAAe,KAAK,UAAU,EAAE;AAC1C,gBAAA,IAAI,MAAM,EAAE,WAAW,KAAK,QAAQ,EAAE;AACpC,oBAAA,OAAO,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,QAAQ,GAAG,GAAG,CAAC,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC;gBACnD;AAAO,qBAAA,IAAI,MAAM,EAAE,WAAW,KAAK,OAAO,EAAE;AAC1C,oBAAA,OAAO,GAAG,IAAI,CAAC,GAAG,CAAC,QAAQ,GAAG,GAAG,CAAC,KAAK,EAAE,CAAC,CAAC;gBAC7C;YACF;YAEA,GAAG,EAAE,KAAK,EAAE,OAAO,CAAC,CAAC,IAAS,KAAI;AAChC,gBAAA,MAAM,UAAU,GAAG,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,KAAK;gBAExD,MAAM,UAAU,GAAG,IAAI,CAAC,IAAI,CAAC,KAAK,KAAK,CAAC;gBAExC,QAAQ,CAAC,IAAI,CAAC;AACZ,oBAAA,IAAI,EAAE,OAAO;AAEb,oBAAA,IAAI,EAAE,OAAO;AACb,oBAAA,GAAG,EAAE,OAAO;oBAEZ,KAAK,EAAE,IAAI,CAAC,SAAS;AACrB,oBAAA,MAAM,EAAE,UAAU;oBAElB,MAAM,EAAE,UAAU,GAAG,SAAS,GAAG,SAAS;oBAE1C,OAAO,EAAE,MAAK;AACZ,wBAAA,IAAI,UAAU;4BAAE;wBAEhB,aAAa,CAAC,cAAc,CAAC;AAC3B,4BAAA,IAAI,EAAE,oBAAoB;AAC1B,4BAAA,IAAI,EAAE,IAAI,CAAC,IAAI,CAAC,IAAI;AACrB,yBAAA,CAAC;wBAEF,aAAa,CAAC,SAAS,CAAC;AACtB,4BAAA,OAAO,EAAE,IAAI,CAAC,kBAAkB,CAAC,KAAK,EAAE,MAAM,EAAE,aAAa,EAAE,SAAS,CAAC;AAC1E,yBAAA,CAAC;oBACJ,CAAC;AAED,oBAAA,QAAQ,EAAE;;;;AAKR,wBAAA;AACE,4BAAA,IAAI,EAAE,MAAM;AAEZ,4BAAA,KAAK,EAAE;gCACL,KAAK,EAAE,IAAI,CAAC,SAAS;AACrB,gCAAA,MAAM,EAAE,UAAU;AAClB,gCAAA,CAAC,EAAE,CAAC;AACL,6BAAA;AAED,4BAAA,KAAK,EAAE;AACL,gCAAA,IAAI,EACF,UAAU,IAAI,CAAC;sCACX,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK,EAAE,KAAK,KAAK,CAAC,GAAG,GAAG,GAAG,IAAI;AACrD,sCAAE,SAAS;gCAEf,MAAM,EAAE,UAAU,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK,EAAE,GAAG,CAAC,GAAG,SAAS;AAE/E,gCAAA,SAAS,EAAE,CAAC;AACb,6BAAA;AACF,yBAAA;;;;AAMD,wBAAA;AACE,4BAAA,IAAI,EAAE,MAAM;AAEZ,4BAAA,KAAK,EAAE;AACL,gCAAA,KAAK,EAAE,EAAE;AACT,gCAAA,MAAM,EAAE,MAAM,EAAE,qBAAqB,IAAI,EAAE;AAC3C,gCAAA,CAAC,EAAE,CAAC;AACL,6BAAA;AAED,4BAAA,IAAI,EAAE,OAAO;AAEb,4BAAA,GAAG,EAAE,CAAC,UAAU,IAAI,MAAM,EAAE,qBAAqB,IAAI,EAAE,CAAC,IAAI,CAAC;AAE7D,4BAAA,KAAK,EAAE;AACL,gCAAA,IAAI,EAAE,UAAU,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,KAAK,GAAG,SAAS;AACzD,6BAAA;AACF,yBAAA;;;;AAMD,wBAAA;AACE,4BAAA,IAAI,EAAE,MAAM;AAEZ,4BAAA,IAAI,EAAE,OAAO,GAAG,cAAc,GAAG,CAAC;AAElC,4BAAA,GAAG,EAAE,CAAC,UAAU,GAAG,cAAc,IAAI,CAAC;AAEtC,4BAAA,KAAK,EAAE;gCACL,IAAI,EAAE,CAAA,EAAG,IAAI,CAAC,IAAI,CAAC,IAAI,CAAA,EACrB,SAAS,KAAK,MAAM,IAAI,SAAS,KAAK,KAAK,IAAI,SAAS,KAAK,SAAS,GAAG,EAAE,GAAG,GAChF,CAAA,CAAE;AAEF,gCAAA,QAAQ,EAAE,EAAE;AACZ,gCAAA,UAAU,EAAE,GAAG;AAEf,gCAAA,IAAI,EAAE,UAAU,IAAI,CAAC,UAAU,IAAI,KAAK,KAAK,CAAC,GAAG,SAAS,GAAG,SAAS;AAEtE,gCAAA,iBAAiB,EAAE,QAAQ;AAC5B,6BAAA;AACF,yBAAA;;;;wBAMD,IAAI,SAAS,KAAK,MAAM,IAAI,SAAS,KAAK,KAAK,IAAI,SAAS,KAAK;AAC/D,8BAAE;AACF,8BAAE;AACE,gCAAA;AACE,oCAAA,IAAI,EAAE,MAAM;AAEZ,oCAAA,KAAK,EAAE,OAAO;AAEd,oCAAA,GAAG,EAAE,CAAC,UAAU,GAAG,cAAc,IAAI,CAAC;AAEtC,oCAAA,KAAK,EAAE;wCACL,IAAI,EACF,KAAK,KAAK;AACR,8CAAE;8CACA,MAAM,EAAE;kDACN,MAAM,CAAC,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK;AACvC,kDAAE,IAAI,CAAC,IAAI,CAAC,KAAK;AAEvB,wCAAA,QAAQ,EAAE,EAAE;AACZ,wCAAA,UAAU,EAAE,GAAG;AAEf,wCAAA,IAAI,EAAE,UAAU,IAAI,CAAC,UAAU,GAAG,SAAS,GAAG,SAAS;AAEvD,wCAAA,SAAS,EAAE,OAAO;AAClB,wCAAA,iBAAiB,EAAE,QAAQ;AAC5B,qCAAA;AACF,iCAAA;6BACF,CAAC;AACP,qBAAA;AACF,iBAAA,CAAC;AAEF,gBAAA,OAAO,IAAI,IAAI,CAAC,SAAS,GAAG,OAAO;AACrC,YAAA,CAAC,CAAC;AAEF,YAAA,OAAO,IAAI,UAAU,GAAG,OAAO;AACjC,QAAA,CAAC,CAAC;;;;QAMF,MAAM,cAAc,GAAQ,EAAE;AAE9B,QAAA,QAAQ,MAAM,EAAE,cAAc;AAC5B,YAAA,KAAK,KAAK;gBACR,cAAc,CAAC,GAAG,GAAG,MAAM,EAAE,aAAa,EAAE,GAAG,IAAI,EAAE;gBACrD;AAEF,YAAA,KAAK,QAAQ;gBACX,cAAc,CAAC,MAAM,GAAG,MAAM,EAAE,aAAa,EAAE,MAAM,IAAI,EAAE;gBAC3D;AAEF,YAAA,KAAK,MAAM;gBACT,cAAc,CAAC,IAAI,GAAG,MAAM,EAAE,aAAa,EAAE,IAAI,IAAI,EAAE;gBACvD;AAEF,YAAA,KAAK,OAAO;gBACV,cAAc,CAAC,KAAK,GAAG,MAAM,EAAE,aAAa,EAAE,KAAK,IAAI,EAAE;gBACzD;;;;;AAOJ,QAAA,IAAI,MAAM,EAAE,cAAc,KAAK,KAAK,IAAI,MAAM,EAAE,cAAc,KAAK,QAAQ,EAAE;;AAE3E,YAAA,IAAI,MAAM,EAAE,WAAW,KAAK,QAAQ,EAAE;AACpC,gBAAA,cAAc,CAAC,IAAI,GAAG,QAAQ;YAChC;AAAO,iBAAA,IAAI,MAAM,EAAE,WAAW,KAAK,OAAO,EAAE;gBAC1C,cAAc,CAAC,KAAK,GAAG,MAAM,EAAE,aAAa,EAAE,KAAK,IAAI,EAAE;YAC3D;iBAAO;gBACL,cAAc,CAAC,IAAI,GAAG,MAAM,EAAE,aAAa,EAAE,IAAI,IAAI,EAAE;YACzD;QACF;aAAO;;AAEL,YAAA,IAAI,MAAM,EAAE,WAAW,KAAK,QAAQ,EAAE;AACpC,gBAAA,cAAc,CAAC,GAAG,GAAG,QAAQ;YAC/B;AAAO,iBAAA,IAAI,MAAM,EAAE,WAAW,KAAK,OAAO,EAAE;gBAC1C,cAAc,CAAC,MAAM,GAAG,MAAM,EAAE,aAAa,EAAE,MAAM,IAAI,EAAE;YAC7D;iBAAO;gBACL,cAAc,CAAC,GAAG,GAAG,MAAM,EAAE,aAAa,EAAE,GAAG,IAAI,EAAE;YACvD;QACF;;;;QAMA,OAAO;AACL,YAAA;AACE,gBAAA,EAAE,EAAE,cAAc;AAElB,gBAAA,IAAI,EAAE,OAAO;AAEb,gBAAA,GAAG,cAAc;AAEjB,gBAAA,KAAK,EAAE,QAAQ;AACf,gBAAA,MAAM,EAAE,OAAO;gBAEf,QAAQ;AACT,aAAA;SACF;IACH;IACA,kBAAkB,CAAC,MAAW,EAAE,KAAa,EAAA;AAC3C,QAAA,IAAI,CAAC,MAAM,EAAE,WAAW,EAAE,IAAI;AAAE,YAAA,OAAO,EAAE;AAEzC,QAAA,MAAM,YAAY,GAAG,MAAM,CAAC,WAAW;AACvC,QAAA,MAAM,SAAS,GAAG,YAAY,CAAC,aAAa,IAAI,EAAE;AAClD,QAAA,MAAM,SAAS,GAAG,YAAY,CAAC,aAAa,IAAI,EAAE;;;AAIlD,QAAA,MAAM,QAAQ,GAAG,YAAY,CAAC,GAAG,IAAI,QAAQ;AAC7C,QAAA,MAAM,SAAS,GAAG,YAAY,CAAC,IAAI,IAAI,QAAQ;;AAG/C,QAAA,MAAM,WAAW,GAAG,CAAC,SAAS,GAAG,CAAC;AAClC,QAAA,MAAM,WAAW,GAAG,SAAS,GAAG,CAAC;QAEjC,OAAO;AACL,YAAA;AACE,gBAAA,EAAE,EAAE,aAAa;AACjB,gBAAA,IAAI,EAAE,OAAO;AACb,gBAAA,IAAI,EAAE,SAAS;AACf,gBAAA,GAAG,EAAE,QAAQ;AACb,gBAAA,MAAM,EAAE,IAAI;AACZ,gBAAA,QAAQ,EAAE;oBACR,IAAI,YAAY,CAAC;AACf,0BAAE;AACE,4BAAA;AACE,gCAAA,IAAI,EAAE,MAAM;AACZ,gCAAA,KAAK,EAAE;AACL,oCAAA,IAAI,EAAE,YAAY,CAAC,KAAK,IAAI,EAAE;AAC9B,oCAAA,QAAQ,EAAE,SAAS;AACnB,oCAAA,IAAI,EAAE,YAAY,CAAC,UAAU,IAAI,MAAM;AACvC,oCAAA,SAAS,EAAE,QAAQ;AACnB,oCAAA,YAAY,EAAE,QAAQ;AACvB,iCAAA;gCACD,GAAG,EAAE,WAAW;AACjB,6BAAA;AACF;0BACD,EAAE,CAAC;AACP,oBAAA;AACE,wBAAA,IAAI,EAAE,MAAM;AACZ,wBAAA,KAAK,EAAE;4BACL,IAAI,EACF,YAAY,CAAC,IAAI,KAAK,QAAQ,IAAI,YAAY,CAAC;kCAC3C,YAAY,CAAC,SAAS,CAAC,KAAK,EAAE,MAAM,CAAC,IAAI;AAC3C,mCAAG,YAAY,CAAC,KAAK,IAAI,EAAE,CAAC;AAChC,4BAAA,QAAQ,EAAE,SAAS;AACnB,4BAAA,UAAU,EAAE,MAAM;AAClB,4BAAA,IAAI,EAAE,YAAY,CAAC,UAAU,IAAI,MAAM;AACvC,4BAAA,SAAS,EAAE,QAAQ;AACnB,4BAAA,YAAY,EAAE,QAAQ;AACvB,yBAAA;wBACD,GAAG,EAAE,WAAW,IAAI,YAAY,EAAE,aAAa,IAAI,CAAC,CAAC;AACtD,qBAAA;AACF,iBAAA;AACF,aAAA;SACF;IACH;IAEA,SAAS,CAAC,GAAW,EAAE,KAAa,EAAA;AAClC,QAAA,MAAM,CAAC,GAAG,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC;AACvC,QAAA,MAAM,CAAC,GAAG,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC;AACvC,QAAA,MAAM,CAAC,GAAG,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC;QAEvC,OAAO,CAAA,KAAA,EAAQ,CAAC,CAAA,EAAA,EAAK,CAAC,KAAK,CAAC,CAAA,EAAA,EAAK,KAAK,CAAA,CAAA,CAAG;IAC3C;AAEA,IAAA,gBAAgB,CAAC,KAAyC,EAAA;QACxD,IAAI,KAAK,KAAK,IAAI,IAAI,KAAK,KAAK,SAAS,IAAI,KAAK,KAAK,EAAE;AAAE,YAAA,OAAO,IAAI;;QAGtE,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC;AAAE,YAAA,OAAO,KAAK;;AAGlE,QAAA,MAAM,GAAG,GAAG,MAAM,CAAC,KAAK,CAAC;QACzB,IAAI,KAAK,CAAC,GAAG,CAAC;AAAE,YAAA,OAAO,IAAI;QAE3B,OAAO,CAAA,EAAG,GAAG,CAAA,CAAA,CAAG;IAClB;AAEA,IAAA,eAAe,CAAC,KAAyC,EAAA;QACvD,IAAI,KAAK,KAAK,IAAI,IAAI,KAAK,KAAK,SAAS,IAAI,KAAK,KAAK,EAAE;AAAE,YAAA,OAAO,IAAI;;QAGtE,MAAM,OAAO,GAAG,OAAO,KAAK,KAAK,QAAQ,GAAG,KAAK,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC,IAAI,EAAE,GAAG,KAAK;AACjF,QAAA,MAAM,GAAG,GAAG,MAAM,CAAC,OAAO,CAAC;AAE3B,QAAA,OAAO,KAAK,CAAC,GAAG,CAAC,GAAG,IAAI,GAAG,GAAG;IAChC;AAEA,IAAA,cAAc,CAAC,KAAyC,EAAA;QACtD,MAAM,GAAG,GAAG,IAAI,CAAC,eAAe,CAAC,KAAK,CAAC;QACvC,IAAI,GAAG,KAAK,IAAI;YAAE,OAAO,SAAS,CAAC;QACnC,IAAI,GAAG,GAAG,EAAE;YAAE,OAAO,SAAS,CAAC;QAC/B,IAAI,GAAG,IAAI,EAAE;YAAE,OAAO,SAAS,CAAC;QAChC,OAAO,SAAS,CAAC;IACnB;IAEA,mBAAmB,CAAC,MAAW,EAAE,MAA4C,EAAA;AAC3E,QAAA,MAAM,KAAK,GAAG,MAAM,CAAC,KAAK;AAC1B,QAAA,MAAM,IAAI,GAAG,MAAM,CAAC,IAAI;AACxB,QAAA,MAAM,KAAK,GAAG,MAAM,CAAC,KAAK;AAC1B,QAAA,MAAM,OAAO,GAAG,MAAM,CAAC,OAAO;QAE9B,IAAI,gBAAgB,GAAU,EAAE;AAChC,QAAA,IAAI,OAAO,MAAM,EAAE,IAAI,KAAK,QAAQ,EAAE;AACpC,YAAA,gBAAgB,GAAG,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,GAAG,MAAM,EAAE,eAAe,IAAI,SAAS,CAAC,IAAI,EAAE,CAAC;QAC9F;QAEA,IAAI,wBAAwB,GAAG,EAAE;AACjC,QAAA,IAAI,gBAAgB,CAAC,MAAM,EAAE;AAC3B,YAAA,gBAAgB,CAAC,OAAO,CAAC,CAAC,IAAI,KAAI;AAChC,gBAAA,wBAAwB,IAAI,CAAA;;;;;AAK1B,QAAA,EAAA,IAAI,CAAC,CAAC,CAAC,4CAA4C,IAAI,CAAC,CAAC,CAAC,CAAA;aACvD;AACP,YAAA,CAAC,CAAC;QACJ;QAEA,OAAO,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;wBA0Ba,KAAK,CAAA;;;;;;;;;AASjB,UAAA,EAAA,IAAI,6CAA6C,MAAM,CAAC,cAAc,GAAG,MAAM,CAAC,cAAc,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,CAAA,KAAA,EAAQ,MAAM,CAAC,kBAAkB,GAAG,GAAG,GAAG,OAAO,GAAG,IAAI,GAAG,EAAE;;;SAGjM,wBAAwB;;KAE5B;IACH;AACA,IAAA,uBAAuB,CACrB,MAAW,EACX,SAA0B,EAC1B,MAAyC,EAAA;AAEzC,QAAA,IAAI,CAAC,MAAM,IAAI,CAAC,MAAM,CAAC,MAAM;AAAE,YAAA,OAAO,EAAE;AAExC,QAAA,MAAM,IAAI,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC,cAAc,IAAI,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI;QAEvD,IAAI,KAAK,GAAG,CAAC;QACb,IAAI,IAAI,GAAG,EAAE;QAEb,IAAI,gBAAgB,GAAU,EAAE;QAChC,IAAI,OAAO,MAAM,GAAG,CAAC,CAAC,EAAE,IAAI,KAAK,QAAQ,EAAE;YACzC,gBAAgB,GAAG,MAAM,CAAC,OAAO,CAC/B,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI,GAAG,MAAM,EAAE,eAAe,IAAI,SAAS,CAAC,IAAI,EAAE,CAC7D;QACH;QAEA,IAAI,wBAAwB,GAAG,EAAE;AACjC,QAAA,IAAI,gBAAgB,CAAC,MAAM,EAAE;AAC3B,YAAA,gBAAgB,CAAC,OAAO,CAAC,CAAC,IAAI,KAAI;AAChC,gBAAA,wBAAwB,IAAI,CAAA;;;;;AAK1B,QAAA,EAAA,IAAI,CAAC,CAAC,CAAC,4CAA4C,IAAI,CAAC,CAAC,CAAC,CAAA;aACvD;AACP,YAAA,CAAC,CAAC;QACJ;AAEA,QAAA,MAAM,EAAE,OAAO,CAAC,CAAC,IAAS,KAAI;AAC5B,YAAA,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK;AACxB,YAAA,MAAM,IAAI,GAAG,IAAI,CAAC,UAAU;AAC5B,YAAA,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,IAAI,CAAC;AAE7B,YAAA,KAAK,IAAI,MAAM,CAAC,KAAK,CAAC;AAEtB,YAAA,IAAI,IAAI;;;;;;;;;;oBAUM,SAAS,KAAK,MAAM,GAAG,KAAK,GAAG,MAAM,CAAA;uBAClC,KAAK,CAAA;;;;;AAKZ,cAAA,EAAA,IAAI,4CAA4C,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,CAAA;;KAEpF;AACD,QAAA,CAAC,CAAC;QAEF,OAAO;;;;;;;;;;;;;;;UAeD,IAAI;;;QAGN,IAAI;;;;;;;AAO4C,sDAAA,EAAA,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,CAAA;UACvE,wBAAwB;;;;GAI/B;IACD;IAEA,uBAAuB,CAAC,MAAW,EAAE,MAA0B,EAAA;AAC7D,QAAA,MAAM,KAAK,GAAG,MAAM,CAAC,KAAK,IAAI,EAAE;AAChC,QAAA,MAAM,UAAU,GAAG,MAAM,CAAC,SAAS,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC,CAAC,CAAC,IAAI,GAAG;AAClE,QAAA,MAAM,UAAU,GAAG,MAAM,CAAC,SAAS,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC,CAAC,CAAC,IAAI,GAAG;QAClE,MAAM,SAAS,GAAG,KAAK,CAAC,CAAC,CAAC,IAAI,GAAG;AACjC,QAAA,MAAM,KAAK,GAAG,MAAM,CAAC,KAAK,IAAI,SAAS;QAEvC,OAAO;;;;;;;;;;;;;;;;;;;;;;yBAsBc,KAAK,CAAA;;;;AAIZ,gBAAA,EAAA,MAAM,CAAC,UAAU,IAAI,MAAM,CAAC,KAAK,IAAI,SAAS,CAAA;;;;YAIpD,UAAU,CAAA,GAAA,EAAM,UAAU,CAAA,yCAAA,EAA4C,SAAS,CAAA;;;KAGtF;IACH;AAEA,IAAA,6BAA6B,CAAC,MAAW,EAAA;AACvC,QAAA,MAAM,CAAC,GAAG,MAAM,CAAC,IAAI;QAErB,OAAO,CAAA;;;;;;;;;;;;;;;;;;;;;;YAsBC,CAAC,CAAC,KAAK,IAAI,OAAO,MAAM,CAAC,CAAC,GAAG,IAAI,OAAO;;;;YAIxC,CAAC,CAAC,IAAI,IAAI,IAAI;;;;;0BAKA,CAAC,CAAC,QAAQ,IAAI,GAAG,CAAA;;;;;AAKZ,6BAAA,EAAA,IAAI,CAAC,cAAc,CAAC,CAAC,CAAC,YAAY,CAAC,CAAA;AACpD,YAAA,EAAA,IAAI,CAAC,gBAAgB,CAAC,CAAC,CAAC,YAAY,CAAC;;;;AAIpB,6BAAA,EAAA,IAAI,CAAC,cAAc,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAA;AAChD,YAAA,EAAA,IAAI,CAAC,gBAAgB,CAAC,CAAC,CAAC,QAAQ,CAAC;;;;;gCAKf,CAAC,CAAC,cAAc,IAAI,GAAG,CAAA;;;;2BAI5B,CAAC,CAAC,SAAS,IAAI,GAAG,CAAA;;;;4DAIe,CAAC,CAAC,QAAQ,IAAI,GAAG,CAAA;;;;;;;;;;;cAW/D,CAAC,CAAC,QAAQ,IAAI,CAAC;;;;;;;cAOf,CAAC,CAAC,WAAW,IAAI,CAAC;;;;aAInB;IACX;AACA,IAAA,eAAe,CAAC,KAAA,GAAsB,EAAE,EAAE,QAAsB,EAAE,EAAA;AAChE,QAAA,MAAM,KAAK,GAAG,IAAI,GAAG,EAAE;AACvB,QAAA,MAAM,QAAQ,GAAG,IAAI,GAAG,EAAE;AAE1B,QAAA,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,KAAI;YAClB,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC;YACrB,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC;AACzB,QAAA,CAAC,CAAC;AAEF,QAAA,KAAK,CAAC,OAAO,CAAC,CAAC,IAAI,KAAI;AACrB,YAAA,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC;AACxC,YAAA,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,EAAE,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;AAC1D,QAAA,CAAC,CAAC;QAEF,MAAM,KAAK,GAAU,EAAE;AACvB,QAAA,MAAM,QAAQ,GAAG,IAAI,GAAG,EAAE;QAE1B,QAAQ,CAAC,OAAO,CAAC,CAAC,GAAG,EAAE,IAAI,KAAI;AAC7B,YAAA,IAAI,GAAG,KAAK,CAAC,EAAE;AACb,gBAAA,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC;AAChB,gBAAA,QAAQ,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC,CAAC;YACvB;AACF,QAAA,CAAC,CAAC;AAEF,QAAA,OAAO,KAAK,CAAC,MAAM,EAAE;AACnB,YAAA,MAAM,OAAO,GAAG,KAAK,CAAC,KAAK,EAAE;YAC7B,MAAM,YAAY,GAAG,QAAQ,CAAC,GAAG,CAAC,OAAO,CAAC;YAE1C,KAAK,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,OAAO,CAAC,CAAC,QAAa,KAAI;AAC3C,gBAAA,MAAM,QAAQ,GAAG,YAAY,GAAG,CAAC;AAEjC,gBAAA,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,QAAQ,CAAC,IAAI,QAAQ,CAAC,GAAG,CAAC,QAAQ,CAAC,GAAG,QAAQ,EAAE;AAChE,oBAAA,QAAQ,CAAC,GAAG,CAAC,QAAQ,EAAE,QAAQ,CAAC;AAChC,oBAAA,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC;gBACtB;AACF,YAAA,CAAC,CAAC;QACJ;QAEA,OAAO,IAAI,CAAC,GAAG,CAAC,GAAG,QAAQ,CAAC,MAAM,EAAE,CAAC;IACvC;AAEA,IAAA,sBAAsB,CAAC,MAAW,EAAA;AAChC,QAAA,IAAI,MAAM,CAAC,QAAQ,KAAK,MAAM,EAAE;AAC9B,YAAA,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,UAAU,EAAE,UAAU,EAAE,GAAG,MAAM,CAAC,IAAI;YAC9D,OAAO;;;;;;;;;;;4DAW+C,MAAM,CAAA;;gBAGlD;AACE,kBAAE,CAAA;kBACF,UAAU;AACP,oBAAA;AACH,kBAAE,EACN;;;;;4DAK8C,MAAM,CAAA;;gBAGlD;AACE,kBAAE,CAAA;kBACF,UAAU;AACP,oBAAA;AACH,kBAAE,EACN;;;SAGL;QACL;QACA,OAAO;;;;;;;AAOC,UAAA,EAAA,MAAM,CAAC,IAAI,CAAA,KAAA,EAAQ,MAAM,CAAC,KAAK,CAAA;;OAEpC;IACL;AACA,IAAA,uBAAuB,CAAC,MAAW,EAAE,KAAyB,EAAE,KAAyB,EAAA;QACvF,OAAO;;;;;;;AAOS,kBAAA,EAAA,MAAM,CAAC,UAAU,CAAA;AACpB,eAAA,EAAA,KAAK,GAAG,KAAK,GAAG,GAAG,GAAG,EAAE,IAAI,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAA;AAC3C,eAAA,EAAA,KAAK,GAAG,KAAK,GAAG,GAAG,GAAG,EAAE,IAAI,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAA;;OAErD;IACL;AACA,IAAA,uBAAuB,CAAC,MAAwC,EAAA;QAC9D,IAAI,SAAS,GAAG,CAAC;AAEjB,QAAA,MAAM,KAAK,GAAG,MAAM,EAAE,MAAM,GAAG,CAAC,CAAC,GAAG,OAAO,CAAC;AAE5C,QAAA,IACE,CAAC,MAAM,EAAE,SAAS,KAAK,IAAI,IAAI,KAAK,EAAE,IAAI,KAAK,IAAI;AACnD,aAAC,MAAM,EAAE,aAAa,KAAK,KAAK,IAAI,KAAK,EAAE,QAAQ,KAAK,KAAK,CAAC,EAC9D;AACA,YAAA,OAAO,CAAC;QACV;AAEA,QAAA,MAAM,IAAI,GAAG;AACX,YAAA,KAAK,CAAC,SAAS;AACf,YAAA,KAAK,CAAC,UAAU;AAChB,YAAA,CAAA,EAAG,KAAK,CAAC,QAAQ,IAAI,EAAE,CAAA,EAAA,CAAI;YAC3B,KAAK,CAAC,UAAU,IAAI,YAAY;AACjC;aACE,MAAM,CAAC,OAAO;aACd,IAAI,CAAC,GAAG,CAAC;AAEZ,QAAA,MAAM,IAAI,GAAG,OAAO,KAAK,CAAC,SAAS,KAAK,QAAQ,GAAG,KAAK,CAAC,SAAS,GAAG,GAAG;AAExE,QAAA,MAAM,IAAI,GAAG,OAAO,CAAC,MAAM,CAAC,WAAW,CAAC,IAAI,EAAE,IAAI,CAAC;AAEnD,QAAA,MAAM,OAAO,GAAG,KAAK,CAAC,OAAO,IAAI,CAAC;AAElC,QAAA,MAAM,eAAe,GAAG,KAAK,CAAC,OAAO,CAAC,OAAO;AAC3C,cAAE,OAAO,CAAC,MAAM,KAAK;AACnB,kBAAE,OAAO,CAAC,CAAC,CAAC,GAAG;AACf,kBAAE,OAAO,CAAC,MAAM,KAAK;AACnB,sBAAE,OAAO,CAAC,CAAC,CAAC,GAAG;sBACb,OAAO,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC;AAC5B,cAAE,OAAO,GAAG,CAAC;AAEf,QAAA,SAAS,GAAG,IAAI,CAAC,GAAG,CAAC,SAAS,EAAE,IAAI,CAAC,MAAM,GAAG,eAAe,CAAC;QAE9D,OAAO,SAAS,GAAG,CAAC;IACtB;AAEA,IAAA,aAAa,CAAC,KAAa,EAAE,UAAA,GAAqB,CAAC,EAAA;QACjD,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE;AAC3B,YAAA,OAAO,KAAK;QACd;QAEA,OAAO,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;IAC1C;wGAvlCW,MAAM,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA;AAAN,IAAA,OAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAM,cAFL,MAAM,EAAA,CAAA;;4FAEP,MAAM,EAAA,UAAA,EAAA,CAAA;kBAHlB,UAAU;AAAC,YAAA,IAAA,EAAA,CAAA;AACV,oBAAA,UAAU,EAAE,MAAM;AACnB,iBAAA;;;ACoBD,OAAO,CAAC,GAAG,CAAC;IACV,SAAS;IACT,aAAa;IACb,gBAAgB;IAChB,eAAe;IACf,cAAc;IACd,cAAc;IACd,gBAAgB;IAChB,uBAAuB;IACvB,iBAAiB;IACjB,iBAAiB;IACjB,iBAAiB;AAClB,CAAA,CAAC;MAWW,UAAU,CAAA;AAqCX,IAAA,YAAA;AACA,IAAA,GAAA;IArCD,MAAM,GAAoB,EAAE,SAAS,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE;AACvD,IAAA,KAAK;IACL,MAAM,GAAa,EAAE;IACrB,kBAAkB,GAAU,EAAE;IAC9B,eAAe,GAAY,KAAK;AAE/B,IAAA,gBAAgB,GAAG,IAAI,YAAY,EAAO;AAC1C,IAAA,UAAU,GAAG,IAAI,YAAY,EAGnC;AACM,IAAA,WAAW,GAAG,IAAI,YAAY,EAAoB;IAC5D,WAAW,GAAsB,EAAE;AACnC,IAAA,aAAa;IACb,YAAY,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE;IAC7B,QAAQ,GAAG,KAAK;AAEhB,IAAA,IAAI,aAAa,GAAA;AACf,QAAA,OAAO,IAAI,CAAC,YAAY,CAAC,aAAa;IACxC;AAEA,IAAA,IAAI,kBAAkB,GAAA;AACpB,QAAA,OAAO,IAAI,CAAC,YAAY,IAAI,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,YAAY,EAAE,QAAQ;IAClE;AAEA,IAAA,IAAI,mBAAmB,GAAA;QACrB,OAAO,IAAI,CAAC,YAAY,IAAI,IAAI,CAAC,MAAM,CAAC,YAAY,EAAE,QAAQ,IAAI,IAAI,IAAI,IAAI;IAChF;AAEA,IAAA,IAAY,YAAY,GAAA;QACtB,QACE,IAAI,CAAC,MAAM,CAAC,YAAY,EAAE,QAAQ,KAAK,MAAM;YAC7C,IAAI,CAAC,MAAM,CAAC,YAAY,EAAE,QAAQ,KAAK,OAAO;IAElD;IACA,WAAA,CACU,YAAoB,EACpB,GAAsB,EAAA;QADtB,IAAA,CAAA,YAAY,GAAZ,YAAY;QACZ,IAAA,CAAA,GAAG,GAAH,GAAG;IACV;;AAGH,IAAA,WAAW,CAAC,OAAsB,EAAA;QAChC,IAAI,CAAC,IAAI,CAAC,MAAM;YAAE;QAElB,IAAI,OAAO,CAAC,OAAO,CAAC,IAAI,IAAI,CAAC,aAAa,EAAE;AAC1C,YAAA,IAAI,CAAC,aAAa,CAAC,OAAO,EAAE;;QAE9B;QAEA,IAAI,CAAC,WAAW,EAAE;IACpB;AACQ,IAAA,cAAc,GAAQ;AAC5B,QAAA,SAAS,EAAE,EAAE;AACb,QAAA,SAAS,EAAE,EAAE;AACb,QAAA,kBAAkB,EAAE,EAAE;KACvB;IACD,SAAS,GAAA;QACP,IAAI,CAAC,IAAI,CAAC,aAAa,IAAI,CAAC,IAAI,CAAC,MAAM;YAAE;QAEzC,MAAM,YAAY,GAAQ,EAAE;AAE5B,QAAA,IAAI,IAAI,CAAC,cAAc,CAAC,SAAS,KAAK,IAAI,CAAC,MAAM,CAAC,SAAS,EAAE;YAC3D,IAAI,CAAC,cAAc,CAAC,SAAS,GAAG,IAAI,CAAC,MAAM,CAAC,SAAS;YAErD,YAAY,CAAC,KAAK,GAAG;AACnB,gBAAA,IAAI,EAAE,IAAI,CAAC,MAAM,EAAE,SAAS,IAAI,EAAE;aACnC;QACH;AAEA,QAAA,IAAI,IAAI,CAAC,cAAc,CAAC,SAAS,KAAK,IAAI,CAAC,MAAM,CAAC,SAAS,EAAE;YAC3D,IAAI,CAAC,cAAc,CAAC,SAAS,GAAG,IAAI,CAAC,MAAM,CAAC,SAAS;YAErD,YAAY,CAAC,KAAK,GAAG;AACnB,gBAAA;AACE,oBAAA,IAAI,EAAE,IAAI,CAAC,MAAM,EAAE,SAAS,IAAI,EAAE;AACnC,iBAAA;aACF;QACH;AAEA,QAAA,IAAI,IAAI,CAAC,cAAc,CAAC,kBAAkB,KAAK,IAAI,CAAC,MAAM,CAAC,kBAAkB,EAAE;YAC7E,IAAI,CAAC,cAAc,CAAC,kBAAkB,GAAG,IAAI,CAAC,MAAM,CAAC,kBAAkB;YAEvE,YAAY,CAAC,KAAK,GAAG;AACnB,gBAAA;AACE,oBAAA,IAAI,EAAE,IAAI,CAAC,MAAM,EAAE,SAAS,IAAI,EAAE;AACnC,iBAAA;AACD,gBAAA;AACE,oBAAA,IAAI,EAAE,IAAI,CAAC,MAAM,EAAE,kBAAkB,IAAI,EAAE;AAC5C,iBAAA;aACF;QACH;QAEA,IAAI,MAAM,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,MAAM,EAAE;AACpC,YAAA,IAAI,CAAC,aAAa,CAAC,SAAS,CAAC,YAAY,CAAC;QAC5C;IACF;;IAGQ,WAAW,GAAA;AACjB,QAAA,MAAM,QAAQ,GAAG,IAAI,CAAC,kBAAkB,EAAE;AAC1C,QAAA,MAAM,YAAY,GAAG,IAAI,CAAC,MAAM,EAAE,YAAY,EAAE,aAAa,KAAK,WAAW,GAAG,QAAQ,GAAG,IAAI;QAE/F,IAAI,CAAC,WAAW,GAAG;AACjB,YAAA,eAAe,EAAE,aAAa;YAC9B,KAAK,EAAE,IAAI,CAAC,MAAM,EAAE,MAAM,IAAI,IAAI,CAAC,YAAY,CAAC,aAAa;AAC7D,YAAA,KAAK,EAAE;AACL,gBAAA,IAAI,EAAE,IAAI,CAAC,MAAM,EAAE,SAAS,IAAI,CAAC,CAAC,IAAI,CAAC,MAAM,EAAE,KAAK;AACpD,gBAAA,IAAI,EAAE,IAAI,CAAC,MAAM,EAAE,KAAK;AACxB,gBAAA,IAAI,EAAE,IAAI,CAAC,MAAM,EAAE,aAAa,IAAI,QAAQ;AAC7C,aAAA;AAED,YAAA,OAAO,EAAE;AACP,gBAAA,IAAI,EAAE,IAAI,CAAC,MAAM,EAAE,WAAW;AAC9B,gBAAA,OAAO,EAAE,MAAM;gBACf,eAAe,EAAE,aAAa;AAC9B,gBAAA,WAAW,EAAE,CAAC;AACd,gBAAA,OAAO,EAAE,CAAC;AACV,gBAAA,OAAO,EAAE,IAAI;gBACb,SAAS,EAAE,CAAC,MAAW,KACrB,IAAI,CAAC,MAAM,EAAE;sBACT,IAAI,CAAC,MAAM,EAAE,gBAAgB,CAAC,MAAM;sBACpC,IAAI,CAAC,YAAY,CAAC,uBAAuB,CAAC,MAAM,EAAE,MAAM,CAAC;AAChE,aAAA;AACD,YAAA,MAAM,EAAE;AACN,gBAAA,IAAI,EAAE,KAAK;gBACX,IAAI,EAAE,CAAC,IAAI,CAAC,MAAM,EAAE,MAAM,IAAI,EAAE,EAAE,GAAG,CAAC,CAAC,MAAM,KAAK,MAAM,CAAC,IAAI,CAAC;gBAC9D,QAAQ;gBACR,YAAY;AACb,aAAA;AAED,YAAA,IAAI,EAAE,IAAI,CAAC,MAAM,EAAE;AACjB,kBAAE,EAAE,IAAI,EAAE,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC;AACxC,kBAAE;AACE,oBAAA,IAAI,EAAE,IAAI,CAAC,MAAM,EAAE,QAAQ,IAAI,CAAC;AAChC,oBAAA,KAAK,EAAE,IAAI,CAAC,MAAM,EAAE,SAAS,IAAI,CAAC;AAClC,oBAAA,MAAM,EAAE,IAAI,CAAC,MAAM,EAAE,UAAU,IAAI,CAAC;AACpC,oBAAA,GAAG,EACD,IAAI,CAAC,MAAM,EAAE,OAAO,IAAI,IAAI,CAAC,YAAY,CAAC,uBAAuB,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC;AACtF,iBAAA;AAEL,YAAA,KAAK,EAAE;AACL,gBAAA,IAAI,EAAE,CAAC,IAAI,CAAC,MAAM,EAAE,YAAY;AAChC,gBAAA,IAAI,EAAE,UAAU;;AAEhB,gBAAA,IAAI,EAAE,IAAI,CAAC,MAAM,EAAE,SAAS;AAC5B,gBAAA,IAAI,EAAE,IAAI,CAAC,MAAM,EAAE,SAAS,IAAI,EAAE;AAClC,gBAAA,YAAY,EAAE,QAAQ;gBAEtB,IAAI,IAAI,CAAC,MAAM,EAAE,KAAK,IAAI,EAAE,CAAC;AAE7B,gBAAA,QAAQ,EAAE;AACR,oBAAA,IAAI,EAAE,IAAI,CAAC,MAAM,EAAE,aAAa,IAAI,IAAI;oBACxC,IAAI,IAAI,CAAC,MAAM,EAAE,KAAK,EAAE,QAAQ,IAAI,EAAE,CAAC;AACvC,oBAAA,SAAS,EAAE;AACT,wBAAA,KAAK,EAAE,SAAS;AAChB,wBAAA,KAAK,EAAE,CAAC;AACR,wBAAA,IAAI,IAAI,CAAC,MAAM,EAAE,KAAK,EAAE,QAAQ,EAAE,SAAS,IAAI,EAAE,CAAC;AACnD,qBAAA;AACF,iBAAA;AACD,gBAAA,QAAQ,EAAE;AACR,oBAAA,IAAI,EAAE,KAAK;oBACX,IAAI,IAAI,CAAC,MAAM,EAAE,KAAK,EAAE,QAAQ,IAAI,EAAE,CAAC;AACxC,iBAAA;AACD,gBAAA,SAAS,EAAE;AACT,oBAAA,IAAI,EAAE,IAAI,CAAC,MAAM,EAAE,cAAc,IAAI,IAAI;AACzC,oBAAA,KAAK,EAAE,SAAS;AAChB,oBAAA,QAAQ,EAAE,EAAE;AACZ,oBAAA,aAAa,EAAE,MAAM;AACrB,oBAAA,aAAa,EAAE,OAAO;oBACtB,IAAI,IAAI,CAAC,MAAM,EAAE,KAAK,EAAE,SAAS,IAAI,EAAE,CAAC;AACzC,iBAAA;AACD,gBAAA,aAAa,EAAE;AACb,oBAAA,KAAK,EAAE,SAAS;AAChB,oBAAA,QAAQ,EAAE,EAAE;AACZ,oBAAA,UAAU,EAAE,GAAG;oBACf,IAAI,IAAI,CAAC,MAAM,EAAE,KAAK,EAAE,aAAa,IAAI,EAAE,CAAC;AAC7C,iBAAA;AACD,gBAAA,SAAS,EAAE;AACT,oBAAA,IAAI,EAAE,IAAI,CAAC,MAAM,EAAE,kBAAkB,IAAI,IAAI;oBAC7C,IAAI,IAAI,CAAC,MAAM,EAAE,KAAK,EAAE,SAAS,IAAI,EAAE,CAAC;AACxC,oBAAA,SAAS,EAAE;AACT,wBAAA,IAAI,EAAE,QAAQ;AACd,wBAAA,KAAK,EAAE,SAAS;AAChB,wBAAA,KAAK,EAAE,CAAC;AACR,wBAAA,IAAI,IAAI,CAAC,MAAM,EAAE,KAAK,EAAE,SAAS,EAAE,SAAS,IAAI,EAAE,CAAC;AACpD,qBAAA;AACF,iBAAA;AACF,aAAA;AAED,YAAA,KAAK,EAAE;AACL,gBAAA;AACE,oBAAA,IAAI,EAAE,CAAC,IAAI,CAAC,MAAM,EAAE,YAAY;AAChC,oBAAA,IAAI,EAAE,OAAO;AACb,oBAAA,WAAW,EAAE,IAAI,CAAC,MAAM,EAAE,YAAY,GAAG,CAAC,GAAG,CAAC,GAAG,SAAS;AAC1D,oBAAA,IAAI,EAAE,IAAI,CAAC,MAAM,EAAE,SAAS,IAAI,EAAE;AAClC,oBAAA,YAAY,EAAE,QAAQ;oBAEtB,IAAI,IAAI,CAAC,MAAM,EAAE,KAAK,IAAI,EAAE,CAAC;AAC7B,oBAAA,QAAQ,EAAE;AACR,wBAAA,IAAI,EAAE,IAAI,CAAC,MAAM,EAAE,aAAa,IAAI,IAAI;wBACxC,IAAI,IAAI,CAAC,MAAM,EAAE,KAAK,EAAE,QAAQ,IAAI,EAAE,CAAC;AACvC,wBAAA,SAAS,EAAE;AACT,4BAAA,KAAK,EAAE,SAAS;AAChB,4BAAA,KAAK,EAAE,CAAC;AACR,4BAAA,IAAI,IAAI,CAAC,MAAM,EAAE,KAAK,EAAE,QAAQ,EAAE,SAAS,IAAI,EAAE,CAAC;AACnD,yBAAA;AACF,qBAAA;AACD,oBAAA,QAAQ,EAAE;AACR,wBAAA,IAAI,EAAE,KAAK;wBACX,IAAI,IAAI,CAAC,MAAM,EAAE,KAAK,EAAE,QAAQ,IAAI,EAAE,CAAC;AACxC,qBAAA;AACD,oBAAA,aAAa,EAAE;AACb,wBAAA,KAAK,EAAE,SAAS;AAChB,wBAAA,QAAQ,EAAE,EAAE;AACZ,wBAAA,UAAU,EAAE,GAAG;wBACf,IAAI,IAAI,CAAC,MAAM,EAAE,KAAK,EAAE,aAAa,IAAI,EAAE,CAAC;AAC7C,qBAAA;AACD,oBAAA,SAAS,EAAE;AACT,wBAAA,IAAI,EAAE,IAAI,CAAC,MAAM,EAAE,kBAAkB,IAAI,IAAI;wBAC7C,IAAI,IAAI,CAAC,MAAM,EAAE,KAAK,EAAE,SAAS,IAAI,EAAE,CAAC;AACxC,wBAAA,SAAS,EAAE;AACT,4BAAA,IAAI,EAAE,QAAQ;AACd,4BAAA,KAAK,EAAE,SAAS;AAChB,4BAAA,KAAK,EAAE,CAAC;AACR,4BAAA,IAAI,IAAI,CAAC,MAAM,EAAE,KAAK,EAAE,SAAS,EAAE,SAAS,IAAI,EAAE,CAAC;AACpD,yBAAA;AACF,qBAAA;AACD,oBAAA,SAAS,EAAE;AACT,wBAAA,IAAI,EAAE,IAAI,CAAC,MAAM,EAAE,cAAc,IAAI,IAAI;AACzC,wBAAA,KAAK,EAAE,SAAS;AAChB,wBAAA,QAAQ,EAAE,EAAE;AACZ,wBAAA,SAAS,EAAE,CAAC,KAAa,KAAI;AAC3B,4BAAA,IAAI,KAAK,KAAK,CAAC,EAAE;AACf,gCAAA,OAAO,GAAG;4BACZ;4BAEA,MAAM,QAAQ,GAAG,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC;;AAGhC,4BAAA,IAAI,QAAQ,IAAI,qBAAqB,EAAE;AACrC,gCAAA,OAAO,CAAA,EAAG,CAAC,CAAC,KAAK,GAAG,qBAAqB,EAAE,OAAO,CAAC,CAAC,CAAC,GAAG;4BAC1D;;AAGA,4BAAA,IAAI,QAAQ,IAAI,iBAAiB,EAAE;AACjC,gCAAA,OAAO,CAAA,EAAG,CAAC,CAAC,KAAK,GAAG,iBAAiB,EAAE,OAAO,CAAC,CAAC,CAAC,GAAG;4BACtD;;AAGA,4BAAA,IAAI,QAAQ,IAAI,aAAa,EAAE;AAC7B,gCAAA,OAAO,CAAA,EAAG,CAAC,CAAC,KAAK,GAAG,aAAa,EAAE,OAAO,CAAC,CAAC,CAAC,GAAG;4BAClD;;AAGA,4BAAA,IAAI,QAAQ,IAAI,SAAS,EAAE;AACzB,gCAAA,OAAO,CAAA,EAAG,CAAC,CAAC,KAAK,GAAG,SAAS,EAAE,OAAO,CAAC,CAAC,CAAC,GAAG;4BAC9C;;AAGA,4BAAA,IAAI,QAAQ,IAAI,KAAK,EAAE;AACrB,gCAAA,OAAO,CAAA,EAAG,CAAC,CAAC,KAAK,GAAG,KAAK,EAAE,OAAO,CAAC,CAAC,CAAC,GAAG;4BAC1C;;AAGA,4BAAA,IAAI,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,EAAE;AAC3B,gCAAA,OAAO,KAAK,CAAC,QAAQ,EAAE;4BACzB;AAEA,4BAAA,OAAO,KAAK;wBACd,CAAC;wBACD,IAAI,IAAI,CAAC,MAAM,EAAE,KAAK,EAAE,SAAS,IAAI,EAAE,CAAC;AACzC,qBAAA;AACF,iBAAA;AAED,gBAAA,IAAI,IAAI,CAAC,MAAM,EAAE;AACf,sBAAE;AACE,wBAAA;AACE,4BAAA,IAAI,EAAE,CAAC,IAAI,CAAC,MAAM,EAAE,YAAY;AAChC,4BAAA,IAAI,EAAE,OAAO;AACb,4BAAA,WAAW,EAAE,IAAI,CAAC,MAAM,EAAE,YAAY,GAAG,CAAC,GAAG,CAAC,GAAG,SAAS;AAC1D,4BAAA,IAAI,EAAE,IAAI,CAAC,MAAM,EAAE,kBAAkB,IAAI,EAAE;AAC3C,4BAAA,YAAY,EAAE,QAAQ;4BAEtB,IAAI,IAAI,CAAC,MAAM,EAAE,oBAAoB,IAAI,EAAE,CAAC;AAE5C,4BAAA,QAAQ,EAAE;AACR,gCAAA,IAAI,EAAE,IAAI,CAAC,MAAM,EAAE,aAAa,IAAI,IAAI;gCACxC,IAAI,IAAI,CAAC,MAAM,EAAE,oBAAoB,EAAE,QAAQ,IAAI,EAAE,CAAC;AACtD,gCAAA,SAAS,EAAE;AACT,oCAAA,KAAK,EAAE,SAAS;AAChB,oCAAA,KAAK,EAAE,CAAC;AACR,oCAAA,IAAI,IAAI,CAAC,MAAM,EAAE,oBAAoB,EAAE,QAAQ,EAAE,SAAS,IAAI,EAAE,CAAC;AAClE,iCAAA;AACF,6BAAA;AACD,4BAAA,QAAQ,EAAE;AACR,gCAAA,IAAI,EAAE,KAAK;gCACX,IAAI,IAAI,CAAC,MAAM,EAAE,oBAAoB,EAAE,QAAQ,IAAI,EAAE,CAAC;AACvD,6BAAA;AACD,4BAAA,SAAS,EAAE;AACT,gCAAA,IAAI,EAAE,IAAI,CAAC,MAAM,EAAE,uBAAuB,IAAI,IAAI;AAClD,gCAAA,KAAK,EAAE,SAAS;AAChB,gCAAA,QAAQ,EAAE,EAAE;AACZ,gCAAA,SAAS,EAAE,CAAC,KAAa,KAAI;AAC3B,oCAAA,IAAI,KAAK,KAAK,CAAC,EAAE;AACf,wCAAA,OAAO,GAAG;oCACZ;oCAEA,MAAM,QAAQ,GAAG,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC;;AAGhC,oCAAA,IAAI,QAAQ,IAAI,qBAAqB,EAAE;AACrC,wCAAA,OAAO,CAAA,EAAG,CAAC,CAAC,KAAK,GAAG,qBAAqB,EAAE,OAAO,CAAC,CAAC,CAAC,GAAG;oCAC1D;;AAGA,oCAAA,IAAI,QAAQ,IAAI,iBAAiB,EAAE;AACjC,wCAAA,OAAO,CAAA,EAAG,CAAC,CAAC,KAAK,GAAG,iBAAiB,EAAE,OAAO,CAAC,CAAC,CAAC,GAAG;oCACtD;;AAGA,oCAAA,IAAI,QAAQ,IAAI,aAAa,EAAE;AAC7B,wCAAA,OAAO,CAAA,EAAG,CAAC,CAAC,KAAK,GAAG,aAAa,EAAE,OAAO,CAAC,CAAC,CAAC,GAAG;oCAClD;;AAGA,oCAAA,IAAI,QAAQ,IAAI,SAAS,EAAE;AACzB,wCAAA,OAAO,CAAA,EAAG,CAAC,CAAC,KAAK,GAAG,SAAS,EAAE,OAAO,CAAC,CAAC,CAAC,GAAG;oCAC9C;;AAGA,oCAAA,IAAI,QAAQ,IAAI,KAAK,EAAE;AACrB,wCAAA,OAAO,CAAA,EAAG,CAAC,CAAC,KAAK,GAAG,KAAK,EAAE,OAAO,CAAC,CAAC,CAAC,GAAG;oCAC1C;;AAGA,oCAAA,IAAI,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,EAAE;AAC3B,wCAAA,OAAO,KAAK,CAAC,QAAQ,EAAE;oCACzB;AAEA,oCAAA,OAAO,KAAK;gCACd,CAAC;gCACD,IAAI,IAAI,CAAC,MAAM,EAAE,oBAAoB,EAAE,SAAS,IAAI,EAAE,CAAC;AACxD,6BAAA;AACD,4BAAA,aAAa,EAAE;AACb,gCAAA,KAAK,EAAE,SAAS;AAChB,gCAAA,QAAQ,EAAE,EAAE;AACZ,gCAAA,UAAU,EAAE,GAAG;gCACf,IAAI,IAAI,CAAC,MAAM,EAAE,oBAAoB,EAAE,aAAa,IAAI,EAAE,CAAC;AAC5D,6BAAA;AACD,4BAAA,SAAS,EAAE;AACT,gCAAA,IAAI,EAAE,IAAI,CAAC,MAAM,EAAE,2BAA2B,IAAI,IAAI;gCACtD,IAAI,IAAI,CAAC,MAAM,EAAE,oBAAoB,EAAE,SAAS,IAAI,EAAE,CAAC;AACvD,gCAAA,SAAS,EAAE;AACT,oCAAA,IAAI,EAAE,QAAQ;AACd,oCAAA,KAAK,EAAE,SAAS;AAChB,oCAAA,KAAK,EAAE,CAAC;AACR,oCAAA,IAAI,IAAI,CAAC,MAAM,EAAE,oBAAoB,EAAE,SAAS,EAAE,SAAS,IAAI,EAAE,CAAC;AACnE,iCAAA;AACF,6BAAA;AACF,yBAAA;AACF;sBACD,EAAE,CAAC;AACR,aAAA;AAED,YAAA,MAAM,EAAE,CAAC,IAAI,CAAC,MAAM,EAAE,MAAM,IAAI,EAAE,GAAG,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,KAAI;AAChD,gBAAA,MAAM,SAAS,GACb,CAAC,CAAC,OAAO,CAAC;AACV,oBAAA,CAAC,CAAC,WAAW,CAAC,EAAE,KAAK;AACrB,oBAAA,CAAC,CAAC,WAAW,CAAC,EAAE,KAAK;AACrB,oBAAA,CAAC,CAAC,SAAS;AACX,oBAAA,IAAI,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,IAAI,EAAE,EAAE,MAAM,CAAC;AAC3D,oBAAA,SAAS;gBAEX,OAAO;AACL,oBAAA,IAAI,EAAE,MAAM;AACZ,oBAAA,MAAM,EAAE,CAAC,CAAC,MAAM,IAAI,IAAI;oBACxB,SAAS,EAAE,CAAC,CAAC;AACX,0BAAE;AACE,4BAAA,KAAK,EAAE;AACL,gCAAA,IAAI,EAAE,QAAQ;AACd,gCAAA,CAAC,EAAE,CAAC;AACJ,gCAAA,CAAC,EAAE,CAAC;AACJ,gCAAA,EAAE,EAAE,CAAC;AACL,gCAAA,EAAE,EAAE,CAAC;AACL,gCAAA,UAAU,EAAE;AACV,oCAAA;AACE,wCAAA,MAAM,EAAE,CAAC;AACT,wCAAA,KAAK,EAAE,SAAS;AACjB,qCAAA;AACD,oCAAA;AACE,wCAAA,MAAM,EAAE,CAAC;wCACT,KAAK,EAAE,IAAI,CAAC,YAAY,CAAC,SAAS,CAAC,SAAS,EAAE,CAAC,CAAC;AACjD,qCAAA;AACF,iCAAA;AACF,6BAAA;AACD,4BAAA,OAAO,EAAE,CAAC,CAAC,WAAW,IAAI,GAAG;AAC9B;AACH,0BAAE,SAAS;AACb,oBAAA,GAAG,CAAC;oBACJ,MAAM,EAAE,IAAI,CAAC,mBAAmB,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC;AAC7C,oBAAA,KAAK,EAAE;AACL,wBAAA,IAAI,EAAE,IAAI,CAAC,MAAM,EAAE,SAAS,IAAI,KAAK;AACrC,wBAAA,QAAQ,EAAE,IAAI,CAAC,MAAM,EAAE,aAAa,IAAI,KAAK;AAC7C,wBAAA,IAAI,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC;AAClC,qBAAA;AACD,oBAAA,SAAS,EAAE;AACT,wBAAA,YAAY,EAAE,IAAI,CAAC,MAAM,EAAE,YAAY,IAAI,CAAC;AAC5C,wBAAA,IAAI,CAAC,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,WAAW,CAAC,GAAG,EAAE,CAAC;AAC1C,qBAAA;iBACF;AACH,YAAA,CAAC,CAAC;AACF,YAAA,OAAO,EAAE;gBACP,KAAK,EAAE,CAAC,IAAI;AACZ,gBAAA,OAAO,EAAE;AACP,oBAAA,QAAQ,EAAE,EAAE;AACb,iBAAA;AACF,aAAA;AACD,YAAA,QAAQ,EAAE;AACR,gBAAA;AACE,oBAAA,IAAI,EAAE,QAAQ;AACd,oBAAA,QAAQ,EAAE,IAAI;AACf,iBAAA;AACF,aAAA;SACF;IACH;AAEQ,IAAA,mBAAmB,CAAC,MAAe,EAAA;QACzC,QAAQ,MAAM;AACZ,YAAA,KAAK,MAAM;AACT,gBAAA,OAAO,kFAAkF;AAC3F,YAAA,KAAK,GAAG;AACN,gBAAA,OAAO,gFAAgF;AACzF,YAAA,KAAK,WAAW;AACd,gBAAA,OAAO,sCAAsC;AAC/C,YAAA;AACE,gBAAA,OAAO,MAAM;;IAEnB;AAEA,IAAA,cAAc,CAAC,MAAe,EAAA;QAC5B,IAAI,CAAC,IAAI,CAAC,aAAa;YAAE;AAEzB,QAAA,IAAI,CAAC,aAAa,CAAC,cAAc,CAAC;AAChC,YAAA,IAAI,EAAE,kBAAkB;AACxB,YAAA,GAAG,EAAE,gBAAgB;AACrB,YAAA,oBAAoB,EAAE,MAAM;AAC7B,SAAA,CAAC;IACJ;IAEA,SAAS,GAAA;QACP,IAAI,CAAC,IAAI,CAAC,aAAa;YAAE;AACzB,QAAA,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC;AAC1B,QAAA,IAAI,CAAC,aAAa,CAAC,cAAc,CAAC;AAChC,YAAA,IAAI,EAAE,UAAU;AAChB,YAAA,KAAK,EAAE,CAAC;AACR,YAAA,GAAG,EAAE,GAAG;AACT,SAAA,CAAC;IACJ;;AAGA,IAAA,WAAW,CAAC,EAAW,EAAA;AACrB,QAAA,IAAI,CAAC,aAAa,GAAG,EAAE;QACvB,IAAI,CAAC,WAAW,EAAE;QAClB,IAAI,CAAC,UAAU,EAAE;IACnB;;IAGQ,UAAU,GAAA;QAChB,IAAI,CAAC,IAAI,CAAC,aAAa;YAAE;AACzB,QAAA,IAAI,CAAC,aAAa,CAAC,GAAG,EAAE;;QAGxB,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,SAAS,KAAI;AAChC,YAAA,IAAI,SAAS,KAAK,aAAa,EAAE;gBAC/B,IAAI,CAAC,aAAa,CAAC,EAAE,CAAC,aAAa,EAAE,CAAC,MAAW,KAAI;AACnD,oBAAA,MAAM,KAAK,GAAG,MAAM,EAAE,KAAK,EAAE,KAAK;oBAClC,IAAI,KAAK,EAAE;wBACT,KAAK,CAAC,cAAc,EAAE;wBAEtB,MAAM,SAAS,GAAG,IAAI,CAAC,aAAa,CAAC,MAAM,EAAE;AAC7C,wBAAA,MAAM,IAAI,GAAG,SAAS,CAAC,qBAAqB,EAAE;wBAE9C,IAAI,CAAC,YAAY,GAAG;AAClB,4BAAA,CAAC,EAAE,KAAK,CAAC,OAAO,GAAG,IAAI,CAAC,IAAI;AAC5B,4BAAA,CAAC,EAAE,KAAK,CAAC,OAAO,GAAG,IAAI,CAAC,GAAG;yBAC5B;AAED,wBAAA,IAAI,CAAC,QAAQ,GAAG,IAAI;AAEpB,wBAAA,IAAI,CAAC,GAAG,CAAC,YAAY,EAAE;oBACzB;AACA,oBAAA,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC;AACnB,wBAAA,IAAI,EAAE,aAAa;AACnB,wBAAA,IAAI,EAAE,MAAM;AACb,qBAAA,CAAC;AACJ,gBAAA,CAAC,CAAC;gBACF,MAAM,EAAE,GAAG,IAAI,CAAC,aAAa,CAAC,KAAK,EAAE;gBACrC,EAAE,CAAC,EAAE,CAAC,aAAa,EAAE,CAAC,OAAY,KAAI;AACpC,oBAAA,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE;AACnB,wBAAA,MAAM,WAAW,GAAG,OAAO,CAAC,KAAK;wBAEjC,WAAW,CAAC,cAAc,EAAE;wBAE5B,MAAM,SAAS,GAAG,IAAI,CAAC,aAAa,CAAC,MAAM,EAAE;AAC7C,wBAAA,MAAM,IAAI,GAAG,SAAS,CAAC,qBAAqB,EAAE;wBAE9C,IAAI,CAAC,YAAY,GAAG;AAClB,4BAAA,CAAC,EAAE,WAAW,CAAC,OAAO,GAAG,IAAI,CAAC,IAAI;AAClC,4BAAA,CAAC,EAAE,WAAW,CAAC,OAAO,GAAG,IAAI,CAAC,GAAG;yBAClC;AAED,wBAAA,IAAI,CAAC,QAAQ,GAAG,IAAI;AACpB,wBAAA,IAAI,CAAC,GAAG,CAAC,YAAY,EAAE;AAEvB,wBAAA,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC;AACnB,4BAAA,IAAI,EAAE,aAAa;4BACnB,IAAI,EAAE,EAAE,GAAG,OAAO,EAAE,SAAS,EAAE,IAAI,EAAE;AACtC,yBAAA,CAAC;oBACJ;AACF,gBAAA,CAAC,CAAC;YACJ;AAAO,iBAAA,IAAI,SAAS,KAAK,OAAO,EAAE;gBAChC,IAAI,CAAC,aAAa,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,MAAW,KAAI;AAC7C,oBAAA,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC;AACnB,wBAAA,IAAI,EAAE,OAAO;AACb,wBAAA,IAAI,EAAE,MAAM;AACb,qBAAA,CAAC;AACJ,gBAAA,CAAC,CAAC;gBACF,MAAM,EAAE,GAAG,IAAI,CAAC,aAAa,CAAC,KAAK,EAAE;gBACrC,EAAE,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,OAAY,KAAI;AAC9B,oBAAA,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE;AACnB,wBAAA,MAAM,WAAW,GAAG,OAAO,CAAC,KAAK;wBACjC,WAAW,CAAC,cAAc,EAAE;AAC5B,wBAAA,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC;AACnB,4BAAA,IAAI,EAAE,MAAM;4BACZ,IAAI,EAAE,EAAE,GAAG,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE;AACnC,yBAAA,CAAC;oBACJ;AACF,gBAAA,CAAC,CAAC;YACJ;iBAAO;gBACL,IAAI,CAAC,aAAa,CAAC,EAAE,CAAC,SAAS,EAAE,CAAC,MAAW,KAAI;AAC/C,oBAAA,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC;AACnB,wBAAA,IAAI,EAAE,SAAS;AACf,wBAAA,IAAI,EAAE,MAAM;AACb,qBAAA,CAAC;AACJ,gBAAA,CAAC,CAAC;YACJ;AACF,QAAA,CAAC,CAAC;IACJ;AAEA,IAAA,WAAW,CAAC,IAAS,EAAA;AACnB,QAAA,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,IAAI,CAAC;QAChC,IAAI,CAAC,SAAS,EAAE;IAClB;IAGA,SAAS,GAAA;AACP,QAAA,IAAI,CAAC,QAAQ,GAAG,KAAK;IACvB;;IAIA,WAAW,GAAA;AACT,QAAA,IAAI,IAAI,CAAC,aAAa,EAAE;AACtB,YAAA,IAAI,CAAC,aAAa,CAAC,GAAG,EAAE;AACxB,YAAA,IAAI,CAAC,aAAa,CAAC,OAAO,EAAE;QAC9B;IACF;AAEA,IAAA,aAAa,CAAC,KAAuB,EAAA;AACnC,QAAA,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,KAAK,CAAC;AAC5B,QAAA,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC;AACnB,YAAA,IAAI,EAAE,CAAA,OAAA,EAAU,KAAK,CAAC,IAAI,CAAA,CAAE;AAC5B,YAAA,IAAI,EAAE,KAAK;AACZ,SAAA,CAAC;IACJ;IAEQ,kBAAkB,GAAA;QACxB,MAAM,MAAM,GAAG,IAAI,CAAC,aAAa,EAAE,SAAS,IAE/B;AAEb,QAAA,OAAO,EAAE,IAAI,MAAM,EAAE,MAAM,GAAG,CAAC,CAAC,EAAE,QAAQ,IAAI,EAAE,CAAC,EAAE;IACrD;wGAvkBW,UAAU,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAA,MAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,iBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAAV,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,UAAU,8WALV,CAAC,kBAAkB,CAAC,EAAE,OAAO,EAAE,CAAC,CAAC,EAAA,aAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,ECnD9C,q0DAsDA,EAAA,MAAA,EAAA,CAAA,u3BAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EDJY,mBAAmB,EAAA,QAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,OAAA,EAAA,UAAA,EAAA,OAAA,EAAA,YAAA,EAAA,SAAA,EAAA,aAAA,EAAA,aAAA,CAAA,EAAA,OAAA,EAAA,CAAA,WAAA,EAAA,cAAA,EAAA,YAAA,EAAA,eAAA,EAAA,gBAAA,EAAA,gBAAA,EAAA,cAAA,EAAA,gBAAA,EAAA,eAAA,EAAA,gBAAA,EAAA,kBAAA,EAAA,gBAAA,EAAA,eAAA,EAAA,oBAAA,EAAA,0BAAA,EAAA,qBAAA,EAAA,uBAAA,EAAA,4BAAA,EAAA,gCAAA,EAAA,mBAAA,EAAA,eAAA,EAAA,wBAAA,EAAA,gBAAA,EAAA,cAAA,EAAA,eAAA,EAAA,sBAAA,EAAA,0BAAA,EAAA,cAAA,EAAA,sBAAA,EAAA,uBAAA,EAAA,uBAAA,EAAA,kBAAA,EAAA,oBAAA,EAAA,uBAAA,EAAA,YAAA,EAAA,eAAA,EAAA,oBAAA,EAAA,wBAAA,EAAA,eAAA,EAAA,eAAA,CAAA,EAAA,QAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAE,cAAc,yIAAE,oBAAoB,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,QAAA,EAAA,cAAA,CAAA,EAAA,OAAA,EAAA,CAAA,aAAA,CAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA;;4FAMxD,UAAU,EAAA,UAAA,EAAA,CAAA;kBATtB,SAAS;+BACE,gBAAgB,EAAA,UAAA,EACd,IAAI,EAAA,OAAA,EACP,CAAC,mBAAmB,EAAE,cAAc,EAAE,oBAAoB,CAAC,EAAA,SAAA,EACzD,CAAC,kBAAkB,CAAC,EAAE,OAAO,EAAE,CAAC,CAAC,EAAA,eAAA,EAG3B,uBAAuB,CAAC,MAAM,EAAA,QAAA,EAAA,q0DAAA,EAAA,MAAA,EAAA,CAAA,u3BAAA,CAAA,EAAA;;sBAG9C;;sBACA;;sBACA;;sBACA;;sBACA;;sBAEA;;sBACA;;sBAIA;;sBA+hBA,YAAY;uBAAC,gBAAgB;;;AEzjBhC,OAAO,CAAC,GAAG,CAAC;IACVC,UAAS;IACT,cAAc;IACd,gBAAgB;IAChB,aAAa;IACb,eAAe;IACf,gBAAgB;IAChB,cAAc;IACd,iBAAiB;IACjB,gBAAgB;IAChB,uBAAuB;IACvB,iBAAiB;IACjB,iBAAiB;IACjB,iBAAiB;AAClB,CAAA,CAAC;MAUW,QAAQ,CAAA;AAoBT,IAAA,YAAA;AACA,IAAA,GAAA;IApBD,MAAM,GAAmB,EAAE,SAAS,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE;AACtD,IAAA,KAAK;IACL,MAAM,GAAa,EAAE;IACrB,kBAAkB,GAAU,EAAE;IAC9B,eAAe,GAAY,KAAK;AAE/B,IAAA,gBAAgB,GAAG,IAAI,YAAY,EAAO;AAE1C,IAAA,UAAU,GAAG,IAAI,YAAY,EAGnC;AACM,IAAA,WAAW,GAAG,IAAI,YAAY,EAAoB;AAC5D,IAAA,WAAW;AACX,IAAA,aAAa;IACb,YAAY,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE;IAC7B,QAAQ,GAAG,KAAK;IAEhB,WAAA,CACU,YAAoB,EACpB,GAAsB,EAAA;QADtB,IAAA,CAAA,YAAY,GAAZ,YAAY;QACZ,IAAA,CAAA,GAAG,GAAH,GAAG;IACV;AACH,IAAA,IAAI,aAAa,GAAA;AACf,QAAA,OAAO,IAAI,CAAC,YAAY,CAAC,aAAa;IACxC;;AAGA,IAAA,WAAW,CAAC,OAAsB,EAAA;QAChC,IAAI,CAAC,IAAI,CAAC,MAAM;YAAE;QAElB,IAAI,OAAO,CAAC,OAAO,CAAC,IAAI,IAAI,CAAC,aAAa,EAAE;AAC1C,YAAA,IAAI,CAAC,aAAa,CAAC,OAAO,EAAE;QAC9B;QAEA,IAAI,CAAC,WAAW,EAAE;IACpB;AAEQ,IAAA,cAAc,GAAQ;AAC5B,QAAA,SAAS,EAAE,EAAE;AACb,QAAA,SAAS,EAAE,EAAE;AACb,QAAA,kBAAkB,EAAE,EAAE;KACvB;IACD,SAAS,GAAA;QACP,IAAI,CAAC,IAAI,CAAC,aAAa,IAAI,CAAC,IAAI,CAAC,MAAM;YAAE;QAEzC,MAAM,YAAY,GAAQ,EAAE;AAE5B,QAAA,IAAI,IAAI,CAAC,cAAc,CAAC,SAAS,KAAK,IAAI,CAAC,MAAM,CAAC,SAAS,EAAE;YAC3D,IAAI,CAAC,cAAc,CAAC,SAAS,GAAG,IAAI,CAAC,MAAM,CAAC,SAAS;YAErD,YAAY,CAAC,KAAK,GAAG;AACnB,gBAAA,IAAI,EAAE,IAAI,CAAC,MAAM,EAAE,SAAS,IAAI,EAAE;aACnC;QACH;AAEA,QAAA,IAAI,IAAI,CAAC,cAAc,CAAC,SAAS,KAAK,IAAI,CAAC,MAAM,CAAC,SAAS,EAAE;YAC3D,IAAI,CAAC,cAAc,CAAC,SAAS,GAAG,IAAI,CAAC,MAAM,CAAC,SAAS;YAErD,YAAY,CAAC,KAAK,GAAG;AACnB,gBAAA;AACE,oBAAA,IAAI,EAAE,IAAI,CAAC,MAAM,EAAE,SAAS,IAAI,EAAE;AACnC,iBAAA;aACF;QACH;AAEA,QAAA,IAAI,IAAI,CAAC,cAAc,CAAC,kBAAkB,KAAK,IAAI,CAAC,MAAM,CAAC,kBAAkB,EAAE;YAC7E,IAAI,CAAC,cAAc,CAAC,kBAAkB,GAAG,IAAI,CAAC,MAAM,CAAC,kBAAkB;YAEvE,YAAY,CAAC,KAAK,GAAG;AACnB,gBAAA;AACE,oBAAA,IAAI,EAAE,IAAI,CAAC,MAAM,EAAE,SAAS,IAAI,EAAE;AACnC,iBAAA;AACD,gBAAA;AACE,oBAAA,IAAI,EAAE,IAAI,CAAC,MAAM,EAAE,kBAAkB,IAAI,EAAE;AAC5C,iBAAA;aACF;QACH;QAEA,IAAI,MAAM,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,MAAM,EAAE;AACpC,YAAA,IAAI,CAAC,aAAa,CAAC,SAAS,CAAC,YAAY,CAAC;QAC5C;IACF;IAEA,QAAQ,GAAA;AACN,QAAA,IAAI,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC;IACpB;IAEA,SAAS,GAAA;AACP,QAAA,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC;IACnB;AAEA,IAAA,QAAQ,CAAC,IAAY,EAAA;QACnB,MAAM,MAAM,GAAQ,IAAI,CAAC,aAAa,CAAC,SAAS,EAAE;QAClD,MAAM,IAAI,GAAG,MAAM,CAAC,QAAQ,GAAG,CAAC,CAAC;AACjC,QAAA,IAAI,CAAC,IAAI;YAAE;AACX,QAAA,IAAI,KAAK,GAAG,IAAI,CAAC,KAAK,IAAI,CAAC;AAC3B,QAAA,IAAI,GAAG,GAAG,IAAI,CAAC,GAAG,IAAI,GAAG;AAEzB,QAAA,MAAM,UAAU,GAAG,GAAG,GAAG,KAAK;QAC9B,IAAI,CAAC,IAAI,GAAG,CAAC,IAAI,KAAK,IAAI,CAAC,MAAM,IAAI,GAAG,CAAC,IAAI,GAAG,IAAI,GAAG,CAAC,EAAE;YACxD;QACF;AAEA,QAAA,IAAI,QAAQ,GAAG,KAAK,GAAG,IAAI;AAC3B,QAAA,IAAI,MAAM,GAAG,GAAG,GAAG,IAAI;AAEvB,QAAA,IAAI,QAAQ,GAAG,CAAC,EAAE;YAChB,QAAQ,GAAG,CAAC;YACZ,MAAM,GAAG,UAAU;QACrB;AAEA,QAAA,IAAI,MAAM,GAAG,GAAG,EAAE;YAChB,MAAM,GAAG,GAAG;AACZ,YAAA,QAAQ,GAAG,GAAG,GAAG,UAAU;QAC7B;AAEA,QAAA,IAAI,CAAC,aAAa,CAAC,cAAc,CAAC;AAChC,YAAA,IAAI,EAAE,UAAU;AAChB,YAAA,KAAK,EAAE,QAAQ;AACf,YAAA,GAAG,EAAE,MAAM;AACZ,SAAA,CAAC;IACJ;;IAIQ,WAAW,GAAA;AACjB,QAAA,MAAM,QAAQ,GAAG,IAAI,CAAC,kBAAkB,EAAE;AAC1C,QAAA,MAAM,YAAY,GAAG,IAAI,CAAC,MAAM,EAAE,YAAY,EAAE,aAAa,KAAK,WAAW,GAAG,QAAQ,GAAG,IAAI;;QAG/F,IAAI,CAAC,WAAW,GAAG;AACjB,YAAA,eAAe,EAAE,aAAa;YAC9B,KAAK,EAAE,IAAI,CAAC,MAAM,EAAE,MAAM,IAAI,IAAI,CAAC,YAAY,CAAC,aAAa;AAC7D,YAAA,KAAK,EAAE;AACL,gBAAA,IAAI,EAAE,IAAI,CAAC,MAAM,EAAE,SAAS,IAAI,CAAC,CAAC,IAAI,CAAC,MAAM,EAAE,KAAK;AACpD,gBAAA,IAAI,EAAE,IAAI,CAAC,MAAM,EAAE,KAAK;AACxB,gBAAA,IAAI,EAAE,IAAI,CAAC,MAAM,EAAE,aAAa,IAAI,QAAQ;AAC7C,aAAA;AAED,YAAA,OAAO,EAAE;AACP,gBAAA,IAAI,EAAE,IAAI,CAAC,MAAM,EAAE,WAAW;AAC9B,gBAAA,OAAO,EAAE,MAAM;gBACf,eAAe,EAAE,aAAa;AAC9B,gBAAA,WAAW,EAAE,CAAC;AACd,gBAAA,OAAO,EAAE,CAAC;AACV,gBAAA,OAAO,EAAE,IAAI;gBACb,SAAS,EAAE,CAAC,MAAW,KACrB,IAAI,CAAC,MAAM,CAAC;sBACR,IAAI,CAAC,MAAM,CAAC,gBAAgB,CAAC,MAAM;sBACnC,IAAI,CAAC,YAAY,CAAC,uBAAuB,CAAC,MAAM,CAAC;AACxD,aAAA;AACD,YAAA,MAAM,EAAE;AACN,gBAAA,IAAI,EAAE,KAAK;gBACX,IAAI,EAAE,CAAC,IAAI,CAAC,MAAM,EAAE,MAAM,IAAI,EAAE,EAAE,GAAG,CAAC,CAAC,MAAM,KAAK,MAAM,CAAC,IAAI,CAAC;gBAC9D,QAAQ;gBACR,YAAY;AACb,aAAA;AACD,YAAA,IAAI,EAAE;AACJ,gBAAA,IAAI,EAAE,IAAI,CAAC,MAAM,CAAC,QAAQ,IAAI,CAAC;AAC/B,gBAAA,KAAK,EAAE,IAAI,CAAC,MAAM,CAAC,SAAS,IAAI,CAAC;AACjC,gBAAA,MAAM,EAAE,IAAI,CAAC,MAAM,CAAC,UAAU,IAAI,CAAC;AACnC,gBAAA,GAAG,EAAE,IAAI,CAAC,MAAM,CAAC,OAAO,IAAI,IAAI,CAAC,YAAY,CAAC,uBAAuB,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC;AACxF,aAAA;AAED,YAAA,KAAK,EAAE;AACL,gBAAA,IAAI,EAAE,UAAU;AAChB,gBAAA,IAAI,EAAE,IAAI,CAAC,MAAM,EAAE,SAAS;AAC5B,gBAAA,IAAI,EAAE,IAAI,CAAC,MAAM,EAAE,SAAS,IAAI,EAAE;AAClC,gBAAA,YAAY,EAAE,QAAQ;gBAEtB,IAAI,IAAI,CAAC,MAAM,EAAE,KAAK,IAAI,EAAE,CAAC;AAC7B,gBAAA,QAAQ,EAAE;AACR,oBAAA,IAAI,EAAE,IAAI,CAAC,MAAM,EAAE,aAAa,IAAI,IAAI;oBACxC,IAAI,IAAI,CAAC,MAAM,EAAE,KAAK,EAAE,QAAQ,IAAI,EAAE,CAAC;AACvC,oBAAA,SAAS,EAAE;AACT,wBAAA,KAAK,EAAE,SAAS;AAChB,wBAAA,KAAK,EAAE,CAAC;AACR,wBAAA,IAAI,IAAI,CAAC,MAAM,EAAE,KAAK,EAAE,QAAQ,EAAE,SAAS,IAAI,EAAE,CAAC;AACnD,qBAAA;AACF,iBAAA;AACD,gBAAA,QAAQ,EAAE;AACR,oBAAA,IAAI,EAAE,KAAK;oBACX,IAAI,IAAI,CAAC,MAAM,EAAE,KAAK,EAAE,QAAQ,IAAI,EAAE,CAAC;AACxC,iBAAA;AACD,gBAAA,SAAS,EAAE;AACT,oBAAA,IAAI,EAAE,IAAI,CAAC,MAAM,EAAE,cAAc,IAAI,IAAI;AACzC,oBAAA,KAAK,EAAE,SAAS;AAChB,oBAAA,QAAQ,EAAE,EAAE;AACZ,oBAAA,aAAa,EAAE,MAAM;AACrB,oBAAA,aAAa,EAAE,OAAO;oBACtB,IAAI,IAAI,CAAC,MAAM,EAAE,KAAK,EAAE,SAAS,IAAI,EAAE,CAAC;AACzC,iBAAA;AACD,gBAAA,aAAa,EAAE;AACb,oBAAA,KAAK,EAAE,SAAS;AAChB,oBAAA,QAAQ,EAAE,EAAE;AACZ,oBAAA,UAAU,EAAE,GAAG;oBACf,IAAI,IAAI,CAAC,MAAM,EAAE,KAAK,EAAE,aAAa,IAAI,EAAE,CAAC;AAC7C,iBAAA;AACD,gBAAA,SAAS,EAAE;AACT,oBAAA,IAAI,EAAE,IAAI,CAAC,MAAM,EAAE,kBAAkB,IAAI,IAAI;oBAC7C,IAAI,IAAI,CAAC,MAAM,EAAE,KAAK,EAAE,SAAS,IAAI,EAAE,CAAC;AACxC,oBAAA,SAAS,EAAE;AACT,wBAAA,IAAI,EAAE,QAAQ;AACd,wBAAA,KAAK,EAAE,SAAS;AAChB,wBAAA,KAAK,EAAE,CAAC;AACR,wBAAA,IAAI,IAAI,CAAC,MAAM,EAAE,KAAK,EAAE,SAAS,EAAE,SAAS,IAAI,EAAE,CAAC;AACpD,qBAAA;AACF,iBAAA;AACF,aAAA;AAED,YAAA,KAAK,EAAE;AACL,gBAAA;AACE,oBAAA,IAAI,EAAE,OAAO;AACb,oBAAA,IAAI,EAAE,IAAI,CAAC,MAAM,EAAE,SAAS,IAAI,EAAE;AAClC,oBAAA,YAAY,EAAE,QAAQ;oBAEtB,IAAI,IAAI,CAAC,MAAM,EAAE,KAAK,IAAI,EAAE,CAAC;AAC7B,oBAAA,QAAQ,EAAE;AACR,wBAAA,IAAI,EAAE,IAAI,CAAC,MAAM,EAAE,aAAa,IAAI,IAAI;wBACxC,IAAI,IAAI,CAAC,MAAM,EAAE,KAAK,EAAE,QAAQ,IAAI,EAAE,CAAC;AACvC,wBAAA,SAAS,EAAE;AACT,4BAAA,KAAK,EAAE,SAAS;AAChB,4BAAA,KAAK,EAAE,CAAC;4BACR,IAAI,IAAI,CAAC,MAAM,EAAE,KAAK,EAAE,SAAS,IAAI,EAAE,CAAC;AACzC,yBAAA;AACF,qBAAA;AACD,oBAAA,QAAQ,EAAE;AACR,wBAAA,IAAI,EAAE,KAAK;wBACX,IAAI,IAAI,CAAC,MAAM,EAAE,KAAK,EAAE,QAAQ,IAAI,EAAE,CAAC;AACxC,qBAAA;AACD,oBAAA,aAAa,EAAE;AACb,wBAAA,KAAK,EAAE,SAAS;AAChB,wBAAA,QAAQ,EAAE,EAAE;AACZ,wBAAA,UAAU,EAAE,GAAG;wBACf,IAAI,IAAI,CAAC,MAAM,EAAE,KAAK,EAAE,aAAa,IAAI,EAAE,CAAC;AAC7C,qBAAA;AACD,oBAAA,SAAS,EAAE;AACT,wBAAA,IAAI,EAAE,IAAI,CAAC,MAAM,EAAE,cAAc,IAAI,IAAI;AACzC,wBAAA,KAAK,EAAE,SAAS;AAChB,wBAAA,QAAQ,EAAE,EAAE;AACZ,wBAAA,SAAS,EAAE,CAAC,KAAa,KAAI;AAC3B,4BAAA,IAAI,KAAK,KAAK,CAAC,EAAE;AACf,gCAAA,OAAO,GAAG;4BACZ;4BAEA,MAAM,QAAQ,GAAG,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC;;AAGhC,4BAAA,IAAI,QAAQ,IAAI,qBAAqB,EAAE;AACrC,gCAAA,OAAO,CAAA,EAAG,CAAC,CAAC,KAAK,GAAG,qBAAqB,EAAE,OAAO,CAAC,CAAC,CAAC,GAAG;4BAC1D;;AAGA,4BAAA,IAAI,QAAQ,IAAI,iBAAiB,EAAE;AACjC,gCAAA,OAAO,CAAA,EAAG,CAAC,CAAC,KAAK,GAAG,iBAAiB,EAAE,OAAO,CAAC,CAAC,CAAC,GAAG;4BACtD;;AAGA,4BAAA,IAAI,QAAQ,IAAI,aAAa,EAAE;AAC7B,gCAAA,OAAO,CAAA,EAAG,CAAC,CAAC,KAAK,GAAG,aAAa,EAAE,OAAO,CAAC,CAAC,CAAC,GAAG;4BAClD;;AAGA,4BAAA,IAAI,QAAQ,IAAI,SAAS,EAAE;AACzB,gCAAA,OAAO,CAAA,EAAG,CAAC,CAAC,KAAK,GAAG,SAAS,EAAE,OAAO,CAAC,CAAC,CAAC,GAAG;4BAC9C;;AAGA,4BAAA,IAAI,QAAQ,IAAI,KAAK,EAAE;AACrB,gCAAA,OAAO,CAAA,EAAG,CAAC,CAAC,KAAK,GAAG,KAAK,EAAE,OAAO,CAAC,CAAC,CAAC,GAAG;4BAC1C;;AAGA,4BAAA,IAAI,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,EAAE;AAC3B,gCAAA,OAAO,KAAK,CAAC,QAAQ,EAAE;4BACzB;AAEA,4BAAA,OAAO,KAAK;wBACd,CAAC;wBACD,IAAI,IAAI,CAAC,MAAM,EAAE,KAAK,EAAE,SAAS,IAAI,EAAE,CAAC;AACzC,qBAAA;AACD,oBAAA,SAAS,EAAE;AACT,wBAAA,IAAI,EAAE,IAAI,CAAC,MAAM,EAAE,kBAAkB,IAAI,IAAI;wBAC7C,IAAI,IAAI,CAAC,MAAM,EAAE,KAAK,EAAE,SAAS,IAAI,EAAE,CAAC;AACxC,wBAAA,SAAS,EAAE;AACT,4BAAA,IAAI,EAAE,QAAQ;AACd,4BAAA,KAAK,EAAE,SAAS;AAChB,4BAAA,KAAK,EAAE,CAAC;AACR,4BAAA,IAAI,IAAI,CAAC,MAAM,EAAE,KAAK,EAAE,SAAS,EAAE,SAAS,IAAI,EAAE,CAAC;AACpD,yBAAA;AACF,qBAAA;AACF,iBAAA;AACD,gBAAA,IAAI,IAAI,CAAC,MAAM,EAAE;AACf,sBAAE;AACE,wBAAA;AACE,4BAAA,IAAI,EAAE,OAAO;AACb,4BAAA,IAAI,EAAE,IAAI,CAAC,MAAM,EAAE,kBAAkB,IAAI,EAAE;AAC3C,4BAAA,YAAY,EAAE,QAAQ;4BAEtB,IAAI,IAAI,CAAC,MAAM,EAAE,oBAAoB,IAAI,EAAE,CAAC;AAE5C,4BAAA,QAAQ,EAAE;AACR,gCAAA,IAAI,EAAE,IAAI,CAAC,MAAM,EAAE,aAAa,IAAI,IAAI;gCACxC,IAAI,IAAI,CAAC,MAAM,EAAE,oBAAoB,EAAE,QAAQ,IAAI,EAAE,CAAC;AACtD,gCAAA,SAAS,EAAE;AACT,oCAAA,KAAK,EAAE,SAAS;AAChB,oCAAA,KAAK,EAAE,CAAC;AACR,oCAAA,IAAI,IAAI,CAAC,MAAM,EAAE,oBAAoB,EAAE,QAAQ,EAAE,SAAS,IAAI,EAAE,CAAC;AAClE,iCAAA;AACF,6BAAA;AACD,4BAAA,QAAQ,EAAE;AACR,gCAAA,IAAI,EAAE,KAAK;gCACX,IAAI,IAAI,CAAC,MAAM,EAAE,oBAAoB,EAAE,QAAQ,IAAI,EAAE,CAAC;AACvD,6BAAA;AACD,4BAAA,SAAS,EAAE;AACT,gCAAA,IAAI,EAAE,IAAI,CAAC,MAAM,EAAE,uBAAuB,IAAI,IAAI;AAClD,gCAAA,KAAK,EAAE,SAAS;AAChB,gCAAA,QAAQ,EAAE,EAAE;AACZ,gCAAA,SAAS,EAAE,CAAC,KAAa,KAAI;AAC3B,oCAAA,IAAI,KAAK,KAAK,CAAC,EAAE;AACf,wCAAA,OAAO,GAAG;oCACZ;oCAEA,MAAM,QAAQ,GAAG,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC;;AAGhC,oCAAA,IAAI,QAAQ,IAAI,qBAAqB,EAAE;AACrC,wCAAA,OAAO,CAAA,EAAG,CAAC,CAAC,KAAK,GAAG,qBAAqB,EAAE,OAAO,CAAC,CAAC,CAAC,GAAG;oCAC1D;;AAGA,oCAAA,IAAI,QAAQ,IAAI,iBAAiB,EAAE;AACjC,wCAAA,OAAO,CAAA,EAAG,CAAC,CAAC,KAAK,GAAG,iBAAiB,EAAE,OAAO,CAAC,CAAC,CAAC,GAAG;oCACtD;;AAGA,oCAAA,IAAI,QAAQ,IAAI,aAAa,EAAE;AAC7B,wCAAA,OAAO,CAAA,EAAG,CAAC,CAAC,KAAK,GAAG,aAAa,EAAE,OAAO,CAAC,CAAC,CAAC,GAAG;oCAClD;;AAGA,oCAAA,IAAI,QAAQ,IAAI,SAAS,EAAE;AACzB,wCAAA,OAAO,CAAA,EAAG,CAAC,CAAC,KAAK,GAAG,SAAS,EAAE,OAAO,CAAC,CAAC,CAAC,GAAG;oCAC9C;;AAGA,oCAAA,IAAI,QAAQ,IAAI,KAAK,EAAE;AACrB,wCAAA,OAAO,CAAA,EAAG,CAAC,CAAC,KAAK,GAAG,KAAK,EAAE,OAAO,CAAC,CAAC,CAAC,GAAG;oCAC1C;;AAGA,oCAAA,IAAI,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,EAAE;AAC3B,wCAAA,OAAO,KAAK,CAAC,QAAQ,EAAE;oCACzB;AAEA,oCAAA,OAAO,KAAK;gCACd,CAAC;gCACD,IAAI,IAAI,CAAC,MAAM,EAAE,oBAAoB,EAAE,SAAS,IAAI,EAAE,CAAC;AACxD,6BAAA;AACD,4BAAA,aAAa,EAAE;AACb,gCAAA,KAAK,EAAE,SAAS;AAChB,gCAAA,QAAQ,EAAE,EAAE;AACZ,gCAAA,UAAU,EAAE,GAAG;gCACf,IAAI,IAAI,CAAC,MAAM,EAAE,oBAAoB,EAAE,aAAa,IAAI,EAAE,CAAC;AAC5D,6BAAA;AACD,4BAAA,SAAS,EAAE;AACT,gCAAA,IAAI,EAAE,IAAI,CAAC,MAAM,EAAE,2BAA2B,IAAI,IAAI;gCACtD,IAAI,IAAI,CAAC,MAAM,EAAE,oBAAoB,EAAE,SAAS,IAAI,EAAE,CAAC;AACvD,gCAAA,SAAS,EAAE;AACT,oCAAA,IAAI,EAAE,QAAQ;AACd,oCAAA,KAAK,EAAE,SAAS;AAChB,oCAAA,KAAK,EAAE,CAAC;AACR,oCAAA,IAAI,IAAI,CAAC,MAAM,EAAE,oBAAoB,EAAE,SAAS,EAAE,SAAS,IAAI,EAAE,CAAC;AACnE,iCAAA;AACF,6BAAA;AACF,yBAAA;AACF;sBACD,EAAE,CAAC;AACR,aAAA;AAED,YAAA,MAAM,EAAE,CAAC,IAAI,CAAC,MAAM,EAAE,MAAM,IAAI,EAAE,GAAG,GAAG,CAAC,CAAC,CAAC,KAAI;gBAC7C,OAAO;AACL,oBAAA,IAAI,EAAE,KAAK;AACX,oBAAA,KAAK,EAAE,IAAI,CAAC,MAAM,EAAE,OAAO,GAAG,OAAO,GAAG,SAAS;AACjD,oBAAA,QAAQ,EAAE;AACR,wBAAA,KAAK,EAAE,KAAK;AACb,qBAAA;AACD,oBAAA,IAAI,IAAI,CAAC,MAAM,EAAE,QAAQ,IAAI,EAAE,QAAQ,EAAE,IAAI,CAAC,MAAM,EAAE,QAAQ,EAAE,CAAC;AACjE,oBAAA,IAAI,IAAI,CAAC,MAAM,EAAE,WAAW,IAAI,EAAE,WAAW,EAAE,IAAI,CAAC,MAAM,EAAE,WAAW,EAAE,CAAC;AAC1E,oBAAA,GAAG,CAAC;AACJ,oBAAA,KAAK,EAAE;AACL,wBAAA,IAAI,EAAE,IAAI,CAAC,MAAM,EAAE,SAAS,IAAI,KAAK;AACrC,wBAAA,QAAQ,EAAE,IAAI,CAAC,MAAM,EAAE,aAAa,IAAI,KAAK;AAC7C,wBAAA,IAAI,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC;AAClC,qBAAA;AACD,oBAAA,SAAS,EAAE;AACT,wBAAA,YAAY,EAAE,IAAI,CAAC,MAAM,EAAE,YAAY,IAAI,CAAC;AAC5C,wBAAA,IAAI,CAAC,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,WAAW,CAAC,GAAG,EAAE,CAAC;AAC1C,qBAAA;iBACF;AACH,YAAA,CAAC,CAAC;AAEF,YAAA,IAAI,IAAI,CAAC,MAAM,EAAE;AACf,kBAAE;AACE,oBAAA,QAAQ,EAAE;AACR,wBAAA;AACE,4BAAA,IAAI,EAAE,QAAQ;AACd,4BAAA,IAAI,EAAE,IAAI;AACV,4BAAA,UAAU,EAAE,CAAC;AACb,4BAAA,MAAM,EAAE,CAAC;AACT,4BAAA,MAAM,EAAE,CAAC;AACT,4BAAA,IAAI,IAAI,CAAC,MAAM,CAAC,SAAS,IAAI,EAAE,KAAK,EAAE,IAAI,CAAC,MAAM,CAAC,SAAS,EAAE,CAAC;AAC9D,4BAAA,IAAI,IAAI,CAAC,MAAM,CAAC,OAAO,IAAI,EAAE,GAAG,EAAE,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;;AAExD,4BAAA,eAAe,EAAE,SAAS;AAC1B,4BAAA,WAAW,EAAE,SAAS;AACtB,4BAAA,WAAW,EAAE,aAAa;AAC1B,4BAAA,YAAY,EAAE,GAAG;AACjB,4BAAA,UAAU,EAAE,CAAC;AACb,4BAAA,WAAW,EAAE,KAAK;AAClB,4BAAA,WAAW,EAAE;AACX,gCAAA,KAAK,EAAE,SAAS;AACjB,6BAAA;AACD,4BAAA,SAAS,EAAE;AACT,gCAAA,KAAK,EAAE,aAAa;AACrB,6BAAA;AACD,4BAAA,cAAc,EAAE;AACd,gCAAA,SAAS,EAAE;AACT,oCAAA,KAAK,EAAE,aAAa;AACrB,iCAAA;AACD,gCAAA,SAAS,EAAE;AACT,oCAAA,KAAK,EAAE,aAAa;AACrB,iCAAA;AACF,6BAAA;AACD,4BAAA,sBAAsB,EAAE;AACtB,gCAAA,SAAS,EAAE;AACT,oCAAA,KAAK,EAAE,aAAa;AACrB,iCAAA;AACD,gCAAA,SAAS,EAAE;AACT,oCAAA,KAAK,EAAE,aAAa;AACrB,iCAAA;AACF,6BAAA;AAED,4BAAA,cAAc,EAAE,CAAC;AAClB,yBAAA;AACD,wBAAA;AACE,4BAAA,IAAI,EAAE,QAAQ;AACd,4BAAA,UAAU,EAAE,CAAC;AACd,yBAAA;AACF,qBAAA;AACF;AACH,kBAAE;AACE,oBAAA,OAAO,EAAE;wBACP,KAAK,EAAE,CAAC,IAAI;AACZ,wBAAA,OAAO,EAAE;AACP,4BAAA,QAAQ,EAAE,EAAE;AACb,yBAAA;AACF,qBAAA;AACD,oBAAA,QAAQ,EAAE;AACR,wBAAA;AACE,4BAAA,IAAI,EAAE,QAAQ;AACd,4BAAA,QAAQ,EAAE,IAAI;AACf,yBAAA;AACF,qBAAA;iBACF,CAAC;SACP;IACH;AAEA,IAAA,cAAc,CAAC,MAAe,EAAA;QAC5B,IAAI,CAAC,IAAI,CAAC,aAAa;YAAE;AAEzB,QAAA,IAAI,CAAC,aAAa,CAAC,cAAc,CAAC;AAChC,YAAA,IAAI,EAAE,kBAAkB;AACxB,YAAA,GAAG,EAAE,gBAAgB;AACrB,YAAA,oBAAoB,EAAE,MAAM;AAC7B,SAAA,CAAC;IACJ;IAEA,SAAS,GAAA;QACP,IAAI,CAAC,IAAI,CAAC,aAAa;YAAE;AACzB,QAAA,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC;AAC1B,QAAA,IAAI,CAAC,aAAa,CAAC,cAAc,CAAC;AAChC,YAAA,IAAI,EAAE,UAAU;AAChB,YAAA,KAAK,EAAE,CAAC;AACR,YAAA,GAAG,EAAE,GAAG;AACT,SAAA,CAAC;IACJ;AAEA,IAAA,IAAI,kBAAkB,GAAA;AACpB,QAAA,OAAO,IAAI,CAAC,YAAY,IAAI,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,YAAY,EAAE,QAAQ;IAClE;AAEA,IAAA,IAAI,mBAAmB,GAAA;QACrB,OAAO,IAAI,CAAC,YAAY,IAAI,IAAI,CAAC,MAAM,CAAC,YAAY,EAAE,QAAQ,IAAI,IAAI,IAAI,IAAI;IAChF;AAEA,IAAA,IAAY,YAAY,GAAA;QACtB,QACE,IAAI,CAAC,MAAM,CAAC,YAAY,EAAE,QAAQ,KAAK,MAAM;YAC7C,IAAI,CAAC,MAAM,CAAC,YAAY,EAAE,QAAQ,KAAK,OAAO;IAElD;AAEA,IAAA,aAAa,CAAC,KAAuB,EAAA;AACnC,QAAA,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,KAAK,CAAC;AAC5B,QAAA,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC;AACnB,YAAA,IAAI,EAAE,CAAA,OAAA,EAAU,KAAK,CAAC,IAAI,CAAA,CAAE;AAC5B,YAAA,IAAI,EAAE,KAAK;AACZ,SAAA,CAAC;IACJ;IAEQ,kBAAkB,GAAA;QACxB,MAAM,MAAM,GAAG,IAAI,CAAC,aAAa,EAAE,SAAS,IAE/B;AAEb,QAAA,OAAO,EAAE,IAAI,MAAM,EAAE,MAAM,GAAG,CAAC,CAAC,EAAE,QAAQ,IAAI,EAAE,CAAC,EAAE;IACrD;;AAIA,IAAA,WAAW,CAAC,EAAW,EAAA;AACrB,QAAA,IAAI,CAAC,aAAa,GAAG,EAAE;QACvB,IAAI,CAAC,WAAW,EAAE;QAClB,IAAI,CAAC,UAAU,EAAE;IACnB;;IAGQ,UAAU,GAAA;QAChB,IAAI,CAAC,IAAI,CAAC,aAAa;YAAE;AACzB,QAAA,IAAI,CAAC,aAAa,CAAC,GAAG,EAAE;;QAGxB,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,SAAS,KAAI;AAChC,YAAA,IAAI,SAAS,KAAK,aAAa,EAAE;gBAC/B,IAAI,CAAC,aAAa,CAAC,EAAE,CAAC,aAAa,EAAE,CAAC,MAAW,KAAI;AACnD,oBAAA,MAAM,KAAK,GAAG,MAAM,EAAE,KAAK,EAAE,KAAK;oBAClC,IAAI,KAAK,EAAE;wBACT,KAAK,CAAC,cAAc,EAAE;wBAEtB,MAAM,SAAS,GAAG,IAAI,CAAC,aAAa,CAAC,MAAM,EAAE;AAC7C,wBAAA,MAAM,IAAI,GAAG,SAAS,CAAC,qBAAqB,EAAE;wBAE9C,IAAI,CAAC,YAAY,GAAG;AAClB,4BAAA,CAAC,EAAE,KAAK,CAAC,OAAO,GAAG,IAAI,CAAC,IAAI;AAC5B,4BAAA,CAAC,EAAE,KAAK,CAAC,OAAO,GAAG,IAAI,CAAC,GAAG;yBAC5B;AAED,wBAAA,IAAI,CAAC,QAAQ,GAAG,IAAI;AAEpB,wBAAA,IAAI,CAAC,GAAG,CAAC,YAAY,EAAE;oBACzB;AACA,oBAAA,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC;AACnB,wBAAA,IAAI,EAAE,aAAa;AACnB,wBAAA,IAAI,EAAE,MAAM;AACb,qBAAA,CAAC;AACJ,gBAAA,CAAC,CAAC;gBACF,MAAM,EAAE,GAAG,IAAI,CAAC,aAAa,CAAC,KAAK,EAAE;gBACrC,EAAE,CAAC,EAAE,CAAC,aAAa,EAAE,CAAC,OAAY,KAAI;AACpC,oBAAA,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE;AACnB,wBAAA,MAAM,WAAW,GAAG,OAAO,CAAC,KAAK;wBAEjC,WAAW,CAAC,cAAc,EAAE;wBAE5B,MAAM,SAAS,GAAG,IAAI,CAAC,aAAa,CAAC,MAAM,EAAE;AAC7C,wBAAA,MAAM,IAAI,GAAG,SAAS,CAAC,qBAAqB,EAAE;wBAE9C,IAAI,CAAC,YAAY,GAAG;AAClB,4BAAA,CAAC,EAAE,WAAW,CAAC,OAAO,GAAG,IAAI,CAAC,IAAI;AAClC,4BAAA,CAAC,EAAE,WAAW,CAAC,OAAO,GAAG,IAAI,CAAC,GAAG;yBAClC;AAED,wBAAA,IAAI,CAAC,QAAQ,GAAG,IAAI;AACpB,wBAAA,IAAI,CAAC,GAAG,CAAC,YAAY,EAAE;AAEvB,wBAAA,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC;AACnB,4BAAA,IAAI,EAAE,aAAa;4BACnB,IAAI,EAAE,EAAE,GAAG,OAAO,EAAE,SAAS,EAAE,IAAI,EAAE;AACtC,yBAAA,CAAC;oBACJ;AACF,gBAAA,CAAC,CAAC;YACJ;AAAO,iBAAA,IAAI,SAAS,KAAK,OAAO,EAAE;gBAChC,IAAI,CAAC,aAAa,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,MAAW,KAAI;AAC7C,oBAAA,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC;AACnB,wBAAA,IAAI,EAAE,OAAO;AACb,wBAAA,IAAI,EAAE,MAAM;AACb,qBAAA,CAAC;AACJ,gBAAA,CAAC,CAAC;gBACF,MAAM,EAAE,GAAG,IAAI,CAAC,aAAa,CAAC,KAAK,EAAE;gBACrC,EAAE,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,OAAY,KAAI;AAC9B,oBAAA,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE;AACnB,wBAAA,MAAM,WAAW,GAAG,OAAO,CAAC,KAAK;wBACjC,WAAW,CAAC,cAAc,EAAE;AAC5B,wBAAA,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC;AACnB,4BAAA,IAAI,EAAE,MAAM;4BACZ,IAAI,EAAE,EAAE,GAAG,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE;AACnC,yBAAA,CAAC;oBACJ;AACF,gBAAA,CAAC,CAAC;YACJ;iBAAO;gBACL,IAAI,CAAC,aAAa,CAAC,EAAE,CAAC,SAAS,EAAE,CAAC,MAAW,KAAI;AAC/C,oBAAA,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC;AACnB,wBAAA,IAAI,EAAE,SAAS;AACf,wBAAA,IAAI,EAAE,MAAM;AACb,qBAAA,CAAC;AACJ,gBAAA,CAAC,CAAC;YACJ;AACF,QAAA,CAAC,CAAC;IACJ;;AAIA,IAAA,WAAW,CAAC,IAAS,EAAA;AACnB,QAAA,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,IAAI,CAAC;QAChC,IAAI,CAAC,SAAS,EAAE;IAClB;IAGA,SAAS,GAAA;AACP,QAAA,IAAI,CAAC,QAAQ,GAAG,KAAK;IACvB;;IAIA,WAAW,GAAA;AACT,QAAA,IAAI,IAAI,CAAC,aAAa,EAAE;AACtB,YAAA,IAAI,CAAC,aAAa,CAAC,GAAG,EAAE;AACxB,YAAA,IAAI,CAAC,aAAa,CAAC,OAAO,EAAE;QAC9B;IACF;wGAtnBW,QAAQ,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAD,MAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,iBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAAR,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,QAAQ,6WALR,CAAC,kBAAkB,CAAC,EAAE,OAAO,EAAE,CAAC,CAAC,EAAA,aAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EC7D9C,gnEA4DA,EAAA,MAAA,EAAA,CAAA,qzBAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EDAY,mBAAmB,EAAA,QAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,OAAA,EAAA,UAAA,EAAA,OAAA,EAAA,YAAA,EAAA,SAAA,EAAA,aAAA,EAAA,aAAA,CAAA,EAAA,OAAA,EAAA,CAAA,WAAA,EAAA,cAAA,EAAA,YAAA,EAAA,eAAA,EAAA,gBAAA,EAAA,gBAAA,EAAA,cAAA,EAAA,gBAAA,EAAA,eAAA,EAAA,gBAAA,EAAA,kBAAA,EAAA,gBAAA,EAAA,eAAA,EAAA,oBAAA,EAAA,0BAAA,EAAA,qBAAA,EAAA,uBAAA,EAAA,4BAAA,EAAA,gCAAA,EAAA,mBAAA,EAAA,eAAA,EAAA,wBAAA,EAAA,gBAAA,EAAA,cAAA,EAAA,eAAA,EAAA,sBAAA,EAAA,0BAAA,EAAA,cAAA,EAAA,sBAAA,EAAA,uBAAA,EAAA,uBAAA,EAAA,kBAAA,EAAA,oBAAA,EAAA,uBAAA,EAAA,YAAA,EAAA,eAAA,EAAA,oBAAA,EAAA,wBAAA,EAAA,eAAA,EAAA,eAAA,CAAA,EAAA,QAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAE,cAAc,yIAAE,oBAAoB,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,QAAA,EAAA,cAAA,CAAA,EAAA,OAAA,EAAA,CAAA,aAAA,CAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA;;4FAMxD,QAAQ,EAAA,UAAA,EAAA,CAAA;kBARpB,SAAS;+BACE,eAAe,EAAA,OAAA,EAChB,CAAC,mBAAmB,EAAE,cAAc,EAAE,oBAAoB,CAAC,EAAA,SAAA,EACzD,CAAC,kBAAkB,CAAC,EAAE,OAAO,EAAE,CAAC,CAAC,EAAA,eAAA,EAG3B,uBAAuB,CAAC,MAAM,EAAA,QAAA,EAAA,gnEAAA,EAAA,MAAA,EAAA,CAAA,qzBAAA,CAAA,EAAA;;sBAG9C;;sBACA;;sBACA;;sBACA;;sBACA;;sBAEA;;sBAEA;;sBAIA;;sBA6lBA,YAAY;uBAAC,gBAAgB;;;AEvpBhC,OAAO,CAAC,GAAG,CAAC,CAACE,UAAS,EAAE,cAAc,EAAE,gBAAgB,EAAE,eAAe,EAAE,cAAc,CAAC,CAAC;MAS9E,QAAQ,CAAA;AAsBT,IAAA,YAAA;AACA,IAAA,GAAA;;AApBD,IAAA,MAAM;AACN,IAAA,KAAK;IACL,MAAM,GAAa,EAAE;IACrB,WAAW,GAAU,EAAE;;AAItB,IAAA,UAAU,GAAG,IAAI,YAAY,EAA+B;AAC5D,IAAA,eAAe,GAAG,IAAI,YAAY,EAAO;;AAInD,IAAA,WAAW;AACH,IAAA,aAAa;IAErB,QAAQ,GAAG,KAAK;IAChB,YAAY,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE;IAE7B,WAAA,CACU,YAAoB,EACpB,GAAsB,EAAA;QADtB,IAAA,CAAA,YAAY,GAAZ,YAAY;QACZ,IAAA,CAAA,GAAG,GAAH,GAAG;IACV;;AAIH,IAAA,WAAW,CAAC,OAAsB,EAAA;QAChC,IAAI,CAAC,IAAI,CAAC,MAAM;YAAE;;QAGlB,IAAI,OAAO,CAAC,OAAO,CAAC,IAAI,IAAI,CAAC,aAAa,EAAE;AAC1C,YAAA,IAAI,CAAC,aAAa,CAAC,OAAO,EAAE;QAC9B;QAEA,IAAI,CAAC,WAAW,EAAE;IACpB;IAEA,WAAW,GAAA;AACT,QAAA,IAAI,IAAI,CAAC,aAAa,EAAE;AACtB,YAAA,IAAI,CAAC,aAAa,CAAC,GAAG,EAAE;AACxB,YAAA,IAAI,CAAC,aAAa,EAAE,OAAO,EAAE;QAC/B;IACF;;AAIA,IAAA,WAAW,CAAC,EAAW,EAAA;AACrB,QAAA,IAAI,CAAC,aAAa,GAAG,EAAE;QACvB,IAAI,CAAC,WAAW,EAAE;QAClB,IAAI,CAAC,UAAU,EAAE;IACnB;;IAIQ,WAAW,GAAA;QACjB,MAAM,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC,GAAG,EAAE,IAAI,KAAK,GAAG,GAAG,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC;QAE1E,IAAI,CAAC,WAAW,GAAG;AACjB,YAAA,eAAe,EAAE,IAAI,CAAC,MAAM,EAAE,eAAe,IAAI,aAAa;AAE9D,YAAA,KAAK,EAAE;AACL,gBAAA,IAAI,EAAE,IAAI,CAAC,MAAM,CAAC,SAAS,IAAI,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK;AAClD,gBAAA,IAAI,EAAE,IAAI,CAAC,MAAM,CAAC,KAAK;AACvB,gBAAA,IAAI,EAAE,IAAI,CAAC,MAAM,CAAC,aAAa,IAAI,QAAQ;AAC5C,aAAA;AAED,YAAA,OAAO,EAAE;AACP,gBAAA,IAAI,EAAE,IAAI,CAAC,MAAM,CAAC,WAAW,IAAI,IAAI;AACrC,gBAAA,OAAO,EAAE,MAAM;gBACf,eAAe,EAAE,aAAa;AAC9B,gBAAA,WAAW,EAAE,CAAC;AACd,gBAAA,OAAO,EAAE,CAAC;AACV,gBAAA,OAAO,EAAE,IAAI;gBACb,SAAS,EAAE,CAAC,MAAW,KACrB,IAAI,CAAC,MAAM,CAAC;AACV,sBAAE,IAAI,CAAC,MAAM,CAAC,gBAAgB,CAAC,MAAM,EAAE,IAAI,CAAC,MAAM;AAClD,sBAAE,IAAI,CAAC,YAAY,CAAC,mBAAmB,CAAC,MAAM,EAAE,IAAI,CAAC,MAAM,CAAC;AACjE,aAAA;AAED,YAAA,MAAM,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE;YAEvB,OAAO,EACL,IAAI,CAAC,aAAa,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC;AACjC,kBAAE,IAAI,CAAC,YAAY,CAAC,kBAAkB,CAAC,KAAK,EAAE,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,aAAa;AAC7E,kBAAE,SAAS;AAEf,YAAA,MAAM,EAAE;AACN,gBAAA;AACE,oBAAA,IAAI,EAAE,KAAK;AACX,oBAAA,GAAG,EAAE,IAAI,CAAC,MAAM,CAAC,GAAG,IAAI,CAAC;AACzB,oBAAA,MAAM,EAAE,IAAI,CAAC,MAAM,CAAC,MAAM,IAAI,CAAC;AAC/B,oBAAA,MAAM,EAAE,IAAI,CAAC,MAAM,CAAC,MAAM,IAAI,KAAK;oBACnC,MAAM,EAAE,IAAI,CAAC,MAAM,CAAC,MAAM,IAAI,CAAC,KAAK,EAAE,KAAK,CAAC;AAC5C,oBAAA,IAAI,EAAE,IAAI,CAAC,MAAM,EAAE,IAAI,IAAI,EAAE;AAC7B,oBAAA,KAAK,EAAE,IAAI,CAAC,MAAM,CAAC,MAAM;AAEzB,oBAAA,KAAK,EAAE;AACL,wBAAA,IAAI,EAAE,IAAI,CAAC,MAAM,CAAC,SAAS,IAAI,KAAK;AACpC,wBAAA,QAAQ,EAAE,IAAI,CAAC,MAAM,CAAC,aAAa,IAAI,SAAS;AAChD,wBAAA,SAAS,EAAE,CAAC,MAAW,KAAI;AACzB,4BAAA,MAAM,OAAO,GAAG,CAAC,CAAC,MAAM,CAAC,KAAK,GAAG,KAAK,IAAI,GAAG,EAAE,OAAO,CAAC,CAAC,CAAC;AAEzD,4BAAA,IAAI,IAAI,GAAG,MAAM,CAAC,IAAI;AACtB,4BAAA,IAAI,IAAI,CAAC,MAAM,CAAC,cAAc;AAAE,gCAAA,IAAI,IAAI,CAAA,EAAA,EAAK,MAAM,CAAC,KAAK,EAAE;AAC3D,4BAAA,IAAI,IAAI,CAAC,MAAM,CAAC,mBAAmB;AAAE,gCAAA,IAAI,IAAI,CAAA,EAAA,EAAK,OAAO,CAAA,CAAA,CAAG;AAE5D,4BAAA,OAAO,IAAI;wBACb,CAAC;AACF,qBAAA;AAED,oBAAA,SAAS,EAAE;AACT,wBAAA,YAAY,EAAE,IAAI,CAAC,MAAM,CAAC,YAAY,IAAI,CAAC;AAC3C,wBAAA,WAAW,EAAE,IAAI,CAAC,MAAM,CAAC,WAAW,IAAI,MAAM;AAC9C,wBAAA,WAAW,EAAE,IAAI,CAAC,MAAM,CAAC,WAAW,IAAI,CAAC;AAC1C,qBAAA;oBAED,QAAQ,EACN,CAAC,IAAI,CAAC,MAAM,CAAC,iBAAiB,IAAI,IAAI;AACpC,0BAAE;AACE,4BAAA,SAAS,EAAE;AACT,gCAAA,UAAU,EAAE,EAAE;AACd,gCAAA,aAAa,EAAE,CAAC;AACjB,6BAAA;AACF;AACH,0BAAE,SAAS;AAChB,iBAAA;AACF,aAAA;SACF;IACH;;IAIQ,UAAU,GAAA;QAChB,IAAI,CAAC,IAAI,CAAC,aAAa;YAAE;AAEzB,QAAA,IAAI,CAAC,aAAa,CAAC,GAAG,EAAE;QAExB,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,SAAS,KAAI;YAChC,IAAI,CAAC,aAAa,CAAC,EAAE,CAAC,SAAS,EAAE,CAAC,MAAW,KAAI;AAC/C,gBAAA,IAAI,SAAS,KAAK,aAAa,EAAE;AAC/B,oBAAA,MAAM,CAAC,KAAK,EAAE,KAAK,EAAE,cAAc,EAAE;oBACrC,MAAM,SAAS,GAAG,IAAI,CAAC,aAAa,CAAC,MAAM,EAAE;AAC7C,oBAAA,MAAM,IAAI,GAAG,SAAS,CAAC,qBAAqB,EAAE;oBAE9C,IAAI,CAAC,YAAY,GAAG;wBAClB,CAAC,EAAE,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,OAAO,GAAG,IAAI,CAAC,IAAI;wBACzC,CAAC,EAAE,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,OAAO,GAAG,IAAI,CAAC,GAAG;qBACzC;AAED,oBAAA,IAAI,CAAC,QAAQ,GAAG,IAAI;AACpB,oBAAA,IAAI,CAAC,GAAG,CAAC,YAAY,EAAE;gBACzB;AAEA,gBAAA,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC;AACzD,YAAA,CAAC,CAAC;AACJ,QAAA,CAAC,CAAC;IACJ;AAEA,IAAA,WAAW,CAAC,IAAS,EAAA;AACnB,QAAA,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,IAAI,CAAC;QAC/B,IAAI,CAAC,SAAS,EAAE;IAClB;IAGA,SAAS,GAAA;AACP,QAAA,IAAI,CAAC,QAAQ,GAAG,KAAK;IACvB;wGAxKW,QAAQ,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAF,MAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,iBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAAR,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,QAAQ,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,eAAA,EAAA,MAAA,EAAA,EAAA,MAAA,EAAA,QAAA,EAAA,KAAA,EAAA,OAAA,EAAA,MAAA,EAAA,QAAA,EAAA,WAAA,EAAA,aAAA,EAAA,EAAA,OAAA,EAAA,EAAA,UAAA,EAAA,YAAA,EAAA,eAAA,EAAA,iBAAA,EAAA,EAAA,IAAA,EAAA,EAAA,SAAA,EAAA,EAAA,gBAAA,EAAA,aAAA,EAAA,EAAA,EAAA,SAAA,EALR,CAAC,kBAAkB,CAAC,EAAE,OAAO,EAAE,CAAC,CAAC,EAAA,aAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,ECzB9C,0VAgBA,EAAA,MAAA,EAAA,CAAA,8DAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EDQY,mBAAmB,8/BAAE,cAAc,EAAA,QAAA,EAAA,sBAAA,EAAA,MAAA,EAAA,CAAA,cAAA,EAAA,aAAA,CAAA,EAAA,OAAA,EAAA,CAAA,kBAAA,CAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA;;4FAMlC,QAAQ,EAAA,UAAA,EAAA,CAAA;kBARpB,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,eAAe,WAChB,CAAC,mBAAmB,EAAE,cAAc,CAAC,aACnC,CAAC,kBAAkB,CAAC,EAAE,OAAO,EAAE,CAAC,CAAC,EAAA,eAAA,EAG3B,uBAAuB,CAAC,MAAM,EAAA,QAAA,EAAA,0VAAA,EAAA,MAAA,EAAA,CAAA,8DAAA,CAAA,EAAA;;sBAK9C;;sBACA;;sBACA;;sBACA;;sBAIA;;sBACA;;sBA0JA,YAAY;uBAAC,gBAAgB;;;AE7KhC,OAAO,CAAC,GAAG,CAAC,CAACE,UAAS,EAAE,cAAc,EAAE,gBAAgB,EAAE,eAAe,EAAE,cAAc,CAAC,CAAC;MAU9E,aAAa,CAAA;AAkBd,IAAA,YAAA;AACA,IAAA,GAAA;AAlBD,IAAA,MAAM;AACN,IAAA,KAAK;IACL,MAAM,GAAa,EAAE;IACrB,kBAAkB,GAAU,EAAE;IAC9B,eAAe,GAAY,KAAK;AAE/B,IAAA,gBAAgB,GAAG,IAAI,YAAY,EAAO;AAC1C,IAAA,UAAU,GAAG,IAAI,YAAY,EAGnC;AACM,IAAA,WAAW,GAAG,IAAI,YAAY,EAAoB;IAC5D,YAAY,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE;IAC7B,QAAQ,GAAY,KAAK;AACzB,IAAA,WAAW;AACX,IAAA,aAAa;IACb,WAAA,CACU,YAAoB,EACpB,GAAsB,EAAA;QADtB,IAAA,CAAA,YAAY,GAAZ,YAAY;QACZ,IAAA,CAAA,GAAG,GAAH,GAAG;IACV;AAEH,IAAA,IAAI,aAAa,GAAA;AACf,QAAA,OAAO,IAAI,CAAC,YAAY,CAAC,aAAa;IACxC;;AAEA,IAAA,WAAW,CAAC,OAAsB,EAAA;QAChC,IAAI,CAAC,IAAI,CAAC,MAAM;YAAE;;QAElB,IAAI,OAAO,CAAC,OAAO,CAAC,IAAI,IAAI,CAAC,aAAa,EAAE;AAC1C,YAAA,IAAI,CAAC,aAAa,CAAC,OAAO,EAAE;QAC9B;;QAEA,IAAI,CAAC,WAAW,EAAE;IACpB;;AAEA;;;;AAIG;AACH,IAAA,WAAW,CAAC,IAAS,EAAA;AACnB,QAAA,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,IAAI,CAAC;QAEhC,IAAI,CAAC,SAAS,EAAE;IAClB;AAEA;;;AAGG;IAEH,SAAS,GAAA;AACP,QAAA,IAAI,CAAC,QAAQ,GAAG,KAAK;IACvB;;AAEA;;;;;AAKG;IACH,WAAW,GAAA;AACT,QAAA,MAAM,QAAQ,GAAG,IAAI,CAAC,kBAAkB,EAAE;AAC1C,QAAA,MAAM,YAAY,GAAG,IAAI,CAAC,MAAM,EAAE,YAAY,EAAE,aAAa,KAAK,WAAW,GAAG,QAAQ,GAAG,IAAI;QAE/F,MAAM,KAAK,GAAG,IAAI,CAAC,MAAM,EAAE,IAAI,EAAE,MAAM,CAAC,CAAC,GAAG,EAAE,IAAI,KAAK,GAAG,GAAG,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC;AAC3E,QAAA,MAAM,UAAU,GAAG,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,IAAI,EAAE,GAAG,GAAG,CAAC,CAAC,CAAC,MAAM;AACxD,YAAA,GAAG,CAAC;AACJ,YAAA,IAAI,CAAC,CAAC,CAAC,KAAK,IAAI;AACd,gBAAA,SAAS,EAAE;oBACT,KAAK,EAAE,KAAK,KAAK,CAAC,GAAG,SAAS,GAAG,SAAS;AAC1C,oBAAA,WAAW,EAAE,KAAK,IAAI,CAAC,IAAI,IAAI,CAAC,MAAM,CAAC,WAAW,IAAI,CAAC,IAAI,CAAC;AAC7D,iBAAA;AACF,aAAA,CAAC;AACH,SAAA,CAAC,CAAC;QAEH,MAAM,WAAW,GAAG,IAAI,CAAC,MAAM,CAAC,WAAW,IAAI,KAAK;QACpD,MAAM,WAAW,GAAG,IAAI,CAAC,MAAM,CAAC,WAAW,IAAI,KAAK;QAEpD,IAAI,CAAC,WAAW,GAAG;AACjB,YAAA,eAAe,EAAE,IAAI,CAAC,MAAM,EAAE,eAAe,IAAI,aAAa;YAC9D,KAAK,EAAE,IAAI,CAAC,MAAM,CAAC,MAAM,IAAI,IAAI,CAAC,YAAY,CAAC,aAAa;AAC5D,YAAA,KAAK,EAAE;AACL,gBAAA,IAAI,EAAE,IAAI,CAAC,MAAM,CAAC,SAAS,IAAI,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK;AAClD,gBAAA,IAAI,EAAE,IAAI,CAAC,MAAM,CAAC,KAAK;AACvB,gBAAA,IAAI,EAAE,IAAI,CAAC,MAAM,CAAC,aAAa,IAAI,QAAQ;AAC5C,aAAA;AACD,YAAA,OAAO,EAAE;AACP,gBAAA,IAAI,EAAE,IAAI,CAAC,MAAM,CAAC,WAAW,IAAI,IAAI;AACrC,gBAAA,OAAO,EAAE,MAAM;gBACf,eAAe,EAAE,aAAa;AAC9B,gBAAA,WAAW,EAAE,CAAC;AACd,gBAAA,OAAO,EAAE,CAAC;AACV,gBAAA,OAAO,EAAE,IAAI;gBACb,SAAS,EAAE,CAAC,MAAW,KACrB,IAAI,CAAC,MAAM,CAAC;AACV,sBAAE,IAAI,CAAC,MAAM,CAAC,gBAAgB,CAAC,MAAM,EAAE,IAAI,CAAC,MAAM;AAClD,sBAAE,IAAI,CAAC,YAAY,CAAC,mBAAmB,CAAC,MAAM,EAAE,IAAI,CAAC,MAAM,CAAC;AAChE,gBAAA,GAAG,IAAI,CAAC,MAAM,CAAC,OAAO;AACvB,aAAA;AAED,YAAA,MAAM,EAAE;AACN,gBAAA,IAAI,EAAE,KAAK;gBACX,IAAI,EAAE,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,IAAI,EAAE,EAAE,GAAG,CAAC,CAAC,MAAM,KAAK,MAAM,CAAC,IAAI,CAAC;gBAC5D,QAAQ;gBACR,YAAY;AACb,aAAA;AAED,YAAA,MAAM,EAAE,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE;AAC1B,kBAAE,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,KAAI;oBAC3B,OAAO,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,CAAC,EAAE;AAC9B,gBAAA,CAAC;AACH,kBAAE;AACE,oBAAA;AACE,wBAAA,IAAI,EAAE,KAAK;AACX,wBAAA,GAAG,EAAE,IAAI,CAAC,MAAM,CAAC,GAAG,IAAI,CAAC;AACzB,wBAAA,MAAM,EAAE,IAAI,CAAC,MAAM,CAAC,MAAM,IAAI,CAAC;AAC/B,wBAAA,MAAM,EAAE,CAAC,WAAW,EAAE,WAAW,CAAC;wBAClC,MAAM,EAAE,IAAI,CAAC,MAAM,CAAC,MAAM,IAAI,CAAC,KAAK,EAAE,KAAK,CAAC;AAC5C,wBAAA,IAAI,EAAE,UAAU;;;;;AAOhB,wBAAA,KAAK,EAAE;4BACL,IAAI,EAAE,IAAI,CAAC,MAAM,EAAE,WAAW,EAAE,IAAI,IAAI,KAAK;AAC7C,4BAAA,QAAQ,EAAE,QAAQ;AAClB,4BAAA,SAAS,EAAE,CAAC,KAAU,KAAI;gCACxB,IAAI,IAAI,CAAC,MAAM,EAAE,WAAW,EAAE,SAAS,EAAE;AACvC,oCAAA,OAAO,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC,SAAS,CAAC,KAAK,EAAE,KAAK,EAAE,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC;gCAC1E;gCACA,MAAM,KAAK,GAAG,IAAI,CAAC,MAAM,EAAE,WAAW,EAAE,KAAK,IAAI,EAAE;gCACnD,MAAM,WAAW,GAAG,IAAI,CAAC,MAAM,EAAE,WAAW,EAAE,KAAK;AACnD,gCAAA,OAAO,CAAA,OAAA,EAAU,KAAK,CAAA,CAAA,EACpB,WAAW,KAAK,SAAS,IAAI,WAAW,KAAK,IAAI,IAAI,WAAW,KAAK;sCACjE,CAAA,QAAA,EAAW,WAAW,CAAA,CAAA;sCACtB,EACN,CAAA,CAAE;4BACJ,CAAC;AACD,4BAAA,IAAI,EAAE;AACJ,gCAAA,KAAK,EAAE;oCACL,QAAQ,EAAE,IAAI,CAAC,MAAM,EAAE,WAAW,EAAE,aAAa,IAAI,EAAE;oCACvD,UAAU,EAAE,IAAI,CAAC,MAAM,EAAE,WAAW,EAAE,eAAe,IAAI,GAAG;oCAC5D,KAAK,EAAE,IAAI,CAAC,MAAM,EAAE,WAAW,EAAE,UAAU,IAAI,SAAS;oCACxD,UAAU,EAAE,IAAI,CAAC,MAAM,EAAE,WAAW,EAAE,eAAe,IAAI,EAAE;AAC5D,iCAAA;AAED,gCAAA,IAAI,EAAE;oCACJ,QAAQ,EAAE,IAAI,CAAC,MAAM,EAAE,WAAW,EAAE,aAAa,IAAI,EAAE;oCACvD,UAAU,EAAE,IAAI,CAAC,MAAM,EAAE,WAAW,EAAE,eAAe,IAAI,GAAG;oCAC5D,KAAK,EAAE,IAAI,CAAC,MAAM,EAAE,WAAW,EAAE,UAAU,IAAI,SAAS;oCACxD,UAAU,EAAE,IAAI,CAAC,MAAM,EAAE,WAAW,EAAE,eAAe,IAAI,EAAE;AAC5D,iCAAA;AACF,6BAAA;4BACD,IAAI,IAAI,CAAC,MAAM,EAAE,KAAK,IAAI,EAAE,CAAC;AAC9B,yBAAA;AAED,wBAAA,SAAS,EAAE;AACT,4BAAA,YAAY,EAAE,IAAI,CAAC,MAAM,CAAC,YAAY,IAAI,CAAC;AAC3C,4BAAA,WAAW,EAAE,IAAI,CAAC,MAAM,CAAC,WAAW,IAAI,MAAM;AAC9C,4BAAA,WAAW,EAAE,IAAI,CAAC,MAAM,CAAC,WAAW,IAAI,CAAC;AAC1C,yBAAA;AACD,wBAAA,QAAQ,EAAE;AACR,4BAAA,KAAK,EAAE,IAAI,CAAC,MAAM,CAAC,aAAa;AACjC,yBAAA;AACF,qBAAA;AACF,iBAAA;SACN;IACH;AAEA,IAAA,IAAI,kBAAkB,GAAA;AACpB,QAAA,OAAO,IAAI,CAAC,YAAY,IAAI,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,YAAY,EAAE,QAAQ;IAClE;AAEA,IAAA,IAAI,mBAAmB,GAAA;QACrB,OAAO,IAAI,CAAC,YAAY,IAAI,IAAI,CAAC,MAAM,CAAC,YAAY,EAAE,QAAQ,IAAI,IAAI,IAAI,IAAI;IAChF;AAEA,IAAA,IAAY,YAAY,GAAA;QACtB,QACE,IAAI,CAAC,MAAM,CAAC,YAAY,EAAE,QAAQ,KAAK,MAAM;YAC7C,IAAI,CAAC,MAAM,CAAC,YAAY,EAAE,QAAQ,KAAK,OAAO;IAElD;AAEA,IAAA,aAAa,CAAC,KAAuB,EAAA;AACnC,QAAA,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,KAAK,CAAC;AAC5B,QAAA,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC;AACnB,YAAA,IAAI,EAAE,CAAA,OAAA,EAAU,KAAK,CAAC,IAAI,CAAA,CAAE;AAC5B,YAAA,IAAI,EAAE,KAAK;AACZ,SAAA,CAAC;IACJ;IAEQ,kBAAkB,GAAA;QACxB,MAAM,MAAM,GAAG,IAAI,CAAC,aAAa,EAAE,SAAS,IAE/B;AAEb,QAAA,OAAO,EAAE,IAAI,MAAM,EAAE,MAAM,GAAG,CAAC,CAAC,EAAE,QAAQ,IAAI,EAAE,CAAC,EAAE;IACrD;;AAGA;;;;;AAKG;AACH,IAAA,WAAW,CAAC,EAAW,EAAA;AACrB,QAAA,IAAI,CAAC,aAAa,GAAG,EAAE;QACvB,IAAI,CAAC,WAAW,EAAE;QAClB,IAAI,CAAC,UAAU,EAAE;IACnB;IAEA,QAAQ,GAAA;AACN,QAAA,IAAI,CAAC,aAAa,EAAE,MAAM,EAAE;IAC9B;;AAEA;;;;AAIG;IACK,UAAU,GAAA;QAChB,IAAI,CAAC,IAAI,CAAC,aAAa;YAAE;AACzB,QAAA,IAAI,CAAC,aAAa,CAAC,GAAG,EAAE;;QAGxB,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,SAAS,KAAI;AAChC,YAAA,IAAI,SAAS,KAAK,aAAa,EAAE;gBAC/B,IAAI,CAAC,aAAa,CAAC,EAAE,CAAC,aAAa,EAAE,CAAC,MAAW,KAAI;AACnD,oBAAA,MAAM,KAAK,GAAG,MAAM,EAAE,KAAK,EAAE,KAAK;oBAClC,IAAI,KAAK,EAAE;wBACT,KAAK,CAAC,cAAc,EAAE;wBAEtB,MAAM,SAAS,GAAG,IAAI,CAAC,aAAa,CAAC,MAAM,EAAE;AAC7C,wBAAA,MAAM,IAAI,GAAG,SAAS,CAAC,qBAAqB,EAAE;wBAE9C,IAAI,CAAC,YAAY,GAAG;AAClB,4BAAA,CAAC,EAAE,KAAK,CAAC,OAAO,GAAG,IAAI,CAAC,IAAI;AAC5B,4BAAA,CAAC,EAAE,KAAK,CAAC,OAAO,GAAG,IAAI,CAAC,GAAG;yBAC5B;AAED,wBAAA,IAAI,CAAC,QAAQ,GAAG,IAAI;AAEpB,wBAAA,IAAI,CAAC,GAAG,CAAC,YAAY,EAAE;oBACzB;AACA,oBAAA,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC;AACnB,wBAAA,IAAI,EAAE,aAAa;AACnB,wBAAA,IAAI,EAAE,MAAM;AACb,qBAAA,CAAC;AACJ,gBAAA,CAAC,CAAC;gBACF,MAAM,EAAE,GAAG,IAAI,CAAC,aAAa,CAAC,KAAK,EAAE;gBACrC,EAAE,CAAC,EAAE,CAAC,aAAa,EAAE,CAAC,OAAY,KAAI;AACpC,oBAAA,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE;AACnB,wBAAA,MAAM,WAAW,GAAG,OAAO,CAAC,KAAK;wBAEjC,WAAW,CAAC,cAAc,EAAE;wBAE5B,MAAM,SAAS,GAAG,IAAI,CAAC,aAAa,CAAC,MAAM,EAAE;AAC7C,wBAAA,MAAM,IAAI,GAAG,SAAS,CAAC,qBAAqB,EAAE;wBAE9C,IAAI,CAAC,YAAY,GAAG;AAClB,4BAAA,CAAC,EAAE,WAAW,CAAC,OAAO,GAAG,IAAI,CAAC,IAAI;AAClC,4BAAA,CAAC,EAAE,WAAW,CAAC,OAAO,GAAG,IAAI,CAAC,GAAG;yBAClC;AAED,wBAAA,IAAI,CAAC,QAAQ,GAAG,IAAI;AACpB,wBAAA,IAAI,CAAC,GAAG,CAAC,YAAY,EAAE;AAEvB,wBAAA,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC;AACnB,4BAAA,IAAI,EAAE,aAAa;4BACnB,IAAI,EAAE,EAAE,GAAG,OAAO,EAAE,SAAS,EAAE,IAAI,EAAE;AACtC,yBAAA,CAAC;oBACJ;AACF,gBAAA,CAAC,CAAC;YACJ;AAAO,iBAAA,IAAI,SAAS,KAAK,OAAO,EAAE;gBAChC,IAAI,CAAC,aAAa,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,MAAW,KAAI;AAC7C,oBAAA,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC;AACnB,wBAAA,IAAI,EAAE,OAAO;AACb,wBAAA,IAAI,EAAE,MAAM;AACb,qBAAA,CAAC;AACJ,gBAAA,CAAC,CAAC;gBACF,MAAM,EAAE,GAAG,IAAI,CAAC,aAAa,CAAC,KAAK,EAAE;gBACrC,EAAE,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,OAAY,KAAI;AAC9B,oBAAA,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE;AACnB,wBAAA,MAAM,WAAW,GAAG,OAAO,CAAC,KAAK;wBACjC,WAAW,CAAC,cAAc,EAAE;AAC5B,wBAAA,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC;AACnB,4BAAA,IAAI,EAAE,MAAM;4BACZ,IAAI,EAAE,EAAE,GAAG,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE;AACnC,yBAAA,CAAC;oBACJ;AACF,gBAAA,CAAC,CAAC;YACJ;iBAAO;gBACL,IAAI,CAAC,aAAa,CAAC,EAAE,CAAC,SAAS,EAAE,CAAC,MAAW,KAAI;AAC/C,oBAAA,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC;AACnB,wBAAA,IAAI,EAAE,SAAS;AACf,wBAAA,IAAI,EAAE,MAAM;AACb,qBAAA,CAAC;AACJ,gBAAA,CAAC,CAAC;YACJ;AACF,QAAA,CAAC,CAAC;IACJ;;IAGA,WAAW,GAAA;AACT,QAAA,IAAI,IAAI,CAAC,aAAa,EAAE;AACtB,YAAA,IAAI,CAAC,aAAa,CAAC,GAAG,EAAE;AACxB,YAAA,IAAI,CAAC,aAAa,EAAE,OAAO,EAAE;QAC/B;IACF;wGA1TW,aAAa,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAF,MAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,iBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAAb,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,aAAa,iZALb,CAAC,kBAAkB,CAAC,EAAE,OAAO,EAAE,CAAC,CAAC,EAAA,aAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EC3B9C,+2DAsDA,EAAA,MAAA,EAAA,CAAA,goBAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,ED5BY,mBAAmB,EAAA,QAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,OAAA,EAAA,UAAA,EAAA,OAAA,EAAA,YAAA,EAAA,SAAA,EAAA,aAAA,EAAA,aAAA,CAAA,EAAA,OAAA,EAAA,CAAA,WAAA,EAAA,cAAA,EAAA,YAAA,EAAA,eAAA,EAAA,gBAAA,EAAA,gBAAA,EAAA,cAAA,EAAA,gBAAA,EAAA,eAAA,EAAA,gBAAA,EAAA,kBAAA,EAAA,gBAAA,EAAA,eAAA,EAAA,oBAAA,EAAA,0BAAA,EAAA,qBAAA,EAAA,uBAAA,EAAA,4BAAA,EAAA,gCAAA,EAAA,mBAAA,EAAA,eAAA,EAAA,wBAAA,EAAA,gBAAA,EAAA,cAAA,EAAA,eAAA,EAAA,sBAAA,EAAA,0BAAA,EAAA,cAAA,EAAA,sBAAA,EAAA,uBAAA,EAAA,uBAAA,EAAA,kBAAA,EAAA,oBAAA,EAAA,uBAAA,EAAA,YAAA,EAAA,eAAA,EAAA,oBAAA,EAAA,wBAAA,EAAA,eAAA,EAAA,eAAA,CAAA,EAAA,QAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAE,cAAc,yIAAE,oBAAoB,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,QAAA,EAAA,cAAA,CAAA,EAAA,OAAA,EAAA,CAAA,aAAA,CAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA;;4FAMxD,aAAa,EAAA,UAAA,EAAA,CAAA;kBARzB,SAAS;+BACE,oBAAoB,EAAA,OAAA,EACrB,CAAC,mBAAmB,EAAE,cAAc,EAAE,oBAAoB,CAAC,EAAA,SAAA,EACzD,CAAC,kBAAkB,CAAC,EAAE,OAAO,EAAE,CAAC,CAAC,EAAA,eAAA,EAG3B,uBAAuB,CAAC,MAAM,EAAA,QAAA,EAAA,+2DAAA,EAAA,MAAA,EAAA,CAAA,goBAAA,CAAA,EAAA;;sBAG9C;;sBACA;;sBACA;;sBACA;;sBACA;;sBAEA;;sBACA;;sBAIA;;sBAuCA,YAAY;uBAAC,gBAAgB;;sBAqK7B,YAAY;uBAAC,eAAe;;;AEhP/B,OAAO,CAAC,GAAG,CAAC,CAAC,SAAS,EAAE,aAAa,EAAE,gBAAgB,EAAE,eAAe,EAAE,cAAc,CAAC,CAAC;MAQ7E,gBAAgB,CAAA;AAClB,IAAA,IAAI;IACJ,KAAK,GAAW,2BAA2B;AAEpD,IAAA,WAAW;AAEX,IAAA,WAAW,CAAC,OAAsB,EAAA;AAChC,QAAA,IAAI,OAAO,CAAC,MAAM,CAAC,EAAE;YACnB,IAAI,CAAC,UAAU,EAAE;QACnB;IACF;IAEA,UAAU,GAAA;QACR,IAAI,CAAC,WAAW,GAAG;AACjB,YAAA,OAAO,EAAE;AACP,gBAAA,OAAO,EAAE,MAAM;AAChB,aAAA;AACD,YAAA,MAAM,EAAE;AACN,gBAAA,IAAI,EAAE,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAM,KAAK,CAAC,CAAC,IAAI,CAAC;AAC9C,gBAAA,GAAG,EAAE,EAAE;AACR,aAAA;AACD,YAAA,IAAI,EAAE;AACJ,gBAAA,IAAI,EAAE,IAAI;AACV,gBAAA,KAAK,EAAE,IAAI;AACX,gBAAA,MAAM,EAAE,IAAI;AACZ,gBAAA,YAAY,EAAE,IAAI;AACnB,aAAA;AACD,YAAA,KAAK,EAAE;AACL,gBAAA,IAAI,EAAE,UAAU;AAChB,gBAAA,WAAW,EAAE,KAAK;AAClB,gBAAA,IAAI,EAAE,IAAI,CAAC,IAAI,CAAC,IAAI;AACrB,aAAA;AACD,YAAA,KAAK,EAAE;AACL,gBAAA,IAAI,EAAE,OAAO;AACd,aAAA;AACD,YAAA,MAAM,EAAE,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAM,MAAM;gBACxC,IAAI,EAAE,CAAC,CAAC,IAAI;AACZ,gBAAA,IAAI,EAAE,CAAC,CAAC,IAAI,IAAE,MAAM;AACpB,gBAAA,MAAM,EAAE,IAAI;gBACZ,IAAI,EAAE,CAAC,CAAC,MAAM;AACd,gBAAA,SAAS,EAAE;AACT,oBAAA,OAAO,EAAE,IAAI;AACd,iBAAA;AACF,aAAA,CAAC,CAAC;SACJ;IACH;wGA7CW,gBAAgB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAAhB,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,gBAAgB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,wBAAA,EAAA,MAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,KAAA,EAAA,OAAA,EAAA,EAAA,SAAA,EAJhB,CAAC,kBAAkB,CAAC,EAAE,OAAO,EAAE,CAAC,CAAC,EAAA,aAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,ECZ9C,8FAIS,EAAA,MAAA,EAAA,CAAA,6CAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EDOG,mBAAmB,EAAA,QAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,OAAA,EAAA,UAAA,EAAA,OAAA,EAAA,YAAA,EAAA,SAAA,EAAA,aAAA,EAAA,aAAA,CAAA,EAAA,OAAA,EAAA,CAAA,WAAA,EAAA,cAAA,EAAA,YAAA,EAAA,eAAA,EAAA,gBAAA,EAAA,gBAAA,EAAA,cAAA,EAAA,gBAAA,EAAA,eAAA,EAAA,gBAAA,EAAA,kBAAA,EAAA,gBAAA,EAAA,eAAA,EAAA,oBAAA,EAAA,0BAAA,EAAA,qBAAA,EAAA,uBAAA,EAAA,4BAAA,EAAA,gCAAA,EAAA,mBAAA,EAAA,eAAA,EAAA,wBAAA,EAAA,gBAAA,EAAA,cAAA,EAAA,eAAA,EAAA,sBAAA,EAAA,0BAAA,EAAA,cAAA,EAAA,sBAAA,EAAA,uBAAA,EAAA,uBAAA,EAAA,kBAAA,EAAA,oBAAA,EAAA,uBAAA,EAAA,YAAA,EAAA,eAAA,EAAA,oBAAA,EAAA,wBAAA,EAAA,eAAA,EAAA,eAAA,CAAA,EAAA,QAAA,EAAA,CAAA,SAAA,CAAA,EAAA,CAAA,EAAA,CAAA;;4FAKlB,gBAAgB,EAAA,UAAA,EAAA,CAAA;kBAP5B,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,wBAAwB,EAAA,OAAA,EACzB,CAAC,mBAAmB,CAAC,EAAA,SAAA,EACnB,CAAC,kBAAkB,CAAC,EAAE,OAAO,EAAE,CAAC,CAAC,EAAA,QAAA,EAAA,8FAAA,EAAA,MAAA,EAAA,CAAA,6CAAA,CAAA,EAAA;;sBAK3C;;sBACA;;;AEOH,OAAO,CAAC,GAAG,CAAC,CAAC,WAAW,EAAE,aAAa,EAAE,gBAAgB,EAAE,eAAe,EAAE,cAAc,CAAC,CAAC;MAS/E,oBAAoB,CAAA;AAmBrB,IAAA,YAAA;AACA,IAAA,GAAA;AAnBD,IAAA,MAAM;AACN,IAAA,KAAK;IACL,MAAM,GAAa,EAAE;IACrB,kBAAkB,GAAU,EAAE;AAE7B,IAAA,gBAAgB,GAAG,IAAI,YAAY,EAAO;AAC1C,IAAA,UAAU,GAAG,IAAI,YAAY,EAGnC;IACJ,YAAY,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE;IAC7B,QAAQ,GAAY,KAAK;AAEzB,IAAA,WAAW;IACX,0BAA0B,GAAU,EAAE;AAE9B,IAAA,aAAa;IACrB,WAAA,CACU,YAAoB,EACpB,GAAsB,EAAA;QADtB,IAAA,CAAA,YAAY,GAAZ,YAAY;QACZ,IAAA,CAAA,GAAG,GAAH,GAAG;IACV;AAEH,IAAA,WAAW,CAAC,EAAW,EAAA;AACrB,QAAA,IAAI,CAAC,aAAa,GAAG,EAAE;QACvB,IAAI,CAAC,WAAW,EAAE;QAClB,IAAI,CAAC,UAAU,EAAE;IACnB;AAEA,IAAA,WAAW,CAAC,OAAsB,EAAA;QAChC,IAAI,CAAC,IAAI,CAAC,MAAM;YAAE;QAElB,IAAI,OAAO,CAAC,OAAO,CAAC,IAAI,IAAI,CAAC,aAAa,EAAE;AAC1C,YAAA,IAAI,CAAC,aAAa,CAAC,OAAO,EAAE;QAC9B;QAEA,IAAI,CAAC,WAAW,EAAE;IACpB;AAEA,IAAA,WAAW,CAAC,IAAS,EAAA;AACnB,QAAA,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,IAAI,CAAC;QAEhC,IAAI,CAAC,SAAS,EAAE;IAClB;IAEA,SAAS,GAAA;AACP,QAAA,IAAI,CAAC,QAAQ,GAAG,KAAK;IACvB;IAEQ,UAAU,GAAA;QAChB,IAAI,CAAC,IAAI,CAAC,aAAa;YAAE;AAEzB,QAAA,IAAI,CAAC,aAAa,CAAC,GAAG,EAAE;;QAGxB,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,SAAS,KAAI;AAChC,YAAA,IAAI,SAAS,KAAK,aAAa,EAAE;;gBAG/B,MAAM,EAAE,GAAG,IAAI,CAAC,aAAa,CAAC,KAAK,EAAE;AAErC,gBAAA,EAAE,CAAC,GAAG,CAAC,aAAa,CAAC;gBAErB,EAAE,CAAC,EAAE,CAAC,aAAa,EAAE,CAAC,KAAU,KAAI;AAClC,oBAAA,KAAK,CAAC,KAAK,CAAC,cAAc,EAAE;AAE5B,oBAAA,IAAI,CAAC,0BAA0B,GAAG,IAAI,CAAC,kBAAkB,CAAC,MAAM,CAC9D,CAAC,GAAG,KAAK,CAAC,GAAG,CAAC,YAAY,IAAI,KAAK,CAAC,MAAM,EAAE,IAAI,KAAK,MAAM,KAAK,CAAC,GAAG,CAAC,YAAY,CAClF;oBAED,MAAM,KAAK,GAAG,CAAC,KAAK,CAAC,OAAO,EAAE,KAAK,CAAC,OAAO,CAAC;;AAG5C,oBAAA,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,YAAY,CAAC,EAAE,SAAS,EAAE,CAAC,EAAE,EAAE,KAAK,CAAC;wBAAE;oBAE/D,MAAM,SAAS,GAAG,IAAI,CAAC,aAAa,CAAC,MAAM,EAAE;AAC7C,oBAAA,MAAM,IAAI,GAAG,SAAS,CAAC,qBAAqB,EAAE;oBAE9C,IAAI,CAAC,YAAY,GAAG;wBAClB,CAAC,EAAE,KAAK,CAAC,KAAK,CAAC,OAAO,GAAG,IAAI,CAAC,IAAI;wBAClC,CAAC,EAAE,KAAK,CAAC,KAAK,CAAC,OAAO,GAAG,IAAI,CAAC,GAAG;qBAClC;AAED,oBAAA,IAAI,CAAC,QAAQ,GAAG,IAAI;AAEpB,oBAAA,IAAI,CAAC,GAAG,CAAC,YAAY,EAAE;AAEvB,oBAAA,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC;AACnB,wBAAA,IAAI,EAAE,aAAa;AACnB,wBAAA,IAAI,EAAE,KAAK;AACZ,qBAAA,CAAC;AACJ,gBAAA,CAAC,CAAC;YACJ;iBAAO;gBACL,IAAI,CAAC,aAAa,CAAC,EAAE,CAAC,SAAS,EAAE,CAAC,MAAW,KAAI;AAC/C,oBAAA,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC;AACnB,wBAAA,IAAI,EAAE,SAAS;AACf,wBAAA,IAAI,EAAE,MAAM;AACb,qBAAA,CAAC;AACJ,gBAAA,CAAC,CAAC;YACJ;AACF,QAAA,CAAC,CAAC;IACJ;;;;;AAOQ,IAAA,mBAAmB,CAAC,IAAY,EAAA;AACtC,QAAA,IAAI,CAAC,IAAI;AAAE,YAAA,OAAO,CAAC;QACnB,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC,WAAW,EAAE;QACzC,MAAM,SAAS,GAAG,OAAO,CAAC,KAAK,CAAC,+BAA+B,CAAC;QAChE,IAAI,SAAS,EAAE;YACb,IAAI,KAAK,GAAG,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;YAChC,MAAM,OAAO,GAAG,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;AACpC,YAAA,MAAM,MAAM,GAAG,SAAS,CAAC,CAAC,CAAC;YAE3B,IAAI,MAAM,KAAK,IAAI,IAAI,KAAK,KAAK,EAAE,EAAE;gBACnC,KAAK,IAAI,EAAE;YACb;YACA,IAAI,MAAM,KAAK,IAAI,IAAI,KAAK,KAAK,EAAE,EAAE;gBACnC,KAAK,GAAG,CAAC;YACX;AACA,YAAA,OAAO,KAAK,GAAG,OAAO,GAAG,EAAE;QAC7B;QAEA,MAAM,OAAO,GAAG,OAAO,CAAC,KAAK,CAAC,qBAAqB,CAAC;QAEpD,IAAI,OAAO,EAAE;YACX,MAAM,KAAK,GAAG,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;YAChC,MAAM,OAAO,GAAG,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;AAElC,YAAA,OAAO,KAAK,GAAG,OAAO,GAAG,EAAE;QAC7B;AAEA,QAAA,OAAO,CAAC;IACV;AAEQ,IAAA,cAAc,CAAC,IAAa,EAAA;AAClC,QAAA,IAAI,CAAC,IAAI;AAAE,YAAA,OAAO,KAAK;AACvB,QAAA,OAAO,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC;IAC5B;IAEQ,eAAe,CAAC,GAAW,EAAE,QAAiB,EAAA;QACpD,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC;QAC5B,IAAI,CAAC,QAAQ,EAAE;AACb,YAAA,OAAO,CAAA,EAAG,IAAI,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,KAAK;QACjD;QACA,IAAI,CAAC,GAAG,IAAI;AACZ,QAAA,MAAM,MAAM,GAAG,CAAC,IAAI,EAAE,GAAG,IAAI,GAAG,IAAI;QACpC,IAAI,CAAC,KAAK,CAAC;YAAE,CAAC,GAAG,EAAE;aACd,IAAI,CAAC,GAAG,EAAE;YAAE,CAAC,IAAI,EAAE;AACxB,QAAA,OAAO,CAAA,EAAG,CAAC,CAAA,IAAA,EAAO,MAAM,EAAE;IAC5B;AAEQ,IAAA,WAAW,GACjB,CAAC,QAAgB,EAAE,OAAO,GAAG,KAAK,KAClC,CAAC,MAAW,EAAE,GAAQ,KAAI;QACxB,MAAM,aAAa,GAAG,IAAI,CAAC,MAAM,CAAC,SAAS,KAAK,QAAQ,GAAG,QAAQ,GAAG,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC;AAElF,QAAA,MAAM,KAAK,GAAG,GAAG,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,aAAa,CAAC,CAAC;AACtD,QAAA,MAAM,GAAG,GAAG,GAAG,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,aAAa,CAAC,CAAC;AACpD,QAAA,MAAM,UAAU,GAAG,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AAEtC,QAAA,MAAM,MAAM,GACV,UAAU,IAAI,OAAO,IAAI,IAAI,CAAC,MAAM,CAAC,WAAW,IAAI,CAAC,KAAK,IAAI,CAAC,MAAM,CAAC,SAAS,IAAI,GAAG,CAAC,CAAC;QAE1F,OAAO;AACL,YAAA,IAAI,EAAE,MAAM;AACZ,YAAA,KAAK,EAAE;AACL,gBAAA,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC;gBACX,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC,GAAG,MAAM,GAAG,CAAC;gBACxB,KAAK,EAAE,GAAG,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC;AACxB,gBAAA,MAAM,EAAE,MAAM;AACf,aAAA;AACD,YAAA,KAAK,EAAE,GAAG,CAAC,KAAK,EAAE;AAClB,YAAA,QAAQ,EAAE;AACR,gBAAA,KAAK,EAAE;AACL,oBAAA,MAAM,EAAE,SAAS;AACjB,oBAAA,SAAS,EAAE,CAAC;AAEZ,oBAAA,UAAU,EAAE,EAAE;AACd,oBAAA,WAAW,EAAE,WAAW;AACxB,oBAAA,aAAa,EAAE,CAAC;AAChB,oBAAA,aAAa,EAAE,CAAC;AACjB,iBAAA;AACF,aAAA;SACF;AACH,IAAA,CAAC;IAEK,WAAW,GAAA;AACjB,QAAA,MAAM,MAAM,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC;QAE/C,MAAM,OAAO,GAAU,EAAE;QACzB,IAAI,SAAS,GAAG,CAAC;AAEjB,QAAA,MAAM,CAAC,OAAO,CAAC,CAAC,KAAK,KAAI;YACvB,MAAM,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC;AAExC,YAAA,IAAI,CAAC,KAAK,IAAI,CAAC,KAAK,CAAC,MAAM;gBAAE;AAC7B,YAAA,MAAM,KAAK,GAAG;AACZ,gBAAA,IAAI,IAAI,CAAC,MAAM,CAAC;AACd,sBAAE;sBACA,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,MAAM,EAAE,SAAS,EAAE,EAAE,OAAO,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC;gBAC/D,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC,CAAM,MAAM;oBACxB,IAAI,EAAE,CAAC,CAAC,IAAI;AACZ,oBAAA,SAAS,EAAE,EAAE,KAAK,EAAE,CAAC,CAAC,KAAK,EAAE;AAC9B,iBAAA,CAAC,CAAC;aACJ;YAED,OAAO,CAAC,IAAI,CAAC;AACX,gBAAA,GAAG,EAAE,SAAS;AACd,gBAAA,IAAI,EAAE,CAAC;AACP,gBAAA,MAAM,EAAE,YAAY;AACpB,gBAAA,IAAI,EAAE,WAAW;AACjB,gBAAA,OAAO,EAAE,EAAE;AACX,gBAAA,SAAS,EAAE,EAAE;AACb,gBAAA,UAAU,EAAE,EAAE;AACd,gBAAA,IAAI,EAAE,KAAK;AAEX,gBAAA,SAAS,EAAE,CAAC,IAAY,KAAI;AAC1B,oBAAA,IAAI,IAAI,KAAK,KAAK,EAAE;wBAClB,OAAO,CAAA,OAAA,EAAU,IAAI,CAAA,EAAA,CAAI;oBAC3B;AACA,oBAAA,OAAO,IAAI;gBACb,CAAC;AAED,gBAAA,SAAS,EAAE;AACT,oBAAA,QAAQ,EAAE,EAAE;AACZ,oBAAA,IAAI,EAAE;AACJ,wBAAA,KAAK,EAAE;AACL,4BAAA,UAAU,EAAE,MAAM;4BAClB,OAAO,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC;AACxB,yBAAA;AACF,qBAAA;AACF,iBAAA;AACF,aAAA,CAAC;YAEF,SAAS,IAAI,EAAE;AACjB,QAAA,CAAC,CAAC;AACF,QAAA,OAAO,OAAO;IAChB;IAEQ,cAAc,GAAA;AACpB,QAAA,MAAM,IAAI,GAAG,IAAI,CAAC,MAAM,CAAC,IAAI,GAAG,CAAC,CAAC,EAAE,iBAAiB;QACrD,IAAI,CAAC,IAAI,EAAE,MAAM;AAAE,YAAA,OAAO,SAAS;QAEnC,OAAO;AACL,YAAA,MAAM,EAAE,IAAI;AACZ,YAAA,MAAM,EAAE,MAAM;YACd,IAAI,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,MAAM;gBACvB,KAAK,EAAE,IAAI,CAAC,mBAAmB,CAAC,GAAG,CAAC,IAAI,CAAC;AACzC,gBAAA,KAAK,EAAE,EAAE,SAAS,EAAE,EAAE,EAAE;AACxB,gBAAA,SAAS,EAAE;AACT,oBAAA,KAAK,EAAE,SAAS;AAChB,oBAAA,IAAI,EAAE,GAAG,CAAC,IAAI,KAAK,KAAK,GAAI,CAAC,CAAC,EAAE,CAAC,CAAS,GAAG,OAAO;AACpD,oBAAA,KAAK,EAAE,CAAC;AACT,iBAAA;AACF,aAAA,CAAC,CAAC;SACJ;IACH;IAEQ,WAAW,GAAA;AACjB,QAAA,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,UAAU,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI;YAAE;QAEpD,MAAM,MAAM,GAAU,EAAE;AAExB,QAAA,MAAM,UAAU,GAAG,IAAI,CAAC,MAAM,CAAC,UAAU;;AAIzC,QAAA,IACE,IAAI,CAAC,MAAM,CAAC,SAAS,KAAK,OAAO;AACjC,YAAA,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,MAAM;AACxB,YAAA,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAC1C;AACA,YAAA,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC,GAAG,EAAE,KAAK,KAAI;gBAC5C,MAAM,SAAS,GAAU,EAAE;gBAC3B,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,KAAK,IAAI,EAAE,EAAE,OAAO,CAAC,CAAC,CAAY,KAAI;oBAClE,SAAS,CAAC,IAAI,CAAC;wBACb,KAAK,EAAE,CAAC,KAAK,EAAE,IAAI,CAAC,mBAAmB,CAAC,CAAC,CAAC,KAAK,CAAC,EAAE,IAAI,CAAC,mBAAmB,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;AAClF,wBAAA,SAAS,EAAE;AACT,4BAAA,KAAK,EAAE,IAAI,CAAC,MAAM,CAAC,UAAU,IAAI,SAAS;AAC3C,yBAAA;AACF,qBAAA,CAAC;AACJ,gBAAA,CAAC,CAAC;AACF,gBAAA,IAAI,SAAS,CAAC,MAAM,EAAE;oBACpB,MAAM,CAAC,IAAI,CAAC;AACV,wBAAA,IAAI,EAAE,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,IAAI,IAAI,OAAO;AAClD,wBAAA,IAAI,EAAE,QAAQ;wBACd,UAAU,EAAE,IAAI,CAAC,WAAW,CAAC,KAAK,EAAE,IAAI,CAAC;AACzC,wBAAA,MAAM,EAAE,IAAI;AACZ,wBAAA,CAAC,EAAE,CAAC;AACJ,wBAAA,MAAM,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE;AAC3B,wBAAA,IAAI,EAAE,SAAS;AAChB,qBAAA,CAAC;gBACJ;AACF,YAAA,CAAC,CAAC;QACJ;;AAIA,QAAA,IACE,IAAI,CAAC,MAAM,CAAC,SAAS,KAAK,OAAO;AACjC,YAAA,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,MAAM;AACxB,YAAA,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,MAAM,EACrC;AACA,YAAA,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,GAAG,EAAE,KAAK,KAAI;gBAClD,MAAM,YAAY,GAAU,EAAE;AAC9B,gBAAA,MAAM,aAAa,GAAG,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC;AAElE,gBAAA,MAAM,aAAa,GAAG,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,IAAI,CAC3D,CAAC,GAAG,KAAK,GAAG,CAAC,IAAI,KAAK,GAAG,CAAC,IAAI,CAC/B;gBACD,IAAI,UAAU,GAAG,SAAS;gBAC1B,IAAI,aAAa,EAAE;AACjB,oBAAA,UAAU,GAAG,aAAa,EAAE,KAAK,IAAI,SAAS;gBAChD;gBACA,IAAI,aAAa,KAAK,CAAC,CAAC;oBAAE;gBAE1B,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAM,EAAE,CAAS,KAAI;oBACtC,MAAM,CAAC,GACL,aAAa;wBACb,CAAC,CAAC,KAAK,IAAI,IAAI,CAAC,MAAM,CAAC,SAAS,IAAI,GAAG,CAAC;AACxC,wBAAA,CAAC,CAAC,IAAI,IAAI,CAAC,MAAM,CAAC,SAAS,IAAI,GAAG,CAAC,IAAI,CAAC;AAE1C,oBAAA,YAAY,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,mBAAmB,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC;AAC1D,gBAAA,CAAC,CAAC;AACF,gBAAA,IAAI,YAAY,CAAC,MAAM,EAAE;oBACvB,MAAM,CAAC,IAAI,CAAC;wBACV,IAAI,EAAE,GAAG,CAAC,IAAI;AACd,wBAAA,IAAI,EAAE,MAAM;AACZ,wBAAA,MAAM,EAAE,MAAM;AACd,wBAAA,UAAU,EAAE,CAAC;AACb,wBAAA,CAAC,EAAE,CAAC;AACJ,wBAAA,SAAS,EAAE;AACT,4BAAA,KAAK,EAAE,CAAC;AACR,4BAAA,KAAK,EAAE,UAAU;AAClB,yBAAA;AAED,wBAAA,IAAI,EAAE,YAAY;AACnB,qBAAA,CAAC;gBACJ;AACF,YAAA,CAAC,CAAC;QACJ;;AAGA,QAAA,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,KAAK,KAAI;YACvC,IAAI,IAAI,CAAC,MAAM,CAAC,SAAS,KAAK,QAAQ,IAAI,IAAI,CAAC,MAAM,IAAI,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,MAAM,EAAE;gBACjF,MAAM,SAAS,GAAU,EAAE;AAE3B,gBAAA,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,IAAI,EAAE,EAAE,OAAO,CAAC,CAAC,CAAY,KAAI;oBACjD,SAAS,CAAC,IAAI,CAAC;wBACb,KAAK,EAAE,CAAC,KAAK,EAAE,IAAI,CAAC,mBAAmB,CAAC,CAAC,CAAC,KAAK,CAAC,EAAE,IAAI,CAAC,mBAAmB,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;AAClF,wBAAA,SAAS,EAAE;AACT,4BAAA,KAAK,EAAE,IAAI,CAAC,MAAM,CAAC,UAAU,IAAI,SAAS;AAC3C,yBAAA;AACF,qBAAA,CAAC;AACJ,gBAAA,CAAC,CAAC;AACF,gBAAA,IAAI,SAAS,CAAC,MAAM,EAAE;oBACpB,MAAM,CAAC,IAAI,CAAC;AACV,wBAAA,IAAI,EAAE,OAAO;AACb,wBAAA,IAAI,EAAE,QAAQ;wBACd,UAAU,EAAE,IAAI,CAAC,WAAW,CAAC,KAAK,EAAE,IAAI,CAAC;AACzC,wBAAA,MAAM,EAAE,IAAI;AACZ,wBAAA,CAAC,EAAE,CAAC;AACJ,wBAAA,MAAM,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE;AAC3B,wBAAA,IAAI,EAAE,SAAS;AAChB,qBAAA,CAAC;gBACJ;YACF;YAEA,MAAM,YAAY,GAAU,EAAE;YAC9B,IAAI,IAAI,CAAC,MAAM,CAAC,SAAS,KAAK,QAAQ,IAAI,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE;gBAC1F,MAAM,GAAG,GAAG,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC;AAC5B,gBAAA,MAAM,aAAa,GAAG,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,IAAI,CAC3D,CAAC,GAAG,KAAK,GAAG,CAAC,IAAI,KAAK,GAAG,CAAC,IAAI,CAC/B;gBACD,IAAI,UAAU,GAAG,SAAS;gBAC1B,IAAI,aAAa,EAAE;AACjB,oBAAA,UAAU,GAAG,aAAa,EAAE,KAAK,IAAI,SAAS;gBAChD;gBAEA,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAM,EAAE,CAAS,KAAI;oBACtC,MAAM,CAAC,GACL,KAAK;wBACL,CAAC,CAAC,KAAK,IAAI,IAAI,CAAC,MAAM,CAAC,SAAS,IAAI,GAAG,CAAC;AACxC,wBAAA,CAAC,CAAC,IAAI,IAAI,CAAC,MAAM,CAAC,SAAS,IAAI,GAAG,CAAC,IAAI,CAAC;AAE1C,oBAAA,YAAY,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,mBAAmB,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC;AAC1D,gBAAA,CAAC,CAAC;AACF,gBAAA,IAAI,YAAY,CAAC,MAAM,EAAE;oBACvB,MAAM,CAAC,IAAI,CAAC;wBACV,IAAI,EAAE,GAAG,CAAC,IAAI;AACd,wBAAA,IAAI,EAAE,MAAM;AACZ,wBAAA,MAAM,EAAE,MAAM;AACd,wBAAA,UAAU,EAAE,CAAC;AACb,wBAAA,CAAC,EAAE,CAAC;AACJ,wBAAA,SAAS,EAAE;AACT,4BAAA,KAAK,EAAE,CAAC;AACR,4BAAA,KAAK,EAAE,UAAU;AAClB,yBAAA;AAED,wBAAA,IAAI,EAAE,YAAY;AACnB,qBAAA,CAAC;gBACJ;YACF;YAEA,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,KAAoB,KAAI;AAC3C,gBAAA,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,kBAAkB,EAAE;oBACnC,MAAM,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,KAAK,CAAC,QAAQ,EAAE,IAAI,EAAE,QAAQ,EAAE,UAAU,EAAE,MAAK,EAAE,CAAC,EAAE,IAAI,EAAE,EAAE,EAAE,CAAC;gBACvF;gBACA,KAAK,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,IAAI,KAAI;oBAC3B,MAAM,CAAC,IAAI,CAAC;wBACV,IAAI,EAAE,IAAI,CAAC,IAAI;AACf,wBAAA,IAAI,EAAE,QAAQ;wBACd,UAAU,EAAE,IAAI,CAAC,WAAW,CAAC,KAAK,EAAE,KAAK,CAAC;AAC1C,wBAAA,MAAM,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE;AAC3B,wBAAA,CAAC,EAAE,CAAC;AACJ,wBAAA,IAAI,EAAE;AACJ,4BAAA;AACE,gCAAA,GAAG,IAAI;gCACP,QAAQ,EAAE,KAAK,CAAC,QAAQ;AACxB,gCAAA,KAAK,EAAE;AACL,oCAAA,UAAU,CAAC,OAAO,CAAC,KAAK,CAAC,QAAQ,CAAC;AAClC,oCAAA,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,KAAK,CAAC;AACpC,oCAAA,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,GAAG,CAAC;AACnC,iCAAA;AACD,gCAAA,SAAS,EAAE;oCACT,KAAK,EAAE,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,QAAQ,CAAC,EAAE,IAAI,CAAC,CAAC,GAAG,KAAK,GAAG,CAAC,IAAI,KAAK,IAAI,CAAC,IAAI;AAC9E,0CAAE,KAAK;AACV,iCAAA;gCACD,IAAI,EAAE,IAAI,CAAC,IAAI;AAChB,6BAAA;AACF,yBAAA;AACF,qBAAA,CAAC;AACJ,gBAAA,CAAC,CAAC;AACJ,YAAA,CAAC,CAAC;AACJ,QAAA,CAAC,CAAC;;QAGF,MAAM,QAAQ,GACZ,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,IAAI,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC;QACxF,IAAI,CAAC,WAAW,GAAG;AACjB,YAAA,OAAO,EAAE;AACP,gBAAA,OAAO,EAAE,MAAM;AACf,gBAAA,eAAe,EAAE,aAAa;AAC9B,gBAAA,WAAW,EAAE,CAAC;AACd,gBAAA,OAAO,EAAE,CAAC;AACV,gBAAA,YAAY,EAAE,kBAAkB;AAChC,gBAAA,SAAS,EAAE,CAAC,MAAW,KAAI;AACzB,oBAAA,MAAM,iBAAiB,GAAG,IAAI,CAAC,MAAM,CAAC,iBAAiB;AAEvD,oBAAA,IAAI,iBAAiB,EAAE,MAAM,IAAI,CAAC,iBAAiB,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,EAAE,QAAQ,CAAC;AACjF,wBAAA,OAAO,EAAE;oBAEX,OAAO,IAAI,CAAC,YAAY,CAAC,6BAA6B,CAAC,MAAM,CAAC;gBAChE,CAAC;AACD,gBAAA,GAAG,IAAI,CAAC,MAAM,CAAC,OAAO;AACvB,aAAA;AACD,YAAA,MAAM,EAAE,IAAI,CAAC,WAAW,EAAE;AAE1B,YAAA,IAAI,EAAE;AACJ,gBAAA,IAAI,EAAE,CAAC;AACP,gBAAA,KAAK,EAAE,CAAC;AACR,gBAAA,MAAM,EAAE,CAAC;AACT,gBAAA,GAAG,EAAE,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,MAAM,GAAG,EAAE;AAClD,aAAA;AAED,YAAA,KAAK,EAAE;AACL,gBAAA,IAAI,EAAE,OAAO;AACb,gBAAA,GAAG,EAAE,IAAI,CAAC,MAAM,CAAC;AACf,sBAAE,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC;AAC5D,sBAAE,CAAC;gBACL,GAAG,EAAE,IAAI,CAAC,MAAM,CAAC,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,GAAG,EAAE;AACxF,gBAAA,QAAQ,EAAE;AACR,oBAAA,IAAI,EAAE,KAAK;AACZ,iBAAA;AACD,gBAAA,QAAQ,EAAE;AACR,oBAAA,IAAI,EAAE,KAAK;AACZ,iBAAA;AACD,gBAAA,SAAS,EAAE;AACT,oBAAA,SAAS,EAAE;AACT,wBAAA,KAAK,EAAE,GAAG;AACV,wBAAA,KAAK,EAAE,SAAS;AACjB,qBAAA;AACF,iBAAA;AACD,gBAAA,cAAc,EAAE;AACd,oBAAA,IAAI,EAAE,IAAI;AACV,oBAAA,SAAS,EAAE;AACT,wBAAA,KAAK,EAAE,GAAG;AACV,wBAAA,KAAK,EAAE,SAAS;AACjB,qBAAA;AACF,iBAAA;AACD,gBAAA,SAAS,EAAE,EAAE,WAAW,EAAE,CAAC,EAAE;AAC7B,gBAAA,QAAQ,EAAE,CAAC;;;;AAIX,gBAAA,SAAS,EAAE;AACT,oBAAA,WAAW,EAAE,IAAI;AACjB,oBAAA,SAAS,EAAE,CAAC,GAAW,KAAK,IAAI,CAAC,eAAe,CAAC,GAAG,EAAE,QAAQ,CAAC;AAChE,iBAAA;AACF,aAAA;AAED,YAAA,KAAK,EAAE;AACL,gBAAA;AACE,oBAAA,IAAI,EAAE,UAAU;AAChB,oBAAA,IAAI,EAAE,IAAI,CAAC,MAAM,CAAC,SAAS;AAC3B,oBAAA,QAAQ,EAAE;AACR,wBAAA,IAAI,EAAE,KAAK;AACZ,qBAAA;AACF,iBAAA;AACD,gBAAA;AACE,oBAAA,IAAI,EAAE,OAAO;AACb,oBAAA,GAAG,EAAE,CAAC;AACN,oBAAA,GAAG,EAAE,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,MAAM;AACjC,oBAAA,IAAI,EAAE,KAAK;AACZ,iBAAA;AACF,aAAA;YAED,MAAM;SACP;AAED,QAAA,MAAM,SAAS,GAAG,IAAI,CAAC,cAAc,EAAE;QACvC,IAAI,SAAS,EAAE;YACb,MAAM,CAAC,IAAI,CAAC;AACV,gBAAA,IAAI,EAAE,QAAQ;AACd,gBAAA,MAAM,EAAE,IAAI;AACZ,gBAAA,CAAC,EAAE,EAAE;AACL,gBAAA,IAAI,EAAE,EAAE;AACR,gBAAA,QAAQ,EAAE,SAAS;AACpB,aAAA,CAAC;QACJ;IACF;IAEA,WAAW,GAAA;AACT,QAAA,IAAI,CAAC,aAAa,EAAE,OAAO,EAAE;IAC/B;wGA1hBW,oBAAoB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAA,MAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,iBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAApB,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,oBAAoB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,EAAA,MAAA,EAAA,QAAA,EAAA,KAAA,EAAA,OAAA,EAAA,MAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,oBAAA,EAAA,EAAA,OAAA,EAAA,EAAA,gBAAA,EAAA,kBAAA,EAAA,UAAA,EAAA,YAAA,EAAA,EAAA,IAAA,EAAA,EAAA,SAAA,EAAA,EAAA,gBAAA,EAAA,aAAA,EAAA,EAAA,EAAA,SAAA,EAHpB,CAAC,kBAAkB,CAAC,EAAE,OAAO,EAAE,CAAC,CAAC,EAAA,aAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EC/B9C,4YAcA,EAAA,MAAA,EAAA,CAAA,4CAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EDcY,mBAAmB,8/BAAE,cAAc,EAAA,QAAA,EAAA,sBAAA,EAAA,MAAA,EAAA,CAAA,cAAA,EAAA,aAAA,CAAA,EAAA,OAAA,EAAA,CAAA,kBAAA,CAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA;;4FAMlC,oBAAoB,EAAA,UAAA,EAAA,CAAA;kBARhC,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,kBAAkB,WACnB,CAAC,mBAAmB,EAAE,cAAc,CAAC,aAGnC,CAAC,kBAAkB,CAAC,EAAE,OAAO,EAAE,CAAC,CAAC,EAAA,eAAA,EAC3B,uBAAuB,CAAC,MAAM,EAAA,QAAA,EAAA,4YAAA,EAAA,MAAA,EAAA,CAAA,4CAAA,CAAA,EAAA;;sBAG9C;;sBACA;;sBACA;;sBACA;;sBAEA;;sBACA;;sBAqCA,YAAY;uBAAC,gBAAgB;;;AE7DhC,OAAO,CAAC,GAAG,CAAC,CAACG,aAAiB,EAAE,gBAAgB,EAAE,cAAc,EAAE,cAAc,CAAC,CAAC;MAQrE,WAAW,CAAA;AAUF,IAAA,YAAA;AATX,IAAA,MAAM;AACN,IAAA,KAAK;IACL,MAAM,GAAa,EAAE;AAEpB,IAAA,UAAU,GAAG,IAAI,YAAY,EAGnC;AAEJ,IAAA,WAAA,CAAoB,YAAoB,EAAA;QAApB,IAAA,CAAA,YAAY,GAAZ,YAAY;IAAW;IAE3C,WAAW,GAAsB,EAAE;AAC3B,IAAA,aAAa;;AAIrB,IAAA,WAAW,CAAC,OAAsB,EAAA;QAChC,IAAI,CAAC,IAAI,CAAC,MAAM;YAAE;QAElB,IAAI,OAAO,CAAC,OAAO,CAAC,IAAI,IAAI,CAAC,aAAa,EAAE;AAC1C,YAAA,IAAI,CAAC,aAAa,CAAC,OAAO,EAAE;QAC9B;QAEA,IAAI,CAAC,WAAW,EAAE;IACpB;;IAIQ,WAAW,GAAA;QACjB,IAAI,CAAC,WAAW,GAAG;AACjB,YAAA,eAAe,EAAE,IAAI,CAAC,MAAM,EAAE,eAAe,IAAI,aAAa;YAC9D,KAAK,EAAE,IAAI,CAAC,MAAM,CAAC,MAAM,IAAI,IAAI,CAAC,YAAY,CAAC,aAAa;AAC5D,YAAA,KAAK,EAAE;AACL,gBAAA,IAAI,EAAE,IAAI,CAAC,MAAM,CAAC,SAAS,IAAI,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK;AAClD,gBAAA,IAAI,EAAE,IAAI,CAAC,MAAM,CAAC,KAAK;AACvB,gBAAA,IAAI,EAAE,QAAQ;AACf,aAAA;AAED,YAAA,OAAO,EAAE;AACP,gBAAA,IAAI,EAAE,IAAI,CAAC,MAAM,CAAC,WAAW;AAC7B,gBAAA,OAAO,EAAE,MAAM;AACf,gBAAA,SAAS,EAAE,WAAW;gBACtB,eAAe,EAAE,aAAa;AAC9B,gBAAA,WAAW,EAAE,CAAC;gBACd,YAAY,EAAE,kBAAkB;gBAChC,SAAS,EAAE,CAAC,MAAW,KACrB,IAAI,CAAC,MAAM,CAAC;sBACR,IAAI,CAAC,MAAM,CAAC,gBAAgB,CAAC,MAAM;sBACnC,IAAI,CAAC,YAAY,CAAC,sBAAsB,CAAC,MAAM,CAAC;AACvD,aAAA;AACD,YAAA,MAAM,EAAE;AACN,gBAAA;AACE,oBAAA,IAAI,EAAE,EAAE;AACR,oBAAA,KAAK,EAAE,EAAE;AACT,oBAAA,GAAG,EAAE,EAAE;AACP,oBAAA,MAAM,EAAE,EAAE;AACV,oBAAA,GAAG,IAAI,CAAC,MAAM,CAAC,YAAY;AAC3B,oBAAA,IAAI,EAAE,QAAQ;AACd,oBAAA,IAAI,EAAE,CAAC,IAAI,CAAC,MAAM,EAAE,KAAK,IAAI,EAAE,EAAE,GAAG,CAAC,CAAC,CAAC,MAAM;AAC3C,wBAAA,GAAG,CAAC;wBACJ,IAAI,EAAE,CAAC,CAAC,IAAI;AACZ,wBAAA,SAAS,EAAE;4BACT,KAAK,EAAE,CAAC,CAAC,KAAK;AACf,yBAAA;AACF,qBAAA,CAAC,CAAC;AAEH,oBAAA,KAAK,EAAE,IAAI,CAAC,MAAM,EAAE,KAAK,IAAI,EAAE;AAC/B,oBAAA,MAAM,EAAE;AACN,wBAAA;AACE,4BAAA,KAAK,EAAE,IAAI,CAAC,YAAY,CAAC,eAAe,CAAC,IAAI,CAAC,MAAM,EAAE,KAAK,EAAE,IAAI,CAAC,MAAM,EAAE,KAAK,CAAC;AAChF,4BAAA,KAAK,EAAE,EAAE,QAAQ,EAAE,MAAM,EAAE;AAC5B,yBAAA;AACF,qBAAA;AACD,oBAAA,SAAS,EAAE;AACT,wBAAA,KAAK,EAAE,UAAU;AACjB,wBAAA,SAAS,EAAE,IAAI,CAAC,MAAM,CAAC,aAAa,IAAI,GAAG;AAC3C,wBAAA,OAAO,EAAE,GAAG;AACb,qBAAA;AAED,oBAAA,KAAK,EAAE;AACL,wBAAA,KAAK,EAAE,MAAM;AACd,qBAAA;AACF,iBAAA;AACF,aAAA;SACF;IACH;;AAIA,IAAA,WAAW,CAAC,EAAmB,EAAA;AAC7B,QAAA,IAAI,CAAC,aAAa,GAAG,EAAE;QACvB,IAAI,CAAC,WAAW,EAAE;QAClB,IAAI,CAAC,UAAU,EAAE;IACnB;;IAIQ,UAAU,GAAA;QAChB,IAAI,CAAC,IAAI,CAAC,aAAa;YAAE;AAEzB,QAAA,IAAI,CAAC,aAAa,CAAC,GAAG,EAAE;QAExB,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,SAAS,KAAI;YAChC,IAAI,CAAC,aAAa,CAAC,EAAE,CAAC,SAAS,EAAE,CAAC,MAAW,KAAI;gBAC/C,IAAI,SAAS,KAAK,aAAa,IAAI,MAAM,CAAC,KAAK,EAAE,KAAK,EAAE;AACtD,oBAAA,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,cAAc,EAAE;gBACrC;AAEA,gBAAA,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC;AACnB,oBAAA,IAAI,EAAE,SAAS;AACf,oBAAA,IAAI,EAAE,MAAM;AACb,iBAAA,CAAC;AACJ,YAAA,CAAC,CAAC;AACJ,QAAA,CAAC,CAAC;IACJ;;IAIA,WAAW,GAAA;AACT,QAAA,IAAI,IAAI,CAAC,aAAa,EAAE;AACtB,YAAA,IAAI,CAAC,aAAa,CAAC,GAAG,EAAE;AACxB,YAAA,IAAI,CAAC,aAAa,CAAC,OAAO,EAAE;QAC9B;IACF;wGA5HW,WAAW,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAH,MAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAAX,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,WAAW,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,EAAA,MAAA,EAAA,QAAA,EAAA,KAAA,EAAA,OAAA,EAAA,MAAA,EAAA,QAAA,EAAA,EAAA,OAAA,EAAA,EAAA,UAAA,EAAA,YAAA,EAAA,EAAA,SAAA,EAJX,CAAC,kBAAkB,CAAC,EAAE,OAAO,EAAE,CAAC,CAAC,EAAA,aAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,ECrB9C,kJAMO,EAAA,MAAA,EAAA,CAAA,4CAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EDcK,mBAAmB,EAAA,QAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,OAAA,EAAA,UAAA,EAAA,OAAA,EAAA,YAAA,EAAA,SAAA,EAAA,aAAA,EAAA,aAAA,CAAA,EAAA,OAAA,EAAA,CAAA,WAAA,EAAA,cAAA,EAAA,YAAA,EAAA,eAAA,EAAA,gBAAA,EAAA,gBAAA,EAAA,cAAA,EAAA,gBAAA,EAAA,eAAA,EAAA,gBAAA,EAAA,kBAAA,EAAA,gBAAA,EAAA,eAAA,EAAA,oBAAA,EAAA,0BAAA,EAAA,qBAAA,EAAA,uBAAA,EAAA,4BAAA,EAAA,gCAAA,EAAA,mBAAA,EAAA,eAAA,EAAA,wBAAA,EAAA,gBAAA,EAAA,cAAA,EAAA,eAAA,EAAA,sBAAA,EAAA,0BAAA,EAAA,cAAA,EAAA,sBAAA,EAAA,uBAAA,EAAA,uBAAA,EAAA,kBAAA,EAAA,oBAAA,EAAA,uBAAA,EAAA,YAAA,EAAA,eAAA,EAAA,oBAAA,EAAA,wBAAA,EAAA,eAAA,EAAA,eAAA,CAAA,EAAA,QAAA,EAAA,CAAA,SAAA,CAAA,EAAA,CAAA,EAAA,CAAA;;4FAKlB,WAAW,EAAA,UAAA,EAAA,CAAA;kBAPvB,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,kBAAkB,EAAA,OAAA,EACnB,CAAC,mBAAmB,CAAC,EAAA,SAAA,EACnB,CAAC,kBAAkB,CAAC,EAAE,OAAO,EAAE,CAAC,CAAC,EAAA,QAAA,EAAA,kJAAA,EAAA,MAAA,EAAA,CAAA,4CAAA,CAAA,EAAA;;sBAK3C;;sBACA;;sBACA;;sBAEA;;;AENH,OAAO,CAAC,GAAG,CAAC;IACV,YAAY;IACZ,aAAa;IACb,gBAAgB;IAChB,cAAc;IACd,kBAAkB;IAClB,cAAc;AACf,CAAA,CAAC;MAWW,OAAO,CAAA;AAcE,IAAA,YAAA;AAbX,IAAA,MAAM;AACN,IAAA,KAAK;IACL,MAAM,GAAa,EAAE;AAEpB,IAAA,UAAU,GAAG,IAAI,YAAY,EAGnC;IAEJ,WAAW,GAAsB,EAAE;IACnC,WAAW,GAAuC,EAAE;AAC5C,IAAA,aAAa;AAErB,IAAA,WAAA,CAAoB,YAAoB,EAAA;QAApB,IAAA,CAAA,YAAY,GAAZ,YAAY;IAAW;AAE3C,IAAA,WAAW,CAAC,OAAsB,EAAA;QAChC,IAAI,CAAC,IAAI,CAAC,MAAM;YAAE;QAElB,IAAI,OAAO,CAAC,OAAO,CAAC,IAAI,IAAI,CAAC,aAAa,EAAE;AAC1C,YAAA,IAAI,CAAC,aAAa,CAAC,OAAO,EAAE;AAC5B,YAAA,IAAI,CAAC,aAAa,GAAG,SAAS;QAChC;QAEA,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,MAAM,CAAC;QAChD,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,MAAM,CAAC;AAErD,QAAA,IAAI,IAAI,CAAC,aAAa,EAAE;YACtB,IAAI,CAAC,aAAa,CAAC,SAAS,CAAC,IAAI,CAAC,WAAW,EAAE,IAAI,CAAC;YACpD,IAAI,CAAC,UAAU,EAAE;QACnB;IACF;AAEQ,IAAA,WAAW,CAAC,MAA0B,EAAA;AAC5C,QAAA,MAAM,IAAI,GAAG,MAAM,CAAC,IAAI,IAAI,EAAE;AAC9B,QAAA,MAAM,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,KAAK,KAAK,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;QACpF,MAAM,GAAG,GAAG,MAAM,CAAC,GAAG,KAAK,MAAM,CAAC,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC;QACnE,MAAM,GAAG,GAAG,MAAM,CAAC,GAAG,KAAK,MAAM,CAAC,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,MAAM,CAAC,GAAG,GAAG,CAAC;AAErE,QAAA,MAAM,UAAU,GAAG;YACjB,IAAI,EAAE,MAAM,CAAC,UAAU,IAAI,MAAM,CAAC,KAAK,IAAI,SAAS;AACpD,YAAA,IAAI,EAAE,SAAS;YACf,IAAI;AACJ,YAAA,KAAK,EAAE;AACL,gBAAA,IAAI,EAAE,MAAM,CAAC,SAAS,IAAI,KAAK;AAC/B,gBAAA,KAAK,EAAE,MAAM,CAAC,UAAU,IAAI,SAAS;gBACrC,SAAS,EAAE,MAAM,CAAC,cAAc;AACjC,aAAA;AACD,YAAA,QAAQ,EAAE;AACR,gBAAA,SAAS,EAAE;AACT,oBAAA,UAAU,EAAE,EAAE;AACd,oBAAA,WAAW,EAAE,qBAAqB;AACnC,iBAAA;AACF,aAAA;SACF;QAED,OAAO;AACL,YAAA,eAAe,EAAE,MAAM,CAAC,eAAe,IAAI,aAAa;AAExD,YAAA,KAAK,EAAE;gBACL,IAAI,EAAE,MAAM,CAAC,SAAS,IAAI,CAAC,CAAC,MAAM,CAAC,KAAK;gBACxC,IAAI,EAAE,MAAM,CAAC,KAAK;AAClB,gBAAA,IAAI,EAAE,MAAM,CAAC,aAAa,IAAI,QAAQ;AACvC,aAAA;AAED,YAAA,OAAO,EAAE;AACP,gBAAA,IAAI,EAAE,MAAM,CAAC,WAAW,IAAI,IAAI;AAChC,gBAAA,OAAO,EAAE,MAAM;AACf,gBAAA,eAAe,EAAE,aAAa;AAC9B,gBAAA,WAAW,EAAE,CAAC;AACd,gBAAA,OAAO,EAAE,CAAC;AACV,gBAAA,OAAO,EAAE,IAAI;gBACb,GAAG,MAAM,CAAC,OAAO;gBACjB,SAAS,EACP,MAAM,CAAC,gBAAgB;AACvB,qBAAC,CAAC,MAAW,KAAK,IAAI,CAAC,YAAY,CAAC,uBAAuB,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;AAC/E,aAAA;AAED,YAAA,IAAI,EAAE;AACJ,gBAAA,IAAI,EAAE,MAAM,CAAC,IAAI,EAAE,IAAI,IAAI,IAAI;AAC/B,gBAAA,KAAK,EAAE,MAAM,CAAC,IAAI,EAAE,KAAK,IAAI,IAAI;AACjC,gBAAA,GAAG,EAAE,MAAM,CAAC,IAAI,EAAE,GAAG,IAAI,KAAK;AAC9B,gBAAA,MAAM,EAAE,MAAM,CAAC,IAAI,EAAE,MAAM,IAAI,IAAI;AACnC,gBAAA,MAAM,EAAE,MAAM,CAAC,IAAI,EAAE,MAAM;AAC3B,gBAAA,YAAY,EAAE,MAAM,CAAC,IAAI,EAAE,YAAY,IAAI,IAAI;AAChD,aAAA;AAED,YAAA,KAAK,EAAE;AACL,gBAAA,IAAI,EAAE,UAAU;AAChB,gBAAA,IAAI,EAAE,MAAM,CAAC,SAAS,IAAI,EAAE;AAC5B,gBAAA,SAAS,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE;gBACzB,GAAG,MAAM,CAAC,KAAK;AAChB,aAAA;AAED,YAAA,KAAK,EAAE;AACL,gBAAA,IAAI,EAAE,UAAU;AAChB,gBAAA,IAAI,EAAE,MAAM,CAAC,SAAS,IAAI,EAAE;AAC5B,gBAAA,SAAS,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE;gBACzB,GAAG,MAAM,CAAC,KAAK;AAChB,aAAA;AAED,YAAA,SAAS,EAAE;AACT,gBAAA,IAAI,EAAE,MAAM,CAAC,SAAS,EAAE,IAAI,IAAI,KAAK;gBACrC,GAAG;gBACH,GAAG;AACH,gBAAA,UAAU,EAAE,IAAI;AAChB,gBAAA,MAAM,EAAE,YAAY;AACpB,gBAAA,IAAI,EAAE,QAAQ;AACd,gBAAA,MAAM,EAAE,CAAC;AACT,gBAAA,OAAO,EAAE;oBACP,KAAK,EAAE,MAAM,CAAC,MAAM,IAAI,CAAC,SAAS,EAAE,SAAS,EAAE,SAAS,CAAC;AAC1D,iBAAA;gBACD,GAAG,MAAM,CAAC,SAAS;AACpB,aAAA;YAED,MAAM,EAAE,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,MAAM,EAAE,UAAU,CAAC;SACpD;IACH;AAEQ,IAAA,gBAAgB,CAAC,MAA0B,EAAA;AACjD,QAAA,MAAM,MAAM,GAAG,MAAM,CAAC,SAAS,EAAE,MAAM;QAEvC,IAAI,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,MAAM,CAAC,MAAM,EAAE;YAC1C,OAAO,MAAM,CAAC,GAAG,CAAC,CAAC,KAAU,MAAM;AACjC,gBAAA,KAAK,EAAE,KAAK,CAAC,KAAK,IAAI,GAAG,KAAK,CAAC,GAAG,IAAI,KAAK,CAAC,KAAK,IAAI,KAAK,CAAC,GAAG,CAAA,CAAA,CAAG;gBACjE,KAAK,EAAE,KAAK,CAAC,KAAK,IAAI,KAAK,CAAC,SAAS,EAAE,KAAK,IAAI,SAAS;AAC1D,aAAA,CAAC,CAAC;QACL;AAEA,QAAA,MAAM,MAAM,GAAG,MAAM,CAAC,MAAM,IAAI,CAAC,SAAS,EAAE,SAAS,EAAE,SAAS,CAAC;AACjE,QAAA,MAAM,IAAI,GAAG,MAAM,CAAC,MAAM,GAAG,GAAG,GAAG,MAAM,CAAC,MAAM,GAAG,GAAG;QAEtD,OAAO,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,KAAK,MAAM;AACnC,YAAA,KAAK,EAAE,CAAA,EAAG,IAAI,CAAC,KAAK,CAAC,IAAI,IAAI,KAAK,GAAG,CAAC,CAAC,CAAC,CAAA,CAAA,CAAG;YAC3C,KAAK;AACN,SAAA,CAAC,CAAC;IACL;IAEQ,WAAW,CAAC,YAA0C,EAAE,UAAe,EAAA;AAC7E,QAAA,IAAI,KAAK,CAAC,OAAO,CAAC,YAAY,CAAC,EAAE;YAC/B,OAAO,YAAY,CAAC,GAAG,CAAC,CAAC,MAAM,MAAM;AACnC,gBAAA,GAAG,UAAU;AACb,gBAAA,GAAG,MAAM;AACV,aAAA,CAAC,CAAC;QACL;QAEA,IAAI,YAAY,EAAE;YAChB,OAAO;AACL,gBAAA;AACE,oBAAA,GAAG,UAAU;AACb,oBAAA,GAAG,YAAY;AAChB,iBAAA;aACF;QACH;QAEA,OAAO,CAAC,UAAU,CAAC;IACrB;AAEA,IAAA,WAAW,CAAC,EAAW,EAAA;AACrB,QAAA,IAAI,CAAC,aAAa,GAAG,EAAE;QACvB,IAAI,CAAC,UAAU,EAAE;IACnB;IAEQ,UAAU,GAAA;QAChB,IAAI,CAAC,IAAI,CAAC,aAAa;YAAE;AAEzB,QAAA,MAAM,aAAa,GAAG,IAAI,CAAC,aAAa;QAExC,aAAa,CAAC,GAAG,EAAE;QAEnB,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,SAAS,KAAI;YAChC,aAAa,CAAC,EAAE,CAAC,SAAS,EAAE,CAAC,MAAW,KAAI;gBAC1C,IAAI,SAAS,KAAK,aAAa,IAAI,MAAM,CAAC,KAAK,EAAE,KAAK,EAAE;AACtD,oBAAA,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,cAAc,EAAE;gBACrC;AAEA,gBAAA,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC;AACnB,oBAAA,IAAI,EAAE,SAAS;AACf,oBAAA,IAAI,EAAE,MAAM;AACb,iBAAA,CAAC;AACJ,YAAA,CAAC,CAAC;AACJ,QAAA,CAAC,CAAC;IACJ;IAEA,WAAW,GAAA;AACT,QAAA,IAAI,IAAI,CAAC,aAAa,EAAE;AACtB,YAAA,IAAI,CAAC,aAAa,CAAC,GAAG,EAAE;AACxB,YAAA,IAAI,CAAC,aAAa,CAAC,OAAO,EAAE;QAC9B;IACF;wGA7LW,OAAO,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAA,MAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAAP,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,OAAO,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,aAAA,EAAA,MAAA,EAAA,EAAA,MAAA,EAAA,QAAA,EAAA,KAAA,EAAA,OAAA,EAAA,MAAA,EAAA,QAAA,EAAA,EAAA,OAAA,EAAA,EAAA,UAAA,EAAA,YAAA,EAAA,EAAA,SAAA,EALP,CAAC,kBAAkB,CAAC,EAAE,OAAO,EAAE,CAAC,CAAC,EAAA,aAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,ECrC9C,2eAkBA,EAAA,MAAA,EAAA,CAAA,+mBAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EDkBY,mBAAmB,EAAA,QAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,OAAA,EAAA,UAAA,EAAA,OAAA,EAAA,YAAA,EAAA,SAAA,EAAA,aAAA,EAAA,aAAA,CAAA,EAAA,OAAA,EAAA,CAAA,WAAA,EAAA,cAAA,EAAA,YAAA,EAAA,eAAA,EAAA,gBAAA,EAAA,gBAAA,EAAA,cAAA,EAAA,gBAAA,EAAA,eAAA,EAAA,gBAAA,EAAA,kBAAA,EAAA,gBAAA,EAAA,eAAA,EAAA,oBAAA,EAAA,0BAAA,EAAA,qBAAA,EAAA,uBAAA,EAAA,4BAAA,EAAA,gCAAA,EAAA,mBAAA,EAAA,eAAA,EAAA,wBAAA,EAAA,gBAAA,EAAA,cAAA,EAAA,eAAA,EAAA,sBAAA,EAAA,0BAAA,EAAA,cAAA,EAAA,sBAAA,EAAA,uBAAA,EAAA,uBAAA,EAAA,kBAAA,EAAA,oBAAA,EAAA,uBAAA,EAAA,YAAA,EAAA,eAAA,EAAA,oBAAA,EAAA,wBAAA,EAAA,eAAA,EAAA,eAAA,CAAA,EAAA,QAAA,EAAA,CAAA,SAAA,CAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA;;4FAMlB,OAAO,EAAA,UAAA,EAAA,CAAA;kBATnB,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,aAAa,cACX,IAAI,EAAA,OAAA,EACP,CAAC,mBAAmB,CAAC,aACnB,CAAC,kBAAkB,CAAC,EAAE,OAAO,EAAE,CAAC,CAAC,EAAA,eAAA,EAG3B,uBAAuB,CAAC,MAAM,EAAA,QAAA,EAAA,2eAAA,EAAA,MAAA,EAAA,CAAA,+mBAAA,CAAA,EAAA;;sBAG9C;;sBACA;;sBACA;;sBAEA;;;AErBH,OAAO,CAAC,GAAG,CAAC;IACV,YAAY;IACZ,aAAa;IACb,gBAAgB;IAChB,eAAe;IACf,cAAc;IACd,cAAc;AACf,CAAA,CAAC;MAUW,gBAAgB,CAAA;AAWP,IAAA,YAAA;AAVX,IAAA,MAAM;AACN,IAAA,KAAK;AACJ,IAAA,UAAU,GAAG,IAAI,YAAY,EAGnC;AACM,IAAA,WAAW,GAAG,IAAI,YAAY,EAAoB;IAC5D,WAAW,GAAsB,EAAE;AACnC,IAAA,aAAa;AAEb,IAAA,WAAA,CAAoB,YAAoB,EAAA;QAApB,IAAA,CAAA,YAAY,GAAZ,YAAY;IAAW;AAC3C,IAAA,IAAI,aAAa,GAAA;AACf,QAAA,OAAO,IAAI,CAAC,YAAY,CAAC,aAAa;IACxC;AACA,IAAA,WAAW,CAAC,OAAsB,EAAA;QAChC,IAAI,CAAC,IAAI,CAAC,MAAM;YAAE;QAElB,IAAI,OAAO,CAAC,OAAO,CAAC,IAAI,IAAI,CAAC,aAAa,EAAE;AAC1C,YAAA,IAAI,CAAC,aAAa,CAAC,OAAO,EAAE;QAC9B;QAEA,IAAI,CAAC,WAAW,EAAE;IACpB;IACQ,WAAW,GAAA;AACjB,QAAA,MAAM,QAAQ,GAAG,IAAI,CAAC,kBAAkB,EAAE;AAC1C,QAAA,MAAM,YAAY,GAAG,IAAI,CAAC,MAAM,EAAE,YAAY,EAAE,aAAa,KAAK,WAAW,GAAG,QAAQ,GAAG,IAAI;QAE/F,IAAI,CAAC,WAAW,GAAG;AACjB,YAAA,eAAe,EAAE,IAAI,CAAC,MAAM,EAAE,eAAe,IAAI,aAAa;YAC9D,KAAK,EAAE,IAAI,CAAC,MAAM,EAAE,MAAM,IAAI,IAAI,CAAC,YAAY,CAAC,aAAa;AAC7D,YAAA,KAAK,EAAE;AACL,gBAAA,IAAI,EAAE,IAAI,CAAC,MAAM,EAAE,SAAS,IAAI,CAAC,CAAC,IAAI,CAAC,MAAM,EAAE,KAAK;AACpD,gBAAA,IAAI,EAAE,IAAI,CAAC,MAAM,EAAE,KAAK;AACxB,gBAAA,IAAI,EAAE,IAAI,CAAC,MAAM,EAAE,aAAa,IAAI,QAAQ;AAC7C,aAAA;AACD,YAAA,OAAO,EAAE;AACP,gBAAA,IAAI,EAAE,IAAI,CAAC,MAAM,EAAE,WAAW;AAC9B,gBAAA,OAAO,EAAE,MAAM;AACf,gBAAA,eAAe,EAAE,aAAa;AAC9B,gBAAA,WAAW,EAAE,CAAC;AACd,gBAAA,OAAO,EAAE,CAAC;AACV,gBAAA,OAAO,EAAE,IAAI;gBACb,SAAS,EAAE,CAAC,MAAW,KACrB,IAAI,CAAC,MAAM,EAAE;sBACT,IAAI,CAAC,MAAM,EAAE,gBAAgB,CAAC,MAAM;sBACpC,IAAI,CAAC,YAAY,CAAC,uBAAuB,CACvC,MAAM,EACN,IAAI,CAAC,MAAM,EAAE,SAAS,EACtB,IAAI,CAAC,MAAM,EAAE,SAAS,CACvB;AACR,aAAA;AACD,YAAA,MAAM,EAAE;AACN,gBAAA,IAAI,EAAE,KAAK;gBACX,IAAI,EAAE,CAAC,IAAI,CAAC,MAAM,EAAE,MAAM,IAAI,EAAE,EAAE,GAAG,CAAC,CAAC,MAAM,KAAK,MAAM,CAAC,IAAI,CAAC;gBAC9D,QAAQ;gBACR,YAAY;AACb,aAAA;AAED,YAAA,IAAI,EAAE;AACJ,gBAAA,IAAI,EAAE,IAAI,CAAC,MAAM,EAAE,QAAQ,IAAI,CAAC;AAChC,gBAAA,KAAK,EAAE,IAAI,CAAC,MAAM,EAAE,SAAS,IAAI,CAAC;AAClC,gBAAA,MAAM,EAAE,IAAI,CAAC,MAAM,EAAE,UAAU,IAAI,CAAC;AACpC,gBAAA,GAAG,EAAE,IAAI,CAAC,MAAM,EAAE,OAAO,IAAI,CAAC;AAC/B,aAAA;AAED,YAAA,KAAK,EAAE;AACL,gBAAA,IAAI,EAAE,OAAO;AACb,gBAAA,QAAQ,EAAE;AACR,oBAAA,IAAI,EAAE,IAAI,CAAC,MAAM,EAAE,aAAa,IAAI,IAAI;AACxC,oBAAA,SAAS,EAAE;AACT,wBAAA,KAAK,EAAE,SAAS;AAChB,wBAAA,KAAK,EAAE,CAAC;AACT,qBAAA;AACF,iBAAA;AACD,gBAAA,QAAQ,EAAE;AACR,oBAAA,IAAI,EAAE,KAAK;AACZ,iBAAA;AACD,gBAAA,SAAS,EAAE;AACT,oBAAA,KAAK,EAAE,SAAS;AAChB,oBAAA,QAAQ,EAAE,EAAE;AACb,iBAAA;AACD,gBAAA,IAAI,EAAE,IAAI,CAAC,MAAM,EAAE,SAAS,IAAI,EAAE;AAClC,gBAAA,YAAY,EAAE,QAAQ;AACtB,gBAAA,aAAa,EAAE;AACb,oBAAA,KAAK,EAAE,SAAS;AAChB,oBAAA,QAAQ,EAAE,EAAE;AACZ,oBAAA,UAAU,EAAE,GAAG;AAChB,iBAAA;AAED,gBAAA,SAAS,EAAE;AACT,oBAAA,IAAI,EAAE,IAAI;AACV,oBAAA,SAAS,EAAE;AACT,wBAAA,IAAI,EAAE,QAAQ;AACd,wBAAA,KAAK,EAAE,SAAS;AAChB,wBAAA,KAAK,EAAE,CAAC;AACT,qBAAA;AACF,iBAAA;AACD,gBAAA,GAAG,IAAI,CAAC,MAAM,EAAE,KAAK;AACtB,aAAA;AAED,YAAA,KAAK,EAAE;AACL,gBAAA;AACE,oBAAA,IAAI,EAAE,OAAO;AACb,oBAAA,IAAI,EAAE,IAAI,CAAC,MAAM,EAAE,SAAS,IAAI,EAAE;AAClC,oBAAA,YAAY,EAAE,QAAQ;AACtB,oBAAA,aAAa,EAAE;AACb,wBAAA,KAAK,EAAE,SAAS;AAChB,wBAAA,QAAQ,EAAE,EAAE;AACZ,wBAAA,UAAU,EAAE,GAAG;AAChB,qBAAA;AACD,oBAAA,QAAQ,EAAE;AACR,wBAAA,IAAI,EAAE,IAAI,CAAC,MAAM,EAAE,aAAa,IAAI,IAAI;AACxC,wBAAA,SAAS,EAAE;AACT,4BAAA,KAAK,EAAE,SAAS;AAChB,4BAAA,KAAK,EAAE,CAAC;AACT,yBAAA;AACF,qBAAA;AAED,oBAAA,QAAQ,EAAE;AACR,wBAAA,IAAI,EAAE,KAAK;AACZ,qBAAA;AACD,oBAAA,SAAS,EAAE;AACT,wBAAA,KAAK,EAAE,SAAS;AAChB,wBAAA,QAAQ,EAAE,EAAE;AACZ,wBAAA,SAAS,EAAE,CAAC,KAAa,KAAI;AAC3B,4BAAA,IAAI,KAAK,KAAK,CAAC,EAAE;AACf,gCAAA,OAAO,GAAG;4BACZ;4BAEA,MAAM,QAAQ,GAAG,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC;;AAGhC,4BAAA,IAAI,QAAQ,IAAI,qBAAqB,EAAE;AACrC,gCAAA,OAAO,CAAA,EAAG,CAAC,CAAC,KAAK,GAAG,qBAAqB,EAAE,OAAO,CAAC,CAAC,CAAC,GAAG;4BAC1D;;AAGA,4BAAA,IAAI,QAAQ,IAAI,iBAAiB,EAAE;AACjC,gCAAA,OAAO,CAAA,EAAG,CAAC,CAAC,KAAK,GAAG,iBAAiB,EAAE,OAAO,CAAC,CAAC,CAAC,GAAG;4BACtD;;AAGA,4BAAA,IAAI,QAAQ,IAAI,aAAa,EAAE;AAC7B,gCAAA,OAAO,CAAA,EAAG,CAAC,CAAC,KAAK,GAAG,aAAa,EAAE,OAAO,CAAC,CAAC,CAAC,GAAG;4BAClD;;AAGA,4BAAA,IAAI,QAAQ,IAAI,SAAS,EAAE;AACzB,gCAAA,OAAO,CAAA,EAAG,CAAC,CAAC,KAAK,GAAG,SAAS,EAAE,OAAO,CAAC,CAAC,CAAC,GAAG;4BAC9C;;AAGA,4BAAA,IAAI,QAAQ,IAAI,KAAK,EAAE;AACrB,gCAAA,OAAO,CAAA,EAAG,CAAC,CAAC,KAAK,GAAG,KAAK,EAAE,OAAO,CAAC,CAAC,CAAC,GAAG;4BAC1C;;AAGA,4BAAA,IAAI,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,EAAE;AAC3B,gCAAA,OAAO,KAAK,CAAC,QAAQ,EAAE;4BACzB;AAEA,4BAAA,OAAO,KAAK;wBACd,CAAC;AACF,qBAAA;AACD,oBAAA,SAAS,EAAE;AACT,wBAAA,IAAI,EAAE,IAAI;AACV,wBAAA,SAAS,EAAE;AACT,4BAAA,IAAI,EAAE,QAAQ;AACd,4BAAA,KAAK,EAAE,SAAS;AAChB,4BAAA,KAAK,EAAE,CAAC;AACT,yBAAA;AACF,qBAAA;AACD,oBAAA,GAAG,IAAI,CAAC,MAAM,EAAE,KAAK;AACtB,iBAAA;AACF,aAAA;AAED,YAAA,MAAM,EAAE,CAAC,IAAI,CAAC,MAAM,EAAE,MAAM,IAAI,EAAE,EAAE,GAAG,CAAC,CAAC,CAAC,KAAI;AAC5C,gBAAA,OAAO,EAAE,UAAU,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE;AAClD,YAAA,CAAC,CAAC;SACH;IACH;AACA,IAAA,IAAI,kBAAkB,GAAA;AACpB,QAAA,OAAO,IAAI,CAAC,YAAY,IAAI,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,YAAY,EAAE,QAAQ;IAClE;AAEA,IAAA,IAAI,mBAAmB,GAAA;QACrB,OAAO,IAAI,CAAC,YAAY,IAAI,IAAI,CAAC,MAAM,CAAC,YAAY,EAAE,QAAQ,IAAI,IAAI,IAAI,IAAI;IAChF;AAEA,IAAA,IAAY,YAAY,GAAA;QACtB,QACE,IAAI,CAAC,MAAM,CAAC,YAAY,EAAE,QAAQ,KAAK,MAAM;YAC7C,IAAI,CAAC,MAAM,CAAC,YAAY,EAAE,QAAQ,KAAK,OAAO;IAElD;AAEA,IAAA,aAAa,CAAC,KAAuB,EAAA;AACnC,QAAA,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,KAAK,CAAC;AAC5B,QAAA,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC;AACnB,YAAA,IAAI,EAAE,CAAA,OAAA,EAAU,KAAK,CAAC,IAAI,CAAA,CAAE;AAC5B,YAAA,IAAI,EAAE,KAAK;AACZ,SAAA,CAAC;IACJ;IAEQ,kBAAkB,GAAA;QACxB,MAAM,MAAM,GAAG,IAAI,CAAC,aAAa,EAAE,SAAS,IAE/B;AAEb,QAAA,OAAO,EAAE,IAAI,MAAM,EAAE,MAAM,GAAG,CAAC,CAAC,EAAE,QAAQ,IAAI,EAAE,CAAC,EAAE;IACrD;AAEA,IAAA,WAAW,CAAC,EAAW,EAAA;AACrB,QAAA,IAAI,CAAC,aAAa,GAAG,EAAE;QACvB,IAAI,CAAC,WAAW,EAAE;IACpB;IAEA,WAAW,GAAA;AACT,QAAA,IAAI,IAAI,CAAC,aAAa,EAAE;AACtB,YAAA,IAAI,CAAC,aAAa,CAAC,GAAG,EAAE;AACxB,YAAA,IAAI,CAAC,aAAa,CAAC,OAAO,EAAE;QAC9B;IACF;wGA/NW,gBAAgB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAA,MAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAAhB,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,gBAAgB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,mBAAA,EAAA,MAAA,EAAA,EAAA,MAAA,EAAA,QAAA,EAAA,KAAA,EAAA,OAAA,EAAA,EAAA,OAAA,EAAA,EAAA,UAAA,EAAA,YAAA,EAAA,WAAA,EAAA,aAAA,EAAA,EAAA,SAAA,EALhB,CAAC,kBAAkB,CAAC,EAAE,OAAO,EAAE,CAAC,CAAC,EAAA,aAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,ECtC9C,0pDA+CA,EAAA,MAAA,EAAA,CAAA,snBAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EDVY,mBAAmB,8/BAAE,oBAAoB,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,QAAA,EAAA,cAAA,CAAA,EAAA,OAAA,EAAA,CAAA,aAAA,CAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA;;4FAMxC,gBAAgB,EAAA,UAAA,EAAA,CAAA;kBAR5B,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,mBAAmB,WACpB,CAAC,mBAAmB,EAAE,oBAAoB,CAAC,aACzC,CAAC,kBAAkB,CAAC,EAAE,OAAO,EAAE,CAAC,CAAC,EAAA,eAAA,EAG3B,uBAAuB,CAAC,MAAM,EAAA,QAAA,EAAA,0pDAAA,EAAA,MAAA,EAAA,CAAA,snBAAA,CAAA,EAAA;;sBAG9C;;sBACA;;sBACA;;sBAIA;;;AEnBH,MAAM,cAAc,GAAG,CAAC,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,CAAC;AAC9E,MAAM,sBAAsB,GAAyB;AACnD,IAAA,KAAK,EAAE,aAAa;AACpB,IAAA,KAAK,EAAE,gBAAgB;AACvB,IAAA,KAAK,EAAE,SAAS;CACjB;AACD,IAAI,8BAA8B,GAAG,CAAC;MAUzB,uBAAuB,CAAA;AACP,IAAA,MAAM;AAEvB,IAAA,UAAU,GAAG,IAAI,YAAY,EAAuB;IAE9D,aAAa,GAAoC,EAAE;IACnD,cAAc,GAAoC,EAAE;IACpD,WAAW,GAAkB,IAAI;IACjC,gBAAgB,GAAG,MAAM;IACzB,kBAAkB,GAAG,EAAE;IACvB,gBAAgB,GAAG,EAAE;AACZ,IAAA,eAAe,GAAG,CAAA,EAAG,MAAM,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,iBAAiB,EAAE,GAAG,CAAC,oBAAoB,8BAA8B,EAAE,UAAU;AAClI,IAAA,cAAc,GAAG,IAAI,GAAG,EAAU;AAE1C,IAAA,IAAI,cAAc,GAAA;AAChB,QAAA,OAAO,IAAI,CAAC,MAAM,CAAC,cAAc,IAAI,QAAQ;IAC/C;AAEA,IAAA,IAAI,YAAY,GAAA;AACd,QAAA,QACE,IAAI,CAAC,MAAM,CAAC,YAAY;aACvB,IAAI,CAAC,cAAc,KAAK,MAAM,IAAI,IAAI,CAAC,cAAc,KAAK,OAAO,GAAG,UAAU,GAAG,YAAY,CAAC;IAEnG;AAEA,IAAA,IAAI,gBAAgB,GAAA;AAClB,QAAA,OAAO,IAAI,CAAC,MAAM,CAAC,gBAAgB,KAAK,KAAK;IAC/C;AAEA,IAAA,IAAI,iBAAiB,GAAA;AACnB,QAAA,OAAO,IAAI,CAAC,MAAM,CAAC,iBAAiB,KAAK,KAAK;IAChD;AAEA,IAAA,IAAI,WAAW,GAAA;AACb,QAAA,IAAI,IAAI,CAAC,MAAM,CAAC,WAAW,KAAK,MAAM;AAAE,YAAA,OAAO,OAAO;AACtD,QAAA,IAAI,IAAI,CAAC,MAAM,CAAC,WAAW,KAAK,OAAO;AAAE,YAAA,OAAO,KAAK;AACrD,QAAA,OAAO,IAAI,CAAC,MAAM,CAAC,WAAW,IAAI,OAAO;IAC3C;AAEA,IAAA,IAAI,gBAAgB,GAAA;AAClB,QAAA,OAAO,IAAI,CAAC,MAAM,CAAC,gBAAgB,IAAI,MAAM;IAC/C;AAEA,IAAA,IAAI,kBAAkB,GAAA;AACpB,QAAA,IAAI,IAAI,CAAC,gBAAgB,KAAK,QAAQ;AAAE,YAAA,OAAO,QAAQ;AACvD,QAAA,IAAI,IAAI,CAAC,gBAAgB,KAAK,OAAO;AAAE,YAAA,OAAO,UAAU;AACxD,QAAA,OAAO,YAAY;IACrB;AAEA,IAAA,IAAI,mBAAmB,GAAA;AACrB,QAAA,IAAI,IAAI,CAAC,MAAM,CAAC,mBAAmB,KAAK,MAAM;AAAE,YAAA,OAAO,OAAO;AAC9D,QAAA,IAAI,IAAI,CAAC,MAAM,CAAC,mBAAmB,KAAK,OAAO;AAAE,YAAA,OAAO,KAAK;AAC7D,QAAA,OAAO,IAAI,CAAC,MAAM,CAAC,mBAAmB,IAAI,eAAe;IAC3D;AAEA,IAAA,IAAI,cAAc,GAAA;AAChB,QAAA,OAAO,IAAI,CAAC,MAAM,CAAC,cAAc,IAAI,IAAI;IAC3C;AAEA,IAAA,IAAI,eAAe,GAAA;QACjB,OAAO,IAAI,CAAC,MAAM,CAAC,eAAe,KAAK,IAAI,CAAC,YAAY,KAAK,UAAU,GAAG,OAAO,GAAG,IAAI,CAAC;IAC3F;IAEA,WAAW,GAAA;QACT,IAAI,CAAC,OAAO,EAAE;IAChB;AAEA,IAAA,QAAQ,CAAC,KAAa,EAAA;AACpB,QAAA,IAAI,CAAC,WAAW,GAAG,KAAK;IAC1B;AAEA,IAAA,UAAU,CAAC,KAAa,EAAA;AACtB,QAAA,IAAI,IAAI,CAAC,WAAW,KAAK,KAAK;AAAE,YAAA,IAAI,CAAC,WAAW,GAAG,IAAI;IACzD;AAEA,IAAA,UAAU,CAAC,IAA0B,EAAA;AACnC,QAAA,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC;AACnB,YAAA,IAAI,EAAE,WAAW;YACjB,IAAI,EAAE,IAAI,CAAC,MAAM;YACjB,KAAK,EAAE,IAAI,CAAC,aAAa;AAC1B,SAAA,CAAC;IACJ;AAEA,IAAA,gBAAgB,CAAC,KAAa,EAAA;QAC5B,OAAO,CAAC,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,KAAK,CAAC;IACxC;AAEA,IAAA,YAAY,CAAC,MAA4B,EAAA;QACvC,IAAI,CAAC,IAAI,CAAC,iBAAiB;YAAE;QAE7B,IAAI,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE;YACzC,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC;QAC1C;aAAO;YACL,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,MAAM,CAAC,KAAK,CAAC;QACvC;AAEA,QAAA,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC;AACnB,YAAA,IAAI,EAAE,cAAc;YACpB,MAAM;YACN,QAAQ,EAAE,IAAI,CAAC,gBAAgB,CAAC,MAAM,CAAC,KAAK,CAAC;AAC9C,SAAA,CAAC;IACJ;AAEA,IAAA,SAAS,CAAC,KAAa,EAAA;AACrB,QAAA,OAAO,GAAG,IAAI,CAAC,eAAe,CAAA,CAAA,EAAI,KAAK,EAAE;IAC3C;IAEA,SAAS,CAAC,CAAS,EAAE,IAA0B,EAAA;QAC7C,OAAO,CAAA,EAAG,IAAI,CAAC,KAAK,CAAC,OAAO,EAAE,CAAA,CAAA,EAAI,IAAI,CAAC,GAAG,CAAC,OAAO,EAAE,CAAA,CAAA,EAAI,IAAI,CAAC,MAAM,CAAC,KAAK,CAAA,CAAA,EAAI,IAAI,CAAC,aAAa,CAAA,CAAE;IACnG;IAEA,WAAW,CAAC,CAAS,EAAE,MAA4B,EAAA;QACjD,OAAO,MAAM,CAAC,KAAK;IACrB;IAEQ,OAAO,GAAA;AACb,QAAA,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM;QAC1B,IAAI,CAAC,MAAM,EAAE;AACX,YAAA,IAAI,CAAC,aAAa,GAAG,EAAE;AACvB,YAAA,IAAI,CAAC,cAAc,GAAG,EAAE;YACxB;QACF;AAEA,QAAA,MAAM,SAAS,GAAG,IAAI,GAAG,EAAgC;AACzD,QAAA,IAAI,CAAC,cAAc,GAAG,CAAC,MAAM,CAAC,QAAQ,IAAI,EAAE,EAAE,GAAG,CAAC,CAAC,MAAM,EAAE,KAAK,KAAI;YAClE,MAAM,QAAQ,GAAG,EAAE,GAAG,MAAM,EAAE,KAAK,EAAE,MAAM,CAAC,KAAK,IAAI,cAAc,CAAC,KAAK,GAAG,cAAc,CAAC,MAAM,CAAC,EAAE;YACpG,SAAS,CAAC,GAAG,CAAC,QAAQ,CAAC,KAAK,EAAE,QAAQ,CAAC;AACvC,YAAA,OAAO,QAAQ;AACjB,QAAA,CAAC,CAAC;QACF,MAAM,sBAAsB,GAAG,IAAI,GAAG,CAAC,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,CAAC,MAAM,KAAK,MAAM,CAAC,KAAK,CAAC,CAAC;AACzF,QAAA,IAAI,CAAC,cAAc,GAAG,IAAI,GAAG,CAC3B,CAAC,GAAG,IAAI,CAAC,cAAc,CAAC,CAAC,MAAM,CAAC,CAAC,KAAK,KAAK,sBAAsB,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAC9E;AAED,QAAA,MAAM,aAAa,GAAyB;AAC1C,YAAA,GAAG,sBAAsB;YACzB,GAAG,MAAM,CAAC,aAAa;YACvB,KAAK,EAAE,MAAM,CAAC,aAAa,EAAE,KAAK,IAAI,sBAAsB,CAAC,KAAK;YAClE,KAAK,EAAE,MAAM,CAAC,aAAa,EAAE,KAAK,IAAI,sBAAsB,CAAC,KAAK;YAClE,KAAK,EAAE,MAAM,CAAC,aAAa,EAAE,KAAK,IAAI,sBAAsB,CAAC,KAAK;SACnE;QAED,IAAI,CAAC,aAAa,GAAG,CAAC,MAAM,CAAC,IAAI,IAAI,EAAE;AACpC,aAAA,GAAG,CAAC,CAAC,IAAI,EAAE,aAAa,KAAI;YAC3B,MAAM,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC;YACrC,MAAM,GAAG,GAAG,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC;AACjC,YAAA,IAAI,CAAC,KAAK,IAAI,CAAC,GAAG,IAAI,GAAG,CAAC,OAAO,EAAE,IAAI,KAAK,CAAC,OAAO,EAAE;AAAE,gBAAA,OAAO,IAAI;YAEnE,MAAM,MAAM,GAAG,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI;AAC3C,gBAAA,GAAG,aAAa;gBAChB,KAAK,EAAE,IAAI,CAAC,MAAM;gBAClB,KAAK,EAAE,MAAM,CAAC,aAAa,EAAE,KAAK,IAAI,CAAA,SAAA,EAAY,IAAI,CAAC,MAAM,CAAA,CAAA,CAAG;aACjE;YACD,MAAM,UAAU,GAAG,GAAG,CAAC,OAAO,EAAE,GAAG,KAAK,CAAC,OAAO,EAAE;AAClD,YAAA,MAAM,OAAO,GAAiC,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,GAAG,EAAE,UAAU,EAAE;AACtF,YAAA,MAAM,OAAO,GAAG,MAAM,CAAC,gBAAgB,GAAG,OAAO,CAAC,IAAI,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC;YAClF,MAAM,eAAe,GAAG,CAAC,IAAI,CAAC,KAAK,EAAE,MAAM,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC;YAEtF,MAAM,YAAY,GAAG;iBAClB,KAAK,CAAC,OAAO;iBACb,GAAG,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,IAAI,EAAE;iBACzB,MAAM,CAAC,OAAO,CAAC;YAElB,OAAO;AACL,gBAAA,MAAM,EAAE,IAAI;gBACZ,aAAa;gBACb,KAAK;gBACL,GAAG;gBACH,UAAU;gBACV,MAAM;gBACN,OAAO;gBACP,YAAY;gBACZ,eAAe;aAChB;AACH,QAAA,CAAC;aACA,MAAM,CAAC,CAAC,IAAI,KAAmC,IAAI,KAAK,IAAI;aAC5D,IAAI,CAAC,CAAC,IAAI,EAAE,KAAK,KAAK,IAAI,CAAC,KAAK,CAAC,OAAO,EAAE,GAAG,KAAK,CAAC,KAAK,CAAC,OAAO,EAAE,CAAC;AAEtE,QAAA,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,UAAU,IAAI,CAAC,EAAE,CAAC,CAAC;AAC/C,QAAA,MAAM,OAAO,GAAG,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,eAAe,IAAI,CAAC,EAAE,CAAC,CAAC;QACxD,MAAM,aAAa,GAAG,IAAI,CAAC,aAAa,CAAC,MAAM,GAAG,OAAO,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,aAAa,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC,CAAC,GAAG,GAAG;AAC5G,QAAA,IAAI,CAAC,gBAAgB,GAAG,CAAA,UAAA,EAAa,aAAa,KAAK;QACvD,IAAI,CAAC,kBAAkB,GAAG,MAAM,CAAC,UAAU,IAAI,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC;QAC5F,IAAI,CAAC,gBAAgB,GAAG,MAAM,CAAC,QAAQ,IAAI,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,aAAa,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC;AAC1F,QAAA,IAAI,CAAC,WAAW,GAAG,IAAI;IACzB;AAEQ,IAAA,MAAM,CAAC,KAAoB,EAAA;QACjC,MAAM,IAAI,GAAG,KAAK,YAAY,IAAI,GAAG,IAAI,IAAI,CAAC,KAAK,CAAC,OAAO,EAAE,CAAC,GAAG,IAAI,IAAI,CAAC,KAAK,CAAC;AAChF,QAAA,OAAO,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC,GAAG,IAAI,GAAG,IAAI;IACtD;AAEQ,IAAA,UAAU,CAAC,IAAW,EAAA;AAC5B,QAAA,IAAI,CAAC,IAAI;AAAE,YAAA,OAAO,EAAE;QACpB,QACE,IAAI,CAAC,MAAM,CAAC,aAAa,GAAG,IAAI,CAAC;AACjC,YAAA,IAAI,IAAI,CAAC,cAAc,CAAC,SAAS,EAAE,EAAE,SAAS,EAAE,QAAQ,EAAE,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC;IAE5E;AAEQ,IAAA,cAAc,CAAC,OAAqC,EAAA;QAC1D,MAAM,QAAQ,GACZ,IAAI,CAAC,MAAM,CAAC,iBAAiB,GAAG,OAAO,CAAC,UAAU,CAAC,IAAI,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,UAAU,CAAC;QAChG,OAAO,CAAA,EAAG,OAAO,CAAC,MAAM,CAAC,KAAK,CAAA,SAAA,EAAY,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,KAAK,CAAC,CAAA,OAAA,EAAU,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,GAAG,CAAC,CAAA,YAAA,EAAe,QAAQ,CAAA,CAAE;IACzI;AAEQ,IAAA,cAAc,CAAC,UAAkB,EAAA;AACvC,QAAA,MAAM,YAAY,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,UAAU,GAAG,MAAM,CAAC,EAAE,CAAC,CAAC;QACjE,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,YAAY,GAAG,KAAK,CAAC;AAC7C,QAAA,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,YAAY,GAAG,KAAK,IAAI,EAAE,CAAC;AACrD,QAAA,MAAM,OAAO,GAAG,YAAY,GAAG,EAAE;QACjC,OAAO,CAAC,IAAI,GAAG,CAAA,EAAG,IAAI,GAAG,GAAG,EAAE,EAAE,KAAK,GAAG,CAAA,EAAG,KAAK,GAAG,GAAG,EAAE,EAAE,OAAO,KAAK,CAAC,IAAI,IAAI,CAAC,KAAK,CAAC,GAAG,GAAG,OAAO,CAAA,CAAA,CAAG,GAAG,EAAE;aACxG,MAAM,CAAC,OAAO;aACd,IAAI,CAAC,GAAG,CAAC;IACd;wGAtNW,uBAAuB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;4FAAvB,uBAAuB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,qBAAA,EAAA,MAAA,EAAA,EAAA,MAAA,EAAA,QAAA,EAAA,EAAA,OAAA,EAAA,EAAA,UAAA,EAAA,YAAA,EAAA,EAAA,aAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EC/CpC,wmMAuIA,EAAA,MAAA,EAAA,CAAA,m7OAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,ED7FY,YAAY,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA;;4FAKX,uBAAuB,EAAA,UAAA,EAAA,CAAA;kBARnC,SAAS;+BACE,qBAAqB,EAAA,UAAA,EACnB,IAAI,EAAA,OAAA,EACP,CAAC,YAAY,CAAC,EAAA,eAAA,EAGN,uBAAuB,CAAC,MAAM,EAAA,QAAA,EAAA,wmMAAA,EAAA,MAAA,EAAA,CAAA,m7OAAA,CAAA,EAAA;;sBAG9C,KAAK;uBAAC,EAAE,QAAQ,EAAE,IAAI,EAAE;;sBAExB;;;AElDH;;AAEG;;;;"}
|