sparkforensics-server 0.1.0 → 0.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +6 -0
- package/index.js +40 -49
- package/lib/static-files.js +10 -6
- package/package.json +20 -1
- package/public/assets/AutoscalingChurn-CFJkiqxW.js +1 -0
- package/public/assets/CacheUtilization-kTKZBzDA.js +1 -0
- package/public/assets/CachingOpportunity-CU70EWcF.js +1 -0
- package/public/assets/ColdStart-hOI-WOvm.js +1 -0
- package/public/assets/ConfigAudit-B4oAksZY.js +1 -0
- package/public/assets/CoreUsageArea-D-dR3SQk.js +1 -0
- package/public/assets/Dashboard-MDhohsq4.js +4 -0
- package/public/assets/DuplicatePlanSubtree-54RKsfI7.js +1 -0
- package/public/assets/DurationHistogram-CviQyPNM.js +1 -0
- package/public/assets/EmptyState-v2ehFncc.js +1 -0
- package/public/assets/ExecutorUtilization-vHyFHgL6.js +1 -0
- package/public/assets/GcPressure-DINuhcno.js +1 -0
- package/public/assets/ImpactEstimate-C6GzFOY9.js +1 -0
- package/public/assets/IncompleteRun-a1kuCnU6.js +1 -0
- package/public/assets/JobFailures-CYwPfUhR.js +1 -0
- package/public/assets/MemoryUtilization-Dlfj0e_f.js +1 -0
- package/public/assets/OverBroadcast-BMu7Y8l9.js +1 -0
- package/public/assets/PartitionSizing-CvMGfSVB.js +1 -0
- package/public/assets/PlanExplorer-xYFme_Rx.js +1 -0
- package/public/assets/PlanGraphRoute-a3OGg6ET.js +1 -0
- package/public/assets/RetryWaste-JKRjOZ-J.js +1 -0
- package/public/assets/RowPagination-DypWbnic.js +1 -0
- package/public/assets/ShuffleIO-Mi8HiVu-.js +1 -0
- package/public/assets/Skew-C3iOScTC.js +1 -0
- package/public/assets/SlowHost-DKBg18v-.js +1 -0
- package/public/assets/SmallFiles-CCCB6AIu.js +1 -0
- package/public/assets/SpeculationWaste-DUNupw0_.js +1 -0
- package/public/assets/Spill-BlLdatik.js +1 -0
- package/public/assets/StageFailed-qtY7C7Yo.js +1 -0
- package/public/assets/StageFindingGroup-CoVdEZYs.js +1 -0
- package/public/assets/StageHeader-uDBLHgdg.js +1 -0
- package/public/assets/StagePill-CYCMdlIx.js +1 -0
- package/public/assets/StageShape-zs0mAjQJ.js +1 -0
- package/public/assets/StageSlowness-C7vg0u5Q.js +1 -0
- package/public/assets/Straggler-4BRGAQP4.js +1 -0
- package/public/assets/TaskFailures-CSjO23Kg.js +1 -0
- package/public/assets/TinyTask-6Zuovcn5.js +1 -0
- package/public/assets/UnderBroadcast-CePjo0ZV.js +1 -0
- package/public/assets/WidgetLeadSummary-DRNRVvn7.js +1 -0
- package/public/assets/{charts-vendor-NMqKV0H4.js → charts-vendor-Cf1-wzeH.js} +2 -2
- package/public/assets/downsample-D8XmJk6i.js +1 -0
- package/public/assets/finding-anchor-4TmpXd7j.js +1 -0
- package/public/assets/impact-sort-Cq6KOLqh.js +1 -0
- package/public/assets/inbox-DBFovbUX.js +1 -0
- package/public/assets/index-CHjV2-jB.js +9 -0
- package/public/assets/index-DMEtaP4u.css +1 -0
- package/public/assets/parser-worker-BMPPE37w.js +64 -0
- package/public/assets/plan-graph-vendor-B96a-e4N.js +7 -0
- package/public/assets/react-vendor-DA6opS-q.js +9 -0
- package/public/assets/select-D5fK-za0.js +1 -0
- package/public/assets/toggle-group-lbIXRG0W.js +1 -0
- package/public/assets/usePagedRows-CFoZrPr4.js +1 -0
- package/public/assets/useRecentFiles-BPGQ6XII.js +13 -0
- package/public/assets/useSortMode-BOPpfLhJ.js +1 -0
- package/public/docs/404.html +3 -3
- package/public/docs/assets/{app.Bxy4_HVA.js → app.BgzsaTS3.js} +1 -1
- package/public/docs/assets/aqe-loop.IwQSATHw.svg +1 -0
- package/public/docs/assets/aqe-loop.dark.DGbaxqJE.svg +1 -0
- package/public/docs/assets/broadcast-vs-shuffle.Db4WY1XK.svg +1 -0
- package/public/docs/assets/broadcast-vs-shuffle.dark.C7Bxs0mG.svg +1 -0
- package/public/docs/assets/cache-lifecycle.dark.B-hS7AgU.svg +1 -0
- package/public/docs/assets/cache-lifecycle.rEOVYQNU.svg +1 -0
- package/public/docs/assets/chunks/@localSearchIndexroot.PQ5JepCp.js +1 -0
- package/public/docs/assets/chunks/{VPLocalSearchBox.L5jNOIR3.js → VPLocalSearchBox.DOq3t-On.js} +1 -1
- package/public/docs/assets/chunks/duplicate-plan-subtree.dark.Cdp70QhV.js +1 -0
- package/public/docs/assets/chunks/{framework.CNDaxUod.js → framework.DSg0KOwT.js} +1 -1
- package/public/docs/assets/chunks/retry-escalation-ladder.dark.DHipdJgZ.js +1 -0
- package/public/docs/assets/chunks/theme.BP14rGBx.js +2 -0
- package/public/docs/assets/cold-start-timeline.DxC_Sc7w.svg +1 -0
- package/public/docs/assets/cold-start-timeline.dark.CZ17YcAG.svg +1 -0
- package/public/docs/assets/columnar-layout.PghGeOEA.svg +1 -0
- package/public/docs/assets/columnar-layout.dark.BVNlz0ff.svg +1 -0
- package/public/docs/assets/container-memory.DIO0AnIm.svg +1 -0
- package/public/docs/assets/container-memory.dark.CP-5zuCl.svg +1 -0
- package/public/docs/assets/contributor-guide_architecture_board-widgets.md.B-OsL91z.js +1 -0
- package/public/docs/assets/contributor-guide_architecture_board-widgets.md.B-OsL91z.lean.js +1 -0
- package/public/docs/assets/contributor-guide_architecture_detector-contract.md.BOeH4d1J.js +1 -0
- package/public/docs/assets/contributor-guide_architecture_detector-contract.md.BOeH4d1J.lean.js +1 -0
- package/public/docs/assets/contributor-guide_architecture_drill-down.md.BtPdlM7r.js +1 -0
- package/public/docs/assets/contributor-guide_architecture_drill-down.md.BtPdlM7r.lean.js +1 -0
- package/public/docs/assets/{contributor-guide_architecture_impact-estimation.md.CzlXOnCq.js → contributor-guide_architecture_impact-estimation.md.DYCDPgkh.js} +1 -1
- package/public/docs/assets/{contributor-guide_architecture_impact-estimation.md.CzlXOnCq.lean.js → contributor-guide_architecture_impact-estimation.md.DYCDPgkh.lean.js} +1 -1
- package/public/docs/assets/{contributor-guide_architecture_index.md.94lNbF-4.js → contributor-guide_architecture_index.md.3TO9ic6w.js} +1 -1
- package/public/docs/assets/{contributor-guide_architecture_index.md.94lNbF-4.lean.js → contributor-guide_architecture_index.md.3TO9ic6w.lean.js} +1 -1
- package/public/docs/assets/{contributor-guide_architecture_overview.md.mQFlN66o.js → contributor-guide_architecture_overview.md.CehiRmGn.js} +1 -1
- package/public/docs/assets/{contributor-guide_architecture_overview.md.mQFlN66o.lean.js → contributor-guide_architecture_overview.md.CehiRmGn.lean.js} +1 -1
- package/public/docs/assets/contributor-guide_architecture_state-and-history.md.m3S3UdMk.js +1 -0
- package/public/docs/assets/contributor-guide_architecture_state-and-history.md.m3S3UdMk.lean.js +1 -0
- package/public/docs/assets/contributor-guide_architecture_widget-rendering.md.DbqPf2OT.js +1 -0
- package/public/docs/assets/contributor-guide_architecture_widget-rendering.md.DbqPf2OT.lean.js +1 -0
- package/public/docs/assets/{contributor-guide_architecture_worker-protocol.md.BaS_L10g.js → contributor-guide_architecture_worker-protocol.md.B93qJ_tT.js} +2 -2
- package/public/docs/assets/{contributor-guide_architecture_worker-protocol.md.BaS_L10g.lean.js → contributor-guide_architecture_worker-protocol.md.B93qJ_tT.lean.js} +1 -1
- package/public/docs/assets/contributor-guide_contributing.md.CvRsdr6J.js +1 -0
- package/public/docs/assets/contributor-guide_contributing.md.CvRsdr6J.lean.js +1 -0
- package/public/docs/assets/{contributor-guide_development-setup.md.CpUMVtIK.js → contributor-guide_development-setup.md.DvAN_9mK.js} +1 -1
- package/public/docs/assets/{contributor-guide_development-setup.md.CpUMVtIK.lean.js → contributor-guide_development-setup.md.DvAN_9mK.lean.js} +1 -1
- package/public/docs/assets/{contributor-guide_testing.md.C0q-BJfl.js → contributor-guide_testing.md.6rIKqSyY.js} +1 -1
- package/public/docs/assets/{contributor-guide_testing.md.C0q-BJfl.lean.js → contributor-guide_testing.md.6rIKqSyY.lean.js} +1 -1
- package/public/docs/assets/dag-stages.DSz_S937.svg +1 -0
- package/public/docs/assets/dag-stages.dark.F72UzxH4.svg +1 -0
- package/public/docs/assets/driver-executor.D5pQ7YN1.svg +1 -0
- package/public/docs/assets/driver-executor.dark.BmX9cPvh.svg +1 -0
- package/public/docs/assets/duplicate-plan-subtree.B4cvN6fj.svg +1 -0
- package/public/docs/assets/duplicate-plan-subtree.dark.Dw8wS0Ag.svg +1 -0
- package/public/docs/assets/{index.md.CETnDZzR.js → index.md.CHJVslga.js} +1 -1
- package/public/docs/assets/{index.md.CETnDZzR.lean.js → index.md.CHJVslga.lean.js} +1 -1
- package/public/docs/assets/join-strategy.C_FvrCEo.svg +1 -0
- package/public/docs/assets/join-strategy.dark.ChMLnNII.svg +1 -0
- package/public/docs/assets/memory-borrowing.BqQRJg0u.svg +1 -0
- package/public/docs/assets/memory-borrowing.dark.Yhh20O9C.svg +1 -0
- package/public/docs/assets/memory-regions.XHvO7jHG.svg +1 -0
- package/public/docs/assets/memory-regions.dark.D4TP9_08.svg +1 -0
- package/public/docs/assets/repartition-vs-coalesce.BovLRrpj.svg +1 -0
- package/public/docs/assets/repartition-vs-coalesce.dark.BhAczKZQ.svg +1 -0
- package/public/docs/assets/retry-escalation-ladder.DyTKJJmZ.svg +1 -0
- package/public/docs/assets/retry-escalation-ladder.dark.BdsabtU3.svg +1 -0
- package/public/docs/assets/shuffle-map-reduce.KuOEZVmg.svg +1 -0
- package/public/docs/assets/shuffle-map-reduce.dark.BgQZnFSb.svg +1 -0
- package/public/docs/assets/spill-classification.BU2euYDO.svg +1 -0
- package/public/docs/assets/spill-classification.dark.D7i1M40d.svg +1 -0
- package/public/docs/assets/{style.D2mY0HUs.css → style.DXOMCXxn.css} +1 -1
- package/public/docs/assets/tuning-reference_anti-patterns.md.Df1YMIHu.js +1 -0
- package/public/docs/assets/tuning-reference_anti-patterns.md.Df1YMIHu.lean.js +1 -0
- package/public/docs/assets/tuning-reference_aqe.md.BIsCtLzm.js +1 -0
- package/public/docs/assets/tuning-reference_aqe.md.BIsCtLzm.lean.js +1 -0
- package/public/docs/assets/tuning-reference_bottleneck-broadcast-sizing.md.CEstB3Ia.js +1 -0
- package/public/docs/assets/tuning-reference_bottleneck-broadcast-sizing.md.CEstB3Ia.lean.js +1 -0
- package/public/docs/assets/tuning-reference_bottleneck-cold-start.md.CEuy-72y.js +7 -0
- package/public/docs/assets/tuning-reference_bottleneck-cold-start.md.CEuy-72y.lean.js +1 -0
- package/public/docs/assets/tuning-reference_bottleneck-duplicate-plan-subtree.md.CIohQDfn.js +1 -0
- package/public/docs/assets/tuning-reference_bottleneck-duplicate-plan-subtree.md.CIohQDfn.lean.js +1 -0
- package/public/docs/assets/tuning-reference_bottleneck-failures.md.4z5BXGJ2.js +6 -0
- package/public/docs/assets/tuning-reference_bottleneck-failures.md.4z5BXGJ2.lean.js +1 -0
- package/public/docs/assets/tuning-reference_bottleneck-gc.md.DSxzZRK7.js +6 -0
- package/public/docs/assets/tuning-reference_bottleneck-gc.md.DSxzZRK7.lean.js +1 -0
- package/public/docs/assets/tuning-reference_bottleneck-job-failure-rate.md.BaJl__1W.js +8 -0
- package/public/docs/assets/tuning-reference_bottleneck-job-failure-rate.md.BaJl__1W.lean.js +1 -0
- package/public/docs/assets/tuning-reference_bottleneck-memory-utilization.md.DbP-SJZc.js +7 -0
- package/public/docs/assets/tuning-reference_bottleneck-memory-utilization.md.DbP-SJZc.lean.js +1 -0
- package/public/docs/assets/tuning-reference_bottleneck-retry-waste.md.D5JMjVOt.js +1 -0
- package/public/docs/assets/tuning-reference_bottleneck-retry-waste.md.D5JMjVOt.lean.js +1 -0
- package/public/docs/assets/tuning-reference_bottleneck-shuffle.md.CM-nTmIH.js +12 -0
- package/public/docs/assets/tuning-reference_bottleneck-shuffle.md.CM-nTmIH.lean.js +1 -0
- package/public/docs/assets/tuning-reference_bottleneck-skew.md.BdUwiDhn.js +14 -0
- package/public/docs/assets/tuning-reference_bottleneck-skew.md.BdUwiDhn.lean.js +1 -0
- package/public/docs/assets/tuning-reference_bottleneck-slow-host.md.BlIo6UDW.js +7 -0
- package/public/docs/assets/tuning-reference_bottleneck-slow-host.md.BlIo6UDW.lean.js +1 -0
- package/public/docs/assets/tuning-reference_bottleneck-small-files.md.B8kloyx8.js +5 -0
- package/public/docs/assets/tuning-reference_bottleneck-small-files.md.B8kloyx8.lean.js +1 -0
- package/public/docs/assets/tuning-reference_bottleneck-spill.md.PNH7mITt.js +6 -0
- package/public/docs/assets/tuning-reference_bottleneck-spill.md.PNH7mITt.lean.js +1 -0
- package/public/docs/assets/tuning-reference_bottleneck-straggler.md.DY36fHN5.js +7 -0
- package/public/docs/assets/tuning-reference_bottleneck-straggler.md.DY36fHN5.lean.js +1 -0
- package/public/docs/assets/tuning-reference_bottleneck-tiny-tasks.md.QTV7O8kU.js +8 -0
- package/public/docs/assets/tuning-reference_bottleneck-tiny-tasks.md.QTV7O8kU.lean.js +1 -0
- package/public/docs/assets/tuning-reference_bottleneck-utilization.md.DTiueZC3.js +5 -0
- package/public/docs/assets/tuning-reference_bottleneck-utilization.md.DTiueZC3.lean.js +1 -0
- package/public/docs/assets/tuning-reference_caching.md.B7aQ8asB.js +1 -0
- package/public/docs/assets/tuning-reference_caching.md.B7aQ8asB.lean.js +1 -0
- package/public/docs/assets/tuning-reference_cluster-config.md.ZVmDGsQ3.js +1 -0
- package/public/docs/assets/tuning-reference_cluster-config.md.ZVmDGsQ3.lean.js +1 -0
- package/public/docs/assets/tuning-reference_config.md.UvveiWG3.js +1 -0
- package/public/docs/assets/tuning-reference_config.md.UvveiWG3.lean.js +1 -0
- package/public/docs/assets/tuning-reference_data-formats.md.bjCAWH3N.js +1 -0
- package/public/docs/assets/tuning-reference_data-formats.md.bjCAWH3N.lean.js +1 -0
- package/public/docs/assets/tuning-reference_index.md.BQ_NooMV.js +1 -0
- package/public/docs/assets/tuning-reference_index.md.BQ_NooMV.lean.js +1 -0
- package/public/docs/assets/tuning-reference_intro.md.CobD-lGB.js +1 -0
- package/public/docs/assets/tuning-reference_intro.md.CobD-lGB.lean.js +1 -0
- package/public/docs/assets/tuning-reference_joins.md.BtKs_CuW.js +1 -0
- package/public/docs/assets/tuning-reference_joins.md.BtKs_CuW.lean.js +1 -0
- package/public/docs/assets/tuning-reference_memory-model.md.DhT-n4y3.js +1 -0
- package/public/docs/assets/tuning-reference_memory-model.md.DhT-n4y3.lean.js +1 -0
- package/public/docs/assets/tuning-reference_metrics.md.mLOh7Apj.js +1 -0
- package/public/docs/assets/tuning-reference_metrics.md.mLOh7Apj.lean.js +1 -0
- package/public/docs/assets/tuning-reference_partitioning.md.q0zKF_8X.js +1 -0
- package/public/docs/assets/tuning-reference_partitioning.md.q0zKF_8X.lean.js +1 -0
- package/public/docs/assets/tuning-reference_pyspark.md.DDCfvN9t.js +6 -0
- package/public/docs/assets/tuning-reference_pyspark.md.DDCfvN9t.lean.js +1 -0
- package/public/docs/assets/tuning-reference_shuffle.md.BZZ7R4Ix.js +1 -0
- package/public/docs/assets/tuning-reference_shuffle.md.BZZ7R4Ix.lean.js +1 -0
- package/public/docs/assets/tuning-reference_spark-architecture.md.Dwzm5avO.js +1 -0
- package/public/docs/assets/tuning-reference_spark-architecture.md.Dwzm5avO.lean.js +1 -0
- package/public/docs/assets/tuning-reference_table-formats.md.D6wj-2dX.js +1 -0
- package/public/docs/assets/tuning-reference_table-formats.md.D6wj-2dX.lean.js +1 -0
- package/public/docs/assets/udf-execution-models.BUFDICuG.svg +1 -0
- package/public/docs/assets/udf-execution-models.dark.YTNS6GDq.svg +1 -0
- package/public/docs/assets/user-guide_alternative-log-retrieval.md.sU3KGarf.js +1 -0
- package/public/docs/assets/user-guide_alternative-log-retrieval.md.sU3KGarf.lean.js +1 -0
- package/public/docs/assets/user-guide_getting-started.md.DtEM37MK.js +3 -0
- package/public/docs/assets/user-guide_getting-started.md.DtEM37MK.lean.js +1 -0
- package/public/docs/assets/{user-guide_mcp-tools.md.DwYI1d6C.js → user-guide_mcp-tools.md.C8MiIu7F.js} +35 -5
- package/public/docs/assets/{user-guide_mcp-tools.md.DwYI1d6C.lean.js → user-guide_mcp-tools.md.C8MiIu7F.lean.js} +1 -1
- package/public/docs/assets/{user-guide_run-comparison.md.5-oaOfTu.js → user-guide_run-comparison.md.S0TWWmLY.js} +1 -1
- package/public/docs/assets/{user-guide_run-comparison.md.5-oaOfTu.lean.js → user-guide_run-comparison.md.S0TWWmLY.lean.js} +1 -1
- package/public/docs/assets/user-guide_understanding-findings.md.D0R_Y-R2.js +1 -0
- package/public/docs/assets/{user-guide_understanding-findings.md.CK2WZ0Tf.lean.js → user-guide_understanding-findings.md.D0R_Y-R2.lean.js} +1 -1
- package/public/docs/contributor-guide/architecture/board-widgets.html +7 -7
- package/public/docs/contributor-guide/architecture/detector-contract.html +7 -7
- package/public/docs/contributor-guide/architecture/drill-down.html +7 -7
- package/public/docs/contributor-guide/architecture/impact-estimation.html +7 -7
- package/public/docs/contributor-guide/architecture/index.html +7 -7
- package/public/docs/contributor-guide/architecture/overview.html +7 -7
- package/public/docs/contributor-guide/architecture/state-and-history.html +7 -7
- package/public/docs/contributor-guide/architecture/widget-rendering.html +7 -7
- package/public/docs/contributor-guide/architecture/worker-protocol.html +8 -8
- package/public/docs/contributor-guide/contributing.html +7 -7
- package/public/docs/contributor-guide/development-setup.html +7 -7
- package/public/docs/contributor-guide/testing.html +7 -7
- package/public/docs/hashmap.json +1 -1
- package/public/docs/index.html +7 -7
- package/public/docs/tuning-reference/anti-patterns.html +29 -0
- package/public/docs/tuning-reference/aqe.html +29 -0
- package/public/docs/tuning-reference/bottleneck-broadcast-sizing.html +29 -0
- package/public/docs/tuning-reference/bottleneck-cold-start.html +35 -0
- package/public/docs/tuning-reference/bottleneck-duplicate-plan-subtree.html +30 -0
- package/public/docs/tuning-reference/bottleneck-failures.html +35 -0
- package/public/docs/tuning-reference/bottleneck-gc.html +34 -0
- package/public/docs/tuning-reference/bottleneck-job-failure-rate.html +37 -0
- package/public/docs/tuning-reference/bottleneck-memory-utilization.html +35 -0
- package/public/docs/tuning-reference/bottleneck-retry-waste.html +30 -0
- package/public/docs/tuning-reference/bottleneck-shuffle.html +40 -0
- package/public/docs/tuning-reference/bottleneck-skew.html +42 -0
- package/public/docs/tuning-reference/bottleneck-slow-host.html +35 -0
- package/public/docs/tuning-reference/bottleneck-small-files.html +33 -0
- package/public/docs/tuning-reference/bottleneck-spill.html +34 -0
- package/public/docs/tuning-reference/bottleneck-straggler.html +35 -0
- package/public/docs/tuning-reference/bottleneck-tiny-tasks.html +36 -0
- package/public/docs/tuning-reference/bottleneck-utilization.html +34 -0
- package/public/docs/tuning-reference/caching.html +29 -0
- package/public/docs/tuning-reference/cluster-config.html +29 -0
- package/public/docs/tuning-reference/config.html +29 -0
- package/public/docs/tuning-reference/data-formats.html +29 -0
- package/public/docs/tuning-reference/index.html +29 -0
- package/public/docs/tuning-reference/intro.html +29 -0
- package/public/docs/tuning-reference/joins.html +29 -0
- package/public/docs/tuning-reference/memory-model.html +29 -0
- package/public/docs/tuning-reference/metrics.html +29 -0
- package/public/docs/tuning-reference/partitioning.html +29 -0
- package/public/docs/tuning-reference/pyspark.html +34 -0
- package/public/docs/tuning-reference/shuffle.html +29 -0
- package/public/docs/tuning-reference/spark-architecture.html +29 -0
- package/public/docs/tuning-reference/table-formats.html +29 -0
- package/public/docs/user-guide/alternative-log-retrieval.html +29 -0
- package/public/docs/user-guide/getting-started.html +8 -8
- package/public/docs/user-guide/mcp-tools.html +41 -11
- package/public/docs/user-guide/run-comparison.html +7 -7
- package/public/docs/user-guide/understanding-findings.html +7 -7
- package/public/index.html +6 -6
- package/vendor-core/analyzer.js +74 -74
- package/vendor-core/cli/budgets.js +13 -27
- package/vendor-core/cli/collect-run.js +43 -19
- package/vendor-core/core-count.js +25 -27
- package/vendor-core/core-locality-ratio.js +4 -11
- package/vendor-core/core-time-series.js +6 -12
- package/vendor-core/core-usage-locality.js +3 -4
- package/vendor-core/detectors.js +256 -375
- package/vendor-core/docs-config.js +69 -21
- package/vendor-core/docs-content/chapters/01-intro.md +32 -0
- package/vendor-core/docs-content/chapters/02-spark-architecture.md +76 -0
- package/vendor-core/docs-content/chapters/03-memory-model.md +73 -0
- package/vendor-core/docs-content/chapters/04-partitioning.md +65 -0
- package/vendor-core/docs-content/chapters/05-joins.md +62 -0
- package/vendor-core/docs-content/chapters/06-shuffle.md +59 -0
- package/vendor-core/docs-content/chapters/07-data-formats.md +81 -0
- package/vendor-core/docs-content/chapters/07b-table-formats.md +56 -0
- package/vendor-core/docs-content/chapters/08-caching.md +58 -0
- package/vendor-core/docs-content/chapters/09-pyspark.md +78 -0
- package/vendor-core/docs-content/chapters/10-aqe.md +167 -0
- package/vendor-core/docs-content/chapters/11-cluster-config.md +170 -0
- package/vendor-core/docs-content/chapters/12-anti-patterns.md +171 -0
- package/vendor-core/docs-content/chapters/14-metrics.md +87 -0
- package/vendor-core/docs-content/chapters/15-config.md +93 -0
- package/vendor-core/docs-content/chapters/nav-index.json +370 -0
- package/vendor-core/docs-content/detection/cache.md +6 -0
- package/vendor-core/docs-content/detection/cfg.md +15 -0
- package/vendor-core/docs-content/detection/chrn.md +7 -0
- package/vendor-core/docs-content/detection/cold.md +4 -0
- package/vendor-core/docs-content/detection/cstor.md +4 -0
- package/vendor-core/docs-content/detection/fail.md +5 -0
- package/vendor-core/docs-content/detection/gc.md +4 -0
- package/vendor-core/docs-content/detection/host.md +5 -0
- package/vendor-core/docs-content/detection/incmp.md +6 -0
- package/vendor-core/docs-content/detection/jobs.md +4 -0
- package/vendor-core/docs-content/detection/local.md +7 -0
- package/vendor-core/docs-content/detection/mem.md +10 -0
- package/vendor-core/docs-content/detection/part.md +5 -0
- package/vendor-core/docs-content/detection/plan.md +14 -0
- package/vendor-core/docs-content/detection/retry.md +4 -0
- package/vendor-core/docs-content/detection/sfail.md +5 -0
- package/vendor-core/docs-content/detection/shape.md +5 -0
- package/vendor-core/docs-content/detection/shfl.md +4 -0
- package/vendor-core/docs-content/detection/skew.md +6 -0
- package/vendor-core/docs-content/detection/slow.md +6 -0
- package/vendor-core/docs-content/detection/spec.md +7 -0
- package/vendor-core/docs-content/detection/spill.md +7 -0
- package/vendor-core/docs-content/detection/strag.md +5 -0
- package/vendor-core/docs-content/detection/tiny.md +4 -0
- package/vendor-core/docs-content/detection/util.md +4 -0
- package/vendor-core/docs-content/diagrams/aqe-loop.dark.svg +1 -0
- package/vendor-core/docs-content/diagrams/aqe-loop.svg +1 -0
- package/vendor-core/docs-content/diagrams/broadcast-vs-shuffle.dark.svg +1 -0
- package/vendor-core/docs-content/diagrams/broadcast-vs-shuffle.svg +1 -0
- package/vendor-core/docs-content/diagrams/cache-lifecycle.dark.svg +1 -0
- package/vendor-core/docs-content/diagrams/cache-lifecycle.svg +1 -0
- package/vendor-core/docs-content/diagrams/cold-start-timeline.dark.svg +1 -0
- package/vendor-core/docs-content/diagrams/cold-start-timeline.svg +1 -0
- package/vendor-core/docs-content/diagrams/columnar-layout.dark.svg +1 -0
- package/vendor-core/docs-content/diagrams/columnar-layout.svg +1 -0
- package/vendor-core/docs-content/diagrams/container-memory.dark.svg +1 -0
- package/vendor-core/docs-content/diagrams/container-memory.svg +1 -0
- package/vendor-core/docs-content/diagrams/dag-stages.dark.svg +1 -0
- package/vendor-core/docs-content/diagrams/dag-stages.svg +1 -0
- package/vendor-core/docs-content/diagrams/driver-executor.dark.svg +1 -0
- package/vendor-core/docs-content/diagrams/driver-executor.svg +1 -0
- package/vendor-core/docs-content/diagrams/duplicate-plan-subtree.dark.svg +1 -0
- package/vendor-core/docs-content/diagrams/duplicate-plan-subtree.svg +1 -0
- package/vendor-core/docs-content/diagrams/join-strategy.dark.svg +1 -0
- package/vendor-core/docs-content/diagrams/join-strategy.svg +1 -0
- package/vendor-core/docs-content/diagrams/memory-borrowing.dark.svg +1 -0
- package/vendor-core/docs-content/diagrams/memory-borrowing.svg +1 -0
- package/vendor-core/docs-content/diagrams/memory-regions.dark.svg +1 -0
- package/vendor-core/docs-content/diagrams/memory-regions.svg +1 -0
- package/vendor-core/docs-content/diagrams/repartition-vs-coalesce.dark.svg +1 -0
- package/vendor-core/docs-content/diagrams/repartition-vs-coalesce.svg +1 -0
- package/vendor-core/docs-content/diagrams/retry-escalation-ladder.dark.svg +1 -0
- package/vendor-core/docs-content/diagrams/retry-escalation-ladder.svg +1 -0
- package/vendor-core/docs-content/diagrams/shuffle-map-reduce.dark.svg +1 -0
- package/vendor-core/docs-content/diagrams/shuffle-map-reduce.svg +1 -0
- package/vendor-core/docs-content/diagrams/spill-classification.dark.svg +1 -0
- package/vendor-core/docs-content/diagrams/spill-classification.svg +1 -0
- package/vendor-core/docs-content/diagrams/udf-execution-models.dark.svg +1 -0
- package/vendor-core/docs-content/diagrams/udf-execution-models.svg +1 -0
- package/vendor-core/docs-content/tuning/broadcast-sizing.md +78 -0
- package/vendor-core/docs-content/tuning/cold-start.md +81 -0
- package/vendor-core/docs-content/tuning/duplicate-plan-subtree.md +45 -0
- package/vendor-core/docs-content/tuning/failures.md +124 -0
- package/vendor-core/docs-content/tuning/gc.md +110 -0
- package/vendor-core/docs-content/tuning/job-failure-rate.md +101 -0
- package/vendor-core/docs-content/tuning/memory-utilization.md +58 -0
- package/vendor-core/docs-content/tuning/retry-waste.md +90 -0
- package/vendor-core/docs-content/tuning/shuffle.md +154 -0
- package/vendor-core/docs-content/tuning/skew.md +123 -0
- package/vendor-core/docs-content/tuning/slow-host.md +117 -0
- package/vendor-core/docs-content/tuning/small-files.md +99 -0
- package/vendor-core/docs-content/tuning/spill.md +114 -0
- package/vendor-core/docs-content/tuning/straggler.md +103 -0
- package/vendor-core/docs-content/tuning/tiny-tasks.md +94 -0
- package/vendor-core/docs-content/tuning/utilization.md +90 -0
- package/vendor-core/docs-site-config.js +10 -17
- package/vendor-core/efficiency-model.js +7 -13
- package/vendor-core/etl-phases.js +3 -5
- package/vendor-core/event-handlers.js +232 -134
- package/vendor-core/event-schemas.js +48 -114
- package/vendor-core/evidence-availability.js +5 -10
- package/vendor-core/evidence-report.js +72 -122
- package/vendor-core/export-data.js +48 -0
- package/vendor-core/finding-action-label.js +4 -10
- package/vendor-core/finding-filter-predicate.js +3 -7
- package/vendor-core/finding-generic-recommendation.js +112 -0
- package/vendor-core/finding-names.js +51 -0
- package/vendor-core/format-utils.js +112 -38
- package/vendor-core/impact-band.js +18 -24
- package/vendor-core/impact-estimator.js +38 -74
- package/vendor-core/ingest.js +7 -13
- package/vendor-core/job-groups.js +3 -6
- package/vendor-core/list-runs.js +278 -0
- package/vendor-core/load-vendored.js +6 -12
- package/vendor-core/log-header-peek.js +81 -0
- package/vendor-core/lz4-block.js +4 -6
- package/vendor-core/mcp-server-factory.js +38 -8
- package/vendor-core/mcp-tools.js +105 -76
- package/vendor-core/model-assembler.js +8 -16
- package/vendor-core/occupancy.js +5 -9
- package/vendor-core/parser-worker.js +18 -27
- package/vendor-core/plan-dot.js +2 -5
- package/vendor-core/plan-duration-attribution.js +78 -29
- package/vendor-core/plan-graph-model.js +126 -69
- package/vendor-core/plan-node-detail.js +31 -17
- package/vendor-core/plan-summary.js +19 -8
- package/vendor-core/recommendation-rollup.js +35 -39
- package/vendor-core/redact.js +72 -16
- package/vendor-core/rolling-log-reassembly.js +4 -6
- package/vendor-core/run-comparison.js +65 -70
- package/vendor-core/scaling-sim.js +5 -7
- package/vendor-core/session-snapshot.js +1 -1
- package/vendor-core/shs-fetch.js +4 -6
- package/vendor-core/shs-load.js +9 -13
- package/vendor-core/shs-request.js +1 -1
- package/vendor-core/stage-quantiles.js +14 -0
- package/vendor-core/types.js +78 -18
- package/vendor-core/wasted-core-hours.js +7 -12
- package/public/assets/AutoscalingChurn-CP5OjN6v.js +0 -1
- package/public/assets/CacheUtilization-BjyawXL6.js +0 -1
- package/public/assets/CachingOpportunity-DV2ABG2G.js +0 -1
- package/public/assets/ConfigAudit-DMiBhAoG.js +0 -1
- package/public/assets/CoreUsageArea-CGYIgPnt.js +0 -1
- package/public/assets/Dashboard-D1_IrWRs.js +0 -12
- package/public/assets/ExecutorTimeline-DkaAGqQT.js +0 -1
- package/public/assets/Failures-Crngoicu.js +0 -1
- package/public/assets/GcPressure-CFXm4BnA.js +0 -1
- package/public/assets/IncompleteRun-BWEJTb13.js +0 -1
- package/public/assets/JobFailures-BmjxCA-h.js +0 -1
- package/public/assets/MemoryUtilization-Bu2uQJbd.js +0 -1
- package/public/assets/PlanExplorer-DKUwF0uz.js +0 -1
- package/public/assets/PlanGraphRoute-BjPSugIG.js +0 -1
- package/public/assets/ShuffleIO--Rur3neu.js +0 -1
- package/public/assets/Spill-DIMpt8c2.js +0 -1
- package/public/assets/TaskSkew-BDr1DbeI.js +0 -1
- package/public/assets/index-4id52G-A.js +0 -9
- package/public/assets/index-D9kwVYIO.css +0 -1
- package/public/assets/parser-worker-00O9WEQC.js +0 -65
- package/public/assets/plan-graph-vendor-vZQHG2EJ.js +0 -7
- package/public/assets/react-vendor-u4pyvC5Y.js +0 -9
- package/public/assets/useRecentFiles-46iBU9zJ.js +0 -5
- package/public/docs/assets/chunks/@localSearchIndexroot.DclgKtlT.js +0 -1
- package/public/docs/assets/chunks/theme.CoT6y5bf.js +0 -2
- package/public/docs/assets/contributor-guide_architecture_board-widgets.md.BtjoE_1k.js +0 -1
- package/public/docs/assets/contributor-guide_architecture_board-widgets.md.BtjoE_1k.lean.js +0 -1
- package/public/docs/assets/contributor-guide_architecture_detector-contract.md.DQyCHQNM.js +0 -1
- package/public/docs/assets/contributor-guide_architecture_detector-contract.md.DQyCHQNM.lean.js +0 -1
- package/public/docs/assets/contributor-guide_architecture_drill-down.md.BKfyDQck.js +0 -1
- package/public/docs/assets/contributor-guide_architecture_drill-down.md.BKfyDQck.lean.js +0 -1
- package/public/docs/assets/contributor-guide_architecture_state-and-history.md.DaqttKgQ.js +0 -1
- package/public/docs/assets/contributor-guide_architecture_state-and-history.md.DaqttKgQ.lean.js +0 -1
- package/public/docs/assets/contributor-guide_architecture_widget-rendering.md.Bk6Iyj9S.js +0 -1
- package/public/docs/assets/contributor-guide_architecture_widget-rendering.md.Bk6Iyj9S.lean.js +0 -1
- package/public/docs/assets/contributor-guide_contributing.md.C-lKs70I.js +0 -1
- package/public/docs/assets/contributor-guide_contributing.md.C-lKs70I.lean.js +0 -1
- package/public/docs/assets/user-guide_getting-started.md.BJdD7a7_.js +0 -3
- package/public/docs/assets/user-guide_getting-started.md.BJdD7a7_.lean.js +0 -1
- package/public/docs/assets/user-guide_understanding-findings.md.CK2WZ0Tf.js +0 -1
- package/public/vendor/spark-doc/anchors.json +0 -205
- package/public/vendor/spark-doc/index.html +0 -4202
- package/public/vendor/spark-doc/landing.html +0 -418
- package/public/vendor/spark-doc/meta.html +0 -970
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{a6 as u,j as e,a7 as p,a8 as f,a9 as m,aa as g,ab as v,ac as x,ad as h,ae as b,af as j,ag as S,ah as w,ai as z}from"./react-vendor-DA6opS-q.js";import{v as i,e as s,G as y}from"./index-CHjV2-jB.js";import{v as N}from"./useRecentFiles-BPGQ6XII.js";const P=u;function U({className:t,...a}){return e.jsx(m,{"data-slot":"select-value",className:s("flex flex-1 text-left",t),...a})}function $({className:t,size:a="default",children:n,...r}){return e.jsxs(p,{"data-slot":"select-trigger","data-size":a,className:s("flex w-fit cursor-pointer items-center justify-between gap-1.5 rounded-lg border border-input bg-transparent py-2 pr-2 pl-2.5 text-sm whitespace-nowrap transition-colors outline-none select-none focus-visible:border-ring focus-visible:ring-[3px] focus-visible:ring-ring/50 disabled:cursor-not-allowed disabled:opacity-50 aria-invalid:border-destructive aria-invalid:ring-[3px] aria-invalid:ring-destructive/20 data-placeholder:text-muted-foreground data-[size=default]:h-8 data-[size=sm]:h-7 data-[size=sm]:rounded-[min(var(--radius-md),10px)] *:data-[slot=select-value]:line-clamp-1 *:data-[slot=select-value]:flex *:data-[slot=select-value]:items-center *:data-[slot=select-value]:gap-1.5 dark:bg-input/30 dark:hover:bg-input/50 dark:aria-invalid:border-destructive/50 dark:aria-invalid:ring-destructive/40 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4",t),...r,children:[n,e.jsx(f,{render:e.jsx(i,{className:"pointer-events-none size-4 text-muted-foreground"})})]})}function A({className:t,children:a,side:n="bottom",sideOffset:r=4,align:l="center",alignOffset:d=0,alignItemWithTrigger:o=!0,...c}){return e.jsx(g,{children:e.jsx(v,{side:n,sideOffset:r,align:l,alignOffset:d,alignItemWithTrigger:o,className:"isolate z-50",children:e.jsxs(x,{"data-slot":"select-content","data-align-trigger":o,className:s("relative isolate z-50 max-h-(--available-height) w-(--anchor-width) min-w-36 origin-(--transform-origin) overflow-x-hidden overflow-y-auto rounded-lg bg-popover text-popover-foreground shadow-md ring-1 ring-foreground/10 duration-100 data-[align-trigger=true]:animate-none data-[side=bottom]:slide-in-from-top-2 data-[side=inline-end]:slide-in-from-left-2 data-[side=inline-start]:slide-in-from-right-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 data-open:animate-in data-open:fade-in-0 data-open:zoom-in-95 data-closed:animate-out data-closed:fade-out-0 data-closed:zoom-out-95",t),...c,children:[e.jsx(k,{}),e.jsx(h,{children:a}),e.jsx(_,{})]})})})}function B({className:t,children:a,...n}){return e.jsxs(b,{"data-slot":"select-item",className:s("relative flex w-full cursor-default items-center gap-1.5 rounded-md py-1 pr-8 pl-1.5 text-sm outline-hidden select-none focus:bg-accent focus:text-accent-foreground not-data-[variant=destructive]:focus:**:text-accent-foreground data-disabled:pointer-events-none data-disabled:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4 *:[span]:last:flex *:[span]:last:items-center *:[span]:last:gap-2",t),...n,children:[e.jsx(j,{className:"flex flex-1 shrink-0 gap-2 whitespace-nowrap",children:a}),e.jsx(S,{render:e.jsx("span",{className:"pointer-events-none absolute right-2 flex size-4 items-center justify-center"}),children:e.jsx(N,{className:"pointer-events-none"})})]})}function k({className:t,...a}){return e.jsx(w,{"data-slot":"select-scroll-up-button",className:s("top-0 z-10 flex w-full cursor-default items-center justify-center bg-popover py-1 [&_svg:not([class*='size-'])]:size-4",t),...a,children:e.jsx(y,{})})}function _({className:t,...a}){return e.jsx(z,{"data-slot":"select-scroll-down-button",className:s("bottom-0 z-10 flex w-full cursor-default items-center justify-center bg-popover py-1 [&_svg:not([class*='size-'])]:size-4",t),...a,children:e.jsx(i,{})})}export{P as S,$ as a,U as b,A as c,B as d};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{j as i,aj as p,r as n,a5 as u}from"./react-vendor-DA6opS-q.js";import{e as l}from"./index-CHjV2-jB.js";import{L as c}from"./useRecentFiles-BPGQ6XII.js";const d=n.createContext({size:"default",variant:"default",spacing:2,orientation:"horizontal"});function x({className:e,variant:r,size:o,spacing:t=2,orientation:g="horizontal",children:a,...s}){return i.jsx(p,{"data-slot":"toggle-group","data-variant":r,"data-size":o,"data-spacing":t,"data-orientation":g,style:{"--gap":t},className:l("group/toggle-group flex w-fit flex-row items-center gap-[--spacing(var(--gap))] rounded-lg data-[size=sm]:rounded-[min(var(--radius-md),10px)] data-vertical:flex-col data-vertical:items-stretch",e),...s,children:i.jsx(d.Provider,{value:{variant:r,size:o,spacing:t,orientation:g},children:a})})}function z({className:e,children:r,variant:o="default",size:t="default",...g}){const a=n.useContext(d);return i.jsx(u,{"data-slot":"toggle-group-item","data-variant":a.variant||o,"data-size":a.size||t,"data-spacing":a.spacing,className:l("shrink-0 group-data-[spacing=0]/toggle-group:rounded-none group-data-[spacing=0]/toggle-group:px-2 focus:z-10 focus-visible:z-10 group-data-[spacing=0]/toggle-group:has-data-[icon=inline-end]:pr-1.5 group-data-[spacing=0]/toggle-group:has-data-[icon=inline-start]:pl-1.5 group-data-horizontal/toggle-group:data-[spacing=0]:first:rounded-l-lg group-data-vertical/toggle-group:data-[spacing=0]:first:rounded-t-lg group-data-horizontal/toggle-group:data-[spacing=0]:last:rounded-r-lg group-data-vertical/toggle-group:data-[spacing=0]:last:rounded-b-lg group-data-horizontal/toggle-group:data-[spacing=0]:data-[variant=outline]:border-l-0 group-data-vertical/toggle-group:data-[spacing=0]:data-[variant=outline]:border-t-0 group-data-horizontal/toggle-group:data-[spacing=0]:data-[variant=outline]:first:border-l group-data-vertical/toggle-group:data-[spacing=0]:data-[variant=outline]:first:border-t",c({variant:a.variant||o,size:a.size||t}),e),...g,children:r})}export{x as T,z as a};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{r as g}from"./react-vendor-DA6opS-q.js";import{av as t}from"./index-CHjV2-jB.js";function M(s,i,n,a=null){const o=Math.ceil(s.length/t),r=Math.min(i,Math.max(0,o-1)),l=a==null||a===-1?r:Math.floor(a/t),e=s.slice(l*t,(l+1)*t);return g.useLayoutEffect(()=>{if(a==null||a===-1)return;const c=Math.floor(a/t);n(f=>f===c?f:c)},[a]),{totalPages:o,effectivePage:l,visible:e}}export{M as u};
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["./Skew-C3iOScTC.js","./react-vendor-DA6opS-q.js","./index-CHjV2-jB.js","./charts-vendor-Cf1-wzeH.js","./plan-graph-vendor-B96a-e4N.js","./plan-graph-vendor-BnuhLJ6X.css","./index-DMEtaP4u.css","./StageFindingGroup-CoVdEZYs.js","./WidgetLeadSummary-DRNRVvn7.js","./StageHeader-uDBLHgdg.js","./StagePill-CYCMdlIx.js","./DurationHistogram-CviQyPNM.js","./finding-anchor-4TmpXd7j.js","./ImpactEstimate-C6GzFOY9.js","./impact-sort-Cq6KOLqh.js","./useSortMode-BOPpfLhJ.js","./toggle-group-lbIXRG0W.js","./RowPagination-DypWbnic.js","./usePagedRows-CFoZrPr4.js","./PlanExplorer-xYFme_Rx.js","./StageShape-zs0mAjQJ.js","./TinyTask-6Zuovcn5.js","./ShuffleIO-Mi8HiVu-.js","./select-D5fK-za0.js","./PartitionSizing-CvMGfSVB.js","./Spill-BlLdatik.js","./EmptyState-v2ehFncc.js","./downsample-D8XmJk6i.js","./GcPressure-DINuhcno.js","./StageFailed-qtY7C7Yo.js","./TaskFailures-CSjO23Kg.js","./RetryWaste-JKRjOZ-J.js","./SlowHost-DKBg18v-.js","./StageSlowness-C7vg0u5Q.js","./Straggler-4BRGAQP4.js","./SpeculationWaste-DUNupw0_.js","./ColdStart-hOI-WOvm.js","./MemoryUtilization-Dlfj0e_f.js","./ExecutorUtilization-vHyFHgL6.js","./CachingOpportunity-CU70EWcF.js","./JobFailures-CYwPfUhR.js","./ConfigAudit-B4oAksZY.js","./DuplicatePlanSubtree-54RKsfI7.js","./SmallFiles-CCCB6AIu.js","./UnderBroadcast-CePjo0ZV.js","./OverBroadcast-BMu7Y8l9.js","./CacheUtilization-kTKZBzDA.js","./CoreUsageArea-D-dR3SQk.js","./inbox-DBFovbUX.js","./AutoscalingChurn-CFJkiqxW.js","./IncompleteRun-a1kuCnU6.js"])))=>i.map(i=>d[i]);
|
|
2
|
+
import{j as n,O as wt,Q as jt,U as kt,V as St,r as d,D as _t,o as Et,q as be,p as Tt,W as Ct,n as It,X as Nt,Y as Rt,Z as zt,_ as At,$ as Dt,a0 as Ot,S as Lt,a1 as Pt,a2 as $t,a3 as Mt,a4 as Ft,a5 as Bt}from"./react-vendor-DA6opS-q.js";import{c as L,e as y,a3 as ve,w as Vt,a4 as Ut,a5 as Wt,G as Ht,v as ye,a6 as qt,a1 as E,B as T,A as R,b as Gt,a7 as Kt,d as Jt,p as Yt,g as Qt,T as we,a8 as je,q as M,f as Xt,a9 as Zt,aa as f,ab as en,ac as tn,P as nn,ad as an,Z as rn,H as le,_ as sn,Q as on,J as ln,X as cn,L as C,n as $,ae as dn,af as un,ag as pn,ah as ke,t as Q,j as Se,u as _e,k as mn,ai as gn,aj as q,I as fn,E as Ee,r as O,ak as hn,al as xn,am as bn,s as vn,C as yn,an as wn,ao as jn,ap as kn,aq as Sn}from"./index-CHjV2-jB.js";import{R as _n,b as En,a as Tn,d as Cn,P as In,g as Nn,h as Rn,S as zn}from"./charts-vendor-Cf1-wzeH.js";const An=[["path",{d:"M20 6 9 17l-5-5",key:"1gmf2c"}]],Dn=L("check",An);const On=[["path",{d:"m9 18 6-6-6-6",key:"mthhwq"}]],Ln=L("chevron-right",On);const Pn=[["path",{d:"M12 15V3",key:"m9g1x1"}],["path",{d:"M21 15v4a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2v-4",key:"ih7n3h"}],["path",{d:"m7 10 5 5 5-5",key:"brsn70"}]],$n=L("download",Pn);const Mn=[["circle",{cx:"12",cy:"12",r:"1",key:"41hilf"}],["circle",{cx:"19",cy:"12",r:"1",key:"1wjl8i"}],["circle",{cx:"5",cy:"12",r:"1",key:"1pcz8c"}]],Fn=L("ellipsis",Mn);const Bn=[["path",{d:"M10 8h.01",key:"1r9ogq"}],["path",{d:"M12 12h.01",key:"1mp3jc"}],["path",{d:"M14 8h.01",key:"1primd"}],["path",{d:"M16 12h.01",key:"1l6xoz"}],["path",{d:"M18 8h.01",key:"emo2bl"}],["path",{d:"M6 8h.01",key:"x9i8wu"}],["path",{d:"M7 16h10",key:"wp8him"}],["path",{d:"M8 12h.01",key:"czm47f"}],["rect",{width:"20",height:"16",x:"2",y:"4",rx:"2",key:"18n3k1"}]],Vn=L("keyboard",Bn);function Un({className:e,orientation:t="horizontal",...a}){return n.jsx(wt,{"data-slot":"tabs","data-orientation":t,className:y("group/tabs flex gap-2 data-horizontal:flex-col",e),...a})}const Wn=ve("group/tabs-list inline-flex w-fit items-center justify-center rounded-lg p-[3px] text-muted-foreground group-data-horizontal/tabs:h-8 group-data-vertical/tabs:h-fit group-data-vertical/tabs:flex-col data-[variant=line]:rounded-none data-[variant=chrome]:w-full data-[variant=chrome]:items-end data-[variant=chrome]:justify-start data-[variant=chrome]:gap-1 data-[variant=chrome]:rounded-none data-[variant=chrome]:border-b data-[variant=chrome]:border-border data-[variant=chrome]:p-0 group-data-horizontal/tabs:data-[variant=chrome]:h-auto",{variants:{variant:{default:"bg-muted",line:"gap-1 bg-transparent",chrome:"bg-transparent"}},defaultVariants:{variant:"default"}});function Hn({className:e,variant:t="default",...a}){return n.jsx(jt,{"data-slot":"tabs-list","data-variant":t,className:y(Wn({variant:t}),e),...a})}function ce({className:e,...t}){return n.jsx(kt,{"data-slot":"tabs-trigger",className:y("relative inline-flex h-[calc(100%-1px)] flex-1 cursor-pointer items-center justify-center gap-1.5 rounded-md border border-transparent px-1.5 py-0.5 text-sm font-medium whitespace-nowrap text-foreground/60 transition-all group-data-vertical/tabs:w-full group-data-vertical/tabs:justify-start hover:text-foreground focus-visible:border-ring focus-visible:ring-[3px] focus-visible:ring-ring/50 focus-visible:outline-1 focus-visible:outline-ring disabled:pointer-events-none disabled:cursor-default disabled:opacity-50 has-data-[icon=inline-end]:pr-1 has-data-[icon=inline-start]:pl-1 aria-disabled:pointer-events-none aria-disabled:cursor-default aria-disabled:opacity-50 dark:text-muted-foreground dark:hover:text-foreground group-data-[variant=default]/tabs-list:data-active:shadow-sm group-data-[variant=line]/tabs-list:data-active:shadow-none [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4","group-data-[variant=line]/tabs-list:bg-transparent group-data-[variant=line]/tabs-list:data-active:bg-transparent dark:group-data-[variant=line]/tabs-list:data-active:border-transparent dark:group-data-[variant=line]/tabs-list:data-active:bg-transparent","data-active:bg-background data-active:text-foreground dark:data-active:border-input dark:data-active:bg-input/30 dark:data-active:text-foreground","after:absolute after:bg-foreground after:opacity-0 after:transition-opacity group-data-horizontal/tabs:after:inset-x-0 group-data-horizontal/tabs:after:bottom-[-5px] group-data-horizontal/tabs:after:h-0.5 group-data-vertical/tabs:after:inset-y-0 group-data-vertical/tabs:after:-right-1 group-data-vertical/tabs:after:w-0.5 group-data-[variant=line]/tabs-list:data-active:after:opacity-100","group-data-[variant=chrome]/tabs-list:h-auto group-data-[variant=chrome]/tabs-list:flex-none group-data-[variant=chrome]/tabs-list:gap-2 group-data-[variant=chrome]/tabs-list:rounded-t-md group-data-[variant=chrome]/tabs-list:rounded-b-none group-data-[variant=chrome]/tabs-list:border-x group-data-[variant=chrome]/tabs-list:border-t group-data-[variant=chrome]/tabs-list:border-transparent group-data-[variant=chrome]/tabs-list:px-4 group-data-[variant=chrome]/tabs-list:py-2 group-data-[variant=chrome]/tabs-list:text-sm group-data-[variant=chrome]/tabs-list:font-semibold group-data-[variant=chrome]/tabs-list:text-muted-foreground group-data-[variant=chrome]/tabs-list:hover:bg-muted/40 group-data-[variant=chrome]/tabs-list:hover:text-foreground","group-data-[variant=chrome]/tabs-list:data-active:-mb-px group-data-[variant=chrome]/tabs-list:data-active:border-border group-data-[variant=chrome]/tabs-list:data-active:bg-background group-data-[variant=chrome]/tabs-list:data-active:text-foreground group-data-[variant=chrome]/tabs-list:data-active:shadow-none dark:group-data-[variant=chrome]/tabs-list:data-active:border-border dark:group-data-[variant=chrome]/tabs-list:data-active:bg-background","before:absolute before:inset-x-3 before:top-0 before:h-0.5 before:rounded-full before:bg-accent before:opacity-0 before:transition-opacity group-data-[variant=chrome]/tabs-list:data-active:before:opacity-100","tap-target-comfortable tap-target-comfortable--sm",e),...t})}function de({className:e,...t}){return n.jsx(St,{"data-slot":"tabs-content",className:y("flex-1 text-sm outline-none",e),...t})}function ue(e){return String(e).replace(/\\/g,"\\\\").replace(/"/g,'\\"')}function qn(e,{title:t="plan"}={}){if(!e)return"";const a=[`digraph "${ue(t)}" {`," rankdir=BT;"," node [shape=box];"],r=new WeakMap,i=[];let l=0;return Vt(e,(c,s)=>{const o=`n${l++}`;r.set(c,o);const p=c.detail&&c.detail!==c.name?`${c.name}\\n${c.detail}`:c.name;a.push(` ${o} [label="${ue(p)}"];`),s&&i.push(` ${r.get(s)} -> ${o};`)},{dedupe:!0}),[...a,...i,"}"].join(`
|
|
3
|
+
`)}function Gn({title:e,children:t,defaultOpen:a=!1}){const[r,i]=d.useState(a);return n.jsxs(Ut,{open:r,onOpenChange:i,className:"space-y-2",children:[n.jsxs(Wt,{"aria-expanded":String(r),className:"tap-target-comfortable tap-target-comfortable--sm flex cursor-pointer items-center gap-2 bg-transparent text-left",children:[n.jsx("h3",{className:"font-heading text-sm font-medium",children:e}),r?n.jsx(Ht,{"aria-hidden":"true",className:"size-4 shrink-0 text-muted-foreground"}):n.jsx(ye,{"aria-hidden":"true",className:"size-4 shrink-0 text-muted-foreground"})]}),n.jsx(qt,{keepMounted:!0,children:t})]})}function Te({title:e,rows:t,children:a,collapsible:r=!1,defaultOpen:i=!1}){const l=t.filter(s=>!!s);if(l.length===0&&!a)return null;const c=n.jsx("div",{className:"grid min-w-0 grid-cols-[auto_1fr] gap-x-4 gap-y-1 text-sm",children:l.map(([s,o],p)=>n.jsxs(d.Fragment,{children:[n.jsx("span",{className:"text-muted-foreground",children:s}),n.jsx("span",{className:"break-words",children:o})]},p))});return r&&e?n.jsx(Gn,{title:e,defaultOpen:i,children:n.jsxs("div",{className:"space-y-2",children:[c,a]})}):n.jsxs("section",{className:"space-y-2",children:[e?n.jsx("h3",{className:"font-heading text-sm font-medium",children:e}):null,c,a]})}function Kn(e){const t=d.useId(),[a,r]=d.useState(!1);return e?{tooltipProps:{title:e,"aria-describedby":t,onFocus:()=>r(!0),onBlur:()=>r(!1)},srOnlyTooltip:n.jsxs(n.Fragment,{children:[n.jsx("span",{id:t,className:"sr-only",children:e}),a?n.jsx("span",{"aria-hidden":"true","data-testid":"visible-tooltip",className:"pointer-events-none absolute top-full left-0 z-50 mt-1 max-w-xs rounded-md border border-border bg-foreground px-2 py-1 text-xs font-normal whitespace-normal text-background shadow-md",children:e}):null]})}:{tooltipProps:{},srOnlyTooltip:null}}const Jn={executorMetrics:"Executor metrics",rddStorageSnapshots:"RDD storage snapshots",sqlPlan:"SQL plan",sparkConfiguration:"Spark configuration",taskCoreTime:"Task and core time",infrastructureContext:"Infrastructure context",sourceContext:"Source context",costContext:"Cost context"};function pe(e){return Jn[e]}const Yn={referenceOpen:!1,setReferenceOpen:()=>{},evidenceCardOpen:!0,setEvidenceCardOpen:()=>{},revealEvidence:()=>{},registerRow:()=>{}},Ce=d.createContext(null);function Ir({children:e}){const[t,a]=d.useState(!1),[r,i]=d.useState(!1),l=d.useRef(null),[c,s]=d.useState(0),o=d.useRef(new Map),p=d.useCallback((u,b)=>{b?o.current.set(u,b):o.current.delete(u)},[]),m=d.useCallback(u=>{l.current=u,a(!0),i(!0),s(b=>b+1)},[]);d.useLayoutEffect(()=>{const u=l.current;!u||c===0||queueMicrotask(()=>{o.current.get(u)?.focus()})},[c]);const x=d.useMemo(()=>({referenceOpen:t,setReferenceOpen:a,evidenceCardOpen:r,setEvidenceCardOpen:i,revealEvidence:m,registerRow:p}),[t,r,m,p]);return n.jsx(Ce.Provider,{value:x,children:e})}function X(){return d.useContext(Ce)??Yn}function Qn(){const{revealEvidence:e}=X();return{revealEvidence:e}}function Nr(){const{referenceOpen:e,setReferenceOpen:t,evidenceCardOpen:a,setEvidenceCardOpen:r}=X();return{referenceOpen:e,setReferenceOpen:t,evidenceCardOpen:a,setEvidenceCardOpen:r}}function Rr(){const{registerRow:e}=X();return e}function G({confidence:e,validationRequired:t,evidenceKey:a}){const{tooltipProps:r,srOnlyTooltip:i}=Kn(t),{revealEvidence:l}=Qn(),c=!!e&&e!=="high",s=!!a;return!c&&!s?null:n.jsxs("span",{className:"relative inline-flex h-6 shrink-0 items-center gap-1.5 whitespace-nowrap rounded-full border border-border bg-muted/60 px-2.5 text-xs font-medium text-muted-foreground outline-none focus-visible:ring-2 focus-visible:ring-ring/50",tabIndex:c?0:void 0,...c?r:{},children:[c?n.jsx("span",{"aria-hidden":"true",className:"inline-block size-2 shrink-0 rounded-full border border-dashed border-current"}):null,c?`${e} confidence`:null,c?i:null,c&&s?n.jsx("span",{"aria-hidden":"true",className:"opacity-60",children:"·"}):null,s?n.jsx("button",{type:"button","aria-label":`Evidence: ${pe(a)}`,className:"tap-target-comfortable tap-target-comfortable--sm inline-flex min-h-[22px] cursor-pointer items-center rounded-sm text-primary outline-none hover:underline underline-offset-2 focus-visible:ring-2 focus-visible:ring-ring/50",onClick:()=>l(a),children:pe(a)}):null]})}const Xn="Derived from best-effort plan-text parsing: cross-check against the Summary tab before acting.",Zn="Derived from best-effort plan-text parsing: cross-check against the Tree tab before acting.",ea="Derived from best-effort plan-text parsing: cross-check against the Tree tab or View plan graph before acting.";function ta(e){try{return Zt(e)}catch{return null}}function na(e){try{return Kt(e)}catch{return null}}function aa(e,t){try{return qn(e,{title:`stage-${t}`})||null}catch{return null}}function ra(e,t,a,r){if(!a||r==null)return null;try{return Gt(e,t,a,r)}catch{return null}}function ia(e,t){const a=t.stages.get(e);return(a?.sqlExecutionId!=null?t.sql.get(a.sqlExecutionId):null)?.planTree??null}function sa(e){switch(e.kind){case"scan":return[e.path?["Path",e.path]:null,e.format?["Format",e.format]:null,e.projectedColumns?.length?["Columns",e.projectedColumns.join(", ")]:null,e.pushedFilters?.length?["Filters",e.pushedFilters.join(", ")]:null];case"join":return[["Left keys",e.leftKeys?.length?e.leftKeys.join(", "):"(none)"],["Right keys",e.rightKeys?.length?e.rightKeys.join(", "):"(none)"]];case"agg":return[["Group by",e.groupByKeys?.length?e.groupByKeys.join(", "):"(none)"],["Functions",e.aggregations?.length?e.aggregations.join(", "):"(none)"]];case"exchange":return[e.partitioning?["Partitioning",e.partitioning]:null,e.keys?.length?["Keys",e.keys.join(", ")]:null,e.numPartitions?["Partitions",String(e.numPartitions)]:null];default:return[]}}function oa({rows:e}){const[t,a]=d.useState(!1);return n.jsxs("details",{className:"pt-1 pl-4",onToggle:r=>a(r.currentTarget.open),children:[n.jsx("summary",{className:"cursor-pointer text-xs text-muted-foreground",children:"full detail"}),t?n.jsx("div",{className:"pt-1",children:n.jsx(Te,{rows:e})}):null]})}function Ie({node:e,depth:t,durationMap:a}){const r=d.useRef(null),[i,l]=d.useState(t<=1);d.useEffect(()=>{r.current&&(r.current.open=t<=1)},[]);const c=Jt(e.name),s=e.detail??"",o=ta(e),p=o?sa(o):[],m=p.some(Boolean),x=o?.kind==="scan"?"":Yt(e.name,s),u=e.exchangeRole==="read"?e.children[0]:void 0,b=a?.get(u??e),w=(u??e).metrics??[],S=w.length>0?Qt(w):"",k=(u??e).children??[],j=k.length>0||w.length>0||m;return n.jsxs("details",{ref:r,"data-op":c,className:"rounded-md",onToggle:_=>l(_.currentTarget.open),children:[n.jsxs("summary",{className:`flex list-none flex-wrap items-center gap-2 rounded-md px-1.5 py-1 text-sm focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring [&::-webkit-details-marker]:hidden ${j?"cursor-pointer hover:bg-muted":"cursor-default"}`,children:[j?n.jsx(Ln,{"aria-hidden":"true",className:`size-3.5 shrink-0 text-muted-foreground transition-transform ${i?"rotate-90":""}`}):n.jsx("span",{className:"size-3.5 shrink-0"}),n.jsx("span",{className:"font-medium",children:e.name}),x?n.jsx("span",{title:s,className:"text-xs text-muted-foreground",children:x}):null,o?.warning?n.jsxs(n.Fragment,{children:[n.jsx(we,{type:"duplicatePlanSubtree",impactBand:"warning",className:je}),n.jsx("span",{className:"text-xs text-muted-foreground",children:o.warning.detail}),n.jsx(R,{children:n.jsx(G,{confidence:"low"})})]}):null,b!=null&&b>0?n.jsxs("span",{title:"Approximate wall-time attributed to this operator",className:"text-xs text-muted-foreground",children:["~",M(b)]}):null,S?n.jsx("span",{className:"text-xs text-muted-foreground",children:S}):null]}),w.length>0?n.jsx("div",{className:"flex flex-wrap gap-x-3 gap-y-1 pt-1 pl-6 text-xs text-muted-foreground",children:w.map((_,I)=>n.jsxs("span",{children:[_.name,": ",Xt(_)]},I))}):null,m?n.jsx(oa,{rows:p}):null,k.length>0?n.jsx("div",{className:"ml-[7px] space-y-1 border-l border-border/60 pt-1 pl-3.5",children:k.map((_,I)=>n.jsx(Ie,{node:_,depth:t+1,durationMap:a},I))}):null]})}function la(e){return`${e.path||"(unknown path)"} (${e.format})`}function ca(e){const t=e.leftKeys.length||e.rightKeys.length?` on ${e.leftKeys.join(", ")||"(none)"} / ${e.rightKeys.join(", ")||"(none)"}`:"";return`${e.joinType}${t}`}function da(e){const t=e.aggregations.join(", ")||"(none)";return e.groupByKeys.length?`${t} by ${e.groupByKeys.join(", ")}`:t}function ua(e){const t=new Map;for(const a of e)t.set(a.partitioning,(t.get(a.partitioning)??0)+1);return[...t.entries()].map(([a,r])=>`${a}×${r}`).join(", ")}function pa({summary:e,hasPlanGraph:t}){const{scans:a,joins:r,aggs:i,exchanges:l,warnings:c}=e,s=l.length>=4,o=s||c.length>0,p=t?ea:Zn;return n.jsx(Te,{rows:[a.length>0&&[`Sources (${a.length})`,a.map(la).join(", ")],r.length>0&&[`Joins (${r.length})`,r.map(ca).join("; ")],i.length>0&&[`Aggregations (${i.length})`,i.map(da).join("; ")],l.length>0&&[`Exchanges (${l.length})`,n.jsxs(n.Fragment,{children:[ua(l),s?n.jsxs(n.Fragment,{children:[" ",n.jsx("span",{className:"text-muted-foreground",children:"— consider whether some joins/aggregations could share a partitioning scheme to avoid redundant shuffles."})," ",n.jsx(R,{children:n.jsx(G,{confidence:"low"})})]}):null]})],c.length>0&&[`Warnings (${c.length})`,n.jsxs("span",{className:"flex flex-wrap items-center gap-1.5",children:[n.jsx(we,{type:"duplicatePlanSubtree",impactBand:"warning",className:je}),c.map(m=>m.detail).join("; "),n.jsx(R,{children:n.jsx(G,{confidence:"low"})})]})]],children:o?n.jsx(R,{children:n.jsx("p",{className:"text-xs text-muted-foreground",children:p})}):null})}function zr({stageId:e,appModel:t}){const a=E(p=>p.openPlanGraph),r=ia(e,t);if(!r)return null;const i=t.stages.get(e),l=i?.sqlExecutionId!=null?t.sql.get(i.sqlExecutionId):null,c=ra(r,t,l,i?.sqlExecutionId),s=na(r),o=aa(r,e);return n.jsxs(Un,{defaultValue:"tree",children:[n.jsxs("div",{className:"flex items-center justify-between gap-2",children:[n.jsxs(Hn,{"aria-label":"Plan view",children:[n.jsx(ce,{value:"tree",children:"Tree"}),n.jsx(ce,{value:"summary",children:"Summary"})]}),n.jsx("div",{className:"flex gap-2",children:o?n.jsx(T,{type:"button",variant:"ghost",size:"sm",onClick:()=>a(e),children:"View plan graph"}):null})]}),n.jsx(de,{value:"tree",children:n.jsxs("div",{className:"space-y-2 pt-3",children:[n.jsx(Ie,{node:r,depth:0,durationMap:c}),n.jsx(R,{children:n.jsx("p",{className:"text-xs text-muted-foreground",children:"Showing initial (pre-AQE) plan. Metrics reflect operators as planned; adaptive optimizations may have rewritten the actual execution."})}),s&&s.warnings.length>0?n.jsx(R,{children:n.jsx("p",{className:"text-xs text-muted-foreground",children:Xn})}):null]})}),n.jsx(de,{value:"summary",children:n.jsx("div",{className:"pt-3",children:s?n.jsx(pa,{summary:s,hasPlanGraph:o!=null}):n.jsx("p",{className:"text-xs text-muted-foreground",children:"Plan summary couldn’t be parsed."})})})]})}const g={incompleteRun:"incomplete run",skew:"task skew",stageShape:"stage shape",tinyTask:"tiny tasks",shuffle:"shuffle I/O",partitionSizing:"partition sizing",spill:"spill",gc:"GC pressure",stageFailed:"failed stage",failures:"failed tasks",retryWaste:"retry waste",slowHost:"slow executor host",stageSlowness:"slow stage",straggler:"straggling task",speculationWaste:"speculation waste",coldStart:"cold start",memoryUtilization:"memory utilization",utilization:"executor utilization",coreLocality:"core locality",cachingOpportunity:"caching opportunity",cacheUtilization:"cache utilization",jobFailureRate:"job failure rate",autoscalingChurn:"autoscaling churn",configAudit:"config audit",duplicatePlanSubtree:"duplicate plan subtree",smallFiles:"small files",broadcastSizing:"broadcast sizing",underBroadcast:"missed broadcast join",overBroadcast:"oversized broadcast join"};function ma(e){return e.replace(/\b\w/g,t=>t.toUpperCase())}const Ne=d.lazy(()=>f(()=>import("./Skew-C3iOScTC.js"),__vite__mapDeps([0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19]),import.meta.url).then(e=>({default:e.Skew}))),Re=d.lazy(()=>f(()=>import("./StageShape-zs0mAjQJ.js"),__vite__mapDeps([20,1,7,2,3,4,5,6,8,9,10,11,12,13,14,15,16,17,18,19]),import.meta.url).then(e=>({default:e.StageShape}))),ze=d.lazy(()=>f(()=>import("./TinyTask-6Zuovcn5.js"),__vite__mapDeps([21,1,7,2,3,4,5,6,8,9,10,11,12,13,14,15,16,17,18,19]),import.meta.url).then(e=>({default:e.TinyTask}))),Ae=d.lazy(()=>f(()=>import("./ShuffleIO-Mi8HiVu-.js"),__vite__mapDeps([22,1,23,2,3,4,5,6,8,10,9,12,13,14,15,16,17,18,19]),import.meta.url).then(e=>({default:e.ShuffleIO}))),De=d.lazy(()=>f(()=>import("./PartitionSizing-CvMGfSVB.js"),__vite__mapDeps([24,1,23,2,3,4,5,6,8,9,10,12,13,14,15,16,17,18,19]),import.meta.url).then(e=>({default:e.PartitionSizing}))),Oe=d.lazy(()=>f(()=>import("./Spill-BlLdatik.js"),__vite__mapDeps([25,1,2,3,4,5,6,26,10,8,12,13,14,15,16,18,17,27,19]),import.meta.url).then(e=>({default:e.Spill}))),Le=d.lazy(()=>f(()=>import("./GcPressure-DINuhcno.js"),__vite__mapDeps([28,1,2,3,4,5,6,8,9,10,13,17,18,12,14,15,16]),import.meta.url).then(e=>({default:e.GcPressure}))),Pe=d.lazy(()=>f(()=>import("./StageFailed-qtY7C7Yo.js"),__vite__mapDeps([29,1,2,3,4,5,6,10,8,12,13,14,15,16,17,18]),import.meta.url).then(e=>({default:e.StageFailed}))),$e=d.lazy(()=>f(()=>import("./TaskFailures-CSjO23Kg.js"),__vite__mapDeps([30,1,2,3,4,5,6,10,8,12,13,14,15,16,17,18]),import.meta.url).then(e=>({default:e.TaskFailures}))),Me=d.lazy(()=>f(()=>import("./RetryWaste-JKRjOZ-J.js"),__vite__mapDeps([31,1,2,3,4,5,6,10,8,12,13,14,15,16,17,18]),import.meta.url).then(e=>({default:e.RetryWaste}))),Fe=d.lazy(()=>f(()=>import("./SlowHost-DKBg18v-.js"),__vite__mapDeps([32,1,2,3,4,5,6,9,10,8,12,13,14,15,16,17,18]),import.meta.url).then(e=>({default:e.SlowHost}))),Be=d.lazy(()=>f(()=>import("./StageSlowness-C7vg0u5Q.js"),__vite__mapDeps([33,1,2,3,4,5,6,9,10,8,12,14,13,15,16,17,18]),import.meta.url).then(e=>({default:e.StageSlowness}))),Ve=d.lazy(()=>f(()=>import("./Straggler-4BRGAQP4.js"),__vite__mapDeps([34,1,2,3,4,5,6,9,10,8,12,13,14,15,16,17,18]),import.meta.url).then(e=>({default:e.Straggler}))),Ue=d.lazy(()=>f(()=>import("./SpeculationWaste-DUNupw0_.js"),__vite__mapDeps([35,1,2,3,4,5,6,9,10,8,12,14,13,15,16,17,18]),import.meta.url).then(e=>({default:e.SpeculationWaste}))),We=d.lazy(()=>f(()=>import("./ColdStart-hOI-WOvm.js"),__vite__mapDeps([36,1,2,3,4,5,6,8,12,14,13,15,16,17,18]),import.meta.url).then(e=>({default:e.ColdStart}))),He=d.lazy(()=>f(()=>import("./MemoryUtilization-Dlfj0e_f.js"),__vite__mapDeps([37,1,2,3,4,5,6,12,13,17,18,8]),import.meta.url).then(e=>({default:e.MemoryUtilization}))),qe=d.lazy(()=>f(()=>import("./ExecutorUtilization-vHyFHgL6.js"),__vite__mapDeps([38,1,2,3,4,5,6,13,17,12,18,8]),import.meta.url).then(e=>({default:e.ExecutorUtilization}))),Ge=d.lazy(()=>f(()=>import("./CachingOpportunity-CU70EWcF.js"),__vite__mapDeps([39,1,2,3,4,5,6,12,13,17,18,8]),import.meta.url).then(e=>({default:e.CachingOpportunity}))),Ke=d.lazy(()=>f(()=>import("./JobFailures-CYwPfUhR.js"),__vite__mapDeps([40,1,13,2,3,4,5,6,8]),import.meta.url).then(e=>({default:e.JobFailures}))),Je=d.lazy(()=>f(()=>import("./ConfigAudit-B4oAksZY.js"),__vite__mapDeps([41,1,2,3,4,5,6,12,13,17,18,8]),import.meta.url).then(e=>({default:e.ConfigAudit}))),Ye=d.lazy(()=>f(()=>import("./DuplicatePlanSubtree-54RKsfI7.js"),__vite__mapDeps([42,1,2,3,4,5,6,13,12,10,8,14,15,16,18,17]),import.meta.url).then(e=>({default:e.DuplicatePlanSubtree}))),Qe=d.lazy(()=>f(()=>import("./SmallFiles-CCCB6AIu.js"),__vite__mapDeps([43,1,2,3,4,5,6,13,12,10,8,14,15,16,18,17]),import.meta.url).then(e=>({default:e.SmallFiles}))),Xe=d.lazy(()=>f(()=>import("./UnderBroadcast-CePjo0ZV.js"),__vite__mapDeps([44,1,2,3,4,5,6,13,12,10,8,14,15,16,18,17]),import.meta.url).then(e=>({default:e.UnderBroadcast}))),Ze=d.lazy(()=>f(()=>import("./OverBroadcast-BMu7Y8l9.js"),__vite__mapDeps([45,1,2,3,4,5,6,13,12,10,8,14,15,16,18,17]),import.meta.url).then(e=>({default:e.OverBroadcast}))),et=d.lazy(()=>f(()=>import("./CacheUtilization-kTKZBzDA.js"),__vite__mapDeps([46,1,2,3,4,5,6,12,13,17,18,8]),import.meta.url).then(e=>({default:e.CacheUtilization}))),tt=d.lazy(()=>f(()=>import("./CoreUsageArea-D-dR3SQk.js"),__vite__mapDeps([47,1,2,3,4,5,6,27,26,13,17,18,8,48]),import.meta.url).then(e=>({default:e.CoreUsageArea}))),nt=d.lazy(()=>f(()=>import("./AutoscalingChurn-CFJkiqxW.js"),__vite__mapDeps([49,1,2,3,4,5,6,13,8,27]),import.meta.url).then(e=>({default:e.AutoscalingChurn}))),at=d.lazy(()=>f(()=>import("./IncompleteRun-a1kuCnU6.js"),__vite__mapDeps([50,1,13,2,3,4,5,6]),import.meta.url).then(e=>({default:e.IncompleteRun})));function h(e,t){e.displayName=t}h(Ne,"Skew");h(Re,"StageShape");h(ze,"TinyTask");h(Ae,"ShuffleIO");h(De,"PartitionSizing");h(Oe,"Spill");h(Le,"GcPressure");h(Pe,"StageFailed");h($e,"TaskFailures");h(Me,"RetryWaste");h(Fe,"SlowHost");h(Be,"StageSlowness");h(Ve,"Straggler");h(Ue,"SpeculationWaste");h(We,"ColdStart");h(He,"MemoryUtilization");h(qe,"ExecutorUtilization");h(Ge,"CachingOpportunity");h(Ke,"JobFailures");h(Je,"ConfigAudit");h(Ye,"DuplicatePlanSubtree");h(Qe,"SmallFiles");h(Xe,"UnderBroadcast");h(Ze,"OverBroadcast");h(et,"CacheUtilization");h(tt,"CoreUsageArea");h(nt,"AutoscalingChurn");h(at,"IncompleteRun");const F={incompleteRun:{component:at,region:"action",widgetId:"incomplete-run",widgetTitle:"Incomplete Run",findingLabel:g.incompleteRun,routeable:!0},skew:{component:Ne,region:"action",widgetId:"skew",widgetTitle:"Task Skew",findingLabel:g.skew,routeable:!0},stageShape:{component:Re,region:"action",widgetId:"stage-shape",widgetTitle:"Stage Shape",findingLabel:g.stageShape,routeable:!0},tinyTask:{component:ze,region:"action",widgetId:"tiny-task",widgetTitle:"Tiny Tasks",findingLabel:g.tinyTask,routeable:!0},shuffle:{component:Ae,region:"action",widgetId:"shuffle-io",widgetTitle:"Shuffle I/O",findingLabel:g.shuffle,routeable:!0},partitionSizing:{component:De,region:"action",widgetId:"partition-sizing",widgetTitle:"Partition Sizing",findingLabel:g.partitionSizing,routeable:!0},spill:{component:Oe,region:"action",widgetId:"spill",widgetTitle:"Spill",findingLabel:g.spill,routeable:!0},gc:{component:Le,region:"action",widgetId:"gc-pressure",widgetTitle:"GC Pressure",findingLabel:g.gc,routeable:!0},stageFailed:{component:Pe,region:"action",widgetId:"stage-failed",widgetTitle:"Failed Stages",findingLabel:g.stageFailed,routeable:!0},failures:{component:$e,region:"action",widgetId:"task-failures",widgetTitle:"Failed Tasks",findingLabel:g.failures,routeable:!0},retryWaste:{component:Me,region:"action",widgetId:"retry-waste",widgetTitle:"Retry Waste",findingLabel:g.retryWaste,routeable:!0},slowHost:{component:Fe,region:"action",widgetId:"slow-host",widgetTitle:"Slow Executor Host",findingLabel:g.slowHost,routeable:!0},stageSlowness:{component:Be,region:"action",widgetId:"stage-slowness",widgetTitle:"Slow Stage",findingLabel:g.stageSlowness,routeable:!0},straggler:{component:Ve,region:"action",widgetId:"straggler",widgetTitle:"Stragglers",findingLabel:g.straggler,routeable:!0},speculationWaste:{component:Ue,region:"action",widgetId:"speculation-waste",widgetTitle:"Speculation Waste",findingLabel:g.speculationWaste,routeable:!0},coldStart:{component:We,region:"action",widgetId:"cold-start",widgetTitle:"Cold Start",findingLabel:g.coldStart,routeable:!0},memoryUtilization:{component:He,region:"reference",widgetId:"memory-utilization",widgetTitle:"Memory Utilization",findingLabel:g.memoryUtilization,routeable:!0},utilization:{component:qe,region:"reference",widgetId:"executor-utilization",widgetTitle:"Executor Utilization",findingLabel:g.utilization,routeable:!0},coreLocality:{component:tt,region:"reference",widgetId:"core-usage-area",widgetTitle:"Core Usage by Locality",findingLabel:g.coreLocality,routeable:!0},cachingOpportunity:{component:Ge,region:"action",widgetId:"caching-opportunity",widgetTitle:"Caching Opportunities",findingLabel:g.cachingOpportunity,routeable:!0},cacheUtilization:{component:et,region:"reference",widgetId:"cache-utilization",widgetTitle:"Cache Storage",findingLabel:g.cacheUtilization,routeable:!0},jobFailureRate:{component:Ke,region:"action",widgetId:"job-failures",widgetTitle:"Job Failures",findingLabel:g.jobFailureRate,routeable:!0},autoscalingChurn:{component:nt,region:"action",widgetId:"autoscaling-churn",widgetTitle:"Autoscaling Churn",findingLabel:g.autoscalingChurn,routeable:!0},configAudit:{component:Je,region:"action",widgetId:"config-audit",widgetTitle:"Config Sanity",findingLabel:g.configAudit,routeable:!0},duplicatePlanSubtree:{component:Ye,region:"action",widgetId:"duplicate-plan-subtree",widgetTitle:"Redundant Plan Subtree",findingLabel:g.duplicatePlanSubtree,routeable:!0},smallFiles:{component:Qe,region:"action",widgetId:"small-files",widgetTitle:"Excessive Small Files",findingLabel:g.smallFiles,routeable:!0},underBroadcast:{component:Xe,region:"action",widgetId:"under-broadcast",widgetTitle:"Missed Broadcast Join",findingLabel:g.underBroadcast,routeable:!0},overBroadcast:{component:Ze,region:"action",widgetId:"over-broadcast",widgetTitle:"Oversized Broadcast Join",findingLabel:g.overBroadcast,routeable:!0}},me={action:0,reference:1},ga=["overBroadcast","underBroadcast"];function Ar(){const e=new Map;for(const t of en){const a=t.type==="broadcastSizing"?ga:[t.type];for(const r of a){const i=F[r];if(!i)continue;const l=e.get(r);(!l||t.order<l.order)&&e.set(r,{entry:i,type:r,order:t.order})}}return[...e.values()].sort((t,a)=>me[t.entry.region]-me[a.entry.region]||t.order-a.order).map(({entry:t,type:a})=>({component:t.component,region:t.region,widgetId:t.widgetId,widgetTitle:t.widgetTitle,findingLabel:t.findingLabel,type:a}))}const fa=new Set(["cacheUtilization","memoryUtilization","utilization"]);function ha(e){const t=F[e];return t!==void 0&&t.region==="reference"&&!fa.has(e)}function Dr(){return Object.entries(F).filter(([e])=>ha(e)).map(([,e])=>({component:e.component,widgetId:e.widgetId}))}function Z(e){switch(e.type){case"skew":return"Fix task skew";case"stageShape":switch(e.rule){case"lowParallelism":return"Increase parallelism";case"dataExplosion":return"Check for exploding join";case"taskStageSkew":return"Fix straggler task"}break;case"shuffle":return"Reduce shuffle size";case"partitionSizing":switch(e.rule){case"shufflePartitionSkew":return"Fix skewed partition";case"lowShuffleParallelism":return"Add shuffle partitions";case"maxPartitionTooBig":return"Repartition oversized data"}break;case"spill":return"Reduce spill";case"gc":return e.direction==="low"?"Right-size executor memory":"Reduce GC pressure";case"slowHost":return e.variant==="durationShare"?"Fix data locality":e.variant==="multiDim"?"Investigate degraded executor":"Check slow host";case"stageSlowness":return"Profile slow stage";case"stageFailed":return"Inspect stage failure";case"failures":return"Investigate task failures";case"straggler":return"Fix stragglers";case"speculationWaste":return"Tune speculation settings";case"retryWaste":return"Investigate retry cause";case"tinyTask":return"Coalesce small tasks";case"coldStart":return"Pre-warm cluster";case"utilization":return"Reduce cluster size";case"memoryUtilization":switch(e.variant){case"idleCores":return"Reduce idle cores";case"wasteModel":return"Right-size executor memory";case"memoryBand":return e.dataUnavailable?"Enable memory metrics":e.rule==="heapNearCapacity"?"Increase executor memory":"Reduce executor memory"}break;case"cacheUtilization":return"Increase cache memory";case"coreLocality":return"Fix data locality";case"autoscalingChurn":return"Reduce autoscaling churn";case"cachingOpportunity":return e.variant==="composite"?"Cache repeated result":"Cache shared table";case"jobFailureRate":return"Investigate failed jobs";case"configAudit":switch(e.property){case"spark.shuffle.service.enabled":return"Enable shuffle service";case"spark.dynamicAllocation.minExecutors":return"Fix autoscaling bounds";case"spark.dynamicAllocation.maxExecutors":return"Set max executors";case"spark.serializer":return"Switch to Kryo";case"spark.executor.memoryOverhead":return"Raise memory overhead"}break;case"duplicatePlanSubtree":return"Dedupe repeated subtree";case"smallFiles":return e.direction==="write"?"Coalesce output files":"Compact small files";case"underBroadcast":return"Use broadcast join";case"overBroadcast":return"Fix oversized broadcast"}}function Or(e){return Z(e)??F[e.type]?.findingLabel??e.type}const xa={light:"",dark:".dark"},ba={width:320,height:200},va=d.createContext(null);function ya({id:e,className:t,children:a,config:r,initialDimension:i=ba,...l}){const c=d.useId(),s=`chart-${e??c.replace(/:/g,"")}`;return n.jsx(va.Provider,{value:{config:r},children:n.jsxs("div",{"data-slot":"chart","data-chart":s,className:y("flex aspect-video justify-center text-xs [&_.recharts-cartesian-axis-tick_text]:fill-muted-foreground [&_.recharts-cartesian-grid_line[stroke='#ccc']]:stroke-border/50 [&_.recharts-curve.recharts-tooltip-cursor]:stroke-border [&_.recharts-dot[stroke='#fff']]:stroke-transparent [&_.recharts-layer]:outline-hidden [&_.recharts-polar-grid_[stroke='#ccc']]:stroke-border [&_.recharts-radial-bar-background-sector]:fill-muted [&_.recharts-rectangle.recharts-tooltip-cursor]:fill-muted [&_.recharts-reference-line_[stroke='#ccc']]:stroke-border [&_.recharts-sector]:outline-hidden [&_.recharts-sector[stroke='#fff']]:stroke-transparent [&_.recharts-surface]:outline-hidden",t),...l,children:[n.jsx(wa,{id:s,config:r}),n.jsx(_n,{initialDimension:i,children:a})]})})}const wa=({id:e,config:t})=>{const a=Object.entries(t).filter(([,r])=>r.theme??r.color);return a.length?n.jsx("style",{dangerouslySetInnerHTML:{__html:Object.entries(xa).map(([r,i])=>`
|
|
4
|
+
${i} [data-chart=${e}] {
|
|
5
|
+
${a.map(([l,c])=>{const s=c.theme?.[r]??c.color;return s?` --color-${l}: ${s};`:null}).join(`
|
|
6
|
+
`)}
|
|
7
|
+
}
|
|
8
|
+
`).join(`
|
|
9
|
+
`)}}):null};async function ja(e){if(navigator.clipboard?.writeText)try{await navigator.clipboard.writeText(e);return}catch{}const t=document.createElement("textarea");t.value=e,t.style.position="fixed",t.style.opacity="0",document.body.appendChild(t);try{if(t.select(),!document.execCommand("copy"))throw new Error("copy unavailable")}finally{t.remove()}}const rt="(prefers-reduced-motion: reduce)";function ka(e){if(typeof window>"u"||!window.matchMedia)return()=>{};const t=window.matchMedia(rt);return t.addEventListener("change",e),()=>t.removeEventListener("change",e)}function Sa(){return typeof window>"u"||!window.matchMedia?!1:window.matchMedia(rt).matches}function _a(){return d.useSyncExternalStore(ka,Sa,()=>!1)}const Lr={accent:"var(--color-accent)",warning:"var(--color-warning)",critical:"var(--color-critical)",info:"var(--color-info)",clean:"var(--color-clean)",muted:"var(--color-muted-foreground)"};function Ea(e,t){return[e,...t].map(a=>a.join(" ")).join(`
|
|
10
|
+
`)}function Ta({caption:e,columns:t,rows:a,align:r}){const[i,l]=d.useState(!1),[c,s]=d.useState(!1);async function o(){try{await ja(Ea(t,a)),s(!0),setTimeout(()=>s(!1),1500)}catch{}}return n.jsxs("div",{className:"flex flex-col gap-1",children:[n.jsxs("div",{className:"flex items-center gap-3",children:[n.jsx("button",{type:"button",className:"cursor-pointer text-muted-foreground text-xs underline","aria-expanded":i,onClick:()=>l(p=>!p),children:"▤ Table"}),n.jsx("button",{type:"button",className:"cursor-pointer text-muted-foreground text-xs underline",onClick:o,children:"⧉ Copy"}),n.jsx("span",{"aria-live":"polite",className:"text-xs text-muted-foreground",children:c?"Copied":""})]}),n.jsxs(nn,{className:i?void 0:"sr-only",children:[n.jsx(an,{className:"sr-only",children:e}),n.jsx(rn,{children:n.jsx(le,{children:t.map((p,m)=>n.jsx(sn,{className:r?.[m]==="right"?"text-right":void 0,children:p},p))})}),n.jsx(on,{children:a.map((p,m)=>n.jsx(le,{children:p.map((x,u)=>n.jsx(ln,{className:r?.[u]==="right"?"text-right":void 0,children:x},u))},m))})]})]})}const Ca=new Set([En,Tn,Cn,In,Nn,Rn,zn]);function it(e){if(!d.isValidElement(e))return e;const{children:t,isAnimationActive:a}=e.props,r=t==null?t:d.Children.map(t,it),i=Ca.has(e.type)&&a===void 0;return!i&&r===t?e:d.cloneElement(e,i?{isAnimationActive:!1}:{},...t==null?[]:[r])}function Pr({title:e,ariaLabel:t,height:a,children:r,table:i}){const c=_a()?it(r):r,s=tn();return n.jsxs("div",{className:"flex flex-col gap-1",children:[e?n.jsx("p",{className:"text-muted-foreground text-xs font-medium",children:e}):null,s?n.jsx(ya,{role:"img","aria-label":t,config:{},className:"aspect-auto w-full",style:{height:a},initialDimension:{width:320,height:a},children:c}):n.jsx("div",{style:{height:a},"aria-hidden":!0}),i?n.jsx(Ta,{...i}):null]})}function st({...e}){return n.jsx(_t,{"data-slot":"dialog",...e})}function Ia({...e}){return n.jsx(It,{"data-slot":"dialog-portal",...e})}function Na({className:e,...t}){return n.jsx(Nt,{"data-slot":"dialog-overlay",className:y("fixed inset-0 isolate z-50 bg-(--overlay-scrim) duration-100 supports-backdrop-filter:backdrop-blur-xs data-open:animate-in data-open:fade-in-0 data-closed:animate-out data-closed:fade-out-0 motion-reduce:animate-none",e),...t})}function ot({className:e,children:t,showCloseButton:a=!0,...r}){return n.jsxs(Ia,{children:[n.jsx(Na,{}),n.jsxs(Et,{"data-slot":"dialog-content",className:y("fixed top-1/2 left-1/2 z-50 grid w-full max-w-[calc(100%-2rem)] -translate-x-1/2 -translate-y-1/2 gap-4 rounded-xl bg-popover p-4 text-sm text-popover-foreground ring-1 ring-foreground/10 duration-100 outline-none sm:max-w-sm data-open:animate-in data-open:fade-in-0 data-open:zoom-in-95 data-closed:animate-out data-closed:fade-out-0 data-closed:zoom-out-95 motion-reduce:animate-none",e),...r,children:[t,a&&n.jsxs(be,{"data-slot":"dialog-close",render:n.jsx(T,{variant:"ghost",className:"absolute top-2 right-2",size:"icon-sm"}),children:[n.jsx(cn,{}),n.jsx("span",{className:"sr-only",children:"Close"})]})]})]})}function lt({className:e,...t}){return n.jsx("div",{"data-slot":"dialog-header",className:y("flex flex-col gap-2",e),...t})}function $r({className:e,showCloseButton:t=!1,children:a,...r}){return n.jsxs("div",{"data-slot":"dialog-footer",className:y("-mx-4 -mb-4 flex flex-col-reverse gap-2 rounded-b-xl border-t bg-muted/50 p-4 sm:flex-row sm:justify-end",e),...r,children:[a,t&&n.jsx(be,{render:n.jsx(T,{variant:"outline"}),children:"Close"})]})}function ct({className:e,...t}){return n.jsx(Tt,{"data-slot":"dialog-title",className:y("font-heading text-base leading-none font-medium",e),...t})}function dt({className:e,...t}){return n.jsx(Ct,{"data-slot":"dialog-description",className:y("text-sm text-muted-foreground *:[a]:underline *:[a]:underline-offset-3 *:[a]:hover:text-foreground",e),...t})}function ee({...e}){return n.jsx(Rt,{"data-slot":"dropdown-menu",...e})}function te({...e}){return n.jsx(zt,{"data-slot":"dropdown-menu-trigger",...e})}function ne({align:e="start",alignOffset:t=0,side:a="bottom",sideOffset:r=4,className:i,...l}){return n.jsx(At,{children:n.jsx(Dt,{className:"isolate z-50 outline-none",align:e,alignOffset:t,side:a,sideOffset:r,children:n.jsx(Ot,{"data-slot":"dropdown-menu-content",className:y("z-50 max-h-(--available-height) w-(--anchor-width) min-w-32 origin-(--transform-origin) overflow-x-hidden overflow-y-auto rounded-lg bg-popover p-1 text-popover-foreground shadow-md ring-1 ring-foreground/10 duration-100 outline-none data-[side=bottom]:slide-in-from-top-2 data-[side=inline-end]:slide-in-from-left-2 data-[side=inline-start]:slide-in-from-right-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 data-open:animate-in data-open:fade-in-0 data-open:zoom-in-95 data-closed:animate-out data-closed:overflow-hidden data-closed:fade-out-0 data-closed:zoom-out-95 motion-reduce:animate-none",i),...l})})})}function z({className:e,inset:t,variant:a="default",...r}){return n.jsx(Pt,{"data-slot":"dropdown-menu-item","data-inset":t,"data-variant":a,className:y("group/dropdown-menu-item relative flex cursor-default items-center gap-1.5 rounded-md px-1.5 py-1 text-sm outline-hidden select-none focus:bg-accent focus:text-accent-foreground not-data-[variant=destructive]:focus:**:text-accent-foreground data-inset:pl-7 data-[variant=destructive]:text-destructive data-[variant=destructive]:focus:bg-destructive/10 data-[variant=destructive]:focus:text-destructive dark:data-[variant=destructive]:focus:bg-destructive/20 data-disabled:pointer-events-none data-disabled:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4 data-[variant=destructive]:*:[svg]:text-destructive",e),...r})}function ut({className:e,children:t,checked:a,inset:r,...i}){return n.jsxs($t,{"data-slot":"dropdown-menu-checkbox-item","data-inset":r,className:y("relative flex cursor-default items-center gap-1.5 rounded-md py-1 pr-8 pl-1.5 text-sm outline-hidden select-none focus:bg-accent focus:text-accent-foreground focus:**:text-accent-foreground data-inset:pl-7 data-disabled:pointer-events-none data-disabled:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4",e),checked:a,...i,children:[n.jsx("span",{className:"pointer-events-none absolute right-2 flex items-center justify-center","data-slot":"dropdown-menu-checkbox-item-indicator",children:n.jsx(Mt,{children:n.jsx(Dn,{})})}),t]})}function ae({className:e,...t}){return n.jsx(Lt,{"data-slot":"dropdown-menu-separator",className:y("-mx-1 my-1 h-px bg-border",e),...t})}const Ra=[/\bip(?:-\d{1,3}){4}(?:\.[a-z0-9][a-z0-9-]*)*/gi,/\b(?:\d{1,3}\.){3}\d{1,3}\b/g],za=[/\bapplication_\d{10,}_\d+\b/g];function K(e,t){if(typeof e=="string"){for(const{patterns:a,out:r}of t)for(const i of a){const l=e.match(i);if(l)for(const c of l)r.add(c)}return}if(Array.isArray(e)){for(const a of e)K(a,t);return}if(e&&typeof e=="object")for(const a of Object.values(e))K(a,t)}function J(e,t){if(Array.isArray(e)){for(const a of e)J(a,t);return}if(e&&typeof e=="object")for(const[a,r]of Object.entries(e))a==="host"&&typeof r=="string"&&r.length>0?t.add(r):J(r,t)}function Aa(e){const t=new Set,a=new Set,r=e?.summary?.app?.id;return typeof r=="string"&&r.length>0&&t.add(r),J(e?.findings,a),K(e,[{patterns:Ra,out:a},{patterns:za,out:t}]),{appIds:t,hosts:a}}function ge(e,t){const a=new Map;return[...e].sort((r,i)=>r.localeCompare(i,"en",{numeric:!0})).forEach((r,i)=>a.set(r,`${t}-${i+1}`)),a}function Y(e,t){if(typeof e=="string"){let a=e;for(const[r,i]of t)a=a.split(r).join(i);return a}if(Array.isArray(e))return e.map(a=>Y(a,t));if(e&&typeof e=="object"){const a={};for(const[r,i]of Object.entries(e))a[r]=Y(i,t);return a}return e}function Da(e,t){const a=[...t.appIds?ge(t.appIds,"app"):[],...ge(t.hosts,"host")];return a.sort((r,i)=>i[0].length-r[0].length),Y(e,a)}function Oa(e){const{appIds:t,hosts:a}=Aa(e);return Da(e,{appIds:t,hosts:a})}function V(e){return e==null?!1:(Array.isArray(e)?e.length:e.size)>0}function U(e,t){return Array.isArray(e)?e.includes(t):e.has(t)}function La(e,t){if(V(t.impactBand)&&!U(t.impactBand,e.impactBand)||V(t.type)&&!U(t.type,e.type))return!1;const{stageId:a}=t;if(typeof a=="number"){if(e.stageId!==a)return!1}else if(V(a)&&(e.stageId==null||!U(a,e.stageId)))return!1;return!0}function Pa(e,t){const a=[];for(const r of e){const i=t.get(r);i&&(i.submittedAt==null||i.completedAt==null||a.push([i.submittedAt,i.completedAt]))}return dn(a).reduce((r,[i,l])=>r+(l-i),0)}function $a(e){const t=new Map;for(const a of e){const r=t.get(a.type)??[];r.push(a),t.set(a.type,r)}return t}function Ma(e){return e.stageIds?e.stageIds:e.stageId!=null?[e.stageId]:[]}function Fa(e,t,a){const r=[...new Set(t.flatMap(Ma))],i=t.reduce((c,s)=>c+(s.impactEstimate?.wallClock?.high??0),0),l=r.length>0?Math.min(i,Pa(r,a)):i;return{kind:"time",type:e,findingCount:t.length,stageCount:r.length,recoverableMsHigh:l,findings:t}}function Ba(e,t){const a=t[0].impactEstimate.rawWaste.unit,r=t.reduce((i,l)=>i+(l.impactEstimate?.rawWaste?.value??0),0);return{kind:"resource",type:e,findingCount:t.length,unit:a,total:r,findings:t}}function Va(e,t){const a={};for(const r of t)a[r.impactBand]=(a[r.impactBand]??0)+1;return{kind:"count",type:e,findingCount:t.length,byImpactBand:a,findings:t}}const fe={time:0,resource:1,count:2};function Ua(e,t){const a=[];for(const[r,i]of $a(e)){const l=i.filter(o=>o.impactEstimate?.wallClock!=null),c=i.filter(o=>o.impactEstimate?.wallClock==null&&o.impactEstimate?.rawWaste!=null),s=i.filter(o=>o.impactEstimate?.wallClock==null&&o.impactEstimate?.rawWaste==null);if(l.length>0&&a.push(Fa(r,l,t)),c.length>0){const o=new Map;for(const p of c){const m=p.impactEstimate.rawWaste.unit,x=o.get(m)??[];x.push(p),o.set(m,x)}for(const p of o.values())a.push(Ba(r,p))}s.length>0&&a.push(Va(r,s))}return a.sort((r,i)=>{const l=fe[r.kind]-fe[i.kind];if(l!==0)return l;if(r.kind==="time"&&i.kind==="time")return i.recoverableMsHigh-r.recoverableMsHigh;const c=C[$(r.findings)??"info"]??9,s=C[$(i.findings)??"info"]??9;return c-s})}function Wa(e){return!(e.type==="memoryUtilization"&&e.variant==="memoryBand"&&e.dataUnavailable)}function Ha(e){return e.type==="incompleteRun"?!1:Wa(e)}const pt=0,qa=1,Ga=2;function W(e){const t=e.impactEstimate;return t?.wallClock?pt:t?.rawWaste?qa:Ga}function Ka(e){return[...e].sort((t,a)=>{const r=W(t)-W(a);return r!==0?r:W(t)===pt?a.impactEstimate.wallClock.high-t.impactEstimate.wallClock.high:(C[t.impactBand]??9)-(C[a.impactBand]??9)})}const Ja={spill:"single-task disk spill above 1 GiB",shuffle:"shuffle read above the configured minimum byte threshold",skew:"task duration skew above the configured ratio",gc:"JVM GC time share above the configured ratio",slowHost:"a host running 2x+ slower than its peers by mean task duration (per-executor byte/time dimensions use a separate, narrower ratio ladder starting at 1.33x; only those can reach critical on ratio alone)",stageSlowness:"a stage running far longer than its peers, not attributable to a single slow host",straggler:"one or more tasks finishing far after the rest of their stage",speculationWaste:"speculative task attempts that completed after the original",tinyTask:"median task duration below the configured floor",partitionSizing:"partition byte size outside the configured target range",stageShape:"low parallelism, data explosion, or task-count skew relative to core count",stageFailed:"a stage that failed outright",failures:"task failures above the configured rate",retryWaste:"retried task attempts consuming executor time",coldStart:"executor startup time above the configured floor",incompleteRun:"an event log missing its terminal ApplicationEnd/job-completion event",utilization:"core occupancy below the configured floor across the run",memoryUtilization:"executor heap usage outside the configured band",cacheUtilization:"cached partitions evicted or spilled to disk",coreLocality:"task placement missing data-local core assignment",cachingOpportunity:"a dataset re-read from source multiple times with no cache/persist",jobFailureRate:"job failure rate above the configured threshold",autoscalingChurn:"executor add/remove churn above the configured rate",configAudit:"a Spark conf value outside the recommended range",duplicatePlanSubtree:"the same physical plan subtree executed more than once",smallFiles:"output files below the configured target size",overBroadcast:"a broadcast join above the configured size ceiling",underBroadcast:"a join below the configured size floor that skipped broadcast",broadcastSizing:"a broadcast join outside the configured size range in either direction"};function Ya(e){return Ja[e]??"criteria not met"}const Qa=3,Xa=new Set(["id","type","name","impactBand","stageId","metric","value","recommendation","detectorVersion","confidence","validationRequired","docAnchor","impactEstimate","actionLabel"]),Za=new Set(["planNodeIds"]);function er(e){const t={};for(const r of Object.keys(e).sort())!Xa.has(r)&&!Za.has(r)&&(t[r]=e[r]);const a={id:e.id??null,type:e.type,name:ma(g[e.type]??e.type),tag:Q(e.type),impactBand:e.impactBand,stageId:e.stageId??null,metric:e.metric??null,value:e.value??null,recommendation:e.recommendation??null,detectorVersion:e.detectorVersion??1,evidence:t,actionLabel:Z(e)??e.type};return e.confidence!=null&&(a.confidence=e.confidence),e.validationRequired!=null&&(a.validationRequired=e.validationRequired),e.docAnchor!=null&&(a.docAnchor=e.docAnchor),e.impactEstimate!=null&&(a.impactEstimate=e.impactEstimate),a}function tr(e){return[...e].sort((t,a)=>{const r=(C[t.impactBand]??9)-(C[a.impactBand]??9);if(r!==0)return r;if(t.type!==a.type)return t.type<a.type?-1:1;const i=t.stageId??-1,l=a.stageId??-1;return i!==l?i-l:(t.id??"")<(a.id??"")?-1:(t.id??"")>(a.id??"")?1:0})}function nr(e,t){const a=e.filter(Ha);return Ua(a,t).map(i=>{const l=Ka(i.findings),c=l[0],s=l.map(p=>p.id).filter(p=>p!=null),o={type:i.type,tag:Q(i.type),actionLabel:Z(c)??c.type,findingCount:i.findingCount,findingIds:s};return i.kind==="time"?{...o,kind:"time",stageCount:i.stageCount,recoverableMsHigh:i.recoverableMsHigh,impact:mt(i.recoverableMsHigh,i.recoverableMsHigh)}:i.kind==="resource"?{...o,kind:"resource",unit:i.unit,total:i.total,impact:gt({value:i.total,unit:i.unit})}:{...o,kind:"count",byImpactBand:i.byImpactBand,impact:null}})}function ar(e){const t=new Set(e.map(i=>i.type)),a=new Set,r=[];for(const i of ke())t.has(i.type)||a.has(i.type)||(a.add(i.type),r.push({type:i.type,tag:Q(i.type),thresholdSummary:Ya(i.type)}));return r}const he=new WeakMap;function rr(e){const t=he.get(e);if(t)return t;const{app:a,stages:r,executors:i,sql:l,jobs:c,runAggregates:s,evidenceAvailability:o}=e,p=un(a,r,i?.added??[],i?.removed??[],c??new Map,l??new Map,s??null),m=pn(a),x=[...p,...m],u=tr(x.map(er)),b=nr(x,r??new Map),w=ar(x),S={critical:0,warning:0,info:0};for(const j of u)j.impactBand in S&&(S[j.impactBand]+=1);const k={schemaVersion:Qa,summary:{app:{id:a?.id??null,name:a?.name??null,sparkVersion:a?.sparkVersion??null},stageCount:r?.size??0,jobCount:c?.size??0,sqlExecutionCount:l?.size??0,findingCount:u.length,impactBandCounts:S},evidenceAvailability:o??null,detectors:ke(),findings:u,recommendations:b,cleanChecks:w};return he.set(e,k),k}function ir(e,t){return typeof t=="number"&&/bytes$/i.test(e)?Se(t):t!==null&&typeof t=="object"?JSON.stringify(t):String(t)}function mt(e,t){const a=r=>r===0?"0s":M(r);return e===t?`Est. ${a(t)}`:`Est. ${a(e)}-${a(t)}`}function gt(e){const t=Math.round(e.value*10)/10;switch(e.unit){case"bytes":return Se(e.value);case"ms":return M(e.value);case"mbSeconds":return`${t} MB-s`;case"coreHours":return`${t.toFixed(1)} core-h`;case"coreMs":return`${t} core-ms`;default:return String(e.value)}}function sr(e){const t=e.wallClock?mt(e.wallClock.low,e.wallClock.high):null,a=e.rawWaste?gt(e.rawWaste):null;return!t&&!a?null:`${[t,a].filter(i=>i!=null).join(" · ")} (estimateMethod: ${e.estimateMethod})`}function or(e){const{summary:t,findings:a,evidenceAvailability:r,detectors:i,recommendations:l,cleanChecks:c}=e,s=[];s.push("# Spark run evidence report"),s.push(""),s.push(`- Application: ${t.app.name??"(unknown)"} (${t.app.id??"n/a"})`),s.push(`- Spark version: ${t.app.sparkVersion??"n/a"}`),s.push(`- Stages: ${t.stageCount} · Jobs: ${t.jobCount} · SQL executions: ${t.sqlExecutionCount}`),s.push(`- Findings: ${t.findingCount} (critical ${t.impactBandCounts.critical}, warning ${t.impactBandCounts.warning}, info ${t.impactBandCounts.info})`),s.push(""),l.length>0&&(s.push(`## Fix these first (${l.length})`),s.push(""),l.forEach((o,p)=>{s.push(`${p+1}. [${o.tag}] ${o.actionLabel}`);const m=o.kind==="count"?Object.entries(o.byImpactBand??{}).map(([x,u])=>`${u} ${x}`).join(", "):o.impact;s.push(` - ${m} · ×${o.findingCount} finding(s)`)}),s.push("")),s.push(`## Findings (${a.length})`),s.push("");for(const o of a){const p=o.stageId!=null?` (stage ${o.stageId})`:"";s.push(`### ${o.name} · ${o.impactBand}${p}`),s.push(`- action: ${o.actionLabel}`),o.metric!=null&&s.push(`- ${o.metric}: ${o.value}`),o.recommendation&&s.push(`- ${o.recommendation}`),o.confidence&&s.push(`- confidence: ${o.confidence}`),o.validationRequired&&s.push(`- validation: ${o.validationRequired}`);const m=o.impactEstimate?sr(o.impactEstimate):null;m&&s.push(`- impact: ${m}`),s.push(`- detector version: ${o.detectorVersion}`);const x=Object.entries(o.evidence??{}).sort(([u],[b])=>u<b?-1:u>b?1:0);if(x.length){s.push("- evidence:");for(const[u,b]of x)s.push(` - ${u}: ${ir(u,b)}`)}s.push("")}if(r?.entries?.length){s.push("## Evidence availability"),s.push("");for(const o of r.entries)s.push(`- ${o.key}: ${o.state} (${o.summary})`);s.push("")}if(Array.isArray(i)&&i.length){s.push("## Detectors"),s.push("");for(const o of i)s.push(`- ${o.type} (v${o.version}, ${o.scope}), thresholds: ${JSON.stringify(o.thresholds)}`);s.push("")}if(c.length>0){s.push(`## Clean checks (${c.length})`),s.push("");for(const o of c)s.push(`- [${o.tag}] ${o.type}: ${o.thresholdSummary}`);s.push("")}return s.join(`
|
|
11
|
+
`)}function lr(e,t){return La(e,t)}function cr(e,{redact:t=!1,markdown:a=!0,findingsFilter:r}={}){let i=rr(e);return t&&(i=Oa(i)),r&&(i={...i,findings:i.findings.filter(c=>lr(c,r))}),{markdown:a?or(i):"",json:i}}function xe(e,t,a){const r=new Blob([e],{type:a}),i=URL.createObjectURL(r),l=document.createElement("a");l.href=i,l.download=t,document.body.appendChild(l),l.click(),l.remove(),URL.revokeObjectURL(i)}function dr(e,t,a){return`evidence-${String(e??"report").replace(/[^\w.-]/g,"_")}${a?"-redacted":""}.${t==="json"?"json":"md"}`}function ft(){const e=E(i=>i.appModel),[t,a]=d.useState(!1);return{redact:t,setRedact:a,download:i=>{const{markdown:l,json:c}=cr(e,{redact:t}),s=c.summary?.app?.id??null,o=dr(s,i,t);i==="json"?xe(`${JSON.stringify(c,null,2)}
|
|
12
|
+
`,o,"application/json"):xe(`${l}
|
|
13
|
+
`,o,"text/markdown")}}}function ht({redact:e,setRedact:t,download:a}){return n.jsxs(n.Fragment,{children:[n.jsx(ut,{checked:e,onClick:r=>r.preventDefault(),onCheckedChange:r=>t(!!r),children:"Redact identifiers"}),n.jsx(ae,{}),n.jsx(z,{onClick:()=>a("markdown"),children:"Download Markdown"}),n.jsx(z,{onClick:()=>a("json"),children:"Download JSON"})]})}function ur(){const e=ft();return n.jsxs(ee,{children:[n.jsxs(te,{render:n.jsx(T,{variant:"ghost",size:"sm"}),children:[n.jsx($n,{"aria-hidden":"true"}),"Export evidence"]}),n.jsx(ne,{align:"end",children:n.jsx(ht,{...e})})]})}function pr({activeName:e,activeSub:t,activeId:a=null,entries:r,onPick:i,onRemove:l,onOpenNew:c}){const{pickRecent:s}=_e(),o=d.useCallback(p=>{if(i){i(p);return}s(p,r.find(m=>m.id===p)?.handle)},[i,r,s]);return n.jsxs(ee,{children:[n.jsxs(te,{className:y(mn({variant:"ghost"}),"h-auto min-w-0 shrink max-w-40 flex-col items-start justify-center gap-0 py-1 sm:max-w-80"),children:[n.jsxs("span",{className:"flex w-full min-w-0 items-center gap-1.5",children:[n.jsx("span",{className:"min-w-0 truncate font-heading text-sm font-semibold",children:e??"No file"}),n.jsx(ye,{"aria-hidden":"true",className:"ml-auto shrink-0 opacity-60"})]}),t?n.jsx("span",{className:"w-full min-w-0 truncate text-left text-xs text-muted-foreground",children:t}):null]}),n.jsxs(ne,{className:"w-72 p-2",children:[n.jsx(gn,{entries:r,activeId:a,onPick:o,onRemove:l}),n.jsx(ae,{}),n.jsx(z,{onClick:()=>c?.(),children:"Load new file…"})]})]})}function mr({className:e,type:t,...a}){return n.jsx(Ft,{type:t,"data-slot":"input",className:y("h-8 w-full min-w-0 rounded-lg border border-input bg-transparent px-2.5 py-1 text-base transition-colors outline-none file:inline-flex file:h-6 file:border-0 file:bg-transparent file:text-sm file:font-medium file:text-foreground placeholder:text-muted-foreground focus-visible:border-ring focus-visible:ring-[3px] focus-visible:ring-ring/50 disabled:pointer-events-none disabled:cursor-not-allowed disabled:bg-input/50 disabled:opacity-50 aria-invalid:border-destructive aria-invalid:ring-[3px] aria-invalid:ring-destructive/20 md:text-sm dark:bg-input/30 dark:disabled:bg-input/80 dark:aria-invalid:border-destructive/50 dark:aria-invalid:ring-destructive/40",e),...a})}function gr({open:e,entries:t,onSelect:a,onOpenChange:r}){const[i,l]=d.useState(""),c=d.useRef(null);d.useEffect(()=>{e||l("")},[e]);const s=i.trim().toLowerCase(),o=s?t.filter(u=>u.label.toLowerCase().includes(s)||u.secondary.toLowerCase().includes(s)||String(u.executionId).includes(s)):t;function p(u){(c.current?.querySelectorAll("button")??[])[u]?.focus()}function m(u,b){u.key==="ArrowDown"?(u.preventDefault(),p(b+1)):u.key==="ArrowUp"&&(u.preventDefault(),p(b-1))}function x(u){u.key==="Enter"?o.length===1&&a(o[0].stageId):u.key==="ArrowDown"&&(u.preventDefault(),p(0))}return n.jsx(st,{open:e,onOpenChange:r,children:n.jsxs(ot,{className:"flex max-h-[85vh] flex-col sm:max-w-xl",children:[n.jsxs(lt,{children:[n.jsxs(ct,{className:"flex items-center gap-1.5",children:[n.jsx(q,{"aria-hidden":"true",className:"size-4 text-plan-aggregate"}),"Open plan graph"]}),n.jsx(dt,{children:"Choose which SQL execution's plan to open."})]}),n.jsx(mr,{autoFocus:!0,placeholder:"Filter executions…",value:i,onChange:u=>l(u.target.value),onKeyDown:x}),o.length===0?n.jsx("p",{className:"px-1.5 py-1 text-sm text-muted-foreground",children:"No matching executions"}):n.jsx("ul",{ref:c,className:"flex min-h-0 flex-1 flex-col gap-0.5 overflow-y-auto",children:o.map((u,b)=>n.jsx("li",{children:n.jsxs("button",{type:"button",className:"flex w-full min-w-0 cursor-pointer flex-col items-start gap-0.5 rounded-md px-1.5 py-1 text-left hover:bg-muted",onClick:()=>a(u.stageId),onKeyDown:w=>m(w,b),children:[n.jsxs("span",{className:"flex w-full min-w-0 items-center gap-1.5",children:[u.impactBand!=null&&n.jsxs(n.Fragment,{children:[n.jsx(fn,{impactBand:u.impactBand}),n.jsxs("span",{className:"shrink-0 text-xs font-normal text-muted-foreground",children:[u.findingCount," finding",u.findingCount===1?"":"s"]})]}),n.jsx("span",{className:"truncate text-sm font-medium",children:u.secondary})]}),n.jsx("span",{className:"w-full truncate text-xs text-muted-foreground",children:u.label})]})},u.executionId))})]})})}const fr="0.24.1",hr={version:fr};function xr({keys:e}){return n.jsx("span",{className:"flex shrink-0 items-center gap-1",children:e.map((t,a)=>n.jsxs("span",{className:"flex items-center gap-1",children:[a>0?n.jsx("span",{className:"text-xs text-muted-foreground",children:"or"}):null,n.jsx("kbd",{className:"rounded-md border border-border bg-muted px-1.5 py-0.5 font-mono text-xs font-medium text-foreground",children:t})]},t))})}function N({keys:e,children:t}){return n.jsxs("div",{className:"flex items-center justify-between gap-4 py-1.5",children:[n.jsx("span",{className:"text-sm text-foreground",children:t}),n.jsx(xr,{keys:e})]})}function H({title:e,children:t}){return n.jsxs("div",{children:[n.jsx("h3",{className:"mb-1 text-xs font-semibold tracking-wide text-muted-foreground uppercase",children:e}),n.jsx("div",{className:"divide-y divide-border/60",children:t})]})}function br({open:e,onOpenChange:t}){return n.jsx(st,{open:e,onOpenChange:t,children:n.jsxs(ot,{className:"sm:max-w-md",children:[n.jsxs(lt,{children:[n.jsx(ct,{children:"Keyboard shortcuts"}),n.jsx(dt,{children:"Everything below works from anywhere the board is loaded."})]}),n.jsxs("div",{className:"flex flex-col gap-4",children:[n.jsxs(H,{title:"Navigation",children:[n.jsx(N,{keys:["Tab","Shift+Tab"],children:"Move between controls"}),n.jsx(N,{keys:["Enter","Space"],children:"Activate the focused control, open a stage's details, or sort a column"}),n.jsx(N,{keys:["Esc"],children:"Close the open dialog, or leave a full-page view like Plan graph"})]}),n.jsxs(H,{title:"Menus and lists",children:[n.jsx(N,{keys:["↑","↓"],children:"Move between menu items or picker rows"}),n.jsx(N,{keys:["A–Z","0–9"],children:"Filter the Type and Stage dropdowns, and the plan execution picker, as you type"})]}),n.jsx(H,{title:"Help",children:n.jsx(N,{keys:["?"],children:"Open this list"})})]}),n.jsxs("p",{className:"text-center text-xs text-muted-foreground",children:["SparkForensics v",hr.version]})]})})}const vr=ve("group/toggle inline-flex cursor-pointer items-center justify-center gap-1 rounded-lg text-sm font-medium whitespace-nowrap transition-all outline-none hover:bg-muted hover:text-foreground focus-visible:border-ring focus-visible:ring-[3px] focus-visible:ring-ring/50 disabled:pointer-events-none disabled:cursor-default disabled:opacity-50 aria-invalid:border-destructive aria-invalid:ring-destructive/20 aria-pressed:bg-muted data-[state=on]:bg-muted dark:aria-invalid:ring-destructive/40 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4",{variants:{variant:{default:"bg-transparent",outline:"border border-input bg-transparent hover:bg-muted"},size:{default:"h-8 min-w-8 px-2.5 has-data-[icon=inline-end]:pr-2 has-data-[icon=inline-start]:pl-2",sm:"h-7 min-w-7 rounded-[min(var(--radius-md),12px)] px-2.5 text-[0.8rem] has-data-[icon=inline-end]:pr-1.5 has-data-[icon=inline-start]:pl-1.5 [&_svg:not([class*='size-'])]:size-3.5",lg:"h-9 min-w-9 px-2.5 has-data-[icon=inline-end]:pr-2 has-data-[icon=inline-start]:pl-2"}},defaultVariants:{variant:"default",size:"default"}});function yr({className:e,variant:t="default",size:a="default",...r}){return n.jsx(Bt,{"data-slot":"toggle",className:y(vr({variant:t,size:a,className:e})),...r})}const xt="Show confidence levels, evidence, and documentation links for each finding";function wr(){const e=Ee()==="advanced";return n.jsx(yr,{variant:"outline",pressed:e,onPressedChange:t=>O.getState().setWidgetDensity(t?"advanced":"basic"),className:"tap-target-comfortable aria-pressed:bg-primary aria-pressed:text-primary-foreground aria-pressed:hover:bg-[color-mix(in_oklch,var(--primary),var(--foreground)_5%)]",title:xt,children:"Advanced view"})}function jr(){const e=Ee()==="advanced";return n.jsx(ut,{checked:e,onCheckedChange:t=>O.getState().setWidgetDensity(t?"advanced":"basic"),title:xt,children:"Advanced view"})}function kr(e,t){return e==="warning"?`${t} warning${t===1?"":"s"}`:`${t} ${e}`}function Sr(e,t){return e.stageId!=null&&t.includes(e.stageId)?!0:e.stageIds?.some(a=>t.includes(a))??!1}function _r(e,t){const a=[];for(const[r,i]of e.sql){if(!i.planTree)continue;const l=vn(r,e.stages),c=l.length>0?Math.min(...l):null;if(c==null)continue;const s=i.description,o=typeof s=="string"&&s.trim()?s:`SQL execution #${r}`,p=i.startTime,m=i.endTime,x=typeof p=="number"&&typeof m=="number"?M(m-p):null,u=t.filter(k=>Sr(k,l)),w=$(u)??null,S=u.length;a.push({executionId:r,stageId:c,label:o,secondary:x?`#${r} · ${x}`:`#${r}`,impactBand:w,findingCount:S})}return a.sort((r,i)=>{const l=r.impactBand?C[r.impactBand]:1/0,c=i.impactBand?C[i.impactBand]:1/0;return l!==c?l-c:r.executionId-i.executionId}),a}function Mr({onLoadNew:e,recentEntries:t,activeFileId:a,onPickRecent:r,onRemoveRecent:i,sectionControls:l,leadingContent:c}){const s=E(v=>v.appModel.app),o=E(v=>v.catalog),p=E(v=>v.skippedLines),m=E(v=>v.exportMode),{theme:x,toggle:u}=hn(),b=d.useRef(null),w=E(v=>v.comparison),S=ft(),k=E(v=>v.appModel),j=d.useMemo(()=>_r(k,o),[k,o]),[_,I]=d.useState(!1),[bt,P]=d.useState(!1);d.useEffect(()=>{function v(D){if(D.key!=="?")return;const se=D.target,oe=se?.tagName;oe==="INPUT"||oe==="TEXTAREA"||se?.isContentEditable||(D.preventDefault(),P(!0))}return window.addEventListener("keydown",v),()=>window.removeEventListener("keydown",v)},[]);function re(){if(j.length!==0){if(j.length===1){O.getState().openPlanGraph(j[0].stageId,{initialScope:"full"});return}I(!0)}}function vt(v){O.getState().openPlanGraph(v,{initialScope:"full"}),I(!1)}const ie=s?.name||"Spark Application",B=[s?.id,s?.sparkVersion?`Spark ${s.sparkVersion}`:null].filter(Boolean).join(" · "),A=$(o),yt=A?o.filter(v=>v.impactBand===A).length:0;return n.jsxs("header",{className:"sticky top-0 z-30 flex min-w-0 flex-wrap items-center gap-3 border-b border-border bg-background/95 px-4 py-2 backdrop-blur",children:[l?null:n.jsx("h1",{className:"sr-only",children:"SparkForensics"}),n.jsxs("div",{className:"flex min-w-0 flex-1 items-center gap-3",children:[m?n.jsxs("div",{className:"flex min-w-0 shrink flex-col items-start justify-center gap-0 py-1",children:[n.jsx("span",{className:"min-w-0 truncate font-heading text-sm font-semibold",children:ie}),B?n.jsx("span",{className:"w-full min-w-0 truncate text-left text-xs text-muted-foreground",children:B}):null]}):n.jsx(pr,{activeName:ie,activeSub:B,activeId:a,entries:t,onPick:r,onRemove:i,onOpenNew:e}),p>0?n.jsxs("div",{className:"min-w-0 truncate text-xs text-warning",children:[p," line",p===1?"":"s"," skipped: malformed or invalid data"]}):null,c]}),l?n.jsx("div",{className:"flex min-w-0 shrink-0 flex-wrap items-center gap-3 max-sm:order-3 max-sm:w-full max-sm:shrink max-sm:gap-2",children:l}):A?n.jsx(yn,{label:kr(A,yt),impactBand:A,className:"shrink-0"}):n.jsxs("span",{className:y("inline-flex shrink-0 items-center gap-1.5 rounded-full bg-clean/10 px-2 py-0.5 text-xs font-medium text-clean"),children:[n.jsx("span",{"aria-hidden":"true",className:"inline-block size-2 shrink-0 rounded-full bg-clean"}),"No findings"]}),n.jsxs("div",{className:"flex shrink-0 items-center gap-1",children:[!l&&w.baselineId&&!w.active?n.jsx(T,{variant:"ghost",size:"sm",className:"tap-target-comfortable",onClick:()=>O.getState().setComparisonActive(!0),children:"← Back to comparison"}):null,n.jsxs("div",{className:"hidden items-center gap-1 sm:flex",children:[l?null:n.jsx(ur,{}),!l&&j.length>0?n.jsxs(T,{variant:"ghost",size:"sm",className:"tap-target-comfortable",onClick:re,children:[n.jsx(q,{"aria-hidden":"true",className:"text-plan-aggregate"}),"Plan graph"]}):null,l?null:n.jsx(wr,{}),n.jsx(T,{variant:"ghost",size:"icon",className:"tap-target-comfortable","aria-label":"Keyboard shortcuts",title:"Keyboard shortcuts (?)",onClick:()=>P(!0),children:n.jsx(Vn,{"aria-hidden":"true"})}),n.jsx(T,{variant:"ghost",size:"icon",className:"tap-target-comfortable","aria-label":"Toggle theme","aria-pressed":x==="light",title:"Toggle theme",onClick:u,children:x==="dark"?n.jsx(xn,{"aria-hidden":"true"}):n.jsx(bn,{"aria-hidden":"true"})})]}),n.jsxs(ee,{onOpenChange:(v,D)=>{!v&&D.reason==="outside-press"&&setTimeout(()=>{document.activeElement===document.body&&b.current?.focus()})},children:[n.jsx(te,{ref:b,className:"tap-target-comfortable inline-flex size-8 items-center justify-center rounded-lg hover:bg-muted hover:text-foreground focus-visible:ring-2 focus-visible:ring-ring/50 sm:hidden","aria-label":"More options",children:n.jsx(Fn,{"aria-hidden":"true"})}),n.jsxs(ne,{align:"end",children:[l?null:n.jsxs(n.Fragment,{children:[n.jsx(ht,{...S}),n.jsx(ae,{})]}),!l&&j.length>0?n.jsxs(z,{onClick:re,children:[n.jsx(q,{"aria-hidden":"true",className:"text-plan-aggregate"}),"Plan graph"]}):null,l?null:n.jsx(jr,{}),n.jsx(z,{onClick:()=>P(!0),children:"Keyboard shortcuts"}),n.jsx(z,{onClick:u,children:"Toggle theme"})]})]})]}),n.jsx(gr,{open:_,entries:j,onSelect:vt,onOpenChange:I}),n.jsx(br,{open:bt,onOpenChange:P})]})}function Fr(e){const{pickRecent:t}=_e(),[a,r]=d.useState([]),i=d.useCallback(()=>{wn().then(s=>r(s)).catch(()=>r([]))},[]);d.useEffect(()=>{i()},[i,e]);const l=d.useCallback(async s=>{const o=a.find(m=>m.id===s),p=await t(s,o?.handle);(p==="restored"||p==="gone")&&i()},[a,t,i]),c=d.useCallback(s=>{const o=a.find(p=>p.id===s);jn(s).catch(()=>{}).finally(i),o&&kn(`Removed "${o.appName||o.name}" from recent files`,{action:{label:"Undo",onClick:()=>{Sn(o).catch(()=>{}).finally(i)}}})},[a,i]);return{recentEntries:a,onPickRecent:l,onRemoveRecent:c}}export{Rr as A,Kn as B,Lr as C,st as D,pe as E,Ir as F,Un as G,Hn as H,mr as I,ce as J,de as K,vr as L,zr as P,G as R,Te as S,Mr as T,ot as a,lt as b,ct as c,$r as d,ut as e,Or as f,ee as g,te as h,ne as i,Pr as j,Wa as k,ha as l,La as m,F as n,Ar as o,Dr as p,Ya as q,ia as r,Ua as s,Ka as t,Fr as u,Dn as v,Ha as w,ja as x,Gn as y,Nr as z};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{j as e,r as p}from"./react-vendor-DA6opS-q.js";import{A as u,E as d}from"./index-CHjV2-jB.js";import{T as g,a as c}from"./toggle-group-lbIXRG0W.js";import{b as f,a as v}from"./impact-sort-Cq6KOLqh.js";function j({mode:a,onChange:o,stageLabel:r="Stage"}){return e.jsx(u,{children:e.jsxs(g,{"aria-label":"Sort order",spacing:0,value:[a],onValueChange:s=>{const t=s[0];t&&o(t)},children:[e.jsx(c,{value:"impact",variant:"outline",size:"sm",className:"tap-target-comfortable tap-target-comfortable--sm",children:"Impact"}),e.jsx(c,{value:"stage",variant:"outline",size:"sm",className:"tap-target-comfortable tap-target-comfortable--sm",children:r})]})})}function M(a="impact"){const[o,r]=p.useState(a),t=d()==="advanced"?o:"impact";function i(n,m,l){return t==="impact"?[...n].sort(f(m)):[...n].sort(v(l))}return{sortMode:t,setSortMode:r,orderBy:i}}export{j as S,M as u};
|
package/public/docs/404.html
CHANGED
|
@@ -6,10 +6,10 @@
|
|
|
6
6
|
<title>404 | SparkForensics</title>
|
|
7
7
|
<meta name="description" content="Not Found">
|
|
8
8
|
<meta name="generator" content="VitePress v1.6.4">
|
|
9
|
-
<link rel="preload stylesheet" href="/docs/assets/style.
|
|
9
|
+
<link rel="preload stylesheet" href="/docs/assets/style.DXOMCXxn.css" as="style">
|
|
10
10
|
<link rel="preload stylesheet" href="/docs/vp-icons.css" as="style">
|
|
11
11
|
|
|
12
|
-
<script type="module" src="/docs/assets/app.
|
|
12
|
+
<script type="module" src="/docs/assets/app.BgzsaTS3.js"></script>
|
|
13
13
|
<link rel="preload" href="/docs/assets/inter-roman-latin.Di8DUHzh.woff2" as="font" type="font/woff2" crossorigin="">
|
|
14
14
|
<link rel="icon" type="image/svg+xml" href="/docs/favicon.svg">
|
|
15
15
|
<link rel="preconnect" href="https://fonts.googleapis.com">
|
|
@@ -20,7 +20,7 @@
|
|
|
20
20
|
</head>
|
|
21
21
|
<body>
|
|
22
22
|
<div id="app"></div>
|
|
23
|
-
<script>window.__VP_HASH_MAP__=JSON.parse("{\"contributor-guide_architecture_board-widgets.md\":\"
|
|
23
|
+
<script>window.__VP_HASH_MAP__=JSON.parse("{\"contributor-guide_architecture_board-widgets.md\":\"B-OsL91z\",\"contributor-guide_architecture_detector-contract.md\":\"BOeH4d1J\",\"contributor-guide_architecture_drill-down.md\":\"BtPdlM7r\",\"contributor-guide_architecture_impact-estimation.md\":\"DYCDPgkh\",\"contributor-guide_architecture_index.md\":\"3TO9ic6w\",\"contributor-guide_architecture_overview.md\":\"CehiRmGn\",\"contributor-guide_architecture_state-and-history.md\":\"m3S3UdMk\",\"contributor-guide_architecture_widget-rendering.md\":\"DbqPf2OT\",\"contributor-guide_architecture_worker-protocol.md\":\"B93qJ_tT\",\"contributor-guide_contributing.md\":\"CvRsdr6J\",\"contributor-guide_development-setup.md\":\"DvAN_9mK\",\"contributor-guide_testing.md\":\"6rIKqSyY\",\"index.md\":\"CHJVslga\",\"tuning-reference_anti-patterns.md\":\"Df1YMIHu\",\"tuning-reference_aqe.md\":\"BIsCtLzm\",\"tuning-reference_bottleneck-broadcast-sizing.md\":\"CEstB3Ia\",\"tuning-reference_bottleneck-cold-start.md\":\"CEuy-72y\",\"tuning-reference_bottleneck-duplicate-plan-subtree.md\":\"CIohQDfn\",\"tuning-reference_bottleneck-failures.md\":\"4z5BXGJ2\",\"tuning-reference_bottleneck-gc.md\":\"DSxzZRK7\",\"tuning-reference_bottleneck-job-failure-rate.md\":\"BaJl__1W\",\"tuning-reference_bottleneck-memory-utilization.md\":\"DbP-SJZc\",\"tuning-reference_bottleneck-retry-waste.md\":\"D5JMjVOt\",\"tuning-reference_bottleneck-shuffle.md\":\"CM-nTmIH\",\"tuning-reference_bottleneck-skew.md\":\"BdUwiDhn\",\"tuning-reference_bottleneck-slow-host.md\":\"BlIo6UDW\",\"tuning-reference_bottleneck-small-files.md\":\"B8kloyx8\",\"tuning-reference_bottleneck-spill.md\":\"PNH7mITt\",\"tuning-reference_bottleneck-straggler.md\":\"DY36fHN5\",\"tuning-reference_bottleneck-tiny-tasks.md\":\"QTV7O8kU\",\"tuning-reference_bottleneck-utilization.md\":\"DTiueZC3\",\"tuning-reference_caching.md\":\"B7aQ8asB\",\"tuning-reference_cluster-config.md\":\"ZVmDGsQ3\",\"tuning-reference_config.md\":\"UvveiWG3\",\"tuning-reference_data-formats.md\":\"bjCAWH3N\",\"tuning-reference_index.md\":\"BQ_NooMV\",\"tuning-reference_intro.md\":\"CobD-lGB\",\"tuning-reference_joins.md\":\"BtKs_CuW\",\"tuning-reference_memory-model.md\":\"DhT-n4y3\",\"tuning-reference_metrics.md\":\"mLOh7Apj\",\"tuning-reference_partitioning.md\":\"q0zKF_8X\",\"tuning-reference_pyspark.md\":\"DDCfvN9t\",\"tuning-reference_shuffle.md\":\"BZZ7R4Ix\",\"tuning-reference_spark-architecture.md\":\"Dwzm5avO\",\"tuning-reference_table-formats.md\":\"D6wj-2dX\",\"user-guide_alternative-log-retrieval.md\":\"sU3KGarf\",\"user-guide_getting-started.md\":\"DtEM37MK\",\"user-guide_mcp-tools.md\":\"C8MiIu7F\",\"user-guide_run-comparison.md\":\"S0TWWmLY\",\"user-guide_understanding-findings.md\":\"D0R_Y-R2\"}");window.__VP_SITE_DATA__=JSON.parse("{\"lang\":\"en-US\",\"dir\":\"ltr\",\"title\":\"SparkForensics\",\"description\":\"Docs for using and contributing to SparkForensics\",\"base\":\"/docs/\",\"head\":[],\"router\":{\"prefetchLinks\":true},\"appearance\":true,\"themeConfig\":{\"logo\":\"/favicon.svg\",\"nav\":[{\"text\":\"User Guide\",\"link\":\"/user-guide/getting-started\"},{\"text\":\"Contributor Guide\",\"link\":\"/contributor-guide/development-setup\"},{\"text\":\"Tuning Reference\",\"link\":\"/tuning-reference/\"}],\"sidebar\":{\"/tuning-reference/\":[{\"text\":\"Getting Started\",\"items\":[{\"text\":\"Introduction\",\"link\":\"/tuning-reference/intro\"}]},{\"text\":\"Optimization Guide\",\"items\":[{\"text\":\"Spark Execution Model\",\"link\":\"/tuning-reference/spark-architecture\"},{\"text\":\"Memory Management\",\"link\":\"/tuning-reference/memory-model\"},{\"text\":\"Partitioning\",\"link\":\"/tuning-reference/partitioning\"},{\"text\":\"Join Optimization\",\"link\":\"/tuning-reference/joins\"},{\"text\":\"Shuffle\",\"link\":\"/tuning-reference/shuffle\"},{\"text\":\"Data Formats\",\"link\":\"/tuning-reference/data-formats\"},{\"text\":\"Table Formats\",\"link\":\"/tuning-reference/table-formats\"},{\"text\":\"Caching & Persistence\",\"link\":\"/tuning-reference/caching\"},{\"text\":\"PySpark Specifics\",\"link\":\"/tuning-reference/pyspark\"},{\"text\":\"Adaptive Query Execution\",\"link\":\"/tuning-reference/aqe\"},{\"text\":\"Cluster Tuning\",\"link\":\"/tuning-reference/cluster-config\"},{\"text\":\"Anti-Patterns\",\"link\":\"/tuning-reference/anti-patterns\"}]},{\"text\":\"Detector Catalog\",\"items\":[{\"text\":\"Task Skew\",\"link\":\"/tuning-reference/bottleneck-skew\"},{\"text\":\"Shuffle I/O\",\"link\":\"/tuning-reference/bottleneck-shuffle\"},{\"text\":\"Memory / Disk Spill\",\"link\":\"/tuning-reference/bottleneck-spill\"},{\"text\":\"GC Pressure\",\"link\":\"/tuning-reference/bottleneck-gc\"},{\"text\":\"Cold Start\",\"link\":\"/tuning-reference/bottleneck-cold-start\"},{\"text\":\"Executor Utilization\",\"link\":\"/tuning-reference/bottleneck-utilization\"},{\"text\":\"Slow Host\",\"link\":\"/tuning-reference/bottleneck-slow-host\"},{\"text\":\"Task Failures\",\"link\":\"/tuning-reference/bottleneck-failures\"},{\"text\":\"Stragglers\",\"link\":\"/tuning-reference/bottleneck-straggler\"},{\"text\":\"Retry Waste\",\"link\":\"/tuning-reference/bottleneck-retry-waste\"},{\"text\":\"Tiny Tasks\",\"link\":\"/tuning-reference/bottleneck-tiny-tasks\"},{\"text\":\"Job Failure Rate\",\"link\":\"/tuning-reference/bottleneck-job-failure-rate\"},{\"text\":\"Memory Utilization\",\"link\":\"/tuning-reference/bottleneck-memory-utilization\"},{\"text\":\"Duplicate Plan Subtree\",\"link\":\"/tuning-reference/bottleneck-duplicate-plan-subtree\"},{\"text\":\"Small Files\",\"link\":\"/tuning-reference/bottleneck-small-files\"},{\"text\":\"Broadcast Sizing\",\"link\":\"/tuning-reference/bottleneck-broadcast-sizing\"}]},{\"text\":\"Reference\",\"items\":[{\"text\":\"Metrics Glossary\",\"link\":\"/tuning-reference/metrics\"},{\"text\":\"Spark Config Quick-Reference\",\"link\":\"/tuning-reference/config\"}]}],\"/user-guide/\":[{\"text\":\"User Guide\",\"items\":[{\"text\":\"Getting started\",\"link\":\"/user-guide/getting-started\"},{\"text\":\"Understanding findings\",\"link\":\"/user-guide/understanding-findings\"},{\"text\":\"Run comparison mode\",\"link\":\"/user-guide/run-comparison\"},{\"text\":\"MCP tools reference\",\"link\":\"/user-guide/mcp-tools\"},{\"text\":\"Alternative log retrieval\",\"link\":\"/user-guide/alternative-log-retrieval\"}]}],\"/contributor-guide/\":[{\"text\":\"Contributor Guide\",\"items\":[{\"text\":\"Development setup\",\"link\":\"/contributor-guide/development-setup\"},{\"text\":\"Architecture\",\"link\":\"/contributor-guide/architecture/\",\"collapsed\":true,\"items\":[{\"text\":\"Overview\",\"link\":\"/contributor-guide/architecture/overview\"},{\"text\":\"Worker protocol\",\"link\":\"/contributor-guide/architecture/worker-protocol\"},{\"text\":\"State & history intake\",\"link\":\"/contributor-guide/architecture/state-and-history\"},{\"text\":\"Detector contract\",\"link\":\"/contributor-guide/architecture/detector-contract\"},{\"text\":\"Impact estimation\",\"link\":\"/contributor-guide/architecture/impact-estimation\"},{\"text\":\"Widget rendering\",\"link\":\"/contributor-guide/architecture/widget-rendering\"},{\"text\":\"Board widgets\",\"link\":\"/contributor-guide/architecture/board-widgets\"},{\"text\":\"Drill-down\",\"link\":\"/contributor-guide/architecture/drill-down\"}]},{\"text\":\"Testing & verification\",\"link\":\"/contributor-guide/testing\"},{\"text\":\"Contributing\",\"link\":\"/contributor-guide/contributing\"}]}]},\"search\":{\"provider\":\"local\"}},\"locales\":{},\"scrollOffset\":134,\"cleanUrls\":false}");</script>
|
|
24
24
|
|
|
25
25
|
</body>
|
|
26
26
|
</html>
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{t as p}from"./chunks/theme.
|
|
1
|
+
import{t as p}from"./chunks/theme.BP14rGBx.js";import{R as s,a6 as i,a7 as u,a8 as c,a9 as l,aa as f,ab as d,ac as m,ad as h,ae as g,af as A,d as v,u as y,v as C,s as P,ag as b,ah as w,ai as R,aj as E}from"./chunks/framework.DSg0KOwT.js";function r(e){if(e.extends){const a=r(e.extends);return{...a,...e,async enhanceApp(t){a.enhanceApp&&await a.enhanceApp(t),e.enhanceApp&&await e.enhanceApp(t)}}}return e}const n=r(p),S=v({name:"VitePressApp",setup(){const{site:e,lang:a,dir:t}=y();return C(()=>{P(()=>{document.documentElement.lang=a.value,document.documentElement.dir=t.value})}),e.value.router.prefetchLinks&&b(),w(),R(),n.setup&&n.setup(),()=>E(n.Layout)}});async function T(){globalThis.__VITEPRESS__=!0;const e=D(),a=j();a.provide(u,e);const t=c(e.route);return a.provide(l,t),a.component("Content",f),a.component("ClientOnly",d),Object.defineProperties(a.config.globalProperties,{$frontmatter:{get(){return t.frontmatter.value}},$params:{get(){return t.page.value.params}}}),n.enhanceApp&&await n.enhanceApp({app:a,router:e,siteData:m}),{app:a,router:e,data:t}}function j(){return A(S)}function D(){let e=s;return h(a=>{let t=g(a),o=null;return t&&(e&&(t=t.replace(/\.js$/,".lean.js")),o=import(t)),s&&(e=!1),o},n.NotFound)}s&&T().then(({app:e,router:a,data:t})=>{a.go().then(()=>{i(a.route,t.site),e.mount("#app")})});export{T as createApp};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
<svg id="gd1" width="100%" xmlns="http://www.w3.org/2000/svg" class="flowchart" viewBox="-8 -17.3125 618.5792526348741 775.4390625000001" role="graphics-document document" aria-roledescription="flowchart-v2" style="max-width: 618.5792526348741px;"><style>#gd1{font-family:Recursive,ui-sans-serif,system-ui,-apple-system,sans-serif;font-size:16px;fill:#151b1e;}@keyframes edge-animation-frame{from{stroke-dashoffset:0;}}@keyframes dash{to{stroke-dashoffset:0;}}#gd1 .edge-animation-slow{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 50s linear infinite;stroke-linecap:round;}#gd1 .edge-animation-fast{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 20s linear infinite;stroke-linecap:round;}#gd1 .error-icon{fill:#eef1f6;}#gd1 .error-text{fill:#110e09;stroke:#110e09;}#gd1 .edge-thickness-normal{stroke-width:1px;}#gd1 .edge-thickness-thick{stroke-width:3.5px;}#gd1 .edge-pattern-solid{stroke-dasharray:0;}#gd1 .edge-thickness-invisible{stroke-width:0;fill:none;}#gd1 .edge-pattern-dashed{stroke-dasharray:3;}#gd1 .edge-pattern-dotted{stroke-dasharray:2;}#gd1 .marker{fill:#4f5f60;stroke:#4f5f60;}#gd1 .marker.cross{stroke:#4f5f60;}#gd1 svg{font-family:Recursive,ui-sans-serif,system-ui,-apple-system,sans-serif;font-size:16px;}#gd1 p{margin:0;}#gd1 .label{font-family:Recursive,ui-sans-serif,system-ui,-apple-system,sans-serif;color:#151b1e;}#gd1 .cluster-label text{fill:#151b1e;}#gd1 .cluster-label span{color:#151b1e;}#gd1 .cluster-label span p{background-color:transparent;}#gd1 .label text,#gd1 span{fill:#151b1e;color:#151b1e;}#gd1 .node rect,#gd1 .node circle,#gd1 .node ellipse,#gd1 .node polygon,#gd1 .node path{fill:#ffffff;stroke:#9aa8a3;stroke-width:1px;}#gd1 .rough-node .label text,#gd1 .node .label text,#gd1 .image-shape .label,#gd1 .icon-shape .label{text-anchor:middle;}#gd1 .node .katex path{fill:#000;stroke:#000;stroke-width:1px;}#gd1 .rough-node .label,#gd1 .node .label,#gd1 .image-shape .label,#gd1 .icon-shape .label{text-align:center;}#gd1 .node.clickable{cursor:pointer;}#gd1 .root .anchor path{fill:#4f5f60!important;stroke-width:0;stroke:#4f5f60;}#gd1 .arrowheadPath{fill:rgba(255, 255, 255, 0);}#gd1 .edgePath .path{stroke:#4f5f60;stroke-width:1px;}#gd1 .flowchart-link{stroke:#4f5f60;fill:none;}#gd1 .edgeLabel{background-color:#eef1f6;text-align:center;}#gd1 .edgeLabel p{background-color:#eef1f6;}#gd1 .edgeLabel rect{opacity:0.5;background-color:#eef1f6;fill:#eef1f6;}#gd1 .labelBkg{background-color:rgba(238, 241, 246, 0.5);}#gd1 .cluster rect{fill:#f2f5f9;stroke:#dbe2df;stroke-width:1px;}#gd1 .cluster text{fill:#151b1e;}#gd1 .cluster span{color:#151b1e;}#gd1 div.mermaidTooltip{position:absolute;text-align:center;max-width:200px;padding:2px;font-family:Recursive,ui-sans-serif,system-ui,-apple-system,sans-serif;font-size:12px;background:#eef1f6;border:1px solid hsl(217.5, 0%, 84.9019607843%);border-radius:2px;pointer-events:none;z-index:100;}#gd1 .flowchartTitleText{text-anchor:middle;font-size:18px;fill:#151b1e;}#gd1 rect.text{fill:none;stroke-width:0;}#gd1 .icon-shape,#gd1 .image-shape{background-color:#eef1f6;text-align:center;}#gd1 .icon-shape p,#gd1 .image-shape p{background-color:#eef1f6;padding:2px;}#gd1 .icon-shape .label rect,#gd1 .image-shape .label rect{opacity:0.5;background-color:#eef1f6;fill:#eef1f6;}#gd1 .label-icon{display:inline-block;height:1em;overflow:visible;vertical-align:-0.125em;}#gd1 .node .label-icon path{fill:currentColor;stroke:revert;stroke-width:revert;}#gd1 .node .neo-node{stroke:#9aa8a3;}#gd1 [data-look="neo"].node rect,#gd1 [data-look="neo"].cluster rect,#gd1 [data-look="neo"].node polygon{stroke:url(#gd1-gradient);filter:drop-shadow( 1px 2px 2px rgba(185,185,185,1));}#gd1 [data-look="neo"].swimlane.cluster rect{filter:none;}#gd1 [data-look="neo"].node path{stroke:url(#gd1-gradient);stroke-width:1px;}#gd1 [data-look="neo"].node .outer-path{filter:drop-shadow( 1px 2px 2px rgba(185,185,185,1));}#gd1 [data-look="neo"].node .neo-line path{stroke:#9aa8a3;filter:none;}#gd1 [data-look="neo"].node circle{stroke:url(#gd1-gradient);filter:drop-shadow( 1px 2px 2px rgba(185,185,185,1));}#gd1 [data-look="neo"].node circle .state-start{fill:#000000;}#gd1 [data-look="neo"].icon-shape .icon{fill:url(#gd1-gradient);filter:drop-shadow( 1px 2px 2px rgba(185,185,185,1));}#gd1 [data-look="neo"].icon-shape .icon-neo path{stroke:url(#gd1-gradient);filter:drop-shadow( 1px 2px 2px rgba(185,185,185,1));}#gd1 :root{--mermaid-font-family:Recursive,ui-sans-serif,system-ui,-apple-system,sans-serif;}</style><g><marker id="gd1_flowchart-v2-pointEnd" class="marker flowchart-v2" viewBox="0 0 10 10" refX="5" refY="5" markerUnits="userSpaceOnUse" markerWidth="8" markerHeight="8" orient="auto"><path d="M 0 0 L 10 5 L 0 10 z" class="arrowMarkerPath" style="stroke-width:1;stroke-dasharray:1,0"></path></marker><marker id="gd1_flowchart-v2-pointStart" class="marker flowchart-v2" viewBox="0 0 10 10" refX="4.5" refY="5" markerUnits="userSpaceOnUse" markerWidth="8" markerHeight="8" orient="auto"><path d="M 0 5 L 10 10 L 10 0 z" class="arrowMarkerPath" style="stroke-width:1;stroke-dasharray:1,0"></path></marker><marker id="gd1_flowchart-v2-pointEnd-margin" class="marker flowchart-v2" viewBox="0 0 11.5 14" refX="11.5" refY="7" markerUnits="userSpaceOnUse" markerWidth="10.5" markerHeight="14" orient="auto"><path d="M 0 0 L 11.5 7 L 0 14 z" class="arrowMarkerPath" style="stroke-width:0;stroke-dasharray:1,0"></path></marker><marker id="gd1_flowchart-v2-pointStart-margin" class="marker flowchart-v2" viewBox="0 0 11.5 14" refX="1" refY="7" markerUnits="userSpaceOnUse" markerWidth="11.5" markerHeight="14" orient="auto"><polygon points="0,7 11.5,14 11.5,0" class="arrowMarkerPath" style="stroke-width:0;stroke-dasharray:1,0"></polygon></marker><marker id="gd1_flowchart-v2-circleEnd" class="marker flowchart-v2" viewBox="0 0 10 10" refX="11" refY="5" markerUnits="userSpaceOnUse" markerWidth="11" markerHeight="11" orient="auto"><circle cx="5" cy="5" r="5" class="arrowMarkerPath" style="stroke-width:1;stroke-dasharray:1,0"></circle></marker><marker id="gd1_flowchart-v2-circleStart" class="marker flowchart-v2" viewBox="0 0 10 10" refX="-1" refY="5" markerUnits="userSpaceOnUse" markerWidth="11" markerHeight="11" orient="auto"><circle cx="5" cy="5" r="5" class="arrowMarkerPath" style="stroke-width:1;stroke-dasharray:1,0"></circle></marker><marker id="gd1_flowchart-v2-circleEnd-margin" class="marker flowchart-v2" viewBox="0 0 10 10" refY="5" refX="12.25" markerUnits="userSpaceOnUse" markerWidth="14" markerHeight="14" orient="auto"><circle cx="5" cy="5" r="5" class="arrowMarkerPath" style="stroke-width:0;stroke-dasharray:1,0"></circle></marker><marker id="gd1_flowchart-v2-circleStart-margin" class="marker flowchart-v2" viewBox="0 0 10 10" refX="-2" refY="5" markerUnits="userSpaceOnUse" markerWidth="14" markerHeight="14" orient="auto"><circle cx="5" cy="5" r="5" class="arrowMarkerPath" style="stroke-width:0;stroke-dasharray:1,0"></circle></marker><marker id="gd1_flowchart-v2-crossEnd" class="marker cross flowchart-v2" viewBox="0 0 11 11" refX="12" refY="5.2" markerUnits="userSpaceOnUse" markerWidth="11" markerHeight="11" orient="auto"><path d="M 1,1 l 9,9 M 10,1 l -9,9" class="arrowMarkerPath" style="stroke-width:2;stroke-dasharray:1,0"></path></marker><marker id="gd1_flowchart-v2-crossStart" class="marker cross flowchart-v2" viewBox="0 0 11 11" refX="-1" refY="5.2" markerUnits="userSpaceOnUse" markerWidth="11" markerHeight="11" orient="auto"><path d="M 1,1 l 9,9 M 10,1 l -9,9" class="arrowMarkerPath" style="stroke-width:2;stroke-dasharray:1,0"></path></marker><marker id="gd1_flowchart-v2-crossEnd-margin" class="marker cross flowchart-v2" viewBox="0 0 15 15" refX="17.7" refY="7.5" markerUnits="userSpaceOnUse" markerWidth="12" markerHeight="12" orient="auto"><path d="M 1,1 L 14,14 M 1,14 L 14,1" class="arrowMarkerPath" style="stroke-width:2.5"></path></marker><marker id="gd1_flowchart-v2-crossStart-margin" class="marker cross flowchart-v2" viewBox="0 0 15 15" refX="-3.5" refY="7.5" markerUnits="userSpaceOnUse" markerWidth="12" markerHeight="12" orient="auto"><path d="M 1,1 L 14,14 M 1,14 L 14,1" class="arrowMarkerPath" style="stroke-width:2.5;stroke-dasharray:1,0"></path></marker><g class="root"><g class="clusters"></g><g class="edgePaths"><path d="M319.804,42.125L319.721,46.208C319.638,50.292,319.471,58.458,319.388,66.042C319.304,73.625,319.304,80.625,319.304,84.125L319.304,87.625" id="gd1-L_START_MAT_0" class=" edge-thickness-normal edge-pattern-solid edge-thickness-normal edge-pattern-solid flowchart-link" data-edge="true" data-et="edge" data-id="L_START_MAT_0" data-points="W3sieCI6MzE5LjgwNDI3NDc1NDkzNzA3LCJ5Ijo0Mi4xMjV9LHsieCI6MzE5LjMwNDI3NDc1NDkzNzA3LCJ5Ijo2Ni42MjV9LHsieCI6MzE5LjMwNDI3NDc1NDkzNzA3LCJ5Ijo5MS42MjV9XQ==" data-look="classic" marker-end="url(#gd1_flowchart-v2-pointEnd)" style=";"></path><path d="M387.327,157.85L395.887,162.017C404.446,166.183,421.566,174.517,430.125,182.183C438.685,189.85,438.685,196.85,438.685,200.35L438.685,203.85" id="gd1-L_MAT_STATS_0" class=" edge-thickness-normal edge-pattern-solid edge-thickness-normal edge-pattern-solid flowchart-link" data-edge="true" data-et="edge" data-id="L_MAT_STATS_0" data-points="W3sieCI6Mzg3LjMyNzI0ODEwODkyNzg1LCJ5IjoxNTcuODV9LHsieCI6NDM4LjY4NDcyMTM4NDg3NDEsInkiOjE4Mi44NX0seyJ4Ijo0MzguNjg0NzIxMzg0ODc0MSwieSI6MjA3Ljg1fV0=" data-look="classic" marker-end="url(#gd1_flowchart-v2-pointEnd)" style=";"></path><path d="M438.685,256.475L438.685,260.642C438.685,264.808,438.685,273.142,438.685,280.808C438.685,288.475,438.685,295.475,438.685,298.975L438.685,302.475" id="gd1-L_STATS_RULES_0" class=" edge-thickness-normal edge-pattern-solid edge-thickness-normal edge-pattern-solid flowchart-link" data-edge="true" data-et="edge" data-id="L_STATS_RULES_0" data-points="W3sieCI6NDM4LjY4NDcyMTM4NDg3NDEsInkiOjI1Ni40NzV9LHsieCI6NDM4LjY4NDcyMTM4NDg3NDEsInkiOjI4MS40NzV9LHsieCI6NDM4LjY4NDcyMTM4NDg3NDEsInkiOjMwNi40NzV9XQ==" data-look="classic" marker-end="url(#gd1_flowchart-v2-pointEnd)" style=";"></path><path d="M438.685,407.9L438.685,412.067C438.685,416.233,438.685,424.567,438.685,432.233C438.685,439.9,438.685,446.9,438.685,450.4L438.685,453.9" id="gd1-L_RULES_DONE_0" class=" edge-thickness-normal edge-pattern-solid edge-thickness-normal edge-pattern-solid flowchart-link" data-edge="true" data-et="edge" data-id="L_RULES_DONE_0" data-points="W3sieCI6NDM4LjY4NDcyMTM4NDg3NDEsInkiOjQwNy45fSx7IngiOjQzOC42ODQ3MjEzODQ4NzQxLCJ5Ijo0MzIuOTAwMDAwMDAwMDAwMDN9LHsieCI6NDM4LjY4NDcyMTM4NDg3NDEsInkiOjQ1Ny45MDAwMDAwMDAwMDAwM31d" data-look="classic" marker-end="url(#gd1_flowchart-v2-pointEnd)" style=";"></path><path d="M392.399,582.591L376.145,596.357C359.891,610.124,327.384,637.656,299.807,657.173C272.23,676.69,249.584,688.19,238.261,693.94L226.938,699.69" id="gd1-L_DONE_NEXT_0" class=" edge-thickness-normal edge-pattern-solid edge-thickness-normal edge-pattern-solid flowchart-link" data-edge="true" data-et="edge" data-id="L_DONE_NEXT_0" data-points="W3sieCI6MzkyLjM5ODk1NTU3NTUwNzA1LCJ5Ijo1ODIuNTkwNzk2NjkwNjMzM30seyJ4IjoyOTQuODc2NTQwMzc5OTM3MDcsInkiOjY2NS4xODkwNjI1MDAwMDAxfSx7IngiOjIyMy4zNzEzNDUwMjczNjY1MiwieSI6NzAxLjUwMTU2MjUwMDAwMDF9XQ==" data-look="classic" marker-end="url(#gd1_flowchart-v2-pointEnd)" style=";"></path><path d="M168.903,701.502L167.262,695.449C165.621,689.397,162.339,677.293,160.698,650.941C159.057,624.589,159.057,583.989,159.057,545.274C159.057,506.559,159.057,469.729,159.057,438.696C159.057,407.663,159.057,382.425,159.057,357.188C159.057,331.95,159.057,306.713,159.057,285.875C159.057,265.038,159.057,248.6,159.057,232.163C159.057,215.725,159.057,199.288,169.92,187.129C180.783,174.971,202.509,167.092,213.372,163.153L224.235,159.214" id="gd1-L_NEXT_MAT_0" class=" edge-thickness-normal edge-pattern-solid edge-thickness-normal edge-pattern-solid flowchart-link" data-edge="true" data-et="edge" data-id="L_NEXT_MAT_0" data-points="W3sieCI6MTY4LjkwMzM2NDYxMDE4MDQsInkiOjcwMS41MDE1NjI1MDAwMDAxfSx7IngiOjE1OS4wNTY2NDA2MjUsInkiOjY2NS4xODkwNjI1MDAwMDAxfSx7IngiOjE1OS4wNTY2NDA2MjUsInkiOjU0My4zODgyODEyNTAwMDAxfSx7IngiOjE1OS4wNTY2NDA2MjUsInkiOjQzMi45MDAwMDAwMDAwMDAwM30seyJ4IjoxNTkuMDU2NjQwNjI1LCJ5IjozNTcuMTg3NX0seyJ4IjoxNTkuMDU2NjQwNjI1LCJ5IjoyODEuNDc1fSx7IngiOjE1OS4wNTY2NDA2MjUsInkiOjIzMi4xNjI1fSx7IngiOjE1OS4wNTY2NDA2MjUsInkiOjE4Mi44NX0seyJ4IjoyMjcuOTk1MTc5NzIxNTUyODMsInkiOjE1Ny44NX1d" data-look="classic" marker-end="url(#gd1_flowchart-v2-pointEnd)" style=";"></path><path d="M452.966,614.596L454.657,623.028C456.348,631.46,459.73,648.325,461.497,663.476C463.264,678.627,463.416,692.064,463.492,698.783L463.567,705.502" id="gd1-L_DONE_END_0" class=" edge-thickness-normal edge-pattern-solid edge-thickness-normal edge-pattern-solid flowchart-link" data-edge="true" data-et="edge" data-id="L_DONE_END_0" data-points="W3sieCI6NDUyLjk2NTY5MTI2MDE3MjgsInkiOjYxNC41OTU1OTI2MjQ3MDEzfSx7IngiOjQ2My4xMTI0NTU3NTk4NzQxLCJ5Ijo2NjUuMTg5MDYyNTAwMDAwMX0seyJ4Ijo0NjMuNjEyNDU1NzU5ODc0MywieSI6NzA5LjUwMTU2MjQ5OTk5OTd9XQ==" data-look="classic" marker-end="url(#gd1_flowchart-v2-pointEnd)" style=";"></path></g><g class="edgeLabels"><g class="edgeLabel"><g class="label" data-id="L_START_MAT_0" transform="translate(0, -10.4609375)"><text y="-10.1" text-anchor="middle"><tspan class="text-outer-tspan row" x="0" y="-0.1em" dy="1.1em" text-anchor="middle"></tspan></text></g></g><g><rect class="background" style="stroke: none"></rect></g><g class="edgeLabel"><g class="label" data-id="L_MAT_STATS_0" transform="translate(0, -10.4609375)"><text y="-10.1" text-anchor="middle"><tspan class="text-outer-tspan row" x="0" y="-0.1em" dy="1.1em" text-anchor="middle"></tspan></text></g></g><g><rect class="background" style="stroke: none"></rect></g><g class="edgeLabel"><g class="label" data-id="L_STATS_RULES_0" transform="translate(0, -10.4609375)"><text y="-10.1" text-anchor="middle"><tspan class="text-outer-tspan row" x="0" y="-0.1em" dy="1.1em" text-anchor="middle"></tspan></text></g></g><g><rect class="background" style="stroke: none"></rect></g><g class="edgeLabel"><g class="label" data-id="L_RULES_DONE_0" transform="translate(0, -10.4609375)"><text y="-10.1" text-anchor="middle"><tspan class="text-outer-tspan row" x="0" y="-0.1em" dy="1.1em" text-anchor="middle"></tspan></text></g></g><g><rect class="background" style="stroke: none"></rect></g><g class="edgeLabel" transform="translate(313.0393, 649.80581)"><g class="label" data-id="L_DONE_NEXT_0" transform="translate(0, -10.4609375)"><g><rect class="background" x="-12.87890625" y="-0.8515625" width="25.7578125" height="22.625"></rect><text y="-10.1" text-anchor="middle"><tspan class="text-outer-tspan row" x="0" y="-0.1em" dy="1.1em" text-anchor="middle"><tspan font-style="normal" class="text-inner-tspan" font-weight="normal">No</tspan></tspan></text></g></g></g><g class="edgeLabel"><g class="label" data-id="L_NEXT_MAT_0" transform="translate(0, -10.4609375)"><text y="-10.1" text-anchor="middle"><tspan class="text-outer-tspan row" x="0" y="-0.1em" dy="1.1em" text-anchor="middle"></tspan></text></g></g><g><rect class="background" style="stroke: none"></rect></g><g class="edgeLabel" transform="translate(463.1124557598741, 665.1890625000001)"><g class="label" data-id="L_DONE_END_0" transform="translate(0, -10.4609375)"><g><rect class="background" x="-15.9765625" y="-0.8515625" width="31.953125" height="22.625"></rect><text y="-10.1" text-anchor="middle"><tspan class="text-outer-tspan row" x="0" y="-0.1em" dy="1.1em" text-anchor="middle"><tspan font-style="normal" class="text-inner-tspan" font-weight="normal">Yes</tspan></tspan></text></g></g></g></g><g class="nodes"><g class="node default " id="gd1-flowchart-START-0" data-look="classic" transform="translate(319.30427475493707, 24.8125)"><g class="basic label-container outer-path"><path d="M-99.08984375 -16.8125 C-40.56692648748164 -16.8125, 17.955990775036724 -16.8125, 99.08984375 -16.8125 C99.08984375 -16.8125, 99.08984375 -16.8125, 99.08984375 -16.8125 C99.5102351036826 -16.79901886752953, 99.93062645736521 -16.78553773505906, 100.16702432342574 -16.77795691561503 C100.51388267167391 -16.744495907917724, 100.86074101992209 -16.71103490022042, 101.23977853082076 -16.674469607403328 C101.47498985705869 -16.636442464268256, 101.71020118329663 -16.598415321133185, 102.30369819504182 -16.502463326912288 C102.63515254237288 -16.426811035075726, 102.96660688970395 -16.35115874323916, 103.35441144197858 -16.26264488484368 C103.58435363164328 -16.194399249942386, 103.81429582130798 -16.126153615041087, 104.38760066552213 -15.955999746616866 C104.65193672849273 -15.858721631947905, 104.91627279146333 -15.761443517278941, 105.39902026953447 -15.58378798287999 C105.60556687553078 -15.492355927392799, 105.8121134815271 -15.400923871905606, 106.38451411391395 -15.147539091609422 C106.68168963330787 -14.992502813491615, 106.9788651527018 -14.837466535373808, 107.3400325930662 -14.649045713074486 C107.63784013297172 -14.468513032272396, 107.93564767287724 -14.287980351470306, 108.26164927660236 -14.090356263494073 C108.4825818595616 -13.936243257639068, 108.70351444252086 -13.782130251784062, 109.14557704388356 -13.47376651765502 C109.37720712074018 -13.289047695297079, 109.60883719759681 -13.104328872939137, 109.98818364611219 -12.801810175081075 C110.22387667508232 -12.587760002266217, 110.45956970405246 -12.373709829451359, 110.78600663202111 -12.077248448518045 C111.02711986705778 -11.828279237577936, 111.26823310209446 -11.579310026637827, 111.53576757582874 -11.303058717518391 C111.71266366805368 -11.095266501918184, 111.88955976027862 -10.887474286317977, 112.23438554899376 -10.48242229374996 C112.36650550354653 -10.305393591024712, 112.4986254580993 -10.128364888299467, 112.87898978041132 -9.61871134830398 C113.05082791590453 -9.35472182718612, 113.22266605139774 -9.090732306068261, 113.46693145302739 -8.715475054720704 C113.61404907912427 -8.454252812310639, 113.76116670522116 -8.193030569900573, 113.99579458839607 -7.776425004674043 C114.16030320316878 -7.434819346178024, 114.3248118179415 -7.093213687682006, 114.46340597445335 -6.80541995624525 C114.61646635288562 -6.427357862296418, 114.7695267313179 -6.049295768347587, 114.86784409571159 -5.806449977458242 C114.99215121632058 -5.432056735833987, 115.11645833692955 -5.057663494209732, 115.20744702917885 -4.783620050234238 C115.26776079891114 -4.553617506091873, 115.32807456864343 -4.323614961949509, 115.4808192735569 -3.7411332021405377 C115.53237724377156 -3.476393921869112, 115.58393521398622 -3.2116546415976863, 115.68683748365544 -2.6832732352486945 C115.72439240098934 -2.3920047124641735, 115.76194731832325 -2.100736189679652, 115.82465508645839 -1.6143871230729026 C115.8388236058502 -1.3937009969224836, 115.85299212524201 -1.173014870772065, 115.89370575987407 -0.5388671479234525 C115.89370575987407 -0.20955582256260824, 115.89370575987407 0.11975550279823599, 115.89370575987407 0.5388671479234484 C115.87130045078565 0.887847922215478, 115.84889514169724 1.2368286965075077, 115.82465508645839 1.6143871230728912 C115.77288876813242 2.0158764655933616, 115.72112244980644 2.4173658081138325, 115.68683748365544 2.683273235248683 C115.63353822004606 2.9569536890794796, 115.58023895643669 3.230634142910276, 115.4808192735569 3.7411332021405337 C115.3847101313274 4.107639015427417, 115.28860098909787 4.4741448287143015, 115.20744702917887 4.7836200502342265 C115.09333603976594 5.127304169228837, 114.97922505035302 5.470988288223446, 114.8678440957116 5.806449977458231 C114.74136239465915 6.118862224415145, 114.61488069360668 6.43127447137206, 114.46340597445335 6.805419956245245 C114.36874125259244 7.001993276690003, 114.27407653073152 7.198566597134762, 113.99579458839607 7.776425004674039 C113.88084038049358 7.980537841180703, 113.76588617259108 8.184650677687367, 113.46693145302739 8.7154750547207 C113.25427014411555 9.042179932766533, 113.04160883520372 9.368884810812364, 112.87898978041133 9.618711348303972 C112.6977927270435 9.86149889242571, 112.51659567367568 10.104286436547445, 112.23438554899376 10.482422293749956 C112.0873640757283 10.65512208200638, 111.94034260246283 10.827821870262808, 111.53576757582874 11.303058717518383 C111.36781370639444 11.476484876978427, 111.19985983696013 11.649911036438471, 110.78600663202111 12.077248448518041 C110.59375622349694 12.25184518287263, 110.40150581497277 12.426441917227217, 109.9881836461122 12.801810175081064 C109.71585471671195 13.018985249300611, 109.44352578731167 13.236160323520158, 109.14557704388358 13.473766517655019 C108.82660212165297 13.696269615201253, 108.50762719942237 13.918772712747487, 108.26164927660236 14.090356263494066 C107.94764724904854 14.280706137877928, 107.63364522149472 14.47105601226179, 107.34003259306621 14.649045713074484 C107.10933531364678 14.76940033597894, 106.87863803422735 14.889754958883396, 106.38451411391395 15.14753909160942 C106.11165675171486 15.268324951828891, 105.83879938951577 15.389110812048362, 105.39902026953449 15.583787982879988 C105.06141880491165 15.70802844261492, 104.72381734028882 15.83226890234985, 104.38760066552213 15.955999746616863 C104.15460255929287 16.025152361513694, 103.9216044530636 16.094304976410523, 103.35441144197861 16.262644884843677 C103.08897504851937 16.323229009516403, 102.82353865506013 16.383813134189133, 102.30369819504183 16.502463326912284 C101.99433043269822 16.552479507545172, 101.68496267035461 16.60249568817806, 101.23977853082077 16.674469607403324 C100.91059564666574 16.70622548433742, 100.58141276251071 16.737981361271515, 100.16702432342574 16.77795691561503 C99.79125558037933 16.790007087815038, 99.41548683733292 16.80205726001505, 99.08984375 16.8125 C99.08984375 16.8125, 99.08984375 16.8125, 99.08984375 16.8125 C23.165612793326034 16.8125, -52.75861816334793 16.8125, -99.08984375 16.8125 C-99.33315908014045 16.804697350946956, -99.5764744102809 16.796894701893912, -100.16702432342572 16.77795691561503 C-100.50950849143058 16.744917879825074, -100.85199265943544 16.71187884403512, -101.23977853082076 16.674469607403324 C-101.51080089087021 16.63065281404032, -101.78182325091967 16.586836020677318, -102.30369819504182 16.502463326912284 C-102.6123438551927 16.432016969084003, -102.9209895153436 16.361570611255722, -103.35441144197858 16.26264488484368 C-103.7516474412552 16.144747325392693, -104.14888344053182 16.0268497659417, -104.38760066552211 15.95599974661687 C-104.69659419474007 15.842287271559789, -105.00558772395803 15.728574796502707, -105.39902026953447 15.58378798287999 C-105.7497198742447 15.428543671008923, -106.10041947895493 15.273299359137855, -106.38451411391394 15.147539091609424 C-106.61880974907909 15.025307208817281, -106.85310538424424 14.90307532602514, -107.3400325930662 14.649045713074488 C-107.67077465890328 14.448547929107923, -108.00151672474038 14.248050145141356, -108.26164927660234 14.090356263494078 C-108.55610310307142 13.884958020849952, -108.8505569295405 13.679559778205824, -109.14557704388356 13.473766517655022 C-109.41685784624772 13.257427296854935, -109.6881386486119 13.041088076054846, -109.98818364611219 12.801810175081076 C-110.17748692904512 12.629889942211795, -110.36679021197804 12.457969709342512, -110.78600663202111 12.077248448518052 C-111.08461008180659 11.768915870815391, -111.38321353159206 11.46058329311273, -111.53576757582874 11.303058717518388 C-111.73911318716125 11.064197391754151, -111.94245879849376 10.825336065989914, -112.23438554899374 10.482422293749961 C-112.3840442477418 10.281893271615505, -112.53370294648985 10.08136424948105, -112.87898978041132 9.618711348303982 C-113.0200403898505 9.402019734813436, -113.16109099928967 9.185328121322891, -113.46693145302737 8.715475054720711 C-113.67765420393683 8.341315472488636, -113.88837695484628 7.967155890256563, -113.99579458839607 7.776425004674045 C-114.1317194230788 7.4941741771297865, -114.26764425776155 7.211923349585527, -114.46340597445335 6.8054199562452515 C-114.61353554224516 6.434597021241728, -114.76366511003698 6.063774086238203, -114.86784409571159 5.806449977458245 C-114.97602222514845 5.480634687438666, -115.08420035458532 5.154819397419089, -115.20744702917885 4.783620050234233 C-115.27817789854394 4.513892590392428, -115.34890876790904 4.244165130550623, -115.4808192735569 3.74113320214054 C-115.54372030106165 3.4181497200404833, -115.60662132856642 3.0951662379404263, -115.68683748365544 2.6832732352486963 C-115.72542898549644 2.3839651677239724, -115.76402048733742 2.084657100199249, -115.82465508645839 1.614387123072912 C-115.84229090654274 1.3396949898814317, -115.8599267266271 1.0650028566899512, -115.89370575987407 0.5388671479234546 C-115.89370575987407 0.11726696294825045, -115.89370575987407 -0.3043332220269537, -115.89370575987407 -0.5388671479234464 C-115.86703589203857 -0.9542718669911348, -115.84036602420308 -1.369676586058823, -115.82465508645839 -1.614387123072889 C-115.78220651678576 -1.9436098470355772, -115.73975794711315 -2.2728325709982653, -115.68683748365544 -2.6832732352486883 C-115.63802399095333 -2.9339202035387184, -115.5892104982512 -3.184567171828749, -115.4808192735569 -3.741133202140532 C-115.39092144908048 -4.0839525688327525, -115.30102362460406 -4.4267719355249735, -115.20744702917887 -4.783620050234225 C-115.09665468907889 -5.117308926253211, -114.9858623489789 -5.450997802272197, -114.8678440957116 -5.8064499774582226 C-114.77536425749726 -6.034876965823699, -114.68288441928291 -6.263303954189175, -114.46340597445335 -6.8054199562452435 C-114.34002777784909 -7.061617421364519, -114.21664958124481 -7.317814886483795, -113.99579458839607 -7.776425004674037 C-113.84995496275205 -8.03537802786846, -113.70411533710804 -8.29433105106288, -113.46693145302739 -8.715475054720706 C-113.32395660467877 -8.935122815906636, -113.18098175633016 -9.154770577092568, -112.87898978041132 -9.618711348303977 C-112.64242814814911 -9.93568238432729, -112.4058665158869 -10.252653420350603, -112.23438554899376 -10.482422293749956 C-112.08737831045616 -10.655105361085063, -111.94037107191855 -10.82778842842017, -111.53576757582874 -11.303058717518383 C-111.30831318102999 -11.537924054501202, -111.08085878623125 -11.772789391484022, -110.78600663202113 -12.077248448518036 C-110.56892438140933 -12.274396804842056, -110.35184213079755 -12.471545161166075, -109.9881836461122 -12.80181017508106 C-109.70920858834289 -13.024285359814025, -109.43023353057357 -13.24676054454699, -109.14557704388358 -13.473766517655017 C-108.93050710615033 -13.623789995990178, -108.71543716841708 -13.77381347432534, -108.26164927660236 -14.090356263494064 C-107.93591376035343 -14.287819047678537, -107.6101782441045 -14.485281831863011, -107.34003259306621 -14.649045713074482 C-106.97848290230057 -14.837665955163285, -106.61693321153494 -15.026286197252087, -106.38451411391395 -15.14753909160942 C-106.08907103907296 -15.278322976834097, -105.79362796423196 -15.409106862058776, -105.39902026953449 -15.583787982879986 C-105.11989742407695 -15.686507770191657, -104.84077457861942 -15.78922755750333, -104.38760066552213 -15.955999746616863 C-104.16199577521184 -16.022958093836724, -103.93639088490153 -16.089916441056587, -103.35441144197861 -16.262644884843677 C-102.93651236552915 -16.358027621996936, -102.51861328907971 -16.453410359150194, -102.30369819504183 -16.502463326912284 C-102.05993400139695 -16.541873231321233, -101.81616980775208 -16.58128313573018, -101.23977853082077 -16.674469607403324 C-100.9498555788997 -16.702438125891785, -100.65993262697863 -16.73040664438025, -100.16702432342574 -16.77795691561503 C-99.8585731183163 -16.78784834539904, -99.55012191320687 -16.79773977518305, -99.08984375 -16.8125 C-99.08984375 -16.8125, -99.08984375 -16.8125, -99.08984375 -16.8125" stroke="none" stroke-width="0" fill="#ffffff"></path><path d="M-99.08984375 -16.8125 C-39.666562709196064 -16.8125, 19.75671833160787 -16.8125, 99.08984375 -16.8125 M-99.08984375 -16.8125 C-38.27111033161308 -16.8125, 22.54762308677384 -16.8125, 99.08984375 -16.8125 M99.08984375 -16.8125 C99.08984375 -16.8125, 99.08984375 -16.8125, 99.08984375 -16.8125 M99.08984375 -16.8125 C99.08984375 -16.8125, 99.08984375 -16.8125, 99.08984375 -16.8125 M99.08984375 -16.8125 C99.46414231954735 -16.800496973402584, 99.83844088909468 -16.78849394680517, 100.16702432342574 -16.77795691561503 M99.08984375 -16.8125 C99.31764706189604 -16.80519479117974, 99.54545037379206 -16.797889582359485, 100.16702432342574 -16.77795691561503 M100.16702432342574 -16.77795691561503 C100.40483080591137 -16.75501601025378, 100.64263728839703 -16.73207510489253, 101.23977853082076 -16.674469607403328 M100.16702432342574 -16.77795691561503 C100.51940321287226 -16.74396334794774, 100.87178210231879 -16.709969780280453, 101.23977853082076 -16.674469607403328 M101.23977853082076 -16.674469607403328 C101.61304584484458 -16.61412264280321, 101.98631315886841 -16.55377567820309, 102.30369819504182 -16.502463326912288 M101.23977853082076 -16.674469607403328 C101.51762068837762 -16.629550242067648, 101.79546284593448 -16.584630876731964, 102.30369819504182 -16.502463326912288 M102.30369819504182 -16.502463326912288 C102.67504396591643 -16.417706077967775, 103.04638973679104 -16.332948829023266, 103.35441144197858 -16.26264488484368 M102.30369819504182 -16.502463326912288 C102.71162739234859 -16.409356149613807, 103.11955658965535 -16.31624897231532, 103.35441144197858 -16.26264488484368 M103.35441144197858 -16.26264488484368 C103.58473562304637 -16.19428587689906, 103.81505980411417 -16.125926868954437, 104.38760066552213 -15.955999746616866 M103.35441144197858 -16.26264488484368 C103.76128922399089 -16.141885694887495, 104.16816700600317 -16.021126504931306, 104.38760066552213 -15.955999746616866 M104.38760066552213 -15.955999746616866 C104.74544826973627 -15.824308520359068, 105.10329587395042 -15.69261729410127, 105.39902026953447 -15.58378798287999 M104.38760066552213 -15.955999746616866 C104.68313177839558 -15.847241565219777, 104.97866289126901 -15.73848338382269, 105.39902026953447 -15.58378798287999 M105.39902026953447 -15.58378798287999 C105.7032733334576 -15.449104176827692, 106.00752639738073 -15.314420370775395, 106.38451411391395 -15.147539091609422 M105.39902026953447 -15.58378798287999 C105.76204028053989 -15.423089792613911, 106.12506029154531 -15.262391602347833, 106.38451411391395 -15.147539091609422 M106.38451411391395 -15.147539091609422 C106.58101301545994 -15.045025740536433, 106.77751191700592 -14.942512389463444, 107.3400325930662 -14.649045713074486 M106.38451411391395 -15.147539091609422 C106.6048289930689 -15.032600960272699, 106.82514387222385 -14.917662828935976, 107.3400325930662 -14.649045713074486 M107.3400325930662 -14.649045713074486 C107.66337324422474 -14.453034710181596, 107.98671389538329 -14.257023707288706, 108.26164927660236 -14.090356263494073 M107.3400325930662 -14.649045713074486 C107.63643661164944 -14.46936385514597, 107.93284063023269 -14.289681997217452, 108.26164927660236 -14.090356263494073 M108.26164927660236 -14.090356263494073 C108.47096504236337 -13.944346646432642, 108.6802808081244 -13.79833702937121, 109.14557704388356 -13.47376651765502 M108.26164927660236 -14.090356263494073 C108.56943210051956 -13.875660289233132, 108.87721492443677 -13.66096431497219, 109.14557704388356 -13.47376651765502 M109.14557704388356 -13.47376651765502 C109.44652470286051 -13.233768768174441, 109.74747236183748 -12.993771018693861, 109.98818364611219 -12.801810175081075 M109.14557704388356 -13.47376651765502 C109.46360825401851 -13.22014509073833, 109.78163946415347 -12.966523663821638, 109.98818364611219 -12.801810175081075 M109.98818364611219 -12.801810175081075 C110.27920778671263 -12.537509750664565, 110.57023192731307 -12.273209326248054, 110.78600663202111 -12.077248448518045 M109.98818364611219 -12.801810175081075 C110.15949717707988 -12.646227758963862, 110.33081070804757 -12.490645342846651, 110.78600663202111 -12.077248448518045 M110.78600663202111 -12.077248448518045 C111.01505539658443 -11.840736793853129, 111.24410416114773 -11.60422513918821, 111.53576757582874 -11.303058717518391 M110.78600663202111 -12.077248448518045 C111.03816348837758 -11.816875791867083, 111.29032034473403 -11.55650313521612, 111.53576757582874 -11.303058717518391 M111.53576757582874 -11.303058717518391 C111.7170096947392 -11.090161411677439, 111.89825181364968 -10.877264105836485, 112.23438554899376 -10.48242229374996 M111.53576757582874 -11.303058717518391 C111.75927188117637 -11.040517842701805, 111.98277618652402 -10.777976967885218, 112.23438554899376 -10.48242229374996 M112.23438554899376 -10.48242229374996 C112.37138444036334 -10.298856260170469, 112.50838333173293 -10.115290226590979, 112.87898978041132 -9.61871134830398 M112.23438554899376 -10.48242229374996 C112.39335479699659 -10.269417983822592, 112.55232404499941 -10.056413673895225, 112.87898978041132 -9.61871134830398 M112.87898978041132 -9.61871134830398 C113.04588070052678 -9.362322078519686, 113.21277162064224 -9.10593280873539, 113.46693145302739 -8.715475054720704 M112.87898978041132 -9.61871134830398 C113.06167162338578 -9.338062980551747, 113.24435346636025 -9.057414612799514, 113.46693145302739 -8.715475054720704 M113.46693145302739 -8.715475054720704 C113.66056759858648 -8.371654470494594, 113.85420374414558 -8.027833886268484, 113.99579458839607 -7.776425004674043 M113.46693145302739 -8.715475054720704 C113.59159630649624 -8.494119983701477, 113.71626115996509 -8.272764912682252, 113.99579458839607 -7.776425004674043 M113.99579458839607 -7.776425004674043 C114.11713721541332 -7.52445444335643, 114.23847984243056 -7.272483882038817, 114.46340597445335 -6.80541995624525 M113.99579458839607 -7.776425004674043 C114.13915760433912 -7.4787286345911435, 114.28252062028218 -7.181032264508243, 114.46340597445335 -6.80541995624525 M114.46340597445335 -6.80541995624525 C114.60847561006888 -6.447095151544289, 114.7535452456844 -6.0887703468433285, 114.86784409571159 -5.806449977458242 M114.46340597445335 -6.80541995624525 C114.60392143432317 -6.458344053685191, 114.74443689419299 -6.111268151125131, 114.86784409571159 -5.806449977458242 M114.86784409571159 -5.806449977458242 C114.99620369281638 -5.419851322303059, 115.12456328992117 -5.0332526671478774, 115.20744702917885 -4.783620050234238 M114.86784409571159 -5.806449977458242 C114.9864873465687 -5.449115409111576, 115.10513059742578 -5.09178084076491, 115.20744702917885 -4.783620050234238 M115.20744702917885 -4.783620050234238 C115.26459460119155 -4.565691590235471, 115.32174217320423 -4.3477631302367055, 115.4808192735569 -3.7411332021405377 M115.20744702917885 -4.783620050234238 C115.31334327089385 -4.379791784853474, 115.41923951260884 -3.9759635194727103, 115.4808192735569 -3.7411332021405377 M115.4808192735569 -3.7411332021405377 C115.53786296545681 -3.4482259004230884, 115.59490665735672 -3.155318598705639, 115.68683748365544 -2.6832732352486945 M115.4808192735569 -3.7411332021405377 C115.54796291607273 -3.396364788635631, 115.61510655858856 -3.051596375130725, 115.68683748365544 -2.6832732352486945 M115.68683748365544 -2.6832732352486945 C115.7265813140867 -2.3750279347308134, 115.76632514451798 -2.066782634212932, 115.82465508645839 -1.6143871230729026 M115.68683748365544 -2.6832732352486945 C115.74023785037151 -2.2691105360939816, 115.79363821708758 -1.854947836939269, 115.82465508645839 -1.6143871230729026 M115.82465508645839 -1.6143871230729026 C115.84088028069189 -1.3616666261451467, 115.85710547492539 -1.108946129217391, 115.89370575987407 -0.5388671479234525 M115.82465508645839 -1.6143871230729026 C115.84173256937464 -1.3483915419563326, 115.85881005229088 -1.0823959608397624, 115.89370575987407 -0.5388671479234525 M115.89370575987407 -0.5388671479234525 C115.89370575987407 -0.16824239323273082, 115.89370575987407 0.20238236145799082, 115.89370575987407 0.5388671479234484 M115.89370575987407 -0.5388671479234525 C115.89370575987407 -0.15576999051307544, 115.89370575987407 0.2273271668973016, 115.89370575987407 0.5388671479234484 M115.89370575987407 0.5388671479234484 C115.87635117233982 0.8091788571402362, 115.85899658480558 1.079490566357024, 115.82465508645839 1.6143871230728912 M115.89370575987407 0.5388671479234484 C115.87740713212368 0.7927314311513065, 115.86110850437328 1.0465957143791647, 115.82465508645839 1.6143871230728912 M115.82465508645839 1.6143871230728912 C115.78740866280779 1.9032630297686772, 115.75016223915719 2.1921389364644632, 115.68683748365544 2.683273235248683 M115.82465508645839 1.6143871230728912 C115.77450158024604 2.0033678133258936, 115.72434807403368 2.3923485035788965, 115.68683748365544 2.683273235248683 M115.68683748365544 2.683273235248683 C115.61582422100807 3.047911330284546, 115.5448109583607 3.4125494253204094, 115.4808192735569 3.7411332021405337 M115.68683748365544 2.683273235248683 C115.6315243276617 2.96729460083687, 115.57621117166796 3.2513159664250564, 115.4808192735569 3.7411332021405337 M115.4808192735569 3.7411332021405337 C115.37570257924787 4.141988715404388, 115.27058588493884 4.542844228668242, 115.20744702917887 4.7836200502342265 M115.4808192735569 3.7411332021405337 C115.40262000566845 4.039340902376324, 115.32442073777999 4.337548602612115, 115.20744702917887 4.7836200502342265 M115.20744702917887 4.7836200502342265 C115.11550630093998 5.060530874924042, 115.0235655727011 5.337441699613857, 114.8678440957116 5.806449977458231 M115.20744702917887 4.7836200502342265 C115.12709910257772 5.025615203453302, 115.04675117597655 5.267610356672378, 114.8678440957116 5.806449977458231 M114.8678440957116 5.806449977458231 C114.74849966444233 6.101233030060933, 114.62915523317307 6.396016082663635, 114.46340597445335 6.805419956245245 M114.8678440957116 5.806449977458231 C114.77763439403981 6.029269684673507, 114.68742469236801 6.252089391888783, 114.46340597445335 6.805419956245245 M114.46340597445335 6.805419956245245 C114.28444903348075 7.177027873239972, 114.10549209250816 7.548635790234699, 113.99579458839607 7.776425004674039 M114.46340597445335 6.805419956245245 C114.31601018202406 7.111490472989414, 114.16861438959475 7.417560989733582, 113.99579458839607 7.776425004674039 M113.99579458839607 7.776425004674039 C113.83286878230237 8.065716271420246, 113.66994297620867 8.355007538166456, 113.46693145302739 8.7154750547207 M113.99579458839607 7.776425004674039 C113.86963417986522 8.000435585147224, 113.74347377133435 8.224446165620412, 113.46693145302739 8.7154750547207 M113.46693145302739 8.7154750547207 C113.26795171101386 9.021161371995603, 113.06897196900034 9.326847689270505, 112.87898978041133 9.618711348303972 M113.46693145302739 8.7154750547207 C113.34068663917009 8.909420990284692, 113.21444182531279 9.103366925848684, 112.87898978041133 9.618711348303972 M112.87898978041133 9.618711348303972 C112.74933482670565 9.792437174460314, 112.61967987299997 9.966163000616655, 112.23438554899376 10.482422293749956 M112.87898978041133 9.618711348303972 C112.67667232141221 9.889798311863107, 112.4743548624131 10.160885275422244, 112.23438554899376 10.482422293749956 M112.23438554899376 10.482422293749956 C111.96311417323618 10.801073087493364, 111.6918427974786 11.119723881236771, 111.53576757582874 11.303058717518383 M112.23438554899376 10.482422293749956 C112.05930432776333 10.68808265861092, 111.8842231065329 10.893743023471886, 111.53576757582874 11.303058717518383 M111.53576757582874 11.303058717518383 C111.23960673446257 11.608869101486238, 110.94344589309638 11.914679485454094, 110.78600663202111 12.077248448518041 M111.53576757582874 11.303058717518383 C111.29517962823581 11.551485526045932, 111.05459168064287 11.799912334573483, 110.78600663202111 12.077248448518041 M110.78600663202111 12.077248448518041 C110.48623481363111 12.349493282452158, 110.18646299524111 12.621738116386277, 109.9881836461122 12.801810175081064 M110.78600663202111 12.077248448518041 C110.58466494315394 12.260101643138043, 110.38332325428676 12.442954837758046, 109.9881836461122 12.801810175081064 M109.9881836461122 12.801810175081064 C109.72529832179926 13.011454225548361, 109.46241299748631 13.221098276015656, 109.14557704388358 13.473766517655019 M109.9881836461122 12.801810175081064 C109.73777317562092 13.001505861595385, 109.48736270512964 13.201201548109706, 109.14557704388358 13.473766517655019 M109.14557704388358 13.473766517655019 C108.90836850217828 13.63923292775637, 108.67115996047296 13.80469933785772, 108.26164927660236 14.090356263494066 M109.14557704388358 13.473766517655019 C108.92764250305642 13.625788219101821, 108.70970796222926 13.777809920548625, 108.26164927660236 14.090356263494066 M108.26164927660236 14.090356263494066 C108.03668912679119 14.226728428322179, 107.81172897698002 14.363100593150293, 107.34003259306621 14.649045713074484 M108.26164927660236 14.090356263494066 C107.93672927544716 14.287324677636217, 107.61180927429197 14.484293091778369, 107.34003259306621 14.649045713074484 M107.34003259306621 14.649045713074484 C106.99157275834773 14.830836985647942, 106.64311292362923 15.012628258221401, 106.38451411391395 15.14753909160942 M107.34003259306621 14.649045713074484 C106.98097100508242 14.836367913535701, 106.62190941709864 15.023690113996919, 106.38451411391395 15.14753909160942 M106.38451411391395 15.14753909160942 C106.1217434230441 15.263859881641912, 105.85897273217424 15.380180671674403, 105.39902026953449 15.583787982879988 M106.38451411391395 15.14753909160942 C106.03502936723893 15.302245621865785, 105.68554462056392 15.456952152122147, 105.39902026953449 15.583787982879988 M105.39902026953449 15.583787982879988 C105.14200242948385 15.678372923865494, 104.8849845894332 15.772957864850998, 104.38760066552213 15.955999746616863 M105.39902026953449 15.583787982879988 C105.1190086560397 15.686834845045054, 104.83899704254489 15.78988170721012, 104.38760066552213 15.955999746616863 M104.38760066552213 15.955999746616863 C104.15199860910896 16.02592520025986, 103.9163965526958 16.095850653902858, 103.35441144197861 16.262644884843677 M104.38760066552213 15.955999746616863 C104.11164234319575 16.03790272814854, 103.83568402086937 16.119805709680218, 103.35441144197861 16.262644884843677 M103.35441144197861 16.262644884843677 C103.0869505315888 16.323691092294602, 102.81948962119898 16.384737299745524, 102.30369819504183 16.502463326912284 M103.35441144197861 16.262644884843677 C103.03489412408113 16.33557262760842, 102.71537680618364 16.408500370373165, 102.30369819504183 16.502463326912284 M102.30369819504183 16.502463326912284 C102.03421976648269 16.546030509405302, 101.76474133792355 16.58959769189832, 101.23977853082077 16.674469607403324 M102.30369819504183 16.502463326912284 C101.91960236209378 16.564560962475653, 101.53550652914572 16.626658598039025, 101.23977853082077 16.674469607403324 M101.23977853082077 16.674469607403324 C100.82701205089941 16.714288693297014, 100.41424557097805 16.754107779190708, 100.16702432342574 16.77795691561503 M101.23977853082077 16.674469607403324 C100.94667980792086 16.70274448869869, 100.65358108502093 16.73101936999406, 100.16702432342574 16.77795691561503 M100.16702432342574 16.77795691561503 C99.8897873981251 16.786847364200483, 99.61255047282447 16.795737812785934, 99.08984375 16.8125 M100.16702432342574 16.77795691561503 C99.79096028733674 16.790016557288162, 99.41489625124775 16.802076198961295, 99.08984375 16.8125 M99.08984375 16.8125 C99.08984375 16.8125, 99.08984375 16.8125, 99.08984375 16.8125 M99.08984375 16.8125 C99.08984375 16.8125, 99.08984375 16.8125, 99.08984375 16.8125 M99.08984375 16.8125 C34.970924347089436 16.8125, -29.147995055821127 16.8125, -99.08984375 16.8125 M99.08984375 16.8125 C37.590552968223854 16.8125, -23.908737813552293 16.8125, -99.08984375 16.8125 M-99.08984375 16.8125 C-99.34483446191905 16.804322944178068, -99.59982517383811 16.796145888356133, -100.16702432342572 16.77795691561503 M-99.08984375 16.8125 C-99.41963881136145 16.80192411428928, -99.74943387272292 16.791348228578563, -100.16702432342572 16.77795691561503 M-100.16702432342572 16.77795691561503 C-100.41623586132809 16.753915778274312, -100.66544739923044 16.7298746409336, -101.23977853082076 16.674469607403324 M-100.16702432342572 16.77795691561503 C-100.45092738107259 16.750569129087218, -100.73483043871946 16.723181342559407, -101.23977853082076 16.674469607403324 M-101.23977853082076 16.674469607403324 C-101.50405400708611 16.63174359788767, -101.76832948335148 16.589017588372013, -102.30369819504182 16.502463326912284 M-101.23977853082076 16.674469607403324 C-101.55857778014233 16.622928617098115, -101.87737702946389 16.571387626792905, -102.30369819504182 16.502463326912284 M-102.30369819504182 16.502463326912284 C-102.51997613355 16.453099298793237, -102.73625407205819 16.40373527067419, -103.35441144197858 16.26264488484368 M-102.30369819504182 16.502463326912284 C-102.55215664064472 16.4457543080463, -102.80061508624763 16.38904528918032, -103.35441144197858 16.26264488484368 M-103.35441144197858 16.26264488484368 C-103.63602229355554 16.179064262301164, -103.9176331451325 16.09548363975865, -104.38760066552211 15.95599974661687 M-103.35441144197858 16.26264488484368 C-103.69583925336177 16.161310902616307, -104.03726706474494 16.059976920388937, -104.38760066552211 15.95599974661687 M-104.38760066552211 15.95599974661687 C-104.77740438288268 15.812548375322116, -105.16720810024324 15.669097004027364, -105.39902026953447 15.58378798287999 M-104.38760066552211 15.95599974661687 C-104.69104432531977 15.84432967480889, -104.99448798511743 15.73265960300091, -105.39902026953447 15.58378798287999 M-105.39902026953447 15.58378798287999 C-105.75084691347755 15.428044764172975, -106.1026735574206 15.272301545465963, -106.38451411391394 15.147539091609424 M-105.39902026953447 15.58378798287999 C-105.74280791078348 15.43160339219709, -106.0865955520325 15.27941880151419, -106.38451411391394 15.147539091609424 M-106.38451411391394 15.147539091609424 C-106.59583777436048 15.03729167331373, -106.80716143480701 14.927044255018037, -107.3400325930662 14.649045713074488 M-106.38451411391394 15.147539091609424 C-106.7301897983248 14.96720030846812, -107.07586548273567 14.786861525326817, -107.3400325930662 14.649045713074488 M-107.3400325930662 14.649045713074488 C-107.62020557517586 14.479203204840415, -107.9003785572855 14.309360696606342, -108.26164927660234 14.090356263494078 M-107.3400325930662 14.649045713074488 C-107.53349341325425 14.531768626974515, -107.72695423344231 14.414491540874542, -108.26164927660234 14.090356263494078 M-108.26164927660234 14.090356263494078 C-108.5720710338273 13.873819483595234, -108.88249279105226 13.65728270369639, -109.14557704388356 13.473766517655022 M-108.26164927660234 14.090356263494078 C-108.59093826269726 13.860658521484718, -108.9202272487922 13.630960779475355, -109.14557704388356 13.473766517655022 M-109.14557704388356 13.473766517655022 C-109.40039722950677 13.270554200670448, -109.65521741512997 13.067341883685874, -109.98818364611219 12.801810175081076 M-109.14557704388356 13.473766517655022 C-109.34406103332103 13.315480817959436, -109.54254502275847 13.157195118263848, -109.98818364611219 12.801810175081076 M-109.98818364611219 12.801810175081076 C-110.16670563175143 12.639681231156425, -110.34522761739066 12.477552287231775, -110.78600663202111 12.077248448518052 M-109.98818364611219 12.801810175081076 C-110.17546486464427 12.631726327599749, -110.36274608317635 12.461642480118423, -110.78600663202111 12.077248448518052 M-110.78600663202111 12.077248448518052 C-111.03811557925926 11.816925261965153, -111.29022452649741 11.556602075412254, -111.53576757582874 11.303058717518388 M-110.78600663202111 12.077248448518052 C-111.07291447103961 11.780992549159793, -111.3598223100581 11.484736649801533, -111.53576757582874 11.303058717518388 M-111.53576757582874 11.303058717518388 C-111.70850185014689 11.10015521004564, -111.88123612446505 10.897251702572893, -112.23438554899374 10.482422293749961 M-111.53576757582874 11.303058717518388 C-111.68513470599729 11.127603587191944, -111.83450183616581 10.952148456865498, -112.23438554899374 10.482422293749961 M-112.23438554899374 10.482422293749961 C-112.36783311206418 10.303614716558673, -112.50128067513461 10.124807139367388, -112.87898978041132 9.618711348303982 M-112.23438554899374 10.482422293749961 C-112.44280100713063 10.203164566885375, -112.65121646526751 9.923906840020788, -112.87898978041132 9.618711348303982 M-112.87898978041132 9.618711348303982 C-113.00157691659335 9.430384587873174, -113.1241640527754 9.242057827442364, -113.46693145302737 8.715475054720711 M-112.87898978041132 9.618711348303982 C-113.00792260885193 9.42063590050705, -113.13685543729254 9.222560452710116, -113.46693145302737 8.715475054720711 M-113.46693145302737 8.715475054720711 C-113.6219793771036 8.44017176521858, -113.77702730117983 8.164868475716446, -113.99579458839607 7.776425004674045 M-113.46693145302737 8.715475054720711 C-113.67190570085013 8.351522521818131, -113.87687994867288 7.987569988915551, -113.99579458839607 7.776425004674045 M-113.99579458839607 7.776425004674045 C-114.13854066930097 7.480009713398167, -114.28128675020588 7.183594422122289, -114.46340597445335 6.8054199562452515 M-113.99579458839607 7.776425004674045 C-114.17630980296073 7.401581299223673, -114.3568250175254 7.026737593773301, -114.46340597445335 6.8054199562452515 M-114.46340597445335 6.8054199562452515 C-114.58600847766618 6.502589402951395, -114.70861098087902 6.19975884965754, -114.86784409571159 5.806449977458245 M-114.46340597445335 6.8054199562452515 C-114.59767816662836 6.4737650455967435, -114.73195035880336 6.142110134948235, -114.86784409571159 5.806449977458245 M-114.86784409571159 5.806449977458245 C-114.9362234877239 5.600502143493753, -115.0046028797362 5.394554309529261, -115.20744702917885 4.783620050234233 M-114.86784409571159 5.806449977458245 C-114.95593854282137 5.541123538707624, -115.04403298993114 5.275797099957003, -115.20744702917885 4.783620050234233 M-115.20744702917885 4.783620050234233 C-115.30965635141108 4.393851606762307, -115.41186567364329 4.004083163290381, -115.4808192735569 3.74113320214054 M-115.20744702917885 4.783620050234233 C-115.28406195555634 4.491454130837747, -115.36067688193383 4.19928821144126, -115.4808192735569 3.74113320214054 M-115.4808192735569 3.74113320214054 C-115.5435921335196 3.4188078332807437, -115.6063649934823 3.0964824644209474, -115.68683748365544 2.6832732352486963 M-115.4808192735569 3.74113320214054 C-115.53520212132895 3.4618887726500245, -115.589584969101 3.182644343159509, -115.68683748365544 2.6832732352486963 M-115.68683748365544 2.6832732352486963 C-115.7200699925379 2.4255284588574515, -115.75330250142036 2.1677836824662062, -115.82465508645839 1.614387123072912 M-115.68683748365544 2.6832732352486963 C-115.73167264289866 2.3355405938618956, -115.77650780214188 1.987807952475095, -115.82465508645839 1.614387123072912 M-115.82465508645839 1.614387123072912 C-115.84658052664655 1.272880694245517, -115.86850596683472 0.9313742654181221, -115.89370575987407 0.5388671479234546 M-115.82465508645839 1.614387123072912 C-115.84184944907005 1.3465710463565557, -115.85904381168172 1.0787549696401992, -115.89370575987407 0.5388671479234546 M-115.89370575987407 0.5388671479234546 C-115.89370575987407 0.28479068906001104, -115.89370575987407 0.030714230196567494, -115.89370575987407 -0.5388671479234464 M-115.89370575987407 0.5388671479234546 C-115.89370575987407 0.3027180264511964, -115.89370575987407 0.06656890497893814, -115.89370575987407 -0.5388671479234464 M-115.89370575987407 -0.5388671479234464 C-115.87844427885152 -0.776577033695483, -115.86318279782896 -1.0142869194675197, -115.82465508645839 -1.614387123072889 M-115.89370575987407 -0.5388671479234464 C-115.87927858468451 -0.7635820469069167, -115.86485140949496 -0.988296945890387, -115.82465508645839 -1.614387123072889 M-115.82465508645839 -1.614387123072889 C-115.77471864423897 -2.001684307860858, -115.72478220201954 -2.3889814926488278, -115.68683748365544 -2.6832732352486883 M-115.82465508645839 -1.614387123072889 C-115.78446032416677 -1.9261297620530857, -115.74426556187515 -2.2378724010332824, -115.68683748365544 -2.6832732352486883 M-115.68683748365544 -2.6832732352486883 C-115.63896318793016 -2.9290976255620063, -115.59108889220488 -3.1749220158753246, -115.4808192735569 -3.741133202140532 M-115.68683748365544 -2.6832732352486883 C-115.63229173357848 -2.9633541336454736, -115.57774598350153 -3.243435032042259, -115.4808192735569 -3.741133202140532 M-115.4808192735569 -3.741133202140532 C-115.41288615508395 -4.00019162527771, -115.34495303661099 -4.259250048414888, -115.20744702917887 -4.783620050234225 M-115.4808192735569 -3.741133202140532 C-115.38377411433467 -4.111208453893005, -115.28672895511242 -4.481283705645479, -115.20744702917887 -4.783620050234225 M-115.20744702917887 -4.783620050234225 C-115.10899399213078 -5.080144911461864, -115.01054095508269 -5.376669772689503, -114.8678440957116 -5.8064499774582226 M-115.20744702917887 -4.783620050234225 C-115.08437815266866 -5.154283897920347, -114.96130927615846 -5.524947745606471, -114.8678440957116 -5.8064499774582226 M-114.8678440957116 -5.8064499774582226 C-114.75757112091428 -6.078826357190543, -114.64729814611695 -6.351202736922864, -114.46340597445335 -6.8054199562452435 M-114.8678440957116 -5.8064499774582226 C-114.78060694963108 -6.021927414892619, -114.69336980355054 -6.237404852327015, -114.46340597445335 -6.8054199562452435 M-114.46340597445335 -6.8054199562452435 C-114.28138546397916 -7.183389440859925, -114.09936495350496 -7.561358925474605, -113.99579458839607 -7.776425004674037 M-114.46340597445335 -6.8054199562452435 C-114.29694429411171 -7.151081197184032, -114.13048261377008 -7.496742438122822, -113.99579458839607 -7.776425004674037 M-113.99579458839607 -7.776425004674037 C-113.86560244266944 -8.007594342795965, -113.73541029694283 -8.238763680917891, -113.46693145302739 -8.715475054720706 M-113.99579458839607 -7.776425004674037 C-113.86833450026974 -8.002743297875826, -113.7408744121434 -8.229061591077615, -113.46693145302739 -8.715475054720706 M-113.46693145302739 -8.715475054720706 C-113.3164838499072 -8.946602973951395, -113.16603624678702 -9.177730893182082, -112.87898978041132 -9.618711348303977 M-113.46693145302739 -8.715475054720706 C-113.26240363019001 -9.029684714009345, -113.05787580735263 -9.343894373297985, -112.87898978041132 -9.618711348303977 M-112.87898978041132 -9.618711348303977 C-112.63409122866668 -9.946853096924762, -112.38919267692204 -10.274994845545546, -112.23438554899376 -10.482422293749956 M-112.87898978041132 -9.618711348303977 C-112.68044899559817 -9.88473791251601, -112.48190821078502 -10.150764476728042, -112.23438554899376 -10.482422293749956 M-112.23438554899376 -10.482422293749956 C-112.08006549656425 -10.663695408393394, -111.92574544413473 -10.844968523036835, -111.53576757582874 -11.303058717518383 M-112.23438554899376 -10.482422293749956 C-111.99206573540486 -10.767064935179462, -111.74974592181597 -11.05170757660897, -111.53576757582874 -11.303058717518383 M-111.53576757582874 -11.303058717518383 C-111.35998891294412 -11.484564618643368, -111.18421025005951 -11.666070519768356, -110.78600663202113 -12.077248448518036 M-111.53576757582874 -11.303058717518383 C-111.30909905371392 -11.537112576433705, -111.08243053159909 -11.771166435349025, -110.78600663202113 -12.077248448518036 M-110.78600663202113 -12.077248448518036 C-110.56716286985011 -12.275996563033107, -110.34831910767909 -12.474744677548179, -109.9881836461122 -12.80181017508106 M-110.78600663202113 -12.077248448518036 C-110.51893490863951 -12.319795921362644, -110.25186318525789 -12.562343394207252, -109.9881836461122 -12.80181017508106 M-109.9881836461122 -12.80181017508106 C-109.73049742427459 -13.007308079678213, -109.47281120243696 -13.212805984275363, -109.14557704388358 -13.473766517655017 M-109.9881836461122 -12.80181017508106 C-109.66208293757364 -13.061866812236264, -109.33598222903508 -13.321923449391468, -109.14557704388358 -13.473766517655017 M-109.14557704388358 -13.473766517655017 C-108.85536227111484 -13.676207779943459, -108.5651474983461 -13.8786490422319, -108.26164927660236 -14.090356263494064 M-109.14557704388358 -13.473766517655017 C-108.83998114686422 -13.68693698638255, -108.53438524984486 -13.900107455110083, -108.26164927660236 -14.090356263494064 M-108.26164927660236 -14.090356263494064 C-108.0621404321215 -14.211299697462469, -107.86263158764065 -14.332243131430873, -107.34003259306621 -14.649045713074482 M-108.26164927660236 -14.090356263494064 C-107.97525579192252 -14.263969676941908, -107.6888623072427 -14.437583090389754, -107.34003259306621 -14.649045713074482 M-107.34003259306621 -14.649045713074482 C-107.02226908814517 -14.814822730054553, -106.70450558322412 -14.980599747034624, -106.38451411391395 -15.14753909160942 M-107.34003259306621 -14.649045713074482 C-107.0269547332943 -14.812378231981546, -106.7138768735224 -14.975710750888611, -106.38451411391395 -15.14753909160942 M-106.38451411391395 -15.14753909160942 C-106.13438946680526 -15.2582618532004, -105.88426481969658 -15.36898461479138, -105.39902026953449 -15.583787982879986 M-106.38451411391395 -15.14753909160942 C-106.1755267957548 -15.240051577969943, -105.96653947759567 -15.332564064330466, -105.39902026953449 -15.583787982879986 M-105.39902026953449 -15.583787982879986 C-105.16563464085726 -15.669676051626308, -104.93224901218004 -15.755564120372629, -104.38760066552213 -15.955999746616863 M-105.39902026953449 -15.583787982879986 C-105.06907576940202 -15.70521060890226, -104.73913126926955 -15.82663323492453, -104.38760066552213 -15.955999746616863 M-104.38760066552213 -15.955999746616863 C-104.08089288707872 -16.047029005316887, -103.77418510863531 -16.13805826401691, -103.35441144197861 -16.262644884843677 M-104.38760066552213 -15.955999746616863 C-104.09088561948347 -16.04406321479208, -103.7941705734448 -16.132126682967296, -103.35441144197861 -16.262644884843677 M-103.35441144197861 -16.262644884843677 C-102.94022764334593 -16.35717963407971, -102.52604384471327 -16.451714383315743, -102.30369819504183 -16.502463326912284 M-103.35441144197861 -16.262644884843677 C-102.95080898959249 -16.354764510848675, -102.54720653720635 -16.44688413685367, -102.30369819504183 -16.502463326912284 M-102.30369819504183 -16.502463326912284 C-101.9590809114558 -16.558178376775526, -101.61446362786977 -16.613893426638768, -101.23977853082077 -16.674469607403324 M-102.30369819504183 -16.502463326912284 C-101.8821282494785 -16.57061948638721, -101.46055830391516 -16.638775645862136, -101.23977853082077 -16.674469607403324 M-101.23977853082077 -16.674469607403324 C-100.93214544361537 -16.704146601343112, -100.62451235640998 -16.733823595282896, -100.16702432342574 -16.77795691561503 M-101.23977853082077 -16.674469607403324 C-100.87273452601615 -16.709877901111827, -100.50569052121152 -16.745286194820327, -100.16702432342574 -16.77795691561503 M-100.16702432342574 -16.77795691561503 C-99.8631940142134 -16.787700162261647, -99.55936370500108 -16.79744340890827, -99.08984375 -16.8125 M-100.16702432342574 -16.77795691561503 C-99.74966392374544 -16.79134085129004, -99.33230352406515 -16.80472478696505, -99.08984375 -16.8125 M-99.08984375 -16.8125 C-99.08984375 -16.8125, -99.08984375 -16.8125, -99.08984375 -16.8125 M-99.08984375 -16.8125 C-99.08984375 -16.8125, -99.08984375 -16.8125, -99.08984375 -16.8125" stroke="#9aa8a3" stroke-width="1.3" fill="none" stroke-dasharray="0 0"></path></g><g class="label" transform="translate(0, -9.3125)"><rect></rect><g><rect class="background" style="stroke: none"></rect><text y="-10.1"><tspan class="text-outer-tspan row" x="0" y="-0.1em" dy="1.1em"><tspan font-style="normal" class="text-inner-tspan" font-weight="normal">Execute</tspan><tspan font-style="normal" class="text-inner-tspan" font-weight="normal"> leaf</tspan><tspan font-style="normal" class="text-inner-tspan" font-weight="normal"> query</tspan><tspan font-style="normal" class="text-inner-tspan" font-weight="normal"> stages</tspan></tspan></text></g></g></g><g class="node default " id="gd1-flowchart-MAT-1" data-look="classic" transform="translate(319.30427475493707, 124.7375)"><rect class="basic label-container" x="-119.29296875" y="-33.1125" width="238.5859375" height="66.225"></rect><g class="label" transform="translate(0, -18.1125)"><rect></rect><g><rect class="background" style="stroke: none"></rect><text y="-10.1"><tspan class="text-outer-tspan row" x="0" y="-0.1em" dy="1.1em"><tspan font-style="normal" class="text-inner-tspan" font-weight="normal">Materialize</tspan><tspan font-style="normal" class="text-inner-tspan" font-weight="normal"> at</tspan><tspan font-style="normal" class="text-inner-tspan" font-weight="normal"> shuffle</tspan><tspan font-style="normal" class="text-inner-tspan" font-weight="normal"> /</tspan></tspan><tspan class="text-outer-tspan row" x="0" y="1em" dy="1.1em"><tspan font-style="normal" class="text-inner-tspan" font-weight="normal">broadcast</tspan><tspan font-style="normal" class="text-inner-tspan" font-weight="normal"> boundary</tspan></tspan></text></g></g></g><g class="node default " id="gd1-flowchart-STATS-3" data-look="classic" transform="translate(438.6847213848741, 232.1625)"><rect class="basic label-container" x="-147.51171875" y="-24.3125" width="295.0234375" height="48.625"></rect><g class="label" transform="translate(0, -9.3125)"><rect></rect><g><rect class="background" style="stroke: none"></rect><text y="-10.1"><tspan class="text-outer-tspan row" x="0" y="-0.1em" dy="1.1em"><tspan font-style="normal" class="text-inner-tspan" font-weight="normal">Collect</tspan><tspan font-style="normal" class="text-inner-tspan" font-weight="normal"> real</tspan><tspan font-style="normal" class="text-inner-tspan" font-weight="normal"> runtime</tspan><tspan font-style="normal" class="text-inner-tspan" font-weight="normal"> statistics</tspan></tspan></text></g></g></g><g class="node default " id="gd1-flowchart-RULES-5" data-look="classic" transform="translate(438.6847213848741, 357.1875)"><rect class="basic label-container" x="-163.89453125" y="-50.712500000000006" width="327.7890625" height="101.42500000000001"></rect><g class="label" transform="translate(0, -35.712500000000006)"><rect></rect><g><rect class="background" style="stroke: none"></rect><text y="-10.1"><tspan class="text-outer-tspan row" x="0" y="-0.1em" dy="1.1em"><tspan font-style="normal" class="text-inner-tspan" font-weight="normal">Re-apply</tspan><tspan font-style="normal" class="text-inner-tspan" font-weight="normal"> AQE</tspan><tspan font-style="normal" class="text-inner-tspan" font-weight="normal"> rules:</tspan></tspan><tspan class="text-outer-tspan row" x="0" y="1em" dy="1.1em"><tspan font-style="normal" class="text-inner-tspan" font-weight="normal">coalesce</tspan><tspan font-style="normal" class="text-inner-tspan" font-weight="normal"> post-shuffle</tspan><tspan font-style="normal" class="text-inner-tspan" font-weight="normal"> partitions,</tspan></tspan><tspan class="text-outer-tspan row" x="0" y="2.1em" dy="1.1em"><tspan font-style="normal" class="text-inner-tspan" font-weight="normal">skew-partition</tspan><tspan font-style="normal" class="text-inner-tspan" font-weight="normal"> split,</tspan></tspan><tspan class="text-outer-tspan row" x="0" y="3.2em" dy="1.1em"><tspan font-style="normal" class="text-inner-tspan" font-weight="normal">promote</tspan><tspan font-style="normal" class="text-inner-tspan" font-weight="normal"> sort-merge</tspan><tspan font-style="normal" class="text-inner-tspan" font-weight="normal"> to</tspan><tspan font-style="normal" class="text-inner-tspan" font-weight="normal"> broadcast</tspan></tspan></text></g></g></g><g class="node default " id="gd1-flowchart-DONE-7" data-look="classic" transform="translate(438.6847213848741, 543.3882812500001)"><polygon points="85.48828125,0 170.9765625,-85.48828125 85.48828125,-170.9765625 0,-85.48828125" class="label-container" transform="translate(-84.98828125, 85.48828125)"></polygon><g class="label" transform="translate(0, -9.3125)"><rect></rect><g><rect class="background" style="stroke: none"></rect><text y="-10.1"><tspan class="text-outer-tspan row" x="0" y="-0.1em" dy="1.1em"><tspan font-style="normal" class="text-inner-tspan" font-weight="normal">Plan</tspan><tspan font-style="normal" class="text-inner-tspan" font-weight="normal"> complete?</tspan></tspan></text></g></g></g><g class="node default " id="gd1-flowchart-NEXT-9" data-look="classic" transform="translate(175.49609375, 725.8140625000001)"><rect class="basic label-container" x="-167.49609375" y="-24.3125" width="334.9921875" height="48.625"></rect><g class="label" transform="translate(0, -9.3125)"><rect></rect><g><rect class="background" style="stroke: none"></rect><text y="-10.1"><tspan class="text-outer-tspan row" x="0" y="-0.1em" dy="1.1em"><tspan font-style="normal" class="text-inner-tspan" font-weight="normal">Launch</tspan><tspan font-style="normal" class="text-inner-tspan" font-weight="normal"> and</tspan><tspan font-style="normal" class="text-inner-tspan" font-weight="normal"> run</tspan><tspan font-style="normal" class="text-inner-tspan" font-weight="normal"> next</tspan><tspan font-style="normal" class="text-inner-tspan" font-weight="normal"> query</tspan><tspan font-style="normal" class="text-inner-tspan" font-weight="normal"> stages</tspan></tspan></text></g></g></g><g class="node default " id="gd1-flowchart-END-13" data-look="classic" transform="translate(463.1124557598741, 725.8140625000001)"><g class="basic label-container outer-path"><path d="M-53.31640625 -16.8125 C-30.594799935372887 -16.8125, -7.873193620745774 -16.8125, 53.31640625 -16.8125 C53.31640625 -16.8125, 53.31640625 -16.8125, 53.31640625 -16.8125 C53.64295665451384 -16.802028164119044, 53.969507059027684 -16.791556328238087, 54.393586823425736 -16.77795691561503 C54.772868023121426 -16.741368114432767, 55.15214922281712 -16.704779313250505, 55.46634103082076 -16.674469607403328 C55.797386038189885 -16.620948817904264, 56.128431045559005 -16.567428028405196, 56.53026069504182 -16.502463326912288 C56.8314478125175 -16.433719332778082, 57.13263492999319 -16.364975338643877, 57.58097394197859 -16.26264488484368 C57.935037358579144 -16.157560721313438, 58.2891007751797 -16.05247655778319, 58.61416316552212 -15.955999746616866 C58.9835207772579 -15.820072731193765, 59.35287838899368 -15.684145715770663, 59.625582769534475 -15.58378798287999 C59.93370118476972 -15.44739310046339, 60.241819600004966 -15.310998218046793, 60.611076613913944 -15.147539091609422 C60.90803767893415 -14.992614694201022, 61.204998743954356 -14.837690296792621, 61.5665950930662 -14.649045713074486 C61.86918183989225 -14.465615848951433, 62.1717685867183 -14.28218598482838, 62.48821177660235 -14.090356263494073 C62.69377054894095 -13.9469673624065, 62.89932932127955 -13.803578461318928, 63.37213954388357 -13.47376651765502 C63.68184817740717 -13.226782124112818, 63.99155681093077 -12.979797730570615, 64.21474614611219 -12.801810175081075 C64.38585212141285 -12.646416255529033, 64.55695809671352 -12.491022335976993, 65.01256913202111 -12.077248448518045 C65.20089507920055 -11.882786446207463, 65.38922102637999 -11.68832444389688, 65.76233007582874 -11.303058717518391 C66.03836902317222 -10.978807662907682, 66.31440797051569 -10.654556608296971, 66.46094804899376 -10.48242229374996 C66.69983272261327 -10.162338593941278, 66.93871739623279 -9.842254894132598, 67.10555228041132 -9.61871134830398 C67.31408638572209 -9.29834696329872, 67.52262049103287 -8.97798257829346, 67.69349395302739 -8.715475054720704 C67.84455783088984 -8.447245842699543, 67.9956217087523 -8.179016630678383, 68.22235708839607 -7.776425004674043 C68.32820649764341 -7.5566264415573965, 68.43405590689075 -7.33682787844075, 68.68996847445335 -6.80541995624525 C68.79712108369708 -6.540750939758478, 68.9042736929408 -6.2760819232717076, 69.09440659571159 -5.806449977458242 C69.16985299265362 -5.579217450619777, 69.24529938959563 -5.351984923781312, 69.43400952917885 -4.783620050234238 C69.50272181208476 -4.521590335422224, 69.57143409499066 -4.259560620610211, 69.7073817735569 -3.7411332021405377 C69.77429226331823 -3.3975619787531186, 69.84120275307957 -3.0539907553656995, 69.91339998365544 -2.6832732352486945 C69.95150147683042 -2.38776557817442, 69.9896029700054 -2.0922579211001446, 70.05121758645839 -1.6143871230729026 C70.07009925324604 -1.3202899218481754, 70.08898092003369 -1.026192720623448, 70.12026825987407 -0.5388671479234525 C70.12026825987407 -0.23896822555121705, 70.12026825987407 0.06093069682101837, 70.12026825987407 0.5388671479234484 C70.10440649682765 0.7859269107560638, 70.08854473378123 1.0329866735886792, 70.05121758645839 1.6143871230728912 C70.01482348117088 1.8966526168538458, 69.97842937588337 2.1789181106348003, 69.91339998365544 2.683273235248683 C69.86185823103557 2.9479292415984117, 69.81031647841571 3.212585247948141, 69.7073817735569 3.7411332021405337 C69.6286415627227 4.041403752274591, 69.54990135188851 4.341674302408648, 69.43400952917887 4.7836200502342265 C69.3091492529007 5.159679308600699, 69.18428897662251 5.535738566967172, 69.0944065957116 5.806449977458231 C69.00605549358964 6.024678907851838, 68.91770439146768 6.242907838245445, 68.68996847445335 6.805419956245245 C68.58846322513483 7.016197778319552, 68.48695797581632 7.2269756003938594, 68.22235708839607 7.776425004674039 C68.0240310479826 8.12857297211744, 67.82570500756913 8.48072093956084, 67.69349395302739 8.7154750547207 C67.55330784979824 8.930838554520202, 67.41312174656912 9.146202054319703, 67.10555228041133 9.618711348303972 C66.89011087925917 9.907383198732447, 66.67466947810702 10.196055049160924, 66.46094804899376 10.482422293749956 C66.3106036046091 10.659025432965398, 66.16025916022446 10.835628572180843, 65.76233007582874 11.303058717518383 C65.50299216607142 11.570846401381184, 65.2436542563141 11.838634085243985, 65.01256913202111 12.077248448518041 C64.80411014057171 12.266565389029722, 64.5956511491223 12.455882329541405, 64.2147461461122 12.801810175081064 C63.89573417275114 13.056213734571376, 63.576722199390076 13.310617294061686, 63.37213954388357 13.473766517655019 C63.07116196491652 13.683715447633034, 62.77018438594946 13.893664377611048, 62.488211776602355 14.090356263494066 C62.27633473586123 14.218797370719036, 62.0644576951201 14.347238477944007, 61.566595093066205 14.649045713074484 C61.21702754440577 14.831414879301935, 60.86745999574532 15.013784045529388, 60.61107661391395 15.14753909160942 C60.329845095833356 15.272031942227123, 60.048613577752754 15.396524792844826, 59.62558276953448 15.583787982879988 C59.231851442681055 15.728684750774537, 58.838120115827635 15.873581518669084, 58.614163165522136 15.955999746616863 C58.22128332438079 16.072604421199244, 57.82840348323945 16.189209095781624, 57.580973941978606 16.262644884843677 C57.24226823854182 16.33995225139185, 56.90356253510503 16.417259617940022, 56.530260695041825 16.502463326912284 C56.27766402512006 16.543301197588804, 56.02506735519829 16.584139068265323, 55.466341030820765 16.674469607403324 C55.242995181386014 16.696015512885612, 55.01964933195127 16.717561418367897, 54.393586823425736 16.77795691561503 C54.10500499878328 16.787211173040866, 53.81642317414082 16.796465430466704, 53.31640625 16.8125 C53.31640625 16.8125, 53.31640625 16.8125, 53.31640625 16.8125 C18.93637936219575 16.8125, -15.443647525608498 16.8125, -53.31640625 16.8125 C-53.66742474453771 16.801243520096225, -54.018443239075424 16.789987040192454, -54.39358682342573 16.77795691561503 C-54.64304677564572 16.753891814043854, -54.892506727865715 16.729826712472676, -55.46634103082076 16.674469607403324 C-55.86086829843945 16.61068549837939, -56.25539556605814 16.546901389355455, -56.53026069504182 16.502463326912284 C-56.74664873633789 16.45307416855039, -56.96303677763395 16.403685010188497, -57.580973941978584 16.26264488484368 C-57.96787736321746 16.147813980317483, -58.354780784456345 16.03298307579129, -58.614163165522115 15.95599974661687 C-58.90665829323003 15.848358835825035, -59.19915342093795 15.740717925033199, -59.625582769534475 15.58378798287999 C-59.87373307318833 15.473939204569644, -60.1218833768422 15.364090426259297, -60.611076613913944 15.147539091609424 C-60.865064450697076 15.015033799846636, -61.11905228748021 14.88252850808385, -61.5665950930662 14.649045713074488 C-61.87818984085637 14.460155145830095, -62.18978458864654 14.271264578585702, -62.48821177660234 14.090356263494078 C-62.69838706826935 13.943747078368911, -62.90856235993635 13.797137893243745, -63.37213954388356 13.473766517655022 C-63.67885103842073 13.229172262697283, -63.98556253295789 12.984578007739545, -64.21474614611219 12.801810175081076 C-64.52610536390932 12.519041971591193, -64.83746458170644 12.23627376810131, -65.01256913202111 12.077248448518052 C-65.27216496269797 11.809194440130124, -65.53176079337483 11.541140431742196, -65.76233007582874 11.303058717518388 C-65.92946372831445 11.106734019134448, -66.09659738080013 10.910409320750508, -66.46094804899374 10.482422293749961 C-66.63604665741073 10.24780611028258, -66.81114526582773 10.0131899268152, -67.10555228041132 9.618711348303982 C-67.27364381523894 9.360477611911614, -67.44173535006655 9.102243875519246, -67.69349395302737 8.715475054720711 C-67.85758545313605 8.424113980211573, -68.02167695324475 8.132752905702434, -68.22235708839607 7.776425004674045 C-68.40345763479543 7.400365845144823, -68.5845581811948 7.024306685615602, -68.68996847445335 6.8054199562452515 C-68.81857579126552 6.48775739726586, -68.9471831080777 6.17009483828647, -69.09440659571159 5.806449977458245 C-69.18290693815997 5.539901046618386, -69.27140728060836 5.273352115778527, -69.43400952917885 4.783620050234233 C-69.53784306548333 4.387657774565944, -69.64167660178782 3.9916954988976547, -69.7073817735569 3.74113320214054 C-69.7656854790257 3.441755997050752, -69.82398918449451 3.142378791960964, -69.91339998365544 2.6832732352486963 C-69.94923851667801 2.4053166502444685, -69.98507704970058 2.1273600652402407, -70.05121758645839 1.614387123072912 C-70.06816927370815 1.3503509110023713, -70.0851209609579 1.0863146989318304, -70.12026825987407 0.5388671479234546 C-70.12026825987407 0.1636284748460043, -70.12026825987407 -0.211610198231446, -70.12026825987407 -0.5388671479234464 C-70.09537639983046 -0.9265779604503619, -70.07048453978686 -1.3142887729772772, -70.05121758645839 -1.614387123072889 C-70.0116311143098 -1.9214119838242603, -69.97204464216121 -2.228436844575631, -69.91339998365544 -2.6832732352486883 C-69.86545523378872 -2.929459392687808, -69.817510483922 -3.175645550126928, -69.7073817735569 -3.741133202140532 C-69.6313240847173 -4.031174133296806, -69.5552663958777 -4.321215064453079, -69.43400952917887 -4.783620050234225 C-69.32564058186101 -5.110010053308667, -69.21727163454314 -5.436400056383109, -69.0944065957116 -5.8064499774582226 C-68.98732312833857 -6.070948212187609, -68.88023966096554 -6.335446446916997, -68.68996847445335 -6.8054199562452435 C-68.51058587976976 -7.177911752278376, -68.33120328508618 -7.550403548311509, -68.22235708839607 -7.776425004674037 C-68.08337989500296 -8.023193084510353, -67.94440270160985 -8.269961164346672, -67.69349395302739 -8.715475054720706 C-67.54303159195344 -8.946625646131444, -67.39256923087949 -9.177776237542185, -67.10555228041132 -9.618711348303977 C-66.92129025289198 -9.865605678563844, -66.73702822537265 -10.11250000882371, -66.46094804899376 -10.482422293749956 C-66.2911987113776 -10.681819524724824, -66.12144937376145 -10.881216755699691, -65.76233007582874 -11.303058717518383 C-65.5786248466641 -11.49274944911069, -65.39491961749945 -11.682440180702995, -65.01256913202113 -12.077248448518036 C-64.764224842167 -12.302788161733723, -64.51588055231285 -12.52832787494941, -64.2147461461122 -12.80181017508106 C-63.93432479476095 -13.025438740458132, -63.653903443409696 -13.249067305835203, -63.37213954388358 -13.473766517655017 C-63.03534538726007 -13.708699541731512, -62.69855123063657 -13.943632565808008, -62.488211776602355 -14.090356263494064 C-62.173803228347886 -14.280952573115641, -61.85939468009342 -14.471548882737217, -61.566595093066205 -14.649045713074482 C-61.24594669952522 -14.816327774599719, -60.92529830598423 -14.983609836124954, -60.61107661391395 -15.14753909160942 C-60.31917572144852 -15.276754957771546, -60.027274828983074 -15.405970823933673, -59.62558276953449 -15.583787982879986 C-59.4167016450963 -15.660658167549187, -59.20782052065812 -15.737528352218387, -58.614163165522136 -15.955999746616863 C-58.355969379759166 -16.032630306944476, -58.09777559399619 -16.109260867272088, -57.58097394197861 -16.262644884843677 C-57.206920235798236 -16.3480202023508, -56.83286652961787 -16.43339551985792, -56.53026069504183 -16.502463326912284 C-56.11122932384378 -16.57020906937077, -55.69219795264573 -16.637954811829253, -55.46634103082077 -16.674469607403324 C-55.040052483351836 -16.715593150890665, -54.6137639358829 -16.756716694378007, -54.393586823425736 -16.77795691561503 C-54.13666559473522 -16.7861958793523, -53.8797443660447 -16.79443484308957, -53.31640625000001 -16.8125 C-53.31640625000001 -16.8125, -53.31640625 -16.8125, -53.31640625 -16.8125" stroke="none" stroke-width="0" fill="#ffffff"></path><path d="M-53.31640625 -16.8125 C-16.690110440260057 -16.8125, 19.936185369479887 -16.8125, 53.31640625 -16.8125 M-53.31640625 -16.8125 C-27.854110667226987 -16.8125, -2.391815084453974 -16.8125, 53.31640625 -16.8125 M53.31640625 -16.8125 C53.31640625 -16.8125, 53.31640625 -16.8125, 53.31640625 -16.8125 M53.31640625 -16.8125 C53.31640625 -16.8125, 53.31640625 -16.8125, 53.31640625 -16.8125 M53.31640625 -16.8125 C53.53365532849352 -16.805533244902392, 53.750904406987054 -16.79856648980478, 54.393586823425736 -16.77795691561503 M53.31640625 -16.8125 C53.70315644567863 -16.800097673988173, 54.08990664135726 -16.78769534797635, 54.393586823425736 -16.77795691561503 M54.393586823425736 -16.77795691561503 C54.64405051108307 -16.753794984893382, 54.89451419874041 -16.729633054171735, 55.46634103082076 -16.674469607403328 M54.393586823425736 -16.77795691561503 C54.69856058547665 -16.748536463574588, 55.00353434752756 -16.71911601153415, 55.46634103082076 -16.674469607403328 M55.46634103082076 -16.674469607403328 C55.692142818256535 -16.637963725529726, 55.91794460569231 -16.601457843656124, 56.53026069504182 -16.502463326912288 M55.46634103082076 -16.674469607403328 C55.890125081072185 -16.60595548865307, 56.313909131323605 -16.537441369902815, 56.53026069504182 -16.502463326912288 M56.53026069504182 -16.502463326912288 C56.873259186531904 -16.424176159504007, 57.216257678022 -16.34588899209573, 57.58097394197859 -16.26264488484368 M56.53026069504182 -16.502463326912288 C56.74754679512687 -16.452869192492187, 56.964832895211934 -16.40327505807209, 57.58097394197859 -16.26264488484368 M57.58097394197859 -16.26264488484368 C57.83432781953702 -16.18745078386598, 58.087681697095455 -16.11225668288828, 58.61416316552212 -15.955999746616866 M57.58097394197859 -16.26264488484368 C57.80391991919336 -16.19647568907365, 58.02686589640813 -16.130306493303625, 58.61416316552212 -15.955999746616866 M58.61416316552212 -15.955999746616866 C58.901272496158875 -15.850340858932984, 59.18838182679562 -15.7446819712491, 59.625582769534475 -15.58378798287999 M58.61416316552212 -15.955999746616866 C58.905101487782204 -15.848931754620786, 59.19603981004229 -15.741863762624703, 59.625582769534475 -15.58378798287999 M59.625582769534475 -15.58378798287999 C59.8987537802006 -15.462863279788216, 60.17192479086673 -15.34193857669644, 60.611076613913944 -15.147539091609422 M59.625582769534475 -15.58378798287999 C59.923254454171655 -15.452017558207903, 60.220926138808835 -15.320247133535814, 60.611076613913944 -15.147539091609422 M60.611076613913944 -15.147539091609422 C60.97475264165271 -14.957809540883723, 61.33842866939147 -14.768079990158025, 61.5665950930662 -14.649045713074486 M60.611076613913944 -15.147539091609422 C60.920124168363834 -14.986309180407321, 61.22917172281372 -14.825079269205222, 61.5665950930662 -14.649045713074486 M61.5665950930662 -14.649045713074486 C61.893766798401074 -14.45071230262613, 62.22093850373595 -14.252378892177774, 62.48821177660235 -14.090356263494073 M61.5665950930662 -14.649045713074486 C61.841916181627894 -14.482144451222078, 62.11723727018959 -14.31524318936967, 62.48821177660235 -14.090356263494073 M62.48821177660235 -14.090356263494073 C62.70386350962931 -13.939926949947527, 62.91951524265627 -13.789497636400982, 63.37213954388357 -13.47376651765502 M62.48821177660235 -14.090356263494073 C62.78824153258442 -13.881068493799784, 63.08827128856649 -13.671780724105497, 63.37213954388357 -13.47376651765502 M63.37213954388357 -13.47376651765502 C63.552569516999434 -13.329878415538353, 63.7329994901153 -13.185990313421685, 64.21474614611219 -12.801810175081075 M63.37213954388357 -13.47376651765502 C63.64678117418125 -13.254747126013344, 63.92142280447892 -13.035727734371667, 64.21474614611219 -12.801810175081075 M64.21474614611219 -12.801810175081075 C64.47330951694522 -12.566989762902425, 64.73187288777824 -12.332169350723776, 65.01256913202111 -12.077248448518045 M64.21474614611219 -12.801810175081075 C64.4310875205319 -12.605334662912183, 64.64742889495163 -12.408859150743293, 65.01256913202111 -12.077248448518045 M65.01256913202111 -12.077248448518045 C65.25395572870775 -11.827996969230943, 65.49534232539438 -11.57874548994384, 65.76233007582874 -11.303058717518391 M65.01256913202111 -12.077248448518045 C65.20454030521383 -11.87902245107014, 65.39651147840652 -11.680796453622236, 65.76233007582874 -11.303058717518391 M65.76233007582874 -11.303058717518391 C65.96157330630597 -11.069016281738868, 66.16081653678317 -10.834973845959343, 66.46094804899376 -10.48242229374996 M65.76233007582874 -11.303058717518391 C65.9638159375087 -11.066381959518797, 66.16530179918867 -10.829705201519202, 66.46094804899376 -10.48242229374996 M66.46094804899376 -10.48242229374996 C66.71110660150613 -10.147232623296341, 66.9612651540185 -9.812042952842726, 67.10555228041132 -9.61871134830398 M66.46094804899376 -10.48242229374996 C66.68219718998614 -10.185968601031554, 66.90344633097853 -9.889514908313148, 67.10555228041132 -9.61871134830398 M67.10555228041132 -9.61871134830398 C67.2847514769538 -9.343413260692776, 67.46395067349629 -9.068115173081573, 67.69349395302739 -8.715475054720704 M67.10555228041132 -9.61871134830398 C67.33958008632824 -9.25918179315053, 67.57360789224516 -8.899652237997081, 67.69349395302739 -8.715475054720704 M67.69349395302739 -8.715475054720704 C67.81321698204258 -8.502894693432934, 67.93294001105778 -8.290314332145165, 68.22235708839607 -7.776425004674043 M67.69349395302739 -8.715475054720704 C67.9013859605934 -8.346341743938746, 68.10927796815942 -7.977208433156786, 68.22235708839607 -7.776425004674043 M68.22235708839607 -7.776425004674043 C68.39959396087335 -7.408388846713422, 68.57683083335061 -7.040352688752799, 68.68996847445335 -6.80541995624525 M68.22235708839607 -7.776425004674043 C68.33960537398362 -7.532956430940066, 68.45685365957117 -7.28948785720609, 68.68996847445335 -6.80541995624525 M68.68996847445335 -6.80541995624525 C68.83099514280602 -6.457081358849001, 68.9720218111587 -6.108742761452752, 69.09440659571159 -5.806449977458242 M68.68996847445335 -6.80541995624525 C68.79098469894201 -6.55590792874242, 68.89200092343067 -6.306395901239592, 69.09440659571159 -5.806449977458242 M69.09440659571159 -5.806449977458242 C69.21868658137161 -5.432138461976913, 69.34296656703162 -5.057826946495583, 69.43400952917885 -4.783620050234238 M69.09440659571159 -5.806449977458242 C69.18140161269577 -5.544434847075514, 69.26839662967996 -5.282419716692786, 69.43400952917885 -4.783620050234238 M69.43400952917885 -4.783620050234238 C69.52607837012039 -4.432521656836063, 69.61814721106194 -4.081423263437888, 69.7073817735569 -3.7411332021405377 M69.43400952917885 -4.783620050234238 C69.51995263298896 -4.455881747429453, 69.60589573679908 -4.128143444624668, 69.7073817735569 -3.7411332021405377 M69.7073817735569 -3.7411332021405377 C69.77373665905338 -3.4004148892261155, 69.84009154454986 -3.0596965763116937, 69.91339998365544 -2.6832732352486945 M69.7073817735569 -3.7411332021405377 C69.75945320243765 -3.4737574201383072, 69.81152463131839 -3.2063816381360764, 69.91339998365544 -2.6832732352486945 M69.91339998365544 -2.6832732352486945 C69.94796383721186 -2.4152028124700387, 69.98252769076826 -2.147132389691383, 70.05121758645839 -1.6143871230729026 M69.91339998365544 -2.6832732352486945 C69.94440743701716 -2.4427855500893823, 69.97541489037889 -2.20229786493007, 70.05121758645839 -1.6143871230729026 M70.05121758645839 -1.6143871230729026 C70.06612498441352 -1.3821923668867897, 70.08103238236865 -1.1499976107006766, 70.12026825987407 -0.5388671479234525 M70.05121758645839 -1.6143871230729026 C70.06578912175523 -1.3874236988931434, 70.08036065705205 -1.1604602747133845, 70.12026825987407 -0.5388671479234525 M70.12026825987407 -0.5388671479234525 C70.12026825987407 -0.20890660384289966, 70.12026825987407 0.12105394023765315, 70.12026825987407 0.5388671479234484 M70.12026825987407 -0.5388671479234525 C70.12026825987407 -0.13136851331110805, 70.12026825987407 0.2761301213012364, 70.12026825987407 0.5388671479234484 M70.12026825987407 0.5388671479234484 C70.10201318411191 0.8232046881510504, 70.08375810834974 1.1075422283786525, 70.05121758645839 1.6143871230728912 M70.12026825987407 0.5388671479234484 C70.1039388354316 0.7932111144889966, 70.08760941098913 1.0475550810545449, 70.05121758645839 1.6143871230728912 M70.05121758645839 1.6143871230728912 C70.0143265193383 1.9005069546911044, 69.97743545221822 2.1866267863093176, 69.91339998365544 2.683273235248683 M70.05121758645839 1.6143871230728912 C70.01067439843547 1.9288320832206667, 69.97013121041255 2.243277043368442, 69.91339998365544 2.683273235248683 M69.91339998365544 2.683273235248683 C69.8436754598637 3.0412939286359517, 69.77395093607196 3.39931462202322, 69.7073817735569 3.7411332021405337 M69.91339998365544 2.683273235248683 C69.83747559997468 3.0731288988251895, 69.76155121629392 3.462984562401696, 69.7073817735569 3.7411332021405337 M69.7073817735569 3.7411332021405337 C69.64612869423678 3.9747177408406857, 69.58487561491665 4.208302279540837, 69.43400952917887 4.7836200502342265 M69.7073817735569 3.7411332021405337 C69.63471950720073 4.018225915782076, 69.56205724084457 4.295318629423619, 69.43400952917887 4.7836200502342265 M69.43400952917887 4.7836200502342265 C69.30165728235256 5.182243930208237, 69.16930503552626 5.580867810182248, 69.0944065957116 5.806449977458231 M69.43400952917887 4.7836200502342265 C69.3254045547529 5.110720929352485, 69.21679958032692 5.437821808470745, 69.0944065957116 5.806449977458231 M69.0944065957116 5.806449977458231 C68.93937686307903 6.189376414356649, 68.78434713044646 6.572302851255067, 68.68996847445335 6.805419956245245 M69.0944065957116 5.806449977458231 C69.0120031658233 6.009988042444269, 68.929599735935 6.213526107430306, 68.68996847445335 6.805419956245245 M68.68996847445335 6.805419956245245 C68.5695134907138 7.055547307304184, 68.44905850697425 7.305674658363121, 68.22235708839607 7.776425004674039 M68.68996847445335 6.805419956245245 C68.53290976782243 7.131555721082338, 68.3758510611915 7.457691485919431, 68.22235708839607 7.776425004674039 M68.22235708839607 7.776425004674039 C68.02871348526601 8.120258830572553, 67.83506988213595 8.464092656471067, 67.69349395302739 8.7154750547207 M68.22235708839607 7.776425004674039 C68.05791054438951 8.068416495575931, 67.89346400038296 8.360407986477822, 67.69349395302739 8.7154750547207 M67.69349395302739 8.7154750547207 C67.5216334578114 8.97949892637717, 67.34977296259542 9.24352279803364, 67.10555228041133 9.618711348303972 M67.69349395302739 8.7154750547207 C67.54257632776189 8.947325054185212, 67.39165870249639 9.179175053649722, 67.10555228041133 9.618711348303972 M67.10555228041133 9.618711348303972 C66.90417142320123 9.888543350791991, 66.70279056599114 10.158375353280013, 66.46094804899376 10.482422293749956 M67.10555228041133 9.618711348303972 C66.86885916970155 9.935858553469092, 66.63216605899177 10.253005758634211, 66.46094804899376 10.482422293749956 M66.46094804899376 10.482422293749956 C66.18600202825375 10.805389534582941, 65.91105600751375 11.128356775415927, 65.76233007582874 11.303058717518383 M66.46094804899376 10.482422293749956 C66.24092233489162 10.740877017352123, 66.02089662078949 10.99933174095429, 65.76233007582874 11.303058717518383 M65.76233007582874 11.303058717518383 C65.54728701448207 11.525108333722502, 65.3322439531354 11.747157949926619, 65.01256913202111 12.077248448518041 M65.76233007582874 11.303058717518383 C65.52596312367938 11.547127001700279, 65.28959617153001 11.791195285882175, 65.01256913202111 12.077248448518041 M65.01256913202111 12.077248448518041 C64.69666793612126 12.364141556346667, 64.38076674022142 12.65103466417529, 64.2147461461122 12.801810175081064 M65.01256913202111 12.077248448518041 C64.69862934844078 12.362360253574204, 64.38468956486045 12.647472058630367, 64.2147461461122 12.801810175081064 M64.2147461461122 12.801810175081064 C63.93389153775366 13.02578425139199, 63.65303692939512 13.249758327702915, 63.37213954388357 13.473766517655019 M64.2147461461122 12.801810175081064 C63.951513365652644 13.011731312579085, 63.68828058519309 13.221652450077105, 63.37213954388357 13.473766517655019 M63.37213954388357 13.473766517655019 C63.1629445545505 13.619691886308635, 62.953749565217436 13.765617254962251, 62.488211776602355 14.090356263494066 M63.37213954388357 13.473766517655019 C63.0301534858576 13.712321187396086, 62.68816742783164 13.950875857137154, 62.488211776602355 14.090356263494066 M62.488211776602355 14.090356263494066 C62.25653866081539 14.230797867746473, 62.024865545028426 14.37123947199888, 61.566595093066205 14.649045713074484 M62.488211776602355 14.090356263494066 C62.28635602334661 14.212722407353775, 62.084500270090864 14.335088551213484, 61.566595093066205 14.649045713074484 M61.566595093066205 14.649045713074484 C61.31097873621164 14.782400602715422, 61.05536237935707 14.91575549235636, 60.61107661391395 15.14753909160942 M61.566595093066205 14.649045713074484 C61.3507365863295 14.76165895777505, 61.1348780795928 14.874272202475614, 60.61107661391395 15.14753909160942 M60.61107661391395 15.14753909160942 C60.3932005720644 15.243986352273067, 60.17532453021485 15.340433612936716, 59.62558276953448 15.583787982879988 M60.61107661391395 15.14753909160942 C60.24756928885663 15.308453001350621, 59.884061963799304 15.469366911091821, 59.62558276953448 15.583787982879988 M59.62558276953448 15.583787982879988 C59.371278882261215 15.677374164155914, 59.116974994987956 15.77096034543184, 58.614163165522136 15.955999746616863 M59.62558276953448 15.583787982879988 C59.229912255419855 15.729398389612308, 58.834241741305235 15.875008796344629, 58.614163165522136 15.955999746616863 M58.614163165522136 15.955999746616863 C58.213356215217225 16.074957145588748, 57.812549264912306 16.19391454456063, 57.580973941978606 16.262644884843677 M58.614163165522136 15.955999746616863 C58.3299288833275 16.040358989596037, 58.04569460113286 16.124718232575212, 57.580973941978606 16.262644884843677 M57.580973941978606 16.262644884843677 C57.17958632990261 16.354258988001067, 56.77819871782661 16.44587309115846, 56.530260695041825 16.502463326912284 M57.580973941978606 16.262644884843677 C57.36200799868759 16.312622432513535, 57.14304205539656 16.362599980183397, 56.530260695041825 16.502463326912284 M56.530260695041825 16.502463326912284 C56.19672250553573 16.556387194764337, 55.86318431602964 16.610311062616393, 55.466341030820765 16.674469607403324 M56.530260695041825 16.502463326912284 C56.14574190200733 16.564629343382325, 55.761223108972835 16.626795359852366, 55.466341030820765 16.674469607403324 M55.466341030820765 16.674469607403324 C55.16866386062573 16.703186166002865, 54.87098669043069 16.731902724602403, 54.393586823425736 16.77795691561503 M55.466341030820765 16.674469607403324 C55.06148279209324 16.7135257947801, 54.65662455336572 16.752581982156872, 54.393586823425736 16.77795691561503 M54.393586823425736 16.77795691561503 C54.12682922962056 16.786511312436204, 53.86007163581539 16.79506570925738, 53.31640625 16.8125 M54.393586823425736 16.77795691561503 C54.03025537289736 16.789608248051707, 53.66692392236898 16.801259580488388, 53.31640625 16.8125 M53.31640625 16.8125 C53.31640625 16.8125, 53.31640625 16.8125, 53.31640625 16.8125 M53.31640625 16.8125 C53.31640625 16.8125, 53.31640625 16.8125, 53.31640625 16.8125 M53.31640625 16.8125 C12.945385013862392 16.8125, -27.425636222275216 16.8125, -53.31640625 16.8125 M53.31640625 16.8125 C14.499127191283584 16.8125, -24.31815186743283 16.8125, -53.31640625 16.8125 M-53.31640625 16.8125 C-53.58953252390146 16.803741372004023, -53.86265879780292 16.794982744008042, -54.39358682342573 16.77795691561503 M-53.31640625 16.8125 C-53.616782627166685 16.802867514231416, -53.91715900433337 16.793235028462828, -54.39358682342573 16.77795691561503 M-54.39358682342573 16.77795691561503 C-54.75228610910218 16.74335362692483, -55.11098539477864 16.708750338234626, -55.46634103082076 16.674469607403324 M-54.39358682342573 16.77795691561503 C-54.79999770917113 16.738750946247773, -55.206408594916525 16.699544976880514, -55.46634103082076 16.674469607403324 M-55.46634103082076 16.674469607403324 C-55.707972663499596 16.635404478913106, -55.949604296178435 16.59633935042289, -56.53026069504182 16.502463326912284 M-55.46634103082076 16.674469607403324 C-55.84841498932381 16.61269885282035, -56.230488947826856 16.550928098237378, -56.53026069504182 16.502463326912284 M-56.53026069504182 16.502463326912284 C-56.82176687164128 16.435928944359034, -57.11327304824075 16.369394561805784, -57.580973941978584 16.26264488484368 M-56.53026069504182 16.502463326912284 C-56.7743519056739 16.44675110092952, -57.01844311630598 16.391038874946755, -57.580973941978584 16.26264488484368 M-57.580973941978584 16.26264488484368 C-57.96456602600796 16.1487967678197, -58.34815811003733 16.034948650795723, -58.614163165522115 15.95599974661687 M-57.580973941978584 16.26264488484368 C-57.988535425052426 16.141682776001247, -58.39609690812627 16.020720667158812, -58.614163165522115 15.95599974661687 M-58.614163165522115 15.95599974661687 C-58.97926539004866 15.821638753023134, -59.344367614575205 15.687277759429398, -59.625582769534475 15.58378798287999 M-58.614163165522115 15.95599974661687 C-58.93644926521457 15.837395482749997, -59.25873536490703 15.718791218883124, -59.625582769534475 15.58378798287999 M-59.625582769534475 15.58378798287999 C-60.00500452096703 15.415829228667162, -60.38442627239957 15.247870474454334, -60.611076613913944 15.147539091609424 M-59.625582769534475 15.58378798287999 C-59.99983986086158 15.418115470491644, -60.37409695218868 15.252442958103298, -60.611076613913944 15.147539091609424 M-60.611076613913944 15.147539091609424 C-60.81587954320837 15.04069353457906, -61.02068247250279 14.933847977548695, -61.5665950930662 14.649045713074488 M-60.611076613913944 15.147539091609424 C-60.88101746515753 15.006711122421017, -61.1509583164011 14.865883153232607, -61.5665950930662 14.649045713074488 M-61.5665950930662 14.649045713074488 C-61.87215734405247 14.463812080843507, -62.17771959503874 14.278578448612528, -62.48821177660234 14.090356263494078 M-61.5665950930662 14.649045713074488 C-61.89150766097744 14.452081805008506, -62.21642022888868 14.255117896942522, -62.48821177660234 14.090356263494078 M-62.48821177660234 14.090356263494078 C-62.741769625481886 13.913485284458076, -62.99532747436143 13.736614305422076, -63.37213954388356 13.473766517655022 M-62.48821177660234 14.090356263494078 C-62.7241021586778 13.925809344488295, -62.95999254075326 13.761262425482512, -63.37213954388356 13.473766517655022 M-63.37213954388356 13.473766517655022 C-63.564021660969686 13.32074563547642, -63.75590377805581 13.16772475329782, -64.21474614611219 12.801810175081076 M-63.37213954388356 13.473766517655022 C-63.652141612368105 13.250472319206576, -63.93214368085264 13.027178120758128, -64.21474614611219 12.801810175081076 M-64.21474614611219 12.801810175081076 C-64.38821192340706 12.64427314579484, -64.56167770070194 12.4867361165086, -65.01256913202111 12.077248448518052 M-64.21474614611219 12.801810175081076 C-64.47016082771616 12.569849319150514, -64.72557550932011 12.337888463219953, -65.01256913202111 12.077248448518052 M-65.01256913202111 12.077248448518052 C-65.29991962100709 11.78053547672613, -65.58727010999307 11.483822504934208, -65.76233007582874 11.303058717518388 M-65.01256913202111 12.077248448518052 C-65.30096534126127 11.779455684708465, -65.58936155050142 11.481662920898875, -65.76233007582874 11.303058717518388 M-65.76233007582874 11.303058717518388 C-66.00123079034599 11.022432344410678, -66.24013150486323 10.74180597130297, -66.46094804899374 10.482422293749961 M-65.76233007582874 11.303058717518388 C-65.9316884002657 11.104120792873086, -66.10104672470264 10.905182868227785, -66.46094804899374 10.482422293749961 M-66.46094804899374 10.482422293749961 C-66.64601453025952 10.234450068757107, -66.8310810115253 9.986477843764254, -67.10555228041132 9.618711348303982 M-66.46094804899374 10.482422293749961 C-66.6645933539544 10.209556137571617, -66.86823865891508 9.936689981393272, -67.10555228041132 9.618711348303982 M-67.10555228041132 9.618711348303982 C-67.30511197313 9.312134071007392, -67.50467166584866 9.005556793710804, -67.69349395302737 8.715475054720711 M-67.10555228041132 9.618711348303982 C-67.27679919710876 9.355630098020907, -67.44804611380619 9.092548847737831, -67.69349395302737 8.715475054720711 M-67.69349395302737 8.715475054720711 C-67.90135564333625 8.346395575298772, -68.10921733364512 7.97731609587683, -68.22235708839607 7.776425004674045 M-67.69349395302737 8.715475054720711 C-67.87531802370603 8.392628005547097, -68.0571420943847 8.069780956373481, -68.22235708839607 7.776425004674045 M-68.22235708839607 7.776425004674045 C-68.37645808415449 7.456430989748572, -68.53055907991292 7.1364369748231, -68.68996847445335 6.8054199562452515 M-68.22235708839607 7.776425004674045 C-68.39013841122504 7.428023497874478, -68.55791973405401 7.079621991074911, -68.68996847445335 6.8054199562452515 M-68.68996847445335 6.8054199562452515 C-68.7804189657573 6.582005493983192, -68.87086945706126 6.358591031721132, -69.09440659571159 5.806449977458245 M-68.68996847445335 6.8054199562452515 C-68.81074383725664 6.507102475088326, -68.93151920005994 6.208784993931401, -69.09440659571159 5.806449977458245 M-69.09440659571159 5.806449977458245 C-69.21025457215114 5.457534330290723, -69.3261025485907 5.1086186831232, -69.43400952917885 4.783620050234233 M-69.09440659571159 5.806449977458245 C-69.18373181093287 5.537416661252031, -69.27305702615416 5.268383345045819, -69.43400952917885 4.783620050234233 M-69.43400952917885 4.783620050234233 C-69.52261356541952 4.445734458816345, -69.61121760166019 4.107848867398457, -69.7073817735569 3.74113320214054 M-69.43400952917885 4.783620050234233 C-69.50960630220504 4.49533679083666, -69.58520307523125 4.2070535314390884, -69.7073817735569 3.74113320214054 M-69.7073817735569 3.74113320214054 C-69.74918309448393 3.526492253892619, -69.79098441541093 3.3118513056446988, -69.91339998365544 2.6832732352486963 M-69.7073817735569 3.74113320214054 C-69.77163327268651 3.411215333669161, -69.83588477181611 3.0812974651977822, -69.91339998365544 2.6832732352486963 M-69.91339998365544 2.6832732352486963 C-69.9518023222872 2.3854322802202645, -69.99020466091896 2.0875913251918328, -70.05121758645839 1.614387123072912 M-69.91339998365544 2.6832732352486963 C-69.95164556907245 2.38664802719936, -69.98989115448948 2.0900228191500236, -70.05121758645839 1.614387123072912 M-70.05121758645839 1.614387123072912 C-70.07011993850202 1.3199677322894656, -70.08902229054564 1.0255483415060194, -70.12026825987407 0.5388671479234546 M-70.05121758645839 1.614387123072912 C-70.06596827129229 1.3846333002464188, -70.08071895612619 1.1548794774199258, -70.12026825987407 0.5388671479234546 M-70.12026825987407 0.5388671479234546 C-70.12026825987407 0.16445174304616905, -70.12026825987407 -0.20996366183111648, -70.12026825987407 -0.5388671479234464 M-70.12026825987407 0.5388671479234546 C-70.12026825987407 0.13235862426415163, -70.12026825987407 -0.27414989939515133, -70.12026825987407 -0.5388671479234464 M-70.12026825987407 -0.5388671479234464 C-70.09451849164631 -0.93994057290952, -70.06876872341856 -1.3410139978955935, -70.05121758645839 -1.614387123072889 M-70.12026825987407 -0.5388671479234464 C-70.09374443254192 -0.951997168269588, -70.06722060520978 -1.36512718861573, -70.05121758645839 -1.614387123072889 M-70.05121758645839 -1.614387123072889 C-70.00274032600058 -1.9903671822658788, -69.95426306554276 -2.3663472414588687, -69.91339998365544 -2.6832732352486883 M-70.05121758645839 -1.614387123072889 C-70.02319229405495 -1.8317457567340738, -69.9951670016515 -2.0491043903952586, -69.91339998365544 -2.6832732352486883 M-69.91339998365544 -2.6832732352486883 C-69.87105634434975 -2.900698873752012, -69.82871270504408 -3.1181245122553354, -69.7073817735569 -3.741133202140532 M-69.91339998365544 -2.6832732352486883 C-69.83263278126782 -3.097995749354825, -69.7518655788802 -3.512718263460961, -69.7073817735569 -3.741133202140532 M-69.7073817735569 -3.741133202140532 C-69.61176477424975 -4.1057622611683575, -69.5161477749426 -4.470391320196184, -69.43400952917887 -4.783620050234225 M-69.7073817735569 -3.741133202140532 C-69.61574626512174 -4.090579110884378, -69.5241107566866 -4.440025019628225, -69.43400952917887 -4.783620050234225 M-69.43400952917887 -4.783620050234225 C-69.34197259499923 -5.060820631889215, -69.24993566081962 -5.338021213544205, -69.0944065957116 -5.8064499774582226 M-69.43400952917887 -4.783620050234225 C-69.3037918274016 -5.175815020614122, -69.17357412562433 -5.568009990994019, -69.0944065957116 -5.8064499774582226 M-69.0944065957116 -5.8064499774582226 C-68.96678941237744 -6.121666887604007, -68.83917222904327 -6.4368837977497915, -68.68996847445335 -6.8054199562452435 M-69.0944065957116 -5.8064499774582226 C-68.98972516603155 -6.0650151326457085, -68.8850437363515 -6.323580287833194, -68.68996847445335 -6.8054199562452435 M-68.68996847445335 -6.8054199562452435 C-68.57830916505456 -7.037282901338325, -68.46664985565576 -7.269145846431407, -68.22235708839607 -7.776425004674037 M-68.68996847445335 -6.8054199562452435 C-68.56667015816835 -7.0614515481723945, -68.44337184188335 -7.317483140099545, -68.22235708839607 -7.776425004674037 M-68.22235708839607 -7.776425004674037 C-68.07537967186859 -8.037398290795865, -67.92840225534111 -8.298371576917695, -67.69349395302739 -8.715475054720706 M-68.22235708839607 -7.776425004674037 C-68.06085557716324 -8.063187291669271, -67.89935406593042 -8.349949578664507, -67.69349395302739 -8.715475054720706 M-67.69349395302739 -8.715475054720706 C-67.5379463631859 -8.954437923093517, -67.38239877334439 -9.193400791466328, -67.10555228041132 -9.618711348303977 M-67.69349395302739 -8.715475054720706 C-67.55653162720894 -8.925885966711931, -67.41956930139051 -9.136296878703156, -67.10555228041132 -9.618711348303977 M-67.10555228041132 -9.618711348303977 C-66.96494526853323 -9.807111934658325, -66.82433825665512 -9.995512521012675, -66.46094804899376 -10.482422293749956 M-67.10555228041132 -9.618711348303977 C-66.87800952023478 -9.92359791736863, -66.65046676005825 -10.228484486433285, -66.46094804899376 -10.482422293749956 M-66.46094804899376 -10.482422293749956 C-66.23922564908253 -10.742870041047642, -66.0175032491713 -11.00331778834533, -65.76233007582874 -11.303058717518383 M-66.46094804899376 -10.482422293749956 C-66.30873940003775 -10.661215233731163, -66.15653075108173 -10.840008173712368, -65.76233007582874 -11.303058717518383 M-65.76233007582874 -11.303058717518383 C-65.60410923979069 -11.466434720899894, -65.44588840375265 -11.629810724281405, -65.01256913202113 -12.077248448518036 M-65.76233007582874 -11.303058717518383 C-65.60205241664366 -11.468558559667525, -65.44177475745859 -11.634058401816665, -65.01256913202113 -12.077248448518036 M-65.01256913202113 -12.077248448518036 C-64.84836282846734 -12.226376268744874, -64.68415652491355 -12.37550408897171, -64.2147461461122 -12.80181017508106 M-65.01256913202113 -12.077248448518036 C-64.8084498933591 -12.26262414037179, -64.60433065469707 -12.447999832225541, -64.2147461461122 -12.80181017508106 M-64.2147461461122 -12.80181017508106 C-63.96146668302988 -13.003793806839637, -63.70818721994756 -13.205777438598211, -63.37213954388358 -13.473766517655017 M-64.2147461461122 -12.80181017508106 C-64.04418126011345 -12.937831132742833, -63.87361637411468 -13.073852090404605, -63.37213954388358 -13.473766517655017 M-63.37213954388358 -13.473766517655017 C-63.1472085944439 -13.630668610880264, -62.92227764500423 -13.787570704105512, -62.488211776602355 -14.090356263494064 M-63.37213954388358 -13.473766517655017 C-63.022848228040175 -13.717417019010012, -62.673556912196766 -13.961067520365008, -62.488211776602355 -14.090356263494064 M-62.488211776602355 -14.090356263494064 C-62.16752535640484 -14.284758255980387, -61.84683893620732 -14.47916024846671, -61.566595093066205 -14.649045713074482 M-62.488211776602355 -14.090356263494064 C-62.21648937387375 -14.255075980846227, -61.94476697114515 -14.41979569819839, -61.566595093066205 -14.649045713074482 M-61.566595093066205 -14.649045713074482 C-61.232853612456665 -14.823158429736859, -60.899112131847126 -14.997271146399235, -60.61107661391395 -15.14753909160942 M-61.566595093066205 -14.649045713074482 C-61.22838448185986 -14.825489972306597, -60.89017387065352 -15.00193423153871, -60.61107661391395 -15.14753909160942 M-60.61107661391395 -15.14753909160942 C-60.265214896365194 -15.30064181434493, -59.919353178816436 -15.453744537080437, -59.62558276953449 -15.583787982879986 M-60.61107661391395 -15.14753909160942 C-60.382751262770505 -15.248611951529728, -60.154425911627065 -15.349684811450034, -59.62558276953449 -15.583787982879986 M-59.62558276953449 -15.583787982879986 C-59.324229468241654 -15.69468878343513, -59.022876166948826 -15.80558958399027, -58.614163165522136 -15.955999746616863 M-59.62558276953449 -15.583787982879986 C-59.38532873995319 -15.672203686649809, -59.14507471037189 -15.760619390419631, -58.614163165522136 -15.955999746616863 M-58.614163165522136 -15.955999746616863 C-58.34662904125584 -16.035402470383826, -58.07909491698954 -16.114805194150787, -57.58097394197861 -16.262644884843677 M-58.614163165522136 -15.955999746616863 C-58.36631210914616 -16.02956063915251, -58.11846105277018 -16.103121531688156, -57.58097394197861 -16.262644884843677 M-57.58097394197861 -16.262644884843677 C-57.29387268178521 -16.32817387397201, -57.00677142159181 -16.393702863100344, -56.53026069504183 -16.502463326912284 M-57.58097394197861 -16.262644884843677 C-57.34618543292528 -16.316233829896895, -57.11139692387194 -16.36982277495011, -56.53026069504183 -16.502463326912284 M-56.53026069504183 -16.502463326912284 C-56.258364024400066 -16.546421472031472, -55.9864673537583 -16.59037961715066, -55.46634103082077 -16.674469607403324 M-56.53026069504183 -16.502463326912284 C-56.30929416776536 -16.538187481421332, -56.08832764048889 -16.57391163593038, -55.46634103082077 -16.674469607403324 M-55.46634103082077 -16.674469607403324 C-55.09175507846818 -16.710605463721258, -54.7171691261156 -16.746741320039195, -54.393586823425736 -16.77795691561503 M-55.46634103082077 -16.674469607403324 C-55.230425767090566 -16.69722806916576, -54.99451050336036 -16.7199865309282, -54.393586823425736 -16.77795691561503 M-54.393586823425736 -16.77795691561503 C-53.98581636034455 -16.791033320688985, -53.57804589726336 -16.80410972576294, -53.31640625000001 -16.8125 M-54.393586823425736 -16.77795691561503 C-54.0215695639957 -16.789886785037282, -53.64955230456566 -16.801816654459536, -53.31640625000001 -16.8125 M-53.31640625000001 -16.8125 C-53.31640625000001 -16.8125, -53.31640625000001 -16.8125, -53.31640625 -16.8125 M-53.31640625000001 -16.8125 C-53.31640625000001 -16.8125, -53.31640625 -16.8125, -53.31640625 -16.8125" stroke="#9aa8a3" stroke-width="1.3" fill="none" stroke-dasharray="0 0"></path></g><g class="label" transform="translate(0, -9.3125)"><rect></rect><g><rect class="background" style="stroke: none"></rect><text y="-10.1"><tspan class="text-outer-tspan row" x="0" y="-0.1em" dy="1.1em"><tspan font-style="normal" class="text-inner-tspan" font-weight="normal">Query</tspan><tspan font-style="normal" class="text-inner-tspan" font-weight="normal"> finished</tspan></tspan></text></g></g></g></g></g></g><defs><filter id="gd1-drop-shadow" height="130%" width="130%"><feDropShadow dx="4" dy="4" stdDeviation="0" flood-opacity="0.06" flood-color="#000000"></feDropShadow></filter></defs><defs><filter id="gd1-drop-shadow-small" height="150%" width="150%"><feDropShadow dx="2" dy="2" stdDeviation="0" flood-opacity="0.06" flood-color="#000000"></feDropShadow></filter></defs><linearGradient id="gd1-gradient" gradientUnits="objectBoundingBox" x1="0%" y1="0%" x2="100%" y2="0%"><stop offset="0%" stop-color="#9aa8a3" stop-opacity="1"></stop><stop offset="100%" stop-color="hsl(214.2857142857, 0%, 86.2745098039%)" stop-opacity="1"></stop></linearGradient></svg>
|