@fluentui/react-charts 9.2.3 → 9.3.0

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.
Files changed (347) hide show
  1. package/CHANGELOG.md +79 -10
  2. package/dist/index.d.ts +98 -5
  3. package/lib/components/AreaChart/AreaChart.js +8 -6
  4. package/lib/components/AreaChart/AreaChart.js.map +1 -1
  5. package/lib/components/AreaChart/useAreaChartStyles.styles.js +4 -2
  6. package/lib/components/AreaChart/useAreaChartStyles.styles.js.map +1 -1
  7. package/lib/components/AreaChart/useAreaChartStyles.styles.raw.js +4 -15
  8. package/lib/components/AreaChart/useAreaChartStyles.styles.raw.js.map +1 -1
  9. package/lib/components/ChartTable/ChartTable.js +95 -8
  10. package/lib/components/ChartTable/ChartTable.js.map +1 -1
  11. package/lib/components/ChartTable/useChartTableStyles.styles.js +5 -3
  12. package/lib/components/ChartTable/useChartTableStyles.styles.js.map +1 -1
  13. package/lib/components/ChartTable/useChartTableStyles.styles.raw.js +3 -2
  14. package/lib/components/ChartTable/useChartTableStyles.styles.raw.js.map +1 -1
  15. package/lib/components/CommonComponents/CartesianChart.js +45 -42
  16. package/lib/components/CommonComponents/CartesianChart.js.map +1 -1
  17. package/lib/components/CommonComponents/CartesianChart.types.js.map +1 -1
  18. package/lib/components/CommonComponents/ChartPopover.js +14 -5
  19. package/lib/components/CommonComponents/ChartPopover.js.map +1 -1
  20. package/lib/components/CommonComponents/useCartesianChartStyles.styles.js +19 -14
  21. package/lib/components/CommonComponents/useCartesianChartStyles.styles.js.map +1 -1
  22. package/lib/components/CommonComponents/useCartesianChartStyles.styles.raw.js +7 -33
  23. package/lib/components/CommonComponents/useCartesianChartStyles.styles.raw.js.map +1 -1
  24. package/lib/components/CommonComponents/useChartPopoverStyles.styles.js +5 -3
  25. package/lib/components/CommonComponents/useChartPopoverStyles.styles.js.map +1 -1
  26. package/lib/components/CommonComponents/useChartPopoverStyles.styles.raw.js +3 -2
  27. package/lib/components/CommonComponents/useChartPopoverStyles.styles.raw.js.map +1 -1
  28. package/lib/components/DeclarativeChart/DeclarativeChart.js +56 -16
  29. package/lib/components/DeclarativeChart/DeclarativeChart.js.map +1 -1
  30. package/lib/components/DeclarativeChart/PlotlyColorAdapter.js +19 -0
  31. package/lib/components/DeclarativeChart/PlotlyColorAdapter.js.map +1 -1
  32. package/lib/components/DeclarativeChart/PlotlySchemaAdapter.js +1096 -337
  33. package/lib/components/DeclarativeChart/PlotlySchemaAdapter.js.map +1 -1
  34. package/lib/components/DeclarativeChart/imageExporter.js +1 -0
  35. package/lib/components/DeclarativeChart/imageExporter.js.map +1 -1
  36. package/lib/components/DonutChart/Arc/Arc.js +8 -8
  37. package/lib/components/DonutChart/Arc/Arc.js.map +1 -1
  38. package/lib/components/DonutChart/Arc/Arc.types.js.map +1 -1
  39. package/lib/components/DonutChart/Arc/useArcStyles.styles.js +9 -2
  40. package/lib/components/DonutChart/Arc/useArcStyles.styles.js.map +1 -1
  41. package/lib/components/DonutChart/Arc/useArcStyles.styles.raw.js +6 -1
  42. package/lib/components/DonutChart/Arc/useArcStyles.styles.raw.js.map +1 -1
  43. package/lib/components/DonutChart/DonutChart.js +61 -25
  44. package/lib/components/DonutChart/DonutChart.js.map +1 -1
  45. package/lib/components/DonutChart/DonutChart.types.js.map +1 -1
  46. package/lib/components/DonutChart/Pie/Pie.js +1 -0
  47. package/lib/components/DonutChart/Pie/Pie.js.map +1 -1
  48. package/lib/components/DonutChart/Pie/Pie.types.js.map +1 -1
  49. package/lib/components/DonutChart/Pie/usePieStyles.styles.js +2 -0
  50. package/lib/components/DonutChart/Pie/usePieStyles.styles.js.map +1 -1
  51. package/lib/components/DonutChart/Pie/usePieStyles.styles.raw.js +1 -0
  52. package/lib/components/DonutChart/Pie/usePieStyles.styles.raw.js.map +1 -1
  53. package/lib/components/DonutChart/useDonutChartStyles.styles.js +23 -4
  54. package/lib/components/DonutChart/useDonutChartStyles.styles.js.map +1 -1
  55. package/lib/components/DonutChart/useDonutChartStyles.styles.raw.js +9 -4
  56. package/lib/components/DonutChart/useDonutChartStyles.styles.raw.js.map +1 -1
  57. package/lib/components/FunnelChart/FunnelChart.js +11 -5
  58. package/lib/components/FunnelChart/FunnelChart.js.map +1 -1
  59. package/lib/components/FunnelChart/funnelGeometry.js.map +1 -1
  60. package/lib/components/FunnelChart/useFunnelChartStyles.styles.js +2 -0
  61. package/lib/components/FunnelChart/useFunnelChartStyles.styles.js.map +1 -1
  62. package/lib/components/FunnelChart/useFunnelChartStyles.styles.raw.js +1 -0
  63. package/lib/components/FunnelChart/useFunnelChartStyles.styles.raw.js.map +1 -1
  64. package/lib/components/GanttChart/GanttChart.js +1 -0
  65. package/lib/components/GanttChart/GanttChart.js.map +1 -1
  66. package/lib/components/GaugeChart/GaugeChart.js +2 -2
  67. package/lib/components/GaugeChart/GaugeChart.js.map +1 -1
  68. package/lib/components/GaugeChart/useGaugeChartStyles.styles.js +2 -0
  69. package/lib/components/GaugeChart/useGaugeChartStyles.styles.js.map +1 -1
  70. package/lib/components/GaugeChart/useGaugeChartStyles.styles.raw.js +1 -0
  71. package/lib/components/GaugeChart/useGaugeChartStyles.styles.raw.js.map +1 -1
  72. package/lib/components/GroupedVerticalBarChart/GroupedVerticalBarChart.js +15 -9
  73. package/lib/components/GroupedVerticalBarChart/GroupedVerticalBarChart.js.map +1 -1
  74. package/lib/components/GroupedVerticalBarChart/useGroupedVerticalBarChartStyles.styles.js +6 -17
  75. package/lib/components/GroupedVerticalBarChart/useGroupedVerticalBarChartStyles.styles.js.map +1 -1
  76. package/lib/components/GroupedVerticalBarChart/useGroupedVerticalBarChartStyles.styles.raw.js +5 -21
  77. package/lib/components/GroupedVerticalBarChart/useGroupedVerticalBarChartStyles.styles.raw.js.map +1 -1
  78. package/lib/components/HeatMapChart/HeatMapChart.js +2 -1
  79. package/lib/components/HeatMapChart/HeatMapChart.js.map +1 -1
  80. package/lib/components/HeatMapChart/useHeatMapChartStyles.styles.js +2 -0
  81. package/lib/components/HeatMapChart/useHeatMapChartStyles.styles.js.map +1 -1
  82. package/lib/components/HeatMapChart/useHeatMapChartStyles.styles.raw.js +1 -0
  83. package/lib/components/HeatMapChart/useHeatMapChartStyles.styles.raw.js.map +1 -1
  84. package/lib/components/HorizontalBarChart/HorizontalBarChart.js +3 -3
  85. package/lib/components/HorizontalBarChart/HorizontalBarChart.js.map +1 -1
  86. package/lib/components/HorizontalBarChart/useHorizontalBarChartStyles.styles.js +8 -2
  87. package/lib/components/HorizontalBarChart/useHorizontalBarChartStyles.styles.js.map +1 -1
  88. package/lib/components/HorizontalBarChart/useHorizontalBarChartStyles.styles.raw.js +5 -1
  89. package/lib/components/HorizontalBarChart/useHorizontalBarChartStyles.styles.raw.js.map +1 -1
  90. package/lib/components/HorizontalBarChartWithAxis/HorizontalBarChartWithAxis.js +2 -2
  91. package/lib/components/HorizontalBarChartWithAxis/HorizontalBarChartWithAxis.js.map +1 -1
  92. package/lib/components/HorizontalBarChartWithAxis/useHorizontalBarChartWithAxisStyles.styles.js +2 -0
  93. package/lib/components/HorizontalBarChartWithAxis/useHorizontalBarChartWithAxisStyles.styles.js.map +1 -1
  94. package/lib/components/HorizontalBarChartWithAxis/useHorizontalBarChartWithAxisStyles.styles.raw.js +1 -0
  95. package/lib/components/HorizontalBarChartWithAxis/useHorizontalBarChartWithAxisStyles.styles.raw.js.map +1 -1
  96. package/lib/components/Legends/Legends.js +1 -0
  97. package/lib/components/Legends/Legends.js.map +1 -1
  98. package/lib/components/Legends/OverflowMenu.js +1 -0
  99. package/lib/components/Legends/OverflowMenu.js.map +1 -1
  100. package/lib/components/Legends/shape.js +1 -0
  101. package/lib/components/Legends/shape.js.map +1 -1
  102. package/lib/components/Legends/useLegendsStyles.styles.js +2 -0
  103. package/lib/components/Legends/useLegendsStyles.styles.js.map +1 -1
  104. package/lib/components/Legends/useLegendsStyles.styles.raw.js +1 -0
  105. package/lib/components/Legends/useLegendsStyles.styles.raw.js.map +1 -1
  106. package/lib/components/LineChart/LineChart.js +284 -281
  107. package/lib/components/LineChart/LineChart.js.map +1 -1
  108. package/lib/components/LineChart/LineChart.types.js.map +1 -1
  109. package/lib/components/LineChart/eventAnnotation/LabelLink.js +1 -0
  110. package/lib/components/LineChart/eventAnnotation/LabelLink.js.map +1 -1
  111. package/lib/components/LineChart/eventAnnotation/Textbox.js +1 -0
  112. package/lib/components/LineChart/eventAnnotation/Textbox.js.map +1 -1
  113. package/lib/components/LineChart/useLineChartStyles.styles.js +25 -10
  114. package/lib/components/LineChart/useLineChartStyles.styles.js.map +1 -1
  115. package/lib/components/LineChart/useLineChartStyles.styles.raw.js +5 -21
  116. package/lib/components/LineChart/useLineChartStyles.styles.raw.js.map +1 -1
  117. package/lib/components/ResponsiveContainer/ResponsiveContainer.js +1 -0
  118. package/lib/components/ResponsiveContainer/ResponsiveContainer.js.map +1 -1
  119. package/lib/components/ResponsiveContainer/useResponsiveChildStyles.styles.js +2 -0
  120. package/lib/components/ResponsiveContainer/useResponsiveChildStyles.styles.js.map +1 -1
  121. package/lib/components/ResponsiveContainer/useResponsiveChildStyles.styles.raw.js +1 -0
  122. package/lib/components/ResponsiveContainer/useResponsiveChildStyles.styles.raw.js.map +1 -1
  123. package/lib/components/ResponsiveContainer/withResponsiveContainer.js +1 -0
  124. package/lib/components/ResponsiveContainer/withResponsiveContainer.js.map +1 -1
  125. package/lib/components/SankeyChart/SankeyChart.js +1 -0
  126. package/lib/components/SankeyChart/SankeyChart.js.map +1 -1
  127. package/lib/components/SankeyChart/useSankeyChartStyles.styles.js +14 -25
  128. package/lib/components/SankeyChart/useSankeyChartStyles.styles.js.map +1 -1
  129. package/lib/components/SankeyChart/useSankeyChartStyles.styles.raw.js +3 -12
  130. package/lib/components/SankeyChart/useSankeyChartStyles.styles.raw.js.map +1 -1
  131. package/lib/components/ScatterChart/ScatterChart.js +121 -81
  132. package/lib/components/ScatterChart/ScatterChart.js.map +1 -1
  133. package/lib/components/ScatterChart/ScatterChart.types.js.map +1 -1
  134. package/lib/components/ScatterChart/useScatterChartStyles.styles.js +13 -7
  135. package/lib/components/ScatterChart/useScatterChartStyles.styles.js.map +1 -1
  136. package/lib/components/ScatterChart/useScatterChartStyles.styles.raw.js +5 -22
  137. package/lib/components/ScatterChart/useScatterChartStyles.styles.raw.js.map +1 -1
  138. package/lib/components/Sparkline/Sparkline.js +1 -0
  139. package/lib/components/Sparkline/Sparkline.js.map +1 -1
  140. package/lib/components/Sparkline/useSparklineStyles.styles.js +2 -0
  141. package/lib/components/Sparkline/useSparklineStyles.styles.js.map +1 -1
  142. package/lib/components/Sparkline/useSparklineStyles.styles.raw.js +1 -0
  143. package/lib/components/Sparkline/useSparklineStyles.styles.raw.js.map +1 -1
  144. package/lib/components/VerticalBarChart/VerticalBarChart.js +17 -12
  145. package/lib/components/VerticalBarChart/VerticalBarChart.js.map +1 -1
  146. package/lib/components/VerticalBarChart/useVerticalBarChartStyles.styles.js +10 -6
  147. package/lib/components/VerticalBarChart/useVerticalBarChartStyles.styles.js.map +1 -1
  148. package/lib/components/VerticalBarChart/useVerticalBarChartStyles.styles.raw.js +6 -19
  149. package/lib/components/VerticalBarChart/useVerticalBarChartStyles.styles.raw.js.map +1 -1
  150. package/lib/components/VerticalStackedBarChart/VerticalStackedBarChart.js +30 -25
  151. package/lib/components/VerticalStackedBarChart/VerticalStackedBarChart.js.map +1 -1
  152. package/lib/components/VerticalStackedBarChart/useVerticalStackedBarChartStyles.styles.js +9 -6
  153. package/lib/components/VerticalStackedBarChart/useVerticalStackedBarChartStyles.styles.js.map +1 -1
  154. package/lib/components/VerticalStackedBarChart/useVerticalStackedBarChartStyles.styles.raw.js +5 -19
  155. package/lib/components/VerticalStackedBarChart/useVerticalStackedBarChartStyles.styles.raw.js.map +1 -1
  156. package/lib/types/DataPoint.js +3 -1
  157. package/lib/types/DataPoint.js.map +1 -1
  158. package/lib/utilities/Common.styles.js +47 -0
  159. package/lib/utilities/Common.styles.js.map +1 -0
  160. package/lib/utilities/Common.styles.raw.js +47 -0
  161. package/lib/utilities/Common.styles.raw.js.map +1 -0
  162. package/lib/utilities/FocusableTooltipText.js +1 -0
  163. package/lib/utilities/FocusableTooltipText.js.map +1 -1
  164. package/lib/utilities/SVGTooltipText.js +1 -0
  165. package/lib/utilities/SVGTooltipText.js.map +1 -1
  166. package/lib/utilities/image-export-utils.js +1 -0
  167. package/lib/utilities/image-export-utils.js.map +1 -1
  168. package/lib/utilities/index.js +1 -0
  169. package/lib/utilities/index.js.map +1 -1
  170. package/lib/utilities/scatterpolar-utils.js +52 -0
  171. package/lib/utilities/scatterpolar-utils.js.map +1 -0
  172. package/lib/utilities/utilities.js +314 -146
  173. package/lib/utilities/utilities.js.map +1 -1
  174. package/lib/utilities/vbc-utils.js.map +1 -1
  175. package/lib-commonjs/components/AreaChart/AreaChart.js +7 -5
  176. package/lib-commonjs/components/AreaChart/AreaChart.js.map +1 -1
  177. package/lib-commonjs/components/AreaChart/useAreaChartStyles.styles.js +1 -0
  178. package/lib-commonjs/components/AreaChart/useAreaChartStyles.styles.js.map +1 -1
  179. package/lib-commonjs/components/AreaChart/useAreaChartStyles.styles.raw.js +3 -14
  180. package/lib-commonjs/components/AreaChart/useAreaChartStyles.styles.raw.js.map +1 -1
  181. package/lib-commonjs/components/ChartTable/ChartTable.js +95 -8
  182. package/lib-commonjs/components/ChartTable/ChartTable.js.map +1 -1
  183. package/lib-commonjs/components/ChartTable/useChartTableStyles.styles.js +4 -3
  184. package/lib-commonjs/components/ChartTable/useChartTableStyles.styles.js.map +1 -1
  185. package/lib-commonjs/components/ChartTable/useChartTableStyles.styles.raw.js +3 -2
  186. package/lib-commonjs/components/ChartTable/useChartTableStyles.styles.raw.js.map +1 -1
  187. package/lib-commonjs/components/CommonComponents/CartesianChart.js +45 -42
  188. package/lib-commonjs/components/CommonComponents/CartesianChart.js.map +1 -1
  189. package/lib-commonjs/components/CommonComponents/CartesianChart.types.js.map +1 -1
  190. package/lib-commonjs/components/CommonComponents/ChartPopover.js +14 -5
  191. package/lib-commonjs/components/CommonComponents/ChartPopover.js.map +1 -1
  192. package/lib-commonjs/components/CommonComponents/useCartesianChartStyles.styles.js +16 -13
  193. package/lib-commonjs/components/CommonComponents/useCartesianChartStyles.styles.js.map +1 -1
  194. package/lib-commonjs/components/CommonComponents/useCartesianChartStyles.styles.raw.js +5 -32
  195. package/lib-commonjs/components/CommonComponents/useCartesianChartStyles.styles.raw.js.map +1 -1
  196. package/lib-commonjs/components/CommonComponents/useChartPopoverStyles.styles.js +4 -3
  197. package/lib-commonjs/components/CommonComponents/useChartPopoverStyles.styles.js.map +1 -1
  198. package/lib-commonjs/components/CommonComponents/useChartPopoverStyles.styles.raw.js +3 -2
  199. package/lib-commonjs/components/CommonComponents/useChartPopoverStyles.styles.raw.js.map +1 -1
  200. package/lib-commonjs/components/DeclarativeChart/DeclarativeChart.js +60 -20
  201. package/lib-commonjs/components/DeclarativeChart/DeclarativeChart.js.map +1 -1
  202. package/lib-commonjs/components/DeclarativeChart/PlotlyColorAdapter.js +22 -0
  203. package/lib-commonjs/components/DeclarativeChart/PlotlyColorAdapter.js.map +1 -1
  204. package/lib-commonjs/components/DeclarativeChart/PlotlySchemaAdapter.js +1109 -338
  205. package/lib-commonjs/components/DeclarativeChart/PlotlySchemaAdapter.js.map +1 -1
  206. package/lib-commonjs/components/DeclarativeChart/imageExporter.js +1 -0
  207. package/lib-commonjs/components/DeclarativeChart/imageExporter.js.map +1 -1
  208. package/lib-commonjs/components/DonutChart/Arc/Arc.js +8 -8
  209. package/lib-commonjs/components/DonutChart/Arc/Arc.js.map +1 -1
  210. package/lib-commonjs/components/DonutChart/Arc/Arc.types.js.map +1 -1
  211. package/lib-commonjs/components/DonutChart/Arc/useArcStyles.styles.js +11 -1
  212. package/lib-commonjs/components/DonutChart/Arc/useArcStyles.styles.js.map +1 -1
  213. package/lib-commonjs/components/DonutChart/Arc/useArcStyles.styles.raw.js +6 -1
  214. package/lib-commonjs/components/DonutChart/Arc/useArcStyles.styles.raw.js.map +1 -1
  215. package/lib-commonjs/components/DonutChart/DonutChart.js +61 -25
  216. package/lib-commonjs/components/DonutChart/DonutChart.js.map +1 -1
  217. package/lib-commonjs/components/DonutChart/DonutChart.types.js.map +1 -1
  218. package/lib-commonjs/components/DonutChart/Pie/Pie.js +2 -1
  219. package/lib-commonjs/components/DonutChart/Pie/Pie.js.map +1 -1
  220. package/lib-commonjs/components/DonutChart/Pie/Pie.types.js.map +1 -1
  221. package/lib-commonjs/components/DonutChart/Pie/usePieStyles.styles.js +1 -0
  222. package/lib-commonjs/components/DonutChart/Pie/usePieStyles.styles.js.map +1 -1
  223. package/lib-commonjs/components/DonutChart/Pie/usePieStyles.styles.raw.js +1 -0
  224. package/lib-commonjs/components/DonutChart/Pie/usePieStyles.styles.raw.js.map +1 -1
  225. package/lib-commonjs/components/DonutChart/useDonutChartStyles.styles.js +33 -4
  226. package/lib-commonjs/components/DonutChart/useDonutChartStyles.styles.js.map +1 -1
  227. package/lib-commonjs/components/DonutChart/useDonutChartStyles.styles.raw.js +9 -4
  228. package/lib-commonjs/components/DonutChart/useDonutChartStyles.styles.raw.js.map +1 -1
  229. package/lib-commonjs/components/FunnelChart/FunnelChart.js +11 -5
  230. package/lib-commonjs/components/FunnelChart/FunnelChart.js.map +1 -1
  231. package/lib-commonjs/components/FunnelChart/funnelGeometry.js.map +1 -1
  232. package/lib-commonjs/components/FunnelChart/useFunnelChartStyles.styles.js +1 -0
  233. package/lib-commonjs/components/FunnelChart/useFunnelChartStyles.styles.js.map +1 -1
  234. package/lib-commonjs/components/FunnelChart/useFunnelChartStyles.styles.raw.js +1 -0
  235. package/lib-commonjs/components/FunnelChart/useFunnelChartStyles.styles.raw.js.map +1 -1
  236. package/lib-commonjs/components/GanttChart/GanttChart.js +1 -0
  237. package/lib-commonjs/components/GanttChart/GanttChart.js.map +1 -1
  238. package/lib-commonjs/components/GaugeChart/GaugeChart.js +2 -2
  239. package/lib-commonjs/components/GaugeChart/GaugeChart.js.map +1 -1
  240. package/lib-commonjs/components/GaugeChart/useGaugeChartStyles.styles.js +1 -0
  241. package/lib-commonjs/components/GaugeChart/useGaugeChartStyles.styles.js.map +1 -1
  242. package/lib-commonjs/components/GaugeChart/useGaugeChartStyles.styles.raw.js +1 -0
  243. package/lib-commonjs/components/GaugeChart/useGaugeChartStyles.styles.raw.js.map +1 -1
  244. package/lib-commonjs/components/GroupedVerticalBarChart/GroupedVerticalBarChart.js +15 -9
  245. package/lib-commonjs/components/GroupedVerticalBarChart/GroupedVerticalBarChart.js.map +1 -1
  246. package/lib-commonjs/components/GroupedVerticalBarChart/useGroupedVerticalBarChartStyles.styles.js +3 -19
  247. package/lib-commonjs/components/GroupedVerticalBarChart/useGroupedVerticalBarChartStyles.styles.js.map +1 -1
  248. package/lib-commonjs/components/GroupedVerticalBarChart/useGroupedVerticalBarChartStyles.styles.raw.js +4 -20
  249. package/lib-commonjs/components/GroupedVerticalBarChart/useGroupedVerticalBarChartStyles.styles.raw.js.map +1 -1
  250. package/lib-commonjs/components/HeatMapChart/HeatMapChart.js +2 -1
  251. package/lib-commonjs/components/HeatMapChart/HeatMapChart.js.map +1 -1
  252. package/lib-commonjs/components/HeatMapChart/useHeatMapChartStyles.styles.js +1 -0
  253. package/lib-commonjs/components/HeatMapChart/useHeatMapChartStyles.styles.js.map +1 -1
  254. package/lib-commonjs/components/HeatMapChart/useHeatMapChartStyles.styles.raw.js +1 -0
  255. package/lib-commonjs/components/HeatMapChart/useHeatMapChartStyles.styles.raw.js.map +1 -1
  256. package/lib-commonjs/components/HorizontalBarChart/HorizontalBarChart.js +3 -3
  257. package/lib-commonjs/components/HorizontalBarChart/HorizontalBarChart.js.map +1 -1
  258. package/lib-commonjs/components/HorizontalBarChart/useHorizontalBarChartStyles.styles.js +10 -2
  259. package/lib-commonjs/components/HorizontalBarChart/useHorizontalBarChartStyles.styles.js.map +1 -1
  260. package/lib-commonjs/components/HorizontalBarChart/useHorizontalBarChartStyles.styles.raw.js +5 -1
  261. package/lib-commonjs/components/HorizontalBarChart/useHorizontalBarChartStyles.styles.raw.js.map +1 -1
  262. package/lib-commonjs/components/HorizontalBarChartWithAxis/HorizontalBarChartWithAxis.js +2 -2
  263. package/lib-commonjs/components/HorizontalBarChartWithAxis/HorizontalBarChartWithAxis.js.map +1 -1
  264. package/lib-commonjs/components/HorizontalBarChartWithAxis/useHorizontalBarChartWithAxisStyles.styles.js +1 -0
  265. package/lib-commonjs/components/HorizontalBarChartWithAxis/useHorizontalBarChartWithAxisStyles.styles.js.map +1 -1
  266. package/lib-commonjs/components/HorizontalBarChartWithAxis/useHorizontalBarChartWithAxisStyles.styles.raw.js +1 -0
  267. package/lib-commonjs/components/HorizontalBarChartWithAxis/useHorizontalBarChartWithAxisStyles.styles.raw.js.map +1 -1
  268. package/lib-commonjs/components/Legends/Legends.js +1 -0
  269. package/lib-commonjs/components/Legends/Legends.js.map +1 -1
  270. package/lib-commonjs/components/Legends/OverflowMenu.js +1 -0
  271. package/lib-commonjs/components/Legends/OverflowMenu.js.map +1 -1
  272. package/lib-commonjs/components/Legends/shape.js +1 -0
  273. package/lib-commonjs/components/Legends/shape.js.map +1 -1
  274. package/lib-commonjs/components/Legends/useLegendsStyles.styles.js +1 -0
  275. package/lib-commonjs/components/Legends/useLegendsStyles.styles.js.map +1 -1
  276. package/lib-commonjs/components/Legends/useLegendsStyles.styles.raw.js +1 -0
  277. package/lib-commonjs/components/Legends/useLegendsStyles.styles.raw.js.map +1 -1
  278. package/lib-commonjs/components/LineChart/LineChart.js +282 -279
  279. package/lib-commonjs/components/LineChart/LineChart.js.map +1 -1
  280. package/lib-commonjs/components/LineChart/LineChart.types.js.map +1 -1
  281. package/lib-commonjs/components/LineChart/eventAnnotation/LabelLink.js +1 -0
  282. package/lib-commonjs/components/LineChart/eventAnnotation/LabelLink.js.map +1 -1
  283. package/lib-commonjs/components/LineChart/eventAnnotation/Textbox.js +1 -0
  284. package/lib-commonjs/components/LineChart/eventAnnotation/Textbox.js.map +1 -1
  285. package/lib-commonjs/components/LineChart/useLineChartStyles.styles.js +31 -9
  286. package/lib-commonjs/components/LineChart/useLineChartStyles.styles.js.map +1 -1
  287. package/lib-commonjs/components/LineChart/useLineChartStyles.styles.raw.js +3 -20
  288. package/lib-commonjs/components/LineChart/useLineChartStyles.styles.raw.js.map +1 -1
  289. package/lib-commonjs/components/ResponsiveContainer/ResponsiveContainer.js +1 -0
  290. package/lib-commonjs/components/ResponsiveContainer/ResponsiveContainer.js.map +1 -1
  291. package/lib-commonjs/components/ResponsiveContainer/useResponsiveChildStyles.styles.js +1 -0
  292. package/lib-commonjs/components/ResponsiveContainer/useResponsiveChildStyles.styles.js.map +1 -1
  293. package/lib-commonjs/components/ResponsiveContainer/useResponsiveChildStyles.styles.raw.js +1 -0
  294. package/lib-commonjs/components/ResponsiveContainer/useResponsiveChildStyles.styles.raw.js.map +1 -1
  295. package/lib-commonjs/components/ResponsiveContainer/withResponsiveContainer.js +2 -1
  296. package/lib-commonjs/components/ResponsiveContainer/withResponsiveContainer.js.map +1 -1
  297. package/lib-commonjs/components/SankeyChart/SankeyChart.js +1 -0
  298. package/lib-commonjs/components/SankeyChart/SankeyChart.js.map +1 -1
  299. package/lib-commonjs/components/SankeyChart/useSankeyChartStyles.styles.js +24 -33
  300. package/lib-commonjs/components/SankeyChart/useSankeyChartStyles.styles.js.map +1 -1
  301. package/lib-commonjs/components/SankeyChart/useSankeyChartStyles.styles.raw.js +2 -12
  302. package/lib-commonjs/components/SankeyChart/useSankeyChartStyles.styles.raw.js.map +1 -1
  303. package/lib-commonjs/components/ScatterChart/ScatterChart.js +118 -78
  304. package/lib-commonjs/components/ScatterChart/ScatterChart.js.map +1 -1
  305. package/lib-commonjs/components/ScatterChart/ScatterChart.types.js.map +1 -1
  306. package/lib-commonjs/components/ScatterChart/useScatterChartStyles.styles.js +14 -7
  307. package/lib-commonjs/components/ScatterChart/useScatterChartStyles.styles.js.map +1 -1
  308. package/lib-commonjs/components/ScatterChart/useScatterChartStyles.styles.raw.js +3 -20
  309. package/lib-commonjs/components/ScatterChart/useScatterChartStyles.styles.raw.js.map +1 -1
  310. package/lib-commonjs/components/Sparkline/Sparkline.js +1 -0
  311. package/lib-commonjs/components/Sparkline/Sparkline.js.map +1 -1
  312. package/lib-commonjs/components/Sparkline/useSparklineStyles.styles.js +1 -0
  313. package/lib-commonjs/components/Sparkline/useSparklineStyles.styles.js.map +1 -1
  314. package/lib-commonjs/components/Sparkline/useSparklineStyles.styles.raw.js +1 -0
  315. package/lib-commonjs/components/Sparkline/useSparklineStyles.styles.raw.js.map +1 -1
  316. package/lib-commonjs/components/VerticalBarChart/VerticalBarChart.js +16 -11
  317. package/lib-commonjs/components/VerticalBarChart/VerticalBarChart.js.map +1 -1
  318. package/lib-commonjs/components/VerticalBarChart/useVerticalBarChartStyles.styles.js +6 -3
  319. package/lib-commonjs/components/VerticalBarChart/useVerticalBarChartStyles.styles.js.map +1 -1
  320. package/lib-commonjs/components/VerticalBarChart/useVerticalBarChartStyles.styles.raw.js +4 -17
  321. package/lib-commonjs/components/VerticalBarChart/useVerticalBarChartStyles.styles.raw.js.map +1 -1
  322. package/lib-commonjs/components/VerticalStackedBarChart/VerticalStackedBarChart.js +29 -24
  323. package/lib-commonjs/components/VerticalStackedBarChart/VerticalStackedBarChart.js.map +1 -1
  324. package/lib-commonjs/components/VerticalStackedBarChart/useVerticalStackedBarChartStyles.styles.js +6 -3
  325. package/lib-commonjs/components/VerticalStackedBarChart/useVerticalStackedBarChartStyles.styles.js.map +1 -1
  326. package/lib-commonjs/components/VerticalStackedBarChart/useVerticalStackedBarChartStyles.styles.raw.js +4 -18
  327. package/lib-commonjs/components/VerticalStackedBarChart/useVerticalStackedBarChartStyles.styles.raw.js.map +1 -1
  328. package/lib-commonjs/types/DataPoint.js +3 -1
  329. package/lib-commonjs/types/DataPoint.js.map +1 -1
  330. package/lib-commonjs/utilities/Common.styles.js +71 -0
  331. package/lib-commonjs/utilities/Common.styles.js.map +1 -0
  332. package/lib-commonjs/utilities/Common.styles.raw.js +71 -0
  333. package/lib-commonjs/utilities/Common.styles.raw.js.map +1 -0
  334. package/lib-commonjs/utilities/FocusableTooltipText.js +2 -1
  335. package/lib-commonjs/utilities/FocusableTooltipText.js.map +1 -1
  336. package/lib-commonjs/utilities/SVGTooltipText.js +1 -0
  337. package/lib-commonjs/utilities/SVGTooltipText.js.map +1 -1
  338. package/lib-commonjs/utilities/image-export-utils.js +1 -0
  339. package/lib-commonjs/utilities/image-export-utils.js.map +1 -1
  340. package/lib-commonjs/utilities/index.js +1 -0
  341. package/lib-commonjs/utilities/index.js.map +1 -1
  342. package/lib-commonjs/utilities/scatterpolar-utils.js +67 -0
  343. package/lib-commonjs/utilities/scatterpolar-utils.js.map +1 -0
  344. package/lib-commonjs/utilities/utilities.js +327 -137
  345. package/lib-commonjs/utilities/utilities.js.map +1 -1
  346. package/lib-commonjs/utilities/vbc-utils.js.map +1 -1
  347. package/package.json +10 -10
@@ -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} from '@fluentui/chart-utilities';\nimport {\n isArrayOrTypedArray,\n isDate,\n isDateArray,\n isNumberArray,\n isStringArray,\n isYearArray,\n isInvalidValue,\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 type AxisProperties = {\n xAnnotation?: string;\n yAnnotation?: string;\n row: number;\n column: number;\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\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: input.layout?.showlegend === false ? true : 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 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 = rangeYValues[index2] as number;\n if (series.type === 'bar') {\n mapXToDataPoints[x].chartData.push({\n legend,\n data: yVal,\n color: rgb(color).copy({ opacity }).formatHex8() ?? color,\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 });\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);\n });\n });\n });\n\n const { chartTitle, xAxisTitle, yAxisTitle } = getTitles(input.layout);\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 chartTitle,\n xAxisTitle,\n yAxisTitle,\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 ...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 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 mapXToDataPoints[x].series.push({\n key: legend,\n data: series.y![index2] as number,\n xAxisCalloutData: x as string,\n color: rgb(color).copy({ opacity }).formatHex8() ?? color,\n legend,\n useSecondaryYScale: usesSecondaryYScale(series, input.layout),\n });\n }\n });\n });\n\n const { chartTitle, xAxisTitle, yAxisTitle } = getTitles(input.layout);\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 chartTitle,\n xAxisTitle,\n yAxisTitle,\n mode: 'plotly',\n ...secondaryYAxisValues,\n hideTickOverlap: true,\n wrapXAxisLables: typeof gvbcData[0]?.name === 'string',\n hideLegend,\n roundCorners: true,\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 const { chartTitle, xAxisTitle, yAxisTitle } = getTitles(input.layout);\n\n return {\n data: vbcData,\n width: input.layout?.width,\n height: input.layout?.height ?? 350,\n chartTitle,\n xAxisTitle,\n yAxisTitle,\n mode: 'histogram',\n hideTickOverlap: true,\n wrapXAxisLables: typeof vbcData[0]?.x === 'string',\n maxBarWidth: 50,\n hideLegend,\n roundCorners: true,\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 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 })),\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 yMinMaxValues = findNumericMinMaxOfY(chartData);\n const { chartTitle, xAxisTitle, yAxisTitle } = getTitles(input.layout);\n const numDataPoints = chartData.reduce((total, lineChartPoints) => total + lineChartPoints.data.length, 0);\n\n const chartProps: ChartProps = {\n chartTitle,\n lineChartData: chartData,\n };\n\n const scatterChartProps: ChartProps = {\n chartTitle,\n scatterChartData: chartData,\n };\n\n if (isAreaChart) {\n return {\n data: chartProps,\n supportNegativeData: true,\n xAxisTitle,\n yAxisTitle,\n ...secondaryYAxisValues,\n mode,\n width: input.layout?.width,\n height: input.layout?.height ?? 350,\n hideTickOverlap: true,\n useUTC: false,\n hideLegend,\n optimizeLargeData: numDataPoints > 1000,\n } as AreaChartProps;\n } else {\n return {\n data: isScatterChart ? scatterChartProps : chartProps,\n supportNegativeData: true,\n xAxisTitle,\n yAxisTitle,\n ...secondaryYAxisValues,\n roundedTicks: true,\n yMinValue: yMinMaxValues.startValue,\n yMaxValue: yMinMaxValues.endValue,\n width: input.layout?.width,\n height: input.layout?.height ?? 350,\n hideTickOverlap: true,\n useUTC: false,\n hideLegend,\n optimizeLargeData: numDataPoints > 1000,\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 const { chartTitle, xAxisTitle, yAxisTitle } = getTitles(input.layout);\n\n return {\n data: chartData,\n chartTitle,\n xAxisTitle,\n yAxisTitle,\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 ...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 const { chartTitle, xAxisTitle, yAxisTitle } = getTitles(input.layout);\n\n return {\n data: [heatmapData],\n domainValuesForColorScale,\n rangeValuesForColorScale,\n hideLegend: true,\n showYAxisLables: true,\n chartTitle,\n xAxisTitle,\n yAxisTitle,\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 ...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(/&lt;[^&]*?&gt;/g, '')\n .replace(/<[^>]*>/g, '')\n .replace(/&lt;br&gt;|\\\\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 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 acc || (series as Partial<PlotData>).showlegend === true;\n }, false);\n\n if (toShowLegend) {\n input.data.forEach((series: Partial<PlotData>, index) => {\n const name = series.legendgroup;\n const color = series.line?.color || (series as Partial<PlotData>).marker?.color;\n const legendShape = getLegendShape(series);\n const resolvedColor = extractColor(\n input.layout?.template?.layout?.colorway,\n colorwayType,\n color,\n colorMap,\n isDarkTheme,\n );\n if (name !== undefined && 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 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\ntype FillInfo = {\n row: number;\n fillDomain: number;\n};\n\nexport const getGridProperties = (layout: Partial<Layout> | undefined, isMultiPlot: boolean): GridProperties => {\n const gridX: number[][] = [];\n const gridY: number[][] = [];\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 (layout === undefined || layout === null || Object.keys(layout).length === 0) {\n return { templateRows, templateColumns, layout: gridLayout };\n }\n if (!layout.xaxis || !layout.yaxis) {\n return { templateRows, templateColumns, layout: gridLayout };\n }\n if (!isMultiPlot) {\n return { templateRows, templateColumns, layout: gridLayout };\n }\n\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 gridX[index] = (layout[key as keyof typeof layout] as Partial<LayoutAxis>)?.domain ?? [];\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 gridY[index] = (layout[key as keyof typeof layout] as Partial<LayoutAxis>)?.domain ?? [];\n }\n });\n\n layout.annotations?.forEach(annotation => {\n const xMatches = gridX.flatMap((interval, idx) =>\n (annotation?.x as number) >= interval[0] && (annotation?.x as number) <= interval[1] ? [idx] : [],\n );\n const yMatch = gridY.findIndex(\n (interval, yIndex) =>\n xMatches.includes(yIndex) &&\n (annotation?.y as number) >= interval[0] &&\n (annotation?.y as number) <= interval[1],\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 if (gridX.length > 0) {\n const uniqueXIntervals = new Map<string, number[]>();\n gridX.forEach(interval => {\n const key = `${interval[0]}-${interval[1]}`;\n if (!uniqueXIntervals.has(key)) {\n uniqueXIntervals.set(key, interval);\n }\n });\n const minXInterval = Math.min(...Array.from(uniqueXIntervals.values()).map(interval => interval[1] - interval[0]));\n templateColumns = Array.from(uniqueXIntervals.values())\n .map(interval => `${(interval[1] - interval[0]) / minXInterval}fr`)\n .join(' ');\n\n let columnNumber = 1;\n let lastIntervalEnd = 0;\n gridX.forEach((interval, index) => {\n if (interval.length === 0) {\n return;\n }\n\n const cellName = `x${index === 0 ? '' : index + 1}` as XAxisName;\n\n const annotationProps = annotations[index] as AnnotationProps;\n const xAnnotation = annotationProps?.xAnnotation;\n\n if (interval[0] < lastIntervalEnd) {\n columnNumber = 1;\n }\n lastIntervalEnd = interval[1];\n\n const row: AxisProperties = {\n row: -1,\n column: columnNumber,\n xAnnotation,\n };\n gridLayout[cellName] = row;\n columnNumber += 1;\n });\n }\n const numColumns = Math.max(...Object.values(gridLayout).map(cell => cell.column ?? 0));\n\n const columnFill: Record<number, FillInfo> = {};\n for (let i = 1; i <= numColumns; i++) {\n columnFill[i] = { row: 1, fillDomain: 0 };\n }\n\n if (gridY.length > 0) {\n const uniqueYIntervals = new Map<string, number[]>();\n gridY.forEach(interval => {\n const key = `${interval[0]}-${interval[1]}`;\n if (!uniqueYIntervals.has(key)) {\n uniqueYIntervals.set(key, interval);\n }\n });\n const minYInterval = Math.min(...Array.from(uniqueYIntervals.values()).map(interval => interval[1] - interval[0]));\n templateRows = Array.from(uniqueYIntervals.values())\n .map(interval => `${(interval[1] - interval[0]) / minYInterval}fr`)\n .join(' ');\n\n gridY.forEach((interval, index) => {\n if (interval.length === 0) {\n return;\n }\n\n const cellName = `x${index === 0 ? '' : index + 1}` as XAxisName;\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 = columnFill[cell.column].row;\n cell.yAnnotation = yAnnotation;\n }\n columnFill[cell.column].fillDomain = interval[1];\n columnFill[cell.column].row += 1;\n });\n }\n\n // reverse the order of rows in grid layout from bottom-top to top-bottom as required by CSS grid\n const reversedGridLayout: GridAxisProperties = {};\n // find the maximum row number\n const maxRowNumber = Math.max(...Object.values(gridLayout).map(cell => cell.row ?? 0));\n // iterate over the gridLayout and reverse the row numbers\n Object.keys(gridLayout).forEach(key => {\n const cell = gridLayout[key];\n if (cell.row !== undefined) {\n // reverse the row number\n cell.row = maxRowNumber - cell.row + 1;\n }\n reversedGridLayout[key] = cell;\n });\n\n return {\n templateRows,\n templateColumns,\n layout: reversedGridLayout,\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","curveCardinal","d3CurveCardinal","getOpacity","extractColor","resolveColor","rgb","dashOptions","dot","strokeDasharray","strokeLinecap","strokeWidth","lineBorderWidth","dash","longdash","dashdot","longdashdot","solid","getTitles","layout","titles","chartTitle","title","text","xAxisTitle","xaxis","yAxisTitle","yaxis","correctYearMonth","xValues","presentYear","Date","getFullYear","length","Array","isArray","Error","dates","map","possiblyMonthValue","parsedDate","filteredDateIndexPairs","date","index","filter","i","currentDate","previousDate","currentMonth","getMonth","previousMonth","currentYear","previousYear","setFullYear","month","usesSecondaryYScale","series","yaxis2","anchor","side","getSecondaryYAxisValues","data","maxAllowedMinY","minAllowedMaxY","containsSecondaryYAxis","yMinValue","yMaxValue","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","yVal","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","yMinMaxValues","numDataPoints","reduce","lineChartPoints","chartProps","lineChartData","scatterChartProps","scatterChartData","supportNegativeData","useUTC","optimizeLargeData","roundedTicks","startValue","endValue","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","allupLegends","toShowLegend","acc","legendgroup","resolvedColor","some","group","centerLegends","enabledWrapLines","canSelectMultipleLegends","hideLegendsData","every","hideLegendsInferred","isFinite","ranges","getIndexFromKey","pattern","normalizedKey","parseInt","getGridProperties","gridX","gridY","annotations","templateRows","templateColumns","gridLayout","startsWith","anchorIndex","annotation","xMatches","flatMap","interval","idx","yMatch","yIndex","textangle","yAnnotation","xAnnotation","uniqueXIntervals","Map","has","set","minXInterval","columnNumber","lastIntervalEnd","cellName","annotationProps","column","numColumns","columnFill","fillDomain","uniqueYIntervals","minYInterval","reversedGridLayout","maxRowNumber","result","axesById","axId","ax","axLetter","propName","isAxisTypeCategory","isValidArray","categoryarray","categoryorder","categoriesInTraceOrder"],"mappings":"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"}
1
+ {"version":3,"sources":["../src/components/DeclarativeChart/PlotlySchemaAdapter.ts"],"sourcesContent":["'use client';\n\n/* 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 GanttChartDataPoint,\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 { GanttChartProps } from '../GanttChart/index';\nimport {\n DEFAULT_DATE_STRING,\n findNumericMinMaxOfY,\n formatScientificLimitWidth,\n MIN_DONUT_RADIUS,\n calculatePrecision,\n precisionRound,\n} 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 DTickValue,\n AxisType,\n} from '@fluentui/chart-utilities';\nimport {\n isArrayOrTypedArray,\n isDate,\n isDateArray,\n isNumberArray,\n isStringArray,\n isYearArray,\n isInvalidValue,\n formatToLocaleString,\n isNumber,\n isObjectArray,\n getAxisIds,\n getAxisKey,\n} from '@fluentui/chart-utilities';\nimport { curveCardinal as d3CurveCardinal } from 'd3-shape';\nimport type { ColorwayType } from './PlotlyColorAdapter';\nimport { getOpacity, extractColor, resolveColor, createColorScale } from './PlotlyColorAdapter';\nimport { rgb } from 'd3-color';\nimport { Legend, LegendsProps } from '../Legends/index';\nimport { ScatterChartProps } from '../ScatterChart/ScatterChart.types';\nimport { CartesianChartProps } from '../CommonComponents/index';\nimport { FunnelChartDataPoint, FunnelChartProps } from '../FunnelChart/FunnelChart.types';\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\n/**\n * Checks if a key should be ignored during normalization\n * @param key The key to check\n * @returns true if the key should be ignored\n */\nconst shouldIgnoreKey = (key: string): boolean => {\n const lowerKey = key.toLowerCase();\n if (lowerKey.includes('style') || lowerKey === 'style') {\n return true;\n }\n // Use regex to match common CSS property patterns\n // (color, fill, stroke, border, background, font, shadow, outline, etc.)\n const cssKeyRegex = new RegExp(\n '^(color|fill|stroke|border|background|font|shadow|outline|margin|padding|gap|align|justify|display|flex|grid|' +\n 'text|line|letter|word|vertical|horizontal|overflow|position|top|right|bottom|left|zindex|z-index|opacity|' +\n 'filter|clip|cursor|resize|transition|animation|transform|box|column|row|direction|visibility|' +\n 'content|width|height|aspect|image|user|pointer|caret|scroll|%)|(-webkit-|-moz-|-ms-|-o-)',\n 'i',\n );\n if (cssKeyRegex.test(lowerKey)) {\n return true;\n }\n return false;\n};\n\n/**\n * Flattens a nested object into a single level object with dot notation keys\n * @param obj Object to flatten\n * @param prefix Optional prefix for keys\n * @returns Flattened object\n */\nconst flattenObject = (obj: Record<string, unknown>, prefix: string = ''): Record<string, unknown> => {\n const flattened: Record<string, unknown> = {};\n\n for (const key in obj) {\n if (Object.prototype.hasOwnProperty.call(obj, key)) {\n const newKey = prefix ? `${prefix}.${key}` : key;\n const value = obj[key];\n\n if (typeof value === 'object' && value !== null && !Array.isArray(value) && !(value instanceof Date)) {\n // Recursively flatten nested objects\n Object.assign(flattened, flattenObject(value as Record<string, unknown>, newKey));\n } else {\n flattened[newKey] = value;\n }\n }\n }\n\n return flattened;\n};\n\n/**\n * Normalizes an array of objects by flattening nested structures and creating grouped data\n * Uses json_normalize approach with D3 color detection and filtering\n * @param data Array of objects to normalize\n * @returns Object containing traces for grouped vertical bar chart\n */\nexport const normalizeObjectArrayForGVBC = (\n data: Array<Record<string, unknown>>,\n xLabels?: string[],\n): { traces: Array<Record<string, unknown>>; x: string[] } => {\n if (!data || data.length === 0) {\n return { traces: [], x: [] };\n }\n\n // Use provided xLabels if available, otherwise default to Item 1, Item 2, ...\n const x = xLabels && xLabels.length === data.length ? xLabels : data.map((_, index) => `Item ${index + 1}`);\n\n // First, flatten all objects and collect all unique keys, excluding style keys\n const flattenedObjects = data.map((item, index) => {\n if (typeof item === 'object' && item !== null) {\n const flattened = flattenObject(item);\n // Only keep keys where the value is numeric (number or numeric string) and not a style key\n const filtered: Record<string, unknown> = {};\n Object.keys(flattened).forEach(key => {\n const value = flattened[key];\n if (!shouldIgnoreKey(key) && (typeof value === 'number' || (typeof value === 'string' && isNumber(value)))) {\n filtered[key] = value;\n }\n });\n return filtered;\n } else if (typeof item === 'number' || (typeof item === 'string' && isNumber(item))) {\n // Only keep primitive numeric values\n return { [x[index] || `item_${index}`]: item };\n } else {\n // Non-numeric primitive, ignore by returning empty object\n return {};\n }\n });\n\n // Collect all unique keys across all objects\n const allKeys = new Set<string>();\n flattenedObjects.forEach(obj => {\n Object.keys(obj).forEach(key => allKeys.add(key));\n });\n\n // Create traces for each key (property)\n const traces: Array<Record<string, unknown>> = [];\n\n allKeys.forEach(key => {\n const yValues: number[] = [];\n let hasValidData = false;\n let isNumericData = false;\n\n flattenedObjects.forEach((obj, index) => {\n const value = obj[key];\n if (typeof value === 'number') {\n yValues.push(value);\n hasValidData = true;\n isNumericData = true;\n } else if (typeof value === 'string' && isNumber(value)) {\n yValues.push(parseFloat(value));\n hasValidData = true;\n isNumericData = true;\n }\n });\n\n // Only create trace if we have valid numeric data\n if (hasValidData && isNumericData) {\n const trace: Record<string, unknown> = {\n type: 'bar',\n name: key,\n x,\n y: yValues,\n };\n\n traces.push(trace);\n }\n });\n\n return { traces, 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 if (colors) {\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 } else {\n // Sort labels by value descending before mapping\n if (firstData.labels && firstData.values) {\n const labelValuePairs = firstData.labels.map((label, index) => ({\n label,\n value: getNumberAtIndexOrDefault(firstData.values, index),\n index,\n }));\n // Filter out invalid values\n const validPairs = labelValuePairs.filter(pair => !isInvalidValue(pair.value));\n // Sort descending by value\n validPairs.sort((a, b) => (b.value as number) - (a.value as number));\n validPairs.forEach((pair, sortedIdx) => {\n const legend = `${pair.label}`;\n const color: string = resolveColor(colors, sortedIdx, legend, colorMap, isDarkTheme);\n if (!mapLegendToDataPoint[legend]) {\n mapLegendToDataPoint[legend] = {\n legend,\n data: pair.value,\n color,\n };\n } else {\n mapLegendToDataPoint[legend].data! += pair.value as number;\n }\n });\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 colorScale = createColorScale(input.layout, series, colorScale);\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 ...getBarProps(input.data, input.layout),\n ...getYMinMaxValues(input.data[0], input.layout),\n ...getAxisTickProps(input.data, input.layout),\n };\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 // Handle object arrays in y values by normalizing the data first\n let processedInput = { ...input };\n\n // Check if any bar traces have object arrays as y values\n const hasObjectArrayData = input.data.some(\n (series: Partial<PlotData>) => series.type === 'bar' && isObjectArray(series.y),\n );\n\n if (hasObjectArrayData) {\n // Process each trace that has object array y values\n const processedData = input.data\n .map((series: Partial<PlotData>, index: number) => {\n if (series.type === 'bar' && isObjectArray(series.y)) {\n // Normalize the object array to create multiple traces for GVBC\n const { traces } = normalizeObjectArrayForGVBC(\n series.y as unknown as Array<Record<string, unknown>>,\n Array.isArray(series.x) ? (series.x as string[]) : undefined,\n );\n\n // Return all the new traces, each representing a property from the objects\n return traces.map((trace: Record<string, unknown>) => ({\n ...trace,\n // Copy other properties from the original series if needed\n marker: series.marker,\n }));\n }\n return [series];\n })\n .flat();\n\n processedInput = {\n ...input,\n data: processedData,\n };\n }\n const mapXToDataPoints: Record<string, GroupedVerticalBarChartData> = {};\n const secondaryYAxisValues = getSecondaryYAxisValues(processedInput.data, processedInput.layout, 0, 0);\n const { legends, hideLegend } = getLegendProps(processedInput.data, processedInput.layout, isMultiPlot);\n\n let colorScale: ((value: number) => string) | undefined = undefined;\n const yAxisTickFormat = getYAxisTickFormat(processedInput.data[0], processedInput.layout);\n processedInput.data.forEach((series: Partial<PlotData>, index1: number) => {\n colorScale = createColorScale(processedInput.layout, series, colorScale);\n // extract colors for each series only once\n const extractedColors = extractColor(\n processedInput.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, processedInput.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: processedInput.layout?.width,\n height: processedInput.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(processedInput.layout),\n ...getAxisCategoryOrderProps(processedInput.data, processedInput.layout),\n ...getYMinMaxValues(processedInput.data[0], processedInput.layout),\n ...getXAxisTickFormat(processedInput.data[0], processedInput.layout),\n ...yAxisTickFormat,\n ...getBarProps(processedInput.data, processedInput.layout),\n ...getAxisTickProps(processedInput.data, processedInput.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 colorScale = createColorScale(input.layout, series, colorScale);\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 'text',\n 'markers',\n 'text+markers',\n 'markers+text',\n 'lines+markers',\n 'markers+line',\n 'text+lines+markers',\n 'lines+markers+text',\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 =\n !series.mode?.includes('text') && series.type !== 'scatterpolar' ? 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.type !== 'scatterpolar' ? series.mode : 'scatterpolar',\n // originXOffset is not typed on Layout, but may be present in input.layout as a part of projection of\n // scatter polar coordingates to cartesian coordinates\n ...(series.type === 'scatterpolar'\n ? {\n originXOffset: (input.layout as { __polarOriginX?: number } | undefined)?.__polarOriginX,\n direction: input.layout?.polar?.angularaxis?.direction,\n rotation: input.layout?.polar?.angularaxis?.rotation,\n axisLabel: (series as { __axisLabel: string[] }).__axisLabel\n ? (series as { __axisLabel: string[] }).__axisLabel\n : {},\n }\n : {}),\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 ...getAxisScaleTypeProps(input.data, input.layout),\n ...getAxisTickProps(input.data, input.layout),\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 ...(isScatterChart\n ? {\n showYAxisLablesTooltip: true,\n ...getAxisCategoryOrderProps(input.data, input.layout),\n }\n : {}),\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 colorScale = createColorScale(input.layout, series, colorScale);\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 ...getBarProps(input.data, input.layout, true),\n ...getAxisTickProps(input.data, input.layout),\n };\n};\n\nexport const transformPlotlyJsonToGanttChartProps = (\n input: PlotlySchema,\n isMultiPlot: boolean,\n colorMap: React.MutableRefObject<Map<string, string>>,\n colorwayType: ColorwayType,\n isDarkTheme?: boolean,\n): GanttChartProps => {\n const { legends, hideLegend } = getLegendProps(input.data, input.layout, isMultiPlot);\n let colorScale: ((value: number) => string) | undefined = undefined;\n const chartData: GanttChartDataPoint[] = input.data\n .map((series: Partial<PlotData>, index: number) => {\n colorScale = createColorScale(input.layout, series, colorScale);\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 const isXDate = input.layout?.xaxis?.type === 'date' || isDateArray(series.x);\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const convertXValueToNumber = (value: any) => {\n return isInvalidValue(value) ? 0 : isXDate ? +parseLocalDate(value) : +value;\n };\n\n return (series.y as Datum[])\n .map((yVal, i: number) => {\n if (isInvalidValue(yVal)) {\n return null;\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 const base = convertXValueToNumber(series.base?.[i]);\n const xVal = convertXValueToNumber(series.x?.[i]);\n\n return {\n x: {\n start: isXDate ? new Date(base) : base,\n end: isXDate ? new Date(base + xVal) : base + xVal,\n },\n y: yVal,\n legend,\n color: rgb(color).copy({ opacity }).formatHex8() ?? color,\n } as GanttChartDataPoint;\n })\n .filter(point => point !== null) as GanttChartDataPoint[];\n })\n .flat();\n\n return {\n data: chartData,\n showYAxisLables: true,\n height: input.layout?.height ?? 350,\n width: input.layout?.width,\n hideTickOverlap: true,\n hideLegend,\n noOfCharsToTruncate: 20,\n showYAxisLablesTooltip: true,\n roundCorners: true,\n useUTC: false,\n ...getTitles(input.layout),\n ...getAxisCategoryOrderProps(input.data, input.layout),\n ...getBarProps(input.data, input.layout, true),\n ...getAxisTickProps(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 ...getAxisTickProps(input.data, 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(/&lt;[^&]*?&gt;/g, '')\n .replace(/<[^>]*>/g, '')\n .replace(/&lt;br&gt;|\\\\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\nfunction resolveCellStyle<T>(raw: T | T[] | T[][] | undefined, rowIndex: number, colIndex: number): T | undefined {\n if (Array.isArray(raw)) {\n const rowEntry = raw[colIndex] ?? raw[0];\n if (Array.isArray(rowEntry)) {\n return rowEntry[rowIndex] ?? rowEntry[0];\n }\n return rowEntry;\n }\n return raw;\n}\n\nfunction mergeCells(tableCells?: TableData['cells'], templateCells?: TableData['cells']): TableData['cells'] {\n return {\n values: tableCells?.values ?? templateCells?.values ?? [],\n align: tableCells?.align ?? templateCells?.align,\n\n fill: {\n ...(templateCells?.fill ?? {}),\n ...(tableCells?.fill ?? {}),\n },\n\n font: {\n ...(templateCells?.font ?? {}),\n ...(tableCells?.font ?? {}),\n },\n\n format: tableCells?.format ?? templateCells?.format,\n prefix: tableCells?.prefix ?? templateCells?.prefix,\n suffix: tableCells?.suffix ?? templateCells?.suffix,\n };\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 //headers are at first row only\n const rowIndex = 0;\n const fontColor = resolveCellStyle(header?.font?.color, rowIndex, colIndex) as string | undefined;\n const fontSize = resolveCellStyle(header?.font?.size, rowIndex, colIndex) as number | undefined;\n const backgroundColor = resolveCellStyle(header?.fill?.color, rowIndex, colIndex) as string | undefined;\n const textAlign = resolveCellStyle(header?.align, rowIndex, colIndex) as\n | React.CSSProperties['textAlign']\n | undefined;\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 = mergeCells(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 fontColor = resolveCellStyle(cells?.font?.color, rowIndex, colIndex) as string | undefined;\n const fontSize = resolveCellStyle(cells?.font?.size, rowIndex, colIndex) as number | undefined;\n const backgroundColor = resolveCellStyle(cells?.fill?.color, rowIndex, colIndex) as string | undefined;\n const textAlign = resolveCellStyle(cells?.align, rowIndex, colIndex) as\n | React.CSSProperties['textAlign']\n | 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 const templateHeader = input.layout?.template?.data?.table?.[0]?.header;\n const tableHeader = tableData.header;\n\n const header = {\n align: tableHeader?.align ?? templateHeader?.align,\n fill: {\n ...(templateHeader?.fill ?? {}),\n ...(tableHeader?.fill ?? {}),\n },\n font: {\n ...(templateHeader?.font ?? {}),\n ...(tableHeader?.font ?? {}),\n },\n values: tableHeader?.values ?? templateHeader?.values ?? [],\n };\n\n return {\n headers: normalizeHeaders(tableData.header?.values ?? [], header),\n rows,\n width: input.layout?.width,\n height: input.layout?.height,\n styles,\n };\n};\n\nfunction getCategoriesAndValues(series: Partial<PlotData>): {\n categories: (string | number)[];\n values: (string | number)[];\n} {\n const orientation = series.orientation || 'h';\n const y = series.labels ?? series.y ?? series.stage;\n const x = series.values ?? series.x ?? series.value;\n const xIsString = isStringArray(x as Datum[] | Datum[][] | TypedArray | undefined);\n const yIsString = isStringArray(y as Datum[] | Datum[][] | TypedArray | undefined);\n const xIsNumber = isNumberArray(x as Datum[] | Datum[][] | TypedArray | undefined);\n const yIsNumber = isNumberArray(y as Datum[] | Datum[][] | TypedArray | undefined);\n\n // Helper to ensure array of (string | number)\n const toArray = (arr: unknown): (string | number)[] => {\n if (Array.isArray(arr)) {\n return arr as (string | number)[];\n }\n if (typeof arr === 'string' || typeof arr === 'number') {\n return [arr];\n }\n return [];\n };\n\n if (orientation === 'h') {\n if (yIsString && xIsNumber) {\n return { categories: toArray(y), values: toArray(x) };\n } else if (xIsString && yIsNumber) {\n return { categories: toArray(x), values: toArray(y) };\n } else {\n return { categories: yIsString ? toArray(y) : toArray(x), values: yIsString ? toArray(x) : toArray(y) };\n }\n } else {\n if (xIsString && yIsNumber) {\n return { categories: toArray(x), values: toArray(y) };\n } else if (yIsString && xIsNumber) {\n return { categories: toArray(y), values: toArray(x) };\n } else {\n return { categories: xIsString ? toArray(x) : toArray(y), values: xIsString ? toArray(y) : toArray(x) };\n }\n }\n}\n\nexport const transformPlotlyJsonToFunnelChartProps = (\n input: PlotlySchema,\n isMultiPlot: boolean,\n colorMap: React.MutableRefObject<Map<string, string>>,\n colorwayType: ColorwayType,\n isDarkTheme?: boolean,\n): FunnelChartProps => {\n const funnelData: FunnelChartDataPoint[] = [];\n\n // Determine if data is stacked based on multiple series with multiple values per series\n const isStacked =\n input.data.length > 1 &&\n input.data.every((series: Partial<PlotData>) => {\n const values = series.values ?? series.x ?? series.value;\n const labels = series.labels ?? series.y ?? series.stage;\n return Array.isArray(labels) && Array.isArray(values) && values.length > 1 && labels.length > 1;\n });\n\n if (isStacked) {\n // Assign a color per series/category and use it for all subValues of that category\n const seriesColors: Record<string, string> = {};\n input.data.forEach((series: Partial<PlotData>, seriesIdx: number) => {\n const category = series.name || `Category ${seriesIdx + 1}`;\n // Use the same color for this category across all stages\n const extractedColors = extractColor(\n input.layout?.template?.layout?.colorway,\n colorwayType,\n series.marker?.colors ?? series.marker?.color,\n colorMap,\n isDarkTheme,\n );\n // Always use the first color for the series/category\n const color = resolveColor(extractedColors, 0, category, colorMap, isDarkTheme);\n seriesColors[category] = color;\n\n const labels = series.labels ?? series.y ?? series.stage;\n const values = series.values ?? series.x ?? series.value;\n\n if (!isArrayOrTypedArray(labels) || !isArrayOrTypedArray(values)) {\n return;\n }\n if (labels && isArrayOrTypedArray(labels) && labels.length > 0) {\n (labels as (string | number)[]).forEach((label: string, i: number) => {\n const stageIndex = funnelData.findIndex(stage => stage.stage === label);\n const valueNum = Number((values as (string | number)[])[i]);\n if (isNaN(valueNum)) {\n return;\n }\n if (stageIndex === -1) {\n funnelData.push({\n stage: label,\n subValues: [{ category, value: valueNum, color }],\n });\n } else {\n funnelData[stageIndex].subValues!.push({ category, value: valueNum, color });\n }\n });\n }\n });\n } else {\n // Non-stacked data handling (multiple series with single-value arrays)\n input.data.forEach((series: Partial<PlotData>, seriesIdx: number) => {\n const { categories, values } = getCategoriesAndValues(series);\n\n if (!isArrayOrTypedArray(categories) || !isArrayOrTypedArray(values)) {\n return;\n }\n\n const extractedColors = extractColor(\n input.layout?.template?.layout?.colorway,\n colorwayType,\n series.marker?.colors ?? series.marker?.color,\n colorMap,\n isDarkTheme,\n );\n\n categories.forEach((label: string, i: number) => {\n const color = resolveColor(extractedColors, i, label, colorMap, isDarkTheme);\n const valueNum = Number(values[i]);\n if (isNaN(valueNum)) {\n return;\n }\n funnelData.push({\n stage: label,\n value: valueNum,\n color,\n });\n });\n });\n }\n\n return {\n data: funnelData,\n width: input.layout?.width,\n height: input.layout?.height,\n orientation: (input.data[0] as Partial<PlotData>)?.orientation === 'v' ? 'horizontal' : 'vertical',\n hideLegend: isMultiPlot || input.layout?.showlegend === false,\n };\n};\n\nexport const projectPolarToCartesian = (input: PlotlySchema): PlotlySchema => {\n const projection: PlotlySchema = { ...input };\n\n // Find the global min and max radius across all series\n let minRadius = 0;\n let maxRadius = 0;\n for (let sindex = 0; sindex < input.data.length; sindex++) {\n const rVals = (input.data[sindex] as Partial<PlotData>).r;\n if (rVals && isArrayOrTypedArray(rVals)) {\n for (let ptindex = 0; ptindex < rVals.length; ptindex++) {\n if (!isInvalidValue(rVals[ptindex])) {\n minRadius = Math.min(minRadius, rVals[ptindex] as number);\n maxRadius = Math.max(maxRadius, rVals[ptindex] as number);\n }\n }\n }\n }\n\n // If there are negative radii, compute the shift\n const radiusShift = minRadius < 0 ? -minRadius : 0;\n\n // Collect all unique theta values from all scatterpolar series for equal spacing\n const allThetaValues: Set<string> = new Set();\n for (let sindex = 0; sindex < input.data.length; sindex++) {\n const series = input.data[sindex] as Partial<PlotData>;\n if (series.theta && isArrayOrTypedArray(series.theta)) {\n series.theta.forEach(theta => allThetaValues.add(String(theta)));\n }\n }\n\n // Project all points and create a perfect square domain\n const allX: number[] = [];\n const allY: number[] = [];\n let originX: number | null = null;\n for (let sindex = 0; sindex < input.data.length; sindex++) {\n const series = input.data[sindex] as Partial<PlotData>;\n // If scatterpolar, set __axisLabel to all unique theta values for equal spacing\n if (isArrayOrTypedArray(series.theta)) {\n (series as { __axisLabel: string[] }).__axisLabel = Array.from(allThetaValues);\n }\n series.x = [] as Datum[];\n series.y = [] as Datum[];\n const thetas = series.theta!;\n const rVals = series.r!;\n\n // Skip if rVals or thetas are not arrays\n if (!isArrayOrTypedArray(rVals) || !isArrayOrTypedArray(thetas)) {\n projection.data[sindex] = series;\n continue;\n }\n\n // retrieve polar axis settings\n const dirMultiplier = input.layout?.polar?.angularaxis?.direction === 'clockwise' ? -1 : 1;\n const startAngleInRad = ((input.layout?.polar?.angularaxis?.rotation ?? 0) * Math.PI) / 180;\n\n // Compute tick positions if categorical\n let uniqueTheta: Datum[] = [];\n let categorical = false;\n if (!isNumberArray(thetas)) {\n uniqueTheta = Array.from(new Set(thetas));\n categorical = true;\n }\n\n for (let ptindex = 0; ptindex < rVals.length; ptindex++) {\n if (isInvalidValue(thetas?.[ptindex]) || isInvalidValue(rVals?.[ptindex])) {\n continue;\n }\n\n // Map theta to angle in radians\n let thetaRad: number;\n if (categorical) {\n const idx = uniqueTheta.indexOf(thetas[ptindex]);\n const step = (2 * Math.PI) / uniqueTheta.length;\n thetaRad = startAngleInRad + dirMultiplier * idx * step;\n } else {\n thetaRad = startAngleInRad + dirMultiplier * (((thetas[ptindex] as number) * Math.PI) / 180);\n }\n // Shift only the polar origin (not the cartesian)\n const rawRadius = rVals[ptindex] as number;\n const polarRadius = rawRadius + radiusShift; // Only for projection\n // Calculate cartesian coordinates (with shifted polar origin)\n const x = polarRadius * Math.cos(thetaRad);\n const y = polarRadius * Math.sin(thetaRad);\n\n // Calculate the cartesian coordinates of the original polar origin (0,0)\n // This is the point that should be mapped to (0,0) in cartesian coordinates\n if (sindex === 0 && ptindex === 0) {\n // For polar origin (r=0, θ=0), cartesian coordinates are (0,0)\n // But since we shifted the radius by radiusShift, the cartesian origin is at (radiusShift, 0)\n originX = radiusShift;\n }\n\n series.x.push(x);\n series.y.push(y);\n allX.push(x);\n allY.push(y);\n }\n\n // Map text to each data point for downstream chart rendering\n if (series.x && series.y) {\n (series as { data?: unknown[] }).data = series.x.map((xVal, idx) => ({\n x: xVal,\n y: (series.y as number[])[idx],\n ...(series.text ? { text: (series.text as string[])[idx] } : {}),\n }));\n }\n\n projection.data[sindex] = series;\n }\n\n // 7. Recenter all cartesian coordinates\n if (originX !== null) {\n for (let sindex = 0; sindex < projection.data.length; sindex++) {\n const series = projection.data[sindex] as Partial<PlotData>;\n if (series.x && series.y) {\n series.x = (series.x as number[]).map((v: number) => v - originX!);\n }\n }\n // Also recenter allX for normalization\n for (let i = 0; i < allX.length; i++) {\n allX[i] = allX[i] - originX!;\n }\n }\n\n // 8. Find the maximum absolute value among all x and y\n let maxAbs = Math.max(...allX.map(Math.abs), ...allY.map(Math.abs));\n maxAbs = maxAbs === 0 ? 1 : maxAbs;\n\n // 9. Rescale all points so that the largest |x| or |y| is 0.5\n for (let sindex = 0; sindex < projection.data.length; sindex++) {\n const series = projection.data[sindex] as Partial<PlotData>;\n if (series.x && series.y) {\n series.x = (series.x as number[]).map((v: number) => v / (2 * maxAbs));\n series.y = (series.y as number[]).map((v: number) => v / (2 * maxAbs));\n }\n }\n\n // 10. Customize layout for perfect square with absolute positioning\n const size = input.layout?.width || input.layout?.height || 500;\n projection.layout = {\n ...projection.layout,\n width: size,\n height: size,\n };\n // Attach originX as custom properties\n (projection.layout as { __polarOriginX?: number }).__polarOriginX = originX ?? undefined;\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): void {\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(calculatePrecision(minVal), calculatePrecision(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 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): number | undefined => {\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>): [number, number][] => {\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\nconst getBarProps = (\n data: Data[],\n layout: Partial<Layout> | undefined,\n isHorizontal?: boolean,\n):\n | Pick<VerticalBarChartProps, 'barWidth' | 'maxBarWidth' | 'xAxisInnerPadding' | 'xAxisOuterPadding' | 'xAxisPadding'>\n | Pick<GanttChartProps, 'barHeight' | 'maxBarHeight' | 'yAxisPadding'> => {\n let padding: number | undefined;\n\n if (typeof layout?.bargap === 'number') {\n if (layout.bargap >= 0 && layout.bargap <= 1) {\n padding = layout.bargap;\n } else {\n // Plotly uses a default bargap of 0.2, as noted here: https://github.com/plotly/plotly.js/blob/1d5a249e43dd31ae50acf02117a19e5ac97387e9/src/traces/bar/layout_defaults.js#L58.\n // However, we don't use this value as our default padding because it causes the bars to\n // appear disproportionately wide in large containers.\n padding = 0.2;\n }\n }\n\n const plotlyBarWidths = data\n .map((series: Partial<PlotData>) => {\n if (series.type === 'bar' && (isArrayOrTypedArray(series.width) || typeof series.width === 'number')) {\n return series.width;\n }\n return [];\n })\n .flat();\n const maxPlotlyBarWidth = d3Max(plotlyBarWidths as number[]);\n if (typeof maxPlotlyBarWidth === 'number') {\n padding = 1 - maxPlotlyBarWidth;\n padding = Math.max(0, Math.min(padding, 1));\n }\n\n if (typeof padding === 'undefined') {\n return {};\n }\n\n if (isHorizontal) {\n return {\n maxBarHeight: 1000,\n yAxisPadding: padding,\n };\n }\n\n return {\n barWidth: 'auto',\n maxBarWidth: 1000,\n xAxisInnerPadding: padding,\n xAxisOuterPadding: padding / 2,\n };\n};\n\ntype GetAxisScaleTypePropsResult = Pick<CartesianChartProps, 'xScaleType' | 'yScaleType' | 'secondaryYScaleType'>;\n\nconst getAxisScaleTypeProps = (data: Data[], layout: Partial<Layout> | undefined): GetAxisScaleTypePropsResult => {\n const result: GetAxisScaleTypePropsResult = {};\n\n const axisObjects = getAxisObjects(data, layout);\n\n if (axisObjects.x?.type === 'log') {\n result.xScaleType = 'log';\n }\n if (axisObjects.y?.type === 'log') {\n result.yScaleType = 'log';\n }\n if (axisObjects.y2?.type === 'log') {\n result.secondaryYScaleType = 'log';\n }\n\n return result;\n};\n\ntype GetAxisTickPropsResult = Pick<\n CartesianChartProps,\n 'tickValues' | 'xAxisTickCount' | 'xAxis' | 'yAxisTickValues' | 'yAxisTickCount' | 'yAxis'\n>;\n\n/**\n * @see {@link https://github.com/plotly/plotly.js/blob/master/src/plots/cartesian/tick_value_defaults.js#L8}\n */\nconst getAxisTickProps = (data: Data[], layout: Partial<Layout> | undefined): GetAxisTickPropsResult => {\n const props: GetAxisTickPropsResult = {};\n const axisObjects = getAxisObjects(data, layout);\n\n Object.keys(axisObjects).forEach(axId => {\n const ax = axisObjects[axId];\n if (!ax) {\n return;\n }\n\n const axType = getAxisType(data, axId[0] as 'x' | 'y', ax);\n\n if ((!ax.tickmode || ax.tickmode === 'array') && isArrayOrTypedArray(ax.tickvals)) {\n const tickValues = axType === 'date' ? ax.tickvals!.map((v: string | number | Date) => new Date(v)) : ax.tickvals;\n\n if (axId === 'x') {\n props.tickValues = tickValues;\n } else if (axId === 'y') {\n props.yAxisTickValues = tickValues;\n }\n return;\n }\n\n if ((!ax.tickmode || ax.tickmode === 'linear') && ax.dtick) {\n const dtick = plotlyDtick(ax.dtick, axType);\n const tick0 = plotlyTick0(ax.tick0, axType, dtick);\n\n if (axId === 'x') {\n props.xAxis = {\n tickStep: dtick,\n tick0: tick0,\n };\n } else if (axId === 'y') {\n props.yAxis = {\n tickStep: dtick,\n tick0: tick0,\n };\n }\n return;\n }\n\n if ((!ax.tickmode || ax.tickmode === 'auto') && typeof ax.nticks === 'number' && ax.nticks >= 0) {\n if (axId === 'x') {\n props.xAxisTickCount = ax.nticks;\n } else if (axId === 'y') {\n props.yAxisTickCount = ax.nticks;\n }\n }\n });\n\n return props;\n};\n\n/**\n * @see {@link https://github.com/plotly/plotly.js/blob/master/src/plots/cartesian/clean_ticks.js#L16}\n */\nconst plotlyDtick = (dtick: DTickValue | undefined, axType: AxisType | undefined) => {\n const isLogAx = axType === 'log';\n const isDateAx = axType === 'date';\n const isCatAx = axType === 'category';\n const dtickDflt = isDateAx ? 86400000 : 1;\n\n if (!dtick) {\n return dtickDflt;\n }\n\n if (isNumber(dtick)) {\n dtick = Number(dtick);\n if (dtick <= 0) {\n return dtickDflt;\n }\n if (isCatAx) {\n // category dtick must be positive integers\n return Math.max(1, Math.round(dtick));\n }\n if (isDateAx) {\n // date dtick must be at least 0.1ms (our current precision)\n return Math.max(0.1, dtick);\n }\n return dtick;\n }\n\n if (typeof dtick !== 'string' || !(isDateAx || isLogAx)) {\n return dtickDflt;\n }\n\n const prefix = dtick.charAt(0);\n const dtickNum = isNumber(dtick.slice(1)) ? Number(dtick.slice(1)) : 0;\n\n if (\n dtickNum <= 0 ||\n !(\n // \"M<n>\" gives ticks every (integer) n months\n (\n (isDateAx && prefix === 'M' && dtickNum === Math.round(dtickNum)) ||\n // \"L<f>\" gives ticks linearly spaced in data (not in position) every (float) f\n (isLogAx && prefix === 'L') ||\n // \"D1\" gives powers of 10 with all small digits between, \"D2\" gives only 2 and 5\n (isLogAx && prefix === 'D' && (dtickNum === 1 || dtickNum === 2))\n )\n )\n ) {\n return dtickDflt;\n }\n\n return dtick;\n};\n\n/**\n * @see {@link https://github.com/plotly/plotly.js/blob/master/src/plots/cartesian/clean_ticks.js#L70}\n */\nconst plotlyTick0 = (tick0: number | string | undefined, axType: AxisType | undefined, dtick: string | number) => {\n if (axType === 'date') {\n return isDate(tick0) ? new Date(tick0!) : new Date(DEFAULT_DATE_STRING);\n }\n if (dtick === 'D1' || dtick === 'D2') {\n // D1 and D2 modes ignore tick0 entirely\n return undefined;\n }\n // Aside from date axes, tick0 must be numeric\n return isNumber(tick0) ? Number(tick0) : 0;\n};\n\nconst getAxisObjects = (data: Data[], layout: Partial<Layout> | undefined) => {\n // Traces are grouped by their xaxis property, and for each group/subplot, the adapter functions\n // are called with the corresponding filtered data. As a result, all traces passed to an adapter\n // function share the same xaxis.\n let xAxisId: number | undefined;\n const yAxisIds = new Set<number>();\n data.forEach((series: Partial<PlotData>) => {\n const axisIds = getAxisIds(series);\n xAxisId = axisIds.x;\n yAxisIds.add(axisIds.y);\n });\n\n const axisObjects: Record<string, Partial<LayoutAxis> | undefined> = {};\n\n if (typeof xAxisId === 'number') {\n axisObjects.x = layout?.[getAxisKey('x', xAxisId)];\n }\n\n const sortedYAxisIds = Array.from(yAxisIds).sort();\n if (sortedYAxisIds.length > 0) {\n axisObjects.y = layout?.[getAxisKey('y', sortedYAxisIds[0])];\n }\n if (sortedYAxisIds.length > 1) {\n axisObjects.y2 = layout?.[getAxisKey('y', sortedYAxisIds[1])];\n }\n\n return axisObjects;\n};\n\nconst getAxisType = (data: Data[], axLetter: 'x' | 'y', ax: Partial<LayoutAxis> | undefined): AxisType | undefined => {\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 // Note: When ax.type is explicitly specified, Plotly casts the values to match that type.\n // Therefore, simply checking the type of the values may not be sufficient. At the moment,\n // we don’t always perform this casting ourselves and instead use the values as provided.\n\n if (isNumberArray(values)) {\n if (ax?.type === 'log') {\n return 'log';\n }\n return 'linear';\n }\n\n if (isDateArray(values)) {\n return 'date';\n }\n\n if (isStringArray(values)) {\n return 'category';\n }\n};\n\n/**\n * This is experimental. Use it only with valid datetime strings to verify if they conform to the ISO 8601 format.\n */\nconst isoDateRegex = /^\\d{4}(-\\d{2}(-\\d{2})?)?(T\\d{2}:\\d{2}(:\\d{2}(\\.\\d{1,9})?)?(Z)?)?$/;\n\n/**\n * We want to display localized date and time in the charts, so the useUTC prop is set to false.\n * But this can sometimes cause the formatters to display the datetime incorrectly.\n * To work around this issue, we use this function to adjust datetime strings so that they are always interpreted\n * as local time, allowing the formatters to produce the correct output.\n *\n * FIXME: The formatters should always produce a clear and accurate localized output, regardless of the\n * format used to create the date object.\n */\nconst parseLocalDate = (value: string | number) => {\n if (typeof value === 'string') {\n const match = value.match(isoDateRegex);\n if (match) {\n if (!match[3]) {\n value += 'T00:00';\n } else if (match[6]) {\n value = value.replace('Z', '');\n }\n }\n }\n return new Date(value);\n};\n"],"names":["React","bin","d3Bin","extent","d3Extent","sum","d3Sum","min","d3Min","max","d3Max","range","d3Range","scaleLinear","d3ScaleLinear","format","d3Format","DataVizPalette","getColorFromToken","DEFAULT_DATE_STRING","findNumericMinMaxOfY","formatScientificLimitWidth","MIN_DONUT_RADIUS","calculatePrecision","precisionRound","isArrayOrTypedArray","isDate","isDateArray","isNumberArray","isStringArray","isYearArray","isInvalidValue","formatToLocaleString","isNumber","isObjectArray","getAxisIds","getAxisKey","curveCardinal","d3CurveCardinal","getOpacity","extractColor","resolveColor","createColorScale","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","shouldIgnoreKey","key","lowerKey","toLowerCase","includes","cssKeyRegex","RegExp","test","flattenObject","obj","prefix","flattened","Object","prototype","hasOwnProperty","call","newKey","value","assign","normalizeObjectArrayForGVBC","xLabels","traces","_","flattenedObjects","item","filtered","keys","allKeys","Set","add","hasValidData","isNumericData","push","trace","type","name","transformPlotlyJsonToDonutProps","input","isMultiPlot","firstData","colors","piecolorway","template","marker","mapLegendToDataPoint","labels","label","getNumberAtIndexOrDefault","values","legend","labelValuePairs","validPairs","pair","sort","a","b","sortedIdx","width","height","hideLabels","textinfo","donutMarginHorizontal","donutMarginVertical","innerRadius","hole","chartData","hideLegend","showlegend","showLabelsInPercent","roundCorners","transformPlotlyJsonToVSBCProps","fallbackVSBC","vsbcData","mapXToDataPoints","secondaryYAxisValues","legends","getLegendProps","colorScale","index1","extractedBarColors","extractedLineColors","line","validXYRanges","getValidXYRanges","rangeStart","rangeEnd","rangeIdx","rangeXValues","slice","rangeYValues","index2","xAxisPoint","lineData","opacity","yAxisCalloutData","copy","formatHex8","lineColor","lineOptions","mode","getLineOptions","legendShape","getLegendShape","useSecondaryYScale","barWidth","wrapXAxisLables","hideTickOverlap","barGapMax","showYAxisLables","noOfCharsToTruncate","showYAxisLablesTooltip","getAxisCategoryOrderProps","getBarProps","getAxisTickProps","transformPlotlyJsonToGVBCProps","processedInput","gvbcData","hasObjectArrayData","some","processedData","flat","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","originXOffset","__polarOriginX","direction","polar","angularaxis","rotation","axisLabel","__axisLabel","yMinMax","yMinMaxValues","startValue","endValue","numDataPoints","reduce","lineChartPoints","chartProps","lineChartData","scatterChartProps","scatterChartData","commonProps","supportNegativeData","useUTC","optimizeLargeData","getAxisScaleTypeProps","roundedTicks","transformPlotlyJsonToHorizontalBarWithAxisProps","yValue","point","chartHeight","margin","l","padding","pad","availableHeight","numberOfRows","d","scalingFactor","gapFactor","barHeight","transformPlotlyJsonToGanttChartProps","convertXValueToNumber","parseLocalDate","base","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","colorscale","coloraxis","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","suffix","formatted","resolveCellStyle","raw","rowIndex","rowEntry","mergeCells","tableCells","templateCells","align","font","transformPlotlyJsonToChartTableProps","tableData","normalizeHeaders","header","cleanedValues","cell","Boolean","fontColor","fontSize","backgroundColor","textAlign","style","columns","table","rows","col","cellValue","cleanValue","formattedValue","root","templateHeader","tableHeader","headers","getCategoriesAndValues","orientation","stage","xIsString","yIsString","xIsNumber","yIsNumber","toArray","categories","transformPlotlyJsonToFunnelChartProps","funnelData","isStacked","every","seriesColors","category","stageIndex","findIndex","valueNum","isNaN","subValues","projectPolarToCartesian","projection","minRadius","maxRadius","sindex","rVals","r","ptindex","radiusShift","allThetaValues","theta","String","allX","allY","originX","from","thetas","dirMultiplier","startAngleInRad","PI","uniqueTheta","categorical","thetaRad","idx","indexOf","rawRadius","polarRadius","cos","sin","v","maxAbs","isPlainObject","getPrototypeOf","arrayAttributes","stack","isArrayStack","baseContainer","baseAttrName","findArrayAttributes","crawlIntoTrace","container","astrPartial","newAstrPartial","j","shape","smoothing","curve","tension","bins","isString","binStart","binEnd","binSize","ceil","stop","floor","scale","domain","nice","minVal","maxVal","binGenerator","thresholds","precision","th","dx","dy","dashType","getAllupLegendsProps","traceInfo","allupLegends","toShowLegend","acc","pieSeries","labelIndex","group","isNonPlotType","plotSeries","legendgroup","resolvedColor","centerLegends","enabledWrapLines","canSelectMultipleLegends","hideLegendsData","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","yMatch","yIndex","textangle","yAnnotation","xAnnotation","uniqueXIntervals","Map","has","set","sortedXStart","cellName","columnIndex","columnNumber","annotationProps","column","xDomain","yDomain","uniqueYIntervals","sortedYStart","rowNumber","result","axesById","axId","ax","axLetter","propName","isAxisTypeCategory","isValidArray","categoryarray","categoryorder","categoriesInTraceOrder","isHorizontal","bargap","plotlyBarWidths","maxPlotlyBarWidth","maxBarHeight","yAxisPadding","xAxisInnerPadding","xAxisOuterPadding","axisObjects","getAxisObjects","xScaleType","yScaleType","y2","secondaryYScaleType","props","axType","getAxisType","tickmode","tickvals","tickValues","yAxisTickValues","dtick","plotlyDtick","tick0","plotlyTick0","tickStep","nticks","xAxisTickCount","yAxisTickCount","isLogAx","isDateAx","isCatAx","dtickDflt","round","charAt","dtickNum","xAxisId","yAxisIds","axisIds","sortedYAxisIds","isoDateRegex","match"],"mappings":"AAAA;AAEA,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;AAsB/C,SAASC,cAAc,EAAEC,iBAAiB,QAAQ,yBAAyB;AAM3E,SACEC,mBAAmB,EACnBC,oBAAoB,EACpBC,0BAA0B,EAC1BC,gBAAgB,EAChBC,kBAAkB,EAClBC,cAAc,QACT,4BAA4B;AAmBnC,SACEC,mBAAmB,EACnBC,MAAM,EACNC,WAAW,EACXC,aAAa,EACbC,aAAa,EACbC,WAAW,EACXC,cAAc,EACdC,oBAAoB,EACpBC,QAAQ,EACRC,aAAa,EACbC,UAAU,EACVC,UAAU,QACL,4BAA4B;AACnC,SAASC,iBAAiBC,eAAe,QAAQ,WAAW;AAE5D,SAASC,UAAU,EAAEC,YAAY,EAAEC,YAAY,EAAEC,gBAAgB,QAAQ,uBAAuB;AAChG,SAASC,GAAG,QAAQ,WAAW;AAM/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,iBAAiB5D,SAAS0D,kBAAAA,4BAAAA,MAAOH,UAAU;QAC7C;IACF;IAEA,OAAO,CAAC;AACV;AAEA,MAAMM,mBAAmB,CAACT,QAAcV;QACxBiB;IAAd,MAAMhE,SAAQgE,sBAAAA,mBAAmBP,QAAQV,qBAA3BiB,0CAAAA,oBAAoChE,KAAK;IACvD,IAAIA,SAASA,MAAMmE,MAAM,KAAK,GAAG;QAC/B,OAAO;YACLC,WAAWpE,KAAK,CAAC,EAAE;YACnBqE,WAAWrE,KAAK,CAAC,EAAE;QACrB;IACF;IACA,OAAO,CAAC;AACV;AAEA,MAAMgE,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,OAAOlD,qBAAqBkD;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,OAAO5D,OAAOqE,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,KAAKnH,GAAG,IAAIiH;gBACxBxC,YAAY0C,KAAKjH,GAAG,IAAI+G;YAC1B;QACF;IACF;IAEA,IAAI,CAACF,wBAAwB;QAC3B,OAAO,CAAC;IACV;IAEA,IAAI,OAAOvC,cAAc,YAAY,OAAOqC,mBAAmB,UAAU;QACvErC,YAAY2C,KAAKnH,GAAG,CAACwE,WAAWqC;IAClC;IACA,IAAI,OAAOpC,cAAc,YAAY,OAAOqC,mBAAmB,UAAU;QACvErC,YAAY0C,KAAKjH,GAAG,CAACuE,WAAWqC;IAClC;IACA,IAAI3D,mBAAAA,8BAAAA,iBAAAA,OAAQqD,MAAM,cAAdrD,qCAAAA,eAAgB/C,KAAK,EAAE;QACzBoE,YAAYrB,OAAOqD,MAAM,CAACpG,KAAK,CAAC,EAAE;QAClCqE,YAAYtB,OAAOqD,MAAM,CAACpG,KAAK,CAAC,EAAE;IACpC;IAEA,OAAO;QACLgH,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,kBAAkB5F,aAAauF,UAAUC,cAAcC,OAAOC,UAAUC;IAC9E,OAAO1F,aAAa2F,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;;;;CAIC,GACD,MAAMO,kBAAkB,CAACC;IACvB,MAAMC,WAAWD,IAAIE,WAAW;IAChC,IAAID,SAASE,QAAQ,CAAC,YAAYF,aAAa,SAAS;QACtD,OAAO;IACT;IACA,kDAAkD;IAClD,yEAAyE;IACzE,MAAMG,cAAc,IAAIC,OACtB,kHACE,8GACA,kGACA,4FACF;IAEF,IAAID,YAAYE,IAAI,CAACL,WAAW;QAC9B,OAAO;IACT;IACA,OAAO;AACT;AAEA;;;;;CAKC,GACD,MAAMM,gBAAgB,CAACC,KAA8BC,SAAiB,EAAE;IACtE,MAAMC,YAAqC,CAAC;IAE5C,IAAK,MAAMV,OAAOQ,IAAK;QACrB,IAAIG,OAAOC,SAAS,CAACC,cAAc,CAACC,IAAI,CAACN,KAAKR,MAAM;YAClD,MAAMe,SAASN,SAAS,GAAGA,OAAO,CAAC,EAAET,KAAK,GAAGA;YAC7C,MAAMgB,QAAQR,GAAG,CAACR,IAAI;YAEtB,IAAI,OAAOgB,UAAU,YAAYA,UAAU,QAAQ,CAACrE,MAAMC,OAAO,CAACoE,UAAU,CAAEA,CAAAA,iBAAiBvE,IAAG,GAAI;gBACpG,qCAAqC;gBACrCkE,OAAOM,MAAM,CAACP,WAAWH,cAAcS,OAAkCD;YAC3E,OAAO;gBACLL,SAAS,CAACK,OAAO,GAAGC;YACtB;QACF;IACF;IAEA,OAAON;AACT;AAEA;;;;;CAKC,GACD,OAAO,MAAMQ,8BAA8B,CACzC7C,MACA8C;IAEA,IAAI,CAAC9C,QAAQA,KAAKrC,MAAM,KAAK,GAAG;QAC9B,OAAO;YAAEoF,QAAQ,EAAE;YAAE5B,GAAG,EAAE;QAAC;IAC7B;IAEA,8EAA8E;IAC9E,MAAMA,IAAI2B,WAAWA,QAAQnF,MAAM,KAAKqC,KAAKrC,MAAM,GAAGmF,UAAU9C,KAAKtB,GAAG,CAAC,CAACsE,GAAGjE,QAAU,CAAC,KAAK,EAAEA,QAAQ,GAAG;IAE1G,+EAA+E;IAC/E,MAAMkE,mBAAmBjD,KAAKtB,GAAG,CAAC,CAACwE,MAAMnE;QACvC,IAAI,OAAOmE,SAAS,YAAYA,SAAS,MAAM;YAC7C,MAAMb,YAAYH,cAAcgB;YAChC,2FAA2F;YAC3F,MAAMC,WAAoC,CAAC;YAC3Cb,OAAOc,IAAI,CAACf,WAAWjC,OAAO,CAACuB,CAAAA;gBAC7B,MAAMgB,QAAQN,SAAS,CAACV,IAAI;gBAC5B,IAAI,CAACD,gBAAgBC,QAAS,CAAA,OAAOgB,UAAU,YAAa,OAAOA,UAAU,YAAY7H,SAAS6H,MAAM,GAAI;oBAC1GQ,QAAQ,CAACxB,IAAI,GAAGgB;gBAClB;YACF;YACA,OAAOQ;QACT,OAAO,IAAI,OAAOD,SAAS,YAAa,OAAOA,SAAS,YAAYpI,SAASoI,OAAQ;YACnF,qCAAqC;YACrC,OAAO;gBAAE,CAAC/B,CAAC,CAACpC,MAAM,IAAI,CAAC,KAAK,EAAEA,OAAO,CAAC,EAAEmE;YAAK;QAC/C,OAAO;YACL,0DAA0D;YAC1D,OAAO,CAAC;QACV;IACF;IAEA,6CAA6C;IAC7C,MAAMG,UAAU,IAAIC;IACpBL,iBAAiB7C,OAAO,CAAC+B,CAAAA;QACvBG,OAAOc,IAAI,CAACjB,KAAK/B,OAAO,CAACuB,CAAAA,MAAO0B,QAAQE,GAAG,CAAC5B;IAC9C;IAEA,wCAAwC;IACxC,MAAMoB,SAAyC,EAAE;IAEjDM,QAAQjD,OAAO,CAACuB,CAAAA;QACd,MAAMtB,UAAoB,EAAE;QAC5B,IAAImD,eAAe;QACnB,IAAIC,gBAAgB;QAEpBR,iBAAiB7C,OAAO,CAAC,CAAC+B,KAAKpD;YAC7B,MAAM4D,QAAQR,GAAG,CAACR,IAAI;YACtB,IAAI,OAAOgB,UAAU,UAAU;gBAC7BtC,QAAQqD,IAAI,CAACf;gBACba,eAAe;gBACfC,gBAAgB;YAClB,OAAO,IAAI,OAAOd,UAAU,YAAY7H,SAAS6H,QAAQ;gBACvDtC,QAAQqD,IAAI,CAACjC,WAAWkB;gBACxBa,eAAe;gBACfC,gBAAgB;YAClB;QACF;QAEA,kDAAkD;QAClD,IAAID,gBAAgBC,eAAe;YACjC,MAAME,QAAiC;gBACrCC,MAAM;gBACNC,MAAMlC;gBACNR;gBACAb,GAAGD;YACL;YAEA0C,OAAOW,IAAI,CAACC;QACd;IACF;IAEA,OAAO;QAAEZ;QAAQ5B;IAAE;AACrB,EAAE;AAEF,OAAO,MAAM2C,kCAAkC,CAC7CC,OACAC,aACAjD,UACAF,cACAG;QAQE+C,eAA6BA,+BAAAA,wBAAAA,gBAE7BA,gBAA6BE,mBAsDTF,gBACCA,gBAgBMA,gBACpBA;IAhFT,MAAME,YAAYF,MAAM/D,IAAI,CAAC,EAAE;QAM7B+D,2BAEAA;IANF,2CAA2C;IAC3C,+BAA+B;IAC/B,+CAA+C;IAC/C,MAAMG,SAA+C7I,aACnD0I,CAAAA,6BAAAA,gBAAAA,MAAMxH,MAAM,cAAZwH,oCAAAA,cAAcI,WAAW,cAAzBJ,uCAAAA,6BAA6BA,iBAAAA,MAAMxH,MAAM,cAAZwH,sCAAAA,yBAAAA,eAAcK,QAAQ,cAAtBL,8CAAAA,gCAAAA,uBAAwBxH,MAAM,cAA9BwH,oDAAAA,8BAAgCnD,QAAQ,EACrEC,cACAkD,CAAAA,8BAAAA,iBAAAA,MAAMxH,MAAM,cAAZwH,qCAAAA,eAAcI,WAAW,cAAzBJ,wCAAAA,6BAA6BE,sBAAAA,iCAAAA,oBAAAA,UAAWI,MAAM,cAAjBJ,wCAAAA,kBAAmBC,MAAM,EACtDnD,UACAC;IAEF,MAAMsD,uBAAuD,CAAC;IAC9D,IAAIJ,QAAQ;YACVD;SAAAA,oBAAAA,UAAUM,MAAM,cAAhBN,wCAAAA,kBAAkB7D,OAAO,CAAC,CAACoE,OAAOzF;YAChC,MAAM4D,QAAQ8B,0BAA0BR,UAAUS,MAAM,EAAE3F;YAC1D,IAAInE,eAAe+H,UAAU,AAACA,QAAmB,GAAG;gBAClD;YACF;YAEA,MAAMgC,SAAS,GAAGH,OAAO;YACzB,0DAA0D;YAC1D,MAAM1D,QAAgBxF,aAAa4I,QAAQnF,OAAO4F,QAAQ5D,UAAUC;YAEpE,IAAI,CAACsD,oBAAoB,CAACK,OAAO,EAAE;gBACjCL,oBAAoB,CAACK,OAAO,GAAG;oBAC7BA;oBACA3E,MAAM2C;oBACN7B;gBACF;YACF,OAAO;gBACLwD,oBAAoB,CAACK,OAAO,CAAC3E,IAAI,IAAK2C;YACxC;QACF;IACF,OAAO;QACL,iDAAiD;QACjD,IAAIsB,UAAUM,MAAM,IAAIN,UAAUS,MAAM,EAAE;YACxC,MAAME,kBAAkBX,UAAUM,MAAM,CAAC7F,GAAG,CAAC,CAAC8F,OAAOzF,QAAW,CAAA;oBAC9DyF;oBACA7B,OAAO8B,0BAA0BR,UAAUS,MAAM,EAAE3F;oBACnDA;gBACF,CAAA;YACA,4BAA4B;YAC5B,MAAM8F,aAAaD,gBAAgB5F,MAAM,CAAC8F,CAAAA,OAAQ,CAAClK,eAAekK,KAAKnC,KAAK;YAC5E,2BAA2B;YAC3BkC,WAAWE,IAAI,CAAC,CAACC,GAAGC,IAAM,AAACA,EAAEtC,KAAK,GAAeqC,EAAErC,KAAK;YACxDkC,WAAWzE,OAAO,CAAC,CAAC0E,MAAMI;gBACxB,MAAMP,SAAS,GAAGG,KAAKN,KAAK,EAAE;gBAC9B,MAAM1D,QAAgBxF,aAAa4I,QAAQgB,WAAWP,QAAQ5D,UAAUC;gBACxE,IAAI,CAACsD,oBAAoB,CAACK,OAAO,EAAE;oBACjCL,oBAAoB,CAACK,OAAO,GAAG;wBAC7BA;wBACA3E,MAAM8E,KAAKnC,KAAK;wBAChB7B;oBACF;gBACF,OAAO;oBACLwD,oBAAoB,CAACK,OAAO,CAAC3E,IAAI,IAAK8E,KAAKnC,KAAK;gBAClD;YACF;QACF;IACF;QAEsBoB;IAAtB,MAAMoB,QAAgBpB,CAAAA,uBAAAA,iBAAAA,MAAMxH,MAAM,cAAZwH,qCAAAA,eAAcoB,KAAK,cAAnBpB,iCAAAA,sBAAuB;QACtBA;IAAvB,MAAMqB,SAAiBrB,CAAAA,wBAAAA,iBAAAA,MAAMxH,MAAM,cAAZwH,qCAAAA,eAAcqB,MAAM,cAApBrB,kCAAAA,uBAAwB;IAC/C,MAAMsB,aAAsBpB,UAAUqB,QAAQ,GAC1C,CAAC;QAAC;QAAS;QAAW;KAAgB,CAACxD,QAAQ,CAACmC,UAAUqB,QAAQ,IAClE;IACJ,MAAMC,wBAAgCF,aAAa,IAAI;IACvD,MAAMG,sBAA8B,KAAMH,CAAAA,aAAa,IAAI,EAAC;IAC5D,MAAMI,cAAsBxB,UAAUyB,IAAI,GACtCzB,UAAUyB,IAAI,GAAInF,CAAAA,KAAKnH,GAAG,CAAC+L,QAAQI,uBAAuBH,SAASI,uBAAuB,CAAA,IAC1FrL;IACJ,MAAM,EAAEsC,UAAU,EAAE,GAAGH,UAAUyH,MAAMxH,MAAM;IAE7C,OAAO;QACLyD,MAAM;YACJvD;YACAkJ,WAAWrD,OAAOoC,MAAM,CAACJ;QAC3B;QACAsB,YAAY5B,eAAeD,EAAAA,iBAAAA,MAAMxH,MAAM,cAAZwH,qCAAAA,eAAc8B,UAAU,MAAK;QACxDV,KAAK,GAAEpB,iBAAAA,MAAMxH,MAAM,cAAZwH,qCAAAA,eAAcoB,KAAK;QAC1BC;QACAK;QACAJ;QACAS,qBAAqB7B,UAAUqB,QAAQ,GAAG;YAAC;YAAW;SAAgB,CAACxD,QAAQ,CAACmC,UAAUqB,QAAQ,IAAI;QACtGS,cAAc;IAChB;AACF,EAAE;AAEF,OAAO,MAAMC,iCAAiC,CAC5CjC,OACAC,aACAjD,UACAF,cACAG,aACAiF;QAkGSlC,eACCA,gBAMgBmC;IAvG1B,MAAMC,mBAAiE,CAAC;IACxE,IAAItI,YAAY;IAChB,MAAMuI,uBAAuBrG,wBAAwBgE,MAAM/D,IAAI,EAAE+D,MAAMxH,MAAM;IAC7E,MAAM,EAAE8J,OAAO,EAAET,UAAU,EAAE,GAAGU,eAAevC,MAAM/D,IAAI,EAAE+D,MAAMxH,MAAM,EAAEyH;IACzE,IAAIuC,aAAsD9F;IAC1D,MAAMhD,kBAAkBH,mBAAmByG,MAAM/D,IAAI,CAAC,EAAE,EAAE+D,MAAMxH,MAAM;IACtE,IAAIqB,YAAY;IAChBmG,MAAM/D,IAAI,CAACI,OAAO,CAAC,CAACnD,QAA2BuJ;YAK3CzC,+BAAAA,wBAAAA,eAEA9G,gBAMA8G,gCAAAA,yBAAAA,gBAEA9G;QAdFsJ,aAAahL,iBAAiBwI,MAAMxH,MAAM,EAAEU,QAAQsJ;QACpD,MAAMnF,kBAAkBzG,YAAYsC,OAAOkE,CAAC,GAAG,2DAA2D;QAC1G,+CAA+C;QAC/C,MAAMsF,qBAAqBpL,cACzB0I,gBAAAA,MAAMxH,MAAM,cAAZwH,qCAAAA,yBAAAA,cAAcK,QAAQ,cAAtBL,8CAAAA,gCAAAA,uBAAwBxH,MAAM,cAA9BwH,oDAAAA,8BAAgCnD,QAAQ,EACxCC,eACA5D,iBAAAA,OAAOoH,MAAM,cAAbpH,qCAAAA,eAAe6D,KAAK,EACpBC,UACAC;QAEF,gDAAgD;QAChD,MAAM0F,sBAAsBrL,cAC1B0I,iBAAAA,MAAMxH,MAAM,cAAZwH,sCAAAA,0BAAAA,eAAcK,QAAQ,cAAtBL,+CAAAA,iCAAAA,wBAAwBxH,MAAM,cAA9BwH,qDAAAA,+BAAgCnD,QAAQ,EACxCC,eACA5D,eAAAA,OAAO0J,IAAI,cAAX1J,mCAAAA,aAAa6D,KAAK,EAClBC,UACAC;QAGF,MAAM9C,UAAUjB,OAAOkE,CAAC;QACxB,MAAMG,UAAU9G,YAAY0D;QAC5B,MAAMmD,YAAY3G,cAAcwD;QAChC,MAAMqD,YAAY9G,cAAcyD;QAChC,MAAM0I,gBAAgBC,iBAAiB5J;QACvC2J,cAAcxG,OAAO,CAAC,CAAC,CAAC0G,YAAYC,SAAS,EAAEC;YAC7C,MAAMC,eAAehK,OAAOkE,CAAC,CAAE+F,KAAK,CAACJ,YAAYC;YACjD,MAAMI,eAAelK,OAAOqD,CAAC,CAAE4G,KAAK,CAACJ,YAAYC;YAEhDE,aAAyB7G,OAAO,CAAC,CAACe,GAAoBiG;oBAY3BnK,gBAC+BA,iBAA7CA,sBAAAA;gBAZZ,IAAI,CAACkJ,gBAAgB,CAAChF,EAAE,EAAE;oBACxBgF,gBAAgB,CAAChF,EAAE,GAAG;wBACpBkG,YAAYnG,kBAAkBC,GAAGC,iBAAiBC,WAAWC,SAASC;wBACtEoE,WAAW,EAAE;wBACb2B,UAAU,EAAE;oBACd;gBACF;gBACA,MAAM3C,SAAiB0B,OAAO,CAACG,OAAO;gBACtC,+EAA+E;gBAC/E,MAAM1F,QAAQyF,aACVA,WACEjM,qBAAoB2C,iBAAAA,OAAOoH,MAAM,cAAbpH,qCAAAA,eAAe6D,KAAK,KAClC7D,kBAAAA,OAAOoH,MAAM,cAAbpH,uCAAAA,uBAAAA,gBAAe6D,KAAK,cAApB7D,2CAAD,AAACA,oBAAkC,CAACmK,SAAS,EAACnK,kBAAAA,OAAOoH,MAAM,cAAbpH,sCAAAA,gBAAe6D,KAAK,EAAanD,MAAM,CAAC,GACvF,KAENrC,aAAamL,oBAAoBW,QAAQzC,QAAQ5D,UAAUC;gBAC/D,MAAMuG,UAAUnM,WAAW6B,QAAQmK;gBACnC,MAAMrJ,OAAwBoJ,YAAY,CAACC,OAAO;gBAClD,MAAMI,mBAAmB1J,yBAAyBC,MAAMN;gBACxD,IAAIR,OAAO2G,IAAI,KAAK,OAAO;wBAIhBpI;oBAHT2K,gBAAgB,CAAChF,EAAE,CAACwE,SAAS,CAACjC,IAAI,CAAC;wBACjCiB;wBACA3E,MAAMjC;wBACN+C,OAAOtF,CAAAA,uBAAAA,IAAIsF,OAAO2G,IAAI,CAAC;4BAAEF;wBAAQ,GAAGG,UAAU,gBAAvClM,kCAAAA,uBAA6CsF;wBACpD0G;oBACF;oBACA,IAAI,OAAOzJ,SAAS,UAAU;wBAC5BF,YAAY0C,KAAKjH,GAAG,CAACuE,WAAWE;oBAClC;gBACF,OAAO,IAAId,OAAO2G,IAAI,KAAK,aAAa,CAAC,CAACqC,cAAc;wBAEjChJ;oBADrB,MAAM0K,YAAYrM,aAAaoL,qBAAqBF,QAAQ7B,QAAQ5D,UAAUC;oBAC9E,MAAM4G,cAAc,GAAC3K,eAAAA,OAAO4K,IAAI,cAAX5K,mCAAAA,aAAa6E,QAAQ,CAAC,WAAUgG,eAAe7K,OAAO0J,IAAI,IAAIlG;oBACnF,MAAMsH,cAAcC,eAAe/K;wBAK1BzB;oBAJT2K,gBAAgB,CAAChF,EAAE,CAACmG,QAAQ,CAAE5D,IAAI,CAAC;wBACjCiB,QAAQA,SAAUiC,CAAAA,cAAcjJ,MAAM,GAAG,IAAI,CAAC,CAAC,EAAEqJ,WAAW,GAAG,GAAG,EAAC;wBACnEe;wBACAzH,GAAGvC;wBACH+C,OAAOtF,CAAAA,wBAAAA,IAAImM,WAAWF,IAAI,CAAC;4BAAEF;wBAAQ,GAAGG,UAAU,gBAA3ClM,mCAAAA,wBAAiDsF;wBACxD8G,aAAa;4BACX,GAAIA,wBAAAA,yBAAAA,cAAe,CAAC,CAAC;4BACrBC,MAAM5K,OAAO4K,IAAI;wBACnB;wBACAI,oBAAoBtI,oBAAoB1C,QAAQ8G,MAAMxH,MAAM;wBAC5DiL;oBACF;oBACA,IAAI,CAAC7H,oBAAoB1C,QAAQ8G,MAAMxH,MAAM,KAAK,OAAOwB,SAAS,UAAU;wBAC1EF,YAAY0C,KAAKjH,GAAG,CAACuE,WAAWE;wBAChCH,YAAY2C,KAAKnH,GAAG,CAACwE,WAAWG;oBAClC;gBACF;gBACAF,YAAY0C,KAAKjH,GAAG,CAACuE,WAAWE;YAClC;QACF;IACF;IAEA,MAAMmI,WAAW5D,OAAOoC,MAAM,CAACyB;QAKrBpC;IAHV,OAAO;QACL/D,MAAMkG;QACNf,KAAK,GAAEpB,gBAAAA,MAAMxH,MAAM,cAAZwH,oCAAAA,cAAcoB,KAAK;QAC1BC,QAAQrB,CAAAA,wBAAAA,iBAAAA,MAAMxH,MAAM,cAAZwH,qCAAAA,eAAcqB,MAAM,cAApBrB,kCAAAA,uBAAwB;QAChCmE,UAAU;QACVrK;QACAD;QACAiK,MAAM;QACN,GAAGzB,oBAAoB;QACvB+B,iBAAiB,SAAOjC,aAAAA,QAAQ,CAAC,EAAE,cAAXA,iCAAAA,WAAamB,UAAU,MAAK;QACpDe,iBAAiB;QACjBC,WAAW;QACXzC;QACAG,cAAc;QACduC,iBAAiB;QACjBC,qBAAqB;QACrBC,wBAAwB;QACxB,GAAGlM,UAAUyH,MAAMxH,MAAM,CAAC;QAC1B,GAAGS,mBAAmB+G,MAAM/D,IAAI,CAAC,EAAE,EAAE+D,MAAMxH,MAAM,CAAC;QAClD,GAAGkB,eAAe;QAClB,GAAGgL,0BAA0B1E,MAAM/D,IAAI,EAAE+D,MAAMxH,MAAM,CAAC;QACtD,GAAGmM,YAAY3E,MAAM/D,IAAI,EAAE+D,MAAMxH,MAAM,CAAC;QACxC,GAAGmB,iBAAiBqG,MAAM/D,IAAI,CAAC,EAAE,EAAE+D,MAAMxH,MAAM,CAAC;QAChD,GAAGoM,iBAAiB5E,MAAM/D,IAAI,EAAE+D,MAAMxH,MAAM,CAAC;IAC/C;AACF,EAAE;AAEF,OAAO,MAAMqM,iCAAiC,CAC5C7E,OACAC,aACAjD,UACAF,cACAG;QA2FS6H,wBACCA,yBAKgBC;IA/F1B,iEAAiE;IACjE,IAAID,iBAAiB;QAAE,GAAG9E,KAAK;IAAC;IAEhC,yDAAyD;IACzD,MAAMgF,qBAAqBhF,MAAM/D,IAAI,CAACgJ,IAAI,CACxC,CAAC/L,SAA8BA,OAAO2G,IAAI,KAAK,SAAS7I,cAAckC,OAAOqD,CAAC;IAGhF,IAAIyI,oBAAoB;QACtB,oDAAoD;QACpD,MAAME,gBAAgBlF,MAAM/D,IAAI,CAC7BtB,GAAG,CAAC,CAACzB,QAA2B8B;YAC/B,IAAI9B,OAAO2G,IAAI,KAAK,SAAS7I,cAAckC,OAAOqD,CAAC,GAAG;gBACpD,gEAAgE;gBAChE,MAAM,EAAEyC,MAAM,EAAE,GAAGF,4BACjB5F,OAAOqD,CAAC,EACRhC,MAAMC,OAAO,CAACtB,OAAOkE,CAAC,IAAKlE,OAAOkE,CAAC,GAAgBV;gBAGrD,2EAA2E;gBAC3E,OAAOsC,OAAOrE,GAAG,CAAC,CAACiF,QAAoC,CAAA;wBACrD,GAAGA,KAAK;wBACR,2DAA2D;wBAC3DU,QAAQpH,OAAOoH,MAAM;oBACvB,CAAA;YACF;YACA,OAAO;gBAACpH;aAAO;QACjB,GACCiM,IAAI;QAEPL,iBAAiB;YACf,GAAG9E,KAAK;YACR/D,MAAMiJ;QACR;IACF;IACA,MAAM9C,mBAAgE,CAAC;IACvE,MAAMC,uBAAuBrG,wBAAwB8I,eAAe7I,IAAI,EAAE6I,eAAetM,MAAM,EAAE,GAAG;IACpG,MAAM,EAAE8J,OAAO,EAAET,UAAU,EAAE,GAAGU,eAAeuC,eAAe7I,IAAI,EAAE6I,eAAetM,MAAM,EAAEyH;IAE3F,IAAIuC,aAAsD9F;IAC1D,MAAMhD,kBAAkBH,mBAAmBuL,eAAe7I,IAAI,CAAC,EAAE,EAAE6I,eAAetM,MAAM;IACxFsM,eAAe7I,IAAI,CAACI,OAAO,CAAC,CAACnD,QAA2BuJ;YAIpDqC,wCAAAA,iCAAAA,wBAEA5L,gBAIDA;QATDsJ,aAAahL,iBAAiBsN,eAAetM,MAAM,EAAEU,QAAQsJ;QAC7D,2CAA2C;QAC3C,MAAMtF,kBAAkB5F,cACtBwN,yBAAAA,eAAetM,MAAM,cAArBsM,8CAAAA,kCAAAA,uBAAuBzE,QAAQ,cAA/ByE,uDAAAA,yCAAAA,gCAAiCtM,MAAM,cAAvCsM,6DAAAA,uCAAyCjI,QAAQ,EACjDC,eACA5D,iBAAAA,OAAOoH,MAAM,cAAbpH,qCAAAA,eAAe6D,KAAK,EACpBC,UACAC;SAED/D,YAAAA,OAAOkE,CAAC,cAARlE,gCAAD,AAACA,UAAsBmD,OAAO,CAAC,CAACe,GAAoBiG;gBACVnK;YAAxC,IAAIrC,eAAeuG,MAAMvG,gBAAeqC,YAAAA,OAAOqD,CAAC,cAARrD,gCAAAA,SAAU,CAACmK,OAAO,GAAG;gBAC3D;YACF;YACA,IAAI,CAACjB,gBAAgB,CAAChF,EAAE,EAAE;gBACxBgF,gBAAgB,CAAChF,EAAE,GAAG;oBAAE0C,MAAM1C,EAAEK,QAAQ;oBAAIvE,QAAQ,EAAE;gBAAC;YACzD;YACA,IAAIA,OAAO2G,IAAI,KAAK,OAAO;oBAKC3G,gBAC+BA,iBAA7CA,sBAAAA;gBALZ,MAAM0H,SAAiB0B,OAAO,CAACG,OAAO;gBACtC,+EAA+E;gBAC/E,MAAM1F,QAAQyF,aACVA,WACEjM,qBAAoB2C,iBAAAA,OAAOoH,MAAM,cAAbpH,qCAAAA,eAAe6D,KAAK,KAClC7D,kBAAAA,OAAOoH,MAAM,cAAbpH,uCAAAA,uBAAAA,gBAAe6D,KAAK,cAApB7D,2CAAD,AAACA,oBAAkC,CAACmK,SAAS,EAACnK,kBAAAA,OAAOoH,MAAM,cAAbpH,sCAAAA,gBAAe6D,KAAK,EAAanD,MAAM,CAAC,GACvF,KAENrC,aAAa2F,iBAAiBmG,QAAQzC,QAAQ5D,UAAUC;gBAC5D,MAAMuG,UAAUnM,WAAW6B,QAAQmK;gBAEnC,MAAMrJ,OAAed,OAAOqD,CAAC,AAAC,CAAC8G,OAAO;oBAM7B5L;gBAJT2K,gBAAgB,CAAChF,EAAE,CAAClE,MAAM,CAACyG,IAAI,CAAC;oBAC9B/B,KAAKgD;oBACL3E,MAAMjC;oBACNoL,kBAAkBhI;oBAClBL,OAAOtF,CAAAA,uBAAAA,IAAIsF,OAAO2G,IAAI,CAAC;wBAAEF;oBAAQ,GAAGG,UAAU,gBAAvClM,kCAAAA,uBAA6CsF;oBACpD6D;oBACAsD,oBAAoBtI,oBAAoB1C,QAAQ4L,eAAetM,MAAM;oBACrEiL,kBAAkB1J,yBAAyBC,MAAMN;gBACnD;YACF;QACF;IACF;IAEA,MAAMqL,WAAWxG,OAAOoC,MAAM,CAACyB;QAKrB0C;IAHV,OAAO;QACL7I,MAAM8I;QACN3D,KAAK,GAAE0D,yBAAAA,eAAetM,MAAM,cAArBsM,6CAAAA,uBAAuB1D,KAAK;QACnCC,QAAQyD,CAAAA,iCAAAA,0BAAAA,eAAetM,MAAM,cAArBsM,8CAAAA,wBAAuBzD,MAAM,cAA7ByD,2CAAAA,gCAAiC;QACzCX,UAAU;QACVL,MAAM;QACN,GAAGzB,oBAAoB;QACvBgC,iBAAiB;QACjBD,iBAAiB,SAAOW,aAAAA,QAAQ,CAAC,EAAE,cAAXA,iCAAAA,WAAajF,IAAI,MAAK;QAC9C+B;QACAG,cAAc;QACd,GAAGzJ,UAAUuM,eAAetM,MAAM,CAAC;QACnC,GAAGkM,0BAA0BI,eAAe7I,IAAI,EAAE6I,eAAetM,MAAM,CAAC;QACxE,GAAGmB,iBAAiBmL,eAAe7I,IAAI,CAAC,EAAE,EAAE6I,eAAetM,MAAM,CAAC;QAClE,GAAGS,mBAAmB6L,eAAe7I,IAAI,CAAC,EAAE,EAAE6I,eAAetM,MAAM,CAAC;QACpE,GAAGkB,eAAe;QAClB,GAAGiL,YAAYG,eAAe7I,IAAI,EAAE6I,eAAetM,MAAM,CAAC;QAC1D,GAAGoM,iBAAiBE,eAAe7I,IAAI,EAAE6I,eAAetM,MAAM,CAAC;IACjE;AACF,EAAE;AAEF,OAAO,MAAM6M,gCAAgC,CAC3CrF,OACAC,aACAjD,UACAF,cACAG;QAqFS+C,eACCA,gBAGgBsF;IAvF1B,MAAMA,UAAuC,EAAE;IAC/C,MAAM,EAAEhD,OAAO,EAAET,UAAU,EAAE,GAAGU,eAAevC,MAAM/D,IAAI,EAAE+D,MAAMxH,MAAM,EAAEyH;IACzE,IAAIuC,aAAsD9F;IAE1DsD,MAAM/D,IAAI,CAACI,OAAO,CAAC,CAACnD,QAA2BqM;YAS3CvF,+BAAAA,wBAAAA,eAEA9G,gBAmBgCA,eAAqBA,gBAAmBA;QA7B1E,IAAI,CAACA,OAAOkE,CAAC,EAAE;YACb;QACF;QAEAoF,aAAahL,iBAAiBwI,MAAMxH,MAAM,EAAEU,QAAQsJ;QAEpD,2CAA2C;QAC3C,MAAMtF,kBAAkB5F,cACtB0I,gBAAAA,MAAMxH,MAAM,cAAZwH,qCAAAA,yBAAAA,cAAcK,QAAQ,cAAtBL,8CAAAA,gCAAAA,uBAAwBxH,MAAM,cAA9BwH,oDAAAA,8BAAgCnD,QAAQ,EACxCC,eACA5D,iBAAAA,OAAOoH,MAAM,cAAbpH,qCAAAA,eAAe6D,KAAK,EACpBC,UACAC;QAEF,MAAM9C,UAA+B,EAAE;QACvC,MAAMmC,UAAoB,EAAE;QAC5BpD,OAAOkE,CAAC,CAACf,OAAO,CAAC,CAACmJ,MAAMxK;YACtB,MAAMhB,OAAO0G,0BAA0BxH,OAAOqD,CAAC,EAAEvB;YACjD,IAAInE,eAAe2O,SAAS3O,eAAemD,OAAO;gBAChD;YACF;YAEAG,QAAQwF,IAAI,CAAC6F;YACblJ,QAAQqD,IAAI,CAAC3F;QACf;QAEA,MAAMsD,YAAY3G,cAAcwD;QAChC,kFAAkF;QAClF,sFAAsF;QACtF,MAAMsL,QAAQC,WAAWvL,UAASjB,gBAAAA,OAAOyM,KAAK,cAAZzM,oCAAAA,cAAc0M,KAAK,GAAE1M,iBAAAA,OAAOyM,KAAK,cAAZzM,qCAAAA,eAAc2M,GAAG,GAAE3M,iBAAAA,OAAOyM,KAAK,cAAZzM,qCAAAA,eAAc4M,IAAI;QAC5F,MAAMC,QAAoBN,MAAM9K,GAAG,CAAC,IAAM,EAAE;QAC5C,IAAIqL,QAAQ;QAEZ7L,QAAQkC,OAAO,CAAC,CAACmJ,MAAMxK;YACrB,MAAMiL,SAASC,aAAaT,OAAOD,MAAMlI;YACzC,IAAI2I,WAAW,CAAC,GAAG;gBACjBF,KAAK,CAACE,OAAO,CAACtG,IAAI,CAACrD,OAAO,CAACtB,MAAM;YACnC;QACF;QAEA,MAAMuB,IAAIwJ,MAAMpL,GAAG,CAAC5F,CAAAA;YAClB,MAAMiF,OAAOmM,kBAAkBjN,OAAOkN,QAAQ,EAAErR;YAChDiR,SAAShM;YACT,OAAOA;QACT;QAEAyL,MAAMpJ,OAAO,CAAC,CAACtH,KAAKiG;gBAKQ9B,gBAC8BA,iBAA5CA,sBAAAA;YALZ,MAAM0H,SAAiB0B,OAAO,CAACiD,UAAU;YACzC,+EAA+E;YAC/E,MAAMxI,QAAQyF,aACVA,WACEjM,qBAAoB2C,iBAAAA,OAAOoH,MAAM,cAAbpH,qCAAAA,eAAe6D,KAAK,KAClC7D,kBAAAA,OAAOoH,MAAM,cAAbpH,uCAAAA,uBAAAA,gBAAe6D,KAAK,cAApB7D,2CAAD,AAACA,oBAAkC,CAAC8B,QAAQ,EAAC9B,kBAAAA,OAAOoH,MAAM,cAAbpH,sCAAAA,gBAAe6D,KAAK,EAAanD,MAAM,CAAC,GACtF,KAENrC,aAAa2F,iBAAiBlC,OAAO4F,QAAQ5D,UAAUC;YAC3D,MAAMuG,UAAUnM,WAAW6B,QAAQ8B;YACnC,MAAMhB,OAAOqM,kBACXnN,OAAOoN,QAAQ,EACf/J,CAAC,CAACvB,MAAM,EACRgL,OACA1I,YAAYvI,IAAI6E,MAAM,GAAG2M,WAAWxR;gBAO7B0C;YAJT6N,QAAQ3F,IAAI,CAAC;gBACXvC,GAAGE,YAAYvI,IAAIyR,IAAI,CAAC,QAAQC,aAAa1R;gBAC7CwH,GAAGvC;gBACH4G;gBACA7D,OAAOtF,CAAAA,uBAAAA,IAAIsF,OAAO2G,IAAI,CAAC;oBAAEF;gBAAQ,GAAGG,UAAU,gBAAvClM,kCAAAA,uBAA6CsF;gBACpD,GAAIO,YACA,CAAC,IACD;oBAAE8H,kBAAkB,CAAC,CAAC,EAAE,AAACrQ,IAA4B2R,EAAE,CAAC,GAAG,EAAE,AAAC3R,IAA4B4R,EAAE,CAAC,CAAC,CAAC;gBAAC,CAAC;YACvG;QACF;IACF;QAKU3G;IAHV,OAAO;QACL/D,MAAMqJ;QACNlE,KAAK,GAAEpB,gBAAAA,MAAMxH,MAAM,cAAZwH,oCAAAA,cAAcoB,KAAK;QAC1BC,QAAQrB,CAAAA,wBAAAA,iBAAAA,MAAMxH,MAAM,cAAZwH,qCAAAA,eAAcqB,MAAM,cAApBrB,kCAAAA,uBAAwB;QAChC8D,MAAM;QACNO,iBAAiB;QACjBD,iBAAiB,SAAOkB,YAAAA,OAAO,CAAC,EAAE,cAAVA,gCAAAA,UAAYlI,CAAC,MAAK;QAC1CwJ,aAAa;QACb/E;QACAG,cAAc;QACd,GAAGzJ,UAAUyH,MAAMxH,MAAM,CAAC;QAC1B,GAAGmB,iBAAiBqG,MAAM/D,IAAI,CAAC,EAAE,EAAE+D,MAAMxH,MAAM,CAAC;QAChD,GAAGkM,0BAA0B1E,MAAM/D,IAAI,EAAE+D,MAAMxH,MAAM,CAAC;IACxD;AACF,EAAE;AAEF,OAAO,MAAMqO,sCAAsC,CACjD7G,OACAC,aACAjD,UACAF,cACAG;IAEA,OAAO6J,uCACL9G,OACAC,aACA,QACAjD,UACAF,cACAG;AAEJ,EAAE;AAEF,OAAO,MAAM8J,sCAAsC,CACjD/G,OACAC,aACAjD,UACAF,cACAG;IAEA,OAAO6J,uCACL9G,OACAC,aACA,QACAjD,UACAF,cACAG;AAEJ,EAAE;AAEF,OAAO,MAAM+J,yCAAyC,CACpDhH,OACAC,aACAjD,UACAF,cACAG;IAEA,OAAO6J,uCACL9G,OACAC,aACA,WACAjD,UACAF,cACAG;AAEJ,EAAE;AAEF,MAAM6J,yCAAyC,CAC7C9G,OACAC,aACAgH,WACAjK,UACAF,cACAG;QAWY+C,cA2GHA,eACCA;IArHV,MAAMkH,mBAAmB;QACvB;QACA;QACA;QACA;QACA;QACA;QACA;QACA;KACD,CAACnJ,QAAQ,EAAEiC,eAAAA,MAAM/D,IAAI,CAAC,EAAE,cAAb+D,mCAAD,AAACA,aAA4B8D,IAAI;IAC5C,MAAMqD,cAAcF,cAAc;IAClC,MAAMG,iBAAiBH,cAAc;IACrC,MAAM5E,uBAAuBrG,wBAC3BgE,MAAM/D,IAAI,EACV+D,MAAMxH,MAAM,EACZ2O,cAAc,IAAIzK,WAClByK,cAAc,IAAIzK;IAEpB,IAAIoH,OAAe;IACnB,MAAM,EAAExB,OAAO,EAAET,UAAU,EAAE,GAAGU,eAAevC,MAAM/D,IAAI,EAAE+D,MAAMxH,MAAM,EAAEyH;IACzE,MAAMvG,kBAAkBH,mBAAmByG,MAAM/D,IAAI,CAAC,EAAE,EAAE+D,MAAMxH,MAAM;IACtE,MAAMoJ,YAA+B5B,MAAM/D,IAAI,CAC5CtB,GAAG,CAAC,CAACzB,QAA2B8B;YAE3B9B,cACEA,cACAA,gBACFA,eAGF8G,+BAAAA,wBAAAA,eAkBC9G;QAzBH,MAAMiH,SAAS+G,mBACXhO,CAAAA,mBAAAA,8BAAAA,eAAAA,OAAQ4K,IAAI,cAAZ5K,mCAAAA,aAAc6E,QAAQ,CAAC,YACrB7E,eAAAA,OAAO0J,IAAI,cAAX1J,mCAAAA,aAAa6D,KAAK,IAClB7D,iBAAAA,OAAOoH,MAAM,cAAbpH,qCAAAA,eAAe6D,KAAK,IACtB7D,gBAAAA,OAAO0J,IAAI,cAAX1J,oCAAAA,cAAa6D,KAAK;QACtB,2CAA2C;QAC3C,MAAMG,kBAAkB5F,cACtB0I,gBAAAA,MAAMxH,MAAM,cAAZwH,qCAAAA,yBAAAA,cAAcK,QAAQ,cAAtBL,8CAAAA,gCAAAA,uBAAwBxH,MAAM,cAA9BwH,oDAAAA,8BAAgCnD,QAAQ,EACxCC,cACAqD,QACAnD,UACAC;QAEF,MAAM9C,UAAUjB,OAAOkE,CAAC;QACxB,MAAME,YAAY3G,cAAcwD;QAChC,MAAMoD,UAAU9G,YAAY0D;QAC5B,MAAMqD,YAAY9G,cAAcyD;QAChC,MAAMkD,kBAAkBzG,YAAYsC,OAAOkE,CAAC,GAAG,2DAA2D;QAC1G,MAAMwD,SAAiB0B,OAAO,CAACtH,MAAM;QACrC,kEAAkE;QAClE,MAAMqM,cAAc9P,aAAa2F,iBAAiBlC,OAAO4F,QAAQ5D,UAAUC;QAC3E,MAAMqK,gBAAgBjQ,WAAW6B,QAAQ8B;QACzC8I,OAAO5K,OAAOqO,IAAI,KAAK,YAAY,YAAY;QAC/C,gFAAgF;QAChF,MAAM1D,cACJ,GAAC3K,gBAAAA,OAAO4K,IAAI,cAAX5K,oCAAAA,cAAa6E,QAAQ,CAAC,YAAW7E,OAAO2G,IAAI,KAAK,iBAAiBkE,eAAe7K,OAAO0J,IAAI,IAAIlG;QACnG,MAAMsH,cAAcC,eAAe/K;QAEnC,MAAM2J,gBAAgBC,iBAAiB5J;QACvC,OAAO2J,cAAclI,GAAG,CAAC,CAAC,CAACoI,YAAYC,SAAS,EAAEC;gBAGR/J,gBA2Bd8G,eACLA,iCAAAA,qBAAAA,gBACDA,kCAAAA,sBAAAA;YA/BpB,MAAMkD,eAAe/I,QAAQgJ,KAAK,CAACJ,YAAYC;YAC/C,MAAMI,eAAelK,OAAOqD,CAAC,CAAE4G,KAAK,CAACJ,YAAYC;YACjD,MAAMwE,cAAcjR,qBAAoB2C,iBAAAA,OAAOoH,MAAM,cAAbpH,qCAAAA,eAAe4M,IAAI,IACvD,AAAC5M,OAAOoH,MAAM,CAAEwF,IAAI,CAAc3C,KAAK,CAACJ,YAAYC,YACpD,EAAE;YACN,MAAMyE,aAAalN,MAAMC,OAAO,CAACtB,OAAON,IAAI,IAAIM,OAAON,IAAI,CAACuK,KAAK,CAACJ,YAAYC,YAAYtG;gBAgBjFjF;YAdT,OAAO;gBACLmJ;gBACAoD;gBACA/H,MAAMiH,aAAavI,GAAG,CAAC,CAACyC,GAAGlC;wBAGPhC,gBAEPA;2BAL6B;wBACxCkE,GAAGD,kBAAkBC,GAAGC,iBAAiBC,WAAWC,SAASC;wBAC7DjB,GAAG6G,YAAY,CAAClI,EAAE;wBAClB,GAAIX,MAAMC,OAAO,EAACtB,iBAAAA,OAAOoH,MAAM,cAAbpH,qCAAAA,eAAe4M,IAAI,IACjC;4BAAE4B,YAAYF,WAAW,CAACtM,EAAE;wBAAC,IAC7B,SAAOhC,kBAAAA,OAAOoH,MAAM,cAAbpH,sCAAAA,gBAAe4M,IAAI,MAAK,WAC/B;4BAAE4B,YAAYxO,OAAOoH,MAAM,CAACwF,IAAI;wBAAC,IACjC,CAAC,CAAC;wBACN,GAAI2B,aAAa;4BAAE7O,MAAM6O,UAAU,CAACvM,EAAE;wBAAC,IAAI,CAAC,CAAC;wBAC7CuI,kBAAkB1J,yBAAyBqJ,YAAY,CAAClI,EAAE,EAAYxB;oBACxE;;gBACAqD,OAAOtF,CAAAA,uBAAAA,IAAI4P,aAAa3D,IAAI,CAAC;oBAAEF,SAAS8D;gBAAc,GAAG3D,UAAU,gBAA5DlM,kCAAAA,uBAAkE4P;gBACzExD,aAAa;oBACX,GAAIA,wBAAAA,yBAAAA,cAAe,CAAC,CAAC;oBACrBC,MAAM5K,OAAO2G,IAAI,KAAK,iBAAiB3G,OAAO4K,IAAI,GAAG;oBACrD,sGAAsG;oBACtG,sDAAsD;oBACtD,GAAI5K,OAAO2G,IAAI,KAAK,iBAChB;wBACE8H,aAAa,GAAG3H,gBAAAA,MAAMxH,MAAM,cAAZwH,oCAAD,AAACA,cAA0D4H,cAAc;wBACxFC,SAAS,GAAE7H,iBAAAA,MAAMxH,MAAM,cAAZwH,sCAAAA,sBAAAA,eAAc8H,KAAK,cAAnB9H,2CAAAA,kCAAAA,oBAAqB+H,WAAW,cAAhC/H,sDAAAA,gCAAkC6H,SAAS;wBACtDG,QAAQ,GAAEhI,iBAAAA,MAAMxH,MAAM,cAAZwH,sCAAAA,uBAAAA,eAAc8H,KAAK,cAAnB9H,4CAAAA,mCAAAA,qBAAqB+H,WAAW,cAAhC/H,uDAAAA,iCAAkCgI,QAAQ;wBACpDC,WAAW,AAAC/O,OAAqCgP,WAAW,GACxD,AAAChP,OAAqCgP,WAAW,GACjD,CAAC;oBACP,IACA,CAAC,CAAC;gBACR;gBACAhE,oBAAoBtI,oBAAoB1C,QAAQ8G,MAAMxH,MAAM;YAC9D;QACF;IACF,GACC2M,IAAI;IAEP,MAAMgD,UAAUxO,iBAAiBqG,MAAM/D,IAAI,CAAC,EAAE,EAAE+D,MAAMxH,MAAM;IAC5D,IAAI2P,QAAQtO,SAAS,KAAK6C,aAAayL,QAAQrO,SAAS,KAAK4C,WAAW;QACtE,MAAM0L,gBAAgBlS,qBAAqB0L;QAC3CuG,QAAQtO,SAAS,GAAGuO,cAAcC,UAAU;QAC5CF,QAAQrO,SAAS,GAAGsO,cAAcE,QAAQ;IAC5C;IACA,MAAMC,gBAAgB3G,UAAU4G,MAAM,CAAC,CAACxC,OAAOyC,kBAAoBzC,QAAQyC,gBAAgBxM,IAAI,CAACrC,MAAM,EAAE;IAExG,MAAM8O,aAAyB;QAC7BC,eAAe/G;IACjB;IAEA,MAAMgH,oBAAgC;QACpCC,kBAAkBjH;IACpB;QAMU5B;IAJV,MAAM8I,cAAc;QAClBC,qBAAqB;QACrB,GAAG1G,oBAAoB;QACvBjB,KAAK,GAAEpB,gBAAAA,MAAMxH,MAAM,cAAZwH,oCAAAA,cAAcoB,KAAK;QAC1BC,QAAQrB,CAAAA,wBAAAA,iBAAAA,MAAMxH,MAAM,cAAZwH,qCAAAA,eAAcqB,MAAM,cAApBrB,kCAAAA,uBAAwB;QAChCqE,iBAAiB;QACjBxC;QACAmH,QAAQ;QACRC,mBAAmBV,gBAAgB;QACnC,GAAGhQ,UAAUyH,MAAMxH,MAAM,CAAC;QAC1B,GAAGS,mBAAmB+G,MAAM/D,IAAI,CAAC,EAAE,EAAE+D,MAAMxH,MAAM,CAAC;QAClD,GAAGkB,eAAe;QAClB,GAAGwP,sBAAsBlJ,MAAM/D,IAAI,EAAE+D,MAAMxH,MAAM,CAAC;QAClD,GAAGoM,iBAAiB5E,MAAM/D,IAAI,EAAE+D,MAAMxH,MAAM,CAAC;IAC/C;IAEA,IAAI2O,aAAa;QACf,OAAO;YACLlL,MAAMyM;YACN5E;YACA,GAAGgF,WAAW;QAChB;IACF,OAAO;QACL,OAAO;YACL7M,MAAMmL,iBAAiBwB,oBAAoBF;YAC3CS,cAAc;YACd,GAAGL,WAAW;YACd,GAAGX,OAAO;YACV,GAAIf,iBACA;gBACE3C,wBAAwB;gBACxB,GAAGC,0BAA0B1E,MAAM/D,IAAI,EAAE+D,MAAMxH,MAAM,CAAC;YACxD,IACA,CAAC,CAAC;QACR;IACF;AACF;AAEA,OAAO,MAAM4Q,kDAAkD,CAC7DpJ,OACAC,aACAjD,UACAF,cACAG;QA2C4B+C,eACLA,sBAAAA,gBACCA,uBAAAA,gBAUbA,sBAAAA,gBACHA,uBAAAA,gBACAA,4BAAAA,uBAAAA,gBAICA;IA3DT,MAAM,EAAEsC,OAAO,EAAET,UAAU,EAAE,GAAGU,eAAevC,MAAM/D,IAAI,EAAE+D,MAAMxH,MAAM,EAAEyH;IACzE,IAAIuC,aAAsD9F;IAC1D,MAAMkF,YAAmD5B,MAAM/D,IAAI,CAChEtB,GAAG,CAAC,CAACzB,QAA2B8B;YAI7BgF,+BAAAA,wBAAAA,eAEA9G;QALFsJ,aAAahL,iBAAiBwI,MAAMxH,MAAM,EAAEU,QAAQsJ;QACpD,2CAA2C;QAC3C,MAAMtF,kBAAkB5F,cACtB0I,gBAAAA,MAAMxH,MAAM,cAAZwH,qCAAAA,yBAAAA,cAAcK,QAAQ,cAAtBL,8CAAAA,gCAAAA,uBAAwBxH,MAAM,cAA9BwH,oDAAAA,8BAAgCnD,QAAQ,EACxCC,eACA5D,iBAAAA,OAAOoH,MAAM,cAAbpH,qCAAAA,eAAe6D,KAAK,EACpBC,UACAC;QAEF,MAAM2D,SAAS0B,OAAO,CAACtH,MAAM;QAC7B,OAAO,AAAC9B,OAAOqD,CAAC,CACb5B,GAAG,CAAC,CAAC0O,QAAQnO;gBACOhC,WAOOA,gBAC0BA,iBAAxCA,sBAAAA;YARZ,IAAIrC,gBAAeqC,YAAAA,OAAOkE,CAAC,cAARlE,gCAAAA,SAAU,CAACgC,EAAE,KAAKrE,eAAewS,SAAS;gBAC3D,OAAO;YACT;YAEA,+EAA+E;YAC/E,MAAMtM,QAAQyF,aACVA,WACEjM,qBAAoB2C,iBAAAA,OAAOoH,MAAM,cAAbpH,qCAAAA,eAAe6D,KAAK,KAClC7D,kBAAAA,OAAOoH,MAAM,cAAbpH,uCAAAA,uBAAAA,gBAAe6D,KAAK,cAApB7D,2CAAD,AAACA,oBAAkC,CAACgC,IAAI,EAAChC,kBAAAA,OAAOoH,MAAM,cAAbpH,sCAAAA,gBAAe6D,KAAK,EAAanD,MAAM,CAAC,GAClF,KAENrC,aAAa2F,iBAAiBhC,GAAG0F,QAAQ5D,UAAUC;YACvD,MAAMuG,UAAUnM,WAAW6B,QAAQgC;gBAM1BzD;YAJT,OAAO;gBACL2F,GAAGlE,OAAOkE,CAAC,AAAC,CAAClC,EAAE;gBACfqB,GAAG8M;gBACHzI;gBACA7D,OAAOtF,CAAAA,uBAAAA,IAAIsF,OAAO2G,IAAI,CAAC;oBAAEF;gBAAQ,GAAGG,UAAU,gBAAvClM,kCAAAA,uBAA6CsF;YACtD;QACF,GACC9B,MAAM,CAACqO,CAAAA,QAASA,UAAU;IAC/B,GACCnE,IAAI;QAEqBnF;IAA5B,MAAMuJ,cAAsBvJ,CAAAA,wBAAAA,gBAAAA,MAAMxH,MAAM,cAAZwH,oCAAAA,cAAcqB,MAAM,cAApBrB,kCAAAA,uBAAwB;QAC7BA;IAAvB,MAAMwJ,SAAiBxJ,CAAAA,0BAAAA,iBAAAA,MAAMxH,MAAM,cAAZwH,sCAAAA,uBAAAA,eAAcwJ,MAAM,cAApBxJ,2CAAAA,qBAAsByJ,CAAC,cAAvBzJ,oCAAAA,yBAA2B;QAC1BA;IAAxB,MAAM0J,UAAkB1J,CAAAA,4BAAAA,iBAAAA,MAAMxH,MAAM,cAAZwH,sCAAAA,wBAAAA,eAAcwJ,MAAM,cAApBxJ,4CAAAA,sBAAsB2J,GAAG,cAAzB3J,sCAAAA,2BAA6B;IACrD,MAAM4J,kBAA0BL,cAAcC,SAASE;IACvD,MAAMG,eAAe,IAAItK,IAAIqC,UAAUjH,GAAG,CAACmP,CAAAA,IAAKA,EAAEvN,CAAC,GAAGuJ,IAAI,IAAI;IAC9D,MAAMiE,gBAAgB;IACtB,MAAMC,YAAY,IAAK,CAAA,IAAID,gBAAgBF,YAAW;IACtD,MAAMI,YAAYL,kBAAmBC,CAAAA,eAAgB,CAAA,IAAIG,SAAQ,CAAC;IAElE,OAAO;QACL/N,MAAM2F;QACNnF,qBACE,SAAOuD,iBAAAA,MAAMxH,MAAM,cAAZwH,sCAAAA,uBAAAA,eAAcnE,MAAM,cAApBmE,2CAAAA,qBAAsBrH,KAAK,MAAK,YACnCqH,iBAAAA,MAAMxH,MAAM,cAAZwH,sCAAAA,wBAAAA,eAAcnE,MAAM,cAApBmE,4CAAAA,sBAAsBrH,KAAK,GAC3BqH,EAAAA,iBAAAA,MAAMxH,MAAM,cAAZwH,sCAAAA,wBAAAA,eAAcnE,MAAM,cAApBmE,6CAAAA,6BAAAA,sBAAsBrH,KAAK,cAA3BqH,iDAAAA,2BAA6BpH,IAAI,KAAI;QAC3CqR;QACA1F,iBAAiB;QACjBlD,QAAQkI;QACRnI,KAAK,GAAEpB,iBAAAA,MAAMxH,MAAM,cAAZwH,qCAAAA,eAAcoB,KAAK;QAC1BiD,iBAAiB;QACjBG,qBAAqB;QACrBC,wBAAwB;QACxB5C;QACAG,cAAc;QACd,GAAGzJ,UAAUyH,MAAMxH,MAAM,CAAC;QAC1B,GAAGkM,0BAA0B1E,MAAM/D,IAAI,EAAE+D,MAAMxH,MAAM,CAAC;QACtD,GAAGmM,YAAY3E,MAAM/D,IAAI,EAAE+D,MAAMxH,MAAM,EAAE,KAAK;QAC9C,GAAGoM,iBAAiB5E,MAAM/D,IAAI,EAAE+D,MAAMxH,MAAM,CAAC;IAC/C;AACF,EAAE;AAEF,OAAO,MAAM0R,uCAAuC,CAClDlK,OACAC,aACAjD,UACAF,cACAG;QAyDU+C,eACDA;IAxDT,MAAM,EAAEsC,OAAO,EAAET,UAAU,EAAE,GAAGU,eAAevC,MAAM/D,IAAI,EAAE+D,MAAMxH,MAAM,EAAEyH;IACzE,IAAIuC,aAAsD9F;IAC1D,MAAMkF,YAAmC5B,MAAM/D,IAAI,CAChDtB,GAAG,CAAC,CAACzB,QAA2B8B;YAK7BgF,+BAAAA,wBAAAA,eAEA9G,gBAKc8G,qBAAAA;QAXhBwC,aAAahL,iBAAiBwI,MAAMxH,MAAM,EAAEU,QAAQsJ;QAEpD,2CAA2C;QAC3C,MAAMtF,kBAAkB5F,cACtB0I,gBAAAA,MAAMxH,MAAM,cAAZwH,qCAAAA,yBAAAA,cAAcK,QAAQ,cAAtBL,8CAAAA,gCAAAA,uBAAwBxH,MAAM,cAA9BwH,oDAAAA,8BAAgCnD,QAAQ,EACxCC,eACA5D,iBAAAA,OAAOoH,MAAM,cAAbpH,qCAAAA,eAAe6D,KAAK,EACpBC,UACAC;QAEF,MAAM2D,SAAS0B,OAAO,CAACtH,MAAM;QAC7B,MAAMuC,UAAUyC,EAAAA,iBAAAA,MAAMxH,MAAM,cAAZwH,sCAAAA,sBAAAA,eAAclH,KAAK,cAAnBkH,0CAAAA,oBAAqBH,IAAI,MAAK,UAAUpJ,YAAYyC,OAAOkE,CAAC;QAC5E,8DAA8D;QAC9D,MAAM+M,wBAAwB,CAACvL;YAC7B,OAAO/H,eAAe+H,SAAS,IAAIrB,UAAU,CAAC6M,eAAexL,SAAS,CAACA;QACzE;QAEA,OAAO,AAAC1F,OAAOqD,CAAC,CACb5B,GAAG,CAAC,CAACX,MAAMkB;gBAOgBhC,gBAC0BA,iBAAxCA,sBAAAA,iBAKuBA,cACAA;YAbnC,IAAIrC,eAAemD,OAAO;gBACxB,OAAO;YACT;YACA,+EAA+E;YAC/E,MAAM+C,QAAQyF,aACVA,WACEjM,qBAAoB2C,iBAAAA,OAAOoH,MAAM,cAAbpH,qCAAAA,eAAe6D,KAAK,KAClC7D,kBAAAA,OAAOoH,MAAM,cAAbpH,uCAAAA,uBAAAA,gBAAe6D,KAAK,cAApB7D,2CAAD,AAACA,oBAAkC,CAACgC,IAAI,EAAChC,kBAAAA,OAAOoH,MAAM,cAAbpH,sCAAAA,gBAAe6D,KAAK,EAAanD,MAAM,CAAC,GAClF,KAENrC,aAAa2F,iBAAiBhC,GAAG0F,QAAQ5D,UAAUC;YACvD,MAAMuG,UAAUnM,WAAW6B,QAAQgC;YACnC,MAAMmP,OAAOF,uBAAsBjR,eAAAA,OAAOmR,IAAI,cAAXnR,mCAAAA,YAAa,CAACgC,EAAE;YACnD,MAAMsK,OAAO2E,uBAAsBjR,YAAAA,OAAOkE,CAAC,cAARlE,gCAAAA,SAAU,CAACgC,EAAE;gBASvCzD;YAPT,OAAO;gBACL2F,GAAG;oBACDwI,OAAOrI,UAAU,IAAIlD,KAAKgQ,QAAQA;oBAClCxE,KAAKtI,UAAU,IAAIlD,KAAKgQ,OAAO7E,QAAQ6E,OAAO7E;gBAChD;gBACAjJ,GAAGvC;gBACH4G;gBACA7D,OAAOtF,CAAAA,uBAAAA,IAAIsF,OAAO2G,IAAI,CAAC;oBAAEF;gBAAQ,GAAGG,UAAU,gBAAvClM,kCAAAA,uBAA6CsF;YACtD;QACF,GACC9B,MAAM,CAACqO,CAAAA,QAASA,UAAU;IAC/B,GACCnE,IAAI;QAKGnF;IAHV,OAAO;QACL/D,MAAM2F;QACN2C,iBAAiB;QACjBlD,QAAQrB,CAAAA,wBAAAA,gBAAAA,MAAMxH,MAAM,cAAZwH,oCAAAA,cAAcqB,MAAM,cAApBrB,kCAAAA,uBAAwB;QAChCoB,KAAK,GAAEpB,iBAAAA,MAAMxH,MAAM,cAAZwH,qCAAAA,eAAcoB,KAAK;QAC1BiD,iBAAiB;QACjBxC;QACA2C,qBAAqB;QACrBC,wBAAwB;QACxBzC,cAAc;QACdgH,QAAQ;QACR,GAAGzQ,UAAUyH,MAAMxH,MAAM,CAAC;QAC1B,GAAGkM,0BAA0B1E,MAAM/D,IAAI,EAAE+D,MAAMxH,MAAM,CAAC;QACtD,GAAGmM,YAAY3E,MAAM/D,IAAI,EAAE+D,MAAMxH,MAAM,EAAE,KAAK;QAC9C,GAAGoM,iBAAiB5E,MAAM/D,IAAI,EAAE+D,MAAMxH,MAAM,CAAC;IAC/C;AACF,EAAE;AAEF,OAAO,MAAM8R,oCAAoC,CAC/CtK,OACAC,aACAjD,UACAF,cACAG;QA0GE+C,eACAA,yBAAAA,gBACAA,+BAAAA,wBAAAA,gBACqCA,0CAAAA,yCAAAA,6BAAAA,yBAAAA,gBACrCA,sCAAAA,qCAAAA,8BAAAA,yBAAAA,gBAoCOA,gBACCA;IAjJV,MAAME,YAAYF,MAAM/D,IAAI,CAAC,EAAE;IAC/B,MAAMsO,oBAA6C,EAAE;IACrD,IAAIC,OAAOC,OAAOC,iBAAiB;IACnC,IAAIC,OAAOF,OAAOG,iBAAiB;IAEnC,IAAI1K,UAAUL,IAAI,KAAK,eAAe;YAIpCK,cAakCA,kBAAwBA,mBAAsBA,mBAC9CA,kBAAwBA,mBAAsBA;QAjBhF,MAAM/F,UAA+B,EAAE;QACvC,MAAMmC,UAA+B,EAAE;QACvC,MAAMuO,UAAoB,EAAE;SAC5B3K,eAAAA,UAAU9C,CAAC,cAAX8C,mCAAAA,aAAa7D,OAAO,CAAC,CAACmJ,MAAMxK;gBAEiBkF;YAD3C,MAAM4K,OAAOpK,0BAA0BR,UAAU6K,CAAC,EAAE/P;YACpD,IAAInE,eAAe2O,SAAS3O,gBAAeqJ,eAAAA,UAAU3D,CAAC,cAAX2D,mCAAAA,YAAa,CAAClF,MAAM,KAAKnE,eAAeiU,OAAO;gBACxF;YACF;YAEA3Q,QAAQwF,IAAI,CAAC6F;YACblJ,QAAQqD,IAAI,CAACO,UAAU3D,CAAC,AAAC,CAACvB,MAAM;YAChC6P,QAAQlL,IAAI,CAACmL;QACf;QAEA,MAAMxN,YAAY3G,cAAcwD;QAChC,MAAM6Q,YAAYrU,cAAc2F;QAChC,MAAMmJ,QAAQC,WAAWvL,UAAS+F,mBAAAA,UAAUyF,KAAK,cAAfzF,uCAAAA,iBAAiB0F,KAAK,GAAE1F,oBAAAA,UAAUyF,KAAK,cAAfzF,wCAAAA,kBAAiB2F,GAAG,GAAE3F,oBAAAA,UAAUyF,KAAK,cAAfzF,wCAAAA,kBAAiB4F,IAAI;QACrG,MAAMC,QAAQL,WAAWpJ,UAAS4D,mBAAAA,UAAU+K,KAAK,cAAf/K,uCAAAA,iBAAiB0F,KAAK,GAAE1F,oBAAAA,UAAU+K,KAAK,cAAf/K,wCAAAA,kBAAiB2F,GAAG,GAAE3F,oBAAAA,UAAU+K,KAAK,cAAf/K,wCAAAA,kBAAiB4F,IAAI;QACrG,MAAMoF,QAAsBnF,MAAMpL,GAAG,CAAC,IAAM8K,MAAM9K,GAAG,CAAC,IAAM,EAAE;QAC9D,IAAIqL,QAAQ;QAEZ7L,QAAQkC,OAAO,CAAC,CAACmJ,MAAMxK;YACrB,MAAMmQ,UAAUjF,aAAaT,OAAOD,MAAMlI;YAC1C,MAAM8N,UAAUlF,aAAaH,OAAOzJ,OAAO,CAACtB,MAAM,EAAEgQ;YAEpD,IAAIG,YAAY,CAAC,KAAKC,YAAY,CAAC,GAAG;gBACpCF,KAAK,CAACE,QAAQ,CAACD,QAAQ,CAACxL,IAAI,CAACkL,OAAO,CAAC7P,MAAM;YAC7C;QACF;QAEA,MAAM+P,IAAIG,MAAMvQ,GAAG,CAAC0Q,CAAAA;YAClB,OAAOA,IAAI1Q,GAAG,CAAC5F,CAAAA;gBACb,MAAM+V,OAAO3E,kBAAkBjG,UAAUkG,QAAQ,EAAErR;gBACnDiR,SAAS8E;gBACT,OAAOA;YACT;QACF;QAEArF,MAAMpJ,OAAO,CAAC,CAACiP,MAAMC;YACnBxF,MAAM1J,OAAO,CAAC,CAACmP,MAAMC;gBACnB,MAAMX,OAAOzE,kBACXnG,UAAUoG,QAAQ,EAClByE,CAAC,CAACU,KAAK,CAACF,KAAK,EACbvF,OACA1I,YAAYgO,KAAK1R,MAAM,GAAG2M,WAAW+E,OACrCN,YAAYQ,KAAK5R,MAAM,GAAG2M,WAAWiF;gBAGvCjB,kBAAkB5K,IAAI,CAAC;oBACrBvC,GAAGE,YAAYgO,KAAK9E,IAAI,CAAC,QAAQC,aAAa6E;oBAC9C/O,GAAGyO,YAAYQ,KAAKhF,IAAI,CAAC,QAAQC,aAAa+E;oBAC9C5M,OAAOkM;oBACPY,UAAUZ;gBACZ;gBAEA,IAAI,OAAOA,SAAS,UAAU;oBAC5BN,OAAOhO,KAAKnH,GAAG,CAACmV,MAAMM;oBACtBH,OAAOnO,KAAKjH,GAAG,CAACoV,MAAMG;gBACxB;YACF;QACF;IACF,OAAO;YACJ5K;SAAAA,gBAAAA,UAAU9C,CAAC,cAAX8C,oCAAD,AAACA,cAAyB7D,OAAO,CAAC,CAACmJ,MAAM+F;gBACvC,8DAA8D;YAC9DrL;aAAAA,eAAAA,UAAU3D,CAAC,cAAX2D,mCAAAA,aAAa7D,OAAO,CAAC,CAACrC,MAAWyR;oBAClB,mBAACvL,cAGTF,qBAAAA,eACAA,qBAAAA;gBAJL,MAAM8K,QAAQ5K,eAAAA,UAAU6K,CAAC,cAAX7K,oCAAD,oBAAA,AAACA,YAA4B,CAACuL,KAAK,cAAnC,wCAAA,iBAAqC,CAACF,KAAK;gBAExDhB,kBAAkB5K,IAAI,CAAC;oBACrBvC,GAAG4C,EAAAA,gBAAAA,MAAMxH,MAAM,cAAZwH,qCAAAA,sBAAAA,cAAclH,KAAK,cAAnBkH,0CAAAA,oBAAqBH,IAAI,MAAK,SAAU2F,OAAgBA,iBAAAA,kBAAAA,OAAQ;oBACnEjJ,GAAGyD,EAAAA,iBAAAA,MAAMxH,MAAM,cAAZwH,sCAAAA,sBAAAA,eAAchH,KAAK,cAAnBgH,0CAAAA,oBAAqBH,IAAI,MAAK,SAAU7F,OAAgBA;oBAC3D4E,OAAOkM;oBACPY,UAAUZ;gBACZ;gBAEA,IAAI,OAAOA,SAAS,UAAU;oBAC5BN,OAAOhO,KAAKnH,GAAG,CAACmV,MAAMM;oBACtBH,OAAOnO,KAAKjH,GAAG,CAACoV,MAAMG;gBACxB;YACF;QACF;IACF;QAGU5K;IADV,MAAMyL,cAAgC;QACpC/K,QAAQV,CAAAA,kBAAAA,UAAUJ,IAAI,cAAdI,6BAAAA,kBAAkB;QAC1BjE,MAAMsO;QACN3L,OAAO;IACT;IAEA,gDAAgD;IAChD,MAAMgN,gBAAgB;QAACpB;QAAOG,CAAAA,OAAOH,IAAG,IAAK;QAAGG;KAAK;IACrD,MAAMkB,eAAe;QACnB7V,kBAAkBD,eAAe+V,MAAM;QACvC9V,kBAAkBD,eAAegW,MAAM;QACvC/V,kBAAkBD,eAAeiW,MAAM;KACxC;QAGC9L,uBAAAA,MAAAA,OAAAA,OAAAA;IADF,IAAI+L,aACF/L,CAAAA,QAAAA,CAAAA,QAAAA,CAAAA,QAAAA,CAAAA,OAAAA,CAAAA,wBAAAA,sBAAAA,gCAAAA,UAAW+L,UAAU,cAArB/L,mCAAAA,yBACAF,gBAAAA,MAAMxH,MAAM,cAAZwH,oCAAAA,cAAciM,UAAU,cADxB/L,kBAAAA,QAEAF,iBAAAA,MAAMxH,MAAM,cAAZwH,sCAAAA,0BAAAA,eAAckM,SAAS,cAAvBlM,8CAAAA,wBAAyBiM,UAAU,cAFnC/L,mBAAAA,SAGAF,iBAAAA,MAAMxH,MAAM,cAAZwH,sCAAAA,yBAAAA,eAAcK,QAAQ,cAAtBL,8CAAAA,gCAAAA,uBAAwBxH,MAAM,cAA9BwH,oDAAAA,8BAAgCiM,UAAU,cAH1C/L,mBAAAA,QAICA,UAAUL,IAAI,KAAK,mBAAiBG,iBAAAA,MAAMxH,MAAM,cAAZwH,sCAAAA,0BAAAA,eAAcK,QAAQ,cAAtBL,+CAAAA,8BAAAA,wBAAwB/D,IAAI,cAA5B+D,mDAAAA,0CAAAA,4BAA8BmM,WAAW,cAAzCnM,+DAAAA,2CAAAA,uCAA2C,CAAC,EAAE,cAA9CA,+DAAAA,yCAAgDiM,UAAU,eAJ/F/L,mBAAAA,SAKAF,iBAAAA,MAAMxH,MAAM,cAAZwH,sCAAAA,0BAAAA,eAAcK,QAAQ,cAAtBL,+CAAAA,+BAAAA,wBAAwB/D,IAAI,cAA5B+D,oDAAAA,sCAAAA,6BAA8BoM,OAAO,cAArCpM,2DAAAA,uCAAAA,mCAAuC,CAAC,EAAE,cAA1CA,2DAAAA,qCAA4CiM,UAAU;IAExD,4FAA4F;IAC5F,IACEA,cACA,OAAOA,eAAe,YACrB,CAAA,eAAeA,cAAc,gBAAgBA,cAAc,qBAAqBA,UAAS,GAC1F;QACA,MAAMI,cAAc7B,OAAO,KAAKG,OAAO,GAAG,+CAA+C;QACzF,MAAM2B,eAAe9B,QAAQ,GAAG,4BAA4B;QAC5D,MAAM+B,oBAAoB5B,QAAQ,GAAG,4BAA4B;QAEjE,IAAI0B,aAAa;YACfJ,aAAaA,uBAAAA,iCAAAA,WAAYO,SAAS;QACpC,OAAO,IAAIF,cAAc;YACvBL,aAAaA,uBAAAA,iCAAAA,WAAYQ,UAAU;QACrC,OAAO,IAAIF,mBAAmB;YAC5BN,aAAaA,uBAAAA,iCAAAA,WAAYS,eAAe;QAC1C;IACF;IAEA,MAAMC,4BAAsCpS,MAAMC,OAAO,CAACyR,cACtD,AAACA,WAAuCtR,GAAG,CAACiS,CAAAA,MAAOA,GAAG,CAAC,EAAE,GAAIjC,CAAAA,OAAOH,IAAG,IAAKA,QAC5EoB;IAEJ,MAAMiB,2BAAqCtS,MAAMC,OAAO,CAACyR,cACrD,AAACA,WAAuCtR,GAAG,CAACiS,CAAAA,MAAOA,GAAG,CAAC,EAAE,IACzDf;QAUM7L;IARV,OAAO;QACL/D,MAAM;YAAC0P;SAAY;QACnBgB;QACAE;QACAhL,YAAY;QACZ0C,iBAAiB;QACjBuI,WAAW;QACX1L,KAAK,GAAEpB,iBAAAA,MAAMxH,MAAM,cAAZwH,qCAAAA,eAAcoB,KAAK;QAC1BC,QAAQrB,CAAAA,wBAAAA,iBAAAA,MAAMxH,MAAM,cAAZwH,qCAAAA,eAAcqB,MAAM,cAApBrB,kCAAAA,uBAAwB;QAChCqE,iBAAiB;QACjBG,qBAAqB;QACrBC,wBAAwB;QACxBL,iBAAiB;QACjB,GAAG7L,UAAUyH,MAAMxH,MAAM,CAAC;QAC1B,GAAGkM,0BAA0B;YAACxE;SAAU,EAAEF,MAAMxH,MAAM,CAAC;QACvD,GAAGoM,iBAAiB5E,MAAM/D,IAAI,EAAE+D,MAAMxH,MAAM,CAAC;IAC/C;AACF,EAAE;AAEF,OAAO,MAAMuU,mCAAmC,CAC9C/M,OACAC,aACAjD,UACAF,cACAG;QAmBE+C,+BAAAA,wBAAAA,eAOOgN,aA8BAhN,gBACCA;IAvDV,MAAM,EAAEiN,IAAI,EAAED,IAAI,EAAE,GAAGhN,MAAM/D,IAAI,CAAC,EAAE;QAChBgR;IAApB,MAAMC,aAAa,AAACD,CAAAA,CAAAA,cAAAA,iBAAAA,2BAAAA,KAAMrO,KAAK,cAAXqO,yBAAAA,cAAe,EAAE,AAAD,EACjCtS,GAAG,CAAC,CAACwS,KAAanS;YACyBiS,cAAyCA;QAAnF,IAAIpW,eAAesW,QAAQtW,eAAeoW,iBAAAA,4BAAAA,eAAAA,KAAMG,MAAM,cAAZH,mCAAAA,YAAc,CAACjS,MAAM,KAAKnE,eAAeoW,iBAAAA,4BAAAA,eAAAA,KAAMI,MAAM,cAAZJ,mCAAAA,YAAc,CAACjS,MAAM,GAAG;YACzG,OAAO;QACT;QAEA,OAAO;YACL4D,OAAOuO;YACPC,MAAM,EAAEH,iBAAAA,2BAAAA,KAAMG,MAAM,AAAC,CAACpS,MAAM;YAC5BqS,MAAM,EAAEJ,iBAAAA,2BAAAA,KAAMI,MAAM,AAAC,CAACrS,MAAM;QAC9B;IACF,EACA,gFAAgF;KAC/EC,MAAM,CAACmC,CAAAA,IAAKA,MAAM,QAAQA,EAAEgQ,MAAM,IAAI,KAAKhQ,EAAEiQ,MAAM,IAAI,KAAKjQ,EAAEgQ,MAAM,KAAKhQ,EAAEiQ,MAAM;IAEpF,MAAMC,sBAAsBhW,cAC1B0I,gBAAAA,MAAMxH,MAAM,cAAZwH,qCAAAA,yBAAAA,cAAcK,QAAQ,cAAtBL,8CAAAA,gCAAAA,uBAAwBxH,MAAM,cAA9BwH,oDAAAA,8BAAgCnD,QAAQ,EACxCC,cACAkQ,iBAAAA,2BAAAA,KAAMjQ,KAAK,EACXC,UACAC;IAEF,MAAMsQ,kBAAkB;QACtBC,KAAK,GAAER,cAAAA,KAAKvM,KAAK,cAAVuM,kCAAAA,YAAYrS,GAAG,CAAC,CAAC8F,OAAezF;YACrC,MAAM+B,QAAQxF,aAAa+V,qBAAqBtS,OAAOyF,OAAOzD,UAAUC;YAExE,OAAO;gBACLwQ,QAAQzS;gBACR8E,MAAMW;gBACN1D;YACF;QACF;QACA,8DAA8D;QAC9D2Q,OAAOR,WAAWvS,GAAG,CAAC,CAACgT,WAAgB3S;YACrC,OAAO;gBACL,GAAG2S,SAAS;YACd;QACF;IACF;IAEA,+CAA+C;IAC/C,YAAY;IACZ,kFAAkF;IAClF,OAAO;IACP,KAAK;IAEL,MAAM,EAAEjV,UAAU,EAAE,GAAGH,UAAUyH,MAAMxH,MAAM;QAQnCwH;IANV,OAAO;QACL/D,MAAM;YACJvD;YACAkV,iBAAiBL;QACnB;QACAnM,KAAK,GAAEpB,iBAAAA,MAAMxH,MAAM,cAAZwH,qCAAAA,eAAcoB,KAAK;QAC1BC,QAAQrB,CAAAA,wBAAAA,iBAAAA,MAAMxH,MAAM,cAAZwH,qCAAAA,eAAcqB,MAAM,cAApBrB,kCAAAA,uBAAwB;IAGlC;AACF,EAAE;AAEF,OAAO,MAAM6N,kCAAkC,CAC7C7N,OACAC,aACAjD,UACAF,cACAG;QAGoBiD,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,MAAM/D,IAAI,CAAC,EAAE;IAC/B,MAAM6R,cAAc5N,EAAAA,mBAAAA,UAAU6N,KAAK,cAAf7N,uCAAAA,iBAAiB8N,KAAK,IAAG9N,UAAU6N,KAAK,CAACC,KAAK,CAACrT,GAAG,CAACsT,CAAAA,OAAQA,KAAKlR,KAAK,IAAIL;IAC7F,MAAMQ,kBAAkB5F,cACtB0I,gBAAAA,MAAMxH,MAAM,cAAZwH,qCAAAA,yBAAAA,cAAcK,QAAQ,cAAtBL,8CAAAA,gCAAAA,uBAAwBxH,MAAM,cAA9BwH,oDAAAA,8BAAgCnD,QAAQ,EACxCC,cACAgR,aACA9Q,UACAC;QAiBoCiD,8BAAxBA,kBAWCA,+BAA6CA;IAzB5D,MAAMgO,WAAWhO,EAAAA,oBAAAA,UAAU6N,KAAK,cAAf7N,yCAAAA,yBAAAA,kBAAiB8N,KAAK,cAAtB9N,6CAAAA,uBAAwBtG,MAAM,IAE3CsG,UAAU6N,KAAK,CAACC,KAAK,CAACrT,GAAG,CAAC,CAACsT,MAAWjT;YAK5BiT,aAAkBA;QAJ1B,MAAMrN,SAASqN,KAAKnO,IAAI,IAAI,CAAC,QAAQ,EAAE9E,QAAQ,GAAG;QAClD,MAAM+B,QAAQxF,aAAa2F,iBAAiBlC,OAAO4F,QAAQ5D,UAAUC;QACrE,OAAO;YACL2D;YACAkF,MAAMmI,EAAAA,cAAAA,KAAKxY,KAAK,cAAVwY,kCAAAA,WAAY,CAAC,EAAE,MAAGA,eAAAA,KAAKxY,KAAK,cAAVwY,mCAAAA,YAAY,CAAC,EAAE;YACvClR;QACF;IACF,KACA;QACE;YACE6D,QAAQ;YACRkF,MAAM5F,CAAAA,mBAAAA,UAAUtB,KAAK,cAAfsB,8BAAAA,mBAAmB,IAAKA,CAAAA,CAAAA,gCAAAA,oBAAAA,UAAU6N,KAAK,cAAf7N,yCAAAA,wBAAAA,kBAAiBiO,IAAI,cAArBjO,6CAAAA,8BAAAA,sBAAuBzK,KAAK,cAA5ByK,kDAAAA,2BAA8B,CAAC,EAAE,cAAjCA,0CAAAA,+BAAqC,CAAA;YACnEnD,OAAOH,oBACLoD,iBAAAA,MAAMxH,MAAM,cAAZwH,sCAAAA,0BAAAA,eAAcK,QAAQ,cAAtBL,+CAAAA,iCAAAA,wBAAwBxH,MAAM,cAA9BwH,qDAAAA,+BAAgCnD,QAAQ,EACxCC,eACAoD,oBAAAA,UAAU6N,KAAK,cAAf7N,yCAAAA,yBAAAA,kBAAiBiO,IAAI,cAArBjO,6CAAAA,uBAAuBnD,KAAK,EAC5BC,UACAC;QAEJ;QACA;YACE2D,QAAQ;YACRkF,MAAM,AAAC5F,CAAAA,CAAAA,iCAAAA,oBAAAA,UAAU6N,KAAK,cAAf7N,yCAAAA,yBAAAA,kBAAiBiO,IAAI,cAArBjO,8CAAAA,+BAAAA,uBAAuBzK,KAAK,cAA5ByK,mDAAAA,4BAA8B,CAAC,EAAE,cAAjCA,2CAAAA,gCAAqC,GAAE,IAAMA,CAAAA,CAAAA,oBAAAA,UAAUtB,KAAK,cAAfsB,+BAAAA,oBAAmB,CAAA;YACvEnD,OAAOhH,eAAeqY,QAAQ;QAChC;KACD;IAEL,IAAIC;IACJ,IAAIC;IACJ,KAAIpO,mBAAAA,UAAUqO,KAAK,cAAfrO,uCAAAA,iBAAiBsO,SAAS,EAAE;QAC9B,MAAMC,OAAOvO,UAAUtB,KAAK,GAAGsB,UAAUqO,KAAK,CAACC,SAAS;QACxD,IAAIC,QAAQ,GAAG;gBAGXzO,gCAAAA,yBAAAA,gBAEAE,6BAAAA;YAJFmO,WAAW,CAAC,OAAO,EAAEI,MAAM;YAC3B,MAAMC,iCAAiCpX,cACrC0I,iBAAAA,MAAMxH,MAAM,cAAZwH,sCAAAA,0BAAAA,eAAcK,QAAQ,cAAtBL,+CAAAA,iCAAAA,wBAAwBxH,MAAM,cAA9BwH,qDAAAA,+BAAgCnD,QAAQ,EACxCC,eACAoD,oBAAAA,UAAUqO,KAAK,cAAfrO,yCAAAA,8BAAAA,kBAAiByO,UAAU,cAA3BzO,kDAAAA,4BAA6BnD,KAAK,EAClCC,UACAC;YAEF,MAAMF,QAAQxF,aAAamX,gCAAgC,GAAG,IAAI1R,UAAUC;YAC5EqR,gBAAgBvR;QAClB,OAAO;gBAGHiD,gCAAAA,yBAAAA,gBAEAE,6BAAAA;YAJFmO,WAAW,CAAC,OAAO,EAAE7R,KAAKoS,GAAG,CAACH,OAAO;YACrC,MAAMI,iCAAiCvX,cACrC0I,iBAAAA,MAAMxH,MAAM,cAAZwH,sCAAAA,0BAAAA,eAAcK,QAAQ,cAAtBL,+CAAAA,iCAAAA,wBAAwBxH,MAAM,cAA9BwH,qDAAAA,+BAAgCnD,QAAQ,EACxCC,eACAoD,oBAAAA,UAAUqO,KAAK,cAAfrO,yCAAAA,8BAAAA,kBAAiB4O,UAAU,cAA3B5O,kDAAAA,4BAA6BnD,KAAK,EAClCC,UACAC;YAEF,MAAMF,QAAQxF,aAAasX,gCAAgC,GAAG,IAAI7R,UAAUC;YAC5EqR,gBAAgBvR;QAClB;IACF;IAEA,MAAMgS,SAAS;QACbV,UAAUC;IACZ;IAEA,MAAM,EAAE5V,UAAU,EAAE,GAAGH,UAAUyH,MAAMxH,MAAM;QAI/B0H,mBAQJF;IAVV,OAAO;QACLkO;QACAc,YAAY9O,CAAAA,oBAAAA,UAAUtB,KAAK,cAAfsB,+BAAAA,oBAAmB;QAC/BxH;QACA2V;QACA,2BAA2B;QAC3BY,UAAU,SAAO/O,oBAAAA,UAAU6N,KAAK,cAAf7N,yCAAAA,yBAAAA,kBAAiBiO,IAAI,cAArBjO,8CAAAA,+BAAAA,uBAAuBzK,KAAK,cAA5ByK,mDAAAA,4BAA8B,CAAC,EAAE,MAAK,YAAWA,oBAAAA,UAAU6N,KAAK,cAAf7N,yCAAAA,yBAAAA,kBAAiBiO,IAAI,cAArBjO,8CAAAA,+BAAAA,uBAAuBzK,KAAK,cAA5ByK,mDAAAA,4BAA8B,CAAC,EAAE,GAAGxD;QACtGwS,UAAU,SAAOhP,oBAAAA,UAAU6N,KAAK,cAAf7N,yCAAAA,yBAAAA,kBAAiBiO,IAAI,cAArBjO,8CAAAA,+BAAAA,uBAAuBzK,KAAK,cAA5ByK,mDAAAA,4BAA8B,CAAC,EAAE,MAAK,YAAWA,oBAAAA,UAAU6N,KAAK,cAAf7N,yCAAAA,yBAAAA,kBAAiBiO,IAAI,cAArBjO,8CAAAA,+BAAAA,uBAAuBzK,KAAK,cAA5ByK,mDAAAA,4BAA8B,CAAC,EAAE,GAAGxD;QACtGyS,kBAAkB;gBAAMjP;gBAAAA;mBAAAA,CAAAA,6BAAAA,mBAAAA,UAAUtB,KAAK,cAAfsB,uCAAAA,iBAAiBzC,QAAQ,gBAAzByC,uCAAAA,4BAA+B;;QACvDkB,KAAK,GAAEpB,iBAAAA,MAAMxH,MAAM,cAAZwH,qCAAAA,eAAcoB,KAAK;QAC1BC,QAAQrB,CAAAA,wBAAAA,iBAAAA,MAAMxH,MAAM,cAAZwH,qCAAAA,eAAcqB,MAAM,cAApBrB,kCAAAA,uBAAwB;QAChC,OAAO;QACP,UAAU;QACVoP,SAASlP,EAAAA,oBAAAA,UAAU6N,KAAK,cAAf7N,yCAAAA,0BAAAA,kBAAiB8N,KAAK,cAAtB9N,8CAAAA,wBAAwBtG,MAAM,IAAG,sBAAsB;QAChEmV;QACA/M,cAAc;IAChB;AACF,EAAE;AAEF,MAAMqN,YAAY,CAACzW;IACjB,OAAOA,KACJ0W,OAAO,CAAC,mBAAmB,IAC3BA,OAAO,CAAC,YAAY,IACpBA,OAAO,CAAC,sCAAsC,IAC9CA,OAAO,CAAC,cAAc,KACtBC,IAAI;AACT;AAEA,MAAMC,cAAc,CAClB5Q,OACA6Q,UACAC;IAEA,IAAI9Q,UAAU,QAAQ,OAAOA,UAAU,WAAW;QAChD,OAAOA;IACT;IAEA,MAAM+Q,YAAYpV,MAAMC,OAAO,CAACkV,MAAO7Z,MAAM,IAAI6Z,MAAO7Z,MAAM,CAAC4Z,SAAS,GAAGC,MAAO7Z,MAAM;IACxF,MAAMwI,SAAS9D,MAAMC,OAAO,CAACkV,MAAOrR,MAAM,IAAIqR,MAAOrR,MAAM,CAACoR,SAAS,GAAGC,MAAOrR,MAAM;IACrF,MAAMuR,SAASrV,MAAMC,OAAO,CAACkV,MAAOE,MAAM,IAAIF,MAAOE,MAAM,CAACH,SAAS,GAAGC,MAAOE,MAAM;IACrF,IAAIC,YAAYjR;IAChB,IAAI,OAAOA,UAAU,UAAU;QAC7B,IAAI,OAAO+Q,cAAc,UAAU;YACjC,IAAI;gBACFE,YAAY/Z,SAAS6Z,WAAW/Q;YAClC,EAAE,OAAM;gBACNiR,YAAY1Z,2BAA2ByI;YACzC;QACF,OAAO;YACLiR,YAAY1Z,2BAA2ByI;QACzC;IACF;IACA,OAAO,GAAGP,mBAAAA,oBAAAA,SAAU,KAAKwR,YAAYD,mBAAAA,oBAAAA,SAAU,IAAI;AACrD;AAEA,SAASE,iBAAoBC,GAAgC,EAAEC,QAAgB,EAAEP,QAAgB;IAC/F,IAAIlV,MAAMC,OAAO,CAACuV,MAAM;YACLA;QAAjB,MAAME,WAAWF,CAAAA,gBAAAA,GAAG,CAACN,SAAS,cAAbM,2BAAAA,gBAAiBA,GAAG,CAAC,EAAE;QACxC,IAAIxV,MAAMC,OAAO,CAACyV,WAAW;gBACpBA;YAAP,OAAOA,CAAAA,qBAAAA,QAAQ,CAACD,SAAS,cAAlBC,gCAAAA,qBAAsBA,QAAQ,CAAC,EAAE;QAC1C;QACA,OAAOA;IACT;IACA,OAAOF;AACT;AAEA,SAASG,WAAWC,UAA+B,EAAEC,aAAkC;QAE3ED,oBAAAA,MACDA,mBAGDC,qBACAD,kBAIAC,qBACAD,kBAGEA,oBACAA,oBACAA;IAhBV,OAAO;QACLxP,QAAQwP,CAAAA,OAAAA,CAAAA,qBAAAA,uBAAAA,iCAAAA,WAAYxP,MAAM,cAAlBwP,gCAAAA,qBAAsBC,0BAAAA,oCAAAA,cAAezP,MAAM,cAA3CwP,kBAAAA,OAA+C,EAAE;QACzDE,OAAOF,CAAAA,oBAAAA,uBAAAA,iCAAAA,WAAYE,KAAK,cAAjBF,+BAAAA,oBAAqBC,0BAAAA,oCAAAA,cAAeC,KAAK;QAEhD9I,MAAM;YACJ,GAAI6I,CAAAA,sBAAAA,0BAAAA,oCAAAA,cAAe7I,IAAI,cAAnB6I,iCAAAA,sBAAuB,CAAC,CAAC;YAC7B,GAAID,CAAAA,mBAAAA,uBAAAA,iCAAAA,WAAY5I,IAAI,cAAhB4I,8BAAAA,mBAAoB,CAAC,CAAC;QAC5B;QAEAG,MAAM;YACJ,GAAIF,CAAAA,sBAAAA,0BAAAA,oCAAAA,cAAeE,IAAI,cAAnBF,iCAAAA,sBAAuB,CAAC,CAAC;YAC7B,GAAID,CAAAA,mBAAAA,uBAAAA,iCAAAA,WAAYG,IAAI,cAAhBH,8BAAAA,mBAAoB,CAAC,CAAC;QAC5B;QAEAta,QAAQsa,CAAAA,qBAAAA,uBAAAA,iCAAAA,WAAYta,MAAM,cAAlBsa,gCAAAA,qBAAsBC,0BAAAA,oCAAAA,cAAeva,MAAM;QACnDwI,QAAQ8R,CAAAA,qBAAAA,uBAAAA,iCAAAA,WAAY9R,MAAM,cAAlB8R,gCAAAA,qBAAsBC,0BAAAA,oCAAAA,cAAe/R,MAAM;QACnDuR,QAAQO,CAAAA,qBAAAA,uBAAAA,iCAAAA,WAAYP,MAAM,cAAlBO,gCAAAA,qBAAsBC,0BAAAA,oCAAAA,cAAeR,MAAM;IACrD;AACF;AAEA,OAAO,MAAMW,uCAAuC,CAClDvQ,OACAC,aACAjD,UACAF,cACAG;QAqCgBuT,kBAC0BxQ,oCAAAA,mCAAAA,6BAAAA,wBAAAA,eAkClCA,oBAAAA,gBAIeA,qCAAAA,oCAAAA,8BAAAA,yBAAAA,gBAiBKwQ,mBAEnBxQ,gBACCA;IA9FV,MAAMwQ,YAAYxQ,MAAM/D,IAAI,CAAC,EAAE;IAE/B,MAAMwU,mBAAmB,CACvB9P,QACA+P;QAEA,MAAMC,gBAAsDpW,MAAMC,OAAO,CAACmG,MAAM,CAAC,EAAE,IAC/E,AAACA,OAAsBhG,GAAG,CAAC0Q,CAAAA,MACzBA,IACG1Q,GAAG,CAACiW,CAAAA,OAAQvB,UAAUuB,OACtB3V,MAAM,CAAC4V,SACPrK,IAAI,CAAC,QAEV,AAAC7F,OAAoBhG,GAAG,CAACiW,CAAAA,OAAQvB,UAAUuB;QAE/C,OAAOD,cAAchW,GAAG,CAAC,CAACiE,OAAO6Q;gBAGIiB,cACDA,eACOA;YAJzC,+BAA+B;YAC/B,MAAMV,WAAW;YACjB,MAAMc,YAAYhB,iBAAiBY,mBAAAA,8BAAAA,eAAAA,OAAQJ,IAAI,cAAZI,mCAAAA,aAAc3T,KAAK,EAAEiT,UAAUP;YAClE,MAAMsB,WAAWjB,iBAAiBY,mBAAAA,8BAAAA,gBAAAA,OAAQJ,IAAI,cAAZI,oCAAAA,cAAc5K,IAAI,EAAEkK,UAAUP;YAChE,MAAMuB,kBAAkBlB,iBAAiBY,mBAAAA,8BAAAA,eAAAA,OAAQnJ,IAAI,cAAZmJ,mCAAAA,aAAc3T,KAAK,EAAEiT,UAAUP;YACxE,MAAMwB,YAAYnB,iBAAiBY,mBAAAA,6BAAAA,OAAQL,KAAK,EAAEL,UAAUP;YAI5D,MAAMyB,QAA6B;gBACjC,GAAI,OAAOJ,cAAc,WAAW;oBAAE/T,OAAO+T;gBAAU,IAAI,CAAC,CAAC;gBAC7D,GAAI,OAAOC,aAAa,WAAW;oBAAEA;gBAAS,IAAI,CAAC,CAAC;gBACpD,GAAI,OAAOC,oBAAoB,WAAW;oBAAEA;gBAAgB,IAAI,CAAC,CAAC;gBAClE,GAAIC,YAAY;oBAAEA;gBAAU,IAAI,CAAC,CAAC;YACpC;YAEA,OAAO;gBAAErS;gBAAOsS;YAAM;QACxB;IACF;QACgBV;IAAhB,MAAMW,UAAUX,CAAAA,2BAAAA,mBAAAA,UAAUd,KAAK,cAAfc,uCAAAA,iBAAiB7P,MAAM,cAAvB6P,qCAAAA,0BAA2B,EAAE;IAC7C,MAAMd,QAAQQ,WAAWM,UAAUd,KAAK,GAAE1P,gBAAAA,MAAMxH,MAAM,cAAZwH,qCAAAA,yBAAAA,cAAcK,QAAQ,cAAtBL,8CAAAA,8BAAAA,uBAAwB/D,IAAI,cAA5B+D,mDAAAA,oCAAAA,4BAA8BoR,KAAK,cAAnCpR,yDAAAA,qCAAAA,iCAAqC,CAAC,EAAE,cAAxCA,yDAAAA,mCAA0C0P,KAAK;IACzF,MAAM2B,OAAOF,OAAO,CAAC,EAAE,CAACxW,GAAG,CAAC,CAACsE,GAAG+Q,WAC9BmB,QAAQxW,GAAG,CAAC,CAAC2W,KAAK7B;gBASmBC,aACDA,cACOA;YAVzC,MAAM6B,YAAYD,GAAG,CAACtB,SAAS;YAC/B,MAAMwB,aAAa,OAAOD,cAAc,WAAWlC,UAAUkC,aAAaA;YAE1E,MAAME,iBACJ,OAAOD,eAAe,YAAY,OAAOA,eAAe,WACpDhC,YAAYgC,YAAY/B,UAAUC,SAClC8B;YAEN,MAAMV,YAAYhB,iBAAiBJ,kBAAAA,6BAAAA,cAAAA,MAAOY,IAAI,cAAXZ,kCAAAA,YAAa3S,KAAK,EAAEiT,UAAUP;YACjE,MAAMsB,WAAWjB,iBAAiBJ,kBAAAA,6BAAAA,eAAAA,MAAOY,IAAI,cAAXZ,mCAAAA,aAAa5J,IAAI,EAAEkK,UAAUP;YAC/D,MAAMuB,kBAAkBlB,iBAAiBJ,kBAAAA,6BAAAA,cAAAA,MAAOnI,IAAI,cAAXmI,kCAAAA,YAAa3S,KAAK,EAAEiT,UAAUP;YACvE,MAAMwB,YAAYnB,iBAAiBJ,kBAAAA,4BAAAA,MAAOW,KAAK,EAAEL,UAAUP;YAI3D,MAAMyB,QAA6B;gBACjC,GAAIJ,YAAY;oBAAE/T,OAAO+T;gBAAU,IAAI,CAAC,CAAC;gBACzC,GAAI,OAAOC,aAAa,WAAW;oBAAEA;gBAAS,IAAI,CAAC,CAAC;gBACpD,GAAIC,kBAAkB;oBAAEA;gBAAgB,IAAI,CAAC,CAAC;gBAC9C,GAAIC,YAAY;oBAAEA;gBAAU,IAAI,CAAC,CAAC;YACpC;YAEA,OAAO;gBACLrS,OAAO6S;gBACPP;YACF;QACF;IAGF,MAAMnC,SAAoC;QACxC2C,MAAM;YACJ,GAAI1R,EAAAA,iBAAAA,MAAMxH,MAAM,cAAZwH,sCAAAA,qBAAAA,eAAcsQ,IAAI,cAAlBtQ,yCAAAA,mBAAoB8F,IAAI,IAAG;gBAAEiL,UAAU/Q,MAAMxH,MAAM,CAAC8X,IAAI,CAACxK,IAAI;YAAC,IAAI,CAAC,CAAC;QAC1E;IACF;IAEA,MAAM6L,kBAAiB3R,iBAAAA,MAAMxH,MAAM,cAAZwH,sCAAAA,0BAAAA,eAAcK,QAAQ,cAAtBL,+CAAAA,+BAAAA,wBAAwB/D,IAAI,cAA5B+D,oDAAAA,qCAAAA,6BAA8BoR,KAAK,cAAnCpR,0DAAAA,sCAAAA,kCAAqC,CAAC,EAAE,cAAxCA,0DAAAA,oCAA0C0Q,MAAM;IACvE,MAAMkB,cAAcpB,UAAUE,MAAM;QAG3BkB,oBAEDD,sBACAC,mBAGAD,sBACAC,mBAEEA,qBAAAA;IAVV,MAAMlB,SAAS;QACbL,OAAOuB,CAAAA,qBAAAA,wBAAAA,kCAAAA,YAAavB,KAAK,cAAlBuB,gCAAAA,qBAAsBD,2BAAAA,qCAAAA,eAAgBtB,KAAK;QAClD9I,MAAM;YACJ,GAAIoK,CAAAA,uBAAAA,2BAAAA,qCAAAA,eAAgBpK,IAAI,cAApBoK,kCAAAA,uBAAwB,CAAC,CAAC;YAC9B,GAAIC,CAAAA,oBAAAA,wBAAAA,kCAAAA,YAAarK,IAAI,cAAjBqK,+BAAAA,oBAAqB,CAAC,CAAC;QAC7B;QACAtB,MAAM;YACJ,GAAIqB,CAAAA,uBAAAA,2BAAAA,qCAAAA,eAAgBrB,IAAI,cAApBqB,kCAAAA,uBAAwB,CAAC,CAAC;YAC9B,GAAIC,CAAAA,oBAAAA,wBAAAA,kCAAAA,YAAatB,IAAI,cAAjBsB,+BAAAA,oBAAqB,CAAC,CAAC;QAC7B;QACAjR,QAAQiR,CAAAA,OAAAA,CAAAA,sBAAAA,wBAAAA,kCAAAA,YAAajR,MAAM,cAAnBiR,iCAAAA,sBAAuBD,2BAAAA,qCAAAA,eAAgBhR,MAAM,cAA7CiR,kBAAAA,OAAiD,EAAE;IAC7D;QAG4BpB;IAD5B,OAAO;QACLqB,SAASpB,iBAAiBD,CAAAA,4BAAAA,oBAAAA,UAAUE,MAAM,cAAhBF,wCAAAA,kBAAkB7P,MAAM,cAAxB6P,sCAAAA,2BAA4B,EAAE,EAAEE;QAC1DW;QACAjQ,KAAK,GAAEpB,iBAAAA,MAAMxH,MAAM,cAAZwH,qCAAAA,eAAcoB,KAAK;QAC1BC,MAAM,GAAErB,iBAAAA,MAAMxH,MAAM,cAAZwH,qCAAAA,eAAcqB,MAAM;QAC5B0N;IACF;AACF,EAAE;AAEF,SAAS+C,uBAAuB5Y,MAAyB;IAIvD,MAAM6Y,cAAc7Y,OAAO6Y,WAAW,IAAI;QAChC7Y,gBAAAA;IAAV,MAAMqD,IAAIrD,CAAAA,OAAAA,CAAAA,iBAAAA,OAAOsH,MAAM,cAAbtH,4BAAAA,iBAAiBA,OAAOqD,CAAC,cAAzBrD,kBAAAA,OAA6BA,OAAO8Y,KAAK;QACzC9Y,gBAAAA;IAAV,MAAMkE,IAAIlE,CAAAA,QAAAA,CAAAA,iBAAAA,OAAOyH,MAAM,cAAbzH,4BAAAA,iBAAiBA,OAAOkE,CAAC,cAAzBlE,mBAAAA,QAA6BA,OAAO0F,KAAK;IACnD,MAAMqT,YAAYtb,cAAcyG;IAChC,MAAM8U,YAAYvb,cAAc4F;IAChC,MAAM4V,YAAYzb,cAAc0G;IAChC,MAAMgV,YAAY1b,cAAc6F;IAEhC,8CAA8C;IAC9C,MAAM8V,UAAU,CAACzF;QACf,IAAIrS,MAAMC,OAAO,CAACoS,MAAM;YACtB,OAAOA;QACT;QACA,IAAI,OAAOA,QAAQ,YAAY,OAAOA,QAAQ,UAAU;YACtD,OAAO;gBAACA;aAAI;QACd;QACA,OAAO,EAAE;IACX;IAEA,IAAImF,gBAAgB,KAAK;QACvB,IAAIG,aAAaC,WAAW;YAC1B,OAAO;gBAAEG,YAAYD,QAAQ9V;gBAAIoE,QAAQ0R,QAAQjV;YAAG;QACtD,OAAO,IAAI6U,aAAaG,WAAW;YACjC,OAAO;gBAAEE,YAAYD,QAAQjV;gBAAIuD,QAAQ0R,QAAQ9V;YAAG;QACtD,OAAO;YACL,OAAO;gBAAE+V,YAAYJ,YAAYG,QAAQ9V,KAAK8V,QAAQjV;gBAAIuD,QAAQuR,YAAYG,QAAQjV,KAAKiV,QAAQ9V;YAAG;QACxG;IACF,OAAO;QACL,IAAI0V,aAAaG,WAAW;YAC1B,OAAO;gBAAEE,YAAYD,QAAQjV;gBAAIuD,QAAQ0R,QAAQ9V;YAAG;QACtD,OAAO,IAAI2V,aAAaC,WAAW;YACjC,OAAO;gBAAEG,YAAYD,QAAQ9V;gBAAIoE,QAAQ0R,QAAQjV;YAAG;QACtD,OAAO;YACL,OAAO;gBAAEkV,YAAYL,YAAYI,QAAQjV,KAAKiV,QAAQ9V;gBAAIoE,QAAQsR,YAAYI,QAAQ9V,KAAK8V,QAAQjV;YAAG;QACxG;IACF;AACF;AAEA,OAAO,MAAMmV,wCAAwC,CACnDvS,OACAC,aACAjD,UACAF,cACAG;QAwFS+C,eACCA,gBACMA,cACaA;IAzF7B,MAAMwS,aAAqC,EAAE;IAE7C,wFAAwF;IACxF,MAAMC,YACJzS,MAAM/D,IAAI,CAACrC,MAAM,GAAG,KACpBoG,MAAM/D,IAAI,CAACyW,KAAK,CAAC,CAACxZ;YACDA,gBAAAA;QAAf,MAAMyH,SAASzH,CAAAA,OAAAA,CAAAA,iBAAAA,OAAOyH,MAAM,cAAbzH,4BAAAA,iBAAiBA,OAAOkE,CAAC,cAAzBlE,kBAAAA,OAA6BA,OAAO0F,KAAK;YACzC1F,gBAAAA;QAAf,MAAMsH,SAAStH,CAAAA,QAAAA,CAAAA,iBAAAA,OAAOsH,MAAM,cAAbtH,4BAAAA,iBAAiBA,OAAOqD,CAAC,cAAzBrD,mBAAAA,QAA6BA,OAAO8Y,KAAK;QACxD,OAAOzX,MAAMC,OAAO,CAACgG,WAAWjG,MAAMC,OAAO,CAACmG,WAAWA,OAAO/G,MAAM,GAAG,KAAK4G,OAAO5G,MAAM,GAAG;IAChG;IAEF,IAAI6Y,WAAW;QACb,mFAAmF;QACnF,MAAME,eAAuC,CAAC;QAC9C3S,MAAM/D,IAAI,CAACI,OAAO,CAAC,CAACnD,QAA2BqM;gBAI3CvF,+BAAAA,wBAAAA,eAEA9G,gBAAyBA;YAL3B,MAAM0Z,WAAW1Z,OAAO4G,IAAI,IAAI,CAAC,SAAS,EAAEyF,YAAY,GAAG;gBAKzDrM;YAJF,yDAAyD;YACzD,MAAMgE,kBAAkB5F,cACtB0I,gBAAAA,MAAMxH,MAAM,cAAZwH,qCAAAA,yBAAAA,cAAcK,QAAQ,cAAtBL,8CAAAA,gCAAAA,uBAAwBxH,MAAM,cAA9BwH,oDAAAA,8BAAgCnD,QAAQ,EACxCC,cACA5D,CAAAA,yBAAAA,iBAAAA,OAAOoH,MAAM,cAAbpH,qCAAAA,eAAeiH,MAAM,cAArBjH,mCAAAA,yBAAyBA,kBAAAA,OAAOoH,MAAM,cAAbpH,sCAAAA,gBAAe6D,KAAK,EAC7CC,UACAC;YAEF,qDAAqD;YACrD,MAAMF,QAAQxF,aAAa2F,iBAAiB,GAAG0V,UAAU5V,UAAUC;YACnE0V,YAAY,CAACC,SAAS,GAAG7V;gBAEV7D,gBAAAA;YAAf,MAAMsH,SAAStH,CAAAA,OAAAA,CAAAA,iBAAAA,OAAOsH,MAAM,cAAbtH,4BAAAA,iBAAiBA,OAAOqD,CAAC,cAAzBrD,kBAAAA,OAA6BA,OAAO8Y,KAAK;gBACzC9Y,gBAAAA;YAAf,MAAMyH,SAASzH,CAAAA,QAAAA,CAAAA,iBAAAA,OAAOyH,MAAM,cAAbzH,4BAAAA,iBAAiBA,OAAOkE,CAAC,cAAzBlE,mBAAAA,QAA6BA,OAAO0F,KAAK;YAExD,IAAI,CAACrI,oBAAoBiK,WAAW,CAACjK,oBAAoBoK,SAAS;gBAChE;YACF;YACA,IAAIH,UAAUjK,oBAAoBiK,WAAWA,OAAO5G,MAAM,GAAG,GAAG;gBAC7D4G,OAA+BnE,OAAO,CAAC,CAACoE,OAAevF;oBACtD,MAAM2X,aAAaL,WAAWM,SAAS,CAACd,CAAAA,QAASA,MAAMA,KAAK,KAAKvR;oBACjE,MAAMsS,WAAWtI,OAAO,AAAC9J,MAA8B,CAACzF,EAAE;oBAC1D,IAAI8X,MAAMD,WAAW;wBACnB;oBACF;oBACA,IAAIF,eAAe,CAAC,GAAG;wBACrBL,WAAW7S,IAAI,CAAC;4BACdqS,OAAOvR;4BACPwS,WAAW;gCAAC;oCAAEL;oCAAUhU,OAAOmU;oCAAUhW;gCAAM;6BAAE;wBACnD;oBACF,OAAO;wBACLyV,UAAU,CAACK,WAAW,CAACI,SAAS,CAAEtT,IAAI,CAAC;4BAAEiT;4BAAUhU,OAAOmU;4BAAUhW;wBAAM;oBAC5E;gBACF;YACF;QACF;IACF,OAAO;QACL,uEAAuE;QACvEiD,MAAM/D,IAAI,CAACI,OAAO,CAAC,CAACnD,QAA2BqM;gBAQ3CvF,+BAAAA,wBAAAA,eAEA9G,gBAAyBA;YAT3B,MAAM,EAAEoZ,UAAU,EAAE3R,MAAM,EAAE,GAAGmR,uBAAuB5Y;YAEtD,IAAI,CAAC3C,oBAAoB+b,eAAe,CAAC/b,oBAAoBoK,SAAS;gBACpE;YACF;gBAKEzH;YAHF,MAAMgE,kBAAkB5F,cACtB0I,gBAAAA,MAAMxH,MAAM,cAAZwH,qCAAAA,yBAAAA,cAAcK,QAAQ,cAAtBL,8CAAAA,gCAAAA,uBAAwBxH,MAAM,cAA9BwH,oDAAAA,8BAAgCnD,QAAQ,EACxCC,cACA5D,CAAAA,yBAAAA,iBAAAA,OAAOoH,MAAM,cAAbpH,qCAAAA,eAAeiH,MAAM,cAArBjH,mCAAAA,yBAAyBA,kBAAAA,OAAOoH,MAAM,cAAbpH,sCAAAA,gBAAe6D,KAAK,EAC7CC,UACAC;YAGFqV,WAAWjW,OAAO,CAAC,CAACoE,OAAevF;gBACjC,MAAM6B,QAAQxF,aAAa2F,iBAAiBhC,GAAGuF,OAAOzD,UAAUC;gBAChE,MAAM8V,WAAWtI,OAAO9J,MAAM,CAACzF,EAAE;gBACjC,IAAI8X,MAAMD,WAAW;oBACnB;gBACF;gBACAP,WAAW7S,IAAI,CAAC;oBACdqS,OAAOvR;oBACP7B,OAAOmU;oBACPhW;gBACF;YACF;QACF;IACF;IAEA,OAAO;QACLd,MAAMuW;QACNpR,KAAK,GAAEpB,gBAAAA,MAAMxH,MAAM,cAAZwH,oCAAAA,cAAcoB,KAAK;QAC1BC,MAAM,GAAErB,iBAAAA,MAAMxH,MAAM,cAAZwH,qCAAAA,eAAcqB,MAAM;QAC5B0Q,aAAa,EAAC/R,eAAAA,MAAM/D,IAAI,CAAC,EAAE,cAAb+D,mCAAD,AAACA,aAAqC+R,WAAW,MAAK,MAAM,eAAe;QACxFlQ,YAAY5B,eAAeD,EAAAA,iBAAAA,MAAMxH,MAAM,cAAZwH,qCAAAA,eAAc8B,UAAU,MAAK;IAC1D;AACF,EAAE;AAEF,OAAO,MAAMoR,0BAA0B,CAAClT;QA0IzBA,eAAuBA;IAzIpC,MAAMmT,aAA2B;QAAE,GAAGnT,KAAK;IAAC;IAE5C,uDAAuD;IACvD,IAAIoT,YAAY;IAChB,IAAIC,YAAY;IAChB,IAAK,IAAIC,SAAS,GAAGA,SAAStT,MAAM/D,IAAI,CAACrC,MAAM,EAAE0Z,SAAU;QACzD,MAAMC,QAAQ,AAACvT,MAAM/D,IAAI,CAACqX,OAAO,CAAuBE,CAAC;QACzD,IAAID,SAAShd,oBAAoBgd,QAAQ;YACvC,IAAK,IAAIE,UAAU,GAAGA,UAAUF,MAAM3Z,MAAM,EAAE6Z,UAAW;gBACvD,IAAI,CAAC5c,eAAe0c,KAAK,CAACE,QAAQ,GAAG;oBACnCL,YAAY5W,KAAKnH,GAAG,CAAC+d,WAAWG,KAAK,CAACE,QAAQ;oBAC9CJ,YAAY7W,KAAKjH,GAAG,CAAC8d,WAAWE,KAAK,CAACE,QAAQ;gBAChD;YACF;QACF;IACF;IAEA,iDAAiD;IACjD,MAAMC,cAAcN,YAAY,IAAI,CAACA,YAAY;IAEjD,iFAAiF;IACjF,MAAMO,iBAA8B,IAAIpU;IACxC,IAAK,IAAI+T,SAAS,GAAGA,SAAStT,MAAM/D,IAAI,CAACrC,MAAM,EAAE0Z,SAAU;QACzD,MAAMpa,SAAS8G,MAAM/D,IAAI,CAACqX,OAAO;QACjC,IAAIpa,OAAO0a,KAAK,IAAIrd,oBAAoB2C,OAAO0a,KAAK,GAAG;YACrD1a,OAAO0a,KAAK,CAACvX,OAAO,CAACuX,CAAAA,QAASD,eAAenU,GAAG,CAACqU,OAAOD;QAC1D;IACF;IAEA,wDAAwD;IACxD,MAAME,OAAiB,EAAE;IACzB,MAAMC,OAAiB,EAAE;IACzB,IAAIC,UAAyB;IAC7B,IAAK,IAAIV,SAAS,GAAGA,SAAStT,MAAM/D,IAAI,CAACrC,MAAM,EAAE0Z,SAAU;YAkBnCtT,iCAAAA,qBAAAA,gBACIA,kCAAAA,sBAAAA;QAlB1B,MAAM9G,SAAS8G,MAAM/D,IAAI,CAACqX,OAAO;QACjC,gFAAgF;QAChF,IAAI/c,oBAAoB2C,OAAO0a,KAAK,GAAG;YACpC1a,OAAqCgP,WAAW,GAAG3N,MAAM0Z,IAAI,CAACN;QACjE;QACAza,OAAOkE,CAAC,GAAG,EAAE;QACblE,OAAOqD,CAAC,GAAG,EAAE;QACb,MAAM2X,SAAShb,OAAO0a,KAAK;QAC3B,MAAML,QAAQra,OAAOsa,CAAC;QAEtB,yCAAyC;QACzC,IAAI,CAACjd,oBAAoBgd,UAAU,CAAChd,oBAAoB2d,SAAS;YAC/Df,WAAWlX,IAAI,CAACqX,OAAO,GAAGpa;YAC1B;QACF;QAEA,+BAA+B;QAC/B,MAAMib,gBAAgBnU,EAAAA,iBAAAA,MAAMxH,MAAM,cAAZwH,sCAAAA,sBAAAA,eAAc8H,KAAK,cAAnB9H,2CAAAA,kCAAAA,oBAAqB+H,WAAW,cAAhC/H,sDAAAA,gCAAkC6H,SAAS,MAAK,cAAc,CAAC,IAAI;YAC/D7H;QAA1B,MAAMoU,kBAAkB,AAAEpU,CAAAA,CAAAA,4CAAAA,iBAAAA,MAAMxH,MAAM,cAAZwH,sCAAAA,uBAAAA,eAAc8H,KAAK,cAAnB9H,4CAAAA,mCAAAA,qBAAqB+H,WAAW,cAAhC/H,uDAAAA,iCAAkCgI,QAAQ,cAA1ChI,sDAAAA,2CAA8C,CAAA,IAAKxD,KAAK6X,EAAE,GAAI;QAExF,wCAAwC;QACxC,IAAIC,cAAuB,EAAE;QAC7B,IAAIC,cAAc;QAClB,IAAI,CAAC7d,cAAcwd,SAAS;YAC1BI,cAAc/Z,MAAM0Z,IAAI,CAAC,IAAI1U,IAAI2U;YACjCK,cAAc;QAChB;QAEA,IAAK,IAAId,UAAU,GAAGA,UAAUF,MAAM3Z,MAAM,EAAE6Z,UAAW;YACvD,IAAI5c,eAAeqd,mBAAAA,6BAAAA,MAAQ,CAACT,QAAQ,KAAK5c,eAAe0c,kBAAAA,4BAAAA,KAAO,CAACE,QAAQ,GAAG;gBACzE;YACF;YAEA,gCAAgC;YAChC,IAAIe;YACJ,IAAID,aAAa;gBACf,MAAME,MAAMH,YAAYI,OAAO,CAACR,MAAM,CAACT,QAAQ;gBAC/C,MAAMxF,OAAO,AAAC,IAAIzR,KAAK6X,EAAE,GAAIC,YAAY1a,MAAM;gBAC/C4a,WAAWJ,kBAAkBD,gBAAgBM,MAAMxG;YACrD,OAAO;gBACLuG,WAAWJ,kBAAkBD,gBAAiB,CAAA,AAAED,MAAM,CAACT,QAAQ,GAAcjX,KAAK6X,EAAE,GAAI,GAAE;YAC5F;YACA,kDAAkD;YAClD,MAAMM,YAAYpB,KAAK,CAACE,QAAQ;YAChC,MAAMmB,cAAcD,YAAYjB,aAAa,sBAAsB;YACnE,8DAA8D;YAC9D,MAAMtW,IAAIwX,cAAcpY,KAAKqY,GAAG,CAACL;YACjC,MAAMjY,IAAIqY,cAAcpY,KAAKsY,GAAG,CAACN;YAEjC,yEAAyE;YACzE,4EAA4E;YAC5E,IAAIlB,WAAW,KAAKG,YAAY,GAAG;gBACjC,+DAA+D;gBAC/D,8FAA8F;gBAC9FO,UAAUN;YACZ;YAEAxa,OAAOkE,CAAC,CAACuC,IAAI,CAACvC;YACdlE,OAAOqD,CAAC,CAACoD,IAAI,CAACpD;YACduX,KAAKnU,IAAI,CAACvC;YACV2W,KAAKpU,IAAI,CAACpD;QACZ;QAEA,6DAA6D;QAC7D,IAAIrD,OAAOkE,CAAC,IAAIlE,OAAOqD,CAAC,EAAE;YACvBrD,OAAgC+C,IAAI,GAAG/C,OAAOkE,CAAC,CAACzC,GAAG,CAAC,CAAC6K,MAAMiP,MAAS,CAAA;oBACnErX,GAAGoI;oBACHjJ,GAAG,AAACrD,OAAOqD,CAAC,AAAa,CAACkY,IAAI;oBAC9B,GAAIvb,OAAON,IAAI,GAAG;wBAAEA,MAAM,AAACM,OAAON,IAAI,AAAa,CAAC6b,IAAI;oBAAC,IAAI,CAAC,CAAC;gBACjE,CAAA;QACF;QAEAtB,WAAWlX,IAAI,CAACqX,OAAO,GAAGpa;IAC5B;IAEA,wCAAwC;IACxC,IAAI8a,YAAY,MAAM;QACpB,IAAK,IAAIV,SAAS,GAAGA,SAASH,WAAWlX,IAAI,CAACrC,MAAM,EAAE0Z,SAAU;YAC9D,MAAMpa,SAASia,WAAWlX,IAAI,CAACqX,OAAO;YACtC,IAAIpa,OAAOkE,CAAC,IAAIlE,OAAOqD,CAAC,EAAE;gBACxBrD,OAAOkE,CAAC,GAAG,AAAClE,OAAOkE,CAAC,CAAczC,GAAG,CAAC,CAACoa,IAAcA,IAAIf;YAC3D;QACF;QACA,uCAAuC;QACvC,IAAK,IAAI9Y,IAAI,GAAGA,IAAI4Y,KAAKla,MAAM,EAAEsB,IAAK;YACpC4Y,IAAI,CAAC5Y,EAAE,GAAG4Y,IAAI,CAAC5Y,EAAE,GAAG8Y;QACtB;IACF;IAEA,uDAAuD;IACvD,IAAIgB,SAASxY,KAAKjH,GAAG,IAAIue,KAAKnZ,GAAG,CAAC6B,KAAKoS,GAAG,MAAMmF,KAAKpZ,GAAG,CAAC6B,KAAKoS,GAAG;IACjEoG,SAASA,WAAW,IAAI,IAAIA;IAE5B,8DAA8D;IAC9D,IAAK,IAAI1B,SAAS,GAAGA,SAASH,WAAWlX,IAAI,CAACrC,MAAM,EAAE0Z,SAAU;QAC9D,MAAMpa,SAASia,WAAWlX,IAAI,CAACqX,OAAO;QACtC,IAAIpa,OAAOkE,CAAC,IAAIlE,OAAOqD,CAAC,EAAE;YACxBrD,OAAOkE,CAAC,GAAG,AAAClE,OAAOkE,CAAC,CAAczC,GAAG,CAAC,CAACoa,IAAcA,IAAK,CAAA,IAAIC,MAAK;YACnE9b,OAAOqD,CAAC,GAAG,AAACrD,OAAOqD,CAAC,CAAc5B,GAAG,CAAC,CAACoa,IAAcA,IAAK,CAAA,IAAIC,MAAK;QACrE;IACF;IAEA,oEAAoE;IACpE,MAAMlP,OAAO9F,EAAAA,gBAAAA,MAAMxH,MAAM,cAAZwH,oCAAAA,cAAcoB,KAAK,OAAIpB,iBAAAA,MAAMxH,MAAM,cAAZwH,qCAAAA,eAAcqB,MAAM,KAAI;IAC5D8R,WAAW3a,MAAM,GAAG;QAClB,GAAG2a,WAAW3a,MAAM;QACpB4I,OAAO0E;QACPzE,QAAQyE;IACV;IACA,sCAAsC;IACrCqN,WAAW3a,MAAM,CAAiCoP,cAAc,GAAGoM,oBAAAA,qBAAAA,UAAWtX;IAE/E,OAAOyW;AACT,EAAE;AAEF,8DAA8D;AAC9D,SAAS8B,cAAc7W,GAAQ;IAC7B,OACEG,OAAOC,SAAS,CAACf,QAAQ,CAACiB,IAAI,CAACN,SAAS,qBACxCG,OAAO2W,cAAc,CAAC9W,KAAKK,cAAc,CAAC;AAE9C;AAEA,8DAA8D;AAC9D,IAAI0W,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,oBAAoB5V,KAAU;IAC5C,sCAAsC;IACtC6V,eAAeH,eAAe,GAAG;AACnC;AAEA,8DAA8D;AAC9D,SAASG,eAAeC,SAAc,EAAExa,CAAS,EAAEya,WAAgB;IACjE,IAAIxW,OAAOuW,SAAS,CAACN,KAAK,CAACla,EAAE,CAAC;IAC9B,IAAI0a,iBAAiBD,cAAcP,KAAK,CAACla,EAAE;IAC3C,IAAIA,MAAMka,MAAMxb,MAAM,GAAG,GAAG;QAC1B,IAAIrD,oBAAoB4I,OAAO;YAC7BgW,gBAAgBxV,IAAI,CAAC4V,eAAeK;QACtC;IACF,OAAO;QACL,IAAIP,YAAY,CAACna,EAAE,EAAE;YACnB,IAAIX,MAAMC,OAAO,CAAC2E,OAAO;gBACvB,IAAK,IAAI0W,IAAI,GAAGA,IAAI1W,KAAKvF,MAAM,EAAEic,IAAK;oBACpC,IAAIZ,cAAc9V,IAAI,CAAC0W,EAAE,GAAG;wBAC1BJ,eAAetW,IAAI,CAAC0W,EAAE,EAAE3a,IAAI,GAAG0a,iBAAiB,MAAMC,IAAI;oBAC5D;gBACF;YACF;QACF,OAAO,IAAIZ,cAAc9V,OAAO;YAC9BsW,eAAetW,MAAMjE,IAAI,GAAG0a,iBAAiB;QAC/C;IACF;AACF;AAEA,SAAS7R,eAAenB,IAAsC;IAC5D,IAAI,CAACA,MAAM;QACT;IACF;IAEA,IAAIiB,cAAoC,CAAC;IACzC,IAAIjB,KAAK1K,IAAI,EAAE;QACb2L,cAAc;YAAE,GAAGA,WAAW;YAAE,GAAGjM,WAAW,CAACgL,KAAK1K,IAAI,CAAC;QAAC;IAC5D;IAEA,OAAQ0K,KAAKkT,KAAK;QAChB,KAAK;YACH,MAAMC,YAAY,OAAOnT,KAAKmT,SAAS,KAAK,WAAWnT,KAAKmT,SAAS,GAAG;YACxElS,YAAYmS,KAAK,GAAG5e,gBAAgB6e,OAAO,CAAC,IAAIF,YAAY;YAC5D;QACF,KAAK;YACHlS,YAAYmS,KAAK,GAAG;YACpB;QACF,KAAK;YACHnS,YAAYmS,KAAK,GAAG;YACpB;QACF,KAAK;YACHnS,YAAYmS,KAAK,GAAG;YACpB;QACF;YACEnS,YAAYmS,KAAK,GAAG;IACxB;IAEA,OAAOzX,OAAOc,IAAI,CAACwE,aAAajK,MAAM,GAAG,IAAIiK,cAAcnH;AAC7D;AAEA,yEAAyE;AACzE,MAAMwJ,eAAe,CACnBgQ,MACAtX,OACAuX;IAEA,IAAI,OAAOvX,UAAU,eAAeA,UAAU,MAAM;QAClD,OAAO,CAAC;IACV;IAEA,OAAOuX,WACH,AAACD,KAAoBpD,SAAS,CAAC/d,CAAAA,MAAOA,IAAIgJ,QAAQ,CAACa,UACnD,AAACsX,KAA+BpD,SAAS,CACvC,CAAC/d,KAAKiG,QACJ,AAAC4D,SAAoB7J,IAAI2R,EAAE,IAC1B1L,CAAAA,UAAUkb,KAAKtc,MAAM,GAAG,IAAI,AAACgF,SAAoB7J,IAAI4R,EAAE,GAAI,AAAC/H,QAAmB7J,IAAI4R,EAAE;AAEhG;AAEA,MAAMJ,aAAa,CAACxR;IAClB,OAAOA,IAAI4R,EAAE,GAAI5R,IAAI2R,EAAE;AACzB;AAEA,MAAMD,eAAe,CAAC1R;IACpB,OAAO,AAACA,CAAAA,IAAI4R,EAAE,GAAI5R,IAAI2R,EAAE,IAAK;AAC/B;AAEA,kCAAkC;AAClC,MAAMhB,aAAa,CACjBzJ,MACAma,UACAC,QACAC;IAEA,IAAI,CAACra,QAAQA,KAAKrC,MAAM,KAAK,GAAG;QAC9B,OAAO,EAAE;IACX;IAEA,IAAIjD,cAAcsF,OAAO;QACvB,MAAMqW,aAAa/X,MAAM0Z,IAAI,CAAC,IAAI1U,IAAItD;QACtC,MAAM2J,QAAQ,OAAOwQ,aAAa,WAAW5Z,KAAK+Z,IAAI,CAACH,YAAY;QACnE,MAAMI,OAAO,OAAOH,WAAW,WAAW7Z,KAAKia,KAAK,CAACJ,UAAU,IAAI/D,WAAW1Y,MAAM;QACpF,MAAMqU,OAAO,OAAOqI,YAAY,WAAWA,UAAU;QAErD,OAAO5gB,QAAQkQ,OAAO4Q,MAAMvI,MAAMtT,GAAG,CAACO,CAAAA,IAAKoX,WAAWnP,KAAK,CAACjI,GAAGA,IAAI+S;IACrE;IAEA,MAAMyI,QAAQ9gB,gBACX+gB,MAAM,CAACzhB,SAAiB+G,OACxB2a,IAAI;IACP,IAAI,CAACC,QAAQC,OAAO,GAAGJ,MAAMC,MAAM;IAEnCE,SAAS,OAAOT,aAAa,WAAWA,WAAWS;IACnDC,SAAS,OAAOT,WAAW,WAAWA,SAASS;IAE/C,MAAMC,eAAe/hB,QAAQ2hB,MAAM,CAAC;QAACE;QAAQC;KAAO;IAEpD,IAAI,OAAOR,YAAY,YAAYA,UAAU,GAAG;QAC9C,MAAMU,aAAuB,EAAE;QAC/B,MAAMC,YAAYza,KAAKjH,GAAG,CAACc,mBAAmBwgB,SAASxgB,mBAAmBigB;QAC1E,IAAIY,KAAK5gB,eAAeugB,QAAQI;QAEhC,MAAOC,KAAK5gB,eAAewgB,SAASR,SAASW,WAAY;YACvDD,WAAWrX,IAAI,CAACuX;YAChBA,KAAK5gB,eAAe4gB,KAAKZ,SAASW;QACpC;QAEAJ,SAASG,UAAU,CAAC,EAAE;QACtBF,SAASE,UAAU,CAACA,WAAWpd,MAAM,GAAG,EAAE;QAC1Cmd,aAAaJ,MAAM,CAAC;YAACE;YAAQC;SAAO,EAAEE,UAAU,CAACA;QAEjD,8FAA8F;QAC9F,kGAAkG;QAClG,gFAAgF;QAChF,uEAAuE;QACvE,OAAOD,aAAa9a,MAAkBkH,KAAK,CAAC,GAAG,CAAC;IAClD;IACA,OAAO4T,aAAa9a;AACtB;AAEA,MAAMkK,oBAAoB,CAACC,UAA4CrR;IACrE,OAAQqR;QACN,KAAK;YACH,OAAOhR,MAAML;QACf,KAAK;YACH,OAAOA,IAAI6E,MAAM,KAAK,IAAI,IAAIxE,MAAML,OAAOA,IAAI6E,MAAM;QACvD,KAAK;gBACItE;YAAP,OAAOA,CAAAA,SAAAA,MAAMP,kBAANO,oBAAAA,SAAc;QACvB,KAAK;gBACIE;YAAP,OAAOA,CAAAA,SAAAA,MAAMT,kBAANS,oBAAAA,SAAc;QACvB;YACE,OAAOT,IAAI6E,MAAM;IACrB;AACF;AAEA,MAAMyM,oBAAoB,CACxBC,UACA1H,OACAoH,OACAmR,IACAC,KAAa,CAAC;IAEd,OAAQ9Q;QACN,KAAK;YACH,OAAON,UAAU,IAAI,IAAI,AAACpH,QAAQoH,QAAS;QAC7C,KAAK;YACH,OAAOA,UAAU,IAAI,IAAIpH,QAAQoH;QACnC,KAAK;YACH,OAAOmR,KAAKC,OAAO,IAAI,IAAIxY,QAASuY,CAAAA,KAAKC,EAAC;QAC5C,KAAK;YACH,OAAOpR,QAAQmR,KAAKC,OAAO,IAAI,IAAIxY,QAASoH,CAAAA,QAAQmR,KAAKC,EAAC;QAC5D;YACE,OAAOxY;IACX;AACF;AAEA,MAAMqF,iBAAiB,CAAC/K;QACLA,cAGNA;IAHX,MAAMme,WAAWne,EAAAA,eAAAA,OAAO0J,IAAI,cAAX1J,mCAAAA,aAAahB,IAAI,KAAI;IACtC,IAAImf,aAAa,SAASA,aAAa,UAAUA,aAAa,WAAW;QACvE,OAAO;IACT,OAAO,KAAIne,eAAAA,OAAO4K,IAAI,cAAX5K,mCAAAA,aAAa6E,QAAQ,CAAC,YAAY;QAC3C,OAAO;IACT;IACA,OAAO;AACT;AAEA,OAAO,MAAMuZ,uBAAuB,CAClCtX,OACAhD,UACAF,cACAya,WACAta;IAEA,MAAMua,eAAyB,EAAE;IACjC,+GAA+G;IAC/G,MAAMC,eAAezX,MAAM/D,IAAI,CAACuM,MAAM,CAAC,CAACkP,KAAKxe;QAC3C,OACEwe,OAAO,AAACxe,OAA6B4I,UAAU,KAAK,QAAQ,AAAC5I,OAA6B4I,UAAU,KAAKpF;IAE7G,GAAG;IAEH,IAAI+a,cAAc;QAChBzX,MAAM/D,IAAI,CAACI,OAAO,CAAC,CAACnD,QAAc8B;YAChC,IAAIuc,SAAS,CAACvc,MAAM,CAAC6E,IAAI,KAAK,SAAS;oBAGnCG,eAA6BA,+BAAAA,wBAAAA,gBAE7BA,gBAA6B2X,mBAK/BA;gBATA,MAAMA,YAAYze;oBAEhB8G,2BAEAA;gBAHF,MAAMG,SAA+C7I,aACnD0I,CAAAA,6BAAAA,gBAAAA,MAAMxH,MAAM,cAAZwH,oCAAAA,cAAcI,WAAW,cAAzBJ,uCAAAA,6BAA6BA,iBAAAA,MAAMxH,MAAM,cAAZwH,sCAAAA,yBAAAA,eAAcK,QAAQ,cAAtBL,8CAAAA,gCAAAA,uBAAwBxH,MAAM,cAA9BwH,oDAAAA,8BAAgCnD,QAAQ,EACrEC,cACAkD,CAAAA,8BAAAA,iBAAAA,MAAMxH,MAAM,cAAZwH,qCAAAA,eAAcI,WAAW,cAAzBJ,wCAAAA,6BAA6B2X,sBAAAA,iCAAAA,oBAAAA,UAAWrX,MAAM,cAAjBqX,wCAAAA,kBAAmBxX,MAAM,EACtDnD,UACAC;iBAGF0a,oBAAAA,UAAUnX,MAAM,cAAhBmX,wCAAAA,kBAAkBtb,OAAO,CAAC,CAACoE,OAAOmX;oBAChC,MAAMhX,SAAS,GAAGH,OAAO;oBACzB,0DAA0D;oBAC1D,MAAM1D,QAAgBxF,aAAa4I,QAAQyX,YAAYhX,QAAQ5D,UAAUC;oBACzE,IAAI2D,WAAW,MAAM4W,aAAavS,IAAI,CAAC4S,CAAAA,QAASA,MAAMlf,KAAK,KAAKiI,YAAY,OAAO;wBACjF4W,aAAa7X,IAAI,CAAC;4BAChBhH,OAAOiI;4BACP7D;wBACF;oBACF;gBACF;YACF,OAAO,IAAI+a,cAAcP,SAAS,CAACvc,MAAM,CAAC6E,IAAI,MAAM,OAAO;oBAG3CkY,kBAA0BA,oBAGtC/X,gCAAAA,yBAAAA;gBALF,MAAM+X,aAAa7e;gBACnB,MAAM4G,OAAOiY,WAAWC,WAAW;gBACnC,MAAMjb,QAAQgb,EAAAA,mBAAAA,WAAWnV,IAAI,cAAfmV,uCAAAA,iBAAiBhb,KAAK,OAAIgb,qBAAAA,WAAWzX,MAAM,cAAjByX,yCAAAA,mBAAmBhb,KAAK;gBAChE,MAAMiH,cAAcC,eAAe8T;gBACnC,MAAME,gBAAgB3gB,cACpB0I,iBAAAA,MAAMxH,MAAM,cAAZwH,sCAAAA,0BAAAA,eAAcK,QAAQ,cAAtBL,+CAAAA,iCAAAA,wBAAwBxH,MAAM,cAA9BwH,qDAAAA,+BAAgCnD,QAAQ,EACxCC,cACAC,OACAC,UACAC;gBAEF,IAAI6C,SAASpD,aAAaoD,SAAS,MAAM0X,aAAavS,IAAI,CAAC4S,CAAAA,QAASA,MAAMlf,KAAK,KAAKmH,UAAU,OAAO;oBACnG0X,aAAa7X,IAAI,CAAC;wBAChBhH,OAAOmH;wBACP/C,OAAOkb;wBACPnC,OAAO9R;oBACT;gBACF;YACF;QACF;IACF;IAEA,OAAO;QACL1B,SAASkV;QACTU,eAAe;QACfC,kBAAkB;QAClBC,0BAA0B;IAC5B;AACF,EAAE;AAEF,MAAM7V,iBAAiB,CAACtG,MAAczD,QAAqCyH;IACzE,MAAMqC,UAAoB,EAAE;IAC5B,IAAIrG,KAAKrC,MAAM,KAAK,GAAG;QACrB0I,QAAQ3C,IAAI,CAAC1D,IAAI,CAAC,EAAE,CAAC6D,IAAI,IAAI;IAC/B,OAAO;QACL7D,KAAKI,OAAO,CAAC,CAACnD,QAAQ8B;YACpBsH,QAAQ3C,IAAI,CAACzG,OAAO4G,IAAI,IAAI,CAAC,OAAO,EAAE9E,QAAQ,GAAG;QACnD;IACF;IAEA,MAAMqd,kBAAkBpc,KAAKyW,KAAK,CAAC,CAACxZ,SAA8BA,OAAO4I,UAAU,KAAK;IACxF,MAAMwW,sBAAsB9f,CAAAA,mBAAAA,6BAAAA,OAAQsJ,UAAU,MAAK,SAAUtJ,CAAAA,mBAAAA,6BAAAA,OAAQsJ,UAAU,MAAK,QAAQQ,QAAQ1I,MAAM,GAAG;IAE7G,OAAO;QACL0I;QACAT,YAAY5B,eAAeqY,uBAAuBD;IACpD;AACF;AAEA,OAAO,MAAM3X,4BAA4B,CAACzE,MAAiCjB;IACzE,IAAIzE,oBAAoB0F,OAAO;QAC7B,IAAI,OAAOA,IAAK,CAACjB,MAAM,KAAK,YAAY,CAACud,SAAStc,IAAK,CAACjB,MAAM,GAAa;YACzE;QACF;QAEA,OAAOiB,IAAK,CAACjB,MAAM;IACrB;IAEA,OAAO;AACT,EAAE;AAEF,OAAO,MAAM8H,mBAAmB,CAAC5J;IAC/B,IAAI,CAAC3C,oBAAoB2C,OAAOkE,CAAC,KAAK,CAAC7G,oBAAoB2C,OAAOqD,CAAC,GAAG;QACpE,OAAO,EAAE;IACX;IAEA,MAAMic,SAA6B,EAAE;IACrC,IAAI5S,QAAQ;IACZ,IAAIC,MAAM;IACV,MAAOA,MAAM3M,OAAOkE,CAAC,CAAExD,MAAM,EAAEiM,MAAO;QACpC,IAAIhP,eAAeqC,OAAOkE,CAAC,AAAC,CAACyI,IAAI,KAAKhP,eAAeqC,OAAOqD,CAAC,AAAC,CAACsJ,IAAI,GAAG;YACpE,IAAIA,MAAMD,QAAQ,GAAG;gBACnB4S,OAAO7Y,IAAI,CAAC;oBAACiG;oBAAOC;iBAAI;YAC1B;YACAD,QAAQC,MAAM;QAChB;IACF;IACA,IAAIA,MAAMD,QAAQ,GAAG;QACnB4S,OAAO7Y,IAAI,CAAC;YAACiG;YAAOC;SAAI;IAC1B;IAEA,OAAO2S;AACT,EAAE;AAEF,MAAMC,kBAAkB,CAAC7a,KAAa8a;IACpC,MAAMC,gBAAgB/a,IAAI0R,OAAO,CAACoJ,SAAS,QAAQ,KAAK,MAAM9a,IAAI0R,OAAO,CAACoJ,SAAS;IACnF,OAAOE,SAASD,eAAe,MAAM;AACvC;AAEA,OAAO,MAAMb,gBAAgB,CAAC7Q;IAC5B,OAAO;QAAC;QAAS;QAAU;KAAM,CAAClJ,QAAQ,CAACkJ;AAC7C,EAAE;AAEF,OAAO,MAAM4R,oBAAoB,CAC/BC,QACA7Y,aACA8Y;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,CAACrZ,aAAa;QAChB,OAAO;YAAEmZ;YAAcC;YAAiB7gB,QAAQ8gB;QAAW;IAC7D;IAEA,MAAM9gB,SAASsgB,mBAAAA,6BAAAA,OAAQtgB,MAAM;IAE7B,IAAIA,WAAWkE,aAAalE,WAAW,QAAQ+F,OAAOc,IAAI,CAAC7G,QAAQoB,MAAM,GAAG,GAAG;QAC7E2E,OAAOc,IAAI,CAAC7G,mBAAAA,oBAAAA,SAAU,CAAC,GAAG6D,OAAO,CAACuB,CAAAA;YAChC,IAAIA,IAAI2b,UAAU,CAAC,UAAU;oBAEX/gB;gBADhB,MAAMwC,QAAQyd,gBAAgB7a,KAAK;oBACpB;gBAAf,MAAM9B,SAAS,CAAA,sBAACtD,cAAAA,MAAM,CAACoF,IAA2B,cAAlCpF,kCAAD,AAACA,YAA4DsD,MAAM,cAAnE,gCAAA,qBAAuE;gBACtF,MAAM0d,cAAcf,gBAAgB3c,QAAQ;gBAC5C,IAAId,UAAUwe,aAAa;oBACzB,MAAM,IAAI/e,MAAM,CAAC,sBAAsB,EAAEO,QAAQ,EAAE,mBAAmB,EAAEwe,cAAc,GAAG;gBAC3F;gBACA,MAAMC,cAAcjhB,MAAM,CAACoF,IAA2B;gBACtD,MAAM8b,cAA8B;oBAClC9T,OAAO6T,CAAAA,wBAAAA,kCAAAA,YAAa9C,MAAM,IAAG8C,YAAY9C,MAAM,CAAC,EAAE,GAAG;oBACrD9Q,KAAK4T,CAAAA,wBAAAA,kCAAAA,YAAa9C,MAAM,IAAG8C,YAAY9C,MAAM,CAAC,EAAE,GAAG;gBACrD;gBACAqC,QAAQrZ,IAAI,CAAC+Z;YACf,OAAO,IAAI9b,IAAI2b,UAAU,CAAC,UAAU;oBAElB/gB;gBADhB,MAAMwC,QAAQyd,gBAAgB7a,KAAK;oBACpB;gBAAf,MAAM9B,SAAS,CAAA,uBAACtD,eAAAA,MAAM,CAACoF,IAA2B,cAAlCpF,mCAAD,AAACA,aAA4DsD,MAAM,cAAnE,iCAAA,sBAAuE;gBACtF,MAAM0d,cAAcf,gBAAgB3c,QAAQ;gBAC5C,IAAId,UAAUwe,aAAa;wBACiBhhB;oBAA1C,IAAI,AAACwC,UAAU,KAAKwe,gBAAgB,KAAMhhB,EAAAA,iBAAAA,OAAOqD,MAAM,cAAbrD,qCAAAA,eAAeuD,IAAI,MAAK,SAAS;wBACzE,kEAAkE;wBAClE,OAAO;4BAAEqd;4BAAcC;wBAAgB;oBACzC;oBACA,MAAM,IAAI5e,MAAM,CAAC,sBAAsB,EAAEO,QAAQ,EAAE,mBAAmB,EAAEwe,cAAc,GAAG;gBAC3F;gBACA,MAAMG,cAAcnhB,MAAM,CAACoF,IAA2B;gBACtD,MAAMgc,cAA8B;oBAClChU,OAAO+T,CAAAA,wBAAAA,kCAAAA,YAAahD,MAAM,IAAGgD,YAAYhD,MAAM,CAAC,EAAE,GAAG;oBACrD9Q,KAAK8T,CAAAA,wBAAAA,kCAAAA,YAAahD,MAAM,IAAGgD,YAAYhD,MAAM,CAAC,EAAE,GAAG;gBACrD;gBACAsC,QAAQtZ,IAAI,CAACia;YACf;QACF;IACF;IAEAV,mBAAmBF,QAAQpf,MAAM,EAAE,uDAAuD;IAC1Fmf,gBAAgB1c,OAAO,CAAC,CAACuD,OAAO5E;QAC9B,IAAI8c,cAAclY,MAAMC,IAAI,GAAG;gBACdiZ,cAEN5f,gBACFA,iBAGEA,iBACFA;YAPP,MAAMA,SAAS4f,mBAAAA,8BAAAA,eAAAA,OAAQ7c,IAAI,cAAZ6c,mCAAAA,YAAc,CAAC9d,MAAM;YACpC,MAAM0e,cAA8B;gBAClC9T,OAAO1M,EAAAA,iBAAAA,OAAOyd,MAAM,cAAbzd,qCAAAA,eAAekE,CAAC,IAAGlE,OAAOyd,MAAM,CAACvZ,CAAC,CAAC,EAAE,GAAG;gBAC/CyI,KAAK3M,EAAAA,kBAAAA,OAAOyd,MAAM,cAAbzd,sCAAAA,gBAAekE,CAAC,IAAGlE,OAAOyd,MAAM,CAACvZ,CAAC,CAAC,EAAE,GAAG;YAC/C;YACA,MAAMwc,cAA8B;gBAClChU,OAAO1M,EAAAA,kBAAAA,OAAOyd,MAAM,cAAbzd,sCAAAA,gBAAeqD,CAAC,IAAGrD,OAAOyd,MAAM,CAACpa,CAAC,CAAC,EAAE,GAAG;gBAC/CsJ,KAAK3M,EAAAA,kBAAAA,OAAOyd,MAAM,cAAbzd,sCAAAA,gBAAeqD,CAAC,IAAGrD,OAAOyd,MAAM,CAACpa,CAAC,CAAC,EAAE,GAAG;YAC/C;YACAyc,QAAQrZ,IAAI,CAAC+Z;YACbT,QAAQtZ,IAAI,CAACia;QACf;IACF;IAEA,IAAIphB,WAAWkE,aAAalE,WAAW,QAAQ+F,OAAOc,IAAI,CAAC7G,QAAQoB,MAAM,GAAG,GAAG;YAC7EpB;SAAAA,sBAAAA,OAAO2gB,WAAW,cAAlB3gB,0CAAAA,oBAAoB6D,OAAO,CAACwd,CAAAA;YAC1B,MAAMC,WAAWd,QAAQe,OAAO,CAAC,CAACC,UAAUvF,MAC1C,CAACoF,uBAAAA,iCAAAA,WAAYzc,CAAC,KAAe4c,SAASpU,KAAK,IAAI,CAACiU,uBAAAA,iCAAAA,WAAYzc,CAAC,KAAe4c,SAASnU,GAAG,GAAG;oBAAC4O;iBAAI,GAAG,EAAE;YAEvG,MAAMwF,SAAShB,QAAQnG,SAAS,CAC9B,CAACkH,UAAUE,SACTJ,SAAS/b,QAAQ,CAACmc,WAClB,CAACL,uBAAAA,iCAAAA,WAAYtd,CAAC,KAAeyd,SAASpU,KAAK,IAC3C,CAACiU,uBAAAA,iCAAAA,WAAYtd,CAAC,KAAeyd,SAASnU,GAAG;YAG7C,IAAIoU,WAAW,CAAC,GAAG;gBACjB,IAAId,WAAW,CAACc,OAAO,KAAKvd,WAAW;oBACrCyc,WAAW,CAACc,OAAO,GAAG,CAAC;gBACzB;gBACA,IAAI,CAACJ,uBAAAA,iCAAAA,WAAYM,SAAS,MAAgB,IAAI;oBAC5ChB,WAAW,CAACc,OAAO,CAACG,WAAW,GAAGP,WAAWjhB,IAAI;gBACnD,OAAO;oBACLugB,WAAW,CAACc,OAAO,CAACI,WAAW,GAAGR,WAAWjhB,IAAI;gBACnD;YACF;QACF;IACF;IAEA,IAAIogB,QAAQpf,MAAM,GAAG,GAAG;QACtB,MAAM0gB,mBAAmB,IAAIC;QAC7BvB,QAAQ3c,OAAO,CAAC2d,CAAAA;YACd,MAAMpc,MAAM,GAAGoc,SAASpU,KAAK,CAAC,CAAC,EAAEoU,SAASnU,GAAG,EAAE;YAC/C,IAAI,CAACyU,iBAAiBE,GAAG,CAAC5c,MAAM;gBAC9B0c,iBAAiBG,GAAG,CAAC7c,KAAKoc;YAC5B;QACF;QACA,MAAMU,eAAengB,MAAM0Z,IAAI,CAACqG,iBAAiB3Z,MAAM,IACpDhG,GAAG,CAACqf,CAAAA,WAAYA,SAASpU,KAAK,EAC9B5E,IAAI;QAEPqY,kBAAkB,CAAC,OAAO,EAAEqB,aAAa9gB,MAAM,CAAC,MAAM,CAAC;QAEvDof,QAAQ3c,OAAO,CAAC,CAAC2d,UAAUhf;YACzB,MAAM2f,WACJ3f,SAASke,mBACL,GAAGxhB,sBAAsBsD,QAAQke,mBAAmB,GAAG,GACtD,CAAC,CAAC,EAAEle,UAAU,IAAI,KAAKA,QAAQ,GAAG;YAEzC,MAAM4f,cAAcF,aAAa5H,SAAS,CAAClN,CAAAA,QAASA,UAAUoU,SAASpU,KAAK;YAC5E,MAAMiV,eAAeD,cAAc,GAAG,6BAA6B;YAEnE,MAAME,kBAAkB3B,WAAW,CAACne,MAAM;YAC1C,MAAMqf,cAAcS,4BAAAA,sCAAAA,gBAAiBT,WAAW;YAEhD,MAAMhP,MAAsB;gBAC1BA,KAAK,CAAC;gBACN0P,QAAQF;gBACRR;gBACAW,SAAShB;gBACTiB,SAAS;oBAAErV,OAAO;oBAAGC,KAAK;gBAAE;YAC9B;YACAyT,UAAU,CAACqB,SAAS,GAAGtP;QACzB;IACF;IACA,IAAI4N,QAAQrf,MAAM,GAAG,GAAG;QACtB,MAAMshB,mBAAmB,IAAIX;QAC7BtB,QAAQ5c,OAAO,CAAC2d,CAAAA;YACd,MAAMpc,MAAM,GAAGoc,SAASpU,KAAK,CAAC,CAAC,EAAEoU,SAASnU,GAAG,EAAE;YAC/C,IAAI,CAACqV,iBAAiBV,GAAG,CAAC5c,MAAM;gBAC9Bsd,iBAAiBT,GAAG,CAAC7c,KAAKoc;YAC5B;QACF;QACA,MAAMmB,eAAe5gB,MAAM0Z,IAAI,CAACiH,iBAAiBva,MAAM,IACpDhG,GAAG,CAACqf,CAAAA,WAAYA,SAASpU,KAAK,EAC9B5E,IAAI;QAEP,MAAM6I,eAAesR,aAAavhB,MAAM;QAExCwf,eAAe,CAAC,OAAO,EAAEvP,aAAa,MAAM,CAAC;QAC7CoP,QAAQ5c,OAAO,CAAC,CAAC2d,UAAUhf;YACzB,MAAM2f,WACJ3f,SAASke,mBACL,GAAGxhB,sBAAsBsD,QAAQke,mBAAmB,GAAG,GACtD,CAAC,CAAC,EAAEle,UAAU,IAAI,KAAKA,QAAQ,GAAG;YACzC,MAAMgV,WAAWmL,aAAarI,SAAS,CAAClN,CAAAA,QAASA,UAAUoU,SAASpU,KAAK;YACzE,MAAMwV,YAAYvR,eAAemG,UAAU,iEAAiE;YAE5G,MAAM8K,kBAAkB3B,WAAW,CAACne,MAAM;YAC1C,MAAMof,cAAcU,4BAAAA,sCAAAA,gBAAiBV,WAAW;YAEhD,MAAMxJ,OAAO0I,UAAU,CAACqB,SAAS;YAEjC,IAAI/J,SAASlU,WAAW;gBACtBkU,KAAKvF,GAAG,GAAG+P;gBACXxK,KAAKwJ,WAAW,GAAGA;gBACnBxJ,KAAKqK,OAAO,GAAGjB;YACjB;QACF;IACF;IAEA,OAAO;QACLZ;QACAC;QACA7gB,QAAQ8gB;IACV;AACF,EAAE;AAIF;;CAEC,GACD,MAAM5U,4BAA4B,CAACzI,MAAczD;IAC/C,MAAM6iB,SAA0C,CAAC;IAEjD,MAAMC,WAA4D;QAChEle,CAAC,EAAE5E,mBAAAA,6BAAAA,OAAQM,KAAK;QAChByD,CAAC,EAAE/D,mBAAAA,6BAAAA,OAAQQ,KAAK;IAClB;IACAuF,OAAOc,IAAI,CAACic,UAAUjf,OAAO,CAACkf,CAAAA;QAC5B,MAAMC,KAAKF,QAAQ,CAACC,KAAK;QACzB,MAAME,WAAWF,IAAI,CAAC,EAAE;QACxB,MAAMG,WAAW,GAAGD,SAAS,iBAAiB,CAAC;QAE/C,MAAM9a,SAAkB,EAAE;QAC1B1E,KAAKI,OAAO,CAAC,CAACnD;gBACZA;aAAAA,mBAAAA,MAAM,CAACuiB,SAAS,cAAhBviB,uCAAAA,iBAAkBmD,OAAO,CAAC8Q,CAAAA;gBACxB,IAAI,CAACtW,eAAesW,MAAM;oBACxBxM,OAAOhB,IAAI,CAACwN;gBACd;YACF;QACF;QAEA,MAAMwO,qBACJH,CAAAA,eAAAA,yBAAAA,GAAI3b,IAAI,MAAK,cAAelJ,cAAcgK,WAAW,CAACjK,cAAciK,WAAW,CAAClK,YAAYkK;QAC9F,IAAI,CAACgb,oBAAoB;YACvB;QACF;QAEA,MAAMC,eAAerlB,oBAAoBilB,eAAAA,yBAAAA,GAAIK,aAAa,KAAKL,GAAIK,aAAa,CAAEjiB,MAAM,GAAG;QAC3F,IAAIgiB,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,yBAAyBxhB,MAAM0Z,IAAI,CAAC,IAAI1U,IAAIoB;YAClD0a,MAAM,CAACK,SAAS,GAAGK;YACnB;QACF;QAEAV,MAAM,CAACK,SAAS,GAAGF,GAAGM,aAAa;IACrC;IAEA,OAAOT;AACT;AAEA,MAAM1W,cAAc,CAClB1I,MACAzD,QACAwjB;IAIA,IAAItS;IAEJ,IAAI,QAAOlR,mBAAAA,6BAAAA,OAAQyjB,MAAM,MAAK,UAAU;QACtC,IAAIzjB,OAAOyjB,MAAM,IAAI,KAAKzjB,OAAOyjB,MAAM,IAAI,GAAG;YAC5CvS,UAAUlR,OAAOyjB,MAAM;QACzB,OAAO;YACL,+KAA+K;YAC/K,wFAAwF;YACxF,sDAAsD;YACtDvS,UAAU;QACZ;IACF;IAEA,MAAMwS,kBAAkBjgB,KACrBtB,GAAG,CAAC,CAACzB;QACJ,IAAIA,OAAO2G,IAAI,KAAK,SAAUtJ,CAAAA,oBAAoB2C,OAAOkI,KAAK,KAAK,OAAOlI,OAAOkI,KAAK,KAAK,QAAO,GAAI;YACpG,OAAOlI,OAAOkI,KAAK;QACrB;QACA,OAAO,EAAE;IACX,GACC+D,IAAI;IACP,MAAMgX,oBAAoB3mB,MAAM0mB;IAChC,IAAI,OAAOC,sBAAsB,UAAU;QACzCzS,UAAU,IAAIyS;QACdzS,UAAUlN,KAAKjH,GAAG,CAAC,GAAGiH,KAAKnH,GAAG,CAACqU,SAAS;IAC1C;IAEA,IAAI,OAAOA,YAAY,aAAa;QAClC,OAAO,CAAC;IACV;IAEA,IAAIsS,cAAc;QAChB,OAAO;YACLI,cAAc;YACdC,cAAc3S;QAChB;IACF;IAEA,OAAO;QACLvF,UAAU;QACVyC,aAAa;QACb0V,mBAAmB5S;QACnB6S,mBAAmB7S,UAAU;IAC/B;AACF;AAIA,MAAMR,wBAAwB,CAACjN,MAAczD;QAKvCgkB,gBAGAA,gBAGAA;IAVJ,MAAMnB,SAAsC,CAAC;IAE7C,MAAMmB,cAAcC,eAAexgB,MAAMzD;IAEzC,IAAIgkB,EAAAA,iBAAAA,YAAYpf,CAAC,cAAbof,qCAAAA,eAAe3c,IAAI,MAAK,OAAO;QACjCwb,OAAOqB,UAAU,GAAG;IACtB;IACA,IAAIF,EAAAA,iBAAAA,YAAYjgB,CAAC,cAAbigB,qCAAAA,eAAe3c,IAAI,MAAK,OAAO;QACjCwb,OAAOsB,UAAU,GAAG;IACtB;IACA,IAAIH,EAAAA,kBAAAA,YAAYI,EAAE,cAAdJ,sCAAAA,gBAAgB3c,IAAI,MAAK,OAAO;QAClCwb,OAAOwB,mBAAmB,GAAG;IAC/B;IAEA,OAAOxB;AACT;AAOA;;CAEC,GACD,MAAMzW,mBAAmB,CAAC3I,MAAczD;IACtC,MAAMskB,QAAgC,CAAC;IACvC,MAAMN,cAAcC,eAAexgB,MAAMzD;IAEzC+F,OAAOc,IAAI,CAACmd,aAAangB,OAAO,CAACkf,CAAAA;QAC/B,MAAMC,KAAKgB,WAAW,CAACjB,KAAK;QAC5B,IAAI,CAACC,IAAI;YACP;QACF;QAEA,MAAMuB,SAASC,YAAY/gB,MAAMsf,IAAI,CAAC,EAAE,EAAeC;QAEvD,IAAI,AAAC,CAAA,CAACA,GAAGyB,QAAQ,IAAIzB,GAAGyB,QAAQ,KAAK,OAAM,KAAM1mB,oBAAoBilB,GAAG0B,QAAQ,GAAG;YACjF,MAAMC,aAAaJ,WAAW,SAASvB,GAAG0B,QAAQ,CAAEviB,GAAG,CAAC,CAACoa,IAA8B,IAAI1a,KAAK0a,MAAMyG,GAAG0B,QAAQ;YAEjH,IAAI3B,SAAS,KAAK;gBAChBuB,MAAMK,UAAU,GAAGA;YACrB,OAAO,IAAI5B,SAAS,KAAK;gBACvBuB,MAAMM,eAAe,GAAGD;YAC1B;YACA;QACF;QAEA,IAAI,AAAC,CAAA,CAAC3B,GAAGyB,QAAQ,IAAIzB,GAAGyB,QAAQ,KAAK,QAAO,KAAMzB,GAAG6B,KAAK,EAAE;YAC1D,MAAMA,QAAQC,YAAY9B,GAAG6B,KAAK,EAAEN;YACpC,MAAMQ,QAAQC,YAAYhC,GAAG+B,KAAK,EAAER,QAAQM;YAE5C,IAAI9B,SAAS,KAAK;gBAChBuB,MAAM3jB,KAAK,GAAG;oBACZskB,UAAUJ;oBACVE,OAAOA;gBACT;YACF,OAAO,IAAIhC,SAAS,KAAK;gBACvBuB,MAAMtjB,KAAK,GAAG;oBACZikB,UAAUJ;oBACVE,OAAOA;gBACT;YACF;YACA;QACF;QAEA,IAAI,AAAC,CAAA,CAAC/B,GAAGyB,QAAQ,IAAIzB,GAAGyB,QAAQ,KAAK,MAAK,KAAM,OAAOzB,GAAGkC,MAAM,KAAK,YAAYlC,GAAGkC,MAAM,IAAI,GAAG;YAC/F,IAAInC,SAAS,KAAK;gBAChBuB,MAAMa,cAAc,GAAGnC,GAAGkC,MAAM;YAClC,OAAO,IAAInC,SAAS,KAAK;gBACvBuB,MAAMc,cAAc,GAAGpC,GAAGkC,MAAM;YAClC;QACF;IACF;IAEA,OAAOZ;AACT;AAEA;;CAEC,GACD,MAAMQ,cAAc,CAACD,OAA+BN;IAClD,MAAMc,UAAUd,WAAW;IAC3B,MAAMe,WAAWf,WAAW;IAC5B,MAAMgB,UAAUhB,WAAW;IAC3B,MAAMiB,YAAYF,WAAW,WAAW;IAExC,IAAI,CAACT,OAAO;QACV,OAAOW;IACT;IAEA,IAAIjnB,SAASsmB,QAAQ;QACnBA,QAAQ5S,OAAO4S;QACf,IAAIA,SAAS,GAAG;YACd,OAAOW;QACT;QACA,IAAID,SAAS;YACX,2CAA2C;YAC3C,OAAOvhB,KAAKjH,GAAG,CAAC,GAAGiH,KAAKyhB,KAAK,CAACZ;QAChC;QACA,IAAIS,UAAU;YACZ,4DAA4D;YAC5D,OAAOthB,KAAKjH,GAAG,CAAC,KAAK8nB;QACvB;QACA,OAAOA;IACT;IAEA,IAAI,OAAOA,UAAU,YAAY,CAAES,CAAAA,YAAYD,OAAM,GAAI;QACvD,OAAOG;IACT;IAEA,MAAM3f,SAASgf,MAAMa,MAAM,CAAC;IAC5B,MAAMC,WAAWpnB,SAASsmB,MAAMla,KAAK,CAAC,MAAMsH,OAAO4S,MAAMla,KAAK,CAAC,MAAM;IAErE,IACEgb,YAAY,KACZ,CACE,8CAA8C;IAE5C,CAAA,AAACL,YAAYzf,WAAW,OAAO8f,aAAa3hB,KAAKyhB,KAAK,CAACE,aACvD,+EAA+E;IAC9EN,WAAWxf,WAAW,OACvB,iFAAiF;IAChFwf,WAAWxf,WAAW,OAAQ8f,CAAAA,aAAa,KAAKA,aAAa,CAAA,CAAE,GAGpE;QACA,OAAOH;IACT;IAEA,OAAOX;AACT;AAEA;;CAEC,GACD,MAAMG,cAAc,CAACD,OAAoCR,QAA8BM;IACrF,IAAIN,WAAW,QAAQ;QACrB,OAAOvmB,OAAO+mB,SAAS,IAAIljB,KAAKkjB,SAAU,IAAIljB,KAAKpE;IACrD;IACA,IAAIonB,UAAU,QAAQA,UAAU,MAAM;QACpC,wCAAwC;QACxC,OAAO3gB;IACT;IACA,8CAA8C;IAC9C,OAAO3F,SAASwmB,SAAS9S,OAAO8S,SAAS;AAC3C;AAEA,MAAMd,iBAAiB,CAACxgB,MAAczD;IACpC,gGAAgG;IAChG,gGAAgG;IAChG,iCAAiC;IACjC,IAAI4lB;IACJ,MAAMC,WAAW,IAAI9e;IACrBtD,KAAKI,OAAO,CAAC,CAACnD;QACZ,MAAMolB,UAAUrnB,WAAWiC;QAC3BklB,UAAUE,QAAQlhB,CAAC;QACnBihB,SAAS7e,GAAG,CAAC8e,QAAQ/hB,CAAC;IACxB;IAEA,MAAMigB,cAA+D,CAAC;IAEtE,IAAI,OAAO4B,YAAY,UAAU;QAC/B5B,YAAYpf,CAAC,GAAG5E,mBAAAA,6BAAAA,MAAQ,CAACtB,WAAW,KAAKknB,SAAS;IACpD;IAEA,MAAMG,iBAAiBhkB,MAAM0Z,IAAI,CAACoK,UAAUrd,IAAI;IAChD,IAAIud,eAAe3kB,MAAM,GAAG,GAAG;QAC7B4iB,YAAYjgB,CAAC,GAAG/D,mBAAAA,6BAAAA,MAAQ,CAACtB,WAAW,KAAKqnB,cAAc,CAAC,EAAE,EAAE;IAC9D;IACA,IAAIA,eAAe3kB,MAAM,GAAG,GAAG;QAC7B4iB,YAAYI,EAAE,GAAGpkB,mBAAAA,6BAAAA,MAAQ,CAACtB,WAAW,KAAKqnB,cAAc,CAAC,EAAE,EAAE;IAC/D;IAEA,OAAO/B;AACT;AAEA,MAAMQ,cAAc,CAAC/gB,MAAcwf,UAAqBD;IACtD,MAAM7a,SAAkB,EAAE;IAC1B1E,KAAKI,OAAO,CAAC,CAACnD;YACZA;SAAAA,mBAAAA,MAAM,CAACuiB,SAAS,cAAhBviB,uCAAAA,iBAAkBmD,OAAO,CAAC8Q,CAAAA;YACxB,IAAI,CAACtW,eAAesW,MAAM;gBACxBxM,OAAOhB,IAAI,CAACwN;YACd;QACF;IACF;IAEA,0FAA0F;IAC1F,0FAA0F;IAC1F,yFAAyF;IAEzF,IAAIzW,cAAciK,SAAS;QACzB,IAAI6a,CAAAA,eAAAA,yBAAAA,GAAI3b,IAAI,MAAK,OAAO;YACtB,OAAO;QACT;QACA,OAAO;IACT;IAEA,IAAIpJ,YAAYkK,SAAS;QACvB,OAAO;IACT;IAEA,IAAIhK,cAAcgK,SAAS;QACzB,OAAO;IACT;AACF;AAEA;;CAEC,GACD,MAAM6d,eAAe;AAErB;;;;;;;;CAQC,GACD,MAAMpU,iBAAiB,CAACxL;IACtB,IAAI,OAAOA,UAAU,UAAU;QAC7B,MAAM6f,QAAQ7f,MAAM6f,KAAK,CAACD;QAC1B,IAAIC,OAAO;YACT,IAAI,CAACA,KAAK,CAAC,EAAE,EAAE;gBACb7f,SAAS;YACX,OAAO,IAAI6f,KAAK,CAAC,EAAE,EAAE;gBACnB7f,QAAQA,MAAM0Q,OAAO,CAAC,KAAK;YAC7B;QACF;IACF;IACA,OAAO,IAAIjV,KAAKuE;AAClB"}