semiotic 2.0.2 → 3.0.0-beta.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CLAUDE.md +530 -0
- package/README.md +190 -37
- package/ai/cli.js +48 -0
- package/ai/dist/ai/componentRegistry.js +45 -0
- package/ai/dist/ai/mcp-server.js +99 -0
- package/ai/dist/ai/renderHOCToSVG.js +77 -0
- package/ai/dist/src/components/Annotation.js +358 -0
- package/ai/dist/src/components/AnnotationLayer/AnnotationLayer.js +369 -0
- package/ai/dist/src/components/Axis/Axis.js +373 -0
- package/ai/dist/src/components/Axis/axisTitle.js +14 -0
- package/ai/dist/src/components/Axis/index.js +7 -0
- package/ai/dist/src/components/Axis/summaryGraphic.js +37 -0
- package/ai/dist/src/components/Brush.js +84 -0
- package/ai/dist/src/components/DividedLine.js +65 -0
- package/ai/dist/src/components/FacetController.js +259 -0
- package/ai/dist/src/components/Frame.js +139 -0
- package/ai/dist/src/components/InteractionLayer.js +328 -0
- package/ai/dist/src/components/Legend.js +140 -0
- package/ai/dist/src/components/MiniMap.js +75 -0
- package/ai/dist/src/components/MinimapXYFrame.js +99 -0
- package/ai/dist/src/components/NetworkFrame.js +335 -0
- package/ai/dist/src/components/OrdinalFrame.js +437 -0
- package/ai/dist/src/components/ResponsiveFrame.js +68 -0
- package/ai/dist/src/components/ResponsiveMinimapXYFrame.js +11 -0
- package/ai/dist/src/components/ResponsiveNetworkFrame.js +11 -0
- package/ai/dist/src/components/ResponsiveOrdinalFrame.js +11 -0
- package/ai/dist/src/components/ResponsiveXYFrame.js +10 -0
- package/ai/dist/src/components/SparkFrame.js +113 -0
- package/ai/dist/src/components/SparkNetworkFrame.js +11 -0
- package/ai/dist/src/components/SparkOrdinalFrame.js +11 -0
- package/ai/dist/src/components/SparkXYFrame.js +11 -0
- package/ai/dist/src/components/Tooltip/Tooltip.js +304 -0
- package/ai/dist/src/components/TooltipPositioner/index.js +132 -0
- package/ai/dist/src/components/VisualizationLayer.js +395 -0
- package/ai/dist/src/components/XYFrame.js +524 -0
- package/ai/dist/src/components/annotationLayerBehavior/annotationHandling.js +73 -0
- package/ai/dist/src/components/annotationLayerBehavior/d3labeler.js +254 -0
- package/ai/dist/src/components/annotationRules/baseRules.js +150 -0
- package/ai/dist/src/components/annotationRules/networkframeRules.js +198 -0
- package/ai/dist/src/components/annotationRules/orframeRules.js +695 -0
- package/ai/dist/src/components/annotationRules/xyframeRules.js +299 -0
- package/ai/dist/src/components/batchWork.js +35 -0
- package/ai/dist/src/components/charts/index.js +96 -0
- package/ai/dist/src/components/charts/network/ChordDiagram.js +245 -0
- package/ai/dist/src/components/charts/network/CirclePack.js +177 -0
- package/ai/dist/src/components/charts/network/ForceDirectedGraph.js +248 -0
- package/ai/dist/src/components/charts/network/SankeyDiagram.js +305 -0
- package/ai/dist/src/components/charts/network/TreeDiagram.js +268 -0
- package/ai/dist/src/components/charts/network/Treemap.js +177 -0
- package/ai/dist/src/components/charts/ordinal/BarChart.js +191 -0
- package/ai/dist/src/components/charts/ordinal/BoxPlot.js +235 -0
- package/ai/dist/src/components/charts/ordinal/DonutChart.js +178 -0
- package/ai/dist/src/components/charts/ordinal/DotPlot.js +194 -0
- package/ai/dist/src/components/charts/ordinal/GroupedBarChart.js +194 -0
- package/ai/dist/src/components/charts/ordinal/PieChart.js +155 -0
- package/ai/dist/src/components/charts/ordinal/StackedBarChart.js +213 -0
- package/ai/dist/src/components/charts/ordinal/SwarmPlot.js +219 -0
- package/ai/dist/src/components/charts/realtime/RealtimeBarChart.js +91 -0
- package/ai/dist/src/components/charts/realtime/RealtimeLineChart.js +73 -0
- package/ai/dist/src/components/charts/realtime/RealtimeSwarmChart.js +85 -0
- package/ai/dist/src/components/charts/realtime/RealtimeWaterfallChart.js +86 -0
- package/ai/dist/src/components/charts/shared/ChartError.js +72 -0
- package/ai/dist/src/components/charts/shared/colorUtils.js +138 -0
- package/ai/dist/src/components/charts/shared/formatUtils.js +176 -0
- package/ai/dist/src/components/charts/shared/hooks.js +49 -0
- package/ai/dist/src/components/charts/shared/legendUtils.js +57 -0
- package/ai/dist/src/components/charts/shared/types.js +2 -0
- package/ai/dist/src/components/charts/shared/validateChartData.js +82 -0
- package/ai/dist/src/components/charts/shared/validateProps.js +640 -0
- package/ai/dist/src/components/charts/xy/AreaChart.js +220 -0
- package/ai/dist/src/components/charts/xy/BubbleChart.js +222 -0
- package/ai/dist/src/components/charts/xy/Heatmap.js +230 -0
- package/ai/dist/src/components/charts/xy/LineChart.js +302 -0
- package/ai/dist/src/components/charts/xy/Scatterplot.js +136 -0
- package/ai/dist/src/components/charts/xy/StackedAreaChart.js +220 -0
- package/ai/dist/src/components/constants/coordinateNames.js +11 -0
- package/ai/dist/src/components/constants/frame_props.js +251 -0
- package/ai/dist/src/components/constants/jsx.js +71 -0
- package/ai/dist/src/components/data/dataFunctions.js +473 -0
- package/ai/dist/src/components/data/multiAccessorUtils.js +14 -0
- package/ai/dist/src/components/data/networkPipelineCache.js +43 -0
- package/ai/dist/src/components/data/ordinalPipelineCache.js +53 -0
- package/ai/dist/src/components/data/unflowedFunctions.js +5 -0
- package/ai/dist/src/components/data/xyPipelineCache.js +49 -0
- package/ai/dist/src/components/generic_utilities/functions.js +5 -0
- package/ai/dist/src/components/index.js +145 -0
- package/ai/dist/src/components/interactionLayerBehavior/InteractionCanvas.js +128 -0
- package/ai/dist/src/components/processing/InteractionItems.js +223 -0
- package/ai/dist/src/components/processing/hierarchyUtils.js +104 -0
- package/ai/dist/src/components/processing/layouts/chordLayout.js +58 -0
- package/ai/dist/src/components/processing/layouts/forceLayout.js +142 -0
- package/ai/dist/src/components/processing/layouts/hierarchyLayout.js +31 -0
- package/ai/dist/src/components/processing/layouts/index.js +32 -0
- package/ai/dist/src/components/processing/layouts/sankeyLayout.js +96 -0
- package/ai/dist/src/components/processing/layouts/simpleLayouts.js +34 -0
- package/ai/dist/src/components/processing/layouts/types.js +2 -0
- package/ai/dist/src/components/processing/network.js +771 -0
- package/ai/dist/src/components/processing/networkDefaults.js +39 -0
- package/ai/dist/src/components/processing/networkLayoutHelpers.js +98 -0
- package/ai/dist/src/components/processing/ordinal.js +889 -0
- package/ai/dist/src/components/processing/ordinalConstants.js +23 -0
- package/ai/dist/src/components/processing/ordinalOverlays.js +88 -0
- package/ai/dist/src/components/processing/ordinalRenderPipeline.js +196 -0
- package/ai/dist/src/components/processing/xyDrawing.js +484 -0
- package/ai/dist/src/components/realtime/BinAccumulator.js +36 -0
- package/ai/dist/src/components/realtime/IncrementalExtent.js +55 -0
- package/ai/dist/src/components/realtime/RealtimeFrame.js +710 -0
- package/ai/dist/src/components/realtime/RingBuffer.js +104 -0
- package/ai/dist/src/components/realtime/renderers/barRenderer.js +133 -0
- package/ai/dist/src/components/realtime/renderers/candlestickRenderer.js +7 -0
- package/ai/dist/src/components/realtime/renderers/lineRenderer.js +164 -0
- package/ai/dist/src/components/realtime/renderers/swarmRenderer.js +91 -0
- package/ai/dist/src/components/realtime/renderers/types.js +2 -0
- package/ai/dist/src/components/realtime/renderers/waterfallRenderer.js +163 -0
- package/ai/dist/src/components/realtime/types.js +2 -0
- package/ai/dist/src/components/semiotic-ai.js +66 -0
- package/ai/dist/src/components/semiotic-network.js +30 -0
- package/ai/dist/src/components/semiotic-ordinal.js +28 -0
- package/ai/dist/src/components/semiotic-realtime.js +37 -0
- package/ai/dist/src/components/semiotic-server.js +8 -0
- package/ai/dist/src/components/semiotic-xy.js +41 -0
- package/ai/dist/src/components/semiotic.js +101 -0
- package/ai/dist/src/components/server/renderToStaticSVG.js +392 -0
- package/ai/dist/src/components/store/TooltipStore.js +13 -0
- package/ai/dist/src/components/store/createStore.js +77 -0
- package/ai/dist/src/components/svg/SvgHelper.js +308 -0
- package/ai/dist/src/components/svg/areaDrawing.js +312 -0
- package/ai/dist/src/components/svg/boxplotRenderer.js +441 -0
- package/ai/dist/src/components/svg/bucketizedRenderer.js +677 -0
- package/ai/dist/src/components/svg/ckbinsRenderer.js +92 -0
- package/ai/dist/src/components/svg/ckmeans.js +238 -0
- package/ai/dist/src/components/svg/contourLayout.js +73 -0
- package/ai/dist/src/components/svg/contourRenderer.js +53 -0
- package/ai/dist/src/components/svg/edgeGenerators.js +181 -0
- package/ai/dist/src/components/svg/frameFunctions.js +579 -0
- package/ai/dist/src/components/svg/graphAlgorithms.js +138 -0
- package/ai/dist/src/components/svg/hexbinLayout.js +163 -0
- package/ai/dist/src/components/svg/lineDrawing.js +427 -0
- package/ai/dist/src/components/svg/networkDrawing.js +207 -0
- package/ai/dist/src/components/svg/nodeGenerators.js +131 -0
- package/ai/dist/src/components/svg/pieceDrawing.js +110 -0
- package/ai/dist/src/components/svg/pieceLayouts.js +588 -0
- package/ai/dist/src/components/svg/sankeyLinks.js +143 -0
- package/ai/dist/src/components/svg/summaryAxis.js +48 -0
- package/ai/dist/src/components/svg/summaryLayouts.js +202 -0
- package/ai/dist/src/components/svg/swarmLayout.js +128 -0
- package/ai/dist/src/components/types/annotationTypes.js +2 -0
- package/ai/dist/src/components/types/canvasTypes.js +2 -0
- package/ai/dist/src/components/types/generalTypes.js +2 -0
- package/ai/dist/src/components/types/interactionTypes.js +2 -0
- package/ai/dist/src/components/types/legendTypes.js +2 -0
- package/ai/dist/src/components/types/networkTypes.js +2 -0
- package/ai/dist/src/components/types/ordinalTypes.js +2 -0
- package/ai/dist/src/components/types/xyTypes.js +2 -0
- package/ai/dist/src/components/useBoundingRect.js +24 -0
- package/ai/dist/src/components/useDerivedStateFromProps.js +25 -0
- package/ai/dist/src/components/useLegacyUnmountCallback.js +21 -0
- package/ai/dist/src/components/visualizationLayerBehavior/axis.js +249 -0
- package/ai/dist/src/components/visualizationLayerBehavior/general.js +435 -0
- package/ai/dist/src/setupTests.js +4 -0
- package/ai/examples.md +394 -0
- package/ai/schema.json +1178 -0
- package/ai/system-prompt.md +38 -0
- package/dist/Annotation.d.ts +3 -0
- package/dist/AnnotationLayer/AnnotationLayer.d.ts +25 -0
- package/dist/Axis/Axis.d.ts +7 -0
- package/dist/Axis/axisTitle.d.ts +10 -0
- package/dist/Axis/index.d.ts +2 -0
- package/dist/Axis/summaryGraphic.d.ts +17 -0
- package/dist/Brush.d.ts +12 -0
- package/dist/DividedLine.d.ts +16 -0
- package/dist/FacetController.d.ts +12 -0
- package/dist/Frame.d.ts +2 -0
- package/dist/InteractionLayer.d.ts +3 -0
- package/dist/Legend.d.ts +3 -0
- package/dist/MiniMap.d.ts +14 -0
- package/dist/MinimapXYFrame.d.ts +10 -0
- package/dist/NetworkFrame.d.ts +8 -0
- package/dist/OrdinalFrame.d.ts +8 -0
- package/dist/ResponsiveFrame.d.ts +22 -0
- package/dist/ResponsiveMinimapXYFrame.d.ts +3 -0
- package/dist/ResponsiveNetworkFrame.d.ts +3 -0
- package/dist/ResponsiveOrdinalFrame.d.ts +3 -0
- package/dist/ResponsiveXYFrame.d.ts +3 -0
- package/dist/SparkFrame.d.ts +14 -0
- package/dist/SparkNetworkFrame.d.ts +5 -0
- package/dist/SparkOrdinalFrame.d.ts +5 -0
- package/dist/SparkXYFrame.d.ts +5 -0
- package/dist/Tooltip/Tooltip.d.ts +141 -0
- package/dist/TooltipPositioner/index.d.ts +7 -0
- package/dist/VisualizationLayer.d.ts +33 -0
- package/dist/XYFrame.d.ts +8 -0
- package/dist/annotationLayerBehavior/annotationHandling.d.ts +19 -0
- package/dist/annotationLayerBehavior/d3labeler.d.ts +9 -0
- package/dist/annotationRules/baseRules.d.ts +25 -0
- package/dist/annotationRules/networkframeRules.d.ts +48 -0
- package/dist/annotationRules/orframeRules.d.ts +103 -0
- package/dist/annotationRules/xyframeRules.d.ts +117 -0
- package/dist/batchWork.d.ts +6 -0
- package/dist/charts/index.d.ts +62 -0
- package/dist/charts/network/ChordDiagram.d.ts +181 -0
- package/dist/charts/network/CirclePack.d.ts +103 -0
- package/dist/charts/network/ForceDirectedGraph.d.ts +192 -0
- package/dist/charts/network/SankeyDiagram.d.ts +195 -0
- package/dist/charts/network/TreeDiagram.d.ts +200 -0
- package/dist/charts/network/Treemap.d.ts +98 -0
- package/dist/charts/ordinal/BarChart.d.ts +119 -0
- package/dist/charts/ordinal/BoxPlot.d.ts +125 -0
- package/dist/charts/ordinal/DonutChart.d.ts +95 -0
- package/dist/charts/ordinal/DotPlot.d.ts +128 -0
- package/dist/charts/ordinal/GroupedBarChart.d.ts +113 -0
- package/dist/charts/ordinal/PieChart.d.ts +83 -0
- package/dist/charts/ordinal/StackedBarChart.d.ts +119 -0
- package/dist/charts/ordinal/SwarmPlot.d.ts +137 -0
- package/dist/charts/realtime/RealtimeBarChart.d.ts +102 -0
- package/dist/charts/realtime/RealtimeLineChart.d.ts +78 -0
- package/dist/charts/realtime/RealtimeSwarmChart.d.ts +88 -0
- package/dist/charts/realtime/RealtimeWaterfallChart.d.ts +85 -0
- package/dist/charts/shared/ChartError.d.ts +19 -0
- package/dist/charts/shared/colorUtils.d.ts +62 -0
- package/dist/charts/shared/formatUtils.d.ts +82 -0
- package/dist/charts/shared/hooks.d.ts +20 -0
- package/dist/charts/shared/legendUtils.d.ts +32 -0
- package/dist/charts/shared/types.d.ts +58 -0
- package/dist/charts/shared/validateChartData.d.ts +41 -0
- package/dist/charts/shared/validateProps.d.ts +18 -0
- package/dist/charts/xy/AreaChart.d.ts +127 -0
- package/dist/charts/xy/BubbleChart.d.ts +157 -0
- package/dist/charts/xy/Heatmap.d.ts +153 -0
- package/dist/charts/xy/LineChart.d.ts +193 -0
- package/dist/charts/xy/Scatterplot.d.ts +50 -0
- package/dist/charts/xy/StackedAreaChart.d.ts +131 -0
- package/dist/constants/coordinateNames.d.ts +8 -0
- package/dist/constants/frame_props.d.ts +13 -0
- package/dist/constants/jsx.d.ts +19 -0
- package/dist/data/dataFunctions.d.ts +45 -0
- package/dist/data/multiAccessorUtils.d.ts +1 -0
- package/dist/data/networkPipelineCache.d.ts +27 -0
- package/dist/data/ordinalPipelineCache.d.ts +33 -0
- package/dist/data/unflowedFunctions.d.ts +1 -0
- package/dist/data/xyPipelineCache.d.ts +35 -0
- package/dist/generic_utilities/functions.d.ts +1 -0
- package/dist/index.d.ts +133 -0
- package/dist/interactionLayerBehavior/InteractionCanvas.d.ts +20 -0
- package/dist/network.js +8520 -0
- package/dist/network.js.map +1 -0
- package/dist/network.min.js +1 -0
- package/dist/network.module.js +8484 -0
- package/dist/network.module.js.map +1 -0
- package/dist/network.module.min.js +1 -0
- package/dist/ordinal.js +9276 -0
- package/dist/ordinal.js.map +1 -0
- package/dist/ordinal.min.js +1 -0
- package/dist/ordinal.module.js +9242 -0
- package/dist/ordinal.module.js.map +1 -0
- package/dist/ordinal.module.min.js +1 -0
- package/dist/processing/InteractionItems.d.ts +13 -0
- package/dist/processing/hierarchyUtils.d.ts +16 -0
- package/dist/processing/layouts/chordLayout.d.ts +2 -0
- package/dist/processing/layouts/forceLayout.d.ts +3 -0
- package/dist/processing/layouts/hierarchyLayout.d.ts +10 -0
- package/dist/processing/layouts/index.d.ts +8 -0
- package/dist/processing/layouts/sankeyLayout.d.ts +8 -0
- package/dist/processing/layouts/simpleLayouts.d.ts +7 -0
- package/dist/processing/layouts/types.d.ts +17 -0
- package/dist/processing/network.d.ts +111 -0
- package/dist/processing/networkDefaults.d.ts +36 -0
- package/dist/processing/networkLayoutHelpers.d.ts +54 -0
- package/dist/processing/ordinal.d.ts +102 -0
- package/dist/processing/ordinalConstants.d.ts +33 -0
- package/dist/processing/ordinalOverlays.d.ts +33 -0
- package/dist/processing/ordinalRenderPipeline.d.ts +148 -0
- package/dist/processing/xyDrawing.d.ts +140 -0
- package/dist/realtime/BinAccumulator.d.ts +8 -0
- package/dist/realtime/IncrementalExtent.d.ts +13 -0
- package/dist/realtime/RealtimeFrame.d.ts +4 -0
- package/dist/realtime/RingBuffer.d.ts +19 -0
- package/dist/realtime/renderers/barRenderer.d.ts +2 -0
- package/dist/realtime/renderers/candlestickRenderer.d.ts +2 -0
- package/dist/realtime/renderers/lineRenderer.d.ts +2 -0
- package/dist/realtime/renderers/swarmRenderer.d.ts +2 -0
- package/dist/realtime/renderers/types.d.ts +9 -0
- package/dist/realtime/renderers/waterfallRenderer.d.ts +3 -0
- package/dist/realtime/types.d.ts +113 -0
- package/dist/realtime.js +1598 -0
- package/dist/realtime.js.map +1 -0
- package/dist/realtime.min.js +1 -0
- package/dist/realtime.module.js +1566 -0
- package/dist/realtime.module.js.map +1 -0
- package/dist/realtime.module.min.js +1 -0
- package/dist/semiotic-ai.d.ts +28 -0
- package/dist/semiotic-ai.js +18722 -0
- package/dist/semiotic-ai.js.map +1 -0
- package/dist/semiotic-ai.min.js +1 -0
- package/dist/semiotic-ai.module.js +18668 -0
- package/dist/semiotic-ai.module.js.map +1 -0
- package/dist/semiotic-ai.module.min.js +1 -0
- package/dist/semiotic-network.d.ts +19 -0
- package/dist/semiotic-ordinal.d.ts +18 -0
- package/dist/semiotic-realtime.d.ts +23 -0
- package/dist/semiotic-server.d.ts +1 -0
- package/dist/semiotic-xy.d.ts +24 -0
- package/dist/semiotic.d.ts +51 -0
- package/dist/semiotic.js +18723 -12996
- package/dist/semiotic.js.map +1 -0
- package/dist/semiotic.min.js +1 -0
- package/dist/semiotic.module.js +18666 -12965
- package/dist/semiotic.module.js.map +1 -0
- package/dist/semiotic.module.min.js +1 -0
- package/dist/server/renderToStaticSVG.d.ts +9 -0
- package/dist/server.js +8360 -0
- package/dist/server.js.map +1 -0
- package/dist/server.min.js +1 -0
- package/dist/server.module.js +8331 -0
- package/dist/server.module.js.map +1 -0
- package/dist/server.module.min.js +1 -0
- package/dist/store/TooltipStore.d.ts +2 -0
- package/dist/store/createStore.d.ts +1 -0
- package/dist/svg/SvgHelper.d.ts +33 -0
- package/dist/svg/areaDrawing.d.ts +21 -0
- package/dist/svg/boxplotRenderer.d.ts +15 -0
- package/dist/svg/bucketizedRenderer.d.ts +16 -0
- package/dist/svg/ckbinsRenderer.d.ts +20 -0
- package/dist/svg/ckmeans.d.ts +69 -0
- package/dist/svg/contourLayout.d.ts +6 -0
- package/dist/svg/contourRenderer.d.ts +12 -0
- package/dist/svg/edgeGenerators.d.ts +51 -0
- package/dist/svg/frameFunctions.d.ts +108 -0
- package/dist/svg/graphAlgorithms.d.ts +14 -0
- package/dist/svg/hexbinLayout.d.ts +7 -0
- package/dist/svg/lineDrawing.d.ts +99 -0
- package/dist/svg/networkDrawing.d.ts +16 -0
- package/dist/svg/nodeGenerators.d.ts +58 -0
- package/dist/svg/pieceDrawing.d.ts +12 -0
- package/dist/svg/pieceLayouts.d.ts +53 -0
- package/dist/svg/sankeyLinks.d.ts +3 -0
- package/dist/svg/summaryAxis.d.ts +6 -0
- package/dist/svg/summaryLayouts.d.ts +53 -0
- package/dist/svg/swarmLayout.d.ts +13 -0
- package/dist/types/annotationTypes.d.ts +135 -0
- package/dist/types/canvasTypes.d.ts +9 -0
- package/dist/types/generalTypes.d.ts +238 -0
- package/dist/types/interactionTypes.d.ts +72 -0
- package/dist/types/legendTypes.d.ts +20 -0
- package/dist/types/networkTypes.d.ts +175 -0
- package/dist/types/ordinalTypes.d.ts +112 -0
- package/dist/types/xyTypes.d.ts +115 -0
- package/dist/useBoundingRect.d.ts +2 -0
- package/dist/useDerivedStateFromProps.d.ts +1 -0
- package/dist/useLegacyUnmountCallback.d.ts +2 -0
- package/dist/visualizationLayerBehavior/axis.d.ts +36 -0
- package/dist/visualizationLayerBehavior/general.d.ts +80 -0
- package/dist/xy.js +7944 -0
- package/dist/xy.js.map +1 -0
- package/dist/xy.min.js +1 -0
- package/dist/xy.module.js +7903 -0
- package/dist/xy.module.js.map +1 -0
- package/dist/xy.module.min.js +1 -0
- package/package.json +116 -65
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"server.js","sources":["../src/components/visualizationLayerBehavior/axis.tsx","../src/components/Axis/summaryGraphic.tsx","../src/components/Axis/axisTitle.tsx","../src/components/svg/pieceDrawing.tsx","../src/components/svg/boxplotRenderer.tsx","../src/components/svg/ckmeans.ts","../src/components/svg/ckbinsRenderer.tsx","../src/components/svg/contourLayout.ts","../src/components/svg/hexbinLayout.tsx","../src/components/svg/areaDrawing.tsx","../src/components/svg/contourRenderer.tsx","../src/components/svg/SvgHelper.tsx","../src/components/visualizationLayerBehavior/general.tsx","../src/components/svg/bucketizedRenderer.tsx","../src/components/svg/summaryLayouts.tsx","../src/components/Axis/Axis.tsx","../src/components/svg/lineDrawing.ts","../src/components/constants/coordinateNames.ts","../src/components/data/unflowedFunctions.ts","../src/components/data/dataFunctions.ts","../src/components/svg/frameFunctions.tsx","../src/components/processing/xyDrawing.tsx","../src/components/data/xyPipelineCache.ts","../src/components/svg/summaryAxis.tsx","../src/components/svg/swarmLayout.tsx","../src/components/svg/pieceLayouts.tsx","../src/components/generic_utilities/functions.ts","../src/components/processing/ordinalConstants.ts","../src/components/processing/ordinalOverlays.tsx","../src/components/processing/ordinalRenderPipeline.tsx","../src/components/processing/ordinal.tsx","../src/components/data/ordinalPipelineCache.ts","../src/components/svg/nodeGenerators.tsx","../src/components/svg/edgeGenerators.tsx","../src/components/svg/sankeyLinks.ts","../src/components/svg/graphAlgorithms.ts","../src/components/svg/networkDrawing.tsx","../src/components/processing/networkDefaults.ts","../src/components/processing/layouts/hierarchyLayout.ts","../src/components/processing/networkLayoutHelpers.ts","../src/components/processing/hierarchyUtils.ts","../src/components/processing/network.ts","../src/components/data/networkPipelineCache.ts","../src/components/constants/jsx.tsx","../src/components/server/renderToStaticSVG.tsx"],"sourcesContent":["import * as React from \"react\"\n\n\nimport { ScaleLinear } from \"d3-scale\"\n\ntype RenderModeFnType = (d: number, i: number) => string | Record<string, any>\n\ntype AxisPiecesFnType = {\n renderMode?: RenderModeFnType\n padding: number\n scale: ScaleLinear<number, number>\n ticks: number\n tickValues: number[] | Function\n orient: \"left\" | \"right\" | \"top\" | \"bottom\"\n size: number[]\n footer: boolean\n tickSize: number\n baseline?: boolean | \"under\"\n jaggedBase?: boolean\n}\n\nconst horizontalTornTickGenerator = (width, ticks, y, orient) => {\n const step = width / ticks\n let currentStep = 0\n let tickPath = `M0,${y}`\n const mod = orient === \"right\" ? -1 : 1\n while (currentStep <= width) {\n tickPath += `L${currentStep},${y}`\n if (currentStep < width) {\n tickPath += `L${currentStep + step / 2},${y + 10 * mod}`\n }\n currentStep += step\n }\n return tickPath\n}\n\nconst verticalTornTickGenerator = (height, ticks, x, orient) => {\n const step = height / ticks\n let currentStep = 0\n let tickPath = `M${x},0`\n const mod = orient === \"bottom\" ? -1 : 1\n while (currentStep <= height) {\n tickPath += `L${x},${currentStep}`\n if (currentStep < height) {\n tickPath += `L${x + 10 * mod},${currentStep + step / 2}`\n }\n currentStep += step\n }\n return tickPath\n}\n\nconst generateTornBaseline = (orient, baselineSettings) => {\n let tornD = \"\"\n const { x1, x2, y1, y2 } = baselineSettings\n if (orient === \"left\" || orient === \"right\") {\n const calcWidth = Math.abs(x2 - x1)\n const ticks = Math.ceil(calcWidth / 40)\n tornD = horizontalTornTickGenerator(\n calcWidth,\n ticks,\n orient === \"right\" ? 0 : y1,\n orient\n )\n } else {\n const calcHeight = Math.abs(y2 - y1)\n const ticks = Math.ceil(calcHeight / 40)\n tornD = verticalTornTickGenerator(calcHeight, ticks, x1, orient)\n }\n return tornD\n}\n\nconst defaultTickLineGenerator = ({\n xy,\n orient,\n i,\n \n className = \"\",\n jaggedBase\n}) => {\n let genD = `M${xy.x1},${xy.y1}L${xy.x2},${xy.y2}`\n if (jaggedBase && i === 0) {\n genD = generateTornBaseline(orient, xy)\n }\n return (\n <path key={i}\n \n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"1px\"\n d={genD}\n className={`tick-line tick ${orient} ${className}`}\n />\n )\n}\n\nconst outboundTickLineGenerator = ({ xy, orient, i, className = \"\" }) => {\n const tickLength = 8\n let genD = `M-4,${xy.y1}L${xy.x1},${xy.y2}`\n if (orient === \"left\") {\n genD = `M${xy.x1 - tickLength},${xy.y1}L${xy.x1},${xy.y2}`\n } else if (orient === \"right\") {\n genD = `M${xy.x2},${xy.y1}L${xy.x2 + tickLength},${xy.y2}`\n } else if (orient === \"top\") {\n genD = `M${xy.x1},${xy.y1 - tickLength}L${xy.x1},${xy.y1}`\n } else if (orient === \"bottom\") {\n genD = `M${xy.x1},${xy.y2}L${xy.x1},${xy.y2 + tickLength}`\n }\n return (\n <path key={i}\n \n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"1px\"\n d={genD}\n className={`outbound-tick-line tick ${orient} ${className}`}\n />\n )\n}\n\nexport function generateTickValues(tickValues, ticks, scale) {\n const axisSize = Math.abs(scale.range()[1] - scale.range()[0])\n\n if (!tickValues) {\n if (!ticks) {\n ticks = Math.max(1, Math.floor(axisSize / 40))\n }\n tickValues = (scale.ticks && scale.ticks(ticks)) || scale.domain()\n }\n\n return tickValues\n}\n\nexport function axisPieces({\n renderMode = () => undefined,\n padding = 5,\n scale,\n ticks,\n tickValues = generateTickValues(undefined, ticks, scale),\n orient = \"left\",\n size,\n footer = false,\n tickSize = footer\n ? -10\n : [\"top\", \"bottom\"].find((d) => d === orient)\n ? (size ? size[1] : 0)\n : (size ? size[0] : 0),\n jaggedBase\n}: AxisPiecesFnType) {\n //returns x1 (start of line), x2 (end of line) associated with the value of the tick\n let axisDomain = [],\n position1,\n position2,\n domain1,\n domain2,\n tposition1,\n tposition2,\n textPositionMod = 0,\n textPositionMod2 = 0,\n defaultAnchor = \"middle\"\n\n switch (orient) {\n case \"top\":\n position1 = \"x1\"\n position2 = \"x2\"\n domain1 = \"y1\"\n domain2 = \"y2\"\n axisDomain = [0, tickSize]\n tposition1 = \"tx\"\n tposition2 = \"ty\"\n textPositionMod -= 20 - padding\n break\n case \"bottom\":\n position1 = \"x1\"\n position2 = \"x2\"\n domain1 = \"y2\"\n domain2 = \"y1\"\n axisDomain = size ? [size[1], size[1] - tickSize] : [0, -tickSize]\n tposition1 = \"tx\"\n tposition2 = \"ty\"\n textPositionMod += 20 + padding\n break\n case \"right\":\n position1 = \"y2\"\n position2 = \"y1\"\n domain1 = \"x2\"\n domain2 = \"x1\"\n axisDomain = size ? [size[0], size[0] - tickSize] : [0, -tickSize]\n tposition1 = \"ty\"\n tposition2 = \"tx\"\n textPositionMod += 5 + padding\n textPositionMod2 += 5\n defaultAnchor = \"start\"\n break\n //left\n default:\n position1 = \"y1\"\n position2 = \"y2\"\n domain1 = \"x1\"\n domain2 = \"x2\"\n axisDomain = [0, tickSize]\n tposition1 = \"ty\"\n tposition2 = \"tx\"\n textPositionMod -= 5 + padding\n textPositionMod2 += 5\n defaultAnchor = \"end\"\n break\n }\n let generatedTicks =\n tickValues instanceof Function ? tickValues({ orient }) : tickValues\n\n if (\n jaggedBase &&\n generatedTicks.find((t) => t === scale.domain()[0]) === undefined\n ) {\n generatedTicks = [scale.domain()[0], ...generatedTicks]\n }\n\n return generatedTicks.map((tick, i) => {\n const tickPosition = scale(tick)\n\n return {\n [position1]: tickPosition,\n [position2]: tickPosition,\n [domain1]: axisDomain[0],\n [domain2]: axisDomain[1],\n [tposition1]: tickPosition + textPositionMod2,\n [tposition2]: axisDomain[0] + textPositionMod,\n defaultAnchor,\n renderMode: renderMode(tick, i),\n value: tick\n }\n })\n}\n\nexport const axisLabels = ({\n axisParts,\n tickFormat,\n rotate = 0,\n center = false,\n orient\n}) => {\n return axisParts.map((axisPart, i) => {\n let renderedValue = tickFormat(axisPart.value, i)\n if (typeof renderedValue !== \"object\" || renderedValue instanceof Date) {\n renderedValue = (\n <text textAnchor={axisPart.defaultAnchor} className=\"axis-label\">\n {renderedValue.toString ? renderedValue.toString() : renderedValue}\n </text>\n )\n }\n\n let textX = axisPart.tx\n let textY = axisPart.ty\n if (center) {\n switch (orient) {\n case \"right\":\n textX -= (axisPart.x2 - axisPart.x1) / 2\n break\n case \"left\":\n textX += (axisPart.x2 - axisPart.x1) / 2\n break\n case \"top\":\n textY += (axisPart.y2 - axisPart.y1) / 2\n break\n case \"bottom\":\n textY -= (axisPart.y2 - axisPart.y1) / 2\n break\n }\n }\n\n return (\n <g\n key={i}\n pointerEvents=\"none\"\n transform={`translate(${textX},${textY}) rotate(${rotate})`}\n className=\"axis-label\"\n >\n {renderedValue}\n </g>\n )\n })\n}\n\nexport const baselineGenerator = (orient, size, className) => {\n const offsets = {\n left: { x: 0, y: 0, width: 0, height: size ? size[1] : 0 },\n right: { x: size ? size[0] : 0, y: 0, width: 0, height: size ? size[1] : 0 },\n top: { x: 0, y: 0, width: size ? size[0] : 0, height: 0 },\n bottom: { x: 0, y: size ? size[1] : 0, width: size ? size[0] : 0, height: 0 }\n }\n\n const orientOffset = offsets[orient]\n\n return (\n <line\n key=\"baseline\"\n className={`axis-baseline ${className}`}\n stroke=\"currentColor\"\n strokeLinecap=\"square\"\n x1={orientOffset.x}\n x2={orientOffset.x + orientOffset.width}\n y1={orientOffset.y}\n y2={orientOffset.y + orientOffset.height}\n />\n )\n}\n\nexport const axisLines = ({\n axisParts,\n orient,\n tickLineGenerator = defaultTickLineGenerator,\n \n className,\n jaggedBase,\n scale,\n showOutboundTickLines = false\n}: {\n axisParts: object[]\n orient: string\n tickLineGenerator: Function\n className: string\n jaggedBase?: boolean\n scale: ScaleLinear<number, number>\n showOutboundTickLines?: boolean\n}) => {\n const axisLines = axisParts.map((axisPart, i) =>\n tickLineGenerator({\n xy: axisPart,\n orient,\n i,\n \n className,\n jaggedBase,\n scale\n })\n ) as React.ReactNode[]\n\n const outboundAxisLines = showOutboundTickLines\n ? (axisParts.map((axisPart, i) =>\n outboundTickLineGenerator({\n xy: axisPart,\n orient,\n i,\n className\n })\n ) as React.ReactNode)\n : []\n\n return [...axisLines, outboundAxisLines]\n}\n","import React from \"react\"\nimport { AxisSummaryTypeSettings } from \"./../types/generalTypes\"\n\nexport interface SummaryGraphicProps {\n translation: {\n left: Array<number>\n right: Array<number>\n top: Array<number>\n bottom: Array<number>\n }\n orient: \"left\" | \"right\" | \"top\" | \"bottom\"\n decoratedSummaryType: {\n type: string\n }\n summaryWidth: number\n renderedSummary: any\n points?: React.ReactNode\n}\n\nfunction translateX({ t, o, w }: { t: string; o: string; w: number }) {\n if ((t === \"contour\" || t === \"boxplot\") && (o === \"left\" || o === \"right\")) {\n return w / 2\n } else {\n return 0\n }\n}\n\nfunction translateY({ t, o, w }: { t: string; o: string; w: number }) {\n if ((t === \"contour\" || t === \"boxplot\") && (o === \"top\" || o === \"bottom\")) {\n return w / 2\n } else {\n return 0\n }\n}\n\nexport default function SummaryGraphic(props: SummaryGraphicProps) {\n const {\n translation,\n orient,\n decoratedSummaryType,\n summaryWidth,\n renderedSummary,\n points\n } = props\n return (\n <g\n className=\"marginal-graphics\"\n transform={`translate(${translation[orient]})`}\n >\n <g\n transform={`translate(${translateX({\n t: decoratedSummaryType.type,\n o: orient,\n w: summaryWidth\n })},${translateY({\n t: decoratedSummaryType.type,\n o: orient,\n w: summaryWidth\n })})`}\n >\n {renderedSummary}\n </g>\n {points}\n </g>\n )\n}\n","import React from 'react';\n\nexport interface AxisTitleProps {\n className: string,\n translation: Array<number>,\n position: Array<number>,\n rotation: number | string,\n labelName: any,\n anchorMod: \"inherit\" | \"middle\" | \"end\" | \"start\"\n}\n\nexport default function AxisTitle(props: AxisTitleProps) { \n const { className, translation, position, rotation, labelName, anchorMod } = props;\n return (\n <g\n className={`axis-title ${className}`}\n transform={`translate(${[\n translation[0] + position[0],\n translation[1] + position[1]\n ]}) rotate(${rotation})`}\n >\n {React.isValidElement(labelName) ? (\n labelName\n ) : (\n <text textAnchor={anchorMod}>{labelName}</text>\n )}\n </g>\n )\n}","import * as React from \"react\"\n\nexport function pointOnArcAtAngle(center, angle, distance) {\n const radians = Math.PI * (angle + 0.75) * 2\n\n const xPosition = center[0] + distance * Math.cos(radians)\n const yPosition = center[1] + distance * Math.sin(radians)\n\n return [xPosition, yPosition]\n}\n\nexport const renderLaidOutPieces = ({\n data,\n shouldRender,\n canvasRender,\n canvasDrawing,\n styleFn,\n classFn,\n renderKeyFn,\n ariaLabel,\n axis\n}) => {\n const valueFormat = axis && axis[0] && axis[0].tickFormat\n if (!shouldRender) return null\n const renderedPieces = []\n data.forEach((d, i) => {\n if (canvasRender && canvasRender(d) === true) {\n const canvasPiece = {\n baseClass: \"orframe-piece\",\n tx: d.tx || 0,\n ty: d.ty || 0,\n d: d.piece,\n i,\n markProps: d.renderElement || d,\n styleFn: styleFn,\n renderFn: () => d.renderValue,\n classFn\n }\n canvasDrawing.push(canvasPiece)\n } else {\n if (React.isValidElement(d.renderElement || d)) {\n renderedPieces.push(d.renderElement || d)\n } else {\n const pieceAriaLabel = ariaLabel\n ? `${d.o} ${ariaLabel.items} value ${\n (valueFormat && valueFormat(d.piece.value)) || d.piece.value\n }`\n : \"\"\n const key = renderKeyFn\n ? renderKeyFn(d.piece)\n : d.renderKey || `piece-render-${i}`\n\n const elementData = d.renderElement || d\n const { markType, style = {}, ...restProps } = elementData\n\n // Merge style into direct props\n const elementProps = { ...restProps, key, \"aria-label\": pieceAriaLabel }\n if (style.fill !== undefined) elementProps.fill = style.fill\n if (style.stroke !== undefined) elementProps.stroke = style.stroke\n if (style.strokeWidth !== undefined) elementProps.strokeWidth = style.strokeWidth\n if (style.opacity !== undefined) elementProps.opacity = style.opacity\n if (style.fillOpacity !== undefined) elementProps.fillOpacity = style.fillOpacity\n if (style.strokeOpacity !== undefined) elementProps.strokeOpacity = style.strokeOpacity\n\n const remainingStyles = { ...style }\n delete remainingStyles.fill\n delete remainingStyles.stroke\n delete remainingStyles.strokeWidth\n delete remainingStyles.opacity\n delete remainingStyles.fillOpacity\n delete remainingStyles.strokeOpacity\n if (Object.keys(remainingStyles).length > 0) {\n elementProps.style = remainingStyles\n }\n\n if (markType) {\n renderedPieces.push(React.createElement(markType, elementProps))\n }\n }\n }\n })\n\n return renderedPieces\n}\n","import { quantile } from \"d3-array\"\nimport { arc } from \"d3-shape\"\nimport { pointOnArcAtAngle } from \"./pieceDrawing\"\nimport { scaleLinear } from \"d3-scale\"\n\ntype BoxplotFnType = {\n data: Record<string, any>[]\n type: Record<string, any>\n renderMode: Function\n eventListenersGenerator: Function\n styleFn: Function\n classFn: Function\n projection: \"horizontal\" | \"vertical\" | \"radial\"\n adjustedSize: number[]\n}\n\nconst emptyObjectReturnFn = () => ({})\n\nexport function boxplotRenderFn({\n data,\n type,\n renderMode,\n eventListenersGenerator,\n styleFn,\n classFn,\n projection,\n adjustedSize,\n}: BoxplotFnType) {\n const summaryElementStylingFn = type.elementStyleFn || emptyObjectReturnFn\n\n const { outliers, fixedInput } = type\n\n const keys = Object.keys(data)\n const renderedSummaryMarks = []\n const summaryXYCoords = []\n keys.forEach((key, summaryI) => {\n const summary = data[key]\n const eventListeners = eventListenersGenerator(summary, summaryI)\n\n const columnWidth = summary.width\n\n const thisSummaryData = summary.pieceData\n\n const calculatedSummaryStyle = styleFn(thisSummaryData[0].data, summaryI)\n const calculatedSummaryClass = classFn(thisSummaryData[0].data, summaryI)\n\n let summaryPositionNest,\n summaryValueNest,\n translate,\n extentlineX1,\n extentlineX2,\n extentlineY1,\n extentlineY2,\n topLineX1,\n topLineX2,\n midLineX1,\n midLineX2,\n bottomLineX1,\n bottomLineX2,\n rectTopWidth,\n rectTopHeight,\n rectTopY,\n rectTopX,\n rectBottomWidth,\n rectBottomHeight,\n rectBottomY,\n rectBottomX,\n rectWholeWidth,\n rectWholeHeight,\n rectWholeY,\n rectWholeX,\n topLineY1,\n topLineY2,\n bottomLineY1,\n bottomLineY2,\n midLineY1,\n midLineY2\n\n summaryValueNest = thisSummaryData.map((p) => p.value).sort((a, b) => a - b)\n\n if (fixedInput !== true || summaryValueNest.length !== 5) {\n summaryValueNest = [\n quantile(summaryValueNest, 0.0),\n quantile(summaryValueNest, 0.25),\n quantile(summaryValueNest, 0.5),\n quantile(summaryValueNest, 0.75),\n quantile(summaryValueNest, 1.0)\n ]\n }\n\n const iqr = summaryValueNest[3] - summaryValueNest[1]\n let minOutlier, maxOutlier\n\n if (outliers) {\n minOutlier = summaryValueNest[1] - iqr * 1.5\n maxOutlier = summaryValueNest[3] + iqr * 1.5\n\n summaryValueNest[0] = Math.max(summaryValueNest[0], minOutlier)\n summaryValueNest[4] = Math.min(summaryValueNest[4], maxOutlier)\n }\n\n // Derive position quantiles from value quantiles via linear interpolation.\n // This avoids depending on d3.quantile sort-order behavior (which changed in v3).\n const posAccessor = projection === \"vertical\"\n ? (p: { scaledVerticalValue: number }) => p.scaledVerticalValue\n : (p: { scaledValue: number }) => p.scaledValue\n\n const sortedPieces = [...thisSummaryData].sort((a, b) => a.value - b.value)\n const valMin = sortedPieces[0].value\n const valMax = sortedPieces[sortedPieces.length - 1].value\n const posOfMin = posAccessor(sortedPieces[0])\n const posOfMax = posAccessor(sortedPieces[sortedPieces.length - 1])\n\n // summaryPositionNest indices now match summaryValueNest:\n // [0]=min, [1]=Q1, [2]=median, [3]=Q3, [4]=max\n summaryPositionNest = summaryValueNest.map((v: number) => {\n if (valMax === valMin) return (posOfMin + posOfMax) / 2\n return posOfMin + (v - valMin) / (valMax - valMin) * (posOfMax - posOfMin)\n })\n\n if (projection === \"vertical\") {\n translate = `translate(${summary.x + summary.width / 2},0)`\n\n extentlineX1 = 0\n extentlineX2 = 0\n extentlineY1 = summaryPositionNest[0]\n extentlineY2 = summaryPositionNest[4]\n topLineX1 = -columnWidth / 2\n topLineX2 = columnWidth / 2\n midLineX1 = -columnWidth / 2\n midLineX2 = columnWidth / 2\n bottomLineX1 = -columnWidth / 2\n bottomLineX2 = columnWidth / 2\n rectBottomWidth = columnWidth\n rectBottomHeight = summaryPositionNest[1] - summaryPositionNest[2]\n rectBottomY = summaryPositionNest[2]\n rectBottomX = -columnWidth / 2\n rectTopWidth = columnWidth\n rectTopHeight = summaryPositionNest[2] - summaryPositionNest[3]\n rectWholeWidth = columnWidth\n rectWholeHeight = summaryPositionNest[1] - summaryPositionNest[3]\n rectWholeY = summaryPositionNest[3]\n rectWholeX = -columnWidth / 2\n rectTopY = summaryPositionNest[3]\n rectTopX = -columnWidth / 2\n topLineY1 = summaryPositionNest[0]\n topLineY2 = summaryPositionNest[0]\n bottomLineY1 = summaryPositionNest[4]\n bottomLineY2 = summaryPositionNest[4]\n midLineY1 = summaryPositionNest[2]\n midLineY2 = summaryPositionNest[2]\n\n const columnCenter = summary.x + summary.width / 2\n\n summaryXYCoords.push(\n {\n label: \"Maximum\",\n key,\n summaryPieceName: \"max\",\n x: columnCenter,\n y: summaryPositionNest[4],\n value: summaryValueNest[4]\n },\n {\n label: \"3rd Quartile\",\n key,\n summaryPieceName: \"q3area\",\n x: columnCenter,\n y: summaryPositionNest[3],\n value: summaryValueNest[3]\n },\n {\n label: \"Median\",\n key,\n summaryPieceName: \"median\",\n x: columnCenter,\n y: summaryPositionNest[2],\n value: summaryValueNest[2]\n },\n {\n label: \"1st Quartile\",\n key,\n summaryPieceName: \"q1area\",\n x: columnCenter,\n y: summaryPositionNest[1],\n value: summaryValueNest[1]\n },\n {\n label: \"Minimum\",\n key,\n summaryPieceName: \"min\",\n x: columnCenter,\n y: summaryPositionNest[0],\n value: summaryValueNest[0]\n }\n )\n } else if (projection === \"horizontal\") {\n const columnCenter = summary.x + summary.width / 2\n\n translate = `translate(0,${columnCenter})`\n\n extentlineY1 = 0\n extentlineY2 = 0\n extentlineX1 = summaryPositionNest[0]\n extentlineX2 = summaryPositionNest[4]\n topLineY1 = -columnWidth / 2\n topLineY2 = columnWidth / 2\n midLineY1 = -columnWidth / 2\n midLineY2 = columnWidth / 2\n bottomLineY1 = -columnWidth / 2\n bottomLineY2 = columnWidth / 2\n rectTopHeight = columnWidth\n rectTopWidth = summaryPositionNest[3] - summaryPositionNest[2]\n rectTopX = summaryPositionNest[2]\n rectTopY = -columnWidth / 2\n rectBottomHeight = columnWidth\n rectBottomWidth = summaryPositionNest[2] - summaryPositionNest[1]\n rectBottomX = summaryPositionNest[1]\n rectBottomY = -columnWidth / 2\n rectWholeHeight = columnWidth\n rectWholeWidth = summaryPositionNest[3] - summaryPositionNest[1]\n rectWholeX = summaryPositionNest[1]\n rectWholeY = -columnWidth / 2\n topLineX1 = summaryPositionNest[0]\n topLineX2 = summaryPositionNest[0]\n bottomLineX1 = summaryPositionNest[4]\n bottomLineX2 = summaryPositionNest[4]\n midLineX1 = summaryPositionNest[2]\n midLineX2 = summaryPositionNest[2]\n\n summaryXYCoords.push(\n {\n label: \"Maximum\",\n key,\n summaryPieceName: \"max\",\n x: summaryPositionNest[4],\n y: columnCenter,\n value: summaryValueNest[4]\n },\n {\n label: \"3rd Quartile\",\n key,\n summaryPieceName: \"q3area\",\n x: summaryPositionNest[3],\n y: columnCenter,\n value: summaryValueNest[3]\n },\n {\n label: \"Median\",\n key,\n summaryPieceName: \"median\",\n x: summaryPositionNest[2],\n y: columnCenter,\n value: summaryValueNest[2]\n },\n {\n label: \"1st Quartile\",\n key,\n summaryPieceName: \"q1area\",\n x: summaryPositionNest[1],\n y: columnCenter,\n value: summaryValueNest[1]\n },\n {\n label: \"Minimum\",\n key,\n summaryPieceName: \"min\",\n x: summaryPositionNest[0],\n y: columnCenter,\n value: summaryValueNest[0]\n }\n )\n }\n\n if (projection === \"radial\") {\n extentlineX1 = 0\n extentlineX2 = 0\n extentlineY1 = summaryPositionNest[0]\n extentlineY2 = summaryPositionNest[4]\n topLineX1 = -columnWidth / 2\n topLineX2 = columnWidth / 2\n midLineX1 = -columnWidth / 2\n midLineX2 = columnWidth / 2\n bottomLineX1 = -columnWidth / 2\n bottomLineX2 = columnWidth / 2\n rectTopWidth = columnWidth\n rectTopHeight = summaryPositionNest[1] - summaryPositionNest[3]\n rectTopY = summaryPositionNest[3]\n rectTopX = -columnWidth / 2\n rectBottomWidth = columnWidth\n rectBottomHeight = summaryPositionNest[1] - summaryPositionNest[3]\n rectBottomY = summaryPositionNest[3]\n rectBottomX = -columnWidth / 2\n topLineY1 = summaryPositionNest[0]\n topLineY2 = summaryPositionNest[0]\n bottomLineY1 = summaryPositionNest[4]\n bottomLineY2 = summaryPositionNest[4]\n midLineY1 = summaryPositionNest[2]\n midLineY2 = summaryPositionNest[2]\n\n const twoPI = Math.PI * 2\n\n const bottomLineArcGenerator = arc()\n .innerRadius(bottomLineY1 / 2)\n .outerRadius(bottomLineY1 / 2)\n // .padAngle(summary.pct_padding * twoPI);\n\n const topLineArcGenerator = arc()\n .innerRadius(topLineY1 / 2)\n .outerRadius(topLineY1 / 2)\n // .padAngle(summary.pct_padding * twoPI);\n\n const midLineArcGenerator = arc()\n .innerRadius(midLineY1 / 2)\n .outerRadius(midLineY1 / 2)\n // .padAngle(summary.pct_padding * twoPI);\n\n const bodyArcTopGenerator = arc()\n .innerRadius(summaryPositionNest[1] / 2)\n .outerRadius(midLineY1 / 2)\n // .padAngle(summary.pct_padding * twoPI);\n\n const bodyArcBottomGenerator = arc()\n .innerRadius(midLineY1 / 2)\n .outerRadius(summaryPositionNest[3] / 2)\n // .padAngle(summary.pct_padding * twoPI);\n\n const bodyArcWholeGenerator = arc()\n .innerRadius(summaryPositionNest[1] / 2)\n .outerRadius(summaryPositionNest[3] / 2)\n // .padAngle(summary.pct_padding * twoPI);\n\n let startAngle = summary.pct_start + summary.pct_padding / 2\n let endAngle = summary.pct + summary.pct_start - summary.pct_padding / 2\n const midAngle = summary.pct / 2 + summary.pct_start\n startAngle *= twoPI\n endAngle *= twoPI\n\n const radialAdjustX = adjustedSize[0] / 2\n\n const radialAdjustY = adjustedSize[1] / 2\n\n // const bottomPoint = bottomLineArcGenerator.centroid({ startAngle, endAngle })\n // const topPoint = topLineArcGenerator.centroid({ startAngle, endAngle })\n const bottomPoint = pointOnArcAtAngle(\n [0, 0],\n midAngle,\n summaryPositionNest[4] / 2\n )\n const topPoint = pointOnArcAtAngle(\n [0, 0],\n midAngle,\n summaryPositionNest[0] / 2\n )\n const thirdPoint = pointOnArcAtAngle(\n [0, 0],\n midAngle,\n summaryPositionNest[3] / 2\n )\n const midPoint = pointOnArcAtAngle(\n [0, 0],\n midAngle,\n summaryPositionNest[2] / 2\n )\n const firstPoint = pointOnArcAtAngle(\n [0, 0],\n midAngle,\n summaryPositionNest[1] / 2\n )\n\n summaryXYCoords.push(\n {\n label: \"Minimum\",\n key,\n summaryPieceName: \"min\",\n x: topPoint[0] + radialAdjustX,\n y: topPoint[1] + radialAdjustY,\n value: summaryValueNest[0]\n },\n {\n label: \"1st Quartile\",\n key,\n summaryPieceName: \"q3area\",\n x: firstPoint[0] + radialAdjustX,\n y: firstPoint[1] + radialAdjustY,\n value: summaryValueNest[1]\n },\n {\n label: \"Median\",\n key,\n summaryPieceName: \"median\",\n x: midPoint[0] + radialAdjustX,\n y: midPoint[1] + radialAdjustY,\n value: summaryValueNest[2]\n },\n {\n label: \"3rd Quartile\",\n key,\n summaryPieceName: \"q1area\",\n x: thirdPoint[0] + radialAdjustX,\n y: thirdPoint[1] + radialAdjustY,\n value: summaryValueNest[3]\n },\n {\n label: \"Maximum\",\n key,\n summaryPieceName: \"max\",\n x: bottomPoint[0] + radialAdjustX,\n y: bottomPoint[1] + radialAdjustY,\n value: summaryValueNest[4]\n }\n )\n translate = `translate(${radialAdjustX},${radialAdjustY})`\n\n renderedSummaryMarks.push({\n //This is a g element\n containerProps: {\n ...eventListeners,\n className: calculatedSummaryClass,\n transform: translate,\n key: `summaryPiece-${summaryI}`,\n role: \"img\",\n tabIndex: -1,\n \"data-o\": key,\n \"aria-label\": `${key} boxplot showing ${summaryXYCoords\n .filter((d) => d.key === key)\n .map((d) => `${d.label} ${d.value}`)}`\n },\n //These are drawn items\n elements: [\n {\n\n\n markType: \"line\",\n x1: bottomPoint[0],\n x2: topPoint[0],\n y1: bottomPoint[1],\n y2: topPoint[1],\n style: Object.assign(\n { strokeWidth: 2 },\n calculatedSummaryStyle,\n summaryElementStylingFn(\"whisker\", thisSummaryData)\n )\n },\n {\n\n\n markType: \"path\",\n d: topLineArcGenerator({ startAngle, endAngle }),\n style: Object.assign(\n { strokeWidth: 4 },\n calculatedSummaryStyle,\n { fill: \"none\" },\n summaryElementStylingFn(\"max\", thisSummaryData)\n )\n },\n {\n\n\n markType: \"path\",\n d: midLineArcGenerator({ startAngle, endAngle }),\n style: Object.assign(\n { strokeWidth: 4 },\n calculatedSummaryStyle,\n { fill: \"none\" },\n summaryElementStylingFn(\"median\", thisSummaryData)\n )\n },\n {\n\n\n markType: \"path\",\n d: bottomLineArcGenerator({ startAngle, endAngle }),\n style: Object.assign(\n { strokeWidth: 4 },\n calculatedSummaryStyle,\n { fill: \"none\" },\n summaryElementStylingFn(\"min\", thisSummaryData)\n )\n },\n {\n\n\n markType: \"path\",\n d: bodyArcWholeGenerator({ startAngle, endAngle }),\n style: Object.assign(\n { strokeWidth: 4 },\n calculatedSummaryStyle,\n summaryElementStylingFn(\"iqrarea\", thisSummaryData)\n )\n },\n {\n\n\n markType: \"path\",\n d: bodyArcTopGenerator({ startAngle, endAngle }),\n style: Object.assign(\n {},\n calculatedSummaryStyle,\n { fill: \"none\", stroke: \"none\" },\n summaryElementStylingFn(\"q3area\", thisSummaryData)\n )\n },\n {\n\n\n markType: \"path\",\n d: bodyArcBottomGenerator({ startAngle, endAngle }),\n style: Object.assign(\n {},\n calculatedSummaryStyle,\n { fill: \"none\", stroke: \"none\" },\n summaryElementStylingFn(\"q1area\", thisSummaryData)\n )\n }\n ]\n })\n } else {\n const boxplotMarks = [\n {\n\n\n markType: \"line\",\n x1: extentlineX1,\n x2: extentlineX2,\n y1: extentlineY1,\n y2: extentlineY2,\n style: Object.assign(\n { strokeWidth: 2 },\n calculatedSummaryStyle,\n summaryElementStylingFn(\"whisker\", thisSummaryData)\n )\n },\n {\n\n\n markType: \"line\",\n x1: topLineX1,\n x2: topLineX2,\n y1: topLineY1,\n y2: topLineY2,\n style: Object.assign(\n { strokeWidth: 2 },\n calculatedSummaryStyle,\n summaryElementStylingFn(\"min\", thisSummaryData)\n )\n },\n {\n\n\n markType: \"line\",\n x1: bottomLineX1,\n x2: bottomLineX2,\n y1: bottomLineY1,\n y2: bottomLineY2,\n style: Object.assign(\n { strokeWidth: 2 },\n calculatedSummaryStyle,\n summaryElementStylingFn(\"max\", thisSummaryData)\n )\n },\n {\n\n\n markType: \"rect\",\n x: rectWholeX,\n width: rectWholeWidth,\n y: rectWholeY,\n height: rectWholeHeight,\n style: Object.assign(\n { strokeWidth: 1 },\n calculatedSummaryStyle,\n summaryElementStylingFn(\"iqrarea\", thisSummaryData)\n )\n },\n {\n\n\n markType: \"rect\",\n x: rectTopX,\n width: rectTopWidth,\n y: rectTopY,\n height: rectTopHeight,\n style: Object.assign(\n {},\n calculatedSummaryStyle,\n { fill: \"none\", stroke: \"none\" },\n summaryElementStylingFn(\"q3area\", thisSummaryData)\n )\n },\n {\n\n\n markType: \"rect\",\n x: rectBottomX,\n width: rectBottomWidth,\n y: rectBottomY,\n height: rectBottomHeight,\n style: Object.assign(\n {},\n calculatedSummaryStyle,\n { fill: \"none\", stroke: \"none\" },\n summaryElementStylingFn(\"q1area\", thisSummaryData)\n )\n },\n {\n\n\n markType: \"line\",\n x1: midLineX1,\n x2: midLineX2,\n y1: midLineY1,\n y2: midLineY2,\n style: Object.assign(\n { strokeWidth: 2 },\n calculatedSummaryStyle,\n summaryElementStylingFn(\"median\", thisSummaryData)\n )\n }\n ]\n\n const outlierMarks = []\n\n if (outliers) {\n const outlierPoints = thisSummaryData.filter(\n (d) => d.value > maxOutlier || d.value < minOutlier\n )\n\n outlierPoints.forEach((point) => {\n outlierMarks.push({\n\n\n markType: \"circle\",\n cx: projection === \"horizontal\" ? point.scaledValue : 0,\n cy: projection === \"vertical\" ? point.scaledVerticalValue : 0,\n style: Object.assign(\n { strokeWidth: \"1px\", stroke: \"black\", fill: \"none\", r: 2 },\n calculatedSummaryStyle,\n summaryElementStylingFn(\"outlier\", thisSummaryData)\n )\n })\n })\n }\n renderedSummaryMarks.push({\n containerProps: {\n ...eventListeners,\n className: calculatedSummaryClass,\n transform: translate,\n key: `summaryPiece-${summaryI}`,\n role: \"img\",\n tabIndex: -1,\n \"data-o\": key,\n \"aria-label\": `${key} boxplot showing ${summaryXYCoords\n .filter((d) => d.key === key)\n .map((d) => `${d.label} ${d.value}`)}`\n },\n //These are drawn items\n elements: [...boxplotMarks, ...outlierMarks]\n })\n }\n })\n\n return { marks: renderedSummaryMarks, xyPoints: summaryXYCoords }\n}\n","/**\n * Ckmeans algorithm from d3-scale-cluster\n *\n * Much of the code that lies within was taken from the simple-statistics library,\n * which offers a javascript implementation of the ckmeans algorithm originally\n * designed by Haizhou Wang and Mingzhou Song\n *\n * https://cran.r-project.org/web/packages/Ckmeans.1d.dp/\n * https://github.com/simple-statistics/simple-statistics\n *\n * The simple-statistics software license is included below\n *\n * --\n *\n * ISC License\n *\n * Copyright (c) 2014, Tom MacWright\n *\n * Permission to use, copy, modify, and/or distribute this software for any\n * purpose with or without fee is hereby granted, provided that the above\n * copyright notice and this permission notice appear in all copies.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\n * REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND\n * FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\n * INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\n * LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\n * OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\n * PERFORMANCE OF THIS SOFTWARE.\n */\n\nfunction numericSort(array) {\n return (\n array\n // ensure the array is not changed in-place\n .slice()\n // comparator function that treats input as numeric\n .sort(function (a, b) {\n return a - b\n })\n )\n}\n\nfunction uniqueCountSorted(input) {\n var uniqueValueCount = 0\n var lastSeenValue\n for (var i = 0; i < input.length; i++) {\n if (i === 0 || input[i] !== lastSeenValue) {\n lastSeenValue = input[i]\n uniqueValueCount++\n }\n }\n return uniqueValueCount\n}\n\nfunction makeMatrix(columns, rows) {\n var matrix = []\n for (var i = 0; i < columns; i++) {\n var column = []\n for (var j = 0; j < rows; j++) {\n column.push(0)\n }\n matrix.push(column)\n }\n return matrix\n}\n\nfunction ssq(j, i, sumX, sumXsq) {\n var sji // s(j, i)\n if (j > 0) {\n var muji = (sumX[i] - sumX[j - 1]) / (i - j + 1) // mu(j, i)\n sji = sumXsq[i] - sumXsq[j - 1] - (i - j + 1) * muji * muji\n } else {\n sji = sumXsq[i] - (sumX[i] * sumX[i]) / (i + 1)\n }\n return sji < 0 ? 0 : sji\n}\n\nfunction fillMatrixColumn(\n imin,\n imax,\n column,\n matrix,\n backtrackMatrix,\n sumX,\n sumXsq\n) {\n if (imin > imax) {\n return\n }\n\n // Start at midpoint between imin and imax\n var i = Math.floor((imin + imax) / 2)\n\n // Initialization of S[k][i]:\n matrix[column][i] = matrix[column - 1][i - 1]\n backtrackMatrix[column][i] = i\n\n var jlow = column // the lower end for j\n\n if (imin > column) {\n jlow = Math.max(jlow, backtrackMatrix[column][imin - 1] || 0)\n }\n jlow = Math.max(jlow, backtrackMatrix[column - 1][i] || 0)\n\n var jhigh = i - 1 // the upper end for j\n if (imax < matrix[0].length - 1) {\n jhigh = Math.min(jhigh, backtrackMatrix[column][imax + 1] || 0)\n }\n\n var sji\n var sjlowi\n var ssqjlow\n var ssqj\n for (var j = jhigh; j >= jlow; --j) {\n // compute s(j,i)\n sji = ssq(j, i, sumX, sumXsq)\n\n // MS May 11, 2016 Added:\n if (sji + matrix[column - 1][jlow - 1] >= matrix[column][i]) {\n break\n }\n\n // Examine the lower bound of the cluster border\n // compute s(jlow, i)\n sjlowi = ssq(jlow, i, sumX, sumXsq)\n\n ssqjlow = sjlowi + matrix[column - 1][jlow - 1]\n\n if (ssqjlow < matrix[column][i]) {\n // shrink the lower bound\n matrix[column][i] = ssqjlow\n backtrackMatrix[column][i] = jlow\n }\n jlow++\n\n ssqj = sji + matrix[column - 1][j - 1]\n if (ssqj < matrix[column][i]) {\n matrix[column][i] = ssqj\n backtrackMatrix[column][i] = j\n }\n }\n\n fillMatrixColumn(imin, i - 1, column, matrix, backtrackMatrix, sumX, sumXsq)\n fillMatrixColumn(i + 1, imax, column, matrix, backtrackMatrix, sumX, sumXsq)\n}\n\nfunction fillMatrices(data, matrix, backtrackMatrix) {\n var nValues = matrix[0].length\n var sumX = new Array(nValues)\n var sumXsq = new Array(nValues)\n\n // Use the median to shift values of x to improve numerical stability\n var shift = data[Math.floor(nValues / 2)]\n\n // Initialize first row in matrix & backtrackMatrix\n for (var i = 0; i < nValues; ++i) {\n if (i === 0) {\n sumX[0] = data[0] - shift\n sumXsq[0] = (data[0] - shift) * (data[0] - shift)\n } else {\n sumX[i] = sumX[i - 1] + data[i] - shift\n sumXsq[i] = sumXsq[i - 1] + (data[i] - shift) * (data[i] - shift)\n }\n\n // Initialize for k = 0\n matrix[0][i] = ssq(0, i, sumX, sumXsq)\n backtrackMatrix[0][i] = 0\n }\n\n // Initialize the rest of the columns\n var imin\n for (var k = 1; k < matrix.length; ++k) {\n if (k < matrix.length - 1) {\n imin = k\n } else {\n // No need to compute matrix[K-1][0] ... matrix[K-1][N-2]\n imin = nValues - 1\n }\n\n fillMatrixColumn(\n imin,\n nValues - 1,\n k,\n matrix,\n backtrackMatrix,\n sumX,\n sumXsq\n )\n }\n}\n\n/**\n * Ckmeans clustering is an improvement on heuristic-based clustering\n * approaches like Jenks. The algorithm was developed in\n * [Haizhou Wang and Mingzhou Song](http://journal.r-project.org/archive/2011-2/RJournal_2011-2_Wang+Song.pdf)\n * as a [dynamic programming](https://en.wikipedia.org/wiki/Dynamic_programming) approach\n * to the problem of clustering numeric data into groups with the least\n * within-group sum-of-squared-deviations.\n *\n * Minimizing the difference within groups - what Wang & Song refer to as\n * `withinss`, or within sum-of-squares, means that groups are optimally\n * homogenous within and the data is split into representative groups.\n * This is very useful for visualization, where you may want to represent\n * a continuous variable in discrete color or style groups. This function\n * can provide groups that emphasize differences between data.\n *\n * Being a dynamic approach, this algorithm is based on two matrices that\n * store incrementally-computed values for squared deviations and backtracking\n * indexes.\n *\n * Unlike the [original implementation](https://cran.r-project.org/web/packages/Ckmeans.1d.dp/index.html),\n * this implementation does not include any code to automatically determine\n * the optimal number of clusters: this information needs to be explicitly\n * provided.\n *\n * ### References\n * _Ckmeans.1d.dp: Optimal k-means Clustering in One Dimension by Dynamic\n * Programming_ Haizhou Wang and Mingzhou Song ISSN 2073-4859\n *\n * from The R Journal Vol. 3/2, December 2011\n * @param {Array<number>} data input data, as an array of number values\n * @param {number} nClusters number of desired classes. This cannot be\n * greater than the number of values in the data array.\n * @returns {Array<Array<number>>} clustered input\n * @example\n * ckmeans([-1, 2, -1, 2, 4, 5, 6, -1, 2, -1], 3);\n * // The input, clustered into groups of similar numbers.\n * //= [[-1, -1, -1, -1], [2, 2, 2], [4, 5, 6]]);\n */\n\nexport function ckmeans(data, nClusters) {\n if (nClusters > data.length) {\n throw new Error(\"Cannot generate more classes than there are data values\")\n }\n\n var nValues = data.length\n\n var sorted = numericSort(data)\n // we'll use this as the maximum number of clusters\n var uniqueCount = uniqueCountSorted(sorted)\n\n // if all of the input values are identical, there's one cluster\n // with all of the input in it.\n if (uniqueCount === 1) {\n return [sorted[0]]\n }\n nClusters = Math.min(uniqueCount, nClusters)\n\n // named 'S' originally\n var matrix = makeMatrix(nClusters, nValues)\n // named 'J' originally\n var backtrackMatrix = makeMatrix(nClusters, nValues)\n\n // This is a dynamic programming way to solve the problem of minimizing\n // within-cluster sum of squares. It's similar to linear regression\n // in this way, and this calculation incrementally computes the\n // sum of squares that are later read.\n fillMatrices(sorted, matrix, backtrackMatrix)\n\n // The real work of Ckmeans clustering happens in the matrix generation:\n // the generated matrices encode all possible clustering combinations, and\n // once they're generated we can solve for the best clustering groups\n // very quickly.\n var clusters = []\n var clusterRight = backtrackMatrix[0].length - 1\n\n // Backtrack the clusters from the dynamic programming matrix. This\n // starts at the bottom-right corner of the matrix (if the top-left is 0, 0),\n // and moves the cluster target with the loop.\n for (var cluster = backtrackMatrix.length - 1; cluster >= 0; cluster--) {\n var clusterLeft = backtrackMatrix[cluster][clusterRight]\n\n // fill the cluster from the sorted input by taking a slice of the\n // array. the backtrack matrix makes this easy - it stores the\n // indexes where the cluster should start and end.\n clusters[cluster] = sorted[clusterLeft]\n\n if (cluster > 0) {\n clusterRight = clusterLeft - 1\n }\n }\n\n return clusters\n}\n","import { scaleLinear } from \"d3-scale\"\nimport { ckmeans } from \"./ckmeans\"\n\ntype BoxplotFnType = {\n data: Record<string, any>[]\n type: Record<string, any>\n renderMode: Function\n eventListenersGenerator: Function\n styleFn: Function\n classFn: Function\n projection: \"horizontal\" | \"vertical\" | \"radial\"\n adjustedSize: number[]\n}\n\ninterface summaryInstruction {\n Mark?: JSX.Element\n containerProps?: object\n elements: object[]\n}\n\nexport function ckBinsRenderFn(props: BoxplotFnType) {\n const {\n data,\n type,\n renderMode,\n eventListenersGenerator,\n styleFn,\n classFn,\n projection,\n adjustedSize\n } = props\n const renderedSummaryMarks: summaryInstruction[] = []\n\n const summaryXYCoords = []\n\n const keys = Object.keys(data)\n\n let maxClusterSize = 0\n\n const allBins: Record<string, any>[][] = []\n\n keys.forEach((key, summaryI) => {\n const summary = data[key]\n const eventListeners = eventListenersGenerator(summary, summaryI)\n\n const columnWidth = summary.width\n\n const thisSummaryData = summary.pieceData.sort((a, b) => a.value - b.value)\n\n const firstElement = thisSummaryData[0]\n const lastElement = thisSummaryData[thisSummaryData.length - 1]\n\n const binScale = scaleLinear()\n .domain([firstElement.value, lastElement.value])\n .range([firstElement.scaledValue, lastElement.scaledValue])\n\n const calculatedSummaryStyle = styleFn(thisSummaryData[0].data, summaryI)\n const calculatedSummaryClass = classFn(thisSummaryData[0].data, summaryI)\n\n const binData = thisSummaryData.map((d) => d.value)\n\n const clusters = 5\n\n const ckstops = ckmeans(binData, clusters)\n\n let ckBins = []\n\n ckstops.forEach((ckstop, i) => {\n const start = ckstop\n const end = ckstops[i + 1] ?? lastElement.value\n\n ckBins.push({\n start,\n end,\n key,\n summary,\n calculatedSummaryStyle,\n calculatedSummaryClass,\n scaledStart: binScale(start),\n scaledEnd: binScale(end),\n values: []\n })\n })\n\n allBins.push(ckBins)\n\n let binI = 0\n\n for (const datapoint of thisSummaryData) {\n if (ckBins[binI].end <= datapoint.value) {\n if (ckBins[binI + 1]) {\n binI++\n }\n }\n ckBins[binI].values.push(datapoint)\n }\n\n ckBins.forEach((ckbin) => {\n const clusterSize = ckbin.values.length\n maxClusterSize = Math.max(clusterSize, maxClusterSize)\n })\n })\n\n allBins.forEach((ckBins, index) => {\n const CKBinElements = ckBins.map((ckBin) => {\n const { key, summary, calculatedSummaryStyle, calculatedSummaryClass } =\n ckBin\n\n const { fill = \"black\", stroke = \"black\" } = calculatedSummaryStyle\n\n const lightScale = scaleLinear()\n .domain([1, maxClusterSize])\n .range([\"white\", fill])\n\n return {\n\n\n markType: \"rect\",\n x: ckBin.scaledStart,\n width: ckBin.scaledEnd - ckBin.scaledStart,\n y: ckBin.summary.x,\n height: ckBin.summary.width,\n style: Object.assign({ strokeWidth: 2 }, calculatedSummaryStyle, {\n fill: lightScale(ckBin.values.length),\n strokeWidth: 1,\n stroke\n })\n }\n })\n\n renderedSummaryMarks.push({\n containerProps: {\n // className: calculatedSummaryClass,\n transform: \"\",\n key: `summaryPiece-${index}`,\n role: \"img\",\n tabIndex: -1\n },\n //These are drawn items\n elements: CKBinElements\n })\n })\n\n return { marks: renderedSummaryMarks, xyPoints: summaryXYCoords }\n}\n","import { contourDensity } from \"d3-contour\"\nimport { scaleLinear } from \"d3-scale\"\n\nfunction shapeBounds(coordinates) {\n let left = [Infinity, 0]\n let right = [-Infinity, 0]\n let top = [0, Infinity]\n let bottom = [0, -Infinity]\n coordinates.forEach((d) => {\n left = d[0] < left[0] ? d : left\n right = d[0] > right[0] ? d : right\n bottom = d[1] > bottom[1] ? d : bottom\n top = d[1] < top[1] ? d : top\n })\n\n return {\n center: [(left[0] + right[0]) / 2, (top[1] + bottom[1]) / 2],\n top,\n left,\n right,\n bottom\n }\n}\n\nexport function contouring({ summaryType, data, finalXExtent, finalYExtent }) {\n let projectedSummaries = []\n if (!summaryType.type) {\n summaryType = { type: summaryType }\n }\n\n const {\n resolution = 500,\n thresholds = 10,\n bandwidth = 20,\n neighborhood\n } = summaryType\n\n const xScale = scaleLinear()\n .domain(finalXExtent)\n .rangeRound([0, resolution])\n .nice()\n const yScale = scaleLinear()\n .domain(finalYExtent)\n .rangeRound([resolution, 0])\n .nice()\n\n data.forEach((contourData) => {\n let contourProjectedSummaries = contourDensity()\n .size([resolution, resolution])\n .x((d) => xScale(d[0]))\n .y((d) => yScale(d[1]))\n .thresholds(thresholds)\n .bandwidth(bandwidth)(contourData._xyfCoordinates)\n\n if (neighborhood) {\n contourProjectedSummaries = [contourProjectedSummaries[0]]\n }\n\n const max = Math.max(...contourProjectedSummaries.map((d) => d.value))\n\n contourProjectedSummaries.forEach((summary) => {\n summary.parentSummary = contourData\n summary.bounds = []\n summary.percent = summary.value / max\n summary.coordinates.forEach((poly) => {\n poly.forEach((subpoly, i) => {\n poly[i] = subpoly.map((coordpair) => {\n coordpair = [\n xScale.invert(coordpair[0]),\n yScale.invert(coordpair[1])\n ]\n return coordpair\n })\n //Only push bounds for the main poly, not its interior rings, otherwise you end up labeling interior cutouts\n if (i === 0) {\n summary.bounds.push(shapeBounds(poly[i]))\n }\n })\n })\n })\n projectedSummaries = [...projectedSummaries, ...contourProjectedSummaries]\n })\n\n return projectedSummaries\n}\n","import * as React from \"react\"\nimport { hexbin } from \"d3-hexbin\"\nimport { scaleLinear } from \"d3-scale\"\nimport { ProjectedPoint } from \"../types/generalTypes\"\nimport { SummaryLayoutType } from \"../types/xyTypes\"\n\ninterface BinArray {\n [position: number]: number\n x?: number\n y?: number\n}\n\nexport function hexbinning({\n preprocess = true,\n processedData = false,\n summaryType: baseSummaryType,\n data: baseData,\n finalXExtent: baseXExtent,\n finalYExtent: baseYExtent,\n size,\n xScaleType = scaleLinear(),\n yScaleType = scaleLinear(),\n margin,\n styleFn,\n classFn,\n renderFn,\n chartSize\n}: SummaryLayoutType) {\n let finalXExtent = baseXExtent\n let finalYExtent = baseYExtent\n\n if (!finalXExtent) {\n const xData = baseData.coordinates.map((p) => p.x)\n finalXExtent = [Math.min(...xData), Math.max(...xData)]\n }\n\n if (!finalYExtent) {\n const yData = baseData.coordinates.map((p) => p.y)\n finalYExtent = [Math.min(...yData), Math.max(...yData)]\n }\n\n if (processedData && baseData) {\n return baseData.coordinates\n }\n\n let projectedSummaries = []\n let summaryType: Record<string, any>\n if (!baseSummaryType.type) {\n summaryType = { type: summaryType }\n } else {\n summaryType = baseSummaryType\n }\n\n const {\n bins = 0.05,\n cellPx,\n binValue = (d) => d.length,\n binMax,\n customMark\n } = summaryType\n\n if (baseData.coordinates && !baseData._xyfCoordinates) {\n baseData._xyfCoordinates = baseData.coordinates.map((d) => [d.x, d.y])\n }\n\n const data = Array.isArray(baseData) ? baseData : [baseData]\n\n const hexBinXScale = xScaleType.domain(finalXExtent).range([0, size[0]])\n const hexBinYScale = yScaleType.domain(finalYExtent).range([0, size[1]])\n\n const actualResolution =\n (cellPx && cellPx / 2) || ((bins > 1 ? 1 / bins : bins) * size[0]) / 2\n\n const hexbinner = hexbin()\n .x((d) => hexBinXScale(d._xyfPoint[0]))\n .y((d) => hexBinYScale(d._xyfPoint[1]))\n .radius(actualResolution)\n .size(size)\n\n let hexMax\n const allHexes: ProjectedPoint[] = hexbinner.centers()\n\n data.forEach((hexbinData) => {\n hexMax = 0\n const hexes = hexbinner(\n hexbinData._xyfCoordinates.map((d, i) => ({\n _xyfPoint: d,\n ...hexbinData.coordinates[i]\n }))\n )\n\n const centerHash = {}\n\n hexes.forEach((d) => {\n centerHash[`${parseInt(d.x)}-${parseInt(d.y)}`] = true\n })\n\n allHexes.forEach((hexCenter) => {\n if (!centerHash[`${parseInt(hexCenter[0])}-${parseInt(hexCenter[1])}`]) {\n const newHex: BinArray = []\n newHex.x = hexCenter[0]\n newHex.y = hexCenter[1]\n hexes.push(newHex)\n }\n })\n\n hexMax = Math.max(...hexes.map((d) => binValue(d)))\n\n if (binMax) {\n binMax(hexMax)\n }\n\n const hexBase = [\n [0, -1],\n [0.866, -0.5],\n [0.866, 0.5],\n [0, 1],\n [-0.866, 0.5],\n [-0.866, -0.5]\n ]\n\n const hexWidth = hexBinXScale.invert(actualResolution) - finalXExtent[0]\n const hexHeight = hexBinYScale.invert(actualResolution) - finalYExtent[0]\n\n const hexacoordinates = hexBase.map((d) => [\n d[0] * hexWidth,\n d[1] * hexHeight\n ])\n\n const hexbinProjectedSummaries = hexes.map((d: Record<string, any>) => {\n const hexValue = binValue(d)\n const gx = d.x\n const gy = d.y\n d.x = hexBinXScale.invert(d.x)\n d.y = hexBinYScale.invert(d.y)\n const percent = hexValue / hexMax\n return {\n customMark: customMark && (\n <g transform={`translate(${gx},${size[1] - gy})`}>\n {customMark({\n d: {\n ...d,\n binItems: d,\n percent,\n value: hexValue,\n radius: actualResolution,\n hexCoordinates: hexBase.map((d) => [\n d[0] * actualResolution,\n d[1] * actualResolution\n ])\n },\n margin,\n styleFn,\n classFn,\n renderFn,\n chartSize,\n adjustedSize: size\n })}\n </g>\n ),\n _xyfCoordinates: hexacoordinates.map((p) => [p[0] + d.x, p[1] + d.y]),\n value: hexValue,\n percent,\n data: d,\n parentSummary: hexbinData,\n centroid: true\n }\n })\n projectedSummaries = [...projectedSummaries, ...hexbinProjectedSummaries]\n })\n\n if (preprocess) {\n projectedSummaries.forEach((d) => {\n d.x = d.data.x\n d.y = d.data.y\n })\n return {\n type: \"hexbin\",\n processedData: true,\n coordinates: projectedSummaries,\n binMax: hexMax\n }\n }\n\n return projectedSummaries\n}\n","import * as React from \"react\"\nimport { scaleLinear } from \"d3-scale\"\nimport regression from \"regression\"\nimport { curveCardinal } from \"d3-shape\"\n\nimport { ProjectedPoint } from \"../types/generalTypes\"\nimport { SummaryLayoutType } from \"../types/xyTypes\"\nimport { ProjectedSummary } from \"../types/generalTypes\"\n\n// Re-export from new locations for backwards compatibility\nexport { contouring } from \"./contourLayout\"\nexport { hexbinning } from \"./hexbinLayout\"\n\nconst generateLineBounds = (\n xydata,\n basedata,\n topBoundingAccessor,\n bottomBoundingAccessor\n) => {\n const tops = xydata.map((d, i) => [\n d[0],\n d[1] + topBoundingAccessor(basedata[i])\n ])\n const bottoms = xydata.map((d, i) => [\n d[0],\n d[1] - bottomBoundingAccessor(basedata[i])\n ])\n return [...tops, ...bottoms.reverse()]\n}\n\nexport function lineBounding({ summaryType, data, defined }) {\n let projectedSummaries = []\n if (!summaryType.type) {\n summaryType = { type: summaryType }\n }\n\n const {\n boundingAccessor,\n topBoundingAccessor = boundingAccessor,\n bottomBoundingAccessor = boundingAccessor\n } = summaryType\n\n data.forEach((lineData) => {\n const definedData = lineData._baseData.map(defined)\n let currentBaseData = []\n let currentXYFC = []\n const boundingPieces = [\n {\n xyf: currentXYFC,\n base: currentBaseData\n }\n ]\n definedData.forEach((d, i) => {\n if (d === true) {\n currentBaseData.push(lineData._baseData[i])\n currentXYFC.push(lineData._xyfCoordinates[i])\n } else if (definedData[i + 1]) {\n currentBaseData = []\n currentXYFC = []\n boundingPieces.push({\n xyf: currentXYFC,\n base: currentBaseData\n })\n }\n })\n\n boundingPieces.forEach(({ xyf, base }) => {\n const boundingProjectedSummary = {\n data: lineData,\n parentSummary: lineData,\n _xyfCoordinates: generateLineBounds(\n xyf,\n base,\n topBoundingAccessor,\n bottomBoundingAccessor\n )\n }\n\n projectedSummaries = [...projectedSummaries, boundingProjectedSummary]\n })\n })\n\n return projectedSummaries\n}\n\nexport function heatmapping({\n preprocess = true,\n processedData = false,\n summaryType: baseSummaryType,\n data: baseData,\n finalXExtent = [\n Math.min(...baseData.coordinates.map((d) => d.x)),\n Math.max(...baseData.coordinates.map((d) => d.x))\n ],\n finalYExtent = [\n Math.min(...baseData.coordinates.map((d) => d.y)),\n Math.max(...baseData.coordinates.map((d) => d.y))\n ],\n size,\n xScaleType = scaleLinear(),\n yScaleType = scaleLinear(),\n margin,\n styleFn,\n classFn,\n renderFn,\n chartSize\n}: SummaryLayoutType) {\n if (processedData && baseData) {\n return baseData.coordinates\n }\n\n if (baseData.coordinates && !baseData._xyfCoordinates) {\n baseData._xyfCoordinates = baseData.coordinates.map((d) => [d.x, d.y])\n }\n\n const data = Array.isArray(baseData) ? baseData : [baseData]\n\n let projectedSummaries: ProjectedSummary[] = []\n\n let summaryType: Record<string, any>\n if (!baseSummaryType.type) {\n summaryType = { type: summaryType }\n } else {\n summaryType = baseSummaryType\n }\n\n const {\n // binGraphic = \"square\",\n binValue = (d) => d.length,\n xBins = summaryType.yBins || 0.05,\n yBins = xBins,\n xCellPx = !summaryType.xBins && summaryType.xCellPx,\n yCellPx = !summaryType.yBins && summaryType.yCellPx,\n customMark,\n binMax\n } = summaryType\n const xBinPercent = xBins < 1 ? xBins : 1 / xBins\n const yBinPercent = yBins < 1 ? yBins : 1 / yBins\n\n const heatmapBinXScale = xScaleType.domain(finalXExtent).range([0, size[0]])\n const heatmapBinYScale = yScaleType.domain(finalYExtent).range([size[1], 0])\n\n const actualResolution = [\n Math.ceil(((xCellPx && xCellPx / size[0]) || xBinPercent) * size[0] * 10) /\n 10,\n Math.ceil(((yCellPx && yCellPx / size[1]) || yBinPercent) * size[1] * 10) /\n 10\n ]\n let maxValue = -Infinity\n\n data.forEach((heatmapData) => {\n const grid = []\n const flatGrid = []\n\n let cell\n let gridColumn\n\n for (let i = 0; Math.ceil(i) < size[0]; i += actualResolution[0]) {\n const x = heatmapBinXScale.invert(i)\n const x1 = heatmapBinXScale.invert(i + actualResolution[0])\n\n gridColumn = []\n grid.push(gridColumn)\n for (let j = 0; Math.ceil(j) < size[1]; j += actualResolution[1]) {\n const y = heatmapBinYScale.invert(j)\n const y1 = heatmapBinYScale.invert(j + actualResolution[1])\n cell = {\n gx: i,\n gy: j,\n gw: actualResolution[0],\n gh: actualResolution[1],\n x: (x + x1) / 2,\n y: (y + y1) / 2,\n binItems: [],\n value: 0,\n _xyfCoordinates: [\n [x, y],\n [x1, y],\n [x1, y1],\n [x, y1]\n ],\n parentSummary: heatmapData\n }\n gridColumn.push(cell)\n flatGrid.push(cell)\n }\n gridColumn.push(cell)\n }\n grid.push(gridColumn)\n\n heatmapData._xyfCoordinates.forEach((d: [number, number], di: number) => {\n const baseX = heatmapBinXScale(d[0]) as number\n const baseY = heatmapBinYScale(d[1]) as number\n\n const xCoordinate = Math.floor(baseX / actualResolution[0])\n const yCoordinate = Math.floor(baseY / actualResolution[1])\n\n if (grid[xCoordinate][yCoordinate]) {\n grid[xCoordinate][yCoordinate].binItems.push(\n heatmapData.coordinates[di]\n )\n }\n })\n\n flatGrid.forEach((d) => {\n d.value = binValue(d.binItems)\n maxValue = Math.max(maxValue, d.value)\n })\n\n flatGrid.forEach((d) => {\n d.percent = d.value / maxValue\n d.customMark = customMark && (\n <g transform={`translate(${d.gx},${d.gy})`}>\n {customMark({\n d,\n margin,\n styleFn,\n classFn,\n renderFn,\n chartSize,\n adjustedSize: size\n })}\n </g>\n )\n })\n\n projectedSummaries = [...projectedSummaries, ...flatGrid]\n })\n if (binMax) {\n binMax(maxValue)\n }\n if (preprocess) {\n const preprocessedSummary: ProjectedSummary = {\n type: \"heatmap\",\n processedData: true,\n _baseData: [],\n _xyfCoordinates: [],\n data: [],\n bounds: [],\n x: 0,\n y: 0,\n coordinates: projectedSummaries,\n binMax: maxValue\n }\n return preprocessedSummary\n }\n\n return projectedSummaries\n}\n\nexport function trendlining({\n preprocess = false,\n summaryType: baseSummaryType,\n data: baseData,\n finalXExtent = [\n Math.min(...baseData.coordinates.map((d) => d.x)),\n Math.max(...baseData.coordinates.map((d) => d.x))\n ],\n xScaleType = scaleLinear()\n}: SummaryLayoutType) {\n if (preprocess) {\n return baseData[0].coordinates\n }\n\n let projectedSummaries = []\n\n let summaryType: Record<string, any>\n if (!baseSummaryType.type) {\n summaryType = { type: summaryType }\n } else {\n summaryType = baseSummaryType\n }\n\n const {\n regressionType: baseRegressionType = \"linear\",\n order = 2,\n precision = 4,\n controlPoints = 20,\n curve = curveCardinal\n } = summaryType\n\n let regressionType = baseRegressionType\n\n if (\n finalXExtent[0] < 0 &&\n (baseRegressionType === \"logarithmic\" ||\n baseRegressionType === \"power\" ||\n baseRegressionType === \"exponential\")\n ) {\n console.error(\n `Cannot use this ${baseRegressionType} regressionType type with value range that goes below 0, defaulting to linear`\n )\n regressionType = \"linear\"\n }\n\n if (baseData.coordinates && !baseData._xyfCoordinates) {\n baseData._xyfCoordinates = baseData.coordinates.map((d) => [d.x, d.y])\n }\n\n const data = Array.isArray(baseData) ? baseData : [baseData]\n\n const xScale = xScaleType.domain([0, 1]).range(finalXExtent)\n\n projectedSummaries = []\n data.forEach((bdata) => {\n const regressionLine = regression[regressionType](\n bdata._xyfCoordinates.map((d) => {\n let x = d[0]\n let y = d[1]\n\n if (typeof x !== \"number\") {\n x = x.getTime()\n }\n if (typeof y !== \"number\") {\n y = y.getTime()\n }\n\n return [x, y]\n }),\n {\n order,\n precision\n }\n )\n const controlStep = 1 / controlPoints\n\n let steps = [0, 1]\n\n if (regressionType !== \"linear\") {\n steps = []\n for (let step = 0; step < 1 + controlStep; step += controlStep) {\n steps.push(step)\n }\n }\n\n const controlPointArray = []\n\n steps.forEach((controlPoint) => {\n controlPointArray.push(regressionLine.predict(xScale(controlPoint)))\n })\n\n projectedSummaries.push({\n centroid: false,\n customMark: undefined,\n data: bdata,\n parentSummary: bdata,\n value: regressionLine.string,\n r2: regressionLine.r2,\n curve,\n _xyfCoordinates: controlPointArray\n })\n })\n\n return projectedSummaries\n}\n\nexport function shapeBounds(coordinates) {\n let left = [Infinity, 0]\n let right = [-Infinity, 0]\n let top = [0, Infinity]\n let bottom = [0, -Infinity]\n coordinates.forEach((d) => {\n left = d[0] < left[0] ? d : left\n right = d[0] > right[0] ? d : right\n bottom = d[1] > bottom[1] ? d : bottom\n top = d[1] < top[1] ? d : top\n })\n\n return {\n center: [(left[0] + right[0]) / 2, (top[1] + bottom[1]) / 2],\n top,\n left,\n right,\n bottom\n }\n}\n","import { contouring } from \"../svg/areaDrawing\"\n\nconst contourMap = (d) => [d.xy.x, d.xy.y]\n\nexport function contourRenderFn({\n data,\n type,\n renderMode,\n eventListenersGenerator,\n styleFn,\n classFn,\n adjustedSize\n}) {\n const keys = Object.keys(data)\n const renderedSummaryMarks = []\n const summaryXYCoords = []\n\n keys.forEach((key, ordsetI) => {\n const ordset = data[key]\n type.thresholds = type.thresholds || 8\n type.bandwidth = type.bandwidth || 12\n type.resolution = type.resolution || 1000\n\n const projectedOrd = [\n { id: ordset, _xyfCoordinates: ordset.xyData.map(contourMap) }\n ]\n\n const oContours = contouring({\n summaryType: type,\n data: projectedOrd,\n finalXExtent: [0, adjustedSize[0]],\n finalYExtent: [0, adjustedSize[1]]\n })\n const contourMarks = []\n oContours.forEach((d, i) => {\n d.coordinates.forEach((coords, ii) => {\n const eventListeners = eventListenersGenerator(d, i)\n contourMarks.push({\n\n ...eventListeners,\n\n key: `${i}-${ii}`,\n style: styleFn(ordset.pieceData[0].data, ordsetI),\n className: classFn(ordset.pieceData[0].data, ordsetI),\n markType: \"path\",\n d: `M${d.coordinates[0].map((p) => p.join(\",\")).join(\"L\")}Z`\n })\n })\n })\n\n renderedSummaryMarks.push({\n containerProps: {\n key: `contour-container-${ordsetI}`,\n role: \"img\",\n tabIndex: -1,\n \"data-o\": key,\n \"aria-label\": `${key} boxplot showing ${summaryXYCoords\n .filter((d) => d.key === key)\n .map((d) => `${d.label} ${d.value}`)}`\n },\n //These are drawn items\n elements: contourMarks\n })\n })\n return { marks: renderedSummaryMarks, xyPoints: summaryXYCoords }\n}\n","import { arc, line, curveLinearClosed } from \"d3-shape\"\nimport { interpolateNumber } from \"d3-interpolate\"\n\nconst emptyObjectReturnFn = () => ({})\n\nconst twoPI = Math.PI * 2\n\nconst dedupeRibbonPoints =\n (weight = 1) =>\n (p, c) => {\n const l = p[p.length - 1]\n if (\n !l ||\n Math.round(l.x / weight) !== Math.round(c.x / weight) ||\n Math.round(l.y / weight) !== Math.round(c.y / weight)\n ) {\n p.push(c)\n }\n return p\n }\n\nexport const arcTweener = (oldProps, newProps) => {\n const innerRadiusInterpolator = interpolateNumber(\n oldProps.innerRadius,\n newProps.innerRadius\n )\n const outerRadiusInterpolator = interpolateNumber(\n oldProps.outerRadius,\n newProps.outerRadius\n )\n const startAngleInterpolator = interpolateNumber(\n oldProps.startAngle,\n newProps.startAngle\n )\n const endAngleInterpolator = interpolateNumber(\n oldProps.endAngle,\n newProps.endAngle\n )\n\n return (t) => {\n const sliceGenerator = arc()\n .innerRadius(innerRadiusInterpolator(t))\n .outerRadius(outerRadiusInterpolator(t))\n return sliceGenerator({\n startAngle: startAngleInterpolator(t),\n endAngle: endAngleInterpolator(t)\n })\n }\n}\n\nexport const drawAreaConnector = ({\n x1,\n x2,\n y1,\n y2,\n sizeX1,\n sizeY1,\n sizeX2,\n sizeY2\n}) => {\n return `M${x1},${y1}L${x2},${y2}L${x2 + sizeX2},${y2 + sizeY2}L${\n x1 + sizeX1\n },${y1 + sizeY1}Z`\n}\n\nexport const groupBarMark = ({\n bins,\n binMax,\n relativeBuckets,\n columnWidth,\n projection,\n adjustedSize,\n summaryI,\n summary,\n summaryStyle,\n type\n}) => {\n const mappedBins = []\n const mappedPoints = []\n const actualMax = (relativeBuckets && relativeBuckets[summary.name]) || binMax\n\n const summaryElementStylingFn = type.elementStyleFn || emptyObjectReturnFn\n const barPadding = type.padding || 0\n\n bins.forEach((d, i) => {\n const opacity = d.value / actualMax\n const additionalStyle = summaryElementStylingFn(d.value, opacity, d.pieces)\n const finalStyle =\n type.type === \"heatmap\"\n ? { opacity: opacity, fill: summaryStyle.fill, ...additionalStyle }\n : { ...summaryStyle, ...additionalStyle }\n\n const thickness = Math.max(1, d.y1 - barPadding * 2)\n\n const finalColumnWidth =\n type.type === \"heatmap\" ? columnWidth : columnWidth * opacity\n let yProp = d.y + barPadding\n let xProp =\n type.type === \"heatmap\" || type.flip\n ? -columnWidth / 2\n : columnWidth / 2 - finalColumnWidth\n let height = thickness\n let width = finalColumnWidth\n let xOffset =\n type.type === \"heatmap\" ? finalColumnWidth / 2 : finalColumnWidth\n let yOffset = d.y1 / 2\n\n if (projection === \"horizontal\") {\n yProp =\n type.type === \"heatmap\"\n ? -columnWidth / 2\n : type.flip\n ? -columnWidth / 2\n : columnWidth / 2 - finalColumnWidth\n xProp = d.y - d.y1 + barPadding\n height = finalColumnWidth\n width = thickness\n yOffset =\n type.type === \"heatmap\" ? finalColumnWidth / 2 : finalColumnWidth\n xOffset = d.y1 / 2\n } else if (projection === \"radial\") {\n const arcGenerator = arc()\n .innerRadius(d.y / 2)\n .outerRadius((d.y + d.y1) / 2)\n\n const angle = summary.pct - summary.pct_padding\n let startAngle = summary.pct_middle - summary.pct_padding\n\n let endAngle =\n type.type === \"heatmap\"\n ? startAngle + angle\n : startAngle + angle * opacity\n startAngle *= twoPI\n endAngle *= twoPI\n\n const arcAdjustX = adjustedSize[0] / 2\n const arcAdjustY = adjustedSize[1] / 2\n\n const arcTranslate = `translate(${arcAdjustX},${arcAdjustY})`\n const arcCenter = arcGenerator.centroid({ startAngle, endAngle })\n mappedPoints.push({\n key: summary.name,\n value: d.value,\n pieces: d.pieces.map((p) => p.piece),\n label: \"Heatmap\",\n x: arcCenter[0] + arcAdjustX,\n y: arcCenter[1] + arcAdjustY\n })\n mappedBins.push({\n markType: \"path\",\n transform: arcTranslate,\n key: `groupIcon-${summaryI}-${i}`,\n d: arcGenerator({ startAngle, endAngle }),\n style: finalStyle\n })\n }\n if (projection !== \"radial\") {\n mappedPoints.push({\n key: summary.name,\n value: d.value,\n pieces: d.pieces.map((p) => p.piece),\n label: \"Heatmap\",\n x: xProp + xOffset,\n y: yProp + yOffset\n })\n\n mappedBins.push({\n markType: \"rect\",\n key: `groupIcon-${summaryI}-${i}`,\n x: xProp,\n y: yProp,\n height: height,\n width: width,\n style: finalStyle\n })\n }\n })\n\n return { marks: mappedBins, points: mappedPoints }\n}\n\n// FROM d3-svg-ribbon\nexport function linearRibbon() {\n const _lineConstructor = line()\n let _xAccessor = function (d) {\n return d.x\n }\n let _yAccessor = function (d) {\n return d.y\n }\n let _rAccessor = function (d) {\n return d.r\n }\n let _interpolator = curveLinearClosed\n\n function _ribbon(pathData) {\n if (pathData.multiple) {\n const original_r = _rAccessor\n const parallelTotal = pathData.multiple.reduce((p, c) => p + c.weight, 0)\n\n _rAccessor = () => parallelTotal\n\n const totalPoints = buildRibbon(pathData.points)\n\n let currentPoints = totalPoints\n .filter((d) => d.direction === \"forward\")\n .reduce(dedupeRibbonPoints(), [])\n\n const allRibbons = []\n\n pathData.multiple.forEach((siblingPath, siblingI) => {\n _rAccessor = () => siblingPath.weight\n const currentRibbon = buildRibbon(currentPoints)\n allRibbons.push(currentRibbon)\n const nextSibling = pathData.multiple[siblingI + 1]\n\n if (nextSibling) {\n const currentLeftSide = currentRibbon\n .reverse()\n .filter((d) => d.direction === \"back\")\n .reduce(dedupeRibbonPoints(), [])\n\n _rAccessor = () => nextSibling.weight\n\n const leftHandInflatedRibbon = buildRibbon(currentLeftSide)\n currentPoints = leftHandInflatedRibbon\n .reverse()\n .filter((d) => d.direction === \"back\")\n .reduce(dedupeRibbonPoints(), [])\n }\n })\n\n _rAccessor = original_r\n return allRibbons.map((d) =>\n _lineConstructor.x(_xAccessor).y(_yAccessor).curve(_interpolator)(d)\n )\n }\n const bothPoints = buildRibbon(pathData).reduce(dedupeRibbonPoints(), [])\n\n return _lineConstructor.x(_xAccessor).y(_yAccessor).curve(_interpolator)(\n bothPoints\n )\n }\n\n _ribbon.x = function (_value) {\n if (!arguments.length) return _xAccessor\n\n _xAccessor = _value\n return _ribbon\n }\n\n _ribbon.y = function (_value) {\n if (!arguments.length) return _yAccessor\n\n _yAccessor = _value\n return _ribbon\n }\n\n _ribbon.r = function (_value) {\n if (!arguments.length) return _rAccessor\n\n _rAccessor = _value\n return _ribbon\n }\n\n _ribbon.interpolate = function (_value) {\n if (!arguments.length) return _interpolator\n\n _interpolator = _value\n return _ribbon\n }\n\n return _ribbon\n\n function offsetEdge(d) {\n const diffX = _yAccessor(d.target) - _yAccessor(d.source)\n const diffY = _xAccessor(d.target) - _xAccessor(d.source)\n\n const angle0 = Math.atan2(diffY, diffX) + Math.PI / 2\n const angle1 = angle0 + Math.PI * 0.5\n const angle2 = angle0 + Math.PI * 0.5\n\n const x1 = _xAccessor(d.source) + _rAccessor(d.source) * Math.cos(angle1)\n const y1 = _yAccessor(d.source) - _rAccessor(d.source) * Math.sin(angle1)\n const x2 = _xAccessor(d.target) + _rAccessor(d.target) * Math.cos(angle2)\n const y2 = _yAccessor(d.target) - _rAccessor(d.target) * Math.sin(angle2)\n\n return { x1: x1, y1: y1, x2: x2, y2: y2 }\n }\n\n function buildRibbon(points) {\n const bothCode = []\n let x = 0\n let transformedPoints = { x1: 0, y1: 0, x2: 0, y2: 0 }\n\n while (x < points.length) {\n if (x !== points.length - 1) {\n transformedPoints = offsetEdge({\n source: points[x],\n target: points[x + 1]\n })\n const p1 = {\n x: transformedPoints.x1,\n y: transformedPoints.y1,\n direction: \"forward\"\n }\n const p2 = {\n x: transformedPoints.x2,\n y: transformedPoints.y2,\n direction: \"forward\"\n }\n bothCode.push(p1, p2)\n if (bothCode.length > 3) {\n const l = bothCode.length - 1\n const lineA = { a: bothCode[l - 3], b: bothCode[l - 2] }\n const lineB = { a: bothCode[l - 1], b: bothCode[l] }\n const intersect = findIntersect(\n lineA.a.x,\n lineA.a.y,\n lineA.b.x,\n lineA.b.y,\n lineB.a.x,\n lineB.a.y,\n lineB.b.x,\n lineB.b.y\n )\n if (intersect.found === true) {\n lineA.b.x = intersect.x\n lineA.b.y = intersect.y\n lineB.a.x = intersect.x\n lineB.a.y = intersect.y\n }\n }\n }\n\n x++\n }\n x--\n //Back\n while (x >= 0) {\n if (x !== 0) {\n transformedPoints = offsetEdge({\n source: points[x],\n target: points[x - 1]\n })\n const p1 = {\n x: transformedPoints.x1,\n y: transformedPoints.y1,\n direction: \"back\"\n }\n const p2 = {\n x: transformedPoints.x2,\n y: transformedPoints.y2,\n direction: \"back\"\n }\n bothCode.push(p1, p2)\n if (bothCode.length > 3) {\n const l = bothCode.length - 1\n const lineA = { a: bothCode[l - 3], b: bothCode[l - 2] }\n const lineB = { a: bothCode[l - 1], b: bothCode[l] }\n const intersect = findIntersect(\n lineA.a.x,\n lineA.a.y,\n lineA.b.x,\n lineA.b.y,\n lineB.a.x,\n lineB.a.y,\n lineB.b.x,\n lineB.b.y\n )\n if (intersect.found === true) {\n lineA.b.x = intersect.x\n lineA.b.y = intersect.y\n lineB.a.x = intersect.x\n lineB.a.y = intersect.y\n }\n }\n }\n\n x--\n }\n\n return bothCode\n }\n\n function findIntersect(l1x1, l1y1, l1x2, l1y2, l2x1, l2y1, l2x2, l2y2) {\n let a, b\n\n const result = {\n x: null,\n y: null,\n found: false\n }\n\n const d = (l2y2 - l2y1) * (l1x2 - l1x1) - (l2x2 - l2x1) * (l1y2 - l1y1)\n if (d === 0) {\n return result\n }\n a = l1y1 - l2y1\n b = l1x1 - l2x1\n const n1 = (l2x2 - l2x1) * a - (l2y2 - l2y1) * b\n const n2 = (l1x2 - l1x1) * a - (l1y2 - l1y1) * b\n a = n1 / d\n b = n2 / d\n\n result.x = l1x1 + a * (l1x2 - l1x1)\n result.y = l1y1 + a * (l1y2 - l1y1)\n\n if (a > 0 && a < 1 && b > 0 && b < 1) {\n result.found = true\n }\n\n return result\n }\n}\n","import * as React from \"react\"\n\n\n\nimport {\n line,\n area,\n curveStep,\n curveStepBefore,\n curveStepAfter,\n curveCardinal,\n curveBasis,\n curveLinear,\n curveCatmullRom,\n curveMonotoneX,\n curveMonotoneY,\n curveNatural\n} from \"d3-shape\"\n\nimport { shapeBounds } from \"../svg/areaDrawing\"\nimport { ProjectedSummary } from \"../types/generalTypes\"\nimport { ScaleLinear } from \"d3-scale\"\n\nexport const curveHash = {\n step: curveStep,\n stepbefore: curveStepBefore,\n stepafter: curveStepAfter,\n cardinal: curveCardinal,\n basis: curveBasis,\n linear: curveLinear,\n catmullrom: curveCatmullRom,\n monotone: curveMonotoneY,\n monotonex: curveMonotoneX,\n monotoney: curveMonotoneY,\n natural: curveNatural\n}\n\nexport function lineGeneratorDecorator({\n generator,\n projectedCoordinateNames,\n defined,\n xScale,\n yScale,\n interpolator,\n simpleLine\n}) {\n const { x, y, yTop, yBottom, xBottom, xTop } = projectedCoordinateNames\n\n generator.x((d) => xScale(d[x])).curve(interpolator)\n\n if (simpleLine) {\n generator.y((d) => yScale(d[y]))\n } else {\n generator.y0((d) => yScale(d[yBottom])).y1((d) => yScale(d[yTop]))\n generator.x0((d) => xScale(d[xBottom])).x1((d) => xScale(d[xTop]))\n }\n\n if (defined) {\n generator.defined((p, q) => defined(p, q))\n } else {\n generator.defined((p) => !p._xyFrameUndefined)\n }\n}\n\nexport function createPoints({\n xScale,\n yScale,\n canvasDrawing,\n data,\n projectedCoordinateNames,\n customMark,\n canvasRender,\n styleFn,\n classFn,\n renderKeyFn,\n renderMode,\n \n showLinePoints: baseShowLinePoints\n}) {\n const { y, x, xMiddle, yMiddle, yTop, yBottom } = projectedCoordinateNames\n\n const showLinePoints: string =\n baseShowLinePoints === true ? undefined : baseShowLinePoints\n\n const whichPoints: {\n top: string\n bottom: string\n } = {\n top: yTop,\n bottom: yBottom\n }\n const whichWay = whichPoints[showLinePoints]\n const mappedPoints = []\n data.forEach((d, i) => {\n const dX = xScale(d[xMiddle] !== undefined ? d[xMiddle] : d[x])\n const dY = yScale(\n d[whichWay] !== undefined\n ? d[whichWay]\n : d[yMiddle] !== undefined\n ? d[yMiddle]\n : d[y]\n )\n\n const pointAriaLabel = `Point at x ${d.x} and y ${d.y}`\n\n // CUSTOM MARK IMPLEMENTATION\n const renderedCustomMark = !customMark\n ? undefined\n : React.isValidElement(customMark)\n ? customMark\n : customMark({ d: d.data, xy: d, i, xScale, yScale })\n const markProps = customMark\n ? { ...renderedCustomMark.props, \"aria-label\": pointAriaLabel }\n : {\n key: `piece-${i}`,\n markType: \"circle\",\n r: 2,\n \"aria-label\": pointAriaLabel\n }\n\n if (\n renderedCustomMark &&\n renderedCustomMark.props &&\n !renderedCustomMark.props.markType &&\n (!canvasRender || canvasRender(d.data, i) !== true)\n ) {\n mappedPoints.push(\n <g\n transform={`translate(${dX},${dY})`}\n key={renderKeyFn ? renderKeyFn(d.data, i) : `custom-point-mark-${i}`}\n style={styleFn ? styleFn(d.data, i) : {}}\n className={classFn ? classFn(d.data, i) : \"\"}\n >\n {renderedCustomMark}\n </g>\n )\n } else {\n if (canvasRender && canvasRender(d.data, i) === true) {\n const canvasPoint = {\n type: \"point\",\n baseClass: \"frame-piece\",\n tx: dX,\n ty: dY,\n d,\n i,\n markProps,\n styleFn,\n renderFn: renderMode,\n classFn\n }\n canvasDrawing.push(canvasPoint)\n } else {\n const yCoordinates = Array.isArray(d[y])\n ? d[y].map((p) => yScale(p))\n : [dY]\n yCoordinates.forEach((yc, yi) => {\n const xCoordinates = Array.isArray(d[x])\n ? d[x].map((p) => xScale(p))\n : [dX]\n xCoordinates.forEach((xc, xi) => {\n mappedPoints.push(\n clonedAppliedElement({\n baseClass: \"frame-piece\",\n tx: xc,\n ty: yc,\n d: (d.data && { ...d, ...d.data }) || d,\n i: yi === 0 && xi === 0 ? i : `${i}-${yi}-${xi}`,\n markProps,\n styleFn,\n renderKeyFn,\n classFn,\n yi\n })\n )\n })\n })\n }\n }\n })\n return mappedPoints\n}\n\nexport function createLines({\n xScale,\n yScale,\n canvasDrawing,\n data,\n projectedCoordinateNames,\n customMark,\n canvasRender,\n styleFn,\n classFn,\n renderMode,\n renderKeyFn,\n type,\n defined,\n \n ariaLabel,\n axesData = []\n}) {\n const xAxis = axesData.find(\n (d) => d.orient === \"bottom\" || d.orient === \"top\"\n )\n const yAxis = axesData.find(\n (d) => d.orient === \"left\" || d.orient === \"right\"\n )\n\n const xAxisFormatter = (xAxis && xAxis.tickFormat) || ((d) => d)\n const yAxisFormatter = (yAxis && yAxis.tickFormat) || ((d) => d)\n\n const customLine = typeof type === \"object\" ? type : { type }\n\n const interpolator =\n typeof customLine.interpolator === \"string\"\n ? curveHash[customLine.interpolator]\n : customLine.interpolator || curveLinear\n\n const lineGenerator = customLine.simpleLine ? line() : area()\n\n lineGeneratorDecorator({\n projectedCoordinateNames,\n defined,\n interpolator,\n generator: lineGenerator,\n xScale,\n yScale,\n simpleLine: customLine.simpleLine\n })\n\n const dynamicLineGenerator =\n (interpolator.dynamicInterpolator &&\n ((d, i) => {\n const dynLineGenerator = area()\n\n lineGeneratorDecorator({\n projectedCoordinateNames,\n defined,\n interpolator: interpolator.dynamicInterpolator(d, i),\n generator: dynLineGenerator,\n xScale,\n yScale,\n simpleLine: customLine.simpleLine\n })\n return dynLineGenerator\n })) ||\n (() => lineGenerator)\n\n const mappedLines = []\n data.forEach((d, i) => {\n const mappedDataForLines = d.data.map((p) => ({ ...p.data, ...p }))\n if (customMark && typeof customMark === \"function\") {\n //shim to make customLineMark work until Semiotic 2\n const compatibleData = {\n ...d,\n data: mappedDataForLines\n }\n mappedLines.push(\n customMark({ d: compatibleData, i, xScale, yScale, canvasDrawing })\n )\n } else {\n const builtInDisplayProps: { fill?: string; stroke?: string } = {}\n if (customLine.simpleLine) {\n builtInDisplayProps.fill = \"none\"\n builtInDisplayProps.stroke = \"black\"\n }\n\n const pathString = dynamicLineGenerator(d, i)(mappedDataForLines)\n\n const markProps = {\n ...builtInDisplayProps,\n markType: \"path\",\n d: pathString,\n \"aria-label\":\n d.data &&\n d.data.length > 0 &&\n ariaLabel &&\n `${d.data.length} point ${\n ariaLabel.items\n } starting value ${yAxisFormatter(d.data[0].y)} at ${xAxisFormatter(\n d.data[0].x\n )} ending value ${yAxisFormatter(\n d.data[d.data.length - 1].y\n )} at ${xAxisFormatter(d.data[d.data.length - 1].x)}`\n }\n\n if (canvasRender && canvasRender(d, i) === true) {\n const canvasLine = {\n type: \"line\",\n baseClass: \"xyframe-line\",\n tx: 0,\n ty: 0,\n d,\n i,\n markProps,\n styleFn,\n renderFn: renderMode,\n classFn\n }\n canvasDrawing.push(canvasLine)\n } else {\n let moddedStyleFn = styleFn\n\n if (customLine.type === \"area\" && customLine.enclosed !== true) {\n moddedStyleFn = (d, i) => ({ ...styleFn(d, i), stroke: \"none\" })\n }\n\n mappedLines.push(\n clonedAppliedElement({\n baseClass: \"xyframe-line\",\n d,\n i,\n markProps,\n styleFn: moddedStyleFn,\n renderKeyFn,\n classFn\n })\n )\n if (customLine.type === \"area\" && customLine.enclosed !== true) {\n const topperStyleFn = (d, i) => ({ ...styleFn(d, i), fill: \"none\" })\n\n const topperLineGenerator = line()\n\n lineGeneratorDecorator({\n projectedCoordinateNames,\n defined,\n interpolator: interpolator,\n generator: topperLineGenerator,\n xScale,\n yScale,\n simpleLine: true\n })\n\n const topperMarkProps = {\n ...markProps,\n d: topperLineGenerator(mappedDataForLines)\n }\n\n const topperKeyFn = renderKeyFn\n ? (d, i, yi) => `${renderKeyFn(d, i, yi)}-top`\n : undefined\n\n mappedLines.push(\n clonedAppliedElement({\n baseClass: \"xyframe-line-top\",\n d,\n i,\n markProps: topperMarkProps,\n styleFn: topperStyleFn,\n renderKeyFn: topperKeyFn,\n classFn\n })\n )\n }\n }\n }\n })\n\n if (customLine.type === \"difference\" && data.length === 2) {\n //Create the overlay line for the difference chart\n\n const diffdataA = data[0].data.map((basedata, baseI) => {\n const linePoint =\n basedata.yTop > data[1].data[baseI].yTop\n ? basedata.yTop\n : basedata.yBottom\n return {\n x: basedata.x,\n y: linePoint,\n yBottom: linePoint,\n yTop: linePoint\n }\n })\n\n const diffdataB = data[0].data.map((basedata, baseI) => {\n const linePoint =\n data[1].data[baseI].yTop > basedata.yTop\n ? data[1].data[baseI].yTop\n : data[1].data[baseI].yBottom\n return {\n x: basedata.x,\n y: linePoint,\n yBottom: linePoint,\n yTop: linePoint\n }\n })\n\n const doClassname = classFn\n ? `xyframe-line ${classFn(diffdataA)}`\n : \"xyframe-line\"\n\n const overLine = line()\n\n lineGeneratorDecorator({\n projectedCoordinateNames,\n defined,\n interpolator,\n generator: overLine,\n xScale,\n yScale,\n simpleLine: true\n })\n\n // let baseStyle = props.lineStyle ? props.lineStyle(diffdata, 0) : {}\n const diffOverlayA = (\n <path key={\"xyline-diff-a\"}\n className={`${doClassname} difference-overlay-a`}\n \n d={overLine(diffdataA)}\n style={{ fill: \"none\", pointerEvents: \"none\" }}\n />\n )\n mappedLines.push(diffOverlayA)\n\n const diffOverlayB = (\n <path key={\"xyline-diff-b\"}\n className={`${doClassname} difference-overlay-b`}\n \n d={overLine(diffdataB)}\n style={{ fill: \"none\", pointerEvents: \"none\" }}\n />\n )\n mappedLines.push(diffOverlayB)\n }\n\n return mappedLines\n}\n\nexport function createSummaries({\n xScale,\n yScale,\n canvasDrawing,\n data,\n canvasRender,\n styleFn,\n classFn,\n renderKeyFn,\n renderMode,\n \n customMark\n}: {\n xScale: ScaleLinear<number, number>\n yScale: ScaleLinear<number, number>\n canvasDrawing?: object[]\n data: ProjectedSummary[]\n canvasRender?: Function\n styleFn?: Function\n classFn?: Function\n renderKeyFn?: Function\n renderMode?: Function\n customMark?: Function\n}) {\n const summaryClass = classFn || (() => \"\")\n const summaryStyle = styleFn || (() => ({}))\n\n const renderFn = renderMode\n\n if (!Array.isArray(data)) {\n data = [data]\n }\n\n const renderedSummaries = []\n\n data.forEach((d, i) => {\n let className = \"xyframe-summary\"\n if (summaryClass) {\n className = `xyframe-summary ${summaryClass(d)}`\n }\n let drawD: string | React.ReactNode = \"\"\n let shouldBeValid = false\n if (\n typeof d.customMark === \"string\" ||\n React.isValidElement(d.customMark)\n ) {\n drawD = d.customMark\n shouldBeValid = true\n } else if (d.type === \"MultiPolygon\") {\n const polycoords = d.coordinates as unknown as [number, number][][][]\n\n polycoords.forEach((coord: [number, number][][]) => {\n coord.forEach((c) => {\n drawD += `M${c\n .map((p) => `${xScale(p[0])},${yScale(p[1])}`)\n .join(\"L\")}Z `\n })\n })\n } else if (customMark) {\n const xyfCoords = d._xyfCoordinates as [number, number][]\n const projectedCoordinates = xyfCoords.map((p) => [\n xScale(p[0]),\n yScale(p[1])\n ])\n // CUSTOM MARK IMPLEMENTATION\n drawD = customMark({\n d,\n i,\n classFn: summaryClass,\n styleFn: summaryStyle,\n renderFn,\n projectedCoordinates,\n xScale,\n yScale,\n bounds: shapeBounds(projectedCoordinates)\n })\n shouldBeValid = true\n } else {\n const xyfCoords = d._xyfCoordinates as number[][]\n if (d.curve) {\n const lineDrawing = line()\n .x((d) => xScale(d[0]))\n .y((d) => yScale(d[1]))\n .curve(d.curve)\n drawD = lineDrawing(xyfCoords)\n } else {\n drawD = `M${xyfCoords\n .map((p) => `${xScale(p[0])},${yScale(p[1])}`)\n .join(\"L\")}Z`\n }\n }\n\n const renderKey = renderKeyFn ? renderKeyFn(d, i) : `summary-${i}`\n\n if (shouldBeValid && React.isValidElement(drawD)) {\n renderedSummaries.push(drawD)\n } else if (canvasRender && canvasRender(d, i) === true) {\n const canvasSummary = {\n type: \"summary\",\n baseClass: \"xyframe-summary\",\n tx: 0,\n ty: 0,\n d,\n i,\n markProps: { markType: \"path\", d: drawD },\n styleFn: summaryStyle,\n renderFn,\n classFn: () => className\n }\n canvasDrawing.push(canvasSummary)\n } else {\n renderedSummaries.push(\n <path data-testid=\"xyframe-summary\"\n key={renderKey}\n className={className}\n\n d={drawD as string}\n style={summaryStyle(d, i)}\n />\n )\n }\n })\n return renderedSummaries\n}\n\nexport function clonedAppliedElement({\n tx,\n ty,\n d,\n i,\n markProps,\n styleFn,\n classFn,\n renderKeyFn,\n baseClass,\n yi\n}: {\n tx?: number\n ty?: number\n d: Record<string, any>\n i: number\n markProps: Record<string, any>\n styleFn: Function\n classFn: Function\n renderKeyFn: Function\n baseClass: string\n yi?: number\n}) {\n markProps.style = styleFn ? styleFn(d, i, yi) : {}\n\n markProps.className = baseClass\n\n markProps.key = renderKeyFn\n ? renderKeyFn(d, i, yi)\n : `${baseClass}-${d.key === undefined ? i : d.key}`\n\n if (tx || ty) {\n markProps.transform = `translate(${tx || 0},${ty || 0})`\n }\n\n if (classFn) {\n markProps.className = `${baseClass} ${classFn(d, i, yi)}`\n }\n\n if (markProps.style.r) {\n markProps.r = markProps.style.r\n }\n markProps[\"data-testid\"] = baseClass\n\n if (!markProps.markType) {\n const RenderableMark = markProps as React.ComponentClass\n return React.createElement(RenderableMark)\n }\n\n const { markType, ...restProps } = markProps\n return React.createElement(markType, restProps)\n}\n","import * as React from \"react\"\n\nimport { histogram, max } from \"d3-array\"\nimport { groupBarMark } from \"../svg/SvgHelper\"\nimport { area, line, curveCatmullRom, curveLinear, arc } from \"d3-shape\"\nimport { pointOnArcAtAngle } from \"./pieceDrawing\"\nimport { scaleLinear } from \"d3-scale\"\nimport { curveHash } from \"../visualizationLayerBehavior/general\"\nimport { quantile } from \"d3-array\"\nimport { sum } from \"d3-array\"\n\ninterface BuckeyArrayType {\n [position: number]: Record<string, any>\n x0?: number\n x1?: number\n push(item: Record<string, any>): number\n}\n\nconst verticalXYSorting = (a, b) => a.xy.y - b.xy.y\nconst horizontalXYSorting = (a, b) => b.xy.x - a.xy.x\nconst emptyObjectReturnFn = () => ({})\n\nfunction createSummaryAxis({\n summary,\n summaryI,\n axisSettings,\n axisCreator,\n projection,\n actualMax,\n adjustedSize,\n columnWidth\n}) {\n let axisTranslate = `translate(${summary.x},0)`\n let axisDomain = [0, actualMax]\n if (projection === \"horizontal\") {\n axisTranslate = `translate(${0},${summary.x})`\n axisDomain = [actualMax, 0]\n } else if (projection === \"radial\") {\n axisTranslate = \"translate(0, 0)\"\n }\n\n const axisWidth = projection === \"horizontal\" ? adjustedSize[0] : columnWidth\n const axisHeight = projection === \"vertical\" ? adjustedSize[1] : columnWidth\n axisSettings.size = [axisWidth, axisHeight]\n const axisScale = scaleLinear().domain(axisDomain).range([0, columnWidth])\n\n const renderedSummaryAxis = axisCreator(axisSettings, summaryI, axisScale)\n\n return (\n <g\n className=\"summary-axis\"\n key={`summaryPiece-axis-${summaryI}`}\n transform={axisTranslate}\n >\n {renderedSummaryAxis}\n </g>\n )\n}\n\nexport function bucketizedRenderingFn({\n data,\n type,\n renderMode,\n eventListenersGenerator,\n styleFn,\n classFn,\n projection,\n adjustedSize,\n chartSize,\n axisCreator: axisCreatorParam\n}) {\n const renderedSummaryMarks = []\n const summaryXYCoords = []\n\n const buckets = type.bins || 25\n const relativeBuckets = type.relative ? {} : false\n const summaryValueAccessor = type.binValue || ((d) => d.length)\n\n const summaryElementStylingFn = type.elementStyleFn || emptyObjectReturnFn\n\n let axisCreator\n if (type.axis) {\n type.axis.orient =\n projection === \"horizontal\" &&\n [\"left\", \"right\"].indexOf(type.axis.orient) === -1\n ? \"left\"\n : type.axis.orient\n type.axis.orient =\n projection === \"vertical\" &&\n [\"bottom\", \"top\"].indexOf(type.axis.orient) === -1\n ? \"bottom\"\n : type.axis.orient\n axisCreator = axisCreatorParam\n if (projection === \"radial\") {\n console.error(\"Summary axes cannot be drawn for radial histograms\")\n axisCreator = () => null\n }\n }\n\n let bucketSize = chartSize / buckets\n\n const keys = Object.keys(data)\n let binMax = 0\n\n const baseHistogram = histogram()\n\n const binDomain = [0, chartSize]\n\n const binBuckets = []\n\n for (let x = 0; x < buckets; x++) {\n binBuckets.push(binDomain[0] + (x / buckets) * chartSize)\n }\n\n const xyValue =\n projection === \"vertical\"\n ? (p) => p.piece.scaledVerticalValue\n : (p) => p.piece.scaledValue\n\n const instantiatedHistogram = baseHistogram\n .domain(binDomain)\n .thresholds(binBuckets)\n .value(xyValue)\n\n const calculatedBins = keys.map((key, summaryI) => {\n const summary = data[key]\n\n const thisSummaryData = summary.xyData\n\n const xySorting =\n projection === \"vertical\" ? verticalXYSorting : horizontalXYSorting\n\n const summaryPositionNest = thisSummaryData.sort(xySorting)\n\n let keyBins\n if (type.useBins === false) {\n const calculatedValues = summaryPositionNest.map((value) =>\n xyValue(value)\n )\n keyBins = summaryPositionNest\n .map((value, i) => {\n const bucketArray: BuckeyArrayType = []\n bucketArray.x0 = calculatedValues[i] - 1\n bucketArray.x1 = calculatedValues[i] + 1\n bucketArray.push(value)\n return bucketArray\n })\n .sort((a, b) => a.x0 - b.x0)\n bucketSize = chartSize / keyBins.length\n } else {\n keyBins = instantiatedHistogram(summaryPositionNest)\n }\n\n keyBins = keyBins.map((d) => ({\n y: d.x0,\n y1: d.x1 - d.x0,\n pieces: d,\n value: summaryValueAccessor(d.map((p) => p.piece.data))\n }))\n\n if (type.type === \"histogram\" || type.type === \"heatmap\") {\n keyBins = keyBins.filter((d) => d.value !== 0)\n }\n\n const relativeMax =\n keyBins.length === 0 ? 0 : max(keyBins.map((d) => d.value))\n if (relativeBuckets) {\n relativeBuckets[key] = relativeMax\n }\n\n binMax = Math.max(binMax, relativeMax)\n\n return { bins: keyBins, summary, summaryI, thisSummaryData }\n })\n\n const numHorizons = type.horizon\n ? binMax / type.horizon\n : type.numHorizons || 4\n const horizon = type.horizon || binMax / numHorizons\n\n calculatedBins.forEach(({ bins, summary, summaryI, thisSummaryData }) => {\n const eventListeners = eventListenersGenerator(summary, summaryI)\n const columnWidth = summary.width\n let calculatedSummaryStyle = thisSummaryData[0]\n ? styleFn(thisSummaryData[0].piece.data, summaryI)\n : {}\n let calculatedSummaryClass = thisSummaryData[0]\n ? classFn(thisSummaryData[0].piece.data, summaryI)\n : \"\"\n\n let translate = [summary.middle, 0]\n if (projection === \"horizontal\") {\n translate = [bucketSize, summary.middle]\n } else if (projection === \"radial\") {\n translate = [adjustedSize[0] / 2, adjustedSize[1] / 2]\n }\n\n const actualMax =\n (relativeBuckets && relativeBuckets[summary.name]) || binMax\n\n if (type.type === \"heatmap\" || type.type === \"histogram\") {\n const mappedBars = groupBarMark({\n bins,\n binMax,\n relativeBuckets,\n columnWidth,\n projection,\n adjustedSize,\n summaryI,\n summary,\n summaryStyle: calculatedSummaryStyle,\n type\n })\n const tiles = mappedBars.marks\n if (projection === \"radial\") {\n translate = [0, 0]\n }\n\n if (type.axis && type.type === \"histogram\") {\n renderedSummaryMarks.push({\n type: \"svg-only-mark\",\n Mark: createSummaryAxis({\n summary,\n summaryI,\n axisSettings: type.axis,\n axisCreator,\n projection,\n actualMax,\n adjustedSize,\n columnWidth\n })\n })\n }\n mappedBars.points.forEach((d) => {\n d.x += translate[0]\n d.y += translate[1]\n })\n\n summaryXYCoords.push(...mappedBars.points)\n renderedSummaryMarks.push({\n containerProps: {\n ...eventListeners,\n transform: `translate(${translate})`,\n className: calculatedSummaryClass,\n key: `summaryPiece-${summaryI}`,\n role: \"img\",\n tabIndex: -1,\n \"data-o\": summary.name,\n \"aria-label\": `${summary.name} ${type.type}`\n },\n //These are drawn items\n elements: tiles\n })\n } else if (type.type === \"violin\") {\n const { iqr } = type\n const subsets = type.subsets || [false]\n const violinElements: Record<string, any>[] = []\n\n bins[0].y = bins[0].y - bucketSize / 2\n bins[bins.length - 1].y = bins[bins.length - 1].y + bucketSize / 2\n\n subsets.forEach((subsettingFn, subsettingIndex) => {\n let actualBins = bins\n if (subsettingFn) {\n calculatedSummaryStyle = thisSummaryData[0]\n ? styleFn(thisSummaryData[0].piece.data, summaryI, subsettingIndex)\n : {}\n calculatedSummaryClass = thisSummaryData[0]\n ? classFn(thisSummaryData[0].piece.data, summaryI, subsettingIndex)\n : \"\"\n actualBins = bins.map((d) => {\n const actualPieces = d.pieces\n .filter((p, pi) => subsettingFn(p.piece, pi))\n .map((d) => d)\n const actualValue = summaryValueAccessor(actualPieces)\n return {\n ...d,\n pieces: actualPieces,\n value: actualValue\n }\n })\n }\n\n let violinArea = area().curve(type.curve || curveCatmullRom)\n\n let violinPoints = []\n\n if (projection === \"horizontal\") {\n actualBins.forEach((summaryPoint) => {\n const xValue = summaryPoint.y - bucketSize / 2\n const yValue = ((summaryPoint.value / actualMax) * columnWidth) / 2\n\n violinPoints.push({\n x: xValue,\n y0: -yValue,\n y1: yValue\n })\n summaryXYCoords.push({\n key: summary.name,\n x: xValue + translate[0],\n y: yValue + translate[1],\n pieces: summaryPoint.pieces.map((d) => d.piece),\n value: summaryPoint.value\n })\n })\n violinArea\n .x((d) => d.x)\n .y0((d) => d.y0)\n .y1((d) => d.y1)\n .defined(\n (d, i) =>\n d.y0 !== 0 ||\n (violinPoints[i - 1] && violinPoints[i - 1].y0 !== 0) ||\n (violinPoints[i + 1] && violinPoints[i + 1].y0 !== 0)\n )\n } else if (projection === \"vertical\") {\n actualBins.forEach((summaryPoint) => {\n const yValue = summaryPoint.y + bucketSize / 2\n const xValue = ((summaryPoint.value / actualMax) * columnWidth) / 2\n\n violinPoints.push({\n y: yValue,\n x0: -xValue,\n x1: xValue\n })\n\n summaryXYCoords.push({\n key: summary.name,\n x: xValue + translate[0],\n y: yValue + translate[1],\n pieces: summaryPoint.pieces.map((d) => d.piece),\n value: summaryPoint.value\n })\n })\n violinArea\n .y((d) => d.y)\n .x0((d) => d.x0)\n .x1((d) => d.x1)\n .defined(\n (d, i) =>\n d.x0 !== 0 ||\n (violinPoints[i - 1] && violinPoints[i - 1].x0 !== 0) ||\n (violinPoints[i + 1] && violinPoints[i + 1].x0 !== 0)\n )\n } else if (projection === \"radial\") {\n const angle = summary.pct - summary.pct_padding / 2\n const midAngle = summary.pct_middle\n violinPoints = actualBins\n violinArea = (inbins) => {\n const forward = []\n const backward = []\n inbins.forEach((bin) => {\n const outsidePoint = pointOnArcAtAngle(\n [0, 0],\n midAngle + (angle * bin.value) / actualMax / 2,\n (bin.y + bin.y1 - bucketSize / 2) / 2\n )\n const insidePoint = pointOnArcAtAngle(\n [0, 0],\n midAngle - (angle * bin.value) / actualMax / 2,\n (bin.y + bin.y1 - bucketSize / 2) / 2\n )\n\n //Ugh a terrible side effect has appeared\n summaryXYCoords.push({\n key: summary.name,\n x: insidePoint[0] + translate[0],\n y: insidePoint[1] + translate[1],\n pieces: bin.pieces.map((d) => d.piece),\n value: bin.value\n })\n summaryXYCoords.push({\n key: summary.name,\n x: outsidePoint[0] + translate[0],\n y: outsidePoint[1] + translate[1],\n pieces: bin.pieces.map((d) => d.piece),\n value: bin.value\n })\n\n forward.push(outsidePoint)\n backward.push(insidePoint)\n })\n return `M${forward.map((d) => d.join(\",\")).join(\"L\")}L${backward\n .reverse()\n .map((d) => d.join(\",\"))\n .join(\"L\")}Z`\n }\n }\n\n violinElements.push({\n\n ...eventListeners,\n transform: `translate(${translate})`,\n key: `summaryPiece-${summaryI}-${subsettingIndex}`,\n\n markType: \"path\",\n className: calculatedSummaryClass,\n style: calculatedSummaryStyle,\n d: violinArea(violinPoints),\n role: \"img\",\n tabIndex: -1,\n \"data-o\": summary.name,\n \"aria-label\": `${summary.name} distribution`\n })\n if (iqr) {\n let iqrPieces = []\n actualBins.forEach((aBin) => {\n iqrPieces.push(...aBin.pieces)\n })\n\n iqrPieces = iqrPieces\n .map((d) =>\n projection === \"vertical\"\n ? d.piece.scaledVerticalValue\n : d.piece.scaledValue\n )\n .sort((a, b) => a - b)\n\n const iqrValues = [\n quantile(iqrPieces, 0.25),\n quantile(iqrPieces, 0.5),\n quantile(iqrPieces, 0.75)\n ]\n\n const iqrLine =\n projection === \"vertical\"\n ? (first, last, translate) =>\n `M${translate[0]},${first}L${translate[0]},${last}`\n : (first, last, translate) =>\n `M${first},${translate[1]}L${last},${translate[1]}`\n\n violinElements.push({\n\n ...eventListeners,\n key: `summaryPiece-${summaryI}-${subsettingIndex}-iqr-line`,\n\n markType: \"path\",\n className: calculatedSummaryClass,\n style: {\n stroke: \"black\",\n strokeWidth: \"2px\",\n ...calculatedSummaryStyle,\n ...summaryElementStylingFn(\"iqr\")\n },\n d: iqrLine(iqrValues[0], iqrValues[2], translate),\n role: \"img\",\n tabIndex: -1,\n \"data-o\": summary.name,\n \"aria-label\": `${summary.name} distribution`\n })\n\n violinElements.push({\n\n ...eventListeners,\n key: `summaryPiece-${summaryI}-${subsettingIndex}-iqr-median`,\n markType: \"circle\",\n className: calculatedSummaryClass,\n style: {\n stroke: \"black\",\n fill: \"black\",\n strokeWidth: \"1px\",\n r: \"3px\",\n ...calculatedSummaryStyle,\n ...summaryElementStylingFn(\"median\")\n },\n cx: projection === \"vertical\" ? translate[0] : iqrValues[1],\n cy: projection === \"vertical\" ? iqrValues[1] : translate[1],\n role: \"img\",\n tabIndex: -1,\n \"data-o\": summary.name,\n \"aria-label\": `${summary.name} distribution`\n })\n }\n })\n\n renderedSummaryMarks.push({\n elements: violinElements\n })\n } else if (type.type === \"ridgeline\") {\n const zeroedStart = Object.assign({}, bins[0], { value: 0 })\n const zeroedEnd = Object.assign({}, bins[bins.length - 1], { value: 0 })\n //Ridgeline plots need to visually signify the zero baseline with their start and end position\n\n zeroedStart.y = zeroedStart.y - bucketSize / 2\n zeroedEnd.y = zeroedEnd.y + bucketSize / 2\n\n const joyBins = [zeroedStart, ...bins, zeroedEnd]\n let joyPoints = []\n\n const interpolatorSetting = type.curve || type.interpolator\n\n const actualInterpolator =\n typeof interpolatorSetting === \"string\"\n ? curveHash[interpolatorSetting]\n : interpolatorSetting\n\n let joyArea = line()\n .curve(actualInterpolator || curveCatmullRom)\n .x((d) => d.x)\n .y((d) => d.y)\n\n const joyHeight = type.amplitude || 0\n\n if (type.axis && type.type === \"histogram\") {\n renderedSummaryMarks.push({\n type: \"svg-only-mark\",\n Mark: createSummaryAxis({\n summary,\n summaryI,\n axisSettings: { baseline: false, ...type.axis },\n axisCreator,\n projection,\n actualMax,\n adjustedSize,\n columnWidth\n })\n })\n }\n\n if (projection === \"horizontal\") {\n joyBins.forEach((summaryPoint, i) => {\n const xValue = summaryPoint.y - bucketSize / 2\n\n const yValue = type.flip\n ? (summaryPoint.value / actualMax) * (columnWidth + joyHeight) -\n columnWidth / 2\n : (-summaryPoint.value / actualMax) * (columnWidth + joyHeight) +\n columnWidth / 2\n\n joyPoints.push({\n y: yValue,\n x: xValue\n })\n\n //Don't make an interaction point for the first or last\n if (i !== 0 && i !== joyBins.length - 1) {\n summaryXYCoords.push({\n key: summary.name,\n x: xValue + translate[0],\n y: yValue + translate[1],\n pieces: summaryPoint.pieces.map((d) => d.piece),\n value: summaryPoint.value\n })\n }\n })\n } else if (projection === \"vertical\") {\n joyBins.forEach((summaryPoint) => {\n const yValue = summaryPoint.y + bucketSize / 2\n const xValue =\n type.flip === true\n ? (summaryPoint.value / actualMax) * (columnWidth + joyHeight) -\n columnWidth / 2\n : (-summaryPoint.value / actualMax) * (columnWidth + joyHeight) +\n columnWidth / 2\n\n joyPoints.push({\n y: yValue,\n x: xValue\n })\n\n summaryXYCoords.push({\n key: summary.name,\n x: xValue + translate[0],\n y: yValue + translate[1],\n pieces: summaryPoint.pieces.map((d) => d.piece),\n value: summaryPoint.value\n })\n })\n } else if (projection === \"radial\") {\n const angle = summary.pct - summary.pct_padding / 2\n const midAngle = summary.pct_start + summary.pct_padding / 2\n\n translate = [0, 0]\n joyPoints = joyBins\n joyArea = (inbins) => {\n const forward = []\n inbins.forEach((bin) => {\n const outsidePoint = pointOnArcAtAngle(\n [adjustedSize[0] / 2, adjustedSize[1] / 2],\n midAngle + (angle * bin.value) / actualMax,\n (bin.y + bin.y1 - bucketSize / 2) / 2\n )\n //Ugh a terrible side effect has appeared\n summaryXYCoords.push({\n key: summary.name,\n x: outsidePoint[0] + translate[0],\n y: outsidePoint[1] + translate[1],\n pieces: bin.pieces.map((d) => d.piece),\n value: bin.value\n })\n\n forward.push(outsidePoint)\n })\n return `M${forward.map((d) => d.join(\",\")).join(\"L\")}Z`\n }\n }\n\n if (type.axis) {\n renderedSummaryMarks.push({\n type: \"svg-only-mark\",\n Mark: createSummaryAxis({\n summary,\n summaryI,\n axisSettings: type.axis,\n axisCreator,\n projection,\n actualMax,\n adjustedSize,\n columnWidth\n })\n })\n }\n\n renderedSummaryMarks.push({\n elements: [\n {\n\n ...eventListeners,\n transform: `translate(${translate})`,\n key: `summaryPiece-${summaryI}`,\n\n markType: \"path\",\n className: calculatedSummaryClass,\n style: calculatedSummaryStyle,\n d: joyArea(joyPoints),\n role: \"img\",\n tabIndex: -1,\n \"data-o\": summary.name,\n \"aria-label\": `${summary.name} distribution`\n }\n ]\n })\n } else if (type.type === \"horizon\") {\n const zeroedStart = Object.assign({}, bins[0], { value: 0 })\n const zeroedEnd = Object.assign({}, bins[bins.length - 1], { value: 0 })\n\n zeroedStart.y = zeroedStart.y - bucketSize / 2\n zeroedEnd.y = zeroedEnd.y + bucketSize / 2\n\n const horizonBins = [zeroedStart, ...bins, zeroedEnd]\n\n let multiBins = []\n let remainingPieces = true\n let currentHorizon = 0\n\n while (remainingPieces === true) {\n const currentStrip = horizonBins.map((d) => ({\n ...d,\n value: Math.max(0, Math.min(d.value - currentHorizon, horizon))\n }))\n multiBins.push(\n currentStrip.map((d) => ({ ...d, value: d.value * numHorizons }))\n )\n currentHorizon += horizon\n if (max(currentStrip.map((d) => d.value)) < horizon) {\n remainingPieces = false\n }\n }\n\n multiBins = multiBins.filter((d) => sum(d, (p) => p.value) > 0)\n\n horizonBins.forEach((summaryPoint, i) => {\n if (i !== 0 && i !== horizonBins.length - 1) {\n if (projection === \"horizontal\") {\n const xValue = summaryPoint.y - bucketSize / 2\n const yValue =\n (-summaryPoint.value / actualMax) * columnWidth + columnWidth / 2\n\n summaryXYCoords.push({\n key: summary.name,\n x: xValue + translate[0],\n y: yValue + translate[1],\n pieces: summaryPoint.pieces.map((d) => d.piece),\n value: summaryPoint.value\n })\n } else if (projection === \"vertical\") {\n const yValue = summaryPoint.y + bucketSize / 2\n const xValue =\n type.flip === true\n ? (summaryPoint.value / actualMax) * columnWidth -\n columnWidth / 2\n : (-summaryPoint.value / actualMax) * columnWidth +\n columnWidth / 2\n\n summaryXYCoords.push({\n key: summary.name,\n x: xValue + translate[0],\n y: yValue + translate[1],\n pieces: summaryPoint.pieces.map((d) => d.piece),\n value: summaryPoint.value\n })\n }\n }\n })\n\n const multiBinMarks = multiBins.map((multiBin, multiBinI) => {\n let horizonPoints = []\n\n const interpolatorSetting = type.curve || type.interpolator\n\n const actualInterpolator =\n typeof interpolatorSetting === \"string\"\n ? curveHash[interpolatorSetting]\n : interpolatorSetting\n\n let horizonArea = line()\n .curve(actualInterpolator || curveLinear)\n .x((d) => d.x)\n .y((d) => d.y)\n\n if (projection === \"horizontal\") {\n multiBin.forEach((summaryPoint) => {\n const xValue = summaryPoint.y - bucketSize / 2\n const yValue =\n (-summaryPoint.value / actualMax) * columnWidth + columnWidth / 2\n\n horizonPoints.push({\n y: yValue,\n x: xValue\n })\n\n //Don't make an interaction point for the first or last\n })\n } else if (projection === \"vertical\") {\n multiBin.forEach((summaryPoint) => {\n const yValue = summaryPoint.y + bucketSize / 2\n const xValue =\n type.flip === true\n ? (summaryPoint.value / actualMax) * columnWidth -\n columnWidth / 2\n : (-summaryPoint.value / actualMax) * columnWidth +\n columnWidth / 2\n\n horizonPoints.push({\n y: yValue,\n x: xValue\n })\n })\n } else if (projection === \"radial\") {\n const angle = summary.pct - summary.pct_padding / 2\n const midAngle = summary.pct_start + summary.pct_padding / 2\n\n translate = [0, 0]\n horizonPoints = multiBin\n horizonArea = (inbins) => {\n const forward = []\n inbins.forEach((bin) => {\n const outsidePoint = pointOnArcAtAngle(\n [adjustedSize[0] / 2, adjustedSize[1] / 2],\n midAngle + (angle * bin.value) / actualMax,\n (bin.y + bin.y1 - bucketSize / 2) / 2\n )\n\n forward.push(outsidePoint)\n })\n return `M${forward.map((d) => d.join(\",\")).join(\"L\")}Z`\n }\n }\n\n return {\n\n ...eventListeners,\n transform: `translate(${translate})`,\n key: `summaryPiece-${summaryI}-${multiBinI}`,\n\n markType: \"path\",\n className: calculatedSummaryClass,\n style: {\n ...calculatedSummaryStyle,\n ...summaryElementStylingFn(multiBin, multiBinI)\n },\n d: horizonArea(horizonPoints),\n role: \"img\",\n tabIndex: -1,\n \"data-o\": summary.name,\n \"aria-label\": `${summary.name} distribution`\n }\n })\n\n if (type.axis) {\n renderedSummaryMarks.push({\n type: \"svg-only-mark\",\n Mark: createSummaryAxis({\n summary,\n summaryI,\n axisSettings: type.axis,\n axisCreator,\n projection,\n actualMax,\n adjustedSize,\n columnWidth\n })\n })\n }\n\n renderedSummaryMarks.push({ elements: multiBinMarks })\n }\n })\n\n return {\n marks: renderedSummaryMarks,\n xyPoints: summaryXYCoords,\n thresholds: binBuckets\n }\n}\n","import * as React from \"react\"\n\nimport { ProjectionTypes } from \"../types/generalTypes\"\n\nimport { boxplotRenderFn } from \"./boxplotRenderer\"\nimport { ckBinsRenderFn } from \"./ckbinsRenderer\"\nimport { contourRenderFn } from \"./contourRenderer\"\nimport { bucketizedRenderingFn } from \"./bucketizedRenderer\"\n\n// Re-export renderer functions so existing imports from this module continue to work\nexport { boxplotRenderFn } from \"./boxplotRenderer\"\nexport { ckBinsRenderFn } from \"./ckbinsRenderer\"\nexport { contourRenderFn } from \"./contourRenderer\"\nexport { bucketizedRenderingFn } from \"./bucketizedRenderer\"\n\ntype SummaryType = { type: string }\n\ntype ORFrameSummaryRendererTypes = {\n data: Array<object>\n type: SummaryType\n renderMode: Function\n eventListenersGenerator: Function\n styleFn: Function\n classFn: Function\n projection: ProjectionTypes\n adjustedSize: Array<number>\n chartSize: number\n margin: object\n axisCreator?: Function\n}\n\nconst summaryRenderHash = {\n contour: contourRenderFn,\n boxplot: boxplotRenderFn,\n violin: bucketizedRenderingFn,\n heatmap: bucketizedRenderingFn,\n ridgeline: bucketizedRenderingFn,\n histogram: bucketizedRenderingFn,\n horizon: bucketizedRenderingFn,\n ckbins: ckBinsRenderFn\n}\n\nexport function orFrameSummaryRenderer({\n data,\n type,\n renderMode,\n eventListenersGenerator,\n styleFn,\n classFn,\n projection,\n adjustedSize,\n chartSize,\n margin,\n axisCreator\n}: ORFrameSummaryRendererTypes) {\n let summaryRenderFn\n if (typeof type.type === \"function\") {\n summaryRenderFn = type.type\n } else if (summaryRenderHash[type.type]) {\n summaryRenderFn = summaryRenderHash[type.type]\n } else {\n console.error(\n `Invalid summary type: ${\n type.type\n } - Must be a function or one of the following strings: ${Object.keys(\n summaryRenderHash\n ).join(\", \")}`\n )\n return {}\n }\n return summaryRenderFn({\n data,\n type,\n renderMode,\n eventListenersGenerator,\n styleFn,\n classFn,\n projection,\n adjustedSize,\n chartSize,\n margin,\n axisCreator\n })\n}\n\n/**\n * Main drawing function for summary visualizations\n */\nexport const drawSummaries = ({\n data,\n type,\n renderMode,\n eventListenersGenerator,\n styleFn,\n classFn,\n projection,\n adjustedSize,\n margin,\n axisCreator\n}: {\n data: object\n type: { type?: string | Function }\n renderMode: Function\n eventListenersGenerator: Function\n styleFn: Function\n classFn: Function\n projection: ProjectionTypes\n adjustedSize: number[]\n margin: object\n axisCreator?: Function\n}) => {\n if (!type || !type.type) return\n type = typeof type === \"string\" ? { type } : type\n const chartSize =\n projection === \"vertical\" ? adjustedSize[1] : adjustedSize[0]\n\n return orFrameSummaryRenderer({\n data: data as unknown as Array<object>,\n type: type as SummaryType,\n renderMode,\n eventListenersGenerator,\n styleFn,\n classFn,\n projection,\n adjustedSize,\n chartSize,\n margin,\n axisCreator\n })\n}\n\ninterface summaryInstruction {\n Mark?: JSX.Element\n containerProps?: object\n elements: object[]\n}\n\n/**\n * Converts summary instructions to rendered SVG elements\n */\nexport function summaryInstructionsToMarks(data: summaryInstruction[]) {\n const renderedSummaries: JSX.Element[] = []\n for (const container of data) {\n const renderedElements: JSX.Element[] = []\n const { elements, containerProps} = container\n if (container.Mark) {\n renderedSummaries.push(container.Mark)\n } else {\n for (let i = 0; i < elements.length; i++) {\n const element: Record<string, any> = elements[i] as Record<string, any>\n const { markType, style = {}, ...restProps } = element\n\n // Merge style object into direct props for cleaner SVG\n const elementProps: Record<string, any> = { ...restProps }\n if (style.fill !== undefined) elementProps.fill = style.fill\n if (style.stroke !== undefined) elementProps.stroke = style.stroke\n if (style.strokeWidth !== undefined) elementProps.strokeWidth = style.strokeWidth\n if (style.opacity !== undefined) elementProps.opacity = style.opacity\n if (style.fillOpacity !== undefined) elementProps.fillOpacity = style.fillOpacity\n if (style.strokeOpacity !== undefined) elementProps.strokeOpacity = style.strokeOpacity\n\n // Keep remaining styles\n const remainingStyles: Record<string, any> = { ...style }\n delete remainingStyles.fill\n delete remainingStyles.stroke\n delete remainingStyles.strokeWidth\n delete remainingStyles.opacity\n delete remainingStyles.fillOpacity\n delete remainingStyles.strokeOpacity\n if (Object.keys(remainingStyles).length > 0) {\n elementProps.style = remainingStyles\n }\n\n elementProps.key = element.key || i\n\n if (markType) {\n renderedElements.push(React.createElement(markType, elementProps))\n }\n }\n if (containerProps) {\n renderedSummaries.push(<g {...containerProps}>{renderedElements}</g>)\n } else {\n renderedSummaries.push(...renderedElements)\n }\n }\n }\n return renderedSummaries\n}\n\nexport const renderLaidOutSummaries = ({\n data,\n canvasRender,\n canvasDrawing\n}) => {\n if (canvasRender()) {\n for (const container of data) {\n if (container.type !== \"svg-only-mark\") {\n const { transform: containerTransform = \"translate(0,0)\" } =\n container?.containerProps ?? {\n transform: \"translate(0,0)\"\n }\n\n const [containerX, containerY] = containerTransform\n .replace(\"translate(\", \"\")\n .replace(\")\", \"\")\n .split(\",\")\n for (const element of container.elements) {\n const { transform: elementTransform = \"translate(0,0)\" } = element\n\n const [elementX, elementY] = elementTransform\n .replace(\"translate(\", \"\")\n .replace(\")\", \"\")\n .split(\",\")\n\n const canvasNode = {\n baseClass: \"frame-piece\",\n tx: parseInt(elementX) + parseInt(containerX),\n ty: parseInt(elementY) + parseInt(containerY),\n d: {},\n i: 0,\n markProps: element,\n styleFn: () => element.style,\n renderFn: element.renderMode,\n classFn: () => \"\"\n }\n\n canvasDrawing.push(canvasNode)\n }\n }\n }\n }\n\n return summaryInstructionsToMarks(\n data.filter((d) => !canvasRender() || d.type === \"svg-only-mark\")\n )\n}\n","import * as React from \"react\"\nimport { useEffect, useState, useRef } from \"react\"\n\nimport {\n axisLabels,\n axisPieces,\n axisLines\n} from \"./../visualizationLayerBehavior/axis\"\n\nimport SummaryGraphic from \"./summaryGraphic\"\nimport AxisTitle from \"./axisTitle\"\n\nimport { AxisProps } from \"./../types/annotationTypes\"\n\nimport {\n drawSummaries,\n summaryInstructionsToMarks\n} from \"./../svg/summaryLayouts\"\nimport { AxisSummaryTypeSettings } from \"./../types/generalTypes\"\n\n// components\n\nconst marginalPointMapper = (orient, width, data) => {\n const xMod = orient === \"left\" || orient === \"right\" ? width / 2 : 0\n const yMod = orient === \"bottom\" || orient === \"top\" ? width / 2 : 0\n return data.map((p) => [p.xy.x + xMod, p.xy.y + yMod])\n}\n\nfunction formatValue(value, props) {\n if (props.tickFormat) {\n return props.tickFormat(value)\n }\n if (value.toString) {\n return value.toString()\n }\n return value\n}\n\nconst boundingBoxMax = (axisNode, orient) => {\n const axisRef = axisNode.current\n if (!axisRef) return 30\n\n const positionType =\n orient === \"left\" || orient === \"right\" ? \"width\" : \"height\"\n\n const axisLabelMax =\n Math.max(\n ...[...axisRef.querySelectorAll(\".axis-label\")]\n .map(\n (l: { getBBox: Function }) =>\n (l.getBBox && l.getBBox()) || { height: 30, width: 30 }\n )\n .map((d) => d[positionType])\n ) + 25\n\n return axisLabelMax\n}\n\nexport default function Axis(props: AxisProps) {\n const {\n rotate,\n label,\n dynamicLabelPosition,\n orient = \"left\",\n marginalSummaryType,\n tickFormat = marginalSummaryType ? () => \"\" : (d) => d,\n size,\n width = (size && size[0]) || 0,\n height = (size && size[1]) || 0,\n className,\n padding,\n tickValues,\n scale,\n ticks,\n footer,\n tickSize,\n tickLineGenerator,\n baseline = true,\n margin = { top: 0, bottom: 0, left: 0, right: 0 },\n center = false,\n annotationFunction,\n glyphFunction,\n xyPoints\n } = props\n\n const [hoverPosition, changeHoverPosition] = useState(0)\n const [calculatedLabelPosition, changeCalculatedLabelPosition] =\n useState(undefined)\n\n const axisNode = useRef(null)\n\n useEffect(() => {\n if (!label?.position && dynamicLabelPosition) {\n const newBBMax = boundingBoxMax(axisNode, orient)\n if (newBBMax !== calculatedLabelPosition) {\n changeCalculatedLabelPosition(newBBMax)\n }\n }\n }, [label, dynamicLabelPosition])\n\n let { axisParts, position = [0, 0] } = props\n\n let axisTickLines\n\n if (!axisParts) {\n axisParts = axisPieces({\n padding: padding,\n tickValues,\n scale,\n ticks,\n orient,\n size: [width, height],\n footer,\n tickSize\n })\n axisTickLines = (\n <g className={`axis ${className}`}>\n {axisLines({\n axisParts,\n orient,\n tickLineGenerator,\n className,\n scale\n })}\n </g>\n )\n }\n if (axisParts.length === 0) {\n return null\n }\n\n let hoverWidth = 50\n let hoverHeight = height\n let hoverX = -50\n let hoverY = 0\n let baselineX = 0\n let baselineY = 0\n let baselineX2 = 0\n let baselineY2 = height\n // hoverFunction is set is switch(orient) below\n let hoverFunction\n let circleX = 25\n let textX = -25\n let textY = 18\n let lineWidth = width + 25\n let lineHeight = 0\n let circleY = hoverPosition\n let annotationOffset = 0\n let annotationType = \"y\"\n\n switch (orient) {\n case \"right\":\n position = [position[0], position[1]]\n hoverX = width\n baselineX2 = baselineX = width\n annotationOffset = margin.top\n lineWidth = -width - 25\n textX = 5\n hoverFunction = (e) => {\n changeHoverPosition(e.nativeEvent.offsetY - annotationOffset)\n }\n if (center === true) {\n baselineX2 = baselineX = width / 2\n }\n break\n case \"top\":\n position = [position[0], 0]\n hoverWidth = width\n hoverHeight = 50\n hoverY = -50\n hoverX = 0\n annotationOffset = margin.left\n annotationType = \"x\"\n baselineX2 = width\n baselineY2 = 0\n if (center === true) {\n baselineY2 = baselineY = height / 2\n }\n hoverFunction = (e) => {\n changeHoverPosition(e.nativeEvent.offsetX - annotationOffset)\n }\n circleX = hoverPosition\n circleY = 25\n textX = 0\n textY = -10\n lineWidth = 0\n lineHeight = height + 25\n break\n case \"bottom\":\n position = [position[0], 0]\n hoverWidth = width\n hoverHeight = 50\n baselineY = baselineY2 = hoverY = height\n baselineX = hoverX = 0\n baselineX2 = width\n annotationOffset = margin.left\n\n hoverFunction = (e) => {\n changeHoverPosition(e.nativeEvent.offsetX - annotationOffset)\n }\n circleX = hoverPosition\n circleY = 25\n textX = 0\n textY = 15\n lineWidth = 0\n lineHeight = -height - 25\n annotationType = \"x\"\n if (center === true) {\n baselineY2 = baselineY = height / 2\n }\n break\n default:\n position = [position[0], position[1]]\n annotationOffset = margin.top\n if (center === true) {\n baselineX2 = baselineX = width / 2\n }\n hoverFunction = (e) => {\n changeHoverPosition(e.nativeEvent.offsetY - annotationOffset)\n }\n }\n\n let annotationBrush\n\n if (annotationFunction) {\n const formattedValue = formatValue(scale.invert(hoverPosition), props)\n const hoverGlyph: any = glyphFunction ? (\n glyphFunction({\n lineHeight,\n lineWidth,\n value: scale.invert(hoverPosition)\n })\n ) : (\n <g>\n {React.isValidElement(formattedValue) ? (\n <g transform={`translate(${textX},${textY})`}>{formattedValue}</g>\n ) : (\n <text x={textX} y={textY}>\n {formattedValue}\n </text>\n )}\n <circle r={5} />\n <line x1={lineWidth} y1={lineHeight} style={{ stroke: \"black\" }} />\n </g>\n )\n const annotationSymbol = hoverPosition ? (\n <g\n style={{ pointerEvents: \"none\" }}\n transform={`translate(${circleX},${circleY})`}\n >\n {hoverGlyph}\n </g>\n ) : null\n\n annotationBrush = (\n <g\n className=\"annotation-brush\"\n transform={`translate(${hoverX},${hoverY})`}\n >\n <rect\n style={{ fillOpacity: 0 }}\n height={hoverHeight}\n width={hoverWidth}\n onMouseMove={hoverFunction}\n onClick={(e) =>\n annotationFunction({\n className: \"dynamic-axis-annotation\",\n type: annotationType,\n value: scale.invert(hoverPosition),\n e\n })\n }\n onMouseOut={() => {\n changeHoverPosition(undefined)\n }}\n />\n {annotationSymbol}\n </g>\n )\n }\n\n let summaryGraphic\n\n if (marginalSummaryType && xyPoints) {\n const summaryWidth = Math.max(margin[orient] - 6, 5)\n\n const decoratedSummaryType: AxisSummaryTypeSettings =\n typeof marginalSummaryType === \"string\"\n ? { type: marginalSummaryType }\n : marginalSummaryType\n\n if (\n decoratedSummaryType.flip === undefined &&\n (orient === \"bottom\" || orient === \"right\")\n ) {\n decoratedSummaryType.flip = true\n }\n\n const summaryStyle = decoratedSummaryType.summaryStyle\n ? () => decoratedSummaryType.summaryStyle\n : () => ({\n fill: \"black\",\n fillOpacity: 0.5,\n stroke: \"black\",\n strokeDasharray: \"0\"\n })\n\n const summaryRenderMode = decoratedSummaryType.renderMode\n ? () => decoratedSummaryType.renderMode\n : () => undefined\n\n const summaryClass = decoratedSummaryType.summaryClass\n ? () => decoratedSummaryType.summaryClass\n : () => \"\"\n\n const dataFilter = decoratedSummaryType.filter || (() => true)\n\n const forSummaryData = xyPoints\n .filter(\n (p: { x?: number; y?: number; data?: object }) =>\n p.x !== undefined && p.y !== undefined && dataFilter(p.data)\n )\n .map((d: { x: number; y: number }) => ({\n ...d,\n xy: {\n x: orient === \"top\" || orient === \"bottom\" ? scale(d.x) : 0,\n y: orient === \"left\" || orient === \"right\" ? scale(d.y) : 0\n },\n piece: {\n scaledVerticalValue: scale(d.y),\n scaledValue: scale(d.x)\n },\n value:\n orient === \"top\" || orient === \"bottom\" ? scale(d.y) : scale(d.x),\n scaledValue: scale(d.x),\n scaledVerticalValue: scale(d.y)\n }))\n\n const calculatedSummary = drawSummaries({\n data: {\n column: {\n middle: summaryWidth / 2,\n pieceData: forSummaryData,\n width: summaryWidth,\n xyData: forSummaryData\n }\n },\n type: decoratedSummaryType,\n renderMode: summaryRenderMode,\n eventListenersGenerator:\n decoratedSummaryType.eventListenersGenerator || (() => ({})),\n styleFn: summaryStyle,\n classFn: summaryClass,\n projection:\n orient === \"top\" || orient === \"bottom\" ? \"horizontal\" : \"vertical\",\n adjustedSize: size,\n margin: { top: 0, bottom: 0, left: 0, right: 0 }\n })\n\n const renderedSummary = summaryInstructionsToMarks(calculatedSummary.marks)\n\n let points\n\n if (decoratedSummaryType.showPoints === true) {\n const mappedPoints = marginalPointMapper(\n orient,\n summaryWidth,\n forSummaryData\n )\n\n points = mappedPoints.map((d, i) => (\n <circle\n key={`axis-summary-point-${i}`}\n cx={d[0]}\n cy={d[1]}\n r={decoratedSummaryType.r || 3}\n style={\n decoratedSummaryType.pointStyle || {\n fill: \"black\",\n fillOpacity: 0.1\n }\n }\n />\n ))\n }\n\n const translation = {\n left: [-margin.left + 2, 0],\n right: [size[0] + 2, 0],\n top: [0, -margin.top + 2],\n bottom: [0, size[1] + 2]\n }\n\n summaryGraphic = (\n <SummaryGraphic\n translation={translation}\n orient={orient}\n decoratedSummaryType={decoratedSummaryType}\n summaryWidth={summaryWidth}\n renderedSummary={renderedSummary}\n points={points}\n />\n )\n }\n\n let axisTitle\n\n const axisTickLabels = axisLabels({\n tickFormat,\n axisParts,\n orient,\n rotate,\n center\n })\n if (label) {\n const labelName: any = label.name || label\n const labelPosition = label.position || {}\n const locationMod = labelPosition.location || \"outside\"\n let anchorMod = (labelPosition.anchor || \"middle\") as \"inherit\" | \"middle\" | \"end\" | \"start\"\n const distance = label.locationDistance || calculatedLabelPosition\n\n const rotateHash = {\n left: -90,\n right: 90,\n top: 0,\n bottom: 0\n }\n\n const rotation = labelPosition.rotation || rotateHash[orient]\n\n const positionHash = {\n left: {\n start: [0, size[1]],\n middle: [0, size[1] / 2],\n end: [0, 0],\n inside: [distance || 15, 0],\n outside: [-(distance || 45), 0]\n },\n right: {\n start: [size[0] + 0, size[1]],\n middle: [size[0] + 0, size[1] / 2],\n end: [size[0] + 0, 0],\n inside: [-(distance || 15), 0],\n outside: [distance || 45, 0]\n },\n top: {\n start: [0, 0],\n middle: [0 + size[0] / 2, 0],\n end: [0 + size[0], 0],\n inside: [0, distance || 15],\n outside: [0, -(distance || 40)]\n },\n bottom: {\n start: [0, size[1]],\n middle: [0 + size[0] / 2, size[1]],\n end: [0 + size[0], size[1]],\n inside: [0, -(distance || 5)],\n outside: [0, distance || 50]\n }\n }\n\n const translation = positionHash[orient][anchorMod]\n const location = positionHash[orient][locationMod]\n\n translation[0] = translation[0] + location[0]\n translation[1] = translation[1] + location[1]\n\n if (anchorMod === \"start\" && orient === \"right\") {\n anchorMod = \"end\"\n } else if (anchorMod === \"end\" && orient === \"right\") {\n anchorMod = \"start\"\n }\n\n axisTitle = (\n <AxisTitle\n className={className}\n translation={translation}\n position={position}\n rotation={rotation}\n labelName={labelName}\n anchorMod={anchorMod}\n />\n )\n }\n\n const axisAriaLabel = `${orient} axis ${\n (axisParts &&\n axisParts.length > 0 &&\n `from ${tickFormat(axisParts[0].value, 0)} to ${tickFormat(\n axisParts[axisParts.length - 1].value,\n axisParts.length - 1\n )}`) ||\n \"without ticks\"\n }`\n\n return (\n <g className={className} aria-label={axisAriaLabel} ref={axisNode}>\n {annotationBrush}\n {axisTickLabels}\n {axisTickLines}\n {baseline === true ? (\n <line\n key=\"baseline\"\n className={`axis-baseline ${className}`}\n stroke=\"black\"\n strokeLinecap=\"square\"\n x1={baselineX}\n x2={baselineX2}\n y1={baselineY}\n y2={baselineY2}\n />\n ) : null}\n {axisTitle}\n {summaryGraphic}\n </g>\n )\n}\n\nexport { marginalPointMapper, formatValue, boundingBoxMax }\n","import { sum } from \"d3-array\"\n\nimport { findFirstAccessorValue } from \"../data/multiAccessorUtils\"\n\nimport {\n ProjectedLine,\n ProjectedPoint,\n RawLine,\n RawSummary\n} from \"../types/generalTypes\"\nimport { AnnotationType } from \"../types/annotationTypes\"\n\nconst datesForUnique = (d) => (d instanceof Date ? d.getTime() : d)\n\ntype SummaryProjectionTypes = {\n data: Array<RawSummary>\n summaryDataAccessor: Array<Function>\n xAccessor: Array<Function>\n yAccessor: Array<Function>\n}\n\ntype LineProjectionTypes = {\n data: Array<RawLine>\n lineDataAccessor: Array<Function>\n xProp: string\n xPropTop?: string\n xPropBottom?: string\n yProp: string\n yPropTop?: string\n yPropBottom?: string\n xAccessor: Array<Function>\n yAccessor: Array<Function>\n}\n\ntype DifferenceLineProps = {\n data: Array<ProjectedLine>\n yProp: string\n yPropTop: string\n yPropBottom: string\n}\n\ntype StackedAreaTypes = {\n type: string\n data: Array<ProjectedLine>\n xProp: string\n yProp: string\n yPropMiddle: string\n sort?: (a: ProjectedLine, b: ProjectedLine) => number\n yPropTop: string\n yPropBottom: string\n}\n\ntype CumulativeLineTypes = {\n type: string\n data: Array<ProjectedLine>\n yPropMiddle: string\n yPropTop: string\n yPropBottom: string\n y1?: Function\n}\n\ntype LineChartTypes = {\n data: Array<ProjectedLine>\n y1?: Function\n x1?: Function\n yPropTop: string\n yPropMiddle: string\n yPropBottom: string\n xPropTop: string\n xPropMiddle: string\n xPropBottom: string\n}\n\ntype RelativeYTypes = {\n point?: ProjectedPoint | AnnotationType\n projectedYMiddle: string\n projectedY: string\n yAccessor: Array<Function>\n yScale: Function\n showLinePoints?: boolean | string\n}\n\ntype RelativeXTypes = {\n point?: ProjectedPoint | AnnotationType\n projectedXMiddle: string\n projectedX: string\n xAccessor: Array<Function>\n xScale: Function\n}\n\nexport const projectSummaryData = ({\n data,\n summaryDataAccessor,\n xAccessor,\n yAccessor\n}: SummaryProjectionTypes) => {\n const projectedData = []\n summaryDataAccessor.forEach((actualSummaryAccessor) => {\n xAccessor.forEach((actualXAccessor) => {\n yAccessor.forEach((actualYAccessor) => {\n const projection = (d: Object) =>\n actualSummaryAccessor(d).map((p, q) => [\n actualXAccessor(p, q),\n actualYAccessor(p, q)\n ])\n\n data.forEach((d) => {\n projectedData.push({\n ...d,\n _baseData: actualSummaryAccessor(d),\n _xyfCoordinates: projection(d)\n })\n })\n })\n })\n })\n\n return projectedData\n}\n\nexport const projectLineData = ({\n data,\n lineDataAccessor,\n xProp,\n xPropTop,\n xPropBottom,\n yProp,\n yPropTop,\n yPropBottom,\n xAccessor,\n yAccessor\n}: LineProjectionTypes) => {\n if (!Array.isArray(data)) {\n data = [data]\n }\n const projectedLine: Array<ProjectedLine> = []\n\n lineDataAccessor.forEach((actualLineAccessor, lineIndex) => {\n xAccessor.forEach((actualXAccessor, xIndex) => {\n yAccessor.forEach((actualYAccessor, yIndex) => {\n data.forEach((d: ProjectedLine) => {\n const originalLineData = { ...d, xIndex, yIndex, lineIndex }\n\n originalLineData.data = actualLineAccessor(d).map((p, q) => {\n const originalCoords = { data: p }\n\n originalCoords[xProp] = actualXAccessor(p, q)\n originalCoords[xPropTop] = originalCoords[xProp]\n originalCoords[xPropBottom] = originalCoords[xProp]\n originalCoords[yProp] = actualYAccessor(p, q)\n originalCoords[yPropTop] = originalCoords[yProp]\n originalCoords[yPropBottom] = originalCoords[yProp]\n\n return originalCoords\n })\n originalLineData.key = originalLineData.key || projectedLine.length\n projectedLine.push(originalLineData)\n })\n })\n })\n })\n\n return projectedLine\n}\n\nexport const differenceLine = ({\n data,\n yProp,\n yPropTop,\n yPropBottom\n}: DifferenceLineProps) => {\n data.forEach((l, i) => {\n l.data.forEach((point, q) => {\n const otherLine = i === 0 ? 1 : 0\n if (point[yProp] > data[otherLine].data[q][yProp]) {\n point[yPropBottom] = data[otherLine].data[q][yProp]\n point[yPropTop] = point[yProp]\n } else {\n point[yPropTop] = point[yProp]\n point[yPropBottom] = point[yProp]\n }\n })\n })\n\n return data\n}\n\nexport const stackedArea = ({\n type = \"stackedarea\",\n data,\n xProp,\n yProp,\n yPropMiddle,\n sort,\n yPropTop,\n yPropBottom\n}: StackedAreaTypes) => {\n const valueMap = new Map()\n const lineSums = data.map(() => 0)\n\n let lineIndex = 0\n for (const line of data) {\n /*\n After we calculate this, we then sort the lines (and the value used for the sorting is in this for loop)\n So, we need to know their original index order in order to use the naively populated coordinate array in valueMap\n Otherwise the coordinates in the map will be in different order than the sorted order of the lines\n */\n line.__lineIndex = lineIndex\n for (const coord of line.data) {\n const coordX = datesForUnique(coord[xProp])\n lineSums[lineIndex] += coord[yProp]\n if (!valueMap.has(coordX)) {\n valueMap.set(coordX, [])\n }\n valueMap.get(coordX)[lineIndex] = coord\n }\n lineIndex++\n }\n\n let stackSort = (a, b) => lineSums[b.key] - lineSums[a.key]\n if (type === \"stackedpercent-invert\" || type === \"stackedarea-invert\") {\n stackSort = (a, b) => lineSums[a.key] - lineSums[b.key]\n }\n sort = sort === undefined ? stackSort : sort\n\n if (sort !== null) {\n data = data.sort(sort)\n }\n\n const lineIndexSortLookup = data.map((line) => line.__lineIndex)\n\n for (const [, coordsAtX] of valueMap) {\n let negativeOffset = 0\n let positiveOffset = 0\n\n const positiveStepTotal = sum(coordsAtX, (d) =>\n d?.[yProp] > 0 ? d[yProp] : 0\n )\n const negativeStepTotal = sum(coordsAtX, (d) =>\n d?.[yProp] < 0 ? d[yProp] : 0\n )\n\n for (const newIndex of lineIndexSortLookup) {\n const l = coordsAtX[newIndex]\n if (l) {\n if (l[yProp] < 0) {\n if (\n type === \"linepercent\" ||\n type === \"stackedpercent\" ||\n type === \"stackedpercent-invert\"\n ) {\n const percent = l[yProp] / negativeStepTotal\n l.percent = percent\n if (type === \"linepercent\") {\n l[yPropBottom] =\n l[yPropBottom] =\n l[yPropTop] =\n l[yPropMiddle] =\n percent\n } else {\n const adjustment = negativeStepTotal >= 0 ? 0 : percent\n l[yPropBottom] =\n negativeStepTotal === 0\n ? 0\n : -(negativeOffset / negativeStepTotal)\n l[yPropTop] = l[yPropBottom] - adjustment\n l[yPropMiddle] = l[yPropBottom] - adjustment / 2\n }\n } else {\n l[yPropBottom] = negativeOffset\n l[yPropTop] = negativeOffset + l[yProp]\n l[yPropMiddle] = negativeOffset + l[yProp] / 2\n }\n negativeOffset += l[yProp]\n } else {\n if (\n type === \"linepercent\" ||\n type === \"stackedpercent\" ||\n type === \"stackedpercent-invert\"\n ) {\n const percent = l[yProp] / positiveStepTotal\n l.percent = percent\n\n if (type === \"linepercent\") {\n l[yPropBottom] = l[yPropTop] = l[yPropMiddle] = percent\n } else {\n const adjustment = positiveStepTotal <= 0 ? 0 : percent\n l[yPropBottom] =\n positiveStepTotal === 0 ? 0 : positiveOffset / positiveStepTotal\n l[yPropTop] = l[yPropBottom] + adjustment\n l[yPropMiddle] = l[yPropBottom] + adjustment / 2\n }\n } else {\n l[yPropBottom] = positiveOffset\n l[yPropTop] = positiveOffset + l[yProp]\n l[yPropMiddle] = positiveOffset + l[yProp] / 2\n }\n positiveOffset += l[yProp]\n }\n }\n }\n }\n\n return data\n}\n\nexport const lineChart = ({\n data,\n y1,\n x1,\n yPropTop,\n yPropMiddle,\n yPropBottom,\n xPropTop,\n xPropMiddle,\n xPropBottom\n}: LineChartTypes) => {\n if (y1) {\n for (const line of data) {\n for (const point of line.data) {\n point[yPropBottom] = y1(point)\n // Use top position for hover so overlapping-area hover points\n // align with the visible line rather than compressing toward the baseline.\n point[yPropMiddle] = point[yPropTop]\n }\n }\n }\n\n if (x1) {\n for (const line of data) {\n for (const point of line.data) {\n point[xPropBottom] = x1(point)\n point[xPropMiddle] = (point[xPropBottom] + point[xPropTop]) / 2\n }\n }\n }\n\n return data\n}\n\nexport const cumulativeLine = ({\n data,\n y1,\n yPropTop,\n yPropMiddle,\n yPropBottom,\n type = \"cumulative\"\n}: CumulativeLineTypes) => {\n for (const line of data) {\n let cumulativeValue = 0\n const dataArray =\n type === \"cumulative-reverse\" ? line.data.reverse() : line.data\n\n for (const point of dataArray) {\n cumulativeValue += point[yPropTop]\n point[yPropBottom] =\n point[yPropTop] =\n point[yPropMiddle] =\n cumulativeValue\n if (y1) {\n point[yPropBottom] = y1(point)\n point[yPropMiddle] = point[yPropBottom] + point[yPropTop] / 2\n }\n }\n }\n\n return data\n}\n\nexport const bumpChart = ({\n type = \"bumpline\",\n data,\n xProp,\n yProp,\n yPropMiddle,\n yPropTop,\n yPropBottom\n}: StackedAreaTypes) => {\n const uniqXValues = new Map()\n for (const line of data) {\n for (const point of line.data) {\n const xValue = datesForUnique(point[xProp])\n if (!uniqXValues.has(xValue)) {\n uniqXValues.set(xValue, [])\n }\n uniqXValues.get(xValue).push(point)\n }\n }\n\n let bumpSort = (a, b) => {\n if (a[yProp] > b[yProp]) {\n return 1\n }\n if (a[yProp] < b[yProp]) {\n return -1\n }\n return -1\n }\n if (type === \"bumparea-invert\" || type === \"bumpline-invert\") {\n bumpSort = (a, b) => {\n if (a[yProp] < b[yProp]) {\n return 1\n }\n if (a[yProp] > b[yProp]) {\n return -1\n }\n return -1\n }\n }\n\n for (const [, pointsAtXArray] of uniqXValues) {\n let negativeOffset = 0\n let positiveOffset = 0\n\n pointsAtXArray.sort(bumpSort)\n\n let rank = 1\n for (const point of pointsAtXArray) {\n point._XYFrameRank\n if (type === \"bumparea\" || type === \"bumparea-invert\") {\n if (point[yProp] < 0) {\n point[yPropTop] = negativeOffset + point[yProp]\n point[yPropMiddle] = negativeOffset + point[yProp] / 2\n point[yPropBottom] = negativeOffset\n negativeOffset += point[yProp]\n } else {\n point[yPropTop] = positiveOffset + point[yProp]\n point[yPropMiddle] = positiveOffset + point[yProp] / 2\n point[yPropBottom] = positiveOffset\n positiveOffset += point[yProp]\n }\n } else {\n point[yProp] = rank\n point[yPropTop] = rank\n point[yPropBottom] = rank\n }\n rank++\n }\n }\n\n return data\n}\n\nexport const dividedLine = (\n parameters: Function,\n points: Array<Object>,\n searchIterations: number = 10\n) => {\n let currentParameters = parameters(points[0], 0)\n let currentPointsArray = []\n const dividedLinesData = [\n { key: currentParameters, points: currentPointsArray }\n ]\n points.forEach((point, pointI) => {\n const newParameters = parameters(point, pointI)\n\n let matchingParams = newParameters === currentParameters\n const stringNewParams = JSON.stringify(newParameters)\n const stringCurrentParams = JSON.stringify(currentParameters)\n\n if (typeof currentParameters === \"object\") {\n matchingParams = stringNewParams === stringCurrentParams\n }\n\n if (matchingParams) {\n currentPointsArray.push(point)\n } else {\n const lastPoint = currentPointsArray[currentPointsArray.length - 1]\n let pointA = lastPoint\n let pointB = point\n let stringBParams = stringNewParams\n\n let x = 0\n while (x < searchIterations && stringNewParams === stringBParams) {\n const keys = Object.keys(pointA)\n const findPoints = simpleSearchFunction({\n pointA,\n pointB,\n currentParameters,\n parameters,\n keys\n })\n pointA = findPoints[0]\n pointB = findPoints[1]\n stringBParams = JSON.stringify(parameters(pointB))\n x++\n }\n currentPointsArray.push(pointB)\n currentPointsArray = [pointB, point]\n dividedLinesData.push({ key: newParameters, points: currentPointsArray })\n currentParameters = newParameters\n }\n })\n return dividedLinesData\n}\n\nfunction simpleSearchFunction({\n pointA,\n pointB,\n currentParameters,\n parameters,\n keys\n}: {\n pointA: Object\n pointB: Object\n currentParameters: Object\n parameters: Function\n keys: Array<string>\n}) {\n const betweenPoint = {}\n keys.forEach((key) => {\n betweenPoint[key] =\n typeof pointA[key] === \"number\"\n ? (pointA[key] + pointB[key]) / 2\n : undefined\n })\n const stringBetween = JSON.stringify(parameters(betweenPoint))\n const stringCurrent = JSON.stringify(currentParameters)\n\n if (stringBetween === stringCurrent) {\n return [betweenPoint, pointB]\n }\n return [pointA, betweenPoint]\n}\n\nexport function funnelize({\n data,\n steps,\n key\n}: {\n data: Array<Object>\n steps: Array<string>\n key: string\n}) {\n const funnelData = []\n if (!Array.isArray(data)) {\n data = [data]\n }\n if (!steps) {\n steps = data.map((d) => Object.keys(d)).reduce((a, b) => a.concat(b), [])\n }\n\n data.forEach((datum, i) => {\n const datumKey = key ? datum[key] : i\n steps.forEach((step) => {\n const funnelDatum = { funnelKey: datumKey, stepName: \"\", stepValue: 0 }\n funnelDatum.stepName = step\n funnelDatum.stepValue = datum[step] ? datum[step] : 0\n funnelData.push(funnelDatum)\n })\n })\n\n return funnelData\n}\n\nconst whichPoint = {\n bottom: \"yBottom\",\n top: \"yTop\"\n}\n\nexport function relativeY({\n point,\n projectedY,\n yAccessor,\n yScale,\n showLinePoints\n}: RelativeYTypes) {\n const baseData =\n point &&\n (showLinePoints &&\n showLinePoints !== true &&\n point[whichPoint[showLinePoints]] !== undefined\n ? point[whichPoint[showLinePoints]]\n : point.yMiddle !== undefined\n ? point.yMiddle\n : point[projectedY] !== undefined\n ? point[projectedY]\n : findFirstAccessorValue(yAccessor, point))\n\n if (Array.isArray(baseData)) {\n return baseData.map((d) => yScale(d))\n }\n return baseData !== undefined ? yScale(baseData) : 0\n}\n\nexport function relativeX({\n point,\n projectedXMiddle,\n projectedX,\n xAccessor,\n xScale\n}: RelativeXTypes) {\n const baseData =\n point &&\n (point[projectedXMiddle] !== undefined\n ? point[projectedXMiddle]\n : point[projectedX] !== undefined\n ? point[projectedX]\n : findFirstAccessorValue(xAccessor, point))\n\n if (Array.isArray(baseData)) {\n return baseData.map((d) => xScale(d))\n }\n return baseData !== undefined ? xScale(baseData) : 0\n}\n\nexport function findPointByID({\n point,\n idAccessor,\n lines,\n xScale,\n projectedX,\n xAccessor\n}: {\n point: ProjectedPoint\n idAccessor: Function\n lines: { data: ProjectedLine[] }\n xScale: Function\n projectedX: string\n xAccessor: Array<Function>\n}) {\n const pointID = idAccessor(point.parentLine || point)\n\n if (pointID) {\n const thisLine = lines.data.find((l) => idAccessor(l) === pointID)\n\n if (!thisLine) {\n return null\n }\n const pointX = xScale(findFirstAccessorValue(xAccessor, point))\n const thisPoint = thisLine.data.find(\n (p) => xScale(p[projectedX]) === pointX\n )\n\n if (!thisPoint) {\n return null\n }\n\n const newPoint = {\n ...point,\n ...thisPoint,\n ...thisPoint.data,\n parentLine: thisLine\n }\n const reactAnnotationProps = [\n \"type\",\n \"label\",\n \"note\",\n \"connector\",\n \"disabled\",\n \"color\",\n \"subject\"\n ]\n\n reactAnnotationProps.forEach((prop) => {\n if (point[prop]) newPoint[prop] = point[prop]\n })\n return newPoint\n }\n return point\n}\n","export const projectedX = \"x\"\nexport const projectedY = \"y\"\nexport const projectedYMiddle = \"yMiddle\"\nexport const projectedYTop = \"yTop\"\nexport const projectedYBottom = \"yBottom\"\nexport const projectedXMiddle = \"xMiddle\"\nexport const projectedXTop = \"xTop\"\nexport const projectedXBottom = \"xBottom\"\n","export const extentValue = extent =>\n (extent && extent.extent) || (Array.isArray(extent) && extent) || []\n","import { projectLineData, projectSummaryData } from \"../svg/lineDrawing\"\nimport {\n projectedX,\n projectedY,\n projectedYTop,\n projectedYMiddle,\n projectedYBottom,\n projectedXBottom,\n projectedXMiddle,\n projectedXTop\n} from \"../constants/coordinateNames\"\nimport {\n differenceLine,\n stackedArea,\n bumpChart,\n lineChart,\n cumulativeLine\n} from \"../svg/lineDrawing\"\n\nimport {\n contouring,\n hexbinning,\n heatmapping,\n trendlining,\n lineBounding\n} from \"../svg/areaDrawing\"\nimport { max, min } from \"d3-array\"\n\nimport { extentValue } from \"./unflowedFunctions\"\n\nimport {\n ProjectedPoint,\n ProjectedLine,\n ProjectedSummary,\n ProjectedBin,\n RawSummary,\n RawPoint,\n RawLine,\n LineTypeSettings,\n SummaryTypeSettings,\n ExtentType,\n MarginType\n} from \"../types/generalTypes\"\n\nconst baseDefinedFunction = () => true\n\nconst whichPointsHashY = {\n top: projectedYTop,\n bottom: projectedYBottom,\n orphan: projectedY\n}\n\nconst whichPointsHashX = {\n top: projectedXTop,\n bottom: projectedXBottom,\n orphan: projectedX\n}\n\nconst builtInTransformations = {\n stackedarea: stackedArea,\n \"stackedarea-invert\": stackedArea,\n stackedpercent: stackedArea,\n \"stackedpercent-invert\": stackedArea,\n linepercent: stackedArea,\n difference: differenceLine,\n bumparea: bumpChart,\n bumpline: bumpChart,\n \"bumparea-invert\": bumpChart,\n line: lineChart,\n area: lineChart,\n cumulative: cumulativeLine,\n \"cumulative-reverse\": cumulativeLine\n}\n\ntype validStrFnTypes =\n | boolean\n | string\n | number\n | Record<string, any>\n | Record<string, any>[]\n | RawPoint\n | RawPoint[]\n\nexport function stringToFn<StrFnType extends validStrFnTypes>(\n accessor?:\n | ((args?: Record<string, any>, index?: number) => StrFnType)\n | string\n | StrFnType,\n defaultAccessor?: (arg?: Record<string, any>, i?: number) => StrFnType,\n raw?: boolean\n): (d?: Record<string, any>, i?: number) => StrFnType {\n if (!accessor && defaultAccessor) {\n return defaultAccessor\n } else if (typeof accessor === \"object\") {\n return () => accessor\n } else if (accessor instanceof Function) {\n return accessor\n } else if (raw === true) {\n const castAccessor = accessor as unknown as StrFnType\n return () => castAccessor\n } else if (typeof accessor === \"string\") {\n return (d: Record<string, any>) => (d ? d[accessor] : undefined)\n }\n\n return () => undefined\n}\n\nexport function stringToArrayFn<StrFnType extends validStrFnTypes>(\n accessor?:\n | ((arg?: Record<string, any>, index?: number) => StrFnType)\n | string\n | StrFnType\n | Array<\n | ((arg?: Record<string, any>, index?: number) => StrFnType)\n | string\n | StrFnType\n >,\n defaultAccessor?: (arg?: Record<string, any>, index?: number) => StrFnType,\n raw?: boolean\n): Array<(arg?: Record<string, any>, index?: number) => StrFnType> {\n if (accessor === undefined) {\n return [stringToFn<StrFnType>(undefined, defaultAccessor, raw)]\n }\n let arrayOfAccessors = []\n if (Array.isArray(accessor)) {\n arrayOfAccessors = accessor\n } else {\n arrayOfAccessors = [accessor]\n }\n\n return arrayOfAccessors.map((a) =>\n stringToFn<StrFnType>(a, defaultAccessor, raw)\n )\n}\n\nfunction rebuildFullDatasetWithSummaries(\n fullDataset: Array<ProjectedPoint | ProjectedBin | ProjectedSummary>,\n projectedSummaries: ProjectedSummary[]\n): Array<ProjectedPoint | ProjectedBin | ProjectedSummary> {\n const rebuilt: Array<ProjectedPoint | ProjectedBin | ProjectedSummary> = []\n for (const d of projectedSummaries) {\n rebuilt.push({ ...d })\n }\n for (const d of fullDataset) {\n if (!(d as ProjectedPoint).parentSummary) {\n rebuilt.push(d)\n }\n }\n return rebuilt\n}\n\ntype CalculateDataTypes = {\n lineDataAccessor: Array<Function>\n summaryDataAccessor: Array<Function>\n summaryStyleFn: Function\n summaryClassFn: Function\n summaryRenderModeFn: Function\n xAccessor: Array<Function>\n yAccessor: Array<Function>\n summaries?: Array<RawSummary>\n points?: Array<RawPoint>\n lines?: Array<RawLine>\n lineType: LineTypeSettings\n showLinePoints?: boolean | string\n showSummaryPoints?: boolean\n xExtent?: ExtentType\n yExtent?: ExtentType\n invertX?: boolean\n invertY?: boolean\n summaryType: SummaryTypeSettings\n adjustedSize: Array<number>\n chartSize: Array<number>\n xScaleType: Function\n yScaleType: Function\n margin: MarginType\n defined?: Function\n annotations: object[]\n filterRenderedLines: (\n value: ProjectedLine,\n index: number,\n array: ProjectedLine[]\n ) => any\n filterRenderedSummaries: (\n value: ProjectedSummary,\n index: number,\n array: ProjectedSummary[]\n ) => any\n filterRenderedPoints: (\n value: ProjectedPoint | ProjectedBin | ProjectedSummary,\n index: number,\n array: (ProjectedPoint | ProjectedBin | ProjectedSummary)[]\n ) => any\n}\n\nexport const calculateDataExtent = ({\n lineDataAccessor,\n xAccessor,\n yAccessor,\n summaries,\n points,\n lines,\n lineType,\n showLinePoints,\n showSummaryPoints,\n xExtent,\n yExtent,\n invertX,\n invertY,\n summaryDataAccessor,\n summaryType,\n adjustedSize: size,\n margin,\n summaryStyleFn,\n summaryClassFn,\n summaryRenderModeFn,\n chartSize,\n filterRenderedLines,\n filterRenderedSummaries,\n filterRenderedPoints,\n defined = baseDefinedFunction,\n annotations = []\n}: CalculateDataTypes) => {\n let fullDataset: Array<ProjectedPoint | ProjectedBin | ProjectedSummary> = []\n let initialProjectedLines = []\n\n let projectedPoints: Array<ProjectedPoint> = [],\n projectedLines: Array<ProjectedLine> = [],\n projectedSummaries: Array<ProjectedSummary> = []\n if (points) {\n xAccessor.forEach((actualXAccessor, xIndex) => {\n yAccessor.forEach((actualYAccessor, yIndex) => {\n let i = 0\n for (const d of points) {\n const x = actualXAccessor(d, i)\n const y = actualYAccessor(d, i)\n const projectedPoint = { x, y, data: d, xIndex, yIndex }\n if (Array.isArray(y)) {\n projectedPoint[projectedYBottom] = Math.min(...y)\n projectedPoint[projectedYTop] = Math.max(...y)\n projectedPoint[projectedYMiddle] =\n (projectedPoint[projectedYBottom] +\n projectedPoint[projectedYTop]) /\n 2\n }\n if (Array.isArray(x)) {\n projectedPoint[projectedXBottom] = Math.min(...x)\n projectedPoint[projectedXTop] = Math.max(...x)\n projectedPoint[projectedXMiddle] =\n (projectedPoint[projectedXBottom] +\n projectedPoint[projectedXTop]) /\n 2\n }\n projectedPoints.push(projectedPoint)\n i++\n }\n })\n })\n\n for (const d of projectedPoints) {\n fullDataset.push({\n ...d,\n [projectedX]: d[projectedXTop] || d[projectedXBottom] || d.x,\n [projectedY]: d[projectedYTop] || d[projectedYBottom] || d.y\n })\n }\n }\n if (lines) {\n initialProjectedLines = projectLineData({\n data: lines,\n lineDataAccessor,\n xProp: projectedX,\n xPropTop: projectedXTop,\n xPropBottom: projectedXBottom,\n yProp: projectedY,\n yPropTop: projectedYTop,\n yPropBottom: projectedYBottom,\n xAccessor,\n yAccessor\n })\n\n const optionsObject = {\n xProp: projectedX,\n yProp: projectedY,\n yPropMiddle: projectedYMiddle,\n yPropTop: projectedYTop,\n yPropBottom: projectedYBottom,\n xPropMiddle: projectedXMiddle,\n xPropTop: projectedXTop,\n xPropBottom: projectedXBottom\n }\n\n projectedLines = lineTransformation(\n lineType,\n optionsObject\n )(initialProjectedLines)\n\n for (const d of projectedLines) {\n for (let q = 0; q < d.data.length; q++) {\n const p = d.data[q]\n if (!defined(Object.assign({}, p.data, p), q)) continue\n const mappedP: ProjectedPoint = {\n parentLine: d,\n y: p.y,\n x: p.x,\n xTop: p.xTop,\n xMiddle: p.xMiddle,\n xBottom: p.xBottom,\n yTop: p.yTop,\n yMiddle: p.yMiddle,\n yBottom: p.yBottom,\n data: p.data\n }\n if (p.percent) {\n mappedP.percent = p.percent\n }\n fullDataset.push(mappedP)\n }\n }\n if (showLinePoints) {\n const whichPointsX =\n showLinePoints === true\n ? projectedXMiddle\n : whichPointsHashX[showLinePoints]\n\n const whichPointsY =\n showLinePoints === true\n ? projectedYMiddle\n : whichPointsHashY[showLinePoints]\n\n projectedLines.forEach((d: ProjectedLine) => {\n d.data\n .filter((p, q) => {\n const isDefined = defined(Object.assign({}, p.data, p))\n if (isDefined) {\n if (showLinePoints === \"orphan\") {\n const prePoint = d.data[q - 1]\n const postPoint = d.data[q + 1]\n\n if (\n (!prePoint ||\n !defined(Object.assign({}, prePoint.data, prePoint))) &&\n (!postPoint ||\n !defined(Object.assign({}, postPoint.data, postPoint)))\n ) {\n return true\n } else {\n return false\n }\n } else {\n return true\n }\n } else {\n return false\n }\n })\n .forEach((p) => {\n projectedPoints.push({\n ...p,\n parentLine: d,\n [projectedY]:\n p[whichPointsY] !== undefined\n ? p[whichPointsY]\n : p[projectedYMiddle] !== undefined\n ? p[projectedYMiddle]\n : p[projectedYBottom] !== undefined\n ? p[projectedYBottom]\n : p.y,\n [projectedX]:\n p[whichPointsX] !== undefined\n ? p[whichPointsX]\n : p[projectedXMiddle] !== undefined\n ? p[projectedXMiddle]\n : p[projectedXBottom] !== undefined\n ? p[projectedXBottom]\n : p.y\n })\n })\n })\n }\n }\n\n if (summaries) {\n projectedSummaries = projectSummaryData({\n data: summaries,\n summaryDataAccessor,\n xAccessor,\n yAccessor\n })\n\n projectedSummaries.forEach((d) => {\n const baseData = d._baseData\n\n if (d._xyfCoordinates.length > 0 && d._xyfCoordinates[0][0][0]) {\n d._xyfCoordinates[0].forEach((multi) => {\n if (Array.isArray(multi)) {\n multi\n .map((p, q) =>\n Object.assign({ parentSummary: d }, baseData[q], {\n [projectedX]: p[0],\n [projectedY]: p[1]\n })\n )\n .forEach((e) => {\n if (showSummaryPoints) {\n projectedPoints.push({\n x: 0,\n ...e,\n [projectedY]:\n e[projectedYTop] || e[projectedYBottom] || e[projectedY]\n })\n }\n fullDataset.push({ x: 0, y: 0, ...e })\n })\n }\n })\n } else if (d._xyfCoordinates.length > 0) {\n if (Array.isArray(d._xyfCoordinates)) {\n const coordArray: [number, number][] = d._xyfCoordinates as [\n number,\n number\n ][]\n coordArray\n .map((p, q) => ({\n parentSummary: d,\n ...baseData[q],\n [projectedX]: p[0],\n [projectedY]: p[1]\n }))\n .forEach((e) => {\n if (showSummaryPoints) {\n projectedPoints.push({\n x: 0,\n ...e,\n [projectedY]:\n e[projectedYTop] || e[projectedYBottom] || e[projectedY]\n })\n }\n fullDataset.push({ x: 0, y: 0, ...e })\n })\n }\n }\n })\n }\n\n let suitableXAnnotations = []\n let suitableYAnnotations = []\n\n if (\n xExtent &&\n !Array.isArray(xExtent) &&\n xExtent.includeAnnotations === true\n ) {\n xAccessor.forEach((actualXAccessor) => {\n annotations.forEach((annotation, annotationIndex) => {\n const x = actualXAccessor(annotation, annotationIndex)\n if (isFinite(x)) {\n suitableXAnnotations.push({\n [projectedX]: x\n })\n }\n })\n })\n }\n\n if (\n yExtent &&\n !Array.isArray(yExtent) &&\n yExtent.includeAnnotations === true\n ) {\n yAccessor.forEach((actualYAccessor) => {\n annotations.forEach((annotation, annotationIndex) => {\n const y = actualYAccessor(annotation, annotationIndex)\n if (isFinite(y)) {\n suitableYAnnotations.push({\n [projectedY]: y\n })\n }\n })\n })\n }\n\n // Single-pass extent calculation over fullDataset + annotations\n let xMinVal: number | undefined\n let xMaxVal: number | undefined\n let yMinVal: number | undefined\n let yMaxVal: number | undefined\n\n for (const d of fullDataset) {\n const xLo = d[projectedXBottom] === undefined\n ? d[projectedX]\n : Math.min(d[projectedXTop], d[projectedXBottom])\n const xHi = d[projectedXTop] === undefined\n ? d[projectedX]\n : Math.max(d[projectedXBottom], d[projectedXTop])\n const yLo = d[projectedYBottom] === undefined\n ? d[projectedY]\n : Math.min(d[projectedYTop], d[projectedYBottom])\n const yHi = d[projectedYTop] === undefined\n ? d[projectedY]\n : Math.max(d[projectedYBottom], d[projectedYTop])\n\n if (xLo !== undefined && (xMinVal === undefined || xLo < xMinVal)) xMinVal = xLo\n if (xHi !== undefined && (xMaxVal === undefined || xHi > xMaxVal)) xMaxVal = xHi\n if (yLo !== undefined && (yMinVal === undefined || yLo < yMinVal)) yMinVal = yLo\n if (yHi !== undefined && (yMaxVal === undefined || yHi > yMaxVal)) yMaxVal = yHi\n }\n\n for (const d of suitableXAnnotations) {\n const v = d[projectedX]\n if (v !== undefined && (xMinVal === undefined || v < xMinVal)) xMinVal = v\n if (v !== undefined && (xMaxVal === undefined || v > xMaxVal)) xMaxVal = v\n }\n\n for (const d of suitableYAnnotations) {\n const v = d[projectedY]\n if (v !== undefined && (yMinVal === undefined || v < yMinVal)) yMinVal = v\n if (v !== undefined && (yMaxVal === undefined || v > yMaxVal)) yMaxVal = v\n }\n\n const calculatedXExtent = [xMinVal, xMaxVal]\n const calculatedYExtent = [yMinVal, yMaxVal]\n\n const actualXExtent: number[] = extentValue(xExtent)\n const actualYExtent: number[] = extentValue(yExtent)\n\n const xMin =\n actualXExtent && actualXExtent[0] !== undefined\n ? actualXExtent[0]\n : calculatedXExtent[0]\n const xMax =\n actualXExtent && actualXExtent[1] !== undefined\n ? actualXExtent[1]\n : calculatedXExtent[1]\n\n const yMin =\n actualYExtent && actualYExtent[0] !== undefined\n ? actualYExtent[0]\n : calculatedYExtent[0]\n const yMax =\n actualYExtent && actualYExtent[1] !== undefined\n ? actualYExtent[1]\n : calculatedYExtent[1]\n\n let finalYExtent = [yMin, yMax]\n let finalXExtent = [xMin, xMax]\n\n if (invertX && !(actualXExtent && actualXExtent.length === 2)) {\n finalXExtent = [finalXExtent[1], finalXExtent[0]]\n }\n\n if (\n (lineType.type === \"bumpline\" || invertY) &&\n !(actualYExtent && actualYExtent.length === 2)\n ) {\n finalYExtent = [finalYExtent[1], finalYExtent[0]]\n }\n\n if (summaryType.type && summaryType.type === \"contour\") {\n projectedSummaries = contouring({\n summaryType,\n data: projectedSummaries,\n finalXExtent,\n finalYExtent\n })\n } else if (summaryType.type && summaryType.type === \"linebounds\") {\n projectedSummaries = lineBounding({\n summaryType,\n data: projectedSummaries,\n defined\n })\n } else if (summaryType.type && summaryType.type === \"hexbin\") {\n projectedSummaries = hexbinning({\n summaryType,\n data: projectedSummaries[0],\n processedData: summaries && !!summaries[0].processedData,\n preprocess: false,\n finalXExtent,\n finalYExtent,\n size,\n margin,\n styleFn: summaryStyleFn,\n classFn: summaryClassFn,\n renderFn: summaryRenderModeFn,\n chartSize\n }) as unknown as ProjectedSummary[]\n\n fullDataset = rebuildFullDatasetWithSummaries(fullDataset, projectedSummaries)\n } else if (summaryType.type && summaryType.type === \"heatmap\") {\n projectedSummaries = heatmapping({\n summaryType,\n data: projectedSummaries[0],\n processedData: summaries && !!summaries[0].processedData,\n preprocess: false,\n finalXExtent,\n finalYExtent,\n size,\n margin,\n styleFn: summaryStyleFn,\n classFn: summaryClassFn,\n renderFn: summaryRenderModeFn,\n chartSize\n }) as unknown as ProjectedSummary[]\n\n fullDataset = rebuildFullDatasetWithSummaries(fullDataset, projectedSummaries)\n } else if (summaryType.type && summaryType.type === \"trendline\") {\n projectedSummaries = trendlining({\n summaryType,\n data: projectedSummaries[0],\n preprocess: summaries && !!summaries[0].processedData,\n finalXExtent\n })\n\n fullDataset = rebuildFullDatasetWithSummaries(fullDataset, projectedSummaries)\n }\n\n if (filterRenderedLines) {\n projectedLines = projectedLines.filter(filterRenderedLines)\n fullDataset = fullDataset.filter((d: ProjectedPoint, i) => {\n return !d.parentLine || filterRenderedLines(d.parentLine, i, [])\n })\n }\n if (filterRenderedPoints) {\n fullDataset = fullDataset.filter(filterRenderedPoints)\n }\n if (filterRenderedSummaries) {\n projectedSummaries = projectedSummaries.filter(filterRenderedSummaries)\n fullDataset = fullDataset.filter((d: ProjectedPoint, i) => {\n return !d.parentSummary || filterRenderedSummaries(d.parentSummary, i, [])\n })\n }\n\n return {\n xExtent: finalXExtent,\n yExtent: finalYExtent,\n projectedLines,\n projectedPoints,\n projectedSummaries,\n fullDataset,\n calculatedXExtent,\n calculatedYExtent\n }\n}\n\nconst differenceCatch = (olineType, data) => {\n if (\n !builtInTransformations[olineType] ||\n (olineType === \"difference\" && data.length !== 2)\n ) {\n return \"line\"\n }\n return olineType\n}\n\nfunction lineTransformation(lineType, options) {\n return (data) =>\n builtInTransformations[differenceCatch(lineType.type, data)]({\n ...lineType,\n ...options,\n data\n })\n}\n","import * as React from \"react\"\n\nimport { drawAreaConnector } from \"../svg/SvgHelper\"\nimport Axis from \"../Axis\"\nimport { AxisProps } from \"../types/annotationTypes\"\n\nimport {\n boxplotRenderFn,\n contourRenderFn,\n bucketizedRenderingFn,\n ckBinsRenderFn,\n orFrameSummaryRenderer\n} from \"./summaryLayouts\"\nimport {\n axisPieces,\n axisLines,\n baselineGenerator\n} from \"../visualizationLayerBehavior/axis\"\n\nimport {\n MarginType,\n ProjectionTypes,\n accessorType\n} from \"../types/generalTypes\"\n\nimport { scaleLinear, ScaleLinear } from \"d3-scale\"\n\nconst extent = (inputArray) =>\n inputArray.reduce(\n (p, c) => {\n return [Math.min(c, p[0]), Math.max(c, p[1])]\n },\n [Infinity, -Infinity]\n )\n\nexport type TitleType =\n | string\n | Element\n | { title?: string | Element; orient?: string }\n\ntype PieceType = { type: string; innerRadius?: number }\n\ntype SummaryType = { type: string }\n\ntype CalculateMarginTypes = {\n margin?: number | object\n axes?: Array<AxisProps>\n title: TitleType\n oLabel?: boolean | Function | { label?: boolean | Function; orient?: string; padding?: number }\n projection?: ProjectionTypes\n size?: number[]\n}\n\ntype AdjustedPositionSizeTypes = {\n size: Array<number>\n position?: Array<number>\n margin: MarginType\n projection?: ProjectionTypes\n}\n\ntype ORFrameConnectionRendererTypes = {\n type: { type: Function }\n data: { keyedData: Record<string, any>; oExtent: string[] }\n renderMode: Function\n eventListenersGenerator: Function\n styleFn: Function\n classFn: Function\n projection: ProjectionTypes\n canvasRender: Function\n canvasDrawing: Array<object>\n pieceType: PieceType\n}\n\ntype ORFrameAxisGeneratorTypes = {\n projection: ProjectionTypes\n axis?: Array<AxisProps>\n adjustedSize: Array<number>\n size: Array<number>\n rScale: ScaleLinear<number, number>\n rScaleType: ScaleLinear<number, number>\n pieceType: PieceType\n rExtent: Array<number>\n data: Array<object>\n maxColumnValues?: number\n xyData: Array<{ value: number; data: object }>\n margin: MarginType\n thresholds?: number[]\n}\n\nconst findActualTitle = (rawTitle) => {\n let title = null\n let orient = \"top\"\n if (typeof rawTitle === \"string\") {\n title = rawTitle\n } else if (\"title\" in rawTitle) {\n title = rawTitle.title\n orient = rawTitle.orient || \"top\"\n } else {\n title = rawTitle\n }\n\n return { orient, title }\n}\n\nfunction roundToTenth(number: number) {\n return Math.round(number * 10) / 10\n}\n\nexport const circlePath = (cx: number, cy: number, r: number) =>\n `${[\n \"M\",\n roundToTenth(cx - r),\n roundToTenth(cy),\n \"a\",\n r,\n r,\n 0,\n 1,\n 0,\n r * 2,\n 0,\n \"a\",\n r,\n r,\n 0,\n 1,\n 0,\n -(r * 2),\n 0\n ].join(\" \")}Z`\n\nexport const drawMarginPath = ({\n margin,\n size,\n inset = 0\n}: {\n margin: MarginType\n size: Array<number>\n inset: number\n}) => {\n const iSize = [size[0] - inset, size[1] - inset]\n return `M0,0 h${size[0]} v${size[1]} h-${size[0]}Z M${margin.left - inset},${\n margin.top - inset\n } v${size[1] + inset * 2 - margin.top - margin.bottom} h${\n iSize[0] + inset * 3 - margin.left - margin.right\n } v-${iSize[1] + inset * 3 - margin.top - margin.bottom}Z`\n}\n\nexport const calculateMargin = ({\n margin,\n axes,\n title: rawTitle,\n oLabel,\n projection,\n size\n}: CalculateMarginTypes): MarginType => {\n if (margin !== undefined) {\n if (typeof margin === \"function\") {\n margin = margin({ size })\n }\n if (typeof margin !== \"object\") {\n return { top: margin, bottom: margin, left: margin, right: margin }\n } else if (typeof margin === \"object\") {\n return Object.assign({ top: 0, bottom: 0, left: 0, right: 0 }, margin)\n }\n }\n const finalMargin = { top: 0, bottom: 0, left: 0, right: 0 }\n\n let orient = \"left\"\n\n if (axes && projection !== \"radial\") {\n axes.forEach((axisObj) => {\n const axisObjAdditionMargin = axisObj.label ? 60 : 50\n orient = axisObj.orient\n finalMargin[orient] = axisObjAdditionMargin\n })\n }\n\n const { title, orient: titleOrient } = findActualTitle(rawTitle)\n\n if (title && !(typeof title === \"string\" && title.length === 0)) {\n finalMargin[titleOrient] += 40\n }\n\n if (oLabel && projection !== \"radial\") {\n if (orient === \"bottom\" || orient === \"top\") {\n finalMargin.left += 50\n } else {\n finalMargin.bottom += 50\n }\n }\n return finalMargin\n}\n\ntype ObjectifyType = {\n type?: string | Function\n}\n\nexport function objectifyType(\n type?: string | Function | ObjectifyType\n): ObjectifyType {\n if (type instanceof Function || typeof type === \"string\") {\n return { type: type }\n } else if (type === undefined) {\n return {}\n }\n return type\n}\n\nexport function generateOrdinalFrameEventListeners(\n customHoverBehavior: Function,\n customClickBehavior: Function\n) {\n let eventListenersGenerator: (\n d?: object,\n i?: number\n ) => {\n onMouseEnter?: (e) => void\n onMouseLeave?: (e) => void\n onClick?: (e) => void\n } = () => ({})\n\n if (customHoverBehavior || customClickBehavior) {\n eventListenersGenerator = (d: object, i: number) => ({\n onMouseEnter: customHoverBehavior\n ? (e): void => customHoverBehavior(d, i, e)\n : undefined,\n onMouseLeave: customHoverBehavior\n ? (e): void => customHoverBehavior(undefined, undefined, e)\n : undefined,\n onClick: customClickBehavior\n ? (e): void => customClickBehavior(d, i, e)\n : undefined\n })\n }\n return eventListenersGenerator\n}\n\nexport function keyAndObjectifyBarData({\n data,\n renderKey = (d?: object | number, i?: number) => i,\n oAccessor,\n rAccessor: baseRAccessor,\n originalRAccessor,\n originalOAccessor,\n multiAxis = false\n}: {\n data: Array<object | number>\n renderKey: Function\n oAccessor: Array<Function>\n rAccessor: Array<(d: number | object, i?: number) => number>\n multiAxis?: boolean\n originalOAccessor: Array<string | Function>\n originalRAccessor: Array<string | Function>\n}): { allData: Array<object>; multiExtents?: Array<Array<number>> } {\n let rAccessor\n let multiExtents\n if (multiAxis && baseRAccessor.length > 1) {\n let minNegative = Infinity\n multiExtents = baseRAccessor.map((accessor) => {\n const basicExtent = extent(data.map(accessor))\n minNegative = Math.min(basicExtent[0] / basicExtent[1], minNegative)\n return basicExtent\n })\n const rScales = multiExtents.map((ext) => {\n let range = [0, 1]\n let adjustedExtent = ext\n\n if (ext[0] < 0 && ext[1] > 0) {\n range[0] = minNegative\n adjustedExtent[0] = adjustedExtent[1] * minNegative\n } else if (ext[0] < 0 && ext[1] < 0) {\n adjustedExtent[1] = 0\n range = [-1, 0]\n } else {\n adjustedExtent[0] = 0\n }\n return scaleLinear().domain(ext).range(range)\n })\n rAccessor = rScales.map((scale, i) => (d) => {\n return scale(baseRAccessor[i](d))\n })\n } else {\n rAccessor = baseRAccessor\n }\n const decoratedData: {\n value: number\n renderKey: string\n data: object\n rIndex: number\n rName: string\n oIndex: number\n oName: string\n column: string\n }[] = []\n oAccessor.forEach((actualOAccessor, oIndex) => {\n rAccessor.forEach((actualRAccessor, rIndex) => {\n ;(data || []).forEach((d) => {\n const baseAppliedKey = renderKey(d, decoratedData.length)\n const appliedKey =\n (baseAppliedKey !== undefined &&\n baseAppliedKey.toString &&\n baseAppliedKey.toString()) ||\n baseAppliedKey\n\n const originalR = originalRAccessor[rIndex]\n const originalO = originalOAccessor[oIndex]\n const rName =\n typeof originalR === \"string\" ? originalR : `function-${rIndex}`\n const oName =\n typeof originalO === \"string\" ? originalO : `function-${oIndex}`\n\n if (typeof d !== \"object\") {\n const expandedData = { value: d, renderKey: appliedKey }\n const value = actualRAccessor(expandedData)\n decoratedData.push({\n data: expandedData,\n value,\n rIndex,\n rName,\n oIndex,\n oName,\n column: appliedKey,\n renderKey: appliedKey\n })\n } else {\n const value = actualRAccessor(d)\n const column = actualOAccessor(d)\n decoratedData.push({\n renderKey: appliedKey,\n data: d,\n rIndex,\n rName,\n oIndex,\n oName,\n value,\n column: column && column.toString ? column.toString() : column\n })\n }\n })\n })\n })\n return { allData: decoratedData, multiExtents }\n}\n\nexport function adjustedPositionSize({\n size = [500, 500],\n position = [0, 0],\n margin,\n projection\n}: AdjustedPositionSizeTypes) {\n const heightAdjust = margin.top + margin.bottom\n const widthAdjust = margin.left + margin.right\n\n const adjustedPosition = [position[0], position[1]]\n let adjustedSize = [size[0] - widthAdjust, size[1] - heightAdjust]\n if (projection === \"radial\") {\n const minSize = Math.min(adjustedSize[0], adjustedSize[1])\n adjustedSize = [minSize, minSize]\n }\n\n return { adjustedPosition, adjustedSize }\n}\n\nexport function generateFrameTitle({\n title: rawTitle = { title: \"\", orient: \"top\" },\n size\n}: {\n title: TitleType\n size: Array<number>\n}) {\n let finalTitle = null\n\n const { title, orient } = findActualTitle(rawTitle)\n\n let x = 0,\n y = 0,\n transform\n switch (orient) {\n case \"top\":\n x = size[0] / 2\n y = 25\n break\n case \"bottom\":\n x = size[0] / 2\n y = size[1] - 25\n break\n case \"left\":\n x = 25\n y = size[1] / 2\n transform = \"rotate(-90)\"\n break\n case \"right\":\n x = size[0] - 25\n y = size[1] / 2\n transform = \"rotate(90)\"\n\n break\n }\n const gTransform = `translate(${x},${y})`\n if (typeof title === \"string\" && title.length > 0) {\n finalTitle = (\n <g transform={gTransform}>\n <text\n className={\"frame-title\"}\n transform={transform}\n style={{ textAnchor: \"middle\", pointerEvents: \"none\" }}\n >\n {title}\n </text>\n </g>\n )\n } else if (title) {\n //assume if defined then its an svg mark of some sort\n finalTitle = <g transform={gTransform}>{title}</g>\n }\n return finalTitle\n}\n\nexport function orFrameConnectionRenderer({\n type,\n data,\n renderMode,\n eventListenersGenerator,\n styleFn,\n classFn,\n projection,\n canvasRender,\n canvasDrawing,\n pieceType\n}: ORFrameConnectionRendererTypes) {\n if (!type.type) {\n return null\n }\n const renderedConnectorMarks = []\n const radarMap = new Map()\n\n const { keyedData, oExtent } = data\n\n if (typeof type.type === \"function\") {\n const connectionRule = type.type\n const keys = oExtent\n\n oExtent.forEach((key, pieceArrayI) => {\n const pieceArray = keyedData[key]\n const nextColumn = keyedData[keys[pieceArrayI + 1]]\n if (nextColumn) {\n const matchArray = nextColumn.map((d, i) =>\n connectionRule({ ...d.piece, ...d.piece.data }, i)\n )\n pieceArray.forEach((piece, pieceI) => {\n const thisConnectionPiece = connectionRule(\n { ...piece.piece, ...piece.piece.data },\n pieceI\n )\n const targetMatch = connectionRule(\n { ...piece.piece, ...piece.piece.data },\n pieceI\n )\n\n const matchingPieceIndex =\n targetMatch !== undefined &&\n targetMatch !== false &&\n matchArray.indexOf(targetMatch)\n if (\n thisConnectionPiece !== undefined &&\n thisConnectionPiece !== null &&\n matchingPieceIndex !== false &&\n matchingPieceIndex !== -1\n ) {\n const matchingPiece = nextColumn[matchingPieceIndex]\n let markD\n if (projection === \"radial\" && pieceType.type === \"point\") {\n if (!radarMap.get(piece)) {\n radarMap.set(piece, [piece])\n }\n const thisRadar = radarMap.get(piece)\n if (thisRadar) {\n thisRadar.push(matchingPiece)\n radarMap.set(matchingPiece, thisRadar)\n radarMap.delete(piece)\n }\n } else {\n const { xy } = piece\n const { xy: mxy } = matchingPiece\n const { x, y, height = 1, width = 1 } = xy\n const {\n x: mx,\n y: my,\n height: mheight = 1,\n width: mwidth = 1\n } = mxy\n if (projection === \"vertical\") {\n markD = drawAreaConnector({\n x1: x + width,\n x2: mx,\n y1: y,\n y2: my,\n sizeX1: 0,\n sizeX2: 0,\n sizeY1: height,\n sizeY2: mheight\n })\n } else if (projection === \"horizontal\") {\n const { value } = piece.piece\n const { value: mvalue } = matchingPiece.piece\n const x1 = value >= 0 ? x - width : piece.piece.bottom - width\n const x2 =\n mvalue >= 0\n ? mx - mwidth\n : matchingPiece.piece.bottom - mwidth\n markD = drawAreaConnector({\n x1,\n x2,\n y1: y + height,\n y2: my,\n sizeX1: width,\n sizeX2: mwidth,\n sizeY1: 0,\n sizeY2: 0\n })\n } else if (projection === \"radial\") {\n markD = drawAreaConnector({\n x1: x,\n x2: mx,\n y1: y + height,\n y2: my,\n sizeX1: width,\n sizeX2: mwidth,\n sizeY1: 0,\n sizeY2: 0\n })\n }\n const renderValue = renderMode && renderMode(piece.piece, pieceI)\n const source = { ...piece.piece.data, ...piece.piece.data }\n const target = {\n ...matchingPiece.piece,\n ...matchingPiece.piece.data\n }\n const calculatedStyle = styleFn({\n source,\n target\n })\n\n const eventListeners = eventListenersGenerator(\n { source, target },\n pieceI\n )\n if (canvasRender && canvasRender(piece.piece) === true) {\n const canvasConnector = {\n baseClass: \"xyframe-line\",\n tx: 0,\n ty: 0,\n d: {\n source,\n target\n },\n markProps: { d: markD, markType: \"path\" },\n styleFn: styleFn,\n renderFn: renderMode,\n classFn\n }\n canvasDrawing.push(canvasConnector)\n } else {\n renderedConnectorMarks.push(\n <path\n {...eventListeners}\n d={markD}\n className={classFn ? classFn(piece.piece.data, pieceI) : \"\"}\n key={`connector${piece.piece.renderKey}`}\n {...calculatedStyle}\n style={calculatedStyle}\n />\n )\n }\n }\n }\n })\n }\n })\n\n if (radarMap.size > 0) {\n for (const ring of radarMap.values()) {\n const ringPiece = { ...ring[0].piece, ...ring[0].piece.data }\n const markD = `M${ring.map((d) => `${d.xy.x},${d.xy.y}`).join(\"L\")}Z`\n if (canvasRender && canvasRender(ringPiece)) {\n const canvasRadar = {\n baseClass: \"ordinal-radar\",\n tx: 0,\n ty: 0,\n d: {\n source: ringPiece\n },\n markProps: { d: markD, markType: \"path\" },\n styleFn: styleFn,\n renderFn: renderMode,\n classFn\n }\n canvasDrawing.push(canvasRadar)\n } else {\n const style = styleFn({\n source: ringPiece\n })\n renderedConnectorMarks.push(\n <path\n d={markD}\n className={classFn ? classFn(ringPiece) : \"\"}\n key={`ordinal-ring-${ringPiece.renderKey}`}\n {...style}\n style={style}\n />\n )\n }\n }\n }\n } else if (type.type) {\n console.error(\n `Invalid connectorType - Must be a function that takes a data point and determines if it is connected to a data point in the next column`\n )\n }\n return renderedConnectorMarks\n}\n\nexport const orFrameAxisGenerator = ({\n projection,\n axis,\n adjustedSize,\n size,\n rScale,\n rScaleType,\n pieceType,\n rExtent,\n data,\n maxColumnValues = 1,\n xyData,\n margin,\n thresholds\n}: ORFrameAxisGeneratorTypes) => {\n if (!axis) return { axis: undefined, axesTickLines: undefined }\n let generatedAxis: Array<JSX.Element>, axesTickLines: Array<Object>\n if (projection !== \"radial\" && axis) {\n axesTickLines = []\n const axisPosition = [0, 0]\n\n generatedAxis = axis.map((d, i) => {\n let axisClassname = d.className || \"\"\n let tickValues\n const axisDomain = d.extentOverride ? d.extentOverride : rScale.domain()\n\n const leftRight = [\"left\", \"right\"]\n\n const axisScale =\n (leftRight.indexOf(d.orient) === -1 && projection !== \"vertical\") ||\n (leftRight.indexOf(d.orient) !== -1 && projection !== \"horizontal\")\n ? rScaleType.domain(axisDomain)\n : rScaleType.domain([0, maxColumnValues])\n\n const orient = d.orient\n const axisRange =\n (leftRight.indexOf(d.orient) === -1 && projection !== \"vertical\") ||\n (leftRight.indexOf(d.orient) !== -1 && projection !== \"horizontal\")\n ? rScale.range()\n : [0, projection === \"vertical\" ? adjustedSize[0] : adjustedSize[1]]\n\n if (orient === \"right\") {\n axisScale.range(axisRange.reverse())\n axisClassname += \" right y\"\n } else if (orient === \"left\") {\n axisClassname += \" left y\"\n axisScale.range(axisRange.reverse())\n } else if (orient === \"top\") {\n axisClassname += \" top x\"\n axisScale.range(axisRange)\n } else if (orient === \"bottom\") {\n axisClassname += \" bottom x\"\n axisScale.range(axisRange)\n }\n\n if (d.tickValues && Array.isArray(d.tickValues)) {\n tickValues = d.tickValues\n } else if (d.tickValues instanceof Function) {\n //otherwise assume a function\n tickValues = d.tickValues(data, size, rScale)\n } else if (!d.tickValues && thresholds) {\n tickValues = thresholds.map((d) => rScale.invert(d))\n }\n const axisParts = axisPieces({\n padding: d.padding,\n tickValues,\n scale: axisScale,\n ticks: d.ticks,\n orient,\n size: adjustedSize,\n footer: d.footer,\n tickSize: d.tickSize,\n jaggedBase: d.jaggedBase\n })\n const axisTickLines = axisLines({\n className: d.className,\n axisParts,\n orient,\n tickLineGenerator: d.tickLineGenerator,\n jaggedBase: d.jaggedBase,\n scale: axisScale\n })\n\n axesTickLines.push(axisTickLines)\n if (d.baseline === \"under\") {\n axesTickLines.push(\n baselineGenerator(d.orient, adjustedSize, d.className)\n )\n }\n\n const marginalSummaryType =\n typeof d.marginalSummaryType === \"string\"\n ? { type: d.marginalSummaryType }\n : d.marginalSummaryType\n\n return (\n <Axis\n {...d}\n key={d.key || `orframe-axis-${i}`}\n axisParts={axisParts}\n orient={orient}\n size={adjustedSize}\n position={axisPosition}\n tickValues={tickValues}\n scale={axisScale}\n className={axisClassname}\n marginalSummaryType={marginalSummaryType}\n margin={margin}\n xyPoints={xyData.map((d) => ({\n x: projection === \"vertical\" ? 0 : d.value,\n y: projection === \"vertical\" ? d.value : 0,\n data: d.data\n }))}\n />\n )\n })\n } else if (projection === \"radial\" && axis) {\n const { innerRadius = 0 } = pieceType\n\n const ticks = []\n axis.forEach((axisObj) => {\n const {\n tickValues: baseTickValues = rScale.ticks(\n Math.max(2, (adjustedSize[0] / 2 - innerRadius) / 50)\n ),\n label,\n tickFormat = (d) => d\n } = axisObj\n\n const tickScale = rScaleType\n .domain(rExtent)\n .range([innerRadius, adjustedSize[0] / 2])\n\n const tickValues =\n baseTickValues instanceof Function\n ? baseTickValues({\n orient: axisObj.orient\n })\n : baseTickValues\n tickValues.forEach((t, i) => {\n const tickSize = tickScale(t)\n if (!(innerRadius === 0 && t === 0)) {\n let axisLabel\n let ref = \"\"\n if (label && i === tickValues.length - 1) {\n const labelSettings =\n typeof label === \"string\"\n ? { name: label, locationDistance: 15 }\n : label\n const { locationDistance = 15 } = labelSettings\n ref = `${Math.random().toString()} `\n axisLabel = (\n <g\n className=\"axis-label radial\"\n transform={`translate(0,${locationDistance})`}\n >\n <text textAnchor=\"middle\">\n <textPath\n startOffset={tickSize * Math.PI * 0.5}\n xlinkHref={`#${ref}`}\n >\n {label.name}\n </textPath>\n </text>\n </g>\n )\n }\n ticks.push(\n <g\n key={`orframe-radial-axis-element-${t}`}\n className=\"axis axis-label axis-tick radial\"\n transform={`translate(0,0)`}\n >\n <path\n id={ref}\n d={circlePath(0, 0, tickSize)}\n r={tickSize}\n stroke=\"gray\"\n fill=\"none\"\n />\n <text y={-tickSize + 5} textAnchor=\"middle\">\n {tickFormat(t)}\n </text>\n {axisLabel}\n </g>\n )\n }\n return undefined\n })\n })\n\n generatedAxis = [\n <g\n key={axis[0].key || `orframe-radial-axis-container`}\n className=\"axis-labels\"\n transform={`translate(${adjustedSize[0] / 2},${adjustedSize[1] / 2})`}\n >\n {ticks}\n </g>\n ]\n }\n\n return { axis: generatedAxis, axesTickLines }\n}\n\nexport const canvasEvent = (canvasContext, overlayRegions, canvasMap, e) => {\n const interactionContext = canvasContext.getContext(\"2d\", { willReadFrequently: true })\n const hoverPoint = interactionContext.getImageData(e.offsetX, e.offsetY, 1, 1)\n\n const mostCommonRGB = `rgba(${hoverPoint.data[0]},${hoverPoint.data[1]},${hoverPoint.data[2]},255)`\n\n let overlay: React.ReactElement = overlayRegions[canvasMap.get(mostCommonRGB)]\n\n if (!overlay) {\n const hoverArea = interactionContext.getImageData(\n e.offsetX - 2,\n e.offsetY - 2,\n 5,\n 5\n )\n let x = 0\n\n while (!overlay && x < 100) {\n overlay =\n overlayRegions[\n canvasMap.get(\n `rgba(${hoverArea.data[x]},${hoverArea.data[x + 1]},${\n hoverArea.data[x + 2]\n },255)`\n )\n ]\n x += 4\n }\n }\n\n return overlay\n}\n","import * as React from \"react\"\n\nimport { scaleLinear, ScaleLinear } from \"d3-scale\"\n\nimport Axis from \"../Axis\"\n\nimport { XYFrameProps, XYFrameState } from \"../types/xyTypes\"\n\nimport {\n axisPieces,\n axisLines,\n baselineGenerator\n} from \"../visualizationLayerBehavior/axis\"\n\nimport {\n calculateDataExtent\n} from \"../data/dataFunctions\"\n\nimport { XYPipelineCache } from \"../data/xyPipelineCache\"\n\n\nimport {\n createPoints,\n createLines,\n createSummaries\n} from \"../visualizationLayerBehavior/general\"\n\nimport {\n objectifyType\n} from \"../svg/frameFunctions\"\n\nimport {\n ProjectedSummary,\n LineTypeSettings,\n SummaryTypeSettings\n} from \"../types/generalTypes\"\n\nconst screenScales = ({\n xExtent,\n yExtent,\n adjustedSize,\n xScaleType,\n yScaleType\n}: {\n xExtent: number[]\n yExtent: number[]\n adjustedSize: number[]\n xScaleType: ScaleLinear<number, number>\n yScaleType: ScaleLinear<number, number>\n}) => {\n const xDomain = [0, adjustedSize[0]]\n const yDomain = [adjustedSize[1], 0]\n\n const xScale = xScaleType\n const yScale = yScaleType\n\n if (xScaleType.domain) {\n xScaleType.domain(xExtent)\n }\n if (yScaleType.domain) {\n yScaleType.domain(yExtent)\n }\n xScaleType.range(xDomain)\n yScaleType.range(yDomain)\n\n return { xScale, yScale }\n}\n\nconst naturalLanguageLineType = {\n line: { items: \"line\", chart: \"line chart\" },\n area: { items: \"summary\", chart: \"summary chart\" },\n summary: { items: \"summary\", chart: \"summary chart\" },\n cumulative: { items: \"line\", chart: \"cumulative chart\" },\n \"cumulative-reverse\": { items: \"line\", chart: \"cumulative chart\" },\n linepercent: { items: \"line\", chart: \"line chart\" },\n stackedarea: { items: \"stacked area\", chart: \"stacked area chart\" },\n \"stackedarea-invert\": { items: \"stacked area\", chart: \"stacked area chart\" },\n stackedpercent: { items: \"stacked area\", chart: \"stacked area chart\" },\n \"stackedpercent-invert\": {\n items: \"stacked area\",\n chart: \"stacked area chart\"\n },\n bumparea: { items: \"ranked area\", chart: \"ranked area chart\" },\n \"bumparea-invert\": { items: \"ranked area\", chart: \"ranked area chart\" },\n bumpline: { items: \"ranked line\", chart: \"ranked line chart\" },\n difference: {\n items: \"line\",\n chart: \"difference chart\"\n }\n}\n\nexport const calculateXYFrame = (\n currentProps: XYFrameProps,\n prevState: XYFrameState,\n updateData: boolean,\n cache: XYPipelineCache\n) => {\n const {\n legend,\n lines,\n lineClass,\n pointStyle,\n pointRenderMode,\n pointClass,\n summaryClass,\n canvasLines,\n canvasPoints,\n canvasSummaries,\n defined,\n size,\n renderKey,\n lineType,\n summaryType,\n customLineMark,\n customPointMark,\n customSummaryMark,\n summaryStyle,\n summaryRenderMode,\n lineStyle,\n lineRenderMode,\n xExtent: baseXExtent,\n yExtent: baseYExtent,\n title,\n xScaleType: baseXScaleType = scaleLinear(),\n yScaleType: baseYScaleType = scaleLinear(),\n lineIDAccessor,\n invertX,\n invertY,\n showLinePoints,\n showSummaryPoints,\n points,\n lineDataAccessor,\n summaryDataAccessor,\n yAccessor,\n xAccessor,\n useSummariesAsInteractionLayer,\n filterRenderedLines,\n filterRenderedSummaries,\n filterRenderedPoints,\n annotations\n } = currentProps\n let {\n projectedLines,\n projectedPoints,\n projectedSummaries,\n summaries,\n fullDataset\n } = currentProps\n\n if (summaryType && points && !summaries) {\n summaries = [{ coordinates: points }]\n } else if (\n summaryType &&\n summaryType.type === \"linebounds\" &&\n lines &&\n !summaries\n ) {\n summaries = lines\n }\n\n const castXScaleType = baseXScaleType as unknown as Function\n\n const xScaleType = baseXScaleType.domain ? baseXScaleType : castXScaleType()\n\n const castYScaleType = baseYScaleType as unknown as Function\n\n const yScaleType = baseYScaleType.domain ? baseYScaleType : castYScaleType()\n\n const cachedAccessors = cache.annotatedSettings(\n xAccessor, yAccessor, summaryDataAccessor, lineDataAccessor,\n renderKey, lineType, summaryType, lineIDAccessor\n )\n\n const annotatedSettings = {\n ...cachedAccessors,\n lineType: objectifyType(lineType) as LineTypeSettings,\n summaryType: objectifyType(summaryType) as SummaryTypeSettings,\n summaries:\n !summaries || (Array.isArray(summaries) && summaries.length === 0)\n ? undefined\n : !Array.isArray(summaries)\n ? [summaries]\n : !summaryDataAccessor && !summaries[0].coordinates\n ? [{ coordinates: summaries }]\n : summaries,\n lines:\n !lines || (Array.isArray(lines) && lines.length === 0)\n ? undefined\n : !Array.isArray(lines)\n ? [lines]\n : !lineDataAccessor && !lines[0].coordinates\n ? [{ coordinates: lines }]\n : lines,\n title:\n typeof title === \"object\" &&\n !React.isValidElement(title) &&\n title !== null\n ? title\n : { title, orient: \"top\" },\n xExtent: Array.isArray(baseXExtent)\n ? baseXExtent\n : !baseXExtent\n ? undefined\n : baseXExtent.extent,\n yExtent: Array.isArray(baseYExtent)\n ? baseYExtent\n : !baseYExtent\n ? undefined\n : baseYExtent.extent\n }\n\n if (annotatedSettings.lineType.type === \"area\") {\n annotatedSettings.lineType.y1 = () => 0\n annotatedSettings.lineType.simpleLine = false\n }\n\n const { summaryStyleFn, summaryClassFn, summaryRenderModeFn } = cache.summaryStyleFns(\n summaryStyle, summaryClass, summaryRenderMode\n )\n\n const generatedAxes =\n currentProps.axes &&\n currentProps.axes.map((axisFnOrObject) =>\n typeof axisFnOrObject === \"function\"\n ? axisFnOrObject({ size: currentProps.size })\n : axisFnOrObject\n )\n\n const { margin, adjustedPosition, adjustedSize } = cache.marginCalc(\n currentProps.margin, generatedAxes, annotatedSettings.title, currentProps.size\n )\n\n let calculatedXExtent = [],\n calculatedYExtent = [],\n yExtent,\n xExtent,\n xExtentSettings,\n yExtentSettings\n\n if (typeof baseXExtent === \"object\") {\n xExtentSettings = baseXExtent\n } else {\n xExtentSettings = { extent: baseXExtent }\n }\n\n if (typeof baseYExtent === \"object\") {\n yExtentSettings = baseYExtent\n } else {\n yExtentSettings = { extent: baseYExtent }\n }\n\n let xScale, yScale\n\n if (\n updateData ||\n (currentProps.dataVersion &&\n currentProps.dataVersion !== prevState.dataVersion)\n ) {\n //This will always fire at this point because xExtent/yExtent are just defined up there so revisit this logic\n if (\n !xExtent ||\n !yExtent ||\n !fullDataset ||\n (!projectedLines && !projectedPoints && !projectedSummaries)\n ) {\n ;({\n xExtent,\n yExtent,\n projectedLines,\n projectedPoints,\n projectedSummaries,\n fullDataset,\n calculatedXExtent,\n calculatedYExtent\n } = calculateDataExtent({\n lineDataAccessor: annotatedSettings.lineDataAccessor,\n summaryDataAccessor: annotatedSettings.summaryDataAccessor,\n xAccessor: annotatedSettings.xAccessor,\n yAccessor: annotatedSettings.yAccessor,\n lineType: annotatedSettings.lineType,\n summaryType: annotatedSettings.summaryType,\n summaries: annotatedSettings.summaries,\n points,\n lines: annotatedSettings.lines,\n showLinePoints,\n showSummaryPoints,\n xExtent: baseXExtent,\n yExtent: baseYExtent,\n invertX,\n invertY,\n adjustedSize,\n margin,\n summaryStyleFn,\n summaryClassFn,\n summaryRenderModeFn,\n chartSize: size,\n xScaleType,\n yScaleType,\n defined,\n filterRenderedLines,\n filterRenderedSummaries,\n filterRenderedPoints,\n annotations\n }))\n }\n\n ;({ xScale, yScale } = screenScales({\n xExtent,\n yExtent,\n adjustedSize,\n xScaleType: xScaleType.copy(),\n yScaleType: yScaleType.copy()\n }))\n } else {\n ;({\n xExtent,\n yExtent,\n projectedLines,\n projectedPoints,\n projectedSummaries,\n fullDataset,\n calculatedXExtent,\n calculatedYExtent\n } = prevState)\n if (\n adjustedSize[0] === prevState.adjustedSize[0] &&\n adjustedSize[1] === prevState.adjustedSize[1]\n ) {\n xScale = prevState.xScale\n yScale = prevState.yScale\n } else {\n ;({ xScale, yScale } = screenScales({\n xExtent,\n yExtent,\n adjustedSize,\n xScaleType,\n yScaleType\n }))\n }\n }\n\n xExtent =\n Array.isArray(xExtentSettings.extent) && xExtentSettings.extent.length === 2\n ? xExtentSettings.extent\n : xExtent\n yExtent =\n Array.isArray(yExtentSettings.extent) && yExtentSettings.extent.length === 2\n ? yExtentSettings.extent\n : yExtent\n\n const canvasDrawing = []\n\n let axes\n let axesTickLines\n\n const existingBaselines = {}\n\n if (generatedAxes) {\n axesTickLines = []\n axes = generatedAxes.map((d, i) => {\n let axisClassname = d.className || \"\"\n axisClassname += \" axis\"\n let axisScale = yScale\n if (existingBaselines[d.orient]) {\n d.baseline = d.baseline || false\n }\n existingBaselines[d.orient] = true\n if (d.orient === \"top\" || d.orient === \"bottom\") {\n axisClassname += \" x\"\n axisScale = xScale\n } else {\n axisClassname += \" y\"\n }\n axisClassname += ` ${d.orient}`\n\n let tickValues\n if (d.tickValues && Array.isArray(d.tickValues)) {\n tickValues = d.tickValues\n } else if (d.tickValues instanceof Function) {\n //otherwise assume a function\n tickValues = d.tickValues(fullDataset, currentProps.size, axisScale)\n }\n const axisSize = [adjustedSize[0], adjustedSize[1]]\n\n const axisParts = axisPieces({\n padding: d.padding,\n tickValues,\n scale: axisScale,\n ticks: d.ticks,\n orient: d.orient,\n size: axisSize,\n footer: d.footer,\n tickSize: d.tickSize,\n jaggedBase: d.jaggedBase\n })\n const axisTickLines = (\n <g key={`axes-tick-lines-${i}`} className={`axis ${axisClassname}`}>\n {axisLines({\n axisParts,\n orient: d.orient,\n tickLineGenerator: d.tickLineGenerator,\n className: axisClassname,\n jaggedBase: d.jaggedBase,\n scale: axisScale,\n showOutboundTickLines: d.showOutboundTickLines\n })}\n {d.baseline === \"under\" &&\n baselineGenerator(d.orient, adjustedSize, d.className)}\n </g>\n )\n axesTickLines.push(axisTickLines)\n return (\n <Axis\n {...d}\n key={d.key || `axis-${i}`}\n annotationFunction={d.axisAnnotationFunction}\n axisParts={axisParts}\n size={axisSize}\n margin={margin}\n tickValues={tickValues}\n scale={axisScale}\n className={axisClassname}\n xyPoints={fullDataset}\n />\n )\n })\n }\n let legendSettings\n\n if (legend) {\n legendSettings = legend === true ? {} : legend\n if (projectedLines && !legendSettings.legendGroups) {\n const typeString = annotatedSettings.lineType.type\n const type =\n typeof typeString === \"string\" &&\n [\"stackedarea\", \"stackedpercent\", \"bumparea\"].indexOf(typeString) === -1\n ? \"line\"\n : \"fill\"\n const legendGroups = [\n {\n styleFn: currentProps.lineStyle,\n type,\n items: projectedLines.map((d) =>\n Object.assign({ label: annotatedSettings.lineIDAccessor(d) }, d)\n )\n }\n ]\n legendSettings.legendGroups = legendGroups\n }\n }\n const areaAnnotations = []\n\n if (annotatedSettings.summaryType.label && projectedSummaries) {\n projectedSummaries.forEach((d, i) => {\n if (d.bounds) {\n const bounds = Array.isArray(d.bounds) ? d.bounds : [d.bounds]\n bounds.forEach((labelBounds) => {\n const label =\n typeof annotatedSettings.summaryType.label === \"function\"\n ? annotatedSettings.summaryType.label(d)\n : annotatedSettings.summaryType.label\n if (label && label !== null) {\n const labelPosition = label.position || \"center\"\n const labelCenter = [\n xScale(labelBounds[labelPosition][0]),\n yScale(labelBounds[labelPosition][1])\n ]\n const labelContent = label.content || ((p) => p.value || p.id || i)\n\n areaAnnotations.push({\n x: labelCenter[0],\n y: labelCenter[1],\n dx: label.dx,\n dy: label.dy,\n className: label.className,\n type: label.type || \"callout\",\n note: label.note || { title: labelContent(d) },\n subject: label.subject || { text: labelContent(d) },\n connector: label.connector\n })\n }\n })\n }\n })\n } else if (\n annotatedSettings.summaryType.showSlope &&\n projectedSummaries &&\n projectedSummaries[0]\n ) {\n const firstSummary: ProjectedSummary & { value?: string; r2?: number } = projectedSummaries[0] as ProjectedSummary & { value?: string; r2?: number }\n\n const firstPoint = firstSummary._xyfCoordinates[0]\n const finalPoint =\n firstSummary._xyfCoordinates[firstSummary._xyfCoordinates.length - 1]\n\n areaAnnotations.push({\n x: firstPoint[0],\n y: firstPoint[1],\n x1: finalPoint[0],\n x2: finalPoint[1],\n type: \"trendline-annotation\",\n value: firstSummary.value,\n r2: firstSummary.r2\n })\n }\n\n const lineAriaLabel =\n annotatedSettings.lineType.type !== undefined &&\n typeof annotatedSettings.lineType.type === \"string\" &&\n naturalLanguageLineType[annotatedSettings.lineType.type]\n\n const xyFrameRender = {\n lines: {\n accessibleTransform: (data, i) => ({\n ...data[i].data[data[i].data.length - 1],\n type: \"frame-hover\"\n }),\n data: projectedLines,\n ...cache.lineStyleFns(lineStyle, lineClass, lineRenderMode, canvasLines),\n customMark: customLineMark,\n type: annotatedSettings.lineType,\n defined: defined,\n renderKeyFn: annotatedSettings.renderKeyFn,\n ariaLabel: lineAriaLabel,\n axesData: generatedAxes,\n behavior: createLines\n },\n summaries: {\n accessibleTransform: (data, i) => ({ ...data[i], type: \"frame-hover\" }),\n data: projectedSummaries,\n styleFn: summaryStyleFn,\n classFn: summaryClassFn,\n renderMode: summaryRenderModeFn,\n canvasRender: cache.summaryCanvasRender(canvasSummaries),\n customMark: customSummaryMark,\n type: annotatedSettings.summaryType,\n renderKeyFn: annotatedSettings.renderKeyFn,\n behavior: createSummaries\n },\n points: {\n accessibleTransform: (data, i) => ({\n type: \"frame-hover\",\n ...(data[i].data || data[i])\n }),\n data: projectedPoints,\n ...cache.pointStyleFns(pointStyle, pointClass, pointRenderMode, canvasPoints),\n customMark: customPointMark,\n renderKeyFn: annotatedSettings.renderKeyFn,\n showLinePoints,\n behavior: createPoints\n }\n }\n\n if (\n xExtentSettings.onChange &&\n prevState.calculatedXExtent.join(\",\") !== calculatedXExtent.join(\",\")\n ) {\n xExtentSettings.onChange(calculatedXExtent)\n }\n if (\n yExtentSettings.onChange &&\n prevState.calculatedYExtent.join(\",\") !== calculatedYExtent.join(\",\")\n ) {\n yExtentSettings.onChange(calculatedYExtent)\n }\n\n let overlay = undefined\n if (useSummariesAsInteractionLayer && projectedSummaries) {\n overlay = createSummaries({\n xScale,\n yScale,\n data: projectedSummaries\n }).map((m, i) => ({\n ...m.props,\n style: { fillOpacity: 0 },\n overlayData: projectedSummaries && projectedSummaries[i] // luckily createSummaries is a map fn\n }))\n }\n\n return {\n lineData: currentProps.lines,\n pointData: currentProps.points,\n summaryData: currentProps.summaries,\n dataVersion: currentProps.dataVersion,\n projectedLines,\n projectedPoints,\n projectedSummaries,\n canvasDrawing,\n fullDataset,\n adjustedPosition,\n adjustedSize,\n backgroundGraphics: currentProps.backgroundGraphics,\n foregroundGraphics: currentProps.foregroundGraphics,\n axesData: generatedAxes,\n axes,\n axesTickLines,\n renderNumber: prevState.renderNumber + 1,\n xScale,\n yScale,\n xAccessor: annotatedSettings.xAccessor,\n yAccessor: annotatedSettings.yAccessor,\n xExtent: [\n xExtent[0] === undefined ? calculatedXExtent[0] : xExtent[0],\n xExtent[1] === undefined ? calculatedXExtent[1] : xExtent[1]\n ],\n yExtent: [\n yExtent[0] === undefined ? calculatedYExtent[0] : yExtent[0],\n yExtent[1] === undefined ? calculatedYExtent[1] : yExtent[1]\n ],\n calculatedXExtent,\n calculatedYExtent,\n margin,\n legendSettings,\n areaAnnotations,\n xyFrameRender,\n size,\n annotatedSettings,\n overlay,\n props: currentProps\n }\n}\n","import memoize from \"memoize-one\"\nimport { ProjectedLine, RawPoint, RawSummary } from \"../types/generalTypes\"\nimport { calculateMargin, adjustedPositionSize } from \"../svg/frameFunctions\"\nimport { stringToFn, stringToArrayFn } from \"./dataFunctions\"\n\nconst emptyObjectReturnFunction = () => ({})\nconst emptyStringReturnFunction = () => \"\"\n\nexport function createXYPipelineCache() {\n return {\n annotatedSettings: memoize((\n xAccessor: any,\n yAccessor: any,\n summaryDataAccessor: any,\n lineDataAccessor: any,\n renderKey: any,\n lineType: any,\n summaryType: any,\n lineIDAccessor: any\n ) => ({\n xAccessor: stringToArrayFn<number>(xAccessor, (d: number[]) => d[0]),\n yAccessor: stringToArrayFn<number>(yAccessor, (d: number[]) => d[1]),\n summaryDataAccessor: stringToArrayFn<RawPoint[]>(\n summaryDataAccessor,\n (d: RawSummary | number[]) => (Array.isArray(d) ? d : d.coordinates)\n ),\n lineDataAccessor: stringToArrayFn<RawPoint[]>(\n lineDataAccessor,\n (d: ProjectedLine | number[]) => (Array.isArray(d) ? d : d.coordinates)\n ),\n renderKeyFn: stringToFn<string>(\n renderKey,\n (d: Record<string, any>, i: number) => `line-${i}`,\n true\n ),\n lineIDAccessor: stringToFn<string>(lineIDAccessor, (l) => l.semioticLineID),\n })),\n\n marginCalc: memoize((\n margin: any,\n axes: any,\n title: any,\n size: number[]\n ) => {\n const calculatedMargin = calculateMargin({ margin, axes, title, size })\n const { adjustedPosition, adjustedSize } = adjustedPositionSize({\n size,\n margin: calculatedMargin\n })\n return { margin: calculatedMargin, adjustedPosition, adjustedSize }\n }),\n\n summaryStyleFns: memoize((\n summaryStyle: any,\n summaryClass: any,\n summaryRenderMode: any\n ) => ({\n summaryStyleFn: stringToFn<Record<string, any>>(summaryStyle, emptyObjectReturnFunction, true),\n summaryClassFn: stringToFn<string>(summaryClass, emptyStringReturnFunction, true),\n summaryRenderModeFn: stringToFn<Record<string, any> | string>(summaryRenderMode, undefined, true),\n })),\n\n lineStyleFns: memoize((\n lineStyle: any,\n lineClass: any,\n lineRenderMode: any,\n canvasLines: any\n ) => ({\n styleFn: stringToFn<Record<string, any>>(lineStyle, emptyObjectReturnFunction, true),\n classFn: stringToFn<string>(lineClass, emptyStringReturnFunction, true),\n renderMode: stringToFn<Record<string, any> | string>(lineRenderMode, undefined, true),\n canvasRender: stringToFn<boolean>(canvasLines, undefined, true),\n })),\n\n pointStyleFns: memoize((\n pointStyle: any,\n pointClass: any,\n pointRenderMode: any,\n canvasPoints: any\n ) => ({\n styleFn: stringToFn<Record<string, any>>(pointStyle, emptyObjectReturnFunction, true),\n classFn: stringToFn<string>(pointClass, emptyStringReturnFunction, true),\n renderMode: stringToFn<Record<string, any> | string>(pointRenderMode, undefined, true),\n canvasRender: stringToFn<boolean>(canvasPoints, undefined, true),\n })),\n\n summaryCanvasRender: memoize((canvasSummaries: any) =>\n stringToFn<boolean>(canvasSummaries, undefined, true)\n ),\n }\n}\n\nexport type XYPipelineCache = ReturnType<typeof createXYPipelineCache>\n","import * as React from \"react\"\nimport Axis from \"../Axis\"\n\n/**\n * Generates an Axis component for summary visualizations\n * This function creates the actual Axis component with the provided props\n */\nexport function axisGenerator(axisProps, i, axisScale) {\n return (\n <Axis\n label={axisProps.label}\n key={axisProps.key || `orframe-summary-axis-${i}`}\n orient={axisProps.orient}\n size={axisProps.size}\n ticks={axisProps.ticks}\n tickSize={axisProps.tickSize}\n tickFormat={axisProps.tickFormat}\n tickValues={axisProps.tickValues}\n rotate={axisProps.rotate}\n scale={axisScale}\n className={axisProps.className}\n />\n )\n}\n","import * as React from \"react\"\nimport { forceSimulation, forceX, forceY, forceCollide } from \"d3-force\"\nimport { pointOnArcAtAngle } from \"./pieceDrawing\"\n\nexport function swarmLayout({\n type,\n data,\n renderMode,\n eventListenersGenerator,\n styleFn,\n projection,\n classFn,\n adjustedSize,\n chartSize,\n margin,\n\n rScale\n}) {\n let allCalculatedPieces = []\n\n const columnKeys = Object.keys(data)\n\n // Calculate total data points for adaptive iterations\n const totalDataPoints = columnKeys.reduce((sum, key) => {\n return sum + (data[key].pieceData?.length || 0)\n }, 0)\n\n // Adaptive iteration count: reduce iterations for large datasets to maintain performance\n const adaptiveIterations = Math.max(\n 30,\n Math.min(120, Math.floor(120 - (totalDataPoints - 100) / 20))\n )\n\n const iterations = type.iterations !== undefined ? type.iterations : adaptiveIterations\n\n columnKeys.forEach((key, ordsetI) => {\n const oColumn = data[key]\n const anglePiece = 1 / columnKeys.length\n const oData = oColumn.pieceData\n const adjustedColumnWidth = oColumn.width\n\n const circleRadius =\n type.r ||\n Math.max(2, Math.min(5, (4 * adjustedColumnWidth) / oData.length))\n\n const simulation = forceSimulation(oData)\n .force(\"y\", forceY((d) => d.scaledValue).strength(type.strength || 2))\n .force(\"x\", forceX(oColumn.middle))\n .force(\"collide\", forceCollide(circleRadius))\n .stop()\n\n if (projection === \"vertical\") {\n simulation.force(\n \"y\",\n forceY((d) => d.scaledVerticalValue).strength(type.strength || 2)\n )\n }\n\n for (let i = 0; i < iterations; ++i) simulation.tick()\n\n const calculatedPieces = oData.map((piece, i) => {\n const renderValue = renderMode && renderMode(piece.data, i)\n\n let xPosition = piece.x\n let yPosition = piece.y\n\n if (projection === \"horizontal\") {\n yPosition = piece.x\n xPosition = piece.y\n } else if (projection === \"radial\") {\n const angle = oColumn.pct_middle\n xPosition =\n ((piece.x - oColumn.middle) / adjustedColumnWidth) * anglePiece\n const rPosition = piece.scaledValue / 2\n const xAngle = angle + xPosition\n const baseCentroid = pointOnArcAtAngle(\n [adjustedSize[0] / 2, adjustedSize[1] / 2],\n xAngle,\n rPosition\n )\n xPosition = baseCentroid[0]\n yPosition = baseCentroid[1]\n }\n\n const actualCircleRadius =\n typeof circleRadius === \"function\"\n ? circleRadius(piece, i)\n : circleRadius\n\n const eventListeners = eventListenersGenerator(piece, i)\n\n const renderElementObject = type.customMark ? (\n <g\n key={`piece-${piece.renderKey}`}\n transform={`translate(${xPosition},${yPosition})`}\n >\n {type.customMark(\n { ...piece.data, ...piece, x: xPosition, y: yPosition },\n i,\n {\n x: xPosition,\n y: yPosition,\n r: circleRadius,\n\n renderMode,\n styleFn,\n classFn,\n adjustedSize,\n chartSize,\n margin,\n rScale\n }\n )}\n </g>\n ) : (\n {\n className: classFn({ ...piece, ...piece.data }, i),\n markType: \"rect\",\n key: `piece-${piece.renderKey}`,\n height: actualCircleRadius * 2,\n width: actualCircleRadius * 2,\n x: xPosition - actualCircleRadius,\n y: yPosition - actualCircleRadius,\n rx: actualCircleRadius,\n ry: actualCircleRadius,\n style: styleFn({ ...piece, ...piece.data }, ordsetI),\n ...eventListeners\n }\n )\n\n const calculatedPiece = {\n o: key,\n xy: {\n x: xPosition,\n y: yPosition\n },\n piece,\n renderValue,\n renderElement: renderElementObject\n }\n\n return calculatedPiece\n })\n allCalculatedPieces = [...allCalculatedPieces, ...calculatedPieces]\n })\n\n return allCalculatedPieces\n}\n","import * as React from \"react\"\nimport { /*area, curveCatmullRom,*/ arc } from \"d3-shape\"\nimport pathBounds from \"svg-path-bounding-box\"\nimport { scaleLinear } from \"d3-scale\"\nimport { arcTweener } from \"./SvgHelper\"\nimport { pointOnArcAtAngle } from \"./pieceDrawing\"\n\n// RENAME XY to drawingProps\n\ntype PieceXYProp = {\n x?: number\n y?: number\n middle?: number\n height?: number\n width?: number\n dx?: number\n dy?: number\n}\n\nconst twoPI = Math.PI * 2\n\nconst radialBarFeatureGenerator = ({\n type,\n ordset,\n adjustedSize,\n piece,\n i\n}) => {\n let { innerRadius } = type\n const { offsetAngle = 0, angleRange = [0, 360] } = type\n const offsetPct = offsetAngle / 360\n const rangePct = angleRange.map((d) => d / 360)\n const rangeMod = rangePct[1] - rangePct[0]\n\n const adjustedPct =\n rangeMod < 1 ? scaleLinear().domain([0, 1]).range(rangePct) : (d) => d\n\n let innerSize =\n type.type === \"clusterbar\"\n ? 0\n : type.type === \"timeline\"\n ? piece.scaledValue / 2\n : piece.bottom / 2\n let outerSize =\n type.type === \"clusterbar\"\n ? piece.scaledValue / 2\n : type.type === \"timeline\"\n ? piece.scaledEndValue / 2\n : piece.scaledValue / 2 + piece.bottom / 2\n\n if (innerRadius) {\n innerRadius = parseInt(innerRadius, 10)\n const canvasRadius = adjustedSize[0] / 2\n const donutMod = (canvasRadius - innerRadius) / canvasRadius\n innerSize = innerSize * donutMod + innerRadius\n outerSize = outerSize * donutMod + innerRadius\n }\n\n const arcGenerator = arc().innerRadius(innerSize).outerRadius(outerSize)\n\n const angle =\n (type.type === \"clusterbar\"\n ? (ordset.pct - ordset.pct_padding) / ordset.pieceData.length\n : ordset.pct) * rangeMod\n\n const startAngle = adjustedPct(\n type.type === \"clusterbar\"\n ? ordset.pct_start +\n (i / ordset.pieceData.length) * (ordset.pct - ordset.pct_padding)\n : ordset.pct === 1\n ? 0\n : ordset.pct_start + offsetPct\n )\n\n const endAngle =\n ordset.pct === 1\n ? rangePct[1]\n : Math.max(startAngle, startAngle + angle - ordset.pct_padding / 2)\n\n const startAngleFinal = startAngle * twoPI\n const endAngleFinal = endAngle * twoPI\n\n const markD = arcGenerator({\n startAngle: startAngleFinal,\n endAngle: endAngleFinal\n })\n\n const centroid = arcGenerator.centroid({\n startAngle: startAngleFinal,\n endAngle: endAngleFinal\n })\n\n const xOffset = adjustedSize[0] / 2\n const yOffset = adjustedSize[1] / 2\n const xPosition = centroid[0] + xOffset\n const yPosition = centroid[1] + yOffset\n\n const outerPoint = pointOnArcAtAngle(\n [0, 0],\n (startAngle + endAngle) / 2,\n piece.scaledValue / 2\n )\n\n const xy = {\n arcGenerator: arcGenerator,\n startAngle: startAngleFinal,\n endAngle: endAngleFinal,\n dx: outerPoint[0],\n dy: outerPoint[1]\n }\n const translate = `translate(${xOffset},${yOffset})`\n\n return {\n xPosition,\n yPosition,\n xy,\n translate,\n tx: xOffset,\n ty: yOffset,\n markProps: {\n markType: \"path\",\n d: markD,\n transform: translate\n }\n }\n}\n\nconst iconBarCustomMark =\n ({\n type,\n projection,\n finalHeight,\n finalWidth,\n styleFn,\n renderValue,\n classFn\n }) =>\n (piece, i, xy) => {\n const iconD =\n typeof type.icon === \"string\" ? type.icon : type.icon(piece.data, i)\n const { iconPadding = 1, resize = \"auto\" } = type\n\n const iconBounds = pathBounds(iconD)\n const iconTranslate = [\n 0 - iconBounds.x1 + iconPadding,\n 0 - iconBounds.y1 + iconPadding\n ]\n iconBounds.height += iconPadding * 2\n iconBounds.width += iconPadding * 2\n\n const icons = []\n\n let stackedIconSize = iconBounds.height\n let stackedIconNumber = 1\n let iconScale = 1\n const spaceToUse = projection === \"horizontal\" ? finalHeight : finalWidth\n const sizeToFit =\n projection === \"horizontal\" ? iconBounds.height : iconBounds.width\n const sizeToPad =\n projection === \"horizontal\" ? iconBounds.width : iconBounds.height\n const spaceToFill = projection === \"horizontal\" ? xy.width : xy.height\n const spaceToStackFill = projection === \"horizontal\" ? xy.height : xy.width\n if (resize === \"auto\") {\n stackedIconSize = spaceToUse / sizeToFit\n if (stackedIconSize < 1) {\n iconScale = stackedIconSize\n } else {\n stackedIconNumber = Math.floor(stackedIconSize)\n iconScale =\n 1 + (stackedIconSize - stackedIconNumber) / stackedIconNumber\n }\n } else if (resize === \"fixed\") {\n iconScale = spaceToUse / sizeToFit\n }\n\n // const finalIconWidth = iconBounds.width * iconScale;\n const finalIconHeight = iconBounds.height * iconScale\n\n const spaceToStep = sizeToPad * iconScale\n const spaceToStackStep = sizeToFit * iconScale\n\n iconTranslate[0] = iconTranslate[0] * iconScale\n iconTranslate[1] = iconTranslate[1] * iconScale\n\n const randoClipID = `iso-clip-${i}-${Math.random()}`\n const clipPath = `url(#${randoClipID})`\n if (xy.width > 0) {\n icons.push(\n <clipPath key={randoClipID} id={randoClipID}>\n <rect x={0} y={0} width={xy.width} height={xy.height} />\n </clipPath>\n )\n const iconPieces = []\n const stepStart =\n projection === \"horizontal\" ? 0 : xy.height - finalIconHeight\n const stepper = projection === \"horizontal\" ? spaceToStep : -spaceToStep\n const stepTest =\n projection === \"horizontal\"\n ? (step, spaceToFillValue) => step < spaceToFillValue\n : (step, spaceToFillValue, stepperValue) => step > 0 + stepperValue\n\n for (\n let step = stepStart;\n stepTest(step, spaceToFill, stepper);\n step += stepper\n ) {\n for (\n let stack = 0;\n stack < spaceToStackFill;\n stack += spaceToStackStep\n ) {\n const stepX = projection === \"horizontal\" ? step : stack\n const stepY = projection === \"horizontal\" ? stack : step\n const paddedX = stepX + iconTranslate[0]\n const paddedY = stepY + iconTranslate[1]\n iconPieces.push(\n <path \n key={`icon-${step}-${stack}`}\n transform={`translate(${paddedX},${paddedY}) scale(${iconScale})`}\n vectorEffect={\"non-scaling-stroke\"}\n d={iconD}\n style={styleFn({ ...piece, ...piece.data }, i)}\n className={classFn({ ...piece, ...piece.data }, i)}\n />\n )\n }\n }\n icons.push(\n <g key={`clipped-region-${i}`} clipPath={clipPath}>\n {iconPieces}\n </g>\n )\n }\n return icons\n }\n\nexport function clusterBarLayout({\n type,\n data,\n renderMode,\n eventListenersGenerator,\n styleFn,\n projection,\n classFn,\n adjustedSize,\n chartSize,\n margin,\n \n rScale\n}) {\n let allCalculatedPieces = []\n const keys = Object.keys(data)\n keys.forEach((key, ordsetI) => {\n const ordset = data[key]\n\n const barColumnWidth = Math.max(ordset.width, 1)\n const clusterWidth = barColumnWidth / ordset.pieceData.length\n\n let currentX = 0\n let currentY = 0\n\n const calculatedPieces = ordset.pieceData.map((piece, i) => {\n const renderValue = renderMode && renderMode(piece.data, i)\n\n let xPosition = piece.x\n let yPosition = piece.base\n let finalWidth = clusterWidth\n let finalHeight = piece.scaledValue\n let xy: PieceXYProp = { x: 0, y: 0 }\n if (!piece.negative) {\n yPosition -= piece.scaledValue\n }\n\n if (projection === \"horizontal\") {\n //TODO: NEGATIVE FOR HORIZONTAL\n yPosition = piece.x\n xPosition = piece.base\n finalHeight = clusterWidth\n finalWidth = piece.scaledValue\n xy.x = piece.scaledValue\n if (piece.negative) {\n xPosition -= piece.scaledValue\n xy.x = xPosition\n }\n }\n\n let translate,\n markProps = {},\n pieceTx = 0,\n pieceTy = 0\n\n if (projection === \"radial\") {\n let tx, ty\n ;({ xPosition, yPosition, markProps, xy, tx, ty } = radialBarFeatureGenerator({\n type,\n ordset,\n adjustedSize,\n piece,\n i\n }))\n pieceTx = tx\n pieceTy = ty\n xy.x = xPosition\n } else {\n xPosition += currentX\n yPosition += currentY\n markProps = {\n markType: \"rect\",\n x: xPosition,\n y: yPosition,\n width: Math.max(0, finalWidth),\n height: Math.max(0, finalHeight),\n rx: 0,\n ry: 0\n }\n if (projection === \"vertical\") {\n xy.x = xPosition\n }\n }\n\n const eventListeners = eventListenersGenerator(piece, i)\n\n xy.y = yPosition\n xy.middle = clusterWidth / 2\n xy.height = finalHeight\n xy.width = finalWidth\n\n if (type.icon && projection !== \"radial\") {\n type.customMark = iconBarCustomMark({\n type,\n projection,\n finalHeight,\n finalWidth,\n styleFn,\n renderValue,\n classFn\n })\n } else if (type.icon && projection === \"radial\") {\n console.error(\"Icons are currently unsupported on radial charts\")\n }\n const renderElementObject = type.customMark ? (\n <g\n key={`piece-${piece.renderKey}`}\n transform={\n translate ? translate : `translate(${xPosition},${yPosition})`\n }\n >\n {type.customMark(\n { ...piece.data, ...piece, x: xPosition, y: yPosition },\n i,\n {\n ...xy,\n \n renderMode,\n styleFn,\n classFn,\n adjustedSize,\n chartSize,\n margin,\n rScale\n }\n )}\n </g>\n ) : (\n {\n className: classFn({ ...piece, ...piece.data }, i),\n key: `piece-${piece.renderKey}`,\n transform: translate,\n style: styleFn({ ...piece, ...piece.data }, ordsetI),\n ...markProps,\n ...eventListeners\n }\n )\n\n const calculatedPiece = {\n o: key,\n xy,\n piece,\n tx: pieceTx,\n ty: pieceTy,\n renderValue,\n renderElement: renderElementObject\n }\n if (projection === \"horizontal\") {\n currentY += finalHeight\n } else {\n currentX += finalWidth\n }\n\n // currentOffset += pieceSize\n return calculatedPiece\n })\n allCalculatedPieces = [...allCalculatedPieces, ...calculatedPieces]\n })\n return allCalculatedPieces\n}\n\nexport function barLayout({\n type,\n data,\n renderMode,\n eventListenersGenerator,\n styleFn,\n projection,\n classFn,\n adjustedSize,\n chartSize,\n margin,\n \n rScale\n}) {\n const keys = Object.keys(data)\n let allCalculatedPieces = []\n keys.forEach((key, ordsetI) => {\n const ordset = data[key]\n const barColumnWidth = Math.max(ordset.width, 1)\n\n ordset.pieceData.forEach((piece, i) => {\n const pieceSize = piece.scaledValue\n const renderValue = renderMode && renderMode(piece.data, i)\n\n let xPosition = piece.x\n let yPosition = piece.bottom\n let finalWidth = barColumnWidth\n let finalHeight = pieceSize\n\n let xy = {}\n\n if (!piece.negative) {\n yPosition -= piece.scaledValue\n }\n\n if (projection === \"vertical\") {\n xy = {\n x: xPosition,\n y: yPosition,\n middle: barColumnWidth / 2,\n height: finalHeight,\n width: finalWidth\n }\n } else if (projection === \"horizontal\") {\n yPosition = piece.x\n xPosition = piece.bottom\n finalHeight = barColumnWidth\n finalWidth = pieceSize\n\n xy = {\n x: xPosition + piece.scaledValue,\n y: yPosition,\n middle: barColumnWidth / 2,\n height: finalHeight,\n width: finalWidth\n }\n if (piece.negative) {\n xPosition = piece.bottom - piece.scaledValue\n }\n }\n\n let markProps,\n pieceTx = 0,\n pieceTy = 0\n\n if (projection === \"radial\") {\n let tx, ty\n ;({ markProps, xPosition, yPosition, tx, ty } = radialBarFeatureGenerator({\n type,\n ordset,\n adjustedSize,\n piece,\n i\n }))\n pieceTx = tx\n pieceTy = ty\n finalHeight = undefined\n finalWidth = undefined\n\n xy = {\n x: xPosition,\n y: yPosition,\n middle: barColumnWidth / 2,\n height: finalHeight,\n width: finalWidth\n }\n } else {\n markProps = {\n markType: \"rect\",\n x: xPosition,\n y: yPosition,\n width: Math.max(0, finalWidth),\n height: Math.max(0, finalHeight),\n rx: 0,\n ry: 0\n }\n }\n\n const eventListeners = eventListenersGenerator(piece, i)\n\n if (type.icon && projection !== \"radial\") {\n type.customMark = iconBarCustomMark({\n type,\n projection,\n finalHeight,\n finalWidth,\n styleFn,\n renderValue,\n classFn\n })\n } else if (type.icon && projection !== \"horizontal\") {\n console.error(\"Icons are currently unsupported in radial charts\")\n }\n\n const renderElementObject = type.customMark ? (\n <g\n key={`piece-${piece.renderKey}`}\n transform={`translate(${xPosition},${yPosition})`}\n role=\"img\"\n tabIndex={-1}\n >\n {type.customMark(\n { ...piece.data, ...piece, x: xPosition, y: yPosition },\n i,\n {\n ...xy,\n \n renderMode,\n styleFn,\n classFn,\n adjustedSize,\n chartSize,\n margin,\n rScale\n }\n )}\n </g>\n ) : (\n {\n className: classFn({ ...piece, ...piece.data }, i),\n key: `piece-${piece.renderKey}`,\n style: styleFn({ ...piece, ...piece.data }, ordsetI),\n ...eventListeners,\n ...markProps\n }\n )\n\n allCalculatedPieces.push({\n o: key,\n xy,\n piece,\n tx: pieceTx,\n ty: pieceTy,\n renderValue,\n renderElement: renderElementObject\n })\n })\n })\n\n return allCalculatedPieces\n}\n\nexport function timelineLayout({\n type,\n data,\n renderMode,\n eventListenersGenerator,\n styleFn,\n projection,\n classFn,\n adjustedSize,\n chartSize,\n margin,\n \n rScale\n}) {\n let allCalculatedPieces = []\n const keys = Object.keys(data)\n keys.forEach((key, ordsetI) => {\n const ordset = data[key]\n const calculatedPieces = []\n\n ordset.pieceData.forEach((piece, i) => {\n let scaledValue, scaledBottom\n let pieceTx = 0, pieceTy = 0\n\n const renderValue = renderMode && renderMode(piece.data, i)\n let xPosition = ordset.x\n let height = piece.scaledEndValue - piece.scaledValue\n let yPosition = piece.scaledVerticalValue - height\n let width = ordset.width\n let markProps: {\n markType: string\n height?: number\n width?: number\n x?: number\n y?: number\n d?: string\n transform?: string\n } = {\n markType: \"rect\",\n height: height < 0 ? -height : height,\n width,\n x: xPosition,\n y: height < 0 ? yPosition + height : yPosition\n }\n\n if (projection === \"horizontal\") {\n yPosition = ordset.x\n xPosition = piece.scaledValue\n scaledValue = piece.scaledEndValue - piece.scaledValue\n scaledBottom = piece.scaledBottom\n width = piece.scaledEndValue - piece.scaledValue\n height = ordset.width\n markProps = {\n markType: \"rect\",\n height,\n width: width < 0 ? -width : width,\n x: width < 0 ? xPosition + width : xPosition,\n y: yPosition\n }\n } else if (projection === \"radial\") {\n let tx, ty\n ;({ markProps, tx, ty } = radialBarFeatureGenerator({\n piece,\n type,\n ordset,\n adjustedSize,\n i\n }))\n pieceTx = tx\n pieceTy = ty\n }\n\n //Only return the actual piece if you're rendering points, otherwise you just needed to iterate and calculate the points for the contour summary type\n\n const eventListeners = eventListenersGenerator(piece, i)\n const xy = {\n x: xPosition,\n y: yPosition,\n scaledValue,\n scaledBottom,\n height\n }\n\n const renderElementObject = type.customMark ? (\n <g\n key={`piece-${piece.renderKey}`}\n transform={`translate(${xPosition},${yPosition + height})`}\n >\n {type.customMark(\n { ...piece.data, ...piece, x: xPosition, y: yPosition },\n i,\n {\n ...xy,\n \n renderMode,\n styleFn,\n classFn,\n adjustedSize,\n chartSize,\n margin,\n rScale\n }\n )}\n </g>\n ) : (\n {\n className: classFn({ ...piece, ...piece.data }, i),\n key: `piece-${piece.renderKey}`,\n style: styleFn({ ...piece, ...piece.data }, ordsetI),\n ...markProps,\n ...eventListeners\n }\n )\n\n const calculatedPiece = {\n o: key,\n xy,\n piece,\n tx: pieceTx,\n ty: pieceTy,\n renderValue,\n renderElement: renderElementObject\n }\n\n calculatedPieces.push(calculatedPiece)\n })\n allCalculatedPieces = [...allCalculatedPieces, ...calculatedPieces]\n })\n\n return allCalculatedPieces\n}\n\nexport function pointLayout({\n type,\n data,\n renderMode,\n eventListenersGenerator,\n styleFn,\n projection,\n classFn,\n adjustedSize,\n chartSize,\n margin,\n \n rScale\n}) {\n const circleRadius = type.r || 3\n let allCalculatedPieces = []\n const keys = Object.keys(data)\n\n keys.forEach((key, ordsetI) => {\n const ordset = data[key]\n\n const calculatedPieces = []\n\n ordset.pieceData.forEach((piece, i) => {\n const renderValue = renderMode && renderMode(piece.data, i)\n\n let xPosition = ordset.middle\n let yPosition = piece.scaledVerticalValue\n\n if (projection === \"horizontal\") {\n yPosition = ordset.middle\n xPosition = piece.scaledValue\n } else if (projection === \"radial\") {\n const angle = ordset.pct_middle\n\n const rPosition = piece.scaledValue / 2\n const baseCentroid = pointOnArcAtAngle(\n [adjustedSize[0] / 2, adjustedSize[1] / 2],\n angle,\n rPosition\n )\n xPosition = baseCentroid[0]\n yPosition = baseCentroid[1]\n }\n\n //Only return the actual piece if you're rendering points, otherwise you just needed to iterate and calculate the points for the contour summary type\n const actualCircleRadius =\n typeof circleRadius === \"function\"\n ? circleRadius(piece, i)\n : circleRadius\n const eventListeners = eventListenersGenerator(piece, i)\n\n const renderElementObject = type.customMark ? (\n <g\n key={`piece-${piece.renderKey}`}\n transform={`translate(${xPosition},${yPosition})`}\n >\n {type.customMark(\n {\n ...piece.data,\n ...piece,\n x: xPosition,\n y: yPosition,\n width: ordset.width\n },\n i,\n {\n r: circleRadius,\n x: xPosition,\n y: yPosition,\n \n renderMode,\n styleFn,\n classFn,\n adjustedSize,\n chartSize,\n margin,\n rScale\n }\n )}\n </g>\n ) : (\n {\n className: classFn({ ...piece, ...piece.data }, i),\n markType: \"rect\",\n key: `piece-${piece.renderKey}`,\n height: actualCircleRadius * 2,\n width: actualCircleRadius * 2,\n x: xPosition - actualCircleRadius,\n y: yPosition - actualCircleRadius,\n rx: actualCircleRadius,\n ry: actualCircleRadius,\n style: styleFn({ ...piece, ...piece.data }, ordsetI),\n ...eventListeners\n }\n )\n\n const calculatedPiece = {\n o: key,\n xy: {\n x: xPosition,\n y: yPosition\n },\n piece,\n renderValue,\n renderElement: renderElementObject\n }\n\n calculatedPieces.push(calculatedPiece)\n })\n allCalculatedPieces = [...allCalculatedPieces, ...calculatedPieces]\n })\n\n return allCalculatedPieces\n}\n\n// Re-export from new location for backwards compatibility\nexport { swarmLayout } from \"./swarmLayout\"\n","export const genericFunction = value => () => value\n","import {\n clusterBarLayout,\n barLayout,\n pointLayout,\n swarmLayout,\n timelineLayout\n} from \"../svg/pieceLayouts\"\n\nimport { genericFunction } from \"../generic_utilities/functions\"\n\nexport const layoutHash = {\n clusterbar: clusterBarLayout,\n bar: barLayout,\n point: pointLayout,\n swarm: swarmLayout,\n timeline: timelineLayout\n}\n\nexport const midMod = (d) => (d.middle ? d.middle : 0)\n\nexport const zeroFunction = genericFunction(0)\nexport const twoPI = Math.PI * 2\n\nexport const naturalLanguageTypes = {\n bar: { items: \"bar\", chart: \"bar chart\" },\n clusterbar: { items: \"bar\", chart: \"grouped bar chart\" },\n swarm: { items: \"point\", chart: \"swarm plot\" },\n point: { items: \"point\", chart: \"point plot\" },\n timeline: { items: \"bar\", chart: \"timeline\" }\n}\n","import { ProjectionTypes } from \"../types/generalTypes\"\n\ninterface PieArc {\n markD: string\n centroid: number[]\n translate: number[]\n midAngle: number\n}\n\ninterface ProjectedColumn {\n width: number\n x: number\n middle: number\n y: number\n pieceData: Record<string, any>[]\n pieArc?: PieArc\n [key: string]: unknown\n}\n\nexport interface GenerateColumnOverlaysArgs {\n oExtent: string[]\n projectedColumns: { [key: string]: ProjectedColumn }\n rScale: { range: () => number[] }\n pieArcs: PieArc[]\n padding: number\n projection: ProjectionTypes\n customDoubleClickBehavior?: Function\n customClickBehavior?: Function\n customHoverBehavior?: Function\n}\n\nexport function generateColumnOverlays({\n oExtent,\n projectedColumns,\n rScale,\n pieArcs,\n padding,\n projection,\n customDoubleClickBehavior,\n customClickBehavior,\n customHoverBehavior\n}: GenerateColumnOverlaysArgs): Record<string, any>[] {\n return oExtent.map((d, i) => {\n const barColumnWidth = projectedColumns[d].width\n let xPosition = projectedColumns[d].x\n let yPosition = 0\n let height = rScale.range()[1]\n let width = barColumnWidth + padding\n if (projection === \"horizontal\") {\n yPosition = projectedColumns[d].x\n xPosition = 0\n width = rScale.range()[1]\n height = barColumnWidth\n }\n\n if (projection === \"radial\") {\n const { markD, centroid, translate, midAngle } = pieArcs[i]\n const radialMousePackage = {\n type: \"column-hover\",\n column: projectedColumns[d],\n pieces: projectedColumns[d].pieceData,\n summary: projectedColumns[d].pieceData,\n arcAngles: {\n centroid,\n translate,\n midAngle,\n length: rScale.range()[1] / 2\n }\n }\n return {\n markType: \"path\",\n key: `hover${d}`,\n d: markD,\n transform: `translate(${translate.join(\",\")})`,\n style: { opacity: 0 },\n overlayData: radialMousePackage,\n onDoubleClick:\n customDoubleClickBehavior &&\n ((e) => {\n customDoubleClickBehavior(radialMousePackage, e)\n }),\n onClick:\n customClickBehavior &&\n ((e) => {\n customClickBehavior(radialMousePackage, e)\n }),\n onMouseEnter:\n customHoverBehavior &&\n ((e) => {\n customHoverBehavior(radialMousePackage, e)\n }),\n onMouseLeave:\n customHoverBehavior &&\n ((e) => {\n customHoverBehavior(e)\n })\n }\n }\n\n const baseMousePackage = {\n type: \"column-hover\",\n column: projectedColumns[d],\n pieces: projectedColumns[d].pieceData,\n summary: projectedColumns[d].pieceData\n }\n return {\n markType: \"rect\",\n key: `hover-${d}`,\n x: xPosition,\n y: yPosition,\n height: height,\n width: width,\n style: { opacity: 0 },\n onDoubleClick:\n customDoubleClickBehavior &&\n ((e) => {\n customDoubleClickBehavior(baseMousePackage, e)\n }),\n onClick:\n customClickBehavior &&\n ((e) => {\n customClickBehavior(baseMousePackage, e)\n }),\n onMouseEnter:\n customHoverBehavior &&\n ((e) => {\n customHoverBehavior(baseMousePackage, e)\n }),\n onMouseLeave: (e) => {\n customHoverBehavior(undefined, e)\n },\n overlayData: baseMousePackage\n }\n })\n}\n","import * as React from \"react\"\n\nimport { orFrameConnectionRenderer } from \"../svg/frameFunctions\"\nimport { renderLaidOutPieces } from \"../svg/pieceDrawing\"\nimport { renderLaidOutSummaries } from \"../svg/summaryLayouts\"\n\nimport {\n OrdinalFrameProps,\n OrdinalFrameState,\n PieceTypeSettings,\n ProjectedOrdinalSummary\n} from \"../types/ordinalTypes\"\n\nimport { AxisProps } from \"../types/annotationTypes\"\n\nimport { MarginType, GenericAccessor } from \"../types/generalTypes\"\n\nimport { midMod, zeroFunction, naturalLanguageTypes } from \"./ordinalConstants\"\n\nimport { ScaleBand, ScaleLinear } from \"d3-scale\"\n\nexport interface AssembleRenderPipelineArgs {\n // Piece / overlay data\n usesPieceOverlays: boolean\n shouldRecalculateOverlay: boolean\n calculatedPieceData: Record<string, any>[]\n projection: string\n customClickBehavior?: Function\n customDoubleClickBehavior?: Function\n customHoverBehavior?: Function\n currentState: OrdinalFrameState\n\n // Render config (all style/class/renderMode values are pre-converted functions from the cache)\n connectorStyle: Function\n connectorClass: Function\n connectorRenderMode: Function\n connectorCanvasRender: Function\n summaryCanvasRender: Function\n pieceCanvasRender: Function\n connectorType: Record<string, any>\n eventListenersGenerator: () => Record<string, never>\n pieceType: PieceTypeSettings\n summaryStyle: Function\n summaryClass: Function\n pieceStyle: Function\n pieceClass: Function\n\n // Data\n keyedData: { [key: string]: Record<string, any>[] }\n oExtent: string[]\n projectedColumns: { [key: string]: Record<string, any> }\n calculatedSummaries: ProjectedOrdinalSummary\n oAccessor: Function[]\n\n // Scales\n rScale: ScaleLinear<number, number>\n\n // Extent\n calculatedRExtent: number[]\n calculatedOExtent: string[]\n rExtentSettings: Record<string, any>\n oExtentSettings: { extent?: string[]; onChange?: Function }\n\n // Layout\n adjustedPosition: number[]\n adjustedSize: number[]\n margin: MarginType\n\n // Additional props\n backgroundGraphics?: React.ReactNode | Function\n foregroundGraphics?: React.ReactNode | Function\n arrayWrappedAxis?: AxisProps[]\n axis: React.ReactNode[]\n axesTickLines: object[]\n oLabels: React.ReactNode\n title: object\n columnOverlays: Record<string, any>[]\n oScaleType: ScaleBand<string>\n instantiatedRScaleType: ScaleLinear<number, number>\n oScale: ScaleBand<string>\n rExtent: number[]\n legend?: object | boolean\n pieceIDAccessor: GenericAccessor<string>\n currentProps: OrdinalFrameProps\n}\n\nexport function assembleRenderPipeline(args: AssembleRenderPipelineArgs) {\n const {\n usesPieceOverlays,\n shouldRecalculateOverlay,\n calculatedPieceData,\n projection,\n customClickBehavior,\n customDoubleClickBehavior,\n customHoverBehavior,\n currentState,\n\n connectorStyle,\n connectorClass,\n connectorRenderMode,\n connectorCanvasRender,\n summaryCanvasRender,\n pieceCanvasRender,\n connectorType,\n eventListenersGenerator,\n pieceType,\n summaryStyle,\n summaryClass,\n pieceStyle,\n pieceClass,\n\n keyedData,\n oExtent,\n projectedColumns,\n calculatedSummaries,\n oAccessor,\n\n rScale,\n\n calculatedRExtent,\n calculatedOExtent,\n rExtentSettings,\n oExtentSettings,\n\n adjustedPosition,\n adjustedSize,\n margin,\n\n backgroundGraphics,\n foregroundGraphics,\n arrayWrappedAxis,\n axis,\n axesTickLines,\n oLabels,\n title,\n oScaleType,\n instantiatedRScaleType,\n oScale,\n rExtent,\n legend,\n pieceIDAccessor,\n currentProps\n } = args\n\n let { columnOverlays } = args\n\n // Piece overlays for bar/clusterbar/timeline types\n if (usesPieceOverlays) {\n const yMod = projection === \"horizontal\" ? midMod : zeroFunction\n const xMod = projection === \"vertical\" ? midMod : zeroFunction\n if (shouldRecalculateOverlay) {\n columnOverlays = calculatedPieceData.map((d, i) => {\n const mousePackage = {\n ...d.piece,\n x: d.xy.x + xMod(d.xy),\n y: d.xy.y + yMod(d.xy)\n }\n if (React.isValidElement(d.renderElement)) {\n return {\n renderElement: d.renderElement,\n overlayData: mousePackage\n }\n }\n return {\n ...d.renderElement,\n key: `hover-${i}`,\n style: { opacity: 0 },\n overlayData: mousePackage,\n onClick:\n customClickBehavior &&\n ((e) => {\n customClickBehavior(mousePackage.data, e)\n }),\n onDoubleClick:\n customDoubleClickBehavior &&\n ((e) => {\n customDoubleClickBehavior(mousePackage.data, e)\n }),\n onMouseEnter:\n customHoverBehavior &&\n ((e) => {\n customHoverBehavior(mousePackage.data, e)\n }),\n onMouseLeave:\n customHoverBehavior &&\n ((e) => {\n customHoverBehavior(undefined, e)\n })\n }\n })\n } else {\n columnOverlays = currentState.columnOverlays\n }\n }\n\n const typeAriaLabel = (pieceType.type !== undefined &&\n typeof pieceType.type !== \"function\" &&\n naturalLanguageTypes[pieceType.type]) || {\n items: \"piece\",\n chart: \"ordinal chart\"\n }\n\n const orFrameRender = {\n connectors: {\n accessibleTransform: (data, i) => data[i],\n projection,\n data: { keyedData, oExtent } as unknown as object[],\n styleFn: connectorStyle,\n classFn: connectorClass,\n renderMode: connectorRenderMode,\n canvasRender: connectorCanvasRender,\n behavior: orFrameConnectionRenderer,\n type: connectorType,\n eventListenersGenerator,\n pieceType\n },\n summaries: {\n accessibleTransform: (data, i) => {\n const columnName = oExtent[i]\n\n const summaryPackage = {\n type: \"column-hover\",\n column: projectedColumns[columnName],\n pieces: projectedColumns[columnName].pieceData,\n summary: projectedColumns[columnName].pieceData,\n oAccessor\n }\n return summaryPackage\n },\n data: calculatedSummaries.marks,\n behavior: renderLaidOutSummaries,\n canvasRender: summaryCanvasRender,\n styleFn: summaryStyle,\n classFn: summaryClass\n },\n pieces: {\n accessibleTransform: (data, i) => ({\n ...(data[i].piece ? { ...data[i].piece, ...data[i].xy } : data[i]),\n type: \"frame-hover\"\n }),\n shouldRender: pieceType.type && pieceType.type !== \"none\",\n data: calculatedPieceData,\n behavior: renderLaidOutPieces,\n canvasRender: pieceCanvasRender,\n styleFn: pieceStyle,\n classFn: pieceClass,\n axis: arrayWrappedAxis,\n ariaLabel: typeAriaLabel\n }\n }\n\n if (\n rExtentSettings.onChange &&\n (currentState.calculatedRExtent || []).join(\",\") !==\n (calculatedRExtent || []).join(\",\")\n ) {\n rExtentSettings.onChange(calculatedRExtent)\n }\n\n if (\n oExtentSettings.onChange &&\n (currentState.calculatedOExtent || []).join(\",\") !==\n (calculatedOExtent || []).join(\",\")\n ) {\n oExtentSettings.onChange(calculatedOExtent)\n }\n\n let legendSettings\n\n if (legend) {\n legendSettings = legend === true ? {} : { ...legend }\n\n // Sort legend items to match the sorted oExtent order\n if (legendSettings.legendGroups) {\n const extentOrder = new Map(oExtent.map((d, i) => [d, i]))\n legendSettings.legendGroups = legendSettings.legendGroups.map((group) => ({\n ...group,\n items: [...group.items].sort((a, b) => {\n const aIdx = extentOrder.has(a.label) ? extentOrder.get(a.label) : Infinity\n const bIdx = extentOrder.has(b.label) ? extentOrder.get(b.label) : Infinity\n return aIdx - bIdx\n })\n }))\n }\n }\n\n return {\n adjustedPosition,\n adjustedSize,\n backgroundGraphics,\n foregroundGraphics,\n axisData: arrayWrappedAxis,\n axes: axis,\n axesTickLines,\n oLabels: { labels: oLabels },\n title,\n columnOverlays,\n renderNumber: currentState.renderNumber + 1,\n oScaleType,\n rScaleType: instantiatedRScaleType,\n oExtent,\n rExtent,\n oScale,\n rScale,\n calculatedOExtent,\n calculatedRExtent,\n projectedColumns,\n margin,\n legendSettings,\n orFrameRender,\n pieceIDAccessor,\n props: currentProps\n }\n}\n","import * as React from \"react\"\n\nimport { sum, max, min, extent } from \"d3-array\"\n\nimport { arc } from \"d3-shape\"\nimport {\n objectifyType,\n keyAndObjectifyBarData,\n orFrameAxisGenerator\n} from \"../svg/frameFunctions\"\nimport { pointOnArcAtAngle } from \"../svg/pieceDrawing\"\nimport { drawSummaries } from \"../svg/summaryLayouts\"\nimport { axisGenerator } from \"../svg/summaryAxis\"\n\n\nimport { OrdinalPipelineCache } from \"../data/ordinalPipelineCache\"\n\nimport {\n OrdinalFrameProps,\n OrdinalFrameState,\n PieceTypeSettings,\n OExtentObject,\n ProjectedOrdinalSummary,\n LabelSettingsType\n} from \"../types/ordinalTypes\"\n\nimport { AxisProps } from \"../types/annotationTypes\"\n\nimport { PieceLayoutType } from \"../types/generalTypes\"\n\nimport { scaleOrdinal, scaleLinear, ScaleBand, ScaleLinear } from \"d3-scale\"\n\nimport {\n layoutHash,\n midMod,\n zeroFunction,\n twoPI,\n naturalLanguageTypes\n} from \"./ordinalConstants\"\n\nimport { generateColumnOverlays } from \"./ordinalOverlays\"\nimport { assembleRenderPipeline } from \"./ordinalRenderPipeline\"\n\nexport { layoutHash, midMod, zeroFunction, twoPI, naturalLanguageTypes } from \"./ordinalConstants\"\nexport { generateColumnOverlays } from \"./ordinalOverlays\"\nexport type { GenerateColumnOverlaysArgs } from \"./ordinalOverlays\"\nexport { assembleRenderPipeline } from \"./ordinalRenderPipeline\"\nexport type { AssembleRenderPipelineArgs } from \"./ordinalRenderPipeline\"\n\nexport const calculateMappedMiddles = (\n oScale: ScaleBand<string>,\n middleMax: number,\n padding: number\n) => {\n const oScaleDomainValues = oScale.domain()\n\n const mappedMiddles = {}\n oScaleDomainValues.forEach((p, q) => {\n const base = oScale(p) - padding\n const next = oScaleDomainValues[q + 1]\n ? oScale(oScaleDomainValues[q + 1])\n : middleMax\n const diff = (next - base) / 2\n mappedMiddles[p] = base + diff\n })\n\n return mappedMiddles\n}\n\nexport const calculateOrdinalFrame = (\n currentProps: OrdinalFrameProps,\n currentState: OrdinalFrameState,\n cache: OrdinalPipelineCache\n) => {\n let oLabels\n const projectedColumns = {}\n\n const {\n oPadding: basePadding = 0,\n summaryType: baseSummaryType,\n type: baseType,\n connectorType: baseConnectorType,\n oAccessor: baseOAccessor,\n rAccessor: baseRAccessor,\n connectorStyle: baseConnectorStyle,\n style: baseStyle,\n rExtent: baseRExtent,\n oSort,\n pieceClass: basePieceClass,\n summaryStyle: baseSummaryStyle,\n summaryClass: baseSummaryClass,\n dynamicColumnWidth,\n projection,\n customHoverBehavior,\n customClickBehavior,\n customDoubleClickBehavior,\n size,\n pixelColumnWidth,\n title: baseTitle,\n oLabel,\n hoverAnnotation,\n pieceHoverAnnotation,\n summaryHoverAnnotation,\n backgroundGraphics,\n foregroundGraphics,\n oScaleType,\n rScaleType,\n legend,\n renderKey: baseRenderKey,\n data,\n margin: baseMargin,\n oExtent: baseOExtent,\n axes: baseAxes,\n pieceIDAccessor: basePieceIDAccessor,\n multiAxis,\n annotations,\n sketchyRenderingEngine\n } = currentProps\n\n // Radial (pie chart) projection ignores oPadding — angular gaps widen\n // radially and create visual artifacts between slices\n const padding = projection === \"radial\" ? 0 : basePadding\n\n const summaryType = objectifyType(baseSummaryType)\n const pieceType = objectifyType(baseType) as PieceTypeSettings\n const connectorType = objectifyType(baseConnectorType)\n\n const cachedAccessors = cache.accessorConversions(baseOAccessor, baseRAccessor, baseRenderKey, basePieceIDAccessor)\n\n const oAccessor = cachedAccessors.oAccessor\n const rAccessor = cachedAccessors.rAccessor\n const renderKey = cachedAccessors.renderKey\n\n const eventListenersGenerator = () => ({})\n\n const {\n connectorStyle, summaryStyle, pieceStyle, pieceClass, summaryClass,\n connectorClass: connectorClassFn, pieceRenderMode, summaryRenderMode,\n connectorRenderMode: connectorRenderModeFn,\n pieceCanvasRender, summaryCanvasRender, connectorCanvasRender\n } = cache.styleFns(\n baseConnectorStyle, baseSummaryStyle, baseStyle, basePieceClass, baseSummaryClass,\n currentProps.connectorClass, currentProps.renderMode, currentProps.summaryRenderMode,\n currentProps.connectorRenderMode,\n currentProps.canvasPieces, currentProps.canvasSummaries, currentProps.canvasConnectors\n )\n const title =\n typeof baseTitle === \"object\" &&\n !React.isValidElement(baseTitle) &&\n baseTitle !== null\n ? baseTitle\n : { title: baseTitle, orient: \"top\" }\n\n const pieceIDAccessor = cachedAccessors.pieceIDAccessor\n\n const originalRAccessor = Array.isArray(baseRAccessor)\n ? baseRAccessor\n : [baseRAccessor]\n\n const originalOAccessor = Array.isArray(baseOAccessor)\n ? baseOAccessor\n : [baseOAccessor]\n\n // For radial (pie chart) projection, force uniform arc depth by overriding\n // rAccessor to always return 1. Encode value via dynamicColumnWidth instead.\n let effectiveRAccessor = rAccessor\n let effectiveDynamicColumnWidth = dynamicColumnWidth\n if (projection === \"radial\") {\n if (!effectiveDynamicColumnWidth) {\n // Auto-set dynamicColumnWidth to sum original rAccessor values\n // so angular extent still encodes the data\n const originalAccessors = rAccessor\n effectiveDynamicColumnWidth = (pieces: object[]) =>\n sum(pieces, (d) => {\n let total = 0\n for (const accessor of originalAccessors) {\n total += accessor(d) || 0\n }\n return total\n })\n }\n effectiveRAccessor = [() => 1]\n }\n\n const { allData, multiExtents } = keyAndObjectifyBarData({\n data,\n renderKey,\n oAccessor,\n rAccessor: effectiveRAccessor,\n originalRAccessor,\n originalOAccessor,\n multiAxis\n })\n\n let columnOverlays\n\n const prevProps = currentState.props\n const shouldRecalculateOverlay =\n currentProps.data !== prevProps.data ||\n currentProps.size[0] !== prevProps.size[0] ||\n currentProps.size[1] !== prevProps.size[1] ||\n currentProps.margin !== prevProps.margin ||\n !currentState.columnOverlays ||\n currentState.columnOverlays.length === 0 ||\n currentProps.customClickBehavior !== prevProps.customClickBehavior ||\n currentProps.customDoubleClickBehavior !==\n prevProps.customDoubleClickBehavior ||\n currentProps.customHoverBehavior !== prevProps.customHoverBehavior\n\n let arrayWrappedAxis: AxisProps[] | undefined\n\n if (Array.isArray(baseAxes)) {\n arrayWrappedAxis = baseAxes.map((axisFnOrObject) =>\n typeof axisFnOrObject === \"function\"\n ? axisFnOrObject({ size: currentProps.size })\n : axisFnOrObject\n )\n } else if (baseAxes) {\n arrayWrappedAxis = [baseAxes].map((axisFnOrObject) =>\n typeof axisFnOrObject === \"function\"\n ? axisFnOrObject({ size: currentProps.size })\n : axisFnOrObject\n )\n }\n\n if (multiExtents && baseAxes) {\n arrayWrappedAxis.forEach((d, i) => {\n d.extentOverride = multiExtents[i]\n })\n }\n\n const { margin, adjustedPosition, adjustedSize } = cache.marginCalc(\n baseMargin, arrayWrappedAxis, title, oLabel, projection, size\n )\n\n const oExtentSettings: OExtentObject =\n baseOExtent === undefined || Array.isArray(baseOExtent)\n ? { extent: baseOExtent as string[] }\n : baseOExtent\n\n const calculatedOExtent = allData.reduce(\n (p: Array<string | number>, c: { column: string | number }) => {\n const baseOValue = c.column\n const oValue = baseOValue !== undefined ? String(baseOValue) : baseOValue\n\n if (p.indexOf(oValue) === -1) {\n p.push(oValue)\n }\n return p\n },\n []\n ) as string[]\n\n let oExtent: string[] =\n (oExtentSettings.extent as string[]) || (calculatedOExtent as string[])\n\n if (pieceType.type === \"barpercent\") {\n const oExtentSums = oExtent\n .map((d) =>\n allData\n .filter((p: { column: string }) => String(p.column) === d)\n .reduce((p, c: { value: number }) => p + c.value, 0)\n )\n .reduce((p, c, i) => {\n p[oExtent[i]] = c\n return p\n }, {})\n\n allData.forEach((d: { value?: number; column: string }) => {\n d.value = (oExtentSums[d.column] && d.value / oExtentSums[d.column]) || 0\n })\n\n pieceType.type = \"bar\"\n }\n\n if (pixelColumnWidth) {\n if (projection === \"radial\") {\n console.error(\"pixelColumnWidth is not honored in radial mode\")\n } else if (projection === \"vertical\") {\n adjustedSize[0] = oExtent.length * pixelColumnWidth\n } else {\n adjustedSize[1] = oExtent.length * pixelColumnWidth\n }\n }\n\n const oDomain = (projection === \"vertical\" && [0, adjustedSize[0]]) || [\n 0,\n adjustedSize[1]\n ]\n\n const cwHash = oExtent.reduce(\n (p, c) => {\n p[c] = (1 / oExtent.length) * oDomain[1]\n p.total += p[c]\n return p\n },\n { total: 0 }\n )\n\n const castOScaleType = oScaleType as unknown as (ScaleBand<string> & (() => ScaleBand<string>))\n\n const oScale = (effectiveDynamicColumnWidth\n ? scaleOrdinal()\n : castOScaleType?.domain\n ? castOScaleType\n : castOScaleType()) as ScaleBand<string>\n\n oScale.domain(oExtent)\n\n let maxColumnValues\n\n const rExtentSettings =\n baseRExtent === undefined || Array.isArray(baseRExtent)\n ? { extent: baseRExtent, onChange: undefined, includeAnnotations: false }\n : baseRExtent\n\n let rExtent = rExtentSettings.extent as number[]\n let subZeroRExtent = [0, 0]\n\n if (\n pieceType.type === \"bar\" &&\n summaryType.type &&\n summaryType.type !== \"none\"\n ) {\n pieceType.type = \"none\"\n }\n\n const annotationsForExtent = []\n\n if (rExtentSettings.includeAnnotations && annotations) {\n rAccessor.forEach((actualRAccessor) => {\n annotations.forEach((annotation, annotationIndex) => {\n const r = actualRAccessor(annotation, annotationIndex)\n if (isFinite(r)) {\n annotationsForExtent.push(r)\n }\n })\n })\n }\n\n if (pieceType.type === \"timeline\") {\n const rData = allData.map((d: { value: number }) => d.value)\n const leftExtent = extent(rData.map((d) => d[0]))\n const rightExtent = extent(rData.map((d) => d[1]))\n rExtent = extent([...leftExtent, ...rightExtent, ...annotationsForExtent])\n } else if (pieceType.type !== \"bar\") {\n rExtent = extent([\n ...allData.map((d: { value: number }) => d.value),\n ...annotationsForExtent\n ])\n } else {\n const nestedPositiveData = []\n const nestedNegativeData = []\n\n const positiveDataKeys = {}\n const negativeDataKeys = {}\n for (const datum of allData as { column: string; value: number }[]) {\n if (datum.value >= 0) {\n if (!positiveDataKeys[datum.column]) {\n positiveDataKeys[datum.column] = {\n column: datum.column,\n value: 0\n }\n nestedPositiveData.push(positiveDataKeys[datum.column])\n }\n positiveDataKeys[datum.column].value += datum.value\n } else {\n if (!negativeDataKeys[datum.column]) {\n negativeDataKeys[datum.column] = {\n column: datum.column,\n value: 0\n }\n nestedNegativeData.push(negativeDataKeys[datum.column])\n }\n negativeDataKeys[datum.column].value += datum.value\n }\n }\n\n const positiveAnnotations = annotationsForExtent.filter((d) => d > 0)\n\n rExtent = [\n 0,\n nestedPositiveData.length === 0 && positiveAnnotations.length === 0\n ? 0\n : Math.max(\n max([\n ...nestedPositiveData.map((d: { value: number }) => d.value),\n ...positiveAnnotations\n ]),\n 0\n )\n ]\n\n const negativeAnnotations = annotationsForExtent.filter((d) => d < 0)\n\n subZeroRExtent = [\n 0,\n nestedNegativeData.length === 0\n ? 0\n : Math.min(\n min([\n ...nestedNegativeData.map((d: { value: number }) => d.value),\n ...negativeAnnotations\n ]),\n 0\n )\n ]\n rExtent = [subZeroRExtent[1], rExtent[1]]\n }\n\n if ((pieceType.type === \"clusterbar\" || multiAxis) && rExtent[0] > 0) {\n rExtent[0] = 0\n }\n\n const calculatedRExtent = rExtent\n\n if (\n rExtentSettings.extent &&\n rExtentSettings.extent[0] !== undefined &&\n rExtentSettings.extent[1] !== undefined\n ) {\n rExtent = rExtentSettings.extent as number[]\n } else {\n if (\n rExtentSettings.extent &&\n rExtentSettings.extent[1] !== undefined &&\n rExtentSettings.extent[0] === undefined\n ) {\n rExtent[1] = rExtentSettings.extent[1]\n }\n\n if (\n rExtentSettings.extent &&\n rExtentSettings.extent[0] !== undefined &&\n rExtentSettings.extent[1] === undefined\n ) {\n rExtent[0] = rExtentSettings.extent[0]\n }\n }\n\n if (\n currentProps.invertR ||\n (rExtentSettings.extent &&\n rExtentSettings.extent[0] > rExtentSettings.extent[1])\n ) {\n rExtent = [rExtent[1], rExtent[0]]\n }\n\n const nestedPieces = {}\n\n for (const datum of allData as { column: string; value: number }[]) {\n if (!nestedPieces[datum.column]) {\n nestedPieces[datum.column] = []\n }\n nestedPieces[datum.column].push(datum)\n }\n\n if (oSort !== undefined) {\n oExtent = oExtent.sort((a, b) =>\n oSort(\n a,\n b,\n nestedPieces[a].map((d) => d.data),\n nestedPieces[b].map((d) => d.data)\n )\n )\n\n oScale.domain(oExtent)\n } else {\n // Default sort: descending by summed value, with dynamicColumnWidth as tiebreaker\n const columnSums: Record<string, number> = {}\n for (const col of oExtent) {\n columnSums[col] = sum(nestedPieces[col], (d: { value: number }) => d.value)\n }\n\n let columnWidthValues: Record<string, number> | undefined\n if (effectiveDynamicColumnWidth) {\n columnWidthValues = {}\n let columnValueCreator: (d: any[]) => number\n if (typeof effectiveDynamicColumnWidth === \"string\") {\n columnValueCreator = (d) => sum(d, (p: any) => p.data[effectiveDynamicColumnWidth as string])\n } else {\n columnValueCreator = (d) => (effectiveDynamicColumnWidth as Function)(d.map((p: any) => p.data))\n }\n for (const col of oExtent) {\n columnWidthValues[col] = columnValueCreator(nestedPieces[col])\n }\n }\n\n oExtent = oExtent.sort((a, b) => {\n const diff = columnSums[b] - columnSums[a]\n if (diff !== 0) return diff\n if (columnWidthValues) return columnWidthValues[b] - columnWidthValues[a]\n return 0\n })\n\n oScale.domain(oExtent)\n }\n\n if (effectiveDynamicColumnWidth) {\n let columnValueCreator\n if (typeof effectiveDynamicColumnWidth === \"string\") {\n columnValueCreator = (d) => sum(d, (p) => p.data[effectiveDynamicColumnWidth as string])\n } else {\n columnValueCreator = (d) => (effectiveDynamicColumnWidth as Function)(d.map((p) => p.data))\n }\n const thresholdDomain = [0]\n const columnValues = []\n maxColumnValues = 0\n\n oExtent.forEach((d) => {\n const oValues = allData.filter((p: { column: string }) => p.column === d)\n const columnValue = columnValueCreator(oValues)\n\n columnValues.push(columnValue)\n maxColumnValues += columnValue\n })\n\n cwHash.total = 0\n oExtent.forEach((d, i) => {\n const oValue = columnValues[i]\n const stepValue = (oValue / maxColumnValues) * (oDomain[1] - oDomain[0])\n cwHash[d] = stepValue\n cwHash.total += stepValue\n if (i !== oExtent.length - 1) {\n thresholdDomain.push(stepValue + thresholdDomain[i])\n }\n })\n oScale.range(thresholdDomain)\n } else {\n oScale.range(oDomain)\n }\n\n const rDomain = (projection === \"vertical\" && [0, adjustedSize[1]]) || [\n 0,\n adjustedSize[0]\n ]\n\n const castRScaleType = rScaleType as unknown as (ScaleLinear<number, number> & { (): ScaleLinear<number, number> })\n\n // if rScaleType has a domain that means it's instantiated, otherwise, it needs to be instantiated\n const instantiatedRScaleType = castRScaleType.domain\n ? castRScaleType\n : castRScaleType()\n\n const zeroCheck = instantiatedRScaleType(0)\n\n if (\n rExtentSettings.extent &&\n rExtentSettings.extent[0] !== undefined &&\n (isNaN(zeroCheck) || zeroCheck === -Infinity || zeroCheck === Infinity)\n ) {\n rExtent[0] = rExtentSettings.extent[0]\n }\n\n const rScale = instantiatedRScaleType.copy().domain(rExtent).range(rDomain)\n\n const rScaleReverse = scaleLinear().domain(rDomain).range(rDomain.reverse())\n\n const rScaleVertical = instantiatedRScaleType\n .copy()\n .domain(rExtent)\n .range(rDomain)\n\n const columnWidth = cwHash ? 0 : oScale.bandwidth()\n\n let pieceData = []\n\n let mappedMiddleSize = adjustedSize[1]\n if (projection === \"vertical\") {\n mappedMiddleSize = adjustedSize[0]\n }\n const mappedMiddles = calculateMappedMiddles(\n oScale,\n mappedMiddleSize,\n padding\n )\n\n pieceData = oExtent.map((d) => (nestedPieces[d] ? nestedPieces[d] : []))\n\n let zeroValue =\n projection === \"vertical\" ? rScaleReverse(rScale(0)) : rScale(0)\n\n if (\n (isNaN(zeroValue) || zeroValue === -Infinity || zeroValue === Infinity) &&\n rExtentSettings.extent &&\n rExtentSettings.extent[0] !== undefined &&\n (zeroCheck === -Infinity || zeroCheck === Infinity)\n ) {\n zeroValue =\n projection === \"vertical\"\n ? rScaleReverse(rScale(rExtentSettings.extent[0]))\n : rScale(rExtentSettings.extent[0])\n }\n\n oExtent.forEach((o, i) => {\n projectedColumns[o] = {\n name: o,\n padding,\n pieceData: pieceData[i],\n pieces: pieceData[i]\n }\n projectedColumns[o].x = oScale(o) + padding / 2\n projectedColumns[o].y = 0\n projectedColumns[o].middle = mappedMiddles[o] + padding / 2\n\n let negativeOffset = zeroValue\n let positiveOffset = zeroValue\n\n let negativeBaseValue = 0\n let positiveBaseValue = 0\n\n projectedColumns[o].pieceData.forEach((piece) => {\n let valPosition\n\n if (pieceType.type === \"timeline\") {\n piece.scaledValue = rScale(piece.value[0])\n piece.scaledEndValue = rScale(piece.value[1])\n piece.scaledVerticalValue = rScaleVertical(piece.value[0])\n } else if (pieceType.type !== \"bar\" && pieceType.type !== \"clusterbar\") {\n piece.scaledValue = rScale(piece.value)\n piece.scaledVerticalValue = rScaleVertical(piece.value)\n } else if (pieceType.type === \"clusterbar\") {\n valPosition =\n projection === \"vertical\"\n ? rScaleReverse(rScale(piece.value))\n : rScale(piece.value)\n piece.scaledValue = Math.abs(zeroValue - valPosition)\n }\n\n piece.x = projectedColumns[o].x\n if (piece.value >= 0) {\n if (pieceType.type === \"bar\") {\n piece.scaledValue =\n projection === \"vertical\"\n ? positiveOffset -\n rScaleReverse(rScale(positiveBaseValue + piece.value))\n : rScale(positiveBaseValue + piece.value) - positiveOffset\n\n positiveBaseValue += piece.value\n }\n piece.base = zeroValue\n piece.bottom = pieceType.type === \"bar\" ? positiveOffset : 0\n piece.middle = piece.scaledValue / 2 + positiveOffset\n positiveOffset =\n projection === \"vertical\"\n ? positiveOffset - piece.scaledValue\n : positiveOffset + piece.scaledValue\n piece.negative = false\n } else {\n if (pieceType.type === \"bar\") {\n piece.scaledValue =\n projection === \"vertical\"\n ? Math.abs(rScale(piece.value) - rScale(0))\n : Math.abs(rScale(piece.value) - zeroValue)\n\n negativeBaseValue += piece.value\n }\n piece.base = zeroValue\n piece.bottom = pieceType.type === \"bar\" ? negativeOffset : 0\n piece.middle = negativeOffset - piece.scaledValue / 2\n negativeOffset =\n projection === \"vertical\"\n ? negativeOffset + piece.scaledValue\n : negativeOffset - piece.scaledValue\n piece.negative = true\n }\n })\n\n if (cwHash) {\n projectedColumns[o].width = cwHash[o] - padding\n\n if (currentProps.ordinalAlign === \"center\") {\n if (i === 0) {\n projectedColumns[o].x =\n projectedColumns[o].x - projectedColumns[o].width / 2\n projectedColumns[o].middle =\n projectedColumns[o].middle - projectedColumns[o].width / 2\n } else {\n projectedColumns[o].x =\n projectedColumns[oExtent[i - 1]].x +\n projectedColumns[oExtent[i - 1]].width\n projectedColumns[o].middle =\n projectedColumns[o].x + projectedColumns[o].width / 2\n }\n }\n\n projectedColumns[o].pct = cwHash[o] / cwHash.total\n projectedColumns[o].pct_start =\n (projectedColumns[o].x - oDomain[0]) / cwHash.total\n projectedColumns[o].pct_padding = padding / cwHash.total\n projectedColumns[o].pct_middle =\n (projectedColumns[o].middle - oDomain[0]) / cwHash.total\n } else {\n projectedColumns[o].width = columnWidth - padding\n if (currentProps.ordinalAlign === \"center\") {\n projectedColumns[o].x =\n projectedColumns[o].x - projectedColumns[o].width / 2\n projectedColumns[o].middle =\n projectedColumns[o].middle - projectedColumns[o].width / 2\n }\n\n projectedColumns[o].pct = columnWidth / adjustedSize[1]\n projectedColumns[o].pct_start =\n (projectedColumns[o].x - oDomain[0]) / adjustedSize[1]\n projectedColumns[o].pct_padding = padding / adjustedSize[1]\n projectedColumns[o].pct_middle =\n (projectedColumns[o].middle - oDomain[0]) / adjustedSize[1]\n }\n })\n\n const labelArray = []\n\n const pieArcs = []\n\n const labelSettings: LabelSettingsType =\n typeof oLabel === \"object\"\n ? Object.assign({ label: true, padding: 5 }, oLabel)\n : { orient: \"default\", label: oLabel, padding: 5 }\n\n if (oLabel || hoverAnnotation) {\n const offsetPct =\n (pieceType.offsetAngle && pieceType.offsetAngle / 360) || 0\n\n const rangePct = (pieceType.angleRange &&\n pieceType.angleRange.map((d) => d / 360)) || [0, 1]\n const rangeMod = rangePct[1] - rangePct[0]\n\n const adjustedPct =\n rangeMod < 1 ? scaleLinear().domain([0, 1]).range(rangePct) : (d) => d\n\n oExtent.forEach((d) => {\n const arcGenerator = arc()\n .innerRadius(0)\n .outerRadius(rScale.range()[1] / 2)\n\n const angle = projectedColumns[d].pct * rangeMod\n const startAngle = adjustedPct(projectedColumns[d].pct_start + offsetPct)\n\n const endAngle = startAngle + angle\n const midAngle = startAngle + angle / 2\n\n const markD = arcGenerator({\n startAngle: startAngle * twoPI,\n endAngle: endAngle * twoPI\n })\n const translate = [adjustedSize[0] / 2, adjustedSize[1] / 2]\n const centroid = arcGenerator.centroid({\n startAngle: startAngle * twoPI,\n endAngle: endAngle * twoPI\n })\n\n const addedPadding =\n centroid[1] > 0 &&\n (!labelSettings.orient ||\n labelSettings.orient === \"default\" ||\n labelSettings.orient === \"edge\")\n ? 8\n : 0\n\n const outerPoint = pointOnArcAtAngle(\n [0, 0],\n midAngle,\n rScale.range()[1] / 2 + labelSettings.padding + addedPadding\n )\n\n const pieArc = {\n startAngle,\n endAngle,\n midAngle,\n markD,\n translate,\n centroid,\n outerPoint\n }\n\n projectedColumns[d].pieArc = pieArc\n\n pieArcs.push(pieArc)\n })\n }\n\n if (currentProps.oLabel) {\n let labelingFn\n if (typeof labelSettings.label === \"function\") {\n labelingFn = labelSettings.label\n } else {\n const labelStyle: {\n textAnchor: \"inherit\" | \"middle\" | \"end\" | \"start\"\n } = {\n textAnchor: \"middle\"\n }\n if (projection === \"horizontal\" && labelSettings.orient === \"right\") {\n labelStyle.textAnchor = \"start\"\n } else if (projection === \"horizontal\") {\n labelStyle.textAnchor = \"end\"\n }\n\n labelingFn = (d, p, i) => {\n const additionalStyle: {\n textAnchor?: \"inherit\" | \"middle\" | \"end\" | \"start\" | null\n } = {}\n let transformRotate\n\n if (projection === \"radial\" && labelSettings.orient === \"stem\") {\n transformRotate = `rotate(${\n pieArcs[i].outerPoint[0] < 0\n ? pieArcs[i].midAngle * 360 + 90\n : pieArcs[i].midAngle * 360 - 90\n })`\n } else if (\n projection === \"radial\" &&\n labelSettings.orient === \"annotation\"\n ) {\n const { centroid } = pieArcs[i]\n\n const labelIndex = pieArcs.filter(\n (p, q) =>\n q < i &&\n centroid[0] < 0 === pieArcs[q].centroid[0] < 0 &&\n centroid[1] < 0 === pieArcs[q].centroid[1] < 0\n ).length\n const labelMod = labelIndex * 15\n let labelLength = d.length * 7\n let textAnchor: \"inherit\" | \"middle\" | \"end\" | \"start\" = \"start\"\n\n let positionProps = { dx: 0, dy: 0 }\n if (centroid[0] < 0) {\n textAnchor = \"end\"\n labelLength = -labelLength\n positionProps.dx = -35\n } else {\n positionProps.dx = 35\n }\n\n if (centroid[1] < 0) {\n positionProps.dy = -35 - labelMod\n } else {\n positionProps.dy = 35 + labelMod\n }\n return (\n <g>\n <path\n fill=\"none\"\n stroke=\"black\"\n strokeWidth={2}\n d={`M0,0L${positionProps.dx},${positionProps.dy}L${\n positionProps.dx + labelLength\n },${positionProps.dy}`}\n />\n <text\n textAnchor={textAnchor}\n x={positionProps.dx}\n y={positionProps.dy - 2}\n >\n {d}\n </text>\n </g>\n )\n } else if (\n projection === \"radial\" &&\n labelSettings.orient !== \"center\"\n ) {\n transformRotate = `rotate(${\n pieArcs[i].outerPoint[1] < 0\n ? pieArcs[i].midAngle * 360\n : pieArcs[i].midAngle * 360 + 180\n })`\n }\n if (\n projection === \"radial\" &&\n labelSettings.orient === \"stem\" &&\n ((pieArcs[i].outerPoint[0] > 0 && labelSettings.padding < 0) ||\n (pieArcs[i].outerPoint[0] < 0 && labelSettings.padding >= 0))\n ) {\n additionalStyle.textAnchor = \"end\"\n } else if (projection === \"radial\" && labelSettings.orient === \"stem\") {\n additionalStyle.textAnchor = \"start\"\n }\n return (\n <text\n {...labelStyle}\n {...additionalStyle}\n transform={transformRotate}\n >\n {d}\n </text>\n )\n }\n }\n\n oExtent.forEach((d, i) => {\n let xPosition = projectedColumns[d].middle\n let yPosition = 0\n\n if (projection === \"horizontal\") {\n yPosition = projectedColumns[d].middle\n if (labelSettings.orient === \"right\") {\n xPosition = adjustedSize[0] + 3\n } else {\n xPosition = -3\n }\n } else if (projection === \"radial\") {\n if (labelSettings.orient === \"annotation\") {\n xPosition =\n pieArcs[i].centroid[0] * 0.25 +\n pieArcs[i].outerPoint[0] * 0.75 +\n pieArcs[i].translate[0]\n yPosition =\n pieArcs[i].centroid[1] * 0.25 +\n pieArcs[i].outerPoint[1] * 0.75 +\n pieArcs[i].translate[1]\n } else if (labelSettings.orient === \"center\") {\n xPosition = pieArcs[i].centroid[0] + pieArcs[i].translate[0]\n yPosition = pieArcs[i].centroid[1] + pieArcs[i].translate[1]\n } else {\n xPosition = pieArcs[i].outerPoint[0] + pieArcs[i].translate[0]\n yPosition = pieArcs[i].outerPoint[1] + pieArcs[i].translate[1]\n }\n }\n\n const labelValue = labelSettings.labelFormatter\n ? labelSettings.labelFormatter(d)\n : d\n\n const label = labelingFn(\n labelValue,\n projectedColumns[d].pieceData.map((d) => d.data),\n i,\n projectedColumns[d]\n )\n labelArray.push(\n <g\n key={`olabel-${i}`}\n transform={`translate(${xPosition},${yPosition})`}\n >\n {label}\n </g>\n )\n })\n\n if (projection === \"vertical\") {\n let labelY\n if (labelSettings.orient === \"top\") {\n labelY = -15\n } else {\n labelY = 15 + rScale.range()[1]\n }\n oLabels = (\n <g\n key=\"ordinalframe-labels-container\"\n className=\"ordinal-labels\"\n transform={`translate(0,${labelY})`}\n >\n {labelArray}\n </g>\n )\n } else if (projection === \"horizontal\") {\n oLabels = (\n <g key=\"ordinalframe-labels-container\" className=\"ordinal-labels\">\n {labelArray}\n </g>\n )\n } else if (projection === \"radial\") {\n oLabels = (\n <g key=\"ordinalframe-labels-container\" className=\"ordinal-labels\">\n {labelArray}\n </g>\n )\n }\n }\n\n const isBarType = [\"bar\", \"clusterbar\", \"timeline\"].indexOf(pieceType.type) !== -1\n const usesPieceOverlays = (currentProps.hoverAnnotation || currentProps.pieceHoverAnnotation) && isBarType\n\n if (\n !usesPieceOverlays &&\n !currentProps.summaryHoverAnnotation &&\n (currentProps.hoverAnnotation ||\n currentProps.customClickBehavior ||\n currentProps.customDoubleClickBehavior ||\n currentProps.customHoverBehavior)\n ) {\n if (shouldRecalculateOverlay) {\n columnOverlays = generateColumnOverlays({\n oExtent,\n projectedColumns,\n rScale,\n pieArcs,\n padding,\n projection,\n customDoubleClickBehavior,\n customClickBehavior,\n customHoverBehavior\n })\n } else {\n columnOverlays = currentState.columnOverlays\n }\n }\n\n let pieceDataXY\n\n const pieceTypeForXY =\n pieceType.type && pieceType.type !== \"none\" ? pieceType.type : \"point\"\n const pieceTypeLayout: PieceLayoutType =\n typeof pieceTypeForXY === \"function\"\n ? pieceTypeForXY\n : layoutHash[pieceTypeForXY]\n\n const calculatedPieceData = pieceTypeLayout({\n type: pieceType,\n data: projectedColumns,\n renderMode: pieceRenderMode,\n eventListenersGenerator,\n styleFn: pieceStyle,\n projection,\n classFn: pieceClass,\n adjustedSize,\n chartSize: size,\n margin,\n rScale\n }) as Record<string, any>[]\n\n const keyedData = calculatedPieceData.reduce((p, c) => {\n if (c.o) {\n if (!p[c.o]) {\n p[c.o] = []\n }\n p[c.o].push(c)\n }\n return p\n }, {})\n\n Object.keys(projectedColumns).forEach((d) => {\n projectedColumns[d].xyData = keyedData[d] || []\n })\n let calculatedSummaries: ProjectedOrdinalSummary = {}\n\n if (summaryType.type && summaryType.type !== \"none\") {\n calculatedSummaries = drawSummaries({\n data: projectedColumns,\n type: summaryType,\n renderMode: summaryRenderMode,\n styleFn: summaryStyle,\n classFn: summaryClass,\n projection,\n eventListenersGenerator,\n adjustedSize,\n // chartSize: size,\n margin,\n axisCreator: axisGenerator\n })\n\n calculatedSummaries.originalData = projectedColumns\n }\n\n const yMod = projection === \"horizontal\" ? midMod : zeroFunction\n const xMod = projection === \"vertical\" ? midMod : zeroFunction\n const basePieceData = calculatedPieceData\n .map((d) => {\n if (d.piece && d.xy) {\n return {\n ...d.piece,\n type: \"frame-hover\",\n x: d.xy.x + xMod(d.xy),\n y: d.xy.y + yMod(d.xy)\n }\n }\n return null\n })\n .filter((d) => d)\n\n if (\n ((hoverAnnotation || pieceHoverAnnotation) &&\n [\"bar\", \"clusterbar\", \"timeline\"].indexOf(pieceType.type) === -1) ||\n summaryHoverAnnotation\n ) {\n if (summaryHoverAnnotation && calculatedSummaries.xyPoints) {\n pieceDataXY = calculatedSummaries.xyPoints.map(\n (d: { x: number; y: number }) =>\n Object.assign({}, d, {\n type: \"frame-hover\",\n isSummaryData: true,\n x: d.x,\n y: d.y\n })\n )\n } else if ((hoverAnnotation || pieceHoverAnnotation) && calculatedPieceData) {\n //Check interaction layer rendering when only one point per column\n pieceDataXY = basePieceData\n }\n }\n\n const { axis, axesTickLines } = orFrameAxisGenerator({\n axis: arrayWrappedAxis,\n data: allData,\n projection,\n adjustedSize,\n size,\n rScale,\n rScaleType: instantiatedRScaleType.copy(),\n pieceType,\n rExtent,\n maxColumnValues,\n xyData: basePieceData,\n margin,\n thresholds: calculatedSummaries.thresholds\n })\n\n return {\n pieceDataXY,\n oAccessor,\n rAccessor,\n summaryType,\n type: pieceType,\n ...assembleRenderPipeline({\n usesPieceOverlays,\n shouldRecalculateOverlay,\n calculatedPieceData,\n projection,\n customClickBehavior,\n customDoubleClickBehavior,\n customHoverBehavior,\n currentState,\n\n connectorStyle,\n connectorClass: connectorClassFn,\n connectorRenderMode: connectorRenderModeFn,\n connectorCanvasRender,\n summaryCanvasRender,\n pieceCanvasRender,\n connectorType,\n eventListenersGenerator,\n pieceType,\n summaryStyle,\n summaryClass,\n pieceStyle,\n pieceClass,\n\n keyedData,\n oExtent,\n projectedColumns,\n calculatedSummaries,\n oAccessor,\n\n rScale,\n\n calculatedRExtent,\n calculatedOExtent,\n rExtentSettings,\n oExtentSettings,\n\n adjustedPosition,\n adjustedSize,\n margin,\n\n backgroundGraphics,\n foregroundGraphics,\n arrayWrappedAxis,\n axis,\n axesTickLines,\n oLabels,\n title,\n columnOverlays,\n oScaleType,\n instantiatedRScaleType,\n oScale,\n rExtent,\n legend,\n pieceIDAccessor,\n currentProps\n })\n }\n}\n","import memoize from \"memoize-one\"\nimport { calculateMargin, adjustedPositionSize, keyAndObjectifyBarData } from \"../svg/frameFunctions\"\nimport { stringToFn, stringToArrayFn } from \"./dataFunctions\"\nimport { ProjectionTypes } from \"../types/generalTypes\"\n\nexport function createOrdinalPipelineCache() {\n return {\n marginCalc: memoize((\n margin: any,\n axes: any,\n title: any,\n oLabel: any,\n projection: ProjectionTypes,\n size: number[]\n ) => {\n const calculatedMargin = calculateMargin({ margin, axes, title, oLabel, projection, size })\n const { adjustedPosition, adjustedSize } = adjustedPositionSize({\n size,\n margin: calculatedMargin,\n projection\n })\n return { margin: calculatedMargin, adjustedPosition, adjustedSize }\n }),\n\n structureData: memoize((\n data: any[],\n renderKey: any,\n oAccessor: Function[],\n rAccessor: Array<(d: number | object, i?: number) => number>,\n originalRAccessor: any[],\n originalOAccessor: any[],\n multiAxis: boolean\n ) => {\n return keyAndObjectifyBarData({\n data,\n renderKey,\n oAccessor,\n rAccessor,\n originalRAccessor,\n originalOAccessor,\n multiAxis\n })\n }),\n\n accessorConversions: memoize((\n baseOAccessor: any,\n baseRAccessor: any,\n baseRenderKey: any,\n basePieceIDAccessor: any\n ) => ({\n oAccessor: stringToArrayFn<string | number>(baseOAccessor, (d) => d.renderKey),\n rAccessor: stringToArrayFn<number>(baseRAccessor, (d) => d.value || 1),\n renderKey: stringToFn<string | number>(baseRenderKey, (d, i) => i),\n pieceIDAccessor: stringToFn<string>(basePieceIDAccessor, () => \"\"),\n })),\n\n styleFns: memoize((\n baseConnectorStyle: any,\n baseSummaryStyle: any,\n baseStyle: any,\n basePieceClass: any,\n baseSummaryClass: any,\n baseConnectorClass: any,\n baseRenderMode: any,\n baseSummaryRenderMode: any,\n baseConnectorRenderMode: any,\n canvasPieces: any,\n canvasSummaries: any,\n canvasConnectors: any\n ) => ({\n connectorStyle: stringToFn<Record<string, any>>(baseConnectorStyle, () => ({}), true),\n summaryStyle: stringToFn<Record<string, any>>(baseSummaryStyle, () => ({}), true),\n pieceStyle: stringToFn<Record<string, any>>(baseStyle, () => ({}), true),\n pieceClass: stringToFn<string>(basePieceClass, () => \"\", true),\n summaryClass: stringToFn<string>(baseSummaryClass, () => \"\", true),\n connectorClass: stringToFn<string>(baseConnectorClass, () => \"\", true),\n pieceRenderMode: stringToFn<Record<string, any> | string>(baseRenderMode, undefined, true),\n summaryRenderMode: stringToFn<Record<string, any> | string>(baseSummaryRenderMode, undefined, true),\n connectorRenderMode: stringToFn<Record<string, any> | string>(baseConnectorRenderMode, undefined, true),\n pieceCanvasRender: stringToFn<boolean>(canvasPieces, undefined, true),\n summaryCanvasRender: stringToFn<boolean>(canvasSummaries, undefined, true),\n connectorCanvasRender: stringToFn<boolean>(canvasConnectors, undefined, true),\n })),\n }\n}\n\nexport type OrdinalPipelineCache = ReturnType<typeof createOrdinalPipelineCache>\n","import * as React from \"react\"\nimport { arc } from \"d3-shape\"\nimport { scaleLinear } from \"d3-scale\"\n\nexport const circleNodeGenerator = ({\n d,\n i,\n styleFn,\n renderMode,\n key,\n className,\n transform\n}) => {\n //this is repetitious\n const style = styleFn(d, i)\n return (\n <rect\n key={key}\n transform={transform}\n width={d.nodeSize * 2}\n height={d.nodeSize * 2}\n ry={d.nodeSize * 2}\n rx={d.nodeSize * 2}\n x={-d.nodeSize}\n y={-d.nodeSize}\n {...style}\n style={style}\n className={className}\n aria-label={`Node ${d.id}`}\n tabIndex={-1}\n />\n )\n}\n\nexport const gridProps = (gridSize) => {\n return {\n x: -gridSize / 2,\n y: -gridSize / 2,\n width: gridSize,\n height: gridSize\n }\n}\n\nexport const sankeyNodeGenerator = ({\n d,\n i,\n styleFn,\n renderMode,\n key,\n className,\n transform\n}) => {\n const height = d.direction !== \"down\" ? d.height : d.width\n const width = d.direction !== \"down\" ? d.width : d.height\n\n if (!d) {\n return <g />\n }\n\n return (\n <rect key={key}\n className={className}\n transform={transform}\n\n height={height}\n width={width}\n x={-width / 2}\n y={-height / 2}\n rx={0}\n ry={0}\n style={styleFn(d)}\n aria-label={`Node ${d.id}`}\n tabIndex={-1}\n />\n )\n}\n\nexport const chordNodeGenerator =\n (size) =>\n ({ d, i, styleFn, renderMode, key, className }) => {\n if (!d) {\n return <g />\n }\n\n return (\n <path key={key}\n className={className}\n transform={`translate(${size[0] / 2},${size[1] / 2})`}\n\n d={d.d}\n style={styleFn(d, i)}\n aria-label={`Node ${d.id}`}\n tabIndex={-1}\n />\n )\n }\n\nexport const matrixNodeGenerator = (size, nodes) => {\n const gridSize = Math.min(...size)\n const stepSize = gridSize / (nodes.length + 1)\n\n return ({ d, i, styleFn, renderMode, key, className }) => {\n if (!d) {\n return <g />\n }\n\n const showText = stepSize > 6\n const showLine = stepSize > 3\n const showRect = stepSize > 0.5\n\n const textProps: {\n textAnchor: \"inherit\" | \"middle\" | \"end\" | \"start\"\n fontSize: string\n } = {\n textAnchor: \"end\",\n fontSize: `${stepSize / 2}px`\n }\n const style = styleFn(d, i)\n const renderModeValue = renderMode ? renderMode(d, i) : undefined\n\n return (\n <g key={key} className={className}>\n {showRect && (\n <rect\n x={stepSize / 2}\n y={d.y - stepSize / 2}\n width={gridSize - stepSize}\n height={stepSize}\n style={{ ...style, stroke: \"none\" }}\n />\n )}\n {showRect && (\n <rect\n y={stepSize / 2}\n x={d.y - stepSize / 2}\n height={gridSize - stepSize}\n width={stepSize}\n style={{ ...style, stroke: \"none\" }}\n />\n )}\n {showLine && (\n <line\n stroke=\"black\"\n x1={0}\n x2={gridSize - stepSize / 2}\n y1={d.y - stepSize / 2}\n y2={d.y - stepSize / 2}\n style={style}\n />\n )}\n {showLine && (\n <line\n stroke=\"black\"\n y1={0}\n y2={gridSize - stepSize / 2}\n x1={d.y - stepSize / 2}\n x2={d.y - stepSize / 2}\n style={style}\n />\n )}\n {showLine && i === nodes.length - 1 && (\n <line\n stroke=\"black\"\n x1={0}\n x2={gridSize - stepSize / 2}\n y1={d.y + stepSize / 2}\n y2={d.y + stepSize / 2}\n style={style}\n />\n )}\n {showLine && i === nodes.length - 1 && (\n <line\n stroke=\"black\"\n y1={0}\n y2={gridSize - stepSize / 2}\n x1={d.y + stepSize / 2}\n x2={d.y + stepSize / 2}\n style={style}\n />\n )}\n {showText && (\n <text x={0} y={d.y + stepSize / 5} {...textProps}>\n {d.id}\n </text>\n )}\n {showText && (\n <text\n transform={`translate(${d.y}) rotate(90) translate(0,${\n stepSize / 5\n })`}\n {...textProps}\n y={0}\n >\n {d.id}\n </text>\n )}\n </g>\n )\n }\n}\n\nexport const radialRectNodeGenerator = (size, center, type) => {\n const radialArc = arc()\n const { angleRange = [0, 360] } = type\n const rangePct = angleRange.map((d) => d / 360)\n const rangeMod = rangePct[1] - rangePct[0]\n\n const adjustedPct =\n rangeMod < 1 ? scaleLinear().domain([0, 1]).range(rangePct) : (d) => d\n\n return ({ d, i, styleFn, renderMode, key, className }) => {\n if (!d) {\n return <g />\n }\n\n radialArc.innerRadius(d.y0 / 2).outerRadius(d.y1 / 2)\n\n return (\n <path key={key}\n transform={`translate(${center})`}\n\n d={radialArc({\n startAngle: adjustedPct(d.x0 / size[0]) * Math.PI * 2,\n endAngle: adjustedPct(d.x1 / size[0]) * Math.PI * 2\n })}\n style={styleFn(d, i)}\n className={className}\n aria-label={`Node ${d.id}`}\n tabIndex={-1}\n />\n )\n }\n}\n\nexport const radialLabelGenerator = (node, nodei, nodeIDAccessor, size) => {\n const anglePct = (node.x1 + node.x0) / 2 / size[0]\n const nodeLabel = nodeIDAccessor(node, nodei)\n const labelRotate = anglePct > 0.5 ? anglePct * 360 + 90 : anglePct * 360 - 90\n\n return (\n <g transform={`rotate(${labelRotate})`}>\n {typeof nodeLabel === \"string\" ? (\n <text textAnchor=\"middle\" y={5}>\n {nodeLabel}\n </text>\n ) : (\n nodeLabel\n )}\n </g>\n )\n}\n\nexport const hierarchicalRectNodeGenerator = ({\n d,\n i,\n styleFn,\n renderMode,\n key,\n className\n}) => {\n if (!d) {\n return <g />\n }\n //this is repetitious\n return (\n <rect key={key}\n transform={`translate(0,0)`}\n\n width={d.x1 - d.x0}\n height={d.y1 - d.y0}\n x={d.x0}\n y={d.y0}\n rx={0}\n ry={0}\n style={styleFn(d, i)}\n className={className}\n aria-label={`Node ${d.id}`}\n tabIndex={-1}\n />\n )\n}\n","import * as React from \"react\"\nimport { useEffect, useRef } from \"react\"\nimport { select } from \"d3-selection\"\n\nimport {\n d as glyphD /*, project as glyphProject, mutate as glyphMutate*/\n} from \"d3-glyphedge\"\n\nimport { pathArrows } from \"d3-path-arrows\"\n\nimport {\n curveMonotoneX,\n curveMonotoneY,\n curveBasis,\n line,\n linkHorizontal,\n linkVertical\n} from \"d3-shape\"\nimport { linearRibbon } from \"./SvgHelper\"\nimport { interpolateNumber } from \"d3-interpolate\"\n\nimport { gridProps } from \"./nodeGenerators\"\n\nconst curvature = 0.5\n\nconst horizontalDagreLineGenerator = line()\n .curve(curveMonotoneX)\n .x((d) => d.x)\n .y((d) => d.y)\n\nconst verticalDagreLineGenerator = line()\n .curve(curveMonotoneY)\n .x((d) => d.x)\n .y((d) => d.y)\n\nexport function sankeyEdgeSort(a, b, direction) {\n if (a.circular && !b.circular) return -1\n if (b.circular && !a.circular) return 1\n const first = direction === \"down\" ? \"y\" : \"x\"\n const second = direction === \"down\" ? \"x\" : \"y\"\n\n return a.source[first] === b.source[first]\n ? a.sankeyWidth === b.sankeyWidth\n ? a.source[second] - b.source[second]\n : b.sankeyWidth - a.sankeyWidth\n : a.source[first] - b.source[first]\n}\n\nexport const sigmoidLinks = {\n horizontal: linkHorizontal()\n .x((d) => d.x)\n .y((d) => d.y),\n vertical: linkVertical()\n .x((d) => d.x)\n .y((d) => d.y),\n radial: glyphD.lineArc\n}\n\nexport const customEdgeHashD = {\n curve: (d, projection = \"vertical\") => sigmoidLinks[projection](d),\n linearc: (d) => glyphD.lineArc(d),\n ribbon: (d) => glyphD.ribbon(d, d.width),\n arrowhead: (d) =>\n glyphD.arrowHead(d, d.target.nodeSize, d.width, d.width * 1.5),\n halfarrow: (d) =>\n glyphD.halfArrow(d, d.target.nodeSize, d.width, d.width * 1.5),\n nail: (d) => glyphD.nail(d, d.source.nodeSize),\n comet: (d) => glyphD.comet(d, d.target.nodeSize),\n taffy: (d) =>\n glyphD.taffy(\n d,\n d.source.nodeSize / 2,\n d.target.nodeSize / 2,\n (d.source.nodeSize + d.target.nodeSize) / 4\n )\n}\n\nexport const genericLineGenerator = (d) =>\n `M${d.source.x},${d.source.y}L${d.target.x},${d.target.y}`\n\nexport const matrixEdgeGenerator =\n (size, nodes) =>\n ({ d, i, styleFn, renderMode, key, className }) => {\n const gridSize = Math.min(...size) / nodes.length\n const style = styleFn(d, i)\n return (\n <g key={key}>\n <rect\n key={key}\n className={className}\n transform={`translate(${d.source.y},${d.target.y})`}\n {...style}\n style={style}\n aria-label={`Connection from ${d.source.id} to ${d.target.id}`}\n tabIndex={-1}\n {...gridProps(gridSize)}\n />\n </g>\n )\n }\n\nexport const arcEdgeGenerator = (size) => {\n const yAdjust = size[1] / size[0]\n function arcDiagramArc(d) {\n const draw = line().curve(curveBasis)\n const midX = (d.source.x + d.target.x) / 2\n const midY = d.source.x - d.target.x\n return draw([\n [d.source.x, 0],\n [midX, midY * yAdjust],\n [d.target.x, 0]\n ])\n }\n\n return ({ d, i, styleFn, renderMode, key, className }) => {\n const style = styleFn(d, i)\n return (\n <path\n key={key}\n className={className}\n transform={`translate(0,${size[1] / 2})`}\n d={arcDiagramArc(d)}\n {...style}\n style={style}\n aria-label={`Connection from ${d.source.id} to ${d.target.id}`}\n tabIndex={-1}\n />\n )\n }\n}\n\nconst ArrowedPath = (props) => {\n const { d, width, edgeLength, circular } = props\n const pathRef = useRef(null)\n\n useEffect(() => {\n if (pathRef?.current) {\n const circularMod = circular ? width : edgeLength\n const arrowHeadSize = Math.max(Math.min(width, circularMod) / 5, 2)\n let arrows = pathArrows()\n .arrowLength(arrowHeadSize * 2.5)\n .gapLength(100)\n .arrowHeadSize(arrowHeadSize)\n .path(d)\n\n select(pathRef.current).selectAll(\"*\").remove()\n\n select(pathRef.current).call(arrows)\n\n select(pathRef.current)\n .selectAll(\":not(.arrow-head)\")\n .style(\"fill\", \"none\")\n .style(\"stroke-width\", arrowHeadSize / 4)\n .style(\"stroke\", \"white\")\n\n select(pathRef.current).selectAll(\".arrow-head\").style(\"fill\", \"white\")\n }\n }, [d])\n\n return <g ref={pathRef} />\n}\n\nexport const sankeyArrowGenerator = (props) => {\n const {\n d,\n i,\n styleFn,\n renderMode,\n key,\n className,\n\n generatedPath\n } = props\n\n const { showArrows } = d\n\n let arrowPath = \"\"\n if (d.circular) {\n const { circularPathData } = d\n const {\n sourceX,\n sourceY,\n leftFullExtent,\n rightFullExtent,\n verticalFullExtent,\n targetX,\n targetY\n } = circularPathData\n\n arrowPath = `M${sourceX},${sourceY}L${leftFullExtent},${sourceY}L${leftFullExtent},${verticalFullExtent}L${rightFullExtent},${verticalFullExtent}L${rightFullExtent},${targetY}L${targetX},${targetY}`\n } else {\n let x0 = d.source.x1,\n x1 = d.target.x0,\n xi = interpolateNumber(x0, x1),\n x2 = xi(curvature),\n x3 = xi(1 - curvature),\n y0 = d.y0,\n y1 = d.y1\n\n arrowPath = `M${x0},${y0}C${x2},${y0} ${x3},${y1} ${x1},${y1}`\n }\n\n return (\n <React.Fragment key={key}>\n <path\n className={className}\n\n d={generatedPath}\n style={styleFn(d, i)}\n aria-label={`Connection from ${d.source.id} to ${d.target.id}`}\n tabIndex={-1}\n />\n {showArrows && (\n <ArrowedPath\n d={arrowPath}\n width={d.sankeyWidth}\n edgeLength={Math.abs(d.target.x - d.source.x)}\n circular={d.circular}\n />\n )}\n </React.Fragment>\n )\n}\n\nexport const chordEdgeGenerator =\n (size) =>\n ({ d, i, styleFn, renderMode, key, className }) =>\n (\n <path key={key}\n className={className}\n transform={`translate(${size[0] / 2},${size[1] / 2})`}\n\n d={d.d}\n style={styleFn(d, i)}\n aria-label={`Connection from ${d.source.id} to ${d.target.id}`}\n tabIndex={-1}\n />\n )\n\nexport const dagreEdgeGenerator = (direction) => {\n const dagreLineGenerator =\n direction === \"LR\" || direction === \"RL\"\n ? horizontalDagreLineGenerator\n : verticalDagreLineGenerator\n return ({ d, i, styleFn, renderMode, key, className }) => {\n if (d.ribbon || d.parallelEdges) {\n const ribbonGenerator = linearRibbon()\n\n ribbonGenerator.x((p) => p.x)\n ribbonGenerator.y((p) => p.y)\n ribbonGenerator.r(() => d.weight || 1)\n\n if (d.parallelEdges) {\n const sortedParallelEdges = d.parallelEdges.sort(\n (a, b) => b.weight - a.weight\n )\n return (\n <g key={`${key}`}>\n {ribbonGenerator({\n points: d.points,\n multiple: d.parallelEdges\n }).map((ribbonD, ribbonI) => (\n <path key={`${key}-${ribbonI}`}\n className={className}\n\n d={ribbonD}\n style={styleFn(sortedParallelEdges[ribbonI], i)}\n aria-label={`Connection from ${d.source.id} to ${d.target.id}`}\n tabIndex={-1}\n />\n ))}\n </g>\n )\n }\n\n return (\n <path key={key}\n className={className}\n\n d={ribbonGenerator(d.points)}\n style={styleFn(d, i)}\n aria-label={`Connection from ${d.source.id} to ${d.target.id}`}\n tabIndex={-1}\n />\n )\n }\n\n return (\n <path key={key}\n className={className}\n\n d={dagreLineGenerator(d.points)}\n style={styleFn(d, i)}\n aria-label={`Connection from ${d.source.id} to ${d.target.id}`}\n tabIndex={-1}\n />\n )\n }\n}\n","import { linearRibbon } from \"./SvgHelper\"\nimport { interpolateNumber } from \"d3-interpolate\"\n\nconst curvature = 0.5\n\nexport const ribbonLink = (d) => {\n const diff =\n d.direction === \"down\"\n ? Math.abs(d.target.y - d.source.y)\n : Math.abs(d.source.x - d.target.x)\n // const halfWidth = d.width / 2\n const testCoordinates =\n d.direction === \"down\"\n ? [\n {\n x: d.y0,\n y: d.source.y\n },\n {\n x: d.y0,\n y: d.source.y + diff / 3\n },\n {\n x: d.y1,\n y: d.target.y - diff / 3\n },\n {\n x: d.y1,\n y: d.target.y\n }\n ]\n : [\n {\n x: d.source.x0,\n y: d.y0\n },\n {\n x: d.source.x0 + diff / 3,\n y: d.y0\n },\n {\n x: d.target.x0 - diff / 3,\n y: d.y1\n },\n {\n x: d.target.x0,\n y: d.y1\n }\n ]\n\n const linkGenerator = linearRibbon()\n\n linkGenerator.x((d) => d.x)\n linkGenerator.y((d) => d.y)\n linkGenerator.r(() => d.sankeyWidth / 2)\n\n return linkGenerator(testCoordinates)\n}\n\nexport const areaLink = (d) => {\n let x0, x1, x2, x3, y0, y1, xi, y2, y3\n\n if (d.direction === \"down\") {\n x0 = d.y0 - d.sankeyWidth / 2\n x1 = d.y1 - d.sankeyWidth / 2\n x2 = d.y1 + d.sankeyWidth / 2\n x3 = d.y0 + d.sankeyWidth / 2\n y0 = d.source.y1\n y1 = d.target.y0\n xi = interpolateNumber(y0, y1)\n y2 = xi(curvature)\n y3 = xi(1 - curvature)\n\n return `M${x0},${y0}C${x0},${y2} ${x1},${y3} ${x1},${y1}L${x2},${y1}C${x2},${y3} ${x3},${y2} ${x3},${y0}Z`\n }\n ;(x0 = d.source.x1), // eslint-disable-line no-sequences\n (x1 = d.target.x0),\n (xi = interpolateNumber(x0, x1)),\n (x2 = xi(curvature)),\n (x3 = xi(1 - curvature)),\n (y0 = d.y0 - d.sankeyWidth / 2),\n (y1 = d.y1 - d.sankeyWidth / 2),\n (y2 = d.y1 + d.sankeyWidth / 2),\n (y3 = d.y0 + d.sankeyWidth / 2)\n\n return `M${x0},${y0}C${x2},${y0} ${x3},${y1} ${x1},${y1}L${x1},${y2}C${x3},${y2} ${x2},${y3} ${x0},${y3}Z`\n}\n\nexport function circularAreaLink(link) {\n const linkGenerator = linearRibbon()\n\n linkGenerator.x((d) => d.x)\n linkGenerator.y((d) => d.y)\n linkGenerator.r(() => link.sankeyWidth / 2)\n\n const xyForLink =\n link.direction === \"down\"\n ? [\n {\n x: link.circularPathData.sourceY,\n y: link.circularPathData.sourceX\n },\n {\n x: link.circularPathData.sourceY,\n y: link.circularPathData.leftFullExtent\n },\n {\n x: link.circularPathData.verticalFullExtent,\n y: link.circularPathData.leftFullExtent\n },\n {\n x: link.circularPathData.verticalFullExtent,\n y: link.circularPathData.rightFullExtent\n },\n {\n x: link.circularPathData.targetY,\n y: link.circularPathData.rightFullExtent\n },\n {\n x: link.circularPathData.targetY,\n y: link.circularPathData.targetX\n }\n ]\n : [\n {\n x: link.circularPathData.sourceX,\n y: link.circularPathData.sourceY\n },\n {\n x: link.circularPathData.leftFullExtent,\n y: link.circularPathData.sourceY\n },\n {\n x: link.circularPathData.leftFullExtent,\n y: link.circularPathData.verticalFullExtent\n },\n {\n x: link.circularPathData.rightFullExtent,\n y: link.circularPathData.verticalFullExtent\n },\n {\n x: link.circularPathData.rightFullExtent,\n y: link.circularPathData.targetY\n },\n {\n x: link.circularPathData.targetX,\n y: link.circularPathData.targetY\n }\n ]\n\n return linkGenerator(xyForLink)\n}\n","export function topologicalSort(nodesArray, edgesArray) {\n // adapted from https://simplapi.wordpress.com/2015/08/19/detect-graph-cycle-in-javascript/\n const nodes = []\n const nodeMap = new Map()\n for (const edge of edgesArray) {\n if (!edge.source.id || !edge.target.id) {\n return false\n }\n if (!nodeMap.has(edge.source.id)) {\n const newNode = { _id: edge.source.id, links: [] }\n nodeMap.set(edge.source.id, newNode)\n nodes.push(newNode)\n }\n if (!nodeMap.has(edge.target.id)) {\n const newNode = { _id: edge.target.id, links: [] }\n nodeMap.set(edge.target.id, newNode)\n nodes.push(newNode)\n }\n nodeMap.get(edge.source.id).links.push(edge.target.id)\n }\n\n // Test if a node got any icoming edge\n function hasIncomingEdge(list, node) {\n for (let i = 0, l = list.length; i < l; ++i) {\n if (list[i].links.indexOf(node._id) !== -1) {\n return true\n }\n }\n return false\n }\n\n // Kahn Algorithm\n const L = [],\n S = nodes.filter((node) => !hasIncomingEdge(nodes, node))\n\n let n = null\n\n while (S.length) {\n // Remove a node n from S\n n = S.pop()\n // Add n to tail of L\n L.push(n)\n\n let i = n.links.length\n while (i--) {\n // Getting the node associated to the current stored id in links\n const m = nodes[nodes.map((d) => d._id).indexOf(n.links[i])]\n\n // Remove edge e from the graph\n n.links.pop()\n\n if (!hasIncomingEdge(nodes, m)) {\n S.push(m)\n }\n }\n }\n\n // If any of them still got links, there is cycle somewhere\n const nodeWithEdge = nodes.find((node) => node.links.length !== 0)\n\n return nodeWithEdge ? null : L\n}\n\nconst hierarchyDecorator = (hierarchy, hashEntries, nodeIDAccessor, nodes) => {\n if (hierarchy.children) {\n for (const child of hierarchy.children) {\n const theseEntries = hashEntries.filter((entry) => entry[1] === child.id)\n\n for (const entry of theseEntries) {\n const idNode =\n nodes.find((node) => nodeIDAccessor(node) === entry[0]) || {}\n\n const newNode = {\n id: entry[0],\n ...idNode,\n children: [],\n childMap: {}\n }\n\n child.childMap.set(entry[0], newNode)\n child.children.push(newNode)\n }\n if (child.children.length > 0) {\n hierarchyDecorator(child, hashEntries, nodeIDAccessor, nodes)\n }\n }\n }\n}\n\nexport const softStack = (\n edges,\n nodes,\n sourceAccessor,\n targetAccessor,\n nodeIDAccessor\n) => {\n let hierarchy = { id: \"root-generated\", children: [], childMap: new Map() }\n const discoveredHierarchyMap = new Map()\n const targetToSourceMap = new Map()\n let hasLogicalRoot = true\n let isHierarchical = true\n\n for (let i = 0; i < edges.length; i++) {\n const edge = edges[i]\n\n const source = sourceAccessor(edge)\n const target = targetAccessor(edge)\n const sourceID =\n typeof source === \"object\" ? nodeIDAccessor(source) : source\n const targetID =\n typeof target === \"object\" ? nodeIDAccessor(target) : target\n\n targetToSourceMap.set(targetID, sourceID)\n\n if (!discoveredHierarchyMap.has(sourceID)) {\n discoveredHierarchyMap.set(sourceID, targetID)\n } else {\n isHierarchical = false\n break\n }\n }\n\n if (isHierarchical) {\n const hashEntries: Array<string[]> = []\n for (const entry of discoveredHierarchyMap) {\n hashEntries.push(entry)\n const target = entry[1]\n if (!discoveredHierarchyMap.has(target)) {\n discoveredHierarchyMap.set(target, \"root-generated\")\n const idNode =\n nodes.find((node) => nodeIDAccessor(node) === target) || {}\n\n const newNode = {\n id: target,\n ...idNode,\n children: [],\n childMap: new Map()\n }\n hierarchy.childMap.set(target, newNode)\n hierarchy.children.push(newNode)\n }\n }\n\n hierarchyDecorator(hierarchy, hashEntries, nodeIDAccessor, nodes)\n\n nodes.forEach((node) => {\n const nodeID = nodeIDAccessor(node)\n if (\n !discoveredHierarchyMap.has(nodeID) &&\n !targetToSourceMap.has(nodeID)\n ) {\n hierarchy.children.push({\n id: nodeID,\n ...node,\n children: [],\n childMap: new Map()\n })\n }\n })\n\n if (hierarchy.children.length === 1) {\n hierarchy = hierarchy.children[0]\n hasLogicalRoot = false\n }\n\n return { hierarchy, isHierarchical: true, hasLogicalRoot }\n }\n\n return { hierarchy: {}, isHierarchical: false, hasLogicalRoot: false }\n}\n","import * as React from \"react\"\n\nimport {\n sankeyEdgeSort,\n customEdgeHashD,\n genericLineGenerator\n} from \"./edgeGenerators\"\n\nimport { gridProps } from \"./nodeGenerators\"\n\n// Re-export everything from the split modules so existing imports continue to work\nexport {\n circleNodeGenerator,\n sankeyNodeGenerator,\n chordNodeGenerator,\n matrixNodeGenerator,\n radialRectNodeGenerator,\n radialLabelGenerator,\n hierarchicalRectNodeGenerator\n} from \"./nodeGenerators\"\n\nexport {\n matrixEdgeGenerator,\n arcEdgeGenerator,\n sankeyArrowGenerator,\n chordEdgeGenerator,\n dagreEdgeGenerator\n} from \"./edgeGenerators\"\n\nexport { ribbonLink, areaLink, circularAreaLink } from \"./sankeyLinks\"\n\nexport { topologicalSort, softStack } from \"./graphAlgorithms\"\n\nexport const drawNodes = ({\n data,\n renderKeyFn,\n customMark,\n styleFn,\n classFn,\n renderMode,\n canvasDrawing,\n canvasRenderFn,\n\n networkSettings\n}) => {\n const markGenerator = customMark\n const renderedData = []\n\n if (networkSettings.type === \"matrix\" && canvasRenderFn) {\n return\n }\n\n if (networkSettings) {\n let i = 0\n for (const d of data) {\n const generatedMark = markGenerator({\n d,\n i,\n renderKeyFn,\n styleFn,\n classFn,\n renderMode,\n key: renderKeyFn ? renderKeyFn(d, i) : d.id || `node-${i}`,\n className: `node ${classFn(d, i)}`,\n transform: `translate(${d.x},${d.y})`\n })\n\n if (canvasRenderFn && canvasRenderFn(d, i) === true) {\n const { transform = \"translate(0,0)\" } = generatedMark.props\n const [x, y] = transform\n .replace(\"translate(\", \"\")\n .replace(\")\", \"\")\n .split(\",\")\n const canvasNode = {\n baseClass: \"frame-piece\",\n tx: x,\n ty: y,\n d,\n i,\n markProps: {\n markType: typeof generatedMark.type === \"string\" ? generatedMark.type : generatedMark.props.markType,\n ...generatedMark.props\n },\n styleFn,\n renderFn: renderMode,\n classFn\n }\n canvasDrawing.push(canvasNode)\n } else {\n // Use the already generated mark\n renderedData.push(generatedMark)\n }\n i++\n }\n }\n return renderedData\n}\n\nexport const drawEdges = (settings) => {\n const {\n data: baseData,\n renderKeyFn,\n customMark,\n styleFn,\n classFn,\n renderMode,\n canvasRenderFn,\n canvasDrawing,\n type,\n\n networkSettings,\n projection,\n numberOfNodes,\n size\n } = settings\n\n const {\n type: networkType,\n direction,\n edgeSort = sankeyEdgeSort\n } = networkSettings\n const data =\n networkType === \"sankey\"\n ? baseData.sort((a, b) => edgeSort(a, b, direction))\n : baseData\n\n let dGenerator = genericLineGenerator\n const renderedData = []\n if (canvasRenderFn && networkSettings.type === \"matrix\") {\n let i = 0\n const gridSize = Math.floor(Math.min(...size) / numberOfNodes)\n for (const d of data) {\n const canvasEdge = {\n baseClass: \"frame-piece\",\n tx: d.source.y,\n ty: d.target.y,\n d,\n i,\n markProps: { markType: \"rect\", ...gridProps(gridSize) },\n styleFn,\n renderFn: renderMode,\n classFn\n }\n canvasDrawing.push(canvasEdge)\n i++\n }\n } else if (customMark) {\n // CUSTOM MARK IMPLEMENTATION\n if (type) {\n if (typeof type === \"function\") {\n dGenerator = type\n } else if (customEdgeHashD[type]) {\n dGenerator = (d) => customEdgeHashD[type](d, projection)\n }\n }\n let i = 0\n for (const d of data) {\n const renderedCustomMark = customMark({\n d,\n i,\n renderKeyFn,\n styleFn,\n classFn,\n renderMode,\n key: renderKeyFn ? renderKeyFn(d, i) : `edge-${i}`,\n className: `${classFn(d, i)} edge`,\n transform: `translate(${d.x},${d.y})`,\n\n generatedPath: dGenerator(d)\n })\n if (\n renderedCustomMark &&\n renderedCustomMark.props &&\n (renderedCustomMark.props.markType !== \"path\" ||\n renderedCustomMark.props.d)\n ) {\n renderedData.push(renderedCustomMark)\n }\n i++\n }\n } else {\n if (type) {\n if (typeof type === \"function\") {\n dGenerator = type\n } else if (customEdgeHashD[type]) {\n dGenerator = (d) => customEdgeHashD[type](d, projection)\n }\n }\n let i = 0\n for (const d of data) {\n const renderedD = dGenerator(d)\n\n if (renderedD && canvasRenderFn && canvasRenderFn(d, i) === true) {\n const canvasEdge = {\n baseClass: \"frame-piece\",\n tx: d.x,\n ty: d.y,\n d,\n i,\n markProps: { markType: \"path\", d: renderedD },\n styleFn,\n renderFn: renderMode,\n classFn\n }\n canvasDrawing.push(canvasEdge)\n } else if (renderedD) {\n renderedData.push(\n <path key={renderKeyFn ? renderKeyFn(d, i) : `edge-${i}`}\n\n className={`${classFn(d)} edge`}\n d={renderedD}\n style={styleFn(d, i)}\n tabIndex={-1}\n role=\"img\"\n aria-label={`connection from ${d.source.id} to ${d.target.id}`}\n />\n )\n }\n }\n }\n\n return renderedData\n}\n","export const emptyArray = []\n\nexport const baseNodeProps = {\n id: undefined,\n degree: 0,\n inDegree: 0,\n outDegree: 0,\n x: 0,\n y: 0,\n x1: 0,\n x0: 0,\n y1: 0,\n y0: 0,\n height: 0,\n width: 0,\n radius: 0,\n r: 0,\n direction: undefined,\n textHeight: 0,\n textWidth: 0,\n fontSize: 0,\n scale: 1,\n nodeSize: 0,\n component: -99,\n shapeNode: false\n}\n\nexport const baseNetworkSettings = {\n hierarchicalNetwork: false\n}\n\nexport const baseGraphSettings = {\n nodeHash: new Map(),\n edgeHash: new Map(),\n nodes: [],\n edges: [],\n hierarchicalNetwork: false,\n type: \"force\"\n}\n","import {\n tree,\n pack,\n cluster,\n treemap,\n partition\n} from \"d3-hierarchy\"\nimport { NetworkLayoutHandler, NetworkLayoutMap } from \"./types\"\n\nexport const hierarchicalTypeHash = {\n dendrogram: tree,\n tree,\n circlepack: pack,\n cluster,\n treemap,\n partition\n}\n\n// Hierarchy layouts don't use the standard layout handler pattern because\n// they are applied during data loading (via hierarchicalTypeHash), not during\n// the layout dispatch phase. These entries exist so the layout map recognizes\n// these types as valid and falls through to the default node positioning.\nconst hierarchyFallthrough: NetworkLayoutHandler = ({\n projectedNodes,\n projectedEdges\n}) => {\n projectedNodes.forEach((node) => {\n node.x = node.x === undefined ? (node.x0 + node.x1) / 2 : node.x\n node.y = node.y === undefined ? node.y0 : node.y\n })\n\n return { projectedNodes, projectedEdges }\n}\n\nexport const hierarchyLayouts: NetworkLayoutMap = {\n tree: hierarchyFallthrough,\n dendrogram: hierarchyFallthrough,\n cluster: hierarchyFallthrough,\n treemap: hierarchyFallthrough,\n circlepack: hierarchyFallthrough,\n partition: hierarchyFallthrough\n}\n","import {\n hierarchicalRectNodeGenerator,\n radialRectNodeGenerator,\n chordNodeGenerator,\n chordEdgeGenerator,\n matrixNodeGenerator,\n matrixEdgeGenerator,\n arcEdgeGenerator,\n sankeyNodeGenerator,\n circleNodeGenerator,\n dagreEdgeGenerator,\n sankeyArrowGenerator\n} from \"../svg/networkDrawing\"\n\n// Re-export from new locations for backwards compatibility\nexport { hierarchicalTypeHash } from \"./layouts/hierarchyLayout\"\nexport { sankeyOrientHash } from \"./layouts/sankeyLayout\"\n\nexport function determineNodeIcon(baseCustomNodeIcon, networkSettings, size, nodes) {\n if (baseCustomNodeIcon) return baseCustomNodeIcon\n\n const center = [size[0] / 2, size[1] / 2]\n\n switch (networkSettings.type) {\n case \"sankey\":\n return sankeyNodeGenerator\n case \"partition\":\n return networkSettings.projection === \"radial\"\n ? radialRectNodeGenerator(size, center, networkSettings)\n : hierarchicalRectNodeGenerator\n case \"treemap\":\n return networkSettings.projection === \"radial\"\n ? radialRectNodeGenerator(size, center, networkSettings)\n : hierarchicalRectNodeGenerator\n case \"circlepack\":\n return circleNodeGenerator\n case \"chord\":\n return chordNodeGenerator(size)\n case \"dagre\":\n return hierarchicalRectNodeGenerator\n case \"matrix\":\n return matrixNodeGenerator(size, nodes)\n }\n\n return circleNodeGenerator\n}\n\nexport function determineEdgeIcon({\n baseCustomEdgeIcon,\n networkSettings,\n size,\n graph,\n nodes\n}) {\n if (baseCustomEdgeIcon) return baseCustomEdgeIcon\n switch (networkSettings.type) {\n case \"partition\":\n return () => null\n case \"treemap\":\n return () => null\n case \"circlepack\":\n return () => null\n case \"chord\":\n return chordEdgeGenerator(size)\n case \"matrix\":\n return matrixEdgeGenerator(size, nodes)\n case \"arc\":\n return arcEdgeGenerator(size)\n case \"dagre\":\n if (graph) return dagreEdgeGenerator(graph.graph().rankdir)\n case \"sankey\":\n return sankeyArrowGenerator\n }\n return undefined\n}\n\nexport const basicMiddle = (d) => ({\n edge: d,\n x: (d.source.x + d.target.x) / 2,\n y: (d.source.y + d.target.y) / 2\n})\n\nexport const edgePointHash = {\n sankey: (d) => ({\n edge: d,\n x: (d.source.x1 + d.target.x0) / 2,\n y: d.circularPathData\n ? d.circularPathData.verticalFullExtent\n : ((d.y0 + d.y1) / 2 + (d.y0 + d.y1) / 2) / 2\n }),\n force: basicMiddle,\n tree: basicMiddle,\n cluster: basicMiddle,\n matrix: (d) => {\n return {\n edge: d,\n x: d.source.y,\n y: d.target.y\n }\n }\n}\n\nexport const hierarchicalProjectable = {\n partition: true,\n cluster: true,\n tree: true,\n dendrogram: true\n}\n\nexport const radialProjectable = {\n partition: true,\n cluster: true,\n tree: true,\n dendrogram: true\n}\n","import { hierarchy } from \"d3-hierarchy\"\n\nexport function recursiveIDAccessor(idAccessor, node, accessorString) {\n if (node.parent) {\n accessorString = `${accessorString}-${recursiveIDAccessor(\n idAccessor,\n { ...node.parent, ...node.parent.data },\n accessorString\n )}`\n }\n return `${accessorString}-${idAccessor({ ...node, ...node.data })}`\n}\n\nexport const defaultHierarchicalIDAccessor = (d) => d.id || d.descendantIndex\n\nexport const nodesEdgesFromHierarchy = (\n baseRootNode,\n idAccessor = defaultHierarchicalIDAccessor\n) => {\n const edges = []\n const nodes = []\n\n const rootNode = baseRootNode.descendants\n ? baseRootNode\n : hierarchy(baseRootNode)\n\n const descendants = rootNode.descendants()\n\n let i = 0\n\n for (const node of descendants) {\n node.descendantIndex = i\n i++\n }\n\n for (const node of descendants) {\n const generatedID = `${\n idAccessor({\n ...node,\n ...node.data\n }) ?? defaultHierarchicalIDAccessor(node)\n }-${\n node.parent\n ? recursiveIDAccessor(\n idAccessor,\n { ...node.parent, ...node.parent.data },\n \"\"\n ) ?? node.parent.name\n : \"root\"\n }`\n\n const dataD = Object.assign(node, node.data || {}, {\n hierarchicalID: generatedID\n })\n nodes.push(dataD)\n if (node.parent !== null) {\n const dataParent = Object.assign(node.parent, node.parent.data || {})\n edges.push({\n source: dataParent,\n target: dataD,\n depth: node.depth,\n weight: 1,\n value: 1,\n _NWFEdgeKey: generatedID\n })\n }\n }\n\n return { edges, nodes }\n}\n\nexport function breadthFirstCompontents(baseNodes, hash) {\n const componentMap = {\n \"0\": { componentNodes: [], componentEdges: [] }\n }\n const components = [componentMap[\"0\"]]\n\n let componentID = 0\n\n traverseNodesBF(baseNodes, true)\n\n function traverseNodesBF(nodes, top) {\n for (const node of nodes) {\n const hashNode = hash.get(node)\n if (!hashNode) {\n componentMap[\"0\"].componentNodes.push(node)\n } else if (hashNode.component === -99) {\n if (top === true) {\n componentID++\n componentMap[componentID] = {\n componentNodes: [],\n componentEdges: []\n }\n components.push(componentMap[componentID])\n }\n\n hashNode.component = componentID\n componentMap[componentID].componentNodes.push(node)\n componentMap[componentID].componentEdges.push(...hashNode.edges)\n const traversibleNodes = [...hashNode.connectedNodes]\n traverseNodesBF(traversibleNodes, hash)\n }\n }\n }\n\n return components.sort(\n (a, b) => b.componentNodes.length - a.componentNodes.length\n )\n}\n\nexport const matrixify = ({ edgeHash, nodes, edgeWidthAccessor, nodeIDAccessor }) => {\n const matrix = []\n for (const nodeSource of nodes) {\n const nodeSourceID = nodeIDAccessor(nodeSource)\n const sourceRow = []\n matrix.push(sourceRow)\n for (const nodeTarget of nodes) {\n const nodeTargetID = nodeIDAccessor(nodeTarget)\n const theEdge = edgeHash.get(`${nodeSourceID}|${nodeTargetID}`)\n if (theEdge) {\n sourceRow.push(edgeWidthAccessor(theEdge))\n } else {\n sourceRow.push(0)\n }\n }\n }\n return matrix\n}\n","import * as React from \"react\"\n\nimport { scaleLinear } from \"d3-scale\"\n\nimport { min, max } from \"d3-array\"\n\nimport {\n TitleType\n} from \"../svg/frameFunctions\"\n\nimport { pointOnArcAtAngle } from \"../svg/pieceDrawing\"\n\nimport { NetworkPipelineCache } from \"../data/networkPipelineCache\"\n\nimport {\n drawNodes,\n drawEdges,\n softStack,\n areaLink,\n ribbonLink,\n circularAreaLink,\n radialLabelGenerator\n} from \"../svg/networkDrawing\"\n\nimport { hierarchy } from \"d3-hierarchy\"\n\nimport {\n NetworkFrameProps,\n NetworkFrameState,\n NetworkSettingsType,\n NodeType\n} from \"../types/networkTypes\"\n\nimport { NetworkLayoutMap } from \"./layouts/types\"\n\nimport { baseNodeProps, baseNetworkSettings, baseGraphSettings, emptyArray } from \"./networkDefaults\"\nimport { determineNodeIcon, determineEdgeIcon, basicMiddle, edgePointHash, hierarchicalProjectable, radialProjectable } from \"./networkLayoutHelpers\"\nimport { hierarchicalTypeHash } from \"./layouts/hierarchyLayout\"\nimport { recursiveIDAccessor, defaultHierarchicalIDAccessor, nodesEdgesFromHierarchy } from \"./hierarchyUtils\"\n\nexport { nodesEdgesFromHierarchy } from \"./hierarchyUtils\"\n\nexport const calculateNetworkFrame = (\n currentProps: NetworkFrameProps,\n prevState: NetworkFrameState,\n cache: NetworkPipelineCache,\n layoutMap?: NetworkLayoutMap\n) => {\n const {\n graph,\n nodes = Array.isArray(graph) || typeof graph === \"function\"\n ? emptyArray\n : (graph && graph.nodes) || emptyArray,\n edges = typeof graph === \"function\"\n ? emptyArray\n : Array.isArray(graph)\n ? graph\n : (graph && graph.edges) || emptyArray,\n networkType,\n size,\n nodeStyle,\n nodeClass,\n canvasNodes,\n edgeStyle,\n edgeClass,\n canvasEdges,\n nodeRenderMode,\n edgeRenderMode,\n nodeLabels,\n title: baseTitle,\n margin: baseMargin,\n hoverAnnotation,\n customNodeIcon: baseCustomNodeIcon,\n customEdgeIcon: baseCustomEdgeIcon,\n filterRenderedNodes\n } = currentProps\n\n let { edgeType } = currentProps\n\n let networkSettings: NetworkSettingsType\n\n const nodeHierarchicalIDFill = {}\n let networkSettingsKeys = [\"type\"]\n\n if (typeof networkType === \"string\") {\n networkSettings = {\n type: networkType,\n ...baseNetworkSettings,\n graphSettings: baseGraphSettings\n }\n } else {\n if (networkType) networkSettingsKeys = Object.keys(networkType)\n\n networkSettings = {\n type: \"force\",\n ...baseNetworkSettings,\n ...networkType,\n graphSettings: baseGraphSettings\n }\n }\n\n if (\n networkSettings.projection === \"vertical\" &&\n networkSettings.type === \"sankey\"\n ) {\n networkSettings.direction = \"down\"\n }\n\n networkSettingsKeys.push(\"height\", \"width\")\n\n const title =\n typeof baseTitle === \"object\" &&\n !React.isValidElement(baseTitle) &&\n baseTitle !== null\n ? (baseTitle as TitleType)\n : ({ title: baseTitle, orient: \"top\" } as TitleType)\n\n const { margin, adjustedPosition, adjustedSize } = cache.marginCalc(baseMargin, title, size)\n\n networkSettings.graphSettings.nodes = nodes\n networkSettings.graphSettings.edges = edges\n networkSettings.graphSettings.filterRenderedNodes = filterRenderedNodes\n\n let { edgeHash, nodeHash } = networkSettings.graphSettings\n\n const createPointLayer =\n networkSettings.type === \"treemap\" ||\n networkSettings.type === \"partition\" ||\n networkSettings.type === \"sankey\"\n\n const cachedAccessors = cache.accessorConversions(\n currentProps.nodeIDAccessor,\n currentProps.sourceAccessor,\n currentProps.targetAccessor,\n currentProps.nodeSizeAccessor,\n currentProps.edgeWidthAccessor\n )\n\n const nodeIDAccessor = cachedAccessors.nodeIDAccessor\n const sourceAccessor = cachedAccessors.sourceAccessor\n const targetAccessor = cachedAccessors.targetAccessor\n const nodeSizeAccessor: (args?: Record<string, any>) => number = cachedAccessors.nodeSizeAccessor as (args?: Record<string, any>) => number\n const edgeWidthAccessor = cachedAccessors.edgeWidthAccessor\n const { nodeStyleFn, nodeClassFn, nodeRenderModeFn, nodeCanvasRenderFn } = cache.nodeStyleFns(\n nodeStyle, nodeClass, nodeRenderMode, canvasNodes\n )\n\n let { projectedNodes, projectedEdges } = prevState\n\n const isHierarchical =\n typeof networkSettings.type === \"string\" &&\n hierarchicalTypeHash[networkSettings.type]\n\n const changedData =\n !prevState.projectedNodes ||\n !prevState.projectedEdges ||\n prevState.graphSettings.nodes !== nodes ||\n prevState.graphSettings.edges !== edges ||\n isHierarchical ||\n prevState.graphSettings.filterRenderedNodes !== filterRenderedNodes\n\n if (networkSettings.type === \"dagre\") {\n const dagreGraph = graph as {\n nodes: Function\n edges: Function\n node: Function\n edge: Function\n }\n const dagreNodeMap = new Map()\n projectedNodes = dagreGraph.nodes().map((n) => {\n const baseNode = dagreGraph.node(n)\n const dagreNode = {\n ...baseNode,\n x0: baseNode.x - baseNode.width / 2,\n x1: baseNode.x + baseNode.width / 2,\n y0: baseNode.y - baseNode.height / 2,\n y1: baseNode.y + baseNode.height / 2,\n id: n,\n shapeNode: true,\n sourceLinks: [],\n targetLinks: []\n }\n dagreNodeMap.set(n, dagreNode)\n return dagreNode\n })\n projectedEdges = dagreGraph.edges().map((e) => {\n const dagreEdge = dagreGraph.edge(e)\n const baseEdge = {\n ...dagreEdge,\n points: dagreEdge.points.map((d) => ({ ...d }))\n }\n baseEdge.source = projectedNodes.find((p) => p.id === e.v)\n baseEdge.target = projectedNodes.find((p) => p.id === e.w)\n baseEdge.points.unshift({ x: baseEdge.source.x, y: baseEdge.source.y })\n baseEdge.points.push({ x: baseEdge.target.x, y: baseEdge.target.y })\n dagreNodeMap.get(e.v).targetLinks.push(baseEdge)\n dagreNodeMap.get(e.w).sourceLinks.push(baseEdge)\n return baseEdge\n })\n } else if (changedData) {\n const previousNodes = projectedNodes\n edgeHash = new Map()\n nodeHash = new Map()\n networkSettings.graphSettings.edgeHash = edgeHash\n networkSettings.graphSettings.nodeHash = nodeHash\n projectedNodes = []\n projectedEdges = []\n const fixFunction =\n typeof networkSettings.fixExistingNodes === \"function\"\n ? networkSettings.fixExistingNodes\n : networkSettings.fixExistingNodes\n ? () => true\n : false\n nodes.forEach((node) => {\n const projectedNode = { ...node }\n const id = nodeIDAccessor(projectedNode)\n const existingNode = previousNodes.find((prevNode) => prevNode.id === id)\n\n const equivalentOldNode = existingNode || { x: undefined, y: undefined }\n nodeHash.set(id, projectedNode)\n nodeHash.set(node, projectedNode)\n projectedNodes.push(projectedNode)\n projectedNode.id = id\n projectedNode.inDegree = 0\n projectedNode.outDegree = 0\n projectedNode.degree = 0\n projectedNode.x = equivalentOldNode.x\n projectedNode.y = equivalentOldNode.y\n if (existingNode && fixFunction && fixFunction(existingNode)) {\n projectedNode.fx = existingNode.x\n projectedNode.fy = existingNode.y\n }\n })\n\n let operationalEdges = edges\n let baseEdges = edges\n\n if (isHierarchical && Array.isArray(edges)) {\n const createdHierarchicalData = softStack(\n edges,\n nodes,\n sourceAccessor,\n targetAccessor,\n nodeIDAccessor\n )\n\n if (createdHierarchicalData.isHierarchical) {\n baseEdges = createdHierarchicalData.hierarchy\n projectedNodes = []\n } else {\n console.error(\n \"You've sent an edge list that is not strictly hierarchical (there are nodes with multiple parents) defaulting to force-directed network layout\"\n )\n networkSettings.type = \"force\"\n }\n }\n\n if (!Array.isArray(baseEdges)) {\n networkSettings.hierarchicalNetwork = true\n const rootNode = hierarchy(baseEdges, networkSettings.hierarchyChildren)\n\n rootNode.sum(networkSettings.hierarchySum || ((d) => d.value))\n\n if (isHierarchical) {\n const layout = networkSettings.layout || isHierarchical\n const hierarchicalLayout = layout()\n const networkSettingKeys = Object.keys(networkSettings)\n if (\n (networkSettings.type === \"dendrogram\" ||\n networkSettings.type === \"tree\" ||\n networkSettings.type === \"cluster\") &&\n hierarchicalLayout.separation\n ) {\n hierarchicalLayout.separation(\n (a, b) =>\n (nodeSizeAccessor({ ...a, ...a.data }) || 1) +\n (networkSettings.nodePadding || 0) +\n (nodeSizeAccessor({ ...b, ...b.data }) || 1)\n )\n }\n\n networkSettingKeys.forEach((key) => {\n if (hierarchicalLayout[key]) {\n hierarchicalLayout[key](networkSettings[key])\n }\n })\n const layoutSize =\n networkSettings.projection === \"horizontal\" && isHierarchical\n ? [adjustedSize[1], adjustedSize[0]]\n : adjustedSize\n if (!networkSettings.nodeSize && hierarchicalLayout.size) {\n hierarchicalLayout.size(layoutSize)\n }\n\n hierarchicalLayout(rootNode)\n }\n\n operationalEdges = nodesEdgesFromHierarchy(rootNode, nodeIDAccessor).edges\n }\n\n baseNodeProps.shapeNode = createPointLayer\n if (Array.isArray(operationalEdges)) {\n operationalEdges.forEach((edge) => {\n const source = sourceAccessor(edge)\n const target = targetAccessor(edge)\n const sourceTarget = [source, target]\n sourceTarget.forEach((nodeDirection) => {\n if (!nodeHash.get(nodeDirection)) {\n const nodeObject: NodeType =\n typeof nodeDirection === \"object\"\n ? {\n ...baseNodeProps,\n ...nodeDirection\n }\n : {\n ...baseNodeProps,\n id: nodeDirection,\n createdByFrame: true\n }\n\n const nodeIDValue = nodeObject.id || nodeIDAccessor(nodeObject)\n nodeHierarchicalIDFill[nodeIDValue]\n ? (nodeHierarchicalIDFill[nodeIDValue] += 1)\n : (nodeHierarchicalIDFill[nodeIDValue] = 1)\n\n if (!nodeObject.id) {\n const nodeSuffix =\n nodeHierarchicalIDFill[nodeIDValue] === 1\n ? \"\"\n : `-${nodeHierarchicalIDFill[nodeIDValue]}`\n nodeObject.id = `${nodeIDValue}${nodeSuffix}`\n }\n\n nodeHash.set(nodeDirection, nodeObject)\n\n projectedNodes.push(nodeObject)\n }\n })\n\n const edgeWeight = edge.weight || 1\n\n const sourceNode = nodeHash.get(source)\n const targetNode = nodeHash.get(target)\n\n targetNode.inDegree += edgeWeight\n sourceNode.outDegree += edgeWeight\n targetNode.degree += edgeWeight\n sourceNode.degree += edgeWeight\n\n const edgeKey = `${nodeIDAccessor(sourceNode) || source}|${\n nodeIDAccessor(targetNode) || target\n }`\n const newEdge = Object.assign({}, edge, {\n source: nodeHash.get(source),\n target: nodeHash.get(target)\n })\n edgeHash.set(edgeKey, newEdge)\n projectedEdges.push(newEdge)\n if (networkSettings.type === \"matrix\") {\n projectedEdges.push({\n ...newEdge,\n source: newEdge.target,\n target: newEdge.source\n })\n }\n })\n }\n } else {\n edgeHash = new Map()\n networkSettings.graphSettings.edgeHash = edgeHash\n projectedEdges.forEach((edge) => {\n const edgeSource =\n typeof edge.source === \"string\"\n ? edge.source\n : nodeIDAccessor(edge.source)\n const edgeTarget =\n typeof edge.target === \"string\"\n ? edge.target\n : nodeIDAccessor(edge.target)\n\n const edgeKey = `${edgeSource}|${edgeTarget}`\n edgeHash.set(edgeKey, edge)\n })\n }\n\n const customNodeIcon = determineNodeIcon(\n baseCustomNodeIcon,\n networkSettings,\n adjustedSize,\n projectedNodes\n )\n\n const customEdgeIcon = determineEdgeIcon({\n baseCustomEdgeIcon,\n networkSettings,\n size: adjustedSize,\n nodes: projectedNodes,\n graph\n })\n\n networkSettings.width = size[0]\n networkSettings.height = size[1]\n\n let networkSettingsChanged = false\n\n networkSettingsKeys.forEach((key) => {\n if (\n key !== \"edgeType\" &&\n key !== \"graphSettings\" &&\n networkSettings[key] !== prevState.graphSettings[key]\n ) {\n networkSettingsChanged = true\n }\n })\n\n //Support bubble chart with circle pack and with force\n if (networkSettings.type === \"sankey\") {\n edgeType = (d) =>\n d.circular\n ? circularAreaLink(d)\n : edgeType === \"angled\"\n ? ribbonLink(d)\n : areaLink(d)\n } else if (isHierarchical) {\n projectedNodes.forEach((node) => {\n if (createPointLayer) {\n node.x = (node.x0 + node.x1) / 2\n node.y = (node.y0 + node.y1) / 2\n }\n if (\n typeof networkSettings.type === \"string\" &&\n hierarchicalProjectable[networkSettings.type] &&\n networkSettings.projection === \"horizontal\"\n ) {\n const ox = node.x\n node.x = node.y\n node.y = ox\n\n if (createPointLayer) {\n const ox0 = node.x0\n const ox1 = node.x1\n node.x0 = node.y0\n node.x1 = node.y1\n node.y0 = ox0\n node.y1 = ox1\n }\n } else if (\n typeof networkSettings.type === \"string\" &&\n radialProjectable[networkSettings.type] &&\n networkSettings.projection === \"radial\"\n ) {\n const radialPoint =\n node.depth === 0\n ? [adjustedSize[0] / 2, adjustedSize[1] / 2]\n : pointOnArcAtAngle(\n [adjustedSize[0] / 2, adjustedSize[1] / 2],\n node.x / adjustedSize[0],\n node.y / 2\n )\n node.x = radialPoint[0]\n node.y = radialPoint[1]\n } else {\n node.x = node.x\n node.y = node.y\n if (createPointLayer) {\n node.x0 = node.x0\n node.x1 = node.x1\n node.y0 = node.y0\n node.y1 = node.y1\n }\n }\n })\n }\n\n if (\n networkSettings.type !== \"static\" &&\n (changedData || networkSettingsChanged)\n ) {\n let components = [\n {\n componentNodes: projectedNodes,\n componentEdges: projectedEdges\n }\n ]\n\n const layoutType = typeof networkSettings.type === \"string\" ? networkSettings.type : \"custom\"\n const handler = layoutMap?.[layoutType]\n\n if (handler) {\n const result = handler({\n projectedNodes,\n projectedEdges,\n networkSettings,\n adjustedSize,\n edgeHash,\n nodeIDAccessor,\n edgeWidthAccessor,\n nodeSizeAccessor,\n size\n })\n projectedNodes = result.projectedNodes\n projectedEdges = result.projectedEdges\n if (result.components) components = result.components\n } else if (typeof networkSettings.type === \"function\") {\n networkSettings.type({\n nodes: projectedNodes,\n edges: projectedEdges\n })\n } else {\n projectedNodes.forEach((node) => {\n node.x = node.x === undefined ? (node.x0 + node.x1) / 2 : node.x\n node.y = node.y === undefined ? node.y0 : node.y\n })\n }\n\n prevState.graphSettings.nodes = currentProps.nodes\n prevState.graphSettings.edges = currentProps.edges\n }\n\n //filter out user-defined nodes\n projectedNodes = projectedNodes.filter(filterRenderedNodes)\n\n projectedEdges = projectedEdges.filter(\n (d) =>\n projectedNodes.indexOf(d.target) !== -1 &&\n projectedNodes.indexOf(d.source) !== -1\n )\n\n if (networkSettings.direction === \"flip\") {\n projectedNodes.forEach((node) => {\n // const ox = node.x\n // const oy = node.y\n node.x = adjustedSize[0] - node.x\n node.y = adjustedSize[1] - node.y\n })\n } else if (\n networkSettings.direction === \"up\" ||\n networkSettings.direction === \"down\"\n ) {\n const mod =\n networkSettings.direction === \"up\"\n ? (value) => adjustedSize[1] - value\n : (value) => value\n projectedNodes.forEach((node) => {\n const ox = node.x\n const ox0 = node.x0\n const ox1 = node.x1\n node.x = mod(node.y)\n node.x0 = mod(node.y0)\n node.x1 = mod(node.y1)\n node.y = ox\n node.y0 = ox0\n node.y1 = ox1\n })\n } else if (networkSettings.direction === \"left\") {\n projectedNodes.forEach((node) => {\n node.x = adjustedSize[0] - node.x\n node.x0 = adjustedSize[0] - node.x0\n node.x1 = adjustedSize[0] - node.x1\n })\n }\n\n if (typeof networkSettings.zoom === \"function\") {\n networkSettings.zoom(projectedNodes, projectedEdges, adjustedSize)\n } else if (\n networkSettings.zoom !== false &&\n networkSettings.type !== \"matrix\" &&\n networkSettings.type !== \"chord\" &&\n networkSettings.type !== \"sankey\" &&\n networkSettings.type !== \"partition\" &&\n networkSettings.type !== \"treemap\" &&\n networkSettings.type !== \"circlepack\" &&\n networkSettings.type !== \"dagre\"\n ) {\n // ZOOM SHOULD MAINTAIN ASPECT RATIO, ADD \"stretch\" to fill whole area\n const xMin = min(projectedNodes.map((p) => p.x - nodeSizeAccessor(p)))\n const xMax = max(projectedNodes.map((p) => p.x + nodeSizeAccessor(p)))\n const yMin = min(projectedNodes.map((p) => p.y - nodeSizeAccessor(p)))\n const yMax = max(projectedNodes.map((p) => p.y + nodeSizeAccessor(p)))\n\n const xSize = Math.abs(xMax - xMin)\n const ySize = Math.abs(yMax - yMin)\n\n const networkAspectRatio = xSize / ySize\n const baseAspectRatio = adjustedSize[0] / adjustedSize[1]\n\n let yMod, xMod\n\n if (networkSettings.zoom === \"stretch\") {\n yMod = 0\n xMod = 0\n } else if (xSize > ySize) {\n if (networkAspectRatio > baseAspectRatio) {\n xMod = 0\n yMod = (adjustedSize[1] - (adjustedSize[0] / xSize) * ySize) / 2\n } else {\n yMod = 0\n xMod = (adjustedSize[0] - (adjustedSize[1] / ySize) * xSize) / 2\n }\n } else {\n if (networkAspectRatio > baseAspectRatio) {\n xMod = 0\n yMod = (adjustedSize[1] - (adjustedSize[0] / xSize) * ySize) / 2\n } else {\n yMod = 0\n xMod = (adjustedSize[0] - (adjustedSize[1] / ySize) * xSize) / 2\n }\n }\n\n const projectionScaleX = scaleLinear()\n .domain([xMin, xMax])\n .range([xMod, adjustedSize[0] - xMod])\n const projectionScaleY = scaleLinear()\n .domain([yMin, yMax])\n .range([yMod, adjustedSize[1] - yMod])\n projectedNodes.forEach((node) => {\n node.x = projectionScaleX(node.x)\n node.y = projectionScaleY(node.y)\n })\n } else if (\n networkSettings.zoom !== false &&\n networkSettings.projection !== \"radial\" &&\n (networkSettings.type === \"partition\" ||\n networkSettings.type === \"treemap\" ||\n networkSettings.type === \"dagre\")\n ) {\n const xMin = min(projectedNodes.map((p) => p.x0))\n const xMax = max(projectedNodes.map((p) => p.x1))\n const yMin = min(projectedNodes.map((p) => p.y0))\n const yMax = max(projectedNodes.map((p) => p.y1))\n\n const projectionScaleX = scaleLinear()\n .domain([xMin, xMax])\n .range([margin.left, adjustedSize[0] - margin.right])\n const projectionScaleY = scaleLinear()\n .domain([yMin, yMax])\n .range([margin.top, adjustedSize[1] - margin.bottom])\n projectedNodes.forEach((node) => {\n node.x = projectionScaleX(node.x)\n node.y = projectionScaleY(node.y)\n node.x0 = projectionScaleX(node.x0)\n node.y0 = projectionScaleY(node.y0)\n node.x1 = projectionScaleX(node.x1)\n node.y1 = projectionScaleY(node.y1)\n node.zoomedHeight = node.y1 - node.y0\n node.zoomedWidth = node.x1 - node.x0\n })\n\n projectedEdges.forEach((edge) => {\n if (edge.points) {\n edge.points.forEach((p) => {\n p.x = projectionScaleX(p.x)\n p.y = projectionScaleY(p.y)\n })\n }\n })\n } else if (\n networkSettings.zoom !== false &&\n networkSettings.type === \"sankey\" &&\n projectedEdges.some((e) => e.circular)\n ) {\n const circularLinks = projectedEdges.filter((e) => e.circular)\n const xMinEdge =\n min(\n circularLinks,\n (e) => e.circularPathData.rightFullExtent - e.sankeyWidth / 2\n ) || Infinity\n const xMaxEdge =\n max(\n circularLinks,\n (e) => e.circularPathData.leftFullExtent + e.sankeyWidth / 2\n ) || -Infinity\n const yMinEdge =\n min(\n circularLinks,\n (e) => e.circularPathData.verticalFullExtent - e.sankeyWidth / 2\n ) || Infinity\n const yMaxEdge =\n max(\n circularLinks,\n (e) => e.circularPathData.verticalFullExtent + e.sankeyWidth / 2\n ) || -Infinity\n\n const yMinNode = min(projectedNodes, (node) => node.y0)\n const yMaxNode = max(projectedNodes, (node) => node.y1)\n const xMinNode = min(projectedNodes, (node) => node.x0)\n const xMaxNode = max(projectedNodes, (node) => node.x1)\n\n const sankeyMinX = Math.min(xMinEdge, xMinNode)\n const sankeyMaxX = Math.max(xMaxEdge, xMaxNode)\n const sankeyMinY = Math.min(yMinEdge, yMinNode)\n const sankeyMaxY = Math.max(yMaxEdge, yMaxNode)\n\n const projectionScaleX = scaleLinear()\n .domain([sankeyMinX, sankeyMaxX])\n .range([0, adjustedSize[0]])\n const projectionScaleY = scaleLinear()\n .domain([sankeyMinY, sankeyMaxY])\n .range([0, adjustedSize[1]])\n\n const widthFactor = adjustedSize[1] / (sankeyMaxY - sankeyMinY)\n\n for (const node of projectedNodes) {\n node.x = projectionScaleX(node.x)\n node.x0 = projectionScaleX(node.x0)\n node.x1 = projectionScaleX(node.x1)\n node.y = projectionScaleY(node.y)\n node.y0 = projectionScaleY(node.y0)\n node.y1 = projectionScaleY(node.y1)\n node.width = node.x1 - node.x0\n node.height = node.y1 - node.y0\n }\n\n for (const edge of projectedEdges) {\n if (edge.circular) {\n edge.circularPathData.sourceX = projectionScaleX(\n edge.circularPathData.sourceX\n )\n edge.circularPathData.sourceY = projectionScaleY(\n edge.circularPathData.sourceY\n )\n edge.circularPathData.leftFullExtent = projectionScaleX(\n edge.circularPathData.leftFullExtent\n )\n edge.circularPathData.verticalFullExtent = projectionScaleY(\n edge.circularPathData.verticalFullExtent\n )\n edge.circularPathData.rightFullExtent = projectionScaleX(\n edge.circularPathData.rightFullExtent\n )\n edge.circularPathData.targetX = projectionScaleX(\n edge.circularPathData.targetX\n )\n edge.circularPathData.targetY = projectionScaleY(\n edge.circularPathData.targetY\n )\n } else {\n edge.y0 = projectionScaleY(edge.y0)\n edge.y1 = projectionScaleY(edge.y1)\n }\n edge.sankeyWidth = edge.sankeyWidth * widthFactor\n }\n }\n\n projectedNodes.forEach((node) => {\n node.nodeSize = nodeSizeAccessor(node)\n })\n\n projectedEdges.forEach((edge) => {\n edge.width = edgeWidthAccessor(edge)\n })\n\n let legendSettings\n\n if (currentProps.legend) {\n legendSettings = currentProps.legend\n if (!legendSettings.legendGroups) {\n ///Something auto for networks\n const legendGroups = [\n {\n styleFn: currentProps.nodeStyle,\n type: \"fill\",\n items: []\n }\n ]\n legendSettings.legendGroups = legendGroups\n }\n }\n\n const cachedEdgeStyles = cache.edgeStyleFns(edgeStyle, edgeClass, edgeRenderMode, canvasEdges)\n\n const networkFrameRender = {\n edges: {\n accessibleTransform: (data, i) => {\n const edgeX = (data[i].source.x + data[i].target.x) / 2\n const edgeY = (data[i].source.y + data[i].target.y) / 2\n return { type: \"frame-hover\", ...data[i], x: edgeX, y: edgeY }\n },\n data: projectedEdges,\n styleFn: cachedEdgeStyles.edgeStyleFn,\n classFn: cachedEdgeStyles.edgeClassFn,\n renderMode: cachedEdgeStyles.edgeRenderModeFn,\n canvasRenderFn: cachedEdgeStyles.edgeCanvasRenderFn,\n renderKeyFn: currentProps.edgeRenderKey\n ? currentProps.edgeRenderKey\n : (d) => d._NWFEdgeKey || d.key || `${d.source.id}-${d.target.id}`,\n behavior: drawEdges,\n projection: networkSettings.projection,\n type: edgeType,\n customMark: customEdgeIcon,\n networkSettings,\n numberOfNodes: projectedNodes.length,\n size: adjustedSize\n },\n nodes: {\n accessibleTransform: (data, i) => ({\n type: \"frame-hover\",\n ...data[i],\n ...(data[i].data || {})\n }),\n data: projectedNodes,\n styleFn: nodeStyleFn,\n classFn: nodeClassFn,\n renderMode: nodeRenderModeFn,\n canvasRenderFn: nodeCanvasRenderFn,\n customMark: customNodeIcon,\n behavior: drawNodes,\n renderKeyFn: currentProps.nodeRenderKey,\n networkSettings\n }\n }\n\n const nodeLabelAnnotations = []\n if (currentProps.nodeLabels && projectedNodes) {\n projectedNodes.forEach((node, nodei) => {\n const feasibleLabel =\n nodeLabels && nodeLabels !== true && nodeLabels(node)\n\n if (nodeLabels === true || feasibleLabel) {\n const actualLabel =\n networkSettings.projection === \"radial\" && node.depth !== 0\n ? radialLabelGenerator(\n node,\n nodei,\n nodeLabels === true ? nodeIDAccessor : nodeLabels,\n adjustedSize\n )\n : nodeLabels === true\n ? nodeIDAccessor(node, nodei)\n : feasibleLabel\n\n let nodeLabel\n\n if (React.isValidElement(actualLabel)) {\n nodeLabel = {\n key: `node-label-${nodei}`,\n type: \"basic-node-label\",\n x: node.x,\n y: node.y,\n element: actualLabel\n }\n } else {\n nodeLabel = {\n key: `node-label-${nodei}`,\n className: \"node-label\",\n dx: 0,\n dy: 0,\n x: node.x,\n y: node.y,\n color: \"currentColor\",\n note: { label: actualLabel },\n connector: { end: \"none\" },\n type: \"label\",\n subject: { radius: nodeSizeAccessor(node) + 2 }\n }\n }\n\n nodeLabelAnnotations.push(nodeLabel)\n }\n })\n }\n\n let projectedXYPoints\n const overlay = []\n const areaBasedTypes = [\n \"circlepack\",\n \"treemap\",\n \"partition\",\n \"chord\"\n // \"matrix\"\n ]\n if (\n (hoverAnnotation &&\n areaBasedTypes.find((d) => d === networkSettings.type)) ||\n hoverAnnotation === \"area\"\n ) {\n if (hoverAnnotation !== \"edge\") {\n const renderedNodeOverlays = projectedNodes.map((d, i) => ({\n overlayData: d,\n ...customNodeIcon({\n d,\n i,\n transform: `translate(${d.x},${d.y})`,\n styleFn: () => ({ opacity: 0 })\n }).props\n }))\n\n overlay.push(...renderedNodeOverlays)\n }\n if (hoverAnnotation !== \"node\") {\n projectedEdges.forEach((d, i) => {\n const generatedIcon = customEdgeIcon({\n d,\n i,\n transform: `translate(${d.x},${d.y})`,\n styleFn: () => ({ opacity: 0 })\n })\n if (generatedIcon) {\n overlay.push({\n overlayData: {\n ...d,\n x: d.x === undefined ? (d.source.x + d.target.x) / 2 : d.x,\n y: d.y === undefined ? (d.source.y + d.target.y) / 2 : d.y,\n edge: true\n },\n ...generatedIcon.props\n })\n }\n })\n }\n } else if (\n hoverAnnotation === \"edge\" &&\n typeof networkSettings.type === \"string\" &&\n edgePointHash[networkSettings.type]\n ) {\n projectedXYPoints = projectedEdges.map(edgePointHash[networkSettings.type])\n } else if (\n Array.isArray(hoverAnnotation) ||\n hoverAnnotation === true ||\n hoverAnnotation === \"node\"\n ) {\n projectedXYPoints = projectedNodes\n if (changedData || networkSettingsChanged)\n projectedXYPoints = [...projectedNodes]\n } else if (\n hoverAnnotation === \"all\" &&\n typeof networkSettings.type === \"string\"\n ) {\n projectedXYPoints = [\n ...projectedEdges.map(edgePointHash[networkSettings.type]),\n ...projectedNodes\n ]\n }\n\n return {\n adjustedPosition: adjustedPosition,\n adjustedSize: adjustedSize,\n backgroundGraphics: currentProps.backgroundGraphics,\n foregroundGraphics: currentProps.foregroundGraphics,\n title,\n renderNumber: prevState.renderNumber + 1,\n projectedNodes,\n projectedEdges,\n projectedXYPoints,\n overlay,\n nodeIDAccessor,\n sourceAccessor,\n targetAccessor,\n nodeSizeAccessor,\n edgeWidthAccessor,\n margin,\n legendSettings,\n networkFrameRender,\n nodeLabelAnnotations,\n graphSettings: {\n ...networkSettings.graphSettings,\n ...networkSettings\n },\n props: currentProps\n }\n}\n","import memoize from \"memoize-one\"\nimport { calculateMargin, adjustedPositionSize } from \"../svg/frameFunctions\"\nimport { stringToFn } from \"./dataFunctions\"\n\nimport { genericFunction } from \"../generic_utilities/functions\"\n\nexport function createNetworkPipelineCache() {\n return {\n marginCalc: memoize((\n margin: any,\n title: any,\n size: number[]\n ) => {\n const calculatedMargin = calculateMargin({ margin, title, size })\n const { adjustedPosition, adjustedSize } = adjustedPositionSize({\n size,\n margin: calculatedMargin\n })\n return { margin: calculatedMargin, adjustedPosition, adjustedSize }\n }),\n\n accessorConversions: memoize((\n nodeIDAccessor: any,\n sourceAccessor: any,\n targetAccessor: any,\n nodeSizeAccessor: any,\n edgeWidthAccessor: any\n ) => ({\n nodeIDAccessor: stringToFn<string>(nodeIDAccessor, (d) => d ? d.id : undefined),\n sourceAccessor: stringToFn<string | Record<string, any>>(sourceAccessor, (d) => d.source),\n targetAccessor: stringToFn<string | Record<string, any>>(targetAccessor, (d) => d.target),\n nodeSizeAccessor: typeof nodeSizeAccessor === \"number\"\n ? genericFunction(nodeSizeAccessor)\n : stringToFn<number>(nodeSizeAccessor, genericFunction(5)),\n edgeWidthAccessor: stringToFn<number>(edgeWidthAccessor, (d) => d.weight || 1),\n })),\n\n nodeStyleFns: memoize((\n nodeStyle: any,\n nodeClass: any,\n nodeRenderMode: any,\n canvasNodes: any\n ) => ({\n nodeStyleFn: stringToFn<Record<string, any>>(nodeStyle, () => ({}), true),\n nodeClassFn: stringToFn<string>(nodeClass, () => \"\", true),\n nodeRenderModeFn: stringToFn<string | Record<string, any>>(nodeRenderMode, undefined, true),\n nodeCanvasRenderFn: canvasNodes ? stringToFn<boolean>(canvasNodes, undefined, true) : undefined,\n })),\n\n edgeStyleFns: memoize((\n edgeStyle: any,\n edgeClass: any,\n edgeRenderMode: any,\n canvasEdges: any\n ) => ({\n edgeStyleFn: stringToFn<Record<string, any>>(edgeStyle, () => ({}), true),\n edgeClassFn: stringToFn<string>(edgeClass, () => \"\", true),\n edgeRenderModeFn: stringToFn<string | Record<string, any>>(edgeRenderMode, undefined, true),\n edgeCanvasRenderFn: canvasEdges ? stringToFn<boolean>(canvasEdges, undefined, true) : undefined,\n })),\n }\n}\n\nexport type NetworkPipelineCache = ReturnType<typeof createNetworkPipelineCache>\n","import * as React from \"react\"\nimport { drawMarginPath } from \"../svg/frameFunctions\"\n\ntype FilterDefTypes = {\n matte?: React.ReactNode\n key: string\n additionalDefs?: React.ReactNode\n}\n\nexport const filterDefs = ({ matte, key, additionalDefs }: FilterDefTypes) => (\n <defs>\n <filter id=\"paintyFilterHeavy\">\n <feGaussianBlur\n id=\"gaussblurrer\"\n in=\"SourceGraphic\"\n stdDeviation={4}\n colorInterpolationFilters=\"sRGB\"\n result=\"blur\"\n />\n <feColorMatrix\n in=\"blur\"\n mode=\"matrix\"\n values=\"1 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 34 -7\"\n result=\"gooey\"\n />\n </filter>\n <filter id=\"paintyFilterLight\">\n <feGaussianBlur\n id=\"gaussblurrer\"\n in=\"SourceGraphic\"\n stdDeviation={2}\n colorInterpolationFilters=\"sRGB\"\n result=\"blur\"\n />\n <feColorMatrix\n in=\"blur\"\n mode=\"matrix\"\n values=\"1 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 34 -7\"\n result=\"gooey\"\n />\n </filter>\n <clipPath id={`matte-clip-${key}`}>{matte}</clipPath>\n {additionalDefs}\n </defs>\n)\n\nexport const generateFinalDefs = ({\n matte,\n size,\n margin,\n frameKey,\n additionalDefs,\n name\n}) => {\n let marginGraphic\n\n if (typeof matte === \"function\") {\n marginGraphic = matte({ size, margin })\n } else if (React.isValidElement(matte)) {\n marginGraphic = matte\n } else if (matte === true) {\n marginGraphic = (\n <path\n fill=\"white\"\n transform={`translate(${-margin.left},${-margin.top})`}\n d={drawMarginPath({\n margin,\n size: size,\n inset: 0\n })}\n className={`${name}-matte`}\n />\n )\n }\n\n const finalFilterDefs = filterDefs({\n matte: marginGraphic,\n key: matte && (frameKey || name),\n additionalDefs: additionalDefs\n })\n\n return { defs: finalFilterDefs, matte: marginGraphic }\n}\n","import * as React from \"react\"\nimport * as ReactDOMServer from \"react-dom/server\"\n\nimport { scaleLinear } from \"d3-scale\"\nimport { scaleBand } from \"d3-scale\"\n\nimport { calculateXYFrame } from \"../processing/xyDrawing\"\nimport { createXYPipelineCache } from \"../data/xyPipelineCache\"\n\nimport { calculateOrdinalFrame } from \"../processing/ordinal\"\nimport { createOrdinalPipelineCache } from \"../data/ordinalPipelineCache\"\n\nimport { calculateNetworkFrame } from \"../processing/network\"\nimport { createNetworkPipelineCache } from \"../data/networkPipelineCache\"\n\nimport { generateFinalDefs } from \"../constants/jsx\"\nimport { generateFrameTitle } from \"../svg/frameFunctions\"\n\nimport { stringToFn, stringToArrayFn } from \"../data/dataFunctions\"\nimport { genericFunction } from \"../generic_utilities/functions\"\n\nimport {\n projectedX,\n projectedY,\n projectedYTop,\n projectedYMiddle,\n projectedYBottom,\n projectedXMiddle,\n projectedXTop,\n projectedXBottom\n} from \"../constants/coordinateNames\"\n\nimport { XYFrameProps, XYFrameState } from \"../types/xyTypes\"\nimport { OrdinalFrameProps, OrdinalFrameState } from \"../types/ordinalTypes\"\nimport { NetworkFrameProps, NetworkFrameState } from \"../types/networkTypes\"\nimport { RenderPipelineType } from \"../types/generalTypes\"\n\ntype FrameType = \"xy\" | \"ordinal\" | \"network\"\n\nconst xyProjectedCoordinateNames = {\n y: projectedY,\n x: projectedX,\n yMiddle: projectedYMiddle,\n yTop: projectedYTop,\n yBottom: projectedYBottom,\n xMiddle: projectedXMiddle,\n xTop: projectedXTop,\n xBottom: projectedXBottom\n}\n\nconst ordinalProjectedCoordinateNames = { y: \"y\", x: \"x\" }\nconst networkProjectedCoordinateNames = { y: \"y\", x: \"x\" }\n\nconst defaultFrameRenderOrder = [\n \"axes-tick-lines\",\n \"viz-layer\",\n \"matte\",\n \"axes-labels\",\n \"labels\"\n]\n\nfunction runVisualizationPipeline(\n renderPipeline: RenderPipelineType,\n renderOrder: ReadonlyArray<string>,\n xScale: Function,\n yScale: Function,\n projectedCoordinateNames: object\n): React.ReactNode[] {\n const renderedElements: React.ReactNode[] = []\n const renderVizKeys = Object.keys(renderPipeline)\n const renderKeys = [\n ...renderOrder,\n ...renderVizKeys.filter((d) => renderOrder.indexOf(d) === -1)\n ]\n\n renderKeys.forEach((k) => {\n const pipe = renderPipeline[k]\n if (\n pipe &&\n ((pipe.data &&\n typeof pipe.data === \"object\" &&\n !Array.isArray(pipe.data)) ||\n (pipe.data && (pipe.data as any[]).length > 0))\n ) {\n const renderedPipe = pipe.behavior({\n xScale,\n yScale,\n canvasDrawing: [],\n projectedCoordinateNames,\n ...pipe\n })\n\n if (renderedPipe && renderedPipe.length > 0) {\n renderedElements.push(\n <g key={k} className={k} role=\"group\">\n {renderedPipe}\n </g>\n )\n }\n }\n })\n return renderedElements\n}\n\nfunction buildXYBaseState(props: XYFrameProps): XYFrameState {\n return {\n size: [500, 500],\n dataVersion: undefined,\n lineData: undefined,\n pointData: undefined,\n summaryData: undefined,\n projectedLines: undefined,\n projectedPoints: undefined,\n projectedSummaries: undefined,\n fullDataset: [],\n adjustedPosition: [0, 0],\n adjustedSize: [500, 500],\n backgroundGraphics: null,\n foregroundGraphics: null,\n axesData: undefined,\n axes: undefined,\n axesTickLines: undefined,\n renderNumber: 0,\n margin: { top: 0, bottom: 0, left: 0, right: 0 },\n calculatedXExtent: [0, 0],\n calculatedYExtent: [0, 0],\n xAccessor: [(d: { x: number }) => d.x],\n yAccessor: [(d: { y: number }) => d.y],\n xExtent: [0, 0],\n yExtent: [0, 0],\n areaAnnotations: [],\n xScale: scaleLinear(),\n yScale: scaleLinear(),\n title: null,\n legendSettings: undefined,\n xyFrameRender: {},\n canvasDrawing: [],\n annotatedSettings: {\n xAccessor: undefined,\n yAccessor: undefined,\n summaryDataAccessor: undefined,\n lineDataAccessor: undefined,\n renderKeyFn: undefined,\n lineType: undefined,\n summaryType: undefined,\n lineIDAccessor: undefined,\n summaries: undefined,\n lines: undefined,\n title: undefined,\n xExtent: undefined,\n yExtent: undefined\n },\n overlay: undefined,\n props\n } as XYFrameState\n}\n\nfunction buildOrdinalBaseState(props: OrdinalFrameProps): OrdinalFrameState {\n return {\n adjustedPosition: [],\n adjustedSize: [],\n backgroundGraphics: undefined,\n foregroundGraphics: undefined,\n axisData: undefined,\n renderNumber: 0,\n oLabels: { labels: [] },\n oAccessor: stringToArrayFn<string>(\"renderKey\"),\n rAccessor: stringToArrayFn<number>(\"value\"),\n oScale: scaleBand(),\n rScale: scaleLinear(),\n axes: undefined,\n calculatedOExtent: [],\n calculatedRExtent: [0, 1],\n columnOverlays: [],\n dataVersion: undefined,\n legendSettings: undefined,\n margin: { top: 0, bottom: 0, left: 0, right: 0 },\n oExtent: [],\n oScaleType: scaleBand(),\n orFrameRender: {},\n pieceDataXY: [],\n pieceIDAccessor: stringToFn<string>(\"semioticPieceID\"),\n projectedColumns: {},\n rExtent: [],\n rScaleType: scaleLinear(),\n summaryType: { type: \"none\" },\n title: {},\n type: { type: \"none\" },\n props\n } as OrdinalFrameState\n}\n\nfunction buildNetworkBaseState(props: NetworkFrameProps): NetworkFrameState {\n return {\n dataVersion: undefined,\n nodeData: [],\n edgeData: [],\n adjustedPosition: [],\n adjustedSize: [],\n backgroundGraphics: null,\n foregroundGraphics: null,\n projectedNodes: [],\n projectedEdges: [],\n renderNumber: 0,\n nodeLabelAnnotations: [],\n graphSettings: {\n type: \"empty-start\",\n nodes: [],\n edges: [],\n nodeHash: new Map(),\n edgeHash: new Map(),\n hierarchicalNetwork: false\n },\n edgeWidthAccessor: stringToFn<number>(\"weight\"),\n legendSettings: undefined,\n margin: { top: 0, left: 0, right: 0, bottom: 0 },\n networkFrameRender: {},\n nodeIDAccessor: stringToFn<string>(\"id\"),\n nodeSizeAccessor: genericFunction(5),\n overlay: [],\n projectedXYPoints: [],\n sourceAccessor: stringToFn<string | Record<string, any>>(\"source\"),\n targetAccessor: stringToFn<string | Record<string, any>>(\"target\"),\n title: { title: undefined },\n props\n } as NetworkFrameState\n}\n\nfunction renderXYFrame(props: XYFrameProps): string {\n const xyDefaultProps = {\n annotations: [],\n foregroundGraphics: undefined,\n size: [500, 500] as number[],\n className: \"\",\n lineType: \"line\",\n name: \"xyframe\",\n dataVersion: undefined\n }\n const mergedProps = { ...xyDefaultProps, ...props }\n const cache = createXYPipelineCache()\n const baseState = buildXYBaseState(mergedProps)\n\n const state = {\n ...baseState,\n ...calculateXYFrame(mergedProps, baseState, true, cache)\n } as XYFrameState\n\n const {\n margin,\n adjustedPosition,\n adjustedSize,\n xyFrameRender,\n xScale,\n yScale,\n axes,\n axesTickLines,\n annotatedSettings\n } = state\n\n const size = mergedProps.size || [500, 500]\n const renderOrder = mergedProps.renderOrder || []\n const frameRenderOrder = mergedProps.frameRenderOrder || defaultFrameRenderOrder\n\n const renderedElements = runVisualizationPipeline(\n xyFrameRender,\n renderOrder,\n xScale,\n yScale,\n xyProjectedCoordinateNames\n )\n\n return assembleAndRender({\n size,\n margin,\n renderedElements,\n axes,\n axesTickLines,\n title: annotatedSettings.title,\n frameRenderOrder,\n additionalDefs: mergedProps.additionalDefs,\n name: \"xyframe\",\n matte: mergedProps.matte,\n frameKey: mergedProps.frameKey || \"static\"\n })\n}\n\nfunction renderOrdinalFrame(props: OrdinalFrameProps): string {\n const ordinalDefaultProps: Partial<OrdinalFrameProps> = {\n annotations: [],\n foregroundGraphics: [],\n projection: \"vertical\",\n size: [500, 500],\n className: \"\",\n data: [],\n type: \"none\"\n }\n const mergedProps = { ...ordinalDefaultProps, ...props } as OrdinalFrameProps\n const cache = createOrdinalPipelineCache()\n const baseState = buildOrdinalBaseState(mergedProps)\n\n const state = {\n ...baseState,\n ...calculateOrdinalFrame(mergedProps, baseState, cache)\n } as OrdinalFrameState\n\n const {\n margin,\n adjustedSize,\n orFrameRender,\n axes,\n axesTickLines,\n title\n } = state\n\n const size = [\n adjustedSize[0] + margin.left + margin.right,\n adjustedSize[1] + margin.top + margin.bottom\n ]\n\n const oXScale = scaleLinear()\n const oYScale = scaleLinear()\n const renderOrder = mergedProps.renderOrder || []\n const frameRenderOrder = mergedProps.frameRenderOrder || defaultFrameRenderOrder\n\n const renderedElements = runVisualizationPipeline(\n orFrameRender,\n renderOrder,\n oXScale,\n oYScale,\n ordinalProjectedCoordinateNames\n )\n\n return assembleAndRender({\n size,\n margin,\n renderedElements,\n axes,\n axesTickLines,\n title,\n frameRenderOrder,\n additionalDefs: mergedProps.additionalDefs,\n name: \"ordinalframe\",\n matte: mergedProps.matte,\n frameKey: \"static\"\n })\n}\n\nfunction renderNetworkFrame(props: NetworkFrameProps): string {\n const networkDefaultProps = {\n annotations: [],\n foregroundGraphics: [],\n size: [500, 500] as number[],\n className: \"\",\n name: \"networkframe\",\n networkType: { type: \"force\", iterations: 500 }\n }\n const mergedProps = { ...networkDefaultProps, ...props }\n const cache = createNetworkPipelineCache()\n const baseState = buildNetworkBaseState(mergedProps)\n\n const state = {\n ...baseState,\n ...calculateNetworkFrame(mergedProps, baseState, cache)\n } as NetworkFrameState\n\n const {\n margin,\n networkFrameRender,\n title,\n graphSettings\n } = state\n\n const size = mergedProps.size || [500, 500]\n\n const nXScale = scaleLinear()\n const nYScale = scaleLinear()\n\n const matrixRenderOrder: ReadonlyArray<string> = [\"nodes\", \"edges\"]\n const generalRenderOrder: ReadonlyArray<string> = [\"edges\", \"nodes\"]\n const renderOrder = mergedProps.renderOrder ||\n (graphSettings && graphSettings.type === \"matrix\"\n ? matrixRenderOrder\n : generalRenderOrder)\n const frameRenderOrder = mergedProps.frameRenderOrder || defaultFrameRenderOrder\n\n const renderedElements = runVisualizationPipeline(\n networkFrameRender,\n renderOrder,\n nXScale,\n nYScale,\n networkProjectedCoordinateNames\n )\n\n return assembleAndRender({\n size,\n margin,\n renderedElements,\n title,\n frameRenderOrder,\n additionalDefs: mergedProps.additionalDefs,\n name: \"networkframe\",\n matte: mergedProps.matte,\n frameKey: \"static\"\n })\n}\n\ninterface AssembleOptions {\n size: number[]\n margin: { top: number; bottom: number; left: number; right: number }\n renderedElements: React.ReactNode[]\n axes?: React.ReactNode[]\n axesTickLines?: React.ReactNode | Object[]\n title?: any\n frameRenderOrder: string[]\n additionalDefs?: React.ReactNode\n name: string\n matte?: any\n frameKey: string\n}\n\nfunction assembleAndRender({\n size,\n margin,\n renderedElements,\n axes,\n axesTickLines,\n title,\n frameRenderOrder,\n additionalDefs,\n name,\n matte,\n frameKey\n}: AssembleOptions): string {\n const renderHash: Record<string, React.ReactNode> = {\n \"axes-tick-lines\": axesTickLines ? (\n <g\n key=\"visualization-tick-lines\"\n className=\"axis axis-tick-lines\"\n aria-hidden={true}\n >\n {axesTickLines as React.ReactNode}\n </g>\n ) : null,\n \"axes-labels\": axes ? (\n <g key=\"visualization-axis-labels\" className=\"axis axis-labels\">\n {axes}\n </g>\n ) : null,\n \"viz-layer\":\n renderedElements && renderedElements.length > 0\n ? renderedElements\n : null\n }\n\n const orderedElements: React.ReactNode[] = []\n frameRenderOrder.forEach((r) => {\n if (renderHash[r]) {\n orderedElements.push(renderHash[r])\n }\n })\n\n const generatedTitle = generateFrameTitle({\n title: title || { title: undefined },\n size\n })\n\n const { defs } = generateFinalDefs({\n matte: null,\n size,\n margin,\n frameKey,\n additionalDefs,\n name\n })\n\n const svgElement = (\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n className={`${name} frame`}\n width={size[0]}\n height={size[1]}\n >\n {defs}\n {orderedElements.length > 0 && (\n <g\n className=\"data-visualization\"\n key=\"visualization-clip-path\"\n role=\"group\"\n transform={`translate(${margin.left},${margin.top})`}\n >\n {orderedElements}\n </g>\n )}\n {generatedTitle && <g className=\"frame-title\">{generatedTitle}</g>}\n </svg>\n )\n\n return ReactDOMServer.renderToStaticMarkup(svgElement)\n}\n\nexport function renderToStaticSVG(\n frameType: FrameType,\n props: XYFrameProps | OrdinalFrameProps | NetworkFrameProps\n): string {\n switch (frameType) {\n case \"xy\":\n return renderXYFrame(props as XYFrameProps)\n case \"ordinal\":\n return renderOrdinalFrame(props as OrdinalFrameProps)\n case \"network\":\n return renderNetworkFrame(props as NetworkFrameProps)\n default:\n throw new Error(\n `Unknown frame type: ${frameType}. Must be \"xy\", \"ordinal\", or \"network\".`\n )\n }\n}\n\nexport function renderXYToStaticSVG(props: XYFrameProps): string {\n return renderXYFrame(props)\n}\n\nexport function renderOrdinalToStaticSVG(props: OrdinalFrameProps): string {\n return renderOrdinalFrame(props)\n}\n\nexport function renderNetworkToStaticSVG(props: NetworkFrameProps): string {\n return renderNetworkFrame(props)\n}\n"],"names":["React","emptyObjectReturnFn","quantile","arc","scaleLinear","shapeBounds","contourDensity","hexbin","curveCardinal","regression","twoPI","line","curveLinearClosed","curveStep","curveStepBefore","curveStepAfter","curveBasis","curveLinear","curveCatmullRom","curveMonotoneY","curveMonotoneX","curveNatural","area","histogram","max","sum","useState","useRef","useEffect","memoize","forceSimulation","forceY","forceX","forceCollide","pathBounds","scaleOrdinal","extent","min","curvature","linkHorizontal","linkVertical","glyphD","pathArrows","select","interpolateNumber","tree","pack","cluster","treemap","partition","hierarchy","scaleBand","ReactDOMServer.renderToStaticMarkup"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAqBA,MAAM,2BAA2B,GAAG,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,EAAE,MAAM,KAAI;AAC9D,IAAA,MAAM,IAAI,GAAG,KAAK,GAAG,KAAK;IAC1B,IAAI,WAAW,GAAG,CAAC;AACnB,IAAA,IAAI,QAAQ,GAAG,CAAA,GAAA,EAAM,CAAC,EAAE;AACxB,IAAA,MAAM,GAAG,GAAG,MAAM,KAAK,OAAO,GAAG,EAAE,GAAG,CAAC;AACvC,IAAA,OAAO,WAAW,IAAI,KAAK,EAAE;AAC3B,QAAA,QAAQ,IAAI,CAAA,CAAA,EAAI,WAAW,CAAA,CAAA,EAAI,CAAC,EAAE;AAClC,QAAA,IAAI,WAAW,GAAG,KAAK,EAAE;AACvB,YAAA,QAAQ,IAAI,CAAA,CAAA,EAAI,WAAW,GAAG,IAAI,GAAG,CAAC,CAAA,CAAA,EAAI,CAAC,GAAG,EAAE,GAAG,GAAG,EAAE;QAC1D;QACA,WAAW,IAAI,IAAI;IACrB;AACA,IAAA,OAAO,QAAQ;AACjB,CAAC;AAED,MAAM,yBAAyB,GAAG,CAAC,MAAM,EAAE,KAAK,EAAE,CAAC,EAAE,MAAM,KAAI;AAC7D,IAAA,MAAM,IAAI,GAAG,MAAM,GAAG,KAAK;IAC3B,IAAI,WAAW,GAAG,CAAC;AACnB,IAAA,IAAI,QAAQ,GAAG,CAAA,CAAA,EAAI,CAAC,IAAI;AACxB,IAAA,MAAM,GAAG,GAAG,MAAM,KAAK,QAAQ,GAAG,EAAE,GAAG,CAAC;AACxC,IAAA,OAAO,WAAW,IAAI,MAAM,EAAE;AAC5B,QAAA,QAAQ,IAAI,CAAA,CAAA,EAAI,CAAC,CAAA,CAAA,EAAI,WAAW,EAAE;AAClC,QAAA,IAAI,WAAW,GAAG,MAAM,EAAE;AACxB,YAAA,QAAQ,IAAI,CAAA,CAAA,EAAI,CAAC,GAAG,EAAE,GAAG,GAAG,CAAA,CAAA,EAAI,WAAW,GAAG,IAAI,GAAG,CAAC,EAAE;QAC1D;QACA,WAAW,IAAI,IAAI;IACrB;AACA,IAAA,OAAO,QAAQ;AACjB,CAAC;AAED,MAAM,oBAAoB,GAAG,CAAC,MAAM,EAAE,gBAAgB,KAAI;IACxD,IAAI,KAAK,GAAG,EAAE;IACd,MAAM,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,gBAAgB;IAC3C,IAAI,MAAM,KAAK,MAAM,IAAI,MAAM,KAAK,OAAO,EAAE;QAC3C,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,CAAC,EAAE,GAAG,EAAE,CAAC;QACnC,MAAM,KAAK,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,GAAG,EAAE,CAAC;QACvC,KAAK,GAAG,2BAA2B,CACjC,SAAS,EACT,KAAK,EACL,MAAM,KAAK,OAAO,GAAG,CAAC,GAAG,EAAE,EAC3B,MAAM,CACP;IACH;SAAO;QACL,MAAM,UAAU,GAAG,IAAI,CAAC,GAAG,CAAC,EAAE,GAAG,EAAE,CAAC;QACpC,MAAM,KAAK,GAAG,IAAI,CAAC,IAAI,CAAC,UAAU,GAAG,EAAE,CAAC;QACxC,KAAK,GAAG,yBAAyB,CAAC,UAAU,EAAE,KAAK,EAAE,EAAE,EAAE,MAAM,CAAC;IAClE;AACA,IAAA,OAAO,KAAK;AACd,CAAC;AAED,MAAM,wBAAwB,GAAG,CAAC,EAChC,EAAE,EACF,MAAM,EACN,CAAC,EAED,SAAS,GAAG,EAAE,EACd,UAAU,EACX,KAAI;AACH,IAAA,IAAI,IAAI,GAAG,CAAA,CAAA,EAAI,EAAE,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,CAAA,CAAA,EAAI,EAAE,CAAC,EAAE,CAAA,CAAA,EAAI,EAAE,CAAC,EAAE,EAAE;AACjD,IAAA,IAAI,UAAU,IAAI,CAAC,KAAK,CAAC,EAAE;AACzB,QAAA,IAAI,GAAG,oBAAoB,CAAC,MAAM,EAAE,EAAE,CAAC;IACzC;AACA,IAAA,QACEA,gBAAA,CAAA,aAAA,CAAA,MAAA,EAAA,EAAM,GAAG,EAAE,CAAC,EAEV,IAAI,EAAC,MAAM,EACX,MAAM,EAAC,cAAc,EACrB,WAAW,EAAC,KAAK,EACjB,CAAC,EAAE,IAAI,EACP,SAAS,EAAE,CAAA,eAAA,EAAkB,MAAM,CAAA,CAAA,EAAI,SAAS,CAAA,CAAE,EAAA,CAChD;AAER,CAAC;AAED,MAAM,yBAAyB,GAAG,CAAC,EAAE,EAAE,EAAE,MAAM,EAAE,CAAC,EAAE,SAAS,GAAG,EAAE,EAAE,KAAI;IACtE,MAAM,UAAU,GAAG,CAAC;AACpB,IAAA,IAAI,IAAI,GAAG,CAAA,IAAA,EAAO,EAAE,CAAC,EAAE,CAAA,CAAA,EAAI,EAAE,CAAC,EAAE,CAAA,CAAA,EAAI,EAAE,CAAC,EAAE,EAAE;AAC3C,IAAA,IAAI,MAAM,KAAK,MAAM,EAAE;QACrB,IAAI,GAAG,IAAI,EAAE,CAAC,EAAE,GAAG,UAAU,IAAI,EAAE,CAAC,EAAE,CAAA,CAAA,EAAI,EAAE,CAAC,EAAE,CAAA,CAAA,EAAI,EAAE,CAAC,EAAE,EAAE;IAC5D;AAAO,SAAA,IAAI,MAAM,KAAK,OAAO,EAAE;QAC7B,IAAI,GAAG,IAAI,EAAE,CAAC,EAAE,CAAA,CAAA,EAAI,EAAE,CAAC,EAAE,CAAA,CAAA,EAAI,EAAE,CAAC,EAAE,GAAG,UAAU,CAAA,CAAA,EAAI,EAAE,CAAC,EAAE,EAAE;IAC5D;AAAO,SAAA,IAAI,MAAM,KAAK,KAAK,EAAE;QAC3B,IAAI,GAAG,IAAI,EAAE,CAAC,EAAE,CAAA,CAAA,EAAI,EAAE,CAAC,EAAE,GAAG,UAAU,CAAA,CAAA,EAAI,EAAE,CAAC,EAAE,CAAA,CAAA,EAAI,EAAE,CAAC,EAAE,EAAE;IAC5D;AAAO,SAAA,IAAI,MAAM,KAAK,QAAQ,EAAE;QAC9B,IAAI,GAAG,IAAI,EAAE,CAAC,EAAE,CAAA,CAAA,EAAI,EAAE,CAAC,EAAE,CAAA,CAAA,EAAI,EAAE,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,GAAG,UAAU,EAAE;IAC5D;AACA,IAAA,QACEA,gBAAA,CAAA,aAAA,CAAA,MAAA,EAAA,EAAM,GAAG,EAAE,CAAC,EAEV,IAAI,EAAC,MAAM,EACX,MAAM,EAAC,cAAc,EACrB,WAAW,EAAC,KAAK,EACjB,CAAC,EAAE,IAAI,EACP,SAAS,EAAE,CAAA,wBAAA,EAA2B,MAAM,CAAA,CAAA,EAAI,SAAS,CAAA,CAAE,EAAA,CAC3D;AAEN,CAAC;SAEe,kBAAkB,CAAC,UAAU,EAAE,KAAK,EAAE,KAAK,EAAA;IACzD,MAAM,QAAQ,GAAG,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,CAAC;IAE9D,IAAI,CAAC,UAAU,EAAE;QACf,IAAI,CAAC,KAAK,EAAE;AACV,YAAA,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,QAAQ,GAAG,EAAE,CAAC,CAAC;QAChD;AACA,QAAA,UAAU,GAAG,CAAC,KAAK,CAAC,KAAK,IAAI,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,KAAK,CAAC,MAAM,EAAE;IACpE;AAEA,IAAA,OAAO,UAAU;AACnB;SAEgB,UAAU,CAAC,EACzB,UAAU,GAAG,MAAM,SAAS,EAC5B,OAAO,GAAG,CAAC,EACX,KAAK,EACL,KAAK,EACL,UAAU,GAAG,kBAAkB,CAAC,SAAS,EAAE,KAAK,EAAE,KAAK,CAAC,EACxD,MAAM,GAAG,MAAM,EACf,IAAI,EACJ,MAAM,GAAG,KAAK,EACd,QAAQ,GAAG;MACP;AACF,MAAE,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,MAAM;AAC5C,WAAG,IAAI,GAAG,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC;AACrB,WAAG,IAAI,GAAG,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EACxB,UAAU,EACO,EAAA;;IAEjB,IAAI,UAAU,GAAG,EAAE,EACjB,SAAS,EACT,SAAS,EACT,OAAO,EACP,OAAO,EACP,UAAU,EACV,UAAU,EACV,eAAe,GAAG,CAAC,EACnB,gBAAgB,GAAG,CAAC,EACpB,aAAa,GAAG,QAAQ;IAE1B,QAAQ,MAAM;AACZ,QAAA,KAAK,KAAK;YACR,SAAS,GAAG,IAAI;YAChB,SAAS,GAAG,IAAI;YAChB,OAAO,GAAG,IAAI;YACd,OAAO,GAAG,IAAI;AACd,YAAA,UAAU,GAAG,CAAC,CAAC,EAAE,QAAQ,CAAC;YAC1B,UAAU,GAAG,IAAI;YACjB,UAAU,GAAG,IAAI;AACjB,YAAA,eAAe,IAAI,EAAE,GAAG,OAAO;YAC/B;AACF,QAAA,KAAK,QAAQ;YACX,SAAS,GAAG,IAAI;YAChB,SAAS,GAAG,IAAI;YAChB,OAAO,GAAG,IAAI;YACd,OAAO,GAAG,IAAI;YACd,UAAU,GAAG,IAAI,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,GAAG,QAAQ,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,QAAQ,CAAC;YAClE,UAAU,GAAG,IAAI;YACjB,UAAU,GAAG,IAAI;AACjB,YAAA,eAAe,IAAI,EAAE,GAAG,OAAO;YAC/B;AACF,QAAA,KAAK,OAAO;YACV,SAAS,GAAG,IAAI;YAChB,SAAS,GAAG,IAAI;YAChB,OAAO,GAAG,IAAI;YACd,OAAO,GAAG,IAAI;YACd,UAAU,GAAG,IAAI,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,GAAG,QAAQ,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,QAAQ,CAAC;YAClE,UAAU,GAAG,IAAI;YACjB,UAAU,GAAG,IAAI;AACjB,YAAA,eAAe,IAAI,CAAC,GAAG,OAAO;YAC9B,gBAAgB,IAAI,CAAC;YACrB,aAAa,GAAG,OAAO;YACvB;;AAEF,QAAA;YACE,SAAS,GAAG,IAAI;YAChB,SAAS,GAAG,IAAI;YAChB,OAAO,GAAG,IAAI;YACd,OAAO,GAAG,IAAI;AACd,YAAA,UAAU,GAAG,CAAC,CAAC,EAAE,QAAQ,CAAC;YAC1B,UAAU,GAAG,IAAI;YACjB,UAAU,GAAG,IAAI;AACjB,YAAA,eAAe,IAAI,CAAC,GAAG,OAAO;YAC9B,gBAAgB,IAAI,CAAC;YACrB,aAAa,GAAG,KAAK;YACrB;;AAEJ,IAAA,IAAI,cAAc,GAChB,UAAU,YAAY,QAAQ,GAAG,UAAU,CAAC,EAAE,MAAM,EAAE,CAAC,GAAG,UAAU;AAEtE,IAAA,IACE,UAAU;QACV,cAAc,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,KAAK,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,CAAC,KAAK,SAAS,EACjE;AACA,QAAA,cAAc,GAAG,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,EAAE,GAAG,cAAc,CAAC;IACzD;IAEA,OAAO,cAAc,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC,KAAI;AACpC,QAAA,MAAM,YAAY,GAAG,KAAK,CAAC,IAAI,CAAC;QAEhC,OAAO;YACL,CAAC,SAAS,GAAG,YAAY;YACzB,CAAC,SAAS,GAAG,YAAY;AACzB,YAAA,CAAC,OAAO,GAAG,UAAU,CAAC,CAAC,CAAC;AACxB,YAAA,CAAC,OAAO,GAAG,UAAU,CAAC,CAAC,CAAC;AACxB,YAAA,CAAC,UAAU,GAAG,YAAY,GAAG,gBAAgB;YAC7C,CAAC,UAAU,GAAG,UAAU,CAAC,CAAC,CAAC,GAAG,eAAe;YAC7C,aAAa;AACb,YAAA,UAAU,EAAE,UAAU,CAAC,IAAI,EAAE,CAAC,CAAC;AAC/B,YAAA,KAAK,EAAE;SACR;AACH,IAAA,CAAC,CAAC;AACJ;AAEO,MAAM,UAAU,GAAG,CAAC,EACzB,SAAS,EACT,UAAU,EACV,MAAM,GAAG,CAAC,EACV,MAAM,GAAG,KAAK,EACd,MAAM,EACP,KAAI;IACH,OAAO,SAAS,CAAC,GAAG,CAAC,CAAC,QAAQ,EAAE,CAAC,KAAI;QACnC,IAAI,aAAa,GAAG,UAAU,CAAC,QAAQ,CAAC,KAAK,EAAE,CAAC,CAAC;QACjD,IAAI,OAAO,aAAa,KAAK,QAAQ,IAAI,aAAa,YAAY,IAAI,EAAE;AACtE,YAAA,aAAa,IACXA,gBAAA,CAAA,aAAA,CAAA,MAAA,EAAA,EAAM,UAAU,EAAE,QAAQ,CAAC,aAAa,EAAE,SAAS,EAAC,YAAY,EAAA,EAC7D,aAAa,CAAC,QAAQ,GAAG,aAAa,CAAC,QAAQ,EAAE,GAAG,aAAa,CAC7D,CACR;QACH;AAEA,QAAA,IAAI,KAAK,GAAG,QAAQ,CAAC,EAAE;AACvB,QAAA,IAAI,KAAK,GAAG,QAAQ,CAAC,EAAE;QACvB,IAAI,MAAM,EAAE;YACV,QAAQ,MAAM;AACZ,gBAAA,KAAK,OAAO;AACV,oBAAA,KAAK,IAAI,CAAC,QAAQ,CAAC,EAAE,GAAG,QAAQ,CAAC,EAAE,IAAI,CAAC;oBACxC;AACF,gBAAA,KAAK,MAAM;AACT,oBAAA,KAAK,IAAI,CAAC,QAAQ,CAAC,EAAE,GAAG,QAAQ,CAAC,EAAE,IAAI,CAAC;oBACxC;AACF,gBAAA,KAAK,KAAK;AACR,oBAAA,KAAK,IAAI,CAAC,QAAQ,CAAC,EAAE,GAAG,QAAQ,CAAC,EAAE,IAAI,CAAC;oBACxC;AACF,gBAAA,KAAK,QAAQ;AACX,oBAAA,KAAK,IAAI,CAAC,QAAQ,CAAC,EAAE,GAAG,QAAQ,CAAC,EAAE,IAAI,CAAC;oBACxC;;QAEN;QAEA,QACEA,gBAAA,CAAA,aAAA,CAAA,GAAA,EAAA,EACE,GAAG,EAAE,CAAC,EACN,aAAa,EAAC,MAAM,EACpB,SAAS,EAAE,CAAA,UAAA,EAAa,KAAK,CAAA,CAAA,EAAI,KAAK,CAAA,SAAA,EAAY,MAAM,CAAA,CAAA,CAAG,EAC3D,SAAS,EAAC,YAAY,EAAA,EAErB,aAAa,CACZ;AAER,IAAA,CAAC,CAAC;AACJ,CAAC;AAEM,MAAM,iBAAiB,GAAG,CAAC,MAAM,EAAE,IAAI,EAAE,SAAS,KAAI;AAC3D,IAAA,MAAM,OAAO,GAAG;AACd,QAAA,IAAI,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,MAAM,EAAE,IAAI,GAAG,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE;AAC1D,QAAA,KAAK,EAAE,EAAE,CAAC,EAAE,IAAI,GAAG,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,MAAM,EAAE,IAAI,GAAG,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE;AAC5E,QAAA,GAAG,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,KAAK,EAAE,IAAI,GAAG,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE;AACzD,QAAA,MAAM,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,IAAI,GAAG,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,KAAK,EAAE,IAAI,GAAG,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,MAAM,EAAE,CAAC;KAC5E;AAED,IAAA,MAAM,YAAY,GAAG,OAAO,CAAC,MAAM,CAAC;IAEpC,QACEA,gBAAA,CAAA,aAAA,CAAA,MAAA,EAAA,EACE,GAAG,EAAC,UAAU,EACd,SAAS,EAAE,CAAA,cAAA,EAAiB,SAAS,CAAA,CAAE,EACvC,MAAM,EAAC,cAAc,EACrB,aAAa,EAAC,QAAQ,EACtB,EAAE,EAAE,YAAY,CAAC,CAAC,EAClB,EAAE,EAAE,YAAY,CAAC,CAAC,GAAG,YAAY,CAAC,KAAK,EACvC,EAAE,EAAE,YAAY,CAAC,CAAC,EAClB,EAAE,EAAE,YAAY,CAAC,CAAC,GAAG,YAAY,CAAC,MAAM,EAAA,CACxC;AAEN,CAAC;AAEM,MAAM,SAAS,GAAG,CAAC,EACxB,SAAS,EACT,MAAM,EACN,iBAAiB,GAAG,wBAAwB,EAE5C,SAAS,EACT,UAAU,EACV,KAAK,EACL,qBAAqB,GAAG,KAAK,EAS9B,KAAI;AACH,IAAA,MAAM,SAAS,GAAG,SAAS,CAAC,GAAG,CAAC,CAAC,QAAQ,EAAE,CAAC,KAC1C,iBAAiB,CAAC;AAChB,QAAA,EAAE,EAAE,QAAQ;QACZ,MAAM;QACN,CAAC;QAED,SAAS;QACT,UAAU;QACV;AACD,KAAA,CAAC,CACkB;IAEtB,MAAM,iBAAiB,GAAG;AACxB,UAAG,SAAS,CAAC,GAAG,CAAC,CAAC,QAAQ,EAAE,CAAC,KACzB,yBAAyB,CAAC;AACxB,YAAA,EAAE,EAAE,QAAQ;YACZ,MAAM;YACN,CAAC;YACD;AACD,SAAA,CAAC;UAEJ,EAAE;AAEN,IAAA,OAAO,CAAC,GAAG,SAAS,EAAE,iBAAiB,CAAC;AAC1C,CAAC;;AC1UD,SAAS,UAAU,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAuC,EAAA;IAClE,IAAI,CAAC,CAAC,KAAK,SAAS,IAAI,CAAC,KAAK,SAAS,MAAM,CAAC,KAAK,MAAM,IAAI,CAAC,KAAK,OAAO,CAAC,EAAE;QAC3E,OAAO,CAAC,GAAG,CAAC;IACd;SAAO;AACL,QAAA,OAAO,CAAC;IACV;AACF;AAEA,SAAS,UAAU,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAuC,EAAA;IAClE,IAAI,CAAC,CAAC,KAAK,SAAS,IAAI,CAAC,KAAK,SAAS,MAAM,CAAC,KAAK,KAAK,IAAI,CAAC,KAAK,QAAQ,CAAC,EAAE;QAC3E,OAAO,CAAC,GAAG,CAAC;IACd;SAAO;AACL,QAAA,OAAO,CAAC;IACV;AACF;AAEc,SAAU,cAAc,CAAC,KAA0B,EAAA;AAC/D,IAAA,MAAM,EACJ,WAAW,EACX,MAAM,EACN,oBAAoB,EACpB,YAAY,EACZ,eAAe,EACf,MAAM,EACP,GAAG,KAAK;AACT,IAAA,QACEA,wBAAA,CAAA,aAAA,CAAA,GAAA,EAAA,EACE,SAAS,EAAC,mBAAmB,EAC7B,SAAS,EAAE,CAAA,UAAA,EAAa,WAAW,CAAC,MAAM,CAAC,CAAA,CAAA,CAAG,EAAA;AAE9C,QAAAA,wBAAA,CAAA,aAAA,CAAA,GAAA,EAAA,EACE,SAAS,EAAE,CAAA,UAAA,EAAa,UAAU,CAAC;gBACjC,CAAC,EAAE,oBAAoB,CAAC,IAAI;AAC5B,gBAAA,CAAC,EAAE,MAAM;AACT,gBAAA,CAAC,EAAE;aACJ,CAAC,CAAA,CAAA,EAAI,UAAU,CAAC;gBACf,CAAC,EAAE,oBAAoB,CAAC,IAAI;AAC5B,gBAAA,CAAC,EAAE,MAAM;AACT,gBAAA,CAAC,EAAE;aACJ,CAAC,CAAA,CAAA,CAAG,EAAA,EAEJ,eAAe,CACd;QACH,MAAM,CACL;AAER;;ACtDc,SAAU,SAAS,CAAC,KAAqB,EAAA;AACrD,IAAA,MAAM,EAAE,SAAS,EAAE,WAAW,EAAE,QAAQ,EAAE,QAAQ,EAAE,SAAS,EAAE,SAAS,EAAE,GAAG,KAAK;IAClF,QACIA,wBAAA,CAAA,aAAA,CAAA,GAAA,EAAA,EACE,SAAS,EAAE,CAAA,WAAA,EAAc,SAAS,CAAA,CAAE,EACpC,SAAS,EAAE,CAAA,UAAA,EAAa;AACtB,YAAA,WAAW,CAAC,CAAC,CAAC,GAAG,QAAQ,CAAC,CAAC,CAAC;AAC5B,YAAA,WAAW,CAAC,CAAC,CAAC,GAAG,QAAQ,CAAC,CAAC;AAC5B,SAAA,CAAA,SAAA,EAAY,QAAQ,CAAA,CAAA,CAAG,EAAA,EAEvBA,wBAAK,CAAC,cAAc,CAAC,SAAS,CAAC,IAC9B,SAAS,KAETA,wBAAA,CAAA,aAAA,CAAA,MAAA,EAAA,EAAM,UAAU,EAAE,SAAS,EAAA,EAAG,SAAS,CAAQ,CAChD,CACC;AAEV;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;SC1BgB,iBAAiB,CAAC,MAAM,EAAE,KAAK,EAAE,QAAQ,EAAA;AACvD,IAAA,MAAM,OAAO,GAAG,IAAI,CAAC,EAAE,IAAI,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC;AAE5C,IAAA,MAAM,SAAS,GAAG,MAAM,CAAC,CAAC,CAAC,GAAG,QAAQ,GAAG,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC;AAC1D,IAAA,MAAM,SAAS,GAAG,MAAM,CAAC,CAAC,CAAC,GAAG,QAAQ,GAAG,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC;AAE1D,IAAA,OAAO,CAAC,SAAS,EAAE,SAAS,CAAC;AAC/B;AAEO,MAAM,mBAAmB,GAAG,CAAC,EAClC,IAAI,EACJ,YAAY,EACZ,YAAY,EACZ,aAAa,EACb,OAAO,EACP,OAAO,EACP,WAAW,EACX,SAAS,EACT,IAAI,EACL,KAAI;AACH,IAAA,MAAM,WAAW,GAAG,IAAI,IAAI,IAAI,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC,UAAU;AACzD,IAAA,IAAI,CAAC,YAAY;AAAE,QAAA,OAAO,IAAI;IAC9B,MAAM,cAAc,GAAG,EAAE;IACzB,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,KAAI;QACpB,IAAI,YAAY,IAAI,YAAY,CAAC,CAAC,CAAC,KAAK,IAAI,EAAE;AAC5C,YAAA,MAAM,WAAW,GAAG;AAClB,gBAAA,SAAS,EAAE,eAAe;AAC1B,gBAAA,EAAE,EAAE,CAAC,CAAC,EAAE,IAAI,CAAC;AACb,gBAAA,EAAE,EAAE,CAAC,CAAC,EAAE,IAAI,CAAC;gBACb,CAAC,EAAE,CAAC,CAAC,KAAK;gBACV,CAAC;AACD,gBAAA,SAAS,EAAE,CAAC,CAAC,aAAa,IAAI,CAAC;AAC/B,gBAAA,OAAO,EAAE,OAAO;AAChB,gBAAA,QAAQ,EAAE,MAAM,CAAC,CAAC,WAAW;gBAC7B;aACD;AACD,YAAA,aAAa,CAAC,IAAI,CAAC,WAAW,CAAC;QACjC;aAAO;YACL,IAAIA,gBAAK,CAAC,cAAc,CAAC,CAAC,CAAC,aAAa,IAAI,CAAC,CAAC,EAAE;gBAC9C,cAAc,CAAC,IAAI,CAAC,CAAC,CAAC,aAAa,IAAI,CAAC,CAAC;YAC3C;iBAAO;gBACL,MAAM,cAAc,GAAG;AACrB,sBAAE,CAAA,EAAG,CAAC,CAAC,CAAC,CAAA,CAAA,EAAI,SAAS,CAAC,KAAK,CAAA,OAAA,EACvB,CAAC,WAAW,IAAI,WAAW,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,KACzD,CAAA;sBACA,EAAE;gBACN,MAAM,GAAG,GAAG;AACV,sBAAE,WAAW,CAAC,CAAC,CAAC,KAAK;sBACnB,CAAC,CAAC,SAAS,IAAI,CAAA,aAAA,EAAgB,CAAC,EAAE;AAEtC,gBAAA,MAAM,WAAW,GAAG,CAAC,CAAC,aAAa,IAAI,CAAC;gBACxC,MAAM,EAAE,QAAQ,EAAE,KAAK,GAAG,EAAE,EAAA,GAAmB,WAAW,EAAzB,SAAS,GAAA,MAAA,CAAK;;AAAzC,kBAAA,CAAA,UAAA,EAAA,OAAA,CAAsC,CAAc;;gBAG1D,MAAM,YAAY,GAAA,MAAA,CAAA,MAAA,CAAA,MAAA,CAAA,MAAA,CAAA,EAAA,EAAQ,SAAS,CAAA,EAAA,EAAE,GAAG,EAAE,YAAY,EAAE,cAAc,EAAA,CAAE;AACxE,gBAAA,IAAI,KAAK,CAAC,IAAI,KAAK,SAAS;AAAE,oBAAA,YAAY,CAAC,IAAI,GAAG,KAAK,CAAC,IAAI;AAC5D,gBAAA,IAAI,KAAK,CAAC,MAAM,KAAK,SAAS;AAAE,oBAAA,YAAY,CAAC,MAAM,GAAG,KAAK,CAAC,MAAM;AAClE,gBAAA,IAAI,KAAK,CAAC,WAAW,KAAK,SAAS;AAAE,oBAAA,YAAY,CAAC,WAAW,GAAG,KAAK,CAAC,WAAW;AACjF,gBAAA,IAAI,KAAK,CAAC,OAAO,KAAK,SAAS;AAAE,oBAAA,YAAY,CAAC,OAAO,GAAG,KAAK,CAAC,OAAO;AACrE,gBAAA,IAAI,KAAK,CAAC,WAAW,KAAK,SAAS;AAAE,oBAAA,YAAY,CAAC,WAAW,GAAG,KAAK,CAAC,WAAW;AACjF,gBAAA,IAAI,KAAK,CAAC,aAAa,KAAK,SAAS;AAAE,oBAAA,YAAY,CAAC,aAAa,GAAG,KAAK,CAAC,aAAa;AAEvF,gBAAA,MAAM,eAAe,GAAA,MAAA,CAAA,MAAA,CAAA,EAAA,EAAQ,KAAK,CAAE;gBACpC,OAAO,eAAe,CAAC,IAAI;gBAC3B,OAAO,eAAe,CAAC,MAAM;gBAC7B,OAAO,eAAe,CAAC,WAAW;gBAClC,OAAO,eAAe,CAAC,OAAO;gBAC9B,OAAO,eAAe,CAAC,WAAW;gBAClC,OAAO,eAAe,CAAC,aAAa;gBACpC,IAAI,MAAM,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC,MAAM,GAAG,CAAC,EAAE;AAC3C,oBAAA,YAAY,CAAC,KAAK,GAAG,eAAe;gBACtC;gBAEA,IAAI,QAAQ,EAAE;AACZ,oBAAA,cAAc,CAAC,IAAI,CAACA,gBAAK,CAAC,aAAa,CAAC,QAAQ,EAAE,YAAY,CAAC,CAAC;gBAClE;YACF;QACF;AACF,IAAA,CAAC,CAAC;AAEF,IAAA,OAAO,cAAc;AACvB,CAAC;;ACnED,MAAMC,qBAAmB,GAAG,OAAO,EAAE,CAAC;SAEtB,eAAe,CAAC,EAC9B,IAAI,EACJ,IAAI,EACJ,UAAU,EACV,uBAAuB,EACvB,OAAO,EACP,OAAO,EACP,UAAU,EACV,YAAY,GACE,EAAA;AACd,IAAA,MAAM,uBAAuB,GAAG,IAAI,CAAC,cAAc,IAAIA,qBAAmB;AAE1E,IAAA,MAAM,EAAE,QAAQ,EAAE,UAAU,EAAE,GAAG,IAAI;IAErC,MAAM,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC;IAC9B,MAAM,oBAAoB,GAAG,EAAE;IAC/B,MAAM,eAAe,GAAG,EAAE;IAC1B,IAAI,CAAC,OAAO,CAAC,CAAC,GAAG,EAAE,QAAQ,KAAI;AAC7B,QAAA,MAAM,OAAO,GAAG,IAAI,CAAC,GAAG,CAAC;QACzB,MAAM,cAAc,GAAG,uBAAuB,CAAC,OAAO,EAAE,QAAQ,CAAC;AAEjE,QAAA,MAAM,WAAW,GAAG,OAAO,CAAC,KAAK;AAEjC,QAAA,MAAM,eAAe,GAAG,OAAO,CAAC,SAAS;AAEzC,QAAA,MAAM,sBAAsB,GAAG,OAAO,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,QAAQ,CAAC;AACzE,QAAA,MAAM,sBAAsB,GAAG,OAAO,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,QAAQ,CAAC;AAEzE,QAAA,IAAI,mBAAmB,EACrB,gBAAgB,EAChB,SAAS,EACT,YAAY,EACZ,YAAY,EACZ,YAAY,EACZ,YAAY,EACZ,SAAS,EACT,SAAS,EACT,SAAS,EACT,SAAS,EACT,YAAY,EACZ,YAAY,EACZ,YAAY,EACZ,aAAa,EACb,QAAQ,EACR,QAAQ,EACR,eAAe,EACf,gBAAgB,EAChB,WAAW,EACX,WAAW,EACX,cAAc,EACd,eAAe,EACf,UAAU,EACV,UAAU,EACV,SAAS,EACT,SAAS,EACT,YAAY,EACZ,YAAY,EACZ,SAAS,EACT,SAAS;AAEX,QAAA,gBAAgB,GAAG,eAAe,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;QAE5E,IAAI,UAAU,KAAK,IAAI,IAAI,gBAAgB,CAAC,MAAM,KAAK,CAAC,EAAE;AACxD,YAAA,gBAAgB,GAAG;AACjB,gBAAAC,gBAAQ,CAAC,gBAAgB,EAAE,GAAG,CAAC;AAC/B,gBAAAA,gBAAQ,CAAC,gBAAgB,EAAE,IAAI,CAAC;AAChC,gBAAAA,gBAAQ,CAAC,gBAAgB,EAAE,GAAG,CAAC;AAC/B,gBAAAA,gBAAQ,CAAC,gBAAgB,EAAE,IAAI,CAAC;AAChC,gBAAAA,gBAAQ,CAAC,gBAAgB,EAAE,GAAG;aAC/B;QACH;QAEA,MAAM,GAAG,GAAG,gBAAgB,CAAC,CAAC,CAAC,GAAG,gBAAgB,CAAC,CAAC,CAAC;QACrD,IAAI,UAAU,EAAE,UAAU;QAE1B,IAAI,QAAQ,EAAE;YACZ,UAAU,GAAG,gBAAgB,CAAC,CAAC,CAAC,GAAG,GAAG,GAAG,GAAG;YAC5C,UAAU,GAAG,gBAAgB,CAAC,CAAC,CAAC,GAAG,GAAG,GAAG,GAAG;AAE5C,YAAA,gBAAgB,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,gBAAgB,CAAC,CAAC,CAAC,EAAE,UAAU,CAAC;AAC/D,YAAA,gBAAgB,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,gBAAgB,CAAC,CAAC,CAAC,EAAE,UAAU,CAAC;QACjE;;;AAIA,QAAA,MAAM,WAAW,GAAG,UAAU,KAAK;cAC/B,CAAC,CAAkC,KAAK,CAAC,CAAC;cAC1C,CAAC,CAA0B,KAAK,CAAC,CAAC,WAAW;QAEjD,MAAM,YAAY,GAAG,CAAC,GAAG,eAAe,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC,KAAK,CAAC;QAC3E,MAAM,MAAM,GAAG,YAAY,CAAC,CAAC,CAAC,CAAC,KAAK;AACpC,QAAA,MAAM,MAAM,GAAG,YAAY,CAAC,YAAY,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,KAAK;QAC1D,MAAM,QAAQ,GAAG,WAAW,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;AAC7C,QAAA,MAAM,QAAQ,GAAG,WAAW,CAAC,YAAY,CAAC,YAAY,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;;;QAInE,mBAAmB,GAAG,gBAAgB,CAAC,GAAG,CAAC,CAAC,CAAS,KAAI;YACvD,IAAI,MAAM,KAAK,MAAM;AAAE,gBAAA,OAAO,CAAC,QAAQ,GAAG,QAAQ,IAAI,CAAC;AACvD,YAAA,OAAO,QAAQ,GAAG,CAAC,CAAC,GAAG,MAAM,KAAK,MAAM,GAAG,MAAM,CAAC,IAAI,QAAQ,GAAG,QAAQ,CAAC;AAC5E,QAAA,CAAC,CAAC;AAEF,QAAA,IAAI,UAAU,KAAK,UAAU,EAAE;AAC7B,YAAA,SAAS,GAAG,CAAA,UAAA,EAAa,OAAO,CAAC,CAAC,GAAG,OAAO,CAAC,KAAK,GAAG,CAAC,CAAA,GAAA,CAAK;YAE3D,YAAY,GAAG,CAAC;YAChB,YAAY,GAAG,CAAC;AAChB,YAAA,YAAY,GAAG,mBAAmB,CAAC,CAAC,CAAC;AACrC,YAAA,YAAY,GAAG,mBAAmB,CAAC,CAAC,CAAC;AACrC,YAAA,SAAS,GAAG,CAAC,WAAW,GAAG,CAAC;AAC5B,YAAA,SAAS,GAAG,WAAW,GAAG,CAAC;AAC3B,YAAA,SAAS,GAAG,CAAC,WAAW,GAAG,CAAC;AAC5B,YAAA,SAAS,GAAG,WAAW,GAAG,CAAC;AAC3B,YAAA,YAAY,GAAG,CAAC,WAAW,GAAG,CAAC;AAC/B,YAAA,YAAY,GAAG,WAAW,GAAG,CAAC;YAC9B,eAAe,GAAG,WAAW;YAC7B,gBAAgB,GAAG,mBAAmB,CAAC,CAAC,CAAC,GAAG,mBAAmB,CAAC,CAAC,CAAC;AAClE,YAAA,WAAW,GAAG,mBAAmB,CAAC,CAAC,CAAC;AACpC,YAAA,WAAW,GAAG,CAAC,WAAW,GAAG,CAAC;YAC9B,YAAY,GAAG,WAAW;YAC1B,aAAa,GAAG,mBAAmB,CAAC,CAAC,CAAC,GAAG,mBAAmB,CAAC,CAAC,CAAC;YAC/D,cAAc,GAAG,WAAW;YAC5B,eAAe,GAAG,mBAAmB,CAAC,CAAC,CAAC,GAAG,mBAAmB,CAAC,CAAC,CAAC;AACjE,YAAA,UAAU,GAAG,mBAAmB,CAAC,CAAC,CAAC;AACnC,YAAA,UAAU,GAAG,CAAC,WAAW,GAAG,CAAC;AAC7B,YAAA,QAAQ,GAAG,mBAAmB,CAAC,CAAC,CAAC;AACjC,YAAA,QAAQ,GAAG,CAAC,WAAW,GAAG,CAAC;AAC3B,YAAA,SAAS,GAAG,mBAAmB,CAAC,CAAC,CAAC;AAClC,YAAA,SAAS,GAAG,mBAAmB,CAAC,CAAC,CAAC;AAClC,YAAA,YAAY,GAAG,mBAAmB,CAAC,CAAC,CAAC;AACrC,YAAA,YAAY,GAAG,mBAAmB,CAAC,CAAC,CAAC;AACrC,YAAA,SAAS,GAAG,mBAAmB,CAAC,CAAC,CAAC;AAClC,YAAA,SAAS,GAAG,mBAAmB,CAAC,CAAC,CAAC;YAElC,MAAM,YAAY,GAAG,OAAO,CAAC,CAAC,GAAG,OAAO,CAAC,KAAK,GAAG,CAAC;YAElD,eAAe,CAAC,IAAI,CAClB;AACE,gBAAA,KAAK,EAAE,SAAS;gBAChB,GAAG;AACH,gBAAA,gBAAgB,EAAE,KAAK;AACvB,gBAAA,CAAC,EAAE,YAAY;AACf,gBAAA,CAAC,EAAE,mBAAmB,CAAC,CAAC,CAAC;AACzB,gBAAA,KAAK,EAAE,gBAAgB,CAAC,CAAC;aAC1B,EACD;AACE,gBAAA,KAAK,EAAE,cAAc;gBACrB,GAAG;AACH,gBAAA,gBAAgB,EAAE,QAAQ;AAC1B,gBAAA,CAAC,EAAE,YAAY;AACf,gBAAA,CAAC,EAAE,mBAAmB,CAAC,CAAC,CAAC;AACzB,gBAAA,KAAK,EAAE,gBAAgB,CAAC,CAAC;aAC1B,EACD;AACE,gBAAA,KAAK,EAAE,QAAQ;gBACf,GAAG;AACH,gBAAA,gBAAgB,EAAE,QAAQ;AAC1B,gBAAA,CAAC,EAAE,YAAY;AACf,gBAAA,CAAC,EAAE,mBAAmB,CAAC,CAAC,CAAC;AACzB,gBAAA,KAAK,EAAE,gBAAgB,CAAC,CAAC;aAC1B,EACD;AACE,gBAAA,KAAK,EAAE,cAAc;gBACrB,GAAG;AACH,gBAAA,gBAAgB,EAAE,QAAQ;AAC1B,gBAAA,CAAC,EAAE,YAAY;AACf,gBAAA,CAAC,EAAE,mBAAmB,CAAC,CAAC,CAAC;AACzB,gBAAA,KAAK,EAAE,gBAAgB,CAAC,CAAC;aAC1B,EACD;AACE,gBAAA,KAAK,EAAE,SAAS;gBAChB,GAAG;AACH,gBAAA,gBAAgB,EAAE,KAAK;AACvB,gBAAA,CAAC,EAAE,YAAY;AACf,gBAAA,CAAC,EAAE,mBAAmB,CAAC,CAAC,CAAC;AACzB,gBAAA,KAAK,EAAE,gBAAgB,CAAC,CAAC;AAC1B,aAAA,CACF;QACH;AAAO,aAAA,IAAI,UAAU,KAAK,YAAY,EAAE;YACtC,MAAM,YAAY,GAAG,OAAO,CAAC,CAAC,GAAG,OAAO,CAAC,KAAK,GAAG,CAAC;AAElD,YAAA,SAAS,GAAG,CAAA,YAAA,EAAe,YAAY,CAAA,CAAA,CAAG;YAE1C,YAAY,GAAG,CAAC;YAChB,YAAY,GAAG,CAAC;AAChB,YAAA,YAAY,GAAG,mBAAmB,CAAC,CAAC,CAAC;AACrC,YAAA,YAAY,GAAG,mBAAmB,CAAC,CAAC,CAAC;AACrC,YAAA,SAAS,GAAG,CAAC,WAAW,GAAG,CAAC;AAC5B,YAAA,SAAS,GAAG,WAAW,GAAG,CAAC;AAC3B,YAAA,SAAS,GAAG,CAAC,WAAW,GAAG,CAAC;AAC5B,YAAA,SAAS,GAAG,WAAW,GAAG,CAAC;AAC3B,YAAA,YAAY,GAAG,CAAC,WAAW,GAAG,CAAC;AAC/B,YAAA,YAAY,GAAG,WAAW,GAAG,CAAC;YAC9B,aAAa,GAAG,WAAW;YAC3B,YAAY,GAAG,mBAAmB,CAAC,CAAC,CAAC,GAAG,mBAAmB,CAAC,CAAC,CAAC;AAC9D,YAAA,QAAQ,GAAG,mBAAmB,CAAC,CAAC,CAAC;AACjC,YAAA,QAAQ,GAAG,CAAC,WAAW,GAAG,CAAC;YAC3B,gBAAgB,GAAG,WAAW;YAC9B,eAAe,GAAG,mBAAmB,CAAC,CAAC,CAAC,GAAG,mBAAmB,CAAC,CAAC,CAAC;AACjE,YAAA,WAAW,GAAG,mBAAmB,CAAC,CAAC,CAAC;AACpC,YAAA,WAAW,GAAG,CAAC,WAAW,GAAG,CAAC;YAC9B,eAAe,GAAG,WAAW;YAC7B,cAAc,GAAG,mBAAmB,CAAC,CAAC,CAAC,GAAG,mBAAmB,CAAC,CAAC,CAAC;AAChE,YAAA,UAAU,GAAG,mBAAmB,CAAC,CAAC,CAAC;AACnC,YAAA,UAAU,GAAG,CAAC,WAAW,GAAG,CAAC;AAC7B,YAAA,SAAS,GAAG,mBAAmB,CAAC,CAAC,CAAC;AAClC,YAAA,SAAS,GAAG,mBAAmB,CAAC,CAAC,CAAC;AAClC,YAAA,YAAY,GAAG,mBAAmB,CAAC,CAAC,CAAC;AACrC,YAAA,YAAY,GAAG,mBAAmB,CAAC,CAAC,CAAC;AACrC,YAAA,SAAS,GAAG,mBAAmB,CAAC,CAAC,CAAC;AAClC,YAAA,SAAS,GAAG,mBAAmB,CAAC,CAAC,CAAC;YAElC,eAAe,CAAC,IAAI,CAClB;AACE,gBAAA,KAAK,EAAE,SAAS;gBAChB,GAAG;AACH,gBAAA,gBAAgB,EAAE,KAAK;AACvB,gBAAA,CAAC,EAAE,mBAAmB,CAAC,CAAC,CAAC;AACzB,gBAAA,CAAC,EAAE,YAAY;AACf,gBAAA,KAAK,EAAE,gBAAgB,CAAC,CAAC;aAC1B,EACD;AACE,gBAAA,KAAK,EAAE,cAAc;gBACrB,GAAG;AACH,gBAAA,gBAAgB,EAAE,QAAQ;AAC1B,gBAAA,CAAC,EAAE,mBAAmB,CAAC,CAAC,CAAC;AACzB,gBAAA,CAAC,EAAE,YAAY;AACf,gBAAA,KAAK,EAAE,gBAAgB,CAAC,CAAC;aAC1B,EACD;AACE,gBAAA,KAAK,EAAE,QAAQ;gBACf,GAAG;AACH,gBAAA,gBAAgB,EAAE,QAAQ;AAC1B,gBAAA,CAAC,EAAE,mBAAmB,CAAC,CAAC,CAAC;AACzB,gBAAA,CAAC,EAAE,YAAY;AACf,gBAAA,KAAK,EAAE,gBAAgB,CAAC,CAAC;aAC1B,EACD;AACE,gBAAA,KAAK,EAAE,cAAc;gBACrB,GAAG;AACH,gBAAA,gBAAgB,EAAE,QAAQ;AAC1B,gBAAA,CAAC,EAAE,mBAAmB,CAAC,CAAC,CAAC;AACzB,gBAAA,CAAC,EAAE,YAAY;AACf,gBAAA,KAAK,EAAE,gBAAgB,CAAC,CAAC;aAC1B,EACD;AACE,gBAAA,KAAK,EAAE,SAAS;gBAChB,GAAG;AACH,gBAAA,gBAAgB,EAAE,KAAK;AACvB,gBAAA,CAAC,EAAE,mBAAmB,CAAC,CAAC,CAAC;AACzB,gBAAA,CAAC,EAAE,YAAY;AACf,gBAAA,KAAK,EAAE,gBAAgB,CAAC,CAAC;AAC1B,aAAA,CACF;QACH;AAEA,QAAA,IAAI,UAAU,KAAK,QAAQ,EAAE;YAC3B,YAAY,GAAG,CAAC;YAChB,YAAY,GAAG,CAAC;AAChB,YAAA,YAAY,GAAG,mBAAmB,CAAC,CAAC,CAAC;AACrC,YAAA,YAAY,GAAG,mBAAmB,CAAC,CAAC,CAAC;AACrC,YAAA,SAAS,GAAG,CAAC,WAAW,GAAG,CAAC;AAC5B,YAAA,SAAS,GAAG,WAAW,GAAG,CAAC;AAC3B,YAAA,SAAS,GAAG,CAAC,WAAW,GAAG,CAAC;AAC5B,YAAA,SAAS,GAAG,WAAW,GAAG,CAAC;AAC3B,YAAA,YAAY,GAAG,CAAC,WAAW,GAAG,CAAC;AAC/B,YAAA,YAAY,GAAG,WAAW,GAAG,CAAC;YAC9B,YAAY,GAAG,WAAW;YAC1B,aAAa,GAAG,mBAAmB,CAAC,CAAC,CAAC,GAAG,mBAAmB,CAAC,CAAC,CAAC;AAC/D,YAAA,QAAQ,GAAG,mBAAmB,CAAC,CAAC,CAAC;AACjC,YAAA,QAAQ,GAAG,CAAC,WAAW,GAAG,CAAC;YAC3B,eAAe,GAAG,WAAW;YAC7B,gBAAgB,GAAG,mBAAmB,CAAC,CAAC,CAAC,GAAG,mBAAmB,CAAC,CAAC,CAAC;AAClE,YAAA,WAAW,GAAG,mBAAmB,CAAC,CAAC,CAAC;AACpC,YAAA,WAAW,GAAG,CAAC,WAAW,GAAG,CAAC;AAC9B,YAAA,SAAS,GAAG,mBAAmB,CAAC,CAAC,CAAC;AAClC,YAAA,SAAS,GAAG,mBAAmB,CAAC,CAAC,CAAC;AAClC,YAAA,YAAY,GAAG,mBAAmB,CAAC,CAAC,CAAC;AACrC,YAAA,YAAY,GAAG,mBAAmB,CAAC,CAAC,CAAC;AACrC,YAAA,SAAS,GAAG,mBAAmB,CAAC,CAAC,CAAC;AAClC,YAAA,SAAS,GAAG,mBAAmB,CAAC,CAAC,CAAC;AAElC,YAAA,MAAM,KAAK,GAAG,IAAI,CAAC,EAAE,GAAG,CAAC;YAEzB,MAAM,sBAAsB,GAAGC,WAAG;AAC/B,iBAAA,WAAW,CAAC,YAAY,GAAG,CAAC;AAC5B,iBAAA,WAAW,CAAC,YAAY,GAAG,CAAC,CAAC;;YAGhC,MAAM,mBAAmB,GAAGA,WAAG;AAC5B,iBAAA,WAAW,CAAC,SAAS,GAAG,CAAC;AACzB,iBAAA,WAAW,CAAC,SAAS,GAAG,CAAC,CAAC;;YAG7B,MAAM,mBAAmB,GAAGA,WAAG;AAC5B,iBAAA,WAAW,CAAC,SAAS,GAAG,CAAC;AACzB,iBAAA,WAAW,CAAC,SAAS,GAAG,CAAC,CAAC;;YAG7B,MAAM,mBAAmB,GAAGA,WAAG;AAC5B,iBAAA,WAAW,CAAC,mBAAmB,CAAC,CAAC,CAAC,GAAG,CAAC;AACtC,iBAAA,WAAW,CAAC,SAAS,GAAG,CAAC,CAAC;;YAG7B,MAAM,sBAAsB,GAAGA,WAAG;AAC/B,iBAAA,WAAW,CAAC,SAAS,GAAG,CAAC;iBACzB,WAAW,CAAC,mBAAmB,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;;YAG1C,MAAM,qBAAqB,GAAGA,WAAG;AAC9B,iBAAA,WAAW,CAAC,mBAAmB,CAAC,CAAC,CAAC,GAAG,CAAC;iBACtC,WAAW,CAAC,mBAAmB,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;;YAG1C,IAAI,UAAU,GAAG,OAAO,CAAC,SAAS,GAAG,OAAO,CAAC,WAAW,GAAG,CAAC;AAC5D,YAAA,IAAI,QAAQ,GAAG,OAAO,CAAC,GAAG,GAAG,OAAO,CAAC,SAAS,GAAG,OAAO,CAAC,WAAW,GAAG,CAAC;YACxE,MAAM,QAAQ,GAAG,OAAO,CAAC,GAAG,GAAG,CAAC,GAAG,OAAO,CAAC,SAAS;YACpD,UAAU,IAAI,KAAK;YACnB,QAAQ,IAAI,KAAK;YAEjB,MAAM,aAAa,GAAG,YAAY,CAAC,CAAC,CAAC,GAAG,CAAC;YAEzC,MAAM,aAAa,GAAG,YAAY,CAAC,CAAC,CAAC,GAAG,CAAC;;;AAIzC,YAAA,MAAM,WAAW,GAAG,iBAAiB,CACnC,CAAC,CAAC,EAAE,CAAC,CAAC,EACN,QAAQ,EACR,mBAAmB,CAAC,CAAC,CAAC,GAAG,CAAC,CAC3B;AACD,YAAA,MAAM,QAAQ,GAAG,iBAAiB,CAChC,CAAC,CAAC,EAAE,CAAC,CAAC,EACN,QAAQ,EACR,mBAAmB,CAAC,CAAC,CAAC,GAAG,CAAC,CAC3B;AACD,YAAA,MAAM,UAAU,GAAG,iBAAiB,CAClC,CAAC,CAAC,EAAE,CAAC,CAAC,EACN,QAAQ,EACR,mBAAmB,CAAC,CAAC,CAAC,GAAG,CAAC,CAC3B;AACD,YAAA,MAAM,QAAQ,GAAG,iBAAiB,CAChC,CAAC,CAAC,EAAE,CAAC,CAAC,EACN,QAAQ,EACR,mBAAmB,CAAC,CAAC,CAAC,GAAG,CAAC,CAC3B;AACD,YAAA,MAAM,UAAU,GAAG,iBAAiB,CAClC,CAAC,CAAC,EAAE,CAAC,CAAC,EACN,QAAQ,EACR,mBAAmB,CAAC,CAAC,CAAC,GAAG,CAAC,CAC3B;YAED,eAAe,CAAC,IAAI,CAClB;AACE,gBAAA,KAAK,EAAE,SAAS;gBAChB,GAAG;AACH,gBAAA,gBAAgB,EAAE,KAAK;AACvB,gBAAA,CAAC,EAAE,QAAQ,CAAC,CAAC,CAAC,GAAG,aAAa;AAC9B,gBAAA,CAAC,EAAE,QAAQ,CAAC,CAAC,CAAC,GAAG,aAAa;AAC9B,gBAAA,KAAK,EAAE,gBAAgB,CAAC,CAAC;aAC1B,EACD;AACE,gBAAA,KAAK,EAAE,cAAc;gBACrB,GAAG;AACH,gBAAA,gBAAgB,EAAE,QAAQ;AAC1B,gBAAA,CAAC,EAAE,UAAU,CAAC,CAAC,CAAC,GAAG,aAAa;AAChC,gBAAA,CAAC,EAAE,UAAU,CAAC,CAAC,CAAC,GAAG,aAAa;AAChC,gBAAA,KAAK,EAAE,gBAAgB,CAAC,CAAC;aAC1B,EACD;AACE,gBAAA,KAAK,EAAE,QAAQ;gBACf,GAAG;AACH,gBAAA,gBAAgB,EAAE,QAAQ;AAC1B,gBAAA,CAAC,EAAE,QAAQ,CAAC,CAAC,CAAC,GAAG,aAAa;AAC9B,gBAAA,CAAC,EAAE,QAAQ,CAAC,CAAC,CAAC,GAAG,aAAa;AAC9B,gBAAA,KAAK,EAAE,gBAAgB,CAAC,CAAC;aAC1B,EACD;AACE,gBAAA,KAAK,EAAE,cAAc;gBACrB,GAAG;AACH,gBAAA,gBAAgB,EAAE,QAAQ;AAC1B,gBAAA,CAAC,EAAE,UAAU,CAAC,CAAC,CAAC,GAAG,aAAa;AAChC,gBAAA,CAAC,EAAE,UAAU,CAAC,CAAC,CAAC,GAAG,aAAa;AAChC,gBAAA,KAAK,EAAE,gBAAgB,CAAC,CAAC;aAC1B,EACD;AACE,gBAAA,KAAK,EAAE,SAAS;gBAChB,GAAG;AACH,gBAAA,gBAAgB,EAAE,KAAK;AACvB,gBAAA,CAAC,EAAE,WAAW,CAAC,CAAC,CAAC,GAAG,aAAa;AACjC,gBAAA,CAAC,EAAE,WAAW,CAAC,CAAC,CAAC,GAAG,aAAa;AACjC,gBAAA,KAAK,EAAE,gBAAgB,CAAC,CAAC;AAC1B,aAAA,CACF;AACD,YAAA,SAAS,GAAG,CAAA,UAAA,EAAa,aAAa,CAAA,CAAA,EAAI,aAAa,GAAG;YAE1D,oBAAoB,CAAC,IAAI,CAAC;;AAExB,gBAAA,cAAc,EAAA,MAAA,CAAA,MAAA,CAAA,MAAA,CAAA,MAAA,CAAA,EAAA,EACT,cAAc,CAAA,EAAA,EACjB,SAAS,EAAE,sBAAsB,EACjC,SAAS,EAAE,SAAS,EACpB,GAAG,EAAE,CAAA,aAAA,EAAgB,QAAQ,CAAA,CAAE,EAC/B,IAAI,EAAE,KAAK,EACX,QAAQ,EAAE,EAAE,EACZ,QAAQ,EAAE,GAAG,EACb,YAAY,EAAE,CAAA,EAAG,GAAG,oBAAoB;yBACrC,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,GAAG,KAAK,GAAG;AAC3B,yBAAA,GAAG,CAAC,CAAC,CAAC,KAAK,CAAA,EAAG,CAAC,CAAC,KAAK,IAAI,CAAC,CAAC,KAAK,CAAA,CAAE,CAAC,EAAE,EAAA,CACzC;;AAED,gBAAA,QAAQ,EAAE;AACR,oBAAA;AAGE,wBAAA,QAAQ,EAAE,MAAM;AAChB,wBAAA,EAAE,EAAE,WAAW,CAAC,CAAC,CAAC;AAClB,wBAAA,EAAE,EAAE,QAAQ,CAAC,CAAC,CAAC;AACf,wBAAA,EAAE,EAAE,WAAW,CAAC,CAAC,CAAC;AAClB,wBAAA,EAAE,EAAE,QAAQ,CAAC,CAAC,CAAC;AACf,wBAAA,KAAK,EAAE,MAAM,CAAC,MAAM,CAClB,EAAE,WAAW,EAAE,CAAC,EAAE,EAClB,sBAAsB,EACtB,uBAAuB,CAAC,SAAS,EAAE,eAAe,CAAC;AAEtD,qBAAA;AACD,oBAAA;AAGE,wBAAA,QAAQ,EAAE,MAAM;wBAChB,CAAC,EAAE,mBAAmB,CAAC,EAAE,UAAU,EAAE,QAAQ,EAAE,CAAC;wBAChD,KAAK,EAAE,MAAM,CAAC,MAAM,CAClB,EAAE,WAAW,EAAE,CAAC,EAAE,EAClB,sBAAsB,EACtB,EAAE,IAAI,EAAE,MAAM,EAAE,EAChB,uBAAuB,CAAC,KAAK,EAAE,eAAe,CAAC;AAElD,qBAAA;AACD,oBAAA;AAGE,wBAAA,QAAQ,EAAE,MAAM;wBAChB,CAAC,EAAE,mBAAmB,CAAC,EAAE,UAAU,EAAE,QAAQ,EAAE,CAAC;wBAChD,KAAK,EAAE,MAAM,CAAC,MAAM,CAClB,EAAE,WAAW,EAAE,CAAC,EAAE,EAClB,sBAAsB,EACtB,EAAE,IAAI,EAAE,MAAM,EAAE,EAChB,uBAAuB,CAAC,QAAQ,EAAE,eAAe,CAAC;AAErD,qBAAA;AACD,oBAAA;AAGE,wBAAA,QAAQ,EAAE,MAAM;wBAChB,CAAC,EAAE,sBAAsB,CAAC,EAAE,UAAU,EAAE,QAAQ,EAAE,CAAC;wBACnD,KAAK,EAAE,MAAM,CAAC,MAAM,CAClB,EAAE,WAAW,EAAE,CAAC,EAAE,EAClB,sBAAsB,EACtB,EAAE,IAAI,EAAE,MAAM,EAAE,EAChB,uBAAuB,CAAC,KAAK,EAAE,eAAe,CAAC;AAElD,qBAAA;AACD,oBAAA;AAGE,wBAAA,QAAQ,EAAE,MAAM;wBAChB,CAAC,EAAE,qBAAqB,CAAC,EAAE,UAAU,EAAE,QAAQ,EAAE,CAAC;AAClD,wBAAA,KAAK,EAAE,MAAM,CAAC,MAAM,CAClB,EAAE,WAAW,EAAE,CAAC,EAAE,EAClB,sBAAsB,EACtB,uBAAuB,CAAC,SAAS,EAAE,eAAe,CAAC;AAEtD,qBAAA;AACD,oBAAA;AAGE,wBAAA,QAAQ,EAAE,MAAM;wBAChB,CAAC,EAAE,mBAAmB,CAAC,EAAE,UAAU,EAAE,QAAQ,EAAE,CAAC;wBAChD,KAAK,EAAE,MAAM,CAAC,MAAM,CAClB,EAAE,EACF,sBAAsB,EACtB,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,EAChC,uBAAuB,CAAC,QAAQ,EAAE,eAAe,CAAC;AAErD,qBAAA;AACD,oBAAA;AAGE,wBAAA,QAAQ,EAAE,MAAM;wBAChB,CAAC,EAAE,sBAAsB,CAAC,EAAE,UAAU,EAAE,QAAQ,EAAE,CAAC;wBACnD,KAAK,EAAE,MAAM,CAAC,MAAM,CAClB,EAAE,EACF,sBAAsB,EACtB,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,EAChC,uBAAuB,CAAC,QAAQ,EAAE,eAAe,CAAC;AAErD;AACF;AACF,aAAA,CAAC;QACJ;aAAO;AACL,YAAA,MAAM,YAAY,GAAG;AACnB,gBAAA;AAGE,oBAAA,QAAQ,EAAE,MAAM;AAChB,oBAAA,EAAE,EAAE,YAAY;AAChB,oBAAA,EAAE,EAAE,YAAY;AAChB,oBAAA,EAAE,EAAE,YAAY;AAChB,oBAAA,EAAE,EAAE,YAAY;AAChB,oBAAA,KAAK,EAAE,MAAM,CAAC,MAAM,CAClB,EAAE,WAAW,EAAE,CAAC,EAAE,EAClB,sBAAsB,EACtB,uBAAuB,CAAC,SAAS,EAAE,eAAe,CAAC;AAEtD,iBAAA;AACD,gBAAA;AAGE,oBAAA,QAAQ,EAAE,MAAM;AAChB,oBAAA,EAAE,EAAE,SAAS;AACb,oBAAA,EAAE,EAAE,SAAS;AACb,oBAAA,EAAE,EAAE,SAAS;AACb,oBAAA,EAAE,EAAE,SAAS;AACb,oBAAA,KAAK,EAAE,MAAM,CAAC,MAAM,CAClB,EAAE,WAAW,EAAE,CAAC,EAAE,EAClB,sBAAsB,EACtB,uBAAuB,CAAC,KAAK,EAAE,eAAe,CAAC;AAElD,iBAAA;AACD,gBAAA;AAGE,oBAAA,QAAQ,EAAE,MAAM;AAChB,oBAAA,EAAE,EAAE,YAAY;AAChB,oBAAA,EAAE,EAAE,YAAY;AAChB,oBAAA,EAAE,EAAE,YAAY;AAChB,oBAAA,EAAE,EAAE,YAAY;AAChB,oBAAA,KAAK,EAAE,MAAM,CAAC,MAAM,CAClB,EAAE,WAAW,EAAE,CAAC,EAAE,EAClB,sBAAsB,EACtB,uBAAuB,CAAC,KAAK,EAAE,eAAe,CAAC;AAElD,iBAAA;AACD,gBAAA;AAGE,oBAAA,QAAQ,EAAE,MAAM;AAChB,oBAAA,CAAC,EAAE,UAAU;AACb,oBAAA,KAAK,EAAE,cAAc;AACrB,oBAAA,CAAC,EAAE,UAAU;AACb,oBAAA,MAAM,EAAE,eAAe;AACvB,oBAAA,KAAK,EAAE,MAAM,CAAC,MAAM,CAClB,EAAE,WAAW,EAAE,CAAC,EAAE,EAClB,sBAAsB,EACtB,uBAAuB,CAAC,SAAS,EAAE,eAAe,CAAC;AAEtD,iBAAA;AACD,gBAAA;AAGE,oBAAA,QAAQ,EAAE,MAAM;AAChB,oBAAA,CAAC,EAAE,QAAQ;AACX,oBAAA,KAAK,EAAE,YAAY;AACnB,oBAAA,CAAC,EAAE,QAAQ;AACX,oBAAA,MAAM,EAAE,aAAa;oBACrB,KAAK,EAAE,MAAM,CAAC,MAAM,CAClB,EAAE,EACF,sBAAsB,EACtB,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,EAChC,uBAAuB,CAAC,QAAQ,EAAE,eAAe,CAAC;AAErD,iBAAA;AACD,gBAAA;AAGE,oBAAA,QAAQ,EAAE,MAAM;AAChB,oBAAA,CAAC,EAAE,WAAW;AACd,oBAAA,KAAK,EAAE,eAAe;AACtB,oBAAA,CAAC,EAAE,WAAW;AACd,oBAAA,MAAM,EAAE,gBAAgB;oBACxB,KAAK,EAAE,MAAM,CAAC,MAAM,CAClB,EAAE,EACF,sBAAsB,EACtB,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,EAChC,uBAAuB,CAAC,QAAQ,EAAE,eAAe,CAAC;AAErD,iBAAA;AACD,gBAAA;AAGE,oBAAA,QAAQ,EAAE,MAAM;AAChB,oBAAA,EAAE,EAAE,SAAS;AACb,oBAAA,EAAE,EAAE,SAAS;AACb,oBAAA,EAAE,EAAE,SAAS;AACb,oBAAA,EAAE,EAAE,SAAS;AACb,oBAAA,KAAK,EAAE,MAAM,CAAC,MAAM,CAClB,EAAE,WAAW,EAAE,CAAC,EAAE,EAClB,sBAAsB,EACtB,uBAAuB,CAAC,QAAQ,EAAE,eAAe,CAAC;AAErD;aACF;YAED,MAAM,YAAY,GAAG,EAAE;YAEvB,IAAI,QAAQ,EAAE;gBACZ,MAAM,aAAa,GAAG,eAAe,CAAC,MAAM,CAC1C,CAAC,CAAC,KAAK,CAAC,CAAC,KAAK,GAAG,UAAU,IAAI,CAAC,CAAC,KAAK,GAAG,UAAU,CACpD;AAED,gBAAA,aAAa,CAAC,OAAO,CAAC,CAAC,KAAK,KAAI;oBAC9B,YAAY,CAAC,IAAI,CAAC;AAGhB,wBAAA,QAAQ,EAAE,QAAQ;AAClB,wBAAA,EAAE,EAAE,UAAU,KAAK,YAAY,GAAG,KAAK,CAAC,WAAW,GAAG,CAAC;AACvD,wBAAA,EAAE,EAAE,UAAU,KAAK,UAAU,GAAG,KAAK,CAAC,mBAAmB,GAAG,CAAC;AAC7D,wBAAA,KAAK,EAAE,MAAM,CAAC,MAAM,CAClB,EAAE,WAAW,EAAE,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC,EAAE,CAAC,EAAE,EAC3D,sBAAsB,EACtB,uBAAuB,CAAC,SAAS,EAAE,eAAe,CAAC;AAEtD,qBAAA,CAAC;AACJ,gBAAA,CAAC,CAAC;YACJ;YACA,oBAAoB,CAAC,IAAI,CAAC;AACxB,gBAAA,cAAc,EAAA,MAAA,CAAA,MAAA,CAAA,MAAA,CAAA,MAAA,CAAA,EAAA,EACT,cAAc,CAAA,EAAA,EACjB,SAAS,EAAE,sBAAsB,EACjC,SAAS,EAAE,SAAS,EACpB,GAAG,EAAE,CAAA,aAAA,EAAgB,QAAQ,CAAA,CAAE,EAC/B,IAAI,EAAE,KAAK,EACX,QAAQ,EAAE,EAAE,EACZ,QAAQ,EAAE,GAAG,EACb,YAAY,EAAE,CAAA,EAAG,GAAG,oBAAoB;yBACrC,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,GAAG,KAAK,GAAG;AAC3B,yBAAA,GAAG,CAAC,CAAC,CAAC,KAAK,CAAA,EAAG,CAAC,CAAC,KAAK,IAAI,CAAC,CAAC,KAAK,CAAA,CAAE,CAAC,EAAE,EAAA,CACzC;;AAED,gBAAA,QAAQ,EAAE,CAAC,GAAG,YAAY,EAAE,GAAG,YAAY;AAC5C,aAAA,CAAC;QACJ;AACF,IAAA,CAAC,CAAC;IAEF,OAAO,EAAE,KAAK,EAAE,oBAAoB,EAAE,QAAQ,EAAE,eAAe,EAAE;AACnE;;ACvpBA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA6BG;AAEH,SAAS,WAAW,CAAC,KAAK,EAAA;AACxB,IAAA,QACE;;AAEG,SAAA,KAAK;;AAEL,SAAA,IAAI,CAAC,UAAU,CAAC,EAAE,CAAC,EAAA;QAClB,OAAO,CAAC,GAAG,CAAC;IACd,CAAC,CAAC;AAER;AAEA,SAAS,iBAAiB,CAAC,KAAK,EAAA;IAC9B,IAAI,gBAAgB,GAAG,CAAC;AACxB,IAAA,IAAI,aAAa;AACjB,IAAA,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;QACrC,IAAI,CAAC,KAAK,CAAC,IAAI,KAAK,CAAC,CAAC,CAAC,KAAK,aAAa,EAAE;AACzC,YAAA,aAAa,GAAG,KAAK,CAAC,CAAC,CAAC;AACxB,YAAA,gBAAgB,EAAE;QACpB;IACF;AACA,IAAA,OAAO,gBAAgB;AACzB;AAEA,SAAS,UAAU,CAAC,OAAO,EAAE,IAAI,EAAA;IAC/B,IAAI,MAAM,GAAG,EAAE;AACf,IAAA,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,OAAO,EAAE,CAAC,EAAE,EAAE;QAChC,IAAI,MAAM,GAAG,EAAE;AACf,QAAA,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,EAAE,CAAC,EAAE,EAAE;AAC7B,YAAA,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC;QAChB;AACA,QAAA,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC;IACrB;AACA,IAAA,OAAO,MAAM;AACf;AAEA,SAAS,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAA;IAC7B,IAAI,GAAG,CAAA;AACP,IAAA,IAAI,CAAC,GAAG,CAAC,EAAE;QACT,IAAI,IAAI,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAA;QAChD,GAAG,GAAG,MAAM,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,IAAI,GAAG,IAAI;IAC7D;SAAO;QACL,GAAG,GAAG,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IACjD;IACA,OAAO,GAAG,GAAG,CAAC,GAAG,CAAC,GAAG,GAAG;AAC1B;AAEA,SAAS,gBAAgB,CACvB,IAAI,EACJ,IAAI,EACJ,MAAM,EACN,MAAM,EACN,eAAe,EACf,IAAI,EACJ,MAAM,EAAA;AAEN,IAAA,IAAI,IAAI,GAAG,IAAI,EAAE;QACf;IACF;;AAGA,IAAA,IAAI,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,IAAI,GAAG,IAAI,IAAI,CAAC,CAAC;;AAGrC,IAAA,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;IAC7C,eAAe,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC;AAE9B,IAAA,IAAI,IAAI,GAAG,MAAM,CAAA;AAEjB,IAAA,IAAI,IAAI,GAAG,MAAM,EAAE;AACjB,QAAA,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,eAAe,CAAC,MAAM,CAAC,CAAC,IAAI,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC;IAC/D;AACA,IAAA,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,eAAe,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;AAE1D,IAAA,IAAI,KAAK,GAAG,CAAC,GAAG,CAAC,CAAA;IACjB,IAAI,IAAI,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,GAAG,CAAC,EAAE;AAC/B,QAAA,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE,eAAe,CAAC,MAAM,CAAC,CAAC,IAAI,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC;IACjE;AAEA,IAAA,IAAI,GAAG;AACP,IAAA,IAAI,MAAM;AACV,IAAA,IAAI,OAAO;AACX,IAAA,IAAI,IAAI;AACR,IAAA,KAAK,IAAI,CAAC,GAAG,KAAK,EAAE,CAAC,IAAI,IAAI,EAAE,EAAE,CAAC,EAAE;;QAElC,GAAG,GAAG,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,CAAC;;QAG7B,IAAI,GAAG,GAAG,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,IAAI,GAAG,CAAC,CAAC,IAAI,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,EAAE;YAC3D;QACF;;;QAIA,MAAM,GAAG,GAAG,CAAC,IAAI,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,CAAC;AAEnC,QAAA,OAAO,GAAG,MAAM,GAAG,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,IAAI,GAAG,CAAC,CAAC;QAE/C,IAAI,OAAO,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,EAAE;;YAE/B,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,GAAG,OAAO;YAC3B,eAAe,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,GAAG,IAAI;QACnC;AACA,QAAA,IAAI,EAAE;AAEN,QAAA,IAAI,GAAG,GAAG,GAAG,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;QACtC,IAAI,IAAI,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,EAAE;YAC5B,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,GAAG,IAAI;YACxB,eAAe,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC;QAChC;IACF;AAEA,IAAA,gBAAgB,CAAC,IAAI,EAAE,CAAC,GAAG,CAAC,EAAE,MAAM,EAAE,MAAM,EAAE,eAAe,EAAE,IAAI,EAAE,MAAM,CAAC;AAC5E,IAAA,gBAAgB,CAAC,CAAC,GAAG,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,eAAe,EAAE,IAAI,EAAE,MAAM,CAAC;AAC9E;AAEA,SAAS,YAAY,CAAC,IAAI,EAAE,MAAM,EAAE,eAAe,EAAA;IACjD,IAAI,OAAO,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM;AAC9B,IAAA,IAAI,IAAI,GAAG,IAAI,KAAK,CAAC,OAAO,CAAC;AAC7B,IAAA,IAAI,MAAM,GAAG,IAAI,KAAK,CAAC,OAAO,CAAC;;AAG/B,IAAA,IAAI,KAAK,GAAG,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,GAAG,CAAC,CAAC,CAAC;;AAGzC,IAAA,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,OAAO,EAAE,EAAE,CAAC,EAAE;AAChC,QAAA,IAAI,CAAC,KAAK,CAAC,EAAE;YACX,IAAI,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,GAAG,KAAK;YACzB,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,KAAK,KAAK,IAAI,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC;QACnD;aAAO;AACL,YAAA,IAAI,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,GAAG,KAAK;AACvC,YAAA,MAAM,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,KAAK,KAAK,IAAI,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC;QACnE;;AAGA,QAAA,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,CAAC;QACtC,eAAe,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC;IAC3B;;AAGA,IAAA,IAAI,IAAI;AACR,IAAA,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,EAAE,CAAC,EAAE;QACtC,IAAI,CAAC,GAAG,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE;YACzB,IAAI,GAAG,CAAC;QACV;aAAO;;AAEL,YAAA,IAAI,GAAG,OAAO,GAAG,CAAC;QACpB;AAEA,QAAA,gBAAgB,CACd,IAAI,EACJ,OAAO,GAAG,CAAC,EACX,CAAC,EACD,MAAM,EACN,eAAe,EACf,IAAI,EACJ,MAAM,CACP;IACH;AACF;AAEA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAqCG;AAEG,SAAU,OAAO,CAAC,IAAI,EAAE,SAAS,EAAA;AACrC,IAAA,IAAI,SAAS,GAAG,IAAI,CAAC,MAAM,EAAE;AAC3B,QAAA,MAAM,IAAI,KAAK,CAAC,yDAAyD,CAAC;IAC5E;AAEA,IAAA,IAAI,OAAO,GAAG,IAAI,CAAC,MAAM;AAEzB,IAAA,IAAI,MAAM,GAAG,WAAW,CAAC,IAAI,CAAC;;AAE9B,IAAA,IAAI,WAAW,GAAG,iBAAiB,CAAC,MAAM,CAAC;;;AAI3C,IAAA,IAAI,WAAW,KAAK,CAAC,EAAE;AACrB,QAAA,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;IACpB;IACA,SAAS,GAAG,IAAI,CAAC,GAAG,CAAC,WAAW,EAAE,SAAS,CAAC;;IAG5C,IAAI,MAAM,GAAG,UAAU,CAAC,SAAS,EAAE,OAAO,CAAC;;IAE3C,IAAI,eAAe,GAAG,UAAU,CAAC,SAAS,EAAE,OAAO,CAAC;;;;;AAMpD,IAAA,YAAY,CAAC,MAAM,EAAE,MAAM,EAAE,eAAe,CAAC;;;;;IAM7C,IAAI,QAAQ,GAAG,EAAE;IACjB,IAAI,YAAY,GAAG,eAAe,CAAC,CAAC,CAAC,CAAC,MAAM,GAAG,CAAC;;;;AAKhD,IAAA,KAAK,IAAI,OAAO,GAAG,eAAe,CAAC,MAAM,GAAG,CAAC,EAAE,OAAO,IAAI,CAAC,EAAE,OAAO,EAAE,EAAE;QACtE,IAAI,WAAW,GAAG,eAAe,CAAC,OAAO,CAAC,CAAC,YAAY,CAAC;;;;QAKxD,QAAQ,CAAC,OAAO,CAAC,GAAG,MAAM,CAAC,WAAW,CAAC;AAEvC,QAAA,IAAI,OAAO,GAAG,CAAC,EAAE;AACf,YAAA,YAAY,GAAG,WAAW,GAAG,CAAC;QAChC;IACF;AAEA,IAAA,OAAO,QAAQ;AACjB;;ACxQM,SAAU,cAAc,CAAC,KAAoB,EAAA;AACjD,IAAA,MAAM,EACJ,IAAI,EAGJ,uBAAuB,EACvB,OAAO,EACP,OAEY,CACb,GAAG,KAAK;IACT,MAAM,oBAAoB,GAAyB,EAAE;IAErD,MAAM,eAAe,GAAG,EAAE;IAE1B,MAAM,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC;IAE9B,IAAI,cAAc,GAAG,CAAC;IAEtB,MAAM,OAAO,GAA4B,EAAE;IAE3C,IAAI,CAAC,OAAO,CAAC,CAAC,GAAG,EAAE,QAAQ,KAAI;AAC7B,QAAA,MAAM,OAAO,GAAG,IAAI,CAAC,GAAG,CAAC;QACF,uBAAuB,CAAC,OAAO,EAAE,QAAQ;QAIhE,MAAM,eAAe,GAAG,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC,KAAK,CAAC;AAE3E,QAAA,MAAM,YAAY,GAAG,eAAe,CAAC,CAAC,CAAC;QACvC,MAAM,WAAW,GAAG,eAAe,CAAC,eAAe,CAAC,MAAM,GAAG,CAAC,CAAC;QAE/D,MAAM,QAAQ,GAAGC,mBAAW;aACzB,MAAM,CAAC,CAAC,YAAY,CAAC,KAAK,EAAE,WAAW,CAAC,KAAK,CAAC;aAC9C,KAAK,CAAC,CAAC,YAAY,CAAC,WAAW,EAAE,WAAW,CAAC,WAAW,CAAC,CAAC;AAE7D,QAAA,MAAM,sBAAsB,GAAG,OAAO,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,QAAQ,CAAC;AACzE,QAAA,MAAM,sBAAsB,GAAG,OAAO,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,QAAQ,CAAC;AAEzE,QAAA,MAAM,OAAO,GAAG,eAAe,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC;QAEnD,MAAM,QAAQ,GAAG,CAAC;QAElB,MAAM,OAAO,GAAG,OAAO,CAAC,OAAO,EAAE,QAAQ,CAAC;QAE1C,IAAI,MAAM,GAAG,EAAE;QAEf,OAAO,CAAC,OAAO,CAAC,CAAC,MAAM,EAAE,CAAC,KAAI;;YAC5B,MAAM,KAAK,GAAG,MAAM;AACpB,YAAA,MAAM,GAAG,GAAG,CAAA,EAAA,GAAA,OAAO,CAAC,CAAC,GAAG,CAAC,CAAC,MAAA,IAAA,IAAA,EAAA,KAAA,MAAA,GAAA,EAAA,GAAI,WAAW,CAAC,KAAK;YAE/C,MAAM,CAAC,IAAI,CAAC;gBACV,KAAK;gBACL,GAAG;gBACH,GAAG;gBACH,OAAO;gBACP,sBAAsB;gBACtB,sBAAsB;AACtB,gBAAA,WAAW,EAAE,QAAQ,CAAC,KAAK,CAAC;AAC5B,gBAAA,SAAS,EAAE,QAAQ,CAAC,GAAG,CAAC;AACxB,gBAAA,MAAM,EAAE;AACT,aAAA,CAAC;AACJ,QAAA,CAAC,CAAC;AAEF,QAAA,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC;QAEpB,IAAI,IAAI,GAAG,CAAC;AAEZ,QAAA,KAAK,MAAM,SAAS,IAAI,eAAe,EAAE;YACvC,IAAI,MAAM,CAAC,IAAI,CAAC,CAAC,GAAG,IAAI,SAAS,CAAC,KAAK,EAAE;AACvC,gBAAA,IAAI,MAAM,CAAC,IAAI,GAAG,CAAC,CAAC,EAAE;AACpB,oBAAA,IAAI,EAAE;gBACR;YACF;YACA,MAAM,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC;QACrC;AAEA,QAAA,MAAM,CAAC,OAAO,CAAC,CAAC,KAAK,KAAI;AACvB,YAAA,MAAM,WAAW,GAAG,KAAK,CAAC,MAAM,CAAC,MAAM;YACvC,cAAc,GAAG,IAAI,CAAC,GAAG,CAAC,WAAW,EAAE,cAAc,CAAC;AACxD,QAAA,CAAC,CAAC;AACJ,IAAA,CAAC,CAAC;IAEF,OAAO,CAAC,OAAO,CAAC,CAAC,MAAM,EAAE,KAAK,KAAI;QAChC,MAAM,aAAa,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,KAAI;YACzC,MAAM,EAAgB,sBAA8C,CAAE,GACpE,KAAK;YAEP,MAAM,EAAE,IAAI,GAAG,OAAO,EAAE,MAAM,GAAG,OAAO,EAAE,GAAG,sBAAsB;YAEnE,MAAM,UAAU,GAAGA,mBAAW;AAC3B,iBAAA,MAAM,CAAC,CAAC,CAAC,EAAE,cAAc,CAAC;AAC1B,iBAAA,KAAK,CAAC,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;YAEzB,OAAO;AAGL,gBAAA,QAAQ,EAAE,MAAM;gBAChB,CAAC,EAAE,KAAK,CAAC,WAAW;AACpB,gBAAA,KAAK,EAAE,KAAK,CAAC,SAAS,GAAG,KAAK,CAAC,WAAW;AAC1C,gBAAA,CAAC,EAAE,KAAK,CAAC,OAAO,CAAC,CAAC;AAClB,gBAAA,MAAM,EAAE,KAAK,CAAC,OAAO,CAAC,KAAK;AAC3B,gBAAA,KAAK,EAAE,MAAM,CAAC,MAAM,CAAC,EAAE,WAAW,EAAE,CAAC,EAAE,EAAE,sBAAsB,EAAE;oBAC/D,IAAI,EAAE,UAAU,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC;AACrC,oBAAA,WAAW,EAAE,CAAC;oBACd;iBACD;aACF;AACH,QAAA,CAAC,CAAC;QAEF,oBAAoB,CAAC,IAAI,CAAC;AACxB,YAAA,cAAc,EAAE;;AAEd,gBAAA,SAAS,EAAE,EAAE;gBACb,GAAG,EAAE,CAAA,aAAA,EAAgB,KAAK,CAAA,CAAE;AAC5B,gBAAA,IAAI,EAAE,KAAK;gBACX,QAAQ,EAAE;AACX,aAAA;;AAED,YAAA,QAAQ,EAAE;AACX,SAAA,CAAC;AACJ,IAAA,CAAC,CAAC;IAEF,OAAO,EAAE,KAAK,EAAE,oBAAoB,EAAE,QAAQ,EAAE,eAAe,EAAE;AACnE;;AC7IA,SAASC,aAAW,CAAC,WAAW,EAAA;AAC9B,IAAA,IAAI,IAAI,GAAG,CAAC,QAAQ,EAAE,CAAC,CAAC;IACxB,IAAI,KAAK,GAAG,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC;AAC1B,IAAA,IAAI,GAAG,GAAG,CAAC,CAAC,EAAE,QAAQ,CAAC;IACvB,IAAI,MAAM,GAAG,CAAC,CAAC,EAAE,CAAC,QAAQ,CAAC;AAC3B,IAAA,WAAW,CAAC,OAAO,CAAC,CAAC,CAAC,KAAI;AACxB,QAAA,IAAI,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,IAAI;AAChC,QAAA,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,KAAK;AACnC,QAAA,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,MAAM;AACtC,QAAA,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,GAAG;AAC/B,IAAA,CAAC,CAAC;IAEF,OAAO;AACL,QAAA,MAAM,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;QAC5D,GAAG;QACH,IAAI;QACJ,KAAK;QACL;KACD;AACH;AAEM,SAAU,UAAU,CAAC,EAAE,WAAW,EAAE,IAAI,EAAE,YAAY,EAAE,YAAY,EAAE,EAAA;IAC1E,IAAI,kBAAkB,GAAG,EAAE;AAC3B,IAAA,IAAI,CAAC,WAAW,CAAC,IAAI,EAAE;AACrB,QAAA,WAAW,GAAG,EAAE,IAAI,EAAE,WAAW,EAAE;IACrC;AAEA,IAAA,MAAM,EACJ,UAAU,GAAG,GAAG,EAChB,UAAU,GAAG,EAAE,EACf,SAAS,GAAG,EAAE,EACd,YAAY,EACb,GAAG,WAAW;IAEf,MAAM,MAAM,GAAGD,mBAAW;SACvB,MAAM,CAAC,YAAY;AACnB,SAAA,UAAU,CAAC,CAAC,CAAC,EAAE,UAAU,CAAC;AAC1B,SAAA,IAAI,EAAE;IACT,MAAM,MAAM,GAAGA,mBAAW;SACvB,MAAM,CAAC,YAAY;AACnB,SAAA,UAAU,CAAC,CAAC,UAAU,EAAE,CAAC,CAAC;AAC1B,SAAA,IAAI,EAAE;AAET,IAAA,IAAI,CAAC,OAAO,CAAC,CAAC,WAAW,KAAI;QAC3B,IAAI,yBAAyB,GAAGE,wBAAc;AAC3C,aAAA,IAAI,CAAC,CAAC,UAAU,EAAE,UAAU,CAAC;AAC7B,aAAA,CAAC,CAAC,CAAC,CAAC,KAAK,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AACrB,aAAA,CAAC,CAAC,CAAC,CAAC,KAAK,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;aACrB,UAAU,CAAC,UAAU;aACrB,SAAS,CAAC,SAAS,CAAC,CAAC,WAAW,CAAC,eAAe,CAAC;QAEpD,IAAI,YAAY,EAAE;AAChB,YAAA,yBAAyB,GAAG,CAAC,yBAAyB,CAAC,CAAC,CAAC,CAAC;QAC5D;QAEA,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,yBAAyB,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,CAAC;AAEtE,QAAA,yBAAyB,CAAC,OAAO,CAAC,CAAC,OAAO,KAAI;AAC5C,YAAA,OAAO,CAAC,aAAa,GAAG,WAAW;AACnC,YAAA,OAAO,CAAC,MAAM,GAAG,EAAE;YACnB,OAAO,CAAC,OAAO,GAAG,OAAO,CAAC,KAAK,GAAG,GAAG;YACrC,OAAO,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC,IAAI,KAAI;gBACnC,IAAI,CAAC,OAAO,CAAC,CAAC,OAAO,EAAE,CAAC,KAAI;oBAC1B,IAAI,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC,SAAS,KAAI;AAClC,wBAAA,SAAS,GAAG;AACV,4BAAA,MAAM,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;AAC3B,4BAAA,MAAM,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC;yBAC3B;AACD,wBAAA,OAAO,SAAS;AAClB,oBAAA,CAAC,CAAC;;AAEF,oBAAA,IAAI,CAAC,KAAK,CAAC,EAAE;AACX,wBAAA,OAAO,CAAC,MAAM,CAAC,IAAI,CAACD,aAAW,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;oBAC3C;AACF,gBAAA,CAAC,CAAC;AACJ,YAAA,CAAC,CAAC;AACJ,QAAA,CAAC,CAAC;QACF,kBAAkB,GAAG,CAAC,GAAG,kBAAkB,EAAE,GAAG,yBAAyB,CAAC;AAC5E,IAAA,CAAC,CAAC;AAEF,IAAA,OAAO,kBAAkB;AAC3B;;ACxEM,SAAU,UAAU,CAAC,EACzB,UAAU,GAAG,IAAI,EACjB,aAAa,GAAG,KAAK,EACrB,WAAW,EAAE,eAAe,EAC5B,IAAI,EAAE,QAAQ,EACd,YAAY,EAAE,WAAW,EACzB,YAAY,EAAE,WAAW,EACzB,IAAI,EACJ,UAAU,GAAGD,mBAAW,EAAE,EAC1B,UAAU,GAAGA,mBAAW,EAAE,EAC1B,MAAM,EACN,OAAO,EACP,OAAO,EACP,QAAQ,EACR,SAAS,EACS,EAAA;IAClB,IAAI,YAAY,GAAG,WAAW;IAC9B,IAAI,YAAY,GAAG,WAAW;IAE9B,IAAI,CAAC,YAAY,EAAE;AACjB,QAAA,MAAM,KAAK,GAAG,QAAQ,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;AAClD,QAAA,YAAY,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC,CAAC;IACzD;IAEA,IAAI,CAAC,YAAY,EAAE;AACjB,QAAA,MAAM,KAAK,GAAG,QAAQ,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;AAClD,QAAA,YAAY,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC,CAAC;IACzD;AAEA,IAAA,IAAI,aAAa,IAAI,QAAQ,EAAE;QAC7B,OAAO,QAAQ,CAAC,WAAW;IAC7B;IAEA,IAAI,kBAAkB,GAAG,EAAE;AAC3B,IAAA,IAAI,WAAgC;AACpC,IAAA,IAAI,CAAC,eAAe,CAAC,IAAI,EAAE;AACzB,QAAA,WAAW,GAAG,EAAE,IAAI,EAAE,WAAW,EAAE;IACrC;SAAO;QACL,WAAW,GAAG,eAAe;IAC/B;IAEA,MAAM,EACJ,IAAI,GAAG,IAAI,EACX,MAAM,EACN,QAAQ,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,MAAM,EAC1B,MAAM,EACN,UAAU,EACX,GAAG,WAAW;IAEf,IAAI,QAAQ,CAAC,WAAW,IAAI,CAAC,QAAQ,CAAC,eAAe,EAAE;QACrD,QAAQ,CAAC,eAAe,GAAG,QAAQ,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;IACxE;AAEA,IAAA,MAAM,IAAI,GAAG,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,GAAG,QAAQ,GAAG,CAAC,QAAQ,CAAC;IAE5D,MAAM,YAAY,GAAG,UAAU,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;IACxE,MAAM,YAAY,GAAG,UAAU,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;AAExE,IAAA,MAAM,gBAAgB,GACpB,CAAC,MAAM,IAAI,MAAM,GAAG,CAAC,KAAK,CAAC,CAAC,IAAI,GAAG,CAAC,GAAG,CAAC,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC;IAExE,MAAM,SAAS,GAAGG,eAAM;AACrB,SAAA,CAAC,CAAC,CAAC,CAAC,KAAK,YAAY,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;AACrC,SAAA,CAAC,CAAC,CAAC,CAAC,KAAK,YAAY,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;SACrC,MAAM,CAAC,gBAAgB;SACvB,IAAI,CAAC,IAAI,CAAC;AAEb,IAAA,IAAI,MAAM;AACV,IAAA,MAAM,QAAQ,GAAqB,SAAS,CAAC,OAAO,EAAE;AAEtD,IAAA,IAAI,CAAC,OAAO,CAAC,CAAC,UAAU,KAAI;QAC1B,MAAM,GAAG,CAAC;AACV,QAAA,MAAM,KAAK,GAAG,SAAS,CACrB,UAAU,CAAC,eAAe,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,MAAK,MAAA,CAAA,MAAA,CAAA,EACvC,SAAS,EAAE,CAAC,IACT,UAAU,CAAC,WAAW,CAAC,CAAC,CAAC,CAAA,CAC5B,CAAC,CACJ;QAED,MAAM,UAAU,GAAG,EAAE;AAErB,QAAA,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,KAAI;AAClB,YAAA,UAAU,CAAC,CAAA,EAAG,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAA,CAAA,EAAI,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,IAAI;AACxD,QAAA,CAAC,CAAC;AAEF,QAAA,QAAQ,CAAC,OAAO,CAAC,CAAC,SAAS,KAAI;YAC7B,IAAI,CAAC,UAAU,CAAC,CAAA,EAAG,QAAQ,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,IAAI,QAAQ,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAA,CAAE,CAAC,EAAE;gBACtE,MAAM,MAAM,GAAa,EAAE;AAC3B,gBAAA,MAAM,CAAC,CAAC,GAAG,SAAS,CAAC,CAAC,CAAC;AACvB,gBAAA,MAAM,CAAC,CAAC,GAAG,SAAS,CAAC,CAAC,CAAC;AACvB,gBAAA,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC;YACpB;AACF,QAAA,CAAC,CAAC;QAEF,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;QAEnD,IAAI,MAAM,EAAE;YACV,MAAM,CAAC,MAAM,CAAC;QAChB;AAEA,QAAA,MAAM,OAAO,GAAG;AACd,YAAA,CAAC,CAAC,EAAE,EAAE,CAAC;AACP,YAAA,CAAC,KAAK,EAAE,IAAI,CAAC;YACb,CAAC,KAAK,EAAE,GAAG,CAAC;YACZ,CAAC,CAAC,EAAE,CAAC,CAAC;AACN,YAAA,CAAC,MAAM,EAAE,GAAG,CAAC;AACb,YAAA,CAAC,MAAM,EAAE,IAAI;SACd;AAED,QAAA,MAAM,QAAQ,GAAG,YAAY,CAAC,MAAM,CAAC,gBAAgB,CAAC,GAAG,YAAY,CAAC,CAAC,CAAC;AACxE,QAAA,MAAM,SAAS,GAAG,YAAY,CAAC,MAAM,CAAC,gBAAgB,CAAC,GAAG,YAAY,CAAC,CAAC,CAAC;QAEzE,MAAM,eAAe,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK;AACzC,YAAA,CAAC,CAAC,CAAC,CAAC,GAAG,QAAQ;AACf,YAAA,CAAC,CAAC,CAAC,CAAC,GAAG;AACR,SAAA,CAAC;QAEF,MAAM,wBAAwB,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC,CAAsB,KAAI;AACpE,YAAA,MAAM,QAAQ,GAAG,QAAQ,CAAC,CAAC,CAAC;AAC5B,YAAA,MAAM,EAAE,GAAG,CAAC,CAAC,CAAC;AACd,YAAA,MAAM,EAAE,GAAG,CAAC,CAAC,CAAC;YACd,CAAC,CAAC,CAAC,GAAG,YAAY,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;YAC9B,CAAC,CAAC,CAAC,GAAG,YAAY,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;AAC9B,YAAA,MAAM,OAAO,GAAG,QAAQ,GAAG,MAAM;YACjC,OAAO;AACL,gBAAA,UAAU,EAAE,UAAU,KACpBP,gBAAA,CAAA,aAAA,CAAA,GAAA,EAAA,EAAG,SAAS,EAAE,CAAA,UAAA,EAAa,EAAE,IAAI,IAAI,CAAC,CAAC,CAAC,GAAG,EAAE,CAAA,CAAA,CAAG,EAAA,EAC7C,UAAU,CAAC;oBACV,CAAC,EAAA,MAAA,CAAA,MAAA,CAAA,MAAA,CAAA,MAAA,CAAA,EAAA,EACI,CAAC,CAAA,EAAA,EACJ,QAAQ,EAAE,CAAC,EACX,OAAO,EACP,KAAK,EAAE,QAAQ,EACf,MAAM,EAAE,gBAAgB,EACxB,cAAc,EAAE,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK;AACjC,4BAAA,CAAC,CAAC,CAAC,CAAC,GAAG,gBAAgB;AACvB,4BAAA,CAAC,CAAC,CAAC,CAAC,GAAG;AACR,yBAAA,CAAC,EAAA,CACH;oBACD,MAAM;oBACN,OAAO;oBACP,OAAO;oBACP,QAAQ;oBACR,SAAS;AACT,oBAAA,YAAY,EAAE;AACf,iBAAA,CAAC,CACA,CACL;AACD,gBAAA,eAAe,EAAE,eAAe,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;AACrE,gBAAA,KAAK,EAAE,QAAQ;gBACf,OAAO;AACP,gBAAA,IAAI,EAAE,CAAC;AACP,gBAAA,aAAa,EAAE,UAAU;AACzB,gBAAA,QAAQ,EAAE;aACX;AACH,QAAA,CAAC,CAAC;QACF,kBAAkB,GAAG,CAAC,GAAG,kBAAkB,EAAE,GAAG,wBAAwB,CAAC;AAC3E,IAAA,CAAC,CAAC;IAEF,IAAI,UAAU,EAAE;AACd,QAAA,kBAAkB,CAAC,OAAO,CAAC,CAAC,CAAC,KAAI;YAC/B,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC;YACd,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC;AAChB,QAAA,CAAC,CAAC;QACF,OAAO;AACL,YAAA,IAAI,EAAE,QAAQ;AACd,YAAA,aAAa,EAAE,IAAI;AACnB,YAAA,WAAW,EAAE,kBAAkB;AAC/B,YAAA,MAAM,EAAE;SACT;IACH;AAEA,IAAA,OAAO,kBAAkB;AAC3B;;AC5KA,MAAM,kBAAkB,GAAG,CACzB,MAAM,EACN,QAAQ,EACR,mBAAmB,EACnB,sBAAsB,KACpB;AACF,IAAA,MAAM,IAAI,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK;QAChC,CAAC,CAAC,CAAC,CAAC;QACJ,CAAC,CAAC,CAAC,CAAC,GAAG,mBAAmB,CAAC,QAAQ,CAAC,CAAC,CAAC;AACvC,KAAA,CAAC;AACF,IAAA,MAAM,OAAO,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK;QACnC,CAAC,CAAC,CAAC,CAAC;QACJ,CAAC,CAAC,CAAC,CAAC,GAAG,sBAAsB,CAAC,QAAQ,CAAC,CAAC,CAAC;AAC1C,KAAA,CAAC;IACF,OAAO,CAAC,GAAG,IAAI,EAAE,GAAG,OAAO,CAAC,OAAO,EAAE,CAAC;AACxC,CAAC;AAEK,SAAU,YAAY,CAAC,EAAE,WAAW,EAAE,IAAI,EAAE,OAAO,EAAE,EAAA;IACzD,IAAI,kBAAkB,GAAG,EAAE;AAC3B,IAAA,IAAI,CAAC,WAAW,CAAC,IAAI,EAAE;AACrB,QAAA,WAAW,GAAG,EAAE,IAAI,EAAE,WAAW,EAAE;IACrC;AAEA,IAAA,MAAM,EACJ,gBAAgB,EAChB,mBAAmB,GAAG,gBAAgB,EACtC,sBAAsB,GAAG,gBAAgB,EAC1C,GAAG,WAAW;AAEf,IAAA,IAAI,CAAC,OAAO,CAAC,CAAC,QAAQ,KAAI;QACxB,MAAM,WAAW,GAAG,QAAQ,CAAC,SAAS,CAAC,GAAG,CAAC,OAAO,CAAC;QACnD,IAAI,eAAe,GAAG,EAAE;QACxB,IAAI,WAAW,GAAG,EAAE;AACpB,QAAA,MAAM,cAAc,GAAG;AACrB,YAAA;AACE,gBAAA,GAAG,EAAE,WAAW;AAChB,gBAAA,IAAI,EAAE;AACP;SACF;QACD,WAAW,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,KAAI;AAC3B,YAAA,IAAI,CAAC,KAAK,IAAI,EAAE;gBACd,eAAe,CAAC,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;gBAC3C,WAAW,CAAC,IAAI,CAAC,QAAQ,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC;YAC/C;AAAO,iBAAA,IAAI,WAAW,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE;gBAC7B,eAAe,GAAG,EAAE;gBACpB,WAAW,GAAG,EAAE;gBAChB,cAAc,CAAC,IAAI,CAAC;AAClB,oBAAA,GAAG,EAAE,WAAW;AAChB,oBAAA,IAAI,EAAE;AACP,iBAAA,CAAC;YACJ;AACF,QAAA,CAAC,CAAC;QAEF,cAAc,CAAC,OAAO,CAAC,CAAC,EAAE,GAAG,EAAE,IAAI,EAAE,KAAI;AACvC,YAAA,MAAM,wBAAwB,GAAG;AAC/B,gBAAA,IAAI,EAAE,QAAQ;AACd,gBAAA,aAAa,EAAE,QAAQ;gBACvB,eAAe,EAAE,kBAAkB,CACjC,GAAG,EACH,IAAI,EACJ,mBAAmB,EACnB,sBAAsB;aAEzB;AAED,YAAA,kBAAkB,GAAG,CAAC,GAAG,kBAAkB,EAAE,wBAAwB,CAAC;AACxE,QAAA,CAAC,CAAC;AACJ,IAAA,CAAC,CAAC;AAEF,IAAA,OAAO,kBAAkB;AAC3B;AAEM,SAAU,WAAW,CAAC,EAC1B,UAAU,GAAG,IAAI,EACjB,aAAa,GAAG,KAAK,EACrB,WAAW,EAAE,eAAe,EAC5B,IAAI,EAAE,QAAQ,EACd,YAAY,GAAG;AACb,IAAA,IAAI,CAAC,GAAG,CAAC,GAAG,QAAQ,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;AACjD,IAAA,IAAI,CAAC,GAAG,CAAC,GAAG,QAAQ,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;AACjD,CAAA,EACD,YAAY,GAAG;AACb,IAAA,IAAI,CAAC,GAAG,CAAC,GAAG,QAAQ,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;AACjD,IAAA,IAAI,CAAC,GAAG,CAAC,GAAG,QAAQ,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;CACjD,EACD,IAAI,EACJ,UAAU,GAAGI,mBAAW,EAAE,EAC1B,UAAU,GAAGA,mBAAW,EAAE,EAC1B,MAAM,EACN,OAAO,EACP,OAAO,EACP,QAAQ,EACR,SAAS,EACS,EAAA;AAClB,IAAA,IAAI,aAAa,IAAI,QAAQ,EAAE;QAC7B,OAAO,QAAQ,CAAC,WAAW;IAC7B;IAEA,IAAI,QAAQ,CAAC,WAAW,IAAI,CAAC,QAAQ,CAAC,eAAe,EAAE;QACrD,QAAQ,CAAC,eAAe,GAAG,QAAQ,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;IACxE;AAEA,IAAA,MAAM,IAAI,GAAG,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,GAAG,QAAQ,GAAG,CAAC,QAAQ,CAAC;IAE5D,IAAI,kBAAkB,GAAuB,EAAE;AAE/C,IAAA,IAAI,WAAgC;AACpC,IAAA,IAAI,CAAC,eAAe,CAAC,IAAI,EAAE;AACzB,QAAA,WAAW,GAAG,EAAE,IAAI,EAAE,WAAW,EAAE;IACrC;SAAO;QACL,WAAW,GAAG,eAAe;IAC/B;IAEA,MAAM;;IAEJ,QAAQ,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,MAAM,EAC1B,KAAK,GAAG,WAAW,CAAC,KAAK,IAAI,IAAI,EACjC,KAAK,GAAG,KAAK,EACb,OAAO,GAAG,CAAC,WAAW,CAAC,KAAK,IAAI,WAAW,CAAC,OAAO,EACnD,OAAO,GAAG,CAAC,WAAW,CAAC,KAAK,IAAI,WAAW,CAAC,OAAO,EACnD,UAAU,EACV,MAAM,EACP,GAAG,WAAW;AACf,IAAA,MAAM,WAAW,GAAG,KAAK,GAAG,CAAC,GAAG,KAAK,GAAG,CAAC,GAAG,KAAK;AACjD,IAAA,MAAM,WAAW,GAAG,KAAK,GAAG,CAAC,GAAG,KAAK,GAAG,CAAC,GAAG,KAAK;IAEjD,MAAM,gBAAgB,GAAG,UAAU,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;IAC5E,MAAM,gBAAgB,GAAG,UAAU,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AAE5E,IAAA,MAAM,gBAAgB,GAAG;QACvB,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,OAAO,IAAI,OAAO,GAAG,IAAI,CAAC,CAAC,CAAC,KAAK,WAAW,IAAI,IAAI,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC;YACvE,EAAE;QACJ,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,OAAO,IAAI,OAAO,GAAG,IAAI,CAAC,CAAC,CAAC,KAAK,WAAW,IAAI,IAAI,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC;YACvE;KACH;AACD,IAAA,IAAI,QAAQ,GAAG,CAAC,QAAQ;AAExB,IAAA,IAAI,CAAC,OAAO,CAAC,CAAC,WAAW,KAAI;QAC3B,MAAM,IAAI,GAAG,EAAE;QACf,MAAM,QAAQ,GAAG,EAAE;AAEnB,QAAA,IAAI,IAAI;AACR,QAAA,IAAI,UAAU;QAEd,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,gBAAgB,CAAC,CAAC,CAAC,EAAE;YAChE,MAAM,CAAC,GAAG,gBAAgB,CAAC,MAAM,CAAC,CAAC,CAAC;AACpC,YAAA,MAAM,EAAE,GAAG,gBAAgB,CAAC,MAAM,CAAC,CAAC,GAAG,gBAAgB,CAAC,CAAC,CAAC,CAAC;YAE3D,UAAU,GAAG,EAAE;AACf,YAAA,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC;YACrB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,gBAAgB,CAAC,CAAC,CAAC,EAAE;gBAChE,MAAM,CAAC,GAAG,gBAAgB,CAAC,MAAM,CAAC,CAAC,CAAC;AACpC,gBAAA,MAAM,EAAE,GAAG,gBAAgB,CAAC,MAAM,CAAC,CAAC,GAAG,gBAAgB,CAAC,CAAC,CAAC,CAAC;AAC3D,gBAAA,IAAI,GAAG;AACL,oBAAA,EAAE,EAAE,CAAC;AACL,oBAAA,EAAE,EAAE,CAAC;AACL,oBAAA,EAAE,EAAE,gBAAgB,CAAC,CAAC,CAAC;AACvB,oBAAA,EAAE,EAAE,gBAAgB,CAAC,CAAC,CAAC;AACvB,oBAAA,CAAC,EAAE,CAAC,CAAC,GAAG,EAAE,IAAI,CAAC;AACf,oBAAA,CAAC,EAAE,CAAC,CAAC,GAAG,EAAE,IAAI,CAAC;AACf,oBAAA,QAAQ,EAAE,EAAE;AACZ,oBAAA,KAAK,EAAE,CAAC;AACR,oBAAA,eAAe,EAAE;wBACf,CAAC,CAAC,EAAE,CAAC,CAAC;wBACN,CAAC,EAAE,EAAE,CAAC,CAAC;wBACP,CAAC,EAAE,EAAE,EAAE,CAAC;wBACR,CAAC,CAAC,EAAE,EAAE;AACP,qBAAA;AACD,oBAAA,aAAa,EAAE;iBAChB;AACD,gBAAA,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC;AACrB,gBAAA,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC;YACrB;AACA,YAAA,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC;QACvB;AACA,QAAA,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC;QAErB,WAAW,CAAC,eAAe,CAAC,OAAO,CAAC,CAAC,CAAmB,EAAE,EAAU,KAAI;YACtE,MAAM,KAAK,GAAG,gBAAgB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAW;YAC9C,MAAM,KAAK,GAAG,gBAAgB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAW;AAE9C,YAAA,MAAM,WAAW,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,GAAG,gBAAgB,CAAC,CAAC,CAAC,CAAC;AAC3D,YAAA,MAAM,WAAW,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,GAAG,gBAAgB,CAAC,CAAC,CAAC,CAAC;YAE3D,IAAI,IAAI,CAAC,WAAW,CAAC,CAAC,WAAW,CAAC,EAAE;AAClC,gBAAA,IAAI,CAAC,WAAW,CAAC,CAAC,WAAW,CAAC,CAAC,QAAQ,CAAC,IAAI,CAC1C,WAAW,CAAC,WAAW,CAAC,EAAE,CAAC,CAC5B;YACH;AACF,QAAA,CAAC,CAAC;AAEF,QAAA,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC,KAAI;YACrB,CAAC,CAAC,KAAK,GAAG,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC;YAC9B,QAAQ,GAAG,IAAI,CAAC,GAAG,CAAC,QAAQ,EAAE,CAAC,CAAC,KAAK,CAAC;AACxC,QAAA,CAAC,CAAC;AAEF,QAAA,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC,KAAI;YACrB,CAAC,CAAC,OAAO,GAAG,CAAC,CAAC,KAAK,GAAG,QAAQ;YAC9B,CAAC,CAAC,UAAU,GAAG,UAAU,KACvBJ,gBAAA,CAAA,aAAA,CAAA,GAAA,EAAA,EAAG,SAAS,EAAE,CAAA,UAAA,EAAa,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,EAAE,CAAA,CAAA,CAAG,EAAA,EACvC,UAAU,CAAC;gBACV,CAAC;gBACD,MAAM;gBACN,OAAO;gBACP,OAAO;gBACP,QAAQ;gBACR,SAAS;AACT,gBAAA,YAAY,EAAE;aACf,CAAC,CACA,CACL;AACH,QAAA,CAAC,CAAC;QAEF,kBAAkB,GAAG,CAAC,GAAG,kBAAkB,EAAE,GAAG,QAAQ,CAAC;AAC3D,IAAA,CAAC,CAAC;IACF,IAAI,MAAM,EAAE;QACV,MAAM,CAAC,QAAQ,CAAC;IAClB;IACA,IAAI,UAAU,EAAE;AACd,QAAA,MAAM,mBAAmB,GAAqB;AAC5C,YAAA,IAAI,EAAE,SAAS;AACf,YAAA,aAAa,EAAE,IAAI;AACnB,YAAA,SAAS,EAAE,EAAE;AACb,YAAA,eAAe,EAAE,EAAE;AACnB,YAAA,IAAI,EAAE,EAAE;AACR,YAAA,MAAM,EAAE,EAAE;AACV,YAAA,CAAC,EAAE,CAAC;AACJ,YAAA,CAAC,EAAE,CAAC;AACJ,YAAA,WAAW,EAAE,kBAAkB;AAC/B,YAAA,MAAM,EAAE;SACT;AACD,QAAA,OAAO,mBAAmB;IAC5B;AAEA,IAAA,OAAO,kBAAkB;AAC3B;SAEgB,WAAW,CAAC,EAC1B,UAAU,GAAG,KAAK,EAClB,WAAW,EAAE,eAAe,EAC5B,IAAI,EAAE,QAAQ,EACd,YAAY,GAAG;AACb,IAAA,IAAI,CAAC,GAAG,CAAC,GAAG,QAAQ,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;AACjD,IAAA,IAAI,CAAC,GAAG,CAAC,GAAG,QAAQ,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;AACjD,CAAA,EACD,UAAU,GAAGI,mBAAW,EAAE,EACR,EAAA;IAClB,IAAI,UAAU,EAAE;AACd,QAAA,OAAO,QAAQ,CAAC,CAAC,CAAC,CAAC,WAAW;IAChC;IAEA,IAAI,kBAAkB,GAAG,EAAE;AAE3B,IAAA,IAAI,WAAgC;AACpC,IAAA,IAAI,CAAC,eAAe,CAAC,IAAI,EAAE;AACzB,QAAA,WAAW,GAAG,EAAE,IAAI,EAAE,WAAW,EAAE;IACrC;SAAO;QACL,WAAW,GAAG,eAAe;IAC/B;IAEA,MAAM,EACJ,cAAc,EAAE,kBAAkB,GAAG,QAAQ,EAC7C,KAAK,GAAG,CAAC,EACT,SAAS,GAAG,CAAC,EACb,aAAa,GAAG,EAAE,EAClB,KAAK,GAAGI,qBAAa,EACtB,GAAG,WAAW;IAEf,IAAI,cAAc,GAAG,kBAAkB;AAEvC,IAAA,IACE,YAAY,CAAC,CAAC,CAAC,GAAG,CAAC;SAClB,kBAAkB,KAAK,aAAa;AACnC,YAAA,kBAAkB,KAAK,OAAO;AAC9B,YAAA,kBAAkB,KAAK,aAAa,CAAC,EACvC;AACA,QAAA,OAAO,CAAC,KAAK,CACX,mBAAmB,kBAAkB,CAAA,6EAAA,CAA+E,CACrH;QACD,cAAc,GAAG,QAAQ;IAC3B;IAEA,IAAI,QAAQ,CAAC,WAAW,IAAI,CAAC,QAAQ,CAAC,eAAe,EAAE;QACrD,QAAQ,CAAC,eAAe,GAAG,QAAQ,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;IACxE;AAEA,IAAA,MAAM,IAAI,GAAG,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,GAAG,QAAQ,GAAG,CAAC,QAAQ,CAAC;AAE5D,IAAA,MAAM,MAAM,GAAG,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,YAAY,CAAC;IAE5D,kBAAkB,GAAG,EAAE;AACvB,IAAA,IAAI,CAAC,OAAO,CAAC,CAAC,KAAK,KAAI;AACrB,QAAA,MAAM,cAAc,GAAGC,2BAAU,CAAC,cAAc,CAAC,CAC/C,KAAK,CAAC,eAAe,CAAC,GAAG,CAAC,CAAC,CAAC,KAAI;AAC9B,YAAA,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;AACZ,YAAA,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;AAEZ,YAAA,IAAI,OAAO,CAAC,KAAK,QAAQ,EAAE;AACzB,gBAAA,CAAC,GAAG,CAAC,CAAC,OAAO,EAAE;YACjB;AACA,YAAA,IAAI,OAAO,CAAC,KAAK,QAAQ,EAAE;AACzB,gBAAA,CAAC,GAAG,CAAC,CAAC,OAAO,EAAE;YACjB;AAEA,YAAA,OAAO,CAAC,CAAC,EAAE,CAAC,CAAC;AACf,QAAA,CAAC,CAAC,EACF;YACE,KAAK;YACL;AACD,SAAA,CACF;AACD,QAAA,MAAM,WAAW,GAAG,CAAC,GAAG,aAAa;AAErC,QAAA,IAAI,KAAK,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC;AAElB,QAAA,IAAI,cAAc,KAAK,QAAQ,EAAE;YAC/B,KAAK,GAAG,EAAE;AACV,YAAA,KAAK,IAAI,IAAI,GAAG,CAAC,EAAE,IAAI,GAAG,CAAC,GAAG,WAAW,EAAE,IAAI,IAAI,WAAW,EAAE;AAC9D,gBAAA,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC;YAClB;QACF;QAEA,MAAM,iBAAiB,GAAG,EAAE;AAE5B,QAAA,KAAK,CAAC,OAAO,CAAC,CAAC,YAAY,KAAI;AAC7B,YAAA,iBAAiB,CAAC,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC,CAAC;AACtE,QAAA,CAAC,CAAC;QAEF,kBAAkB,CAAC,IAAI,CAAC;AACtB,YAAA,QAAQ,EAAE,KAAK;AACf,YAAA,UAAU,EAAE,SAAS;AACrB,YAAA,IAAI,EAAE,KAAK;AACX,YAAA,aAAa,EAAE,KAAK;YACpB,KAAK,EAAE,cAAc,CAAC,MAAM;YAC5B,EAAE,EAAE,cAAc,CAAC,EAAE;YACrB,KAAK;AACL,YAAA,eAAe,EAAE;AAClB,SAAA,CAAC;AACJ,IAAA,CAAC,CAAC;AAEF,IAAA,OAAO,kBAAkB;AAC3B;AAEM,SAAU,WAAW,CAAC,WAAW,EAAA;AACrC,IAAA,IAAI,IAAI,GAAG,CAAC,QAAQ,EAAE,CAAC,CAAC;IACxB,IAAI,KAAK,GAAG,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC;AAC1B,IAAA,IAAI,GAAG,GAAG,CAAC,CAAC,EAAE,QAAQ,CAAC;IACvB,IAAI,MAAM,GAAG,CAAC,CAAC,EAAE,CAAC,QAAQ,CAAC;AAC3B,IAAA,WAAW,CAAC,OAAO,CAAC,CAAC,CAAC,KAAI;AACxB,QAAA,IAAI,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,IAAI;AAChC,QAAA,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,KAAK;AACnC,QAAA,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,MAAM;AACtC,QAAA,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,GAAG;AAC/B,IAAA,CAAC,CAAC;IAEF,OAAO;AACL,QAAA,MAAM,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;QAC5D,GAAG;QACH,IAAI;QACJ,KAAK;QACL;KACD;AACH;;ACrXA,MAAM,UAAU,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;SAE1B,eAAe,CAAC,EAC9B,IAAI,EACJ,IAAI,EACJ,UAAU,EACV,uBAAuB,EACvB,OAAO,EACP,OAAO,EACP,YAAY,EACb,EAAA;IACC,MAAM,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC;IAC9B,MAAM,oBAAoB,GAAG,EAAE;IAC/B,MAAM,eAAe,GAAG,EAAE;IAE1B,IAAI,CAAC,OAAO,CAAC,CAAC,GAAG,EAAE,OAAO,KAAI;AAC5B,QAAA,MAAM,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC;QACxB,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,UAAU,IAAI,CAAC;QACtC,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,SAAS,IAAI,EAAE;QACrC,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,UAAU,IAAI,IAAI;AAEzC,QAAA,MAAM,YAAY,GAAG;AACnB,YAAA,EAAE,EAAE,EAAE,MAAM,EAAE,eAAe,EAAE,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,UAAU,CAAC;SAC7D;QAED,MAAM,SAAS,GAAG,UAAU,CAAC;AAC3B,YAAA,WAAW,EAAE,IAAI;AACjB,YAAA,IAAI,EAAE,YAAY;YAClB,YAAY,EAAE,CAAC,CAAC,EAAE,YAAY,CAAC,CAAC,CAAC,CAAC;YAClC,YAAY,EAAE,CAAC,CAAC,EAAE,YAAY,CAAC,CAAC,CAAC;AAClC,SAAA,CAAC;QACF,MAAM,YAAY,GAAG,EAAE;QACvB,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,KAAI;YACzB,CAAC,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC,MAAM,EAAE,EAAE,KAAI;gBACnC,MAAM,cAAc,GAAG,uBAAuB,CAAC,CAAC,EAAE,CAAC,CAAC;AACpD,gBAAA,YAAY,CAAC,IAAI,CAAA,MAAA,CAAA,MAAA,CAAA,MAAA,CAAA,MAAA,CAAA,EAAA,EAEZ,cAAc,CAAA,EAAA,EAEjB,GAAG,EAAE,CAAA,EAAG,CAAC,CAAA,CAAA,EAAI,EAAE,CAAA,CAAE,EACjB,KAAK,EAAE,OAAO,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,OAAO,CAAC,EACjD,SAAS,EAAE,OAAO,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,OAAO,CAAC,EACrD,QAAQ,EAAE,MAAM,EAChB,CAAC,EAAE,CAAA,CAAA,EAAI,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA,CAAA,CAAG,IAC5D;AACJ,YAAA,CAAC,CAAC;AACJ,QAAA,CAAC,CAAC;QAEF,oBAAoB,CAAC,IAAI,CAAC;AACxB,YAAA,cAAc,EAAE;gBACd,GAAG,EAAE,CAAA,kBAAA,EAAqB,OAAO,CAAA,CAAE;AACnC,gBAAA,IAAI,EAAE,KAAK;gBACX,QAAQ,EAAE,EAAE;AACZ,gBAAA,QAAQ,EAAE,GAAG;AACb,gBAAA,YAAY,EAAE,CAAA,EAAG,GAAG,CAAA,iBAAA,EAAoB;qBACrC,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,GAAG,KAAK,GAAG;AAC3B,qBAAA,GAAG,CAAC,CAAC,CAAC,KAAK,CAAA,EAAG,CAAC,CAAC,KAAK,IAAI,CAAC,CAAC,KAAK,CAAA,CAAE,CAAC,CAAA;AACvC,aAAA;;AAED,YAAA,QAAQ,EAAE;AACX,SAAA,CAAC;AACJ,IAAA,CAAC,CAAC;IACF,OAAO,EAAE,KAAK,EAAE,oBAAoB,EAAE,QAAQ,EAAE,eAAe,EAAE;AACnE;;AC9DA,MAAMR,qBAAmB,GAAG,OAAO,EAAE,CAAC;AAEtC,MAAMS,OAAK,GAAG,IAAI,CAAC,EAAE,GAAG,CAAC;AAEzB,MAAM,kBAAkB,GACtB,CAAC,MAAM,GAAG,CAAC,KACX,CAAC,CAAC,EAAE,CAAC,KAAI;IACP,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC;AACzB,IAAA,IACE,CAAC,CAAC;AACF,QAAA,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC,KAAK,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC;QACrD,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC,KAAK,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC,EACrD;AACA,QAAA,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;IACX;AACA,IAAA,OAAO,CAAC;AACV,CAAC;AA+BI,MAAM,iBAAiB,GAAG,CAAC,EAChC,EAAE,EACF,EAAE,EACF,EAAE,EACF,EAAE,EACF,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACP,KAAI;IACH,OAAO,CAAA,CAAA,EAAI,EAAE,CAAA,CAAA,EAAI,EAAE,CAAA,CAAA,EAAI,EAAE,CAAA,CAAA,EAAI,EAAE,CAAA,CAAA,EAAI,EAAE,GAAG,MAAM,IAAI,EAAE,GAAG,MAAM,CAAA,CAAA,EAC3D,EAAE,GAAG,MACP,CAAA,CAAA,EAAI,EAAE,GAAG,MAAM,CAAA,CAAA,CAAG;AACpB,CAAC;AAEM,MAAM,YAAY,GAAG,CAAC,EAC3B,IAAI,EACJ,MAAM,EACN,eAAe,EACf,WAAW,EACX,UAAU,EACV,YAAY,EACZ,QAAQ,EACR,OAAO,EACP,YAAY,EACZ,IAAI,EACL,KAAI;IACH,MAAM,UAAU,GAAG,EAAE;IACrB,MAAM,YAAY,GAAG,EAAE;AACvB,IAAA,MAAM,SAAS,GAAG,CAAC,eAAe,IAAI,eAAe,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,MAAM;AAE9E,IAAA,MAAM,uBAAuB,GAAG,IAAI,CAAC,cAAc,IAAIT,qBAAmB;AAC1E,IAAA,MAAM,UAAU,GAAG,IAAI,CAAC,OAAO,IAAI,CAAC;IAEpC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,KAAI;AACpB,QAAA,MAAM,OAAO,GAAG,CAAC,CAAC,KAAK,GAAG,SAAS;AACnC,QAAA,MAAM,eAAe,GAAG,uBAAuB,CAAC,CAAC,CAAC,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,CAAC;AAC3E,QAAA,MAAM,UAAU,GACd,IAAI,CAAC,IAAI,KAAK;AACZ,8BAAI,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,YAAY,CAAC,IAAI,EAAA,EAAK,eAAe,IAChE,MAAA,CAAA,MAAA,CAAA,MAAA,CAAA,MAAA,CAAA,EAAA,EAAM,YAAY,CAAA,EAAK,eAAe,CAAE;AAE7C,QAAA,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,GAAG,UAAU,GAAG,CAAC,CAAC;AAEpD,QAAA,MAAM,gBAAgB,GACpB,IAAI,CAAC,IAAI,KAAK,SAAS,GAAG,WAAW,GAAG,WAAW,GAAG,OAAO;AAC/D,QAAA,IAAI,KAAK,GAAG,CAAC,CAAC,CAAC,GAAG,UAAU;QAC5B,IAAI,KAAK,GACP,IAAI,CAAC,IAAI,KAAK,SAAS,IAAI,IAAI,CAAC;AAC9B,cAAE,CAAC,WAAW,GAAG;AACjB,cAAE,WAAW,GAAG,CAAC,GAAG,gBAAgB;QACxC,IAAI,MAAM,GAAG,SAAS;QACtB,IAAI,KAAK,GAAG,gBAAgB;AAC5B,QAAA,IAAI,OAAO,GACT,IAAI,CAAC,IAAI,KAAK,SAAS,GAAG,gBAAgB,GAAG,CAAC,GAAG,gBAAgB;AACnE,QAAA,IAAI,OAAO,GAAG,CAAC,CAAC,EAAE,GAAG,CAAC;AAEtB,QAAA,IAAI,UAAU,KAAK,YAAY,EAAE;YAC/B,KAAK;gBACH,IAAI,CAAC,IAAI,KAAK;AACZ,sBAAE,CAAC,WAAW,GAAG;sBACf,IAAI,CAAC;AACP,0BAAE,CAAC,WAAW,GAAG;AACjB,0BAAE,WAAW,GAAG,CAAC,GAAG,gBAAgB;YACxC,KAAK,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,GAAG,UAAU;YAC/B,MAAM,GAAG,gBAAgB;YACzB,KAAK,GAAG,SAAS;YACjB,OAAO;AACL,gBAAA,IAAI,CAAC,IAAI,KAAK,SAAS,GAAG,gBAAgB,GAAG,CAAC,GAAG,gBAAgB;AACnE,YAAA,OAAO,GAAG,CAAC,CAAC,EAAE,GAAG,CAAC;QACpB;AAAO,aAAA,IAAI,UAAU,KAAK,QAAQ,EAAE;YAClC,MAAM,YAAY,GAAGE,WAAG;AACrB,iBAAA,WAAW,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC;AACnB,iBAAA,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC;YAEhC,MAAM,KAAK,GAAG,OAAO,CAAC,GAAG,GAAG,OAAO,CAAC,WAAW;YAC/C,IAAI,UAAU,GAAG,OAAO,CAAC,UAAU,GAAG,OAAO,CAAC,WAAW;AAEzD,YAAA,IAAI,QAAQ,GACV,IAAI,CAAC,IAAI,KAAK;kBACV,UAAU,GAAG;AACf,kBAAE,UAAU,GAAG,KAAK,GAAG,OAAO;YAClC,UAAU,IAAIO,OAAK;YACnB,QAAQ,IAAIA,OAAK;YAEjB,MAAM,UAAU,GAAG,YAAY,CAAC,CAAC,CAAC,GAAG,CAAC;YACtC,MAAM,UAAU,GAAG,YAAY,CAAC,CAAC,CAAC,GAAG,CAAC;AAEtC,YAAA,MAAM,YAAY,GAAG,CAAA,UAAA,EAAa,UAAU,CAAA,CAAA,EAAI,UAAU,GAAG;AAC7D,YAAA,MAAM,SAAS,GAAG,YAAY,CAAC,QAAQ,CAAC,EAAE,UAAU,EAAE,QAAQ,EAAE,CAAC;YACjE,YAAY,CAAC,IAAI,CAAC;gBAChB,GAAG,EAAE,OAAO,CAAC,IAAI;gBACjB,KAAK,EAAE,CAAC,CAAC,KAAK;AACd,gBAAA,MAAM,EAAE,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC;AACpC,gBAAA,KAAK,EAAE,SAAS;AAChB,gBAAA,CAAC,EAAE,SAAS,CAAC,CAAC,CAAC,GAAG,UAAU;AAC5B,gBAAA,CAAC,EAAE,SAAS,CAAC,CAAC,CAAC,GAAG;AACnB,aAAA,CAAC;YACF,UAAU,CAAC,IAAI,CAAC;AACd,gBAAA,QAAQ,EAAE,MAAM;AAChB,gBAAA,SAAS,EAAE,YAAY;AACvB,gBAAA,GAAG,EAAE,CAAA,UAAA,EAAa,QAAQ,CAAA,CAAA,EAAI,CAAC,CAAA,CAAE;gBACjC,CAAC,EAAE,YAAY,CAAC,EAAE,UAAU,EAAE,QAAQ,EAAE,CAAC;AACzC,gBAAA,KAAK,EAAE;AACR,aAAA,CAAC;QACJ;AACA,QAAA,IAAI,UAAU,KAAK,QAAQ,EAAE;YAC3B,YAAY,CAAC,IAAI,CAAC;gBAChB,GAAG,EAAE,OAAO,CAAC,IAAI;gBACjB,KAAK,EAAE,CAAC,CAAC,KAAK;AACd,gBAAA,MAAM,EAAE,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC;AACpC,gBAAA,KAAK,EAAE,SAAS;gBAChB,CAAC,EAAE,KAAK,GAAG,OAAO;gBAClB,CAAC,EAAE,KAAK,GAAG;AACZ,aAAA,CAAC;YAEF,UAAU,CAAC,IAAI,CAAC;AACd,gBAAA,QAAQ,EAAE,MAAM;AAChB,gBAAA,GAAG,EAAE,CAAA,UAAA,EAAa,QAAQ,CAAA,CAAA,EAAI,CAAC,CAAA,CAAE;AACjC,gBAAA,CAAC,EAAE,KAAK;AACR,gBAAA,CAAC,EAAE,KAAK;AACR,gBAAA,MAAM,EAAE,MAAM;AACd,gBAAA,KAAK,EAAE,KAAK;AACZ,gBAAA,KAAK,EAAE;AACR,aAAA,CAAC;QACJ;AACF,IAAA,CAAC,CAAC;IAEF,OAAO,EAAE,KAAK,EAAE,UAAU,EAAE,MAAM,EAAE,YAAY,EAAE;AACpD,CAAC;AAED;SACgB,YAAY,GAAA;AAC1B,IAAA,MAAM,gBAAgB,GAAGC,YAAI,EAAE;IAC/B,IAAI,UAAU,GAAG,UAAU,CAAC,EAAA;QAC1B,OAAO,CAAC,CAAC,CAAC;AACZ,IAAA,CAAC;IACD,IAAI,UAAU,GAAG,UAAU,CAAC,EAAA;QAC1B,OAAO,CAAC,CAAC,CAAC;AACZ,IAAA,CAAC;IACD,IAAI,UAAU,GAAG,UAAU,CAAC,EAAA;QAC1B,OAAO,CAAC,CAAC,CAAC;AACZ,IAAA,CAAC;IACD,IAAI,aAAa,GAAGC,yBAAiB;IAErC,SAAS,OAAO,CAAC,QAAQ,EAAA;AACvB,QAAA,IAAI,QAAQ,CAAC,QAAQ,EAAE;YACrB,MAAM,UAAU,GAAG,UAAU;YAC7B,MAAM,aAAa,GAAG,QAAQ,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC;AAEzE,YAAA,UAAU,GAAG,MAAM,aAAa;YAEhC,MAAM,WAAW,GAAG,WAAW,CAAC,QAAQ,CAAC,MAAM,CAAC;YAEhD,IAAI,aAAa,GAAG;iBACjB,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,SAAS,KAAK,SAAS;AACvC,iBAAA,MAAM,CAAC,kBAAkB,EAAE,EAAE,EAAE,CAAC;YAEnC,MAAM,UAAU,GAAG,EAAE;YAErB,QAAQ,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,WAAW,EAAE,QAAQ,KAAI;AAClD,gBAAA,UAAU,GAAG,MAAM,WAAW,CAAC,MAAM;AACrC,gBAAA,MAAM,aAAa,GAAG,WAAW,CAAC,aAAa,CAAC;AAChD,gBAAA,UAAU,CAAC,IAAI,CAAC,aAAa,CAAC;gBAC9B,MAAM,WAAW,GAAG,QAAQ,CAAC,QAAQ,CAAC,QAAQ,GAAG,CAAC,CAAC;gBAEnD,IAAI,WAAW,EAAE;oBACf,MAAM,eAAe,GAAG;AACrB,yBAAA,OAAO;yBACP,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,SAAS,KAAK,MAAM;AACpC,yBAAA,MAAM,CAAC,kBAAkB,EAAE,EAAE,EAAE,CAAC;AAEnC,oBAAA,UAAU,GAAG,MAAM,WAAW,CAAC,MAAM;AAErC,oBAAA,MAAM,sBAAsB,GAAG,WAAW,CAAC,eAAe,CAAC;AAC3D,oBAAA,aAAa,GAAG;AACb,yBAAA,OAAO;yBACP,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,SAAS,KAAK,MAAM;AACpC,yBAAA,MAAM,CAAC,kBAAkB,EAAE,EAAE,EAAE,CAAC;gBACrC;AACF,YAAA,CAAC,CAAC;YAEF,UAAU,GAAG,UAAU;AACvB,YAAA,OAAO,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,KACtB,gBAAgB,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,KAAK,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CACrE;QACH;AACA,QAAA,MAAM,UAAU,GAAG,WAAW,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,kBAAkB,EAAE,EAAE,EAAE,CAAC;AAEzE,QAAA,OAAO,gBAAgB,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,KAAK,CAAC,aAAa,CAAC,CACtE,UAAU,CACX;IACH;AAEA,IAAA,OAAO,CAAC,CAAC,GAAG,UAAU,MAAM,EAAA;QAC1B,IAAI,CAAC,SAAS,CAAC,MAAM;AAAE,YAAA,OAAO,UAAU;QAExC,UAAU,GAAG,MAAM;AACnB,QAAA,OAAO,OAAO;AAChB,IAAA,CAAC;AAED,IAAA,OAAO,CAAC,CAAC,GAAG,UAAU,MAAM,EAAA;QAC1B,IAAI,CAAC,SAAS,CAAC,MAAM;AAAE,YAAA,OAAO,UAAU;QAExC,UAAU,GAAG,MAAM;AACnB,QAAA,OAAO,OAAO;AAChB,IAAA,CAAC;AAED,IAAA,OAAO,CAAC,CAAC,GAAG,UAAU,MAAM,EAAA;QAC1B,IAAI,CAAC,SAAS,CAAC,MAAM;AAAE,YAAA,OAAO,UAAU;QAExC,UAAU,GAAG,MAAM;AACnB,QAAA,OAAO,OAAO;AAChB,IAAA,CAAC;AAED,IAAA,OAAO,CAAC,WAAW,GAAG,UAAU,MAAM,EAAA;QACpC,IAAI,CAAC,SAAS,CAAC,MAAM;AAAE,YAAA,OAAO,aAAa;QAE3C,aAAa,GAAG,MAAM;AACtB,QAAA,OAAO,OAAO;AAChB,IAAA,CAAC;AAED,IAAA,OAAO,OAAO;IAEd,SAAS,UAAU,CAAC,CAAC,EAAA;AACnB,QAAA,MAAM,KAAK,GAAG,UAAU,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,UAAU,CAAC,CAAC,CAAC,MAAM,CAAC;AACzD,QAAA,MAAM,KAAK,GAAG,UAAU,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,UAAU,CAAC,CAAC,CAAC,MAAM,CAAC;AAEzD,QAAA,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE,KAAK,CAAC,GAAG,IAAI,CAAC,EAAE,GAAG,CAAC;QACrD,MAAM,MAAM,GAAG,MAAM,GAAG,IAAI,CAAC,EAAE,GAAG,GAAG;QACrC,MAAM,MAAM,GAAG,MAAM,GAAG,IAAI,CAAC,EAAE,GAAG,GAAG;QAErC,MAAM,EAAE,GAAG,UAAU,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,UAAU,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC;QACzE,MAAM,EAAE,GAAG,UAAU,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,UAAU,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC;QACzE,MAAM,EAAE,GAAG,UAAU,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,UAAU,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC;QACzE,MAAM,EAAE,GAAG,UAAU,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,UAAU,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC;AAEzE,QAAA,OAAO,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE;IAC3C;IAEA,SAAS,WAAW,CAAC,MAAM,EAAA;QACzB,MAAM,QAAQ,GAAG,EAAE;QACnB,IAAI,CAAC,GAAG,CAAC;AACT,QAAA,IAAI,iBAAiB,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE;AAEtD,QAAA,OAAO,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE;YACxB,IAAI,CAAC,KAAK,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE;gBAC3B,iBAAiB,GAAG,UAAU,CAAC;AAC7B,oBAAA,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC;AACjB,oBAAA,MAAM,EAAE,MAAM,CAAC,CAAC,GAAG,CAAC;AACrB,iBAAA,CAAC;AACF,gBAAA,MAAM,EAAE,GAAG;oBACT,CAAC,EAAE,iBAAiB,CAAC,EAAE;oBACvB,CAAC,EAAE,iBAAiB,CAAC,EAAE;AACvB,oBAAA,SAAS,EAAE;iBACZ;AACD,gBAAA,MAAM,EAAE,GAAG;oBACT,CAAC,EAAE,iBAAiB,CAAC,EAAE;oBACvB,CAAC,EAAE,iBAAiB,CAAC,EAAE;AACvB,oBAAA,SAAS,EAAE;iBACZ;AACD,gBAAA,QAAQ,CAAC,IAAI,CAAC,EAAE,EAAE,EAAE,CAAC;AACrB,gBAAA,IAAI,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE;AACvB,oBAAA,MAAM,CAAC,GAAG,QAAQ,CAAC,MAAM,GAAG,CAAC;oBAC7B,MAAM,KAAK,GAAG,EAAE,CAAC,EAAE,QAAQ,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,QAAQ,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE;AACxD,oBAAA,MAAM,KAAK,GAAG,EAAE,CAAC,EAAE,QAAQ,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,QAAQ,CAAC,CAAC,CAAC,EAAE;oBACpD,MAAM,SAAS,GAAG,aAAa,CAC7B,KAAK,CAAC,CAAC,CAAC,CAAC,EACT,KAAK,CAAC,CAAC,CAAC,CAAC,EACT,KAAK,CAAC,CAAC,CAAC,CAAC,EACT,KAAK,CAAC,CAAC,CAAC,CAAC,EACT,KAAK,CAAC,CAAC,CAAC,CAAC,EACT,KAAK,CAAC,CAAC,CAAC,CAAC,EACT,KAAK,CAAC,CAAC,CAAC,CAAC,EACT,KAAK,CAAC,CAAC,CAAC,CAAC,CACV;AACD,oBAAA,IAAI,SAAS,CAAC,KAAK,KAAK,IAAI,EAAE;wBAC5B,KAAK,CAAC,CAAC,CAAC,CAAC,GAAG,SAAS,CAAC,CAAC;wBACvB,KAAK,CAAC,CAAC,CAAC,CAAC,GAAG,SAAS,CAAC,CAAC;wBACvB,KAAK,CAAC,CAAC,CAAC,CAAC,GAAG,SAAS,CAAC,CAAC;wBACvB,KAAK,CAAC,CAAC,CAAC,CAAC,GAAG,SAAS,CAAC,CAAC;oBACzB;gBACF;YACF;AAEA,YAAA,CAAC,EAAE;QACL;AACA,QAAA,CAAC,EAAE;;AAEH,QAAA,OAAO,CAAC,IAAI,CAAC,EAAE;AACb,YAAA,IAAI,CAAC,KAAK,CAAC,EAAE;gBACX,iBAAiB,GAAG,UAAU,CAAC;AAC7B,oBAAA,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC;AACjB,oBAAA,MAAM,EAAE,MAAM,CAAC,CAAC,GAAG,CAAC;AACrB,iBAAA,CAAC;AACF,gBAAA,MAAM,EAAE,GAAG;oBACT,CAAC,EAAE,iBAAiB,CAAC,EAAE;oBACvB,CAAC,EAAE,iBAAiB,CAAC,EAAE;AACvB,oBAAA,SAAS,EAAE;iBACZ;AACD,gBAAA,MAAM,EAAE,GAAG;oBACT,CAAC,EAAE,iBAAiB,CAAC,EAAE;oBACvB,CAAC,EAAE,iBAAiB,CAAC,EAAE;AACvB,oBAAA,SAAS,EAAE;iBACZ;AACD,gBAAA,QAAQ,CAAC,IAAI,CAAC,EAAE,EAAE,EAAE,CAAC;AACrB,gBAAA,IAAI,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE;AACvB,oBAAA,MAAM,CAAC,GAAG,QAAQ,CAAC,MAAM,GAAG,CAAC;oBAC7B,MAAM,KAAK,GAAG,EAAE,CAAC,EAAE,QAAQ,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,QAAQ,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE;AACxD,oBAAA,MAAM,KAAK,GAAG,EAAE,CAAC,EAAE,QAAQ,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,QAAQ,CAAC,CAAC,CAAC,EAAE;oBACpD,MAAM,SAAS,GAAG,aAAa,CAC7B,KAAK,CAAC,CAAC,CAAC,CAAC,EACT,KAAK,CAAC,CAAC,CAAC,CAAC,EACT,KAAK,CAAC,CAAC,CAAC,CAAC,EACT,KAAK,CAAC,CAAC,CAAC,CAAC,EACT,KAAK,CAAC,CAAC,CAAC,CAAC,EACT,KAAK,CAAC,CAAC,CAAC,CAAC,EACT,KAAK,CAAC,CAAC,CAAC,CAAC,EACT,KAAK,CAAC,CAAC,CAAC,CAAC,CACV;AACD,oBAAA,IAAI,SAAS,CAAC,KAAK,KAAK,IAAI,EAAE;wBAC5B,KAAK,CAAC,CAAC,CAAC,CAAC,GAAG,SAAS,CAAC,CAAC;wBACvB,KAAK,CAAC,CAAC,CAAC,CAAC,GAAG,SAAS,CAAC,CAAC;wBACvB,KAAK,CAAC,CAAC,CAAC,CAAC,GAAG,SAAS,CAAC,CAAC;wBACvB,KAAK,CAAC,CAAC,CAAC,CAAC,GAAG,SAAS,CAAC,CAAC;oBACzB;gBACF;YACF;AAEA,YAAA,CAAC,EAAE;QACL;AAEA,QAAA,OAAO,QAAQ;IACjB;AAEA,IAAA,SAAS,aAAa,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAA;QACnE,IAAI,CAAC,EAAE,CAAC;AAER,QAAA,MAAM,MAAM,GAAG;AACb,YAAA,CAAC,EAAE,IAAI;AACP,YAAA,CAAC,EAAE,IAAI;AACP,YAAA,KAAK,EAAE;SACR;QAED,MAAM,CAAC,GAAG,CAAC,IAAI,GAAG,IAAI,KAAK,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,GAAG,IAAI,KAAK,IAAI,GAAG,IAAI,CAAC;AACvE,QAAA,IAAI,CAAC,KAAK,CAAC,EAAE;AACX,YAAA,OAAO,MAAM;QACf;AACA,QAAA,CAAC,GAAG,IAAI,GAAG,IAAI;AACf,QAAA,CAAC,GAAG,IAAI,GAAG,IAAI;AACf,QAAA,MAAM,EAAE,GAAG,CAAC,IAAI,GAAG,IAAI,IAAI,CAAC,GAAG,CAAC,IAAI,GAAG,IAAI,IAAI,CAAC;AAChD,QAAA,MAAM,EAAE,GAAG,CAAC,IAAI,GAAG,IAAI,IAAI,CAAC,GAAG,CAAC,IAAI,GAAG,IAAI,IAAI,CAAC;AAChD,QAAA,CAAC,GAAG,EAAE,GAAG,CAAC;AACV,QAAA,CAAC,GAAG,EAAE,GAAG,CAAC;AAEV,QAAA,MAAM,CAAC,CAAC,GAAG,IAAI,GAAG,CAAC,IAAI,IAAI,GAAG,IAAI,CAAC;AACnC,QAAA,MAAM,CAAC,CAAC,GAAG,IAAI,GAAG,CAAC,IAAI,IAAI,GAAG,IAAI,CAAC;AAEnC,QAAA,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE;AACpC,YAAA,MAAM,CAAC,KAAK,GAAG,IAAI;QACrB;AAEA,QAAA,OAAO,MAAM;IACf;AACF;;ACvYO,MAAM,SAAS,GAAG;AACvB,IAAA,IAAI,EAAEC,iBAAS;AACf,IAAA,UAAU,EAAEC,uBAAe;AAC3B,IAAA,SAAS,EAAEC,sBAAc;AACzB,IAAA,QAAQ,EAAEP,qBAAa;AACvB,IAAA,KAAK,EAAEQ,kBAAU;AACjB,IAAA,MAAM,EAAEC,mBAAW;AACnB,IAAA,UAAU,EAAEC,uBAAe;AAC3B,IAAA,QAAQ,EAAEC,sBAAc;AACxB,IAAA,SAAS,EAAEC,sBAAc;AACzB,IAAA,SAAS,EAAED,sBAAc;AACzB,IAAA,OAAO,EAAEE;CACV;SAEe,sBAAsB,CAAC,EACrC,SAAS,EACT,wBAAwB,EACxB,OAAO,EACP,MAAM,EACN,MAAM,EACN,YAAY,EACZ,UAAU,EACX,EAAA;AACC,IAAA,MAAM,EAAE,CAAC,EAAE,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,GAAG,wBAAwB;IAEvE,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,YAAY,CAAC;IAEpD,IAAI,UAAU,EAAE;AACd,QAAA,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IAClC;SAAO;AACL,QAAA,SAAS,CAAC,EAAE,CAAC,CAAC,CAAC,KAAK,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,KAAK,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;AAClE,QAAA,SAAS,CAAC,EAAE,CAAC,CAAC,CAAC,KAAK,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,KAAK,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;IACpE;IAEA,IAAI,OAAO,EAAE;AACX,QAAA,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,OAAO,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;IAC5C;SAAO;AACL,QAAA,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,iBAAiB,CAAC;IAChD;AACF;AAEM,SAAU,YAAY,CAAC,EAC3B,MAAM,EACN,MAAM,EACN,aAAa,EACb,IAAI,EACJ,wBAAwB,EACxB,UAAU,EACV,YAAY,EACZ,OAAO,EACP,OAAO,EACP,WAAW,EACX,UAAU,EAEV,cAAc,EAAE,kBAAkB,EACnC,EAAA;AACC,IAAA,MAAM,EAAE,CAAC,EAAE,CAAC,EAAE,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,GAAG,wBAAwB;AAE1E,IAAA,MAAM,cAAc,GAClB,kBAAkB,KAAK,IAAI,GAAG,SAAS,GAAG,kBAAkB;AAE9D,IAAA,MAAM,WAAW,GAGb;AACF,QAAA,GAAG,EAAE,IAAI;AACT,QAAA,MAAM,EAAE;KACT;AACD,IAAA,MAAM,QAAQ,GAAG,WAAW,CAAC,cAAc,CAAC;IAC5C,MAAM,YAAY,GAAG,EAAE;IACvB,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,KAAI;QACpB,MAAM,EAAE,GAAG,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC,KAAK,SAAS,GAAG,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;QAC/D,MAAM,EAAE,GAAG,MAAM,CACf,CAAC,CAAC,QAAQ,CAAC,KAAK;AACd,cAAE,CAAC,CAAC,QAAQ;AACZ,cAAE,CAAC,CAAC,OAAO,CAAC,KAAK;AACjB,kBAAE,CAAC,CAAC,OAAO;AACX,kBAAE,CAAC,CAAC,CAAC,CAAC,CACT;QAED,MAAM,cAAc,GAAG,CAAA,WAAA,EAAc,CAAC,CAAC,CAAC,CAAA,OAAA,EAAU,CAAC,CAAC,CAAC,CAAA,CAAE;;QAGvD,MAAM,kBAAkB,GAAG,CAAC;AAC1B,cAAE;AACF,cAAErB,gBAAK,CAAC,cAAc,CAAC,UAAU;AACjC,kBAAE;kBACA,UAAU,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,IAAI,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC;QACvD,MAAM,SAAS,GAAG;cACf,MAAA,CAAA,MAAA,CAAA,MAAA,CAAA,MAAA,CAAA,EAAA,EAAM,kBAAkB,CAAC,KAAK,CAAA,EAAA,EAAE,YAAY,EAAE,cAAc,EAAA,CAAA,GAC3D;YACE,GAAG,EAAE,CAAA,MAAA,EAAS,CAAC,CAAA,CAAE;AACjB,YAAA,QAAQ,EAAE,QAAQ;AAClB,YAAA,CAAC,EAAE,CAAC;AACJ,YAAA,YAAY,EAAE;SACf;AAEL,QAAA,IACE,kBAAkB;AAClB,YAAA,kBAAkB,CAAC,KAAK;AACxB,YAAA,CAAC,kBAAkB,CAAC,KAAK,CAAC,QAAQ;AAClC,aAAC,CAAC,YAAY,IAAI,YAAY,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,KAAK,IAAI,CAAC,EACnD;AACA,YAAA,YAAY,CAAC,IAAI,CACfA,gBAAA,CAAA,aAAA,CAAA,GAAA,EAAA,EACE,SAAS,EAAE,CAAA,UAAA,EAAa,EAAE,CAAA,CAAA,EAAI,EAAE,CAAA,CAAA,CAAG,EACnC,GAAG,EAAE,WAAW,GAAG,WAAW,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,GAAG,qBAAqB,CAAC,CAAA,CAAE,EACpE,KAAK,EAAE,OAAO,GAAG,OAAO,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,GAAG,EAAE,EACxC,SAAS,EAAE,OAAO,GAAG,OAAO,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,GAAG,EAAE,EAAA,EAE3C,kBAAkB,CACjB,CACL;QACH;aAAO;AACL,YAAA,IAAI,YAAY,IAAI,YAAY,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE;AACpD,gBAAA,MAAM,WAAW,GAAG;AAClB,oBAAA,IAAI,EAAE,OAAO;AACb,oBAAA,SAAS,EAAE,aAAa;AACxB,oBAAA,EAAE,EAAE,EAAE;AACN,oBAAA,EAAE,EAAE,EAAE;oBACN,CAAC;oBACD,CAAC;oBACD,SAAS;oBACT,OAAO;AACP,oBAAA,QAAQ,EAAE,UAAU;oBACpB;iBACD;AACD,gBAAA,aAAa,CAAC,IAAI,CAAC,WAAW,CAAC;YACjC;iBAAO;gBACL,MAAM,YAAY,GAAG,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC;AACrC,sBAAE,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,MAAM,CAAC,CAAC,CAAC;AAC3B,sBAAE,CAAC,EAAE,CAAC;gBACR,YAAY,CAAC,OAAO,CAAC,CAAC,EAAE,EAAE,EAAE,KAAI;oBAC9B,MAAM,YAAY,GAAG,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC;AACrC,0BAAE,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,MAAM,CAAC,CAAC,CAAC;AAC3B,0BAAE,CAAC,EAAE,CAAC;oBACR,YAAY,CAAC,OAAO,CAAC,CAAC,EAAE,EAAE,EAAE,KAAI;AAC9B,wBAAA,YAAY,CAAC,IAAI,CACf,oBAAoB,CAAC;AACnB,4BAAA,SAAS,EAAE,aAAa;AACxB,4BAAA,EAAE,EAAE,EAAE;AACN,4BAAA,EAAE,EAAE,EAAE;AACN,4BAAA,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,IAAA,MAAA,CAAA,MAAA,CAAA,MAAA,CAAA,MAAA,CAAA,EAAA,EAAS,CAAC,CAAA,EAAK,CAAC,CAAC,IAAI,CAAE,KAAK,CAAC;4BACvC,CAAC,EAAE,EAAE,KAAK,CAAC,IAAI,EAAE,KAAK,CAAC,GAAG,CAAC,GAAG,CAAA,EAAG,CAAC,CAAA,CAAA,EAAI,EAAE,CAAA,CAAA,EAAI,EAAE,CAAA,CAAE;4BAChD,SAAS;4BACT,OAAO;4BACP,WAAW;4BACX,OAAO;4BACP;AACD,yBAAA,CAAC,CACH;AACH,oBAAA,CAAC,CAAC;AACJ,gBAAA,CAAC,CAAC;YACJ;QACF;AACF,IAAA,CAAC,CAAC;AACF,IAAA,OAAO,YAAY;AACrB;AAEM,SAAU,WAAW,CAAC,EAC1B,MAAM,EACN,MAAM,EACN,aAAa,EACb,IAAI,EACJ,wBAAwB,EACxB,UAAU,EACV,YAAY,EACZ,OAAO,EACP,OAAO,EACP,UAAU,EACV,WAAW,EACX,IAAI,EACJ,OAAO,EAEP,SAAS,EACT,QAAQ,GAAG,EAAE,EACd,EAAA;IACC,MAAM,KAAK,GAAG,QAAQ,CAAC,IAAI,CACzB,CAAC,CAAC,KAAK,CAAC,CAAC,MAAM,KAAK,QAAQ,IAAI,CAAC,CAAC,MAAM,KAAK,KAAK,CACnD;IACD,MAAM,KAAK,GAAG,QAAQ,CAAC,IAAI,CACzB,CAAC,CAAC,KAAK,CAAC,CAAC,MAAM,KAAK,MAAM,IAAI,CAAC,CAAC,MAAM,KAAK,OAAO,CACnD;AAED,IAAA,MAAM,cAAc,GAAG,CAAC,KAAK,IAAI,KAAK,CAAC,UAAU,MAAM,CAAC,CAAC,KAAK,CAAC,CAAC;AAChE,IAAA,MAAM,cAAc,GAAG,CAAC,KAAK,IAAI,KAAK,CAAC,UAAU,MAAM,CAAC,CAAC,KAAK,CAAC,CAAC;AAEhE,IAAA,MAAM,UAAU,GAAG,OAAO,IAAI,KAAK,QAAQ,GAAG,IAAI,GAAG,EAAE,IAAI,EAAE;AAE7D,IAAA,MAAM,YAAY,GAChB,OAAO,UAAU,CAAC,YAAY,KAAK;AACjC,UAAE,SAAS,CAAC,UAAU,CAAC,YAAY;AACnC,UAAE,UAAU,CAAC,YAAY,IAAIiB,mBAAW;AAE5C,IAAA,MAAM,aAAa,GAAG,UAAU,CAAC,UAAU,GAAGN,YAAI,EAAE,GAAGW,YAAI,EAAE;AAE7D,IAAA,sBAAsB,CAAC;QACrB,wBAAwB;QACxB,OAAO;QACP,YAAY;AACZ,QAAA,SAAS,EAAE,aAAa;QACxB,MAAM;QACN,MAAM;QACN,UAAU,EAAE,UAAU,CAAC;AACxB,KAAA,CAAC;AAEF,IAAA,MAAM,oBAAoB,GACxB,CAAC,YAAY,CAAC,mBAAmB;AAC/B,SAAC,CAAC,CAAC,EAAE,CAAC,KAAI;AACR,YAAA,MAAM,gBAAgB,GAAGA,YAAI,EAAE;AAE/B,YAAA,sBAAsB,CAAC;gBACrB,wBAAwB;gBACxB,OAAO;gBACP,YAAY,EAAE,YAAY,CAAC,mBAAmB,CAAC,CAAC,EAAE,CAAC,CAAC;AACpD,gBAAA,SAAS,EAAE,gBAAgB;gBAC3B,MAAM;gBACN,MAAM;gBACN,UAAU,EAAE,UAAU,CAAC;AACxB,aAAA,CAAC;AACF,YAAA,OAAO,gBAAgB;AACzB,QAAA,CAAC,CAAC;AACJ,SAAC,MAAM,aAAa,CAAC;IAEvB,MAAM,WAAW,GAAG,EAAE;IACtB,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,KAAI;QACpB,MAAM,kBAAkB,GAAG,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,sCAAW,CAAC,CAAC,IAAI,CAAA,EAAK,CAAC,CAAA,CAAG,CAAC;AACnE,QAAA,IAAI,UAAU,IAAI,OAAO,UAAU,KAAK,UAAU,EAAE;;YAElD,MAAM,cAAc,mCACf,CAAC,CAAA,EAAA,EACJ,IAAI,EAAE,kBAAkB,GACzB;YACD,WAAW,CAAC,IAAI,CACd,UAAU,CAAC,EAAE,CAAC,EAAE,cAAc,EAAE,CAAC,EAAE,MAAM,EAAE,MAAM,EAAE,aAAa,EAAE,CAAC,CACpE;QACH;aAAO;YACL,MAAM,mBAAmB,GAAuC,EAAE;AAClE,YAAA,IAAI,UAAU,CAAC,UAAU,EAAE;AACzB,gBAAA,mBAAmB,CAAC,IAAI,GAAG,MAAM;AACjC,gBAAA,mBAAmB,CAAC,MAAM,GAAG,OAAO;YACtC;YAEA,MAAM,UAAU,GAAG,oBAAoB,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,kBAAkB,CAAC;AAEjE,YAAA,MAAM,SAAS,GAAA,MAAA,CAAA,MAAA,CAAA,MAAA,CAAA,MAAA,CAAA,EAAA,EACV,mBAAmB,CAAA,EAAA,EACtB,QAAQ,EAAE,MAAM,EAChB,CAAC,EAAE,UAAU,EACb,YAAY,EACV,CAAC,CAAC,IAAI;AACN,oBAAA,CAAC,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC;oBACjB,SAAS;AACT,oBAAA,CAAA,EAAG,CAAC,CAAC,IAAI,CAAC,MAAM,CAAA,OAAA,EACd,SAAS,CAAC,KACZ,CAAA,gBAAA,EAAmB,cAAc,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAA,IAAA,EAAO,cAAc,CACjE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CACZ,CAAA,cAAA,EAAiB,cAAc,CAC9B,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,CAC5B,OAAO,cAAc,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAA,CAAE,GACxD;YAED,IAAI,YAAY,IAAI,YAAY,CAAC,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE;AAC/C,gBAAA,MAAM,UAAU,GAAG;AACjB,oBAAA,IAAI,EAAE,MAAM;AACZ,oBAAA,SAAS,EAAE,cAAc;AACzB,oBAAA,EAAE,EAAE,CAAC;AACL,oBAAA,EAAE,EAAE,CAAC;oBACL,CAAC;oBACD,CAAC;oBACD,SAAS;oBACT,OAAO;AACP,oBAAA,QAAQ,EAAE,UAAU;oBACpB;iBACD;AACD,gBAAA,aAAa,CAAC,IAAI,CAAC,UAAU,CAAC;YAChC;iBAAO;gBACL,IAAI,aAAa,GAAG,OAAO;AAE3B,gBAAA,IAAI,UAAU,CAAC,IAAI,KAAK,MAAM,IAAI,UAAU,CAAC,QAAQ,KAAK,IAAI,EAAE;oBAC9D,aAAa,GAAG,CAAC,CAAC,EAAE,CAAC,MAAK,MAAA,CAAA,MAAA,CAAA,MAAA,CAAA,MAAA,CAAA,EAAA,EAAM,OAAO,CAAC,CAAC,EAAE,CAAC,CAAC,CAAA,EAAA,EAAE,MAAM,EAAE,MAAM,IAAG;gBAClE;AAEA,gBAAA,WAAW,CAAC,IAAI,CACd,oBAAoB,CAAC;AACnB,oBAAA,SAAS,EAAE,cAAc;oBACzB,CAAC;oBACD,CAAC;oBACD,SAAS;AACT,oBAAA,OAAO,EAAE,aAAa;oBACtB,WAAW;oBACX;AACD,iBAAA,CAAC,CACH;AACD,gBAAA,IAAI,UAAU,CAAC,IAAI,KAAK,MAAM,IAAI,UAAU,CAAC,QAAQ,KAAK,IAAI,EAAE;oBAC9D,MAAM,aAAa,GAAG,CAAC,CAAC,EAAE,CAAC,MAAK,MAAA,CAAA,MAAA,CAAA,MAAA,CAAA,MAAA,CAAA,EAAA,EAAM,OAAO,CAAC,CAAC,EAAE,CAAC,CAAC,KAAE,IAAI,EAAE,MAAM,EAAA,CAAA,CAAG;AAEpE,oBAAA,MAAM,mBAAmB,GAAGX,YAAI,EAAE;AAElC,oBAAA,sBAAsB,CAAC;wBACrB,wBAAwB;wBACxB,OAAO;AACP,wBAAA,YAAY,EAAE,YAAY;AAC1B,wBAAA,SAAS,EAAE,mBAAmB;wBAC9B,MAAM;wBACN,MAAM;AACN,wBAAA,UAAU,EAAE;AACb,qBAAA,CAAC;oBAEF,MAAM,eAAe,GAAA,MAAA,CAAA,MAAA,CAAA,MAAA,CAAA,MAAA,CAAA,EAAA,EAChB,SAAS,CAAA,EAAA,EACZ,CAAC,EAAE,mBAAmB,CAAC,kBAAkB,CAAC,EAAA,CAC3C;oBAED,MAAM,WAAW,GAAG;AAClB,0BAAE,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,KAAK,CAAA,EAAG,WAAW,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAA,IAAA;0BACtC,SAAS;AAEb,oBAAA,WAAW,CAAC,IAAI,CACd,oBAAoB,CAAC;AACnB,wBAAA,SAAS,EAAE,kBAAkB;wBAC7B,CAAC;wBACD,CAAC;AACD,wBAAA,SAAS,EAAE,eAAe;AAC1B,wBAAA,OAAO,EAAE,aAAa;AACtB,wBAAA,WAAW,EAAE,WAAW;wBACxB;AACD,qBAAA,CAAC,CACH;gBACH;YACF;QACF;AACF,IAAA,CAAC,CAAC;AAEF,IAAA,IAAI,UAAU,CAAC,IAAI,KAAK,YAAY,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC,EAAE;;AAGzD,QAAA,MAAM,SAAS,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,QAAQ,EAAE,KAAK,KAAI;AACrD,YAAA,MAAM,SAAS,GACb,QAAQ,CAAC,IAAI,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;kBAChC,QAAQ,CAAC;AACX,kBAAE,QAAQ,CAAC,OAAO;YACtB,OAAO;gBACL,CAAC,EAAE,QAAQ,CAAC,CAAC;AACb,gBAAA,CAAC,EAAE,SAAS;AACZ,gBAAA,OAAO,EAAE,SAAS;AAClB,gBAAA,IAAI,EAAE;aACP;AACH,QAAA,CAAC,CAAC;AAEF,QAAA,MAAM,SAAS,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,QAAQ,EAAE,KAAK,KAAI;AACrD,YAAA,MAAM,SAAS,GACb,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,IAAI,GAAG,QAAQ,CAAC;kBAChC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;AACtB,kBAAE,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,OAAO;YACjC,OAAO;gBACL,CAAC,EAAE,QAAQ,CAAC,CAAC;AACb,gBAAA,CAAC,EAAE,SAAS;AACZ,gBAAA,OAAO,EAAE,SAAS;AAClB,gBAAA,IAAI,EAAE;aACP;AACH,QAAA,CAAC,CAAC;QAEF,MAAM,WAAW,GAAG;AAClB,cAAE,CAAA,aAAA,EAAgB,OAAO,CAAC,SAAS,CAAC,CAAA;cAClC,cAAc;AAElB,QAAA,MAAM,QAAQ,GAAGA,YAAI,EAAE;AAEvB,QAAA,sBAAsB,CAAC;YACrB,wBAAwB;YACxB,OAAO;YACP,YAAY;AACZ,YAAA,SAAS,EAAE,QAAQ;YACnB,MAAM;YACN,MAAM;AACN,YAAA,UAAU,EAAE;AACb,SAAA,CAAC;;AAGF,QAAA,MAAM,YAAY,IAChBX,gBAAA,CAAA,aAAA,CAAA,MAAA,EAAA,EAAM,GAAG,EAAE,eAAe,EACxB,SAAS,EAAE,CAAA,EAAG,WAAW,CAAA,qBAAA,CAAuB,EAEhD,CAAC,EAAE,QAAQ,CAAC,SAAS,CAAC,EACtB,KAAK,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,aAAa,EAAE,MAAM,EAAE,EAAA,CAC9C,CACH;AACD,QAAA,WAAW,CAAC,IAAI,CAAC,YAAY,CAAC;AAE9B,QAAA,MAAM,YAAY,IAChBA,gBAAA,CAAA,aAAA,CAAA,MAAA,EAAA,EAAM,GAAG,EAAE,eAAe,EACxB,SAAS,EAAE,CAAA,EAAG,WAAW,CAAA,qBAAA,CAAuB,EAEhD,CAAC,EAAE,QAAQ,CAAC,SAAS,CAAC,EACtB,KAAK,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,aAAa,EAAE,MAAM,EAAE,EAAA,CAC9C,CACH;AACD,QAAA,WAAW,CAAC,IAAI,CAAC,YAAY,CAAC;IAChC;AAEA,IAAA,OAAO,WAAW;AACpB;AAEM,SAAU,eAAe,CAAC,EAC9B,MAAM,EACN,MAAM,EACN,aAAa,EACb,IAAI,EACJ,YAAY,EACZ,OAAO,EACP,OAAO,EACP,WAAW,EACX,UAAU,EAEV,UAAU,EAYX,EAAA;IACC,MAAM,YAAY,GAAG,OAAO,KAAK,MAAM,EAAE,CAAC;AAC1C,IAAA,MAAM,YAAY,GAAG,OAAO,KAAK,OAAO,EAAE,CAAC,CAAC;IAE5C,MAAM,QAAQ,GAAG,UAAU;IAE3B,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE;AACxB,QAAA,IAAI,GAAG,CAAC,IAAI,CAAC;IACf;IAEA,MAAM,iBAAiB,GAAG,EAAE;IAE5B,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,KAAI;QACpB,IAAI,SAAS,GAAG,iBAAiB;QACjC,IAAI,YAAY,EAAE;AAChB,YAAA,SAAS,GAAG,CAAA,gBAAA,EAAmB,YAAY,CAAC,CAAC,CAAC,EAAE;QAClD;QACA,IAAI,KAAK,GAA6B,EAAE;QACxC,IAAI,aAAa,GAAG,KAAK;AACzB,QAAA,IACE,OAAO,CAAC,CAAC,UAAU,KAAK,QAAQ;YAChCA,gBAAK,CAAC,cAAc,CAAC,CAAC,CAAC,UAAU,CAAC,EAClC;AACA,YAAA,KAAK,GAAG,CAAC,CAAC,UAAU;YACpB,aAAa,GAAG,IAAI;QACtB;AAAO,aAAA,IAAI,CAAC,CAAC,IAAI,KAAK,cAAc,EAAE;AACpC,YAAA,MAAM,UAAU,GAAG,CAAC,CAAC,WAAgD;AAErE,YAAA,UAAU,CAAC,OAAO,CAAC,CAAC,KAA2B,KAAI;AACjD,gBAAA,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,KAAI;oBAClB,KAAK,IAAI,IAAI;yBACV,GAAG,CAAC,CAAC,CAAC,KAAK,CAAA,EAAG,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAA,CAAA,EAAI,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAA,CAAE;AAC5C,yBAAA,IAAI,CAAC,GAAG,CAAC,CAAA,EAAA,CAAI;AAClB,gBAAA,CAAC,CAAC;AACJ,YAAA,CAAC,CAAC;QACJ;aAAO,IAAI,UAAU,EAAE;AACrB,YAAA,MAAM,SAAS,GAAG,CAAC,CAAC,eAAqC;YACzD,MAAM,oBAAoB,GAAG,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK;AAChD,gBAAA,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AACZ,gBAAA,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;AACZ,aAAA,CAAC;;YAEF,KAAK,GAAG,UAAU,CAAC;gBACjB,CAAC;gBACD,CAAC;AACD,gBAAA,OAAO,EAAE,YAAY;AACrB,gBAAA,OAAO,EAAE,YAAY;gBACrB,QAAQ;gBACR,oBAAoB;gBACpB,MAAM;gBACN,MAAM;AACN,gBAAA,MAAM,EAAE,WAAW,CAAC,oBAAoB;AACzC,aAAA,CAAC;YACF,aAAa,GAAG,IAAI;QACtB;aAAO;AACL,YAAA,MAAM,SAAS,GAAG,CAAC,CAAC,eAA6B;AACjD,YAAA,IAAI,CAAC,CAAC,KAAK,EAAE;gBACX,MAAM,WAAW,GAAGW,YAAI;AACrB,qBAAA,CAAC,CAAC,CAAC,CAAC,KAAK,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AACrB,qBAAA,CAAC,CAAC,CAAC,CAAC,KAAK,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AACrB,qBAAA,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC;AACjB,gBAAA,KAAK,GAAG,WAAW,CAAC,SAAS,CAAC;YAChC;iBAAO;gBACL,KAAK,GAAG,IAAI;qBACT,GAAG,CAAC,CAAC,CAAC,KAAK,CAAA,EAAG,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAA,CAAA,EAAI,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAA,CAAE;AAC5C,qBAAA,IAAI,CAAC,GAAG,CAAC,CAAA,CAAA,CAAG;YACjB;QACF;AAEA,QAAA,MAAM,SAAS,GAAG,WAAW,GAAG,WAAW,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,CAAA,QAAA,EAAW,CAAC,EAAE;QAElE,IAAI,aAAa,IAAIX,gBAAK,CAAC,cAAc,CAAC,KAAK,CAAC,EAAE;AAChD,YAAA,iBAAiB,CAAC,IAAI,CAAC,KAAK,CAAC;QAC/B;aAAO,IAAI,YAAY,IAAI,YAAY,CAAC,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE;AACtD,YAAA,MAAM,aAAa,GAAG;AACpB,gBAAA,IAAI,EAAE,SAAS;AACf,gBAAA,SAAS,EAAE,iBAAiB;AAC5B,gBAAA,EAAE,EAAE,CAAC;AACL,gBAAA,EAAE,EAAE,CAAC;gBACL,CAAC;gBACD,CAAC;gBACD,SAAS,EAAE,EAAE,QAAQ,EAAE,MAAM,EAAE,CAAC,EAAE,KAAK,EAAE;AACzC,gBAAA,OAAO,EAAE,YAAY;gBACrB,QAAQ;AACR,gBAAA,OAAO,EAAE,MAAM;aAChB;AACD,YAAA,aAAa,CAAC,IAAI,CAAC,aAAa,CAAC;QACnC;aAAO;AACL,YAAA,iBAAiB,CAAC,IAAI,CACpBA,gBAAA,CAAA,aAAA,CAAA,MAAA,EAAA,EAAA,aAAA,EAAkB,iBAAiB,EACjC,GAAG,EAAE,SAAS,EACd,SAAS,EAAE,SAAS,EAEpB,CAAC,EAAE,KAAe,EAClB,KAAK,EAAE,YAAY,CAAC,CAAC,EAAE,CAAC,CAAC,EAAA,CACzB,CACH;QACH;AACF,IAAA,CAAC,CAAC;AACF,IAAA,OAAO,iBAAiB;AAC1B;AAEM,SAAU,oBAAoB,CAAC,EACnC,EAAE,EACF,EAAE,EACF,CAAC,EACD,CAAC,EACD,SAAS,EACT,OAAO,EACP,OAAO,EACP,WAAW,EACX,SAAS,EACT,EAAE,EAYH,EAAA;AACC,IAAA,SAAS,CAAC,KAAK,GAAG,OAAO,GAAG,OAAO,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,GAAG,EAAE;AAElD,IAAA,SAAS,CAAC,SAAS,GAAG,SAAS;IAE/B,SAAS,CAAC,GAAG,GAAG;UACZ,WAAW,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE;UACpB,GAAG,SAAS,CAAA,CAAA,EAAI,CAAC,CAAC,GAAG,KAAK,SAAS,GAAG,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE;AAErD,IAAA,IAAI,EAAE,IAAI,EAAE,EAAE;AACZ,QAAA,SAAS,CAAC,SAAS,GAAG,CAAA,UAAA,EAAa,EAAE,IAAI,CAAC,CAAA,CAAA,EAAI,EAAE,IAAI,CAAC,CAAA,CAAA,CAAG;IAC1D;IAEA,IAAI,OAAO,EAAE;AACX,QAAA,SAAS,CAAC,SAAS,GAAG,CAAA,EAAG,SAAS,CAAA,CAAA,EAAI,OAAO,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE;IAC3D;AAEA,IAAA,IAAI,SAAS,CAAC,KAAK,CAAC,CAAC,EAAE;QACrB,SAAS,CAAC,CAAC,GAAG,SAAS,CAAC,KAAK,CAAC,CAAC;IACjC;AACA,IAAA,SAAS,CAAC,aAAa,CAAC,GAAG,SAAS;AAEpC,IAAA,IAAI,CAAC,SAAS,CAAC,QAAQ,EAAE;QACvB,MAAM,cAAc,GAAG,SAAiC;AACxD,QAAA,OAAOA,gBAAK,CAAC,aAAa,CAAC,cAAc,CAAC;IAC5C;IAEA,MAAM,EAAE,QAAQ,EAAA,GAAmB,SAAS,EAAvB,SAAS,GAAA,MAAA,CAAK,SAAS,EAAtC,CAAA,UAAA,CAA0B,CAAY;IAC5C,OAAOA,gBAAK,CAAC,aAAa,CAAC,QAAQ,EAAE,SAAS,CAAC;AACjD;;ACzkBA,MAAM,iBAAiB,GAAG,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC;AACnD,MAAM,mBAAmB,GAAG,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC;AACrD,MAAM,mBAAmB,GAAG,OAAO,EAAE,CAAC;AAEtC,SAAS,iBAAiB,CAAC,EACzB,OAAO,EACP,QAAQ,EACR,YAAY,EACZ,WAAW,EACX,UAAU,EACV,SAAS,EACT,YAAY,EACZ,WAAW,EACZ,EAAA;AACC,IAAA,IAAI,aAAa,GAAG,CAAA,UAAA,EAAa,OAAO,CAAC,CAAC,KAAK;AAC/C,IAAA,IAAI,UAAU,GAAG,CAAC,CAAC,EAAE,SAAS,CAAC;AAC/B,IAAA,IAAI,UAAU,KAAK,YAAY,EAAE;QAC/B,aAAa,GAAG,aAAa,CAAC,CAAA,CAAA,EAAI,OAAO,CAAC,CAAC,GAAG;AAC9C,QAAA,UAAU,GAAG,CAAC,SAAS,EAAE,CAAC,CAAC;IAC7B;AAAO,SAAA,IAAI,UAAU,KAAK,QAAQ,EAAE;QAClC,aAAa,GAAG,iBAAiB;IACnC;AAEA,IAAA,MAAM,SAAS,GAAG,UAAU,KAAK,YAAY,GAAG,YAAY,CAAC,CAAC,CAAC,GAAG,WAAW;AAC7E,IAAA,MAAM,UAAU,GAAG,UAAU,KAAK,UAAU,GAAG,YAAY,CAAC,CAAC,CAAC,GAAG,WAAW;IAC5E,YAAY,CAAC,IAAI,GAAG,CAAC,SAAS,EAAE,UAAU,CAAC;AAC3C,IAAA,MAAM,SAAS,GAAGI,mBAAW,EAAE,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,WAAW,CAAC,CAAC;IAE1E,MAAM,mBAAmB,GAAG,WAAW,CAAC,YAAY,EAAE,QAAQ,EAAE,SAAS,CAAC;AAE1E,IAAA,QACEJ,gBAAA,CAAA,aAAA,CAAA,GAAA,EAAA,EACE,SAAS,EAAC,cAAc,EACxB,GAAG,EAAE,CAAA,kBAAA,EAAqB,QAAQ,CAAA,CAAE,EACpC,SAAS,EAAE,aAAa,IAEvB,mBAAmB,CAClB;AAER;AAEM,SAAU,qBAAqB,CAAC,EACpC,IAAI,EACJ,IAAI,EACJ,UAAU,EACV,uBAAuB,EACvB,OAAO,EACP,OAAO,EACP,UAAU,EACV,YAAY,EACZ,SAAS,EACT,WAAW,EAAE,gBAAgB,EAC9B,EAAA;IACC,MAAM,oBAAoB,GAAG,EAAE;IAC/B,MAAM,eAAe,GAAG,EAAE;AAE1B,IAAA,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,IAAI,EAAE;AAC/B,IAAA,MAAM,eAAe,GAAG,IAAI,CAAC,QAAQ,GAAG,EAAE,GAAG,KAAK;AAClD,IAAA,MAAM,oBAAoB,GAAG,IAAI,CAAC,QAAQ,KAAK,CAAC,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC;AAE/D,IAAA,MAAM,uBAAuB,GAAG,IAAI,CAAC,cAAc,IAAI,mBAAmB;AAE1E,IAAA,IAAI,WAAW;AACf,IAAA,IAAI,IAAI,CAAC,IAAI,EAAE;QACb,IAAI,CAAC,IAAI,CAAC,MAAM;AACd,YAAA,UAAU,KAAK,YAAY;AAC3B,gBAAA,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK;AAC9C,kBAAE;AACF,kBAAE,IAAI,CAAC,IAAI,CAAC,MAAM;QACtB,IAAI,CAAC,IAAI,CAAC,MAAM;AACd,YAAA,UAAU,KAAK,UAAU;AACzB,gBAAA,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK;AAC9C,kBAAE;AACF,kBAAE,IAAI,CAAC,IAAI,CAAC,MAAM;QACtB,WAAW,GAAG,gBAAgB;AAC9B,QAAA,IAAI,UAAU,KAAK,QAAQ,EAAE;AAC3B,YAAA,OAAO,CAAC,KAAK,CAAC,oDAAoD,CAAC;AACnE,YAAA,WAAW,GAAG,MAAM,IAAI;QAC1B;IACF;AAEA,IAAA,IAAI,UAAU,GAAG,SAAS,GAAG,OAAO;IAEpC,MAAM,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC;IAC9B,IAAI,MAAM,GAAG,CAAC;AAEd,IAAA,MAAM,aAAa,GAAGuB,iBAAS,EAAE;AAEjC,IAAA,MAAM,SAAS,GAAG,CAAC,CAAC,EAAE,SAAS,CAAC;IAEhC,MAAM,UAAU,GAAG,EAAE;AAErB,IAAA,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,OAAO,EAAE,CAAC,EAAE,EAAE;AAChC,QAAA,UAAU,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,OAAO,IAAI,SAAS,CAAC;IAC3D;AAEA,IAAA,MAAM,OAAO,GACX,UAAU,KAAK;UACX,CAAC,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC;UACf,CAAC,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,WAAW;IAEhC,MAAM,qBAAqB,GAAG;SAC3B,MAAM,CAAC,SAAS;SAChB,UAAU,CAAC,UAAU;SACrB,KAAK,CAAC,OAAO,CAAC;IAEjB,MAAM,cAAc,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,QAAQ,KAAI;AAChD,QAAA,MAAM,OAAO,GAAG,IAAI,CAAC,GAAG,CAAC;AAEzB,QAAA,MAAM,eAAe,GAAG,OAAO,CAAC,MAAM;AAEtC,QAAA,MAAM,SAAS,GACb,UAAU,KAAK,UAAU,GAAG,iBAAiB,GAAG,mBAAmB;QAErE,MAAM,mBAAmB,GAAG,eAAe,CAAC,IAAI,CAAC,SAAS,CAAC;AAE3D,QAAA,IAAI,OAAO;AACX,QAAA,IAAI,IAAI,CAAC,OAAO,KAAK,KAAK,EAAE;AAC1B,YAAA,MAAM,gBAAgB,GAAG,mBAAmB,CAAC,GAAG,CAAC,CAAC,KAAK,KACrD,OAAO,CAAC,KAAK,CAAC,CACf;AACD,YAAA,OAAO,GAAG;AACP,iBAAA,GAAG,CAAC,CAAC,KAAK,EAAE,CAAC,KAAI;gBAChB,MAAM,WAAW,GAAoB,EAAE;gBACvC,WAAW,CAAC,EAAE,GAAG,gBAAgB,CAAC,CAAC,CAAC,GAAG,CAAC;gBACxC,WAAW,CAAC,EAAE,GAAG,gBAAgB,CAAC,CAAC,CAAC,GAAG,CAAC;AACxC,gBAAA,WAAW,CAAC,IAAI,CAAC,KAAK,CAAC;AACvB,gBAAA,OAAO,WAAW;AACpB,YAAA,CAAC;AACA,iBAAA,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,EAAE,CAAC;AAC9B,YAAA,UAAU,GAAG,SAAS,GAAG,OAAO,CAAC,MAAM;QACzC;aAAO;AACL,YAAA,OAAO,GAAG,qBAAqB,CAAC,mBAAmB,CAAC;QACtD;QAEA,OAAO,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM;YAC5B,CAAC,EAAE,CAAC,CAAC,EAAE;AACP,YAAA,EAAE,EAAE,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,EAAE;AACf,YAAA,MAAM,EAAE,CAAC;AACT,YAAA,KAAK,EAAE,oBAAoB,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC;AACvD,SAAA,CAAC,CAAC;AAEH,QAAA,IAAI,IAAI,CAAC,IAAI,KAAK,WAAW,IAAI,IAAI,CAAC,IAAI,KAAK,SAAS,EAAE;AACxD,YAAA,OAAO,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,KAAK,KAAK,CAAC,CAAC;QAChD;AAEA,QAAA,MAAM,WAAW,GACf,OAAO,CAAC,MAAM,KAAK,CAAC,GAAG,CAAC,GAAGC,WAAG,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,CAAC;QAC7D,IAAI,eAAe,EAAE;AACnB,YAAA,eAAe,CAAC,GAAG,CAAC,GAAG,WAAW;QACpC;QAEA,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,MAAM,EAAE,WAAW,CAAC;QAEtC,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,eAAe,EAAE;AAC9D,IAAA,CAAC,CAAC;AAEF,IAAA,MAAM,WAAW,GAAG,IAAI,CAAC;AACvB,UAAE,MAAM,GAAG,IAAI,CAAC;AAChB,UAAE,IAAI,CAAC,WAAW,IAAI,CAAC;IACzB,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,IAAI,MAAM,GAAG,WAAW;AAEpD,IAAA,cAAc,CAAC,OAAO,CAAC,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,QAAQ,EAAE,eAAe,EAAE,KAAI;QACtE,MAAM,cAAc,GAAG,uBAAuB,CAAC,OAAO,EAAE,QAAQ,CAAC;AACjE,QAAA,MAAM,WAAW,GAAG,OAAO,CAAC,KAAK;AACjC,QAAA,IAAI,sBAAsB,GAAG,eAAe,CAAC,CAAC;AAC5C,cAAE,OAAO,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,EAAE,QAAQ;cAC/C,EAAE;AACN,QAAA,IAAI,sBAAsB,GAAG,eAAe,CAAC,CAAC;AAC5C,cAAE,OAAO,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,EAAE,QAAQ;cAC/C,EAAE;QAEN,IAAI,SAAS,GAAG,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC;AACnC,QAAA,IAAI,UAAU,KAAK,YAAY,EAAE;YAC/B,SAAS,GAAG,CAAC,UAAU,EAAE,OAAO,CAAC,MAAM,CAAC;QAC1C;AAAO,aAAA,IAAI,UAAU,KAAK,QAAQ,EAAE;AAClC,YAAA,SAAS,GAAG,CAAC,YAAY,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,YAAY,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;QACxD;AAEA,QAAA,MAAM,SAAS,GACb,CAAC,eAAe,IAAI,eAAe,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,MAAM;AAE9D,QAAA,IAAI,IAAI,CAAC,IAAI,KAAK,SAAS,IAAI,IAAI,CAAC,IAAI,KAAK,WAAW,EAAE;YACxD,MAAM,UAAU,GAAG,YAAY,CAAC;gBAC9B,IAAI;gBACJ,MAAM;gBACN,eAAe;gBACf,WAAW;gBACX,UAAU;gBACV,YAAY;gBACZ,QAAQ;gBACR,OAAO;AACP,gBAAA,YAAY,EAAE,sBAAsB;gBACpC;AACD,aAAA,CAAC;AACF,YAAA,MAAM,KAAK,GAAG,UAAU,CAAC,KAAK;AAC9B,YAAA,IAAI,UAAU,KAAK,QAAQ,EAAE;AAC3B,gBAAA,SAAS,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC;YACpB;YAEA,IAAI,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,IAAI,KAAK,WAAW,EAAE;gBAC1C,oBAAoB,CAAC,IAAI,CAAC;AACxB,oBAAA,IAAI,EAAE,eAAe;oBACrB,IAAI,EAAE,iBAAiB,CAAC;wBACtB,OAAO;wBACP,QAAQ;wBACR,YAAY,EAAE,IAAI,CAAC,IAAI;wBACvB,WAAW;wBACX,UAAU;wBACV,SAAS;wBACT,YAAY;wBACZ;qBACD;AACF,iBAAA,CAAC;YACJ;YACA,UAAU,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,KAAI;AAC9B,gBAAA,CAAC,CAAC,CAAC,IAAI,SAAS,CAAC,CAAC,CAAC;AACnB,gBAAA,CAAC,CAAC,CAAC,IAAI,SAAS,CAAC,CAAC,CAAC;AACrB,YAAA,CAAC,CAAC;YAEF,eAAe,CAAC,IAAI,CAAC,GAAG,UAAU,CAAC,MAAM,CAAC;YAC1C,oBAAoB,CAAC,IAAI,CAAC;gBACxB,cAAc,EAAA,MAAA,CAAA,MAAA,CAAA,MAAA,CAAA,MAAA,CAAA,EAAA,EACT,cAAc,CAAA,EAAA,EACjB,SAAS,EAAE,CAAA,UAAA,EAAa,SAAS,GAAG,EACpC,SAAS,EAAE,sBAAsB,EACjC,GAAG,EAAE,CAAA,aAAA,EAAgB,QAAQ,CAAA,CAAE,EAC/B,IAAI,EAAE,KAAK,EACX,QAAQ,EAAE,EAAE,EACZ,QAAQ,EAAE,OAAO,CAAC,IAAI,EACtB,YAAY,EAAE,CAAA,EAAG,OAAO,CAAC,IAAI,IAAI,IAAI,CAAC,IAAI,CAAA,CAAE,EAAA,CAC7C;;AAED,gBAAA,QAAQ,EAAE;AACX,aAAA,CAAC;QACJ;AAAO,aAAA,IAAI,IAAI,CAAC,IAAI,KAAK,QAAQ,EAAE;AACjC,YAAA,MAAM,EAAE,GAAG,EAAE,GAAG,IAAI;YACpB,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,IAAI,CAAC,KAAK,CAAC;YACvC,MAAM,cAAc,GAA0B,EAAE;AAEhD,YAAA,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,UAAU,GAAG,CAAC;YACtC,IAAI,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,UAAU,GAAG,CAAC;YAElE,OAAO,CAAC,OAAO,CAAC,CAAC,YAAY,EAAE,eAAe,KAAI;gBAChD,IAAI,UAAU,GAAG,IAAI;gBACrB,IAAI,YAAY,EAAE;AAChB,oBAAA,sBAAsB,GAAG,eAAe,CAAC,CAAC;AACxC,0BAAE,OAAO,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,EAAE,QAAQ,EAAE,eAAe;0BAChE,EAAE;AACN,oBAAA,sBAAsB,GAAG,eAAe,CAAC,CAAC;AACxC,0BAAE,OAAO,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,EAAE,QAAQ,EAAE,eAAe;0BAChE,EAAE;oBACN,UAAU,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,KAAI;AAC1B,wBAAA,MAAM,YAAY,GAAG,CAAC,CAAC;AACpB,6BAAA,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,KAAK,YAAY,CAAC,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC;6BAC3C,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC;AAChB,wBAAA,MAAM,WAAW,GAAG,oBAAoB,CAAC,YAAY,CAAC;wBACtD,OAAA,MAAA,CAAA,MAAA,CAAA,MAAA,CAAA,MAAA,CAAA,EAAA,EACK,CAAC,KACJ,MAAM,EAAE,YAAY,EACpB,KAAK,EAAE,WAAW,EAAA,CAAA;AAEtB,oBAAA,CAAC,CAAC;gBACJ;AAEA,gBAAA,IAAI,UAAU,GAAGF,YAAI,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,IAAIJ,uBAAe,CAAC;gBAE5D,IAAI,YAAY,GAAG,EAAE;AAErB,gBAAA,IAAI,UAAU,KAAK,YAAY,EAAE;AAC/B,oBAAA,UAAU,CAAC,OAAO,CAAC,CAAC,YAAY,KAAI;wBAClC,MAAM,MAAM,GAAG,YAAY,CAAC,CAAC,GAAG,UAAU,GAAG,CAAC;AAC9C,wBAAA,MAAM,MAAM,GAAG,CAAC,CAAC,YAAY,CAAC,KAAK,GAAG,SAAS,IAAI,WAAW,IAAI,CAAC;wBAEnE,YAAY,CAAC,IAAI,CAAC;AAChB,4BAAA,CAAC,EAAE,MAAM;4BACT,EAAE,EAAE,CAAC,MAAM;AACX,4BAAA,EAAE,EAAE;AACL,yBAAA,CAAC;wBACF,eAAe,CAAC,IAAI,CAAC;4BACnB,GAAG,EAAE,OAAO,CAAC,IAAI;AACjB,4BAAA,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC,CAAC,CAAC;AACxB,4BAAA,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC,CAAC,CAAC;AACxB,4BAAA,MAAM,EAAE,YAAY,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC;4BAC/C,KAAK,EAAE,YAAY,CAAC;AACrB,yBAAA,CAAC;AACJ,oBAAA,CAAC,CAAC;oBACF;yBACG,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC;yBACZ,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE;yBACd,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE;AACd,yBAAA,OAAO,CACN,CAAC,CAAC,EAAE,CAAC,KACH,CAAC,CAAC,EAAE,KAAK,CAAC;AACV,yBAAC,YAAY,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,YAAY,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC;AACrD,yBAAC,YAAY,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,YAAY,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,CACxD;gBACL;AAAO,qBAAA,IAAI,UAAU,KAAK,UAAU,EAAE;AACpC,oBAAA,UAAU,CAAC,OAAO,CAAC,CAAC,YAAY,KAAI;wBAClC,MAAM,MAAM,GAAG,YAAY,CAAC,CAAC,GAAG,UAAU,GAAG,CAAC;AAC9C,wBAAA,MAAM,MAAM,GAAG,CAAC,CAAC,YAAY,CAAC,KAAK,GAAG,SAAS,IAAI,WAAW,IAAI,CAAC;wBAEnE,YAAY,CAAC,IAAI,CAAC;AAChB,4BAAA,CAAC,EAAE,MAAM;4BACT,EAAE,EAAE,CAAC,MAAM;AACX,4BAAA,EAAE,EAAE;AACL,yBAAA,CAAC;wBAEF,eAAe,CAAC,IAAI,CAAC;4BACnB,GAAG,EAAE,OAAO,CAAC,IAAI;AACjB,4BAAA,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC,CAAC,CAAC;AACxB,4BAAA,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC,CAAC,CAAC;AACxB,4BAAA,MAAM,EAAE,YAAY,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC;4BAC/C,KAAK,EAAE,YAAY,CAAC;AACrB,yBAAA,CAAC;AACJ,oBAAA,CAAC,CAAC;oBACF;yBACG,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC;yBACZ,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE;yBACd,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE;AACd,yBAAA,OAAO,CACN,CAAC,CAAC,EAAE,CAAC,KACH,CAAC,CAAC,EAAE,KAAK,CAAC;AACV,yBAAC,YAAY,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,YAAY,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC;AACrD,yBAAC,YAAY,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,YAAY,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,CACxD;gBACL;AAAO,qBAAA,IAAI,UAAU,KAAK,QAAQ,EAAE;oBAClC,MAAM,KAAK,GAAG,OAAO,CAAC,GAAG,GAAG,OAAO,CAAC,WAAW,GAAG,CAAC;AACnD,oBAAA,MAAM,QAAQ,GAAG,OAAO,CAAC,UAAU;oBACnC,YAAY,GAAG,UAAU;AACzB,oBAAA,UAAU,GAAG,CAAC,MAAM,KAAI;wBACtB,MAAM,OAAO,GAAG,EAAE;wBAClB,MAAM,QAAQ,GAAG,EAAE;AACnB,wBAAA,MAAM,CAAC,OAAO,CAAC,CAAC,GAAG,KAAI;AACrB,4BAAA,MAAM,YAAY,GAAG,iBAAiB,CACpC,CAAC,CAAC,EAAE,CAAC,CAAC,EACN,QAAQ,GAAG,CAAC,KAAK,GAAG,GAAG,CAAC,KAAK,IAAI,SAAS,GAAG,CAAC,EAC9C,CAAC,GAAG,CAAC,CAAC,GAAG,GAAG,CAAC,EAAE,GAAG,UAAU,GAAG,CAAC,IAAI,CAAC,CACtC;AACD,4BAAA,MAAM,WAAW,GAAG,iBAAiB,CACnC,CAAC,CAAC,EAAE,CAAC,CAAC,EACN,QAAQ,GAAG,CAAC,KAAK,GAAG,GAAG,CAAC,KAAK,IAAI,SAAS,GAAG,CAAC,EAC9C,CAAC,GAAG,CAAC,CAAC,GAAG,GAAG,CAAC,EAAE,GAAG,UAAU,GAAG,CAAC,IAAI,CAAC,CACtC;;4BAGD,eAAe,CAAC,IAAI,CAAC;gCACnB,GAAG,EAAE,OAAO,CAAC,IAAI;gCACjB,CAAC,EAAE,WAAW,CAAC,CAAC,CAAC,GAAG,SAAS,CAAC,CAAC,CAAC;gCAChC,CAAC,EAAE,WAAW,CAAC,CAAC,CAAC,GAAG,SAAS,CAAC,CAAC,CAAC;AAChC,gCAAA,MAAM,EAAE,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC;gCACtC,KAAK,EAAE,GAAG,CAAC;AACZ,6BAAA,CAAC;4BACF,eAAe,CAAC,IAAI,CAAC;gCACnB,GAAG,EAAE,OAAO,CAAC,IAAI;gCACjB,CAAC,EAAE,YAAY,CAAC,CAAC,CAAC,GAAG,SAAS,CAAC,CAAC,CAAC;gCACjC,CAAC,EAAE,YAAY,CAAC,CAAC,CAAC,GAAG,SAAS,CAAC,CAAC,CAAC;AACjC,gCAAA,MAAM,EAAE,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC;gCACtC,KAAK,EAAE,GAAG,CAAC;AACZ,6BAAA,CAAC;AAEF,4BAAA,OAAO,CAAC,IAAI,CAAC,YAAY,CAAC;AAC1B,4BAAA,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC;AAC5B,wBAAA,CAAC,CAAC;wBACF,OAAO,CAAA,CAAA,EAAI,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA,CAAA,EAAI;AACrD,6BAAA,OAAO;AACP,6BAAA,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC;AACtB,6BAAA,IAAI,CAAC,GAAG,CAAC,CAAA,CAAA,CAAG;AACjB,oBAAA,CAAC;gBACH;AAEA,gBAAA,cAAc,CAAC,IAAI,CAAA,MAAA,CAAA,MAAA,CAAA,MAAA,CAAA,MAAA,CAAA,EAAA,EAEd,cAAc,CAAA,EAAA,EACjB,SAAS,EAAE,CAAA,UAAA,EAAa,SAAS,CAAA,CAAA,CAAG,EACpC,GAAG,EAAE,CAAA,aAAA,EAAgB,QAAQ,CAAA,CAAA,EAAI,eAAe,CAAA,CAAE,EAElD,QAAQ,EAAE,MAAM,EAChB,SAAS,EAAE,sBAAsB,EACjC,KAAK,EAAE,sBAAsB,EAC7B,CAAC,EAAE,UAAU,CAAC,YAAY,CAAC,EAC3B,IAAI,EAAE,KAAK,EACX,QAAQ,EAAE,EAAE,EACZ,QAAQ,EAAE,OAAO,CAAC,IAAI,EACtB,YAAY,EAAE,CAAA,EAAG,OAAO,CAAC,IAAI,CAAA,aAAA,CAAe,IAC5C;gBACF,IAAI,GAAG,EAAE;oBACP,IAAI,SAAS,GAAG,EAAE;AAClB,oBAAA,UAAU,CAAC,OAAO,CAAC,CAAC,IAAI,KAAI;wBAC1B,SAAS,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,MAAM,CAAC;AAChC,oBAAA,CAAC,CAAC;AAEF,oBAAA,SAAS,GAAG;yBACT,GAAG,CAAC,CAAC,CAAC,KACL,UAAU,KAAK;AACb,0BAAE,CAAC,CAAC,KAAK,CAAC;AACV,0BAAE,CAAC,CAAC,KAAK,CAAC,WAAW;AAExB,yBAAA,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;AAExB,oBAAA,MAAM,SAAS,GAAG;AAChB,wBAAAhB,gBAAQ,CAAC,SAAS,EAAE,IAAI,CAAC;AACzB,wBAAAA,gBAAQ,CAAC,SAAS,EAAE,GAAG,CAAC;AACxB,wBAAAA,gBAAQ,CAAC,SAAS,EAAE,IAAI;qBACzB;AAED,oBAAA,MAAM,OAAO,GACX,UAAU,KAAK;0BACX,CAAC,KAAK,EAAE,IAAI,EAAE,SAAS,KACrB,CAAA,CAAA,EAAI,SAAS,CAAC,CAAC,CAAC,CAAA,CAAA,EAAI,KAAK,CAAA,CAAA,EAAI,SAAS,CAAC,CAAC,CAAC,CAAA,CAAA,EAAI,IAAI,CAAA;0BACnD,CAAC,KAAK,EAAE,IAAI,EAAE,SAAS,KACrB,CAAA,CAAA,EAAI,KAAK,IAAI,SAAS,CAAC,CAAC,CAAC,CAAA,CAAA,EAAI,IAAI,CAAA,CAAA,EAAI,SAAS,CAAC,CAAC,CAAC,CAAA,CAAE;AAE3D,oBAAA,cAAc,CAAC,IAAI,CAAA,MAAA,CAAA,MAAA,CAAA,MAAA,CAAA,MAAA,CAAA,EAAA,EAEd,cAAc,CAAA,EAAA,EACjB,GAAG,EAAE,CAAA,aAAA,EAAgB,QAAQ,CAAA,CAAA,EAAI,eAAe,CAAA,SAAA,CAAW,EAE3D,QAAQ,EAAE,MAAM,EAChB,SAAS,EAAE,sBAAsB,EACjC,KAAK,EAAA,MAAA,CAAA,MAAA,CAAA,MAAA,CAAA,MAAA,CAAA,EACH,MAAM,EAAE,OAAO,EACf,WAAW,EAAE,KAAK,IACf,sBAAsB,CAAA,EACtB,uBAAuB,CAAC,KAAK,CAAC,CAAA,EAEnC,CAAC,EAAE,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,SAAS,CAAC,CAAC,CAAC,EAAE,SAAS,CAAC,EACjD,IAAI,EAAE,KAAK,EACX,QAAQ,EAAE,EAAE,EACZ,QAAQ,EAAE,OAAO,CAAC,IAAI,EACtB,YAAY,EAAE,CAAA,EAAG,OAAO,CAAC,IAAI,CAAA,aAAA,CAAe,IAC5C;oBAEF,cAAc,CAAC,IAAI,CAAA,MAAA,CAAA,MAAA,CAAA,MAAA,CAAA,MAAA,CAAA,EAAA,EAEd,cAAc,CAAA,EAAA,EACjB,GAAG,EAAE,CAAA,aAAA,EAAgB,QAAQ,CAAA,CAAA,EAAI,eAAe,CAAA,WAAA,CAAa,EAC7D,QAAQ,EAAE,QAAQ,EAClB,SAAS,EAAE,sBAAsB,EACjC,KAAK,EAAA,MAAA,CAAA,MAAA,CAAA,MAAA,CAAA,MAAA,CAAA,EACH,MAAM,EAAE,OAAO,EACf,IAAI,EAAE,OAAO,EACb,WAAW,EAAE,KAAK,EAClB,CAAC,EAAE,KAAK,EAAA,EACL,sBAAsB,GACtB,uBAAuB,CAAC,QAAQ,CAAC,CAAA,EAEtC,EAAE,EAAE,UAAU,KAAK,UAAU,GAAG,SAAS,CAAC,CAAC,CAAC,GAAG,SAAS,CAAC,CAAC,CAAC,EAC3D,EAAE,EAAE,UAAU,KAAK,UAAU,GAAG,SAAS,CAAC,CAAC,CAAC,GAAG,SAAS,CAAC,CAAC,CAAC,EAC3D,IAAI,EAAE,KAAK,EACX,QAAQ,EAAE,EAAE,EACZ,QAAQ,EAAE,OAAO,CAAC,IAAI,EACtB,YAAY,EAAE,CAAA,EAAG,OAAO,CAAC,IAAI,CAAA,aAAA,CAAe,EAAA,CAAA,CAC5C;gBACJ;AACF,YAAA,CAAC,CAAC;YAEF,oBAAoB,CAAC,IAAI,CAAC;AACxB,gBAAA,QAAQ,EAAE;AACX,aAAA,CAAC;QACJ;AAAO,aAAA,IAAI,IAAI,CAAC,IAAI,KAAK,WAAW,EAAE;AACpC,YAAA,MAAM,WAAW,GAAG,MAAM,CAAC,MAAM,CAAC,EAAE,EAAE,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC;YAC5D,MAAM,SAAS,GAAG,MAAM,CAAC,MAAM,CAAC,EAAE,EAAE,IAAI,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,EAAE,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC;;YAGxE,WAAW,CAAC,CAAC,GAAG,WAAW,CAAC,CAAC,GAAG,UAAU,GAAG,CAAC;YAC9C,SAAS,CAAC,CAAC,GAAG,SAAS,CAAC,CAAC,GAAG,UAAU,GAAG,CAAC;YAE1C,MAAM,OAAO,GAAG,CAAC,WAAW,EAAE,GAAG,IAAI,EAAE,SAAS,CAAC;YACjD,IAAI,SAAS,GAAG,EAAE;YAElB,MAAM,mBAAmB,GAAG,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,YAAY;AAE3D,YAAA,MAAM,kBAAkB,GACtB,OAAO,mBAAmB,KAAK;AAC7B,kBAAE,SAAS,CAAC,mBAAmB;kBAC7B,mBAAmB;YAEzB,IAAI,OAAO,GAAGS,YAAI;AACf,iBAAA,KAAK,CAAC,kBAAkB,IAAIO,uBAAe;iBAC3C,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC;iBACZ,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;AAEhB,YAAA,MAAM,SAAS,GAAG,IAAI,CAAC,SAAS,IAAI,CAAC;YAErC,IAAI,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,IAAI,KAAK,WAAW,EAAE;gBAC1C,oBAAoB,CAAC,IAAI,CAAC;AACxB,oBAAA,IAAI,EAAE,eAAe;oBACrB,IAAI,EAAE,iBAAiB,CAAC;wBACtB,OAAO;wBACP,QAAQ;wBACR,YAAY,EAAA,MAAA,CAAA,MAAA,CAAA,EAAI,QAAQ,EAAE,KAAK,IAAK,IAAI,CAAC,IAAI,CAAE;wBAC/C,WAAW;wBACX,UAAU;wBACV,SAAS;wBACT,YAAY;wBACZ;qBACD;AACF,iBAAA,CAAC;YACJ;AAEA,YAAA,IAAI,UAAU,KAAK,YAAY,EAAE;gBAC/B,OAAO,CAAC,OAAO,CAAC,CAAC,YAAY,EAAE,CAAC,KAAI;oBAClC,MAAM,MAAM,GAAG,YAAY,CAAC,CAAC,GAAG,UAAU,GAAG,CAAC;AAE9C,oBAAA,MAAM,MAAM,GAAG,IAAI,CAAC;AAClB,0BAAE,CAAC,YAAY,CAAC,KAAK,GAAG,SAAS,KAAK,WAAW,GAAG,SAAS,CAAC;AAC5D,4BAAA,WAAW,GAAG;AAChB,0BAAE,CAAC,CAAC,YAAY,CAAC,KAAK,GAAG,SAAS,KAAK,WAAW,GAAG,SAAS,CAAC;4BAC7D,WAAW,GAAG,CAAC;oBAEnB,SAAS,CAAC,IAAI,CAAC;AACb,wBAAA,CAAC,EAAE,MAAM;AACT,wBAAA,CAAC,EAAE;AACJ,qBAAA,CAAC;;AAGF,oBAAA,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE;wBACvC,eAAe,CAAC,IAAI,CAAC;4BACnB,GAAG,EAAE,OAAO,CAAC,IAAI;AACjB,4BAAA,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC,CAAC,CAAC;AACxB,4BAAA,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC,CAAC,CAAC;AACxB,4BAAA,MAAM,EAAE,YAAY,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC;4BAC/C,KAAK,EAAE,YAAY,CAAC;AACrB,yBAAA,CAAC;oBACJ;AACF,gBAAA,CAAC,CAAC;YACJ;AAAO,iBAAA,IAAI,UAAU,KAAK,UAAU,EAAE;AACpC,gBAAA,OAAO,CAAC,OAAO,CAAC,CAAC,YAAY,KAAI;oBAC/B,MAAM,MAAM,GAAG,YAAY,CAAC,CAAC,GAAG,UAAU,GAAG,CAAC;AAC9C,oBAAA,MAAM,MAAM,GACV,IAAI,CAAC,IAAI,KAAK;AACZ,0BAAE,CAAC,YAAY,CAAC,KAAK,GAAG,SAAS,KAAK,WAAW,GAAG,SAAS,CAAC;AAC5D,4BAAA,WAAW,GAAG;AAChB,0BAAE,CAAC,CAAC,YAAY,CAAC,KAAK,GAAG,SAAS,KAAK,WAAW,GAAG,SAAS,CAAC;4BAC7D,WAAW,GAAG,CAAC;oBAErB,SAAS,CAAC,IAAI,CAAC;AACb,wBAAA,CAAC,EAAE,MAAM;AACT,wBAAA,CAAC,EAAE;AACJ,qBAAA,CAAC;oBAEF,eAAe,CAAC,IAAI,CAAC;wBACnB,GAAG,EAAE,OAAO,CAAC,IAAI;AACjB,wBAAA,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC,CAAC,CAAC;AACxB,wBAAA,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC,CAAC,CAAC;AACxB,wBAAA,MAAM,EAAE,YAAY,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC;wBAC/C,KAAK,EAAE,YAAY,CAAC;AACrB,qBAAA,CAAC;AACJ,gBAAA,CAAC,CAAC;YACJ;AAAO,iBAAA,IAAI,UAAU,KAAK,QAAQ,EAAE;gBAClC,MAAM,KAAK,GAAG,OAAO,CAAC,GAAG,GAAG,OAAO,CAAC,WAAW,GAAG,CAAC;gBACnD,MAAM,QAAQ,GAAG,OAAO,CAAC,SAAS,GAAG,OAAO,CAAC,WAAW,GAAG,CAAC;AAE5D,gBAAA,SAAS,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC;gBAClB,SAAS,GAAG,OAAO;AACnB,gBAAA,OAAO,GAAG,CAAC,MAAM,KAAI;oBACnB,MAAM,OAAO,GAAG,EAAE;AAClB,oBAAA,MAAM,CAAC,OAAO,CAAC,CAAC,GAAG,KAAI;wBACrB,MAAM,YAAY,GAAG,iBAAiB,CACpC,CAAC,YAAY,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,YAAY,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAC1C,QAAQ,GAAG,CAAC,KAAK,GAAG,GAAG,CAAC,KAAK,IAAI,SAAS,EAC1C,CAAC,GAAG,CAAC,CAAC,GAAG,GAAG,CAAC,EAAE,GAAG,UAAU,GAAG,CAAC,IAAI,CAAC,CACtC;;wBAED,eAAe,CAAC,IAAI,CAAC;4BACnB,GAAG,EAAE,OAAO,CAAC,IAAI;4BACjB,CAAC,EAAE,YAAY,CAAC,CAAC,CAAC,GAAG,SAAS,CAAC,CAAC,CAAC;4BACjC,CAAC,EAAE,YAAY,CAAC,CAAC,CAAC,GAAG,SAAS,CAAC,CAAC,CAAC;AACjC,4BAAA,MAAM,EAAE,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC;4BACtC,KAAK,EAAE,GAAG,CAAC;AACZ,yBAAA,CAAC;AAEF,wBAAA,OAAO,CAAC,IAAI,CAAC,YAAY,CAAC;AAC5B,oBAAA,CAAC,CAAC;oBACF,OAAO,CAAA,CAAA,EAAI,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA,CAAA,CAAG;AACzD,gBAAA,CAAC;YACH;AAEA,YAAA,IAAI,IAAI,CAAC,IAAI,EAAE;gBACb,oBAAoB,CAAC,IAAI,CAAC;AACxB,oBAAA,IAAI,EAAE,eAAe;oBACrB,IAAI,EAAE,iBAAiB,CAAC;wBACtB,OAAO;wBACP,QAAQ;wBACR,YAAY,EAAE,IAAI,CAAC,IAAI;wBACvB,WAAW;wBACX,UAAU;wBACV,SAAS;wBACT,YAAY;wBACZ;qBACD;AACF,iBAAA,CAAC;YACJ;YAEA,oBAAoB,CAAC,IAAI,CAAC;AACxB,gBAAA,QAAQ,EAAE;oDAGH,cAAc,CAAA,EAAA,EACjB,SAAS,EAAE,CAAA,UAAA,EAAa,SAAS,GAAG,EACpC,GAAG,EAAE,CAAA,aAAA,EAAgB,QAAQ,CAAA,CAAE,EAE/B,QAAQ,EAAE,MAAM,EAChB,SAAS,EAAE,sBAAsB,EACjC,KAAK,EAAE,sBAAsB,EAC7B,CAAC,EAAE,OAAO,CAAC,SAAS,CAAC,EACrB,IAAI,EAAE,KAAK,EACX,QAAQ,EAAE,EAAE,EACZ,QAAQ,EAAE,OAAO,CAAC,IAAI,EACtB,YAAY,EAAE,CAAA,EAAG,OAAO,CAAC,IAAI,CAAA,aAAA,CAAe,EAAA;AAE/C;AACF,aAAA,CAAC;QACJ;AAAO,aAAA,IAAI,IAAI,CAAC,IAAI,KAAK,SAAS,EAAE;AAClC,YAAA,MAAM,WAAW,GAAG,MAAM,CAAC,MAAM,CAAC,EAAE,EAAE,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC;YAC5D,MAAM,SAAS,GAAG,MAAM,CAAC,MAAM,CAAC,EAAE,EAAE,IAAI,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,EAAE,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC;YAExE,WAAW,CAAC,CAAC,GAAG,WAAW,CAAC,CAAC,GAAG,UAAU,GAAG,CAAC;YAC9C,SAAS,CAAC,CAAC,GAAG,SAAS,CAAC,CAAC,GAAG,UAAU,GAAG,CAAC;YAE1C,MAAM,WAAW,GAAG,CAAC,WAAW,EAAE,GAAG,IAAI,EAAE,SAAS,CAAC;YAErD,IAAI,SAAS,GAAG,EAAE;YAClB,IAAI,eAAe,GAAG,IAAI;YAC1B,IAAI,cAAc,GAAG,CAAC;AAEtB,YAAA,OAAO,eAAe,KAAK,IAAI,EAAE;AAC/B,gBAAA,MAAM,YAAY,GAAG,WAAW,CAAC,GAAG,CAAC,CAAC,CAAC,MAAK,MAAA,CAAA,MAAA,CAAA,MAAA,CAAA,MAAA,CAAA,EAAA,EACvC,CAAC,CAAA,EAAA,EACJ,KAAK,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,GAAG,cAAc,EAAE,OAAO,CAAC,CAAC,EAAA,CAAA,CAC/D,CAAC;gBACH,SAAS,CAAC,IAAI,CACZ,YAAY,CAAC,GAAG,CAAC,CAAC,CAAC,sCAAW,CAAC,CAAA,EAAA,EAAE,KAAK,EAAE,CAAC,CAAC,KAAK,GAAG,WAAW,EAAA,CAAA,CAAG,CAAC,CAClE;gBACD,cAAc,IAAI,OAAO;AACzB,gBAAA,IAAIM,WAAG,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,CAAC,GAAG,OAAO,EAAE;oBACnD,eAAe,GAAG,KAAK;gBACzB;YACF;YAEA,SAAS,GAAG,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,KAAKC,WAAG,CAAC,CAAC,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;YAE/D,WAAW,CAAC,OAAO,CAAC,CAAC,YAAY,EAAE,CAAC,KAAI;AACtC,gBAAA,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,WAAW,CAAC,MAAM,GAAG,CAAC,EAAE;AAC3C,oBAAA,IAAI,UAAU,KAAK,YAAY,EAAE;wBAC/B,MAAM,MAAM,GAAG,YAAY,CAAC,CAAC,GAAG,UAAU,GAAG,CAAC;AAC9C,wBAAA,MAAM,MAAM,GACV,CAAC,CAAC,YAAY,CAAC,KAAK,GAAG,SAAS,IAAI,WAAW,GAAG,WAAW,GAAG,CAAC;wBAEnE,eAAe,CAAC,IAAI,CAAC;4BACnB,GAAG,EAAE,OAAO,CAAC,IAAI;AACjB,4BAAA,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC,CAAC,CAAC;AACxB,4BAAA,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC,CAAC,CAAC;AACxB,4BAAA,MAAM,EAAE,YAAY,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC;4BAC/C,KAAK,EAAE,YAAY,CAAC;AACrB,yBAAA,CAAC;oBACJ;AAAO,yBAAA,IAAI,UAAU,KAAK,UAAU,EAAE;wBACpC,MAAM,MAAM,GAAG,YAAY,CAAC,CAAC,GAAG,UAAU,GAAG,CAAC;AAC9C,wBAAA,MAAM,MAAM,GACV,IAAI,CAAC,IAAI,KAAK;8BACV,CAAC,YAAY,CAAC,KAAK,GAAG,SAAS,IAAI,WAAW;AAC9C,gCAAA,WAAW,GAAG;8BACd,CAAC,CAAC,YAAY,CAAC,KAAK,GAAG,SAAS,IAAI,WAAW;gCAC/C,WAAW,GAAG,CAAC;wBAErB,eAAe,CAAC,IAAI,CAAC;4BACnB,GAAG,EAAE,OAAO,CAAC,IAAI;AACjB,4BAAA,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC,CAAC,CAAC;AACxB,4BAAA,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC,CAAC,CAAC;AACxB,4BAAA,MAAM,EAAE,YAAY,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC;4BAC/C,KAAK,EAAE,YAAY,CAAC;AACrB,yBAAA,CAAC;oBACJ;gBACF;AACF,YAAA,CAAC,CAAC;YAEF,MAAM,aAAa,GAAG,SAAS,CAAC,GAAG,CAAC,CAAC,QAAQ,EAAE,SAAS,KAAI;gBAC1D,IAAI,aAAa,GAAG,EAAE;gBAEtB,MAAM,mBAAmB,GAAG,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,YAAY;AAE3D,gBAAA,MAAM,kBAAkB,GACtB,OAAO,mBAAmB,KAAK;AAC7B,sBAAE,SAAS,CAAC,mBAAmB;sBAC7B,mBAAmB;gBAEzB,IAAI,WAAW,GAAGd,YAAI;AACnB,qBAAA,KAAK,CAAC,kBAAkB,IAAIM,mBAAW;qBACvC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC;qBACZ,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;AAEhB,gBAAA,IAAI,UAAU,KAAK,YAAY,EAAE;AAC/B,oBAAA,QAAQ,CAAC,OAAO,CAAC,CAAC,YAAY,KAAI;wBAChC,MAAM,MAAM,GAAG,YAAY,CAAC,CAAC,GAAG,UAAU,GAAG,CAAC;AAC9C,wBAAA,MAAM,MAAM,GACV,CAAC,CAAC,YAAY,CAAC,KAAK,GAAG,SAAS,IAAI,WAAW,GAAG,WAAW,GAAG,CAAC;wBAEnE,aAAa,CAAC,IAAI,CAAC;AACjB,4BAAA,CAAC,EAAE,MAAM;AACT,4BAAA,CAAC,EAAE;AACJ,yBAAA,CAAC;;AAGJ,oBAAA,CAAC,CAAC;gBACJ;AAAO,qBAAA,IAAI,UAAU,KAAK,UAAU,EAAE;AACpC,oBAAA,QAAQ,CAAC,OAAO,CAAC,CAAC,YAAY,KAAI;wBAChC,MAAM,MAAM,GAAG,YAAY,CAAC,CAAC,GAAG,UAAU,GAAG,CAAC;AAC9C,wBAAA,MAAM,MAAM,GACV,IAAI,CAAC,IAAI,KAAK;8BACV,CAAC,YAAY,CAAC,KAAK,GAAG,SAAS,IAAI,WAAW;AAC9C,gCAAA,WAAW,GAAG;8BACd,CAAC,CAAC,YAAY,CAAC,KAAK,GAAG,SAAS,IAAI,WAAW;gCAC/C,WAAW,GAAG,CAAC;wBAErB,aAAa,CAAC,IAAI,CAAC;AACjB,4BAAA,CAAC,EAAE,MAAM;AACT,4BAAA,CAAC,EAAE;AACJ,yBAAA,CAAC;AACJ,oBAAA,CAAC,CAAC;gBACJ;AAAO,qBAAA,IAAI,UAAU,KAAK,QAAQ,EAAE;oBAClC,MAAM,KAAK,GAAG,OAAO,CAAC,GAAG,GAAG,OAAO,CAAC,WAAW,GAAG,CAAC;oBACnD,MAAM,QAAQ,GAAG,OAAO,CAAC,SAAS,GAAG,OAAO,CAAC,WAAW,GAAG,CAAC;AAE5D,oBAAA,SAAS,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC;oBAClB,aAAa,GAAG,QAAQ;AACxB,oBAAA,WAAW,GAAG,CAAC,MAAM,KAAI;wBACvB,MAAM,OAAO,GAAG,EAAE;AAClB,wBAAA,MAAM,CAAC,OAAO,CAAC,CAAC,GAAG,KAAI;4BACrB,MAAM,YAAY,GAAG,iBAAiB,CACpC,CAAC,YAAY,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,YAAY,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAC1C,QAAQ,GAAG,CAAC,KAAK,GAAG,GAAG,CAAC,KAAK,IAAI,SAAS,EAC1C,CAAC,GAAG,CAAC,CAAC,GAAG,GAAG,CAAC,EAAE,GAAG,UAAU,GAAG,CAAC,IAAI,CAAC,CACtC;AAED,4BAAA,OAAO,CAAC,IAAI,CAAC,YAAY,CAAC;AAC5B,wBAAA,CAAC,CAAC;wBACF,OAAO,CAAA,CAAA,EAAI,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA,CAAA,CAAG;AACzD,oBAAA,CAAC;gBACH;AAEA,gBAAA,OAAA,MAAA,CAAA,MAAA,CAAA,MAAA,CAAA,MAAA,CAAA,EAAA,EAEK,cAAc,CAAA,EAAA,EACjB,SAAS,EAAE,CAAA,UAAA,EAAa,SAAS,CAAA,CAAA,CAAG,EACpC,GAAG,EAAE,CAAA,aAAA,EAAgB,QAAQ,IAAI,SAAS,CAAA,CAAE,EAE5C,QAAQ,EAAE,MAAM,EAChB,SAAS,EAAE,sBAAsB,EACjC,KAAK,EAAA,MAAA,CAAA,MAAA,CAAA,MAAA,CAAA,MAAA,CAAA,EAAA,EACA,sBAAsB,CAAA,EACtB,uBAAuB,CAAC,QAAQ,EAAE,SAAS,CAAC,CAAA,EAEjD,CAAC,EAAE,WAAW,CAAC,aAAa,CAAC,EAC7B,IAAI,EAAE,KAAK,EACX,QAAQ,EAAE,EAAE,EACZ,QAAQ,EAAE,OAAO,CAAC,IAAI,EACtB,YAAY,EAAE,CAAA,EAAG,OAAO,CAAC,IAAI,eAAe,EAAA,CAAA;AAEhD,YAAA,CAAC,CAAC;AAEF,YAAA,IAAI,IAAI,CAAC,IAAI,EAAE;gBACb,oBAAoB,CAAC,IAAI,CAAC;AACxB,oBAAA,IAAI,EAAE,eAAe;oBACrB,IAAI,EAAE,iBAAiB,CAAC;wBACtB,OAAO;wBACP,QAAQ;wBACR,YAAY,EAAE,IAAI,CAAC,IAAI;wBACvB,WAAW;wBACX,UAAU;wBACV,SAAS;wBACT,YAAY;wBACZ;qBACD;AACF,iBAAA,CAAC;YACJ;YAEA,oBAAoB,CAAC,IAAI,CAAC,EAAE,QAAQ,EAAE,aAAa,EAAE,CAAC;QACxD;AACF,IAAA,CAAC,CAAC;IAEF,OAAO;AACL,QAAA,KAAK,EAAE,oBAAoB;AAC3B,QAAA,QAAQ,EAAE,eAAe;AACzB,QAAA,UAAU,EAAE;KACb;AACH;;ACrwBA,MAAM,iBAAiB,GAAG;AACxB,IAAA,OAAO,EAAE,eAAe;AACxB,IAAA,OAAO,EAAE,eAAe;AACxB,IAAA,MAAM,EAAE,qBAAqB;AAC7B,IAAA,OAAO,EAAE,qBAAqB;AAC9B,IAAA,SAAS,EAAE,qBAAqB;AAChC,IAAA,SAAS,EAAE,qBAAqB;AAChC,IAAA,OAAO,EAAE,qBAAqB;AAC9B,IAAA,MAAM,EAAE;CACT;AAEK,SAAU,sBAAsB,CAAC,EACrC,IAAI,EACJ,IAAI,EACJ,UAAU,EACV,uBAAuB,EACvB,OAAO,EACP,OAAO,EACP,UAAU,EACV,YAAY,EACZ,SAAS,EACT,MAAM,EACN,WAAW,EACiB,EAAA;AAC5B,IAAA,IAAI,eAAe;AACnB,IAAA,IAAI,OAAO,IAAI,CAAC,IAAI,KAAK,UAAU,EAAE;AACnC,QAAA,eAAe,GAAG,IAAI,CAAC,IAAI;IAC7B;AAAO,SAAA,IAAI,iBAAiB,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE;AACvC,QAAA,eAAe,GAAG,iBAAiB,CAAC,IAAI,CAAC,IAAI,CAAC;IAChD;SAAO;QACL,OAAO,CAAC,KAAK,CACX,CAAA,sBAAA,EACE,IAAI,CAAC,IACP,0DAA0D,MAAM,CAAC,IAAI,CACnE,iBAAiB,CAClB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA,CAAE,CACf;AACD,QAAA,OAAO,EAAE;IACX;AACA,IAAA,OAAO,eAAe,CAAC;QACrB,IAAI;QACJ,IAAI;QACJ,UAAU;QACV,uBAAuB;QACvB,OAAO;QACP,OAAO;QACP,UAAU;QACV,YAAY;QACZ,SAAS;QACT,MAAM;QACN;AACD,KAAA,CAAC;AACJ;AAEA;;AAEG;AACI,MAAM,aAAa,GAAG,CAAC,EAC5B,IAAI,EACJ,IAAI,EACJ,UAAU,EACV,uBAAuB,EACvB,OAAO,EACP,OAAO,EACP,UAAU,EACV,YAAY,EACZ,MAAM,EACN,WAAW,EAYZ,KAAI;AACH,IAAA,IAAI,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,IAAI;QAAE;AACzB,IAAA,IAAI,GAAG,OAAO,IAAI,KAAK,QAAQ,GAAG,EAAE,IAAI,EAAE,GAAG,IAAI;AACjD,IAAA,MAAM,SAAS,GACb,UAAU,KAAK,UAAU,GAAG,YAAY,CAAC,CAAC,CAAC,GAAG,YAAY,CAAC,CAAC,CAAC;AAE/D,IAAA,OAAO,sBAAsB,CAAC;AAC5B,QAAA,IAAI,EAAE,IAAgC;AACtC,QAAA,IAAI,EAAE,IAAmB;QACzB,UAAU;QACV,uBAAuB;QACvB,OAAO;QACP,OAAO;QACP,UAAU;QACV,YAAY;QACZ,SAAS;QACT,MAAM;QACN;AACD,KAAA,CAAC;AACJ,CAAC;AAQD;;AAEG;AACG,SAAU,0BAA0B,CAAC,IAA0B,EAAA;IACnE,MAAM,iBAAiB,GAAkB,EAAE;AAC3C,IAAA,KAAK,MAAM,SAAS,IAAI,IAAI,EAAE;QAC5B,MAAM,gBAAgB,GAAkB,EAAE;AAC1C,QAAA,MAAM,EAAE,QAAQ,EAAE,cAAc,EAAC,GAAG,SAAS;AAC7C,QAAA,IAAI,SAAS,CAAC,IAAI,EAAE;AAClB,YAAA,iBAAiB,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC;QACxC;aAAO;AACL,YAAA,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,QAAQ,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;AACxC,gBAAA,MAAM,OAAO,GAAwB,QAAQ,CAAC,CAAC,CAAwB;gBACvE,MAAM,EAAE,QAAQ,EAAE,KAAK,GAAG,EAAE,EAAA,GAAmB,OAAO,EAArB,SAAS,GAAA,MAAA,CAAK;;AAAzC,kBAAA,CAAA,UAAA,EAAA,OAAA,CAAsC,CAAU;;AAGtD,gBAAA,MAAM,YAAY,GAAA,MAAA,CAAA,MAAA,CAAA,EAAA,EAA6B,SAAS,CAAE;AAC1D,gBAAA,IAAI,KAAK,CAAC,IAAI,KAAK,SAAS;AAAE,oBAAA,YAAY,CAAC,IAAI,GAAG,KAAK,CAAC,IAAI;AAC5D,gBAAA,IAAI,KAAK,CAAC,MAAM,KAAK,SAAS;AAAE,oBAAA,YAAY,CAAC,MAAM,GAAG,KAAK,CAAC,MAAM;AAClE,gBAAA,IAAI,KAAK,CAAC,WAAW,KAAK,SAAS;AAAE,oBAAA,YAAY,CAAC,WAAW,GAAG,KAAK,CAAC,WAAW;AACjF,gBAAA,IAAI,KAAK,CAAC,OAAO,KAAK,SAAS;AAAE,oBAAA,YAAY,CAAC,OAAO,GAAG,KAAK,CAAC,OAAO;AACrE,gBAAA,IAAI,KAAK,CAAC,WAAW,KAAK,SAAS;AAAE,oBAAA,YAAY,CAAC,WAAW,GAAG,KAAK,CAAC,WAAW;AACjF,gBAAA,IAAI,KAAK,CAAC,aAAa,KAAK,SAAS;AAAE,oBAAA,YAAY,CAAC,aAAa,GAAG,KAAK,CAAC,aAAa;;AAGvF,gBAAA,MAAM,eAAe,GAAA,MAAA,CAAA,MAAA,CAAA,EAAA,EAA6B,KAAK,CAAE;gBACzD,OAAO,eAAe,CAAC,IAAI;gBAC3B,OAAO,eAAe,CAAC,MAAM;gBAC7B,OAAO,eAAe,CAAC,WAAW;gBAClC,OAAO,eAAe,CAAC,OAAO;gBAC9B,OAAO,eAAe,CAAC,WAAW;gBAClC,OAAO,eAAe,CAAC,aAAa;gBACpC,IAAI,MAAM,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC,MAAM,GAAG,CAAC,EAAE;AAC3C,oBAAA,YAAY,CAAC,KAAK,GAAG,eAAe;gBACtC;gBAEA,YAAY,CAAC,GAAG,GAAG,OAAO,CAAC,GAAG,IAAI,CAAC;gBAEnC,IAAI,QAAQ,EAAE;AACZ,oBAAA,gBAAgB,CAAC,IAAI,CAACjB,gBAAK,CAAC,aAAa,CAAC,QAAQ,EAAE,YAAY,CAAC,CAAC;gBACpE;YACF;YACA,IAAI,cAAc,EAAE;gBAClB,iBAAiB,CAAC,IAAI,CAACA,gBAAA,CAAA,aAAA,CAAA,GAAA,EAAA,MAAA,CAAA,MAAA,CAAA,EAAA,EAAO,cAAc,CAAA,EAAG,gBAAgB,CAAK,CAAC;YACvE;iBAAO;AACL,gBAAA,iBAAiB,CAAC,IAAI,CAAC,GAAG,gBAAgB,CAAC;YAC7C;QACF;IACF;AACA,IAAA,OAAO,iBAAiB;AAC1B;AAEO,MAAM,sBAAsB,GAAG,CAAC,EACrC,IAAI,EACJ,YAAY,EACZ,aAAa,EACd,KAAI;;IACH,IAAI,YAAY,EAAE,EAAE;AAClB,QAAA,KAAK,MAAM,SAAS,IAAI,IAAI,EAAE;AAC5B,YAAA,IAAI,SAAS,CAAC,IAAI,KAAK,eAAe,EAAE;AACtC,gBAAA,MAAM,EAAE,SAAS,EAAE,kBAAkB,GAAG,gBAAgB,EAAE,GACxD,CAAA,EAAA,GAAA,SAAS,aAAT,SAAS,KAAA,MAAA,GAAA,MAAA,GAAT,SAAS,CAAE,cAAc,MAAA,IAAA,IAAA,EAAA,KAAA,MAAA,GAAA,EAAA,GAAI;AAC3B,oBAAA,SAAS,EAAE;iBACZ;AAEH,gBAAA,MAAM,CAAC,UAAU,EAAE,UAAU,CAAC,GAAG;AAC9B,qBAAA,OAAO,CAAC,YAAY,EAAE,EAAE;AACxB,qBAAA,OAAO,CAAC,GAAG,EAAE,EAAE;qBACf,KAAK,CAAC,GAAG,CAAC;AACb,gBAAA,KAAK,MAAM,OAAO,IAAI,SAAS,CAAC,QAAQ,EAAE;oBACxC,MAAM,EAAE,SAAS,EAAE,gBAAgB,GAAG,gBAAgB,EAAE,GAAG,OAAO;AAElE,oBAAA,MAAM,CAAC,QAAQ,EAAE,QAAQ,CAAC,GAAG;AAC1B,yBAAA,OAAO,CAAC,YAAY,EAAE,EAAE;AACxB,yBAAA,OAAO,CAAC,GAAG,EAAE,EAAE;yBACf,KAAK,CAAC,GAAG,CAAC;AAEb,oBAAA,MAAM,UAAU,GAAG;AACjB,wBAAA,SAAS,EAAE,aAAa;wBACxB,EAAE,EAAE,QAAQ,CAAC,QAAQ,CAAC,GAAG,QAAQ,CAAC,UAAU,CAAC;wBAC7C,EAAE,EAAE,QAAQ,CAAC,QAAQ,CAAC,GAAG,QAAQ,CAAC,UAAU,CAAC;AAC7C,wBAAA,CAAC,EAAE,EAAE;AACL,wBAAA,CAAC,EAAE,CAAC;AACJ,wBAAA,SAAS,EAAE,OAAO;AAClB,wBAAA,OAAO,EAAE,MAAM,OAAO,CAAC,KAAK;wBAC5B,QAAQ,EAAE,OAAO,CAAC,UAAU;AAC5B,wBAAA,OAAO,EAAE,MAAM;qBAChB;AAED,oBAAA,aAAa,CAAC,IAAI,CAAC,UAAU,CAAC;gBAChC;YACF;QACF;IACF;IAEA,OAAO,0BAA0B,CAC/B,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,YAAY,EAAE,IAAI,CAAC,CAAC,IAAI,KAAK,eAAe,CAAC,CAClE;AACH,CAAC;;ACvND;AAEA,MAAM,mBAAmB,GAAG,CAAC,MAAM,EAAE,KAAK,EAAE,IAAI,KAAI;AAClD,IAAA,MAAM,IAAI,GAAG,MAAM,KAAK,MAAM,IAAI,MAAM,KAAK,OAAO,GAAG,KAAK,GAAG,CAAC,GAAG,CAAC;AACpE,IAAA,MAAM,IAAI,GAAG,MAAM,KAAK,QAAQ,IAAI,MAAM,KAAK,KAAK,GAAG,KAAK,GAAG,CAAC,GAAG,CAAC;IACpE,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,IAAI,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC;AACxD,CAAC;AAED,SAAS,WAAW,CAAC,KAAK,EAAE,KAAK,EAAA;AAC/B,IAAA,IAAI,KAAK,CAAC,UAAU,EAAE;AACpB,QAAA,OAAO,KAAK,CAAC,UAAU,CAAC,KAAK,CAAC;IAChC;AACA,IAAA,IAAI,KAAK,CAAC,QAAQ,EAAE;AAClB,QAAA,OAAO,KAAK,CAAC,QAAQ,EAAE;IACzB;AACA,IAAA,OAAO,KAAK;AACd;AAEA,MAAM,cAAc,GAAG,CAAC,QAAQ,EAAE,MAAM,KAAI;AAC1C,IAAA,MAAM,OAAO,GAAG,QAAQ,CAAC,OAAO;AAChC,IAAA,IAAI,CAAC,OAAO;AAAE,QAAA,OAAO,EAAE;AAEvB,IAAA,MAAM,YAAY,GAChB,MAAM,KAAK,MAAM,IAAI,MAAM,KAAK,OAAO,GAAG,OAAO,GAAG,QAAQ;AAE9D,IAAA,MAAM,YAAY,GAChB,IAAI,CAAC,GAAG,CACN,GAAG,CAAC,GAAG,OAAO,CAAC,gBAAgB,CAAC,aAAa,CAAC;SAC3C,GAAG,CACF,CAAC,CAAwB,KACvB,CAAC,CAAC,CAAC,OAAO,IAAI,CAAC,CAAC,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,EAAE,EAAE,KAAK,EAAE,EAAE,EAAE;AAE1D,SAAA,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,YAAY,CAAC,CAAC,CAC/B,GAAG,EAAE;AAER,IAAA,OAAO,YAAY;AACrB,CAAC;AAEa,SAAU,IAAI,CAAC,KAAgB,EAAA;IAC3C,MAAM,EACJ,MAAM,EACN,KAAK,EACL,oBAAoB,EACpB,MAAM,GAAG,MAAM,EACf,mBAAmB,EACnB,UAAU,GAAG,mBAAmB,GAAG,MAAM,EAAE,GAAG,CAAC,CAAC,KAAK,CAAC,EACtD,IAAI,EACJ,KAAK,GAAG,CAAC,IAAI,IAAI,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,EAC9B,MAAM,GAAG,CAAC,IAAI,IAAI,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,EAC/B,SAAS,EACT,OAAO,EACP,UAAU,EACV,KAAK,EACL,KAAK,EACL,MAAM,EACN,QAAQ,EACR,iBAAiB,EACjB,QAAQ,GAAG,IAAI,EACf,MAAM,GAAG,EAAE,GAAG,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,EACjD,MAAM,GAAG,KAAK,EACd,kBAAkB,EAClB,aAAa,EACb,QAAQ,EACT,GAAG,KAAK;IAET,MAAM,CAAC,aAAa,EAAE,mBAAmB,CAAC,GAAG0B,cAAQ,CAAC,CAAC,CAAC;IACxD,MAAM,CAAC,uBAAuB,EAAE,6BAA6B,CAAC,GAC5DA,cAAQ,CAAC,SAAS,CAAC;AAErB,IAAA,MAAM,QAAQ,GAAGC,YAAM,CAAC,IAAI,CAAC;IAE7BC,eAAS,CAAC,MAAK;AACb,QAAA,IAAI,EAAC,KAAK,KAAA,IAAA,IAAL,KAAK,KAAA,MAAA,GAAA,MAAA,GAAL,KAAK,CAAE,QAAQ,CAAA,IAAI,oBAAoB,EAAE;YAC5C,MAAM,QAAQ,GAAG,cAAc,CAAC,QAAQ,EAAE,MAAM,CAAC;AACjD,YAAA,IAAI,QAAQ,KAAK,uBAAuB,EAAE;gBACxC,6BAA6B,CAAC,QAAQ,CAAC;YACzC;QACF;AACF,IAAA,CAAC,EAAE,CAAC,KAAK,EAAE,oBAAoB,CAAC,CAAC;AAEjC,IAAA,IAAI,EAAE,SAAS,EAAE,QAAQ,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,GAAG,KAAK;AAE5C,IAAA,IAAI,aAAa;IAEjB,IAAI,CAAC,SAAS,EAAE;QACd,SAAS,GAAG,UAAU,CAAC;AACrB,YAAA,OAAO,EAAE,OAAO;YAChB,UAAU;YACV,KAAK;YACL,KAAK;YACL,MAAM;AACN,YAAA,IAAI,EAAE,CAAC,KAAK,EAAE,MAAM,CAAC;YACrB,MAAM;YACN;AACD,SAAA,CAAC;QACF,aAAa,IACX5B,gBAAA,CAAA,aAAA,CAAA,GAAA,EAAA,EAAG,SAAS,EAAE,QAAQ,SAAS,CAAA,CAAE,EAAA,EAC9B,SAAS,CAAC;YACT,SAAS;YACT,MAAM;YACN,iBAAiB;YACjB,SAAS;YACT;SACD,CAAC,CACA,CACL;IACH;AACA,IAAA,IAAI,SAAS,CAAC,MAAM,KAAK,CAAC,EAAE;AAC1B,QAAA,OAAO,IAAI;IACb;IAEA,IAAI,UAAU,GAAG,EAAE;IACnB,IAAI,WAAW,GAAG,MAAM;AACxB,IAAA,IAAI,MAAM,GAAG,GAAG;IAChB,IAAI,MAAM,GAAG,CAAC;IACd,IAAI,SAAS,GAAG,CAAC;IACjB,IAAI,SAAS,GAAG,CAAC;IACjB,IAAI,UAAU,GAAG,CAAC;IAClB,IAAI,UAAU,GAAG,MAAM;;AAEvB,IAAA,IAAI,aAAa;IACjB,IAAI,OAAO,GAAG,EAAE;AAChB,IAAA,IAAI,KAAK,GAAG,GAAG;IACf,IAAI,KAAK,GAAG,EAAE;AACd,IAAA,IAAI,SAAS,GAAG,KAAK,GAAG,EAAE;IAC1B,IAAI,UAAU,GAAG,CAAC;IAClB,IAAI,OAAO,GAAG,aAAa;IAC3B,IAAI,gBAAgB,GAAG,CAAC;IACxB,IAAI,cAAc,GAAG,GAAG;IAExB,QAAQ,MAAM;AACZ,QAAA,KAAK,OAAO;AACV,YAAA,QAAQ,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,QAAQ,CAAC,CAAC,CAAC,CAAC;YACrC,MAAM,GAAG,KAAK;AACd,YAAA,UAAU,GAAG,SAAS,GAAG,KAAK;AAC9B,YAAA,gBAAgB,GAAG,MAAM,CAAC,GAAG;AAC7B,YAAA,SAAS,GAAG,CAAC,KAAK,GAAG,EAAE;YACvB,KAAK,GAAG,CAAC;AACT,YAAA,aAAa,GAAG,CAAC,CAAC,KAAI;gBACpB,mBAAmB,CAAC,CAAC,CAAC,WAAW,CAAC,OAAO,GAAG,gBAAgB,CAAC;AAC/D,YAAA,CAAC;AACD,YAAA,IAAI,MAAM,KAAK,IAAI,EAAE;AACnB,gBAAA,UAAU,GAAG,SAAS,GAAG,KAAK,GAAG,CAAC;YACpC;YACA;AACF,QAAA,KAAK,KAAK;YACR,QAAQ,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;YAC3B,UAAU,GAAG,KAAK;YAClB,WAAW,GAAG,EAAE;YAChB,MAAM,GAAG,GAAG;YACZ,MAAM,GAAG,CAAC;AACV,YAAA,gBAAgB,GAAG,MAAM,CAAC,IAAI;YAC9B,cAAc,GAAG,GAAG;YACpB,UAAU,GAAG,KAAK;YAClB,UAAU,GAAG,CAAC;AACd,YAAA,IAAI,MAAM,KAAK,IAAI,EAAE;AACnB,gBAAA,UAAU,GAAG,SAAS,GAAG,MAAM,GAAG,CAAC;YACrC;AACA,YAAA,aAAa,GAAG,CAAC,CAAC,KAAI;gBACpB,mBAAmB,CAAC,CAAC,CAAC,WAAW,CAAC,OAAO,GAAG,gBAAgB,CAAC;AAC/D,YAAA,CAAC;YACD,OAAO,GAAG,aAAa;YACvB,OAAO,GAAG,EAAE;YACZ,KAAK,GAAG,CAAC;YACT,KAAK,GAAG,GAAG;YACX,SAAS,GAAG,CAAC;AACb,YAAA,UAAU,GAAG,MAAM,GAAG,EAAE;YACxB;AACF,QAAA,KAAK,QAAQ;YACX,QAAQ,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;YAC3B,UAAU,GAAG,KAAK;YAClB,WAAW,GAAG,EAAE;AAChB,YAAA,SAAS,GAAG,UAAU,GAAG,MAAM,GAAG,MAAM;AACxC,YAAA,SAAS,GAAG,MAAM,GAAG,CAAC;YACtB,UAAU,GAAG,KAAK;AAClB,YAAA,gBAAgB,GAAG,MAAM,CAAC,IAAI;AAE9B,YAAA,aAAa,GAAG,CAAC,CAAC,KAAI;gBACpB,mBAAmB,CAAC,CAAC,CAAC,WAAW,CAAC,OAAO,GAAG,gBAAgB,CAAC;AAC/D,YAAA,CAAC;YACD,OAAO,GAAG,aAAa;YACvB,OAAO,GAAG,EAAE;YACZ,KAAK,GAAG,CAAC;YACT,KAAK,GAAG,EAAE;YACV,SAAS,GAAG,CAAC;AACb,YAAA,UAAU,GAAG,CAAC,MAAM,GAAG,EAAE;YACzB,cAAc,GAAG,GAAG;AACpB,YAAA,IAAI,MAAM,KAAK,IAAI,EAAE;AACnB,gBAAA,UAAU,GAAG,SAAS,GAAG,MAAM,GAAG,CAAC;YACrC;YACA;AACF,QAAA;AACE,YAAA,QAAQ,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,QAAQ,CAAC,CAAC,CAAC,CAAC;AACrC,YAAA,gBAAgB,GAAG,MAAM,CAAC,GAAG;AAC7B,YAAA,IAAI,MAAM,KAAK,IAAI,EAAE;AACnB,gBAAA,UAAU,GAAG,SAAS,GAAG,KAAK,GAAG,CAAC;YACpC;AACA,YAAA,aAAa,GAAG,CAAC,CAAC,KAAI;gBACpB,mBAAmB,CAAC,CAAC,CAAC,WAAW,CAAC,OAAO,GAAG,gBAAgB,CAAC;AAC/D,YAAA,CAAC;;AAGL,IAAA,IAAI,eAAe;IAEnB,IAAI,kBAAkB,EAAE;AACtB,QAAA,MAAM,cAAc,GAAG,WAAW,CAAC,KAAK,CAAC,MAAM,CAAC,aAAa,CAAC,EAAE,KAAK,CAAC;QACtE,MAAM,UAAU,GAAQ,aAAa,IACnC,aAAa,CAAC;YACZ,UAAU;YACV,SAAS;AACT,YAAA,KAAK,EAAE,KAAK,CAAC,MAAM,CAAC,aAAa;AAClC,SAAA,CAAC,KAEFA,gBAAA,CAAA,aAAA,CAAA,GAAA,EAAA,IAAA;AACG,YAAAA,gBAAK,CAAC,cAAc,CAAC,cAAc,CAAC,IACnCA,gBAAA,CAAA,aAAA,CAAA,GAAA,EAAA,EAAG,SAAS,EAAE,CAAA,UAAA,EAAa,KAAK,CAAA,CAAA,EAAI,KAAK,CAAA,CAAA,CAAG,EAAA,EAAG,cAAc,CAAK,KAElEA,yCAAM,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,KAAK,EAAA,EACrB,cAAc,CACV,CACR;YACDA,gBAAA,CAAA,aAAA,CAAA,QAAA,EAAA,EAAQ,CAAC,EAAE,CAAC,EAAA,CAAI;AAChB,YAAAA,gBAAA,CAAA,aAAA,CAAA,MAAA,EAAA,EAAM,EAAE,EAAE,SAAS,EAAE,EAAE,EAAE,UAAU,EAAE,KAAK,EAAE,EAAE,MAAM,EAAE,OAAO,EAAE,EAAA,CAAI,CACjE,CACL;AACD,QAAA,MAAM,gBAAgB,GAAG,aAAa,IACpCA,gBAAA,CAAA,aAAA,CAAA,GAAA,EAAA,EACE,KAAK,EAAE,EAAE,aAAa,EAAE,MAAM,EAAE,EAChC,SAAS,EAAE,CAAA,UAAA,EAAa,OAAO,CAAA,CAAA,EAAI,OAAO,CAAA,CAAA,CAAG,EAAA,EAE5C,UAAU,CACT,IACF,IAAI;AAER,QAAA,eAAe,IACbA,gBAAA,CAAA,aAAA,CAAA,GAAA,EAAA,EACE,SAAS,EAAC,kBAAkB,EAC5B,SAAS,EAAE,CAAA,UAAA,EAAa,MAAM,CAAA,CAAA,EAAI,MAAM,CAAA,CAAA,CAAG,EAAA;AAE3C,YAAAA,gBAAA,CAAA,aAAA,CAAA,MAAA,EAAA,EACE,KAAK,EAAE,EAAE,WAAW,EAAE,CAAC,EAAE,EACzB,MAAM,EAAE,WAAW,EACnB,KAAK,EAAE,UAAU,EACjB,WAAW,EAAE,aAAa,EAC1B,OAAO,EAAE,CAAC,CAAC,KACT,kBAAkB,CAAC;AACjB,oBAAA,SAAS,EAAE,yBAAyB;AACpC,oBAAA,IAAI,EAAE,cAAc;AACpB,oBAAA,KAAK,EAAE,KAAK,CAAC,MAAM,CAAC,aAAa,CAAC;oBAClC;AACD,iBAAA,CAAC,EAEJ,UAAU,EAAE,MAAK;oBACf,mBAAmB,CAAC,SAAS,CAAC;AAChC,gBAAA,CAAC,EAAA,CACD;YACD,gBAAgB,CACf,CACL;IACH;AAEA,IAAA,IAAI,cAAc;AAElB,IAAA,IAAI,mBAAmB,IAAI,QAAQ,EAAE;AACnC,QAAA,MAAM,YAAY,GAAG,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;AAEpD,QAAA,MAAM,oBAAoB,GACxB,OAAO,mBAAmB,KAAK;AAC7B,cAAE,EAAE,IAAI,EAAE,mBAAmB;cAC3B,mBAAmB;AAEzB,QAAA,IACE,oBAAoB,CAAC,IAAI,KAAK,SAAS;aACtC,MAAM,KAAK,QAAQ,IAAI,MAAM,KAAK,OAAO,CAAC,EAC3C;AACA,YAAA,oBAAoB,CAAC,IAAI,GAAG,IAAI;QAClC;AAEA,QAAA,MAAM,YAAY,GAAG,oBAAoB,CAAC;AACxC,cAAE,MAAM,oBAAoB,CAAC;AAC7B,cAAE,OAAO;AACL,gBAAA,IAAI,EAAE,OAAO;AACb,gBAAA,WAAW,EAAE,GAAG;AAChB,gBAAA,MAAM,EAAE,OAAO;AACf,gBAAA,eAAe,EAAE;AAClB,aAAA,CAAC;AAEN,QAAA,MAAM,iBAAiB,GAAG,oBAAoB,CAAC;AAC7C,cAAE,MAAM,oBAAoB,CAAC;AAC7B,cAAE,MAAM,SAAS;AAEnB,QAAA,MAAM,YAAY,GAAG,oBAAoB,CAAC;AACxC,cAAE,MAAM,oBAAoB,CAAC;AAC7B,cAAE,MAAM,EAAE;AAEZ,QAAA,MAAM,UAAU,GAAG,oBAAoB,CAAC,MAAM,KAAK,MAAM,IAAI,CAAC;QAE9D,MAAM,cAAc,GAAG;aACpB,MAAM,CACL,CAAC,CAA4C,KAC3C,CAAC,CAAC,CAAC,KAAK,SAAS,IAAI,CAAC,CAAC,CAAC,KAAK,SAAS,IAAI,UAAU,CAAC,CAAC,CAAC,IAAI,CAAC;aAE/D,GAAG,CAAC,CAAC,CAA2B,MAAK,MAAA,CAAA,MAAA,CAAA,MAAA,CAAA,MAAA,CAAA,EAAA,EACjC,CAAC,CAAA,EAAA,EACJ,EAAE,EAAE;gBACF,CAAC,EAAE,MAAM,KAAK,KAAK,IAAI,MAAM,KAAK,QAAQ,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC;gBAC3D,CAAC,EAAE,MAAM,KAAK,MAAM,IAAI,MAAM,KAAK,OAAO,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG;AAC3D,aAAA,EACD,KAAK,EAAE;AACL,gBAAA,mBAAmB,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;AAC/B,gBAAA,WAAW,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC;aACvB,EACD,KAAK,EACH,MAAM,KAAK,KAAK,IAAI,MAAM,KAAK,QAAQ,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,EACnE,WAAW,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,EACvB,mBAAmB,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,EAAA,CAAA,CAC/B,CAAC;QAEL,MAAM,iBAAiB,GAAG,aAAa,CAAC;AACtC,YAAA,IAAI,EAAE;AACJ,gBAAA,MAAM,EAAE;oBACN,MAAM,EAAE,YAAY,GAAG,CAAC;AACxB,oBAAA,SAAS,EAAE,cAAc;AACzB,oBAAA,KAAK,EAAE,YAAY;AACnB,oBAAA,MAAM,EAAE;AACT;AACF,aAAA;AACD,YAAA,IAAI,EAAE,oBAAoB;AAC1B,YAAA,UAAU,EAAE,iBAAiB;AAC7B,YAAA,uBAAuB,EACrB,oBAAoB,CAAC,uBAAuB,KAAK,OAAO,EAAE,CAAC,CAAC;AAC9D,YAAA,OAAO,EAAE,YAAY;AACrB,YAAA,OAAO,EAAE,YAAY;AACrB,YAAA,UAAU,EACR,MAAM,KAAK,KAAK,IAAI,MAAM,KAAK,QAAQ,GAAG,YAAY,GAAG,UAAU;AACrE,YAAA,YAAY,EAAE,IAAI;AAClB,YAAA,MAAM,EAAE,EAAE,GAAG,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,KAAK,EAAE,CAAC;AAC/C,SAAA,CAAC;QAEF,MAAM,eAAe,GAAG,0BAA0B,CAAC,iBAAiB,CAAC,KAAK,CAAC;AAE3E,QAAA,IAAI,MAAM;AAEV,QAAA,IAAI,oBAAoB,CAAC,UAAU,KAAK,IAAI,EAAE;YAC5C,MAAM,YAAY,GAAG,mBAAmB,CACtC,MAAM,EACN,YAAY,EACZ,cAAc,CACf;YAED,MAAM,GAAG,YAAY,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,MAC7BA,2CACE,GAAG,EAAE,sBAAsB,CAAC,CAAA,CAAE,EAC9B,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,EACR,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,EACR,CAAC,EAAE,oBAAoB,CAAC,CAAC,IAAI,CAAC,EAC9B,KAAK,EACH,oBAAoB,CAAC,UAAU,IAAI;AACjC,oBAAA,IAAI,EAAE,OAAO;AACb,oBAAA,WAAW,EAAE;iBACd,EAAA,CAEH,CACH,CAAC;QACJ;AAEA,QAAA,MAAM,WAAW,GAAG;YAClB,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC,IAAI,GAAG,CAAC,EAAE,CAAC,CAAC;YAC3B,KAAK,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;YACvB,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC,MAAM,CAAC,GAAG,GAAG,CAAC,CAAC;YACzB,MAAM,EAAE,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC;SACxB;AAED,QAAA,cAAc,IACZA,gBAAA,CAAA,aAAA,CAAC,cAAc,EAAA,EACb,WAAW,EAAE,WAAW,EACxB,MAAM,EAAE,MAAM,EACd,oBAAoB,EAAE,oBAAoB,EAC1C,YAAY,EAAE,YAAY,EAC1B,eAAe,EAAE,eAAe,EAChC,MAAM,EAAE,MAAM,EAAA,CACd,CACH;IACH;AAEA,IAAA,IAAI,SAAS;IAEb,MAAM,cAAc,GAAG,UAAU,CAAC;QAChC,UAAU;QACV,SAAS;QACT,MAAM;QACN,MAAM;QACN;AACD,KAAA,CAAC;IACF,IAAI,KAAK,EAAE;AACT,QAAA,MAAM,SAAS,GAAQ,KAAK,CAAC,IAAI,IAAI,KAAK;AAC1C,QAAA,MAAM,aAAa,GAAG,KAAK,CAAC,QAAQ,IAAI,EAAE;AAC1C,QAAA,MAAM,WAAW,GAAG,aAAa,CAAC,QAAQ,IAAI,SAAS;QACvD,IAAI,SAAS,IAAI,aAAa,CAAC,MAAM,IAAI,QAAQ,CAA2C;AAC5F,QAAA,MAAM,QAAQ,GAAG,KAAK,CAAC,gBAAgB,IAAI,uBAAuB;AAElE,QAAA,MAAM,UAAU,GAAG;YACjB,IAAI,EAAE,GAAG;AACT,YAAA,KAAK,EAAE,EAAE;AACT,YAAA,GAAG,EAAE,CAAC;AACN,YAAA,MAAM,EAAE;SACT;QAED,MAAM,QAAQ,GAAG,aAAa,CAAC,QAAQ,IAAI,UAAU,CAAC,MAAM,CAAC;AAE7D,QAAA,MAAM,YAAY,GAAG;AACnB,YAAA,IAAI,EAAE;gBACJ,KAAK,EAAE,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC;gBACnB,MAAM,EAAE,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;AACxB,gBAAA,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC;AACX,gBAAA,MAAM,EAAE,CAAC,QAAQ,IAAI,EAAE,EAAE,CAAC,CAAC;gBAC3B,OAAO,EAAE,CAAC,EAAE,QAAQ,IAAI,EAAE,CAAC,EAAE,CAAC;AAC/B,aAAA;AACD,YAAA,KAAK,EAAE;AACL,gBAAA,KAAK,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC;AAC7B,gBAAA,MAAM,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;gBAClC,GAAG,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;gBACrB,MAAM,EAAE,CAAC,EAAE,QAAQ,IAAI,EAAE,CAAC,EAAE,CAAC,CAAC;AAC9B,gBAAA,OAAO,EAAE,CAAC,QAAQ,IAAI,EAAE,EAAE,CAAC;AAC5B,aAAA;AACD,YAAA,GAAG,EAAE;AACH,gBAAA,KAAK,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC;AACb,gBAAA,MAAM,EAAE,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;gBAC5B,GAAG,EAAE,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;AACrB,gBAAA,MAAM,EAAE,CAAC,CAAC,EAAE,QAAQ,IAAI,EAAE,CAAC;gBAC3B,OAAO,EAAE,CAAC,CAAC,EAAE,EAAE,QAAQ,IAAI,EAAE,CAAC;AAC/B,aAAA;AACD,YAAA,MAAM,EAAE;gBACN,KAAK,EAAE,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC;AACnB,gBAAA,MAAM,EAAE,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC;AAClC,gBAAA,GAAG,EAAE,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC;gBAC3B,MAAM,EAAE,CAAC,CAAC,EAAE,EAAE,QAAQ,IAAI,CAAC,CAAC,CAAC;AAC7B,gBAAA,OAAO,EAAE,CAAC,CAAC,EAAE,QAAQ,IAAI,EAAE;AAC5B;SACF;QAED,MAAM,WAAW,GAAG,YAAY,CAAC,MAAM,CAAC,CAAC,SAAS,CAAC;QACnD,MAAM,QAAQ,GAAG,YAAY,CAAC,MAAM,CAAC,CAAC,WAAW,CAAC;AAElD,QAAA,WAAW,CAAC,CAAC,CAAC,GAAG,WAAW,CAAC,CAAC,CAAC,GAAG,QAAQ,CAAC,CAAC,CAAC;AAC7C,QAAA,WAAW,CAAC,CAAC,CAAC,GAAG,WAAW,CAAC,CAAC,CAAC,GAAG,QAAQ,CAAC,CAAC,CAAC;QAE7C,IAAI,SAAS,KAAK,OAAO,IAAI,MAAM,KAAK,OAAO,EAAE;YAC/C,SAAS,GAAG,KAAK;QACnB;aAAO,IAAI,SAAS,KAAK,KAAK,IAAI,MAAM,KAAK,OAAO,EAAE;YACpD,SAAS,GAAG,OAAO;QACrB;AAEA,QAAA,SAAS,IACPA,gBAAA,CAAA,aAAA,CAAC,SAAS,EAAA,EACR,SAAS,EAAE,SAAS,EACpB,WAAW,EAAE,WAAW,EACxB,QAAQ,EAAE,QAAQ,EAClB,QAAQ,EAAE,QAAQ,EAClB,SAAS,EAAE,SAAS,EACpB,SAAS,EAAE,SAAS,EAAA,CACpB,CACH;IACH;AAEA,IAAA,MAAM,aAAa,GAAG,CAAA,EAAG,MAAM,CAAA,MAAA,EAC7B,CAAC,SAAS;QACR,SAAS,CAAC,MAAM,GAAG,CAAC;AACpB,QAAA,CAAA,KAAA,EAAQ,UAAU,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC,CAAA,IAAA,EAAO,UAAU,CACxD,SAAS,CAAC,SAAS,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,KAAK,EACrC,SAAS,CAAC,MAAM,GAAG,CAAC,CACrB,EAAE;AACL,QAAA,eACF,EAAE;IAEF,QACEA,gBAAA,CAAA,aAAA,CAAA,GAAA,EAAA,EAAG,SAAS,EAAE,SAAS,gBAAc,aAAa,EAAE,GAAG,EAAE,QAAQ,EAAA;QAC9D,eAAe;QACf,cAAc;QACd,aAAa;QACb,QAAQ,KAAK,IAAI,IAChBA,gBAAA,CAAA,aAAA,CAAA,MAAA,EAAA,EACE,GAAG,EAAC,UAAU,EACd,SAAS,EAAE,iBAAiB,SAAS,CAAA,CAAE,EACvC,MAAM,EAAC,OAAO,EACd,aAAa,EAAC,QAAQ,EACtB,EAAE,EAAE,SAAS,EACb,EAAE,EAAE,UAAU,EACd,EAAE,EAAE,SAAS,EACb,EAAE,EAAE,UAAU,GACd,IACA,IAAI;QACP,SAAS;QACT,cAAc,CACb;AAER;;ACxfA,MAAM,cAAc,GAAG,CAAC,CAAC,MAAM,CAAC,YAAY,IAAI,GAAG,CAAC,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC;AA8E5D,MAAM,kBAAkB,GAAG,CAAC,EACjC,IAAI,EACJ,mBAAmB,EACnB,SAAS,EACT,SAAS,EACc,KAAI;IAC3B,MAAM,aAAa,GAAG,EAAE;AACxB,IAAA,mBAAmB,CAAC,OAAO,CAAC,CAAC,qBAAqB,KAAI;AACpD,QAAA,SAAS,CAAC,OAAO,CAAC,CAAC,eAAe,KAAI;AACpC,YAAA,SAAS,CAAC,OAAO,CAAC,CAAC,eAAe,KAAI;gBACpC,MAAM,UAAU,GAAG,CAAC,CAAS,KAC3B,qBAAqB,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK;AACrC,oBAAA,eAAe,CAAC,CAAC,EAAE,CAAC,CAAC;AACrB,oBAAA,eAAe,CAAC,CAAC,EAAE,CAAC;AACrB,iBAAA,CAAC;AAEJ,gBAAA,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,KAAI;AACjB,oBAAA,aAAa,CAAC,IAAI,CAAA,MAAA,CAAA,MAAA,CAAA,MAAA,CAAA,MAAA,CAAA,EAAA,EACb,CAAC,CAAA,EAAA,EACJ,SAAS,EAAE,qBAAqB,CAAC,CAAC,CAAC,EACnC,eAAe,EAAE,UAAU,CAAC,CAAC,CAAC,IAC9B;AACJ,gBAAA,CAAC,CAAC;AACJ,YAAA,CAAC,CAAC;AACJ,QAAA,CAAC,CAAC;AACJ,IAAA,CAAC,CAAC;AAEF,IAAA,OAAO,aAAa;AACtB,CAAC;AAEM,MAAM,eAAe,GAAG,CAAC,EAC9B,IAAI,EACJ,gBAAgB,EAChB,KAAK,EACL,QAAQ,EACR,WAAW,EACX,KAAK,EACL,QAAQ,EACR,WAAW,EACX,SAAS,EACT,SAAS,EACW,KAAI;IACxB,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE;AACxB,QAAA,IAAI,GAAG,CAAC,IAAI,CAAC;IACf;IACA,MAAM,aAAa,GAAyB,EAAE;IAE9C,gBAAgB,CAAC,OAAO,CAAC,CAAC,kBAAkB,EAAE,SAAS,KAAI;QACzD,SAAS,CAAC,OAAO,CAAC,CAAC,eAAe,EAAE,MAAM,KAAI;YAC5C,SAAS,CAAC,OAAO,CAAC,CAAC,eAAe,EAAE,MAAM,KAAI;AAC5C,gBAAA,IAAI,CAAC,OAAO,CAAC,CAAC,CAAgB,KAAI;oBAChC,MAAM,gBAAgB,GAAA,MAAA,CAAA,MAAA,CAAA,MAAA,CAAA,MAAA,CAAA,EAAA,EAAQ,CAAC,CAAA,EAAA,EAAE,MAAM,EAAE,MAAM,EAAE,SAAS,EAAA,CAAE;AAE5D,oBAAA,gBAAgB,CAAC,IAAI,GAAG,kBAAkB,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,KAAI;AACzD,wBAAA,MAAM,cAAc,GAAG,EAAE,IAAI,EAAE,CAAC,EAAE;wBAElC,cAAc,CAAC,KAAK,CAAC,GAAG,eAAe,CAAC,CAAC,EAAE,CAAC,CAAC;wBAC7C,cAAc,CAAC,QAAQ,CAAC,GAAG,cAAc,CAAC,KAAK,CAAC;wBAChD,cAAc,CAAC,WAAW,CAAC,GAAG,cAAc,CAAC,KAAK,CAAC;wBACnD,cAAc,CAAC,KAAK,CAAC,GAAG,eAAe,CAAC,CAAC,EAAE,CAAC,CAAC;wBAC7C,cAAc,CAAC,QAAQ,CAAC,GAAG,cAAc,CAAC,KAAK,CAAC;wBAChD,cAAc,CAAC,WAAW,CAAC,GAAG,cAAc,CAAC,KAAK,CAAC;AAEnD,wBAAA,OAAO,cAAc;AACvB,oBAAA,CAAC,CAAC;oBACF,gBAAgB,CAAC,GAAG,GAAG,gBAAgB,CAAC,GAAG,IAAI,aAAa,CAAC,MAAM;AACnE,oBAAA,aAAa,CAAC,IAAI,CAAC,gBAAgB,CAAC;AACtC,gBAAA,CAAC,CAAC;AACJ,YAAA,CAAC,CAAC;AACJ,QAAA,CAAC,CAAC;AACJ,IAAA,CAAC,CAAC;AAEF,IAAA,OAAO,aAAa;AACtB,CAAC;AAEM,MAAM,cAAc,GAAG,CAAC,EAC7B,IAAI,EACJ,KAAK,EACL,QAAQ,EACR,WAAW,EACS,KAAI;IACxB,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,KAAI;QACpB,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,KAAK,EAAE,CAAC,KAAI;AAC1B,YAAA,MAAM,SAAS,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC;AACjC,YAAA,IAAI,KAAK,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC,SAAS,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,EAAE;AACjD,gBAAA,KAAK,CAAC,WAAW,CAAC,GAAG,IAAI,CAAC,SAAS,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC;gBACnD,KAAK,CAAC,QAAQ,CAAC,GAAG,KAAK,CAAC,KAAK,CAAC;YAChC;iBAAO;gBACL,KAAK,CAAC,QAAQ,CAAC,GAAG,KAAK,CAAC,KAAK,CAAC;gBAC9B,KAAK,CAAC,WAAW,CAAC,GAAG,KAAK,CAAC,KAAK,CAAC;YACnC;AACF,QAAA,CAAC,CAAC;AACJ,IAAA,CAAC,CAAC;AAEF,IAAA,OAAO,IAAI;AACb,CAAC;AAEM,MAAM,WAAW,GAAG,CAAC,EAC1B,IAAI,GAAG,aAAa,EACpB,IAAI,EACJ,KAAK,EACL,KAAK,EACL,WAAW,EACX,IAAI,EACJ,QAAQ,EACR,WAAW,EACM,KAAI;AACrB,IAAA,MAAM,QAAQ,GAAG,IAAI,GAAG,EAAE;IAC1B,MAAM,QAAQ,GAAG,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;IAElC,IAAI,SAAS,GAAG,CAAC;AACjB,IAAA,KAAK,MAAM,IAAI,IAAI,IAAI,EAAE;AACvB;;;;AAIE;AACF,QAAA,IAAI,CAAC,WAAW,GAAG,SAAS;AAC5B,QAAA,KAAK,MAAM,KAAK,IAAI,IAAI,CAAC,IAAI,EAAE;YAC7B,MAAM,MAAM,GAAG,cAAc,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;YAC3C,QAAQ,CAAC,SAAS,CAAC,IAAI,KAAK,CAAC,KAAK,CAAC;YACnC,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE;AACzB,gBAAA,QAAQ,CAAC,GAAG,CAAC,MAAM,EAAE,EAAE,CAAC;YAC1B;YACA,QAAQ,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,SAAS,CAAC,GAAG,KAAK;QACzC;AACA,QAAA,SAAS,EAAE;IACb;IAEA,IAAI,SAAS,GAAG,CAAC,CAAC,EAAE,CAAC,KAAK,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC;IAC3D,IAAI,IAAI,KAAK,uBAAuB,IAAI,IAAI,KAAK,oBAAoB,EAAE;QACrE,SAAS,GAAG,CAAC,CAAC,EAAE,CAAC,KAAK,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC;IACzD;AACA,IAAA,IAAI,GAAG,IAAI,KAAK,SAAS,GAAG,SAAS,GAAG,IAAI;AAE5C,IAAA,IAAI,IAAI,KAAK,IAAI,EAAE;AACjB,QAAA,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC;IACxB;AAEA,IAAA,MAAM,mBAAmB,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,WAAW,CAAC;IAEhE,KAAK,MAAM,GAAG,SAAS,CAAC,IAAI,QAAQ,EAAE;QACpC,IAAI,cAAc,GAAG,CAAC;QACtB,IAAI,cAAc,GAAG,CAAC;AAEtB,QAAA,MAAM,iBAAiB,GAAGyB,WAAG,CAAC,SAAS,EAAE,CAAC,CAAC,KACzC,CAAA,CAAC,KAAA,IAAA,IAAD,CAAC,KAAA,MAAA,GAAA,MAAA,GAAD,CAAC,CAAG,KAAK,CAAC,IAAG,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAC9B;AACD,QAAA,MAAM,iBAAiB,GAAGA,WAAG,CAAC,SAAS,EAAE,CAAC,CAAC,KACzC,CAAA,CAAC,KAAA,IAAA,IAAD,CAAC,KAAA,MAAA,GAAA,MAAA,GAAD,CAAC,CAAG,KAAK,CAAC,IAAG,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAC9B;AAED,QAAA,KAAK,MAAM,QAAQ,IAAI,mBAAmB,EAAE;AAC1C,YAAA,MAAM,CAAC,GAAG,SAAS,CAAC,QAAQ,CAAC;YAC7B,IAAI,CAAC,EAAE;AACL,gBAAA,IAAI,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE;oBAChB,IACE,IAAI,KAAK,aAAa;AACtB,wBAAA,IAAI,KAAK,gBAAgB;wBACzB,IAAI,KAAK,uBAAuB,EAChC;wBACA,MAAM,OAAO,GAAG,CAAC,CAAC,KAAK,CAAC,GAAG,iBAAiB;AAC5C,wBAAA,CAAC,CAAC,OAAO,GAAG,OAAO;AACnB,wBAAA,IAAI,IAAI,KAAK,aAAa,EAAE;4BAC1B,CAAC,CAAC,WAAW,CAAC;gCACZ,CAAC,CAAC,WAAW,CAAC;oCACd,CAAC,CAAC,QAAQ,CAAC;wCACX,CAAC,CAAC,WAAW,CAAC;AACZ,4CAAA,OAAO;wBACb;6BAAO;AACL,4BAAA,MAAM,UAAU,GAAG,iBAAiB,IAAI,CAAC,GAAG,CAAC,GAAG,OAAO;4BACvD,CAAC,CAAC,WAAW,CAAC;AACZ,gCAAA,iBAAiB,KAAK;AACpB,sCAAE;AACF,sCAAE,EAAE,cAAc,GAAG,iBAAiB,CAAC;4BAC3C,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,WAAW,CAAC,GAAG,UAAU;AACzC,4BAAA,CAAC,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,WAAW,CAAC,GAAG,UAAU,GAAG,CAAC;wBAClD;oBACF;yBAAO;AACL,wBAAA,CAAC,CAAC,WAAW,CAAC,GAAG,cAAc;wBAC/B,CAAC,CAAC,QAAQ,CAAC,GAAG,cAAc,GAAG,CAAC,CAAC,KAAK,CAAC;AACvC,wBAAA,CAAC,CAAC,WAAW,CAAC,GAAG,cAAc,GAAG,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC;oBAChD;AACA,oBAAA,cAAc,IAAI,CAAC,CAAC,KAAK,CAAC;gBAC5B;qBAAO;oBACL,IACE,IAAI,KAAK,aAAa;AACtB,wBAAA,IAAI,KAAK,gBAAgB;wBACzB,IAAI,KAAK,uBAAuB,EAChC;wBACA,MAAM,OAAO,GAAG,CAAC,CAAC,KAAK,CAAC,GAAG,iBAAiB;AAC5C,wBAAA,CAAC,CAAC,OAAO,GAAG,OAAO;AAEnB,wBAAA,IAAI,IAAI,KAAK,aAAa,EAAE;AAC1B,4BAAA,CAAC,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,WAAW,CAAC,GAAG,OAAO;wBACzD;6BAAO;AACL,4BAAA,MAAM,UAAU,GAAG,iBAAiB,IAAI,CAAC,GAAG,CAAC,GAAG,OAAO;4BACvD,CAAC,CAAC,WAAW,CAAC;AACZ,gCAAA,iBAAiB,KAAK,CAAC,GAAG,CAAC,GAAG,cAAc,GAAG,iBAAiB;4BAClE,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,WAAW,CAAC,GAAG,UAAU;AACzC,4BAAA,CAAC,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,WAAW,CAAC,GAAG,UAAU,GAAG,CAAC;wBAClD;oBACF;yBAAO;AACL,wBAAA,CAAC,CAAC,WAAW,CAAC,GAAG,cAAc;wBAC/B,CAAC,CAAC,QAAQ,CAAC,GAAG,cAAc,GAAG,CAAC,CAAC,KAAK,CAAC;AACvC,wBAAA,CAAC,CAAC,WAAW,CAAC,GAAG,cAAc,GAAG,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC;oBAChD;AACA,oBAAA,cAAc,IAAI,CAAC,CAAC,KAAK,CAAC;gBAC5B;YACF;QACF;IACF;AAEA,IAAA,OAAO,IAAI;AACb,CAAC;AAEM,MAAM,SAAS,GAAG,CAAC,EACxB,IAAI,EACJ,EAAE,EACF,EAAE,EACF,QAAQ,EACR,WAAW,EACX,WAAW,EACX,QAAQ,EACR,WAAW,EACX,WAAW,EACI,KAAI;IACnB,IAAI,EAAE,EAAE;AACN,QAAA,KAAK,MAAM,IAAI,IAAI,IAAI,EAAE;AACvB,YAAA,KAAK,MAAM,KAAK,IAAI,IAAI,CAAC,IAAI,EAAE;gBAC7B,KAAK,CAAC,WAAW,CAAC,GAAG,EAAE,CAAC,KAAK,CAAC;;;gBAG9B,KAAK,CAAC,WAAW,CAAC,GAAG,KAAK,CAAC,QAAQ,CAAC;YACtC;QACF;IACF;IAEA,IAAI,EAAE,EAAE;AACN,QAAA,KAAK,MAAM,IAAI,IAAI,IAAI,EAAE;AACvB,YAAA,KAAK,MAAM,KAAK,IAAI,IAAI,CAAC,IAAI,EAAE;gBAC7B,KAAK,CAAC,WAAW,CAAC,GAAG,EAAE,CAAC,KAAK,CAAC;AAC9B,gBAAA,KAAK,CAAC,WAAW,CAAC,GAAG,CAAC,KAAK,CAAC,WAAW,CAAC,GAAG,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC;YACjE;QACF;IACF;AAEA,IAAA,OAAO,IAAI;AACb,CAAC;AAEM,MAAM,cAAc,GAAG,CAAC,EAC7B,IAAI,EACJ,EAAE,EACF,QAAQ,EACR,WAAW,EACX,WAAW,EACX,IAAI,GAAG,YAAY,EACC,KAAI;AACxB,IAAA,KAAK,MAAM,IAAI,IAAI,IAAI,EAAE;QACvB,IAAI,eAAe,GAAG,CAAC;QACvB,MAAM,SAAS,GACb,IAAI,KAAK,oBAAoB,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,GAAG,IAAI,CAAC,IAAI;AAEjE,QAAA,KAAK,MAAM,KAAK,IAAI,SAAS,EAAE;AAC7B,YAAA,eAAe,IAAI,KAAK,CAAC,QAAQ,CAAC;YAClC,KAAK,CAAC,WAAW,CAAC;gBAChB,KAAK,CAAC,QAAQ,CAAC;oBACf,KAAK,CAAC,WAAW,CAAC;AAChB,wBAAA,eAAe;YACnB,IAAI,EAAE,EAAE;gBACN,KAAK,CAAC,WAAW,CAAC,GAAG,EAAE,CAAC,KAAK,CAAC;AAC9B,gBAAA,KAAK,CAAC,WAAW,CAAC,GAAG,KAAK,CAAC,WAAW,CAAC,GAAG,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC;YAC/D;QACF;IACF;AAEA,IAAA,OAAO,IAAI;AACb,CAAC;AAEM,MAAM,SAAS,GAAG,CAAC,EACxB,IAAI,GAAG,UAAU,EACjB,IAAI,EACJ,KAAK,EACL,KAAK,EACL,WAAW,EACX,QAAQ,EACR,WAAW,EACM,KAAI;AACrB,IAAA,MAAM,WAAW,GAAG,IAAI,GAAG,EAAE;AAC7B,IAAA,KAAK,MAAM,IAAI,IAAI,IAAI,EAAE;AACvB,QAAA,KAAK,MAAM,KAAK,IAAI,IAAI,CAAC,IAAI,EAAE;YAC7B,MAAM,MAAM,GAAG,cAAc,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;YAC3C,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE;AAC5B,gBAAA,WAAW,CAAC,GAAG,CAAC,MAAM,EAAE,EAAE,CAAC;YAC7B;YACA,WAAW,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC;QACrC;IACF;AAEA,IAAA,IAAI,QAAQ,GAAG,CAAC,CAAC,EAAE,CAAC,KAAI;QACtB,IAAI,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,EAAE;AACvB,YAAA,OAAO,CAAC;QACV;QACA,IAAI,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,EAAE;YACvB,OAAO,EAAE;QACX;QACA,OAAO,EAAE;AACX,IAAA,CAAC;IACD,IAAI,IAAI,KAAK,iBAAiB,IAAI,IAAI,KAAK,iBAAiB,EAAE;AAC5D,QAAA,QAAQ,GAAG,CAAC,CAAC,EAAE,CAAC,KAAI;YAClB,IAAI,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,EAAE;AACvB,gBAAA,OAAO,CAAC;YACV;YACA,IAAI,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,EAAE;gBACvB,OAAO,EAAE;YACX;YACA,OAAO,EAAE;AACX,QAAA,CAAC;IACH;IAEA,KAAK,MAAM,GAAG,cAAc,CAAC,IAAI,WAAW,EAAE;QAC5C,IAAI,cAAc,GAAG,CAAC;QACtB,IAAI,cAAc,GAAG,CAAC;AAEtB,QAAA,cAAc,CAAC,IAAI,CAAC,QAAQ,CAAC;QAE7B,IAAI,IAAI,GAAG,CAAC;AACZ,QAAA,KAAK,MAAM,KAAK,IAAI,cAAc,EAAE;YAElC,IAAI,IAAI,KAAK,UAAU,IAAI,IAAI,KAAK,iBAAiB,EAAE;AACrD,gBAAA,IAAI,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE;oBACpB,KAAK,CAAC,QAAQ,CAAC,GAAG,cAAc,GAAG,KAAK,CAAC,KAAK,CAAC;AAC/C,oBAAA,KAAK,CAAC,WAAW,CAAC,GAAG,cAAc,GAAG,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC;AACtD,oBAAA,KAAK,CAAC,WAAW,CAAC,GAAG,cAAc;AACnC,oBAAA,cAAc,IAAI,KAAK,CAAC,KAAK,CAAC;gBAChC;qBAAO;oBACL,KAAK,CAAC,QAAQ,CAAC,GAAG,cAAc,GAAG,KAAK,CAAC,KAAK,CAAC;AAC/C,oBAAA,KAAK,CAAC,WAAW,CAAC,GAAG,cAAc,GAAG,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC;AACtD,oBAAA,KAAK,CAAC,WAAW,CAAC,GAAG,cAAc;AACnC,oBAAA,cAAc,IAAI,KAAK,CAAC,KAAK,CAAC;gBAChC;YACF;iBAAO;AACL,gBAAA,KAAK,CAAC,KAAK,CAAC,GAAG,IAAI;AACnB,gBAAA,KAAK,CAAC,QAAQ,CAAC,GAAG,IAAI;AACtB,gBAAA,KAAK,CAAC,WAAW,CAAC,GAAG,IAAI;YAC3B;AACA,YAAA,IAAI,EAAE;QACR;IACF;AAEA,IAAA,OAAO,IAAI;AACb,CAAC;;ACzbM,MAAM,UAAU,GAAG,GAAG;AACtB,MAAM,UAAU,GAAG,GAAG;AACtB,MAAM,gBAAgB,GAAG,SAAS;AAClC,MAAM,aAAa,GAAG,MAAM;AAC5B,MAAM,gBAAgB,GAAG,SAAS;AAClC,MAAM,gBAAgB,GAAG,SAAS;AAClC,MAAM,aAAa,GAAG,MAAM;AAC5B,MAAM,gBAAgB,GAAG,SAAS;;ACPlC,MAAM,WAAW,GAAG,MAAM,IAC/B,CAAC,MAAM,IAAI,MAAM,CAAC,MAAM,MAAM,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,MAAM,CAAC,IAAI,EAAE;;AC2CtE,MAAM,mBAAmB,GAAG,MAAM,IAAI;AAEtC,MAAM,gBAAgB,GAAG;AACvB,IAAA,GAAG,EAAE,aAAa;AAClB,IAAA,MAAM,EAAE,gBAAgB;AACxB,IAAA,MAAM,EAAE;CACT;AAED,MAAM,gBAAgB,GAAG;AACvB,IAAA,GAAG,EAAE,aAAa;AAClB,IAAA,MAAM,EAAE,gBAAgB;AACxB,IAAA,MAAM,EAAE;CACT;AAED,MAAM,sBAAsB,GAAG;AAC7B,IAAA,WAAW,EAAE,WAAW;AACxB,IAAA,oBAAoB,EAAE,WAAW;AACjC,IAAA,cAAc,EAAE,WAAW;AAC3B,IAAA,uBAAuB,EAAE,WAAW;AACpC,IAAA,WAAW,EAAE,WAAW;AACxB,IAAA,UAAU,EAAE,cAAc;AAC1B,IAAA,QAAQ,EAAE,SAAS;AACnB,IAAA,QAAQ,EAAE,SAAS;AACnB,IAAA,iBAAiB,EAAE,SAAS;AAC5B,IAAA,IAAI,EAAE,SAAS;AACf,IAAA,IAAI,EAAE,SAAS;AACf,IAAA,UAAU,EAAE,cAAc;AAC1B,IAAA,oBAAoB,EAAE;CACvB;SAWe,UAAU,CACxB,QAGa,EACb,eAAsE,EACtE,GAAa,EAAA;AAEb,IAAA,IAAI,CAAC,QAAQ,IAAI,eAAe,EAAE;AAChC,QAAA,OAAO,eAAe;IACxB;AAAO,SAAA,IAAI,OAAO,QAAQ,KAAK,QAAQ,EAAE;AACvC,QAAA,OAAO,MAAM,QAAQ;IACvB;AAAO,SAAA,IAAI,QAAQ,YAAY,QAAQ,EAAE;AACvC,QAAA,OAAO,QAAQ;IACjB;AAAO,SAAA,IAAI,GAAG,KAAK,IAAI,EAAE;QACvB,MAAM,YAAY,GAAG,QAAgC;AACrD,QAAA,OAAO,MAAM,YAAY;IAC3B;AAAO,SAAA,IAAI,OAAO,QAAQ,KAAK,QAAQ,EAAE;AACvC,QAAA,OAAO,CAAC,CAAsB,MAAM,CAAC,GAAG,CAAC,CAAC,QAAQ,CAAC,GAAG,SAAS,CAAC;IAClE;AAEA,IAAA,OAAO,MAAM,SAAS;AACxB;SAEgB,eAAe,CAC7B,QAQK,EACL,eAA0E,EAC1E,GAAa,EAAA;AAEb,IAAA,IAAI,QAAQ,KAAK,SAAS,EAAE;QAC1B,OAAO,CAAC,UAAU,CAAY,SAAS,EAAE,eAAe,EAAE,GAAG,CAAC,CAAC;IACjE;IACA,IAAI,gBAAgB,GAAG,EAAE;AACzB,IAAA,IAAI,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE;QAC3B,gBAAgB,GAAG,QAAQ;IAC7B;SAAO;AACL,QAAA,gBAAgB,GAAG,CAAC,QAAQ,CAAC;IAC/B;AAEA,IAAA,OAAO,gBAAgB,CAAC,GAAG,CAAC,CAAC,CAAC,KAC5B,UAAU,CAAY,CAAC,EAAE,eAAe,EAAE,GAAG,CAAC,CAC/C;AACH;AAEA,SAAS,+BAA+B,CACtC,WAAoE,EACpE,kBAAsC,EAAA;IAEtC,MAAM,OAAO,GAA4D,EAAE;AAC3E,IAAA,KAAK,MAAM,CAAC,IAAI,kBAAkB,EAAE;AAClC,QAAA,OAAO,CAAC,IAAI,CAAA,MAAA,CAAA,MAAA,CAAA,EAAA,EAAM,CAAC,EAAG;IACxB;AACA,IAAA,KAAK,MAAM,CAAC,IAAI,WAAW,EAAE;AAC3B,QAAA,IAAI,CAAE,CAAoB,CAAC,aAAa,EAAE;AACxC,YAAA,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC;QACjB;IACF;AACA,IAAA,OAAO,OAAO;AAChB;AA6CO,MAAM,mBAAmB,GAAG,CAAC,EAClC,gBAAgB,EAChB,SAAS,EACT,SAAS,EACT,SAAS,EACT,MAAM,EACN,KAAK,EACL,QAAQ,EACR,cAAc,EACd,iBAAiB,EACjB,OAAO,EACP,OAAO,EACP,OAAO,EACP,OAAO,EACP,mBAAmB,EACnB,WAAW,EACX,YAAY,EAAE,IAAI,EAClB,MAAM,EACN,cAAc,EACd,cAAc,EACd,mBAAmB,EACnB,SAAS,EACT,mBAAmB,EACnB,uBAAuB,EACvB,oBAAoB,EACpB,OAAO,GAAG,mBAAmB,EAC7B,WAAW,GAAG,EAAE,EACG,KAAI;IACvB,IAAI,WAAW,GAA4D,EAAE;IAC7E,IAAI,qBAAqB,GAAG,EAAE;IAE9B,IAAI,eAAe,GAA0B,EAAE,EAC7C,cAAc,GAAyB,EAAE,EACzC,kBAAkB,GAA4B,EAAE;IAClD,IAAI,MAAM,EAAE;QACV,SAAS,CAAC,OAAO,CAAC,CAAC,eAAe,EAAE,MAAM,KAAI;YAC5C,SAAS,CAAC,OAAO,CAAC,CAAC,eAAe,EAAE,MAAM,KAAI;gBAC5C,IAAI,CAAC,GAAG,CAAC;AACT,gBAAA,KAAK,MAAM,CAAC,IAAI,MAAM,EAAE;oBACtB,MAAM,CAAC,GAAG,eAAe,CAAC,CAAC,EAAE,CAAC,CAAC;oBAC/B,MAAM,CAAC,GAAG,eAAe,CAAC,CAAC,EAAE,CAAC,CAAC;AAC/B,oBAAA,MAAM,cAAc,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,MAAM,EAAE,MAAM,EAAE;AACxD,oBAAA,IAAI,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE;wBACpB,cAAc,CAAC,gBAAgB,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;wBACjD,cAAc,CAAC,aAAa,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;wBAC9C,cAAc,CAAC,gBAAgB,CAAC;4BAC9B,CAAC,cAAc,CAAC,gBAAgB,CAAC;gCAC/B,cAAc,CAAC,aAAa,CAAC;AAC/B,gCAAA,CAAC;oBACL;AACA,oBAAA,IAAI,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE;wBACpB,cAAc,CAAC,gBAAgB,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;wBACjD,cAAc,CAAC,aAAa,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;wBAC9C,cAAc,CAAC,gBAAgB,CAAC;4BAC9B,CAAC,cAAc,CAAC,gBAAgB,CAAC;gCAC/B,cAAc,CAAC,aAAa,CAAC;AAC/B,gCAAA,CAAC;oBACL;AACA,oBAAA,eAAe,CAAC,IAAI,CAAC,cAAc,CAAC;AACpC,oBAAA,CAAC,EAAE;gBACL;AACF,YAAA,CAAC,CAAC;AACJ,QAAA,CAAC,CAAC;AAEF,QAAA,KAAK,MAAM,CAAC,IAAI,eAAe,EAAE;AAC/B,YAAA,WAAW,CAAC,IAAI,CAAA,MAAA,CAAA,MAAA,CAAA,MAAA,CAAA,MAAA,CAAA,EAAA,EACX,CAAC,CAAA,EAAA,EACJ,CAAC,UAAU,GAAG,CAAC,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC,gBAAgB,CAAC,IAAI,CAAC,CAAC,CAAC,EAC5D,CAAC,UAAU,GAAG,CAAC,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC,gBAAgB,CAAC,IAAI,CAAC,CAAC,CAAC,IAC5D;QACJ;IACF;IACA,IAAI,KAAK,EAAE;QACT,qBAAqB,GAAG,eAAe,CAAC;AACtC,YAAA,IAAI,EAAE,KAAK;YACX,gBAAgB;AAChB,YAAA,KAAK,EAAE,UAAU;AACjB,YAAA,QAAQ,EAAE,aAAa;AACvB,YAAA,WAAW,EAAE,gBAAgB;AAC7B,YAAA,KAAK,EAAE,UAAU;AACjB,YAAA,QAAQ,EAAE,aAAa;AACvB,YAAA,WAAW,EAAE,gBAAgB;YAC7B,SAAS;YACT;AACD,SAAA,CAAC;AAEF,QAAA,MAAM,aAAa,GAAG;AACpB,YAAA,KAAK,EAAE,UAAU;AACjB,YAAA,KAAK,EAAE,UAAU;AACjB,YAAA,WAAW,EAAE,gBAAgB;AAC7B,YAAA,QAAQ,EAAE,aAAa;AACvB,YAAA,WAAW,EAAE,gBAAgB;AAC7B,YAAA,WAAW,EAAE,gBAAgB;AAC7B,YAAA,QAAQ,EAAE,aAAa;AACvB,YAAA,WAAW,EAAE;SACd;QAED,cAAc,GAAG,kBAAkB,CACjC,QAAQ,EACR,aAAa,CACd,CAAC,qBAAqB,CAAC;AAExB,QAAA,KAAK,MAAM,CAAC,IAAI,cAAc,EAAE;AAC9B,YAAA,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;gBACtC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;AACnB,gBAAA,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC;oBAAE;AAC/C,gBAAA,MAAM,OAAO,GAAmB;AAC9B,oBAAA,UAAU,EAAE,CAAC;oBACb,CAAC,EAAE,CAAC,CAAC,CAAC;oBACN,CAAC,EAAE,CAAC,CAAC,CAAC;oBACN,IAAI,EAAE,CAAC,CAAC,IAAI;oBACZ,OAAO,EAAE,CAAC,CAAC,OAAO;oBAClB,OAAO,EAAE,CAAC,CAAC,OAAO;oBAClB,IAAI,EAAE,CAAC,CAAC,IAAI;oBACZ,OAAO,EAAE,CAAC,CAAC,OAAO;oBAClB,OAAO,EAAE,CAAC,CAAC,OAAO;oBAClB,IAAI,EAAE,CAAC,CAAC;iBACT;AACD,gBAAA,IAAI,CAAC,CAAC,OAAO,EAAE;AACb,oBAAA,OAAO,CAAC,OAAO,GAAG,CAAC,CAAC,OAAO;gBAC7B;AACA,gBAAA,WAAW,CAAC,IAAI,CAAC,OAAO,CAAC;YAC3B;QACF;QACA,IAAI,cAAc,EAAE;AAClB,YAAA,MAAM,YAAY,GAChB,cAAc,KAAK;AACjB,kBAAE;AACF,kBAAE,gBAAgB,CAAC,cAAc,CAAC;AAEtC,YAAA,MAAM,YAAY,GAChB,cAAc,KAAK;AACjB,kBAAE;AACF,kBAAE,gBAAgB,CAAC,cAAc,CAAC;AAEtC,YAAA,cAAc,CAAC,OAAO,CAAC,CAAC,CAAgB,KAAI;AAC1C,gBAAA,CAAC,CAAC;AACC,qBAAA,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,KAAI;AACf,oBAAA,MAAM,SAAS,GAAG,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC;oBACvD,IAAI,SAAS,EAAE;AACb,wBAAA,IAAI,cAAc,KAAK,QAAQ,EAAE;4BAC/B,MAAM,QAAQ,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC;4BAC9B,MAAM,SAAS,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC;4BAE/B,IACE,CAAC,CAAC,QAAQ;AACR,gCAAA,CAAC,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,EAAE,QAAQ,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;AACtD,iCAAC,CAAC,SAAS;AACT,oCAAA,CAAC,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,EAAE,SAAS,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC,CAAC,EACzD;AACA,gCAAA,OAAO,IAAI;4BACb;iCAAO;AACL,gCAAA,OAAO,KAAK;4BACd;wBACF;6BAAO;AACL,4BAAA,OAAO,IAAI;wBACb;oBACF;yBAAO;AACL,wBAAA,OAAO,KAAK;oBACd;AACF,gBAAA,CAAC;AACA,qBAAA,OAAO,CAAC,CAAC,CAAC,KAAI;AACb,oBAAA,eAAe,CAAC,IAAI,CAAA,MAAA,CAAA,MAAA,CAAA,MAAA,CAAA,MAAA,CAAA,EAAA,EACf,CAAC,CAAA,EAAA,EACJ,UAAU,EAAE,CAAC,EACb,CAAC,UAAU,GACT,CAAC,CAAC,YAAY,CAAC,KAAK;AAClB,8BAAE,CAAC,CAAC,YAAY;AAChB,8BAAE,CAAC,CAAC,gBAAgB,CAAC,KAAK;AAC1B,kCAAE,CAAC,CAAC,gBAAgB;AACpB,kCAAE,CAAC,CAAC,gBAAgB,CAAC,KAAK;AAC1B,sCAAE,CAAC,CAAC,gBAAgB;AACpB,sCAAE,CAAC,CAAC,CAAC,EACT,CAAC,UAAU,GACT,CAAC,CAAC,YAAY,CAAC,KAAK;AAClB,8BAAE,CAAC,CAAC,YAAY;AAChB,8BAAE,CAAC,CAAC,gBAAgB,CAAC,KAAK;AAC1B,kCAAE,CAAC,CAAC,gBAAgB;AACpB,kCAAE,CAAC,CAAC,gBAAgB,CAAC,KAAK;AAC1B,sCAAE,CAAC,CAAC,gBAAgB;AACpB,sCAAE,CAAC,CAAC,CAAC,IACT;AACJ,gBAAA,CAAC,CAAC;AACN,YAAA,CAAC,CAAC;QACJ;IACF;IAEA,IAAI,SAAS,EAAE;QACb,kBAAkB,GAAG,kBAAkB,CAAC;AACtC,YAAA,IAAI,EAAE,SAAS;YACf,mBAAmB;YACnB,SAAS;YACT;AACD,SAAA,CAAC;AAEF,QAAA,kBAAkB,CAAC,OAAO,CAAC,CAAC,CAAC,KAAI;AAC/B,YAAA,MAAM,QAAQ,GAAG,CAAC,CAAC,SAAS;YAE5B,IAAI,CAAC,CAAC,eAAe,CAAC,MAAM,GAAG,CAAC,IAAI,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE;gBAC9D,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,KAAK,KAAI;AACrC,oBAAA,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE;wBACxB;6BACG,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,KACR,MAAM,CAAC,MAAM,CAAC,EAAE,aAAa,EAAE,CAAC,EAAE,EAAE,QAAQ,CAAC,CAAC,CAAC,EAAE;AAC/C,4BAAA,CAAC,UAAU,GAAG,CAAC,CAAC,CAAC,CAAC;AAClB,4BAAA,CAAC,UAAU,GAAG,CAAC,CAAC,CAAC;AAClB,yBAAA,CAAC;AAEH,6BAAA,OAAO,CAAC,CAAC,CAAC,KAAI;4BACb,IAAI,iBAAiB,EAAE;AACrB,gCAAA,eAAe,CAAC,IAAI,CAAA,MAAA,CAAA,MAAA,CAAA,MAAA,CAAA,MAAA,CAAA,EAClB,CAAC,EAAE,CAAC,EAAA,EACD,CAAC,CAAA,EAAA,EACJ,CAAC,UAAU,GACT,CAAC,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC,gBAAgB,CAAC,IAAI,CAAC,CAAC,UAAU,CAAC,EAAA,CAAA,CAC1D;4BACJ;AACA,4BAAA,WAAW,CAAC,IAAI,CAAA,MAAA,CAAA,MAAA,CAAA,EAAG,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAA,EAAK,CAAC,EAAG;AACxC,wBAAA,CAAC,CAAC;oBACN;AACF,gBAAA,CAAC,CAAC;YACJ;iBAAO,IAAI,CAAC,CAAC,eAAe,CAAC,MAAM,GAAG,CAAC,EAAE;gBACvC,IAAI,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,eAAe,CAAC,EAAE;AACpC,oBAAA,MAAM,UAAU,GAAuB,CAAC,CAAC,eAGtC;oBACH;AACG,yBAAA,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,MAAK,MAAA,CAAA,MAAA,CAAA,MAAA,CAAA,MAAA,CAAA,EACb,aAAa,EAAE,CAAC,EAAA,EACb,QAAQ,CAAC,CAAC,CAAC,CAAA,EAAA,EACd,CAAC,UAAU,GAAG,CAAC,CAAC,CAAC,CAAC,EAClB,CAAC,UAAU,GAAG,CAAC,CAAC,CAAC,CAAC,IAClB;AACD,yBAAA,OAAO,CAAC,CAAC,CAAC,KAAI;wBACb,IAAI,iBAAiB,EAAE;AACrB,4BAAA,eAAe,CAAC,IAAI,CAAA,MAAA,CAAA,MAAA,CAAA,MAAA,CAAA,MAAA,CAAA,EAClB,CAAC,EAAE,CAAC,EAAA,EACD,CAAC,CAAA,EAAA,EACJ,CAAC,UAAU,GACT,CAAC,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC,gBAAgB,CAAC,IAAI,CAAC,CAAC,UAAU,CAAC,EAAA,CAAA,CAC1D;wBACJ;AACA,wBAAA,WAAW,CAAC,IAAI,CAAA,MAAA,CAAA,MAAA,CAAA,EAAG,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAA,EAAK,CAAC,EAAG;AACxC,oBAAA,CAAC,CAAC;gBACN;YACF;AACF,QAAA,CAAC,CAAC;IACJ;IAEA,IAAI,oBAAoB,GAAG,EAAE;IAC7B,IAAI,oBAAoB,GAAG,EAAE;AAE7B,IAAA,IACE,OAAO;AACP,QAAA,CAAC,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC;AACvB,QAAA,OAAO,CAAC,kBAAkB,KAAK,IAAI,EACnC;AACA,QAAA,SAAS,CAAC,OAAO,CAAC,CAAC,eAAe,KAAI;YACpC,WAAW,CAAC,OAAO,CAAC,CAAC,UAAU,EAAE,eAAe,KAAI;gBAClD,MAAM,CAAC,GAAG,eAAe,CAAC,UAAU,EAAE,eAAe,CAAC;AACtD,gBAAA,IAAI,QAAQ,CAAC,CAAC,CAAC,EAAE;oBACf,oBAAoB,CAAC,IAAI,CAAC;wBACxB,CAAC,UAAU,GAAG;AACf,qBAAA,CAAC;gBACJ;AACF,YAAA,CAAC,CAAC;AACJ,QAAA,CAAC,CAAC;IACJ;AAEA,IAAA,IACE,OAAO;AACP,QAAA,CAAC,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC;AACvB,QAAA,OAAO,CAAC,kBAAkB,KAAK,IAAI,EACnC;AACA,QAAA,SAAS,CAAC,OAAO,CAAC,CAAC,eAAe,KAAI;YACpC,WAAW,CAAC,OAAO,CAAC,CAAC,UAAU,EAAE,eAAe,KAAI;gBAClD,MAAM,CAAC,GAAG,eAAe,CAAC,UAAU,EAAE,eAAe,CAAC;AACtD,gBAAA,IAAI,QAAQ,CAAC,CAAC,CAAC,EAAE;oBACf,oBAAoB,CAAC,IAAI,CAAC;wBACxB,CAAC,UAAU,GAAG;AACf,qBAAA,CAAC;gBACJ;AACF,YAAA,CAAC,CAAC;AACJ,QAAA,CAAC,CAAC;IACJ;;AAGA,IAAA,IAAI,OAA2B;AAC/B,IAAA,IAAI,OAA2B;AAC/B,IAAA,IAAI,OAA2B;AAC/B,IAAA,IAAI,OAA2B;AAE/B,IAAA,KAAK,MAAM,CAAC,IAAI,WAAW,EAAE;AAC3B,QAAA,MAAM,GAAG,GAAG,CAAC,CAAC,gBAAgB,CAAC,KAAK;AAClC,cAAE,CAAC,CAAC,UAAU;AACd,cAAE,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,aAAa,CAAC,EAAE,CAAC,CAAC,gBAAgB,CAAC,CAAC;AACnD,QAAA,MAAM,GAAG,GAAG,CAAC,CAAC,aAAa,CAAC,KAAK;AAC/B,cAAE,CAAC,CAAC,UAAU;AACd,cAAE,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,gBAAgB,CAAC,EAAE,CAAC,CAAC,aAAa,CAAC,CAAC;AACnD,QAAA,MAAM,GAAG,GAAG,CAAC,CAAC,gBAAgB,CAAC,KAAK;AAClC,cAAE,CAAC,CAAC,UAAU;AACd,cAAE,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,aAAa,CAAC,EAAE,CAAC,CAAC,gBAAgB,CAAC,CAAC;AACnD,QAAA,MAAM,GAAG,GAAG,CAAC,CAAC,aAAa,CAAC,KAAK;AAC/B,cAAE,CAAC,CAAC,UAAU;AACd,cAAE,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,gBAAgB,CAAC,EAAE,CAAC,CAAC,aAAa,CAAC,CAAC;AAEnD,QAAA,IAAI,GAAG,KAAK,SAAS,KAAK,OAAO,KAAK,SAAS,IAAI,GAAG,GAAG,OAAO,CAAC;YAAE,OAAO,GAAG,GAAG;AAChF,QAAA,IAAI,GAAG,KAAK,SAAS,KAAK,OAAO,KAAK,SAAS,IAAI,GAAG,GAAG,OAAO,CAAC;YAAE,OAAO,GAAG,GAAG;AAChF,QAAA,IAAI,GAAG,KAAK,SAAS,KAAK,OAAO,KAAK,SAAS,IAAI,GAAG,GAAG,OAAO,CAAC;YAAE,OAAO,GAAG,GAAG;AAChF,QAAA,IAAI,GAAG,KAAK,SAAS,KAAK,OAAO,KAAK,SAAS,IAAI,GAAG,GAAG,OAAO,CAAC;YAAE,OAAO,GAAG,GAAG;IAClF;AAEA,IAAA,KAAK,MAAM,CAAC,IAAI,oBAAoB,EAAE;AACpC,QAAA,MAAM,CAAC,GAAG,CAAC,CAAC,UAAU,CAAC;AACvB,QAAA,IAAI,CAAC,KAAK,SAAS,KAAK,OAAO,KAAK,SAAS,IAAI,CAAC,GAAG,OAAO,CAAC;YAAE,OAAO,GAAG,CAAC;AAC1E,QAAA,IAAI,CAAC,KAAK,SAAS,KAAK,OAAO,KAAK,SAAS,IAAI,CAAC,GAAG,OAAO,CAAC;YAAE,OAAO,GAAG,CAAC;IAC5E;AAEA,IAAA,KAAK,MAAM,CAAC,IAAI,oBAAoB,EAAE;AACpC,QAAA,MAAM,CAAC,GAAG,CAAC,CAAC,UAAU,CAAC;AACvB,QAAA,IAAI,CAAC,KAAK,SAAS,KAAK,OAAO,KAAK,SAAS,IAAI,CAAC,GAAG,OAAO,CAAC;YAAE,OAAO,GAAG,CAAC;AAC1E,QAAA,IAAI,CAAC,KAAK,SAAS,KAAK,OAAO,KAAK,SAAS,IAAI,CAAC,GAAG,OAAO,CAAC;YAAE,OAAO,GAAG,CAAC;IAC5E;AAEA,IAAA,MAAM,iBAAiB,GAAG,CAAC,OAAO,EAAE,OAAO,CAAC;AAC5C,IAAA,MAAM,iBAAiB,GAAG,CAAC,OAAO,EAAE,OAAO,CAAC;AAE5C,IAAA,MAAM,aAAa,GAAa,WAAW,CAAC,OAAO,CAAC;AACpD,IAAA,MAAM,aAAa,GAAa,WAAW,CAAC,OAAO,CAAC;IAEpD,MAAM,IAAI,GACR,aAAa,IAAI,aAAa,CAAC,CAAC,CAAC,KAAK;AACpC,UAAE,aAAa,CAAC,CAAC;AACjB,UAAE,iBAAiB,CAAC,CAAC,CAAC;IAC1B,MAAM,IAAI,GACR,aAAa,IAAI,aAAa,CAAC,CAAC,CAAC,KAAK;AACpC,UAAE,aAAa,CAAC,CAAC;AACjB,UAAE,iBAAiB,CAAC,CAAC,CAAC;IAE1B,MAAM,IAAI,GACR,aAAa,IAAI,aAAa,CAAC,CAAC,CAAC,KAAK;AACpC,UAAE,aAAa,CAAC,CAAC;AACjB,UAAE,iBAAiB,CAAC,CAAC,CAAC;IAC1B,MAAM,IAAI,GACR,aAAa,IAAI,aAAa,CAAC,CAAC,CAAC,KAAK;AACpC,UAAE,aAAa,CAAC,CAAC;AACjB,UAAE,iBAAiB,CAAC,CAAC,CAAC;AAE1B,IAAA,IAAI,YAAY,GAAG,CAAC,IAAI,EAAE,IAAI,CAAC;AAC/B,IAAA,IAAI,YAAY,GAAG,CAAC,IAAI,EAAE,IAAI,CAAC;AAE/B,IAAA,IAAI,OAAO,IAAI,EAAE,aAAa,IAAI,aAAa,CAAC,MAAM,KAAK,CAAC,CAAC,EAAE;AAC7D,QAAA,YAAY,GAAG,CAAC,YAAY,CAAC,CAAC,CAAC,EAAE,YAAY,CAAC,CAAC,CAAC,CAAC;IACnD;IAEA,IACE,CAAC,QAAQ,CAAC,IAAI,KAAK,UAAU,IAAI,OAAO;QACxC,EAAE,aAAa,IAAI,aAAa,CAAC,MAAM,KAAK,CAAC,CAAC,EAC9C;AACA,QAAA,YAAY,GAAG,CAAC,YAAY,CAAC,CAAC,CAAC,EAAE,YAAY,CAAC,CAAC,CAAC,CAAC;IACnD;IAEA,IAAI,WAAW,CAAC,IAAI,IAAI,WAAW,CAAC,IAAI,KAAK,SAAS,EAAE;QACtD,kBAAkB,GAAG,UAAU,CAAC;YAC9B,WAAW;AACX,YAAA,IAAI,EAAE,kBAAkB;YACxB,YAAY;YACZ;AACD,SAAA,CAAC;IACJ;SAAO,IAAI,WAAW,CAAC,IAAI,IAAI,WAAW,CAAC,IAAI,KAAK,YAAY,EAAE;QAChE,kBAAkB,GAAG,YAAY,CAAC;YAChC,WAAW;AACX,YAAA,IAAI,EAAE,kBAAkB;YACxB;AACD,SAAA,CAAC;IACJ;SAAO,IAAI,WAAW,CAAC,IAAI,IAAI,WAAW,CAAC,IAAI,KAAK,QAAQ,EAAE;QAC5D,kBAAkB,GAAG,UAAU,CAAC;YAC9B,WAAW;AACX,YAAA,IAAI,EAAE,kBAAkB,CAAC,CAAC,CAAC;YAC3B,aAAa,EAAE,SAAS,IAAI,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,aAAa;AACxD,YAAA,UAAU,EAAE,KAAK;YACjB,YAAY;YACZ,YAAY;YACZ,IAAI;YACJ,MAAM;AACN,YAAA,OAAO,EAAE,cAAc;AACvB,YAAA,OAAO,EAAE,cAAc;AACvB,YAAA,QAAQ,EAAE,mBAAmB;YAC7B;AACD,SAAA,CAAkC;AAEnC,QAAA,WAAW,GAAG,+BAA+B,CAAC,WAAW,EAAE,kBAAkB,CAAC;IAChF;SAAO,IAAI,WAAW,CAAC,IAAI,IAAI,WAAW,CAAC,IAAI,KAAK,SAAS,EAAE;QAC7D,kBAAkB,GAAG,WAAW,CAAC;YAC/B,WAAW;AACX,YAAA,IAAI,EAAE,kBAAkB,CAAC,CAAC,CAAC;YAC3B,aAAa,EAAE,SAAS,IAAI,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,aAAa;AACxD,YAAA,UAAU,EAAE,KAAK;YACjB,YAAY;YACZ,YAAY;YACZ,IAAI;YACJ,MAAM;AACN,YAAA,OAAO,EAAE,cAAc;AACvB,YAAA,OAAO,EAAE,cAAc;AACvB,YAAA,QAAQ,EAAE,mBAAmB;YAC7B;AACD,SAAA,CAAkC;AAEnC,QAAA,WAAW,GAAG,+BAA+B,CAAC,WAAW,EAAE,kBAAkB,CAAC;IAChF;SAAO,IAAI,WAAW,CAAC,IAAI,IAAI,WAAW,CAAC,IAAI,KAAK,WAAW,EAAE;QAC/D,kBAAkB,GAAG,WAAW,CAAC;YAC/B,WAAW;AACX,YAAA,IAAI,EAAE,kBAAkB,CAAC,CAAC,CAAC;YAC3B,UAAU,EAAE,SAAS,IAAI,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,aAAa;YACrD;AACD,SAAA,CAAC;AAEF,QAAA,WAAW,GAAG,+BAA+B,CAAC,WAAW,EAAE,kBAAkB,CAAC;IAChF;IAEA,IAAI,mBAAmB,EAAE;AACvB,QAAA,cAAc,GAAG,cAAc,CAAC,MAAM,CAAC,mBAAmB,CAAC;QAC3D,WAAW,GAAG,WAAW,CAAC,MAAM,CAAC,CAAC,CAAiB,EAAE,CAAC,KAAI;AACxD,YAAA,OAAO,CAAC,CAAC,CAAC,UAAU,IAAI,mBAAmB,CAAC,CAAC,CAAC,UAAU,EAAE,CAAC,EAAE,EAAE,CAAC;AAClE,QAAA,CAAC,CAAC;IACJ;IACA,IAAI,oBAAoB,EAAE;AACxB,QAAA,WAAW,GAAG,WAAW,CAAC,MAAM,CAAC,oBAAoB,CAAC;IACxD;IACA,IAAI,uBAAuB,EAAE;AAC3B,QAAA,kBAAkB,GAAG,kBAAkB,CAAC,MAAM,CAAC,uBAAuB,CAAC;QACvE,WAAW,GAAG,WAAW,CAAC,MAAM,CAAC,CAAC,CAAiB,EAAE,CAAC,KAAI;AACxD,YAAA,OAAO,CAAC,CAAC,CAAC,aAAa,IAAI,uBAAuB,CAAC,CAAC,CAAC,aAAa,EAAE,CAAC,EAAE,EAAE,CAAC;AAC5E,QAAA,CAAC,CAAC;IACJ;IAEA,OAAO;AACL,QAAA,OAAO,EAAE,YAAY;AACrB,QAAA,OAAO,EAAE,YAAY;QACrB,cAAc;QACd,eAAe;QACf,kBAAkB;QAClB,WAAW;QACX,iBAAiB;QACjB;KACD;AACH,CAAC;AAED,MAAM,eAAe,GAAG,CAAC,SAAS,EAAE,IAAI,KAAI;AAC1C,IAAA,IACE,CAAC,sBAAsB,CAAC,SAAS,CAAC;SACjC,SAAS,KAAK,YAAY,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC,CAAC,EACjD;AACA,QAAA,OAAO,MAAM;IACf;AACA,IAAA,OAAO,SAAS;AAClB,CAAC;AAED,SAAS,kBAAkB,CAAC,QAAQ,EAAE,OAAO,EAAA;IAC3C,OAAO,CAAC,IAAI,KACV,sBAAsB,CAAC,eAAe,CAAC,QAAQ,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC,CAAA,MAAA,CAAA,MAAA,CAAA,MAAA,CAAA,MAAA,CAAA,MAAA,CAAA,MAAA,CAAA,EAAA,EACvD,QAAQ,GACR,OAAO,CAAA,EAAA,EACV,IAAI,EAAA,CAAA,CACJ;AACN;;ACznBA,MAAM,MAAM,GAAG,CAAC,UAAU,KACxB,UAAU,CAAC,MAAM,CACf,CAAC,CAAC,EAAE,CAAC,KAAI;IACP,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AAC/C,CAAC,EACD,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,CACtB;AAwDH,MAAM,eAAe,GAAG,CAAC,QAAQ,KAAI;IACnC,IAAI,KAAK,GAAG,IAAI;IAChB,IAAI,MAAM,GAAG,KAAK;AAClB,IAAA,IAAI,OAAO,QAAQ,KAAK,QAAQ,EAAE;QAChC,KAAK,GAAG,QAAQ;IAClB;AAAO,SAAA,IAAI,OAAO,IAAI,QAAQ,EAAE;AAC9B,QAAA,KAAK,GAAG,QAAQ,CAAC,KAAK;AACtB,QAAA,MAAM,GAAG,QAAQ,CAAC,MAAM,IAAI,KAAK;IACnC;SAAO;QACL,KAAK,GAAG,QAAQ;IAClB;AAEA,IAAA,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE;AAC1B,CAAC;AAED,SAAS,YAAY,CAAC,MAAc,EAAA;IAClC,OAAO,IAAI,CAAC,KAAK,CAAC,MAAM,GAAG,EAAE,CAAC,GAAG,EAAE;AACrC;AAEO,MAAM,UAAU,GAAG,CAAC,EAAU,EAAE,EAAU,EAAE,CAAS,KAC1D,CAAA,EAAG;IACD,GAAG;AACH,IAAA,YAAY,CAAC,EAAE,GAAG,CAAC,CAAC;IACpB,YAAY,CAAC,EAAE,CAAC;IAChB,GAAG;IACH,CAAC;IACD,CAAC;IACD,CAAC;IACD,CAAC;IACD,CAAC;AACD,IAAA,CAAC,GAAG,CAAC;IACL,CAAC;IACD,GAAG;IACH,CAAC;IACD,CAAC;IACD,CAAC;IACD,CAAC;IACD,CAAC;AACD,IAAA,EAAE,CAAC,GAAG,CAAC,CAAC;IACR;AACD,CAAA,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG;AAmBT,MAAM,eAAe,GAAG,CAAC,EAC9B,MAAM,EACN,IAAI,EACJ,KAAK,EAAE,QAAQ,EACf,MAAM,EACN,UAAU,EACV,IAAI,EACiB,KAAgB;AACrC,IAAA,IAAI,MAAM,KAAK,SAAS,EAAE;AACxB,QAAA,IAAI,OAAO,MAAM,KAAK,UAAU,EAAE;AAChC,YAAA,MAAM,GAAG,MAAM,CAAC,EAAE,IAAI,EAAE,CAAC;QAC3B;AACA,QAAA,IAAI,OAAO,MAAM,KAAK,QAAQ,EAAE;AAC9B,YAAA,OAAO,EAAE,GAAG,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE;QACrE;AAAO,aAAA,IAAI,OAAO,MAAM,KAAK,QAAQ,EAAE;YACrC,OAAO,MAAM,CAAC,MAAM,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,EAAE,MAAM,CAAC;QACxE;IACF;AACA,IAAA,MAAM,WAAW,GAAG,EAAE,GAAG,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE;IAE5D,IAAI,MAAM,GAAG,MAAM;AAEnB,IAAA,IAAI,IAAI,IAAI,UAAU,KAAK,QAAQ,EAAE;AACnC,QAAA,IAAI,CAAC,OAAO,CAAC,CAAC,OAAO,KAAI;AACvB,YAAA,MAAM,qBAAqB,GAAG,OAAO,CAAC,KAAK,GAAG,EAAE,GAAG,EAAE;AACrD,YAAA,MAAM,GAAG,OAAO,CAAC,MAAM;AACvB,YAAA,WAAW,CAAC,MAAM,CAAC,GAAG,qBAAqB;AAC7C,QAAA,CAAC,CAAC;IACJ;AAEA,IAAA,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,WAAW,EAAE,GAAG,eAAe,CAAC,QAAQ,CAAC;AAEhE,IAAA,IAAI,KAAK,IAAI,EAAE,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,CAAC,EAAE;AAC/D,QAAA,WAAW,CAAC,WAAW,CAAC,IAAI,EAAE;IAChC;AAEA,IAAA,IAAI,MAAM,IAAI,UAAU,KAAK,QAAQ,EAAE;QACrC,IAAI,MAAM,KAAK,QAAQ,IAAI,MAAM,KAAK,KAAK,EAAE;AAC3C,YAAA,WAAW,CAAC,IAAI,IAAI,EAAE;QACxB;aAAO;AACL,YAAA,WAAW,CAAC,MAAM,IAAI,EAAE;QAC1B;IACF;AACA,IAAA,OAAO,WAAW;AACpB,CAAC;AAMK,SAAU,aAAa,CAC3B,IAAwC,EAAA;IAExC,IAAI,IAAI,YAAY,QAAQ,IAAI,OAAO,IAAI,KAAK,QAAQ,EAAE;AACxD,QAAA,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE;IACvB;AAAO,SAAA,IAAI,IAAI,KAAK,SAAS,EAAE;AAC7B,QAAA,OAAO,EAAE;IACX;AACA,IAAA,OAAO,IAAI;AACb;AA+BM,SAAU,sBAAsB,CAAC,EACrC,IAAI,EACJ,SAAS,GAAG,CAAC,CAAmB,EAAE,CAAU,KAAK,CAAC,EAClD,SAAS,EACT,SAAS,EAAE,aAAa,EACxB,iBAAiB,EACjB,iBAAiB,EACjB,SAAS,GAAG,KAAK,EASlB,EAAA;AACC,IAAA,IAAI,SAAS;AACb,IAAA,IAAI,YAAY;IAChB,IAAI,SAAS,IAAI,aAAa,CAAC,MAAM,GAAG,CAAC,EAAE;QACzC,IAAI,WAAW,GAAG,QAAQ;QAC1B,YAAY,GAAG,aAAa,CAAC,GAAG,CAAC,CAAC,QAAQ,KAAI;YAC5C,MAAM,WAAW,GAAG,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;AAC9C,YAAA,WAAW,GAAG,IAAI,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC,CAAC,GAAG,WAAW,CAAC,CAAC,CAAC,EAAE,WAAW,CAAC;AACpE,YAAA,OAAO,WAAW;AACpB,QAAA,CAAC,CAAC;QACF,MAAM,OAAO,GAAG,YAAY,CAAC,GAAG,CAAC,CAAC,GAAG,KAAI;AACvC,YAAA,IAAI,KAAK,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC;YAClB,IAAI,cAAc,GAAG,GAAG;AAExB,YAAA,IAAI,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE;AAC5B,gBAAA,KAAK,CAAC,CAAC,CAAC,GAAG,WAAW;gBACtB,cAAc,CAAC,CAAC,CAAC,GAAG,cAAc,CAAC,CAAC,CAAC,GAAG,WAAW;YACrD;AAAO,iBAAA,IAAI,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE;AACnC,gBAAA,cAAc,CAAC,CAAC,CAAC,GAAG,CAAC;AACrB,gBAAA,KAAK,GAAG,CAAC,EAAE,EAAE,CAAC,CAAC;YACjB;iBAAO;AACL,gBAAA,cAAc,CAAC,CAAC,CAAC,GAAG,CAAC;YACvB;AACA,YAAA,OAAOrB,mBAAW,EAAE,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC;AAC/C,QAAA,CAAC,CAAC;AACF,QAAA,SAAS,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,CAAC,KAAK,CAAC,CAAC,KAAI;YAC1C,OAAO,KAAK,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AACnC,QAAA,CAAC,CAAC;IACJ;SAAO;QACL,SAAS,GAAG,aAAa;IAC3B;IACA,MAAM,aAAa,GASb,EAAE;IACR,SAAS,CAAC,OAAO,CAAC,CAAC,eAAe,EAAE,MAAM,KAAI;QAC5C,SAAS,CAAC,OAAO,CAAC,CAAC,eAAe,EAAE,MAAM,KAAI;YAC3C,CAAC,IAAI,IAAI,EAAE,EAAE,OAAO,CAAC,CAAC,CAAC,KAAI;gBAC1B,MAAM,cAAc,GAAG,SAAS,CAAC,CAAC,EAAE,aAAa,CAAC,MAAM,CAAC;AACzD,gBAAA,MAAM,UAAU,GACd,CAAC,cAAc,KAAK,SAAS;AAC3B,oBAAA,cAAc,CAAC,QAAQ;oBACvB,cAAc,CAAC,QAAQ,EAAE;AAC3B,oBAAA,cAAc;AAEhB,gBAAA,MAAM,SAAS,GAAG,iBAAiB,CAAC,MAAM,CAAC;AAC3C,gBAAA,MAAM,SAAS,GAAG,iBAAiB,CAAC,MAAM,CAAC;AAC3C,gBAAA,MAAM,KAAK,GACT,OAAO,SAAS,KAAK,QAAQ,GAAG,SAAS,GAAG,CAAA,SAAA,EAAY,MAAM,EAAE;AAClE,gBAAA,MAAM,KAAK,GACT,OAAO,SAAS,KAAK,QAAQ,GAAG,SAAS,GAAG,CAAA,SAAA,EAAY,MAAM,EAAE;AAElE,gBAAA,IAAI,OAAO,CAAC,KAAK,QAAQ,EAAE;oBACzB,MAAM,YAAY,GAAG,EAAE,KAAK,EAAE,CAAC,EAAE,SAAS,EAAE,UAAU,EAAE;AACxD,oBAAA,MAAM,KAAK,GAAG,eAAe,CAAC,YAAY,CAAC;oBAC3C,aAAa,CAAC,IAAI,CAAC;AACjB,wBAAA,IAAI,EAAE,YAAY;wBAClB,KAAK;wBACL,MAAM;wBACN,KAAK;wBACL,MAAM;wBACN,KAAK;AACL,wBAAA,MAAM,EAAE,UAAU;AAClB,wBAAA,SAAS,EAAE;AACZ,qBAAA,CAAC;gBACJ;qBAAO;AACL,oBAAA,MAAM,KAAK,GAAG,eAAe,CAAC,CAAC,CAAC;AAChC,oBAAA,MAAM,MAAM,GAAG,eAAe,CAAC,CAAC,CAAC;oBACjC,aAAa,CAAC,IAAI,CAAC;AACjB,wBAAA,SAAS,EAAE,UAAU;AACrB,wBAAA,IAAI,EAAE,CAAC;wBACP,MAAM;wBACN,KAAK;wBACL,MAAM;wBACN,KAAK;wBACL,KAAK;AACL,wBAAA,MAAM,EAAE,MAAM,IAAI,MAAM,CAAC,QAAQ,GAAG,MAAM,CAAC,QAAQ,EAAE,GAAG;AACzD,qBAAA,CAAC;gBACJ;AACF,YAAA,CAAC,CAAC;AACJ,QAAA,CAAC,CAAC;AACJ,IAAA,CAAC,CAAC;AACF,IAAA,OAAO,EAAE,OAAO,EAAE,aAAa,EAAE,YAAY,EAAE;AACjD;AAEM,SAAU,oBAAoB,CAAC,EACnC,IAAI,GAAG,CAAC,GAAG,EAAE,GAAG,CAAC,EACjB,QAAQ,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,EACjB,MAAM,EACN,UAAU,EACgB,EAAA;IAC1B,MAAM,YAAY,GAAG,MAAM,CAAC,GAAG,GAAG,MAAM,CAAC,MAAM;IAC/C,MAAM,WAAW,GAAG,MAAM,CAAC,IAAI,GAAG,MAAM,CAAC,KAAK;AAE9C,IAAA,MAAM,gBAAgB,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,QAAQ,CAAC,CAAC,CAAC,CAAC;AACnD,IAAA,IAAI,YAAY,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,WAAW,EAAE,IAAI,CAAC,CAAC,CAAC,GAAG,YAAY,CAAC;AAClE,IAAA,IAAI,UAAU,KAAK,QAAQ,EAAE;AAC3B,QAAA,MAAM,OAAO,GAAG,IAAI,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC,CAAC,EAAE,YAAY,CAAC,CAAC,CAAC,CAAC;AAC1D,QAAA,YAAY,GAAG,CAAC,OAAO,EAAE,OAAO,CAAC;IACnC;AAEA,IAAA,OAAO,EAAE,gBAAgB,EAAE,YAAY,EAAE;AAC3C;SAEgB,kBAAkB,CAAC,EACjC,KAAK,EAAE,QAAQ,GAAG,EAAE,KAAK,EAAE,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,EAC9C,IAAI,EAIL,EAAA;IACC,IAAI,UAAU,GAAG,IAAI;IAErB,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,eAAe,CAAC,QAAQ,CAAC;IAEnD,IAAI,CAAC,GAAG,CAAC,EACP,CAAC,GAAG,CAAC,EACL,SAAS;IACX,QAAQ,MAAM;AACZ,QAAA,KAAK,KAAK;AACR,YAAA,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC;YACf,CAAC,GAAG,EAAE;YACN;AACF,QAAA,KAAK,QAAQ;AACX,YAAA,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC;AACf,YAAA,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,GAAG,EAAE;YAChB;AACF,QAAA,KAAK,MAAM;YACT,CAAC,GAAG,EAAE;AACN,YAAA,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC;YACf,SAAS,GAAG,aAAa;YACzB;AACF,QAAA,KAAK,OAAO;AACV,YAAA,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,GAAG,EAAE;AAChB,YAAA,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC;YACf,SAAS,GAAG,YAAY;YAExB;;AAEJ,IAAA,MAAM,UAAU,GAAG,CAAA,UAAA,EAAa,CAAC,CAAA,CAAA,EAAI,CAAC,GAAG;IACzC,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE;AACjD,QAAA,UAAU,IACRJ,gBAAA,CAAA,aAAA,CAAA,GAAA,EAAA,EAAG,SAAS,EAAE,UAAU,EAAA;YACtBA,gBAAA,CAAA,aAAA,CAAA,MAAA,EAAA,EACE,SAAS,EAAE,aAAa,EACxB,SAAS,EAAE,SAAS,EACpB,KAAK,EAAE,EAAE,UAAU,EAAE,QAAQ,EAAE,aAAa,EAAE,MAAM,EAAE,IAErD,KAAK,CACD,CACL,CACL;IACH;SAAO,IAAI,KAAK,EAAE;;QAEhB,UAAU,GAAGA,sCAAG,SAAS,EAAE,UAAU,EAAA,EAAG,KAAK,CAAK;IACpD;AACA,IAAA,OAAO,UAAU;AACnB;AAEM,SAAU,yBAAyB,CAAC,EACxC,IAAI,EACJ,IAAI,EACJ,UAAU,EACV,uBAAuB,EACvB,OAAO,EACP,OAAO,EACP,UAAU,EACV,YAAY,EACZ,aAAa,EACb,SAAS,EACsB,EAAA;AAC/B,IAAA,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE;AACd,QAAA,OAAO,IAAI;IACb;IACA,MAAM,sBAAsB,GAAG,EAAE;AACjC,IAAA,MAAM,QAAQ,GAAG,IAAI,GAAG,EAAE;AAE1B,IAAA,MAAM,EAAE,SAAS,EAAE,OAAO,EAAE,GAAG,IAAI;AAEnC,IAAA,IAAI,OAAO,IAAI,CAAC,IAAI,KAAK,UAAU,EAAE;AACnC,QAAA,MAAM,cAAc,GAAG,IAAI,CAAC,IAAI;QAChC,MAAM,IAAI,GAAG,OAAO;QAEpB,OAAO,CAAC,OAAO,CAAC,CAAC,GAAG,EAAE,WAAW,KAAI;AACnC,YAAA,MAAM,UAAU,GAAG,SAAS,CAAC,GAAG,CAAC;YACjC,MAAM,UAAU,GAAG,SAAS,CAAC,IAAI,CAAC,WAAW,GAAG,CAAC,CAAC,CAAC;YACnD,IAAI,UAAU,EAAE;AACd,gBAAA,MAAM,UAAU,GAAG,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,KACrC,cAAc,CAAA,MAAA,CAAA,MAAA,CAAA,MAAA,CAAA,MAAA,CAAA,EAAA,EAAM,CAAC,CAAC,KAAK,CAAA,EAAK,CAAC,CAAC,KAAK,CAAC,IAAI,CAAA,EAAI,CAAC,CAAC,CACnD;gBACD,UAAU,CAAC,OAAO,CAAC,CAAC,KAAK,EAAE,MAAM,KAAI;AACnC,oBAAA,MAAM,mBAAmB,GAAG,cAAc,CAAA,MAAA,CAAA,MAAA,CAAA,MAAA,CAAA,MAAA,CAAA,EAAA,EACnC,KAAK,CAAC,KAAK,CAAA,EAAK,KAAK,CAAC,KAAK,CAAC,IAAI,CAAA,EACrC,MAAM,CACP;AACD,oBAAA,MAAM,WAAW,GAAG,cAAc,CAAA,MAAA,CAAA,MAAA,CAAA,MAAA,CAAA,MAAA,CAAA,EAAA,EAC3B,KAAK,CAAC,KAAK,CAAA,EAAK,KAAK,CAAC,KAAK,CAAC,IAAI,CAAA,EACrC,MAAM,CACP;AAED,oBAAA,MAAM,kBAAkB,GACtB,WAAW,KAAK,SAAS;AACzB,wBAAA,WAAW,KAAK,KAAK;AACrB,wBAAA,UAAU,CAAC,OAAO,CAAC,WAAW,CAAC;oBACjC,IACE,mBAAmB,KAAK,SAAS;AACjC,wBAAA,mBAAmB,KAAK,IAAI;AAC5B,wBAAA,kBAAkB,KAAK,KAAK;AAC5B,wBAAA,kBAAkB,KAAK,EAAE,EACzB;AACA,wBAAA,MAAM,aAAa,GAAG,UAAU,CAAC,kBAAkB,CAAC;AACpD,wBAAA,IAAI,KAAK;wBACT,IAAI,UAAU,KAAK,QAAQ,IAAI,SAAS,CAAC,IAAI,KAAK,OAAO,EAAE;4BACzD,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE;gCACxB,QAAQ,CAAC,GAAG,CAAC,KAAK,EAAE,CAAC,KAAK,CAAC,CAAC;4BAC9B;4BACA,MAAM,SAAS,GAAG,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC;4BACrC,IAAI,SAAS,EAAE;AACb,gCAAA,SAAS,CAAC,IAAI,CAAC,aAAa,CAAC;AAC7B,gCAAA,QAAQ,CAAC,GAAG,CAAC,aAAa,EAAE,SAAS,CAAC;AACtC,gCAAA,QAAQ,CAAC,MAAM,CAAC,KAAK,CAAC;4BACxB;wBACF;6BAAO;AACL,4BAAA,MAAM,EAAE,EAAE,EAAE,GAAG,KAAK;AACpB,4BAAA,MAAM,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,aAAa;AACjC,4BAAA,MAAM,EAAE,CAAC,EAAE,CAAC,EAAE,MAAM,GAAG,CAAC,EAAE,KAAK,GAAG,CAAC,EAAE,GAAG,EAAE;4BAC1C,MAAM,EACJ,CAAC,EAAE,EAAE,EACL,CAAC,EAAE,EAAE,EACL,MAAM,EAAE,OAAO,GAAG,CAAC,EACnB,KAAK,EAAE,MAAM,GAAG,CAAC,EAClB,GAAG,GAAG;AACP,4BAAA,IAAI,UAAU,KAAK,UAAU,EAAE;gCAC7B,KAAK,GAAG,iBAAiB,CAAC;oCACxB,EAAE,EAAE,CAAC,GAAG,KAAK;AACb,oCAAA,EAAE,EAAE,EAAE;AACN,oCAAA,EAAE,EAAE,CAAC;AACL,oCAAA,EAAE,EAAE,EAAE;AACN,oCAAA,MAAM,EAAE,CAAC;AACT,oCAAA,MAAM,EAAE,CAAC;AACT,oCAAA,MAAM,EAAE,MAAM;AACd,oCAAA,MAAM,EAAE;AACT,iCAAA,CAAC;4BACJ;AAAO,iCAAA,IAAI,UAAU,KAAK,YAAY,EAAE;AACtC,gCAAA,MAAM,EAAE,KAAK,EAAE,GAAG,KAAK,CAAC,KAAK;gCAC7B,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,aAAa,CAAC,KAAK;gCAC7C,MAAM,EAAE,GAAG,KAAK,IAAI,CAAC,GAAG,CAAC,GAAG,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC,MAAM,GAAG,KAAK;AAC9D,gCAAA,MAAM,EAAE,GACN,MAAM,IAAI;sCACN,EAAE,GAAG;sCACL,aAAa,CAAC,KAAK,CAAC,MAAM,GAAG,MAAM;gCACzC,KAAK,GAAG,iBAAiB,CAAC;oCACxB,EAAE;oCACF,EAAE;oCACF,EAAE,EAAE,CAAC,GAAG,MAAM;AACd,oCAAA,EAAE,EAAE,EAAE;AACN,oCAAA,MAAM,EAAE,KAAK;AACb,oCAAA,MAAM,EAAE,MAAM;AACd,oCAAA,MAAM,EAAE,CAAC;AACT,oCAAA,MAAM,EAAE;AACT,iCAAA,CAAC;4BACJ;AAAO,iCAAA,IAAI,UAAU,KAAK,QAAQ,EAAE;gCAClC,KAAK,GAAG,iBAAiB,CAAC;AACxB,oCAAA,EAAE,EAAE,CAAC;AACL,oCAAA,EAAE,EAAE,EAAE;oCACN,EAAE,EAAE,CAAC,GAAG,MAAM;AACd,oCAAA,EAAE,EAAE,EAAE;AACN,oCAAA,MAAM,EAAE,KAAK;AACb,oCAAA,MAAM,EAAE,MAAM;AACd,oCAAA,MAAM,EAAE,CAAC;AACT,oCAAA,MAAM,EAAE;AACT,iCAAA,CAAC;4BACJ;AACA,4BAAoB,UAAU,IAAI,UAAU,CAAC,KAAK,CAAC,KAAK,EAAE,MAAM;AAChE,4BAAA,MAAM,MAAM,GAAA,MAAA,CAAA,MAAA,CAAA,MAAA,CAAA,MAAA,CAAA,EAAA,EAAQ,KAAK,CAAC,KAAK,CAAC,IAAI,CAAA,EAAK,KAAK,CAAC,KAAK,CAAC,IAAI,CAAE;AAC3D,4BAAA,MAAM,MAAM,GAAA,MAAA,CAAA,MAAA,CAAA,MAAA,CAAA,MAAA,CAAA,EAAA,EACP,aAAa,CAAC,KAAK,CAAA,EACnB,aAAa,CAAC,KAAK,CAAC,IAAI,CAC5B;4BACD,MAAM,eAAe,GAAG,OAAO,CAAC;gCAC9B,MAAM;gCACN;AACD,6BAAA,CAAC;AAEF,4BAAA,MAAM,cAAc,GAAG,uBAAuB,CAC5C,EAAE,MAAM,EAAE,MAAM,EAAE,EAClB,MAAM,CACP;4BACD,IAAI,YAAY,IAAI,YAAY,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,IAAI,EAAE;AACtD,gCAAA,MAAM,eAAe,GAAG;AACtB,oCAAA,SAAS,EAAE,cAAc;AACzB,oCAAA,EAAE,EAAE,CAAC;AACL,oCAAA,EAAE,EAAE,CAAC;AACL,oCAAA,CAAC,EAAE;wCACD,MAAM;wCACN;AACD,qCAAA;oCACD,SAAS,EAAE,EAAE,CAAC,EAAE,KAAK,EAAE,QAAQ,EAAE,MAAM,EAAE;AACzC,oCAAA,OAAO,EAAE,OAAO;AAChB,oCAAA,QAAQ,EAAE,UAAU;oCACpB;iCACD;AACD,gCAAA,aAAa,CAAC,IAAI,CAAC,eAAe,CAAC;4BACrC;iCAAO;gCACL,sBAAsB,CAAC,IAAI,CACzBA,gBAAA,CAAA,aAAA,CAAA,MAAA,EAAA,MAAA,CAAA,MAAA,CAAA,EAAA,EACM,cAAc,EAAA,EAClB,CAAC,EAAE,KAAK,EACR,SAAS,EAAE,OAAO,GAAG,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,EAAE,MAAM,CAAC,GAAG,EAAE,EAC3D,GAAG,EAAE,CAAA,SAAA,EAAY,KAAK,CAAC,KAAK,CAAC,SAAS,CAAA,CAAE,IACpC,eAAe,EAAA,EACnB,KAAK,EAAE,eAAe,EAAA,CAAA,CACtB,CACH;4BACH;wBACF;oBACF;AACF,gBAAA,CAAC,CAAC;YACJ;AACF,QAAA,CAAC,CAAC;AAEF,QAAA,IAAI,QAAQ,CAAC,IAAI,GAAG,CAAC,EAAE;YACrB,KAAK,MAAM,IAAI,IAAI,QAAQ,CAAC,MAAM,EAAE,EAAE;AACpC,gBAAA,MAAM,SAAS,GAAA,MAAA,CAAA,MAAA,CAAA,MAAA,CAAA,MAAA,CAAA,EAAA,EAAQ,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,CAAA,EAAK,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAE;AAC7D,gBAAA,MAAM,KAAK,GAAG,CAAA,CAAA,EAAI,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAA,EAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAA,CAAA,EAAI,CAAC,CAAC,EAAE,CAAC,CAAC,CAAA,CAAE,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG;AACrE,gBAAA,IAAI,YAAY,IAAI,YAAY,CAAC,SAAS,CAAC,EAAE;AAC3C,oBAAA,MAAM,WAAW,GAAG;AAClB,wBAAA,SAAS,EAAE,eAAe;AAC1B,wBAAA,EAAE,EAAE,CAAC;AACL,wBAAA,EAAE,EAAE,CAAC;AACL,wBAAA,CAAC,EAAE;AACD,4BAAA,MAAM,EAAE;AACT,yBAAA;wBACD,SAAS,EAAE,EAAE,CAAC,EAAE,KAAK,EAAE,QAAQ,EAAE,MAAM,EAAE;AACzC,wBAAA,OAAO,EAAE,OAAO;AAChB,wBAAA,QAAQ,EAAE,UAAU;wBACpB;qBACD;AACD,oBAAA,aAAa,CAAC,IAAI,CAAC,WAAW,CAAC;gBACjC;qBAAO;oBACL,MAAM,KAAK,GAAG,OAAO,CAAC;AACpB,wBAAA,MAAM,EAAE;AACT,qBAAA,CAAC;AACF,oBAAA,sBAAsB,CAAC,IAAI,CACzBA,gBAAA,CAAA,aAAA,CAAA,MAAA,EAAA,MAAA,CAAA,MAAA,CAAA,EACE,CAAC,EAAE,KAAK,EACR,SAAS,EAAE,OAAO,GAAG,OAAO,CAAC,SAAS,CAAC,GAAG,EAAE,EAC5C,GAAG,EAAE,CAAA,aAAA,EAAgB,SAAS,CAAC,SAAS,CAAA,CAAE,EAAA,EACtC,KAAK,EAAA,EACT,KAAK,EAAE,KAAK,EAAA,CAAA,CACZ,CACH;gBACH;YACF;QACF;IACF;AAAO,SAAA,IAAI,IAAI,CAAC,IAAI,EAAE;AACpB,QAAA,OAAO,CAAC,KAAK,CACX,CAAA,uIAAA,CAAyI,CAC1I;IACH;AACA,IAAA,OAAO,sBAAsB;AAC/B;AAEO,MAAM,oBAAoB,GAAG,CAAC,EACnC,UAAU,EACV,IAAI,EACJ,YAAY,EACZ,IAAI,EACJ,MAAM,EACN,UAAU,EACV,SAAS,EACT,OAAO,EACP,IAAI,EACJ,eAAe,GAAG,CAAC,EACnB,MAAM,EACN,MAAM,EACN,UAAU,EACgB,KAAI;AAC9B,IAAA,IAAI,CAAC,IAAI;QAAE,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE,aAAa,EAAE,SAAS,EAAE;IAC/D,IAAI,aAAiC,EAAE,aAA4B;AACnE,IAAA,IAAI,UAAU,KAAK,QAAQ,IAAI,IAAI,EAAE;QACnC,aAAa,GAAG,EAAE;AAClB,QAAA,MAAM,YAAY,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC;QAE3B,aAAa,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,KAAI;AAChC,YAAA,IAAI,aAAa,GAAG,CAAC,CAAC,SAAS,IAAI,EAAE;AACrC,YAAA,IAAI,UAAU;AACd,YAAA,MAAM,UAAU,GAAG,CAAC,CAAC,cAAc,GAAG,CAAC,CAAC,cAAc,GAAG,MAAM,CAAC,MAAM,EAAE;AAExE,YAAA,MAAM,SAAS,GAAG,CAAC,MAAM,EAAE,OAAO,CAAC;AAEnC,YAAA,MAAM,SAAS,GACb,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,EAAE,IAAI,UAAU,KAAK,UAAU;AAChE,iBAAC,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,EAAE,IAAI,UAAU,KAAK,YAAY;AAChE,kBAAE,UAAU,CAAC,MAAM,CAAC,UAAU;kBAC5B,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,eAAe,CAAC,CAAC;AAE7C,YAAA,MAAM,MAAM,GAAG,CAAC,CAAC,MAAM;AACvB,YAAA,MAAM,SAAS,GACb,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,EAAE,IAAI,UAAU,KAAK,UAAU;AAChE,iBAAC,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,EAAE,IAAI,UAAU,KAAK,YAAY;AAChE,kBAAE,MAAM,CAAC,KAAK;kBACZ,CAAC,CAAC,EAAE,UAAU,KAAK,UAAU,GAAG,YAAY,CAAC,CAAC,CAAC,GAAG,YAAY,CAAC,CAAC,CAAC,CAAC;AAExE,YAAA,IAAI,MAAM,KAAK,OAAO,EAAE;gBACtB,SAAS,CAAC,KAAK,CAAC,SAAS,CAAC,OAAO,EAAE,CAAC;gBACpC,aAAa,IAAI,UAAU;YAC7B;AAAO,iBAAA,IAAI,MAAM,KAAK,MAAM,EAAE;gBAC5B,aAAa,IAAI,SAAS;gBAC1B,SAAS,CAAC,KAAK,CAAC,SAAS,CAAC,OAAO,EAAE,CAAC;YACtC;AAAO,iBAAA,IAAI,MAAM,KAAK,KAAK,EAAE;gBAC3B,aAAa,IAAI,QAAQ;AACzB,gBAAA,SAAS,CAAC,KAAK,CAAC,SAAS,CAAC;YAC5B;AAAO,iBAAA,IAAI,MAAM,KAAK,QAAQ,EAAE;gBAC9B,aAAa,IAAI,WAAW;AAC5B,gBAAA,SAAS,CAAC,KAAK,CAAC,SAAS,CAAC;YAC5B;AAEA,YAAA,IAAI,CAAC,CAAC,UAAU,IAAI,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,UAAU,CAAC,EAAE;AAC/C,gBAAA,UAAU,GAAG,CAAC,CAAC,UAAU;YAC3B;AAAO,iBAAA,IAAI,CAAC,CAAC,UAAU,YAAY,QAAQ,EAAE;;gBAE3C,UAAU,GAAG,CAAC,CAAC,UAAU,CAAC,IAAI,EAAE,IAAI,EAAE,MAAM,CAAC;YAC/C;AAAO,iBAAA,IAAI,CAAC,CAAC,CAAC,UAAU,IAAI,UAAU,EAAE;AACtC,gBAAA,UAAU,GAAG,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;YACtD;YACA,MAAM,SAAS,GAAG,UAAU,CAAC;gBAC3B,OAAO,EAAE,CAAC,CAAC,OAAO;gBAClB,UAAU;AACV,gBAAA,KAAK,EAAE,SAAS;gBAChB,KAAK,EAAE,CAAC,CAAC,KAAK;gBACd,MAAM;AACN,gBAAA,IAAI,EAAE,YAAY;gBAClB,MAAM,EAAE,CAAC,CAAC,MAAM;gBAChB,QAAQ,EAAE,CAAC,CAAC,QAAQ;gBACpB,UAAU,EAAE,CAAC,CAAC;AACf,aAAA,CAAC;YACF,MAAM,aAAa,GAAG,SAAS,CAAC;gBAC9B,SAAS,EAAE,CAAC,CAAC,SAAS;gBACtB,SAAS;gBACT,MAAM;gBACN,iBAAiB,EAAE,CAAC,CAAC,iBAAiB;gBACtC,UAAU,EAAE,CAAC,CAAC,UAAU;AACxB,gBAAA,KAAK,EAAE;AACR,aAAA,CAAC;AAEF,YAAA,aAAa,CAAC,IAAI,CAAC,aAAa,CAAC;AACjC,YAAA,IAAI,CAAC,CAAC,QAAQ,KAAK,OAAO,EAAE;AAC1B,gBAAA,aAAa,CAAC,IAAI,CAChB,iBAAiB,CAAC,CAAC,CAAC,MAAM,EAAE,YAAY,EAAE,CAAC,CAAC,SAAS,CAAC,CACvD;YACH;AAEA,YAAA,MAAM,mBAAmB,GACvB,OAAO,CAAC,CAAC,mBAAmB,KAAK;AAC/B,kBAAE,EAAE,IAAI,EAAE,CAAC,CAAC,mBAAmB;AAC/B,kBAAE,CAAC,CAAC,mBAAmB;AAE3B,YAAA,QACEA,gBAAA,CAAA,aAAA,CAAC,IAAI,EAAA,MAAA,CAAA,MAAA,CAAA,EAAA,EACC,CAAC,EAAA,EACL,GAAG,EAAE,CAAC,CAAC,GAAG,IAAI,CAAA,aAAA,EAAgB,CAAC,CAAA,CAAE,EACjC,SAAS,EAAE,SAAS,EACpB,MAAM,EAAE,MAAM,EACd,IAAI,EAAE,YAAY,EAClB,QAAQ,EAAE,YAAY,EACtB,UAAU,EAAE,UAAU,EACtB,KAAK,EAAE,SAAS,EAChB,SAAS,EAAE,aAAa,EACxB,mBAAmB,EAAE,mBAAmB,EACxC,MAAM,EAAE,MAAM,EACd,QAAQ,EAAE,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM;AAC3B,oBAAA,CAAC,EAAE,UAAU,KAAK,UAAU,GAAG,CAAC,GAAG,CAAC,CAAC,KAAK;AAC1C,oBAAA,CAAC,EAAE,UAAU,KAAK,UAAU,GAAG,CAAC,CAAC,KAAK,GAAG,CAAC;oBAC1C,IAAI,EAAE,CAAC,CAAC;iBACT,CAAC,CAAC,EAAA,CAAA,CACH;AAEN,QAAA,CAAC,CAAC;IACJ;AAAO,SAAA,IAAI,UAAU,KAAK,QAAQ,IAAI,IAAI,EAAE;AAC1C,QAAA,MAAM,EAAE,WAAW,GAAG,CAAC,EAAE,GAAG,SAAS;QAErC,MAAM,KAAK,GAAG,EAAE;AAChB,QAAA,IAAI,CAAC,OAAO,CAAC,CAAC,OAAO,KAAI;AACvB,YAAA,MAAM,EACJ,UAAU,EAAE,cAAc,GAAG,MAAM,CAAC,KAAK,CACvC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,YAAY,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,WAAW,IAAI,EAAE,CAAC,CACtD,EACD,KAAK,EACL,UAAU,GAAG,CAAC,CAAC,KAAK,CAAC,EACtB,GAAG,OAAO;YAEX,MAAM,SAAS,GAAG;iBACf,MAAM,CAAC,OAAO;AACd,iBAAA,KAAK,CAAC,CAAC,WAAW,EAAE,YAAY,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;AAE5C,YAAA,MAAM,UAAU,GACd,cAAc,YAAY;kBACtB,cAAc,CAAC;oBACb,MAAM,EAAE,OAAO,CAAC;iBACjB;kBACD,cAAc;YACpB,UAAU,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,KAAI;AAC1B,gBAAA,MAAM,QAAQ,GAAG,SAAS,CAAC,CAAC,CAAC;gBAC7B,IAAI,EAAE,WAAW,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE;AACnC,oBAAA,IAAI,SAAS;oBACb,IAAI,GAAG,GAAG,EAAE;oBACZ,IAAI,KAAK,IAAI,CAAC,KAAK,UAAU,CAAC,MAAM,GAAG,CAAC,EAAE;AACxC,wBAAA,MAAM,aAAa,GACjB,OAAO,KAAK,KAAK;8BACb,EAAe,gBAAgB,EAAE,EAAE;8BACnC,KAAK;AACX,wBAAA,MAAM,EAAE,gBAAgB,GAAG,EAAE,EAAE,GAAG,aAAa;wBAC/C,GAAG,GAAG,CAAA,EAAG,IAAI,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAA,CAAA,CAAG;wBACpC,SAAS,IACPA,gBAAA,CAAA,aAAA,CAAA,GAAA,EAAA,EACE,SAAS,EAAC,mBAAmB,EAC7B,SAAS,EAAE,CAAA,YAAA,EAAe,gBAAgB,CAAA,CAAA,CAAG,EAAA;4BAE7CA,gBAAA,CAAA,aAAA,CAAA,MAAA,EAAA,EAAM,UAAU,EAAC,QAAQ,EAAA;gCACvBA,gBAAA,CAAA,aAAA,CAAA,UAAA,EAAA,EACE,WAAW,EAAE,QAAQ,GAAG,IAAI,CAAC,EAAE,GAAG,GAAG,EACrC,SAAS,EAAE,CAAA,CAAA,EAAI,GAAG,CAAA,CAAE,EAAA,EAEnB,KAAK,CAAC,IAAI,CACF,CACN,CACL,CACL;oBACH;AACA,oBAAA,KAAK,CAAC,IAAI,CACRA,gBAAA,CAAA,aAAA,CAAA,GAAA,EAAA,EACE,GAAG,EAAE,CAAA,4BAAA,EAA+B,CAAC,CAAA,CAAE,EACvC,SAAS,EAAC,kCAAkC,EAC5C,SAAS,EAAE,CAAA,cAAA,CAAgB,EAAA;wBAE3BA,gBAAA,CAAA,aAAA,CAAA,MAAA,EAAA,EACE,EAAE,EAAE,GAAG,EACP,CAAC,EAAE,UAAU,CAAC,CAAC,EAAE,CAAC,EAAE,QAAQ,CAAC,EAC7B,CAAC,EAAE,QAAQ,EACX,MAAM,EAAC,MAAM,EACb,IAAI,EAAC,MAAM,EAAA,CACX;AACF,wBAAAA,gBAAA,CAAA,aAAA,CAAA,MAAA,EAAA,EAAM,CAAC,EAAE,CAAC,QAAQ,GAAG,CAAC,EAAE,UAAU,EAAC,QAAQ,EAAA,EACxC,UAAU,CAAC,CAAC,CAAC,CACT;wBACN,SAAS,CACR,CACL;gBACH;AACA,gBAAA,OAAO,SAAS;AAClB,YAAA,CAAC,CAAC;AACJ,QAAA,CAAC,CAAC;AAEF,QAAA,aAAa,GAAG;AACd,YAAAA,gBAAA,CAAA,aAAA,CAAA,GAAA,EAAA,EACE,GAAG,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG,IAAI,+BAA+B,EACnD,SAAS,EAAC,aAAa,EACvB,SAAS,EAAE,CAAA,UAAA,EAAa,YAAY,CAAC,CAAC,CAAC,GAAG,CAAC,CAAA,CAAA,EAAI,YAAY,CAAC,CAAC,CAAC,GAAG,CAAC,CAAA,CAAA,CAAG,EAAA,EAEpE,KAAK;SAET;IACH;AAEA,IAAA,OAAO,EAAE,IAAI,EAAE,aAAa,EAAE,aAAa,EAAE;AAC/C,CAAC;;ACrxBD,MAAM,YAAY,GAAG,CAAC,EACpB,OAAO,EACP,OAAO,EACP,YAAY,EACZ,UAAU,EACV,UAAU,EAOX,KAAI;IACH,MAAM,OAAO,GAAG,CAAC,CAAC,EAAE,YAAY,CAAC,CAAC,CAAC,CAAC;IACpC,MAAM,OAAO,GAAG,CAAC,YAAY,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;IAEpC,MAAM,MAAM,GAAG,UAAU;IACzB,MAAM,MAAM,GAAG,UAAU;AAEzB,IAAA,IAAI,UAAU,CAAC,MAAM,EAAE;AACrB,QAAA,UAAU,CAAC,MAAM,CAAC,OAAO,CAAC;IAC5B;AACA,IAAA,IAAI,UAAU,CAAC,MAAM,EAAE;AACrB,QAAA,UAAU,CAAC,MAAM,CAAC,OAAO,CAAC;IAC5B;AACA,IAAA,UAAU,CAAC,KAAK,CAAC,OAAO,CAAC;AACzB,IAAA,UAAU,CAAC,KAAK,CAAC,OAAO,CAAC;AAEzB,IAAA,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE;AAC3B,CAAC;AAED,MAAM,uBAAuB,GAAG;IAC9B,IAAI,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,YAAY,EAAE;IAC5C,IAAI,EAAE,EAAE,KAAK,EAAE,SAAS,EAAE,KAAK,EAAE,eAAe,EAAE;IAClD,OAAO,EAAE,EAAE,KAAK,EAAE,SAAS,EAAE,KAAK,EAAE,eAAe,EAAE;IACrD,UAAU,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,kBAAkB,EAAE;IACxD,oBAAoB,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,kBAAkB,EAAE;IAClE,WAAW,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,YAAY,EAAE;IACnD,WAAW,EAAE,EAAE,KAAK,EAAE,cAAc,EAAE,KAAK,EAAE,oBAAoB,EAAE;IACnE,oBAAoB,EAAE,EAAE,KAAK,EAAE,cAAc,EAAE,KAAK,EAAE,oBAAoB,EAAE;IAC5E,cAAc,EAAE,EAAE,KAAK,EAAE,cAAc,EAAE,KAAK,EAAE,oBAAoB,EAAE;AACtE,IAAA,uBAAuB,EAAE;AACvB,QAAA,KAAK,EAAE,cAAc;AACrB,QAAA,KAAK,EAAE;AACR,KAAA;IACD,QAAQ,EAAE,EAAE,KAAK,EAAE,aAAa,EAAE,KAAK,EAAE,mBAAmB,EAAE;IAC9D,iBAAiB,EAAE,EAAE,KAAK,EAAE,aAAa,EAAE,KAAK,EAAE,mBAAmB,EAAE;IACvE,QAAQ,EAAE,EAAE,KAAK,EAAE,aAAa,EAAE,KAAK,EAAE,mBAAmB,EAAE;AAC9D,IAAA,UAAU,EAAE;AACV,QAAA,KAAK,EAAE,MAAM;AACb,QAAA,KAAK,EAAE;AACR;CACF;AAEM,MAAM,gBAAgB,GAAG,CAC9B,YAA0B,EAC1B,SAAuB,EACvB,UAAmB,EACnB,KAAsB,KACpB;IACF,MAAM,EACJ,MAAM,EACN,KAAK,EACL,SAAS,EACT,UAAU,EACV,eAAe,EACf,UAAU,EACV,YAAY,EACZ,WAAW,EACX,YAAY,EACZ,eAAe,EACf,OAAO,EACP,IAAI,EACJ,SAAS,EACT,QAAQ,EACR,WAAW,EACX,cAAc,EACd,eAAe,EACf,iBAAiB,EACjB,YAAY,EACZ,iBAAiB,EACjB,SAAS,EACT,cAAc,EACd,OAAO,EAAE,WAAW,EACpB,OAAO,EAAE,WAAW,EACpB,KAAK,EACL,UAAU,EAAE,cAAc,GAAGI,mBAAW,EAAE,EAC1C,UAAU,EAAE,cAAc,GAAGA,mBAAW,EAAE,EAC1C,cAAc,EACd,OAAO,EACP,OAAO,EACP,cAAc,EACd,iBAAiB,EACjB,MAAM,EACN,gBAAgB,EAChB,mBAAmB,EACnB,SAAS,EACT,SAAS,EACT,8BAA8B,EAC9B,mBAAmB,EACnB,uBAAuB,EACvB,oBAAoB,EACpB,WAAW,EACZ,GAAG,YAAY;AAChB,IAAA,IAAI,EACF,cAAc,EACd,eAAe,EACf,kBAAkB,EAClB,SAAS,EACT,WAAW,EACZ,GAAG,YAAY;AAEhB,IAAA,IAAI,WAAW,IAAI,MAAM,IAAI,CAAC,SAAS,EAAE;QACvC,SAAS,GAAG,CAAC,EAAE,WAAW,EAAE,MAAM,EAAE,CAAC;IACvC;AAAO,SAAA,IACL,WAAW;QACX,WAAW,CAAC,IAAI,KAAK,YAAY;QACjC,KAAK;QACL,CAAC,SAAS,EACV;QACA,SAAS,GAAG,KAAK;IACnB;IAEA,MAAM,cAAc,GAAG,cAAqC;AAE5D,IAAA,MAAM,UAAU,GAAG,cAAc,CAAC,MAAM,GAAG,cAAc,GAAG,cAAc,EAAE;IAE5E,MAAM,cAAc,GAAG,cAAqC;AAE5D,IAAA,MAAM,UAAU,GAAG,cAAc,CAAC,MAAM,GAAG,cAAc,GAAG,cAAc,EAAE;IAE5E,MAAM,eAAe,GAAG,KAAK,CAAC,iBAAiB,CAC7C,SAAS,EAAE,SAAS,EAAE,mBAAmB,EAAE,gBAAgB,EAC3D,SAAS,EAAE,QAAQ,EAAE,WAAW,EAAE,cAAc,CACjD;AAED,IAAA,MAAM,iBAAiB,GAAA,MAAA,CAAA,MAAA,CAAA,MAAA,CAAA,MAAA,CAAA,EAAA,EAClB,eAAe,CAAA,EAAA,EAClB,QAAQ,EAAE,aAAa,CAAC,QAAQ,CAAqB,EACrD,WAAW,EAAE,aAAa,CAAC,WAAW,CAAwB,EAC9D,SAAS,EACP,CAAC,SAAS,KAAK,KAAK,CAAC,OAAO,CAAC,SAAS,CAAC,IAAI,SAAS,CAAC,MAAM,KAAK,CAAC;AAC/D,cAAE;AACF,cAAE,CAAC,KAAK,CAAC,OAAO,CAAC,SAAS;kBACxB,CAAC,SAAS;kBACV,CAAC,mBAAmB,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;AACxC,sBAAE,CAAC,EAAE,WAAW,EAAE,SAAS,EAAE;sBAC3B,SAAS,EACf,KAAK,EACH,CAAC,KAAK,KAAK,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC;AACnD,cAAE;AACF,cAAE,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK;kBACpB,CAAC,KAAK;kBACN,CAAC,gBAAgB,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;AACjC,sBAAE,CAAC,EAAE,WAAW,EAAE,KAAK,EAAE;sBACvB,KAAK,EACX,KAAK,EACH,OAAO,KAAK,KAAK,QAAQ;AACzB,YAAA,CAACJ,gBAAK,CAAC,cAAc,CAAC,KAAK,CAAC;AAC5B,YAAA,KAAK,KAAK;AACR,cAAE;AACF,cAAE,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,EAC9B,OAAO,EAAE,KAAK,CAAC,OAAO,CAAC,WAAW;AAChC,cAAE;cACA,CAAC;AACH,kBAAE;AACF,kBAAE,WAAW,CAAC,MAAM,EACtB,OAAO,EAAE,KAAK,CAAC,OAAO,CAAC,WAAW;AAChC,cAAE;cACA,CAAC;AACH,kBAAE;AACF,kBAAE,WAAW,CAAC,MAAM,GACvB;IAED,IAAI,iBAAiB,CAAC,QAAQ,CAAC,IAAI,KAAK,MAAM,EAAE;QAC9C,iBAAiB,CAAC,QAAQ,CAAC,EAAE,GAAG,MAAM,CAAC;AACvC,QAAA,iBAAiB,CAAC,QAAQ,CAAC,UAAU,GAAG,KAAK;IAC/C;AAEA,IAAA,MAAM,EAAE,cAAc,EAAE,cAAc,EAAE,mBAAmB,EAAE,GAAG,KAAK,CAAC,eAAe,CACnF,YAAY,EAAE,YAAY,EAAE,iBAAiB,CAC9C;AAED,IAAA,MAAM,aAAa,GACjB,YAAY,CAAC,IAAI;AACjB,QAAA,YAAY,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,cAAc,KACnC,OAAO,cAAc,KAAK;cACtB,cAAc,CAAC,EAAE,IAAI,EAAE,YAAY,CAAC,IAAI,EAAE;cAC1C,cAAc,CACnB;IAEH,MAAM,EAAE,MAAM,EAAE,gBAAgB,EAAE,YAAY,EAAE,GAAG,KAAK,CAAC,UAAU,CACjE,YAAY,CAAC,MAAM,EAAE,aAAa,EAAE,iBAAiB,CAAC,KAAK,EAAE,YAAY,CAAC,IAAI,CAC/E;AAED,IAAA,IAAI,iBAAiB,GAAG,EAAE,EACxB,iBAAiB,GAAG,EAAE,EACtB,OAAO,EACP,OAAO,EACP,eAAe,EACf,eAAe;AAEjB,IAAA,IAAI,OAAO,WAAW,KAAK,QAAQ,EAAE;QACnC,eAAe,GAAG,WAAW;IAC/B;SAAO;AACL,QAAA,eAAe,GAAG,EAAE,MAAM,EAAE,WAAW,EAAE;IAC3C;AAEA,IAAA,IAAI,OAAO,WAAW,KAAK,QAAQ,EAAE;QACnC,eAAe,GAAG,WAAW;IAC/B;SAAO;AACL,QAAA,eAAe,GAAG,EAAE,MAAM,EAAE,WAAW,EAAE;IAC3C;IAEA,IAAI,MAAM,EAAE,MAAM;AAElB,IAIE;;AAEA,QAAA,IACE,CAAC,OAAO;AACR,YAAA,CAAC,OAAO;AACR,YAAA,CAAC,WAAW;aACX,CAAC,cAAc,IAAI,CAAC,eAAe,IAAI,CAAC,kBAAkB,CAAC,EAC5D;YACC,CAAC;gBACA,OAAO;gBACP,OAAO;gBACP,cAAc;gBACd,eAAe;gBACf,kBAAkB;gBAClB,WAAW;gBACX,iBAAiB;gBACjB;AACD,aAAA,GAAG,mBAAmB,CAAC;gBACtB,gBAAgB,EAAE,iBAAiB,CAAC,gBAAgB;gBACpD,mBAAmB,EAAE,iBAAiB,CAAC,mBAAmB;gBAC1D,SAAS,EAAE,iBAAiB,CAAC,SAAS;gBACtC,SAAS,EAAE,iBAAiB,CAAC,SAAS;gBACtC,QAAQ,EAAE,iBAAiB,CAAC,QAAQ;gBACpC,WAAW,EAAE,iBAAiB,CAAC,WAAW;gBAC1C,SAAS,EAAE,iBAAiB,CAAC,SAAS;gBACtC,MAAM;gBACN,KAAK,EAAE,iBAAiB,CAAC,KAAK;gBAC9B,cAAc;gBACd,iBAAiB;AACjB,gBAAA,OAAO,EAAE,WAAW;AACpB,gBAAA,OAAO,EAAE,WAAW;gBACpB,OAAO;gBACP,OAAO;gBACP,YAAY;gBACZ,MAAM;gBACN,cAAc;gBACd,cAAc;gBACd,mBAAmB;AACnB,gBAAA,SAAS,EAAE,IAAI;gBAGf,OAAO;gBACP,mBAAmB;gBACnB,uBAAuB;gBACvB,oBAAoB;gBACpB;AACD,aAAA,CAAC;QACJ;AAEC,QAAA,CAAC,EAAE,MAAM,EAAE,MAAM,EAAE,GAAG,YAAY,CAAC;YAClC,OAAO;YACP,OAAO;YACP,YAAY;AACZ,YAAA,UAAU,EAAE,UAAU,CAAC,IAAI,EAAE;AAC7B,YAAA,UAAU,EAAE,UAAU,CAAC,IAAI;AAC5B,SAAA,CAAC;IACJ;IA4BA,OAAO;AACL,QAAA,KAAK,CAAC,OAAO,CAAC,eAAe,CAAC,MAAM,CAAC,IAAI,eAAe,CAAC,MAAM,CAAC,MAAM,KAAK;cACvE,eAAe,CAAC;cAChB,OAAO;IACb,OAAO;AACL,QAAA,KAAK,CAAC,OAAO,CAAC,eAAe,CAAC,MAAM,CAAC,IAAI,eAAe,CAAC,MAAM,CAAC,MAAM,KAAK;cACvE,eAAe,CAAC;cAChB,OAAO;IAEb,MAAM,aAAa,GAAG,EAAE;AAExB,IAAA,IAAI,IAAI;AACR,IAAA,IAAI,aAAa;IAEjB,MAAM,iBAAiB,GAAG,EAAE;IAE5B,IAAI,aAAa,EAAE;QACjB,aAAa,GAAG,EAAE;QAClB,IAAI,GAAG,aAAa,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,KAAI;AAChC,YAAA,IAAI,aAAa,GAAG,CAAC,CAAC,SAAS,IAAI,EAAE;YACrC,aAAa,IAAI,OAAO;YACxB,IAAI,SAAS,GAAG,MAAM;AACtB,YAAA,IAAI,iBAAiB,CAAC,CAAC,CAAC,MAAM,CAAC,EAAE;gBAC/B,CAAC,CAAC,QAAQ,GAAG,CAAC,CAAC,QAAQ,IAAI,KAAK;YAClC;AACA,YAAA,iBAAiB,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,IAAI;AAClC,YAAA,IAAI,CAAC,CAAC,MAAM,KAAK,KAAK,IAAI,CAAC,CAAC,MAAM,KAAK,QAAQ,EAAE;gBAC/C,aAAa,IAAI,IAAI;gBACrB,SAAS,GAAG,MAAM;YACpB;iBAAO;gBACL,aAAa,IAAI,IAAI;YACvB;AACA,YAAA,aAAa,IAAI,CAAA,CAAA,EAAI,CAAC,CAAC,MAAM,EAAE;AAE/B,YAAA,IAAI,UAAU;AACd,YAAA,IAAI,CAAC,CAAC,UAAU,IAAI,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,UAAU,CAAC,EAAE;AAC/C,gBAAA,UAAU,GAAG,CAAC,CAAC,UAAU;YAC3B;AAAO,iBAAA,IAAI,CAAC,CAAC,UAAU,YAAY,QAAQ,EAAE;;AAE3C,gBAAA,UAAU,GAAG,CAAC,CAAC,UAAU,CAAC,WAAW,EAAE,YAAY,CAAC,IAAI,EAAE,SAAS,CAAC;YACtE;AACA,YAAA,MAAM,QAAQ,GAAG,CAAC,YAAY,CAAC,CAAC,CAAC,EAAE,YAAY,CAAC,CAAC,CAAC,CAAC;YAEnD,MAAM,SAAS,GAAG,UAAU,CAAC;gBAC3B,OAAO,EAAE,CAAC,CAAC,OAAO;gBAClB,UAAU;AACV,gBAAA,KAAK,EAAE,SAAS;gBAChB,KAAK,EAAE,CAAC,CAAC,KAAK;gBACd,MAAM,EAAE,CAAC,CAAC,MAAM;AAChB,gBAAA,IAAI,EAAE,QAAQ;gBACd,MAAM,EAAE,CAAC,CAAC,MAAM;gBAChB,QAAQ,EAAE,CAAC,CAAC,QAAQ;gBACpB,UAAU,EAAE,CAAC,CAAC;AACf,aAAA,CAAC;AACF,YAAA,MAAM,aAAa,IACjBA,gBAAA,CAAA,aAAA,CAAA,GAAA,EAAA,EAAG,GAAG,EAAE,CAAA,gBAAA,EAAmB,CAAC,CAAA,CAAE,EAAE,SAAS,EAAE,CAAA,KAAA,EAAQ,aAAa,CAAA,CAAE,EAAA;AAC/D,gBAAA,SAAS,CAAC;oBACT,SAAS;oBACT,MAAM,EAAE,CAAC,CAAC,MAAM;oBAChB,iBAAiB,EAAE,CAAC,CAAC,iBAAiB;AACtC,oBAAA,SAAS,EAAE,aAAa;oBACxB,UAAU,EAAE,CAAC,CAAC,UAAU;AACxB,oBAAA,KAAK,EAAE,SAAS;oBAChB,qBAAqB,EAAE,CAAC,CAAC;iBAC1B,CAAC;gBACD,CAAC,CAAC,QAAQ,KAAK,OAAO;AACrB,oBAAA,iBAAiB,CAAC,CAAC,CAAC,MAAM,EAAE,YAAY,EAAE,CAAC,CAAC,SAAS,CAAC,CACtD,CACL;AACD,YAAA,aAAa,CAAC,IAAI,CAAC,aAAa,CAAC;YACjC,QACEA,+BAAC,IAAI,EAAA,MAAA,CAAA,MAAA,CAAA,EAAA,EACC,CAAC,EAAA,EACL,GAAG,EAAE,CAAC,CAAC,GAAG,IAAI,CAAA,KAAA,EAAQ,CAAC,CAAA,CAAE,EACzB,kBAAkB,EAAE,CAAC,CAAC,sBAAsB,EAC5C,SAAS,EAAE,SAAS,EACpB,IAAI,EAAE,QAAQ,EACd,MAAM,EAAE,MAAM,EACd,UAAU,EAAE,UAAU,EACtB,KAAK,EAAE,SAAS,EAChB,SAAS,EAAE,aAAa,EACxB,QAAQ,EAAE,WAAW,EAAA,CAAA,CACrB;AAEN,QAAA,CAAC,CAAC;IACJ;AACA,IAAA,IAAI,cAAc;IAElB,IAAI,MAAM,EAAE;AACV,QAAA,cAAc,GAAG,MAAM,KAAK,IAAI,GAAG,EAAE,GAAG,MAAM;AAC9C,QAAA,IAAI,cAAc,IAAI,CAAC,cAAc,CAAC,YAAY,EAAE;AAClD,YAAA,MAAM,UAAU,GAAG,iBAAiB,CAAC,QAAQ,CAAC,IAAI;AAClD,YAAA,MAAM,IAAI,GACR,OAAO,UAAU,KAAK,QAAQ;AAC9B,gBAAA,CAAC,aAAa,EAAE,gBAAgB,EAAE,UAAU,CAAC,CAAC,OAAO,CAAC,UAAU,CAAC,KAAK;AACpE,kBAAE;kBACA,MAAM;AACZ,YAAA,MAAM,YAAY,GAAG;AACnB,gBAAA;oBACE,OAAO,EAAE,YAAY,CAAC,SAAS;oBAC/B,IAAI;oBACJ,KAAK,EAAE,cAAc,CAAC,GAAG,CAAC,CAAC,CAAC,KAC1B,MAAM,CAAC,MAAM,CAAC,EAAE,KAAK,EAAE,iBAAiB,CAAC,cAAc,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;AAEnE;aACF;AACD,YAAA,cAAc,CAAC,YAAY,GAAG,YAAY;QAC5C;IACF;IACA,MAAM,eAAe,GAAG,EAAE;IAE1B,IAAI,iBAAiB,CAAC,WAAW,CAAC,KAAK,IAAI,kBAAkB,EAAE;QAC7D,kBAAkB,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,KAAI;AAClC,YAAA,IAAI,CAAC,CAAC,MAAM,EAAE;gBACZ,MAAM,MAAM,GAAG,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC;AAC9D,gBAAA,MAAM,CAAC,OAAO,CAAC,CAAC,WAAW,KAAI;oBAC7B,MAAM,KAAK,GACT,OAAO,iBAAiB,CAAC,WAAW,CAAC,KAAK,KAAK;0BAC3C,iBAAiB,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC;AACvC,0BAAE,iBAAiB,CAAC,WAAW,CAAC,KAAK;AACzC,oBAAA,IAAI,KAAK,IAAI,KAAK,KAAK,IAAI,EAAE;AAC3B,wBAAA,MAAM,aAAa,GAAG,KAAK,CAAC,QAAQ,IAAI,QAAQ;AAChD,wBAAA,MAAM,WAAW,GAAG;4BAClB,MAAM,CAAC,WAAW,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC;4BACrC,MAAM,CAAC,WAAW,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC;yBACrC;wBACD,MAAM,YAAY,GAAG,KAAK,CAAC,OAAO,KAAK,CAAC,CAAC,KAAK,CAAC,CAAC,KAAK,IAAI,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC;wBAEnE,eAAe,CAAC,IAAI,CAAC;AACnB,4BAAA,CAAC,EAAE,WAAW,CAAC,CAAC,CAAC;AACjB,4BAAA,CAAC,EAAE,WAAW,CAAC,CAAC,CAAC;4BACjB,EAAE,EAAE,KAAK,CAAC,EAAE;4BACZ,EAAE,EAAE,KAAK,CAAC,EAAE;4BACZ,SAAS,EAAE,KAAK,CAAC,SAAS;AAC1B,4BAAA,IAAI,EAAE,KAAK,CAAC,IAAI,IAAI,SAAS;AAC7B,4BAAA,IAAI,EAAE,KAAK,CAAC,IAAI,IAAI,EAAE,KAAK,EAAE,YAAY,CAAC,CAAC,CAAC,EAAE;AAC9C,4BAAA,OAAO,EAAE,KAAK,CAAC,OAAO,IAAI,EAAE,IAAI,EAAE,YAAY,CAAC,CAAC,CAAC,EAAE;4BACnD,SAAS,EAAE,KAAK,CAAC;AAClB,yBAAA,CAAC;oBACJ;AACF,gBAAA,CAAC,CAAC;YACJ;AACF,QAAA,CAAC,CAAC;IACJ;AAAO,SAAA,IACL,iBAAiB,CAAC,WAAW,CAAC,SAAS;QACvC,kBAAkB;AAClB,QAAA,kBAAkB,CAAC,CAAC,CAAC,EACrB;AACA,QAAA,MAAM,YAAY,GAAuD,kBAAkB,CAAC,CAAC,CAAuD;QAEpJ,MAAM,UAAU,GAAG,YAAY,CAAC,eAAe,CAAC,CAAC,CAAC;AAClD,QAAA,MAAM,UAAU,GACd,YAAY,CAAC,eAAe,CAAC,YAAY,CAAC,eAAe,CAAC,MAAM,GAAG,CAAC,CAAC;QAEvE,eAAe,CAAC,IAAI,CAAC;AACnB,YAAA,CAAC,EAAE,UAAU,CAAC,CAAC,CAAC;AAChB,YAAA,CAAC,EAAE,UAAU,CAAC,CAAC,CAAC;AAChB,YAAA,EAAE,EAAE,UAAU,CAAC,CAAC,CAAC;AACjB,YAAA,EAAE,EAAE,UAAU,CAAC,CAAC,CAAC;AACjB,YAAA,IAAI,EAAE,sBAAsB;YAC5B,KAAK,EAAE,YAAY,CAAC,KAAK;YACzB,EAAE,EAAE,YAAY,CAAC;AAClB,SAAA,CAAC;IACJ;IAEA,MAAM,aAAa,GACjB,iBAAiB,CAAC,QAAQ,CAAC,IAAI,KAAK,SAAS;AAC7C,QAAA,OAAO,iBAAiB,CAAC,QAAQ,CAAC,IAAI,KAAK,QAAQ;AACnD,QAAA,uBAAuB,CAAC,iBAAiB,CAAC,QAAQ,CAAC,IAAI,CAAC;AAE1D,IAAA,MAAM,aAAa,GAAG;AACpB,QAAA,KAAK,gCACH,mBAAmB,EAAE,CAAC,IAAI,EAAE,CAAC,sCACxB,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,CAAA,EAAA,EACxC,IAAI,EAAE,aAAa,EAAA,CAAA,CACnB,EACF,IAAI,EAAE,cAAc,IACjB,KAAK,CAAC,YAAY,CAAC,SAAS,EAAE,SAAS,EAAE,cAAc,EAAE,WAAW,CAAC,CAAA,EAAA,EACxE,UAAU,EAAE,cAAc,EAC1B,IAAI,EAAE,iBAAiB,CAAC,QAAQ,EAChC,OAAO,EAAE,OAAO,EAChB,WAAW,EAAE,iBAAiB,CAAC,WAAW,EAC1C,SAAS,EAAE,aAAa,EACxB,QAAQ,EAAE,aAAa,EACvB,QAAQ,EAAE,WAAW,EAAA,CACtB;AACD,QAAA,SAAS,EAAE;AACT,YAAA,mBAAmB,EAAE,CAAC,IAAI,EAAE,CAAC,MAAK,MAAA,CAAA,MAAA,CAAA,MAAA,CAAA,MAAA,CAAA,EAAA,EAAM,IAAI,CAAC,CAAC,CAAC,KAAE,IAAI,EAAE,aAAa,EAAA,CAAA,CAAG;AACvE,YAAA,IAAI,EAAE,kBAAkB;AACxB,YAAA,OAAO,EAAE,cAAc;AACvB,YAAA,OAAO,EAAE,cAAc;AACvB,YAAA,UAAU,EAAE,mBAAmB;AAC/B,YAAA,YAAY,EAAE,KAAK,CAAC,mBAAmB,CAAC,eAAe,CAAC;AACxD,YAAA,UAAU,EAAE,iBAAiB;YAC7B,IAAI,EAAE,iBAAiB,CAAC,WAAW;YACnC,WAAW,EAAE,iBAAiB,CAAC,WAAW;AAC1C,YAAA,QAAQ,EAAE;AACX,SAAA;AACD,QAAA,MAAM,EAAA,MAAA,CAAA,MAAA,CAAA,MAAA,CAAA,MAAA,CAAA,EACJ,mBAAmB,EAAE,CAAC,IAAI,EAAE,CAAC,MAAK,MAAA,CAAA,MAAA,CAAA,EAChC,IAAI,EAAE,aAAa,EAAA,GACf,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,IAAI,CAAC,CAAC,CAAC,GAC3B,EACF,IAAI,EAAE,eAAe,EAAA,EAClB,KAAK,CAAC,aAAa,CAAC,UAAU,EAAE,UAAU,EAAE,eAAe,EAAE,YAAY,CAAC,CAAA,EAAA,EAC7E,UAAU,EAAE,eAAe,EAC3B,WAAW,EAAE,iBAAiB,CAAC,WAAW,EAC1C,cAAc,EACd,QAAQ,EAAE,YAAY,EAAA;KAEzB;IAED,IACE,eAAe,CAAC,QAAQ;AACxB,QAAA,SAAS,CAAC,iBAAiB,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,iBAAiB,CAAC,IAAI,CAAC,GAAG,CAAC,EACrE;AACA,QAAA,eAAe,CAAC,QAAQ,CAAC,iBAAiB,CAAC;IAC7C;IACA,IACE,eAAe,CAAC,QAAQ;AACxB,QAAA,SAAS,CAAC,iBAAiB,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,iBAAiB,CAAC,IAAI,CAAC,GAAG,CAAC,EACrE;AACA,QAAA,eAAe,CAAC,QAAQ,CAAC,iBAAiB,CAAC;IAC7C;IAEA,IAAI,OAAO,GAAG,SAAS;AACvB,IAAA,IAAI,8BAA8B,IAAI,kBAAkB,EAAE;QACxD,OAAO,GAAG,eAAe,CAAC;YACxB,MAAM;YACN,MAAM;AACN,YAAA,IAAI,EAAE;AACP,SAAA,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,MAAK,MAAA,CAAA,MAAA,CAAA,MAAA,CAAA,MAAA,CAAA,EAAA,EACZ,CAAC,CAAC,KAAK,CAAA,EAAA,EACV,KAAK,EAAE,EAAE,WAAW,EAAE,CAAC,EAAE,EACzB,WAAW,EAAE,kBAAkB,IAAI,kBAAkB,CAAC,CAAC,CAAC;AACxD,UAAA,CAAA,CAAA,CAAC;IACL;IAEA,OAAO;QACL,QAAQ,EAAE,YAAY,CAAC,KAAK;QAC5B,SAAS,EAAE,YAAY,CAAC,MAAM;QAC9B,WAAW,EAAE,YAAY,CAAC,SAAS;QACnC,WAAW,EAAE,YAAY,CAAC,WAAW;QACrC,cAAc;QACd,eAAe;QACf,kBAAkB;QAClB,aAAa;QACb,WAAW;QACX,gBAAgB;QAChB,YAAY;QACZ,kBAAkB,EAAE,YAAY,CAAC,kBAAkB;QACnD,kBAAkB,EAAE,YAAY,CAAC,kBAAkB;AACnD,QAAA,QAAQ,EAAE,aAAa;QACvB,IAAI;QACJ,aAAa;AACb,QAAA,YAAY,EAAE,SAAS,CAAC,YAAY,GAAG,CAAC;QACxC,MAAM;QACN,MAAM;QACN,SAAS,EAAE,iBAAiB,CAAC,SAAS;QACtC,SAAS,EAAE,iBAAiB,CAAC,SAAS;AACtC,QAAA,OAAO,EAAE;AACP,YAAA,OAAO,CAAC,CAAC,CAAC,KAAK,SAAS,GAAG,iBAAiB,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC;AAC5D,YAAA,OAAO,CAAC,CAAC,CAAC,KAAK,SAAS,GAAG,iBAAiB,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC;AAC5D,SAAA;AACD,QAAA,OAAO,EAAE;AACP,YAAA,OAAO,CAAC,CAAC,CAAC,KAAK,SAAS,GAAG,iBAAiB,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC;AAC5D,YAAA,OAAO,CAAC,CAAC,CAAC,KAAK,SAAS,GAAG,iBAAiB,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC;AAC5D,SAAA;QACD,iBAAiB;QACjB,iBAAiB;QACjB,MAAM;QACN,cAAc;QACd,eAAe;QACf,aAAa;QACb,IAAI;QACJ,iBAAiB;QACjB,OAAO;AACP,QAAA,KAAK,EAAE;KACR;AACH,CAAC;;ACvmBD,MAAM,yBAAyB,GAAG,OAAO,EAAE,CAAC;AAC5C,MAAM,yBAAyB,GAAG,MAAM,EAAE;SAE1B,qBAAqB,GAAA;IACnC,OAAO;QACL,iBAAiB,EAAE6B,wBAAO,CAAC,CACzB,SAAc,EACd,SAAc,EACd,mBAAwB,EACxB,gBAAqB,EACrB,SAAc,EACd,QAAa,EACb,WAAgB,EAChB,cAAmB,MACf;AACJ,YAAA,SAAS,EAAE,eAAe,CAAS,SAAS,EAAE,CAAC,CAAW,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;AACpE,YAAA,SAAS,EAAE,eAAe,CAAS,SAAS,EAAE,CAAC,CAAW,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;AACpE,YAAA,mBAAmB,EAAE,eAAe,CAClC,mBAAmB,EACnB,CAAC,CAAwB,MAAM,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,WAAW,CAAC,CACrE;AACD,YAAA,gBAAgB,EAAE,eAAe,CAC/B,gBAAgB,EAChB,CAAC,CAA2B,MAAM,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,WAAW,CAAC,CACxE;AACD,YAAA,WAAW,EAAE,UAAU,CACrB,SAAS,EACT,CAAC,CAAsB,EAAE,CAAS,KAAK,CAAA,KAAA,EAAQ,CAAC,CAAA,CAAE,EAClD,IAAI,CACL;AACD,YAAA,cAAc,EAAE,UAAU,CAAS,cAAc,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,cAAc,CAAC;AAC5E,SAAA,CAAC,CAAC;AAEH,QAAA,UAAU,EAAEA,wBAAO,CAAC,CAClB,MAAW,EACX,IAAS,EACT,KAAU,EACV,IAAc,KACZ;AACF,YAAA,MAAM,gBAAgB,GAAG,eAAe,CAAC,EAAE,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC;AACvE,YAAA,MAAM,EAAE,gBAAgB,EAAE,YAAY,EAAE,GAAG,oBAAoB,CAAC;gBAC9D,IAAI;AACJ,gBAAA,MAAM,EAAE;AACT,aAAA,CAAC;YACF,OAAO,EAAE,MAAM,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,YAAY,EAAE;AACrE,QAAA,CAAC,CAAC;AAEF,QAAA,eAAe,EAAEA,wBAAO,CAAC,CACvB,YAAiB,EACjB,YAAiB,EACjB,iBAAsB,MAClB;YACJ,cAAc,EAAE,UAAU,CAAsB,YAAY,EAAE,yBAAyB,EAAE,IAAI,CAAC;YAC9F,cAAc,EAAE,UAAU,CAAS,YAAY,EAAE,yBAAyB,EAAE,IAAI,CAAC;YACjF,mBAAmB,EAAE,UAAU,CAA+B,iBAAiB,EAAE,SAAS,EAAE,IAAI,CAAC;AAClG,SAAA,CAAC,CAAC;AAEH,QAAA,YAAY,EAAEA,wBAAO,CAAC,CACpB,SAAc,EACd,SAAc,EACd,cAAmB,EACnB,WAAgB,MACZ;YACJ,OAAO,EAAE,UAAU,CAAsB,SAAS,EAAE,yBAAyB,EAAE,IAAI,CAAC;YACpF,OAAO,EAAE,UAAU,CAAS,SAAS,EAAE,yBAAyB,EAAE,IAAI,CAAC;YACvE,UAAU,EAAE,UAAU,CAA+B,cAAc,EAAE,SAAS,EAAE,IAAI,CAAC;YACrF,YAAY,EAAE,UAAU,CAAU,WAAW,EAAE,SAAS,EAAE,IAAI,CAAC;AAChE,SAAA,CAAC,CAAC;AAEH,QAAA,aAAa,EAAEA,wBAAO,CAAC,CACrB,UAAe,EACf,UAAe,EACf,eAAoB,EACpB,YAAiB,MACb;YACJ,OAAO,EAAE,UAAU,CAAsB,UAAU,EAAE,yBAAyB,EAAE,IAAI,CAAC;YACrF,OAAO,EAAE,UAAU,CAAS,UAAU,EAAE,yBAAyB,EAAE,IAAI,CAAC;YACxE,UAAU,EAAE,UAAU,CAA+B,eAAe,EAAE,SAAS,EAAE,IAAI,CAAC;YACtF,YAAY,EAAE,UAAU,CAAU,YAAY,EAAE,SAAS,EAAE,IAAI,CAAC;AACjE,SAAA,CAAC,CAAC;AAEH,QAAA,mBAAmB,EAAEA,wBAAO,CAAC,CAAC,eAAoB,KAChD,UAAU,CAAU,eAAe,EAAE,SAAS,EAAE,IAAI,CAAC,CACtD;KACF;AACH;;ACvFA;;;AAGG;SACa,aAAa,CAAC,SAAS,EAAE,CAAC,EAAE,SAAS,EAAA;AACnD,IAAA,QACE7B,gBAAA,CAAA,aAAA,CAAC,IAAI,EAAA,EACH,KAAK,EAAE,SAAS,CAAC,KAAK,EACtB,GAAG,EAAE,SAAS,CAAC,GAAG,IAAI,CAAA,qBAAA,EAAwB,CAAC,CAAA,CAAE,EACjD,MAAM,EAAE,SAAS,CAAC,MAAM,EACxB,IAAI,EAAE,SAAS,CAAC,IAAI,EACpB,KAAK,EAAE,SAAS,CAAC,KAAK,EACtB,QAAQ,EAAE,SAAS,CAAC,QAAQ,EAC5B,UAAU,EAAE,SAAS,CAAC,UAAU,EAChC,UAAU,EAAE,SAAS,CAAC,UAAU,EAChC,MAAM,EAAE,SAAS,CAAC,MAAM,EACxB,KAAK,EAAE,SAAS,EAChB,SAAS,EAAE,SAAS,CAAC,SAAS,EAAA,CAC9B;AAEN;;ACnBM,SAAU,WAAW,CAAC,EAC1B,IAAI,EACJ,IAAI,EACJ,UAAU,EACV,uBAAuB,EACvB,OAAO,EACP,UAAU,EACV,OAAO,EACP,YAAY,EACZ,SAAS,EACT,MAAM,EAEN,MAAM,EACP,EAAA;IACC,IAAI,mBAAmB,GAAG,EAAE;IAE5B,MAAM,UAAU,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC;;IAGpC,MAAM,eAAe,GAAG,UAAU,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,GAAG,KAAI;;AACrD,QAAA,OAAO,GAAG,IAAI,CAAA,CAAA,EAAA,GAAA,IAAI,CAAC,GAAG,CAAC,CAAC,SAAS,MAAA,IAAA,IAAA,EAAA,KAAA,MAAA,GAAA,MAAA,GAAA,EAAA,CAAE,MAAM,KAAI,CAAC,CAAC;IACjD,CAAC,EAAE,CAAC,CAAC;;AAGL,IAAA,MAAM,kBAAkB,GAAG,IAAI,CAAC,GAAG,CACjC,EAAE,EACF,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,IAAI,CAAC,KAAK,CAAC,GAAG,GAAG,CAAC,eAAe,GAAG,GAAG,IAAI,EAAE,CAAC,CAAC,CAC9D;AAED,IAAA,MAAM,UAAU,GAAG,IAAI,CAAC,UAAU,KAAK,SAAS,GAAG,IAAI,CAAC,UAAU,GAAG,kBAAkB;IAEvF,UAAU,CAAC,OAAO,CAAC,CAAC,GAAG,EAAE,OAAO,KAAI;AAClC,QAAA,MAAM,OAAO,GAAG,IAAI,CAAC,GAAG,CAAC;AACzB,QAAA,MAAM,UAAU,GAAG,CAAC,GAAG,UAAU,CAAC,MAAM;AACxC,QAAA,MAAM,KAAK,GAAG,OAAO,CAAC,SAAS;AAC/B,QAAA,MAAM,mBAAmB,GAAG,OAAO,CAAC,KAAK;AAEzC,QAAA,MAAM,YAAY,GAChB,IAAI,CAAC,CAAC;YACN,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,mBAAmB,IAAI,KAAK,CAAC,MAAM,CAAC,CAAC;AAEpE,QAAA,MAAM,UAAU,GAAG8B,uBAAe,CAAC,KAAK;aACrC,KAAK,CAAC,GAAG,EAAEC,cAAM,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,WAAW,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,QAAQ,IAAI,CAAC,CAAC;aACpE,KAAK,CAAC,GAAG,EAAEC,cAAM,CAAC,OAAO,CAAC,MAAM,CAAC;AACjC,aAAA,KAAK,CAAC,SAAS,EAAEC,oBAAY,CAAC,YAAY,CAAC;AAC3C,aAAA,IAAI,EAAE;AAET,QAAA,IAAI,UAAU,KAAK,UAAU,EAAE;YAC7B,UAAU,CAAC,KAAK,CACd,GAAG,EACHF,cAAM,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,mBAAmB,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,QAAQ,IAAI,CAAC,CAAC,CAClE;QACH;QAEA,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,UAAU,EAAE,EAAE,CAAC;YAAE,UAAU,CAAC,IAAI,EAAE;QAEtD,MAAM,gBAAgB,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,CAAC,KAAI;AAC9C,YAAA,MAAM,WAAW,GAAG,UAAU,IAAI,UAAU,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC;AAE3D,YAAA,IAAI,SAAS,GAAG,KAAK,CAAC,CAAC;AACvB,YAAA,IAAI,SAAS,GAAG,KAAK,CAAC,CAAC;AAEvB,YAAA,IAAI,UAAU,KAAK,YAAY,EAAE;AAC/B,gBAAA,SAAS,GAAG,KAAK,CAAC,CAAC;AACnB,gBAAA,SAAS,GAAG,KAAK,CAAC,CAAC;YACrB;AAAO,iBAAA,IAAI,UAAU,KAAK,QAAQ,EAAE;AAClC,gBAAA,MAAM,KAAK,GAAG,OAAO,CAAC,UAAU;gBAChC,SAAS;AACP,oBAAA,CAAC,CAAC,KAAK,CAAC,CAAC,GAAG,OAAO,CAAC,MAAM,IAAI,mBAAmB,IAAI,UAAU;AACjE,gBAAA,MAAM,SAAS,GAAG,KAAK,CAAC,WAAW,GAAG,CAAC;AACvC,gBAAA,MAAM,MAAM,GAAG,KAAK,GAAG,SAAS;gBAChC,MAAM,YAAY,GAAG,iBAAiB,CACpC,CAAC,YAAY,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,YAAY,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAC1C,MAAM,EACN,SAAS,CACV;AACD,gBAAA,SAAS,GAAG,YAAY,CAAC,CAAC,CAAC;AAC3B,gBAAA,SAAS,GAAG,YAAY,CAAC,CAAC,CAAC;YAC7B;AAEA,YAAA,MAAM,kBAAkB,GACtB,OAAO,YAAY,KAAK;AACtB,kBAAE,YAAY,CAAC,KAAK,EAAE,CAAC;kBACrB,YAAY;YAElB,MAAM,cAAc,GAAG,uBAAuB,CAAC,KAAK,EAAE,CAAC,CAAC;YAExD,MAAM,mBAAmB,GAAG,IAAI,CAAC,UAAU,IACzC/B,gBAAA,CAAA,aAAA,CAAA,GAAA,EAAA,EACE,GAAG,EAAE,CAAA,MAAA,EAAS,KAAK,CAAC,SAAS,EAAE,EAC/B,SAAS,EAAE,CAAA,UAAA,EAAa,SAAS,IAAI,SAAS,CAAA,CAAA,CAAG,IAEhD,IAAI,CAAC,UAAU,CAAA,MAAA,CAAA,MAAA,CAAA,MAAA,CAAA,MAAA,CAAA,MAAA,CAAA,MAAA,CAAA,EAAA,EACT,KAAK,CAAC,IAAI,CAAA,EAAK,KAAK,CAAA,EAAA,EAAE,CAAC,EAAE,SAAS,EAAE,CAAC,EAAE,SAAS,EAAA,CAAA,EACrD,CAAC,EACD;AACE,gBAAA,CAAC,EAAE,SAAS;AACZ,gBAAA,CAAC,EAAE,SAAS;AACZ,gBAAA,CAAC,EAAE,YAAY;gBAEf,UAAU;gBACV,OAAO;gBACP,OAAO;gBACP,YAAY;gBACZ,SAAS;gBACT,MAAM;gBACN;AACD,aAAA,CACF,CACC,qBAGF,SAAS,EAAE,OAAO,CAAA,MAAA,CAAA,MAAA,CAAA,MAAA,CAAA,MAAA,CAAA,EAAA,EAAM,KAAK,CAAA,EAAK,KAAK,CAAC,IAAI,GAAI,CAAC,CAAC,EAClD,QAAQ,EAAE,MAAM,EAChB,GAAG,EAAE,SAAS,KAAK,CAAC,SAAS,CAAA,CAAE,EAC/B,MAAM,EAAE,kBAAkB,GAAG,CAAC,EAC9B,KAAK,EAAE,kBAAkB,GAAG,CAAC,EAC7B,CAAC,EAAE,SAAS,GAAG,kBAAkB,EACjC,CAAC,EAAE,SAAS,GAAG,kBAAkB,EACjC,EAAE,EAAE,kBAAkB,EACtB,EAAE,EAAE,kBAAkB,EACtB,KAAK,EAAE,OAAO,iCAAM,KAAK,CAAA,EAAK,KAAK,CAAC,IAAI,CAAA,EAAI,OAAO,CAAC,EAAA,EACjD,cAAc,EAEpB;AAED,YAAA,MAAM,eAAe,GAAG;AACtB,gBAAA,CAAC,EAAE,GAAG;AACN,gBAAA,EAAE,EAAE;AACF,oBAAA,CAAC,EAAE,SAAS;AACZ,oBAAA,CAAC,EAAE;AACJ,iBAAA;gBACD,KAAK;gBACL,WAAW;AACX,gBAAA,aAAa,EAAE;aAChB;AAED,YAAA,OAAO,eAAe;AACxB,QAAA,CAAC,CAAC;QACF,mBAAmB,GAAG,CAAC,GAAG,mBAAmB,EAAE,GAAG,gBAAgB,CAAC;AACrE,IAAA,CAAC,CAAC;AAEF,IAAA,OAAO,mBAAmB;AAC5B;;AChIA,MAAMU,OAAK,GAAG,IAAI,CAAC,EAAE,GAAG,CAAC;AAEzB,MAAM,yBAAyB,GAAG,CAAC,EACjC,IAAI,EACJ,MAAM,EACN,YAAY,EACZ,KAAK,EACL,CAAC,EACF,KAAI;AACH,IAAA,IAAI,EAAE,WAAW,EAAE,GAAG,IAAI;AAC1B,IAAA,MAAM,EAAE,WAAW,GAAG,CAAC,EAAE,UAAU,GAAG,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI;AACvD,IAAA,MAAM,SAAS,GAAG,WAAW,GAAG,GAAG;AACnC,IAAA,MAAM,QAAQ,GAAG,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,GAAG,CAAC;IAC/C,MAAM,QAAQ,GAAG,QAAQ,CAAC,CAAC,CAAC,GAAG,QAAQ,CAAC,CAAC,CAAC;AAE1C,IAAA,MAAM,WAAW,GACf,QAAQ,GAAG,CAAC,GAAGN,mBAAW,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC;AAExE,IAAA,IAAI,SAAS,GACX,IAAI,CAAC,IAAI,KAAK;AACZ,UAAE;AACF,UAAE,IAAI,CAAC,IAAI,KAAK;AAChB,cAAE,KAAK,CAAC,WAAW,GAAG;AACtB,cAAE,KAAK,CAAC,MAAM,GAAG,CAAC;AACtB,IAAA,IAAI,SAAS,GACX,IAAI,CAAC,IAAI,KAAK;AACZ,UAAE,KAAK,CAAC,WAAW,GAAG;AACtB,UAAE,IAAI,CAAC,IAAI,KAAK;AAChB,cAAE,KAAK,CAAC,cAAc,GAAG;AACzB,cAAE,KAAK,CAAC,WAAW,GAAG,CAAC,GAAG,KAAK,CAAC,MAAM,GAAG,CAAC;IAE9C,IAAI,WAAW,EAAE;AACf,QAAA,WAAW,GAAG,QAAQ,CAAC,WAAW,EAAE,EAAE,CAAC;QACvC,MAAM,YAAY,GAAG,YAAY,CAAC,CAAC,CAAC,GAAG,CAAC;QACxC,MAAM,QAAQ,GAAG,CAAC,YAAY,GAAG,WAAW,IAAI,YAAY;AAC5D,QAAA,SAAS,GAAG,SAAS,GAAG,QAAQ,GAAG,WAAW;AAC9C,QAAA,SAAS,GAAG,SAAS,GAAG,QAAQ,GAAG,WAAW;IAChD;AAEA,IAAA,MAAM,YAAY,GAAGD,WAAG,EAAE,CAAC,WAAW,CAAC,SAAS,CAAC,CAAC,WAAW,CAAC,SAAS,CAAC;AAExE,IAAA,MAAM,KAAK,GACT,CAAC,IAAI,CAAC,IAAI,KAAK;AACb,UAAE,CAAC,MAAM,CAAC,GAAG,GAAG,MAAM,CAAC,WAAW,IAAI,MAAM,CAAC,SAAS,CAAC;AACvD,UAAE,MAAM,CAAC,GAAG,IAAI,QAAQ;IAE5B,MAAM,UAAU,GAAG,WAAW,CAC5B,IAAI,CAAC,IAAI,KAAK;UACV,MAAM,CAAC,SAAS;AACd,YAAA,CAAC,CAAC,GAAG,MAAM,CAAC,SAAS,CAAC,MAAM,KAAK,MAAM,CAAC,GAAG,GAAG,MAAM,CAAC,WAAW;AACpE,UAAE,MAAM,CAAC,GAAG,KAAK;AACjB,cAAE;AACF,cAAE,MAAM,CAAC,SAAS,GAAG,SAAS,CACjC;AAED,IAAA,MAAM,QAAQ,GACZ,MAAM,CAAC,GAAG,KAAK;AACb,UAAE,QAAQ,CAAC,CAAC;AACZ,UAAE,IAAI,CAAC,GAAG,CAAC,UAAU,EAAE,UAAU,GAAG,KAAK,GAAG,MAAM,CAAC,WAAW,GAAG,CAAC,CAAC;AAEvE,IAAA,MAAM,eAAe,GAAG,UAAU,GAAGO,OAAK;AAC1C,IAAA,MAAM,aAAa,GAAG,QAAQ,GAAGA,OAAK;IAEtC,MAAM,KAAK,GAAG,YAAY,CAAC;AACzB,QAAA,UAAU,EAAE,eAAe;AAC3B,QAAA,QAAQ,EAAE;AACX,KAAA,CAAC;AAEF,IAAA,MAAM,QAAQ,GAAG,YAAY,CAAC,QAAQ,CAAC;AACrC,QAAA,UAAU,EAAE,eAAe;AAC3B,QAAA,QAAQ,EAAE;AACX,KAAA,CAAC;IAEF,MAAM,OAAO,GAAG,YAAY,CAAC,CAAC,CAAC,GAAG,CAAC;IACnC,MAAM,OAAO,GAAG,YAAY,CAAC,CAAC,CAAC,GAAG,CAAC;IACnC,MAAM,SAAS,GAAG,QAAQ,CAAC,CAAC,CAAC,GAAG,OAAO;IACvC,MAAM,SAAS,GAAG,QAAQ,CAAC,CAAC,CAAC,GAAG,OAAO;IAEvC,MAAM,UAAU,GAAG,iBAAiB,CAClC,CAAC,CAAC,EAAE,CAAC,CAAC,EACN,CAAC,UAAU,GAAG,QAAQ,IAAI,CAAC,EAC3B,KAAK,CAAC,WAAW,GAAG,CAAC,CACtB;AAED,IAAA,MAAM,EAAE,GAAG;AACT,QAAA,YAAY,EAAE,YAAY;AAC1B,QAAA,UAAU,EAAE,eAAe;AAC3B,QAAA,QAAQ,EAAE,aAAa;AACvB,QAAA,EAAE,EAAE,UAAU,CAAC,CAAC,CAAC;AACjB,QAAA,EAAE,EAAE,UAAU,CAAC,CAAC;KACjB;AACD,IAAA,MAAM,SAAS,GAAG,CAAA,UAAA,EAAa,OAAO,CAAA,CAAA,EAAI,OAAO,GAAG;IAEpD,OAAO;QACL,SAAS;QACT,SAAS;QACT,EAAE;QACF,SAAS;AACT,QAAA,EAAE,EAAE,OAAO;AACX,QAAA,EAAE,EAAE,OAAO;AACX,QAAA,SAAS,EAAE;AACT,YAAA,QAAQ,EAAE,MAAM;AAChB,YAAA,CAAC,EAAE,KAAK;AACR,YAAA,SAAS,EAAE;AACZ;KACF;AACH,CAAC;AAED,MAAM,iBAAiB,GACrB,CAAC,EACC,IAAI,EACJ,UAAU,EACV,WAAW,EACX,UAAU,EACV,OAAO,EACP,WAAW,EACX,OAAO,EACR,KACD,CAAC,KAAK,EAAE,CAAC,EAAE,EAAE,KAAI;IACf,MAAM,KAAK,GACT,OAAO,IAAI,CAAC,IAAI,KAAK,QAAQ,GAAG,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC;IACtE,MAAM,EAAE,WAAW,GAAG,CAAC,EAAE,MAAM,GAAG,MAAM,EAAE,GAAG,IAAI;AAEjD,IAAA,MAAM,UAAU,GAAGwB,2BAAU,CAAC,KAAK,CAAC;AACpC,IAAA,MAAM,aAAa,GAAG;AACpB,QAAA,CAAC,GAAG,UAAU,CAAC,EAAE,GAAG,WAAW;AAC/B,QAAA,CAAC,GAAG,UAAU,CAAC,EAAE,GAAG;KACrB;AACD,IAAA,UAAU,CAAC,MAAM,IAAI,WAAW,GAAG,CAAC;AACpC,IAAA,UAAU,CAAC,KAAK,IAAI,WAAW,GAAG,CAAC;IAEnC,MAAM,KAAK,GAAG,EAAE;AAEhB,IAAA,IAAI,eAAe,GAAG,UAAU,CAAC,MAAM;IACvC,IAAI,iBAAiB,GAAG,CAAC;IACzB,IAAI,SAAS,GAAG,CAAC;AACjB,IAAA,MAAM,UAAU,GAAG,UAAU,KAAK,YAAY,GAAG,WAAW,GAAG,UAAU;AACzE,IAAA,MAAM,SAAS,GACb,UAAU,KAAK,YAAY,GAAG,UAAU,CAAC,MAAM,GAAG,UAAU,CAAC,KAAK;AACpE,IAAA,MAAM,SAAS,GACb,UAAU,KAAK,YAAY,GAAG,UAAU,CAAC,KAAK,GAAG,UAAU,CAAC,MAAM;AACpE,IAAA,MAAM,WAAW,GAAG,UAAU,KAAK,YAAY,GAAG,EAAE,CAAC,KAAK,GAAG,EAAE,CAAC,MAAM;AACtE,IAAA,MAAM,gBAAgB,GAAG,UAAU,KAAK,YAAY,GAAG,EAAE,CAAC,MAAM,GAAG,EAAE,CAAC,KAAK;AAC3E,IAAA,IAAI,MAAM,KAAK,MAAM,EAAE;AACrB,QAAA,eAAe,GAAG,UAAU,GAAG,SAAS;AACxC,QAAA,IAAI,eAAe,GAAG,CAAC,EAAE;YACvB,SAAS,GAAG,eAAe;QAC7B;aAAO;AACL,YAAA,iBAAiB,GAAG,IAAI,CAAC,KAAK,CAAC,eAAe,CAAC;YAC/C,SAAS;gBACP,CAAC,GAAG,CAAC,eAAe,GAAG,iBAAiB,IAAI,iBAAiB;QACjE;IACF;AAAO,SAAA,IAAI,MAAM,KAAK,OAAO,EAAE;AAC7B,QAAA,SAAS,GAAG,UAAU,GAAG,SAAS;IACpC;;AAGA,IAAA,MAAM,eAAe,GAAG,UAAU,CAAC,MAAM,GAAG,SAAS;AAErD,IAAA,MAAM,WAAW,GAAG,SAAS,GAAG,SAAS;AACzC,IAAA,MAAM,gBAAgB,GAAG,SAAS,GAAG,SAAS;IAE9C,aAAa,CAAC,CAAC,CAAC,GAAG,aAAa,CAAC,CAAC,CAAC,GAAG,SAAS;IAC/C,aAAa,CAAC,CAAC,CAAC,GAAG,aAAa,CAAC,CAAC,CAAC,GAAG,SAAS;IAE/C,MAAM,WAAW,GAAG,CAAA,SAAA,EAAY,CAAC,CAAA,CAAA,EAAI,IAAI,CAAC,MAAM,EAAE,CAAA,CAAE;AACpD,IAAA,MAAM,QAAQ,GAAG,CAAA,KAAA,EAAQ,WAAW,GAAG;AACvC,IAAA,IAAI,EAAE,CAAC,KAAK,GAAG,CAAC,EAAE;QAChB,KAAK,CAAC,IAAI,CACRlC,gBAAA,CAAA,aAAA,CAAA,UAAA,EAAA,EAAU,GAAG,EAAE,WAAW,EAAE,EAAE,EAAE,WAAW,EAAA;YACzCA,gBAAA,CAAA,aAAA,CAAA,MAAA,EAAA,EAAM,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,KAAK,EAAE,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,EAAE,CAAC,MAAM,EAAA,CAAI,CAC/C,CACZ;QACD,MAAM,UAAU,GAAG,EAAE;AACrB,QAAA,MAAM,SAAS,GACb,UAAU,KAAK,YAAY,GAAG,CAAC,GAAG,EAAE,CAAC,MAAM,GAAG,eAAe;AAC/D,QAAA,MAAM,OAAO,GAAG,UAAU,KAAK,YAAY,GAAG,WAAW,GAAG,CAAC,WAAW;AACxE,QAAA,MAAM,QAAQ,GACZ,UAAU,KAAK;cACX,CAAC,IAAI,EAAE,gBAAgB,KAAK,IAAI,GAAG;AACrC,cAAE,CAAC,IAAI,EAAE,gBAAgB,EAAE,YAAY,KAAK,IAAI,GAAG,CAAC,GAAG,YAAY;AAEvE,QAAA,KACE,IAAI,IAAI,GAAG,SAAS,EACpB,QAAQ,CAAC,IAAI,EAAE,WAAW,EAAE,OAAO,CAAC,EACpC,IAAI,IAAI,OAAO,EACf;AACA,YAAA,KACE,IAAI,KAAK,GAAG,CAAC,EACb,KAAK,GAAG,gBAAgB,EACxB,KAAK,IAAI,gBAAgB,EACzB;AACA,gBAAA,MAAM,KAAK,GAAG,UAAU,KAAK,YAAY,GAAG,IAAI,GAAG,KAAK;AACxD,gBAAA,MAAM,KAAK,GAAG,UAAU,KAAK,YAAY,GAAG,KAAK,GAAG,IAAI;gBACxD,MAAM,OAAO,GAAG,KAAK,GAAG,aAAa,CAAC,CAAC,CAAC;gBACxC,MAAM,OAAO,GAAG,KAAK,GAAG,aAAa,CAAC,CAAC,CAAC;gBACxC,UAAU,CAAC,IAAI,CACbA,gBAAA,CAAA,aAAA,CAAA,MAAA,EAAA,EACE,GAAG,EAAE,CAAA,KAAA,EAAQ,IAAI,CAAA,CAAA,EAAI,KAAK,CAAA,CAAE,EAC5B,SAAS,EAAE,CAAA,UAAA,EAAa,OAAO,CAAA,CAAA,EAAI,OAAO,CAAA,QAAA,EAAW,SAAS,CAAA,CAAA,CAAG,EACjE,YAAY,EAAE,oBAAoB,EAClC,CAAC,EAAE,KAAK,EACR,KAAK,EAAE,OAAO,CAAA,MAAA,CAAA,MAAA,CAAA,MAAA,CAAA,MAAA,CAAA,EAAA,EAAM,KAAK,CAAA,EAAK,KAAK,CAAC,IAAI,CAAA,EAAI,CAAC,CAAC,EAC9C,SAAS,EAAE,OAAO,CAAA,MAAA,CAAA,MAAA,CAAA,MAAA,CAAA,MAAA,CAAA,EAAA,EAAM,KAAK,CAAA,EAAK,KAAK,CAAC,IAAI,CAAA,EAAI,CAAC,CAAC,EAAA,CAClD,CACH;YACH;QACF;AACA,QAAA,KAAK,CAAC,IAAI,CACRA,gBAAA,CAAA,aAAA,CAAA,GAAA,EAAA,EAAG,GAAG,EAAE,CAAA,eAAA,EAAkB,CAAC,CAAA,CAAE,EAAE,QAAQ,EAAE,QAAQ,IAC9C,UAAU,CACT,CACL;IACH;AACA,IAAA,OAAO,KAAK;AACd,CAAC;AAEG,SAAU,gBAAgB,CAAC,EAC/B,IAAI,EACJ,IAAI,EACJ,UAAU,EACV,uBAAuB,EACvB,OAAO,EACP,UAAU,EACV,OAAO,EACP,YAAY,EACZ,SAAS,EACT,MAAM,EAEN,MAAM,EACP,EAAA;IACC,IAAI,mBAAmB,GAAG,EAAE;IAC5B,MAAM,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC;IAC9B,IAAI,CAAC,OAAO,CAAC,CAAC,GAAG,EAAE,OAAO,KAAI;AAC5B,QAAA,MAAM,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC;AAExB,QAAA,MAAM,cAAc,GAAG,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC;QAChD,MAAM,YAAY,GAAG,cAAc,GAAG,MAAM,CAAC,SAAS,CAAC,MAAM;QAE7D,IAAI,QAAQ,GAAG,CAAC;QAChB,IAAI,QAAQ,GAAG,CAAC;AAEhB,QAAA,MAAM,gBAAgB,GAAG,MAAM,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,CAAC,KAAI;AACzD,YAAA,MAAM,WAAW,GAAG,UAAU,IAAI,UAAU,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC;AAE3D,YAAA,IAAI,SAAS,GAAG,KAAK,CAAC,CAAC;AACvB,YAAA,IAAI,SAAS,GAAG,KAAK,CAAC,IAAI;YAC1B,IAAI,UAAU,GAAG,YAAY;AAC7B,YAAA,IAAI,WAAW,GAAG,KAAK,CAAC,WAAW;YACnC,IAAI,EAAE,GAAgB,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE;AACpC,YAAA,IAAI,CAAC,KAAK,CAAC,QAAQ,EAAE;AACnB,gBAAA,SAAS,IAAI,KAAK,CAAC,WAAW;YAChC;AAEA,YAAA,IAAI,UAAU,KAAK,YAAY,EAAE;;AAE/B,gBAAA,SAAS,GAAG,KAAK,CAAC,CAAC;AACnB,gBAAA,SAAS,GAAG,KAAK,CAAC,IAAI;gBACtB,WAAW,GAAG,YAAY;AAC1B,gBAAA,UAAU,GAAG,KAAK,CAAC,WAAW;AAC9B,gBAAA,EAAE,CAAC,CAAC,GAAG,KAAK,CAAC,WAAW;AACxB,gBAAA,IAAI,KAAK,CAAC,QAAQ,EAAE;AAClB,oBAAA,SAAS,IAAI,KAAK,CAAC,WAAW;AAC9B,oBAAA,EAAE,CAAC,CAAC,GAAG,SAAS;gBAClB;YACF;AAEA,YAAA,IAAI,SAAS,EACX,SAAS,GAAG,EAAE,EACd,OAAO,GAAG,CAAC,EACX,OAAO,GAAG,CAAC;AAEb,YAAA,IAAI,UAAU,KAAK,QAAQ,EAAE;gBAC3B,IAAI,EAAE,EAAE,EAAE;AACT,gBAAA,CAAC,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,yBAAyB,CAAC;oBAC5E,IAAI;oBACJ,MAAM;oBACN,YAAY;oBACZ,KAAK;oBACL;AACD,iBAAA,CAAC;gBACF,OAAO,GAAG,EAAE;gBACZ,OAAO,GAAG,EAAE;AACZ,gBAAA,EAAE,CAAC,CAAC,GAAG,SAAS;YAClB;iBAAO;gBACL,SAAS,IAAI,QAAQ;gBACrB,SAAS,IAAI,QAAQ;AACrB,gBAAA,SAAS,GAAG;AACV,oBAAA,QAAQ,EAAE,MAAM;AAChB,oBAAA,CAAC,EAAE,SAAS;AACZ,oBAAA,CAAC,EAAE,SAAS;oBACZ,KAAK,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,UAAU,CAAC;oBAC9B,MAAM,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,WAAW,CAAC;AAChC,oBAAA,EAAE,EAAE,CAAC;AACL,oBAAA,EAAE,EAAE;iBACL;AACD,gBAAA,IAAI,UAAU,KAAK,UAAU,EAAE;AAC7B,oBAAA,EAAE,CAAC,CAAC,GAAG,SAAS;gBAClB;YACF;YAEA,MAAM,cAAc,GAAG,uBAAuB,CAAC,KAAK,EAAE,CAAC,CAAC;AAExD,YAAA,EAAE,CAAC,CAAC,GAAG,SAAS;AAChB,YAAA,EAAE,CAAC,MAAM,GAAG,YAAY,GAAG,CAAC;AAC5B,YAAA,EAAE,CAAC,MAAM,GAAG,WAAW;AACvB,YAAA,EAAE,CAAC,KAAK,GAAG,UAAU;YAErB,IAAI,IAAI,CAAC,IAAI,IAAI,UAAU,KAAK,QAAQ,EAAE;AACxC,gBAAA,IAAI,CAAC,UAAU,GAAG,iBAAiB,CAAC;oBAClC,IAAI;oBACJ,UAAU;oBACV,WAAW;oBACX,UAAU;oBACV,OAAO;oBACP,WAAW;oBACX;AACD,iBAAA,CAAC;YACJ;iBAAO,IAAI,IAAI,CAAC,IAAI,IAAI,UAAU,KAAK,QAAQ,EAAE;AAC/C,gBAAA,OAAO,CAAC,KAAK,CAAC,kDAAkD,CAAC;YACnE;YACA,MAAM,mBAAmB,GAAG,IAAI,CAAC,UAAU,IACzCA,gBAAA,CAAA,aAAA,CAAA,GAAA,EAAA,EACE,GAAG,EAAE,CAAA,MAAA,EAAS,KAAK,CAAC,SAAS,CAAA,CAAE,EAC/B,SAAS,EACiB,aAAa,SAAS,CAAA,CAAA,EAAI,SAAS,CAAA,CAAA,CAAG,EAAA,EAG/D,IAAI,CAAC,UAAU,CAAA,MAAA,CAAA,MAAA,CAAA,MAAA,CAAA,MAAA,CAAA,MAAA,CAAA,MAAA,CAAA,EAAA,EACT,KAAK,CAAC,IAAI,CAAA,EAAK,KAAK,KAAE,CAAC,EAAE,SAAS,EAAE,CAAC,EAAE,SAAS,EAAA,CAAA,EACrD,CAAC,EAAA,MAAA,CAAA,MAAA,CAAA,MAAA,CAAA,MAAA,CAAA,EAAA,EAEI,EAAE,CAAA,EAAA,EAEL,UAAU;gBACV,OAAO;gBACP,OAAO;gBACP,YAAY;gBACZ,SAAS;gBACT,MAAM;gBACN,MAAM,EAAA,CAAA,CAET,CACC,KACF,MAAA,CAAA,MAAA,CAAA,MAAA,CAAA,MAAA,CAAA,EAEA,SAAS,EAAE,OAAO,CAAA,MAAA,CAAA,MAAA,CAAA,MAAA,CAAA,MAAA,CAAA,EAAA,EAAM,KAAK,CAAA,EAAK,KAAK,CAAC,IAAI,CAAA,EAAI,CAAC,CAAC,EAClD,GAAG,EAAE,CAAA,MAAA,EAAS,KAAK,CAAC,SAAS,CAAA,CAAE,EAC/B,SAAS,EAAE,SAAS,EACpB,KAAK,EAAE,OAAO,CAAA,MAAA,CAAA,MAAA,CAAA,MAAA,CAAA,MAAA,CAAA,EAAA,EAAM,KAAK,GAAK,KAAK,CAAC,IAAI,CAAA,EAAI,OAAO,CAAC,IACjD,SAAS,CAAA,EACT,cAAc,CAAA,CAEpB;AAED,YAAA,MAAM,eAAe,GAAG;AACtB,gBAAA,CAAC,EAAE,GAAG;gBACN,EAAE;gBACF,KAAK;AACL,gBAAA,EAAE,EAAE,OAAO;AACX,gBAAA,EAAE,EAAE,OAAO;gBACX,WAAW;AACX,gBAAA,aAAa,EAAE;aAChB;AACD,YAAA,IAAI,UAAU,KAAK,YAAY,EAAE;gBAC/B,QAAQ,IAAI,WAAW;YACzB;iBAAO;gBACL,QAAQ,IAAI,UAAU;YACxB;;AAGA,YAAA,OAAO,eAAe;AACxB,QAAA,CAAC,CAAC;QACF,mBAAmB,GAAG,CAAC,GAAG,mBAAmB,EAAE,GAAG,gBAAgB,CAAC;AACrE,IAAA,CAAC,CAAC;AACF,IAAA,OAAO,mBAAmB;AAC5B;AAEM,SAAU,SAAS,CAAC,EACxB,IAAI,EACJ,IAAI,EACJ,UAAU,EACV,uBAAuB,EACvB,OAAO,EACP,UAAU,EACV,OAAO,EACP,YAAY,EACZ,SAAS,EACT,MAAM,EAEN,MAAM,EACP,EAAA;IACC,MAAM,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC;IAC9B,IAAI,mBAAmB,GAAG,EAAE;IAC5B,IAAI,CAAC,OAAO,CAAC,CAAC,GAAG,EAAE,OAAO,KAAI;AAC5B,QAAA,MAAM,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC;AACxB,QAAA,MAAM,cAAc,GAAG,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC;QAEhD,MAAM,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,KAAK,EAAE,CAAC,KAAI;AACpC,YAAA,MAAM,SAAS,GAAG,KAAK,CAAC,WAAW;AACnC,YAAA,MAAM,WAAW,GAAG,UAAU,IAAI,UAAU,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC;AAE3D,YAAA,IAAI,SAAS,GAAG,KAAK,CAAC,CAAC;AACvB,YAAA,IAAI,SAAS,GAAG,KAAK,CAAC,MAAM;YAC5B,IAAI,UAAU,GAAG,cAAc;YAC/B,IAAI,WAAW,GAAG,SAAS;YAE3B,IAAI,EAAE,GAAG,EAAE;AAEX,YAAA,IAAI,CAAC,KAAK,CAAC,QAAQ,EAAE;AACnB,gBAAA,SAAS,IAAI,KAAK,CAAC,WAAW;YAChC;AAEA,YAAA,IAAI,UAAU,KAAK,UAAU,EAAE;AAC7B,gBAAA,EAAE,GAAG;AACH,oBAAA,CAAC,EAAE,SAAS;AACZ,oBAAA,CAAC,EAAE,SAAS;oBACZ,MAAM,EAAE,cAAc,GAAG,CAAC;AAC1B,oBAAA,MAAM,EAAE,WAAW;AACnB,oBAAA,KAAK,EAAE;iBACR;YACH;AAAO,iBAAA,IAAI,UAAU,KAAK,YAAY,EAAE;AACtC,gBAAA,SAAS,GAAG,KAAK,CAAC,CAAC;AACnB,gBAAA,SAAS,GAAG,KAAK,CAAC,MAAM;gBACxB,WAAW,GAAG,cAAc;gBAC5B,UAAU,GAAG,SAAS;AAEtB,gBAAA,EAAE,GAAG;AACH,oBAAA,CAAC,EAAE,SAAS,GAAG,KAAK,CAAC,WAAW;AAChC,oBAAA,CAAC,EAAE,SAAS;oBACZ,MAAM,EAAE,cAAc,GAAG,CAAC;AAC1B,oBAAA,MAAM,EAAE,WAAW;AACnB,oBAAA,KAAK,EAAE;iBACR;AACD,gBAAA,IAAI,KAAK,CAAC,QAAQ,EAAE;oBAClB,SAAS,GAAG,KAAK,CAAC,MAAM,GAAG,KAAK,CAAC,WAAW;gBAC9C;YACF;YAEA,IAAI,SAAS,EACX,OAAO,GAAG,CAAC,EACX,OAAO,GAAG,CAAC;AAEb,YAAA,IAAI,UAAU,KAAK,QAAQ,EAAE;gBAC3B,IAAI,EAAE,EAAE,EAAE;AACT,gBAAA,CAAC,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,yBAAyB,CAAC;oBACxE,IAAI;oBACJ,MAAM;oBACN,YAAY;oBACZ,KAAK;oBACL;AACD,iBAAA,CAAC;gBACF,OAAO,GAAG,EAAE;gBACZ,OAAO,GAAG,EAAE;gBACZ,WAAW,GAAG,SAAS;gBACvB,UAAU,GAAG,SAAS;AAEtB,gBAAA,EAAE,GAAG;AACH,oBAAA,CAAC,EAAE,SAAS;AACZ,oBAAA,CAAC,EAAE,SAAS;oBACZ,MAAM,EAAE,cAAc,GAAG,CAAC;AAC1B,oBAAA,MAAM,EAAE,WAAW;AACnB,oBAAA,KAAK,EAAE;iBACR;YACH;iBAAO;AACL,gBAAA,SAAS,GAAG;AACV,oBAAA,QAAQ,EAAE,MAAM;AAChB,oBAAA,CAAC,EAAE,SAAS;AACZ,oBAAA,CAAC,EAAE,SAAS;oBACZ,KAAK,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,UAAU,CAAC;oBAC9B,MAAM,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,WAAW,CAAC;AAChC,oBAAA,EAAE,EAAE,CAAC;AACL,oBAAA,EAAE,EAAE;iBACL;YACH;YAEA,MAAM,cAAc,GAAG,uBAAuB,CAAC,KAAK,EAAE,CAAC,CAAC;YAExD,IAAI,IAAI,CAAC,IAAI,IAAI,UAAU,KAAK,QAAQ,EAAE;AACxC,gBAAA,IAAI,CAAC,UAAU,GAAG,iBAAiB,CAAC;oBAClC,IAAI;oBACJ,UAAU;oBACV,WAAW;oBACX,UAAU;oBACV,OAAO;oBACP,WAAW;oBACX;AACD,iBAAA,CAAC;YACJ;iBAAO,IAAI,IAAI,CAAC,IAAI,IAAI,UAAU,KAAK,YAAY,EAAE;AACnD,gBAAA,OAAO,CAAC,KAAK,CAAC,kDAAkD,CAAC;YACnE;YAEA,MAAM,mBAAmB,GAAG,IAAI,CAAC,UAAU,IACzCA,gBAAA,CAAA,aAAA,CAAA,GAAA,EAAA,EACE,GAAG,EAAE,CAAA,MAAA,EAAS,KAAK,CAAC,SAAS,CAAA,CAAE,EAC/B,SAAS,EAAE,CAAA,UAAA,EAAa,SAAS,CAAA,CAAA,EAAI,SAAS,CAAA,CAAA,CAAG,EACjD,IAAI,EAAC,KAAK,EACV,QAAQ,EAAE,EAAE,EAAA,EAEX,IAAI,CAAC,UAAU,CAAA,MAAA,CAAA,MAAA,CAAA,MAAA,CAAA,MAAA,CAAA,MAAA,CAAA,MAAA,CAAA,EAAA,EACT,KAAK,CAAC,IAAI,CAAA,EAAK,KAAK,CAAA,EAAA,EAAE,CAAC,EAAE,SAAS,EAAE,CAAC,EAAE,SAAS,EAAA,CAAA,EACrD,CAAC,EAAA,MAAA,CAAA,MAAA,CAAA,MAAA,CAAA,MAAA,CAAA,EAAA,EAEI,EAAE,CAAA,EAAA,EAEL,UAAU;gBACV,OAAO;gBACP,OAAO;gBACP,YAAY;gBACZ,SAAS;gBACT,MAAM;gBACN,MAAM,EAAA,CAAA,CAET,CACC,KACF,MAAA,CAAA,MAAA,CAAA,MAAA,CAAA,MAAA,CAAA,EAEA,SAAS,EAAE,OAAO,iCAAM,KAAK,CAAA,EAAK,KAAK,CAAC,IAAI,GAAI,CAAC,CAAC,EAClD,GAAG,EAAE,SAAS,KAAK,CAAC,SAAS,CAAA,CAAE,EAC/B,KAAK,EAAE,OAAO,iCAAM,KAAK,CAAA,EAAK,KAAK,CAAC,IAAI,GAAI,OAAO,CAAC,IACjD,cAAc,CAAA,EACd,SAAS,CAAA,CAEf;YAED,mBAAmB,CAAC,IAAI,CAAC;AACvB,gBAAA,CAAC,EAAE,GAAG;gBACN,EAAE;gBACF,KAAK;AACL,gBAAA,EAAE,EAAE,OAAO;AACX,gBAAA,EAAE,EAAE,OAAO;gBACX,WAAW;AACX,gBAAA,aAAa,EAAE;AAChB,aAAA,CAAC;AACJ,QAAA,CAAC,CAAC;AACJ,IAAA,CAAC,CAAC;AAEF,IAAA,OAAO,mBAAmB;AAC5B;AAEM,SAAU,cAAc,CAAC,EAC7B,IAAI,EACJ,IAAI,EACJ,UAAU,EACV,uBAAuB,EACvB,OAAO,EACP,UAAU,EACV,OAAO,EACP,YAAY,EACZ,SAAS,EACT,MAAM,EAEN,MAAM,EACP,EAAA;IACC,IAAI,mBAAmB,GAAG,EAAE;IAC5B,MAAM,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC;IAC9B,IAAI,CAAC,OAAO,CAAC,CAAC,GAAG,EAAE,OAAO,KAAI;AAC5B,QAAA,MAAM,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC;QACxB,MAAM,gBAAgB,GAAG,EAAE;QAE3B,MAAM,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,KAAK,EAAE,CAAC,KAAI;YACpC,IAAI,WAAW,EAAE,YAAY;AAC7B,YAAA,IAAI,OAAO,GAAG,CAAC,EAAE,OAAO,GAAG,CAAC;AAE5B,YAAA,MAAM,WAAW,GAAG,UAAU,IAAI,UAAU,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC;AAC3D,YAAA,IAAI,SAAS,GAAG,MAAM,CAAC,CAAC;YACxB,IAAI,MAAM,GAAG,KAAK,CAAC,cAAc,GAAG,KAAK,CAAC,WAAW;AACrD,YAAA,IAAI,SAAS,GAAG,KAAK,CAAC,mBAAmB,GAAG,MAAM;AAClD,YAAA,IAAI,KAAK,GAAG,MAAM,CAAC,KAAK;AACxB,YAAA,IAAI,SAAS,GAQT;AACF,gBAAA,QAAQ,EAAE,MAAM;AAChB,gBAAA,MAAM,EAAE,MAAM,GAAG,CAAC,GAAG,CAAC,MAAM,GAAG,MAAM;gBACrC,KAAK;AACL,gBAAA,CAAC,EAAE,SAAS;AACZ,gBAAA,CAAC,EAAE,MAAM,GAAG,CAAC,GAAG,SAAS,GAAG,MAAM,GAAG;aACtC;AAED,YAAA,IAAI,UAAU,KAAK,YAAY,EAAE;AAC/B,gBAAA,SAAS,GAAG,MAAM,CAAC,CAAC;AACpB,gBAAA,SAAS,GAAG,KAAK,CAAC,WAAW;gBAC7B,WAAW,GAAG,KAAK,CAAC,cAAc,GAAG,KAAK,CAAC,WAAW;AACtD,gBAAA,YAAY,GAAG,KAAK,CAAC,YAAY;gBACjC,KAAK,GAAG,KAAK,CAAC,cAAc,GAAG,KAAK,CAAC,WAAW;AAChD,gBAAA,MAAM,GAAG,MAAM,CAAC,KAAK;AACrB,gBAAA,SAAS,GAAG;AACV,oBAAA,QAAQ,EAAE,MAAM;oBAChB,MAAM;AACN,oBAAA,KAAK,EAAE,KAAK,GAAG,CAAC,GAAG,CAAC,KAAK,GAAG,KAAK;AACjC,oBAAA,CAAC,EAAE,KAAK,GAAG,CAAC,GAAG,SAAS,GAAG,KAAK,GAAG,SAAS;AAC5C,oBAAA,CAAC,EAAE;iBACJ;YACH;AAAO,iBAAA,IAAI,UAAU,KAAK,QAAQ,EAAE;gBAClC,IAAI,EAAE,EAAE,EAAE;gBACT,CAAC,EAAE,SAAS,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,yBAAyB,CAAC;oBAClD,KAAK;oBACL,IAAI;oBACJ,MAAM;oBACN,YAAY;oBACZ;AACD,iBAAA,CAAC;gBACF,OAAO,GAAG,EAAE;gBACZ,OAAO,GAAG,EAAE;YACd;;YAIA,MAAM,cAAc,GAAG,uBAAuB,CAAC,KAAK,EAAE,CAAC,CAAC;AACxD,YAAA,MAAM,EAAE,GAAG;AACT,gBAAA,CAAC,EAAE,SAAS;AACZ,gBAAA,CAAC,EAAE,SAAS;gBACZ,WAAW;gBACX,YAAY;gBACZ;aACD;YAED,MAAM,mBAAmB,GAAG,IAAI,CAAC,UAAU,IACzCA,gBAAA,CAAA,aAAA,CAAA,GAAA,EAAA,EACE,GAAG,EAAE,CAAA,MAAA,EAAS,KAAK,CAAC,SAAS,CAAA,CAAE,EAC/B,SAAS,EAAE,CAAA,UAAA,EAAa,SAAS,CAAA,CAAA,EAAI,SAAS,GAAG,MAAM,CAAA,CAAA,CAAG,EAAA,EAEzD,IAAI,CAAC,UAAU,+CACT,KAAK,CAAC,IAAI,CAAA,EAAK,KAAK,CAAA,EAAA,EAAE,CAAC,EAAE,SAAS,EAAE,CAAC,EAAE,SAAS,KACrD,CAAC,EAAA,MAAA,CAAA,MAAA,CAAA,MAAA,CAAA,MAAA,CAAA,EAAA,EAEI,EAAE,CAAA,EAAA,EAEL,UAAU;gBACV,OAAO;gBACP,OAAO;gBACP,YAAY;gBACZ,SAAS;gBACT,MAAM;gBACN,MAAM,EAAA,CAAA,CAET,CACC,KACF,MAAA,CAAA,MAAA,CAAA,MAAA,CAAA,MAAA,CAAA,EAEA,SAAS,EAAE,OAAO,iCAAM,KAAK,CAAA,EAAK,KAAK,CAAC,IAAI,GAAI,CAAC,CAAC,EAClD,GAAG,EAAE,SAAS,KAAK,CAAC,SAAS,CAAA,CAAE,EAC/B,KAAK,EAAE,OAAO,iCAAM,KAAK,CAAA,EAAK,KAAK,CAAC,IAAI,GAAI,OAAO,CAAC,IACjD,SAAS,CAAA,EACT,cAAc,CAAA,CAEpB;AAED,YAAA,MAAM,eAAe,GAAG;AACtB,gBAAA,CAAC,EAAE,GAAG;gBACN,EAAE;gBACF,KAAK;AACL,gBAAA,EAAE,EAAE,OAAO;AACX,gBAAA,EAAE,EAAE,OAAO;gBACX,WAAW;AACX,gBAAA,aAAa,EAAE;aAChB;AAED,YAAA,gBAAgB,CAAC,IAAI,CAAC,eAAe,CAAC;AACxC,QAAA,CAAC,CAAC;QACF,mBAAmB,GAAG,CAAC,GAAG,mBAAmB,EAAE,GAAG,gBAAgB,CAAC;AACrE,IAAA,CAAC,CAAC;AAEF,IAAA,OAAO,mBAAmB;AAC5B;AAEM,SAAU,WAAW,CAAC,EAC1B,IAAI,EACJ,IAAI,EACJ,UAAU,EACV,uBAAuB,EACvB,OAAO,EACP,UAAU,EACV,OAAO,EACP,YAAY,EACZ,SAAS,EACT,MAAM,EAEN,MAAM,EACP,EAAA;AACC,IAAA,MAAM,YAAY,GAAG,IAAI,CAAC,CAAC,IAAI,CAAC;IAChC,IAAI,mBAAmB,GAAG,EAAE;IAC5B,MAAM,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC;IAE9B,IAAI,CAAC,OAAO,CAAC,CAAC,GAAG,EAAE,OAAO,KAAI;AAC5B,QAAA,MAAM,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC;QAExB,MAAM,gBAAgB,GAAG,EAAE;QAE3B,MAAM,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,KAAK,EAAE,CAAC,KAAI;AACpC,YAAA,MAAM,WAAW,GAAG,UAAU,IAAI,UAAU,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC;AAE3D,YAAA,IAAI,SAAS,GAAG,MAAM,CAAC,MAAM;AAC7B,YAAA,IAAI,SAAS,GAAG,KAAK,CAAC,mBAAmB;AAEzC,YAAA,IAAI,UAAU,KAAK,YAAY,EAAE;AAC/B,gBAAA,SAAS,GAAG,MAAM,CAAC,MAAM;AACzB,gBAAA,SAAS,GAAG,KAAK,CAAC,WAAW;YAC/B;AAAO,iBAAA,IAAI,UAAU,KAAK,QAAQ,EAAE;AAClC,gBAAA,MAAM,KAAK,GAAG,MAAM,CAAC,UAAU;AAE/B,gBAAA,MAAM,SAAS,GAAG,KAAK,CAAC,WAAW,GAAG,CAAC;gBACvC,MAAM,YAAY,GAAG,iBAAiB,CACpC,CAAC,YAAY,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,YAAY,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAC1C,KAAK,EACL,SAAS,CACV;AACD,gBAAA,SAAS,GAAG,YAAY,CAAC,CAAC,CAAC;AAC3B,gBAAA,SAAS,GAAG,YAAY,CAAC,CAAC,CAAC;YAC7B;;AAGA,YAAA,MAAM,kBAAkB,GACtB,OAAO,YAAY,KAAK;AACtB,kBAAE,YAAY,CAAC,KAAK,EAAE,CAAC;kBACrB,YAAY;YAClB,MAAM,cAAc,GAAG,uBAAuB,CAAC,KAAK,EAAE,CAAC,CAAC;YAExD,MAAM,mBAAmB,GAAG,IAAI,CAAC,UAAU,IACzCA,gBAAA,CAAA,aAAA,CAAA,GAAA,EAAA,EACE,GAAG,EAAE,CAAA,MAAA,EAAS,KAAK,CAAC,SAAS,CAAA,CAAE,EAC/B,SAAS,EAAE,CAAA,UAAA,EAAa,SAAS,CAAA,CAAA,EAAI,SAAS,CAAA,CAAA,CAAG,IAEhD,IAAI,CAAC,UAAU,CAAA,MAAA,CAAA,MAAA,CAAA,MAAA,CAAA,MAAA,CAAA,MAAA,CAAA,MAAA,CAAA,EAAA,EAET,KAAK,CAAC,IAAI,CAAA,EACV,KAAK,CAAA,EAAA,EACR,CAAC,EAAE,SAAS,EACZ,CAAC,EAAE,SAAS,EACZ,KAAK,EAAE,MAAM,CAAC,KAAK,EAAA,CAAA,EAErB,CAAC,EACD;AACE,gBAAA,CAAC,EAAE,YAAY;AACf,gBAAA,CAAC,EAAE,SAAS;AACZ,gBAAA,CAAC,EAAE,SAAS;gBAEZ,UAAU;gBACV,OAAO;gBACP,OAAO;gBACP,YAAY;gBACZ,SAAS;gBACT,MAAM;gBACN;AACD,aAAA,CACF,CACC,qBAGF,SAAS,EAAE,OAAO,CAAA,MAAA,CAAA,MAAA,CAAA,MAAA,CAAA,MAAA,CAAA,EAAA,EAAM,KAAK,CAAA,EAAK,KAAK,CAAC,IAAI,GAAI,CAAC,CAAC,EAClD,QAAQ,EAAE,MAAM,EAChB,GAAG,EAAE,SAAS,KAAK,CAAC,SAAS,CAAA,CAAE,EAC/B,MAAM,EAAE,kBAAkB,GAAG,CAAC,EAC9B,KAAK,EAAE,kBAAkB,GAAG,CAAC,EAC7B,CAAC,EAAE,SAAS,GAAG,kBAAkB,EACjC,CAAC,EAAE,SAAS,GAAG,kBAAkB,EACjC,EAAE,EAAE,kBAAkB,EACtB,EAAE,EAAE,kBAAkB,EACtB,KAAK,EAAE,OAAO,iCAAM,KAAK,CAAA,EAAK,KAAK,CAAC,IAAI,CAAA,EAAI,OAAO,CAAC,EAAA,EACjD,cAAc,EAEpB;AAED,YAAA,MAAM,eAAe,GAAG;AACtB,gBAAA,CAAC,EAAE,GAAG;AACN,gBAAA,EAAE,EAAE;AACF,oBAAA,CAAC,EAAE,SAAS;AACZ,oBAAA,CAAC,EAAE;AACJ,iBAAA;gBACD,KAAK;gBACL,WAAW;AACX,gBAAA,aAAa,EAAE;aAChB;AAED,YAAA,gBAAgB,CAAC,IAAI,CAAC,eAAe,CAAC;AACxC,QAAA,CAAC,CAAC;QACF,mBAAmB,GAAG,CAAC,GAAG,mBAAmB,EAAE,GAAG,gBAAgB,CAAC;AACrE,IAAA,CAAC,CAAC;AAEF,IAAA,OAAO,mBAAmB;AAC5B;;ACryBO,MAAM,eAAe,GAAG,KAAK,IAAI,MAAM,KAAK;;ACU5C,MAAM,UAAU,GAAG;AACxB,IAAA,UAAU,EAAE,gBAAgB;AAC5B,IAAA,GAAG,EAAE,SAAS;AACd,IAAA,KAAK,EAAE,WAAW;AAClB,IAAA,KAAK,EAAE,WAAW;AAClB,IAAA,QAAQ,EAAE;CACX;AAEM,MAAM,MAAM,GAAG,CAAC,CAAC,MAAM,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC;AAE/C,MAAM,YAAY,GAAG,eAAe,CAAC,CAAC,CAAC;AACvC,MAAM,KAAK,GAAG,IAAI,CAAC,EAAE,GAAG,CAAC;AAEzB,MAAM,oBAAoB,GAAG;IAClC,GAAG,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,WAAW,EAAE;IACzC,UAAU,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,mBAAmB,EAAE;IACxD,KAAK,EAAE,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,YAAY,EAAE;IAC9C,KAAK,EAAE,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,YAAY,EAAE;IAC9C,QAAQ,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,UAAU;CAC5C;;ACEK,SAAU,sBAAsB,CAAC,EACrC,OAAO,EACP,gBAAgB,EAChB,MAAM,EACN,OAAO,EACP,OAAO,EACP,UAAU,EACV,yBAAyB,EACzB,mBAAmB,EACnB,mBAAmB,EACQ,EAAA;IAC3B,OAAO,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,KAAI;QAC1B,MAAM,cAAc,GAAG,gBAAgB,CAAC,CAAC,CAAC,CAAC,KAAK;QAChD,IAAI,SAAS,GAAG,gBAAgB,CAAC,CAAC,CAAC,CAAC,CAAC;QACrC,IAAI,SAAS,GAAG,CAAC;QACjB,IAAI,MAAM,GAAG,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;AAC9B,QAAA,IAAI,KAAK,GAAG,cAAc,GAAG,OAAO;AACpC,QAAA,IAAI,UAAU,KAAK,YAAY,EAAE;AAC/B,YAAA,SAAS,GAAG,gBAAgB,CAAC,CAAC,CAAC,CAAC,CAAC;YACjC,SAAS,GAAG,CAAC;YACb,KAAK,GAAG,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;YACzB,MAAM,GAAG,cAAc;QACzB;AAEA,QAAA,IAAI,UAAU,KAAK,QAAQ,EAAE;AAC3B,YAAA,MAAM,EAAE,KAAK,EAAE,QAAQ,EAAE,SAAS,EAAE,QAAQ,EAAE,GAAG,OAAO,CAAC,CAAC,CAAC;AAC3D,YAAA,MAAM,kBAAkB,GAAG;AACzB,gBAAA,IAAI,EAAE,cAAc;AACpB,gBAAA,MAAM,EAAE,gBAAgB,CAAC,CAAC,CAAC;AAC3B,gBAAA,MAAM,EAAE,gBAAgB,CAAC,CAAC,CAAC,CAAC,SAAS;AACrC,gBAAA,OAAO,EAAE,gBAAgB,CAAC,CAAC,CAAC,CAAC,SAAS;AACtC,gBAAA,SAAS,EAAE;oBACT,QAAQ;oBACR,SAAS;oBACT,QAAQ;oBACR,MAAM,EAAE,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,GAAG;AAC7B;aACF;YACD,OAAO;AACL,gBAAA,QAAQ,EAAE,MAAM;gBAChB,GAAG,EAAE,CAAA,KAAA,EAAQ,CAAC,CAAA,CAAE;AAChB,gBAAA,CAAC,EAAE,KAAK;gBACR,SAAS,EAAE,aAAa,SAAS,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA,CAAA,CAAG;AAC9C,gBAAA,KAAK,EAAE,EAAE,OAAO,EAAE,CAAC,EAAE;AACrB,gBAAA,WAAW,EAAE,kBAAkB;AAC/B,gBAAA,aAAa,EACX,yBAAyB;qBACxB,CAAC,CAAC,KAAI;AACL,wBAAA,yBAAyB,CAAC,kBAAkB,EAAE,CAAC,CAAC;AAClD,oBAAA,CAAC,CAAC;AACJ,gBAAA,OAAO,EACL,mBAAmB;qBAClB,CAAC,CAAC,KAAI;AACL,wBAAA,mBAAmB,CAAC,kBAAkB,EAAE,CAAC,CAAC;AAC5C,oBAAA,CAAC,CAAC;AACJ,gBAAA,YAAY,EACV,mBAAmB;qBAClB,CAAC,CAAC,KAAI;AACL,wBAAA,mBAAmB,CAAC,kBAAkB,EAAE,CAAC,CAAC;AAC5C,oBAAA,CAAC,CAAC;AACJ,gBAAA,YAAY,EACV,mBAAmB;qBAClB,CAAC,CAAC,KAAI;wBACL,mBAAmB,CAAC,CAAC,CAAC;AACxB,oBAAA,CAAC;aACJ;QACH;AAEA,QAAA,MAAM,gBAAgB,GAAG;AACvB,YAAA,IAAI,EAAE,cAAc;AACpB,YAAA,MAAM,EAAE,gBAAgB,CAAC,CAAC,CAAC;AAC3B,YAAA,MAAM,EAAE,gBAAgB,CAAC,CAAC,CAAC,CAAC,SAAS;AACrC,YAAA,OAAO,EAAE,gBAAgB,CAAC,CAAC,CAAC,CAAC;SAC9B;QACD,OAAO;AACL,YAAA,QAAQ,EAAE,MAAM;YAChB,GAAG,EAAE,CAAA,MAAA,EAAS,CAAC,CAAA,CAAE;AACjB,YAAA,CAAC,EAAE,SAAS;AACZ,YAAA,CAAC,EAAE,SAAS;AACZ,YAAA,MAAM,EAAE,MAAM;AACd,YAAA,KAAK,EAAE,KAAK;AACZ,YAAA,KAAK,EAAE,EAAE,OAAO,EAAE,CAAC,EAAE;AACrB,YAAA,aAAa,EACX,yBAAyB;iBACxB,CAAC,CAAC,KAAI;AACL,oBAAA,yBAAyB,CAAC,gBAAgB,EAAE,CAAC,CAAC;AAChD,gBAAA,CAAC,CAAC;AACJ,YAAA,OAAO,EACL,mBAAmB;iBAClB,CAAC,CAAC,KAAI;AACL,oBAAA,mBAAmB,CAAC,gBAAgB,EAAE,CAAC,CAAC;AAC1C,gBAAA,CAAC,CAAC;AACJ,YAAA,YAAY,EACV,mBAAmB;iBAClB,CAAC,CAAC,KAAI;AACL,oBAAA,mBAAmB,CAAC,gBAAgB,EAAE,CAAC,CAAC;AAC1C,gBAAA,CAAC,CAAC;AACJ,YAAA,YAAY,EAAE,CAAC,CAAC,KAAI;AAClB,gBAAA,mBAAmB,CAAC,SAAS,EAAE,CAAC,CAAC;YACnC,CAAC;AACD,YAAA,WAAW,EAAE;SACd;AACH,IAAA,CAAC,CAAC;AACJ;;AChDM,SAAU,sBAAsB,CAAC,IAAgC,EAAA;IACrE,MAAM,EACJ,iBAAiB,EACjB,wBAAwB,EACxB,mBAAmB,EACnB,UAAU,EACV,mBAAmB,EACnB,yBAAyB,EACzB,mBAAmB,EACnB,YAAY,EAEZ,cAAc,EACd,cAAc,EACd,mBAAmB,EACnB,qBAAqB,EACrB,mBAAmB,EACnB,iBAAiB,EACjB,aAAa,EACb,uBAAuB,EACvB,SAAS,EACT,YAAY,EACZ,YAAY,EACZ,UAAU,EACV,UAAU,EAEV,SAAS,EACT,OAAO,EACP,gBAAgB,EAChB,mBAAmB,EACnB,SAAS,EAET,MAAM,EAEN,iBAAiB,EACjB,iBAAiB,EACjB,eAAe,EACf,eAAe,EAEf,gBAAgB,EAChB,YAAY,EACZ,MAAM,EAEN,kBAAkB,EAClB,kBAAkB,EAClB,gBAAgB,EAChB,IAAI,EACJ,aAAa,EACb,OAAO,EACP,KAAK,EACL,UAAU,EACV,sBAAsB,EACtB,MAAM,EACN,OAAO,EACP,MAAM,EACN,eAAe,EACf,YAAY,EACb,GAAG,IAAI;AAER,IAAA,IAAI,EAAE,cAAc,EAAE,GAAG,IAAI;;IAG7B,IAAI,iBAAiB,EAAE;AACrB,QAAA,MAAM,IAAI,GAAG,UAAU,KAAK,YAAY,GAAG,MAAM,GAAG,YAAY;AAChE,QAAA,MAAM,IAAI,GAAG,UAAU,KAAK,UAAU,GAAG,MAAM,GAAG,YAAY;QAC9D,IAAI,wBAAwB,EAAE;YAC5B,cAAc,GAAG,mBAAmB,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,KAAI;AAChD,gBAAA,MAAM,YAAY,GAAA,MAAA,CAAA,MAAA,CAAA,MAAA,CAAA,MAAA,CAAA,EAAA,EACb,CAAC,CAAC,KAAK,KACV,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EACtB,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,GACvB;gBACD,IAAIA,gBAAK,CAAC,cAAc,CAAC,CAAC,CAAC,aAAa,CAAC,EAAE;oBACzC,OAAO;wBACL,aAAa,EAAE,CAAC,CAAC,aAAa;AAC9B,wBAAA,WAAW,EAAE;qBACd;gBACH;gBACA,OAAA,MAAA,CAAA,MAAA,CAAA,MAAA,CAAA,MAAA,CAAA,EAAA,EACK,CAAC,CAAC,aAAa,CAAA,EAAA,EAClB,GAAG,EAAE,CAAA,MAAA,EAAS,CAAC,CAAA,CAAE,EACjB,KAAK,EAAE,EAAE,OAAO,EAAE,CAAC,EAAE,EACrB,WAAW,EAAE,YAAY,EACzB,OAAO,EACL,mBAAmB;yBAClB,CAAC,CAAC,KAAI;AACL,4BAAA,mBAAmB,CAAC,YAAY,CAAC,IAAI,EAAE,CAAC,CAAC;AAC3C,wBAAA,CAAC,CAAC,EACJ,aAAa,EACX,yBAAyB;yBACxB,CAAC,CAAC,KAAI;AACL,4BAAA,yBAAyB,CAAC,YAAY,CAAC,IAAI,EAAE,CAAC,CAAC;AACjD,wBAAA,CAAC,CAAC,EACJ,YAAY,EACV,mBAAmB;yBAClB,CAAC,CAAC,KAAI;AACL,4BAAA,mBAAmB,CAAC,YAAY,CAAC,IAAI,EAAE,CAAC,CAAC;AAC3C,wBAAA,CAAC,CAAC,EACJ,YAAY,EACV,mBAAmB;yBAClB,CAAC,CAAC,KAAI;AACL,4BAAA,mBAAmB,CAAC,SAAS,EAAE,CAAC,CAAC;AACnC,wBAAA,CAAC,CAAC,EAAA,CAAA;AAER,YAAA,CAAC,CAAC;QACJ;aAAO;AACL,YAAA,cAAc,GAAG,YAAY,CAAC,cAAc;QAC9C;IACF;AAEA,IAAA,MAAM,aAAa,GAAG,CAAC,SAAS,CAAC,IAAI,KAAK,SAAS;AACjD,QAAA,OAAO,SAAS,CAAC,IAAI,KAAK,UAAU;AACpC,QAAA,oBAAoB,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK;AACzC,QAAA,KAAK,EAAE,OAAO;AACd,QAAA,KAAK,EAAE;KACR;AAED,IAAA,MAAM,aAAa,GAAG;AACpB,QAAA,UAAU,EAAE;YACV,mBAAmB,EAAE,CAAC,IAAI,EAAE,CAAC,KAAK,IAAI,CAAC,CAAC,CAAC;YACzC,UAAU;AACV,YAAA,IAAI,EAAE,EAAE,SAAS,EAAE,OAAO,EAAyB;AACnD,YAAA,OAAO,EAAE,cAAc;AACvB,YAAA,OAAO,EAAE,cAAc;AACvB,YAAA,UAAU,EAAE,mBAAmB;AAC/B,YAAA,YAAY,EAAE,qBAAqB;AACnC,YAAA,QAAQ,EAAE,yBAAyB;AACnC,YAAA,IAAI,EAAE,aAAa;YACnB,uBAAuB;YACvB;AACD,SAAA;AACD,QAAA,SAAS,EAAE;AACT,YAAA,mBAAmB,EAAE,CAAC,IAAI,EAAE,CAAC,KAAI;AAC/B,gBAAA,MAAM,UAAU,GAAG,OAAO,CAAC,CAAC,CAAC;AAE7B,gBAAA,MAAM,cAAc,GAAG;AACrB,oBAAA,IAAI,EAAE,cAAc;AACpB,oBAAA,MAAM,EAAE,gBAAgB,CAAC,UAAU,CAAC;AACpC,oBAAA,MAAM,EAAE,gBAAgB,CAAC,UAAU,CAAC,CAAC,SAAS;AAC9C,oBAAA,OAAO,EAAE,gBAAgB,CAAC,UAAU,CAAC,CAAC,SAAS;oBAC/C;iBACD;AACD,gBAAA,OAAO,cAAc;YACvB,CAAC;YACD,IAAI,EAAE,mBAAmB,CAAC,KAAK;AAC/B,YAAA,QAAQ,EAAE,sBAAsB;AAChC,YAAA,YAAY,EAAE,mBAAmB;AACjC,YAAA,OAAO,EAAE,YAAY;AACrB,YAAA,OAAO,EAAE;AACV,SAAA;AACD,QAAA,MAAM,EAAE;YACN,mBAAmB,EAAE,CAAC,IAAI,EAAE,CAAC,MAAK,MAAA,CAAA,MAAA,CAAA,MAAA,CAAA,MAAA,CAAA,EAAA,GAC5B,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,GAAE,MAAA,CAAA,MAAA,CAAA,MAAA,CAAA,MAAA,CAAA,EAAA,EAAM,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,GAAK,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,CAAA,GAAK,IAAI,CAAC,CAAC,CAAC,MACjE,IAAI,EAAE,aAAa,EAAA,CAAA,CACnB;YACF,YAAY,EAAE,SAAS,CAAC,IAAI,IAAI,SAAS,CAAC,IAAI,KAAK,MAAM;AACzD,YAAA,IAAI,EAAE,mBAAmB;AACzB,YAAA,QAAQ,EAAE,mBAAmB;AAC7B,YAAA,YAAY,EAAE,iBAAiB;AAC/B,YAAA,OAAO,EAAE,UAAU;AACnB,YAAA,OAAO,EAAE,UAAU;AACnB,YAAA,IAAI,EAAE,gBAAgB;AACtB,YAAA,SAAS,EAAE;AACZ;KACF;IAED,IACE,eAAe,CAAC,QAAQ;QACxB,CAAC,YAAY,CAAC,iBAAiB,IAAI,EAAE,EAAE,IAAI,CAAC,GAAG,CAAC;YAC9C,CAAC,iBAAiB,IAAI,EAAE,EAAE,IAAI,CAAC,GAAG,CAAC,EACrC;AACA,QAAA,eAAe,CAAC,QAAQ,CAAC,iBAAiB,CAAC;IAC7C;IAEA,IACE,eAAe,CAAC,QAAQ;QACxB,CAAC,YAAY,CAAC,iBAAiB,IAAI,EAAE,EAAE,IAAI,CAAC,GAAG,CAAC;YAC9C,CAAC,iBAAiB,IAAI,EAAE,EAAE,IAAI,CAAC,GAAG,CAAC,EACrC;AACA,QAAA,eAAe,CAAC,QAAQ,CAAC,iBAAiB,CAAC;IAC7C;AAEA,IAAA,IAAI,cAAc;IAElB,IAAI,MAAM,EAAE;AACV,QAAA,cAAc,GAAG,MAAM,KAAK,IAAI,GAAG,EAAE,GAAE,MAAA,CAAA,MAAA,CAAA,EAAA,EAAM,MAAM,CAAE;;AAGrD,QAAA,IAAI,cAAc,CAAC,YAAY,EAAE;YAC/B,MAAM,WAAW,GAAG,IAAI,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;AAC1D,YAAA,cAAc,CAAC,YAAY,GAAG,cAAc,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC,KAAK,MAAK,MAAA,CAAA,MAAA,CAAA,MAAA,CAAA,MAAA,CAAA,EAAA,EACpE,KAAK,CAAA,EAAA,EACR,KAAK,EAAE,CAAC,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,KAAI;oBACpC,MAAM,IAAI,GAAG,WAAW,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,WAAW,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,QAAQ;oBAC3E,MAAM,IAAI,GAAG,WAAW,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,WAAW,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,QAAQ;oBAC3E,OAAO,IAAI,GAAG,IAAI;gBACpB,CAAC,CAAC,EAAA,CAAA,CACF,CAAC;QACL;IACF;IAEA,OAAO;QACL,gBAAgB;QAChB,YAAY;QACZ,kBAAkB;QAClB,kBAAkB;AAClB,QAAA,QAAQ,EAAE,gBAAgB;AAC1B,QAAA,IAAI,EAAE,IAAI;QACV,aAAa;AACb,QAAA,OAAO,EAAE,EAAE,MAAM,EAAE,OAAO,EAAE;QAC5B,KAAK;QACL,cAAc;AACd,QAAA,YAAY,EAAE,YAAY,CAAC,YAAY,GAAG,CAAC;QAC3C,UAAU;AACV,QAAA,UAAU,EAAE,sBAAsB;QAClC,OAAO;QACP,OAAO;QACP,MAAM;QACN,MAAM;QACN,iBAAiB;QACjB,iBAAiB;QACjB,gBAAgB;QAChB,MAAM;QACN,cAAc;QACd,aAAa;QACb,eAAe;AACf,QAAA,KAAK,EAAE;KACR;AACH;;ACxQO,MAAM,sBAAsB,GAAG,CACpC,MAAyB,EACzB,SAAiB,EACjB,OAAe,KACb;AACF,IAAA,MAAM,kBAAkB,GAAG,MAAM,CAAC,MAAM,EAAE;IAE1C,MAAM,aAAa,GAAG,EAAE;IACxB,kBAAkB,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,KAAI;QAClC,MAAM,IAAI,GAAG,MAAM,CAAC,CAAC,CAAC,GAAG,OAAO;AAChC,QAAA,MAAM,IAAI,GAAG,kBAAkB,CAAC,CAAC,GAAG,CAAC;cACjC,MAAM,CAAC,kBAAkB,CAAC,CAAC,GAAG,CAAC,CAAC;cAChC,SAAS;QACb,MAAM,IAAI,GAAG,CAAC,IAAI,GAAG,IAAI,IAAI,CAAC;AAC9B,QAAA,aAAa,CAAC,CAAC,CAAC,GAAG,IAAI,GAAG,IAAI;AAChC,IAAA,CAAC,CAAC;AAEF,IAAA,OAAO,aAAa;AACtB,CAAC;AAEM,MAAM,qBAAqB,GAAG,CACnC,YAA+B,EAC/B,YAA+B,EAC/B,KAA2B,KACzB;AACF,IAAA,IAAI,OAAO;IACX,MAAM,gBAAgB,GAAG,EAAE;IAE3B,MAAM,EACJ,QAAQ,EAAE,WAAW,GAAG,CAAC,EACzB,WAAW,EAAE,eAAe,EAC5B,IAAI,EAAE,QAAQ,EACd,aAAa,EAAE,iBAAiB,EAChC,SAAS,EAAE,aAAa,EACxB,SAAS,EAAE,aAAa,EACxB,cAAc,EAAE,kBAAkB,EAClC,KAAK,EAAE,SAAS,EAChB,OAAO,EAAE,WAAW,EACpB,KAAK,EACL,UAAU,EAAE,cAAc,EAC1B,YAAY,EAAE,gBAAgB,EAC9B,YAAY,EAAE,gBAAgB,EAC9B,kBAAkB,EAClB,UAAU,EACV,mBAAmB,EACnB,mBAAmB,EACnB,yBAAyB,EACzB,IAAI,EACJ,gBAAgB,EAChB,KAAK,EAAE,SAAS,EAChB,MAAM,EACN,eAAe,EACf,oBAAoB,EACpB,sBAAsB,EACtB,kBAAkB,EAClB,kBAAkB,EAClB,UAAU,EACV,UAAU,EACV,MAAM,EACN,SAAS,EAAE,aAAa,EACxB,IAAI,EACJ,MAAM,EAAE,UAAU,EAClB,OAAO,EAAE,WAAW,EACpB,IAAI,EAAE,QAAQ,EACd,eAAe,EAAE,mBAAmB,EACpC,SAAS,EACT,WACsB,CACvB,GAAG,YAAY;;;AAIhB,IAAA,MAAM,OAAO,GAAG,UAAU,KAAK,QAAQ,GAAG,CAAC,GAAG,WAAW;AAEzD,IAAA,MAAM,WAAW,GAAG,aAAa,CAAC,eAAe,CAAC;AAClD,IAAA,MAAM,SAAS,GAAG,aAAa,CAAC,QAAQ,CAAsB;AAC9D,IAAA,MAAM,aAAa,GAAG,aAAa,CAAC,iBAAiB,CAAC;AAEtD,IAAA,MAAM,eAAe,GAAG,KAAK,CAAC,mBAAmB,CAAC,aAAa,EAAE,aAAa,EAAE,aAAa,EAAE,mBAAmB,CAAC;AAEnH,IAAA,MAAM,SAAS,GAAG,eAAe,CAAC,SAAS;AAC3C,IAAA,MAAM,SAAS,GAAG,eAAe,CAAC,SAAS;AAC3C,IAAA,MAAM,SAAS,GAAG,eAAe,CAAC,SAAS;IAE3C,MAAM,uBAAuB,GAAG,OAAO,EAAE,CAAC;AAE1C,IAAA,MAAM,EACJ,cAAc,EAAE,YAAY,EAAE,UAAU,EAAE,UAAU,EAAE,YAAY,EAClE,cAAc,EAAE,gBAAgB,EAAE,eAAe,EAAE,iBAAiB,EACpE,mBAAmB,EAAE,qBAAqB,EAC1C,iBAAiB,EAAE,mBAAmB,EAAE,qBAAqB,EAC9D,GAAG,KAAK,CAAC,QAAQ,CAChB,kBAAkB,EAAE,gBAAgB,EAAE,SAAS,EAAE,cAAc,EAAE,gBAAgB,EACjF,YAAY,CAAC,cAAc,EAAE,YAAY,CAAC,UAAU,EAAE,YAAY,CAAC,iBAAiB,EACpF,YAAY,CAAC,mBAAmB,EAChC,YAAY,CAAC,YAAY,EAAE,YAAY,CAAC,eAAe,EAAE,YAAY,CAAC,gBAAgB,CACvF;AACD,IAAA,MAAM,KAAK,GACT,OAAO,SAAS,KAAK,QAAQ;AAC7B,QAAA,CAACA,gBAAK,CAAC,cAAc,CAAC,SAAS,CAAC;AAChC,QAAA,SAAS,KAAK;AACZ,UAAE;UACA,EAAE,KAAK,EAAE,SAAS,EAAE,MAAM,EAAE,KAAK,EAAE;AAEzC,IAAA,MAAM,eAAe,GAAG,eAAe,CAAC,eAAe;AAEvD,IAAA,MAAM,iBAAiB,GAAG,KAAK,CAAC,OAAO,CAAC,aAAa;AACnD,UAAE;AACF,UAAE,CAAC,aAAa,CAAC;AAEnB,IAAA,MAAM,iBAAiB,GAAG,KAAK,CAAC,OAAO,CAAC,aAAa;AACnD,UAAE;AACF,UAAE,CAAC,aAAa,CAAC;;;IAInB,IAAI,kBAAkB,GAAG,SAAS;IAClC,IAAI,2BAA2B,GAAG,kBAAkB;AACpD,IAAA,IAAI,UAAU,KAAK,QAAQ,EAAE;QAC3B,IAAI,CAAC,2BAA2B,EAAE;;;YAGhC,MAAM,iBAAiB,GAAG,SAAS;AACnC,YAAA,2BAA2B,GAAG,CAAC,MAAgB,KAC7CyB,WAAG,CAAC,MAAM,EAAE,CAAC,CAAC,KAAI;gBAChB,IAAI,KAAK,GAAG,CAAC;AACb,gBAAA,KAAK,MAAM,QAAQ,IAAI,iBAAiB,EAAE;AACxC,oBAAA,KAAK,IAAI,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC;gBAC3B;AACA,gBAAA,OAAO,KAAK;AACd,YAAA,CAAC,CAAC;QACN;AACA,QAAA,kBAAkB,GAAG,CAAC,MAAM,CAAC,CAAC;IAChC;AAEA,IAAA,MAAM,EAAE,OAAO,EAAE,YAAY,EAAE,GAAG,sBAAsB,CAAC;QACvD,IAAI;QACJ,SAAS;QACT,SAAS;AACT,QAAA,SAAS,EAAE,kBAAkB;QAC7B,iBAAiB;QACjB,iBAAiB;QACjB;AACD,KAAA,CAAC;AAEF,IAAA,IAAI,cAAc;AAElB,IAAA,MAAM,SAAS,GAAG,YAAY,CAAC,KAAK;IACpC,MAAM,wBAAwB,GAC5B,YAAY,CAAC,IAAI,KAAK,SAAS,CAAC,IAAI;QACpC,YAAY,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC;QAC1C,YAAY,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC;AAC1C,QAAA,YAAY,CAAC,MAAM,KAAK,SAAS,CAAC,MAAM;QACxC,CAAC,YAAY,CAAC,cAAc;AAC5B,QAAA,YAAY,CAAC,cAAc,CAAC,MAAM,KAAK,CAAC;AACxC,QAAA,YAAY,CAAC,mBAAmB,KAAK,SAAS,CAAC,mBAAmB;AAClE,QAAA,YAAY,CAAC,yBAAyB;AACpC,YAAA,SAAS,CAAC,yBAAyB;AACrC,QAAA,YAAY,CAAC,mBAAmB,KAAK,SAAS,CAAC,mBAAmB;AAEpE,IAAA,IAAI,gBAAyC;AAE7C,IAAA,IAAI,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE;AAC3B,QAAA,gBAAgB,GAAG,QAAQ,CAAC,GAAG,CAAC,CAAC,cAAc,KAC7C,OAAO,cAAc,KAAK;cACtB,cAAc,CAAC,EAAE,IAAI,EAAE,YAAY,CAAC,IAAI,EAAE;cAC1C,cAAc,CACnB;IACH;SAAO,IAAI,QAAQ,EAAE;AACnB,QAAA,gBAAgB,GAAG,CAAC,QAAQ,CAAC,CAAC,GAAG,CAAC,CAAC,cAAc,KAC/C,OAAO,cAAc,KAAK;cACtB,cAAc,CAAC,EAAE,IAAI,EAAE,YAAY,CAAC,IAAI,EAAE;cAC1C,cAAc,CACnB;IACH;AAEA,IAAA,IAAI,YAAY,IAAI,QAAQ,EAAE;QAC5B,gBAAgB,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,KAAI;AAChC,YAAA,CAAC,CAAC,cAAc,GAAG,YAAY,CAAC,CAAC,CAAC;AACpC,QAAA,CAAC,CAAC;IACJ;IAEA,MAAM,EAAE,MAAM,EAAE,gBAAgB,EAAE,YAAY,EAAE,GAAG,KAAK,CAAC,UAAU,CACjE,UAAU,EAAE,gBAAgB,EAAE,KAAK,EAAE,MAAM,EAAE,UAAU,EAAE,IAAI,CAC9D;IAED,MAAM,eAAe,GACnB,WAAW,KAAK,SAAS,IAAI,KAAK,CAAC,OAAO,CAAC,WAAW;AACpD,UAAE,EAAE,MAAM,EAAE,WAAuB;UACjC,WAAW;IAEjB,MAAM,iBAAiB,GAAG,OAAO,CAAC,MAAM,CACtC,CAAC,CAAyB,EAAE,CAA8B,KAAI;AAC5D,QAAA,MAAM,UAAU,GAAG,CAAC,CAAC,MAAM;AAC3B,QAAA,MAAM,MAAM,GAAG,UAAU,KAAK,SAAS,GAAG,MAAM,CAAC,UAAU,CAAC,GAAG,UAAU;QAEzE,IAAI,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,EAAE,EAAE;AAC5B,YAAA,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC;QAChB;AACA,QAAA,OAAO,CAAC;IACV,CAAC,EACD,EAAE,CACS;AAEb,IAAA,IAAI,OAAO,GACR,eAAe,CAAC,MAAmB,IAAK,iBAA8B;AAEzE,IAAA,IAAI,SAAS,CAAC,IAAI,KAAK,YAAY,EAAE;QACnC,MAAM,WAAW,GAAG;AACjB,aAAA,GAAG,CAAC,CAAC,CAAC,KACL;AACG,aAAA,MAAM,CAAC,CAAC,CAAqB,KAAK,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC;AACxD,aAAA,MAAM,CAAC,CAAC,CAAC,EAAE,CAAoB,KAAK,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC;aAEvD,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,KAAI;YAClB,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC;AACjB,YAAA,OAAO,CAAC;QACV,CAAC,EAAE,EAAE,CAAC;AAER,QAAA,OAAO,CAAC,OAAO,CAAC,CAAC,CAAqC,KAAI;YACxD,CAAC,CAAC,KAAK,GAAG,CAAC,WAAW,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,KAAK,GAAG,WAAW,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC;AAC3E,QAAA,CAAC,CAAC;AAEF,QAAA,SAAS,CAAC,IAAI,GAAG,KAAK;IACxB;IAEA,IAAI,gBAAgB,EAAE;AACpB,QAAA,IAAI,UAAU,KAAK,QAAQ,EAAE;AAC3B,YAAA,OAAO,CAAC,KAAK,CAAC,gDAAgD,CAAC;QACjE;AAAO,aAAA,IAAI,UAAU,KAAK,UAAU,EAAE;YACpC,YAAY,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,MAAM,GAAG,gBAAgB;QACrD;aAAO;YACL,YAAY,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,MAAM,GAAG,gBAAgB;QACrD;IACF;AAEA,IAAA,MAAM,OAAO,GAAG,CAAC,UAAU,KAAK,UAAU,IAAI,CAAC,CAAC,EAAE,YAAY,CAAC,CAAC,CAAC,CAAC,KAAK;QACrE,CAAC;QACD,YAAY,CAAC,CAAC;KACf;IAED,MAAM,MAAM,GAAG,OAAO,CAAC,MAAM,CAC3B,CAAC,CAAC,EAAE,CAAC,KAAI;AACP,QAAA,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,OAAO,CAAC,MAAM,IAAI,OAAO,CAAC,CAAC,CAAC;AACxC,QAAA,CAAC,CAAC,KAAK,IAAI,CAAC,CAAC,CAAC,CAAC;AACf,QAAA,OAAO,CAAC;AACV,IAAA,CAAC,EACD,EAAE,KAAK,EAAE,CAAC,EAAE,CACb;IAED,MAAM,cAAc,GAAG,UAAwE;IAE/F,MAAM,MAAM,IAAI;UACZU,oBAAY;UACZ,CAAA,cAAc,KAAA,IAAA,IAAd,cAAc,KAAA,MAAA,GAAA,MAAA,GAAd,cAAc,CAAE,MAAM;AACxB,cAAE;AACF,cAAE,cAAc,EAAE,CAAsB;AAE1C,IAAA,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC;AAEtB,IAAA,IAAI,eAAe;IAEnB,MAAM,eAAe,GACnB,WAAW,KAAK,SAAS,IAAI,KAAK,CAAC,OAAO,CAAC,WAAW;AACpD,UAAE,EAAE,MAAM,EAAE,WAAW,EAAE,QAAQ,EAAE,SAAS,EAAE,kBAAkB,EAAE,KAAK;UACrE,WAAW;AAEjB,IAAA,IAAI,OAAO,GAAG,eAAe,CAAC,MAAkB;AAChD,IAAA,IAAI,cAAc,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC;AAE3B,IAAA,IACE,SAAS,CAAC,IAAI,KAAK,KAAK;AACxB,QAAA,WAAW,CAAC,IAAI;AAChB,QAAA,WAAW,CAAC,IAAI,KAAK,MAAM,EAC3B;AACA,QAAA,SAAS,CAAC,IAAI,GAAG,MAAM;IACzB;IAEA,MAAM,oBAAoB,GAAG,EAAE;AAE/B,IAAA,IAAI,eAAe,CAAC,kBAAkB,IAAI,WAAW,EAAE;AACrD,QAAA,SAAS,CAAC,OAAO,CAAC,CAAC,eAAe,KAAI;YACpC,WAAW,CAAC,OAAO,CAAC,CAAC,UAAU,EAAE,eAAe,KAAI;gBAClD,MAAM,CAAC,GAAG,eAAe,CAAC,UAAU,EAAE,eAAe,CAAC;AACtD,gBAAA,IAAI,QAAQ,CAAC,CAAC,CAAC,EAAE;AACf,oBAAA,oBAAoB,CAAC,IAAI,CAAC,CAAC,CAAC;gBAC9B;AACF,YAAA,CAAC,CAAC;AACJ,QAAA,CAAC,CAAC;IACJ;AAEA,IAAA,IAAI,SAAS,CAAC,IAAI,KAAK,UAAU,EAAE;AACjC,QAAA,MAAM,KAAK,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC,CAAoB,KAAK,CAAC,CAAC,KAAK,CAAC;AAC5D,QAAA,MAAM,UAAU,GAAGC,cAAM,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AACjD,QAAA,MAAM,WAAW,GAAGA,cAAM,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AAClD,QAAA,OAAO,GAAGA,cAAM,CAAC,CAAC,GAAG,UAAU,EAAE,GAAG,WAAW,EAAE,GAAG,oBAAoB,CAAC,CAAC;IAC5E;AAAO,SAAA,IAAI,SAAS,CAAC,IAAI,KAAK,KAAK,EAAE;QACnC,OAAO,GAAGA,cAAM,CAAC;AACf,YAAA,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC,CAAoB,KAAK,CAAC,CAAC,KAAK,CAAC;AACjD,YAAA,GAAG;AACJ,SAAA,CAAC;IACJ;SAAO;QACL,MAAM,kBAAkB,GAAG,EAAE;QAC7B,MAAM,kBAAkB,GAAG,EAAE;QAE7B,MAAM,gBAAgB,GAAG,EAAE;QAC3B,MAAM,gBAAgB,GAAG,EAAE;AAC3B,QAAA,KAAK,MAAM,KAAK,IAAI,OAA8C,EAAE;AAClE,YAAA,IAAI,KAAK,CAAC,KAAK,IAAI,CAAC,EAAE;gBACpB,IAAI,CAAC,gBAAgB,CAAC,KAAK,CAAC,MAAM,CAAC,EAAE;AACnC,oBAAA,gBAAgB,CAAC,KAAK,CAAC,MAAM,CAAC,GAAG;wBAC/B,MAAM,EAAE,KAAK,CAAC,MAAM;AACpB,wBAAA,KAAK,EAAE;qBACR;oBACD,kBAAkB,CAAC,IAAI,CAAC,gBAAgB,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;gBACzD;gBACA,gBAAgB,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,KAAK,IAAI,KAAK,CAAC,KAAK;YACrD;iBAAO;gBACL,IAAI,CAAC,gBAAgB,CAAC,KAAK,CAAC,MAAM,CAAC,EAAE;AACnC,oBAAA,gBAAgB,CAAC,KAAK,CAAC,MAAM,CAAC,GAAG;wBAC/B,MAAM,EAAE,KAAK,CAAC,MAAM;AACpB,wBAAA,KAAK,EAAE;qBACR;oBACD,kBAAkB,CAAC,IAAI,CAAC,gBAAgB,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;gBACzD;gBACA,gBAAgB,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,KAAK,IAAI,KAAK,CAAC,KAAK;YACrD;QACF;AAEA,QAAA,MAAM,mBAAmB,GAAG,oBAAoB,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;AAErE,QAAA,OAAO,GAAG;YACR,CAAC;YACD,kBAAkB,CAAC,MAAM,KAAK,CAAC,IAAI,mBAAmB,CAAC,MAAM,KAAK;AAChE,kBAAE;AACF,kBAAE,IAAI,CAAC,GAAG,CACNZ,WAAG,CAAC;AACF,oBAAA,GAAG,kBAAkB,CAAC,GAAG,CAAC,CAAC,CAAoB,KAAK,CAAC,CAAC,KAAK,CAAC;AAC5D,oBAAA,GAAG;iBACJ,CAAC,EACF,CAAC;SAER;AAED,QAAA,MAAM,mBAAmB,GAAG,oBAAoB,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;AAErE,QAAA,cAAc,GAAG;YACf,CAAC;YACD,kBAAkB,CAAC,MAAM,KAAK;AAC5B,kBAAE;AACF,kBAAE,IAAI,CAAC,GAAG,CACNa,WAAG,CAAC;AACF,oBAAA,GAAG,kBAAkB,CAAC,GAAG,CAAC,CAAC,CAAoB,KAAK,CAAC,CAAC,KAAK,CAAC;AAC5D,oBAAA,GAAG;iBACJ,CAAC,EACF,CAAC;SAER;AACD,QAAA,OAAO,GAAG,CAAC,cAAc,CAAC,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC;IAC3C;AAEA,IAAA,IAAI,CAAC,SAAS,CAAC,IAAI,KAAK,YAAY,IAAI,SAAS,KAAK,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE;AACpE,QAAA,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC;IAChB;IAEA,MAAM,iBAAiB,GAAG,OAAO;IAEjC,IACE,eAAe,CAAC,MAAM;AACtB,QAAA,eAAe,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,SAAS;QACvC,eAAe,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,SAAS,EACvC;AACA,QAAA,OAAO,GAAG,eAAe,CAAC,MAAkB;IAC9C;SAAO;QACL,IACE,eAAe,CAAC,MAAM;AACtB,YAAA,eAAe,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,SAAS;YACvC,eAAe,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,SAAS,EACvC;YACA,OAAO,CAAC,CAAC,CAAC,GAAG,eAAe,CAAC,MAAM,CAAC,CAAC,CAAC;QACxC;QAEA,IACE,eAAe,CAAC,MAAM;AACtB,YAAA,eAAe,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,SAAS;YACvC,eAAe,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,SAAS,EACvC;YACA,OAAO,CAAC,CAAC,CAAC,GAAG,eAAe,CAAC,MAAM,CAAC,CAAC,CAAC;QACxC;IACF;IAEA,IACE,YAAY,CAAC,OAAO;SACnB,eAAe,CAAC,MAAM;AACrB,YAAA,eAAe,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,eAAe,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,EACxD;AACA,QAAA,OAAO,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC;IACpC;IAEA,MAAM,YAAY,GAAG,EAAE;AAEvB,IAAA,KAAK,MAAM,KAAK,IAAI,OAA8C,EAAE;QAClE,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,MAAM,CAAC,EAAE;AAC/B,YAAA,YAAY,CAAC,KAAK,CAAC,MAAM,CAAC,GAAG,EAAE;QACjC;QACA,YAAY,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC;IACxC;AAEA,IAAA,IAAI,KAAK,KAAK,SAAS,EAAE;QACvB,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,KAC1B,KAAK,CACH,CAAC,EACD,CAAC,EACD,YAAY,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,EAClC,YAAY,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,CACnC,CACF;AAED,QAAA,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC;IACxB;SAAO;;QAEL,MAAM,UAAU,GAA2B,EAAE;AAC7C,QAAA,KAAK,MAAM,GAAG,IAAI,OAAO,EAAE;YACzB,UAAU,CAAC,GAAG,CAAC,GAAGZ,WAAG,CAAC,YAAY,CAAC,GAAG,CAAC,EAAE,CAAC,CAAoB,KAAK,CAAC,CAAC,KAAK,CAAC;QAC7E;AAEA,QAAA,IAAI,iBAAqD;QACzD,IAAI,2BAA2B,EAAE;YAC/B,iBAAiB,GAAG,EAAE;AACtB,YAAA,IAAI,kBAAwC;AAC5C,YAAA,IAAI,OAAO,2BAA2B,KAAK,QAAQ,EAAE;gBACnD,kBAAkB,GAAG,CAAC,CAAC,KAAKA,WAAG,CAAC,CAAC,EAAE,CAAC,CAAM,KAAK,CAAC,CAAC,IAAI,CAAC,2BAAqC,CAAC,CAAC;YAC/F;iBAAO;gBACL,kBAAkB,GAAG,CAAC,CAAC,KAAM,2BAAwC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAM,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC;YAClG;AACA,YAAA,KAAK,MAAM,GAAG,IAAI,OAAO,EAAE;gBACzB,iBAAiB,CAAC,GAAG,CAAC,GAAG,kBAAkB,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC;YAChE;QACF;QAEA,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,KAAI;YAC9B,MAAM,IAAI,GAAG,UAAU,CAAC,CAAC,CAAC,GAAG,UAAU,CAAC,CAAC,CAAC;YAC1C,IAAI,IAAI,KAAK,CAAC;AAAE,gBAAA,OAAO,IAAI;AAC3B,YAAA,IAAI,iBAAiB;gBAAE,OAAO,iBAAiB,CAAC,CAAC,CAAC,GAAG,iBAAiB,CAAC,CAAC,CAAC;AACzE,YAAA,OAAO,CAAC;AACV,QAAA,CAAC,CAAC;AAEF,QAAA,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC;IACxB;IAEA,IAAI,2BAA2B,EAAE;AAC/B,QAAA,IAAI,kBAAkB;AACtB,QAAA,IAAI,OAAO,2BAA2B,KAAK,QAAQ,EAAE;YACnD,kBAAkB,GAAG,CAAC,CAAC,KAAKA,WAAG,CAAC,CAAC,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,2BAAqC,CAAC,CAAC;QAC1F;aAAO;YACL,kBAAkB,GAAG,CAAC,CAAC,KAAM,2BAAwC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC;QAC7F;AACA,QAAA,MAAM,eAAe,GAAG,CAAC,CAAC,CAAC;QAC3B,MAAM,YAAY,GAAG,EAAE;QACvB,eAAe,GAAG,CAAC;AAEnB,QAAA,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,KAAI;AACpB,YAAA,MAAM,OAAO,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,CAAqB,KAAK,CAAC,CAAC,MAAM,KAAK,CAAC,CAAC;AACzE,YAAA,MAAM,WAAW,GAAG,kBAAkB,CAAC,OAAO,CAAC;AAE/C,YAAA,YAAY,CAAC,IAAI,CAAC,WAAW,CAAC;YAC9B,eAAe,IAAI,WAAW;AAChC,QAAA,CAAC,CAAC;AAEF,QAAA,MAAM,CAAC,KAAK,GAAG,CAAC;QAChB,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,KAAI;AACvB,YAAA,MAAM,MAAM,GAAG,YAAY,CAAC,CAAC,CAAC;AAC9B,YAAA,MAAM,SAAS,GAAG,CAAC,MAAM,GAAG,eAAe,KAAK,OAAO,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC;AACxE,YAAA,MAAM,CAAC,CAAC,CAAC,GAAG,SAAS;AACrB,YAAA,MAAM,CAAC,KAAK,IAAI,SAAS;YACzB,IAAI,CAAC,KAAK,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE;gBAC5B,eAAe,CAAC,IAAI,CAAC,SAAS,GAAG,eAAe,CAAC,CAAC,CAAC,CAAC;YACtD;AACF,QAAA,CAAC,CAAC;AACF,QAAA,MAAM,CAAC,KAAK,CAAC,eAAe,CAAC;IAC/B;SAAO;AACL,QAAA,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC;IACvB;AAEA,IAAA,MAAM,OAAO,GAAG,CAAC,UAAU,KAAK,UAAU,IAAI,CAAC,CAAC,EAAE,YAAY,CAAC,CAAC,CAAC,CAAC,KAAK;QACrE,CAAC;QACD,YAAY,CAAC,CAAC;KACf;IAED,MAAM,cAAc,GAAG,UAA4F;;AAGnH,IAAA,MAAM,sBAAsB,GAAG,cAAc,CAAC;AAC5C,UAAE;UACA,cAAc,EAAE;AAEpB,IAAA,MAAM,SAAS,GAAG,sBAAsB,CAAC,CAAC,CAAC;IAE3C,IACE,eAAe,CAAC,MAAM;AACtB,QAAA,eAAe,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,SAAS;AACvC,SAAC,KAAK,CAAC,SAAS,CAAC,IAAI,SAAS,KAAK,CAAC,QAAQ,IAAI,SAAS,KAAK,QAAQ,CAAC,EACvE;QACA,OAAO,CAAC,CAAC,CAAC,GAAG,eAAe,CAAC,MAAM,CAAC,CAAC,CAAC;IACxC;AAEA,IAAA,MAAM,MAAM,GAAG,sBAAsB,CAAC,IAAI,EAAE,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC;AAE3E,IAAA,MAAM,aAAa,GAAGrB,mBAAW,EAAE,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,OAAO,EAAE,CAAC;IAE5E,MAAM,cAAc,GAAG;AACpB,SAAA,IAAI;SACJ,MAAM,CAAC,OAAO;SACd,KAAK,CAAC,OAAO,CAAC;AAEjB,IAAA,MAAM,WAAW,GAAG,MAAM,GAAG,CAAC,GAAG,MAAM,CAAC,SAAS,EAAE;IAEnD,IAAI,SAAS,GAAG,EAAE;AAElB,IAAA,IAAI,gBAAgB,GAAG,YAAY,CAAC,CAAC,CAAC;AACtC,IAAA,IAAI,UAAU,KAAK,UAAU,EAAE;AAC7B,QAAA,gBAAgB,GAAG,YAAY,CAAC,CAAC,CAAC;IACpC;IACA,MAAM,aAAa,GAAG,sBAAsB,CAC1C,MAAM,EACN,gBAAgB,EAChB,OAAO,CACR;AAED,IAAA,SAAS,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM,YAAY,CAAC,CAAC,CAAC,GAAG,YAAY,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC;IAExE,IAAI,SAAS,GACX,UAAU,KAAK,UAAU,GAAG,aAAa,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC;AAElE,IAAA,IACE,CAAC,KAAK,CAAC,SAAS,CAAC,IAAI,SAAS,KAAK,CAAC,QAAQ,IAAI,SAAS,KAAK,QAAQ;AACtE,QAAA,eAAe,CAAC,MAAM;AACtB,QAAA,eAAe,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,SAAS;SACtC,SAAS,KAAK,CAAC,QAAQ,IAAI,SAAS,KAAK,QAAQ,CAAC,EACnD;QACA,SAAS;AACP,YAAA,UAAU,KAAK;AACb,kBAAE,aAAa,CAAC,MAAM,CAAC,eAAe,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;kBAC/C,MAAM,CAAC,eAAe,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;IACzC;IAEA,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,KAAI;QACvB,gBAAgB,CAAC,CAAC,CAAC,GAAG;AACpB,YAAA,IAAI,EAAE,CAAC;YACP,OAAO;AACP,YAAA,SAAS,EAAE,SAAS,CAAC,CAAC,CAAC;AACvB,YAAA,MAAM,EAAE,SAAS,CAAC,CAAC;SACpB;AACD,QAAA,gBAAgB,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,GAAG,OAAO,GAAG,CAAC;AAC/C,QAAA,gBAAgB,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC;AACzB,QAAA,gBAAgB,CAAC,CAAC,CAAC,CAAC,MAAM,GAAG,aAAa,CAAC,CAAC,CAAC,GAAG,OAAO,GAAG,CAAC;QAE3D,IAAI,cAAc,GAAG,SAAS;QAC9B,IAAI,cAAc,GAAG,SAAS;QAG9B,IAAI,iBAAiB,GAAG,CAAC;QAEzB,gBAAgB,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,KAAK,KAAI;AAC9C,YAAA,IAAI,WAAW;AAEf,YAAA,IAAI,SAAS,CAAC,IAAI,KAAK,UAAU,EAAE;AACjC,gBAAA,KAAK,CAAC,WAAW,GAAG,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;AAC1C,gBAAA,KAAK,CAAC,cAAc,GAAG,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;AAC7C,gBAAA,KAAK,CAAC,mBAAmB,GAAG,cAAc,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;YAC5D;AAAO,iBAAA,IAAI,SAAS,CAAC,IAAI,KAAK,KAAK,IAAI,SAAS,CAAC,IAAI,KAAK,YAAY,EAAE;gBACtE,KAAK,CAAC,WAAW,GAAG,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC;gBACvC,KAAK,CAAC,mBAAmB,GAAG,cAAc,CAAC,KAAK,CAAC,KAAK,CAAC;YACzD;AAAO,iBAAA,IAAI,SAAS,CAAC,IAAI,KAAK,YAAY,EAAE;gBAC1C,WAAW;AACT,oBAAA,UAAU,KAAK;0BACX,aAAa,CAAC,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC;AACnC,0BAAE,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC;gBACzB,KAAK,CAAC,WAAW,GAAG,IAAI,CAAC,GAAG,CAAC,SAAS,GAAG,WAAW,CAAC;YACvD;YAEA,KAAK,CAAC,CAAC,GAAG,gBAAgB,CAAC,CAAC,CAAC,CAAC,CAAC;AAC/B,YAAA,IAAI,KAAK,CAAC,KAAK,IAAI,CAAC,EAAE;AACpB,gBAAA,IAAI,SAAS,CAAC,IAAI,KAAK,KAAK,EAAE;AAC5B,oBAAA,KAAK,CAAC,WAAW;AACf,wBAAA,UAAU,KAAK;AACb,8BAAE,cAAc;gCACd,aAAa,CAAC,MAAM,CAAC,iBAAiB,GAAG,KAAK,CAAC,KAAK,CAAC;8BACrD,MAAM,CAAC,iBAAiB,GAAG,KAAK,CAAC,KAAK,CAAC,GAAG,cAAc;AAE9D,oBAAA,iBAAiB,IAAI,KAAK,CAAC,KAAK;gBAClC;AACA,gBAAA,KAAK,CAAC,IAAI,GAAG,SAAS;AACtB,gBAAA,KAAK,CAAC,MAAM,GAAG,SAAS,CAAC,IAAI,KAAK,KAAK,GAAG,cAAc,GAAG,CAAC;gBAC5D,KAAK,CAAC,MAAM,GAAG,KAAK,CAAC,WAAW,GAAG,CAAC,GAAG,cAAc;gBACrD,cAAc;AACZ,oBAAA,UAAU,KAAK;AACb,0BAAE,cAAc,GAAG,KAAK,CAAC;AACzB,0BAAE,cAAc,GAAG,KAAK,CAAC,WAAW;AACxC,gBAAA,KAAK,CAAC,QAAQ,GAAG,KAAK;YACxB;iBAAO;AACL,gBAAA,IAAI,SAAS,CAAC,IAAI,KAAK,KAAK,EAAE;AAC5B,oBAAA,KAAK,CAAC,WAAW;AACf,wBAAA,UAAU,KAAK;AACb,8BAAE,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC;AAC1C,8BAAE,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,SAAS,CAAC;gBAGjD;AACA,gBAAA,KAAK,CAAC,IAAI,GAAG,SAAS;AACtB,gBAAA,KAAK,CAAC,MAAM,GAAG,SAAS,CAAC,IAAI,KAAK,KAAK,GAAG,cAAc,GAAG,CAAC;gBAC5D,KAAK,CAAC,MAAM,GAAG,cAAc,GAAG,KAAK,CAAC,WAAW,GAAG,CAAC;gBACrD,cAAc;AACZ,oBAAA,UAAU,KAAK;AACb,0BAAE,cAAc,GAAG,KAAK,CAAC;AACzB,0BAAE,cAAc,GAAG,KAAK,CAAC,WAAW;AACxC,gBAAA,KAAK,CAAC,QAAQ,GAAG,IAAI;YACvB;AACF,QAAA,CAAC,CAAC;QAEF,IAAI,MAAM,EAAE;AACV,YAAA,gBAAgB,CAAC,CAAC,CAAC,CAAC,KAAK,GAAG,MAAM,CAAC,CAAC,CAAC,GAAG,OAAO;AAE/C,YAAA,IAAI,YAAY,CAAC,YAAY,KAAK,QAAQ,EAAE;AAC1C,gBAAA,IAAI,CAAC,KAAK,CAAC,EAAE;AACX,oBAAA,gBAAgB,CAAC,CAAC,CAAC,CAAC,CAAC;AACnB,wBAAA,gBAAgB,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,gBAAgB,CAAC,CAAC,CAAC,CAAC,KAAK,GAAG,CAAC;AACvD,oBAAA,gBAAgB,CAAC,CAAC,CAAC,CAAC,MAAM;AACxB,wBAAA,gBAAgB,CAAC,CAAC,CAAC,CAAC,MAAM,GAAG,gBAAgB,CAAC,CAAC,CAAC,CAAC,KAAK,GAAG,CAAC;gBAC9D;qBAAO;AACL,oBAAA,gBAAgB,CAAC,CAAC,CAAC,CAAC,CAAC;wBACnB,gBAAgB,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;4BAClC,gBAAgB,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK;AACxC,oBAAA,gBAAgB,CAAC,CAAC,CAAC,CAAC,MAAM;AACxB,wBAAA,gBAAgB,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,gBAAgB,CAAC,CAAC,CAAC,CAAC,KAAK,GAAG,CAAC;gBACzD;YACF;AAEA,YAAA,gBAAgB,CAAC,CAAC,CAAC,CAAC,GAAG,GAAG,MAAM,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC,KAAK;AAClD,YAAA,gBAAgB,CAAC,CAAC,CAAC,CAAC,SAAS;AAC3B,gBAAA,CAAC,gBAAgB,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,IAAI,MAAM,CAAC,KAAK;YACrD,gBAAgB,CAAC,CAAC,CAAC,CAAC,WAAW,GAAG,OAAO,GAAG,MAAM,CAAC,KAAK;AACxD,YAAA,gBAAgB,CAAC,CAAC,CAAC,CAAC,UAAU;AAC5B,gBAAA,CAAC,gBAAgB,CAAC,CAAC,CAAC,CAAC,MAAM,GAAG,OAAO,CAAC,CAAC,CAAC,IAAI,MAAM,CAAC,KAAK;QAC5D;aAAO;YACL,gBAAgB,CAAC,CAAC,CAAC,CAAC,KAAK,GAAG,WAAW,GAAG,OAAO;AACjD,YAAA,IAAI,YAAY,CAAC,YAAY,KAAK,QAAQ,EAAE;AAC1C,gBAAA,gBAAgB,CAAC,CAAC,CAAC,CAAC,CAAC;AACnB,oBAAA,gBAAgB,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,gBAAgB,CAAC,CAAC,CAAC,CAAC,KAAK,GAAG,CAAC;AACvD,gBAAA,gBAAgB,CAAC,CAAC,CAAC,CAAC,MAAM;AACxB,oBAAA,gBAAgB,CAAC,CAAC,CAAC,CAAC,MAAM,GAAG,gBAAgB,CAAC,CAAC,CAAC,CAAC,KAAK,GAAG,CAAC;YAC9D;AAEA,YAAA,gBAAgB,CAAC,CAAC,CAAC,CAAC,GAAG,GAAG,WAAW,GAAG,YAAY,CAAC,CAAC,CAAC;AACvD,YAAA,gBAAgB,CAAC,CAAC,CAAC,CAAC,SAAS;AAC3B,gBAAA,CAAC,gBAAgB,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,IAAI,YAAY,CAAC,CAAC,CAAC;AACxD,YAAA,gBAAgB,CAAC,CAAC,CAAC,CAAC,WAAW,GAAG,OAAO,GAAG,YAAY,CAAC,CAAC,CAAC;AAC3D,YAAA,gBAAgB,CAAC,CAAC,CAAC,CAAC,UAAU;AAC5B,gBAAA,CAAC,gBAAgB,CAAC,CAAC,CAAC,CAAC,MAAM,GAAG,OAAO,CAAC,CAAC,CAAC,IAAI,YAAY,CAAC,CAAC,CAAC;QAC/D;AACF,IAAA,CAAC,CAAC;IAEF,MAAM,UAAU,GAAG,EAAE;IAErB,MAAM,OAAO,GAAG,EAAE;AAElB,IAAA,MAAM,aAAa,GACjB,OAAO,MAAM,KAAK;AAChB,UAAE,MAAM,CAAC,MAAM,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC,EAAE,EAAE,MAAM;AACnD,UAAE,EAAE,MAAM,EAAE,SAAS,EAAE,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,CAAC,EAAE;AAEtD,IAAA,IAAI,MAAM,IAAI,eAAe,EAAE;AAC7B,QAAA,MAAM,SAAS,GACb,CAAC,SAAS,CAAC,WAAW,IAAI,SAAS,CAAC,WAAW,GAAG,GAAG,KAAK,CAAC;AAE7D,QAAA,MAAM,QAAQ,GAAG,CAAC,SAAS,CAAC,UAAU;YACpC,SAAS,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC;QACrD,MAAM,QAAQ,GAAG,QAAQ,CAAC,CAAC,CAAC,GAAG,QAAQ,CAAC,CAAC,CAAC;AAE1C,QAAA,MAAM,WAAW,GACf,QAAQ,GAAG,CAAC,GAAGA,mBAAW,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC;AAExE,QAAA,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,KAAI;YACpB,MAAM,YAAY,GAAGD,WAAG;iBACrB,WAAW,CAAC,CAAC;iBACb,WAAW,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;YAErC,MAAM,KAAK,GAAG,gBAAgB,CAAC,CAAC,CAAC,CAAC,GAAG,GAAG,QAAQ;AAChD,YAAA,MAAM,UAAU,GAAG,WAAW,CAAC,gBAAgB,CAAC,CAAC,CAAC,CAAC,SAAS,GAAG,SAAS,CAAC;AAEzE,YAAA,MAAM,QAAQ,GAAG,UAAU,GAAG,KAAK;AACnC,YAAA,MAAM,QAAQ,GAAG,UAAU,GAAG,KAAK,GAAG,CAAC;YAEvC,MAAM,KAAK,GAAG,YAAY,CAAC;gBACzB,UAAU,EAAE,UAAU,GAAG,KAAK;gBAC9B,QAAQ,EAAE,QAAQ,GAAG;AACtB,aAAA,CAAC;AACF,YAAA,MAAM,SAAS,GAAG,CAAC,YAAY,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,YAAY,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;AAC5D,YAAA,MAAM,QAAQ,GAAG,YAAY,CAAC,QAAQ,CAAC;gBACrC,UAAU,EAAE,UAAU,GAAG,KAAK;gBAC9B,QAAQ,EAAE,QAAQ,GAAG;AACtB,aAAA,CAAC;AAEF,YAAA,MAAM,YAAY,GAChB,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC;iBACd,CAAC,aAAa,CAAC,MAAM;oBACpB,aAAa,CAAC,MAAM,KAAK,SAAS;AAClC,oBAAA,aAAa,CAAC,MAAM,KAAK,MAAM;AAC/B,kBAAE;kBACA,CAAC;AAEP,YAAA,MAAM,UAAU,GAAG,iBAAiB,CAClC,CAAC,CAAC,EAAE,CAAC,CAAC,EACN,QAAQ,EACR,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,aAAa,CAAC,OAAO,GAAG,YAAY,CAC7D;AAED,YAAA,MAAM,MAAM,GAAG;gBACb,UAAU;gBACV,QAAQ;gBACR,QAAQ;gBACR,KAAK;gBACL,SAAS;gBACT,QAAQ;gBACR;aACD;AAED,YAAA,gBAAgB,CAAC,CAAC,CAAC,CAAC,MAAM,GAAG,MAAM;AAEnC,YAAA,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC;AACtB,QAAA,CAAC,CAAC;IACJ;AAEA,IAAA,IAAI,YAAY,CAAC,MAAM,EAAE;AACvB,QAAA,IAAI,UAAU;AACd,QAAA,IAAI,OAAO,aAAa,CAAC,KAAK,KAAK,UAAU,EAAE;AAC7C,YAAA,UAAU,GAAG,aAAa,CAAC,KAAK;QAClC;aAAO;AACL,YAAA,MAAM,UAAU,GAEZ;AACF,gBAAA,UAAU,EAAE;aACb;YACD,IAAI,UAAU,KAAK,YAAY,IAAI,aAAa,CAAC,MAAM,KAAK,OAAO,EAAE;AACnE,gBAAA,UAAU,CAAC,UAAU,GAAG,OAAO;YACjC;AAAO,iBAAA,IAAI,UAAU,KAAK,YAAY,EAAE;AACtC,gBAAA,UAAU,CAAC,UAAU,GAAG,KAAK;YAC/B;YAEA,UAAU,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,KAAI;gBACvB,MAAM,eAAe,GAEjB,EAAE;AACN,gBAAA,IAAI,eAAe;gBAEnB,IAAI,UAAU,KAAK,QAAQ,IAAI,aAAa,CAAC,MAAM,KAAK,MAAM,EAAE;AAC9D,oBAAA,eAAe,GAAG,CAAA,OAAA,EAChB,OAAO,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,GAAG;0BACvB,OAAO,CAAC,CAAC,CAAC,CAAC,QAAQ,GAAG,GAAG,GAAG;AAC9B,0BAAE,OAAO,CAAC,CAAC,CAAC,CAAC,QAAQ,GAAG,GAAG,GAAG,EAClC,CAAA,CAAA,CAAG;gBACL;qBAAO,IACL,UAAU,KAAK,QAAQ;AACvB,oBAAA,aAAa,CAAC,MAAM,KAAK,YAAY,EACrC;oBACA,MAAM,EAAE,QAAQ,EAAE,GAAG,OAAO,CAAC,CAAC,CAAC;AAE/B,oBAAA,MAAM,UAAU,GAAG,OAAO,CAAC,MAAM,CAC/B,CAAC,CAAC,EAAE,CAAC,KACH,CAAC,GAAG,CAAC;AACL,wBAAA,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,OAAO,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC;wBAC9C,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,OAAO,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,CACjD,CAAC,MAAM;AACR,oBAAA,MAAM,QAAQ,GAAG,UAAU,GAAG,EAAE;AAChC,oBAAA,IAAI,WAAW,GAAG,CAAC,CAAC,MAAM,GAAG,CAAC;oBAC9B,IAAI,UAAU,GAA2C,OAAO;oBAEhE,IAAI,aAAa,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE;AACpC,oBAAA,IAAI,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE;wBACnB,UAAU,GAAG,KAAK;wBAClB,WAAW,GAAG,CAAC,WAAW;AAC1B,wBAAA,aAAa,CAAC,EAAE,GAAG,GAAG;oBACxB;yBAAO;AACL,wBAAA,aAAa,CAAC,EAAE,GAAG,EAAE;oBACvB;AAEA,oBAAA,IAAI,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE;AACnB,wBAAA,aAAa,CAAC,EAAE,GAAG,GAAG,GAAG,QAAQ;oBACnC;yBAAO;AACL,wBAAA,aAAa,CAAC,EAAE,GAAG,EAAE,GAAG,QAAQ;oBAClC;AACA,oBAAA,QACEH,gBAAA,CAAA,aAAA,CAAA,GAAA,EAAA,IAAA;AACE,wBAAAA,gBAAA,CAAA,aAAA,CAAA,MAAA,EAAA,EACE,IAAI,EAAC,MAAM,EACX,MAAM,EAAC,OAAO,EACd,WAAW,EAAE,CAAC,EACd,CAAC,EAAE,CAAA,KAAA,EAAQ,aAAa,CAAC,EAAE,CAAA,CAAA,EAAI,aAAa,CAAC,EAAE,IAC7C,aAAa,CAAC,EAAE,GAAG,WACrB,CAAA,CAAA,EAAI,aAAa,CAAC,EAAE,EAAE,EAAA,CACtB;wBACFA,gBAAA,CAAA,aAAA,CAAA,MAAA,EAAA,EACE,UAAU,EAAE,UAAU,EACtB,CAAC,EAAE,aAAa,CAAC,EAAE,EACnB,CAAC,EAAE,aAAa,CAAC,EAAE,GAAG,CAAC,IAEtB,CAAC,CACG,CACL;gBAER;qBAAO,IACL,UAAU,KAAK,QAAQ;AACvB,oBAAA,aAAa,CAAC,MAAM,KAAK,QAAQ,EACjC;AACA,oBAAA,eAAe,GAAG,CAAA,OAAA,EAChB,OAAO,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,GAAG;0BACvB,OAAO,CAAC,CAAC,CAAC,CAAC,QAAQ,GAAG;AACxB,0BAAE,OAAO,CAAC,CAAC,CAAC,CAAC,QAAQ,GAAG,GAAG,GAAG,GAClC,CAAA,CAAA,CAAG;gBACL;gBACA,IACE,UAAU,KAAK,QAAQ;oBACvB,aAAa,CAAC,MAAM,KAAK,MAAM;AAC/B,qBAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,aAAa,CAAC,OAAO,GAAG,CAAC;yBACxD,OAAO,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,aAAa,CAAC,OAAO,IAAI,CAAC,CAAC,CAAC,EAC/D;AACA,oBAAA,eAAe,CAAC,UAAU,GAAG,KAAK;gBACpC;qBAAO,IAAI,UAAU,KAAK,QAAQ,IAAI,aAAa,CAAC,MAAM,KAAK,MAAM,EAAE;AACrE,oBAAA,eAAe,CAAC,UAAU,GAAG,OAAO;gBACtC;AACA,gBAAA,QACEA,gBAAA,CAAA,aAAA,CAAA,MAAA,EAAA,MAAA,CAAA,MAAA,CAAA,EAAA,EACM,UAAU,EACV,eAAe,EAAA,EACnB,SAAS,EAAE,eAAe,EAAA,CAAA,EAEzB,CAAC,CACG;AAEX,YAAA,CAAC;QACH;QAEA,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,KAAI;YACvB,IAAI,SAAS,GAAG,gBAAgB,CAAC,CAAC,CAAC,CAAC,MAAM;YAC1C,IAAI,SAAS,GAAG,CAAC;AAEjB,YAAA,IAAI,UAAU,KAAK,YAAY,EAAE;AAC/B,gBAAA,SAAS,GAAG,gBAAgB,CAAC,CAAC,CAAC,CAAC,MAAM;AACtC,gBAAA,IAAI,aAAa,CAAC,MAAM,KAAK,OAAO,EAAE;AACpC,oBAAA,SAAS,GAAG,YAAY,CAAC,CAAC,CAAC,GAAG,CAAC;gBACjC;qBAAO;oBACL,SAAS,GAAG,EAAE;gBAChB;YACF;AAAO,iBAAA,IAAI,UAAU,KAAK,QAAQ,EAAE;AAClC,gBAAA,IAAI,aAAa,CAAC,MAAM,KAAK,YAAY,EAAE;oBACzC,SAAS;wBACP,OAAO,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,GAAG,IAAI;4BAC7B,OAAO,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,GAAG,IAAI;4BAC/B,OAAO,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC;oBACzB,SAAS;wBACP,OAAO,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,GAAG,IAAI;4BAC7B,OAAO,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,GAAG,IAAI;4BAC/B,OAAO,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC;gBAC3B;AAAO,qBAAA,IAAI,aAAa,CAAC,MAAM,KAAK,QAAQ,EAAE;oBAC5C,SAAS,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC;oBAC5D,SAAS,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC;gBAC9D;qBAAO;oBACL,SAAS,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC;oBAC9D,SAAS,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC;gBAChE;YACF;AAEA,YAAA,MAAM,UAAU,GAAG,aAAa,CAAC;AAC/B,kBAAE,aAAa,CAAC,cAAc,CAAC,CAAC;kBAC9B,CAAC;AAEL,YAAA,MAAM,KAAK,GAAG,UAAU,CACtB,UAAU,EACV,gBAAgB,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,EAChD,CAAC,EACD,gBAAgB,CAAC,CAAC,CAAC,CACpB;YACD,UAAU,CAAC,IAAI,CACbA,gBAAA,CAAA,aAAA,CAAA,GAAA,EAAA,EACE,GAAG,EAAE,CAAA,OAAA,EAAU,CAAC,CAAA,CAAE,EAClB,SAAS,EAAE,CAAA,UAAA,EAAa,SAAS,CAAA,CAAA,EAAI,SAAS,GAAG,EAAA,EAEhD,KAAK,CACJ,CACL;AACH,QAAA,CAAC,CAAC;AAEF,QAAA,IAAI,UAAU,KAAK,UAAU,EAAE;AAC7B,YAAA,IAAI,MAAM;AACV,YAAA,IAAI,aAAa,CAAC,MAAM,KAAK,KAAK,EAAE;gBAClC,MAAM,GAAG,GAAG;YACd;iBAAO;gBACL,MAAM,GAAG,EAAE,GAAG,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;YACjC;YACA,OAAO,IACLA,gBAAA,CAAA,aAAA,CAAA,GAAA,EAAA,EACE,GAAG,EAAC,+BAA+B,EACnC,SAAS,EAAC,gBAAgB,EAC1B,SAAS,EAAE,eAAe,MAAM,CAAA,CAAA,CAAG,IAElC,UAAU,CACT,CACL;QACH;AAAO,aAAA,IAAI,UAAU,KAAK,YAAY,EAAE;AACtC,YAAA,OAAO,IACLA,gBAAA,CAAA,aAAA,CAAA,GAAA,EAAA,EAAG,GAAG,EAAC,+BAA+B,EAAC,SAAS,EAAC,gBAAgB,EAAA,EAC9D,UAAU,CACT,CACL;QACH;AAAO,aAAA,IAAI,UAAU,KAAK,QAAQ,EAAE;AAClC,YAAA,OAAO,IACLA,gBAAA,CAAA,aAAA,CAAA,GAAA,EAAA,EAAG,GAAG,EAAC,+BAA+B,EAAC,SAAS,EAAC,gBAAgB,EAAA,EAC9D,UAAU,CACT,CACL;QACH;IACF;AAEA,IAAA,MAAM,SAAS,GAAG,CAAC,KAAK,EAAE,YAAY,EAAE,UAAU,CAAC,CAAC,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK,EAAE;AAClF,IAAA,MAAM,iBAAiB,GAAG,CAAC,YAAY,CAAC,eAAe,IAAI,YAAY,CAAC,oBAAoB,KAAK,SAAS;AAE1G,IAAA,IACE,CAAC,iBAAiB;QAClB,CAAC,YAAY,CAAC,sBAAsB;SACnC,YAAY,CAAC,eAAe;AAC3B,YAAA,YAAY,CAAC,mBAAmB;AAChC,YAAA,YAAY,CAAC,yBAAyB;AACtC,YAAA,YAAY,CAAC,mBAAmB,CAAC,EACnC;QACA,IAAI,wBAAwB,EAAE;YAC5B,cAAc,GAAG,sBAAsB,CAAC;gBACtC,OAAO;gBACP,gBAAgB;gBAChB,MAAM;gBACN,OAAO;gBACP,OAAO;gBACP,UAAU;gBACV,yBAAyB;gBACzB,mBAAmB;gBACnB;AACD,aAAA,CAAC;QACJ;aAAO;AACL,YAAA,cAAc,GAAG,YAAY,CAAC,cAAc;QAC9C;IACF;AAEA,IAAA,IAAI,WAAW;IAEf,MAAM,cAAc,GAClB,SAAS,CAAC,IAAI,IAAI,SAAS,CAAC,IAAI,KAAK,MAAM,GAAG,SAAS,CAAC,IAAI,GAAG,OAAO;AACxE,IAAA,MAAM,eAAe,GACnB,OAAO,cAAc,KAAK;AACxB,UAAE;AACF,UAAE,UAAU,CAAC,cAAc,CAAC;IAEhC,MAAM,mBAAmB,GAAG,eAAe,CAAC;AAC1C,QAAA,IAAI,EAAE,SAAS;AACf,QAAA,IAAI,EAAE,gBAAgB;AACtB,QAAA,UAAU,EAAE,eAAe;QAC3B,uBAAuB;AACvB,QAAA,OAAO,EAAE,UAAU;QACnB,UAAU;AACV,QAAA,OAAO,EAAE,UAAU;QACnB,YAAY;AACZ,QAAA,SAAS,EAAE,IAAI;QACf,MAAM;QACN;AACD,KAAA,CAA0B;IAE3B,MAAM,SAAS,GAAG,mBAAmB,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,KAAI;AACpD,QAAA,IAAI,CAAC,CAAC,CAAC,EAAE;YACP,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE;AACX,gBAAA,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE;YACb;YACA,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;QAChB;AACA,QAAA,OAAO,CAAC;IACV,CAAC,EAAE,EAAE,CAAC;IAEN,MAAM,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,KAAI;AAC1C,QAAA,gBAAgB,CAAC,CAAC,CAAC,CAAC,MAAM,GAAG,SAAS,CAAC,CAAC,CAAC,IAAI,EAAE;AACjD,IAAA,CAAC,CAAC;IACF,IAAI,mBAAmB,GAA4B,EAAE;IAErD,IAAI,WAAW,CAAC,IAAI,IAAI,WAAW,CAAC,IAAI,KAAK,MAAM,EAAE;QACnD,mBAAmB,GAAG,aAAa,CAAC;AAClC,YAAA,IAAI,EAAE,gBAAgB;AACtB,YAAA,IAAI,EAAE,WAAW;AACjB,YAAA,UAAU,EAAE,iBAAiB;AAC7B,YAAA,OAAO,EAAE,YAAY;AACrB,YAAA,OAAO,EAAE,YAAY;YACrB,UAAU;YACV,uBAAuB;YACvB,YAAY;;YAEZ,MAAM;AACN,YAAA,WAAW,EAAE;AACd,SAAA,CAAC;AAEF,QAAA,mBAAmB,CAAC,YAAY,GAAG,gBAAgB;IACrD;AAEA,IAAA,MAAM,IAAI,GAAG,UAAU,KAAK,YAAY,GAAG,MAAM,GAAG,YAAY;AAChE,IAAA,MAAM,IAAI,GAAG,UAAU,KAAK,UAAU,GAAG,MAAM,GAAG,YAAY;IAC9D,MAAM,aAAa,GAAG;AACnB,SAAA,GAAG,CAAC,CAAC,CAAC,KAAI;QACT,IAAI,CAAC,CAAC,KAAK,IAAI,CAAC,CAAC,EAAE,EAAE;AACnB,YAAA,OAAA,MAAA,CAAA,MAAA,CAAA,MAAA,CAAA,MAAA,CAAA,EAAA,EACK,CAAC,CAAC,KAAK,CAAA,EAAA,EACV,IAAI,EAAE,aAAa,EACnB,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EACtB,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAA,CAAA;QAE1B;AACA,QAAA,OAAO,IAAI;AACb,IAAA,CAAC;SACA,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC;AAEnB,IAAA,IACE,CAAC,CAAC,eAAe,IAAI,oBAAoB;AACvC,QAAA,CAAC,KAAK,EAAE,YAAY,EAAE,UAAU,CAAC,CAAC,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK,EAAE;AAClE,QAAA,sBAAsB,EACtB;AACA,QAAA,IAAI,sBAAsB,IAAI,mBAAmB,CAAC,QAAQ,EAAE;AAC1D,YAAA,WAAW,GAAG,mBAAmB,CAAC,QAAQ,CAAC,GAAG,CAC5C,CAAC,CAA2B,KAC1B,MAAM,CAAC,MAAM,CAAC,EAAE,EAAE,CAAC,EAAE;AACnB,gBAAA,IAAI,EAAE,aAAa;AACnB,gBAAA,aAAa,EAAE,IAAI;gBACnB,CAAC,EAAE,CAAC,CAAC,CAAC;gBACN,CAAC,EAAE,CAAC,CAAC;AACN,aAAA,CAAC,CACL;QACH;aAAO,IAAI,CAAC,eAAe,IAAI,oBAAoB,KAAK,mBAAmB,EAAE;;YAE3E,WAAW,GAAG,aAAa;QAC7B;IACF;AAEA,IAAA,MAAM,EAAE,IAAI,EAAE,aAAa,EAAE,GAAG,oBAAoB,CAAC;AACnD,QAAA,IAAI,EAAE,gBAAgB;AACtB,QAAA,IAAI,EAAE,OAAO;QACb,UAAU;QACV,YAAY;QACZ,IAAI;QACJ,MAAM;AACN,QAAA,UAAU,EAAE,sBAAsB,CAAC,IAAI,EAAE;QACzC,SAAS;QACT,OAAO;QACP,eAAe;AACf,QAAA,MAAM,EAAE,aAAa;QACrB,MAAM;QACN,UAAU,EAAE,mBAAmB,CAAC;AACjC,KAAA,CAAC;AAEF,IAAA,OAAA,MAAA,CAAA,MAAA,CAAA,EACE,WAAW;QACX,SAAS;QACT,SAAS;AACT,QAAA,WAAW,EACX,IAAI,EAAE,SAAS,EAAA,EACZ,sBAAsB,CAAC;QACxB,iBAAiB;QACjB,wBAAwB;QACxB,mBAAmB;QACnB,UAAU;QACV,mBAAmB;QACnB,yBAAyB;QACzB,mBAAmB;QACnB,YAAY;QAEZ,cAAc;AACd,QAAA,cAAc,EAAE,gBAAgB;AAChC,QAAA,mBAAmB,EAAE,qBAAqB;QAC1C,qBAAqB;QACrB,mBAAmB;QACnB,iBAAiB;QACjB,aAAa;QACb,uBAAuB;QACvB,SAAS;QACT,YAAY;QACZ,YAAY;QACZ,UAAU;QACV,UAAU;QAEV,SAAS;QACT,OAAO;QACP,gBAAgB;QAChB,mBAAmB;QACnB,SAAS;QAET,MAAM;QAEN,iBAAiB;QACjB,iBAAiB;QACjB,eAAe;QACf,eAAe;QAEf,gBAAgB;QAChB,YAAY;QACZ,MAAM;QAEN,kBAAkB;QAClB,kBAAkB;QAClB,gBAAgB;QAChB,IAAI;QACJ,aAAa;QACb,OAAO;QACP,KAAK;QACL,cAAc;QACd,UAAU;QACV,sBAAsB;QACtB,MAAM;QACN,OAAO;QACP,MAAM;QACN,eAAe;QACf;AACD,KAAA,CAAC,CAAA;AAEN,CAAC;;SChpCe,0BAA0B,GAAA;IACxC,OAAO;AACL,QAAA,UAAU,EAAE6B,wBAAO,CAAC,CAClB,MAAW,EACX,IAAS,EACT,KAAU,EACV,MAAW,EACX,UAA2B,EAC3B,IAAc,KACZ;AACF,YAAA,MAAM,gBAAgB,GAAG,eAAe,CAAC,EAAE,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,EAAE,UAAU,EAAE,IAAI,EAAE,CAAC;AAC3F,YAAA,MAAM,EAAE,gBAAgB,EAAE,YAAY,EAAE,GAAG,oBAAoB,CAAC;gBAC9D,IAAI;AACJ,gBAAA,MAAM,EAAE,gBAAgB;gBACxB;AACD,aAAA,CAAC;YACF,OAAO,EAAE,MAAM,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,YAAY,EAAE;AACrE,QAAA,CAAC,CAAC;AAEF,QAAA,aAAa,EAAEA,wBAAO,CAAC,CACrB,IAAW,EACX,SAAc,EACd,SAAqB,EACrB,SAA4D,EAC5D,iBAAwB,EACxB,iBAAwB,EACxB,SAAkB,KAChB;AACF,YAAA,OAAO,sBAAsB,CAAC;gBAC5B,IAAI;gBACJ,SAAS;gBACT,SAAS;gBACT,SAAS;gBACT,iBAAiB;gBACjB,iBAAiB;gBACjB;AACD,aAAA,CAAC;AACJ,QAAA,CAAC,CAAC;AAEF,QAAA,mBAAmB,EAAEA,wBAAO,CAAC,CAC3B,aAAkB,EAClB,aAAkB,EAClB,aAAkB,EAClB,mBAAwB,MACpB;AACJ,YAAA,SAAS,EAAE,eAAe,CAAkB,aAAa,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,SAAS,CAAC;AAC9E,YAAA,SAAS,EAAE,eAAe,CAAS,aAAa,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,KAAK,IAAI,CAAC,CAAC;AACtE,YAAA,SAAS,EAAE,UAAU,CAAkB,aAAa,EAAE,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC;YAClE,eAAe,EAAE,UAAU,CAAS,mBAAmB,EAAE,MAAM,EAAE,CAAC;AACnE,SAAA,CAAC,CAAC;AAEH,QAAA,QAAQ,EAAEA,wBAAO,CAAC,CAChB,kBAAuB,EACvB,gBAAqB,EACrB,SAAc,EACd,cAAmB,EACnB,gBAAqB,EACrB,kBAAuB,EACvB,cAAmB,EACnB,qBAA0B,EAC1B,uBAA4B,EAC5B,YAAiB,EACjB,eAAoB,EACpB,gBAAqB,MACjB;AACJ,YAAA,cAAc,EAAE,UAAU,CAAsB,kBAAkB,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,CAAC;AACrF,YAAA,YAAY,EAAE,UAAU,CAAsB,gBAAgB,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,CAAC;AACjF,YAAA,UAAU,EAAE,UAAU,CAAsB,SAAS,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,CAAC;YACxE,UAAU,EAAE,UAAU,CAAS,cAAc,EAAE,MAAM,EAAE,EAAE,IAAI,CAAC;YAC9D,YAAY,EAAE,UAAU,CAAS,gBAAgB,EAAE,MAAM,EAAE,EAAE,IAAI,CAAC;YAClE,cAAc,EAAE,UAAU,CAAS,kBAAkB,EAAE,MAAM,EAAE,EAAE,IAAI,CAAC;YACtE,eAAe,EAAE,UAAU,CAA+B,cAAc,EAAE,SAAS,EAAE,IAAI,CAAC;YAC1F,iBAAiB,EAAE,UAAU,CAA+B,qBAAqB,EAAE,SAAS,EAAE,IAAI,CAAC;YACnG,mBAAmB,EAAE,UAAU,CAA+B,uBAAuB,EAAE,SAAS,EAAE,IAAI,CAAC;YACvG,iBAAiB,EAAE,UAAU,CAAU,YAAY,EAAE,SAAS,EAAE,IAAI,CAAC;YACrE,mBAAmB,EAAE,UAAU,CAAU,eAAe,EAAE,SAAS,EAAE,IAAI,CAAC;YAC1E,qBAAqB,EAAE,UAAU,CAAU,gBAAgB,EAAE,SAAS,EAAE,IAAI,CAAC;AAC9E,SAAA,CAAC,CAAC;KACJ;AACH;;AChFO,MAAM,mBAAmB,GAAG,CAAC,EAClC,CAAC,EACD,CAAC,EACD,OAAO,EACP,UAAU,EACV,GAAG,EACH,SAAS,EACT,SAAS,EACV,KAAI;;IAEH,MAAM,KAAK,GAAG,OAAO,CAAC,CAAC,EAAE,CAAC,CAAC;AAC3B,IAAA,QACE7B,gBAAA,CAAA,aAAA,CAAA,MAAA,EAAA,MAAA,CAAA,MAAA,CAAA,EACE,GAAG,EAAE,GAAG,EACR,SAAS,EAAE,SAAS,EACpB,KAAK,EAAE,CAAC,CAAC,QAAQ,GAAG,CAAC,EACrB,MAAM,EAAE,CAAC,CAAC,QAAQ,GAAG,CAAC,EACtB,EAAE,EAAE,CAAC,CAAC,QAAQ,GAAG,CAAC,EAClB,EAAE,EAAE,CAAC,CAAC,QAAQ,GAAG,CAAC,EAClB,CAAC,EAAE,CAAC,CAAC,CAAC,QAAQ,EACd,CAAC,EAAE,CAAC,CAAC,CAAC,QAAQ,EAAA,EACV,KAAK,EAAA,EACT,KAAK,EAAE,KAAK,EACZ,SAAS,EAAE,SAAS,EAAA,YAAA,EACR,QAAQ,CAAC,CAAC,EAAE,CAAA,CAAE,EAC1B,QAAQ,EAAE,EAAE,EAAA,CAAA,CACZ;AAEN,CAAC;AAEM,MAAM,SAAS,GAAG,CAAC,QAAQ,KAAI;IACpC,OAAO;AACL,QAAA,CAAC,EAAE,CAAC,QAAQ,GAAG,CAAC;AAChB,QAAA,CAAC,EAAE,CAAC,QAAQ,GAAG,CAAC;AAChB,QAAA,KAAK,EAAE,QAAQ;AACf,QAAA,MAAM,EAAE;KACT;AACH,CAAC;AAEM,MAAM,mBAAmB,GAAG,CAAC,EAClC,CAAC,EACD,CAAC,EACD,OAAO,EACP,UAAU,EACV,GAAG,EACH,SAAS,EACT,SAAS,EACV,KAAI;AACH,IAAA,MAAM,MAAM,GAAG,CAAC,CAAC,SAAS,KAAK,MAAM,GAAG,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,KAAK;AAC1D,IAAA,MAAM,KAAK,GAAG,CAAC,CAAC,SAAS,KAAK,MAAM,GAAG,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC,MAAM;IAEzD,IAAI,CAAC,CAAC,EAAE;AACN,QAAA,OAAOA,yCAAK;IACd;AAEA,IAAA,QACEA,gBAAA,CAAA,aAAA,CAAA,MAAA,EAAA,EAAM,GAAG,EAAE,GAAG,EACZ,SAAS,EAAE,SAAS,EACpB,SAAS,EAAE,SAAS,EAEpB,MAAM,EAAE,MAAM,EACd,KAAK,EAAE,KAAK,EACZ,CAAC,EAAE,CAAC,KAAK,GAAG,CAAC,EACb,CAAC,EAAE,CAAC,MAAM,GAAG,CAAC,EACd,EAAE,EAAE,CAAC,EACL,EAAE,EAAE,CAAC,EACL,KAAK,EAAE,OAAO,CAAC,CAAC,CAAC,EAAA,YAAA,EACL,CAAA,KAAA,EAAQ,CAAC,CAAC,EAAE,CAAA,CAAE,EAC1B,QAAQ,EAAE,EAAE,EAAA,CACZ;AAEN,CAAC;AAEM,MAAM,kBAAkB,GAC7B,CAAC,IAAI,KACL,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,OAAO,EAAE,UAAU,EAAE,GAAG,EAAE,SAAS,EAAE,KAAI;IAChD,IAAI,CAAC,CAAC,EAAE;AACN,QAAA,OAAOA,yCAAK;IACd;IAEA,QACEA,gBAAA,CAAA,aAAA,CAAA,MAAA,EAAA,EAAM,GAAG,EAAE,GAAG,EACZ,SAAS,EAAE,SAAS,EACpB,SAAS,EAAE,aAAa,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,CAAA,CAAA,EAAI,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,CAAA,CAAA,CAAG,EAErD,CAAC,EAAE,CAAC,CAAC,CAAC,EACN,KAAK,EAAE,OAAO,CAAC,CAAC,EAAE,CAAC,CAAC,gBACR,CAAA,KAAA,EAAQ,CAAC,CAAC,EAAE,CAAA,CAAE,EAC1B,QAAQ,EAAE,EAAE,EAAA,CACZ;AAEN,CAAC;AAEI,MAAM,mBAAmB,GAAG,CAAC,IAAI,EAAE,KAAK,KAAI;IACjD,MAAM,QAAQ,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC;IAClC,MAAM,QAAQ,GAAG,QAAQ,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC;AAE9C,IAAA,OAAO,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,OAAO,EAAE,UAAU,EAAE,GAAG,EAAE,SAAS,EAAE,KAAI;QACvD,IAAI,CAAC,CAAC,EAAE;AACN,YAAA,OAAOA,yCAAK;QACd;AAEA,QAAA,MAAM,QAAQ,GAAG,QAAQ,GAAG,CAAC;AAC7B,QAAA,MAAM,QAAQ,GAAG,QAAQ,GAAG,CAAC;AAC7B,QAAA,MAAM,QAAQ,GAAG,QAAQ,GAAG,GAAG;AAE/B,QAAA,MAAM,SAAS,GAGX;AACF,YAAA,UAAU,EAAE,KAAK;AACjB,YAAA,QAAQ,EAAE,CAAA,EAAG,QAAQ,GAAG,CAAC,CAAA,EAAA;SAC1B;QACD,MAAM,KAAK,GAAG,OAAO,CAAC,CAAC,EAAE,CAAC,CAAC;AAC3B,QAAwB,UAAU,GAAG,UAAU,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG;QAExD,QACEA,sCAAG,GAAG,EAAE,GAAG,EAAE,SAAS,EAAE,SAAS,EAAA;AAC9B,YAAA,QAAQ,KACPA,gBAAA,CAAA,aAAA,CAAA,MAAA,EAAA,EACE,CAAC,EAAE,QAAQ,GAAG,CAAC,EACf,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,QAAQ,GAAG,CAAC,EACrB,KAAK,EAAE,QAAQ,GAAG,QAAQ,EAC1B,MAAM,EAAE,QAAQ,EAChB,KAAK,kCAAO,KAAK,CAAA,EAAA,EAAE,MAAM,EAAE,MAAM,MACjC,CACH;AACA,YAAA,QAAQ,KACPA,gBAAA,CAAA,aAAA,CAAA,MAAA,EAAA,EACE,CAAC,EAAE,QAAQ,GAAG,CAAC,EACf,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,QAAQ,GAAG,CAAC,EACrB,MAAM,EAAE,QAAQ,GAAG,QAAQ,EAC3B,KAAK,EAAE,QAAQ,EACf,KAAK,kCAAO,KAAK,CAAA,EAAA,EAAE,MAAM,EAAE,MAAM,MACjC,CACH;AACA,YAAA,QAAQ,KACPA,gBAAA,CAAA,aAAA,CAAA,MAAA,EAAA,EACE,MAAM,EAAC,OAAO,EACd,EAAE,EAAE,CAAC,EACL,EAAE,EAAE,QAAQ,GAAG,QAAQ,GAAG,CAAC,EAC3B,EAAE,EAAE,CAAC,CAAC,CAAC,GAAG,QAAQ,GAAG,CAAC,EACtB,EAAE,EAAE,CAAC,CAAC,CAAC,GAAG,QAAQ,GAAG,CAAC,EACtB,KAAK,EAAE,KAAK,GACZ,CACH;AACA,YAAA,QAAQ,KACPA,gBAAA,CAAA,aAAA,CAAA,MAAA,EAAA,EACE,MAAM,EAAC,OAAO,EACd,EAAE,EAAE,CAAC,EACL,EAAE,EAAE,QAAQ,GAAG,QAAQ,GAAG,CAAC,EAC3B,EAAE,EAAE,CAAC,CAAC,CAAC,GAAG,QAAQ,GAAG,CAAC,EACtB,EAAE,EAAE,CAAC,CAAC,CAAC,GAAG,QAAQ,GAAG,CAAC,EACtB,KAAK,EAAE,KAAK,GACZ,CACH;YACA,QAAQ,IAAI,CAAC,KAAK,KAAK,CAAC,MAAM,GAAG,CAAC,KACjCA,gBAAA,CAAA,aAAA,CAAA,MAAA,EAAA,EACE,MAAM,EAAC,OAAO,EACd,EAAE,EAAE,CAAC,EACL,EAAE,EAAE,QAAQ,GAAG,QAAQ,GAAG,CAAC,EAC3B,EAAE,EAAE,CAAC,CAAC,CAAC,GAAG,QAAQ,GAAG,CAAC,EACtB,EAAE,EAAE,CAAC,CAAC,CAAC,GAAG,QAAQ,GAAG,CAAC,EACtB,KAAK,EAAE,KAAK,EAAA,CACZ,CACH;YACA,QAAQ,IAAI,CAAC,KAAK,KAAK,CAAC,MAAM,GAAG,CAAC,KACjCA,gBAAA,CAAA,aAAA,CAAA,MAAA,EAAA,EACE,MAAM,EAAC,OAAO,EACd,EAAE,EAAE,CAAC,EACL,EAAE,EAAE,QAAQ,GAAG,QAAQ,GAAG,CAAC,EAC3B,EAAE,EAAE,CAAC,CAAC,CAAC,GAAG,QAAQ,GAAG,CAAC,EACtB,EAAE,EAAE,CAAC,CAAC,CAAC,GAAG,QAAQ,GAAG,CAAC,EACtB,KAAK,EAAE,KAAK,EAAA,CACZ,CACH;YACA,QAAQ,KACPA,gBAAA,CAAA,aAAA,CAAA,MAAA,EAAA,MAAA,CAAA,MAAA,CAAA,EAAM,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,QAAQ,GAAG,CAAC,EAAA,EAAM,SAAS,GAC7C,CAAC,CAAC,EAAE,CACA,CACR;AACA,YAAA,QAAQ,KACPA,gBAAA,CAAA,aAAA,CAAA,MAAA,EAAA,MAAA,CAAA,MAAA,CAAA,EACE,SAAS,EAAE,CAAA,UAAA,EAAa,CAAC,CAAC,CAAC,CAAA,yBAAA,EACzB,QAAQ,GAAG,CACb,CAAA,CAAA,CAAG,EAAA,EACC,SAAS,EAAA,EACb,CAAC,EAAE,CAAC,EAAA,CAAA,EAEH,CAAC,CAAC,EAAE,CACA,CACR,CACC;AAER,IAAA,CAAC;AACH,CAAC;AAEM,MAAM,uBAAuB,GAAG,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,KAAI;AAC5D,IAAA,MAAM,SAAS,GAAGG,WAAG,EAAE;IACvB,MAAM,EAAE,UAAU,GAAG,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI;AACtC,IAAA,MAAM,QAAQ,GAAG,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,GAAG,CAAC;IAC/C,MAAM,QAAQ,GAAG,QAAQ,CAAC,CAAC,CAAC,GAAG,QAAQ,CAAC,CAAC,CAAC;AAE1C,IAAA,MAAM,WAAW,GACf,QAAQ,GAAG,CAAC,GAAGC,mBAAW,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC;AAExE,IAAA,OAAO,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,OAAO,EAAE,UAAU,EAAE,GAAG,EAAE,SAAS,EAAE,KAAI;QACvD,IAAI,CAAC,CAAC,EAAE;AACN,YAAA,OAAOJ,yCAAK;QACd;AAEA,QAAA,SAAS,CAAC,WAAW,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;AAErD,QAAA,QACEA,gBAAA,CAAA,aAAA,CAAA,MAAA,EAAA,EAAM,GAAG,EAAE,GAAG,EACZ,SAAS,EAAE,CAAA,UAAA,EAAa,MAAM,CAAA,CAAA,CAAG,EAEjC,CAAC,EAAE,SAAS,CAAC;AACX,gBAAA,UAAU,EAAE,WAAW,CAAC,CAAC,CAAC,EAAE,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,EAAE,GAAG,CAAC;AACrD,gBAAA,QAAQ,EAAE,WAAW,CAAC,CAAC,CAAC,EAAE,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,EAAE,GAAG;aACnD,CAAC,EACF,KAAK,EAAE,OAAO,CAAC,CAAC,EAAE,CAAC,CAAC,EACpB,SAAS,EAAE,SAAS,gBACR,CAAA,KAAA,EAAQ,CAAC,CAAC,EAAE,CAAA,CAAE,EAC1B,QAAQ,EAAE,EAAE,EAAA,CACZ;AAEN,IAAA,CAAC;AACH,CAAC;AAEM,MAAM,oBAAoB,GAAG,CAAC,IAAI,EAAE,KAAK,EAAE,cAAc,EAAE,IAAI,KAAI;AACxE,IAAA,MAAM,QAAQ,GAAG,CAAC,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,IAAI,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC;IAClD,MAAM,SAAS,GAAG,cAAc,CAAC,IAAI,EAAE,KAAK,CAAC;IAC7C,MAAM,WAAW,GAAG,QAAQ,GAAG,GAAG,GAAG,QAAQ,GAAG,GAAG,GAAG,EAAE,GAAG,QAAQ,GAAG,GAAG,GAAG,EAAE;AAE9E,IAAA,QACEA,gBAAA,CAAA,aAAA,CAAA,GAAA,EAAA,EAAG,SAAS,EAAE,CAAA,OAAA,EAAU,WAAW,CAAA,CAAA,CAAG,EAAA,EACnC,OAAO,SAAS,KAAK,QAAQ,IAC5BA,gBAAA,CAAA,aAAA,CAAA,MAAA,EAAA,EAAM,UAAU,EAAC,QAAQ,EAAC,CAAC,EAAE,CAAC,EAAA,EAC3B,SAAS,CACL,KAEP,SAAS,CACV,CACC;AAER,CAAC;AAEM,MAAM,6BAA6B,GAAG,CAAC,EAC5C,CAAC,EACD,CAAC,EACD,OAAO,EACP,UAAU,EACV,GAAG,EACH,SAAS,EACV,KAAI;IACH,IAAI,CAAC,CAAC,EAAE;AACN,QAAA,OAAOA,yCAAK;IACd;;AAEA,IAAA,QACEA,gBAAA,CAAA,aAAA,CAAA,MAAA,EAAA,EAAM,GAAG,EAAE,GAAG,EACZ,SAAS,EAAE,CAAA,cAAA,CAAgB,EAE3B,KAAK,EAAE,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,EAAE,EAClB,MAAM,EAAE,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,EAAE,EACnB,CAAC,EAAE,CAAC,CAAC,EAAE,EACP,CAAC,EAAE,CAAC,CAAC,EAAE,EACP,EAAE,EAAE,CAAC,EACL,EAAE,EAAE,CAAC,EACL,KAAK,EAAE,OAAO,CAAC,CAAC,EAAE,CAAC,CAAC,EACpB,SAAS,EAAE,SAAS,EAAA,YAAA,EACR,CAAA,KAAA,EAAQ,CAAC,CAAC,EAAE,CAAA,CAAE,EAC1B,QAAQ,EAAE,EAAE,EAAA,CACZ;AAEN,CAAC;;ACjQD,MAAMsC,WAAS,GAAG,GAAG;AAErB,MAAM,4BAA4B,GAAG3B,YAAI;KACtC,KAAK,CAACS,sBAAc;KACpB,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC;KACZ,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;AAEhB,MAAM,0BAA0B,GAAGT,YAAI;KACpC,KAAK,CAACQ,sBAAc;KACpB,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC;KACZ,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;SAEA,cAAc,CAAC,CAAC,EAAE,CAAC,EAAE,SAAS,EAAA;AAC5C,IAAA,IAAI,CAAC,CAAC,QAAQ,IAAI,CAAC,CAAC,CAAC,QAAQ;QAAE,OAAO,EAAE;AACxC,IAAA,IAAI,CAAC,CAAC,QAAQ,IAAI,CAAC,CAAC,CAAC,QAAQ;AAAE,QAAA,OAAO,CAAC;AACvC,IAAA,MAAM,KAAK,GAAG,SAAS,KAAK,MAAM,GAAG,GAAG,GAAG,GAAG;AAC9C,IAAA,MAAM,MAAM,GAAG,SAAS,KAAK,MAAM,GAAG,GAAG,GAAG,GAAG;AAE/C,IAAA,OAAO,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,KAAK;AACvC,UAAE,CAAC,CAAC,WAAW,KAAK,CAAC,CAAC;AACpB,cAAE,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,MAAM;AACpC,cAAE,CAAC,CAAC,WAAW,GAAG,CAAC,CAAC;AACtB,UAAE,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC;AACvC;AAEO,MAAM,YAAY,GAAG;IAC1B,UAAU,EAAEoB,sBAAc;SACvB,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC;SACZ,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;IAChB,QAAQ,EAAEC,oBAAY;SACnB,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC;SACZ,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;IAChB,MAAM,EAAEC,aAAM,CAAC;CAChB;AAEM,MAAM,eAAe,GAAG;AAC7B,IAAA,KAAK,EAAE,CAAC,CAAC,EAAE,UAAU,GAAG,UAAU,KAAK,YAAY,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC;IAClE,OAAO,EAAE,CAAC,CAAC,KAAKA,aAAM,CAAC,OAAO,CAAC,CAAC,CAAC;AACjC,IAAA,MAAM,EAAE,CAAC,CAAC,KAAKA,aAAM,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,KAAK,CAAC;IACxC,SAAS,EAAE,CAAC,CAAC,KACXA,aAAM,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC,CAAC,MAAM,CAAC,QAAQ,EAAE,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC,KAAK,GAAG,GAAG,CAAC;IAChE,SAAS,EAAE,CAAC,CAAC,KACXA,aAAM,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC,CAAC,MAAM,CAAC,QAAQ,EAAE,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC,KAAK,GAAG,GAAG,CAAC;AAChE,IAAA,IAAI,EAAE,CAAC,CAAC,KAAKA,aAAM,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC;AAC9C,IAAA,KAAK,EAAE,CAAC,CAAC,KAAKA,aAAM,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC;AAChD,IAAA,KAAK,EAAE,CAAC,CAAC,KACPA,aAAM,CAAC,KAAK,CACV,CAAC,EACD,CAAC,CAAC,MAAM,CAAC,QAAQ,GAAG,CAAC,EACrB,CAAC,CAAC,MAAM,CAAC,QAAQ,GAAG,CAAC,EACrB,CAAC,CAAC,CAAC,MAAM,CAAC,QAAQ,GAAG,CAAC,CAAC,MAAM,CAAC,QAAQ,IAAI,CAAC;CAEhD;AAEM,MAAM,oBAAoB,GAAG,CAAC,CAAC,KACpC,IAAI,CAAC,CAAC,MAAM,CAAC,CAAC,CAAA,CAAA,EAAI,CAAC,CAAC,MAAM,CAAC,CAAC,CAAA,CAAA,EAAI,CAAC,CAAC,MAAM,CAAC,CAAC,CAAA,CAAA,EAAI,CAAC,CAAC,MAAM,CAAC,CAAC,EAAE;AAErD,MAAM,mBAAmB,GAC9B,CAAC,IAAI,EAAE,KAAK,KACZ,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,OAAO,EAAE,UAAU,EAAE,GAAG,EAAE,SAAS,EAAE,KAAI;AAChD,IAAA,MAAM,QAAQ,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,GAAG,KAAK,CAAC,MAAM;IACjD,MAAM,KAAK,GAAG,OAAO,CAAC,CAAC,EAAE,CAAC,CAAC;AAC3B,IAAA,QACEzC,gBAAA,CAAA,aAAA,CAAA,GAAA,EAAA,EAAG,GAAG,EAAE,GAAG,EAAA;QACTA,gBAAA,CAAA,aAAA,CAAA,MAAA,EAAA,MAAA,CAAA,MAAA,CAAA,EACE,GAAG,EAAE,GAAG,EACR,SAAS,EAAE,SAAS,EACpB,SAAS,EAAE,CAAA,UAAA,EAAa,CAAC,CAAC,MAAM,CAAC,CAAC,CAAA,CAAA,EAAI,CAAC,CAAC,MAAM,CAAC,CAAC,CAAA,CAAA,CAAG,EAAA,EAC/C,KAAK,EAAA,EACT,KAAK,EAAE,KAAK,EAAA,YAAA,EACA,CAAA,gBAAA,EAAmB,CAAC,CAAC,MAAM,CAAC,EAAE,CAAA,IAAA,EAAO,CAAC,CAAC,MAAM,CAAC,EAAE,CAAA,CAAE,EAC9D,QAAQ,EAAE,EAAE,EAAA,EACR,SAAS,CAAC,QAAQ,CAAC,CAAA,CACvB,CACA;AAER,CAAC;AAEI,MAAM,gBAAgB,GAAG,CAAC,IAAI,KAAI;IACvC,MAAM,OAAO,GAAG,IAAI,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC;IACjC,SAAS,aAAa,CAAC,CAAC,EAAA;QACtB,MAAM,IAAI,GAAGW,YAAI,EAAE,CAAC,KAAK,CAACK,kBAAU,CAAC;AACrC,QAAA,MAAM,IAAI,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC;AAC1C,QAAA,MAAM,IAAI,GAAG,CAAC,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,CAAC;AACpC,QAAA,OAAO,IAAI,CAAC;AACV,YAAA,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC;AACf,YAAA,CAAC,IAAI,EAAE,IAAI,GAAG,OAAO,CAAC;AACtB,YAAA,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC;AACf,SAAA,CAAC;IACJ;AAEA,IAAA,OAAO,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,OAAO,EAAE,UAAU,EAAE,GAAG,EAAE,SAAS,EAAE,KAAI;QACvD,MAAM,KAAK,GAAG,OAAO,CAAC,CAAC,EAAE,CAAC,CAAC;QAC3B,QACEhB,gBAAA,CAAA,aAAA,CAAA,MAAA,EAAA,MAAA,CAAA,MAAA,CAAA,EACE,GAAG,EAAE,GAAG,EACR,SAAS,EAAE,SAAS,EACpB,SAAS,EAAE,eAAe,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,CAAA,CAAA,CAAG,EACxC,CAAC,EAAE,aAAa,CAAC,CAAC,CAAC,IACf,KAAK,EAAA,EACT,KAAK,EAAE,KAAK,EAAA,YAAA,EACA,mBAAmB,CAAC,CAAC,MAAM,CAAC,EAAE,CAAA,IAAA,EAAO,CAAC,CAAC,MAAM,CAAC,EAAE,CAAA,CAAE,EAC9D,QAAQ,EAAE,EAAE,EAAA,CAAA,CACZ;AAEN,IAAA,CAAC;AACH,CAAC;AAED,MAAM,WAAW,GAAG,CAAC,KAAK,KAAI;IAC5B,MAAM,EAAE,CAAC,EAAE,KAAK,EAAE,UAAU,EAAE,QAAQ,EAAE,GAAG,KAAK;AAChD,IAAA,MAAM,OAAO,GAAG2B,YAAM,CAAC,IAAI,CAAC;IAE5BC,eAAS,CAAC,MAAK;QACb,IAAI,OAAO,aAAP,OAAO,KAAA,MAAA,GAAA,MAAA,GAAP,OAAO,CAAE,OAAO,EAAE;YACpB,MAAM,WAAW,GAAG,QAAQ,GAAG,KAAK,GAAG,UAAU;AACjD,YAAA,MAAM,aAAa,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE,WAAW,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;YACnE,IAAI,MAAM,GAAGc,uBAAU;AACpB,iBAAA,WAAW,CAAC,aAAa,GAAG,GAAG;iBAC/B,SAAS,CAAC,GAAG;iBACb,aAAa,CAAC,aAAa;iBAC3B,IAAI,CAAC,CAAC,CAAC;AAEV,YAAAC,kBAAM,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE;YAE/CA,kBAAM,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC;AAEpC,YAAAA,kBAAM,CAAC,OAAO,CAAC,OAAO;iBACnB,SAAS,CAAC,mBAAmB;AAC7B,iBAAA,KAAK,CAAC,MAAM,EAAE,MAAM;AACpB,iBAAA,KAAK,CAAC,cAAc,EAAE,aAAa,GAAG,CAAC;AACvC,iBAAA,KAAK,CAAC,QAAQ,EAAE,OAAO,CAAC;AAE3B,YAAAA,kBAAM,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,SAAS,CAAC,aAAa,CAAC,CAAC,KAAK,CAAC,MAAM,EAAE,OAAO,CAAC;QACzE;AACF,IAAA,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;AAEP,IAAA,OAAO3C,gBAAA,CAAA,aAAA,CAAA,GAAA,EAAA,EAAG,GAAG,EAAE,OAAO,GAAI;AAC5B,CAAC;AAEM,MAAM,oBAAoB,GAAG,CAAC,KAAK,KAAI;AAC5C,IAAA,MAAM,EACJ,CAAC,EACD,CAAC,EACD,OAAO,EAEP,GAAG,EACH,SAAS,EAET,aAAa,EACd,GAAG,KAAK;AAET,IAAA,MAAM,EAAE,UAAU,EAAE,GAAG,CAAC;IAExB,IAAI,SAAS,GAAG,EAAE;AAClB,IAAA,IAAI,CAAC,CAAC,QAAQ,EAAE;AACd,QAAA,MAAM,EAAE,gBAAgB,EAAE,GAAG,CAAC;AAC9B,QAAA,MAAM,EACJ,OAAO,EACP,OAAO,EACP,cAAc,EACd,eAAe,EACf,kBAAkB,EAClB,OAAO,EACP,OAAO,EACR,GAAG,gBAAgB;QAEpB,SAAS,GAAG,CAAA,CAAA,EAAI,OAAO,CAAA,CAAA,EAAI,OAAO,CAAA,CAAA,EAAI,cAAc,CAAA,CAAA,EAAI,OAAO,CAAA,CAAA,EAAI,cAAc,CAAA,CAAA,EAAI,kBAAkB,IAAI,eAAe,CAAA,CAAA,EAAI,kBAAkB,CAAA,CAAA,EAAI,eAAe,CAAA,CAAA,EAAI,OAAO,CAAA,CAAA,EAAI,OAAO,CAAA,CAAA,EAAI,OAAO,CAAA,CAAE;IACxM;SAAO;QACL,IAAI,EAAE,GAAG,CAAC,CAAC,MAAM,CAAC,EAAE,EAClB,EAAE,GAAG,CAAC,CAAC,MAAM,CAAC,EAAE,EAChB,EAAE,GAAG4C,+BAAiB,CAAC,EAAE,EAAE,EAAE,CAAC,EAC9B,EAAE,GAAG,EAAE,CAACN,WAAS,CAAC,EAClB,EAAE,GAAG,EAAE,CAAC,CAAC,GAAGA,WAAS,CAAC,EACtB,EAAE,GAAG,CAAC,CAAC,EAAE,EACT,EAAE,GAAG,CAAC,CAAC,EAAE;AAEX,QAAA,SAAS,GAAG,CAAA,CAAA,EAAI,EAAE,IAAI,EAAE,CAAA,CAAA,EAAI,EAAE,CAAA,CAAA,EAAI,EAAE,CAAA,CAAA,EAAI,EAAE,IAAI,EAAE,CAAA,CAAA,EAAI,EAAE,CAAA,CAAA,EAAI,EAAE,EAAE;IAChE;IAEA,QACEtC,+BAACA,gBAAK,CAAC,QAAQ,EAAA,EAAC,GAAG,EAAE,GAAG,EAAA;AACtB,QAAAA,gBAAA,CAAA,aAAA,CAAA,MAAA,EAAA,EACE,SAAS,EAAE,SAAS,EAEpB,CAAC,EAAE,aAAa,EAChB,KAAK,EAAE,OAAO,CAAC,CAAC,EAAE,CAAC,CAAC,EAAA,YAAA,EACR,CAAA,gBAAA,EAAmB,CAAC,CAAC,MAAM,CAAC,EAAE,CAAA,IAAA,EAAO,CAAC,CAAC,MAAM,CAAC,EAAE,EAAE,EAC9D,QAAQ,EAAE,EAAE,EAAA,CACZ;AACD,QAAA,UAAU,KACTA,gBAAA,CAAA,aAAA,CAAC,WAAW,EAAA,EACV,CAAC,EAAE,SAAS,EACZ,KAAK,EAAE,CAAC,CAAC,WAAW,EACpB,UAAU,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAC7C,QAAQ,EAAE,CAAC,CAAC,QAAQ,GACpB,CACH,CACc;AAErB,CAAC;AAEM,MAAM,kBAAkB,GAC7B,CAAC,IAAI,KACL,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,OAAO,EAAE,UAAU,EAAE,GAAG,EAAE,SAAS,EAAE,MAE1CA,gBAAA,CAAA,aAAA,CAAA,MAAA,EAAA,EAAM,GAAG,EAAE,GAAG,EACZ,SAAS,EAAE,SAAS,EACpB,SAAS,EAAE,aAAa,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,CAAA,CAAA,EAAI,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,EAErD,CAAC,EAAE,CAAC,CAAC,CAAC,EACN,KAAK,EAAE,OAAO,CAAC,CAAC,EAAE,CAAC,CAAC,EAAA,YAAA,EACR,CAAA,gBAAA,EAAmB,CAAC,CAAC,MAAM,CAAC,EAAE,CAAA,IAAA,EAAO,CAAC,CAAC,MAAM,CAAC,EAAE,CAAA,CAAE,EAC9D,QAAQ,EAAE,EAAE,EAAA,CACZ,CACH;AAEE,MAAM,kBAAkB,GAAG,CAAC,SAAS,KAAI;IAC9C,MAAM,kBAAkB,GACtB,SAAS,KAAK,IAAI,IAAI,SAAS,KAAK;AAClC,UAAE;UACA,0BAA0B;AAChC,IAAA,OAAO,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,OAAO,EAAE,UAAU,EAAE,GAAG,EAAE,SAAS,EAAE,KAAI;QACvD,IAAI,CAAC,CAAC,MAAM,IAAI,CAAC,CAAC,aAAa,EAAE;AAC/B,YAAA,MAAM,eAAe,GAAG,YAAY,EAAE;AAEtC,YAAA,eAAe,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;AAC7B,YAAA,eAAe,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;AAC7B,YAAA,eAAe,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,MAAM,IAAI,CAAC,CAAC;AAEtC,YAAA,IAAI,CAAC,CAAC,aAAa,EAAE;gBACnB,MAAM,mBAAmB,GAAG,CAAC,CAAC,aAAa,CAAC,IAAI,CAC9C,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,MAAM,CAC9B;gBACD,QACEA,sCAAG,GAAG,EAAE,GAAG,GAAG,CAAA,CAAE,EAAA,EACb,eAAe,CAAC;oBACf,MAAM,EAAE,CAAC,CAAC,MAAM;oBAChB,QAAQ,EAAE,CAAC,CAAC;AACb,iBAAA,CAAC,CAAC,GAAG,CAAC,CAAC,OAAO,EAAE,OAAO,MACtBA,gBAAA,CAAA,aAAA,CAAA,MAAA,EAAA,EAAM,GAAG,EAAE,CAAA,EAAG,GAAG,CAAA,CAAA,EAAI,OAAO,CAAA,CAAE,EAC5B,SAAS,EAAE,SAAS,EAEpB,CAAC,EAAE,OAAO,EACV,KAAK,EAAE,OAAO,CAAC,mBAAmB,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,EAAA,YAAA,EACnC,CAAA,gBAAA,EAAmB,CAAC,CAAC,MAAM,CAAC,EAAE,CAAA,IAAA,EAAO,CAAC,CAAC,MAAM,CAAC,EAAE,CAAA,CAAE,EAC9D,QAAQ,EAAE,EAAE,EAAA,CACZ,CACH,CAAC,CACA;YAER;YAEA,QACEA,yCAAM,GAAG,EAAE,GAAG,EACZ,SAAS,EAAE,SAAS,EAEpB,CAAC,EAAE,eAAe,CAAC,CAAC,CAAC,MAAM,CAAC,EAC5B,KAAK,EAAE,OAAO,CAAC,CAAC,EAAE,CAAC,CAAC,gBACR,CAAA,gBAAA,EAAmB,CAAC,CAAC,MAAM,CAAC,EAAE,CAAA,IAAA,EAAO,CAAC,CAAC,MAAM,CAAC,EAAE,EAAE,EAC9D,QAAQ,EAAE,EAAE,EAAA,CACZ;QAEN;QAEA,QACEA,yCAAM,GAAG,EAAE,GAAG,EACZ,SAAS,EAAE,SAAS,EAEpB,CAAC,EAAE,kBAAkB,CAAC,CAAC,CAAC,MAAM,CAAC,EAC/B,KAAK,EAAE,OAAO,CAAC,CAAC,EAAE,CAAC,CAAC,gBACR,CAAA,gBAAA,EAAmB,CAAC,CAAC,MAAM,CAAC,EAAE,CAAA,IAAA,EAAO,CAAC,CAAC,MAAM,CAAC,EAAE,EAAE,EAC9D,QAAQ,EAAE,EAAE,EAAA,CACZ;AAEN,IAAA,CAAC;AACH,CAAC;;ACvSD,MAAM,SAAS,GAAG,GAAG;AAEd,MAAM,UAAU,GAAG,CAAC,CAAC,KAAI;AAC9B,IAAA,MAAM,IAAI,GACR,CAAC,CAAC,SAAS,KAAK;AACd,UAAE,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,CAAC;AAClC,UAAE,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC;;AAEvC,IAAA,MAAM,eAAe,GACnB,CAAC,CAAC,SAAS,KAAK;AACd,UAAE;AACE,YAAA;gBACE,CAAC,EAAE,CAAC,CAAC,EAAE;AACP,gBAAA,CAAC,EAAE,CAAC,CAAC,MAAM,CAAC;AACb,aAAA;AACD,YAAA;gBACE,CAAC,EAAE,CAAC,CAAC,EAAE;gBACP,CAAC,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,GAAG,IAAI,GAAG;AACxB,aAAA;AACD,YAAA;gBACE,CAAC,EAAE,CAAC,CAAC,EAAE;gBACP,CAAC,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,GAAG,IAAI,GAAG;AACxB,aAAA;AACD,YAAA;gBACE,CAAC,EAAE,CAAC,CAAC,EAAE;AACP,gBAAA,CAAC,EAAE,CAAC,CAAC,MAAM,CAAC;AACb;AACF;AACH,UAAE;AACE,YAAA;AACE,gBAAA,CAAC,EAAE,CAAC,CAAC,MAAM,CAAC,EAAE;gBACd,CAAC,EAAE,CAAC,CAAC;AACN,aAAA;AACD,YAAA;gBACE,CAAC,EAAE,CAAC,CAAC,MAAM,CAAC,EAAE,GAAG,IAAI,GAAG,CAAC;gBACzB,CAAC,EAAE,CAAC,CAAC;AACN,aAAA;AACD,YAAA;gBACE,CAAC,EAAE,CAAC,CAAC,MAAM,CAAC,EAAE,GAAG,IAAI,GAAG,CAAC;gBACzB,CAAC,EAAE,CAAC,CAAC;AACN,aAAA;AACD,YAAA;AACE,gBAAA,CAAC,EAAE,CAAC,CAAC,MAAM,CAAC,EAAE;gBACd,CAAC,EAAE,CAAC,CAAC;AACN;SACF;AAEP,IAAA,MAAM,aAAa,GAAG,YAAY,EAAE;AAEpC,IAAA,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;AAC3B,IAAA,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;AAC3B,IAAA,aAAa,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,WAAW,GAAG,CAAC,CAAC;AAExC,IAAA,OAAO,aAAa,CAAC,eAAe,CAAC;AACvC,CAAC;AAEM,MAAM,QAAQ,GAAG,CAAC,CAAC,KAAI;AAC5B,IAAA,IAAI,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE;AAEtC,IAAA,IAAI,CAAC,CAAC,SAAS,KAAK,MAAM,EAAE;QAC1B,EAAE,GAAG,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,WAAW,GAAG,CAAC;QAC7B,EAAE,GAAG,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,WAAW,GAAG,CAAC;QAC7B,EAAE,GAAG,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,WAAW,GAAG,CAAC;QAC7B,EAAE,GAAG,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,WAAW,GAAG,CAAC;AAC7B,QAAA,EAAE,GAAG,CAAC,CAAC,MAAM,CAAC,EAAE;AAChB,QAAA,EAAE,GAAG,CAAC,CAAC,MAAM,CAAC,EAAE;AAChB,QAAA,EAAE,GAAG4C,+BAAiB,CAAC,EAAE,EAAE,EAAE,CAAC;AAC9B,QAAA,EAAE,GAAG,EAAE,CAAC,SAAS,CAAC;AAClB,QAAA,EAAE,GAAG,EAAE,CAAC,CAAC,GAAG,SAAS,CAAC;AAEtB,QAAA,OAAO,CAAA,CAAA,EAAI,EAAE,CAAA,CAAA,EAAI,EAAE,IAAI,EAAE,CAAA,CAAA,EAAI,EAAE,CAAA,CAAA,EAAI,EAAE,CAAA,CAAA,EAAI,EAAE,CAAA,CAAA,EAAI,EAAE,CAAA,CAAA,EAAI,EAAE,CAAA,CAAA,EAAI,EAAE,CAAA,CAAA,EAAI,EAAE,CAAA,CAAA,EAAI,EAAE,IAAI,EAAE,CAAA,CAAA,EAAI,EAAE,CAAA,CAAA,EAAI,EAAE,CAAA,CAAA,EAAI,EAAE,CAAA,CAAA,EAAI,EAAE,GAAG;IAC5G;IACC,CAAC,EAAE,GAAG,CAAC,CAAC,MAAM,CAAC,EAAE;AAChB,SAAC,EAAE,GAAG,CAAC,CAAC,MAAM,CAAC,EAAE;SAChB,EAAE,GAAGA,+BAAiB,CAAC,EAAE,EAAE,EAAE,CAAC;AAC/B,SAAC,EAAE,GAAG,EAAE,CAAC,SAAS,CAAC;SAClB,EAAE,GAAG,EAAE,CAAC,CAAC,GAAG,SAAS,CAAC;SACtB,EAAE,GAAG,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,WAAW,GAAG,CAAC;SAC7B,EAAE,GAAG,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,WAAW,GAAG,CAAC;SAC7B,EAAE,GAAG,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,WAAW,GAAG,CAAC;AAC9B,SAAC,EAAE,GAAG,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,WAAW,GAAG,CAAC,CAAC;AAEjC,IAAA,OAAO,CAAA,CAAA,EAAI,EAAE,CAAA,CAAA,EAAI,EAAE,IAAI,EAAE,CAAA,CAAA,EAAI,EAAE,CAAA,CAAA,EAAI,EAAE,CAAA,CAAA,EAAI,EAAE,CAAA,CAAA,EAAI,EAAE,CAAA,CAAA,EAAI,EAAE,CAAA,CAAA,EAAI,EAAE,CAAA,CAAA,EAAI,EAAE,CAAA,CAAA,EAAI,EAAE,IAAI,EAAE,CAAA,CAAA,EAAI,EAAE,CAAA,CAAA,EAAI,EAAE,CAAA,CAAA,EAAI,EAAE,CAAA,CAAA,EAAI,EAAE,GAAG;AAC5G,CAAC;AAEK,SAAU,gBAAgB,CAAC,IAAI,EAAA;AACnC,IAAA,MAAM,aAAa,GAAG,YAAY,EAAE;AAEpC,IAAA,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;AAC3B,IAAA,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;AAC3B,IAAA,aAAa,CAAC,CAAC,CAAC,MAAM,IAAI,CAAC,WAAW,GAAG,CAAC,CAAC;AAE3C,IAAA,MAAM,SAAS,GACb,IAAI,CAAC,SAAS,KAAK;AACjB,UAAE;AACE,YAAA;AACE,gBAAA,CAAC,EAAE,IAAI,CAAC,gBAAgB,CAAC,OAAO;AAChC,gBAAA,CAAC,EAAE,IAAI,CAAC,gBAAgB,CAAC;AAC1B,aAAA;AACD,YAAA;AACE,gBAAA,CAAC,EAAE,IAAI,CAAC,gBAAgB,CAAC,OAAO;AAChC,gBAAA,CAAC,EAAE,IAAI,CAAC,gBAAgB,CAAC;AAC1B,aAAA;AACD,YAAA;AACE,gBAAA,CAAC,EAAE,IAAI,CAAC,gBAAgB,CAAC,kBAAkB;AAC3C,gBAAA,CAAC,EAAE,IAAI,CAAC,gBAAgB,CAAC;AAC1B,aAAA;AACD,YAAA;AACE,gBAAA,CAAC,EAAE,IAAI,CAAC,gBAAgB,CAAC,kBAAkB;AAC3C,gBAAA,CAAC,EAAE,IAAI,CAAC,gBAAgB,CAAC;AAC1B,aAAA;AACD,YAAA;AACE,gBAAA,CAAC,EAAE,IAAI,CAAC,gBAAgB,CAAC,OAAO;AAChC,gBAAA,CAAC,EAAE,IAAI,CAAC,gBAAgB,CAAC;AAC1B,aAAA;AACD,YAAA;AACE,gBAAA,CAAC,EAAE,IAAI,CAAC,gBAAgB,CAAC,OAAO;AAChC,gBAAA,CAAC,EAAE,IAAI,CAAC,gBAAgB,CAAC;AAC1B;AACF;AACH,UAAE;AACE,YAAA;AACE,gBAAA,CAAC,EAAE,IAAI,CAAC,gBAAgB,CAAC,OAAO;AAChC,gBAAA,CAAC,EAAE,IAAI,CAAC,gBAAgB,CAAC;AAC1B,aAAA;AACD,YAAA;AACE,gBAAA,CAAC,EAAE,IAAI,CAAC,gBAAgB,CAAC,cAAc;AACvC,gBAAA,CAAC,EAAE,IAAI,CAAC,gBAAgB,CAAC;AAC1B,aAAA;AACD,YAAA;AACE,gBAAA,CAAC,EAAE,IAAI,CAAC,gBAAgB,CAAC,cAAc;AACvC,gBAAA,CAAC,EAAE,IAAI,CAAC,gBAAgB,CAAC;AAC1B,aAAA;AACD,YAAA;AACE,gBAAA,CAAC,EAAE,IAAI,CAAC,gBAAgB,CAAC,eAAe;AACxC,gBAAA,CAAC,EAAE,IAAI,CAAC,gBAAgB,CAAC;AAC1B,aAAA;AACD,YAAA;AACE,gBAAA,CAAC,EAAE,IAAI,CAAC,gBAAgB,CAAC,eAAe;AACxC,gBAAA,CAAC,EAAE,IAAI,CAAC,gBAAgB,CAAC;AAC1B,aAAA;AACD,YAAA;AACE,gBAAA,CAAC,EAAE,IAAI,CAAC,gBAAgB,CAAC,OAAO;AAChC,gBAAA,CAAC,EAAE,IAAI,CAAC,gBAAgB,CAAC;AAC1B;SACF;AAEP,IAAA,OAAO,aAAa,CAAC,SAAS,CAAC;AACjC;;ACxFA,MAAM,kBAAkB,GAAG,CAAC,SAAS,EAAE,WAAW,EAAE,cAAc,EAAE,KAAK,KAAI;AAC3E,IAAA,IAAI,SAAS,CAAC,QAAQ,EAAE;AACtB,QAAA,KAAK,MAAM,KAAK,IAAI,SAAS,CAAC,QAAQ,EAAE;YACtC,MAAM,YAAY,GAAG,WAAW,CAAC,MAAM,CAAC,CAAC,KAAK,KAAK,KAAK,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,EAAE,CAAC;AAEzE,YAAA,KAAK,MAAM,KAAK,IAAI,YAAY,EAAE;gBAChC,MAAM,MAAM,GACV,KAAK,CAAC,IAAI,CAAC,CAAC,IAAI,KAAK,cAAc,CAAC,IAAI,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE;AAE/D,gBAAA,MAAM,OAAO,GAAA,MAAA,CAAA,MAAA,CAAA,MAAA,CAAA,MAAA,CAAA,EACX,EAAE,EAAE,KAAK,CAAC,CAAC,CAAC,EAAA,EACT,MAAM,CAAA,EAAA,EACT,QAAQ,EAAE,EAAE,EACZ,QAAQ,EAAE,EAAE,GACb;AAED,gBAAA,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,OAAO,CAAC;AACrC,gBAAA,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC;YAC9B;YACA,IAAI,KAAK,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE;gBAC7B,kBAAkB,CAAC,KAAK,EAAE,WAAW,EAAE,cAAc,EAAE,KAAK,CAAC;YAC/D;QACF;IACF;AACF,CAAC;AAEM,MAAM,SAAS,GAAG,CACvB,KAAK,EACL,KAAK,EACL,cAAc,EACd,cAAc,EACd,cAAc,KACZ;AACF,IAAA,IAAI,SAAS,GAAG,EAAE,EAAE,EAAE,gBAAgB,EAAE,QAAQ,EAAE,EAAE,EAAE,QAAQ,EAAE,IAAI,GAAG,EAAE,EAAE;AAC3E,IAAA,MAAM,sBAAsB,GAAG,IAAI,GAAG,EAAE;AACxC,IAAA,MAAM,iBAAiB,GAAG,IAAI,GAAG,EAAE;IACnC,IAAI,cAAc,GAAG,IAAI;IACzB,IAAI,cAAc,GAAG,IAAI;AAEzB,IAAA,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;AACrC,QAAA,MAAM,IAAI,GAAG,KAAK,CAAC,CAAC,CAAC;AAErB,QAAA,MAAM,MAAM,GAAG,cAAc,CAAC,IAAI,CAAC;AACnC,QAAA,MAAM,MAAM,GAAG,cAAc,CAAC,IAAI,CAAC;AACnC,QAAA,MAAM,QAAQ,GACZ,OAAO,MAAM,KAAK,QAAQ,GAAG,cAAc,CAAC,MAAM,CAAC,GAAG,MAAM;AAC9D,QAAA,MAAM,QAAQ,GACZ,OAAO,MAAM,KAAK,QAAQ,GAAG,cAAc,CAAC,MAAM,CAAC,GAAG,MAAM;AAE9D,QAAA,iBAAiB,CAAC,GAAG,CAAC,QAAQ,EAAE,QAAQ,CAAC;QAEzC,IAAI,CAAC,sBAAsB,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE;AACzC,YAAA,sBAAsB,CAAC,GAAG,CAAC,QAAQ,EAAE,QAAQ,CAAC;QAChD;aAAO;YACL,cAAc,GAAG,KAAK;YACtB;QACF;IACF;IAEA,IAAI,cAAc,EAAE;QAClB,MAAM,WAAW,GAAoB,EAAE;AACvC,QAAA,KAAK,MAAM,KAAK,IAAI,sBAAsB,EAAE;AAC1C,YAAA,WAAW,CAAC,IAAI,CAAC,KAAK,CAAC;AACvB,YAAA,MAAM,MAAM,GAAG,KAAK,CAAC,CAAC,CAAC;YACvB,IAAI,CAAC,sBAAsB,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE;AACvC,gBAAA,sBAAsB,CAAC,GAAG,CAAC,MAAM,EAAE,gBAAgB,CAAC;gBACpD,MAAM,MAAM,GACV,KAAK,CAAC,IAAI,CAAC,CAAC,IAAI,KAAK,cAAc,CAAC,IAAI,CAAC,KAAK,MAAM,CAAC,IAAI,EAAE;AAE7D,gBAAA,MAAM,OAAO,GAAA,MAAA,CAAA,MAAA,CAAA,MAAA,CAAA,MAAA,CAAA,EACX,EAAE,EAAE,MAAM,EAAA,EACP,MAAM,CAAA,EAAA,EACT,QAAQ,EAAE,EAAE,EACZ,QAAQ,EAAE,IAAI,GAAG,EAAE,GACpB;gBACD,SAAS,CAAC,QAAQ,CAAC,GAAG,CAAC,MAAM,EAAE,OAAO,CAAC;AACvC,gBAAA,SAAS,CAAC,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC;YAClC;QACF;QAEA,kBAAkB,CAAC,SAAS,EAAE,WAAW,EAAE,cAAc,EAAE,KAAK,CAAC;AAEjE,QAAA,KAAK,CAAC,OAAO,CAAC,CAAC,IAAI,KAAI;AACrB,YAAA,MAAM,MAAM,GAAG,cAAc,CAAC,IAAI,CAAC;AACnC,YAAA,IACE,CAAC,sBAAsB,CAAC,GAAG,CAAC,MAAM,CAAC;AACnC,gBAAA,CAAC,iBAAiB,CAAC,GAAG,CAAC,MAAM,CAAC,EAC9B;gBACA,SAAS,CAAC,QAAQ,CAAC,IAAI,+BACrB,EAAE,EAAE,MAAM,EAAA,EACP,IAAI,KACP,QAAQ,EAAE,EAAE,EACZ,QAAQ,EAAE,IAAI,GAAG,EAAE,EAAA,CAAA,CACnB;YACJ;AACF,QAAA,CAAC,CAAC;QAEF,IAAI,SAAS,CAAC,QAAQ,CAAC,MAAM,KAAK,CAAC,EAAE;AACnC,YAAA,SAAS,GAAG,SAAS,CAAC,QAAQ,CAAC,CAAC,CAAC;YACjC,cAAc,GAAG,KAAK;QACxB;QAEA,OAAO,EAAE,SAAS,EAAE,cAAc,EAAE,IAAI,EAAE,cAAc,EAAE;IAC5D;AAEA,IAAA,OAAO,EAAE,SAAS,EAAE,EAAE,EAAE,cAAc,EAAE,KAAK,EAAE,cAAc,EAAE,KAAK,EAAE;AACxE,CAAC;;ACxIM,MAAM,SAAS,GAAG,CAAC,EACxB,IAAI,EACJ,WAAW,EACX,UAAU,EACV,OAAO,EACP,OAAO,EACP,UAAU,EACV,aAAa,EACb,cAAc,EAEd,eAAe,EAChB,KAAI;IACH,MAAM,aAAa,GAAG,UAAU;IAChC,MAAM,YAAY,GAAG,EAAE;IAEvB,IAAI,eAAe,CAAC,IAAI,KAAK,QAAQ,IAAI,cAAc,EAAE;QACvD;IACF;IAEA,IAAI,eAAe,EAAE;QACnB,IAAI,CAAC,GAAG,CAAC;AACT,QAAA,KAAK,MAAM,CAAC,IAAI,IAAI,EAAE;YACpB,MAAM,aAAa,GAAG,aAAa,CAAC;gBAClC,CAAC;gBACD,CAAC;gBACD,WAAW;gBACX,OAAO;gBACP,OAAO;gBACP,UAAU;gBACV,GAAG,EAAE,WAAW,GAAG,WAAW,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAA,KAAA,EAAQ,CAAC,CAAA,CAAE;gBAC1D,SAAS,EAAE,QAAQ,OAAO,CAAC,CAAC,EAAE,CAAC,CAAC,CAAA,CAAE;gBAClC,SAAS,EAAE,aAAa,CAAC,CAAC,CAAC,CAAA,CAAA,EAAI,CAAC,CAAC,CAAC,CAAA,CAAA;AACnC,aAAA,CAAC;YAEF,IAAI,cAAc,IAAI,cAAc,CAAC,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE;gBACnD,MAAM,EAAE,SAAS,GAAG,gBAAgB,EAAE,GAAG,aAAa,CAAC,KAAK;AAC5D,gBAAA,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG;AACZ,qBAAA,OAAO,CAAC,YAAY,EAAE,EAAE;AACxB,qBAAA,OAAO,CAAC,GAAG,EAAE,EAAE;qBACf,KAAK,CAAC,GAAG,CAAC;AACb,gBAAA,MAAM,UAAU,GAAG;AACjB,oBAAA,SAAS,EAAE,aAAa;AACxB,oBAAA,EAAE,EAAE,CAAC;AACL,oBAAA,EAAE,EAAE,CAAC;oBACL,CAAC;oBACD,CAAC;oBACD,SAAS,EAAA,MAAA,CAAA,MAAA,CAAA,EACP,QAAQ,EAAE,OAAO,aAAa,CAAC,IAAI,KAAK,QAAQ,GAAG,aAAa,CAAC,IAAI,GAAG,aAAa,CAAC,KAAK,CAAC,QAAQ,EAAA,EACjG,aAAa,CAAC,KAAK,CACvB;oBACD,OAAO;AACP,oBAAA,QAAQ,EAAE,UAAU;oBACpB;iBACD;AACD,gBAAA,aAAa,CAAC,IAAI,CAAC,UAAU,CAAC;YAChC;iBAAO;;AAEL,gBAAA,YAAY,CAAC,IAAI,CAAC,aAAa,CAAC;YAClC;AACA,YAAA,CAAC,EAAE;QACL;IACF;AACA,IAAA,OAAO,YAAY;AACrB,CAAC;AAEM,MAAM,SAAS,GAAG,CAAC,QAAQ,KAAI;AACpC,IAAA,MAAM,EACJ,IAAI,EAAE,QAAQ,EACd,WAAW,EACX,UAAU,EACV,OAAO,EACP,OAAO,EACP,UAAU,EACV,cAAc,EACd,aAAa,EACb,IAAI,EAEJ,eAAe,EACf,UAAU,EACV,aAAa,EACb,IAAI,EACL,GAAG,QAAQ;AAEZ,IAAA,MAAM,EACJ,IAAI,EAAE,WAAW,EACjB,SAAS,EACT,QAAQ,GAAG,cAAc,EAC1B,GAAG,eAAe;AACnB,IAAA,MAAM,IAAI,GACR,WAAW,KAAK;UACZ,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,QAAQ,CAAC,CAAC,EAAE,CAAC,EAAE,SAAS,CAAC;UACjD,QAAQ;IAEd,IAAI,UAAU,GAAG,oBAAoB;IACrC,MAAM,YAAY,GAAG,EAAE;IACvB,IAAI,cAAc,IAAI,eAAe,CAAC,IAAI,KAAK,QAAQ,EAAE;QACvD,IAAI,CAAC,GAAG,CAAC;AACT,QAAA,MAAM,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,GAAG,aAAa,CAAC;AAC9D,QAAA,KAAK,MAAM,CAAC,IAAI,IAAI,EAAE;AACpB,YAAA,MAAM,UAAU,GAAG;AACjB,gBAAA,SAAS,EAAE,aAAa;AACxB,gBAAA,EAAE,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC;AACd,gBAAA,EAAE,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC;gBACd,CAAC;gBACD,CAAC;gBACD,SAAS,EAAA,MAAA,CAAA,MAAA,CAAA,EAAI,QAAQ,EAAE,MAAM,IAAK,SAAS,CAAC,QAAQ,CAAC,CAAE;gBACvD,OAAO;AACP,gBAAA,QAAQ,EAAE,UAAU;gBACpB;aACD;AACD,YAAA,aAAa,CAAC,IAAI,CAAC,UAAU,CAAC;AAC9B,YAAA,CAAC,EAAE;QACL;IACF;SAAO,IAAI,UAAU,EAAE;;QAErB,IAAI,IAAI,EAAE;AACR,YAAA,IAAI,OAAO,IAAI,KAAK,UAAU,EAAE;gBAC9B,UAAU,GAAG,IAAI;YACnB;AAAO,iBAAA,IAAI,eAAe,CAAC,IAAI,CAAC,EAAE;AAChC,gBAAA,UAAU,GAAG,CAAC,CAAC,KAAK,eAAe,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,UAAU,CAAC;YAC1D;QACF;QACA,IAAI,CAAC,GAAG,CAAC;AACT,QAAA,KAAK,MAAM,CAAC,IAAI,IAAI,EAAE;YACpB,MAAM,kBAAkB,GAAG,UAAU,CAAC;gBACpC,CAAC;gBACD,CAAC;gBACD,WAAW;gBACX,OAAO;gBACP,OAAO;gBACP,UAAU;AACV,gBAAA,GAAG,EAAE,WAAW,GAAG,WAAW,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,CAAA,KAAA,EAAQ,CAAC,CAAA,CAAE;gBAClD,SAAS,EAAE,GAAG,OAAO,CAAC,CAAC,EAAE,CAAC,CAAC,CAAA,KAAA,CAAO;gBAClC,SAAS,EAAE,aAAa,CAAC,CAAC,CAAC,CAAA,CAAA,EAAI,CAAC,CAAC,CAAC,CAAA,CAAA,CAAG;AAErC,gBAAA,aAAa,EAAE,UAAU,CAAC,CAAC;AAC5B,aAAA,CAAC;AACF,YAAA,IACE,kBAAkB;AAClB,gBAAA,kBAAkB,CAAC,KAAK;AACxB,iBAAC,kBAAkB,CAAC,KAAK,CAAC,QAAQ,KAAK,MAAM;AAC3C,oBAAA,kBAAkB,CAAC,KAAK,CAAC,CAAC,CAAC,EAC7B;AACA,gBAAA,YAAY,CAAC,IAAI,CAAC,kBAAkB,CAAC;YACvC;AACA,YAAA,CAAC,EAAE;QACL;IACF;SAAO;QACL,IAAI,IAAI,EAAE;AACR,YAAA,IAAI,OAAO,IAAI,KAAK,UAAU,EAAE;gBAC9B,UAAU,GAAG,IAAI;YACnB;AAAO,iBAAA,IAAI,eAAe,CAAC,IAAI,CAAC,EAAE;AAChC,gBAAA,UAAU,GAAG,CAAC,CAAC,KAAK,eAAe,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,UAAU,CAAC;YAC1D;QACF;QACA,IAAI,CAAC,GAAG,CAAC;AACT,QAAA,KAAK,MAAM,CAAC,IAAI,IAAI,EAAE;AACpB,YAAA,MAAM,SAAS,GAAG,UAAU,CAAC,CAAC,CAAC;AAE/B,YAAA,IAAI,SAAS,IAAI,cAAc,IAAI,cAAc,CAAC,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE;AAChE,gBAAA,MAAM,UAAU,GAAG;AACjB,oBAAA,SAAS,EAAE,aAAa;oBACxB,EAAE,EAAE,CAAC,CAAC,CAAC;oBACP,EAAE,EAAE,CAAC,CAAC,CAAC;oBACP,CAAC;oBACD,CAAC;oBACD,SAAS,EAAE,EAAE,QAAQ,EAAE,MAAM,EAAE,CAAC,EAAE,SAAS,EAAE;oBAC7C,OAAO;AACP,oBAAA,QAAQ,EAAE,UAAU;oBACpB;iBACD;AACD,gBAAA,aAAa,CAAC,IAAI,CAAC,UAAU,CAAC;YAChC;iBAAO,IAAI,SAAS,EAAE;AACpB,gBAAA,YAAY,CAAC,IAAI,CACf5C,gBAAA,CAAA,aAAA,CAAA,MAAA,EAAA,EAAM,GAAG,EAAE,WAAW,GAAG,WAAW,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,CAAA,KAAA,EAAQ,CAAC,CAAA,CAAE,EAEtD,SAAS,EAAE,CAAA,EAAG,OAAO,CAAC,CAAC,CAAC,CAAA,KAAA,CAAO,EAC/B,CAAC,EAAE,SAAS,EACZ,KAAK,EAAE,OAAO,CAAC,CAAC,EAAE,CAAC,CAAC,EACpB,QAAQ,EAAE,EAAE,EACZ,IAAI,EAAC,KAAK,EAAA,YAAA,EACE,CAAA,gBAAA,EAAmB,CAAC,CAAC,MAAM,CAAC,EAAE,CAAA,IAAA,EAAO,CAAC,CAAC,MAAM,CAAC,EAAE,CAAA,CAAE,EAAA,CAC9D,CACH;YACH;QACF;IACF;AAEA,IAAA,OAAO,YAAY;AACrB,CAAC;;AC9NM,MAAM,UAAU,GAAG,EAAE;AAErB,MAAM,aAAa,GAAG;AAC3B,IAAA,EAAE,EAAE,SAAS;AACb,IAAA,MAAM,EAAE,CAAC;AACT,IAAA,QAAQ,EAAE,CAAC;AACX,IAAA,SAAS,EAAE,CAAC;AACZ,IAAA,CAAC,EAAE,CAAC;AACJ,IAAA,CAAC,EAAE,CAAC;AACJ,IAAA,EAAE,EAAE,CAAC;AACL,IAAA,EAAE,EAAE,CAAC;AACL,IAAA,EAAE,EAAE,CAAC;AACL,IAAA,EAAE,EAAE,CAAC;AACL,IAAA,MAAM,EAAE,CAAC;AACT,IAAA,KAAK,EAAE,CAAC;AACR,IAAA,MAAM,EAAE,CAAC;AACT,IAAA,CAAC,EAAE,CAAC;AACJ,IAAA,SAAS,EAAE,SAAS;AACpB,IAAA,UAAU,EAAE,CAAC;AACb,IAAA,SAAS,EAAE,CAAC;AACZ,IAAA,QAAQ,EAAE,CAAC;AACX,IAAA,KAAK,EAAE,CAAC;AACR,IAAA,QAAQ,EAAE,CAAC;IACX,SAAS,EAAE,GAAG;AACd,IAAA,SAAS,EAAE;CACZ;AAEM,MAAM,mBAAmB,GAAG;AACjC,IAAA,mBAAmB,EAAE;CACtB;AAEM,MAAM,iBAAiB,GAAG;IAC/B,QAAQ,EAAE,IAAI,GAAG,EAAE;IACnB,QAAQ,EAAE,IAAI,GAAG,EAAE;AACnB,IAAA,KAAK,EAAE,EAAE;AACT,IAAA,KAAK,EAAE,EAAE;AACT,IAAA,mBAAmB,EAAE,KAAK;AAC1B,IAAA,IAAI,EAAE;CACP;;AC7BM,MAAM,oBAAoB,GAAG;AAClC,IAAA,UAAU,EAAE6C,gBAAI;UAChBA,gBAAI;AACJ,IAAA,UAAU,EAAEC,gBAAI;aAChBC,mBAAO;aACPC,mBAAO;eACPC;CACD;;ACEK,SAAU,iBAAiB,CAAC,kBAAkB,EAAE,eAAe,EAAE,IAAI,EAAE,KAAK,EAAA;AAChF,IAAA,IAAI,kBAAkB;AAAE,QAAA,OAAO,kBAAkB;AAEjD,IAAA,MAAM,MAAM,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;AAEzC,IAAA,QAAQ,eAAe,CAAC,IAAI;AAC1B,QAAA,KAAK,QAAQ;AACX,YAAA,OAAO,mBAAmB;AAC5B,QAAA,KAAK,WAAW;AACd,YAAA,OAAO,eAAe,CAAC,UAAU,KAAK;kBAClC,uBAAuB,CAAC,IAAI,EAAE,MAAM,EAAE,eAAe;kBACrD,6BAA6B;AACnC,QAAA,KAAK,SAAS;AACZ,YAAA,OAAO,eAAe,CAAC,UAAU,KAAK;kBAClC,uBAAuB,CAAC,IAAI,EAAE,MAAM,EAAE,eAAe;kBACrD,6BAA6B;AACnC,QAAA,KAAK,YAAY;AACf,YAAA,OAAO,mBAAmB;AAC5B,QAAA,KAAK,OAAO;AACV,YAAA,OAAO,kBAAkB,CAAC,IAAI,CAAC;AACjC,QAAA,KAAK,OAAO;AACV,YAAA,OAAO,6BAA6B;AACtC,QAAA,KAAK,QAAQ;AACX,YAAA,OAAO,mBAAmB,CAAC,IAAI,EAAE,KAAK,CAAC;;AAG3C,IAAA,OAAO,mBAAmB;AAC5B;AAEM,SAAU,iBAAiB,CAAC,EAChC,kBAAkB,EAClB,eAAe,EACf,IAAI,EACJ,KAAK,EACL,KAAK,EACN,EAAA;AACC,IAAA,IAAI,kBAAkB;AAAE,QAAA,OAAO,kBAAkB;AACjD,IAAA,QAAQ,eAAe,CAAC,IAAI;AAC1B,QAAA,KAAK,WAAW;AACd,YAAA,OAAO,MAAM,IAAI;AACnB,QAAA,KAAK,SAAS;AACZ,YAAA,OAAO,MAAM,IAAI;AACnB,QAAA,KAAK,YAAY;AACf,YAAA,OAAO,MAAM,IAAI;AACnB,QAAA,KAAK,OAAO;AACV,YAAA,OAAO,kBAAkB,CAAC,IAAI,CAAC;AACjC,QAAA,KAAK,QAAQ;AACX,YAAA,OAAO,mBAAmB,CAAC,IAAI,EAAE,KAAK,CAAC;AACzC,QAAA,KAAK,KAAK;AACR,YAAA,OAAO,gBAAgB,CAAC,IAAI,CAAC;AAC/B,QAAA,KAAK,OAAO;AACV,YAAA,IAAI,KAAK;gBAAE,OAAO,kBAAkB,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC,OAAO,CAAC;AAC7D,QAAA,KAAK,QAAQ;AACX,YAAA,OAAO,oBAAoB;;AAE/B,IAAA,OAAO,SAAS;AAClB;AAEO,MAAM,WAAW,GAAG,CAAC,CAAC,MAAM;AACjC,IAAA,IAAI,EAAE,CAAC;AACP,IAAA,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC;AAChC,IAAA,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,CAAC,IAAI;AAChC,CAAA,CAAC;AAEK,MAAM,aAAa,GAAG;AAC3B,IAAA,MAAM,EAAE,CAAC,CAAC,MAAM;AACd,QAAA,IAAI,EAAE,CAAC;AACP,QAAA,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,EAAE,GAAG,CAAC,CAAC,MAAM,CAAC,EAAE,IAAI,CAAC;QAClC,CAAC,EAAE,CAAC,CAAC;AACH,cAAE,CAAC,CAAC,gBAAgB,CAAC;cACnB,CAAC,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,IAAI;KAC/C,CAAC;AACF,IAAA,KAAK,EAAE,WAAW;AAClB,IAAA,IAAI,EAAE,WAAW;AACjB,IAAA,OAAO,EAAE,WAAW;AACpB,IAAA,MAAM,EAAE,CAAC,CAAC,KAAI;QACZ,OAAO;AACL,YAAA,IAAI,EAAE,CAAC;AACP,YAAA,CAAC,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC;AACb,YAAA,CAAC,EAAE,CAAC,CAAC,MAAM,CAAC;SACb;IACH;CACD;AAEM,MAAM,uBAAuB,GAAG;AACrC,IAAA,SAAS,EAAE,IAAI;AACf,IAAA,OAAO,EAAE,IAAI;AACb,IAAA,IAAI,EAAE,IAAI;AACV,IAAA,UAAU,EAAE;CACb;AAEM,MAAM,iBAAiB,GAAG;AAC/B,IAAA,SAAS,EAAE,IAAI;AACf,IAAA,OAAO,EAAE,IAAI;AACb,IAAA,IAAI,EAAE,IAAI;AACV,IAAA,UAAU,EAAE;CACb;;SChHe,mBAAmB,CAAC,UAAU,EAAE,IAAI,EAAE,cAAc,EAAA;AAClE,IAAA,IAAI,IAAI,CAAC,MAAM,EAAE;QACf,cAAc,GAAG,GAAG,cAAc,CAAA,CAAA,EAAI,mBAAmB,CACvD,UAAU,kCACL,IAAI,CAAC,MAAM,CAAA,EAAK,IAAI,CAAC,MAAM,CAAC,IAAI,CAAA,EACrC,cAAc,CACf,CAAA,CAAE;IACL;AACA,IAAA,OAAO,CAAA,EAAG,cAAc,CAAA,CAAA,EAAI,UAAU,CAAA,MAAA,CAAA,MAAA,CAAA,MAAA,CAAA,MAAA,CAAA,EAAA,EAAM,IAAI,CAAA,EAAK,IAAI,CAAC,IAAI,CAAA,CAAG,CAAA,CAAE;AACrE;AAEO,MAAM,6BAA6B,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,eAAe;AAEtE,MAAM,uBAAuB,GAAG,CACrC,YAAY,EACZ,UAAU,GAAG,6BAA6B,KACxC;;IACF,MAAM,KAAK,GAAG,EAAE;IAChB,MAAM,KAAK,GAAG,EAAE;AAEhB,IAAA,MAAM,QAAQ,GAAG,YAAY,CAAC;AAC5B,UAAE;AACF,UAAEC,qBAAS,CAAC,YAAY,CAAC;AAE3B,IAAA,MAAM,WAAW,GAAG,QAAQ,CAAC,WAAW,EAAE;IAE1C,IAAI,CAAC,GAAG,CAAC;AAET,IAAA,KAAK,MAAM,IAAI,IAAI,WAAW,EAAE;AAC9B,QAAA,IAAI,CAAC,eAAe,GAAG,CAAC;AACxB,QAAA,CAAC,EAAE;IACL;AAEA,IAAA,KAAK,MAAM,IAAI,IAAI,WAAW,EAAE;QAC9B,MAAM,WAAW,GAAG,CAAA,EAClB,CAAA,EAAA,GAAA,UAAU,CAAA,MAAA,CAAA,MAAA,CAAA,MAAA,CAAA,MAAA,CAAA,EAAA,EACL,IAAI,GACJ,IAAI,CAAC,IAAI,CAAA,CACZ,MAAA,IAAA,IAAA,EAAA,KAAA,MAAA,GAAA,EAAA,GAAI,6BAA6B,CAAC,IAAI,CAC1C,CAAA,CAAA,EACE,IAAI,CAAC;cACD,MAAA,mBAAmB,CACjB,UAAU,EAAA,MAAA,CAAA,MAAA,CAAA,MAAA,CAAA,MAAA,CAAA,EAAA,EACL,IAAI,CAAC,MAAM,CAAA,EAAK,IAAI,CAAC,MAAM,CAAC,IAAI,CAAA,EACrC,EAAE,CACH,mCAAI,IAAI,CAAC,MAAM,CAAC;cACjB,MACN,CAAA,CAAE;AAEF,QAAA,MAAM,KAAK,GAAG,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,IAAI,CAAC,IAAI,IAAI,EAAE,EAAE;AACjD,YAAA,cAAc,EAAE;AACjB,SAAA,CAAC;AACF,QAAA,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC;AACjB,QAAA,IAAI,IAAI,CAAC,MAAM,KAAK,IAAI,EAAE;AACxB,YAAA,MAAM,UAAU,GAAG,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,MAAM,CAAC,IAAI,IAAI,EAAE,CAAC;YACrE,KAAK,CAAC,IAAI,CAAC;AACT,gBAAA,MAAM,EAAE,UAAU;AAClB,gBAAA,MAAM,EAAE,KAAK;gBACb,KAAK,EAAE,IAAI,CAAC,KAAK;AACjB,gBAAA,MAAM,EAAE,CAAC;AACT,gBAAA,KAAK,EAAE,CAAC;AACR,gBAAA,WAAW,EAAE;AACd,aAAA,CAAC;QACJ;IACF;AAEA,IAAA,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE;AACzB,CAAC;;AC3BM,MAAM,qBAAqB,GAAG,CACnC,YAA+B,EAC/B,SAA4B,EAC5B,KAA2B,EAC3B,SAA4B,KAC1B;AACF,IAAA,MAAM,EACJ,KAAK,EACL,KAAK,GAAG,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,OAAO,KAAK,KAAK;AAC/C,UAAE;AACF,UAAE,CAAC,KAAK,IAAI,KAAK,CAAC,KAAK,KAAK,UAAU,EACxC,KAAK,GAAG,OAAO,KAAK,KAAK;AACvB,UAAE;AACF,UAAE,KAAK,CAAC,OAAO,CAAC,KAAK;AACrB,cAAE;cACA,CAAC,KAAK,IAAI,KAAK,CAAC,KAAK,KAAK,UAAU,EACxC,WAAW,EACX,IAAI,EACJ,SAAS,EACT,SAAS,EACT,WAAW,EACX,SAAS,EACT,SAAS,EACT,WAAW,EACX,cAAc,EACd,cAAc,EACd,UAAU,EACV,KAAK,EAAE,SAAS,EAChB,MAAM,EAAE,UAAU,EAClB,eAAe,EACf,cAAc,EAAE,kBAAkB,EAClC,cAAc,EAAE,kBAAkB,EAClC,mBAAmB,EACpB,GAAG,YAAY;AAEhB,IAAA,IAAI,EAAE,QAAQ,EAAE,GAAG,YAAY;AAE/B,IAAA,IAAI,eAAoC;IAExC,MAAM,sBAAsB,GAAG,EAAE;AACjC,IAAA,IAAI,mBAAmB,GAAG,CAAC,MAAM,CAAC;AAElC,IAAA,IAAI,OAAO,WAAW,KAAK,QAAQ,EAAE;QACnC,eAAe,GAAA,MAAA,CAAA,MAAA,CAAA,MAAA,CAAA,MAAA,CAAA,EACb,IAAI,EAAE,WAAW,EAAA,EACd,mBAAmB,CAAA,EAAA,EACtB,aAAa,EAAE,iBAAiB,EAAA,CACjC;IACH;SAAO;AACL,QAAA,IAAI,WAAW;AAAE,YAAA,mBAAmB,GAAG,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC;AAE/D,QAAA,eAAe,GAAA,MAAA,CAAA,MAAA,CAAA,MAAA,CAAA,MAAA,CAAA,MAAA,CAAA,MAAA,CAAA,EACb,IAAI,EAAE,OAAO,EAAA,EACV,mBAAmB,CAAA,EACnB,WAAW,CAAA,EAAA,EACd,aAAa,EAAE,iBAAiB,GACjC;IACH;AAEA,IAAA,IACE,eAAe,CAAC,UAAU,KAAK,UAAU;AACzC,QAAA,eAAe,CAAC,IAAI,KAAK,QAAQ,EACjC;AACA,QAAA,eAAe,CAAC,SAAS,GAAG,MAAM;IACpC;AAEA,IAAA,mBAAmB,CAAC,IAAI,CAAC,QAAQ,EAAE,OAAO,CAAC;AAE3C,IAAA,MAAM,KAAK,GACT,OAAO,SAAS,KAAK,QAAQ;AAC7B,QAAA,CAAClD,gBAAK,CAAC,cAAc,CAAC,SAAS,CAAC;AAChC,QAAA,SAAS,KAAK;AACZ,UAAG;UACA,EAAE,KAAK,EAAE,SAAS,EAAE,MAAM,EAAE,KAAK,EAAgB;AAExD,IAAA,MAAM,EAAE,MAAM,EAAE,gBAAgB,EAAE,YAAY,EAAE,GAAG,KAAK,CAAC,UAAU,CAAC,UAAU,EAAE,KAAK,EAAE,IAAI,CAAC;AAE5F,IAAA,eAAe,CAAC,aAAa,CAAC,KAAK,GAAG,KAAK;AAC3C,IAAA,eAAe,CAAC,aAAa,CAAC,KAAK,GAAG,KAAK;AAC3C,IAAA,eAAe,CAAC,aAAa,CAAC,mBAAmB,GAAG,mBAAmB;IAEvE,IAAI,EAAE,QAAQ,EAAE,QAAQ,EAAE,GAAG,eAAe,CAAC,aAAa;AAE1D,IAAA,MAAM,gBAAgB,GACpB,eAAe,CAAC,IAAI,KAAK,SAAS;QAClC,eAAe,CAAC,IAAI,KAAK,WAAW;AACpC,QAAA,eAAe,CAAC,IAAI,KAAK,QAAQ;IAEnC,MAAM,eAAe,GAAG,KAAK,CAAC,mBAAmB,CAC/C,YAAY,CAAC,cAAc,EAC3B,YAAY,CAAC,cAAc,EAC3B,YAAY,CAAC,cAAc,EAC3B,YAAY,CAAC,gBAAgB,EAC7B,YAAY,CAAC,iBAAiB,CAC/B;AAED,IAAA,MAAM,cAAc,GAAG,eAAe,CAAC,cAAc;AACrD,IAAA,MAAM,cAAc,GAAG,eAAe,CAAC,cAAc;AACrD,IAAA,MAAM,cAAc,GAAG,eAAe,CAAC,cAAc;AACrD,IAAA,MAAM,gBAAgB,GAA2C,eAAe,CAAC,gBAA0D;AAC3I,IAAA,MAAM,iBAAiB,GAAG,eAAe,CAAC,iBAAiB;IAC3D,MAAM,EAAE,WAAW,EAAE,WAAW,EAAE,gBAAgB,EAAE,kBAAkB,EAAE,GAAG,KAAK,CAAC,YAAY,CAC3F,SAAS,EAAE,SAAS,EAAE,cAAc,EAAE,WAAW,CAClD;AAED,IAAA,IAAI,EAAE,cAAc,EAAE,cAAc,EAAE,GAAG,SAAS;AAElD,IAAA,MAAM,cAAc,GAClB,OAAO,eAAe,CAAC,IAAI,KAAK,QAAQ;AACxC,QAAA,oBAAoB,CAAC,eAAe,CAAC,IAAI,CAAC;AAE5C,IAAA,MAAM,WAAW,GACf,CAAC,SAAS,CAAC,cAAc;QACzB,CAAC,SAAS,CAAC,cAAc;AACzB,QAAA,SAAS,CAAC,aAAa,CAAC,KAAK,KAAK,KAAK;AACvC,QAAA,SAAS,CAAC,aAAa,CAAC,KAAK,KAAK,KAAK;QACvC,cAAc;AACd,QAAA,SAAS,CAAC,aAAa,CAAC,mBAAmB,KAAK,mBAAmB;AAErE,IAAA,IAAI,eAAe,CAAC,IAAI,KAAK,OAAO,EAAE;QACpC,MAAM,UAAU,GAAG,KAKlB;AACD,QAAA,MAAM,YAAY,GAAG,IAAI,GAAG,EAAE;QAC9B,cAAc,GAAG,UAAU,CAAC,KAAK,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,KAAI;YAC5C,MAAM,QAAQ,GAAG,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC;AACnC,YAAA,MAAM,SAAS,GAAA,MAAA,CAAA,MAAA,CAAA,MAAA,CAAA,MAAA,CAAA,EAAA,EACV,QAAQ,CAAA,EAAA,EACX,EAAE,EAAE,QAAQ,CAAC,CAAC,GAAG,QAAQ,CAAC,KAAK,GAAG,CAAC,EACnC,EAAE,EAAE,QAAQ,CAAC,CAAC,GAAG,QAAQ,CAAC,KAAK,GAAG,CAAC,EACnC,EAAE,EAAE,QAAQ,CAAC,CAAC,GAAG,QAAQ,CAAC,MAAM,GAAG,CAAC,EACpC,EAAE,EAAE,QAAQ,CAAC,CAAC,GAAG,QAAQ,CAAC,MAAM,GAAG,CAAC,EACpC,EAAE,EAAE,CAAC,EACL,SAAS,EAAE,IAAI,EACf,WAAW,EAAE,EAAE,EACf,WAAW,EAAE,EAAE,GAChB;AACD,YAAA,YAAY,CAAC,GAAG,CAAC,CAAC,EAAE,SAAS,CAAC;AAC9B,YAAA,OAAO,SAAS;AAClB,QAAA,CAAC,CAAC;QACF,cAAc,GAAG,UAAU,CAAC,KAAK,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,KAAI;YAC5C,MAAM,SAAS,GAAG,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC;YACpC,MAAM,QAAQ,mCACT,SAAS,CAAA,EAAA,EACZ,MAAM,EAAE,SAAS,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,wBAAW,CAAC,CAAA,CAAG,CAAC,EAAA,CAChD;YACD,QAAQ,CAAC,MAAM,GAAG,cAAc,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC;YAC1D,QAAQ,CAAC,MAAM,GAAG,cAAc,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC;YAC1D,QAAQ,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE,CAAC,EAAE,QAAQ,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE,QAAQ,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC;YACvE,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,QAAQ,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE,QAAQ,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC;AACpE,YAAA,YAAY,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,IAAI,CAAC,QAAQ,CAAC;AAChD,YAAA,YAAY,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,IAAI,CAAC,QAAQ,CAAC;AAChD,YAAA,OAAO,QAAQ;AACjB,QAAA,CAAC,CAAC;IACJ;SAAO,IAAI,WAAW,EAAE;QACtB,MAAM,aAAa,GAAG,cAAc;AACpC,QAAA,QAAQ,GAAG,IAAI,GAAG,EAAE;AACpB,QAAA,QAAQ,GAAG,IAAI,GAAG,EAAE;AACpB,QAAA,eAAe,CAAC,aAAa,CAAC,QAAQ,GAAG,QAAQ;AACjD,QAAA,eAAe,CAAC,aAAa,CAAC,QAAQ,GAAG,QAAQ;QACjD,cAAc,GAAG,EAAE;QACnB,cAAc,GAAG,EAAE;AACnB,QAAA,MAAM,WAAW,GACf,OAAO,eAAe,CAAC,gBAAgB,KAAK;cACxC,eAAe,CAAC;cAChB,eAAe,CAAC;AAClB,kBAAE,MAAM;kBACN,KAAK;AACX,QAAA,KAAK,CAAC,OAAO,CAAC,CAAC,IAAI,KAAI;AACrB,YAAA,MAAM,aAAa,GAAA,MAAA,CAAA,MAAA,CAAA,EAAA,EAAQ,IAAI,CAAE;AACjC,YAAA,MAAM,EAAE,GAAG,cAAc,CAAC,aAAa,CAAC;AACxC,YAAA,MAAM,YAAY,GAAG,aAAa,CAAC,IAAI,CAAC,CAAC,QAAQ,KAAK,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC;AAEzE,YAAA,MAAM,iBAAiB,GAAG,YAAY,IAAI,EAAE,CAAC,EAAE,SAAS,EAAE,CAAC,EAAE,SAAS,EAAE;AACxE,YAAA,QAAQ,CAAC,GAAG,CAAC,EAAE,EAAE,aAAa,CAAC;AAC/B,YAAA,QAAQ,CAAC,GAAG,CAAC,IAAI,EAAE,aAAa,CAAC;AACjC,YAAA,cAAc,CAAC,IAAI,CAAC,aAAa,CAAC;AAClC,YAAA,aAAa,CAAC,EAAE,GAAG,EAAE;AACrB,YAAA,aAAa,CAAC,QAAQ,GAAG,CAAC;AAC1B,YAAA,aAAa,CAAC,SAAS,GAAG,CAAC;AAC3B,YAAA,aAAa,CAAC,MAAM,GAAG,CAAC;AACxB,YAAA,aAAa,CAAC,CAAC,GAAG,iBAAiB,CAAC,CAAC;AACrC,YAAA,aAAa,CAAC,CAAC,GAAG,iBAAiB,CAAC,CAAC;YACrC,IAAI,YAAY,IAAI,WAAW,IAAI,WAAW,CAAC,YAAY,CAAC,EAAE;AAC5D,gBAAA,aAAa,CAAC,EAAE,GAAG,YAAY,CAAC,CAAC;AACjC,gBAAA,aAAa,CAAC,EAAE,GAAG,YAAY,CAAC,CAAC;YACnC;AACF,QAAA,CAAC,CAAC;QAEF,IAAI,gBAAgB,GAAG,KAAK;QAC5B,IAAI,SAAS,GAAG,KAAK;QAErB,IAAI,cAAc,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE;AAC1C,YAAA,MAAM,uBAAuB,GAAG,SAAS,CACvC,KAAK,EACL,KAAK,EACL,cAAc,EACd,cAAc,EACd,cAAc,CACf;AAED,YAAA,IAAI,uBAAuB,CAAC,cAAc,EAAE;AAC1C,gBAAA,SAAS,GAAG,uBAAuB,CAAC,SAAS;gBAC7C,cAAc,GAAG,EAAE;YACrB;iBAAO;AACL,gBAAA,OAAO,CAAC,KAAK,CACX,gJAAgJ,CACjJ;AACD,gBAAA,eAAe,CAAC,IAAI,GAAG,OAAO;YAChC;QACF;QAEA,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,SAAS,CAAC,EAAE;AAC7B,YAAA,eAAe,CAAC,mBAAmB,GAAG,IAAI;YAC1C,MAAM,QAAQ,GAAGkD,qBAAS,CAAC,SAAS,EAAE,eAAe,CAAC,iBAAiB,CAAC;AAExE,YAAA,QAAQ,CAAC,GAAG,CAAC,eAAe,CAAC,YAAY,KAAK,CAAC,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,CAAC;YAE9D,IAAI,cAAc,EAAE;AAClB,gBAAA,MAAM,MAAM,GAAG,eAAe,CAAC,MAAM,IAAI,cAAc;AACvD,gBAAA,MAAM,kBAAkB,GAAG,MAAM,EAAE;gBACnC,MAAM,kBAAkB,GAAG,MAAM,CAAC,IAAI,CAAC,eAAe,CAAC;AACvD,gBAAA,IACE,CAAC,eAAe,CAAC,IAAI,KAAK,YAAY;oBACpC,eAAe,CAAC,IAAI,KAAK,MAAM;AAC/B,oBAAA,eAAe,CAAC,IAAI,KAAK,SAAS;oBACpC,kBAAkB,CAAC,UAAU,EAC7B;oBACA,kBAAkB,CAAC,UAAU,CAC3B,CAAC,CAAC,EAAE,CAAC,KACH,CAAC,gBAAgB,CAAA,MAAA,CAAA,MAAA,CAAA,MAAA,CAAA,MAAA,CAAA,EAAA,EAAM,CAAC,CAAA,EAAK,CAAC,CAAC,IAAI,CAAA,CAAG,IAAI,CAAC;AAC3C,yBAAC,eAAe,CAAC,WAAW,IAAI,CAAC,CAAC;AAClC,yBAAC,gBAAgB,CAAA,MAAA,CAAA,MAAA,CAAA,MAAA,CAAA,MAAA,CAAA,EAAA,EAAM,CAAC,CAAA,EAAK,CAAC,CAAC,IAAI,CAAA,CAAG,IAAI,CAAC,CAAC,CAC/C;gBACH;AAEA,gBAAA,kBAAkB,CAAC,OAAO,CAAC,CAAC,GAAG,KAAI;AACjC,oBAAA,IAAI,kBAAkB,CAAC,GAAG,CAAC,EAAE;wBAC3B,kBAAkB,CAAC,GAAG,CAAC,CAAC,eAAe,CAAC,GAAG,CAAC,CAAC;oBAC/C;AACF,gBAAA,CAAC,CAAC;gBACF,MAAM,UAAU,GACd,eAAe,CAAC,UAAU,KAAK,YAAY,IAAI;sBAC3C,CAAC,YAAY,CAAC,CAAC,CAAC,EAAE,YAAY,CAAC,CAAC,CAAC;sBACjC,YAAY;gBAClB,IAAI,CAAC,eAAe,CAAC,QAAQ,IAAI,kBAAkB,CAAC,IAAI,EAAE;AACxD,oBAAA,kBAAkB,CAAC,IAAI,CAAC,UAAU,CAAC;gBACrC;gBAEA,kBAAkB,CAAC,QAAQ,CAAC;YAC9B;YAEA,gBAAgB,GAAG,uBAAuB,CAAC,QAAQ,EAAE,cAAc,CAAC,CAAC,KAAK;QAC5E;AAEA,QAAA,aAAa,CAAC,SAAS,GAAG,gBAAgB;AAC1C,QAAA,IAAI,KAAK,CAAC,OAAO,CAAC,gBAAgB,CAAC,EAAE;AACnC,YAAA,gBAAgB,CAAC,OAAO,CAAC,CAAC,IAAI,KAAI;AAChC,gBAAA,MAAM,MAAM,GAAG,cAAc,CAAC,IAAI,CAAC;AACnC,gBAAA,MAAM,MAAM,GAAG,cAAc,CAAC,IAAI,CAAC;AACnC,gBAAA,MAAM,YAAY,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC;AACrC,gBAAA,YAAY,CAAC,OAAO,CAAC,CAAC,aAAa,KAAI;oBACrC,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,aAAa,CAAC,EAAE;AAChC,wBAAA,MAAM,UAAU,GACd,OAAO,aAAa,KAAK;AACvB,8DACO,aAAa,CAAA,EACb,aAAa,CAAA,GAEnB,MAAA,CAAA,MAAA,CAAA,MAAA,CAAA,MAAA,CAAA,EAAA,EACM,aAAa,CAAA,EAAA,EAChB,EAAE,EAAE,aAAa,EACjB,cAAc,EAAE,IAAI,GACrB;wBAEP,MAAM,WAAW,GAAG,UAAU,CAAC,EAAE,IAAI,cAAc,CAAC,UAAU,CAAC;wBAC/D,sBAAsB,CAAC,WAAW;+BAC7B,sBAAsB,CAAC,WAAW,CAAC,IAAI,CAAC;+BACxC,sBAAsB,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC;AAE7C,wBAAA,IAAI,CAAC,UAAU,CAAC,EAAE,EAAE;AAClB,4BAAA,MAAM,UAAU,GACd,sBAAsB,CAAC,WAAW,CAAC,KAAK;AACtC,kCAAE;AACF,kCAAE,CAAA,CAAA,EAAI,sBAAsB,CAAC,WAAW,CAAC,EAAE;4BAC/C,UAAU,CAAC,EAAE,GAAG,CAAA,EAAG,WAAW,CAAA,EAAG,UAAU,EAAE;wBAC/C;AAEA,wBAAA,QAAQ,CAAC,GAAG,CAAC,aAAa,EAAE,UAAU,CAAC;AAEvC,wBAAA,cAAc,CAAC,IAAI,CAAC,UAAU,CAAC;oBACjC;AACF,gBAAA,CAAC,CAAC;AAEF,gBAAA,MAAM,UAAU,GAAG,IAAI,CAAC,MAAM,IAAI,CAAC;gBAEnC,MAAM,UAAU,GAAG,QAAQ,CAAC,GAAG,CAAC,MAAM,CAAC;gBACvC,MAAM,UAAU,GAAG,QAAQ,CAAC,GAAG,CAAC,MAAM,CAAC;AAEvC,gBAAA,UAAU,CAAC,QAAQ,IAAI,UAAU;AACjC,gBAAA,UAAU,CAAC,SAAS,IAAI,UAAU;AAClC,gBAAA,UAAU,CAAC,MAAM,IAAI,UAAU;AAC/B,gBAAA,UAAU,CAAC,MAAM,IAAI,UAAU;AAE/B,gBAAA,MAAM,OAAO,GAAG,CAAA,EAAG,cAAc,CAAC,UAAU,CAAC,IAAI,MAAM,CAAA,CAAA,EACrD,cAAc,CAAC,UAAU,CAAC,IAAI,MAChC,EAAE;gBACF,MAAM,OAAO,GAAG,MAAM,CAAC,MAAM,CAAC,EAAE,EAAE,IAAI,EAAE;AACtC,oBAAA,MAAM,EAAE,QAAQ,CAAC,GAAG,CAAC,MAAM,CAAC;AAC5B,oBAAA,MAAM,EAAE,QAAQ,CAAC,GAAG,CAAC,MAAM;AAC5B,iBAAA,CAAC;AACF,gBAAA,QAAQ,CAAC,GAAG,CAAC,OAAO,EAAE,OAAO,CAAC;AAC9B,gBAAA,cAAc,CAAC,IAAI,CAAC,OAAO,CAAC;AAC5B,gBAAA,IAAI,eAAe,CAAC,IAAI,KAAK,QAAQ,EAAE;AACrC,oBAAA,cAAc,CAAC,IAAI,CAAA,MAAA,CAAA,MAAA,CAAA,MAAA,CAAA,MAAA,CAAA,EAAA,EACd,OAAO,CAAA,EAAA,EACV,MAAM,EAAE,OAAO,CAAC,MAAM,EACtB,MAAM,EAAE,OAAO,CAAC,MAAM,IACtB;gBACJ;AACF,YAAA,CAAC,CAAC;QACJ;IACF;SAAO;AACL,QAAA,QAAQ,GAAG,IAAI,GAAG,EAAE;AACpB,QAAA,eAAe,CAAC,aAAa,CAAC,QAAQ,GAAG,QAAQ;AACjD,QAAA,cAAc,CAAC,OAAO,CAAC,CAAC,IAAI,KAAI;AAC9B,YAAA,MAAM,UAAU,GACd,OAAO,IAAI,CAAC,MAAM,KAAK;kBACnB,IAAI,CAAC;AACP,kBAAE,cAAc,CAAC,IAAI,CAAC,MAAM,CAAC;AACjC,YAAA,MAAM,UAAU,GACd,OAAO,IAAI,CAAC,MAAM,KAAK;kBACnB,IAAI,CAAC;AACP,kBAAE,cAAc,CAAC,IAAI,CAAC,MAAM,CAAC;AAEjC,YAAA,MAAM,OAAO,GAAG,CAAA,EAAG,UAAU,CAAA,CAAA,EAAI,UAAU,EAAE;AAC7C,YAAA,QAAQ,CAAC,GAAG,CAAC,OAAO,EAAE,IAAI,CAAC;AAC7B,QAAA,CAAC,CAAC;IACJ;AAEA,IAAA,MAAM,cAAc,GAAG,iBAAiB,CACtC,kBAAkB,EAClB,eAAe,EACf,YAAY,EACZ,cAAc,CACf;IAED,MAAM,cAAc,GAAG,iBAAiB,CAAC;QACvC,kBAAkB;QAClB,eAAe;AACf,QAAA,IAAI,EAAE,YAAY;AAClB,QAAA,KAAK,EAAE,cAAc;QACrB;AACD,KAAA,CAAC;AAEF,IAAA,eAAe,CAAC,KAAK,GAAG,IAAI,CAAC,CAAC,CAAC;AAC/B,IAAA,eAAe,CAAC,MAAM,GAAG,IAAI,CAAC,CAAC,CAAC;IAEhC,IAAI,sBAAsB,GAAG,KAAK;AAElC,IAAA,mBAAmB,CAAC,OAAO,CAAC,CAAC,GAAG,KAAI;QAClC,IACE,GAAG,KAAK,UAAU;AAClB,YAAA,GAAG,KAAK,eAAe;YACvB,eAAe,CAAC,GAAG,CAAC,KAAK,SAAS,CAAC,aAAa,CAAC,GAAG,CAAC,EACrD;YACA,sBAAsB,GAAG,IAAI;QAC/B;AACF,IAAA,CAAC,CAAC;;AAGF,IAAA,IAAI,eAAe,CAAC,IAAI,KAAK,QAAQ,EAAE;QACrC,QAAQ,GAAG,CAAC,CAAC,KACX,CAAC,CAAC;AACA,cAAE,gBAAgB,CAAC,CAAC;cAClB,QAAQ,KAAK;AACf,kBAAE,UAAU,CAAC,CAAC;AACd,kBAAE,QAAQ,CAAC,CAAC,CAAC;IACnB;SAAO,IAAI,cAAc,EAAE;AACzB,QAAA,cAAc,CAAC,OAAO,CAAC,CAAC,IAAI,KAAI;YAC9B,IAAI,gBAAgB,EAAE;AACpB,gBAAA,IAAI,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,IAAI,CAAC;AAChC,gBAAA,IAAI,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,IAAI,CAAC;YAClC;AACA,YAAA,IACE,OAAO,eAAe,CAAC,IAAI,KAAK,QAAQ;AACxC,gBAAA,uBAAuB,CAAC,eAAe,CAAC,IAAI,CAAC;AAC7C,gBAAA,eAAe,CAAC,UAAU,KAAK,YAAY,EAC3C;AACA,gBAAA,MAAM,EAAE,GAAG,IAAI,CAAC,CAAC;AACjB,gBAAA,IAAI,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC;AACf,gBAAA,IAAI,CAAC,CAAC,GAAG,EAAE;gBAEX,IAAI,gBAAgB,EAAE;AACpB,oBAAA,MAAM,GAAG,GAAG,IAAI,CAAC,EAAE;AACnB,oBAAA,MAAM,GAAG,GAAG,IAAI,CAAC,EAAE;AACnB,oBAAA,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE;AACjB,oBAAA,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE;AACjB,oBAAA,IAAI,CAAC,EAAE,GAAG,GAAG;AACb,oBAAA,IAAI,CAAC,EAAE,GAAG,GAAG;gBACf;YACF;AAAO,iBAAA,IACL,OAAO,eAAe,CAAC,IAAI,KAAK,QAAQ;AACxC,gBAAA,iBAAiB,CAAC,eAAe,CAAC,IAAI,CAAC;AACvC,gBAAA,eAAe,CAAC,UAAU,KAAK,QAAQ,EACvC;AACA,gBAAA,MAAM,WAAW,GACf,IAAI,CAAC,KAAK,KAAK;AACb,sBAAE,CAAC,YAAY,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,YAAY,CAAC,CAAC,CAAC,GAAG,CAAC;AAC3C,sBAAE,iBAAiB,CACf,CAAC,YAAY,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,YAAY,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAC1C,IAAI,CAAC,CAAC,GAAG,YAAY,CAAC,CAAC,CAAC,EACxB,IAAI,CAAC,CAAC,GAAG,CAAC,CACX;AACP,gBAAA,IAAI,CAAC,CAAC,GAAG,WAAW,CAAC,CAAC,CAAC;AACvB,gBAAA,IAAI,CAAC,CAAC,GAAG,WAAW,CAAC,CAAC,CAAC;YACzB;iBAAO;AACL,gBAAA,IAAI,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC;AACf,gBAAA,IAAI,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC;gBACf,IAAI,gBAAgB,EAAE;AACpB,oBAAA,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE;AACjB,oBAAA,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE;AACjB,oBAAA,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE;AACjB,oBAAA,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE;gBACnB;YACF;AACF,QAAA,CAAC,CAAC;IACJ;AAEA,IAAA,IACE,eAAe,CAAC,IAAI,KAAK,QAAQ;AACjC,SAAC,WAAW,IAAI,sBAAsB,CAAC,EACvC;QA0BO,IAAI,OAAO,eAAe,CAAC,IAAI,KAAK,UAAU,EAAE;YACrD,eAAe,CAAC,IAAI,CAAC;AACnB,gBAAA,KAAK,EAAE,cAAc;AACrB,gBAAA,KAAK,EAAE;AACR,aAAA,CAAC;QACJ;aAAO;AACL,YAAA,cAAc,CAAC,OAAO,CAAC,CAAC,IAAI,KAAI;AAC9B,gBAAA,IAAI,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,KAAK,SAAS,GAAG,CAAC,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,IAAI,CAAC,GAAG,IAAI,CAAC,CAAC;gBAChE,IAAI,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,KAAK,SAAS,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,CAAC;AAClD,YAAA,CAAC,CAAC;QACJ;QAEA,SAAS,CAAC,aAAa,CAAC,KAAK,GAAG,YAAY,CAAC,KAAK;QAClD,SAAS,CAAC,aAAa,CAAC,KAAK,GAAG,YAAY,CAAC,KAAK;IACpD;;AAGA,IAAA,cAAc,GAAG,cAAc,CAAC,MAAM,CAAC,mBAAmB,CAAC;IAE3D,cAAc,GAAG,cAAc,CAAC,MAAM,CACpC,CAAC,CAAC,KACA,cAAc,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,EAAE;QACvC,cAAc,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,EAAE,CAC1C;AAED,IAAA,IAAI,eAAe,CAAC,SAAS,KAAK,MAAM,EAAE;AACxC,QAAA,cAAc,CAAC,OAAO,CAAC,CAAC,IAAI,KAAI;;;YAG9B,IAAI,CAAC,CAAC,GAAG,YAAY,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC;YACjC,IAAI,CAAC,CAAC,GAAG,YAAY,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC;AACnC,QAAA,CAAC,CAAC;IACJ;AAAO,SAAA,IACL,eAAe,CAAC,SAAS,KAAK,IAAI;AAClC,QAAA,eAAe,CAAC,SAAS,KAAK,MAAM,EACpC;AACA,QAAA,MAAM,GAAG,GACP,eAAe,CAAC,SAAS,KAAK;cAC1B,CAAC,KAAK,KAAK,YAAY,CAAC,CAAC,CAAC,GAAG;AAC/B,cAAE,CAAC,KAAK,KAAK,KAAK;AACtB,QAAA,cAAc,CAAC,OAAO,CAAC,CAAC,IAAI,KAAI;AAC9B,YAAA,MAAM,EAAE,GAAG,IAAI,CAAC,CAAC;AACjB,YAAA,MAAM,GAAG,GAAG,IAAI,CAAC,EAAE;AACnB,YAAA,MAAM,GAAG,GAAG,IAAI,CAAC,EAAE;YACnB,IAAI,CAAC,CAAC,GAAG,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC;YACpB,IAAI,CAAC,EAAE,GAAG,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC;YACtB,IAAI,CAAC,EAAE,GAAG,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC;AACtB,YAAA,IAAI,CAAC,CAAC,GAAG,EAAE;AACX,YAAA,IAAI,CAAC,EAAE,GAAG,GAAG;AACb,YAAA,IAAI,CAAC,EAAE,GAAG,GAAG;AACf,QAAA,CAAC,CAAC;IACJ;AAAO,SAAA,IAAI,eAAe,CAAC,SAAS,KAAK,MAAM,EAAE;AAC/C,QAAA,cAAc,CAAC,OAAO,CAAC,CAAC,IAAI,KAAI;YAC9B,IAAI,CAAC,CAAC,GAAG,YAAY,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC;YACjC,IAAI,CAAC,EAAE,GAAG,YAAY,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,EAAE;YACnC,IAAI,CAAC,EAAE,GAAG,YAAY,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,EAAE;AACrC,QAAA,CAAC,CAAC;IACJ;AAEA,IAAA,IAAI,OAAO,eAAe,CAAC,IAAI,KAAK,UAAU,EAAE;QAC9C,eAAe,CAAC,IAAI,CAAC,cAAc,EAAE,cAAc,EAAE,YAAY,CAAC;IACpE;AAAO,SAAA,IACL,eAAe,CAAC,IAAI,KAAK,KAAK;QAC9B,eAAe,CAAC,IAAI,KAAK,QAAQ;QACjC,eAAe,CAAC,IAAI,KAAK,OAAO;QAChC,eAAe,CAAC,IAAI,KAAK,QAAQ;QACjC,eAAe,CAAC,IAAI,KAAK,WAAW;QACpC,eAAe,CAAC,IAAI,KAAK,SAAS;QAClC,eAAe,CAAC,IAAI,KAAK,YAAY;AACrC,QAAA,eAAe,CAAC,IAAI,KAAK,OAAO,EAChC;;QAEA,MAAM,IAAI,GAAGb,WAAG,CAAC,cAAc,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,gBAAgB,CAAC,CAAC,CAAC,CAAC,CAAC;QACtE,MAAM,IAAI,GAAGb,WAAG,CAAC,cAAc,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,gBAAgB,CAAC,CAAC,CAAC,CAAC,CAAC;QACtE,MAAM,IAAI,GAAGa,WAAG,CAAC,cAAc,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,gBAAgB,CAAC,CAAC,CAAC,CAAC,CAAC;QACtE,MAAM,IAAI,GAAGb,WAAG,CAAC,cAAc,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,gBAAgB,CAAC,CAAC,CAAC,CAAC,CAAC;QAEtE,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,GAAG,IAAI,CAAC;QACnC,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,GAAG,IAAI,CAAC;AAEnC,QAAA,MAAM,kBAAkB,GAAG,KAAK,GAAG,KAAK;QACxC,MAAM,eAAe,GAAG,YAAY,CAAC,CAAC,CAAC,GAAG,YAAY,CAAC,CAAC,CAAC;QAEzD,IAAI,IAAI,EAAE,IAAI;AAEd,QAAA,IAAI,eAAe,CAAC,IAAI,KAAK,SAAS,EAAE;YACtC,IAAI,GAAG,CAAC;YACR,IAAI,GAAG,CAAC;QACV;AAAO,aAAA,IAAI,KAAK,GAAG,KAAK,EAAE;AACxB,YAAA,IAAI,kBAAkB,GAAG,eAAe,EAAE;gBACxC,IAAI,GAAG,CAAC;gBACR,IAAI,GAAG,CAAC,YAAY,CAAC,CAAC,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC,CAAC,GAAG,KAAK,IAAI,KAAK,IAAI,CAAC;YAClE;iBAAO;gBACL,IAAI,GAAG,CAAC;gBACR,IAAI,GAAG,CAAC,YAAY,CAAC,CAAC,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC,CAAC,GAAG,KAAK,IAAI,KAAK,IAAI,CAAC;YAClE;QACF;aAAO;AACL,YAAA,IAAI,kBAAkB,GAAG,eAAe,EAAE;gBACxC,IAAI,GAAG,CAAC;gBACR,IAAI,GAAG,CAAC,YAAY,CAAC,CAAC,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC,CAAC,GAAG,KAAK,IAAI,KAAK,IAAI,CAAC;YAClE;iBAAO;gBACL,IAAI,GAAG,CAAC;gBACR,IAAI,GAAG,CAAC,YAAY,CAAC,CAAC,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC,CAAC,GAAG,KAAK,IAAI,KAAK,IAAI,CAAC;YAClE;QACF;QAEA,MAAM,gBAAgB,GAAGpB,mBAAW;AACjC,aAAA,MAAM,CAAC,CAAC,IAAI,EAAE,IAAI,CAAC;AACnB,aAAA,KAAK,CAAC,CAAC,IAAI,EAAE,YAAY,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC;QACxC,MAAM,gBAAgB,GAAGA,mBAAW;AACjC,aAAA,MAAM,CAAC,CAAC,IAAI,EAAE,IAAI,CAAC;AACnB,aAAA,KAAK,CAAC,CAAC,IAAI,EAAE,YAAY,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC;AACxC,QAAA,cAAc,CAAC,OAAO,CAAC,CAAC,IAAI,KAAI;YAC9B,IAAI,CAAC,CAAC,GAAG,gBAAgB,CAAC,IAAI,CAAC,CAAC,CAAC;YACjC,IAAI,CAAC,CAAC,GAAG,gBAAgB,CAAC,IAAI,CAAC,CAAC,CAAC;AACnC,QAAA,CAAC,CAAC;IACJ;AAAO,SAAA,IACL,eAAe,CAAC,IAAI,KAAK,KAAK;QAC9B,eAAe,CAAC,UAAU,KAAK,QAAQ;AACvC,SAAC,eAAe,CAAC,IAAI,KAAK,WAAW;YACnC,eAAe,CAAC,IAAI,KAAK,SAAS;AAClC,YAAA,eAAe,CAAC,IAAI,KAAK,OAAO,CAAC,EACnC;AACA,QAAA,MAAM,IAAI,GAAGiC,WAAG,CAAC,cAAc,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC;AACjD,QAAA,MAAM,IAAI,GAAGb,WAAG,CAAC,cAAc,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC;AACjD,QAAA,MAAM,IAAI,GAAGa,WAAG,CAAC,cAAc,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC;AACjD,QAAA,MAAM,IAAI,GAAGb,WAAG,CAAC,cAAc,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC;QAEjD,MAAM,gBAAgB,GAAGpB,mBAAW;AACjC,aAAA,MAAM,CAAC,CAAC,IAAI,EAAE,IAAI,CAAC;AACnB,aAAA,KAAK,CAAC,CAAC,MAAM,CAAC,IAAI,EAAE,YAAY,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC;QACvD,MAAM,gBAAgB,GAAGA,mBAAW;AACjC,aAAA,MAAM,CAAC,CAAC,IAAI,EAAE,IAAI,CAAC;AACnB,aAAA,KAAK,CAAC,CAAC,MAAM,CAAC,GAAG,EAAE,YAAY,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC;AACvD,QAAA,cAAc,CAAC,OAAO,CAAC,CAAC,IAAI,KAAI;YAC9B,IAAI,CAAC,CAAC,GAAG,gBAAgB,CAAC,IAAI,CAAC,CAAC,CAAC;YACjC,IAAI,CAAC,CAAC,GAAG,gBAAgB,CAAC,IAAI,CAAC,CAAC,CAAC;YACjC,IAAI,CAAC,EAAE,GAAG,gBAAgB,CAAC,IAAI,CAAC,EAAE,CAAC;YACnC,IAAI,CAAC,EAAE,GAAG,gBAAgB,CAAC,IAAI,CAAC,EAAE,CAAC;YACnC,IAAI,CAAC,EAAE,GAAG,gBAAgB,CAAC,IAAI,CAAC,EAAE,CAAC;YACnC,IAAI,CAAC,EAAE,GAAG,gBAAgB,CAAC,IAAI,CAAC,EAAE,CAAC;YACnC,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE;YACrC,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE;AACtC,QAAA,CAAC,CAAC;AAEF,QAAA,cAAc,CAAC,OAAO,CAAC,CAAC,IAAI,KAAI;AAC9B,YAAA,IAAI,IAAI,CAAC,MAAM,EAAE;gBACf,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,KAAI;oBACxB,CAAC,CAAC,CAAC,GAAG,gBAAgB,CAAC,CAAC,CAAC,CAAC,CAAC;oBAC3B,CAAC,CAAC,CAAC,GAAG,gBAAgB,CAAC,CAAC,CAAC,CAAC,CAAC;AAC7B,gBAAA,CAAC,CAAC;YACJ;AACF,QAAA,CAAC,CAAC;IACJ;AAAO,SAAA,IACL,eAAe,CAAC,IAAI,KAAK,KAAK;QAC9B,eAAe,CAAC,IAAI,KAAK,QAAQ;AACjC,QAAA,cAAc,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,QAAQ,CAAC,EACtC;AACA,QAAA,MAAM,aAAa,GAAG,cAAc,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,QAAQ,CAAC;QAC9D,MAAM,QAAQ,GACZiC,WAAG,CACD,aAAa,EACb,CAAC,CAAC,KAAK,CAAC,CAAC,gBAAgB,CAAC,eAAe,GAAG,CAAC,CAAC,WAAW,GAAG,CAAC,CAC9D,IAAI,QAAQ;QACf,MAAM,QAAQ,GACZb,WAAG,CACD,aAAa,EACb,CAAC,CAAC,KAAK,CAAC,CAAC,gBAAgB,CAAC,cAAc,GAAG,CAAC,CAAC,WAAW,GAAG,CAAC,CAC7D,IAAI,CAAC,QAAQ;QAChB,MAAM,QAAQ,GACZa,WAAG,CACD,aAAa,EACb,CAAC,CAAC,KAAK,CAAC,CAAC,gBAAgB,CAAC,kBAAkB,GAAG,CAAC,CAAC,WAAW,GAAG,CAAC,CACjE,IAAI,QAAQ;QACf,MAAM,QAAQ,GACZb,WAAG,CACD,aAAa,EACb,CAAC,CAAC,KAAK,CAAC,CAAC,gBAAgB,CAAC,kBAAkB,GAAG,CAAC,CAAC,WAAW,GAAG,CAAC,CACjE,IAAI,CAAC,QAAQ;AAEhB,QAAA,MAAM,QAAQ,GAAGa,WAAG,CAAC,cAAc,EAAE,CAAC,IAAI,KAAK,IAAI,CAAC,EAAE,CAAC;AACvD,QAAA,MAAM,QAAQ,GAAGb,WAAG,CAAC,cAAc,EAAE,CAAC,IAAI,KAAK,IAAI,CAAC,EAAE,CAAC;AACvD,QAAA,MAAM,QAAQ,GAAGa,WAAG,CAAC,cAAc,EAAE,CAAC,IAAI,KAAK,IAAI,CAAC,EAAE,CAAC;AACvD,QAAA,MAAM,QAAQ,GAAGb,WAAG,CAAC,cAAc,EAAE,CAAC,IAAI,KAAK,IAAI,CAAC,EAAE,CAAC;QAEvD,MAAM,UAAU,GAAG,IAAI,CAAC,GAAG,CAAC,QAAQ,EAAE,QAAQ,CAAC;QAC/C,MAAM,UAAU,GAAG,IAAI,CAAC,GAAG,CAAC,QAAQ,EAAE,QAAQ,CAAC;QAC/C,MAAM,UAAU,GAAG,IAAI,CAAC,GAAG,CAAC,QAAQ,EAAE,QAAQ,CAAC;QAC/C,MAAM,UAAU,GAAG,IAAI,CAAC,GAAG,CAAC,QAAQ,EAAE,QAAQ,CAAC;QAE/C,MAAM,gBAAgB,GAAGpB,mBAAW;AACjC,aAAA,MAAM,CAAC,CAAC,UAAU,EAAE,UAAU,CAAC;aAC/B,KAAK,CAAC,CAAC,CAAC,EAAE,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC;QAC9B,MAAM,gBAAgB,GAAGA,mBAAW;AACjC,aAAA,MAAM,CAAC,CAAC,UAAU,EAAE,UAAU,CAAC;aAC/B,KAAK,CAAC,CAAC,CAAC,EAAE,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC;AAE9B,QAAA,MAAM,WAAW,GAAG,YAAY,CAAC,CAAC,CAAC,IAAI,UAAU,GAAG,UAAU,CAAC;AAE/D,QAAA,KAAK,MAAM,IAAI,IAAI,cAAc,EAAE;YACjC,IAAI,CAAC,CAAC,GAAG,gBAAgB,CAAC,IAAI,CAAC,CAAC,CAAC;YACjC,IAAI,CAAC,EAAE,GAAG,gBAAgB,CAAC,IAAI,CAAC,EAAE,CAAC;YACnC,IAAI,CAAC,EAAE,GAAG,gBAAgB,CAAC,IAAI,CAAC,EAAE,CAAC;YACnC,IAAI,CAAC,CAAC,GAAG,gBAAgB,CAAC,IAAI,CAAC,CAAC,CAAC;YACjC,IAAI,CAAC,EAAE,GAAG,gBAAgB,CAAC,IAAI,CAAC,EAAE,CAAC;YACnC,IAAI,CAAC,EAAE,GAAG,gBAAgB,CAAC,IAAI,CAAC,EAAE,CAAC;YACnC,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE;YAC9B,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE;QACjC;AAEA,QAAA,KAAK,MAAM,IAAI,IAAI,cAAc,EAAE;AACjC,YAAA,IAAI,IAAI,CAAC,QAAQ,EAAE;AACjB,gBAAA,IAAI,CAAC,gBAAgB,CAAC,OAAO,GAAG,gBAAgB,CAC9C,IAAI,CAAC,gBAAgB,CAAC,OAAO,CAC9B;AACD,gBAAA,IAAI,CAAC,gBAAgB,CAAC,OAAO,GAAG,gBAAgB,CAC9C,IAAI,CAAC,gBAAgB,CAAC,OAAO,CAC9B;AACD,gBAAA,IAAI,CAAC,gBAAgB,CAAC,cAAc,GAAG,gBAAgB,CACrD,IAAI,CAAC,gBAAgB,CAAC,cAAc,CACrC;AACD,gBAAA,IAAI,CAAC,gBAAgB,CAAC,kBAAkB,GAAG,gBAAgB,CACzD,IAAI,CAAC,gBAAgB,CAAC,kBAAkB,CACzC;AACD,gBAAA,IAAI,CAAC,gBAAgB,CAAC,eAAe,GAAG,gBAAgB,CACtD,IAAI,CAAC,gBAAgB,CAAC,eAAe,CACtC;AACD,gBAAA,IAAI,CAAC,gBAAgB,CAAC,OAAO,GAAG,gBAAgB,CAC9C,IAAI,CAAC,gBAAgB,CAAC,OAAO,CAC9B;AACD,gBAAA,IAAI,CAAC,gBAAgB,CAAC,OAAO,GAAG,gBAAgB,CAC9C,IAAI,CAAC,gBAAgB,CAAC,OAAO,CAC9B;YACH;iBAAO;gBACL,IAAI,CAAC,EAAE,GAAG,gBAAgB,CAAC,IAAI,CAAC,EAAE,CAAC;gBACnC,IAAI,CAAC,EAAE,GAAG,gBAAgB,CAAC,IAAI,CAAC,EAAE,CAAC;YACrC;YACA,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,WAAW,GAAG,WAAW;QACnD;IACF;AAEA,IAAA,cAAc,CAAC,OAAO,CAAC,CAAC,IAAI,KAAI;AAC9B,QAAA,IAAI,CAAC,QAAQ,GAAG,gBAAgB,CAAC,IAAI,CAAC;AACxC,IAAA,CAAC,CAAC;AAEF,IAAA,cAAc,CAAC,OAAO,CAAC,CAAC,IAAI,KAAI;AAC9B,QAAA,IAAI,CAAC,KAAK,GAAG,iBAAiB,CAAC,IAAI,CAAC;AACtC,IAAA,CAAC,CAAC;AAEF,IAAA,IAAI,cAAc;AAElB,IAAA,IAAI,YAAY,CAAC,MAAM,EAAE;AACvB,QAAA,cAAc,GAAG,YAAY,CAAC,MAAM;AACpC,QAAA,IAAI,CAAC,cAAc,CAAC,YAAY,EAAE;;AAEhC,YAAA,MAAM,YAAY,GAAG;AACnB,gBAAA;oBACE,OAAO,EAAE,YAAY,CAAC,SAAS;AAC/B,oBAAA,IAAI,EAAE,MAAM;AACZ,oBAAA,KAAK,EAAE;AACR;aACF;AACD,YAAA,cAAc,CAAC,YAAY,GAAG,YAAY;QAC5C;IACF;AAEA,IAAA,MAAM,gBAAgB,GAAG,KAAK,CAAC,YAAY,CAAC,SAAS,EAAE,SAAS,EAAE,cAAc,EAAE,WAAW,CAAC;AAE9F,IAAA,MAAM,kBAAkB,GAAG;AACzB,QAAA,KAAK,EAAE;AACL,YAAA,mBAAmB,EAAE,CAAC,IAAI,EAAE,CAAC,KAAI;gBAC/B,MAAM,KAAK,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC;gBACvD,MAAM,KAAK,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC;AACvD,gBAAA,OAAA,MAAA,CAAA,MAAA,CAAA,MAAA,CAAA,MAAA,CAAA,EAAS,IAAI,EAAE,aAAa,EAAA,EAAK,IAAI,CAAC,CAAC,CAAC,CAAA,EAAA,EAAE,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,KAAK,EAAA,CAAA;YAC9D,CAAC;AACD,YAAA,IAAI,EAAE,cAAc;YACpB,OAAO,EAAE,gBAAgB,CAAC,WAAW;YACrC,OAAO,EAAE,gBAAgB,CAAC,WAAW;YACrC,UAAU,EAAE,gBAAgB,CAAC,gBAAgB;YAC7C,cAAc,EAAE,gBAAgB,CAAC,kBAAkB;YACnD,WAAW,EAAE,YAAY,CAAC;kBACtB,YAAY,CAAC;kBACb,CAAC,CAAC,KAAK,CAAC,CAAC,WAAW,IAAI,CAAC,CAAC,GAAG,IAAI,CAAA,EAAG,CAAC,CAAC,MAAM,CAAC,EAAE,CAAA,CAAA,EAAI,CAAC,CAAC,MAAM,CAAC,EAAE,CAAA,CAAE;AACpE,YAAA,QAAQ,EAAE,SAAS;YACnB,UAAU,EAAE,eAAe,CAAC,UAAU;AACtC,YAAA,IAAI,EAAE,QAAQ;AACd,YAAA,UAAU,EAAE,cAAc;YAC1B,eAAe;YACf,aAAa,EAAE,cAAc,CAAC,MAAM;AACpC,YAAA,IAAI,EAAE;AACP,SAAA;AACD,QAAA,KAAK,EAAE;AACL,YAAA,mBAAmB,EAAE,CAAC,IAAI,EAAE,CAAC,MAAK,MAAA,CAAA,MAAA,CAAA,MAAA,CAAA,MAAA,CAAA,EAChC,IAAI,EAAE,aAAa,EAAA,EAChB,IAAI,CAAC,CAAC,CAAC,CAAA,GACN,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,EAAE,EAAC,CACvB;AACF,YAAA,IAAI,EAAE,cAAc;AACpB,YAAA,OAAO,EAAE,WAAW;AACpB,YAAA,OAAO,EAAE,WAAW;AACpB,YAAA,UAAU,EAAE,gBAAgB;AAC5B,YAAA,cAAc,EAAE,kBAAkB;AAClC,YAAA,UAAU,EAAE,cAAc;AAC1B,YAAA,QAAQ,EAAE,SAAS;YACnB,WAAW,EAAE,YAAY,CAAC,aAAa;YACvC;AACD;KACF;IAED,MAAM,oBAAoB,GAAG,EAAE;AAC/B,IAAA,IAAI,YAAY,CAAC,UAAU,IAAI,cAAc,EAAE;QAC7C,cAAc,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,KAAK,KAAI;AACrC,YAAA,MAAM,aAAa,GACjB,UAAU,IAAI,UAAU,KAAK,IAAI,IAAI,UAAU,CAAC,IAAI,CAAC;AAEvD,YAAA,IAAI,UAAU,KAAK,IAAI,IAAI,aAAa,EAAE;AACxC,gBAAA,MAAM,WAAW,GACf,eAAe,CAAC,UAAU,KAAK,QAAQ,IAAI,IAAI,CAAC,KAAK,KAAK;sBACtD,oBAAoB,CAClB,IAAI,EACJ,KAAK,EACL,UAAU,KAAK,IAAI,GAAG,cAAc,GAAG,UAAU,EACjD,YAAY;sBAEd,UAAU,KAAK;AACjB,0BAAE,cAAc,CAAC,IAAI,EAAE,KAAK;0BAC1B,aAAa;AAEnB,gBAAA,IAAI,SAAS;AAEb,gBAAA,IAAIJ,gBAAK,CAAC,cAAc,CAAC,WAAW,CAAC,EAAE;AACrC,oBAAA,SAAS,GAAG;wBACV,GAAG,EAAE,CAAA,WAAA,EAAc,KAAK,CAAA,CAAE;AAC1B,wBAAA,IAAI,EAAE,kBAAkB;wBACxB,CAAC,EAAE,IAAI,CAAC,CAAC;wBACT,CAAC,EAAE,IAAI,CAAC,CAAC;AACT,wBAAA,OAAO,EAAE;qBACV;gBACH;qBAAO;AACL,oBAAA,SAAS,GAAG;wBACV,GAAG,EAAE,CAAA,WAAA,EAAc,KAAK,CAAA,CAAE;AAC1B,wBAAA,SAAS,EAAE,YAAY;AACvB,wBAAA,EAAE,EAAE,CAAC;AACL,wBAAA,EAAE,EAAE,CAAC;wBACL,CAAC,EAAE,IAAI,CAAC,CAAC;wBACT,CAAC,EAAE,IAAI,CAAC,CAAC;AACT,wBAAA,KAAK,EAAE,cAAc;AACrB,wBAAA,IAAI,EAAE,EAAE,KAAK,EAAE,WAAW,EAAE;AAC5B,wBAAA,SAAS,EAAE,EAAE,GAAG,EAAE,MAAM,EAAE;AAC1B,wBAAA,IAAI,EAAE,OAAO;wBACb,OAAO,EAAE,EAAE,MAAM,EAAE,gBAAgB,CAAC,IAAI,CAAC,GAAG,CAAC;qBAC9C;gBACH;AAEA,gBAAA,oBAAoB,CAAC,IAAI,CAAC,SAAS,CAAC;YACtC;AACF,QAAA,CAAC,CAAC;IACJ;AAEA,IAAA,IAAI,iBAAiB;IACrB,MAAM,OAAO,GAAG,EAAE;AAClB,IAAA,MAAM,cAAc,GAAG;QACrB,YAAY;QACZ,SAAS;QACT,WAAW;QACX;;KAED;AACD,IAAA,IACE,CAAC,eAAe;AACd,QAAA,cAAc,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,eAAe,CAAC,IAAI,CAAC;QACxD,eAAe,KAAK,MAAM,EAC1B;AACA,QAAA,IAAI,eAAe,KAAK,MAAM,EAAE;AAC9B,YAAA,MAAM,oBAAoB,GAAG,cAAc,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,MAAK,MAAA,CAAA,MAAA,CAAA,EACxD,WAAW,EAAE,CAAC,EAAA,EACX,cAAc,CAAC;gBAChB,CAAC;gBACD,CAAC;gBACD,SAAS,EAAE,aAAa,CAAC,CAAC,CAAC,CAAA,CAAA,EAAI,CAAC,CAAC,CAAC,CAAA,CAAA,CAAG;gBACrC,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE;AAC/B,aAAA,CAAC,CAAC,KAAK,CAAA,CACR,CAAC;AAEH,YAAA,OAAO,CAAC,IAAI,CAAC,GAAG,oBAAoB,CAAC;QACvC;AACA,QAAA,IAAI,eAAe,KAAK,MAAM,EAAE;YAC9B,cAAc,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,KAAI;gBAC9B,MAAM,aAAa,GAAG,cAAc,CAAC;oBACnC,CAAC;oBACD,CAAC;oBACD,SAAS,EAAE,aAAa,CAAC,CAAC,CAAC,CAAA,CAAA,EAAI,CAAC,CAAC,CAAC,CAAA,CAAA,CAAG;oBACrC,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE;AAC/B,iBAAA,CAAC;gBACF,IAAI,aAAa,EAAE;AACjB,oBAAA,OAAO,CAAC,IAAI,CAAA,MAAA,CAAA,MAAA,CAAA,EACV,WAAW,EAAA,MAAA,CAAA,MAAA,CAAA,MAAA,CAAA,MAAA,CAAA,EAAA,EACN,CAAC,CAAA,EAAA,EACJ,CAAC,EAAE,CAAC,CAAC,CAAC,KAAK,SAAS,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAC1D,CAAC,EAAE,CAAC,CAAC,CAAC,KAAK,SAAS,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAC1D,IAAI,EAAE,IAAI,EAAA,CAAA,EAAA,EAET,aAAa,CAAC,KAAK,EACtB;gBACJ;AACF,YAAA,CAAC,CAAC;QACJ;IACF;SAAO,IACL,eAAe,KAAK,MAAM;AAC1B,QAAA,OAAO,eAAe,CAAC,IAAI,KAAK,QAAQ;AACxC,QAAA,aAAa,CAAC,eAAe,CAAC,IAAI,CAAC,EACnC;AACA,QAAA,iBAAiB,GAAG,cAAc,CAAC,GAAG,CAAC,aAAa,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC;IAC7E;AAAO,SAAA,IACL,KAAK,CAAC,OAAO,CAAC,eAAe,CAAC;AAC9B,QAAA,eAAe,KAAK,IAAI;QACxB,eAAe,KAAK,MAAM,EAC1B;QACA,iBAAiB,GAAG,cAAc;QAClC,IAAI,WAAW,IAAI,sBAAsB;AACvC,YAAA,iBAAiB,GAAG,CAAC,GAAG,cAAc,CAAC;IAC3C;SAAO,IACL,eAAe,KAAK,KAAK;AACzB,QAAA,OAAO,eAAe,CAAC,IAAI,KAAK,QAAQ,EACxC;AACA,QAAA,iBAAiB,GAAG;YAClB,GAAG,cAAc,CAAC,GAAG,CAAC,aAAa,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC;AAC1D,YAAA,GAAG;SACJ;IACH;IAEA,OAAO;AACL,QAAA,gBAAgB,EAAE,gBAAgB;AAClC,QAAA,YAAY,EAAE,YAAY;QAC1B,kBAAkB,EAAE,YAAY,CAAC,kBAAkB;QACnD,kBAAkB,EAAE,YAAY,CAAC,kBAAkB;QACnD,KAAK;AACL,QAAA,YAAY,EAAE,SAAS,CAAC,YAAY,GAAG,CAAC;QACxC,cAAc;QACd,cAAc;QACd,iBAAiB;QACjB,OAAO;QACP,cAAc;QACd,cAAc;QACd,cAAc;QACd,gBAAgB;QAChB,iBAAiB;QACjB,MAAM;QACN,cAAc;QACd,kBAAkB;QAClB,oBAAoB;AACpB,QAAA,aAAa,kCACR,eAAe,CAAC,aAAa,CAAA,EAC7B,eAAe,CACnB;AACD,QAAA,KAAK,EAAE;KACR;AACH,CAAC;;SC17Be,0BAA0B,GAAA;IACxC,OAAO;QACL,UAAU,EAAE6B,wBAAO,CAAC,CAClB,MAAW,EACX,KAAU,EACV,IAAc,KACZ;AACF,YAAA,MAAM,gBAAgB,GAAG,eAAe,CAAC,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC;AACjE,YAAA,MAAM,EAAE,gBAAgB,EAAE,YAAY,EAAE,GAAG,oBAAoB,CAAC;gBAC9D,IAAI;AACJ,gBAAA,MAAM,EAAE;AACT,aAAA,CAAC;YACF,OAAO,EAAE,MAAM,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,YAAY,EAAE;AACrE,QAAA,CAAC,CAAC;AAEF,QAAA,mBAAmB,EAAEA,wBAAO,CAAC,CAC3B,cAAmB,EACnB,cAAmB,EACnB,cAAmB,EACnB,gBAAqB,EACrB,iBAAsB,MAClB;YACJ,cAAc,EAAE,UAAU,CAAS,cAAc,EAAE,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,EAAE,GAAG,SAAS,CAAC;AAC/E,YAAA,cAAc,EAAE,UAAU,CAA+B,cAAc,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC;AACzF,YAAA,cAAc,EAAE,UAAU,CAA+B,cAAc,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC;AACzF,YAAA,gBAAgB,EAAE,OAAO,gBAAgB,KAAK;AAC5C,kBAAE,eAAe,CAAC,gBAAgB;kBAChC,UAAU,CAAS,gBAAgB,EAAE,eAAe,CAAC,CAAC,CAAC,CAAC;AAC5D,YAAA,iBAAiB,EAAE,UAAU,CAAS,iBAAiB,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,MAAM,IAAI,CAAC,CAAC;AAC/E,SAAA,CAAC,CAAC;AAEH,QAAA,YAAY,EAAEA,wBAAO,CAAC,CACpB,SAAc,EACd,SAAc,EACd,cAAmB,EACnB,WAAgB,MACZ;AACJ,YAAA,WAAW,EAAE,UAAU,CAAsB,SAAS,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,CAAC;YACzE,WAAW,EAAE,UAAU,CAAS,SAAS,EAAE,MAAM,EAAE,EAAE,IAAI,CAAC;YAC1D,gBAAgB,EAAE,UAAU,CAA+B,cAAc,EAAE,SAAS,EAAE,IAAI,CAAC;AAC3F,YAAA,kBAAkB,EAAE,WAAW,GAAG,UAAU,CAAU,WAAW,EAAE,SAAS,EAAE,IAAI,CAAC,GAAG,SAAS;AAChG,SAAA,CAAC,CAAC;AAEH,QAAA,YAAY,EAAEA,wBAAO,CAAC,CACpB,SAAc,EACd,SAAc,EACd,cAAmB,EACnB,WAAgB,MACZ;AACJ,YAAA,WAAW,EAAE,UAAU,CAAsB,SAAS,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,CAAC;YACzE,WAAW,EAAE,UAAU,CAAS,SAAS,EAAE,MAAM,EAAE,EAAE,IAAI,CAAC;YAC1D,gBAAgB,EAAE,UAAU,CAA+B,cAAc,EAAE,SAAS,EAAE,IAAI,CAAC;AAC3F,YAAA,kBAAkB,EAAE,WAAW,GAAG,UAAU,CAAU,WAAW,EAAE,SAAS,EAAE,IAAI,CAAC,GAAG,SAAS;AAChG,SAAA,CAAC,CAAC;KACJ;AACH;;ACpDO,MAAM,UAAU,GAAG,CAAC,EAAE,KAAK,EAAE,GAAG,EAAE,cAAc,EAAkB,MACvE7B,gBAAA,CAAA,aAAA,CAAA,MAAA,EAAA,IAAA;IACEA,gBAAA,CAAA,aAAA,CAAA,QAAA,EAAA,EAAQ,EAAE,EAAC,mBAAmB,EAAA;AAC5B,QAAAA,gBAAA,CAAA,aAAA,CAAA,gBAAA,EAAA,EACE,EAAE,EAAC,cAAc,EACjB,EAAE,EAAC,eAAe,EAClB,YAAY,EAAE,CAAC,EACf,yBAAyB,EAAC,MAAM,EAChC,MAAM,EAAC,MAAM,EAAA,CACb;AACF,QAAAA,gBAAA,CAAA,aAAA,CAAA,eAAA,EAAA,EACE,EAAE,EAAC,MAAM,EACT,IAAI,EAAC,QAAQ,EACb,MAAM,EAAC,8CAA8C,EACrD,MAAM,EAAC,OAAO,GACd,CACK;IACTA,gBAAA,CAAA,aAAA,CAAA,QAAA,EAAA,EAAQ,EAAE,EAAC,mBAAmB,EAAA;AAC5B,QAAAA,gBAAA,CAAA,aAAA,CAAA,gBAAA,EAAA,EACE,EAAE,EAAC,cAAc,EACjB,EAAE,EAAC,eAAe,EAClB,YAAY,EAAE,CAAC,EACf,yBAAyB,EAAC,MAAM,EAChC,MAAM,EAAC,MAAM,EAAA,CACb;AACF,QAAAA,gBAAA,CAAA,aAAA,CAAA,eAAA,EAAA,EACE,EAAE,EAAC,MAAM,EACT,IAAI,EAAC,QAAQ,EACb,MAAM,EAAC,8CAA8C,EACrD,MAAM,EAAC,OAAO,GACd,CACK;AACT,IAAAA,gBAAA,CAAA,aAAA,CAAA,UAAA,EAAA,EAAU,EAAE,EAAE,CAAA,WAAA,EAAc,GAAG,CAAA,CAAE,EAAA,EAAG,KAAK,CAAY;IACpD,cAAc,CACV,CACR;AAEM,MAAM,iBAAiB,GAAG,CAAC,EAChC,KAAK,EACL,IAAI,EACJ,MAAM,EACN,QAAQ,EACR,cAAc,EACd,IAAI,EACL,KAAI;AACH,IAAA,IAAI,aAAa;AAEjB,IAEO,IAAIA,gBAAK,CAAC,cAAc,CAAC,KAAK,CAAC,EAAE;QACtC,aAAa,GAAG,KAAK;IACvB;AAAO,SAAA;IAeP,MAAM,eAAe,GAAG,UAAU,CAAC;AACjC,QAAA,KAAK,EAAE,aAAa;AACpB,QAAA,GAAG,EAAE,KAA2B;AAChC,QAAA,cAAc,EAAE;AACjB,KAAA,CAAC;IAEF,OAAO,EAAE,IAAI,EAAE,eAAe,EAAE,KAAK,EAAE,aAAa,EAAE;AACxD,CAAC;;AC3CD,MAAM,0BAA0B,GAAG;AACjC,IAAA,CAAC,EAAE,UAAU;AACb,IAAA,CAAC,EAAE,UAAU;AACb,IAAA,OAAO,EAAE,gBAAgB;AACzB,IAAA,IAAI,EAAE,aAAa;AACnB,IAAA,OAAO,EAAE,gBAAgB;AACzB,IAAA,OAAO,EAAE,gBAAgB;AACzB,IAAA,IAAI,EAAE,aAAa;AACnB,IAAA,OAAO,EAAE;CACV;AAED,MAAM,+BAA+B,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE;AAC1D,MAAM,+BAA+B,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE;AAE1D,MAAM,uBAAuB,GAAG;IAC9B,iBAAiB;IACjB,WAAW;IACX,OAAO;IACP,aAAa;IACb;CACD;AAED,SAAS,wBAAwB,CAC/B,cAAkC,EAClC,WAAkC,EAClC,MAAgB,EAChB,MAAgB,EAChB,wBAAgC,EAAA;IAEhC,MAAM,gBAAgB,GAAsB,EAAE;IAC9C,MAAM,aAAa,GAAG,MAAM,CAAC,IAAI,CAAC,cAAc,CAAC;AACjD,IAAA,MAAM,UAAU,GAAG;AACjB,QAAA,GAAG,WAAW;AACd,QAAA,GAAG,aAAa,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,WAAW,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,EAAE;KAC7D;AAED,IAAA,UAAU,CAAC,OAAO,CAAC,CAAC,CAAC,KAAI;AACvB,QAAA,MAAM,IAAI,GAAG,cAAc,CAAC,CAAC,CAAC;AAC9B,QAAA,IACE,IAAI;aACH,CAAC,IAAI,CAAC,IAAI;AACT,gBAAA,OAAO,IAAI,CAAC,IAAI,KAAK,QAAQ;gBAC7B,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC;AACzB,iBAAC,IAAI,CAAC,IAAI,IAAK,IAAI,CAAC,IAAc,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,EACjD;AACA,YAAA,MAAM,YAAY,GAAG,IAAI,CAAC,QAAQ,iBAChC,MAAM;gBACN,MAAM,EACN,aAAa,EAAE,EAAE,EACjB,wBAAwB,EAAA,EACrB,IAAI,CAAA,CACP;YAEF,IAAI,YAAY,IAAI,YAAY,CAAC,MAAM,GAAG,CAAC,EAAE;AAC3C,gBAAA,gBAAgB,CAAC,IAAI,CACnBA,sCAAG,GAAG,EAAE,CAAC,EAAE,SAAS,EAAE,CAAC,EAAE,IAAI,EAAC,OAAO,IAClC,YAAY,CACX,CACL;YACH;QACF;AACF,IAAA,CAAC,CAAC;AACF,IAAA,OAAO,gBAAgB;AACzB;AAEA,SAAS,gBAAgB,CAAC,KAAmB,EAAA;IAC3C,OAAO;AACL,QAAA,IAAI,EAAE,CAAC,GAAG,EAAE,GAAG,CAAC;AAChB,QAAA,WAAW,EAAE,SAAS;AACtB,QAAA,QAAQ,EAAE,SAAS;AACnB,QAAA,SAAS,EAAE,SAAS;AACpB,QAAA,WAAW,EAAE,SAAS;AACtB,QAAA,cAAc,EAAE,SAAS;AACzB,QAAA,eAAe,EAAE,SAAS;AAC1B,QAAA,kBAAkB,EAAE,SAAS;AAC7B,QAAA,WAAW,EAAE,EAAE;AACf,QAAA,gBAAgB,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC;AACxB,QAAA,YAAY,EAAE,CAAC,GAAG,EAAE,GAAG,CAAC;AACxB,QAAA,kBAAkB,EAAE,IAAI;AACxB,QAAA,kBAAkB,EAAE,IAAI;AACxB,QAAA,QAAQ,EAAE,SAAS;AACnB,QAAA,IAAI,EAAE,SAAS;AACf,QAAA,aAAa,EAAE,SAAS;AACxB,QAAA,YAAY,EAAE,CAAC;AACf,QAAA,MAAM,EAAE,EAAE,GAAG,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE;AAChD,QAAA,iBAAiB,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC;AACzB,QAAA,iBAAiB,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC;QACzB,SAAS,EAAE,CAAC,CAAC,CAAgB,KAAK,CAAC,CAAC,CAAC,CAAC;QACtC,SAAS,EAAE,CAAC,CAAC,CAAgB,KAAK,CAAC,CAAC,CAAC,CAAC;AACtC,QAAA,OAAO,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC;AACf,QAAA,OAAO,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC;AACf,QAAA,eAAe,EAAE,EAAE;QACnB,MAAM,EAAEI,mBAAW,EAAE;QACrB,MAAM,EAAEA,mBAAW,EAAE;AACrB,QAAA,KAAK,EAAE,IAAI;AACX,QAAA,cAAc,EAAE,SAAS;AACzB,QAAA,aAAa,EAAE,EAAE;AACjB,QAAA,aAAa,EAAE,EAAE;AACjB,QAAA,iBAAiB,EAAE;AACjB,YAAA,SAAS,EAAE,SAAS;AACpB,YAAA,SAAS,EAAE,SAAS;AACpB,YAAA,mBAAmB,EAAE,SAAS;AAC9B,YAAA,gBAAgB,EAAE,SAAS;AAC3B,YAAA,WAAW,EAAE,SAAS;AACtB,YAAA,QAAQ,EAAE,SAAS;AACnB,YAAA,WAAW,EAAE,SAAS;AACtB,YAAA,cAAc,EAAE,SAAS;AACzB,YAAA,SAAS,EAAE,SAAS;AACpB,YAAA,KAAK,EAAE,SAAS;AAChB,YAAA,KAAK,EAAE,SAAS;AAChB,YAAA,OAAO,EAAE,SAAS;AAClB,YAAA,OAAO,EAAE;AACV,SAAA;AACD,QAAA,OAAO,EAAE,SAAS;QAClB;KACe;AACnB;AAEA,SAAS,qBAAqB,CAAC,KAAwB,EAAA;IACrD,OAAO;AACL,QAAA,gBAAgB,EAAE,EAAE;AACpB,QAAA,YAAY,EAAE,EAAE;AAChB,QAAA,kBAAkB,EAAE,SAAS;AAC7B,QAAA,kBAAkB,EAAE,SAAS;AAC7B,QAAA,QAAQ,EAAE,SAAS;AACnB,QAAA,YAAY,EAAE,CAAC;AACf,QAAA,OAAO,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE;AACvB,QAAA,SAAS,EAAE,eAAe,CAAS,WAAW,CAAC;AAC/C,QAAA,SAAS,EAAE,eAAe,CAAS,OAAO,CAAC;QAC3C,MAAM,EAAE+C,iBAAS,EAAE;QACnB,MAAM,EAAE/C,mBAAW,EAAE;AACrB,QAAA,IAAI,EAAE,SAAS;AACf,QAAA,iBAAiB,EAAE,EAAE;AACrB,QAAA,iBAAiB,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC;AACzB,QAAA,cAAc,EAAE,EAAE;AAClB,QAAA,WAAW,EAAE,SAAS;AACtB,QAAA,cAAc,EAAE,SAAS;AACzB,QAAA,MAAM,EAAE,EAAE,GAAG,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE;AAChD,QAAA,OAAO,EAAE,EAAE;QACX,UAAU,EAAE+C,iBAAS,EAAE;AACvB,QAAA,aAAa,EAAE,EAAE;AACjB,QAAA,WAAW,EAAE,EAAE;AACf,QAAA,eAAe,EAAE,UAAU,CAAS,iBAAiB,CAAC;AACtD,QAAA,gBAAgB,EAAE,EAAE;AACpB,QAAA,OAAO,EAAE,EAAE;QACX,UAAU,EAAE/C,mBAAW,EAAE;AACzB,QAAA,WAAW,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE;AAC7B,QAAA,KAAK,EAAE,EAAE;AACT,QAAA,IAAI,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE;QACtB;KACoB;AACxB;AAEA,SAAS,qBAAqB,CAAC,KAAwB,EAAA;IACrD,OAAO;AACL,QAAA,WAAW,EAAE,SAAS;AACtB,QAAA,QAAQ,EAAE,EAAE;AACZ,QAAA,QAAQ,EAAE,EAAE;AACZ,QAAA,gBAAgB,EAAE,EAAE;AACpB,QAAA,YAAY,EAAE,EAAE;AAChB,QAAA,kBAAkB,EAAE,IAAI;AACxB,QAAA,kBAAkB,EAAE,IAAI;AACxB,QAAA,cAAc,EAAE,EAAE;AAClB,QAAA,cAAc,EAAE,EAAE;AAClB,QAAA,YAAY,EAAE,CAAC;AACf,QAAA,oBAAoB,EAAE,EAAE;AACxB,QAAA,aAAa,EAAE;AACb,YAAA,IAAI,EAAE,aAAa;AACnB,YAAA,KAAK,EAAE,EAAE;AACT,YAAA,KAAK,EAAE,EAAE;YACT,QAAQ,EAAE,IAAI,GAAG,EAAE;YACnB,QAAQ,EAAE,IAAI,GAAG,EAAE;AACnB,YAAA,mBAAmB,EAAE;AACtB,SAAA;AACD,QAAA,iBAAiB,EAAE,UAAU,CAAS,QAAQ,CAAC;AAC/C,QAAA,cAAc,EAAE,SAAS;AACzB,QAAA,MAAM,EAAE,EAAE,GAAG,EAAE,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE;AAChD,QAAA,kBAAkB,EAAE,EAAE;AACtB,QAAA,cAAc,EAAE,UAAU,CAAS,IAAI,CAAC;AACxC,QAAA,gBAAgB,EAAE,eAAe,CAAC,CAAC,CAAC;AACpC,QAAA,OAAO,EAAE,EAAE;AACX,QAAA,iBAAiB,EAAE,EAAE;AACrB,QAAA,cAAc,EAAE,UAAU,CAA+B,QAAQ,CAAC;AAClE,QAAA,cAAc,EAAE,UAAU,CAA+B,QAAQ,CAAC;AAClE,QAAA,KAAK,EAAE,EAAE,KAAK,EAAE,SAAS,EAAE;QAC3B;KACoB;AACxB;AAEA,SAAS,aAAa,CAAC,KAAmB,EAAA;AACxC,IAAA,MAAM,cAAc,GAAG;AACrB,QAAA,WAAW,EAAE,EAAE;AACf,QAAA,kBAAkB,EAAE,SAAS;AAC7B,QAAA,IAAI,EAAE,CAAC,GAAG,EAAE,GAAG,CAAa;AAC5B,QAAA,SAAS,EAAE,EAAE;AACb,QAAA,QAAQ,EAAE,MAAM;AAChB,QAAA,IAAI,EAAE,SAAS;AACf,QAAA,WAAW,EAAE;KACd;AACD,IAAA,MAAM,WAAW,GAAA,MAAA,CAAA,MAAA,CAAA,MAAA,CAAA,MAAA,CAAA,EAAA,EAAQ,cAAc,CAAA,EAAK,KAAK,CAAE;AACnD,IAAA,MAAM,KAAK,GAAG,qBAAqB,EAAE;AACrC,IAAA,MAAM,SAAS,GAAG,gBAAgB,CAAC,WAAW,CAAC;AAE/C,IAAA,MAAM,KAAK,GAAG,MAAA,CAAA,MAAA,CAAA,MAAA,CAAA,MAAA,CAAA,EAAA,EACT,SAAS,CAAA,EACT,gBAAgB,CAAC,WAAW,EAAE,SAAS,EAAE,IAAI,EAAE,KAAK,CAAC,CACzC;IAEjB,MAAM,EACJ,MAAM,EAGN,aAAa,EACb,MAAM,EACN,MAAM,EACN,IAAI,EACJ,aAAa,EACb,iBAAiB,EAClB,GAAG,KAAK;IAET,MAAM,IAAI,GAAG,WAAW,CAAC,IAAI,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC;AAC3C,IAAA,MAAM,WAAW,GAAG,WAAW,CAAC,WAAW,IAAI,EAAE;AACjD,IAAA,MAAM,gBAAgB,GAAG,WAAW,CAAC,gBAAgB,IAAI,uBAAuB;AAEhF,IAAA,MAAM,gBAAgB,GAAG,wBAAwB,CAC/C,aAAa,EACb,WAAW,EACX,MAAM,EACN,MAAM,EACN,0BAA0B,CAC3B;AAED,IAAA,OAAO,iBAAiB,CAAC;QACvB,IAAI;QACJ,MAAM;QACN,gBAAgB;QAChB,IAAI;QACJ,aAAa;QACb,KAAK,EAAE,iBAAiB,CAAC,KAAK;QAC9B,gBAAgB;QAChB,cAAc,EAAE,WAAW,CAAC,cAAc;AAC1C,QAAA,IAAI,EAAE,SAAS;QACf,KAAK,EAAE,WAAW,CAAC,KAAK;AACxB,QAAA,QAAQ,EAAE,WAAW,CAAC,QAAQ,IAAI;AACnC,KAAA,CAAC;AACJ;AAEA,SAAS,kBAAkB,CAAC,KAAwB,EAAA;AAClD,IAAA,MAAM,mBAAmB,GAA+B;AACtD,QAAA,WAAW,EAAE,EAAE;AACf,QAAA,kBAAkB,EAAE,EAAE;AACtB,QAAA,UAAU,EAAE,UAAU;AACtB,QAAA,IAAI,EAAE,CAAC,GAAG,EAAE,GAAG,CAAC;AAChB,QAAA,SAAS,EAAE,EAAE;AACb,QAAA,IAAI,EAAE,EAAE;AACR,QAAA,IAAI,EAAE;KACP;AACD,IAAA,MAAM,WAAW,GAAG,MAAA,CAAA,MAAA,CAAA,MAAA,CAAA,MAAA,CAAA,EAAA,EAAK,mBAAmB,CAAA,EAAK,KAAK,CAAuB;AAC7E,IAAA,MAAM,KAAK,GAAG,0BAA0B,EAAE;AAC1C,IAAA,MAAM,SAAS,GAAG,qBAAqB,CAAC,WAAW,CAAC;AAEpD,IAAA,MAAM,KAAK,GAAG,MAAA,CAAA,MAAA,CAAA,MAAA,CAAA,MAAA,CAAA,EAAA,EACT,SAAS,GACT,qBAAqB,CAAC,WAAW,EAAE,SAAS,EAAE,KAAK,CAAC,CACnC;AAEtB,IAAA,MAAM,EACJ,MAAM,EACN,YAAY,EACZ,aAAa,EACb,IAAI,EACJ,aAAa,EACb,KAAK,EACN,GAAG,KAAK;AAET,IAAA,MAAM,IAAI,GAAG;QACX,YAAY,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC,IAAI,GAAG,MAAM,CAAC,KAAK;QAC5C,YAAY,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC,GAAG,GAAG,MAAM,CAAC;KACvC;AAED,IAAA,MAAM,OAAO,GAAGA,mBAAW,EAAE;AAC7B,IAAA,MAAM,OAAO,GAAGA,mBAAW,EAAE;AAC7B,IAAA,MAAM,WAAW,GAAG,WAAW,CAAC,WAAW,IAAI,EAAE;AACjD,IAAA,MAAM,gBAAgB,GAAG,WAAW,CAAC,gBAAgB,IAAI,uBAAuB;AAEhF,IAAA,MAAM,gBAAgB,GAAG,wBAAwB,CAC/C,aAAa,EACb,WAAW,EACX,OAAO,EACP,OAAO,EACP,+BAA+B,CAChC;AAED,IAAA,OAAO,iBAAiB,CAAC;QACvB,IAAI;QACJ,MAAM;QACN,gBAAgB;QAChB,IAAI;QACJ,aAAa;QACb,KAAK;QACL,gBAAgB;QAChB,cAAc,EAAE,WAAW,CAAC,cAAc;AAC1C,QAAA,IAAI,EAAE,cAAc;QACpB,KAAK,EAAE,WAAW,CAAC,KAAK;AACxB,QAAA,QAAQ,EAAE;AACX,KAAA,CAAC;AACJ;AAEA,SAAS,kBAAkB,CAAC,KAAwB,EAAA;AAClD,IAAA,MAAM,mBAAmB,GAAG;AAC1B,QAAA,WAAW,EAAE,EAAE;AACf,QAAA,kBAAkB,EAAE,EAAE;AACtB,QAAA,IAAI,EAAE,CAAC,GAAG,EAAE,GAAG,CAAa;AAC5B,QAAA,SAAS,EAAE,EAAE;AACb,QAAA,IAAI,EAAE,cAAc;QACpB,WAAW,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,UAAU,EAAE,GAAG;KAC9C;AACD,IAAA,MAAM,WAAW,GAAA,MAAA,CAAA,MAAA,CAAA,MAAA,CAAA,MAAA,CAAA,EAAA,EAAQ,mBAAmB,CAAA,EAAK,KAAK,CAAE;AACxD,IAAA,MAAM,KAAK,GAAG,0BAA0B,EAAE;AAC1C,IAAA,MAAM,SAAS,GAAG,qBAAqB,CAAC,WAAW,CAAC;AAEpD,IAAA,MAAM,KAAK,GAAG,MAAA,CAAA,MAAA,CAAA,MAAA,CAAA,MAAA,CAAA,EAAA,EACT,SAAS,GACT,qBAAqB,CAAC,WAAW,EAAE,SAAS,EAAE,KAAK,CAAC,CACnC;IAEtB,MAAM,EACJ,MAAM,EACN,kBAAkB,EAClB,KAAK,EACL,aAAa,EACd,GAAG,KAAK;IAET,MAAM,IAAI,GAAG,WAAW,CAAC,IAAI,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC;AAE3C,IAAA,MAAM,OAAO,GAAGA,mBAAW,EAAE;AAC7B,IAAA,MAAM,OAAO,GAAGA,mBAAW,EAAE;AAE7B,IAAA,MAAM,iBAAiB,GAA0B,CAAC,OAAO,EAAE,OAAO,CAAC;AACnE,IAAA,MAAM,kBAAkB,GAA0B,CAAC,OAAO,EAAE,OAAO,CAAC;AACpE,IAAA,MAAM,WAAW,GAAG,WAAW,CAAC,WAAW;AACzC,SAAC,aAAa,IAAI,aAAa,CAAC,IAAI,KAAK;AACvC,cAAE;cACA,kBAAkB,CAAC;AACzB,IAAA,MAAM,gBAAgB,GAAG,WAAW,CAAC,gBAAgB,IAAI,uBAAuB;AAEhF,IAAA,MAAM,gBAAgB,GAAG,wBAAwB,CAC/C,kBAAkB,EAClB,WAAW,EACX,OAAO,EACP,OAAO,EACP,+BAA+B,CAChC;AAED,IAAA,OAAO,iBAAiB,CAAC;QACvB,IAAI;QACJ,MAAM;QACN,gBAAgB;QAChB,KAAK;QACL,gBAAgB;QAChB,cAAc,EAAE,WAAW,CAAC,cAAc;AAC1C,QAAA,IAAI,EAAE,cAAc;QACpB,KAAK,EAAE,WAAW,CAAC,KAAK;AACxB,QAAA,QAAQ,EAAE;AACX,KAAA,CAAC;AACJ;AAgBA,SAAS,iBAAiB,CAAC,EACzB,IAAI,EACJ,MAAM,EACN,gBAAgB,EAChB,IAAI,EACJ,aAAa,EACb,KAAK,EACL,gBAAgB,EAChB,cAAc,EACd,IAAI,EACJ,KAAK,EACL,QAAQ,EACQ,EAAA;AAChB,IAAA,MAAM,UAAU,GAAoC;QAClD,iBAAiB,EAAE,aAAa,IAC9BJ,gBAAA,CAAA,aAAA,CAAA,GAAA,EAAA,EACE,GAAG,EAAC,0BAA0B,EAC9B,SAAS,EAAC,sBAAsB,EAAA,aAAA,EACnB,IAAI,EAAA,EAEhB,aAAgC,CAC/B,IACF,IAAI;QACR,aAAa,EAAE,IAAI,IACjBA,gBAAA,CAAA,aAAA,CAAA,GAAA,EAAA,EAAG,GAAG,EAAC,2BAA2B,EAAC,SAAS,EAAC,kBAAkB,EAAA,EAC5D,IAAI,CACH,IACF,IAAI;AACR,QAAA,WAAW,EACT,gBAAgB,IAAI,gBAAgB,CAAC,MAAM,GAAG;AAC5C,cAAE;AACF,cAAE;KACP;IAED,MAAM,eAAe,GAAsB,EAAE;AAC7C,IAAA,gBAAgB,CAAC,OAAO,CAAC,CAAC,CAAC,KAAI;AAC7B,QAAA,IAAI,UAAU,CAAC,CAAC,CAAC,EAAE;YACjB,eAAe,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC;QACrC;AACF,IAAA,CAAC,CAAC;IAEF,MAAM,cAAc,GAAG,kBAAkB,CAAC;AACxC,QAAA,KAAK,EAAE,KAAK,IAAI,EAAE,KAAK,EAAE,SAAS,EAAE;QACpC;AACD,KAAA,CAAC;AAEF,IAAA,MAAM,EAAE,IAAI,EAAE,GAAG,iBAAiB,CAAC;AACjC,QAAA,KAAK,EAAE,IAAI;QACX,IAAI;QACJ,MAAM;QACN,QAAQ;QACR,cAAc;QACd;AACD,KAAA,CAAC;IAEF,MAAM,UAAU,IACdA,gBAAA,CAAA,aAAA,CAAA,KAAA,EAAA,EACE,KAAK,EAAC,4BAA4B,EAClC,SAAS,EAAE,CAAA,EAAG,IAAI,CAAA,MAAA,CAAQ,EAC1B,KAAK,EAAE,IAAI,CAAC,CAAC,CAAC,EACd,MAAM,EAAE,IAAI,CAAC,CAAC,CAAC,EAAA;QAEd,IAAI;AACJ,QAAA,eAAe,CAAC,MAAM,GAAG,CAAC,KACzBA,gBAAA,CAAA,aAAA,CAAA,GAAA,EAAA,EACE,SAAS,EAAC,oBAAoB,EAC9B,GAAG,EAAC,yBAAyB,EAC7B,IAAI,EAAC,OAAO,EACZ,SAAS,EAAE,CAAA,UAAA,EAAa,MAAM,CAAC,IAAI,CAAA,CAAA,EAAI,MAAM,CAAC,GAAG,CAAA,CAAA,CAAG,EAAA,EAEnD,eAAe,CACd,CACL;QACA,cAAc,IAAIA,gBAAA,CAAA,aAAA,CAAA,GAAA,EAAA,EAAG,SAAS,EAAC,aAAa,IAAE,cAAc,CAAK,CAC9D,CACP;AAED,IAAA,OAAOoD,SAAmC,CAAC,UAAU,CAAC;AACxD;AAEM,SAAU,iBAAiB,CAC/B,SAAoB,EACpB,KAA2D,EAAA;IAE3D,QAAQ,SAAS;AACf,QAAA,KAAK,IAAI;AACP,YAAA,OAAO,aAAa,CAAC,KAAqB,CAAC;AAC7C,QAAA,KAAK,SAAS;AACZ,YAAA,OAAO,kBAAkB,CAAC,KAA0B,CAAC;AACvD,QAAA,KAAK,SAAS;AACZ,YAAA,OAAO,kBAAkB,CAAC,KAA0B,CAAC;AACvD,QAAA;AACE,YAAA,MAAM,IAAI,KAAK,CACb,uBAAuB,SAAS,CAAA,wCAAA,CAA0C,CAC3E;;AAEP;AAEM,SAAU,mBAAmB,CAAC,KAAmB,EAAA;AACrD,IAAA,OAAO,aAAa,CAAC,KAAK,CAAC;AAC7B;AAEM,SAAU,wBAAwB,CAAC,KAAwB,EAAA;AAC/D,IAAA,OAAO,kBAAkB,CAAC,KAAK,CAAC;AAClC;AAEM,SAAU,wBAAwB,CAAC,KAAwB,EAAA;AAC/D,IAAA,OAAO,kBAAkB,CAAC,KAAK,CAAC;AAClC;;;;;;;"}
|