import{o as et}from"./entry.223f6570.js";function tt(Fe,_e){for(var C=0;C<_e.length;C++){const ye=_e[C];if(typeof ye!="string"&&!Array.isArray(ye)){for(const T in ye)if(T!=="default"&&!(T in Fe)){const k=Object.getOwnPropertyDescriptor(ye,T);k&&Object.defineProperty(Fe,T,k.get?k:{enumerable:!0,get:()=>ye[T]})}}}return Object.freeze(Object.defineProperty(Fe,Symbol.toStringTag,{value:"Module"}))}var $e={exports:{}};(function(Fe){(function(_e){Fe.exports?(_e.default=_e,Fe.exports=_e):_e(typeof Highcharts<"u"?Highcharts:void 0)})(function(_e){var C=_e?_e._modules:{};function ye(T,k,H,ee){T.hasOwnProperty(k)||(T[k]=ee.apply(null,H),typeof CustomEvent=="function"&&_e.win.dispatchEvent(new CustomEvent("HighchartsModuleLoaded",{detail:{path:k,module:T[k]}})))}ye(C,"Extensions/Boost/Boostables.js",[],function(){return["area","areaspline","arearange","column","columnrange","bar","line","scatter","heatmap","bubble","treemap"]}),ye(C,"Extensions/Boost/BoostableMap.js",[C["Extensions/Boost/Boostables.js"]],function(T){let k={};return T.forEach(H=>{k[H]=!0}),k}),ye(C,"Extensions/Boost/BoostChart.js",[C["Extensions/Boost/BoostableMap.js"],C["Core/Globals.js"],C["Core/Utilities.js"]],function(T,k,H){let{composed:ee}=k,{addEvent:v,pick:q,pushUnique:B}=H;function be(l){let O=l.series,Y=l.boost=l.boost||{},z=l.options.boost||{},Q=q(z.seriesThreshold,50);if(O.length>=Q)return!0;if(O.length===1)return!1;let K=z.allowForce;if(K===void 0){for(let ce of(K=!0,l.xAxis))if(q(ce.min,-1/0)>q(ce.dataMin,-1/0)||q(ce.max,1/0)<q(ce.dataMax,1/0)){K=!1;break}}if(Y.forceChartBoost!==void 0){if(K)return Y.forceChartBoost;Y.forceChartBoost=void 0}let xe=0,Pe=0,ae;for(let ce of O)(ae=ce.options).boostThreshold!==0&&ce.visible!==!1&&ce.type!=="heatmap"&&(T[ce.type]&&++xe,function(...e){let i=-Number.MAX_VALUE;return e.forEach(function(h){if(h!=null&&h.length!==void 0&&h.length>0)return i=h.length,!0}),i}(ce.processedXData,ae.data,ce.points)>=(ae.boostThreshold||Number.MAX_VALUE)&&++Pe);return Y.forceChartBoost=K&&(xe===O.length&&Pe===xe||Pe>5),Y.forceChartBoost}function Me(l){function O(){l.boost&&l.boost.wgl&&be(l)&&l.boost.wgl.render(l)}v(l,"predraw",function(){var Q,K;l.boost=l.boost||{},l.boost.forceChartBoost=void 0,l.boosted=!1,l.axes.some(xe=>xe.isPanning)||((K=(Q=l.boost).clear)==null||K.call(Q)),l.boost.canvas&&l.boost.wgl&&be(l)&&l.boost.wgl.allocateBuffer(l),l.boost.markerGroup&&l.xAxis&&l.xAxis.length>0&&l.yAxis&&l.yAxis.length>0&&l.boost.markerGroup.translate(l.xAxis[0].pos,l.yAxis[0].pos)}),v(l,"load",O,{order:-1}),v(l,"redraw",O);let Y=-1,z=-1;v(l.pointer,"afterGetHoverData",Q=>{var xe;let K=(xe=Q.hoverPoint)==null?void 0:xe.series;if(l.boost=l.boost||{},l.boost.markerGroup&&K){let Pe=l.inverted?K.yAxis:K.xAxis,ae=l.inverted?K.xAxis:K.yAxis;(Pe&&Pe.pos!==Y||ae&&ae.pos!==z)&&(l.series.forEach(ce=>{var e;(e=ce.halo)==null||e.hide()}),l.boost.markerGroup.translate(Pe.pos,ae.pos),Y=Pe.pos,z=ae.pos)}})}return{compose:function(l,O){return O&&B(ee,"Boost.Chart")&&l.prototype.callbacks.push(Me),l},getBoostClipRect:function(l,O){let Y=l.navigator,z={x:l.plotLeft,y:l.plotTop,width:l.plotWidth,height:l.plotHeight};if(Y&&l.inverted?(z.width+=Y.top+Y.height,Y.opposite||(z.x=Y.left)):Y&&!l.inverted&&(z.height=Y.top+Y.height-l.plotTop),O.getClipBox){let{xAxis:Q,yAxis:K}=O;if(z=O.getClipBox(),l.inverted){let xe=z.width;z.width=z.height,z.height=xe,z.x=K.pos,z.y=Q.pos}else z.x=Q.pos,z.y=K.pos}if(O===l){let Q=l.inverted?l.xAxis:l.yAxis;Q.length<=1&&(z.y=Math.min(Q[0].pos,z.y),z.height=Q[0].pos-l.plotTop+Q[0].len)}return z},isChartSeriesBoosting:be}}),ye(C,"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"}}),ye(C,"Extensions/Boost/WGLShader.js",[C["Core/Utilities.js"]],function(T){let{clamp:k,error:H,pick:ee}=T;return class{constructor(v){this.errors=[],this.uLocations={},this.gl=v,v&&this.createShader()}bind(){this.gl&&this.shaderProgram&&this.gl.useProgram(this.shaderProgram)}createShader(){let v=this.stringToProgram(`#version 100
#define LN10 2.302585092994046
precision highp float;
attribute vec4 aVertexPosition;
attribute vec4 aColor;
varying highp vec2 position;
varying highp vec4 vColor;
uniform mat4 uPMatrix;
uniform float pSize;
uniform float translatedThreshold;
uniform bool hasThreshold;
uniform bool skipTranslation;
uniform float xAxisTrans;
uniform float xAxisMin;
uniform float xAxisMinPad;
uniform float xAxisPointRange;
uniform float xAxisLen;
uniform bool  xAxisPostTranslate;
uniform float xAxisOrdinalSlope;
uniform float xAxisOrdinalOffset;
uniform float xAxisPos;
uniform bool  xAxisCVSCoord;
uniform bool  xAxisIsLog;
uniform bool  xAxisReversed;
uniform float yAxisTrans;
uniform float yAxisMin;
uniform float yAxisMinPad;
uniform float yAxisPointRange;
uniform float yAxisLen;
uniform bool  yAxisPostTranslate;
uniform float yAxisOrdinalSlope;
uniform float yAxisOrdinalOffset;
uniform float yAxisPos;
uniform bool  yAxisCVSCoord;
uniform bool  yAxisIsLog;
uniform bool  yAxisReversed;
uniform bool  isBubble;
uniform bool  bubbleSizeByArea;
uniform float bubbleZMin;
uniform float bubbleZMax;
uniform float bubbleZThreshold;
uniform float bubbleMinSize;
uniform float bubbleMaxSize;
uniform bool  bubbleSizeAbs;
uniform bool  isInverted;
float bubbleRadius(){
float value = aVertexPosition.w;
float zMax = bubbleZMax;
float zMin = bubbleZMin;
float radius = 0.0;
float pos = 0.0;
float zRange = zMax - zMin;
if (bubbleSizeAbs){
value = value - bubbleZThreshold;
zMax = max(zMax - bubbleZThreshold, zMin - bubbleZThreshold);
zMin = 0.0;
}
if (value < zMin){
radius = bubbleZMin / 2.0 - 1.0;
} else {
pos = zRange > 0.0 ? (value - zMin) / zRange : 0.5;
if (bubbleSizeByArea && pos > 0.0){
pos = sqrt(pos);
}
radius = ceil(bubbleMinSize + pos * (bubbleMaxSize - bubbleMinSize)) / 2.0;
}
return radius * 2.0;
}
float translate(float val,
float pointPlacement,
float localA,
float localMin,
float minPixelPadding,
float pointRange,
float len,
bool  cvsCoord,
bool  isLog,
bool  reversed
){
float sign = 1.0;
float cvsOffset = 0.0;
if (cvsCoord) {
sign *= -1.0;
cvsOffset = len;
}
if (isLog) {
val = log(val) / LN10;
}
if (reversed) {
sign *= -1.0;
cvsOffset -= sign * len;
}
return sign * (val - localMin) * localA + cvsOffset + 
(sign * minPixelPadding);
}
float xToPixels(float value) {
if (skipTranslation){
return value;// + xAxisPos;
}
return translate(value, 0.0, xAxisTrans, xAxisMin, xAxisMinPad, xAxisPointRange, xAxisLen, xAxisCVSCoord, xAxisIsLog, xAxisReversed);// + xAxisPos;
}
float yToPixels(float value, float checkTreshold) {
float v;
if (skipTranslation){
v = value;// + yAxisPos;
} else {
v = translate(value, 0.0, yAxisTrans, yAxisMin, yAxisMinPad, yAxisPointRange, yAxisLen, yAxisCVSCoord, yAxisIsLog, yAxisReversed);// + yAxisPos;
if (v > yAxisLen) {
v = yAxisLen;
}
}
if (checkTreshold > 0.0 && hasThreshold) {
v = min(v, translatedThreshold);
}
return v;
}
void main(void) {
if (isBubble){
gl_PointSize = bubbleRadius();
} else {
gl_PointSize = pSize;
}
vColor = aColor;
if (skipTranslation && isInverted) {
gl_Position = uPMatrix * vec4(aVertexPosition.y + yAxisPos, aVertexPosition.x + xAxisPos, 0.0, 1.0);
} else if (isInverted) {
gl_Position = uPMatrix * vec4(yToPixels(aVertexPosition.y, aVertexPosition.z) + yAxisPos, xToPixels(aVertexPosition.x) + xAxisPos, 0.0, 1.0);
} else {
gl_Position = uPMatrix * vec4(xToPixels(aVertexPosition.x) + xAxisPos, yToPixels(aVertexPosition.y, aVertexPosition.z) + yAxisPos, 0.0, 1.0);
}
}`,"vertex"),q=this.stringToProgram(`precision highp float;
uniform vec4 fillColor;
varying highp vec2 position;
varying highp vec4 vColor;
uniform sampler2D uSampler;
uniform bool isCircle;
uniform bool hasColor;
void main(void) {
vec4 col = fillColor;
vec4 tcol = texture2D(uSampler, gl_PointCoord.st);
if (hasColor) {
col = vColor;
}
if (isCircle) {
col *= tcol;
if (tcol.r < 0.0) {
discard;
} else {
gl_FragColor = col;
}
} else {
gl_FragColor = col;
}
}`,"fragment"),B=be=>this.gl.getUniformLocation(this.shaderProgram,be);return v&&q?(this.shaderProgram=this.gl.createProgram(),this.gl.attachShader(this.shaderProgram,v),this.gl.attachShader(this.shaderProgram,q),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=B("uPMatrix"),this.psUniform=B("pSize"),this.fcUniform=B("fillColor"),this.isBubbleUniform=B("isBubble"),this.bubbleSizeAbsUniform=B("bubbleSizeAbs"),this.bubbleSizeAreaUniform=B("bubbleSizeByArea"),this.uSamplerUniform=B("uSampler"),this.skipTranslationUniform=B("skipTranslation"),this.isCircleUniform=B("isCircle"),this.isInverted=B("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&&H("[highcharts boost] shader error - "+this.errors.join(`
`))}stringToProgram(v,q){let B=this.gl.createShader(q==="vertex"?this.gl.VERTEX_SHADER:this.gl.FRAGMENT_SHADER);return this.gl.shaderSource(B,v),this.gl.compileShader(B),this.gl.getShaderParameter(B,this.gl.COMPILE_STATUS)?B:(this.errors.push("when compiling "+q+` shader:
`+this.gl.getShaderInfoLog(B)),!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(v,q,B,be=1){let Me=v.options,l=Number.MAX_VALUE,O=-Number.MAX_VALUE;if(this.gl&&this.shaderProgram&&v.is("bubble")){let Y=v.getPxExtremes();l=ee(Me.zMin,k(q,Me.displayNegative===!1?Me.zThreshold:-Number.MAX_VALUE,l)),O=ee(Me.zMax,Math.max(O,B)),this.gl.uniform1i(this.isBubbleUniform,1),this.gl.uniform1i(this.isCircleUniform,1),this.gl.uniform1i(this.bubbleSizeAreaUniform,v.options.sizeBy!=="width"),this.gl.uniform1i(this.bubbleSizeAbsUniform,v.options.sizeByAbsoluteValue),this.setUniform("bubbleMinSize",Y.minPxSize*be),this.setUniform("bubbleMaxSize",Y.maxPxSize*be),this.setUniform("bubbleZMin",l),this.setUniform("bubbleZMax",O),this.setUniform("bubbleZThreshold",v.options.zThreshold)}}setColor(v){this.gl&&this.shaderProgram&&this.gl.uniform4f(this.fcUniform,v[0]/255,v[1]/255,v[2]/255,v[3])}setDrawAsCircle(v){this.gl&&this.shaderProgram&&this.gl.uniform1i(this.isCircleUniform,v?1:0)}setInverted(v){this.gl&&this.shaderProgram&&this.gl.uniform1i(this.isInverted,v)}setPMatrix(v){this.gl&&this.shaderProgram&&this.gl.uniformMatrix4fv(this.pUniform,!1,v)}setPointSize(v){this.gl&&this.shaderProgram&&this.gl.uniform1f(this.psUniform,v)}setSkipTranslation(v){this.gl&&this.shaderProgram&&this.gl.uniform1i(this.skipTranslationUniform,v===!0?1:0)}setTexture(v){this.gl&&this.shaderProgram&&this.gl.uniform1i(this.uSamplerUniform,v)}setUniform(v,q){if(this.gl&&this.shaderProgram){let B=this.uLocations[v]=this.uLocations[v]||this.gl.getUniformLocation(this.shaderProgram,v);this.gl.uniform1f(B,q)}}}}),ye(C,"Extensions/Boost/WGLVertexBuffer.js",[],function(){return class{constructor(T,k,H){this.buffer=!1,this.iterator=0,this.preAllocated=!1,this.vertAttribute=!1,this.components=H||2,this.dataComponents=H,this.gl=T,this.shader=k}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,k,H){let ee;return this.data=T||[],this.data&&this.data.length!==0||this.preAllocated?(this.components=H||this.components,this.buffer&&this.gl.deleteBuffer(this.buffer),this.preAllocated||(ee=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||ee,this.gl.STATIC_DRAW),this.vertAttribute=this.gl.getAttribLocation(this.shader.getProgram(),k),this.gl.enableVertexAttribArray(this.vertAttribute),ee=!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,k,H,ee){this.preAllocated&&(this.preAllocated[++this.iterator]=T,this.preAllocated[++this.iterator]=k,this.preAllocated[++this.iterator]=H,this.preAllocated[++this.iterator]=ee)}render(T,k,H){let ee=this.preAllocated?this.preAllocated.length:this.data.length;return!!this.buffer&&!!ee&&((!T||T>ee||T<0)&&(T=0),(!k||k>ee)&&(k=ee),!(T>=k)&&(H=H||"POINTS",this.gl.drawArrays(this.gl[H],T/this.components,(k-T)/this.components),!0))}}}),ye(C,"Extensions/Boost/WGLRenderer.js",[C["Core/Color/Color.js"],C["Core/Globals.js"],C["Core/Utilities.js"],C["Extensions/Boost/WGLDrawMode.js"],C["Extensions/Boost/WGLShader.js"],C["Extensions/Boost/WGLVertexBuffer.js"]],function(T,k,H,ee,v,q){let{parse:B}=T,{doc:be,win:Me}=k,{isNumber:l,isObject:O,merge:Y,objectEach:z,pick:Q}=H,K={column:!0,columnrange:!0,bar:!0,area:!0,areaspline:!0,arearange:!0},xe={scatter:!0,bubble:!0},Pe=["webgl","experimental-webgl","moz-webgl","webkit-3d"];class ae{static orthoMatrix(e,i){return[2/e,0,0,0,0,-(2/i),0,0,0,0,-2,0,-1,1,-1,1]}static seriesPointCount(e){let i,h,s;return e.boosted?(i=!!e.options.stacking,h=e.xData||e.options.xData||e.processedXData,s=(i?e.data:h||e.options.data).length,e.type==="treemap"?s*=12:e.type==="heatmap"?s*=6:K[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||Me.devicePixelRatio||1}setOptions(e){"pixelRatio"in e||(e.pixelRatio=1),Y(!0,this.settings,e)}allocateBuffer(e){let i=this.vbuffer,h=0;this.settings.usePreallocated&&(e.series.forEach(s=>{s.boosted&&(h+=ae.seriesPointCount(s))}),i&&i.allocate(h))}allocateBufferForSingleSeries(e){let i=this.vbuffer,h=0;this.settings.usePreallocated&&(e.boosted&&(h=ae.seriesPointCount(e)),i&&i.allocate(h))}clear(){let e=this.gl;e&&e.clear(e.COLOR_BUFFER_BIT|e.DEPTH_BUFFER_BIT)}pushSeriesData(e,i){let h=this.data,s=this.settings,ie=this.vbuffer,ue=e.pointArrayMap&&e.pointArrayMap.join(",")==="low,high",{chart:p,options:j,sorted:c,xAxis:ge,yAxis:N}=e,ze=!!j.stacking,we=j.data,Oe=e.xAxis.getExtremes(),o=Oe.min-(e.xAxis.minPointOffset||0),u=Oe.max+(e.xAxis.minPointOffset||0),f=e.yAxis.getExtremes(),M=f.min-(e.yAxis.minPointOffset||0),E=f.max+(e.yAxis.minPointOffset||0),X=e.xData||j.xData||e.processedXData,se=e.yData||j.yData||e.processedYData,y=e.zData||j.zData||e.processedZData,le=!X||X.length===0,w=j.connectNulls,he=e.points||!1,t=ze?e.data:X||we,r={x:Number.MAX_VALUE,y:0},d={x:-Number.MAX_VALUE,y:0},P=p.index===void 0,A=K[e.type],m=j.zoneAxis||"y",n=j.zones||!1,U=j.threshold,D=this.getPixelRatio(),a=e.chart.plotWidth,L=!1,te=!1,F,$,Ae=0,ke=!1,G,_,re,Ie,W=-1,J=!1,De=!1,Be,Ue=!1,de=!1,Z=!1,Te=!1,Ee=!0,oe=!0,pe,ne=!1,Ce=!1,Se=0;if(j.boostData&&j.boostData.length>0)return;j.gapSize&&(Ce=j.gapUnit!=="value"?j.gapSize*e.closestPointRange:j.gapSize),n&&(pe=[],n.forEach((g,b)=>{if(g.color){let R=B(g.color).rgba;R[0]/=255,R[1]/=255,R[2]/=255,pe[b]=R,ne||g.value!==void 0||(ne=R)}}),ne||(ne=B(e.pointAttribs&&e.pointAttribs().fill||e.color).rgba,ne[0]/=255,ne[1]/=255,ne[2]/=255)),p.inverted&&(a=e.chart.plotHeight),e.closestPointRangePx=Number.MAX_VALUE;let Le=g=>{g&&(i.colorData.push(g[0]),i.colorData.push(g[1]),i.colorData.push(g[2]),i.colorData.push(g[3]))},fe=(g,b,R,I=1,x)=>{Le(x),D!==1&&(!s.useGPUTranslations||i.skipTranslation)&&(g*=D,b*=D,I*=D),s.usePreallocated&&ie?(ie.push(g,b,R?1:0,I),Se+=4):(h.push(g),h.push(b),h.push(R?D:0),h.push(I))},Xe=()=>{i.segments.length&&(i.segments[i.segments.length-1].to=h.length||Se)},V=()=>{i.segments.length&&i.segments[i.segments.length-1].from===(h.length||Se)||(Xe(),i.segments.push({from:h.length||Se}))},ve=(g,b,R,I,x)=>{Le(x),fe(g+R,b),Le(x),fe(g,b),Le(x),fe(g,b+I),Le(x),fe(g,b+I),Le(x),fe(g+R,b+I),Le(x),fe(g+R,b)};if(V(),he&&he.length>0){i.skipTranslation=!0,i.drawMode="TRIANGLES",he[0].node&&he[0].node.levelDynamic&&he.sort((g,b)=>{if(g.node){if(g.node.levelDynamic>b.node.levelDynamic)return 1;if(g.node.levelDynamic<b.node.levelDynamic)return-1}return 0}),he.forEach(g=>{let b,R,I=g.plotY;if(I!==void 0&&!isNaN(I)&&g.y!==null&&g.shapeArgs){let{x=0,y:S=0,width:me=0,height:Ge=0}=g.shapeArgs;b=(R=p.styledMode?g.series.colorAttribs(g):R=g.series.pointAttribs(g))["stroke-width"]||0,Z=B(R.fill).rgba,Z[0]/=255,Z[1]/=255,Z[2]/=255,e.is("treemap")&&(b=b||1,$=B(R.stroke).rgba,$[0]/=255,$[1]/=255,$[2]/=255,ve(x,S,me,Ge,$),b/=2),e.is("heatmap")&&p.inverted&&(x=ge.len-x,S=N.len-S,me=-me,Ge=-Ge),ve(x+b,S+b,me-2*b,Ge-2*b,Z)}}),Xe();return}for(;W<t.length-1;){if((re=t[++W])===void 0)continue;if(P)break;let g=we&&we[W];if(!le&&O(g,!0)&&g.color&&(Z=B(g.color).rgba,Z[0]/=255,Z[1]/=255,Z[2]/=255),le?(G=re[0],_=re[1],t[W+1]&&(De=t[W+1][0]),t[W-1]&&(J=t[W-1][0]),re.length>=3&&(Ie=re[2],re[2]>i.zMax&&(i.zMax=re[2]),re[2]<i.zMin&&(i.zMin=re[2]))):(G=re,_=se[W],t[W+1]&&(De=t[W+1]),t[W-1]&&(J=t[W-1]),y&&y.length&&(Ie=y[W],y[W]>i.zMax&&(i.zMax=y[W]),y[W]<i.zMin&&(i.zMin=y[W]))),!w&&(G===null||_===null)){V();continue}if(De&&De>=o&&De<=u&&(Ue=!0),J&&J>=o&&J<=u&&(de=!0),ue?(le&&(_=re.slice(1,3)),Be=_[0],_=_[1]):ze&&(G=re.x,Be=(_=re.stackY)-re.y),M!=null&&E!=null&&(Ee=_>=M&&_<=E),G>u&&d.x<u&&(d.x=G,d.y=_),G<o&&r.x>o&&(r.x=G,r.y=_),_!==null||!w){if(_===null||!Ee&&!Ue&&!de){V();continue}if(c&&(De>=o||G>=o)&&(J<=u||G<=u)&&(Te=!0),Te||Ue||de){if(Ce&&G-J>Ce&&V(),n){let b;n.some((R,I)=>{let x=n[I-1];return m==="x"?R.value!==void 0&&G<=R.value&&(pe[I]&&(!x||G>=x.value)&&(b=pe[I]),!0):R.value!==void 0&&_<=R.value&&(pe[I]&&(!x||_>=x.value)&&(b=pe[I]),!0)}),Z=b||ne||Z}if(s.useGPUTranslations||(i.skipTranslation=!0,G=ge.toPixels(G,!0),_=N.toPixels(_,!0),!(G>a)||i.drawMode!=="POINTS")){if(i.hasMarkers&&Te&&L!==!1&&(e.closestPointRangePx=Math.min(e.closestPointRangePx,Math.abs(G-L))),!s.useGPUTranslations&&!s.usePreallocated&&L&&1>Math.abs(G-L)&&te&&1>Math.abs(_-te)){s.debug.showSkipSummary&&++Ae;continue}A&&(F=Be,(Be===!1||Be===void 0)&&(F=_<0?_:0),(ue||ze)&&!N.logarithmic||(F=Math.max(U===null?M:U,M)),s.useGPUTranslations||(F=N.toPixels(F,!0)),fe(G,F,0,0,Z)),j.step&&!oe&&fe(G,te,0,2,Z),fe(G,_,0,e.type==="bubble"?Ie||1:2,Z),L=G,te=_,ke=!0,oe=!1}}}}s.debug.showSkipSummary&&console.log("skipped points:",Ae);let Ne=(g,b)=>{if(s.useGPUTranslations||(i.skipTranslation=!0,g.x=ge.toPixels(g.x,!0),g.y=N.toPixels(g.y,!0)),b){this.data=[g.x,g.y,0,2].concat(this.data);return}fe(g.x,g.y,0,2)};!ke&&w!==!1&&e.drawMode==="line_strip"&&(r.x<Number.MAX_VALUE&&Ne(r,!0),d.x>-Number.MAX_VALUE&&Ne(d)),Xe()}pushSeries(e){let i=this.markerData,h=this.series,s=this.settings;h.length>0&&h[h.length-1].hasMarkers&&(h[h.length-1].markerTo=i.length),s.debug.timeSeriesProcessing&&console.time("building "+e.type+" series");let ie={segments:[],markerFrom:i.length,colorData:[],series:e,zMin:Number.MAX_VALUE,zMax:-Number.MAX_VALUE,hasMarkers:!!e.options.marker&&e.options.marker.enabled!==!1,showMarkers:!0,drawMode:ee[e.type]||"LINE_STRIP"};e.index>=h.length?h.push(ie):h[e.index]=ie,this.pushSeriesData(e,ie),s.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 i=this.shader;if(!i)return;let h=this.getPixelRatio();i.setUniform("xAxisTrans",e.transA*h),i.setUniform("xAxisMin",e.min),i.setUniform("xAxisMinPad",e.minPixelPadding*h),i.setUniform("xAxisPointRange",e.pointRange),i.setUniform("xAxisLen",e.len*h),i.setUniform("xAxisPos",e.pos*h),i.setUniform("xAxisCVSCoord",!e.horiz),i.setUniform("xAxisIsLog",!!e.logarithmic),i.setUniform("xAxisReversed",!!e.reversed)}setYAxis(e){let i=this.shader;if(!i)return;let h=this.getPixelRatio();i.setUniform("yAxisTrans",e.transA*h),i.setUniform("yAxisMin",e.min),i.setUniform("yAxisMinPad",e.minPixelPadding*h),i.setUniform("yAxisPointRange",e.pointRange),i.setUniform("yAxisLen",e.len*h),i.setUniform("yAxisPos",e.pos*h),i.setUniform("yAxisCVSCoord",!e.horiz),i.setUniform("yAxisIsLog",!!e.logarithmic),i.setUniform("yAxisReversed",!!e.reversed)}setThreshold(e,i){let h=this.shader;h&&(h.setUniform("hasThreshold",e),h.setUniform("translatedThreshold",i))}renderChart(e){let i=this.gl,h=this.settings,s=this.shader,ie=this.vbuffer,ue=this.getPixelRatio();if(!e)return!1;this.width=e.chartWidth*ue,this.height=e.chartHeight*ue;let p=this.height,j=this.width;if(!i||!s||!j||!p)return!1;h.debug.timeRendering&&console.time("gl rendering"),i.canvas.width=j,i.canvas.height=p,s.bind(),i.viewport(0,0,j,p),s.setPMatrix(ae.orthoMatrix(j,p)),h.lineWidth>1&&!k.isMS&&i.lineWidth(h.lineWidth),ie&&(ie.build(this.data,"aVertexPosition",4),ie.bind()),s.setInverted(e.inverted),this.series.forEach((c,ge)=>{var le,w,he;let N=c.series.options,ze=N.marker,we=N.lineWidth!==void 0?N.lineWidth:1,Oe=N.threshold,o=l(Oe),u=c.series.yAxis.getThreshold(Oe),f=Q(N.marker?N.marker.enabled:null,!!c.series.xAxis.isRadial||null,c.series.closestPointRangePx>2*((N.marker?N.marker.radius:10)||10)),M=this.textureHandles[ze&&ze.symbol||c.series.symbol]||this.textureHandles.circle,E,X,se,y=[];if(c.segments.length!==0&&c.segments[0].from!==c.segments[0].to&&(M.isReady&&(i.bindTexture(i.TEXTURE_2D,M.handle),s.setTexture(M.handle)),e.styledMode?c.series.markerGroup===((le=c.series.chart.boost)==null?void 0:le.markerGroup)?(delete c.series.markerGroup,c.series.markerGroup=c.series.plotGroup("markerGroup","markers","visible",1,e.seriesGroup).addClass("highcharts-tracker"),se=c.series.markerGroup.getStyle("fill"),c.series.markerGroup.destroy(),c.series.markerGroup=(w=c.series.chart.boost)==null?void 0:w.markerGroup):se=(he=c.series.markerGroup)==null?void 0:he.getStyle("fill"):(se=c.drawMode==="POINTS"&&c.series.pointAttribs&&c.series.pointAttribs().fill||c.series.color,N.colorByPoint&&(se=c.series.chart.options.colors[ge])),c.series.fillOpacity&&N.fillOpacity&&(se=new T(se).setOpacity(Q(N.fillOpacity,1)).get()),y=B(se).rgba,h.useAlpha||(y[3]=1),N.boostBlending==="add"?(i.blendFunc(i.SRC_ALPHA,i.ONE),i.blendEquation(i.FUNC_ADD)):N.boostBlending==="mult"||N.boostBlending==="multiply"?i.blendFunc(i.DST_COLOR,i.ZERO):N.boostBlending==="darken"?(i.blendFunc(i.ONE,i.ONE),i.blendEquation(i.FUNC_MIN)):i.blendFuncSeparate(i.SRC_ALPHA,i.ONE_MINUS_SRC_ALPHA,i.ONE,i.ONE_MINUS_SRC_ALPHA),s.reset(),c.colorData.length>0?(s.setUniform("hasColor",1),(X=new q(i,s)).build(Array(c.segments[0].from).concat(c.colorData),"aColor",4),X.bind()):(s.setUniform("hasColor",0),i.disableVertexAttribArray(i.getAttribLocation(s.getProgram(),"aColor"))),s.setColor(y),this.setXAxis(c.series.xAxis),this.setYAxis(c.series.yAxis),this.setThreshold(o,u),c.drawMode==="POINTS"&&s.setPointSize(2*Q(N.marker&&N.marker.radius,.5)*ue),s.setSkipTranslation(c.skipTranslation),c.series.type==="bubble"&&s.setBubbleUniforms(c.series,c.zMin,c.zMax,ue),s.setDrawAsCircle(xe[c.series.type]||!1),ie)){if(we>0||c.drawMode!=="LINE_STRIP")for(E=0;E<c.segments.length;E++)ie.render(c.segments[E].from,c.segments[E].to,c.drawMode);if(c.hasMarkers&&f)for(s.setPointSize(2*Q(N.marker&&N.marker.radius,5)*ue),s.setDrawAsCircle(!0),E=0;E<c.segments.length;E++)ie.render(c.segments[E].from,c.segments[E].to,"POINTS")}}),h.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,i){let h=this.shader;h&&(this.width!==e||this.height!==i)&&(this.width=e,this.height=i,h.bind(),h.setPMatrix(ae.orthoMatrix(e,i)))}init(e,i){let h=this.settings;if(this.isInited=!1,!e)return!1;h.debug.timeSetup&&console.time("gl setup");for(let p=0;p<Pe.length&&(this.gl=e.getContext(Pe[p],{}),!this.gl);++p);let s=this.gl;if(!s)return!1;i||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 ie=this.shader=new v(s);if(!ie)return!1;this.vbuffer=new q(s,ie);let ue=(p,j)=>{let c={isReady:!1,texture:be.createElement("canvas"),handle:s.createTexture()},ge=c.texture.getContext("2d");this.textureHandles[p]=c,c.texture.width=512,c.texture.height=512,ge.mozImageSmoothingEnabled=!1,ge.webkitImageSmoothingEnabled=!1,ge.msImageSmoothingEnabled=!1,ge.imageSmoothingEnabled=!1,ge.strokeStyle="rgba(255, 255, 255, 0)",ge.fillStyle="#FFF",j(ge);try{s.activeTexture(s.TEXTURE0),s.bindTexture(s.TEXTURE_2D,c.handle),s.texImage2D(s.TEXTURE_2D,0,s.RGBA,s.RGBA,s.UNSIGNED_BYTE,c.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),c.isReady=!0}catch{}};return ue("circle",p=>{p.beginPath(),p.arc(256,256,256,0,2*Math.PI),p.stroke(),p.fill()}),ue("square",p=>{p.fillRect(0,0,512,512)}),ue("diamond",p=>{p.beginPath(),p.moveTo(256,0),p.lineTo(512,256),p.lineTo(256,512),p.lineTo(0,256),p.lineTo(256,0),p.fill()}),ue("triangle",p=>{p.beginPath(),p.moveTo(0,512),p.lineTo(256,0),p.lineTo(512,512),p.lineTo(0,512),p.fill()}),ue("triangle-down",p=>{p.beginPath(),p.moveTo(0,0),p.lineTo(256,512),p.lineTo(512,0),p.lineTo(0,0),p.fill()}),this.isInited=!0,h.debug.timeSetup&&console.timeEnd("gl setup"),!0}destroy(){let e=this.gl,i=this.shader,h=this.vbuffer;this.flush(),h&&h.destroy(),i&&i.destroy(),e&&(z(this.textureHandles,s=>{s.handle&&e.deleteTexture(s.handle)}),e.canvas.width=1,e.canvas.height=1)}}return ae}),ye(C,"Extensions/Boost/BoostSeries.js",[C["Extensions/Boost/BoostableMap.js"],C["Extensions/Boost/Boostables.js"],C["Extensions/Boost/BoostChart.js"],C["Core/Defaults.js"],C["Core/Globals.js"],C["Core/Utilities.js"],C["Extensions/Boost/WGLRenderer.js"]],function(T,k,H,ee,v,q,B){let be,Me,{getBoostClipRect:l,isChartSeriesBoosting:O}=H,{getOptions:Y}=ee,{composed:z,doc:Q,noop:K,win:xe}=v,{addEvent:Pe,destroyObjectProperties:ae,error:ce,extend:e,fireEvent:i,isArray:h,isNumber:s,pick:ie,pushUnique:ue,wrap:p,defined:j}=q;function c(t,r){let d=r.boost;t&&d&&d.target&&d.canvas&&!O(r.chart)&&t.allocateBufferForSingleSeries(r)}function ge(t){return ie(t&&t.options&&t.options.boost&&t.options.boost.enabled,!0)}function N(t,r){var L,te,F;let d=t.constructor,P=t.seriesGroup||r.group,A=t.chartWidth,m=t.chartHeight,n=t,U=typeof SVGForeignObjectElement<"u",D=!1;O(t)?n=t:(n=r,D=!!((L=r.options.events)!=null&&L.click||(F=(te=r.options.point)==null?void 0:te.events)!=null&&F.click));let a=n.boost=n.boost||{};if(U=!1,Me||(Me=Q.createElement("canvas")),!a.target&&(a.canvas=Me,t.renderer.forExport||!U?(n.renderTarget=a.target=t.renderer.image("",0,0,A,m).addClass("highcharts-boost-canvas").add(P),a.clear=function(){a.target.attr({href:"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAQAAAC1HAwCAAAAC0lEQVR42mNkYAAAAAYAAjCB0C8AAAAASUVORK5CYII="})},a.copy=function(){a.resize(),a.target.attr({href:a.canvas.toDataURL("image/png")})}):(a.targetFo=t.renderer.createElement("foreignObject").add(P),n.renderTarget=a.target=Q.createElement("canvas"),a.targetCtx=a.target.getContext("2d"),a.targetFo.element.appendChild(a.target),a.clear=function(){a.target.width=a.canvas.width,a.target.height=a.canvas.height},a.copy=function(){a.target.width=a.canvas.width,a.target.height=a.canvas.height,a.targetCtx.drawImage(a.canvas,0,0)}),a.resize=function(){var $,Ae;A=t.chartWidth,m=t.chartHeight,(a.targetFo||a.target).attr({x:0,y:0,width:A,height:m}).css({pointerEvents:D?void 0:"none",mixedBlendMode:"normal",opacity:1}).addClass(D?"highcharts-tracker":""),n instanceof d&&((Ae=($=n.boost)==null?void 0:$.markerGroup)==null||Ae.translate(t.plotLeft,t.plotTop))},a.clipRect=t.renderer.clipRect(),(a.targetFo||a.target).attr({zIndex:r.options.zIndex}),n instanceof d&&(n.boost.markerGroup=n.renderer.g().add(P).translate(r.xAxis.pos,r.yAxis.pos))),a.canvas.width=A,a.canvas.height=m,a.clipRect){let $=l(t,n),Ae=$.width===t.clipBox.width&&$.height===t.clipBox.height?P:a.targetFo||a.target;a.clipRect.attr($),Ae==null||Ae.clip(a.clipRect)}return a.resize(),a.clear(),!a.wgl&&(a.wgl=new B($=>{$.settings.debug.timeBufferCopy&&console.time("buffer copy"),a.copy(),$.settings.debug.timeBufferCopy&&console.timeEnd("buffer copy")}),a.wgl.init(a.canvas)||ce("[highcharts boost] - unable to init WebGL renderer"),a.wgl.setOptions(t.options.boost||{}),n instanceof d&&a.wgl.allocateBuffer(t)),a.wgl.setSize(A,m),a.wgl}function ze(t){let r=t.points;if(r){let d,P;for(P=0;P<r.length;P+=1)(d=r[P])&&d.destroyElements&&d.destroyElements()}for(let d of(["graph","area","tracker"].forEach(P=>{let A=t[P];A&&(t[P]=A.destroy())}),t.zones))ae(d,void 0,!0)}function we(t,r,d,P,A,m){let n=(A=A||0)+(P=P||3e3),U=!0;for(;U&&A<n&&A<t.length;)U=r(t[A],A),++A;U&&(A<t.length?m?we(t,r,d,P,A,m):xe.requestAnimationFrame?xe.requestAnimationFrame(function(){we(t,r,d,P,A)}):setTimeout(we,0,t,r,d,P,A):d&&d())}function Oe(t,r){let d=t.options,P=d.data,A=t.xAxis&&t.xAxis.options,m=t.yAxis&&t.yAxis.options,n=t.colorAxis&&t.colorAxis.options;return P.length>(d.boostThreshold||Number.MAX_VALUE)&&s(m.min)&&s(m.max)&&(!r||s(A.min)&&s(A.max))&&(!n||s(n.min)&&s(n.max))}let o=(t,r)=>!t.forceCrop&&(O(t.chart)||(r?r.length:0)>=(t.options.boostThreshold||Number.MAX_VALUE));function u(){let t=this,r=t.chart;r.boost&&r.boost.markerGroup===t.markerGroup&&(t.markerGroup=null),r.hoverPoints&&(r.hoverPoints=r.hoverPoints.filter(function(d){return d.series===t})),r.hoverPoint&&r.hoverPoint.series===t&&(r.hoverPoint=null)}function f(){let t=this.boost;t&&t.canvas&&t.target&&(t.wgl&&t.wgl.clear(),t.clear&&t.clear())}function M(t){let r=t.boost;r&&r.canvas&&r.target&&r.wgl&&!O(t.chart)&&r.wgl.render(t.chart)}function E(t,r){let d=t.options,P=t.xAxis,A=t.pointClass;if(r instanceof A)return r;let m=t.xData||d.xData||t.processedXData||!1,n=new A(t,(t.options.data||[])[r.i],m?m[r.i]:void 0);return n.category=ie(P.categories?P.categories[n.x]:n.x,n.x),n.dist=r.dist,n.distX=r.distX,n.plotX=r.plotX,n.plotY=r.plotY,n.index=r.i,n.percentage=r.percentage,n.isInside=t.isPointInside(n),n}function X(t){var r,d,P,A;let{options:m,xAxis:n,yAxis:U}=this;if(!this.isDirty&&!n.isDirty&&!U.isDirty&&!t)return!1;this.yAxis.setTickInterval();let D=m.boostThreshold||0,a=m.cropThreshold,L=m.data||this.data,te=this.xData,F=n.getExtremes(),$=F.max??Number.MAX_VALUE,Ae=F.min??-Number.MAX_VALUE,ke=this.yData,G=U.getExtremes(),_=G.max??Number.MAX_VALUE,re=G.min??-Number.MAX_VALUE;if(!this.boosted&&n.old&&U.old&&Ae>=(n.old.min??-Number.MAX_VALUE)&&$<=(n.old.max??Number.MAX_VALUE)&&re>=(U.old.min??-Number.MAX_VALUE)&&_<=(U.old.max??Number.MAX_VALUE))return this.processedXData??(this.processedXData=te),this.processedYData??(this.processedYData=ke),!0;if(!D||L.length<D||a&&!this.forceCrop&&!this.getExtremesFromAll&&!m.getExtremesFromAll&&L.length<a)return this.processedXData=te,this.processedYData=ke,!0;let Ie=[],W=[],J=[],De=!(s(F.max)||s(F.min)),Be=!(s(G.max)||s(G.min)),Ue=!1,de,Z=te[0],Te=te[0],Ee,oe=ke[0],pe=ke[0];for(let ne=0,Ce=te.length;ne<Ce;++ne)de=te[ne],Ee=ke[ne],de>=Ae&&de<=$&&Ee>=re&&Ee<=_?(Ie.push({x:de,y:Ee}),W.push(de),J.push(Ee),De&&(Z=Math.max(Z,de),Te=Math.min(Te,de)),Be&&(oe=Math.max(oe,Ee),pe=Math.min(pe,Ee))):Ue=!0;return De&&((r=n.options).max??(r.max=Z),(d=n.options).min??(d.min=Te)),Be&&((P=U.options).max??(P.max=oe),(A=U.options).min??(A.min=pe)),this.cropped=Ue,this.cropStart=0,this.processedXData=W,this.processedYData=J,o(this,W)||(this.processedData=Ie),!0}function se(){let t=this.options||{},r=this.chart,d=r.boost,P=this.boost,A=this.xAxis,m=this.yAxis,n=t.xData||this.processedXData,U=t.yData||this.processedYData,D=this.processedData||t.data,a=A.getExtremes(),L=a.min-(A.minPointOffset||0),te=a.max+(A.minPointOffset||0),F=m.getExtremes(),$=F.min-(m.minPointOffset||0),Ae=F.max+(m.minPointOffset||0),ke={},G=!!this.sampling,_=t.enableMouseTracking,re=t.threshold,Ie=this.pointArrayMap&&this.pointArrayMap.join(",")==="low,high",W=!!t.stacking,J=this.cropStart||0,De=this.requireSorting,Be=!n,Ue=t.findNearestPointBy==="x",de=this.xData||this.options.xData||this.processedXData||!1,Z=ie(t.lineWidth,1),Te=!1,Ee,oe=m.getThreshold(re),pe,ne,Ce,Se;if(A.isPanning||m.isPanning||(Te=N(r,this),r.boosted=!0,!this.visible))return;(this.points||this.graph)&&ze(this),O(r)?(this.markerGroup&&this.markerGroup!==(d==null?void 0:d.markerGroup)&&this.markerGroup.destroy(),this.markerGroup=d==null?void 0:d.markerGroup,P&&P.target&&(this.renderTarget=P.target=P.target.destroy())):(this.markerGroup===(d==null?void 0:d.markerGroup)&&(this.markerGroup=void 0),this.markerGroup=this.plotGroup("markerGroup","markers","visible",1,r.seriesGroup).addClass("highcharts-tracker"));let Le=this.points=[],fe=(V,ve,Ne,g)=>{let b=!!de&&de[J+Ne],R=I=>{r.inverted&&(I=A.len-I,ve=m.len-ve),Le.push({destroy:K,x:b,clientX:I,plotX:I,plotY:ve,i:J+Ne,percentage:g})};V=Math.ceil(V),be=Ue?V:V+","+ve,_&&(ke[be]?b===de[de.length-1]&&(Le.length--,R(V)):(ke[be]=!0,R(V)))};this.buildKDTree=K,i(this,"renderCanvas"),this.is("line")&&Z>1&&(P!=null&&P.target)&&d&&!d.lineWidthFilter&&(d.lineWidthFilter=r.renderer.definition({tagName:"filter",children:[{tagName:"feMorphology",attributes:{operator:"dilate",radius:.25*Z}}],attributes:{id:"linewidth"}}),P.target.attr({filter:"url(#linewidth)"})),Te&&(c(Te,this),Te.pushSeries(this),M(this));let Xe=Te.settings;r.renderer.forExport||(Xe.debug.timeKDTree&&console.time("kd tree building"),we(W?this.data.slice(J):n||D,function(V,ve){let Ne=r.index===void 0,g,b,R,I,x,S=!1,me=!0;return!j(V)||(!Ne&&(Be?(g=V[0],b=V[1]):(g=V,b=U[ve]),Ie?(Be&&(b=V.slice(1,3)),S=b[0],b=b[1]):W&&(g=V.x,S=(b=V.stackY)-V.y,x=V.percentage),De||(me=(b||0)>=$&&b<=Ae),b!==null&&g>=L&&g<=te&&me&&(R=A.toPixels(g,!0),G?((Ce===void 0||R===Ee)&&(Ie||(S=b),(Se===void 0||b>ne)&&(ne=b,Se=ve),(Ce===void 0||S<pe)&&(pe=S,Ce=ve)),Ue&&R===Ee||(Ce!==void 0&&(I=m.toPixels(ne,!0),oe=m.toPixels(pe,!0),fe(R,I,Se,x),oe!==I&&fe(R,oe,Ce,x)),Ce=Se=void 0,Ee=R)):fe(R,I=Math.ceil(m.toPixels(b,!0)),ve,x))),!Ne)},()=>{i(this,"renderedCanvas"),delete this.buildKDTree,this.options&&this.buildKDTree(),Xe.debug.timeKDTree&&console.timeEnd("kd tree building")}))}function y(t){let r=!0;if(this.chart.options&&this.chart.options.boost&&(r=this.chart.options.boost.enabled===void 0||this.chart.options.boost.enabled),!r||!this.boosted)return t.call(this);this.chart.boosted=!0;let d=N(this.chart,this);d&&(c(d,this),d.pushSeries(this)),M(this)}function le(t){if(this.boosted){if(Oe(this))return{};if(this.xAxis.isPanning||this.yAxis.isPanning)return this}return t.apply(this,[].slice.call(arguments,1))}function w(t){var d,P;let r=this.options.data;if(ge(this.chart)&&T[this.type]){let A=this.is("scatter")&&!this.is("bubble")&&!this.is("heatmap");if(!o(this,r)||A||this.options.stacking||!Oe(this,!0)){if(this.boosted&&((d=this.xAxis)!=null&&d.isPanning||(P=this.yAxis)!=null&&P.isPanning))return;A&&!this.yAxis.treeGrid?X.call(this,arguments[1]):t.apply(this,[].slice.call(arguments,1)),r=this.processedXData}if(this.boosted=o(this,r),this.boosted){let m;this.options.data&&this.options.data.length&&!s(m=this.getFirstValidPoint(this.options.data))&&!h(m)&&ce(12,!1,this.chart),function(n){var D;n.boost=n.boost||{getPoint:a=>E(n,a)};let U=n.boost.altered=[];if(["allowDG","directTouch","stickyTracking"].forEach(a=>{U.push({prop:a,val:n[a],own:Object.hasOwnProperty.call(n,a)})}),n.allowDG=!1,n.directTouch=!1,n.stickyTracking=!0,n.finishedAnimating=!0,n.labelBySeries&&(n.labelBySeries=n.labelBySeries.destroy()),n.is("scatter")&&n.data.length){for(let a of n.data)(D=a==null?void 0:a.destroy)==null||D.call(a);n.data.length=0,n.points.length=0,delete n.processedData}}(this)}else(function(m){var a;let n=m.boost,U=m.chart,D=U.boost;if(D!=null&&D.markerGroup)for(let L of(D.markerGroup.destroy(),D.markerGroup=void 0,U.series))L.markerGroup=void 0,L.markerGroup=L.plotGroup("markerGroup","markers","visible",1,U.seriesGroup).addClass("highcharts-tracker");n&&((n.altered||[]).forEach(L=>{L.own?m[L.prop]=L.val:delete m[L.prop]}),n.clear&&n.clear()),(a=U.seriesGroup||m.group)==null||a.clip()})(this)}else t.apply(this,[].slice.call(arguments,1))}function he(t){let r=t.apply(this,[].slice.call(arguments,1));return this.boost&&r?this.boost.getPoint(r):r}return{compose:function(t,r,d){if(ue(z,"Boost.Series")){let P=Y().plotOptions,A=t.prototype;if(Pe(t,"destroy",u),Pe(t,"hide",f),d&&(A.renderCanvas=se),p(A,"getExtremes",le),p(A,"processData",w),p(A,"searchPoint",he),["translate","generatePoints","drawTracker","drawPoints","render"].forEach(m=>function(n,U,D){function a(L){let te=this.options.stacking&&(D==="translate"||D==="generatePoints");this.boosted&&!te&&ge(this.chart)&&this.type!=="heatmap"&&this.type!=="treemap"&&T[this.type]&&this.options.boostThreshold!==0?D==="render"&&this.renderCanvas&&this.renderCanvas():L.call(this)}if(p(n,D,a),D==="translate")for(let L of["column","arearange","columnrange","heatmap","treemap"])U[L]&&p(U[L].prototype,D,a)}(A,r,m)),k.forEach(m=>{let n=P[m];n&&(n.boostThreshold=5e3,n.boostData=[],r[m].prototype.fillOpacity=!0)}),d){let{area:m,areaspline:n,bubble:U,column:D,heatmap:a,scatter:L,treemap:te}=r;if(m&&e(m.prototype,{fill:!0,fillOpacity:!0,sampling:!0}),n&&e(n.prototype,{fill:!0,fillOpacity:!0,sampling:!0}),U){let F=U.prototype;delete F.buildKDTree,p(F,"markerAttribs",function($){return!this.boosted&&$.apply(this,[].slice.call(arguments,1))})}D&&e(D.prototype,{fill:!0,sampling:!0}),L&&(L.prototype.fill=!0),[a,te].forEach(F=>{F&&p(F.prototype,"drawPoints",y)})}}return t},destroyGraphics:ze,eachAsync:we,getPoint:E}}),ye(C,"Extensions/BoostCanvas.js",[C["Extensions/Boost/BoostChart.js"],C["Extensions/Boost/BoostSeries.js"],C["Core/Color/Color.js"],C["Core/Globals.js"],C["Core/Utilities.js"]],function(T,k,H,ee,v){var q;let{getBoostClipRect:B,isChartSeriesBoosting:be}=T,{destroyGraphics:Me}=k,{parse:l}=H,{doc:O,noop:Y}=ee,{addEvent:z,fireEvent:Q,isNumber:K,merge:xe,pick:Pe,wrap:ae}=v;return function(ce){let e,i="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAQAAAC1HAwCAAAAC0lEQVR42mNkYAAAAAYAAjCB0C8AAAAASUVORK5CYII=";function h(o,u,f,M,E){E&&u!==E.clientX&&(o.moveTo(E.clientX,E.yBottom),o.lineTo(E.clientX,E.plotY),o.lineTo(u,f),o.lineTo(u,M))}function s(o,u,f,M,E){o.moveTo(u,f),o.arc(u,f,this.radii&&this.radii[E],0,2*Math.PI,!1)}function ie(o,u,f,M){o.rect(u-1,f,1,M-f)}function ue(){this.boost&&this.boost.copy&&this.boost.copy()}function p(){let o=this.boost||{};o.target&&o.target.attr({href:i}),o.canvas&&o.canvas.getContext("2d").clearRect(0,0,o.canvas.width,o.canvas.height)}function j(){be(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 c(o,u,f){o.lineTo(u,f)}function ge(){let o,u=this.chart,f=be(u)?u:this,M=f===u?u.seriesGroup:u.seriesGroup||this.group,E=u.chartWidth,X=u.chartHeight,se=function(le,w,he,t,r,d,P){le.call(this,he,w,t,r,d,P)},y=f.boost=f.boost||{};return o=y.targetCtx,y.canvas||(y.canvas=O.createElement("canvas"),y.target=u.renderer.image("",0,0,E,X).addClass("highcharts-boost-canvas").add(M),o=y.targetCtx=y.canvas.getContext("2d"),u.inverted&&["moveTo","lineTo","rect","arc"].forEach(le=>{ae(o,le,se)}),y.copy=function(){y.target.attr({href:y.canvas.toDataURL("image/png")})},y.clear=function(){o.clearRect(0,0,y.canvas.width,y.canvas.height),f===y.target&&y.target.attr({href:i})},y.clipRect=u.renderer.clipRect(),y.target.clip(y.clipRect)),y.canvas.width!==E&&(y.canvas.width=E),y.canvas.height!==X&&(y.canvas.height=X),y.target.attr({x:0,y:0,width:E,height:X,style:"pointer-events: none",href:i}),y.clipRect&&y.clipRect.attr(B(u,f)),o}function N(){let o=this,u=o.options,f=o.chart,M=o.xAxis,E=o.yAxis,X=f.options.boost||{},se={timeRendering:X.timeRendering||!1,timeSeriesProcessing:X.timeSeriesProcessing||!1,timeSetup:X.timeSetup||!1},y=o.processedXData,le=o.processedYData,w=u.data,he=M.getExtremes(),t=he.min,r=he.max,d=E.getExtremes(),P=d.min,A=d.max,m={},n=!!o.sampling,U=u.marker&&u.marker.radius,D=o.cvsStrokeBatch||1e3,a=u.enableMouseTracking,L=u.threshold,te=K(L),F=E.getThreshold(L),$=o.fill,Ae=o.pointArrayMap&&o.pointArrayMap.join(",")==="low,high",ke=!!u.stacking,G=o.cropStart||0,_=f.options.loading,re=o.requireSorting,Ie=u.connectNulls,W=!y,J=ke?o.data:y||w,De=o.fillOpacity?H.parse(o.color).setOpacity(Pe(u.fillOpacity,.75)).get():o.color,Be=u.findNearestPointBy==="x",Ue=this.boost||{},de=o.cvsDrawPoint,Z=u.lineWidth?o.cvsLineTo:void 0,Te=U&&U<=1?o.cvsMarkerSquare:o.cvsMarkerCircle;Ue.target&&Ue.target.attr({href:i}),(o.points||o.graph)&&Me(o),o.plotGroup("group","series",o.visible?"visible":"hidden",u.zIndex,f.seriesGroup),o.markerGroup=o.group,z(o,"destroy",function(){o.markerGroup=null});let Ee=this.points=[],oe=this.getContext();if(o.buildKDTree=Y,Ue.clear&&Ue.clear(),!o.visible)return;w.length>99999&&(f.options.loading=xe(_,{labelStyle:{backgroundColor:l("#ffffff").setOpacity(.75).get(),padding:"1em",borderRadius:"0.5em"},style:{backgroundColor:"none",opacity:1}}),v.clearTimeout(e),f.showLoading("Drawing..."),f.options.loading=_),se.timeRendering&&console.time("canvas rendering");let pe=0,ne,Ce,Se=F,Le,fe,Xe,V,ve,Ne,g=function(){$?(oe.fillStyle=De,oe.fill()):(oe.strokeStyle=o.color,oe.lineWidth=u.lineWidth,oe.stroke())},b=function(x,S,me,Ge){pe===0&&(oe.beginPath(),Z&&(oe.lineJoin="round")),f.scroller&&o.options.className==="highcharts-navigator-series"?(S+=f.scroller.top,me&&(me+=f.scroller.top)):S+=f.plotTop,x+=f.plotLeft,Le?oe.moveTo(x,S):de?de(oe,x,S,me,Ce):Z?Z(oe,x,S):Te&&Te.call(o,oe,x,S,U,Ge),(pe+=1)===D&&(g(),pe=0),Ce={clientX:x,plotY:S,yBottom:me}},R=this.xData||this.options.xData||this.processedXData||!1,I=function(x,S,me){Ne=Be?x:x+","+S,a&&!m[Ne]&&(m[Ne]=!0,f.inverted&&(x=M.len-x,S=E.len-S),Ee.push({x:!!R&&R[G+me],clientX:x,plotX:x,plotY:S,i:G+me}))};k.eachAsync(J,(x,S)=>{let me=f.index===void 0,Ge,Re,Ve,je,Ke,We,Ze=!1,qe=!1,Ye=NaN,He=NaN,Qe=!0;return!me&&(W?(Ge=x[0],Re=x[1],J[S+1]&&(Ye=J[S+1][0]),J[S-1]&&(He=J[S-1][0])):(Ge=x,Re=le[S],J[S+1]&&(Ye=J[S+1]),J[S-1]&&(He=J[S-1])),Ye&&Ye>=t&&Ye<=r&&(Ze=!0),He&&He>=t&&He<=r&&(qe=!0),Ae?(W&&(Re=x.slice(1,3)),We=Re[0],Re=Re[1]):ke&&(Ge=x.x,We=(Re=x.stackY)-x.y),Ke=Re===null,re||(Qe=Re>=P&&Re<=A),!Ke&&(Ge>=t&&Ge<=r&&Qe||Ze||qe)&&(Ve=Math.round(M.toPixels(Ge,!0)),n?((V===void 0||Ve===ne)&&(Ae||(We=Re),(ve===void 0||Re>Xe)&&(Xe=Re,ve=S),(V===void 0||We<fe)&&(fe=We,V=S)),Ve!==ne&&(V!==void 0&&(je=E.toPixels(Xe,!0),Se=E.toPixels(fe,!0),b(Ve,te?Math.min(je,F):je,te?Math.max(Se,F):Se,S),I(Ve,je,ve),Se!==je&&I(Ve,Se,V)),V=ve=void 0,ne=Ve)):(b(Ve,je=Math.round(E.toPixels(Re,!0)),Se,S),I(Ve,je,S))),Le=Ke&&!Ie,S%5e4==0&&(o.boost&&o.boost.copy?o.boost.copy():o.chart.boost&&o.chart.boost.copy&&o.chart.boost.copy())),!me},function(){let x=f.loadingDiv,S=f.loadingShown;g(),o.canvasToSVG(),se.timeRendering&&console.timeEnd("canvas rendering"),Q(o,"renderedCanvas"),S&&(x.style.transition="opacity 250ms",x.opacity=0,f.loadingShown=!1,e=setTimeout(function(){x.parentNode&&x.parentNode.removeChild(x),f.loadingDiv=f.loadingSpan=null},250)),delete o.buildKDTree,o.buildKDTree()},f.renderer.forExport?Number.MAX_VALUE:void 0)}function ze(o,u,f,M){o.moveTo(u,f),o.arc(u,f,M,0,2*Math.PI,!1)}function we(o,u,f,M){o.rect(u-M,f-M,2*M,2*M)}function Oe(){let o=this.chart,u=this.getContext(),f=this.chart.inverted,M=this.xAxis,E=this.yAxis;u?(this.points.forEach(X=>{let se,y=X.plotY;if(y!==void 0&&!isNaN(y)&&X.y!==null&&u){let{x:le=0,y:w=0,width:he=0,height:t=0}=X.shapeArgs||{};se=o.styledMode?X.series.colorAttribs(X):X.series.pointAttribs(X),u.fillStyle=se.fill,f?u.fillRect(E.len-w+M.left,M.len-le+E.top,-t,-he):u.fillRect(le+M.left,w+E.top,he,t)}}),this.canvasToSVG()):this.chart.showLoading("Your browser doesn't support HTML5 canvas, <br>please use a modern browser")}ce.compose=function(o,u,f){let M=u.prototype;if(!M.renderCanvas){let{area:E,bubble:X,column:se,heatmap:y,scatter:le}=f;if(o.prototype.callbacks.push(w=>{z(w,"predraw",p),z(w,"render",ue)}),M.canvasToSVG=j,M.cvsLineTo=c,M.getContext=ge,M.renderCanvas=N,E){let w=E.prototype;w.cvsDrawPoint=h,w.fill=!0,w.fillOpacity=!0,w.sampling=!0}if(X){let w=X.prototype;w.cvsMarkerCircle=s,w.cvsStrokeBatch=1}if(se){let w=se.prototype;w.cvsDrawPoint=ie,w.fill=!0,w.sampling=!0}if(y&&ae(y.prototype,"drawPoints",Oe),le){let w=le.prototype;w.cvsMarkerCircle=ze,w.cvsMarkerSquare=we,w.fill=!0}}}}(q||(q={})),q}),ye(C,"masters/modules/boost-canvas.src.js",[C["Core/Globals.js"],C["Extensions/BoostCanvas.js"]],function(T,k){return T.initCanvasBoost=function(){k.compose(T.Chart,T.Series,T.seriesTypes)},T})})})($e);var Je=$e.exports;const it=et(Je),ot=tt({__proto__:null,default:it},[Je]);export{ot as b};
