@ntlab/ntjs-assets 2.0.37 → 2.0.39

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (324) hide show
  1. package/assets/js/DataTables/DataTables/js/dataTables.js +26 -9
  2. package/assets/js/DataTables/DataTables/js/dataTables.min.js +2 -2
  3. package/assets/js/cdn.json +2 -2
  4. package/assets/js/highcharts/es-modules/Accessibility/Accessibility.js +15 -3
  5. package/assets/js/highcharts/es-modules/Accessibility/AccessibilityComponent.js +38 -30
  6. package/assets/js/highcharts/es-modules/Core/Axis/Axis.js +15 -12
  7. package/assets/js/highcharts/es-modules/Core/Axis/AxisDefaults.js +4 -2
  8. package/assets/js/highcharts/es-modules/Core/Axis/DateTimeAxis.js +3 -3
  9. package/assets/js/highcharts/es-modules/Core/Axis/GridAxis.js +2 -2
  10. package/assets/js/highcharts/es-modules/Core/Axis/LogarithmicAxis.js +5 -10
  11. package/assets/js/highcharts/es-modules/Core/Axis/PlotLineOrBand/PlotLineOrBand.js +54 -13
  12. package/assets/js/highcharts/es-modules/Core/Axis/ScrollbarAxis.js +12 -2
  13. package/assets/js/highcharts/es-modules/Core/Axis/Tick.js +1 -1
  14. package/assets/js/highcharts/es-modules/Core/Axis/TreeGrid/TreeGridAxis.js +6 -9
  15. package/assets/js/highcharts/es-modules/Core/Axis/TreeGrid/TreeGridTick.js +2 -2
  16. package/assets/js/highcharts/es-modules/Core/Chart/Chart.js +30 -8
  17. package/assets/js/highcharts/es-modules/Core/Color/Color.js +1 -0
  18. package/assets/js/highcharts/es-modules/Core/Defaults.js +9 -7
  19. package/assets/js/highcharts/es-modules/Core/Legend/LegendSymbol.js +1 -1
  20. package/assets/js/highcharts/es-modules/Core/Renderer/SVG/SVGRenderer.js +1 -0
  21. package/assets/js/highcharts/es-modules/Core/Series/DataLabel.js +9 -0
  22. package/assets/js/highcharts/es-modules/Core/Series/Series.js +1 -1
  23. package/assets/js/highcharts/es-modules/Core/Tooltip.js +9 -0
  24. package/assets/js/highcharts/es-modules/Extensions/Annotations/Annotation.js +4 -0
  25. package/assets/js/highcharts/es-modules/Extensions/Boost/BoostSeries.js +2 -0
  26. package/assets/js/highcharts/es-modules/Extensions/Data.js +125 -98
  27. package/assets/js/highcharts/es-modules/Extensions/Exporting/Exporting.js +5 -1
  28. package/assets/js/highcharts/es-modules/Extensions/OfflineExporting/OfflineExporting.js +4 -1
  29. package/assets/js/highcharts/es-modules/Maps/GeoJSONComposition.js +0 -5
  30. package/assets/js/highcharts/es-modules/Series/Funnel3D/Funnel3DSeries.js +1 -0
  31. package/assets/js/highcharts/es-modules/Series/MapBubble/MapBubbleSeries.js +3 -3
  32. package/assets/js/highcharts/es-modules/Series/Pictorial/PictorialSeries.js +2 -1
  33. package/assets/js/highcharts/es-modules/Series/Pyramid3D/Pyramid3DSeries.js +1 -0
  34. package/assets/js/highcharts/es-modules/Series/Treegraph/TreegraphSeries.js +1 -1
  35. package/assets/js/highcharts/es-modules/Stock/Navigator/Navigator.js +7 -2
  36. package/assets/js/highcharts/es-modules/masters/highcharts.src.js +1 -1
  37. package/assets/js/highcharts/highcharts-3d.js +1 -1
  38. package/assets/js/highcharts/highcharts-3d.src.js +1 -1
  39. package/assets/js/highcharts/highcharts-gantt.js +3 -3
  40. package/assets/js/highcharts/highcharts-gantt.src.js +176 -79
  41. package/assets/js/highcharts/highcharts-more.js +1 -1
  42. package/assets/js/highcharts/highcharts-more.src.js +1 -1
  43. package/assets/js/highcharts/highcharts.js +3 -3
  44. package/assets/js/highcharts/highcharts.src.js +147 -62
  45. package/assets/js/highcharts/highmaps.js +3 -3
  46. package/assets/js/highcharts/highmaps.src.js +150 -70
  47. package/assets/js/highcharts/highstock.js +3 -3
  48. package/assets/js/highcharts/highstock.src.js +166 -66
  49. package/assets/js/highcharts/indicators/acceleration-bands.js +1 -1
  50. package/assets/js/highcharts/indicators/acceleration-bands.src.js +1 -1
  51. package/assets/js/highcharts/indicators/accumulation-distribution.js +1 -1
  52. package/assets/js/highcharts/indicators/accumulation-distribution.src.js +1 -1
  53. package/assets/js/highcharts/indicators/ao.js +1 -1
  54. package/assets/js/highcharts/indicators/ao.src.js +1 -1
  55. package/assets/js/highcharts/indicators/apo.js +1 -1
  56. package/assets/js/highcharts/indicators/apo.src.js +1 -1
  57. package/assets/js/highcharts/indicators/aroon-oscillator.js +1 -1
  58. package/assets/js/highcharts/indicators/aroon-oscillator.src.js +1 -1
  59. package/assets/js/highcharts/indicators/aroon.js +1 -1
  60. package/assets/js/highcharts/indicators/aroon.src.js +1 -1
  61. package/assets/js/highcharts/indicators/atr.js +1 -1
  62. package/assets/js/highcharts/indicators/atr.src.js +1 -1
  63. package/assets/js/highcharts/indicators/bollinger-bands.js +1 -1
  64. package/assets/js/highcharts/indicators/bollinger-bands.src.js +1 -1
  65. package/assets/js/highcharts/indicators/cci.js +1 -1
  66. package/assets/js/highcharts/indicators/cci.src.js +1 -1
  67. package/assets/js/highcharts/indicators/chaikin.js +1 -1
  68. package/assets/js/highcharts/indicators/chaikin.src.js +1 -1
  69. package/assets/js/highcharts/indicators/cmf.js +1 -1
  70. package/assets/js/highcharts/indicators/cmf.src.js +1 -1
  71. package/assets/js/highcharts/indicators/cmo.js +1 -1
  72. package/assets/js/highcharts/indicators/cmo.src.js +1 -1
  73. package/assets/js/highcharts/indicators/dema.js +1 -1
  74. package/assets/js/highcharts/indicators/dema.src.js +1 -1
  75. package/assets/js/highcharts/indicators/disparity-index.js +1 -1
  76. package/assets/js/highcharts/indicators/disparity-index.src.js +1 -1
  77. package/assets/js/highcharts/indicators/dmi.js +1 -1
  78. package/assets/js/highcharts/indicators/dmi.src.js +1 -1
  79. package/assets/js/highcharts/indicators/dpo.js +1 -1
  80. package/assets/js/highcharts/indicators/dpo.src.js +1 -1
  81. package/assets/js/highcharts/indicators/ichimoku-kinko-hyo.js +1 -1
  82. package/assets/js/highcharts/indicators/ichimoku-kinko-hyo.src.js +1 -1
  83. package/assets/js/highcharts/indicators/indicators-all.js +1 -1
  84. package/assets/js/highcharts/indicators/indicators-all.src.js +1 -1
  85. package/assets/js/highcharts/indicators/indicators.js +1 -1
  86. package/assets/js/highcharts/indicators/indicators.src.js +1 -1
  87. package/assets/js/highcharts/indicators/keltner-channels.js +1 -1
  88. package/assets/js/highcharts/indicators/keltner-channels.src.js +1 -1
  89. package/assets/js/highcharts/indicators/klinger.js +1 -1
  90. package/assets/js/highcharts/indicators/klinger.src.js +1 -1
  91. package/assets/js/highcharts/indicators/macd.js +1 -1
  92. package/assets/js/highcharts/indicators/macd.src.js +1 -1
  93. package/assets/js/highcharts/indicators/mfi.js +1 -1
  94. package/assets/js/highcharts/indicators/mfi.src.js +1 -1
  95. package/assets/js/highcharts/indicators/momentum.js +1 -1
  96. package/assets/js/highcharts/indicators/momentum.src.js +1 -1
  97. package/assets/js/highcharts/indicators/natr.js +1 -1
  98. package/assets/js/highcharts/indicators/natr.src.js +1 -1
  99. package/assets/js/highcharts/indicators/obv.js +1 -1
  100. package/assets/js/highcharts/indicators/obv.src.js +1 -1
  101. package/assets/js/highcharts/indicators/pivot-points.js +1 -1
  102. package/assets/js/highcharts/indicators/pivot-points.src.js +1 -1
  103. package/assets/js/highcharts/indicators/ppo.js +1 -1
  104. package/assets/js/highcharts/indicators/ppo.src.js +1 -1
  105. package/assets/js/highcharts/indicators/price-channel.js +1 -1
  106. package/assets/js/highcharts/indicators/price-channel.src.js +1 -1
  107. package/assets/js/highcharts/indicators/price-envelopes.js +1 -1
  108. package/assets/js/highcharts/indicators/price-envelopes.src.js +1 -1
  109. package/assets/js/highcharts/indicators/psar.js +1 -1
  110. package/assets/js/highcharts/indicators/psar.src.js +1 -1
  111. package/assets/js/highcharts/indicators/regressions.js +1 -1
  112. package/assets/js/highcharts/indicators/regressions.src.js +1 -1
  113. package/assets/js/highcharts/indicators/roc.js +1 -1
  114. package/assets/js/highcharts/indicators/roc.src.js +1 -1
  115. package/assets/js/highcharts/indicators/rsi.js +1 -1
  116. package/assets/js/highcharts/indicators/rsi.src.js +1 -1
  117. package/assets/js/highcharts/indicators/slow-stochastic.js +1 -1
  118. package/assets/js/highcharts/indicators/slow-stochastic.src.js +1 -1
  119. package/assets/js/highcharts/indicators/stochastic.js +1 -1
  120. package/assets/js/highcharts/indicators/stochastic.src.js +1 -1
  121. package/assets/js/highcharts/indicators/supertrend.js +1 -1
  122. package/assets/js/highcharts/indicators/supertrend.src.js +1 -1
  123. package/assets/js/highcharts/indicators/tema.js +1 -1
  124. package/assets/js/highcharts/indicators/tema.src.js +1 -1
  125. package/assets/js/highcharts/indicators/trendline.js +1 -1
  126. package/assets/js/highcharts/indicators/trendline.src.js +1 -1
  127. package/assets/js/highcharts/indicators/trix.js +1 -1
  128. package/assets/js/highcharts/indicators/trix.src.js +1 -1
  129. package/assets/js/highcharts/indicators/volume-by-price.js +1 -1
  130. package/assets/js/highcharts/indicators/volume-by-price.src.js +1 -1
  131. package/assets/js/highcharts/indicators/vwap.js +1 -1
  132. package/assets/js/highcharts/indicators/vwap.src.js +1 -1
  133. package/assets/js/highcharts/indicators/williams-r.js +1 -1
  134. package/assets/js/highcharts/indicators/williams-r.src.js +1 -1
  135. package/assets/js/highcharts/indicators/wma.js +1 -1
  136. package/assets/js/highcharts/indicators/wma.src.js +1 -1
  137. package/assets/js/highcharts/indicators/zigzag.js +1 -1
  138. package/assets/js/highcharts/indicators/zigzag.src.js +1 -1
  139. package/assets/js/highcharts/modules/accessibility.js +2 -2
  140. package/assets/js/highcharts/modules/accessibility.src.js +74 -38
  141. package/assets/js/highcharts/modules/annotations-advanced.js +2 -2
  142. package/assets/js/highcharts/modules/annotations-advanced.src.js +7 -3
  143. package/assets/js/highcharts/modules/annotations.js +2 -2
  144. package/assets/js/highcharts/modules/annotations.src.js +7 -3
  145. package/assets/js/highcharts/modules/arc-diagram.js +2 -2
  146. package/assets/js/highcharts/modules/arc-diagram.src.js +5 -4
  147. package/assets/js/highcharts/modules/arrow-symbols.js +1 -1
  148. package/assets/js/highcharts/modules/arrow-symbols.src.js +1 -1
  149. package/assets/js/highcharts/modules/boost-canvas.js +2 -2
  150. package/assets/js/highcharts/modules/boost-canvas.src.js +3 -1
  151. package/assets/js/highcharts/modules/boost.js +2 -2
  152. package/assets/js/highcharts/modules/boost.src.js +3 -1
  153. package/assets/js/highcharts/modules/broken-axis.js +1 -1
  154. package/assets/js/highcharts/modules/broken-axis.src.js +1 -1
  155. package/assets/js/highcharts/modules/bullet.js +1 -1
  156. package/assets/js/highcharts/modules/bullet.src.js +1 -1
  157. package/assets/js/highcharts/modules/coloraxis.js +1 -1
  158. package/assets/js/highcharts/modules/coloraxis.src.js +1 -1
  159. package/assets/js/highcharts/modules/current-date-indicator.js +1 -1
  160. package/assets/js/highcharts/modules/current-date-indicator.src.js +1 -1
  161. package/assets/js/highcharts/modules/cylinder.js +1 -1
  162. package/assets/js/highcharts/modules/cylinder.src.js +1 -1
  163. package/assets/js/highcharts/modules/data-tools.js +1 -1
  164. package/assets/js/highcharts/modules/data-tools.src.js +1 -1
  165. package/assets/js/highcharts/modules/data.js +2 -2
  166. package/assets/js/highcharts/modules/data.src.js +126 -100
  167. package/assets/js/highcharts/modules/datagrouping.js +1 -1
  168. package/assets/js/highcharts/modules/datagrouping.src.js +1 -1
  169. package/assets/js/highcharts/modules/debugger.js +1 -1
  170. package/assets/js/highcharts/modules/debugger.src.js +1 -1
  171. package/assets/js/highcharts/modules/dependency-wheel.js +1 -1
  172. package/assets/js/highcharts/modules/dependency-wheel.src.js +1 -1
  173. package/assets/js/highcharts/modules/dotplot.js +1 -1
  174. package/assets/js/highcharts/modules/dotplot.src.js +1 -1
  175. package/assets/js/highcharts/modules/drag-panes.js +1 -1
  176. package/assets/js/highcharts/modules/drag-panes.src.js +1 -1
  177. package/assets/js/highcharts/modules/draggable-points.js +1 -1
  178. package/assets/js/highcharts/modules/draggable-points.src.js +1 -1
  179. package/assets/js/highcharts/modules/drilldown.js +1 -1
  180. package/assets/js/highcharts/modules/drilldown.src.js +1 -1
  181. package/assets/js/highcharts/modules/dumbbell.js +1 -1
  182. package/assets/js/highcharts/modules/dumbbell.src.js +1 -1
  183. package/assets/js/highcharts/modules/export-data.js +1 -1
  184. package/assets/js/highcharts/modules/export-data.src.js +1 -1
  185. package/assets/js/highcharts/modules/exporting.js +2 -2
  186. package/assets/js/highcharts/modules/exporting.src.js +6 -2
  187. package/assets/js/highcharts/modules/flowmap.js +1 -1
  188. package/assets/js/highcharts/modules/flowmap.src.js +1 -1
  189. package/assets/js/highcharts/modules/full-screen.js +1 -1
  190. package/assets/js/highcharts/modules/full-screen.src.js +1 -1
  191. package/assets/js/highcharts/modules/funnel.js +1 -1
  192. package/assets/js/highcharts/modules/funnel.src.js +1 -1
  193. package/assets/js/highcharts/modules/funnel3d.js +1 -1
  194. package/assets/js/highcharts/modules/funnel3d.src.js +2 -1
  195. package/assets/js/highcharts/modules/gantt.js +2 -2
  196. package/assets/js/highcharts/modules/gantt.src.js +30 -18
  197. package/assets/js/highcharts/modules/geoheatmap.js +1 -1
  198. package/assets/js/highcharts/modules/geoheatmap.src.js +1 -1
  199. package/assets/js/highcharts/modules/grid-axis.js +2 -2
  200. package/assets/js/highcharts/modules/grid-axis.src.js +3 -3
  201. package/assets/js/highcharts/modules/heatmap.js +1 -1
  202. package/assets/js/highcharts/modules/heatmap.src.js +1 -1
  203. package/assets/js/highcharts/modules/heikinashi.js +1 -1
  204. package/assets/js/highcharts/modules/heikinashi.src.js +1 -1
  205. package/assets/js/highcharts/modules/histogram-bellcurve.js +1 -1
  206. package/assets/js/highcharts/modules/histogram-bellcurve.src.js +1 -1
  207. package/assets/js/highcharts/modules/hollowcandlestick.js +1 -1
  208. package/assets/js/highcharts/modules/hollowcandlestick.src.js +1 -1
  209. package/assets/js/highcharts/modules/item-series.js +1 -1
  210. package/assets/js/highcharts/modules/item-series.src.js +1 -1
  211. package/assets/js/highcharts/modules/lollipop.js +1 -1
  212. package/assets/js/highcharts/modules/lollipop.src.js +1 -1
  213. package/assets/js/highcharts/modules/map.js +2 -2
  214. package/assets/js/highcharts/modules/map.src.js +4 -9
  215. package/assets/js/highcharts/modules/marker-clusters.js +1 -1
  216. package/assets/js/highcharts/modules/marker-clusters.src.js +1 -1
  217. package/assets/js/highcharts/modules/mouse-wheel-zoom.js +1 -1
  218. package/assets/js/highcharts/modules/mouse-wheel-zoom.src.js +1 -1
  219. package/assets/js/highcharts/modules/navigator.js +2 -2
  220. package/assets/js/highcharts/modules/navigator.src.js +20 -5
  221. package/assets/js/highcharts/modules/networkgraph.js +1 -1
  222. package/assets/js/highcharts/modules/networkgraph.src.js +1 -1
  223. package/assets/js/highcharts/modules/no-data-to-display.js +1 -1
  224. package/assets/js/highcharts/modules/no-data-to-display.src.js +1 -1
  225. package/assets/js/highcharts/modules/offline-exporting.js +2 -2
  226. package/assets/js/highcharts/modules/offline-exporting.src.js +6 -3
  227. package/assets/js/highcharts/modules/organization.js +1 -1
  228. package/assets/js/highcharts/modules/organization.src.js +1 -1
  229. package/assets/js/highcharts/modules/overlapping-datalabels.js +1 -1
  230. package/assets/js/highcharts/modules/overlapping-datalabels.src.js +1 -1
  231. package/assets/js/highcharts/modules/parallel-coordinates.js +1 -1
  232. package/assets/js/highcharts/modules/parallel-coordinates.src.js +1 -1
  233. package/assets/js/highcharts/modules/pareto.js +1 -1
  234. package/assets/js/highcharts/modules/pareto.src.js +1 -1
  235. package/assets/js/highcharts/modules/pathfinder.js +1 -1
  236. package/assets/js/highcharts/modules/pathfinder.src.js +1 -1
  237. package/assets/js/highcharts/modules/pattern-fill.js +1 -1
  238. package/assets/js/highcharts/modules/pattern-fill.src.js +1 -1
  239. package/assets/js/highcharts/modules/pictorial.js +1 -1
  240. package/assets/js/highcharts/modules/pictorial.src.js +3 -2
  241. package/assets/js/highcharts/modules/price-indicator.js +1 -1
  242. package/assets/js/highcharts/modules/price-indicator.src.js +1 -1
  243. package/assets/js/highcharts/modules/pyramid3d.js +1 -1
  244. package/assets/js/highcharts/modules/pyramid3d.src.js +2 -1
  245. package/assets/js/highcharts/modules/sankey.js +1 -1
  246. package/assets/js/highcharts/modules/sankey.src.js +1 -1
  247. package/assets/js/highcharts/modules/series-label.js +1 -1
  248. package/assets/js/highcharts/modules/series-label.src.js +1 -1
  249. package/assets/js/highcharts/modules/series-on-point.js +1 -1
  250. package/assets/js/highcharts/modules/series-on-point.src.js +1 -1
  251. package/assets/js/highcharts/modules/solid-gauge.js +1 -1
  252. package/assets/js/highcharts/modules/solid-gauge.src.js +1 -1
  253. package/assets/js/highcharts/modules/sonification.js +1 -1
  254. package/assets/js/highcharts/modules/sonification.src.js +1 -1
  255. package/assets/js/highcharts/modules/static-scale.js +1 -1
  256. package/assets/js/highcharts/modules/static-scale.src.js +1 -1
  257. package/assets/js/highcharts/modules/stock-tools.js +2 -2
  258. package/assets/js/highcharts/modules/stock-tools.src.js +3 -3
  259. package/assets/js/highcharts/modules/stock.js +2 -2
  260. package/assets/js/highcharts/modules/stock.src.js +20 -5
  261. package/assets/js/highcharts/modules/streamgraph.js +1 -1
  262. package/assets/js/highcharts/modules/streamgraph.src.js +1 -1
  263. package/assets/js/highcharts/modules/sunburst.js +1 -1
  264. package/assets/js/highcharts/modules/sunburst.src.js +1 -1
  265. package/assets/js/highcharts/modules/textpath.js +1 -1
  266. package/assets/js/highcharts/modules/textpath.src.js +1 -1
  267. package/assets/js/highcharts/modules/tiledwebmap.js +1 -1
  268. package/assets/js/highcharts/modules/tiledwebmap.src.js +1 -1
  269. package/assets/js/highcharts/modules/tilemap.js +1 -1
  270. package/assets/js/highcharts/modules/tilemap.src.js +1 -1
  271. package/assets/js/highcharts/modules/timeline.js +1 -1
  272. package/assets/js/highcharts/modules/timeline.src.js +1 -1
  273. package/assets/js/highcharts/modules/treegraph.js +2 -2
  274. package/assets/js/highcharts/modules/treegraph.src.js +2 -2
  275. package/assets/js/highcharts/modules/treegrid.js +2 -2
  276. package/assets/js/highcharts/modules/treegrid.src.js +11 -14
  277. package/assets/js/highcharts/modules/treemap.js +1 -1
  278. package/assets/js/highcharts/modules/treemap.src.js +1 -1
  279. package/assets/js/highcharts/modules/variable-pie.js +1 -1
  280. package/assets/js/highcharts/modules/variable-pie.src.js +1 -1
  281. package/assets/js/highcharts/modules/variwide.js +1 -1
  282. package/assets/js/highcharts/modules/variwide.src.js +1 -1
  283. package/assets/js/highcharts/modules/vector.js +1 -1
  284. package/assets/js/highcharts/modules/vector.src.js +1 -1
  285. package/assets/js/highcharts/modules/venn.js +1 -1
  286. package/assets/js/highcharts/modules/venn.src.js +1 -1
  287. package/assets/js/highcharts/modules/windbarb.js +1 -1
  288. package/assets/js/highcharts/modules/windbarb.src.js +1 -1
  289. package/assets/js/highcharts/modules/wordcloud.js +1 -1
  290. package/assets/js/highcharts/modules/wordcloud.src.js +1 -1
  291. package/assets/js/highcharts/modules/xrange.js +1 -1
  292. package/assets/js/highcharts/modules/xrange.src.js +1 -1
  293. package/assets/js/highcharts/standalone-navigator.js +2 -2
  294. package/assets/js/highcharts/standalone-navigator.src.js +165 -65
  295. package/assets/js/highcharts/themes/avocado.js +1 -1
  296. package/assets/js/highcharts/themes/avocado.src.js +1 -1
  297. package/assets/js/highcharts/themes/brand-dark.js +1 -1
  298. package/assets/js/highcharts/themes/brand-dark.src.js +1 -1
  299. package/assets/js/highcharts/themes/brand-light.js +1 -1
  300. package/assets/js/highcharts/themes/brand-light.src.js +1 -1
  301. package/assets/js/highcharts/themes/dark-blue.js +1 -1
  302. package/assets/js/highcharts/themes/dark-blue.src.js +1 -1
  303. package/assets/js/highcharts/themes/dark-green.js +1 -1
  304. package/assets/js/highcharts/themes/dark-green.src.js +1 -1
  305. package/assets/js/highcharts/themes/dark-unica.js +1 -1
  306. package/assets/js/highcharts/themes/dark-unica.src.js +1 -1
  307. package/assets/js/highcharts/themes/gray.js +1 -1
  308. package/assets/js/highcharts/themes/gray.src.js +1 -1
  309. package/assets/js/highcharts/themes/grid-light.js +1 -1
  310. package/assets/js/highcharts/themes/grid-light.src.js +1 -1
  311. package/assets/js/highcharts/themes/grid.js +1 -1
  312. package/assets/js/highcharts/themes/grid.src.js +1 -1
  313. package/assets/js/highcharts/themes/high-contrast-dark.js +1 -1
  314. package/assets/js/highcharts/themes/high-contrast-dark.src.js +1 -1
  315. package/assets/js/highcharts/themes/high-contrast-light.js +1 -1
  316. package/assets/js/highcharts/themes/high-contrast-light.src.js +1 -1
  317. package/assets/js/highcharts/themes/sand-signika.js +1 -1
  318. package/assets/js/highcharts/themes/sand-signika.src.js +1 -1
  319. package/assets/js/highcharts/themes/skies.js +1 -1
  320. package/assets/js/highcharts/themes/skies.src.js +1 -1
  321. package/assets/js/highcharts/themes/sunset.js +1 -1
  322. package/assets/js/highcharts/themes/sunset.src.js +1 -1
  323. package/package.json +1 -1
  324. package/assets/js/highcharts/es-modules/Core/Series/KDPointSearchObjectLike.js +0 -10
@@ -1,5 +1,5 @@
1
1
  !/**
2
- * Highcharts JS v11.4.7 (2024-08-14)
2
+ * Highcharts JS v11.4.8 (2024-08-29)
3
3
  *
4
4
  * Boost module
5
5
  *
@@ -7,4 +7,4 @@
7
7
  * Author: Torstein Honsi
8
8
  *
9
9
  * License: www.highcharts.com/license
10
- */function(t){"object"==typeof module&&module.exports?(t.default=t,module.exports=t):"function"==typeof define&&define.amd?define("highcharts/modules/boost-canvas",["highcharts"],function(e){return t(e),t.Highcharts=e,t}):t("undefined"!=typeof Highcharts?Highcharts:void 0)}(function(t){"use strict";var e=t?t._modules:{};function i(e,i,s,o){e.hasOwnProperty(i)||(e[i]=o.apply(null,s),"function"==typeof CustomEvent&&t.win.dispatchEvent(new CustomEvent("HighchartsModuleLoaded",{detail:{path:i,module:e[i]}})))}i(e,"Extensions/Boost/Boostables.js",[],function(){return["area","areaspline","arearange","column","columnrange","bar","line","scatter","heatmap","bubble","treemap"]}),i(e,"Extensions/Boost/BoostableMap.js",[e["Extensions/Boost/Boostables.js"]],function(t){let e={};return t.forEach(t=>{e[t]=!0}),e}),i(e,"Extensions/Boost/BoostChart.js",[e["Extensions/Boost/BoostableMap.js"],e["Core/Globals.js"],e["Core/Utilities.js"]],function(t,e,i){let{composed:s}=e,{addEvent:o,pick:r,pushUnique:n}=i;function a(e){let i=e.series,s=e.boost=e.boost||{},o=e.options.boost||{},n=r(o.seriesThreshold,50);if(i.length>=n)return!0;if(1===i.length)return!1;let a=o.allowForce;if(void 0===a){for(let t of(a=!0,e.xAxis))if(r(t.min,-1/0)>r(t.dataMin,-1/0)||r(t.max,1/0)<r(t.dataMax,1/0)){a=!1;break}}if(void 0!==s.forceChartBoost){if(a)return s.forceChartBoost;s.forceChartBoost=void 0}let l=0,h=0,d;for(let e of i)0!==(d=e.options).boostThreshold&&!1!==e.visible&&"heatmap"!==e.type&&(t[e.type]&&++l,function(...t){let e=-Number.MAX_VALUE;return t.forEach(function(t){if(null!=t&&void 0!==t.length&&t.length>0)return e=t.length,!0}),e}(e.processedXData,d.data,e.points)>=(d.boostThreshold||Number.MAX_VALUE)&&++h);return s.forceChartBoost=a&&(l===i.length&&h===l||h>5),s.forceChartBoost}function l(t){function e(){t.boost&&t.boost.wgl&&a(t)&&t.boost.wgl.render(t)}o(t,"predraw",function(){t.boost=t.boost||{},t.boost.forceChartBoost=void 0,t.boosted=!1,t.axes.some(t=>t.isPanning)||t.boost.clear?.(),t.boost.canvas&&t.boost.wgl&&a(t)&&t.boost.wgl.allocateBuffer(t),t.boost.markerGroup&&t.xAxis&&t.xAxis.length>0&&t.yAxis&&t.yAxis.length>0&&t.boost.markerGroup.translate(t.xAxis[0].pos,t.yAxis[0].pos)}),o(t,"load",e,{order:-1}),o(t,"redraw",e);let i=-1,s=-1;o(t.pointer,"afterGetHoverData",e=>{let o=e.hoverPoint?.series;if(t.boost=t.boost||{},t.boost.markerGroup&&o){let e=t.inverted?o.yAxis:o.xAxis,r=t.inverted?o.xAxis:o.yAxis;(e&&e.pos!==i||r&&r.pos!==s)&&(t.series.forEach(t=>{t.halo?.hide()}),t.boost.markerGroup.translate(e.pos,r.pos),i=e.pos,s=r.pos)}})}return{compose:function(t,e){return e&&n(s,"Boost.Chart")&&t.prototype.callbacks.push(l),t},getBoostClipRect:function(t,e){let i=t.navigator,s={x:t.plotLeft,y:t.plotTop,width:t.plotWidth,height:t.plotHeight};if(i&&t.inverted?(s.width+=i.top+i.height,i.opposite||(s.x=i.left)):i&&!t.inverted&&(s.height=i.top+i.height-t.plotTop),e.getClipBox){let{xAxis:i,yAxis:o}=e;if(s=e.getClipBox(),t.inverted){let t=s.width;s.width=s.height,s.height=t,s.x=o.pos,s.y=i.pos}else s.x=i.pos,s.y=o.pos}if(e===t){let e=t.inverted?t.xAxis:t.yAxis;e.length<=1&&(s.y=Math.min(e[0].pos,s.y),s.height=e[0].pos-t.plotTop+e[0].len)}return s},isChartSeriesBoosting:a}}),i(e,"Extensions/Boost/WGLDrawMode.js",[],function(){return{area:"LINES",arearange:"LINES",areaspline:"LINES",column:"LINES",columnrange:"LINES",bar:"LINES",line:"LINE_STRIP",scatter:"POINTS",heatmap:"TRIANGLES",treemap:"TRIANGLES",bubble:"POINTS"}}),i(e,"Extensions/Boost/WGLShader.js",[e["Core/Utilities.js"]],function(t){let{clamp:e,error:i,pick:s}=t;return class{constructor(t){if(this.errors=[],this.uLocations={},this.gl=t,t&&!this.createShader())return}bind(){this.gl&&this.shaderProgram&&this.gl.useProgram(this.shaderProgram)}createShader(){let t=this.stringToProgram("#version 100\n#define LN10 2.302585092994046\nprecision highp float;\nattribute vec4 aVertexPosition;\nattribute vec4 aColor;\nvarying highp vec2 position;\nvarying highp vec4 vColor;\nuniform mat4 uPMatrix;\nuniform float pSize;\nuniform float translatedThreshold;\nuniform bool hasThreshold;\nuniform bool skipTranslation;\nuniform float xAxisTrans;\nuniform float xAxisMin;\nuniform float xAxisMinPad;\nuniform float xAxisPointRange;\nuniform float xAxisLen;\nuniform bool xAxisPostTranslate;\nuniform float xAxisOrdinalSlope;\nuniform float xAxisOrdinalOffset;\nuniform float xAxisPos;\nuniform bool xAxisCVSCoord;\nuniform bool xAxisIsLog;\nuniform bool xAxisReversed;\nuniform float yAxisTrans;\nuniform float yAxisMin;\nuniform float yAxisMinPad;\nuniform float yAxisPointRange;\nuniform float yAxisLen;\nuniform bool yAxisPostTranslate;\nuniform float yAxisOrdinalSlope;\nuniform float yAxisOrdinalOffset;\nuniform float yAxisPos;\nuniform bool yAxisCVSCoord;\nuniform bool yAxisIsLog;\nuniform bool yAxisReversed;\nuniform bool isBubble;\nuniform bool bubbleSizeByArea;\nuniform float bubbleZMin;\nuniform float bubbleZMax;\nuniform float bubbleZThreshold;\nuniform float bubbleMinSize;\nuniform float bubbleMaxSize;\nuniform bool bubbleSizeAbs;\nuniform bool isInverted;\nfloat bubbleRadius(){\nfloat value = aVertexPosition.w;\nfloat zMax = bubbleZMax;\nfloat zMin = bubbleZMin;\nfloat radius = 0.0;\nfloat pos = 0.0;\nfloat zRange = zMax - zMin;\nif (bubbleSizeAbs){\nvalue = value - bubbleZThreshold;\nzMax = max(zMax - bubbleZThreshold, zMin - bubbleZThreshold);\nzMin = 0.0;\n}\nif (value < zMin){\nradius = bubbleZMin / 2.0 - 1.0;\n} else {\npos = zRange > 0.0 ? (value - zMin) / zRange : 0.5;\nif (bubbleSizeByArea && pos > 0.0){\npos = sqrt(pos);\n}\nradius = ceil(bubbleMinSize + pos * (bubbleMaxSize - bubbleMinSize)) / 2.0;\n}\nreturn radius * 2.0;\n}\nfloat translate(float val,\nfloat pointPlacement,\nfloat localA,\nfloat localMin,\nfloat minPixelPadding,\nfloat pointRange,\nfloat len,\nbool cvsCoord,\nbool isLog,\nbool reversed\n){\nfloat sign = 1.0;\nfloat cvsOffset = 0.0;\nif (cvsCoord) {\nsign *= -1.0;\ncvsOffset = len;\n}\nif (isLog) {\nval = log(val) / LN10;\n}\nif (reversed) {\nsign *= -1.0;\ncvsOffset -= sign * len;\n}\nreturn sign * (val - localMin) * localA + cvsOffset + \n(sign * minPixelPadding);\n}\nfloat xToPixels(float value) {\nif (skipTranslation){\nreturn value;// + xAxisPos;\n}\nreturn translate(value, 0.0, xAxisTrans, xAxisMin, xAxisMinPad, xAxisPointRange, xAxisLen, xAxisCVSCoord, xAxisIsLog, xAxisReversed);// + xAxisPos;\n}\nfloat yToPixels(float value, float checkTreshold) {\nfloat v;\nif (skipTranslation){\nv = value;// + yAxisPos;\n} else {\nv = translate(value, 0.0, yAxisTrans, yAxisMin, yAxisMinPad, yAxisPointRange, yAxisLen, yAxisCVSCoord, yAxisIsLog, yAxisReversed);// + yAxisPos;\nif (v > yAxisLen) {\nv = yAxisLen;\n}\n}\nif (checkTreshold > 0.0 && hasThreshold) {\nv = min(v, translatedThreshold);\n}\nreturn v;\n}\nvoid main(void) {\nif (isBubble){\ngl_PointSize = bubbleRadius();\n} else {\ngl_PointSize = pSize;\n}\nvColor = aColor;\nif (skipTranslation && isInverted) {\ngl_Position = uPMatrix * vec4(aVertexPosition.y + yAxisPos, aVertexPosition.x + xAxisPos, 0.0, 1.0);\n} else if (isInverted) {\ngl_Position = uPMatrix * vec4(yToPixels(aVertexPosition.y, aVertexPosition.z) + yAxisPos, xToPixels(aVertexPosition.x) + xAxisPos, 0.0, 1.0);\n} else {\ngl_Position = uPMatrix * vec4(xToPixels(aVertexPosition.x) + xAxisPos, yToPixels(aVertexPosition.y, aVertexPosition.z) + yAxisPos, 0.0, 1.0);\n}\n}","vertex"),e=this.stringToProgram("precision highp float;\nuniform vec4 fillColor;\nvarying highp vec2 position;\nvarying highp vec4 vColor;\nuniform sampler2D uSampler;\nuniform bool isCircle;\nuniform bool hasColor;\nvoid main(void) {\nvec4 col = fillColor;\nvec4 tcol = texture2D(uSampler, gl_PointCoord.st);\nif (hasColor) {\ncol = vColor;\n}\nif (isCircle) {\ncol *= tcol;\nif (tcol.r < 0.0) {\ndiscard;\n} else {\ngl_FragColor = col;\n}\n} else {\ngl_FragColor = col;\n}\n}","fragment"),i=t=>this.gl.getUniformLocation(this.shaderProgram,t);return t&&e?(this.shaderProgram=this.gl.createProgram(),this.gl.attachShader(this.shaderProgram,t),this.gl.attachShader(this.shaderProgram,e),this.gl.linkProgram(this.shaderProgram),this.gl.getProgramParameter(this.shaderProgram,this.gl.LINK_STATUS))?(this.gl.useProgram(this.shaderProgram),this.gl.bindAttribLocation(this.shaderProgram,0,"aVertexPosition"),this.pUniform=i("uPMatrix"),this.psUniform=i("pSize"),this.fcUniform=i("fillColor"),this.isBubbleUniform=i("isBubble"),this.bubbleSizeAbsUniform=i("bubbleSizeAbs"),this.bubbleSizeAreaUniform=i("bubbleSizeByArea"),this.uSamplerUniform=i("uSampler"),this.skipTranslationUniform=i("skipTranslation"),this.isCircleUniform=i("isCircle"),this.isInverted=i("isInverted"),!0):(this.errors.push(this.gl.getProgramInfoLog(this.shaderProgram)),this.handleErrors(),this.shaderProgram=!1,!1):(this.shaderProgram=!1,this.handleErrors(),!1)}handleErrors(){this.errors.length&&i("[highcharts boost] shader error - "+this.errors.join("\n"))}stringToProgram(t,e){let i=this.gl.createShader("vertex"===e?this.gl.VERTEX_SHADER:this.gl.FRAGMENT_SHADER);return(this.gl.shaderSource(i,t),this.gl.compileShader(i),this.gl.getShaderParameter(i,this.gl.COMPILE_STATUS))?i:(this.errors.push("when compiling "+e+" shader:\n"+this.gl.getShaderInfoLog(i)),!1)}destroy(){this.gl&&this.shaderProgram&&(this.gl.deleteProgram(this.shaderProgram),this.shaderProgram=!1)}fillColorUniform(){return this.fcUniform}getProgram(){return this.shaderProgram}pointSizeUniform(){return this.psUniform}perspectiveUniform(){return this.pUniform}reset(){this.gl&&this.shaderProgram&&(this.gl.uniform1i(this.isBubbleUniform,0),this.gl.uniform1i(this.isCircleUniform,0))}setBubbleUniforms(t,i,o,r=1){let n=t.options,a=Number.MAX_VALUE,l=-Number.MAX_VALUE;if(this.gl&&this.shaderProgram&&t.is("bubble")){let h=t.getPxExtremes();a=s(n.zMin,e(i,!1===n.displayNegative?n.zThreshold:-Number.MAX_VALUE,a)),l=s(n.zMax,Math.max(l,o)),this.gl.uniform1i(this.isBubbleUniform,1),this.gl.uniform1i(this.isCircleUniform,1),this.gl.uniform1i(this.bubbleSizeAreaUniform,"width"!==t.options.sizeBy),this.gl.uniform1i(this.bubbleSizeAbsUniform,t.options.sizeByAbsoluteValue),this.setUniform("bubbleMinSize",h.minPxSize*r),this.setUniform("bubbleMaxSize",h.maxPxSize*r),this.setUniform("bubbleZMin",a),this.setUniform("bubbleZMax",l),this.setUniform("bubbleZThreshold",t.options.zThreshold)}}setColor(t){this.gl&&this.shaderProgram&&this.gl.uniform4f(this.fcUniform,t[0]/255,t[1]/255,t[2]/255,t[3])}setDrawAsCircle(t){this.gl&&this.shaderProgram&&this.gl.uniform1i(this.isCircleUniform,t?1:0)}setInverted(t){this.gl&&this.shaderProgram&&this.gl.uniform1i(this.isInverted,t)}setPMatrix(t){this.gl&&this.shaderProgram&&this.gl.uniformMatrix4fv(this.pUniform,!1,t)}setPointSize(t){this.gl&&this.shaderProgram&&this.gl.uniform1f(this.psUniform,t)}setSkipTranslation(t){this.gl&&this.shaderProgram&&this.gl.uniform1i(this.skipTranslationUniform,!0===t?1:0)}setTexture(t){this.gl&&this.shaderProgram&&this.gl.uniform1i(this.uSamplerUniform,t)}setUniform(t,e){if(this.gl&&this.shaderProgram){let i=this.uLocations[t]=this.uLocations[t]||this.gl.getUniformLocation(this.shaderProgram,t);this.gl.uniform1f(i,e)}}}}),i(e,"Extensions/Boost/WGLVertexBuffer.js",[],function(){return class{constructor(t,e,i){this.buffer=!1,this.iterator=0,this.preAllocated=!1,this.vertAttribute=!1,this.components=i||2,this.dataComponents=i,this.gl=t,this.shader=e}allocate(t){this.iterator=-1,this.preAllocated=new Float32Array(4*t)}bind(){if(!this.buffer)return!1;this.gl.vertexAttribPointer(this.vertAttribute,this.components,this.gl.FLOAT,!1,0,0)}build(t,e,i){let s;return(this.data=t||[],this.data&&0!==this.data.length||this.preAllocated)?(this.components=i||this.components,this.buffer&&this.gl.deleteBuffer(this.buffer),this.preAllocated||(s=new Float32Array(this.data)),this.buffer=this.gl.createBuffer(),this.gl.bindBuffer(this.gl.ARRAY_BUFFER,this.buffer),this.gl.bufferData(this.gl.ARRAY_BUFFER,this.preAllocated||s,this.gl.STATIC_DRAW),this.vertAttribute=this.gl.getAttribLocation(this.shader.getProgram(),e),this.gl.enableVertexAttribArray(this.vertAttribute),s=!1,!0):(this.destroy(),!1)}destroy(){this.buffer&&(this.gl.deleteBuffer(this.buffer),this.buffer=!1,this.vertAttribute=!1),this.iterator=0,this.components=this.dataComponents||2,this.data=[]}push(t,e,i,s){this.preAllocated&&(this.preAllocated[++this.iterator]=t,this.preAllocated[++this.iterator]=e,this.preAllocated[++this.iterator]=i,this.preAllocated[++this.iterator]=s)}render(t,e,i){let s=this.preAllocated?this.preAllocated.length:this.data.length;return!!this.buffer&&!!s&&((!t||t>s||t<0)&&(t=0),(!e||e>s)&&(e=s),!(t>=e)&&(i=i||"POINTS",this.gl.drawArrays(this.gl[i],t/this.components,(e-t)/this.components),!0))}}}),i(e,"Extensions/Boost/WGLRenderer.js",[e["Core/Color/Color.js"],e["Core/Globals.js"],e["Core/Utilities.js"],e["Extensions/Boost/WGLDrawMode.js"],e["Extensions/Boost/WGLShader.js"],e["Extensions/Boost/WGLVertexBuffer.js"]],function(t,e,i,s,o,r){let{parse:n}=t,{doc:a,win:l}=e,{isNumber:h,isObject:d,merge:c,objectEach:u,pick:g}=i,f={column:!0,columnrange:!0,bar:!0,area:!0,areaspline:!0,arearange:!0},p={scatter:!0,bubble:!0},m=["webgl","experimental-webgl","moz-webgl","webkit-3d"];class b{static orthoMatrix(t,e){return[2/t,0,0,0,0,-(2/e),0,0,0,0,-2,0,-1,1,-1,1]}static seriesPointCount(t){let e,i,s;return t.boosted?(e=!!t.options.stacking,i=t.xData||t.options.xData||t.processedXData,s=(e?t.data:i||t.options.data).length,"treemap"===t.type?s*=12:"heatmap"===t.type?s*=6:f[t.type]&&(s*=2),s):0}constructor(t){this.data=[],this.height=0,this.isInited=!1,this.markerData=[],this.series=[],this.textureHandles={},this.width=0,this.postRenderCallback=t,this.settings={pointSize:1,lineWidth:1,fillColor:"#AA00AA",useAlpha:!0,usePreallocated:!1,useGPUTranslations:!1,debug:{timeRendering:!1,timeSeriesProcessing:!1,timeSetup:!1,timeBufferCopy:!1,timeKDTree:!1,showSkipSummary:!1}}}getPixelRatio(){return this.settings.pixelRatio||l.devicePixelRatio||1}setOptions(t){"pixelRatio"in t||(t.pixelRatio=1),c(!0,this.settings,t)}allocateBuffer(t){let e=this.vbuffer,i=0;this.settings.usePreallocated&&(t.series.forEach(t=>{t.boosted&&(i+=b.seriesPointCount(t))}),e&&e.allocate(i))}allocateBufferForSingleSeries(t){let e=this.vbuffer,i=0;this.settings.usePreallocated&&(t.boosted&&(i=b.seriesPointCount(t)),e&&e.allocate(i))}clear(){let t=this.gl;t&&t.clear(t.COLOR_BUFFER_BIT|t.DEPTH_BUFFER_BIT)}pushSeriesData(t,e){let i=this.data,s=this.settings,o=this.vbuffer,r=t.pointArrayMap&&"low,high"===t.pointArrayMap.join(","),{chart:a,options:l,sorted:h,xAxis:c,yAxis:u}=t,g=!!l.stacking,p=l.data,m=t.xAxis.getExtremes(),b=m.min-(t.xAxis.minPointOffset||0),x=m.max+(t.xAxis.minPointOffset||0),A=t.yAxis.getExtremes(),v=A.min-(t.yAxis.minPointOffset||0),y=A.max+(t.yAxis.minPointOffset||0),P=t.xData||l.xData||t.processedXData,T=t.yData||l.yData||t.processedYData,E=t.zData||l.zData||t.processedZData,S=!P||0===P.length,C=l.connectNulls,M=t.points||!1,k=g?t.data:P||p,U={x:Number.MAX_VALUE,y:0},R={x:-Number.MAX_VALUE,y:0},D=void 0===a.index,w=f[t.type],B=l.zoneAxis||"y",L=l.zones||!1,G=l.threshold,N=this.getPixelRatio(),_=t.chart.plotWidth,z=!1,I=!1,O,X,V=0,j=!1,F,W,Y,H,K=-1,Z=!1,q=!1,Q,J=!1,$=!1,tt=!1,te=!1,ti=!0,ts=!0,to,tr=!1,tn=!1,ta=0;if(l.boostData&&l.boostData.length>0)return;l.gapSize&&(tn="value"!==l.gapUnit?l.gapSize*t.closestPointRange:l.gapSize),L&&(to=[],L.forEach((t,e)=>{if(t.color){let i=n(t.color).rgba;i[0]/=255,i[1]/=255,i[2]/=255,to[e]=i,tr||void 0!==t.value||(tr=i)}}),tr||(tr=n(t.pointAttribs&&t.pointAttribs().fill||t.color).rgba,tr[0]/=255,tr[1]/=255,tr[2]/=255)),a.inverted&&(_=t.chart.plotHeight),t.closestPointRangePx=Number.MAX_VALUE;let tl=t=>{t&&(e.colorData.push(t[0]),e.colorData.push(t[1]),e.colorData.push(t[2]),e.colorData.push(t[3]))},th=(t,r,n,a=1,l)=>{tl(l),1!==N&&(!s.useGPUTranslations||e.skipTranslation)&&(t*=N,r*=N,a*=N),s.usePreallocated&&o?(o.push(t,r,n?1:0,a),ta+=4):(i.push(t),i.push(r),i.push(n?N:0),i.push(a))},td=()=>{e.segments.length&&(e.segments[e.segments.length-1].to=i.length||ta)},tc=()=>{e.segments.length&&e.segments[e.segments.length-1].from===(i.length||ta)||(td(),e.segments.push({from:i.length||ta}))},tu=(t,e,i,s,o)=>{tl(o),th(t+i,e),tl(o),th(t,e),tl(o),th(t,e+s),tl(o),th(t,e+s),tl(o),th(t+i,e+s),tl(o),th(t+i,e)};if(tc(),M&&M.length>0){e.skipTranslation=!0,e.drawMode="TRIANGLES",M[0].node&&M[0].node.levelDynamic&&M.sort((t,e)=>{if(t.node){if(t.node.levelDynamic>e.node.levelDynamic)return 1;if(t.node.levelDynamic<e.node.levelDynamic)return -1}return 0}),M.forEach(e=>{let i,s;let o=e.plotY;if(void 0!==o&&!isNaN(o)&&null!==e.y&&e.shapeArgs){let{x:o=0,y:r=0,width:l=0,height:h=0}=e.shapeArgs;i=(s=a.styledMode?e.series.colorAttribs(e):s=e.series.pointAttribs(e))["stroke-width"]||0,tt=n(s.fill).rgba,tt[0]/=255,tt[1]/=255,tt[2]/=255,t.is("treemap")&&(i=i||1,X=n(s.stroke).rgba,X[0]/=255,X[1]/=255,X[2]/=255,tu(o,r,l,h,X),i/=2),t.is("heatmap")&&a.inverted&&(o=c.len-o,r=u.len-r,l=-l,h=-h),tu(o+i,r+i,l-2*i,h-2*i,tt)}}),td();return}for(;K<k.length-1;){if(void 0===(Y=k[++K]))continue;if(D)break;let i=p&&p[K];if(!S&&d(i,!0)&&i.color&&(tt=n(i.color).rgba,tt[0]/=255,tt[1]/=255,tt[2]/=255),S?(F=Y[0],W=Y[1],k[K+1]&&(q=k[K+1][0]),k[K-1]&&(Z=k[K-1][0]),Y.length>=3&&(H=Y[2],Y[2]>e.zMax&&(e.zMax=Y[2]),Y[2]<e.zMin&&(e.zMin=Y[2]))):(F=Y,W=T[K],k[K+1]&&(q=k[K+1]),k[K-1]&&(Z=k[K-1]),E&&E.length&&(H=E[K],E[K]>e.zMax&&(e.zMax=E[K]),E[K]<e.zMin&&(e.zMin=E[K]))),!C&&(null===F||null===W)){tc();continue}if(q&&q>=b&&q<=x&&(J=!0),Z&&Z>=b&&Z<=x&&($=!0),r?(S&&(W=Y.slice(1,3)),Q=W[0],W=W[1]):g&&(F=Y.x,Q=(W=Y.stackY)-Y.y),null!=v&&null!=y&&(ti=W>=v&&W<=y),F>x&&R.x<x&&(R.x=F,R.y=W),F<b&&U.x>b&&(U.x=F,U.y=W),null!==W||!C){if(null===W||!ti&&!J&&!$){tc();continue}if(h&&(q>=b||F>=b)&&(Z<=x||F<=x)&&(te=!0),te||J||$){if(tn&&F-Z>tn&&tc(),L){let t;L.some((e,i)=>{let s=L[i-1];return"x"===B?void 0!==e.value&&F<=e.value&&(to[i]&&(!s||F>=s.value)&&(t=to[i]),!0):void 0!==e.value&&W<=e.value&&(to[i]&&(!s||W>=s.value)&&(t=to[i]),!0)}),tt=t||tr||tt}if(s.useGPUTranslations||(e.skipTranslation=!0,F=c.toPixels(F,!0),W=u.toPixels(W,!0),!(F>_)||"POINTS"!==e.drawMode)){if(e.hasMarkers&&te&&!1!==z&&(t.closestPointRangePx=Math.min(t.closestPointRangePx,Math.abs(F-z))),!s.useGPUTranslations&&!s.usePreallocated&&z&&1>Math.abs(F-z)&&I&&1>Math.abs(W-I)){s.debug.showSkipSummary&&++V;continue}w&&(O=Q,(!1===Q||void 0===Q)&&(O=W<0?W:0),(r||g)&&!u.logarithmic||(O=Math.max(null===G?v:G,v)),s.useGPUTranslations||(O=u.toPixels(O,!0)),th(F,O,0,0,tt)),l.step&&!ts&&th(F,I,0,2,tt),th(F,W,0,"bubble"===t.type?H||1:2,tt),z=F,I=W,j=!0,ts=!1}}}}s.debug.showSkipSummary&&console.log("skipped points:",V);let tg=(t,i)=>{if(s.useGPUTranslations||(e.skipTranslation=!0,t.x=c.toPixels(t.x,!0),t.y=u.toPixels(t.y,!0)),i){this.data=[t.x,t.y,0,2].concat(this.data);return}th(t.x,t.y,0,2)};!j&&!1!==C&&"line_strip"===t.drawMode&&(U.x<Number.MAX_VALUE&&tg(U,!0),R.x>-Number.MAX_VALUE&&tg(R)),td()}pushSeries(t){let e=this.markerData,i=this.series,o=this.settings;i.length>0&&i[i.length-1].hasMarkers&&(i[i.length-1].markerTo=e.length),o.debug.timeSeriesProcessing&&console.time("building "+t.type+" series");let r={segments:[],markerFrom:e.length,colorData:[],series:t,zMin:Number.MAX_VALUE,zMax:-Number.MAX_VALUE,hasMarkers:!!t.options.marker&&!1!==t.options.marker.enabled,showMarkers:!0,drawMode:s[t.type]||"LINE_STRIP"};t.index>=i.length?i.push(r):i[t.index]=r,this.pushSeriesData(t,r),o.debug.timeSeriesProcessing&&console.timeEnd("building "+t.type+" series")}flush(){let t=this.vbuffer;this.data=[],this.markerData=[],this.series=[],t&&t.destroy()}setXAxis(t){let e=this.shader;if(!e)return;let i=this.getPixelRatio();e.setUniform("xAxisTrans",t.transA*i),e.setUniform("xAxisMin",t.min),e.setUniform("xAxisMinPad",t.minPixelPadding*i),e.setUniform("xAxisPointRange",t.pointRange),e.setUniform("xAxisLen",t.len*i),e.setUniform("xAxisPos",t.pos*i),e.setUniform("xAxisCVSCoord",!t.horiz),e.setUniform("xAxisIsLog",!!t.logarithmic),e.setUniform("xAxisReversed",!!t.reversed)}setYAxis(t){let e=this.shader;if(!e)return;let i=this.getPixelRatio();e.setUniform("yAxisTrans",t.transA*i),e.setUniform("yAxisMin",t.min),e.setUniform("yAxisMinPad",t.minPixelPadding*i),e.setUniform("yAxisPointRange",t.pointRange),e.setUniform("yAxisLen",t.len*i),e.setUniform("yAxisPos",t.pos*i),e.setUniform("yAxisCVSCoord",!t.horiz),e.setUniform("yAxisIsLog",!!t.logarithmic),e.setUniform("yAxisReversed",!!t.reversed)}setThreshold(t,e){let i=this.shader;i&&(i.setUniform("hasThreshold",t),i.setUniform("translatedThreshold",e))}renderChart(i){let s=this.gl,o=this.settings,a=this.shader,l=this.vbuffer,d=this.getPixelRatio();if(!i)return!1;this.width=i.chartWidth*d,this.height=i.chartHeight*d;let c=this.height,u=this.width;if(!s||!a||!u||!c)return!1;o.debug.timeRendering&&console.time("gl rendering"),s.canvas.width=u,s.canvas.height=c,a.bind(),s.viewport(0,0,u,c),a.setPMatrix(b.orthoMatrix(u,c)),o.lineWidth>1&&!e.isMS&&s.lineWidth(o.lineWidth),l&&(l.build(this.data,"aVertexPosition",4),l.bind()),a.setInverted(i.inverted),this.series.forEach((e,c)=>{let u=e.series.options,f=u.marker,m=void 0!==u.lineWidth?u.lineWidth:1,b=u.threshold,x=h(b),A=e.series.yAxis.getThreshold(b),v=g(u.marker?u.marker.enabled:null,!!e.series.xAxis.isRadial||null,e.series.closestPointRangePx>2*((u.marker?u.marker.radius:10)||10)),y=this.textureHandles[f&&f.symbol||e.series.symbol]||this.textureHandles.circle,P,T,E,S=[];if(0!==e.segments.length&&e.segments[0].from!==e.segments[0].to&&(y.isReady&&(s.bindTexture(s.TEXTURE_2D,y.handle),a.setTexture(y.handle)),i.styledMode?e.series.markerGroup===e.series.chart.boost?.markerGroup?(delete e.series.markerGroup,e.series.markerGroup=e.series.plotGroup("markerGroup","markers","visible",1,i.seriesGroup).addClass("highcharts-tracker"),E=e.series.markerGroup.getStyle("fill"),e.series.markerGroup.destroy(),e.series.markerGroup=e.series.chart.boost?.markerGroup):E=e.series.markerGroup?.getStyle("fill"):(E="POINTS"===e.drawMode&&e.series.pointAttribs&&e.series.pointAttribs().fill||e.series.color,u.colorByPoint&&(E=e.series.chart.options.colors[c])),e.series.fillOpacity&&u.fillOpacity&&(E=new t(E).setOpacity(g(u.fillOpacity,1)).get()),S=n(E).rgba,o.useAlpha||(S[3]=1),"add"===u.boostBlending?(s.blendFunc(s.SRC_ALPHA,s.ONE),s.blendEquation(s.FUNC_ADD)):"mult"===u.boostBlending||"multiply"===u.boostBlending?s.blendFunc(s.DST_COLOR,s.ZERO):"darken"===u.boostBlending?(s.blendFunc(s.ONE,s.ONE),s.blendEquation(s.FUNC_MIN)):s.blendFuncSeparate(s.SRC_ALPHA,s.ONE_MINUS_SRC_ALPHA,s.ONE,s.ONE_MINUS_SRC_ALPHA),a.reset(),e.colorData.length>0?(a.setUniform("hasColor",1),(T=new r(s,a)).build(Array(e.segments[0].from).concat(e.colorData),"aColor",4),T.bind()):(a.setUniform("hasColor",0),s.disableVertexAttribArray(s.getAttribLocation(a.getProgram(),"aColor"))),a.setColor(S),this.setXAxis(e.series.xAxis),this.setYAxis(e.series.yAxis),this.setThreshold(x,A),"POINTS"===e.drawMode&&a.setPointSize(2*g(u.marker&&u.marker.radius,.5)*d),a.setSkipTranslation(e.skipTranslation),"bubble"===e.series.type&&a.setBubbleUniforms(e.series,e.zMin,e.zMax,d),a.setDrawAsCircle(p[e.series.type]||!1),l)){if(m>0||"LINE_STRIP"!==e.drawMode)for(P=0;P<e.segments.length;P++)l.render(e.segments[P].from,e.segments[P].to,e.drawMode);if(e.hasMarkers&&v)for(a.setPointSize(2*g(u.marker&&u.marker.radius,5)*d),a.setDrawAsCircle(!0),P=0;P<e.segments.length;P++)l.render(e.segments[P].from,e.segments[P].to,"POINTS")}}),o.debug.timeRendering&&console.timeEnd("gl rendering"),this.postRenderCallback&&this.postRenderCallback(this),this.flush()}render(t){if(this.clear(),t.renderer.forExport)return this.renderChart(t);this.isInited?this.renderChart(t):setTimeout(()=>{this.render(t)},1)}setSize(t,e){let i=this.shader;i&&(this.width!==t||this.height!==e)&&(this.width=t,this.height=e,i.bind(),i.setPMatrix(b.orthoMatrix(t,e)))}init(t,e){let i=this.settings;if(this.isInited=!1,!t)return!1;i.debug.timeSetup&&console.time("gl setup");for(let e=0;e<m.length&&(this.gl=t.getContext(m[e],{}),!this.gl);++e);let s=this.gl;if(!s)return!1;e||this.flush(),s.enable(s.BLEND),s.blendFunc(s.SRC_ALPHA,s.ONE_MINUS_SRC_ALPHA),s.disable(s.DEPTH_TEST),s.depthFunc(s.LESS);let n=this.shader=new o(s);if(!n)return!1;this.vbuffer=new r(s,n);let l=(t,e)=>{let i={isReady:!1,texture:a.createElement("canvas"),handle:s.createTexture()},o=i.texture.getContext("2d");this.textureHandles[t]=i,i.texture.width=512,i.texture.height=512,o.mozImageSmoothingEnabled=!1,o.webkitImageSmoothingEnabled=!1,o.msImageSmoothingEnabled=!1,o.imageSmoothingEnabled=!1,o.strokeStyle="rgba(255, 255, 255, 0)",o.fillStyle="#FFF",e(o);try{s.activeTexture(s.TEXTURE0),s.bindTexture(s.TEXTURE_2D,i.handle),s.texImage2D(s.TEXTURE_2D,0,s.RGBA,s.RGBA,s.UNSIGNED_BYTE,i.texture),s.texParameteri(s.TEXTURE_2D,s.TEXTURE_WRAP_S,s.CLAMP_TO_EDGE),s.texParameteri(s.TEXTURE_2D,s.TEXTURE_WRAP_T,s.CLAMP_TO_EDGE),s.texParameteri(s.TEXTURE_2D,s.TEXTURE_MAG_FILTER,s.LINEAR),s.texParameteri(s.TEXTURE_2D,s.TEXTURE_MIN_FILTER,s.LINEAR),s.bindTexture(s.TEXTURE_2D,null),i.isReady=!0}catch(t){}};return l("circle",t=>{t.beginPath(),t.arc(256,256,256,0,2*Math.PI),t.stroke(),t.fill()}),l("square",t=>{t.fillRect(0,0,512,512)}),l("diamond",t=>{t.beginPath(),t.moveTo(256,0),t.lineTo(512,256),t.lineTo(256,512),t.lineTo(0,256),t.lineTo(256,0),t.fill()}),l("triangle",t=>{t.beginPath(),t.moveTo(0,512),t.lineTo(256,0),t.lineTo(512,512),t.lineTo(0,512),t.fill()}),l("triangle-down",t=>{t.beginPath(),t.moveTo(0,0),t.lineTo(256,512),t.lineTo(512,0),t.lineTo(0,0),t.fill()}),this.isInited=!0,i.debug.timeSetup&&console.timeEnd("gl setup"),!0}destroy(){let t=this.gl,e=this.shader,i=this.vbuffer;this.flush(),i&&i.destroy(),e&&e.destroy(),t&&(u(this.textureHandles,e=>{e.handle&&t.deleteTexture(e.handle)}),t.canvas.width=1,t.canvas.height=1)}}return b}),i(e,"Extensions/Boost/BoostSeries.js",[e["Extensions/Boost/BoostableMap.js"],e["Extensions/Boost/Boostables.js"],e["Extensions/Boost/BoostChart.js"],e["Core/Defaults.js"],e["Core/Globals.js"],e["Core/Utilities.js"],e["Extensions/Boost/WGLRenderer.js"]],function(t,e,i,s,o,r,n){let a,l;let{getBoostClipRect:h,isChartSeriesBoosting:d}=i,{getOptions:c}=s,{composed:u,doc:g,noop:f,win:p}=o,{addEvent:m,destroyObjectProperties:b,error:x,extend:A,fireEvent:v,isArray:y,isNumber:P,pick:T,pushUnique:E,wrap:S,defined:C}=r;function M(t,e){let i=e.boost;t&&i&&i.target&&i.canvas&&!d(e.chart)&&t.allocateBufferForSingleSeries(e)}function k(t){return T(t&&t.options&&t.options.boost&&t.options.boost.enabled,!0)}function U(t,e){let i=t.constructor,s=t.seriesGroup||e.group,o=t.chartWidth,r=t.chartHeight,a=t,c="undefined"!=typeof SVGForeignObjectElement,u=!1;d(t)?a=t:(a=e,u=!!(e.options.events?.click||e.options.point?.events?.click));let f=a.boost=a.boost||{};if(c=!1,l||(l=g.createElement("canvas")),!f.target&&(f.canvas=l,t.renderer.forExport||!c?(a.renderTarget=f.target=t.renderer.image("",0,0,o,r).addClass("highcharts-boost-canvas").add(s),f.clear=function(){f.target.attr({href:"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAQAAAC1HAwCAAAAC0lEQVR42mNkYAAAAAYAAjCB0C8AAAAASUVORK5CYII="})},f.copy=function(){f.resize(),f.target.attr({href:f.canvas.toDataURL("image/png")})}):(f.targetFo=t.renderer.createElement("foreignObject").add(s),a.renderTarget=f.target=g.createElement("canvas"),f.targetCtx=f.target.getContext("2d"),f.targetFo.element.appendChild(f.target),f.clear=function(){f.target.width=f.canvas.width,f.target.height=f.canvas.height},f.copy=function(){f.target.width=f.canvas.width,f.target.height=f.canvas.height,f.targetCtx.drawImage(f.canvas,0,0)}),f.resize=function(){o=t.chartWidth,r=t.chartHeight,(f.targetFo||f.target).attr({x:0,y:0,width:o,height:r}).css({pointerEvents:u?void 0:"none",mixedBlendMode:"normal",opacity:1}).addClass(u?"highcharts-tracker":""),a instanceof i&&a.boost?.markerGroup?.translate(t.plotLeft,t.plotTop)},f.clipRect=t.renderer.clipRect(),(f.targetFo||f.target).attr({zIndex:e.options.zIndex}),a instanceof i&&(a.boost.markerGroup=a.renderer.g().add(s).translate(e.xAxis.pos,e.yAxis.pos))),f.canvas.width=o,f.canvas.height=r,f.clipRect){let e=h(t,a),i=e.width===t.clipBox.width&&e.height===t.clipBox.height?s:f.targetFo||f.target;f.clipRect.attr(e),i?.clip(f.clipRect)}return f.resize(),f.clear(),!f.wgl&&(f.wgl=new n(t=>{t.settings.debug.timeBufferCopy&&console.time("buffer copy"),f.copy(),t.settings.debug.timeBufferCopy&&console.timeEnd("buffer copy")}),f.wgl.init(f.canvas)||x("[highcharts boost] - unable to init WebGL renderer"),f.wgl.setOptions(t.options.boost||{}),a instanceof i&&f.wgl.allocateBuffer(t)),f.wgl.setSize(o,r),f.wgl}function R(t){let e=t.points;if(e){let t,i;for(i=0;i<e.length;i+=1)(t=e[i])&&t.destroyElements&&t.destroyElements()}for(let e of(["graph","area","tracker"].forEach(e=>{let i=t[e];i&&(t[e]=i.destroy())}),t.zones))b(e,void 0,!0)}function D(t,e,i,s,o,r){let n=(o=o||0)+(s=s||3e3),a=!0;for(;a&&o<n&&o<t.length;)a=e(t[o],o),++o;a&&(o<t.length?r?D(t,e,i,s,o,r):p.requestAnimationFrame?p.requestAnimationFrame(function(){D(t,e,i,s,o)}):setTimeout(D,0,t,e,i,s,o):i&&i())}function w(t,e){let i=t.options,s=i.data,o=t.xAxis&&t.xAxis.options,r=t.yAxis&&t.yAxis.options,n=t.colorAxis&&t.colorAxis.options;return s.length>(i.boostThreshold||Number.MAX_VALUE)&&P(r.min)&&P(r.max)&&(!e||P(o.min)&&P(o.max))&&(!n||P(n.min)&&P(n.max))}let B=(t,e)=>!t.forceCrop&&(d(t.chart)||(e?e.length:0)>=(t.options.boostThreshold||Number.MAX_VALUE));function L(){let t=this,e=t.chart;e.boost&&e.boost.markerGroup===t.markerGroup&&(t.markerGroup=null),e.hoverPoints&&(e.hoverPoints=e.hoverPoints.filter(function(e){return e.series===t})),e.hoverPoint&&e.hoverPoint.series===t&&(e.hoverPoint=null)}function G(){let t=this.boost;t&&t.canvas&&t.target&&(t.wgl&&t.wgl.clear(),t.clear&&t.clear())}function N(t){let e=t.boost;e&&e.canvas&&e.target&&e.wgl&&!d(t.chart)&&e.wgl.render(t.chart)}function _(t,e){let i=t.options,s=t.xAxis,o=t.pointClass;if(e instanceof o)return e;let r=t.xData||i.xData||t.processedXData||!1,n=new o(t,(t.options.data||[])[e.i],r?r[e.i]:void 0);return n.category=T(s.categories?s.categories[n.x]:n.x,n.x),n.dist=e.dist,n.distX=e.distX,n.plotX=e.plotX,n.plotY=e.plotY,n.index=e.i,n.percentage=e.percentage,n.isInside=t.isPointInside(n),n}function z(t){var e,i,s,o;let{options:r,xAxis:n,yAxis:a}=this;if(!this.isDirty&&!n.isDirty&&!a.isDirty&&!t)return!1;this.yAxis.setTickInterval();let l=r.boostThreshold||0,h=r.cropThreshold,d=r.data||this.data,c=this.xData,u=n.getExtremes(),g=u.max??Number.MAX_VALUE,f=u.min??-Number.MAX_VALUE,p=this.yData,m=a.getExtremes(),b=m.max??Number.MAX_VALUE,x=m.min??-Number.MAX_VALUE;if(!this.boosted&&n.old&&a.old&&f>=(n.old.min??-Number.MAX_VALUE)&&g<=(n.old.max??Number.MAX_VALUE)&&x>=(a.old.min??-Number.MAX_VALUE)&&b<=(a.old.max??Number.MAX_VALUE))return this.processedXData??(this.processedXData=c),this.processedYData??(this.processedYData=p),!0;if(!l||d.length<l||h&&!this.forceCrop&&!this.getExtremesFromAll&&!r.getExtremesFromAll&&d.length<h)return this.processedXData=c,this.processedYData=p,!0;let A=[],v=[],y=[],T=!(P(u.max)||P(u.min)),E=!(P(m.max)||P(m.min)),S=!1,C,M=c[0],k=c[0],U,R=p[0],D=p[0];for(let t=0,e=c.length;t<e;++t)C=c[t],U=p[t],C>=f&&C<=g&&U>=x&&U<=b?(A.push({x:C,y:U}),v.push(C),y.push(U),T&&(M=Math.max(M,C),k=Math.min(k,C)),E&&(R=Math.max(R,U),D=Math.min(D,U))):S=!0;return T&&((e=n.options).max??(e.max=M),(i=n.options).min??(i.min=k)),E&&((s=a.options).max??(s.max=R),(o=a.options).min??(o.min=D)),this.cropped=S,this.cropStart=0,this.processedXData=v,this.processedYData=y,B(this,v)||(this.processedData=A),!0}function I(){let t=this.options||{},e=this.chart,i=e.boost,s=this.boost,o=this.xAxis,r=this.yAxis,n=t.xData||this.processedXData,l=t.yData||this.processedYData,h=this.processedData||t.data,c=o.getExtremes(),u=c.min-(o.minPointOffset||0),g=c.max+(o.minPointOffset||0),p=r.getExtremes(),m=p.min-(r.minPointOffset||0),b=p.max+(r.minPointOffset||0),x={},A=!!this.sampling,y=t.enableMouseTracking,P=t.threshold,E=this.pointArrayMap&&"low,high"===this.pointArrayMap.join(","),S=!!t.stacking,k=this.cropStart||0,w=this.requireSorting,B=!n,L="x"===t.findNearestPointBy,G=this.xData||this.options.xData||this.processedXData||!1,_=T(t.lineWidth,1),z=!1,I,O=r.getThreshold(P),X,V,j,F;if(o.isPanning||r.isPanning||(z=U(e,this),e.boosted=!0,!this.visible))return;(this.points||this.graph)&&R(this),d(e)?(this.markerGroup&&this.markerGroup!==i?.markerGroup&&this.markerGroup.destroy(),this.markerGroup=i?.markerGroup,s&&s.target&&(this.renderTarget=s.target=s.target.destroy())):(this.markerGroup===i?.markerGroup&&(this.markerGroup=void 0),this.markerGroup=this.plotGroup("markerGroup","markers","visible",1,e.seriesGroup).addClass("highcharts-tracker"));let W=this.points=[],Y=(t,i,s,n)=>{let l=!!G&&G[k+s],h=t=>{e.inverted&&(t=o.len-t,i=r.len-i),W.push({destroy:f,x:l,clientX:t,plotX:t,plotY:i,i:k+s,percentage:n})};t=Math.ceil(t),a=L?t:t+","+i,y&&(x[a]?l===G[G.length-1]&&(W.length--,h(t)):(x[a]=!0,h(t)))};this.buildKDTree=f,v(this,"renderCanvas"),this.is("line")&&_>1&&s?.target&&i&&!i.lineWidthFilter&&(i.lineWidthFilter=e.renderer.definition({tagName:"filter",children:[{tagName:"feMorphology",attributes:{operator:"dilate",radius:.25*_}}],attributes:{id:"linewidth"}}),s.target.attr({filter:"url(#linewidth)"})),z&&(M(z,this),z.pushSeries(this),N(this));let H=z.settings;e.renderer.forExport||(H.debug.timeKDTree&&console.time("kd tree building"),D(S?this.data.slice(k):n||h,function(t,i){let s=void 0===e.index,n,a,h,d,c,f=!1,p=!0;return!C(t)||(!s&&(B?(n=t[0],a=t[1]):(n=t,a=l[i]),E?(B&&(a=t.slice(1,3)),f=a[0],a=a[1]):S&&(n=t.x,f=(a=t.stackY)-t.y,c=t.percentage),w||(p=(a||0)>=m&&a<=b),null!==a&&n>=u&&n<=g&&p&&(h=o.toPixels(n,!0),A?((void 0===j||h===I)&&(E||(f=a),(void 0===F||a>V)&&(V=a,F=i),(void 0===j||f<X)&&(X=f,j=i)),L&&h===I||(void 0!==j&&(d=r.toPixels(V,!0),O=r.toPixels(X,!0),Y(h,d,F,c),O!==d&&Y(h,O,j,c)),j=F=void 0,I=h)):Y(h,d=Math.ceil(r.toPixels(a,!0)),i,c))),!s)},()=>{v(this,"renderedCanvas"),delete this.buildKDTree,this.options&&this.buildKDTree(),H.debug.timeKDTree&&console.timeEnd("kd tree building")}))}function O(t){let e=!0;if(this.chart.options&&this.chart.options.boost&&(e=void 0===this.chart.options.boost.enabled||this.chart.options.boost.enabled),!e||!this.boosted)return t.call(this);this.chart.boosted=!0;let i=U(this.chart,this);i&&(M(i,this),i.pushSeries(this)),N(this)}function X(t){if(this.boosted){if(w(this))return{};if(this.xAxis.isPanning||this.yAxis.isPanning)return this}return t.apply(this,[].slice.call(arguments,1))}function V(e){let i=this.options.data;if(k(this.chart)&&t[this.type]){let t=this.is("scatter")&&!this.is("bubble")&&!this.is("heatmap");if(!B(this,i)||t||this.options.stacking||!w(this,!0)){if(this.boosted&&(this.xAxis?.isPanning||this.yAxis?.isPanning))return;t&&!this.yAxis.treeGrid?z.call(this,arguments[1]):e.apply(this,[].slice.call(arguments,1)),i=this.processedXData}if(this.boosted=B(this,i),this.boosted){let t;this.options.data&&this.options.data.length&&!P(t=this.getFirstValidPoint(this.options.data))&&!y(t)&&x(12,!1,this.chart),function(t){t.boost=t.boost||{getPoint:e=>_(t,e)};let e=t.boost.altered=[];if(["allowDG","directTouch","stickyTracking"].forEach(i=>{e.push({prop:i,val:t[i],own:Object.hasOwnProperty.call(t,i)})}),t.allowDG=!1,t.directTouch=!1,t.stickyTracking=!0,t.finishedAnimating=!0,t.labelBySeries&&(t.labelBySeries=t.labelBySeries.destroy()),t.is("scatter")&&t.data.length){for(let e of t.data)e?.destroy?.();t.data.length=0,t.points.length=0,delete t.processedData}}(this)}else!function(t){let e=t.boost,i=t.chart,s=i.boost;if(s?.markerGroup)for(let t of(s.markerGroup.destroy(),s.markerGroup=void 0,i.series))t.markerGroup=void 0,t.markerGroup=t.plotGroup("markerGroup","markers","visible",1,i.seriesGroup).addClass("highcharts-tracker");e&&((e.altered||[]).forEach(e=>{e.own?t[e.prop]=e.val:delete t[e.prop]}),e.clear&&e.clear())}(this)}else e.apply(this,[].slice.call(arguments,1))}function j(t){let e=t.apply(this,[].slice.call(arguments,1));return this.boost&&e?this.boost.getPoint(e):e}return{compose:function(i,s,o){if(E(u,"Boost.Series")){let r=c().plotOptions,n=i.prototype;if(m(i,"destroy",L),m(i,"hide",G),o&&(n.renderCanvas=I),S(n,"getExtremes",X),S(n,"processData",V),S(n,"searchPoint",j),["translate","generatePoints","drawTracker","drawPoints","render"].forEach(e=>(function(e,i,s){function o(e){let i=this.options.stacking&&("translate"===s||"generatePoints"===s);this.boosted&&!i&&k(this.chart)&&"heatmap"!==this.type&&"treemap"!==this.type&&t[this.type]&&0!==this.options.boostThreshold?"render"===s&&this.renderCanvas&&this.renderCanvas():e.call(this)}if(S(e,s,o),"translate"===s)for(let t of["column","arearange","columnrange","heatmap","treemap"])i[t]&&S(i[t].prototype,s,o)})(n,s,e)),e.forEach(t=>{let e=r[t];e&&(e.boostThreshold=5e3,e.boostData=[],s[t].prototype.fillOpacity=!0)}),o){let{area:t,areaspline:e,bubble:i,column:o,heatmap:r,scatter:n,treemap:a}=s;if(t&&A(t.prototype,{fill:!0,fillOpacity:!0,sampling:!0}),e&&A(e.prototype,{fill:!0,fillOpacity:!0,sampling:!0}),i){let t=i.prototype;delete t.buildKDTree,S(t,"markerAttribs",function(t){return!this.boosted&&t.apply(this,[].slice.call(arguments,1))})}o&&A(o.prototype,{fill:!0,sampling:!0}),n&&(n.prototype.fill=!0),[r,a].forEach(t=>{t&&S(t.prototype,"drawPoints",O)})}}return i},destroyGraphics:R,eachAsync:D,getPoint:_}}),i(e,"Extensions/BoostCanvas.js",[e["Extensions/Boost/BoostChart.js"],e["Extensions/Boost/BoostSeries.js"],e["Core/Color/Color.js"],e["Core/Globals.js"],e["Core/Utilities.js"]],function(t,e,i,s,o){var r;let{getBoostClipRect:n,isChartSeriesBoosting:a}=t,{destroyGraphics:l}=e,{parse:h}=i,{doc:d,noop:c}=s,{addEvent:u,fireEvent:g,isNumber:f,merge:p,pick:m,wrap:b}=o;return function(t){let s;let r="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAQAAAC1HAwCAAAAC0lEQVR42mNkYAAAAAYAAjCB0C8AAAAASUVORK5CYII=";function x(t,e,i,s,o){o&&e!==o.clientX&&(t.moveTo(o.clientX,o.yBottom),t.lineTo(o.clientX,o.plotY),t.lineTo(e,i),t.lineTo(e,s))}function A(t,e,i,s,o){t.moveTo(e,i),t.arc(e,i,this.radii&&this.radii[o],0,2*Math.PI,!1)}function v(t,e,i,s){t.rect(e-1,i,1,s-i)}function y(){this.boost&&this.boost.copy&&this.boost.copy()}function P(){let t=this.boost||{};t.target&&t.target.attr({href:r}),t.canvas&&t.canvas.getContext("2d").clearRect(0,0,t.canvas.width,t.canvas.height)}function T(){a(this.chart)?this.boost&&this.boost.clear&&this.boost.clear():this.boost&&this.boost.copy?this.boost.copy():this.chart.boost&&this.chart.boost.copy&&this.chart.boost.copy()}function E(t,e,i){t.lineTo(e,i)}function S(){let t;let e=this.chart,i=a(e)?e:this,s=i===e?e.seriesGroup:e.seriesGroup||this.group,o=e.chartWidth,l=e.chartHeight,h=function(t,e,i,s,o,r,n){t.call(this,i,e,s,o,r,n)},c=i.boost=i.boost||{};return t=c.targetCtx,c.canvas||(c.canvas=d.createElement("canvas"),c.target=e.renderer.image("",0,0,o,l).addClass("highcharts-boost-canvas").add(s),t=c.targetCtx=c.canvas.getContext("2d"),e.inverted&&["moveTo","lineTo","rect","arc"].forEach(e=>{b(t,e,h)}),c.copy=function(){c.target.attr({href:c.canvas.toDataURL("image/png")})},c.clear=function(){t.clearRect(0,0,c.canvas.width,c.canvas.height),i===c.target&&c.target.attr({href:r})},c.clipRect=e.renderer.clipRect(),c.target.clip(c.clipRect)),c.canvas.width!==o&&(c.canvas.width=o),c.canvas.height!==l&&(c.canvas.height=l),c.target.attr({x:0,y:0,width:o,height:l,style:"pointer-events: none",href:r}),c.clipRect&&c.clipRect.attr(n(e,i)),t}function C(){let t=this,n=t.options,a=t.chart,d=t.xAxis,b=t.yAxis,x=a.options.boost||{},A={timeRendering:x.timeRendering||!1,timeSeriesProcessing:x.timeSeriesProcessing||!1,timeSetup:x.timeSetup||!1},v=t.processedXData,y=t.processedYData,P=n.data,T=d.getExtremes(),E=T.min,S=T.max,C=b.getExtremes(),M=C.min,k=C.max,U={},R=!!t.sampling,D=n.marker&&n.marker.radius,w=t.cvsStrokeBatch||1e3,B=n.enableMouseTracking,L=n.threshold,G=f(L),N=b.getThreshold(L),_=t.fill,z=t.pointArrayMap&&"low,high"===t.pointArrayMap.join(","),I=!!n.stacking,O=t.cropStart||0,X=a.options.loading,V=t.requireSorting,j=n.connectNulls,F=!v,W=I?t.data:v||P,Y=t.fillOpacity?i.parse(t.color).setOpacity(m(n.fillOpacity,.75)).get():t.color,H="x"===n.findNearestPointBy,K=this.boost||{},Z=t.cvsDrawPoint,q=n.lineWidth?t.cvsLineTo:void 0,Q=D&&D<=1?t.cvsMarkerSquare:t.cvsMarkerCircle;K.target&&K.target.attr({href:r}),(t.points||t.graph)&&l(t),t.plotGroup("group","series",t.visible?"visible":"hidden",n.zIndex,a.seriesGroup),t.markerGroup=t.group,u(t,"destroy",function(){t.markerGroup=null});let J=this.points=[],$=this.getContext();if(t.buildKDTree=c,K.clear&&K.clear(),!t.visible)return;P.length>99999&&(a.options.loading=p(X,{labelStyle:{backgroundColor:h("#ffffff").setOpacity(.75).get(),padding:"1em",borderRadius:"0.5em"},style:{backgroundColor:"none",opacity:1}}),o.clearTimeout(s),a.showLoading("Drawing..."),a.options.loading=X),A.timeRendering&&console.time("canvas rendering");let tt=0,te,ti,ts=N,to,tr,tn,ta,tl,th,td=function(){_?($.fillStyle=Y,$.fill()):($.strokeStyle=t.color,$.lineWidth=n.lineWidth,$.stroke())},tc=function(e,i,s,o){0===tt&&($.beginPath(),q&&($.lineJoin="round")),a.scroller&&"highcharts-navigator-series"===t.options.className?(i+=a.scroller.top,s&&(s+=a.scroller.top)):i+=a.plotTop,e+=a.plotLeft,to?$.moveTo(e,i):Z?Z($,e,i,s,ti):q?q($,e,i):Q&&Q.call(t,$,e,i,D,o),(tt+=1)===w&&(td(),tt=0),ti={clientX:e,plotY:i,yBottom:s}},tu=this.xData||this.options.xData||this.processedXData||!1,tg=function(t,e,i){th=H?t:t+","+e,B&&!U[th]&&(U[th]=!0,a.inverted&&(t=d.len-t,e=b.len-e),J.push({x:!!tu&&tu[O+i],clientX:t,plotX:t,plotY:e,i:O+i}))};e.eachAsync(W,(e,i)=>{let s=void 0===a.index,o,r,n,l,h,c,u=!1,g=!1,f=NaN,p=NaN,m=!0;return!s&&(F?(o=e[0],r=e[1],W[i+1]&&(f=W[i+1][0]),W[i-1]&&(p=W[i-1][0])):(o=e,r=y[i],W[i+1]&&(f=W[i+1]),W[i-1]&&(p=W[i-1])),f&&f>=E&&f<=S&&(u=!0),p&&p>=E&&p<=S&&(g=!0),z?(F&&(r=e.slice(1,3)),c=r[0],r=r[1]):I&&(o=e.x,c=(r=e.stackY)-e.y),h=null===r,V||(m=r>=M&&r<=k),!h&&(o>=E&&o<=S&&m||u||g)&&(n=Math.round(d.toPixels(o,!0)),R?((void 0===ta||n===te)&&(z||(c=r),(void 0===tl||r>tn)&&(tn=r,tl=i),(void 0===ta||c<tr)&&(tr=c,ta=i)),n!==te&&(void 0!==ta&&(l=b.toPixels(tn,!0),ts=b.toPixels(tr,!0),tc(n,G?Math.min(l,N):l,G?Math.max(ts,N):ts,i),tg(n,l,tl),ts!==l&&tg(n,ts,ta)),ta=tl=void 0,te=n)):(tc(n,l=Math.round(b.toPixels(r,!0)),ts,i),tg(n,l,i))),to=h&&!j,i%5e4==0&&(t.boost&&t.boost.copy?t.boost.copy():t.chart.boost&&t.chart.boost.copy&&t.chart.boost.copy())),!s},function(){let e=a.loadingDiv,i=a.loadingShown;td(),t.canvasToSVG(),A.timeRendering&&console.timeEnd("canvas rendering"),g(t,"renderedCanvas"),i&&(e.style.transition="opacity 250ms",e.opacity=0,a.loadingShown=!1,s=setTimeout(function(){e.parentNode&&e.parentNode.removeChild(e),a.loadingDiv=a.loadingSpan=null},250)),delete t.buildKDTree,t.buildKDTree()},a.renderer.forExport?Number.MAX_VALUE:void 0)}function M(t,e,i,s){t.moveTo(e,i),t.arc(e,i,s,0,2*Math.PI,!1)}function k(t,e,i,s){t.rect(e-s,i-s,2*s,2*s)}function U(){let t=this.chart,e=this.getContext(),i=this.chart.inverted,s=this.xAxis,o=this.yAxis;e?(this.points.forEach(r=>{let n;let a=r.plotY;if(void 0!==a&&!isNaN(a)&&null!==r.y&&e){let{x:a=0,y:l=0,width:h=0,height:d=0}=r.shapeArgs||{};n=t.styledMode?r.series.colorAttribs(r):r.series.pointAttribs(r),e.fillStyle=n.fill,i?e.fillRect(o.len-l+s.left,s.len-a+o.top,-d,-h):e.fillRect(a+s.left,l+o.top,h,d)}}),this.canvasToSVG()):this.chart.showLoading("Your browser doesn't support HTML5 canvas, <br>please use a modern browser")}t.compose=function(t,e,i){let s=e.prototype;if(!s.renderCanvas){let{area:e,bubble:o,column:r,heatmap:n,scatter:a}=i;if(t.prototype.callbacks.push(t=>{u(t,"predraw",P),u(t,"render",y)}),s.canvasToSVG=T,s.cvsLineTo=E,s.getContext=S,s.renderCanvas=C,e){let t=e.prototype;t.cvsDrawPoint=x,t.fill=!0,t.fillOpacity=!0,t.sampling=!0}if(o){let t=o.prototype;t.cvsMarkerCircle=A,t.cvsStrokeBatch=1}if(r){let t=r.prototype;t.cvsDrawPoint=v,t.fill=!0,t.sampling=!0}if(n&&b(n.prototype,"drawPoints",U),a){let t=a.prototype;t.cvsMarkerCircle=M,t.cvsMarkerSquare=k,t.fill=!0}}}}(r||(r={})),r}),i(e,"masters/modules/boost-canvas.src.js",[e["Core/Globals.js"],e["Extensions/BoostCanvas.js"]],function(t,e){return t.initCanvasBoost=function(){e.compose(t.Chart,t.Series,t.seriesTypes)},t})});
10
+ */function(t){"object"==typeof module&&module.exports?(t.default=t,module.exports=t):"function"==typeof define&&define.amd?define("highcharts/modules/boost-canvas",["highcharts"],function(e){return t(e),t.Highcharts=e,t}):t("undefined"!=typeof Highcharts?Highcharts:void 0)}(function(t){"use strict";var e=t?t._modules:{};function i(e,i,s,o){e.hasOwnProperty(i)||(e[i]=o.apply(null,s),"function"==typeof CustomEvent&&t.win.dispatchEvent(new CustomEvent("HighchartsModuleLoaded",{detail:{path:i,module:e[i]}})))}i(e,"Extensions/Boost/Boostables.js",[],function(){return["area","areaspline","arearange","column","columnrange","bar","line","scatter","heatmap","bubble","treemap"]}),i(e,"Extensions/Boost/BoostableMap.js",[e["Extensions/Boost/Boostables.js"]],function(t){let e={};return t.forEach(t=>{e[t]=!0}),e}),i(e,"Extensions/Boost/BoostChart.js",[e["Extensions/Boost/BoostableMap.js"],e["Core/Globals.js"],e["Core/Utilities.js"]],function(t,e,i){let{composed:s}=e,{addEvent:o,pick:r,pushUnique:n}=i;function a(e){let i=e.series,s=e.boost=e.boost||{},o=e.options.boost||{},n=r(o.seriesThreshold,50);if(i.length>=n)return!0;if(1===i.length)return!1;let a=o.allowForce;if(void 0===a){for(let t of(a=!0,e.xAxis))if(r(t.min,-1/0)>r(t.dataMin,-1/0)||r(t.max,1/0)<r(t.dataMax,1/0)){a=!1;break}}if(void 0!==s.forceChartBoost){if(a)return s.forceChartBoost;s.forceChartBoost=void 0}let l=0,h=0,d;for(let e of i)0!==(d=e.options).boostThreshold&&!1!==e.visible&&"heatmap"!==e.type&&(t[e.type]&&++l,function(...t){let e=-Number.MAX_VALUE;return t.forEach(function(t){if(null!=t&&void 0!==t.length&&t.length>0)return e=t.length,!0}),e}(e.processedXData,d.data,e.points)>=(d.boostThreshold||Number.MAX_VALUE)&&++h);return s.forceChartBoost=a&&(l===i.length&&h===l||h>5),s.forceChartBoost}function l(t){function e(){t.boost&&t.boost.wgl&&a(t)&&t.boost.wgl.render(t)}o(t,"predraw",function(){t.boost=t.boost||{},t.boost.forceChartBoost=void 0,t.boosted=!1,t.axes.some(t=>t.isPanning)||t.boost.clear?.(),t.boost.canvas&&t.boost.wgl&&a(t)&&t.boost.wgl.allocateBuffer(t),t.boost.markerGroup&&t.xAxis&&t.xAxis.length>0&&t.yAxis&&t.yAxis.length>0&&t.boost.markerGroup.translate(t.xAxis[0].pos,t.yAxis[0].pos)}),o(t,"load",e,{order:-1}),o(t,"redraw",e);let i=-1,s=-1;o(t.pointer,"afterGetHoverData",e=>{let o=e.hoverPoint?.series;if(t.boost=t.boost||{},t.boost.markerGroup&&o){let e=t.inverted?o.yAxis:o.xAxis,r=t.inverted?o.xAxis:o.yAxis;(e&&e.pos!==i||r&&r.pos!==s)&&(t.series.forEach(t=>{t.halo?.hide()}),t.boost.markerGroup.translate(e.pos,r.pos),i=e.pos,s=r.pos)}})}return{compose:function(t,e){return e&&n(s,"Boost.Chart")&&t.prototype.callbacks.push(l),t},getBoostClipRect:function(t,e){let i=t.navigator,s={x:t.plotLeft,y:t.plotTop,width:t.plotWidth,height:t.plotHeight};if(i&&t.inverted?(s.width+=i.top+i.height,i.opposite||(s.x=i.left)):i&&!t.inverted&&(s.height=i.top+i.height-t.plotTop),e.getClipBox){let{xAxis:i,yAxis:o}=e;if(s=e.getClipBox(),t.inverted){let t=s.width;s.width=s.height,s.height=t,s.x=o.pos,s.y=i.pos}else s.x=i.pos,s.y=o.pos}if(e===t){let e=t.inverted?t.xAxis:t.yAxis;e.length<=1&&(s.y=Math.min(e[0].pos,s.y),s.height=e[0].pos-t.plotTop+e[0].len)}return s},isChartSeriesBoosting:a}}),i(e,"Extensions/Boost/WGLDrawMode.js",[],function(){return{area:"LINES",arearange:"LINES",areaspline:"LINES",column:"LINES",columnrange:"LINES",bar:"LINES",line:"LINE_STRIP",scatter:"POINTS",heatmap:"TRIANGLES",treemap:"TRIANGLES",bubble:"POINTS"}}),i(e,"Extensions/Boost/WGLShader.js",[e["Core/Utilities.js"]],function(t){let{clamp:e,error:i,pick:s}=t;return class{constructor(t){if(this.errors=[],this.uLocations={},this.gl=t,t&&!this.createShader())return}bind(){this.gl&&this.shaderProgram&&this.gl.useProgram(this.shaderProgram)}createShader(){let t=this.stringToProgram("#version 100\n#define LN10 2.302585092994046\nprecision highp float;\nattribute vec4 aVertexPosition;\nattribute vec4 aColor;\nvarying highp vec2 position;\nvarying highp vec4 vColor;\nuniform mat4 uPMatrix;\nuniform float pSize;\nuniform float translatedThreshold;\nuniform bool hasThreshold;\nuniform bool skipTranslation;\nuniform float xAxisTrans;\nuniform float xAxisMin;\nuniform float xAxisMinPad;\nuniform float xAxisPointRange;\nuniform float xAxisLen;\nuniform bool xAxisPostTranslate;\nuniform float xAxisOrdinalSlope;\nuniform float xAxisOrdinalOffset;\nuniform float xAxisPos;\nuniform bool xAxisCVSCoord;\nuniform bool xAxisIsLog;\nuniform bool xAxisReversed;\nuniform float yAxisTrans;\nuniform float yAxisMin;\nuniform float yAxisMinPad;\nuniform float yAxisPointRange;\nuniform float yAxisLen;\nuniform bool yAxisPostTranslate;\nuniform float yAxisOrdinalSlope;\nuniform float yAxisOrdinalOffset;\nuniform float yAxisPos;\nuniform bool yAxisCVSCoord;\nuniform bool yAxisIsLog;\nuniform bool yAxisReversed;\nuniform bool isBubble;\nuniform bool bubbleSizeByArea;\nuniform float bubbleZMin;\nuniform float bubbleZMax;\nuniform float bubbleZThreshold;\nuniform float bubbleMinSize;\nuniform float bubbleMaxSize;\nuniform bool bubbleSizeAbs;\nuniform bool isInverted;\nfloat bubbleRadius(){\nfloat value = aVertexPosition.w;\nfloat zMax = bubbleZMax;\nfloat zMin = bubbleZMin;\nfloat radius = 0.0;\nfloat pos = 0.0;\nfloat zRange = zMax - zMin;\nif (bubbleSizeAbs){\nvalue = value - bubbleZThreshold;\nzMax = max(zMax - bubbleZThreshold, zMin - bubbleZThreshold);\nzMin = 0.0;\n}\nif (value < zMin){\nradius = bubbleZMin / 2.0 - 1.0;\n} else {\npos = zRange > 0.0 ? (value - zMin) / zRange : 0.5;\nif (bubbleSizeByArea && pos > 0.0){\npos = sqrt(pos);\n}\nradius = ceil(bubbleMinSize + pos * (bubbleMaxSize - bubbleMinSize)) / 2.0;\n}\nreturn radius * 2.0;\n}\nfloat translate(float val,\nfloat pointPlacement,\nfloat localA,\nfloat localMin,\nfloat minPixelPadding,\nfloat pointRange,\nfloat len,\nbool cvsCoord,\nbool isLog,\nbool reversed\n){\nfloat sign = 1.0;\nfloat cvsOffset = 0.0;\nif (cvsCoord) {\nsign *= -1.0;\ncvsOffset = len;\n}\nif (isLog) {\nval = log(val) / LN10;\n}\nif (reversed) {\nsign *= -1.0;\ncvsOffset -= sign * len;\n}\nreturn sign * (val - localMin) * localA + cvsOffset + \n(sign * minPixelPadding);\n}\nfloat xToPixels(float value) {\nif (skipTranslation){\nreturn value;// + xAxisPos;\n}\nreturn translate(value, 0.0, xAxisTrans, xAxisMin, xAxisMinPad, xAxisPointRange, xAxisLen, xAxisCVSCoord, xAxisIsLog, xAxisReversed);// + xAxisPos;\n}\nfloat yToPixels(float value, float checkTreshold) {\nfloat v;\nif (skipTranslation){\nv = value;// + yAxisPos;\n} else {\nv = translate(value, 0.0, yAxisTrans, yAxisMin, yAxisMinPad, yAxisPointRange, yAxisLen, yAxisCVSCoord, yAxisIsLog, yAxisReversed);// + yAxisPos;\nif (v > yAxisLen) {\nv = yAxisLen;\n}\n}\nif (checkTreshold > 0.0 && hasThreshold) {\nv = min(v, translatedThreshold);\n}\nreturn v;\n}\nvoid main(void) {\nif (isBubble){\ngl_PointSize = bubbleRadius();\n} else {\ngl_PointSize = pSize;\n}\nvColor = aColor;\nif (skipTranslation && isInverted) {\ngl_Position = uPMatrix * vec4(aVertexPosition.y + yAxisPos, aVertexPosition.x + xAxisPos, 0.0, 1.0);\n} else if (isInverted) {\ngl_Position = uPMatrix * vec4(yToPixels(aVertexPosition.y, aVertexPosition.z) + yAxisPos, xToPixels(aVertexPosition.x) + xAxisPos, 0.0, 1.0);\n} else {\ngl_Position = uPMatrix * vec4(xToPixels(aVertexPosition.x) + xAxisPos, yToPixels(aVertexPosition.y, aVertexPosition.z) + yAxisPos, 0.0, 1.0);\n}\n}","vertex"),e=this.stringToProgram("precision highp float;\nuniform vec4 fillColor;\nvarying highp vec2 position;\nvarying highp vec4 vColor;\nuniform sampler2D uSampler;\nuniform bool isCircle;\nuniform bool hasColor;\nvoid main(void) {\nvec4 col = fillColor;\nvec4 tcol = texture2D(uSampler, gl_PointCoord.st);\nif (hasColor) {\ncol = vColor;\n}\nif (isCircle) {\ncol *= tcol;\nif (tcol.r < 0.0) {\ndiscard;\n} else {\ngl_FragColor = col;\n}\n} else {\ngl_FragColor = col;\n}\n}","fragment"),i=t=>this.gl.getUniformLocation(this.shaderProgram,t);return t&&e?(this.shaderProgram=this.gl.createProgram(),this.gl.attachShader(this.shaderProgram,t),this.gl.attachShader(this.shaderProgram,e),this.gl.linkProgram(this.shaderProgram),this.gl.getProgramParameter(this.shaderProgram,this.gl.LINK_STATUS))?(this.gl.useProgram(this.shaderProgram),this.gl.bindAttribLocation(this.shaderProgram,0,"aVertexPosition"),this.pUniform=i("uPMatrix"),this.psUniform=i("pSize"),this.fcUniform=i("fillColor"),this.isBubbleUniform=i("isBubble"),this.bubbleSizeAbsUniform=i("bubbleSizeAbs"),this.bubbleSizeAreaUniform=i("bubbleSizeByArea"),this.uSamplerUniform=i("uSampler"),this.skipTranslationUniform=i("skipTranslation"),this.isCircleUniform=i("isCircle"),this.isInverted=i("isInverted"),!0):(this.errors.push(this.gl.getProgramInfoLog(this.shaderProgram)),this.handleErrors(),this.shaderProgram=!1,!1):(this.shaderProgram=!1,this.handleErrors(),!1)}handleErrors(){this.errors.length&&i("[highcharts boost] shader error - "+this.errors.join("\n"))}stringToProgram(t,e){let i=this.gl.createShader("vertex"===e?this.gl.VERTEX_SHADER:this.gl.FRAGMENT_SHADER);return(this.gl.shaderSource(i,t),this.gl.compileShader(i),this.gl.getShaderParameter(i,this.gl.COMPILE_STATUS))?i:(this.errors.push("when compiling "+e+" shader:\n"+this.gl.getShaderInfoLog(i)),!1)}destroy(){this.gl&&this.shaderProgram&&(this.gl.deleteProgram(this.shaderProgram),this.shaderProgram=!1)}fillColorUniform(){return this.fcUniform}getProgram(){return this.shaderProgram}pointSizeUniform(){return this.psUniform}perspectiveUniform(){return this.pUniform}reset(){this.gl&&this.shaderProgram&&(this.gl.uniform1i(this.isBubbleUniform,0),this.gl.uniform1i(this.isCircleUniform,0))}setBubbleUniforms(t,i,o,r=1){let n=t.options,a=Number.MAX_VALUE,l=-Number.MAX_VALUE;if(this.gl&&this.shaderProgram&&t.is("bubble")){let h=t.getPxExtremes();a=s(n.zMin,e(i,!1===n.displayNegative?n.zThreshold:-Number.MAX_VALUE,a)),l=s(n.zMax,Math.max(l,o)),this.gl.uniform1i(this.isBubbleUniform,1),this.gl.uniform1i(this.isCircleUniform,1),this.gl.uniform1i(this.bubbleSizeAreaUniform,"width"!==t.options.sizeBy),this.gl.uniform1i(this.bubbleSizeAbsUniform,t.options.sizeByAbsoluteValue),this.setUniform("bubbleMinSize",h.minPxSize*r),this.setUniform("bubbleMaxSize",h.maxPxSize*r),this.setUniform("bubbleZMin",a),this.setUniform("bubbleZMax",l),this.setUniform("bubbleZThreshold",t.options.zThreshold)}}setColor(t){this.gl&&this.shaderProgram&&this.gl.uniform4f(this.fcUniform,t[0]/255,t[1]/255,t[2]/255,t[3])}setDrawAsCircle(t){this.gl&&this.shaderProgram&&this.gl.uniform1i(this.isCircleUniform,t?1:0)}setInverted(t){this.gl&&this.shaderProgram&&this.gl.uniform1i(this.isInverted,t)}setPMatrix(t){this.gl&&this.shaderProgram&&this.gl.uniformMatrix4fv(this.pUniform,!1,t)}setPointSize(t){this.gl&&this.shaderProgram&&this.gl.uniform1f(this.psUniform,t)}setSkipTranslation(t){this.gl&&this.shaderProgram&&this.gl.uniform1i(this.skipTranslationUniform,!0===t?1:0)}setTexture(t){this.gl&&this.shaderProgram&&this.gl.uniform1i(this.uSamplerUniform,t)}setUniform(t,e){if(this.gl&&this.shaderProgram){let i=this.uLocations[t]=this.uLocations[t]||this.gl.getUniformLocation(this.shaderProgram,t);this.gl.uniform1f(i,e)}}}}),i(e,"Extensions/Boost/WGLVertexBuffer.js",[],function(){return class{constructor(t,e,i){this.buffer=!1,this.iterator=0,this.preAllocated=!1,this.vertAttribute=!1,this.components=i||2,this.dataComponents=i,this.gl=t,this.shader=e}allocate(t){this.iterator=-1,this.preAllocated=new Float32Array(4*t)}bind(){if(!this.buffer)return!1;this.gl.vertexAttribPointer(this.vertAttribute,this.components,this.gl.FLOAT,!1,0,0)}build(t,e,i){let s;return(this.data=t||[],this.data&&0!==this.data.length||this.preAllocated)?(this.components=i||this.components,this.buffer&&this.gl.deleteBuffer(this.buffer),this.preAllocated||(s=new Float32Array(this.data)),this.buffer=this.gl.createBuffer(),this.gl.bindBuffer(this.gl.ARRAY_BUFFER,this.buffer),this.gl.bufferData(this.gl.ARRAY_BUFFER,this.preAllocated||s,this.gl.STATIC_DRAW),this.vertAttribute=this.gl.getAttribLocation(this.shader.getProgram(),e),this.gl.enableVertexAttribArray(this.vertAttribute),s=!1,!0):(this.destroy(),!1)}destroy(){this.buffer&&(this.gl.deleteBuffer(this.buffer),this.buffer=!1,this.vertAttribute=!1),this.iterator=0,this.components=this.dataComponents||2,this.data=[]}push(t,e,i,s){this.preAllocated&&(this.preAllocated[++this.iterator]=t,this.preAllocated[++this.iterator]=e,this.preAllocated[++this.iterator]=i,this.preAllocated[++this.iterator]=s)}render(t,e,i){let s=this.preAllocated?this.preAllocated.length:this.data.length;return!!this.buffer&&!!s&&((!t||t>s||t<0)&&(t=0),(!e||e>s)&&(e=s),!(t>=e)&&(i=i||"POINTS",this.gl.drawArrays(this.gl[i],t/this.components,(e-t)/this.components),!0))}}}),i(e,"Extensions/Boost/WGLRenderer.js",[e["Core/Color/Color.js"],e["Core/Globals.js"],e["Core/Utilities.js"],e["Extensions/Boost/WGLDrawMode.js"],e["Extensions/Boost/WGLShader.js"],e["Extensions/Boost/WGLVertexBuffer.js"]],function(t,e,i,s,o,r){let{parse:n}=t,{doc:a,win:l}=e,{isNumber:h,isObject:d,merge:c,objectEach:u,pick:g}=i,f={column:!0,columnrange:!0,bar:!0,area:!0,areaspline:!0,arearange:!0},p={scatter:!0,bubble:!0},m=["webgl","experimental-webgl","moz-webgl","webkit-3d"];class b{static orthoMatrix(t,e){return[2/t,0,0,0,0,-(2/e),0,0,0,0,-2,0,-1,1,-1,1]}static seriesPointCount(t){let e,i,s;return t.boosted?(e=!!t.options.stacking,i=t.xData||t.options.xData||t.processedXData,s=(e?t.data:i||t.options.data).length,"treemap"===t.type?s*=12:"heatmap"===t.type?s*=6:f[t.type]&&(s*=2),s):0}constructor(t){this.data=[],this.height=0,this.isInited=!1,this.markerData=[],this.series=[],this.textureHandles={},this.width=0,this.postRenderCallback=t,this.settings={pointSize:1,lineWidth:1,fillColor:"#AA00AA",useAlpha:!0,usePreallocated:!1,useGPUTranslations:!1,debug:{timeRendering:!1,timeSeriesProcessing:!1,timeSetup:!1,timeBufferCopy:!1,timeKDTree:!1,showSkipSummary:!1}}}getPixelRatio(){return this.settings.pixelRatio||l.devicePixelRatio||1}setOptions(t){"pixelRatio"in t||(t.pixelRatio=1),c(!0,this.settings,t)}allocateBuffer(t){let e=this.vbuffer,i=0;this.settings.usePreallocated&&(t.series.forEach(t=>{t.boosted&&(i+=b.seriesPointCount(t))}),e&&e.allocate(i))}allocateBufferForSingleSeries(t){let e=this.vbuffer,i=0;this.settings.usePreallocated&&(t.boosted&&(i=b.seriesPointCount(t)),e&&e.allocate(i))}clear(){let t=this.gl;t&&t.clear(t.COLOR_BUFFER_BIT|t.DEPTH_BUFFER_BIT)}pushSeriesData(t,e){let i=this.data,s=this.settings,o=this.vbuffer,r=t.pointArrayMap&&"low,high"===t.pointArrayMap.join(","),{chart:a,options:l,sorted:h,xAxis:c,yAxis:u}=t,g=!!l.stacking,p=l.data,m=t.xAxis.getExtremes(),b=m.min-(t.xAxis.minPointOffset||0),x=m.max+(t.xAxis.minPointOffset||0),A=t.yAxis.getExtremes(),v=A.min-(t.yAxis.minPointOffset||0),y=A.max+(t.yAxis.minPointOffset||0),P=t.xData||l.xData||t.processedXData,T=t.yData||l.yData||t.processedYData,E=t.zData||l.zData||t.processedZData,S=!P||0===P.length,C=l.connectNulls,M=t.points||!1,k=g?t.data:P||p,U={x:Number.MAX_VALUE,y:0},R={x:-Number.MAX_VALUE,y:0},D=void 0===a.index,w=f[t.type],B=l.zoneAxis||"y",L=l.zones||!1,G=l.threshold,N=this.getPixelRatio(),_=t.chart.plotWidth,z=!1,I=!1,O,X,V=0,j=!1,F,W,Y,H,K=-1,Z=!1,q=!1,Q,J=!1,$=!1,tt=!1,te=!1,ti=!0,ts=!0,to,tr=!1,tn=!1,ta=0;if(l.boostData&&l.boostData.length>0)return;l.gapSize&&(tn="value"!==l.gapUnit?l.gapSize*t.closestPointRange:l.gapSize),L&&(to=[],L.forEach((t,e)=>{if(t.color){let i=n(t.color).rgba;i[0]/=255,i[1]/=255,i[2]/=255,to[e]=i,tr||void 0!==t.value||(tr=i)}}),tr||(tr=n(t.pointAttribs&&t.pointAttribs().fill||t.color).rgba,tr[0]/=255,tr[1]/=255,tr[2]/=255)),a.inverted&&(_=t.chart.plotHeight),t.closestPointRangePx=Number.MAX_VALUE;let tl=t=>{t&&(e.colorData.push(t[0]),e.colorData.push(t[1]),e.colorData.push(t[2]),e.colorData.push(t[3]))},th=(t,r,n,a=1,l)=>{tl(l),1!==N&&(!s.useGPUTranslations||e.skipTranslation)&&(t*=N,r*=N,a*=N),s.usePreallocated&&o?(o.push(t,r,n?1:0,a),ta+=4):(i.push(t),i.push(r),i.push(n?N:0),i.push(a))},td=()=>{e.segments.length&&(e.segments[e.segments.length-1].to=i.length||ta)},tc=()=>{e.segments.length&&e.segments[e.segments.length-1].from===(i.length||ta)||(td(),e.segments.push({from:i.length||ta}))},tu=(t,e,i,s,o)=>{tl(o),th(t+i,e),tl(o),th(t,e),tl(o),th(t,e+s),tl(o),th(t,e+s),tl(o),th(t+i,e+s),tl(o),th(t+i,e)};if(tc(),M&&M.length>0){e.skipTranslation=!0,e.drawMode="TRIANGLES",M[0].node&&M[0].node.levelDynamic&&M.sort((t,e)=>{if(t.node){if(t.node.levelDynamic>e.node.levelDynamic)return 1;if(t.node.levelDynamic<e.node.levelDynamic)return -1}return 0}),M.forEach(e=>{let i,s;let o=e.plotY;if(void 0!==o&&!isNaN(o)&&null!==e.y&&e.shapeArgs){let{x:o=0,y:r=0,width:l=0,height:h=0}=e.shapeArgs;i=(s=a.styledMode?e.series.colorAttribs(e):s=e.series.pointAttribs(e))["stroke-width"]||0,tt=n(s.fill).rgba,tt[0]/=255,tt[1]/=255,tt[2]/=255,t.is("treemap")&&(i=i||1,X=n(s.stroke).rgba,X[0]/=255,X[1]/=255,X[2]/=255,tu(o,r,l,h,X),i/=2),t.is("heatmap")&&a.inverted&&(o=c.len-o,r=u.len-r,l=-l,h=-h),tu(o+i,r+i,l-2*i,h-2*i,tt)}}),td();return}for(;K<k.length-1;){if(void 0===(Y=k[++K]))continue;if(D)break;let i=p&&p[K];if(!S&&d(i,!0)&&i.color&&(tt=n(i.color).rgba,tt[0]/=255,tt[1]/=255,tt[2]/=255),S?(F=Y[0],W=Y[1],k[K+1]&&(q=k[K+1][0]),k[K-1]&&(Z=k[K-1][0]),Y.length>=3&&(H=Y[2],Y[2]>e.zMax&&(e.zMax=Y[2]),Y[2]<e.zMin&&(e.zMin=Y[2]))):(F=Y,W=T[K],k[K+1]&&(q=k[K+1]),k[K-1]&&(Z=k[K-1]),E&&E.length&&(H=E[K],E[K]>e.zMax&&(e.zMax=E[K]),E[K]<e.zMin&&(e.zMin=E[K]))),!C&&(null===F||null===W)){tc();continue}if(q&&q>=b&&q<=x&&(J=!0),Z&&Z>=b&&Z<=x&&($=!0),r?(S&&(W=Y.slice(1,3)),Q=W[0],W=W[1]):g&&(F=Y.x,Q=(W=Y.stackY)-Y.y),null!=v&&null!=y&&(ti=W>=v&&W<=y),F>x&&R.x<x&&(R.x=F,R.y=W),F<b&&U.x>b&&(U.x=F,U.y=W),null!==W||!C){if(null===W||!ti&&!J&&!$){tc();continue}if(h&&(q>=b||F>=b)&&(Z<=x||F<=x)&&(te=!0),te||J||$){if(tn&&F-Z>tn&&tc(),L){let t;L.some((e,i)=>{let s=L[i-1];return"x"===B?void 0!==e.value&&F<=e.value&&(to[i]&&(!s||F>=s.value)&&(t=to[i]),!0):void 0!==e.value&&W<=e.value&&(to[i]&&(!s||W>=s.value)&&(t=to[i]),!0)}),tt=t||tr||tt}if(s.useGPUTranslations||(e.skipTranslation=!0,F=c.toPixels(F,!0),W=u.toPixels(W,!0),!(F>_)||"POINTS"!==e.drawMode)){if(e.hasMarkers&&te&&!1!==z&&(t.closestPointRangePx=Math.min(t.closestPointRangePx,Math.abs(F-z))),!s.useGPUTranslations&&!s.usePreallocated&&z&&1>Math.abs(F-z)&&I&&1>Math.abs(W-I)){s.debug.showSkipSummary&&++V;continue}w&&(O=Q,(!1===Q||void 0===Q)&&(O=W<0?W:0),(r||g)&&!u.logarithmic||(O=Math.max(null===G?v:G,v)),s.useGPUTranslations||(O=u.toPixels(O,!0)),th(F,O,0,0,tt)),l.step&&!ts&&th(F,I,0,2,tt),th(F,W,0,"bubble"===t.type?H||1:2,tt),z=F,I=W,j=!0,ts=!1}}}}s.debug.showSkipSummary&&console.log("skipped points:",V);let tg=(t,i)=>{if(s.useGPUTranslations||(e.skipTranslation=!0,t.x=c.toPixels(t.x,!0),t.y=u.toPixels(t.y,!0)),i){this.data=[t.x,t.y,0,2].concat(this.data);return}th(t.x,t.y,0,2)};!j&&!1!==C&&"line_strip"===t.drawMode&&(U.x<Number.MAX_VALUE&&tg(U,!0),R.x>-Number.MAX_VALUE&&tg(R)),td()}pushSeries(t){let e=this.markerData,i=this.series,o=this.settings;i.length>0&&i[i.length-1].hasMarkers&&(i[i.length-1].markerTo=e.length),o.debug.timeSeriesProcessing&&console.time("building "+t.type+" series");let r={segments:[],markerFrom:e.length,colorData:[],series:t,zMin:Number.MAX_VALUE,zMax:-Number.MAX_VALUE,hasMarkers:!!t.options.marker&&!1!==t.options.marker.enabled,showMarkers:!0,drawMode:s[t.type]||"LINE_STRIP"};t.index>=i.length?i.push(r):i[t.index]=r,this.pushSeriesData(t,r),o.debug.timeSeriesProcessing&&console.timeEnd("building "+t.type+" series")}flush(){let t=this.vbuffer;this.data=[],this.markerData=[],this.series=[],t&&t.destroy()}setXAxis(t){let e=this.shader;if(!e)return;let i=this.getPixelRatio();e.setUniform("xAxisTrans",t.transA*i),e.setUniform("xAxisMin",t.min),e.setUniform("xAxisMinPad",t.minPixelPadding*i),e.setUniform("xAxisPointRange",t.pointRange),e.setUniform("xAxisLen",t.len*i),e.setUniform("xAxisPos",t.pos*i),e.setUniform("xAxisCVSCoord",!t.horiz),e.setUniform("xAxisIsLog",!!t.logarithmic),e.setUniform("xAxisReversed",!!t.reversed)}setYAxis(t){let e=this.shader;if(!e)return;let i=this.getPixelRatio();e.setUniform("yAxisTrans",t.transA*i),e.setUniform("yAxisMin",t.min),e.setUniform("yAxisMinPad",t.minPixelPadding*i),e.setUniform("yAxisPointRange",t.pointRange),e.setUniform("yAxisLen",t.len*i),e.setUniform("yAxisPos",t.pos*i),e.setUniform("yAxisCVSCoord",!t.horiz),e.setUniform("yAxisIsLog",!!t.logarithmic),e.setUniform("yAxisReversed",!!t.reversed)}setThreshold(t,e){let i=this.shader;i&&(i.setUniform("hasThreshold",t),i.setUniform("translatedThreshold",e))}renderChart(i){let s=this.gl,o=this.settings,a=this.shader,l=this.vbuffer,d=this.getPixelRatio();if(!i)return!1;this.width=i.chartWidth*d,this.height=i.chartHeight*d;let c=this.height,u=this.width;if(!s||!a||!u||!c)return!1;o.debug.timeRendering&&console.time("gl rendering"),s.canvas.width=u,s.canvas.height=c,a.bind(),s.viewport(0,0,u,c),a.setPMatrix(b.orthoMatrix(u,c)),o.lineWidth>1&&!e.isMS&&s.lineWidth(o.lineWidth),l&&(l.build(this.data,"aVertexPosition",4),l.bind()),a.setInverted(i.inverted),this.series.forEach((e,c)=>{let u=e.series.options,f=u.marker,m=void 0!==u.lineWidth?u.lineWidth:1,b=u.threshold,x=h(b),A=e.series.yAxis.getThreshold(b),v=g(u.marker?u.marker.enabled:null,!!e.series.xAxis.isRadial||null,e.series.closestPointRangePx>2*((u.marker?u.marker.radius:10)||10)),y=this.textureHandles[f&&f.symbol||e.series.symbol]||this.textureHandles.circle,P,T,E,S=[];if(0!==e.segments.length&&e.segments[0].from!==e.segments[0].to&&(y.isReady&&(s.bindTexture(s.TEXTURE_2D,y.handle),a.setTexture(y.handle)),i.styledMode?e.series.markerGroup===e.series.chart.boost?.markerGroup?(delete e.series.markerGroup,e.series.markerGroup=e.series.plotGroup("markerGroup","markers","visible",1,i.seriesGroup).addClass("highcharts-tracker"),E=e.series.markerGroup.getStyle("fill"),e.series.markerGroup.destroy(),e.series.markerGroup=e.series.chart.boost?.markerGroup):E=e.series.markerGroup?.getStyle("fill"):(E="POINTS"===e.drawMode&&e.series.pointAttribs&&e.series.pointAttribs().fill||e.series.color,u.colorByPoint&&(E=e.series.chart.options.colors[c])),e.series.fillOpacity&&u.fillOpacity&&(E=new t(E).setOpacity(g(u.fillOpacity,1)).get()),S=n(E).rgba,o.useAlpha||(S[3]=1),"add"===u.boostBlending?(s.blendFunc(s.SRC_ALPHA,s.ONE),s.blendEquation(s.FUNC_ADD)):"mult"===u.boostBlending||"multiply"===u.boostBlending?s.blendFunc(s.DST_COLOR,s.ZERO):"darken"===u.boostBlending?(s.blendFunc(s.ONE,s.ONE),s.blendEquation(s.FUNC_MIN)):s.blendFuncSeparate(s.SRC_ALPHA,s.ONE_MINUS_SRC_ALPHA,s.ONE,s.ONE_MINUS_SRC_ALPHA),a.reset(),e.colorData.length>0?(a.setUniform("hasColor",1),(T=new r(s,a)).build(Array(e.segments[0].from).concat(e.colorData),"aColor",4),T.bind()):(a.setUniform("hasColor",0),s.disableVertexAttribArray(s.getAttribLocation(a.getProgram(),"aColor"))),a.setColor(S),this.setXAxis(e.series.xAxis),this.setYAxis(e.series.yAxis),this.setThreshold(x,A),"POINTS"===e.drawMode&&a.setPointSize(2*g(u.marker&&u.marker.radius,.5)*d),a.setSkipTranslation(e.skipTranslation),"bubble"===e.series.type&&a.setBubbleUniforms(e.series,e.zMin,e.zMax,d),a.setDrawAsCircle(p[e.series.type]||!1),l)){if(m>0||"LINE_STRIP"!==e.drawMode)for(P=0;P<e.segments.length;P++)l.render(e.segments[P].from,e.segments[P].to,e.drawMode);if(e.hasMarkers&&v)for(a.setPointSize(2*g(u.marker&&u.marker.radius,5)*d),a.setDrawAsCircle(!0),P=0;P<e.segments.length;P++)l.render(e.segments[P].from,e.segments[P].to,"POINTS")}}),o.debug.timeRendering&&console.timeEnd("gl rendering"),this.postRenderCallback&&this.postRenderCallback(this),this.flush()}render(t){if(this.clear(),t.renderer.forExport)return this.renderChart(t);this.isInited?this.renderChart(t):setTimeout(()=>{this.render(t)},1)}setSize(t,e){let i=this.shader;i&&(this.width!==t||this.height!==e)&&(this.width=t,this.height=e,i.bind(),i.setPMatrix(b.orthoMatrix(t,e)))}init(t,e){let i=this.settings;if(this.isInited=!1,!t)return!1;i.debug.timeSetup&&console.time("gl setup");for(let e=0;e<m.length&&(this.gl=t.getContext(m[e],{}),!this.gl);++e);let s=this.gl;if(!s)return!1;e||this.flush(),s.enable(s.BLEND),s.blendFunc(s.SRC_ALPHA,s.ONE_MINUS_SRC_ALPHA),s.disable(s.DEPTH_TEST),s.depthFunc(s.LESS);let n=this.shader=new o(s);if(!n)return!1;this.vbuffer=new r(s,n);let l=(t,e)=>{let i={isReady:!1,texture:a.createElement("canvas"),handle:s.createTexture()},o=i.texture.getContext("2d");this.textureHandles[t]=i,i.texture.width=512,i.texture.height=512,o.mozImageSmoothingEnabled=!1,o.webkitImageSmoothingEnabled=!1,o.msImageSmoothingEnabled=!1,o.imageSmoothingEnabled=!1,o.strokeStyle="rgba(255, 255, 255, 0)",o.fillStyle="#FFF",e(o);try{s.activeTexture(s.TEXTURE0),s.bindTexture(s.TEXTURE_2D,i.handle),s.texImage2D(s.TEXTURE_2D,0,s.RGBA,s.RGBA,s.UNSIGNED_BYTE,i.texture),s.texParameteri(s.TEXTURE_2D,s.TEXTURE_WRAP_S,s.CLAMP_TO_EDGE),s.texParameteri(s.TEXTURE_2D,s.TEXTURE_WRAP_T,s.CLAMP_TO_EDGE),s.texParameteri(s.TEXTURE_2D,s.TEXTURE_MAG_FILTER,s.LINEAR),s.texParameteri(s.TEXTURE_2D,s.TEXTURE_MIN_FILTER,s.LINEAR),s.bindTexture(s.TEXTURE_2D,null),i.isReady=!0}catch(t){}};return l("circle",t=>{t.beginPath(),t.arc(256,256,256,0,2*Math.PI),t.stroke(),t.fill()}),l("square",t=>{t.fillRect(0,0,512,512)}),l("diamond",t=>{t.beginPath(),t.moveTo(256,0),t.lineTo(512,256),t.lineTo(256,512),t.lineTo(0,256),t.lineTo(256,0),t.fill()}),l("triangle",t=>{t.beginPath(),t.moveTo(0,512),t.lineTo(256,0),t.lineTo(512,512),t.lineTo(0,512),t.fill()}),l("triangle-down",t=>{t.beginPath(),t.moveTo(0,0),t.lineTo(256,512),t.lineTo(512,0),t.lineTo(0,0),t.fill()}),this.isInited=!0,i.debug.timeSetup&&console.timeEnd("gl setup"),!0}destroy(){let t=this.gl,e=this.shader,i=this.vbuffer;this.flush(),i&&i.destroy(),e&&e.destroy(),t&&(u(this.textureHandles,e=>{e.handle&&t.deleteTexture(e.handle)}),t.canvas.width=1,t.canvas.height=1)}}return b}),i(e,"Extensions/Boost/BoostSeries.js",[e["Extensions/Boost/BoostableMap.js"],e["Extensions/Boost/Boostables.js"],e["Extensions/Boost/BoostChart.js"],e["Core/Defaults.js"],e["Core/Globals.js"],e["Core/Utilities.js"],e["Extensions/Boost/WGLRenderer.js"]],function(t,e,i,s,o,r,n){let a,l;let{getBoostClipRect:h,isChartSeriesBoosting:d}=i,{getOptions:c}=s,{composed:u,doc:g,noop:f,win:p}=o,{addEvent:m,destroyObjectProperties:b,error:x,extend:A,fireEvent:v,isArray:y,isNumber:P,pick:T,pushUnique:E,wrap:S,defined:C}=r;function M(t,e){let i=e.boost;t&&i&&i.target&&i.canvas&&!d(e.chart)&&t.allocateBufferForSingleSeries(e)}function k(t){return T(t&&t.options&&t.options.boost&&t.options.boost.enabled,!0)}function U(t,e){let i=t.constructor,s=t.seriesGroup||e.group,o=t.chartWidth,r=t.chartHeight,a=t,c="undefined"!=typeof SVGForeignObjectElement,u=!1;d(t)?a=t:(a=e,u=!!(e.options.events?.click||e.options.point?.events?.click));let f=a.boost=a.boost||{};if(c=!1,l||(l=g.createElement("canvas")),!f.target&&(f.canvas=l,t.renderer.forExport||!c?(a.renderTarget=f.target=t.renderer.image("",0,0,o,r).addClass("highcharts-boost-canvas").add(s),f.clear=function(){f.target.attr({href:"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAQAAAC1HAwCAAAAC0lEQVR42mNkYAAAAAYAAjCB0C8AAAAASUVORK5CYII="})},f.copy=function(){f.resize(),f.target.attr({href:f.canvas.toDataURL("image/png")})}):(f.targetFo=t.renderer.createElement("foreignObject").add(s),a.renderTarget=f.target=g.createElement("canvas"),f.targetCtx=f.target.getContext("2d"),f.targetFo.element.appendChild(f.target),f.clear=function(){f.target.width=f.canvas.width,f.target.height=f.canvas.height},f.copy=function(){f.target.width=f.canvas.width,f.target.height=f.canvas.height,f.targetCtx.drawImage(f.canvas,0,0)}),f.resize=function(){o=t.chartWidth,r=t.chartHeight,(f.targetFo||f.target).attr({x:0,y:0,width:o,height:r}).css({pointerEvents:u?void 0:"none",mixedBlendMode:"normal",opacity:1}).addClass(u?"highcharts-tracker":""),a instanceof i&&a.boost?.markerGroup?.translate(t.plotLeft,t.plotTop)},f.clipRect=t.renderer.clipRect(),(f.targetFo||f.target).attr({zIndex:e.options.zIndex}),a instanceof i&&(a.boost.markerGroup=a.renderer.g().add(s).translate(e.xAxis.pos,e.yAxis.pos))),f.canvas.width=o,f.canvas.height=r,f.clipRect){let e=h(t,a),i=e.width===t.clipBox.width&&e.height===t.clipBox.height?s:f.targetFo||f.target;f.clipRect.attr(e),i?.clip(f.clipRect)}return f.resize(),f.clear(),!f.wgl&&(f.wgl=new n(t=>{t.settings.debug.timeBufferCopy&&console.time("buffer copy"),f.copy(),t.settings.debug.timeBufferCopy&&console.timeEnd("buffer copy")}),f.wgl.init(f.canvas)||x("[highcharts boost] - unable to init WebGL renderer"),f.wgl.setOptions(t.options.boost||{}),a instanceof i&&f.wgl.allocateBuffer(t)),f.wgl.setSize(o,r),f.wgl}function R(t){let e=t.points;if(e){let t,i;for(i=0;i<e.length;i+=1)(t=e[i])&&t.destroyElements&&t.destroyElements()}for(let e of(["graph","area","tracker"].forEach(e=>{let i=t[e];i&&(t[e]=i.destroy())}),t.zones))b(e,void 0,!0)}function D(t,e,i,s,o,r){let n=(o=o||0)+(s=s||3e3),a=!0;for(;a&&o<n&&o<t.length;)a=e(t[o],o),++o;a&&(o<t.length?r?D(t,e,i,s,o,r):p.requestAnimationFrame?p.requestAnimationFrame(function(){D(t,e,i,s,o)}):setTimeout(D,0,t,e,i,s,o):i&&i())}function w(t,e){let i=t.options,s=i.data,o=t.xAxis&&t.xAxis.options,r=t.yAxis&&t.yAxis.options,n=t.colorAxis&&t.colorAxis.options;return s.length>(i.boostThreshold||Number.MAX_VALUE)&&P(r.min)&&P(r.max)&&(!e||P(o.min)&&P(o.max))&&(!n||P(n.min)&&P(n.max))}let B=(t,e)=>!t.forceCrop&&(d(t.chart)||(e?e.length:0)>=(t.options.boostThreshold||Number.MAX_VALUE));function L(){let t=this,e=t.chart;e.boost&&e.boost.markerGroup===t.markerGroup&&(t.markerGroup=null),e.hoverPoints&&(e.hoverPoints=e.hoverPoints.filter(function(e){return e.series===t})),e.hoverPoint&&e.hoverPoint.series===t&&(e.hoverPoint=null)}function G(){let t=this.boost;t&&t.canvas&&t.target&&(t.wgl&&t.wgl.clear(),t.clear&&t.clear())}function N(t){let e=t.boost;e&&e.canvas&&e.target&&e.wgl&&!d(t.chart)&&e.wgl.render(t.chart)}function _(t,e){let i=t.options,s=t.xAxis,o=t.pointClass;if(e instanceof o)return e;let r=t.xData||i.xData||t.processedXData||!1,n=new o(t,(t.options.data||[])[e.i],r?r[e.i]:void 0);return n.category=T(s.categories?s.categories[n.x]:n.x,n.x),n.dist=e.dist,n.distX=e.distX,n.plotX=e.plotX,n.plotY=e.plotY,n.index=e.i,n.percentage=e.percentage,n.isInside=t.isPointInside(n),n}function z(t){var e,i,s,o;let{options:r,xAxis:n,yAxis:a}=this;if(!this.isDirty&&!n.isDirty&&!a.isDirty&&!t)return!1;this.yAxis.setTickInterval();let l=r.boostThreshold||0,h=r.cropThreshold,d=r.data||this.data,c=this.xData,u=n.getExtremes(),g=u.max??Number.MAX_VALUE,f=u.min??-Number.MAX_VALUE,p=this.yData,m=a.getExtremes(),b=m.max??Number.MAX_VALUE,x=m.min??-Number.MAX_VALUE;if(!this.boosted&&n.old&&a.old&&f>=(n.old.min??-Number.MAX_VALUE)&&g<=(n.old.max??Number.MAX_VALUE)&&x>=(a.old.min??-Number.MAX_VALUE)&&b<=(a.old.max??Number.MAX_VALUE))return this.processedXData??(this.processedXData=c),this.processedYData??(this.processedYData=p),!0;if(!l||d.length<l||h&&!this.forceCrop&&!this.getExtremesFromAll&&!r.getExtremesFromAll&&d.length<h)return this.processedXData=c,this.processedYData=p,!0;let A=[],v=[],y=[],T=!(P(u.max)||P(u.min)),E=!(P(m.max)||P(m.min)),S=!1,C,M=c[0],k=c[0],U,R=p[0],D=p[0];for(let t=0,e=c.length;t<e;++t)C=c[t],U=p[t],C>=f&&C<=g&&U>=x&&U<=b?(A.push({x:C,y:U}),v.push(C),y.push(U),T&&(M=Math.max(M,C),k=Math.min(k,C)),E&&(R=Math.max(R,U),D=Math.min(D,U))):S=!0;return T&&((e=n.options).max??(e.max=M),(i=n.options).min??(i.min=k)),E&&((s=a.options).max??(s.max=R),(o=a.options).min??(o.min=D)),this.cropped=S,this.cropStart=0,this.processedXData=v,this.processedYData=y,B(this,v)||(this.processedData=A),!0}function I(){let t=this.options||{},e=this.chart,i=e.boost,s=this.boost,o=this.xAxis,r=this.yAxis,n=t.xData||this.processedXData,l=t.yData||this.processedYData,h=this.processedData||t.data,c=o.getExtremes(),u=c.min-(o.minPointOffset||0),g=c.max+(o.minPointOffset||0),p=r.getExtremes(),m=p.min-(r.minPointOffset||0),b=p.max+(r.minPointOffset||0),x={},A=!!this.sampling,y=t.enableMouseTracking,P=t.threshold,E=this.pointArrayMap&&"low,high"===this.pointArrayMap.join(","),S=!!t.stacking,k=this.cropStart||0,w=this.requireSorting,B=!n,L="x"===t.findNearestPointBy,G=this.xData||this.options.xData||this.processedXData||!1,_=T(t.lineWidth,1),z=!1,I,O=r.getThreshold(P),X,V,j,F;if(o.isPanning||r.isPanning||(z=U(e,this),e.boosted=!0,!this.visible))return;(this.points||this.graph)&&R(this),d(e)?(this.markerGroup&&this.markerGroup!==i?.markerGroup&&this.markerGroup.destroy(),this.markerGroup=i?.markerGroup,s&&s.target&&(this.renderTarget=s.target=s.target.destroy())):(this.markerGroup===i?.markerGroup&&(this.markerGroup=void 0),this.markerGroup=this.plotGroup("markerGroup","markers","visible",1,e.seriesGroup).addClass("highcharts-tracker"));let W=this.points=[],Y=(t,i,s,n)=>{let l=!!G&&G[k+s],h=t=>{e.inverted&&(t=o.len-t,i=r.len-i),W.push({destroy:f,x:l,clientX:t,plotX:t,plotY:i,i:k+s,percentage:n})};t=Math.ceil(t),a=L?t:t+","+i,y&&(x[a]?l===G[G.length-1]&&(W.length--,h(t)):(x[a]=!0,h(t)))};this.buildKDTree=f,v(this,"renderCanvas"),this.is("line")&&_>1&&s?.target&&i&&!i.lineWidthFilter&&(i.lineWidthFilter=e.renderer.definition({tagName:"filter",children:[{tagName:"feMorphology",attributes:{operator:"dilate",radius:.25*_}}],attributes:{id:"linewidth"}}),s.target.attr({filter:"url(#linewidth)"})),z&&(M(z,this),z.pushSeries(this),N(this));let H=z.settings;e.renderer.forExport||(H.debug.timeKDTree&&console.time("kd tree building"),D(S?this.data.slice(k):n||h,function(t,i){let s=void 0===e.index,n,a,h,d,c,f=!1,p=!0;return!C(t)||(!s&&(B?(n=t[0],a=t[1]):(n=t,a=l[i]),E?(B&&(a=t.slice(1,3)),f=a[0],a=a[1]):S&&(n=t.x,f=(a=t.stackY)-t.y,c=t.percentage),w||(p=(a||0)>=m&&a<=b),null!==a&&n>=u&&n<=g&&p&&(h=o.toPixels(n,!0),A?((void 0===j||h===I)&&(E||(f=a),(void 0===F||a>V)&&(V=a,F=i),(void 0===j||f<X)&&(X=f,j=i)),L&&h===I||(void 0!==j&&(d=r.toPixels(V,!0),O=r.toPixels(X,!0),Y(h,d,F,c),O!==d&&Y(h,O,j,c)),j=F=void 0,I=h)):Y(h,d=Math.ceil(r.toPixels(a,!0)),i,c))),!s)},()=>{v(this,"renderedCanvas"),delete this.buildKDTree,this.options&&this.buildKDTree(),H.debug.timeKDTree&&console.timeEnd("kd tree building")}))}function O(t){let e=!0;if(this.chart.options&&this.chart.options.boost&&(e=void 0===this.chart.options.boost.enabled||this.chart.options.boost.enabled),!e||!this.boosted)return t.call(this);this.chart.boosted=!0;let i=U(this.chart,this);i&&(M(i,this),i.pushSeries(this)),N(this)}function X(t){if(this.boosted){if(w(this))return{};if(this.xAxis.isPanning||this.yAxis.isPanning)return this}return t.apply(this,[].slice.call(arguments,1))}function V(e){let i=this.options.data;if(k(this.chart)&&t[this.type]){let t=this.is("scatter")&&!this.is("bubble")&&!this.is("heatmap");if(!B(this,i)||t||this.options.stacking||!w(this,!0)){if(this.boosted&&(this.xAxis?.isPanning||this.yAxis?.isPanning))return;t&&!this.yAxis.treeGrid?z.call(this,arguments[1]):e.apply(this,[].slice.call(arguments,1)),i=this.processedXData}if(this.boosted=B(this,i),this.boosted){let t;this.options.data&&this.options.data.length&&!P(t=this.getFirstValidPoint(this.options.data))&&!y(t)&&x(12,!1,this.chart),function(t){t.boost=t.boost||{getPoint:e=>_(t,e)};let e=t.boost.altered=[];if(["allowDG","directTouch","stickyTracking"].forEach(i=>{e.push({prop:i,val:t[i],own:Object.hasOwnProperty.call(t,i)})}),t.allowDG=!1,t.directTouch=!1,t.stickyTracking=!0,t.finishedAnimating=!0,t.labelBySeries&&(t.labelBySeries=t.labelBySeries.destroy()),t.is("scatter")&&t.data.length){for(let e of t.data)e?.destroy?.();t.data.length=0,t.points.length=0,delete t.processedData}}(this)}else!function(t){let e=t.boost,i=t.chart,s=i.boost;if(s?.markerGroup)for(let t of(s.markerGroup.destroy(),s.markerGroup=void 0,i.series))t.markerGroup=void 0,t.markerGroup=t.plotGroup("markerGroup","markers","visible",1,i.seriesGroup).addClass("highcharts-tracker");e&&((e.altered||[]).forEach(e=>{e.own?t[e.prop]=e.val:delete t[e.prop]}),e.clear&&e.clear()),(i.seriesGroup||t.group)?.clip()}(this)}else e.apply(this,[].slice.call(arguments,1))}function j(t){let e=t.apply(this,[].slice.call(arguments,1));return this.boost&&e?this.boost.getPoint(e):e}return{compose:function(i,s,o){if(E(u,"Boost.Series")){let r=c().plotOptions,n=i.prototype;if(m(i,"destroy",L),m(i,"hide",G),o&&(n.renderCanvas=I),S(n,"getExtremes",X),S(n,"processData",V),S(n,"searchPoint",j),["translate","generatePoints","drawTracker","drawPoints","render"].forEach(e=>(function(e,i,s){function o(e){let i=this.options.stacking&&("translate"===s||"generatePoints"===s);this.boosted&&!i&&k(this.chart)&&"heatmap"!==this.type&&"treemap"!==this.type&&t[this.type]&&0!==this.options.boostThreshold?"render"===s&&this.renderCanvas&&this.renderCanvas():e.call(this)}if(S(e,s,o),"translate"===s)for(let t of["column","arearange","columnrange","heatmap","treemap"])i[t]&&S(i[t].prototype,s,o)})(n,s,e)),e.forEach(t=>{let e=r[t];e&&(e.boostThreshold=5e3,e.boostData=[],s[t].prototype.fillOpacity=!0)}),o){let{area:t,areaspline:e,bubble:i,column:o,heatmap:r,scatter:n,treemap:a}=s;if(t&&A(t.prototype,{fill:!0,fillOpacity:!0,sampling:!0}),e&&A(e.prototype,{fill:!0,fillOpacity:!0,sampling:!0}),i){let t=i.prototype;delete t.buildKDTree,S(t,"markerAttribs",function(t){return!this.boosted&&t.apply(this,[].slice.call(arguments,1))})}o&&A(o.prototype,{fill:!0,sampling:!0}),n&&(n.prototype.fill=!0),[r,a].forEach(t=>{t&&S(t.prototype,"drawPoints",O)})}}return i},destroyGraphics:R,eachAsync:D,getPoint:_}}),i(e,"Extensions/BoostCanvas.js",[e["Extensions/Boost/BoostChart.js"],e["Extensions/Boost/BoostSeries.js"],e["Core/Color/Color.js"],e["Core/Globals.js"],e["Core/Utilities.js"]],function(t,e,i,s,o){var r;let{getBoostClipRect:n,isChartSeriesBoosting:a}=t,{destroyGraphics:l}=e,{parse:h}=i,{doc:d,noop:c}=s,{addEvent:u,fireEvent:g,isNumber:f,merge:p,pick:m,wrap:b}=o;return function(t){let s;let r="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAQAAAC1HAwCAAAAC0lEQVR42mNkYAAAAAYAAjCB0C8AAAAASUVORK5CYII=";function x(t,e,i,s,o){o&&e!==o.clientX&&(t.moveTo(o.clientX,o.yBottom),t.lineTo(o.clientX,o.plotY),t.lineTo(e,i),t.lineTo(e,s))}function A(t,e,i,s,o){t.moveTo(e,i),t.arc(e,i,this.radii&&this.radii[o],0,2*Math.PI,!1)}function v(t,e,i,s){t.rect(e-1,i,1,s-i)}function y(){this.boost&&this.boost.copy&&this.boost.copy()}function P(){let t=this.boost||{};t.target&&t.target.attr({href:r}),t.canvas&&t.canvas.getContext("2d").clearRect(0,0,t.canvas.width,t.canvas.height)}function T(){a(this.chart)?this.boost&&this.boost.clear&&this.boost.clear():this.boost&&this.boost.copy?this.boost.copy():this.chart.boost&&this.chart.boost.copy&&this.chart.boost.copy()}function E(t,e,i){t.lineTo(e,i)}function S(){let t;let e=this.chart,i=a(e)?e:this,s=i===e?e.seriesGroup:e.seriesGroup||this.group,o=e.chartWidth,l=e.chartHeight,h=function(t,e,i,s,o,r,n){t.call(this,i,e,s,o,r,n)},c=i.boost=i.boost||{};return t=c.targetCtx,c.canvas||(c.canvas=d.createElement("canvas"),c.target=e.renderer.image("",0,0,o,l).addClass("highcharts-boost-canvas").add(s),t=c.targetCtx=c.canvas.getContext("2d"),e.inverted&&["moveTo","lineTo","rect","arc"].forEach(e=>{b(t,e,h)}),c.copy=function(){c.target.attr({href:c.canvas.toDataURL("image/png")})},c.clear=function(){t.clearRect(0,0,c.canvas.width,c.canvas.height),i===c.target&&c.target.attr({href:r})},c.clipRect=e.renderer.clipRect(),c.target.clip(c.clipRect)),c.canvas.width!==o&&(c.canvas.width=o),c.canvas.height!==l&&(c.canvas.height=l),c.target.attr({x:0,y:0,width:o,height:l,style:"pointer-events: none",href:r}),c.clipRect&&c.clipRect.attr(n(e,i)),t}function C(){let t=this,n=t.options,a=t.chart,d=t.xAxis,b=t.yAxis,x=a.options.boost||{},A={timeRendering:x.timeRendering||!1,timeSeriesProcessing:x.timeSeriesProcessing||!1,timeSetup:x.timeSetup||!1},v=t.processedXData,y=t.processedYData,P=n.data,T=d.getExtremes(),E=T.min,S=T.max,C=b.getExtremes(),M=C.min,k=C.max,U={},R=!!t.sampling,D=n.marker&&n.marker.radius,w=t.cvsStrokeBatch||1e3,B=n.enableMouseTracking,L=n.threshold,G=f(L),N=b.getThreshold(L),_=t.fill,z=t.pointArrayMap&&"low,high"===t.pointArrayMap.join(","),I=!!n.stacking,O=t.cropStart||0,X=a.options.loading,V=t.requireSorting,j=n.connectNulls,F=!v,W=I?t.data:v||P,Y=t.fillOpacity?i.parse(t.color).setOpacity(m(n.fillOpacity,.75)).get():t.color,H="x"===n.findNearestPointBy,K=this.boost||{},Z=t.cvsDrawPoint,q=n.lineWidth?t.cvsLineTo:void 0,Q=D&&D<=1?t.cvsMarkerSquare:t.cvsMarkerCircle;K.target&&K.target.attr({href:r}),(t.points||t.graph)&&l(t),t.plotGroup("group","series",t.visible?"visible":"hidden",n.zIndex,a.seriesGroup),t.markerGroup=t.group,u(t,"destroy",function(){t.markerGroup=null});let J=this.points=[],$=this.getContext();if(t.buildKDTree=c,K.clear&&K.clear(),!t.visible)return;P.length>99999&&(a.options.loading=p(X,{labelStyle:{backgroundColor:h("#ffffff").setOpacity(.75).get(),padding:"1em",borderRadius:"0.5em"},style:{backgroundColor:"none",opacity:1}}),o.clearTimeout(s),a.showLoading("Drawing..."),a.options.loading=X),A.timeRendering&&console.time("canvas rendering");let tt=0,te,ti,ts=N,to,tr,tn,ta,tl,th,td=function(){_?($.fillStyle=Y,$.fill()):($.strokeStyle=t.color,$.lineWidth=n.lineWidth,$.stroke())},tc=function(e,i,s,o){0===tt&&($.beginPath(),q&&($.lineJoin="round")),a.scroller&&"highcharts-navigator-series"===t.options.className?(i+=a.scroller.top,s&&(s+=a.scroller.top)):i+=a.plotTop,e+=a.plotLeft,to?$.moveTo(e,i):Z?Z($,e,i,s,ti):q?q($,e,i):Q&&Q.call(t,$,e,i,D,o),(tt+=1)===w&&(td(),tt=0),ti={clientX:e,plotY:i,yBottom:s}},tu=this.xData||this.options.xData||this.processedXData||!1,tg=function(t,e,i){th=H?t:t+","+e,B&&!U[th]&&(U[th]=!0,a.inverted&&(t=d.len-t,e=b.len-e),J.push({x:!!tu&&tu[O+i],clientX:t,plotX:t,plotY:e,i:O+i}))};e.eachAsync(W,(e,i)=>{let s=void 0===a.index,o,r,n,l,h,c,u=!1,g=!1,f=NaN,p=NaN,m=!0;return!s&&(F?(o=e[0],r=e[1],W[i+1]&&(f=W[i+1][0]),W[i-1]&&(p=W[i-1][0])):(o=e,r=y[i],W[i+1]&&(f=W[i+1]),W[i-1]&&(p=W[i-1])),f&&f>=E&&f<=S&&(u=!0),p&&p>=E&&p<=S&&(g=!0),z?(F&&(r=e.slice(1,3)),c=r[0],r=r[1]):I&&(o=e.x,c=(r=e.stackY)-e.y),h=null===r,V||(m=r>=M&&r<=k),!h&&(o>=E&&o<=S&&m||u||g)&&(n=Math.round(d.toPixels(o,!0)),R?((void 0===ta||n===te)&&(z||(c=r),(void 0===tl||r>tn)&&(tn=r,tl=i),(void 0===ta||c<tr)&&(tr=c,ta=i)),n!==te&&(void 0!==ta&&(l=b.toPixels(tn,!0),ts=b.toPixels(tr,!0),tc(n,G?Math.min(l,N):l,G?Math.max(ts,N):ts,i),tg(n,l,tl),ts!==l&&tg(n,ts,ta)),ta=tl=void 0,te=n)):(tc(n,l=Math.round(b.toPixels(r,!0)),ts,i),tg(n,l,i))),to=h&&!j,i%5e4==0&&(t.boost&&t.boost.copy?t.boost.copy():t.chart.boost&&t.chart.boost.copy&&t.chart.boost.copy())),!s},function(){let e=a.loadingDiv,i=a.loadingShown;td(),t.canvasToSVG(),A.timeRendering&&console.timeEnd("canvas rendering"),g(t,"renderedCanvas"),i&&(e.style.transition="opacity 250ms",e.opacity=0,a.loadingShown=!1,s=setTimeout(function(){e.parentNode&&e.parentNode.removeChild(e),a.loadingDiv=a.loadingSpan=null},250)),delete t.buildKDTree,t.buildKDTree()},a.renderer.forExport?Number.MAX_VALUE:void 0)}function M(t,e,i,s){t.moveTo(e,i),t.arc(e,i,s,0,2*Math.PI,!1)}function k(t,e,i,s){t.rect(e-s,i-s,2*s,2*s)}function U(){let t=this.chart,e=this.getContext(),i=this.chart.inverted,s=this.xAxis,o=this.yAxis;e?(this.points.forEach(r=>{let n;let a=r.plotY;if(void 0!==a&&!isNaN(a)&&null!==r.y&&e){let{x:a=0,y:l=0,width:h=0,height:d=0}=r.shapeArgs||{};n=t.styledMode?r.series.colorAttribs(r):r.series.pointAttribs(r),e.fillStyle=n.fill,i?e.fillRect(o.len-l+s.left,s.len-a+o.top,-d,-h):e.fillRect(a+s.left,l+o.top,h,d)}}),this.canvasToSVG()):this.chart.showLoading("Your browser doesn't support HTML5 canvas, <br>please use a modern browser")}t.compose=function(t,e,i){let s=e.prototype;if(!s.renderCanvas){let{area:e,bubble:o,column:r,heatmap:n,scatter:a}=i;if(t.prototype.callbacks.push(t=>{u(t,"predraw",P),u(t,"render",y)}),s.canvasToSVG=T,s.cvsLineTo=E,s.getContext=S,s.renderCanvas=C,e){let t=e.prototype;t.cvsDrawPoint=x,t.fill=!0,t.fillOpacity=!0,t.sampling=!0}if(o){let t=o.prototype;t.cvsMarkerCircle=A,t.cvsStrokeBatch=1}if(r){let t=r.prototype;t.cvsDrawPoint=v,t.fill=!0,t.sampling=!0}if(n&&b(n.prototype,"drawPoints",U),a){let t=a.prototype;t.cvsMarkerCircle=M,t.cvsMarkerSquare=k,t.fill=!0}}}}(r||(r={})),r}),i(e,"masters/modules/boost-canvas.src.js",[e["Core/Globals.js"],e["Extensions/BoostCanvas.js"]],function(t,e){return t.initCanvasBoost=function(){e.compose(t.Chart,t.Series,t.seriesTypes)},t})});
@@ -1,5 +1,5 @@
1
1
  /**
2
- * @license Highcharts JS v11.4.7 (2024-08-14)
2
+ * @license Highcharts JS v11.4.8 (2024-08-29)
3
3
  *
4
4
  * Boost module
5
5
  *
@@ -2695,6 +2695,8 @@
2695
2695
  boost.clear();
2696
2696
  }
2697
2697
  }
2698
+ // #21106, clean up boost clipping on the series groups.
2699
+ (chart.seriesGroup || series.group)?.clip();
2698
2700
  }
2699
2701
  /**
2700
2702
  * @private
@@ -1,5 +1,5 @@
1
1
  !/**
2
- * Highcharts JS v11.4.7 (2024-08-14)
2
+ * Highcharts JS v11.4.8 (2024-08-29)
3
3
  *
4
4
  * Boost module
5
5
  *
@@ -8,4 +8,4 @@
8
8
  *
9
9
  * License: www.highcharts.com/license
10
10
  *
11
- * */function(e){"object"==typeof module&&module.exports?(e.default=e,module.exports=e):"function"==typeof define&&define.amd?define("highcharts/modules/boost",["highcharts"],function(t){return e(t),e.Highcharts=t,e}):e("undefined"!=typeof Highcharts?Highcharts:void 0)}(function(e){"use strict";var t=e?e._modules:{};function i(t,i,s,r){t.hasOwnProperty(i)||(t[i]=r.apply(null,s),"function"==typeof CustomEvent&&e.win.dispatchEvent(new CustomEvent("HighchartsModuleLoaded",{detail:{path:i,module:t[i]}})))}i(t,"Extensions/Boost/Boostables.js",[],function(){return["area","areaspline","arearange","column","columnrange","bar","line","scatter","heatmap","bubble","treemap"]}),i(t,"Extensions/Boost/BoostableMap.js",[t["Extensions/Boost/Boostables.js"]],function(e){let t={};return e.forEach(e=>{t[e]=!0}),t}),i(t,"Extensions/Boost/BoostChart.js",[t["Extensions/Boost/BoostableMap.js"],t["Core/Globals.js"],t["Core/Utilities.js"]],function(e,t,i){let{composed:s}=t,{addEvent:r,pick:o,pushUnique:n}=i;function a(t){let i=t.series,s=t.boost=t.boost||{},r=t.options.boost||{},n=o(r.seriesThreshold,50);if(i.length>=n)return!0;if(1===i.length)return!1;let a=r.allowForce;if(void 0===a){for(let e of(a=!0,t.xAxis))if(o(e.min,-1/0)>o(e.dataMin,-1/0)||o(e.max,1/0)<o(e.dataMax,1/0)){a=!1;break}}if(void 0!==s.forceChartBoost){if(a)return s.forceChartBoost;s.forceChartBoost=void 0}let l=0,h=0,d;for(let t of i)0!==(d=t.options).boostThreshold&&!1!==t.visible&&"heatmap"!==t.type&&(e[t.type]&&++l,function(...e){let t=-Number.MAX_VALUE;return e.forEach(function(e){if(null!=e&&void 0!==e.length&&e.length>0)return t=e.length,!0}),t}(t.processedXData,d.data,t.points)>=(d.boostThreshold||Number.MAX_VALUE)&&++h);return s.forceChartBoost=a&&(l===i.length&&h===l||h>5),s.forceChartBoost}function l(e){function t(){e.boost&&e.boost.wgl&&a(e)&&e.boost.wgl.render(e)}r(e,"predraw",function(){e.boost=e.boost||{},e.boost.forceChartBoost=void 0,e.boosted=!1,e.axes.some(e=>e.isPanning)||e.boost.clear?.(),e.boost.canvas&&e.boost.wgl&&a(e)&&e.boost.wgl.allocateBuffer(e),e.boost.markerGroup&&e.xAxis&&e.xAxis.length>0&&e.yAxis&&e.yAxis.length>0&&e.boost.markerGroup.translate(e.xAxis[0].pos,e.yAxis[0].pos)}),r(e,"load",t,{order:-1}),r(e,"redraw",t);let i=-1,s=-1;r(e.pointer,"afterGetHoverData",t=>{let r=t.hoverPoint?.series;if(e.boost=e.boost||{},e.boost.markerGroup&&r){let t=e.inverted?r.yAxis:r.xAxis,o=e.inverted?r.xAxis:r.yAxis;(t&&t.pos!==i||o&&o.pos!==s)&&(e.series.forEach(e=>{e.halo?.hide()}),e.boost.markerGroup.translate(t.pos,o.pos),i=t.pos,s=o.pos)}})}return{compose:function(e,t){return t&&n(s,"Boost.Chart")&&e.prototype.callbacks.push(l),e},getBoostClipRect:function(e,t){let i=e.navigator,s={x:e.plotLeft,y:e.plotTop,width:e.plotWidth,height:e.plotHeight};if(i&&e.inverted?(s.width+=i.top+i.height,i.opposite||(s.x=i.left)):i&&!e.inverted&&(s.height=i.top+i.height-e.plotTop),t.getClipBox){let{xAxis:i,yAxis:r}=t;if(s=t.getClipBox(),e.inverted){let e=s.width;s.width=s.height,s.height=e,s.x=r.pos,s.y=i.pos}else s.x=i.pos,s.y=r.pos}if(t===e){let t=e.inverted?e.xAxis:e.yAxis;t.length<=1&&(s.y=Math.min(t[0].pos,s.y),s.height=t[0].pos-e.plotTop+t[0].len)}return s},isChartSeriesBoosting:a}}),i(t,"Extensions/Boost/WGLDrawMode.js",[],function(){return{area:"LINES",arearange:"LINES",areaspline:"LINES",column:"LINES",columnrange:"LINES",bar:"LINES",line:"LINE_STRIP",scatter:"POINTS",heatmap:"TRIANGLES",treemap:"TRIANGLES",bubble:"POINTS"}}),i(t,"Extensions/Boost/WGLShader.js",[t["Core/Utilities.js"]],function(e){let{clamp:t,error:i,pick:s}=e;return class{constructor(e){if(this.errors=[],this.uLocations={},this.gl=e,e&&!this.createShader())return}bind(){this.gl&&this.shaderProgram&&this.gl.useProgram(this.shaderProgram)}createShader(){let e=this.stringToProgram("#version 100\n#define LN10 2.302585092994046\nprecision highp float;\nattribute vec4 aVertexPosition;\nattribute vec4 aColor;\nvarying highp vec2 position;\nvarying highp vec4 vColor;\nuniform mat4 uPMatrix;\nuniform float pSize;\nuniform float translatedThreshold;\nuniform bool hasThreshold;\nuniform bool skipTranslation;\nuniform float xAxisTrans;\nuniform float xAxisMin;\nuniform float xAxisMinPad;\nuniform float xAxisPointRange;\nuniform float xAxisLen;\nuniform bool xAxisPostTranslate;\nuniform float xAxisOrdinalSlope;\nuniform float xAxisOrdinalOffset;\nuniform float xAxisPos;\nuniform bool xAxisCVSCoord;\nuniform bool xAxisIsLog;\nuniform bool xAxisReversed;\nuniform float yAxisTrans;\nuniform float yAxisMin;\nuniform float yAxisMinPad;\nuniform float yAxisPointRange;\nuniform float yAxisLen;\nuniform bool yAxisPostTranslate;\nuniform float yAxisOrdinalSlope;\nuniform float yAxisOrdinalOffset;\nuniform float yAxisPos;\nuniform bool yAxisCVSCoord;\nuniform bool yAxisIsLog;\nuniform bool yAxisReversed;\nuniform bool isBubble;\nuniform bool bubbleSizeByArea;\nuniform float bubbleZMin;\nuniform float bubbleZMax;\nuniform float bubbleZThreshold;\nuniform float bubbleMinSize;\nuniform float bubbleMaxSize;\nuniform bool bubbleSizeAbs;\nuniform bool isInverted;\nfloat bubbleRadius(){\nfloat value = aVertexPosition.w;\nfloat zMax = bubbleZMax;\nfloat zMin = bubbleZMin;\nfloat radius = 0.0;\nfloat pos = 0.0;\nfloat zRange = zMax - zMin;\nif (bubbleSizeAbs){\nvalue = value - bubbleZThreshold;\nzMax = max(zMax - bubbleZThreshold, zMin - bubbleZThreshold);\nzMin = 0.0;\n}\nif (value < zMin){\nradius = bubbleZMin / 2.0 - 1.0;\n} else {\npos = zRange > 0.0 ? (value - zMin) / zRange : 0.5;\nif (bubbleSizeByArea && pos > 0.0){\npos = sqrt(pos);\n}\nradius = ceil(bubbleMinSize + pos * (bubbleMaxSize - bubbleMinSize)) / 2.0;\n}\nreturn radius * 2.0;\n}\nfloat translate(float val,\nfloat pointPlacement,\nfloat localA,\nfloat localMin,\nfloat minPixelPadding,\nfloat pointRange,\nfloat len,\nbool cvsCoord,\nbool isLog,\nbool reversed\n){\nfloat sign = 1.0;\nfloat cvsOffset = 0.0;\nif (cvsCoord) {\nsign *= -1.0;\ncvsOffset = len;\n}\nif (isLog) {\nval = log(val) / LN10;\n}\nif (reversed) {\nsign *= -1.0;\ncvsOffset -= sign * len;\n}\nreturn sign * (val - localMin) * localA + cvsOffset + \n(sign * minPixelPadding);\n}\nfloat xToPixels(float value) {\nif (skipTranslation){\nreturn value;// + xAxisPos;\n}\nreturn translate(value, 0.0, xAxisTrans, xAxisMin, xAxisMinPad, xAxisPointRange, xAxisLen, xAxisCVSCoord, xAxisIsLog, xAxisReversed);// + xAxisPos;\n}\nfloat yToPixels(float value, float checkTreshold) {\nfloat v;\nif (skipTranslation){\nv = value;// + yAxisPos;\n} else {\nv = translate(value, 0.0, yAxisTrans, yAxisMin, yAxisMinPad, yAxisPointRange, yAxisLen, yAxisCVSCoord, yAxisIsLog, yAxisReversed);// + yAxisPos;\nif (v > yAxisLen) {\nv = yAxisLen;\n}\n}\nif (checkTreshold > 0.0 && hasThreshold) {\nv = min(v, translatedThreshold);\n}\nreturn v;\n}\nvoid main(void) {\nif (isBubble){\ngl_PointSize = bubbleRadius();\n} else {\ngl_PointSize = pSize;\n}\nvColor = aColor;\nif (skipTranslation && isInverted) {\ngl_Position = uPMatrix * vec4(aVertexPosition.y + yAxisPos, aVertexPosition.x + xAxisPos, 0.0, 1.0);\n} else if (isInverted) {\ngl_Position = uPMatrix * vec4(yToPixels(aVertexPosition.y, aVertexPosition.z) + yAxisPos, xToPixels(aVertexPosition.x) + xAxisPos, 0.0, 1.0);\n} else {\ngl_Position = uPMatrix * vec4(xToPixels(aVertexPosition.x) + xAxisPos, yToPixels(aVertexPosition.y, aVertexPosition.z) + yAxisPos, 0.0, 1.0);\n}\n}","vertex"),t=this.stringToProgram("precision highp float;\nuniform vec4 fillColor;\nvarying highp vec2 position;\nvarying highp vec4 vColor;\nuniform sampler2D uSampler;\nuniform bool isCircle;\nuniform bool hasColor;\nvoid main(void) {\nvec4 col = fillColor;\nvec4 tcol = texture2D(uSampler, gl_PointCoord.st);\nif (hasColor) {\ncol = vColor;\n}\nif (isCircle) {\ncol *= tcol;\nif (tcol.r < 0.0) {\ndiscard;\n} else {\ngl_FragColor = col;\n}\n} else {\ngl_FragColor = col;\n}\n}","fragment"),i=e=>this.gl.getUniformLocation(this.shaderProgram,e);return e&&t?(this.shaderProgram=this.gl.createProgram(),this.gl.attachShader(this.shaderProgram,e),this.gl.attachShader(this.shaderProgram,t),this.gl.linkProgram(this.shaderProgram),this.gl.getProgramParameter(this.shaderProgram,this.gl.LINK_STATUS))?(this.gl.useProgram(this.shaderProgram),this.gl.bindAttribLocation(this.shaderProgram,0,"aVertexPosition"),this.pUniform=i("uPMatrix"),this.psUniform=i("pSize"),this.fcUniform=i("fillColor"),this.isBubbleUniform=i("isBubble"),this.bubbleSizeAbsUniform=i("bubbleSizeAbs"),this.bubbleSizeAreaUniform=i("bubbleSizeByArea"),this.uSamplerUniform=i("uSampler"),this.skipTranslationUniform=i("skipTranslation"),this.isCircleUniform=i("isCircle"),this.isInverted=i("isInverted"),!0):(this.errors.push(this.gl.getProgramInfoLog(this.shaderProgram)),this.handleErrors(),this.shaderProgram=!1,!1):(this.shaderProgram=!1,this.handleErrors(),!1)}handleErrors(){this.errors.length&&i("[highcharts boost] shader error - "+this.errors.join("\n"))}stringToProgram(e,t){let i=this.gl.createShader("vertex"===t?this.gl.VERTEX_SHADER:this.gl.FRAGMENT_SHADER);return(this.gl.shaderSource(i,e),this.gl.compileShader(i),this.gl.getShaderParameter(i,this.gl.COMPILE_STATUS))?i:(this.errors.push("when compiling "+t+" shader:\n"+this.gl.getShaderInfoLog(i)),!1)}destroy(){this.gl&&this.shaderProgram&&(this.gl.deleteProgram(this.shaderProgram),this.shaderProgram=!1)}fillColorUniform(){return this.fcUniform}getProgram(){return this.shaderProgram}pointSizeUniform(){return this.psUniform}perspectiveUniform(){return this.pUniform}reset(){this.gl&&this.shaderProgram&&(this.gl.uniform1i(this.isBubbleUniform,0),this.gl.uniform1i(this.isCircleUniform,0))}setBubbleUniforms(e,i,r,o=1){let n=e.options,a=Number.MAX_VALUE,l=-Number.MAX_VALUE;if(this.gl&&this.shaderProgram&&e.is("bubble")){let h=e.getPxExtremes();a=s(n.zMin,t(i,!1===n.displayNegative?n.zThreshold:-Number.MAX_VALUE,a)),l=s(n.zMax,Math.max(l,r)),this.gl.uniform1i(this.isBubbleUniform,1),this.gl.uniform1i(this.isCircleUniform,1),this.gl.uniform1i(this.bubbleSizeAreaUniform,"width"!==e.options.sizeBy),this.gl.uniform1i(this.bubbleSizeAbsUniform,e.options.sizeByAbsoluteValue),this.setUniform("bubbleMinSize",h.minPxSize*o),this.setUniform("bubbleMaxSize",h.maxPxSize*o),this.setUniform("bubbleZMin",a),this.setUniform("bubbleZMax",l),this.setUniform("bubbleZThreshold",e.options.zThreshold)}}setColor(e){this.gl&&this.shaderProgram&&this.gl.uniform4f(this.fcUniform,e[0]/255,e[1]/255,e[2]/255,e[3])}setDrawAsCircle(e){this.gl&&this.shaderProgram&&this.gl.uniform1i(this.isCircleUniform,e?1:0)}setInverted(e){this.gl&&this.shaderProgram&&this.gl.uniform1i(this.isInverted,e)}setPMatrix(e){this.gl&&this.shaderProgram&&this.gl.uniformMatrix4fv(this.pUniform,!1,e)}setPointSize(e){this.gl&&this.shaderProgram&&this.gl.uniform1f(this.psUniform,e)}setSkipTranslation(e){this.gl&&this.shaderProgram&&this.gl.uniform1i(this.skipTranslationUniform,!0===e?1:0)}setTexture(e){this.gl&&this.shaderProgram&&this.gl.uniform1i(this.uSamplerUniform,e)}setUniform(e,t){if(this.gl&&this.shaderProgram){let i=this.uLocations[e]=this.uLocations[e]||this.gl.getUniformLocation(this.shaderProgram,e);this.gl.uniform1f(i,t)}}}}),i(t,"Extensions/Boost/WGLVertexBuffer.js",[],function(){return class{constructor(e,t,i){this.buffer=!1,this.iterator=0,this.preAllocated=!1,this.vertAttribute=!1,this.components=i||2,this.dataComponents=i,this.gl=e,this.shader=t}allocate(e){this.iterator=-1,this.preAllocated=new Float32Array(4*e)}bind(){if(!this.buffer)return!1;this.gl.vertexAttribPointer(this.vertAttribute,this.components,this.gl.FLOAT,!1,0,0)}build(e,t,i){let s;return(this.data=e||[],this.data&&0!==this.data.length||this.preAllocated)?(this.components=i||this.components,this.buffer&&this.gl.deleteBuffer(this.buffer),this.preAllocated||(s=new Float32Array(this.data)),this.buffer=this.gl.createBuffer(),this.gl.bindBuffer(this.gl.ARRAY_BUFFER,this.buffer),this.gl.bufferData(this.gl.ARRAY_BUFFER,this.preAllocated||s,this.gl.STATIC_DRAW),this.vertAttribute=this.gl.getAttribLocation(this.shader.getProgram(),t),this.gl.enableVertexAttribArray(this.vertAttribute),s=!1,!0):(this.destroy(),!1)}destroy(){this.buffer&&(this.gl.deleteBuffer(this.buffer),this.buffer=!1,this.vertAttribute=!1),this.iterator=0,this.components=this.dataComponents||2,this.data=[]}push(e,t,i,s){this.preAllocated&&(this.preAllocated[++this.iterator]=e,this.preAllocated[++this.iterator]=t,this.preAllocated[++this.iterator]=i,this.preAllocated[++this.iterator]=s)}render(e,t,i){let s=this.preAllocated?this.preAllocated.length:this.data.length;return!!this.buffer&&!!s&&((!e||e>s||e<0)&&(e=0),(!t||t>s)&&(t=s),!(e>=t)&&(i=i||"POINTS",this.gl.drawArrays(this.gl[i],e/this.components,(t-e)/this.components),!0))}}}),i(t,"Extensions/Boost/WGLRenderer.js",[t["Core/Color/Color.js"],t["Core/Globals.js"],t["Core/Utilities.js"],t["Extensions/Boost/WGLDrawMode.js"],t["Extensions/Boost/WGLShader.js"],t["Extensions/Boost/WGLVertexBuffer.js"]],function(e,t,i,s,r,o){let{parse:n}=e,{doc:a,win:l}=t,{isNumber:h,isObject:d,merge:f,objectEach:u,pick:g}=i,c={column:!0,columnrange:!0,bar:!0,area:!0,areaspline:!0,arearange:!0},m={scatter:!0,bubble:!0},p=["webgl","experimental-webgl","moz-webgl","webkit-3d"];class b{static orthoMatrix(e,t){return[2/e,0,0,0,0,-(2/t),0,0,0,0,-2,0,-1,1,-1,1]}static seriesPointCount(e){let t,i,s;return e.boosted?(t=!!e.options.stacking,i=e.xData||e.options.xData||e.processedXData,s=(t?e.data:i||e.options.data).length,"treemap"===e.type?s*=12:"heatmap"===e.type?s*=6:c[e.type]&&(s*=2),s):0}constructor(e){this.data=[],this.height=0,this.isInited=!1,this.markerData=[],this.series=[],this.textureHandles={},this.width=0,this.postRenderCallback=e,this.settings={pointSize:1,lineWidth:1,fillColor:"#AA00AA",useAlpha:!0,usePreallocated:!1,useGPUTranslations:!1,debug:{timeRendering:!1,timeSeriesProcessing:!1,timeSetup:!1,timeBufferCopy:!1,timeKDTree:!1,showSkipSummary:!1}}}getPixelRatio(){return this.settings.pixelRatio||l.devicePixelRatio||1}setOptions(e){"pixelRatio"in e||(e.pixelRatio=1),f(!0,this.settings,e)}allocateBuffer(e){let t=this.vbuffer,i=0;this.settings.usePreallocated&&(e.series.forEach(e=>{e.boosted&&(i+=b.seriesPointCount(e))}),t&&t.allocate(i))}allocateBufferForSingleSeries(e){let t=this.vbuffer,i=0;this.settings.usePreallocated&&(e.boosted&&(i=b.seriesPointCount(e)),t&&t.allocate(i))}clear(){let e=this.gl;e&&e.clear(e.COLOR_BUFFER_BIT|e.DEPTH_BUFFER_BIT)}pushSeriesData(e,t){let i=this.data,s=this.settings,r=this.vbuffer,o=e.pointArrayMap&&"low,high"===e.pointArrayMap.join(","),{chart:a,options:l,sorted:h,xAxis:f,yAxis:u}=e,g=!!l.stacking,m=l.data,p=e.xAxis.getExtremes(),b=p.min-(e.xAxis.minPointOffset||0),x=p.max+(e.xAxis.minPointOffset||0),A=e.yAxis.getExtremes(),y=A.min-(e.yAxis.minPointOffset||0),P=A.max+(e.yAxis.minPointOffset||0),v=e.xData||l.xData||e.processedXData,T=e.yData||l.yData||e.processedYData,E=e.zData||l.zData||e.processedZData,k=!v||0===v.length,S=l.connectNulls,M=e.points||!1,C=g?e.data:v||m,U={x:Number.MAX_VALUE,y:0},w={x:-Number.MAX_VALUE,y:0},R=void 0===a.index,B=c[e.type],D=l.zoneAxis||"y",L=l.zones||!1,z=l.threshold,_=this.getPixelRatio(),G=e.chart.plotWidth,N=!1,I=!1,O,X,V=0,j=!1,F,W,H,Y,q=-1,Z=!1,K=!1,Q,J=!1,$=!1,ee=!1,et=!1,ei=!0,es=!0,er,eo=!1,en=!1,ea=0;if(l.boostData&&l.boostData.length>0)return;l.gapSize&&(en="value"!==l.gapUnit?l.gapSize*e.closestPointRange:l.gapSize),L&&(er=[],L.forEach((e,t)=>{if(e.color){let i=n(e.color).rgba;i[0]/=255,i[1]/=255,i[2]/=255,er[t]=i,eo||void 0!==e.value||(eo=i)}}),eo||(eo=n(e.pointAttribs&&e.pointAttribs().fill||e.color).rgba,eo[0]/=255,eo[1]/=255,eo[2]/=255)),a.inverted&&(G=e.chart.plotHeight),e.closestPointRangePx=Number.MAX_VALUE;let el=e=>{e&&(t.colorData.push(e[0]),t.colorData.push(e[1]),t.colorData.push(e[2]),t.colorData.push(e[3]))},eh=(e,o,n,a=1,l)=>{el(l),1!==_&&(!s.useGPUTranslations||t.skipTranslation)&&(e*=_,o*=_,a*=_),s.usePreallocated&&r?(r.push(e,o,n?1:0,a),ea+=4):(i.push(e),i.push(o),i.push(n?_:0),i.push(a))},ed=()=>{t.segments.length&&(t.segments[t.segments.length-1].to=i.length||ea)},ef=()=>{t.segments.length&&t.segments[t.segments.length-1].from===(i.length||ea)||(ed(),t.segments.push({from:i.length||ea}))},eu=(e,t,i,s,r)=>{el(r),eh(e+i,t),el(r),eh(e,t),el(r),eh(e,t+s),el(r),eh(e,t+s),el(r),eh(e+i,t+s),el(r),eh(e+i,t)};if(ef(),M&&M.length>0){t.skipTranslation=!0,t.drawMode="TRIANGLES",M[0].node&&M[0].node.levelDynamic&&M.sort((e,t)=>{if(e.node){if(e.node.levelDynamic>t.node.levelDynamic)return 1;if(e.node.levelDynamic<t.node.levelDynamic)return -1}return 0}),M.forEach(t=>{let i,s;let r=t.plotY;if(void 0!==r&&!isNaN(r)&&null!==t.y&&t.shapeArgs){let{x:r=0,y:o=0,width:l=0,height:h=0}=t.shapeArgs;i=(s=a.styledMode?t.series.colorAttribs(t):s=t.series.pointAttribs(t))["stroke-width"]||0,ee=n(s.fill).rgba,ee[0]/=255,ee[1]/=255,ee[2]/=255,e.is("treemap")&&(i=i||1,X=n(s.stroke).rgba,X[0]/=255,X[1]/=255,X[2]/=255,eu(r,o,l,h,X),i/=2),e.is("heatmap")&&a.inverted&&(r=f.len-r,o=u.len-o,l=-l,h=-h),eu(r+i,o+i,l-2*i,h-2*i,ee)}}),ed();return}for(;q<C.length-1;){if(void 0===(H=C[++q]))continue;if(R)break;let i=m&&m[q];if(!k&&d(i,!0)&&i.color&&(ee=n(i.color).rgba,ee[0]/=255,ee[1]/=255,ee[2]/=255),k?(F=H[0],W=H[1],C[q+1]&&(K=C[q+1][0]),C[q-1]&&(Z=C[q-1][0]),H.length>=3&&(Y=H[2],H[2]>t.zMax&&(t.zMax=H[2]),H[2]<t.zMin&&(t.zMin=H[2]))):(F=H,W=T[q],C[q+1]&&(K=C[q+1]),C[q-1]&&(Z=C[q-1]),E&&E.length&&(Y=E[q],E[q]>t.zMax&&(t.zMax=E[q]),E[q]<t.zMin&&(t.zMin=E[q]))),!S&&(null===F||null===W)){ef();continue}if(K&&K>=b&&K<=x&&(J=!0),Z&&Z>=b&&Z<=x&&($=!0),o?(k&&(W=H.slice(1,3)),Q=W[0],W=W[1]):g&&(F=H.x,Q=(W=H.stackY)-H.y),null!=y&&null!=P&&(ei=W>=y&&W<=P),F>x&&w.x<x&&(w.x=F,w.y=W),F<b&&U.x>b&&(U.x=F,U.y=W),null!==W||!S){if(null===W||!ei&&!J&&!$){ef();continue}if(h&&(K>=b||F>=b)&&(Z<=x||F<=x)&&(et=!0),et||J||$){if(en&&F-Z>en&&ef(),L){let e;L.some((t,i)=>{let s=L[i-1];return"x"===D?void 0!==t.value&&F<=t.value&&(er[i]&&(!s||F>=s.value)&&(e=er[i]),!0):void 0!==t.value&&W<=t.value&&(er[i]&&(!s||W>=s.value)&&(e=er[i]),!0)}),ee=e||eo||ee}if(s.useGPUTranslations||(t.skipTranslation=!0,F=f.toPixels(F,!0),W=u.toPixels(W,!0),!(F>G)||"POINTS"!==t.drawMode)){if(t.hasMarkers&&et&&!1!==N&&(e.closestPointRangePx=Math.min(e.closestPointRangePx,Math.abs(F-N))),!s.useGPUTranslations&&!s.usePreallocated&&N&&1>Math.abs(F-N)&&I&&1>Math.abs(W-I)){s.debug.showSkipSummary&&++V;continue}B&&(O=Q,(!1===Q||void 0===Q)&&(O=W<0?W:0),(o||g)&&!u.logarithmic||(O=Math.max(null===z?y:z,y)),s.useGPUTranslations||(O=u.toPixels(O,!0)),eh(F,O,0,0,ee)),l.step&&!es&&eh(F,I,0,2,ee),eh(F,W,0,"bubble"===e.type?Y||1:2,ee),N=F,I=W,j=!0,es=!1}}}}s.debug.showSkipSummary&&console.log("skipped points:",V);let eg=(e,i)=>{if(s.useGPUTranslations||(t.skipTranslation=!0,e.x=f.toPixels(e.x,!0),e.y=u.toPixels(e.y,!0)),i){this.data=[e.x,e.y,0,2].concat(this.data);return}eh(e.x,e.y,0,2)};!j&&!1!==S&&"line_strip"===e.drawMode&&(U.x<Number.MAX_VALUE&&eg(U,!0),w.x>-Number.MAX_VALUE&&eg(w)),ed()}pushSeries(e){let t=this.markerData,i=this.series,r=this.settings;i.length>0&&i[i.length-1].hasMarkers&&(i[i.length-1].markerTo=t.length),r.debug.timeSeriesProcessing&&console.time("building "+e.type+" series");let o={segments:[],markerFrom:t.length,colorData:[],series:e,zMin:Number.MAX_VALUE,zMax:-Number.MAX_VALUE,hasMarkers:!!e.options.marker&&!1!==e.options.marker.enabled,showMarkers:!0,drawMode:s[e.type]||"LINE_STRIP"};e.index>=i.length?i.push(o):i[e.index]=o,this.pushSeriesData(e,o),r.debug.timeSeriesProcessing&&console.timeEnd("building "+e.type+" series")}flush(){let e=this.vbuffer;this.data=[],this.markerData=[],this.series=[],e&&e.destroy()}setXAxis(e){let t=this.shader;if(!t)return;let i=this.getPixelRatio();t.setUniform("xAxisTrans",e.transA*i),t.setUniform("xAxisMin",e.min),t.setUniform("xAxisMinPad",e.minPixelPadding*i),t.setUniform("xAxisPointRange",e.pointRange),t.setUniform("xAxisLen",e.len*i),t.setUniform("xAxisPos",e.pos*i),t.setUniform("xAxisCVSCoord",!e.horiz),t.setUniform("xAxisIsLog",!!e.logarithmic),t.setUniform("xAxisReversed",!!e.reversed)}setYAxis(e){let t=this.shader;if(!t)return;let i=this.getPixelRatio();t.setUniform("yAxisTrans",e.transA*i),t.setUniform("yAxisMin",e.min),t.setUniform("yAxisMinPad",e.minPixelPadding*i),t.setUniform("yAxisPointRange",e.pointRange),t.setUniform("yAxisLen",e.len*i),t.setUniform("yAxisPos",e.pos*i),t.setUniform("yAxisCVSCoord",!e.horiz),t.setUniform("yAxisIsLog",!!e.logarithmic),t.setUniform("yAxisReversed",!!e.reversed)}setThreshold(e,t){let i=this.shader;i&&(i.setUniform("hasThreshold",e),i.setUniform("translatedThreshold",t))}renderChart(i){let s=this.gl,r=this.settings,a=this.shader,l=this.vbuffer,d=this.getPixelRatio();if(!i)return!1;this.width=i.chartWidth*d,this.height=i.chartHeight*d;let f=this.height,u=this.width;if(!s||!a||!u||!f)return!1;r.debug.timeRendering&&console.time("gl rendering"),s.canvas.width=u,s.canvas.height=f,a.bind(),s.viewport(0,0,u,f),a.setPMatrix(b.orthoMatrix(u,f)),r.lineWidth>1&&!t.isMS&&s.lineWidth(r.lineWidth),l&&(l.build(this.data,"aVertexPosition",4),l.bind()),a.setInverted(i.inverted),this.series.forEach((t,f)=>{let u=t.series.options,c=u.marker,p=void 0!==u.lineWidth?u.lineWidth:1,b=u.threshold,x=h(b),A=t.series.yAxis.getThreshold(b),y=g(u.marker?u.marker.enabled:null,!!t.series.xAxis.isRadial||null,t.series.closestPointRangePx>2*((u.marker?u.marker.radius:10)||10)),P=this.textureHandles[c&&c.symbol||t.series.symbol]||this.textureHandles.circle,v,T,E,k=[];if(0!==t.segments.length&&t.segments[0].from!==t.segments[0].to&&(P.isReady&&(s.bindTexture(s.TEXTURE_2D,P.handle),a.setTexture(P.handle)),i.styledMode?t.series.markerGroup===t.series.chart.boost?.markerGroup?(delete t.series.markerGroup,t.series.markerGroup=t.series.plotGroup("markerGroup","markers","visible",1,i.seriesGroup).addClass("highcharts-tracker"),E=t.series.markerGroup.getStyle("fill"),t.series.markerGroup.destroy(),t.series.markerGroup=t.series.chart.boost?.markerGroup):E=t.series.markerGroup?.getStyle("fill"):(E="POINTS"===t.drawMode&&t.series.pointAttribs&&t.series.pointAttribs().fill||t.series.color,u.colorByPoint&&(E=t.series.chart.options.colors[f])),t.series.fillOpacity&&u.fillOpacity&&(E=new e(E).setOpacity(g(u.fillOpacity,1)).get()),k=n(E).rgba,r.useAlpha||(k[3]=1),"add"===u.boostBlending?(s.blendFunc(s.SRC_ALPHA,s.ONE),s.blendEquation(s.FUNC_ADD)):"mult"===u.boostBlending||"multiply"===u.boostBlending?s.blendFunc(s.DST_COLOR,s.ZERO):"darken"===u.boostBlending?(s.blendFunc(s.ONE,s.ONE),s.blendEquation(s.FUNC_MIN)):s.blendFuncSeparate(s.SRC_ALPHA,s.ONE_MINUS_SRC_ALPHA,s.ONE,s.ONE_MINUS_SRC_ALPHA),a.reset(),t.colorData.length>0?(a.setUniform("hasColor",1),(T=new o(s,a)).build(Array(t.segments[0].from).concat(t.colorData),"aColor",4),T.bind()):(a.setUniform("hasColor",0),s.disableVertexAttribArray(s.getAttribLocation(a.getProgram(),"aColor"))),a.setColor(k),this.setXAxis(t.series.xAxis),this.setYAxis(t.series.yAxis),this.setThreshold(x,A),"POINTS"===t.drawMode&&a.setPointSize(2*g(u.marker&&u.marker.radius,.5)*d),a.setSkipTranslation(t.skipTranslation),"bubble"===t.series.type&&a.setBubbleUniforms(t.series,t.zMin,t.zMax,d),a.setDrawAsCircle(m[t.series.type]||!1),l)){if(p>0||"LINE_STRIP"!==t.drawMode)for(v=0;v<t.segments.length;v++)l.render(t.segments[v].from,t.segments[v].to,t.drawMode);if(t.hasMarkers&&y)for(a.setPointSize(2*g(u.marker&&u.marker.radius,5)*d),a.setDrawAsCircle(!0),v=0;v<t.segments.length;v++)l.render(t.segments[v].from,t.segments[v].to,"POINTS")}}),r.debug.timeRendering&&console.timeEnd("gl rendering"),this.postRenderCallback&&this.postRenderCallback(this),this.flush()}render(e){if(this.clear(),e.renderer.forExport)return this.renderChart(e);this.isInited?this.renderChart(e):setTimeout(()=>{this.render(e)},1)}setSize(e,t){let i=this.shader;i&&(this.width!==e||this.height!==t)&&(this.width=e,this.height=t,i.bind(),i.setPMatrix(b.orthoMatrix(e,t)))}init(e,t){let i=this.settings;if(this.isInited=!1,!e)return!1;i.debug.timeSetup&&console.time("gl setup");for(let t=0;t<p.length&&(this.gl=e.getContext(p[t],{}),!this.gl);++t);let s=this.gl;if(!s)return!1;t||this.flush(),s.enable(s.BLEND),s.blendFunc(s.SRC_ALPHA,s.ONE_MINUS_SRC_ALPHA),s.disable(s.DEPTH_TEST),s.depthFunc(s.LESS);let n=this.shader=new r(s);if(!n)return!1;this.vbuffer=new o(s,n);let l=(e,t)=>{let i={isReady:!1,texture:a.createElement("canvas"),handle:s.createTexture()},r=i.texture.getContext("2d");this.textureHandles[e]=i,i.texture.width=512,i.texture.height=512,r.mozImageSmoothingEnabled=!1,r.webkitImageSmoothingEnabled=!1,r.msImageSmoothingEnabled=!1,r.imageSmoothingEnabled=!1,r.strokeStyle="rgba(255, 255, 255, 0)",r.fillStyle="#FFF",t(r);try{s.activeTexture(s.TEXTURE0),s.bindTexture(s.TEXTURE_2D,i.handle),s.texImage2D(s.TEXTURE_2D,0,s.RGBA,s.RGBA,s.UNSIGNED_BYTE,i.texture),s.texParameteri(s.TEXTURE_2D,s.TEXTURE_WRAP_S,s.CLAMP_TO_EDGE),s.texParameteri(s.TEXTURE_2D,s.TEXTURE_WRAP_T,s.CLAMP_TO_EDGE),s.texParameteri(s.TEXTURE_2D,s.TEXTURE_MAG_FILTER,s.LINEAR),s.texParameteri(s.TEXTURE_2D,s.TEXTURE_MIN_FILTER,s.LINEAR),s.bindTexture(s.TEXTURE_2D,null),i.isReady=!0}catch(e){}};return l("circle",e=>{e.beginPath(),e.arc(256,256,256,0,2*Math.PI),e.stroke(),e.fill()}),l("square",e=>{e.fillRect(0,0,512,512)}),l("diamond",e=>{e.beginPath(),e.moveTo(256,0),e.lineTo(512,256),e.lineTo(256,512),e.lineTo(0,256),e.lineTo(256,0),e.fill()}),l("triangle",e=>{e.beginPath(),e.moveTo(0,512),e.lineTo(256,0),e.lineTo(512,512),e.lineTo(0,512),e.fill()}),l("triangle-down",e=>{e.beginPath(),e.moveTo(0,0),e.lineTo(256,512),e.lineTo(512,0),e.lineTo(0,0),e.fill()}),this.isInited=!0,i.debug.timeSetup&&console.timeEnd("gl setup"),!0}destroy(){let e=this.gl,t=this.shader,i=this.vbuffer;this.flush(),i&&i.destroy(),t&&t.destroy(),e&&(u(this.textureHandles,t=>{t.handle&&e.deleteTexture(t.handle)}),e.canvas.width=1,e.canvas.height=1)}}return b}),i(t,"Extensions/Boost/BoostSeries.js",[t["Extensions/Boost/BoostableMap.js"],t["Extensions/Boost/Boostables.js"],t["Extensions/Boost/BoostChart.js"],t["Core/Defaults.js"],t["Core/Globals.js"],t["Core/Utilities.js"],t["Extensions/Boost/WGLRenderer.js"]],function(e,t,i,s,r,o,n){let a,l;let{getBoostClipRect:h,isChartSeriesBoosting:d}=i,{getOptions:f}=s,{composed:u,doc:g,noop:c,win:m}=r,{addEvent:p,destroyObjectProperties:b,error:x,extend:A,fireEvent:y,isArray:P,isNumber:v,pick:T,pushUnique:E,wrap:k,defined:S}=o;function M(e,t){let i=t.boost;e&&i&&i.target&&i.canvas&&!d(t.chart)&&e.allocateBufferForSingleSeries(t)}function C(e){return T(e&&e.options&&e.options.boost&&e.options.boost.enabled,!0)}function U(e,t){let i=e.constructor,s=e.seriesGroup||t.group,r=e.chartWidth,o=e.chartHeight,a=e,f="undefined"!=typeof SVGForeignObjectElement,u=!1;d(e)?a=e:(a=t,u=!!(t.options.events?.click||t.options.point?.events?.click));let c=a.boost=a.boost||{};if(f=!1,l||(l=g.createElement("canvas")),!c.target&&(c.canvas=l,e.renderer.forExport||!f?(a.renderTarget=c.target=e.renderer.image("",0,0,r,o).addClass("highcharts-boost-canvas").add(s),c.clear=function(){c.target.attr({href:"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAQAAAC1HAwCAAAAC0lEQVR42mNkYAAAAAYAAjCB0C8AAAAASUVORK5CYII="})},c.copy=function(){c.resize(),c.target.attr({href:c.canvas.toDataURL("image/png")})}):(c.targetFo=e.renderer.createElement("foreignObject").add(s),a.renderTarget=c.target=g.createElement("canvas"),c.targetCtx=c.target.getContext("2d"),c.targetFo.element.appendChild(c.target),c.clear=function(){c.target.width=c.canvas.width,c.target.height=c.canvas.height},c.copy=function(){c.target.width=c.canvas.width,c.target.height=c.canvas.height,c.targetCtx.drawImage(c.canvas,0,0)}),c.resize=function(){r=e.chartWidth,o=e.chartHeight,(c.targetFo||c.target).attr({x:0,y:0,width:r,height:o}).css({pointerEvents:u?void 0:"none",mixedBlendMode:"normal",opacity:1}).addClass(u?"highcharts-tracker":""),a instanceof i&&a.boost?.markerGroup?.translate(e.plotLeft,e.plotTop)},c.clipRect=e.renderer.clipRect(),(c.targetFo||c.target).attr({zIndex:t.options.zIndex}),a instanceof i&&(a.boost.markerGroup=a.renderer.g().add(s).translate(t.xAxis.pos,t.yAxis.pos))),c.canvas.width=r,c.canvas.height=o,c.clipRect){let t=h(e,a),i=t.width===e.clipBox.width&&t.height===e.clipBox.height?s:c.targetFo||c.target;c.clipRect.attr(t),i?.clip(c.clipRect)}return c.resize(),c.clear(),!c.wgl&&(c.wgl=new n(e=>{e.settings.debug.timeBufferCopy&&console.time("buffer copy"),c.copy(),e.settings.debug.timeBufferCopy&&console.timeEnd("buffer copy")}),c.wgl.init(c.canvas)||x("[highcharts boost] - unable to init WebGL renderer"),c.wgl.setOptions(e.options.boost||{}),a instanceof i&&c.wgl.allocateBuffer(e)),c.wgl.setSize(r,o),c.wgl}function w(e){let t=e.points;if(t){let e,i;for(i=0;i<t.length;i+=1)(e=t[i])&&e.destroyElements&&e.destroyElements()}for(let t of(["graph","area","tracker"].forEach(t=>{let i=e[t];i&&(e[t]=i.destroy())}),e.zones))b(t,void 0,!0)}function R(e,t,i,s,r,o){let n=(r=r||0)+(s=s||3e3),a=!0;for(;a&&r<n&&r<e.length;)a=t(e[r],r),++r;a&&(r<e.length?o?R(e,t,i,s,r,o):m.requestAnimationFrame?m.requestAnimationFrame(function(){R(e,t,i,s,r)}):setTimeout(R,0,e,t,i,s,r):i&&i())}function B(e,t){let i=e.options,s=i.data,r=e.xAxis&&e.xAxis.options,o=e.yAxis&&e.yAxis.options,n=e.colorAxis&&e.colorAxis.options;return s.length>(i.boostThreshold||Number.MAX_VALUE)&&v(o.min)&&v(o.max)&&(!t||v(r.min)&&v(r.max))&&(!n||v(n.min)&&v(n.max))}let D=(e,t)=>!e.forceCrop&&(d(e.chart)||(t?t.length:0)>=(e.options.boostThreshold||Number.MAX_VALUE));function L(){let e=this,t=e.chart;t.boost&&t.boost.markerGroup===e.markerGroup&&(e.markerGroup=null),t.hoverPoints&&(t.hoverPoints=t.hoverPoints.filter(function(t){return t.series===e})),t.hoverPoint&&t.hoverPoint.series===e&&(t.hoverPoint=null)}function z(){let e=this.boost;e&&e.canvas&&e.target&&(e.wgl&&e.wgl.clear(),e.clear&&e.clear())}function _(e){let t=e.boost;t&&t.canvas&&t.target&&t.wgl&&!d(e.chart)&&t.wgl.render(e.chart)}function G(e,t){let i=e.options,s=e.xAxis,r=e.pointClass;if(t instanceof r)return t;let o=e.xData||i.xData||e.processedXData||!1,n=new r(e,(e.options.data||[])[t.i],o?o[t.i]:void 0);return n.category=T(s.categories?s.categories[n.x]:n.x,n.x),n.dist=t.dist,n.distX=t.distX,n.plotX=t.plotX,n.plotY=t.plotY,n.index=t.i,n.percentage=t.percentage,n.isInside=e.isPointInside(n),n}function N(e){var t,i,s,r;let{options:o,xAxis:n,yAxis:a}=this;if(!this.isDirty&&!n.isDirty&&!a.isDirty&&!e)return!1;this.yAxis.setTickInterval();let l=o.boostThreshold||0,h=o.cropThreshold,d=o.data||this.data,f=this.xData,u=n.getExtremes(),g=u.max??Number.MAX_VALUE,c=u.min??-Number.MAX_VALUE,m=this.yData,p=a.getExtremes(),b=p.max??Number.MAX_VALUE,x=p.min??-Number.MAX_VALUE;if(!this.boosted&&n.old&&a.old&&c>=(n.old.min??-Number.MAX_VALUE)&&g<=(n.old.max??Number.MAX_VALUE)&&x>=(a.old.min??-Number.MAX_VALUE)&&b<=(a.old.max??Number.MAX_VALUE))return this.processedXData??(this.processedXData=f),this.processedYData??(this.processedYData=m),!0;if(!l||d.length<l||h&&!this.forceCrop&&!this.getExtremesFromAll&&!o.getExtremesFromAll&&d.length<h)return this.processedXData=f,this.processedYData=m,!0;let A=[],y=[],P=[],T=!(v(u.max)||v(u.min)),E=!(v(p.max)||v(p.min)),k=!1,S,M=f[0],C=f[0],U,w=m[0],R=m[0];for(let e=0,t=f.length;e<t;++e)S=f[e],U=m[e],S>=c&&S<=g&&U>=x&&U<=b?(A.push({x:S,y:U}),y.push(S),P.push(U),T&&(M=Math.max(M,S),C=Math.min(C,S)),E&&(w=Math.max(w,U),R=Math.min(R,U))):k=!0;return T&&((t=n.options).max??(t.max=M),(i=n.options).min??(i.min=C)),E&&((s=a.options).max??(s.max=w),(r=a.options).min??(r.min=R)),this.cropped=k,this.cropStart=0,this.processedXData=y,this.processedYData=P,D(this,y)||(this.processedData=A),!0}function I(){let e=this.options||{},t=this.chart,i=t.boost,s=this.boost,r=this.xAxis,o=this.yAxis,n=e.xData||this.processedXData,l=e.yData||this.processedYData,h=this.processedData||e.data,f=r.getExtremes(),u=f.min-(r.minPointOffset||0),g=f.max+(r.minPointOffset||0),m=o.getExtremes(),p=m.min-(o.minPointOffset||0),b=m.max+(o.minPointOffset||0),x={},A=!!this.sampling,P=e.enableMouseTracking,v=e.threshold,E=this.pointArrayMap&&"low,high"===this.pointArrayMap.join(","),k=!!e.stacking,C=this.cropStart||0,B=this.requireSorting,D=!n,L="x"===e.findNearestPointBy,z=this.xData||this.options.xData||this.processedXData||!1,G=T(e.lineWidth,1),N=!1,I,O=o.getThreshold(v),X,V,j,F;if(r.isPanning||o.isPanning||(N=U(t,this),t.boosted=!0,!this.visible))return;(this.points||this.graph)&&w(this),d(t)?(this.markerGroup&&this.markerGroup!==i?.markerGroup&&this.markerGroup.destroy(),this.markerGroup=i?.markerGroup,s&&s.target&&(this.renderTarget=s.target=s.target.destroy())):(this.markerGroup===i?.markerGroup&&(this.markerGroup=void 0),this.markerGroup=this.plotGroup("markerGroup","markers","visible",1,t.seriesGroup).addClass("highcharts-tracker"));let W=this.points=[],H=(e,i,s,n)=>{let l=!!z&&z[C+s],h=e=>{t.inverted&&(e=r.len-e,i=o.len-i),W.push({destroy:c,x:l,clientX:e,plotX:e,plotY:i,i:C+s,percentage:n})};e=Math.ceil(e),a=L?e:e+","+i,P&&(x[a]?l===z[z.length-1]&&(W.length--,h(e)):(x[a]=!0,h(e)))};this.buildKDTree=c,y(this,"renderCanvas"),this.is("line")&&G>1&&s?.target&&i&&!i.lineWidthFilter&&(i.lineWidthFilter=t.renderer.definition({tagName:"filter",children:[{tagName:"feMorphology",attributes:{operator:"dilate",radius:.25*G}}],attributes:{id:"linewidth"}}),s.target.attr({filter:"url(#linewidth)"})),N&&(M(N,this),N.pushSeries(this),_(this));let Y=N.settings;t.renderer.forExport||(Y.debug.timeKDTree&&console.time("kd tree building"),R(k?this.data.slice(C):n||h,function(e,i){let s=void 0===t.index,n,a,h,d,f,c=!1,m=!0;return!S(e)||(!s&&(D?(n=e[0],a=e[1]):(n=e,a=l[i]),E?(D&&(a=e.slice(1,3)),c=a[0],a=a[1]):k&&(n=e.x,c=(a=e.stackY)-e.y,f=e.percentage),B||(m=(a||0)>=p&&a<=b),null!==a&&n>=u&&n<=g&&m&&(h=r.toPixels(n,!0),A?((void 0===j||h===I)&&(E||(c=a),(void 0===F||a>V)&&(V=a,F=i),(void 0===j||c<X)&&(X=c,j=i)),L&&h===I||(void 0!==j&&(d=o.toPixels(V,!0),O=o.toPixels(X,!0),H(h,d,F,f),O!==d&&H(h,O,j,f)),j=F=void 0,I=h)):H(h,d=Math.ceil(o.toPixels(a,!0)),i,f))),!s)},()=>{y(this,"renderedCanvas"),delete this.buildKDTree,this.options&&this.buildKDTree(),Y.debug.timeKDTree&&console.timeEnd("kd tree building")}))}function O(e){let t=!0;if(this.chart.options&&this.chart.options.boost&&(t=void 0===this.chart.options.boost.enabled||this.chart.options.boost.enabled),!t||!this.boosted)return e.call(this);this.chart.boosted=!0;let i=U(this.chart,this);i&&(M(i,this),i.pushSeries(this)),_(this)}function X(e){if(this.boosted){if(B(this))return{};if(this.xAxis.isPanning||this.yAxis.isPanning)return this}return e.apply(this,[].slice.call(arguments,1))}function V(t){let i=this.options.data;if(C(this.chart)&&e[this.type]){let e=this.is("scatter")&&!this.is("bubble")&&!this.is("heatmap");if(!D(this,i)||e||this.options.stacking||!B(this,!0)){if(this.boosted&&(this.xAxis?.isPanning||this.yAxis?.isPanning))return;e&&!this.yAxis.treeGrid?N.call(this,arguments[1]):t.apply(this,[].slice.call(arguments,1)),i=this.processedXData}if(this.boosted=D(this,i),this.boosted){let e;this.options.data&&this.options.data.length&&!v(e=this.getFirstValidPoint(this.options.data))&&!P(e)&&x(12,!1,this.chart),function(e){e.boost=e.boost||{getPoint:t=>G(e,t)};let t=e.boost.altered=[];if(["allowDG","directTouch","stickyTracking"].forEach(i=>{t.push({prop:i,val:e[i],own:Object.hasOwnProperty.call(e,i)})}),e.allowDG=!1,e.directTouch=!1,e.stickyTracking=!0,e.finishedAnimating=!0,e.labelBySeries&&(e.labelBySeries=e.labelBySeries.destroy()),e.is("scatter")&&e.data.length){for(let t of e.data)t?.destroy?.();e.data.length=0,e.points.length=0,delete e.processedData}}(this)}else!function(e){let t=e.boost,i=e.chart,s=i.boost;if(s?.markerGroup)for(let e of(s.markerGroup.destroy(),s.markerGroup=void 0,i.series))e.markerGroup=void 0,e.markerGroup=e.plotGroup("markerGroup","markers","visible",1,i.seriesGroup).addClass("highcharts-tracker");t&&((t.altered||[]).forEach(t=>{t.own?e[t.prop]=t.val:delete e[t.prop]}),t.clear&&t.clear())}(this)}else t.apply(this,[].slice.call(arguments,1))}function j(e){let t=e.apply(this,[].slice.call(arguments,1));return this.boost&&t?this.boost.getPoint(t):t}return{compose:function(i,s,r){if(E(u,"Boost.Series")){let o=f().plotOptions,n=i.prototype;if(p(i,"destroy",L),p(i,"hide",z),r&&(n.renderCanvas=I),k(n,"getExtremes",X),k(n,"processData",V),k(n,"searchPoint",j),["translate","generatePoints","drawTracker","drawPoints","render"].forEach(t=>(function(t,i,s){function r(t){let i=this.options.stacking&&("translate"===s||"generatePoints"===s);this.boosted&&!i&&C(this.chart)&&"heatmap"!==this.type&&"treemap"!==this.type&&e[this.type]&&0!==this.options.boostThreshold?"render"===s&&this.renderCanvas&&this.renderCanvas():t.call(this)}if(k(t,s,r),"translate"===s)for(let e of["column","arearange","columnrange","heatmap","treemap"])i[e]&&k(i[e].prototype,s,r)})(n,s,t)),t.forEach(e=>{let t=o[e];t&&(t.boostThreshold=5e3,t.boostData=[],s[e].prototype.fillOpacity=!0)}),r){let{area:e,areaspline:t,bubble:i,column:r,heatmap:o,scatter:n,treemap:a}=s;if(e&&A(e.prototype,{fill:!0,fillOpacity:!0,sampling:!0}),t&&A(t.prototype,{fill:!0,fillOpacity:!0,sampling:!0}),i){let e=i.prototype;delete e.buildKDTree,k(e,"markerAttribs",function(e){return!this.boosted&&e.apply(this,[].slice.call(arguments,1))})}r&&A(r.prototype,{fill:!0,sampling:!0}),n&&(n.prototype.fill=!0),[o,a].forEach(e=>{e&&k(e.prototype,"drawPoints",O)})}}return i},destroyGraphics:w,eachAsync:R,getPoint:G}}),i(t,"Extensions/Boost/NamedColors.js",[],function(){return{defaultHTMLColorMap:{aliceblue:"#f0f8ff",antiquewhite:"#faebd7",aqua:"#00ffff",aquamarine:"#7fffd4",azure:"#f0ffff",beige:"#f5f5dc",bisque:"#ffe4c4",blanchedalmond:"#ffebcd",blue:"#0000ff",blueviolet:"#8a2be2",brown:"#a52a2a",burlywood:"#deb887",cadetblue:"#5f9ea0",chartreuse:"#7fff00",chocolate:"#d2691e",coral:"#ff7f50",cornflowerblue:"#6495ed",cornsilk:"#fff8dc",crimson:"#dc143c",cyan:"#00ffff",darkblue:"#00008b",darkcyan:"#008b8b",darkgoldenrod:"#b8860b",darkgray:"#a9a9a9",darkgreen:"#006400",darkkhaki:"#bdb76b",darkmagenta:"#8b008b",darkolivegreen:"#556b2f",darkorange:"#ff8c00",darkorchid:"#9932cc",darkred:"#8b0000",darksalmon:"#e9967a",darkseagreen:"#8fbc8f",darkslateblue:"#483d8b",darkslategray:"#2f4f4f",darkturquoise:"#00ced1",darkviolet:"#9400d3",deeppink:"#ff1493",deepskyblue:"#00bfff",dimgray:"#696969",dodgerblue:"#1e90ff",feldspar:"#d19275",firebrick:"#b22222",floralwhite:"#fffaf0",forestgreen:"#228b22",fuchsia:"#ff00ff",gainsboro:"#dcdcdc",ghostwhite:"#f8f8ff",gold:"#ffd700",goldenrod:"#daa520",gray:"#808080",grey:"#808080",green:"#008000",greenyellow:"#adff2f",honeydew:"#f0fff0",hotpink:"#ff69b4",indianred:"#cd5c5c",indigo:"#4b0082",ivory:"#fffff0",khaki:"#f0e68c",lavender:"#e6e6fa",lavenderblush:"#fff0f5",lawngreen:"#7cfc00",lemonchiffon:"#fffacd",lightblue:"#add8e6",lightcoral:"#f08080",lightcyan:"#e0ffff",lightgoldenrodyellow:"#fafad2",lightgrey:"#d3d3d3",lightgreen:"#90ee90",lightpink:"#ffb6c1",lightsalmon:"#ffa07a",lightseagreen:"#20b2aa",lightskyblue:"#87cefa",lightslateblue:"#8470ff",lightslategray:"#778899",lightsteelblue:"#b0c4de",lightyellow:"#ffffe0",lime:"#00ff00",limegreen:"#32cd32",linen:"#faf0e6",magenta:"#ff00ff",maroon:"#800000",mediumaquamarine:"#66cdaa",mediumblue:"#0000cd",mediumorchid:"#ba55d3",mediumpurple:"#9370d8",mediumseagreen:"#3cb371",mediumslateblue:"#7b68ee",mediumspringgreen:"#00fa9a",mediumturquoise:"#48d1cc",mediumvioletred:"#c71585",midnightblue:"#191970",mintcream:"#f5fffa",mistyrose:"#ffe4e1",moccasin:"#ffe4b5",navajowhite:"#ffdead",navy:"#000080",oldlace:"#fdf5e6",olive:"#808000",olivedrab:"#6b8e23",orange:"#ffa500",orangered:"#ff4500",orchid:"#da70d6",palegoldenrod:"#eee8aa",palegreen:"#98fb98",paleturquoise:"#afeeee",palevioletred:"#d87093",papayawhip:"#ffefd5",peachpuff:"#ffdab9",peru:"#cd853f",pink:"#ffc0cb",plum:"#dda0dd",powderblue:"#b0e0e6",purple:"#800080",red:"#ff0000",rosybrown:"#bc8f8f",royalblue:"#4169e1",saddlebrown:"#8b4513",salmon:"#fa8072",sandybrown:"#f4a460",seagreen:"#2e8b57",seashell:"#fff5ee",sienna:"#a0522d",silver:"#c0c0c0",skyblue:"#87ceeb",slateblue:"#6a5acd",slategray:"#708090",snow:"#fffafa",springgreen:"#00ff7f",steelblue:"#4682b4",tan:"#d2b48c",teal:"#008080",thistle:"#d8bfd8",tomato:"#ff6347",turquoise:"#40e0d0",violet:"#ee82ee",violetred:"#d02090",wheat:"#f5deb3",whitesmoke:"#f5f5f5",yellow:"#ffff00",yellowgreen:"#9acd32"}}}),i(t,"Extensions/Boost/Boost.js",[t["Extensions/Boost/BoostChart.js"],t["Extensions/Boost/BoostSeries.js"],t["Core/Globals.js"],t["Extensions/Boost/NamedColors.js"],t["Core/Utilities.js"]],function(e,t,i,s,r){let{doc:o,win:n}=i,{addEvent:a,error:l}=r,h=["webgl","experimental-webgl","moz-webgl","webkit-3d"];function d(){let e;if(void 0!==n.WebGLRenderingContext){e=o.createElement("canvas");for(let t=0;t<h.length;++t)try{if(null!=e.getContext(h[t]))return!0}catch(e){}}return!1}return{compose:function(r,o,n,h,f){let u=d();u||(void 0!==i.initCanvasBoost?i.initCanvasBoost():l(26)),f&&!f.names.lightgoldenrodyellow&&(f.names={...f.names,...s.defaultHTMLColorMap}),e.compose(r,u),t.compose(n,h,u),a(o,"setExtremes",function(e){for(let t of[this.chart,...this.series].map(e=>e.renderTarget).filter(Boolean)){let{horiz:i,pos:s}=this,r=i?"scaleX":"scaleY",o=i?"translateX":"translateY",n=t?.[r]??1,a=1,l=0,h=1,d="none";this.isPanning&&(a=(e.scale??1)*n,l=(t?.[o]||0)-a*(e.move||0)+n*s-a*s,h=.7,d="blur(3px)"),t?.attr({[r]:a,[o]:l}).css({transition:"250ms filter, 250ms opacity",filter:d,opacity:h})}})},hasWebGLSupport:d}}),i(t,"masters/modules/boost.src.js",[t["Core/Globals.js"],t["Extensions/Boost/Boost.js"]],function(e,t){return e.hasWebGLSupport=t.hasWebGLSupport,t.compose(e.Chart,e.Axis,e.Series,e.seriesTypes,e.Color),e})});
11
+ * */function(e){"object"==typeof module&&module.exports?(e.default=e,module.exports=e):"function"==typeof define&&define.amd?define("highcharts/modules/boost",["highcharts"],function(t){return e(t),e.Highcharts=t,e}):e("undefined"!=typeof Highcharts?Highcharts:void 0)}(function(e){"use strict";var t=e?e._modules:{};function i(t,i,s,r){t.hasOwnProperty(i)||(t[i]=r.apply(null,s),"function"==typeof CustomEvent&&e.win.dispatchEvent(new CustomEvent("HighchartsModuleLoaded",{detail:{path:i,module:t[i]}})))}i(t,"Extensions/Boost/Boostables.js",[],function(){return["area","areaspline","arearange","column","columnrange","bar","line","scatter","heatmap","bubble","treemap"]}),i(t,"Extensions/Boost/BoostableMap.js",[t["Extensions/Boost/Boostables.js"]],function(e){let t={};return e.forEach(e=>{t[e]=!0}),t}),i(t,"Extensions/Boost/BoostChart.js",[t["Extensions/Boost/BoostableMap.js"],t["Core/Globals.js"],t["Core/Utilities.js"]],function(e,t,i){let{composed:s}=t,{addEvent:r,pick:o,pushUnique:n}=i;function a(t){let i=t.series,s=t.boost=t.boost||{},r=t.options.boost||{},n=o(r.seriesThreshold,50);if(i.length>=n)return!0;if(1===i.length)return!1;let a=r.allowForce;if(void 0===a){for(let e of(a=!0,t.xAxis))if(o(e.min,-1/0)>o(e.dataMin,-1/0)||o(e.max,1/0)<o(e.dataMax,1/0)){a=!1;break}}if(void 0!==s.forceChartBoost){if(a)return s.forceChartBoost;s.forceChartBoost=void 0}let l=0,h=0,d;for(let t of i)0!==(d=t.options).boostThreshold&&!1!==t.visible&&"heatmap"!==t.type&&(e[t.type]&&++l,function(...e){let t=-Number.MAX_VALUE;return e.forEach(function(e){if(null!=e&&void 0!==e.length&&e.length>0)return t=e.length,!0}),t}(t.processedXData,d.data,t.points)>=(d.boostThreshold||Number.MAX_VALUE)&&++h);return s.forceChartBoost=a&&(l===i.length&&h===l||h>5),s.forceChartBoost}function l(e){function t(){e.boost&&e.boost.wgl&&a(e)&&e.boost.wgl.render(e)}r(e,"predraw",function(){e.boost=e.boost||{},e.boost.forceChartBoost=void 0,e.boosted=!1,e.axes.some(e=>e.isPanning)||e.boost.clear?.(),e.boost.canvas&&e.boost.wgl&&a(e)&&e.boost.wgl.allocateBuffer(e),e.boost.markerGroup&&e.xAxis&&e.xAxis.length>0&&e.yAxis&&e.yAxis.length>0&&e.boost.markerGroup.translate(e.xAxis[0].pos,e.yAxis[0].pos)}),r(e,"load",t,{order:-1}),r(e,"redraw",t);let i=-1,s=-1;r(e.pointer,"afterGetHoverData",t=>{let r=t.hoverPoint?.series;if(e.boost=e.boost||{},e.boost.markerGroup&&r){let t=e.inverted?r.yAxis:r.xAxis,o=e.inverted?r.xAxis:r.yAxis;(t&&t.pos!==i||o&&o.pos!==s)&&(e.series.forEach(e=>{e.halo?.hide()}),e.boost.markerGroup.translate(t.pos,o.pos),i=t.pos,s=o.pos)}})}return{compose:function(e,t){return t&&n(s,"Boost.Chart")&&e.prototype.callbacks.push(l),e},getBoostClipRect:function(e,t){let i=e.navigator,s={x:e.plotLeft,y:e.plotTop,width:e.plotWidth,height:e.plotHeight};if(i&&e.inverted?(s.width+=i.top+i.height,i.opposite||(s.x=i.left)):i&&!e.inverted&&(s.height=i.top+i.height-e.plotTop),t.getClipBox){let{xAxis:i,yAxis:r}=t;if(s=t.getClipBox(),e.inverted){let e=s.width;s.width=s.height,s.height=e,s.x=r.pos,s.y=i.pos}else s.x=i.pos,s.y=r.pos}if(t===e){let t=e.inverted?e.xAxis:e.yAxis;t.length<=1&&(s.y=Math.min(t[0].pos,s.y),s.height=t[0].pos-e.plotTop+t[0].len)}return s},isChartSeriesBoosting:a}}),i(t,"Extensions/Boost/WGLDrawMode.js",[],function(){return{area:"LINES",arearange:"LINES",areaspline:"LINES",column:"LINES",columnrange:"LINES",bar:"LINES",line:"LINE_STRIP",scatter:"POINTS",heatmap:"TRIANGLES",treemap:"TRIANGLES",bubble:"POINTS"}}),i(t,"Extensions/Boost/WGLShader.js",[t["Core/Utilities.js"]],function(e){let{clamp:t,error:i,pick:s}=e;return class{constructor(e){if(this.errors=[],this.uLocations={},this.gl=e,e&&!this.createShader())return}bind(){this.gl&&this.shaderProgram&&this.gl.useProgram(this.shaderProgram)}createShader(){let e=this.stringToProgram("#version 100\n#define LN10 2.302585092994046\nprecision highp float;\nattribute vec4 aVertexPosition;\nattribute vec4 aColor;\nvarying highp vec2 position;\nvarying highp vec4 vColor;\nuniform mat4 uPMatrix;\nuniform float pSize;\nuniform float translatedThreshold;\nuniform bool hasThreshold;\nuniform bool skipTranslation;\nuniform float xAxisTrans;\nuniform float xAxisMin;\nuniform float xAxisMinPad;\nuniform float xAxisPointRange;\nuniform float xAxisLen;\nuniform bool xAxisPostTranslate;\nuniform float xAxisOrdinalSlope;\nuniform float xAxisOrdinalOffset;\nuniform float xAxisPos;\nuniform bool xAxisCVSCoord;\nuniform bool xAxisIsLog;\nuniform bool xAxisReversed;\nuniform float yAxisTrans;\nuniform float yAxisMin;\nuniform float yAxisMinPad;\nuniform float yAxisPointRange;\nuniform float yAxisLen;\nuniform bool yAxisPostTranslate;\nuniform float yAxisOrdinalSlope;\nuniform float yAxisOrdinalOffset;\nuniform float yAxisPos;\nuniform bool yAxisCVSCoord;\nuniform bool yAxisIsLog;\nuniform bool yAxisReversed;\nuniform bool isBubble;\nuniform bool bubbleSizeByArea;\nuniform float bubbleZMin;\nuniform float bubbleZMax;\nuniform float bubbleZThreshold;\nuniform float bubbleMinSize;\nuniform float bubbleMaxSize;\nuniform bool bubbleSizeAbs;\nuniform bool isInverted;\nfloat bubbleRadius(){\nfloat value = aVertexPosition.w;\nfloat zMax = bubbleZMax;\nfloat zMin = bubbleZMin;\nfloat radius = 0.0;\nfloat pos = 0.0;\nfloat zRange = zMax - zMin;\nif (bubbleSizeAbs){\nvalue = value - bubbleZThreshold;\nzMax = max(zMax - bubbleZThreshold, zMin - bubbleZThreshold);\nzMin = 0.0;\n}\nif (value < zMin){\nradius = bubbleZMin / 2.0 - 1.0;\n} else {\npos = zRange > 0.0 ? (value - zMin) / zRange : 0.5;\nif (bubbleSizeByArea && pos > 0.0){\npos = sqrt(pos);\n}\nradius = ceil(bubbleMinSize + pos * (bubbleMaxSize - bubbleMinSize)) / 2.0;\n}\nreturn radius * 2.0;\n}\nfloat translate(float val,\nfloat pointPlacement,\nfloat localA,\nfloat localMin,\nfloat minPixelPadding,\nfloat pointRange,\nfloat len,\nbool cvsCoord,\nbool isLog,\nbool reversed\n){\nfloat sign = 1.0;\nfloat cvsOffset = 0.0;\nif (cvsCoord) {\nsign *= -1.0;\ncvsOffset = len;\n}\nif (isLog) {\nval = log(val) / LN10;\n}\nif (reversed) {\nsign *= -1.0;\ncvsOffset -= sign * len;\n}\nreturn sign * (val - localMin) * localA + cvsOffset + \n(sign * minPixelPadding);\n}\nfloat xToPixels(float value) {\nif (skipTranslation){\nreturn value;// + xAxisPos;\n}\nreturn translate(value, 0.0, xAxisTrans, xAxisMin, xAxisMinPad, xAxisPointRange, xAxisLen, xAxisCVSCoord, xAxisIsLog, xAxisReversed);// + xAxisPos;\n}\nfloat yToPixels(float value, float checkTreshold) {\nfloat v;\nif (skipTranslation){\nv = value;// + yAxisPos;\n} else {\nv = translate(value, 0.0, yAxisTrans, yAxisMin, yAxisMinPad, yAxisPointRange, yAxisLen, yAxisCVSCoord, yAxisIsLog, yAxisReversed);// + yAxisPos;\nif (v > yAxisLen) {\nv = yAxisLen;\n}\n}\nif (checkTreshold > 0.0 && hasThreshold) {\nv = min(v, translatedThreshold);\n}\nreturn v;\n}\nvoid main(void) {\nif (isBubble){\ngl_PointSize = bubbleRadius();\n} else {\ngl_PointSize = pSize;\n}\nvColor = aColor;\nif (skipTranslation && isInverted) {\ngl_Position = uPMatrix * vec4(aVertexPosition.y + yAxisPos, aVertexPosition.x + xAxisPos, 0.0, 1.0);\n} else if (isInverted) {\ngl_Position = uPMatrix * vec4(yToPixels(aVertexPosition.y, aVertexPosition.z) + yAxisPos, xToPixels(aVertexPosition.x) + xAxisPos, 0.0, 1.0);\n} else {\ngl_Position = uPMatrix * vec4(xToPixels(aVertexPosition.x) + xAxisPos, yToPixels(aVertexPosition.y, aVertexPosition.z) + yAxisPos, 0.0, 1.0);\n}\n}","vertex"),t=this.stringToProgram("precision highp float;\nuniform vec4 fillColor;\nvarying highp vec2 position;\nvarying highp vec4 vColor;\nuniform sampler2D uSampler;\nuniform bool isCircle;\nuniform bool hasColor;\nvoid main(void) {\nvec4 col = fillColor;\nvec4 tcol = texture2D(uSampler, gl_PointCoord.st);\nif (hasColor) {\ncol = vColor;\n}\nif (isCircle) {\ncol *= tcol;\nif (tcol.r < 0.0) {\ndiscard;\n} else {\ngl_FragColor = col;\n}\n} else {\ngl_FragColor = col;\n}\n}","fragment"),i=e=>this.gl.getUniformLocation(this.shaderProgram,e);return e&&t?(this.shaderProgram=this.gl.createProgram(),this.gl.attachShader(this.shaderProgram,e),this.gl.attachShader(this.shaderProgram,t),this.gl.linkProgram(this.shaderProgram),this.gl.getProgramParameter(this.shaderProgram,this.gl.LINK_STATUS))?(this.gl.useProgram(this.shaderProgram),this.gl.bindAttribLocation(this.shaderProgram,0,"aVertexPosition"),this.pUniform=i("uPMatrix"),this.psUniform=i("pSize"),this.fcUniform=i("fillColor"),this.isBubbleUniform=i("isBubble"),this.bubbleSizeAbsUniform=i("bubbleSizeAbs"),this.bubbleSizeAreaUniform=i("bubbleSizeByArea"),this.uSamplerUniform=i("uSampler"),this.skipTranslationUniform=i("skipTranslation"),this.isCircleUniform=i("isCircle"),this.isInverted=i("isInverted"),!0):(this.errors.push(this.gl.getProgramInfoLog(this.shaderProgram)),this.handleErrors(),this.shaderProgram=!1,!1):(this.shaderProgram=!1,this.handleErrors(),!1)}handleErrors(){this.errors.length&&i("[highcharts boost] shader error - "+this.errors.join("\n"))}stringToProgram(e,t){let i=this.gl.createShader("vertex"===t?this.gl.VERTEX_SHADER:this.gl.FRAGMENT_SHADER);return(this.gl.shaderSource(i,e),this.gl.compileShader(i),this.gl.getShaderParameter(i,this.gl.COMPILE_STATUS))?i:(this.errors.push("when compiling "+t+" shader:\n"+this.gl.getShaderInfoLog(i)),!1)}destroy(){this.gl&&this.shaderProgram&&(this.gl.deleteProgram(this.shaderProgram),this.shaderProgram=!1)}fillColorUniform(){return this.fcUniform}getProgram(){return this.shaderProgram}pointSizeUniform(){return this.psUniform}perspectiveUniform(){return this.pUniform}reset(){this.gl&&this.shaderProgram&&(this.gl.uniform1i(this.isBubbleUniform,0),this.gl.uniform1i(this.isCircleUniform,0))}setBubbleUniforms(e,i,r,o=1){let n=e.options,a=Number.MAX_VALUE,l=-Number.MAX_VALUE;if(this.gl&&this.shaderProgram&&e.is("bubble")){let h=e.getPxExtremes();a=s(n.zMin,t(i,!1===n.displayNegative?n.zThreshold:-Number.MAX_VALUE,a)),l=s(n.zMax,Math.max(l,r)),this.gl.uniform1i(this.isBubbleUniform,1),this.gl.uniform1i(this.isCircleUniform,1),this.gl.uniform1i(this.bubbleSizeAreaUniform,"width"!==e.options.sizeBy),this.gl.uniform1i(this.bubbleSizeAbsUniform,e.options.sizeByAbsoluteValue),this.setUniform("bubbleMinSize",h.minPxSize*o),this.setUniform("bubbleMaxSize",h.maxPxSize*o),this.setUniform("bubbleZMin",a),this.setUniform("bubbleZMax",l),this.setUniform("bubbleZThreshold",e.options.zThreshold)}}setColor(e){this.gl&&this.shaderProgram&&this.gl.uniform4f(this.fcUniform,e[0]/255,e[1]/255,e[2]/255,e[3])}setDrawAsCircle(e){this.gl&&this.shaderProgram&&this.gl.uniform1i(this.isCircleUniform,e?1:0)}setInverted(e){this.gl&&this.shaderProgram&&this.gl.uniform1i(this.isInverted,e)}setPMatrix(e){this.gl&&this.shaderProgram&&this.gl.uniformMatrix4fv(this.pUniform,!1,e)}setPointSize(e){this.gl&&this.shaderProgram&&this.gl.uniform1f(this.psUniform,e)}setSkipTranslation(e){this.gl&&this.shaderProgram&&this.gl.uniform1i(this.skipTranslationUniform,!0===e?1:0)}setTexture(e){this.gl&&this.shaderProgram&&this.gl.uniform1i(this.uSamplerUniform,e)}setUniform(e,t){if(this.gl&&this.shaderProgram){let i=this.uLocations[e]=this.uLocations[e]||this.gl.getUniformLocation(this.shaderProgram,e);this.gl.uniform1f(i,t)}}}}),i(t,"Extensions/Boost/WGLVertexBuffer.js",[],function(){return class{constructor(e,t,i){this.buffer=!1,this.iterator=0,this.preAllocated=!1,this.vertAttribute=!1,this.components=i||2,this.dataComponents=i,this.gl=e,this.shader=t}allocate(e){this.iterator=-1,this.preAllocated=new Float32Array(4*e)}bind(){if(!this.buffer)return!1;this.gl.vertexAttribPointer(this.vertAttribute,this.components,this.gl.FLOAT,!1,0,0)}build(e,t,i){let s;return(this.data=e||[],this.data&&0!==this.data.length||this.preAllocated)?(this.components=i||this.components,this.buffer&&this.gl.deleteBuffer(this.buffer),this.preAllocated||(s=new Float32Array(this.data)),this.buffer=this.gl.createBuffer(),this.gl.bindBuffer(this.gl.ARRAY_BUFFER,this.buffer),this.gl.bufferData(this.gl.ARRAY_BUFFER,this.preAllocated||s,this.gl.STATIC_DRAW),this.vertAttribute=this.gl.getAttribLocation(this.shader.getProgram(),t),this.gl.enableVertexAttribArray(this.vertAttribute),s=!1,!0):(this.destroy(),!1)}destroy(){this.buffer&&(this.gl.deleteBuffer(this.buffer),this.buffer=!1,this.vertAttribute=!1),this.iterator=0,this.components=this.dataComponents||2,this.data=[]}push(e,t,i,s){this.preAllocated&&(this.preAllocated[++this.iterator]=e,this.preAllocated[++this.iterator]=t,this.preAllocated[++this.iterator]=i,this.preAllocated[++this.iterator]=s)}render(e,t,i){let s=this.preAllocated?this.preAllocated.length:this.data.length;return!!this.buffer&&!!s&&((!e||e>s||e<0)&&(e=0),(!t||t>s)&&(t=s),!(e>=t)&&(i=i||"POINTS",this.gl.drawArrays(this.gl[i],e/this.components,(t-e)/this.components),!0))}}}),i(t,"Extensions/Boost/WGLRenderer.js",[t["Core/Color/Color.js"],t["Core/Globals.js"],t["Core/Utilities.js"],t["Extensions/Boost/WGLDrawMode.js"],t["Extensions/Boost/WGLShader.js"],t["Extensions/Boost/WGLVertexBuffer.js"]],function(e,t,i,s,r,o){let{parse:n}=e,{doc:a,win:l}=t,{isNumber:h,isObject:d,merge:f,objectEach:u,pick:g}=i,c={column:!0,columnrange:!0,bar:!0,area:!0,areaspline:!0,arearange:!0},m={scatter:!0,bubble:!0},p=["webgl","experimental-webgl","moz-webgl","webkit-3d"];class b{static orthoMatrix(e,t){return[2/e,0,0,0,0,-(2/t),0,0,0,0,-2,0,-1,1,-1,1]}static seriesPointCount(e){let t,i,s;return e.boosted?(t=!!e.options.stacking,i=e.xData||e.options.xData||e.processedXData,s=(t?e.data:i||e.options.data).length,"treemap"===e.type?s*=12:"heatmap"===e.type?s*=6:c[e.type]&&(s*=2),s):0}constructor(e){this.data=[],this.height=0,this.isInited=!1,this.markerData=[],this.series=[],this.textureHandles={},this.width=0,this.postRenderCallback=e,this.settings={pointSize:1,lineWidth:1,fillColor:"#AA00AA",useAlpha:!0,usePreallocated:!1,useGPUTranslations:!1,debug:{timeRendering:!1,timeSeriesProcessing:!1,timeSetup:!1,timeBufferCopy:!1,timeKDTree:!1,showSkipSummary:!1}}}getPixelRatio(){return this.settings.pixelRatio||l.devicePixelRatio||1}setOptions(e){"pixelRatio"in e||(e.pixelRatio=1),f(!0,this.settings,e)}allocateBuffer(e){let t=this.vbuffer,i=0;this.settings.usePreallocated&&(e.series.forEach(e=>{e.boosted&&(i+=b.seriesPointCount(e))}),t&&t.allocate(i))}allocateBufferForSingleSeries(e){let t=this.vbuffer,i=0;this.settings.usePreallocated&&(e.boosted&&(i=b.seriesPointCount(e)),t&&t.allocate(i))}clear(){let e=this.gl;e&&e.clear(e.COLOR_BUFFER_BIT|e.DEPTH_BUFFER_BIT)}pushSeriesData(e,t){let i=this.data,s=this.settings,r=this.vbuffer,o=e.pointArrayMap&&"low,high"===e.pointArrayMap.join(","),{chart:a,options:l,sorted:h,xAxis:f,yAxis:u}=e,g=!!l.stacking,m=l.data,p=e.xAxis.getExtremes(),b=p.min-(e.xAxis.minPointOffset||0),x=p.max+(e.xAxis.minPointOffset||0),A=e.yAxis.getExtremes(),y=A.min-(e.yAxis.minPointOffset||0),P=A.max+(e.yAxis.minPointOffset||0),v=e.xData||l.xData||e.processedXData,T=e.yData||l.yData||e.processedYData,E=e.zData||l.zData||e.processedZData,k=!v||0===v.length,S=l.connectNulls,M=e.points||!1,C=g?e.data:v||m,U={x:Number.MAX_VALUE,y:0},w={x:-Number.MAX_VALUE,y:0},R=void 0===a.index,B=c[e.type],D=l.zoneAxis||"y",L=l.zones||!1,z=l.threshold,G=this.getPixelRatio(),_=e.chart.plotWidth,N=!1,I=!1,O,X,V=0,j=!1,F,W,H,Y,q=-1,Z=!1,K=!1,Q,J=!1,$=!1,ee=!1,et=!1,ei=!0,es=!0,er,eo=!1,en=!1,ea=0;if(l.boostData&&l.boostData.length>0)return;l.gapSize&&(en="value"!==l.gapUnit?l.gapSize*e.closestPointRange:l.gapSize),L&&(er=[],L.forEach((e,t)=>{if(e.color){let i=n(e.color).rgba;i[0]/=255,i[1]/=255,i[2]/=255,er[t]=i,eo||void 0!==e.value||(eo=i)}}),eo||(eo=n(e.pointAttribs&&e.pointAttribs().fill||e.color).rgba,eo[0]/=255,eo[1]/=255,eo[2]/=255)),a.inverted&&(_=e.chart.plotHeight),e.closestPointRangePx=Number.MAX_VALUE;let el=e=>{e&&(t.colorData.push(e[0]),t.colorData.push(e[1]),t.colorData.push(e[2]),t.colorData.push(e[3]))},eh=(e,o,n,a=1,l)=>{el(l),1!==G&&(!s.useGPUTranslations||t.skipTranslation)&&(e*=G,o*=G,a*=G),s.usePreallocated&&r?(r.push(e,o,n?1:0,a),ea+=4):(i.push(e),i.push(o),i.push(n?G:0),i.push(a))},ed=()=>{t.segments.length&&(t.segments[t.segments.length-1].to=i.length||ea)},ef=()=>{t.segments.length&&t.segments[t.segments.length-1].from===(i.length||ea)||(ed(),t.segments.push({from:i.length||ea}))},eu=(e,t,i,s,r)=>{el(r),eh(e+i,t),el(r),eh(e,t),el(r),eh(e,t+s),el(r),eh(e,t+s),el(r),eh(e+i,t+s),el(r),eh(e+i,t)};if(ef(),M&&M.length>0){t.skipTranslation=!0,t.drawMode="TRIANGLES",M[0].node&&M[0].node.levelDynamic&&M.sort((e,t)=>{if(e.node){if(e.node.levelDynamic>t.node.levelDynamic)return 1;if(e.node.levelDynamic<t.node.levelDynamic)return -1}return 0}),M.forEach(t=>{let i,s;let r=t.plotY;if(void 0!==r&&!isNaN(r)&&null!==t.y&&t.shapeArgs){let{x:r=0,y:o=0,width:l=0,height:h=0}=t.shapeArgs;i=(s=a.styledMode?t.series.colorAttribs(t):s=t.series.pointAttribs(t))["stroke-width"]||0,ee=n(s.fill).rgba,ee[0]/=255,ee[1]/=255,ee[2]/=255,e.is("treemap")&&(i=i||1,X=n(s.stroke).rgba,X[0]/=255,X[1]/=255,X[2]/=255,eu(r,o,l,h,X),i/=2),e.is("heatmap")&&a.inverted&&(r=f.len-r,o=u.len-o,l=-l,h=-h),eu(r+i,o+i,l-2*i,h-2*i,ee)}}),ed();return}for(;q<C.length-1;){if(void 0===(H=C[++q]))continue;if(R)break;let i=m&&m[q];if(!k&&d(i,!0)&&i.color&&(ee=n(i.color).rgba,ee[0]/=255,ee[1]/=255,ee[2]/=255),k?(F=H[0],W=H[1],C[q+1]&&(K=C[q+1][0]),C[q-1]&&(Z=C[q-1][0]),H.length>=3&&(Y=H[2],H[2]>t.zMax&&(t.zMax=H[2]),H[2]<t.zMin&&(t.zMin=H[2]))):(F=H,W=T[q],C[q+1]&&(K=C[q+1]),C[q-1]&&(Z=C[q-1]),E&&E.length&&(Y=E[q],E[q]>t.zMax&&(t.zMax=E[q]),E[q]<t.zMin&&(t.zMin=E[q]))),!S&&(null===F||null===W)){ef();continue}if(K&&K>=b&&K<=x&&(J=!0),Z&&Z>=b&&Z<=x&&($=!0),o?(k&&(W=H.slice(1,3)),Q=W[0],W=W[1]):g&&(F=H.x,Q=(W=H.stackY)-H.y),null!=y&&null!=P&&(ei=W>=y&&W<=P),F>x&&w.x<x&&(w.x=F,w.y=W),F<b&&U.x>b&&(U.x=F,U.y=W),null!==W||!S){if(null===W||!ei&&!J&&!$){ef();continue}if(h&&(K>=b||F>=b)&&(Z<=x||F<=x)&&(et=!0),et||J||$){if(en&&F-Z>en&&ef(),L){let e;L.some((t,i)=>{let s=L[i-1];return"x"===D?void 0!==t.value&&F<=t.value&&(er[i]&&(!s||F>=s.value)&&(e=er[i]),!0):void 0!==t.value&&W<=t.value&&(er[i]&&(!s||W>=s.value)&&(e=er[i]),!0)}),ee=e||eo||ee}if(s.useGPUTranslations||(t.skipTranslation=!0,F=f.toPixels(F,!0),W=u.toPixels(W,!0),!(F>_)||"POINTS"!==t.drawMode)){if(t.hasMarkers&&et&&!1!==N&&(e.closestPointRangePx=Math.min(e.closestPointRangePx,Math.abs(F-N))),!s.useGPUTranslations&&!s.usePreallocated&&N&&1>Math.abs(F-N)&&I&&1>Math.abs(W-I)){s.debug.showSkipSummary&&++V;continue}B&&(O=Q,(!1===Q||void 0===Q)&&(O=W<0?W:0),(o||g)&&!u.logarithmic||(O=Math.max(null===z?y:z,y)),s.useGPUTranslations||(O=u.toPixels(O,!0)),eh(F,O,0,0,ee)),l.step&&!es&&eh(F,I,0,2,ee),eh(F,W,0,"bubble"===e.type?Y||1:2,ee),N=F,I=W,j=!0,es=!1}}}}s.debug.showSkipSummary&&console.log("skipped points:",V);let eg=(e,i)=>{if(s.useGPUTranslations||(t.skipTranslation=!0,e.x=f.toPixels(e.x,!0),e.y=u.toPixels(e.y,!0)),i){this.data=[e.x,e.y,0,2].concat(this.data);return}eh(e.x,e.y,0,2)};!j&&!1!==S&&"line_strip"===e.drawMode&&(U.x<Number.MAX_VALUE&&eg(U,!0),w.x>-Number.MAX_VALUE&&eg(w)),ed()}pushSeries(e){let t=this.markerData,i=this.series,r=this.settings;i.length>0&&i[i.length-1].hasMarkers&&(i[i.length-1].markerTo=t.length),r.debug.timeSeriesProcessing&&console.time("building "+e.type+" series");let o={segments:[],markerFrom:t.length,colorData:[],series:e,zMin:Number.MAX_VALUE,zMax:-Number.MAX_VALUE,hasMarkers:!!e.options.marker&&!1!==e.options.marker.enabled,showMarkers:!0,drawMode:s[e.type]||"LINE_STRIP"};e.index>=i.length?i.push(o):i[e.index]=o,this.pushSeriesData(e,o),r.debug.timeSeriesProcessing&&console.timeEnd("building "+e.type+" series")}flush(){let e=this.vbuffer;this.data=[],this.markerData=[],this.series=[],e&&e.destroy()}setXAxis(e){let t=this.shader;if(!t)return;let i=this.getPixelRatio();t.setUniform("xAxisTrans",e.transA*i),t.setUniform("xAxisMin",e.min),t.setUniform("xAxisMinPad",e.minPixelPadding*i),t.setUniform("xAxisPointRange",e.pointRange),t.setUniform("xAxisLen",e.len*i),t.setUniform("xAxisPos",e.pos*i),t.setUniform("xAxisCVSCoord",!e.horiz),t.setUniform("xAxisIsLog",!!e.logarithmic),t.setUniform("xAxisReversed",!!e.reversed)}setYAxis(e){let t=this.shader;if(!t)return;let i=this.getPixelRatio();t.setUniform("yAxisTrans",e.transA*i),t.setUniform("yAxisMin",e.min),t.setUniform("yAxisMinPad",e.minPixelPadding*i),t.setUniform("yAxisPointRange",e.pointRange),t.setUniform("yAxisLen",e.len*i),t.setUniform("yAxisPos",e.pos*i),t.setUniform("yAxisCVSCoord",!e.horiz),t.setUniform("yAxisIsLog",!!e.logarithmic),t.setUniform("yAxisReversed",!!e.reversed)}setThreshold(e,t){let i=this.shader;i&&(i.setUniform("hasThreshold",e),i.setUniform("translatedThreshold",t))}renderChart(i){let s=this.gl,r=this.settings,a=this.shader,l=this.vbuffer,d=this.getPixelRatio();if(!i)return!1;this.width=i.chartWidth*d,this.height=i.chartHeight*d;let f=this.height,u=this.width;if(!s||!a||!u||!f)return!1;r.debug.timeRendering&&console.time("gl rendering"),s.canvas.width=u,s.canvas.height=f,a.bind(),s.viewport(0,0,u,f),a.setPMatrix(b.orthoMatrix(u,f)),r.lineWidth>1&&!t.isMS&&s.lineWidth(r.lineWidth),l&&(l.build(this.data,"aVertexPosition",4),l.bind()),a.setInverted(i.inverted),this.series.forEach((t,f)=>{let u=t.series.options,c=u.marker,p=void 0!==u.lineWidth?u.lineWidth:1,b=u.threshold,x=h(b),A=t.series.yAxis.getThreshold(b),y=g(u.marker?u.marker.enabled:null,!!t.series.xAxis.isRadial||null,t.series.closestPointRangePx>2*((u.marker?u.marker.radius:10)||10)),P=this.textureHandles[c&&c.symbol||t.series.symbol]||this.textureHandles.circle,v,T,E,k=[];if(0!==t.segments.length&&t.segments[0].from!==t.segments[0].to&&(P.isReady&&(s.bindTexture(s.TEXTURE_2D,P.handle),a.setTexture(P.handle)),i.styledMode?t.series.markerGroup===t.series.chart.boost?.markerGroup?(delete t.series.markerGroup,t.series.markerGroup=t.series.plotGroup("markerGroup","markers","visible",1,i.seriesGroup).addClass("highcharts-tracker"),E=t.series.markerGroup.getStyle("fill"),t.series.markerGroup.destroy(),t.series.markerGroup=t.series.chart.boost?.markerGroup):E=t.series.markerGroup?.getStyle("fill"):(E="POINTS"===t.drawMode&&t.series.pointAttribs&&t.series.pointAttribs().fill||t.series.color,u.colorByPoint&&(E=t.series.chart.options.colors[f])),t.series.fillOpacity&&u.fillOpacity&&(E=new e(E).setOpacity(g(u.fillOpacity,1)).get()),k=n(E).rgba,r.useAlpha||(k[3]=1),"add"===u.boostBlending?(s.blendFunc(s.SRC_ALPHA,s.ONE),s.blendEquation(s.FUNC_ADD)):"mult"===u.boostBlending||"multiply"===u.boostBlending?s.blendFunc(s.DST_COLOR,s.ZERO):"darken"===u.boostBlending?(s.blendFunc(s.ONE,s.ONE),s.blendEquation(s.FUNC_MIN)):s.blendFuncSeparate(s.SRC_ALPHA,s.ONE_MINUS_SRC_ALPHA,s.ONE,s.ONE_MINUS_SRC_ALPHA),a.reset(),t.colorData.length>0?(a.setUniform("hasColor",1),(T=new o(s,a)).build(Array(t.segments[0].from).concat(t.colorData),"aColor",4),T.bind()):(a.setUniform("hasColor",0),s.disableVertexAttribArray(s.getAttribLocation(a.getProgram(),"aColor"))),a.setColor(k),this.setXAxis(t.series.xAxis),this.setYAxis(t.series.yAxis),this.setThreshold(x,A),"POINTS"===t.drawMode&&a.setPointSize(2*g(u.marker&&u.marker.radius,.5)*d),a.setSkipTranslation(t.skipTranslation),"bubble"===t.series.type&&a.setBubbleUniforms(t.series,t.zMin,t.zMax,d),a.setDrawAsCircle(m[t.series.type]||!1),l)){if(p>0||"LINE_STRIP"!==t.drawMode)for(v=0;v<t.segments.length;v++)l.render(t.segments[v].from,t.segments[v].to,t.drawMode);if(t.hasMarkers&&y)for(a.setPointSize(2*g(u.marker&&u.marker.radius,5)*d),a.setDrawAsCircle(!0),v=0;v<t.segments.length;v++)l.render(t.segments[v].from,t.segments[v].to,"POINTS")}}),r.debug.timeRendering&&console.timeEnd("gl rendering"),this.postRenderCallback&&this.postRenderCallback(this),this.flush()}render(e){if(this.clear(),e.renderer.forExport)return this.renderChart(e);this.isInited?this.renderChart(e):setTimeout(()=>{this.render(e)},1)}setSize(e,t){let i=this.shader;i&&(this.width!==e||this.height!==t)&&(this.width=e,this.height=t,i.bind(),i.setPMatrix(b.orthoMatrix(e,t)))}init(e,t){let i=this.settings;if(this.isInited=!1,!e)return!1;i.debug.timeSetup&&console.time("gl setup");for(let t=0;t<p.length&&(this.gl=e.getContext(p[t],{}),!this.gl);++t);let s=this.gl;if(!s)return!1;t||this.flush(),s.enable(s.BLEND),s.blendFunc(s.SRC_ALPHA,s.ONE_MINUS_SRC_ALPHA),s.disable(s.DEPTH_TEST),s.depthFunc(s.LESS);let n=this.shader=new r(s);if(!n)return!1;this.vbuffer=new o(s,n);let l=(e,t)=>{let i={isReady:!1,texture:a.createElement("canvas"),handle:s.createTexture()},r=i.texture.getContext("2d");this.textureHandles[e]=i,i.texture.width=512,i.texture.height=512,r.mozImageSmoothingEnabled=!1,r.webkitImageSmoothingEnabled=!1,r.msImageSmoothingEnabled=!1,r.imageSmoothingEnabled=!1,r.strokeStyle="rgba(255, 255, 255, 0)",r.fillStyle="#FFF",t(r);try{s.activeTexture(s.TEXTURE0),s.bindTexture(s.TEXTURE_2D,i.handle),s.texImage2D(s.TEXTURE_2D,0,s.RGBA,s.RGBA,s.UNSIGNED_BYTE,i.texture),s.texParameteri(s.TEXTURE_2D,s.TEXTURE_WRAP_S,s.CLAMP_TO_EDGE),s.texParameteri(s.TEXTURE_2D,s.TEXTURE_WRAP_T,s.CLAMP_TO_EDGE),s.texParameteri(s.TEXTURE_2D,s.TEXTURE_MAG_FILTER,s.LINEAR),s.texParameteri(s.TEXTURE_2D,s.TEXTURE_MIN_FILTER,s.LINEAR),s.bindTexture(s.TEXTURE_2D,null),i.isReady=!0}catch(e){}};return l("circle",e=>{e.beginPath(),e.arc(256,256,256,0,2*Math.PI),e.stroke(),e.fill()}),l("square",e=>{e.fillRect(0,0,512,512)}),l("diamond",e=>{e.beginPath(),e.moveTo(256,0),e.lineTo(512,256),e.lineTo(256,512),e.lineTo(0,256),e.lineTo(256,0),e.fill()}),l("triangle",e=>{e.beginPath(),e.moveTo(0,512),e.lineTo(256,0),e.lineTo(512,512),e.lineTo(0,512),e.fill()}),l("triangle-down",e=>{e.beginPath(),e.moveTo(0,0),e.lineTo(256,512),e.lineTo(512,0),e.lineTo(0,0),e.fill()}),this.isInited=!0,i.debug.timeSetup&&console.timeEnd("gl setup"),!0}destroy(){let e=this.gl,t=this.shader,i=this.vbuffer;this.flush(),i&&i.destroy(),t&&t.destroy(),e&&(u(this.textureHandles,t=>{t.handle&&e.deleteTexture(t.handle)}),e.canvas.width=1,e.canvas.height=1)}}return b}),i(t,"Extensions/Boost/BoostSeries.js",[t["Extensions/Boost/BoostableMap.js"],t["Extensions/Boost/Boostables.js"],t["Extensions/Boost/BoostChart.js"],t["Core/Defaults.js"],t["Core/Globals.js"],t["Core/Utilities.js"],t["Extensions/Boost/WGLRenderer.js"]],function(e,t,i,s,r,o,n){let a,l;let{getBoostClipRect:h,isChartSeriesBoosting:d}=i,{getOptions:f}=s,{composed:u,doc:g,noop:c,win:m}=r,{addEvent:p,destroyObjectProperties:b,error:x,extend:A,fireEvent:y,isArray:P,isNumber:v,pick:T,pushUnique:E,wrap:k,defined:S}=o;function M(e,t){let i=t.boost;e&&i&&i.target&&i.canvas&&!d(t.chart)&&e.allocateBufferForSingleSeries(t)}function C(e){return T(e&&e.options&&e.options.boost&&e.options.boost.enabled,!0)}function U(e,t){let i=e.constructor,s=e.seriesGroup||t.group,r=e.chartWidth,o=e.chartHeight,a=e,f="undefined"!=typeof SVGForeignObjectElement,u=!1;d(e)?a=e:(a=t,u=!!(t.options.events?.click||t.options.point?.events?.click));let c=a.boost=a.boost||{};if(f=!1,l||(l=g.createElement("canvas")),!c.target&&(c.canvas=l,e.renderer.forExport||!f?(a.renderTarget=c.target=e.renderer.image("",0,0,r,o).addClass("highcharts-boost-canvas").add(s),c.clear=function(){c.target.attr({href:"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAQAAAC1HAwCAAAAC0lEQVR42mNkYAAAAAYAAjCB0C8AAAAASUVORK5CYII="})},c.copy=function(){c.resize(),c.target.attr({href:c.canvas.toDataURL("image/png")})}):(c.targetFo=e.renderer.createElement("foreignObject").add(s),a.renderTarget=c.target=g.createElement("canvas"),c.targetCtx=c.target.getContext("2d"),c.targetFo.element.appendChild(c.target),c.clear=function(){c.target.width=c.canvas.width,c.target.height=c.canvas.height},c.copy=function(){c.target.width=c.canvas.width,c.target.height=c.canvas.height,c.targetCtx.drawImage(c.canvas,0,0)}),c.resize=function(){r=e.chartWidth,o=e.chartHeight,(c.targetFo||c.target).attr({x:0,y:0,width:r,height:o}).css({pointerEvents:u?void 0:"none",mixedBlendMode:"normal",opacity:1}).addClass(u?"highcharts-tracker":""),a instanceof i&&a.boost?.markerGroup?.translate(e.plotLeft,e.plotTop)},c.clipRect=e.renderer.clipRect(),(c.targetFo||c.target).attr({zIndex:t.options.zIndex}),a instanceof i&&(a.boost.markerGroup=a.renderer.g().add(s).translate(t.xAxis.pos,t.yAxis.pos))),c.canvas.width=r,c.canvas.height=o,c.clipRect){let t=h(e,a),i=t.width===e.clipBox.width&&t.height===e.clipBox.height?s:c.targetFo||c.target;c.clipRect.attr(t),i?.clip(c.clipRect)}return c.resize(),c.clear(),!c.wgl&&(c.wgl=new n(e=>{e.settings.debug.timeBufferCopy&&console.time("buffer copy"),c.copy(),e.settings.debug.timeBufferCopy&&console.timeEnd("buffer copy")}),c.wgl.init(c.canvas)||x("[highcharts boost] - unable to init WebGL renderer"),c.wgl.setOptions(e.options.boost||{}),a instanceof i&&c.wgl.allocateBuffer(e)),c.wgl.setSize(r,o),c.wgl}function w(e){let t=e.points;if(t){let e,i;for(i=0;i<t.length;i+=1)(e=t[i])&&e.destroyElements&&e.destroyElements()}for(let t of(["graph","area","tracker"].forEach(t=>{let i=e[t];i&&(e[t]=i.destroy())}),e.zones))b(t,void 0,!0)}function R(e,t,i,s,r,o){let n=(r=r||0)+(s=s||3e3),a=!0;for(;a&&r<n&&r<e.length;)a=t(e[r],r),++r;a&&(r<e.length?o?R(e,t,i,s,r,o):m.requestAnimationFrame?m.requestAnimationFrame(function(){R(e,t,i,s,r)}):setTimeout(R,0,e,t,i,s,r):i&&i())}function B(e,t){let i=e.options,s=i.data,r=e.xAxis&&e.xAxis.options,o=e.yAxis&&e.yAxis.options,n=e.colorAxis&&e.colorAxis.options;return s.length>(i.boostThreshold||Number.MAX_VALUE)&&v(o.min)&&v(o.max)&&(!t||v(r.min)&&v(r.max))&&(!n||v(n.min)&&v(n.max))}let D=(e,t)=>!e.forceCrop&&(d(e.chart)||(t?t.length:0)>=(e.options.boostThreshold||Number.MAX_VALUE));function L(){let e=this,t=e.chart;t.boost&&t.boost.markerGroup===e.markerGroup&&(e.markerGroup=null),t.hoverPoints&&(t.hoverPoints=t.hoverPoints.filter(function(t){return t.series===e})),t.hoverPoint&&t.hoverPoint.series===e&&(t.hoverPoint=null)}function z(){let e=this.boost;e&&e.canvas&&e.target&&(e.wgl&&e.wgl.clear(),e.clear&&e.clear())}function G(e){let t=e.boost;t&&t.canvas&&t.target&&t.wgl&&!d(e.chart)&&t.wgl.render(e.chart)}function _(e,t){let i=e.options,s=e.xAxis,r=e.pointClass;if(t instanceof r)return t;let o=e.xData||i.xData||e.processedXData||!1,n=new r(e,(e.options.data||[])[t.i],o?o[t.i]:void 0);return n.category=T(s.categories?s.categories[n.x]:n.x,n.x),n.dist=t.dist,n.distX=t.distX,n.plotX=t.plotX,n.plotY=t.plotY,n.index=t.i,n.percentage=t.percentage,n.isInside=e.isPointInside(n),n}function N(e){var t,i,s,r;let{options:o,xAxis:n,yAxis:a}=this;if(!this.isDirty&&!n.isDirty&&!a.isDirty&&!e)return!1;this.yAxis.setTickInterval();let l=o.boostThreshold||0,h=o.cropThreshold,d=o.data||this.data,f=this.xData,u=n.getExtremes(),g=u.max??Number.MAX_VALUE,c=u.min??-Number.MAX_VALUE,m=this.yData,p=a.getExtremes(),b=p.max??Number.MAX_VALUE,x=p.min??-Number.MAX_VALUE;if(!this.boosted&&n.old&&a.old&&c>=(n.old.min??-Number.MAX_VALUE)&&g<=(n.old.max??Number.MAX_VALUE)&&x>=(a.old.min??-Number.MAX_VALUE)&&b<=(a.old.max??Number.MAX_VALUE))return this.processedXData??(this.processedXData=f),this.processedYData??(this.processedYData=m),!0;if(!l||d.length<l||h&&!this.forceCrop&&!this.getExtremesFromAll&&!o.getExtremesFromAll&&d.length<h)return this.processedXData=f,this.processedYData=m,!0;let A=[],y=[],P=[],T=!(v(u.max)||v(u.min)),E=!(v(p.max)||v(p.min)),k=!1,S,M=f[0],C=f[0],U,w=m[0],R=m[0];for(let e=0,t=f.length;e<t;++e)S=f[e],U=m[e],S>=c&&S<=g&&U>=x&&U<=b?(A.push({x:S,y:U}),y.push(S),P.push(U),T&&(M=Math.max(M,S),C=Math.min(C,S)),E&&(w=Math.max(w,U),R=Math.min(R,U))):k=!0;return T&&((t=n.options).max??(t.max=M),(i=n.options).min??(i.min=C)),E&&((s=a.options).max??(s.max=w),(r=a.options).min??(r.min=R)),this.cropped=k,this.cropStart=0,this.processedXData=y,this.processedYData=P,D(this,y)||(this.processedData=A),!0}function I(){let e=this.options||{},t=this.chart,i=t.boost,s=this.boost,r=this.xAxis,o=this.yAxis,n=e.xData||this.processedXData,l=e.yData||this.processedYData,h=this.processedData||e.data,f=r.getExtremes(),u=f.min-(r.minPointOffset||0),g=f.max+(r.minPointOffset||0),m=o.getExtremes(),p=m.min-(o.minPointOffset||0),b=m.max+(o.minPointOffset||0),x={},A=!!this.sampling,P=e.enableMouseTracking,v=e.threshold,E=this.pointArrayMap&&"low,high"===this.pointArrayMap.join(","),k=!!e.stacking,C=this.cropStart||0,B=this.requireSorting,D=!n,L="x"===e.findNearestPointBy,z=this.xData||this.options.xData||this.processedXData||!1,_=T(e.lineWidth,1),N=!1,I,O=o.getThreshold(v),X,V,j,F;if(r.isPanning||o.isPanning||(N=U(t,this),t.boosted=!0,!this.visible))return;(this.points||this.graph)&&w(this),d(t)?(this.markerGroup&&this.markerGroup!==i?.markerGroup&&this.markerGroup.destroy(),this.markerGroup=i?.markerGroup,s&&s.target&&(this.renderTarget=s.target=s.target.destroy())):(this.markerGroup===i?.markerGroup&&(this.markerGroup=void 0),this.markerGroup=this.plotGroup("markerGroup","markers","visible",1,t.seriesGroup).addClass("highcharts-tracker"));let W=this.points=[],H=(e,i,s,n)=>{let l=!!z&&z[C+s],h=e=>{t.inverted&&(e=r.len-e,i=o.len-i),W.push({destroy:c,x:l,clientX:e,plotX:e,plotY:i,i:C+s,percentage:n})};e=Math.ceil(e),a=L?e:e+","+i,P&&(x[a]?l===z[z.length-1]&&(W.length--,h(e)):(x[a]=!0,h(e)))};this.buildKDTree=c,y(this,"renderCanvas"),this.is("line")&&_>1&&s?.target&&i&&!i.lineWidthFilter&&(i.lineWidthFilter=t.renderer.definition({tagName:"filter",children:[{tagName:"feMorphology",attributes:{operator:"dilate",radius:.25*_}}],attributes:{id:"linewidth"}}),s.target.attr({filter:"url(#linewidth)"})),N&&(M(N,this),N.pushSeries(this),G(this));let Y=N.settings;t.renderer.forExport||(Y.debug.timeKDTree&&console.time("kd tree building"),R(k?this.data.slice(C):n||h,function(e,i){let s=void 0===t.index,n,a,h,d,f,c=!1,m=!0;return!S(e)||(!s&&(D?(n=e[0],a=e[1]):(n=e,a=l[i]),E?(D&&(a=e.slice(1,3)),c=a[0],a=a[1]):k&&(n=e.x,c=(a=e.stackY)-e.y,f=e.percentage),B||(m=(a||0)>=p&&a<=b),null!==a&&n>=u&&n<=g&&m&&(h=r.toPixels(n,!0),A?((void 0===j||h===I)&&(E||(c=a),(void 0===F||a>V)&&(V=a,F=i),(void 0===j||c<X)&&(X=c,j=i)),L&&h===I||(void 0!==j&&(d=o.toPixels(V,!0),O=o.toPixels(X,!0),H(h,d,F,f),O!==d&&H(h,O,j,f)),j=F=void 0,I=h)):H(h,d=Math.ceil(o.toPixels(a,!0)),i,f))),!s)},()=>{y(this,"renderedCanvas"),delete this.buildKDTree,this.options&&this.buildKDTree(),Y.debug.timeKDTree&&console.timeEnd("kd tree building")}))}function O(e){let t=!0;if(this.chart.options&&this.chart.options.boost&&(t=void 0===this.chart.options.boost.enabled||this.chart.options.boost.enabled),!t||!this.boosted)return e.call(this);this.chart.boosted=!0;let i=U(this.chart,this);i&&(M(i,this),i.pushSeries(this)),G(this)}function X(e){if(this.boosted){if(B(this))return{};if(this.xAxis.isPanning||this.yAxis.isPanning)return this}return e.apply(this,[].slice.call(arguments,1))}function V(t){let i=this.options.data;if(C(this.chart)&&e[this.type]){let e=this.is("scatter")&&!this.is("bubble")&&!this.is("heatmap");if(!D(this,i)||e||this.options.stacking||!B(this,!0)){if(this.boosted&&(this.xAxis?.isPanning||this.yAxis?.isPanning))return;e&&!this.yAxis.treeGrid?N.call(this,arguments[1]):t.apply(this,[].slice.call(arguments,1)),i=this.processedXData}if(this.boosted=D(this,i),this.boosted){let e;this.options.data&&this.options.data.length&&!v(e=this.getFirstValidPoint(this.options.data))&&!P(e)&&x(12,!1,this.chart),function(e){e.boost=e.boost||{getPoint:t=>_(e,t)};let t=e.boost.altered=[];if(["allowDG","directTouch","stickyTracking"].forEach(i=>{t.push({prop:i,val:e[i],own:Object.hasOwnProperty.call(e,i)})}),e.allowDG=!1,e.directTouch=!1,e.stickyTracking=!0,e.finishedAnimating=!0,e.labelBySeries&&(e.labelBySeries=e.labelBySeries.destroy()),e.is("scatter")&&e.data.length){for(let t of e.data)t?.destroy?.();e.data.length=0,e.points.length=0,delete e.processedData}}(this)}else!function(e){let t=e.boost,i=e.chart,s=i.boost;if(s?.markerGroup)for(let e of(s.markerGroup.destroy(),s.markerGroup=void 0,i.series))e.markerGroup=void 0,e.markerGroup=e.plotGroup("markerGroup","markers","visible",1,i.seriesGroup).addClass("highcharts-tracker");t&&((t.altered||[]).forEach(t=>{t.own?e[t.prop]=t.val:delete e[t.prop]}),t.clear&&t.clear()),(i.seriesGroup||e.group)?.clip()}(this)}else t.apply(this,[].slice.call(arguments,1))}function j(e){let t=e.apply(this,[].slice.call(arguments,1));return this.boost&&t?this.boost.getPoint(t):t}return{compose:function(i,s,r){if(E(u,"Boost.Series")){let o=f().plotOptions,n=i.prototype;if(p(i,"destroy",L),p(i,"hide",z),r&&(n.renderCanvas=I),k(n,"getExtremes",X),k(n,"processData",V),k(n,"searchPoint",j),["translate","generatePoints","drawTracker","drawPoints","render"].forEach(t=>(function(t,i,s){function r(t){let i=this.options.stacking&&("translate"===s||"generatePoints"===s);this.boosted&&!i&&C(this.chart)&&"heatmap"!==this.type&&"treemap"!==this.type&&e[this.type]&&0!==this.options.boostThreshold?"render"===s&&this.renderCanvas&&this.renderCanvas():t.call(this)}if(k(t,s,r),"translate"===s)for(let e of["column","arearange","columnrange","heatmap","treemap"])i[e]&&k(i[e].prototype,s,r)})(n,s,t)),t.forEach(e=>{let t=o[e];t&&(t.boostThreshold=5e3,t.boostData=[],s[e].prototype.fillOpacity=!0)}),r){let{area:e,areaspline:t,bubble:i,column:r,heatmap:o,scatter:n,treemap:a}=s;if(e&&A(e.prototype,{fill:!0,fillOpacity:!0,sampling:!0}),t&&A(t.prototype,{fill:!0,fillOpacity:!0,sampling:!0}),i){let e=i.prototype;delete e.buildKDTree,k(e,"markerAttribs",function(e){return!this.boosted&&e.apply(this,[].slice.call(arguments,1))})}r&&A(r.prototype,{fill:!0,sampling:!0}),n&&(n.prototype.fill=!0),[o,a].forEach(e=>{e&&k(e.prototype,"drawPoints",O)})}}return i},destroyGraphics:w,eachAsync:R,getPoint:_}}),i(t,"Extensions/Boost/NamedColors.js",[],function(){return{defaultHTMLColorMap:{aliceblue:"#f0f8ff",antiquewhite:"#faebd7",aqua:"#00ffff",aquamarine:"#7fffd4",azure:"#f0ffff",beige:"#f5f5dc",bisque:"#ffe4c4",blanchedalmond:"#ffebcd",blue:"#0000ff",blueviolet:"#8a2be2",brown:"#a52a2a",burlywood:"#deb887",cadetblue:"#5f9ea0",chartreuse:"#7fff00",chocolate:"#d2691e",coral:"#ff7f50",cornflowerblue:"#6495ed",cornsilk:"#fff8dc",crimson:"#dc143c",cyan:"#00ffff",darkblue:"#00008b",darkcyan:"#008b8b",darkgoldenrod:"#b8860b",darkgray:"#a9a9a9",darkgreen:"#006400",darkkhaki:"#bdb76b",darkmagenta:"#8b008b",darkolivegreen:"#556b2f",darkorange:"#ff8c00",darkorchid:"#9932cc",darkred:"#8b0000",darksalmon:"#e9967a",darkseagreen:"#8fbc8f",darkslateblue:"#483d8b",darkslategray:"#2f4f4f",darkturquoise:"#00ced1",darkviolet:"#9400d3",deeppink:"#ff1493",deepskyblue:"#00bfff",dimgray:"#696969",dodgerblue:"#1e90ff",feldspar:"#d19275",firebrick:"#b22222",floralwhite:"#fffaf0",forestgreen:"#228b22",fuchsia:"#ff00ff",gainsboro:"#dcdcdc",ghostwhite:"#f8f8ff",gold:"#ffd700",goldenrod:"#daa520",gray:"#808080",grey:"#808080",green:"#008000",greenyellow:"#adff2f",honeydew:"#f0fff0",hotpink:"#ff69b4",indianred:"#cd5c5c",indigo:"#4b0082",ivory:"#fffff0",khaki:"#f0e68c",lavender:"#e6e6fa",lavenderblush:"#fff0f5",lawngreen:"#7cfc00",lemonchiffon:"#fffacd",lightblue:"#add8e6",lightcoral:"#f08080",lightcyan:"#e0ffff",lightgoldenrodyellow:"#fafad2",lightgrey:"#d3d3d3",lightgreen:"#90ee90",lightpink:"#ffb6c1",lightsalmon:"#ffa07a",lightseagreen:"#20b2aa",lightskyblue:"#87cefa",lightslateblue:"#8470ff",lightslategray:"#778899",lightsteelblue:"#b0c4de",lightyellow:"#ffffe0",lime:"#00ff00",limegreen:"#32cd32",linen:"#faf0e6",magenta:"#ff00ff",maroon:"#800000",mediumaquamarine:"#66cdaa",mediumblue:"#0000cd",mediumorchid:"#ba55d3",mediumpurple:"#9370d8",mediumseagreen:"#3cb371",mediumslateblue:"#7b68ee",mediumspringgreen:"#00fa9a",mediumturquoise:"#48d1cc",mediumvioletred:"#c71585",midnightblue:"#191970",mintcream:"#f5fffa",mistyrose:"#ffe4e1",moccasin:"#ffe4b5",navajowhite:"#ffdead",navy:"#000080",oldlace:"#fdf5e6",olive:"#808000",olivedrab:"#6b8e23",orange:"#ffa500",orangered:"#ff4500",orchid:"#da70d6",palegoldenrod:"#eee8aa",palegreen:"#98fb98",paleturquoise:"#afeeee",palevioletred:"#d87093",papayawhip:"#ffefd5",peachpuff:"#ffdab9",peru:"#cd853f",pink:"#ffc0cb",plum:"#dda0dd",powderblue:"#b0e0e6",purple:"#800080",red:"#ff0000",rosybrown:"#bc8f8f",royalblue:"#4169e1",saddlebrown:"#8b4513",salmon:"#fa8072",sandybrown:"#f4a460",seagreen:"#2e8b57",seashell:"#fff5ee",sienna:"#a0522d",silver:"#c0c0c0",skyblue:"#87ceeb",slateblue:"#6a5acd",slategray:"#708090",snow:"#fffafa",springgreen:"#00ff7f",steelblue:"#4682b4",tan:"#d2b48c",teal:"#008080",thistle:"#d8bfd8",tomato:"#ff6347",turquoise:"#40e0d0",violet:"#ee82ee",violetred:"#d02090",wheat:"#f5deb3",whitesmoke:"#f5f5f5",yellow:"#ffff00",yellowgreen:"#9acd32"}}}),i(t,"Extensions/Boost/Boost.js",[t["Extensions/Boost/BoostChart.js"],t["Extensions/Boost/BoostSeries.js"],t["Core/Globals.js"],t["Extensions/Boost/NamedColors.js"],t["Core/Utilities.js"]],function(e,t,i,s,r){let{doc:o,win:n}=i,{addEvent:a,error:l}=r,h=["webgl","experimental-webgl","moz-webgl","webkit-3d"];function d(){let e;if(void 0!==n.WebGLRenderingContext){e=o.createElement("canvas");for(let t=0;t<h.length;++t)try{if(null!=e.getContext(h[t]))return!0}catch(e){}}return!1}return{compose:function(r,o,n,h,f){let u=d();u||(void 0!==i.initCanvasBoost?i.initCanvasBoost():l(26)),f&&!f.names.lightgoldenrodyellow&&(f.names={...f.names,...s.defaultHTMLColorMap}),e.compose(r,u),t.compose(n,h,u),a(o,"setExtremes",function(e){for(let t of[this.chart,...this.series].map(e=>e.renderTarget).filter(Boolean)){let{horiz:i,pos:s}=this,r=i?"scaleX":"scaleY",o=i?"translateX":"translateY",n=t?.[r]??1,a=1,l=0,h=1,d="none";this.isPanning&&(a=(e.scale??1)*n,l=(t?.[o]||0)-a*(e.move||0)+n*s-a*s,h=.7,d="blur(3px)"),t?.attr({[r]:a,[o]:l}).css({transition:"250ms filter, 250ms opacity",filter:d,opacity:h})}})},hasWebGLSupport:d}}),i(t,"masters/modules/boost.src.js",[t["Core/Globals.js"],t["Extensions/Boost/Boost.js"]],function(e,t){return e.hasWebGLSupport=t.hasWebGLSupport,t.compose(e.Chart,e.Axis,e.Series,e.seriesTypes,e.Color),e})});
@@ -1,5 +1,5 @@
1
1
  /**
2
- * @license Highcharts JS v11.4.7 (2024-08-14)
2
+ * @license Highcharts JS v11.4.8 (2024-08-29)
3
3
  *
4
4
  * Boost module
5
5
  *
@@ -2696,6 +2696,8 @@
2696
2696
  boost.clear();
2697
2697
  }
2698
2698
  }
2699
+ // #21106, clean up boost clipping on the series groups.
2700
+ (chart.seriesGroup || series.group)?.clip();
2699
2701
  }
2700
2702
  /**
2701
2703
  * @private
@@ -1,5 +1,5 @@
1
1
  !/**
2
- * Highcharts JS v11.4.7 (2024-08-14)
2
+ * Highcharts JS v11.4.8 (2024-08-29)
3
3
  *
4
4
  * (c) 2009-2024 Torstein Honsi
5
5
  *
@@ -1,5 +1,5 @@
1
1
  /**
2
- * @license Highcharts JS v11.4.7 (2024-08-14)
2
+ * @license Highcharts JS v11.4.8 (2024-08-29)
3
3
  *
4
4
  * (c) 2009-2024 Torstein Honsi
5
5
  *
@@ -1,5 +1,5 @@
1
1
  !/**
2
- * Highcharts JS v11.4.7 (2024-08-14)
2
+ * Highcharts JS v11.4.8 (2024-08-29)
3
3
  *
4
4
  * Bullet graph series type for Highcharts
5
5
  *
@@ -1,5 +1,5 @@
1
1
  /**
2
- * @license Highcharts JS v11.4.7 (2024-08-14)
2
+ * @license Highcharts JS v11.4.8 (2024-08-29)
3
3
  *
4
4
  * Bullet graph series type for Highcharts
5
5
  *
@@ -1,5 +1,5 @@
1
1
  !/**
2
- * Highcharts JS v11.4.7 (2024-08-14)
2
+ * Highcharts JS v11.4.8 (2024-08-29)
3
3
  *
4
4
  * ColorAxis module
5
5
  *
@@ -1,5 +1,5 @@
1
1
  /**
2
- * @license Highcharts JS v11.4.7 (2024-08-14)
2
+ * @license Highcharts JS v11.4.8 (2024-08-29)
3
3
  *
4
4
  * ColorAxis module
5
5
  *
@@ -1,5 +1,5 @@
1
1
  !/**
2
- * Highcharts Gantt JS v11.4.7 (2024-08-14)
2
+ * Highcharts Gantt JS v11.4.8 (2024-08-29)
3
3
  *
4
4
  * CurrentDateIndicator
5
5
  *
@@ -1,5 +1,5 @@
1
1
  /**
2
- * @license Highcharts Gantt JS v11.4.7 (2024-08-14)
2
+ * @license Highcharts Gantt JS v11.4.8 (2024-08-29)
3
3
  *
4
4
  * CurrentDateIndicator
5
5
  *
@@ -1,5 +1,5 @@
1
1
  !/**
2
- * Highcharts JS v11.4.7 (2024-08-14)
2
+ * Highcharts JS v11.4.8 (2024-08-29)
3
3
  *
4
4
  * Highcharts cylinder module
5
5
  *
@@ -1,5 +1,5 @@
1
1
  /**
2
- * @license Highcharts JS v11.4.7 (2024-08-14)
2
+ * @license Highcharts JS v11.4.8 (2024-08-29)
3
3
  *
4
4
  * Highcharts cylinder module
5
5
  *
@@ -1,5 +1,5 @@
1
1
  !/**
2
- * Highcharts JS v11.4.7 (2024-08-14)
2
+ * Highcharts JS v11.4.8 (2024-08-29)
3
3
  *
4
4
  * Highcharts
5
5
  *