@fluentui/react-charts 0.0.0-nightly-20250825-0406.1 → 0.0.0-nightly-20250826-0412.1
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/CHANGELOG.md +15 -15
- package/dist/index.d.ts +6 -0
- package/lib/components/AreaChart/useAreaChartStyles.styles.js +2 -2
- package/lib/components/AreaChart/useAreaChartStyles.styles.js.map +1 -1
- package/lib/components/AreaChart/useAreaChartStyles.styles.raw.js +3 -15
- package/lib/components/AreaChart/useAreaChartStyles.styles.raw.js.map +1 -1
- package/lib/components/CommonComponents/CartesianChart.js +16 -20
- package/lib/components/CommonComponents/CartesianChart.js.map +1 -1
- package/lib/components/CommonComponents/useCartesianChartStyles.styles.js +17 -14
- package/lib/components/CommonComponents/useCartesianChartStyles.styles.js.map +1 -1
- package/lib/components/CommonComponents/useCartesianChartStyles.styles.raw.js +6 -33
- package/lib/components/CommonComponents/useCartesianChartStyles.styles.raw.js.map +1 -1
- package/lib/components/DeclarativeChart/PlotlySchemaAdapter.js +1 -0
- package/lib/components/DeclarativeChart/PlotlySchemaAdapter.js.map +1 -1
- package/lib/components/DonutChart/useDonutChartStyles.styles.js +3 -3
- package/lib/components/DonutChart/useDonutChartStyles.styles.js.map +1 -1
- package/lib/components/DonutChart/useDonutChartStyles.styles.raw.js +2 -11
- package/lib/components/DonutChart/useDonutChartStyles.styles.raw.js.map +1 -1
- package/lib/components/GroupedVerticalBarChart/useGroupedVerticalBarChartStyles.styles.js +4 -17
- package/lib/components/GroupedVerticalBarChart/useGroupedVerticalBarChartStyles.styles.js.map +1 -1
- package/lib/components/GroupedVerticalBarChart/useGroupedVerticalBarChartStyles.styles.raw.js +4 -21
- package/lib/components/GroupedVerticalBarChart/useGroupedVerticalBarChartStyles.styles.raw.js.map +1 -1
- package/lib/components/LineChart/LineChart.js +111 -81
- package/lib/components/LineChart/LineChart.js.map +1 -1
- package/lib/components/LineChart/LineChart.types.js.map +1 -1
- package/lib/components/LineChart/useLineChartStyles.styles.js +23 -10
- package/lib/components/LineChart/useLineChartStyles.styles.js.map +1 -1
- package/lib/components/LineChart/useLineChartStyles.styles.raw.js +4 -21
- package/lib/components/LineChart/useLineChartStyles.styles.raw.js.map +1 -1
- package/lib/components/SankeyChart/useSankeyChartStyles.styles.js +12 -25
- package/lib/components/SankeyChart/useSankeyChartStyles.styles.js.map +1 -1
- package/lib/components/SankeyChart/useSankeyChartStyles.styles.raw.js +2 -12
- package/lib/components/SankeyChart/useSankeyChartStyles.styles.raw.js.map +1 -1
- package/lib/components/ScatterChart/useScatterChartStyles.styles.js +11 -7
- package/lib/components/ScatterChart/useScatterChartStyles.styles.js.map +1 -1
- package/lib/components/ScatterChart/useScatterChartStyles.styles.raw.js +4 -22
- package/lib/components/ScatterChart/useScatterChartStyles.styles.raw.js.map +1 -1
- package/lib/components/VerticalBarChart/useVerticalBarChartStyles.styles.js +8 -6
- package/lib/components/VerticalBarChart/useVerticalBarChartStyles.styles.js.map +1 -1
- package/lib/components/VerticalBarChart/useVerticalBarChartStyles.styles.raw.js +5 -19
- package/lib/components/VerticalBarChart/useVerticalBarChartStyles.styles.raw.js.map +1 -1
- package/lib/components/VerticalStackedBarChart/useVerticalStackedBarChartStyles.styles.js +7 -6
- package/lib/components/VerticalStackedBarChart/useVerticalStackedBarChartStyles.styles.js.map +1 -1
- package/lib/components/VerticalStackedBarChart/useVerticalStackedBarChartStyles.styles.raw.js +4 -19
- package/lib/components/VerticalStackedBarChart/useVerticalStackedBarChartStyles.styles.raw.js.map +1 -1
- package/lib/utilities/Common.styles.js +47 -0
- package/lib/utilities/Common.styles.js.map +1 -0
- package/lib/utilities/Common.styles.raw.js +47 -0
- package/lib/utilities/Common.styles.raw.js.map +1 -0
- package/lib/utilities/SVGTooltipText.js.map +1 -1
- package/lib/utilities/index.js +1 -0
- package/lib/utilities/index.js.map +1 -1
- package/lib-commonjs/components/AreaChart/useAreaChartStyles.styles.js.map +1 -1
- package/lib-commonjs/components/AreaChart/useAreaChartStyles.styles.raw.js +2 -14
- package/lib-commonjs/components/AreaChart/useAreaChartStyles.styles.raw.js.map +1 -1
- package/lib-commonjs/components/CommonComponents/CartesianChart.js +16 -20
- package/lib-commonjs/components/CommonComponents/CartesianChart.js.map +1 -1
- package/lib-commonjs/components/CommonComponents/useCartesianChartStyles.styles.js +15 -13
- package/lib-commonjs/components/CommonComponents/useCartesianChartStyles.styles.js.map +1 -1
- package/lib-commonjs/components/CommonComponents/useCartesianChartStyles.styles.raw.js +4 -32
- package/lib-commonjs/components/CommonComponents/useCartesianChartStyles.styles.raw.js.map +1 -1
- package/lib-commonjs/components/DeclarativeChart/PlotlySchemaAdapter.js +1 -0
- package/lib-commonjs/components/DeclarativeChart/PlotlySchemaAdapter.js.map +1 -1
- package/lib-commonjs/components/DonutChart/useDonutChartStyles.styles.js +2 -2
- package/lib-commonjs/components/DonutChart/useDonutChartStyles.styles.js.map +1 -1
- package/lib-commonjs/components/DonutChart/useDonutChartStyles.styles.raw.js +2 -11
- package/lib-commonjs/components/DonutChart/useDonutChartStyles.styles.raw.js.map +1 -1
- package/lib-commonjs/components/GroupedVerticalBarChart/useGroupedVerticalBarChartStyles.styles.js +2 -19
- package/lib-commonjs/components/GroupedVerticalBarChart/useGroupedVerticalBarChartStyles.styles.js.map +1 -1
- package/lib-commonjs/components/GroupedVerticalBarChart/useGroupedVerticalBarChartStyles.styles.raw.js +3 -20
- package/lib-commonjs/components/GroupedVerticalBarChart/useGroupedVerticalBarChartStyles.styles.raw.js.map +1 -1
- package/lib-commonjs/components/LineChart/LineChart.js +111 -81
- package/lib-commonjs/components/LineChart/LineChart.js.map +1 -1
- package/lib-commonjs/components/LineChart/LineChart.types.js.map +1 -1
- package/lib-commonjs/components/LineChart/useLineChartStyles.styles.js +30 -9
- package/lib-commonjs/components/LineChart/useLineChartStyles.styles.js.map +1 -1
- package/lib-commonjs/components/LineChart/useLineChartStyles.styles.raw.js +2 -20
- package/lib-commonjs/components/LineChart/useLineChartStyles.styles.raw.js.map +1 -1
- package/lib-commonjs/components/SankeyChart/useSankeyChartStyles.styles.js +23 -33
- package/lib-commonjs/components/SankeyChart/useSankeyChartStyles.styles.js.map +1 -1
- package/lib-commonjs/components/SankeyChart/useSankeyChartStyles.styles.raw.js +1 -12
- package/lib-commonjs/components/SankeyChart/useSankeyChartStyles.styles.raw.js.map +1 -1
- package/lib-commonjs/components/ScatterChart/useScatterChartStyles.styles.js +13 -7
- package/lib-commonjs/components/ScatterChart/useScatterChartStyles.styles.js.map +1 -1
- package/lib-commonjs/components/ScatterChart/useScatterChartStyles.styles.raw.js +2 -20
- package/lib-commonjs/components/ScatterChart/useScatterChartStyles.styles.raw.js.map +1 -1
- package/lib-commonjs/components/VerticalBarChart/useVerticalBarChartStyles.styles.js +5 -3
- package/lib-commonjs/components/VerticalBarChart/useVerticalBarChartStyles.styles.js.map +1 -1
- package/lib-commonjs/components/VerticalBarChart/useVerticalBarChartStyles.styles.raw.js +3 -17
- package/lib-commonjs/components/VerticalBarChart/useVerticalBarChartStyles.styles.raw.js.map +1 -1
- package/lib-commonjs/components/VerticalStackedBarChart/useVerticalStackedBarChartStyles.styles.js +5 -3
- package/lib-commonjs/components/VerticalStackedBarChart/useVerticalStackedBarChartStyles.styles.js.map +1 -1
- package/lib-commonjs/components/VerticalStackedBarChart/useVerticalStackedBarChartStyles.styles.raw.js +3 -18
- package/lib-commonjs/components/VerticalStackedBarChart/useVerticalStackedBarChartStyles.styles.raw.js.map +1 -1
- package/lib-commonjs/utilities/Common.styles.js +71 -0
- package/lib-commonjs/utilities/Common.styles.js.map +1 -0
- package/lib-commonjs/utilities/Common.styles.raw.js +71 -0
- package/lib-commonjs/utilities/Common.styles.raw.js.map +1 -0
- package/lib-commonjs/utilities/SVGTooltipText.js.map +1 -1
- package/lib-commonjs/utilities/index.js +1 -0
- package/lib-commonjs/utilities/index.js.map +1 -1
- package/package.json +12 -12
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/components/DeclarativeChart/PlotlySchemaAdapter.ts"],"sourcesContent":["/* eslint-disable one-var */\n/* eslint-disable vars-on-top */\n/* eslint-disable no-var */\nimport * as React from 'react';\nimport {\n bin as d3Bin,\n extent as d3Extent,\n sum as d3Sum,\n min as d3Min,\n max as d3Max,\n range as d3Range,\n Bin,\n} from 'd3-array';\nimport { scaleLinear as d3ScaleLinear } from 'd3-scale';\nimport { format as d3Format } from 'd3-format';\nimport { DonutChartProps } from '../DonutChart/index';\nimport {\n ChartDataPoint,\n ChartProps,\n HorizontalBarChartWithAxisDataPoint,\n LineChartPoints,\n VerticalStackedChartProps,\n HeatMapChartData,\n HeatMapChartDataPoint,\n GroupedVerticalBarChartData,\n VerticalBarChartDataPoint,\n SankeyChartData,\n LineChartLineOptions,\n} from '../../types/DataPoint';\nimport { SankeyChartProps } from '../SankeyChart/index';\nimport { VerticalStackedBarChartProps } from '../VerticalStackedBarChart/index';\nimport { HorizontalBarChartWithAxisProps } from '../HorizontalBarChartWithAxis/index';\nimport { LineChartProps } from '../LineChart/index';\nimport { AreaChartProps } from '../AreaChart/index';\nimport { HeatMapChartProps } from '../HeatMapChart/index';\nimport { DataVizPalette, getColorFromToken } from '../../utilities/colors';\nimport { GaugeChartProps, GaugeChartSegment } from '../GaugeChart/index';\nimport { GroupedVerticalBarChartProps } from '../GroupedVerticalBarChart/index';\nimport { VerticalBarChartProps } from '../VerticalBarChart/index';\nimport { ChartTableProps } from '../ChartTable/index';\nimport { findNumericMinMaxOfY, formatScientificLimitWidth, MIN_DONUT_RADIUS } from '../../utilities/utilities';\nimport type {\n Datum,\n Layout,\n PlotlySchema,\n PieData,\n PlotData,\n SankeyData,\n ScatterLine,\n TypedArray,\n Data,\n TableData,\n Color,\n LayoutAxis,\n XAxisName,\n TraceInfo,\n} from '@fluentui/chart-utilities';\nimport {\n isArrayOrTypedArray,\n isDate,\n isDateArray,\n isNumberArray,\n isStringArray,\n isYearArray,\n isInvalidValue,\n formatToLocaleString,\n} from '@fluentui/chart-utilities';\nimport { curveCardinal as d3CurveCardinal } from 'd3-shape';\nimport type { ColorwayType } from './PlotlyColorAdapter';\nimport { getOpacity, extractColor, resolveColor } from './PlotlyColorAdapter';\nimport { rgb } from 'd3-color';\nimport { Legend, LegendsProps } from '../Legends/index';\nimport { ScatterChartProps } from '../ScatterChart/ScatterChart.types';\nimport { CartesianChartProps } from '../CommonComponents/index';\n\nexport const NON_PLOT_KEY_PREFIX = 'nonplot_';\nexport const SINGLE_REPEAT = 'repeat(1, 1fr)';\n\ntype DomainInterval = {\n start: number;\n end: number;\n};\n\nexport type AxisProperties = {\n xAnnotation?: string;\n yAnnotation?: string;\n row: number;\n column: number;\n xDomain: DomainInterval;\n yDomain: DomainInterval;\n};\nexport type GridAxisProperties = Record<string, AxisProperties>;\n\nexport type GridProperties = {\n templateRows: string;\n templateColumns: string;\n layout: GridAxisProperties;\n};\n\ntype ScatterChartTypes = 'area' | 'line' | 'scatter';\ninterface SecondaryYAxisValues {\n secondaryYAxistitle?: string;\n secondaryYScaleOptions?: { yMinValue?: number; yMaxValue?: number };\n}\n\nconst dashOptions = {\n dot: {\n strokeDasharray: '1, 5',\n strokeLinecap: 'round',\n strokeWidth: '2',\n lineBorderWidth: '4',\n },\n dash: {\n strokeDasharray: '5, 5',\n strokeLinecap: 'butt',\n strokeWidth: '2',\n lineBorderWidth: '4',\n },\n longdash: {\n strokeDasharray: '10, 5',\n strokeLinecap: 'butt',\n strokeWidth: '2',\n lineBorderWidth: '4',\n },\n dashdot: {\n strokeDasharray: '5, 5, 1, 5',\n strokeLinecap: 'butt',\n strokeWidth: '2',\n lineBorderWidth: '4',\n },\n longdashdot: {\n strokeDasharray: '10, 5, 1, 5',\n strokeLinecap: 'butt',\n strokeWidth: '2',\n lineBorderWidth: '4',\n },\n solid: {\n strokeDasharray: '0',\n strokeLinecap: 'butt',\n strokeWidth: '2',\n lineBorderWidth: '4',\n },\n} as const;\n\nfunction getTitles(layout: Partial<Layout> | undefined) {\n const titles = {\n chartTitle: typeof layout?.title === 'string' ? layout.title : layout?.title?.text ?? '',\n xAxisTitle: typeof layout?.xaxis?.title === 'string' ? layout?.xaxis?.title : layout?.xaxis?.title?.text ?? '',\n yAxisTitle: typeof layout?.yaxis?.title === 'string' ? layout?.yaxis?.title : layout?.yaxis?.title?.text ?? '',\n };\n return titles;\n}\n\nconst getXAxisTickFormat = (series: Data, layout: Partial<Layout> | undefined) => {\n const xAxis = getXAxisProperties(series, layout);\n if (xAxis?.tickformat) {\n return {\n tickFormat: xAxis?.tickformat,\n };\n }\n\n return {};\n};\n\nconst getYAxisTickFormat = (series: Data, layout: Partial<Layout> | undefined) => {\n const yAxis = getYAxisProperties(series, layout);\n if (yAxis?.tickformat) {\n return {\n yAxisTickFormat: d3Format(yAxis?.tickformat),\n };\n }\n\n return {};\n};\n\nconst getYMinMaxValues = (series: Data, layout: Partial<Layout> | undefined) => {\n const range = getYAxisProperties(series, layout)?.range;\n if (range && range.length === 2) {\n return {\n yMinValue: range[0],\n yMaxValue: range[1],\n };\n }\n return {};\n};\n\nconst getYAxisProperties = (series: Data, layout: Partial<Layout> | undefined): Partial<LayoutAxis> | undefined => {\n return layout?.yaxis;\n};\n\nconst getXAxisProperties = (series: Data, layout: Partial<Layout> | undefined): Partial<LayoutAxis> | undefined => {\n return layout?.xaxis;\n};\n\nconst getFormattedCalloutYData = (\n yVal: string | number,\n yAxisFormat: ReturnType<typeof getYAxisTickFormat>,\n): string => {\n if (typeof yAxisFormat?.yAxisTickFormat === 'function' && typeof yVal === 'number') {\n return yAxisFormat.yAxisTickFormat(yVal);\n }\n return formatToLocaleString(yVal) as string;\n};\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport const correctYearMonth = (xValues: Datum[] | Datum[][] | TypedArray): any[] => {\n const presentYear = new Date().getFullYear();\n if (xValues.length > 0 && Array.isArray(xValues[0])) {\n throw new Error('updateXValues:: 2D array not supported');\n }\n const dates = (xValues as Datum[]).map(possiblyMonthValue => {\n const parsedDate = `${possiblyMonthValue} 01, ${presentYear}`;\n return isDate(parsedDate) ? new Date(parsedDate) : null;\n });\n const filteredDateIndexPairs = dates.map((date, index) => [date, index]).filter(([date]) => date !== null) as [\n Date,\n number,\n ][];\n for (let i = filteredDateIndexPairs.length - 1; i > 0; i--) {\n const currentDate = filteredDateIndexPairs[i][0];\n const previousDate = filteredDateIndexPairs[i - 1][0];\n const currentMonth = currentDate.getMonth();\n const previousMonth = previousDate.getMonth();\n const currentYear = currentDate.getFullYear();\n const previousYear = previousDate.getFullYear();\n if (previousMonth >= currentMonth) {\n filteredDateIndexPairs[i - 1][0].setFullYear(currentYear - 1);\n } else if (previousYear > currentYear) {\n filteredDateIndexPairs[i - 1][0].setFullYear(currentYear);\n }\n dates[filteredDateIndexPairs[i - 1][1]] = filteredDateIndexPairs[i - 1][0];\n }\n xValues = (xValues as Datum[]).map((month, index) => {\n if (dates[index] === null) {\n return null;\n }\n return `${month} 01, ${dates[index]!.getFullYear()}`;\n });\n return xValues;\n};\n\nconst usesSecondaryYScale = (series: Partial<PlotData>, layout: Partial<Layout> | undefined): boolean => {\n return series.yaxis === 'y2' && (layout?.yaxis2?.anchor === 'x' || layout?.yaxis2?.side === 'right');\n};\n\nconst getSecondaryYAxisValues = (\n data: Data[],\n layout: Partial<Layout> | undefined,\n maxAllowedMinY?: number,\n minAllowedMaxY?: number,\n): SecondaryYAxisValues => {\n let containsSecondaryYAxis = false;\n let yMinValue: number | undefined;\n let yMaxValue: number | undefined;\n\n data.forEach((series: Partial<PlotData>) => {\n if (usesSecondaryYScale(series, layout)) {\n containsSecondaryYAxis = true;\n const yValues = series.y as number[];\n if (yValues) {\n yMinValue = Math.min(...yValues);\n yMaxValue = Math.max(...yValues);\n }\n }\n });\n\n if (!containsSecondaryYAxis) {\n return {};\n }\n\n if (typeof yMinValue === 'number' && typeof maxAllowedMinY === 'number') {\n yMinValue = Math.min(yMinValue, maxAllowedMinY);\n }\n if (typeof yMaxValue === 'number' && typeof minAllowedMaxY === 'number') {\n yMaxValue = Math.max(yMaxValue, minAllowedMaxY);\n }\n if (layout?.yaxis2?.range) {\n yMinValue = layout.yaxis2.range[0];\n yMaxValue = layout.yaxis2.range[1];\n }\n\n return {\n secondaryYAxistitle:\n typeof layout?.yaxis2?.title === 'string'\n ? layout.yaxis2.title\n : typeof layout?.yaxis2?.title?.text === 'string'\n ? layout.yaxis2.title.text\n : undefined,\n secondaryYScaleOptions: {\n yMinValue,\n yMaxValue,\n },\n };\n};\n\nexport const _getGaugeAxisColor = (\n colorway: string[] | undefined,\n colorwayType: ColorwayType,\n color: Color | undefined,\n colorMap: React.MutableRefObject<Map<string, string>>,\n isDarkTheme?: boolean,\n): string => {\n const extractedColors = extractColor(colorway, colorwayType, color, colorMap, isDarkTheme);\n return resolveColor(extractedColors, 0, '', colorMap, isDarkTheme);\n};\n\nexport const resolveXAxisPoint = (\n x: Datum,\n isXYearCategory: boolean,\n isXString: boolean,\n isXDate: boolean,\n isXNumber: boolean,\n): string | Date | number => {\n if (x === null || x === undefined) {\n return '';\n }\n if (isXYearCategory) {\n return x.toString();\n }\n if (isXString) {\n if (isXDate) {\n const date = new Date(x as string);\n return date;\n }\n if (isXNumber) {\n return parseFloat(x as string);\n }\n return x;\n }\n return x;\n};\n\nexport const transformPlotlyJsonToDonutProps = (\n input: PlotlySchema,\n isMultiPlot: boolean,\n colorMap: React.MutableRefObject<Map<string, string>>,\n colorwayType: ColorwayType,\n isDarkTheme?: boolean,\n): DonutChartProps => {\n const firstData = input.data[0] as Partial<PieData>;\n\n // extract colors for each series only once\n // use piecolorway if available\n // otherwise, default to colorway from template\n const colors: string[] | string | null | undefined = extractColor(\n input.layout?.piecolorway ?? input.layout?.template?.layout?.colorway,\n colorwayType,\n input.layout?.piecolorway ?? firstData?.marker?.colors,\n colorMap,\n isDarkTheme,\n );\n const mapLegendToDataPoint: Record<string, ChartDataPoint> = {};\n firstData.labels?.forEach((label, index: number) => {\n const value = getNumberAtIndexOrDefault(firstData.values, index);\n if (isInvalidValue(value) || (value as number) < 0) {\n return;\n }\n\n const legend = `${label}`;\n // resolve color for each legend from the extracted colors\n const color: string = resolveColor(colors, index, legend, colorMap, isDarkTheme);\n\n if (!mapLegendToDataPoint[legend]) {\n mapLegendToDataPoint[legend] = {\n legend,\n data: value,\n color,\n };\n } else {\n mapLegendToDataPoint[legend].data! += value as number;\n }\n });\n\n const width: number = input.layout?.width ?? 440;\n const height: number = input.layout?.height ?? 220;\n const hideLabels: boolean = firstData.textinfo\n ? !['value', 'percent', 'label+percent'].includes(firstData.textinfo)\n : false;\n const donutMarginHorizontal: number = hideLabels ? 0 : 80;\n const donutMarginVertical: number = 40 + (hideLabels ? 0 : 40);\n const innerRadius: number = firstData.hole\n ? firstData.hole * (Math.min(width - donutMarginHorizontal, height - donutMarginVertical) / 2)\n : MIN_DONUT_RADIUS;\n const { chartTitle } = getTitles(input.layout);\n\n return {\n data: {\n chartTitle,\n chartData: Object.values(mapLegendToDataPoint),\n },\n hideLegend: isMultiPlot || input.layout?.showlegend === false,\n width: input.layout?.width,\n height,\n innerRadius,\n hideLabels,\n showLabelsInPercent: firstData.textinfo ? ['percent', 'label+percent'].includes(firstData.textinfo) : true,\n roundCorners: true,\n };\n};\n\nexport const transformPlotlyJsonToVSBCProps = (\n input: PlotlySchema,\n isMultiPlot: boolean,\n colorMap: React.MutableRefObject<Map<string, string>>,\n colorwayType: ColorwayType,\n isDarkTheme?: boolean,\n fallbackVSBC?: boolean,\n): VerticalStackedBarChartProps => {\n const mapXToDataPoints: { [key: string]: VerticalStackedChartProps } = {};\n let yMaxValue = 0;\n const secondaryYAxisValues = getSecondaryYAxisValues(input.data, input.layout);\n const { legends, hideLegend } = getLegendProps(input.data, input.layout, isMultiPlot);\n let colorScale: ((value: number) => string) | undefined = undefined;\n const yAxisTickFormat = getYAxisTickFormat(input.data[0], input.layout);\n let yMinValue = 0;\n input.data.forEach((series: Partial<PlotData>, index1: number) => {\n if (\n input.layout?.coloraxis?.colorscale?.length &&\n isArrayOrTypedArray(series.marker?.color) &&\n (series.marker?.color as Color[]).length > 0 &&\n typeof (series.marker?.color as Color[])?.[0] === 'number'\n ) {\n colorScale = createColorScale(input.layout, series);\n }\n const isXYearCategory = isYearArray(series.x); // Consider year as categorical not numeric continuous axis\n // extract bar colors for each series only once\n const extractedBarColors = extractColor(\n input.layout?.template?.layout?.colorway,\n colorwayType,\n series.marker?.color,\n colorMap,\n isDarkTheme,\n ) as string[] | string | undefined;\n // extract line colors for each series only once\n const extractedLineColors = extractColor(\n input.layout?.template?.layout?.colorway,\n colorwayType,\n series.line?.color,\n colorMap,\n isDarkTheme,\n ) as string[] | string | undefined;\n\n const xValues = series.x as Datum[];\n const isXDate = isDateArray(xValues);\n const isXString = isStringArray(xValues);\n const isXNumber = isNumberArray(xValues);\n const validXYRanges = getValidXYRanges(series);\n validXYRanges.forEach(([rangeStart, rangeEnd], rangeIdx) => {\n const rangeXValues = series.x!.slice(rangeStart, rangeEnd);\n const rangeYValues = series.y!.slice(rangeStart, rangeEnd);\n\n (rangeXValues as Datum[]).forEach((x: string | number, index2: number) => {\n if (!mapXToDataPoints[x]) {\n mapXToDataPoints[x] = {\n xAxisPoint: resolveXAxisPoint(x, isXYearCategory, isXString, isXDate, isXNumber),\n chartData: [],\n lineData: [],\n };\n }\n const legend: string = legends[index1];\n // resolve color for each legend's bars from the colorscale or extracted colors\n const color = colorScale\n ? colorScale(\n isArrayOrTypedArray(series.marker?.color)\n ? ((series.marker?.color as Color[])?.[index2 % (series.marker?.color as Color[]).length] as number)\n : 0,\n )\n : resolveColor(extractedBarColors, index2, legend, colorMap, isDarkTheme);\n const opacity = getOpacity(series, index2);\n const yVal: number | string = rangeYValues[index2] as number | string;\n const yAxisCalloutData = getFormattedCalloutYData(yVal, yAxisTickFormat);\n if (series.type === 'bar') {\n mapXToDataPoints[x].chartData.push({\n legend,\n data: yVal,\n color: rgb(color).copy({ opacity }).formatHex8() ?? color,\n yAxisCalloutData,\n });\n if (typeof yVal === 'number') {\n yMaxValue = Math.max(yMaxValue, yVal);\n }\n } else if (series.type === 'scatter' || !!fallbackVSBC) {\n const lineColor = resolveColor(extractedLineColors, index1, legend, colorMap, isDarkTheme);\n const lineOptions = !series.mode?.includes('text') ? getLineOptions(series.line) : undefined;\n const legendShape = getLegendShape(series);\n mapXToDataPoints[x].lineData!.push({\n legend: legend + (validXYRanges.length > 1 ? `.${rangeIdx + 1}` : ''),\n legendShape,\n y: yVal,\n color: rgb(lineColor).copy({ opacity }).formatHex8() ?? color,\n lineOptions: {\n ...(lineOptions ?? {}),\n mode: series.mode,\n },\n useSecondaryYScale: usesSecondaryYScale(series, input.layout),\n yAxisCalloutData,\n });\n if (!usesSecondaryYScale(series, input.layout) && typeof yVal === 'number') {\n yMaxValue = Math.max(yMaxValue, yVal);\n yMinValue = Math.min(yMinValue, yVal);\n }\n }\n yMaxValue = Math.max(yMaxValue, yVal as number);\n });\n });\n });\n\n const vsbcData = Object.values(mapXToDataPoints);\n\n return {\n data: vsbcData,\n width: input.layout?.width,\n height: input.layout?.height ?? 350,\n barWidth: 'auto',\n yMaxValue,\n yMinValue,\n mode: 'plotly',\n ...secondaryYAxisValues,\n wrapXAxisLables: typeof vsbcData[0]?.xAxisPoint === 'string',\n hideTickOverlap: true,\n barGapMax: 2,\n hideLegend,\n roundCorners: true,\n showYAxisLables: true,\n noOfCharsToTruncate: 20,\n showYAxisLablesTooltip: true,\n ...getTitles(input.layout),\n ...getXAxisTickFormat(input.data[0], input.layout),\n ...yAxisTickFormat,\n ...getAxisCategoryOrderProps(input.data, input.layout),\n };\n};\n\nconst createColorScale = (layout: Partial<Layout>, series: Partial<PlotData>) => {\n const scale = layout?.coloraxis?.colorscale as Array<[number, string]>;\n const colorValues = series.marker?.color as number[];\n const [dMin, dMax] = [\n layout?.coloraxis?.cmin ?? Math.min(...colorValues),\n layout?.coloraxis?.cmax ?? Math.max(...colorValues),\n ];\n\n // Normalize colorscale domain to actual data domain\n const scaleDomain = scale.map(([pos]) => dMin + pos * (dMax - dMin));\n const scaleColors = scale.map(item => item[1]);\n\n return d3ScaleLinear<string>().domain(scaleDomain).range(scaleColors);\n};\n\nexport const transformPlotlyJsonToGVBCProps = (\n input: PlotlySchema,\n isMultiPlot: boolean,\n colorMap: React.MutableRefObject<Map<string, string>>,\n colorwayType: ColorwayType,\n isDarkTheme?: boolean,\n): GroupedVerticalBarChartProps => {\n const mapXToDataPoints: Record<string, GroupedVerticalBarChartData> = {};\n const secondaryYAxisValues = getSecondaryYAxisValues(input.data, input.layout, 0, 0);\n const { legends, hideLegend } = getLegendProps(input.data, input.layout, isMultiPlot);\n\n let colorScale: ((value: number) => string) | undefined = undefined;\n const yAxisTickFormat = getYAxisTickFormat(input.data[0], input.layout);\n input.data.forEach((series: Partial<PlotData>, index1: number) => {\n if (\n input.layout?.coloraxis?.colorscale?.length &&\n isArrayOrTypedArray(series.marker?.color) &&\n (series.marker?.color as Color[]).length > 0 &&\n typeof (series.marker?.color as Color[])?.[0] === 'number'\n ) {\n colorScale = createColorScale(input.layout, series);\n }\n // extract colors for each series only once\n const extractedColors = extractColor(\n input.layout?.template?.layout?.colorway,\n colorwayType,\n series.marker?.color,\n colorMap,\n isDarkTheme,\n ) as string[] | string | undefined;\n (series.x as Datum[])?.forEach((x: string | number, index2: number) => {\n if (isInvalidValue(x) || isInvalidValue(series.y?.[index2])) {\n return;\n }\n if (!mapXToDataPoints[x]) {\n mapXToDataPoints[x] = { name: x.toString(), series: [] };\n }\n if (series.type === 'bar') {\n const legend: string = legends[index1];\n // resolve color for each legend's bars from the colorscale or extracted colors\n const color = colorScale\n ? colorScale(\n isArrayOrTypedArray(series.marker?.color)\n ? ((series.marker?.color as Color[])?.[index2 % (series.marker?.color as Color[]).length] as number)\n : 0,\n )\n : resolveColor(extractedColors, index2, legend, colorMap, isDarkTheme);\n const opacity = getOpacity(series, index2);\n\n const yVal: number = series.y![index2] as number;\n\n mapXToDataPoints[x].series.push({\n key: legend,\n data: yVal,\n xAxisCalloutData: x as string,\n color: rgb(color).copy({ opacity }).formatHex8() ?? color,\n legend,\n useSecondaryYScale: usesSecondaryYScale(series, input.layout),\n yAxisCalloutData: getFormattedCalloutYData(yVal, yAxisTickFormat),\n });\n }\n });\n });\n\n const gvbcData = Object.values(mapXToDataPoints);\n\n return {\n data: gvbcData,\n width: input.layout?.width,\n height: input.layout?.height ?? 350,\n barWidth: 'auto',\n mode: 'plotly',\n ...secondaryYAxisValues,\n hideTickOverlap: true,\n wrapXAxisLables: typeof gvbcData[0]?.name === 'string',\n hideLegend,\n roundCorners: true,\n ...getTitles(input.layout),\n ...getYMinMaxValues(input.data[0], input.layout),\n ...getXAxisTickFormat(input.data[0], input.layout),\n ...yAxisTickFormat,\n ...getAxisCategoryOrderProps(input.data, input.layout),\n };\n};\n\nexport const transformPlotlyJsonToVBCProps = (\n input: PlotlySchema,\n isMultiPlot: boolean,\n colorMap: React.MutableRefObject<Map<string, string>>,\n colorwayType: ColorwayType,\n isDarkTheme?: boolean,\n): VerticalBarChartProps => {\n const vbcData: VerticalBarChartDataPoint[] = [];\n const { legends, hideLegend } = getLegendProps(input.data, input.layout, isMultiPlot);\n let colorScale: ((value: number) => string) | undefined = undefined;\n\n input.data.forEach((series: Partial<PlotData>, seriesIdx: number) => {\n if (!series.x) {\n return;\n }\n\n if (\n input.layout?.coloraxis?.colorscale?.length &&\n isArrayOrTypedArray(series.marker?.color) &&\n (series.marker?.color as Color[]).length > 0 &&\n typeof (series.marker?.color as Color[])?.[0] === 'number'\n ) {\n colorScale = createColorScale(input.layout, series);\n }\n\n // extract colors for each series only once\n const extractedColors = extractColor(\n input.layout?.template?.layout?.colorway,\n colorwayType,\n series.marker?.color,\n colorMap,\n isDarkTheme,\n ) as string[] | string | undefined;\n const xValues: (string | number)[] = [];\n const yValues: number[] = [];\n series.x.forEach((xVal, index) => {\n const yVal = getNumberAtIndexOrDefault(series.y, index);\n if (isInvalidValue(xVal) || isInvalidValue(yVal)) {\n return;\n }\n\n xValues.push(xVal as string | number);\n yValues.push(yVal as number);\n });\n\n const isXString = isStringArray(xValues);\n // TODO: In case of a single bin, add an empty bin of the same size to prevent the\n // default bar width from being used and ensure the bar spans the full intended range.\n const xBins = createBins(xValues, series.xbins?.start, series.xbins?.end, series.xbins?.size);\n const yBins: number[][] = xBins.map(() => []);\n let total = 0;\n\n xValues.forEach((xVal, index) => {\n const binIdx = findBinIndex(xBins, xVal, isXString);\n if (binIdx !== -1) {\n yBins[binIdx].push(yValues[index]);\n }\n });\n\n const y = yBins.map(bin => {\n const yVal = calculateHistFunc(series.histfunc, bin);\n total += yVal;\n return yVal;\n });\n\n xBins.forEach((bin, index) => {\n const legend: string = legends[seriesIdx];\n // resolve color for each legend's bars from the colorscale or extracted colors\n const color = colorScale\n ? colorScale(\n isArrayOrTypedArray(series.marker?.color)\n ? ((series.marker?.color as Color[])?.[index % (series.marker?.color as Color[]).length] as number)\n : 0,\n )\n : resolveColor(extractedColors, index, legend, colorMap, isDarkTheme);\n const opacity = getOpacity(series, index);\n const yVal = calculateHistNorm(\n series.histnorm,\n y[index],\n total,\n isXString ? bin.length : getBinSize(bin as Bin<number, number>),\n );\n\n vbcData.push({\n x: isXString ? bin.join(', ') : getBinCenter(bin as Bin<number, number>),\n y: yVal,\n legend,\n color: rgb(color).copy({ opacity }).formatHex8() ?? color,\n ...(isXString\n ? {}\n : { xAxisCalloutData: `[${(bin as Bin<number, number>).x0} - ${(bin as Bin<number, number>).x1})` }),\n });\n });\n });\n\n return {\n data: vbcData,\n width: input.layout?.width,\n height: input.layout?.height ?? 350,\n mode: 'histogram',\n hideTickOverlap: true,\n wrapXAxisLables: typeof vbcData[0]?.x === 'string',\n maxBarWidth: 50,\n hideLegend,\n roundCorners: true,\n ...getTitles(input.layout),\n ...getYMinMaxValues(input.data[0], input.layout),\n ...getAxisCategoryOrderProps(input.data, input.layout),\n };\n};\n\nexport const transformPlotlyJsonToAreaChartProps = (\n input: PlotlySchema,\n isMultiPlot: boolean,\n colorMap: React.MutableRefObject<Map<string, string>>,\n colorwayType: ColorwayType,\n isDarkTheme?: boolean,\n): AreaChartProps => {\n return transformPlotlyJsonToScatterTraceProps(\n input,\n isMultiPlot,\n 'area',\n colorMap,\n colorwayType,\n isDarkTheme,\n ) as AreaChartProps;\n};\n\nexport const transformPlotlyJsonToLineChartProps = (\n input: PlotlySchema,\n isMultiPlot: boolean,\n colorMap: React.MutableRefObject<Map<string, string>>,\n colorwayType: ColorwayType,\n isDarkTheme?: boolean,\n): LineChartProps => {\n return transformPlotlyJsonToScatterTraceProps(\n input,\n isMultiPlot,\n 'line',\n colorMap,\n colorwayType,\n isDarkTheme,\n ) as LineChartProps;\n};\n\nexport const transformPlotlyJsonToScatterChartProps = (\n input: PlotlySchema,\n isMultiPlot: boolean,\n colorMap: React.MutableRefObject<Map<string, string>>,\n colorwayType: ColorwayType,\n isDarkTheme?: boolean,\n): LineChartProps => {\n return transformPlotlyJsonToScatterTraceProps(\n input,\n isMultiPlot,\n 'scatter',\n colorMap,\n colorwayType,\n isDarkTheme,\n ) as ScatterChartProps;\n};\n\nconst transformPlotlyJsonToScatterTraceProps = (\n input: PlotlySchema,\n isMultiPlot: boolean,\n chartType: ScatterChartTypes,\n colorMap: React.MutableRefObject<Map<string, string>>,\n colorwayType: ColorwayType,\n isDarkTheme?: boolean,\n): LineChartProps | AreaChartProps | ScatterChartProps => {\n const isScatterMarkers = [\n 'markers',\n 'text+markers',\n 'markers+text',\n 'lines+markers',\n 'markers+line',\n 'text+lines+markers',\n ].includes((input.data[0] as PlotData)?.mode);\n const isAreaChart = chartType === 'area';\n const isScatterChart = chartType === 'scatter';\n const secondaryYAxisValues = getSecondaryYAxisValues(\n input.data,\n input.layout,\n isAreaChart ? 0 : undefined,\n isAreaChart ? 0 : undefined,\n );\n let mode: string = 'tonexty';\n const { legends, hideLegend } = getLegendProps(input.data, input.layout, isMultiPlot);\n const yAxisTickFormat = getYAxisTickFormat(input.data[0], input.layout);\n const chartData: LineChartPoints[] = input.data\n .map((series: Partial<PlotData>, index: number) => {\n const colors = isScatterMarkers\n ? series?.mode?.includes('line')\n ? series.line?.color\n : series.marker?.color\n : series.line?.color;\n // extract colors for each series only once\n const extractedColors = extractColor(\n input.layout?.template?.layout?.colorway,\n colorwayType,\n colors,\n colorMap,\n isDarkTheme,\n ) as string[] | string | undefined;\n const xValues = series.x as Datum[];\n const isXString = isStringArray(xValues);\n const isXDate = isDateArray(xValues);\n const isXNumber = isNumberArray(xValues);\n const isXYearCategory = isYearArray(series.x); // Consider year as categorical not numeric continuous axis\n const legend: string = legends[index];\n // resolve color for each legend's lines from the extracted colors\n const seriesColor = resolveColor(extractedColors, index, legend, colorMap, isDarkTheme);\n const seriesOpacity = getOpacity(series, index);\n mode = series.fill === 'tozeroy' ? 'tozeroy' : 'tonexty';\n const lineOptions = !series.mode?.includes('text') ? getLineOptions(series.line) : undefined;\n const legendShape = getLegendShape(series);\n\n const validXYRanges = getValidXYRanges(series);\n return validXYRanges.map(([rangeStart, rangeEnd], rangeIdx) => {\n const rangeXValues = xValues.slice(rangeStart, rangeEnd);\n const rangeYValues = series.y!.slice(rangeStart, rangeEnd);\n const markerSizes = isArrayOrTypedArray(series.marker?.size)\n ? (series.marker!.size as number[]).slice(rangeStart, rangeEnd)\n : [];\n const textValues = Array.isArray(series.text) ? series.text.slice(rangeStart, rangeEnd) : undefined;\n\n return {\n legend,\n legendShape,\n data: rangeXValues.map((x, i: number) => ({\n x: resolveXAxisPoint(x, isXYearCategory, isXString, isXDate, isXNumber),\n y: rangeYValues[i],\n ...(Array.isArray(series.marker?.size)\n ? { markerSize: markerSizes[i] }\n : typeof series.marker?.size === 'number'\n ? { markerSize: series.marker.size }\n : {}),\n ...(textValues ? { text: textValues[i] } : {}),\n yAxisCalloutData: getFormattedCalloutYData(rangeYValues[i] as number, yAxisTickFormat),\n })),\n color: rgb(seriesColor).copy({ opacity: seriesOpacity }).formatHex8() ?? seriesColor,\n lineOptions: {\n ...(lineOptions ?? {}),\n mode: series.mode,\n },\n useSecondaryYScale: usesSecondaryYScale(series, input.layout),\n } as LineChartPoints;\n });\n })\n .flat();\n\n const yMinMax = getYMinMaxValues(input.data[0], input.layout);\n if (yMinMax.yMinValue === undefined && yMinMax.yMaxValue === undefined) {\n const yMinMaxValues = findNumericMinMaxOfY(chartData);\n yMinMax.yMinValue = yMinMaxValues.startValue;\n yMinMax.yMaxValue = yMinMaxValues.endValue;\n }\n const numDataPoints = chartData.reduce((total, lineChartPoints) => total + lineChartPoints.data.length, 0);\n\n const chartProps: ChartProps = {\n lineChartData: chartData,\n };\n\n const scatterChartProps: ChartProps = {\n scatterChartData: chartData,\n };\n\n const commonProps = {\n supportNegativeData: true,\n ...secondaryYAxisValues,\n width: input.layout?.width,\n height: input.layout?.height ?? 350,\n hideTickOverlap: true,\n hideLegend,\n useUTC: false,\n optimizeLargeData: numDataPoints > 1000,\n ...getTitles(input.layout),\n ...getXAxisTickFormat(input.data[0], input.layout),\n ...yAxisTickFormat,\n };\n\n if (isAreaChart) {\n return {\n data: chartProps,\n mode,\n ...commonProps,\n } as AreaChartProps;\n } else {\n return {\n data: isScatterChart ? scatterChartProps : chartProps,\n roundedTicks: true,\n ...commonProps,\n ...yMinMax,\n } as LineChartProps;\n }\n};\n\nexport const transformPlotlyJsonToHorizontalBarWithAxisProps = (\n input: PlotlySchema,\n isMultiPlot: boolean,\n colorMap: React.MutableRefObject<Map<string, string>>,\n colorwayType: ColorwayType,\n isDarkTheme?: boolean,\n): HorizontalBarChartWithAxisProps => {\n const { legends, hideLegend } = getLegendProps(input.data, input.layout, isMultiPlot);\n let colorScale: ((value: number) => string) | undefined = undefined;\n const chartData: HorizontalBarChartWithAxisDataPoint[] = input.data\n .map((series: Partial<PlotData>, index: number) => {\n if (\n input.layout?.coloraxis?.colorscale?.length &&\n isArrayOrTypedArray(series.marker?.color) &&\n (series.marker?.color as Color[]).length > 0 &&\n typeof (series.marker?.color as Color[])?.[0] === 'number'\n ) {\n colorScale = createColorScale(input.layout, series);\n }\n // extract colors for each series only once\n const extractedColors = extractColor(\n input.layout?.template?.layout?.colorway,\n colorwayType,\n series.marker?.color,\n colorMap,\n isDarkTheme,\n ) as string[] | string | undefined;\n const legend = legends[index];\n return (series.y as Datum[])\n .map((yValue, i: number) => {\n if (isInvalidValue(series.x?.[i]) || isInvalidValue(yValue)) {\n return null;\n }\n\n // resolve color for each legend's bars from the colorscale or extracted colors\n const color = colorScale\n ? colorScale(\n isArrayOrTypedArray(series.marker?.color)\n ? ((series.marker?.color as Color[])?.[i % (series.marker?.color as Color[]).length] as number)\n : 0,\n )\n : resolveColor(extractedColors, i, legend, colorMap, isDarkTheme);\n const opacity = getOpacity(series, i);\n\n return {\n x: series.x![i],\n y: yValue,\n legend,\n color: rgb(color).copy({ opacity }).formatHex8() ?? color,\n } as HorizontalBarChartWithAxisDataPoint;\n })\n .filter(point => point !== null) as HorizontalBarChartWithAxisDataPoint[];\n })\n .flat();\n\n const chartHeight: number = input.layout?.height ?? 450;\n const margin: number = input.layout?.margin?.l ?? 0;\n const padding: number = input.layout?.margin?.pad ?? 0;\n const availableHeight: number = chartHeight - margin - padding;\n const numberOfRows = new Set(chartData.map(d => d.y)).size || 1;\n const scalingFactor = 0.01;\n const gapFactor = 1 / (1 + scalingFactor * numberOfRows);\n const barHeight = availableHeight / (numberOfRows * (1 + gapFactor));\n\n return {\n data: chartData,\n secondaryYAxistitle:\n typeof input.layout?.yaxis2?.title === 'string'\n ? input.layout?.yaxis2?.title\n : input.layout?.yaxis2?.title?.text || '',\n barHeight,\n showYAxisLables: true,\n height: chartHeight,\n width: input.layout?.width,\n hideTickOverlap: true,\n noOfCharsToTruncate: 20,\n showYAxisLablesTooltip: true,\n hideLegend,\n roundCorners: true,\n ...getTitles(input.layout),\n ...getAxisCategoryOrderProps(input.data, input.layout),\n };\n};\n\nexport const transformPlotlyJsonToHeatmapProps = (\n input: PlotlySchema,\n isMultiPlot: boolean,\n colorMap: React.MutableRefObject<Map<string, string>>,\n colorwayType: ColorwayType,\n isDarkTheme?: boolean,\n): HeatMapChartProps => {\n const firstData = input.data[0] as Partial<PlotData>;\n const heatmapDataPoints: HeatMapChartDataPoint[] = [];\n let zMin = Number.POSITIVE_INFINITY;\n let zMax = Number.NEGATIVE_INFINITY;\n\n if (firstData.type === 'histogram2d') {\n const xValues: (string | number)[] = [];\n const yValues: (string | number)[] = [];\n const zValues: number[] = [];\n firstData.x?.forEach((xVal, index) => {\n const zVal = getNumberAtIndexOrDefault(firstData.z, index);\n if (isInvalidValue(xVal) || isInvalidValue(firstData.y?.[index]) || isInvalidValue(zVal)) {\n return;\n }\n\n xValues.push(xVal as string | number);\n yValues.push(firstData.y![index] as string | number);\n zValues.push(zVal as number);\n });\n\n const isXString = isStringArray(xValues);\n const isYString = isStringArray(yValues);\n const xBins = createBins(xValues, firstData.xbins?.start, firstData.xbins?.end, firstData.xbins?.size);\n const yBins = createBins(yValues, firstData.ybins?.start, firstData.ybins?.end, firstData.ybins?.size);\n const zBins: number[][][] = yBins.map(() => xBins.map(() => []));\n let total = 0;\n\n xValues.forEach((xVal, index) => {\n const xBinIdx = findBinIndex(xBins, xVal, isXString);\n const yBinIdx = findBinIndex(yBins, yValues[index], isYString);\n\n if (xBinIdx !== -1 && yBinIdx !== -1) {\n zBins[yBinIdx][xBinIdx].push(zValues[index]);\n }\n });\n\n const z = zBins.map(row => {\n return row.map(bin => {\n const zVal = calculateHistFunc(firstData.histfunc, bin);\n total += zVal;\n return zVal;\n });\n });\n\n xBins.forEach((xBin, xIdx) => {\n yBins.forEach((yBin, yIdx) => {\n const zVal = calculateHistNorm(\n firstData.histnorm,\n z[yIdx][xIdx],\n total,\n isXString ? xBin.length : getBinSize(xBin as Bin<number, number>),\n isYString ? yBin.length : getBinSize(yBin as Bin<number, number>),\n );\n\n heatmapDataPoints.push({\n x: isXString ? xBin.join(', ') : getBinCenter(xBin as Bin<number, number>),\n y: isYString ? yBin.join(', ') : getBinCenter(yBin as Bin<number, number>),\n value: zVal,\n rectText: zVal,\n });\n\n if (typeof zVal === 'number') {\n zMin = Math.min(zMin, zVal);\n zMax = Math.max(zMax, zVal);\n }\n });\n });\n } else {\n (firstData.x as Datum[])?.forEach((xVal, xIdx: number) => {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n firstData.y?.forEach((yVal: any, yIdx: number) => {\n const zVal = (firstData.z as number[][])?.[yIdx]?.[xIdx];\n\n heatmapDataPoints.push({\n x: input.layout?.xaxis?.type === 'date' ? (xVal as Date) : xVal ?? 0,\n y: input.layout?.yaxis?.type === 'date' ? (yVal as Date) : yVal,\n value: zVal,\n rectText: zVal,\n });\n\n if (typeof zVal === 'number') {\n zMin = Math.min(zMin, zVal);\n zMax = Math.max(zMax, zVal);\n }\n });\n });\n }\n\n const heatmapData: HeatMapChartData = {\n legend: firstData.name ?? '',\n data: heatmapDataPoints,\n value: 0,\n };\n\n // Initialize domain and range to default values\n const defaultDomain = [zMin, (zMax + zMin) / 2, zMax];\n const defaultRange = [\n getColorFromToken(DataVizPalette.color1),\n getColorFromToken(DataVizPalette.color2),\n getColorFromToken(DataVizPalette.color3),\n ];\n\n let colorscale =\n firstData?.colorscale ??\n input.layout?.colorscale ??\n input.layout?.coloraxis?.colorscale ??\n input.layout?.template?.layout?.colorscale ??\n (firstData.type === 'histogram2d' && input.layout?.template?.data?.histogram2d?.[0]?.colorscale) ??\n input.layout?.template?.data?.heatmap?.[0]?.colorscale;\n\n // determine if the types diverging, sequential or sequentialminus are present in colorscale\n if (\n colorscale &&\n typeof colorscale === 'object' &&\n ('diverging' in colorscale || 'sequential' in colorscale || 'sequentialminus' in colorscale)\n ) {\n const isDivergent = zMin < 0 && zMax > 0; // Data spans both positive and negative values\n const isSequential = zMin >= 0; // Data is entirely positive\n const isSequentialMinus = zMax <= 0; // Data is entirely negative\n\n if (isDivergent) {\n colorscale = colorscale?.diverging;\n } else if (isSequential) {\n colorscale = colorscale?.sequential;\n } else if (isSequentialMinus) {\n colorscale = colorscale?.sequentialminus;\n }\n }\n\n const domainValuesForColorScale: number[] = Array.isArray(colorscale)\n ? (colorscale as Array<[number, string]>).map(arr => arr[0] * (zMax - zMin) + zMin)\n : defaultDomain;\n\n const rangeValuesForColorScale: string[] = Array.isArray(colorscale)\n ? (colorscale as Array<[number, string]>).map(arr => arr[1])\n : defaultRange;\n\n return {\n data: [heatmapData],\n domainValuesForColorScale,\n rangeValuesForColorScale,\n hideLegend: true,\n showYAxisLables: true,\n sortOrder: 'none',\n width: input.layout?.width,\n height: input.layout?.height ?? 350,\n hideTickOverlap: true,\n noOfCharsToTruncate: 20,\n showYAxisLablesTooltip: true,\n wrapXAxisLables: true,\n ...getTitles(input.layout),\n ...getAxisCategoryOrderProps([firstData], input.layout),\n };\n};\n\nexport const transformPlotlyJsonToSankeyProps = (\n input: PlotlySchema,\n isMultiPlot: boolean,\n colorMap: React.MutableRefObject<Map<string, string>>,\n colorwayType: ColorwayType,\n isDarkTheme?: boolean,\n): SankeyChartProps => {\n const { link, node } = input.data[0] as SankeyData;\n const validLinks = (link?.value ?? [])\n .map((val: number, index: number) => {\n if (isInvalidValue(val) || isInvalidValue(link?.source?.[index]) || isInvalidValue(link?.target?.[index])) {\n return null;\n }\n\n return {\n value: val,\n source: link?.source![index],\n target: link?.target![index],\n };\n })\n // Filter out negative nodes, unequal nodes and self-references (circular links)\n .filter(x => x !== null && x.source >= 0 && x.target >= 0 && x.source !== x.target);\n\n const extractedNodeColors = extractColor(\n input.layout?.template?.layout?.colorway,\n colorwayType,\n node?.color,\n colorMap,\n isDarkTheme,\n );\n const sankeyChartData = {\n nodes: node.label?.map((label: string, index: number) => {\n const color = resolveColor(extractedNodeColors, index, label, colorMap, isDarkTheme);\n\n return {\n nodeId: index,\n name: label,\n color,\n };\n }),\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n links: validLinks.map((validLink: any, index: number) => {\n return {\n ...validLink,\n };\n }),\n } as SankeyChartData;\n\n // const styles: SankeyChartProps['styles'] = {\n // root: {\n // ...(input.layout?.font?.size ? { fontSize: input.layout.font?.size } : {}),\n // },\n // };\n\n const { chartTitle } = getTitles(input.layout);\n\n return {\n data: {\n chartTitle,\n SankeyChartData: sankeyChartData,\n },\n width: input.layout?.width,\n height: input.layout?.height ?? 468,\n // TODO\n // styles,\n };\n};\n\nexport const transformPlotlyJsonToGaugeProps = (\n input: PlotlySchema,\n isMultiPlot: boolean,\n colorMap: React.MutableRefObject<Map<string, string>>,\n colorwayType: ColorwayType,\n isDarkTheme?: boolean,\n): GaugeChartProps => {\n const firstData = input.data[0] as PlotData;\n const stepsColors = firstData.gauge?.steps ? firstData.gauge.steps.map(step => step.color) : undefined;\n const extractedColors = extractColor(\n input.layout?.template?.layout?.colorway,\n colorwayType,\n stepsColors,\n colorMap,\n isDarkTheme,\n );\n\n const segments = firstData.gauge?.steps?.length\n ? // eslint-disable-next-line @typescript-eslint/no-explicit-any\n firstData.gauge.steps.map((step: any, index: number): GaugeChartSegment => {\n const legend = step.name || `Segment ${index + 1}`;\n const color = resolveColor(extractedColors, index, legend, colorMap, isDarkTheme);\n return {\n legend,\n size: step.range?.[1] - step.range?.[0],\n color,\n };\n })\n : [\n {\n legend: 'Current',\n size: firstData.value ?? 0 - (firstData.gauge?.axis?.range?.[0] ?? 0),\n color: _getGaugeAxisColor(\n input.layout?.template?.layout?.colorway,\n colorwayType,\n firstData.gauge?.axis?.color,\n colorMap,\n isDarkTheme,\n ),\n },\n {\n legend: 'Target',\n size: (firstData.gauge?.axis?.range?.[1] ?? 100) - (firstData.value ?? 0),\n color: DataVizPalette.disabled,\n },\n ];\n\n let sublabel: string | undefined;\n let sublabelColor: string | undefined;\n if (firstData.delta?.reference) {\n const diff = firstData.value - firstData.delta.reference;\n if (diff >= 0) {\n sublabel = `\\u25B2 ${diff}`;\n const extractedIncreasingDeltaColors = extractColor(\n input.layout?.template?.layout?.colorway,\n colorwayType,\n firstData.delta?.increasing?.color,\n colorMap,\n isDarkTheme,\n );\n const color = resolveColor(extractedIncreasingDeltaColors, 0, '', colorMap, isDarkTheme);\n sublabelColor = color;\n } else {\n sublabel = `\\u25BC ${Math.abs(diff)}`;\n const extractedDecreasingDeltaColors = extractColor(\n input.layout?.template?.layout?.colorway,\n colorwayType,\n firstData.delta?.decreasing?.color,\n colorMap,\n isDarkTheme,\n );\n const color = resolveColor(extractedDecreasingDeltaColors, 0, '', colorMap, isDarkTheme);\n sublabelColor = color;\n }\n }\n\n const styles = {\n sublabel: sublabelColor,\n };\n\n const { chartTitle } = getTitles(input.layout);\n\n return {\n segments,\n chartValue: firstData.value ?? 0,\n chartTitle,\n sublabel,\n // range values can be null\n minValue: typeof firstData.gauge?.axis?.range?.[0] === 'number' ? firstData.gauge?.axis?.range?.[0] : undefined,\n maxValue: typeof firstData.gauge?.axis?.range?.[1] === 'number' ? firstData.gauge?.axis?.range?.[1] : undefined,\n chartValueFormat: () => firstData.value?.toString() ?? '',\n width: input.layout?.width,\n height: input.layout?.height ?? 220,\n // TODO\n // styles,\n variant: firstData.gauge?.steps?.length ? 'multiple-segments' : 'single-segment',\n styles,\n roundCorners: true,\n };\n};\n\nconst cleanText = (text: string): string => {\n return text\n .replace(/<[^&]*?>/g, '')\n .replace(/<[^>]*>/g, '')\n .replace(/<br>|\\\\u003cbr\\\\u003e|<br>/gi, '')\n .replace(/\\$[^$]*\\$/g, '$')\n .trim();\n};\n\nconst formatValue = (\n value: string | number | boolean | null,\n colIndex: number,\n cells: TableData['cells'],\n): string | number | boolean | null => {\n if (value === null || typeof value === 'boolean') {\n return value;\n }\n\n const formatStr = Array.isArray(cells!.format) ? cells!.format[colIndex] : cells!.format;\n const prefix = Array.isArray(cells!.prefix) ? cells!.prefix[colIndex] : cells!.prefix;\n const suffix = Array.isArray(cells!.suffix) ? cells!.suffix[colIndex] : cells!.suffix;\n let formatted = value;\n if (typeof value === 'number') {\n if (typeof formatStr === 'string') {\n try {\n formatted = d3Format(formatStr)(value);\n } catch {\n formatted = formatScientificLimitWidth(value);\n }\n } else {\n formatted = formatScientificLimitWidth(value);\n }\n }\n return `${prefix ?? ''}${formatted}${suffix ?? ''}`;\n};\n\nexport const transformPlotlyJsonToChartTableProps = (\n input: PlotlySchema,\n isMultiPlot: boolean,\n colorMap: React.MutableRefObject<Map<string, string>>,\n colorwayType: ColorwayType,\n isDarkTheme?: boolean,\n): ChartTableProps => {\n const tableData = input.data[0] as TableData;\n\n const normalizeHeaders = (\n values: (string | number | boolean | null)[] | (string | number | boolean | null)[][],\n header: TableData['header'],\n ): { value: string | number | boolean | null; style?: React.CSSProperties }[] => {\n const cleanedValues: (string | number | boolean | null)[] = Array.isArray(values[0])\n ? (values as string[][]).map(row =>\n row\n .map(cell => cleanText(cell))\n .filter(Boolean)\n .join(' '),\n )\n : (values as string[]).map(cell => cleanText(cell));\n\n return cleanedValues.map((value, colIndex) => {\n const fontColorRaw = header?.font?.color;\n let fontColor: React.CSSProperties['color'] | undefined;\n\n if (Array.isArray(fontColorRaw)) {\n const colorEntry = fontColorRaw[colIndex];\n if (Array.isArray(colorEntry)) {\n fontColor = typeof colorEntry[0] === 'string' ? colorEntry[0] : undefined;\n } else if (typeof colorEntry === 'string') {\n fontColor = colorEntry;\n }\n } else if (typeof fontColorRaw === 'string') {\n fontColor = fontColorRaw;\n }\n\n const fontSizeRaw = header?.font?.size;\n let fontSize: React.CSSProperties['fontSize'] | undefined;\n\n if (Array.isArray(fontSizeRaw)) {\n fontSize = Array.isArray(fontSizeRaw[0]) ? fontSizeRaw[0][colIndex] : fontSizeRaw[colIndex];\n } else if (typeof fontSizeRaw === 'number') {\n fontSize = fontSizeRaw;\n }\n\n const updatedColIndex = colIndex >= 1 ? 1 : 0;\n const fillColorRaw = header?.fill?.color;\n const backgroundColor = Array.isArray(fillColorRaw) ? fillColorRaw[updatedColIndex] : fillColorRaw;\n\n const textAlignRaw = header?.align;\n const textAlign = Array.isArray(textAlignRaw) ? textAlignRaw[colIndex] : textAlignRaw;\n\n const style: React.CSSProperties = {\n ...(typeof fontColor === 'string' ? { color: fontColor } : {}),\n ...(typeof fontSize === 'number' ? { fontSize } : {}),\n ...(typeof backgroundColor === 'string' ? { backgroundColor } : {}),\n ...(textAlign ? { textAlign } : {}),\n };\n\n return { value, style };\n });\n };\n const columns = tableData.cells?.values ?? [];\n const cells = tableData.cells!.font ? tableData.cells! : input.layout?.template?.data?.table![0].cells;\n const rows = columns[0].map((_, rowIndex: number) =>\n columns.map((col, colIndex) => {\n const cellValue = col[rowIndex];\n const cleanValue = typeof cellValue === 'string' ? cleanText(cellValue) : cellValue;\n\n const formattedValue =\n typeof cleanValue === 'string' || typeof cleanValue === 'number'\n ? formatValue(cleanValue, colIndex, cells)\n : cleanValue;\n\n const rawFontColor = cells?.font?.color;\n let fontColor: React.CSSProperties['color'] | undefined;\n if (Array.isArray(rawFontColor)) {\n const entry = rawFontColor[colIndex];\n const colorValue = Array.isArray(entry) ? entry[rowIndex] : entry;\n fontColor = typeof colorValue === 'string' ? colorValue : undefined;\n } else if (typeof rawFontColor === 'string') {\n fontColor = rawFontColor;\n }\n\n const rawFontSize = cells?.font?.size;\n let fontSize: React.CSSProperties['fontSize'] | undefined;\n if (Array.isArray(rawFontSize)) {\n const entry = rawFontSize[colIndex];\n const fontSizeValue = Array.isArray(entry) ? entry[rowIndex] : entry;\n fontSize = typeof fontSizeValue === 'number' ? fontSizeValue : undefined;\n } else if (typeof rawFontSize === 'number') {\n fontSize = rawFontSize;\n }\n\n const updatedColIndex = colIndex >= 1 ? 1 : 0;\n const rawBackgroundColor = cells?.fill?.color;\n let backgroundColor: React.CSSProperties['backgroundColor'] | undefined;\n if (Array.isArray(rawBackgroundColor)) {\n const entry = rawBackgroundColor[updatedColIndex];\n const colorValue = Array.isArray(entry) ? entry[rowIndex] : entry;\n backgroundColor = typeof colorValue === 'string' ? colorValue : undefined;\n } else if (typeof rawBackgroundColor === 'string') {\n backgroundColor = rawBackgroundColor;\n }\n\n const rawTextAlign = Array.isArray(cells?.align) ? cells.align[colIndex] : cells?.align;\n const textAlign = rawTextAlign as React.CSSProperties['textAlign'] | undefined;\n\n const style: React.CSSProperties = {\n ...(fontColor ? { color: fontColor } : {}),\n ...(typeof fontSize === 'number' ? { fontSize } : {}),\n ...(backgroundColor ? { backgroundColor } : {}),\n ...(textAlign ? { textAlign } : {}),\n };\n\n return {\n value: formattedValue,\n style,\n };\n }),\n );\n\n const styles: ChartTableProps['styles'] = {\n root: {\n ...(input.layout?.font?.size ? { fontSize: input.layout.font.size } : {}),\n },\n };\n\n return {\n headers: normalizeHeaders(\n tableData.header?.values ?? [],\n tableData.header?.font ? tableData.header : input.layout?.template?.data?.table![0].header,\n ),\n rows,\n width: input.layout?.width,\n height: input.layout?.height,\n styles,\n };\n};\n\nexport const projectPolarToCartesian = (input: PlotlySchema): PlotlySchema => {\n const projection: PlotlySchema = { ...input };\n for (let sindex = 0; sindex < input.data.length; sindex++) {\n const series = input.data[sindex] as Partial<PlotData>;\n series.x = [] as Datum[];\n series.y = [] as Datum[];\n for (let ptindex = 0; ptindex < (series.r?.length ?? 0); ptindex++) {\n if (isInvalidValue(series.theta?.[ptindex]) || isInvalidValue(series.r?.[ptindex])) {\n continue;\n }\n\n const thetaRad = ((series.theta![ptindex] as number) * Math.PI) / 180;\n const radius = series.r![ptindex] as number;\n series.x.push(radius * Math.cos(thetaRad));\n series.y.push(radius * Math.sin(thetaRad));\n }\n projection.data[sindex] = series;\n }\n\n return projection;\n};\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nfunction isPlainObject(obj: any) {\n return (\n Object.prototype.toString.call(obj) === '[object Object]' &&\n Object.getPrototypeOf(obj).hasOwnProperty('hasOwnProperty')\n );\n}\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nvar arrayAttributes: any[] = [];\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nvar stack: any[] = [];\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nvar isArrayStack: any[] = [];\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nvar baseContainer: any, baseAttrName: any;\n/**\n * Interate iteratively through the trace object and find all the array attributes.\n * 1 trace record = 1 series of data\n * @param trace\n */\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport function findArrayAttributes(trace: any) {\n // Init basecontainer and baseAttrName\n crawlIntoTrace(baseContainer, 0, '');\n}\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nfunction crawlIntoTrace(container: any, i: number, astrPartial: any) {\n var item = container[stack[i]];\n var newAstrPartial = astrPartial + stack[i];\n if (i === stack.length - 1) {\n if (isArrayOrTypedArray(item)) {\n arrayAttributes.push(baseAttrName + newAstrPartial);\n }\n } else {\n if (isArrayStack[i]) {\n if (Array.isArray(item)) {\n for (var j = 0; j < item.length; j++) {\n if (isPlainObject(item[j])) {\n crawlIntoTrace(item[j], i + 1, newAstrPartial + '[' + j + '].');\n }\n }\n }\n } else if (isPlainObject(item)) {\n crawlIntoTrace(item, i + 1, newAstrPartial + '.');\n }\n }\n}\n\nfunction getLineOptions(line: Partial<ScatterLine> | undefined): LineChartLineOptions | undefined {\n if (!line) {\n return;\n }\n\n let lineOptions: LineChartLineOptions = {};\n if (line.dash) {\n lineOptions = { ...lineOptions, ...dashOptions[line.dash] };\n }\n\n switch (line.shape) {\n case 'spline':\n const smoothing = typeof line.smoothing === 'number' ? line.smoothing : 1;\n lineOptions.curve = d3CurveCardinal.tension(1 - smoothing / 1.3);\n break;\n case 'hv':\n lineOptions.curve = 'stepAfter';\n break;\n case 'vh':\n lineOptions.curve = 'stepBefore';\n break;\n case 'hvh':\n lineOptions.curve = 'step';\n break;\n default:\n lineOptions.curve = 'linear';\n }\n\n return Object.keys(lineOptions).length > 0 ? lineOptions : undefined;\n}\n\n// TODO: Use binary search to find the appropriate bin for numeric value.\nconst findBinIndex = (\n bins: string[][] | Bin<number, number>[],\n value: string | number | null | undefined,\n isString: boolean,\n) => {\n if (typeof value === 'undefined' || value === null) {\n return -1;\n }\n\n return isString\n ? (bins as string[][]).findIndex(bin => bin.includes(value as string))\n : (bins as Bin<number, number>[]).findIndex(\n (bin, index) =>\n (value as number) >= bin.x0! &&\n (index === bins.length - 1 ? (value as number) <= bin.x1! : (value as number) < bin.x1!),\n );\n};\n\nconst getBinSize = (bin: Bin<number, number>) => {\n return bin.x1! - bin.x0!;\n};\n\nconst getBinCenter = (bin: Bin<number, number>) => {\n return (bin.x1! + bin.x0!) / 2;\n};\n\n// TODO: Add support for date axes\nconst createBins = (\n data: TypedArray | Datum[] | Datum[][] | undefined,\n binStart?: number | string,\n binEnd?: number | string,\n binSize?: number | string,\n) => {\n if (!data || data.length === 0) {\n return [];\n }\n\n if (isStringArray(data)) {\n const categories = Array.from(new Set(data as string[]));\n const start = typeof binStart === 'number' ? Math.ceil(binStart) : 0;\n const stop = typeof binEnd === 'number' ? Math.floor(binEnd) + 1 : categories.length;\n const step = typeof binSize === 'number' ? binSize : 1;\n\n return d3Range(start, stop, step).map(i => categories.slice(i, i + step));\n }\n\n const scale = d3ScaleLinear()\n .domain(d3Extent<number>(data as number[]) as [number, number])\n .nice();\n let [minVal, maxVal] = scale.domain();\n\n minVal = typeof binStart === 'number' ? binStart : minVal;\n maxVal = typeof binEnd === 'number' ? binEnd : maxVal;\n\n const binGenerator = d3Bin().domain([minVal, maxVal]);\n\n if (typeof binSize === 'number' && binSize > 0) {\n const thresholds: number[] = [];\n const precision = Math.max(getPrecision(minVal), getPrecision(binSize));\n let th = precisionRound(minVal, precision);\n\n while (th < precisionRound(maxVal + binSize, precision)) {\n thresholds.push(th);\n th = precisionRound(th + binSize, precision);\n }\n\n minVal = thresholds[0];\n maxVal = thresholds[thresholds.length - 1];\n binGenerator.domain([minVal, maxVal]).thresholds(thresholds);\n\n // When the domain ends at the last threshold (maxVal), d3Bin creates an extra final bin where\n // both x0 and x1 are equal to maxVal and inclusive. The previous bin also has x1 equal to maxVal,\n // but it is exclusive. To maintain consistent bin widths, remove the final bin,\n // making the previous bin the last one, with both x0 and x1 inclusive.\n return binGenerator(data as number[]).slice(0, -1);\n }\n return binGenerator(data as number[]);\n};\n\nconst calculateHistFunc = (histfunc: PlotData['histfunc'] | undefined, bin: number[]) => {\n switch (histfunc) {\n case 'sum':\n return d3Sum(bin);\n case 'avg':\n return bin.length === 0 ? 0 : d3Sum(bin) / bin.length;\n case 'min':\n return d3Min(bin) ?? 0;\n case 'max':\n return d3Max(bin) ?? 0;\n default:\n return bin.length;\n }\n};\n\nconst calculateHistNorm = (\n histnorm: PlotData['histnorm'] | undefined,\n value: number,\n total: number,\n dx: number,\n dy: number = 1,\n) => {\n switch (histnorm) {\n case 'percent':\n return total === 0 ? 0 : (value / total) * 100;\n case 'probability':\n return total === 0 ? 0 : value / total;\n case 'density':\n return dx * dy === 0 ? 0 : value / (dx * dy);\n case 'probability density':\n return total * dx * dy === 0 ? 0 : value / (total * dx * dy);\n default:\n return value;\n }\n};\n\nconst getPrecision = (value: number) => {\n return value.toString().split('.')[1]?.length ?? 0;\n};\n\nconst precisionRound = (value: number, precision: number) => {\n const factor = Math.pow(10, precision);\n return Math.round(value * factor) / factor;\n};\n\nconst getLegendShape = (series: Partial<PlotData>): Legend['shape'] => {\n const dashType = series.line?.dash || 'solid';\n if (dashType === 'dot' || dashType === 'dash' || dashType === 'dashdot') {\n return 'dottedLine';\n } else if (series.mode?.includes('markers')) {\n return 'circle';\n }\n return 'default';\n};\n\nexport const getAllupLegendsProps = (\n input: PlotlySchema,\n colorMap: React.MutableRefObject<Map<string, string>>,\n colorwayType: ColorwayType,\n traceInfo: TraceInfo[],\n isDarkTheme?: boolean,\n): LegendsProps => {\n const allupLegends: Legend[] = [];\n // reduce on showlegend boolean propperty. reduce should return true if at least one series has showlegend true\n const toShowLegend = input.data.reduce((acc, series) => {\n return (\n acc || (series as Partial<PlotData>).showlegend === true || (series as Partial<PlotData>).showlegend === undefined\n );\n }, false);\n\n if (toShowLegend) {\n input.data.forEach((series: Data, index) => {\n if (traceInfo[index].type === 'donut') {\n const pieSeries = series as Partial<PieData>;\n const colors: string[] | string | null | undefined = extractColor(\n input.layout?.piecolorway ?? input.layout?.template?.layout?.colorway,\n colorwayType,\n input.layout?.piecolorway ?? pieSeries?.marker?.colors,\n colorMap,\n isDarkTheme,\n );\n\n pieSeries.labels?.forEach((label, labelIndex: number) => {\n const legend = `${label}`;\n // resolve color for each legend from the extracted colors\n const color: string = resolveColor(colors, labelIndex, legend, colorMap, isDarkTheme);\n if (legend !== '' && allupLegends.some(group => group.title === legend) === false) {\n allupLegends.push({\n title: legend,\n color,\n });\n }\n });\n } else if (isNonPlotType(traceInfo[index].type) === false) {\n const plotSeries = series as Partial<PlotData>;\n const name = plotSeries.legendgroup;\n const color = plotSeries.line?.color || plotSeries.marker?.color;\n const legendShape = getLegendShape(plotSeries);\n const resolvedColor = extractColor(\n input.layout?.template?.layout?.colorway,\n colorwayType,\n color,\n colorMap,\n isDarkTheme,\n );\n if (name !== undefined && name !== '' && allupLegends.some(group => group.title === name) === false) {\n allupLegends.push({\n title: name,\n color: resolvedColor as string,\n shape: legendShape,\n });\n }\n }\n });\n }\n\n return {\n legends: allupLegends,\n centerLegends: true,\n enabledWrapLines: true,\n canSelectMultipleLegends: true,\n };\n};\n\nconst getLegendProps = (data: Data[], layout: Partial<Layout> | undefined, isMultiPlot: boolean) => {\n const legends: string[] = [];\n if (data.length === 1) {\n legends.push(data[0].name || '');\n } else {\n data.forEach((series, index) => {\n legends.push(series.name || `Series ${index + 1}`);\n });\n }\n\n const hideLegendsData = data.every((series: Partial<PlotData>) => series.showlegend === false);\n const hideLegendsInferred = layout?.showlegend === false || (layout?.showlegend !== true && legends.length < 2);\n\n return {\n legends,\n hideLegend: isMultiPlot || hideLegendsInferred || hideLegendsData,\n };\n};\n\nexport const getNumberAtIndexOrDefault = (data: PlotData['z'] | undefined, index: number) => {\n if (isArrayOrTypedArray(data)) {\n if (typeof data![index] !== 'number' || !isFinite(data![index] as number)) {\n return;\n }\n\n return data![index] as number;\n }\n\n return 1;\n};\n\nexport const getValidXYRanges = (series: Partial<PlotData>) => {\n if (!isArrayOrTypedArray(series.x) || !isArrayOrTypedArray(series.y)) {\n return [];\n }\n\n const ranges: [number, number][] = [];\n let start = 0;\n let end = 0;\n for (; end < series.x!.length; end++) {\n if (isInvalidValue(series.x![end]) || isInvalidValue(series.y![end])) {\n if (end - start > 0) {\n ranges.push([start, end]);\n }\n start = end + 1;\n }\n }\n if (end - start > 0) {\n ranges.push([start, end]);\n }\n\n return ranges;\n};\n\nconst getIndexFromKey = (key: string, pattern: string): number => {\n const normalizedKey = key.replace(pattern, '') === '' ? '1' : key.replace(pattern, '');\n return parseInt(normalizedKey, 10) - 1;\n};\n\nexport const isNonPlotType = (chartType: string): boolean => {\n return ['donut', 'sankey', 'pie'].includes(chartType);\n};\n\nexport const getGridProperties = (\n schema: PlotlySchema | undefined,\n isMultiPlot: boolean,\n validTracesInfo: TraceInfo[],\n): GridProperties => {\n const domainX: DomainInterval[] = [];\n const domainY: DomainInterval[] = [];\n let cartesianDomains = 0;\n type AnnotationProps = {\n xAnnotation?: string;\n yAnnotation?: string;\n };\n const annotations: Record<number, AnnotationProps> = {};\n let templateRows = '1fr';\n let templateColumns = '1fr';\n const gridLayout: GridAxisProperties = {};\n if (!isMultiPlot) {\n return { templateRows, templateColumns, layout: gridLayout };\n }\n\n const layout = schema?.layout as Partial<Layout> | undefined;\n\n if (layout !== undefined && layout !== null && Object.keys(layout).length > 0) {\n Object.keys(layout ?? {}).forEach(key => {\n if (key.startsWith('xaxis')) {\n const index = getIndexFromKey(key, 'xaxis');\n const anchor = (layout[key as keyof typeof layout] as Partial<LayoutAxis>)?.anchor ?? 'y';\n const anchorIndex = getIndexFromKey(anchor, 'y');\n if (index !== anchorIndex) {\n throw new Error(`Invalid layout: xaxis ${index + 1} anchor should be y${anchorIndex + 1}`);\n }\n const xAxisLayout = layout[key as keyof typeof layout] as Partial<LayoutAxis>;\n const domainXInfo: DomainInterval = {\n start: xAxisLayout?.domain ? xAxisLayout.domain[0] : 0,\n end: xAxisLayout?.domain ? xAxisLayout.domain[1] : 1,\n };\n domainX.push(domainXInfo);\n } else if (key.startsWith('yaxis')) {\n const index = getIndexFromKey(key, 'yaxis');\n const anchor = (layout[key as keyof typeof layout] as Partial<LayoutAxis>)?.anchor ?? 'x';\n const anchorIndex = getIndexFromKey(anchor, 'x');\n if (index !== anchorIndex) {\n if ((index === 1 && anchorIndex === 0) || layout.yaxis2?.side === 'right') {\n // Special case for secondary y axis where yaxis2 can anchor to x1\n return { templateRows, templateColumns };\n }\n throw new Error(`Invalid layout: yaxis ${index + 1} anchor should be x${anchorIndex + 1}`);\n }\n const yAxisLayout = layout[key as keyof typeof layout] as Partial<LayoutAxis>;\n const domainYInfo: DomainInterval = {\n start: yAxisLayout?.domain ? yAxisLayout.domain[0] : 0,\n end: yAxisLayout?.domain ? yAxisLayout.domain[1] : 1,\n };\n domainY.push(domainYInfo);\n }\n });\n }\n\n cartesianDomains = domainX.length; // Assuming that the number of x and y axes is the same\n validTracesInfo.forEach((trace, index) => {\n if (isNonPlotType(trace.type)) {\n const series = schema?.data?.[index] as Partial<PieData> | Partial<SankeyData>;\n const domainXInfo: DomainInterval = {\n start: series.domain?.x ? series.domain.x[0] : 0,\n end: series.domain?.x ? series.domain.x[1] : 1,\n };\n const domainYInfo: DomainInterval = {\n start: series.domain?.y ? series.domain.y[0] : 0,\n end: series.domain?.y ? series.domain.y[1] : 1,\n };\n domainX.push(domainXInfo);\n domainY.push(domainYInfo);\n }\n });\n\n if (layout !== undefined && layout !== null && Object.keys(layout).length > 0) {\n layout.annotations?.forEach(annotation => {\n const xMatches = domainX.flatMap((interval, idx) =>\n (annotation?.x as number) >= interval.start && (annotation?.x as number) <= interval.end ? [idx] : [],\n );\n const yMatch = domainY.findIndex(\n (interval, yIndex) =>\n xMatches.includes(yIndex) &&\n (annotation?.y as number) >= interval.start &&\n (annotation?.y as number) <= interval.end,\n );\n\n if (yMatch !== -1) {\n if (annotations[yMatch] === undefined) {\n annotations[yMatch] = {} as AnnotationProps;\n }\n if ((annotation?.textangle as number) === 90) {\n annotations[yMatch].yAnnotation = annotation.text;\n } else {\n annotations[yMatch].xAnnotation = annotation.text;\n }\n }\n });\n }\n\n if (domainX.length > 0) {\n const uniqueXIntervals = new Map<string, DomainInterval>();\n domainX.forEach(interval => {\n const key = `${interval.start}-${interval.end}`;\n if (!uniqueXIntervals.has(key)) {\n uniqueXIntervals.set(key, interval);\n }\n });\n const sortedXStart = Array.from(uniqueXIntervals.values())\n .map(interval => interval.start)\n .sort();\n\n templateColumns = `repeat(${sortedXStart.length}, 1fr)`;\n\n domainX.forEach((interval, index) => {\n const cellName =\n index >= cartesianDomains\n ? `${NON_PLOT_KEY_PREFIX}${index - cartesianDomains + 1}`\n : (`x${index === 0 ? '' : index + 1}` as XAxisName);\n\n const columnIndex = sortedXStart.findIndex(start => start === interval.start);\n const columnNumber = columnIndex + 1; // Column numbers are 1-based\n\n const annotationProps = annotations[index] as AnnotationProps;\n const xAnnotation = annotationProps?.xAnnotation;\n\n const row: AxisProperties = {\n row: -1,\n column: columnNumber,\n xAnnotation,\n xDomain: interval,\n yDomain: { start: 0, end: 1 }, // Default yDomain for x-axis\n };\n gridLayout[cellName] = row;\n });\n }\n if (domainY.length > 0) {\n const uniqueYIntervals = new Map<string, DomainInterval>();\n domainY.forEach(interval => {\n const key = `${interval.start}-${interval.end}`;\n if (!uniqueYIntervals.has(key)) {\n uniqueYIntervals.set(key, interval);\n }\n });\n const sortedYStart = Array.from(uniqueYIntervals.values())\n .map(interval => interval.start)\n .sort();\n\n const numberOfRows = sortedYStart.length;\n\n templateRows = `repeat(${numberOfRows}, 1fr)`;\n domainY.forEach((interval, index) => {\n const cellName =\n index >= cartesianDomains\n ? `${NON_PLOT_KEY_PREFIX}${index - cartesianDomains + 1}`\n : (`x${index === 0 ? '' : index + 1}` as XAxisName);\n const rowIndex = sortedYStart.findIndex(start => start === interval.start);\n const rowNumber = numberOfRows - rowIndex; // Rows are 1-based and we need to reverse the order for CSS grid\n\n const annotationProps = annotations[index] as AnnotationProps;\n const yAnnotation = annotationProps?.yAnnotation;\n\n const cell = gridLayout[cellName];\n\n if (cell !== undefined) {\n cell.row = rowNumber;\n cell.yAnnotation = yAnnotation;\n cell.yDomain = interval;\n }\n });\n }\n\n return {\n templateRows,\n templateColumns,\n layout: gridLayout,\n };\n};\n\ntype GetAxisCategoryOrderPropsResult = Pick<CartesianChartProps, 'xAxisCategoryOrder' | 'yAxisCategoryOrder'>;\n\n/**\n * @see {@link https://github.com/plotly/plotly.js/blob/master/src/plots/cartesian/category_order_defaults.js#L50}\n */\nconst getAxisCategoryOrderProps = (data: Data[], layout: Partial<Layout> | undefined) => {\n const result: GetAxisCategoryOrderPropsResult = {};\n\n const axesById: Record<string, Partial<LayoutAxis> | undefined> = {\n x: layout?.xaxis,\n y: layout?.yaxis,\n };\n Object.keys(axesById).forEach(axId => {\n const ax = axesById[axId];\n const axLetter = axId[0] as 'x' | 'y';\n const propName = `${axLetter}AxisCategoryOrder` as keyof GetAxisCategoryOrderPropsResult;\n\n const values: Datum[] = [];\n data.forEach((series: Partial<PlotData>) => {\n series[axLetter]?.forEach(val => {\n if (!isInvalidValue(val)) {\n values.push(val as Datum);\n }\n });\n });\n\n const isAxisTypeCategory =\n ax?.type === 'category' || (isStringArray(values) && !isNumberArray(values) && !isDateArray(values));\n if (!isAxisTypeCategory) {\n return;\n }\n\n const isValidArray = isArrayOrTypedArray(ax?.categoryarray) && ax!.categoryarray!.length > 0;\n if (isValidArray && (!ax?.categoryorder || ax.categoryorder === 'array')) {\n result[propName] = ax!.categoryarray;\n return;\n }\n\n if (!ax?.categoryorder || ax.categoryorder === 'trace' || ax.categoryorder === 'array') {\n const categoriesInTraceOrder = Array.from(new Set(values as string[]));\n result[propName] = categoriesInTraceOrder;\n return;\n }\n\n result[propName] = ax.categoryorder;\n });\n\n return result;\n};\n"],"names":["React","bin","d3Bin","extent","d3Extent","sum","d3Sum","min","d3Min","max","d3Max","range","d3Range","scaleLinear","d3ScaleLinear","format","d3Format","DataVizPalette","getColorFromToken","findNumericMinMaxOfY","formatScientificLimitWidth","MIN_DONUT_RADIUS","isArrayOrTypedArray","isDate","isDateArray","isNumberArray","isStringArray","isYearArray","isInvalidValue","formatToLocaleString","curveCardinal","d3CurveCardinal","getOpacity","extractColor","resolveColor","rgb","NON_PLOT_KEY_PREFIX","SINGLE_REPEAT","dashOptions","dot","strokeDasharray","strokeLinecap","strokeWidth","lineBorderWidth","dash","longdash","dashdot","longdashdot","solid","getTitles","layout","titles","chartTitle","title","text","xAxisTitle","xaxis","yAxisTitle","yaxis","getXAxisTickFormat","series","xAxis","getXAxisProperties","tickformat","tickFormat","getYAxisTickFormat","yAxis","getYAxisProperties","yAxisTickFormat","getYMinMaxValues","length","yMinValue","yMaxValue","getFormattedCalloutYData","yVal","yAxisFormat","correctYearMonth","xValues","presentYear","Date","getFullYear","Array","isArray","Error","dates","map","possiblyMonthValue","parsedDate","filteredDateIndexPairs","date","index","filter","i","currentDate","previousDate","currentMonth","getMonth","previousMonth","currentYear","previousYear","setFullYear","month","usesSecondaryYScale","yaxis2","anchor","side","getSecondaryYAxisValues","data","maxAllowedMinY","minAllowedMaxY","containsSecondaryYAxis","forEach","yValues","y","Math","secondaryYAxistitle","undefined","secondaryYScaleOptions","_getGaugeAxisColor","colorway","colorwayType","color","colorMap","isDarkTheme","extractedColors","resolveXAxisPoint","x","isXYearCategory","isXString","isXDate","isXNumber","toString","parseFloat","transformPlotlyJsonToDonutProps","input","isMultiPlot","firstData","colors","piecolorway","template","marker","mapLegendToDataPoint","labels","label","value","getNumberAtIndexOrDefault","values","legend","width","height","hideLabels","textinfo","includes","donutMarginHorizontal","donutMarginVertical","innerRadius","hole","chartData","Object","hideLegend","showlegend","showLabelsInPercent","roundCorners","transformPlotlyJsonToVSBCProps","fallbackVSBC","vsbcData","mapXToDataPoints","secondaryYAxisValues","legends","getLegendProps","colorScale","index1","coloraxis","colorscale","createColorScale","extractedBarColors","extractedLineColors","line","validXYRanges","getValidXYRanges","rangeStart","rangeEnd","rangeIdx","rangeXValues","slice","rangeYValues","index2","xAxisPoint","lineData","opacity","yAxisCalloutData","type","push","copy","formatHex8","lineColor","lineOptions","mode","getLineOptions","legendShape","getLegendShape","useSecondaryYScale","barWidth","wrapXAxisLables","hideTickOverlap","barGapMax","showYAxisLables","noOfCharsToTruncate","showYAxisLablesTooltip","getAxisCategoryOrderProps","scale","colorValues","dMin","dMax","cmin","cmax","scaleDomain","pos","scaleColors","item","domain","transformPlotlyJsonToGVBCProps","gvbcData","name","key","xAxisCalloutData","transformPlotlyJsonToVBCProps","vbcData","seriesIdx","xVal","xBins","createBins","xbins","start","end","size","yBins","total","binIdx","findBinIndex","calculateHistFunc","histfunc","calculateHistNorm","histnorm","getBinSize","join","getBinCenter","x0","x1","maxBarWidth","transformPlotlyJsonToAreaChartProps","transformPlotlyJsonToScatterTraceProps","transformPlotlyJsonToLineChartProps","transformPlotlyJsonToScatterChartProps","chartType","isScatterMarkers","isAreaChart","isScatterChart","seriesColor","seriesOpacity","fill","markerSizes","textValues","markerSize","flat","yMinMax","yMinMaxValues","startValue","endValue","numDataPoints","reduce","lineChartPoints","chartProps","lineChartData","scatterChartProps","scatterChartData","commonProps","supportNegativeData","useUTC","optimizeLargeData","roundedTicks","transformPlotlyJsonToHorizontalBarWithAxisProps","yValue","point","chartHeight","margin","l","padding","pad","availableHeight","numberOfRows","Set","d","scalingFactor","gapFactor","barHeight","transformPlotlyJsonToHeatmapProps","heatmapDataPoints","zMin","Number","POSITIVE_INFINITY","zMax","NEGATIVE_INFINITY","zValues","zVal","z","isYString","ybins","zBins","xBinIdx","yBinIdx","row","xBin","xIdx","yBin","yIdx","rectText","heatmapData","defaultDomain","defaultRange","color1","color2","color3","histogram2d","heatmap","isDivergent","isSequential","isSequentialMinus","diverging","sequential","sequentialminus","domainValuesForColorScale","arr","rangeValuesForColorScale","sortOrder","transformPlotlyJsonToSankeyProps","node","link","validLinks","val","source","target","extractedNodeColors","sankeyChartData","nodes","nodeId","links","validLink","SankeyChartData","transformPlotlyJsonToGaugeProps","stepsColors","gauge","steps","step","segments","axis","disabled","sublabel","sublabelColor","delta","reference","diff","extractedIncreasingDeltaColors","increasing","abs","extractedDecreasingDeltaColors","decreasing","styles","chartValue","minValue","maxValue","chartValueFormat","variant","cleanText","replace","trim","formatValue","colIndex","cells","formatStr","prefix","suffix","formatted","transformPlotlyJsonToChartTableProps","tableData","normalizeHeaders","header","cleanedValues","cell","Boolean","fontColorRaw","font","fontColor","colorEntry","fontSizeRaw","fontSize","updatedColIndex","fillColorRaw","backgroundColor","textAlignRaw","align","textAlign","style","columns","table","rows","_","rowIndex","col","cellValue","cleanValue","formattedValue","rawFontColor","entry","colorValue","rawFontSize","fontSizeValue","rawBackgroundColor","rawTextAlign","root","headers","projectPolarToCartesian","projection","sindex","ptindex","r","theta","thetaRad","PI","radius","cos","sin","isPlainObject","obj","prototype","call","getPrototypeOf","hasOwnProperty","arrayAttributes","stack","isArrayStack","baseContainer","baseAttrName","findArrayAttributes","trace","crawlIntoTrace","container","astrPartial","newAstrPartial","j","shape","smoothing","curve","tension","keys","bins","isString","findIndex","binStart","binEnd","binSize","categories","from","ceil","stop","floor","nice","minVal","maxVal","binGenerator","thresholds","precision","getPrecision","th","precisionRound","dx","dy","split","factor","pow","round","dashType","getAllupLegendsProps","traceInfo","allupLegends","toShowLegend","acc","pieSeries","labelIndex","some","group","isNonPlotType","plotSeries","legendgroup","resolvedColor","centerLegends","enabledWrapLines","canSelectMultipleLegends","hideLegendsData","every","hideLegendsInferred","isFinite","ranges","getIndexFromKey","pattern","normalizedKey","parseInt","getGridProperties","schema","validTracesInfo","domainX","domainY","cartesianDomains","annotations","templateRows","templateColumns","gridLayout","startsWith","anchorIndex","xAxisLayout","domainXInfo","yAxisLayout","domainYInfo","annotation","xMatches","flatMap","interval","idx","yMatch","yIndex","textangle","yAnnotation","xAnnotation","uniqueXIntervals","Map","has","set","sortedXStart","sort","cellName","columnIndex","columnNumber","annotationProps","column","xDomain","yDomain","uniqueYIntervals","sortedYStart","rowNumber","result","axesById","axId","ax","axLetter","propName","isAxisTypeCategory","isValidArray","categoryarray","categoryorder","categoriesInTraceOrder"],"mappings":"AAAA,0BAA0B,GAC1B,8BAA8B,GAC9B,yBAAyB,GACzB,YAAYA,WAAW,QAAQ;AAC/B,SACEC,OAAOC,KAAK,EACZC,UAAUC,QAAQ,EAClBC,OAAOC,KAAK,EACZC,OAAOC,KAAK,EACZC,OAAOC,KAAK,EACZC,SAASC,OAAO,QAEX,WAAW;AAClB,SAASC,eAAeC,aAAa,QAAQ,WAAW;AACxD,SAASC,UAAUC,QAAQ,QAAQ,YAAY;AAqB/C,SAASC,cAAc,EAAEC,iBAAiB,QAAQ,yBAAyB;AAK3E,SAASC,oBAAoB,EAAEC,0BAA0B,EAAEC,gBAAgB,QAAQ,4BAA4B;AAiB/G,SACEC,mBAAmB,EACnBC,MAAM,EACNC,WAAW,EACXC,aAAa,EACbC,aAAa,EACbC,WAAW,EACXC,cAAc,EACdC,oBAAoB,QACf,4BAA4B;AACnC,SAASC,iBAAiBC,eAAe,QAAQ,WAAW;AAE5D,SAASC,UAAU,EAAEC,YAAY,EAAEC,YAAY,QAAQ,uBAAuB;AAC9E,SAASC,GAAG,QAAQ,WAAW;AAK/B,OAAO,MAAMC,sBAAsB,WAAW;AAC9C,OAAO,MAAMC,gBAAgB,iBAAiB;AA6B9C,MAAMC,cAAc;IAClBC,KAAK;QACHC,iBAAiB;QACjBC,eAAe;QACfC,aAAa;QACbC,iBAAiB;IACnB;IACAC,MAAM;QACJJ,iBAAiB;QACjBC,eAAe;QACfC,aAAa;QACbC,iBAAiB;IACnB;IACAE,UAAU;QACRL,iBAAiB;QACjBC,eAAe;QACfC,aAAa;QACbC,iBAAiB;IACnB;IACAG,SAAS;QACPN,iBAAiB;QACjBC,eAAe;QACfC,aAAa;QACbC,iBAAiB;IACnB;IACAI,aAAa;QACXP,iBAAiB;QACjBC,eAAe;QACfC,aAAa;QACbC,iBAAiB;IACnB;IACAK,OAAO;QACLR,iBAAiB;QACjBC,eAAe;QACfC,aAAa;QACbC,iBAAiB;IACnB;AACF;AAEA,SAASM,UAAUC,MAAmC;QAEaA,eAC5CA,eAAoCA,gBAAuBA,qBAAAA,gBAC3DA,eAAoCA,gBAAuBA,qBAAAA;QAFfA,oBACeA,0BACAA;IAHhF,MAAMC,SAAS;QACbC,YAAY,QAAOF,mBAAAA,6BAAAA,OAAQG,KAAK,MAAK,WAAWH,OAAOG,KAAK,GAAGH,CAAAA,qBAAAA,mBAAAA,8BAAAA,gBAAAA,OAAQG,KAAK,cAAbH,oCAAAA,cAAeI,IAAI,cAAnBJ,gCAAAA,qBAAuB;QACtFK,YAAY,QAAOL,mBAAAA,8BAAAA,gBAAAA,OAAQM,KAAK,cAAbN,oCAAAA,cAAeG,KAAK,MAAK,WAAWH,mBAAAA,8BAAAA,iBAAAA,OAAQM,KAAK,cAAbN,qCAAAA,eAAeG,KAAK,GAAGH,CAAAA,2BAAAA,mBAAAA,8BAAAA,iBAAAA,OAAQM,KAAK,cAAbN,sCAAAA,sBAAAA,eAAeG,KAAK,cAApBH,0CAAAA,oBAAsBI,IAAI,cAA1BJ,sCAAAA,2BAA8B;QAC5GO,YAAY,QAAOP,mBAAAA,8BAAAA,gBAAAA,OAAQQ,KAAK,cAAbR,oCAAAA,cAAeG,KAAK,MAAK,WAAWH,mBAAAA,8BAAAA,iBAAAA,OAAQQ,KAAK,cAAbR,qCAAAA,eAAeG,KAAK,GAAGH,CAAAA,2BAAAA,mBAAAA,8BAAAA,iBAAAA,OAAQQ,KAAK,cAAbR,sCAAAA,sBAAAA,eAAeG,KAAK,cAApBH,0CAAAA,oBAAsBI,IAAI,cAA1BJ,sCAAAA,2BAA8B;IAC9G;IACA,OAAOC;AACT;AAEA,MAAMQ,qBAAqB,CAACC,QAAcV;IACxC,MAAMW,QAAQC,mBAAmBF,QAAQV;IACzC,IAAIW,kBAAAA,4BAAAA,MAAOE,UAAU,EAAE;QACrB,OAAO;YACLC,UAAU,EAAEH,kBAAAA,4BAAAA,MAAOE,UAAU;QAC/B;IACF;IAEA,OAAO,CAAC;AACV;AAEA,MAAME,qBAAqB,CAACL,QAAcV;IACxC,MAAMgB,QAAQC,mBAAmBP,QAAQV;IACzC,IAAIgB,kBAAAA,4BAAAA,MAAOH,UAAU,EAAE;QACrB,OAAO;YACLK,iBAAiBpD,SAASkD,kBAAAA,4BAAAA,MAAOH,UAAU;QAC7C;IACF;IAEA,OAAO,CAAC;AACV;AAEA,MAAMM,mBAAmB,CAACT,QAAcV;QACxBiB;IAAd,MAAMxD,SAAQwD,sBAAAA,mBAAmBP,QAAQV,qBAA3BiB,0CAAAA,oBAAoCxD,KAAK;IACvD,IAAIA,SAASA,MAAM2D,MAAM,KAAK,GAAG;QAC/B,OAAO;YACLC,WAAW5D,KAAK,CAAC,EAAE;YACnB6D,WAAW7D,KAAK,CAAC,EAAE;QACrB;IACF;IACA,OAAO,CAAC;AACV;AAEA,MAAMwD,qBAAqB,CAACP,QAAcV;IACxC,OAAOA,mBAAAA,6BAAAA,OAAQQ,KAAK;AACtB;AAEA,MAAMI,qBAAqB,CAACF,QAAcV;IACxC,OAAOA,mBAAAA,6BAAAA,OAAQM,KAAK;AACtB;AAEA,MAAMiB,2BAA2B,CAC/BC,MACAC;IAEA,IAAI,QAAOA,wBAAAA,kCAAAA,YAAaP,eAAe,MAAK,cAAc,OAAOM,SAAS,UAAU;QAClF,OAAOC,YAAYP,eAAe,CAACM;IACrC;IACA,OAAO7C,qBAAqB6C;AAC9B;AAEA,8DAA8D;AAC9D,OAAO,MAAME,mBAAmB,CAACC;IAC/B,MAAMC,cAAc,IAAIC,OAAOC,WAAW;IAC1C,IAAIH,QAAQP,MAAM,GAAG,KAAKW,MAAMC,OAAO,CAACL,OAAO,CAAC,EAAE,GAAG;QACnD,MAAM,IAAIM,MAAM;IAClB;IACA,MAAMC,QAAQ,AAACP,QAAoBQ,GAAG,CAACC,CAAAA;QACrC,MAAMC,aAAa,GAAGD,mBAAmB,KAAK,EAAER,aAAa;QAC7D,OAAOvD,OAAOgE,cAAc,IAAIR,KAAKQ,cAAc;IACrD;IACA,MAAMC,yBAAyBJ,MAAMC,GAAG,CAAC,CAACI,MAAMC,QAAU;YAACD;YAAMC;SAAM,EAAEC,MAAM,CAAC,CAAC,CAACF,KAAK,GAAKA,SAAS;IAIrG,IAAK,IAAIG,IAAIJ,uBAAuBlB,MAAM,GAAG,GAAGsB,IAAI,GAAGA,IAAK;QAC1D,MAAMC,cAAcL,sBAAsB,CAACI,EAAE,CAAC,EAAE;QAChD,MAAME,eAAeN,sBAAsB,CAACI,IAAI,EAAE,CAAC,EAAE;QACrD,MAAMG,eAAeF,YAAYG,QAAQ;QACzC,MAAMC,gBAAgBH,aAAaE,QAAQ;QAC3C,MAAME,cAAcL,YAAYb,WAAW;QAC3C,MAAMmB,eAAeL,aAAad,WAAW;QAC7C,IAAIiB,iBAAiBF,cAAc;YACjCP,sBAAsB,CAACI,IAAI,EAAE,CAAC,EAAE,CAACQ,WAAW,CAACF,cAAc;QAC7D,OAAO,IAAIC,eAAeD,aAAa;YACrCV,sBAAsB,CAACI,IAAI,EAAE,CAAC,EAAE,CAACQ,WAAW,CAACF;QAC/C;QACAd,KAAK,CAACI,sBAAsB,CAACI,IAAI,EAAE,CAAC,EAAE,CAAC,GAAGJ,sBAAsB,CAACI,IAAI,EAAE,CAAC,EAAE;IAC5E;IACAf,UAAU,AAACA,QAAoBQ,GAAG,CAAC,CAACgB,OAAOX;QACzC,IAAIN,KAAK,CAACM,MAAM,KAAK,MAAM;YACzB,OAAO;QACT;QACA,OAAO,GAAGW,MAAM,KAAK,EAAEjB,KAAK,CAACM,MAAM,CAAEV,WAAW,IAAI;IACtD;IACA,OAAOH;AACT,EAAE;AAEF,MAAMyB,sBAAsB,CAAC1C,QAA2BV;QACrBA,gBAAkCA;IAAnE,OAAOU,OAAOF,KAAK,KAAK,QAASR,CAAAA,CAAAA,mBAAAA,8BAAAA,iBAAAA,OAAQqD,MAAM,cAAdrD,qCAAAA,eAAgBsD,MAAM,MAAK,OAAOtD,CAAAA,mBAAAA,8BAAAA,kBAAAA,OAAQqD,MAAM,cAAdrD,sCAAAA,gBAAgBuD,IAAI,MAAK,OAAM;AACpG;AAEA,MAAMC,0BAA0B,CAC9BC,MACAzD,QACA0D,gBACAC;QA2BI3D,gBAOOA,iBAEIA,sBAAAA;IAlCf,IAAI4D,yBAAyB;IAC7B,IAAIvC;IACJ,IAAIC;IAEJmC,KAAKI,OAAO,CAAC,CAACnD;QACZ,IAAI0C,oBAAoB1C,QAAQV,SAAS;YACvC4D,yBAAyB;YACzB,MAAME,UAAUpD,OAAOqD,CAAC;YACxB,IAAID,SAAS;gBACXzC,YAAY2C,KAAK3G,GAAG,IAAIyG;gBACxBxC,YAAY0C,KAAKzG,GAAG,IAAIuG;YAC1B;QACF;IACF;IAEA,IAAI,CAACF,wBAAwB;QAC3B,OAAO,CAAC;IACV;IAEA,IAAI,OAAOvC,cAAc,YAAY,OAAOqC,mBAAmB,UAAU;QACvErC,YAAY2C,KAAK3G,GAAG,CAACgE,WAAWqC;IAClC;IACA,IAAI,OAAOpC,cAAc,YAAY,OAAOqC,mBAAmB,UAAU;QACvErC,YAAY0C,KAAKzG,GAAG,CAAC+D,WAAWqC;IAClC;IACA,IAAI3D,mBAAAA,8BAAAA,iBAAAA,OAAQqD,MAAM,cAAdrD,qCAAAA,eAAgBvC,KAAK,EAAE;QACzB4D,YAAYrB,OAAOqD,MAAM,CAAC5F,KAAK,CAAC,EAAE;QAClC6D,YAAYtB,OAAOqD,MAAM,CAAC5F,KAAK,CAAC,EAAE;IACpC;IAEA,OAAO;QACLwG,qBACE,QAAOjE,mBAAAA,8BAAAA,kBAAAA,OAAQqD,MAAM,cAAdrD,sCAAAA,gBAAgBG,KAAK,MAAK,WAC7BH,OAAOqD,MAAM,CAAClD,KAAK,GACnB,QAAOH,mBAAAA,8BAAAA,kBAAAA,OAAQqD,MAAM,cAAdrD,uCAAAA,uBAAAA,gBAAgBG,KAAK,cAArBH,2CAAAA,qBAAuBI,IAAI,MAAK,WACvCJ,OAAOqD,MAAM,CAAClD,KAAK,CAACC,IAAI,GACxB8D;QACNC,wBAAwB;YACtB9C;YACAC;QACF;IACF;AACF;AAEA,OAAO,MAAM8C,qBAAqB,CAChCC,UACAC,cACAC,OACAC,UACAC;IAEA,MAAMC,kBAAkB3F,aAAasF,UAAUC,cAAcC,OAAOC,UAAUC;IAC9E,OAAOzF,aAAa0F,iBAAiB,GAAG,IAAIF,UAAUC;AACxD,EAAE;AAEF,OAAO,MAAME,oBAAoB,CAC/BC,GACAC,iBACAC,WACAC,SACAC;IAEA,IAAIJ,MAAM,QAAQA,MAAMV,WAAW;QACjC,OAAO;IACT;IACA,IAAIW,iBAAiB;QACnB,OAAOD,EAAEK,QAAQ;IACnB;IACA,IAAIH,WAAW;QACb,IAAIC,SAAS;YACX,MAAMxC,OAAO,IAAIV,KAAK+C;YACtB,OAAOrC;QACT;QACA,IAAIyC,WAAW;YACb,OAAOE,WAAWN;QACpB;QACA,OAAOA;IACT;IACA,OAAOA;AACT,EAAE;AAEF,OAAO,MAAMO,kCAAkC,CAC7CC,OACAC,aACAb,UACAF,cACAG;QAQEW,eAA6BA,+BAAAA,wBAAAA,gBAE7BA,gBAA6BE,mBAK/BA,mBAqBsBF,gBACCA,gBAgBMA,gBACpBA;IApDT,MAAME,YAAYF,MAAM3B,IAAI,CAAC,EAAE;QAM7B2B,2BAEAA;IANF,2CAA2C;IAC3C,+BAA+B;IAC/B,+CAA+C;IAC/C,MAAMG,SAA+CxG,aACnDqG,CAAAA,6BAAAA,gBAAAA,MAAMpF,MAAM,cAAZoF,oCAAAA,cAAcI,WAAW,cAAzBJ,uCAAAA,6BAA6BA,iBAAAA,MAAMpF,MAAM,cAAZoF,sCAAAA,yBAAAA,eAAcK,QAAQ,cAAtBL,8CAAAA,gCAAAA,uBAAwBpF,MAAM,cAA9BoF,oDAAAA,8BAAgCf,QAAQ,EACrEC,cACAc,CAAAA,8BAAAA,iBAAAA,MAAMpF,MAAM,cAAZoF,qCAAAA,eAAcI,WAAW,cAAzBJ,wCAAAA,6BAA6BE,sBAAAA,iCAAAA,oBAAAA,UAAWI,MAAM,cAAjBJ,wCAAAA,kBAAmBC,MAAM,EACtDf,UACAC;IAEF,MAAMkB,uBAAuD,CAAC;KAC9DL,oBAAAA,UAAUM,MAAM,cAAhBN,wCAAAA,kBAAkBzB,OAAO,CAAC,CAACgC,OAAOrD;QAChC,MAAMsD,QAAQC,0BAA0BT,UAAUU,MAAM,EAAExD;QAC1D,IAAI9D,eAAeoH,UAAU,AAACA,QAAmB,GAAG;YAClD;QACF;QAEA,MAAMG,SAAS,GAAGJ,OAAO;QACzB,0DAA0D;QAC1D,MAAMtB,QAAgBvF,aAAauG,QAAQ/C,OAAOyD,QAAQzB,UAAUC;QAEpE,IAAI,CAACkB,oBAAoB,CAACM,OAAO,EAAE;YACjCN,oBAAoB,CAACM,OAAO,GAAG;gBAC7BA;gBACAxC,MAAMqC;gBACNvB;YACF;QACF,OAAO;YACLoB,oBAAoB,CAACM,OAAO,CAACxC,IAAI,IAAKqC;QACxC;IACF;QAEsBV;IAAtB,MAAMc,QAAgBd,CAAAA,uBAAAA,iBAAAA,MAAMpF,MAAM,cAAZoF,qCAAAA,eAAcc,KAAK,cAAnBd,iCAAAA,sBAAuB;QACtBA;IAAvB,MAAMe,SAAiBf,CAAAA,wBAAAA,iBAAAA,MAAMpF,MAAM,cAAZoF,qCAAAA,eAAce,MAAM,cAApBf,kCAAAA,uBAAwB;IAC/C,MAAMgB,aAAsBd,UAAUe,QAAQ,GAC1C,CAAC;QAAC;QAAS;QAAW;KAAgB,CAACC,QAAQ,CAAChB,UAAUe,QAAQ,IAClE;IACJ,MAAME,wBAAgCH,aAAa,IAAI;IACvD,MAAMI,sBAA8B,KAAMJ,CAAAA,aAAa,IAAI,EAAC;IAC5D,MAAMK,cAAsBnB,UAAUoB,IAAI,GACtCpB,UAAUoB,IAAI,GAAI1C,CAAAA,KAAK3G,GAAG,CAAC6I,QAAQK,uBAAuBJ,SAASK,uBAAuB,CAAA,IAC1FrI;IACJ,MAAM,EAAE+B,UAAU,EAAE,GAAGH,UAAUqF,MAAMpF,MAAM;IAE7C,OAAO;QACLyD,MAAM;YACJvD;YACAyG,WAAWC,OAAOZ,MAAM,CAACL;QAC3B;QACAkB,YAAYxB,eAAeD,EAAAA,iBAAAA,MAAMpF,MAAM,cAAZoF,qCAAAA,eAAc0B,UAAU,MAAK;QACxDZ,KAAK,GAAEd,iBAAAA,MAAMpF,MAAM,cAAZoF,qCAAAA,eAAcc,KAAK;QAC1BC;QACAM;QACAL;QACAW,qBAAqBzB,UAAUe,QAAQ,GAAG;YAAC;YAAW;SAAgB,CAACC,QAAQ,CAAChB,UAAUe,QAAQ,IAAI;QACtGW,cAAc;IAChB;AACF,EAAE;AAEF,OAAO,MAAMC,iCAAiC,CAC5C7B,OACAC,aACAb,UACAF,cACAG,aACAyC;QAyGS9B,eACCA,gBAMgB+B;IA9G1B,MAAMC,mBAAiE,CAAC;IACxE,IAAI9F,YAAY;IAChB,MAAM+F,uBAAuB7D,wBAAwB4B,MAAM3B,IAAI,EAAE2B,MAAMpF,MAAM;IAC7E,MAAM,EAAEsH,OAAO,EAAET,UAAU,EAAE,GAAGU,eAAenC,MAAM3B,IAAI,EAAE2B,MAAMpF,MAAM,EAAEqF;IACzE,IAAImC,aAAsDtD;IAC1D,MAAMhD,kBAAkBH,mBAAmBqE,MAAM3B,IAAI,CAAC,EAAE,EAAE2B,MAAMpF,MAAM;IACtE,IAAIqB,YAAY;IAChB+D,MAAM3B,IAAI,CAACI,OAAO,CAAC,CAACnD,QAA2B+G;YAE3CrC,oCAAAA,yBAAAA,eACoB1E,gBACnBA,iBACOA,sBAAAA,iBAOR0E,+BAAAA,wBAAAA,gBAEA1E,iBAMA0E,gCAAAA,yBAAAA,gBAEA1E;QArBF,IACE0E,EAAAA,gBAAAA,MAAMpF,MAAM,cAAZoF,qCAAAA,0BAAAA,cAAcsC,SAAS,cAAvBtC,+CAAAA,qCAAAA,wBAAyBuC,UAAU,cAAnCvC,yDAAAA,mCAAqChE,MAAM,KAC3ChD,qBAAoBsC,iBAAAA,OAAOgF,MAAM,cAAbhF,qCAAAA,eAAe6D,KAAK,KACxC,EAAC7D,kBAAAA,OAAOgF,MAAM,cAAbhF,sCAAAA,gBAAe6D,KAAK,EAAanD,MAAM,GAAG,KAC3C,SAAQV,kBAAAA,OAAOgF,MAAM,cAAbhF,uCAAAA,uBAAAA,gBAAe6D,KAAK,cAApB7D,2CAAD,AAACA,oBAAkC,CAAC,EAAE,MAAK,UAClD;YACA8G,aAAaI,iBAAiBxC,MAAMpF,MAAM,EAAEU;QAC9C;QACA,MAAMmE,kBAAkBpG,YAAYiC,OAAOkE,CAAC,GAAG,2DAA2D;QAC1G,+CAA+C;QAC/C,MAAMiD,qBAAqB9I,cACzBqG,iBAAAA,MAAMpF,MAAM,cAAZoF,sCAAAA,yBAAAA,eAAcK,QAAQ,cAAtBL,8CAAAA,gCAAAA,uBAAwBpF,MAAM,cAA9BoF,oDAAAA,8BAAgCf,QAAQ,EACxCC,eACA5D,kBAAAA,OAAOgF,MAAM,cAAbhF,sCAAAA,gBAAe6D,KAAK,EACpBC,UACAC;QAEF,gDAAgD;QAChD,MAAMqD,sBAAsB/I,cAC1BqG,iBAAAA,MAAMpF,MAAM,cAAZoF,sCAAAA,0BAAAA,eAAcK,QAAQ,cAAtBL,+CAAAA,iCAAAA,wBAAwBpF,MAAM,cAA9BoF,qDAAAA,+BAAgCf,QAAQ,EACxCC,eACA5D,eAAAA,OAAOqH,IAAI,cAAXrH,mCAAAA,aAAa6D,KAAK,EAClBC,UACAC;QAGF,MAAM9C,UAAUjB,OAAOkE,CAAC;QACxB,MAAMG,UAAUzG,YAAYqD;QAC5B,MAAMmD,YAAYtG,cAAcmD;QAChC,MAAMqD,YAAYzG,cAAcoD;QAChC,MAAMqG,gBAAgBC,iBAAiBvH;QACvCsH,cAAcnE,OAAO,CAAC,CAAC,CAACqE,YAAYC,SAAS,EAAEC;YAC7C,MAAMC,eAAe3H,OAAOkE,CAAC,CAAE0D,KAAK,CAACJ,YAAYC;YACjD,MAAMI,eAAe7H,OAAOqD,CAAC,CAAEuE,KAAK,CAACJ,YAAYC;YAEhDE,aAAyBxE,OAAO,CAAC,CAACe,GAAoB4D;oBAY3B9H,gBAC+BA,iBAA7CA,sBAAAA;gBAZZ,IAAI,CAAC0G,gBAAgB,CAACxC,EAAE,EAAE;oBACxBwC,gBAAgB,CAACxC,EAAE,GAAG;wBACpB6D,YAAY9D,kBAAkBC,GAAGC,iBAAiBC,WAAWC,SAASC;wBACtE2B,WAAW,EAAE;wBACb+B,UAAU,EAAE;oBACd;gBACF;gBACA,MAAMzC,SAAiBqB,OAAO,CAACG,OAAO;gBACtC,+EAA+E;gBAC/E,MAAMlD,QAAQiD,aACVA,WACEpJ,qBAAoBsC,iBAAAA,OAAOgF,MAAM,cAAbhF,qCAAAA,eAAe6D,KAAK,KAClC7D,kBAAAA,OAAOgF,MAAM,cAAbhF,uCAAAA,uBAAAA,gBAAe6D,KAAK,cAApB7D,2CAAD,AAACA,oBAAkC,CAAC8H,SAAS,EAAC9H,kBAAAA,OAAOgF,MAAM,cAAbhF,sCAAAA,gBAAe6D,KAAK,EAAanD,MAAM,CAAC,GACvF,KAENpC,aAAa6I,oBAAoBW,QAAQvC,QAAQzB,UAAUC;gBAC/D,MAAMkE,UAAU7J,WAAW4B,QAAQ8H;gBACnC,MAAMhH,OAAwB+G,YAAY,CAACC,OAAO;gBAClD,MAAMI,mBAAmBrH,yBAAyBC,MAAMN;gBACxD,IAAIR,OAAOmI,IAAI,KAAK,OAAO;wBAIhB5J;oBAHTmI,gBAAgB,CAACxC,EAAE,CAAC+B,SAAS,CAACmC,IAAI,CAAC;wBACjC7C;wBACAxC,MAAMjC;wBACN+C,OAAOtF,CAAAA,uBAAAA,IAAIsF,OAAOwE,IAAI,CAAC;4BAAEJ;wBAAQ,GAAGK,UAAU,gBAAvC/J,kCAAAA,uBAA6CsF;wBACpDqE;oBACF;oBACA,IAAI,OAAOpH,SAAS,UAAU;wBAC5BF,YAAY0C,KAAKzG,GAAG,CAAC+D,WAAWE;oBAClC;gBACF,OAAO,IAAId,OAAOmI,IAAI,KAAK,aAAa,CAAC,CAAC3B,cAAc;wBAEjCxG;oBADrB,MAAMuI,YAAYjK,aAAa8I,qBAAqBL,QAAQxB,QAAQzB,UAAUC;oBAC9E,MAAMyE,cAAc,GAACxI,eAAAA,OAAOyI,IAAI,cAAXzI,mCAAAA,aAAa4F,QAAQ,CAAC,WAAU8C,eAAe1I,OAAOqH,IAAI,IAAI7D;oBACnF,MAAMmF,cAAcC,eAAe5I;wBAK1BzB;oBAJTmI,gBAAgB,CAACxC,EAAE,CAAC8D,QAAQ,CAAEI,IAAI,CAAC;wBACjC7C,QAAQA,SAAU+B,CAAAA,cAAc5G,MAAM,GAAG,IAAI,CAAC,CAAC,EAAEgH,WAAW,GAAG,GAAG,EAAC;wBACnEiB;wBACAtF,GAAGvC;wBACH+C,OAAOtF,CAAAA,wBAAAA,IAAIgK,WAAWF,IAAI,CAAC;4BAAEJ;wBAAQ,GAAGK,UAAU,gBAA3C/J,mCAAAA,wBAAiDsF;wBACxD2E,aAAa;4BACX,GAAIA,wBAAAA,yBAAAA,cAAe,CAAC,CAAC;4BACrBC,MAAMzI,OAAOyI,IAAI;wBACnB;wBACAI,oBAAoBnG,oBAAoB1C,QAAQ0E,MAAMpF,MAAM;wBAC5D4I;oBACF;oBACA,IAAI,CAACxF,oBAAoB1C,QAAQ0E,MAAMpF,MAAM,KAAK,OAAOwB,SAAS,UAAU;wBAC1EF,YAAY0C,KAAKzG,GAAG,CAAC+D,WAAWE;wBAChCH,YAAY2C,KAAK3G,GAAG,CAACgE,WAAWG;oBAClC;gBACF;gBACAF,YAAY0C,KAAKzG,GAAG,CAAC+D,WAAWE;YAClC;QACF;IACF;IAEA,MAAM2F,WAAWP,OAAOZ,MAAM,CAACoB;QAKrBhC;IAHV,OAAO;QACL3B,MAAM0D;QACNjB,KAAK,GAAEd,gBAAAA,MAAMpF,MAAM,cAAZoF,oCAAAA,cAAcc,KAAK;QAC1BC,QAAQf,CAAAA,wBAAAA,iBAAAA,MAAMpF,MAAM,cAAZoF,qCAAAA,eAAce,MAAM,cAApBf,kCAAAA,uBAAwB;QAChCoE,UAAU;QACVlI;QACAD;QACA8H,MAAM;QACN,GAAG9B,oBAAoB;QACvBoC,iBAAiB,SAAOtC,aAAAA,QAAQ,CAAC,EAAE,cAAXA,iCAAAA,WAAasB,UAAU,MAAK;QACpDiB,iBAAiB;QACjBC,WAAW;QACX9C;QACAG,cAAc;QACd4C,iBAAiB;QACjBC,qBAAqB;QACrBC,wBAAwB;QACxB,GAAG/J,UAAUqF,MAAMpF,MAAM,CAAC;QAC1B,GAAGS,mBAAmB2E,MAAM3B,IAAI,CAAC,EAAE,EAAE2B,MAAMpF,MAAM,CAAC;QAClD,GAAGkB,eAAe;QAClB,GAAG6I,0BAA0B3E,MAAM3B,IAAI,EAAE2B,MAAMpF,MAAM,CAAC;IACxD;AACF,EAAE;AAEF,MAAM4H,mBAAmB,CAAC5H,QAAyBU;QACnCV,mBACMU,gBAElBV,oBACAA;IAJF,MAAMgK,QAAQhK,mBAAAA,8BAAAA,oBAAAA,OAAQ0H,SAAS,cAAjB1H,wCAAAA,kBAAmB2H,UAAU;IAC3C,MAAMsC,eAAcvJ,iBAAAA,OAAOgF,MAAM,cAAbhF,qCAAAA,eAAe6D,KAAK;QAEtCvE,wBACAA;IAFF,MAAM,CAACkK,MAAMC,KAAK,GAAG;QACnBnK,CAAAA,yBAAAA,mBAAAA,8BAAAA,qBAAAA,OAAQ0H,SAAS,cAAjB1H,yCAAAA,mBAAmBoK,IAAI,cAAvBpK,oCAAAA,yBAA2BgE,KAAK3G,GAAG,IAAI4M;QACvCjK,CAAAA,yBAAAA,mBAAAA,8BAAAA,qBAAAA,OAAQ0H,SAAS,cAAjB1H,yCAAAA,mBAAmBqK,IAAI,cAAvBrK,oCAAAA,yBAA2BgE,KAAKzG,GAAG,IAAI0M;KACxC;IAED,oDAAoD;IACpD,MAAMK,cAAcN,MAAM7H,GAAG,CAAC,CAAC,CAACoI,IAAI,GAAKL,OAAOK,MAAOJ,CAAAA,OAAOD,IAAG;IACjE,MAAMM,cAAcR,MAAM7H,GAAG,CAACsI,CAAAA,OAAQA,IAAI,CAAC,EAAE;IAE7C,OAAO7M,gBAAwB8M,MAAM,CAACJ,aAAa7M,KAAK,CAAC+M;AAC3D;AAEA,OAAO,MAAMG,iCAAiC,CAC5CvF,OACAC,aACAb,UACAF,cACAG;QA+DSW,eACCA,gBAKgBwF;IAnE1B,MAAMxD,mBAAgE,CAAC;IACvE,MAAMC,uBAAuB7D,wBAAwB4B,MAAM3B,IAAI,EAAE2B,MAAMpF,MAAM,EAAE,GAAG;IAClF,MAAM,EAAEsH,OAAO,EAAET,UAAU,EAAE,GAAGU,eAAenC,MAAM3B,IAAI,EAAE2B,MAAMpF,MAAM,EAAEqF;IAEzE,IAAImC,aAAsDtD;IAC1D,MAAMhD,kBAAkBH,mBAAmBqE,MAAM3B,IAAI,CAAC,EAAE,EAAE2B,MAAMpF,MAAM;IACtEoF,MAAM3B,IAAI,CAACI,OAAO,CAAC,CAACnD,QAA2B+G;YAE3CrC,oCAAAA,yBAAAA,eACoB1E,gBACnBA,iBACOA,sBAAAA,iBAMR0E,+BAAAA,wBAAAA,gBAEA1E,iBAIDA;QAhBD,IACE0E,EAAAA,gBAAAA,MAAMpF,MAAM,cAAZoF,qCAAAA,0BAAAA,cAAcsC,SAAS,cAAvBtC,+CAAAA,qCAAAA,wBAAyBuC,UAAU,cAAnCvC,yDAAAA,mCAAqChE,MAAM,KAC3ChD,qBAAoBsC,iBAAAA,OAAOgF,MAAM,cAAbhF,qCAAAA,eAAe6D,KAAK,KACxC,EAAC7D,kBAAAA,OAAOgF,MAAM,cAAbhF,sCAAAA,gBAAe6D,KAAK,EAAanD,MAAM,GAAG,KAC3C,SAAQV,kBAAAA,OAAOgF,MAAM,cAAbhF,uCAAAA,uBAAAA,gBAAe6D,KAAK,cAApB7D,2CAAD,AAACA,oBAAkC,CAAC,EAAE,MAAK,UAClD;YACA8G,aAAaI,iBAAiBxC,MAAMpF,MAAM,EAAEU;QAC9C;QACA,2CAA2C;QAC3C,MAAMgE,kBAAkB3F,cACtBqG,iBAAAA,MAAMpF,MAAM,cAAZoF,sCAAAA,yBAAAA,eAAcK,QAAQ,cAAtBL,8CAAAA,gCAAAA,uBAAwBpF,MAAM,cAA9BoF,oDAAAA,8BAAgCf,QAAQ,EACxCC,eACA5D,kBAAAA,OAAOgF,MAAM,cAAbhF,sCAAAA,gBAAe6D,KAAK,EACpBC,UACAC;SAED/D,YAAAA,OAAOkE,CAAC,cAARlE,gCAAD,AAACA,UAAsBmD,OAAO,CAAC,CAACe,GAAoB4D;gBACV9H;YAAxC,IAAIhC,eAAekG,MAAMlG,gBAAegC,YAAAA,OAAOqD,CAAC,cAARrD,gCAAAA,SAAU,CAAC8H,OAAO,GAAG;gBAC3D;YACF;YACA,IAAI,CAACpB,gBAAgB,CAACxC,EAAE,EAAE;gBACxBwC,gBAAgB,CAACxC,EAAE,GAAG;oBAAEiG,MAAMjG,EAAEK,QAAQ;oBAAIvE,QAAQ,EAAE;gBAAC;YACzD;YACA,IAAIA,OAAOmI,IAAI,KAAK,OAAO;oBAKCnI,gBAC+BA,iBAA7CA,sBAAAA;gBALZ,MAAMuF,SAAiBqB,OAAO,CAACG,OAAO;gBACtC,+EAA+E;gBAC/E,MAAMlD,QAAQiD,aACVA,WACEpJ,qBAAoBsC,iBAAAA,OAAOgF,MAAM,cAAbhF,qCAAAA,eAAe6D,KAAK,KAClC7D,kBAAAA,OAAOgF,MAAM,cAAbhF,uCAAAA,uBAAAA,gBAAe6D,KAAK,cAApB7D,2CAAD,AAACA,oBAAkC,CAAC8H,SAAS,EAAC9H,kBAAAA,OAAOgF,MAAM,cAAbhF,sCAAAA,gBAAe6D,KAAK,EAAanD,MAAM,CAAC,GACvF,KAENpC,aAAa0F,iBAAiB8D,QAAQvC,QAAQzB,UAAUC;gBAC5D,MAAMkE,UAAU7J,WAAW4B,QAAQ8H;gBAEnC,MAAMhH,OAAed,OAAOqD,CAAC,AAAC,CAACyE,OAAO;oBAM7BvJ;gBAJTmI,gBAAgB,CAACxC,EAAE,CAAClE,MAAM,CAACoI,IAAI,CAAC;oBAC9BgC,KAAK7E;oBACLxC,MAAMjC;oBACNuJ,kBAAkBnG;oBAClBL,OAAOtF,CAAAA,uBAAAA,IAAIsF,OAAOwE,IAAI,CAAC;wBAAEJ;oBAAQ,GAAGK,UAAU,gBAAvC/J,kCAAAA,uBAA6CsF;oBACpD0B;oBACAsD,oBAAoBnG,oBAAoB1C,QAAQ0E,MAAMpF,MAAM;oBAC5D4I,kBAAkBrH,yBAAyBC,MAAMN;gBACnD;YACF;QACF;IACF;IAEA,MAAM0J,WAAWhE,OAAOZ,MAAM,CAACoB;QAKrBhC;IAHV,OAAO;QACL3B,MAAMmH;QACN1E,KAAK,GAAEd,gBAAAA,MAAMpF,MAAM,cAAZoF,oCAAAA,cAAcc,KAAK;QAC1BC,QAAQf,CAAAA,wBAAAA,iBAAAA,MAAMpF,MAAM,cAAZoF,qCAAAA,eAAce,MAAM,cAApBf,kCAAAA,uBAAwB;QAChCoE,UAAU;QACVL,MAAM;QACN,GAAG9B,oBAAoB;QACvBqC,iBAAiB;QACjBD,iBAAiB,SAAOmB,aAAAA,QAAQ,CAAC,EAAE,cAAXA,iCAAAA,WAAaC,IAAI,MAAK;QAC9ChE;QACAG,cAAc;QACd,GAAGjH,UAAUqF,MAAMpF,MAAM,CAAC;QAC1B,GAAGmB,iBAAiBiE,MAAM3B,IAAI,CAAC,EAAE,EAAE2B,MAAMpF,MAAM,CAAC;QAChD,GAAGS,mBAAmB2E,MAAM3B,IAAI,CAAC,EAAE,EAAE2B,MAAMpF,MAAM,CAAC;QAClD,GAAGkB,eAAe;QAClB,GAAG6I,0BAA0B3E,MAAM3B,IAAI,EAAE2B,MAAMpF,MAAM,CAAC;IACxD;AACF,EAAE;AAEF,OAAO,MAAMgL,gCAAgC,CAC3C5F,OACAC,aACAb,UACAF,cACAG;QA4FSW,eACCA,gBAGgB6F;IA9F1B,MAAMA,UAAuC,EAAE;IAC/C,MAAM,EAAE3D,OAAO,EAAET,UAAU,EAAE,GAAGU,eAAenC,MAAM3B,IAAI,EAAE2B,MAAMpF,MAAM,EAAEqF;IACzE,IAAImC,aAAsDtD;IAE1DkB,MAAM3B,IAAI,CAACI,OAAO,CAAC,CAACnD,QAA2BwK;YAM3C9F,oCAAAA,yBAAAA,eACoB1E,gBACnBA,iBACOA,sBAAAA,iBAOR0E,+BAAAA,wBAAAA,gBAEA1E,iBAmBgCA,eAAqBA,gBAAmBA;QApC1E,IAAI,CAACA,OAAOkE,CAAC,EAAE;YACb;QACF;QAEA,IACEQ,EAAAA,gBAAAA,MAAMpF,MAAM,cAAZoF,qCAAAA,0BAAAA,cAAcsC,SAAS,cAAvBtC,+CAAAA,qCAAAA,wBAAyBuC,UAAU,cAAnCvC,yDAAAA,mCAAqChE,MAAM,KAC3ChD,qBAAoBsC,iBAAAA,OAAOgF,MAAM,cAAbhF,qCAAAA,eAAe6D,KAAK,KACxC,EAAC7D,kBAAAA,OAAOgF,MAAM,cAAbhF,sCAAAA,gBAAe6D,KAAK,EAAanD,MAAM,GAAG,KAC3C,SAAQV,kBAAAA,OAAOgF,MAAM,cAAbhF,uCAAAA,uBAAAA,gBAAe6D,KAAK,cAApB7D,2CAAD,AAACA,oBAAkC,CAAC,EAAE,MAAK,UAClD;YACA8G,aAAaI,iBAAiBxC,MAAMpF,MAAM,EAAEU;QAC9C;QAEA,2CAA2C;QAC3C,MAAMgE,kBAAkB3F,cACtBqG,iBAAAA,MAAMpF,MAAM,cAAZoF,sCAAAA,yBAAAA,eAAcK,QAAQ,cAAtBL,8CAAAA,gCAAAA,uBAAwBpF,MAAM,cAA9BoF,oDAAAA,8BAAgCf,QAAQ,EACxCC,eACA5D,kBAAAA,OAAOgF,MAAM,cAAbhF,sCAAAA,gBAAe6D,KAAK,EACpBC,UACAC;QAEF,MAAM9C,UAA+B,EAAE;QACvC,MAAMmC,UAAoB,EAAE;QAC5BpD,OAAOkE,CAAC,CAACf,OAAO,CAAC,CAACsH,MAAM3I;YACtB,MAAMhB,OAAOuE,0BAA0BrF,OAAOqD,CAAC,EAAEvB;YACjD,IAAI9D,eAAeyM,SAASzM,eAAe8C,OAAO;gBAChD;YACF;YAEAG,QAAQmH,IAAI,CAACqC;YACbrH,QAAQgF,IAAI,CAACtH;QACf;QAEA,MAAMsD,YAAYtG,cAAcmD;QAChC,kFAAkF;QAClF,sFAAsF;QACtF,MAAMyJ,QAAQC,WAAW1J,UAASjB,gBAAAA,OAAO4K,KAAK,cAAZ5K,oCAAAA,cAAc6K,KAAK,GAAE7K,iBAAAA,OAAO4K,KAAK,cAAZ5K,qCAAAA,eAAc8K,GAAG,GAAE9K,iBAAAA,OAAO4K,KAAK,cAAZ5K,qCAAAA,eAAc+K,IAAI;QAC5F,MAAMC,QAAoBN,MAAMjJ,GAAG,CAAC,IAAM,EAAE;QAC5C,IAAIwJ,QAAQ;QAEZhK,QAAQkC,OAAO,CAAC,CAACsH,MAAM3I;YACrB,MAAMoJ,SAASC,aAAaT,OAAOD,MAAMrG;YACzC,IAAI8G,WAAW,CAAC,GAAG;gBACjBF,KAAK,CAACE,OAAO,CAAC9C,IAAI,CAAChF,OAAO,CAACtB,MAAM;YACnC;QACF;QAEA,MAAMuB,IAAI2H,MAAMvJ,GAAG,CAACpF,CAAAA;YAClB,MAAMyE,OAAOsK,kBAAkBpL,OAAOqL,QAAQ,EAAEhP;YAChD4O,SAASnK;YACT,OAAOA;QACT;QAEA4J,MAAMvH,OAAO,CAAC,CAAC9G,KAAKyF;gBAKQ9B,gBAC8BA,iBAA5CA,sBAAAA;YALZ,MAAMuF,SAAiBqB,OAAO,CAAC4D,UAAU;YACzC,+EAA+E;YAC/E,MAAM3G,QAAQiD,aACVA,WACEpJ,qBAAoBsC,iBAAAA,OAAOgF,MAAM,cAAbhF,qCAAAA,eAAe6D,KAAK,KAClC7D,kBAAAA,OAAOgF,MAAM,cAAbhF,uCAAAA,uBAAAA,gBAAe6D,KAAK,cAApB7D,2CAAD,AAACA,oBAAkC,CAAC8B,QAAQ,EAAC9B,kBAAAA,OAAOgF,MAAM,cAAbhF,sCAAAA,gBAAe6D,KAAK,EAAanD,MAAM,CAAC,GACtF,KAENpC,aAAa0F,iBAAiBlC,OAAOyD,QAAQzB,UAAUC;YAC3D,MAAMkE,UAAU7J,WAAW4B,QAAQ8B;YACnC,MAAMhB,OAAOwK,kBACXtL,OAAOuL,QAAQ,EACflI,CAAC,CAACvB,MAAM,EACRmJ,OACA7G,YAAY/H,IAAIqE,MAAM,GAAG8K,WAAWnP;gBAO7BkC;YAJTgM,QAAQnC,IAAI,CAAC;gBACXlE,GAAGE,YAAY/H,IAAIoP,IAAI,CAAC,QAAQC,aAAarP;gBAC7CgH,GAAGvC;gBACHyE;gBACA1B,OAAOtF,CAAAA,uBAAAA,IAAIsF,OAAOwE,IAAI,CAAC;oBAAEJ;gBAAQ,GAAGK,UAAU,gBAAvC/J,kCAAAA,uBAA6CsF;gBACpD,GAAIO,YACA,CAAC,IACD;oBAAEiG,kBAAkB,CAAC,CAAC,EAAE,AAAChO,IAA4BsP,EAAE,CAAC,GAAG,EAAE,AAACtP,IAA4BuP,EAAE,CAAC,CAAC,CAAC;gBAAC,CAAC;YACvG;QACF;IACF;QAKUlH;IAHV,OAAO;QACL3B,MAAMwH;QACN/E,KAAK,GAAEd,gBAAAA,MAAMpF,MAAM,cAAZoF,oCAAAA,cAAcc,KAAK;QAC1BC,QAAQf,CAAAA,wBAAAA,iBAAAA,MAAMpF,MAAM,cAAZoF,qCAAAA,eAAce,MAAM,cAApBf,kCAAAA,uBAAwB;QAChC+D,MAAM;QACNO,iBAAiB;QACjBD,iBAAiB,SAAOwB,YAAAA,OAAO,CAAC,EAAE,cAAVA,gCAAAA,UAAYrG,CAAC,MAAK;QAC1C2H,aAAa;QACb1F;QACAG,cAAc;QACd,GAAGjH,UAAUqF,MAAMpF,MAAM,CAAC;QAC1B,GAAGmB,iBAAiBiE,MAAM3B,IAAI,CAAC,EAAE,EAAE2B,MAAMpF,MAAM,CAAC;QAChD,GAAG+J,0BAA0B3E,MAAM3B,IAAI,EAAE2B,MAAMpF,MAAM,CAAC;IACxD;AACF,EAAE;AAEF,OAAO,MAAMwM,sCAAsC,CACjDpH,OACAC,aACAb,UACAF,cACAG;IAEA,OAAOgI,uCACLrH,OACAC,aACA,QACAb,UACAF,cACAG;AAEJ,EAAE;AAEF,OAAO,MAAMiI,sCAAsC,CACjDtH,OACAC,aACAb,UACAF,cACAG;IAEA,OAAOgI,uCACLrH,OACAC,aACA,QACAb,UACAF,cACAG;AAEJ,EAAE;AAEF,OAAO,MAAMkI,yCAAyC,CACpDvH,OACAC,aACAb,UACAF,cACAG;IAEA,OAAOgI,uCACLrH,OACAC,aACA,WACAb,UACAF,cACAG;AAEJ,EAAE;AAEF,MAAMgI,yCAAyC,CAC7CrH,OACAC,aACAuH,WACApI,UACAF,cACAG;QASYW,cA6FHA,eACCA;IArGV,MAAMyH,mBAAmB;QACvB;QACA;QACA;QACA;QACA;QACA;KACD,CAACvG,QAAQ,EAAElB,eAAAA,MAAM3B,IAAI,CAAC,EAAE,cAAb2B,mCAAD,AAACA,aAA4B+D,IAAI;IAC5C,MAAM2D,cAAcF,cAAc;IAClC,MAAMG,iBAAiBH,cAAc;IACrC,MAAMvF,uBAAuB7D,wBAC3B4B,MAAM3B,IAAI,EACV2B,MAAMpF,MAAM,EACZ8M,cAAc,IAAI5I,WAClB4I,cAAc,IAAI5I;IAEpB,IAAIiF,OAAe;IACnB,MAAM,EAAE7B,OAAO,EAAET,UAAU,EAAE,GAAGU,eAAenC,MAAM3B,IAAI,EAAE2B,MAAMpF,MAAM,EAAEqF;IACzE,MAAMnE,kBAAkBH,mBAAmBqE,MAAM3B,IAAI,CAAC,EAAE,EAAE2B,MAAMpF,MAAM;IACtE,MAAM2G,YAA+BvB,MAAM3B,IAAI,CAC5CtB,GAAG,CAAC,CAACzB,QAA2B8B;YAE3B9B,cACEA,cACAA,gBACFA,eAGF0E,+BAAAA,wBAAAA,eAgBmB1E;QAvBrB,MAAM6E,SAASsH,mBACXnM,CAAAA,mBAAAA,8BAAAA,eAAAA,OAAQyI,IAAI,cAAZzI,mCAAAA,aAAc4F,QAAQ,CAAC,YACrB5F,eAAAA,OAAOqH,IAAI,cAAXrH,mCAAAA,aAAa6D,KAAK,IAClB7D,iBAAAA,OAAOgF,MAAM,cAAbhF,qCAAAA,eAAe6D,KAAK,IACtB7D,gBAAAA,OAAOqH,IAAI,cAAXrH,oCAAAA,cAAa6D,KAAK;QACtB,2CAA2C;QAC3C,MAAMG,kBAAkB3F,cACtBqG,gBAAAA,MAAMpF,MAAM,cAAZoF,qCAAAA,yBAAAA,cAAcK,QAAQ,cAAtBL,8CAAAA,gCAAAA,uBAAwBpF,MAAM,cAA9BoF,oDAAAA,8BAAgCf,QAAQ,EACxCC,cACAiB,QACAf,UACAC;QAEF,MAAM9C,UAAUjB,OAAOkE,CAAC;QACxB,MAAME,YAAYtG,cAAcmD;QAChC,MAAMoD,UAAUzG,YAAYqD;QAC5B,MAAMqD,YAAYzG,cAAcoD;QAChC,MAAMkD,kBAAkBpG,YAAYiC,OAAOkE,CAAC,GAAG,2DAA2D;QAC1G,MAAMqB,SAAiBqB,OAAO,CAAC9E,MAAM;QACrC,kEAAkE;QAClE,MAAMwK,cAAchO,aAAa0F,iBAAiBlC,OAAOyD,QAAQzB,UAAUC;QAC3E,MAAMwI,gBAAgBnO,WAAW4B,QAAQ8B;QACzC2G,OAAOzI,OAAOwM,IAAI,KAAK,YAAY,YAAY;QAC/C,MAAMhE,cAAc,GAACxI,gBAAAA,OAAOyI,IAAI,cAAXzI,oCAAAA,cAAa4F,QAAQ,CAAC,WAAU8C,eAAe1I,OAAOqH,IAAI,IAAI7D;QACnF,MAAMmF,cAAcC,eAAe5I;QAEnC,MAAMsH,gBAAgBC,iBAAiBvH;QACvC,OAAOsH,cAAc7F,GAAG,CAAC,CAAC,CAAC+F,YAAYC,SAAS,EAAEC;gBAGR1H;YAFxC,MAAM2H,eAAe1G,QAAQ2G,KAAK,CAACJ,YAAYC;YAC/C,MAAMI,eAAe7H,OAAOqD,CAAC,CAAEuE,KAAK,CAACJ,YAAYC;YACjD,MAAMgF,cAAc/O,qBAAoBsC,iBAAAA,OAAOgF,MAAM,cAAbhF,qCAAAA,eAAe+K,IAAI,IACvD,AAAC/K,OAAOgF,MAAM,CAAE+F,IAAI,CAAcnD,KAAK,CAACJ,YAAYC,YACpD,EAAE;YACN,MAAMiF,aAAarL,MAAMC,OAAO,CAACtB,OAAON,IAAI,IAAIM,OAAON,IAAI,CAACkI,KAAK,CAACJ,YAAYC,YAAYjE;gBAgBjFjF;YAdT,OAAO;gBACLgH;gBACAoD;gBACA5F,MAAM4E,aAAalG,GAAG,CAAC,CAACyC,GAAGlC;wBAGPhC,gBAEPA;2BAL6B;wBACxCkE,GAAGD,kBAAkBC,GAAGC,iBAAiBC,WAAWC,SAASC;wBAC7DjB,GAAGwE,YAAY,CAAC7F,EAAE;wBAClB,GAAIX,MAAMC,OAAO,EAACtB,iBAAAA,OAAOgF,MAAM,cAAbhF,qCAAAA,eAAe+K,IAAI,IACjC;4BAAE4B,YAAYF,WAAW,CAACzK,EAAE;wBAAC,IAC7B,SAAOhC,kBAAAA,OAAOgF,MAAM,cAAbhF,sCAAAA,gBAAe+K,IAAI,MAAK,WAC/B;4BAAE4B,YAAY3M,OAAOgF,MAAM,CAAC+F,IAAI;wBAAC,IACjC,CAAC,CAAC;wBACN,GAAI2B,aAAa;4BAAEhN,MAAMgN,UAAU,CAAC1K,EAAE;wBAAC,IAAI,CAAC,CAAC;wBAC7CkG,kBAAkBrH,yBAAyBgH,YAAY,CAAC7F,EAAE,EAAYxB;oBACxE;;gBACAqD,OAAOtF,CAAAA,uBAAAA,IAAI+N,aAAajE,IAAI,CAAC;oBAAEJ,SAASsE;gBAAc,GAAGjE,UAAU,gBAA5D/J,kCAAAA,uBAAkE+N;gBACzE9D,aAAa;oBACX,GAAIA,wBAAAA,yBAAAA,cAAe,CAAC,CAAC;oBACrBC,MAAMzI,OAAOyI,IAAI;gBACnB;gBACAI,oBAAoBnG,oBAAoB1C,QAAQ0E,MAAMpF,MAAM;YAC9D;QACF;IACF,GACCsN,IAAI;IAEP,MAAMC,UAAUpM,iBAAiBiE,MAAM3B,IAAI,CAAC,EAAE,EAAE2B,MAAMpF,MAAM;IAC5D,IAAIuN,QAAQlM,SAAS,KAAK6C,aAAaqJ,QAAQjM,SAAS,KAAK4C,WAAW;QACtE,MAAMsJ,gBAAgBvP,qBAAqB0I;QAC3C4G,QAAQlM,SAAS,GAAGmM,cAAcC,UAAU;QAC5CF,QAAQjM,SAAS,GAAGkM,cAAcE,QAAQ;IAC5C;IACA,MAAMC,gBAAgBhH,UAAUiH,MAAM,CAAC,CAACjC,OAAOkC,kBAAoBlC,QAAQkC,gBAAgBpK,IAAI,CAACrC,MAAM,EAAE;IAExG,MAAM0M,aAAyB;QAC7BC,eAAepH;IACjB;IAEA,MAAMqH,oBAAgC;QACpCC,kBAAkBtH;IACpB;QAMUvB;IAJV,MAAM8I,cAAc;QAClBC,qBAAqB;QACrB,GAAG9G,oBAAoB;QACvBnB,KAAK,GAAEd,gBAAAA,MAAMpF,MAAM,cAAZoF,oCAAAA,cAAcc,KAAK;QAC1BC,QAAQf,CAAAA,wBAAAA,iBAAAA,MAAMpF,MAAM,cAAZoF,qCAAAA,eAAce,MAAM,cAApBf,kCAAAA,uBAAwB;QAChCsE,iBAAiB;QACjB7C;QACAuH,QAAQ;QACRC,mBAAmBV,gBAAgB;QACnC,GAAG5N,UAAUqF,MAAMpF,MAAM,CAAC;QAC1B,GAAGS,mBAAmB2E,MAAM3B,IAAI,CAAC,EAAE,EAAE2B,MAAMpF,MAAM,CAAC;QAClD,GAAGkB,eAAe;IACpB;IAEA,IAAI4L,aAAa;QACf,OAAO;YACLrJ,MAAMqK;YACN3E;YACA,GAAG+E,WAAW;QAChB;IACF,OAAO;QACL,OAAO;YACLzK,MAAMsJ,iBAAiBiB,oBAAoBF;YAC3CQ,cAAc;YACd,GAAGJ,WAAW;YACd,GAAGX,OAAO;QACZ;IACF;AACF;AAEA,OAAO,MAAMgB,kDAAkD,CAC7DnJ,OACAC,aACAb,UACAF,cACAG;QAkD4BW,eACLA,sBAAAA,gBACCA,uBAAAA,gBAUbA,sBAAAA,gBACHA,uBAAAA,gBACAA,4BAAAA,uBAAAA,gBAICA;IAlET,MAAM,EAAEkC,OAAO,EAAET,UAAU,EAAE,GAAGU,eAAenC,MAAM3B,IAAI,EAAE2B,MAAMpF,MAAM,EAAEqF;IACzE,IAAImC,aAAsDtD;IAC1D,MAAMyC,YAAmDvB,MAAM3B,IAAI,CAChEtB,GAAG,CAAC,CAACzB,QAA2B8B;YAE7B4C,oCAAAA,yBAAAA,eACoB1E,gBACnBA,iBACOA,sBAAAA,iBAMR0E,+BAAAA,wBAAAA,gBAEA1E;QAZF,IACE0E,EAAAA,gBAAAA,MAAMpF,MAAM,cAAZoF,qCAAAA,0BAAAA,cAAcsC,SAAS,cAAvBtC,+CAAAA,qCAAAA,wBAAyBuC,UAAU,cAAnCvC,yDAAAA,mCAAqChE,MAAM,KAC3ChD,qBAAoBsC,iBAAAA,OAAOgF,MAAM,cAAbhF,qCAAAA,eAAe6D,KAAK,KACxC,EAAC7D,kBAAAA,OAAOgF,MAAM,cAAbhF,sCAAAA,gBAAe6D,KAAK,EAAanD,MAAM,GAAG,KAC3C,SAAQV,kBAAAA,OAAOgF,MAAM,cAAbhF,uCAAAA,uBAAAA,gBAAe6D,KAAK,cAApB7D,2CAAD,AAACA,oBAAkC,CAAC,EAAE,MAAK,UAClD;YACA8G,aAAaI,iBAAiBxC,MAAMpF,MAAM,EAAEU;QAC9C;QACA,2CAA2C;QAC3C,MAAMgE,kBAAkB3F,cACtBqG,iBAAAA,MAAMpF,MAAM,cAAZoF,sCAAAA,yBAAAA,eAAcK,QAAQ,cAAtBL,8CAAAA,gCAAAA,uBAAwBpF,MAAM,cAA9BoF,oDAAAA,8BAAgCf,QAAQ,EACxCC,eACA5D,kBAAAA,OAAOgF,MAAM,cAAbhF,sCAAAA,gBAAe6D,KAAK,EACpBC,UACAC;QAEF,MAAMwB,SAASqB,OAAO,CAAC9E,MAAM;QAC7B,OAAO,AAAC9B,OAAOqD,CAAC,CACb5B,GAAG,CAAC,CAACqM,QAAQ9L;gBACOhC,WAOOA,gBAC0BA,iBAAxCA,sBAAAA;YARZ,IAAIhC,gBAAegC,YAAAA,OAAOkE,CAAC,cAARlE,gCAAAA,SAAU,CAACgC,EAAE,KAAKhE,eAAe8P,SAAS;gBAC3D,OAAO;YACT;YAEA,+EAA+E;YAC/E,MAAMjK,QAAQiD,aACVA,WACEpJ,qBAAoBsC,iBAAAA,OAAOgF,MAAM,cAAbhF,qCAAAA,eAAe6D,KAAK,KAClC7D,kBAAAA,OAAOgF,MAAM,cAAbhF,uCAAAA,uBAAAA,gBAAe6D,KAAK,cAApB7D,2CAAD,AAACA,oBAAkC,CAACgC,IAAI,EAAChC,kBAAAA,OAAOgF,MAAM,cAAbhF,sCAAAA,gBAAe6D,KAAK,EAAanD,MAAM,CAAC,GAClF,KAENpC,aAAa0F,iBAAiBhC,GAAGuD,QAAQzB,UAAUC;YACvD,MAAMkE,UAAU7J,WAAW4B,QAAQgC;gBAM1BzD;YAJT,OAAO;gBACL2F,GAAGlE,OAAOkE,CAAC,AAAC,CAAClC,EAAE;gBACfqB,GAAGyK;gBACHvI;gBACA1B,OAAOtF,CAAAA,uBAAAA,IAAIsF,OAAOwE,IAAI,CAAC;oBAAEJ;gBAAQ,GAAGK,UAAU,gBAAvC/J,kCAAAA,uBAA6CsF;YACtD;QACF,GACC9B,MAAM,CAACgM,CAAAA,QAASA,UAAU;IAC/B,GACCnB,IAAI;QAEqBlI;IAA5B,MAAMsJ,cAAsBtJ,CAAAA,wBAAAA,gBAAAA,MAAMpF,MAAM,cAAZoF,oCAAAA,cAAce,MAAM,cAApBf,kCAAAA,uBAAwB;QAC7BA;IAAvB,MAAMuJ,SAAiBvJ,CAAAA,0BAAAA,iBAAAA,MAAMpF,MAAM,cAAZoF,sCAAAA,uBAAAA,eAAcuJ,MAAM,cAApBvJ,2CAAAA,qBAAsBwJ,CAAC,cAAvBxJ,oCAAAA,yBAA2B;QAC1BA;IAAxB,MAAMyJ,UAAkBzJ,CAAAA,4BAAAA,iBAAAA,MAAMpF,MAAM,cAAZoF,sCAAAA,wBAAAA,eAAcuJ,MAAM,cAApBvJ,4CAAAA,sBAAsB0J,GAAG,cAAzB1J,sCAAAA,2BAA6B;IACrD,MAAM2J,kBAA0BL,cAAcC,SAASE;IACvD,MAAMG,eAAe,IAAIC,IAAItI,UAAUxE,GAAG,CAAC+M,CAAAA,IAAKA,EAAEnL,CAAC,GAAG0H,IAAI,IAAI;IAC9D,MAAM0D,gBAAgB;IACtB,MAAMC,YAAY,IAAK,CAAA,IAAID,gBAAgBH,YAAW;IACtD,MAAMK,YAAYN,kBAAmBC,CAAAA,eAAgB,CAAA,IAAII,SAAQ,CAAC;IAElE,OAAO;QACL3L,MAAMkD;QACN1C,qBACE,SAAOmB,iBAAAA,MAAMpF,MAAM,cAAZoF,sCAAAA,uBAAAA,eAAc/B,MAAM,cAApB+B,2CAAAA,qBAAsBjF,KAAK,MAAK,YACnCiF,iBAAAA,MAAMpF,MAAM,cAAZoF,sCAAAA,wBAAAA,eAAc/B,MAAM,cAApB+B,4CAAAA,sBAAsBjF,KAAK,GAC3BiF,EAAAA,iBAAAA,MAAMpF,MAAM,cAAZoF,sCAAAA,wBAAAA,eAAc/B,MAAM,cAApB+B,6CAAAA,6BAAAA,sBAAsBjF,KAAK,cAA3BiF,iDAAAA,2BAA6BhF,IAAI,KAAI;QAC3CiP;QACAzF,iBAAiB;QACjBzD,QAAQuI;QACRxI,KAAK,GAAEd,iBAAAA,MAAMpF,MAAM,cAAZoF,qCAAAA,eAAcc,KAAK;QAC1BwD,iBAAiB;QACjBG,qBAAqB;QACrBC,wBAAwB;QACxBjD;QACAG,cAAc;QACd,GAAGjH,UAAUqF,MAAMpF,MAAM,CAAC;QAC1B,GAAG+J,0BAA0B3E,MAAM3B,IAAI,EAAE2B,MAAMpF,MAAM,CAAC;IACxD;AACF,EAAE;AAEF,OAAO,MAAMsP,oCAAoC,CAC/ClK,OACAC,aACAb,UACAF,cACAG;QA0GEW,eACAA,yBAAAA,gBACAA,+BAAAA,wBAAAA,gBACqCA,0CAAAA,yCAAAA,6BAAAA,yBAAAA,gBACrCA,sCAAAA,qCAAAA,8BAAAA,yBAAAA,gBAoCOA,gBACCA;IAjJV,MAAME,YAAYF,MAAM3B,IAAI,CAAC,EAAE;IAC/B,MAAM8L,oBAA6C,EAAE;IACrD,IAAIC,OAAOC,OAAOC,iBAAiB;IACnC,IAAIC,OAAOF,OAAOG,iBAAiB;IAEnC,IAAItK,UAAUuD,IAAI,KAAK,eAAe;YAIpCvD,cAakCA,kBAAwBA,mBAAsBA,mBAC9CA,kBAAwBA,mBAAsBA;QAjBhF,MAAM3D,UAA+B,EAAE;QACvC,MAAMmC,UAA+B,EAAE;QACvC,MAAM+L,UAAoB,EAAE;SAC5BvK,eAAAA,UAAUV,CAAC,cAAXU,mCAAAA,aAAazB,OAAO,CAAC,CAACsH,MAAM3I;gBAEiB8C;YAD3C,MAAMwK,OAAO/J,0BAA0BT,UAAUyK,CAAC,EAAEvN;YACpD,IAAI9D,eAAeyM,SAASzM,gBAAe4G,eAAAA,UAAUvB,CAAC,cAAXuB,mCAAAA,YAAa,CAAC9C,MAAM,KAAK9D,eAAeoR,OAAO;gBACxF;YACF;YAEAnO,QAAQmH,IAAI,CAACqC;YACbrH,QAAQgF,IAAI,CAACxD,UAAUvB,CAAC,AAAC,CAACvB,MAAM;YAChCqN,QAAQ/G,IAAI,CAACgH;QACf;QAEA,MAAMhL,YAAYtG,cAAcmD;QAChC,MAAMqO,YAAYxR,cAAcsF;QAChC,MAAMsH,QAAQC,WAAW1J,UAAS2D,mBAAAA,UAAUgG,KAAK,cAAfhG,uCAAAA,iBAAiBiG,KAAK,GAAEjG,oBAAAA,UAAUgG,KAAK,cAAfhG,wCAAAA,kBAAiBkG,GAAG,GAAElG,oBAAAA,UAAUgG,KAAK,cAAfhG,wCAAAA,kBAAiBmG,IAAI;QACrG,MAAMC,QAAQL,WAAWvH,UAASwB,mBAAAA,UAAU2K,KAAK,cAAf3K,uCAAAA,iBAAiBiG,KAAK,GAAEjG,oBAAAA,UAAU2K,KAAK,cAAf3K,wCAAAA,kBAAiBkG,GAAG,GAAElG,oBAAAA,UAAU2K,KAAK,cAAf3K,wCAAAA,kBAAiBmG,IAAI;QACrG,MAAMyE,QAAsBxE,MAAMvJ,GAAG,CAAC,IAAMiJ,MAAMjJ,GAAG,CAAC,IAAM,EAAE;QAC9D,IAAIwJ,QAAQ;QAEZhK,QAAQkC,OAAO,CAAC,CAACsH,MAAM3I;YACrB,MAAM2N,UAAUtE,aAAaT,OAAOD,MAAMrG;YAC1C,MAAMsL,UAAUvE,aAAaH,OAAO5H,OAAO,CAACtB,MAAM,EAAEwN;YAEpD,IAAIG,YAAY,CAAC,KAAKC,YAAY,CAAC,GAAG;gBACpCF,KAAK,CAACE,QAAQ,CAACD,QAAQ,CAACrH,IAAI,CAAC+G,OAAO,CAACrN,MAAM;YAC7C;QACF;QAEA,MAAMuN,IAAIG,MAAM/N,GAAG,CAACkO,CAAAA;YAClB,OAAOA,IAAIlO,GAAG,CAACpF,CAAAA;gBACb,MAAM+S,OAAOhE,kBAAkBxG,UAAUyG,QAAQ,EAAEhP;gBACnD4O,SAASmE;gBACT,OAAOA;YACT;QACF;QAEA1E,MAAMvH,OAAO,CAAC,CAACyM,MAAMC;YACnB7E,MAAM7H,OAAO,CAAC,CAAC2M,MAAMC;gBACnB,MAAMX,OAAO9D,kBACX1G,UAAU2G,QAAQ,EAClB8D,CAAC,CAACU,KAAK,CAACF,KAAK,EACb5E,OACA7G,YAAYwL,KAAKlP,MAAM,GAAG8K,WAAWoE,OACrCN,YAAYQ,KAAKpP,MAAM,GAAG8K,WAAWsE;gBAGvCjB,kBAAkBzG,IAAI,CAAC;oBACrBlE,GAAGE,YAAYwL,KAAKnE,IAAI,CAAC,QAAQC,aAAakE;oBAC9CvM,GAAGiM,YAAYQ,KAAKrE,IAAI,CAAC,QAAQC,aAAaoE;oBAC9C1K,OAAOgK;oBACPY,UAAUZ;gBACZ;gBAEA,IAAI,OAAOA,SAAS,UAAU;oBAC5BN,OAAOxL,KAAK3G,GAAG,CAACmS,MAAMM;oBACtBH,OAAO3L,KAAKzG,GAAG,CAACoS,MAAMG;gBACxB;YACF;QACF;IACF,OAAO;YACJxK;SAAAA,gBAAAA,UAAUV,CAAC,cAAXU,oCAAD,AAACA,cAAyBzB,OAAO,CAAC,CAACsH,MAAMoF;gBACvC,8DAA8D;YAC9DjL;aAAAA,eAAAA,UAAUvB,CAAC,cAAXuB,mCAAAA,aAAazB,OAAO,CAAC,CAACrC,MAAWiP;oBAClB,mBAACnL,cAGTF,qBAAAA,eACAA,qBAAAA;gBAJL,MAAM0K,QAAQxK,eAAAA,UAAUyK,CAAC,cAAXzK,oCAAD,oBAAA,AAACA,YAA4B,CAACmL,KAAK,cAAnC,wCAAA,iBAAqC,CAACF,KAAK;gBAExDhB,kBAAkBzG,IAAI,CAAC;oBACrBlE,GAAGQ,EAAAA,gBAAAA,MAAMpF,MAAM,cAAZoF,qCAAAA,sBAAAA,cAAc9E,KAAK,cAAnB8E,0CAAAA,oBAAqByD,IAAI,MAAK,SAAUsC,OAAgBA,iBAAAA,kBAAAA,OAAQ;oBACnEpH,GAAGqB,EAAAA,iBAAAA,MAAMpF,MAAM,cAAZoF,sCAAAA,sBAAAA,eAAc5E,KAAK,cAAnB4E,0CAAAA,oBAAqByD,IAAI,MAAK,SAAUrH,OAAgBA;oBAC3DsE,OAAOgK;oBACPY,UAAUZ;gBACZ;gBAEA,IAAI,OAAOA,SAAS,UAAU;oBAC5BN,OAAOxL,KAAK3G,GAAG,CAACmS,MAAMM;oBACtBH,OAAO3L,KAAKzG,GAAG,CAACoS,MAAMG;gBACxB;YACF;QACF;IACF;QAGUxK;IADV,MAAMqL,cAAgC;QACpC1K,QAAQX,CAAAA,kBAAAA,UAAUuF,IAAI,cAAdvF,6BAAAA,kBAAkB;QAC1B7B,MAAM8L;QACNzJ,OAAO;IACT;IAEA,gDAAgD;IAChD,MAAM8K,gBAAgB;QAACpB;QAAOG,CAAAA,OAAOH,IAAG,IAAK;QAAGG;KAAK;IACrD,MAAMkB,eAAe;QACnB7S,kBAAkBD,eAAe+S,MAAM;QACvC9S,kBAAkBD,eAAegT,MAAM;QACvC/S,kBAAkBD,eAAeiT,MAAM;KACxC;QAGC1L,uBAAAA,MAAAA,OAAAA,OAAAA;IADF,IAAIqC,aACFrC,CAAAA,QAAAA,CAAAA,QAAAA,CAAAA,QAAAA,CAAAA,OAAAA,CAAAA,wBAAAA,sBAAAA,gCAAAA,UAAWqC,UAAU,cAArBrC,mCAAAA,yBACAF,gBAAAA,MAAMpF,MAAM,cAAZoF,oCAAAA,cAAcuC,UAAU,cADxBrC,kBAAAA,QAEAF,iBAAAA,MAAMpF,MAAM,cAAZoF,sCAAAA,0BAAAA,eAAcsC,SAAS,cAAvBtC,8CAAAA,wBAAyBuC,UAAU,cAFnCrC,mBAAAA,SAGAF,iBAAAA,MAAMpF,MAAM,cAAZoF,sCAAAA,yBAAAA,eAAcK,QAAQ,cAAtBL,8CAAAA,gCAAAA,uBAAwBpF,MAAM,cAA9BoF,oDAAAA,8BAAgCuC,UAAU,cAH1CrC,mBAAAA,QAICA,UAAUuD,IAAI,KAAK,mBAAiBzD,iBAAAA,MAAMpF,MAAM,cAAZoF,sCAAAA,0BAAAA,eAAcK,QAAQ,cAAtBL,+CAAAA,8BAAAA,wBAAwB3B,IAAI,cAA5B2B,mDAAAA,0CAAAA,4BAA8B6L,WAAW,cAAzC7L,+DAAAA,2CAAAA,uCAA2C,CAAC,EAAE,cAA9CA,+DAAAA,yCAAgDuC,UAAU,eAJ/FrC,mBAAAA,SAKAF,iBAAAA,MAAMpF,MAAM,cAAZoF,sCAAAA,0BAAAA,eAAcK,QAAQ,cAAtBL,+CAAAA,+BAAAA,wBAAwB3B,IAAI,cAA5B2B,oDAAAA,sCAAAA,6BAA8B8L,OAAO,cAArC9L,2DAAAA,uCAAAA,mCAAuC,CAAC,EAAE,cAA1CA,2DAAAA,qCAA4CuC,UAAU;IAExD,4FAA4F;IAC5F,IACEA,cACA,OAAOA,eAAe,YACrB,CAAA,eAAeA,cAAc,gBAAgBA,cAAc,qBAAqBA,UAAS,GAC1F;QACA,MAAMwJ,cAAc3B,OAAO,KAAKG,OAAO,GAAG,+CAA+C;QACzF,MAAMyB,eAAe5B,QAAQ,GAAG,4BAA4B;QAC5D,MAAM6B,oBAAoB1B,QAAQ,GAAG,4BAA4B;QAEjE,IAAIwB,aAAa;YACfxJ,aAAaA,uBAAAA,iCAAAA,WAAY2J,SAAS;QACpC,OAAO,IAAIF,cAAc;YACvBzJ,aAAaA,uBAAAA,iCAAAA,WAAY4J,UAAU;QACrC,OAAO,IAAIF,mBAAmB;YAC5B1J,aAAaA,uBAAAA,iCAAAA,WAAY6J,eAAe;QAC1C;IACF;IAEA,MAAMC,4BAAsC1P,MAAMC,OAAO,CAAC2F,cACtD,AAACA,WAAuCxF,GAAG,CAACuP,CAAAA,MAAOA,GAAG,CAAC,EAAE,GAAI/B,CAAAA,OAAOH,IAAG,IAAKA,QAC5EoB;IAEJ,MAAMe,2BAAqC5P,MAAMC,OAAO,CAAC2F,cACrD,AAACA,WAAuCxF,GAAG,CAACuP,CAAAA,MAAOA,GAAG,CAAC,EAAE,IACzDb;QAUMzL;IARV,OAAO;QACL3B,MAAM;YAACkN;SAAY;QACnBc;QACAE;QACA9K,YAAY;QACZ+C,iBAAiB;QACjBgI,WAAW;QACX1L,KAAK,GAAEd,iBAAAA,MAAMpF,MAAM,cAAZoF,qCAAAA,eAAcc,KAAK;QAC1BC,QAAQf,CAAAA,wBAAAA,iBAAAA,MAAMpF,MAAM,cAAZoF,qCAAAA,eAAce,MAAM,cAApBf,kCAAAA,uBAAwB;QAChCsE,iBAAiB;QACjBG,qBAAqB;QACrBC,wBAAwB;QACxBL,iBAAiB;QACjB,GAAG1J,UAAUqF,MAAMpF,MAAM,CAAC;QAC1B,GAAG+J,0BAA0B;YAACzE;SAAU,EAAEF,MAAMpF,MAAM,CAAC;IACzD;AACF,EAAE;AAEF,OAAO,MAAM6R,mCAAmC,CAC9CzM,OACAC,aACAb,UACAF,cACAG;QAmBEW,+BAAAA,wBAAAA,eAOO0M,aA8BA1M,gBACCA;IAvDV,MAAM,EAAE2M,IAAI,EAAED,IAAI,EAAE,GAAG1M,MAAM3B,IAAI,CAAC,EAAE;QAChBsO;IAApB,MAAMC,aAAa,AAACD,CAAAA,CAAAA,cAAAA,iBAAAA,2BAAAA,KAAMjM,KAAK,cAAXiM,yBAAAA,cAAe,EAAE,AAAD,EACjC5P,GAAG,CAAC,CAAC8P,KAAazP;YACyBuP,cAAyCA;QAAnF,IAAIrT,eAAeuT,QAAQvT,eAAeqT,iBAAAA,4BAAAA,eAAAA,KAAMG,MAAM,cAAZH,mCAAAA,YAAc,CAACvP,MAAM,KAAK9D,eAAeqT,iBAAAA,4BAAAA,eAAAA,KAAMI,MAAM,cAAZJ,mCAAAA,YAAc,CAACvP,MAAM,GAAG;YACzG,OAAO;QACT;QAEA,OAAO;YACLsD,OAAOmM;YACPC,MAAM,EAAEH,iBAAAA,2BAAAA,KAAMG,MAAM,AAAC,CAAC1P,MAAM;YAC5B2P,MAAM,EAAEJ,iBAAAA,2BAAAA,KAAMI,MAAM,AAAC,CAAC3P,MAAM;QAC9B;IACF,EACA,gFAAgF;KAC/EC,MAAM,CAACmC,CAAAA,IAAKA,MAAM,QAAQA,EAAEsN,MAAM,IAAI,KAAKtN,EAAEuN,MAAM,IAAI,KAAKvN,EAAEsN,MAAM,KAAKtN,EAAEuN,MAAM;IAEpF,MAAMC,sBAAsBrT,cAC1BqG,gBAAAA,MAAMpF,MAAM,cAAZoF,qCAAAA,yBAAAA,cAAcK,QAAQ,cAAtBL,8CAAAA,gCAAAA,uBAAwBpF,MAAM,cAA9BoF,oDAAAA,8BAAgCf,QAAQ,EACxCC,cACAwN,iBAAAA,2BAAAA,KAAMvN,KAAK,EACXC,UACAC;IAEF,MAAM4N,kBAAkB;QACtBC,KAAK,GAAER,cAAAA,KAAKjM,KAAK,cAAViM,kCAAAA,YAAY3P,GAAG,CAAC,CAAC0D,OAAerD;YACrC,MAAM+B,QAAQvF,aAAaoT,qBAAqB5P,OAAOqD,OAAOrB,UAAUC;YAExE,OAAO;gBACL8N,QAAQ/P;gBACRqI,MAAMhF;gBACNtB;YACF;QACF;QACA,8DAA8D;QAC9DiO,OAAOR,WAAW7P,GAAG,CAAC,CAACsQ,WAAgBjQ;YACrC,OAAO;gBACL,GAAGiQ,SAAS;YACd;QACF;IACF;IAEA,+CAA+C;IAC/C,YAAY;IACZ,kFAAkF;IAClF,OAAO;IACP,KAAK;IAEL,MAAM,EAAEvS,UAAU,EAAE,GAAGH,UAAUqF,MAAMpF,MAAM;QAQnCoF;IANV,OAAO;QACL3B,MAAM;YACJvD;YACAwS,iBAAiBL;QACnB;QACAnM,KAAK,GAAEd,iBAAAA,MAAMpF,MAAM,cAAZoF,qCAAAA,eAAcc,KAAK;QAC1BC,QAAQf,CAAAA,wBAAAA,iBAAAA,MAAMpF,MAAM,cAAZoF,qCAAAA,eAAce,MAAM,cAApBf,kCAAAA,uBAAwB;IAGlC;AACF,EAAE;AAEF,OAAO,MAAMuN,kCAAkC,CAC7CvN,OACAC,aACAb,UACAF,cACAG;QAGoBa,kBAElBF,+BAAAA,wBAAAA,eAOeE,wBAAAA,mBAcqBA,6BAAAA,uBAAAA,mBAE5BF,gCAAAA,yBAAAA,gBAEAE,wBAAAA,mBAOKA,8BAAAA,wBAAAA,mBAOXA,kBAuCeA,8BAAAA,wBAAAA,mBAAiDA,8BAAAA,wBAAAA,mBACjDA,8BAAAA,wBAAAA,mBAAiDA,8BAAAA,wBAAAA,mBAE3DF,gBACCA,gBAGCE,yBAAAA;IAxFX,MAAMA,YAAYF,MAAM3B,IAAI,CAAC,EAAE;IAC/B,MAAMmP,cAActN,EAAAA,mBAAAA,UAAUuN,KAAK,cAAfvN,uCAAAA,iBAAiBwN,KAAK,IAAGxN,UAAUuN,KAAK,CAACC,KAAK,CAAC3Q,GAAG,CAAC4Q,CAAAA,OAAQA,KAAKxO,KAAK,IAAIL;IAC7F,MAAMQ,kBAAkB3F,cACtBqG,gBAAAA,MAAMpF,MAAM,cAAZoF,qCAAAA,yBAAAA,cAAcK,QAAQ,cAAtBL,8CAAAA,gCAAAA,uBAAwBpF,MAAM,cAA9BoF,oDAAAA,8BAAgCf,QAAQ,EACxCC,cACAsO,aACApO,UACAC;QAiBoCa,8BAAxBA,kBAWCA,+BAA6CA;IAzB5D,MAAM0N,WAAW1N,EAAAA,oBAAAA,UAAUuN,KAAK,cAAfvN,yCAAAA,yBAAAA,kBAAiBwN,KAAK,cAAtBxN,6CAAAA,uBAAwBlE,MAAM,IAE3CkE,UAAUuN,KAAK,CAACC,KAAK,CAAC3Q,GAAG,CAAC,CAAC4Q,MAAWvQ;YAK5BuQ,aAAkBA;QAJ1B,MAAM9M,SAAS8M,KAAKlI,IAAI,IAAI,CAAC,QAAQ,EAAErI,QAAQ,GAAG;QAClD,MAAM+B,QAAQvF,aAAa0F,iBAAiBlC,OAAOyD,QAAQzB,UAAUC;QACrE,OAAO;YACLwB;YACAwF,MAAMsH,EAAAA,cAAAA,KAAKtV,KAAK,cAAVsV,kCAAAA,WAAY,CAAC,EAAE,MAAGA,eAAAA,KAAKtV,KAAK,cAAVsV,mCAAAA,YAAY,CAAC,EAAE;YACvCxO;QACF;IACF,KACA;QACE;YACE0B,QAAQ;YACRwF,MAAMnG,CAAAA,mBAAAA,UAAUQ,KAAK,cAAfR,8BAAAA,mBAAmB,IAAKA,CAAAA,CAAAA,gCAAAA,oBAAAA,UAAUuN,KAAK,cAAfvN,yCAAAA,wBAAAA,kBAAiB2N,IAAI,cAArB3N,6CAAAA,8BAAAA,sBAAuB7H,KAAK,cAA5B6H,kDAAAA,2BAA8B,CAAC,EAAE,cAAjCA,0CAAAA,+BAAqC,CAAA;YACnEf,OAAOH,oBACLgB,iBAAAA,MAAMpF,MAAM,cAAZoF,sCAAAA,0BAAAA,eAAcK,QAAQ,cAAtBL,+CAAAA,iCAAAA,wBAAwBpF,MAAM,cAA9BoF,qDAAAA,+BAAgCf,QAAQ,EACxCC,eACAgB,oBAAAA,UAAUuN,KAAK,cAAfvN,yCAAAA,yBAAAA,kBAAiB2N,IAAI,cAArB3N,6CAAAA,uBAAuBf,KAAK,EAC5BC,UACAC;QAEJ;QACA;YACEwB,QAAQ;YACRwF,MAAM,AAACnG,CAAAA,CAAAA,iCAAAA,oBAAAA,UAAUuN,KAAK,cAAfvN,yCAAAA,yBAAAA,kBAAiB2N,IAAI,cAArB3N,8CAAAA,+BAAAA,uBAAuB7H,KAAK,cAA5B6H,mDAAAA,4BAA8B,CAAC,EAAE,cAAjCA,2CAAAA,gCAAqC,GAAE,IAAMA,CAAAA,CAAAA,oBAAAA,UAAUQ,KAAK,cAAfR,+BAAAA,oBAAmB,CAAA;YACvEf,OAAOxG,eAAemV,QAAQ;QAChC;KACD;IAEL,IAAIC;IACJ,IAAIC;IACJ,KAAI9N,mBAAAA,UAAU+N,KAAK,cAAf/N,uCAAAA,iBAAiBgO,SAAS,EAAE;QAC9B,MAAMC,OAAOjO,UAAUQ,KAAK,GAAGR,UAAU+N,KAAK,CAACC,SAAS;QACxD,IAAIC,QAAQ,GAAG;gBAGXnO,gCAAAA,yBAAAA,gBAEAE,6BAAAA;YAJF6N,WAAW,CAAC,OAAO,EAAEI,MAAM;YAC3B,MAAMC,iCAAiCzU,cACrCqG,iBAAAA,MAAMpF,MAAM,cAAZoF,sCAAAA,0BAAAA,eAAcK,QAAQ,cAAtBL,+CAAAA,iCAAAA,wBAAwBpF,MAAM,cAA9BoF,qDAAAA,+BAAgCf,QAAQ,EACxCC,eACAgB,oBAAAA,UAAU+N,KAAK,cAAf/N,yCAAAA,8BAAAA,kBAAiBmO,UAAU,cAA3BnO,kDAAAA,4BAA6Bf,KAAK,EAClCC,UACAC;YAEF,MAAMF,QAAQvF,aAAawU,gCAAgC,GAAG,IAAIhP,UAAUC;YAC5E2O,gBAAgB7O;QAClB,OAAO;gBAGHa,gCAAAA,yBAAAA,gBAEAE,6BAAAA;YAJF6N,WAAW,CAAC,OAAO,EAAEnP,KAAK0P,GAAG,CAACH,OAAO;YACrC,MAAMI,iCAAiC5U,cACrCqG,iBAAAA,MAAMpF,MAAM,cAAZoF,sCAAAA,0BAAAA,eAAcK,QAAQ,cAAtBL,+CAAAA,iCAAAA,wBAAwBpF,MAAM,cAA9BoF,qDAAAA,+BAAgCf,QAAQ,EACxCC,eACAgB,oBAAAA,UAAU+N,KAAK,cAAf/N,yCAAAA,8BAAAA,kBAAiBsO,UAAU,cAA3BtO,kDAAAA,4BAA6Bf,KAAK,EAClCC,UACAC;YAEF,MAAMF,QAAQvF,aAAa2U,gCAAgC,GAAG,IAAInP,UAAUC;YAC5E2O,gBAAgB7O;QAClB;IACF;IAEA,MAAMsP,SAAS;QACbV,UAAUC;IACZ;IAEA,MAAM,EAAElT,UAAU,EAAE,GAAGH,UAAUqF,MAAMpF,MAAM;QAI/BsF,mBAQJF;IAVV,OAAO;QACL4N;QACAc,YAAYxO,CAAAA,oBAAAA,UAAUQ,KAAK,cAAfR,+BAAAA,oBAAmB;QAC/BpF;QACAiT;QACA,2BAA2B;QAC3BY,UAAU,SAAOzO,oBAAAA,UAAUuN,KAAK,cAAfvN,yCAAAA,yBAAAA,kBAAiB2N,IAAI,cAArB3N,8CAAAA,+BAAAA,uBAAuB7H,KAAK,cAA5B6H,mDAAAA,4BAA8B,CAAC,EAAE,MAAK,YAAWA,oBAAAA,UAAUuN,KAAK,cAAfvN,yCAAAA,yBAAAA,kBAAiB2N,IAAI,cAArB3N,8CAAAA,+BAAAA,uBAAuB7H,KAAK,cAA5B6H,mDAAAA,4BAA8B,CAAC,EAAE,GAAGpB;QACtG8P,UAAU,SAAO1O,oBAAAA,UAAUuN,KAAK,cAAfvN,yCAAAA,yBAAAA,kBAAiB2N,IAAI,cAArB3N,8CAAAA,+BAAAA,uBAAuB7H,KAAK,cAA5B6H,mDAAAA,4BAA8B,CAAC,EAAE,MAAK,YAAWA,oBAAAA,UAAUuN,KAAK,cAAfvN,yCAAAA,yBAAAA,kBAAiB2N,IAAI,cAArB3N,8CAAAA,+BAAAA,uBAAuB7H,KAAK,cAA5B6H,mDAAAA,4BAA8B,CAAC,EAAE,GAAGpB;QACtG+P,kBAAkB;gBAAM3O;gBAAAA;mBAAAA,CAAAA,6BAAAA,mBAAAA,UAAUQ,KAAK,cAAfR,uCAAAA,iBAAiBL,QAAQ,gBAAzBK,uCAAAA,4BAA+B;;QACvDY,KAAK,GAAEd,iBAAAA,MAAMpF,MAAM,cAAZoF,qCAAAA,eAAcc,KAAK;QAC1BC,QAAQf,CAAAA,wBAAAA,iBAAAA,MAAMpF,MAAM,cAAZoF,qCAAAA,eAAce,MAAM,cAApBf,kCAAAA,uBAAwB;QAChC,OAAO;QACP,UAAU;QACV8O,SAAS5O,EAAAA,oBAAAA,UAAUuN,KAAK,cAAfvN,yCAAAA,0BAAAA,kBAAiBwN,KAAK,cAAtBxN,8CAAAA,wBAAwBlE,MAAM,IAAG,sBAAsB;QAChEyS;QACA7M,cAAc;IAChB;AACF,EAAE;AAEF,MAAMmN,YAAY,CAAC/T;IACjB,OAAOA,KACJgU,OAAO,CAAC,mBAAmB,IAC3BA,OAAO,CAAC,YAAY,IACpBA,OAAO,CAAC,sCAAsC,IAC9CA,OAAO,CAAC,cAAc,KACtBC,IAAI;AACT;AAEA,MAAMC,cAAc,CAClBxO,OACAyO,UACAC;IAEA,IAAI1O,UAAU,QAAQ,OAAOA,UAAU,WAAW;QAChD,OAAOA;IACT;IAEA,MAAM2O,YAAY1S,MAAMC,OAAO,CAACwS,MAAO3W,MAAM,IAAI2W,MAAO3W,MAAM,CAAC0W,SAAS,GAAGC,MAAO3W,MAAM;IACxF,MAAM6W,SAAS3S,MAAMC,OAAO,CAACwS,MAAOE,MAAM,IAAIF,MAAOE,MAAM,CAACH,SAAS,GAAGC,MAAOE,MAAM;IACrF,MAAMC,SAAS5S,MAAMC,OAAO,CAACwS,MAAOG,MAAM,IAAIH,MAAOG,MAAM,CAACJ,SAAS,GAAGC,MAAOG,MAAM;IACrF,IAAIC,YAAY9O;IAChB,IAAI,OAAOA,UAAU,UAAU;QAC7B,IAAI,OAAO2O,cAAc,UAAU;YACjC,IAAI;gBACFG,YAAY9W,SAAS2W,WAAW3O;YAClC,EAAE,OAAM;gBACN8O,YAAY1W,2BAA2B4H;YACzC;QACF,OAAO;YACL8O,YAAY1W,2BAA2B4H;QACzC;IACF;IACA,OAAO,GAAG4O,mBAAAA,oBAAAA,SAAU,KAAKE,YAAYD,mBAAAA,oBAAAA,SAAU,IAAI;AACrD;AAEA,OAAO,MAAME,uCAAuC,CAClDzP,OACAC,aACAb,UACAF,cACAG;QA0DgBqQ,kBACyC1P,6BAAAA,wBAAAA,eA6DjDA,oBAAAA,gBAMJ0P,mBACAA,oBAA4C1P,8BAAAA,yBAAAA,gBAGvCA,gBACCA;IAjIV,MAAM0P,YAAY1P,MAAM3B,IAAI,CAAC,EAAE;IAE/B,MAAMsR,mBAAmB,CACvB/O,QACAgP;QAEA,MAAMC,gBAAsDlT,MAAMC,OAAO,CAACgE,MAAM,CAAC,EAAE,IAC/E,AAACA,OAAsB7D,GAAG,CAACkO,CAAAA,MACzBA,IACGlO,GAAG,CAAC+S,CAAAA,OAAQf,UAAUe,OACtBzS,MAAM,CAAC0S,SACPhJ,IAAI,CAAC,QAEV,AAACnG,OAAoB7D,GAAG,CAAC+S,CAAAA,OAAQf,UAAUe;QAE/C,OAAOD,cAAc9S,GAAG,CAAC,CAAC2D,OAAOyO;gBACVS,cAcDA,eAUCA;YAxBrB,MAAMI,eAAeJ,mBAAAA,8BAAAA,eAAAA,OAAQK,IAAI,cAAZL,mCAAAA,aAAczQ,KAAK;YACxC,IAAI+Q;YAEJ,IAAIvT,MAAMC,OAAO,CAACoT,eAAe;gBAC/B,MAAMG,aAAaH,YAAY,CAACb,SAAS;gBACzC,IAAIxS,MAAMC,OAAO,CAACuT,aAAa;oBAC7BD,YAAY,OAAOC,UAAU,CAAC,EAAE,KAAK,WAAWA,UAAU,CAAC,EAAE,GAAGrR;gBAClE,OAAO,IAAI,OAAOqR,eAAe,UAAU;oBACzCD,YAAYC;gBACd;YACF,OAAO,IAAI,OAAOH,iBAAiB,UAAU;gBAC3CE,YAAYF;YACd;YAEA,MAAMI,cAAcR,mBAAAA,8BAAAA,gBAAAA,OAAQK,IAAI,cAAZL,oCAAAA,cAAcvJ,IAAI;YACtC,IAAIgK;YAEJ,IAAI1T,MAAMC,OAAO,CAACwT,cAAc;gBAC9BC,WAAW1T,MAAMC,OAAO,CAACwT,WAAW,CAAC,EAAE,IAAIA,WAAW,CAAC,EAAE,CAACjB,SAAS,GAAGiB,WAAW,CAACjB,SAAS;YAC7F,OAAO,IAAI,OAAOiB,gBAAgB,UAAU;gBAC1CC,WAAWD;YACb;YAEA,MAAME,kBAAkBnB,YAAY,IAAI,IAAI;YAC5C,MAAMoB,eAAeX,mBAAAA,8BAAAA,eAAAA,OAAQ9H,IAAI,cAAZ8H,mCAAAA,aAAczQ,KAAK;YACxC,MAAMqR,kBAAkB7T,MAAMC,OAAO,CAAC2T,gBAAgBA,YAAY,CAACD,gBAAgB,GAAGC;YAEtF,MAAME,eAAeb,mBAAAA,6BAAAA,OAAQc,KAAK;YAClC,MAAMC,YAAYhU,MAAMC,OAAO,CAAC6T,gBAAgBA,YAAY,CAACtB,SAAS,GAAGsB;YAEzE,MAAMG,QAA6B;gBACjC,GAAI,OAAOV,cAAc,WAAW;oBAAE/Q,OAAO+Q;gBAAU,IAAI,CAAC,CAAC;gBAC7D,GAAI,OAAOG,aAAa,WAAW;oBAAEA;gBAAS,IAAI,CAAC,CAAC;gBACpD,GAAI,OAAOG,oBAAoB,WAAW;oBAAEA;gBAAgB,IAAI,CAAC,CAAC;gBAClE,GAAIG,YAAY;oBAAEA;gBAAU,IAAI,CAAC,CAAC;YACpC;YAEA,OAAO;gBAAEjQ;gBAAOkQ;YAAM;QACxB;IACF;QACgBlB;IAAhB,MAAMmB,UAAUnB,CAAAA,2BAAAA,mBAAAA,UAAUN,KAAK,cAAfM,uCAAAA,iBAAiB9O,MAAM,cAAvB8O,qCAAAA,0BAA2B,EAAE;IAC7C,MAAMN,QAAQM,UAAUN,KAAK,CAAEa,IAAI,GAAGP,UAAUN,KAAK,IAAIpP,gBAAAA,MAAMpF,MAAM,cAAZoF,qCAAAA,yBAAAA,cAAcK,QAAQ,cAAtBL,8CAAAA,8BAAAA,uBAAwB3B,IAAI,cAA5B2B,kDAAAA,4BAA8B8Q,KAAK,AAAC,CAAC,EAAE,CAAC1B,KAAK;IACtG,MAAM2B,OAAOF,OAAO,CAAC,EAAE,CAAC9T,GAAG,CAAC,CAACiU,GAAGC,WAC9BJ,QAAQ9T,GAAG,CAAC,CAACmU,KAAK/B;gBASKC,aAUDA,cAWOA;YA7B3B,MAAM+B,YAAYD,GAAG,CAACD,SAAS;YAC/B,MAAMG,aAAa,OAAOD,cAAc,WAAWpC,UAAUoC,aAAaA;YAE1E,MAAME,iBACJ,OAAOD,eAAe,YAAY,OAAOA,eAAe,WACpDlC,YAAYkC,YAAYjC,UAAUC,SAClCgC;YAEN,MAAME,eAAelC,kBAAAA,6BAAAA,cAAAA,MAAOa,IAAI,cAAXb,kCAAAA,YAAajQ,KAAK;YACvC,IAAI+Q;YACJ,IAAIvT,MAAMC,OAAO,CAAC0U,eAAe;gBAC/B,MAAMC,QAAQD,YAAY,CAACnC,SAAS;gBACpC,MAAMqC,aAAa7U,MAAMC,OAAO,CAAC2U,SAASA,KAAK,CAACN,SAAS,GAAGM;gBAC5DrB,YAAY,OAAOsB,eAAe,WAAWA,aAAa1S;YAC5D,OAAO,IAAI,OAAOwS,iBAAiB,UAAU;gBAC3CpB,YAAYoB;YACd;YAEA,MAAMG,cAAcrC,kBAAAA,6BAAAA,eAAAA,MAAOa,IAAI,cAAXb,mCAAAA,aAAa/I,IAAI;YACrC,IAAIgK;YACJ,IAAI1T,MAAMC,OAAO,CAAC6U,cAAc;gBAC9B,MAAMF,QAAQE,WAAW,CAACtC,SAAS;gBACnC,MAAMuC,gBAAgB/U,MAAMC,OAAO,CAAC2U,SAASA,KAAK,CAACN,SAAS,GAAGM;gBAC/DlB,WAAW,OAAOqB,kBAAkB,WAAWA,gBAAgB5S;YACjE,OAAO,IAAI,OAAO2S,gBAAgB,UAAU;gBAC1CpB,WAAWoB;YACb;YAEA,MAAMnB,kBAAkBnB,YAAY,IAAI,IAAI;YAC5C,MAAMwC,qBAAqBvC,kBAAAA,6BAAAA,cAAAA,MAAOtH,IAAI,cAAXsH,kCAAAA,YAAajQ,KAAK;YAC7C,IAAIqR;YACJ,IAAI7T,MAAMC,OAAO,CAAC+U,qBAAqB;gBACrC,MAAMJ,QAAQI,kBAAkB,CAACrB,gBAAgB;gBACjD,MAAMkB,aAAa7U,MAAMC,OAAO,CAAC2U,SAASA,KAAK,CAACN,SAAS,GAAGM;gBAC5Df,kBAAkB,OAAOgB,eAAe,WAAWA,aAAa1S;YAClE,OAAO,IAAI,OAAO6S,uBAAuB,UAAU;gBACjDnB,kBAAkBmB;YACpB;YAEA,MAAMC,eAAejV,MAAMC,OAAO,CAACwS,kBAAAA,4BAAAA,MAAOsB,KAAK,IAAItB,MAAMsB,KAAK,CAACvB,SAAS,GAAGC,kBAAAA,4BAAAA,MAAOsB,KAAK;YACvF,MAAMC,YAAYiB;YAElB,MAAMhB,QAA6B;gBACjC,GAAIV,YAAY;oBAAE/Q,OAAO+Q;gBAAU,IAAI,CAAC,CAAC;gBACzC,GAAI,OAAOG,aAAa,WAAW;oBAAEA;gBAAS,IAAI,CAAC,CAAC;gBACpD,GAAIG,kBAAkB;oBAAEA;gBAAgB,IAAI,CAAC,CAAC;gBAC9C,GAAIG,YAAY;oBAAEA;gBAAU,IAAI,CAAC,CAAC;YACpC;YAEA,OAAO;gBACLjQ,OAAO2Q;gBACPT;YACF;QACF;IAGF,MAAMnC,SAAoC;QACxCoD,MAAM;YACJ,GAAI7R,EAAAA,iBAAAA,MAAMpF,MAAM,cAAZoF,sCAAAA,qBAAAA,eAAciQ,IAAI,cAAlBjQ,yCAAAA,mBAAoBqG,IAAI,IAAG;gBAAEgK,UAAUrQ,MAAMpF,MAAM,CAACqV,IAAI,CAAC5J,IAAI;YAAC,IAAI,CAAC,CAAC;QAC1E;IACF;QAIIqJ;IAFJ,OAAO;QACLoC,SAASnC,iBACPD,CAAAA,4BAAAA,oBAAAA,UAAUE,MAAM,cAAhBF,wCAAAA,kBAAkB9O,MAAM,cAAxB8O,sCAAAA,2BAA4B,EAAE,EAC9BA,EAAAA,qBAAAA,UAAUE,MAAM,cAAhBF,yCAAAA,mBAAkBO,IAAI,IAAGP,UAAUE,MAAM,IAAG5P,iBAAAA,MAAMpF,MAAM,cAAZoF,sCAAAA,0BAAAA,eAAcK,QAAQ,cAAtBL,+CAAAA,+BAAAA,wBAAwB3B,IAAI,cAA5B2B,mDAAAA,6BAA8B8Q,KAAK,AAAC,CAAC,EAAE,CAAClB,MAAM;QAE5FmB;QACAjQ,KAAK,GAAEd,iBAAAA,MAAMpF,MAAM,cAAZoF,qCAAAA,eAAcc,KAAK;QAC1BC,MAAM,GAAEf,iBAAAA,MAAMpF,MAAM,cAAZoF,qCAAAA,eAAce,MAAM;QAC5B0N;IACF;AACF,EAAE;AAEF,OAAO,MAAMsD,0BAA0B,CAAC/R;IACtC,MAAMgS,aAA2B;QAAE,GAAGhS,KAAK;IAAC;IAC5C,IAAK,IAAIiS,SAAS,GAAGA,SAASjS,MAAM3B,IAAI,CAACrC,MAAM,EAAEiW,SAAU;YAIxB3W;QAHjC,MAAMA,SAAS0E,MAAM3B,IAAI,CAAC4T,OAAO;QACjC3W,OAAOkE,CAAC,GAAG,EAAE;QACblE,OAAOqD,CAAC,GAAG,EAAE;YACoBrD;QAAjC,IAAK,IAAI4W,UAAU,GAAGA,UAAW5W,CAAAA,CAAAA,oBAAAA,YAAAA,OAAO6W,CAAC,cAAR7W,gCAAAA,UAAUU,MAAM,cAAhBV,8BAAAA,mBAAoB,CAAA,GAAI4W,UAAW;gBAC/C5W,eAA2CA;YAA9D,IAAIhC,gBAAegC,gBAAAA,OAAO8W,KAAK,cAAZ9W,oCAAAA,aAAc,CAAC4W,QAAQ,KAAK5Y,gBAAegC,aAAAA,OAAO6W,CAAC,cAAR7W,iCAAAA,UAAU,CAAC4W,QAAQ,GAAG;gBAClF;YACF;YAEA,MAAMG,WAAW,AAAE/W,OAAO8W,KAAK,AAAC,CAACF,QAAQ,GAActT,KAAK0T,EAAE,GAAI;YAClE,MAAMC,SAASjX,OAAO6W,CAAC,AAAC,CAACD,QAAQ;YACjC5W,OAAOkE,CAAC,CAACkE,IAAI,CAAC6O,SAAS3T,KAAK4T,GAAG,CAACH;YAChC/W,OAAOqD,CAAC,CAAC+E,IAAI,CAAC6O,SAAS3T,KAAK6T,GAAG,CAACJ;QAClC;QACAL,WAAW3T,IAAI,CAAC4T,OAAO,GAAG3W;IAC5B;IAEA,OAAO0W;AACT,EAAE;AAEF,8DAA8D;AAC9D,SAASU,cAAcC,GAAQ;IAC7B,OACEnR,OAAOoR,SAAS,CAAC/S,QAAQ,CAACgT,IAAI,CAACF,SAAS,qBACxCnR,OAAOsR,cAAc,CAACH,KAAKI,cAAc,CAAC;AAE9C;AAEA,8DAA8D;AAC9D,IAAIC,kBAAyB,EAAE;AAC/B,8DAA8D;AAC9D,IAAIC,QAAe,EAAE;AACrB,8DAA8D;AAC9D,IAAIC,eAAsB,EAAE;AAC5B,8DAA8D;AAC9D,IAAIC,eAAoBC;AACxB;;;;CAIC,GACD,8DAA8D;AAC9D,OAAO,SAASC,oBAAoBC,KAAU;IAC5C,sCAAsC;IACtCC,eAAeJ,eAAe,GAAG;AACnC;AAEA,8DAA8D;AAC9D,SAASI,eAAeC,SAAc,EAAElW,CAAS,EAAEmW,WAAgB;IACjE,IAAIpO,OAAOmO,SAAS,CAACP,KAAK,CAAC3V,EAAE,CAAC;IAC9B,IAAIoW,iBAAiBD,cAAcR,KAAK,CAAC3V,EAAE;IAC3C,IAAIA,MAAM2V,MAAMjX,MAAM,GAAG,GAAG;QAC1B,IAAIhD,oBAAoBqM,OAAO;YAC7B2N,gBAAgBtP,IAAI,CAAC0P,eAAeM;QACtC;IACF,OAAO;QACL,IAAIR,YAAY,CAAC5V,EAAE,EAAE;YACnB,IAAIX,MAAMC,OAAO,CAACyI,OAAO;gBACvB,IAAK,IAAIsO,IAAI,GAAGA,IAAItO,KAAKrJ,MAAM,EAAE2X,IAAK;oBACpC,IAAIjB,cAAcrN,IAAI,CAACsO,EAAE,GAAG;wBAC1BJ,eAAelO,IAAI,CAACsO,EAAE,EAAErW,IAAI,GAAGoW,iBAAiB,MAAMC,IAAI;oBAC5D;gBACF;YACF;QACF,OAAO,IAAIjB,cAAcrN,OAAO;YAC9BkO,eAAelO,MAAM/H,IAAI,GAAGoW,iBAAiB;QAC/C;IACF;AACF;AAEA,SAAS1P,eAAerB,IAAsC;IAC5D,IAAI,CAACA,MAAM;QACT;IACF;IAEA,IAAImB,cAAoC,CAAC;IACzC,IAAInB,KAAKrI,IAAI,EAAE;QACbwJ,cAAc;YAAE,GAAGA,WAAW;YAAE,GAAG9J,WAAW,CAAC2I,KAAKrI,IAAI,CAAC;QAAC;IAC5D;IAEA,OAAQqI,KAAKiR,KAAK;QAChB,KAAK;YACH,MAAMC,YAAY,OAAOlR,KAAKkR,SAAS,KAAK,WAAWlR,KAAKkR,SAAS,GAAG;YACxE/P,YAAYgQ,KAAK,GAAGra,gBAAgBsa,OAAO,CAAC,IAAIF,YAAY;YAC5D;QACF,KAAK;YACH/P,YAAYgQ,KAAK,GAAG;YACpB;QACF,KAAK;YACHhQ,YAAYgQ,KAAK,GAAG;YACpB;QACF,KAAK;YACHhQ,YAAYgQ,KAAK,GAAG;YACpB;QACF;YACEhQ,YAAYgQ,KAAK,GAAG;IACxB;IAEA,OAAOtS,OAAOwS,IAAI,CAAClQ,aAAa9H,MAAM,GAAG,IAAI8H,cAAchF;AAC7D;AAEA,yEAAyE;AACzE,MAAM2H,eAAe,CACnBwN,MACAvT,OACAwT;IAEA,IAAI,OAAOxT,UAAU,eAAeA,UAAU,MAAM;QAClD,OAAO,CAAC;IACV;IAEA,OAAOwT,WACH,AAACD,KAAoBE,SAAS,CAACxc,CAAAA,MAAOA,IAAIuJ,QAAQ,CAACR,UACnD,AAACuT,KAA+BE,SAAS,CACvC,CAACxc,KAAKyF,QACJ,AAACsD,SAAoB/I,IAAIsP,EAAE,IAC1B7J,CAAAA,UAAU6W,KAAKjY,MAAM,GAAG,IAAI,AAAC0E,SAAoB/I,IAAIuP,EAAE,GAAI,AAACxG,QAAmB/I,IAAIuP,EAAE;AAEhG;AAEA,MAAMJ,aAAa,CAACnP;IAClB,OAAOA,IAAIuP,EAAE,GAAIvP,IAAIsP,EAAE;AACzB;AAEA,MAAMD,eAAe,CAACrP;IACpB,OAAO,AAACA,CAAAA,IAAIuP,EAAE,GAAIvP,IAAIsP,EAAE,IAAK;AAC/B;AAEA,kCAAkC;AAClC,MAAMhB,aAAa,CACjB5H,MACA+V,UACAC,QACAC;IAEA,IAAI,CAACjW,QAAQA,KAAKrC,MAAM,KAAK,GAAG;QAC9B,OAAO,EAAE;IACX;IAEA,IAAI5C,cAAciF,OAAO;QACvB,MAAMkW,aAAa5X,MAAM6X,IAAI,CAAC,IAAI3K,IAAIxL;QACtC,MAAM8H,QAAQ,OAAOiO,aAAa,WAAWxV,KAAK6V,IAAI,CAACL,YAAY;QACnE,MAAMM,OAAO,OAAOL,WAAW,WAAWzV,KAAK+V,KAAK,CAACN,UAAU,IAAIE,WAAWvY,MAAM;QACpF,MAAM2R,OAAO,OAAO2G,YAAY,WAAWA,UAAU;QAErD,OAAOhc,QAAQ6N,OAAOuO,MAAM/G,MAAM5Q,GAAG,CAACO,CAAAA,IAAKiX,WAAWrR,KAAK,CAAC5F,GAAGA,IAAIqQ;IACrE;IAEA,MAAM/I,QAAQpM,gBACX8M,MAAM,CAACxN,SAAiBuG,OACxBuW,IAAI;IACP,IAAI,CAACC,QAAQC,OAAO,GAAGlQ,MAAMU,MAAM;IAEnCuP,SAAS,OAAOT,aAAa,WAAWA,WAAWS;IACnDC,SAAS,OAAOT,WAAW,WAAWA,SAASS;IAE/C,MAAMC,eAAend,QAAQ0N,MAAM,CAAC;QAACuP;QAAQC;KAAO;IAEpD,IAAI,OAAOR,YAAY,YAAYA,UAAU,GAAG;QAC9C,MAAMU,aAAuB,EAAE;QAC/B,MAAMC,YAAYrW,KAAKzG,GAAG,CAAC+c,aAAaL,SAASK,aAAaZ;QAC9D,IAAIa,KAAKC,eAAeP,QAAQI;QAEhC,MAAOE,KAAKC,eAAeN,SAASR,SAASW,WAAY;YACvDD,WAAWtR,IAAI,CAACyR;YAChBA,KAAKC,eAAeD,KAAKb,SAASW;QACpC;QAEAJ,SAASG,UAAU,CAAC,EAAE;QACtBF,SAASE,UAAU,CAACA,WAAWhZ,MAAM,GAAG,EAAE;QAC1C+Y,aAAazP,MAAM,CAAC;YAACuP;YAAQC;SAAO,EAAEE,UAAU,CAACA;QAEjD,8FAA8F;QAC9F,kGAAkG;QAClG,gFAAgF;QAChF,uEAAuE;QACvE,OAAOD,aAAa1W,MAAkB6E,KAAK,CAAC,GAAG,CAAC;IAClD;IACA,OAAO6R,aAAa1W;AACtB;AAEA,MAAMqI,oBAAoB,CAACC,UAA4ChP;IACrE,OAAQgP;QACN,KAAK;YACH,OAAO3O,MAAML;QACf,KAAK;YACH,OAAOA,IAAIqE,MAAM,KAAK,IAAI,IAAIhE,MAAML,OAAOA,IAAIqE,MAAM;QACvD,KAAK;gBACI9D;YAAP,OAAOA,CAAAA,SAAAA,MAAMP,kBAANO,oBAAAA,SAAc;QACvB,KAAK;gBACIE;YAAP,OAAOA,CAAAA,SAAAA,MAAMT,kBAANS,oBAAAA,SAAc;QACvB;YACE,OAAOT,IAAIqE,MAAM;IACrB;AACF;AAEA,MAAM4K,oBAAoB,CACxBC,UACAnG,OACA6F,OACA8O,IACAC,KAAa,CAAC;IAEd,OAAQzO;QACN,KAAK;YACH,OAAON,UAAU,IAAI,IAAI,AAAC7F,QAAQ6F,QAAS;QAC7C,KAAK;YACH,OAAOA,UAAU,IAAI,IAAI7F,QAAQ6F;QACnC,KAAK;YACH,OAAO8O,KAAKC,OAAO,IAAI,IAAI5U,QAAS2U,CAAAA,KAAKC,EAAC;QAC5C,KAAK;YACH,OAAO/O,QAAQ8O,KAAKC,OAAO,IAAI,IAAI5U,QAAS6F,CAAAA,QAAQ8O,KAAKC,EAAC;QAC5D;YACE,OAAO5U;IACX;AACF;AAEA,MAAMwU,eAAe,CAACxU;QACbA;QAAAA;IAAP,OAAOA,CAAAA,iCAAAA,yBAAAA,MAAMb,QAAQ,GAAG0V,KAAK,CAAC,IAAI,CAAC,EAAE,cAA9B7U,6CAAAA,uBAAgC1E,MAAM,cAAtC0E,2CAAAA,gCAA0C;AACnD;AAEA,MAAM0U,iBAAiB,CAAC1U,OAAeuU;IACrC,MAAMO,SAAS5W,KAAK6W,GAAG,CAAC,IAAIR;IAC5B,OAAOrW,KAAK8W,KAAK,CAAChV,QAAQ8U,UAAUA;AACtC;AAEA,MAAMtR,iBAAiB,CAAC5I;QACLA,cAGNA;IAHX,MAAMqa,WAAWra,EAAAA,eAAAA,OAAOqH,IAAI,cAAXrH,mCAAAA,aAAahB,IAAI,KAAI;IACtC,IAAIqb,aAAa,SAASA,aAAa,UAAUA,aAAa,WAAW;QACvE,OAAO;IACT,OAAO,KAAIra,eAAAA,OAAOyI,IAAI,cAAXzI,mCAAAA,aAAa4F,QAAQ,CAAC,YAAY;QAC3C,OAAO;IACT;IACA,OAAO;AACT;AAEA,OAAO,MAAM0U,uBAAuB,CAClC5V,OACAZ,UACAF,cACA2W,WACAxW;IAEA,MAAMyW,eAAyB,EAAE;IACjC,+GAA+G;IAC/G,MAAMC,eAAe/V,MAAM3B,IAAI,CAACmK,MAAM,CAAC,CAACwN,KAAK1a;QAC3C,OACE0a,OAAO,AAAC1a,OAA6BoG,UAAU,KAAK,QAAQ,AAACpG,OAA6BoG,UAAU,KAAK5C;IAE7G,GAAG;IAEH,IAAIiX,cAAc;QAChB/V,MAAM3B,IAAI,CAACI,OAAO,CAAC,CAACnD,QAAc8B;YAChC,IAAIyY,SAAS,CAACzY,MAAM,CAACqG,IAAI,KAAK,SAAS;oBAGnCzD,eAA6BA,+BAAAA,wBAAAA,gBAE7BA,gBAA6BiW,mBAK/BA;gBATA,MAAMA,YAAY3a;oBAEhB0E,2BAEAA;gBAHF,MAAMG,SAA+CxG,aACnDqG,CAAAA,6BAAAA,gBAAAA,MAAMpF,MAAM,cAAZoF,oCAAAA,cAAcI,WAAW,cAAzBJ,uCAAAA,6BAA6BA,iBAAAA,MAAMpF,MAAM,cAAZoF,sCAAAA,yBAAAA,eAAcK,QAAQ,cAAtBL,8CAAAA,gCAAAA,uBAAwBpF,MAAM,cAA9BoF,oDAAAA,8BAAgCf,QAAQ,EACrEC,cACAc,CAAAA,8BAAAA,iBAAAA,MAAMpF,MAAM,cAAZoF,qCAAAA,eAAcI,WAAW,cAAzBJ,wCAAAA,6BAA6BiW,sBAAAA,iCAAAA,oBAAAA,UAAW3V,MAAM,cAAjB2V,wCAAAA,kBAAmB9V,MAAM,EACtDf,UACAC;iBAGF4W,oBAAAA,UAAUzV,MAAM,cAAhByV,wCAAAA,kBAAkBxX,OAAO,CAAC,CAACgC,OAAOyV;oBAChC,MAAMrV,SAAS,GAAGJ,OAAO;oBACzB,0DAA0D;oBAC1D,MAAMtB,QAAgBvF,aAAauG,QAAQ+V,YAAYrV,QAAQzB,UAAUC;oBACzE,IAAIwB,WAAW,MAAMiV,aAAaK,IAAI,CAACC,CAAAA,QAASA,MAAMrb,KAAK,KAAK8F,YAAY,OAAO;wBACjFiV,aAAapS,IAAI,CAAC;4BAChB3I,OAAO8F;4BACP1B;wBACF;oBACF;gBACF;YACF,OAAO,IAAIkX,cAAcR,SAAS,CAACzY,MAAM,CAACqG,IAAI,MAAM,OAAO;oBAG3C6S,kBAA0BA,oBAGtCtW,gCAAAA,yBAAAA;gBALF,MAAMsW,aAAahb;gBACnB,MAAMmK,OAAO6Q,WAAWC,WAAW;gBACnC,MAAMpX,QAAQmX,EAAAA,mBAAAA,WAAW3T,IAAI,cAAf2T,uCAAAA,iBAAiBnX,KAAK,OAAImX,qBAAAA,WAAWhW,MAAM,cAAjBgW,yCAAAA,mBAAmBnX,KAAK;gBAChE,MAAM8E,cAAcC,eAAeoS;gBACnC,MAAME,gBAAgB7c,cACpBqG,iBAAAA,MAAMpF,MAAM,cAAZoF,sCAAAA,0BAAAA,eAAcK,QAAQ,cAAtBL,+CAAAA,iCAAAA,wBAAwBpF,MAAM,cAA9BoF,qDAAAA,+BAAgCf,QAAQ,EACxCC,cACAC,OACAC,UACAC;gBAEF,IAAIoG,SAAS3G,aAAa2G,SAAS,MAAMqQ,aAAaK,IAAI,CAACC,CAAAA,QAASA,MAAMrb,KAAK,KAAK0K,UAAU,OAAO;oBACnGqQ,aAAapS,IAAI,CAAC;wBAChB3I,OAAO0K;wBACPtG,OAAOqX;wBACP5C,OAAO3P;oBACT;gBACF;YACF;QACF;IACF;IAEA,OAAO;QACL/B,SAAS4T;QACTW,eAAe;QACfC,kBAAkB;QAClBC,0BAA0B;IAC5B;AACF,EAAE;AAEF,MAAMxU,iBAAiB,CAAC9D,MAAczD,QAAqCqF;IACzE,MAAMiC,UAAoB,EAAE;IAC5B,IAAI7D,KAAKrC,MAAM,KAAK,GAAG;QACrBkG,QAAQwB,IAAI,CAACrF,IAAI,CAAC,EAAE,CAACoH,IAAI,IAAI;IAC/B,OAAO;QACLpH,KAAKI,OAAO,CAAC,CAACnD,QAAQ8B;YACpB8E,QAAQwB,IAAI,CAACpI,OAAOmK,IAAI,IAAI,CAAC,OAAO,EAAErI,QAAQ,GAAG;QACnD;IACF;IAEA,MAAMwZ,kBAAkBvY,KAAKwY,KAAK,CAAC,CAACvb,SAA8BA,OAAOoG,UAAU,KAAK;IACxF,MAAMoV,sBAAsBlc,CAAAA,mBAAAA,6BAAAA,OAAQ8G,UAAU,MAAK,SAAU9G,CAAAA,mBAAAA,6BAAAA,OAAQ8G,UAAU,MAAK,QAAQQ,QAAQlG,MAAM,GAAG;IAE7G,OAAO;QACLkG;QACAT,YAAYxB,eAAe6W,uBAAuBF;IACpD;AACF;AAEA,OAAO,MAAMjW,4BAA4B,CAACtC,MAAiCjB;IACzE,IAAIpE,oBAAoBqF,OAAO;QAC7B,IAAI,OAAOA,IAAK,CAACjB,MAAM,KAAK,YAAY,CAAC2Z,SAAS1Y,IAAK,CAACjB,MAAM,GAAa;YACzE;QACF;QAEA,OAAOiB,IAAK,CAACjB,MAAM;IACrB;IAEA,OAAO;AACT,EAAE;AAEF,OAAO,MAAMyF,mBAAmB,CAACvH;IAC/B,IAAI,CAACtC,oBAAoBsC,OAAOkE,CAAC,KAAK,CAACxG,oBAAoBsC,OAAOqD,CAAC,GAAG;QACpE,OAAO,EAAE;IACX;IAEA,MAAMqY,SAA6B,EAAE;IACrC,IAAI7Q,QAAQ;IACZ,IAAIC,MAAM;IACV,MAAOA,MAAM9K,OAAOkE,CAAC,CAAExD,MAAM,EAAEoK,MAAO;QACpC,IAAI9M,eAAegC,OAAOkE,CAAC,AAAC,CAAC4G,IAAI,KAAK9M,eAAegC,OAAOqD,CAAC,AAAC,CAACyH,IAAI,GAAG;YACpE,IAAIA,MAAMD,QAAQ,GAAG;gBACnB6Q,OAAOtT,IAAI,CAAC;oBAACyC;oBAAOC;iBAAI;YAC1B;YACAD,QAAQC,MAAM;QAChB;IACF;IACA,IAAIA,MAAMD,QAAQ,GAAG;QACnB6Q,OAAOtT,IAAI,CAAC;YAACyC;YAAOC;SAAI;IAC1B;IAEA,OAAO4Q;AACT,EAAE;AAEF,MAAMC,kBAAkB,CAACvR,KAAawR;IACpC,MAAMC,gBAAgBzR,IAAIsJ,OAAO,CAACkI,SAAS,QAAQ,KAAK,MAAMxR,IAAIsJ,OAAO,CAACkI,SAAS;IACnF,OAAOE,SAASD,eAAe,MAAM;AACvC;AAEA,OAAO,MAAMd,gBAAgB,CAAC7O;IAC5B,OAAO;QAAC;QAAS;QAAU;KAAM,CAACtG,QAAQ,CAACsG;AAC7C,EAAE;AAEF,OAAO,MAAM6P,oBAAoB,CAC/BC,QACArX,aACAsX;IAEA,MAAMC,UAA4B,EAAE;IACpC,MAAMC,UAA4B,EAAE;IACpC,IAAIC,mBAAmB;IAKvB,MAAMC,cAA+C,CAAC;IACtD,IAAIC,eAAe;IACnB,IAAIC,kBAAkB;IACtB,MAAMC,aAAiC,CAAC;IACxC,IAAI,CAAC7X,aAAa;QAChB,OAAO;YAAE2X;YAAcC;YAAiBjd,QAAQkd;QAAW;IAC7D;IAEA,MAAMld,SAAS0c,mBAAAA,6BAAAA,OAAQ1c,MAAM;IAE7B,IAAIA,WAAWkE,aAAalE,WAAW,QAAQ4G,OAAOwS,IAAI,CAACpZ,QAAQoB,MAAM,GAAG,GAAG;QAC7EwF,OAAOwS,IAAI,CAACpZ,mBAAAA,oBAAAA,SAAU,CAAC,GAAG6D,OAAO,CAACiH,CAAAA;YAChC,IAAIA,IAAIqS,UAAU,CAAC,UAAU;oBAEXnd;gBADhB,MAAMwC,QAAQ6Z,gBAAgBvR,KAAK;oBACpB;gBAAf,MAAMxH,SAAS,CAAA,sBAACtD,cAAAA,MAAM,CAAC8K,IAA2B,cAAlC9K,kCAAD,AAACA,YAA4DsD,MAAM,cAAnE,gCAAA,qBAAuE;gBACtF,MAAM8Z,cAAcf,gBAAgB/Y,QAAQ;gBAC5C,IAAId,UAAU4a,aAAa;oBACzB,MAAM,IAAInb,MAAM,CAAC,sBAAsB,EAAEO,QAAQ,EAAE,mBAAmB,EAAE4a,cAAc,GAAG;gBAC3F;gBACA,MAAMC,cAAcrd,MAAM,CAAC8K,IAA2B;gBACtD,MAAMwS,cAA8B;oBAClC/R,OAAO8R,CAAAA,wBAAAA,kCAAAA,YAAa3S,MAAM,IAAG2S,YAAY3S,MAAM,CAAC,EAAE,GAAG;oBACrDc,KAAK6R,CAAAA,wBAAAA,kCAAAA,YAAa3S,MAAM,IAAG2S,YAAY3S,MAAM,CAAC,EAAE,GAAG;gBACrD;gBACAkS,QAAQ9T,IAAI,CAACwU;YACf,OAAO,IAAIxS,IAAIqS,UAAU,CAAC,UAAU;oBAElBnd;gBADhB,MAAMwC,QAAQ6Z,gBAAgBvR,KAAK;oBACpB;gBAAf,MAAMxH,SAAS,CAAA,uBAACtD,eAAAA,MAAM,CAAC8K,IAA2B,cAAlC9K,mCAAD,AAACA,aAA4DsD,MAAM,cAAnE,iCAAA,sBAAuE;gBACtF,MAAM8Z,cAAcf,gBAAgB/Y,QAAQ;gBAC5C,IAAId,UAAU4a,aAAa;wBACiBpd;oBAA1C,IAAI,AAACwC,UAAU,KAAK4a,gBAAgB,KAAMpd,EAAAA,iBAAAA,OAAOqD,MAAM,cAAbrD,qCAAAA,eAAeuD,IAAI,MAAK,SAAS;wBACzE,kEAAkE;wBAClE,OAAO;4BAAEyZ;4BAAcC;wBAAgB;oBACzC;oBACA,MAAM,IAAIhb,MAAM,CAAC,sBAAsB,EAAEO,QAAQ,EAAE,mBAAmB,EAAE4a,cAAc,GAAG;gBAC3F;gBACA,MAAMG,cAAcvd,MAAM,CAAC8K,IAA2B;gBACtD,MAAM0S,cAA8B;oBAClCjS,OAAOgS,CAAAA,wBAAAA,kCAAAA,YAAa7S,MAAM,IAAG6S,YAAY7S,MAAM,CAAC,EAAE,GAAG;oBACrDc,KAAK+R,CAAAA,wBAAAA,kCAAAA,YAAa7S,MAAM,IAAG6S,YAAY7S,MAAM,CAAC,EAAE,GAAG;gBACrD;gBACAmS,QAAQ/T,IAAI,CAAC0U;YACf;QACF;IACF;IAEAV,mBAAmBF,QAAQxb,MAAM,EAAE,uDAAuD;IAC1Fub,gBAAgB9Y,OAAO,CAAC,CAAC6U,OAAOlW;QAC9B,IAAIiZ,cAAc/C,MAAM7P,IAAI,GAAG;gBACd6T,cAENhc,gBACFA,iBAGEA,iBACFA;YAPP,MAAMA,SAASgc,mBAAAA,8BAAAA,eAAAA,OAAQjZ,IAAI,cAAZiZ,mCAAAA,YAAc,CAACla,MAAM;YACpC,MAAM8a,cAA8B;gBAClC/R,OAAO7K,EAAAA,iBAAAA,OAAOgK,MAAM,cAAbhK,qCAAAA,eAAekE,CAAC,IAAGlE,OAAOgK,MAAM,CAAC9F,CAAC,CAAC,EAAE,GAAG;gBAC/C4G,KAAK9K,EAAAA,kBAAAA,OAAOgK,MAAM,cAAbhK,sCAAAA,gBAAekE,CAAC,IAAGlE,OAAOgK,MAAM,CAAC9F,CAAC,CAAC,EAAE,GAAG;YAC/C;YACA,MAAM4Y,cAA8B;gBAClCjS,OAAO7K,EAAAA,kBAAAA,OAAOgK,MAAM,cAAbhK,sCAAAA,gBAAeqD,CAAC,IAAGrD,OAAOgK,MAAM,CAAC3G,CAAC,CAAC,EAAE,GAAG;gBAC/CyH,KAAK9K,EAAAA,kBAAAA,OAAOgK,MAAM,cAAbhK,sCAAAA,gBAAeqD,CAAC,IAAGrD,OAAOgK,MAAM,CAAC3G,CAAC,CAAC,EAAE,GAAG;YAC/C;YACA6Y,QAAQ9T,IAAI,CAACwU;YACbT,QAAQ/T,IAAI,CAAC0U;QACf;IACF;IAEA,IAAIxd,WAAWkE,aAAalE,WAAW,QAAQ4G,OAAOwS,IAAI,CAACpZ,QAAQoB,MAAM,GAAG,GAAG;YAC7EpB;SAAAA,sBAAAA,OAAO+c,WAAW,cAAlB/c,0CAAAA,oBAAoB6D,OAAO,CAAC4Z,CAAAA;YAC1B,MAAMC,WAAWd,QAAQe,OAAO,CAAC,CAACC,UAAUC,MAC1C,CAACJ,uBAAAA,iCAAAA,WAAY7Y,CAAC,KAAegZ,SAASrS,KAAK,IAAI,CAACkS,uBAAAA,iCAAAA,WAAY7Y,CAAC,KAAegZ,SAASpS,GAAG,GAAG;oBAACqS;iBAAI,GAAG,EAAE;YAEvG,MAAMC,SAASjB,QAAQtD,SAAS,CAC9B,CAACqE,UAAUG,SACTL,SAASpX,QAAQ,CAACyX,WAClB,CAACN,uBAAAA,iCAAAA,WAAY1Z,CAAC,KAAe6Z,SAASrS,KAAK,IAC3C,CAACkS,uBAAAA,iCAAAA,WAAY1Z,CAAC,KAAe6Z,SAASpS,GAAG;YAG7C,IAAIsS,WAAW,CAAC,GAAG;gBACjB,IAAIf,WAAW,CAACe,OAAO,KAAK5Z,WAAW;oBACrC6Y,WAAW,CAACe,OAAO,GAAG,CAAC;gBACzB;gBACA,IAAI,CAACL,uBAAAA,iCAAAA,WAAYO,SAAS,MAAgB,IAAI;oBAC5CjB,WAAW,CAACe,OAAO,CAACG,WAAW,GAAGR,WAAWrd,IAAI;gBACnD,OAAO;oBACL2c,WAAW,CAACe,OAAO,CAACI,WAAW,GAAGT,WAAWrd,IAAI;gBACnD;YACF;QACF;IACF;IAEA,IAAIwc,QAAQxb,MAAM,GAAG,GAAG;QACtB,MAAM+c,mBAAmB,IAAIC;QAC7BxB,QAAQ/Y,OAAO,CAAC+Z,CAAAA;YACd,MAAM9S,MAAM,GAAG8S,SAASrS,KAAK,CAAC,CAAC,EAAEqS,SAASpS,GAAG,EAAE;YAC/C,IAAI,CAAC2S,iBAAiBE,GAAG,CAACvT,MAAM;gBAC9BqT,iBAAiBG,GAAG,CAACxT,KAAK8S;YAC5B;QACF;QACA,MAAMW,eAAexc,MAAM6X,IAAI,CAACuE,iBAAiBnY,MAAM,IACpD7D,GAAG,CAACyb,CAAAA,WAAYA,SAASrS,KAAK,EAC9BiT,IAAI;QAEPvB,kBAAkB,CAAC,OAAO,EAAEsB,aAAand,MAAM,CAAC,MAAM,CAAC;QAEvDwb,QAAQ/Y,OAAO,CAAC,CAAC+Z,UAAUpb;YACzB,MAAMic,WACJjc,SAASsa,mBACL,GAAG5d,sBAAsBsD,QAAQsa,mBAAmB,GAAG,GACtD,CAAC,CAAC,EAAEta,UAAU,IAAI,KAAKA,QAAQ,GAAG;YAEzC,MAAMkc,cAAcH,aAAahF,SAAS,CAAChO,CAAAA,QAASA,UAAUqS,SAASrS,KAAK;YAC5E,MAAMoT,eAAeD,cAAc,GAAG,6BAA6B;YAEnE,MAAME,kBAAkB7B,WAAW,CAACva,MAAM;YAC1C,MAAM0b,cAAcU,4BAAAA,sCAAAA,gBAAiBV,WAAW;YAEhD,MAAM7N,MAAsB;gBAC1BA,KAAK,CAAC;gBACNwO,QAAQF;gBACRT;gBACAY,SAASlB;gBACTmB,SAAS;oBAAExT,OAAO;oBAAGC,KAAK;gBAAE;YAC9B;YACA0R,UAAU,CAACuB,SAAS,GAAGpO;QACzB;IACF;IACA,IAAIwM,QAAQzb,MAAM,GAAG,GAAG;QACtB,MAAM4d,mBAAmB,IAAIZ;QAC7BvB,QAAQhZ,OAAO,CAAC+Z,CAAAA;YACd,MAAM9S,MAAM,GAAG8S,SAASrS,KAAK,CAAC,CAAC,EAAEqS,SAASpS,GAAG,EAAE;YAC/C,IAAI,CAACwT,iBAAiBX,GAAG,CAACvT,MAAM;gBAC9BkU,iBAAiBV,GAAG,CAACxT,KAAK8S;YAC5B;QACF;QACA,MAAMqB,eAAeld,MAAM6X,IAAI,CAACoF,iBAAiBhZ,MAAM,IACpD7D,GAAG,CAACyb,CAAAA,WAAYA,SAASrS,KAAK,EAC9BiT,IAAI;QAEP,MAAMxP,eAAeiQ,aAAa7d,MAAM;QAExC4b,eAAe,CAAC,OAAO,EAAEhO,aAAa,MAAM,CAAC;QAC7C6N,QAAQhZ,OAAO,CAAC,CAAC+Z,UAAUpb;YACzB,MAAMic,WACJjc,SAASsa,mBACL,GAAG5d,sBAAsBsD,QAAQsa,mBAAmB,GAAG,GACtD,CAAC,CAAC,EAAEta,UAAU,IAAI,KAAKA,QAAQ,GAAG;YACzC,MAAM6T,WAAW4I,aAAa1F,SAAS,CAAChO,CAAAA,QAASA,UAAUqS,SAASrS,KAAK;YACzE,MAAM2T,YAAYlQ,eAAeqH,UAAU,iEAAiE;YAE5G,MAAMuI,kBAAkB7B,WAAW,CAACva,MAAM;YAC1C,MAAMyb,cAAcW,4BAAAA,sCAAAA,gBAAiBX,WAAW;YAEhD,MAAM/I,OAAOgI,UAAU,CAACuB,SAAS;YAEjC,IAAIvJ,SAAShR,WAAW;gBACtBgR,KAAK7E,GAAG,GAAG6O;gBACXhK,KAAK+I,WAAW,GAAGA;gBACnB/I,KAAK6J,OAAO,GAAGnB;YACjB;QACF;IACF;IAEA,OAAO;QACLZ;QACAC;QACAjd,QAAQkd;IACV;AACF,EAAE;AAIF;;CAEC,GACD,MAAMnT,4BAA4B,CAACtG,MAAczD;IAC/C,MAAMmf,SAA0C,CAAC;IAEjD,MAAMC,WAA4D;QAChExa,CAAC,EAAE5E,mBAAAA,6BAAAA,OAAQM,KAAK;QAChByD,CAAC,EAAE/D,mBAAAA,6BAAAA,OAAQQ,KAAK;IAClB;IACAoG,OAAOwS,IAAI,CAACgG,UAAUvb,OAAO,CAACwb,CAAAA;QAC5B,MAAMC,KAAKF,QAAQ,CAACC,KAAK;QACzB,MAAME,WAAWF,IAAI,CAAC,EAAE;QACxB,MAAMG,WAAW,GAAGD,SAAS,iBAAiB,CAAC;QAE/C,MAAMvZ,SAAkB,EAAE;QAC1BvC,KAAKI,OAAO,CAAC,CAACnD;gBACZA;aAAAA,mBAAAA,MAAM,CAAC6e,SAAS,cAAhB7e,uCAAAA,iBAAkBmD,OAAO,CAACoO,CAAAA;gBACxB,IAAI,CAACvT,eAAeuT,MAAM;oBACxBjM,OAAO8C,IAAI,CAACmJ;gBACd;YACF;QACF;QAEA,MAAMwN,qBACJH,CAAAA,eAAAA,yBAAAA,GAAIzW,IAAI,MAAK,cAAerK,cAAcwH,WAAW,CAACzH,cAAcyH,WAAW,CAAC1H,YAAY0H;QAC9F,IAAI,CAACyZ,oBAAoB;YACvB;QACF;QAEA,MAAMC,eAAethB,oBAAoBkhB,eAAAA,yBAAAA,GAAIK,aAAa,KAAKL,GAAIK,aAAa,CAAEve,MAAM,GAAG;QAC3F,IAAIse,gBAAiB,CAAA,EAACJ,eAAAA,yBAAAA,GAAIM,aAAa,KAAIN,GAAGM,aAAa,KAAK,OAAM,GAAI;YACxET,MAAM,CAACK,SAAS,GAAGF,GAAIK,aAAa;YACpC;QACF;QAEA,IAAI,EAACL,eAAAA,yBAAAA,GAAIM,aAAa,KAAIN,GAAGM,aAAa,KAAK,WAAWN,GAAGM,aAAa,KAAK,SAAS;YACtF,MAAMC,yBAAyB9d,MAAM6X,IAAI,CAAC,IAAI3K,IAAIjJ;YAClDmZ,MAAM,CAACK,SAAS,GAAGK;YACnB;QACF;QAEAV,MAAM,CAACK,SAAS,GAAGF,GAAGM,aAAa;IACrC;IAEA,OAAOT;AACT"}
|
|
1
|
+
{"version":3,"sources":["../src/components/DeclarativeChart/PlotlySchemaAdapter.ts"],"sourcesContent":["/* eslint-disable one-var */\n/* eslint-disable vars-on-top */\n/* eslint-disable no-var */\nimport * as React from 'react';\nimport {\n bin as d3Bin,\n extent as d3Extent,\n sum as d3Sum,\n min as d3Min,\n max as d3Max,\n range as d3Range,\n Bin,\n} from 'd3-array';\nimport { scaleLinear as d3ScaleLinear } from 'd3-scale';\nimport { format as d3Format } from 'd3-format';\nimport { DonutChartProps } from '../DonutChart/index';\nimport {\n ChartDataPoint,\n ChartProps,\n HorizontalBarChartWithAxisDataPoint,\n LineChartPoints,\n VerticalStackedChartProps,\n HeatMapChartData,\n HeatMapChartDataPoint,\n GroupedVerticalBarChartData,\n VerticalBarChartDataPoint,\n SankeyChartData,\n LineChartLineOptions,\n} from '../../types/DataPoint';\nimport { SankeyChartProps } from '../SankeyChart/index';\nimport { VerticalStackedBarChartProps } from '../VerticalStackedBarChart/index';\nimport { HorizontalBarChartWithAxisProps } from '../HorizontalBarChartWithAxis/index';\nimport { LineChartProps } from '../LineChart/index';\nimport { AreaChartProps } from '../AreaChart/index';\nimport { HeatMapChartProps } from '../HeatMapChart/index';\nimport { DataVizPalette, getColorFromToken } from '../../utilities/colors';\nimport { GaugeChartProps, GaugeChartSegment } from '../GaugeChart/index';\nimport { GroupedVerticalBarChartProps } from '../GroupedVerticalBarChart/index';\nimport { VerticalBarChartProps } from '../VerticalBarChart/index';\nimport { ChartTableProps } from '../ChartTable/index';\nimport { findNumericMinMaxOfY, formatScientificLimitWidth, MIN_DONUT_RADIUS } from '../../utilities/utilities';\nimport type {\n Datum,\n Layout,\n PlotlySchema,\n PieData,\n PlotData,\n SankeyData,\n ScatterLine,\n TypedArray,\n Data,\n TableData,\n Color,\n LayoutAxis,\n XAxisName,\n TraceInfo,\n} from '@fluentui/chart-utilities';\nimport {\n isArrayOrTypedArray,\n isDate,\n isDateArray,\n isNumberArray,\n isStringArray,\n isYearArray,\n isInvalidValue,\n formatToLocaleString,\n} from '@fluentui/chart-utilities';\nimport { curveCardinal as d3CurveCardinal } from 'd3-shape';\nimport type { ColorwayType } from './PlotlyColorAdapter';\nimport { getOpacity, extractColor, resolveColor } from './PlotlyColorAdapter';\nimport { rgb } from 'd3-color';\nimport { Legend, LegendsProps } from '../Legends/index';\nimport { ScatterChartProps } from '../ScatterChart/ScatterChart.types';\nimport { CartesianChartProps } from '../CommonComponents/index';\n\nexport const NON_PLOT_KEY_PREFIX = 'nonplot_';\nexport const SINGLE_REPEAT = 'repeat(1, 1fr)';\n\ntype DomainInterval = {\n start: number;\n end: number;\n};\n\nexport type AxisProperties = {\n xAnnotation?: string;\n yAnnotation?: string;\n row: number;\n column: number;\n xDomain: DomainInterval;\n yDomain: DomainInterval;\n};\nexport type GridAxisProperties = Record<string, AxisProperties>;\n\nexport type GridProperties = {\n templateRows: string;\n templateColumns: string;\n layout: GridAxisProperties;\n};\n\ntype ScatterChartTypes = 'area' | 'line' | 'scatter';\ninterface SecondaryYAxisValues {\n secondaryYAxistitle?: string;\n secondaryYScaleOptions?: { yMinValue?: number; yMaxValue?: number };\n}\n\nconst dashOptions = {\n dot: {\n strokeDasharray: '1, 5',\n strokeLinecap: 'round',\n strokeWidth: '2',\n lineBorderWidth: '4',\n },\n dash: {\n strokeDasharray: '5, 5',\n strokeLinecap: 'butt',\n strokeWidth: '2',\n lineBorderWidth: '4',\n },\n longdash: {\n strokeDasharray: '10, 5',\n strokeLinecap: 'butt',\n strokeWidth: '2',\n lineBorderWidth: '4',\n },\n dashdot: {\n strokeDasharray: '5, 5, 1, 5',\n strokeLinecap: 'butt',\n strokeWidth: '2',\n lineBorderWidth: '4',\n },\n longdashdot: {\n strokeDasharray: '10, 5, 1, 5',\n strokeLinecap: 'butt',\n strokeWidth: '2',\n lineBorderWidth: '4',\n },\n solid: {\n strokeDasharray: '0',\n strokeLinecap: 'butt',\n strokeWidth: '2',\n lineBorderWidth: '4',\n },\n} as const;\n\nfunction getTitles(layout: Partial<Layout> | undefined) {\n const titles = {\n chartTitle: typeof layout?.title === 'string' ? layout.title : layout?.title?.text ?? '',\n xAxisTitle: typeof layout?.xaxis?.title === 'string' ? layout?.xaxis?.title : layout?.xaxis?.title?.text ?? '',\n yAxisTitle: typeof layout?.yaxis?.title === 'string' ? layout?.yaxis?.title : layout?.yaxis?.title?.text ?? '',\n };\n return titles;\n}\n\nconst getXAxisTickFormat = (series: Data, layout: Partial<Layout> | undefined) => {\n const xAxis = getXAxisProperties(series, layout);\n if (xAxis?.tickformat) {\n return {\n tickFormat: xAxis?.tickformat,\n };\n }\n\n return {};\n};\n\nconst getYAxisTickFormat = (series: Data, layout: Partial<Layout> | undefined) => {\n const yAxis = getYAxisProperties(series, layout);\n if (yAxis?.tickformat) {\n return {\n yAxisTickFormat: d3Format(yAxis?.tickformat),\n };\n }\n\n return {};\n};\n\nconst getYMinMaxValues = (series: Data, layout: Partial<Layout> | undefined) => {\n const range = getYAxisProperties(series, layout)?.range;\n if (range && range.length === 2) {\n return {\n yMinValue: range[0],\n yMaxValue: range[1],\n };\n }\n return {};\n};\n\nconst getYAxisProperties = (series: Data, layout: Partial<Layout> | undefined): Partial<LayoutAxis> | undefined => {\n return layout?.yaxis;\n};\n\nconst getXAxisProperties = (series: Data, layout: Partial<Layout> | undefined): Partial<LayoutAxis> | undefined => {\n return layout?.xaxis;\n};\n\nconst getFormattedCalloutYData = (\n yVal: string | number,\n yAxisFormat: ReturnType<typeof getYAxisTickFormat>,\n): string => {\n if (typeof yAxisFormat?.yAxisTickFormat === 'function' && typeof yVal === 'number') {\n return yAxisFormat.yAxisTickFormat(yVal);\n }\n return formatToLocaleString(yVal) as string;\n};\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport const correctYearMonth = (xValues: Datum[] | Datum[][] | TypedArray): any[] => {\n const presentYear = new Date().getFullYear();\n if (xValues.length > 0 && Array.isArray(xValues[0])) {\n throw new Error('updateXValues:: 2D array not supported');\n }\n const dates = (xValues as Datum[]).map(possiblyMonthValue => {\n const parsedDate = `${possiblyMonthValue} 01, ${presentYear}`;\n return isDate(parsedDate) ? new Date(parsedDate) : null;\n });\n const filteredDateIndexPairs = dates.map((date, index) => [date, index]).filter(([date]) => date !== null) as [\n Date,\n number,\n ][];\n for (let i = filteredDateIndexPairs.length - 1; i > 0; i--) {\n const currentDate = filteredDateIndexPairs[i][0];\n const previousDate = filteredDateIndexPairs[i - 1][0];\n const currentMonth = currentDate.getMonth();\n const previousMonth = previousDate.getMonth();\n const currentYear = currentDate.getFullYear();\n const previousYear = previousDate.getFullYear();\n if (previousMonth >= currentMonth) {\n filteredDateIndexPairs[i - 1][0].setFullYear(currentYear - 1);\n } else if (previousYear > currentYear) {\n filteredDateIndexPairs[i - 1][0].setFullYear(currentYear);\n }\n dates[filteredDateIndexPairs[i - 1][1]] = filteredDateIndexPairs[i - 1][0];\n }\n xValues = (xValues as Datum[]).map((month, index) => {\n if (dates[index] === null) {\n return null;\n }\n return `${month} 01, ${dates[index]!.getFullYear()}`;\n });\n return xValues;\n};\n\nconst usesSecondaryYScale = (series: Partial<PlotData>, layout: Partial<Layout> | undefined): boolean => {\n return series.yaxis === 'y2' && (layout?.yaxis2?.anchor === 'x' || layout?.yaxis2?.side === 'right');\n};\n\nconst getSecondaryYAxisValues = (\n data: Data[],\n layout: Partial<Layout> | undefined,\n maxAllowedMinY?: number,\n minAllowedMaxY?: number,\n): SecondaryYAxisValues => {\n let containsSecondaryYAxis = false;\n let yMinValue: number | undefined;\n let yMaxValue: number | undefined;\n\n data.forEach((series: Partial<PlotData>) => {\n if (usesSecondaryYScale(series, layout)) {\n containsSecondaryYAxis = true;\n const yValues = series.y as number[];\n if (yValues) {\n yMinValue = Math.min(...yValues);\n yMaxValue = Math.max(...yValues);\n }\n }\n });\n\n if (!containsSecondaryYAxis) {\n return {};\n }\n\n if (typeof yMinValue === 'number' && typeof maxAllowedMinY === 'number') {\n yMinValue = Math.min(yMinValue, maxAllowedMinY);\n }\n if (typeof yMaxValue === 'number' && typeof minAllowedMaxY === 'number') {\n yMaxValue = Math.max(yMaxValue, minAllowedMaxY);\n }\n if (layout?.yaxis2?.range) {\n yMinValue = layout.yaxis2.range[0];\n yMaxValue = layout.yaxis2.range[1];\n }\n\n return {\n secondaryYAxistitle:\n typeof layout?.yaxis2?.title === 'string'\n ? layout.yaxis2.title\n : typeof layout?.yaxis2?.title?.text === 'string'\n ? layout.yaxis2.title.text\n : undefined,\n secondaryYScaleOptions: {\n yMinValue,\n yMaxValue,\n },\n };\n};\n\nexport const _getGaugeAxisColor = (\n colorway: string[] | undefined,\n colorwayType: ColorwayType,\n color: Color | undefined,\n colorMap: React.MutableRefObject<Map<string, string>>,\n isDarkTheme?: boolean,\n): string => {\n const extractedColors = extractColor(colorway, colorwayType, color, colorMap, isDarkTheme);\n return resolveColor(extractedColors, 0, '', colorMap, isDarkTheme);\n};\n\nexport const resolveXAxisPoint = (\n x: Datum,\n isXYearCategory: boolean,\n isXString: boolean,\n isXDate: boolean,\n isXNumber: boolean,\n): string | Date | number => {\n if (x === null || x === undefined) {\n return '';\n }\n if (isXYearCategory) {\n return x.toString();\n }\n if (isXString) {\n if (isXDate) {\n const date = new Date(x as string);\n return date;\n }\n if (isXNumber) {\n return parseFloat(x as string);\n }\n return x;\n }\n return x;\n};\n\nexport const transformPlotlyJsonToDonutProps = (\n input: PlotlySchema,\n isMultiPlot: boolean,\n colorMap: React.MutableRefObject<Map<string, string>>,\n colorwayType: ColorwayType,\n isDarkTheme?: boolean,\n): DonutChartProps => {\n const firstData = input.data[0] as Partial<PieData>;\n\n // extract colors for each series only once\n // use piecolorway if available\n // otherwise, default to colorway from template\n const colors: string[] | string | null | undefined = extractColor(\n input.layout?.piecolorway ?? input.layout?.template?.layout?.colorway,\n colorwayType,\n input.layout?.piecolorway ?? firstData?.marker?.colors,\n colorMap,\n isDarkTheme,\n );\n const mapLegendToDataPoint: Record<string, ChartDataPoint> = {};\n firstData.labels?.forEach((label, index: number) => {\n const value = getNumberAtIndexOrDefault(firstData.values, index);\n if (isInvalidValue(value) || (value as number) < 0) {\n return;\n }\n\n const legend = `${label}`;\n // resolve color for each legend from the extracted colors\n const color: string = resolveColor(colors, index, legend, colorMap, isDarkTheme);\n\n if (!mapLegendToDataPoint[legend]) {\n mapLegendToDataPoint[legend] = {\n legend,\n data: value,\n color,\n };\n } else {\n mapLegendToDataPoint[legend].data! += value as number;\n }\n });\n\n const width: number = input.layout?.width ?? 440;\n const height: number = input.layout?.height ?? 220;\n const hideLabels: boolean = firstData.textinfo\n ? !['value', 'percent', 'label+percent'].includes(firstData.textinfo)\n : false;\n const donutMarginHorizontal: number = hideLabels ? 0 : 80;\n const donutMarginVertical: number = 40 + (hideLabels ? 0 : 40);\n const innerRadius: number = firstData.hole\n ? firstData.hole * (Math.min(width - donutMarginHorizontal, height - donutMarginVertical) / 2)\n : MIN_DONUT_RADIUS;\n const { chartTitle } = getTitles(input.layout);\n\n return {\n data: {\n chartTitle,\n chartData: Object.values(mapLegendToDataPoint),\n },\n hideLegend: isMultiPlot || input.layout?.showlegend === false,\n width: input.layout?.width,\n height,\n innerRadius,\n hideLabels,\n showLabelsInPercent: firstData.textinfo ? ['percent', 'label+percent'].includes(firstData.textinfo) : true,\n roundCorners: true,\n };\n};\n\nexport const transformPlotlyJsonToVSBCProps = (\n input: PlotlySchema,\n isMultiPlot: boolean,\n colorMap: React.MutableRefObject<Map<string, string>>,\n colorwayType: ColorwayType,\n isDarkTheme?: boolean,\n fallbackVSBC?: boolean,\n): VerticalStackedBarChartProps => {\n const mapXToDataPoints: { [key: string]: VerticalStackedChartProps } = {};\n let yMaxValue = 0;\n const secondaryYAxisValues = getSecondaryYAxisValues(input.data, input.layout);\n const { legends, hideLegend } = getLegendProps(input.data, input.layout, isMultiPlot);\n let colorScale: ((value: number) => string) | undefined = undefined;\n const yAxisTickFormat = getYAxisTickFormat(input.data[0], input.layout);\n let yMinValue = 0;\n input.data.forEach((series: Partial<PlotData>, index1: number) => {\n if (\n input.layout?.coloraxis?.colorscale?.length &&\n isArrayOrTypedArray(series.marker?.color) &&\n (series.marker?.color as Color[]).length > 0 &&\n typeof (series.marker?.color as Color[])?.[0] === 'number'\n ) {\n colorScale = createColorScale(input.layout, series);\n }\n const isXYearCategory = isYearArray(series.x); // Consider year as categorical not numeric continuous axis\n // extract bar colors for each series only once\n const extractedBarColors = extractColor(\n input.layout?.template?.layout?.colorway,\n colorwayType,\n series.marker?.color,\n colorMap,\n isDarkTheme,\n ) as string[] | string | undefined;\n // extract line colors for each series only once\n const extractedLineColors = extractColor(\n input.layout?.template?.layout?.colorway,\n colorwayType,\n series.line?.color,\n colorMap,\n isDarkTheme,\n ) as string[] | string | undefined;\n\n const xValues = series.x as Datum[];\n const isXDate = isDateArray(xValues);\n const isXString = isStringArray(xValues);\n const isXNumber = isNumberArray(xValues);\n const validXYRanges = getValidXYRanges(series);\n validXYRanges.forEach(([rangeStart, rangeEnd], rangeIdx) => {\n const rangeXValues = series.x!.slice(rangeStart, rangeEnd);\n const rangeYValues = series.y!.slice(rangeStart, rangeEnd);\n\n (rangeXValues as Datum[]).forEach((x: string | number, index2: number) => {\n if (!mapXToDataPoints[x]) {\n mapXToDataPoints[x] = {\n xAxisPoint: resolveXAxisPoint(x, isXYearCategory, isXString, isXDate, isXNumber),\n chartData: [],\n lineData: [],\n };\n }\n const legend: string = legends[index1];\n // resolve color for each legend's bars from the colorscale or extracted colors\n const color = colorScale\n ? colorScale(\n isArrayOrTypedArray(series.marker?.color)\n ? ((series.marker?.color as Color[])?.[index2 % (series.marker?.color as Color[]).length] as number)\n : 0,\n )\n : resolveColor(extractedBarColors, index2, legend, colorMap, isDarkTheme);\n const opacity = getOpacity(series, index2);\n const yVal: number | string = rangeYValues[index2] as number | string;\n const yAxisCalloutData = getFormattedCalloutYData(yVal, yAxisTickFormat);\n if (series.type === 'bar') {\n mapXToDataPoints[x].chartData.push({\n legend,\n data: yVal,\n color: rgb(color).copy({ opacity }).formatHex8() ?? color,\n yAxisCalloutData,\n });\n if (typeof yVal === 'number') {\n yMaxValue = Math.max(yMaxValue, yVal);\n }\n } else if (series.type === 'scatter' || !!fallbackVSBC) {\n const lineColor = resolveColor(extractedLineColors, index1, legend, colorMap, isDarkTheme);\n const lineOptions = !series.mode?.includes('text') ? getLineOptions(series.line) : undefined;\n const legendShape = getLegendShape(series);\n mapXToDataPoints[x].lineData!.push({\n legend: legend + (validXYRanges.length > 1 ? `.${rangeIdx + 1}` : ''),\n legendShape,\n y: yVal,\n color: rgb(lineColor).copy({ opacity }).formatHex8() ?? color,\n lineOptions: {\n ...(lineOptions ?? {}),\n mode: series.mode,\n },\n useSecondaryYScale: usesSecondaryYScale(series, input.layout),\n yAxisCalloutData,\n });\n if (!usesSecondaryYScale(series, input.layout) && typeof yVal === 'number') {\n yMaxValue = Math.max(yMaxValue, yVal);\n yMinValue = Math.min(yMinValue, yVal);\n }\n }\n yMaxValue = Math.max(yMaxValue, yVal as number);\n });\n });\n });\n\n const vsbcData = Object.values(mapXToDataPoints);\n\n return {\n data: vsbcData,\n width: input.layout?.width,\n height: input.layout?.height ?? 350,\n barWidth: 'auto',\n yMaxValue,\n yMinValue,\n mode: 'plotly',\n ...secondaryYAxisValues,\n wrapXAxisLables: typeof vsbcData[0]?.xAxisPoint === 'string',\n hideTickOverlap: true,\n barGapMax: 2,\n hideLegend,\n roundCorners: true,\n showYAxisLables: true,\n noOfCharsToTruncate: 20,\n showYAxisLablesTooltip: true,\n ...getTitles(input.layout),\n ...getXAxisTickFormat(input.data[0], input.layout),\n ...yAxisTickFormat,\n ...getAxisCategoryOrderProps(input.data, input.layout),\n };\n};\n\nconst createColorScale = (layout: Partial<Layout>, series: Partial<PlotData>) => {\n const scale = layout?.coloraxis?.colorscale as Array<[number, string]>;\n const colorValues = series.marker?.color as number[];\n const [dMin, dMax] = [\n layout?.coloraxis?.cmin ?? Math.min(...colorValues),\n layout?.coloraxis?.cmax ?? Math.max(...colorValues),\n ];\n\n // Normalize colorscale domain to actual data domain\n const scaleDomain = scale.map(([pos]) => dMin + pos * (dMax - dMin));\n const scaleColors = scale.map(item => item[1]);\n\n return d3ScaleLinear<string>().domain(scaleDomain).range(scaleColors);\n};\n\nexport const transformPlotlyJsonToGVBCProps = (\n input: PlotlySchema,\n isMultiPlot: boolean,\n colorMap: React.MutableRefObject<Map<string, string>>,\n colorwayType: ColorwayType,\n isDarkTheme?: boolean,\n): GroupedVerticalBarChartProps => {\n const mapXToDataPoints: Record<string, GroupedVerticalBarChartData> = {};\n const secondaryYAxisValues = getSecondaryYAxisValues(input.data, input.layout, 0, 0);\n const { legends, hideLegend } = getLegendProps(input.data, input.layout, isMultiPlot);\n\n let colorScale: ((value: number) => string) | undefined = undefined;\n const yAxisTickFormat = getYAxisTickFormat(input.data[0], input.layout);\n input.data.forEach((series: Partial<PlotData>, index1: number) => {\n if (\n input.layout?.coloraxis?.colorscale?.length &&\n isArrayOrTypedArray(series.marker?.color) &&\n (series.marker?.color as Color[]).length > 0 &&\n typeof (series.marker?.color as Color[])?.[0] === 'number'\n ) {\n colorScale = createColorScale(input.layout, series);\n }\n // extract colors for each series only once\n const extractedColors = extractColor(\n input.layout?.template?.layout?.colorway,\n colorwayType,\n series.marker?.color,\n colorMap,\n isDarkTheme,\n ) as string[] | string | undefined;\n (series.x as Datum[])?.forEach((x: string | number, index2: number) => {\n if (isInvalidValue(x) || isInvalidValue(series.y?.[index2])) {\n return;\n }\n if (!mapXToDataPoints[x]) {\n mapXToDataPoints[x] = { name: x.toString(), series: [] };\n }\n if (series.type === 'bar') {\n const legend: string = legends[index1];\n // resolve color for each legend's bars from the colorscale or extracted colors\n const color = colorScale\n ? colorScale(\n isArrayOrTypedArray(series.marker?.color)\n ? ((series.marker?.color as Color[])?.[index2 % (series.marker?.color as Color[]).length] as number)\n : 0,\n )\n : resolveColor(extractedColors, index2, legend, colorMap, isDarkTheme);\n const opacity = getOpacity(series, index2);\n\n const yVal: number = series.y![index2] as number;\n\n mapXToDataPoints[x].series.push({\n key: legend,\n data: yVal,\n xAxisCalloutData: x as string,\n color: rgb(color).copy({ opacity }).formatHex8() ?? color,\n legend,\n useSecondaryYScale: usesSecondaryYScale(series, input.layout),\n yAxisCalloutData: getFormattedCalloutYData(yVal, yAxisTickFormat),\n });\n }\n });\n });\n\n const gvbcData = Object.values(mapXToDataPoints);\n\n return {\n data: gvbcData,\n width: input.layout?.width,\n height: input.layout?.height ?? 350,\n barWidth: 'auto',\n mode: 'plotly',\n ...secondaryYAxisValues,\n hideTickOverlap: true,\n wrapXAxisLables: typeof gvbcData[0]?.name === 'string',\n hideLegend,\n roundCorners: true,\n ...getTitles(input.layout),\n ...getYMinMaxValues(input.data[0], input.layout),\n ...getXAxisTickFormat(input.data[0], input.layout),\n ...yAxisTickFormat,\n ...getAxisCategoryOrderProps(input.data, input.layout),\n };\n};\n\nexport const transformPlotlyJsonToVBCProps = (\n input: PlotlySchema,\n isMultiPlot: boolean,\n colorMap: React.MutableRefObject<Map<string, string>>,\n colorwayType: ColorwayType,\n isDarkTheme?: boolean,\n): VerticalBarChartProps => {\n const vbcData: VerticalBarChartDataPoint[] = [];\n const { legends, hideLegend } = getLegendProps(input.data, input.layout, isMultiPlot);\n let colorScale: ((value: number) => string) | undefined = undefined;\n\n input.data.forEach((series: Partial<PlotData>, seriesIdx: number) => {\n if (!series.x) {\n return;\n }\n\n if (\n input.layout?.coloraxis?.colorscale?.length &&\n isArrayOrTypedArray(series.marker?.color) &&\n (series.marker?.color as Color[]).length > 0 &&\n typeof (series.marker?.color as Color[])?.[0] === 'number'\n ) {\n colorScale = createColorScale(input.layout, series);\n }\n\n // extract colors for each series only once\n const extractedColors = extractColor(\n input.layout?.template?.layout?.colorway,\n colorwayType,\n series.marker?.color,\n colorMap,\n isDarkTheme,\n ) as string[] | string | undefined;\n const xValues: (string | number)[] = [];\n const yValues: number[] = [];\n series.x.forEach((xVal, index) => {\n const yVal = getNumberAtIndexOrDefault(series.y, index);\n if (isInvalidValue(xVal) || isInvalidValue(yVal)) {\n return;\n }\n\n xValues.push(xVal as string | number);\n yValues.push(yVal as number);\n });\n\n const isXString = isStringArray(xValues);\n // TODO: In case of a single bin, add an empty bin of the same size to prevent the\n // default bar width from being used and ensure the bar spans the full intended range.\n const xBins = createBins(xValues, series.xbins?.start, series.xbins?.end, series.xbins?.size);\n const yBins: number[][] = xBins.map(() => []);\n let total = 0;\n\n xValues.forEach((xVal, index) => {\n const binIdx = findBinIndex(xBins, xVal, isXString);\n if (binIdx !== -1) {\n yBins[binIdx].push(yValues[index]);\n }\n });\n\n const y = yBins.map(bin => {\n const yVal = calculateHistFunc(series.histfunc, bin);\n total += yVal;\n return yVal;\n });\n\n xBins.forEach((bin, index) => {\n const legend: string = legends[seriesIdx];\n // resolve color for each legend's bars from the colorscale or extracted colors\n const color = colorScale\n ? colorScale(\n isArrayOrTypedArray(series.marker?.color)\n ? ((series.marker?.color as Color[])?.[index % (series.marker?.color as Color[]).length] as number)\n : 0,\n )\n : resolveColor(extractedColors, index, legend, colorMap, isDarkTheme);\n const opacity = getOpacity(series, index);\n const yVal = calculateHistNorm(\n series.histnorm,\n y[index],\n total,\n isXString ? bin.length : getBinSize(bin as Bin<number, number>),\n );\n\n vbcData.push({\n x: isXString ? bin.join(', ') : getBinCenter(bin as Bin<number, number>),\n y: yVal,\n legend,\n color: rgb(color).copy({ opacity }).formatHex8() ?? color,\n ...(isXString\n ? {}\n : { xAxisCalloutData: `[${(bin as Bin<number, number>).x0} - ${(bin as Bin<number, number>).x1})` }),\n });\n });\n });\n\n return {\n data: vbcData,\n width: input.layout?.width,\n height: input.layout?.height ?? 350,\n mode: 'histogram',\n hideTickOverlap: true,\n wrapXAxisLables: typeof vbcData[0]?.x === 'string',\n maxBarWidth: 50,\n hideLegend,\n roundCorners: true,\n ...getTitles(input.layout),\n ...getYMinMaxValues(input.data[0], input.layout),\n ...getAxisCategoryOrderProps(input.data, input.layout),\n };\n};\n\nexport const transformPlotlyJsonToAreaChartProps = (\n input: PlotlySchema,\n isMultiPlot: boolean,\n colorMap: React.MutableRefObject<Map<string, string>>,\n colorwayType: ColorwayType,\n isDarkTheme?: boolean,\n): AreaChartProps => {\n return transformPlotlyJsonToScatterTraceProps(\n input,\n isMultiPlot,\n 'area',\n colorMap,\n colorwayType,\n isDarkTheme,\n ) as AreaChartProps;\n};\n\nexport const transformPlotlyJsonToLineChartProps = (\n input: PlotlySchema,\n isMultiPlot: boolean,\n colorMap: React.MutableRefObject<Map<string, string>>,\n colorwayType: ColorwayType,\n isDarkTheme?: boolean,\n): LineChartProps => {\n return transformPlotlyJsonToScatterTraceProps(\n input,\n isMultiPlot,\n 'line',\n colorMap,\n colorwayType,\n isDarkTheme,\n ) as LineChartProps;\n};\n\nexport const transformPlotlyJsonToScatterChartProps = (\n input: PlotlySchema,\n isMultiPlot: boolean,\n colorMap: React.MutableRefObject<Map<string, string>>,\n colorwayType: ColorwayType,\n isDarkTheme?: boolean,\n): LineChartProps => {\n return transformPlotlyJsonToScatterTraceProps(\n input,\n isMultiPlot,\n 'scatter',\n colorMap,\n colorwayType,\n isDarkTheme,\n ) as ScatterChartProps;\n};\n\nconst transformPlotlyJsonToScatterTraceProps = (\n input: PlotlySchema,\n isMultiPlot: boolean,\n chartType: ScatterChartTypes,\n colorMap: React.MutableRefObject<Map<string, string>>,\n colorwayType: ColorwayType,\n isDarkTheme?: boolean,\n): LineChartProps | AreaChartProps | ScatterChartProps => {\n const isScatterMarkers = [\n 'markers',\n 'text+markers',\n 'markers+text',\n 'lines+markers',\n 'markers+line',\n 'text+lines+markers',\n ].includes((input.data[0] as PlotData)?.mode);\n const isAreaChart = chartType === 'area';\n const isScatterChart = chartType === 'scatter';\n const secondaryYAxisValues = getSecondaryYAxisValues(\n input.data,\n input.layout,\n isAreaChart ? 0 : undefined,\n isAreaChart ? 0 : undefined,\n );\n let mode: string = 'tonexty';\n const { legends, hideLegend } = getLegendProps(input.data, input.layout, isMultiPlot);\n const yAxisTickFormat = getYAxisTickFormat(input.data[0], input.layout);\n const chartData: LineChartPoints[] = input.data\n .map((series: Partial<PlotData>, index: number) => {\n const colors = isScatterMarkers\n ? series?.mode?.includes('line')\n ? series.line?.color\n : series.marker?.color\n : series.line?.color;\n // extract colors for each series only once\n const extractedColors = extractColor(\n input.layout?.template?.layout?.colorway,\n colorwayType,\n colors,\n colorMap,\n isDarkTheme,\n ) as string[] | string | undefined;\n const xValues = series.x as Datum[];\n const isXString = isStringArray(xValues);\n const isXDate = isDateArray(xValues);\n const isXNumber = isNumberArray(xValues);\n const isXYearCategory = isYearArray(series.x); // Consider year as categorical not numeric continuous axis\n const legend: string = legends[index];\n // resolve color for each legend's lines from the extracted colors\n const seriesColor = resolveColor(extractedColors, index, legend, colorMap, isDarkTheme);\n const seriesOpacity = getOpacity(series, index);\n mode = series.fill === 'tozeroy' ? 'tozeroy' : 'tonexty';\n // if mode contains 'text', we prioritize showing the text over curving the line\n const lineOptions = !series.mode?.includes('text') ? getLineOptions(series.line) : undefined;\n const legendShape = getLegendShape(series);\n\n const validXYRanges = getValidXYRanges(series);\n return validXYRanges.map(([rangeStart, rangeEnd], rangeIdx) => {\n const rangeXValues = xValues.slice(rangeStart, rangeEnd);\n const rangeYValues = series.y!.slice(rangeStart, rangeEnd);\n const markerSizes = isArrayOrTypedArray(series.marker?.size)\n ? (series.marker!.size as number[]).slice(rangeStart, rangeEnd)\n : [];\n const textValues = Array.isArray(series.text) ? series.text.slice(rangeStart, rangeEnd) : undefined;\n\n return {\n legend,\n legendShape,\n data: rangeXValues.map((x, i: number) => ({\n x: resolveXAxisPoint(x, isXYearCategory, isXString, isXDate, isXNumber),\n y: rangeYValues[i],\n ...(Array.isArray(series.marker?.size)\n ? { markerSize: markerSizes[i] }\n : typeof series.marker?.size === 'number'\n ? { markerSize: series.marker.size }\n : {}),\n ...(textValues ? { text: textValues[i] } : {}),\n yAxisCalloutData: getFormattedCalloutYData(rangeYValues[i] as number, yAxisTickFormat),\n })),\n color: rgb(seriesColor).copy({ opacity: seriesOpacity }).formatHex8() ?? seriesColor,\n lineOptions: {\n ...(lineOptions ?? {}),\n mode: series.mode,\n },\n useSecondaryYScale: usesSecondaryYScale(series, input.layout),\n } as LineChartPoints;\n });\n })\n .flat();\n\n const yMinMax = getYMinMaxValues(input.data[0], input.layout);\n if (yMinMax.yMinValue === undefined && yMinMax.yMaxValue === undefined) {\n const yMinMaxValues = findNumericMinMaxOfY(chartData);\n yMinMax.yMinValue = yMinMaxValues.startValue;\n yMinMax.yMaxValue = yMinMaxValues.endValue;\n }\n const numDataPoints = chartData.reduce((total, lineChartPoints) => total + lineChartPoints.data.length, 0);\n\n const chartProps: ChartProps = {\n lineChartData: chartData,\n };\n\n const scatterChartProps: ChartProps = {\n scatterChartData: chartData,\n };\n\n const commonProps = {\n supportNegativeData: true,\n ...secondaryYAxisValues,\n width: input.layout?.width,\n height: input.layout?.height ?? 350,\n hideTickOverlap: true,\n hideLegend,\n useUTC: false,\n optimizeLargeData: numDataPoints > 1000,\n ...getTitles(input.layout),\n ...getXAxisTickFormat(input.data[0], input.layout),\n ...yAxisTickFormat,\n };\n\n if (isAreaChart) {\n return {\n data: chartProps,\n mode,\n ...commonProps,\n } as AreaChartProps;\n } else {\n return {\n data: isScatterChart ? scatterChartProps : chartProps,\n roundedTicks: true,\n ...commonProps,\n ...yMinMax,\n } as LineChartProps;\n }\n};\n\nexport const transformPlotlyJsonToHorizontalBarWithAxisProps = (\n input: PlotlySchema,\n isMultiPlot: boolean,\n colorMap: React.MutableRefObject<Map<string, string>>,\n colorwayType: ColorwayType,\n isDarkTheme?: boolean,\n): HorizontalBarChartWithAxisProps => {\n const { legends, hideLegend } = getLegendProps(input.data, input.layout, isMultiPlot);\n let colorScale: ((value: number) => string) | undefined = undefined;\n const chartData: HorizontalBarChartWithAxisDataPoint[] = input.data\n .map((series: Partial<PlotData>, index: number) => {\n if (\n input.layout?.coloraxis?.colorscale?.length &&\n isArrayOrTypedArray(series.marker?.color) &&\n (series.marker?.color as Color[]).length > 0 &&\n typeof (series.marker?.color as Color[])?.[0] === 'number'\n ) {\n colorScale = createColorScale(input.layout, series);\n }\n // extract colors for each series only once\n const extractedColors = extractColor(\n input.layout?.template?.layout?.colorway,\n colorwayType,\n series.marker?.color,\n colorMap,\n isDarkTheme,\n ) as string[] | string | undefined;\n const legend = legends[index];\n return (series.y as Datum[])\n .map((yValue, i: number) => {\n if (isInvalidValue(series.x?.[i]) || isInvalidValue(yValue)) {\n return null;\n }\n\n // resolve color for each legend's bars from the colorscale or extracted colors\n const color = colorScale\n ? colorScale(\n isArrayOrTypedArray(series.marker?.color)\n ? ((series.marker?.color as Color[])?.[i % (series.marker?.color as Color[]).length] as number)\n : 0,\n )\n : resolveColor(extractedColors, i, legend, colorMap, isDarkTheme);\n const opacity = getOpacity(series, i);\n\n return {\n x: series.x![i],\n y: yValue,\n legend,\n color: rgb(color).copy({ opacity }).formatHex8() ?? color,\n } as HorizontalBarChartWithAxisDataPoint;\n })\n .filter(point => point !== null) as HorizontalBarChartWithAxisDataPoint[];\n })\n .flat();\n\n const chartHeight: number = input.layout?.height ?? 450;\n const margin: number = input.layout?.margin?.l ?? 0;\n const padding: number = input.layout?.margin?.pad ?? 0;\n const availableHeight: number = chartHeight - margin - padding;\n const numberOfRows = new Set(chartData.map(d => d.y)).size || 1;\n const scalingFactor = 0.01;\n const gapFactor = 1 / (1 + scalingFactor * numberOfRows);\n const barHeight = availableHeight / (numberOfRows * (1 + gapFactor));\n\n return {\n data: chartData,\n secondaryYAxistitle:\n typeof input.layout?.yaxis2?.title === 'string'\n ? input.layout?.yaxis2?.title\n : input.layout?.yaxis2?.title?.text || '',\n barHeight,\n showYAxisLables: true,\n height: chartHeight,\n width: input.layout?.width,\n hideTickOverlap: true,\n noOfCharsToTruncate: 20,\n showYAxisLablesTooltip: true,\n hideLegend,\n roundCorners: true,\n ...getTitles(input.layout),\n ...getAxisCategoryOrderProps(input.data, input.layout),\n };\n};\n\nexport const transformPlotlyJsonToHeatmapProps = (\n input: PlotlySchema,\n isMultiPlot: boolean,\n colorMap: React.MutableRefObject<Map<string, string>>,\n colorwayType: ColorwayType,\n isDarkTheme?: boolean,\n): HeatMapChartProps => {\n const firstData = input.data[0] as Partial<PlotData>;\n const heatmapDataPoints: HeatMapChartDataPoint[] = [];\n let zMin = Number.POSITIVE_INFINITY;\n let zMax = Number.NEGATIVE_INFINITY;\n\n if (firstData.type === 'histogram2d') {\n const xValues: (string | number)[] = [];\n const yValues: (string | number)[] = [];\n const zValues: number[] = [];\n firstData.x?.forEach((xVal, index) => {\n const zVal = getNumberAtIndexOrDefault(firstData.z, index);\n if (isInvalidValue(xVal) || isInvalidValue(firstData.y?.[index]) || isInvalidValue(zVal)) {\n return;\n }\n\n xValues.push(xVal as string | number);\n yValues.push(firstData.y![index] as string | number);\n zValues.push(zVal as number);\n });\n\n const isXString = isStringArray(xValues);\n const isYString = isStringArray(yValues);\n const xBins = createBins(xValues, firstData.xbins?.start, firstData.xbins?.end, firstData.xbins?.size);\n const yBins = createBins(yValues, firstData.ybins?.start, firstData.ybins?.end, firstData.ybins?.size);\n const zBins: number[][][] = yBins.map(() => xBins.map(() => []));\n let total = 0;\n\n xValues.forEach((xVal, index) => {\n const xBinIdx = findBinIndex(xBins, xVal, isXString);\n const yBinIdx = findBinIndex(yBins, yValues[index], isYString);\n\n if (xBinIdx !== -1 && yBinIdx !== -1) {\n zBins[yBinIdx][xBinIdx].push(zValues[index]);\n }\n });\n\n const z = zBins.map(row => {\n return row.map(bin => {\n const zVal = calculateHistFunc(firstData.histfunc, bin);\n total += zVal;\n return zVal;\n });\n });\n\n xBins.forEach((xBin, xIdx) => {\n yBins.forEach((yBin, yIdx) => {\n const zVal = calculateHistNorm(\n firstData.histnorm,\n z[yIdx][xIdx],\n total,\n isXString ? xBin.length : getBinSize(xBin as Bin<number, number>),\n isYString ? yBin.length : getBinSize(yBin as Bin<number, number>),\n );\n\n heatmapDataPoints.push({\n x: isXString ? xBin.join(', ') : getBinCenter(xBin as Bin<number, number>),\n y: isYString ? yBin.join(', ') : getBinCenter(yBin as Bin<number, number>),\n value: zVal,\n rectText: zVal,\n });\n\n if (typeof zVal === 'number') {\n zMin = Math.min(zMin, zVal);\n zMax = Math.max(zMax, zVal);\n }\n });\n });\n } else {\n (firstData.x as Datum[])?.forEach((xVal, xIdx: number) => {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n firstData.y?.forEach((yVal: any, yIdx: number) => {\n const zVal = (firstData.z as number[][])?.[yIdx]?.[xIdx];\n\n heatmapDataPoints.push({\n x: input.layout?.xaxis?.type === 'date' ? (xVal as Date) : xVal ?? 0,\n y: input.layout?.yaxis?.type === 'date' ? (yVal as Date) : yVal,\n value: zVal,\n rectText: zVal,\n });\n\n if (typeof zVal === 'number') {\n zMin = Math.min(zMin, zVal);\n zMax = Math.max(zMax, zVal);\n }\n });\n });\n }\n\n const heatmapData: HeatMapChartData = {\n legend: firstData.name ?? '',\n data: heatmapDataPoints,\n value: 0,\n };\n\n // Initialize domain and range to default values\n const defaultDomain = [zMin, (zMax + zMin) / 2, zMax];\n const defaultRange = [\n getColorFromToken(DataVizPalette.color1),\n getColorFromToken(DataVizPalette.color2),\n getColorFromToken(DataVizPalette.color3),\n ];\n\n let colorscale =\n firstData?.colorscale ??\n input.layout?.colorscale ??\n input.layout?.coloraxis?.colorscale ??\n input.layout?.template?.layout?.colorscale ??\n (firstData.type === 'histogram2d' && input.layout?.template?.data?.histogram2d?.[0]?.colorscale) ??\n input.layout?.template?.data?.heatmap?.[0]?.colorscale;\n\n // determine if the types diverging, sequential or sequentialminus are present in colorscale\n if (\n colorscale &&\n typeof colorscale === 'object' &&\n ('diverging' in colorscale || 'sequential' in colorscale || 'sequentialminus' in colorscale)\n ) {\n const isDivergent = zMin < 0 && zMax > 0; // Data spans both positive and negative values\n const isSequential = zMin >= 0; // Data is entirely positive\n const isSequentialMinus = zMax <= 0; // Data is entirely negative\n\n if (isDivergent) {\n colorscale = colorscale?.diverging;\n } else if (isSequential) {\n colorscale = colorscale?.sequential;\n } else if (isSequentialMinus) {\n colorscale = colorscale?.sequentialminus;\n }\n }\n\n const domainValuesForColorScale: number[] = Array.isArray(colorscale)\n ? (colorscale as Array<[number, string]>).map(arr => arr[0] * (zMax - zMin) + zMin)\n : defaultDomain;\n\n const rangeValuesForColorScale: string[] = Array.isArray(colorscale)\n ? (colorscale as Array<[number, string]>).map(arr => arr[1])\n : defaultRange;\n\n return {\n data: [heatmapData],\n domainValuesForColorScale,\n rangeValuesForColorScale,\n hideLegend: true,\n showYAxisLables: true,\n sortOrder: 'none',\n width: input.layout?.width,\n height: input.layout?.height ?? 350,\n hideTickOverlap: true,\n noOfCharsToTruncate: 20,\n showYAxisLablesTooltip: true,\n wrapXAxisLables: true,\n ...getTitles(input.layout),\n ...getAxisCategoryOrderProps([firstData], input.layout),\n };\n};\n\nexport const transformPlotlyJsonToSankeyProps = (\n input: PlotlySchema,\n isMultiPlot: boolean,\n colorMap: React.MutableRefObject<Map<string, string>>,\n colorwayType: ColorwayType,\n isDarkTheme?: boolean,\n): SankeyChartProps => {\n const { link, node } = input.data[0] as SankeyData;\n const validLinks = (link?.value ?? [])\n .map((val: number, index: number) => {\n if (isInvalidValue(val) || isInvalidValue(link?.source?.[index]) || isInvalidValue(link?.target?.[index])) {\n return null;\n }\n\n return {\n value: val,\n source: link?.source![index],\n target: link?.target![index],\n };\n })\n // Filter out negative nodes, unequal nodes and self-references (circular links)\n .filter(x => x !== null && x.source >= 0 && x.target >= 0 && x.source !== x.target);\n\n const extractedNodeColors = extractColor(\n input.layout?.template?.layout?.colorway,\n colorwayType,\n node?.color,\n colorMap,\n isDarkTheme,\n );\n const sankeyChartData = {\n nodes: node.label?.map((label: string, index: number) => {\n const color = resolveColor(extractedNodeColors, index, label, colorMap, isDarkTheme);\n\n return {\n nodeId: index,\n name: label,\n color,\n };\n }),\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n links: validLinks.map((validLink: any, index: number) => {\n return {\n ...validLink,\n };\n }),\n } as SankeyChartData;\n\n // const styles: SankeyChartProps['styles'] = {\n // root: {\n // ...(input.layout?.font?.size ? { fontSize: input.layout.font?.size } : {}),\n // },\n // };\n\n const { chartTitle } = getTitles(input.layout);\n\n return {\n data: {\n chartTitle,\n SankeyChartData: sankeyChartData,\n },\n width: input.layout?.width,\n height: input.layout?.height ?? 468,\n // TODO\n // styles,\n };\n};\n\nexport const transformPlotlyJsonToGaugeProps = (\n input: PlotlySchema,\n isMultiPlot: boolean,\n colorMap: React.MutableRefObject<Map<string, string>>,\n colorwayType: ColorwayType,\n isDarkTheme?: boolean,\n): GaugeChartProps => {\n const firstData = input.data[0] as PlotData;\n const stepsColors = firstData.gauge?.steps ? firstData.gauge.steps.map(step => step.color) : undefined;\n const extractedColors = extractColor(\n input.layout?.template?.layout?.colorway,\n colorwayType,\n stepsColors,\n colorMap,\n isDarkTheme,\n );\n\n const segments = firstData.gauge?.steps?.length\n ? // eslint-disable-next-line @typescript-eslint/no-explicit-any\n firstData.gauge.steps.map((step: any, index: number): GaugeChartSegment => {\n const legend = step.name || `Segment ${index + 1}`;\n const color = resolveColor(extractedColors, index, legend, colorMap, isDarkTheme);\n return {\n legend,\n size: step.range?.[1] - step.range?.[0],\n color,\n };\n })\n : [\n {\n legend: 'Current',\n size: firstData.value ?? 0 - (firstData.gauge?.axis?.range?.[0] ?? 0),\n color: _getGaugeAxisColor(\n input.layout?.template?.layout?.colorway,\n colorwayType,\n firstData.gauge?.axis?.color,\n colorMap,\n isDarkTheme,\n ),\n },\n {\n legend: 'Target',\n size: (firstData.gauge?.axis?.range?.[1] ?? 100) - (firstData.value ?? 0),\n color: DataVizPalette.disabled,\n },\n ];\n\n let sublabel: string | undefined;\n let sublabelColor: string | undefined;\n if (firstData.delta?.reference) {\n const diff = firstData.value - firstData.delta.reference;\n if (diff >= 0) {\n sublabel = `\\u25B2 ${diff}`;\n const extractedIncreasingDeltaColors = extractColor(\n input.layout?.template?.layout?.colorway,\n colorwayType,\n firstData.delta?.increasing?.color,\n colorMap,\n isDarkTheme,\n );\n const color = resolveColor(extractedIncreasingDeltaColors, 0, '', colorMap, isDarkTheme);\n sublabelColor = color;\n } else {\n sublabel = `\\u25BC ${Math.abs(diff)}`;\n const extractedDecreasingDeltaColors = extractColor(\n input.layout?.template?.layout?.colorway,\n colorwayType,\n firstData.delta?.decreasing?.color,\n colorMap,\n isDarkTheme,\n );\n const color = resolveColor(extractedDecreasingDeltaColors, 0, '', colorMap, isDarkTheme);\n sublabelColor = color;\n }\n }\n\n const styles = {\n sublabel: sublabelColor,\n };\n\n const { chartTitle } = getTitles(input.layout);\n\n return {\n segments,\n chartValue: firstData.value ?? 0,\n chartTitle,\n sublabel,\n // range values can be null\n minValue: typeof firstData.gauge?.axis?.range?.[0] === 'number' ? firstData.gauge?.axis?.range?.[0] : undefined,\n maxValue: typeof firstData.gauge?.axis?.range?.[1] === 'number' ? firstData.gauge?.axis?.range?.[1] : undefined,\n chartValueFormat: () => firstData.value?.toString() ?? '',\n width: input.layout?.width,\n height: input.layout?.height ?? 220,\n // TODO\n // styles,\n variant: firstData.gauge?.steps?.length ? 'multiple-segments' : 'single-segment',\n styles,\n roundCorners: true,\n };\n};\n\nconst cleanText = (text: string): string => {\n return text\n .replace(/<[^&]*?>/g, '')\n .replace(/<[^>]*>/g, '')\n .replace(/<br>|\\\\u003cbr\\\\u003e|<br>/gi, '')\n .replace(/\\$[^$]*\\$/g, '$')\n .trim();\n};\n\nconst formatValue = (\n value: string | number | boolean | null,\n colIndex: number,\n cells: TableData['cells'],\n): string | number | boolean | null => {\n if (value === null || typeof value === 'boolean') {\n return value;\n }\n\n const formatStr = Array.isArray(cells!.format) ? cells!.format[colIndex] : cells!.format;\n const prefix = Array.isArray(cells!.prefix) ? cells!.prefix[colIndex] : cells!.prefix;\n const suffix = Array.isArray(cells!.suffix) ? cells!.suffix[colIndex] : cells!.suffix;\n let formatted = value;\n if (typeof value === 'number') {\n if (typeof formatStr === 'string') {\n try {\n formatted = d3Format(formatStr)(value);\n } catch {\n formatted = formatScientificLimitWidth(value);\n }\n } else {\n formatted = formatScientificLimitWidth(value);\n }\n }\n return `${prefix ?? ''}${formatted}${suffix ?? ''}`;\n};\n\nexport const transformPlotlyJsonToChartTableProps = (\n input: PlotlySchema,\n isMultiPlot: boolean,\n colorMap: React.MutableRefObject<Map<string, string>>,\n colorwayType: ColorwayType,\n isDarkTheme?: boolean,\n): ChartTableProps => {\n const tableData = input.data[0] as TableData;\n\n const normalizeHeaders = (\n values: (string | number | boolean | null)[] | (string | number | boolean | null)[][],\n header: TableData['header'],\n ): { value: string | number | boolean | null; style?: React.CSSProperties }[] => {\n const cleanedValues: (string | number | boolean | null)[] = Array.isArray(values[0])\n ? (values as string[][]).map(row =>\n row\n .map(cell => cleanText(cell))\n .filter(Boolean)\n .join(' '),\n )\n : (values as string[]).map(cell => cleanText(cell));\n\n return cleanedValues.map((value, colIndex) => {\n const fontColorRaw = header?.font?.color;\n let fontColor: React.CSSProperties['color'] | undefined;\n\n if (Array.isArray(fontColorRaw)) {\n const colorEntry = fontColorRaw[colIndex];\n if (Array.isArray(colorEntry)) {\n fontColor = typeof colorEntry[0] === 'string' ? colorEntry[0] : undefined;\n } else if (typeof colorEntry === 'string') {\n fontColor = colorEntry;\n }\n } else if (typeof fontColorRaw === 'string') {\n fontColor = fontColorRaw;\n }\n\n const fontSizeRaw = header?.font?.size;\n let fontSize: React.CSSProperties['fontSize'] | undefined;\n\n if (Array.isArray(fontSizeRaw)) {\n fontSize = Array.isArray(fontSizeRaw[0]) ? fontSizeRaw[0][colIndex] : fontSizeRaw[colIndex];\n } else if (typeof fontSizeRaw === 'number') {\n fontSize = fontSizeRaw;\n }\n\n const updatedColIndex = colIndex >= 1 ? 1 : 0;\n const fillColorRaw = header?.fill?.color;\n const backgroundColor = Array.isArray(fillColorRaw) ? fillColorRaw[updatedColIndex] : fillColorRaw;\n\n const textAlignRaw = header?.align;\n const textAlign = Array.isArray(textAlignRaw) ? textAlignRaw[colIndex] : textAlignRaw;\n\n const style: React.CSSProperties = {\n ...(typeof fontColor === 'string' ? { color: fontColor } : {}),\n ...(typeof fontSize === 'number' ? { fontSize } : {}),\n ...(typeof backgroundColor === 'string' ? { backgroundColor } : {}),\n ...(textAlign ? { textAlign } : {}),\n };\n\n return { value, style };\n });\n };\n const columns = tableData.cells?.values ?? [];\n const cells = tableData.cells!.font ? tableData.cells! : input.layout?.template?.data?.table![0].cells;\n const rows = columns[0].map((_, rowIndex: number) =>\n columns.map((col, colIndex) => {\n const cellValue = col[rowIndex];\n const cleanValue = typeof cellValue === 'string' ? cleanText(cellValue) : cellValue;\n\n const formattedValue =\n typeof cleanValue === 'string' || typeof cleanValue === 'number'\n ? formatValue(cleanValue, colIndex, cells)\n : cleanValue;\n\n const rawFontColor = cells?.font?.color;\n let fontColor: React.CSSProperties['color'] | undefined;\n if (Array.isArray(rawFontColor)) {\n const entry = rawFontColor[colIndex];\n const colorValue = Array.isArray(entry) ? entry[rowIndex] : entry;\n fontColor = typeof colorValue === 'string' ? colorValue : undefined;\n } else if (typeof rawFontColor === 'string') {\n fontColor = rawFontColor;\n }\n\n const rawFontSize = cells?.font?.size;\n let fontSize: React.CSSProperties['fontSize'] | undefined;\n if (Array.isArray(rawFontSize)) {\n const entry = rawFontSize[colIndex];\n const fontSizeValue = Array.isArray(entry) ? entry[rowIndex] : entry;\n fontSize = typeof fontSizeValue === 'number' ? fontSizeValue : undefined;\n } else if (typeof rawFontSize === 'number') {\n fontSize = rawFontSize;\n }\n\n const updatedColIndex = colIndex >= 1 ? 1 : 0;\n const rawBackgroundColor = cells?.fill?.color;\n let backgroundColor: React.CSSProperties['backgroundColor'] | undefined;\n if (Array.isArray(rawBackgroundColor)) {\n const entry = rawBackgroundColor[updatedColIndex];\n const colorValue = Array.isArray(entry) ? entry[rowIndex] : entry;\n backgroundColor = typeof colorValue === 'string' ? colorValue : undefined;\n } else if (typeof rawBackgroundColor === 'string') {\n backgroundColor = rawBackgroundColor;\n }\n\n const rawTextAlign = Array.isArray(cells?.align) ? cells.align[colIndex] : cells?.align;\n const textAlign = rawTextAlign as React.CSSProperties['textAlign'] | undefined;\n\n const style: React.CSSProperties = {\n ...(fontColor ? { color: fontColor } : {}),\n ...(typeof fontSize === 'number' ? { fontSize } : {}),\n ...(backgroundColor ? { backgroundColor } : {}),\n ...(textAlign ? { textAlign } : {}),\n };\n\n return {\n value: formattedValue,\n style,\n };\n }),\n );\n\n const styles: ChartTableProps['styles'] = {\n root: {\n ...(input.layout?.font?.size ? { fontSize: input.layout.font.size } : {}),\n },\n };\n\n return {\n headers: normalizeHeaders(\n tableData.header?.values ?? [],\n tableData.header?.font ? tableData.header : input.layout?.template?.data?.table![0].header,\n ),\n rows,\n width: input.layout?.width,\n height: input.layout?.height,\n styles,\n };\n};\n\nexport const projectPolarToCartesian = (input: PlotlySchema): PlotlySchema => {\n const projection: PlotlySchema = { ...input };\n for (let sindex = 0; sindex < input.data.length; sindex++) {\n const series = input.data[sindex] as Partial<PlotData>;\n series.x = [] as Datum[];\n series.y = [] as Datum[];\n for (let ptindex = 0; ptindex < (series.r?.length ?? 0); ptindex++) {\n if (isInvalidValue(series.theta?.[ptindex]) || isInvalidValue(series.r?.[ptindex])) {\n continue;\n }\n\n const thetaRad = ((series.theta![ptindex] as number) * Math.PI) / 180;\n const radius = series.r![ptindex] as number;\n series.x.push(radius * Math.cos(thetaRad));\n series.y.push(radius * Math.sin(thetaRad));\n }\n projection.data[sindex] = series;\n }\n\n return projection;\n};\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nfunction isPlainObject(obj: any) {\n return (\n Object.prototype.toString.call(obj) === '[object Object]' &&\n Object.getPrototypeOf(obj).hasOwnProperty('hasOwnProperty')\n );\n}\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nvar arrayAttributes: any[] = [];\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nvar stack: any[] = [];\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nvar isArrayStack: any[] = [];\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nvar baseContainer: any, baseAttrName: any;\n/**\n * Interate iteratively through the trace object and find all the array attributes.\n * 1 trace record = 1 series of data\n * @param trace\n */\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport function findArrayAttributes(trace: any) {\n // Init basecontainer and baseAttrName\n crawlIntoTrace(baseContainer, 0, '');\n}\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nfunction crawlIntoTrace(container: any, i: number, astrPartial: any) {\n var item = container[stack[i]];\n var newAstrPartial = astrPartial + stack[i];\n if (i === stack.length - 1) {\n if (isArrayOrTypedArray(item)) {\n arrayAttributes.push(baseAttrName + newAstrPartial);\n }\n } else {\n if (isArrayStack[i]) {\n if (Array.isArray(item)) {\n for (var j = 0; j < item.length; j++) {\n if (isPlainObject(item[j])) {\n crawlIntoTrace(item[j], i + 1, newAstrPartial + '[' + j + '].');\n }\n }\n }\n } else if (isPlainObject(item)) {\n crawlIntoTrace(item, i + 1, newAstrPartial + '.');\n }\n }\n}\n\nfunction getLineOptions(line: Partial<ScatterLine> | undefined): LineChartLineOptions | undefined {\n if (!line) {\n return;\n }\n\n let lineOptions: LineChartLineOptions = {};\n if (line.dash) {\n lineOptions = { ...lineOptions, ...dashOptions[line.dash] };\n }\n\n switch (line.shape) {\n case 'spline':\n const smoothing = typeof line.smoothing === 'number' ? line.smoothing : 1;\n lineOptions.curve = d3CurveCardinal.tension(1 - smoothing / 1.3);\n break;\n case 'hv':\n lineOptions.curve = 'stepAfter';\n break;\n case 'vh':\n lineOptions.curve = 'stepBefore';\n break;\n case 'hvh':\n lineOptions.curve = 'step';\n break;\n default:\n lineOptions.curve = 'linear';\n }\n\n return Object.keys(lineOptions).length > 0 ? lineOptions : undefined;\n}\n\n// TODO: Use binary search to find the appropriate bin for numeric value.\nconst findBinIndex = (\n bins: string[][] | Bin<number, number>[],\n value: string | number | null | undefined,\n isString: boolean,\n) => {\n if (typeof value === 'undefined' || value === null) {\n return -1;\n }\n\n return isString\n ? (bins as string[][]).findIndex(bin => bin.includes(value as string))\n : (bins as Bin<number, number>[]).findIndex(\n (bin, index) =>\n (value as number) >= bin.x0! &&\n (index === bins.length - 1 ? (value as number) <= bin.x1! : (value as number) < bin.x1!),\n );\n};\n\nconst getBinSize = (bin: Bin<number, number>) => {\n return bin.x1! - bin.x0!;\n};\n\nconst getBinCenter = (bin: Bin<number, number>) => {\n return (bin.x1! + bin.x0!) / 2;\n};\n\n// TODO: Add support for date axes\nconst createBins = (\n data: TypedArray | Datum[] | Datum[][] | undefined,\n binStart?: number | string,\n binEnd?: number | string,\n binSize?: number | string,\n) => {\n if (!data || data.length === 0) {\n return [];\n }\n\n if (isStringArray(data)) {\n const categories = Array.from(new Set(data as string[]));\n const start = typeof binStart === 'number' ? Math.ceil(binStart) : 0;\n const stop = typeof binEnd === 'number' ? Math.floor(binEnd) + 1 : categories.length;\n const step = typeof binSize === 'number' ? binSize : 1;\n\n return d3Range(start, stop, step).map(i => categories.slice(i, i + step));\n }\n\n const scale = d3ScaleLinear()\n .domain(d3Extent<number>(data as number[]) as [number, number])\n .nice();\n let [minVal, maxVal] = scale.domain();\n\n minVal = typeof binStart === 'number' ? binStart : minVal;\n maxVal = typeof binEnd === 'number' ? binEnd : maxVal;\n\n const binGenerator = d3Bin().domain([minVal, maxVal]);\n\n if (typeof binSize === 'number' && binSize > 0) {\n const thresholds: number[] = [];\n const precision = Math.max(getPrecision(minVal), getPrecision(binSize));\n let th = precisionRound(minVal, precision);\n\n while (th < precisionRound(maxVal + binSize, precision)) {\n thresholds.push(th);\n th = precisionRound(th + binSize, precision);\n }\n\n minVal = thresholds[0];\n maxVal = thresholds[thresholds.length - 1];\n binGenerator.domain([minVal, maxVal]).thresholds(thresholds);\n\n // When the domain ends at the last threshold (maxVal), d3Bin creates an extra final bin where\n // both x0 and x1 are equal to maxVal and inclusive. The previous bin also has x1 equal to maxVal,\n // but it is exclusive. To maintain consistent bin widths, remove the final bin,\n // making the previous bin the last one, with both x0 and x1 inclusive.\n return binGenerator(data as number[]).slice(0, -1);\n }\n return binGenerator(data as number[]);\n};\n\nconst calculateHistFunc = (histfunc: PlotData['histfunc'] | undefined, bin: number[]) => {\n switch (histfunc) {\n case 'sum':\n return d3Sum(bin);\n case 'avg':\n return bin.length === 0 ? 0 : d3Sum(bin) / bin.length;\n case 'min':\n return d3Min(bin) ?? 0;\n case 'max':\n return d3Max(bin) ?? 0;\n default:\n return bin.length;\n }\n};\n\nconst calculateHistNorm = (\n histnorm: PlotData['histnorm'] | undefined,\n value: number,\n total: number,\n dx: number,\n dy: number = 1,\n) => {\n switch (histnorm) {\n case 'percent':\n return total === 0 ? 0 : (value / total) * 100;\n case 'probability':\n return total === 0 ? 0 : value / total;\n case 'density':\n return dx * dy === 0 ? 0 : value / (dx * dy);\n case 'probability density':\n return total * dx * dy === 0 ? 0 : value / (total * dx * dy);\n default:\n return value;\n }\n};\n\nconst getPrecision = (value: number) => {\n return value.toString().split('.')[1]?.length ?? 0;\n};\n\nconst precisionRound = (value: number, precision: number) => {\n const factor = Math.pow(10, precision);\n return Math.round(value * factor) / factor;\n};\n\nconst getLegendShape = (series: Partial<PlotData>): Legend['shape'] => {\n const dashType = series.line?.dash || 'solid';\n if (dashType === 'dot' || dashType === 'dash' || dashType === 'dashdot') {\n return 'dottedLine';\n } else if (series.mode?.includes('markers')) {\n return 'circle';\n }\n return 'default';\n};\n\nexport const getAllupLegendsProps = (\n input: PlotlySchema,\n colorMap: React.MutableRefObject<Map<string, string>>,\n colorwayType: ColorwayType,\n traceInfo: TraceInfo[],\n isDarkTheme?: boolean,\n): LegendsProps => {\n const allupLegends: Legend[] = [];\n // reduce on showlegend boolean propperty. reduce should return true if at least one series has showlegend true\n const toShowLegend = input.data.reduce((acc, series) => {\n return (\n acc || (series as Partial<PlotData>).showlegend === true || (series as Partial<PlotData>).showlegend === undefined\n );\n }, false);\n\n if (toShowLegend) {\n input.data.forEach((series: Data, index) => {\n if (traceInfo[index].type === 'donut') {\n const pieSeries = series as Partial<PieData>;\n const colors: string[] | string | null | undefined = extractColor(\n input.layout?.piecolorway ?? input.layout?.template?.layout?.colorway,\n colorwayType,\n input.layout?.piecolorway ?? pieSeries?.marker?.colors,\n colorMap,\n isDarkTheme,\n );\n\n pieSeries.labels?.forEach((label, labelIndex: number) => {\n const legend = `${label}`;\n // resolve color for each legend from the extracted colors\n const color: string = resolveColor(colors, labelIndex, legend, colorMap, isDarkTheme);\n if (legend !== '' && allupLegends.some(group => group.title === legend) === false) {\n allupLegends.push({\n title: legend,\n color,\n });\n }\n });\n } else if (isNonPlotType(traceInfo[index].type) === false) {\n const plotSeries = series as Partial<PlotData>;\n const name = plotSeries.legendgroup;\n const color = plotSeries.line?.color || plotSeries.marker?.color;\n const legendShape = getLegendShape(plotSeries);\n const resolvedColor = extractColor(\n input.layout?.template?.layout?.colorway,\n colorwayType,\n color,\n colorMap,\n isDarkTheme,\n );\n if (name !== undefined && name !== '' && allupLegends.some(group => group.title === name) === false) {\n allupLegends.push({\n title: name,\n color: resolvedColor as string,\n shape: legendShape,\n });\n }\n }\n });\n }\n\n return {\n legends: allupLegends,\n centerLegends: true,\n enabledWrapLines: true,\n canSelectMultipleLegends: true,\n };\n};\n\nconst getLegendProps = (data: Data[], layout: Partial<Layout> | undefined, isMultiPlot: boolean) => {\n const legends: string[] = [];\n if (data.length === 1) {\n legends.push(data[0].name || '');\n } else {\n data.forEach((series, index) => {\n legends.push(series.name || `Series ${index + 1}`);\n });\n }\n\n const hideLegendsData = data.every((series: Partial<PlotData>) => series.showlegend === false);\n const hideLegendsInferred = layout?.showlegend === false || (layout?.showlegend !== true && legends.length < 2);\n\n return {\n legends,\n hideLegend: isMultiPlot || hideLegendsInferred || hideLegendsData,\n };\n};\n\nexport const getNumberAtIndexOrDefault = (data: PlotData['z'] | undefined, index: number) => {\n if (isArrayOrTypedArray(data)) {\n if (typeof data![index] !== 'number' || !isFinite(data![index] as number)) {\n return;\n }\n\n return data![index] as number;\n }\n\n return 1;\n};\n\nexport const getValidXYRanges = (series: Partial<PlotData>) => {\n if (!isArrayOrTypedArray(series.x) || !isArrayOrTypedArray(series.y)) {\n return [];\n }\n\n const ranges: [number, number][] = [];\n let start = 0;\n let end = 0;\n for (; end < series.x!.length; end++) {\n if (isInvalidValue(series.x![end]) || isInvalidValue(series.y![end])) {\n if (end - start > 0) {\n ranges.push([start, end]);\n }\n start = end + 1;\n }\n }\n if (end - start > 0) {\n ranges.push([start, end]);\n }\n\n return ranges;\n};\n\nconst getIndexFromKey = (key: string, pattern: string): number => {\n const normalizedKey = key.replace(pattern, '') === '' ? '1' : key.replace(pattern, '');\n return parseInt(normalizedKey, 10) - 1;\n};\n\nexport const isNonPlotType = (chartType: string): boolean => {\n return ['donut', 'sankey', 'pie'].includes(chartType);\n};\n\nexport const getGridProperties = (\n schema: PlotlySchema | undefined,\n isMultiPlot: boolean,\n validTracesInfo: TraceInfo[],\n): GridProperties => {\n const domainX: DomainInterval[] = [];\n const domainY: DomainInterval[] = [];\n let cartesianDomains = 0;\n type AnnotationProps = {\n xAnnotation?: string;\n yAnnotation?: string;\n };\n const annotations: Record<number, AnnotationProps> = {};\n let templateRows = '1fr';\n let templateColumns = '1fr';\n const gridLayout: GridAxisProperties = {};\n if (!isMultiPlot) {\n return { templateRows, templateColumns, layout: gridLayout };\n }\n\n const layout = schema?.layout as Partial<Layout> | undefined;\n\n if (layout !== undefined && layout !== null && Object.keys(layout).length > 0) {\n Object.keys(layout ?? {}).forEach(key => {\n if (key.startsWith('xaxis')) {\n const index = getIndexFromKey(key, 'xaxis');\n const anchor = (layout[key as keyof typeof layout] as Partial<LayoutAxis>)?.anchor ?? 'y';\n const anchorIndex = getIndexFromKey(anchor, 'y');\n if (index !== anchorIndex) {\n throw new Error(`Invalid layout: xaxis ${index + 1} anchor should be y${anchorIndex + 1}`);\n }\n const xAxisLayout = layout[key as keyof typeof layout] as Partial<LayoutAxis>;\n const domainXInfo: DomainInterval = {\n start: xAxisLayout?.domain ? xAxisLayout.domain[0] : 0,\n end: xAxisLayout?.domain ? xAxisLayout.domain[1] : 1,\n };\n domainX.push(domainXInfo);\n } else if (key.startsWith('yaxis')) {\n const index = getIndexFromKey(key, 'yaxis');\n const anchor = (layout[key as keyof typeof layout] as Partial<LayoutAxis>)?.anchor ?? 'x';\n const anchorIndex = getIndexFromKey(anchor, 'x');\n if (index !== anchorIndex) {\n if ((index === 1 && anchorIndex === 0) || layout.yaxis2?.side === 'right') {\n // Special case for secondary y axis where yaxis2 can anchor to x1\n return { templateRows, templateColumns };\n }\n throw new Error(`Invalid layout: yaxis ${index + 1} anchor should be x${anchorIndex + 1}`);\n }\n const yAxisLayout = layout[key as keyof typeof layout] as Partial<LayoutAxis>;\n const domainYInfo: DomainInterval = {\n start: yAxisLayout?.domain ? yAxisLayout.domain[0] : 0,\n end: yAxisLayout?.domain ? yAxisLayout.domain[1] : 1,\n };\n domainY.push(domainYInfo);\n }\n });\n }\n\n cartesianDomains = domainX.length; // Assuming that the number of x and y axes is the same\n validTracesInfo.forEach((trace, index) => {\n if (isNonPlotType(trace.type)) {\n const series = schema?.data?.[index] as Partial<PieData> | Partial<SankeyData>;\n const domainXInfo: DomainInterval = {\n start: series.domain?.x ? series.domain.x[0] : 0,\n end: series.domain?.x ? series.domain.x[1] : 1,\n };\n const domainYInfo: DomainInterval = {\n start: series.domain?.y ? series.domain.y[0] : 0,\n end: series.domain?.y ? series.domain.y[1] : 1,\n };\n domainX.push(domainXInfo);\n domainY.push(domainYInfo);\n }\n });\n\n if (layout !== undefined && layout !== null && Object.keys(layout).length > 0) {\n layout.annotations?.forEach(annotation => {\n const xMatches = domainX.flatMap((interval, idx) =>\n (annotation?.x as number) >= interval.start && (annotation?.x as number) <= interval.end ? [idx] : [],\n );\n const yMatch = domainY.findIndex(\n (interval, yIndex) =>\n xMatches.includes(yIndex) &&\n (annotation?.y as number) >= interval.start &&\n (annotation?.y as number) <= interval.end,\n );\n\n if (yMatch !== -1) {\n if (annotations[yMatch] === undefined) {\n annotations[yMatch] = {} as AnnotationProps;\n }\n if ((annotation?.textangle as number) === 90) {\n annotations[yMatch].yAnnotation = annotation.text;\n } else {\n annotations[yMatch].xAnnotation = annotation.text;\n }\n }\n });\n }\n\n if (domainX.length > 0) {\n const uniqueXIntervals = new Map<string, DomainInterval>();\n domainX.forEach(interval => {\n const key = `${interval.start}-${interval.end}`;\n if (!uniqueXIntervals.has(key)) {\n uniqueXIntervals.set(key, interval);\n }\n });\n const sortedXStart = Array.from(uniqueXIntervals.values())\n .map(interval => interval.start)\n .sort();\n\n templateColumns = `repeat(${sortedXStart.length}, 1fr)`;\n\n domainX.forEach((interval, index) => {\n const cellName =\n index >= cartesianDomains\n ? `${NON_PLOT_KEY_PREFIX}${index - cartesianDomains + 1}`\n : (`x${index === 0 ? '' : index + 1}` as XAxisName);\n\n const columnIndex = sortedXStart.findIndex(start => start === interval.start);\n const columnNumber = columnIndex + 1; // Column numbers are 1-based\n\n const annotationProps = annotations[index] as AnnotationProps;\n const xAnnotation = annotationProps?.xAnnotation;\n\n const row: AxisProperties = {\n row: -1,\n column: columnNumber,\n xAnnotation,\n xDomain: interval,\n yDomain: { start: 0, end: 1 }, // Default yDomain for x-axis\n };\n gridLayout[cellName] = row;\n });\n }\n if (domainY.length > 0) {\n const uniqueYIntervals = new Map<string, DomainInterval>();\n domainY.forEach(interval => {\n const key = `${interval.start}-${interval.end}`;\n if (!uniqueYIntervals.has(key)) {\n uniqueYIntervals.set(key, interval);\n }\n });\n const sortedYStart = Array.from(uniqueYIntervals.values())\n .map(interval => interval.start)\n .sort();\n\n const numberOfRows = sortedYStart.length;\n\n templateRows = `repeat(${numberOfRows}, 1fr)`;\n domainY.forEach((interval, index) => {\n const cellName =\n index >= cartesianDomains\n ? `${NON_PLOT_KEY_PREFIX}${index - cartesianDomains + 1}`\n : (`x${index === 0 ? '' : index + 1}` as XAxisName);\n const rowIndex = sortedYStart.findIndex(start => start === interval.start);\n const rowNumber = numberOfRows - rowIndex; // Rows are 1-based and we need to reverse the order for CSS grid\n\n const annotationProps = annotations[index] as AnnotationProps;\n const yAnnotation = annotationProps?.yAnnotation;\n\n const cell = gridLayout[cellName];\n\n if (cell !== undefined) {\n cell.row = rowNumber;\n cell.yAnnotation = yAnnotation;\n cell.yDomain = interval;\n }\n });\n }\n\n return {\n templateRows,\n templateColumns,\n layout: gridLayout,\n };\n};\n\ntype GetAxisCategoryOrderPropsResult = Pick<CartesianChartProps, 'xAxisCategoryOrder' | 'yAxisCategoryOrder'>;\n\n/**\n * @see {@link https://github.com/plotly/plotly.js/blob/master/src/plots/cartesian/category_order_defaults.js#L50}\n */\nconst getAxisCategoryOrderProps = (data: Data[], layout: Partial<Layout> | undefined) => {\n const result: GetAxisCategoryOrderPropsResult = {};\n\n const axesById: Record<string, Partial<LayoutAxis> | undefined> = {\n x: layout?.xaxis,\n y: layout?.yaxis,\n };\n Object.keys(axesById).forEach(axId => {\n const ax = axesById[axId];\n const axLetter = axId[0] as 'x' | 'y';\n const propName = `${axLetter}AxisCategoryOrder` as keyof GetAxisCategoryOrderPropsResult;\n\n const values: Datum[] = [];\n data.forEach((series: Partial<PlotData>) => {\n series[axLetter]?.forEach(val => {\n if (!isInvalidValue(val)) {\n values.push(val as Datum);\n }\n });\n });\n\n const isAxisTypeCategory =\n ax?.type === 'category' || (isStringArray(values) && !isNumberArray(values) && !isDateArray(values));\n if (!isAxisTypeCategory) {\n return;\n }\n\n const isValidArray = isArrayOrTypedArray(ax?.categoryarray) && ax!.categoryarray!.length > 0;\n if (isValidArray && (!ax?.categoryorder || ax.categoryorder === 'array')) {\n result[propName] = ax!.categoryarray;\n return;\n }\n\n if (!ax?.categoryorder || ax.categoryorder === 'trace' || ax.categoryorder === 'array') {\n const categoriesInTraceOrder = Array.from(new Set(values as string[]));\n result[propName] = categoriesInTraceOrder;\n return;\n }\n\n result[propName] = ax.categoryorder;\n });\n\n return result;\n};\n"],"names":["React","bin","d3Bin","extent","d3Extent","sum","d3Sum","min","d3Min","max","d3Max","range","d3Range","scaleLinear","d3ScaleLinear","format","d3Format","DataVizPalette","getColorFromToken","findNumericMinMaxOfY","formatScientificLimitWidth","MIN_DONUT_RADIUS","isArrayOrTypedArray","isDate","isDateArray","isNumberArray","isStringArray","isYearArray","isInvalidValue","formatToLocaleString","curveCardinal","d3CurveCardinal","getOpacity","extractColor","resolveColor","rgb","NON_PLOT_KEY_PREFIX","SINGLE_REPEAT","dashOptions","dot","strokeDasharray","strokeLinecap","strokeWidth","lineBorderWidth","dash","longdash","dashdot","longdashdot","solid","getTitles","layout","titles","chartTitle","title","text","xAxisTitle","xaxis","yAxisTitle","yaxis","getXAxisTickFormat","series","xAxis","getXAxisProperties","tickformat","tickFormat","getYAxisTickFormat","yAxis","getYAxisProperties","yAxisTickFormat","getYMinMaxValues","length","yMinValue","yMaxValue","getFormattedCalloutYData","yVal","yAxisFormat","correctYearMonth","xValues","presentYear","Date","getFullYear","Array","isArray","Error","dates","map","possiblyMonthValue","parsedDate","filteredDateIndexPairs","date","index","filter","i","currentDate","previousDate","currentMonth","getMonth","previousMonth","currentYear","previousYear","setFullYear","month","usesSecondaryYScale","yaxis2","anchor","side","getSecondaryYAxisValues","data","maxAllowedMinY","minAllowedMaxY","containsSecondaryYAxis","forEach","yValues","y","Math","secondaryYAxistitle","undefined","secondaryYScaleOptions","_getGaugeAxisColor","colorway","colorwayType","color","colorMap","isDarkTheme","extractedColors","resolveXAxisPoint","x","isXYearCategory","isXString","isXDate","isXNumber","toString","parseFloat","transformPlotlyJsonToDonutProps","input","isMultiPlot","firstData","colors","piecolorway","template","marker","mapLegendToDataPoint","labels","label","value","getNumberAtIndexOrDefault","values","legend","width","height","hideLabels","textinfo","includes","donutMarginHorizontal","donutMarginVertical","innerRadius","hole","chartData","Object","hideLegend","showlegend","showLabelsInPercent","roundCorners","transformPlotlyJsonToVSBCProps","fallbackVSBC","vsbcData","mapXToDataPoints","secondaryYAxisValues","legends","getLegendProps","colorScale","index1","coloraxis","colorscale","createColorScale","extractedBarColors","extractedLineColors","line","validXYRanges","getValidXYRanges","rangeStart","rangeEnd","rangeIdx","rangeXValues","slice","rangeYValues","index2","xAxisPoint","lineData","opacity","yAxisCalloutData","type","push","copy","formatHex8","lineColor","lineOptions","mode","getLineOptions","legendShape","getLegendShape","useSecondaryYScale","barWidth","wrapXAxisLables","hideTickOverlap","barGapMax","showYAxisLables","noOfCharsToTruncate","showYAxisLablesTooltip","getAxisCategoryOrderProps","scale","colorValues","dMin","dMax","cmin","cmax","scaleDomain","pos","scaleColors","item","domain","transformPlotlyJsonToGVBCProps","gvbcData","name","key","xAxisCalloutData","transformPlotlyJsonToVBCProps","vbcData","seriesIdx","xVal","xBins","createBins","xbins","start","end","size","yBins","total","binIdx","findBinIndex","calculateHistFunc","histfunc","calculateHistNorm","histnorm","getBinSize","join","getBinCenter","x0","x1","maxBarWidth","transformPlotlyJsonToAreaChartProps","transformPlotlyJsonToScatterTraceProps","transformPlotlyJsonToLineChartProps","transformPlotlyJsonToScatterChartProps","chartType","isScatterMarkers","isAreaChart","isScatterChart","seriesColor","seriesOpacity","fill","markerSizes","textValues","markerSize","flat","yMinMax","yMinMaxValues","startValue","endValue","numDataPoints","reduce","lineChartPoints","chartProps","lineChartData","scatterChartProps","scatterChartData","commonProps","supportNegativeData","useUTC","optimizeLargeData","roundedTicks","transformPlotlyJsonToHorizontalBarWithAxisProps","yValue","point","chartHeight","margin","l","padding","pad","availableHeight","numberOfRows","Set","d","scalingFactor","gapFactor","barHeight","transformPlotlyJsonToHeatmapProps","heatmapDataPoints","zMin","Number","POSITIVE_INFINITY","zMax","NEGATIVE_INFINITY","zValues","zVal","z","isYString","ybins","zBins","xBinIdx","yBinIdx","row","xBin","xIdx","yBin","yIdx","rectText","heatmapData","defaultDomain","defaultRange","color1","color2","color3","histogram2d","heatmap","isDivergent","isSequential","isSequentialMinus","diverging","sequential","sequentialminus","domainValuesForColorScale","arr","rangeValuesForColorScale","sortOrder","transformPlotlyJsonToSankeyProps","node","link","validLinks","val","source","target","extractedNodeColors","sankeyChartData","nodes","nodeId","links","validLink","SankeyChartData","transformPlotlyJsonToGaugeProps","stepsColors","gauge","steps","step","segments","axis","disabled","sublabel","sublabelColor","delta","reference","diff","extractedIncreasingDeltaColors","increasing","abs","extractedDecreasingDeltaColors","decreasing","styles","chartValue","minValue","maxValue","chartValueFormat","variant","cleanText","replace","trim","formatValue","colIndex","cells","formatStr","prefix","suffix","formatted","transformPlotlyJsonToChartTableProps","tableData","normalizeHeaders","header","cleanedValues","cell","Boolean","fontColorRaw","font","fontColor","colorEntry","fontSizeRaw","fontSize","updatedColIndex","fillColorRaw","backgroundColor","textAlignRaw","align","textAlign","style","columns","table","rows","_","rowIndex","col","cellValue","cleanValue","formattedValue","rawFontColor","entry","colorValue","rawFontSize","fontSizeValue","rawBackgroundColor","rawTextAlign","root","headers","projectPolarToCartesian","projection","sindex","ptindex","r","theta","thetaRad","PI","radius","cos","sin","isPlainObject","obj","prototype","call","getPrototypeOf","hasOwnProperty","arrayAttributes","stack","isArrayStack","baseContainer","baseAttrName","findArrayAttributes","trace","crawlIntoTrace","container","astrPartial","newAstrPartial","j","shape","smoothing","curve","tension","keys","bins","isString","findIndex","binStart","binEnd","binSize","categories","from","ceil","stop","floor","nice","minVal","maxVal","binGenerator","thresholds","precision","getPrecision","th","precisionRound","dx","dy","split","factor","pow","round","dashType","getAllupLegendsProps","traceInfo","allupLegends","toShowLegend","acc","pieSeries","labelIndex","some","group","isNonPlotType","plotSeries","legendgroup","resolvedColor","centerLegends","enabledWrapLines","canSelectMultipleLegends","hideLegendsData","every","hideLegendsInferred","isFinite","ranges","getIndexFromKey","pattern","normalizedKey","parseInt","getGridProperties","schema","validTracesInfo","domainX","domainY","cartesianDomains","annotations","templateRows","templateColumns","gridLayout","startsWith","anchorIndex","xAxisLayout","domainXInfo","yAxisLayout","domainYInfo","annotation","xMatches","flatMap","interval","idx","yMatch","yIndex","textangle","yAnnotation","xAnnotation","uniqueXIntervals","Map","has","set","sortedXStart","sort","cellName","columnIndex","columnNumber","annotationProps","column","xDomain","yDomain","uniqueYIntervals","sortedYStart","rowNumber","result","axesById","axId","ax","axLetter","propName","isAxisTypeCategory","isValidArray","categoryarray","categoryorder","categoriesInTraceOrder"],"mappings":"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"}
|