티스토리 수익 글 보기

티스토리 수익 글 보기

(globalThis.webpackChunk_github_ui_github_ui=globalThis.webpackChunk_github_ui_github_ui||[]).push([[54180],{9264:(e,x,b)=>{var E,L;L=function(e){“use strict”;var x=e?e._modules:{};function b(e,x,b,E){e.hasOwnProperty(x)||(e[x]=E.apply(null,b),”function”==typeof CustomEvent&&window.dispatchEvent(new CustomEvent(“HighchartsModuleLoaded”,{detail:{path:x,module:e[x]}})))}b(x,”Core/Chart/ChartNavigationComposition.js”,[],function(){var e;return function(e){e.compose=function(e){return e.navigation||(e.navigation=new t(e)),e};let t=class t{constructor(e){this.updates=[],this.chart=e}addUpdate(e){this.chart.navigation.updates.push(e)}update(e,x){this.updates.forEach(b=>{b.call(this.chart,e,x)})}};e.Additions=t}(e||(e={})),e}),b(x,”Extensions/Exporting/ExportingDefaults.js”,[x[“Core/Globals.js”]],function(e){let{isTouchDevice:x}=e;return{exporting:{allowTableSorting:!0,type:”image/png”,url:”https://export.highcharts.com/”,pdfFont:{normal:void 0,bold:void 0,bolditalic:void 0,italic:void 0},printMaxWidth:780,scale:2,buttons:{contextButton:{className:”highcharts-contextbutton”,menuClassName:”highcharts-contextmenu”,symbol:”menu”,titleKey:”contextButtonTitle”,menuItems:[“viewFullscreen”,”printChart”,”separator”,”downloadPNG”,”downloadJPEG”,”downloadPDF”,”downloadSVG”]}},menuItemDefinitions:{viewFullscreen:{textKey:”viewFullscreen”,onclick:function(){this.fullscreen&&this.fullscreen.toggle()}},printChart:{textKey:”printChart”,onclick:function(){this.print()}},separator:{separator:!0},downloadPNG:{textKey:”downloadPNG”,onclick:function(){this.exportChart()}},downloadJPEG:{textKey:”downloadJPEG”,onclick:function(){this.exportChart({type:”image/jpeg”})}},downloadPDF:{textKey:”downloadPDF”,onclick:function(){this.exportChart({type:”application/pdf”})}},downloadSVG:{textKey:”downloadSVG”,onclick:function(){this.exportChart({type:”image/svg+xml”})}}}},lang:{viewFullscreen:”View in full screen”,exitFullscreen:”Exit from full screen”,printChart:”Print chart”,downloadPNG:”Download PNG image”,downloadJPEG:”Download JPEG image”,downloadPDF:”Download PDF document”,downloadSVG:”Download SVG vector image”,contextButtonTitle:”Chart context menu”},navigation:{buttonOptions:{symbolSize:14,symbolX:14.5,symbolY:13.5,align:”right”,buttonSpacing:3,height:28,verticalAlign:”top”,width:28,symbolFill:”#666666″,symbolStroke:”#666666″,symbolStrokeWidth:3,theme:{fill:”#ffffff”,padding:5,stroke:”none”,”stroke-linecap”:”round”}},menuStyle:{border:”none”,borderRadius:”3px”,background:”#ffffff”,padding:”0.5em”},menuItemStyle:{background:”none”,borderRadius:”3px”,color:”#333333″,padding:”0.5em”,fontSize:x?”0.9em”:”0.8em”,transition:”background 250ms, color 250ms”},menuItemHoverStyle:{background:”#f2f2f2″}}}}),b(x,”Extensions/Exporting/ExportingSymbols.js”,[],function(){var e;return function(e){let x=[];function b(e,x,b,E){return[[“M”,e,x+2.5],[“L”,e+b,x+2.5],[“M”,e,x+E/2+.5],[“L”,e+b,x+E/2+.5],[“M”,e,x+E-1.5],[“L”,e+b,x+E-1.5]]}function E(e,x,b,E){let L=E/3-2;return[].concat(this.circle(b-L,x,L,L),this.circle(b-L,x+L+4,L,L),this.circle(b-L,x+2*(L+4),L,L))}e.compose=function(e){if(-1===x.indexOf(e)){x.push(e);let L=e.prototype.symbols;L.menu=b,L.menuball=E.bind(L)}}}(e||(e={})),e}),b(x,”Extensions/Exporting/Fullscreen.js”,[x[“Core/Renderer/HTML/AST.js”],x[“Core/Globals.js”],x[“Core/Utilities.js”]],function(e,x,b){let{composed:E}=x,{addEvent:L,fireEvent:O,pushUnique:D}=b;function j(){this.fullscreen=new a(this)}let a=class a{static compose(e){D(E,”Fullscreen”)&&L(e,”beforeRender”,j)}constructor(e){this.chart=e,this.isOpen=!1;let x=e.renderTo;!this.browserProps&&(“function”==typeof x.requestFullscreen?this.browserProps={fullscreenChange:”fullscreenchange”,requestFullscreen:”requestFullscreen”,exitFullscreen:”exitFullscreen”}:x.mozRequestFullScreen?this.browserProps={fullscreenChange:”mozfullscreenchange”,requestFullscreen:”mozRequestFullScreen”,exitFullscreen:”mozCancelFullScreen”}:x.webkitRequestFullScreen?this.browserProps={fullscreenChange:”webkitfullscreenchange”,requestFullscreen:”webkitRequestFullScreen”,exitFullscreen:”webkitExitFullscreen”}:x.msRequestFullscreen&&(this.browserProps={fullscreenChange:”MSFullscreenChange”,requestFullscreen:”msRequestFullscreen”,exitFullscreen:”msExitFullscreen”}))}close(){let e=this,x=e.chart,b=x.options.chart;O(x,”fullscreenClose”,null,function(){e.isOpen&&e.browserProps&&x.container.ownerDocument instanceof Document&&x.container.ownerDocument[e.browserProps.exitFullscreen](),e.unbindFullscreenEvent&&(e.unbindFullscreenEvent=e.unbindFullscreenEvent()),x.setSize(e.origWidth,e.origHeight,!1),e.origWidth=void 0,e.origHeight=void 0,b.width=e.origWidthOption,b.height=e.origHeightOption,e.origWidthOption=void 0,e.origHeightOption=void 0,e.isOpen=!1,e.setButtonText()})}open(){let e=this,x=e.chart,b=x.options.chart;O(x,”fullscreenOpen”,null,function(){if(b&&(e.origWidthOption=b.width,e.origHeightOption=b.height),e.origWidth=x.chartWidth,e.origHeight=x.chartHeight,e.browserProps){let b=L(x.container.ownerDocument,e.browserProps.fullscreenChange,function(){e.isOpen?(e.isOpen=!1,e.close()):(x.setSize(null,null,!1),e.isOpen=!0,e.setButtonText())}),E=L(x,”destroy”,b);e.unbindFullscreenEvent=()=>{b(),E()};let O=x.renderTo[e.browserProps.requestFullscreen]();O&&O.catch(function(){alert(“Full screen is not supported inside a frame.”)})}})}setButtonText(){let x=this.chart,b=x.exportDivElements,E=x.options.exporting,L=E&&E.buttons&&E.buttons.contextButton.menuItems,O=x.options.lang;if(E&&E.menuItemDefinitions&&O&&O.exitFullscreen&&O.viewFullscreen&&L&&b){let x=b[L.indexOf(“viewFullscreen”)];x&&e.setElementHTML(x,this.isOpen?O.exitFullscreen:E.menuItemDefinitions.viewFullscreen.text||O.viewFullscreen)}}toggle(){this.isOpen?this.close():this.open()}};return a}),b(x,”Core/HttpUtilities.js”,[x[“Core/Globals.js”],x[“Core/Utilities.js”]],function(e,x){let{win:b}=e,{discardElement:E,objectEach:L}=x,O={ajax:function(e){let x={json:”application/json”,xml:”application/xml”,text:”text/plain”,octet:”application/octet-stream”},b=new XMLHttpRequest;function E(x,b){e.error&&e.error(x,b)}if(!e.url)return!1;b.open((e.type||”get”).toUpperCase(),e.url,!0),e.headers&&e.headers[“Content-Type”]||b.setRequestHeader(“Content-Type”,x[e.dataType||”json”]||x.text),L(e.headers,function(e,x){b.setRequestHeader(x,e)}),e.responseType&&(b.responseType=e.responseType),b.onreadystatechange=function(){let x;if(4===b.readyState){if(200===b.status){if(“blob”!==e.responseType&&(x=b.responseText,”json”===e.dataType))try{x=JSON.parse(x)}catch(e){if(e instanceof Error)return E(b,e)}return e.success&&e.success(x,b)}E(b,b.responseText)}},e.data&&”string”!=typeof e.data&&(e.data=JSON.stringify(e.data)),b.send(e.data)},getJSON:function(e,x){O.ajax({url:e,success:x,dataType:”json”,headers:{“Content-Type”:”text/plain”}})},post:function(e,x,O){let D=new b.FormData;L(x,function(e,x){D.append(x,e)}),D.append(“b64″,”true”);let{filename:j,type:R}=x;return b.fetch(e,{method:”POST”,body:D,…O}).then(e=>{e.ok&&e.text().then(e=>{let x=document.createElement(“a”);x.href=`data:${R};base64,${e}`,x.download=j,x.click(),E(x)})})}};return O}),b(x,”Extensions/Exporting/Exporting.js”,[x[“Core/Renderer/HTML/AST.js”],x[“Core/Chart/Chart.js”],x[“Core/Chart/ChartNavigationComposition.js”],x[“Core/Defaults.js”],x[“Extensions/Exporting/ExportingDefaults.js”],x[“Extensions/Exporting/ExportingSymbols.js”],x[“Extensions/Exporting/Fullscreen.js”],x[“Core/Globals.js”],x[“Core/HttpUtilities.js”],x[“Core/Utilities.js”]],function(e,x,b,E,L,O,D,j,R,z){var F;let{defaultOptions:H}=E,{doc:U,SVG_NS:Y,win:V}=j,{addEvent:q,css:K,createElement:$,discardElement:_,extend:Z,find:J,fireEvent:tt,isObject:te,merge:ti,objectEach:ts,pick:to,removeEvent:tr,uniqueKey:tn}=z;return function(x){let E,F=[/-/,/^(clipPath|cssText|d|height|width)$/,/^font$/,/[lL]ogical(Width|Height)$/,/^parentRule$/,/^(cssRules|ownerRules)$/,/perspective/,/TapHighlightColor/,/^transition/,/^length$/,/^[0-9]+$/],ta=[“fill”,”stroke”,”strokeLinecap”,”strokeLinejoin”,”strokeWidth”,”textAnchor”,”x”,”y”];x.inlineAllowlist=[];let tl=[“clipPath”,”defs”,”desc”];function th(e){let x,b,E=this,L=E.renderer,O=ti(E.options.navigation.buttonOptions,e),D=O.onclick,j=O.menuItems,R=O.symbolSize||12;if(E.btnCount||(E.btnCount=0),E.exportDivElements||(E.exportDivElements=[],E.exportSVGElements=[]),!1===O.enabled||!O.theme)return;let z=E.styledMode?{}:O.theme;D?b=function(e){e&&e.stopPropagation(),D.call(E,e)}:j&&(b=function(e){e&&e.stopPropagation(),E.contextMenu(F.menuClassName,j,F.translateX||0,F.translateY||0,F.width||0,F.height||0,F),F.setState(2)}),O.text&&O.symbol?z.paddingLeft=to(z.paddingLeft,30):O.text||Z(z,{width:O.width,height:O.height,padding:0});let F=L.button(O.text,0,0,b,z,void 0,void 0,void 0,void 0,O.useHTML).addClass(e.className).attr({title:to(E.options.lang[O._titleKey||O.titleKey],””)});F.menuClassName=e.menuClassName||”highcharts-menu-“+E.btnCount++,O.symbol&&(x=L.symbol(O.symbol,Math.round((O.symbolX||0)-R/2),Math.round((O.symbolY||0)-R/2),R,R,{width:R,height:R}).addClass(“highcharts-button-symbol”).attr({zIndex:1}).add(F),E.styledMode||x.attr({stroke:O.symbolStroke,fill:O.symbolFill,”stroke-width”:O.symbolStrokeWidth||1})),F.add(E.exportingGroup).align(Z(O,{width:F.width,x:to(O.x,E.buttonOffset)}),!0,”spacingBox”),E.buttonOffset+=((F.width||0)+O.buttonSpacing)*(“right”===O.align?-1:1),E.exportSVGElements.push(F,x)}function td(){if(!this.printReverseInfo)return;let{childNodes:e,origDisplay:x,resetParams:b}=this.printReverseInfo;this.moveContainers(this.renderTo),[].forEach.call(e,function(e,b){1===e.nodeType&&(e.style.display=x[b]||””)}),this.isPrinting=!1,b&&this.setSize.apply(this,b),delete this.printReverseInfo,E=void 0,tt(this,”afterPrint”)}function tc(){let e=U.body,x=this.options.exporting.printMaxWidth,b={childNodes:e.childNodes,origDisplay:[],resetParams:void 0};this.isPrinting=!0,this.pointer?.reset(void 0,0),tt(this,”beforePrint”),x&&this.chartWidth>x&&(b.resetParams=[this.options.chart.width,void 0,!1],this.setSize(x,void 0,!1)),[].forEach.call(b.childNodes,function(e,x){1===e.nodeType&&(b.origDisplay[x]=e.style.display,e.style.display=”none”)}),this.moveContainers(e),this.printReverseInfo=b}function tp(e){e.renderExporting(),q(e,”redraw”,e.renderExporting),q(e,”destroy”,e.destroyExport)}function tu(x,b,E,L,O,D,j){let R=this,F=R.options.navigation,H=R.chartWidth,Y=R.chartHeight,_=”cache-“+x,J=Math.max(O,D),ti,ts=R[_];ts||(R.exportContextMenu=R[_]=ts=$(“div”,{className:x},{position:”absolute”,zIndex:1e3,padding:J+”px”,pointerEvents:”auto”,…R.renderer.style},R.scrollablePlotArea?.fixedDiv||R.container),ti=$(“ul”,{className:”highcharts-menu”},R.styledMode?{}:{listStyle:”none”,margin:0,padding:0},ts),R.styledMode||K(ti,Z({MozBoxShadow:”3px 3px 10px #888″,WebkitBoxShadow:”3px 3px 10px #888″,boxShadow:”3px 3px 10px #888″},F.menuStyle)),ts.hideMenu=function(){K(ts,{display:”none”}),j&&j.setState(0),R.openMenu=!1,K(R.renderTo,{overflow:”hidden”}),K(R.container,{overflow:”hidden”}),z.clearTimeout(ts.hideTimer),tt(R,”exportMenuHidden”)},R.exportEvents.push(q(ts,”mouseleave”,function(){ts.hideTimer=V.setTimeout(ts.hideMenu,500)}),q(ts,”mouseenter”,function(){z.clearTimeout(ts.hideTimer)}),q(U,”mouseup”,function(e){R.pointer?.inClass(e.target,x)||ts.hideMenu()}),q(ts,”click”,function(){R.openMenu&&ts.hideMenu()})),b.forEach(function(x){if(“string”==typeof x&&(x=R.options.exporting.menuItemDefinitions[x]),te(x,!0)){let b;x.separator?b=$(“hr”,void 0,void 0,ti):(“viewData”===x.textKey&&R.isDataTableVisible&&(x.textKey=”hideData”),b=$(“li”,{className:”highcharts-menu-item”,onclick:function(e){e&&e.stopPropagation(),ts.hideMenu(),”string”!=typeof x&&x.onclick&&x.onclick.apply(R,arguments)}},void 0,ti),e.setElementHTML(b,x.text||R.options.lang[x.textKey]),R.styledMode||(b.onmouseover=function(){K(this,F.menuItemHoverStyle)},b.onmouseout=function(){K(this,F.menuItemStyle)},K(b,Z({cursor:”pointer”},F.menuItemStyle||{})))),R.exportDivElements.push(b)}}),R.exportDivElements.push(ti,ts),R.exportMenuWidth=ts.offsetWidth,R.exportMenuHeight=ts.offsetHeight);let to={display:”block”};E+(R.exportMenuWidth||0)>H?to.right=H-E-O-J+”px”:to.left=E-J+”px”,L+D+(R.exportMenuHeight||0)>Y&&j.alignOptions?.verticalAlign!==”top”?to.bottom=Y-L-J+”px”:to.top=L+D-J+”px”,K(ts,to),K(R.renderTo,{overflow:””}),K(R.container,{overflow:””}),R.openMenu=!0,tt(R,”exportMenuShown”)}function tg(e){let x,b=e?e.target:this,E=b.exportSVGElements,L=b.exportDivElements,O=b.exportEvents;E&&(E.forEach((e,L)=>{e&&(e.onclick=e.ontouchstart=null,b[x=”cache-“+e.menuClassName]&&delete b[x],E[L]=e.destroy())}),E.length=0),b.exportingGroup&&(b.exportingGroup.destroy(),delete b.exportingGroup),L&&(L.forEach(function(e,x){e&&(z.clearTimeout(e.hideTimer),tr(e,”mouseleave”),L[x]=e.onmouseout=e.onmouseover=e.ontouchstart=e.onclick=null,_(e))}),L.length=0),O&&(O.forEach(function(e){e()}),O.length=0)}function tm(e,x){let b=this.getSVGForExport(e,x);e=ti(this.options.exporting,e),R.post(e.url,{filename:e.filename?e.filename.replace(/\//g,”-“):this.getFilename(),type:e.type,width:e.width,scale:e.scale,svg:b},e.fetchOptions)}function tf(){return this.styledMode&&this.inlineStyles(),this.container.innerHTML}function tx(){let e=this.userOptions.title&&this.userOptions.title.text,x=this.options.exporting.filename;return x?x.replace(/\//g,”-“):(“string”==typeof e&&(x=e.toLowerCase().replace(/<\/?[^>]+(>|$)/g,””).replace(/[\s_]+/g,”-“).replace(/[^a-z0-9\-]/g,””).replace(/^[\-]+/g,””).replace(/[\-]+/g,”-“).substr(0,24).replace(/[\-]+$/g,””)),(!x||x.length<5)&&(x="chart"),x)}function tb(e){let x,b,E=ti(this.options,e);E.plotOptions=ti(this.userOptions.plotOptions,e&&e.plotOptions),E.time=ti(this.userOptions.time,e&&e.time);let L=$("div",null,{position:"absolute",top:"-9999em",width:this.chartWidth+"px",height:this.chartHeight+"px"},U.body),O=this.renderTo.style.width,D=this.renderTo.style.height,j=E.exporting.sourceWidth||E.chart.width||/px$/.test(O)&&parseInt(O,10)||(E.isGantt?800:600),R=E.exporting.sourceHeight||E.chart.height||/px$/.test(D)&&parseInt(D,10)||400;Z(E.chart,{animation:!1,renderTo:L,forExport:!0,renderer:"SVGRenderer",width:j,height:R}),E.exporting.enabled=!1,delete E.data,E.series=[],this.series.forEach(function(e){(b=ti(e.userOptions,{animation:!1,enableMouseTracking:!1,showCheckbox:!1,visible:e.visible})).isInternal||E.series.push(b)});let z={};this.axes.forEach(function(e){e.userOptions.internalKey||(e.userOptions.internalKey=tn()),e.options.isInternal||(z[e.coll]||(z[e.coll]=!0,E[e.coll]=[]),E[e.coll].push(ti(e.userOptions,{visible:e.visible})))}),E.colorAxis=this.userOptions.colorAxis;let F=new this.constructor(E,this.callback);return e&&["xAxis","yAxis","series"].forEach(function(x){let b={};e[x]&&(b[x]=e[x],F.update(b))}),this.axes.forEach(function(e){let x=J(F.axes,function(x){return x.options.internalKey===e.userOptions.internalKey}),b=e.getExtremes(),E=b.userMin,L=b.userMax;x&&(void 0!==E&&E!==x.min||void 0!==L&&L!==x.max)&&x.setExtremes(E,L,!0,!1)}),x=F.getChartHTML(),tt(this,"getSVG",{chartCopy:F}),x=this.sanitizeSVG(x,E),E=null,F.destroy(),_(L),x}function ty(e,x){let b=this.options.exporting;return this.getSVG(ti({chart:{borderRadius:0}},b.chartOptions,x,{exporting:{sourceWidth:e&&e.sourceWidth||b.sourceWidth,sourceHeight:e&&e.sourceHeight||b.sourceHeight}}))}function tv(){let e,b=x.inlineAllowlist,E={},L=U.createElement("iframe");K(L,{width:"1px",height:"1px",visibility:"hidden"}),U.body.appendChild(L);let O=L.contentWindow&&L.contentWindow.document;O&&O.body.appendChild(O.createElementNS(Y,"svg")),function x(L){let D,R,z,H,U,Y,q={};if(O&&1===L.nodeType&&-1===tl.indexOf(L.nodeName)){if(D=V.getComputedStyle(L,null),R="svg"===L.nodeName?{}:V.getComputedStyle(L.parentNode,null),!E[L.nodeName]){e=O.getElementsByTagName("svg")[0],z=O.createElementNS(L.namespaceURI,L.nodeName),e.appendChild(z);let x=V.getComputedStyle(z,null),b={};for(let e in x)e.length<1e3&&"string"==typeof x[e]&&!/^[0-9]+$/.test(e)&&(b[e]=x[e]);E[L.nodeName]=b,"text"===L.nodeName&&delete E.text.fill,e.removeChild(z)}for(let e in D)(j.isFirefox||j.isMS||j.isSafari||Object.hasOwnProperty.call(D,e))&&function(e,x){if(H=U=!1,b.length){for(Y=b.length;Y--&&!U;)U=b[Y].test(x);H=!U}for("transform"===x&&"none"===e&&(H=!0),Y=F.length;Y--&&!H;){if(x.length>1e3)throw Error(“Input too long”);H=F[Y].test(x)||”function”==typeof e}!H&&(R[x]!==e||”svg”===L.nodeName)&&E[L.nodeName][x]!==e&&(ta&&-1===ta.indexOf(x)?q[x]=e:e&&L.setAttribute(x.replace(/([A-Z])/g,function(e,x){return”-“+x.toLowerCase()}),e))}(D[e],e);if(K(L,q),”svg”===L.nodeName&&L.setAttribute(“stroke-width”,”1px”),”text”===L.nodeName)return;[].forEach.call(L.children||L.childNodes,x)}}(this.container.querySelector(“svg”)),e.parentNode.removeChild(e),L.parentNode.removeChild(L)}function tS(e){let{scrollablePlotArea:x}=this;(x?[x.fixedDiv,x.scrollingContainer]:[this.container]).forEach(function(x){e.appendChild(x)})}function tC(){let e=this,x=(x,b,E)=>{e.isDirtyExporting=!0,ti(!0,e.options[x],b),to(E,!0)&&e.redraw()};e.exporting={update:function(e,b){x(“exporting”,e,b)}},b.compose(e).navigation.addUpdate((e,b)=>{x(“navigation”,e,b)})}function tk(){let e=this;e.isPrinting||(E=e,j.isSafari||e.beforePrint(),setTimeout(()=>{V.focus(),V.print(),j.isSafari||setTimeout(()=>{e.afterPrint()},1e3)},1))}function tM(){let e=this,x=e.options.exporting,b=x.buttons,E=e.isDirtyExporting||!e.exportSVGElements;e.buttonOffset=0,e.isDirtyExporting&&e.destroyExport(),E&&!1!==x.enabled&&(e.exportEvents=[],e.exportingGroup=e.exportingGroup||e.renderer.g(“exporting-group”).attr({zIndex:3}).add(),ts(b,function(x){e.addButton(x)}),e.isDirtyExporting=!1)}function tw(e,x){let b=e.indexOf(““)+6,E=e.substr(b);return e=e.substr(0,b),x&&x.exporting&&x.exporting.allowHTML&&E&&(E=’‘+E.replace(/(<(?:img|br).*?(?=\>))>/g,”$1 />”)+”“,e=e.replace(““,E+”“)),e=e.replace(/zIndex=”[^”]+”/g,””).replace(/symbolName=”[^”]+”/g,””).replace(/jQuery[0-9]+=”[^”]+”/g,””).replace(/url\((“|")(.*?)(“|")\;?\)/g,”url($2)”).replace(/url\([^#]+#/g,”url(#”).replace(/parseInt(b.userAgent.split(“Firefox/”)[1],10),b.marginNames=[“plotTop”,”marginRight”,”marginBottom”,”plotLeft”],b.noop=function(){},b.supportsPassiveEvents=function(){let e=!1;if(!b.isMS){let x=Object.defineProperty({},”passive”,{get:function(){e=!0}});b.win.addEventListener&&b.win.removeEventListener&&(b.win.addEventListener(“testPassive”,b.noop,x),b.win.removeEventListener(“testPassive”,b.noop,x))}return e}(),b.charts=[],b.composed=[],b.dateFormats={},b.seriesTypes={},b.symbolSizes={},b.chartCount=0,x}),b(x,”Core/Utilities.js”,[x[“Core/Globals.js”]],function(e){let x,b,E,{charts:L,doc:O,win:D}=e;function j(x,b,E,L){let O=b?”Highcharts error”:”Highcharts warning”;32===x&&(x=`${O}: Deprecated member`);let R=V(x),z=R?`${O} #${x}: www.highcharts.com/errors/${x}/`:x.toString();if(void 0!==L){let e=””;R&&(z+=”?”),ts(L,function(x,b){e+=` – ${b}: ${x}`,R&&(z+=encodeURI(b)+”=”+encodeURI(x))}),z+=e}tr(e,”displayError”,{chart:E,code:x,message:z,params:L},function(){if(b)throw Error(z);D.console&&-1===j.messages.indexOf(z)&&console.warn(z)}),j.messages.push(z)}function R(e,x){return parseInt(e,x||10)}function z(e){return”string”==typeof e}function F(e){let x=Object.prototype.toString.call(e);return”[object Array]”===x||”[object Array Iterator]”===x}function H(e,x){return!!e&&”object”==typeof e&&(!x||!F(e))}function U(e){return H(e)&&”number”==typeof e.nodeType}function Y(e){let x=e&&e.constructor;return!!(H(e,!0)&&!U(e)&&x&&x.name&&”Object”!==x.name)}function V(e){return”number”==typeof e&&!isNaN(e)&&e<1/0&&e>-1/0}function q(e){return null!=e}function K(e,x,b){let E,L=z(x)&&!q(b),O=(x,b)=>{q(x)?e.setAttribute(b,x):L?(E=e.getAttribute(b))||”class”!==b||(E=e.getAttribute(b+”Name”)):e.removeAttribute(b)};return z(x)?O(b,x):ts(x,O),E}function $(e){return F(e)?e:[e]}function _(e,x){let b;for(b in e||(e={}),x)e[b]=x[b];return e}function Z(){let e=arguments,x=e.length;for(let b=0;b1e14?e:parseFloat(e.toPrecision(x||14))}(j||(j={})).messages=[],Math.easeInOutSine=function(e){return -.5*(Math.cos(Math.PI*e)-1)};let ti=Array.prototype.find?function(e,x){return e.find(x)}:function(e,x){let b,E=e.length;for(b=0;be.order-x.order),e.forEach(e=>{!1===e.fn.call(x,E)&&E.preventDefault()})}L&&!E.defaultPrevented&&L.call(x,E)}ts({map:”map”,each:”forEach”,grep:”filter”,reduce:”reduce”,some:”some”},function(x,b){e[b]=function(e){return j(32,!1,void 0,{[`Highcharts.${b}`]:`use Array.${x}`}),Array.prototype[x].apply(e,[].slice.call(arguments,1))}});let tn=(x=Math.random().toString(36).substring(2,9)+”-“,b=0,function(){return”highcharts-“+(E?””:x)+b++});return D.jQuery&&(D.jQuery.fn.highcharts=function(){let x=[].slice.call(arguments);if(this[0])return x[0]?(new e[z(x[0])?x.shift():”Chart”](this[0],x[0],x[1]),this):L[K(this[0],”data-highcharts-chart”)]}),{addEvent:function(x,b,E,L={}){let O=”function”==typeof x&&x.prototype||x;Object.hasOwnProperty.call(O,”hcEvents”)||(O.hcEvents={});let D=O.hcEvents;e.Point&&x instanceof e.Point&&x.series&&x.series.chart&&(x.series.chart.runTrackerClick=!0);let j=x.addEventListener;j&&j.call(x,b,E,!!e.supportsPassiveEvents&&{passive:void 0===L.passive?-1!==b.indexOf(“touch”):L.passive,capture:!1}),D[b]||(D[b]=[]);let R={fn:E,order:”number”==typeof L.order?L.order:1/0};return D[b].push(R),D[b].sort((e,x)=>e.order-x.order),function(){to(x,b,E)}},arrayMax:function(e){let x=e.length,b=e[0];for(;x–;)e[x]>b&&(b=e[x]);return b},arrayMin:function(e){let x=e.length,b=e[0];for(;x–;)e[x]x?e{let E=x%2/2,L=b?-1:1;return(Math.round(e*L-E)+E)*L},css:J,defined:q,destroyObjectProperties:function(e,x,b){ts(e,function(E,L){E!==x&&E?.destroy&&E.destroy(),(E?.destroy||!b)&&delete e[L]})},diffObjects:function(e,x,b,E){let L={};return function e(x,L,O,D){let j=b?L:x;ts(x,function(b,R){if(!D&&E&&E.indexOf(R)>-1&&L[R]){b=$(b),O[R]=[];for(let x=0;x{if(e.length>1)for(O=E=e.length-1;O>0;O–)(L=e[O]-e[O-1])<0&&!D?(x?.(),x=void 0):L&&(void 0===b||L=b-1&&(b=Math.floor(E)),Math.max(0,b-(e(x,”padding-left”,!0)||0)-(e(x,”padding-right”,!0)||0))}if(“height”===b)return Math.max(0,Math.min(x.offsetHeight,x.scrollHeight)-(e(x,”padding-top”,!0)||0)-(e(x,”padding-bottom”,!0)||0));let O=D.getComputedStyle(x,void 0);return O&&(L=O.getPropertyValue(b),Z(E,”opacity”!==b)&&(L=R(L))),L},inArray:function(e,x,b){return j(32,!1,void 0,{“Highcharts.inArray”:”use Array.indexOf”}),x.indexOf(e,b)},insertItem:function(e,x){let b,E=e.options.index,L=x.length;for(b=e.options.isInternal?L:0;b=e))&&(L||!(j<=(x[O]+(x[O+1]||x[O]))/2)));O++);return te(D*b,-Math.round(Math.log(.001)/Math.LN10))},objectEach:ts,offset:function(e){let x=O.documentElement,b=e.parentElement||e.parentNode?e.getBoundingClientRect():{top:0,left:0,width:0,height:0};return{top:b.top+(D.pageYOffset||x.scrollTop)-(x.clientTop||0),left:b.left+(D.pageXOffset||x.scrollLeft)-(x.clientLeft||0),width:b.width,height:b.height}},pad:function(e,x,b){return Array((x||2)+1-String(e).replace("-","").length).join(b||"0")+e},pick:Z,pInt:R,pushUnique:function(e,x){return 0>e.indexOf(x)&&!!e.push(x)},relativeLength:function(e,x,b){return/%$/.test(e)?x*parseFloat(e)/100+(b||0):parseFloat(e)},removeEvent:to,replaceNested:function(e,…x){let b,E;do for(E of(b=e,x))e=e.replace(E[0],E[1]);while(e!==b)return e},splat:$,stableSort:function(e,x){let b,E,L=e.length;for(E=0;E0?setTimeout(e,x,b):(e.call(0,b),-1)},timeUnits:{millisecond:1,second:1e3,minute:6e4,hour:36e5,day:864e5,week:6048e5,month:24192e5,year:314496e5},uniqueKey:tn,useSerialIds:function(e){return E=Z(e,E)},wrap:function(e,x,b){let E=e[x];e[x]=function(){let e=arguments,x=this;return b.apply(this,[function(){return E.apply(x,arguments.length?arguments:e)}].concat([].slice.call(arguments)))}}}}),b(x,”Core/Chart/ChartDefaults.js”,[],function(){return{alignThresholds:!1,panning:{enabled:!1,type:”x”},styledMode:!1,borderRadius:0,colorCount:10,allowMutatingData:!0,ignoreHiddenSeries:!0,spacing:[10,10,15,10],resetZoomButton:{theme:{},position:{}},reflow:!0,type:”line”,zooming:{singleTouch:!1,resetButton:{theme:{zIndex:6},position:{align:”right”,x:-10,y:10}}},width:null,height:null,borderColor:”#334eff”,backgroundColor:”#ffffff”,plotBorderColor:”#cccccc”}}),b(x,”Core/Color/Palettes.js”,[],function(){return{colors:[“#2caffe”,”#544fc5″,”#00e272″,”#fe6a35″,”#6b8abc”,”#d568fb”,”#2ee0ca”,”#fa4b42″,”#feb56a”,”#91e8e1″]}}),b(x,”Core/Time.js”,[x[“Core/Globals.js”],x[“Core/Utilities.js”]],function(e,x){let{win:b}=e,{defined:E,error:L,extend:O,isNumber:D,isObject:j,merge:R,objectEach:z,pad:F,pick:H,splat:U,timeUnits:Y}=x,V=e.isSafari&&b.Intl&&b.Intl.DateTimeFormat.prototype.formatRange,q=e.isSafari&&b.Intl&&!b.Intl.DateTimeFormat.prototype.formatRange;let m=class m{constructor(e){this.options={},this.useUTC=!1,this.variableTimezone=!1,this.Date=b.Date,this.getTimezoneOffset=this.timezoneOffsetFunction(),this.update(e)}get(e,x){if(this.variableTimezone||this.timezoneOffset){let b=x.getTime(),E=b-this.getTimezoneOffset(x);x.setTime(E);let L=x[“getUTC”+e]();return x.setTime(b),L}return this.useUTC?x[“getUTC”+e]():x[“get”+e]()}set(e,x,b){if(this.variableTimezone||this.timezoneOffset){if(“Milliseconds”===e||”Seconds”===e||”Minutes”===e&&this.getTimezoneOffset(x)%36e5==0)return x[“setUTC”+e](b);let E=this.getTimezoneOffset(x),L=x.getTime()-E;x.setTime(L),x[“setUTC”+e](b);let O=this.getTimezoneOffset(x);return L=x.getTime()+O,x.setTime(L)}return this.useUTC||V&&”FullYear”===e?x[“setUTC”+e](b):x[“set”+e](b)}update(e={}){let x=H(e.useUTC,!0);this.options=e=R(!0,this.options,e),this.Date=e.Date||b.Date||Date,this.useUTC=x,this.timezoneOffset=x&&e.timezoneOffset||void 0,this.getTimezoneOffset=this.timezoneOffsetFunction(),this.variableTimezone=x&&!!(e.getTimezoneOffset||e.timezone)}makeTime(e,x,b,E,L,O){let D,j,R;return this.useUTC?(D=this.Date.UTC.apply(0,arguments),j=this.getTimezoneOffset(D),D+=j,j!==(R=this.getTimezoneOffset(D))?D+=R-j:j-36e5!==this.getTimezoneOffset(D-36e5)||q||(D-=36e5)):D=new this.Date(e,x,H(b,1),H(E,0),H(L,0),H(O,0)).getTime(),D}timezoneOffsetFunction(){let e=this,x=this.options,b=x.getTimezoneOffset;return this.useUTC?x.timezone?e=>{try{let b=`shortOffset,${x.timezone||””}`,[E,L,O,j,R=0]=(m.formatCache[b]=m.formatCache[b]||Intl.DateTimeFormat(“en”,{timeZone:x.timezone,timeZoneName:”shortOffset”})).format(e).split(/(GMT|:)/).map(Number),z=-(36e5*(O+R/60));if(D(z))return z}catch(e){L(34)}return 0}:this.useUTC&&b?e=>6e4*b(e.valueOf()):()=>6e4*(e.timezoneOffset||0):e=>6e4*new Date(e.toString()).getTimezoneOffset()}dateFormat(x,b,L){if(!E(b)||isNaN(b))return e.defaultOptions.lang&&e.defaultOptions.lang.invalidDate||””;x=H(x,”%Y-%m-%d %H:%M:%S”);let D=this,j=new this.Date(b),R=this.get(“Hours”,j),U=this.get(“Day”,j),Y=this.get(“Date”,j),V=this.get(“Month”,j),q=this.get(“FullYear”,j),K=e.defaultOptions.lang,$=K&&K.weekdays,_=K&&K.shortWeekdays;return z(O({a:_?_[U]:$[U].substr(0,3),A:$[U],d:F(Y),e:F(Y,2,” “),w:U,b:K.shortMonths[V],B:K.months[V],m:F(V+1),o:V+1,y:q.toString().substr(2,2),Y:q,H:F(R),k:R,I:F(R%12||12),l:R%12||12,M:F(this.get(“Minutes”,j)),p:R<12?"AM":"PM",P:R<12?"am":"pm",S:F(this.get("Seconds",j)),L:F(Math.floor(b%1e3),3)},e.dateFormats),function(e,E){for(;-1!==x.indexOf("%"+E);)x=x.replace("%"+E,"function"==typeof e?e.call(D,b):e)}),L?x.substr(0,1).toUpperCase()+x.substr(1):x}resolveDTLFormat(e){return j(e,!0)?e:{main:(e=U(e))[0],from:e[1],to:e[2]}}getTimeTicks(e,x,b,L){let D,j,R,z,F=this,U=F.Date,V=[],q={},K=new U(x),$=e.unitRange,_=e.count||1;if(L=H(L,1),E(x)){F.set("Milliseconds",K,$>=Y.second?0:_*Math.floor(F.get(“Milliseconds”,K)/_)),$>=Y.second&&F.set(“Seconds”,K,$>=Y.minute?0:_*Math.floor(F.get(“Seconds”,K)/_)),$>=Y.minute&&F.set(“Minutes”,K,$>=Y.hour?0:_*Math.floor(F.get(“Minutes”,K)/_)),$>=Y.hour&&F.set(“Hours”,K,$>=Y.day?0:_*Math.floor(F.get(“Hours”,K)/_)),$>=Y.day&&F.set(“Date”,K,$>=Y.month?1:Math.max(1,_*Math.floor(F.get(“Date”,K)/_))),$>=Y.month&&(F.set(“Month”,K,$>=Y.year?0:_*Math.floor(F.get(“Month”,K)/_)),j=F.get(“FullYear”,K)),$>=Y.year&&(j-=j%_,F.set(“FullYear”,K,j)),$===Y.week&&(z=F.get(“Day”,K),F.set(“Date”,K,F.get(“Date”,K)-z+L+(z4*Y.month||F.getTimezoneOffset(x)!==F.getTimezoneOffset(b));let U=K.getTime();for(D=1;U1?U=F.makeTime(j,e,O,H+D*_):U+=$*_,D++;V.push(U),$<=Y.hour&&V.length<1e4&&V.forEach(function(e){e%18e5==0&&"000000000"===F.dateFormat("%H%M%S%L",e)&&(q[e]="day")})}return V.info=O(e,{higherRanks:q,totalRange:$*_}),V}getDateFormat(e,x,b,E){let L=this.dateFormat("%m-%d %H:%M:%S.%L",x),O="01-01 00:00:00.000",D={millisecond:15,second:12,minute:9,hour:6,day:3},j="millisecond",R=j;for(j in Y){if(e===Y.week&&+this.dateFormat("%w",x)===b&&L.substr(6)===O.substr(6)){j="week";break}if(Y[j]>e){j=R;break}if(D[j]&&L.substr(D[j])!==O.substr(D[j]))break;”week”!==j&&(R=j)}return this.resolveDTLFormat(E[j]).main}};return m.formatCache={},m}),b(x,”Core/Defaults.js”,[x[“Core/Chart/ChartDefaults.js”],x[“Core/Globals.js”],x[“Core/Color/Palettes.js”],x[“Core/Time.js”],x[“Core/Utilities.js”]],function(e,x,b,E,L){let{isTouchDevice:O}=x,{fireEvent:D,merge:j}=L,R={colors:b.colors,symbols:[“circle”,”diamond”,”square”,”triangle”,”triangle-down”],lang:{loading:”Loading…”,months:[“January”,”February”,”March”,”April”,”May”,”June”,”July”,”August”,”September”,”October”,”November”,”December”],shortMonths:[“Jan”,”Feb”,”Mar”,”Apr”,”May”,”Jun”,”Jul”,”Aug”,”Sep”,”Oct”,”Nov”,”Dec”],weekdays:[“Sunday”,”Monday”,”Tuesday”,”Wednesday”,”Thursday”,”Friday”,”Saturday”],decimalPoint:”.”,numericSymbols:[“k”,”M”,”G”,”T”,”P”,”E”],resetZoom:”Reset zoom”,resetZoomTitle:”Reset zoom level 1:1″,thousandsSep:” “},global:{buttonTheme:{fill:”#f7f7f7″,padding:8,r:2,stroke:”#cccccc”,”stroke-width”:1,style:{color:”#333333″,cursor:”pointer”,fontSize:”0.8em”,fontWeight:”normal”},states:{hover:{fill:”#e6e6e6″},select:{fill:”#e6e9ff”,style:{color:”#000000″,fontWeight:”bold”}},disabled:{style:{color:”#cccccc”}}}}},time:{Date:void 0,getTimezoneOffset:void 0,timezone:void 0,timezoneOffset:0,useUTC:!0},chart:e,title:{style:{color:”#333333″,fontWeight:”bold”},text:”Chart title”,align:”center”,margin:15,widthAdjust:-44},subtitle:{style:{color:”#666666″,fontSize:”0.8em”},text:””,align:”center”,widthAdjust:-44},caption:{margin:15,style:{color:”#666666″,fontSize:”0.8em”},text:””,align:”left”,verticalAlign:”bottom”},plotOptions:{},legend:{enabled:!0,align:”center”,alignColumns:!0,className:”highcharts-no-tooltip”,layout:”horizontal”,itemMarginBottom:2,itemMarginTop:2,labelFormatter:function(){return this.name},borderColor:”#999999″,borderRadius:0,navigation:{style:{fontSize:”0.8em”},activeColor:”#0022ff”,inactiveColor:”#cccccc”},itemStyle:{color:”#333333″,cursor:”pointer”,fontSize:”0.8em”,textDecoration:”none”,textOverflow:”ellipsis”},itemHoverStyle:{color:”#000000″},itemHiddenStyle:{color:”#666666″,textDecoration:”line-through”},shadow:!1,itemCheckboxStyle:{position:”absolute”,width:”13px”,height:”13px”},squareSymbol:!0,symbolPadding:5,verticalAlign:”bottom”,x:0,y:0,title:{style:{fontSize:”0.8em”,fontWeight:”bold”}}},loading:{labelStyle:{fontWeight:”bold”,position:”relative”,top:”45%”},style:{position:”absolute”,backgroundColor:”#ffffff”,opacity:.5,textAlign:”center”}},tooltip:{enabled:!0,animation:{duration:300,easing:e=>Math.sqrt(1-Math.pow(e-1,2))},borderRadius:3,dateTimeLabelFormats:{millisecond:”%A, %e %b, %H:%M:%S.%L”,second:”%A, %e %b, %H:%M:%S”,minute:”%A, %e %b, %H:%M”,hour:”%A, %e %b, %H:%M”,day:”%A, %e %b %Y”,week:”Week from %A, %e %b %Y”,month:”%B %Y”,year:”%Y”},footerFormat:””,headerShape:”callout”,hideDelay:500,padding:8,shape:”callout”,shared:!1,snap:O?25:10,headerFormat:’{point.key}
‘,pointFormat:’\u25CF {series.name}: {point.y}
‘,backgroundColor:”#ffffff”,borderWidth:void 0,shadow:!0,stickOnContact:!1,style:{color:”#333333″,cursor:”default”,fontSize:”0.8em”},useHTML:!1},credits:{enabled:!0,href:”https://www.highcharts.com?credits”,position:{align:”right”,x:-10,verticalAlign:”bottom”,y:-5},style:{cursor:”pointer”,color:”#999999″,fontSize:”0.6em”},text:”Highcharts.com”}};R.chart.styledMode=!1;let z=new E(R.time);return{defaultOptions:R,defaultTime:z,getOptions:function(){return R},setOptions:function(e){return D(x,”setOptions”,{options:e}),j(!0,R,e),(e.time||e.global)&&(x.time?x.time.update(j(R.global,R.time,e.global,e.time)):x.time=z),R}}}),b(x,”Core/Color/Color.js”,[x[“Core/Globals.js”],x[“Core/Utilities.js”]],function(e,x){let{isNumber:b,merge:E,pInt:L}=x;let o=class o{static parse(e){return e?new o(e):o.None}constructor(x){let b,E,L,O;this.rgba=[NaN,NaN,NaN,NaN],this.input=x;let D=e.Color;if(D&&D!==o)return new D(x);if(“object”==typeof x&&void 0!==x.stops)this.stops=x.stops.map(e=>new o(e[1]));else if(“string”==typeof x){if(this.input=x=o.names[x.toLowerCase()]||x,”#”===x.charAt(0)){let e=x.length,b=parseInt(x.substr(1),16);7===e?E=[(0xff0000&b)>>16,(65280&b)>>8,255&b,1]:4===e&&(E=[(3840&b)>>4|(3840&b)>>8,(240&b)>>4|240&b,(15&b)<<4|15&b,1])}if(!E)for(L=o.parsers.length;L--&&!E;)(b=(O=o.parsers[L]).regex.exec(x))&&(E=O.parse(b))}E&&(this.rgba=E)}get(e){let x=this.input,L=this.rgba;if("object"==typeof x&&void 0!==this.stops){let b=E(x);return b.stops=[].slice.call(b.stops),this.stops.forEach((x,E)=>{b.stops[E]=[b.stops[E][0],x.get(e)]}),b}return L&&b(L[0])?”rgb”!==e&&(e||1!==L[3])?”a”===e?`${L[3]}`:”rgba(“+L.join(“,”)+”)”:”rgb(“+L[0]+”,”+L[1]+”,”+L[2]+”)”:x}brighten(e){let x=this.rgba;if(this.stops)this.stops.forEach(function(x){x.brighten(e)});else if(b(e)&&0!==e)for(let b=0;b<3;b++)x[b]+=L(255*e),x[b]<0&&(x[b]=0),x[b]>255&&(x[b]=255);return this}setOpacity(e){return this.rgba[3]=e,this}tweenTo(e,x){let E=this.rgba,L=e.rgba;if(!b(E[0])||!b(L[0]))return e.input||”none”;let O=1!==L[3]||1!==E[3];return(O?”rgba(“:”rgb(“)+Math.round(L[0]+(E[0]-L[0])*(1-x))+”,”+Math.round(L[1]+(E[1]-L[1])*(1-x))+”,”+Math.round(L[2]+(E[2]-L[2])*(1-x))+(O?”,”+(L[3]+(E[3]-L[3])*(1-x)):””)+”)”}};return o.names={white:”#ffffff”,black:”#000000″},o.parsers=[{regex:/rgba\(\s*([0-9]{1,3})\s*,\s*([0-9]{1,3})\s*,\s*([0-9]{1,3})\s*,\s*([0-9]?(?:\.[0-9]+)?)\s*\)/,parse:function(e){return[L(e[1]),L(e[2]),L(e[3]),parseFloat(e[4],10)]}},{regex:/rgb\(\s*([0-9]{1,3})\s*,\s*([0-9]{1,3})\s*,\s*([0-9]{1,3})\s*\)/,parse:function(e){return[L(e[1]),L(e[2]),L(e[3]),1]}}],o.None=new o(“”),o}),b(x,”Core/Animation/Fx.js”,[x[“Core/Color/Color.js”],x[“Core/Globals.js”],x[“Core/Utilities.js”]],function(e,x,b){let{parse:E}=e,{win:L}=x,{isNumber:O,objectEach:D}=b;let n=class n{constructor(e,x,b){this.pos=NaN,this.options=x,this.elem=e,this.prop=b}dSetter(){let e=this.paths,x=e&&e[0],b=e&&e[1],E=this.now||0,L=[];if(1!==E&&x&&b)if(x.length===b.length&&E<1)for(let e=0;e=R+this.startTime?(this.now=this.end,this.pos=1,this.update(),z[this.prop]=!0,b=!0,D(z,function(e){!0!==e&&(b=!1)}),b&&j&&j.call(O),x=!1):(this.pos=L.easing((E-this.startTime)/R),this.now=this.start+(this.end-this.start)*this.pos,this.update(),x=!0),x}initPath(e,x,b){let E=e.startX,L=e.endX,D=b.slice(),j=e.isArea,R=j?2:1,z,F,H,U,Y=x&&x.slice();if(!Y)return[D,D];function V(e,x){for(;e.length{let E=F(e.options.animation);j=D(x)&&b(x.defer)?L.defer:Math.max(j,E.duration+E.defer),R=Math.min(L.duration,E.duration)}),e.renderer.forExport&&(j=0),{defer:Math.max(0,j-R),duration:Math.min(j,R)}},setAnimation:function(e,x){x.renderer.globalAnimation=z(e,x.options.chart.animation,!0)},stop:H}}),b(x,”Core/Renderer/HTML/AST.js”,[x[“Core/Globals.js”],x[“Core/Utilities.js”]],function(e,x){let{SVG_NS:b,win:E}=e,{attr:L,createElement:O,css:D,error:j,isFunction:R,isString:z,objectEach:F,splat:H}=x,{trustedTypes:U}=E,Y=U&&R(U.createPolicy)&&U.createPolicy(“highcharts”,{createHTML:e=>e}),V=Y?Y.createHTML(“”):””,q=function(){try{return!!new DOMParser().parseFromString(V,”text/html”)}catch(e){return!1}}();let m=class m{static filterUserAttributes(e){return F(e,(x,b)=>{let E=!0;-1===m.allowedAttributes.indexOf(b)&&(E=!1),-1!==[“background”,”dynsrc”,”href”,”lowsrc”,”src”].indexOf(b)&&(E=z(x)&&m.allowedReferences.some(e=>0===x.indexOf(e))),E||(j(33,!1,void 0,{“Invalid attribute in config”:`${b}`}),delete e[b]),z(x)&&e[b]&&(e[b]=x.replace(/{let b=x.split(“:”).map(e=>e.trim()),E=b.shift();return E&&b.length&&(e[E.replace(/-([a-z])/g,e=>e[1].toUpperCase())]=b.join(“:”)),e},{})}static setElementHTML(e,x){e.innerHTML=m.emptyHTML,x&&new m(x).addToDOM(e)}constructor(e){this.nodes=”string”==typeof e?this.parseMarkup(e):e}addToDOM(x){return function x(E,O){let R;return H(E).forEach(function(E){let z,H=E.tagName,U=E.textContent?e.doc.createTextNode(E.textContent):void 0,Y=m.bypassHTMLFiltering;if(H)if(“#text”===H)z=U;else if(-1!==m.allowedTags.indexOf(H)||Y){let j=”svg”===H?b:O.namespaceURI||b,R=e.doc.createElementNS(j,H),V=E.attributes||{};F(E,function(e,x){“tagName”!==x&&”attributes”!==x&&”children”!==x&&”style”!==x&&”textContent”!==x&&(V[x]=e)}),L(R,Y?V:m.filterUserAttributes(V)),E.style&&D(R,E.style),U&&R.appendChild(U),x(E.children||[],R),z=R}else j(33,!1,void 0,{“Invalid tagName in config”:H});z&&O.appendChild(z),R=z}),R}(this.nodes,x)}parseMarkup(e){let x,b=[];if(e=e.trim().replace(/ style=([“‘])/g,” data-style=$1″),q)x=new DOMParser().parseFromString(Y?Y.createHTML(e):e,”text/html”);else{let b=O(“div”);b.innerHTML=e,x={body:b}}let E=(e,x)=>{let b=e.nodeName.toLowerCase(),L={tagName:b};”#text”===b&&(L.textContent=e.textContent||””);let O=e.attributes;if(O){let e={};[].forEach.call(O,x=>{“data-style”===x.name?L.style=m.parseStyle(x.value):e[x.name]=x.value}),L.attributes=e}if(e.childNodes.length){let x=[];[].forEach.call(e.childNodes,e=>{E(e,x)}),x.length&&(L.children=x)}x.push(L)};return[].forEach.call(x.body.childNodes,e=>E(e,b)),b}};return m.allowedAttributes=[“alt”,”aria-controls”,”aria-describedby”,”aria-expanded”,”aria-haspopup”,”aria-hidden”,”aria-label”,”aria-labelledby”,”aria-live”,”aria-pressed”,”aria-readonly”,”aria-roledescription”,”aria-selected”,”class”,”clip-path”,”color”,”colspan”,”cx”,”cy”,”d”,”dx”,”dy”,”disabled”,”fill”,”filterUnits”,”flood-color”,”flood-opacity”,”height”,”href”,”id”,”in”,”markerHeight”,”markerWidth”,”offset”,”opacity”,”orient”,”padding”,”paddingLeft”,”paddingRight”,”patternUnits”,”r”,”refX”,”refY”,”role”,”scope”,”slope”,”src”,”startOffset”,”stdDeviation”,”stroke”,”stroke-linecap”,”stroke-width”,”style”,”tableValues”,”result”,”rowspan”,”summary”,”target”,”tabindex”,”text-align”,”text-anchor”,”textAnchor”,”textLength”,”title”,”type”,”valign”,”width”,”x”,”x1″,”x2″,”xlink:href”,”y”,”y1″,”y2″,”zIndex”],m.allowedReferences=[“https://”,”http://”,”mailto:”,”/”,”../”,”./”,”#”],m.allowedTags=[“a”,”abbr”,”b”,”br”,”button”,”caption”,”circle”,”clipPath”,”code”,”dd”,”defs”,”div”,”dl”,”dt”,”em”,”feComponentTransfer”,”feDropShadow”,”feFuncA”,”feFuncB”,”feFuncG”,”feFuncR”,”feGaussianBlur”,”feOffset”,”feMerge”,”feMergeNode”,”filter”,”h1″,”h2″,”h3″,”h4″,”h5″,”h6″,”hr”,”i”,”img”,”li”,”linearGradient”,”marker”,”ol”,”p”,”path”,”pattern”,”pre”,”rect”,”small”,”span”,”stop”,”strong”,”style”,”sub”,”sup”,”svg”,”table”,”text”,”textPath”,”thead”,”title”,”tbody”,”tspan”,”td”,”th”,”tr”,”u”,”ul”,”#text”],m.emptyHTML=V,m.bypassHTMLFiltering=!1,m}),b(x,”Core/Templating.js”,[x[“Core/Defaults.js”],x[“Core/Utilities.js”]],function(e,x){let{defaultOptions:b,defaultTime:E}=e,{extend:L,getNestedProperty:O,isArray:D,isNumber:j,isObject:R,pick:z,pInt:F}=x,H={add:(e,x)=>e+x,divide:(e,x)=>0!==x?e/x:””,eq:(e,x)=>e==x,each:function(e){let x=arguments[arguments.length-1];return!!D(e)&&e.map((b,E)=>U(x.body,L(R(b)?b:{“@this”:b},{“@index”:E,”@first”:0===E,”@last”:E===e.length-1}))).join(“”)},ge:(e,x)=>e>=x,gt:(e,x)=>e>x,if:e=>!!e,le:(e,x)=>e<=x,lt:(e,x)=>ee*x,ne:(e,x)=>e!=x,subtract:(e,x)=>e-x,unless:e=>!e};function U(e=””,x,L){let D=/\{([a-zA-Z0-9\:\.\,;\-\/<>%_@”‘= #\(\)]+)\}/g,j=/\(([a-zA-Z0-9\:\.\,;\-\/<>%_@”‘= ]+)\)/g,R=[],F=/f$/,V=/\.([0-9])/,q=b.lang,K=L&&L.time||E,$=L&&L.numberFormatter||Y,_=(e=””)=>{let b;return”true”===e||”false”!==e&&((b=Number(e)).toString()===e?b:O(e,x))},Z,J,tt=0,te;for(;null!==(Z=D.exec(e));){let b=j.exec(Z[1]);b&&(Z=b,te=!0),J&&J.isBlock||(J={ctx:x,expression:Z[1],find:Z[0],isBlock:”#”===Z[1].charAt(0),start:Z.index,startInner:Z.index+Z[0].length,length:Z[0].length});let E=Z[1].split(” “)[0].replace(“#”,””);H[E]&&(J.isBlock&&E===J.fn&&tt++,J.fn||(J.fn=E));let L=”else”===Z[1];if(J.isBlock&&J.fn&&(Z[1]===`/${J.fn}`||L))if(tt)!L&&tt–;else{let x=J.startInner,b=e.substr(x,Z.index-x);void 0===J.body?(J.body=b,J.startInner=Z.index+Z[0].length):J.elseBody=b,J.find+=b+Z[0],L||(R.push(J),J=void 0)}else J.isBlock||R.push(J);if(b&&!J?.isBlock)break}return R.forEach(b=>{let E,O,{body:D,elseBody:j,expression:R,fn:Y}=b;if(Y){let e=[b],z=R.split(” “);for(O=H[Y].length;O–;)e.unshift(_(z[O+1]));E=H[Y].apply(x,e),b.isBlock&&”boolean”==typeof E&&(E=U(E?D:j,x,L))}else{let e=R.split(“:”);if(E=_(e.shift()||””),e.length&&”number”==typeof E){let x=e.join(“:”);if(F.test(x)){let e=parseInt((x.match(V)||[“”,”-1″])[1],10);null!==E&&(E=$(E,e,q.decimalPoint,x.indexOf(“,”)>-1?q.thousandsSep:””))}else E=K.dateFormat(x,E)}}e=e.replace(b.find,z(E,””))}),te?U(e,x,L):e}function Y(e,x,E,L){let O,D;e=+e||0,x*=1;let R=b.lang,H=(e.toString().split(“.”)[1]||””).split(“e”)[0].length,U=e.toString().split(“e”),Y=x;-1===x?x=Math.min(H,20):j(x)?x&&U[1]&&U[1]<0&&((D=x+ +U[1])>=0?(U[0]=(+U[0]).toExponential(D).split(“e”)[0],x=D):(U[0]=U[0].split(“.”)[0]||0,e=x<20?(U[0]*Math.pow(10,U[1])).toFixed(x):0,U[1]=0)):x=2;let V=(Math.abs(U[1]?U[0]:e)+Math.pow(10,-Math.max(x,H)-1)).toFixed(x),q=String(F(V)),K=q.length>3?q.length%3:0;return E=z(E,R.decimalPoint),L=z(L,R.thousandsSep),O=(e<0?"-":"")+(K?q.substr(0,K)+L:""),0>+U[1]&&!Y?O=”0″:O+=q.substr(K).replace(/(\d{3})(?=\d)/g,”$1″+L),x?O+=E+V.slice(-x):0==+O&&(O=”0″),U[1]&&0!=+O&&(O+=”e”+U[1]),O}return{dateFormat:function(e,x,b){return E.dateFormat(e,x,b)},format:U,helpers:H,numberFormat:Y}}),b(x,”Core/Renderer/RendererRegistry.js”,[x[“Core/Globals.js”]],function(e){var x,b;let E;return(b=x||(x={})).rendererTypes={},b.getRendererType=function(e=E){return b.rendererTypes[e]||b.rendererTypes[E]},b.registerRendererType=function(x,L,O){b.rendererTypes[x]=L,(!E||O)&&(E=x,e.Renderer=L)},x}),b(x,”Core/Renderer/RendererUtilities.js”,[x[“Core/Utilities.js”]],function(e){var x;let{clamp:b,pick:E,pushUnique:L,stableSort:O}=e;return(x||(x={})).distribute=function e(x,D,j){let R=x,z=R.reducedLen||D,F=(e,x)=>e.target-x.target,H=[],U=x.length,Y=[],V=H.push,q,K,$,_=!0,Z,J,tt=0,te;for(q=U;q–;)tt+=x[q].size;if(tt>z){for(O(x,(e,x)=>(x.rank||0)-(e.rank||0)),$=(te=x[0].rank===x[x.length-1].rank)?U/2:-1,K=te?$:U-1;$&&tt>z;)Z=x[q=Math.floor(K)],L(Y,q)&&(tt-=Z.size),K+=$,te&&K>=x.length&&($/=2,K=$);Y.sort((e,x)=>x-e).forEach(e=>V.apply(H,x.splice(e,1)))}for(O(x,F),x=x.map(e=>({size:e.size,targets:[e.target],align:E(e.align,.5)}));_;){for(q=x.length;q–;)Z=x[q],J=(Math.min.apply(0,Z.targets)+Math.max.apply(0,Z.targets))/2,Z.pos=b(J-Z.size*Z.align,0,D-Z.size);for(q=x.length,_=!1;q–;)q>0&&x[q-1].pos+x[q-1].size>x[q].pos&&(x[q-1].size+=x[q].size,x[q-1].targets=x[q-1].targets.concat(x[q].targets),x[q-1].align=.5,x[q-1].pos+x[q-1].size>D&&(x[q-1].pos=D-x[q-1].size),x.splice(q,1),_=!0)}return V.apply(R,H),q=0,x.some(x=>{let b=0;return(x.targets||[]).some(()=>(R[q].pos=x.pos+b,void 0!==j&&Math.abs(R[q].pos-R[q].target)>j)?(R.slice(0,q+1).forEach(e=>delete e.pos),R.reducedLen=(R.reducedLen||D)-.1*D,R.reducedLen>.1*D&&e(R,D,j),!0):(b+=R[q].size,q++,!1))}),O(R,F),R},x}),b(x,”Core/Renderer/SVG/SVGElement.js”,[x[“Core/Animation/AnimationUtilities.js”],x[“Core/Color/Color.js”],x[“Core/Globals.js”],x[“Core/Utilities.js”]],function(e,x,b,E){let{animate:L,animObject:O,stop:D}=e,{deg2rad:j,doc:R,svg:z,SVG_NS:F,win:H}=b,{addEvent:U,attr:Y,createElement:V,crisp:q,css:K,defined:$,erase:_,extend:Z,fireEvent:J,isArray:tt,isFunction:te,isObject:ti,isString:ts,merge:to,objectEach:tr,pick:tn,pInt:ta,pushUnique:tl,replaceNested:th,syncTimeout:td,uniqueKey:tc}=E;let I=class I{_defaultGetter(e){let x=tn(this[e+”Value”],this[e],this.element?this.element.getAttribute(e):null,0);return/^[\-0-9\.]+$/.test(x)&&(x=parseFloat(x)),x}_defaultSetter(e,x,b){b.setAttribute(x,e)}add(e){let x,b=this.renderer,E=this.element;return e&&(this.parentGroup=e),void 0!==this.textStr&&”text”===this.element.nodeName&&b.buildText(this),this.added=!0,(!e||e.handleZ||this.zIndex)&&(x=this.zIndexSetter()),x||(e?e.element:b.box).appendChild(E),this.onAdd&&this.onAdd(),this}addClass(e,x){let b=x?””:this.attr(“class”)||””;return(e=(e||””).split(/ /g).reduce(function(e,x){return -1===b.indexOf(x)&&e.push(x),e},b?[b]:[]).join(” “))!==b&&this.attr(“class”,e),this}afterSetters(){this.doTransform&&(this.updateTransform(),this.doTransform=!1)}align(e,x,b,E=!0){let L,O,D,j,R={},z=this.renderer,F=z.alignedObjects,H=!!e;e?(this.alignOptions=e,this.alignByTranslate=x,this.alignTo=b):(e=this.alignOptions||{},x=this.alignByTranslate,b=this.alignTo);let U=!b||ts(b)?b||”renderer”:void 0;U&&(H&&tl(F,this),b=void 0);let Y=tn(b,z[U],z),V=e.align,q=e.verticalAlign;return L=(Y.x||0)+(e.x||0),O=(Y.y||0)+(e.y||0),”right”===V?D=1:”center”===V&&(D=2),D&&(L+=((Y.width||0)-(e.width||0))/D),R[x?”translateX”:”x”]=Math.round(L),”bottom”===q?j=1:”middle”===q&&(j=2),j&&(O+=((Y.height||0)-(e.height||0))/j),R[x?”translateY”:”y”]=Math.round(O),E&&(this[this.placed?”animate”:”attr”](R),this.placed=!0),this.alignAttr=R,this}alignSetter(e){let x={left:”start”,center:”middle”,right:”end”};x[e]&&(this.alignValue=e,this.element.setAttribute(“text-anchor”,x[e]))}animate(e,x,b){let E=O(tn(x,this.renderer.globalAnimation,!0)),D=E.defer;return R.hidden&&(E.duration=0),0!==E.duration?(b&&(E.complete=b),td(()=>{this.element&&L(this,e,E)},D)):(this.attr(e,void 0,b||E.complete),tr(e,function(e,x){E.step&&E.step.call(this,e,{prop:x,pos:1,elem:this})},this)),this}applyTextOutline(e){let x=this.element;-1!==e.indexOf(“contrast”)&&(e=e.replace(/contrast/g,this.renderer.getContrast(x.style.fill)));let E=e.split(” “),L=E[E.length-1],O=E[0];if(O&&”none”!==O&&b.svg){this.fakeTS=!0,O=O.replace(/(^[\d\.]+)(.*?)$/g,function(e,x,b){return 2*Number(x)+b}),this.removeTextOutline();let e=R.createElementNS(F,”tspan”);Y(e,{class:”highcharts-text-outline”,fill:L,stroke:L,”stroke-width”:O,”stroke-linejoin”:”round”});let b=x.querySelector(“textPath”)||x;[].forEach.call(b.childNodes,x=>{let b=x.cloneNode(!0);b.removeAttribute&&[“fill”,”stroke”,”stroke-width”,”stroke”].forEach(e=>b.removeAttribute(e)),e.appendChild(b)});let E=0;[].forEach.call(b.querySelectorAll(“text tspan”),e=>{E+=Number(e.getAttribute(“dy”))});let D=R.createElementNS(F,”tspan”);D.textContent=”\u200B”,Y(D,{x:Number(x.getAttribute(“x”)),dy:-E}),e.appendChild(D),b.insertBefore(e,b.firstChild)}}attr(e,x,b,E){let{element:L}=this,O=I.symbolCustomAttribs,j,R,z=this,F;return”string”==typeof e&&void 0!==x&&(j=e,(e={})[j]=x),”string”==typeof e?z=(this[e+”Getter”]||this._defaultGetter).call(this,e,L):(tr(e,function(x,b){F=!1,E||D(this,b),this.symbolName&&-1!==O.indexOf(b)&&(R||(this.symbolAttr(e),R=!0),F=!0),this.rotation&&(“x”===b||”y”===b)&&(this.doTransform=!0),F||(this[b+”Setter”]||this._defaultSetter).call(this,x,b,L)},this),this.afterSetters()),b&&b.call(this),z}clip(e){if(e&&!e.clipPath){let x=tc()+”-“,b=this.renderer.createElement(“clipPath”).attr({id:x}).add(this.renderer.defs);Z(e,{clipPath:b,id:x,count:0}),e.add(b)}return this.attr(“clip-path”,e?`url(${this.renderer.url}#${e.id})`:”none”)}crisp(e,x){x=Math.round(x||e.strokeWidth||0);let b=e.x||this.x||0,E=e.y||this.y||0,L=(e.width||this.width||0)+b,O=(e.height||this.height||0)+E,D=q(b,x),j=q(E,x);return Z(e,{x:D,y:j,width:q(L,x)-D,height:q(O,x)-j}),$(e.strokeWidth)&&(e.strokeWidth=x),e}complexColor(e,b,E){let L=this.renderer,O,D,j,R,z,F,H,U,Y,V,q=[],K;J(this.renderer,”complexColor”,{args:arguments},function(){if(e.radialGradient?D=”radialGradient”:e.linearGradient&&(D=”linearGradient”),D){if(j=e[D],z=L.gradients,F=e.stops,Y=E.radialReference,tt(j)&&(e[D]=j={x1:j[0],y1:j[1],x2:j[2],y2:j[3],gradientUnits:”userSpaceOnUse”}),”radialGradient”===D&&Y&&!$(j.gradientUnits)&&(R=j,j=to(j,L.getRadialAttr(Y,R),{gradientUnits:”userSpaceOnUse”})),tr(j,function(e,x){“id”!==x&&q.push(x,e)}),tr(F,function(e){q.push(e)}),z[q=q.join(“,”)])V=z[q].attr(“id”);else{j.id=V=tc();let e=z[q]=L.createElement(D).attr(j).add(L.defs);e.radAttr=R,e.stops=[],F.forEach(function(b){0===b[1].indexOf(“rgba”)?(H=(O=x.parse(b[1])).get(“rgb”),U=O.get(“a”)):(H=b[1],U=1);let E=L.createElement(“stop”).attr({offset:b[0],”stop-color”:H,”stop-opacity”:U}).add(e);e.stops.push(E)})}K=”url(“+L.url+”#”+V+”)”,E.setAttribute(b,K),E.gradient=q,e.toString=function(){return K}}})}css(e){let x=this.styles,b={},E=this.element,L,O=!x;if(x&&tr(e,function(e,E){x&&x[E]!==e&&(b[E]=e,O=!0)}),O){x&&(e=Z(x,b)),null===e.width||”auto”===e.width?delete this.textWidth:”text”===E.nodeName.toLowerCase()&&e.width&&(L=this.textWidth=ta(e.width)),Z(this.styles,e),L&&!z&&this.renderer.forExport&&delete e.width;let O=to(e);E.namespaceURI===this.SVG_NS&&([“textOutline”,”textOverflow”,”width”].forEach(e=>O&&delete O[e]),O.color&&(O.fill=O.color)),K(E,O)}return this.added&&(“text”===this.element.nodeName&&this.renderer.buildText(this),e.textOutline&&this.applyTextOutline(e.textOutline)),this}dashstyleSetter(e){let x,b=this[“stroke-width”];if(“inherit”===b&&(b=1),e=e&&e.toLowerCase()){let E=e.replace(“shortdashdotdot”,”3,1,1,1,1,1,”).replace(“shortdashdot”,”3,1,1,1″).replace(“shortdot”,”1,1,”).replace(“shortdash”,”3,1,”).replace(“longdash”,”8,3,”).replace(/dot/g,”1,3,”).replace(“dash”,”4,3,”).replace(/,$/,””).split(“,”);for(x=E.length;x–;)E[x]=””+ta(E[x])*tn(b,NaN);e=E.join(“,”).replace(/NaN/g,”none”),this.element.setAttribute(“stroke-dasharray”,e)}}destroy(){let e=this,x=e.element||{},b=e.renderer,E=x.ownerSVGElement,L=”SPAN”===x.nodeName&&e.parentGroup||void 0,O,j;if(x.onclick=x.onmouseout=x.onmouseover=x.onmousemove=x.point=null,D(e),e.clipPath&&E){let x=e.clipPath;[].forEach.call(E.querySelectorAll(“[clip-path],[CLIP-PATH]”),function(e){e.getAttribute(“clip-path”).indexOf(x.element.id)>-1&&e.removeAttribute(“clip-path”)}),e.clipPath=x.destroy()}if(e.connector=e.connector?.destroy(),e.stops){for(j=0;jx&&x.join?(b?e+” “:””)+x.join(” “):(x||””).toString(),””)),/(NaN| {2}|^$)/.test(e)&&(e=”M 0 0″),this[x]!==e&&(b.setAttribute(x,e),this[x]=e)}fillSetter(e,x,b){“string”==typeof e?b.setAttribute(x,e):e&&this.complexColor(e,x,b)}hrefSetter(e,x,b){b.setAttributeNS(“http://www.w3.org/1999/xlink”,x,e)}getBBox(e,x){let b,E,L,O,{alignValue:D,element:j,renderer:R,styles:z,textStr:F}=this,{cache:H,cacheKeys:U}=R,Y=j.namespaceURI===this.SVG_NS,V=tn(x,this.rotation,0),q=R.styledMode?j&&I.prototype.getStyle.call(j,”font-size”):z.fontSize;if($(F)&&(-1===(O=F.toString()).indexOf(“<")&&(O=O.replace(/[0-9]/g,"0")),O+=["",R.rootFontSize,q,V,this.textWidth,D,z.textOverflow,z.fontWeight].join(",")),O&&!e&&(b=H[O]),!b){if(Y||R.forExport){try{L=this.fakeTS&&function(e){let x=j.querySelector(".highcharts-text-outline");x&&K(x,{display:e})},te(L)&&L("none"),b=j.getBBox?Z({},j.getBBox()):{width:j.offsetWidth,height:j.offsetHeight,x:0,y:0},te(L)&&L("")}catch(e){}(!b||b.width<0)&&(b={x:0,y:0,width:0,height:0})}else b=this.htmlGetBBox();E=b.height,Y&&(b.height=E=({"11px,17":14,"13px,20":16})[`${q||""},${Math.round(E)}`]||E),V&&(b=this.getRotatedBox(b,V))}if(O&&(""===F||b.height>0)){for(;U.length>250;)delete H[U.shift()];H[O]||U.push(O),H[O]=b}return b}getRotatedBox(e,x){let{x:b,y:E,width:L,height:O}=e,{alignValue:D,translateY:R,rotationOriginX:z=0,rotationOriginY:F=0}=this,H={right:1,center:.5}[D||0]||0,U=Number(this.element.getAttribute(“y”)||0)-(R?0:E),Y=x*j,V=(x-90)*j,q=Math.cos(Y),K=Math.sin(Y),$=L*q,_=L*K,Z=Math.cos(V),J=Math.sin(V),[[tt,te],[ti,ts]]=[z,F].map(e=>[e-e*q,e*K]),to=b+H*(L-$)+tt+ts+U*Z,tr=to+$,tn=tr-O*Z,ta=tn-$,tl=E+U-H*_-te+ti+U*J,th=tl+_,td=th-O*J,tc=td-_,tp=Math.min(to,tr,tn,ta),tu=Math.min(tl,th,td,tc),tg=Math.max(to,tr,tn,ta)-tp,tm=Math.max(tl,th,td,tc)-tu;return{x:tp,y:tu,width:tg,height:tm}}getStyle(e){return H.getComputedStyle(this.element||this,””).getPropertyValue(e)}hasClass(e){return -1!==(“”+this.attr(“class”)).split(” “).indexOf(e)}hide(){return this.attr({visibility:”hidden”})}htmlGetBBox(){return{height:0,width:0,x:0,y:0}}constructor(e,x){this.onEvents={},this.opacity=1,this.SVG_NS=F,this.element=”span”===x||”body”===x?V(x):R.createElementNS(this.SVG_NS,x),this.renderer=e,this.styles={},J(this,”afterInit”)}on(e,x){let{onEvents:b}=this;return b[e]&&b[e](),b[e]=U(this.element,e,x),this}opacitySetter(e,x,b){let E=Number(Number(e).toFixed(3));this.opacity=E,b.setAttribute(x,E)}reAlign(){this.alignOptions?.width&&”left”!==this.alignOptions.align&&(this.alignOptions.width=this.getBBox().width,this.placed=!1,this.align())}removeClass(e){return this.attr(“class”,(“”+this.attr(“class”)).replace(ts(e)?RegExp(`(^| )${e}( |$)`):e,” “).replace(/ +/g,” “).trim())}removeTextOutline(){let e=this.element.querySelector(“tspan.highcharts-text-outline”);e&&this.safeRemoveChild(e)}safeRemoveChild(e){let x=e.parentNode;x&&x.removeChild(e)}setRadialReference(e){let x=this.element.gradient&&this.renderer.gradients[this.element.gradient];return this.element.radialReference=e,x&&x.radAttr&&x.animate(this.renderer.getRadialAttr(e,x.radAttr)),this}setTextPath(e,x){x=to(!0,{enabled:!0,attributes:{dy:-5,startOffset:”50%”,textAnchor:”middle”}},x);let b=this.renderer.url,E=this.text||this,L=E.textPath,{attributes:O,enabled:D}=x;if(e=e||L&&L.path,L&&L.undo(),e&&D){let x=U(E,”afterModifyTree”,x=>{if(e&&D){let L=e.attr(“id”);L||e.attr(“id”,L=tc());let D={x:0,y:0};$(O.dx)&&(D.dx=O.dx,delete O.dx),$(O.dy)&&(D.dy=O.dy,delete O.dy),E.attr(D),this.attr({transform:””}),this.box&&(this.box=this.box.destroy());let j=x.nodes.slice(0);x.nodes.length=0,x.nodes[0]={tagName:”textPath”,attributes:Z(O,{“text-anchor”:O.textAnchor,href:`${b}#${L}`}),children:j}}});E.textPath={path:e,undo:x}}else E.attr({dx:0,dy:0}),delete E.textPath;return this.added&&(E.textCache=””,this.renderer.buildText(E)),this}shadow(e){let{renderer:x}=this,b=to(this.parentGroup?.rotation===90?{offsetX:-1,offsetY:-1}:{},ti(e)?e:{}),E=x.shadowDefinition(b);return this.attr({filter:e?`url(${x.url}#${E})`:”none”})}show(e=!0){return this.attr({visibility:e?”inherit”:”visible”})}”stroke-widthSetter”(e,x,b){this[x]=e,b.setAttribute(x,e)}strokeWidth(){if(!this.renderer.styledMode)return this[“stroke-width”]||0;let e=this.getStyle(“stroke-width”),x=0,b;return/px$/.test(e)?x=ta(e):””!==e&&(Y(b=R.createElementNS(F,”rect”),{width:e,”stroke-width”:0}),this.element.parentNode.appendChild(b),x=b.getBBox().width,b.parentNode.removeChild(b)),x}symbolAttr(e){let x=this;I.symbolCustomAttribs.forEach(function(b){x[b]=tn(e[b],x[b])}),x.attr({d:x.renderer.symbols[x.symbolName](x.x,x.y,x.width,x.height,x)})}textSetter(e){e!==this.textStr&&(delete this.textPxLength,this.textStr=e,this.added&&this.renderer.buildText(this),this.reAlign())}titleSetter(e){let x=this.element,b=x.getElementsByTagName(“title”)[0]||R.createElementNS(this.SVG_NS,”title”);x.insertBefore?x.insertBefore(b,x.firstChild):x.appendChild(b),b.textContent=th(tn(e,””),[/<[^>]*>/g,””]).replace(/</g,”<").replace(/>/g,">“)}toFront(){let e=this.element;return e.parentNode.appendChild(e),this}translate(e,x){return this.attr({translateX:e,translateY:x})}updateTransform(e=”transform”){let{element:x,matrix:b,rotation:E=0,rotationOriginX:L,rotationOriginY:O,scaleX:D,scaleY:j,translateX:R=0,translateY:z=0}=this,F=[“translate(“+R+”,”+z+”)”];$(b)&&F.push(“matrix(“+b.join(“,”)+”)”),E&&(F.push(“rotate(“+E+” “+tn(L,x.getAttribute(“x”),0)+” “+tn(O,x.getAttribute(“y”)||0)+”)”),this.text?.element.tagName===”SPAN”&&this.text.attr({rotation:E,rotationOriginX:(L||0)-this.padding,rotationOriginY:(O||0)-this.padding})),($(D)||$(j))&&F.push(“scale(“+tn(D,1)+” “+tn(j,1)+”)”),F.length&&!(this.text||this).textPath&&x.setAttribute(e,F.join(” “))}visibilitySetter(e,x,b){“inherit”===e?b.removeAttribute(x):this[x]!==e&&b.setAttribute(x,e),this[x]=e}xGetter(e){return”circle”===this.element.nodeName&&(“x”===e?e=”cx”:”y”===e&&(e=”cy”)),this._defaultGetter(e)}zIndexSetter(e,x){let b=this.renderer,E=this.parentGroup,L=(E||b).element||b.box,O=this.element,D=L===b.box,j,R,z,F=!1,H,U=this.added,Y;if($(e)?(O.setAttribute(“data-z-index”,e),e*=1,this[x]===e&&(U=!1)):$(this[x])&&O.removeAttribute(“data-z-index”),this[x]=e,U){for((e=this.zIndex)&&E&&(E.handleZ=!0),Y=(j=L.childNodes).length-1;Y>=0&&!F;Y–)H=!$(z=(R=j[Y]).getAttribute(“data-z-index”)),R!==O&&(e<0&&H&&!D&&!Y?(L.insertBefore(O,j[Y]),F=!0):(ta(z)<=e||H&&(!$(e)||e>=0))&&(L.insertBefore(O,j[Y+1]),F=!0));F||(L.insertBefore(O,j[3*!!D]),F=!0)}return F}};return I.symbolCustomAttribs=[“anchorX”,”anchorY”,”clockwise”,”end”,”height”,”innerR”,”r”,”start”,”width”,”x”,”y”],I.prototype.strokeSetter=I.prototype.fillSetter,I.prototype.yGetter=I.prototype.xGetter,I.prototype.matrixSetter=I.prototype.rotationOriginXSetter=I.prototype.rotationOriginYSetter=I.prototype.rotationSetter=I.prototype.scaleXSetter=I.prototype.scaleYSetter=I.prototype.translateXSetter=I.prototype.translateYSetter=I.prototype.verticalAlignSetter=function(e,x){this[x]=e,this.doTransform=!0},I}),b(x,”Core/Renderer/SVG/SVGLabel.js”,[x[“Core/Renderer/SVG/SVGElement.js”],x[“Core/Utilities.js”]],function(e,x){let{defined:b,extend:E,isNumber:L,merge:O,pick:D,removeEvent:j}=x;let h=class h extends e{constructor(e,x,b,E,L,O,D,j,R,z){let F;super(e,”g”),this.paddingLeftSetter=this.paddingSetter,this.paddingRightSetter=this.paddingSetter,this.textStr=x,this.x=b,this.y=E,this.anchorX=O,this.anchorY=D,this.baseline=R,this.className=z,this.addClass(“button”===z?”highcharts-no-tooltip”:”highcharts-label”),z&&this.addClass(“highcharts-“+z),this.text=e.text(void 0,0,0,j).attr({zIndex:1}),”string”==typeof L&&((F=/^url\((.*?)\)$/.test(L))||this.renderer.symbols[L])&&(this.symbolKey=L),this.bBox=h.emptyBBox,this.padding=3,this.baselineOffset=0,this.needsBox=e.styledMode||F,this.deferredAttr={},this.alignFactor=0}alignSetter(e){let x={left:0,center:.5,right:1}[e];x!==this.alignFactor&&(this.alignFactor=x,this.bBox&&L(this.xSetting)&&this.attr({x:this.xSetting}))}anchorXSetter(e,x){this.anchorX=e,this.boxAttr(x,Math.round(e)-this.getCrispAdjust()-this.xSetting)}anchorYSetter(e,x){this.anchorY=e,this.boxAttr(x,e-this.ySetting)}boxAttr(e,x){this.box?this.box.attr(e,x):this.deferredAttr[e]=x}css(x){if(x){let e={};x=O(x),h.textProps.forEach(b=>{void 0!==x[b]&&(e[b]=x[b],delete x[b])}),this.text.css(e),”fontSize”in e||”fontWeight”in e?this.updateTextPadding():(“width”in e||”textOverflow”in e)&&this.updateBoxSize()}return e.prototype.css.call(this,x)}destroy(){j(this.element,”mouseenter”),j(this.element,”mouseleave”),this.text&&this.text.destroy(),this.box&&(this.box=this.box.destroy()),e.prototype.destroy.call(this)}fillSetter(e,x){e&&(this.needsBox=!0),this.fill=e,this.boxAttr(x,e)}getBBox(e,x){this.textStr&&0===this.bBox.width&&0===this.bBox.height&&this.updateBoxSize();let{padding:b,height:E=0,translateX:L=0,translateY:O=0,width:j=0}=this,R=D(this.paddingLeft,b),z=x??(this.rotation||0),F={width:j,height:E,x:L+this.bBox.x-R,y:O+this.bBox.y-b+this.baselineOffset};return z&&(F=this.getRotatedBox(F,z)),F}getCrispAdjust(){return(this.renderer.styledMode&&this.box?this.box.strokeWidth():this[“stroke-width”]?parseInt(this[“stroke-width”],10):0)%2/2}heightSetter(e){this.heightSetting=e}onAdd(){this.text.add(this),this.attr({text:D(this.textStr,””),x:this.x||0,y:this.y||0}),this.box&&b(this.anchorX)&&this.attr({anchorX:this.anchorX,anchorY:this.anchorY})}paddingSetter(e,x){L(e)?e!==this[x]&&(this[x]=e,this.updateTextPadding()):this[x]=void 0}rSetter(e,x){this.boxAttr(x,e)}strokeSetter(e,x){this.stroke=e,this.boxAttr(x,e)}”stroke-widthSetter”(e,x){e&&(this.needsBox=!0),this[“stroke-width”]=e,this.boxAttr(x,e)}”text-alignSetter”(e){this.textAlign=e}textSetter(e){void 0!==e&&this.text.attr({text:e}),this.updateTextPadding(),this.reAlign()}updateBoxSize(){let e,x=this.text,O={},D=this.padding,j=this.bBox=(!L(this.widthSetting)||!L(this.heightSetting)||this.textAlign)&&b(x.textStr)?x.getBBox(void 0,0):h.emptyBBox;this.width=this.getPaddedWidth(),this.height=(this.heightSetting||j.height||0)+2*D;let R=this.renderer.fontMetrics(x);if(this.baselineOffset=D+Math.min((this.text.firstLineMetrics||R).b,j.height||1/0),this.heightSetting&&(this.baselineOffset+=(this.heightSetting-R.h)/2),this.needsBox&&!x.textPath){if(!this.box){let e=this.box=this.symbolKey?this.renderer.symbol(this.symbolKey):this.renderer.rect();e.addClass((“button”===this.className?””:”highcharts-label-box”)+(this.className?” highcharts-“+this.className+”-box”:””)),e.add(this)}O.x=e=this.getCrispAdjust(),O.y=(this.baseline?-this.baselineOffset:0)+e,O.width=Math.round(this.width),O.height=Math.round(this.height),this.box.attr(E(O,this.deferredAttr)),this.deferredAttr={}}}updateTextPadding(){let e=this.text;if(!e.textPath){this.updateBoxSize();let x=this.baseline?0:this.baselineOffset,E=D(this.paddingLeft,this.padding);b(this.widthSetting)&&this.bBox&&(“center”===this.textAlign||”right”===this.textAlign)&&(E+=({center:.5,right:1})[this.textAlign]*(this.widthSetting-this.bBox.width)),(E!==e.x||x!==e.y)&&(e.attr(“x”,E),e.hasBoxWidthChanged&&(this.bBox=e.getBBox(!0)),void 0!==x&&e.attr(“y”,x)),e.x=E,e.y=x}}widthSetter(e){this.widthSetting=L(e)?e:void 0}getPaddedWidth(){let e=this.padding,x=D(this.paddingLeft,e),b=D(this.paddingRight,e);return(this.widthSetting||this.bBox.width||0)+x+b}xSetter(e){this.x=e,this.alignFactor&&(e-=this.alignFactor*this.getPaddedWidth(),this[“forceAnimate:x”]=!0),this.xSetting=Math.round(e),this.attr(“translateX”,this.xSetting)}ySetter(e){this.ySetting=this.y=Math.round(e),this.attr(“translateY”,this.ySetting)}};return h.emptyBBox={width:0,height:0,x:0,y:0},h.textProps=[“color”,”direction”,”fontFamily”,”fontSize”,”fontStyle”,”fontWeight”,”lineHeight”,”textAlign”,”textDecoration”,”textOutline”,”textOverflow”,”whiteSpace”,”width”],h}),b(x,”Core/Renderer/SVG/Symbols.js”,[x[“Core/Utilities.js”]],function(e){let{defined:x,isNumber:b,pick:E}=e;function L(e,b,L,O,D){let j=[];if(D){let R=D.start||0,z=E(D.r,L),F=E(D.r,O||L),H=2e-4/Math.max(z,1),U=Math.abs((D.end||0)-R-2*Math.PI)0&&F0)return H;if(e+z>E-R)if(F>x+R&&Fx+R&&F0){let b=FL&&zR&&H.splice(1,1,[“L”,z-6,x],[“L”,z,x-6],[“L”,z+6,x],[“L”,E-j,x]);return H},circle:function(e,x,b,E){return L(e+b/2,x+E/2,b/2,E/2,{start:.5*Math.PI,end:2.5*Math.PI,open:!1})},diamond:function(e,x,b,E){return[[“M”,e+b/2,x],[“L”,e+b,x+E/2],[“L”,e+b/2,x+E],[“L”,e,x+E/2],[“Z”]]},rect:O,roundedRect:D,square:O,triangle:function(e,x,b,E){return[[“M”,e+b/2,x],[“L”,e+b,x+E],[“L”,e,x+E],[“Z”]]},”triangle-down”:function(e,x,b,E){return[[“M”,e,x],[“L”,e+b,x],[“L”,e+b/2,x+E],[“Z”]]}}}),b(x,”Core/Renderer/SVG/TextBuilder.js”,[x[“Core/Renderer/HTML/AST.js”],x[“Core/Globals.js”],x[“Core/Utilities.js”]],function(e,x,b){let{doc:E,SVG_NS:L,win:O}=x,{attr:D,extend:j,fireEvent:R,isString:z,objectEach:F,pick:H}=b;return class{constructor(e){let x=e.styles;this.renderer=e.renderer,this.svgElement=e,this.width=e.textWidth,this.textLineHeight=x&&x.lineHeight,this.textOutline=x&&x.textOutline,this.ellipsis=!!(x&&”ellipsis”===x.textOverflow),this.noWrap=!!(x&&”nowrap”===x.whiteSpace)}buildSVG(){let x=this.svgElement,b=x.element,L=x.renderer,O=H(x.textStr,””).toString(),D=-1!==O.indexOf(“<"),j=b.childNodes,R=!x.added&&L.box,F=[O,this.ellipsis,this.noWrap,this.textLineHeight,this.textOutline,x.getStyle("font-size"),this.width].join(",");if(F!==x.textCache){x.textCache=F,delete x.actualWidth;for(let e=j.length;e--;)b.removeChild(j[e]);if(D||this.ellipsis||this.width||x.textPath||-1!==O.indexOf(" ")&&(!this.noWrap||//g.test(O))){if(“”!==O){R&&R.appendChild(b);let E=new e(O);this.modifyTree(E.nodes),E.addToDOM(b),this.modifyDOM(),this.ellipsis&&-1!==(b.textContent||””).indexOf(“\u2026”)&&x.attr(“title”,this.unescapeEntities(x.textStr||””,[“<“,”>”])),R&&R.removeChild(b)}}else b.appendChild(E.createTextNode(this.unescapeEntities(O)));z(this.textOutline)&&x.applyTextOutline&&x.applyTextOutline(this.textOutline)}}modifyDOM(){let e,x=this.svgElement,b=D(x.element,”x”);for(x.firstLineMetrics=void 0;e=x.element.firstChild;)if(/^[\s\u200B]*$/.test(e.textContent||” “))x.element.removeChild(e);else break;[].forEach.call(x.element.querySelectorAll(“tspan.highcharts-br”),(e,E)=>{e.nextSibling&&e.previousSibling&&(0===E&&1===e.previousSibling.nodeType&&(x.firstLineMetrics=x.renderer.fontMetrics(e.previousSibling)),D(e,{dy:this.getLineHeight(e.nextSibling),x:b}))});let j=this.width||0;if(!j)return;let R=(e,O)=>{let R=e.textContent||””,z=R.replace(/([^\^])-/g,”$1- “).split(” “),F=!this.noWrap&&(z.length>1||x.element.childNodes.length>1),H=this.getLineHeight(O),U=0,Y=x.actualWidth;if(this.ellipsis)R&&this.truncate(e,R,void 0,0,Math.max(0,j-.8*H),(e,x)=>e.substring(0,x)+”\u2026″);else if(F){let R=[],F=[];for(;O.firstChild&&O.firstChild!==e;)F.push(O.firstChild),O.removeChild(O.firstChild);for(;z.length;)z.length&&!this.noWrap&&U>0&&(R.push(e.textContent||””),e.textContent=z.join(” “).replace(/- /g,”-“)),this.truncate(e,void 0,z,0===U&&Y||0,j,(e,x)=>z.slice(0,x).join(” “).replace(/- /g,”-“)),Y=x.actualWidth,U++;F.forEach(x=>{O.insertBefore(x,e)}),R.forEach(x=>{O.insertBefore(E.createTextNode(x),e);let j=E.createElementNS(L,”tspan”);j.textContent=”\u200B”,D(j,{dy:H,x:b}),O.insertBefore(j,e)})}},z=e=>{[].slice.call(e.childNodes).forEach(b=>{b.nodeType===O.Node.TEXT_NODE?R(b,e):(-1!==b.className.baseVal.indexOf(“highcharts-br”)&&(x.actualWidth=0),z(b))})};z(x.element)}getLineHeight(e){let x=e.nodeType===O.Node.TEXT_NODE?e.parentElement:e;return this.textLineHeight?parseInt(this.textLineHeight.toString(),10):this.renderer.fontMetrics(x||this.svgElement.element).h}modifyTree(e){let x=(b,E)=>{let{attributes:L={},children:O,style:D={},tagName:R}=b,z=this.renderer.styledMode;if(“b”===R||”strong”===R?z?L.class=”highcharts-strong”:D.fontWeight=”bold”:(“i”===R||”em”===R)&&(z?L.class=”highcharts-emphasized”:D.fontStyle=”italic”),D&&D.color&&(D.fill=D.color),”br”===R){L.class=”highcharts-br”,b.textContent=”\u200B”;let x=e[E+1];x&&x.textContent&&(x.textContent=x.textContent.replace(/^ +/gm,””))}else”a”===R&&O&&O.some(e=>”#text”===e.tagName)&&(b.children=[{children:O,tagName:”tspan”}]);”#text”!==R&&”a”!==R&&(b.tagName=”tspan”),j(b,{attributes:L,style:D}),O&&O.filter(e=>”#text”!==e.tagName).forEach(x)};e.forEach(x),R(this.svgElement,”afterModifyTree”,{nodes:e})}truncate(e,x,b,E,L,O){let D,j,R=this.svgElement,{rotation:z}=R,F=[],H=+!!b,U=(x||b||””).length,Y=U,V=function(x,L){let O=L||x,D=e.parentNode;if(D&&void 0===F[O]&&D.getSubStringLength)try{F[O]=E+D.getSubStringLength(0,b?O+1:O)}catch(e){}return F[O]};if(R.rotation=0,E+(j=V(e.textContent.length))>L){for(;H<=U;)Y=Math.ceil((H+U)/2),b&&(D=O(b,Y)),j=V(Y,D&&D.length-1),H===U?H=U+1:j>L?U=Y-1:H=Y;0===U?e.textContent=””:x&&U===x.length-1||(e.textContent=D||O(x||b,Y))}b&&b.splice(0,Y),R.actualWidth=j,R.rotation=z}unescapeEntities(e,x){return F(this.renderer.escapes,function(b,E){x&&-1!==x.indexOf(b)||(e=e.toString().replace(RegExp(b,”g”),E))}),e}}}),b(x,”Core/Renderer/SVG/SVGRenderer.js”,[x[“Core/Renderer/HTML/AST.js”],x[“Core/Defaults.js”],x[“Core/Color/Color.js”],x[“Core/Globals.js”],x[“Core/Renderer/RendererRegistry.js”],x[“Core/Renderer/SVG/SVGElement.js”],x[“Core/Renderer/SVG/SVGLabel.js”],x[“Core/Renderer/SVG/Symbols.js”],x[“Core/Renderer/SVG/TextBuilder.js”],x[“Core/Utilities.js”]],function(e,x,b,E,L,O,D,j,R,z){let F,{defaultOptions:H}=x,{charts:U,deg2rad:Y,doc:V,isFirefox:q,isMS:K,isWebKit:$,noop:_,SVG_NS:Z,symbolSizes:J,win:tt}=E,{addEvent:te,attr:ti,createElement:ts,crisp:to,css:tr,defined:tn,destroyObjectProperties:ta,extend:tl,isArray:th,isNumber:td,isObject:tc,isString:tp,merge:tu,pick:tg,pInt:tm,replaceNested:tf,uniqueKey:tx}=z;let W=class W{constructor(e,x,b,E,L,O,D){let j,R,z=this.createElement(“svg”).attr({version:”1.1″,class:”highcharts-root”}),F=z.element;D||z.css(this.getStyle(E||{})),e.appendChild(F),ti(e,”dir”,”ltr”),-1===e.innerHTML.indexOf(“xmlns”)&&ti(F,”xmlns”,this.SVG_NS),this.box=F,this.boxWrapper=z,this.alignedObjects=[],this.url=this.getReferenceURL(),this.createElement(“desc”).add().element.appendChild(V.createTextNode(“Created with Highcharts 11.4.3”)),this.defs=this.createElement(“defs”).add(),this.allowHTML=O,this.forExport=L,this.styledMode=D,this.gradients={},this.cache={},this.cacheKeys=[],this.imgCount=0,this.rootFontSize=z.getStyle(“font-size”),this.setSize(x,b,!1),q&&e.getBoundingClientRect&&((j=function(){tr(e,{left:0,top:0}),R=e.getBoundingClientRect(),tr(e,{left:Math.ceil(R.left)-R.left+”px”,top:Math.ceil(R.top)-R.top+”px”})})(),this.unSubPixelFix=te(tt,”resize”,j))}definition(x){return new e([x]).addToDOM(this.defs.element)}getReferenceURL(){if((q||$)&&V.getElementsByTagName(“base”).length){if(!tn(F)){let x=tx(),b=new e([{tagName:”svg”,attributes:{width:8,height:8},children:[{tagName:”defs”,children:[{tagName:”clipPath”,attributes:{id:x},children:[{tagName:”rect”,attributes:{width:4,height:4}}]}]},{tagName:”rect”,attributes:{id:”hitme”,width:8,height:8,”clip-path”:`url(#${x})`,fill:”rgba(0,0,0,0.001)”}}]}]).addToDOM(V.body);tr(b,{position:”fixed”,top:0,left:0,zIndex:9e5});let E=V.elementFromPoint(6,6);F=”hitme”===(E&&E.id),V.body.removeChild(b)}if(F)return tf(tt.location.href.split(“#”)[0],[/<[^>]*>/g,””],[/([\(‘\)])/g,”\\$1″],[/ /g,”%20″])}return””}getStyle(e){return this.style=tl({fontFamily:”Helvetica, Arial, sans-serif”,fontSize:”1rem”},e),this.style}setStyle(e){this.boxWrapper.css(this.getStyle(e))}isHidden(){return!this.boxWrapper.getBBox().width}destroy(){let e=this.defs;return this.box=null,this.boxWrapper=this.boxWrapper.destroy(),ta(this.gradients||{}),this.gradients=null,this.defs=e.destroy(),this.unSubPixelFix&&this.unSubPixelFix(),this.alignedObjects=null,null}createElement(e){return new this.Element(this,e)}getRadialAttr(e,x){return{cx:e[0]-e[2]/2+(x.cx||0)*e[2],cy:e[1]-e[2]/2+(x.cy||0)*e[2],r:(x.r||0)*e[2]}}shadowDefinition(e){let x=[`highcharts-drop-shadow-${this.chartIndex}`,…Object.keys(e).map(x=>`${x}-${e[x]}`)].join(“-“).toLowerCase().replace(/[^a-z0-9\-]/g,””),b=tu({color:”#000000″,offsetX:1,offsetY:1,opacity:.15,width:5},e);return this.defs.element.querySelector(`#${x}`)||this.definition({tagName:”filter”,attributes:{id:x,filterUnits:b.filterUnits},children:[{tagName:”feDropShadow”,attributes:{dx:b.offsetX,dy:b.offsetY,”flood-color”:b.color,”flood-opacity”:Math.min(5*b.opacity,1),stdDeviation:b.width/2}}]}),x}buildText(e){new R(e).buildSVG()}getContrast(e){let x=b.parse(e).rgba.map(e=>{let x=e/255;return x<=.03928?x/12.92:Math.pow((x+.055)/1.055,2.4)}),E=.2126*x[0]+.7152*x[1]+.0722*x[2];return 1.05/(E+.05)>(E+.05)/.05?”#FFFFFF”:”#000000″}button(x,b,E,L,O={},D,j,R,z,F){let U=this.label(x,b,E,z,void 0,void 0,F,void 0,”button”),Y=this.styledMode,V=arguments,q=0;O=tu(H.global.buttonTheme,O),Y&&(delete O.fill,delete O.stroke,delete O[“stroke-width”]);let $=O.states||{},_=O.style||{};delete O.states,delete O.style;let Z=[e.filterUserAttributes(O)],J=[_];return Y||[“hover”,”select”,”disabled”].forEach((x,b)=>{Z.push(tu(Z[0],e.filterUserAttributes(V[b+5]||$[x]||{}))),J.push(Z[b+1].style),delete Z[b+1].style}),te(U.element,K?”mouseover”:”mouseenter”,function(){3!==q&&U.setState(1)}),te(U.element,K?”mouseout”:”mouseleave”,function(){3!==q&&U.setState(q)}),U.setState=(e=0)=>{if(1!==e&&(U.state=q=e),U.removeClass(/highcharts-button-(normal|hover|pressed|disabled)/).addClass(“highcharts-button-“+[“normal”,”hover”,”pressed”,”disabled”][e]),!Y){U.attr(Z[e]);let x=J[e];tc(x)&&U.css(x)}},U.attr(Z[0]),!Y&&(U.css(tl({cursor:”default”},_)),F&&U.text.css({pointerEvents:”none”})),U.on(“touchstart”,e=>e.stopPropagation()).on(“click”,function(e){3!==q&&L.call(U,e)})}crispLine(e,x){let[b,E]=e;return tn(b[1])&&b[1]===E[1]&&(b[1]=E[1]=to(b[1],x)),tn(b[2])&&b[2]===E[2]&&(b[2]=E[2]=to(b[2],x)),e}path(e){let x=this.styledMode?{}:{fill:”none”};return th(e)?x.d=e:tc(e)&&tl(x,e),this.createElement(“path”).attr(x)}circle(e,x,b){let E=tc(e)?e:void 0===e?{}:{x:e,y:x,r:b},L=this.createElement(“circle”);return L.xSetter=L.ySetter=function(e,x,b){b.setAttribute(“c”+x,e)},L.attr(E)}arc(e,x,b,E,L,O){let D;tc(e)?(x=(D=e).y,b=D.r,E=D.innerR,L=D.start,O=D.end,e=D.x):D={innerR:E,start:L,end:O};let j=this.symbol(“arc”,e,x,b,b,D);return j.r=b,j}rect(e,x,b,E,L,O){let D=tc(e)?e:void 0===e?{}:{x:e,y:x,r:L,width:Math.max(b||0,0),height:Math.max(E||0,0)},j=this.createElement(“rect”);return this.styledMode||(void 0!==O&&(D[“stroke-width”]=O,tl(D,j.crisp(D))),D.fill=”none”),j.rSetter=function(e,x,b){j.r=e,ti(b,{rx:e,ry:e})},j.rGetter=function(){return j.r||0},j.attr(D)}roundedRect(e){return this.symbol(“roundedRect”).attr(e)}setSize(e,x,b){this.width=e,this.height=x,this.boxWrapper.animate({width:e,height:x},{step:function(){this.attr({viewBox:”0 0 “+this.attr(“width”)+” “+this.attr(“height”)})},duration:tg(b,!0)?void 0:0}),this.alignElements()}g(e){let x=this.createElement(“g”);return e?x.attr({class:”highcharts-“+e}):x}image(e,x,b,E,L,O){let D={preserveAspectRatio:”none”};td(x)&&(D.x=x),td(b)&&(D.y=b),td(E)&&(D.width=E),td(L)&&(D.height=L);let j=this.createElement(“image”).attr(D),R=function(x){j.attr({href:e}),O.call(j,x)};if(O){j.attr({href:”data:image/gif;base64,R0lGODlhAQABAAAAACH5BAEKAAEALAAAAAABAAEAAAICTAEAOw==”});let x=new tt.Image;te(x,”load”,R),x.src=e,x.complete&&R({})}else j.attr({href:e});return j}symbol(e,x,b,E,L,O){let D,j,R,z,F=this,H=/^url\((.*?)\)$/,Y=H.test(e),q=!Y&&(this.symbols[e]?e:”circle”),K=q&&this.symbols[q];if(K)”number”==typeof x&&(j=K.call(this.symbols,x||0,b||0,E||0,L||0,O)),D=this.path(j),F.styledMode||D.attr(“fill”,”none”),tl(D,{symbolName:q||void 0,x:x,y:b,width:E,height:L}),O&&tl(D,O);else if(Y){R=e.match(H)[1];let E=D=this.image(R);E.imgwidth=tg(O&&O.width,J[R]&&J[R].width),E.imgheight=tg(O&&O.height,J[R]&&J[R].height),z=e=>e.attr({width:e.width,height:e.height}),[“width”,”height”].forEach(e=>{E[`${e}Setter`]=function(e,x){this[x]=e;let{alignByTranslate:b,element:E,width:L,height:D,imgwidth:j,imgheight:R}=this,z=”width”===x?j:R,F=1;O&&”within”===O.backgroundSize&&L&&D&&j&&R?(F=Math.min(L/j,D/R),ti(E,{width:Math.round(j*F),height:Math.round(R*F)})):E&&z&&E.setAttribute(x,z),!b&&j&&R&&this.translate(((L||0)-j*F)/2,((D||0)-R*F)/2)}}),tn(x)&&E.attr({x:x,y:b}),E.isImg=!0,tn(E.imgwidth)&&tn(E.imgheight)?z(E):(E.attr({width:0,height:0}),ts(“img”,{onload:function(){let e=U[F.chartIndex];0===this.width&&(tr(this,{position:”absolute”,top:”-999em”}),V.body.appendChild(this)),J[R]={width:this.width,height:this.height},E.imgwidth=this.width,E.imgheight=this.height,E.element&&z(E),this.parentNode&&this.parentNode.removeChild(this),F.imgCount–,F.imgCount||!e||e.hasLoaded||e.onload()},src:R}),this.imgCount++)}return D}clipRect(e,x,b,E){return this.rect(e,x,b,E,0)}text(e,x,b,E){let L={};if(E&&(this.allowHTML||!this.forExport))return this.html(e,x,b);L.x=Math.round(x||0),b&&(L.y=Math.round(b)),tn(e)&&(L.text=e);let O=this.createElement(“text”).attr(L);return E&&(!this.forExport||this.allowHTML)||(O.xSetter=function(e,x,b){let E=b.getElementsByTagName(“tspan”),L=b.getAttribute(x);for(let b=0,O;be.align())}};return tl(W.prototype,{Element:O,SVG_NS:Z,escapes:{“&”:”&”,”<":"<",">“:”>”,”‘”:”'”,'”‘:”"”},symbols:j,draw:_}),L.registerRendererType(“svg”,W,!0),W}),b(x,”Core/Renderer/HTML/HTMLElement.js”,[x[“Core/Renderer/HTML/AST.js”],x[“Core/Globals.js”],x[“Core/Renderer/SVG/SVGElement.js”],x[“Core/Utilities.js”]],function(e,x,b,E){let{composed:L}=x,{attr:O,css:D,createElement:j,defined:R,extend:z,pInt:F,pushUnique:H}=E;function U(e,x,E){let L=this.div?.style||E.style;b.prototype[`${x}Setter`].call(this,e,x,E),L&&(L[x]=e)}let Y=(e,x)=>{if(!e.div){let E=O(e.element,”class”),L=e.css,D=j(“div”,E?{className:E}:void 0,{position:”absolute”,left:`${e.translateX||0}px`,top:`${e.translateY||0}px`,…e.styles,display:e.display,opacity:e.opacity,visibility:e.visibility},e.parentGroup?.div||x);e.classSetter=(e,x,b)=>{b.setAttribute(“class”,e),D.className=e},e.translateXSetter=e.translateYSetter=(x,b)=>{e[b]=x,D.style[“translateX”===b?”left”:”top”]=`${x}px`,e.doTransform=!0},e.opacitySetter=e.visibilitySetter=U,e.css=x=>(L.call(e,x),x.cursor&&(D.style.cursor=x.cursor),x.pointerEvents&&(D.style.pointerEvents=x.pointerEvents),e),e.on=function(){return b.prototype.on.apply({element:D,onEvents:e.onEvents},arguments),e},e.div=D}return e.div};let g=class g extends b{static compose(e){H(L,this.compose)&&(e.prototype.html=function(e,x,b){return new g(this,”span”).attr({text:e,x:Math.round(x),y:Math.round(b)})})}constructor(e,x){super(e,x),this.css({position:”absolute”,…e.styledMode?{}:{fontFamily:e.style.fontFamily,fontSize:e.style.fontSize}}),this.element.style.whiteSpace=”nowrap”}getSpanCorrection(e,x,b){this.xCorr=-e*b,this.yCorr=-x}css(e){let x,{element:b}=this,E=”SPAN”===b.tagName&&e&&”width”in e,L=E&&e.width;return E&&(delete e.width,this.textWidth=F(L)||void 0,x=!0),e?.textOverflow===”ellipsis”&&(e.whiteSpace=”nowrap”,e.overflow=”hidden”),z(this.styles,e),D(b,e),x&&this.updateTransform(),this}htmlGetBBox(){let{element:e}=this;return{x:e.offsetLeft,y:e.offsetTop,width:e.offsetWidth,height:e.offsetHeight}}updateTransform(){if(!this.added){this.alignOnAdd=!0;return}let{element:e,renderer:x,rotation:b,rotationOriginX:E,rotationOriginY:L,styles:O,textAlign:j=”left”,textWidth:z,translateX:F=0,translateY:H=0,x:U=0,y:Y=0}=this,V=O.whiteSpace;if(D(e,{marginLeft:`${F}px`,marginTop:`${H}px`}),”SPAN”===e.tagName){let O=[b,j,e.innerHTML,z,this.textAlign].join(“,”),F=-(this.parentGroup?.padding*1)||0,H,q=!1;if(z!==this.oldTextWidth){let x=this.textPxLength?this.textPxLength:(D(e,{width:””,whiteSpace:V||”nowrap”}),e.offsetWidth),E=z||0;(E>this.oldTextWidth||x>E)&&(/[ \-]/.test(e.textContent||e.innerText)||”ellipsis”===e.style.textOverflow)&&(D(e,{width:x>E||b?z+”px”:”auto”,display:”block”,whiteSpace:V||”normal”}),this.oldTextWidth=z,q=!0)}this.hasBoxWidthChanged=q,O!==this.cTT&&(H=x.fontMetrics(e).b,R(b)&&(b!==(this.oldRotation||0)||j!==this.oldAlign)&&this.setSpanRotation(b,F,F),this.getSpanCorrection(!R(b)&&this.textPxLength||e.offsetWidth,H,{left:0,center:.5,right:1}[j]));let{xCorr:K=0,yCorr:$=0}=this,_=(E??U)-K-U-F,Z=(L??Y)-$-Y-F;D(e,{left:`${U+K}px`,top:`${Y+$}px`,transformOrigin:`${_}px ${Z}px`}),this.cTT=O,this.oldRotation=b,this.oldAlign=j}}setSpanRotation(e,x,b){D(this.element,{transform:`rotate(${e}deg)`,transformOrigin:`${x}% ${b}px`})}add(e){let x,b=this.renderer.box.parentNode,E=[];if(this.parentGroup=e,e&&!(x=e.div)){let L=e;for(;L;)E.push(L),L=L.parentGroup;for(let e of E.reverse())x=Y(e,b)}return(x||b).appendChild(this.element),this.added=!0,this.alignOnAdd&&this.updateTransform(),this}textSetter(x){x!==this.textStr&&(delete this.bBox,delete this.oldTextWidth,e.setElementHTML(this.element,x??””),this.textStr=x,this.doTransform=!0)}alignSetter(e){this.alignValue=this.textAlign=e,this.doTransform=!0}xSetter(e,x){this[x]=e,this.doTransform=!0}};let V=g.prototype;return V.visibilitySetter=V.opacitySetter=U,V.ySetter=V.rotationSetter=V.rotationOriginXSetter=V.rotationOriginYSetter=V.xSetter,g}),b(x,”Core/Axis/AxisDefaults.js”,[],function(){var e,x;return(x=e||(e={})).xAxis={alignTicks:!0,allowDecimals:void 0,panningEnabled:!0,zIndex:2,zoomEnabled:!0,dateTimeLabelFormats:{millisecond:{main:”%H:%M:%S.%L”,range:!1},second:{main:”%H:%M:%S”,range:!1},minute:{main:”%H:%M”,range:!1},hour:{main:”%H:%M”,range:!1},day:{main:”%e %b”},week:{main:”%e %b”},month:{main:”%b ‘%y”},year:{main:”%Y”}},endOnTick:!1,gridLineDashStyle:”Solid”,gridZIndex:1,labels:{autoRotationLimit:80,distance:15,enabled:!0,indentation:10,overflow:”justify”,reserveSpace:void 0,rotation:void 0,staggerLines:0,step:0,useHTML:!1,zIndex:7,style:{color:”#333333″,cursor:”default”,fontSize:”0.8em”}},maxPadding:.01,minorGridLineDashStyle:”Solid”,minorTickLength:2,minorTickPosition:”outside”,minorTicksPerMajor:5,minPadding:.01,offset:void 0,reversed:void 0,reversedStacks:!1,showEmpty:!0,showFirstLabel:!0,showLastLabel:!0,startOfWeek:1,startOnTick:!1,tickLength:10,tickPixelInterval:100,tickmarkPlacement:”between”,tickPosition:”outside”,title:{align:”middle”,useHTML:!1,x:0,y:0,style:{color:”#666666″,fontSize:”0.8em”}},type:”linear”,uniqueNames:!0,visible:!0,minorGridLineColor:”#f2f2f2″,minorGridLineWidth:1,minorTickColor:”#999999″,lineColor:”#333333″,lineWidth:1,gridLineColor:”#e6e6e6″,gridLineWidth:void 0,tickColor:”#333333″},x.yAxis={reversedStacks:!0,endOnTick:!0,maxPadding:.05,minPadding:.05,tickPixelInterval:72,showLastLabel:!0,labels:{x:void 0},startOnTick:!0,title:{text:”Values”},stackLabels:{animation:{},allowOverlap:!1,enabled:!1,crop:!0,overflow:”justify”,formatter:function(){let{numberFormatter:e}=this.axis.chart;return e(this.total||0,-1)},style:{color:”#000000″,fontSize:”0.7em”,fontWeight:”bold”,textOutline:”1px contrast”}},gridLineWidth:1,lineWidth:0},e}),b(x,”Core/Foundation.js”,[x[“Core/Utilities.js”]],function(e){var x;let{addEvent:b,isFunction:E,objectEach:L,removeEvent:O}=e;return(x||(x={})).registerEventOptions=function(e,x){e.eventOptions=e.eventOptions||{},L(x.events,function(x,L){e.eventOptions[L]!==x&&(e.eventOptions[L]&&(O(e,L,e.eventOptions[L]),delete e.eventOptions[L]),E(x)&&(e.eventOptions[L]=x,b(e,L,x,{order:0})))})},x}),b(x,”Core/Axis/Tick.js”,[x[“Core/Templating.js”],x[“Core/Globals.js”],x[“Core/Utilities.js”]],function(e,x,b){let{deg2rad:E}=x,{clamp:L,correctFloat:O,defined:D,destroyObjectProperties:j,extend:R,fireEvent:z,isNumber:F,merge:H,objectEach:U,pick:Y}=b;return class{constructor(e,x,b,E,L){this.isNew=!0,this.isNewLabel=!0,this.axis=e,this.pos=x,this.type=b||””,this.parameters=L||{},this.tickmarkOffset=this.parameters.tickmarkOffset,this.options=this.parameters.options,z(this,”init”),b||E||this.addLabel()}addLabel(){let x=this,b=x.axis,E=b.options,L=b.chart,j=b.categories,H=b.logarithmic,U=b.names,V=x.pos,q=Y(x.options&&x.options.labels,E.labels),K=b.tickPositions,$=V===K[0],_=V===K[K.length-1],Z=(!q.step||1===q.step)&&1===b.tickInterval,J=K.info,tt=x.label,te,ti,ts,to=this.parameters.category||(j?Y(j[V],U[V],V):V);H&&F(to)&&(to=O(H.lin2log(to))),b.dateTime&&(J?te=(ti=L.time.resolveDTLFormat(E.dateTimeLabelFormats[!E.grid&&J.higherRanks[V]||J.unitName])).main:F(to)&&(te=b.dateTime.getXDateFormat(to,E.dateTimeLabelFormats||{}))),x.isFirst=$,x.isLast=_;let tr={axis:b,chart:L,dateTimeLabelFormat:te,isFirst:$,isLast:_,pos:V,tick:x,tickPositionInfo:J,value:to};z(this,”labelFormat”,tr);let tn=x=>q.formatter?q.formatter.call(x,x):q.format?(x.text=b.defaultLabelFormatter.call(x),e.format(q.format,x,L)):b.defaultLabelFormatter.call(x),ta=tn.call(tr,tr),tl=ti&&ti.list;tl?x.shortenLabel=function(){for(ts=0;ts0&&L+H*U>R&&(_=Math.round((O-L)/Math.cos(F*E))):(L-H*UR&&(K=R-e.x+K*H,$=-1),(K=Math.min(V,K))K||x.autoRotation&&(z.styles||{}).width)&&(_=K)),_&&(this.shortenLabel?this.shortenLabel():(q.width=Math.floor(_)+”px”,(b.style||{}).textOverflow||(q.textOverflow=”ellipsis”),z.css(q)))}moveLabel(e,x){let b=this,E=b.label,L=b.axis,O=!1,D;E&&E.textStr===e?(b.movedLabel=E,O=!0,delete b.label):U(L.ticks,function(x){O||x.isNew||x===b||!x.label||x.label.textStr!==e||(b.movedLabel=x.label,O=!0,x.labelPos=b.movedLabel.xy,delete x.label)}),!O&&(b.labelPos||E)&&(D=b.labelPos||E.xy,b.movedLabel=b.createLabel(e,x,D),b.movedLabel&&b.movedLabel.attr({opacity:0}))}render(e,x,b){let E=this.axis,L=E.horiz,D=this.pos,j=Y(this.tickmarkOffset,E.tickmarkOffset),R=this.getPosition(L,D,j,x),F=R.x,H=R.y,U=E.pos,V=U+E.len,q=L?F:H;!E.chart.polar&&this.isNew&&(O(q)V)&&(b=0);let K=Y(b,this.label&&this.label.newOpacity,1);b=Y(b,1),this.isActive=!0,this.renderGridLine(x,b),this.renderMark(R,b),this.renderLabel(R,x,K,e),this.isNew=!1,z(this,”afterRender”)}renderGridLine(e,x){let b=this.axis,E=b.options,L={},O=this.pos,D=this.type,j=Y(this.tickmarkOffset,b.tickmarkOffset),R=b.chart.renderer,z=this.gridLine,F,H=E.gridLineWidth,U=E.gridLineColor,V=E.gridLineDashStyle;”minor”===this.type&&(H=E.minorGridLineWidth,U=E.minorGridLineColor,V=E.minorGridLineDashStyle),z||(b.chart.styledMode||(L.stroke=U,L[“stroke-width”]=H||0,L.dashstyle=V),D||(L.zIndex=1),e&&(x=0),this.gridLine=z=R.path().attr(L).addClass(“highcharts-“+(D?D+”-“:””)+”grid-line”).add(b.gridGroup)),z&&(F=b.getPlotLinePath({value:O+j,lineWidth:z.strokeWidth(),force:”pass”,old:e,acrossPanes:!1}))&&z[e||this.isNew?”attr”:”animate”]({d:F,opacity:x})}renderMark(e,x){let b=this.axis,E=b.options,L=b.chart.renderer,O=this.type,D=b.tickSize(O?O+”Tick”:”tick”),j=e.x,R=e.y,z=Y(E[“minor”!==O?”tickWidth”:”minorTickWidth”],!O&&b.isXAxis?1:0),F=E[“minor”!==O?”tickColor”:”minorTickColor”],H=this.mark,U=!H;D&&(b.opposite&&(D[0]=-D[0]),H||(this.mark=H=L.path().addClass(“highcharts-“+(O?O+”-“:””)+”tick”).add(b.axisGroup),b.chart.styledMode||H.attr({stroke:F,”stroke-width”:z})),H[U?”attr”:”animate”]({d:this.getMarkPath(j,R,D[0],H.strokeWidth(),b.horiz,L),opacity:x}))}renderLabel(e,x,b,E){let L=this.axis,O=L.horiz,D=L.options,j=this.label,R=D.labels,z=R.step,H=Y(this.tickmarkOffset,L.tickmarkOffset),U=e.x,V=e.y,q=!0;j&&F(U)&&(j.xy=e=this.getLabelPosition(U,V,j,O,R,H,E,z),(!this.isFirst||this.isLast||D.showFirstLabel)&&(!this.isLast||this.isFirst||D.showLastLabel)?!O||R.step||R.rotation||x||0===b||this.handleOverflow(e):q=!1,z&&E%z&&(q=!1),q&&F(e.y)?(e.opacity=b,j[this.isNewLabel?”attr”:”animate”](e).show(!0),this.isNewLabel=!1):(j.hide(),this.isNewLabel=!0))}replaceMovedLabel(){let e=this.label,x=this.axis;e&&!this.isNew&&(e.animate({opacity:0},void 0,e.destroy),delete this.label),x.isDirty=!0,this.label=this.movedLabel,delete this.movedLabel}}}),b(x,”Core/Axis/Axis.js”,[x[“Core/Animation/AnimationUtilities.js”],x[“Core/Axis/AxisDefaults.js”],x[“Core/Color/Color.js”],x[“Core/Defaults.js”],x[“Core/Foundation.js”],x[“Core/Globals.js”],x[“Core/Axis/Tick.js”],x[“Core/Utilities.js”]],function(e,x,b,E,L,O,D,j){let{animObject:R}=e,{xAxis:z,yAxis:F}=x,{defaultOptions:H}=E,{registerEventOptions:U}=L,{deg2rad:Y}=O,{arrayMax:V,arrayMin:q,clamp:K,correctFloat:$,defined:_,destroyObjectProperties:Z,erase:J,error:tt,extend:te,fireEvent:ti,getClosestDistance:ts,insertItem:to,isArray:tr,isNumber:tn,isString:ta,merge:tl,normalizeTickInterval:th,objectEach:td,pick:tc,relativeLength:tp,removeEvent:tu,splat:tg,syncTimeout:tm}=j,tf=(e,x)=>th(x,void 0,void 0,tc(e.options.allowDecimals,x<.5||void 0!==e.tickAmount),!!e.tickAmount);te(H,{xAxis:z,yAxis:tl(z,F)});let N=class N{constructor(e,x,b){this.init(e,x,b)}init(e,x,b=this.coll){let E="xAxis"===b,L=this.isZAxis||(e.inverted?!E:E);this.chart=e,this.horiz=L,this.isXAxis=E,this.coll=b,ti(this,"init",{userOptions:x}),this.opposite=tc(x.opposite,this.opposite),this.side=tc(x.side,this.side,L?2*!this.opposite:this.opposite?1:3),this.setOptions(x);let O=this.options,D=O.labels,j=O.type;this.userOptions=x,this.minPixelPadding=0,this.reversed=tc(O.reversed,this.reversed),this.visible=O.visible,this.zoomEnabled=O.zoomEnabled,this.hasNames="category"===j||!0===O.categories,this.categories=tr(O.categories)&&O.categories||(this.hasNames?[]:void 0),this.names||(this.names=[],this.names.keys={}),this.plotLinesAndBandsGroups={},this.positiveValuesOnly=!!this.logarithmic,this.isLinked=_(O.linkedTo),this.ticks={},this.labelEdge=[],this.minorTicks={},this.plotLinesAndBands=[],this.alternateBands={},this.len??(this.len=0),this.minRange=this.userMinRange=O.minRange||O.maxZoom,this.range=O.range,this.offset=O.offset||0,this.max=void 0,this.min=void 0;let R=tc(O.crosshair,tg(e.options.tooltip.crosshairs)[+!E]);this.crosshair=!0===R?{}:R,-1===e.axes.indexOf(this)&&(E?e.axes.splice(e.xAxis.length,0,this):e.axes.push(this),to(this,e[this.coll])),e.orderItems(this.coll),this.series=this.series||[],e.inverted&&!this.isZAxis&&E&&!_(this.reversed)&&(this.reversed=!0),this.labelRotation=tn(D.rotation)?D.rotation:void 0,U(this,O),ti(this,"afterInit")}setOptions(e){let x=this.horiz?{labels:{autoRotation:[-45],padding:4},margin:15}:{labels:{padding:1},title:{rotation:90*this.side}};this.options=tl(x,H[this.coll],e),ti(this,"afterSetOptions",{userOptions:e})}defaultLabelFormatter(){let e=this.axis,{numberFormatter:x}=this.chart,b=tn(this.value)?this.value:NaN,E=e.chart.time,L=e.categories,O=this.dateTimeLabelFormat,D=H.lang,j=D.numericSymbols,R=D.numericSymbolMagnitude||1e3,z=e.logarithmic?Math.abs(b):e.tickInterval,F=j&&j.length,U,Y;if(L)Y=`${this.value}`;else if(O)Y=E.dateFormat(O,b);else if(F&&j&&z>=1e3)for(;F–&&void 0===Y;)z>=(U=Math.pow(R,F+1))&&10*b%U==0&&null!==j[F]&&0!==b&&(Y=x(b/U,-1)+j[F]);return void 0===Y&&(Y=Math.abs(b)>=1e4?x(b,-1):x(b,-1,void 0,””)),Y}getSeriesExtremes(){let e,x=this;ti(this,”getSeriesExtremes”,null,function(){x.hasVisibleSeries=!1,x.dataMin=x.dataMax=x.threshold=void 0,x.softThreshold=!x.isXAxis,x.series.forEach(b=>{if(b.reserveSpace()){let E=b.options,L,O=E.threshold,D,j;if(x.hasVisibleSeries=!0,x.positiveValuesOnly&&0>=(O||0)&&(O=void 0),x.isXAxis)(L=b.xData)&&L.length&&(L=x.logarithmic?L.filter(e=>e>0):L,D=(e=b.getXExtremes(L)).min,j=e.max,tn(D)||D instanceof Date||(L=L.filter(tn),D=(e=b.getXExtremes(L)).min,j=e.max),L.length&&(x.dataMin=Math.min(tc(x.dataMin,D),D),x.dataMax=Math.max(tc(x.dataMax,j),j)));else{let e=b.applyExtremes();tn(e.dataMin)&&(D=e.dataMin,x.dataMin=Math.min(tc(x.dataMin,D),D)),tn(e.dataMax)&&(j=e.dataMax,x.dataMax=Math.max(tc(x.dataMax,j),j)),_(O)&&(x.threshold=O),(!E.softThreshold||x.positiveValuesOnly)&&(x.softThreshold=!1)}}})}),ti(this,”afterGetSeriesExtremes”)}translate(e,x,b,E,L,O){let D=this.linkedParent||this,j=E&&D.old?D.old.min:D.min;if(!tn(j))return NaN;let R=D.minPixelPadding,z=(D.isOrdinal||D.brokenAxis?.hasBreaks||D.logarithmic&&L)&&D.lin2val,F=1,H=0,U=E&&D.old?D.old.transA:D.transA,Y=0;return U||(U=D.transA),b&&(F*=-1,H=D.len),D.reversed&&(F*=-1,H-=F*(D.sector||D.len)),x?(Y=(e=e*F+H-R)/U+j,z&&(Y=D.lin2val(Y))):(z&&(e=D.val2lin(e)),Y=F*(e-j)*U+H+F*R+(tn(O)?U*O:0),D.isRadial||(Y=$(Y))),Y}toPixels(e,x){return this.translate(e,!1,!this.horiz,void 0,!0)+(x?0:this.pos)}toValue(e,x){return this.translate(e-(x?0:this.pos),!0,!this.horiz,void 0,!0)}getPlotLinePath(e){let x=this,b=x.chart,E=x.left,L=x.top,O=e.old,D=e.value,j=e.lineWidth,R=O&&b.oldChartHeight||b.chartHeight,z=O&&b.oldChartWidth||b.chartWidth,F=x.transB,H=e.translatedValue,U=e.force,Y,V,q,$,_;function Z(e,x,b){return”pass”!==U&&(eb)&&(U?e=K(e,x,b):_=!0),e}let J={value:D,lineWidth:j,old:O,force:U,acrossPanes:e.acrossPanes,translatedValue:H};return ti(this,”getPlotLinePath”,J,function(e){Y=q=(H=K(H=tc(H,x.translate(D,void 0,void 0,O)),-1e5,1e5))+F,V=$=R-H-F,tn(H)?x.horiz?(V=L,$=R-x.bottom+(b.scrollablePixelsY||0),Y=q=Z(Y,E,E+x.width)):(Y=E,q=z-x.right+(b.scrollablePixelsX||0),V=$=Z(V,L,L+x.height)):(_=!0,U=!1),e.path=_&&!U?void 0:b.renderer.crispLine([[“M”,Y,V],[“L”,q,$]],j||1)}),J.path}getLinearTickPositions(e,x,b){let E,L,O,D=$(Math.floor(x/e)*e),j=$(Math.ceil(b/e)*e),R=[];if($(D+e)===D&&(O=20),this.single)return[x];for(E=D;E<=j&&(R.push(E),(E=$(E+e,O))!==L);)L=E;return R}getMinorTickInterval(){let{minorTicks:e,minorTickInterval:x}=this.options;return!0===e?tc(x,"auto"):!1!==e?x:void 0}getMinorTickPositions(){let e=this.options,x=this.tickPositions,b=this.minorTickInterval,E=this.pointRangePadding||0,L=(this.min||0)-E,O=(this.max||0)+E,D=O-L,j=[],R;if(D&&D/b(e.xIncrement?e.xData?.slice(0,2):e.xData)||[]))||0),this.dataMax-this.dataMin)),tn(b)&&tn(E)&&tn(L)&&b-E=L,O=(L-b+E)/2,j=[E-O,tc(e.min,E-O)],D&&(j[2]=x?x.log2lin(this.dataMin):this.dataMin),R=[(E=V(j))+L,tc(e.max,E+L)],D&&(R[2]=x?x.log2lin(this.dataMax):this.dataMax),(b=q(R))-Ee-x),e=ts([b]))}return e&&x?Math.min(e,x):e||x}nameToX(e){let x=tr(this.options.categories),b=x?this.categories:this.names,E=e.options.x,L;return e.series.requireSorting=!1,_(E)||(E=this.options.uniqueNames&&b?x?b.indexOf(e.name):tc(b.keys[e.name],-1):e.series.autoIncrement()),-1===E?!x&&b&&(L=b.length):L=E,void 0!==L?(this.names[L]=e.name,this.names.keys[e.name]=L):e.x&&(L=e.x),L}updateNames(){let e=this,x=this.names;x.length>0&&(Object.keys(x.keys).forEach(function(e){delete x.keys[e]}),x.length=0,this.minRange=this.userMinRange,(this.series||[]).forEach(x=>{x.xIncrement=null,(!x.points||x.isDirtyData)&&(e.max=Math.max(e.max,x.xData.length-1),x.processData(),x.generatePoints()),x.data.forEach(function(b,E){let L;b?.options&&void 0!==b.name&&void 0!==(L=e.nameToX(b))&&L!==b.x&&(b.x=L,x.xData[E]=L)})}))}setAxisTranslation(){let e=this,x=e.max-e.min,b=e.linkedParent,E=!!e.categories,L=e.isXAxis,O=e.axisPointRange||0,D,j=0,R=0,z,F=e.transA;(L||E||O)&&(D=e.getClosest(),b?(j=b.minPointOffset,R=b.pointRangePadding):e.series.forEach(function(x){let b=E?1:L?tc(x.options.pointRange,D,0):e.axisPointRange||0,z=x.options.pointPlacement;if(O=Math.max(O,b),!e.single||E){let e=x.is(“xrange”)?!L:L;j=Math.max(j,e&&ta(z)?0:b/2),R=Math.max(R,e&&”on”===z?0:b)}}),z=e.ordinal&&e.ordinal.slope&&D?e.ordinal.slope/D:1,e.minPointOffset=j*=z,e.pointRangePadding=R*=z,e.pointRange=Math.min(O,e.single&&E?1:x),L&&D&&(e.closestPointRange=D)),e.translationSlope=e.transA=F=e.staticScale||e.len/(x+R||1),e.transB=e.horiz?e.left:e.bottom,e.minPixelPadding=F*j,ti(this,”afterSetAxisTranslation”)}minFromRange(){let{max:e,min:x}=this;return tn(e)&&tn(x)&&e-x||void 0}setTickInterval(e){let{categories:x,chart:b,dataMax:E,dataMin:L,dateTime:O,isXAxis:D,logarithmic:j,options:R,softThreshold:z}=this,F=tn(this.threshold)?this.threshold:void 0,H=this.minRange||0,{ceiling:U,floor:Y,linkedTo:V,softMax:q,softMin:K}=R,Z=tn(V)&&b[this.coll]?.[V],J=R.tickPixelInterval,te=R.maxPadding,ts=R.minPadding,to=0,tr,ta=tn(R.tickInterval)&&R.tickInterval>=0?R.tickInterval:void 0,tl,th,td,tp;if(O||x||Z||this.getTickAmount(),td=tc(this.userMin,R.min),tp=tc(this.userMax,R.max),Z?(this.linkedParent=Z,tr=Z.getExtremes(),this.min=tc(tr.min,tr.dataMin),this.max=tc(tr.max,tr.dataMax),R.type!==Z.options.type&&tt(11,!0,b)):(z&&_(F)&&tn(E)&&tn(L)&&(L>=F?(tl=F,ts=0):E<=F&&(th=F,te=0)),this.min=tc(td,tl,L),this.max=tc(tp,th,E)),tn(this.max)&&tn(this.min)&&(j&&(this.positiveValuesOnly&&!e&&0>=Math.min(this.min,tc(L,this.min))&&tt(10,!0,b),this.min=$(j.log2lin(this.min),16),this.max=$(j.log2lin(this.max),16)),this.range&&tn(L)&&(this.userMin=this.min=td=Math.max(L,this.minFromRange()||0),this.userMax=tp=this.max,this.range=void 0)),ti(this,”foundExtremes”),this.adjustForMinRange(),tn(this.min)&&tn(this.max)){if(!tn(this.userMin)&&tn(K)&&Kthis.max&&(this.max=tp=q),x||this.axisPointRange||this.stacking?.usePercentage||Z||!(to=this.max-this.min)||(!_(td)&&ts&&(this.min-=to*ts),_(tp)||!te||(this.max+=to*te)),!tn(this.userMin)&&tn(Y)&&(this.min=Math.max(this.min,Y)),!tn(this.userMax)&&tn(U)&&(this.max=Math.min(this.max,U)),z&&tn(L)&&tn(E)){let e=F||0;!_(td)&&this.min=e?this.min=R.minRange?Math.min(e,this.max-H):e:!_(tp)&&this.max>e&&E<=e&&(this.max=R.minRange?Math.max(e,this.min+H):e)}!b.polar&&this.min>this.max&&(_(R.min)?this.max=this.min:_(R.max)&&(this.min=this.max)),to=this.max-this.min}if(this.min!==this.max&&tn(this.min)&&tn(this.max)?Z&&!ta&&J===Z.options.tickPixelInterval?this.tickInterval=ta=Z.tickInterval:this.tickInterval=tc(ta,this.tickAmount?to/Math.max(this.tickAmount-1,1):void 0,x?1:to*J/Math.max(this.len,J)):this.tickInterval=1,D&&!e){let e=this.min!==this.old?.min||this.max!==this.old?.max;this.series.forEach(function(x){x.forceCrop=x.forceCropping?.(),x.processData(e)}),ti(this,”postProcessData”,{hasExtremesChanged:e})}this.setAxisTranslation(),ti(this,”initialAxisTranslation”),this.pointRange&&!ta&&(this.tickInterval=Math.max(this.pointRange,this.tickInterval));let tu=tc(R.minTickInterval,O&&!this.series.some(e=>e.noSharedTooltip)?this.closestPointRange:0);!ta&&this.tickIntervalMath.max(2*this.len,200))j=[this.min,this.max],tt(19,!1,this.chart);else if(this.dateTime)j=this.getTimeTicks(this.dateTime.normalizeTimeTickInterval(this.tickInterval,e.units),this.min,this.max,e.startOfWeek,this.ordinal?.positions,this.closestPointRange,!0);else if(this.logarithmic)j=this.logarithmic.getLogTickPositions(this.tickInterval,this.min,this.max);else{let e=this.tickInterval,x=e;for(;x<=2*e;)if(j=this.getLinearTickPositions(this.tickInterval,this.min,this.max),this.tickAmount&&j.length>this.tickAmount)this.tickInterval=tf(this,x*=1.1);else break}j.length>this.len&&(j=[j[0],j[j.length-1]])[0]===j[1]&&(j.length=1),b&&(this.tickPositions=j,(R=b.apply(this,[this.min,this.max]))&&(j=R))}this.tickPositions=j,this.paddedTicks=j.slice(0),this.trimTicks(j,O,D),!this.isLinked&&tn(this.min)&&tn(this.max)&&(this.single&&j.length<2&&!this.categories&&!this.series.some(e=>e.is(“heatmap”)&&”between”===e.options.pointPlacement)&&(this.min-=.5,this.max+=.5),x||R||this.adjustTickAmount()),ti(this,”afterSetTickPositions”)}trimTicks(e,x,b){let E=e[0],L=e[e.length-1],O=!this.isOrdinal&&this.minPointOffset||0;if(ti(this,”trimTicks”),!this.isLinked){if(x&&E!==-1/0)this.min=E;else for(;this.min-O>e[0];)e.shift();if(b)this.max=L;else for(;this.max+O{let{horiz:x,options:b}=e;return[x?b.left:b.top,b.width,b.height,b.pane].join(“,”)},O=L(this);b[this.coll].forEach(function(b){let{series:D}=b;D.length&&D.some(e=>e.visible)&&b!==x&&L(b)===O&&(e=!0,E.push(b))})}if(e&&D){E.forEach(e=>{let b=e.getThresholdAlignment(x);tn(b)&&j.push(b)});let e=j.length>1?j.reduce((e,x)=>e+=x,0)/j.length:void 0;E.forEach(x=>{x.thresholdAlignment=e})}return e}getThresholdAlignment(e){if((!tn(this.dataMin)||this!==e&&this.series.some(e=>e.isDirty||e.isDirtyData))&&this.getSeriesExtremes(),tn(this.threshold)){let e=K((this.threshold-(this.dataMin||0))/((this.dataMax||0)-(this.dataMin||0)),0,1);return this.options.reversed&&(e=1-e),e}}getTickAmount(){let e=this.options,x=e.tickPixelInterval,b=e.tickAmount;_(e.tickInterval)||b||!(this.lenO.push($(O[O.length-1]+U)),q=()=>O.unshift($(O[0]-U));if(tn(j)&&(Y=j<.5?Math.ceil(j*(D-1)):Math.floor(j*(D-1)),L.reversed&&(Y=D-1-Y)),e.hasData()&&tn(E)&&tn(b)){let j=()=>{e.transA*=(R-1)/(D-1),e.min=L.startOnTick?O[0]:Math.min(E,O[0]),e.max=L.endOnTick?O[O.length-1]:Math.max(b,O[O.length-1])};if(tn(Y)&&tn(e.threshold)){for(;O[Y]!==z||O.length!==D||O[0]>E||O[O.length-1]e.threshold?q():V();if(U>8*e.tickInterval)break;U*=2}j()}else if(R0&&H{b=b||e.isDirtyData||e.isDirty,E=E||e.xAxis&&e.xAxis.isDirty||!1}),this.setAxisSize();let L=this.len!==(this.old&&this.old.len);L||b||E||this.isLinked||this.forceRedraw||this.userMin!==(this.old&&this.old.userMin)||this.userMax!==(this.old&&this.old.userMax)||this.alignToOthers()?(x&&”yAxis”===e&&x.buildStacks(),this.forceRedraw=!1,this.userMinRange||(this.minRange=void 0),this.getSeriesExtremes(),this.setTickInterval(),x&&”xAxis”===e&&x.buildStacks(),this.isDirty||(this.isDirty=L||this.min!==this.old?.min||this.max!==this.old?.max)):x&&x.cleanStacks(),b&&delete this.allExtremes,ti(this,”afterSetScale”)}setExtremes(e,x,b=!0,E,L){this.series.forEach(e=>{delete e.kdTree}),ti(this,”setExtremes”,L=te(L,{min:e,max:x}),e=>{this.userMin=e.min,this.userMax=e.max,this.eventArgs=e,b&&this.chart.redraw(E)})}setAxisSize(){let e=this.chart,x=this.options,b=x.offsets||[0,0,0,0],E=this.horiz,L=this.width=Math.round(tp(tc(x.width,e.plotWidth-b[3]+b[1]),e.plotWidth)),O=this.height=Math.round(tp(tc(x.height,e.plotHeight-b[0]+b[2]),e.plotHeight)),D=this.top=Math.round(tp(tc(x.top,e.plotTop+b[0]),e.plotHeight,e.plotTop)),j=this.left=Math.round(tp(tc(x.left,e.plotLeft+b[3]),e.plotWidth,e.plotLeft));this.bottom=e.chartHeight-O-D,this.right=e.chartWidth-L-j,this.len=Math.max(E?L:O,0),this.pos=E?j:D}getExtremes(){let e=this.logarithmic;return{min:e?$(e.lin2log(this.min)):this.min,max:e?$(e.lin2log(this.max)):this.max,dataMin:this.dataMin,dataMax:this.dataMax,userMin:this.userMin,userMax:this.userMax}}getThreshold(e){let x=this.logarithmic,b=x?x.lin2log(this.min):this.min,E=x?x.lin2log(this.max):this.max;return null===e||e===-1/0?e=b:e===1/0?e=E:b>e?e=b:E15&&x<165?e.align="right":x>195&&x<345&&(e.align="left")}),b.align}tickSize(e){let x=this.options,b=tc(x["tick"===e?"tickWidth":"minorTickWidth"],"tick"===e&&this.isXAxis&&!this.categories?1:0),E=x["tick"===e?"tickLength":"minorTickLength"],L;b&&E&&("inside"===x[e+"Position"]&&(E=-E),L=[E,b]);let O={tickSize:L};return ti(this,"afterTickSize",O),O.tickSize}labelMetrics(){let e=this.chart.renderer,x=this.ticks,b=x[Object.keys(x)[0]]||{};return this.chart.renderer.fontMetrics(b.label||b.movedLabel||e.box)}unsquish(){let e=this.options.labels,x=e.padding||0,b=this.horiz,E=this.tickInterval,L=this.len/((+!!this.categories+this.max-this.min)/E),O=e.rotation,D=$(.8*this.labelMetrics().h),j=Math.max(this.max-this.min,0),R=function(e){let b=(e+2*x)/(L||1);return(b=b>1?Math.ceil(b):1)*E>j&&e!==1/0&&L!==1/0&&j&&(b=Math.ceil(j/E)),$(b*E)},z=E,F,H=Number.MAX_VALUE,U;if(b){if(!e.staggerLines&&(tn(O)?U=[O]:L=-90&&b<=90)&&(x=(e=R(Math.abs(D/Math.sin(Y*b))))+Math.abs(b/360))V&&(V=x.label.textPxLength)}),this.maxLabelLength=V,this.autoRotation)V>R&&V>F.h?z.rotation=this.labelRotation:this.labelRotation=0;else if(j&&(U=R,!H))for(Y=”clip”,K=b.length;!D&&K–;)(q=E[b[K]].label)&&(“ellipsis”===q.styles.textOverflow?q.css({textOverflow:”clip”}):q.textPxLength>j&&q.css({width:j+”px”}),q.getBBox().height>this.len/b.length-(F.h-F.f)&&(q.specificTextOverflow=”ellipsis”));z.rotation&&(U=V>.5*e.chartHeight?.33*e.chartHeight:V,H||(Y=”ellipsis”)),this.labelAlign=L.align||this.autoLabelAlign(this.labelRotation),this.labelAlign&&(z.align=this.labelAlign),b.forEach(function(e){let x=E[e],b=x&&x.label,L=O.width,D={};b&&(b.attr(z),x.shortenLabel?x.shortenLabel():U&&!L&&”nowrap”!==O.whiteSpace&&(UL.g(x).attr({zIndex:D}).addClass(`highcharts-${b.toLowerCase()}${O} `+(this.isRadial?`highcharts-radial-axis${O} `:””)+(E.className||””)).add(e);this.axisGroup||(this.gridGroup=O(“grid”,”-grid”,E.gridZIndex),this.axisGroup=O(“axis”,””,E.zIndex),this.labelGroup=O(“axis-labels”,”-labels”,E.labels.zIndex))}getOffset(){let e=this,{chart:x,horiz:b,options:E,side:L,ticks:O,tickPositions:D,coll:j}=e,R=x.inverted&&!e.isZAxis?[1,0,3,2][L]:L,z=e.hasData(),F=E.title,H=E.labels,U=tn(E.crossing),Y=x.axisOffset,V=x.clipOffset,q=[-1,1,1,-1][L],K,$=0,Z,J=0,tt=0,te,ts;if(e.showAxis=K=z||E.showEmpty,e.staggerLines=e.horiz&&H.staggerLines||void 0,e.createGroups(),z||e.isLinked?(D.forEach(function(x){e.generateTick(x)}),e.renderUnsquish(),e.reserveSpaceDefault=0===L||2===L||({1:”left”,3:”right”})[L]===e.labelAlign,tc(H.reserveSpace,!U&&null,”center”===e.labelAlign||null,e.reserveSpaceDefault)&&D.forEach(function(e){tt=Math.max(O[e].getLabelSize(),tt)}),e.staggerLines&&(tt*=e.staggerLines),e.labelOffset=tt*(e.opposite?-1:1)):td(O,function(e,x){e.destroy(),delete O[x]}),F?.text&&!1!==F.enabled&&(e.addTitle(K),K&&!U&&!1!==F.reserveSpace&&(e.titleOffset=$=e.axisTitle.getBBox()[b?”height”:”width”],J=_(Z=F.offset)?0:tc(F.margin,b?5:10))),e.renderLine(),e.offset=q*tc(E.offset,Y[L]?Y[L]+(E.margin||0):0),e.tickRotCorr=e.tickRotCorr||{x:0,y:0},ts=0===L?-e.labelMetrics().h:2===L?e.tickRotCorr.y:0,te=Math.abs(tt)+J,tt&&(te-=ts,te+=q*(b?tc(H.y,e.tickRotCorr.y+q*H.distance):tc(H.x,q*H.distance))),e.axisTitleMargin=tc(Z,te),e.getMaxLabelDimensions&&(e.maxLabelDimensions=e.getMaxLabelDimensions(O,D)),”colorAxis”!==j&&V){let x=this.tickSize(“tick”);Y[L]=Math.max(Y[L],(e.axisTitleMargin||0)+$+q*e.offset,te,D&&D.length&&x?x[0]+q*e.offset:0);let b=!e.axisLine||E.offset?0:e.axisLine.strokeWidth()/2;V[R]=Math.max(V[R],b)}ti(this,”afterGetOffset”)}getLinePath(e){let x=this.chart,b=this.opposite,E=this.offset,L=this.horiz,O=this.left+(b?this.width:0)+E,D=x.chartHeight-this.bottom-(b?this.height:0)+E;return b&&(e*=-1),x.renderer.crispLine([[“M”,L?this.left:O,L?D:this.top],[“L”,L?x.chartWidth-this.right:O,L?D:x.chartHeight-this.bottom]],e)}renderLine(){this.axisLine||(this.axisLine=this.chart.renderer.path().addClass(“highcharts-axis-line”).add(this.axisGroup),this.chart.styledMode||this.axisLine.attr({stroke:this.options.lineColor,”stroke-width”:this.options.lineWidth,zIndex:7}))}getTitlePosition(e){let x=this.horiz,b=this.left,E=this.top,L=this.len,O=this.options.title,D=x?b:E,j=this.opposite,R=this.offset,z=O.x,F=O.y,H=this.chart.renderer.fontMetrics(e),U=e?Math.max(e.getBBox(!1,0).height-H.h-1,0):0,Y={low:D+(x?0:L),middle:D+L/2,high:D+(x?L:0)}[O.align],V=(x?E+this.height:b)+(x?1:-1)*(j?-1:1)*(this.axisTitleMargin||0)+[-U,U,H.f,-U][this.side],q={x:x?Y+z:V+(j?this.width:0)+R+z,y:x?V+F-(j?this.height:0)+R:Y+F};return ti(this,”afterGetTitlePosition”,{titlePosition:q}),q}renderMinorTick(e,x){let b=this.minorTicks;b[e]||(b[e]=new D(this,e,”minor”)),x&&b[e].isNew&&b[e].render(null,!0),b[e].render(null,!1,1)}renderTick(e,x,b){let E=this.isLinked,L=this.ticks;(!E||e>=this.min&&e<=this.max||this.grid&&this.grid.isColumn)&&(L[e]||(L[e]=new D(this,e)),b&&L[e].isNew&&L[e].render(x,!0,-1),L[e].render(x))}render(){let e,x,b=this,E=b.chart,L=b.logarithmic,j=E.renderer,z=b.options,F=b.isLinked,H=b.tickPositions,U=b.axisTitle,Y=b.ticks,V=b.minorTicks,q=b.alternateBands,K=z.stackLabels,$=z.alternateGridColor,_=z.crossing,Z=b.tickmarkOffset,J=b.axisLine,tt=b.showAxis,te=R(j.globalAnimation);if(b.labelEdge.length=0,b.overlap=!1,[Y,V,q].forEach(function(e){td(e,function(e){e.isActive=!1})}),tn(_)){let e=this.isXAxis?E.yAxis[0]:E.xAxis[0],x=[1,-1,-1,1][this.side];if(e){let E=e.toPixels(_,!0);b.horiz&&(E=e.len-E),b.offset=x*E}}if(b.hasData()||F){let j=b.chart.hasRendered&&b.old&&tn(b.old.min);b.minorTickInterval&&!b.categories&&b.getMinorTickPositions().forEach(function(e){b.renderMinorTick(e,j)}),H.length&&(H.forEach(function(e,x){b.renderTick(e,x,j)}),Z&&(0===b.min||b.single)&&(Y[-1]||(Y[-1]=new D(b,-1,null,!0)),Y[-1].render(-1))),$&&H.forEach(function(D,j){x=void 0!==H[j+1]?H[j+1]+Z:b.max-Z,j%2==0&&D=.5)e=Math.round(e),z=D.getLinearTickPositions(e,x,b);else if(e>=.08){let E,L,D,j,R,F,H,U=Math.floor(x);for(E=e>.3?[1,2,4]:e>.15?[1,2,4,6,8]:[1,2,3,4,5,6,7,8,9],L=U;Lx&&(!O||F<=b)&&void 0!==F&&z.push(F),F>b&&(H=!0),F=R}else{let F=this.lin2log(x),H=this.lin2log(b),U=O?D.getMinorTickInterval():R.tickInterval,Y=R.tickPixelInterval/(O?5:1),V=O?j/D.tickPositions.length:j;e=E(e=L(“auto”===U?null:U,this.minorAutoInterval,(H-F)*Y/(V||1))),z=D.getLinearTickPositions(e,F,H).map(this.log2lin),O||(this.minorAutoInterval=e/5)}return O||(D.tickInterval=e),z}lin2log(e){return Math.pow(10,e)}log2lin(e){return Math.log(e)/Math.LN10}};e.Additions=a}(x||(x={})),x}),b(x,”Core/Axis/PlotLineOrBand/PlotLineOrBandAxis.js”,[x[“Core/Utilities.js”]],function(e){var x;let{erase:b,extend:E,isNumber:L}=e;return function(e){let x;function O(e){return this.addPlotBandOrLine(e,”plotBands”)}function D(e,b){let E=this.userOptions,L=new x(this,e);if(this.visible&&(L=L.render()),L){if(this._addedPlotLB||(this._addedPlotLB=!0,(E.plotLines||[]).concat(E.plotBands||[]).forEach(e=>{this.addPlotBandOrLine(e)})),b){let x=E[b]||[];x.push(e),E[b]=x}this.plotLinesAndBands.push(L)}return L}function j(e){return this.addPlotBandOrLine(e,”plotLines”)}function R(e,x,b){b=b||this.options;let E=this.getPlotLinePath({value:x,force:!0,acrossPanes:b.acrossPanes}),O=[],D=this.horiz,j=!L(this.min)||!L(this.max)||ethis.max&&x>this.max,R=this.getPlotLinePath({value:e,force:!0,acrossPanes:b.acrossPanes}),z,F=1,H;if(R&&E)for(j&&(H=R.toString()===E.toString(),F=0),z=0;z{J?.on(x,e=>{D[x].apply(this,[e])})}),this.eventsAdded=!0),(to||!J.d)&&tt?.length?J.attr({d:tt}):J&&(tt?(J.show(),J.animate({d:tt})):J.d&&(J.hide(),Z&&(this.label=Z=Z.destroy()))),_&&(L(_.text)||L(_.formatter))&&tt?.length&&e.width>0&&e.height>0&&!tt.isFlat?(_=R({align:b&&ti?”center”:void 0,x:b?!ti&&4:10,verticalAlign:!b&&ti?”middle”:void 0,y:b?ti?16:10:ti?6:-4,rotation:b&&!ti?90:0},_),this.renderLabel(_,tt,ti,H)):Z&&Z.hide(),this}renderLabel(e,x,L,O){let D=this.axis,j=D.chart.renderer,z=this.label;z||(this.label=z=j.text(this.getLabelText(e),0,0,e.useHTML).attr({align:e.textAlign||e.align,rotation:e.rotation,class:”highcharts-plot-“+(L?”band”:”line”)+”-label “+(e.className||””),zIndex:O}),D.chart.styledMode||z.css(R({fontSize:”0.8em”,textOverflow:”ellipsis”},e.style)),z.add());let F=x.xBounds||[x[0][1],x[1][1],L?x[2][1]:x[0][1]],H=x.yBounds||[x[0][2],x[1][2],L?x[2][2]:x[0][2]],U=E(F),Y=E(H);if(z.align(e,!1,{x:U,y:Y,width:b(F)-U,height:b(H)-Y}),!z.alignValue||”left”===z.alignValue){let x=e.clip?D.width:D.chart.chartWidth;z.css({width:(90===z.rotation?D.height-(z.alignAttr.y-D.top):x-(z.alignAttr.x-D.left))+”px”})}z.show(!0)}getLabelText(e){return L(e.formatter)?e.formatter.call(this):e.text}destroy(){D(this.axis.plotLinesAndBands,this),delete this.axis,O(this)}};return c}),b(x,”Core/Tooltip.js”,[x[“Core/Animation/AnimationUtilities.js”],x[“Core/Templating.js”],x[“Core/Globals.js”],x[“Core/Renderer/RendererUtilities.js”],x[“Core/Renderer/RendererRegistry.js”],x[“Core/Utilities.js”]],function(e,x,b,E,L,O){var D;let{animObject:j}=e,{format:R}=x,{composed:z,doc:F,isSafari:H}=b,{distribute:U}=E,{addEvent:Y,clamp:V,css:q,discardElement:K,extend:$,fireEvent:_,isArray:Z,isNumber:J,isString:tt,merge:te,pick:ti,pushUnique:ts,splat:to,syncTimeout:tr}=O;let T=class T{constructor(e,x,b){this.allowShared=!0,this.crosshairs=[],this.distance=0,this.isHidden=!0,this.isSticky=!1,this.options={},this.outside=!1,this.chart=e,this.init(e,x),this.pointer=b}bodyFormatter(e){return e.map(function(e){let x=e.series.tooltipOptions;return(x[(e.point.formatPrefix||”point”)+”Formatter”]||e.point.tooltipFormatter).call(e.point,x[(e.point.formatPrefix||”point”)+”Format”]||””)})}cleanSplit(e){this.chart.series.forEach(function(x){let b=x&&x.tt;b&&(!b.isActive||e?x.tt=b.destroy():b.isActive=!1)})}defaultFormatter(e){let x,b=this.points||to(this);return(x=(x=[e.tooltipFooterHeaderFormatter(b[0])]).concat(e.bodyFormatter(b))).push(e.tooltipFooterHeaderFormatter(b[0],!0)),x}destroy(){this.label&&(this.label=this.label.destroy()),this.split&&(this.cleanSplit(!0),this.tt&&(this.tt=this.tt.destroy())),this.renderer&&(this.renderer=this.renderer.destroy(),K(this.container)),O.clearTimeout(this.hideTimer)}getAnchor(e,x){let b,{chart:E,pointer:L}=this,O=E.inverted,D=E.plotTop,j=E.plotLeft;if((e=to(e))[0].series&&e[0].series.yAxis&&!e[0].series.yAxis.options.reversedStacks&&(e=e.slice().reverse()),this.followPointer&&x)void 0===x.chartX&&(x=L.normalize(x)),b=[x.chartX-j,x.chartY-D];else if(e[0].tooltipPos)b=e[0].tooltipPos;else{let E=0,L=0;e.forEach(function(e){let x=e.pos(!0);x&&(E+=x[0],L+=x[1])}),E/=e.length,L/=e.length,this.shared&&e.length>1&&x&&(O?E=x.chartX:L=x.chartY),b=[E-j,L-D]}return b.map(Math.round)}getClassName(e,x,b){let E=this.options,L=e.series,O=L.options;return[E.className,”highcharts-label”,b&&”highcharts-tooltip-header”,x?”highcharts-tooltip-box”:”highcharts-tooltip”,!b&&”highcharts-color-“+ti(e.colorIndex,L.colorIndex),O&&O.className].filter(tt).join(” “)}getLabel(){let e=this,x=this.chart.styledMode,E=this.options,O=this.split&&this.allowShared,D=this.container,j=this.chart.renderer;if(this.label){let e=!this.label.hasClass(“highcharts-label”);(!O&&e||O&&!e)&&this.destroy()}if(!this.label){if(this.outside){let e=this.chart.options.chart.style,x=L.getRendererType();this.container=D=b.doc.createElement(“div”),D.className=”highcharts-tooltip-container”,q(D,{position:”absolute”,top:”1px”,pointerEvents:”none”,zIndex:Math.max(this.options.style.zIndex||0,(e&&e.zIndex||0)+3)}),this.renderer=j=new x(D,0,0,e,void 0,void 0,j.styledMode)}if(O?this.label=j.g(“tooltip”):(this.label=j.label(“”,0,0,E.shape,void 0,void 0,E.useHTML,void 0,”tooltip”).attr({padding:E.padding,r:E.borderRadius}),x||this.label.attr({fill:E.backgroundColor,”stroke-width”:E.borderWidth||0}).css(E.style).css({pointerEvents:E.style.pointerEvents||(this.shouldStickOnContact()?”auto”:”none”)})),e.outside){let x=this.label;[x.xSetter,x.ySetter].forEach((b,E)=>{x[E?”ySetter”:”xSetter”]=L=>{b.call(x,e.distance),x[E?”y”:”x”]=L,D&&(D.style[E?”top”:”left”]=`${L}px`)}})}this.label.attr({zIndex:8}).shadow(E.shadow).add()}return D&&!D.parentElement&&b.doc.body.appendChild(D),this.label}getPlayingField(){let{body:e,documentElement:x}=F,{chart:b,distance:E,outside:L}=this;return{width:L?Math.max(e.scrollWidth,x.scrollWidth,e.offsetWidth,x.offsetWidth,x.clientWidth)-2*E:b.chartWidth,height:L?Math.max(e.scrollHeight,x.scrollHeight,e.offsetHeight,x.offsetHeight,x.clientHeight):b.chartHeight}}getPosition(e,x,b){let{distance:E,chart:L,outside:O,pointer:D}=this,{inverted:j,plotLeft:R,plotTop:z,polar:F}=L,{plotX:H=0,plotY:U=0}=b,Y={},V=j&&b.h||0,{height:q,width:K}=this.getPlayingField(),$=D.getChartPosition(),_=b=>{let D=”x”===b;return[b,D?K:q,D?e:x].concat(O?[D?e*$.scaleX:x*$.scaleY,D?$.left-E+(H+R)*$.scaleX:$.top-E+(U+z)*$.scaleY,0,D?K:q]:[D?e:x,D?H+R:U+z,D?R:z,D?R+L.plotWidth:z+L.plotHeight])},Z=_(“y”),J=_(“x”),tt,te=!!b.negative;!F&&L.hoverSeries?.yAxis?.reversed&&(te=!te);let ts=!this.followPointer&&ti(b.ttBelow,!F&&!j===te),to=function(e,x,b,L,D,j,R){let z=O?”y”===e?E*$.scaleY:E*$.scaleX:E,F=(b-L)/2,H=Lx?K:K+V)}},tr=function(e,x,b,L,O){if(Ox-E)return!1;Ox-L/2?Y[e]=x-L-2:Y[e]=O-b/2},tn=function(e){[Z,J]=[J,Z],tt=e},ta=()=>{!1!==to.apply(0,Z)?!1!==tr.apply(0,J)||tt||(tn(!0),ta()):tt?Y.x=Y.y=0:(tn(!0),ta())};return(j&&!F||this.len>1)&&tn(),ta(),Y}hide(e){let x=this;O.clearTimeout(this.hideTimer),e=ti(e,this.options.hideDelay),this.isHidden||(this.hideTimer=tr(function(){let b=x.getLabel();x.getLabel().animate({opacity:0},{duration:e?150:e,complete:()=>{b.hide(),x.container&&x.container.remove()}}),x.isHidden=!0},e))}init(e,x){this.chart=e,this.options=x,this.crosshairs=[],this.isHidden=!0,this.split=x.split&&!e.inverted&&!e.polar,this.shared=x.shared||this.split,this.outside=ti(x.outside,!!(e.scrollablePixelsX||e.scrollablePixelsY))}shouldStickOnContact(e){return!!(!this.followPointer&&this.options.stickOnContact&&(!e||this.pointer.inClass(e.target,”highcharts-tooltip”)))}move(e,x,b,E){let L=this,O=j(!L.isHidden&&L.options.animation),D=L.followPointer||(L.len||0)>1,R={x:e,y:x};D||(R.anchorX=b,R.anchorY=E),O.step=()=>L.drawTracker(),L.getLabel().animate(R,O)}refresh(e,x){let{chart:b,options:E,pointer:L,shared:D}=this,j=to(e),z=j[0],F=[],H=E.format,U=E.formatter||this.defaultFormatter,Y=b.styledMode,V={};if(!E.enabled||!z.series)return;O.clearTimeout(this.hideTimer),this.allowShared=!(!Z(e)&&e.series&&e.series.noSharedTooltip),this.followPointer=!this.split&&z.series.tooltipOptions.followPointer;let q=this.getAnchor(e,x),K=q[0],$=q[1];D&&this.allowShared?(L.applyInactiveState(j),j.forEach(function(e){e.setState(“hover”),F.push(e.getLabelConfig())}),(V=z.getLabelConfig()).points=F):V=z.getLabelConfig(),this.len=F.length;let J=tt(H)?R(H,V,b):U.call(V,this),te=z.series;if(this.distance=ti(te.tooltipOptions.distance,16),!1===J)this.hide();else{if(this.split&&this.allowShared)this.renderSplit(J,j);else{let e=K,O=$;if(x&&L.isDirectTouch&&(e=x.chartX-b.plotLeft,O=x.chartY-b.plotTop),!(b.polar||!1===te.options.clip||j.some(x=>L.isDirectTouch||x.series.shouldShowTooltip(e,O))))return void this.hide();{let e=this.getLabel();(!E.style.width||Y)&&e.css({width:(this.outside?this.getPlayingField():b.spacingBox).width+”px”}),e.attr({text:J&&J.join?J.join(“”):J}),e.addClass(this.getClassName(z),!0),Y||e.attr({stroke:E.borderColor||z.color||te.color||”#666666″}),this.updatePosition({plotX:K,plotY:$,negative:z.negative,ttBelow:z.ttBelow,h:q[2]||0})}}this.isHidden&&this.label&&this.label.attr({opacity:1}).show(),this.isHidden=!1}_(this,”refresh”)}renderSplit(e,x){let b=this,{chart:E,chart:{chartWidth:L,chartHeight:O,plotHeight:D,plotLeft:j,plotTop:R,scrollablePixelsY:z=0,scrollablePixelsX:Y,styledMode:q},distance:K,options:_,options:{positioner:Z},pointer:J}=b,{scrollLeft:te=0,scrollTop:ts=0}=E.scrollablePlotArea?.scrollingContainer||{},to=b.outside&&”number”!=typeof Y?F.documentElement.getBoundingClientRect():{left:te,right:te+L,top:ts,bottom:ts+O},tr=b.getLabel(),tn=this.renderer||E.renderer,ta=!!(E.xAxis[0]&&E.xAxis[0].opposite),{left:tl,top:th}=J.getChartPosition(),td=R+ts,tc=0,tp=D-z;function tu(e,x,E,L,O=!0){let D,j;return E?(D=ta?0:tp,j=V(e-L/2,to.left,to.right-L-(b.outside?tl:0))):(D=x-td,j=V(j=O?e-L-K:e+K,O?j:to.left,to.right)),{x:j,y:D}}tt(e)&&(e=[!1,e]);let tg=e.slice(0,x.length+1).reduce(function(e,E,L){if(!1!==E&&””!==E){let O=x[L-1]||{isHeader:!0,plotX:x[0].plotX,plotY:D,series:{}},z=O.isHeader,F=z?b:O.series,H=F.tt=function(e,x,E){let L=e,{isHeader:O,series:D}=x;if(!L){let e={padding:_.padding,r:_.borderRadius};q||(e.fill=_.backgroundColor,e[“stroke-width”]=_.borderWidth??1),L=tn.label(“”,0,0,_[O?”headerShape”:”shape”],void 0,void 0,_.useHTML).addClass(b.getClassName(x,!0,O)).attr(e).add(tr)}return L.isActive=!0,L.attr({text:E}),q||L.css(_.style).attr({stroke:_.borderColor||x.color||D.color||”#333333″}),L}(F.tt,O,E.toString()),U=H.getBBox(),Y=U.width+H.strokeWidth();z&&(tc=U.height,tp+=tc,ta&&(td-=tc));let{anchorX:$,anchorY:J}=function(e){let x,b,{isHeader:E,plotX:L=0,plotY:O=0,series:z}=e;if(E)x=Math.max(j+L,j),b=R+D/2;else{let{xAxis:e,yAxis:E}=z;x=e.pos+V(L,-K,e.len+K),z.shouldShowTooltip(0,E.pos-R+O,{ignoreX:!0})&&(b=E.pos+O)}return{anchorX:x=V(x,to.left-K,to.right+K),anchorY:b}}(O);if(“number”==typeof J){let x=U.height+1,E=Z?Z.call(b,Y,x,O):tu($,J,z,Y);e.push({align:Z?0:void 0,anchorX:$,anchorY:J,boxWidth:Y,point:O,rank:ti(E.rank,+!!z),size:x,target:E.y,tt:H,x:E.x})}else H.isActive=!1}return e},[]);!Z&&tg.some(e=>{let{outside:x}=b,E=(x?tl:0)+e.anchorX;return EE})&&(tg=tg.map(e=>{let{x:x,y:b}=tu(e.anchorX,e.anchorY,e.point.isHeader,e.boxWidth,!1);return $(e,{target:b,x:x})})),b.cleanSplit(),U(tg,tp);let tm={left:tl,right:tl};tg.forEach(function(e){let{x:x,boxWidth:E,isHeader:L}=e;!L&&(b.outside&&tl+xtm.right&&(tm.right=tl+x))}),tg.forEach(function(e){let{x:x,anchorX:E,anchorY:L,pos:O,point:{isHeader:D}}=e,j={visibility:void 0===O?”hidden”:”inherit”,x:x,y:(O||0)+td,anchorX:E,anchorY:L};if(b.outside&&x0&&(D||(j.x=x+e,j.anchorX=E+e),D&&(j.x=(tm.right-tm.left)/2,j.anchorX=E+e))}e.tt.attr(j)});let{container:tf,outside:tx,renderer:tb}=b;if(tx&&tf&&tb){let{width:e,height:x,x:b,y:E}=tr.getBBox();tb.setSize(e+b,x+E,!1),tf.style.left=tm.left+”px”,tf.style.top=th+”px”}H&&tr.attr({opacity:1===tr.opacity?.999:1})}drawTracker(){if(!this.shouldStickOnContact()){this.tracker&&(this.tracker=this.tracker.destroy());return}let e=this.chart,x=this.label,b=this.shared?e.hoverPoints:e.hoverPoint;if(!x||!b)return;let E={x:0,y:0,width:0,height:0},L=this.getAnchor(b),O=x.getBBox();L[0]+=e.plotLeft-(x.translateX||0),L[1]+=e.plotTop-(x.translateY||0),E.x=Math.min(0,L[0]),E.y=Math.min(0,L[1]),E.width=L[0]<0?Math.max(Math.abs(L[0]),O.width-L[0]):Math.max(Math.abs(L[0]),O.width),E.height=L[1]<0?Math.max(Math.abs(L[1]),O.height-Math.abs(L[1])):Math.max(Math.abs(L[1]),O.height),this.tracker?this.tracker.attr(E):(this.tracker=x.renderer.rect(E).addClass("highcharts-tracker").add(x),e.styledMode||this.tracker.attr({fill:"rgba(0,0,0,0)"}))}styledModeFormat(e){return e.replace('style="font-size: 0.8em"','class="highcharts-header"').replace(/style="color:{(point|series)\.color}"/g,'class="highcharts-color-{$1.colorIndex} {series.options.className} {point.options.className}"')}tooltipFooterHeaderFormatter(e,x){let b=e.series,E=b.tooltipOptions,L=b.xAxis,O=L&&L.dateTime,D={isFooter:x,labelConfig:e},j=E.xDateFormat,z=E[x?"footerFormat":"headerFormat"];return _(this,"headerFormatter",D,function(x){O&&!j&&J(e.key)&&(j=O.getXDateFormat(e.key,E.dateTimeLabelFormats)),O&&j&&(e.point&&e.point.tooltipDateKeys||["key"]).forEach(function(e){z=z.replace("{point."+e+"}","{point."+e+":"+j+"}")}),b.chart.styledMode&&(z=this.styledModeFormat(z)),x.text=R(z,{point:e,series:b},this.chart)}),D.text}update(e){this.destroy(),this.init(this.chart,te(!0,this.options,e))}updatePosition(e){let{chart:x,container:b,distance:E,options:L,pointer:O,renderer:D}=this,{height:j=0,width:R=0}=this.getLabel(),{left:z,top:F,scaleX:H,scaleY:U}=O.getChartPosition(),Y=(L.positioner||this.getPosition).call(this,R,j,e),V=(e.plotX||0)+x.plotLeft,K=(e.plotY||0)+x.plotTop,$;D&&b&&(L.positioner&&(Y.x+=z-E,Y.y+=F-E),$=(L.borderWidth||0)+2*E+2,D.setSize(R+$,j+$,!1),(1!==H||1!==U)&&(q(b,{transform:`scale(${H}, ${U})`}),V*=H,K*=U),V+=z-Y.x,K+=F-Y.y),this.move(Math.round(Y.x),Math.round(Y.y||0),V,K)}};return(D=T||(T={})).compose=function(e){ts(z,"Core.Tooltip")&&Y(e,"afterInit",function(){let e=this.chart;e.options.tooltip&&(e.tooltip=new D(e,e.options.tooltip,this))})},T}),b(x,"Core/Series/Point.js",[x["Core/Renderer/HTML/AST.js"],x["Core/Animation/AnimationUtilities.js"],x["Core/Defaults.js"],x["Core/Templating.js"],x["Core/Utilities.js"]],function(e,x,b,E,L){let{animObject:O}=x,{defaultOptions:D}=b,{format:j}=E,{addEvent:R,crisp:z,erase:F,extend:H,fireEvent:U,getNestedProperty:Y,isArray:V,isFunction:q,isNumber:K,isObject:$,merge:_,pick:Z,syncTimeout:J,removeEvent:tt,uniqueKey:te}=L;let k=class k{animateBeforeDestroy(){let e=this,x={x:e.startXPos,opacity:0},b=e.getGraphicalProps();b.singular.forEach(function(b){e[b]=e[b].animate("dataLabel"===b?{x:e[b].startXPos,y:e[b].startYPos,opacity:0}:x)}),b.plural.forEach(function(x){e[x].forEach(function(x){x.element&&x.animate(H({x:e.startXPos},x.startYPos?{x:x.startXPos,y:x.startYPos}:{}))})})}applyOptions(e,x){let b=this.series,E=b.options.pointValKey||b.pointValKey;return H(this,e=k.prototype.optionsToObject.call(this,e)),this.options=this.options?H(this.options,e):e,e.group&&delete this.group,e.dataLabels&&delete this.dataLabels,E&&(this.y=k.prototype.getNestedProperty.call(this,E)),this.selected&&(this.state="select"),"name"in this&&void 0===x&&b.xAxis&&b.xAxis.hasNames&&(this.x=b.xAxis.nameToX(this)),void 0===this.x&&b?void 0===x?this.x=b.autoIncrement():this.x=x:K(e.x)&&b.options.relativeXValue&&(this.x=b.autoIncrement(e.x)),this.isNull=this.isValid&&!this.isValid(),this.formatPrefix=this.isNull?"null":"point",this}destroy(){if(!this.destroyed){let e=this,x=e.series,b=x.chart,E=x.options.dataSorting,L=b.hoverPoints,D=O(e.series.chart.renderer.globalAnimation),j=()=>{for(let x in(e.graphic||e.graphics||e.dataLabel||e.dataLabels)&&(tt(e),e.destroyElements()),e)delete e[x]};e.legendItem&&b.legend.destroyItem(e),L&&(e.setState(),F(L,e),L.length||(b.hoverPoints=null)),e===b.hoverPoint&&e.onMouseOut(),E&&E.enabled?(this.animateBeforeDestroy(),J(j,D.duration)):j(),b.pointCount–}this.destroyed=!0}destroyElements(e){let x=this,b=x.getGraphicalProps(e);b.singular.forEach(function(e){x[e]=x[e].destroy()}),b.plural.forEach(function(e){x[e].forEach(function(e){e&&e.element&&e.destroy()}),delete x[e]})}firePointEvent(e,x,b){let E=this,L=this.series.options;E.manageEvent(e),”click”===e&&L.allowPointSelect&&(b=function(e){!E.destroyed&&E.select&&E.select(null,e.ctrlKey||e.metaKey||e.shiftKey)}),U(E,e,x,b)}getClassName(){return”highcharts-point”+(this.selected?” highcharts-point-select”:””)+(this.negative?” highcharts-negative”:””)+(this.isNull?” highcharts-null-point”:””)+(void 0!==this.colorIndex?” highcharts-color-“+this.colorIndex:””)+(this.options.className?” “+this.options.className:””)+(this.zone&&this.zone.className?” “+this.zone.className.replace(“highcharts-negative”,””):””)}getGraphicalProps(e){let x,b,E=this,L=[],O={singular:[],plural:[]};for((e=e||{graphic:1,dataLabel:1}).graphic&&L.push(“graphic”,”connector”),e.dataLabel&&L.push(“dataLabel”,”dataLabelPath”,”dataLabelUpper”),b=L.length;b–;)E[x=L[b]]&&O.singular.push(x);return[“graphic”,”dataLabel”].forEach(function(x){let b=x+”s”;e[x]&&E[b]&&O.plural.push(b)}),O}getLabelConfig(){return{x:this.category,y:this.y,color:this.color,colorIndex:this.colorIndex,key:this.name||this.category,series:this.series,point:this,percentage:this.percentage,total:this.total||this.stackTotal}}getNestedProperty(e){return e?0===e.indexOf(“custom.”)?Y(e,this.options):this[e]:void 0}getZone(){let e=this.series,x=e.zones,b=e.zoneAxis||”y”,E,L=0;for(E=x[0];this[b]>=E.value;)E=x[++L];return this.nonZonedColor||(this.nonZonedColor=this.color),E&&E.color&&!this.options.color?this.color=E.color:this.color=this.nonZonedColor,E}hasNewShapeType(){return(this.graphic&&(this.graphic.symbolName||this.graphic.element.nodeName))!==this.shapeType}constructor(e,x,b){this.formatPrefix=”point”,this.visible=!0,this.series=e,this.applyOptions(x,b),this.id??(this.id=te()),this.resolveColor(),e.chart.pointCount++,U(this,”afterInit”)}isValid(){return(K(this.x)||this.x instanceof Date)&&K(this.y)}optionsToObject(e){let x=this.series,b=x.options.keys,E=b||x.pointArrayMap||[“y”],L=E.length,O={},D,j=0,R=0;if(K(e)||null===e)O[E[0]]=e;else if(V(e))for(!b&&e.length>L&&(“string”==(D=typeof e[0])?O.name=e[0]:”number”===D&&(O.x=e[0]),j++);R0?k.prototype.setNestedProperty(O,e[j],E[R]):O[E[R]]=e[j]),j++,R++;else”object”==typeof e&&(O=e,e.dataLabels&&(x.hasDataLabels=()=>!0),e.marker&&(x._hasPointMarkers=!0));return O}pos(e,x=this.plotY){if(!this.destroyed){let{plotX:b,series:E}=this,{chart:L,xAxis:O,yAxis:D}=E,j=0,R=0;if(K(b)&&K(x))return e&&(j=O?O.pos:L.plotLeft,R=D?D.pos:L.plotTop),L.inverted&&O&&D?[D.len-x+R,O.len-b+j]:[b+j,x+R]}}resolveColor(){let e=this.series,x=e.chart.options.chart,b=e.chart.styledMode,E,L,O=x.colorCount,D;delete this.nonZonedColor,e.options.colorByPoint?(b||(E=(L=e.options.colors||e.chart.options.colors)[e.colorCounter],O=L.length),D=e.colorCounter,e.colorCounter++,e.colorCounter===O&&(e.colorCounter=0)):(b||(E=e.color),D=e.colorIndex),this.colorIndex=Z(this.options.colorIndex,D),this.color=Z(this.options.color,E)}setNestedProperty(e,x,b){return b.split(“.”).reduce(function(e,b,E,L){let O=L.length-1===E;return e[b]=O?x:$(e[b],!0)?e[b]:{},e[b]},e),e}shouldDraw(){return!this.isNull}tooltipFormatter(e){let x=this.series,b=x.tooltipOptions,E=Z(b.valueDecimals,””),L=b.valuePrefix||””,O=b.valueSuffix||””;return x.chart.styledMode&&(e=x.chart.tooltip.styledModeFormat(e)),(x.pointArrayMap||[“y”]).forEach(function(x){x=”{point.”+x,(L||O)&&(e=e.replace(RegExp(x+”}”,”g”),L+x+”}”+O)),e=e.replace(RegExp(x+”}”,”g”),x+”:,.”+E+”f}”)}),j(e,{point:this,series:this.series},x.chart)}update(e,x,b,E){let L,O=this,D=O.series,j=O.graphic,R=D.chart,z=D.options;function F(){O.applyOptions(e);let E=j&&O.hasMockGraphic,F=null===O.y?!E:E;j&&F&&(O.graphic=j.destroy(),delete O.hasMockGraphic),$(e,!0)&&(j&&j.element&&e&&e.marker&&void 0!==e.marker.symbol&&(O.graphic=j.destroy()),e?.dataLabels&&O.dataLabel&&(O.dataLabel=O.dataLabel.destroy())),L=O.index,D.updateParallelArrays(O,L),z.data[L]=$(z.data[L],!0)||$(e,!0)?O.options:Z(e,z.data[L]),D.isDirty=D.isDirtyData=!0,!D.fixedBox&&D.hasCartesianSeries&&(R.isDirtyBox=!0),”point”===z.legendType&&(R.isDirtyLegend=!0),x&&R.redraw(b)}x=Z(x,!0),!1===E?F():O.firePointEvent(“update”,{options:e},F)}remove(e,x){this.series.removePoint(this.series.data.indexOf(this),e,x)}select(e,x){let b=this,E=b.series,L=E.chart;e=Z(e,!b.selected),this.selectedStaging=e,b.firePointEvent(e?”select”:”unselect”,{accumulate:x},function(){b.selected=b.options.selected=e,E.options.data[E.data.indexOf(b)]=b.options,b.setState(e&&”select”),x||L.getSelectedPoints().forEach(function(e){let x=e.series;e.selected&&e!==b&&(e.selected=e.options.selected=!1,x.options.data[x.data.indexOf(e)]=e.options,e.setState(L.hoverPoints&&x.options.inactiveOtherPoints?”inactive”:””),e.firePointEvent(“unselect”))})}),delete this.selectedStaging}onMouseOver(e){let{inverted:x,pointer:b}=this.series.chart;b&&(e=e?b.normalize(e):b.getChartCoordinatesFromPoint(this,x),b.runPointActions(e,this))}onMouseOut(){let e=this.series.chart;this.firePointEvent(“mouseOut”),this.series.options.inactiveOtherPoints||(e.hoverPoints||[]).forEach(function(e){e.setState()}),e.hoverPoints=e.hoverPoint=null}manageEvent(e){let x=_(this.series.options.point,this.options),b=x.events?.[e];q(b)&&(!this.hcEvents?.[e]||this.hcEvents?.[e]?.map(e=>e.fn).indexOf(b)===-1)?(R(this,e,b),this.hasImportedEvents=!0):this.hasImportedEvents&&!b&&this.hcEvents?.[e]&&(tt(this,e),delete this.hcEvents[e],Object.keys(this.hcEvents)||(this.hasImportedEvents=!1))}setState(x,b){let E=this.series,L=this.state,O=E.options.states[x||”normal”]||{},j=D.plotOptions[E.type].marker&&E.options.marker,R=j&&!1===j.enabled,z=j&&j.states&&j.states[x||”normal”]||{},F=!1===z.enabled,Y=this.marker||{},V=E.chart,q=j&&E.markerAttribs,$=E.halo,_,J,tt,te=E.stateMarkerGraphic,ti;if((x=x||””)===this.state&&!b||this.selected&&”select”!==x||!1===O.enabled||x&&(F||R&&!1===z.enabled)||x&&Y.states&&Y.states[x]&&!1===Y.states[x].enabled)return;if(this.state=x,q&&(_=E.markerAttribs(this,x)),this.graphic&&!this.hasMockGraphic){if(L&&this.graphic.removeClass(“highcharts-point-“+L),x&&this.graphic.addClass(“highcharts-point-“+x),!V.styledMode){J=E.pointAttribs(this,x),tt=Z(V.options.chart.animation,O.animation);let e=J.opacity;E.options.inactiveOtherPoints&&K(e)&&(this.dataLabels||[]).forEach(function(x){x&&!x.hasClass(“highcharts-data-label-hidden”)&&(x.animate({opacity:e},tt),x.connector&&x.connector.animate({opacity:e},tt))}),this.graphic.animate(J,tt)}_&&this.graphic.animate(_,Z(V.options.chart.animation,z.animation,j.animation)),te&&te.hide()}else x&&z&&(ti=Y.symbol||E.symbol,te&&te.currentSymbol!==ti&&(te=te.destroy()),_&&(te?te[b?”animate”:”attr”]({x:_.x,y:_.y}):ti&&(E.stateMarkerGraphic=te=V.renderer.symbol(ti,_.x,_.y,_.width,_.height).add(E.markerGroup),te.currentSymbol=ti)),!V.styledMode&&te&&”inactive”!==this.state&&te.attr(E.pointAttribs(this,x))),te&&(te[x&&this.isInside?”show”:”hide”](),te.element.point=this,te.addClass(this.getClassName(),!0));let ts=O.halo,to=this.graphic||te,tr=to&&to.visibility||”inherit”;ts&&ts.size&&to&&”hidden”!==tr&&!this.isCluster?($||(E.halo=$=V.renderer.path().add(to.parentGroup)),$.show()[b?”animate”:”attr”]({d:this.haloPath(ts.size)}),$.attr({class:”highcharts-halo highcharts-color-“+Z(this.colorIndex,E.colorIndex)+(this.className?” “+this.className:””),visibility:tr,zIndex:-1}),$.point=this,V.styledMode||$.attr(H({fill:this.color||E.color,”fill-opacity”:ts.opacity},e.filterUserAttributes(ts.attributes||{})))):$?.point?.haloPath&&!$.point.destroyed&&$.animate({d:$.point.haloPath(0)},null,$.hide),U(this,”afterSetState”,{state:x})}haloPath(e){let x=this.pos();return x?this.series.chart.renderer.symbols.circle(z(x[0],1)-e,x[1]-e,2*e,2*e):[]}};return k}),b(x,”Core/Pointer.js”,[x[“Core/Color/Color.js”],x[“Core/Globals.js”],x[“Core/Utilities.js”]],function(e,x,b){var E;let{parse:L}=e,{charts:O,composed:D,isTouchDevice:j}=x,{addEvent:R,attr:z,css:F,extend:H,find:U,fireEvent:Y,isNumber:V,isObject:q,objectEach:K,offset:$,pick:_,pushUnique:Z,splat:J}=b;let S=class S{applyInactiveState(e){let x=[],b;(e||[]).forEach(function(e){b=e.series,x.push(b),b.linkedParent&&x.push(b.linkedParent),b.linkedSeries&&(x=x.concat(b.linkedSeries)),b.navigatorSeries&&x.push(b.navigatorSeries)}),this.chart.series.forEach(function(e){-1===x.indexOf(e)?e.setState(“inactive”,!0):e.options.inactiveOtherPoints&&e.setAllPointsToState(“inactive”)})}destroy(){let e=this;this.eventsToUnbind.forEach(e=>e()),this.eventsToUnbind=[],!x.chartCount&&(S.unbindDocumentMouseUp&&(S.unbindDocumentMouseUp=S.unbindDocumentMouseUp()),S.unbindDocumentTouchEnd&&(S.unbindDocumentTouchEnd=S.unbindDocumentTouchEnd())),clearInterval(e.tooltipTimeout),K(e,function(x,b){e[b]=void 0})}getSelectionMarkerAttrs(e,x){let b={args:{chartX:e,chartY:x},attrs:{},shapeType:”rect”};return Y(this,”getSelectionMarkerAttrs”,b,b=>{let E,{chart:L,zoomHor:O,zoomVert:D}=this,{mouseDownX:j=0,mouseDownY:R=0}=L,z=b.attrs;z.x=L.plotLeft,z.y=L.plotTop,z.width=O?1:L.plotWidth,z.height=D?1:L.plotHeight,O&&(z.width=Math.max(1,Math.abs(E=e-j)),z.x=(E>0?0:E)+j),D&&(z.height=Math.max(1,Math.abs(E=x-R)),z.y=(E>0?0:E)+R)}),b}drag(e){let{chart:x}=this,{mouseDownX:b=0,mouseDownY:E=0}=x,{panning:O,panKey:D,selectionMarkerFill:j}=x.options.chart,R=x.plotLeft,z=x.plotTop,F=x.plotWidth,H=x.plotHeight,U=q(O)?O.enabled:O,Y=D&&e[`${D}Key`],V=e.chartX,K=e.chartY,$,_=this.selectionMarker;if((!_||!_.touch)&&(VR+F&&(V=R+F),Kz+H&&(K=z+H),this.hasDragged=Math.sqrt(Math.pow(b-V,2)+Math.pow(E-K,2)),this.hasDragged>10)){$=x.isInsidePlot(b-R,E-z,{visiblePlotOnly:!0});let{shapeType:D,attrs:F}=this.getSelectionMarkerAttrs(V,K);(x.hasCartesianSeries||x.mapView)&&this.hasZoom&&$&&!Y&&!_&&(this.selectionMarker=_=x.renderer[D](),_.attr({class:”highcharts-selection-marker”,zIndex:7}).add(),x.styledMode||_.attr({fill:j||L(“#334eff”).setOpacity(.25).get()})),_&&_.attr(F),$&&!_&&U&&x.pan(e,O)}}dragStart(e){let x=this.chart;x.mouseIsDown=e.type,x.cancelClick=!1,x.mouseDownX=e.chartX,x.mouseDownY=e.chartY}getSelectionBox(e){let x={args:{marker:e},result:e.getBBox()};return Y(this,”getSelectionBox”,x),x.result}drop(e){let x,{chart:b,selectionMarker:E}=this;for(let e of b.axes)e.isPanning&&(e.isPanning=!1,(e.options.startOnTick||e.options.endOnTick||e.series.some(e=>e.boosted))&&(e.forceRedraw=!0,e.setExtremes(e.userMin,e.userMax,!1),x=!0));if(x&&b.redraw(),E&&e){if(this.hasDragged){let x=this.getSelectionBox(E);b.transform({axes:b.axes.filter(e=>e.zoomEnabled&&(“xAxis”===e.coll&&this.zoomX||”yAxis”===e.coll&&this.zoomY)),selection:{originalEvent:e,xAxis:[],yAxis:[],…x},from:x})}V(b.index)&&(this.selectionMarker=E.destroy())}b&&V(b.index)&&(F(b.container,{cursor:b._cursor}),b.cancelClick=this.hasDragged>10,b.mouseIsDown=!1,this.hasDragged=0,this.pinchDown=[])}findNearestKDPoint(e,x,b){let E;return e.forEach(function(e){var L;let O,D,j,R=!(e.noSharedTooltip&&x)&&0>e.options.findNearestPointBy.indexOf(“y”),z=e.searchPoint(b,R);q(z,!0)&&z.series&&(!q(E,!0)||(O=(L=E).distX-z.distX,D=L.dist-z.dist,j=z.series.group?.zIndex-L.series.group?.zIndex,(0!==O&&x?O:0!==D?D:0!==j?j:L.series.index>z.series.index?-1:1)>0))&&(E=z)}),E}getChartCoordinatesFromPoint(e,x){let{xAxis:b,yAxis:E}=e.series,L=e.shapeArgs;if(b&&E){let O=e.clientX??e.plotX??0,D=e.plotY||0;return e.isNode&&L&&V(L.x)&&V(L.y)&&(O=L.x,D=L.y),x?{chartX:E.len+E.pos-D,chartY:b.len+b.pos-O}:{chartX:O+b.pos,chartY:D+E.pos}}if(L&&L.x&&L.y)return{chartX:L.x,chartY:L.y}}getChartPosition(){if(this.chartPosition)return this.chartPosition;let{container:e}=this.chart,x=$(e);this.chartPosition={left:x.left,top:x.top,scaleX:1,scaleY:1};let{offsetHeight:b,offsetWidth:E}=e;return E>2&&b>2&&(this.chartPosition.scaleX=x.width/E,this.chartPosition.scaleY=x.height/b),this.chartPosition}getCoordinates(e){let x={xAxis:[],yAxis:[]};for(let b of this.chart.axes)x[b.isXAxis?”xAxis”:”yAxis”].push({axis:b,value:b.toValue(e[b.horiz?”chartX”:”chartY”])});return x}getHoverData(e,x,b,E,L,O){let D=[],j=function(e){return e.visible&&!(!L&&e.directTouch)&&_(e.options.enableMouseTracking,!0)},R=x,z,F={chartX:O?O.chartX:void 0,chartY:O?O.chartY:void 0,shared:L};Y(this,”beforeGetHoverData”,F),z=R&&!R.stickyTracking?[R]:b.filter(e=>e.stickyTracking&&(F.filter||j)(e));let H=E&&e||!O?e:this.findNearestKDPoint(z,L,O);return R=H&&H.series,H&&(L&&!R.noSharedTooltip?(z=b.filter(function(e){return F.filter?F.filter(e):j(e)&&!e.noSharedTooltip})).forEach(function(e){let x=U(e.points,function(e){return e.x===H.x&&!e.isNull});q(x)&&(e.boosted&&e.boost&&(x=e.boost.getPoint(x)),D.push(x))}):D.push(H)),Y(this,”afterGetHoverData”,F={hoverPoint:H}),{hoverPoint:F.hoverPoint,hoverSeries:R,hoverPoints:D}}getPointFromEvent(e){let x=e.target,b;for(;x&&!b;)b=x.point,x=x.parentNode;return b}onTrackerMouseOut(e){let x=this.chart,b=e.relatedTarget,E=x.hoverSeries;this.isDirectTouch=!1,!E||!b||E.stickyTracking||this.inClass(b,”highcharts-tooltip”)||this.inClass(b,”highcharts-series-“+E.index)&&this.inClass(b,”highcharts-tracker”)||E.onMouseOut()}inClass(e,x){let b=e,E;for(;b;){if(E=z(b,”class”)){if(-1!==E.indexOf(x))return!0;if(-1!==E.indexOf(“highcharts-container”))return!1}b=b.parentElement}}constructor(e,x){this.hasDragged=0,this.pointerCaptureEventsToUnbind=[],this.eventsToUnbind=[],this.options=x,this.chart=e,this.runChartClick=!!x.chart.events?.click,this.pinchDown=[],this.setDOMEvents(),Y(this,”afterInit”)}normalize(e,x){let b=e.touches,E=b?b.length?b.item(0):_(b.changedTouches,e.changedTouches)[0]:e;x||(x=this.getChartPosition());let L=E.pageX-x.left,O=E.pageY-x.top;return H(e,{chartX:Math.round(L/=x.scaleX),chartY:Math.round(O/=x.scaleY)})}onContainerClick(e){let x=this.chart,b=x.hoverPoint,E=this.normalize(e),L=x.plotLeft,O=x.plotTop;!x.cancelClick&&(b&&this.inClass(E.target,”highcharts-tracker”)?(Y(b.series,”click”,H(E,{point:b})),x.hoverPoint&&b.firePointEvent(“click”,E)):(H(E,this.getCoordinates(E)),x.isInsidePlot(E.chartX-L,E.chartY-O,{visiblePlotOnly:!0})&&Y(x,”click”,E)))}onContainerMouseDown(e){let b=(1&(e.buttons||e.button))==1;e=this.normalize(e),x.isFirefox&&0!==e.button&&this.onContainerMouseMove(e),(void 0===e.button||b)&&(this.zoomOption(e),b&&e.preventDefault?.(),this.dragStart(e))}onContainerMouseLeave(e){let{pointer:x}=O[_(S.hoverChartIndex,-1)]||{};e=this.normalize(e),this.onContainerMouseMove(e),x&&e.relatedTarget&&!this.inClass(e.relatedTarget,”highcharts-tooltip”)&&(x.reset(),x.chartPosition=void 0)}onContainerMouseEnter(){delete this.chartPosition}onContainerMouseMove(e){let x=this.chart,b=x.tooltip,E=this.normalize(e);this.setHoverChartIndex(e),(“mousedown”===x.mouseIsDown||this.touchSelect(E))&&this.drag(E),!x.openMenu&&(this.inClass(E.target,”highcharts-tracker”)||x.isInsidePlot(E.chartX-x.plotLeft,E.chartY-x.plotTop,{visiblePlotOnly:!0}))&&!(b&&b.shouldStickOnContact(E))&&(this.inClass(E.target,”highcharts-no-tooltip”)?this.reset(!1,0):this.runPointActions(E))}onDocumentTouchEnd(e){this.onDocumentMouseUp(e)}onContainerTouchMove(e){this.touchSelect(e)?this.onContainerMouseMove(e):this.touch(e)}onContainerTouchStart(e){this.touchSelect(e)?this.onContainerMouseDown(e):(this.zoomOption(e),this.touch(e,!0))}onDocumentMouseMove(e){let x=this.chart,b=x.tooltip,E=this.chartPosition,L=this.normalize(e,E);!E||x.isInsidePlot(L.chartX-x.plotLeft,L.chartY-x.plotTop,{visiblePlotOnly:!0})||b&&b.shouldStickOnContact(L)||this.inClass(L.target,”highcharts-tracker”)||this.reset()}onDocumentMouseUp(e){O[_(S.hoverChartIndex,-1)]?.pointer?.drop(e)}pinch(e){let x=this,{chart:b,hasZoom:E,lastTouches:L}=x,O=[].map.call(e.touches||[],e=>x.normalize(e)),D=O.length,j=1===D&&(x.inClass(e.target,”highcharts-tracker”)&&b.runTrackerClick||x.runChartClick),R=b.tooltip,z=1===D&&_(R?.options.followTouchMove,!0);D>1?x.initiated=!0:z&&(x.initiated=!1),E&&x.initiated&&!j&&!1!==e.cancelable&&e.preventDefault(),”touchstart”===e.type?(x.pinchDown=O,x.res=!0):z?this.runPointActions(x.normalize(e)):L&&(Y(b,”touchpan”,{originalEvent:e,touches:O},()=>{let x=e=>{let x=e[0],b=e[1]||x;return{x:x.chartX,y:x.chartY,width:b.chartX-x.chartX,height:b.chartY-x.chartY}};b.transform({axes:b.axes.filter(e=>e.zoomEnabled&&(this.zoomHor&&e.horiz||this.zoomVert&&!e.horiz)),to:x(O),from:x(L),trigger:e.type})}),x.res&&(x.res=!1,this.reset(!1,0))),x.lastTouches=O}reset(e,x){let b=this.chart,E=b.hoverSeries,L=b.hoverPoint,O=b.hoverPoints,D=b.tooltip,j=D&&D.shared?O:L;e&&j&&J(j).forEach(function(x){x.series.isCartesian&&void 0===x.plotX&&(e=!1)}),e?D&&j&&J(j).length&&(D.refresh(j),D.shared&&O?O.forEach(function(e){e.setState(e.state,!0),e.series.isCartesian&&(e.series.xAxis.crosshair&&e.series.xAxis.drawCrosshair(null,e),e.series.yAxis.crosshair&&e.series.yAxis.drawCrosshair(null,e))}):L&&(L.setState(L.state,!0),b.axes.forEach(function(e){e.crosshair&&L.series[e.coll]===e&&e.drawCrosshair(null,L)}))):(L&&L.onMouseOut(),O&&O.forEach(function(e){e.setState()}),E&&E.onMouseOut(),D&&D.hide(x),this.unDocMouseMove&&(this.unDocMouseMove=this.unDocMouseMove()),b.axes.forEach(function(e){e.hideCrosshair()}),b.hoverPoints=b.hoverPoint=void 0)}runPointActions(e,x,b){let E=this.chart,L=E.series,D=E.tooltip&&E.tooltip.options.enabled?E.tooltip:void 0,j=!!D&&D.shared,z=x||E.hoverPoint,F=z&&z.series||E.hoverSeries,H=(!e||”touchmove”!==e.type)&&(!!x||F&&F.directTouch&&this.isDirectTouch),Y=this.getHoverData(z,F,L,H,j,e);z=Y.hoverPoint,F=Y.hoverSeries;let V=Y.hoverPoints,q=F&&F.tooltipOptions.followPointer&&!F.tooltipOptions.split,K=j&&F&&!F.noSharedTooltip;if(z&&(b||z!==E.hoverPoint||D&&D.isHidden)){if((E.hoverPoints||[]).forEach(function(e){-1===V.indexOf(e)&&e.setState()}),E.hoverSeries!==F&&F.onMouseOver(),this.applyInactiveState(V),(V||[]).forEach(function(e){e.setState(“hover”)}),E.hoverPoint&&E.hoverPoint.firePointEvent(“mouseOut”),!z.series)return;E.hoverPoints=V,E.hoverPoint=z,z.firePointEvent(“mouseOver”,void 0,()=>{D&&z&&D.refresh(K?V:z,e)})}else if(q&&D&&!D.isHidden){let x=D.getAnchor([{}],e);E.isInsidePlot(x[0],x[1],{visiblePlotOnly:!0})&&D.updatePosition({plotX:x[0],plotY:x[1]})}this.unDocMouseMove||(this.unDocMouseMove=R(E.container.ownerDocument,”mousemove”,e=>O[S.hoverChartIndex??-1]?.pointer?.onDocumentMouseMove(e)),this.eventsToUnbind.push(this.unDocMouseMove)),E.axes.forEach(function(x){let b,L=_((x.crosshair||{}).snap,!0);!L||(b=E.hoverPoint)&&b.series[x.coll]===x||(b=U(V,e=>e.series&&e.series[x.coll]===x)),b||!L?x.drawCrosshair(e,b):x.hideCrosshair()})}setDOMEvents(){let e=this.chart.container,x=e.ownerDocument;e.onmousedown=this.onContainerMouseDown.bind(this),e.onmousemove=this.onContainerMouseMove.bind(this),e.onclick=this.onContainerClick.bind(this),this.eventsToUnbind.push(R(e,”mouseenter”,this.onContainerMouseEnter.bind(this)),R(e,”mouseleave”,this.onContainerMouseLeave.bind(this))),S.unbindDocumentMouseUp||(S.unbindDocumentMouseUp=R(x,”mouseup”,this.onDocumentMouseUp.bind(this)));let b=this.chart.renderTo.parentElement;for(;b&&”BODY”!==b.tagName;)this.eventsToUnbind.push(R(b,”scroll”,()=>{delete this.chartPosition})),b=b.parentElement;this.eventsToUnbind.push(R(e,”touchstart”,this.onContainerTouchStart.bind(this),{passive:!1}),R(e,”touchmove”,this.onContainerTouchMove.bind(this),{passive:!1})),S.unbindDocumentTouchEnd||(S.unbindDocumentTouchEnd=R(x,”touchend”,this.onDocumentTouchEnd.bind(this),{passive:!1})),this.setPointerCapture(),R(this.chart,”redraw”,this.setPointerCapture.bind(this))}setPointerCapture(){if(!j)return;let e=this.pointerCaptureEventsToUnbind,x=this.chart,b=x.container,E=_(x.options.tooltip?.followTouchMove,!0)&&x.series.some(e=>e.options.findNearestPointBy.indexOf(“y”)>-1);!this.hasPointerCapture&&E?(e.push(R(b,”pointerdown”,e=>{e.target?.hasPointerCapture(e.pointerId)&&e.target?.releasePointerCapture(e.pointerId)}),R(b,”pointermove”,e=>{x.pointer?.getPointFromEvent(e)?.onMouseOver(e)})),x.styledMode||F(b,{“touch-action”:”none”}),b.className+=” highcharts-no-touch-action”,this.hasPointerCapture=!0):this.hasPointerCapture&&!E&&(e.forEach(e=>e()),e.length=0,x.styledMode||F(b,{“touch-action”:_(x.options.chart.style?.[“touch-action”],”manipulation”)}),b.className=b.className.replace(” highcharts-no-touch-action”,””),this.hasPointerCapture=!1)}setHoverChartIndex(e){let b=this.chart,E=x.charts[_(S.hoverChartIndex,-1)];E&&E!==b&&E.pointer?.onContainerMouseLeave(e||{relatedTarget:b.container}),E&&E.mouseIsDown||(S.hoverChartIndex=b.index)}touch(e,x){let b,{chart:E,pinchDown:L=[]}=this;this.setHoverChartIndex(),1===e.touches.length?(e=this.normalize(e),E.isInsidePlot(e.chartX-E.plotLeft,e.chartY-E.plotTop,{visiblePlotOnly:!0})&&!E.openMenu?(x&&this.runPointActions(e),”touchmove”===e.type&&(b=!!L[0]&&Math.pow(L[0].chartX-e.chartX,2)+Math.pow(L[0].chartY-e.chartY,2)>=16),_(b,!0)&&this.pinch(e)):x&&this.reset()):2===e.touches.length&&this.pinch(e)}touchSelect(e){return!!(this.chart.zooming.singleTouch&&e.touches&&1===e.touches.length)}zoomOption(e){let x=this.chart,b=x.inverted,E=x.zooming.type||””,L,O;/touch/.test(e.type)&&(E=_(x.zooming.pinchType,E)),this.zoomX=L=/x/.test(E),this.zoomY=O=/y/.test(E),this.zoomHor=L&&!b||O&&b,this.zoomVert=O&&!b||L&&b,this.hasZoom=L||O}};return(E=S||(S={})).compose=function(e){Z(D,”Core.Pointer”)&&R(e,”beforeRender”,function(){this.pointer=new E(this,this.options)})},S}),b(x,”Core/Legend/Legend.js”,[x[“Core/Animation/AnimationUtilities.js”],x[“Core/Templating.js”],x[“Core/Globals.js”],x[“Core/Series/Point.js”],x[“Core/Renderer/RendererUtilities.js”],x[“Core/Utilities.js”]],function(e,x,b,E,L,O){var D;let{animObject:j,setAnimation:R}=e,{format:z}=x,{composed:F,marginNames:H}=b,{distribute:U}=L,{addEvent:Y,createElement:V,css:q,defined:K,discardElement:$,find:_,fireEvent:Z,isNumber:J,merge:tt,pick:te,pushUnique:ti,relativeLength:ts,stableSort:to,syncTimeout:tr}=O;let T=class T{constructor(e,x){this.allItems=[],this.initialItemY=0,this.itemHeight=0,this.itemMarginBottom=0,this.itemMarginTop=0,this.itemX=0,this.itemY=0,this.lastItemY=0,this.lastLineHeight=0,this.legendHeight=0,this.legendWidth=0,this.maxItemWidth=0,this.maxLegendWidth=0,this.offsetWidth=0,this.padding=0,this.pages=[],this.symbolHeight=0,this.symbolWidth=0,this.titleHeight=0,this.totalItemWidth=0,this.widthOption=0,this.chart=e,this.setOptions(x),x.enabled&&(this.render(),Y(this.chart,”endResize”,function(){this.legend.positionCheckboxes()})),Y(this.chart,”render”,()=>{this.options.enabled&&this.proximate&&(this.proximatePositions(),this.positionItems())})}setOptions(e){let x=te(e.padding,8);this.options=e,this.chart.styledMode||(this.itemStyle=e.itemStyle,this.itemHiddenStyle=tt(this.itemStyle,e.itemHiddenStyle)),this.itemMarginTop=e.itemMarginTop,this.itemMarginBottom=e.itemMarginBottom,this.padding=x,this.initialItemY=x-5,this.symbolWidth=te(e.symbolWidth,16),this.pages=[],this.proximate=”proximate”===e.layout&&!this.chart.inverted,this.baseline=void 0}update(e,x){let b=this.chart;this.setOptions(tt(!0,this.options,e)),this.destroy(),b.isDirtyLegend=b.isDirtyBox=!0,te(x,!0)&&b.redraw(),Z(this,”afterUpdate”,{redraw:x})}colorizeItem(e,x){let{area:b,group:E,label:L,line:O,symbol:D}=e.legendItem||{};if(E?.[x?”removeClass”:”addClass”](“highcharts-legend-item-hidden”),!this.chart.styledMode){let{itemHiddenStyle:E={}}=this,j=E.color,{fillColor:R,fillOpacity:z,lineColor:F,marker:H}=e.options,U=e=>(!x&&(e.fill&&(e.fill=j),e.stroke&&(e.stroke=j)),e);L?.css(tt(x?this.itemStyle:E)),O?.attr(U({stroke:F||e.color})),D&&D.attr(U(H&&D.isMarker?e.pointAttribs():{fill:e.color})),b?.attr(U({fill:R||e.color,”fill-opacity”:R?1:z??.75}))}Z(this,”afterColorizeItem”,{item:e,visible:x})}positionItems(){this.allItems.forEach(this.positionItem,this),this.chart.isResizing||this.positionCheckboxes()}positionItem(e){let{group:x,x:b=0,y:E=0}=e.legendItem||{},L=this.options,O=L.symbolPadding,D=!L.rtl,j=e.checkbox;if(x&&x.element){let L={translateX:D?b:this.legendWidth-b-2*O-4,translateY:E};x[K(x.translateY)?”animate”:”attr”](L,void 0,()=>{Z(this,”afterPositionItem”,{item:e})})}j&&(j.x=b,j.y=E)}destroyItem(e){let x=e.checkbox,b=e.legendItem||{};for(let e of[“group”,”label”,”line”,”symbol”])b[e]&&(b[e]=b[e].destroy());x&&$(x),e.legendItem=void 0}destroy(){for(let e of this.getAllItems())this.destroyItem(e);for(let e of[“clipRect”,”up”,”down”,”pager”,”nav”,”box”,”title”,”group”])this[e]&&(this[e]=this[e].destroy());this.display=null}positionCheckboxes(){let e,x=this.group&&this.group.alignAttr,b=this.clipHeight||this.legendHeight,E=this.titleHeight;x&&(e=x.translateY,this.allItems.forEach(function(L){let O,D=L.checkbox;D&&(O=e+E+D.y+(this.scrollOffset||0)+3,q(D,{left:x.translateX+L.checkboxOffset+D.x-20+”px”,top:O+”px”,display:this.proximate||O>e-6&&O1.5*ti?J.height:ti))}layoutItem(e){let x=this.options,b=this.padding,E=”horizontal”===x.layout,L=e.itemHeight,O=this.itemMarginBottom,D=this.itemMarginTop,j=E?te(x.itemDistance,20):0,R=this.maxLegendWidth,z=x.alignColumns&&this.totalItemWidth>R?this.maxItemWidth:e.itemWidth,F=e.legendItem||{};E&&this.itemX-b+z>R&&(this.itemX=b,this.lastLineHeight&&(this.itemY+=D+this.lastLineHeight+O),this.lastLineHeight=0),this.lastItemY=D+this.itemY+O,this.lastLineHeight=Math.max(L,this.lastLineHeight),F.x=this.itemX,F.y=this.itemY,E?this.itemX+=z:(this.itemY+=D+L+O,this.lastLineHeight=L),this.offsetWidth=this.widthOption||Math.max((E?this.itemX-b-(e.checkbox?0:j):z)+b,this.offsetWidth)}getAllItems(){let e=[];return this.chart.series.forEach(function(x){let b=x&&x.options;x&&te(b.showInLegend,!K(b.linkedTo)&&void 0,!0)&&(e=e.concat((x.legendItem||{}).labels||(“point”===b.legendType?x.data:x)))}),Z(this,”afterGetAllItems”,{allItems:e}),e}getAlignment(){let e=this.options;return this.proximate?e.align.charAt(0)+”tv”:e.floating?””:e.align.charAt(0)+e.verticalAlign.charAt(0)+e.layout.charAt(0)}adjustMargins(e,x){let b=this.chart,E=this.options,L=this.getAlignment();L&&[/(lth|ct|rth)/,/(rtv|rm|rbv)/,/(rbh|cb|lbh)/,/(lbv|lm|ltv)/].forEach(function(O,D){O.test(L)&&!K(e[D])&&(b[H[D]]=Math.max(b[H[D]],b.legend[(D+1)%2?”legendHeight”:”legendWidth”]+[1,-1,-1,1][D]*E[D%2?”x”:”y”]+te(E.margin,12)+x[D]+(b.titleOffset[D]||0)))})}proximatePositions(){let e,x=this.chart,b=[],E=”left”===this.options.align;for(let L of(this.allItems.forEach(function(e){let L,O,D=E,j,R;e.yAxis&&(e.xAxis.options.reversed&&(D=!D),e.points&&(L=_(D?e.points:e.points.slice(0).reverse(),function(e){return J(e.plotY)})),O=this.itemMarginTop+e.legendItem.label.getBBox().height+this.itemMarginBottom,R=e.yAxis.top-x.plotTop,j=e.visible?(L?L.plotY:e.yAxis.height)+(R-.3*O):R+e.yAxis.height,b.push({target:j,size:O,item:e}))},this),U(b,x.plotHeight)))e=L.item.legendItem||{},J(L.pos)&&(e.y=x.plotTop-x.spacing[0]+L.pos)}render(){let e=this.chart,x=e.renderer,b=this.options,E=this.padding,L=this.getAllItems(),O,D,j,R=this.group,z,F=this.box;this.itemX=E,this.itemY=this.initialItemY,this.offsetWidth=0,this.lastItemY=0,this.widthOption=ts(b.width,e.spacingBox.width-E),z=e.spacingBox.width-2*E-b.x,[“rm”,”lm”].indexOf(this.getAlignment().substring(0,2))>-1&&(z/=2),this.maxLegendWidth=this.widthOption||z,R||(this.group=R=x.g(“legend”).addClass(b.className||””).attr({zIndex:7}).add(),this.contentGroup=x.g().attr({zIndex:1}).add(R),this.scrollGroup=x.g().add(this.contentGroup)),this.renderTitle(),to(L,(e,x)=>(e.options&&e.options.legendIndex||0)-(x.options&&x.options.legendIndex||0)),b.reversed&&L.reverse(),this.allItems=L,this.display=O=!!L.length,this.lastLineHeight=0,this.maxItemWidth=0,this.totalItemWidth=0,this.itemHeight=0,L.forEach(this.renderItem,this),L.forEach(this.layoutItem,this),D=(this.widthOption||this.offsetWidth)+E,j=this.lastItemY+this.lastLineHeight+this.titleHeight,j=this.handleOverflow(j)+E,F||(this.box=F=x.rect().addClass(“highcharts-legend-box”).attr({r:b.borderRadius}).add(R)),e.styledMode||F.attr({stroke:b.borderColor,”stroke-width”:b.borderWidth||0,fill:b.backgroundColor||”none”}).shadow(b.shadow),D>0&&j>0&&F[F.placed?”animate”:”attr”](F.crisp.call({},{x:0,y:0,width:D,height:j},F.strokeWidth())),R[O?”show”:”hide”](),e.styledMode&&”none”===R.getStyle(“display”)&&(D=j=0),this.legendWidth=D,this.legendHeight=j,O&&this.align(),this.proximate||this.positionItems(),Z(this,”afterRender”)}align(e=this.chart.spacingBox){let x=this.chart,b=this.options,E=e.y;/(lth|ct|rth)/.test(this.getAlignment())&&x.titleOffset[0]>0?E+=x.titleOffset[0]:/(lbh|cb|rbh)/.test(this.getAlignment())&&x.titleOffset[2]>0&&(E-=x.titleOffset[2]),E!==e.y&&(e=tt(e,{y:E})),x.hasRendered||(this.group.placed=!1),this.group.align(tt(b,{width:this.legendWidth,height:this.legendHeight,verticalAlign:this.proximate?”top”:b.verticalAlign}),!0,e)}handleOverflow(e){let x=this,b=this.chart,E=b.renderer,L=this.options,O=L.y,D=”top”===L.verticalAlign,j=this.padding,R=L.maxHeight,z=L.navigation,F=te(z.animation,!0),H=z.arrowSize||12,U=this.pages,Y=this.allItems,V=function(e){“number”==typeof e?tt.attr({height:e}):tt&&(x.clipRect=tt.destroy(),x.contentGroup.clip()),x.contentGroup.div&&(x.contentGroup.div.style.clip=e?”rect(“+j+”px,9999px,”+(j+e)+”px,0)”:”auto”)},q=function(e){return x[e]=E.circle(0,0,1.3*H).translate(H/2,H/2).add(J),b.styledMode||x[e].attr(“fill”,”rgba(0,0,0,0.0001)”),x[e]},K,$,_,Z=b.spacingBox.height+(D?-O:O)-j,J=this.nav,tt=this.clipRect;return”horizontal”!==L.layout||”middle”===L.verticalAlign||L.floating||(Z/=2),R&&(Z=Math.min(Z,R)),U.length=0,e&&Z>0&&e>Z&&!1!==z.enabled?(this.clipHeight=K=Math.max(Z-20-this.titleHeight-j,0),this.currentPage=te(this.currentPage,1),this.fullHeight=e,Y.forEach((e,x)=>{let b=(_=e.legendItem||{}).y||0,E=Math.round(_.label.getBBox().height),L=U.length;(!L||b-U[L-1]>K&&($||b)!==U[L-1])&&(U.push($||b),L++),_.pageIx=L-1,$&&((Y[x-1].legendItem||{}).pageIx=L-1),x===Y.length-1&&b+E-U[L-1]>K&&b>U[L-1]&&(U.push(b),_.pageIx=L),b!==$&&($=b)}),tt||(tt=x.clipRect=E.clipRect(0,j-2,9999,0),x.contentGroup.clip(tt)),V(K),J||(this.nav=J=E.g().attr({zIndex:1}).add(this.group),this.up=E.symbol(“triangle”,0,0,H,H).add(J),q(“upTracker”).on(“click”,function(){x.scroll(-1,F)}),this.pager=E.text(“”,15,10).addClass(“highcharts-legend-navigation”),!b.styledMode&&z.style&&this.pager.css(z.style),this.pager.add(J),this.down=E.symbol(“triangle-down”,0,0,H,H).add(J),q(“downTracker”).on(“click”,function(){x.scroll(1,F)})),x.scroll(0),e=Z):J&&(V(),this.nav=J.destroy(),this.scrollGroup.attr({translateY:1}),this.clipHeight=0),e}scroll(e,x){let b=this.chart,E=this.pages,L=E.length,O=this.clipHeight,D=this.options.navigation,z=this.pager,F=this.padding,H=this.currentPage+e;H>L&&(H=L),H>0&&(void 0!==x&&R(x,b),this.nav.attr({translateX:F,translateY:O+this.padding+7+this.titleHeight,visibility:”inherit”}),[this.up,this.upTracker].forEach(function(e){e.attr({class:1===H?”highcharts-legend-nav-inactive”:”highcharts-legend-nav-active”})}),z.attr({text:H+”/”+L}),[this.down,this.downTracker].forEach(function(e){e.attr({x:18+this.pager.getBBox().width,class:H===L?”highcharts-legend-nav-inactive”:”highcharts-legend-nav-active”})},this),b.styledMode||(this.up.attr({fill:1===H?D.inactiveColor:D.activeColor}),this.upTracker.css({cursor:1===H?”default”:”pointer”}),this.down.attr({fill:H===L?D.inactiveColor:D.activeColor}),this.downTracker.css({cursor:H===L?”default”:”pointer”})),this.scrollOffset=-E[H-1]+this.initialItemY,this.scrollGroup.animate({translateY:this.scrollOffset}),this.currentPage=H,this.positionCheckboxes(),tr(()=>{Z(this,”afterScroll”,{currentPage:H})},j(te(x,b.renderer.globalAnimation,!0)).duration))}setItemEvents(e,x,b){let L=this,O=e.legendItem||{},D=L.chart.renderer.boxWrapper,j=e instanceof E,R=”highcharts-legend-“+(j?”point”:”series”)+”-active”,z=L.chart.styledMode,F=b?[x,O.symbol]:[O.group],H=x=>{L.allItems.forEach(b=>{e!==b&&[b].concat(b.linkedSeries||[]).forEach(e=>{e.setState(x,!j)})})};for(let b of F)b&&b.on(“mouseover”,function(){e.visible&&H(“inactive”),e.setState(“hover”),e.visible&&D.addClass(R),z||x.css(L.options.itemHoverStyle)}).on(“mouseout”,function(){L.chart.styledMode||x.css(tt(e.visible?L.itemStyle:L.itemHiddenStyle)),H(“”),D.removeClass(R),e.setState()}).on(“click”,function(x){let b=”legendItemClick”,E=function(){e.setVisible&&e.setVisible(),H(e.visible?”inactive”:””)};D.removeClass(R),x={browserEvent:x},e.firePointEvent?e.firePointEvent(b,x,E):Z(e,b,x,E)})}createCheckboxForItem(e){e.checkbox=V(“input”,{type:”checkbox”,className:”highcharts-legend-checkbox”,checked:e.selected,defaultChecked:e.selected},this.options.itemCheckboxStyle,this.chart.container),Y(e.checkbox,”click”,function(x){let b=x.target;Z(e.series||e,”checkboxClick”,{checked:b.checked,item:e},function(){e.select()})})}};return(D=T||(T={})).compose=function(e){ti(F,”Core.Legend”)&&Y(e,”beforeMargins”,function(){this.legend=new D(this,this.options.legend)})},T}),b(x,”Core/Legend/LegendSymbol.js”,[x[“Core/Utilities.js”]],function(e){var x;let{extend:b,merge:E,pick:L}=e;return function(e){function x(e,x,O){let D=this.legendItem=this.legendItem||{},{chart:j,options:R}=this,{baseline:z=0,symbolWidth:F,symbolHeight:H}=e,U=this.symbol||”circle”,Y=H/2,V=j.renderer,q=D.group,K=z-Math.round(H*(O?.4:.3)),$={},_,Z=R.marker,J=0;if(j.styledMode||($[“stroke-width”]=Math.min(R.lineWidth||0,24),R.dashStyle?$.dashstyle=R.dashStyle:”square”===R.linecap||($[“stroke-linecap”]=”round”)),D.line=V.path().addClass(“highcharts-graph”).attr($).add(q),O&&(D.area=V.path().addClass(“highcharts-area”).add(q)),$[“stroke-linecap”]&&(J=Math.min(D.line.strokeWidth(),F)/2),F){let e=[[“M”,J,K],[“L”,F-J,K]];D.line.attr({d:e}),D.area?.attr({d:[…e,[“L”,F-J,z],[“L”,J,z]]})}if(Z&&!1!==Z.enabled&&F){let e=Math.min(L(Z.radius,Y),Y);0===U.indexOf(“url”)&&(Z=E(Z,{width:H,height:H}),e=0),D.symbol=_=V.symbol(U,F/2-e,K-e,2*e,2*e,b({context:”legend”},Z)).addClass(“highcharts-point”).add(q),_.isMarker=!0}}e.areaMarker=function(e,b){x.call(this,e,b,!0)},e.lineMarker=x,e.rectangle=function(e,x){let b=x.legendItem||{},E=e.options,O=e.symbolHeight,D=E.squareSymbol,j=D?O:e.symbolWidth;b.symbol=this.chart.renderer.rect(D?(e.symbolWidth-O)/2:0,e.baseline-O+1,j,O,L(e.options.symbolRadius,O/2)).addClass(“highcharts-point”).attr({zIndex:3}).add(b.group)}}(x||(x={})),x}),b(x,”Core/Series/SeriesDefaults.js”,[],function(){return{lineWidth:2,allowPointSelect:!1,crisp:!0,showCheckbox:!1,animation:{duration:1e3},enableMouseTracking:!0,events:{},marker:{enabledThreshold:2,lineColor:”#ffffff”,lineWidth:0,radius:4,states:{normal:{animation:!0},hover:{animation:{duration:150},enabled:!0,radiusPlus:2,lineWidthPlus:1},select:{fillColor:”#cccccc”,lineColor:”#000000″,lineWidth:2}}},point:{events:{}},dataLabels:{animation:{},align:”center”,borderWidth:0,defer:!0,formatter:function(){let{numberFormatter:e}=this.series.chart;return”number”!=typeof this.y?””:e(this.y,-1)},padding:5,style:{fontSize:”0.7em”,fontWeight:”bold”,color:”contrast”,textOutline:”1px contrast”},verticalAlign:”bottom”,x:0,y:0},cropThreshold:300,opacity:1,pointRange:0,softThreshold:!0,states:{normal:{animation:!0},hover:{animation:{duration:150},lineWidthPlus:1,marker:{},halo:{size:10,opacity:.25}},select:{animation:{duration:0}},inactive:{animation:{duration:150},opacity:.2}},stickyTracking:!0,turboThreshold:1e3,findNearestPointBy:”x”}}),b(x,”Core/Series/SeriesRegistry.js”,[x[“Core/Globals.js”],x[“Core/Defaults.js”],x[“Core/Series/Point.js”],x[“Core/Utilities.js”]],function(e,x,b,E){var L;let{defaultOptions:O}=x,{extend:D,extendClass:j,merge:R}=E;return function(x){function E(e,E){let L=O.plotOptions||{},D=E.defaultOptions,j=E.prototype;return j.type=e,j.pointClass||(j.pointClass=b),!x.seriesTypes[e]&&(D&&(L[e]=D),x.seriesTypes[e]=E,!0)}x.seriesTypes=e.seriesTypes,x.registerSeriesType=E,x.seriesType=function(e,L,z,F,H){let U=O.plotOptions||{};if(L=L||””,U[e]=R(U[L],z),delete x.seriesTypes[e],E(e,j(x.seriesTypes[L]||function(){},F)),x.seriesTypes[e].prototype.type=e,H){let s=class s extends b{};D(s.prototype,H),x.seriesTypes[e].prototype.pointClass=s}return x.seriesTypes[e]}}(L||(L={})),L}),b(x,”Core/Series/Series.js”,[x[“Core/Animation/AnimationUtilities.js”],x[“Core/Defaults.js”],x[“Core/Foundation.js”],x[“Core/Globals.js”],x[“Core/Legend/LegendSymbol.js”],x[“Core/Series/Point.js”],x[“Core/Series/SeriesDefaults.js”],x[“Core/Series/SeriesRegistry.js”],x[“Core/Renderer/SVG/SVGElement.js”],x[“Core/Utilities.js”]],function(e,x,b,E,L,O,D,j,R,z){let{animObject:F,setAnimation:H}=e,{defaultOptions:U}=x,{registerEventOptions:Y}=b,{svg:V,win:q}=E,{seriesTypes:K}=j,{arrayMax:$,arrayMin:_,clamp:Z,correctFloat:J,crisp:tt,defined:te,destroyObjectProperties:ti,diffObjects:ts,erase:to,error:tr,extend:tn,find:ta,fireEvent:tl,getClosestDistance:th,getNestedProperty:td,insertItem:tc,isArray:tp,isNumber:tu,isString:tg,merge:tm,objectEach:tf,pick:tx,removeEvent:tb,splat:ty,syncTimeout:tv}=z;let X=class X{constructor(){this.zoneAxis=”y”}init(e,x){let b;tl(this,”init”,{options:x});let E=this,L=e.series;this.eventsToUnbind=[],E.chart=e,E.options=E.setOptions(x);let O=E.options,D=!1!==O.visible;E.linkedSeries=[],E.bindAxes(),tn(E,{name:O.name,state:””,visible:D,selected:!0===O.selected}),Y(this,O);let j=O.events;(j&&j.click||O.point&&O.point.events&&O.point.events.click||O.allowPointSelect)&&(e.runTrackerClick=!0),E.getColor(),E.getSymbol(),E.parallelArrays.forEach(function(e){E[e+”Data”]||(E[e+”Data”]=[])}),E.isCartesian&&(e.hasCartesianSeries=!0),L.length&&(b=L[L.length-1]),E._i=tx(b&&b._i,-1)+1,E.opacity=E.options.opacity,e.orderItems(“series”,tc(this,L)),O.dataSorting&&O.dataSorting.enabled?E.setDataSortingOptions():E.points||E.data||E.setData(O.data,!1),tl(this,”afterInit”)}is(e){return K[e]&&this instanceof K[e]}bindAxes(){let e,x=this,b=x.options,E=x.chart;tl(this,”bindAxes”,null,function(){(x.axisTypes||[]).forEach(function(L){(E[L]||[]).forEach(function(E){e=E.options,(tx(b[L],0)===E.index||void 0!==b[L]&&b[L]===e.id)&&(tc(x,E.series),x[L]=E,E.isDirty=!0)}),x[L]||x.optionalAxis===L||tr(18,!0,E)})}),tl(this,”afterBindAxes”)}updateParallelArrays(e,x,b){let E=e.series,L=tu(x)?function(b){let L=”y”===b&&E.toYData?E.toYData(e):e[b];E[b+”Data”][x]=L}:function(e){Array.prototype[x].apply(E[e+”Data”],b)};E.parallelArrays.forEach(L)}hasData(){return this.visible&&void 0!==this.dataMax&&void 0!==this.dataMin||this.visible&&this.yData&&this.yData.length>0}hasMarkerChanged(e,x){let b=e.marker,E=x.marker||{};return b&&(E.enabled&&!b.enabled||E.symbol!==b.symbol||E.height!==b.height||E.width!==b.width)}autoIncrement(e){let x=this.options,b=x.pointIntervalUnit,E=x.relativeXValue,L=this.chart.time,O=this.xIncrement,D,j;return(O=tx(O,x.pointStart,0),this.pointInterval=j=tx(this.pointInterval,x.pointInterval,1),E&&tu(e)&&(j*=e),b&&(D=new L.Date(O),”day”===b?L.set(“Date”,D,L.get(“Date”,D)+j):”month”===b?L.set(“Month”,D,L.get(“Month”,D)+j):”year”===b&&L.set(“FullYear”,D,L.get(“FullYear”,D)+j),j=D.getTime()-O),E&&tu(e))?O+j:(this.xIncrement=O+j,O)}setDataSortingOptions(){let e=this.options;tn(this,{requireSorting:!1,sorted:!1,enabledDataSorting:!0,allowDG:!1}),te(e.pointRange)||(e.pointRange=1)}setOptions(e){let x,b=this.chart,E=b.options.plotOptions,L=b.userOptions||{},O=tm(e),D=b.styledMode,j={plotOptions:E,userOptions:O};tl(this,”setOptions”,j);let R=j.plotOptions[this.type],z=L.plotOptions||{},F=z.series||{},H=U.plotOptions[this.type]||{},Y=z[this.type]||{};this.userOptions=j.userOptions;let V=tm(R,E.series,Y,O);this.tooltipOptions=tm(U.tooltip,U.plotOptions.series?.tooltip,H?.tooltip,b.userOptions.tooltip,z.series?.tooltip,Y.tooltip,O.tooltip),this.stickyTracking=tx(O.stickyTracking,Y.stickyTracking,F.stickyTracking,!!this.tooltipOptions.shared&&!this.noSharedTooltip||V.stickyTracking),null===R.marker&&delete V.marker,this.zoneAxis=V.zoneAxis||”y”;let q=this.zones=(V.zones||[]).map(e=>({…e}));return(V.negativeColor||V.negativeFillColor)&&!V.zones&&(x={value:V[this.zoneAxis+”Threshold”]||V.threshold||0,className:”highcharts-negative”},D||(x.color=V.negativeColor,x.fillColor=V.negativeFillColor),q.push(x)),q.length&&te(q[q.length-1].value)&&q.push(D?{}:{color:this.color,fillColor:this.fillColor}),tl(this,”afterSetOptions”,{options:V}),V}getName(){return tx(this.options.name,”Series “+(this.index+1))}getCyclic(e,x,b){let E,L,O=this.chart,D=`${e}Index`,j=`${e}Counter`,R=b?.length||O.options.chart.colorCount;!x&&(te(L=tx(“color”===e?this.options.colorIndex:void 0,this[D]))?E=L:(O.series.length||(O[j]=0),E=O[j]%R,O[j]+=1),b&&(x=b[E])),void 0!==E&&(this[D]=E),this[e]=x}getColor(){this.chart.styledMode?this.getCyclic(“color”):this.options.colorByPoint?this.color=”#cccccc”:this.getCyclic(“color”,this.options.color||U.plotOptions[this.type].color,this.chart.options.colors)}getPointsCollection(){return(this.hasGroupedData?this.points:this.data)||[]}getSymbol(){let e=this.options.marker;this.getCyclic(“symbol”,e.symbol,this.chart.options.symbols)}findPointIndex(e,x){let b,E,L,D=e.id,j=e.x,R=this.points,z=this.options.dataSorting;if(D){let e=this.chart.get(D);e instanceof O&&(b=e)}else if(this.linkedParent||this.enabledDataSorting||this.options.relativeXValue){let x=x=>!x.touched&&x.index===e.index;if(z&&z.matchByName?x=x=>!x.touched&&x.name===e.name:this.options.relativeXValue&&(x=x=>!x.touched&&x.options.x===e.x),!(b=ta(R,x)))return}return b&&void 0!==(L=b&&b.index)&&(E=!0),void 0===L&&tu(j)&&(L=this.xData.indexOf(j,x)),-1!==L&&void 0!==L&&this.cropped&&(L=L>=this.cropStart?L-this.cropStart:L),!E&&tu(L)&&R[L]&&R[L].touched&&(L=void 0),L}updateData(e,x){let b=this.options,E=b.dataSorting,L=this.points,O=[],D=this.requireSorting,j=e.length===L.length,R,z,F,H,U=!0;if(this.xIncrement=null,e.forEach(function(e,x){let z,F=te(e)&&this.pointClass.prototype.optionsToObject.call({series:this},e)||{},U=F.x;F.id||tu(U)?(-1===(z=this.findPointIndex(F,H))||void 0===z?O.push(e):L[z]&&e!==b.data[z]?(L[z].update(e,!1,null,!1),L[z].touched=!0,D&&(H=z+1)):L[z]&&(L[z].touched=!0),(!j||x!==z||E&&E.enabled||this.hasDerivedData)&&(R=!0)):O.push(e)},this),R)for(z=L.length;z–;)(F=L[z])&&!F.touched&&F.remove&&F.remove(!1,x);else!j||E&&E.enabled?U=!1:(e.forEach(function(e,x){e===L[x].y||L[x].destroyed||L[x].update(e,!1,null,!1)}),O.length=0);return L.forEach(function(e){e&&(e.touched=!1)}),!!U&&(O.forEach(function(e){this.addPoint(e,!1,null,null,!1)},this),null===this.xIncrement&&this.xData&&this.xData.length&&(this.xIncrement=$(this.xData),this.autoIncrement()),!0)}setData(e,x=!0,b,E){let L=this,O=L.points,D=O&&O.length||0,j=L.options,R=L.chart,z=j.dataSorting,F=L.xAxis,H=j.turboThreshold,U=this.xData,Y=this.yData,V=L.pointArrayMap,q=V&&V.length,K=j.keys,$,_,Z,J=0,tt=1,te=null,ti;R.options.chart.allowMutatingData||(j.data&&delete L.options.data,L.userOptions.data&&delete L.userOptions.data,ti=tm(!0,e));let ts=(e=ti||e||[]).length;if(z&&z.enabled&&(e=this.sortData(e)),R.options.chart.allowMutatingData&&!1!==E&&ts&&D&&!L.cropped&&!L.hasGroupedData&&L.visible&&!L.boosted&&(Z=this.updateData(e,b)),!Z){if(L.xIncrement=null,L.colorCounter=0,this.parallelArrays.forEach(function(e){L[e+”Data”].length=0}),H&&ts>H)if(tu(te=L.getFirstValidPoint(e)))for($=0;$=0?J:0,tt=tt>=0?tt:1),1===te.length&&(tt=0),J===tt)for($=0;${let E=td(b,e),L=td(b,x);return LE)}).forEach(function(e,x){e.x=x},this),x.linkedSeries&&x.linkedSeries.forEach(function(x){let b=x.options,L=b.data;b.dataSorting&&b.dataSorting.enabled||!L||(L.forEach(function(b,O){L[O]=E(x,b),e[O]&&(L[O].x=e[O].x,L[O].index=O)}),x.setData(L,!1))}),e}getProcessedData(e){let x=this,b=x.xAxis,E=x.options.cropThreshold,L=b?.logarithmic,O=x.isCartesian,D,j,R=0,z,F,H,U=x.xData,Y=x.yData,V=!1,q=U.length;b&&(F=(z=b.getExtremes()).min,H=z.max,V=!!(b.categories&&!b.names.length)),O&&x.sorted&&!e&&(!E||q>E||x.forceCrop)&&(U[q-1]H?(U=[],Y=[]):x.yData&&(U[0]H)&&(U=(D=this.cropData(x.xData,x.yData,F,H)).xData,Y=D.yData,R=D.start,j=!0));let K=th([L?U.map(L.log2lin):U],()=>x.requireSorting&&!V&&tr(15,!1,x.chart));return{xData:U,yData:Y,cropped:j,cropStart:R,closestPointRange:K}}processData(e){let x=this.xAxis;if(this.isCartesian&&!this.isDirty&&!x.isDirty&&!this.yAxis.isDirty&&!e)return!1;let b=this.getProcessedData();this.cropped=b.cropped,this.cropStart=b.cropStart,this.processedXData=b.xData,this.processedYData=b.yData,this.closestPointRange=this.basePointRange=b.closestPointRange,tl(this,”afterProcessData”)}cropData(e,x,b,E){let L=e.length,O,D,j=0,R=L;for(O=0;O=b){j=Math.max(0,O-1);break}for(D=O;DE){R=D+1;break}return{xData:e.slice(j,R),yData:x.slice(j,R),start:j,end:R}}generatePoints(){let e=this.options,x=this.processedData||e.data,b=this.processedXData,E=this.processedYData,L=this.pointClass,O=b.length,D=this.cropStart||0,j=this.hasGroupedData,R=e.keys,z=[],F=e.dataGrouping&&e.dataGrouping.groupAll?D:0,H,U,Y,V,q=this.data;if(!q&&!j){let e=[];e.length=x.length,q=this.data=e}for(R&&j&&(this.options.keys=!1),V=0;V0:V.length)||!D),U=x||this.getExtremesFromAll||this.options.getExtremesFromAll||this.cropped||!b||(ti[q+O]||Y)>=Z&&(ti[q-O]||Y)<=J,H&&U)if(K=V.length)for(;K--;)tu(V[K])&&(L[tt++]=V[K]);else L[tt++]=V;let ts={activeYData:L,dataMin:_(L),dataMax:$(L)};return tl(this,"afterGetExtremes",{dataExtremes:ts}),ts}applyExtremes(){let e=this.getExtremes();return this.dataMin=e.dataMin,this.dataMax=e.dataMax,e}getFirstValidPoint(e){let x=e.length,b=0,E=null;for(;null===E&&b1)&&(O.step=function(e,x){b&&b.apply(x,arguments),”width”===x.prop&&R?.element&&R.attr(L?”height”:”width”,e+99)}),j.addClass(“highcharts-animating”).animate(e,O)}}afterAnimate(){this.setClip(),tf(this.chart.sharedClips,(e,x,b)=>{e&&!this.chart.container.querySelector(`[clip-path=”url(#${e.id})”]`)&&(e.destroy(),delete b[x])}),this.finishedAnimating=!0,tl(this,”afterAnimate”)}drawPoints(e=this.points){let x,b,E,L,O,D,j,R=this.chart,z=R.styledMode,{colorAxis:F,options:H}=this,U=H.marker,Y=this[this.specialGroup||”markerGroup”],V=this.xAxis,q=tx(U.enabled,!V||!!V.isRadial||null,this.closestPointRangePx>=U.enabledThreshold*U.radius);if(!1!==U.enabled||this._hasPointMarkers)for(x=0;x0||b.hasImage)&&(b.graphic=E=R.renderer.symbol(e,j.x,j.y,j.width,j.height,D?O:U).add(Y),this.enabledDataSorting&&R.hasRendered&&(E.attr({x:b.startXPos}),L=”animate”)),E&&”animate”===L&&E[x?”show”:”hide”](x).animate(j),E){let e=this.pointAttribs(b,z||!b.selected?void 0:”select”);z?F&&E.css({fill:e.fill}):E[L](e)}E&&E.addClass(b.getClassName(),!0)}else E&&(b.graphic=E.destroy())}markerAttribs(e,x){let b=this.options,E=b.marker,L=e.marker||{},O=L.symbol||E.symbol,D={},j,R,z=tx(L.radius,E&&E.radius);x&&(j=E.states[x],z=tx((R=L.states&&L.states[x])&&R.radius,j&&j.radius,z&&z+(j&&j.radiusPlus||0))),e.hasImage=O&&0===O.indexOf(“url”),e.hasImage&&(z=0);let F=e.pos();return tu(z)&&F&&(b.crisp&&(F[0]=tt(F[0],e.hasImage?0:”rect”===O?E?.lineWidth||0:1)),D.x=F[0]-z,D.y=F[1]-z),z&&(D.width=D.height=2*z),D}pointAttribs(e,x){let b=this.options.marker,E=e&&e.options,L=E&&E.marker||{},O=E&&E.color,D=e&&e.color,j=e&&e.zone&&e.zone.color,R,z,F=this.color,H,U,Y=tx(L.lineWidth,b.lineWidth),V=1;return F=O||j||D||F,H=L.fillColor||b.fillColor||F,U=L.lineColor||b.lineColor||F,x=x||”normal”,R=b.states[x]||{},Y=tx((z=L.states&&L.states[x]||{}).lineWidth,R.lineWidth,Y+tx(z.lineWidthPlus,R.lineWidthPlus,0)),H=z.fillColor||R.fillColor||H,{stroke:U=z.lineColor||R.lineColor||U,”stroke-width”:Y,fill:H,opacity:V=tx(z.opacity,R.opacity,V)}}destroy(e){let x,b,E,L=this,O=L.chart,D=/AppleWebKit\/533/.test(q.navigator.userAgent),j=L.data||[];for(tl(L,”destroy”,{keepEventsForUpdate:e}),this.removeEvents(e),(L.axisTypes||[]).forEach(function(e){(E=L[e])&&E.series&&(to(E.series,L),E.isDirty=E.forceRedraw=!0)}),L.legendItem&&L.chart.legend.destroyItem(L),x=j.length;x–;)(b=j[x])&&b.destroy&&b.destroy();for(let e of L.zones)ti(e,void 0,!0);z.clearTimeout(L.animationTimeout),tf(L,function(e,x){e instanceof R&&!e.survive&&e[D&&”group”===x?”hide”:”destroy”]()}),O.hoverSeries===L&&(O.hoverSeries=void 0),to(O.series,L),O.orderItems(“series”),tf(L,function(x,b){e&&”hcEvents”===b||delete L[b]})}applyZones(){let{area:e,chart:x,graph:b,zones:E,points:L,xAxis:O,yAxis:D,zoneAxis:j}=this,{inverted:R,renderer:z}=x,F=this[`${j}Axis`],{isXAxis:H,len:U=0}=F||{},Y=(b?.strokeWidth()||0)/2+1,V=(e,x=0,b=0)=>{R&&(b=U-b);let{translated:E=0,lineClip:L}=e,O=b-E;L?.push([“L”,x,Math.abs(O){e.forEach((x,b)=>{(“M”===x[0]||”L”===x[0])&&(e[b]=[x[0],H?U-x[1]:x[1],H?x[2]:U-x[2]])})};if(E.forEach(e=>{e.lineClip=[],e.translated=Z(F.toPixels(tx(e.value,x),!0)||0,0,U)}),b&&!this.showLine&&b.hide(),e&&e.hide(),”y”===j&&L.length{let E=x.lineClip||[],L=Math.round(x.translated||0);O.reversed&&E.reverse();let{clip:j,simpleClip:F}=x,U=0,V=0,$=O.len,_=D.len;H?(U=L,$=K):(V=L,_=K);let Z=[[“M”,U,V],[“L”,$,V],[“L”,$,_],[“L”,U,_],[“Z”]],J=[Z[0],…E,Z[1],Z[2],…q,Z[3],Z[4]];q=E.reverse(),K=L,R&&(Y(J),e&&Y(Z)),j?(j.animate({d:J}),F?.animate({d:Z})):(j=x.clip=z.path(J),e&&(F=x.simpleClip=z.path(Z))),b&&x.graph?.clip(j),e&&x.area?.clip(F)})}else this.visible&&(b&&b.show(),e&&e.show())}plotGroup(e,x,b,E,L){let O=this[e],D=!O,j={visibility:b,zIndex:E||.1};return te(this.opacity)&&!this.chart.styledMode&&”inactive”!==this.state&&(j.opacity=this.opacity),O||(this[e]=O=this.chart.renderer.g().add(L)),O.addClass(“highcharts-“+x+” highcharts-series-“+this.index+” highcharts-“+this.type+”-series “+(te(this.colorIndex)?”highcharts-color-“+this.colorIndex+” “:””)+(this.options.className||””)+(O.hasClass(“highcharts-tracker”)?” highcharts-tracker”:””),!0),O.attr(j)[D?”attr”:”animate”](this.getPlotBox(x)),O}getPlotBox(e){let x=this.xAxis,b=this.yAxis,E=this.chart,L=E.inverted&&!E.polar&&x&&this.invertible&&”series”===e;return E.inverted&&(x=b,b=this.xAxis),{translateX:x?x.left:E.plotLeft,translateY:b?b.top:E.plotTop,rotation:90*!!L,rotationOriginX:L?(x.len-b.len)/2:0,rotationOriginY:L?(x.len+b.len)/2:0,scaleX:L?-1:1,scaleY:1}}removeEvents(e){let{eventsToUnbind:x}=this;e||tb(this),x.length&&(x.forEach(e=>{e()}),x.length=0)}render(){let e=this,{chart:x,options:b,hasRendered:E}=e,L=F(b.animation),O=e.visible?”inherit”:”hidden”,D=b.zIndex,j=x.seriesGroup,R=e.finishedAnimating?0:L.duration;tl(this,”render”),e.plotGroup(“group”,”series”,O,D,j),e.markerGroup=e.plotGroup(“markerGroup”,”markers”,O,D,j),!1!==b.clip&&e.setClip(),R&&e.animate?.(!0),e.drawGraph&&(e.drawGraph(),e.applyZones()),e.visible&&e.drawPoints(),e.drawDataLabels?.(),e.redrawPoints?.(),b.enableMouseTracking&&e.drawTracker?.(),R&&e.animate?.(),E||(R&&L.defer&&(R+=L.defer),e.animationTimeout=tv(()=>{e.afterAnimate()},R||0)),e.isDirty=!1,e.hasRendered=!0,tl(e,”afterRender”)}redraw(){let e=this.isDirty||this.isDirtyData;this.translate(),this.render(),e&&delete this.kdTree}reserveSpace(){return this.visible||!this.chart.options.chart.ignoreHiddenSeries}searchPoint(e,x){let{xAxis:b,yAxis:E}=this,L=this.chart.inverted;return this.searchKDTree({clientX:L?b.len-e.chartY+b.pos:e.chartX-b.pos,plotY:L?E.len-e.chartX+E.pos:e.chartY-E.pos},x,e)}buildKDTree(e){this.buildingKdTree=!0;let x=this,b=x.options.findNearestPointBy.indexOf(“y”)>-1?2:1;delete x.kdTree,tv(function(){x.kdTree=function e(b,E,L){let O,D,j=b?.length;if(j)return O=x.kdAxisArray[E%L],b.sort((e,x)=>(e[O]||0)-(x[O]||0)),{point:b[D=Math.floor(j/2)],left:e(b.slice(0,D),E+1,L),right:e(b.slice(D+1),E+1,L)}}(x.getValidPoints(void 0,!x.directTouch),b,b),x.buildingKdTree=!1},x.options.kdNow||e?.type===”touchstart”?0:1)}searchKDTree(e,x,b){let E=this,[L,O]=this.kdAxisArray,D=x?”distX”:”dist”,j=(E.options.findNearestPointBy||””).indexOf(“y”)>-1?2:1,R=!!E.isBubble;if(this.kdTree||this.buildingKdTree||this.buildKDTree(b),this.kdTree)return function e(x,b,j,z){let F,H,U,Y,V,q,K,$=b.point,_=E.kdAxisArray[j%z],Z,J,tt=$;F=x[L],H=$[L],U=te(F)&&te(H)?F-H:null,Y=x[O],V=$[O],q=te(Y)&&te(V)?Y-V:0,K=R&&$.marker?.radius||0,$.dist=Math.sqrt((U&&U*U||0)+q*q)-K,$.distX=te(U)?Math.abs(U)-K:Number.MAX_VALUE;let ti=(x[_]||0)-($[_]||0)+(R&&$.marker?.radius||0),ts=ti<0?"left":"right",to=ti<0?"right":"left";return b[ts]&&(tt=(Z=e(x,b[ts],j+1,z))[D]=0&&O<=(E?E.len:x.plotHeight)&&L>=0&&L<=(b?b.len:x.plotWidth)}drawTracker(){let e=this,x=e.options,b=x.trackByArea,E=[].concat((b?e.areaPath:e.graphPath)||[]),L=e.chart,O=L.pointer,D=L.renderer,j=L.options.tooltip?.snap||0,R=()=>{x.enableMouseTracking&&L.hoverSeries!==e&&e.onMouseOver()},z=”rgba(192,192,192,”+(V?1e-4:.002)+”)”,F=e.tracker;F?F.attr({d:E}):e.graph&&(e.tracker=F=D.path(E).attr({visibility:e.visible?”inherit”:”hidden”,zIndex:2}).addClass(b?”highcharts-tracker-area”:”highcharts-tracker-line”).add(e.group),L.styledMode||F.attr({“stroke-linecap”:”round”,”stroke-linejoin”:”round”,stroke:z,fill:b?z:”none”,”stroke-width”:e.graph.strokeWidth()+(b?0:2*j)}),[e.tracker,e.markerGroup,e.dataLabelsGroup].forEach(e=>{e&&(e.addClass(“highcharts-tracker”).on(“mouseover”,R).on(“mouseout”,e=>{O?.onTrackerMouseOut(e)}),x.cursor&&!L.styledMode&&e.css({cursor:x.cursor}),e.on(“touchstart”,R))})),tl(this,”afterDrawTracker”)}addPoint(e,x,b,E,L){let O,D,j=this.options,R=this.data,z=this.chart,F=this.xAxis,H=F&&F.hasNames&&F.names,U=j.data,Y=this.xData;x=tx(x,!0);let V={series:this};this.pointClass.prototype.applyOptions.apply(V,[e]);let q=V.x;if(D=Y.length,this.requireSorting&&qq;)D–;this.updateParallelArrays(V,”splice”,[D,0,0]),this.updateParallelArrays(V,D),H&&V.name&&(H[q]=V.name),U.splice(D,0,e),(O||this.processedData)&&(this.data.splice(D,0,null),this.processData()),”point”===j.legendType&&this.generatePoints(),b&&(R[0]&&R[0].remove?R[0].remove(!1):(R.shift(),this.updateParallelArrays(V,”shift”),U.shift())),!1!==L&&tl(this,”addPoint”,{point:V}),this.isDirty=!0,this.isDirtyData=!0,x&&z.redraw(E)}removePoint(e,x,b){let E=this,L=E.data,O=L[e],D=E.points,j=E.chart,R=function(){D&&D.length===L.length&&D.splice(e,1),L.splice(e,1),E.options.data.splice(e,1),E.updateParallelArrays(O||{series:E},”splice”,[e,1]),O&&O.destroy(),E.isDirty=!0,E.isDirtyData=!0,x&&j.redraw()};H(b,j),x=tx(x,!0),O?O.firePointEvent(“remove”,null,R):R()}remove(e,x,b,E){let L=this,O=L.chart;function D(){L.destroy(E),O.isDirtyLegend=O.isDirtyBox=!0,O.linkSeries(E),tx(e,!0)&&O.redraw(x)}!1!==b?tl(L,”remove”,null,D):D()}update(e,x){tl(this,”update”,{options:e=ts(e,this.userOptions)});let b=this,E=b.chart,L=b.userOptions,O=b.initialType||b.type,D=E.options.plotOptions,j=K[O].prototype,R=b.finishedAnimating&&{animation:!1},z={},F,H,U=[“colorIndex”,”eventOptions”,”navigatorSeries”,”symbolIndex”,”baseSeries”],Y=e.type||L.type||E.options.chart.type,V=!(this.hasDerivedData||Y&&Y!==this.type||void 0!==e.pointStart||void 0!==e.pointInterval||void 0!==e.relativeXValue||e.joinBy||e.mapData||[“dataGrouping”,”pointStart”,”pointInterval”,”pointIntervalUnit”,”keys”].some(e=>b.hasOptionChanged(e)));Y=Y||O,V&&(U.push(“data”,”isDirtyData”,”isDirtyCanvas”,”points”,”processedData”,”processedXData”,”processedYData”,”xIncrement”,”cropped”,”_hasPointMarkers”,”hasDataLabels”,”nodes”,”layout”,”level”,”mapMap”,”mapData”,”minY”,”maxY”,”minX”,”maxX”,”transformGroups”),!1!==e.visible&&U.push(“area”,”graph”),b.parallelArrays.forEach(function(e){U.push(e+”Data”)}),e.data&&(e.dataSorting&&tn(b.options.dataSorting,e.dataSorting),this.setData(e.data,!1))),e=tm(L,{index:void 0===L.index?b.index:L.index,pointStart:D?.series?.pointStart??L.pointStart??b.xData?.[0]},!V&&{data:b.options.data},e,R),V&&e.data&&(e.data=b.options.data),(U=[“group”,”markerGroup”,”dataLabelsGroup”,”transformGroup”].concat(U)).forEach(function(e){U[e]=b[e],delete b[e]});let q=!1;if(K[Y]){if(q=Y!==b.type,b.remove(!1,!1,!1,!0),q)if(E.propFromSeries(),Object.setPrototypeOf)Object.setPrototypeOf(b,K[Y].prototype);else{let e=Object.hasOwnProperty.call(b,”hcEvents”)&&b.hcEvents;for(H in j)b[H]=void 0;tn(b,K[Y].prototype),e?b.hcEvents=e:delete b.hcEvents}}else tr(17,!0,E,{missingModuleFor:Y});if(U.forEach(function(e){b[e]=U[e]}),b.init(E,e),V&&this.points)for(let e of(!1===(F=b.options).visible?(z.graphic=1,z.dataLabel=1):(this.hasMarkerChanged(F,L)&&(z.graphic=1),b.hasDataLabels?.()||(z.dataLabel=1)),this.points))e&&e.series&&(e.resolveColor(),Object.keys(z).length&&e.destroyElements(z),!1===F.showInLegend&&e.legendItem&&E.legend.destroyItem(e));b.initialType=O,E.linkSeries(),E.setSortedData(),q&&b.linkedSeries.length&&(b.isDirtyData=!0),tl(this,”afterUpdate”),tx(x,!0)&&E.redraw(!!V&&void 0)}setName(e){this.name=this.options.name=this.userOptions.name=e,this.chart.isDirtyLegend=!0}hasOptionChanged(e){let x=this.chart,b=this.options[e],E=x.options.plotOptions,L=this.userOptions[e],O=tx(E?.[this.type]?.[e],E?.series?.[e]);return L&&!te(O)?b!==L:b!==tx(O,b)}onMouseOver(){let e=this.chart,x=e.hoverSeries,b=e.pointer;b?.setHoverChartIndex(),x&&x!==this&&x.onMouseOut(),this.options.events.mouseOver&&tl(this,”mouseOver”),this.setState(“hover”),e.hoverSeries=this}onMouseOut(){let e=this.options,x=this.chart,b=x.tooltip,E=x.hoverPoint;x.hoverSeries=null,E&&E.onMouseOut(),this&&e.events.mouseOut&&tl(this,”mouseOut”),b&&!this.stickyTracking&&(!b.shared||this.noSharedTooltip)&&b.hide(),x.series.forEach(function(e){e.setState(“”,!0)})}setState(e,x){let b=this,E=b.options,L=b.graph,O=E.inactiveOtherPoints,D=E.states,j=tx(D[e||”normal”]&&D[e||”normal”].animation,b.chart.options.chart.animation),R=E.lineWidth,z=E.opacity;if(e=e||””,b.state!==e&&([b.group,b.markerGroup,b.dataLabelsGroup].forEach(function(x){x&&(b.state&&x.removeClass(“highcharts-series-“+b.state),e&&x.addClass(“highcharts-series-“+e))}),b.state=e,!b.chart.styledMode)){if(D[e]&&!1===D[e].enabled)return;if(e&&(R=D[e].lineWidth||R+(D[e].lineWidthPlus||0),z=tx(D[e].opacity,z)),L&&!L.dashstyle&&tu(R))for(let e of[L,…this.zones.map(e=>e.graph)])e?.animate({“stroke-width”:R},j);O||[b.group,b.markerGroup,b.dataLabelsGroup,b.labelBySeries].forEach(function(e){e&&e.animate({opacity:z},j)})}x&&O&&b.points&&b.setAllPointsToState(e||void 0)}setAllPointsToState(e){this.points.forEach(function(x){x.setState&&x.setState(e)})}setVisible(e,x){let b=this,E=b.chart,L=E.options.chart.ignoreHiddenSeries,O=b.visible;b.visible=e=b.options.visible=b.userOptions.visible=void 0===e?!O:e;let D=e?”show”:”hide”;[“group”,”dataLabelsGroup”,”markerGroup”,”tracker”,”tt”].forEach(e=>{b[e]?.[D]()}),(E.hoverSeries===b||E.hoverPoint?.series===b)&&b.onMouseOut(),b.legendItem&&E.legend.colorizeItem(b,e),b.isDirty=!0,b.options.stacking&&E.series.forEach(e=>{e.options.stacking&&e.visible&&(e.isDirty=!0)}),b.linkedSeries.forEach(x=>{x.setVisible(e,!1)}),L&&(E.isDirtyBox=!0),tl(b,D),!1!==x&&E.redraw()}show(){this.setVisible(!0)}hide(){this.setVisible(!1)}select(e){this.selected=e=this.options.selected=void 0===e?!this.selected:e,this.checkbox&&(this.checkbox.checked=e),tl(this,e?”select”:”unselect”)}shouldShowTooltip(e,x,b={}){return b.series=this,b.visiblePlotOnly=!0,this.chart.isInsidePlot(e,x,b)}drawLegendSymbol(e,x){L[this.options.legendSymbol||”rectangle”]?.call(this,e,x)}};return X.defaultOptions=D,X.types=j.seriesTypes,X.registerType=j.registerSeriesType,tn(X.prototype,{axisTypes:[“xAxis”,”yAxis”],coll:”series”,colorCounter:0,directTouch:!1,invertible:!0,isCartesian:!0,kdAxisArray:[“clientX”,”plotY”],parallelArrays:[“x”,”y”],pointClass:O,requireSorting:!0,sorted:!0}),j.series=X,X}),b(x,”Core/Chart/Chart.js”,[x[“Core/Animation/AnimationUtilities.js”],x[“Core/Axis/Axis.js”],x[“Core/Defaults.js”],x[“Core/Templating.js”],x[“Core/Foundation.js”],x[“Core/Globals.js”],x[“Core/Renderer/RendererRegistry.js”],x[“Core/Series/Series.js”],x[“Core/Series/SeriesRegistry.js”],x[“Core/Renderer/SVG/SVGRenderer.js”],x[“Core/Time.js”],x[“Core/Utilities.js”],x[“Core/Renderer/HTML/AST.js”],x[“Core/Axis/Tick.js”]],function(e,x,b,E,L,O,D,j,R,z,F,H,U,Y){let{animate:V,animObject:q,setAnimation:K}=e,{defaultOptions:$,defaultTime:_}=b,{numberFormat:Z}=E,{registerEventOptions:J}=L,{charts:tt,doc:te,marginNames:ti,svg:ts,win:to}=O,{seriesTypes:tr}=R,{addEvent:tn,attr:ta,createElement:tl,css:th,defined:td,diffObjects:tc,discardElement:tp,erase:tu,error:tg,extend:tm,find:tf,fireEvent:tx,getStyle:tb,isArray:ty,isNumber:tv,isObject:tS,isString:tC,merge:tk,objectEach:tM,pick:tw,pInt:tA,relativeLength:tT,removeEvent:tP,splat:tE,syncTimeout:tL,uniqueKey:tO}=H;let Q=class Q{static chart(e,x,b){return new Q(e,x,b)}constructor(e,x,b){this.sharedClips={};let E=[…arguments];(tC(e)||e.nodeName)&&(this.renderTo=E.shift()),this.init(E[0],E[1])}setZoomOptions(){let e=this.options.chart,x=e.zooming;this.zooming={…x,type:tw(e.zoomType,x.type),key:tw(e.zoomKey,x.key),pinchType:tw(e.pinchType,x.pinchType),singleTouch:tw(e.zoomBySingleTouch,x.singleTouch,!1),resetButton:tk(x.resetButton,e.resetZoomButton)}}init(e,x){tx(this,”init”,{args:arguments},function(){let b=tk($,e),E=b.chart;this.userOptions=tm({},e),this.margin=[],this.spacing=[],this.labelCollectors=[],this.callback=x,this.isResizing=0,this.options=b,this.axes=[],this.series=[],this.time=e.time&&Object.keys(e.time).length?new F(e.time):O.time,this.numberFormatter=E.numberFormatter||Z,this.styledMode=E.styledMode,this.hasCartesianSeries=E.showAxes,this.index=tt.length,tt.push(this),O.chartCount++,J(this,E),this.xAxis=[],this.yAxis=[],this.pointCount=this.colorCounter=this.symbolCounter=0,this.setZoomOptions(),tx(this,”afterInit”),this.firstRender()})}initSeries(e){let x=this.options.chart,b=e.type||x.type,E=tr[b];E||tg(17,!0,this,{missingModuleFor:b});let L=new E;return”function”==typeof L.init&&L.init(this,e),L}setSortedData(){this.getSeriesOrderByLinks().forEach(function(e){e.points||e.data||!e.enabledDataSorting||e.setData(e.options.data,!1)})}getSeriesOrderByLinks(){return this.series.concat().sort(function(e,x){return e.linkedSeries.length||x.linkedSeries.length?x.linkedSeries.length-e.linkedSeries.length:0})}orderItems(e,x=0){let b=this[e],E=this.options[e]=tE(this.options[e]).slice(),L=this.userOptions[e]=this.userOptions[e]?tE(this.userOptions[e]).slice():[];if(this.hasRendered&&(E.splice(x),L.splice(x)),b)for(let e=x,O=b.length;e=Math.max(R+O,e.pos)&&x<=Math.min(R+O+H.width,e.pos+e.len)||(V.isInsidePlot=!1)}if(!b.ignoreY&&V.isInsidePlot){let e=!E&&b.axis&&!b.axis.isXAxis&&b.axis||F&&(E?F.xAxis:F.yAxis)||{pos:D,len:1/0},x=b.paneCoordinates?e.pos+Y:D+Y;x>=Math.max(z+D,e.pos)&&x<=Math.min(z+D+H.height,e.pos+e.len)||(V.isInsidePlot=!1)}return tx(this,"afterIsInsidePlot",V),V.isInsidePlot}redraw(e){tx(this,"beforeRedraw");let x=this.hasCartesianSeries?this.axes:this.colorAxis||[],b=this.series,E=this.pointer,L=this.legend,O=this.userOptions.legend,D=this.renderer,j=D.isHidden(),R=[],z,F,H,U=this.isDirtyBox,Y=this.isDirtyLegend,V;for(D.rootFontSize=D.boxWrapper.getStyle("font-size"),this.setResponsive&&this.setResponsive(!1),K(!!this.hasRendered&&e,this),j&&this.temporaryDisplay(),this.layOutTitles(!1),H=b.length;H--;)if(((V=b[H]).options.stacking||V.options.centerInCategory)&&(F=!0,V.isDirty)){z=!0;break}if(z)for(H=b.length;H--;)(V=b[H]).options.stacking&&(V.isDirty=!0);b.forEach(function(e){e.isDirty&&("point"===e.options.legendType?("function"==typeof e.updateTotals&&e.updateTotals(),Y=!0):O&&(O.labelFormatter||O.labelFormat)&&(Y=!0)),e.isDirtyData&&tx(e,"updatedData")}),Y&&L&&L.options.enabled&&(L.render(),this.isDirtyLegend=!1),F&&this.getStacks(),x.forEach(function(e){e.updateNames(),e.setScale()}),this.getMargins(),x.forEach(function(e){e.isDirty&&(U=!0)}),x.forEach(function(e){let x=e.min+","+e.max;e.extKey!==x&&(e.extKey=x,R.push(function(){tx(e,"afterSetExtremes",tm(e.eventArgs,e.getExtremes())),delete e.eventArgs})),(U||F)&&e.redraw()}),U&&this.drawChartBox(),tx(this,"predraw"),b.forEach(function(e){(U||e.isDirty)&&e.visible&&e.redraw(),e.isDirtyData=!1}),E&&E.reset(!0),D.draw(),tx(this,"redraw"),tx(this,"render"),j&&this.temporaryDisplay(!0),R.forEach(function(e){e.call()})}get(e){let x=this.series;function b(x){return x.id===e||x.options&&x.options.id===e}let E=tf(this.axes,b)||tf(this.series,b);for(let e=0;!E&&e(x.getPointsCollection().forEach(x=>{tw(x.selectedStaging,x.selected)&&e.push(x)}),e),[])}getSelectedSeries(){return this.series.filter(function(e){return e.selected})}setTitle(e,x,b){this.applyDescription(“title”,e),this.applyDescription(“subtitle”,x),this.applyDescription(“caption”,void 0),this.layOutTitles(b)}applyDescription(e,x){let b=this,E=this.options[e]=tk(this.options[e],x),L=this[e];L&&x&&(this[e]=L=L.destroy()),E&&!L&&((L=this.renderer.text(E.text,0,0,E.useHTML).attr({align:E.align,class:”highcharts-“+e,zIndex:E.zIndex||4}).add()).update=function(x,E){b.applyDescription(e,x),b.layOutTitles(E)},this.styledMode||L.css(tm(“title”===e?{fontSize:this.options.isStock?”1em”:”1.2em”}:{},E.style)),this[e]=L)}layOutTitles(e=!0){let x=[0,0,0],b=this.renderer,E=this.spacingBox;[“title”,”subtitle”,”caption”].forEach(function(e){let L=this[e],O=this.options[e],D=O.verticalAlign||”top”,j=”title”===e?”top”===D?-3:0:”top”===D?x[0]+2:0;if(L){L.css({width:(O.width||E.width+(O.widthAdjust||0))+”px”});let e=b.fontMetrics(L).b,R=Math.round(L.getBBox(O.useHTML).height);L.align(tm({y:”bottom”===D?e:j+e,height:R},O),!1,”spacingBox”),O.floating||(“top”===D?x[0]=Math.ceil(x[0]+R):”bottom”===D&&(x[2]=Math.ceil(x[2]+R)))}},this),x[0]&&”top”===(this.options.title.verticalAlign||”top”)&&(x[0]+=this.options.title.margin),x[2]&&”bottom”===this.options.caption.verticalAlign&&(x[2]+=this.options.caption.margin);let L=!this.titleOffset||this.titleOffset.join(“,”)!==x.join(“,”);this.titleOffset=x,tx(this,”afterLayOutTitles”),!this.isDirtyBox&&L&&(this.isDirtyBox=this.isDirtyLegend=L,this.hasRendered&&e&&this.isDirtyBox&&this.redraw())}getContainerBox(){return{width:tb(this.renderTo,”width”,!0)||0,height:tb(this.renderTo,”height”,!0)||0}}getChartSize(){let e=this.options.chart,x=e.width,b=e.height,E=this.getContainerBox();this.chartWidth=Math.max(0,x||E.width||600),this.chartHeight=Math.max(0,tT(b,this.chartWidth)||(E.height>1?E.height:400)),this.containerBox=E}temporaryDisplay(e){let x=this.renderTo,b;if(e)for(;x&&x.style;)x.hcOrigStyle&&(th(x,x.hcOrigStyle),delete x.hcOrigStyle),x.hcOrigDetached&&(te.body.removeChild(x),x.hcOrigDetached=!1),x=x.parentNode;else for(;x&&x.style&&(te.body.contains(x)||x.parentNode||(x.hcOrigDetached=!0,te.body.appendChild(x)),(“none”===tb(x,”display”,!1)||x.hcOricDetached)&&(x.hcOrigStyle={display:x.style.display,height:x.style.height,overflow:x.style.overflow},b={display:”block”,overflow:”hidden”},x!==this.renderTo&&(b.height=0),th(x,b),x.offsetWidth||x.style.setProperty(“display”,”block”,”important”)),(x=x.parentNode)!==te.body););}setClassName(e){this.container.className=”highcharts-container “+(e||””)}getContainer(){let e=this.options,x=e.chart,b=”data-highcharts-chart”,E=tO(),L,O=this.renderTo;O||(this.renderTo=O=x.renderTo),tC(O)&&(this.renderTo=O=te.getElementById(O)),O||tg(13,!0,this);let j=tA(ta(O,b));tv(j)&&tt[j]&&tt[j].hasRendered&&tt[j].destroy(),ta(O,b,this.index),O.innerHTML=U.emptyHTML,x.skipClone||O.offsetWidth||this.temporaryDisplay(),this.getChartSize();let R=this.chartHeight,F=this.chartWidth;th(O,{overflow:”hidden”}),this.styledMode||(L=tm({position:”relative”,overflow:”hidden”,width:F+”px”,height:R+”px”,textAlign:”left”,lineHeight:”normal”,zIndex:0,”-webkit-tap-highlight-color”:”rgba(0,0,0,0)”,userSelect:”none”,”touch-action”:”manipulation”,outline:”none”},x.style||{}));let H=tl(“div”,{id:E},L,O);this.container=H,this.getChartSize(),F===this.chartWidth||(F=this.chartWidth,this.styledMode||th(H,{width:tw(x.style?.width,F+”px”)})),this.containerBox=this.getContainerBox(),this._cursor=H.style.cursor;let Y=x.renderer||!ts?D.getRendererType(x.renderer):z;if(this.renderer=new Y(H,F,R,void 0,x.forExport,e.exporting&&e.exporting.allowHTML,this.styledMode),K(void 0,this),this.setClassName(x.className),this.styledMode)for(let x in e.defs)this.renderer.definition(e.defs[x]);else this.renderer.setStyle(x.style);this.renderer.chartIndex=this.index,tx(this,”afterGetContainer”)}getMargins(e){let{spacing:x,margin:b,titleOffset:E}=this;this.resetMargins(),E[0]&&!td(b[0])&&(this.plotTop=Math.max(this.plotTop,E[0]+x[0])),E[2]&&!td(b[2])&&(this.marginBottom=Math.max(this.marginBottom,E[2]+x[2])),this.legend&&this.legend.display&&this.legend.adjustMargins(b,x),tx(this,”getMargins”),e||this.getAxisMargins()}getAxisMargins(){let e=this,x=e.axisOffset=[0,0,0,0],b=e.colorAxis,E=e.margin,L=function(e){e.forEach(function(e){e.visible&&e.getOffset()})};e.hasCartesianSeries?L(e.axes):b&&b.length&&L(b),ti.forEach(function(b,L){td(E[L])||(e[b]+=x[L])}),e.setChartSize()}getOptions(){return tc(this.userOptions,$)}reflow(e){let x=this,b=x.containerBox,E=x.getContainerBox();delete x.pointer?.chartPosition,!x.isPrinting&&!x.isResizing&&b&&E.width&&((E.width!==b.width||E.height!==b.height)&&(H.clearTimeout(x.reflowTimeout),x.reflowTimeout=tL(function(){x.container&&x.setSize(void 0,void 0,!1)},100*!!e)),x.containerBox=E)}setReflow(){let e=this,x=x=>{e.options?.chart.reflow&&e.hasLoaded&&e.reflow(x)};if(“function”==typeof ResizeObserver)new ResizeObserver(x).observe(e.renderTo);else{let e=tn(to,”resize”,x);tn(this,”destroy”,e)}}setSize(e,x,b){let E=this,L=E.renderer;E.isResizing+=1,K(b,E);let O=L.globalAnimation;E.oldChartHeight=E.chartHeight,E.oldChartWidth=E.chartWidth,void 0!==e&&(E.options.chart.width=e),void 0!==x&&(E.options.chart.height=x),E.getChartSize();let{chartWidth:D,chartHeight:j,scrollablePixelsX:R=0,scrollablePixelsY:z=0}=E;(E.isDirtyBox||D!==E.oldChartWidth||j!==E.oldChartHeight)&&(E.styledMode||(O?V:th)(E.container,{width:`${D+R}px`,height:`${j+z}px`},O),E.setChartSize(!0),L.setSize(D,j,O),E.axes.forEach(function(e){e.isDirty=!0,e.setScale()}),E.isDirtyLegend=!0,E.isDirtyBox=!0,E.layOutTitles(),E.getMargins(),E.redraw(O),E.oldChartHeight=void 0,tx(E,”resize”),setTimeout(()=>{E&&tx(E,”endResize”)},q(O).duration)),E.isResizing-=1}setChartSize(e){let x,b,E,L,{chartHeight:O,chartWidth:D,inverted:j,spacing:R,renderer:z}=this,F=this.clipOffset,H=Math[j?”floor”:”round”];this.plotLeft=x=Math.round(this.plotLeft),this.plotTop=b=Math.round(this.plotTop),this.plotWidth=E=Math.max(0,Math.round(D-x-this.marginRight)),this.plotHeight=L=Math.max(0,Math.round(O-b-this.marginBottom)),this.plotSizeX=j?L:E,this.plotSizeY=j?E:L,this.spacingBox=z.spacingBox={x:R[3],y:R[0],width:D-R[3]-R[1],height:O-R[0]-R[2]},this.plotBox=z.plotBox={x:x,y:b,width:E,height:L},F&&(this.clipBox={x:H(F[3]),y:H(F[0]),width:H(this.plotSizeX-F[1]-F[3]),height:H(this.plotSizeY-F[0]-F[2])}),e||(this.axes.forEach(function(e){e.setAxisSize(),e.setAxisTranslation()}),z.alignElements()),tx(this,”afterSetChartSize”,{skipAxes:e})}resetMargins(){tx(this,”resetMargins”);let e=this,x=e.options.chart,b=x.plotBorderWidth||0,E=b/2;[“margin”,”spacing”].forEach(function(b){let E=x[b],L=tS(E)?E:[E,E,E,E];[“Top”,”Right”,”Bottom”,”Left”].forEach(function(E,O){e[b][O]=tw(x[b+E],L[O])})}),ti.forEach(function(x,b){e[x]=tw(e.margin[b],e.spacing[b])}),e.axisOffset=[0,0,0,0],e.clipOffset=[E,E,E,E],e.plotBorderWidth=b}drawChartBox(){let e=this.options.chart,x=this.renderer,b=this.chartWidth,E=this.chartHeight,L=this.styledMode,O=this.plotBGImage,D=e.backgroundColor,j=e.plotBackgroundColor,R=e.plotBackgroundImage,z=this.plotLeft,F=this.plotTop,H=this.plotWidth,U=this.plotHeight,Y=this.plotBox,V=this.clipRect,q=this.clipBox,K=this.chartBackground,$=this.plotBackground,_=this.plotBorder,Z,J,tt,te=”animate”;K||(this.chartBackground=K=x.rect().addClass(“highcharts-background”).add(),te=”attr”),L?Z=J=K.strokeWidth():(J=(Z=e.borderWidth||0)+8*!!e.shadow,tt={fill:D||”none”},(Z||K[“stroke-width”])&&(tt.stroke=e.borderColor,tt[“stroke-width”]=Z),K.attr(tt).shadow(e.shadow)),K[te]({x:J/2,y:J/2,width:b-J-Z%2,height:E-J-Z%2,r:e.borderRadius}),te=”animate”,$||(te=”attr”,this.plotBackground=$=x.rect().addClass(“highcharts-plot-background”).add()),$[te](Y),!L&&($.attr({fill:j||”none”}).shadow(e.plotShadow),R&&(O?(R!==O.attr(“href”)&&O.attr(“href”,R),O.animate(Y)):this.plotBGImage=x.image(R,z,F,H,U).add())),V?V.animate({width:q.width,height:q.height}):this.clipRect=x.clipRect(q),te=”animate”,_||(te=”attr”,this.plotBorder=_=x.rect().addClass(“highcharts-plot-border”).attr({zIndex:1}).add()),L||_.attr({stroke:e.plotBorderColor,”stroke-width”:e.plotBorderWidth||0,fill:”none”}),_[te](_.crisp({x:z,y:F,width:H,height:U},-_.strokeWidth())),this.isDirtyBox=!1,tx(this,”afterDrawChartBox”)}propFromSeries(){let e,x,b,E=this,L=E.options.chart,O=E.options.series;[“inverted”,”angular”,”polar”].forEach(function(D){for(x=tr[L.type],b=L[D]||x&&x.prototype[D],e=O&&O.length;!b&&e–;)(x=tr[O[e].type])&&x.prototype[D]&&(b=!0);E[D]=b})}linkSeries(e){let x=this,b=x.series;b.forEach(function(e){e.linkedSeries.length=0}),b.forEach(function(e){let{linkedTo:b}=e.options;if(tC(b)){let E;(E=”:previous”===b?x.series[e.index-1]:x.get(b))&&E.linkedParent!==e&&(E.linkedSeries.push(e),e.linkedParent=E,E.enabledDataSorting&&e.setDataSortingOptions(),e.visible=tw(e.options.visible,E.options.visible,e.visible))}}),tx(this,”afterLinkSeries”,{isUpdating:e})}renderSeries(){this.series.forEach(function(e){e.translate(),e.render()})}render(){let e=this.axes,x=this.colorAxis,b=this.renderer,E=this.options.chart.axisLayoutRuns||2,L=e=>{e.forEach(e=>{e.visible&&e.render()})},O=0,D=!0,j,R=0;for(let x of(this.setTitle(),tx(this,”beforeMargins”),this.getStacks?.(),this.getMargins(!0),this.setChartSize(),e)){let{options:e}=x,{labels:b}=e;if(this.hasCartesianSeries&&x.horiz&&x.visible&&b.enabled&&x.series.length&&”colorAxis”!==x.coll&&!this.polar){O=e.tickLength,x.createGroups();let E=new Y(x,0,””,!0),L=E.createLabel(“x”,b);if(E.destroy(),L&&tw(b.reserveSpace,!tv(e.crossing))&&(O=L.getBBox().height+b.distance+Math.max(e.offset||0,0)),O){L?.destroy();break}}}for(this.plotHeight=Math.max(this.plotHeight-O,0);(D||j||E>1)&&R(R?1:1.1),j=b/this.plotHeight>(R?1:1.05),R++}this.drawChartBox(),this.hasCartesianSeries?L(e):x&&x.length&&L(x),this.seriesGroup||(this.seriesGroup=b.g(“series-group”).attr({zIndex:3}).shadow(this.options.chart.seriesGroupShadow).add()),this.renderSeries(),this.addCredits(),this.setResponsive&&this.setResponsive(),this.hasRendered=!0}addCredits(e){let x=this,b=tk(!0,this.options.credits,e);b.enabled&&!this.credits&&(this.credits=this.renderer.text(b.text+(this.mapCredits||””),0,0).addClass(“highcharts-credits”).on(“click”,function(){b.href&&(to.location.href=b.href)}).attr({align:b.position.align,zIndex:8}),x.styledMode||this.credits.css(b.style),this.credits.add().align(b.position),this.credits.update=function(e){x.credits=x.credits.destroy(),x.addCredits(e)})}destroy(){let e,x=this,b=x.axes,E=x.series,L=x.container,D=L&&L.parentNode;for(tx(x,”destroy”),x.renderer.forExport?tu(tt,x):tt[x.index]=void 0,O.chartCount–,x.renderTo.removeAttribute(“data-highcharts-chart”),tP(x),e=b.length;e–;)b[e]=b[e].destroy();for(this.scroller&&this.scroller.destroy&&this.scroller.destroy(),e=E.length;e–;)E[e]=E[e].destroy();[“title”,”subtitle”,”chartBackground”,”plotBackground”,”plotBGImage”,”plotBorder”,”seriesGroup”,”clipRect”,”credits”,”pointer”,”rangeSelector”,”legend”,”resetZoomButton”,”tooltip”,”renderer”].forEach(function(e){let b=x[e];b&&b.destroy&&(x[e]=b.destroy())}),L&&(L.innerHTML=U.emptyHTML,tP(L),D&&tp(L)),tM(x,function(e,b){delete x[b]})}firstRender(){let e=this,x=e.options;e.getContainer(),e.resetMargins(),e.setChartSize(),e.propFromSeries(),e.getAxes();let b=ty(x.series)?x.series:[];x.series=[],b.forEach(function(x){e.initSeries(x)}),e.linkSeries(),e.setSortedData(),tx(e,”beforeRender”),e.render(),e.pointer?.getChartPosition(),e.renderer.imgCount||e.hasLoaded||e.onload(),e.temporaryDisplay(!0)}onload(){this.callbacks.concat([this.callback]).forEach(function(e){e&&void 0!==this.index&&e.apply(this,[this])},this),tx(this,”load”),tx(this,”render”),td(this.index)&&this.setReflow(),this.warnIfA11yModuleNotLoaded(),this.hasLoaded=!0}warnIfA11yModuleNotLoaded(){let{options:e,title:x}=this;!e||this.accessibility||(this.renderer.boxWrapper.attr({role:”img”,”aria-label”:(x&&x.element.textContent||””).replace(/this.transform({reset:!0,trigger:”zoom”}))}pan(e,x){let b=this,E=”object”==typeof x?x:{enabled:x,type:”x”},L=E.type,O=L&&b[({x:”xAxis”,xy:”axes”,y:”yAxis”})[L]].filter(e=>e.options.panningEnabled&&!e.options.isInternal),D=b.options.chart;D?.panning&&(D.panning=E),tx(this,”pan”,{originalEvent:e},()=>{b.transform({axes:O,event:e,to:{x:e.chartX-(b.mouseDownX||0),y:e.chartY-(b.mouseDownY||0)},trigger:”pan”}),th(b.container,{cursor:”move”})})}transform(e){let{axes:x=this.axes,event:b,from:E={},reset:L,selection:O,to:D={},trigger:j}=e,{inverted:R}=this,z=!1,F;for(let e of(this.hoverPoints?.forEach(e=>e.setState()),x)){let{horiz:x,len:H,minPointOffset:U=0,options:Y,reversed:V}=e,q=x?”width”:”height”,K=x?”x”:”y”,$=tw(D[q],e.len),_=tw(E[q],e.len),Z=10>Math.abs($)?1:$/_,J=(E[K]||0)+_/2-e.pos,tt=J-((D[K]??e.pos)+$/2-e.pos)/Z,te=V&&!R||!V&&R?-1:1;if(!L&&(J<0||J>e.len))continue;let ti=e.toValue(tt,!0)+(O?0:U*te),ts=e.toValue(tt+H/Z,!0)-(O?0:U*te||0),to=e.allExtremes;if(ti>ts&&([ti,ts]=[ts,ti]),1===Z&&!L&&”yAxis”===e.coll&&!to){for(let x of e.series){let e=x.getExtremes(x.getProcessedData(!0).yData,!0);to??(to={dataMin:Number.MAX_VALUE,dataMax:-Number.MAX_VALUE}),tv(e.dataMin)&&tv(e.dataMax)&&(to.dataMin=Math.min(e.dataMin,to.dataMin),to.dataMax=Math.max(e.dataMax,to.dataMax))}e.allExtremes=to}let{dataMin:tr,dataMax:tn,min:ta,max:tl}=tm(e.getExtremes(),to||{}),th=tr??Y.min,tc=tn??Y.max,tp=ts-ti,tu=e.categories?0:Math.min(tp,tc-th),tg=th-tu*(td(Y.min)?0:Y.minPadding),tf=tc+tu*(td(Y.max)?0:Y.maxPadding),tx=e.allowZoomOutside||1===Z||”zoom”!==j&&Z>1,tb=Math.min(Y.min??tg,tg,tx?ta:tg),ty=Math.max(Y.max??tf,tf,tx?tl:tf);(!e.isOrdinal||1!==Z||L)&&(ti=1&&(ts=ti+tp)),ts>ty&&(ts=ty,Z>=1&&(ti=ts-tp)),(L||e.series.length&&(ti!==ta||ts!==tl)&&ti>=tb&&ts<=ty)&&(O?O[e.coll].push({axis:e,min:ti,max:ts}):(e.isPanning="zoom"!==j,e.setExtremes(L?void 0:ti,L?void 0:ts,!1,!1,{move:tt,trigger:j,scale:Z}),!L&&(ti>tb||ts{delete e.selection,e.trigger=”zoom”,this.transform(e)}):(F&&!this.resetZoomButton?this.showResetZoom():!F&&this.resetZoomButton&&(this.resetZoomButton=this.resetZoomButton.destroy()),this.redraw(“zoom”===j&&(this.options.chart.animation??this.pointCount<100)))),z}};return tm(Q.prototype,{callbacks:[],collectionsWithInit:{xAxis:[Q.prototype.addAxis,[!0]],yAxis:[Q.prototype.addAxis,[!1]],series:[Q.prototype.addSeries]},collectionsWithUpdate:["xAxis","yAxis","series"],propsRequireDirtyBox:["backgroundColor","borderColor","borderWidth","borderRadius","plotBackgroundColor","plotBackgroundImage","plotBorderColor","plotBorderWidth","plotShadow","shadow"],propsRequireReflow:["margin","marginTop","marginRight","marginBottom","marginLeft","spacing","spacingTop","spacingRight","spacingBottom","spacingLeft"],propsRequireUpdateSeries:["chart.inverted","chart.polar","chart.ignoreHiddenSeries","chart.type","colors","plotOptions","time","tooltip"]}),Q}),b(x,"Extensions/ScrollablePlotArea.js",[x["Core/Animation/AnimationUtilities.js"],x["Core/Globals.js"],x["Core/Renderer/RendererRegistry.js"],x["Core/Utilities.js"]],function(e,x,b,E){let{stop:L}=e,{composed:O}=x,{addEvent:D,createElement:j,css:R,defined:z,merge:F,pushUnique:H}=E;function U(){let e=this.scrollablePlotArea;(this.scrollablePixelsX||this.scrollablePixelsY)&&!e&&(this.scrollablePlotArea=e=new g(this)),e?.applyFixed()}function Y(){this.chart.scrollablePlotArea&&(this.chart.scrollablePlotArea.isDirty=!0)}let g=class g{static compose(e,x,b){H(O,this.compose)&&(D(e,"afterInit",Y),D(x,"afterSetChartSize",e=>this.afterSetSize(e.target,e)),D(x,”render”,U),D(b,”show”,Y))}static afterSetSize(e,x){let b,E,L,{minWidth:O,minHeight:D}=e.options.chart.scrollablePlotArea||{},{clipBox:j,plotBox:R,inverted:H,renderer:U}=e;if(!U.forExport&&(O?(e.scrollablePixelsX=b=Math.max(0,O-e.chartWidth),b&&(e.scrollablePlotBox=F(e.plotBox),R.width=e.plotWidth+=b,j[H?”height”:”width”]+=b,L=!0)):D&&(e.scrollablePixelsY=E=Math.max(0,D-e.chartHeight),z(E)&&(e.scrollablePlotBox=F(e.plotBox),R.height=e.plotHeight+=E,j[H?”width”:”height”]+=E,L=!1)),z(L)&&!x.skipAxes))for(let x of e.axes)x.horiz===L&&(x.setAxisSize(),x.setAxisTranslation())}constructor(e){let x,E=e.options.chart,L=b.getRendererType(),O=E.scrollablePlotArea||{},z=this.moveFixedElements.bind(this),F={WebkitOverflowScrolling:”touch”,overflowX:”hidden”,overflowY:”hidden”};e.scrollablePixelsX&&(F.overflowX=”auto”),e.scrollablePixelsY&&(F.overflowY=”auto”),this.chart=e;let H=this.parentDiv=j(“div”,{className:”highcharts-scrolling-parent”},{position:”relative”},e.renderTo),U=this.scrollingContainer=j(“div”,{className:”highcharts-scrolling”},F,H),Y=this.innerContainer=j(“div”,{className:”highcharts-inner-container”},void 0,U),V=this.fixedDiv=j(“div”,{className:”highcharts-fixed”},{position:”absolute”,overflow:”hidden”,pointerEvents:”none”,zIndex:(E.style?.zIndex||0)+2,top:0},void 0,!0),q=this.fixedRenderer=new L(V,e.chartWidth,e.chartHeight,E.style);this.mask=q.path().attr({fill:E.backgroundColor||”#fff”,”fill-opacity”:O.opacity??.85,zIndex:-1}).addClass(“highcharts-scrollable-mask”).add(),U.parentNode.insertBefore(V,U),R(e.renderTo,{overflow:”visible”}),D(e,”afterShowResetZoom”,z),D(e,”afterApplyDrilldown”,z),D(e,”afterLayOutTitles”,z),D(U,”scroll”,()=>{let{pointer:b,hoverPoint:E}=e;b&&(delete b.chartPosition,E&&(x=E),b.runPointActions(void 0,x,!0))}),Y.appendChild(e.container)}applyFixed(){let{chart:e,fixedRenderer:x,isDirty:b,scrollingContainer:E}=this,{axisOffset:O,chartWidth:D,chartHeight:j,container:F,plotHeight:H,plotLeft:U,plotTop:Y,plotWidth:V,scrollablePixelsX:q=0,scrollablePixelsY:K=0}=e,{scrollPositionX:$=0,scrollPositionY:_=0}=e.options.chart.scrollablePlotArea||{},Z=D+q,J=j+K;x.setSize(D,j),(b??!0)&&(this.isDirty=!1,this.moveFixedElements()),L(e.container),R(F,{width:`${Z}px`,height:`${J}px`}),e.renderer.boxWrapper.attr({width:Z,height:J,viewBox:[“0 0″,Z,J].join(” “)}),e.chartBackground?.attr({width:Z,height:J}),R(E,{width:`${D}px`,height:`${j}px`}),z(b)||(E.scrollLeft=q*$,E.scrollTop=K*_);let tt=Y-O[0]-1,te=U-O[3]-1,ti=Y+H+O[2]+1,ts=U+V+O[1]+1,to=U+V-q,tr=Y+H-K,tn=[[“M”,0,0]];q?tn=[[“M”,0,tt],[“L”,U-1,tt],[“L”,U-1,ti],[“L”,0,ti],[“Z”],[“M”,to,tt],[“L”,D,tt],[“L”,D,ti],[“L”,to,ti],[“Z”]]:K&&(tn=[[“M”,te,0],[“L”,te,Y-1],[“L”,ts,Y-1],[“L”,ts,0],[“Z”],[“M”,te,tr],[“L”,te,j],[“L”,ts,j],[“L”,ts,tr],[“Z”]]),”adjustHeight”!==e.redrawTrigger&&this.mask.attr({d:tn})}moveFixedElements(){let e,{container:x,inverted:b,scrollablePixelsX:E,scrollablePixelsY:L}=this.chart,O=this.fixedRenderer,D=g.fixedSelectors;for(let j of(E&&!b?e=”.highcharts-yaxis”:E&&b||L&&!b?e=”.highcharts-xaxis”:L&&b&&(e=”.highcharts-yaxis”),e&&D.push(`${e}:not(.highcharts-radial-axis)`,`${e}-labels:not(.highcharts-radial-axis-labels)`),D))[].forEach.call(x.querySelectorAll(j),e=>{(e.namespaceURI===O.SVG_NS?O.box:O.box.parentNode).appendChild(e),e.style.pointerEvents=”auto”})}};return g.fixedSelectors=[“.highcharts-breadcrumbs-group”,”.highcharts-contextbutton”,”.highcharts-caption”,”.highcharts-credits”,”.highcharts-drillup-button”,”.highcharts-legend”,”.highcharts-legend-checkbox”,”.highcharts-navigator-series”,”.highcharts-navigator-xaxis”,”.highcharts-navigator-yaxis”,”.highcharts-navigator”,”.highcharts-range-selector-group”,”.highcharts-reset-zoom”,”.highcharts-scrollbar”,”.highcharts-subtitle”,”.highcharts-title”],g}),b(x,”Core/Axis/Stacking/StackItem.js”,[x[“Core/Templating.js”],x[“Core/Series/SeriesRegistry.js”],x[“Core/Utilities.js”]],function(e,x,b){let{format:E}=e,{series:L}=x,{destroyObjectProperties:O,fireEvent:D,isNumber:j,pick:R}=b;return class{constructor(e,x,b,E,L){let O=e.chart.inverted,D=e.reversed;this.axis=e;let j=this.isNegative=!!b!=!!D;this.options=x=x||{},this.x=E,this.total=null,this.cumulative=null,this.points={},this.hasValidPoints=!1,this.stack=L,this.leftCliff=0,this.rightCliff=0,this.alignOptions={align:x.align||(O?j?”left”:”right”:”center”),verticalAlign:x.verticalAlign||(O?”middle”:j?”bottom”:”top”),y:x.y,x:x.x},this.textAlign=x.textAlign||(O?j?”right”:”left”:”center”)}destroy(){O(this,this.axis)}render(e){let x=this.axis.chart,b=this.options,L=b.format,O=L?E(L,this,x):b.formatter.call(this);if(this.label)this.label.attr({text:O,visibility:”hidden”});else{this.label=x.renderer.label(O,null,void 0,b.shape,void 0,void 0,b.useHTML,!1,”stack-labels”);let E={r:b.borderRadius||0,text:O,padding:R(b.padding,5),visibility:”hidden”};x.styledMode||(E.fill=b.backgroundColor,E.stroke=b.borderColor,E[“stroke-width”]=b.borderWidth,this.label.css(b.style||{})),this.label.attr(E),this.label.added||this.label.add(e)}this.label.labelrank=x.plotSizeY,D(this,”afterRender”)}setOffset(e,x,b,E,O,z){let{alignOptions:F,axis:H,label:U,options:Y,textAlign:V}=this,q=H.chart,K=this.getStackBox({xOffset:e,width:x,boxBottom:b,boxTop:E,defaultX:O,xAxis:z}),{verticalAlign:$}=F;if(U&&K){let e=U.getBBox(void 0,0),x=U.padding,b=”justify”===R(Y.overflow,”justify”),E;F.x=Y.x||0,F.y=Y.y||0;let{x:O,y:D}=this.adjustStackPosition({labelBox:e,verticalAlign:$,textAlign:V});K.x-=O,K.y-=D,U.align(F,!1,K),(E=q.isInsidePlot(U.alignAttr.x+F.x+O,U.alignAttr.y+F.y+D))||(b=!1),b&&L.prototype.justifyDataLabel.call(H,U,F,U.alignAttr,e,K),U.attr({x:U.alignAttr.x,y:U.alignAttr.y,rotation:Y.rotation,rotationOriginX:e.width*({left:0,center:.5,right:1})[Y.textAlign||”center”],rotationOriginY:e.height/2}),R(!b&&Y.crop,!0)&&(E=j(U.x)&&j(U.y)&&q.isInsidePlot(U.x-x+(U.width||0),U.y)&&q.isInsidePlot(U.x+x,U.y)),U[E?”show”:”hide”]()}D(this,”afterSetOffset”,{xOffset:e,width:x})}adjustStackPosition({labelBox:e,verticalAlign:x,textAlign:b}){let E={bottom:0,middle:1,top:2,right:1,center:0,left:-1},L=E[x],O=E[b];return{x:e.width/2+e.width/2*O,y:e.height/2*L}}getStackBox(e){let x=this.axis,b=x.chart,{boxTop:E,defaultX:L,xOffset:O,width:D,boxBottom:z}=e,F=x.stacking.usePercentage?100:R(E,this.total,0),H=x.toPixels(F),U=e.xAxis||b.xAxis[0],Y=R(L,U.translate(this.x))+O,V=Math.abs(H-x.toPixels(z||j(x.min)&&x.logarithmic&&x.logarithmic.lin2log(x.min)||0)),q=b.inverted,K=this.isNegative;return q?{x:(K?H:H-V)-b.plotLeft,y:U.height-Y-D,width:V,height:D}:{x:Y+U.transB-b.plotLeft,y:(K?H-V:H)-b.plotTop,width:D,height:V}}}}),b(x,”Core/Axis/Stacking/StackingAxis.js”,[x[“Core/Animation/AnimationUtilities.js”],x[“Core/Axis/Axis.js”],x[“Core/Series/SeriesRegistry.js”],x[“Core/Axis/Stacking/StackItem.js”],x[“Core/Utilities.js”]],function(e,x,b,E,L){var O;let{getDeferredAnimation:D}=e,{series:{prototype:j}}=b,{addEvent:R,correctFloat:z,defined:F,destroyObjectProperties:H,fireEvent:U,isArray:Y,isNumber:V,objectEach:q,pick:K}=L;function $(){let e=this.inverted;this.axes.forEach(e=>{e.stacking&&e.stacking.stacks&&e.hasVisibleSeries&&(e.stacking.oldStacks=e.stacking.stacks)}),this.series.forEach(x=>{let b=x.xAxis&&x.xAxis.options||{};x.options.stacking&&x.reserveSpace()&&(x.stackKey=[x.type,K(x.options.stack,””),e?b.top:b.left,e?b.height:b.width].join(“,”))})}function _(){let e=this.stacking;if(e){let x=e.stacks;q(x,(e,b)=>{H(e),delete x[b]}),e.stackTotalGroup?.destroy()}}function Z(){this.stacking||(this.stacking=new w(this))}function J(e,x,b,E){return!F(e)||e.x!==x||E&&e.stackKey!==E?e={x:x,index:0,key:E,stackKey:E}:e.index++,e.key=[b,x,e.index].join(“,”),e}function tt(){let e,x=this,b=x.yAxis,E=x.stackKey||””,L=b.stacking.stacks,O=x.processedXData,D=x.options.stacking,j=x[D+”Stacker”];j&&[E,”-“+E].forEach(b=>{let E=O.length,D,R,z;for(;E–;)D=O[E],e=x.getStackIndicator(e,D,x.index,b),R=L[b]?.[D],(z=R?.points[e.key||””])&&j.call(x,z,R,E)})}function te(e,x,b){let E=x.total?100/x.total:0;e[0]=z(e[0]*E),e[1]=z(e[1]*E),this.stackedYData[b]=e[1]}function ti(e){(this.is(“column”)||this.is(“columnrange”))&&(this.options.centerInCategory&&!this.options.stacking&&this.chart.series.length>1?j.setStackedPoints.call(this,e,”group”):e.stacking.resetStacks())}function ts(e,x){let b,L,O,D,j,R,H,U,V,q=x||this.options.stacking;if(!q||!this.reserveSpace()||(({group:”xAxis”})[q]||”yAxis”)!==e.coll)return;let $=this.processedXData,_=this.processedYData,Z=[],J=_.length,tt=this.options,te=tt.threshold||0,ti=tt.startFromThreshold?te:0,ts=tt.stack,to=x?`${this.type},${q}`:this.stackKey||””,tr=”-“+to,tn=this.negStacks,ta=e.stacking,tl=ta.stacks,th=ta.oldStacks;for(ta.stacksTouched+=1,H=0;H0&&!1===this.singleStacks&&(O.points[R][0]=O.points[this.index+”,”+U+”,0″][0])):(delete O.points[R],delete O.points[this.index]);let x=O.total||0;”percent”===q?(D=L?to:tr,x=tn&&tl[D]?.[U]?(D=tl[D][U]).total=Math.max(D.total||0,x)+Math.abs(V)||0:z(x+(Math.abs(V)||0))):”group”===q?(Y(V)&&(V=V[0]),null!==V&&x++):x=z(x+(V||0)),”group”===q?O.cumulative=(x||1)-1:O.cumulative=z(K(O.cumulative,ti)+(V||0)),O.total=x,null!==V&&(O.points[R].push(O.cumulative),Z[H]=O.cumulative,O.hasValidPoints=!0)}”percent”===q&&(ta.usePercentage=!0),”group”!==q&&(this.stackedYData=Z),ta.oldStacks={}}let w=class w{constructor(e){this.oldStacks={},this.stacks={},this.stacksTouched=0,this.axis=e}buildStacks(){let e,x,b=this.axis,E=b.series,L=”xAxis”===b.coll,O=b.options.reversedStacks,D=E.length;for(this.resetStacks(),this.usePercentage=!1,x=D;x–;)e=E[O?x:D-x-1],L&&e.setGroupedPoints(b),e.setStackedPoints(b);if(!L)for(x=0;x{q(e,e=>{e.cumulative=e.total})}))}resetStacks(){q(this.stacks,e=>{q(e,(x,b)=>{V(x.touched)&&x.touched{q(e,e=>{e.render(O)})}),O.animate({opacity:1},L)}};return(O||(O={})).compose=function(e,x,b){let E=x.prototype,L=b.prototype;E.getStacks||(R(e,”init”,Z),R(e,”destroy”,_),E.getStacks=$,L.getStackIndicator=J,L.modifyStacks=tt,L.percentStacker=te,L.setGroupedPoints=ti,L.setStackedPoints=ts)},O}),b(x,”Series/Line/LineSeries.js”,[x[“Core/Series/Series.js”],x[“Core/Series/SeriesRegistry.js”],x[“Core/Utilities.js”]],function(e,x,b){let{defined:E,merge:L,isObject:O}=b;let a=class a extends e{drawGraph(){let e=this.options,x=(this.gappedPath||this.getGraphPath).call(this),b=this.chart.styledMode;[this,…this.zones].forEach((E,D)=>{let j,R=E.graph,z=R?”animate”:”attr”,F=E.dashStyle||e.dashStyle;R?(R.endX=this.preventGraphAnimation?null:x.xMap,R.animate({d:x})):x.length&&(E.graph=R=this.chart.renderer.path(x).addClass(“highcharts-graph”+(D?` highcharts-zone-graph-${D-1} `:” “)+(D&&E.className||””)).attr({zIndex:1}).add(this.group)),R&&!b&&(j={stroke:!D&&e.lineColor||E.color||this.color||”#cccccc”,”stroke-width”:e.lineWidth||0,fill:this.fillGraph&&this.color||”none”},F?j.dashstyle=F:”square”!==e.linecap&&(j[“stroke-linecap”]=j[“stroke-linejoin”]=”round”),R[z](j).shadow(D<2&&e.shadow&&L({filterUnits:"userSpaceOnUse"},O(e.shadow)?e.shadow:{}))),R&&(R.startX=x.xMap,R.isArea=x.isArea)})}getGraphPath(e,x,b){let L=this,O=L.options,D=[],j=[],R,z=O.step,F=(e=e||L.points).reversed;return F&&e.reverse(),(z=({right:1,center:2})[z]||z&&3)&&F&&(z=4-z),(e=this.getValidPoints(e,!1,!(O.connectNulls&&!x&&!b))).forEach(function(F,H){let U,Y=F.plotX,V=F.plotY,q=e[H-1],K=F.isNull||"number"!=typeof V;(F.leftCliff||q&&q.rightCliff)&&!b&&(R=!0),K&&!E(x)&&H>0?R=!O.connectNulls:K&&!x?R=!0:(0===H||R?U=[[“M”,F.plotX,F.plotY]]:L.getPointSpline?U=[L.getPointSpline(e,F,H)]:z?(U=1===z?[[“L”,q.plotX,V]]:2===z?[[“L”,(q.plotX+Y)/2,q.plotY],[“L”,(q.plotX+Y)/2,V]]:[[“L”,Y,q.plotY]]).push([“L”,Y,V]):U=[[“L”,Y,V]],j.push(F.x),z&&(j.push(F.x),2===z&&j.push(F.x)),D.push.apply(D,U),R=!1)}),D.xMap=j,L.graphPath=D,D}};return a.defaultOptions=L(e.defaultOptions,{legendSymbol:”lineMarker”}),x.registerSeriesType(“line”,a),a}),b(x,”Series/Area/AreaSeriesDefaults.js”,[],function(){return{threshold:0,legendSymbol:”areaMarker”}}),b(x,”Series/Area/AreaSeries.js”,[x[“Series/Area/AreaSeriesDefaults.js”],x[“Core/Series/SeriesRegistry.js”],x[“Core/Utilities.js”]],function(e,x,b){let{seriesTypes:{line:E}}=x,{extend:L,merge:O,objectEach:D,pick:j}=b;let h=class h extends E{drawGraph(){this.areaPath=[],super.drawGraph.apply(this);let{areaPath:e,options:x}=this;[this,…this.zones].forEach((b,E)=>{let L={},O=b.fillColor||x.fillColor,D=b.area,j=D?”animate”:”attr”;D?(D.endX=this.preventGraphAnimation?null:e.xMap,D.animate({d:e})):(L.zIndex=0,(D=b.area=this.chart.renderer.path(e).addClass(“highcharts-area”+(E?` highcharts-zone-area-${E-1} `:” “)+(E&&b.className||””)).add(this.group)).isArea=!0),this.chart.styledMode||(L.fill=O||b.color||this.color,L[“fill-opacity”]=O?1:x.fillOpacity??.75,D.css({pointerEvents:this.stickyTracking?”none”:”auto”})),D[j](L),D.startX=e.xMap,D.shiftUnit=x.step?2:1})}getGraphPath(e){let x,b,L,O=E.prototype.getGraphPath,D=this.options,R=D.stacking,z=this.yAxis,F=[],H=[],U=this.index,Y=z.stacking.stacks[this.stackKey],V=D.threshold,q=Math.round(z.getThreshold(D.threshold)),K=j(D.connectNulls,”percent”===R),$=function(b,E,L){let O=e[b],D=R&&Y[O.x].points[U],j=O[L+”Null”]||0,K=O[L+”Cliff”]||0,$,_,Z=!0;K||j?($=(j?D[0]:D[1])+K,_=D[0]+K,Z=!!j):!R&&e[E]&&e[E].isNull&&($=_=V),void 0!==$&&(H.push({plotX:x,plotY:null===$?q:z.getThreshold($),isNull:Z,isCliff:!0}),F.push({plotX:x,plotY:null===_?q:z.getThreshold(_),doCurve:!1}))};e=e||this.points,R&&(e=this.getStackPoints(e));for(let E=0,O=e.length;Ee.visible);E.forEach(function(e,D){let q=0,K,$;if(z[e]&&!z[e].isNull)b.push(z[e]),[-1,1].forEach(function(b){let L=1===b?”rightNull”:”leftNull”,O=R[E[D+b]],j=0;if(O){let b=Y;for(;b>=0&&b=0&&xb&&O>z?(O=Math.max(b,z),j=2*z-O):OU&&j>z?(j=Math.max(U,z),O=2*z-j):j1){let L=this.xAxis.series.filter(e=>e.visible).map(e=>e.index),O=0,D=0;Z(this.xAxis.stacking?.stacks,e=>{if(“number”==typeof b.x){let x=e[b.x.toString()];if(x&&q(x.points[this.index])){let e=Object.keys(x.points).filter(e=>!e.match(“,”)&&x.points[e]&&x.points[e].length>1).map(parseFloat).filter(e=>-1!==L.indexOf(e)).sort((e,x)=>x-e);O=e.indexOf(this.index),D=e.length}}}),O=this.xAxis.reversed?D-1-O:O;let j=(D-1)*E.paddedWidth+x;e=(b.plotX||0)+j/2-x-O*E.paddedWidth}return e}translate(){let e=this,x=e.chart,b=e.options,E=e.dense=e.closestPointRange*e.xAxis.transA<2,O=e.borderWidth=_(b.borderWidth,+!E),D=e.xAxis,j=e.yAxis,R=b.threshold,z=_(b.minPointLength,5),H=e.getColumnMetrics(),Y=H.width,q=e.pointXOffset=H.offset,$=e.dataMin,Z=e.dataMax,J=e.translatedThreshold=j.getThreshold(R),tt=e.barW=Math.max(Y,1+2*O);b.pointPadding&&(tt=Math.ceil(tt)),L.prototype.translate.apply(e),e.points.forEach(function(E){let L=_(E.yBottom,J),O=999+Math.abs(L),V=E.plotX||0,te=F(E.plotY,-O,j.len+O),ti,ts=Math.min(te,L),to=Math.max(te,L)-ts,tr=Y,tn=V+q,ta=tt;z&&Math.abs(to)z?L-z:J-(ti?z:0)),U(E.options.pointWidth)&&(tn-=Math.round(((tr=ta=Math.ceil(E.options.pointWidth))-Y)/2)),b.centerInCategory&&!b.stacking&&(tn=e.adjustForMissingColumns(tn,tr,E,H)),E.barX=tn,E.pointWidth=tr,E.tooltipPos=x.inverted?[F(j.len+j.pos-x.plotLeft-te,j.pos-x.plotLeft,j.len+j.pos-x.plotLeft),D.len+D.pos-x.plotTop-tn-ta/2,to]:[D.left-x.plotLeft+tn+ta/2,F(te+j.pos-x.plotTop,j.pos-x.plotTop,j.len+j.pos-x.plotTop),to],E.shapeType=e.pointClass.prototype.shapeType||”roundedRect”,E.shapeArgs=e.crispCol(tn,E.isNull?J:ts,ta,E.isNull?0:to)}),V(this,”afterColumnTranslate”)}drawGraph(){this.group[this.dense?”addClass”:”removeClass”](“highcharts-dense-data”)}pointAttribs(e,x){let b=this.options,E=this.pointAttrToOptions||{},L=E.stroke||”borderColor”,O=E[“stroke-width”]||”borderWidth”,D,j,z,F=e&&e.color||this.color,H=e&&e[L]||b[L]||F,U=e&&e.options.dashStyle||b.dashStyle,Y=e&&e[O]||b[O]||this[O]||0,V=_(e&&e.opacity,b.opacity,1);e&&this.zones.length&&(j=e.getZone(),F=e.options.color||j&&(j.color||e.nonZonedColor)||this.color,j&&(H=j.borderColor||H,U=j.dashStyle||U,Y=j.borderWidth||Y)),x&&e&&(z=(D=$(b.states[x],e.options.states&&e.options.states[x]||{})).brightness,F=D.color||void 0!==z&&R(F).brighten(D.brightness).get()||F,H=D[L]||H,Y=D[O]||Y,U=D.dashStyle||U,V=_(D.opacity,V));let q={fill:F,stroke:H,”stroke-width”:Y,opacity:V};return U&&(q.dashstyle=U),q}drawPoints(e=this.points){let x,b=this,E=this.chart,L=b.options,O=E.renderer,D=L.animationLimit||250;e.forEach(function(e){let j=e.plotY,R=e.graphic,z=!!R,F=R&&E.pointCounte?.enabled)}function b(e,x,b,E,L){let{chart:O,enabledDataSorting:R}=this,z=this.isCartesian&&O.inverted,F=e.plotX,U=e.plotY,V=b.rotation||0,q=D(F)&&D(U)&&O.isInsidePlot(F,Math.round(U),{inverted:z,paneCoordinates:!0,series:this}),K=0===V&&”justify”===Y(b.overflow,R?”none”:”justify”),$=this.visible&&!1!==e.visible&&D(F)&&(e.series.forceDL||R&&!K||q||Y(b.inside,!!this.options.stacking)&&E&&O.isInsidePlot(F,z?E.x+1:E.y+E.height-1,{inverted:z,paneCoordinates:!0,series:this})),_=e.pos();if($&&_){var Z;let D=x.getBBox(),F=x.getBBox(void 0,0),U={right:1,center:.5}[b.align||0]||0,J={bottom:1,middle:.5}[b.verticalAlign||0]||0;if(E=j({x:_[0],y:Math.round(_[1]),width:0,height:0},E||{}),”plotEdges”===b.alignTo&&this.isCartesian&&(E[z?”x”:”y”]=0,E[z?”width”:”height”]=this.yAxis?.len||0),j(b,{width:D.width,height:D.height}),Z=E,R&&this.xAxis&&!K&&this.setDataLabelStartPos(e,x,L,q,Z),x.align(H(b,{width:F.width,height:F.height}),!1,E,!1),x.alignAttr.x+=U*(F.width-D.width),x.alignAttr.y+=J*(F.height-D.height),x[x.placed?”animate”:”attr”]({x:x.alignAttr.x+(D.width-F.width)/2,y:x.alignAttr.y+(D.height-F.height)/2,rotationOriginX:(x.width||0)/2,rotationOriginY:(x.height||0)/2}),K&&E.height>=0)this.justifyDataLabel(x,b,x.alignAttr,D,E,L);else if(Y(b.crop,!0)){let{x:e,y:b}=x.alignAttr;$=O.isInsidePlot(e,b,{paneCoordinates:!0,series:this})&&O.isInsidePlot(e+D.width-1,b+D.height-1,{paneCoordinates:!0,series:this})}b.shape&&!V&&x[L?”attr”:”animate”]({anchorX:_[0],anchorY:_[1]})}L&&R&&(x.placed=!1),$||R&&!K?(x.show(),x.placed=!0):(x.hide(),x.placed=!1)}function E(){return this.plotGroup(“dataLabelsGroup”,”data-labels”,this.hasRendered?”inherit”:”hidden”,this.options.dataLabels.zIndex||6)}function K(e){let x=this.hasRendered||0,b=this.initDataLabelsGroup().attr({opacity:+x});return!x&&b&&(this.visible&&b.show(),this.options.animation?b.animate({opacity:1},e):b.attr({opacity:1})),b}function $(e){let x;e=e||this.points;let b=this,E=b.chart,j=b.options,z=E.renderer,{backgroundColor:H,plotBackgroundColor:K}=E.options.chart,$=z.getContrast(F(K)&&K||F(H)&&H||”#000000″),_=J(b),{animation:tt,defer:te}=_[0],ti=te?L(E,tt,b):{defer:0,duration:0};R(this,”drawDataLabels”),b.hasDataLabels?.()&&(x=this.initDataLabels(ti),e.forEach(e=>{let L=e.dataLabels||[];q(Z(_,e.dlOptions||e.options?.dataLabels)).forEach((R,H)=>{let q=R.enabled&&(e.visible||e.dataLabelOnHidden)&&(!e.isNull||e.dataLabelOnNull)&&function(e,x){let b=x.filter;if(b){let x=b.operator,E=e[b.property],L=b.value;return”>”===x&&E>L||”<"===x&&E=”===x&&E>=L||”<="===x&&E<=L||"=="===x&&E==L||"==="===x&&E===L||"!="===x&&E!=L||"!=="===x&&E!==L}return!0}(e,R),{backgroundColor:K,borderColor:_,distance:Z,style:J={}}=R,tt,te,ti,ts,to={},tr=L[H],tn=!tr,ta;if(q&&(te=Y(R[e.formatPrefix+"Format"],R.format),tt=e.getLabelConfig(),ti=D(te)?O(te,tt,E):(R[e.formatPrefix+"Formatter"]||R.formatter).call(tt,R),ts=R.rotation,!E.styledMode&&(J.color=Y(R.color,J.color,F(b.color)?b.color:void 0,"#000000"),"contrast"===J.color?("none"!==K&&(ta=K),e.contrastColor=z.getContrast("auto"!==ta&&ta||e.color||b.color),J.color=ta||!D(Z)&&R.inside||0>V(Z||0)||j.stacking?e.contrastColor:$):delete e.contrastColor,j.cursor&&(J.cursor=j.cursor)),to={r:R.borderRadius||0,rotation:ts,padding:R.padding,zIndex:1},E.styledMode||(to.fill=”auto”===K?e.color:K,to.stroke=”auto”===_?e.color:_,to[“stroke-width”]=R.borderWidth),U(to,(e,x)=>{void 0===e&&delete to[x]})),!tr||q&&D(ti)&&!!tr.div==!!R.useHTML&&(tr.rotation&&R.rotation||tr.rotation===R.rotation)||(tr=void 0,tn=!0),q&&D(ti)&&(tr?to.text=ti:(tr=z.label(ti,0,0,R.shape,void 0,void 0,R.useHTML,void 0,”data-label”)).addClass(” highcharts-data-label-color-“+e.colorIndex+” “+(R.className||””)+(R.useHTML?” highcharts-tracker”:””)),tr)){tr.options=R,tr.attr(to),E.styledMode||tr.css(J).shadow(R.shadow);let O=R[e.formatPrefix+”TextPath”]||R.textPath;O&&!R.useHTML&&(tr.setTextPath(e.getDataLabelPath?.(tr)||e.graphic,O),e.dataLabelPath&&!O.enabled&&(e.dataLabelPath=e.dataLabelPath.destroy())),tr.added||tr.add(x),b.alignDataLabel(e,tr,R,void 0,tn),tr.isActive=!0,L[H]&&L[H]!==tr&&L[H].destroy(),L[H]=tr}});let R=L.length;for(;R–;)L[R]&&L[R].isActive?L[R].isActive=!1:(L[R]?.destroy(),L.splice(R,1));e.dataLabel=L[0],e.dataLabels=L})),R(this,”afterDrawDataLabels”)}function _(e,x,b,E,L,O){let D=this.chart,j=x.align,R=x.verticalAlign,z=e.box?0:e.padding||0,F=D.inverted?this.yAxis:this.xAxis,H=F?F.left-D.plotLeft:0,U=D.inverted?this.xAxis:this.yAxis,Y=U?U.top-D.plotTop:0,{x:V=0,y:q=0}=x,K,$;return(K=(b.x||0)+z+H)<0&&("right"===j&&V>=0?(x.align=”left”,x.inside=!0):V-=K,$=!0),(K=(b.x||0)+E.width-z+H)>D.plotWidth&&(“left”===j&&V<=0?(x.align="right",x.inside=!0):V+=D.plotWidth-K,$=!0),(K=b.y+z+Y)<0&&("bottom"===R&&q>=0?(x.verticalAlign=”top”,x.inside=!0):q-=K,$=!0),(K=(b.y||0)+E.height-z+Y)>D.plotHeight&&(“top”===R&&q<=0?(x.verticalAlign="bottom",x.inside=!0):q+=D.plotHeight-K,$=!0),$&&(x.x=V,x.y=q,e.placed=!O,e.align(x,void 0,L)),$}function Z(e,x){let b=[],E;if(z(e)&&!z(x))b=e.map(function(e){return H(e,x)});else if(z(x)&&!z(e))b=x.map(function(x){return H(e,x)});else if(z(e)||z(x)){if(z(e)&&z(x))for(E=Math.max(e.length,x.length);E--;)b[E]=H(e[E],x[E])}else b=H(e,x);return b}function J(e){let x=e.chart.options.plotOptions;return q(Z(Z(x?.series?.dataLabels,x?.[e.type]?.dataLabels),e.options.dataLabels))}function tt(e,x,b,E,L){let O=this.chart,D=O.inverted,j=this.xAxis,R=j.reversed,z=((D?x.height:x.width)||0)/2,F=e.pointWidth,H=F?F/2:0;x.startXPos=D?L.x:R?-z-H:j.width-z+H,x.startYPos=D?R?this.yAxis.height-z+H:-z-H:L.y,E?"hidden"===x.visibility&&(x.show(),x.attr({opacity:0}).animate({opacity:1})):x.attr({opacity:1}).animate({opacity:0},void 0,x.hide),O.hasRendered&&(b&&x.attr({x:x.startXPos,y:x.startYPos}),x.placed=!0)}e.compose=function(e){let L=e.prototype;L.initDataLabels||(L.initDataLabels=K,L.initDataLabelsGroup=E,L.alignDataLabel=b,L.drawDataLabels=$,L.justifyDataLabel=_,L.setDataLabelStartPos=tt,L.hasDataLabels=x)}}(E||(E={})),E}),b(x,"Series/Column/ColumnDataLabel.js",[x["Core/Series/DataLabel.js"],x["Core/Globals.js"],x["Core/Series/SeriesRegistry.js"],x["Core/Utilities.js"]],function(e,x,b,E){var L;let{composed:O}=x,{series:D}=b,{merge:j,pick:R,pushUnique:z}=E;return function(x){function b(e,x,b,E,L){let O=this.chart.inverted,z=e.series,F=(z.xAxis?z.xAxis.len:this.chart.plotSizeX)||0,H=(z.yAxis?z.yAxis.len:this.chart.plotSizeY)||0,U=e.dlBox||e.shapeArgs,Y=R(e.below,e.plotY>R(this.translatedThreshold,H)),V=R(b.inside,!!this.options.stacking);if(U){if(E=j(U),”allow”!==b.overflow||!1!==b.crop){E.y<0&&(E.height+=E.y,E.y=0);let e=E.y+E.height-H;e>0&&e\u25CF {series.name}
‘,pointFormat:”x: {point.x}
y: {point.y}
“}}}),b(x,”Series/Scatter/ScatterSeries.js”,[x[“Series/Scatter/ScatterSeriesDefaults.js”],x[“Core/Series/SeriesRegistry.js”],x[“Core/Utilities.js”]],function(e,x,b){let{column:E,line:L}=x.seriesTypes,{addEvent:O,extend:D,merge:j}=b;let h=class h extends L{applyJitter(){let e=this,x=this.options.jitter,b=this.points.length;x&&this.points.forEach(function(E,L){[“x”,”y”].forEach(function(O,D){if(x[O]&&!E.isNull){let j=`plot${O.toUpperCase()}`,R=e[`${O}Axis`],z=x[O]*R.transA;if(R&&!R.logarithmic){let e,x=Math.max(0,(E[j]||0)-z),F=Math.min(R.len,(E[j]||0)+z);E[j]=x+(F-x)*((e=1e4*Math.sin(L+D*b))-Math.floor(e)),”x”===O&&(E.clientX=E.plotX)}}})})}drawGraph(){this.options.lineWidth?super.drawGraph():this.graph&&(this.graph=this.graph.destroy())}};return h.defaultOptions=j(L.defaultOptions,e),D(h.prototype,{drawTracker:E.prototype.drawTracker,sorted:!1,requireSorting:!1,noSharedTooltip:!0,trackerGroups:[“group”,”markerGroup”,”dataLabelsGroup”]}),O(h,”afterTranslate”,function(){this.applyJitter()}),x.registerSeriesType(“scatter”,h),h}),b(x,”Series/CenteredUtilities.js”,[x[“Core/Globals.js”],x[“Core/Series/Series.js”],x[“Core/Utilities.js”]],function(e,x,b){var E,L;let{deg2rad:O}=e,{fireEvent:D,isNumber:j,pick:R,relativeLength:z}=b;return(L=E||(E={})).getCenter=function(){let e=this.options,b=this.chart,E=2*(e.slicedOffset||0),L=b.plotWidth-2*E,O=b.plotHeight-2*E,F=e.center,H=Math.min(L,O),U=e.thickness,Y,V=e.size,q=e.innerSize||0,K,$;”string”==typeof V&&(V=parseFloat(V)),”string”==typeof q&&(q=parseFloat(q));let _=[R(F[0],”50%”),R(F[1],”50%”),R(V&&V<0?void 0:e.size,"100%"),R(q&&q<0?void 0:e.innerSize||0,"0%")];for(!b.angular||this instanceof x||(_[3]=0),K=0;K<4;++K)$=_[K],Y=K<2||2===K&&/%$/.test($),_[K]=z($,[L,O,H,_[2]][K])+(Y?E:0);return _[3]>_[2]&&(_[3]=_[2]),j(U)&&2*U<_[2]&&U>0&&(_[3]=_[2]-2*U),D(this,”afterGetCenter”,{positions:_}),_},L.getStartAndEndRadians=function(e,x){let b=j(e)?e:0,E=j(x)&&x>b&&x-b<360?x:b+360;return{start:O*(b+-90),end:O*(E+-90)}},E}),b(x,"Series/Pie/PiePoint.js",[x["Core/Animation/AnimationUtilities.js"],x["Core/Series/Point.js"],x["Core/Utilities.js"]],function(e,x,b){let{setAnimation:E}=e,{addEvent:L,defined:O,extend:D,isNumber:j,pick:R,relativeLength:z}=b;let d=class d extends x{getConnectorPath(e){let x=e.dataLabelPosition,b=e.options||{},E=b.connectorShape,L=this.connectorShapes[E]||E;return x&&L.call(this,{...x.computed,alignment:x.alignment},x.connectorPosition,b)||[]}getTranslate(){return this.sliced&&this.slicedTranslation||{translateX:0,translateY:0}}haloPath(e){let x=this.shapeArgs;return this.sliced||!this.visible?[]:this.series.chart.renderer.symbols.arc(x.x,x.y,x.r+e,x.r+e,{innerR:x.r-1,start:x.start,end:x.end,borderRadius:x.borderRadius})}constructor(e,x,b){super(e,x,b),this.half=0,this.name??(this.name="Slice");let E=e=>{this.slice(“select”===e.type)};L(this,”select”,E),L(this,”unselect”,E)}isValid(){return j(this.y)&&this.y>=0}setVisible(e,x=!0){e!==this.visible&&this.update({visible:e??!this.visible},x,void 0,!1)}slice(e,x,b){let L=this.series;E(b,L.chart),x=R(x,!0),this.sliced=this.options.sliced=e=O(e)?e:!this.sliced,L.options.data[L.data.indexOf(this)]=this.options,this.graphic&&this.graphic.animate(this.getTranslate())}};return D(d.prototype,{connectorShapes:{fixedOffset:function(e,x,b){let E=x.breakAt,L=x.touchingSliceAt,O=b.softConnector?[“C”,e.x+(“left”===e.alignment?-5:5),e.y,2*E.x-L.x,2*E.y-L.y,E.x,E.y]:[“L”,E.x,E.y];return[[“M”,e.x,e.y],O,[“L”,L.x,L.y]]},straight:function(e,x){let b=x.touchingSliceAt;return[[“M”,e.x,e.y],[“L”,b.x,b.y]]},crookedLine:function(e,x,b){let{breakAt:E,touchingSliceAt:L}=x,{series:O}=this,[D,j,R]=O.center,F=R/2,{plotLeft:H,plotWidth:U}=O.chart,Y=”left”===e.alignment,{x:V,y:q}=e,K=E.x;if(b.crookDistance){let e=z(b.crookDistance,1);K=Y?D+F+(U+H-D-F)*(1-e):H+(D-F)*e}else K=D+(j-q)*Math.tan((this.angle||0)-Math.PI/2);let $=[[“M”,V,q]];return(Y?K<=V&&K>=E.x:K>=V&&K<=E.x)&&$.push(["L",K,q]),$.push(["L",E.x,E.y],["L",L.x,L.y]),$}}}),d}),b(x,"Series/Pie/PieSeriesDefaults.js",[],function(){return{borderRadius:3,center:[null,null],clip:!1,colorByPoint:!0,dataLabels:{connectorPadding:5,connectorShape:"crookedLine",crookDistance:void 0,distance:30,enabled:!0,formatter:function(){return this.point.isNull?void 0:this.point.name},softConnector:!0,x:0},fillColor:void 0,ignoreHiddenPoint:!0,inactiveOtherPoints:!0,legendType:"point",marker:null,size:null,showInLegend:!1,slicedOffset:10,stickyTracking:!1,tooltip:{followPointer:!0},borderColor:"#ffffff",borderWidth:1,lineWidth:void 0,states:{hover:{brightness:.1}}}}),b(x,"Series/Pie/PieSeries.js",[x["Series/CenteredUtilities.js"],x["Series/Column/ColumnSeries.js"],x["Core/Globals.js"],x["Series/Pie/PiePoint.js"],x["Series/Pie/PieSeriesDefaults.js"],x["Core/Series/Series.js"],x["Core/Series/SeriesRegistry.js"],x["Core/Renderer/SVG/Symbols.js"],x["Core/Utilities.js"]],function(e,x,b,E,L,O,D,j,R){let{getStartAndEndRadians:z}=e,{noop:F}=b,{clamp:H,extend:U,fireEvent:Y,merge:V,pick:q}=R;let m=class m extends O{animate(e){let x=this,b=x.points,E=x.startAngleRad;e||b.forEach(function(e){let b=e.graphic,L=e.shapeArgs;b&&L&&(b.attr({r:q(e.startR,x.center&&x.center[3]/2),start:E,end:E}),b.animate({r:L.r,start:L.start,end:L.end},x.options.animation))})}drawEmpty(){let e,x,b=this.startAngleRad,E=this.endAngleRad,L=this.options;0===this.total&&this.center?(e=this.center[0],x=this.center[1],this.graph||(this.graph=this.chart.renderer.arc(e,x,this.center[1]/2,0,b,E).addClass("highcharts-empty-series").add(this.group)),this.graph.attr({d:j.arc(e,x,this.center[2]/2,0,{start:b,end:E,innerR:this.center[3]/2})}),this.chart.styledMode||this.graph.attr({"stroke-width":L.borderWidth,fill:L.fillColor||"none",stroke:L.color||"#cccccc"})):this.graph&&(this.graph=this.graph.destroy())}drawPoints(){let e=this.chart.renderer;this.points.forEach(function(x){x.graphic&&x.hasNewShapeType()&&(x.graphic=x.graphic.destroy()),x.graphic||(x.graphic=e[x.shapeType](x.shapeArgs).add(x.series.group),x.delayedRendering=!0)})}generatePoints(){super.generatePoints(),this.updateTotals()}getX(e,x,b,E){let L=this.center,O=this.radii?this.radii[b.index]||0:L[2]/2,D=E.dataLabelPosition,j=D?.distance||0,R=Math.asin(H((e-L[1])/(O+j),-1,1));return L[0]+Math.cos(R)*(O+j)*(x?-1:1)+(j>0?(x?-1:1)*(E.padding||0):0)}hasData(){return!!this.processedXData.length}redrawPoints(){let e,x,b,E,L=this,O=L.chart;this.drawEmpty(),L.group&&!O.styledMode&&L.group.shadow(L.options.shadow),L.points.forEach(function(D){let j={};x=D.graphic,!D.isNull&&x?(E=D.shapeArgs,e=D.getTranslate(),O.styledMode||(b=L.pointAttribs(D,D.selected&&”select”)),D.delayedRendering?(x.setRadialReference(L.center).attr(E).attr(e),O.styledMode||x.attr(b).attr({“stroke-linejoin”:”round”}),D.delayedRendering=!1):(x.setRadialReference(L.center),O.styledMode||V(!0,j,b),V(!0,j,E,e),x.animate(j)),x.attr({visibility:D.visible?”inherit”:”hidden”}),x.addClass(D.getClassName(),!0)):x&&(D.graphic=x.destroy())})}sortByAngle(e,x){e.sort(function(e,b){return void 0!==e.angle&&(b.angle-e.angle)*x})}translate(e){Y(this,”translate”),this.generatePoints();let x=this.options,b=x.slicedOffset,E=z(x.startAngle,x.endAngle),L=this.startAngleRad=E.start,O=(this.endAngleRad=E.end)-L,D=this.points,j=x.ignoreHiddenPoint,R=D.length,F,H,U,V,q,K,$,_=0;for(e||(this.center=e=this.getCenter()),K=0;K1.5*Math.PI?U-=2*Math.PI:U<-Math.PI/2&&(U+=2*Math.PI),$.slicedTranslation={translateX:Math.round(Math.cos(U)*b),translateY:Math.round(Math.sin(U)*b)},V=Math.cos(U)*e[2]/2,q=Math.sin(U)*e[2]/2,$.tooltipPos=[e[0]+.7*V,e[1]+.7*q],$.half=+(U<-Math.PI/2||U>Math.PI/2),$.angle=U}Y(this,”afterTranslate”)}updateTotals(){let e=this.points,x=e.length,b=this.options.ignoreHiddenPoint,E,L,O=0;for(E=0;E0&&(L.visible||!b)?L.y/O*100:0,L.total=O}};return m.defaultOptions=V(O.defaultOptions,L),U(m.prototype,{axisTypes:[],directTouch:!0,drawGraph:void 0,drawTracker:x.prototype.drawTracker,getCenter:e.getCenter,getSymbol:F,invertible:!1,isCartesian:!1,noSharedTooltip:!0,pointAttribs:x.prototype.pointAttribs,pointClass:E,requireSorting:!1,searchPoint:F,trackerGroups:[“group”,”dataLabelsGroup”]}),D.registerSeriesType(“pie”,m),m}),b(x,”Series/Pie/PieDataLabel.js”,[x[“Core/Series/DataLabel.js”],x[“Core/Globals.js”],x[“Core/Renderer/RendererUtilities.js”],x[“Core/Series/SeriesRegistry.js”],x[“Core/Utilities.js”]],function(e,x,b,E,L){var O;let{composed:D,noop:j}=x,{distribute:R}=b,{series:z}=E,{arrayMax:F,clamp:H,defined:U,pick:Y,pushUnique:V,relativeLength:q}=L;return function(x){let b={radialDistributionY:function(e,x){return(x.dataLabelPosition?.top||0)+e.distributeBox.pos},radialDistributionX:function(e,x,b,E,L){let O=L.dataLabelPosition;return e.getX(b<(O?.top||0)+2||b>(O?.bottom||0)-2?E:b,x.half,x,L)},justify:function(e,x,b,E){return E[0]+(e.half?-1:1)*(b+(x.dataLabelPosition?.distance||0))},alignToPlotEdges:function(e,x,b,E){let L=e.getBBox().width;return x?L+E:b-L-E},alignToConnectors:function(e,x,b,E){let L=0,O;return e.forEach(function(e){(O=e.dataLabel.getBBox().width)>L&&(L=O)}),x?L+E:b-L-E}};function E(e,x){let{center:b,options:E}=this,L=b[2]/2,O=e.angle||0,D=Math.cos(O),j=Math.sin(O),R=b[0]+D*L,z=b[1]+j*L,F=Math.min((E.slicedOffset||0)+(E.borderWidth||0),x/5);return{natural:{x:R+D*x,y:z+j*x},computed:{},alignment:x<0?"center":e.half?"right":"left",connectorPosition:{breakAt:{x:R+D*F,y:z+j*F},touchingSliceAt:{x:R,y:z}},distance:x}}function L(){let e=this,x=e.points,b=e.chart,E=b.plotWidth,L=b.plotHeight,O=b.plotLeft,D=Math.round(b.chartWidth/3),j=e.center,H=j[2]/2,V=j[1],K=[[],[]],$=[0,0,0,0],_=e.dataLabelPositioners,Z,J,tt,te=0;e.visible&&e.hasDataLabels?.()&&(x.forEach(e=>{(e.dataLabels||[]).forEach(e=>{e.shortened&&(e.attr({width:”auto”}).css({width:”auto”,textOverflow:”clip”}),e.shortened=!1)})}),z.prototype.drawDataLabels.apply(e),x.forEach(e=>{(e.dataLabels||[]).forEach((x,b)=>{let E=j[2]/2,L=x.options,O=q(L?.distance||0,E);0===b&&K[e.half].push(e),!U(L?.style?.width)&&x.getBBox().width>D&&(x.css({width:Math.round(.7*D)+”px”}),x.shortened=!0),x.dataLabelPosition=this.getDataLabelPosition(e,O),te=Math.max(te,O)})}),K.forEach((x,D)=>{let z=x.length,F=[],q,K,Z=0,ti;z&&(e.sortByAngle(x,D-.5),te>0&&(q=Math.max(0,V-H-te),K=Math.min(V+H+te,b.plotHeight),x.forEach(e=>{(e.dataLabels||[]).forEach(x=>{let E=x.dataLabelPosition;E&&E.distance>0&&(E.top=Math.max(0,V-H-E.distance),E.bottom=Math.min(V+H+E.distance,b.plotHeight),Z=x.getBBox().height||21,e.distributeBox={target:(x.dataLabelPosition?.natural.y||0)-E.top+Z/2,size:Z,rank:e.y},F.push(e.distributeBox))})}),R(F,ti=K+Z-q,ti/5)),x.forEach(b=>{(b.dataLabels||[]).forEach(R=>{let z=R.options||{},V=b.distributeBox,q=R.dataLabelPosition,K=q?.natural.y||0,Z=z.connectorPadding||0,te=0,ti=K,ts=”inherit”;if(q){if(F&&U(V)&&q.distance>0&&(void 0===V.pos?ts=”hidden”:(tt=V.size,ti=_.radialDistributionY(b,R))),z.justify)te=_.justify(b,R,H,j);else switch(z.alignTo){case”connectors”:te=_.alignToConnectors(x,D,E,O);break;case”plotEdges”:te=_.alignToPlotEdges(R,D,E,O);break;default:te=_.radialDistributionX(e,b,ti,K,R)}if(q.attribs={visibility:ts,align:q.alignment},q.posAttribs={x:te+(z.x||0)+(({left:Z,right:-Z})[q.alignment]||0),y:ti+(z.y||0)-R.getBBox().height/2},q.computed.x=te,q.computed.y=ti,Y(z.crop,!0)){let e;te-(J=R.getBBox().width)E-Z&&0===D&&(e=Math.round(te+J-E+Z),$[1]=Math.max(e,$[1])),ti-tt/2<0?$[0]=Math.max(Math.round(-ti+tt/2),$[0]):ti+tt/2>L&&($[2]=Math.max(Math.round(ti+tt/2-L),$[2])),q.sideOverflow=e}}})}))}),(0===F($)||this.verifyDataLabelOverflow($))&&(this.placeDataLabels(),this.points.forEach(x=>{(x.dataLabels||[]).forEach(E=>{let{connectorColor:L,connectorWidth:O=1}=E.options||{},D=E.dataLabelPosition;if(O){let j;Z=E.connector,D&&D.distance>0?(j=!Z,Z||(E.connector=Z=b.renderer.path().addClass(“highcharts-data-label-connector highcharts-color-“+x.colorIndex+(x.className?” “+x.className:””)).add(e.dataLabelsGroup)),b.styledMode||Z.attr({“stroke-width”:O,stroke:L||x.color||”#666666″}),Z[j?”attr”:”animate”]({d:x.getConnectorPath(E)}),Z.attr({visibility:D.attribs?.visibility})):Z&&(E.connector=Z.destroy())}})})))}function O(){this.points.forEach(e=>{(e.dataLabels||[]).forEach(e=>{let x=e.dataLabelPosition;x?(x.sideOverflow&&(e.css({width:Math.max(e.getBBox().width-x.sideOverflow,0)+”px”,textOverflow:(e.options?.style||{}).textOverflow||”ellipsis”}),e.shortened=!0),e.attr(x.attribs),e[e.moved?”animate”:”attr”](x.posAttribs),e.moved=!0):e&&e.attr({y:-9999})}),delete e.distributeBox},this)}function K(e){let x=this.center,b=this.options,E=b.center,L=b.minSize||80,O=L,D=null!==b.size;return!D&&(null!==E[0]?O=Math.max(x[2]-Math.max(e[1],e[3]),L):(O=Math.max(x[2]-e[1]-e[3],L),x[0]+=(e[3]-e[1])/2),null!==E[1]?O=H(O,L,x[2]-Math.max(e[0],e[2])):(O=H(O,L,x[2]-e[0]-e[2]),x[1]+=(e[0]-e[2])/2),O!(x.x>=e.x+e.width||x.x+x.width<=e.x||x.y>=e.y+e.height||x.y+x.height<=e.y),L,O,j,R,z,F=!1;for(let b=0;b(x.labelrank||0)-(e.labelrank||0));for(let b=0;b{E(e,e=>{e.label&&x.push(e.label)})});for(let b of e.series||[])if(b.visible&&b.hasDataLabels?.()){let E=b=>{for(let E of b)E.visible&&(E.dataLabels||[]).forEach(b=>{let O=b.options||{};b.labelrank=L(O.labelrank,E.labelrank,E.shapeArgs?.height),O.allowOverlap??Number(O.distance)>0?(b.oldOpacity=b.opacity,b.newOpacity=1,D(b,e)):x.push(b)})};E(b.nodes||[]),E(b.points)}this.hideOverlappingLabels(x)}return{compose:function(e){let b=e.prototype;b.hideOverlappingLabels||(b.hideOverlappingLabels=O,x(e,”render”,j))}}}),b(x,”Extensions/BorderRadius.js”,[x[“Core/Defaults.js”],x[“Core/Globals.js”],x[“Core/Utilities.js”]],function(e,x,b){let{defaultOptions:E}=e,{noop:L}=x,{addEvent:O,extend:D,isObject:j,merge:R,relativeLength:z}=b,F={radius:0,scope:”stack”,where:void 0},H=L,U=L;function Y(e,x,b,E,L={}){let O=H(e,x,b,E,L),{innerR:D=0,r:j=b,start:R=0,end:F=0}=L;if(L.open||!L.borderRadius)return O;let U=F-R,V=Math.sin(U/2),q=Math.max(Math.min(z(L.borderRadius||0,j-D),(j-D)/2,j*V/(1+V)),0),K=Math.min(q,U/Math.PI*2*D),$=O.length-1;for(;$–;)!function(e,x,b){let E,L,O,D=e[x],j=e[x+1];if(“Z”===j[0]&&(j=e[0]),(“M”===D[0]||”L”===D[0])&&”A”===j[0]?(E=D,L=j,O=!0):”A”===D[0]&&(“M”===j[0]||”L”===j[0])&&(E=j,L=D),E&&L&&L.params){let D=L[1],j=L[5],R=L.params,{start:z,end:F,cx:H,cy:U}=R,Y=j?D-b:D+b,V=Y?Math.asin(b/Y):0,q=j?V:-V,K=Math.cos(V)*Y;O?(R.start=z+q,E[1]=H+K*Math.cos(z),E[2]=U+K*Math.sin(z),e.splice(x+1,0,[“A”,b,b,0,0,1,H+D*Math.cos(R.start),U+D*Math.sin(R.start)])):(R.end=F-q,L[6]=H+D*Math.cos(R.end),L[7]=U+D*Math.sin(R.end),e.splice(x+1,0,[“A”,b,b,0,0,1,H+K*Math.cos(F),U+K*Math.sin(F)])),L[4]=Math.abs(R.end-R.start)1?K:q);return O}function V(){if(this.options.borderRadius&&!(this.chart.is3d&&this.chart.is3d())){let{options:e,yAxis:x}=this,b=”percent”===e.stacking,L=E.plotOptions?.[this.type]?.borderRadius,O=q(e.borderRadius,j(L)?L:{}),R=x.options.reversed;for(let E of this.points){let{shapeArgs:L}=E;if(“roundedRect”===E.shapeType&&L){let{width:j=0,height:F=0,y:H=0}=L,U=H,Y=F;if(“stack”===O.scope&&E.stackTotal){let L=x.translate(b?100:E.stackTotal,!1,!0,!1,!0),O=x.translate(e.threshold||0,!1,!0,!1,!0),D=this.crispCol(0,Math.min(L,O),0,Math.abs(L-O));U=D.y,Y=D.height}let V=(E.negative?-1:1)*(R?-1:1)==-1,q=O.where;!q&&this.is(“waterfall”)&&Math.abs((E.yBottom||0)-(this.translatedThreshold||0))>this.borderWidth&&(q=”all”),q||(q=”end”);let K=Math.min(z(O.radius,j),j/2,”all”===q?F/2:1/0)||0;”end”===q&&(V&&(U-=K),Y+=K),D(L,{brBoxHeight:Y,brBoxY:U,r:K})}}}}function q(e,x){return j(e)||(e={radius:e||0}),R(F,x,e)}function K(){let e=q(this.options.borderRadius);for(let x of this.points){let b=x.shapeArgs;b&&(b.borderRadius=z(e.radius,(b.r||0)-(b.innerR||0)))}}function $(e,x,b,E,L={}){let O=U(e,x,b,E,L),{r:D=0,brBoxHeight:j=E,brBoxY:R=x}=L,z=x-R,F=R+j-(x+E),H=z-D>-.1?0:D,Y=F-D>-.1?0:D,V=Math.max(H&&z,0),q=Math.max(Y&&F,0),K=[e+H,x],_=[e+b-H,x],Z=[e+b,x+H],J=[e+b,x+E-Y],tt=[e+b-Y,x+E],te=[e+Y,x+E],ti=[e,x+E-Y],ts=[e,x+H],to=(e,x)=>Math.sqrt(Math.pow(e,2)-Math.pow(x,2));if(V){let e=to(H,H-V);K[0]-=e,_[0]+=e,Z[1]=ts[1]=x+H-V}if(E=D(b.minWidth,0)&&this.chartHeight>=D(b.minHeight,0)}).call(this)&&x.push(e._id)}function R(e,x){let E=this.options.responsive,D=this.currentResponsive,R=[],z;!x&&E&&E.rules&&E.rules.forEach(e=>{void 0===e._id&&(e._id=j()),this.matchResponsiveRule(e,R)},this);let F=O(…R.map(e=>L((E||{}).rules||[],x=>x._id===e)).map(e=>e&&e.chartOptions));F.isResponsiveOptions=!0,R=R.toString()||void 0;let H=D&&D.ruleIds;R!==H&&(D&&this.update(D.undoOptions,e,!0),R?((z=b(F,this.options,!0,this.collectionsWithUpdate)).isResponsiveOptions=!0,this.currentResponsive={ruleIds:R,mergedOptions:F,undoOptions:z},this.update(F,e,!0)):this.currentResponsive=void 0)}e.compose=function(e){let b=e.prototype;return b.matchResponsiveRule||E(b,{matchResponsiveRule:x,setResponsive:R}),e}}(x||(x={})),x}),b(x,”masters/highcharts.src.js”,[x[“Core/Globals.js”],x[“Core/Utilities.js”],x[“Core/Defaults.js”],x[“Core/Animation/Fx.js”],x[“Core/Animation/AnimationUtilities.js”],x[“Core/Renderer/HTML/AST.js”],x[“Core/Templating.js”],x[“Core/Renderer/RendererRegistry.js”],x[“Core/Renderer/RendererUtilities.js”],x[“Core/Renderer/SVG/SVGElement.js”],x[“Core/Renderer/SVG/SVGRenderer.js”],x[“Core/Renderer/HTML/HTMLElement.js”],x[“Core/Axis/Axis.js”],x[“Core/Axis/DateTimeAxis.js”],x[“Core/Axis/LogarithmicAxis.js”],x[“Core/Axis/PlotLineOrBand/PlotLineOrBand.js”],x[“Core/Axis/Tick.js”],x[“Core/Tooltip.js”],x[“Core/Series/Point.js”],x[“Core/Pointer.js”],x[“Core/Legend/Legend.js”],x[“Core/Legend/LegendSymbol.js”],x[“Core/Chart/Chart.js”],x[“Extensions/ScrollablePlotArea.js”],x[“Core/Axis/Stacking/StackingAxis.js”],x[“Core/Axis/Stacking/StackItem.js”],x[“Core/Series/Series.js”],x[“Core/Series/SeriesRegistry.js”],x[“Series/Column/ColumnDataLabel.js”],x[“Series/Pie/PieDataLabel.js”],x[“Core/Series/DataLabel.js”],x[“Extensions/OverlappingDataLabels.js”],x[“Extensions/BorderRadius.js”],x[“Core/Responsive.js”],x[“Core/Color/Color.js”],x[“Core/Time.js”]],function(e,x,b,E,L,O,D,j,R,z,F,H,U,Y,V,q,K,$,_,Z,J,tt,te,ti,ts,to,tr,tn,ta,tl,th,td,tc,tp,tu,tg){return e.AST=O,e.Axis=U,e.Chart=te,e.Color=tu,e.DataLabel=th,e.Fx=E,e.HTMLElement=H,e.Legend=J,e.LegendSymbol=tt,e.OverlappingDataLabels=e.OverlappingDataLabels||td,e.PlotLineOrBand=q,e.Point=_,e.Pointer=Z,e.RendererRegistry=j,e.Series=tr,e.SeriesRegistry=tn,e.StackItem=to,e.SVGElement=z,e.SVGRenderer=F,e.Templating=D,e.Tick=K,e.Time=tg,e.Tooltip=$,e.animate=L.animate,e.animObject=L.animObject,e.chart=te.chart,e.color=tu.parse,e.dateFormat=D.dateFormat,e.defaultOptions=b.defaultOptions,e.distribute=R.distribute,e.format=D.format,e.getDeferredAnimation=L.getDeferredAnimation,e.getOptions=b.getOptions,e.numberFormat=D.numberFormat,e.seriesType=tn.seriesType,e.setAnimation=L.setAnimation,e.setOptions=b.setOptions,e.stop=L.stop,e.time=b.defaultTime,e.timers=E.timers,tc.compose(e.Series,e.SVGElement,e.SVGRenderer),ta.compose(e.Series.types.column),th.compose(e.Series),Y.compose(e.Axis),H.compose(e.SVGRenderer),J.compose(e.Chart),V.compose(e.Axis),td.compose(e.Chart),tl.compose(e.Series.types.pie),q.compose(e.Axis),Z.compose(e.Chart),tp.compose(e.Chart),ti.compose(e.Axis,e.Chart,e.Series),ts.compose(e.Axis,e.Chart,e.Series),$.compose(e.Pointer),x.extend(e,x),e}),x[“masters/highcharts.src.js”]._modules=x,x[“masters/highcharts.src.js”]},e.exports?(O.default=O,e.exports=L&&L.document?O(L):O):void 0===(E=(function(){return O(L)}).call(x,b,x,e))||(e.exports=E)},20535:(e,x,b)=>{var E,L;L=function(e){“use strict”;var x=e?e._modules:{};function b(e,x,b,E){e.hasOwnProperty(x)||(e[x]=E.apply(null,b),”function”==typeof CustomEvent&&window.dispatchEvent(new CustomEvent(“HighchartsModuleLoaded”,{detail:{path:x,module:e[x]}})))}b(x,”Extensions/DownloadURL.js”,[x[“Core/Globals.js”]],function(e){let{isSafari:x,win:b,win:{document:E}}=e,L=b.URL||b.webkitURL||b;function O(e){let x=e.replace(/filename=.*;/,””).match(/data:([^;]*)(;base64)?,([0-9A-Za-z+/]+)/);if(x&&x.length>3&&b.atob&&b.ArrayBuffer&&b.Uint8Array&&b.Blob&&L.createObjectURL){let e=b.atob(x[3]),E=new b.ArrayBuffer(e.length),O=new b.Uint8Array(E);for(let x=0;x1e3)throw Error(“Input too long”);let R=/Edge\/\d+/.test(D.userAgent);if((x&&”string”==typeof e&&0===e.indexOf(“data:application/pdf”)||R||e.length>2e6)&&!(e=O(e)||””))throw Error(“Failed to convert to blob”);if(void 0!==j.download)j.href=e,j.download=L,E.body.appendChild(j),j.click(),E.body.removeChild(j);else try{if(!b.open(e,”chart”))throw Error(“Failed to open window”)}catch{b.location.href=e}}}}),b(x,”Extensions/ExportData/ExportDataDefaults.js”,[],function(){return{exporting:{csv:{annotations:{itemDelimiter:”; “,join:!1},columnHeaderFormatter:null,dateFormat:”%Y-%m-%d %H:%M:%S”,decimalPoint:null,itemDelimiter:null,lineDelimiter:` `},showTable:!1,useMultiLevelHeaders:!0,useRowspanHeaders:!0,showExportInProgress:!0},lang:{downloadCSV:”Download CSV”,downloadXLS:”Download XLS”,exportData:{annotationHeader:”Annotations”,categoryHeader:”Category”,categoryDatetimeHeader:”DateTime”},viewData:”View data table”,hideData:”Hide data table”,exportInProgress:”Exporting…”}}}),b(x,”Extensions/ExportData/ExportData.js”,[x[“Core/Renderer/HTML/AST.js”],x[“Core/Defaults.js”],x[“Extensions/DownloadURL.js”],x[“Extensions/ExportData/ExportDataDefaults.js”],x[“Core/Globals.js”],x[“Core/Utilities.js”]],function(e,x,b,E,L,O){let{getOptions:D,setOptions:j}=x,{downloadURL:R}=b,{doc:z,win:F}=L,{addEvent:H,defined:U,extend:Y,find:V,fireEvent:q,isNumber:K,pick:$}=O;function _(e){let x=!!this.options.exporting?.showExportInProgress,b=F.requestAnimationFrame||setTimeout;b(()=>{x&&this.showLoading(this.options.lang.exportInProgress),b(()=>{try{e.call(this)}finally{x&&this.hideLoading()}})})}function Z(){_.call(this,()=>{let e=this.getCSV(!0);R(ta(e,”text/csv”)||”data:text/csv,\uFEFF”+encodeURIComponent(e),this.getFilename()+”.csv”)})}function J(){_.call(this,()=>{let e=’\x3c!–[if gte mso 9]>Ark1td{border:none;font-family: Calibri, sans-serif;} .number{mso-number-format:”0.00″;} .text{ mso-number-format:”@”;}‘+this.getTable(!0)+”“;R(ta(e,”application/vnd.ms-excel”)||”data:application/vnd.ms-excel;base64,”+F.btoa(unescape(encodeURIComponent(e))),this.getFilename()+”.xls”)})}function tt(e){let x=””,b=this.getDataRows(),E=this.options.exporting.csv,L=$(E.decimalPoint,”,”!==E.itemDelimiter&&e?1.1.toLocaleString()[1]:”.”),O=$(E.itemDelimiter,”,”===L?”;”:”,”),D=E.lineDelimiter;return b.forEach((e,E)=>{let j=””,R=e.length;for(;R–;)”string”==typeof(j=e[R])&&(j=`”${j}”`),”number”==typeof j&&”.”!==L&&(j=j.toString().replace(“.”,L)),e[R]=j;e.length=b.length?b[0].length:0,x+=e.join(O),E1?b:x.name,topLevelColumnTitle:x.name}:x.name+(E>1?” (“+b+”)”:””):x.options.title&&x.options.title.text||(x.dateTime?_:Y):Y},J=function(e,x,b){let E={},L={};return x.forEach(function(x){let O=(e.keyToAxis&&e.keyToAxis[x]||x)+”Axis”,D=K(b)?e.chart[O][b]:e[O];E[x]=D&&D.categories||[],L[x]=D&&D.dateTime}),{categoryMap:E,dateTimeValueAxisMap:L}},tt=function(e,x){let b=e.pointArrayMap||[“y”];return e.data.some(e=>void 0!==e.y&&e.name)&&x&&!x.categories&&”name”!==e.exportKey?[“x”,…b]:b},te=[],ti,ts,to,tr=0,tn,ta;for(tn in this.series.forEach(function(x){let b=x.options.keys,R=x.xAxis,H=b||tt(x,R),U=H.length,Y=!x.requireSorting&&{},q=D.indexOf(R),K=J(x,H),_,ti;if(!1!==x.options.includeInDataExport&&!x.options.isInternal&&!1!==x.visible){for(V(te,function(e){return e[0]===q})||te.push([q,tr]),ti=0;ti{if(!e.tagName||”#text”===e.tagName)return e.textContent||””;let b=e.attributes,E=`<${e.tagName}`;return b&&Object.keys(b).forEach(e=>{let x=b[e];E+=` ${e}=”${x}”`}),E+=”>”+(e.textContent||””),(e.children||[]).forEach(e=>{E+=x(e)}),E+=``};return x(this.getTableAST(e))}function ts(e){let x=0,b=[],E=this.options,L=e?1.1.toLocaleString()[1]:”.”,O=$(E.exporting.useMultiLevelHeaders,!0),D=this.getDataRows(O),j=O?D.shift():null,R=D.shift(),z=function(e,x){let b=e.length;if(x.length!==b)return!1;for(;b–;)if(e[b]!==x[b])return!1;return!0},F=function(e,x,b,E){let O=$(E,””),D=”highcharts-text”+(x?” “+x:””);return”number”==typeof O?(O=O.toString(),”,”===L&&(O=O.replace(“.”,L)),D=”highcharts-number”):E||(D=”highcharts-empty”),{tagName:e,attributes:b=Y({class:D},b),textContent:O}};!1!==E.exporting.tableCaption&&b.push({tagName:”caption”,attributes:{class:”highcharts-table-caption”},textContent:$(E.exporting.tableCaption,E.title.text?E.title.text:”Chart”)});for(let e=0,b=D.length;ex&&(x=D[e].length);b.push(function(e,x,b){let L=[],D=0,j=b||x&&x.length,R,H=0,U;if(O&&e&&x&&!z(e,x)){let b=[];for(;D1&&e.attributes&&(e.attributes.valign=”top”,e.attributes.rowspan=U),b.push(e)}L.push({tagName:”tr”,children:b})}if(x){let e=[];for(D=0,j=x.length;De.children[x].textContent;if(x&&e.options.exporting&&e.options.exporting.allowTableSorting){let E=x.querySelector(“thead tr”);E&&E.childNodes.forEach(E=>{let L=E.closest(“table”);E.addEventListener(“click”,function(){let O,D,j=[…x.querySelectorAll(“tr:not(thead tr)”)],R=[…E.parentNode.children];j.sort((O=R.indexOf(E),D=e.ascendingOrderInTable=!e.ascendingOrderInTable,(e,x)=>{let E,L;return E=b(D?e:x,O),L=b(D?x:e,O),””===E||””===L||isNaN(E)||isNaN(L)?E.toString().localeCompare(L):E-L})).forEach(e=>{L.appendChild(e)}),R.forEach(e=>{[“highcharts-sort-ascending”,”highcharts-sort-descending”].forEach(x=>{e.classList.contains(x)&&e.classList.remove(x)})}),E.classList.add(e.ascendingOrderInTable?”highcharts-sort-ascending”:”highcharts-sort-descending”)})})}}function th(){this.options&&this.options.exporting&&this.options.exporting.showTable&&!this.options.chart.forExport&&this.viewData()}function td(){this.dataTableDiv?.remove()}return{compose:function(e,x){let b=e.prototype;if(!b.getCSV){let L=D().exporting;H(e,”afterViewData”,tl),H(e,”render”,th),H(e,”destroy”,td),b.downloadCSV=Z,b.downloadXLS=J,b.getCSV=tt,b.getDataRows=te,b.getTable=ti,b.getTableAST=ts,b.hideData=to,b.toggleDataTable=tr,b.viewData=tn,L&&(Y(L.menuItemDefinitions,{downloadCSV:{textKey:”downloadCSV”,onclick:function(){this.downloadCSV()}},downloadXLS:{textKey:”downloadXLS”,onclick:function(){this.downloadXLS()}},viewData:{textKey:”viewData”,onclick:function(){_.call(this,this.toggleDataTable)}}}),L.buttons&&L.buttons.contextButton.menuItems&&L.buttons.contextButton.menuItems.push(“separator”,”downloadCSV”,”downloadXLS”,”viewData”)),j(E);let{arearange:O,gantt:R,map:z,mapbubble:F,treemap:U,xrange:V}=x.types;O&&(O.prototype.keyToAxis={low:”y”,high:”y”}),R&&(R.prototype.exportKey=”name”,R.prototype.keyToAxis={start:”x”,end:”x”}),z&&(z.prototype.exportKey=”name”),F&&(F.prototype.exportKey=”name”),U&&(U.prototype.exportKey=”name”),V&&(V.prototype.keyToAxis={x2:”x”})}}}}),b(x,”masters/modules/export-data.src.js”,[x[“Core/Globals.js”],x[“Extensions/DownloadURL.js”],x[“Extensions/ExportData/ExportData.js”]],function(e,x,b){return e.dataURLtoBlob=e.dataURLtoBlob||x.dataURLtoBlob,e.downloadURL=e.downloadURL||x.downloadURL,b.compose(e.Chart,e.Series),e})},e.exports?(L.default=L,e.exports=L):void 0===(E=(function(e){return L(e),L.Highcharts=e,L}).apply(x,[b(14783),b(9264)]))||(e.exports=E)},37364:(e,x,b)=>{“use strict”;b.d(x,{A:()=>L});var E=b(26937);let L=(0,b(3767).A)(function(e,x,b){(0,E.A)(e,x,b)})},44802:(e,x,b)=>{var E,L;L=function(e){“use strict”;var x=e?e._modules:{};function b(e,x,b,E){e.hasOwnProperty(x)||(e[x]=E.apply(null,b),”function”==typeof CustomEvent&&window.dispatchEvent(new CustomEvent(“HighchartsModuleLoaded”,{detail:{path:x,module:e[x]}})))}b(x,”Accessibility/Utils/HTMLUtilities.js”,[x[“Core/Globals.js”],x[“Core/Utilities.js”]],function(e,x){let{doc:b,win:E}=e,{css:L}=x,O=E.EventTarget&&new E.EventTarget||”none”;function D(e){if(“function”==typeof E.MouseEvent)return new E.MouseEvent(e.type,e);if(b.createEvent){let x=b.createEvent(“MouseEvent”);if(x.initMouseEvent)return x.initMouseEvent(e.type,e.bubbles,e.cancelable,e.view||E,e.detail,e.screenX,e.screenY,e.clientX,e.clientY,e.ctrlKey,e.altKey,e.shiftKey,e.metaKey,e.button,e.relatedTarget),x}return j(e.type)}function j(e,x,L){let D=x||{x:0,y:0};if(“function”==typeof E.MouseEvent)return new E.MouseEvent(e,{bubbles:!0,cancelable:!0,composed:!0,button:0,buttons:1,relatedTarget:L||O,view:E,detail:+(“click”===e),screenX:D.x,screenY:D.y,clientX:D.x,clientY:D.y});if(b.createEvent){let x=b.createEvent(“MouseEvent”);if(x.initMouseEvent)return x.initMouseEvent(e,!0,!0,E,+(“click”===e),D.x,D.y,D.x,D.y,!1,!1,!1,!1,0,null),x}return{type:e}}return{addClass:function(e,x){e.classList?e.classList.add(x):0>e.className.indexOf(x)&&(e.className+=” “+x)},cloneMouseEvent:D,cloneTouchEvent:function(e){let x=e=>{let x=[];for(let b=0;b/g,”>”).replace(/”/g,”"”).replace(/’/g,”'”).replace(/\//g,”/”)},getElement:function(e){return b.getElementById(e)},getFakeMouseEvent:j,getHeadingTagNameForElement:function(e){let x=e=>”h”+Math.min(6,parseInt(e.slice(1),10)+1),b=e=>/H[1-6]/.test(e),E=e=>{let L=(e=>{let x=e;for(;x=x.previousSibling;){let e=x.tagName||””;if(b(e))return e}return””})(e);if(L)return x(L);let O=e.parentElement;if(!O)return”p”;let D=O.tagName;return b(D)?x(D):E(O)};return E(e)},removeChildNodes:function(e){for(;e.lastChild;)e.removeChild(e.lastChild)},removeClass:function(e,x){e.classList?e.classList.remove(x):e.className=e.className.replace(RegExp(x,”g”),””)},removeElement:function(e){e&&e.parentNode&&e.parentNode.removeChild(e)},reverseChildNodes:function(e){let x=e.childNodes.length;for(;x–;)e.appendChild(e.childNodes[x])},simulatedEventTarget:O,stripHTMLTagsFromString:function(e,x=!1){return”string”==typeof e?x?e.replace(/<\/?[^>]+(>|$)/g,””):e.replace(/<\/?(?!\s)[^>]+(>|$)/g,””):e},visuallyHideElement:function(e){L(e,{position:”absolute”,width:”1px”,height:”1px”,overflow:”hidden”,whiteSpace:”nowrap”,clip:”rect(1px, 1px, 1px, 1px)”,marginTop:”-3px”,”-ms-filter”:”progid:DXImageTransform.Microsoft.Alpha(Opacity=1)”,filter:”alpha(opacity=1)”,opacity:.01})}}}),b(x,”Accessibility/A11yI18n.js”,[x[“Core/Templating.js”],x[“Core/Utilities.js”]],function(e,x){var b;let{format:E}=e,{getNestedProperty:L,pick:O}=x;return function(e){function x(e,x,b){let D=(e,x)=>{let b=e.slice(x||0),E=b.indexOf(“{“),L=b.indexOf(“}”);if(E>-1&&L>E)return{statement:b.substring(E+1,L),begin:x+E+1,end:x+L}},j=[],R,z,F=0;do R=D(e,F),(z=e.substring(F,R&&R.begin-1)).length&&j.push({value:z,type:”constant”}),R&&j.push({value:R.statement,type:”statement”}),F=R?R.end+1:F+1;while(R)return j.forEach(e=>{“statement”===e.type&&(e.value=function(e,x){let b,E,D=e.indexOf(“#each(“),j=e.indexOf(“#plural(“),R=e.indexOf(“[“),z=e.indexOf(“]”);if(D>-1){let O=e.slice(D).indexOf(“)”)+D,j=e.substring(0,D),R=e.substring(O+1),z=e.substring(D+6,O).split(“,”),F=Number(z[1]),H;if(E=””,b=L(z[0],x)){H=(F=isNaN(F)?b.length:F)<0?b.length+F:Math.min(F,b.length);for(let e=0;e-1){var F;let b=e.slice(j).indexOf(“)”)+j,D=e.substring(j+8,b).split(“,”);switch(Number(L(D[0],x))){case 0:E=O(D[4],D[1]);break;case 1:E=O(D[2],D[1]);break;case 2:E=O(D[3],D[1]);break;default:E=D[1]}return E?(F=E).trim&&F.trim()||F.replace(/^\s+|\s+$/g,””):””}if(R>-1){let E,O=e.substring(0,R),D=Number(e.substring(R+1,z));return b=L(O,x),!isNaN(D)&&b&&(D<0?void 0===(E=b[b.length+D])&&(E=b[0]):void 0===(E=b[D])&&(E=b[b.length-1])),void 0!==E?E:""}return"{"+e+"}"}(e.value,x))}),E(j.reduce((e,x)=>e+x.value,””),x,b)}function b(e,b){let E=e.split(“.”),L=this.options.lang,O=0;for(;O!!e.graphic);return x&&x.graphic&&x.graphic.element}}function z(e){let x=R(e);return x&&x.parentNode||e.graph&&e.graph.element||e.group&&e.group.element}return{fireEventOnWrappedOrUnwrappedElement:function e(x,b){let L=b.type,O=x.hcEvents;E.createEvent&&(x.dispatchEvent||x.fireEvent)?x.dispatchEvent?x.dispatchEvent(b):x.fireEvent(L,b):O&&O[L]?j(x,L,b):x.element&&e(x.element,b)},getChartTitle:function(e){return L(e.options.title.text||e.langFormat(“accessibility.defaultChartTitle”,{chart:e}),e.renderer.forExport)},getAxisDescription:function(e){return e&&(e.options.accessibility?.description||e.axisTitle?.textStr||e.options.id||e.categories&&”categories”||e.dateTime&&”Time”||”values”)},getAxisRangeDescription:function(e){let x,b,E,L,O,D,j,R,z,F,H,U,Y=e.options||{};return Y.accessibility&&void 0!==Y.accessibility.rangeDescription?Y.accessibility.rangeDescription:e.categories?(x=e.chart,e.dataMax&&e.dataMin?x.langFormat(“accessibility.axis.rangeCategories”,{chart:x,axis:e,numCategories:e.dataMax-e.dataMin+1}):””):e.dateTime&&(0===e.min||0===e.dataMin)?(b=e.chart,E={},L=e.dataMin||e.min||0,O=e.dataMax||e.max||0,D=”Seconds”,E.Seconds=(O-L)/1e3,E.Minutes=E.Seconds/60,E.Hours=E.Minutes/60,E.Days=E.Hours/24,[“Minutes”,”Hours”,”Days”].forEach(function(e){E[e]>2&&(D=e)}),j=E[D].toFixed(+(“Seconds”!==D&&”Minutes”!==D)),b.langFormat(“accessibility.axis.timeRange”+D,{chart:b,axis:e,range:j.replace(“.0″,””)})):(F=(z=(R=e.chart).options)&&z.accessibility&&z.accessibility.screenReaderSection.axisRangeDateFormat||””,H={min:e.dataMin||e.min||0,max:e.dataMax||e.max||0},U=function(x){return e.dateTime?R.time.dateFormat(F,H[x]):H[x].toString()},R.langFormat(“accessibility.axis.rangeFromTo”,{chart:R,axis:e,rangeFrom:U(“min”),rangeTo:U(“max”)}))},getPointFromXY:function(e,x,b){let E=e.length,L;for(;E–;)if(L=D(e[E].points||[],function(e){return e.x===x&&e.y===b}))return L},getSeriesFirstPointElement:R,getSeriesFromName:function(e,x){return x?(e.series||[]).filter(function(e){return e.name===x}):e.series},getSeriesA11yElement:z,unhideChartElementFromAT:function e(x,b){b.setAttribute(“aria-hidden”,!1),b!==x.renderTo&&b.parentNode&&b.parentNode!==E.body&&(Array.prototype.forEach.call(b.parentNode.childNodes,function(e){e.hasAttribute(“aria-hidden”)||e.setAttribute(“aria-hidden”,!0)}),e(x,b.parentNode))},hideSeriesFromAT:function(e){let x=z(e);x&&x.setAttribute(“aria-hidden”,!0)},scrollAxisToPoint:function(e){let x=e.series.xAxis,b=e.series.yAxis,E=x&&x.scrollbar?x:b,L=E&&E.scrollbar;if(L&&O(L.to)&&O(L.from)){let x=L.to-L.from,b=function(e,x){if(!O(e.dataMin)||!O(e.dataMax))return 0;let b=e.toPixels(e.dataMin),E=e.toPixels(e.dataMax),L=”xAxis”===e.coll?”x”:”y”;return(e.toPixels(x[L]||0)-b)/(E-b)}(E,e);L.updatePosition(b-x/2,b+x/2),j(L,”changed”,{from:L.from,to:L.to,trigger:”scrollbar”,DOMEvent:null})}}}}),b(x,”Accessibility/Utils/DOMElementProvider.js”,[x[“Core/Globals.js”],x[“Accessibility/Utils/HTMLUtilities.js”]],function(e,x){let{doc:b}=e,{removeElement:E}=x;return class{constructor(){this.elements=[]}createElement(){let e=b.createElement.apply(b,arguments);return this.elements.push(e),e}removeElement(e){E(e),this.elements.splice(this.elements.indexOf(e),1)}destroyCreatedElements(){this.elements.forEach(function(e){E(e)}),this.elements=[]}}}),b(x,”Accessibility/Utils/EventProvider.js”,[x[“Core/Globals.js”],x[“Core/Utilities.js”]],function(e,x){let{addEvent:b}=x;return class{constructor(){this.eventRemovers=[]}addEvent(){let x=b.apply(e,arguments);return this.eventRemovers.push({element:arguments[0],remover:x}),x}removeEvent(e){let x=this.eventRemovers.map(e=>e.remover).indexOf(e);this.eventRemovers[x].remover(),this.eventRemovers.splice(x,1)}removeAddedEvents(){this.eventRemovers.map(e=>e.remover).forEach(e=>e()),this.eventRemovers=[]}}}),b(x,”Accessibility/AccessibilityComponent.js”,[x[“Accessibility/Utils/ChartUtilities.js”],x[“Accessibility/Utils/DOMElementProvider.js”],x[“Accessibility/Utils/EventProvider.js”],x[“Accessibility/Utils/HTMLUtilities.js”],x[“Core/Utilities.js”]],function(e,x,b,E,L){let{fireEventOnWrappedOrUnwrappedElement:O}=e,{getFakeMouseEvent:D}=E,{extend:j}=L;let l=class l{initBase(e,E){this.chart=e,this.eventProvider=new b,this.domElementProvider=new x,this.proxyProvider=E,this.keyCodes={left:37,right:39,up:38,down:40,enter:13,space:32,esc:27,tab:9,pageUp:33,pageDown:34,end:35,home:36}}addEvent(e,x,b,E){return this.eventProvider.addEvent(e,x,b,E)}createElement(e,x){return this.domElementProvider.createElement(e,x)}fakeClickEvent(e){O(e,D(“click”))}destroyBase(){this.domElementProvider.destroyCreatedElements(),this.eventProvider.removeAddedEvents()}};return j(l.prototype,{init(){},getKeyboardNavigation:function(){},onChartUpdate(){},onChartRender(){},destroy(){}}),l}),b(x,”Accessibility/KeyboardNavigationHandler.js”,[x[“Core/Utilities.js”]],function(e){let{find:x}=e;return class{constructor(e,x){this.chart=e,this.keyCodeMap=x.keyCodeMap||[],this.validate=x.validate,this.init=x.init,this.terminate=x.terminate,this.response={success:1,prev:2,next:3,noHandler:4,fail:5}}run(e){let b=e.which||e.keyCode,E=this.response.noHandler,L=x(this.keyCodeMap,function(e){return e[0].indexOf(b)>-1});return L?E=L[1].call(this,b,e):9===b&&(E=this.response[e.shiftKey?”prev”:”next”]),E}}}),b(x,”Accessibility/Components/ContainerComponent.js”,[x[“Accessibility/AccessibilityComponent.js”],x[“Accessibility/KeyboardNavigationHandler.js”],x[“Accessibility/Utils/ChartUtilities.js”],x[“Core/Globals.js”],x[“Accessibility/Utils/HTMLUtilities.js”]],function(e,x,b,E,L){let{unhideChartElementFromAT:O,getChartTitle:D}=b,{doc:j}=E,{stripHTMLTagsFromString:R}=L;return class extends e{onChartUpdate(){this.handleSVGTitleElement(),this.setSVGContainerLabel(),this.setGraphicContainerAttrs(),this.setRenderToAttrs(),this.makeCreditsAccessible()}handleSVGTitleElement(){let e=this.chart,x=”highcharts-title-“+e.index,b=R(e.langFormat(“accessibility.svgContainerTitle”,{chartTitle:D(e)}));if(b.length){let E=this.svgTitleElement=this.svgTitleElement||j.createElementNS(“http://www.w3.org/2000/svg”,”title”);E.textContent=b,E.id=x,e.renderTo.insertBefore(E,e.renderTo.firstChild)}}setSVGContainerLabel(){let e=this.chart,x=e.langFormat(“accessibility.svgContainerLabel”,{chartTitle:D(e)});e.renderer.box&&x.length&&e.renderer.box.setAttribute(“aria-label”,x)}setGraphicContainerAttrs(){let e=this.chart,x=e.langFormat(“accessibility.graphicContainerLabel”,{chartTitle:D(e)});x.length&&e.container.setAttribute(“aria-label”,x)}setRenderToAttrs(){let e=this.chart,x=”disabled”!==e.options.accessibility.landmarkVerbosity,b=e.langFormat(“accessibility.chartContainerLabel”,{title:D(e),chart:e});b&&(e.renderTo.setAttribute(“role”,x?”region”:”group”),e.renderTo.setAttribute(“aria-label”,b))}makeCreditsAccessible(){let e=this.chart,x=e.credits;x&&(x.textStr&&x.element.setAttribute(“aria-label”,e.langFormat(“accessibility.credits”,{creditsStr:R(x.textStr,e.renderer.forExport)})),O(e,x.element))}getKeyboardNavigation(){let e=this.chart;return new x(e,{keyCodeMap:[],validate:function(){return!0},init:function(){let x=e.accessibility;x&&x.keyboardNavigation.tabindexContainer.focus()}})}destroy(){this.chart.renderTo.setAttribute(“aria-hidden”,!0)}}}),b(x,”Accessibility/FocusBorder.js”,[x[“Core/Utilities.js”]],function(e){var x;let{addEvent:b,pick:E}=e;return function(e){let x=[“x”,”y”,”transform”,”width”,”height”,”r”,”d”,”stroke-width”];function L(){let e=this.focusElement,x=this.options.accessibility.keyboardNavigation.focusBorder;e&&(e.removeFocusBorder(),x.enabled&&e.addFocusBorder(x.margin,{stroke:x.style.color,strokeWidth:x.style.lineWidth,r:x.style.borderRadius}))}function O(e,x){let E=this.options.accessibility.keyboardNavigation.focusBorder,L=x||e.element;L&&L.focus&&(L.hcEvents&&L.hcEvents.focusin||b(L,”focusin”,function(){}),L.focus(),E.hideBrowserFocusOutline&&(L.style.outline=”none”)),this.focusElement&&this.focusElement.removeFocusBorder(),this.focusElement=e,this.renderFocusBorder()}function D(e,b){this.focusBorder&&this.removeFocusBorder();let L=this.getBBox(),O=E(e,3),D=this.parentGroup,j=this.scaleX||D&&D.scaleX,R=this.scaleY||D&&D.scaleY,z=(j?!R:R)?Math.abs(j||R||1):(Math.abs(j||1)+Math.abs(R||1))/2;L.x+=this.translateX?this.translateX:0,L.y+=this.translateY?this.translateY:0;let F=L.x-O,H=L.y-O,U=L.width+2*O,Y=L.height+2*O,V=!!this.text;if(“text”===this.element.nodeName||V){let e,x,b=!!this.rotation,E=V?{x:+!!b,y:0}:(e=0,x=0,”middle”===this.attr(“text-anchor”)?e=x=.5:this.rotation?e=.25:x=.75,{x:e,y:x}),D=+this.attr(“x”),j=+this.attr(“y”);if(isNaN(D)||(F=D-L.width*E.x-O),isNaN(j)||(H=j-L.height*E.y-O),V&&b){let e=U;U=Y,Y=e,isNaN(D)||(F=D-L.height*E.x-O),isNaN(j)||(H=j-L.width*E.y-O)}}this.focusBorder=this.renderer.rect(F,H,U,Y,parseInt((b&&b.r||0).toString(),10)/z).addClass(“highcharts-focus-border”).attr({zIndex:99}).add(D),this.renderer.styledMode||this.focusBorder.attr({stroke:b&&b.stroke,”stroke-width”:(b&&b.strokeWidth||0)/z}),function(e,…b){e.focusBorderUpdateHooks||(e.focusBorderUpdateHooks={},x.forEach(x=>{let E=x+”Setter”,L=e[E]||e._defaultSetter;e.focusBorderUpdateHooks[E]=L,e[E]=function(){let x=L.apply(e,arguments);return e.addFocusBorder.apply(e,b),x}}))}(this,e,b),function(e){if(e.focusBorderDestroyHook)return;let x=e.destroy;e.destroy=function(){return e.focusBorder&&e.focusBorder.destroy&&e.focusBorder.destroy(),x.apply(e,arguments)},e.focusBorderDestroyHook=x}(this)}function j(){var e;e=this,e.focusBorderUpdateHooks&&(Object.keys(e.focusBorderUpdateHooks).forEach(x=>{let b=e.focusBorderUpdateHooks[x];b===e._defaultSetter?delete e[x]:e[x]=b}),delete e.focusBorderUpdateHooks),this.focusBorderDestroyHook&&(this.destroy=this.focusBorderDestroyHook,delete this.focusBorderDestroyHook),this.focusBorder&&(this.focusBorder.destroy(),delete this.focusBorder)}e.compose=function(e,x){let b=e.prototype,E=x.prototype;b.renderFocusBorder||(b.renderFocusBorder=L,b.setFocusToElement=O),E.addFocusBorder||(E.addFocusBorder=D,E.removeFocusBorder=j)}}(x||(x={})),x}),b(x,”Accessibility/Utils/Announcer.js”,[x[“Core/Renderer/HTML/AST.js”],x[“Accessibility/Utils/DOMElementProvider.js”],x[“Core/Globals.js”],x[“Accessibility/Utils/HTMLUtilities.js”],x[“Core/Utilities.js”]],function(e,x,b,E,L){let{doc:O}=b,{addClass:D,visuallyHideElement:j}=E,{attr:R}=L;return class{constructor(e,b){this.chart=e,this.domElementProvider=new x,this.announceRegion=this.addAnnounceRegion(b)}destroy(){this.domElementProvider.destroyCreatedElements()}announce(x){e.setElementHTML(this.announceRegion,x),this.clearAnnouncementRegionTimer&&clearTimeout(this.clearAnnouncementRegionTimer),this.clearAnnouncementRegionTimer=setTimeout(()=>{this.announceRegion.innerHTML=e.emptyHTML,delete this.clearAnnouncementRegionTimer},3e3)}addAnnounceRegion(e){let x=this.chart.announcerContainer||this.createAnnouncerContainer(),b=this.domElementProvider.createElement(“div”);return R(b,{“aria-hidden”:!1,”aria-live”:e,”aria-atomic”:!0}),this.chart.styledMode?D(b,”highcharts-visually-hidden”):j(b),x.appendChild(b),b}createAnnouncerContainer(){let e=this.chart,x=O.createElement(“div”);return R(x,{“aria-hidden”:!1,class:”highcharts-announcer-container”}),x.style.position=”relative”,e.renderTo.insertBefore(x,e.renderTo.firstChild),e.announcerContainer=x,x}}}),b(x,”Accessibility/Components/AnnotationsA11y.js”,[x[“Accessibility/Utils/HTMLUtilities.js”]],function(e){let{escapeStringForHTML:x,stripHTMLTagsFromString:b}=e;function E(e){return(e.annotations||[]).reduce((e,x)=>(x.options&&!1!==x.options.visible&&(e=e.concat(x.labels)),e),[])}function L(e){return e.options&&e.options.accessibility&&e.options.accessibility.description||e.graphic&&e.graphic.text&&e.graphic.text.textStr||””}function O(e){let x=e.options&&e.options.accessibility&&e.options.accessibility.description;if(x)return x;let b=e.chart,E=L(e),O=e.points.filter(e=>!!e.graphic).map(e=>{let x=e.accessibility&&e.accessibility.valueDescription||e.graphic&&e.graphic.element&&e.graphic.element.getAttribute(“aria-label”)||””,b=e&&e.series.name||””;return(b?b+”, “:””)+”data point “+x}).filter(e=>!!e),D=O.length,j=D>1?”MultiplePoints”:D?”SinglePoint”:”NoPoints”,R={annotationText:E,annotation:e,numPoints:D,annotationPoint:O[0],additionalAnnotationPoints:O.slice(1)};return b.langFormat(“accessibility.screenReaderSection.annotations.description”+j,R)}function D(e){return E(e).map(E=>{let L=x(b(O(E),e.renderer.forExport));return L?`
  • ${L}
  • `:””})}return{getAnnotationsInfoHTML:function(e){let x=e.annotations;if(!(x&&x.length))return””;let b=D(e);return`
      ${b.join(” “)}
    `},getAnnotationLabelDescription:O,getAnnotationListItems:D,getPointAnnotationTexts:function(e){let x=E(e.series.chart).filter(x=>x.points.indexOf(e)>-1);return x.length?x.map(e=>`${L(e)}`):[]}}}),b(x,”Accessibility/Components/InfoRegionsComponent.js”,[x[“Accessibility/A11yI18n.js”],x[“Accessibility/AccessibilityComponent.js”],x[“Accessibility/Utils/Announcer.js”],x[“Accessibility/Components/AnnotationsA11y.js”],x[“Core/Renderer/HTML/AST.js”],x[“Accessibility/Utils/ChartUtilities.js”],x[“Core/Templating.js”],x[“Core/Globals.js”],x[“Accessibility/Utils/HTMLUtilities.js”],x[“Core/Utilities.js”]],function(e,x,b,E,L,O,D,j,R,z){let{getAnnotationsInfoHTML:F}=E,{getAxisDescription:H,getAxisRangeDescription:U,getChartTitle:Y,unhideChartElementFromAT:V}=O,{format:q}=D,{doc:K}=j,{addClass:$,getElement:_,getHeadingTagNameForElement:Z,stripHTMLTagsFromString:J,visuallyHideElement:tt}=R,{attr:te,pick:ti,replaceNested:ts}=z;function to(e){return ts(e,[/<([\w\-.:!]+)\b[^<>]*>\s*<\/\1>/g,””])}return class extends x{constructor(){super(…arguments),this.screenReaderSections={}}init(){let e=this.chart,x=this;this.initRegionsDefinitions(),this.addEvent(e,”aftergetTableAST”,function(e){x.onDataTableCreated(e)}),this.addEvent(e,”afterViewData”,function(e){e.wasHidden&&(x.dataTableDiv=e.element,setTimeout(function(){x.focusDataTable()},300))}),this.addEvent(e,”afterHideData”,function(){x.viewDataTableButton&&x.viewDataTableButton.setAttribute(“aria-expanded”,”false”)}),this.announcer=new b(e,”assertive”)}initRegionsDefinitions(){let e=this,x=this.chart.options.accessibility;this.screenReaderSections={before:{element:null,buildContent:function(b){let E=x.screenReaderSection.beforeChartFormatter;return E?E(b):e.defaultBeforeChartFormatter(b)},insertIntoDOM:function(e,x){x.renderTo.insertBefore(e,x.renderTo.firstChild)},afterInserted:function(){void 0!==e.sonifyButtonId&&e.initSonifyButton(e.sonifyButtonId),void 0!==e.dataTableButtonId&&e.initDataTableButton(e.dataTableButtonId)}},after:{element:null,buildContent:function(b){let E=x.screenReaderSection.afterChartFormatter;return E?E(b):e.defaultAfterChartFormatter()},insertIntoDOM:function(e,x){x.renderTo.insertBefore(e,x.container.nextSibling)},afterInserted:function(){e.chart.accessibility&&x.keyboardNavigation.enabled&&e.chart.accessibility.keyboardNavigation.updateExitAnchor()}}}}onChartRender(){let e=this;this.linkedDescriptionElement=this.getLinkedDescriptionElement(),this.setLinkedDescriptionAttrs(),Object.keys(this.screenReaderSections).forEach(function(x){e.updateScreenReaderSection(x)})}getLinkedDescriptionElement(){let e=this.chart.options.accessibility.linkedDescription;if(!e)return;if(“string”!=typeof e)return e;let x=q(e,this.chart),b=K.querySelectorAll(x);if(1===b.length)return b[0]}setLinkedDescriptionAttrs(){let e=this.linkedDescriptionElement;e&&(e.setAttribute(“aria-hidden”,”true”),$(e,”highcharts-linked-description”))}updateScreenReaderSection(e){let x=this.chart,b=this.screenReaderSections[e],E=b.buildContent(x),O=b.element=b.element||this.createElement(“div”),D=O.firstChild||this.createElement(“div”);E?(this.setScreenReaderSectionAttribs(O,e),L.setElementHTML(D,E),O.appendChild(D),b.insertIntoDOM(O,x),x.styledMode?$(D,”highcharts-visually-hidden”):tt(D),V(x,D),b.afterInserted&&b.afterInserted()):(O.parentNode&&O.parentNode.removeChild(O),b.element=null)}setScreenReaderSectionAttribs(e,x){let b=this.chart,E=b.langFormat(“accessibility.screenReaderSection.”+x+”RegionLabel”,{chart:b,chartTitle:Y(b)});te(e,{id:`highcharts-screen-reader-region-${x}-${b.index}`,”aria-label”:E||void 0}),e.style.position=”relative”,E&&e.setAttribute(“role”,”all”===b.options.accessibility.landmarkVerbosity?”region”:”group”)}defaultBeforeChartFormatter(){let x=this.chart,b=x.options.accessibility.screenReaderSection.beforeChartFormat;if(!b)return””;let E=this.getAxesDescription(),L=x.sonify&&x.options.sonification&&x.options.sonification.enabled,O=”highcharts-a11y-sonify-data-btn-“+x.index,D=”hc-linkto-highcharts-data-table-“+x.index,j=F(x),R=x.langFormat(“accessibility.screenReaderSection.annotations.heading”,{chart:x}),z={headingTagName:Z(x.renderTo),chartTitle:Y(x),typeDescription:this.getTypeDescriptionText(),chartSubtitle:this.getSubtitleText(),chartLongdesc:this.getLongdescText(),xAxisDescription:E.xAxis,yAxisDescription:E.yAxis,playAsSoundButton:L?this.getSonifyButtonText(O):””,viewTableButton:x.getCSV?this.getDataTableButtonText(D):””,annotationsTitle:j?R:””,annotationsList:j},H=e.i18nFormat(b,z,x);return this.dataTableButtonId=D,this.sonifyButtonId=O,to(H)}defaultAfterChartFormatter(){let x=this.chart,b=x.options.accessibility.screenReaderSection.afterChartFormat;if(!b)return””;let E={endOfChartMarker:this.getEndOfChartMarkerText()};return to(e.i18nFormat(b,E,x))}getLinkedDescription(){let e=this.linkedDescriptionElement;return J(e&&e.innerHTML||””,this.chart.renderer.forExport)}getLongdescText(){let e=this.chart.options,x=e.caption,b=x&&x.text,E=this.getLinkedDescription();return e.accessibility.description||E||b||””}getTypeDescriptionText(){var e;let x,b,E,L,O,D,j,R=this.chart;return R.types?R.options.accessibility.typeDescription||(x=(e=R.types)[0],b=R.series&&R.series[0]||{},E=R.mapView&&R.mapView.geoMap&&R.mapView.geoMap.title,L={numSeries:R.series.length,numPoints:b.points&&b.points.length,chart:R,mapTitle:E},x?”map”===x||”tiledwebmap”===x?L.mapTitle?R.langFormat(“accessibility.chartTypes.mapTypeDescription”,L):R.langFormat(“accessibility.chartTypes.unknownMap”,L):R.types.length>1?R.langFormat(“accessibility.chartTypes.combinationChart”,L):(O=e[0],D=R.langFormat(“accessibility.seriesTypeDescriptions.”+O,L),j=R.series&&R.series.length<2?"Single":"Multiple",(R.langFormat("accessibility.chartTypes."+O+j,L)||R.langFormat("accessibility.chartTypes.default"+j,L))+(D?" "+D:"")):R.langFormat("accessibility.chartTypes.emptyChart",L)):""}getDataTableButtonText(e){let x=this.chart;return'“}getSonifyButtonText(e){let x=this.chart;return x.options.sonification&&!1===x.options.sonification.enabled?””:’“}getSubtitleText(){let e=this.chart.options.subtitle;return J(e&&e.text||””,this.chart.renderer.forExport)}getEndOfChartMarkerText(){let e=_(`highcharts-end-of-chart-marker-${this.chart.index}`);if(e)return e.outerHTML;let x=this.chart,b=x.langFormat(“accessibility.screenReaderSection.endOfChartMarker”,{chart:x});return’
    ‘+b+”
    “}onDataTableCreated(e){let x=this.chart;if(x.options.accessibility.enabled){this.viewDataTableButton&&this.viewDataTableButton.setAttribute(“aria-expanded”,”true”);let b=e.tree.attributes||{};b.tabindex=-1,b.summary=x.langFormat(“accessibility.table.tableSummary”,{chart:x}),e.tree.attributes=b}}focusDataTable(){let e=this.dataTableDiv,x=e&&e.getElementsByTagName(“table”)[0];x&&x.focus&&x.focus()}initSonifyButton(e){let x=this.sonifyButton=_(e),b=this.chart,E=e=>{x&&(x.setAttribute(“aria-hidden”,”true”),x.setAttribute(“aria-label”,””)),e.preventDefault(),e.stopPropagation();let E=b.langFormat(“accessibility.sonification.playAsSoundClickAnnouncement”,{chart:b});this.announcer.announce(E),setTimeout(()=>{x&&(x.removeAttribute(“aria-hidden”),x.removeAttribute(“aria-label”)),b.sonify&&b.sonify()},1e3)};x&&b&&(x.setAttribute(“tabindex”,-1),x.onclick=function(e){(b.options.accessibility&&b.options.accessibility.screenReaderSection.onPlayAsSoundClick||E).call(this,e,b)})}initDataTableButton(e){let x=this.viewDataTableButton=_(e),b=this.chart,E=e.replace(“hc-linkto-“,””);x&&(te(x,{tabindex:-1,”aria-expanded”:!!_(E)}),x.onclick=b.options.accessibility.screenReaderSection.onViewDataTableClick||function(){b.viewData()})}getAxesDescription(){let e=this.chart,x=function(x,b){let E=e[x];return E.length>1||E[0]&&ti(E[0].options.accessibility&&E[0].options.accessibility.enabled,b)},b=!!e.types&&0>e.types.indexOf(“map”)&&0>e.types.indexOf(“treemap”)&&0>e.types.indexOf(“tilemap”),E=!!e.hasCartesianSeries,L=x(“xAxis”,!e.angular&&E&&b),O=x(“yAxis”,E&&b),D={};return L&&(D.xAxis=this.getAxisDescriptionText(“xAxis”)),O&&(D.yAxis=this.getAxisDescriptionText(“yAxis”)),D}getAxisDescriptionText(e){let x=this.chart,b=x[e];return x.langFormat(“accessibility.axis.”+e+”Description”+(b.length>1?”Plural”:”Singular”),{chart:x,names:b.map(function(e){return H(e)}),ranges:b.map(function(e){return U(e)}),numAxes:b.length})}destroy(){this.announcer&&this.announcer.destroy()}}}),b(x,”Accessibility/Components/MenuComponent.js”,[x[“Core/Utilities.js”],x[“Accessibility/AccessibilityComponent.js”],x[“Accessibility/KeyboardNavigationHandler.js”],x[“Accessibility/Utils/ChartUtilities.js”],x[“Accessibility/Utils/HTMLUtilities.js”]],function(e,x,b,E,L){let{attr:O}=e,{getChartTitle:D,unhideChartElementFromAT:j}=E,{getFakeMouseEvent:R}=L;function z(e){return e.exportSVGElements&&e.exportSVGElements[0]}let c=class c extends x{init(){let e=this.chart,x=this;this.addEvent(e,”exportMenuShown”,function(){x.onMenuShown()}),this.addEvent(e,”exportMenuHidden”,function(){x.onMenuHidden()}),this.createProxyGroup()}onMenuHidden(){let e=this.chart.exportContextMenu;e&&e.setAttribute(“aria-hidden”,”true”),this.setExportButtonExpandedState(“false”)}onMenuShown(){let e=this.chart,x=e.exportContextMenu;x&&(this.addAccessibleContextMenuAttribs(),j(e,x)),this.setExportButtonExpandedState(“true”)}setExportButtonExpandedState(e){this.exportButtonProxy&&this.exportButtonProxy.innerElement.setAttribute(“aria-expanded”,e)}onChartRender(){let e=this.chart,x=e.focusElement,b=e.accessibility;this.proxyProvider.clearGroup(“chartMenu”),this.proxyMenuButton(),this.exportButtonProxy&&x&&x===e.exportingGroup&&(x.focusBorder?e.setFocusToElement(x,this.exportButtonProxy.innerElement):b&&b.keyboardNavigation.tabindexContainer.focus())}proxyMenuButton(){let e,x,b=this.chart,E=this.proxyProvider,L=z(b);e=b.options.exporting,x=z(b),e&&!1!==e.enabled&&e.accessibility&&e.accessibility.enabled&&x&&x.element&&L&&(this.exportButtonProxy=E.addProxyElement(“chartMenu”,{click:L},”button”,{“aria-label”:b.langFormat(“accessibility.exporting.menuButtonLabel”,{chart:b,chartTitle:D(b)}),”aria-expanded”:!1,title:b.options.lang.contextButtonTitle||null}))}createProxyGroup(){this.chart&&this.proxyProvider&&this.proxyProvider.addGroup(“chartMenu”)}addAccessibleContextMenuAttribs(){let e=this.chart,x=e.exportDivElements;if(x&&x.length){x.forEach(e=>{e&&(“LI”!==e.tagName||e.children&&e.children.length?e.setAttribute(“aria-hidden”,”true”):e.setAttribute(“tabindex”,-1))});let b=x[0]&&x[0].parentNode;b&&O(b,{“aria-hidden”:void 0,”aria-label”:e.langFormat(“accessibility.exporting.chartMenuLabel”,{chart:e}),role:”list”})}}getKeyboardNavigation(){let e=this.keyCodes,x=this.chart,E=this;return new b(x,{keyCodeMap:[[[e.left,e.up],function(){return E.onKbdPrevious(this)}],[[e.right,e.down],function(){return E.onKbdNext(this)}],[[e.enter,e.space],function(){return E.onKbdClick(this)}]],validate:function(){return!!x.exporting&&!1!==x.options.exporting.enabled&&!1!==x.options.exporting.accessibility.enabled},init:function(){let e=E.exportButtonProxy,b=E.chart.exportingGroup;e&&b&&x.setFocusToElement(b,e.innerElement)},terminate:function(){x.hideExportMenu()}})}onKbdPrevious(e){let x=this.chart,b=x.options.accessibility,E=e.response,L=x.highlightedExportItemIx||0;for(;L–;)if(x.highlightExportItem(L))return E.success;return b.keyboardNavigation.wrapAround?(x.highlightLastExportItem(),E.success):E.prev}onKbdNext(e){let x=this.chart,b=x.options.accessibility,E=e.response;for(let e=(x.highlightedExportItemIx||0)+1;e{e&&”highcharts-menu-item”===e.className&&e.onmouseout&&e.onmouseout(R(“mouseout”))}),this.highlightedExportItemIx=0,this.exportContextMenu.hideMenu(),this.container.focus())}function E(e){let x=this.exportDivElements&&this.exportDivElements[e],b=this.exportDivElements&&this.exportDivElements[this.highlightedExportItemIx];if(x&&”LI”===x.tagName&&!(x.children&&x.children.length)){let E=!!(this.renderTo.getElementsByTagName(“g”)[0]||{}).focus;return x.focus&&E&&x.focus(),b&&b.onmouseout&&b.onmouseout(R(“mouseout”)),x.onmouseover&&x.onmouseover(R(“mouseover”)),this.highlightedExportItemIx=e,!0}return!1}function L(){if(this.exportDivElements){let e=this.exportDivElements.length;for(;e–;)if(this.highlightExportItem(e))return!0}return!1}e.compose=function(e){let O=e.prototype;O.hideExportMenu||(O.hideExportMenu=b,O.highlightExportItem=E,O.highlightLastExportItem=L,O.showExportMenu=x)}}(c||(c={})),c}),b(x,”Accessibility/KeyboardNavigation.js”,[x[“Core/Globals.js”],x[“Accessibility/Components/MenuComponent.js”],x[“Core/Utilities.js”],x[“Accessibility/Utils/EventProvider.js”],x[“Accessibility/Utils/HTMLUtilities.js”]],function(e,x,b,E,L){let{doc:O,win:D}=e,{addEvent:j,defined:R,fireEvent:z}=b,{getElement:F,simulatedEventTarget:H}=L;let u=class u{constructor(e,x){this.currentModuleIx=NaN,this.modules=[],this.init(e,x)}init(e,x){let b=this.eventProvider=new E;this.chart=e,this.components=x,this.modules=[],this.currentModuleIx=0,this.update(),b.addEvent(this.tabindexContainer,”keydown”,e=>this.onKeydown(e)),b.addEvent(this.tabindexContainer,”focus”,e=>this.onFocus(e)),[“mouseup”,”touchend”].forEach(e=>b.addEvent(O,e,e=>this.onMouseUp(e))),[“mousedown”,”touchstart”].forEach(x=>b.addEvent(e.renderTo,x,()=>{this.isClickingChart=!0}))}update(e){let x=this.chart.options.accessibility,b=x&&x.keyboardNavigation,E=this.components;this.updateContainerTabindex(),b&&b.enabled&&e&&e.length?(this.modules=e.reduce(function(e,x){let b=E[x].getKeyboardNavigation();return e.concat(b)},[]),this.updateExitAnchor()):(this.modules=[],this.currentModuleIx=0,this.removeExitAnchor())}updateExitAnchor(){let e=F(`highcharts-end-of-chart-marker-${this.chart.index}`);this.removeExitAnchor(),e?(this.makeElementAnExitAnchor(e),this.exitAnchor=e):this.createExitAnchor()}move(e){let x=this.modules&&this.modules[this.currentModuleIx];x&&x.terminate&&x.terminate(e),this.chart.focusElement&&this.chart.focusElement.removeFocusBorder(),this.currentModuleIx+=e;let b=this.modules&&this.modules[this.currentModuleIx];if(b){if(b.validate&&!b.validate())return this.move(e);if(b.init)return b.init(e),!0}return this.currentModuleIx=0,this.exiting=!0,e>0?this.exitAnchor&&this.exitAnchor.focus():this.tabindexContainer.focus(),!1}onFocus(e){let x=this.chart,b=e.relatedTarget&&x.container.contains(e.relatedTarget),E=x.options.accessibility,L=E&&E.keyboardNavigation;if(L&&L.enabled&&!this.exiting&&!this.tabbingInBackwards&&!this.isClickingChart&&!b){let e=this.getFirstValidModuleIx();null!==e&&(this.currentModuleIx=e,this.modules[e].init(1))}this.keyboardReset=!1,this.exiting=!1}onMouseUp(e){if(delete this.isClickingChart,!this.keyboardReset&&e.relatedTarget!==H){let x=this.chart;if(!e.target||!x.container.contains(e.target)){let e=this.modules&&this.modules[this.currentModuleIx||0];e&&e.terminate&&e.terminate(),this.currentModuleIx=0}x.focusElement&&(x.focusElement.removeFocusBorder(),delete x.focusElement),this.keyboardReset=!0}}onKeydown(e){let x,b=e||D.event,E=this.modules&&this.modules.length&&this.modules[this.currentModuleIx],L=b.target;if((!L||”INPUT”!==L.nodeName||L.classList.contains(“highcharts-a11y-proxy-element”))&&(this.keyboardReset=!1,this.exiting=!1,E)){let e=E.run(b);e===E.response.success?x=!0:e===E.response.prev?x=this.move(-1):e===E.response.next&&(x=this.move(1)),x&&(b.preventDefault(),b.stopPropagation())}}updateContainerTabindex(){let e,x=this.chart.options.accessibility,b=x&&x.keyboardNavigation,E=!(b&&!1===b.enabled),L=this.chart,O=L.container;L.renderTo.hasAttribute(“tabindex”)?(O.removeAttribute(“tabindex”),e=L.renderTo):e=O,this.tabindexContainer=e;let D=e.getAttribute(“tabindex”);E&&!D?e.setAttribute(“tabindex”,”0″):E||L.container.removeAttribute(“tabindex”)}createExitAnchor(){let e=this.chart,x=this.exitAnchor=O.createElement(“div”);e.renderTo.appendChild(x),this.makeElementAnExitAnchor(x)}makeElementAnExitAnchor(e){let x=this.tabindexContainer.getAttribute(“tabindex”)||0;e.setAttribute(“class”,”highcharts-exit-anchor”),e.setAttribute(“tabindex”,x),e.setAttribute(“aria-hidden”,!1),this.addExitAnchorEventsToEl(e)}removeExitAnchor(){if(this.exitAnchor){let e=this.eventProvider.eventRemovers.find(e=>e.element===this.exitAnchor);e&&R(e.remover)&&this.eventProvider.removeEvent(e.remover),this.exitAnchor.parentNode&&this.exitAnchor.parentNode.removeChild(this.exitAnchor),delete this.exitAnchor}}addExitAnchorEventsToEl(e){let x=this.chart,b=this;this.eventProvider.addEvent(e,”focus”,function(e){let E=e||D.event,L=!(E.relatedTarget&&x.container.contains(E.relatedTarget)||b.exiting);if(x.focusElement&&delete x.focusElement,L){if(b.tabbingInBackwards=!0,b.tabindexContainer.focus(),delete b.tabbingInBackwards,E.preventDefault(),b.modules&&b.modules.length){b.currentModuleIx=b.modules.length-1;let e=b.modules[b.currentModuleIx];e&&e.validate&&!e.validate()?b.move(-1):e&&e.init(-1)}}else b.exiting=!1})}getFirstValidModuleIx(){let e=this.modules.length;for(let x=0;x{e&&e.dismissPopupContent&&e.dismissPopupContent()})}b.compose=function(e){x.compose(e);let b=e.prototype;return b.dismissPopupContent||(b.dismissPopupContent=E,j(O,”keydown”,L)),e}}(u||(u={})),u}),b(x,”Accessibility/Components/LegendComponent.js”,[x[“Core/Animation/AnimationUtilities.js”],x[“Core/Globals.js”],x[“Core/Legend/Legend.js”],x[“Core/Utilities.js”],x[“Accessibility/AccessibilityComponent.js”],x[“Accessibility/KeyboardNavigationHandler.js”],x[“Accessibility/Utils/ChartUtilities.js”],x[“Accessibility/Utils/HTMLUtilities.js”]],function(e,x,b,E,L,O,D,j){let{animObject:R}=e,{doc:z}=x,{addEvent:F,fireEvent:H,isNumber:U,pick:Y,syncTimeout:V}=E,{getChartTitle:q}=D,{stripHTMLTagsFromString:K,addClass:$,removeClass:_}=j;function Z(e){let x=e.legend&&e.legend.allItems,b=e.options.legend.accessibility||{},E=e.colorAxis&&e.colorAxis.some(e=>!e.dataClasses||!e.dataClasses.length);return!!(x&&x.length&&!E&&!1!==b.enabled)}function J(e,x){let b=x.legendItem||{};for(let E of(x.setState(e?”hover”:””,!0),[“group”,”label”,”symbol”])){let x=b[E],L=x&&x.element||x;L&&H(L,e?”mouseover”:”mouseout”)}}let A=class A extends L{constructor(){super(…arguments),this.highlightedLegendItemIx=NaN,this.proxyGroup=null}init(){let e=this;this.recreateProxies(),this.addEvent(b,”afterScroll”,function(){this.chart===e.chart&&(e.proxyProvider.updateGroupProxyElementPositions(“legend”),e.updateLegendItemProxyVisibility(),e.highlightedLegendItemIx>-1&&this.chart.highlightLegendItem(e.highlightedLegendItemIx))}),this.addEvent(b,”afterPositionItem”,function(x){this.chart===e.chart&&this.chart.renderer&&e.updateProxyPositionForItem(x.item)}),this.addEvent(b,”afterRender”,function(){this.chart===e.chart&&this.chart.renderer&&e.recreateProxies()&&V(()=>e.proxyProvider.updateGroupProxyElementPositions(“legend”),R(Y(this.chart.renderer.globalAnimation,!0)).duration)})}updateLegendItemProxyVisibility(){let e,x=this.chart,b=x.legend,E=b.allItems||[],L=b.currentPage||1,O=b.clipHeight||0;E.forEach(E=>{if(E.a11yProxyElement){let D=b.pages&&b.pages.length,j=E.a11yProxyElement.element,R=!1;if(e=E.legendItem||{},D){let x=e.pageIx||0;R=(e.y||0)+(e.label?Math.round(e.label.getBBox().height):0)-b.pages[x]>O||x!==L-1}R?x.styledMode?$(j,”highcharts-a11y-invisible”):j.style.visibility=”hidden”:(_(j,”highcharts-a11y-invisible”),j.style.visibility=””)}})}onChartRender(){Z(this.chart)||this.removeProxies()}highlightAdjacentLegendPage(e){let x=this.chart,b=x.legend,E=(b.currentPage||1)+e,L=b.pages||[];if(E>0&&E<=L.length){let e=0;for(let L of b.allItems)((L.legendItem||{}).pageIx||0)+1===E&&x.highlightLegendItem(e)&&(this.highlightedLegendItemIx=e),++e}}updateProxyPositionForItem(e){e.a11yProxyElement&&e.a11yProxyElement.refreshPosition()}recreateProxies(){let e=z.activeElement,x=this.proxyGroup,b=e&&x&&x.contains(e);return this.removeProxies(),!!Z(this.chart)&&(this.addLegendProxyGroup(),this.proxyLegendItems(),this.updateLegendItemProxyVisibility(),this.updateLegendTitle(),b&&this.chart.highlightLegendItem(this.highlightedLegendItemIx),!0)}removeProxies(){this.proxyProvider.removeGroup("legend")}updateLegendTitle(){let e=this.chart,x=K((e.legend&&e.legend.options.title&&e.legend.options.title.text||"").replace(/
    /g,” “),e.renderer.forExport),b=e.langFormat(“accessibility.legend.legendLabel”+(x?””:”NoTitle”),{chart:e,legendTitle:x,chartTitle:q(e)});this.proxyProvider.updateGroupAttrs(“legend”,{“aria-label”:b})}addLegendProxyGroup(){let e=”all”===this.chart.options.accessibility.landmarkVerbosity?”region”:null;this.proxyGroup=this.proxyProvider.addGroup(“legend”,”ul”,{“aria-label”:”_placeholder_”,role:e})}proxyLegendItems(){let e,x=this;((this.chart.legend||{}).allItems||[]).forEach(b=>{(e=b.legendItem||{}).label&&e.label.element&&x.proxyLegendItem(b)})}proxyLegendItem(e){let x=e.legendItem||{};if(!x.label||!x.group)return;let b=this.chart.langFormat(“accessibility.legend.legendItem”,{chart:this.chart,itemName:K(e.name,this.chart.renderer.forExport),item:e}),E={tabindex:-1,”aria-pressed”:e.visible,”aria-label”:b},L=x.group.div?x.label:x.group;e.a11yProxyElement=this.proxyProvider.addProxyElement(“legend”,{click:x.label,visual:L.element},”button”,E)}getKeyboardNavigation(){let e=this.keyCodes,x=this,b=this.chart;return new O(b,{keyCodeMap:[[[e.left,e.right,e.up,e.down],function(e){return x.onKbdArrowKey(this,e)}],[[e.enter,e.space],function(){return x.onKbdClick(this)}],[[e.pageDown,e.pageUp],function(b){let E=b===e.pageDown?1:-1;return x.highlightAdjacentLegendPage(E),this.response.success}]],validate:function(){return x.shouldHaveLegendNavigation()},init:function(){b.highlightLegendItem(0),x.highlightedLegendItemIx=0},terminate:function(){x.highlightedLegendItemIx=-1,b.legend.allItems.forEach(e=>J(!1,e))}})}onKbdArrowKey(e,x){let{keyCodes:{left:b,up:E},highlightedLegendItemIx:L,chart:O}=this,D=O.legend.allItems.length,j=O.options.accessibility.keyboardNavigation.wrapAround,R=x===b||x===E?-1:1;return O.highlightLegendItem(L+R)?this.highlightedLegendItemIx+=R:j&&D>1&&(this.highlightedLegendItemIx=R>0?0:D-1,O.highlightLegendItem(this.highlightedLegendItemIx)),e.response.success}onKbdClick(e){let x=this.chart.legend.allItems[this.highlightedLegendItemIx];return x&&x.a11yProxyElement&&x.a11yProxyElement.click(),e.response.success}shouldHaveLegendNavigation(){if(!Z(this.chart))return!1;let e=this.chart,x=(e.options.legend||{}).accessibility||{};return!!(e.legend.display&&x.keyboardNavigation&&x.keyboardNavigation.enabled)}destroy(){this.removeProxies()}};return function(e){function x(e){let x=this.legend.allItems,b=this.accessibility&&this.accessibility.components.legend.highlightedLegendItemIx,E=x[e],L=E?.legendItem||{};if(E){var O;let D,j;U(b)&&x[b]&&J(!1,x[b]),O=this.legend,D=(O.allItems[e].legendItem||{}).pageIx,j=O.currentPage,void 0!==D&&D+1!==j&&O.scroll(1+D-j);let R=L.label,z=E.a11yProxyElement&&E.a11yProxyElement.innerElement;return R&&R.element&&z&&this.setFocusToElement(R,z),J(!0,E),!0}return!1}function b(e){let x=this.chart.options.accessibility,b=e.item;x.enabled&&b&&b.a11yProxyElement&&b.a11yProxyElement.innerElement.setAttribute(“aria-pressed”,e.visible?”true”:”false”)}e.compose=function(e,E){let L=e.prototype;L.highlightLegendItem||(L.highlightLegendItem=x,F(E,”afterColorizeItem”,b))}}(A||(A={})),A}),b(x,”Stock/Navigator/ChartNavigatorComposition.js”,[x[“Core/Globals.js”],x[“Core/Utilities.js”]],function(e,x){let b,{isTouchDevice:E}=e,{addEvent:L,merge:O,pick:D}=x,j=[];function R(){this.navigator&&this.navigator.setBaseSeries(null,!1)}function z(){let e,x,b,E=this.legend,L=this.navigator;if(L){e=E&&E.options,x=L.xAxis,b=L.yAxis;let{scrollbarHeight:O,scrollButtonSize:j}=L;this.inverted?(L.left=L.opposite?this.chartWidth-O-L.height:this.spacing[3]+O,L.top=this.plotTop+j):(L.left=D(x.left,this.plotLeft+j),L.top=L.navigatorOptions.top||this.chartHeight-L.height-O-(this.scrollbar?.options.margin||0)-this.spacing[2]-(this.rangeSelector&&this.extraBottomMargin?this.rangeSelector.getHeight():0)-(e&&”bottom”===e.verticalAlign&&”proximate”!==e.layout&&e.enabled&&!e.floating?E.legendHeight+D(e.margin,10):0)-(this.titleOffset?this.titleOffset[2]:0)),x&&b&&(this.inverted?x.options.left=b.options.left=L.left:x.options.top=b.options.top=L.top,x.setAxisSize(),b.setAxisSize())}}function F(e){!this.navigator&&!this.scroller&&(this.options.navigator.enabled||this.options.scrollbar.enabled)&&(this.scroller=this.navigator=new b(this),D(e.redraw,!0)&&this.redraw(e.animation))}function H(){let e=this.options;(e.navigator.enabled||e.scrollbar.enabled)&&(this.scroller=this.navigator=new b(this))}function U(){let e=this.options,x=e.navigator,b=e.rangeSelector;if((x&&x.enabled||b&&b.enabled)&&(!E&&”x”===this.zooming.type||E&&”x”===this.zooming.pinchType))return!1}function Y(e){let x=e.navigator;if(x&&e.xAxis[0]){let b=e.xAxis[0].getExtremes();x.render(b.min,b.max)}}function V(e){let x=e.options.navigator||{},b=e.options.scrollbar||{};!this.navigator&&!this.scroller&&(x.enabled||b.enabled)&&(O(!0,this.options.navigator,x),O(!0,this.options.scrollbar,b),delete e.options.navigator,delete e.options.scrollbar)}return{compose:function(e,E){if(x.pushUnique(j,e)){let x=e.prototype;b=E,x.callbacks.push(Y),L(e,”afterAddSeries”,R),L(e,”afterSetChartSize”,z),L(e,”afterUpdate”,F),L(e,”beforeRender”,H),L(e,”beforeShowResetZoom”,U),L(e,”update”,V)}}}}),b(x,”Core/Axis/NavigatorAxisComposition.js”,[x[“Core/Globals.js”],x[“Core/Utilities.js”]],function(e,x){let{isTouchDevice:b}=e,{addEvent:E,correctFloat:L,defined:O,isNumber:D,pick:j}=x;function R(){this.navigatorAxis||(this.navigatorAxis=new c(this))}function z(e){let x,E=this.chart,L=E.options,D=L.navigator,j=this.navigatorAxis,R=E.zooming.pinchType,z=L.rangeSelector,F=E.zooming.type;if(this.isXAxis&&(D?.enabled||z?.enabled)){if(“y”===F&&”zoom”===e.trigger)x=!1;else if((“zoom”===e.trigger&&”xy”===F||b&&”xy”===R)&&this.options.range){let x=j.previousZoom;O(e.min)?j.previousZoom=[this.min,this.max]:x&&(e.min=x[0],e.max=x[1],j.previousZoom=void 0)}}void 0!==x&&e.preventDefault()}let c=class c{static compose(e){e.keepProps.includes(“navigatorAxis”)||(e.keepProps.push(“navigatorAxis”),E(e,”init”,R),E(e,”setExtremes”,z))}constructor(e){this.axis=e}destroy(){this.axis=void 0}toFixedRange(e,x,b,E){let R=this.axis,z=(R.pointRange||0)/2,F=j(b,R.translate(e,!0,!R.horiz)),H=j(E,R.translate(x,!0,!R.horiz));return O(b)||(F=L(F+z)),O(E)||(H=L(H-z)),D(F)&&D(H)||(F=H=void 0),{min:F,max:H}}};return c}),b(x,”Stock/Navigator/NavigatorDefaults.js”,[x[“Core/Color/Color.js”],x[“Core/Series/SeriesRegistry.js”]],function(e,x){let{parse:b}=e,{seriesTypes:E}=x;return{height:40,margin:25,maskInside:!0,handles:{width:7,borderRadius:0,height:15,symbols:[“navigator-handle”,”navigator-handle”],enabled:!0,lineWidth:1,backgroundColor:”#f2f2f2″,borderColor:”#999999″},maskFill:b(“#667aff”).setOpacity(.3).get(),outlineColor:”#999999″,outlineWidth:1,series:{type:void 0===E.areaspline?”line”:”areaspline”,fillOpacity:.05,lineWidth:1,compare:null,sonification:{enabled:!1},dataGrouping:{approximation:”average”,enabled:!0,groupPixelWidth:2,firstAnchor:”firstPoint”,anchor:”middle”,lastAnchor:”lastPoint”,units:[[“millisecond”,[1,2,5,10,20,25,50,100,200,500]],[“second”,[1,2,5,10,15,30]],[“minute”,[1,2,5,10,15,30]],[“hour”,[1,2,3,4,6,8,12]],[“day”,[1,2,3,4]],[“week”,[1,2,3]],[“month”,[1,3,6]],[“year”,null]]},dataLabels:{enabled:!1,zIndex:2},id:”highcharts-navigator-series”,className:”highcharts-navigator-series”,lineColor:null,marker:{enabled:!1},threshold:null},xAxis:{className:”highcharts-navigator-xaxis”,tickLength:0,lineWidth:0,gridLineColor:”#e6e6e6″,id:”navigator-x-axis”,gridLineWidth:1,tickPixelInterval:200,labels:{align:”left”,style:{color:”#000000″,fontSize:”0.7em”,opacity:.6,textOutline:”2px contrast”},x:3,y:-4},crosshair:!1},yAxis:{className:”highcharts-navigator-yaxis”,gridLineWidth:0,startOnTick:!1,endOnTick:!1,minPadding:.1,id:”navigator-y-axis”,maxPadding:.1,labels:{enabled:!1},crosshair:!1,title:{text:null},tickLength:0,tickWidth:0}}}),b(x,”Stock/Navigator/NavigatorSymbols.js”,[x[“Core/Renderer/SVG/Symbols.js”],x[“Core/Utilities.js”]],function(e,x){let{relativeLength:b}=x;return{“navigator-handle”:function(x,E,L,O,D={}){let j=D.width?D.width/2:L,R=b(D.borderRadius||0,Math.min(2*j,O));return[[“M”,-1.5,(O=D.height||O)/2-3.5],[“L”,-1.5,O/2+4.5],[“M”,.5,O/2-3.5],[“L”,.5,O/2+4.5],…e.rect(-j-1,.5,2*j+1,O,{r:R})]}}}),b(x,”Stock/Utilities/StockUtilities.js”,[x[“Core/Utilities.js”]],function(e){let{defined:x}=e;return{setFixedRange:function(e){let b=this.xAxis[0];x(b.dataMax)&&x(b.dataMin)&&e?this.fixedRange=Math.min(e,b.dataMax-b.dataMin):this.fixedRange=e}}}),b(x,”Stock/Navigator/NavigatorComposition.js”,[x[“Core/Defaults.js”],x[“Core/Globals.js”],x[“Core/Axis/NavigatorAxisComposition.js”],x[“Stock/Navigator/NavigatorDefaults.js”],x[“Stock/Navigator/NavigatorSymbols.js”],x[“Core/Renderer/RendererRegistry.js”],x[“Stock/Utilities/StockUtilities.js”],x[“Core/Utilities.js”]],function(e,x,b,E,L,O,D,j){let{setOptions:R}=e,{composed:z}=x,{getRendererType:F}=O,{setFixedRange:H}=D,{addEvent:U,extend:Y,pushUnique:V}=j;function q(){this.chart.navigator&&!this.options.isInternal&&this.chart.navigator.setBaseSeries(null,!1)}return{compose:function(e,x,O){b.compose(x),V(z,”Navigator”)&&(e.prototype.setFixedRange=H,Y(F().prototype.symbols,L),U(O,”afterUpdate”,q),R({navigator:E}))}}}),b(x,”Core/Axis/ScrollbarAxis.js”,[x[“Core/Globals.js”],x[“Core/Utilities.js”]],function(e,x){var b;let{composed:E}=e,{addEvent:L,defined:O,pick:D,pushUnique:j}=x;return function(e){let x;function b(e){let x=D(e.options&&e.options.min,e.min),b=D(e.options&&e.options.max,e.max);return{axisMin:x,axisMax:b,scrollMin:O(e.dataMin)?Math.min(x,e.min,e.dataMin,D(e.threshold,1/0)):x,scrollMax:O(e.dataMax)?Math.max(b,e.max,e.dataMax,D(e.threshold,-1/0)):b}}function R(){let e=this.scrollbar,x=e&&!e.options.opposite,b=this.horiz?2:x?3:1;e&&(this.chart.scrollbarsOffsets=[0,0],this.chart.axisOffset[b]+=e.size+(e.options.margin||0))}function z(){let e=this;e.options&&e.options.scrollbar&&e.options.scrollbar.enabled&&(e.options.scrollbar.vertical=!e.horiz,e.options.startOnTick=e.options.endOnTick=!1,e.scrollbar=new x(e.chart.renderer,e.options.scrollbar,e.chart),L(e.scrollbar,”changed”,function(x){let E,L,{axisMin:D,axisMax:j,scrollMin:R,scrollMax:z}=b(e),F=z-R;if(O(D)&&O(j))if(e.horiz&&!e.reversed||!e.horiz&&e.reversed?(E=R+F*this.to,L=R+F*this.from):(E=R+F*(1-this.from),L=R+F*(1-this.to)),this.shouldUpdateExtremes(x.DOMType)){let b=”mousemove”!==x.DOMType&&”touchmove”!==x.DOMType&&void 0;e.setExtremes(L,E,!0,b,x)}else this.setRange(this.from,this.to)}))}function F(){let e,x,E,{scrollMin:L,scrollMax:D}=b(this),j=this.scrollbar,R=this.axisTitleMargin+(this.titleOffset||0),z=this.chart.scrollbarsOffsets,F=this.options.margin||0;if(j&&z){if(this.horiz)this.opposite||(z[1]+=R),j.position(this.left,this.top+this.height+2+z[1]-(this.opposite?F:0),this.width,this.height),this.opposite||(z[1]+=F),e=1;else{let x;this.opposite&&(z[0]+=R),x=j.options.opposite?this.left+this.width+2+z[0]-(this.opposite?0:F):this.opposite?0:F,j.position(x,this.top,this.width,this.height),this.opposite&&(z[0]+=F),e=0}z[e]+=j.size+(j.options.margin||0),isNaN(L)||isNaN(D)||!O(this.min)||!O(this.max)||this.min===this.max?j.setRange(0,1):(x=(this.min-L)/(D-L),E=(this.max-L)/(D-L),this.horiz&&!this.reversed||!this.horiz&&this.reversed?j.setRange(x,E):j.setRange(1-E,1-x))}}e.compose=function(e,b){j(E,”Axis.Scrollbar”)&&(x=b,L(e,”afterGetOffset”,R),L(e,”afterInit”,z),L(e,”afterRender”,F))}}(b||(b={})),b}),b(x,”Stock/Scrollbar/ScrollbarDefaults.js”,[],function(){return{height:10,barBorderRadius:5,buttonBorderRadius:0,buttonsEnabled:!1,liveRedraw:void 0,margin:void 0,minWidth:6,opposite:!0,step:.2,zIndex:3,barBackgroundColor:”#cccccc”,barBorderWidth:0,barBorderColor:”#cccccc”,buttonArrowColor:”#333333″,buttonBackgroundColor:”#e6e6e6″,buttonBorderColor:”#cccccc”,buttonBorderWidth:1,rifleColor:”none”,trackBackgroundColor:”rgba(255, 255, 255, 0.001)”,trackBorderColor:”#cccccc”,trackBorderRadius:5,trackBorderWidth:1}}),b(x,”Stock/Scrollbar/Scrollbar.js”,[x[“Core/Defaults.js”],x[“Core/Globals.js”],x[“Core/Axis/ScrollbarAxis.js”],x[“Stock/Scrollbar/ScrollbarDefaults.js”],x[“Core/Utilities.js”]],function(e,x,b,E,L){let{defaultOptions:O}=e,{addEvent:D,correctFloat:j,crisp:R,defined:z,destroyObjectProperties:F,fireEvent:H,merge:U,pick:Y,removeEvent:V}=L;let m=class m{static compose(e){b.compose(e,m)}static swapXY(e,x){return x&&e.forEach(e=>{let x,b=e.length;for(let E=0;Ethis.calculatedWidth?x.minWidth:0;return{chartX:(e.chartX-this.x-this.xOffset)/(this.barWidth-b),chartY:(e.chartY-this.y-this.yOffset)/(this.barWidth-b)}}destroy(){let e=this,x=e.chart.scroller;e.removeEvents(),[“track”,”scrollbarRifles”,”scrollbar”,”scrollbarGroup”,”group”].forEach(function(x){e[x]&&e[x].destroy&&(e[x]=e[x].destroy())}),x&&e===x.scrollbar&&(x.scrollbar=null,F(x.scrollbarButtons))}drawScrollbarButton(e){let x=this.renderer,b=this.scrollbarButtons,E=this.options,L=this.size,O=x.g().add(this.group);if(b.push(O),E.buttonsEnabled){let D=x.rect().addClass(“highcharts-scrollbar-button”).add(O);this.chart.styledMode||D.attr({stroke:E.buttonBorderColor,”stroke-width”:E.buttonBorderWidth,fill:E.buttonBackgroundColor}),D.attr(D.crisp({x:-.5,y:-.5,width:L,height:L,r:E.buttonBorderRadius},D.strokeWidth()));let j=x.path(m.swapXY([[“M”,L/2+(e?-1:1),L/2-3],[“L”,L/2+(e?-1:1),L/2+3],[“L”,L/2+(e?2:-2),L/2]],E.vertical)).addClass(“highcharts-scrollbar-arrow”).add(b[e]);this.chart.styledMode||j.attr({fill:E.buttonArrowColor})}}init(e,x,b){this.scrollbarButtons=[],this.renderer=e,this.userOptions=x,this.options=U(E,O.scrollbar,x),this.options.margin=Y(this.options.margin,10),this.chart=b,this.size=Y(this.options.size,this.options.height),x.enabled&&(this.render(),this.addEvents())}mouseDownHandler(e){let x=this.chart.pointer?.normalize(e)||e,b=this.cursorToScrollbarPosition(x);this.chartX=b.chartX,this.chartY=b.chartY,this.initPositions=[this.from,this.to],this.grabbedCenter=!0}mouseMoveHandler(e){let x,b=this.chart.pointer?.normalize(e)||e,E=this.options.vertical?”chartY”:”chartX”,L=this.initPositions||[];this.grabbedCenter&&(!e.touches||0!==e.touches[0][E])&&(x=this.cursorToScrollbarPosition(b)[E]-this[E],this.hasDragged=!0,this.updatePosition(L[0]+x,L[1]+x),this.hasDragged&&H(this,”changed”,{from:this.from,to:this.to,trigger:”scrollbar”,DOMType:e.type,DOMEvent:e}))}mouseUpHandler(e){this.hasDragged&&H(this,”changed”,{from:this.from,to:this.to,trigger:”scrollbar”,DOMType:e.type,DOMEvent:e}),this.grabbedCenter=this.hasDragged=this.chartX=this.chartY=null}position(e,x,b,E){let{buttonsEnabled:L,margin:O=0,vertical:D}=this.options,j=this.rendered?”animate”:”attr”,R=E,z=0;this.group.show(),this.x=e,this.y=x+this.trackBorderWidth,this.width=b,this.height=E,this.xOffset=R,this.yOffset=z,D?(this.width=this.yOffset=b=z=this.size,this.xOffset=R=0,this.yOffset=z=L?this.size:0,this.barWidth=E-(L?2*b:0),this.x=e+=O):(this.height=E=this.size,this.xOffset=R=L?this.size:0,this.barWidth=b-(L?2*E:0),this.y=this.y+O),this.group[j]({translateX:e,translateY:this.y}),this.track[j]({width:b,height:E}),this.scrollbarButtons[1][j]({translateX:D?0:b-R,translateY:D?E-z:0})}removeEvents(){this._events.forEach(function(e){V.apply(null,e)}),this._events.length=0}render(){let e=this.renderer,x=this.options,b=this.size,E=this.chart.styledMode,L=e.g(“scrollbar”).attr({zIndex:x.zIndex}).hide().add();this.group=L,this.track=e.rect().addClass(“highcharts-scrollbar-track”).attr({r:x.trackBorderRadius||0,height:b,width:b}).add(L),E||this.track.attr({fill:x.trackBackgroundColor,stroke:x.trackBorderColor,”stroke-width”:x.trackBorderWidth});let O=this.trackBorderWidth=this.track.strokeWidth();this.track.attr({x:-R(0,O),y:-R(0,O)}),this.scrollbarGroup=e.g().add(L),this.scrollbar=e.rect().addClass(“highcharts-scrollbar-thumb”).attr({height:b-O,width:b-O,r:x.barBorderRadius||0}).add(this.scrollbarGroup),this.scrollbarRifles=e.path(m.swapXY([[“M”,-3,b/4],[“L”,-3,2*b/3],[“M”,0,b/4],[“L”,0,2*b/3],[“M”,3,b/4],[“L”,3,2*b/3]],x.vertical)).addClass(“highcharts-scrollbar-rifles”).add(this.scrollbarGroup),E||(this.scrollbar.attr({fill:x.barBackgroundColor,stroke:x.barBorderColor,”stroke-width”:x.barBorderWidth}),this.scrollbarRifles.attr({stroke:x.rifleColor,”stroke-width”:1})),this.scrollbarStrokeWidth=this.scrollbar.strokeWidth(),this.scrollbarGroup.translate(-R(0,this.scrollbarStrokeWidth),-R(0,this.scrollbarStrokeWidth)),this.drawScrollbarButton(0),this.drawScrollbarButton(1)}setRange(e,x){let b,E,L=this.options,O=L.vertical,D=L.minWidth,R=this.barWidth,F=!this.rendered||this.hasDragged||this.chart.navigator&&this.chart.navigator.hasDragged?”attr”:”animate”;if(!z(R))return;let H=R*Math.min(x,1);b=Math.ceil(R*(e=Math.max(e,0))),this.calculatedWidth=E=j(H-b),E=1?this.group.hide():this.group.show()),this.rendered=!0}shouldUpdateExtremes(e){return Y(this.options.liveRedraw,x.svg&&!x.isTouchDevice&&!this.chart.boosted)||”mouseup”===e||”touchend”===e||!z(e)}trackClick(e){let x=this.chart.pointer?.normalize(e)||e,b=this.to-this.from,E=this.y+this.scrollbarTop,L=this.x+this.scrollbarLeft;this.options.vertical&&x.chartY>E||!this.options.vertical&&x.chartX>L?this.updatePosition(this.from+b,this.to+b):this.updatePosition(this.from-b,this.to-b),H(this,”changed”,{from:this.from,to:this.to,trigger:”scrollbar”,DOMEvent:e})}update(e){this.destroy(),this.init(this.chart.renderer,U(!0,this.options,e),this.chart)}updatePosition(e,x){x>1&&(e=j(1-j(x-e)),x=1),e<0&&(x=j(x-e),e=0),this.from=e,this.to=x}};return m.defaultOptions=E,O.scrollbar=U(!0,m.defaultOptions,O.scrollbar),m}),b(x,"Stock/Navigator/Navigator.js",[x["Core/Axis/Axis.js"],x["Stock/Navigator/ChartNavigatorComposition.js"],x["Core/Defaults.js"],x["Core/Globals.js"],x["Core/Axis/NavigatorAxisComposition.js"],x["Stock/Navigator/NavigatorComposition.js"],x["Stock/Scrollbar/Scrollbar.js"],x["Core/Utilities.js"]],function(e,x,b,E,L,O,D,j){let{defaultOptions:R}=b,{isTouchDevice:z}=E,{addEvent:F,clamp:H,correctFloat:U,defined:Y,destroyObjectProperties:V,erase:q,extend:K,find:$,fireEvent:_,isArray:Z,isNumber:J,merge:tt,pick:te,removeEvent:ti,splat:ts}=j;function to(e,...x){let b=[].filter.call(x,J);if(b.length)return Math[e].apply(0,b)}let M=class M{static compose(e,b,E){x.compose(e,M),O.compose(e,b,E)}constructor(e){this.scrollbarHeight=0,this.init(e)}drawHandle(e,x,b,E){let L=this.navigatorOptions.handles.height;this.handles[x][E](b?{translateX:Math.round(this.left+this.height/2),translateY:Math.round(this.top+parseInt(e,10)+.5-L)}:{translateX:Math.round(this.left+parseInt(e,10)),translateY:Math.round(this.top+this.height/2-L/2-1)})}drawOutline(e,x,b,E){let L=this.navigatorOptions.maskInside,O=this.outline.strokeWidth(),D=O/2,j=O%2/2,R=this.scrollButtonSize,z=this.size,F=this.top,H=this.height,U=F-D,Y=F+H,V=this.left,q,K;b?(q=F+x+j,x=F+e+j,K=[["M",V+H,F-R-j],["L",V+H,q],["L",V,q],["M",V,x],["L",V+H,x],["L",V+H,F+z+R]],L&&K.push(["M",V+H,q-D],["L",V+H,x+D])):(V-=R,e+=V+R-j,x+=V+R-j,K=[["M",V,U],["L",e,U],["L",e,Y],["M",x,Y],["L",x,U],["L",V+z+2*R,F+D]],L&&K.push(["M",e-D,U],["L",x+D,U])),this.outline[E]({d:K})}drawMasks(e,x,b,E){let L,O,D,j,R=this.left,z=this.top,F=this.height;b?(D=[R,R,R],j=[z,z+e,z+x],O=[F,F,F],L=[e,x-e,this.size-x]):(D=[R,R+e,R+x],j=[z,z,z],O=[e,x-e,this.size-x],L=[F,F,F]),this.shades.forEach((e,x)=>{e[E]({x:D[x],y:j[x],width:O[x],height:L[x]})})}renderElements(){let e=this,x=e.navigatorOptions,b=x.maskInside,E=e.chart,L=E.inverted,O=E.renderer,D={cursor:L?”ns-resize”:”ew-resize”},j=e.navigatorGroup=O.g(“navigator”).attr({zIndex:8,visibility:”hidden”}).add();if([!b,b,!b].forEach((b,L)=>{let R=O.rect().addClass(“highcharts-navigator-mask”+(1===L?”-inside”:”-outside”)).add(j);E.styledMode||(R.attr({fill:b?x.maskFill:”rgba(0,0,0,0)”}),1===L&&R.css(D)),e.shades[L]=R}),e.outline=O.path().addClass(“highcharts-navigator-outline”).add(j),E.styledMode||e.outline.attr({“stroke-width”:x.outlineWidth,stroke:x.outlineColor}),x.handles&&x.handles.enabled){let b=x.handles,{height:L,width:R}=b;[0,1].forEach(x=>{e.handles[x]=O.symbol(b.symbols[x],-R/2-1,0,R,L,b),E.inverted&&e.handles[x].attr({rotation:90,rotationOriginX:Math.floor(-R/2),rotationOriginY:(L+R)/2}),e.handles[x].attr({zIndex:7-x}).addClass(“highcharts-navigator-handle highcharts-navigator-handle-“+[“left”,”right”][x]).add(j),E.styledMode||e.handles[x].attr({fill:b.backgroundColor,stroke:b.borderColor,”stroke-width”:b.lineWidth}).css(D)})}}update(e){(this.series||[]).forEach(e=>{e.baseSeries&&delete e.baseSeries.navigatorSeries}),this.destroy(),tt(!0,this.chart.options.navigator,e),this.init(this.chart)}render(e,x,b,E){let L=this.chart,O=this.xAxis,D=O.pointRange||0,j=O.navigatorAxis.fake?L.xAxis[0]:O,R=this.navigatorEnabled,z=this.rendered,F=L.inverted,V=L.xAxis[0].minRange,q=L.xAxis[0].options.maxRange,K=this.scrollButtonSize,$,Z,tt,ti=this.scrollbarHeight,ts,to;if(this.hasDragged&&!Y(b))return;if(e=U(e-D/2),x=U(x+D/2),!J(e)||!J(x)){if(!z)return;b=0,E=te(O.width,j.width)}this.left=te(O.left,L.plotLeft+K+(F?L.plotWidth:0));let tr=this.size=ts=te(O.len,(F?L.plotHeight:L.plotWidth)-2*K);$=F?ti:ts+2*K,b=te(b,O.toPixels(e,!0)),E=te(E,O.toPixels(x,!0)),J(b)&&Math.abs(b)!==1/0||(b=0,E=$);let tn=O.toValue(b,!0),ta=O.toValue(E,!0),tl=Math.abs(U(ta-tn));tlq&&(this.grabbedLeft?b=O.toPixels(ta-q-D,!0):this.grabbedRight&&(E=O.toPixels(tn+q+D,!0))),this.zoomedMax=H(Math.max(b,E),0,tr),this.zoomedMin=H(this.fixedWidth?this.zoomedMax-this.fixedWidth:Math.min(b,E),0,tr),this.range=this.zoomedMax-this.zoomedMin,tr=Math.round(this.zoomedMax);let th=Math.round(this.zoomedMin);R&&(this.navigatorGroup.attr({visibility:”inherit”}),to=z&&!this.hasDragged?”animate”:”attr”,this.drawMasks(th,tr,F,to),this.drawOutline(th,tr,F,to),this.navigatorOptions.handles.enabled&&(this.drawHandle(th,0,F,to),this.drawHandle(tr,1,F,to))),this.scrollbar&&(F?(tt=this.top-K,Z=this.left-ti+(R||!j.opposite?0:(j.titleOffset||0)+j.axisTitleMargin),ti=ts+2*K):(tt=this.top+(R?this.height:-ti),Z=this.left-K),this.scrollbar.position(Z,tt,$,ti),this.scrollbar.setRange(this.zoomedMin/(ts||1),this.zoomedMax/(ts||1))),this.rendered=!0,_(this,”afterRender”)}addMouseEvents(){let e=this,x=e.chart,b=x.container,E=[],L,O;e.mouseMoveHandler=L=function(x){e.onMouseMove(x)},e.mouseUpHandler=O=function(x){e.onMouseUp(x)},(E=e.getPartsEvents(“mousedown”)).push(F(x.renderTo,”mousemove”,L),F(b.ownerDocument,”mouseup”,O),F(x.renderTo,”touchmove”,L),F(b.ownerDocument,”touchend”,O)),E.concat(e.getPartsEvents(“touchstart”)),e.eventsToUnbind=E,e.series&&e.series[0]&&E.push(F(e.series[0].xAxis,”foundExtremes”,function(){x.navigator.modifyNavigatorAxisExtremes()}))}getPartsEvents(e){let x=this,b=[];return[“shades”,”handles”].forEach(function(E){x[E].forEach(function(L,O){b.push(F(L.element,e,function(e){x[E+”Mousedown”](e,O)}))})}),b}shadesMousedown(e,x){e=this.chart.pointer?.normalize(e)||e;let b=this.chart,E=this.xAxis,L=this.zoomedMin,O=this.size,D=this.range,j=this.left,R=e.chartX,z,F,H,U;b.inverted&&(R=e.chartY,j=this.top),1===x?(this.grabbedCenter=R,this.fixedWidth=D,this.dragOffset=R-L):(U=R-j-D/2,0===x?U=Math.max(0,U):2===x&&U+D>=O&&(U=O-D,this.reversedExtremes?(U-=D,F=this.getUnionExtremes().dataMin):z=this.getUnionExtremes().dataMax),U!==L&&(this.fixedWidth=D,Y((H=E.navigatorAxis.toFixedRange(U,U+D,F,z)).min)&&_(this,”setRange”,{min:Math.min(H.min,H.max),max:Math.max(H.min,H.max),redraw:!0,eventArguments:{trigger:”navigator”}})))}handlesMousedown(e,x){e=this.chart.pointer?.normalize(e)||e;let b=this.chart,E=b.xAxis[0],L=this.reversedExtremes;0===x?(this.grabbedLeft=!0,this.otherHandlePos=this.zoomedMax,this.fixedExtreme=L?E.min:E.max):(this.grabbedRight=!0,this.otherHandlePos=this.zoomedMin,this.fixedExtreme=L?E.max:E.min),b.setFixedRange(void 0)}onMouseMove(e){let x=this,b=x.chart,E=x.navigatorSize,L=x.range,O=x.dragOffset,D=b.inverted,j=x.left,R;(!e.touches||0!==e.touches[0].pageX)&&(R=(e=b.pointer?.normalize(e)||e).chartX,D&&(j=x.top,R=e.chartY),x.grabbedLeft?(x.hasDragged=!0,x.render(0,0,R-j,x.otherHandlePos)):x.grabbedRight?(x.hasDragged=!0,x.render(0,0,x.otherHandlePos,R-j)):x.grabbedCenter&&(x.hasDragged=!0,RE+O-L&&(R=E+O-L),x.render(0,0,R-O,R-O+L)),x.hasDragged&&x.scrollbar&&te(x.scrollbar.options.liveRedraw,!z&&!this.chart.boosted)&&(e.DOMType=e.type,setTimeout(function(){x.onMouseUp(e)},0)))}onMouseUp(e){let x,b,E,L,O,D,j=this.chart,R=this.xAxis,z=this.scrollbar,F=e.DOMEvent||e,H=j.inverted,U=this.rendered&&!this.hasDragged?”animate”:”attr”;(this.hasDragged&&(!z||!z.hasDragged)||”scrollbar”===e.trigger)&&(E=this.getUnionExtremes(),this.zoomedMin===this.otherHandlePos?L=this.fixedExtreme:this.zoomedMax===this.otherHandlePos&&(O=this.fixedExtreme),this.zoomedMax===this.size&&(O=this.reversedExtremes?E.dataMin:E.dataMax),0===this.zoomedMin&&(L=this.reversedExtremes?E.dataMax:E.dataMin),Y((D=R.navigatorAxis.toFixedRange(this.zoomedMin,this.zoomedMax,L,O)).min)&&_(this,”setRange”,{min:Math.min(D.min,D.max),max:Math.max(D.min,D.max),redraw:!0,animation:!this.hasDragged&&null,eventArguments:{trigger:”navigator”,triggerOp:”navigator-drag”,DOMEvent:F}})),”mousemove”!==e.DOMType&&”touchmove”!==e.DOMType&&(this.grabbedLeft=this.grabbedRight=this.grabbedCenter=this.fixedWidth=this.fixedExtreme=this.otherHandlePos=this.hasDragged=this.dragOffset=null),this.navigatorEnabled&&J(this.zoomedMin)&&J(this.zoomedMax)&&(b=Math.round(this.zoomedMin),x=Math.round(this.zoomedMax),this.shades&&this.drawMasks(b,x,H,U),this.outline&&this.drawOutline(b,x,H,U),this.navigatorOptions.handles.enabled&&Object.keys(this.handles).length===this.handles.length&&(this.drawHandle(b,0,H,U),this.drawHandle(x,1,H,U)))}removeEvents(){this.eventsToUnbind&&(this.eventsToUnbind.forEach(function(e){e()}),this.eventsToUnbind=void 0),this.removeBaseSeriesEvents()}removeBaseSeriesEvents(){let e=this.baseSeries||[];this.navigatorEnabled&&e[0]&&(!1!==this.navigatorOptions.adaptToUpdatedData&&e.forEach(function(e){ti(e,”updatedData”,this.updatedDataHandler)},this),e[0].xAxis&&ti(e[0].xAxis,”foundExtremes”,this.modifyBaseAxisExtremes))}init(x){let b=x.options,E=b.navigator||{},O=E.enabled,j=b.scrollbar||{},R=j.enabled,z=O&&E.height||0,H=R&&j.height||0,U=j.buttonsEnabled&&H||0;this.handles=[],this.shades=[],this.chart=x,this.setBaseSeries(),this.height=z,this.scrollbarHeight=H,this.scrollButtonSize=U,this.scrollbarEnabled=R,this.navigatorEnabled=O,this.navigatorOptions=E,this.scrollbarOptions=j,this.opposite=te(E.opposite,!!(!O&&x.inverted));let Y=this,V=Y.baseSeries,q=x.xAxis.length,K=x.yAxis.length,$=V&&V[0]&&V[0].xAxis||x.xAxis[0]||{options:{}};if(x.isDirtyBox=!0,Y.navigatorEnabled?(Y.xAxis=new e(x,tt({breaks:$.options.breaks,ordinal:$.options.ordinal,overscroll:$.options.overscroll},E.xAxis,{type:”datetime”,index:q,isInternal:!0,offset:0,keepOrdinalPadding:!0,startOnTick:!1,endOnTick:!1,minPadding:0,maxPadding:0,zoomEnabled:!1},x.inverted?{offsets:[U,0,-U,0],width:z}:{offsets:[0,-U,0,U],height:z}),”xAxis”),Y.yAxis=new e(x,tt(E.yAxis,{alignTicks:!1,offset:0,index:K,isInternal:!0,reversed:te(E.yAxis&&E.yAxis.reversed,x.yAxis[0]&&x.yAxis[0].reversed,!1),zoomEnabled:!1},x.inverted?{width:z}:{height:z}),”yAxis”),V||E.series.data?Y.updateNavigatorSeries(!1):0===x.series.length&&(Y.unbindRedraw=F(x,”beforeRedraw”,function(){x.series.length>0&&!Y.series&&(Y.setBaseSeries(),Y.unbindRedraw())})),Y.reversedExtremes=x.inverted&&!Y.xAxis.reversed||!x.inverted&&Y.xAxis.reversed,Y.renderElements(),Y.addMouseEvents()):(Y.xAxis={chart:x,navigatorAxis:{fake:!0},translate:function(e,b){let E=x.xAxis[0],L=E.getExtremes(),O=E.len-2*U,D=to(“min”,E.options.min,L.dataMin),j=to(“max”,E.options.max,L.dataMax)-D;return b?e*j/O+D:O*(e-D)/j},toPixels:function(e){return this.translate(e)},toValue:function(e){return this.translate(e,!0)}},Y.xAxis.navigatorAxis.axis=Y.xAxis,Y.xAxis.navigatorAxis.toFixedRange=L.prototype.toFixedRange.bind(Y.xAxis.navigatorAxis)),x.options.scrollbar.enabled){let e=tt(x.options.scrollbar,{vertical:x.inverted});!J(e.margin)&&Y.navigatorEnabled&&(e.margin=x.inverted?-3:3),x.scrollbar=Y.scrollbar=new D(x.renderer,e,x),F(Y.scrollbar,”changed”,function(e){let x=Y.size,b=x*this.to,E=x*this.from;Y.hasDragged=Y.scrollbar.hasDragged,Y.render(0,0,E,b),this.shouldUpdateExtremes(e.DOMType)&&setTimeout(function(){Y.onMouseUp(e)})})}Y.addBaseSeriesEvents(),Y.addChartEvents()}getUnionExtremes(e){let x,b=this.chart.xAxis[0],E=this.xAxis,L=E.options,O=b.options;return e&&null===b.dataMin||(x={dataMin:te(L&&L.min,to(“min”,O.min,b.dataMin,E.dataMin,E.min)),dataMax:te(L&&L.max,to(“max”,O.max,b.dataMax,E.dataMax,E.max))}),x}setBaseSeries(e,x){let b=this.chart,E=this.baseSeries=[];e=e||b.options&&b.options.navigator.baseSeries||(b.series.length?$(b.series,e=>!e.options.isInternal).index:0),(b.series||[]).forEach((x,b)=>{!x.options.isInternal&&(x.options.showInNavigator||(b===e||x.options.id===e)&&!1!==x.options.showInNavigator)&&E.push(x)}),this.xAxis&&!this.xAxis.navigatorAxis.fake&&this.updateNavigatorSeries(!0,x)}updateNavigatorSeries(e,x){let b=this,E=b.chart,L=b.baseSeries,O={enableMouseTracking:!1,index:null,linkedTo:null,group:”nav”,padXAxis:!1,xAxis:this.navigatorOptions.xAxis?.id,yAxis:this.navigatorOptions.yAxis?.id,showInLegend:!1,stacking:void 0,isInternal:!0,states:{inactive:{opacity:1}}},D=b.series=(b.series||[]).filter(e=>{let x=e.baseSeries;return!(0>L.indexOf(x))||(x&&(ti(x,”updatedData”,b.updatedDataHandler),delete x.navigatorSeries),e.chart&&e.destroy(),!1)}),j,z,F=b.navigatorOptions.series,H;L&&L.length&&L.forEach(e=>{let U=e.navigatorSeries,Y=K({color:e.color,visible:e.visible},Z(F)?R.navigator.series:F);if(U&&!1===b.navigatorOptions.adaptToUpdatedData)return;O.name=”Navigator “+L.length,H=(j=e.options||{}).navigatorOptions||{},Y.dataLabels=ts(Y.dataLabels),(z=tt(j,O,Y,H)).pointRange=te(Y.pointRange,H.pointRange,R.plotOptions[z.type||”line”].pointRange);let V=H.data||Y.data;b.hasNavigatorData=b.hasNavigatorData||!!V,z.data=V||j.data&&j.data.slice(0),U&&U.options?U.update(z,x):(e.navigatorSeries=E.initSeries(z),E.setSortedData(),e.navigatorSeries.baseSeries=e,D.push(e.navigatorSeries))}),(F.data&&!(L&&L.length)||Z(F))&&(b.hasNavigatorData=!1,(F=ts(F)).forEach((e,x)=>{O.name=”Navigator “+(D.length+1),(z=tt(R.navigator.series,{color:E.series[x]&&!E.series[x].options.isInternal&&E.series[x].color||E.options.colors[x]||E.options.colors[0]},O,e)).data=e.data,z.data&&(b.hasNavigatorData=!0,D.push(E.initSeries(z)))})),e&&this.addBaseSeriesEvents()}addBaseSeriesEvents(){let e=this,x=e.baseSeries||[];x[0]&&x[0].xAxis&&x[0].eventsToUnbind.push(F(x[0].xAxis,”foundExtremes”,this.modifyBaseAxisExtremes)),x.forEach(x=>{x.eventsToUnbind.push(F(x,”show”,function(){this.navigatorSeries&&this.navigatorSeries.setVisible(!0,!1)})),x.eventsToUnbind.push(F(x,”hide”,function(){this.navigatorSeries&&this.navigatorSeries.setVisible(!1,!1)})),!1!==this.navigatorOptions.adaptToUpdatedData&&x.xAxis&&x.eventsToUnbind.push(F(x,”updatedData”,this.updatedDataHandler)),x.eventsToUnbind.push(F(x,”remove”,function(){this.navigatorSeries&&(q(e.series,this.navigatorSeries),Y(this.navigatorSeries.options)&&this.navigatorSeries.remove(!1),delete this.navigatorSeries)}))})}getBaseSeriesMin(e){return this.baseSeries.reduce(function(e,x){return Math.min(e,x.xData&&x.xData.length?x.xData[0]:e)},e)}modifyNavigatorAxisExtremes(){let e=this.xAxis;if(void 0!==e.getExtremes){let x=this.getUnionExtremes(!0);x&&(x.dataMin!==e.min||x.dataMax!==e.max)&&(e.min=x.dataMin,e.max=x.dataMax)}}modifyBaseAxisExtremes(){let e,x,b=this.chart.navigator,E=this.getExtremes(),L=E.min,O=E.max,D=E.dataMin,j=E.dataMax,R=O-L,z=b.stickToMin,F=b.stickToMax,H=te(this.ordinal?.convertOverscroll(this.options.overscroll),0),U=b.series&&b.series[0],Y=!!this.setExtremes;!(this.eventArgs&&”rangeSelectorButton”===this.eventArgs.trigger)&&(z&&(e=(x=D)+R),F&&(e=j+H,z||(x=Math.max(D,e-R,b.getBaseSeriesMin(U&&U.xData?U.xData[0]:-Number.MAX_VALUE)))),Y&&(z||F)&&J(x)&&(this.min=this.userMin=x,this.max=this.userMax=e)),b.stickToMin=b.stickToMax=null}updatedDataHandler(){let e=this.chart.navigator,x=this.navigatorSeries,b=e.reversedExtremes?0===Math.round(e.zoomedMin):Math.round(e.zoomedMax)>=Math.round(e.size);e.stickToMax=te(this.chart.options.navigator&&this.chart.options.navigator.stickToMax,b),e.stickToMin=e.shouldStickToMin(this,e),x&&!e.hasNavigatorData&&(x.options.pointStart=this.xData[0],x.setData(this.options.data,!1,null,!1))}shouldStickToMin(e,x){let b=x.getBaseSeriesMin(e.xData[0]),E=e.xAxis,L=E.max,O=E.min,D=E.options.range;return!!(J(L)&&J(O))&&(D&&L-b>0?L-b{e.destroy&&e.destroy()}),[“series”,”xAxis”,”yAxis”,”shades”,”outline”,”scrollbarTrack”,”scrollbarRifles”,”scrollbarGroup”,”scrollbar”,”navigatorGroup”,”rendered”].forEach(e=>{this[e]&&this[e].destroy&&this[e].destroy(),this[e]=null}),[this.handles].forEach(e=>{V(e)})}};return M}),b(x,”Accessibility/Components/NavigatorComponent.js”,[x[“Accessibility/AccessibilityComponent.js”],x[“Accessibility/Utils/Announcer.js”],x[“Accessibility/KeyboardNavigationHandler.js”],x[“Stock/Navigator/Navigator.js”],x[“Core/Animation/AnimationUtilities.js”],x[“Core/Templating.js”],x[“Core/Utilities.js”],x[“Accessibility/Utils/HTMLUtilities.js”],x[“Accessibility/Utils/ChartUtilities.js”]],function(e,x,b,E,L,O,D,j,R){let{animObject:z}=L,{format:F}=O,{clamp:H,pick:U,syncTimeout:Y}=D,{getFakeMouseEvent:V}=j,{getAxisRangeDescription:q,fireEventOnWrappedOrUnwrappedElement:K}=R;return class extends e{init(){let e=this.chart,b=this;this.announcer=new x(e,”polite”),this.addEvent(E,”afterRender”,function(){this.chart===b.chart&&this.chart.renderer&&Y(()=>{b.proxyProvider.updateGroupProxyElementPositions(“navigator”),b.updateHandleValues()},z(U(this.chart.renderer.globalAnimation,!0)).duration)})}onChartUpdate(){let e=this.chart,x=e.options;if(x.navigator.accessibility?.enabled){let b=x.accessibility.landmarkVerbosity,E=x.lang.accessibility?.navigator.groupLabel;this.proxyProvider.removeGroup(“navigator”),this.proxyProvider.addGroup(“navigator”,”div”,{role:”all”===b?”region”:”group”,”aria-label”:F(E,{chart:e},e)});let L=x.lang.accessibility?.navigator.handleLabel;[0,1].forEach(x=>{let b=this.getHandleByIx(x);if(b){let E=this.proxyProvider.addProxyElement(“navigator”,{click:b},”input”,{type:”range”,”aria-label”:F(L,{handleIx:x,chart:e},e)});this[x?”maxHandleProxy”:”minHandleProxy”]=E.innerElement,E.innerElement.style.pointerEvents=”none”,E.innerElement.oninput=()=>this.updateNavigator()}}),this.updateHandleValues()}else this.proxyProvider.removeGroup(“navigator”)}getNavigatorHandleNavigation(e){let x=this,E=this.chart,L=e?this.maxHandleProxy:this.minHandleProxy,O=this.keyCodes;return new b(E,{keyCodeMap:[[[O.left,O.right,O.up,O.down],function(b){if(L){let D=b===O.left||b===O.up?-1:1;L.value=””+H(parseFloat(L.value)+D,0,100),x.updateNavigator(()=>{let b=x.getHandleByIx(e);b&&E.setFocusToElement(b,L)})}return this.response.success}]],init:()=>{E.setFocusToElement(this.getHandleByIx(e),L)},validate:()=>!!(this.getHandleByIx(e)&&L&&E.options.navigator.accessibility?.enabled)})}getKeyboardNavigation(){return[this.getNavigatorHandleNavigation(0),this.getNavigatorHandleNavigation(1)]}destroy(){this.updateNavigatorThrottleTimer&&clearTimeout(this.updateNavigatorThrottleTimer),this.proxyProvider.removeGroup(“navigator”),this.announcer&&this.announcer.destroy()}updateHandleValues(){let e=this.chart.navigator;if(e&&this.minHandleProxy&&this.maxHandleProxy){let x=e.size;this.minHandleProxy.value=””+Math.round(e.zoomedMin/x*100),this.maxHandleProxy.value=””+Math.round(e.zoomedMax/x*100)}}getHandleByIx(e){let x=this.chart.navigator;return x&&x.handles&&x.handles[e]}updateNavigator(e){this.updateNavigatorThrottleTimer&&clearTimeout(this.updateNavigatorThrottleTimer),this.updateNavigatorThrottleTimer=setTimeout((e=>{let x=this.chart,{navigator:b,pointer:E}=x;if(b&&E&&this.minHandleProxy&&this.maxHandleProxy){let L=E.getChartPosition(),O=parseFloat(this.minHandleProxy.value)/100*b.size,D=parseFloat(this.maxHandleProxy.value)/100*b.size;[[0,”mousedown”,b.zoomedMin],[0,”mousemove”,O],[0,”mouseup”,O],[1,”mousedown”,b.zoomedMax],[1,”mousemove”,D],[1,”mouseup”,D]].forEach(([e,x,E])=>{let O=this.getHandleByIx(e)?.element;O&&K(O,V(x,{x:L.left+b.left+E,y:L.top+b.top},O))}),e&&e();let j=x.options.lang.accessibility?.navigator.changeAnnouncement,R=q(x.xAxis[0]);this.announcer.announce(F(j,{axisRangeDescription:R,chart:x},x))}}).bind(this,e),20)}}}),b(x,”Accessibility/Components/SeriesComponent/SeriesDescriber.js”,[x[“Accessibility/Components/AnnotationsA11y.js”],x[“Accessibility/Utils/ChartUtilities.js”],x[“Core/Templating.js”],x[“Accessibility/Utils/HTMLUtilities.js”],x[“Core/Utilities.js”]],function(e,x,b,E,L){let{getPointAnnotationTexts:O}=e,{getAxisDescription:D,getSeriesFirstPointElement:j,getSeriesA11yElement:R,unhideChartElementFromAT:z}=x,{format:F,numberFormat:H}=b,{reverseChildNodes:U,stripHTMLTagsFromString:Y}=E,{find:V,isNumber:q,isString:K,pick:$,defined:_}=L;function Z(e){let x=e.chart.options.accessibility.series.pointDescriptionEnabledThreshold;return!!(!1!==x&&e.points&&e.points.length>=+x)}function J(e,x){let b=e.series,E=b.chart,L=E.options.accessibility.point||{},O=b.options.accessibility&&b.options.accessibility.point||{},D=b.tooltipOptions||{},j=E.options.lang;return q(x)?H(x,O.valueDecimals||L.valueDecimals||D.valueDecimals||-1,j.decimalPoint,j.accessibility.thousandsSep||j.thousandsSep):x}function tt(e,x){let b=e[x];return e.chart.langFormat(“accessibility.series.”+x+”Description”,{name:D(b),series:e})}function te(e){let x,b,E,L,D,j,R,z,H,U,Y,V,q,K,Z,tt,te,ti,ts,to,tr,tn,ta,tl=e.series,th=tl.chart.series.length>1||tl.options.name,td=(j=(D=e.series).chart,z=(R=D.options.accessibility)&&R.point&&R.point.valueDescriptionFormat||j.options.accessibility.point.valueDescriptionFormat,U=(H=$(D.xAxis&&D.xAxis.options.accessibility&&D.xAxis.options.accessibility.enabled,!j.angular&&”flowmap”!==D.type))?(x=function(e){let x=e.series,b=x.chart,E=x.options.accessibility&&x.options.accessibility.point||{},L=b.options.accessibility.point||{},O=x.xAxis&&x.xAxis.dateTime;if(O){let x=O.getXDateFormat(e.x||0,b.options.tooltip.dateTimeLabelFormats),D=E.dateFormatter&&E.dateFormatter(e)||L.dateFormatter&&L.dateFormatter(e)||E.dateFormat||L.dateFormat||x;return b.time.dateFormat(D,e.x||0,void 0)}}(e),b=(e.series.xAxis||{}).categories&&_(e.category)&&(“”+e.category).replace(“
    “,” “),E=_(e.id)&&0>(“”+e.id).indexOf(“highcharts-“),L=”x, “+e.x,e.name||x||b||(E?e.id:L)):””,F(z,{point:e,index:_(e.index)?e.index+1:””,xDescription:U,value:(V=(Y=e.series).chart.options.accessibility.point||{},q=Y.chart.options.accessibility&&Y.chart.options.accessibility.point||{},K=Y.tooltipOptions||{},Z=q.valuePrefix||V.valuePrefix||K.valuePrefix||””,tt=q.valueSuffix||V.valueSuffix||K.valueSuffix||””,te=void 0!==e.value?”value”:”y”,ti=J(e,e[te]),e.isNull?Y.chart.langFormat(“accessibility.series.nullPointValue”,{point:e}):Y.pointArrayMap?(ts=Z||””,to=tt||””,tr=function(x){let b=J(e,$(e[x],e.options[x]));return void 0!==b?x+”: “+ts+b+to:b},e.series.pointArrayMap.reduce(function(e,x){let b=tr(x);return b?e+(e.length?”, “:””)+b:e},””)):Z+ti+tt),separator:H?”, “:””},j)),tc=e.options&&e.options.accessibility&&e.options.accessibility.description,tp=th?” “+tl.name+”.”:””,tu=(tn=e.series.chart,(ta=O(e)).length?tn.langFormat(“accessibility.series.pointAnnotationsDescription”,{point:e,annotations:ta}):””);return e.accessibility=e.accessibility||{},e.accessibility.valueDescription=td,td+(tc?” “+tc:””)+tp+(tu?” “+tu:””)}function ti(e){let x,b=e.chart,E=b.types||[],L=(x=(e.options.accessibility||{}).description)&&e.chart.langFormat(“accessibility.series.description”,{description:x,series:e})||””,O=function(x){return b[x]&&b[x].length>1&&e[x]},D=e.index+1,j=tt(e,”xAxis”),R=tt(e,”yAxis”),z={seriesNumber:D,series:e,chart:b},H=E.length>1?”Combination”:””,U=b.langFormat(“accessibility.series.summary.”+e.type+H,z)||b.langFormat(“accessibility.series.summary.default”+H,z),Y=(O(“yAxis”)?” “+R+”.”:””)+(O(“xAxis”)?” “+j+”.”:””);return F($(e.options.accessibility&&e.options.accessibility.descriptionFormat,b.options.accessibility.series.descriptionFormat,””),{seriesDescription:U,authorDescription:L?” “+L:””,axisDescription:Y,series:e,chart:b,seriesNumber:D},void 0)}return{defaultPointDescriptionFormatter:te,defaultSeriesDescriptionFormatter:ti,describeSeries:function(e){let x,b,E,L,O,D,H,q,J,tt,ts,to,tr,tn,ta=e.chart,tl=j(e),th=R(e),td=ta.is3d&&ta.is3d();th&&(th.lastChild!==tl||td||U(th),x=e.options.accessibility||{},E=!Z(e)&&!x.exposeAsGroupOnly,b=e.chart.options.accessibility.keyboardNavigation.seriesNavigation,L=!!(e.points&&(e.points.length<+b.pointNavigationEnabledThreshold||!1===b.pointNavigationEnabledThreshold)),O=e.chart.options.accessibility.point.describeNull,(E||L)&&e.points.forEach(x=>{let b,L,D,j,R,z=x.graphic&&x.graphic.element||(L=(b=x.series)&&b.chart,D=b&&b.is(“sunburst”),j=x.isNull,R=L&&L.options.accessibility.point.describeNull,j&&!D&&R&&function(e){let x,b,E=e.series,L=(x=e.index,e.series&&e.series.data&&_(x)&&V(e.series.data,function(e){return!!(e&&void 0!==e.index&&e.index>x&&e.graphic&&e.graphic.element)})||null),O=L&&L.graphic,D=O?O.parentGroup:E.graph||E.group,j=L?{x:$(e.plotX,L.plotX,0),y:$(e.plotY,L.plotY,0)}:{x:$(e.plotX,0),y:$(e.plotY,0)},R=((b=e.series.chart.renderer.rect(j.x,j.y,1,1)).attr({class:”highcharts-a11y-mock-point”,fill:”none”,opacity:0,”fill-opacity”:0,”stroke-opacity”:0}),b);if(D&&D.element)return e.graphic=R,e.hasMockGraphic=!0,R.add(D),D.element.insertBefore(R.element,O?O.element:null),R.element}(x)),H=x.options&&x.options.accessibility&&!1===x.options.accessibility.enabled;if(z){let b,L,D,j;if(x.isNull&&!O)return void z.setAttribute(“aria-hidden”,!0);z.setAttribute(“tabindex”,”-1″),e.chart.styledMode||(z.style.outline=”none”),E&&!H?(b=x.series,L=b.options.accessibility?.point||{},D=b.chart.options.accessibility.point||{},j=Y(K(L.descriptionFormat)&&F(L.descriptionFormat,x,b.chart)||L.descriptionFormatter?.(x)||K(D.descriptionFormat)&&F(D.descriptionFormat,x,b.chart)||D.descriptionFormatter?.(x)||te(x),b.chart.renderer.forExport),z.setAttribute(“role”,”img”),z.setAttribute(“aria-label”,j)):z.setAttribute(“aria-hidden”,!0)}}),z(ta,th),(q=(H=(D=e.chart).options.chart).options3d&&H.options3d.enabled,J=D.series.length>1,tt=D.options.accessibility.series.describeSingleSeries,ts=(e.options.accessibility||{}).exposeAsGroupOnly,!(q&&J)&&(J||tt||ts||Z(e)))?(to=e.options.accessibility||{},tn=(tr=e.chart.options.accessibility).landmarkVerbosity,to.exposeAsGroupOnly?th.setAttribute(“role”,”img”):”all”===tn?th.setAttribute(“role”,”region”):th.setAttribute(“role”,”group”),th.setAttribute(“tabindex”,”-1″),e.chart.styledMode||(th.style.outline=”none”),th.setAttribute(“aria-label”,Y(tr.series.descriptionFormatter&&tr.series.descriptionFormatter(e)||ti(e),e.chart.renderer.forExport))):th.removeAttribute(“aria-label”))}}}),b(x,”Accessibility/Components/SeriesComponent/NewDataAnnouncer.js”,[x[“Core/Globals.js”],x[“Core/Utilities.js”],x[“Accessibility/Utils/Announcer.js”],x[“Accessibility/Utils/ChartUtilities.js”],x[“Accessibility/Utils/EventProvider.js”],x[“Accessibility/Components/SeriesComponent/SeriesDescriber.js”]],function(e,x,b,E,L,O){let{composed:D}=e,{addEvent:j,defined:R,pushUnique:z}=x,{getChartTitle:F}=E,{defaultPointDescriptionFormatter:H,defaultSeriesDescriptionFormatter:U}=O;function Y(e){return!!e.options.accessibility.announceNewData.enabled}let g=class g{constructor(e){this.dirty={allSeries:{}},this.lastAnnouncementTime=0,this.chart=e}init(){let e=this.chart,x=e.options.accessibility.announceNewData.interruptUser?”assertive”:”polite”;this.lastAnnouncementTime=0,this.dirty={allSeries:{}},this.eventProvider=new L,this.announcer=new b(e,x),this.addEventListeners()}destroy(){this.eventProvider.removeAddedEvents(),this.announcer.destroy()}addEventListeners(){let e=this,x=this.chart,b=this.eventProvider;b.addEvent(x,”afterApplyDrilldown”,function(){e.lastAnnouncementTime=0}),b.addEvent(x,”afterAddSeries”,function(x){e.onSeriesAdded(x.series)}),b.addEvent(x,”redraw”,function(){e.announceDirtyData()})}onSeriesAdded(e){Y(this.chart)&&(this.dirty.hasDirty=!0,this.dirty.allSeries[e.name+e.index]=e,this.dirty.newSeries=R(this.dirty.newSeries)?void 0:e)}announceDirtyData(){let e=this.chart,x=this;if(e.options.accessibility.announceNewData&&this.dirty.hasDirty){var b;let e,E=this.dirty.newPoint;E&&(E=1===(e=(b=E).series.data.filter(e=>b.x===e.x&&b.y===e.y)).length?e[0]:b),this.queueAnnouncement(Object.keys(this.dirty.allSeries).map(e=>x.dirty.allSeries[e]),this.dirty.newSeries,E),this.dirty={allSeries:{}}}}queueAnnouncement(e,x,b){let E=this.chart.options.accessibility.announceNewData;if(E.enabled){var L;let O,D=+new Date,j=D-this.lastAnnouncementTime,R=Math.max(0,E.minAnnounceInterval-j),z=(L=this.queuedAnnouncement&&this.queuedAnnouncement.series,Object.keys(O=(L||[]).concat(e||[]).reduce((e,x)=>(e[x.name+x.index]=x,e),{})).map(e=>O[e])),F=this.buildAnnouncementMessage(z,x,b);F&&(this.queuedAnnouncement&&clearTimeout(this.queuedAnnouncementTimer),this.queuedAnnouncement={time:D,message:F,series:z},this.queuedAnnouncementTimer=setTimeout(()=>{this&&this.announcer&&(this.lastAnnouncementTime=+new Date,this.announcer.announce(this.queuedAnnouncement.message),delete this.queuedAnnouncement,delete this.queuedAnnouncementTimer)},R))}}buildAnnouncementMessage(x,b,E){let L=this.chart,O=L.options.accessibility.announceNewData;if(O.announcementFormatter){let e=O.announcementFormatter(x,b,E);if(!1!==e)return e.length?e:null}let D=e.charts&&e.charts.length>1?”Multiple”:”Single”,j=b?”newSeriesAnnounce”+D:E?”newPointAnnounce”+D:”newDataAnnounce”,R=F(L);return L.langFormat(“accessibility.announceNewData.”+j,{chartTitle:R,seriesDesc:b?U(b):null,pointDesc:E?H(E):null,point:E,series:b})}};return function(e){function x(e){let x=this.chart,b=x.accessibility?.components.series.newDataAnnouncer;b&&b.chart===x&&Y(x)&&(b.dirty.newPoint=R(b.dirty.newPoint)?void 0:e.point)}function b(){let e=this.chart,x=e.accessibility?.components.series.newDataAnnouncer;x&&x.chart===e&&Y(e)&&(x.dirty.hasDirty=!0,x.dirty.allSeries[this.name+this.index]=this)}e.compose=function(e){z(D,”A11y.NDA”)&&(j(e,”addPoint”,x),j(e,”updatedData”,b))}}(g||(g={})),g}),b(x,”Accessibility/ProxyElement.js”,[x[“Core/Globals.js”],x[“Core/Utilities.js”],x[“Accessibility/Utils/EventProvider.js”],x[“Accessibility/Utils/ChartUtilities.js”],x[“Accessibility/Utils/HTMLUtilities.js”]],function(e,x,b,E,L){let{doc:O}=e,{attr:D,css:j,merge:R}=x,{fireEventOnWrappedOrUnwrappedElement:z}=E,{cloneMouseEvent:F,cloneTouchEvent:H,getFakeMouseEvent:U,removeElement:Y}=L;return class{constructor(e,x,E=”button”,L,D){this.chart=e,this.target=x,this.eventProvider=new b;let j=this.innerElement=O.createElement(E),R=this.element=L?O.createElement(L):j;e.styledMode||this.hideElementVisually(j),L&&(“li”!==L||e.styledMode||(R.style.listStyle=”none”),R.appendChild(j),this.element=R),this.updateTarget(x,D)}click(){let e=this.getTargetPosition();e.x+=e.width/2,e.y+=e.height/2;let x=U(“click”,e);z(this.target.click,x)}updateTarget(e,x){this.target=e,this.updateCSSClassName();let b=x||{};Object.keys(b).forEach(e=>{null===b[e]&&delete b[e]});let E=this.getTargetAttr(e.click,”aria-label”);D(this.innerElement,R(E?{“aria-label”:E}:{},b)),this.eventProvider.removeAddedEvents(),this.addProxyEventsToElement(this.innerElement,e.click),this.refreshPosition()}refreshPosition(){let e=this.getTargetPosition();j(this.innerElement,{width:(e.width||1)+”px”,height:(e.height||1)+”px”,left:(Math.round(e.x)||0)+”px”,top:(Math.round(e.y)||0)+”px”})}remove(){this.eventProvider.removeAddedEvents(),Y(this.element)}updateCSSClassName(){let e=e=>e.indexOf(“highcharts-no-tooltip”)>-1,x=this.chart.legend,b=x.group&&x.group.div,E=e(b&&b.className||””),L=e(this.getTargetAttr(this.target.click,”class”)||””);this.innerElement.className=E||L?”highcharts-a11y-proxy-element highcharts-no-tooltip”:”highcharts-a11y-proxy-element”}addProxyEventsToElement(e,x){[“click”,”touchstart”,”touchend”,”touchcancel”,”touchmove”,”mouseover”,”mouseenter”,”mouseleave”,”mouseout”].forEach(b=>{let E=0===b.indexOf(“touch”);this.eventProvider.addEvent(e,b,e=>{let b=E?H(e):F(e);x&&z(x,b),e.stopPropagation(),E||e.preventDefault()},{passive:!1})})}hideElementVisually(e){j(e,{borderWidth:0,backgroundColor:”transparent”,cursor:”pointer”,outline:”none”,opacity:.001,filter:”alpha(opacity=1)”,zIndex:999,overflow:”hidden”,padding:0,margin:0,display:”block”,position:”absolute”,”-ms-filter”:”progid:DXImageTransform.Microsoft.Alpha(Opacity=1)”})}getTargetPosition(){let e=this.target.click,x=e.element?e.element:e,b=this.target.visual||x,E=this.chart.renderTo,L=this.chart.pointer;if(E&&b?.getBoundingClientRect&&L){let e=b.getBoundingClientRect(),x=L.getChartPosition();return{x:(e.left-x.left)/x.scaleX,y:(e.top-x.top)/x.scaleY,width:e.right/x.scaleX-e.left/x.scaleX,height:e.bottom/x.scaleY-e.top/x.scaleY}}return{x:0,y:0,width:1,height:1}}getTargetAttr(e,x){return e.element?e.element.getAttribute(x):e.getAttribute(x)}}}),b(x,”Accessibility/ProxyProvider.js”,[x[“Core/Globals.js”],x[“Core/Utilities.js”],x[“Accessibility/Utils/ChartUtilities.js”],x[“Accessibility/Utils/DOMElementProvider.js”],x[“Accessibility/Utils/HTMLUtilities.js”],x[“Accessibility/ProxyElement.js”]],function(e,x,b,E,L,O){let{doc:D}=e,{attr:j,css:R}=x,{unhideChartElementFromAT:z}=b,{removeChildNodes:F}=L;return class{constructor(e){this.chart=e,this.domElementProvider=new E,this.groups={},this.groupOrder=[],this.beforeChartProxyPosContainer=this.createProxyPosContainer(“before”),this.afterChartProxyPosContainer=this.createProxyPosContainer(“after”),this.update()}addProxyElement(e,x,b=”button”,E){let L=this.groups[e];if(!L)throw Error(“ProxyProvider.addProxyElement: Invalid group key “+e);let D=”ul”===L.type||”ol”===L.type?”li”:void 0,j=new O(this.chart,x,b,D,E);return L.proxyContainerElement.appendChild(j.element),L.proxyElements.push(j),j}addGroup(e,x=”div”,b){let E,L=this.groups[e];if(L)return L.groupElement;let O=this.domElementProvider.createElement(x);return b&&b.role&&”div”!==x?(E=this.domElementProvider.createElement(“div”)).appendChild(O):E=O,E.className=”highcharts-a11y-proxy-group highcharts-a11y-proxy-group-“+e.replace(/\W/g,”-“),this.groups[e]={proxyContainerElement:O,groupElement:E,type:x,proxyElements:[]},j(E,b||{}),”ul”===x&&O.setAttribute(“role”,”list”),this.afterChartProxyPosContainer.appendChild(E),this.updateGroupOrder(this.groupOrder),E}updateGroupAttrs(e,x){let b=this.groups[e];if(!b)throw Error(“ProxyProvider.updateGroupAttrs: Invalid group key “+e);j(b.groupElement,x)}updateGroupOrder(e){if(this.groupOrder=e.slice(),this.isDOMOrderGroupOrder())return;let x=e.indexOf(“series”),b=x>-1?e.slice(0,x):e,E=x>-1?e.slice(x+1):[],L=D.activeElement;[“before”,”after”].forEach(e=>{let x=this[“before”===e?”beforeChartProxyPosContainer”:”afterChartProxyPosContainer”];F(x),(“before”===e?b:E).forEach(e=>{let b=this.groups[e];b&&x.appendChild(b.groupElement)})}),(this.beforeChartProxyPosContainer.contains(L)||this.afterChartProxyPosContainer.contains(L))&&L&&L.focus&&L.focus()}clearGroup(e){let x=this.groups[e];if(!x)throw Error(“ProxyProvider.clearGroup: Invalid group key “+e);F(x.proxyContainerElement)}removeGroup(e){let x=this.groups[e];x&&(this.domElementProvider.removeElement(x.groupElement),x.groupElement!==x.proxyContainerElement&&this.domElementProvider.removeElement(x.proxyContainerElement),delete this.groups[e])}update(){this.updatePosContainerPositions(),this.updateGroupOrder(this.groupOrder),this.updateProxyElementPositions()}updateProxyElementPositions(){Object.keys(this.groups).forEach(this.updateGroupProxyElementPositions.bind(this))}updateGroupProxyElementPositions(e){let x=this.groups[e];x&&x.proxyElements.forEach(e=>e.refreshPosition())}destroy(){this.domElementProvider.destroyCreatedElements()}createProxyPosContainer(e){let x=this.domElementProvider.createElement(“div”);return x.setAttribute(“aria-hidden”,”false”),x.className=”highcharts-a11y-proxy-container”+(e?”-“+e:””),R(x,{top:”0″,left:”0″}),this.chart.styledMode||(x.style.whiteSpace=”nowrap”,x.style.position=”absolute”),x}getCurrentGroupOrderInDOM(){let e=e=>{let x=Object.keys(this.groups),b=x.length;for(;b–;){let E=x[b],L=this.groups[E];if(L&&e===L.groupElement)return E}},x=x=>{let b=[],E=x.children;for(let x=0;x“series”===e||!!this.groups[e]),b=e.length;if(b!==x.length)return!1;for(;b–;)if(e[b]!==x[b])return!1;return!0}updatePosContainerPositions(){let e=this.chart;if(e.renderer.forExport)return;let x=e.renderer.box;e.container.insertBefore(this.afterChartProxyPosContainer,x.nextSibling),e.container.insertBefore(this.beforeChartProxyPosContainer,x),z(this.chart,this.afterChartProxyPosContainer),z(this.chart,this.beforeChartProxyPosContainer)}}}),b(x,”Accessibility/Components/RangeSelectorComponent.js”,[x[“Accessibility/AccessibilityComponent.js”],x[“Accessibility/Utils/Announcer.js”],x[“Accessibility/Utils/ChartUtilities.js”],x[“Accessibility/KeyboardNavigationHandler.js”],x[“Core/Utilities.js”]],function(e,x,b,E,L){let{unhideChartElementFromAT:O,getAxisRangeDescription:D}=b,{addEvent:j,attr:R}=L;let h=class h extends e{init(){let e=this.chart;this.announcer=new x(e,”polite”)}onChartUpdate(){let e=this.chart,x=this,b=e.rangeSelector;b&&(this.updateSelectorVisibility(),this.setDropdownAttrs(),b.buttons&&b.buttons.length&&b.buttons.forEach(e=>{x.setRangeButtonAttrs(e)}),b.maxInput&&b.minInput&&[“minInput”,”maxInput”].forEach(function(E,L){let D=b[E];D&&(O(e,D),x.setRangeInputAttrs(D,”accessibility.rangeSelector.”+(L?”max”:”min”)+”InputLabel”))}))}updateSelectorVisibility(){let e=this.chart,x=e.rangeSelector,b=x&&x.dropdown,E=x&&x.buttons||[];x&&x.hasVisibleDropdown&&b?(O(e,b),E.forEach(e=>e.element.setAttribute(“aria-hidden”,!0))):(b&&b.setAttribute(“aria-hidden”,!0),E.forEach(x=>O(e,x.element)))}setDropdownAttrs(){let e=this.chart,x=e.rangeSelector&&e.rangeSelector.dropdown;if(x){let b=e.langFormat(“accessibility.rangeSelector.dropdownLabel”,{rangeTitle:e.options.lang.rangeSelectorZoom});x.setAttribute(“aria-label”,b),x.setAttribute(“tabindex”,-1)}}setRangeButtonAttrs(e){R(e.element,{tabindex:-1,role:”button”})}setRangeInputAttrs(e,x){let b=this.chart;R(e,{tabindex:-1,”aria-label”:b.langFormat(x,{chart:b})})}onButtonNavKbdArrowKey(e,x){let b=e.response,E=this.keyCodes,L=this.chart,O=L.options.accessibility.keyboardNavigation.wrapAround,D=x===E.left||x===E.up?-1:1;return L.highlightRangeSelectorButton(L.highlightedRangeSelectorItemIx+D)?b.success:O?(e.init(D),b.success):b[D>0?”next”:”prev”]}onButtonNavKbdClick(e){let x=e.response,b=this.chart;return 3!==b.oldRangeSelectorItemState&&this.fakeClickEvent(b.rangeSelector.buttons[b.highlightedRangeSelectorItemIx].element),x.success}onAfterBtnClick(){let e=this.chart,x=D(e.xAxis[0]),b=e.langFormat(“accessibility.rangeSelector.clickButtonAnnouncement”,{chart:e,axisRangeDescription:x});b&&this.announcer.announce(b)}onInputKbdMove(e){let x=this.chart,b=x.rangeSelector,E=x.highlightedInputRangeIx=(x.highlightedInputRangeIx||0)+e;if(E>1||E<0){if(x.accessibility)return x.accessibility.keyboardNavigation.exiting=!0,x.accessibility.keyboardNavigation.tabindexContainer.focus(),x.accessibility.keyboardNavigation.move(e)}else if(b){let e=b[E?"maxDateBox":"minDateBox"],L=b[E?"maxInput":"minInput"];e&&L&&x.setFocusToElement(e,L)}return!0}onInputNavInit(e){let x=this,b=this.chart,E=e>0?0:1,L=b.rangeSelector,O=L&&L[E?”maxDateBox”:”minDateBox”],D=L&&L.minInput,R=L&&L.maxInput;if(b.highlightedInputRangeIx=E,O&&D&&R){b.setFocusToElement(O,E?R:D),this.removeInputKeydownHandler&&this.removeInputKeydownHandler();let e=e=>{(e.which||e.keyCode)===this.keyCodes.tab&&x.onInputKbdMove(e.shiftKey?-1:1)&&(e.preventDefault(),e.stopPropagation())},L=j(D,”keydown”,e),z=j(R,”keydown”,e);this.removeInputKeydownHandler=()=>{L(),z()}}}onInputNavTerminate(){let e=this.chart.rangeSelector||{};e.maxInput&&e.hideInput(“max”),e.minInput&&e.hideInput(“min”),this.removeInputKeydownHandler&&(this.removeInputKeydownHandler(),delete this.removeInputKeydownHandler)}initDropdownNav(){let e=this.chart,x=e.rangeSelector,b=x&&x.dropdown;x&&b&&(e.setFocusToElement(x.buttonGroup,b),this.removeDropdownKeydownHandler&&this.removeDropdownKeydownHandler(),this.removeDropdownKeydownHandler=j(b,”keydown”,x=>{let b=(x.which||x.keyCode)===this.keyCodes.tab,E=e.accessibility;b&&(x.preventDefault(),x.stopPropagation(),E&&(E.keyboardNavigation.tabindexContainer.focus(),E.keyboardNavigation.move(x.shiftKey?-1:1)))}))}getRangeSelectorButtonNavigation(){let e=this.chart,x=this.keyCodes,b=this;return new E(e,{keyCodeMap:[[[x.left,x.right,x.up,x.down],function(e){return b.onButtonNavKbdArrowKey(this,e)}],[[x.enter,x.space],function(){return b.onButtonNavKbdClick(this)}]],validate:function(){return!!(e.rangeSelector&&e.rangeSelector.buttons&&e.rangeSelector.buttons.length)},init:function(x){let E=e.rangeSelector;if(E&&E.hasVisibleDropdown)b.initDropdownNav();else if(E){let b=E.buttons.length-1;e.highlightRangeSelectorButton(x>0?0:b)}},terminate:function(){b.removeDropdownKeydownHandler&&(b.removeDropdownKeydownHandler(),delete b.removeDropdownKeydownHandler)}})}getRangeSelectorInputNavigation(){let e=this.chart,x=this;return new E(e,{keyCodeMap:[],validate:function(){return!!(e.rangeSelector&&e.rangeSelector.inputGroup&&”hidden”!==e.rangeSelector.inputGroup.element.style.visibility&&!1!==e.options.rangeSelector.inputEnabled&&e.rangeSelector.minInput&&e.rangeSelector.maxInput)},init:function(e){x.onInputNavInit(e)},terminate:function(){x.onInputNavTerminate()}})}getKeyboardNavigation(){return[this.getRangeSelectorButtonNavigation(),this.getRangeSelectorInputNavigation()]}destroy(){this.removeDropdownKeydownHandler&&this.removeDropdownKeydownHandler(),this.removeInputKeydownHandler&&this.removeInputKeydownHandler(),this.announcer&&this.announcer.destroy()}};return function(e){function x(e){let x=this.rangeSelector&&this.rangeSelector.buttons||[],b=this.highlightedRangeSelectorItemIx,E=this.rangeSelector&&this.rangeSelector.selected;return void 0!==b&&x[b]&&b!==E&&x[b].setState(this.oldRangeSelectorItemState||0),this.highlightedRangeSelectorItemIx=e,!!x[e]&&(this.setFocusToElement(x[e].box,x[e].element),e!==E&&(this.oldRangeSelectorItemState=x[e].state,x[e].setState(1)),!0)}function b(){let e=this.chart.accessibility;if(e&&e.components.rangeSelector)return e.components.rangeSelector.onAfterBtnClick()}e.compose=function(e,E){let L=e.prototype;L.highlightRangeSelectorButton||(L.highlightRangeSelectorButton=x,j(E,”afterBtnClick”,b))}}(h||(h={})),h}),b(x,”Accessibility/Components/SeriesComponent/ForcedMarkers.js”,[x[“Core/Globals.js”],x[“Core/Utilities.js”]],function(e,x){var b;let{composed:E}=e,{addEvent:L,merge:O,pushUnique:D}=x;return function(e){function x(e){O(!0,e,{marker:{enabled:!0,states:{normal:{opacity:0}}}})}function b(e){return e.marker.states&&e.marker.states.normal&&e.marker.states.normal.opacity}function j(e){return!!(e._hasPointMarkers&&e.points&&e.points.length)}function R(){this.chart.styledMode&&(this.markerGroup&&this.markerGroup[this.a11yMarkersForced?”addClass”:”removeClass”](“highcharts-a11y-markers-hidden”),j(this)&&this.points.forEach(e=>{e.graphic&&(e.graphic[e.hasForcedA11yMarker?”addClass”:”removeClass”](“highcharts-a11y-marker-hidden”),e.graphic[!1===e.hasForcedA11yMarker?”addClass”:”removeClass”](“highcharts-a11y-marker-visible”))}))}function z(e){this.resetA11yMarkerOptions=O(e.options.marker||{},this.userOptions.marker||{})}function F(){let e,E,L,D=this.options;(e=this.chart.options.accessibility.enabled,E=!1!==(this.options.accessibility&&this.options.accessibility.enabled),e&&E&&(L=this.chart.options.accessibility,this.points.length-1;E.highlightedPoint===this&&x!==e&&!L&&e&&e.focus&&e.focus()})}onDrillupAll(){let e,x=this.lastDrilledDownPoint,b=this.chart,E=x&&Y(b,x.seriesName);x&&E&&F(x.x)&&F(x.y)&&(e=U(E,x.x,x.y)),e=e||_(b),b.container&&b.container.focus(),e&&e.highlight&&e.highlight(!1)}getKeyboardNavigationHandler(){let e=this,x=this.keyCodes,b=this.chart,E=b.inverted;return new O(b,{keyCodeMap:[[E?[x.up,x.down]:[x.left,x.right],function(x){return e.onKbdSideways(this,x)}],[E?[x.left,x.right]:[x.up,x.down],function(x){return e.onKbdVertical(this,x)}],[[x.enter,x.space],function(e,x){let E=b.highlightedPoint;if(E){let{plotLeft:e,plotTop:b}=this.chart,{plotX:L=0,plotY:O=0}=E;x={…x,chartX:e+L,chartY:b+O,point:E,target:E.graphic?.element||x.target},H(E.series,”click”,x),E.firePointEvent(“click”,x)}return this.response.success}],[[x.home],function(){return J(b),this.response.success}],[[x.end],function(){return Z(b),this.response.success}],[[x.pageDown,x.pageUp],function(e){return b.highlightAdjacentSeries(e===x.pageDown),this.response.success}]],init:function(){return e.onHandlerInit(this)},validate:function(){return!!_(b)},terminate:function(){return e.onHandlerTerminate()}})}onKbdSideways(e,x){let b=this.keyCodes,E=x===b.right||x===b.down;return this.attemptHighlightAdjacentPoint(e,E)}onHandlerInit(e){let x=this.chart;return x.options.accessibility.keyboardNavigation.seriesNavigation.rememberPointFocus&&x.highlightedPoint?x.highlightedPoint.highlight():J(x),e.response.success}onKbdVertical(e,x){let b=this.chart,E=this.keyCodes,L=x===E.down||x===E.right,O=b.options.accessibility.keyboardNavigation.seriesNavigation;if(O.mode&&”serialize”===O.mode)return this.attemptHighlightAdjacentPoint(e,L);let D=b.highlightedPoint&&b.highlightedPoint.series.keyboardMoveVertical?”highlightAdjacentPointVertical”:”highlightAdjacentSeries”;return b[D](L),e.response.success}onHandlerTerminate(){let e=this.chart,x=e.options.accessibility.keyboardNavigation;e.tooltip&&e.tooltip.hide(0);let b=e.highlightedPoint&&e.highlightedPoint.series;b&&b.onMouseOut&&b.onMouseOut(),e.highlightedPoint&&e.highlightedPoint.onMouseOut&&e.highlightedPoint.onMouseOut(),x.seriesNavigation.rememberPointFocus||delete e.highlightedPoint}attemptHighlightAdjacentPoint(e,x){let b=this.chart,E=b.options.accessibility.keyboardNavigation.wrapAround;return b.highlightAdjacentPoint(x)||E&&(x?J(b):Z(b))?e.response.success:e.response[x?”next”:”prev”]}onSeriesDestroy(e){let x=this.chart;x.highlightedPoint&&x.highlightedPoint.series===e&&(delete x.highlightedPoint,x.focusElement&&x.focusElement.removeFocusBorder())}destroy(){this.eventProvider.removeAddedEvents()}};return function(e){function x(e){let x,b,E=this.series,L=this.highlightedPoint,O=L&&q(L)||0,D=L&&L.series.points||[],j=this.series&&this.series[this.series.length-1],R=j&&j.points&&j.points[j.points.length-1];if(!E[0]||!E[0].points)return!1;if(L){if(x=E[L.series.index+(e?1:-1)],(b=D[O+(e?1:-1)])||!x||(b=x.points[e?0:x.points.length-1]),!b)return!1}else b=e?E[0].points[0]:R;return $(b)?(K(x=b.series)?this.highlightedPoint=e?x.points[x.points.length-1]:x.points[0]:this.highlightedPoint=b,this.highlightAdjacentPoint(e)):b.highlight()}function b(e){let x=this.highlightedPoint,b=1/0,E;return!!(F(x.plotX)&&F(x.plotY))&&(this.series.forEach(L=>{K(L)||L.points.forEach(O=>{if(!F(O.plotY)||!F(O.plotX)||O===x)return;let D=O.plotY-x.plotY,j=Math.abs(O.plotX-x.plotX),R=Math.abs(D)*Math.abs(D)+j*j*4;L.yAxis&&L.yAxis.reversed&&(D*=-1),!(D<=0&&e||D>=0&&!e||R<5||$(O))&&R!(F(e.plotX)&&F(e.plotY));if(!z(e)){for(;R–;)!z(O=x.points[R])&&(j=(e.plotX-O.plotX)*(e.plotX-O.plotX)*4+(e.plotY-O.plotY)*(e.plotY-O.plotY)*1)=0;–e)if(!$(b[e]))return b[e].highlight()}return!1}e.compose=function(e,D,j){let z=e.prototype,F=D.prototype,H=j.prototype;z.highlightAdjacentPoint||(z.highlightAdjacentPoint=x,z.highlightAdjacentPointVertical=b,z.highlightAdjacentSeries=E,F.highlight=L,H.keyboardMoveVertical=!0,[“column”,”gantt”,”pie”].forEach(e=>{R[e]&&(R[e].prototype.keyboardMoveVertical=!1)}),H.highlightNextValidPoint=O)}}(A||(A={})),A}),b(x,”Accessibility/Components/SeriesComponent/SeriesComponent.js”,[x[“Accessibility/AccessibilityComponent.js”],x[“Accessibility/Utils/ChartUtilities.js”],x[“Accessibility/Components/SeriesComponent/ForcedMarkers.js”],x[“Accessibility/Components/SeriesComponent/NewDataAnnouncer.js”],x[“Accessibility/Components/SeriesComponent/SeriesDescriber.js”],x[“Accessibility/Components/SeriesComponent/SeriesKeyboardNavigation.js”]],function(e,x,b,E,L,O){let{hideSeriesFromAT:D}=x,{describeSeries:j}=L;return class extends e{static compose(e,x,L){E.compose(L),b.compose(L),O.compose(e,x,L)}init(){this.newDataAnnouncer=new E(this.chart),this.newDataAnnouncer.init(),this.keyboardNavigation=new O(this.chart,this.keyCodes),this.keyboardNavigation.init(),this.hideTooltipFromATWhenShown(),this.hideSeriesLabelsFromATWhenShown()}hideTooltipFromATWhenShown(){let e=this;this.chart.tooltip&&this.addEvent(this.chart.tooltip.constructor,”refresh”,function(){this.chart===e.chart&&this.label&&this.label.element&&this.label.element.setAttribute(“aria-hidden”,!0)})}hideSeriesLabelsFromATWhenShown(){this.addEvent(this.chart,”afterDrawSeriesLabels”,function(){this.series.forEach(function(e){e.labelBySeries&&e.labelBySeries.attr(“aria-hidden”,!0)})})}onChartRender(){this.chart.series.forEach(function(e){!1!==(e.options.accessibility&&e.options.accessibility.enabled)&&e.visible&&0!==e.getPointsCollection().length?j(e):D(e)})}getKeyboardNavigation(){return this.keyboardNavigation.getKeyboardNavigationHandler()}destroy(){this.newDataAnnouncer.destroy(),this.keyboardNavigation.destroy()}}}),b(x,”Accessibility/Components/ZoomComponent.js”,[x[“Accessibility/AccessibilityComponent.js”],x[“Accessibility/Utils/ChartUtilities.js”],x[“Accessibility/Utils/HTMLUtilities.js”],x[“Accessibility/KeyboardNavigationHandler.js”],x[“Core/Utilities.js”]],function(e,x,b,E,L){let{unhideChartElementFromAT:O}=x,{getFakeMouseEvent:D}=b,{attr:j,pick:R}=L;return class extends e{constructor(){super(…arguments),this.focusedMapNavButtonIx=-1}init(){let e=this,x=this.chart;this.proxyProvider.addGroup(“zoom”,”div”),[“afterShowResetZoom”,”afterApplyDrilldown”,”drillupall”].forEach(b=>{e.addEvent(x,b,function(){e.updateProxyOverlays()})})}onChartUpdate(){let e=this.chart,x=this;e.mapNavigation&&e.mapNavigation.navButtons.forEach((b,E)=>{O(e,b.element),x.setMapNavButtonAttrs(b.element,”accessibility.zoom.mapZoom”+(E?”Out”:”In”))})}setMapNavButtonAttrs(e,x){let b=this.chart;j(e,{tabindex:-1,role:”button”,”aria-label”:b.langFormat(x,{chart:b})})}onChartRender(){this.updateProxyOverlays()}updateProxyOverlays(){let e=this.chart;if(this.proxyProvider.clearGroup(“zoom”),e.resetZoomButton&&this.createZoomProxyButton(e.resetZoomButton,”resetZoomProxyButton”,e.langFormat(“accessibility.zoom.resetZoomButton”,{chart:e})),e.drillUpButton&&e.breadcrumbs&&e.breadcrumbs.list){let x=e.breadcrumbs.list[e.breadcrumbs.list.length-1];this.createZoomProxyButton(e.drillUpButton,”drillUpProxyButton”,e.langFormat(“accessibility.drillUpButton”,{chart:e,buttonText:e.breadcrumbs.getButtonText(x)}))}}createZoomProxyButton(e,x,b){this[x]=this.proxyProvider.addProxyElement(“zoom”,{click:e},”button”,{“aria-label”:b,tabindex:-1})}getMapZoomNavigation(){let e=this.keyCodes,x=this.chart,b=this;return new E(x,{keyCodeMap:[[[e.up,e.down,e.left,e.right],function(e){return b.onMapKbdArrow(this,e)}],[[e.tab],function(e,x){return b.onMapKbdTab(this,x)}],[[e.space,e.enter],function(){return b.onMapKbdClick(this)}]],validate:function(){return!!(x.mapView&&x.mapNavigation&&x.mapNavigation.navButtons.length)},init:function(e){return b.onMapNavInit(e)}})}onMapKbdArrow(e,x){let b=this.chart,E=this.keyCodes,L=b.container,O=x===E.up||x===E.down,j=x===E.left||x===E.up?1:-1,R=(O?b.plotHeight:b.plotWidth)/10*j,z=10*Math.random(),F={x:L.offsetLeft+b.plotLeft+b.plotWidth/2+z,y:L.offsetTop+b.plotTop+b.plotHeight/2+z},H=O?{x:F.x,y:F.y+R}:{x:F.x+R,y:F.y};return[D(“mousedown”,F),D(“mousemove”,H),D(“mouseup”,H)].forEach(e=>L.dispatchEvent(e)),e.response.success}onMapKbdTab(e,x){let b=this.chart,E=e.response,L=x.shiftKey,O=L&&!this.focusedMapNavButtonIx||!L&&this.focusedMapNavButtonIx;if(b.mapNavigation.navButtons[this.focusedMapNavButtonIx].setState(0),O)return b.mapView&&b.mapView.zoomBy(),E[L?”prev”:”next”];this.focusedMapNavButtonIx+=L?-1:1;let D=b.mapNavigation.navButtons[this.focusedMapNavButtonIx];return b.setFocusToElement(D.box,D.element),D.setState(2),E.success}onMapKbdClick(e){let x=this.chart.mapNavigation.navButtons[this.focusedMapNavButtonIx].element;return this.fakeClickEvent(x),e.response.success}onMapNavInit(e){let x=this.chart,b=x.mapNavigation.navButtons[0],E=x.mapNavigation.navButtons[1],L=e>0?b:E;x.setFocusToElement(L.box,L.element),L.setState(2),this.focusedMapNavButtonIx=e>0?0:1}simpleButtonNavigation(e,x,b){let L=this.keyCodes,O=this,D=this.chart;return new E(D,{keyCodeMap:[[[L.tab,L.up,L.down,L.left,L.right],function(e,x){let b=e===L.tab&&x.shiftKey||e===L.left||e===L.up;return this.response[b?”prev”:”next”]}],[[L.space,L.enter],function(){return R(b(this,D),this.response.success)}]],validate:function(){return D[e]&&D[e].box&&O[x].innerElement},init:function(){D.setFocusToElement(D[e].box,O[x].innerElement)}})}getKeyboardNavigation(){return[this.simpleButtonNavigation(“resetZoomButton”,”resetZoomProxyButton”,function(e,x){x.zoomOut()}),this.simpleButtonNavigation(“drillUpButton”,”drillUpProxyButton”,function(e,x){return x.drillUp(),e.response.prev}),this.getMapZoomNavigation()]}}}),b(x,”Accessibility/HighContrastMode.js”,[x[“Core/Globals.js”]],function(e){let{doc:x,isMS:b,win:E}=e;return{isHighContrastModeActive:function(){let e=/(Edg)/.test(E.navigator.userAgent);if(E.matchMedia&&e)return E.matchMedia(“(-ms-high-contrast: active)”).matches;if(b&&E.getComputedStyle){let e=x.createElement(“div”);e.style.backgroundImage=”url(data:image/gif;base64,R0lGODlhAQABAAAAACH5BAEKAAEALAAAAAABAAEAAAICTAEAOw==)”,x.body.appendChild(e);let b=(e.currentStyle||E.getComputedStyle(e)).backgroundImage;return x.body.removeChild(e),”none”===b}return E.matchMedia&&E.matchMedia(“(forced-colors: active)”).matches},setHighContrastTheme:function(e){e.highContrastModeActive=!0;let x=e.options.accessibility.highContrastTheme;e.update(x,!1);let b=x.colors?.length>1;e.series.forEach(function(e){let E=x.plotOptions[e.type]||{},L=b&&void 0!==e.colorIndex?x.colors[e.colorIndex]:E.color||”window”,O={color:E.color||”windowText”,colors:b?x.colors:[E.color||”windowText”],borderColor:E.borderColor||”window”,fillColor:L};e.update(O,!1),e.points&&e.points.forEach(function(e){e.options&&e.options.color&&e.update({color:E.color||”windowText”,borderColor:E.borderColor||”window”},!1)})}),e.redraw()}}}),b(x,”Accessibility/HighContrastTheme.js”,[],function(){return{chart:{backgroundColor:”window”},title:{style:{color:”windowText”}},subtitle:{style:{color:”windowText”}},colorAxis:{minColor:”windowText”,maxColor:”windowText”,stops:[],dataClasses:[]},colors:[“windowText”],xAxis:{gridLineColor:”windowText”,labels:{style:{color:”windowText”}},lineColor:”windowText”,minorGridLineColor:”windowText”,tickColor:”windowText”,title:{style:{color:”windowText”}}},yAxis:{gridLineColor:”windowText”,labels:{style:{color:”windowText”}},lineColor:”windowText”,minorGridLineColor:”windowText”,tickColor:”windowText”,title:{style:{color:”windowText”}}},tooltip:{backgroundColor:”window”,borderColor:”windowText”,style:{color:”windowText”}},plotOptions:{series:{lineColor:”windowText”,fillColor:”window”,borderColor:”windowText”,edgeColor:”windowText”,borderWidth:1,dataLabels:{connectorColor:”windowText”,color:”windowText”,style:{color:”windowText”,textOutline:”none”}},marker:{lineColor:”windowText”,fillColor:”windowText”}},pie:{color:”window”,colors:[“window”],borderColor:”windowText”,borderWidth:1},boxplot:{fillColor:”window”},candlestick:{lineColor:”windowText”,fillColor:”window”},errorbar:{fillColor:”window”}},legend:{backgroundColor:”window”,itemStyle:{color:”windowText”},itemHoverStyle:{color:”windowText”},itemHiddenStyle:{color:”#555″},title:{style:{color:”windowText”}}},credits:{style:{color:”windowText”}},drilldown:{activeAxisLabelStyle:{color:”windowText”},activeDataLabelStyle:{color:”windowText”}},navigation:{buttonOptions:{symbolStroke:”windowText”,theme:{fill:”window”}}},rangeSelector:{buttonTheme:{fill:”window”,stroke:”windowText”,style:{color:”windowText”},states:{hover:{fill:”window”,stroke:”windowText”,style:{color:”windowText”}},select:{fill:”#444″,stroke:”windowText”,style:{color:”windowText”}}}},inputBoxBorderColor:”windowText”,inputStyle:{backgroundColor:”window”,color:”windowText”},labelStyle:{color:”windowText”}},navigator:{handles:{backgroundColor:”window”,borderColor:”windowText”},outlineColor:”windowText”,maskFill:”transparent”,series:{color:”windowText”,lineColor:”windowText”},xAxis:{gridLineColor:”windowText”}},scrollbar:{barBackgroundColor:”#444″,barBorderColor:”windowText”,buttonArrowColor:”windowText”,buttonBackgroundColor:”window”,buttonBorderColor:”windowText”,rifleColor:”windowText”,trackBackgroundColor:”window”,trackBorderColor:”windowText”}}}),b(x,”Accessibility/Options/A11yDefaults.js”,[],function(){return{accessibility:{enabled:!0,screenReaderSection:{beforeChartFormat:”<{headingTagName}>{chartTitle}
    {typeDescription}
    {chartSubtitle}
    {chartLongdesc}
    {playAsSoundButton}
    {viewTableButton}
    {xAxisDescription}
    {yAxisDescription}
    {annotationsTitle}{annotationsList}
    “,afterChartFormat:”{endOfChartMarker}”,axisRangeDateFormat:”%Y-%m-%d %H:%M:%S”},series:{descriptionFormat:”{seriesDescription}{authorDescription}{axisDescription}”,describeSingleSeries:!1,pointDescriptionEnabledThreshold:200},point:{valueDescriptionFormat:”{xDescription}{separator}{value}.”,describeNull:!0},landmarkVerbosity:”all”,linkedDescription:’*[data-highcharts-chart=”{index}”] + .highcharts-description’,highContrastMode:”auto”,keyboardNavigation:{enabled:!0,focusBorder:{enabled:!0,hideBrowserFocusOutline:!0,style:{color:”#334eff”,lineWidth:2,borderRadius:3},margin:2},order:[“series”,”zoom”,”rangeSelector”,”navigator”,”legend”,”chartMenu”],wrapAround:!0,seriesNavigation:{skipNullPoints:!0,pointNavigationEnabledThreshold:!1,rememberPointFocus:!1}},announceNewData:{enabled:!1,minAnnounceInterval:5e3,interruptUser:!1}},legend:{accessibility:{enabled:!0,keyboardNavigation:{enabled:!0}}},exporting:{accessibility:{enabled:!0}},navigator:{accessibility:{enabled:!0}}}}),b(x,”Accessibility/Options/LangDefaults.js”,[],function(){return{accessibility:{defaultChartTitle:”Chart”,chartContainerLabel:”{title}. Highcharts interactive chart.”,svgContainerLabel:”Interactive chart”,drillUpButton:”{buttonText}”,credits:”Chart credits: {creditsStr}”,thousandsSep:”,”,svgContainerTitle:””,graphicContainerLabel:””,screenReaderSection:{beforeRegionLabel:””,afterRegionLabel:””,annotations:{heading:”Chart annotations summary”,descriptionSinglePoint:”{annotationText}. Related to {annotationPoint}”,descriptionMultiplePoints:”{annotationText}. Related to {annotationPoint}{#each additionalAnnotationPoints}, also related to {this}{/each}”,descriptionNoPoints:”{annotationText}”},endOfChartMarker:”End of interactive chart.”},sonification:{playAsSoundButtonText:”Play as sound, {chartTitle}”,playAsSoundClickAnnouncement:”Play”},legend:{legendLabelNoTitle:”Toggle series visibility, {chartTitle}”,legendLabel:”Chart legend: {legendTitle}”,legendItem:”Show {itemName}”},zoom:{mapZoomIn:”Zoom chart”,mapZoomOut:”Zoom out chart”,resetZoomButton:”Reset zoom”},rangeSelector:{dropdownLabel:”{rangeTitle}”,minInputLabel:”Select start date.”,maxInputLabel:”Select end date.”,clickButtonAnnouncement:”Viewing {axisRangeDescription}”},navigator:{handleLabel:”{#eq handleIx 0}Start, percent{else}End, percent{/eq}”,groupLabel:”Axis zoom”,changeAnnouncement:”{axisRangeDescription}”},table:{viewAsDataTableButtonText:”View as data table, {chartTitle}”,tableSummary:”Table representation of chart.”},announceNewData:{newDataAnnounce:”Updated data for chart {chartTitle}”,newSeriesAnnounceSingle:”New data series: {seriesDesc}”,newPointAnnounceSingle:”New data point: {pointDesc}”,newSeriesAnnounceMultiple:”New data series in chart {chartTitle}: {seriesDesc}”,newPointAnnounceMultiple:”New data point in chart {chartTitle}: {pointDesc}”},seriesTypeDescriptions:{boxplot:”Box plot charts are typically used to display groups of statistical data. Each data point in the chart can have up to 5 values: minimum, lower quartile, median, upper quartile, and maximum.”,arearange:”Arearange charts are line charts displaying a range between a lower and higher value for each point.”,areasplinerange:”These charts are line charts displaying a range between a lower and higher value for each point.”,bubble:”Bubble charts are scatter charts where each data point also has a size value.”,columnrange:”Columnrange charts are column charts displaying a range between a lower and higher value for each point.”,errorbar:”Errorbar series are used to display the variability of the data.”,funnel:”Funnel charts are used to display reduction of data in stages.”,pyramid:”Pyramid charts consist of a single pyramid with item heights corresponding to each point value.”,waterfall:”A waterfall chart is a column chart where each column contributes towards a total end value.”},chartTypes:{emptyChart:”Empty chart”,mapTypeDescription:”Map of {mapTitle} with {numSeries} data series.”,unknownMap:”Map of unspecified region with {numSeries} data series.”,combinationChart:”Combination chart with {numSeries} data series.”,defaultSingle:”Chart with {numPoints} data {#eq numPoints 1}point{else}points{/eq}.”,defaultMultiple:”Chart with {numSeries} data series.”,splineSingle:”Line chart with {numPoints} data {#eq numPoints 1}point{else}points{/eq}.”,splineMultiple:”Line chart with {numSeries} lines.”,lineSingle:”Line chart with {numPoints} data {#eq numPoints 1}point{else}points{/eq}.”,lineMultiple:”Line chart with {numSeries} lines.”,columnSingle:”Bar chart with {numPoints} {#eq numPoints 1}bar{else}bars{/eq}.”,columnMultiple:”Bar chart with {numSeries} data series.”,barSingle:”Bar chart with {numPoints} {#eq numPoints 1}bar{else}bars{/eq}.”,barMultiple:”Bar chart with {numSeries} data series.”,pieSingle:”Pie chart with {numPoints} {#eq numPoints 1}slice{else}slices{/eq}.”,pieMultiple:”Pie chart with {numSeries} pies.”,scatterSingle:”Scatter chart with {numPoints} {#eq numPoints 1}point{else}points{/eq}.”,scatterMultiple:”Scatter chart with {numSeries} data series.”,boxplotSingle:”Boxplot with {numPoints} {#eq numPoints 1}box{else}boxes{/eq}.”,boxplotMultiple:”Boxplot with {numSeries} data series.”,bubbleSingle:”Bubble chart with {numPoints} {#eq numPoints 1}bubbles{else}bubble{/eq}.”,bubbleMultiple:”Bubble chart with {numSeries} data series.”},axis:{xAxisDescriptionSingular:”The chart has 1 X axis displaying {names[0]}. {ranges[0]}”,xAxisDescriptionPlural:”The chart has {numAxes} X axes displaying {#each names}{#unless @first},{/unless}{#if @last} and{/if} {this}{/each}.”,yAxisDescriptionSingular:”The chart has 1 Y axis displaying {names[0]}. {ranges[0]}”,yAxisDescriptionPlural:”The chart has {numAxes} Y axes displaying {#each names}{#unless @first},{/unless}{#if @last} and{/if} {this}{/each}.”,timeRangeDays:”Data range: {range} days.”,timeRangeHours:”Data range: {range} hours.”,timeRangeMinutes:”Data range: {range} minutes.”,timeRangeSeconds:”Data range: {range} seconds.”,rangeFromTo:”Data ranges from {rangeFrom} to {rangeTo}.”,rangeCategories:”Data range: {numCategories} categories.”},exporting:{chartMenuLabel:”Chart menu”,menuButtonLabel:”View chart menu, {chartTitle}”},series:{summary:{default:”{series.name}, series {seriesNumber} of {chart.series.length} with {series.points.length} data {#eq series.points.length 1}point{else}points{/eq}.”,defaultCombination:”{series.name}, series {seriesNumber} of {chart.series.length} with {series.points.length} data {#eq series.points.length 1}point{else}points{/eq}.”,line:”{series.name}, line {seriesNumber} of {chart.series.length} with {series.points.length} data {#eq series.points.length 1}point{else}points{/eq}.”,lineCombination:”{series.name}, series {seriesNumber} of {chart.series.length}. Line with {series.points.length} data {#eq series.points.length 1}point{else}points{/eq}.”,spline:”{series.name}, line {seriesNumber} of {chart.series.length} with {series.points.length} data {#eq series.points.length 1}point{else}points{/eq}.”,splineCombination:”{series.name}, series {seriesNumber} of {chart.series.length}. Line with {series.points.length} data {#eq series.points.length 1}point{else}points{/eq}.”,column:”{series.name}, bar series {seriesNumber} of {chart.series.length} with {series.points.length} {#eq series.points.length 1}bar{else}bars{/eq}.”,columnCombination:”{series.name}, series {seriesNumber} of {chart.series.length}. Bar series with {series.points.length} {#eq series.points.length 1}bar{else}bars{/eq}.”,bar:”{series.name}, bar series {seriesNumber} of {chart.series.length} with {series.points.length} {#eq series.points.length 1}bar{else}bars{/eq}.”,barCombination:”{series.name}, series {seriesNumber} of {chart.series.length}. Bar series with {series.points.length} {#eq series.points.length 1}bar{else}bars{/eq}.”,pie:”{series.name}, pie {seriesNumber} of {chart.series.length} with {series.points.length} {#eq series.points.length 1}slice{else}slices{/eq}.”,pieCombination:”{series.name}, series {seriesNumber} of {chart.series.length}. Pie with {series.points.length} {#eq series.points.length 1}slice{else}slices{/eq}.”,scatter:”{series.name}, scatter plot {seriesNumber} of {chart.series.length} with {series.points.length} {#eq series.points.length 1}point{else}points{/eq}.”,scatterCombination:”{series.name}, series {seriesNumber} of {chart.series.length}, scatter plot with {series.points.length} {#eq series.points.length 1}point{else}points{/eq}.”,boxplot:”{series.name}, boxplot {seriesNumber} of {chart.series.length} with {series.points.length} {#eq series.points.length 1}box{else}boxes{/eq}.”,boxplotCombination:”{series.name}, series {seriesNumber} of {chart.series.length}. Boxplot with {series.points.length} {#eq series.points.length 1}box{else}boxes{/eq}.”,bubble:”{series.name}, bubble series {seriesNumber} of {chart.series.length} with {series.points.length} {#eq series.points.length 1}bubble{else}bubbles{/eq}.”,bubbleCombination:”{series.name}, series {seriesNumber} of {chart.series.length}. Bubble series with {series.points.length} {#eq series.points.length 1}bubble{else}bubbles{/eq}.”,map:”{series.name}, map {seriesNumber} of {chart.series.length} with {series.points.length} {#eq series.points.length 1}area{else}areas{/eq}.”,mapCombination:”{series.name}, series {seriesNumber} of {chart.series.length}. Map with {series.points.length} {#eq series.points.length 1}area{else}areas{/eq}.”,mapline:”{series.name}, line {seriesNumber} of {chart.series.length} with {series.points.length} data {#eq series.points.length 1}point{else}points{/eq}.”,maplineCombination:”{series.name}, series {seriesNumber} of {chart.series.length}. Line with {series.points.length} data {#eq series.points.length 1}point{else}points{/eq}.”,mapbubble:”{series.name}, bubble series {seriesNumber} of {chart.series.length} with {series.points.length} {#eq series.points.length 1}bubble{else}bubbles{/eq}.”,mapbubbleCombination:”{series.name}, series {seriesNumber} of {chart.series.length}. Bubble series with {series.points.length} {#eq series.points.length 1}bubble{else}bubbles{/eq}.”},description:”{description}”,xAxisDescription:”X axis, {name}”,yAxisDescription:”Y axis, {name}”,nullPointValue:”No value”,pointAnnotationsDescription:”{#each annotations}Annotation: {this}{/each}”}}}}),b(x,”Accessibility/Options/DeprecatedOptions.js”,[x[“Core/Utilities.js”]],function(e){let{error:x,pick:b}=e;function E(e,x,E){let L=e,O,D=0;for(;D“series”!==e)):Object.keys(this.components):[]}update(){let e=this.components,x=this.chart,b=x.options.accessibility;tr(x,”beforeA11yUpdate”),x.types=this.getChartTypes();let E=b.keyboardNavigation.order;this.proxyProvider.updateGroupOrder(E),this.getComponentOrder().forEach(function(b){e[b].onChartUpdate(),tr(x,”afterA11yComponentUpdate”,{name:b,component:e[b]})}),this.keyboardNavigation.update(E),!x.highContrastModeActive&&!1!==b.highContrastMode&&($.isHighContrastModeActive()||!0===b.highContrastMode)&&$.setHighContrastTheme(x),tr(x,”afterA11yUpdate”,{accessibility:this})}destroy(){let e=this.chart||{},x=this.components;Object.keys(x).forEach(function(e){x[e].destroy(),x[e].destroyBase()}),this.proxyProvider&&this.proxyProvider.destroy(),e.announcerContainer&&ta(e.announcerContainer),this.keyboardNavigation&&this.keyboardNavigation.destroy(),e.renderTo&&e.renderTo.setAttribute(“aria-hidden”,!0),e.focusElement&&e.focusElement.removeFocusBorder()}getChartTypes(){let e={};return this.chart.series.forEach(function(x){e[x.type]=1}),Object.keys(e)}};return function(e){function x(){this.accessibility&&this.accessibility.destroy()}function b(){this.a11yDirty&&this.renderTo&&(delete this.a11yDirty,this.updateA11yEnabled());let e=this.accessibility;e&&!e.zombie&&(e.proxyProvider.updateProxyElementPositions(),e.getComponentOrder().forEach(function(x){e.components[x].onChartRender()}))}function E(e){let x=e.options.accessibility;x&&(x.customComponents&&(this.options.accessibility.customComponents=x.customComponents,delete x.customComponents),tn(!0,this.options.accessibility,x),this.accessibility&&this.accessibility.destroy&&(this.accessibility.destroy(),delete this.accessibility)),this.a11yDirty=!0}function O(){let x=this.accessibility,b=this.options.accessibility;b&&b.enabled?x&&!x.zombie?x.update():(this.accessibility=x=new e(this),x&&!x.zombie&&x.update()):x?(x.destroy&&x.destroy(),delete this.accessibility):this.renderTo.setAttribute(“aria-hidden”,!0)}function j(){this.series.chart.accessibility&&(this.series.chart.a11yDirty=!0)}e.i18nFormat=L.i18nFormat,e.compose=function(e,H,Y,K,$,_){R.compose(e),U.compose(K),z.compose(e,H),F.compose(e),q.compose(e,Y,K),L.compose(e),D.compose(e,$),_&&V.compose(e,_);let Z=e.prototype;Z.updateA11yEnabled||(Z.updateA11yEnabled=O,ts(e,”destroy”,x),ts(e,”render”,b),ts(e,”update”,E),[“addSeries”,”init”].forEach(x=>{ts(e,x,function(){this.a11yDirty=!0})}),[“afterApplyDrilldown”,”drillupall”].forEach(x=>{ts(e,x,function(){let e=this.accessibility;e&&!e.zombie&&e.update()})}),ts(Y,”update”,j),[“update”,”updatedData”,”remove”].forEach(e=>{ts(K,e,function(){this.chart.accessibility&&(this.chart.a11yDirty=!0)})}))}}(P||(P={})),tn(!0,te,Z,{accessibility:{highContrastTheme:_},lang:J}),P}),b(x,”masters/modules/accessibility.src.js”,[x[“Core/Globals.js”],x[“Accessibility/Accessibility.js”],x[“Accessibility/AccessibilityComponent.js”],x[“Accessibility/Utils/ChartUtilities.js”],x[“Accessibility/Utils/HTMLUtilities.js”],x[“Accessibility/KeyboardNavigationHandler.js”],x[“Accessibility/Components/SeriesComponent/SeriesDescriber.js”]],function(e,x,b,E,L,O,D){return e.i18nFormat=x.i18nFormat,e.A11yChartUtilities=E,e.A11yHTMLUtilities=L,e.AccessibilityComponent=b,e.KeyboardNavigationHandler=O,e.SeriesAccessibilityDescriber=D,x.compose(e.Chart,e.Legend,e.Point,e.Series,e.SVGElement,e.RangeSelector),e})},e.exports?(L.default=L,e.exports=L):void 0===(E=(function(e){return L(e),L.Highcharts=e,L}).apply(x,[b(14783)]))||(e.exports=E)},55357:(e,x,b)=>{var E,L;L=function(e){“use strict”;var x=e?e._modules:{};function b(e,x,b,E){e.hasOwnProperty(x)||(e[x]=E.apply(null,b),”function”==typeof CustomEvent&&window.dispatchEvent(new CustomEvent(“HighchartsModuleLoaded”,{detail:{path:x,module:e[x]}})))}b(x,”Extensions/Pane/PaneComposition.js”,[x[“Core/Utilities.js”]],function(e){let{addEvent:x,correctFloat:b,defined:E,pick:L}=e;function O(e){let x,b=this;return e&&b.pane.forEach(E=>{D(e.chartX-b.plotLeft,e.chartY-b.plotTop,E.center)&&(x=E)}),x}function D(e,x,L,O,D){let j=!0,R=L[0],z=L[1];if(E(O)&&E(D)){let E=Math.atan2(b(x-z,8),b(e-R,8));D!==O&&(j=O>D?E>=O&&E<=Math.PI||E<=D&&E>=-Math.PI:E>=O&&E<=b(D,8))}return Math.sqrt(Math.pow(e-R,2)+Math.pow(x-z,2))<=Math.ceil(L[2]/2)&&j}function j(e){this.polar&&(e.options.inverted&&([e.x,e.y]=[e.y,e.x]),e.isInsidePlot=this.pane.some(x=>D(e.x,e.y,x.center,x.axis&&x.axis.normalizedStartAngleRad,x.axis&&x.axis.normalizedEndAngleRad)))}function R(e){let x=this.chart;e.hoverPoint&&e.hoverPoint.plotX&&e.hoverPoint.plotY&&x.hoverPane&&!D(e.hoverPoint.plotX,e.hoverPoint.plotY,x.hoverPane.center)&&(e.hoverPoint=void 0)}function z(e){let x=this.chart;x.polar?(x.hoverPane=x.getHoverPane(e),e.filter=function(b){return b.visible&&!(!e.shared&&b.directTouch)&&L(b.options.enableMouseTracking,!0)&&(!x.hoverPane||b.xAxis.pane===x.hoverPane)}):x.hoverPane=void 0}return{compose:function(e,b){let E=e.prototype;E.getHoverPane||(E.collectionsWithUpdate.push(“pane”),E.getHoverPane=O,x(e,”afterIsInsidePlot”,j),x(b,”afterGetHoverData”,R),x(b,”beforeGetHoverData”,z))}}}),b(x,”Extensions/Pane/PaneDefaults.js”,[],function(){return{pane:{center:[“50%”,”50%”],size:”85%”,innerSize:”0%”,startAngle:0},background:{shape:”circle”,borderRadius:0,borderWidth:1,borderColor:”#cccccc”,backgroundColor:{linearGradient:{x1:0,y1:0,x2:0,y2:1},stops:[[0,”#ffffff”],[1,”#e6e6e6″]]},from:-Number.MAX_VALUE,innerRadius:0,to:Number.MAX_VALUE,outerRadius:”105%”}}}),b(x,”Extensions/Pane/Pane.js”,[x[“Series/CenteredUtilities.js”],x[“Extensions/Pane/PaneComposition.js”],x[“Extensions/Pane/PaneDefaults.js”],x[“Core/Utilities.js”]],function(e,x,b,E){let{extend:L,merge:O,splat:D}=E;let n=class n{constructor(e,x){this.coll=”pane”,this.init(e,x)}init(e,x){this.chart=x,this.background=[],x.pane.push(this),this.setOptions(e)}setOptions(e){this.options=e=O(b.pane,this.chart.angular?{background:{}}:void 0,e)}render(){let e=this.options,x=this.chart.renderer;this.group||(this.group=x.g(“pane-group”).attr({zIndex:e.zIndex||0}).add()),this.updateCenter();let E=this.options.background;if(E){let e=Math.max((E=D(E)).length,this.background.length||0);for(let x=0;xO,x.y=x.high,x._plotY=x.plotY,x.plotY=L,R[e]=x.dataLabel,x.dataLabel=x.dataLabelUpper,x.below=b,U?E.align||(E.align=b?”right”:”left”):E.verticalAlign||(E.verticalAlign=b?”top”:”bottom”)}for(this.options.dataLabels=E,D.drawDataLabels&&D.drawDataLabels.apply(this,arguments),e=j;e–;)(x=O[e])&&(x.dataLabelUpper=x.dataLabel,x.dataLabel=R[e],delete x.dataLabels,x.y=x.low,x.plotY=x._plotY)}if(L.enabled||this.hasDataLabels?.()){for(e=j;e–;)if(x=O[e]){let{plotHigh:e=0,plotLow:E=0}=x;b=L.inside?eE,x.below=!b,U?L.align||(L.align=b?”left”:”right”):L.verticalAlign||(L.verticalAlign=b?”bottom”:”top”)}this.options.dataLabels=L,D.drawDataLabels&&D.drawDataLabels.apply(this,arguments)}if(E.enabled)for(e=j;e–;)(x=O[e])&&(x.dataLabels=[x.dataLabelUpper,x.dataLabel].filter(function(e){return!!e}));this.options.dataLabels=z}}alignDataLabel(){j.alignDataLabel.apply(this,arguments)}modifyMarkerSettings(){let e={marker:this.options.marker,symbol:this.symbol};if(this.options.lowMarker){let{options:{marker:e,lowMarker:x}}=this;this.options.marker=V(e,x),x.symbol&&(this.symbol=x.symbol)}return e}restoreMarkerSettings(e){this.options.marker=e.marker,this.symbol=e.symbol}drawPoints(){let e,x,b=this.points.length,E=this.modifyMarkerSettings();for(D.drawPoints.apply(this,arguments),this.restoreMarkerSettings(E),e=0;e=0&&x.plotY<=this.yAxis.len&&x.plotX>=0&&x.plotX<=this.xAxis.len),e++;for(D.drawPoints.apply(this,arguments),e=0;e\u25CF {series.name}: {point.low}{point.high}
    ‘},trackByArea:!0,dataLabels:{align:void 0,verticalAlign:void 0,xLow:0,xHigh:0,yLow:0,yHigh:0}}),R(f,”afterTranslate”,function(){“low,high”===this.pointArrayMap.join(“,”)&&this.points.forEach(e=>{let x=e.high,b=e.plotY;e.isNull?e.plotY=void 0:(e.plotLow=b,e.plotHigh=U(x)?this.yAxis.translate(this.dataModify?this.dataModify.modifyValue(x):x,!1,!0,void 0,!0):void 0,this.dataModify&&(e.yBottom=e.plotHigh))})},{order:0}),R(f,”afterTranslate”,function(){this.points.forEach(e=>{if(this.chart.polar)this.highToXY(e),e.plotLow=e.plotY,e.tooltipPos=[((e.plotHighX||0)+(e.plotLowX||0))/2,((e.plotHigh||0)+(e.plotLow||0))/2];else{let x=e.pos(!1,e.plotLow),b=e.pos(!1,e.plotHigh);x&&b&&(x[0]=(x[0]+b[0])/2,x[1]=(x[1]+b[1])/2),e.tooltipPos=x}})},{order:3}),F(f.prototype,{deferTranslatePolar:!0,pointArrayMap:[“low”,”high”],pointClass:e,pointValKey:”low”,setStackedPoints:L}),b.registerSeriesType(“arearange”,f),f}),b(x,”Series/AreaSplineRange/AreaSplineRangeSeries.js”,[x[“Series/AreaRange/AreaRangeSeries.js”],x[“Core/Series/SeriesRegistry.js”],x[“Core/Utilities.js”]],function(e,x,b){let{spline:{prototype:E}}=x.seriesTypes,{merge:L,extend:O}=b;let r=class r extends e{};return r.defaultOptions=L(e.defaultOptions),O(r.prototype,{getPointSpline:E.getPointSpline}),x.registerSeriesType(“areasplinerange”,r),r}),b(x,”Series/BoxPlot/BoxPlotSeriesDefaults.js”,[],function(){return{threshold:null,tooltip:{pointFormat:’\u25CF {series.name}
    Maximum: {point.high}
    Upper quartile: {point.q3}
    Median: {point.median}
    Lower quartile: {point.q1}
    Minimum: {point.low}
    ‘},whiskerLength:”50%”,fillColor:”#ffffff”,lineWidth:1,medianWidth:2,whiskerWidth:2}}),b(x,”Series/BoxPlot/BoxPlotSeries.js”,[x[“Series/BoxPlot/BoxPlotSeriesDefaults.js”],x[“Series/Column/ColumnSeries.js”],x[“Core/Globals.js”],x[“Core/Series/SeriesRegistry.js”],x[“Core/Utilities.js”]],function(e,x,b,E,L){let{noop:O}=b,{crisp:D,extend:j,merge:R,pick:z}=L;let p=class p extends x{pointAttribs(){return{}}translate(){let e=this.yAxis,x=this.pointArrayMap;super.translate.apply(this),this.points.forEach(function(b){x.forEach(function(x){null!==b[x]&&(b[x+”Plot”]=e.translate(b[x],0,1,0,1))}),b.plotHigh=b.highPlot})}drawPoints(){let e,x,b,E,L,O,j,R,F,H,U,Y,V,q=this.points,K=this.options,$=this.chart,_=$.renderer,Z=!1!==this.doQuartiles,J=this.options.whiskerLength;for(let tt of q){let q=(R=tt.graphic)?”animate”:”attr”,te=tt.shapeArgs,ti={},ts={},to={},tr={},tn=tt.color||this.color;if(void 0!==tt.plotY){let ta;F=te.width,U=(H=te.x)+F,Y=F/2,e=Z?tt.q1Plot:tt.lowPlot,x=Z?tt.q3Plot:tt.lowPlot,b=tt.highPlot,E=tt.lowPlot,R||(tt.graphic=R=_.g(“point”).add(this.group),tt.stem=_.path().addClass(“highcharts-boxplot-stem”).add(R),J&&(tt.whiskers=_.path().addClass(“highcharts-boxplot-whisker”).add(R)),Z&&(tt.box=_.path(j).addClass(“highcharts-boxplot-box”).add(R)),tt.medianShape=_.path(O).addClass(“highcharts-boxplot-median”).add(R)),$.styledMode||(ts.stroke=tt.stemColor||K.stemColor||tn,ts[“stroke-width”]=z(tt.stemWidth,K.stemWidth,K.lineWidth),ts.dashstyle=tt.stemDashStyle||K.stemDashStyle||K.dashStyle,tt.stem.attr(ts),J&&(to.stroke=tt.whiskerColor||K.whiskerColor||tn,to[“stroke-width”]=z(tt.whiskerWidth,K.whiskerWidth,K.lineWidth),to.dashstyle=tt.whiskerDashStyle||K.whiskerDashStyle||K.dashStyle,tt.whiskers.attr(to)),Z&&(ti.fill=tt.fillColor||K.fillColor||tn,ti.stroke=K.lineColor||tn,ti[“stroke-width”]=K.lineWidth||0,ti.dashstyle=tt.boxDashStyle||K.boxDashStyle||K.dashStyle,tt.box.attr(ti)),tr.stroke=tt.medianColor||K.medianColor||tn,tr[“stroke-width”]=z(tt.medianWidth,K.medianWidth,K.lineWidth),tr.dashstyle=tt.medianDashStyle||K.medianDashStyle||K.dashStyle,tt.medianShape.attr(tr));let tl=D(tt.plotX||0,tt.stem.strokeWidth());if(ta=[[“M”,tl,x],[“L”,tl,b],[“M”,tl,e],[“L”,tl,E]],tt.stem[q]({d:ta}),Z){let b=tt.box.strokeWidth();e=D(e,b),x=D(x,b),ta=[[“M”,H=D(H,b),x],[“L”,H,e],[“L”,U=D(U,b),e],[“L”,U,x],[“L”,H,x],[“Z”]],tt.box[q]({d:ta})}if(J){let e=tt.whiskers.strokeWidth();b=D(tt.highPlot,e),E=D(tt.lowPlot,e),ta=[[“M”,D(tl-(V=”string”==typeof J&&/%$/.test(J)?Y*parseFloat(J)/100:Number(J)/2)),b],[“L”,D(tl+V),b],[“M”,D(tl-V),E],[“L”,D(tl+V),E]],tt.whiskers[q]({d:ta})}ta=[[“M”,H,L=D(tt.medianPlot,tt.medianShape.strokeWidth())],[“L”,U,L]],tt.medianShape[q]({d:ta})}}}toYData(e){return[e.low,e.q1,e.median,e.q3,e.high]}};return p.defaultOptions=R(x.defaultOptions,e),j(p.prototype,{pointArrayMap:[“low”,”q1″,”median”,”q3″,”high”],pointValKey:”high”,drawDataLabels:O,setStackedPoints:O}),E.registerSeriesType(“boxplot”,p),p}),b(x,”Series/Bubble/BubbleLegendDefaults.js”,[],function(){return{borderColor:void 0,borderWidth:2,className:void 0,color:void 0,connectorClassName:void 0,connectorColor:void 0,connectorDistance:60,connectorWidth:1,enabled:!1,labels:{className:void 0,allowOverlap:!1,format:””,formatter:void 0,align:”right”,style:{fontSize:”0.9em”,color:”#000000″},x:0,y:0},maxSize:60,minSize:10,legendIndex:0,ranges:{value:void 0,borderColor:void 0,color:void 0,connectorColor:void 0},sizeBy:”area”,sizeByAbsoluteValue:!1,zIndex:1,zThreshold:0}}),b(x,”Series/Bubble/BubbleLegendItem.js”,[x[“Core/Color/Color.js”],x[“Core/Templating.js”],x[“Core/Globals.js”],x[“Core/Utilities.js”]],function(e,x,b,E){let{parse:L}=e,{noop:O}=b,{arrayMax:D,arrayMin:j,isNumber:R,merge:z,pick:F,stableSort:H}=E;return class{constructor(e,x){this.setState=O,this.init(e,x)}init(e,x){this.options=e,this.visible=!0,this.chart=x.chart,this.legend=x}addToLegend(e){e.splice(this.options.legendIndex,0,this)}drawLegendSymbol(e){let x,b=F(e.options.itemDistance,20),E=this.legendItem||{},L=this.options,O=L.ranges,D=L.connectorDistance;if(!O||!O.length||!R(O[0].value)){e.options.bubbleLegend.autoRanges=!0;return}H(O,function(e,x){return x.value-e.value}),this.ranges=O,this.setOptions(),this.render();let j=this.getMaxLabelSize(),z=this.ranges[0].radius,U=2*z;x=(x=D-z+j.width)>0?x:0,this.maxLabel=j,this.movementX=”left”===L.labels.align?x:0,E.labelWidth=U+x+b,E.labelHeight=U+j.height/2}setOptions(){let e=this.ranges,x=this.options,b=this.chart.series[x.seriesIndex],E=this.legend.baseline,O={zIndex:x.zIndex,”stroke-width”:x.borderWidth},D={zIndex:x.zIndex,”stroke-width”:x.connectorWidth},j={align:this.legend.options.rtl||”left”===x.labels.align?”right”:”left”,zIndex:x.zIndex},R=b.options.marker.fillOpacity,H=this.chart.styledMode;e.forEach(function(U,Y){H||(O.stroke=F(U.borderColor,x.borderColor,b.color),O.fill=F(U.color,x.color,1!==R?L(b.color).setOpacity(R).get(“rgba”):b.color),D.stroke=F(U.connectorColor,x.connectorColor,b.color)),e[Y].radius=this.getRangeRadius(U.value),e[Y]=z(e[Y],{center:e[0].radius-e[Y].radius+E}),H||z(!0,e[Y],{bubbleAttribs:z(O),connectorAttribs:z(D),labelAttribs:j})},this)}getRangeRadius(e){let x=this.options,b=this.options.seriesIndex,E=this.chart.series[b],L=x.ranges[0].value,O=x.ranges[x.ranges.length-1].value,D=x.minSize,j=x.maxSize;return E.getRadius.call(this,O,L,D,j,e)}render(){let e=this.legendItem||{},x=this.chart.renderer,b=this.options.zThreshold;for(let E of(this.symbols||(this.symbols={connectors:[],bubbleItems:[],labels:[]}),e.symbol=x.g(“bubble-legend”),e.label=x.g(“bubble-legend-item”).css(this.legend.itemStyle||{}),e.symbol.translateX=0,e.symbol.translateY=0,e.symbol.add(e.label),e.label.add(e.group),this.ranges))E.value>=b&&this.renderRange(E);this.hideOverlappingLabels()}renderRange(e){let x=this.ranges[0],b=this.legend,E=this.options,L=E.labels,O=this.chart,D=O.series[E.seriesIndex],j=O.renderer,R=this.symbols,z=R.labels,F=e.center,H=Math.abs(e.radius),U=E.connectorDistance||0,Y=L.align,V=b.options.rtl,q=E.borderWidth,K=E.connectorWidth,$=x.radius||0,_=F-H-q/2+K/2,Z=(_%1?1:.5)-(K%2?0:.5),J=j.styledMode,tt=V||”left”===Y?-U:U;”center”===Y&&(tt=0,E.connectorDistance=0,e.labelAttribs.align=”center”),R.bubbleItems.push(j.circle($,F+Z,H).attr(J?{}:e.bubbleAttribs).addClass((J?”highcharts-color-“+D.colorIndex+” “:””)+”highcharts-bubble-legend-symbol “+(E.className||””)).add(this.legendItem.symbol)),R.connectors.push(j.path(j.crispLine([[“M”,$,_],[“L”,$+tt,_]],E.connectorWidth)).attr(J?{}:e.connectorAttribs).addClass((J?”highcharts-color-“+this.options.seriesIndex+” “:””)+”highcharts-bubble-legend-connectors “+(E.connectorClassName||””)).add(this.legendItem.symbol));let te=j.text(this.formatLabel(e)).attr(J?{}:e.labelAttribs).css(J?{}:L.style).addClass(“highcharts-bubble-legend-labels “+(E.labels.className||””)).add(this.legendItem.symbol),ti={x:$+tt+E.labels.x,y:_+E.labels.y+.4*te.getBBox().height};te.attr(ti),z.push(te),te.placed=!0,te.alignAttr=ti}getMaxLabelSize(){let e,x;return this.symbols.labels.forEach(function(b){x=b.getBBox(!0),e=e?x.width>e.width?x:e:x}),e||{}}formatLabel(e){let b=this.options,E=b.labels.formatter,L=b.labels.format,{numberFormatter:O}=this.chart;return L?x.format(L,e):E?E.call(e):O(e.value,1)}hideOverlappingLabels(){let e=this.chart,x=this.options.labels.allowOverlap,b=this.symbols;!x&&b&&(e.hideOverlappingLabels(b.labels),b.labels.forEach(function(e,x){e.newOpacity?e.newOpacity!==e.oldOpacity&&b.connectors[x].show():b.connectors[x].hide()}))}getRanges(){let e=this.legend.bubbleLegend,x=e.chart.series,b=e.options.ranges,E,L,O=Number.MAX_VALUE,H=-Number.MAX_VALUE;return x.forEach(function(e){e.isBubble&&!e.ignoreSeries&&(L=e.zData.filter(R)).length&&(O=F(e.options.zMin,Math.min(O,Math.max(j(L),!1===e.options.displayNegative?e.options.zThreshold:-Number.MAX_VALUE))),H=F(e.options.zMax,Math.max(H,D(L))))}),E=O===H?[{value:H}]:[{value:O},{value:(O+H)/2},{value:H,autoRanges:!0}],b.length&&b[0].radius&&E.reverse(),E.forEach(function(e,x){b&&b[x]&&(E[x]=z(b[x],e))}),E}predictBubbleSizes(){let e=this.chart,x=e.legend.options,b=x.floating,E=”horizontal”===x.layout,L=E?e.legend.lastLineHeight:0,O=e.plotSizeX,D=e.plotSizeY,j=e.series[this.options.seriesIndex],R=j.getPxExtremes(),z=Math.ceil(R.minPxSize),F=Math.ceil(R.maxPxSize),H,U=j.options.maxSize;return b||!/%$/.test(U)?H=F:(H=(Math.min(D,O)+L)*(U=parseFloat(U))/100/(U/100+1),(E&&D-H>=O||!E&&O-H>=D)&&(H=F)),[z,Math.ceil(H)]}updateRanges(e,x){let b=this.legend.options.bubbleLegend;b.minSize=e,b.maxSize=x,b.ranges=this.getRanges()}correctSizes(){let e=this.legend,x=this.chart.series[this.options.seriesIndex].getPxExtremes();Math.abs(Math.ceil(x.maxPxSize)-this.options.maxSize)>1&&(this.updateRanges(this.options.minSize,x.maxPxSize),e.render())}}}),b(x,”Series/Bubble/BubbleLegendComposition.js”,[x[“Series/Bubble/BubbleLegendDefaults.js”],x[“Series/Bubble/BubbleLegendItem.js”],x[“Core/Defaults.js”],x[“Core/Globals.js”],x[“Core/Utilities.js”]],function(e,x,b,E,L){let{setOptions:O}=b,{composed:D}=E,{addEvent:j,objectEach:R,pushUnique:z,wrap:F}=L;function H(e,x,b){let E,L,O,D=this.legend,j=U(this)>=0;D&&D.options.enabled&&D.bubbleLegend&&D.options.bubbleLegend.autoRanges&&j?(E=D.bubbleLegend.options,L=D.bubbleLegend.predictBubbleSizes(),D.bubbleLegend.updateRanges(L[0],L[1]),E.placed||(D.group.placed=!1,D.allItems.forEach(e=>{(O=e.legendItem||{}).group&&(O.group.translateY=void 0)})),D.render(),E.placed||(this.getMargins(),this.axes.forEach(function(e){e.visible&&e.render(),E.placed||(e.setScale(),e.updateNames(),R(e.ticks,function(e){e.isNew=!0,e.isNewLabel=!0}))}),this.getMargins()),E.placed=!0,e.call(this,x,b),D.bubbleLegend.correctSizes(),K(D,Y(D))):(e.call(this,x,b),D&&D.options.enabled&&D.bubbleLegend&&(D.render(),K(D,Y(D))))}function U(e){let x=e.series,b=0;for(;bL.height&&(L.height=x[R].itemHeight);L.step=j}return b}function V(e){let b=this.bubbleLegend,E=this.options,L=E.bubbleLegend,O=U(this.chart);b&&b.ranges&&b.ranges.length&&(L.ranges.length&&(L.autoRanges=!!L.ranges[0].autoRanges),this.destroyItem(b)),O>=0&&E.enabled&&L.enabled&&(L.seriesIndex=O,this.bubbleLegend=new x(L,this),this.bubbleLegend.addToLegend(e.allItems))}function q(e){let x;if(e.defaultPrevented)return!1;let b=this.chart,E=this.visible,L=this.chart.legend;L&&L.bubbleLegend&&(this.visible=!E,this.ignoreSeries=E,x=U(b)>=0,L.bubbleLegend.visible!==x&&(L.update({bubbleLegend:{enabled:x}}),L.bubbleLegend.visible=x),this.visible=E)}function K(e,x){let b=e.allItems,E=e.options.rtl,L,O,D,j,R=0;b.forEach((e,b)=>{(j=e.legendItem||{}).group&&(L=j.group.translateX||0,O=j.y||0,((D=e.movementX)||E&&e.ranges)&&(D=E?L-e.options.maxSize/2:L+D,j.group.attr({translateX:D})),b>x[R].step&&R++,j.group.attr({translateY:Math.round(O+x[R].height/2)}),j.y=O+x[R].height/2)})}return{compose:function(x,b,E){z(D,”Series.BubbleLegend”)&&(O({legend:{bubbleLegend:e}}),F(x.prototype,”drawChartBox”,H),j(b,”afterGetAllItems”,V),j(E,”legendItemClick”,q))}}}),b(x,”Series/Bubble/BubblePoint.js”,[x[“Core/Series/Point.js”],x[“Core/Series/SeriesRegistry.js”],x[“Core/Utilities.js”]],function(e,x,b){let{seriesTypes:{scatter:{prototype:{pointClass:E}}}}=x,{extend:L}=b;let a=class a extends E{haloPath(x){return e.prototype.haloPath.call(this,0===x?0:(this.marker&&this.marker.radius||0)+x)}};return L(a.prototype,{ttBelow:!1}),a}),b(x,”Series/Bubble/BubbleSeries.js”,[x[“Series/Bubble/BubbleLegendComposition.js”],x[“Series/Bubble/BubblePoint.js”],x[“Core/Color/Color.js”],x[“Core/Globals.js”],x[“Core/Series/SeriesRegistry.js”],x[“Core/Utilities.js”]],function(e,x,b,E,L,O){let{parse:D}=b,{composed:j,noop:R}=E,{series:z,seriesTypes:{column:{prototype:F},scatter:H}}=L,{addEvent:U,arrayMax:Y,arrayMin:V,clamp:q,extend:K,isNumber:$,merge:_,pick:Z,pushUnique:J}=O;function tt(){let e=this.len,{coll:x,isXAxis:b,min:E}=this,L=b?”xData”:”yData”,O=(this.max||0)-(E||0),D=0,j=e,R=e/O,z;(“xAxis”===x||”yAxis”===x)&&(this.series.forEach(e=>{if(e.bubblePadding&&e.reserveSpace()){this.allowZoomOutside=!0,z=!0;let x=e[L];if(b&&((e.onPoint||e).getRadii(0,0,e),e.onPoint&&(e.radii=e.onPoint.radii)),O>0){let b=x.length;for(;b–;)if($(x[b])&&this.dataMin<=x[b]&&x[b]<=this.max){let L=e.radii&&e.radii[b]||0;D=Math.min((x[b]-E)*R-L,D),j=Math.max((x[b]-E)*R+L,j)}}}}),z&&O>0&&!this.logarithmic&&(j-=e,R*=(e+Math.max(0,D)-Math.min(j,e))/e,[[“min”,”userMin”,D],[“max”,”userMax”,j]].forEach(e=>{void 0===Z(this.options[e[0]],this[e[1]])&&(this[e[0]]+=e[2]/R)})))}let M=class M extends H{static compose(x,b,E,L){e.compose(b,E,L),J(j,”Series.Bubble”)&&U(x,”foundExtremes”,tt)}animate(e){!e&&this.points.length{if(E.bubblePadding&&E.reserveSpace()){let L=(E.onPoint||E).getZExtremes();L&&(x=Math.min(Z(x,L.zMin),L.zMin),b=Math.max(Z(b,L.zMax),L.zMax),e=!0)}}),e?(D={zMin:x,zMax:b},this.chart.bubbleZExtremes=D):D={zMin:0,zMax:0}}for(L=0,E=e.length;L0&&(F=(L-e)/z)}return j&&F>=0&&(F=Math.sqrt(F)),Math.ceil(b+F*(E-b))/2}hasData(){return!!this.processedXData.length}markerAttribs(e,x){let b=super.markerAttribs(e,x),{height:E=0,width:L=0}=b;return this.chart.inverted?K(b,{x:(e.plotX||0)-L/2,y:(e.plotY||0)-E/2}):b}pointAttribs(e,x){let b=this.options.marker.fillOpacity,E=z.prototype.pointAttribs.call(this,e,x);return 1!==b&&(E.fill=D(E.fill).setOpacity(b).get(“rgba”)),E}translate(){super.translate.call(this),this.getRadii(),this.translateBubble()}translateBubble(){let{data:e,options:x,radii:b}=this,{minPxSize:E}=this.getPxExtremes(),L=e.length;for(;L–;){let O=e[L],D=b?b[L]:0;”z”===this.zoneAxis&&(O.negative=(O.z||0)<(x.zThreshold||0)),$(D)&&D>=E/2?(O.marker=K(O.marker,{radius:D,width:2*D,height:2*D}),O.dlBox={x:O.plotX-D,y:O.plotY-D,width:2*D,height:2*D}):(O.shapeArgs=O.plotY=O.dlBox=void 0,O.isInside=!1)}}getPxExtremes(){let e=Math.min(this.chart.plotWidth,this.chart.plotHeight),x=x=>{let b;return”string”==typeof x&&(b=/%$/.test(x),x=parseInt(x,10)),b?e*x/100:x},b=x(Z(this.options.minSize,8)),E=Math.max(x(Z(this.options.maxSize,”20%”)),b);return{minPxSize:b,maxPxSize:E}}getZExtremes(){let e=this.options,x=(this.zData||[]).filter($);if(x.length){let b=Z(e.zMin,q(V(x),!1===e.displayNegative?e.zThreshold||0:-Number.MAX_VALUE,Number.MAX_VALUE)),E=Z(e.zMax,Y(x));if($(b)&&$(E))return{zMin:b,zMax:E}}}};return M.defaultOptions=_(H.defaultOptions,{dataLabels:{formatter:function(){let{numberFormatter:e}=this.series.chart,{z:x}=this.point;return $(x)?e(x,-1):””},inside:!0,verticalAlign:”middle”},animationLimit:250,marker:{lineColor:null,lineWidth:1,fillOpacity:.5,radius:null,states:{hover:{radiusPlus:0}},symbol:”circle”},minSize:8,maxSize:”20%”,softThreshold:!1,states:{hover:{halo:{size:5}}},tooltip:{pointFormat:”({point.x}, {point.y}), Size: {point.z}”},turboThreshold:0,zThreshold:0,zoneAxis:”z”}),K(M.prototype,{alignDataLabel:F.alignDataLabel,applyZones:R,bubblePadding:!0,isBubble:!0,pointArrayMap:[“y”,”z”],pointClass:x,parallelArrays:[“x”,”y”,”z”],trackerGroups:[“group”,”dataLabelsGroup”],specialGroup:”group”,zoneAxis:”z”}),U(M,”updatedData”,e=>{delete e.target.chart.bubbleZExtremes}),U(M,”remove”,e=>{delete e.target.chart.bubbleZExtremes}),L.registerSeriesType(“bubble”,M),M}),b(x,”Series/ColumnRange/ColumnRangePoint.js”,[x[“Core/Series/SeriesRegistry.js”],x[“Core/Utilities.js”]],function(e,x){let{seriesTypes:{column:{prototype:{pointClass:{prototype:b}}},arearange:{prototype:{pointClass:E}}}}=e,{extend:L,isNumber:O}=x;let r=class r extends E{isValid(){return O(this.low)}};return L(r.prototype,{setState:b.setState}),r}),b(x,”Series/ColumnRange/ColumnRangeSeries.js”,[x[“Series/ColumnRange/ColumnRangePoint.js”],x[“Core/Globals.js”],x[“Core/Series/SeriesRegistry.js”],x[“Core/Utilities.js”]],function(e,x,b,E){let{noop:L}=x,{seriesTypes:{arearange:O,column:D,column:{prototype:j}}}=b,{addEvent:R,clamp:z,extend:F,isNumber:H,merge:U,pick:Y}=E;let g=class g extends O{setOptions(){return U(!0,arguments[0],{stacking:void 0}),O.prototype.setOptions.apply(this,arguments)}translate(){return j.translate.apply(this)}pointAttribs(){return j.pointAttribs.apply(this,arguments)}translate3dPoints(){return j.translate3dPoints.apply(this,arguments)}translate3dShapes(){return j.translate3dShapes.apply(this,arguments)}afterColumnTranslate(){let e,x,b,E,L=this.yAxis,O=this.xAxis,D=O.startAngleRad,j=this.chart,R=this.xAxis.isRadial,F=Math.max(j.chartWidth,j.chartHeight)+999;this.points.forEach(V=>{let q=V.shapeArgs||{},K=this.options.minPointLength,$=V.plotY,_=L.translate(V.high,0,1,0,1);if(H(_)&&H($))if(V.plotHigh=z(_,-F,F),V.plotLow=z($,-F,F),E=V.plotHigh,Math.abs(e=Y(V.rectPlotY,V.plotY)-V.plotHigh)\u25CF {series.name}: {point.low}{point.high}
    ‘},whiskerWidth:null}}),b(x,”Series/ErrorBar/ErrorBarSeries.js”,[x[“Series/BoxPlot/BoxPlotSeries.js”],x[“Series/Column/ColumnSeries.js”],x[“Series/ErrorBar/ErrorBarSeriesDefaults.js”],x[“Core/Series/SeriesRegistry.js”],x[“Core/Utilities.js”]],function(e,x,b,E,L){let{arearange:O}=E.seriesTypes,{addEvent:D,merge:j,extend:R}=L;let h=class h extends e{getColumnMetrics(){return this.linkedParent&&this.linkedParent.columnMetrics||x.prototype.getColumnMetrics.call(this)}drawDataLabels(){let e=this.pointValKey;if(O)for(let x of(O.prototype.drawDataLabels.call(this),this.points))x.y=x[e]}toYData(e){return[e.low,e.high]}};return h.defaultOptions=j(e.defaultOptions,b),D(h,”afterTranslate”,function(){for(let e of this.points)e.plotLow=e.plotY},{order:0}),R(h.prototype,{pointArrayMap:[“low”,”high”],pointValKey:”high”,doQuartiles:!1}),E.registerSeriesType(“errorbar”,h),h}),b(x,”Series/Gauge/GaugePoint.js”,[x[“Core/Series/SeriesRegistry.js”]],function(e){let{series:{prototype:{pointClass:x}}}=e;return class extends x{setState(e){this.state=e}}}),b(x,”Series/Gauge/GaugeSeries.js”,[x[“Series/Gauge/GaugePoint.js”],x[“Core/Globals.js”],x[“Core/Series/SeriesRegistry.js”],x[“Core/Utilities.js”]],function(e,x,b,E){let{noop:L}=x,{series:O,seriesTypes:{column:D}}=b,{clamp:j,isNumber:R,extend:z,merge:F,pick:H,pInt:U,defined:Y}=E;let g=class g extends O{translate(){let e=this.yAxis,x=this.options,b=e.center;this.generatePoints(),this.points.forEach(E=>{let L=F(x.dial,E.dial),O=U(L.radius)*b[2]/200,D=U(L.baseLength)*O/100,z=U(L.rearLength)*O/100,H=L.baseWidth,V=L.topWidth,q=x.overshoot,K=e.startAngleRad+e.translate(E.y,void 0,void 0,void 0,!0);(R(q)||!1===x.wrap)&&(q=R(q)?q/180*Math.PI:0,K=j(K,e.startAngleRad-q,e.endAngleRad+q)),K=180*K/Math.PI,E.shapeType=”path”,E.shapeArgs={d:L.path||[[“M”,-z,-H/2],[“L”,D,-H/2],[“L”,O,-V/2],[“L”,O,V/2],[“L”,D,H/2],[“L”,-z,H/2],[“Z”]],translateX:b[0],translateY:b[1],rotation:K},E.plotX=b[0],E.plotY=b[1],Y(E.y)&&e.max-e.min&&(E.percentage=(E.y-e.min)/(e.max-e.min)*100)})}drawPoints(){let e=this,x=e.chart,b=e.yAxis.center,E=e.pivot,L=e.options,O=L.pivot,D=x.renderer;e.points.forEach(b=>{let E=b.graphic,O=b.shapeArgs,j=O.d,R=F(L.dial,b.dial);E?(E.animate(O),O.d=j):b.graphic=D[b.shapeType](O).addClass(“highcharts-dial”).add(e.group),x.styledMode||b.graphic[E?”animate”:”attr”]({stroke:R.borderColor,”stroke-width”:R.borderWidth,fill:R.backgroundColor})}),E?E.animate({translateX:b[0],translateY:b[1]}):O&&(e.pivot=D.circle(0,0,O.radius).attr({zIndex:2}).addClass(“highcharts-pivot”).translate(b[0],b[1]).add(e.group),x.styledMode||e.pivot.attr({fill:O.backgroundColor,stroke:O.borderColor,”stroke-width”:O.borderWidth}))}animate(e){let x=this;e||x.points.forEach(e=>{let b=e.graphic;b&&(b.attr({rotation:180*x.yAxis.startAngleRad/Math.PI}),b.animate({rotation:e.shapeArgs.rotation},x.options.animation))})}render(){this.group=this.plotGroup(“group”,”series”,this.visible?”inherit”:”hidden”,this.options.zIndex,this.chart.seriesGroup),O.prototype.render.call(this),this.group.clip(this.chart.clipRect)}setData(e,x){O.prototype.setData.call(this,e,!1),this.processData(),this.generatePoints(),H(x,!0)&&this.chart.redraw()}hasData(){return!!this.points.length}};return g.defaultOptions=F(O.defaultOptions,{dataLabels:{borderColor:”#cccccc”,borderRadius:3,borderWidth:1,crop:!1,defer:!1,enabled:!0,verticalAlign:”top”,y:15,zIndex:2},dial:{backgroundColor:”#000000″,baseLength:”70%”,baseWidth:3,borderColor:”#cccccc”,borderWidth:0,radius:”80%”,rearLength:”10%”,topWidth:1},pivot:{radius:5,borderWidth:0,borderColor:”#cccccc”,backgroundColor:”#000000″},tooltip:{headerFormat:””},showInLegend:!1}),z(g.prototype,{angular:!0,directTouch:!0,drawGraph:L,drawTracker:D.prototype.drawTracker,fixedBox:!0,forceDL:!0,noSharedTooltip:!0,pointClass:e,trackerGroups:[“group”,”dataLabelsGroup”]}),b.registerSeriesType(“gauge”,g),g}),b(x,”Series/DragNodesComposition.js”,[x[“Core/Globals.js”],x[“Core/Utilities.js”]],function(e,x){let{composed:b}=e,{addEvent:E,pushUnique:L}=x;function O(){let e,x,b,L=this;L.container&&(e=E(L.container,”mousedown”,e=>{let O=L.hoverPoint;O&&O.series&&O.series.hasDraggableNodes&&O.series.options.draggable&&(O.series.onMouseDown(O,e),x=E(L.container,”mousemove”,e=>O&&O.series&&O.series.onMouseMove(O,e)),b=E(L.container.ownerDocument,”mouseup”,e=>(x(),b(),O&&O.series&&O.series.onMouseUp(O,e))))})),E(L,”destroy”,function(){e()})}return{compose:function(e){L(b,”DragNodes”)&&E(e,”load”,O)},onMouseDown:function(e,x){let b=this.chart.pointer?.normalize(x)||x;e.fixedPosition={chartX:b.chartX,chartY:b.chartY,plotX:e.plotX,plotY:e.plotY},e.inDragMode=!0},onMouseMove:function(e,x){if(e.fixedPosition&&e.inDragMode){let b,E,L=this.chart,O=L.pointer?.normalize(x)||x,D=e.fixedPosition.chartX-O.chartX,j=e.fixedPosition.chartY-O.chartY,R=L.graphLayoutsLookup;(Math.abs(D)>5||Math.abs(j)>5)&&(b=e.fixedPosition.plotX-D,E=e.fixedPosition.plotY-j,L.isInsidePlot(b,E)&&(e.plotX=b,e.plotY=E,e.hasDragged=!0,this.redrawHalo(e),R.forEach(e=>{e.restartSimulation()})))}},onMouseUp:function(e){e.fixedPosition&&(e.hasDragged&&(this.layout.enableSimulation?this.layout.start():this.chart.redraw()),e.inDragMode=e.hasDragged=!1,this.options.fixedDraggable||delete e.fixedPosition)},redrawHalo:function(e){e&&this.halo&&this.halo.attr({d:e.haloPath(this.options.states.hover.halo.size)})}}}),b(x,”Series/GraphLayoutComposition.js”,[x[“Core/Animation/AnimationUtilities.js”],x[“Core/Globals.js”],x[“Core/Utilities.js”]],function(e,x,b){let{setAnimation:E}=e,{composed:L}=x,{addEvent:O,pushUnique:D}=b;function j(){this.graphLayoutsLookup&&(this.graphLayoutsLookup.forEach(e=>{e.updateSimulation()}),this.redraw())}function R(){this.graphLayoutsLookup&&(this.graphLayoutsLookup.forEach(e=>{e.updateSimulation(!1)}),this.redraw())}function z(){this.graphLayoutsLookup&&this.graphLayoutsLookup.forEach(e=>{e.stop()})}function F(){let e,x=!1,b=b=>{b.maxIterations–&&isFinite(b.temperature)&&!b.isStable()&&!b.enableSimulation&&(b.beforeStep&&b.beforeStep(),b.step(),e=!1,x=!0)};if(this.graphLayoutsLookup){for(E(!1,this),this.graphLayoutsLookup.forEach(e=>e.start());!e;)e=!0,this.graphLayoutsLookup.forEach(b);x&&this.series.forEach(e=>{e&&e.layout&&e.render()})}}return{compose:function(e){D(L,”GraphLayout”)&&(O(e,”afterPrint”,j),O(e,”beforePrint”,R),O(e,”predraw”,z),O(e,”render”,F))},integrations:{},layouts:{}}}),b(x,”Series/PackedBubble/PackedBubblePoint.js”,[x[“Core/Chart/Chart.js”],x[“Core/Series/Point.js”],x[“Core/Series/SeriesRegistry.js”]],function(e,x,b){let{seriesTypes:{bubble:{prototype:{pointClass:E}}}}=b;return class extends E{destroy(){return this.series.layout&&this.series.layout.removeElementFromCollection(this,this.series.layout.nodes),x.prototype.destroy.apply(this,arguments)}firePointEvent(){let e=this.series.options;if(this.isParentNode&&e.parentNode){let b=e.allowPointSelect;e.allowPointSelect=e.parentNode.allowPointSelect,x.prototype.firePointEvent.apply(this,arguments),e.allowPointSelect=b}else x.prototype.firePointEvent.apply(this,arguments)}select(){let b=this.series.chart;this.isParentNode?(b.getSelectedPoints=b.getSelectedParentNodes,x.prototype.select.apply(this,arguments),b.getSelectedPoints=e.prototype.getSelectedPoints):x.prototype.select.apply(this,arguments)}}}),b(x,”Series/PackedBubble/PackedBubbleSeriesDefaults.js”,[x[“Core/Utilities.js”]],function(e){let{isNumber:x}=e;return{minSize:”10%”,maxSize:”50%”,sizeBy:”area”,zoneAxis:”y”,crisp:!1,tooltip:{pointFormat:”Value: {point.value}”},draggable:!0,useSimulation:!0,parentNode:{allowPointSelect:!1},dataLabels:{formatter:function(){let{numberFormatter:e}=this.series.chart,{value:b}=this.point;return x(b)?e(b,-1):””},parentNodeFormatter:function(){return this.name},parentNodeTextPath:{enabled:!0},padding:0,style:{transition:”opacity 2000ms”}},layoutAlgorithm:{initialPositions:”circle”,initialPositionRadius:20,bubblePadding:5,parentNodeLimit:!1,seriesInteraction:!0,dragBetweenSeries:!1,parentNodeOptions:{maxIterations:400,gravitationalConstant:.03,maxSpeed:50,initialPositionRadius:100,seriesInteraction:!0,marker:{fillColor:null,fillOpacity:1,lineWidth:null,lineColor:null,symbol:”circle”}},enableSimulation:!0,type:”packedbubble”,integration:”packedbubble”,maxIterations:1e3,splitSeries:!1,maxSpeed:5,gravitationalConstant:.01,friction:-.981}}}),b(x,”Series/Networkgraph/VerletIntegration.js”,[],function(){return{attractive:function(e,x,b){let E=e.getMass(),L=-b.x*x*this.diffTemperature,O=-b.y*x*this.diffTemperature;e.fromNode.fixedPosition||(e.fromNode.plotX-=L*E.fromNode/e.fromNode.degree,e.fromNode.plotY-=O*E.fromNode/e.fromNode.degree),e.toNode.fixedPosition||(e.toNode.plotX+=L*E.toNode/e.toNode.degree,e.toNode.plotY+=O*E.toNode/e.toNode.degree)},attractiveForceFunction:function(e,x){return(x-e)/e},barycenter:function(){let e=this.options.gravitationalConstant||0,x=(this.barycenter.xFactor-(this.box.left+this.box.width)/2)*e,b=(this.barycenter.yFactor-(this.box.top+this.box.height)/2)*e;this.nodes.forEach(function(e){e.fixedPosition||(e.plotX-=x/e.mass/e.degree,e.plotY-=b/e.mass/e.degree)})},getK:function(e){return Math.pow(e.box.width*e.box.height/e.nodes.length,.5)},integrate:function(e,x){let b=-e.options.friction,E=e.options.maxSpeed,L=x.prevX,O=x.prevY,D=(x.plotX+x.dispX-L)*b,j=(x.plotY+x.dispY-O)*b,R=Math.abs,z=R(D)/(D||1),F=R(j)/(j||1),H=z*Math.min(E,Math.abs(D)),U=F*Math.min(E,Math.abs(j));x.prevX=x.plotX+x.dispX,x.prevY=x.plotY+x.dispY,x.plotX+=H,x.plotY+=U,x.temperature=e.vectorLength({x:H,y:U})},repulsive:function(e,x,b){let E=x*this.diffTemperature/e.mass/e.degree;e.fixedPosition||(e.plotX+=b.x*E,e.plotY+=b.y*E)},repulsiveForceFunction:function(e,x){return(x-e)/e*(x>e)}}}),b(x,”Series/PackedBubble/PackedBubbleIntegration.js”,[x[“Core/Globals.js”],x[“Series/Networkgraph/VerletIntegration.js”]],function(e,x){let{noop:b}=e;return{barycenter:function(){let e,x,b=this.options.gravitationalConstant,E=this.box,L=this.nodes;for(let O of L)this.options.splitSeries&&!O.isParentNode?(e=O.series.parentNode.plotX,x=O.series.parentNode.plotY):(e=E.width/2,x=E.height/2),O.fixedPosition||(O.plotX-=(O.plotX-e)*b/(O.mass*Math.sqrt(L.length)),O.plotY-=(O.plotY-x)*b/(O.mass*Math.sqrt(L.length)))},getK:b,integrate:x.integrate,repulsive:function(e,x,b,E){let L=x*this.diffTemperature/e.mass/e.degree,O=b.x*L,D=b.y*L;e.fixedPosition||(e.plotX+=O,e.plotY+=D),E.fixedPosition||(E.plotX-=O,E.plotY-=D)},repulsiveForceFunction:function(e,x,b,E){return Math.min(e,(b.marker.radius+E.marker.radius)/2)}}}),b(x,”Series/Networkgraph/EulerIntegration.js”,[],function(){return{attractive:function(e,x,b,E){let L=e.getMass(),O=b.x/E*x,D=b.y/E*x;e.fromNode.fixedPosition||(e.fromNode.dispX-=O*L.fromNode/e.fromNode.degree,e.fromNode.dispY-=D*L.fromNode/e.fromNode.degree),e.toNode.fixedPosition||(e.toNode.dispX+=O*L.toNode/e.toNode.degree,e.toNode.dispY+=D*L.toNode/e.toNode.degree)},attractiveForceFunction:function(e,x){return e*e/x},barycenter:function(){let e=this.options.gravitationalConstant,x=this.barycenter.xFactor,b=this.barycenter.yFactor;this.nodes.forEach(function(E){if(!E.fixedPosition){let L=E.getDegree(),O=L*(1+L/2);E.dispX+=(x-E.plotX)*e*O/E.degree,E.dispY+=(b-E.plotY)*e*O/E.degree}})},getK:function(e){return Math.pow(e.box.width*e.box.height/e.nodes.length,.3)},integrate:function(e,x){x.dispX+=x.dispX*e.options.friction,x.dispY+=x.dispY*e.options.friction;let b=x.temperature=e.vectorLength({x:x.dispX,y:x.dispY});0!==b&&(x.plotX+=x.dispX/b*Math.min(Math.abs(x.dispX),e.temperature),x.plotY+=x.dispY/b*Math.min(Math.abs(x.dispY),e.temperature))},repulsive:function(e,x,b,E){e.dispX+=b.x/E*x/e.degree,e.dispY+=b.y/E*x/e.degree},repulsiveForceFunction:function(e,x){return x*x/e}}}),b(x,”Series/Networkgraph/QuadTreeNode.js”,[],function(){let t=class t{constructor(e){this.body=!1,this.isEmpty=!1,this.isInternal=!1,this.nodes=[],this.box=e,this.boxSize=Math.min(e.width,e.height)}divideBox(){let e=this.box.width/2,x=this.box.height/2;this.nodes[0]=new t({left:this.box.left,top:this.box.top,width:e,height:x}),this.nodes[1]=new t({left:this.box.left+e,top:this.box.top,width:e,height:x}),this.nodes[2]=new t({left:this.box.left+e,top:this.box.top+x,width:e,height:x}),this.nodes[3]=new t({left:this.box.left,top:this.box.top+x,width:e,height:x})}getBoxPosition(e){let x=e.plotXthis.step())):(this.simulation=!1,this.series.forEach(e=>{F(e,”afterSimulation”)}))}}stop(){this.simulation&&D.cancelAnimationFrame(this.simulation)}setArea(e,x,b,E){this.box={left:e,top:x,width:b,height:E}}setK(){this.k=this.options.linkLength||this.integration.getK(this)}addElementsToCollection(e,x){for(let b of e)-1===x.indexOf(b)&&x.push(b)}removeElementFromCollection(e,x){let b=x.indexOf(e);-1!==b&&x.splice(b,1)}clear(){this.nodes.length=0,this.links.length=0,this.series.length=0,this.resetSimulation()}resetSimulation(){this.forcedStop=!1,this.systemTemperature=0,this.setMaxIterations(),this.setTemperature(),this.setDiffTemperature()}restartSimulation(){this.simulation?this.resetSimulation():(this.setInitialRendering(!1),this.enableSimulation?this.start():this.setMaxIterations(1),this.chart&&this.chart.redraw(),this.setInitialRendering(!0))}setMaxIterations(e){this.maxIterations=H(e,this.options.maxIterations)}setTemperature(){this.temperature=this.startTemperature=Math.sqrt(this.nodes.length)}setDiffTemperature(){this.diffTemperature=this.startTemperature/(this.options.maxIterations+1)}setInitialRendering(e){this.initialRendering=e}createQuadTree(){this.quadTree=new E(this.box.left,this.box.top,this.box.width,this.box.height),this.quadTree.insertNodes(this.nodes)}initPositions(){let e=this.options.initialPositions;if(z(e))for(let x of(e.call(this),this.nodes))R(x.prevX)||(x.prevX=x.plotX),R(x.prevY)||(x.prevY=x.plotY),x.dispX=0,x.dispY=0;else”circle”===e?this.setCircularPositions():this.setRandomPositions()}setCircularPositions(){let e,x=this.box,b=this.nodes,E=2*Math.PI/(b.length+1),L=b.filter(function(e){return 0===e.linksTo.length}),O={},D=this.options.initialPositionRadius,j=e=>{for(let x of e.linksFrom||[])O[x.toNode.id]||(O[x.toNode.id]=!0,R.push(x.toNode),j(x.toNode))},R=[];for(let e of L)R.push(e),j(e);if(R.length)for(let e of b)-1===R.indexOf(e)&&R.push(e);else R=b;for(let b=0,L=R.length;b{let x=e*e/Math.PI;return x-Math.floor(x)};for(let O=0,D=b.length;Othis.barnesHutApproximation(e,x));else{let e,x,b;for(let E of this.nodes)for(let L of this.nodes)E===L||E.fixedPosition||(b=this.getDistXY(E,L),0!==(x=this.vectorLength(b))&&(e=this.repulsiveForce(x,this.k),this.force(“repulsive”,E,e*L.mass,b,x)))}}attractiveForces(){let e,x,b;for(let E of this.links)E.fromNode&&E.toNode&&(e=this.getDistXY(E.fromNode,E.toNode),0!==(x=this.vectorLength(e))&&(b=this.attractiveForce(x,this.k),this.force(“attractive”,E,b,e,x)))}applyLimits(){for(let e of this.nodes)e.fixedPosition||(this.integration.integrate(this,e),this.applyLimitBox(e,this.box),e.dispX=0,e.dispY=0)}applyLimitBox(e,x){let b=e.radius;e.plotX=j(e.plotX,x.left+b,x.width-b),e.plotY=j(e.plotY,x.top+b,x.height-b)}coolDown(e,x,b){return e-x*b}isStable(){return 1e-5>Math.abs(this.systemTemperature-this.prevSystemTemperature)||this.temperature<=0}getSystemTemperature(){let e=0;for(let x of this.nodes)e+=x.temperature;return e}vectorLength(e){return Math.sqrt(e.x*e.x+e.y*e.y)}getDistR(e,x){let b=this.getDistXY(e,x);return this.vectorLength(b)}getDistXY(e,x){let b=e.plotX-x.plotX,E=e.plotY-x.plotY;return{x:b,y:E,absX:Math.abs(b),absY:Math.abs(E)}}};return c}),b(x,"Series/PackedBubble/PackedBubbleLayout.js",[x["Series/GraphLayoutComposition.js"],x["Series/PackedBubble/PackedBubbleIntegration.js"],x["Series/Networkgraph/ReingoldFruchtermanLayout.js"],x["Core/Utilities.js"]],function(e,x,b,E){let{addEvent:L,pick:O}=E;function D(){let e=this.series,x=[];return e.forEach(e=>{e.parentNode&&e.parentNode.selected&&x.push(e.parentNode)}),x}function j(){this.allDataPoints&&delete this.allDataPoints}let l=class l extends b{constructor(){super(…arguments),this.index=NaN,this.nodes=[],this.series=[]}static compose(E){b.compose(E),e.integrations.packedbubble=x,e.layouts.packedbubble=l;let O=E.prototype;O.getSelectedParentNodes||(L(E,”beforeRedraw”,j),O.getSelectedParentNodes=D)}beforeStep(){this.options.marker&&this.series.forEach(e=>{e&&e.calculateParentRadius()})}isStable(){let e=Math.abs(this.prevSystemTemperature-this.systemTemperature);return 1>Math.abs(10*this.systemTemperature/Math.sqrt(this.nodes.length))&&e<1e-5||this.temperature<=0}setCircularPositions(){let e=this.box,x=this.nodes,b=2*Math.PI/(x.length+1),E=this.options.initialPositionRadius,L,D,j=0;for(let R of x)this.options.splitSeries&&!R.isParentNode?(L=R.series.parentNode.plotX,D=R.series.parentNode.plotY):(L=e.width/2,D=e.height/2),R.plotX=R.prevX=O(R.plotX,L+E*Math.cos(R.index||j*b)),R.plotY=R.prevY=O(R.plotY,D+E*Math.sin(R.index||j*b)),R.dispX=0,R.dispY=0,j++}repulsiveForces(){let e,x,b,E=this,L=E.options.bubblePadding,O=E.nodes;O.forEach(D=>{D.degree=D.mass,D.neighbours=0,O.forEach(O=>{e=0,D!==O&&!D.fixedPosition&&(E.options.seriesInteraction||D.series===O.series)&&(b=E.getDistXY(D,O),(x=E.vectorLength(b)-(D.marker.radius+O.marker.radius+L))<0&&(D.degree+=.01,D.neighbours++,e=E.repulsiveForce(-x/Math.sqrt(D.neighbours),E.k,D,O)),E.force("repulsive",D,e*O.mass,b,O,x))})})}applyLimitBox(e,x){let b,E;this.options.splitSeries&&!e.isParentNode&&this.options.parentNodeLimit&&(b=this.getDistXY(e,e.series.parentNode),(E=e.series.parentNodeRadius-e.marker.radius-this.vectorLength(b))<0&&E>-2*e.marker.radius&&(e.plotX-=.01*b.x,e.plotY-=.01*b.y)),super.applyLimitBox(e,x)}};return e.layouts.packedbubble=l,l}),b(x,”Series/SimulationSeriesUtilities.js”,[x[“Core/Utilities.js”],x[“Core/Animation/AnimationUtilities.js”]],function(e,x){let{merge:b,syncTimeout:E}=e,{animObject:L}=x;return{initDataLabels:function(){let e=this.options.dataLabels;if(!this.dataLabelsGroup){let x=this.initDataLabelsGroup();return!this.chart.styledMode&&e?.style&&x.css(e.style),x.attr({opacity:0}),this.visible&&x.show(),x}return this.dataLabelsGroup.attr(b({opacity:1},this.getPlotBox(“data-labels”))),this.dataLabelsGroup},initDataLabelsDefer:function(){let e=this.options.dataLabels;e?.defer&&this.options.layoutAlgorithm?.enableSimulation?E(()=>{this.deferDataLabels=!1},e?L(e.animation).defer:0):this.deferDataLabels=!1}}}),b(x,”Series/PackedBubble/PackedBubbleSeries.js”,[x[“Core/Color/Color.js”],x[“Series/DragNodesComposition.js”],x[“Series/GraphLayoutComposition.js”],x[“Core/Globals.js”],x[“Series/PackedBubble/PackedBubblePoint.js”],x[“Series/PackedBubble/PackedBubbleSeriesDefaults.js”],x[“Series/PackedBubble/PackedBubbleLayout.js”],x[“Core/Series/SeriesRegistry.js”],x[“Series/SimulationSeriesUtilities.js”],x[“Core/Utilities.js”]],function(e,x,b,E,L,O,D,j,R,z){let{parse:F}=e,{noop:H}=E,{series:{prototype:U},seriesTypes:{bubble:Y}}=j,{initDataLabels:V,initDataLabelsDefer:q}=R,{addEvent:K,clamp:$,defined:_,extend:Z,fireEvent:J,isArray:tt,isNumber:te,merge:ti,pick:ts}=z;let C=class C extends Y{constructor(){super(…arguments),this.parentNodeMass=0,this.deferDataLabels=!0}static compose(e,b,E,L){Y.compose(e,b,E,L),x.compose(b),D.compose(b)}accumulateAllPoints(){let e,x=this.chart,b=[];for(let E of x.series)if(E.is(“packedbubble”)&&E.reserveSpace()){e=E.yData||[];for(let x=0;x{e.mass=2,e.degree=1,e.collisionNmb=1}),D.setArea(0,0,this.chart.plotWidth,this.chart.plotHeight),D.addElementsToCollection([this],D.series),D.addElementsToCollection(this.points,D.nodes)}addSeriesLayout(){let e=this.options.layoutAlgorithm=this.options.layoutAlgorithm||{},x=e.type||”packedbubble”,E=this.chart.graphLayoutsStorage,L=this.chart.graphLayoutsLookup,O=ti(e,e.parentNodeOptions,{enableSimulation:this.layout.options.enableSimulation}),D=E[x+”-series”];D||(E[x+”-series”]=D=new b.layouts[x],D.init(O),L.splice(D.index,0,D)),this.parentNodeLayout=D,this.createParentNodes()}calculateParentRadius(){let e=this.seriesBox();this.parentNodeRadius=$(Math.sqrt(2*this.parentNodeMass/Math.PI)+20,20,e?Math.max(Math.sqrt(Math.pow(e.width,2)+Math.pow(e.height,2))/2+20,20):Math.sqrt(2*this.parentNodeMass/Math.PI)+20),this.parentNode&&(this.parentNode.marker.radius=this.parentNode.radius=this.parentNodeRadius)}calculateZExtremes(){let e=this.chart.series,x=this.options.zMin,b=this.options.zMax,E=1/0,L=-1/0;return x&&b?[x,b]:(e.forEach(e=>{e.yData.forEach(e=>{_(e)&&(e>L&&(L=e),e{this.parentNodeMass+=Math.PI*Math.pow(e.marker.radius,2)}),this.calculateParentRadius(),b.nodes.forEach(e=>{e.seriesIndex===this.index&&(L=!0)}),b.setArea(0,0,x.plotWidth,x.plotHeight),L||(O||(O=new e(this,{mass:this.parentNodeRadius/2,marker:D,dataLabels:{inside:!1},states:{normal:{marker:D},hover:{marker:D}},dataLabelOnNull:!0,degree:this.parentNodeRadius,isParentNode:!0,seriesIndex:this.index})),this.parentNode&&(O.plotX=this.parentNode.plotX,O.plotY=this.parentNode.plotY),this.parentNode=O,b.addElementsToCollection([this],b.series),b.addElementsToCollection([O],b.nodes))}deferLayout(){let e=this.options.layoutAlgorithm;this.visible&&(this.addLayout(),e.splitSeries&&this.addSeriesLayout())}destroy(){this.chart.graphLayoutsLookup&&this.chart.graphLayoutsLookup.forEach(e=>{e.removeElementFromCollection(this,e.series)},this),this.parentNode&&this.parentNodeLayout&&(this.parentNodeLayout.removeElementFromCollection(this.parentNode,this.parentNodeLayout.nodes),this.parentNode.dataLabel&&(this.parentNode.dataLabel=this.parentNode.dataLabel.destroy())),U.destroy.apply(this,arguments)}drawDataLabels(){!this.deferDataLabels&&(U.drawDataLabels.call(this,this.points),this.parentNode&&(this.parentNode.formatPrefix=”parentNode”,U.drawDataLabels.call(this,[this.parentNode])))}drawGraph(){if(!this.layout||!this.layout.options.splitSeries)return;let e=this.chart,x=this.layout.options.parentNodeOptions.marker,b={fill:x.fillColor||F(this.color).brighten(.4).get(),opacity:x.fillOpacity,stroke:x.lineColor||this.color,”stroke-width”:ts(x.lineWidth,this.options.lineWidth)},E={};this.parentNodesGroup=this.plotGroup(“parentNodesGroup”,”parentNode”,this.visible?”inherit”:”hidden”,.1,e.seriesGroup),this.group?.attr({zIndex:2}),this.calculateParentRadius(),this.parentNode&&_(this.parentNode.plotX)&&_(this.parentNode.plotY)&&_(this.parentNodeRadius)&&(E=ti({x:this.parentNode.plotX-this.parentNodeRadius,y:this.parentNode.plotY-this.parentNodeRadius,width:2*this.parentNodeRadius,height:2*this.parentNodeRadius},b),this.parentNode.graphic||(this.graph=this.parentNode.graphic=e.renderer.symbol(b.symbol).add(this.parentNodesGroup)),this.parentNode.graphic.attr(E))}drawTracker(){let e,x=this.parentNode;super.drawTracker(),x&&(e=tt(x.dataLabels)?x.dataLabels:x.dataLabel?[x.dataLabel]:[],x.graphic&&(x.graphic.element.point=x),e.forEach(e=>{(e.div||e.element).point=x}))}getPointRadius(){let e,x,b,E,L=this.chart,O=L.plotWidth,D=L.plotHeight,j=this.options,R=j.useSimulation,z=Math.min(O,D),F={},H=[],U=L.allDataPoints||[],Y=U.length;[“minSize”,”maxSize”].forEach(e=>{let x=parseInt(j[e],10),b=/%$/.test(j[e]);F[e]=b?z*x/100:x*Math.sqrt(Y)}),L.minRadius=e=F.minSize/Math.sqrt(Y),L.maxRadius=x=F.maxSize/Math.sqrt(Y);let V=R?this.calculateZExtremes():[e,x];U.forEach((L,O)=>{b=R?$(L[2],V[0],V[1]):L[2],0===(E=this.getRadius(V[0],V[1],e,x,b))&&(E=null),U[O][2]=E,H.push(E)}),this.radii=H}init(){return U.init.apply(this,arguments),q.call(this),this.eventsToUnbind.push(K(this,”updatedData”,function(){this.chart.series.forEach(e=>{e.type===this.type&&(e.isDirty=!0)},this)})),this}onMouseUp(e){if(e.fixedPosition&&!e.removed){let b,E=this.layout,L=this.parentNodeLayout;L&&E.options.dragBetweenSeries&&L.nodes.forEach(x=>{e&&e.marker&&x!==e.series.parentNode&&(b=E.getDistXY(e,x),E.vectorLength(b)-x.marker.radius-e.marker.radius<0&&(x.series.addPoint(ti(e.options,{plotX:e.plotX,plotY:e.plotY}),!1),E.removeElementFromCollection(e,E.nodes),e.remove()))}),x.onMouseUp.apply(this,arguments)}}placeBubbles(e){let x=this.checkOverlap,b=this.positionBubble,E=[],L=1,O=0,D=0,j,R=[],z,F=e.sort((e,x)=>x[2]-e[2]);if(F.length){if(E.push([[0,0,F[0][2],F[0][3],F[0][4]]]),F.length>1)for(E.push([[0,0-F[1][2]-F[0][2],F[1][2],F[1][3],F[1][4]]]),z=2;z1&&E[L-1][D+1]&&x(j,E[L-1][D+1])?(D++,E[L].push(b(E[L][O],E[L-1][D],F[z])),O++):(O++,E[L].push(j));this.chart.stages=E,this.chart.rawPositions=[].concat.apply([],E),this.resizeRadius(),R=this.chart.rawPositions}return R}pointAttribs(e,x){let b=this.options,E=e&&e.isParentNode,L=b.marker;E&&b.layoutAlgorithm&&b.layoutAlgorithm.parentNodeOptions&&(L=b.layoutAlgorithm.parentNodeOptions.marker);let O=L.fillOpacity,D=U.pointAttribs.call(this,e,x);return 1!==O&&(D[“fill-opacity”]=O),D}positionBubble(e,x,b){let E=Math.pow,L=(0,Math.sqrt)(E(e[0]-x[0],2)+E(e[1]-x[1],2)),O=(0,Math.acos)((E(L,2)+E(b[2]+x[2],2)-E(b[2]+e[2],2))/(2*(b[2]+x[2])*L)),D=(0,Math.asin)((0,Math.abs)(e[0]-x[0])/L),j=(e[1]-x[1]<0?0:Math.PI)+O+D*((e[0]-x[0])*(e[1]-x[1])<0?1:-1);return[x[0]+(x[2]+b[2])*Math.sin(j),x[1]-(x[2]+b[2])*Math.cos(j),b[2],b[3],b[4]]}render(){let e=[];U.render.apply(this,arguments),!this.options.dataLabels.allowOverlap&&(this.data.forEach(x=>{tt(x.dataLabels)&&x.dataLabels.forEach(x=>{e.push(x)})}),this.options.useSimulation&&this.chart.hideOverlappingLabels(e))}resizeRadius(){let e,x,b,E,L,O=this.chart,D=O.rawPositions,j=Math.min,R=Math.max,z=O.plotLeft,F=O.plotTop,H=O.plotHeight,U=O.plotWidth;for(let O of(e=b=1/0,x=E=-1/0,D))L=O[2],e=j(e,O[0]-L),x=R(x,O[0]+L),b=j(b,O[1]-L),E=R(E,O[1]+L);let Y=[x-e,E-b],V=[(U-z)/Y[0],(H-F)/Y[1]],q=j.apply([],V);if(Math.abs(q-1)>1e-10){for(let e of D)e[2]*=q;this.placeBubbles(D)}else O.diffY=H/2+F-b-(E-b)/2,O.diffX=U/2+z-e-(x-e)/2}seriesBox(){let e,x=this.chart,b=this.data,E=Math.max,L=Math.min,O=[x.plotLeft,x.plotLeft+x.plotWidth,x.plotTop,x.plotTop+x.plotHeight];return b.forEach(x=>{_(x.plotX)&&_(x.plotY)&&x.marker.radius&&(e=x.marker.radius,O[0]=L(O[0],x.plotX-e),O[1]=E(O[1],x.plotX+e),O[2]=L(O[2],x.plotY-e),O[3]=E(O[3],x.plotY+e))}),te(O.width/O.height)?O:null}setVisible(){let e=this;U.setVisible.apply(e,arguments),e.parentNodeLayout&&e.graph?e.visible?(e.graph.show(),e.parentNode.dataLabel&&e.parentNode.dataLabel.show()):(e.graph.hide(),e.parentNodeLayout.removeElementFromCollection(e.parentNode,e.parentNodeLayout.nodes),e.parentNode.dataLabel&&e.parentNode.dataLabel.hide()):e.layout&&(e.visible?e.layout.addElementsToCollection(e.points,e.layout.nodes):e.points.forEach(x=>{e.layout.removeElementFromCollection(x,e.layout.nodes)}))}translate(){let e,x,b,E=this.chart,L=this.data,O=this.index,D=this.options.useSimulation;for(let j of(this.processedXData=this.xData,this.generatePoints(),_(E.allDataPoints)||(E.allDataPoints=this.accumulateAllPoints(),this.getPointRadius()),D?b=E.allDataPoints:(b=this.placeBubbles(E.allDataPoints),this.options.draggable=!1),b))j[3]===O&&(e=L[j[4]],x=ts(j[2],void 0),D||(e.plotX=j[0]-E.plotLeft+E.diffX,e.plotY=j[1]-E.plotTop+E.diffY),te(x)&&(e.marker=Z(e.marker,{radius:x,width:2*x,height:2*x}),e.radius=x));D&&this.deferLayout(),J(this,”afterTranslate”)}};return C.defaultOptions=ti(Y.defaultOptions,O),Z(C.prototype,{pointClass:L,axisTypes:[],directTouch:!0,forces:[“barycenter”,”repulsive”],hasDraggableNodes:!0,invertible:!1,isCartesian:!1,noSharedTooltip:!0,pointArrayMap:[“value”],pointValKey:”value”,requireSorting:!1,trackerGroups:[“group”,”dataLabelsGroup”,”parentNodesGroup”],initDataLabels:V,alignDataLabel:U.alignDataLabel,indexateNodes:H,onMouseDown:x.onMouseDown,onMouseMove:x.onMouseMove,redrawHalo:x.redrawHalo,searchPoint:H}),j.registerSeriesType(“packedbubble”,C),C}),b(x,”Series/Polygon/PolygonSeriesDefaults.js”,[],function(){return{marker:{enabled:!1,states:{hover:{enabled:!1}}},stickyTracking:!1,tooltip:{followPointer:!0,pointFormat:””},trackByArea:!0,legendSymbol:”rectangle”}}),b(x,”Series/Polygon/PolygonSeries.js”,[x[“Core/Globals.js”],x[“Series/Polygon/PolygonSeriesDefaults.js”],x[“Core/Series/SeriesRegistry.js”],x[“Core/Utilities.js”]],function(e,x,b,E){let{noop:L}=e,{area:O,line:D,scatter:j}=b.seriesTypes,{extend:R,merge:z}=E;let p=class p extends j{getGraphPath(){let e=D.prototype.getGraphPath.call(this),x=e.length+1;for(;x–;)(x===e.length||”M”===e[x][0])&&x>0&&e.splice(x,0,[“Z”]);return this.areaPath=e,e}drawGraph(){this.options.fillColor=this.color,O.prototype.drawGraph.call(this)}};return p.defaultOptions=z(j.defaultOptions,x),R(p.prototype,{type:”polygon”,drawTracker:D.prototype.drawTracker,setStackedPoints:L}),b.registerSeriesType(“polygon”,p),p}),b(x,”Core/Axis/RadialAxisDefaults.js”,[],function(){return{circular:{gridLineWidth:1,labels:{align:void 0,x:0,y:void 0,style:{textOverflow:”none”}},maxPadding:0,minPadding:0,showLastLabel:!1,tickLength:0},radial:{gridLineInterpolation:”circle”,gridLineWidth:1,labels:{align:”right”,padding:5,x:-3,y:-2},showLastLabel:!1,title:{x:4,text:null,rotation:90}},radialGauge:{endOnTick:!1,gridLineWidth:0,labels:{align:”center”,distance:-25,x:0,y:void 0},lineWidth:1,minorGridLineWidth:0,minorTickInterval:”auto”,minorTickLength:10,minorTickPosition:”inside”,minorTickWidth:1,startOnTick:!1,tickLength:10,tickPixelInterval:100,tickPosition:”inside”,tickWidth:2,title:{rotation:0,text:””},zIndex:2}}}),b(x,”Core/Axis/RadialAxis.js”,[x[“Core/Axis/RadialAxisDefaults.js”],x[“Core/Defaults.js”],x[“Core/Globals.js”],x[“Core/Utilities.js”]],function(e,x,b,E){var L;let{defaultOptions:O}=x,{composed:D,noop:j}=b,{addEvent:R,correctFloat:z,defined:F,extend:H,fireEvent:U,isObject:Y,merge:V,pick:q,pushUnique:K,relativeLength:$,wrap:_}=E;return function(x){function E(){this.autoConnect=this.isCircular&&void 0===q(this.userMax,this.options.max)&&z(this.endAngleRad-this.startAngleRad)===z(2*Math.PI),!this.isCircular&&this.chart.inverted&&this.max++,this.autoConnect&&(this.max+=this.categories&&1||this.pointRange||this.closestPointRange||0)}function L(){return()=>{if(this.isRadial&&this.tickPositions&&this.options.labels&&!0!==this.options.labels.allowOverlap)return this.tickPositions.map(e=>this.ticks[e]&&this.ticks[e].label).filter(e=>!!e)}}function Z(){return j}function J(e,x,b){let E=this.pane.center,L=e.value,O,D,j;return this.isCircular?(F(L)?e.point&&(e.point.shapeArgs||{}).start&&(L=this.chart.inverted?this.translate(e.point.rectPlotY,!0):e.point.x):(D=e.chartX||0,j=e.chartY||0,L=this.translate(Math.atan2(j-b,D-x)-this.startAngleRad,!0)),D=(O=this.getPosition(L)).x,j=O.y):(F(L)||(D=e.chartX,j=e.chartY),F(D)&&F(j)&&(b=E[1]+this.chart.plotTop,L=this.translate(Math.min(Math.sqrt(Math.pow(D-x,2)+Math.pow(j-b,2)),E[2]/2)-E[3]/2,!0))),[L,D||0,j||0]}function tt(e,x,b){let E=this.pane.center,L=this.chart,O=this.left||0,D=this.top||0,j,R=q(x,E[2]/2-this.offset),z;return void 0===b&&(b=this.horiz?0:this.center&&-this.center[3]/2),b&&(R+=b),this.isCircular||void 0!==x?((z=this.chart.renderer.symbols.arc(O+E[0],D+E[1],R,R,{start:this.startAngleRad,end:this.endAngleRad,open:!0,innerR:0})).xBounds=[O+E[0]],z.yBounds=[D+E[1]-R]):(j=this.postTranslate(this.angleRad,R),z=[[“M”,this.center[0]+L.plotLeft,this.center[1]+L.plotTop],[“L”,j.x,j.y]]),z}function te(){this.constructor.prototype.getOffset.call(this),this.chart.axisOffset[this.side]=0}function ti(e,x,b){let E=this.chart,L=e=>{if(“string”==typeof e){let x=parseInt(e,10);return H.test(e)&&(x=x*j/100),x}return e},O=this.center,D=this.startAngleRad,j=O[2]/2,R=Math.min(this.offset,0),z=this.left||0,F=this.top||0,H=/%$/,U=this.isCircular,Y,V,K,$,_,Z,J=q(L(b.outerRadius),j),tt=L(b.innerRadius),te=q(L(b.thickness),10);if(“polygon”===this.options.gridLineInterpolation)Z=this.getPlotLinePath({value:e}).concat(this.getPlotLinePath({value:x,reverse:!0}));else{e=Math.max(e,this.min),x=Math.min(x,this.max);let L=this.translate(e),j=this.translate(x);U||(J=L||0,tt=j||0),”circle”!==b.shape&&U?(Y=D+(L||0),V=D+(j||0)):(Y=-Math.PI/2,V=1.5*Math.PI,_=!0),J-=R,te-=R,Z=E.renderer.symbols.arc(z+O[0],F+O[1],J,J,{start:Math.min(Y,V),end:Math.max(Y,V),innerR:q(tt,J-te),open:_,borderRadius:b.borderRadius}),U&&(K=(V+Y)/2,$=z+O[0]+O[2]/2*Math.cos(K),Z.xBounds=K>-Math.PI/2&&K-Math.PI&&K<0||K>Math.PI?-10:10)}return Z}function ts(e){let x=this.pane.center,b=this.chart,E=b.inverted,L=e.reverse,O=this.pane.options.background?this.pane.options.background[0]||this.pane.options.background:{},D=O.innerRadius||”0%”,j=O.outerRadius||”100%”,R=x[0]+b.plotLeft,z=x[1]+b.plotTop,F=this.height,H=e.isCrosshair,U=x[3]/2,Y=e.value,V,q,K,_,Z,J,tt,te,ti,ts=this.getPosition(Y),to=ts.x,tr=ts.y;if(H&&(Y=(te=this.getCrosshairPosition(e,R,z))[0],to=te[1],tr=te[2]),this.isCircular)q=Math.sqrt(Math.pow(to-R,2)+Math.pow(tr-z,2)),K=”string”==typeof D?$(D,1):D/q,_=”string”==typeof j?$(j,1):j/q,x&&U&&(K<(V=U/q)&&(K=V),_F)&&(Y=0),”circle”===this.options.gridLineInterpolation)ti=this.getLinePath(0,Y,U);else if(ti=[],b[E?”yAxis”:”xAxis”].forEach(e=>{e.pane===this.pane&&(Z=e)}),Z){tt=Z.tickPositions,Z.autoConnect&&(tt=tt.concat([tt[0]])),L&&(tt=tt.slice().reverse()),Y&&(Y+=U);for(let e=0;eMath.PI&&(O-=e),D>Math.PI&&(D-=e),this.normalizedStartAngleRad=O,this.normalizedEndAngleRad=D}}function tl(e){this.isRadial&&(e.align=void 0,e.preventDefault())}function th(){if(this.chart&&this.chart.labelCollectors){let e=this.labelCollector?this.chart.labelCollectors.indexOf(this.labelCollector):-1;e>=0&&this.chart.labelCollectors.splice(e,1)}}function td(e){let x,b=this.chart,E=b.angular,L=b.polar,O=this.isXAxis,D=this.coll,R=e.userOptions.pane||0,z=this.pane=b.pane&&b.pane[R];if(“colorAxis”===D){this.isRadial=!1;return}E?(E&&O?(this.isHidden=!0,this.createLabelCollector=Z,this.getOffset=j,this.redraw=tf,this.render=tf,this.setScale=j,this.setCategories=j,this.setTitle=j):tn(this),x=!O):L&&(tn(this),x=this.horiz),E||L?(this.isRadial=!0,this.labelCollector||(this.labelCollector=this.createLabelCollector()),this.labelCollector&&b.labelCollectors.push(this.labelCollector)):this.isRadial=!1,z&&x&&(z.axis=this),this.isCircular=x}function tc(){this.isRadial&&this.beforeSetTickPositions()}function tp(e){let x=this.label;if(!x)return;let b=this.axis,E=x.getBBox(),L=b.options.labels,O=(b.translate(this.pos)+b.startAngleRad+Math.PI/2)/Math.PI*180%360,D=Math.round(O),j=F(L.y)?0:-(.3*E.height),R=L.y,z,H=20,U=L.align,Y=”end”,V=D<0?D+360:D,K=V,_=0,Z=0;b.isRadial&&(z=b.getPosition(this.pos,b.center[2]/2+$(q(L.distance,-25),b.center[2]/2,-b.center[2]/2)),"auto"===L.rotation?x.attr({rotation:O}):F(R)||(R=b.chart.renderer.fontMetrics(x).b-E.height/2),F(U)||(b.isCircular?(E.width>b.len*b.tickInterval/(b.max-b.min)&&(H=0),U=O>H&&O<180-H?"left":O>180+H&&O<360-H?"right":"center"):U="center",x.attr({align:U})),"auto"===U&&2===b.tickPositions.length&&b.isCircular&&(V>90&&V<180?V=180-V:V>270&&V<=360&&(V=540-V),K>180&&K<=360&&(K=360-K),(b.pane.options.startAngle===D||b.pane.options.startAngle===D+360||b.pane.options.startAngle===D-360)&&(Y="start"),U=D>=-90&&D<=90||D>=-360&&D<=-270||D>=270&&D<=360?"start"===Y?"right":"left":"start"===Y?"left":"right",K>70&&K<110&&(U="center"),V<15||V>=180&&V<195?_=.3*E.height:V>=15&&V<=35?_="start"===Y?0:.75*E.height:V>=195&&V<=215?_="start"===Y?.75*E.height:0:V>35&&V<=90?_="start"===Y?-(.25*E.height):E.height:V>215&&V<=270&&(_="start"===Y?E.height:-(.25*E.height)),K<15?Z="start"===Y?-(.15*E.height):.15*E.height:K>165&&K<=180&&(Z="start"===Y?.15*E.height:-(.15*E.height)),x.attr({align:U}),x.translate(Z,_+j)),e.pos.x=z.x+(L.x||0),e.pos.y=z.y+(R||0))}function tu(e){this.axis.getPosition&&H(e.pos,this.axis.getPosition(this.pos))}function tg({options:e}){e.xAxis&&V(!0,x.radialDefaultOptions.circular,e.xAxis),e.yAxis&&V(!0,x.radialDefaultOptions.radialGauge,e.yAxis)}function tm(e,x){let b=this.chart,E=this.center;return e=this.startAngleRad+e,{x:b.plotLeft+E[0]+Math.cos(e)*x,y:b.plotTop+E[1]+Math.sin(e)*x}}function tf(){this.isDirty=!1}function tx(){let e,x;this.constructor.prototype.setAxisSize.call(this),this.isRadial&&(this.pane.updateCenter(this),e=this.center=this.pane.center.slice(),this.isCircular?this.sector=this.endAngleRad-this.startAngleRad:(x=this.postTranslate(this.angleRad,e[3]/2),e[0]=x.x-this.chart.plotLeft,e[1]=x.y-this.chart.plotTop),this.len=this.width=this.height=(e[2]-e[3])*q(this.sector,1)/2)}function tb(){this.constructor.prototype.setAxisTranslation.call(this),this.center&&(this.isCircular?this.transA=(this.endAngleRad-this.startAngleRad)/(this.max-this.min||1):this.transA=(this.center[2]-this.center[3])/2/(this.max-this.min||1),this.isXAxis?this.minPixelPadding=this.transA*this.minPointOffset:this.minPixelPadding=0)}function ty(e){let{coll:b}=this,{angular:E,inverted:L,polar:D}=this.chart,j={};E?this.isXAxis||(j=V(O.yAxis,x.radialDefaultOptions.radialGauge)):D&&(j=this.horiz?V(O.xAxis,x.radialDefaultOptions.circular):V("xAxis"===b?O.xAxis:O.yAxis,x.radialDefaultOptions.radial)),L&&"yAxis"===b&&(j.stackLabels=Y(O.yAxis,!0)?O.yAxis.stackLabels:{},j.reversedStacks=!0);let R=this.options=V(j,e);R.plotBands||(R.plotBands=[]),U(this,"afterSetOptions")}function tv(e,x,b,E,L,O,D){let j,R=this.axis;return R.isRadial?["M",x,b,"L",(j=R.getPosition(this.pos,R.center[2]/2+E)).x,j.y]:e.call(this,x,b,E,L,O,D)}x.radialDefaultOptions=V(e),x.compose=function(e,x){return K(D,"Axis.Radial")&&(R(e,"afterInit",ta),R(e,"autoLabelAlign",tl),R(e,"destroy",th),R(e,"init",td),R(e,"initialAxisTranslation",tc),R(x,"afterGetLabelPosition",tp),R(x,"afterGetPosition",tu),R(b,"setOptions",tg),_(x.prototype,"getMarkPath",tv)),e}}(L||(L={})),L}),b(x,"Series/PolarComposition.js",[x["Core/Animation/AnimationUtilities.js"],x["Core/Globals.js"],x["Core/Series/Series.js"],x["Extensions/Pane/Pane.js"],x["Core/Axis/RadialAxis.js"],x["Core/Utilities.js"]],function(e,x,b,E,L,O){let{animObject:D}=e,{composed:j}=x,{addEvent:R,defined:z,find:F,isNumber:H,merge:U,pick:Y,pushUnique:V,relativeLength:q,splat:K,uniqueKey:$,wrap:_}=O;function Z(){(this.pane||[]).forEach(e=>{e.render()})}function J(e){let x=e.args[0].xAxis,b=e.args[0].yAxis,E=e.args[0].chart;x&&b&&(“polygon”===b.gridLineInterpolation?(x.startOnTick=!0,x.endOnTick=!0):”polygon”===x.gridLineInterpolation&&E.inverted&&(b.startOnTick=!0,b.endOnTick=!0))}function tt(){this.pane||(this.pane=[]),this.options.pane=K(this.options.pane),this.options.pane.forEach(e=>{new E(e,this)},this)}function te(e){let x=e.args.marker,b=this.chart.xAxis[0],E=this.chart.yAxis[0],L=this.chart.inverted,O=L?E:b,D=L?b:E;if(this.chart.polar){e.preventDefault();let b=(x.attr?x.attr(“start”):x.start)-O.startAngleRad,E=x.attr?x.attr(“r”):x.r,L=(x.attr?x.attr(“end”):x.end)-O.startAngleRad,j=x.attr?x.attr(“innerR”):x.innerR;e.result.x=b+O.pos,e.result.width=L-b,e.result.y=D.len+D.pos-E,e.result.height=E-j}}function ti(e){let x=this.chart;if(x.polar&&x.hoverPane&&x.hoverPane.axis){e.preventDefault();let b=x.hoverPane.center,E=x.mouseDownX||0,L=x.mouseDownY||0,O=e.args.chartY,D=e.args.chartX,j=2*Math.PI,R=x.hoverPane.axis.startAngleRad,z=x.hoverPane.axis.endAngleRad,F=x.inverted?x.xAxis[0]:x.yAxis[0],H={},U=”arc”;if(H.x=b[0]+x.plotLeft,H.y=b[1]+x.plotTop,this.zoomHor){let e=R>0?z-R:Math.abs(R)+Math.abs(z),Y=Math.atan2(L-x.plotTop-b[1],E-x.plotLeft-b[0])-R,V=Math.atan2(O-x.plotTop-b[1],D-x.plotLeft-b[0])-R;H.r=b[2]/2,H.innerR=b[3]/2,Y<=0&&(Y+=j),V<=0&&(V+=j),Vz+(j-e)/2&&(V=Y,Y=R<=0?R:0);let q=H.start=Math.max(Y+R,R),K=H.end=Math.min(V+R,z);if("polygon"===F.options.gridLineInterpolation){let e=x.hoverPane.axis,E=q-e.startAngleRad+e.pos,L=F.getPlotLinePath({value:F.max}),O=e.toValue(E),D=e.toValue(E+(K-q));if(Ob[2]/2&&(F=b[2]/2),je.max?(L[O].isNull=!0,L[O].plotY=NaN):L[O].isNull=L[O].isValid&&!L[O].isValid());this.hasClipCircleSetter||(this.hasClipCircleSetter=!!this.eventsToUnbind.push(R(this,”afterRender”,function(){var e,b,L,O,D;let j,R,z,F;E.polar&&!1!==this.options.clip&&(j=this.yAxis.pane.center,this.clipCircle?this.clipCircle.animate({x:j[0],y:j[1],r:j[2]/2,innerR:j[3]/2}):this.clipCircle=(e=E.renderer,b=j[0],L=j[1],O=j[2]/2,D=j[3]/2,R=$(),z=e.createElement(“clipPath”).attr({id:R}).add(e.defs),(F=D?e.arc(b,L,O,D,0,2*Math.PI).add(z):e.circle(b,L,O).add(z)).id=R,F.clipPath=z,F),this.group.clip(this.clipCircle),this.setClip=x.noop)})))}}function tr(e){let x=this.chart,b=this.xAxis,E=this.yAxis,L=b.pane&&b.pane.center,O=e.chartX-(L&&L[0]||0)-x.plotLeft,D=e.chartY-(L&&L[1]||0)-x.plotTop,j=x.inverted?{clientX:e.chartX-E.pos,plotY:e.chartY-b.pos}:{clientX:180+-180/Math.PI*Math.atan2(O,D)};return this.searchKDTree(j)}function tn(e,x,b,E){let L=E.tickInterval,O=E.tickPositions,D=F(O,e=>e>=b),j=F([…O].reverse(),e=>e<=x);return z(D)||(D=O[O.length-1]),z(j)||(j=O[0],D+=L,e[0][0]="L",e.unshift(e[e.length-3])),(e=e.slice(O.indexOf(j),O.indexOf(D)+1))[0][0]="M",e}function ta(e,x){return F(this.pane||[],e=>e.options.id===x)||e.call(this,x)}function tl(e,x,E,L,O,D){let j,R,z,F=this.chart,H=Y(L.inside,!!this.options.stacking);if(F.polar){if(j=x.rectPlotX/Math.PI*180,F.inverted)this.forceDL=F.isInsidePlot(x.plotX,x.plotY),H&&x.shapeArgs?(R=x.shapeArgs,O=U(O,{x:(z=this.yAxis.postTranslate(((R.start||0)+(R.end||0))/2-this.xAxis.startAngleRad,x.barX+x.pointWidth/2)).x-F.plotLeft,y:z.y-F.plotTop})):x.tooltipPos&&(O=U(O,{x:x.tooltipPos[0],y:x.tooltipPos[1]})),L.align=Y(L.align,”center”),L.verticalAlign=Y(L.verticalAlign,”middle”);else{var V;null===(V=L).align&&(V.align=j>20&&j<160?"left":j>200&&j<340?"right":"center"),null===V.verticalAlign&&(V.verticalAlign=j<45||j>315?”bottom”:j>135&&j<225?"top":"middle"),L=V}b.prototype.alignDataLabel.call(this,x,E,L,O,D),this.isRadialBar&&x.shapeArgs&&x.shapeArgs.start===x.shapeArgs.end?E.hide():E.show()}else e.call(this,x,E,L,O,D)}function th(){let e=this.options,x=e.stacking,b=this.chart,E=this.xAxis,L=this.yAxis,D=L.reversed,j=L.center,R=E.startAngleRad,F=E.endAngleRad-R,U=e.threshold,Y=0,V,K,$,_,Z,J=0,tt=0,te,ti,ts,to,tr,tn,ta,tl;if(E.isRadial)for($=(V=this.points).length,_=L.translate(L.min),Z=L.translate(L.max),U=e.threshold||0,b.inverted&&H(U)&&z(Y=L.translate(U))&&(Y<0?Y=0:Y>F&&(Y=F),this.translatedThreshold=Y+R);$–;){if(tn=(K=V[$]).barX,ti=K.x,ts=K.y,K.shapeType=”arc”,b.inverted){K.plotY=L.translate(ts),x&&L.stacking?(tr=L.stacking.stacks[(ts<0?"-":"")+this.stackKey],this.visible&&tr&&tr[ti]&&!K.isNull&&(to=tr[ti].points[this.getStackIndicator(void 0,ti,this.index).key],J=L.translate(to[0]),tt=L.translate(to[1]),z(J)&&(J=O.clamp(J,0,F)))):(J=Y,tt=K.plotY),J>tt&&(tt=[J,J=tt][0]),D?tt>_?tt=_:J_||ttZ?tt=Z:(tt<_||J>Z)&&(J=tt=0),L.min>L.max&&(J=tt=D?F:0),J+=R,tt+=R,j&&(K.barX=tn+=j[3]/2),ta=Math.max(tn,0),tl=Math.max(tn+K.pointWidth,0);let b=e.borderRadius,E=q((“object”==typeof b?b.radius:b)||0,tl-ta);K.shapeArgs={x:j[0],y:j[1],r:tl,innerR:ta,start:J,end:tt,borderRadius:E},K.opacity=J===tt?0:void 0,K.plotY=(z(this.translatedThreshold)&&(Jj[1])}}function td(e,x){let b,E,L=this;if(this.chart.polar){x=x||this.points;for(let e=0;e{void 0===e.polarPlotY&&L.polar.toXY(e)})}let O=e.apply(this,[].slice.call(arguments,1));return E&&x.pop(),O}function tc(e,x){let b=this.chart,E={xAxis:[],yAxis:[]};return b.polar?b.axes.forEach(e=>{if(“colorAxis”===e.coll)return;let L=e.isXAxis,O=e.center,D=x.chartX-O[0]-b.plotLeft,j=x.chartY-O[1]-b.plotTop;E[L?”xAxis”:”yAxis”].push({axis:e,value:e.translate(L?Math.PI-Math.atan2(D,j):Math.sqrt(Math.pow(D,2)+Math.pow(j,2)),!0)})}):E=e.call(this,x),E}function tp(e,x){this.chart.polar||e.call(this,x)}function tu(e,b){let E=this,L=this.chart,O=this.group,j=this.markerGroup,R=this.xAxis&&this.xAxis.center,z=L.plotLeft,F=L.plotTop,H=this.options.animation,U,V,q,K,$,_;L.polar?E.isRadialBar?b||(E.startAngleRad=Y(E.translatedThreshold,E.xAxis.startAngleRad),x.seriesTypes.pie.prototype.animate.call(E,b)):(H=D(H),E.is(“column”)?b||(V=R[3]/2,E.points.forEach(e=>{q=e.graphic,$=(K=e.shapeArgs)&&K.r,_=K&&K.innerR,q&&K&&(q.attr({r:V,innerR:V}),q.animate({r:$,innerR:_},E.options.animation))})):b?(U={translateX:R[0]+z,translateY:R[1]+F,scaleX:.001,scaleY:.001},O.attr(U),j&&j.attr(U)):(U={translateX:z,translateY:F,scaleX:1,scaleY:1},O.animate(U,H),j&&j.animate(U,H))):e.call(this,b)}function tg(e,x,b,E){let L,O;if(this.chart.polar)if(E){let e=(O=function e(x,b,E,L){let O,D,j,R,z,F,H=+!!L,U=(O=b>=0&&b<=x.length-1?b:b<0?x.length-1+b:0)-1<0?x.length-(1+H):O-1,Y=O+1>x.length-1?H:O+1,V=x[U],q=x[Y],K=V.plotX,$=V.plotY,_=q.plotX,Z=q.plotY,J=x[O].plotX,tt=x[O].plotY;D=(1.5*J+K)/2.5,j=(1.5*tt+$)/2.5,R=(1.5*J+_)/2.5,z=(1.5*tt+Z)/2.5;let te=Math.sqrt(Math.pow(D-J,2)+Math.pow(j-tt,2)),ti=Math.sqrt(Math.pow(R-J,2)+Math.pow(z-tt,2)),ts=Math.atan2(j-tt,D-J);F=Math.PI/2+(ts+Math.atan2(z-tt,R-J))/2,Math.abs(ts-F)>Math.PI/2&&(F-=Math.PI),D=J+Math.cos(F)*te,j=tt+Math.sin(F)*te;let to={rightContX:R=J+Math.cos(Math.PI+F)*ti,rightContY:z=tt+Math.sin(Math.PI+F)*ti,leftContX:D,leftContY:j,plotX:J,plotY:tt};return E&&(to.prevPointCont=e(x,U,!1,L)),to}(x,E,!0,this.connectEnds)).prevPointCont&&O.prevPointCont.rightContX,b=O.prevPointCont&&O.prevPointCont.rightContY;L=[“C”,H(e)?e:O.plotX,H(b)?b:O.plotY,H(O.leftContX)?O.leftContX:O.plotX,H(O.leftContY)?O.leftContY:O.plotY,O.plotX,O.plotY]}else L=[“M”,b.plotX,b.plotY];else L=e.call(this,x,b,E);return L}function tm(e,x,b=this.plotY){if(!this.destroyed){let{plotX:E,series:L}=this,{chart:O}=L;return O.polar&&H(E)&&H(b)?[E+(x?O.plotLeft:0),b+(x?O.plotTop:0)]:e.call(this,x,b)}}let B=class B{static compose(e,x,b,O,D,z,F,H,U,Y){if(E.compose(x,b),L.compose(e,D),V(j,”Polar”)){let e=x.prototype,E=z.prototype,L=b.prototype,D=O.prototype;if(R(x,”afterDrawChartBox”,Z),R(x,”getAxes”,tt),R(x,”init”,J),_(e,”get”,ta),_(L,”getCoordinates”,tc),_(L,”pinch”,tp),R(b,”getSelectionMarkerAttrs”,ti),R(b,”getSelectionBox”,te),R(O,”afterInit”,ts),R(O,”afterTranslate”,to,{order:2}),R(O,”afterColumnTranslate”,th,{order:4}),_(D,”animate”,tu),_(E,”pos”,tm),H){let e=H.prototype;_(e,”alignDataLabel”,tl),_(e,”animate”,tu)}if(U&&_(U.prototype,”getGraphPath”,td),Y){let e=Y.prototype;_(e,”getPointSpline”,tg),F&&(F.prototype.getPointSpline=e.getPointSpline)}}}constructor(e){this.series=e}arc(e,x,b,E){let L=this.series,O=L.xAxis.center,D=L.yAxis.len,j=O[3]/2,R=D-x+j,z=D-Y(e,D)+j;return L.yAxis.reversed&&(R<0&&(R=j),z<0&&(z=j)),{x:O[0],y:O[1],r:R,innerR:z,start:b,end:E}}toXY(e){let x=this.series,b=x.chart,E=x.xAxis,L=x.yAxis,O=e.plotX,D=b.inverted,j=e.y,R=e.plotY,z=D?O:L.len-R,F;if(D&&x&&!x.isRadialBar&&(e.plotY=R=H(j)?L.translate(j):0),e.rectPlotX=O,e.rectPlotY=R,L.center&&(z+=L.center[3]/2),H(R)){let x=D?L.postTranslate(R,z):E.postTranslate(O,z);e.plotX=e.polarPlotX=x.x-b.plotLeft,e.plotY=e.polarPlotY=x.y-b.plotTop}x.kdByAngle?((F=(O/Math.PI*180+E.pane.options.startAngle)%360)<0&&(F+=360),e.clientX=F):e.clientX=e.plotX}};return B}),b(x,"Core/Axis/WaterfallAxis.js",[x["Core/Globals.js"],x["Core/Axis/Stacking/StackItem.js"],x["Core/Utilities.js"]],function(e,x,b){var E;let{composed:L}=e,{addEvent:O,objectEach:D,pushUnique:j}=b;return function(e){function b(){let e=this.waterfall.stacks;e&&(e.changed=!1,delete e.alreadyChanged)}function E(){let e=this.options.stackLabels;e&&e.enabled&&this.waterfall.stacks&&this.waterfall.renderStackTotals()}function R(){this.waterfall||(this.waterfall=new p(this))}function z(){let e=this.axes;for(let x of this.series)if(x.options.stacking){for(let x of e)x.isXAxis||(x.waterfall.stacks.changed=!0);break}}e.compose=function(e,x){j(L,"Axis.Waterfall")&&(O(e,"init",R),O(e,"afterBuildStacks",b),O(e,"afterRender",E),O(x,"beforeRedraw",z))};let p=class p{constructor(e){this.axis=e,this.stacks={changed:!1}}renderStackTotals(){let e=this.axis,b=e.waterfall.stacks,E=e.stacking&&e.stacking.stackTotalGroup,L=new x(e,e.options.stackLabels||{},!1,0,void 0);this.dummyStackItem=L,E&&D(b,e=>{D(e,(e,b)=>{L.total=e.stackTotal,L.x=+b,e.label&&(L.label=e.label),x.prototype.render.call(L,E),e.label=L.label,delete L.label})}),L.total=null}};e.Composition=p}(E||(E={})),E}),b(x,”Series/Waterfall/WaterfallPoint.js”,[x[“Series/Column/ColumnSeries.js”],x[“Core/Series/Point.js”],x[“Core/Utilities.js”]],function(e,x,b){let{isNumber:E}=b;let o=class o extends e.prototype.pointClass{getClassName(){let e=x.prototype.getClassName.call(this);return this.isSum?e+=” highcharts-sum”:this.isIntermediateSum&&(e+=” highcharts-intermediate-sum”),e}isValid(){return E(this.y)||this.isSum||!!this.isIntermediateSum}};return o}),b(x,”Series/Waterfall/WaterfallSeriesDefaults.js”,[],function(){return{dataLabels:{inside:!0},lineWidth:1,lineColor:”#333333″,dashStyle:”Dot”,borderColor:”#333333″,states:{hover:{lineWidthPlus:0}}}}),b(x,”Series/Waterfall/WaterfallSeries.js”,[x[“Core/Series/SeriesRegistry.js”],x[“Core/Utilities.js”],x[“Core/Axis/WaterfallAxis.js”],x[“Series/Waterfall/WaterfallPoint.js”],x[“Series/Waterfall/WaterfallSeriesDefaults.js”]],function(e,x,b,E,L){let{column:O,line:D}=e.seriesTypes,{addEvent:j,arrayMax:R,arrayMin:z,correctFloat:F,crisp:H,extend:U,isNumber:Y,merge:V,objectEach:q,pick:K}=x;function $(e,x){return Object.hasOwnProperty.call(e,x)}let y=class y extends O{generatePoints(){O.prototype.generatePoints.apply(this);for(let e=0,x=this.points.length;e0?b:void 0);let E=O.prototype.pointAttribs.call(this,e,x);return delete E.dashstyle,E}getGraphPath(){return[[“M”,0,0]]}getCrispPath(){let e=this.data.filter(e=>Y(e.y)),x=this.yAxis,b=e.length,E=this.graph?.strokeWidth()||0,L=this.xAxis.reversed,O=this.yAxis.reversed,D=this.options.stacking,j=[];for(let R=1;R0?-U.height:0;if(V&&U&&b){let e,F=V[R-1];if(D){let b=F.connectorThreshold;e=H(x.translate(b,!1,!0,!1,!0)+(O?q:0),E)}else e=H(U.y+(z.minPointLengthOffset||0),E);j.push([“M”,(U.x||0)+(L?0:U.width||0),e],[“L”,(b.x||0)+(L&&b.width||0),e])}if(U&&j.length&&(!D&&F<0&&!O||F>0&&O)){let e=j[j.length-2];e&&”number”==typeof e[2]&&(e[2]+=U.height||0);let x=j[j.length-1];x&&”number”==typeof x[2]&&(x[2]+=U.height||0)}}return j}drawGraph(){D.prototype.drawGraph.call(this),this.graph&&this.graph.attr({d:this.getCrispPath()})}setStackedPoints(e){let x=this.options,b=e.waterfall?.stacks,E=x.threshold||0,L=this.stackKey,O=this.xData,D=O.length,j=E,R=j,z,F=0,H=0,U=0,Y,V,q,K,$,_,Z,J,tt=(e,x,b,E)=>{if(z){if(Y)for(;bZ.indexOf(L)&&(J=!0),b[L]||(b[L]={});let e=b[L];if(e)for(let b=0;b=0?z.posTotal+=$:z.negTotal+=$,K=x.data[b],V=z.absolutePos=z.posTotal,q=z.absoluteNeg=z.negTotal,z.stackTotal=V+q,Y=z.stackState.length,K&&K.isIntermediateSum?(tt(U,H,0,U),U=H,H=E,j^=R,R^=j,j^=R):K&&K.isSum?(tt(E,F,Y,0),j=E):(tt(j,$,0,F),K&&(F+=$,H+=$)),z.stateIndex++,z.threshold=j,j+=z.stackTotal;b.changed=!1,b.alreadyChanged||(b.alreadyChanged=[]),b.alreadyChanged.push(L)}}getExtremes(){let e,x,b,E=this.options.stacking;return E?(e=this.yAxis.waterfall.stacks,x=this.stackedYNeg=[],b=this.stackedYPos=[],”overlap”===E?q(e[this.stackKey],function(e){x.push(z(e.stackState)),b.push(R(e.stackState))}):q(e[this.stackKey],function(e){x.push(e.negTotal+e.threshold),b.push(e.posTotal+e.threshold)}),{dataMin:z(x),dataMax:R(b)}):{dataMin:this.dataMin,dataMax:this.dataMax}}};return y.defaultOptions=V(O.defaultOptions,L),y.compose=b.compose,U(y.prototype,{pointValKey:”y”,showLine:!0,pointClass:E}),j(y,”afterColumnTranslate”,function(){let{options:e,points:x,yAxis:b}=this,E=K(e.minPointLength,5),L=E/2,O=e.threshold||0,D=e.stacking,j=b.waterfall.stacks[this.stackKey],R=O,z=O,F,q,_,Z;for(let e=0;e=0?q:q-ti,$(x,”absolutePos”)&&delete x.absolutePos,$(x,”absoluteNeg”)&&delete x.absoluteNeg):(ti>=0?(q=x.threshold+x.posTotal,x.posTotal-=ti,F=q):(q=x.threshold+x.negTotal,x.negTotal-=ti,F=q-ti),!x.posTotal&&Y(x.absolutePos)&&$(x,”absolutePos”)&&(x.posTotal=x.absolutePos,delete x.absolutePos),!x.negTotal&&Y(x.absoluteNeg)&&$(x,”absoluteNeg”)&&(x.negTotal=x.absoluteNeg,delete x.absoluteNeg)),K.isSum||(x.connectorThreshold=x.threshold+x.stackTotal),b.reversed?(_=ti>=0?F-ti:F+ti,Z=F):(_=F,Z=F-ti),K.below=_<=O,tt.y=b.translate(_,!1,!0,!1,!0),tt.height=Math.abs(tt.y-b.translate(Z,!1,!0,!1,!0));let E=b.waterfall.dummyStackItem;E&&(E.x=e,E.label=j[e].label,E.setOffset(this.pointXOffset||0,this.barW||0,this.stackedYNeg[e],this.stackedYPos[e],void 0,this.xAxis))}}else F=Math.max(z,z+ti)+te[0],tt.y=b.translate(F,!1,!0,!1,!0),K.isSum?(tt.y=b.translate(te[1],!1,!0,!1,!0),tt.height=Math.min(b.translate(te[0],!1,!0,!1,!0),b.len)-tt.y,K.below=te[1]<=O):K.isIntermediateSum?(ti>=0?(_=te[1]+R,Z=R):(_=R,Z=te[1]+R),b.reversed&&(_^=Z,Z^=_,_^=Z),tt.y=b.translate(_,!1,!0,!1,!0),tt.height=Math.abs(tt.y-Math.min(b.translate(Z,!1,!0,!1,!0),b.len)),R+=te[1],K.below=_<=O):(tt.height=J>0?b.translate(z,!1,!0,!1,!0)-tt.y:b.translate(z,!1,!0,!1,!0)-b.translate(z-J,!1,!0,!1,!0),K.below=(z+=J)parseInt(b.userAgent.split(“Firefox/”)[1],10),b.marginNames=[“plotTop”,”marginRight”,”marginBottom”,”plotLeft”],b.noop=function(){},b.supportsPassiveEvents=function(){let e=!1;if(!b.isMS){let x=Object.defineProperty({},”passive”,{get:function(){e=!0}});b.win.addEventListener&&b.win.removeEventListener&&(b.win.addEventListener(“testPassive”,b.noop,x),b.win.removeEventListener(“testPassive”,b.noop,x))}return e}(),b.charts=[],b.composed=[],b.dateFormats={},b.seriesTypes={},b.symbolSizes={},b.chartCount=0,x}),b(x,”Core/Utilities.js”,[x[“Core/Globals.js”]],function(e){let x,b,E,{charts:L,doc:O,win:D}=e;function j(x,b,E,L){let O=b?”Highcharts error”:”Highcharts warning”;32===x&&(x=`${O}: Deprecated member`);let R=V(x),z=R?`${O} #${x}: www.highcharts.com/errors/${x}/`:x.toString();if(void 0!==L){let e=””;R&&(z+=”?”),ts(L,function(x,b){e+=` – ${b}: ${x}`,R&&(z+=encodeURI(b)+”=”+encodeURI(x))}),z+=e}tr(e,”displayError”,{chart:E,code:x,message:z,params:L},function(){if(b)throw Error(z);D.console&&-1===j.messages.indexOf(z)&&console.warn(z)}),j.messages.push(z)}function R(e,x){return parseInt(e,x||10)}function z(e){return”string”==typeof e}function F(e){let x=Object.prototype.toString.call(e);return”[object Array]”===x||”[object Array Iterator]”===x}function H(e,x){return!!e&&”object”==typeof e&&(!x||!F(e))}function U(e){return H(e)&&”number”==typeof e.nodeType}function Y(e){let x=e&&e.constructor;return!!(H(e,!0)&&!U(e)&&x&&x.name&&”Object”!==x.name)}function V(e){return”number”==typeof e&&!isNaN(e)&&e<1/0&&e>-1/0}function q(e){return null!=e}function K(e,x,b){let E,L=z(x)&&!q(b),O=(x,b)=>{q(x)?e.setAttribute(b,x):L?(E=e.getAttribute(b))||”class”!==b||(E=e.getAttribute(b+”Name”)):e.removeAttribute(b)};return z(x)?O(b,x):ts(x,O),E}function $(e){return F(e)?e:[e]}function _(e,x){let b;for(b in e||(e={}),x)e[b]=x[b];return e}function Z(){let e=arguments,x=e.length;for(let b=0;b1e14?e:parseFloat(e.toPrecision(x||14))}(j||(j={})).messages=[],Math.easeInOutSine=function(e){return -.5*(Math.cos(Math.PI*e)-1)};let ti=Array.prototype.find?function(e,x){return e.find(x)}:function(e,x){let b,E=e.length;for(b=0;be.order-x.order),e.forEach(e=>{!1===e.fn.call(x,E)&&E.preventDefault()})}L&&!E.defaultPrevented&&L.call(x,E)}ts({map:”map”,each:”forEach”,grep:”filter”,reduce:”reduce”,some:”some”},function(x,b){e[b]=function(e){return j(32,!1,void 0,{[`Highcharts.${b}`]:`use Array.${x}`}),Array.prototype[x].apply(e,[].slice.call(arguments,1))}});let tn=(x=Math.random().toString(36).substring(2,9)+”-“,b=0,function(){return”highcharts-“+(E?””:x)+b++});return D.jQuery&&(D.jQuery.fn.highcharts=function(){let x=[].slice.call(arguments);if(this[0])return x[0]?(new e[z(x[0])?x.shift():”Chart”](this[0],x[0],x[1]),this):L[K(this[0],”data-highcharts-chart”)]}),{addEvent:function(x,b,E,L={}){let O=”function”==typeof x&&x.prototype||x;Object.hasOwnProperty.call(O,”hcEvents”)||(O.hcEvents={});let D=O.hcEvents;e.Point&&x instanceof e.Point&&x.series&&x.series.chart&&(x.series.chart.runTrackerClick=!0);let j=x.addEventListener;j&&j.call(x,b,E,!!e.supportsPassiveEvents&&{passive:void 0===L.passive?-1!==b.indexOf(“touch”):L.passive,capture:!1}),D[b]||(D[b]=[]);let R={fn:E,order:”number”==typeof L.order?L.order:1/0};return D[b].push(R),D[b].sort((e,x)=>e.order-x.order),function(){to(x,b,E)}},arrayMax:function(e){let x=e.length,b=e[0];for(;x–;)e[x]>b&&(b=e[x]);return b},arrayMin:function(e){let x=e.length,b=e[0];for(;x–;)e[x]x?e{let E=x%2/2,L=b?-1:1;return(Math.round(e*L-E)+E)*L},css:J,defined:q,destroyObjectProperties:function(e,x,b){ts(e,function(E,L){E!==x&&E?.destroy&&E.destroy(),(E?.destroy||!b)&&delete e[L]})},diffObjects:function(e,x,b,E){let L={};return function e(x,L,O,D){let j=b?L:x;ts(x,function(b,R){if(!D&&E&&E.indexOf(R)>-1&&L[R]){b=$(b),O[R]=[];for(let x=0;x{if(e.length>1)for(O=E=e.length-1;O>0;O–)(L=e[O]-e[O-1])<0&&!D?(x?.(),x=void 0):L&&(void 0===b||L=b-1&&(b=Math.floor(E)),Math.max(0,b-(e(x,”padding-left”,!0)||0)-(e(x,”padding-right”,!0)||0))}if(“height”===b)return Math.max(0,Math.min(x.offsetHeight,x.scrollHeight)-(e(x,”padding-top”,!0)||0)-(e(x,”padding-bottom”,!0)||0));let O=D.getComputedStyle(x,void 0);return O&&(L=O.getPropertyValue(b),Z(E,”opacity”!==b)&&(L=R(L))),L},inArray:function(e,x,b){return j(32,!1,void 0,{“Highcharts.inArray”:”use Array.indexOf”}),x.indexOf(e,b)},insertItem:function(e,x){let b,E=e.options.index,L=x.length;for(b=e.options.isInternal?L:0;b=e))&&(L||!(j<=(x[O]+(x[O+1]||x[O]))/2)));O++);return te(D*b,-Math.round(Math.log(.001)/Math.LN10))},objectEach:ts,offset:function(e){let x=O.documentElement,b=e.parentElement||e.parentNode?e.getBoundingClientRect():{top:0,left:0,width:0,height:0};return{top:b.top+(D.pageYOffset||x.scrollTop)-(x.clientTop||0),left:b.left+(D.pageXOffset||x.scrollLeft)-(x.clientLeft||0),width:b.width,height:b.height}},pad:function(e,x,b){return Array((x||2)+1-String(e).replace("-","").length).join(b||"0")+e},pick:Z,pInt:R,pushUnique:function(e,x){return 0>e.indexOf(x)&&!!e.push(x)},relativeLength:function(e,x,b){return/%$/.test(e)?x*parseFloat(e)/100+(b||0):parseFloat(e)},removeEvent:to,replaceNested:function(e,…x){let b,E;do for(E of(b=e,x))e=e.replace(E[0],E[1]);while(e!==b)return e},splat:$,stableSort:function(e,x){let b,E,L=e.length;for(E=0;E0?setTimeout(e,x,b):(e.call(0,b),-1)},timeUnits:{millisecond:1,second:1e3,minute:6e4,hour:36e5,day:864e5,week:6048e5,month:24192e5,year:314496e5},uniqueKey:tn,useSerialIds:function(e){return E=Z(e,E)},wrap:function(e,x,b){let E=e[x];e[x]=function(){let e=arguments,x=this;return b.apply(this,[function(){return E.apply(x,arguments.length?arguments:e)}].concat([].slice.call(arguments)))}}}}),b(x,”Core/Chart/ChartDefaults.js”,[],function(){return{alignThresholds:!1,panning:{enabled:!1,type:”x”},styledMode:!1,borderRadius:0,colorCount:10,allowMutatingData:!0,ignoreHiddenSeries:!0,spacing:[10,10,15,10],resetZoomButton:{theme:{},position:{}},reflow:!0,type:”line”,zooming:{singleTouch:!1,resetButton:{theme:{zIndex:6},position:{align:”right”,x:-10,y:10}}},width:null,height:null,borderColor:”#334eff”,backgroundColor:”#ffffff”,plotBorderColor:”#cccccc”}}),b(x,”Core/Color/Palettes.js”,[],function(){return{colors:[“#2caffe”,”#544fc5″,”#00e272″,”#fe6a35″,”#6b8abc”,”#d568fb”,”#2ee0ca”,”#fa4b42″,”#feb56a”,”#91e8e1″]}}),b(x,”Core/Time.js”,[x[“Core/Globals.js”],x[“Core/Utilities.js”]],function(e,x){let{win:b}=e,{defined:E,error:L,extend:O,isNumber:D,isObject:j,merge:R,objectEach:z,pad:F,pick:H,splat:U,timeUnits:Y}=x,V=e.isSafari&&b.Intl&&b.Intl.DateTimeFormat.prototype.formatRange,q=e.isSafari&&b.Intl&&!b.Intl.DateTimeFormat.prototype.formatRange;let m=class m{constructor(e){this.options={},this.useUTC=!1,this.variableTimezone=!1,this.Date=b.Date,this.getTimezoneOffset=this.timezoneOffsetFunction(),this.update(e)}get(e,x){if(this.variableTimezone||this.timezoneOffset){let b=x.getTime(),E=b-this.getTimezoneOffset(x);x.setTime(E);let L=x[“getUTC”+e]();return x.setTime(b),L}return this.useUTC?x[“getUTC”+e]():x[“get”+e]()}set(e,x,b){if(this.variableTimezone||this.timezoneOffset){if(“Milliseconds”===e||”Seconds”===e||”Minutes”===e&&this.getTimezoneOffset(x)%36e5==0)return x[“setUTC”+e](b);let E=this.getTimezoneOffset(x),L=x.getTime()-E;x.setTime(L),x[“setUTC”+e](b);let O=this.getTimezoneOffset(x);return L=x.getTime()+O,x.setTime(L)}return this.useUTC||V&&”FullYear”===e?x[“setUTC”+e](b):x[“set”+e](b)}update(e={}){let x=H(e.useUTC,!0);this.options=e=R(!0,this.options,e),this.Date=e.Date||b.Date||Date,this.useUTC=x,this.timezoneOffset=x&&e.timezoneOffset||void 0,this.getTimezoneOffset=this.timezoneOffsetFunction(),this.variableTimezone=x&&!!(e.getTimezoneOffset||e.timezone)}makeTime(e,x,b,E,L,O){let D,j,R;return this.useUTC?(D=this.Date.UTC.apply(0,arguments),j=this.getTimezoneOffset(D),D+=j,j!==(R=this.getTimezoneOffset(D))?D+=R-j:j-36e5!==this.getTimezoneOffset(D-36e5)||q||(D-=36e5)):D=new this.Date(e,x,H(b,1),H(E,0),H(L,0),H(O,0)).getTime(),D}timezoneOffsetFunction(){let e=this,x=this.options,b=x.getTimezoneOffset;return this.useUTC?x.timezone?e=>{try{let b=`shortOffset,${x.timezone||””}`,[E,L,O,j,R=0]=(m.formatCache[b]=m.formatCache[b]||Intl.DateTimeFormat(“en”,{timeZone:x.timezone,timeZoneName:”shortOffset”})).format(e).split(/(GMT|:)/).map(Number),z=-(36e5*(O+R/60));if(D(z))return z}catch(e){L(34)}return 0}:this.useUTC&&b?e=>6e4*b(e.valueOf()):()=>6e4*(e.timezoneOffset||0):e=>6e4*new Date(e.toString()).getTimezoneOffset()}dateFormat(x,b,L){if(!E(b)||isNaN(b))return e.defaultOptions.lang&&e.defaultOptions.lang.invalidDate||””;x=H(x,”%Y-%m-%d %H:%M:%S”);let D=this,j=new this.Date(b),R=this.get(“Hours”,j),U=this.get(“Day”,j),Y=this.get(“Date”,j),V=this.get(“Month”,j),q=this.get(“FullYear”,j),K=e.defaultOptions.lang,$=K&&K.weekdays,_=K&&K.shortWeekdays;return z(O({a:_?_[U]:$[U].substr(0,3),A:$[U],d:F(Y),e:F(Y,2,” “),w:U,b:K.shortMonths[V],B:K.months[V],m:F(V+1),o:V+1,y:q.toString().substr(2,2),Y:q,H:F(R),k:R,I:F(R%12||12),l:R%12||12,M:F(this.get(“Minutes”,j)),p:R<12?"AM":"PM",P:R<12?"am":"pm",S:F(this.get("Seconds",j)),L:F(Math.floor(b%1e3),3)},e.dateFormats),function(e,E){for(;-1!==x.indexOf("%"+E);)x=x.replace("%"+E,"function"==typeof e?e.call(D,b):e)}),L?x.substr(0,1).toUpperCase()+x.substr(1):x}resolveDTLFormat(e){return j(e,!0)?e:{main:(e=U(e))[0],from:e[1],to:e[2]}}getTimeTicks(e,x,b,L){let D,j,R,z,F=this,U=F.Date,V=[],q={},K=new U(x),$=e.unitRange,_=e.count||1;if(L=H(L,1),E(x)){F.set("Milliseconds",K,$>=Y.second?0:_*Math.floor(F.get(“Milliseconds”,K)/_)),$>=Y.second&&F.set(“Seconds”,K,$>=Y.minute?0:_*Math.floor(F.get(“Seconds”,K)/_)),$>=Y.minute&&F.set(“Minutes”,K,$>=Y.hour?0:_*Math.floor(F.get(“Minutes”,K)/_)),$>=Y.hour&&F.set(“Hours”,K,$>=Y.day?0:_*Math.floor(F.get(“Hours”,K)/_)),$>=Y.day&&F.set(“Date”,K,$>=Y.month?1:Math.max(1,_*Math.floor(F.get(“Date”,K)/_))),$>=Y.month&&(F.set(“Month”,K,$>=Y.year?0:_*Math.floor(F.get(“Month”,K)/_)),j=F.get(“FullYear”,K)),$>=Y.year&&(j-=j%_,F.set(“FullYear”,K,j)),$===Y.week&&(z=F.get(“Day”,K),F.set(“Date”,K,F.get(“Date”,K)-z+L+(z4*Y.month||F.getTimezoneOffset(x)!==F.getTimezoneOffset(b));let U=K.getTime();for(D=1;U1?U=F.makeTime(j,e,O,H+D*_):U+=$*_,D++;V.push(U),$<=Y.hour&&V.length<1e4&&V.forEach(function(e){e%18e5==0&&"000000000"===F.dateFormat("%H%M%S%L",e)&&(q[e]="day")})}return V.info=O(e,{higherRanks:q,totalRange:$*_}),V}getDateFormat(e,x,b,E){let L=this.dateFormat("%m-%d %H:%M:%S.%L",x),O="01-01 00:00:00.000",D={millisecond:15,second:12,minute:9,hour:6,day:3},j="millisecond",R=j;for(j in Y){if(e===Y.week&&+this.dateFormat("%w",x)===b&&L.substr(6)===O.substr(6)){j="week";break}if(Y[j]>e){j=R;break}if(D[j]&&L.substr(D[j])!==O.substr(D[j]))break;”week”!==j&&(R=j)}return this.resolveDTLFormat(E[j]).main}};return m.formatCache={},m}),b(x,”Core/Defaults.js”,[x[“Core/Chart/ChartDefaults.js”],x[“Core/Globals.js”],x[“Core/Color/Palettes.js”],x[“Core/Time.js”],x[“Core/Utilities.js”]],function(e,x,b,E,L){let{isTouchDevice:O}=x,{fireEvent:D,merge:j}=L,R={colors:b.colors,symbols:[“circle”,”diamond”,”square”,”triangle”,”triangle-down”],lang:{loading:”Loading…”,months:[“January”,”February”,”March”,”April”,”May”,”June”,”July”,”August”,”September”,”October”,”November”,”December”],shortMonths:[“Jan”,”Feb”,”Mar”,”Apr”,”May”,”Jun”,”Jul”,”Aug”,”Sep”,”Oct”,”Nov”,”Dec”],weekdays:[“Sunday”,”Monday”,”Tuesday”,”Wednesday”,”Thursday”,”Friday”,”Saturday”],decimalPoint:”.”,numericSymbols:[“k”,”M”,”G”,”T”,”P”,”E”],resetZoom:”Reset zoom”,resetZoomTitle:”Reset zoom level 1:1″,thousandsSep:” “},global:{buttonTheme:{fill:”#f7f7f7″,padding:8,r:2,stroke:”#cccccc”,”stroke-width”:1,style:{color:”#333333″,cursor:”pointer”,fontSize:”0.8em”,fontWeight:”normal”},states:{hover:{fill:”#e6e6e6″},select:{fill:”#e6e9ff”,style:{color:”#000000″,fontWeight:”bold”}},disabled:{style:{color:”#cccccc”}}}}},time:{Date:void 0,getTimezoneOffset:void 0,timezone:void 0,timezoneOffset:0,useUTC:!0},chart:e,title:{style:{color:”#333333″,fontWeight:”bold”},text:”Chart title”,align:”center”,margin:15,widthAdjust:-44},subtitle:{style:{color:”#666666″,fontSize:”0.8em”},text:””,align:”center”,widthAdjust:-44},caption:{margin:15,style:{color:”#666666″,fontSize:”0.8em”},text:””,align:”left”,verticalAlign:”bottom”},plotOptions:{},legend:{enabled:!0,align:”center”,alignColumns:!0,className:”highcharts-no-tooltip”,layout:”horizontal”,itemMarginBottom:2,itemMarginTop:2,labelFormatter:function(){return this.name},borderColor:”#999999″,borderRadius:0,navigation:{style:{fontSize:”0.8em”},activeColor:”#0022ff”,inactiveColor:”#cccccc”},itemStyle:{color:”#333333″,cursor:”pointer”,fontSize:”0.8em”,textDecoration:”none”,textOverflow:”ellipsis”},itemHoverStyle:{color:”#000000″},itemHiddenStyle:{color:”#666666″,textDecoration:”line-through”},shadow:!1,itemCheckboxStyle:{position:”absolute”,width:”13px”,height:”13px”},squareSymbol:!0,symbolPadding:5,verticalAlign:”bottom”,x:0,y:0,title:{style:{fontSize:”0.8em”,fontWeight:”bold”}}},loading:{labelStyle:{fontWeight:”bold”,position:”relative”,top:”45%”},style:{position:”absolute”,backgroundColor:”#ffffff”,opacity:.5,textAlign:”center”}},tooltip:{enabled:!0,animation:{duration:300,easing:e=>Math.sqrt(1-Math.pow(e-1,2))},borderRadius:3,dateTimeLabelFormats:{millisecond:”%A, %e %b, %H:%M:%S.%L”,second:”%A, %e %b, %H:%M:%S”,minute:”%A, %e %b, %H:%M”,hour:”%A, %e %b, %H:%M”,day:”%A, %e %b %Y”,week:”Week from %A, %e %b %Y”,month:”%B %Y”,year:”%Y”},footerFormat:””,headerShape:”callout”,hideDelay:500,padding:8,shape:”callout”,shared:!1,snap:O?25:10,headerFormat:’{point.key}
    ‘,pointFormat:’\u25CF {series.name}: {point.y}
    ‘,backgroundColor:”#ffffff”,borderWidth:void 0,shadow:!0,stickOnContact:!1,style:{color:”#333333″,cursor:”default”,fontSize:”0.8em”},useHTML:!1},credits:{enabled:!0,href:”https://www.highcharts.com?credits”,position:{align:”right”,x:-10,verticalAlign:”bottom”,y:-5},style:{cursor:”pointer”,color:”#999999″,fontSize:”0.6em”},text:”Highcharts.com”}};R.chart.styledMode=!1;let z=new E(R.time);return{defaultOptions:R,defaultTime:z,getOptions:function(){return R},setOptions:function(e){return D(x,”setOptions”,{options:e}),j(!0,R,e),(e.time||e.global)&&(x.time?x.time.update(j(R.global,R.time,e.global,e.time)):x.time=z),R}}}),b(x,”Core/Color/Color.js”,[x[“Core/Globals.js”],x[“Core/Utilities.js”]],function(e,x){let{isNumber:b,merge:E,pInt:L}=x;let r=class r{static parse(e){return e?new r(e):r.None}constructor(x){let b,E,L,O;this.rgba=[NaN,NaN,NaN,NaN],this.input=x;let D=e.Color;if(D&&D!==r)return new D(x);if(“object”==typeof x&&void 0!==x.stops)this.stops=x.stops.map(e=>new r(e[1]));else if(“string”==typeof x){if(this.input=x=r.names[x.toLowerCase()]||x,”#”===x.charAt(0)){let e=x.length,b=parseInt(x.substr(1),16);7===e?E=[(0xff0000&b)>>16,(65280&b)>>8,255&b,1]:4===e&&(E=[(3840&b)>>4|(3840&b)>>8,(240&b)>>4|240&b,(15&b)<<4|15&b,1])}if(!E)for(L=r.parsers.length;L--&&!E;)(b=(O=r.parsers[L]).regex.exec(x))&&(E=O.parse(b))}E&&(this.rgba=E)}get(e){let x=this.input,L=this.rgba;if("object"==typeof x&&void 0!==this.stops){let b=E(x);return b.stops=[].slice.call(b.stops),this.stops.forEach((x,E)=>{b.stops[E]=[b.stops[E][0],x.get(e)]}),b}return L&&b(L[0])?”rgb”!==e&&(e||1!==L[3])?”a”===e?`${L[3]}`:”rgba(“+L.join(“,”)+”)”:”rgb(“+L[0]+”,”+L[1]+”,”+L[2]+”)”:x}brighten(e){let x=this.rgba;if(this.stops)this.stops.forEach(function(x){x.brighten(e)});else if(b(e)&&0!==e)for(let b=0;b<3;b++)x[b]+=L(255*e),x[b]<0&&(x[b]=0),x[b]>255&&(x[b]=255);return this}setOpacity(e){return this.rgba[3]=e,this}tweenTo(e,x){let E=this.rgba,L=e.rgba;if(!b(E[0])||!b(L[0]))return e.input||”none”;let O=1!==L[3]||1!==E[3];return(O?”rgba(“:”rgb(“)+Math.round(L[0]+(E[0]-L[0])*(1-x))+”,”+Math.round(L[1]+(E[1]-L[1])*(1-x))+”,”+Math.round(L[2]+(E[2]-L[2])*(1-x))+(O?”,”+(L[3]+(E[3]-L[3])*(1-x)):””)+”)”}};return r.names={white:”#ffffff”,black:”#000000″},r.parsers=[{regex:/rgba\(\s*([0-9]{1,3})\s*,\s*([0-9]{1,3})\s*,\s*([0-9]{1,3})\s*,\s*([0-9]?(?:\.[0-9]+)?)\s*\)/,parse:function(e){return[L(e[1]),L(e[2]),L(e[3]),parseFloat(e[4],10)]}},{regex:/rgb\(\s*([0-9]{1,3})\s*,\s*([0-9]{1,3})\s*,\s*([0-9]{1,3})\s*\)/,parse:function(e){return[L(e[1]),L(e[2]),L(e[3]),1]}}],r.None=new r(“”),r}),b(x,”Core/Animation/Fx.js”,[x[“Core/Color/Color.js”],x[“Core/Globals.js”],x[“Core/Utilities.js”]],function(e,x,b){let{parse:E}=e,{win:L}=x,{isNumber:O,objectEach:D}=b;let n=class n{constructor(e,x,b){this.pos=NaN,this.options=x,this.elem=e,this.prop=b}dSetter(){let e=this.paths,x=e&&e[0],b=e&&e[1],E=this.now||0,L=[];if(1!==E&&x&&b)if(x.length===b.length&&E<1)for(let e=0;e=R+this.startTime?(this.now=this.end,this.pos=1,this.update(),z[this.prop]=!0,b=!0,D(z,function(e){!0!==e&&(b=!1)}),b&&j&&j.call(O),x=!1):(this.pos=L.easing((E-this.startTime)/R),this.now=this.start+(this.end-this.start)*this.pos,this.update(),x=!0),x}initPath(e,x,b){let E=e.startX,L=e.endX,D=b.slice(),j=e.isArea,R=j?2:1,z,F,H,U,Y=x&&x.slice();if(!Y)return[D,D];function V(e,x){for(;e.length{let E=F(e.options.animation);j=D(x)&&b(x.defer)?L.defer:Math.max(j,E.duration+E.defer),R=Math.min(L.duration,E.duration)}),e.renderer.forExport&&(j=0),{defer:Math.max(0,j-R),duration:Math.min(j,R)}},setAnimation:function(e,x){x.renderer.globalAnimation=z(e,x.options.chart.animation,!0)},stop:H}}),b(x,”Core/Renderer/HTML/AST.js”,[x[“Core/Globals.js”],x[“Core/Utilities.js”]],function(e,x){let{SVG_NS:b,win:E}=e,{attr:L,createElement:O,css:D,error:j,isFunction:R,isString:z,objectEach:F,splat:H}=x,{trustedTypes:U}=E,Y=U&&R(U.createPolicy)&&U.createPolicy(“highcharts”,{createHTML:e=>e}),V=Y?Y.createHTML(“”):””,q=function(){try{return!!new DOMParser().parseFromString(V,”text/html”)}catch(e){return!1}}();let m=class m{static filterUserAttributes(e){return F(e,(x,b)=>{let E=!0;-1===m.allowedAttributes.indexOf(b)&&(E=!1),-1!==[“background”,”dynsrc”,”href”,”lowsrc”,”src”].indexOf(b)&&(E=z(x)&&m.allowedReferences.some(e=>0===x.indexOf(e))),E||(j(33,!1,void 0,{“Invalid attribute in config”:`${b}`}),delete e[b]),z(x)&&e[b]&&(e[b]=x.replace(/{let b=x.split(“:”).map(e=>e.trim()),E=b.shift();return E&&b.length&&(e[E.replace(/-([a-z])/g,e=>e[1].toUpperCase())]=b.join(“:”)),e},{})}static setElementHTML(e,x){e.innerHTML=m.emptyHTML,x&&new m(x).addToDOM(e)}constructor(e){this.nodes=”string”==typeof e?this.parseMarkup(e):e}addToDOM(x){return function x(E,O){let R;return H(E).forEach(function(E){let z,H=E.tagName,U=E.textContent?e.doc.createTextNode(E.textContent):void 0,Y=m.bypassHTMLFiltering;if(H)if(“#text”===H)z=U;else if(-1!==m.allowedTags.indexOf(H)||Y){let j=”svg”===H?b:O.namespaceURI||b,R=e.doc.createElementNS(j,H),V=E.attributes||{};F(E,function(e,x){“tagName”!==x&&”attributes”!==x&&”children”!==x&&”style”!==x&&”textContent”!==x&&(V[x]=e)}),L(R,Y?V:m.filterUserAttributes(V)),E.style&&D(R,E.style),U&&R.appendChild(U),x(E.children||[],R),z=R}else j(33,!1,void 0,{“Invalid tagName in config”:H});z&&O.appendChild(z),R=z}),R}(this.nodes,x)}parseMarkup(e){let x,b=[];if(e=e.trim().replace(/ style=([“‘])/g,” data-style=$1″),q)x=new DOMParser().parseFromString(Y?Y.createHTML(e):e,”text/html”);else{let b=O(“div”);b.innerHTML=e,x={body:b}}let E=(e,x)=>{let b=e.nodeName.toLowerCase(),L={tagName:b};”#text”===b&&(L.textContent=e.textContent||””);let O=e.attributes;if(O){let e={};[].forEach.call(O,x=>{“data-style”===x.name?L.style=m.parseStyle(x.value):e[x.name]=x.value}),L.attributes=e}if(e.childNodes.length){let x=[];[].forEach.call(e.childNodes,e=>{E(e,x)}),x.length&&(L.children=x)}x.push(L)};return[].forEach.call(x.body.childNodes,e=>E(e,b)),b}};return m.allowedAttributes=[“alt”,”aria-controls”,”aria-describedby”,”aria-expanded”,”aria-haspopup”,”aria-hidden”,”aria-label”,”aria-labelledby”,”aria-live”,”aria-pressed”,”aria-readonly”,”aria-roledescription”,”aria-selected”,”class”,”clip-path”,”color”,”colspan”,”cx”,”cy”,”d”,”dx”,”dy”,”disabled”,”fill”,”filterUnits”,”flood-color”,”flood-opacity”,”height”,”href”,”id”,”in”,”markerHeight”,”markerWidth”,”offset”,”opacity”,”orient”,”padding”,”paddingLeft”,”paddingRight”,”patternUnits”,”r”,”refX”,”refY”,”role”,”scope”,”slope”,”src”,”startOffset”,”stdDeviation”,”stroke”,”stroke-linecap”,”stroke-width”,”style”,”tableValues”,”result”,”rowspan”,”summary”,”target”,”tabindex”,”text-align”,”text-anchor”,”textAnchor”,”textLength”,”title”,”type”,”valign”,”width”,”x”,”x1″,”x2″,”xlink:href”,”y”,”y1″,”y2″,”zIndex”],m.allowedReferences=[“https://”,”http://”,”mailto:”,”/”,”../”,”./”,”#”],m.allowedTags=[“a”,”abbr”,”b”,”br”,”button”,”caption”,”circle”,”clipPath”,”code”,”dd”,”defs”,”div”,”dl”,”dt”,”em”,”feComponentTransfer”,”feDropShadow”,”feFuncA”,”feFuncB”,”feFuncG”,”feFuncR”,”feGaussianBlur”,”feOffset”,”feMerge”,”feMergeNode”,”filter”,”h1″,”h2″,”h3″,”h4″,”h5″,”h6″,”hr”,”i”,”img”,”li”,”linearGradient”,”marker”,”ol”,”p”,”path”,”pattern”,”pre”,”rect”,”small”,”span”,”stop”,”strong”,”style”,”sub”,”sup”,”svg”,”table”,”text”,”textPath”,”thead”,”title”,”tbody”,”tspan”,”td”,”th”,”tr”,”u”,”ul”,”#text”],m.emptyHTML=V,m.bypassHTMLFiltering=!1,m}),b(x,”Core/Templating.js”,[x[“Core/Defaults.js”],x[“Core/Utilities.js”]],function(e,x){let{defaultOptions:b,defaultTime:E}=e,{extend:L,getNestedProperty:O,isArray:D,isNumber:j,isObject:R,pick:z,pInt:F}=x,H={add:(e,x)=>e+x,divide:(e,x)=>0!==x?e/x:””,eq:(e,x)=>e==x,each:function(e){let x=arguments[arguments.length-1];return!!D(e)&&e.map((b,E)=>U(x.body,L(R(b)?b:{“@this”:b},{“@index”:E,”@first”:0===E,”@last”:E===e.length-1}))).join(“”)},ge:(e,x)=>e>=x,gt:(e,x)=>e>x,if:e=>!!e,le:(e,x)=>e<=x,lt:(e,x)=>ee*x,ne:(e,x)=>e!=x,subtract:(e,x)=>e-x,unless:e=>!e};function U(e=””,x,L){let D=/\{([a-zA-Z0-9\:\.\,;\-\/<>%_@”‘= #\(\)]+)\}/g,j=/\(([a-zA-Z0-9\:\.\,;\-\/<>%_@”‘= ]+)\)/g,R=[],F=/f$/,V=/\.([0-9])/,q=b.lang,K=L&&L.time||E,$=L&&L.numberFormatter||Y,_=(e=””)=>{let b;return”true”===e||”false”!==e&&((b=Number(e)).toString()===e?b:O(e,x))},Z,J,tt=0,te;for(;null!==(Z=D.exec(e));){let b=j.exec(Z[1]);b&&(Z=b,te=!0),J&&J.isBlock||(J={ctx:x,expression:Z[1],find:Z[0],isBlock:”#”===Z[1].charAt(0),start:Z.index,startInner:Z.index+Z[0].length,length:Z[0].length});let E=Z[1].split(” “)[0].replace(“#”,””);H[E]&&(J.isBlock&&E===J.fn&&tt++,J.fn||(J.fn=E));let L=”else”===Z[1];if(J.isBlock&&J.fn&&(Z[1]===`/${J.fn}`||L))if(tt)!L&&tt–;else{let x=J.startInner,b=e.substr(x,Z.index-x);void 0===J.body?(J.body=b,J.startInner=Z.index+Z[0].length):J.elseBody=b,J.find+=b+Z[0],L||(R.push(J),J=void 0)}else J.isBlock||R.push(J);if(b&&!J?.isBlock)break}return R.forEach(b=>{let E,O,{body:D,elseBody:j,expression:R,fn:Y}=b;if(Y){let e=[b],z=R.split(” “);for(O=H[Y].length;O–;)e.unshift(_(z[O+1]));E=H[Y].apply(x,e),b.isBlock&&”boolean”==typeof E&&(E=U(E?D:j,x,L))}else{let e=R.split(“:”);if(E=_(e.shift()||””),e.length&&”number”==typeof E){let x=e.join(“:”);if(F.test(x)){let e=parseInt((x.match(V)||[“”,”-1″])[1],10);null!==E&&(E=$(E,e,q.decimalPoint,x.indexOf(“,”)>-1?q.thousandsSep:””))}else E=K.dateFormat(x,E)}}e=e.replace(b.find,z(E,””))}),te?U(e,x,L):e}function Y(e,x,E,L){let O,D;e=+e||0,x*=1;let R=b.lang,H=(e.toString().split(“.”)[1]||””).split(“e”)[0].length,U=e.toString().split(“e”),Y=x;-1===x?x=Math.min(H,20):j(x)?x&&U[1]&&U[1]<0&&((D=x+ +U[1])>=0?(U[0]=(+U[0]).toExponential(D).split(“e”)[0],x=D):(U[0]=U[0].split(“.”)[0]||0,e=x<20?(U[0]*Math.pow(10,U[1])).toFixed(x):0,U[1]=0)):x=2;let V=(Math.abs(U[1]?U[0]:e)+Math.pow(10,-Math.max(x,H)-1)).toFixed(x),q=String(F(V)),K=q.length>3?q.length%3:0;return E=z(E,R.decimalPoint),L=z(L,R.thousandsSep),O=(e<0?"-":"")+(K?q.substr(0,K)+L:""),0>+U[1]&&!Y?O=”0″:O+=q.substr(K).replace(/(\d{3})(?=\d)/g,”$1″+L),x?O+=E+V.slice(-x):0==+O&&(O=”0″),U[1]&&0!=+O&&(O+=”e”+U[1]),O}return{dateFormat:function(e,x,b){return E.dateFormat(e,x,b)},format:U,helpers:H,numberFormat:Y}}),b(x,”Core/Renderer/RendererRegistry.js”,[x[“Core/Globals.js”]],function(e){var x,b;let E;return(b=x||(x={})).rendererTypes={},b.getRendererType=function(e=E){return b.rendererTypes[e]||b.rendererTypes[E]},b.registerRendererType=function(x,L,O){b.rendererTypes[x]=L,(!E||O)&&(E=x,e.Renderer=L)},x}),b(x,”Core/Renderer/RendererUtilities.js”,[x[“Core/Utilities.js”]],function(e){var x;let{clamp:b,pick:E,pushUnique:L,stableSort:O}=e;return(x||(x={})).distribute=function e(x,D,j){let R=x,z=R.reducedLen||D,F=(e,x)=>e.target-x.target,H=[],U=x.length,Y=[],V=H.push,q,K,$,_=!0,Z,J,tt=0,te;for(q=U;q–;)tt+=x[q].size;if(tt>z){for(O(x,(e,x)=>(x.rank||0)-(e.rank||0)),$=(te=x[0].rank===x[x.length-1].rank)?U/2:-1,K=te?$:U-1;$&&tt>z;)Z=x[q=Math.floor(K)],L(Y,q)&&(tt-=Z.size),K+=$,te&&K>=x.length&&($/=2,K=$);Y.sort((e,x)=>x-e).forEach(e=>V.apply(H,x.splice(e,1)))}for(O(x,F),x=x.map(e=>({size:e.size,targets:[e.target],align:E(e.align,.5)}));_;){for(q=x.length;q–;)Z=x[q],J=(Math.min.apply(0,Z.targets)+Math.max.apply(0,Z.targets))/2,Z.pos=b(J-Z.size*Z.align,0,D-Z.size);for(q=x.length,_=!1;q–;)q>0&&x[q-1].pos+x[q-1].size>x[q].pos&&(x[q-1].size+=x[q].size,x[q-1].targets=x[q-1].targets.concat(x[q].targets),x[q-1].align=.5,x[q-1].pos+x[q-1].size>D&&(x[q-1].pos=D-x[q-1].size),x.splice(q,1),_=!0)}return V.apply(R,H),q=0,x.some(x=>{let b=0;return(x.targets||[]).some(()=>(R[q].pos=x.pos+b,void 0!==j&&Math.abs(R[q].pos-R[q].target)>j)?(R.slice(0,q+1).forEach(e=>delete e.pos),R.reducedLen=(R.reducedLen||D)-.1*D,R.reducedLen>.1*D&&e(R,D,j),!0):(b+=R[q].size,q++,!1))}),O(R,F),R},x}),b(x,”Core/Renderer/SVG/SVGElement.js”,[x[“Core/Animation/AnimationUtilities.js”],x[“Core/Color/Color.js”],x[“Core/Globals.js”],x[“Core/Utilities.js”]],function(e,x,b,E){let{animate:L,animObject:O,stop:D}=e,{deg2rad:j,doc:R,svg:z,SVG_NS:F,win:H}=b,{addEvent:U,attr:Y,createElement:V,crisp:q,css:K,defined:$,erase:_,extend:Z,fireEvent:J,isArray:tt,isFunction:te,isObject:ti,isString:ts,merge:to,objectEach:tr,pick:tn,pInt:ta,pushUnique:tl,replaceNested:th,syncTimeout:td,uniqueKey:tc}=E;let B=class B{_defaultGetter(e){let x=tn(this[e+”Value”],this[e],this.element?this.element.getAttribute(e):null,0);return/^[\-0-9\.]+$/.test(x)&&(x=parseFloat(x)),x}_defaultSetter(e,x,b){b.setAttribute(x,e)}add(e){let x,b=this.renderer,E=this.element;return e&&(this.parentGroup=e),void 0!==this.textStr&&”text”===this.element.nodeName&&b.buildText(this),this.added=!0,(!e||e.handleZ||this.zIndex)&&(x=this.zIndexSetter()),x||(e?e.element:b.box).appendChild(E),this.onAdd&&this.onAdd(),this}addClass(e,x){let b=x?””:this.attr(“class”)||””;return(e=(e||””).split(/ /g).reduce(function(e,x){return -1===b.indexOf(x)&&e.push(x),e},b?[b]:[]).join(” “))!==b&&this.attr(“class”,e),this}afterSetters(){this.doTransform&&(this.updateTransform(),this.doTransform=!1)}align(e,x,b,E=!0){let L,O,D,j,R={},z=this.renderer,F=z.alignedObjects,H=!!e;e?(this.alignOptions=e,this.alignByTranslate=x,this.alignTo=b):(e=this.alignOptions||{},x=this.alignByTranslate,b=this.alignTo);let U=!b||ts(b)?b||”renderer”:void 0;U&&(H&&tl(F,this),b=void 0);let Y=tn(b,z[U],z),V=e.align,q=e.verticalAlign;return L=(Y.x||0)+(e.x||0),O=(Y.y||0)+(e.y||0),”right”===V?D=1:”center”===V&&(D=2),D&&(L+=((Y.width||0)-(e.width||0))/D),R[x?”translateX”:”x”]=Math.round(L),”bottom”===q?j=1:”middle”===q&&(j=2),j&&(O+=((Y.height||0)-(e.height||0))/j),R[x?”translateY”:”y”]=Math.round(O),E&&(this[this.placed?”animate”:”attr”](R),this.placed=!0),this.alignAttr=R,this}alignSetter(e){let x={left:”start”,center:”middle”,right:”end”};x[e]&&(this.alignValue=e,this.element.setAttribute(“text-anchor”,x[e]))}animate(e,x,b){let E=O(tn(x,this.renderer.globalAnimation,!0)),D=E.defer;return R.hidden&&(E.duration=0),0!==E.duration?(b&&(E.complete=b),td(()=>{this.element&&L(this,e,E)},D)):(this.attr(e,void 0,b||E.complete),tr(e,function(e,x){E.step&&E.step.call(this,e,{prop:x,pos:1,elem:this})},this)),this}applyTextOutline(e){let x=this.element;-1!==e.indexOf(“contrast”)&&(e=e.replace(/contrast/g,this.renderer.getContrast(x.style.fill)));let E=e.split(” “),L=E[E.length-1],O=E[0];if(O&&”none”!==O&&b.svg){this.fakeTS=!0,O=O.replace(/(^[\d\.]+)(.*?)$/g,function(e,x,b){return 2*Number(x)+b}),this.removeTextOutline();let e=R.createElementNS(F,”tspan”);Y(e,{class:”highcharts-text-outline”,fill:L,stroke:L,”stroke-width”:O,”stroke-linejoin”:”round”});let b=x.querySelector(“textPath”)||x;[].forEach.call(b.childNodes,x=>{let b=x.cloneNode(!0);b.removeAttribute&&[“fill”,”stroke”,”stroke-width”,”stroke”].forEach(e=>b.removeAttribute(e)),e.appendChild(b)});let E=0;[].forEach.call(b.querySelectorAll(“text tspan”),e=>{E+=Number(e.getAttribute(“dy”))});let D=R.createElementNS(F,”tspan”);D.textContent=”\u200B”,Y(D,{x:Number(x.getAttribute(“x”)),dy:-E}),e.appendChild(D),b.insertBefore(e,b.firstChild)}}attr(e,x,b,E){let{element:L}=this,O=B.symbolCustomAttribs,j,R,z=this,F;return”string”==typeof e&&void 0!==x&&(j=e,(e={})[j]=x),”string”==typeof e?z=(this[e+”Getter”]||this._defaultGetter).call(this,e,L):(tr(e,function(x,b){F=!1,E||D(this,b),this.symbolName&&-1!==O.indexOf(b)&&(R||(this.symbolAttr(e),R=!0),F=!0),this.rotation&&(“x”===b||”y”===b)&&(this.doTransform=!0),F||(this[b+”Setter”]||this._defaultSetter).call(this,x,b,L)},this),this.afterSetters()),b&&b.call(this),z}clip(e){if(e&&!e.clipPath){let x=tc()+”-“,b=this.renderer.createElement(“clipPath”).attr({id:x}).add(this.renderer.defs);Z(e,{clipPath:b,id:x,count:0}),e.add(b)}return this.attr(“clip-path”,e?`url(${this.renderer.url}#${e.id})`:”none”)}crisp(e,x){x=Math.round(x||e.strokeWidth||0);let b=e.x||this.x||0,E=e.y||this.y||0,L=(e.width||this.width||0)+b,O=(e.height||this.height||0)+E,D=q(b,x),j=q(E,x);return Z(e,{x:D,y:j,width:q(L,x)-D,height:q(O,x)-j}),$(e.strokeWidth)&&(e.strokeWidth=x),e}complexColor(e,b,E){let L=this.renderer,O,D,j,R,z,F,H,U,Y,V,q=[],K;J(this.renderer,”complexColor”,{args:arguments},function(){if(e.radialGradient?D=”radialGradient”:e.linearGradient&&(D=”linearGradient”),D){if(j=e[D],z=L.gradients,F=e.stops,Y=E.radialReference,tt(j)&&(e[D]=j={x1:j[0],y1:j[1],x2:j[2],y2:j[3],gradientUnits:”userSpaceOnUse”}),”radialGradient”===D&&Y&&!$(j.gradientUnits)&&(R=j,j=to(j,L.getRadialAttr(Y,R),{gradientUnits:”userSpaceOnUse”})),tr(j,function(e,x){“id”!==x&&q.push(x,e)}),tr(F,function(e){q.push(e)}),z[q=q.join(“,”)])V=z[q].attr(“id”);else{j.id=V=tc();let e=z[q]=L.createElement(D).attr(j).add(L.defs);e.radAttr=R,e.stops=[],F.forEach(function(b){0===b[1].indexOf(“rgba”)?(H=(O=x.parse(b[1])).get(“rgb”),U=O.get(“a”)):(H=b[1],U=1);let E=L.createElement(“stop”).attr({offset:b[0],”stop-color”:H,”stop-opacity”:U}).add(e);e.stops.push(E)})}K=”url(“+L.url+”#”+V+”)”,E.setAttribute(b,K),E.gradient=q,e.toString=function(){return K}}})}css(e){let x=this.styles,b={},E=this.element,L,O=!x;if(x&&tr(e,function(e,E){x&&x[E]!==e&&(b[E]=e,O=!0)}),O){x&&(e=Z(x,b)),null===e.width||”auto”===e.width?delete this.textWidth:”text”===E.nodeName.toLowerCase()&&e.width&&(L=this.textWidth=ta(e.width)),Z(this.styles,e),L&&!z&&this.renderer.forExport&&delete e.width;let O=to(e);E.namespaceURI===this.SVG_NS&&([“textOutline”,”textOverflow”,”width”].forEach(e=>O&&delete O[e]),O.color&&(O.fill=O.color)),K(E,O)}return this.added&&(“text”===this.element.nodeName&&this.renderer.buildText(this),e.textOutline&&this.applyTextOutline(e.textOutline)),this}dashstyleSetter(e){let x,b=this[“stroke-width”];if(“inherit”===b&&(b=1),e=e&&e.toLowerCase()){let E=e.replace(“shortdashdotdot”,”3,1,1,1,1,1,”).replace(“shortdashdot”,”3,1,1,1″).replace(“shortdot”,”1,1,”).replace(“shortdash”,”3,1,”).replace(“longdash”,”8,3,”).replace(/dot/g,”1,3,”).replace(“dash”,”4,3,”).replace(/,$/,””).split(“,”);for(x=E.length;x–;)E[x]=””+ta(E[x])*tn(b,NaN);e=E.join(“,”).replace(/NaN/g,”none”),this.element.setAttribute(“stroke-dasharray”,e)}}destroy(){let e=this,x=e.element||{},b=e.renderer,E=x.ownerSVGElement,L=”SPAN”===x.nodeName&&e.parentGroup||void 0,O,j;if(x.onclick=x.onmouseout=x.onmouseover=x.onmousemove=x.point=null,D(e),e.clipPath&&E){let x=e.clipPath;[].forEach.call(E.querySelectorAll(“[clip-path],[CLIP-PATH]”),function(e){e.getAttribute(“clip-path”).indexOf(x.element.id)>-1&&e.removeAttribute(“clip-path”)}),e.clipPath=x.destroy()}if(e.connector=e.connector?.destroy(),e.stops){for(j=0;jx&&x.join?(b?e+” “:””)+x.join(” “):(x||””).toString(),””)),/(NaN| {2}|^$)/.test(e)&&(e=”M 0 0″),this[x]!==e&&(b.setAttribute(x,e),this[x]=e)}fillSetter(e,x,b){“string”==typeof e?b.setAttribute(x,e):e&&this.complexColor(e,x,b)}hrefSetter(e,x,b){b.setAttributeNS(“http://www.w3.org/1999/xlink”,x,e)}getBBox(e,x){let b,E,L,O,{alignValue:D,element:j,renderer:R,styles:z,textStr:F}=this,{cache:H,cacheKeys:U}=R,Y=j.namespaceURI===this.SVG_NS,V=tn(x,this.rotation,0),q=R.styledMode?j&&B.prototype.getStyle.call(j,”font-size”):z.fontSize;if($(F)&&(-1===(O=F.toString()).indexOf(“<")&&(O=O.replace(/[0-9]/g,"0")),O+=["",R.rootFontSize,q,V,this.textWidth,D,z.textOverflow,z.fontWeight].join(",")),O&&!e&&(b=H[O]),!b){if(Y||R.forExport){try{L=this.fakeTS&&function(e){let x=j.querySelector(".highcharts-text-outline");x&&K(x,{display:e})},te(L)&&L("none"),b=j.getBBox?Z({},j.getBBox()):{width:j.offsetWidth,height:j.offsetHeight,x:0,y:0},te(L)&&L("")}catch(e){}(!b||b.width<0)&&(b={x:0,y:0,width:0,height:0})}else b=this.htmlGetBBox();E=b.height,Y&&(b.height=E=({"11px,17":14,"13px,20":16})[`${q||""},${Math.round(E)}`]||E),V&&(b=this.getRotatedBox(b,V))}if(O&&(""===F||b.height>0)){for(;U.length>250;)delete H[U.shift()];H[O]||U.push(O),H[O]=b}return b}getRotatedBox(e,x){let{x:b,y:E,width:L,height:O}=e,{alignValue:D,translateY:R,rotationOriginX:z=0,rotationOriginY:F=0}=this,H={right:1,center:.5}[D||0]||0,U=Number(this.element.getAttribute(“y”)||0)-(R?0:E),Y=x*j,V=(x-90)*j,q=Math.cos(Y),K=Math.sin(Y),$=L*q,_=L*K,Z=Math.cos(V),J=Math.sin(V),[[tt,te],[ti,ts]]=[z,F].map(e=>[e-e*q,e*K]),to=b+H*(L-$)+tt+ts+U*Z,tr=to+$,tn=tr-O*Z,ta=tn-$,tl=E+U-H*_-te+ti+U*J,th=tl+_,td=th-O*J,tc=td-_,tp=Math.min(to,tr,tn,ta),tu=Math.min(tl,th,td,tc),tg=Math.max(to,tr,tn,ta)-tp,tm=Math.max(tl,th,td,tc)-tu;return{x:tp,y:tu,width:tg,height:tm}}getStyle(e){return H.getComputedStyle(this.element||this,””).getPropertyValue(e)}hasClass(e){return -1!==(“”+this.attr(“class”)).split(” “).indexOf(e)}hide(){return this.attr({visibility:”hidden”})}htmlGetBBox(){return{height:0,width:0,x:0,y:0}}constructor(e,x){this.onEvents={},this.opacity=1,this.SVG_NS=F,this.element=”span”===x||”body”===x?V(x):R.createElementNS(this.SVG_NS,x),this.renderer=e,this.styles={},J(this,”afterInit”)}on(e,x){let{onEvents:b}=this;return b[e]&&b[e](),b[e]=U(this.element,e,x),this}opacitySetter(e,x,b){let E=Number(Number(e).toFixed(3));this.opacity=E,b.setAttribute(x,E)}reAlign(){this.alignOptions?.width&&”left”!==this.alignOptions.align&&(this.alignOptions.width=this.getBBox().width,this.placed=!1,this.align())}removeClass(e){return this.attr(“class”,(“”+this.attr(“class”)).replace(ts(e)?RegExp(`(^| )${e}( |$)`):e,” “).replace(/ +/g,” “).trim())}removeTextOutline(){let e=this.element.querySelector(“tspan.highcharts-text-outline”);e&&this.safeRemoveChild(e)}safeRemoveChild(e){let x=e.parentNode;x&&x.removeChild(e)}setRadialReference(e){let x=this.element.gradient&&this.renderer.gradients[this.element.gradient];return this.element.radialReference=e,x&&x.radAttr&&x.animate(this.renderer.getRadialAttr(e,x.radAttr)),this}setTextPath(e,x){x=to(!0,{enabled:!0,attributes:{dy:-5,startOffset:”50%”,textAnchor:”middle”}},x);let b=this.renderer.url,E=this.text||this,L=E.textPath,{attributes:O,enabled:D}=x;if(e=e||L&&L.path,L&&L.undo(),e&&D){let x=U(E,”afterModifyTree”,x=>{if(e&&D){let L=e.attr(“id”);L||e.attr(“id”,L=tc());let D={x:0,y:0};$(O.dx)&&(D.dx=O.dx,delete O.dx),$(O.dy)&&(D.dy=O.dy,delete O.dy),E.attr(D),this.attr({transform:””}),this.box&&(this.box=this.box.destroy());let j=x.nodes.slice(0);x.nodes.length=0,x.nodes[0]={tagName:”textPath”,attributes:Z(O,{“text-anchor”:O.textAnchor,href:`${b}#${L}`}),children:j}}});E.textPath={path:e,undo:x}}else E.attr({dx:0,dy:0}),delete E.textPath;return this.added&&(E.textCache=””,this.renderer.buildText(E)),this}shadow(e){let{renderer:x}=this,b=to(this.parentGroup?.rotation===90?{offsetX:-1,offsetY:-1}:{},ti(e)?e:{}),E=x.shadowDefinition(b);return this.attr({filter:e?`url(${x.url}#${E})`:”none”})}show(e=!0){return this.attr({visibility:e?”inherit”:”visible”})}”stroke-widthSetter”(e,x,b){this[x]=e,b.setAttribute(x,e)}strokeWidth(){if(!this.renderer.styledMode)return this[“stroke-width”]||0;let e=this.getStyle(“stroke-width”),x=0,b;return/px$/.test(e)?x=ta(e):””!==e&&(Y(b=R.createElementNS(F,”rect”),{width:e,”stroke-width”:0}),this.element.parentNode.appendChild(b),x=b.getBBox().width,b.parentNode.removeChild(b)),x}symbolAttr(e){let x=this;B.symbolCustomAttribs.forEach(function(b){x[b]=tn(e[b],x[b])}),x.attr({d:x.renderer.symbols[x.symbolName](x.x,x.y,x.width,x.height,x)})}textSetter(e){e!==this.textStr&&(delete this.textPxLength,this.textStr=e,this.added&&this.renderer.buildText(this),this.reAlign())}titleSetter(e){let x=this.element,b=x.getElementsByTagName(“title”)[0]||R.createElementNS(this.SVG_NS,”title”);x.insertBefore?x.insertBefore(b,x.firstChild):x.appendChild(b),b.textContent=th(tn(e,””),[/<[^>]*>/g,””]).replace(/</g,”<").replace(/>/g,">“)}toFront(){let e=this.element;return e.parentNode.appendChild(e),this}translate(e,x){return this.attr({translateX:e,translateY:x})}updateTransform(e=”transform”){let{element:x,matrix:b,rotation:E=0,rotationOriginX:L,rotationOriginY:O,scaleX:D,scaleY:j,translateX:R=0,translateY:z=0}=this,F=[“translate(“+R+”,”+z+”)”];$(b)&&F.push(“matrix(“+b.join(“,”)+”)”),E&&(F.push(“rotate(“+E+” “+tn(L,x.getAttribute(“x”),0)+” “+tn(O,x.getAttribute(“y”)||0)+”)”),this.text?.element.tagName===”SPAN”&&this.text.attr({rotation:E,rotationOriginX:(L||0)-this.padding,rotationOriginY:(O||0)-this.padding})),($(D)||$(j))&&F.push(“scale(“+tn(D,1)+” “+tn(j,1)+”)”),F.length&&!(this.text||this).textPath&&x.setAttribute(e,F.join(” “))}visibilitySetter(e,x,b){“inherit”===e?b.removeAttribute(x):this[x]!==e&&b.setAttribute(x,e),this[x]=e}xGetter(e){return”circle”===this.element.nodeName&&(“x”===e?e=”cx”:”y”===e&&(e=”cy”)),this._defaultGetter(e)}zIndexSetter(e,x){let b=this.renderer,E=this.parentGroup,L=(E||b).element||b.box,O=this.element,D=L===b.box,j,R,z,F=!1,H,U=this.added,Y;if($(e)?(O.setAttribute(“data-z-index”,e),e*=1,this[x]===e&&(U=!1)):$(this[x])&&O.removeAttribute(“data-z-index”),this[x]=e,U){for((e=this.zIndex)&&E&&(E.handleZ=!0),Y=(j=L.childNodes).length-1;Y>=0&&!F;Y–)H=!$(z=(R=j[Y]).getAttribute(“data-z-index”)),R!==O&&(e<0&&H&&!D&&!Y?(L.insertBefore(O,j[Y]),F=!0):(ta(z)<=e||H&&(!$(e)||e>=0))&&(L.insertBefore(O,j[Y+1]),F=!0));F||(L.insertBefore(O,j[3*!!D]),F=!0)}return F}};return B.symbolCustomAttribs=[“anchorX”,”anchorY”,”clockwise”,”end”,”height”,”innerR”,”r”,”start”,”width”,”x”,”y”],B.prototype.strokeSetter=B.prototype.fillSetter,B.prototype.yGetter=B.prototype.xGetter,B.prototype.matrixSetter=B.prototype.rotationOriginXSetter=B.prototype.rotationOriginYSetter=B.prototype.rotationSetter=B.prototype.scaleXSetter=B.prototype.scaleYSetter=B.prototype.translateXSetter=B.prototype.translateYSetter=B.prototype.verticalAlignSetter=function(e,x){this[x]=e,this.doTransform=!0},B}),b(x,”Core/Renderer/SVG/SVGLabel.js”,[x[“Core/Renderer/SVG/SVGElement.js”],x[“Core/Utilities.js”]],function(e,x){let{defined:b,extend:E,isNumber:L,merge:O,pick:D,removeEvent:j}=x;let l=class l extends e{constructor(e,x,b,E,L,O,D,j,R,z){let F;super(e,”g”),this.paddingLeftSetter=this.paddingSetter,this.paddingRightSetter=this.paddingSetter,this.textStr=x,this.x=b,this.y=E,this.anchorX=O,this.anchorY=D,this.baseline=R,this.className=z,this.addClass(“button”===z?”highcharts-no-tooltip”:”highcharts-label”),z&&this.addClass(“highcharts-“+z),this.text=e.text(void 0,0,0,j).attr({zIndex:1}),”string”==typeof L&&((F=/^url\((.*?)\)$/.test(L))||this.renderer.symbols[L])&&(this.symbolKey=L),this.bBox=l.emptyBBox,this.padding=3,this.baselineOffset=0,this.needsBox=e.styledMode||F,this.deferredAttr={},this.alignFactor=0}alignSetter(e){let x={left:0,center:.5,right:1}[e];x!==this.alignFactor&&(this.alignFactor=x,this.bBox&&L(this.xSetting)&&this.attr({x:this.xSetting}))}anchorXSetter(e,x){this.anchorX=e,this.boxAttr(x,Math.round(e)-this.getCrispAdjust()-this.xSetting)}anchorYSetter(e,x){this.anchorY=e,this.boxAttr(x,e-this.ySetting)}boxAttr(e,x){this.box?this.box.attr(e,x):this.deferredAttr[e]=x}css(x){if(x){let e={};x=O(x),l.textProps.forEach(b=>{void 0!==x[b]&&(e[b]=x[b],delete x[b])}),this.text.css(e),”fontSize”in e||”fontWeight”in e?this.updateTextPadding():(“width”in e||”textOverflow”in e)&&this.updateBoxSize()}return e.prototype.css.call(this,x)}destroy(){j(this.element,”mouseenter”),j(this.element,”mouseleave”),this.text&&this.text.destroy(),this.box&&(this.box=this.box.destroy()),e.prototype.destroy.call(this)}fillSetter(e,x){e&&(this.needsBox=!0),this.fill=e,this.boxAttr(x,e)}getBBox(e,x){this.textStr&&0===this.bBox.width&&0===this.bBox.height&&this.updateBoxSize();let{padding:b,height:E=0,translateX:L=0,translateY:O=0,width:j=0}=this,R=D(this.paddingLeft,b),z=x??(this.rotation||0),F={width:j,height:E,x:L+this.bBox.x-R,y:O+this.bBox.y-b+this.baselineOffset};return z&&(F=this.getRotatedBox(F,z)),F}getCrispAdjust(){return(this.renderer.styledMode&&this.box?this.box.strokeWidth():this[“stroke-width”]?parseInt(this[“stroke-width”],10):0)%2/2}heightSetter(e){this.heightSetting=e}onAdd(){this.text.add(this),this.attr({text:D(this.textStr,””),x:this.x||0,y:this.y||0}),this.box&&b(this.anchorX)&&this.attr({anchorX:this.anchorX,anchorY:this.anchorY})}paddingSetter(e,x){L(e)?e!==this[x]&&(this[x]=e,this.updateTextPadding()):this[x]=void 0}rSetter(e,x){this.boxAttr(x,e)}strokeSetter(e,x){this.stroke=e,this.boxAttr(x,e)}”stroke-widthSetter”(e,x){e&&(this.needsBox=!0),this[“stroke-width”]=e,this.boxAttr(x,e)}”text-alignSetter”(e){this.textAlign=e}textSetter(e){void 0!==e&&this.text.attr({text:e}),this.updateTextPadding(),this.reAlign()}updateBoxSize(){let e,x=this.text,O={},D=this.padding,j=this.bBox=(!L(this.widthSetting)||!L(this.heightSetting)||this.textAlign)&&b(x.textStr)?x.getBBox(void 0,0):l.emptyBBox;this.width=this.getPaddedWidth(),this.height=(this.heightSetting||j.height||0)+2*D;let R=this.renderer.fontMetrics(x);if(this.baselineOffset=D+Math.min((this.text.firstLineMetrics||R).b,j.height||1/0),this.heightSetting&&(this.baselineOffset+=(this.heightSetting-R.h)/2),this.needsBox&&!x.textPath){if(!this.box){let e=this.box=this.symbolKey?this.renderer.symbol(this.symbolKey):this.renderer.rect();e.addClass((“button”===this.className?””:”highcharts-label-box”)+(this.className?” highcharts-“+this.className+”-box”:””)),e.add(this)}O.x=e=this.getCrispAdjust(),O.y=(this.baseline?-this.baselineOffset:0)+e,O.width=Math.round(this.width),O.height=Math.round(this.height),this.box.attr(E(O,this.deferredAttr)),this.deferredAttr={}}}updateTextPadding(){let e=this.text;if(!e.textPath){this.updateBoxSize();let x=this.baseline?0:this.baselineOffset,E=D(this.paddingLeft,this.padding);b(this.widthSetting)&&this.bBox&&(“center”===this.textAlign||”right”===this.textAlign)&&(E+=({center:.5,right:1})[this.textAlign]*(this.widthSetting-this.bBox.width)),(E!==e.x||x!==e.y)&&(e.attr(“x”,E),e.hasBoxWidthChanged&&(this.bBox=e.getBBox(!0)),void 0!==x&&e.attr(“y”,x)),e.x=E,e.y=x}}widthSetter(e){this.widthSetting=L(e)?e:void 0}getPaddedWidth(){let e=this.padding,x=D(this.paddingLeft,e),b=D(this.paddingRight,e);return(this.widthSetting||this.bBox.width||0)+x+b}xSetter(e){this.x=e,this.alignFactor&&(e-=this.alignFactor*this.getPaddedWidth(),this[“forceAnimate:x”]=!0),this.xSetting=Math.round(e),this.attr(“translateX”,this.xSetting)}ySetter(e){this.ySetting=this.y=Math.round(e),this.attr(“translateY”,this.ySetting)}};return l.emptyBBox={width:0,height:0,x:0,y:0},l.textProps=[“color”,”direction”,”fontFamily”,”fontSize”,”fontStyle”,”fontWeight”,”lineHeight”,”textAlign”,”textDecoration”,”textOutline”,”textOverflow”,”whiteSpace”,”width”],l}),b(x,”Core/Renderer/SVG/Symbols.js”,[x[“Core/Utilities.js”]],function(e){let{defined:x,isNumber:b,pick:E}=e;function L(e,b,L,O,D){let j=[];if(D){let R=D.start||0,z=E(D.r,L),F=E(D.r,O||L),H=2e-4/Math.max(z,1),U=Math.abs((D.end||0)-R-2*Math.PI)0&&F0)return H;if(e+z>E-R)if(F>x+R&&Fx+R&&F0){let b=FL&&zR&&H.splice(1,1,[“L”,z-6,x],[“L”,z,x-6],[“L”,z+6,x],[“L”,E-j,x]);return H},circle:function(e,x,b,E){return L(e+b/2,x+E/2,b/2,E/2,{start:.5*Math.PI,end:2.5*Math.PI,open:!1})},diamond:function(e,x,b,E){return[[“M”,e+b/2,x],[“L”,e+b,x+E/2],[“L”,e+b/2,x+E],[“L”,e,x+E/2],[“Z”]]},rect:O,roundedRect:D,square:O,triangle:function(e,x,b,E){return[[“M”,e+b/2,x],[“L”,e+b,x+E],[“L”,e,x+E],[“Z”]]},”triangle-down”:function(e,x,b,E){return[[“M”,e,x],[“L”,e+b,x],[“L”,e+b/2,x+E],[“Z”]]}}}),b(x,”Core/Renderer/SVG/TextBuilder.js”,[x[“Core/Renderer/HTML/AST.js”],x[“Core/Globals.js”],x[“Core/Utilities.js”]],function(e,x,b){let{doc:E,SVG_NS:L,win:O}=x,{attr:D,extend:j,fireEvent:R,isString:z,objectEach:F,pick:H}=b;return class{constructor(e){let x=e.styles;this.renderer=e.renderer,this.svgElement=e,this.width=e.textWidth,this.textLineHeight=x&&x.lineHeight,this.textOutline=x&&x.textOutline,this.ellipsis=!!(x&&”ellipsis”===x.textOverflow),this.noWrap=!!(x&&”nowrap”===x.whiteSpace)}buildSVG(){let x=this.svgElement,b=x.element,L=x.renderer,O=H(x.textStr,””).toString(),D=-1!==O.indexOf(“<"),j=b.childNodes,R=!x.added&&L.box,F=[O,this.ellipsis,this.noWrap,this.textLineHeight,this.textOutline,x.getStyle("font-size"),this.width].join(",");if(F!==x.textCache){x.textCache=F,delete x.actualWidth;for(let e=j.length;e--;)b.removeChild(j[e]);if(D||this.ellipsis||this.width||x.textPath||-1!==O.indexOf(" ")&&(!this.noWrap||//g.test(O))){if(“”!==O){R&&R.appendChild(b);let E=new e(O);this.modifyTree(E.nodes),E.addToDOM(b),this.modifyDOM(),this.ellipsis&&-1!==(b.textContent||””).indexOf(“\u2026”)&&x.attr(“title”,this.unescapeEntities(x.textStr||””,[“<“,”>”])),R&&R.removeChild(b)}}else b.appendChild(E.createTextNode(this.unescapeEntities(O)));z(this.textOutline)&&x.applyTextOutline&&x.applyTextOutline(this.textOutline)}}modifyDOM(){let e,x=this.svgElement,b=D(x.element,”x”);for(x.firstLineMetrics=void 0;e=x.element.firstChild;)if(/^[\s\u200B]*$/.test(e.textContent||” “))x.element.removeChild(e);else break;[].forEach.call(x.element.querySelectorAll(“tspan.highcharts-br”),(e,E)=>{e.nextSibling&&e.previousSibling&&(0===E&&1===e.previousSibling.nodeType&&(x.firstLineMetrics=x.renderer.fontMetrics(e.previousSibling)),D(e,{dy:this.getLineHeight(e.nextSibling),x:b}))});let j=this.width||0;if(!j)return;let R=(e,O)=>{let R=e.textContent||””,z=R.replace(/([^\^])-/g,”$1- “).split(” “),F=!this.noWrap&&(z.length>1||x.element.childNodes.length>1),H=this.getLineHeight(O),U=0,Y=x.actualWidth;if(this.ellipsis)R&&this.truncate(e,R,void 0,0,Math.max(0,j-.8*H),(e,x)=>e.substring(0,x)+”\u2026″);else if(F){let R=[],F=[];for(;O.firstChild&&O.firstChild!==e;)F.push(O.firstChild),O.removeChild(O.firstChild);for(;z.length;)z.length&&!this.noWrap&&U>0&&(R.push(e.textContent||””),e.textContent=z.join(” “).replace(/- /g,”-“)),this.truncate(e,void 0,z,0===U&&Y||0,j,(e,x)=>z.slice(0,x).join(” “).replace(/- /g,”-“)),Y=x.actualWidth,U++;F.forEach(x=>{O.insertBefore(x,e)}),R.forEach(x=>{O.insertBefore(E.createTextNode(x),e);let j=E.createElementNS(L,”tspan”);j.textContent=”\u200B”,D(j,{dy:H,x:b}),O.insertBefore(j,e)})}},z=e=>{[].slice.call(e.childNodes).forEach(b=>{b.nodeType===O.Node.TEXT_NODE?R(b,e):(-1!==b.className.baseVal.indexOf(“highcharts-br”)&&(x.actualWidth=0),z(b))})};z(x.element)}getLineHeight(e){let x=e.nodeType===O.Node.TEXT_NODE?e.parentElement:e;return this.textLineHeight?parseInt(this.textLineHeight.toString(),10):this.renderer.fontMetrics(x||this.svgElement.element).h}modifyTree(e){let x=(b,E)=>{let{attributes:L={},children:O,style:D={},tagName:R}=b,z=this.renderer.styledMode;if(“b”===R||”strong”===R?z?L.class=”highcharts-strong”:D.fontWeight=”bold”:(“i”===R||”em”===R)&&(z?L.class=”highcharts-emphasized”:D.fontStyle=”italic”),D&&D.color&&(D.fill=D.color),”br”===R){L.class=”highcharts-br”,b.textContent=”\u200B”;let x=e[E+1];x&&x.textContent&&(x.textContent=x.textContent.replace(/^ +/gm,””))}else”a”===R&&O&&O.some(e=>”#text”===e.tagName)&&(b.children=[{children:O,tagName:”tspan”}]);”#text”!==R&&”a”!==R&&(b.tagName=”tspan”),j(b,{attributes:L,style:D}),O&&O.filter(e=>”#text”!==e.tagName).forEach(x)};e.forEach(x),R(this.svgElement,”afterModifyTree”,{nodes:e})}truncate(e,x,b,E,L,O){let D,j,R=this.svgElement,{rotation:z}=R,F=[],H=+!!b,U=(x||b||””).length,Y=U,V=function(x,L){let O=L||x,D=e.parentNode;if(D&&void 0===F[O]&&D.getSubStringLength)try{F[O]=E+D.getSubStringLength(0,b?O+1:O)}catch(e){}return F[O]};if(R.rotation=0,E+(j=V(e.textContent.length))>L){for(;H<=U;)Y=Math.ceil((H+U)/2),b&&(D=O(b,Y)),j=V(Y,D&&D.length-1),H===U?H=U+1:j>L?U=Y-1:H=Y;0===U?e.textContent=””:x&&U===x.length-1||(e.textContent=D||O(x||b,Y))}b&&b.splice(0,Y),R.actualWidth=j,R.rotation=z}unescapeEntities(e,x){return F(this.renderer.escapes,function(b,E){x&&-1!==x.indexOf(b)||(e=e.toString().replace(RegExp(b,”g”),E))}),e}}}),b(x,”Core/Renderer/SVG/SVGRenderer.js”,[x[“Core/Renderer/HTML/AST.js”],x[“Core/Defaults.js”],x[“Core/Color/Color.js”],x[“Core/Globals.js”],x[“Core/Renderer/RendererRegistry.js”],x[“Core/Renderer/SVG/SVGElement.js”],x[“Core/Renderer/SVG/SVGLabel.js”],x[“Core/Renderer/SVG/Symbols.js”],x[“Core/Renderer/SVG/TextBuilder.js”],x[“Core/Utilities.js”]],function(e,x,b,E,L,O,D,j,R,z){let F,{defaultOptions:H}=x,{charts:U,deg2rad:Y,doc:V,isFirefox:q,isMS:K,isWebKit:$,noop:_,SVG_NS:Z,symbolSizes:J,win:tt}=E,{addEvent:te,attr:ti,createElement:ts,crisp:to,css:tr,defined:tn,destroyObjectProperties:ta,extend:tl,isArray:th,isNumber:td,isObject:tc,isString:tp,merge:tu,pick:tg,pInt:tm,replaceNested:tf,uniqueKey:tx}=z;let N=class N{constructor(e,x,b,E,L,O,D){let j,R,z=this.createElement(“svg”).attr({version:”1.1″,class:”highcharts-root”}),F=z.element;D||z.css(this.getStyle(E||{})),e.appendChild(F),ti(e,”dir”,”ltr”),-1===e.innerHTML.indexOf(“xmlns”)&&ti(F,”xmlns”,this.SVG_NS),this.box=F,this.boxWrapper=z,this.alignedObjects=[],this.url=this.getReferenceURL(),this.createElement(“desc”).add().element.appendChild(V.createTextNode(“Created with Highcharts 11.4.3”)),this.defs=this.createElement(“defs”).add(),this.allowHTML=O,this.forExport=L,this.styledMode=D,this.gradients={},this.cache={},this.cacheKeys=[],this.imgCount=0,this.rootFontSize=z.getStyle(“font-size”),this.setSize(x,b,!1),q&&e.getBoundingClientRect&&((j=function(){tr(e,{left:0,top:0}),R=e.getBoundingClientRect(),tr(e,{left:Math.ceil(R.left)-R.left+”px”,top:Math.ceil(R.top)-R.top+”px”})})(),this.unSubPixelFix=te(tt,”resize”,j))}definition(x){return new e([x]).addToDOM(this.defs.element)}getReferenceURL(){if((q||$)&&V.getElementsByTagName(“base”).length){if(!tn(F)){let x=tx(),b=new e([{tagName:”svg”,attributes:{width:8,height:8},children:[{tagName:”defs”,children:[{tagName:”clipPath”,attributes:{id:x},children:[{tagName:”rect”,attributes:{width:4,height:4}}]}]},{tagName:”rect”,attributes:{id:”hitme”,width:8,height:8,”clip-path”:`url(#${x})`,fill:”rgba(0,0,0,0.001)”}}]}]).addToDOM(V.body);tr(b,{position:”fixed”,top:0,left:0,zIndex:9e5});let E=V.elementFromPoint(6,6);F=”hitme”===(E&&E.id),V.body.removeChild(b)}if(F)return tf(tt.location.href.split(“#”)[0],[/<[^>]*>/g,””],[/([\(‘\)])/g,”\\$1″],[/ /g,”%20″])}return””}getStyle(e){return this.style=tl({fontFamily:”Helvetica, Arial, sans-serif”,fontSize:”1rem”},e),this.style}setStyle(e){this.boxWrapper.css(this.getStyle(e))}isHidden(){return!this.boxWrapper.getBBox().width}destroy(){let e=this.defs;return this.box=null,this.boxWrapper=this.boxWrapper.destroy(),ta(this.gradients||{}),this.gradients=null,this.defs=e.destroy(),this.unSubPixelFix&&this.unSubPixelFix(),this.alignedObjects=null,null}createElement(e){return new this.Element(this,e)}getRadialAttr(e,x){return{cx:e[0]-e[2]/2+(x.cx||0)*e[2],cy:e[1]-e[2]/2+(x.cy||0)*e[2],r:(x.r||0)*e[2]}}shadowDefinition(e){let x=[`highcharts-drop-shadow-${this.chartIndex}`,…Object.keys(e).map(x=>`${x}-${e[x]}`)].join(“-“).toLowerCase().replace(/[^a-z0-9\-]/g,””),b=tu({color:”#000000″,offsetX:1,offsetY:1,opacity:.15,width:5},e);return this.defs.element.querySelector(`#${x}`)||this.definition({tagName:”filter”,attributes:{id:x,filterUnits:b.filterUnits},children:[{tagName:”feDropShadow”,attributes:{dx:b.offsetX,dy:b.offsetY,”flood-color”:b.color,”flood-opacity”:Math.min(5*b.opacity,1),stdDeviation:b.width/2}}]}),x}buildText(e){new R(e).buildSVG()}getContrast(e){let x=b.parse(e).rgba.map(e=>{let x=e/255;return x<=.03928?x/12.92:Math.pow((x+.055)/1.055,2.4)}),E=.2126*x[0]+.7152*x[1]+.0722*x[2];return 1.05/(E+.05)>(E+.05)/.05?”#FFFFFF”:”#000000″}button(x,b,E,L,O={},D,j,R,z,F){let U=this.label(x,b,E,z,void 0,void 0,F,void 0,”button”),Y=this.styledMode,V=arguments,q=0;O=tu(H.global.buttonTheme,O),Y&&(delete O.fill,delete O.stroke,delete O[“stroke-width”]);let $=O.states||{},_=O.style||{};delete O.states,delete O.style;let Z=[e.filterUserAttributes(O)],J=[_];return Y||[“hover”,”select”,”disabled”].forEach((x,b)=>{Z.push(tu(Z[0],e.filterUserAttributes(V[b+5]||$[x]||{}))),J.push(Z[b+1].style),delete Z[b+1].style}),te(U.element,K?”mouseover”:”mouseenter”,function(){3!==q&&U.setState(1)}),te(U.element,K?”mouseout”:”mouseleave”,function(){3!==q&&U.setState(q)}),U.setState=(e=0)=>{if(1!==e&&(U.state=q=e),U.removeClass(/highcharts-button-(normal|hover|pressed|disabled)/).addClass(“highcharts-button-“+[“normal”,”hover”,”pressed”,”disabled”][e]),!Y){U.attr(Z[e]);let x=J[e];tc(x)&&U.css(x)}},U.attr(Z[0]),!Y&&(U.css(tl({cursor:”default”},_)),F&&U.text.css({pointerEvents:”none”})),U.on(“touchstart”,e=>e.stopPropagation()).on(“click”,function(e){3!==q&&L.call(U,e)})}crispLine(e,x){let[b,E]=e;return tn(b[1])&&b[1]===E[1]&&(b[1]=E[1]=to(b[1],x)),tn(b[2])&&b[2]===E[2]&&(b[2]=E[2]=to(b[2],x)),e}path(e){let x=this.styledMode?{}:{fill:”none”};return th(e)?x.d=e:tc(e)&&tl(x,e),this.createElement(“path”).attr(x)}circle(e,x,b){let E=tc(e)?e:void 0===e?{}:{x:e,y:x,r:b},L=this.createElement(“circle”);return L.xSetter=L.ySetter=function(e,x,b){b.setAttribute(“c”+x,e)},L.attr(E)}arc(e,x,b,E,L,O){let D;tc(e)?(x=(D=e).y,b=D.r,E=D.innerR,L=D.start,O=D.end,e=D.x):D={innerR:E,start:L,end:O};let j=this.symbol(“arc”,e,x,b,b,D);return j.r=b,j}rect(e,x,b,E,L,O){let D=tc(e)?e:void 0===e?{}:{x:e,y:x,r:L,width:Math.max(b||0,0),height:Math.max(E||0,0)},j=this.createElement(“rect”);return this.styledMode||(void 0!==O&&(D[“stroke-width”]=O,tl(D,j.crisp(D))),D.fill=”none”),j.rSetter=function(e,x,b){j.r=e,ti(b,{rx:e,ry:e})},j.rGetter=function(){return j.r||0},j.attr(D)}roundedRect(e){return this.symbol(“roundedRect”).attr(e)}setSize(e,x,b){this.width=e,this.height=x,this.boxWrapper.animate({width:e,height:x},{step:function(){this.attr({viewBox:”0 0 “+this.attr(“width”)+” “+this.attr(“height”)})},duration:tg(b,!0)?void 0:0}),this.alignElements()}g(e){let x=this.createElement(“g”);return e?x.attr({class:”highcharts-“+e}):x}image(e,x,b,E,L,O){let D={preserveAspectRatio:”none”};td(x)&&(D.x=x),td(b)&&(D.y=b),td(E)&&(D.width=E),td(L)&&(D.height=L);let j=this.createElement(“image”).attr(D),R=function(x){j.attr({href:e}),O.call(j,x)};if(O){j.attr({href:”data:image/gif;base64,R0lGODlhAQABAAAAACH5BAEKAAEALAAAAAABAAEAAAICTAEAOw==”});let x=new tt.Image;te(x,”load”,R),x.src=e,x.complete&&R({})}else j.attr({href:e});return j}symbol(e,x,b,E,L,O){let D,j,R,z,F=this,H=/^url\((.*?)\)$/,Y=H.test(e),q=!Y&&(this.symbols[e]?e:”circle”),K=q&&this.symbols[q];if(K)”number”==typeof x&&(j=K.call(this.symbols,x||0,b||0,E||0,L||0,O)),D=this.path(j),F.styledMode||D.attr(“fill”,”none”),tl(D,{symbolName:q||void 0,x:x,y:b,width:E,height:L}),O&&tl(D,O);else if(Y){R=e.match(H)[1];let E=D=this.image(R);E.imgwidth=tg(O&&O.width,J[R]&&J[R].width),E.imgheight=tg(O&&O.height,J[R]&&J[R].height),z=e=>e.attr({width:e.width,height:e.height}),[“width”,”height”].forEach(e=>{E[`${e}Setter`]=function(e,x){this[x]=e;let{alignByTranslate:b,element:E,width:L,height:D,imgwidth:j,imgheight:R}=this,z=”width”===x?j:R,F=1;O&&”within”===O.backgroundSize&&L&&D&&j&&R?(F=Math.min(L/j,D/R),ti(E,{width:Math.round(j*F),height:Math.round(R*F)})):E&&z&&E.setAttribute(x,z),!b&&j&&R&&this.translate(((L||0)-j*F)/2,((D||0)-R*F)/2)}}),tn(x)&&E.attr({x:x,y:b}),E.isImg=!0,tn(E.imgwidth)&&tn(E.imgheight)?z(E):(E.attr({width:0,height:0}),ts(“img”,{onload:function(){let e=U[F.chartIndex];0===this.width&&(tr(this,{position:”absolute”,top:”-999em”}),V.body.appendChild(this)),J[R]={width:this.width,height:this.height},E.imgwidth=this.width,E.imgheight=this.height,E.element&&z(E),this.parentNode&&this.parentNode.removeChild(this),F.imgCount–,F.imgCount||!e||e.hasLoaded||e.onload()},src:R}),this.imgCount++)}return D}clipRect(e,x,b,E){return this.rect(e,x,b,E,0)}text(e,x,b,E){let L={};if(E&&(this.allowHTML||!this.forExport))return this.html(e,x,b);L.x=Math.round(x||0),b&&(L.y=Math.round(b)),tn(e)&&(L.text=e);let O=this.createElement(“text”).attr(L);return E&&(!this.forExport||this.allowHTML)||(O.xSetter=function(e,x,b){let E=b.getElementsByTagName(“tspan”),L=b.getAttribute(x);for(let b=0,O;be.align())}};return tl(N.prototype,{Element:O,SVG_NS:Z,escapes:{“&”:”&”,”<":"<",">“:”>”,”‘”:”'”,'”‘:”"”},symbols:j,draw:_}),L.registerRendererType(“svg”,N,!0),N}),b(x,”Core/Renderer/HTML/HTMLElement.js”,[x[“Core/Renderer/HTML/AST.js”],x[“Core/Globals.js”],x[“Core/Renderer/SVG/SVGElement.js”],x[“Core/Utilities.js”]],function(e,x,b,E){let{composed:L}=x,{attr:O,css:D,createElement:j,defined:R,extend:z,pInt:F,pushUnique:H}=E;function U(e,x,E){let L=this.div?.style||E.style;b.prototype[`${x}Setter`].call(this,e,x,E),L&&(L[x]=e)}let Y=(e,x)=>{if(!e.div){let E=O(e.element,”class”),L=e.css,D=j(“div”,E?{className:E}:void 0,{position:”absolute”,left:`${e.translateX||0}px`,top:`${e.translateY||0}px`,…e.styles,display:e.display,opacity:e.opacity,visibility:e.visibility},e.parentGroup?.div||x);e.classSetter=(e,x,b)=>{b.setAttribute(“class”,e),D.className=e},e.translateXSetter=e.translateYSetter=(x,b)=>{e[b]=x,D.style[“translateX”===b?”left”:”top”]=`${x}px`,e.doTransform=!0},e.opacitySetter=e.visibilitySetter=U,e.css=x=>(L.call(e,x),x.cursor&&(D.style.cursor=x.cursor),x.pointerEvents&&(D.style.pointerEvents=x.pointerEvents),e),e.on=function(){return b.prototype.on.apply({element:D,onEvents:e.onEvents},arguments),e},e.div=D}return e.div};let g=class g extends b{static compose(e){H(L,this.compose)&&(e.prototype.html=function(e,x,b){return new g(this,”span”).attr({text:e,x:Math.round(x),y:Math.round(b)})})}constructor(e,x){super(e,x),this.css({position:”absolute”,…e.styledMode?{}:{fontFamily:e.style.fontFamily,fontSize:e.style.fontSize}}),this.element.style.whiteSpace=”nowrap”}getSpanCorrection(e,x,b){this.xCorr=-e*b,this.yCorr=-x}css(e){let x,{element:b}=this,E=”SPAN”===b.tagName&&e&&”width”in e,L=E&&e.width;return E&&(delete e.width,this.textWidth=F(L)||void 0,x=!0),e?.textOverflow===”ellipsis”&&(e.whiteSpace=”nowrap”,e.overflow=”hidden”),z(this.styles,e),D(b,e),x&&this.updateTransform(),this}htmlGetBBox(){let{element:e}=this;return{x:e.offsetLeft,y:e.offsetTop,width:e.offsetWidth,height:e.offsetHeight}}updateTransform(){if(!this.added){this.alignOnAdd=!0;return}let{element:e,renderer:x,rotation:b,rotationOriginX:E,rotationOriginY:L,styles:O,textAlign:j=”left”,textWidth:z,translateX:F=0,translateY:H=0,x:U=0,y:Y=0}=this,V=O.whiteSpace;if(D(e,{marginLeft:`${F}px`,marginTop:`${H}px`}),”SPAN”===e.tagName){let O=[b,j,e.innerHTML,z,this.textAlign].join(“,”),F=-(this.parentGroup?.padding*1)||0,H,q=!1;if(z!==this.oldTextWidth){let x=this.textPxLength?this.textPxLength:(D(e,{width:””,whiteSpace:V||”nowrap”}),e.offsetWidth),E=z||0;(E>this.oldTextWidth||x>E)&&(/[ \-]/.test(e.textContent||e.innerText)||”ellipsis”===e.style.textOverflow)&&(D(e,{width:x>E||b?z+”px”:”auto”,display:”block”,whiteSpace:V||”normal”}),this.oldTextWidth=z,q=!0)}this.hasBoxWidthChanged=q,O!==this.cTT&&(H=x.fontMetrics(e).b,R(b)&&(b!==(this.oldRotation||0)||j!==this.oldAlign)&&this.setSpanRotation(b,F,F),this.getSpanCorrection(!R(b)&&this.textPxLength||e.offsetWidth,H,{left:0,center:.5,right:1}[j]));let{xCorr:K=0,yCorr:$=0}=this,_=(E??U)-K-U-F,Z=(L??Y)-$-Y-F;D(e,{left:`${U+K}px`,top:`${Y+$}px`,transformOrigin:`${_}px ${Z}px`}),this.cTT=O,this.oldRotation=b,this.oldAlign=j}}setSpanRotation(e,x,b){D(this.element,{transform:`rotate(${e}deg)`,transformOrigin:`${x}% ${b}px`})}add(e){let x,b=this.renderer.box.parentNode,E=[];if(this.parentGroup=e,e&&!(x=e.div)){let L=e;for(;L;)E.push(L),L=L.parentGroup;for(let e of E.reverse())x=Y(e,b)}return(x||b).appendChild(this.element),this.added=!0,this.alignOnAdd&&this.updateTransform(),this}textSetter(x){x!==this.textStr&&(delete this.bBox,delete this.oldTextWidth,e.setElementHTML(this.element,x??””),this.textStr=x,this.doTransform=!0)}alignSetter(e){this.alignValue=this.textAlign=e,this.doTransform=!0}xSetter(e,x){this[x]=e,this.doTransform=!0}};let V=g.prototype;return V.visibilitySetter=V.opacitySetter=U,V.ySetter=V.rotationSetter=V.rotationOriginXSetter=V.rotationOriginYSetter=V.xSetter,g}),b(x,”Core/Axis/AxisDefaults.js”,[],function(){var e,x;return(x=e||(e={})).xAxis={alignTicks:!0,allowDecimals:void 0,panningEnabled:!0,zIndex:2,zoomEnabled:!0,dateTimeLabelFormats:{millisecond:{main:”%H:%M:%S.%L”,range:!1},second:{main:”%H:%M:%S”,range:!1},minute:{main:”%H:%M”,range:!1},hour:{main:”%H:%M”,range:!1},day:{main:”%e %b”},week:{main:”%e %b”},month:{main:”%b ‘%y”},year:{main:”%Y”}},endOnTick:!1,gridLineDashStyle:”Solid”,gridZIndex:1,labels:{autoRotationLimit:80,distance:15,enabled:!0,indentation:10,overflow:”justify”,reserveSpace:void 0,rotation:void 0,staggerLines:0,step:0,useHTML:!1,zIndex:7,style:{color:”#333333″,cursor:”default”,fontSize:”0.8em”}},maxPadding:.01,minorGridLineDashStyle:”Solid”,minorTickLength:2,minorTickPosition:”outside”,minorTicksPerMajor:5,minPadding:.01,offset:void 0,reversed:void 0,reversedStacks:!1,showEmpty:!0,showFirstLabel:!0,showLastLabel:!0,startOfWeek:1,startOnTick:!1,tickLength:10,tickPixelInterval:100,tickmarkPlacement:”between”,tickPosition:”outside”,title:{align:”middle”,useHTML:!1,x:0,y:0,style:{color:”#666666″,fontSize:”0.8em”}},type:”linear”,uniqueNames:!0,visible:!0,minorGridLineColor:”#f2f2f2″,minorGridLineWidth:1,minorTickColor:”#999999″,lineColor:”#333333″,lineWidth:1,gridLineColor:”#e6e6e6″,gridLineWidth:void 0,tickColor:”#333333″},x.yAxis={reversedStacks:!0,endOnTick:!0,maxPadding:.05,minPadding:.05,tickPixelInterval:72,showLastLabel:!0,labels:{x:void 0},startOnTick:!0,title:{text:”Values”},stackLabels:{animation:{},allowOverlap:!1,enabled:!1,crop:!0,overflow:”justify”,formatter:function(){let{numberFormatter:e}=this.axis.chart;return e(this.total||0,-1)},style:{color:”#000000″,fontSize:”0.7em”,fontWeight:”bold”,textOutline:”1px contrast”}},gridLineWidth:1,lineWidth:0},e}),b(x,”Core/Foundation.js”,[x[“Core/Utilities.js”]],function(e){var x;let{addEvent:b,isFunction:E,objectEach:L,removeEvent:O}=e;return(x||(x={})).registerEventOptions=function(e,x){e.eventOptions=e.eventOptions||{},L(x.events,function(x,L){e.eventOptions[L]!==x&&(e.eventOptions[L]&&(O(e,L,e.eventOptions[L]),delete e.eventOptions[L]),E(x)&&(e.eventOptions[L]=x,b(e,L,x,{order:0})))})},x}),b(x,”Core/Axis/Tick.js”,[x[“Core/Templating.js”],x[“Core/Globals.js”],x[“Core/Utilities.js”]],function(e,x,b){let{deg2rad:E}=x,{clamp:L,correctFloat:O,defined:D,destroyObjectProperties:j,extend:R,fireEvent:z,isNumber:F,merge:H,objectEach:U,pick:Y}=b;return class{constructor(e,x,b,E,L){this.isNew=!0,this.isNewLabel=!0,this.axis=e,this.pos=x,this.type=b||””,this.parameters=L||{},this.tickmarkOffset=this.parameters.tickmarkOffset,this.options=this.parameters.options,z(this,”init”),b||E||this.addLabel()}addLabel(){let x=this,b=x.axis,E=b.options,L=b.chart,j=b.categories,H=b.logarithmic,U=b.names,V=x.pos,q=Y(x.options&&x.options.labels,E.labels),K=b.tickPositions,$=V===K[0],_=V===K[K.length-1],Z=(!q.step||1===q.step)&&1===b.tickInterval,J=K.info,tt=x.label,te,ti,ts,to=this.parameters.category||(j?Y(j[V],U[V],V):V);H&&F(to)&&(to=O(H.lin2log(to))),b.dateTime&&(J?te=(ti=L.time.resolveDTLFormat(E.dateTimeLabelFormats[!E.grid&&J.higherRanks[V]||J.unitName])).main:F(to)&&(te=b.dateTime.getXDateFormat(to,E.dateTimeLabelFormats||{}))),x.isFirst=$,x.isLast=_;let tr={axis:b,chart:L,dateTimeLabelFormat:te,isFirst:$,isLast:_,pos:V,tick:x,tickPositionInfo:J,value:to};z(this,”labelFormat”,tr);let tn=x=>q.formatter?q.formatter.call(x,x):q.format?(x.text=b.defaultLabelFormatter.call(x),e.format(q.format,x,L)):b.defaultLabelFormatter.call(x),ta=tn.call(tr,tr),tl=ti&&ti.list;tl?x.shortenLabel=function(){for(ts=0;ts0&&L+H*U>R&&(_=Math.round((O-L)/Math.cos(F*E))):(L-H*UR&&(K=R-e.x+K*H,$=-1),(K=Math.min(V,K))K||x.autoRotation&&(z.styles||{}).width)&&(_=K)),_&&(this.shortenLabel?this.shortenLabel():(q.width=Math.floor(_)+”px”,(b.style||{}).textOverflow||(q.textOverflow=”ellipsis”),z.css(q)))}moveLabel(e,x){let b=this,E=b.label,L=b.axis,O=!1,D;E&&E.textStr===e?(b.movedLabel=E,O=!0,delete b.label):U(L.ticks,function(x){O||x.isNew||x===b||!x.label||x.label.textStr!==e||(b.movedLabel=x.label,O=!0,x.labelPos=b.movedLabel.xy,delete x.label)}),!O&&(b.labelPos||E)&&(D=b.labelPos||E.xy,b.movedLabel=b.createLabel(e,x,D),b.movedLabel&&b.movedLabel.attr({opacity:0}))}render(e,x,b){let E=this.axis,L=E.horiz,D=this.pos,j=Y(this.tickmarkOffset,E.tickmarkOffset),R=this.getPosition(L,D,j,x),F=R.x,H=R.y,U=E.pos,V=U+E.len,q=L?F:H;!E.chart.polar&&this.isNew&&(O(q)V)&&(b=0);let K=Y(b,this.label&&this.label.newOpacity,1);b=Y(b,1),this.isActive=!0,this.renderGridLine(x,b),this.renderMark(R,b),this.renderLabel(R,x,K,e),this.isNew=!1,z(this,”afterRender”)}renderGridLine(e,x){let b=this.axis,E=b.options,L={},O=this.pos,D=this.type,j=Y(this.tickmarkOffset,b.tickmarkOffset),R=b.chart.renderer,z=this.gridLine,F,H=E.gridLineWidth,U=E.gridLineColor,V=E.gridLineDashStyle;”minor”===this.type&&(H=E.minorGridLineWidth,U=E.minorGridLineColor,V=E.minorGridLineDashStyle),z||(b.chart.styledMode||(L.stroke=U,L[“stroke-width”]=H||0,L.dashstyle=V),D||(L.zIndex=1),e&&(x=0),this.gridLine=z=R.path().attr(L).addClass(“highcharts-“+(D?D+”-“:””)+”grid-line”).add(b.gridGroup)),z&&(F=b.getPlotLinePath({value:O+j,lineWidth:z.strokeWidth(),force:”pass”,old:e,acrossPanes:!1}))&&z[e||this.isNew?”attr”:”animate”]({d:F,opacity:x})}renderMark(e,x){let b=this.axis,E=b.options,L=b.chart.renderer,O=this.type,D=b.tickSize(O?O+”Tick”:”tick”),j=e.x,R=e.y,z=Y(E[“minor”!==O?”tickWidth”:”minorTickWidth”],!O&&b.isXAxis?1:0),F=E[“minor”!==O?”tickColor”:”minorTickColor”],H=this.mark,U=!H;D&&(b.opposite&&(D[0]=-D[0]),H||(this.mark=H=L.path().addClass(“highcharts-“+(O?O+”-“:””)+”tick”).add(b.axisGroup),b.chart.styledMode||H.attr({stroke:F,”stroke-width”:z})),H[U?”attr”:”animate”]({d:this.getMarkPath(j,R,D[0],H.strokeWidth(),b.horiz,L),opacity:x}))}renderLabel(e,x,b,E){let L=this.axis,O=L.horiz,D=L.options,j=this.label,R=D.labels,z=R.step,H=Y(this.tickmarkOffset,L.tickmarkOffset),U=e.x,V=e.y,q=!0;j&&F(U)&&(j.xy=e=this.getLabelPosition(U,V,j,O,R,H,E,z),(!this.isFirst||this.isLast||D.showFirstLabel)&&(!this.isLast||this.isFirst||D.showLastLabel)?!O||R.step||R.rotation||x||0===b||this.handleOverflow(e):q=!1,z&&E%z&&(q=!1),q&&F(e.y)?(e.opacity=b,j[this.isNewLabel?”attr”:”animate”](e).show(!0),this.isNewLabel=!1):(j.hide(),this.isNewLabel=!0))}replaceMovedLabel(){let e=this.label,x=this.axis;e&&!this.isNew&&(e.animate({opacity:0},void 0,e.destroy),delete this.label),x.isDirty=!0,this.label=this.movedLabel,delete this.movedLabel}}}),b(x,”Core/Axis/Axis.js”,[x[“Core/Animation/AnimationUtilities.js”],x[“Core/Axis/AxisDefaults.js”],x[“Core/Color/Color.js”],x[“Core/Defaults.js”],x[“Core/Foundation.js”],x[“Core/Globals.js”],x[“Core/Axis/Tick.js”],x[“Core/Utilities.js”]],function(e,x,b,E,L,O,D,j){let{animObject:R}=e,{xAxis:z,yAxis:F}=x,{defaultOptions:H}=E,{registerEventOptions:U}=L,{deg2rad:Y}=O,{arrayMax:V,arrayMin:q,clamp:K,correctFloat:$,defined:_,destroyObjectProperties:Z,erase:J,error:tt,extend:te,fireEvent:ti,getClosestDistance:ts,insertItem:to,isArray:tr,isNumber:tn,isString:ta,merge:tl,normalizeTickInterval:th,objectEach:td,pick:tc,relativeLength:tp,removeEvent:tu,splat:tg,syncTimeout:tm}=j,tf=(e,x)=>th(x,void 0,void 0,tc(e.options.allowDecimals,x<.5||void 0!==e.tickAmount),!!e.tickAmount);te(H,{xAxis:z,yAxis:tl(z,F)});let G=class G{constructor(e,x,b){this.init(e,x,b)}init(e,x,b=this.coll){let E="xAxis"===b,L=this.isZAxis||(e.inverted?!E:E);this.chart=e,this.horiz=L,this.isXAxis=E,this.coll=b,ti(this,"init",{userOptions:x}),this.opposite=tc(x.opposite,this.opposite),this.side=tc(x.side,this.side,L?2*!this.opposite:this.opposite?1:3),this.setOptions(x);let O=this.options,D=O.labels,j=O.type;this.userOptions=x,this.minPixelPadding=0,this.reversed=tc(O.reversed,this.reversed),this.visible=O.visible,this.zoomEnabled=O.zoomEnabled,this.hasNames="category"===j||!0===O.categories,this.categories=tr(O.categories)&&O.categories||(this.hasNames?[]:void 0),this.names||(this.names=[],this.names.keys={}),this.plotLinesAndBandsGroups={},this.positiveValuesOnly=!!this.logarithmic,this.isLinked=_(O.linkedTo),this.ticks={},this.labelEdge=[],this.minorTicks={},this.plotLinesAndBands=[],this.alternateBands={},this.len??(this.len=0),this.minRange=this.userMinRange=O.minRange||O.maxZoom,this.range=O.range,this.offset=O.offset||0,this.max=void 0,this.min=void 0;let R=tc(O.crosshair,tg(e.options.tooltip.crosshairs)[+!E]);this.crosshair=!0===R?{}:R,-1===e.axes.indexOf(this)&&(E?e.axes.splice(e.xAxis.length,0,this):e.axes.push(this),to(this,e[this.coll])),e.orderItems(this.coll),this.series=this.series||[],e.inverted&&!this.isZAxis&&E&&!_(this.reversed)&&(this.reversed=!0),this.labelRotation=tn(D.rotation)?D.rotation:void 0,U(this,O),ti(this,"afterInit")}setOptions(e){let x=this.horiz?{labels:{autoRotation:[-45],padding:4},margin:15}:{labels:{padding:1},title:{rotation:90*this.side}};this.options=tl(x,H[this.coll],e),ti(this,"afterSetOptions",{userOptions:e})}defaultLabelFormatter(){let e=this.axis,{numberFormatter:x}=this.chart,b=tn(this.value)?this.value:NaN,E=e.chart.time,L=e.categories,O=this.dateTimeLabelFormat,D=H.lang,j=D.numericSymbols,R=D.numericSymbolMagnitude||1e3,z=e.logarithmic?Math.abs(b):e.tickInterval,F=j&&j.length,U,Y;if(L)Y=`${this.value}`;else if(O)Y=E.dateFormat(O,b);else if(F&&j&&z>=1e3)for(;F–&&void 0===Y;)z>=(U=Math.pow(R,F+1))&&10*b%U==0&&null!==j[F]&&0!==b&&(Y=x(b/U,-1)+j[F]);return void 0===Y&&(Y=Math.abs(b)>=1e4?x(b,-1):x(b,-1,void 0,””)),Y}getSeriesExtremes(){let e,x=this;ti(this,”getSeriesExtremes”,null,function(){x.hasVisibleSeries=!1,x.dataMin=x.dataMax=x.threshold=void 0,x.softThreshold=!x.isXAxis,x.series.forEach(b=>{if(b.reserveSpace()){let E=b.options,L,O=E.threshold,D,j;if(x.hasVisibleSeries=!0,x.positiveValuesOnly&&0>=(O||0)&&(O=void 0),x.isXAxis)(L=b.xData)&&L.length&&(L=x.logarithmic?L.filter(e=>e>0):L,D=(e=b.getXExtremes(L)).min,j=e.max,tn(D)||D instanceof Date||(L=L.filter(tn),D=(e=b.getXExtremes(L)).min,j=e.max),L.length&&(x.dataMin=Math.min(tc(x.dataMin,D),D),x.dataMax=Math.max(tc(x.dataMax,j),j)));else{let e=b.applyExtremes();tn(e.dataMin)&&(D=e.dataMin,x.dataMin=Math.min(tc(x.dataMin,D),D)),tn(e.dataMax)&&(j=e.dataMax,x.dataMax=Math.max(tc(x.dataMax,j),j)),_(O)&&(x.threshold=O),(!E.softThreshold||x.positiveValuesOnly)&&(x.softThreshold=!1)}}})}),ti(this,”afterGetSeriesExtremes”)}translate(e,x,b,E,L,O){let D=this.linkedParent||this,j=E&&D.old?D.old.min:D.min;if(!tn(j))return NaN;let R=D.minPixelPadding,z=(D.isOrdinal||D.brokenAxis?.hasBreaks||D.logarithmic&&L)&&D.lin2val,F=1,H=0,U=E&&D.old?D.old.transA:D.transA,Y=0;return U||(U=D.transA),b&&(F*=-1,H=D.len),D.reversed&&(F*=-1,H-=F*(D.sector||D.len)),x?(Y=(e=e*F+H-R)/U+j,z&&(Y=D.lin2val(Y))):(z&&(e=D.val2lin(e)),Y=F*(e-j)*U+H+F*R+(tn(O)?U*O:0),D.isRadial||(Y=$(Y))),Y}toPixels(e,x){return this.translate(e,!1,!this.horiz,void 0,!0)+(x?0:this.pos)}toValue(e,x){return this.translate(e-(x?0:this.pos),!0,!this.horiz,void 0,!0)}getPlotLinePath(e){let x=this,b=x.chart,E=x.left,L=x.top,O=e.old,D=e.value,j=e.lineWidth,R=O&&b.oldChartHeight||b.chartHeight,z=O&&b.oldChartWidth||b.chartWidth,F=x.transB,H=e.translatedValue,U=e.force,Y,V,q,$,_;function Z(e,x,b){return”pass”!==U&&(eb)&&(U?e=K(e,x,b):_=!0),e}let J={value:D,lineWidth:j,old:O,force:U,acrossPanes:e.acrossPanes,translatedValue:H};return ti(this,”getPlotLinePath”,J,function(e){Y=q=(H=K(H=tc(H,x.translate(D,void 0,void 0,O)),-1e5,1e5))+F,V=$=R-H-F,tn(H)?x.horiz?(V=L,$=R-x.bottom+(b.scrollablePixelsY||0),Y=q=Z(Y,E,E+x.width)):(Y=E,q=z-x.right+(b.scrollablePixelsX||0),V=$=Z(V,L,L+x.height)):(_=!0,U=!1),e.path=_&&!U?void 0:b.renderer.crispLine([[“M”,Y,V],[“L”,q,$]],j||1)}),J.path}getLinearTickPositions(e,x,b){let E,L,O,D=$(Math.floor(x/e)*e),j=$(Math.ceil(b/e)*e),R=[];if($(D+e)===D&&(O=20),this.single)return[x];for(E=D;E<=j&&(R.push(E),(E=$(E+e,O))!==L);)L=E;return R}getMinorTickInterval(){let{minorTicks:e,minorTickInterval:x}=this.options;return!0===e?tc(x,"auto"):!1!==e?x:void 0}getMinorTickPositions(){let e=this.options,x=this.tickPositions,b=this.minorTickInterval,E=this.pointRangePadding||0,L=(this.min||0)-E,O=(this.max||0)+E,D=O-L,j=[],R;if(D&&D/b(e.xIncrement?e.xData?.slice(0,2):e.xData)||[]))||0),this.dataMax-this.dataMin)),tn(b)&&tn(E)&&tn(L)&&b-E=L,O=(L-b+E)/2,j=[E-O,tc(e.min,E-O)],D&&(j[2]=x?x.log2lin(this.dataMin):this.dataMin),R=[(E=V(j))+L,tc(e.max,E+L)],D&&(R[2]=x?x.log2lin(this.dataMax):this.dataMax),(b=q(R))-Ee-x),e=ts([b]))}return e&&x?Math.min(e,x):e||x}nameToX(e){let x=tr(this.options.categories),b=x?this.categories:this.names,E=e.options.x,L;return e.series.requireSorting=!1,_(E)||(E=this.options.uniqueNames&&b?x?b.indexOf(e.name):tc(b.keys[e.name],-1):e.series.autoIncrement()),-1===E?!x&&b&&(L=b.length):L=E,void 0!==L?(this.names[L]=e.name,this.names.keys[e.name]=L):e.x&&(L=e.x),L}updateNames(){let e=this,x=this.names;x.length>0&&(Object.keys(x.keys).forEach(function(e){delete x.keys[e]}),x.length=0,this.minRange=this.userMinRange,(this.series||[]).forEach(x=>{x.xIncrement=null,(!x.points||x.isDirtyData)&&(e.max=Math.max(e.max,x.xData.length-1),x.processData(),x.generatePoints()),x.data.forEach(function(b,E){let L;b?.options&&void 0!==b.name&&void 0!==(L=e.nameToX(b))&&L!==b.x&&(b.x=L,x.xData[E]=L)})}))}setAxisTranslation(){let e=this,x=e.max-e.min,b=e.linkedParent,E=!!e.categories,L=e.isXAxis,O=e.axisPointRange||0,D,j=0,R=0,z,F=e.transA;(L||E||O)&&(D=e.getClosest(),b?(j=b.minPointOffset,R=b.pointRangePadding):e.series.forEach(function(x){let b=E?1:L?tc(x.options.pointRange,D,0):e.axisPointRange||0,z=x.options.pointPlacement;if(O=Math.max(O,b),!e.single||E){let e=x.is(“xrange”)?!L:L;j=Math.max(j,e&&ta(z)?0:b/2),R=Math.max(R,e&&”on”===z?0:b)}}),z=e.ordinal&&e.ordinal.slope&&D?e.ordinal.slope/D:1,e.minPointOffset=j*=z,e.pointRangePadding=R*=z,e.pointRange=Math.min(O,e.single&&E?1:x),L&&D&&(e.closestPointRange=D)),e.translationSlope=e.transA=F=e.staticScale||e.len/(x+R||1),e.transB=e.horiz?e.left:e.bottom,e.minPixelPadding=F*j,ti(this,”afterSetAxisTranslation”)}minFromRange(){let{max:e,min:x}=this;return tn(e)&&tn(x)&&e-x||void 0}setTickInterval(e){let{categories:x,chart:b,dataMax:E,dataMin:L,dateTime:O,isXAxis:D,logarithmic:j,options:R,softThreshold:z}=this,F=tn(this.threshold)?this.threshold:void 0,H=this.minRange||0,{ceiling:U,floor:Y,linkedTo:V,softMax:q,softMin:K}=R,Z=tn(V)&&b[this.coll]?.[V],J=R.tickPixelInterval,te=R.maxPadding,ts=R.minPadding,to=0,tr,ta=tn(R.tickInterval)&&R.tickInterval>=0?R.tickInterval:void 0,tl,th,td,tp;if(O||x||Z||this.getTickAmount(),td=tc(this.userMin,R.min),tp=tc(this.userMax,R.max),Z?(this.linkedParent=Z,tr=Z.getExtremes(),this.min=tc(tr.min,tr.dataMin),this.max=tc(tr.max,tr.dataMax),R.type!==Z.options.type&&tt(11,!0,b)):(z&&_(F)&&tn(E)&&tn(L)&&(L>=F?(tl=F,ts=0):E<=F&&(th=F,te=0)),this.min=tc(td,tl,L),this.max=tc(tp,th,E)),tn(this.max)&&tn(this.min)&&(j&&(this.positiveValuesOnly&&!e&&0>=Math.min(this.min,tc(L,this.min))&&tt(10,!0,b),this.min=$(j.log2lin(this.min),16),this.max=$(j.log2lin(this.max),16)),this.range&&tn(L)&&(this.userMin=this.min=td=Math.max(L,this.minFromRange()||0),this.userMax=tp=this.max,this.range=void 0)),ti(this,”foundExtremes”),this.adjustForMinRange(),tn(this.min)&&tn(this.max)){if(!tn(this.userMin)&&tn(K)&&Kthis.max&&(this.max=tp=q),x||this.axisPointRange||this.stacking?.usePercentage||Z||!(to=this.max-this.min)||(!_(td)&&ts&&(this.min-=to*ts),_(tp)||!te||(this.max+=to*te)),!tn(this.userMin)&&tn(Y)&&(this.min=Math.max(this.min,Y)),!tn(this.userMax)&&tn(U)&&(this.max=Math.min(this.max,U)),z&&tn(L)&&tn(E)){let e=F||0;!_(td)&&this.min=e?this.min=R.minRange?Math.min(e,this.max-H):e:!_(tp)&&this.max>e&&E<=e&&(this.max=R.minRange?Math.max(e,this.min+H):e)}!b.polar&&this.min>this.max&&(_(R.min)?this.max=this.min:_(R.max)&&(this.min=this.max)),to=this.max-this.min}if(this.min!==this.max&&tn(this.min)&&tn(this.max)?Z&&!ta&&J===Z.options.tickPixelInterval?this.tickInterval=ta=Z.tickInterval:this.tickInterval=tc(ta,this.tickAmount?to/Math.max(this.tickAmount-1,1):void 0,x?1:to*J/Math.max(this.len,J)):this.tickInterval=1,D&&!e){let e=this.min!==this.old?.min||this.max!==this.old?.max;this.series.forEach(function(x){x.forceCrop=x.forceCropping?.(),x.processData(e)}),ti(this,”postProcessData”,{hasExtremesChanged:e})}this.setAxisTranslation(),ti(this,”initialAxisTranslation”),this.pointRange&&!ta&&(this.tickInterval=Math.max(this.pointRange,this.tickInterval));let tu=tc(R.minTickInterval,O&&!this.series.some(e=>e.noSharedTooltip)?this.closestPointRange:0);!ta&&this.tickIntervalMath.max(2*this.len,200))j=[this.min,this.max],tt(19,!1,this.chart);else if(this.dateTime)j=this.getTimeTicks(this.dateTime.normalizeTimeTickInterval(this.tickInterval,e.units),this.min,this.max,e.startOfWeek,this.ordinal?.positions,this.closestPointRange,!0);else if(this.logarithmic)j=this.logarithmic.getLogTickPositions(this.tickInterval,this.min,this.max);else{let e=this.tickInterval,x=e;for(;x<=2*e;)if(j=this.getLinearTickPositions(this.tickInterval,this.min,this.max),this.tickAmount&&j.length>this.tickAmount)this.tickInterval=tf(this,x*=1.1);else break}j.length>this.len&&(j=[j[0],j[j.length-1]])[0]===j[1]&&(j.length=1),b&&(this.tickPositions=j,(R=b.apply(this,[this.min,this.max]))&&(j=R))}this.tickPositions=j,this.paddedTicks=j.slice(0),this.trimTicks(j,O,D),!this.isLinked&&tn(this.min)&&tn(this.max)&&(this.single&&j.length<2&&!this.categories&&!this.series.some(e=>e.is(“heatmap”)&&”between”===e.options.pointPlacement)&&(this.min-=.5,this.max+=.5),x||R||this.adjustTickAmount()),ti(this,”afterSetTickPositions”)}trimTicks(e,x,b){let E=e[0],L=e[e.length-1],O=!this.isOrdinal&&this.minPointOffset||0;if(ti(this,”trimTicks”),!this.isLinked){if(x&&E!==-1/0)this.min=E;else for(;this.min-O>e[0];)e.shift();if(b)this.max=L;else for(;this.max+O{let{horiz:x,options:b}=e;return[x?b.left:b.top,b.width,b.height,b.pane].join(“,”)},O=L(this);b[this.coll].forEach(function(b){let{series:D}=b;D.length&&D.some(e=>e.visible)&&b!==x&&L(b)===O&&(e=!0,E.push(b))})}if(e&&D){E.forEach(e=>{let b=e.getThresholdAlignment(x);tn(b)&&j.push(b)});let e=j.length>1?j.reduce((e,x)=>e+=x,0)/j.length:void 0;E.forEach(x=>{x.thresholdAlignment=e})}return e}getThresholdAlignment(e){if((!tn(this.dataMin)||this!==e&&this.series.some(e=>e.isDirty||e.isDirtyData))&&this.getSeriesExtremes(),tn(this.threshold)){let e=K((this.threshold-(this.dataMin||0))/((this.dataMax||0)-(this.dataMin||0)),0,1);return this.options.reversed&&(e=1-e),e}}getTickAmount(){let e=this.options,x=e.tickPixelInterval,b=e.tickAmount;_(e.tickInterval)||b||!(this.lenO.push($(O[O.length-1]+U)),q=()=>O.unshift($(O[0]-U));if(tn(j)&&(Y=j<.5?Math.ceil(j*(D-1)):Math.floor(j*(D-1)),L.reversed&&(Y=D-1-Y)),e.hasData()&&tn(E)&&tn(b)){let j=()=>{e.transA*=(R-1)/(D-1),e.min=L.startOnTick?O[0]:Math.min(E,O[0]),e.max=L.endOnTick?O[O.length-1]:Math.max(b,O[O.length-1])};if(tn(Y)&&tn(e.threshold)){for(;O[Y]!==z||O.length!==D||O[0]>E||O[O.length-1]e.threshold?q():V();if(U>8*e.tickInterval)break;U*=2}j()}else if(R0&&H{b=b||e.isDirtyData||e.isDirty,E=E||e.xAxis&&e.xAxis.isDirty||!1}),this.setAxisSize();let L=this.len!==(this.old&&this.old.len);L||b||E||this.isLinked||this.forceRedraw||this.userMin!==(this.old&&this.old.userMin)||this.userMax!==(this.old&&this.old.userMax)||this.alignToOthers()?(x&&”yAxis”===e&&x.buildStacks(),this.forceRedraw=!1,this.userMinRange||(this.minRange=void 0),this.getSeriesExtremes(),this.setTickInterval(),x&&”xAxis”===e&&x.buildStacks(),this.isDirty||(this.isDirty=L||this.min!==this.old?.min||this.max!==this.old?.max)):x&&x.cleanStacks(),b&&delete this.allExtremes,ti(this,”afterSetScale”)}setExtremes(e,x,b=!0,E,L){this.series.forEach(e=>{delete e.kdTree}),ti(this,”setExtremes”,L=te(L,{min:e,max:x}),e=>{this.userMin=e.min,this.userMax=e.max,this.eventArgs=e,b&&this.chart.redraw(E)})}setAxisSize(){let e=this.chart,x=this.options,b=x.offsets||[0,0,0,0],E=this.horiz,L=this.width=Math.round(tp(tc(x.width,e.plotWidth-b[3]+b[1]),e.plotWidth)),O=this.height=Math.round(tp(tc(x.height,e.plotHeight-b[0]+b[2]),e.plotHeight)),D=this.top=Math.round(tp(tc(x.top,e.plotTop+b[0]),e.plotHeight,e.plotTop)),j=this.left=Math.round(tp(tc(x.left,e.plotLeft+b[3]),e.plotWidth,e.plotLeft));this.bottom=e.chartHeight-O-D,this.right=e.chartWidth-L-j,this.len=Math.max(E?L:O,0),this.pos=E?j:D}getExtremes(){let e=this.logarithmic;return{min:e?$(e.lin2log(this.min)):this.min,max:e?$(e.lin2log(this.max)):this.max,dataMin:this.dataMin,dataMax:this.dataMax,userMin:this.userMin,userMax:this.userMax}}getThreshold(e){let x=this.logarithmic,b=x?x.lin2log(this.min):this.min,E=x?x.lin2log(this.max):this.max;return null===e||e===-1/0?e=b:e===1/0?e=E:b>e?e=b:E15&&x<165?e.align="right":x>195&&x<345&&(e.align="left")}),b.align}tickSize(e){let x=this.options,b=tc(x["tick"===e?"tickWidth":"minorTickWidth"],"tick"===e&&this.isXAxis&&!this.categories?1:0),E=x["tick"===e?"tickLength":"minorTickLength"],L;b&&E&&("inside"===x[e+"Position"]&&(E=-E),L=[E,b]);let O={tickSize:L};return ti(this,"afterTickSize",O),O.tickSize}labelMetrics(){let e=this.chart.renderer,x=this.ticks,b=x[Object.keys(x)[0]]||{};return this.chart.renderer.fontMetrics(b.label||b.movedLabel||e.box)}unsquish(){let e=this.options.labels,x=e.padding||0,b=this.horiz,E=this.tickInterval,L=this.len/((+!!this.categories+this.max-this.min)/E),O=e.rotation,D=$(.8*this.labelMetrics().h),j=Math.max(this.max-this.min,0),R=function(e){let b=(e+2*x)/(L||1);return(b=b>1?Math.ceil(b):1)*E>j&&e!==1/0&&L!==1/0&&j&&(b=Math.ceil(j/E)),$(b*E)},z=E,F,H=Number.MAX_VALUE,U;if(b){if(!e.staggerLines&&(tn(O)?U=[O]:L=-90&&b<=90)&&(x=(e=R(Math.abs(D/Math.sin(Y*b))))+Math.abs(b/360))V&&(V=x.label.textPxLength)}),this.maxLabelLength=V,this.autoRotation)V>R&&V>F.h?z.rotation=this.labelRotation:this.labelRotation=0;else if(j&&(U=R,!H))for(Y=”clip”,K=b.length;!D&&K–;)(q=E[b[K]].label)&&(“ellipsis”===q.styles.textOverflow?q.css({textOverflow:”clip”}):q.textPxLength>j&&q.css({width:j+”px”}),q.getBBox().height>this.len/b.length-(F.h-F.f)&&(q.specificTextOverflow=”ellipsis”));z.rotation&&(U=V>.5*e.chartHeight?.33*e.chartHeight:V,H||(Y=”ellipsis”)),this.labelAlign=L.align||this.autoLabelAlign(this.labelRotation),this.labelAlign&&(z.align=this.labelAlign),b.forEach(function(e){let x=E[e],b=x&&x.label,L=O.width,D={};b&&(b.attr(z),x.shortenLabel?x.shortenLabel():U&&!L&&”nowrap”!==O.whiteSpace&&(UL.g(x).attr({zIndex:D}).addClass(`highcharts-${b.toLowerCase()}${O} `+(this.isRadial?`highcharts-radial-axis${O} `:””)+(E.className||””)).add(e);this.axisGroup||(this.gridGroup=O(“grid”,”-grid”,E.gridZIndex),this.axisGroup=O(“axis”,””,E.zIndex),this.labelGroup=O(“axis-labels”,”-labels”,E.labels.zIndex))}getOffset(){let e=this,{chart:x,horiz:b,options:E,side:L,ticks:O,tickPositions:D,coll:j}=e,R=x.inverted&&!e.isZAxis?[1,0,3,2][L]:L,z=e.hasData(),F=E.title,H=E.labels,U=tn(E.crossing),Y=x.axisOffset,V=x.clipOffset,q=[-1,1,1,-1][L],K,$=0,Z,J=0,tt=0,te,ts;if(e.showAxis=K=z||E.showEmpty,e.staggerLines=e.horiz&&H.staggerLines||void 0,e.createGroups(),z||e.isLinked?(D.forEach(function(x){e.generateTick(x)}),e.renderUnsquish(),e.reserveSpaceDefault=0===L||2===L||({1:”left”,3:”right”})[L]===e.labelAlign,tc(H.reserveSpace,!U&&null,”center”===e.labelAlign||null,e.reserveSpaceDefault)&&D.forEach(function(e){tt=Math.max(O[e].getLabelSize(),tt)}),e.staggerLines&&(tt*=e.staggerLines),e.labelOffset=tt*(e.opposite?-1:1)):td(O,function(e,x){e.destroy(),delete O[x]}),F?.text&&!1!==F.enabled&&(e.addTitle(K),K&&!U&&!1!==F.reserveSpace&&(e.titleOffset=$=e.axisTitle.getBBox()[b?”height”:”width”],J=_(Z=F.offset)?0:tc(F.margin,b?5:10))),e.renderLine(),e.offset=q*tc(E.offset,Y[L]?Y[L]+(E.margin||0):0),e.tickRotCorr=e.tickRotCorr||{x:0,y:0},ts=0===L?-e.labelMetrics().h:2===L?e.tickRotCorr.y:0,te=Math.abs(tt)+J,tt&&(te-=ts,te+=q*(b?tc(H.y,e.tickRotCorr.y+q*H.distance):tc(H.x,q*H.distance))),e.axisTitleMargin=tc(Z,te),e.getMaxLabelDimensions&&(e.maxLabelDimensions=e.getMaxLabelDimensions(O,D)),”colorAxis”!==j&&V){let x=this.tickSize(“tick”);Y[L]=Math.max(Y[L],(e.axisTitleMargin||0)+$+q*e.offset,te,D&&D.length&&x?x[0]+q*e.offset:0);let b=!e.axisLine||E.offset?0:e.axisLine.strokeWidth()/2;V[R]=Math.max(V[R],b)}ti(this,”afterGetOffset”)}getLinePath(e){let x=this.chart,b=this.opposite,E=this.offset,L=this.horiz,O=this.left+(b?this.width:0)+E,D=x.chartHeight-this.bottom-(b?this.height:0)+E;return b&&(e*=-1),x.renderer.crispLine([[“M”,L?this.left:O,L?D:this.top],[“L”,L?x.chartWidth-this.right:O,L?D:x.chartHeight-this.bottom]],e)}renderLine(){this.axisLine||(this.axisLine=this.chart.renderer.path().addClass(“highcharts-axis-line”).add(this.axisGroup),this.chart.styledMode||this.axisLine.attr({stroke:this.options.lineColor,”stroke-width”:this.options.lineWidth,zIndex:7}))}getTitlePosition(e){let x=this.horiz,b=this.left,E=this.top,L=this.len,O=this.options.title,D=x?b:E,j=this.opposite,R=this.offset,z=O.x,F=O.y,H=this.chart.renderer.fontMetrics(e),U=e?Math.max(e.getBBox(!1,0).height-H.h-1,0):0,Y={low:D+(x?0:L),middle:D+L/2,high:D+(x?L:0)}[O.align],V=(x?E+this.height:b)+(x?1:-1)*(j?-1:1)*(this.axisTitleMargin||0)+[-U,U,H.f,-U][this.side],q={x:x?Y+z:V+(j?this.width:0)+R+z,y:x?V+F-(j?this.height:0)+R:Y+F};return ti(this,”afterGetTitlePosition”,{titlePosition:q}),q}renderMinorTick(e,x){let b=this.minorTicks;b[e]||(b[e]=new D(this,e,”minor”)),x&&b[e].isNew&&b[e].render(null,!0),b[e].render(null,!1,1)}renderTick(e,x,b){let E=this.isLinked,L=this.ticks;(!E||e>=this.min&&e<=this.max||this.grid&&this.grid.isColumn)&&(L[e]||(L[e]=new D(this,e)),b&&L[e].isNew&&L[e].render(x,!0,-1),L[e].render(x))}render(){let e,x,b=this,E=b.chart,L=b.logarithmic,j=E.renderer,z=b.options,F=b.isLinked,H=b.tickPositions,U=b.axisTitle,Y=b.ticks,V=b.minorTicks,q=b.alternateBands,K=z.stackLabels,$=z.alternateGridColor,_=z.crossing,Z=b.tickmarkOffset,J=b.axisLine,tt=b.showAxis,te=R(j.globalAnimation);if(b.labelEdge.length=0,b.overlap=!1,[Y,V,q].forEach(function(e){td(e,function(e){e.isActive=!1})}),tn(_)){let e=this.isXAxis?E.yAxis[0]:E.xAxis[0],x=[1,-1,-1,1][this.side];if(e){let E=e.toPixels(_,!0);b.horiz&&(E=e.len-E),b.offset=x*E}}if(b.hasData()||F){let j=b.chart.hasRendered&&b.old&&tn(b.old.min);b.minorTickInterval&&!b.categories&&b.getMinorTickPositions().forEach(function(e){b.renderMinorTick(e,j)}),H.length&&(H.forEach(function(e,x){b.renderTick(e,x,j)}),Z&&(0===b.min||b.single)&&(Y[-1]||(Y[-1]=new D(b,-1,null,!0)),Y[-1].render(-1))),$&&H.forEach(function(D,j){x=void 0!==H[j+1]?H[j+1]+Z:b.max-Z,j%2==0&&D=.5)e=Math.round(e),z=D.getLinearTickPositions(e,x,b);else if(e>=.08){let E,L,D,j,R,F,H,U=Math.floor(x);for(E=e>.3?[1,2,4]:e>.15?[1,2,4,6,8]:[1,2,3,4,5,6,7,8,9],L=U;Lx&&(!O||F<=b)&&void 0!==F&&z.push(F),F>b&&(H=!0),F=R}else{let F=this.lin2log(x),H=this.lin2log(b),U=O?D.getMinorTickInterval():R.tickInterval,Y=R.tickPixelInterval/(O?5:1),V=O?j/D.tickPositions.length:j;e=E(e=L(“auto”===U?null:U,this.minorAutoInterval,(H-F)*Y/(V||1))),z=D.getLinearTickPositions(e,F,H).map(this.log2lin),O||(this.minorAutoInterval=e/5)}return O||(D.tickInterval=e),z}lin2log(e){return Math.pow(10,e)}log2lin(e){return Math.log(e)/Math.LN10}};e.Additions=a}(x||(x={})),x}),b(x,”Core/Axis/PlotLineOrBand/PlotLineOrBandAxis.js”,[x[“Core/Utilities.js”]],function(e){var x;let{erase:b,extend:E,isNumber:L}=e;return function(e){let x;function O(e){return this.addPlotBandOrLine(e,”plotBands”)}function D(e,b){let E=this.userOptions,L=new x(this,e);if(this.visible&&(L=L.render()),L){if(this._addedPlotLB||(this._addedPlotLB=!0,(E.plotLines||[]).concat(E.plotBands||[]).forEach(e=>{this.addPlotBandOrLine(e)})),b){let x=E[b]||[];x.push(e),E[b]=x}this.plotLinesAndBands.push(L)}return L}function j(e){return this.addPlotBandOrLine(e,”plotLines”)}function R(e,x,b){b=b||this.options;let E=this.getPlotLinePath({value:x,force:!0,acrossPanes:b.acrossPanes}),O=[],D=this.horiz,j=!L(this.min)||!L(this.max)||ethis.max&&x>this.max,R=this.getPlotLinePath({value:e,force:!0,acrossPanes:b.acrossPanes}),z,F=1,H;if(R&&E)for(j&&(H=R.toString()===E.toString(),F=0),z=0;z{J?.on(x,e=>{D[x].apply(this,[e])})}),this.eventsAdded=!0),(to||!J.d)&&tt?.length?J.attr({d:tt}):J&&(tt?(J.show(),J.animate({d:tt})):J.d&&(J.hide(),Z&&(this.label=Z=Z.destroy()))),_&&(L(_.text)||L(_.formatter))&&tt?.length&&e.width>0&&e.height>0&&!tt.isFlat?(_=R({align:b&&ti?”center”:void 0,x:b?!ti&&4:10,verticalAlign:!b&&ti?”middle”:void 0,y:b?ti?16:10:ti?6:-4,rotation:b&&!ti?90:0},_),this.renderLabel(_,tt,ti,H)):Z&&Z.hide(),this}renderLabel(e,x,L,O){let D=this.axis,j=D.chart.renderer,z=this.label;z||(this.label=z=j.text(this.getLabelText(e),0,0,e.useHTML).attr({align:e.textAlign||e.align,rotation:e.rotation,class:”highcharts-plot-“+(L?”band”:”line”)+”-label “+(e.className||””),zIndex:O}),D.chart.styledMode||z.css(R({fontSize:”0.8em”,textOverflow:”ellipsis”},e.style)),z.add());let F=x.xBounds||[x[0][1],x[1][1],L?x[2][1]:x[0][1]],H=x.yBounds||[x[0][2],x[1][2],L?x[2][2]:x[0][2]],U=E(F),Y=E(H);if(z.align(e,!1,{x:U,y:Y,width:b(F)-U,height:b(H)-Y}),!z.alignValue||”left”===z.alignValue){let x=e.clip?D.width:D.chart.chartWidth;z.css({width:(90===z.rotation?D.height-(z.alignAttr.y-D.top):x-(z.alignAttr.x-D.left))+”px”})}z.show(!0)}getLabelText(e){return L(e.formatter)?e.formatter.call(this):e.text}destroy(){D(this.axis.plotLinesAndBands,this),delete this.axis,O(this)}};return c}),b(x,”Core/Tooltip.js”,[x[“Core/Animation/AnimationUtilities.js”],x[“Core/Templating.js”],x[“Core/Globals.js”],x[“Core/Renderer/RendererUtilities.js”],x[“Core/Renderer/RendererRegistry.js”],x[“Core/Utilities.js”]],function(e,x,b,E,L,O){var D;let{animObject:j}=e,{format:R}=x,{composed:z,doc:F,isSafari:H}=b,{distribute:U}=E,{addEvent:Y,clamp:V,css:q,discardElement:K,extend:$,fireEvent:_,isArray:Z,isNumber:J,isString:tt,merge:te,pick:ti,pushUnique:ts,splat:to,syncTimeout:tr}=O;let T=class T{constructor(e,x,b){this.allowShared=!0,this.crosshairs=[],this.distance=0,this.isHidden=!0,this.isSticky=!1,this.options={},this.outside=!1,this.chart=e,this.init(e,x),this.pointer=b}bodyFormatter(e){return e.map(function(e){let x=e.series.tooltipOptions;return(x[(e.point.formatPrefix||”point”)+”Formatter”]||e.point.tooltipFormatter).call(e.point,x[(e.point.formatPrefix||”point”)+”Format”]||””)})}cleanSplit(e){this.chart.series.forEach(function(x){let b=x&&x.tt;b&&(!b.isActive||e?x.tt=b.destroy():b.isActive=!1)})}defaultFormatter(e){let x,b=this.points||to(this);return(x=(x=[e.tooltipFooterHeaderFormatter(b[0])]).concat(e.bodyFormatter(b))).push(e.tooltipFooterHeaderFormatter(b[0],!0)),x}destroy(){this.label&&(this.label=this.label.destroy()),this.split&&(this.cleanSplit(!0),this.tt&&(this.tt=this.tt.destroy())),this.renderer&&(this.renderer=this.renderer.destroy(),K(this.container)),O.clearTimeout(this.hideTimer)}getAnchor(e,x){let b,{chart:E,pointer:L}=this,O=E.inverted,D=E.plotTop,j=E.plotLeft;if((e=to(e))[0].series&&e[0].series.yAxis&&!e[0].series.yAxis.options.reversedStacks&&(e=e.slice().reverse()),this.followPointer&&x)void 0===x.chartX&&(x=L.normalize(x)),b=[x.chartX-j,x.chartY-D];else if(e[0].tooltipPos)b=e[0].tooltipPos;else{let E=0,L=0;e.forEach(function(e){let x=e.pos(!0);x&&(E+=x[0],L+=x[1])}),E/=e.length,L/=e.length,this.shared&&e.length>1&&x&&(O?E=x.chartX:L=x.chartY),b=[E-j,L-D]}return b.map(Math.round)}getClassName(e,x,b){let E=this.options,L=e.series,O=L.options;return[E.className,”highcharts-label”,b&&”highcharts-tooltip-header”,x?”highcharts-tooltip-box”:”highcharts-tooltip”,!b&&”highcharts-color-“+ti(e.colorIndex,L.colorIndex),O&&O.className].filter(tt).join(” “)}getLabel(){let e=this,x=this.chart.styledMode,E=this.options,O=this.split&&this.allowShared,D=this.container,j=this.chart.renderer;if(this.label){let e=!this.label.hasClass(“highcharts-label”);(!O&&e||O&&!e)&&this.destroy()}if(!this.label){if(this.outside){let e=this.chart.options.chart.style,x=L.getRendererType();this.container=D=b.doc.createElement(“div”),D.className=”highcharts-tooltip-container”,q(D,{position:”absolute”,top:”1px”,pointerEvents:”none”,zIndex:Math.max(this.options.style.zIndex||0,(e&&e.zIndex||0)+3)}),this.renderer=j=new x(D,0,0,e,void 0,void 0,j.styledMode)}if(O?this.label=j.g(“tooltip”):(this.label=j.label(“”,0,0,E.shape,void 0,void 0,E.useHTML,void 0,”tooltip”).attr({padding:E.padding,r:E.borderRadius}),x||this.label.attr({fill:E.backgroundColor,”stroke-width”:E.borderWidth||0}).css(E.style).css({pointerEvents:E.style.pointerEvents||(this.shouldStickOnContact()?”auto”:”none”)})),e.outside){let x=this.label;[x.xSetter,x.ySetter].forEach((b,E)=>{x[E?”ySetter”:”xSetter”]=L=>{b.call(x,e.distance),x[E?”y”:”x”]=L,D&&(D.style[E?”top”:”left”]=`${L}px`)}})}this.label.attr({zIndex:8}).shadow(E.shadow).add()}return D&&!D.parentElement&&b.doc.body.appendChild(D),this.label}getPlayingField(){let{body:e,documentElement:x}=F,{chart:b,distance:E,outside:L}=this;return{width:L?Math.max(e.scrollWidth,x.scrollWidth,e.offsetWidth,x.offsetWidth,x.clientWidth)-2*E:b.chartWidth,height:L?Math.max(e.scrollHeight,x.scrollHeight,e.offsetHeight,x.offsetHeight,x.clientHeight):b.chartHeight}}getPosition(e,x,b){let{distance:E,chart:L,outside:O,pointer:D}=this,{inverted:j,plotLeft:R,plotTop:z,polar:F}=L,{plotX:H=0,plotY:U=0}=b,Y={},V=j&&b.h||0,{height:q,width:K}=this.getPlayingField(),$=D.getChartPosition(),_=b=>{let D=”x”===b;return[b,D?K:q,D?e:x].concat(O?[D?e*$.scaleX:x*$.scaleY,D?$.left-E+(H+R)*$.scaleX:$.top-E+(U+z)*$.scaleY,0,D?K:q]:[D?e:x,D?H+R:U+z,D?R:z,D?R+L.plotWidth:z+L.plotHeight])},Z=_(“y”),J=_(“x”),tt,te=!!b.negative;!F&&L.hoverSeries?.yAxis?.reversed&&(te=!te);let ts=!this.followPointer&&ti(b.ttBelow,!F&&!j===te),to=function(e,x,b,L,D,j,R){let z=O?”y”===e?E*$.scaleY:E*$.scaleX:E,F=(b-L)/2,H=Lx?K:K+V)}},tr=function(e,x,b,L,O){if(Ox-E)return!1;Ox-L/2?Y[e]=x-L-2:Y[e]=O-b/2},tn=function(e){[Z,J]=[J,Z],tt=e},ta=()=>{!1!==to.apply(0,Z)?!1!==tr.apply(0,J)||tt||(tn(!0),ta()):tt?Y.x=Y.y=0:(tn(!0),ta())};return(j&&!F||this.len>1)&&tn(),ta(),Y}hide(e){let x=this;O.clearTimeout(this.hideTimer),e=ti(e,this.options.hideDelay),this.isHidden||(this.hideTimer=tr(function(){let b=x.getLabel();x.getLabel().animate({opacity:0},{duration:e?150:e,complete:()=>{b.hide(),x.container&&x.container.remove()}}),x.isHidden=!0},e))}init(e,x){this.chart=e,this.options=x,this.crosshairs=[],this.isHidden=!0,this.split=x.split&&!e.inverted&&!e.polar,this.shared=x.shared||this.split,this.outside=ti(x.outside,!!(e.scrollablePixelsX||e.scrollablePixelsY))}shouldStickOnContact(e){return!!(!this.followPointer&&this.options.stickOnContact&&(!e||this.pointer.inClass(e.target,”highcharts-tooltip”)))}move(e,x,b,E){let L=this,O=j(!L.isHidden&&L.options.animation),D=L.followPointer||(L.len||0)>1,R={x:e,y:x};D||(R.anchorX=b,R.anchorY=E),O.step=()=>L.drawTracker(),L.getLabel().animate(R,O)}refresh(e,x){let{chart:b,options:E,pointer:L,shared:D}=this,j=to(e),z=j[0],F=[],H=E.format,U=E.formatter||this.defaultFormatter,Y=b.styledMode,V={};if(!E.enabled||!z.series)return;O.clearTimeout(this.hideTimer),this.allowShared=!(!Z(e)&&e.series&&e.series.noSharedTooltip),this.followPointer=!this.split&&z.series.tooltipOptions.followPointer;let q=this.getAnchor(e,x),K=q[0],$=q[1];D&&this.allowShared?(L.applyInactiveState(j),j.forEach(function(e){e.setState(“hover”),F.push(e.getLabelConfig())}),(V=z.getLabelConfig()).points=F):V=z.getLabelConfig(),this.len=F.length;let J=tt(H)?R(H,V,b):U.call(V,this),te=z.series;if(this.distance=ti(te.tooltipOptions.distance,16),!1===J)this.hide();else{if(this.split&&this.allowShared)this.renderSplit(J,j);else{let e=K,O=$;if(x&&L.isDirectTouch&&(e=x.chartX-b.plotLeft,O=x.chartY-b.plotTop),!(b.polar||!1===te.options.clip||j.some(x=>L.isDirectTouch||x.series.shouldShowTooltip(e,O))))return void this.hide();{let e=this.getLabel();(!E.style.width||Y)&&e.css({width:(this.outside?this.getPlayingField():b.spacingBox).width+”px”}),e.attr({text:J&&J.join?J.join(“”):J}),e.addClass(this.getClassName(z),!0),Y||e.attr({stroke:E.borderColor||z.color||te.color||”#666666″}),this.updatePosition({plotX:K,plotY:$,negative:z.negative,ttBelow:z.ttBelow,h:q[2]||0})}}this.isHidden&&this.label&&this.label.attr({opacity:1}).show(),this.isHidden=!1}_(this,”refresh”)}renderSplit(e,x){let b=this,{chart:E,chart:{chartWidth:L,chartHeight:O,plotHeight:D,plotLeft:j,plotTop:R,scrollablePixelsY:z=0,scrollablePixelsX:Y,styledMode:q},distance:K,options:_,options:{positioner:Z},pointer:J}=b,{scrollLeft:te=0,scrollTop:ts=0}=E.scrollablePlotArea?.scrollingContainer||{},to=b.outside&&”number”!=typeof Y?F.documentElement.getBoundingClientRect():{left:te,right:te+L,top:ts,bottom:ts+O},tr=b.getLabel(),tn=this.renderer||E.renderer,ta=!!(E.xAxis[0]&&E.xAxis[0].opposite),{left:tl,top:th}=J.getChartPosition(),td=R+ts,tc=0,tp=D-z;function tu(e,x,E,L,O=!0){let D,j;return E?(D=ta?0:tp,j=V(e-L/2,to.left,to.right-L-(b.outside?tl:0))):(D=x-td,j=V(j=O?e-L-K:e+K,O?j:to.left,to.right)),{x:j,y:D}}tt(e)&&(e=[!1,e]);let tg=e.slice(0,x.length+1).reduce(function(e,E,L){if(!1!==E&&””!==E){let O=x[L-1]||{isHeader:!0,plotX:x[0].plotX,plotY:D,series:{}},z=O.isHeader,F=z?b:O.series,H=F.tt=function(e,x,E){let L=e,{isHeader:O,series:D}=x;if(!L){let e={padding:_.padding,r:_.borderRadius};q||(e.fill=_.backgroundColor,e[“stroke-width”]=_.borderWidth??1),L=tn.label(“”,0,0,_[O?”headerShape”:”shape”],void 0,void 0,_.useHTML).addClass(b.getClassName(x,!0,O)).attr(e).add(tr)}return L.isActive=!0,L.attr({text:E}),q||L.css(_.style).attr({stroke:_.borderColor||x.color||D.color||”#333333″}),L}(F.tt,O,E.toString()),U=H.getBBox(),Y=U.width+H.strokeWidth();z&&(tc=U.height,tp+=tc,ta&&(td-=tc));let{anchorX:$,anchorY:J}=function(e){let x,b,{isHeader:E,plotX:L=0,plotY:O=0,series:z}=e;if(E)x=Math.max(j+L,j),b=R+D/2;else{let{xAxis:e,yAxis:E}=z;x=e.pos+V(L,-K,e.len+K),z.shouldShowTooltip(0,E.pos-R+O,{ignoreX:!0})&&(b=E.pos+O)}return{anchorX:x=V(x,to.left-K,to.right+K),anchorY:b}}(O);if(“number”==typeof J){let x=U.height+1,E=Z?Z.call(b,Y,x,O):tu($,J,z,Y);e.push({align:Z?0:void 0,anchorX:$,anchorY:J,boxWidth:Y,point:O,rank:ti(E.rank,+!!z),size:x,target:E.y,tt:H,x:E.x})}else H.isActive=!1}return e},[]);!Z&&tg.some(e=>{let{outside:x}=b,E=(x?tl:0)+e.anchorX;return EE})&&(tg=tg.map(e=>{let{x:x,y:b}=tu(e.anchorX,e.anchorY,e.point.isHeader,e.boxWidth,!1);return $(e,{target:b,x:x})})),b.cleanSplit(),U(tg,tp);let tm={left:tl,right:tl};tg.forEach(function(e){let{x:x,boxWidth:E,isHeader:L}=e;!L&&(b.outside&&tl+xtm.right&&(tm.right=tl+x))}),tg.forEach(function(e){let{x:x,anchorX:E,anchorY:L,pos:O,point:{isHeader:D}}=e,j={visibility:void 0===O?”hidden”:”inherit”,x:x,y:(O||0)+td,anchorX:E,anchorY:L};if(b.outside&&x0&&(D||(j.x=x+e,j.anchorX=E+e),D&&(j.x=(tm.right-tm.left)/2,j.anchorX=E+e))}e.tt.attr(j)});let{container:tf,outside:tx,renderer:tb}=b;if(tx&&tf&&tb){let{width:e,height:x,x:b,y:E}=tr.getBBox();tb.setSize(e+b,x+E,!1),tf.style.left=tm.left+”px”,tf.style.top=th+”px”}H&&tr.attr({opacity:1===tr.opacity?.999:1})}drawTracker(){if(!this.shouldStickOnContact()){this.tracker&&(this.tracker=this.tracker.destroy());return}let e=this.chart,x=this.label,b=this.shared?e.hoverPoints:e.hoverPoint;if(!x||!b)return;let E={x:0,y:0,width:0,height:0},L=this.getAnchor(b),O=x.getBBox();L[0]+=e.plotLeft-(x.translateX||0),L[1]+=e.plotTop-(x.translateY||0),E.x=Math.min(0,L[0]),E.y=Math.min(0,L[1]),E.width=L[0]<0?Math.max(Math.abs(L[0]),O.width-L[0]):Math.max(Math.abs(L[0]),O.width),E.height=L[1]<0?Math.max(Math.abs(L[1]),O.height-Math.abs(L[1])):Math.max(Math.abs(L[1]),O.height),this.tracker?this.tracker.attr(E):(this.tracker=x.renderer.rect(E).addClass("highcharts-tracker").add(x),e.styledMode||this.tracker.attr({fill:"rgba(0,0,0,0)"}))}styledModeFormat(e){return e.replace('style="font-size: 0.8em"','class="highcharts-header"').replace(/style="color:{(point|series)\.color}"/g,'class="highcharts-color-{$1.colorIndex} {series.options.className} {point.options.className}"')}tooltipFooterHeaderFormatter(e,x){let b=e.series,E=b.tooltipOptions,L=b.xAxis,O=L&&L.dateTime,D={isFooter:x,labelConfig:e},j=E.xDateFormat,z=E[x?"footerFormat":"headerFormat"];return _(this,"headerFormatter",D,function(x){O&&!j&&J(e.key)&&(j=O.getXDateFormat(e.key,E.dateTimeLabelFormats)),O&&j&&(e.point&&e.point.tooltipDateKeys||["key"]).forEach(function(e){z=z.replace("{point."+e+"}","{point."+e+":"+j+"}")}),b.chart.styledMode&&(z=this.styledModeFormat(z)),x.text=R(z,{point:e,series:b},this.chart)}),D.text}update(e){this.destroy(),this.init(this.chart,te(!0,this.options,e))}updatePosition(e){let{chart:x,container:b,distance:E,options:L,pointer:O,renderer:D}=this,{height:j=0,width:R=0}=this.getLabel(),{left:z,top:F,scaleX:H,scaleY:U}=O.getChartPosition(),Y=(L.positioner||this.getPosition).call(this,R,j,e),V=(e.plotX||0)+x.plotLeft,K=(e.plotY||0)+x.plotTop,$;D&&b&&(L.positioner&&(Y.x+=z-E,Y.y+=F-E),$=(L.borderWidth||0)+2*E+2,D.setSize(R+$,j+$,!1),(1!==H||1!==U)&&(q(b,{transform:`scale(${H}, ${U})`}),V*=H,K*=U),V+=z-Y.x,K+=F-Y.y),this.move(Math.round(Y.x),Math.round(Y.y||0),V,K)}};return(D=T||(T={})).compose=function(e){ts(z,"Core.Tooltip")&&Y(e,"afterInit",function(){let e=this.chart;e.options.tooltip&&(e.tooltip=new D(e,e.options.tooltip,this))})},T}),b(x,"Core/Series/Point.js",[x["Core/Renderer/HTML/AST.js"],x["Core/Animation/AnimationUtilities.js"],x["Core/Defaults.js"],x["Core/Templating.js"],x["Core/Utilities.js"]],function(e,x,b,E,L){let{animObject:O}=x,{defaultOptions:D}=b,{format:j}=E,{addEvent:R,crisp:z,erase:F,extend:H,fireEvent:U,getNestedProperty:Y,isArray:V,isFunction:q,isNumber:K,isObject:$,merge:_,pick:Z,syncTimeout:J,removeEvent:tt,uniqueKey:te}=L;let M=class M{animateBeforeDestroy(){let e=this,x={x:e.startXPos,opacity:0},b=e.getGraphicalProps();b.singular.forEach(function(b){e[b]=e[b].animate("dataLabel"===b?{x:e[b].startXPos,y:e[b].startYPos,opacity:0}:x)}),b.plural.forEach(function(x){e[x].forEach(function(x){x.element&&x.animate(H({x:e.startXPos},x.startYPos?{x:x.startXPos,y:x.startYPos}:{}))})})}applyOptions(e,x){let b=this.series,E=b.options.pointValKey||b.pointValKey;return H(this,e=M.prototype.optionsToObject.call(this,e)),this.options=this.options?H(this.options,e):e,e.group&&delete this.group,e.dataLabels&&delete this.dataLabels,E&&(this.y=M.prototype.getNestedProperty.call(this,E)),this.selected&&(this.state="select"),"name"in this&&void 0===x&&b.xAxis&&b.xAxis.hasNames&&(this.x=b.xAxis.nameToX(this)),void 0===this.x&&b?void 0===x?this.x=b.autoIncrement():this.x=x:K(e.x)&&b.options.relativeXValue&&(this.x=b.autoIncrement(e.x)),this.isNull=this.isValid&&!this.isValid(),this.formatPrefix=this.isNull?"null":"point",this}destroy(){if(!this.destroyed){let e=this,x=e.series,b=x.chart,E=x.options.dataSorting,L=b.hoverPoints,D=O(e.series.chart.renderer.globalAnimation),j=()=>{for(let x in(e.graphic||e.graphics||e.dataLabel||e.dataLabels)&&(tt(e),e.destroyElements()),e)delete e[x]};e.legendItem&&b.legend.destroyItem(e),L&&(e.setState(),F(L,e),L.length||(b.hoverPoints=null)),e===b.hoverPoint&&e.onMouseOut(),E&&E.enabled?(this.animateBeforeDestroy(),J(j,D.duration)):j(),b.pointCount–}this.destroyed=!0}destroyElements(e){let x=this,b=x.getGraphicalProps(e);b.singular.forEach(function(e){x[e]=x[e].destroy()}),b.plural.forEach(function(e){x[e].forEach(function(e){e&&e.element&&e.destroy()}),delete x[e]})}firePointEvent(e,x,b){let E=this,L=this.series.options;E.manageEvent(e),”click”===e&&L.allowPointSelect&&(b=function(e){!E.destroyed&&E.select&&E.select(null,e.ctrlKey||e.metaKey||e.shiftKey)}),U(E,e,x,b)}getClassName(){return”highcharts-point”+(this.selected?” highcharts-point-select”:””)+(this.negative?” highcharts-negative”:””)+(this.isNull?” highcharts-null-point”:””)+(void 0!==this.colorIndex?” highcharts-color-“+this.colorIndex:””)+(this.options.className?” “+this.options.className:””)+(this.zone&&this.zone.className?” “+this.zone.className.replace(“highcharts-negative”,””):””)}getGraphicalProps(e){let x,b,E=this,L=[],O={singular:[],plural:[]};for((e=e||{graphic:1,dataLabel:1}).graphic&&L.push(“graphic”,”connector”),e.dataLabel&&L.push(“dataLabel”,”dataLabelPath”,”dataLabelUpper”),b=L.length;b–;)E[x=L[b]]&&O.singular.push(x);return[“graphic”,”dataLabel”].forEach(function(x){let b=x+”s”;e[x]&&E[b]&&O.plural.push(b)}),O}getLabelConfig(){return{x:this.category,y:this.y,color:this.color,colorIndex:this.colorIndex,key:this.name||this.category,series:this.series,point:this,percentage:this.percentage,total:this.total||this.stackTotal}}getNestedProperty(e){return e?0===e.indexOf(“custom.”)?Y(e,this.options):this[e]:void 0}getZone(){let e=this.series,x=e.zones,b=e.zoneAxis||”y”,E,L=0;for(E=x[0];this[b]>=E.value;)E=x[++L];return this.nonZonedColor||(this.nonZonedColor=this.color),E&&E.color&&!this.options.color?this.color=E.color:this.color=this.nonZonedColor,E}hasNewShapeType(){return(this.graphic&&(this.graphic.symbolName||this.graphic.element.nodeName))!==this.shapeType}constructor(e,x,b){this.formatPrefix=”point”,this.visible=!0,this.series=e,this.applyOptions(x,b),this.id??(this.id=te()),this.resolveColor(),e.chart.pointCount++,U(this,”afterInit”)}isValid(){return(K(this.x)||this.x instanceof Date)&&K(this.y)}optionsToObject(e){let x=this.series,b=x.options.keys,E=b||x.pointArrayMap||[“y”],L=E.length,O={},D,j=0,R=0;if(K(e)||null===e)O[E[0]]=e;else if(V(e))for(!b&&e.length>L&&(“string”==(D=typeof e[0])?O.name=e[0]:”number”===D&&(O.x=e[0]),j++);R0?M.prototype.setNestedProperty(O,e[j],E[R]):O[E[R]]=e[j]),j++,R++;else”object”==typeof e&&(O=e,e.dataLabels&&(x.hasDataLabels=()=>!0),e.marker&&(x._hasPointMarkers=!0));return O}pos(e,x=this.plotY){if(!this.destroyed){let{plotX:b,series:E}=this,{chart:L,xAxis:O,yAxis:D}=E,j=0,R=0;if(K(b)&&K(x))return e&&(j=O?O.pos:L.plotLeft,R=D?D.pos:L.plotTop),L.inverted&&O&&D?[D.len-x+R,O.len-b+j]:[b+j,x+R]}}resolveColor(){let e=this.series,x=e.chart.options.chart,b=e.chart.styledMode,E,L,O=x.colorCount,D;delete this.nonZonedColor,e.options.colorByPoint?(b||(E=(L=e.options.colors||e.chart.options.colors)[e.colorCounter],O=L.length),D=e.colorCounter,e.colorCounter++,e.colorCounter===O&&(e.colorCounter=0)):(b||(E=e.color),D=e.colorIndex),this.colorIndex=Z(this.options.colorIndex,D),this.color=Z(this.options.color,E)}setNestedProperty(e,x,b){return b.split(“.”).reduce(function(e,b,E,L){let O=L.length-1===E;return e[b]=O?x:$(e[b],!0)?e[b]:{},e[b]},e),e}shouldDraw(){return!this.isNull}tooltipFormatter(e){let x=this.series,b=x.tooltipOptions,E=Z(b.valueDecimals,””),L=b.valuePrefix||””,O=b.valueSuffix||””;return x.chart.styledMode&&(e=x.chart.tooltip.styledModeFormat(e)),(x.pointArrayMap||[“y”]).forEach(function(x){x=”{point.”+x,(L||O)&&(e=e.replace(RegExp(x+”}”,”g”),L+x+”}”+O)),e=e.replace(RegExp(x+”}”,”g”),x+”:,.”+E+”f}”)}),j(e,{point:this,series:this.series},x.chart)}update(e,x,b,E){let L,O=this,D=O.series,j=O.graphic,R=D.chart,z=D.options;function F(){O.applyOptions(e);let E=j&&O.hasMockGraphic,F=null===O.y?!E:E;j&&F&&(O.graphic=j.destroy(),delete O.hasMockGraphic),$(e,!0)&&(j&&j.element&&e&&e.marker&&void 0!==e.marker.symbol&&(O.graphic=j.destroy()),e?.dataLabels&&O.dataLabel&&(O.dataLabel=O.dataLabel.destroy())),L=O.index,D.updateParallelArrays(O,L),z.data[L]=$(z.data[L],!0)||$(e,!0)?O.options:Z(e,z.data[L]),D.isDirty=D.isDirtyData=!0,!D.fixedBox&&D.hasCartesianSeries&&(R.isDirtyBox=!0),”point”===z.legendType&&(R.isDirtyLegend=!0),x&&R.redraw(b)}x=Z(x,!0),!1===E?F():O.firePointEvent(“update”,{options:e},F)}remove(e,x){this.series.removePoint(this.series.data.indexOf(this),e,x)}select(e,x){let b=this,E=b.series,L=E.chart;e=Z(e,!b.selected),this.selectedStaging=e,b.firePointEvent(e?”select”:”unselect”,{accumulate:x},function(){b.selected=b.options.selected=e,E.options.data[E.data.indexOf(b)]=b.options,b.setState(e&&”select”),x||L.getSelectedPoints().forEach(function(e){let x=e.series;e.selected&&e!==b&&(e.selected=e.options.selected=!1,x.options.data[x.data.indexOf(e)]=e.options,e.setState(L.hoverPoints&&x.options.inactiveOtherPoints?”inactive”:””),e.firePointEvent(“unselect”))})}),delete this.selectedStaging}onMouseOver(e){let{inverted:x,pointer:b}=this.series.chart;b&&(e=e?b.normalize(e):b.getChartCoordinatesFromPoint(this,x),b.runPointActions(e,this))}onMouseOut(){let e=this.series.chart;this.firePointEvent(“mouseOut”),this.series.options.inactiveOtherPoints||(e.hoverPoints||[]).forEach(function(e){e.setState()}),e.hoverPoints=e.hoverPoint=null}manageEvent(e){let x=_(this.series.options.point,this.options),b=x.events?.[e];q(b)&&(!this.hcEvents?.[e]||this.hcEvents?.[e]?.map(e=>e.fn).indexOf(b)===-1)?(R(this,e,b),this.hasImportedEvents=!0):this.hasImportedEvents&&!b&&this.hcEvents?.[e]&&(tt(this,e),delete this.hcEvents[e],Object.keys(this.hcEvents)||(this.hasImportedEvents=!1))}setState(x,b){let E=this.series,L=this.state,O=E.options.states[x||”normal”]||{},j=D.plotOptions[E.type].marker&&E.options.marker,R=j&&!1===j.enabled,z=j&&j.states&&j.states[x||”normal”]||{},F=!1===z.enabled,Y=this.marker||{},V=E.chart,q=j&&E.markerAttribs,$=E.halo,_,J,tt,te=E.stateMarkerGraphic,ti;if((x=x||””)===this.state&&!b||this.selected&&”select”!==x||!1===O.enabled||x&&(F||R&&!1===z.enabled)||x&&Y.states&&Y.states[x]&&!1===Y.states[x].enabled)return;if(this.state=x,q&&(_=E.markerAttribs(this,x)),this.graphic&&!this.hasMockGraphic){if(L&&this.graphic.removeClass(“highcharts-point-“+L),x&&this.graphic.addClass(“highcharts-point-“+x),!V.styledMode){J=E.pointAttribs(this,x),tt=Z(V.options.chart.animation,O.animation);let e=J.opacity;E.options.inactiveOtherPoints&&K(e)&&(this.dataLabels||[]).forEach(function(x){x&&!x.hasClass(“highcharts-data-label-hidden”)&&(x.animate({opacity:e},tt),x.connector&&x.connector.animate({opacity:e},tt))}),this.graphic.animate(J,tt)}_&&this.graphic.animate(_,Z(V.options.chart.animation,z.animation,j.animation)),te&&te.hide()}else x&&z&&(ti=Y.symbol||E.symbol,te&&te.currentSymbol!==ti&&(te=te.destroy()),_&&(te?te[b?”animate”:”attr”]({x:_.x,y:_.y}):ti&&(E.stateMarkerGraphic=te=V.renderer.symbol(ti,_.x,_.y,_.width,_.height).add(E.markerGroup),te.currentSymbol=ti)),!V.styledMode&&te&&”inactive”!==this.state&&te.attr(E.pointAttribs(this,x))),te&&(te[x&&this.isInside?”show”:”hide”](),te.element.point=this,te.addClass(this.getClassName(),!0));let ts=O.halo,to=this.graphic||te,tr=to&&to.visibility||”inherit”;ts&&ts.size&&to&&”hidden”!==tr&&!this.isCluster?($||(E.halo=$=V.renderer.path().add(to.parentGroup)),$.show()[b?”animate”:”attr”]({d:this.haloPath(ts.size)}),$.attr({class:”highcharts-halo highcharts-color-“+Z(this.colorIndex,E.colorIndex)+(this.className?” “+this.className:””),visibility:tr,zIndex:-1}),$.point=this,V.styledMode||$.attr(H({fill:this.color||E.color,”fill-opacity”:ts.opacity},e.filterUserAttributes(ts.attributes||{})))):$?.point?.haloPath&&!$.point.destroyed&&$.animate({d:$.point.haloPath(0)},null,$.hide),U(this,”afterSetState”,{state:x})}haloPath(e){let x=this.pos();return x?this.series.chart.renderer.symbols.circle(z(x[0],1)-e,x[1]-e,2*e,2*e):[]}};return M}),b(x,”Core/Pointer.js”,[x[“Core/Color/Color.js”],x[“Core/Globals.js”],x[“Core/Utilities.js”]],function(e,x,b){var E;let{parse:L}=e,{charts:O,composed:D,isTouchDevice:j}=x,{addEvent:R,attr:z,css:F,extend:H,find:U,fireEvent:Y,isNumber:V,isObject:q,objectEach:K,offset:$,pick:_,pushUnique:Z,splat:J}=b;let S=class S{applyInactiveState(e){let x=[],b;(e||[]).forEach(function(e){b=e.series,x.push(b),b.linkedParent&&x.push(b.linkedParent),b.linkedSeries&&(x=x.concat(b.linkedSeries)),b.navigatorSeries&&x.push(b.navigatorSeries)}),this.chart.series.forEach(function(e){-1===x.indexOf(e)?e.setState(“inactive”,!0):e.options.inactiveOtherPoints&&e.setAllPointsToState(“inactive”)})}destroy(){let e=this;this.eventsToUnbind.forEach(e=>e()),this.eventsToUnbind=[],!x.chartCount&&(S.unbindDocumentMouseUp&&(S.unbindDocumentMouseUp=S.unbindDocumentMouseUp()),S.unbindDocumentTouchEnd&&(S.unbindDocumentTouchEnd=S.unbindDocumentTouchEnd())),clearInterval(e.tooltipTimeout),K(e,function(x,b){e[b]=void 0})}getSelectionMarkerAttrs(e,x){let b={args:{chartX:e,chartY:x},attrs:{},shapeType:”rect”};return Y(this,”getSelectionMarkerAttrs”,b,b=>{let E,{chart:L,zoomHor:O,zoomVert:D}=this,{mouseDownX:j=0,mouseDownY:R=0}=L,z=b.attrs;z.x=L.plotLeft,z.y=L.plotTop,z.width=O?1:L.plotWidth,z.height=D?1:L.plotHeight,O&&(z.width=Math.max(1,Math.abs(E=e-j)),z.x=(E>0?0:E)+j),D&&(z.height=Math.max(1,Math.abs(E=x-R)),z.y=(E>0?0:E)+R)}),b}drag(e){let{chart:x}=this,{mouseDownX:b=0,mouseDownY:E=0}=x,{panning:O,panKey:D,selectionMarkerFill:j}=x.options.chart,R=x.plotLeft,z=x.plotTop,F=x.plotWidth,H=x.plotHeight,U=q(O)?O.enabled:O,Y=D&&e[`${D}Key`],V=e.chartX,K=e.chartY,$,_=this.selectionMarker;if((!_||!_.touch)&&(VR+F&&(V=R+F),Kz+H&&(K=z+H),this.hasDragged=Math.sqrt(Math.pow(b-V,2)+Math.pow(E-K,2)),this.hasDragged>10)){$=x.isInsidePlot(b-R,E-z,{visiblePlotOnly:!0});let{shapeType:D,attrs:F}=this.getSelectionMarkerAttrs(V,K);(x.hasCartesianSeries||x.mapView)&&this.hasZoom&&$&&!Y&&!_&&(this.selectionMarker=_=x.renderer[D](),_.attr({class:”highcharts-selection-marker”,zIndex:7}).add(),x.styledMode||_.attr({fill:j||L(“#334eff”).setOpacity(.25).get()})),_&&_.attr(F),$&&!_&&U&&x.pan(e,O)}}dragStart(e){let x=this.chart;x.mouseIsDown=e.type,x.cancelClick=!1,x.mouseDownX=e.chartX,x.mouseDownY=e.chartY}getSelectionBox(e){let x={args:{marker:e},result:e.getBBox()};return Y(this,”getSelectionBox”,x),x.result}drop(e){let x,{chart:b,selectionMarker:E}=this;for(let e of b.axes)e.isPanning&&(e.isPanning=!1,(e.options.startOnTick||e.options.endOnTick||e.series.some(e=>e.boosted))&&(e.forceRedraw=!0,e.setExtremes(e.userMin,e.userMax,!1),x=!0));if(x&&b.redraw(),E&&e){if(this.hasDragged){let x=this.getSelectionBox(E);b.transform({axes:b.axes.filter(e=>e.zoomEnabled&&(“xAxis”===e.coll&&this.zoomX||”yAxis”===e.coll&&this.zoomY)),selection:{originalEvent:e,xAxis:[],yAxis:[],…x},from:x})}V(b.index)&&(this.selectionMarker=E.destroy())}b&&V(b.index)&&(F(b.container,{cursor:b._cursor}),b.cancelClick=this.hasDragged>10,b.mouseIsDown=!1,this.hasDragged=0,this.pinchDown=[])}findNearestKDPoint(e,x,b){let E;return e.forEach(function(e){var L;let O,D,j,R=!(e.noSharedTooltip&&x)&&0>e.options.findNearestPointBy.indexOf(“y”),z=e.searchPoint(b,R);q(z,!0)&&z.series&&(!q(E,!0)||(O=(L=E).distX-z.distX,D=L.dist-z.dist,j=z.series.group?.zIndex-L.series.group?.zIndex,(0!==O&&x?O:0!==D?D:0!==j?j:L.series.index>z.series.index?-1:1)>0))&&(E=z)}),E}getChartCoordinatesFromPoint(e,x){let{xAxis:b,yAxis:E}=e.series,L=e.shapeArgs;if(b&&E){let O=e.clientX??e.plotX??0,D=e.plotY||0;return e.isNode&&L&&V(L.x)&&V(L.y)&&(O=L.x,D=L.y),x?{chartX:E.len+E.pos-D,chartY:b.len+b.pos-O}:{chartX:O+b.pos,chartY:D+E.pos}}if(L&&L.x&&L.y)return{chartX:L.x,chartY:L.y}}getChartPosition(){if(this.chartPosition)return this.chartPosition;let{container:e}=this.chart,x=$(e);this.chartPosition={left:x.left,top:x.top,scaleX:1,scaleY:1};let{offsetHeight:b,offsetWidth:E}=e;return E>2&&b>2&&(this.chartPosition.scaleX=x.width/E,this.chartPosition.scaleY=x.height/b),this.chartPosition}getCoordinates(e){let x={xAxis:[],yAxis:[]};for(let b of this.chart.axes)x[b.isXAxis?”xAxis”:”yAxis”].push({axis:b,value:b.toValue(e[b.horiz?”chartX”:”chartY”])});return x}getHoverData(e,x,b,E,L,O){let D=[],j=function(e){return e.visible&&!(!L&&e.directTouch)&&_(e.options.enableMouseTracking,!0)},R=x,z,F={chartX:O?O.chartX:void 0,chartY:O?O.chartY:void 0,shared:L};Y(this,”beforeGetHoverData”,F),z=R&&!R.stickyTracking?[R]:b.filter(e=>e.stickyTracking&&(F.filter||j)(e));let H=E&&e||!O?e:this.findNearestKDPoint(z,L,O);return R=H&&H.series,H&&(L&&!R.noSharedTooltip?(z=b.filter(function(e){return F.filter?F.filter(e):j(e)&&!e.noSharedTooltip})).forEach(function(e){let x=U(e.points,function(e){return e.x===H.x&&!e.isNull});q(x)&&(e.boosted&&e.boost&&(x=e.boost.getPoint(x)),D.push(x))}):D.push(H)),Y(this,”afterGetHoverData”,F={hoverPoint:H}),{hoverPoint:F.hoverPoint,hoverSeries:R,hoverPoints:D}}getPointFromEvent(e){let x=e.target,b;for(;x&&!b;)b=x.point,x=x.parentNode;return b}onTrackerMouseOut(e){let x=this.chart,b=e.relatedTarget,E=x.hoverSeries;this.isDirectTouch=!1,!E||!b||E.stickyTracking||this.inClass(b,”highcharts-tooltip”)||this.inClass(b,”highcharts-series-“+E.index)&&this.inClass(b,”highcharts-tracker”)||E.onMouseOut()}inClass(e,x){let b=e,E;for(;b;){if(E=z(b,”class”)){if(-1!==E.indexOf(x))return!0;if(-1!==E.indexOf(“highcharts-container”))return!1}b=b.parentElement}}constructor(e,x){this.hasDragged=0,this.pointerCaptureEventsToUnbind=[],this.eventsToUnbind=[],this.options=x,this.chart=e,this.runChartClick=!!x.chart.events?.click,this.pinchDown=[],this.setDOMEvents(),Y(this,”afterInit”)}normalize(e,x){let b=e.touches,E=b?b.length?b.item(0):_(b.changedTouches,e.changedTouches)[0]:e;x||(x=this.getChartPosition());let L=E.pageX-x.left,O=E.pageY-x.top;return H(e,{chartX:Math.round(L/=x.scaleX),chartY:Math.round(O/=x.scaleY)})}onContainerClick(e){let x=this.chart,b=x.hoverPoint,E=this.normalize(e),L=x.plotLeft,O=x.plotTop;!x.cancelClick&&(b&&this.inClass(E.target,”highcharts-tracker”)?(Y(b.series,”click”,H(E,{point:b})),x.hoverPoint&&b.firePointEvent(“click”,E)):(H(E,this.getCoordinates(E)),x.isInsidePlot(E.chartX-L,E.chartY-O,{visiblePlotOnly:!0})&&Y(x,”click”,E)))}onContainerMouseDown(e){let b=(1&(e.buttons||e.button))==1;e=this.normalize(e),x.isFirefox&&0!==e.button&&this.onContainerMouseMove(e),(void 0===e.button||b)&&(this.zoomOption(e),b&&e.preventDefault?.(),this.dragStart(e))}onContainerMouseLeave(e){let{pointer:x}=O[_(S.hoverChartIndex,-1)]||{};e=this.normalize(e),this.onContainerMouseMove(e),x&&e.relatedTarget&&!this.inClass(e.relatedTarget,”highcharts-tooltip”)&&(x.reset(),x.chartPosition=void 0)}onContainerMouseEnter(){delete this.chartPosition}onContainerMouseMove(e){let x=this.chart,b=x.tooltip,E=this.normalize(e);this.setHoverChartIndex(e),(“mousedown”===x.mouseIsDown||this.touchSelect(E))&&this.drag(E),!x.openMenu&&(this.inClass(E.target,”highcharts-tracker”)||x.isInsidePlot(E.chartX-x.plotLeft,E.chartY-x.plotTop,{visiblePlotOnly:!0}))&&!(b&&b.shouldStickOnContact(E))&&(this.inClass(E.target,”highcharts-no-tooltip”)?this.reset(!1,0):this.runPointActions(E))}onDocumentTouchEnd(e){this.onDocumentMouseUp(e)}onContainerTouchMove(e){this.touchSelect(e)?this.onContainerMouseMove(e):this.touch(e)}onContainerTouchStart(e){this.touchSelect(e)?this.onContainerMouseDown(e):(this.zoomOption(e),this.touch(e,!0))}onDocumentMouseMove(e){let x=this.chart,b=x.tooltip,E=this.chartPosition,L=this.normalize(e,E);!E||x.isInsidePlot(L.chartX-x.plotLeft,L.chartY-x.plotTop,{visiblePlotOnly:!0})||b&&b.shouldStickOnContact(L)||this.inClass(L.target,”highcharts-tracker”)||this.reset()}onDocumentMouseUp(e){O[_(S.hoverChartIndex,-1)]?.pointer?.drop(e)}pinch(e){let x=this,{chart:b,hasZoom:E,lastTouches:L}=x,O=[].map.call(e.touches||[],e=>x.normalize(e)),D=O.length,j=1===D&&(x.inClass(e.target,”highcharts-tracker”)&&b.runTrackerClick||x.runChartClick),R=b.tooltip,z=1===D&&_(R?.options.followTouchMove,!0);D>1?x.initiated=!0:z&&(x.initiated=!1),E&&x.initiated&&!j&&!1!==e.cancelable&&e.preventDefault(),”touchstart”===e.type?(x.pinchDown=O,x.res=!0):z?this.runPointActions(x.normalize(e)):L&&(Y(b,”touchpan”,{originalEvent:e,touches:O},()=>{let x=e=>{let x=e[0],b=e[1]||x;return{x:x.chartX,y:x.chartY,width:b.chartX-x.chartX,height:b.chartY-x.chartY}};b.transform({axes:b.axes.filter(e=>e.zoomEnabled&&(this.zoomHor&&e.horiz||this.zoomVert&&!e.horiz)),to:x(O),from:x(L),trigger:e.type})}),x.res&&(x.res=!1,this.reset(!1,0))),x.lastTouches=O}reset(e,x){let b=this.chart,E=b.hoverSeries,L=b.hoverPoint,O=b.hoverPoints,D=b.tooltip,j=D&&D.shared?O:L;e&&j&&J(j).forEach(function(x){x.series.isCartesian&&void 0===x.plotX&&(e=!1)}),e?D&&j&&J(j).length&&(D.refresh(j),D.shared&&O?O.forEach(function(e){e.setState(e.state,!0),e.series.isCartesian&&(e.series.xAxis.crosshair&&e.series.xAxis.drawCrosshair(null,e),e.series.yAxis.crosshair&&e.series.yAxis.drawCrosshair(null,e))}):L&&(L.setState(L.state,!0),b.axes.forEach(function(e){e.crosshair&&L.series[e.coll]===e&&e.drawCrosshair(null,L)}))):(L&&L.onMouseOut(),O&&O.forEach(function(e){e.setState()}),E&&E.onMouseOut(),D&&D.hide(x),this.unDocMouseMove&&(this.unDocMouseMove=this.unDocMouseMove()),b.axes.forEach(function(e){e.hideCrosshair()}),b.hoverPoints=b.hoverPoint=void 0)}runPointActions(e,x,b){let E=this.chart,L=E.series,D=E.tooltip&&E.tooltip.options.enabled?E.tooltip:void 0,j=!!D&&D.shared,z=x||E.hoverPoint,F=z&&z.series||E.hoverSeries,H=(!e||”touchmove”!==e.type)&&(!!x||F&&F.directTouch&&this.isDirectTouch),Y=this.getHoverData(z,F,L,H,j,e);z=Y.hoverPoint,F=Y.hoverSeries;let V=Y.hoverPoints,q=F&&F.tooltipOptions.followPointer&&!F.tooltipOptions.split,K=j&&F&&!F.noSharedTooltip;if(z&&(b||z!==E.hoverPoint||D&&D.isHidden)){if((E.hoverPoints||[]).forEach(function(e){-1===V.indexOf(e)&&e.setState()}),E.hoverSeries!==F&&F.onMouseOver(),this.applyInactiveState(V),(V||[]).forEach(function(e){e.setState(“hover”)}),E.hoverPoint&&E.hoverPoint.firePointEvent(“mouseOut”),!z.series)return;E.hoverPoints=V,E.hoverPoint=z,z.firePointEvent(“mouseOver”,void 0,()=>{D&&z&&D.refresh(K?V:z,e)})}else if(q&&D&&!D.isHidden){let x=D.getAnchor([{}],e);E.isInsidePlot(x[0],x[1],{visiblePlotOnly:!0})&&D.updatePosition({plotX:x[0],plotY:x[1]})}this.unDocMouseMove||(this.unDocMouseMove=R(E.container.ownerDocument,”mousemove”,e=>O[S.hoverChartIndex??-1]?.pointer?.onDocumentMouseMove(e)),this.eventsToUnbind.push(this.unDocMouseMove)),E.axes.forEach(function(x){let b,L=_((x.crosshair||{}).snap,!0);!L||(b=E.hoverPoint)&&b.series[x.coll]===x||(b=U(V,e=>e.series&&e.series[x.coll]===x)),b||!L?x.drawCrosshair(e,b):x.hideCrosshair()})}setDOMEvents(){let e=this.chart.container,x=e.ownerDocument;e.onmousedown=this.onContainerMouseDown.bind(this),e.onmousemove=this.onContainerMouseMove.bind(this),e.onclick=this.onContainerClick.bind(this),this.eventsToUnbind.push(R(e,”mouseenter”,this.onContainerMouseEnter.bind(this)),R(e,”mouseleave”,this.onContainerMouseLeave.bind(this))),S.unbindDocumentMouseUp||(S.unbindDocumentMouseUp=R(x,”mouseup”,this.onDocumentMouseUp.bind(this)));let b=this.chart.renderTo.parentElement;for(;b&&”BODY”!==b.tagName;)this.eventsToUnbind.push(R(b,”scroll”,()=>{delete this.chartPosition})),b=b.parentElement;this.eventsToUnbind.push(R(e,”touchstart”,this.onContainerTouchStart.bind(this),{passive:!1}),R(e,”touchmove”,this.onContainerTouchMove.bind(this),{passive:!1})),S.unbindDocumentTouchEnd||(S.unbindDocumentTouchEnd=R(x,”touchend”,this.onDocumentTouchEnd.bind(this),{passive:!1})),this.setPointerCapture(),R(this.chart,”redraw”,this.setPointerCapture.bind(this))}setPointerCapture(){if(!j)return;let e=this.pointerCaptureEventsToUnbind,x=this.chart,b=x.container,E=_(x.options.tooltip?.followTouchMove,!0)&&x.series.some(e=>e.options.findNearestPointBy.indexOf(“y”)>-1);!this.hasPointerCapture&&E?(e.push(R(b,”pointerdown”,e=>{e.target?.hasPointerCapture(e.pointerId)&&e.target?.releasePointerCapture(e.pointerId)}),R(b,”pointermove”,e=>{x.pointer?.getPointFromEvent(e)?.onMouseOver(e)})),x.styledMode||F(b,{“touch-action”:”none”}),b.className+=” highcharts-no-touch-action”,this.hasPointerCapture=!0):this.hasPointerCapture&&!E&&(e.forEach(e=>e()),e.length=0,x.styledMode||F(b,{“touch-action”:_(x.options.chart.style?.[“touch-action”],”manipulation”)}),b.className=b.className.replace(” highcharts-no-touch-action”,””),this.hasPointerCapture=!1)}setHoverChartIndex(e){let b=this.chart,E=x.charts[_(S.hoverChartIndex,-1)];E&&E!==b&&E.pointer?.onContainerMouseLeave(e||{relatedTarget:b.container}),E&&E.mouseIsDown||(S.hoverChartIndex=b.index)}touch(e,x){let b,{chart:E,pinchDown:L=[]}=this;this.setHoverChartIndex(),1===e.touches.length?(e=this.normalize(e),E.isInsidePlot(e.chartX-E.plotLeft,e.chartY-E.plotTop,{visiblePlotOnly:!0})&&!E.openMenu?(x&&this.runPointActions(e),”touchmove”===e.type&&(b=!!L[0]&&Math.pow(L[0].chartX-e.chartX,2)+Math.pow(L[0].chartY-e.chartY,2)>=16),_(b,!0)&&this.pinch(e)):x&&this.reset()):2===e.touches.length&&this.pinch(e)}touchSelect(e){return!!(this.chart.zooming.singleTouch&&e.touches&&1===e.touches.length)}zoomOption(e){let x=this.chart,b=x.inverted,E=x.zooming.type||””,L,O;/touch/.test(e.type)&&(E=_(x.zooming.pinchType,E)),this.zoomX=L=/x/.test(E),this.zoomY=O=/y/.test(E),this.zoomHor=L&&!b||O&&b,this.zoomVert=O&&!b||L&&b,this.hasZoom=L||O}};return(E=S||(S={})).compose=function(e){Z(D,”Core.Pointer”)&&R(e,”beforeRender”,function(){this.pointer=new E(this,this.options)})},S}),b(x,”Core/Legend/Legend.js”,[x[“Core/Animation/AnimationUtilities.js”],x[“Core/Templating.js”],x[“Core/Globals.js”],x[“Core/Series/Point.js”],x[“Core/Renderer/RendererUtilities.js”],x[“Core/Utilities.js”]],function(e,x,b,E,L,O){var D;let{animObject:j,setAnimation:R}=e,{format:z}=x,{composed:F,marginNames:H}=b,{distribute:U}=L,{addEvent:Y,createElement:V,css:q,defined:K,discardElement:$,find:_,fireEvent:Z,isNumber:J,merge:tt,pick:te,pushUnique:ti,relativeLength:ts,stableSort:to,syncTimeout:tr}=O;let T=class T{constructor(e,x){this.allItems=[],this.initialItemY=0,this.itemHeight=0,this.itemMarginBottom=0,this.itemMarginTop=0,this.itemX=0,this.itemY=0,this.lastItemY=0,this.lastLineHeight=0,this.legendHeight=0,this.legendWidth=0,this.maxItemWidth=0,this.maxLegendWidth=0,this.offsetWidth=0,this.padding=0,this.pages=[],this.symbolHeight=0,this.symbolWidth=0,this.titleHeight=0,this.totalItemWidth=0,this.widthOption=0,this.chart=e,this.setOptions(x),x.enabled&&(this.render(),Y(this.chart,”endResize”,function(){this.legend.positionCheckboxes()})),Y(this.chart,”render”,()=>{this.options.enabled&&this.proximate&&(this.proximatePositions(),this.positionItems())})}setOptions(e){let x=te(e.padding,8);this.options=e,this.chart.styledMode||(this.itemStyle=e.itemStyle,this.itemHiddenStyle=tt(this.itemStyle,e.itemHiddenStyle)),this.itemMarginTop=e.itemMarginTop,this.itemMarginBottom=e.itemMarginBottom,this.padding=x,this.initialItemY=x-5,this.symbolWidth=te(e.symbolWidth,16),this.pages=[],this.proximate=”proximate”===e.layout&&!this.chart.inverted,this.baseline=void 0}update(e,x){let b=this.chart;this.setOptions(tt(!0,this.options,e)),this.destroy(),b.isDirtyLegend=b.isDirtyBox=!0,te(x,!0)&&b.redraw(),Z(this,”afterUpdate”,{redraw:x})}colorizeItem(e,x){let{area:b,group:E,label:L,line:O,symbol:D}=e.legendItem||{};if(E?.[x?”removeClass”:”addClass”](“highcharts-legend-item-hidden”),!this.chart.styledMode){let{itemHiddenStyle:E={}}=this,j=E.color,{fillColor:R,fillOpacity:z,lineColor:F,marker:H}=e.options,U=e=>(!x&&(e.fill&&(e.fill=j),e.stroke&&(e.stroke=j)),e);L?.css(tt(x?this.itemStyle:E)),O?.attr(U({stroke:F||e.color})),D&&D.attr(U(H&&D.isMarker?e.pointAttribs():{fill:e.color})),b?.attr(U({fill:R||e.color,”fill-opacity”:R?1:z??.75}))}Z(this,”afterColorizeItem”,{item:e,visible:x})}positionItems(){this.allItems.forEach(this.positionItem,this),this.chart.isResizing||this.positionCheckboxes()}positionItem(e){let{group:x,x:b=0,y:E=0}=e.legendItem||{},L=this.options,O=L.symbolPadding,D=!L.rtl,j=e.checkbox;if(x&&x.element){let L={translateX:D?b:this.legendWidth-b-2*O-4,translateY:E};x[K(x.translateY)?”animate”:”attr”](L,void 0,()=>{Z(this,”afterPositionItem”,{item:e})})}j&&(j.x=b,j.y=E)}destroyItem(e){let x=e.checkbox,b=e.legendItem||{};for(let e of[“group”,”label”,”line”,”symbol”])b[e]&&(b[e]=b[e].destroy());x&&$(x),e.legendItem=void 0}destroy(){for(let e of this.getAllItems())this.destroyItem(e);for(let e of[“clipRect”,”up”,”down”,”pager”,”nav”,”box”,”title”,”group”])this[e]&&(this[e]=this[e].destroy());this.display=null}positionCheckboxes(){let e,x=this.group&&this.group.alignAttr,b=this.clipHeight||this.legendHeight,E=this.titleHeight;x&&(e=x.translateY,this.allItems.forEach(function(L){let O,D=L.checkbox;D&&(O=e+E+D.y+(this.scrollOffset||0)+3,q(D,{left:x.translateX+L.checkboxOffset+D.x-20+”px”,top:O+”px”,display:this.proximate||O>e-6&&O1.5*ti?J.height:ti))}layoutItem(e){let x=this.options,b=this.padding,E=”horizontal”===x.layout,L=e.itemHeight,O=this.itemMarginBottom,D=this.itemMarginTop,j=E?te(x.itemDistance,20):0,R=this.maxLegendWidth,z=x.alignColumns&&this.totalItemWidth>R?this.maxItemWidth:e.itemWidth,F=e.legendItem||{};E&&this.itemX-b+z>R&&(this.itemX=b,this.lastLineHeight&&(this.itemY+=D+this.lastLineHeight+O),this.lastLineHeight=0),this.lastItemY=D+this.itemY+O,this.lastLineHeight=Math.max(L,this.lastLineHeight),F.x=this.itemX,F.y=this.itemY,E?this.itemX+=z:(this.itemY+=D+L+O,this.lastLineHeight=L),this.offsetWidth=this.widthOption||Math.max((E?this.itemX-b-(e.checkbox?0:j):z)+b,this.offsetWidth)}getAllItems(){let e=[];return this.chart.series.forEach(function(x){let b=x&&x.options;x&&te(b.showInLegend,!K(b.linkedTo)&&void 0,!0)&&(e=e.concat((x.legendItem||{}).labels||(“point”===b.legendType?x.data:x)))}),Z(this,”afterGetAllItems”,{allItems:e}),e}getAlignment(){let e=this.options;return this.proximate?e.align.charAt(0)+”tv”:e.floating?””:e.align.charAt(0)+e.verticalAlign.charAt(0)+e.layout.charAt(0)}adjustMargins(e,x){let b=this.chart,E=this.options,L=this.getAlignment();L&&[/(lth|ct|rth)/,/(rtv|rm|rbv)/,/(rbh|cb|lbh)/,/(lbv|lm|ltv)/].forEach(function(O,D){O.test(L)&&!K(e[D])&&(b[H[D]]=Math.max(b[H[D]],b.legend[(D+1)%2?”legendHeight”:”legendWidth”]+[1,-1,-1,1][D]*E[D%2?”x”:”y”]+te(E.margin,12)+x[D]+(b.titleOffset[D]||0)))})}proximatePositions(){let e,x=this.chart,b=[],E=”left”===this.options.align;for(let L of(this.allItems.forEach(function(e){let L,O,D=E,j,R;e.yAxis&&(e.xAxis.options.reversed&&(D=!D),e.points&&(L=_(D?e.points:e.points.slice(0).reverse(),function(e){return J(e.plotY)})),O=this.itemMarginTop+e.legendItem.label.getBBox().height+this.itemMarginBottom,R=e.yAxis.top-x.plotTop,j=e.visible?(L?L.plotY:e.yAxis.height)+(R-.3*O):R+e.yAxis.height,b.push({target:j,size:O,item:e}))},this),U(b,x.plotHeight)))e=L.item.legendItem||{},J(L.pos)&&(e.y=x.plotTop-x.spacing[0]+L.pos)}render(){let e=this.chart,x=e.renderer,b=this.options,E=this.padding,L=this.getAllItems(),O,D,j,R=this.group,z,F=this.box;this.itemX=E,this.itemY=this.initialItemY,this.offsetWidth=0,this.lastItemY=0,this.widthOption=ts(b.width,e.spacingBox.width-E),z=e.spacingBox.width-2*E-b.x,[“rm”,”lm”].indexOf(this.getAlignment().substring(0,2))>-1&&(z/=2),this.maxLegendWidth=this.widthOption||z,R||(this.group=R=x.g(“legend”).addClass(b.className||””).attr({zIndex:7}).add(),this.contentGroup=x.g().attr({zIndex:1}).add(R),this.scrollGroup=x.g().add(this.contentGroup)),this.renderTitle(),to(L,(e,x)=>(e.options&&e.options.legendIndex||0)-(x.options&&x.options.legendIndex||0)),b.reversed&&L.reverse(),this.allItems=L,this.display=O=!!L.length,this.lastLineHeight=0,this.maxItemWidth=0,this.totalItemWidth=0,this.itemHeight=0,L.forEach(this.renderItem,this),L.forEach(this.layoutItem,this),D=(this.widthOption||this.offsetWidth)+E,j=this.lastItemY+this.lastLineHeight+this.titleHeight,j=this.handleOverflow(j)+E,F||(this.box=F=x.rect().addClass(“highcharts-legend-box”).attr({r:b.borderRadius}).add(R)),e.styledMode||F.attr({stroke:b.borderColor,”stroke-width”:b.borderWidth||0,fill:b.backgroundColor||”none”}).shadow(b.shadow),D>0&&j>0&&F[F.placed?”animate”:”attr”](F.crisp.call({},{x:0,y:0,width:D,height:j},F.strokeWidth())),R[O?”show”:”hide”](),e.styledMode&&”none”===R.getStyle(“display”)&&(D=j=0),this.legendWidth=D,this.legendHeight=j,O&&this.align(),this.proximate||this.positionItems(),Z(this,”afterRender”)}align(e=this.chart.spacingBox){let x=this.chart,b=this.options,E=e.y;/(lth|ct|rth)/.test(this.getAlignment())&&x.titleOffset[0]>0?E+=x.titleOffset[0]:/(lbh|cb|rbh)/.test(this.getAlignment())&&x.titleOffset[2]>0&&(E-=x.titleOffset[2]),E!==e.y&&(e=tt(e,{y:E})),x.hasRendered||(this.group.placed=!1),this.group.align(tt(b,{width:this.legendWidth,height:this.legendHeight,verticalAlign:this.proximate?”top”:b.verticalAlign}),!0,e)}handleOverflow(e){let x=this,b=this.chart,E=b.renderer,L=this.options,O=L.y,D=”top”===L.verticalAlign,j=this.padding,R=L.maxHeight,z=L.navigation,F=te(z.animation,!0),H=z.arrowSize||12,U=this.pages,Y=this.allItems,V=function(e){“number”==typeof e?tt.attr({height:e}):tt&&(x.clipRect=tt.destroy(),x.contentGroup.clip()),x.contentGroup.div&&(x.contentGroup.div.style.clip=e?”rect(“+j+”px,9999px,”+(j+e)+”px,0)”:”auto”)},q=function(e){return x[e]=E.circle(0,0,1.3*H).translate(H/2,H/2).add(J),b.styledMode||x[e].attr(“fill”,”rgba(0,0,0,0.0001)”),x[e]},K,$,_,Z=b.spacingBox.height+(D?-O:O)-j,J=this.nav,tt=this.clipRect;return”horizontal”!==L.layout||”middle”===L.verticalAlign||L.floating||(Z/=2),R&&(Z=Math.min(Z,R)),U.length=0,e&&Z>0&&e>Z&&!1!==z.enabled?(this.clipHeight=K=Math.max(Z-20-this.titleHeight-j,0),this.currentPage=te(this.currentPage,1),this.fullHeight=e,Y.forEach((e,x)=>{let b=(_=e.legendItem||{}).y||0,E=Math.round(_.label.getBBox().height),L=U.length;(!L||b-U[L-1]>K&&($||b)!==U[L-1])&&(U.push($||b),L++),_.pageIx=L-1,$&&((Y[x-1].legendItem||{}).pageIx=L-1),x===Y.length-1&&b+E-U[L-1]>K&&b>U[L-1]&&(U.push(b),_.pageIx=L),b!==$&&($=b)}),tt||(tt=x.clipRect=E.clipRect(0,j-2,9999,0),x.contentGroup.clip(tt)),V(K),J||(this.nav=J=E.g().attr({zIndex:1}).add(this.group),this.up=E.symbol(“triangle”,0,0,H,H).add(J),q(“upTracker”).on(“click”,function(){x.scroll(-1,F)}),this.pager=E.text(“”,15,10).addClass(“highcharts-legend-navigation”),!b.styledMode&&z.style&&this.pager.css(z.style),this.pager.add(J),this.down=E.symbol(“triangle-down”,0,0,H,H).add(J),q(“downTracker”).on(“click”,function(){x.scroll(1,F)})),x.scroll(0),e=Z):J&&(V(),this.nav=J.destroy(),this.scrollGroup.attr({translateY:1}),this.clipHeight=0),e}scroll(e,x){let b=this.chart,E=this.pages,L=E.length,O=this.clipHeight,D=this.options.navigation,z=this.pager,F=this.padding,H=this.currentPage+e;H>L&&(H=L),H>0&&(void 0!==x&&R(x,b),this.nav.attr({translateX:F,translateY:O+this.padding+7+this.titleHeight,visibility:”inherit”}),[this.up,this.upTracker].forEach(function(e){e.attr({class:1===H?”highcharts-legend-nav-inactive”:”highcharts-legend-nav-active”})}),z.attr({text:H+”/”+L}),[this.down,this.downTracker].forEach(function(e){e.attr({x:18+this.pager.getBBox().width,class:H===L?”highcharts-legend-nav-inactive”:”highcharts-legend-nav-active”})},this),b.styledMode||(this.up.attr({fill:1===H?D.inactiveColor:D.activeColor}),this.upTracker.css({cursor:1===H?”default”:”pointer”}),this.down.attr({fill:H===L?D.inactiveColor:D.activeColor}),this.downTracker.css({cursor:H===L?”default”:”pointer”})),this.scrollOffset=-E[H-1]+this.initialItemY,this.scrollGroup.animate({translateY:this.scrollOffset}),this.currentPage=H,this.positionCheckboxes(),tr(()=>{Z(this,”afterScroll”,{currentPage:H})},j(te(x,b.renderer.globalAnimation,!0)).duration))}setItemEvents(e,x,b){let L=this,O=e.legendItem||{},D=L.chart.renderer.boxWrapper,j=e instanceof E,R=”highcharts-legend-“+(j?”point”:”series”)+”-active”,z=L.chart.styledMode,F=b?[x,O.symbol]:[O.group],H=x=>{L.allItems.forEach(b=>{e!==b&&[b].concat(b.linkedSeries||[]).forEach(e=>{e.setState(x,!j)})})};for(let b of F)b&&b.on(“mouseover”,function(){e.visible&&H(“inactive”),e.setState(“hover”),e.visible&&D.addClass(R),z||x.css(L.options.itemHoverStyle)}).on(“mouseout”,function(){L.chart.styledMode||x.css(tt(e.visible?L.itemStyle:L.itemHiddenStyle)),H(“”),D.removeClass(R),e.setState()}).on(“click”,function(x){let b=”legendItemClick”,E=function(){e.setVisible&&e.setVisible(),H(e.visible?”inactive”:””)};D.removeClass(R),x={browserEvent:x},e.firePointEvent?e.firePointEvent(b,x,E):Z(e,b,x,E)})}createCheckboxForItem(e){e.checkbox=V(“input”,{type:”checkbox”,className:”highcharts-legend-checkbox”,checked:e.selected,defaultChecked:e.selected},this.options.itemCheckboxStyle,this.chart.container),Y(e.checkbox,”click”,function(x){let b=x.target;Z(e.series||e,”checkboxClick”,{checked:b.checked,item:e},function(){e.select()})})}};return(D=T||(T={})).compose=function(e){ti(F,”Core.Legend”)&&Y(e,”beforeMargins”,function(){this.legend=new D(this,this.options.legend)})},T}),b(x,”Core/Legend/LegendSymbol.js”,[x[“Core/Utilities.js”]],function(e){var x;let{extend:b,merge:E,pick:L}=e;return function(e){function x(e,x,O){let D=this.legendItem=this.legendItem||{},{chart:j,options:R}=this,{baseline:z=0,symbolWidth:F,symbolHeight:H}=e,U=this.symbol||”circle”,Y=H/2,V=j.renderer,q=D.group,K=z-Math.round(H*(O?.4:.3)),$={},_,Z=R.marker,J=0;if(j.styledMode||($[“stroke-width”]=Math.min(R.lineWidth||0,24),R.dashStyle?$.dashstyle=R.dashStyle:”square”===R.linecap||($[“stroke-linecap”]=”round”)),D.line=V.path().addClass(“highcharts-graph”).attr($).add(q),O&&(D.area=V.path().addClass(“highcharts-area”).add(q)),$[“stroke-linecap”]&&(J=Math.min(D.line.strokeWidth(),F)/2),F){let e=[[“M”,J,K],[“L”,F-J,K]];D.line.attr({d:e}),D.area?.attr({d:[…e,[“L”,F-J,z],[“L”,J,z]]})}if(Z&&!1!==Z.enabled&&F){let e=Math.min(L(Z.radius,Y),Y);0===U.indexOf(“url”)&&(Z=E(Z,{width:H,height:H}),e=0),D.symbol=_=V.symbol(U,F/2-e,K-e,2*e,2*e,b({context:”legend”},Z)).addClass(“highcharts-point”).add(q),_.isMarker=!0}}e.areaMarker=function(e,b){x.call(this,e,b,!0)},e.lineMarker=x,e.rectangle=function(e,x){let b=x.legendItem||{},E=e.options,O=e.symbolHeight,D=E.squareSymbol,j=D?O:e.symbolWidth;b.symbol=this.chart.renderer.rect(D?(e.symbolWidth-O)/2:0,e.baseline-O+1,j,O,L(e.options.symbolRadius,O/2)).addClass(“highcharts-point”).attr({zIndex:3}).add(b.group)}}(x||(x={})),x}),b(x,”Core/Series/SeriesDefaults.js”,[],function(){return{lineWidth:2,allowPointSelect:!1,crisp:!0,showCheckbox:!1,animation:{duration:1e3},enableMouseTracking:!0,events:{},marker:{enabledThreshold:2,lineColor:”#ffffff”,lineWidth:0,radius:4,states:{normal:{animation:!0},hover:{animation:{duration:150},enabled:!0,radiusPlus:2,lineWidthPlus:1},select:{fillColor:”#cccccc”,lineColor:”#000000″,lineWidth:2}}},point:{events:{}},dataLabels:{animation:{},align:”center”,borderWidth:0,defer:!0,formatter:function(){let{numberFormatter:e}=this.series.chart;return”number”!=typeof this.y?””:e(this.y,-1)},padding:5,style:{fontSize:”0.7em”,fontWeight:”bold”,color:”contrast”,textOutline:”1px contrast”},verticalAlign:”bottom”,x:0,y:0},cropThreshold:300,opacity:1,pointRange:0,softThreshold:!0,states:{normal:{animation:!0},hover:{animation:{duration:150},lineWidthPlus:1,marker:{},halo:{size:10,opacity:.25}},select:{animation:{duration:0}},inactive:{animation:{duration:150},opacity:.2}},stickyTracking:!0,turboThreshold:1e3,findNearestPointBy:”x”}}),b(x,”Core/Series/SeriesRegistry.js”,[x[“Core/Globals.js”],x[“Core/Defaults.js”],x[“Core/Series/Point.js”],x[“Core/Utilities.js”]],function(e,x,b,E){var L;let{defaultOptions:O}=x,{extend:D,extendClass:j,merge:R}=E;return function(x){function E(e,E){let L=O.plotOptions||{},D=E.defaultOptions,j=E.prototype;return j.type=e,j.pointClass||(j.pointClass=b),!x.seriesTypes[e]&&(D&&(L[e]=D),x.seriesTypes[e]=E,!0)}x.seriesTypes=e.seriesTypes,x.registerSeriesType=E,x.seriesType=function(e,L,z,F,H){let U=O.plotOptions||{};if(L=L||””,U[e]=R(U[L],z),delete x.seriesTypes[e],E(e,j(x.seriesTypes[L]||function(){},F)),x.seriesTypes[e].prototype.type=e,H){let s=class s extends b{};D(s.prototype,H),x.seriesTypes[e].prototype.pointClass=s}return x.seriesTypes[e]}}(L||(L={})),L}),b(x,”Core/Series/Series.js”,[x[“Core/Animation/AnimationUtilities.js”],x[“Core/Defaults.js”],x[“Core/Foundation.js”],x[“Core/Globals.js”],x[“Core/Legend/LegendSymbol.js”],x[“Core/Series/Point.js”],x[“Core/Series/SeriesDefaults.js”],x[“Core/Series/SeriesRegistry.js”],x[“Core/Renderer/SVG/SVGElement.js”],x[“Core/Utilities.js”]],function(e,x,b,E,L,O,D,j,R,z){let{animObject:F,setAnimation:H}=e,{defaultOptions:U}=x,{registerEventOptions:Y}=b,{svg:V,win:q}=E,{seriesTypes:K}=j,{arrayMax:$,arrayMin:_,clamp:Z,correctFloat:J,crisp:tt,defined:te,destroyObjectProperties:ti,diffObjects:ts,erase:to,error:tr,extend:tn,find:ta,fireEvent:tl,getClosestDistance:th,getNestedProperty:td,insertItem:tc,isArray:tp,isNumber:tu,isString:tg,merge:tm,objectEach:tf,pick:tx,removeEvent:tb,splat:ty,syncTimeout:tv}=z;let X=class X{constructor(){this.zoneAxis=”y”}init(e,x){let b;tl(this,”init”,{options:x});let E=this,L=e.series;this.eventsToUnbind=[],E.chart=e,E.options=E.setOptions(x);let O=E.options,D=!1!==O.visible;E.linkedSeries=[],E.bindAxes(),tn(E,{name:O.name,state:””,visible:D,selected:!0===O.selected}),Y(this,O);let j=O.events;(j&&j.click||O.point&&O.point.events&&O.point.events.click||O.allowPointSelect)&&(e.runTrackerClick=!0),E.getColor(),E.getSymbol(),E.parallelArrays.forEach(function(e){E[e+”Data”]||(E[e+”Data”]=[])}),E.isCartesian&&(e.hasCartesianSeries=!0),L.length&&(b=L[L.length-1]),E._i=tx(b&&b._i,-1)+1,E.opacity=E.options.opacity,e.orderItems(“series”,tc(this,L)),O.dataSorting&&O.dataSorting.enabled?E.setDataSortingOptions():E.points||E.data||E.setData(O.data,!1),tl(this,”afterInit”)}is(e){return K[e]&&this instanceof K[e]}bindAxes(){let e,x=this,b=x.options,E=x.chart;tl(this,”bindAxes”,null,function(){(x.axisTypes||[]).forEach(function(L){(E[L]||[]).forEach(function(E){e=E.options,(tx(b[L],0)===E.index||void 0!==b[L]&&b[L]===e.id)&&(tc(x,E.series),x[L]=E,E.isDirty=!0)}),x[L]||x.optionalAxis===L||tr(18,!0,E)})}),tl(this,”afterBindAxes”)}updateParallelArrays(e,x,b){let E=e.series,L=tu(x)?function(b){let L=”y”===b&&E.toYData?E.toYData(e):e[b];E[b+”Data”][x]=L}:function(e){Array.prototype[x].apply(E[e+”Data”],b)};E.parallelArrays.forEach(L)}hasData(){return this.visible&&void 0!==this.dataMax&&void 0!==this.dataMin||this.visible&&this.yData&&this.yData.length>0}hasMarkerChanged(e,x){let b=e.marker,E=x.marker||{};return b&&(E.enabled&&!b.enabled||E.symbol!==b.symbol||E.height!==b.height||E.width!==b.width)}autoIncrement(e){let x=this.options,b=x.pointIntervalUnit,E=x.relativeXValue,L=this.chart.time,O=this.xIncrement,D,j;return(O=tx(O,x.pointStart,0),this.pointInterval=j=tx(this.pointInterval,x.pointInterval,1),E&&tu(e)&&(j*=e),b&&(D=new L.Date(O),”day”===b?L.set(“Date”,D,L.get(“Date”,D)+j):”month”===b?L.set(“Month”,D,L.get(“Month”,D)+j):”year”===b&&L.set(“FullYear”,D,L.get(“FullYear”,D)+j),j=D.getTime()-O),E&&tu(e))?O+j:(this.xIncrement=O+j,O)}setDataSortingOptions(){let e=this.options;tn(this,{requireSorting:!1,sorted:!1,enabledDataSorting:!0,allowDG:!1}),te(e.pointRange)||(e.pointRange=1)}setOptions(e){let x,b=this.chart,E=b.options.plotOptions,L=b.userOptions||{},O=tm(e),D=b.styledMode,j={plotOptions:E,userOptions:O};tl(this,”setOptions”,j);let R=j.plotOptions[this.type],z=L.plotOptions||{},F=z.series||{},H=U.plotOptions[this.type]||{},Y=z[this.type]||{};this.userOptions=j.userOptions;let V=tm(R,E.series,Y,O);this.tooltipOptions=tm(U.tooltip,U.plotOptions.series?.tooltip,H?.tooltip,b.userOptions.tooltip,z.series?.tooltip,Y.tooltip,O.tooltip),this.stickyTracking=tx(O.stickyTracking,Y.stickyTracking,F.stickyTracking,!!this.tooltipOptions.shared&&!this.noSharedTooltip||V.stickyTracking),null===R.marker&&delete V.marker,this.zoneAxis=V.zoneAxis||”y”;let q=this.zones=(V.zones||[]).map(e=>({…e}));return(V.negativeColor||V.negativeFillColor)&&!V.zones&&(x={value:V[this.zoneAxis+”Threshold”]||V.threshold||0,className:”highcharts-negative”},D||(x.color=V.negativeColor,x.fillColor=V.negativeFillColor),q.push(x)),q.length&&te(q[q.length-1].value)&&q.push(D?{}:{color:this.color,fillColor:this.fillColor}),tl(this,”afterSetOptions”,{options:V}),V}getName(){return tx(this.options.name,”Series “+(this.index+1))}getCyclic(e,x,b){let E,L,O=this.chart,D=`${e}Index`,j=`${e}Counter`,R=b?.length||O.options.chart.colorCount;!x&&(te(L=tx(“color”===e?this.options.colorIndex:void 0,this[D]))?E=L:(O.series.length||(O[j]=0),E=O[j]%R,O[j]+=1),b&&(x=b[E])),void 0!==E&&(this[D]=E),this[e]=x}getColor(){this.chart.styledMode?this.getCyclic(“color”):this.options.colorByPoint?this.color=”#cccccc”:this.getCyclic(“color”,this.options.color||U.plotOptions[this.type].color,this.chart.options.colors)}getPointsCollection(){return(this.hasGroupedData?this.points:this.data)||[]}getSymbol(){let e=this.options.marker;this.getCyclic(“symbol”,e.symbol,this.chart.options.symbols)}findPointIndex(e,x){let b,E,L,D=e.id,j=e.x,R=this.points,z=this.options.dataSorting;if(D){let e=this.chart.get(D);e instanceof O&&(b=e)}else if(this.linkedParent||this.enabledDataSorting||this.options.relativeXValue){let x=x=>!x.touched&&x.index===e.index;if(z&&z.matchByName?x=x=>!x.touched&&x.name===e.name:this.options.relativeXValue&&(x=x=>!x.touched&&x.options.x===e.x),!(b=ta(R,x)))return}return b&&void 0!==(L=b&&b.index)&&(E=!0),void 0===L&&tu(j)&&(L=this.xData.indexOf(j,x)),-1!==L&&void 0!==L&&this.cropped&&(L=L>=this.cropStart?L-this.cropStart:L),!E&&tu(L)&&R[L]&&R[L].touched&&(L=void 0),L}updateData(e,x){let b=this.options,E=b.dataSorting,L=this.points,O=[],D=this.requireSorting,j=e.length===L.length,R,z,F,H,U=!0;if(this.xIncrement=null,e.forEach(function(e,x){let z,F=te(e)&&this.pointClass.prototype.optionsToObject.call({series:this},e)||{},U=F.x;F.id||tu(U)?(-1===(z=this.findPointIndex(F,H))||void 0===z?O.push(e):L[z]&&e!==b.data[z]?(L[z].update(e,!1,null,!1),L[z].touched=!0,D&&(H=z+1)):L[z]&&(L[z].touched=!0),(!j||x!==z||E&&E.enabled||this.hasDerivedData)&&(R=!0)):O.push(e)},this),R)for(z=L.length;z–;)(F=L[z])&&!F.touched&&F.remove&&F.remove(!1,x);else!j||E&&E.enabled?U=!1:(e.forEach(function(e,x){e===L[x].y||L[x].destroyed||L[x].update(e,!1,null,!1)}),O.length=0);return L.forEach(function(e){e&&(e.touched=!1)}),!!U&&(O.forEach(function(e){this.addPoint(e,!1,null,null,!1)},this),null===this.xIncrement&&this.xData&&this.xData.length&&(this.xIncrement=$(this.xData),this.autoIncrement()),!0)}setData(e,x=!0,b,E){let L=this,O=L.points,D=O&&O.length||0,j=L.options,R=L.chart,z=j.dataSorting,F=L.xAxis,H=j.turboThreshold,U=this.xData,Y=this.yData,V=L.pointArrayMap,q=V&&V.length,K=j.keys,$,_,Z,J=0,tt=1,te=null,ti;R.options.chart.allowMutatingData||(j.data&&delete L.options.data,L.userOptions.data&&delete L.userOptions.data,ti=tm(!0,e));let ts=(e=ti||e||[]).length;if(z&&z.enabled&&(e=this.sortData(e)),R.options.chart.allowMutatingData&&!1!==E&&ts&&D&&!L.cropped&&!L.hasGroupedData&&L.visible&&!L.boosted&&(Z=this.updateData(e,b)),!Z){if(L.xIncrement=null,L.colorCounter=0,this.parallelArrays.forEach(function(e){L[e+”Data”].length=0}),H&&ts>H)if(tu(te=L.getFirstValidPoint(e)))for($=0;$=0?J:0,tt=tt>=0?tt:1),1===te.length&&(tt=0),J===tt)for($=0;${let E=td(b,e),L=td(b,x);return LE)}).forEach(function(e,x){e.x=x},this),x.linkedSeries&&x.linkedSeries.forEach(function(x){let b=x.options,L=b.data;b.dataSorting&&b.dataSorting.enabled||!L||(L.forEach(function(b,O){L[O]=E(x,b),e[O]&&(L[O].x=e[O].x,L[O].index=O)}),x.setData(L,!1))}),e}getProcessedData(e){let x=this,b=x.xAxis,E=x.options.cropThreshold,L=b?.logarithmic,O=x.isCartesian,D,j,R=0,z,F,H,U=x.xData,Y=x.yData,V=!1,q=U.length;b&&(F=(z=b.getExtremes()).min,H=z.max,V=!!(b.categories&&!b.names.length)),O&&x.sorted&&!e&&(!E||q>E||x.forceCrop)&&(U[q-1]H?(U=[],Y=[]):x.yData&&(U[0]H)&&(U=(D=this.cropData(x.xData,x.yData,F,H)).xData,Y=D.yData,R=D.start,j=!0));let K=th([L?U.map(L.log2lin):U],()=>x.requireSorting&&!V&&tr(15,!1,x.chart));return{xData:U,yData:Y,cropped:j,cropStart:R,closestPointRange:K}}processData(e){let x=this.xAxis;if(this.isCartesian&&!this.isDirty&&!x.isDirty&&!this.yAxis.isDirty&&!e)return!1;let b=this.getProcessedData();this.cropped=b.cropped,this.cropStart=b.cropStart,this.processedXData=b.xData,this.processedYData=b.yData,this.closestPointRange=this.basePointRange=b.closestPointRange,tl(this,”afterProcessData”)}cropData(e,x,b,E){let L=e.length,O,D,j=0,R=L;for(O=0;O=b){j=Math.max(0,O-1);break}for(D=O;DE){R=D+1;break}return{xData:e.slice(j,R),yData:x.slice(j,R),start:j,end:R}}generatePoints(){let e=this.options,x=this.processedData||e.data,b=this.processedXData,E=this.processedYData,L=this.pointClass,O=b.length,D=this.cropStart||0,j=this.hasGroupedData,R=e.keys,z=[],F=e.dataGrouping&&e.dataGrouping.groupAll?D:0,H,U,Y,V,q=this.data;if(!q&&!j){let e=[];e.length=x.length,q=this.data=e}for(R&&j&&(this.options.keys=!1),V=0;V0:V.length)||!D),U=x||this.getExtremesFromAll||this.options.getExtremesFromAll||this.cropped||!b||(ti[q+O]||Y)>=Z&&(ti[q-O]||Y)<=J,H&&U)if(K=V.length)for(;K--;)tu(V[K])&&(L[tt++]=V[K]);else L[tt++]=V;let ts={activeYData:L,dataMin:_(L),dataMax:$(L)};return tl(this,"afterGetExtremes",{dataExtremes:ts}),ts}applyExtremes(){let e=this.getExtremes();return this.dataMin=e.dataMin,this.dataMax=e.dataMax,e}getFirstValidPoint(e){let x=e.length,b=0,E=null;for(;null===E&&b1)&&(O.step=function(e,x){b&&b.apply(x,arguments),”width”===x.prop&&R?.element&&R.attr(L?”height”:”width”,e+99)}),j.addClass(“highcharts-animating”).animate(e,O)}}afterAnimate(){this.setClip(),tf(this.chart.sharedClips,(e,x,b)=>{e&&!this.chart.container.querySelector(`[clip-path=”url(#${e.id})”]`)&&(e.destroy(),delete b[x])}),this.finishedAnimating=!0,tl(this,”afterAnimate”)}drawPoints(e=this.points){let x,b,E,L,O,D,j,R=this.chart,z=R.styledMode,{colorAxis:F,options:H}=this,U=H.marker,Y=this[this.specialGroup||”markerGroup”],V=this.xAxis,q=tx(U.enabled,!V||!!V.isRadial||null,this.closestPointRangePx>=U.enabledThreshold*U.radius);if(!1!==U.enabled||this._hasPointMarkers)for(x=0;x0||b.hasImage)&&(b.graphic=E=R.renderer.symbol(e,j.x,j.y,j.width,j.height,D?O:U).add(Y),this.enabledDataSorting&&R.hasRendered&&(E.attr({x:b.startXPos}),L=”animate”)),E&&”animate”===L&&E[x?”show”:”hide”](x).animate(j),E){let e=this.pointAttribs(b,z||!b.selected?void 0:”select”);z?F&&E.css({fill:e.fill}):E[L](e)}E&&E.addClass(b.getClassName(),!0)}else E&&(b.graphic=E.destroy())}markerAttribs(e,x){let b=this.options,E=b.marker,L=e.marker||{},O=L.symbol||E.symbol,D={},j,R,z=tx(L.radius,E&&E.radius);x&&(j=E.states[x],z=tx((R=L.states&&L.states[x])&&R.radius,j&&j.radius,z&&z+(j&&j.radiusPlus||0))),e.hasImage=O&&0===O.indexOf(“url”),e.hasImage&&(z=0);let F=e.pos();return tu(z)&&F&&(b.crisp&&(F[0]=tt(F[0],e.hasImage?0:”rect”===O?E?.lineWidth||0:1)),D.x=F[0]-z,D.y=F[1]-z),z&&(D.width=D.height=2*z),D}pointAttribs(e,x){let b=this.options.marker,E=e&&e.options,L=E&&E.marker||{},O=E&&E.color,D=e&&e.color,j=e&&e.zone&&e.zone.color,R,z,F=this.color,H,U,Y=tx(L.lineWidth,b.lineWidth),V=1;return F=O||j||D||F,H=L.fillColor||b.fillColor||F,U=L.lineColor||b.lineColor||F,x=x||”normal”,R=b.states[x]||{},Y=tx((z=L.states&&L.states[x]||{}).lineWidth,R.lineWidth,Y+tx(z.lineWidthPlus,R.lineWidthPlus,0)),H=z.fillColor||R.fillColor||H,{stroke:U=z.lineColor||R.lineColor||U,”stroke-width”:Y,fill:H,opacity:V=tx(z.opacity,R.opacity,V)}}destroy(e){let x,b,E,L=this,O=L.chart,D=/AppleWebKit\/533/.test(q.navigator.userAgent),j=L.data||[];for(tl(L,”destroy”,{keepEventsForUpdate:e}),this.removeEvents(e),(L.axisTypes||[]).forEach(function(e){(E=L[e])&&E.series&&(to(E.series,L),E.isDirty=E.forceRedraw=!0)}),L.legendItem&&L.chart.legend.destroyItem(L),x=j.length;x–;)(b=j[x])&&b.destroy&&b.destroy();for(let e of L.zones)ti(e,void 0,!0);z.clearTimeout(L.animationTimeout),tf(L,function(e,x){e instanceof R&&!e.survive&&e[D&&”group”===x?”hide”:”destroy”]()}),O.hoverSeries===L&&(O.hoverSeries=void 0),to(O.series,L),O.orderItems(“series”),tf(L,function(x,b){e&&”hcEvents”===b||delete L[b]})}applyZones(){let{area:e,chart:x,graph:b,zones:E,points:L,xAxis:O,yAxis:D,zoneAxis:j}=this,{inverted:R,renderer:z}=x,F=this[`${j}Axis`],{isXAxis:H,len:U=0}=F||{},Y=(b?.strokeWidth()||0)/2+1,V=(e,x=0,b=0)=>{R&&(b=U-b);let{translated:E=0,lineClip:L}=e,O=b-E;L?.push([“L”,x,Math.abs(O){e.forEach((x,b)=>{(“M”===x[0]||”L”===x[0])&&(e[b]=[x[0],H?U-x[1]:x[1],H?x[2]:U-x[2]])})};if(E.forEach(e=>{e.lineClip=[],e.translated=Z(F.toPixels(tx(e.value,x),!0)||0,0,U)}),b&&!this.showLine&&b.hide(),e&&e.hide(),”y”===j&&L.length{let E=x.lineClip||[],L=Math.round(x.translated||0);O.reversed&&E.reverse();let{clip:j,simpleClip:F}=x,U=0,V=0,$=O.len,_=D.len;H?(U=L,$=K):(V=L,_=K);let Z=[[“M”,U,V],[“L”,$,V],[“L”,$,_],[“L”,U,_],[“Z”]],J=[Z[0],…E,Z[1],Z[2],…q,Z[3],Z[4]];q=E.reverse(),K=L,R&&(Y(J),e&&Y(Z)),j?(j.animate({d:J}),F?.animate({d:Z})):(j=x.clip=z.path(J),e&&(F=x.simpleClip=z.path(Z))),b&&x.graph?.clip(j),e&&x.area?.clip(F)})}else this.visible&&(b&&b.show(),e&&e.show())}plotGroup(e,x,b,E,L){let O=this[e],D=!O,j={visibility:b,zIndex:E||.1};return te(this.opacity)&&!this.chart.styledMode&&”inactive”!==this.state&&(j.opacity=this.opacity),O||(this[e]=O=this.chart.renderer.g().add(L)),O.addClass(“highcharts-“+x+” highcharts-series-“+this.index+” highcharts-“+this.type+”-series “+(te(this.colorIndex)?”highcharts-color-“+this.colorIndex+” “:””)+(this.options.className||””)+(O.hasClass(“highcharts-tracker”)?” highcharts-tracker”:””),!0),O.attr(j)[D?”attr”:”animate”](this.getPlotBox(x)),O}getPlotBox(e){let x=this.xAxis,b=this.yAxis,E=this.chart,L=E.inverted&&!E.polar&&x&&this.invertible&&”series”===e;return E.inverted&&(x=b,b=this.xAxis),{translateX:x?x.left:E.plotLeft,translateY:b?b.top:E.plotTop,rotation:90*!!L,rotationOriginX:L?(x.len-b.len)/2:0,rotationOriginY:L?(x.len+b.len)/2:0,scaleX:L?-1:1,scaleY:1}}removeEvents(e){let{eventsToUnbind:x}=this;e||tb(this),x.length&&(x.forEach(e=>{e()}),x.length=0)}render(){let e=this,{chart:x,options:b,hasRendered:E}=e,L=F(b.animation),O=e.visible?”inherit”:”hidden”,D=b.zIndex,j=x.seriesGroup,R=e.finishedAnimating?0:L.duration;tl(this,”render”),e.plotGroup(“group”,”series”,O,D,j),e.markerGroup=e.plotGroup(“markerGroup”,”markers”,O,D,j),!1!==b.clip&&e.setClip(),R&&e.animate?.(!0),e.drawGraph&&(e.drawGraph(),e.applyZones()),e.visible&&e.drawPoints(),e.drawDataLabels?.(),e.redrawPoints?.(),b.enableMouseTracking&&e.drawTracker?.(),R&&e.animate?.(),E||(R&&L.defer&&(R+=L.defer),e.animationTimeout=tv(()=>{e.afterAnimate()},R||0)),e.isDirty=!1,e.hasRendered=!0,tl(e,”afterRender”)}redraw(){let e=this.isDirty||this.isDirtyData;this.translate(),this.render(),e&&delete this.kdTree}reserveSpace(){return this.visible||!this.chart.options.chart.ignoreHiddenSeries}searchPoint(e,x){let{xAxis:b,yAxis:E}=this,L=this.chart.inverted;return this.searchKDTree({clientX:L?b.len-e.chartY+b.pos:e.chartX-b.pos,plotY:L?E.len-e.chartX+E.pos:e.chartY-E.pos},x,e)}buildKDTree(e){this.buildingKdTree=!0;let x=this,b=x.options.findNearestPointBy.indexOf(“y”)>-1?2:1;delete x.kdTree,tv(function(){x.kdTree=function e(b,E,L){let O,D,j=b?.length;if(j)return O=x.kdAxisArray[E%L],b.sort((e,x)=>(e[O]||0)-(x[O]||0)),{point:b[D=Math.floor(j/2)],left:e(b.slice(0,D),E+1,L),right:e(b.slice(D+1),E+1,L)}}(x.getValidPoints(void 0,!x.directTouch),b,b),x.buildingKdTree=!1},x.options.kdNow||e?.type===”touchstart”?0:1)}searchKDTree(e,x,b){let E=this,[L,O]=this.kdAxisArray,D=x?”distX”:”dist”,j=(E.options.findNearestPointBy||””).indexOf(“y”)>-1?2:1,R=!!E.isBubble;if(this.kdTree||this.buildingKdTree||this.buildKDTree(b),this.kdTree)return function e(x,b,j,z){let F,H,U,Y,V,q,K,$=b.point,_=E.kdAxisArray[j%z],Z,J,tt=$;F=x[L],H=$[L],U=te(F)&&te(H)?F-H:null,Y=x[O],V=$[O],q=te(Y)&&te(V)?Y-V:0,K=R&&$.marker?.radius||0,$.dist=Math.sqrt((U&&U*U||0)+q*q)-K,$.distX=te(U)?Math.abs(U)-K:Number.MAX_VALUE;let ti=(x[_]||0)-($[_]||0)+(R&&$.marker?.radius||0),ts=ti<0?"left":"right",to=ti<0?"right":"left";return b[ts]&&(tt=(Z=e(x,b[ts],j+1,z))[D]=0&&O<=(E?E.len:x.plotHeight)&&L>=0&&L<=(b?b.len:x.plotWidth)}drawTracker(){let e=this,x=e.options,b=x.trackByArea,E=[].concat((b?e.areaPath:e.graphPath)||[]),L=e.chart,O=L.pointer,D=L.renderer,j=L.options.tooltip?.snap||0,R=()=>{x.enableMouseTracking&&L.hoverSeries!==e&&e.onMouseOver()},z=”rgba(192,192,192,”+(V?1e-4:.002)+”)”,F=e.tracker;F?F.attr({d:E}):e.graph&&(e.tracker=F=D.path(E).attr({visibility:e.visible?”inherit”:”hidden”,zIndex:2}).addClass(b?”highcharts-tracker-area”:”highcharts-tracker-line”).add(e.group),L.styledMode||F.attr({“stroke-linecap”:”round”,”stroke-linejoin”:”round”,stroke:z,fill:b?z:”none”,”stroke-width”:e.graph.strokeWidth()+(b?0:2*j)}),[e.tracker,e.markerGroup,e.dataLabelsGroup].forEach(e=>{e&&(e.addClass(“highcharts-tracker”).on(“mouseover”,R).on(“mouseout”,e=>{O?.onTrackerMouseOut(e)}),x.cursor&&!L.styledMode&&e.css({cursor:x.cursor}),e.on(“touchstart”,R))})),tl(this,”afterDrawTracker”)}addPoint(e,x,b,E,L){let O,D,j=this.options,R=this.data,z=this.chart,F=this.xAxis,H=F&&F.hasNames&&F.names,U=j.data,Y=this.xData;x=tx(x,!0);let V={series:this};this.pointClass.prototype.applyOptions.apply(V,[e]);let q=V.x;if(D=Y.length,this.requireSorting&&qq;)D–;this.updateParallelArrays(V,”splice”,[D,0,0]),this.updateParallelArrays(V,D),H&&V.name&&(H[q]=V.name),U.splice(D,0,e),(O||this.processedData)&&(this.data.splice(D,0,null),this.processData()),”point”===j.legendType&&this.generatePoints(),b&&(R[0]&&R[0].remove?R[0].remove(!1):(R.shift(),this.updateParallelArrays(V,”shift”),U.shift())),!1!==L&&tl(this,”addPoint”,{point:V}),this.isDirty=!0,this.isDirtyData=!0,x&&z.redraw(E)}removePoint(e,x,b){let E=this,L=E.data,O=L[e],D=E.points,j=E.chart,R=function(){D&&D.length===L.length&&D.splice(e,1),L.splice(e,1),E.options.data.splice(e,1),E.updateParallelArrays(O||{series:E},”splice”,[e,1]),O&&O.destroy(),E.isDirty=!0,E.isDirtyData=!0,x&&j.redraw()};H(b,j),x=tx(x,!0),O?O.firePointEvent(“remove”,null,R):R()}remove(e,x,b,E){let L=this,O=L.chart;function D(){L.destroy(E),O.isDirtyLegend=O.isDirtyBox=!0,O.linkSeries(E),tx(e,!0)&&O.redraw(x)}!1!==b?tl(L,”remove”,null,D):D()}update(e,x){tl(this,”update”,{options:e=ts(e,this.userOptions)});let b=this,E=b.chart,L=b.userOptions,O=b.initialType||b.type,D=E.options.plotOptions,j=K[O].prototype,R=b.finishedAnimating&&{animation:!1},z={},F,H,U=[“colorIndex”,”eventOptions”,”navigatorSeries”,”symbolIndex”,”baseSeries”],Y=e.type||L.type||E.options.chart.type,V=!(this.hasDerivedData||Y&&Y!==this.type||void 0!==e.pointStart||void 0!==e.pointInterval||void 0!==e.relativeXValue||e.joinBy||e.mapData||[“dataGrouping”,”pointStart”,”pointInterval”,”pointIntervalUnit”,”keys”].some(e=>b.hasOptionChanged(e)));Y=Y||O,V&&(U.push(“data”,”isDirtyData”,”isDirtyCanvas”,”points”,”processedData”,”processedXData”,”processedYData”,”xIncrement”,”cropped”,”_hasPointMarkers”,”hasDataLabels”,”nodes”,”layout”,”level”,”mapMap”,”mapData”,”minY”,”maxY”,”minX”,”maxX”,”transformGroups”),!1!==e.visible&&U.push(“area”,”graph”),b.parallelArrays.forEach(function(e){U.push(e+”Data”)}),e.data&&(e.dataSorting&&tn(b.options.dataSorting,e.dataSorting),this.setData(e.data,!1))),e=tm(L,{index:void 0===L.index?b.index:L.index,pointStart:D?.series?.pointStart??L.pointStart??b.xData?.[0]},!V&&{data:b.options.data},e,R),V&&e.data&&(e.data=b.options.data),(U=[“group”,”markerGroup”,”dataLabelsGroup”,”transformGroup”].concat(U)).forEach(function(e){U[e]=b[e],delete b[e]});let q=!1;if(K[Y]){if(q=Y!==b.type,b.remove(!1,!1,!1,!0),q)if(E.propFromSeries(),Object.setPrototypeOf)Object.setPrototypeOf(b,K[Y].prototype);else{let e=Object.hasOwnProperty.call(b,”hcEvents”)&&b.hcEvents;for(H in j)b[H]=void 0;tn(b,K[Y].prototype),e?b.hcEvents=e:delete b.hcEvents}}else tr(17,!0,E,{missingModuleFor:Y});if(U.forEach(function(e){b[e]=U[e]}),b.init(E,e),V&&this.points)for(let e of(!1===(F=b.options).visible?(z.graphic=1,z.dataLabel=1):(this.hasMarkerChanged(F,L)&&(z.graphic=1),b.hasDataLabels?.()||(z.dataLabel=1)),this.points))e&&e.series&&(e.resolveColor(),Object.keys(z).length&&e.destroyElements(z),!1===F.showInLegend&&e.legendItem&&E.legend.destroyItem(e));b.initialType=O,E.linkSeries(),E.setSortedData(),q&&b.linkedSeries.length&&(b.isDirtyData=!0),tl(this,”afterUpdate”),tx(x,!0)&&E.redraw(!!V&&void 0)}setName(e){this.name=this.options.name=this.userOptions.name=e,this.chart.isDirtyLegend=!0}hasOptionChanged(e){let x=this.chart,b=this.options[e],E=x.options.plotOptions,L=this.userOptions[e],O=tx(E?.[this.type]?.[e],E?.series?.[e]);return L&&!te(O)?b!==L:b!==tx(O,b)}onMouseOver(){let e=this.chart,x=e.hoverSeries,b=e.pointer;b?.setHoverChartIndex(),x&&x!==this&&x.onMouseOut(),this.options.events.mouseOver&&tl(this,”mouseOver”),this.setState(“hover”),e.hoverSeries=this}onMouseOut(){let e=this.options,x=this.chart,b=x.tooltip,E=x.hoverPoint;x.hoverSeries=null,E&&E.onMouseOut(),this&&e.events.mouseOut&&tl(this,”mouseOut”),b&&!this.stickyTracking&&(!b.shared||this.noSharedTooltip)&&b.hide(),x.series.forEach(function(e){e.setState(“”,!0)})}setState(e,x){let b=this,E=b.options,L=b.graph,O=E.inactiveOtherPoints,D=E.states,j=tx(D[e||”normal”]&&D[e||”normal”].animation,b.chart.options.chart.animation),R=E.lineWidth,z=E.opacity;if(e=e||””,b.state!==e&&([b.group,b.markerGroup,b.dataLabelsGroup].forEach(function(x){x&&(b.state&&x.removeClass(“highcharts-series-“+b.state),e&&x.addClass(“highcharts-series-“+e))}),b.state=e,!b.chart.styledMode)){if(D[e]&&!1===D[e].enabled)return;if(e&&(R=D[e].lineWidth||R+(D[e].lineWidthPlus||0),z=tx(D[e].opacity,z)),L&&!L.dashstyle&&tu(R))for(let e of[L,…this.zones.map(e=>e.graph)])e?.animate({“stroke-width”:R},j);O||[b.group,b.markerGroup,b.dataLabelsGroup,b.labelBySeries].forEach(function(e){e&&e.animate({opacity:z},j)})}x&&O&&b.points&&b.setAllPointsToState(e||void 0)}setAllPointsToState(e){this.points.forEach(function(x){x.setState&&x.setState(e)})}setVisible(e,x){let b=this,E=b.chart,L=E.options.chart.ignoreHiddenSeries,O=b.visible;b.visible=e=b.options.visible=b.userOptions.visible=void 0===e?!O:e;let D=e?”show”:”hide”;[“group”,”dataLabelsGroup”,”markerGroup”,”tracker”,”tt”].forEach(e=>{b[e]?.[D]()}),(E.hoverSeries===b||E.hoverPoint?.series===b)&&b.onMouseOut(),b.legendItem&&E.legend.colorizeItem(b,e),b.isDirty=!0,b.options.stacking&&E.series.forEach(e=>{e.options.stacking&&e.visible&&(e.isDirty=!0)}),b.linkedSeries.forEach(x=>{x.setVisible(e,!1)}),L&&(E.isDirtyBox=!0),tl(b,D),!1!==x&&E.redraw()}show(){this.setVisible(!0)}hide(){this.setVisible(!1)}select(e){this.selected=e=this.options.selected=void 0===e?!this.selected:e,this.checkbox&&(this.checkbox.checked=e),tl(this,e?”select”:”unselect”)}shouldShowTooltip(e,x,b={}){return b.series=this,b.visiblePlotOnly=!0,this.chart.isInsidePlot(e,x,b)}drawLegendSymbol(e,x){L[this.options.legendSymbol||”rectangle”]?.call(this,e,x)}};return X.defaultOptions=D,X.types=j.seriesTypes,X.registerType=j.registerSeriesType,tn(X.prototype,{axisTypes:[“xAxis”,”yAxis”],coll:”series”,colorCounter:0,directTouch:!1,invertible:!0,isCartesian:!0,kdAxisArray:[“clientX”,”plotY”],parallelArrays:[“x”,”y”],pointClass:O,requireSorting:!0,sorted:!0}),j.series=X,X}),b(x,”Core/Chart/Chart.js”,[x[“Core/Animation/AnimationUtilities.js”],x[“Core/Axis/Axis.js”],x[“Core/Defaults.js”],x[“Core/Templating.js”],x[“Core/Foundation.js”],x[“Core/Globals.js”],x[“Core/Renderer/RendererRegistry.js”],x[“Core/Series/Series.js”],x[“Core/Series/SeriesRegistry.js”],x[“Core/Renderer/SVG/SVGRenderer.js”],x[“Core/Time.js”],x[“Core/Utilities.js”],x[“Core/Renderer/HTML/AST.js”],x[“Core/Axis/Tick.js”]],function(e,x,b,E,L,O,D,j,R,z,F,H,U,Y){let{animate:V,animObject:q,setAnimation:K}=e,{defaultOptions:$,defaultTime:_}=b,{numberFormat:Z}=E,{registerEventOptions:J}=L,{charts:tt,doc:te,marginNames:ti,svg:ts,win:to}=O,{seriesTypes:tr}=R,{addEvent:tn,attr:ta,createElement:tl,css:th,defined:td,diffObjects:tc,discardElement:tp,erase:tu,error:tg,extend:tm,find:tf,fireEvent:tx,getStyle:tb,isArray:ty,isNumber:tv,isObject:tS,isString:tC,merge:tk,objectEach:tM,pick:tw,pInt:tA,relativeLength:tT,removeEvent:tP,splat:tE,syncTimeout:tL,uniqueKey:tO}=H;let Q=class Q{static chart(e,x,b){return new Q(e,x,b)}constructor(e,x,b){this.sharedClips={};let E=[…arguments];(tC(e)||e.nodeName)&&(this.renderTo=E.shift()),this.init(E[0],E[1])}setZoomOptions(){let e=this.options.chart,x=e.zooming;this.zooming={…x,type:tw(e.zoomType,x.type),key:tw(e.zoomKey,x.key),pinchType:tw(e.pinchType,x.pinchType),singleTouch:tw(e.zoomBySingleTouch,x.singleTouch,!1),resetButton:tk(x.resetButton,e.resetZoomButton)}}init(e,x){tx(this,”init”,{args:arguments},function(){let b=tk($,e),E=b.chart;this.userOptions=tm({},e),this.margin=[],this.spacing=[],this.labelCollectors=[],this.callback=x,this.isResizing=0,this.options=b,this.axes=[],this.series=[],this.time=e.time&&Object.keys(e.time).length?new F(e.time):O.time,this.numberFormatter=E.numberFormatter||Z,this.styledMode=E.styledMode,this.hasCartesianSeries=E.showAxes,this.index=tt.length,tt.push(this),O.chartCount++,J(this,E),this.xAxis=[],this.yAxis=[],this.pointCount=this.colorCounter=this.symbolCounter=0,this.setZoomOptions(),tx(this,”afterInit”),this.firstRender()})}initSeries(e){let x=this.options.chart,b=e.type||x.type,E=tr[b];E||tg(17,!0,this,{missingModuleFor:b});let L=new E;return”function”==typeof L.init&&L.init(this,e),L}setSortedData(){this.getSeriesOrderByLinks().forEach(function(e){e.points||e.data||!e.enabledDataSorting||e.setData(e.options.data,!1)})}getSeriesOrderByLinks(){return this.series.concat().sort(function(e,x){return e.linkedSeries.length||x.linkedSeries.length?x.linkedSeries.length-e.linkedSeries.length:0})}orderItems(e,x=0){let b=this[e],E=this.options[e]=tE(this.options[e]).slice(),L=this.userOptions[e]=this.userOptions[e]?tE(this.userOptions[e]).slice():[];if(this.hasRendered&&(E.splice(x),L.splice(x)),b)for(let e=x,O=b.length;e=Math.max(R+O,e.pos)&&x<=Math.min(R+O+H.width,e.pos+e.len)||(V.isInsidePlot=!1)}if(!b.ignoreY&&V.isInsidePlot){let e=!E&&b.axis&&!b.axis.isXAxis&&b.axis||F&&(E?F.xAxis:F.yAxis)||{pos:D,len:1/0},x=b.paneCoordinates?e.pos+Y:D+Y;x>=Math.max(z+D,e.pos)&&x<=Math.min(z+D+H.height,e.pos+e.len)||(V.isInsidePlot=!1)}return tx(this,"afterIsInsidePlot",V),V.isInsidePlot}redraw(e){tx(this,"beforeRedraw");let x=this.hasCartesianSeries?this.axes:this.colorAxis||[],b=this.series,E=this.pointer,L=this.legend,O=this.userOptions.legend,D=this.renderer,j=D.isHidden(),R=[],z,F,H,U=this.isDirtyBox,Y=this.isDirtyLegend,V;for(D.rootFontSize=D.boxWrapper.getStyle("font-size"),this.setResponsive&&this.setResponsive(!1),K(!!this.hasRendered&&e,this),j&&this.temporaryDisplay(),this.layOutTitles(!1),H=b.length;H--;)if(((V=b[H]).options.stacking||V.options.centerInCategory)&&(F=!0,V.isDirty)){z=!0;break}if(z)for(H=b.length;H--;)(V=b[H]).options.stacking&&(V.isDirty=!0);b.forEach(function(e){e.isDirty&&("point"===e.options.legendType?("function"==typeof e.updateTotals&&e.updateTotals(),Y=!0):O&&(O.labelFormatter||O.labelFormat)&&(Y=!0)),e.isDirtyData&&tx(e,"updatedData")}),Y&&L&&L.options.enabled&&(L.render(),this.isDirtyLegend=!1),F&&this.getStacks(),x.forEach(function(e){e.updateNames(),e.setScale()}),this.getMargins(),x.forEach(function(e){e.isDirty&&(U=!0)}),x.forEach(function(e){let x=e.min+","+e.max;e.extKey!==x&&(e.extKey=x,R.push(function(){tx(e,"afterSetExtremes",tm(e.eventArgs,e.getExtremes())),delete e.eventArgs})),(U||F)&&e.redraw()}),U&&this.drawChartBox(),tx(this,"predraw"),b.forEach(function(e){(U||e.isDirty)&&e.visible&&e.redraw(),e.isDirtyData=!1}),E&&E.reset(!0),D.draw(),tx(this,"redraw"),tx(this,"render"),j&&this.temporaryDisplay(!0),R.forEach(function(e){e.call()})}get(e){let x=this.series;function b(x){return x.id===e||x.options&&x.options.id===e}let E=tf(this.axes,b)||tf(this.series,b);for(let e=0;!E&&e(x.getPointsCollection().forEach(x=>{tw(x.selectedStaging,x.selected)&&e.push(x)}),e),[])}getSelectedSeries(){return this.series.filter(function(e){return e.selected})}setTitle(e,x,b){this.applyDescription(“title”,e),this.applyDescription(“subtitle”,x),this.applyDescription(“caption”,void 0),this.layOutTitles(b)}applyDescription(e,x){let b=this,E=this.options[e]=tk(this.options[e],x),L=this[e];L&&x&&(this[e]=L=L.destroy()),E&&!L&&((L=this.renderer.text(E.text,0,0,E.useHTML).attr({align:E.align,class:”highcharts-“+e,zIndex:E.zIndex||4}).add()).update=function(x,E){b.applyDescription(e,x),b.layOutTitles(E)},this.styledMode||L.css(tm(“title”===e?{fontSize:this.options.isStock?”1em”:”1.2em”}:{},E.style)),this[e]=L)}layOutTitles(e=!0){let x=[0,0,0],b=this.renderer,E=this.spacingBox;[“title”,”subtitle”,”caption”].forEach(function(e){let L=this[e],O=this.options[e],D=O.verticalAlign||”top”,j=”title”===e?”top”===D?-3:0:”top”===D?x[0]+2:0;if(L){L.css({width:(O.width||E.width+(O.widthAdjust||0))+”px”});let e=b.fontMetrics(L).b,R=Math.round(L.getBBox(O.useHTML).height);L.align(tm({y:”bottom”===D?e:j+e,height:R},O),!1,”spacingBox”),O.floating||(“top”===D?x[0]=Math.ceil(x[0]+R):”bottom”===D&&(x[2]=Math.ceil(x[2]+R)))}},this),x[0]&&”top”===(this.options.title.verticalAlign||”top”)&&(x[0]+=this.options.title.margin),x[2]&&”bottom”===this.options.caption.verticalAlign&&(x[2]+=this.options.caption.margin);let L=!this.titleOffset||this.titleOffset.join(“,”)!==x.join(“,”);this.titleOffset=x,tx(this,”afterLayOutTitles”),!this.isDirtyBox&&L&&(this.isDirtyBox=this.isDirtyLegend=L,this.hasRendered&&e&&this.isDirtyBox&&this.redraw())}getContainerBox(){return{width:tb(this.renderTo,”width”,!0)||0,height:tb(this.renderTo,”height”,!0)||0}}getChartSize(){let e=this.options.chart,x=e.width,b=e.height,E=this.getContainerBox();this.chartWidth=Math.max(0,x||E.width||600),this.chartHeight=Math.max(0,tT(b,this.chartWidth)||(E.height>1?E.height:400)),this.containerBox=E}temporaryDisplay(e){let x=this.renderTo,b;if(e)for(;x&&x.style;)x.hcOrigStyle&&(th(x,x.hcOrigStyle),delete x.hcOrigStyle),x.hcOrigDetached&&(te.body.removeChild(x),x.hcOrigDetached=!1),x=x.parentNode;else for(;x&&x.style&&(te.body.contains(x)||x.parentNode||(x.hcOrigDetached=!0,te.body.appendChild(x)),(“none”===tb(x,”display”,!1)||x.hcOricDetached)&&(x.hcOrigStyle={display:x.style.display,height:x.style.height,overflow:x.style.overflow},b={display:”block”,overflow:”hidden”},x!==this.renderTo&&(b.height=0),th(x,b),x.offsetWidth||x.style.setProperty(“display”,”block”,”important”)),(x=x.parentNode)!==te.body););}setClassName(e){this.container.className=”highcharts-container “+(e||””)}getContainer(){let e=this.options,x=e.chart,b=”data-highcharts-chart”,E=tO(),L,O=this.renderTo;O||(this.renderTo=O=x.renderTo),tC(O)&&(this.renderTo=O=te.getElementById(O)),O||tg(13,!0,this);let j=tA(ta(O,b));tv(j)&&tt[j]&&tt[j].hasRendered&&tt[j].destroy(),ta(O,b,this.index),O.innerHTML=U.emptyHTML,x.skipClone||O.offsetWidth||this.temporaryDisplay(),this.getChartSize();let R=this.chartHeight,F=this.chartWidth;th(O,{overflow:”hidden”}),this.styledMode||(L=tm({position:”relative”,overflow:”hidden”,width:F+”px”,height:R+”px”,textAlign:”left”,lineHeight:”normal”,zIndex:0,”-webkit-tap-highlight-color”:”rgba(0,0,0,0)”,userSelect:”none”,”touch-action”:”manipulation”,outline:”none”},x.style||{}));let H=tl(“div”,{id:E},L,O);this.container=H,this.getChartSize(),F===this.chartWidth||(F=this.chartWidth,this.styledMode||th(H,{width:tw(x.style?.width,F+”px”)})),this.containerBox=this.getContainerBox(),this._cursor=H.style.cursor;let Y=x.renderer||!ts?D.getRendererType(x.renderer):z;if(this.renderer=new Y(H,F,R,void 0,x.forExport,e.exporting&&e.exporting.allowHTML,this.styledMode),K(void 0,this),this.setClassName(x.className),this.styledMode)for(let x in e.defs)this.renderer.definition(e.defs[x]);else this.renderer.setStyle(x.style);this.renderer.chartIndex=this.index,tx(this,”afterGetContainer”)}getMargins(e){let{spacing:x,margin:b,titleOffset:E}=this;this.resetMargins(),E[0]&&!td(b[0])&&(this.plotTop=Math.max(this.plotTop,E[0]+x[0])),E[2]&&!td(b[2])&&(this.marginBottom=Math.max(this.marginBottom,E[2]+x[2])),this.legend&&this.legend.display&&this.legend.adjustMargins(b,x),tx(this,”getMargins”),e||this.getAxisMargins()}getAxisMargins(){let e=this,x=e.axisOffset=[0,0,0,0],b=e.colorAxis,E=e.margin,L=function(e){e.forEach(function(e){e.visible&&e.getOffset()})};e.hasCartesianSeries?L(e.axes):b&&b.length&&L(b),ti.forEach(function(b,L){td(E[L])||(e[b]+=x[L])}),e.setChartSize()}getOptions(){return tc(this.userOptions,$)}reflow(e){let x=this,b=x.containerBox,E=x.getContainerBox();delete x.pointer?.chartPosition,!x.isPrinting&&!x.isResizing&&b&&E.width&&((E.width!==b.width||E.height!==b.height)&&(H.clearTimeout(x.reflowTimeout),x.reflowTimeout=tL(function(){x.container&&x.setSize(void 0,void 0,!1)},100*!!e)),x.containerBox=E)}setReflow(){let e=this,x=x=>{e.options?.chart.reflow&&e.hasLoaded&&e.reflow(x)};if(“function”==typeof ResizeObserver)new ResizeObserver(x).observe(e.renderTo);else{let e=tn(to,”resize”,x);tn(this,”destroy”,e)}}setSize(e,x,b){let E=this,L=E.renderer;E.isResizing+=1,K(b,E);let O=L.globalAnimation;E.oldChartHeight=E.chartHeight,E.oldChartWidth=E.chartWidth,void 0!==e&&(E.options.chart.width=e),void 0!==x&&(E.options.chart.height=x),E.getChartSize();let{chartWidth:D,chartHeight:j,scrollablePixelsX:R=0,scrollablePixelsY:z=0}=E;(E.isDirtyBox||D!==E.oldChartWidth||j!==E.oldChartHeight)&&(E.styledMode||(O?V:th)(E.container,{width:`${D+R}px`,height:`${j+z}px`},O),E.setChartSize(!0),L.setSize(D,j,O),E.axes.forEach(function(e){e.isDirty=!0,e.setScale()}),E.isDirtyLegend=!0,E.isDirtyBox=!0,E.layOutTitles(),E.getMargins(),E.redraw(O),E.oldChartHeight=void 0,tx(E,”resize”),setTimeout(()=>{E&&tx(E,”endResize”)},q(O).duration)),E.isResizing-=1}setChartSize(e){let x,b,E,L,{chartHeight:O,chartWidth:D,inverted:j,spacing:R,renderer:z}=this,F=this.clipOffset,H=Math[j?”floor”:”round”];this.plotLeft=x=Math.round(this.plotLeft),this.plotTop=b=Math.round(this.plotTop),this.plotWidth=E=Math.max(0,Math.round(D-x-this.marginRight)),this.plotHeight=L=Math.max(0,Math.round(O-b-this.marginBottom)),this.plotSizeX=j?L:E,this.plotSizeY=j?E:L,this.spacingBox=z.spacingBox={x:R[3],y:R[0],width:D-R[3]-R[1],height:O-R[0]-R[2]},this.plotBox=z.plotBox={x:x,y:b,width:E,height:L},F&&(this.clipBox={x:H(F[3]),y:H(F[0]),width:H(this.plotSizeX-F[1]-F[3]),height:H(this.plotSizeY-F[0]-F[2])}),e||(this.axes.forEach(function(e){e.setAxisSize(),e.setAxisTranslation()}),z.alignElements()),tx(this,”afterSetChartSize”,{skipAxes:e})}resetMargins(){tx(this,”resetMargins”);let e=this,x=e.options.chart,b=x.plotBorderWidth||0,E=b/2;[“margin”,”spacing”].forEach(function(b){let E=x[b],L=tS(E)?E:[E,E,E,E];[“Top”,”Right”,”Bottom”,”Left”].forEach(function(E,O){e[b][O]=tw(x[b+E],L[O])})}),ti.forEach(function(x,b){e[x]=tw(e.margin[b],e.spacing[b])}),e.axisOffset=[0,0,0,0],e.clipOffset=[E,E,E,E],e.plotBorderWidth=b}drawChartBox(){let e=this.options.chart,x=this.renderer,b=this.chartWidth,E=this.chartHeight,L=this.styledMode,O=this.plotBGImage,D=e.backgroundColor,j=e.plotBackgroundColor,R=e.plotBackgroundImage,z=this.plotLeft,F=this.plotTop,H=this.plotWidth,U=this.plotHeight,Y=this.plotBox,V=this.clipRect,q=this.clipBox,K=this.chartBackground,$=this.plotBackground,_=this.plotBorder,Z,J,tt,te=”animate”;K||(this.chartBackground=K=x.rect().addClass(“highcharts-background”).add(),te=”attr”),L?Z=J=K.strokeWidth():(J=(Z=e.borderWidth||0)+8*!!e.shadow,tt={fill:D||”none”},(Z||K[“stroke-width”])&&(tt.stroke=e.borderColor,tt[“stroke-width”]=Z),K.attr(tt).shadow(e.shadow)),K[te]({x:J/2,y:J/2,width:b-J-Z%2,height:E-J-Z%2,r:e.borderRadius}),te=”animate”,$||(te=”attr”,this.plotBackground=$=x.rect().addClass(“highcharts-plot-background”).add()),$[te](Y),!L&&($.attr({fill:j||”none”}).shadow(e.plotShadow),R&&(O?(R!==O.attr(“href”)&&O.attr(“href”,R),O.animate(Y)):this.plotBGImage=x.image(R,z,F,H,U).add())),V?V.animate({width:q.width,height:q.height}):this.clipRect=x.clipRect(q),te=”animate”,_||(te=”attr”,this.plotBorder=_=x.rect().addClass(“highcharts-plot-border”).attr({zIndex:1}).add()),L||_.attr({stroke:e.plotBorderColor,”stroke-width”:e.plotBorderWidth||0,fill:”none”}),_[te](_.crisp({x:z,y:F,width:H,height:U},-_.strokeWidth())),this.isDirtyBox=!1,tx(this,”afterDrawChartBox”)}propFromSeries(){let e,x,b,E=this,L=E.options.chart,O=E.options.series;[“inverted”,”angular”,”polar”].forEach(function(D){for(x=tr[L.type],b=L[D]||x&&x.prototype[D],e=O&&O.length;!b&&e–;)(x=tr[O[e].type])&&x.prototype[D]&&(b=!0);E[D]=b})}linkSeries(e){let x=this,b=x.series;b.forEach(function(e){e.linkedSeries.length=0}),b.forEach(function(e){let{linkedTo:b}=e.options;if(tC(b)){let E;(E=”:previous”===b?x.series[e.index-1]:x.get(b))&&E.linkedParent!==e&&(E.linkedSeries.push(e),e.linkedParent=E,E.enabledDataSorting&&e.setDataSortingOptions(),e.visible=tw(e.options.visible,E.options.visible,e.visible))}}),tx(this,”afterLinkSeries”,{isUpdating:e})}renderSeries(){this.series.forEach(function(e){e.translate(),e.render()})}render(){let e=this.axes,x=this.colorAxis,b=this.renderer,E=this.options.chart.axisLayoutRuns||2,L=e=>{e.forEach(e=>{e.visible&&e.render()})},O=0,D=!0,j,R=0;for(let x of(this.setTitle(),tx(this,”beforeMargins”),this.getStacks?.(),this.getMargins(!0),this.setChartSize(),e)){let{options:e}=x,{labels:b}=e;if(this.hasCartesianSeries&&x.horiz&&x.visible&&b.enabled&&x.series.length&&”colorAxis”!==x.coll&&!this.polar){O=e.tickLength,x.createGroups();let E=new Y(x,0,””,!0),L=E.createLabel(“x”,b);if(E.destroy(),L&&tw(b.reserveSpace,!tv(e.crossing))&&(O=L.getBBox().height+b.distance+Math.max(e.offset||0,0)),O){L?.destroy();break}}}for(this.plotHeight=Math.max(this.plotHeight-O,0);(D||j||E>1)&&R(R?1:1.1),j=b/this.plotHeight>(R?1:1.05),R++}this.drawChartBox(),this.hasCartesianSeries?L(e):x&&x.length&&L(x),this.seriesGroup||(this.seriesGroup=b.g(“series-group”).attr({zIndex:3}).shadow(this.options.chart.seriesGroupShadow).add()),this.renderSeries(),this.addCredits(),this.setResponsive&&this.setResponsive(),this.hasRendered=!0}addCredits(e){let x=this,b=tk(!0,this.options.credits,e);b.enabled&&!this.credits&&(this.credits=this.renderer.text(b.text+(this.mapCredits||””),0,0).addClass(“highcharts-credits”).on(“click”,function(){b.href&&(to.location.href=b.href)}).attr({align:b.position.align,zIndex:8}),x.styledMode||this.credits.css(b.style),this.credits.add().align(b.position),this.credits.update=function(e){x.credits=x.credits.destroy(),x.addCredits(e)})}destroy(){let e,x=this,b=x.axes,E=x.series,L=x.container,D=L&&L.parentNode;for(tx(x,”destroy”),x.renderer.forExport?tu(tt,x):tt[x.index]=void 0,O.chartCount–,x.renderTo.removeAttribute(“data-highcharts-chart”),tP(x),e=b.length;e–;)b[e]=b[e].destroy();for(this.scroller&&this.scroller.destroy&&this.scroller.destroy(),e=E.length;e–;)E[e]=E[e].destroy();[“title”,”subtitle”,”chartBackground”,”plotBackground”,”plotBGImage”,”plotBorder”,”seriesGroup”,”clipRect”,”credits”,”pointer”,”rangeSelector”,”legend”,”resetZoomButton”,”tooltip”,”renderer”].forEach(function(e){let b=x[e];b&&b.destroy&&(x[e]=b.destroy())}),L&&(L.innerHTML=U.emptyHTML,tP(L),D&&tp(L)),tM(x,function(e,b){delete x[b]})}firstRender(){let e=this,x=e.options;e.getContainer(),e.resetMargins(),e.setChartSize(),e.propFromSeries(),e.getAxes();let b=ty(x.series)?x.series:[];x.series=[],b.forEach(function(x){e.initSeries(x)}),e.linkSeries(),e.setSortedData(),tx(e,”beforeRender”),e.render(),e.pointer?.getChartPosition(),e.renderer.imgCount||e.hasLoaded||e.onload(),e.temporaryDisplay(!0)}onload(){this.callbacks.concat([this.callback]).forEach(function(e){e&&void 0!==this.index&&e.apply(this,[this])},this),tx(this,”load”),tx(this,”render”),td(this.index)&&this.setReflow(),this.warnIfA11yModuleNotLoaded(),this.hasLoaded=!0}warnIfA11yModuleNotLoaded(){let{options:e,title:x}=this;!e||this.accessibility||(this.renderer.boxWrapper.attr({role:”img”,”aria-label”:(x&&x.element.textContent||””).replace(/this.transform({reset:!0,trigger:”zoom”}))}pan(e,x){let b=this,E=”object”==typeof x?x:{enabled:x,type:”x”},L=E.type,O=L&&b[({x:”xAxis”,xy:”axes”,y:”yAxis”})[L]].filter(e=>e.options.panningEnabled&&!e.options.isInternal),D=b.options.chart;D?.panning&&(D.panning=E),tx(this,”pan”,{originalEvent:e},()=>{b.transform({axes:O,event:e,to:{x:e.chartX-(b.mouseDownX||0),y:e.chartY-(b.mouseDownY||0)},trigger:”pan”}),th(b.container,{cursor:”move”})})}transform(e){let{axes:x=this.axes,event:b,from:E={},reset:L,selection:O,to:D={},trigger:j}=e,{inverted:R}=this,z=!1,F;for(let e of(this.hoverPoints?.forEach(e=>e.setState()),x)){let{horiz:x,len:H,minPointOffset:U=0,options:Y,reversed:V}=e,q=x?”width”:”height”,K=x?”x”:”y”,$=tw(D[q],e.len),_=tw(E[q],e.len),Z=10>Math.abs($)?1:$/_,J=(E[K]||0)+_/2-e.pos,tt=J-((D[K]??e.pos)+$/2-e.pos)/Z,te=V&&!R||!V&&R?-1:1;if(!L&&(J<0||J>e.len))continue;let ti=e.toValue(tt,!0)+(O?0:U*te),ts=e.toValue(tt+H/Z,!0)-(O?0:U*te||0),to=e.allExtremes;if(ti>ts&&([ti,ts]=[ts,ti]),1===Z&&!L&&”yAxis”===e.coll&&!to){for(let x of e.series){let e=x.getExtremes(x.getProcessedData(!0).yData,!0);to??(to={dataMin:Number.MAX_VALUE,dataMax:-Number.MAX_VALUE}),tv(e.dataMin)&&tv(e.dataMax)&&(to.dataMin=Math.min(e.dataMin,to.dataMin),to.dataMax=Math.max(e.dataMax,to.dataMax))}e.allExtremes=to}let{dataMin:tr,dataMax:tn,min:ta,max:tl}=tm(e.getExtremes(),to||{}),th=tr??Y.min,tc=tn??Y.max,tp=ts-ti,tu=e.categories?0:Math.min(tp,tc-th),tg=th-tu*(td(Y.min)?0:Y.minPadding),tf=tc+tu*(td(Y.max)?0:Y.maxPadding),tx=e.allowZoomOutside||1===Z||”zoom”!==j&&Z>1,tb=Math.min(Y.min??tg,tg,tx?ta:tg),ty=Math.max(Y.max??tf,tf,tx?tl:tf);(!e.isOrdinal||1!==Z||L)&&(ti=1&&(ts=ti+tp)),ts>ty&&(ts=ty,Z>=1&&(ti=ts-tp)),(L||e.series.length&&(ti!==ta||ts!==tl)&&ti>=tb&&ts<=ty)&&(O?O[e.coll].push({axis:e,min:ti,max:ts}):(e.isPanning="zoom"!==j,e.setExtremes(L?void 0:ti,L?void 0:ts,!1,!1,{move:tt,trigger:j,scale:Z}),!L&&(ti>tb||ts{delete e.selection,e.trigger=”zoom”,this.transform(e)}):(F&&!this.resetZoomButton?this.showResetZoom():!F&&this.resetZoomButton&&(this.resetZoomButton=this.resetZoomButton.destroy()),this.redraw(“zoom”===j&&(this.options.chart.animation??this.pointCount<100)))),z}};return tm(Q.prototype,{callbacks:[],collectionsWithInit:{xAxis:[Q.prototype.addAxis,[!0]],yAxis:[Q.prototype.addAxis,[!1]],series:[Q.prototype.addSeries]},collectionsWithUpdate:["xAxis","yAxis","series"],propsRequireDirtyBox:["backgroundColor","borderColor","borderWidth","borderRadius","plotBackgroundColor","plotBackgroundImage","plotBorderColor","plotBorderWidth","plotShadow","shadow"],propsRequireReflow:["margin","marginTop","marginRight","marginBottom","marginLeft","spacing","spacingTop","spacingRight","spacingBottom","spacingLeft"],propsRequireUpdateSeries:["chart.inverted","chart.polar","chart.ignoreHiddenSeries","chart.type","colors","plotOptions","time","tooltip"]}),Q}),b(x,"Extensions/ScrollablePlotArea.js",[x["Core/Animation/AnimationUtilities.js"],x["Core/Globals.js"],x["Core/Renderer/RendererRegistry.js"],x["Core/Utilities.js"]],function(e,x,b,E){let{stop:L}=e,{composed:O}=x,{addEvent:D,createElement:j,css:R,defined:z,merge:F,pushUnique:H}=E;function U(){let e=this.scrollablePlotArea;(this.scrollablePixelsX||this.scrollablePixelsY)&&!e&&(this.scrollablePlotArea=e=new g(this)),e?.applyFixed()}function Y(){this.chart.scrollablePlotArea&&(this.chart.scrollablePlotArea.isDirty=!0)}let g=class g{static compose(e,x,b){H(O,this.compose)&&(D(e,"afterInit",Y),D(x,"afterSetChartSize",e=>this.afterSetSize(e.target,e)),D(x,”render”,U),D(b,”show”,Y))}static afterSetSize(e,x){let b,E,L,{minWidth:O,minHeight:D}=e.options.chart.scrollablePlotArea||{},{clipBox:j,plotBox:R,inverted:H,renderer:U}=e;if(!U.forExport&&(O?(e.scrollablePixelsX=b=Math.max(0,O-e.chartWidth),b&&(e.scrollablePlotBox=F(e.plotBox),R.width=e.plotWidth+=b,j[H?”height”:”width”]+=b,L=!0)):D&&(e.scrollablePixelsY=E=Math.max(0,D-e.chartHeight),z(E)&&(e.scrollablePlotBox=F(e.plotBox),R.height=e.plotHeight+=E,j[H?”width”:”height”]+=E,L=!1)),z(L)&&!x.skipAxes))for(let x of e.axes)x.horiz===L&&(x.setAxisSize(),x.setAxisTranslation())}constructor(e){let x,E=e.options.chart,L=b.getRendererType(),O=E.scrollablePlotArea||{},z=this.moveFixedElements.bind(this),F={WebkitOverflowScrolling:”touch”,overflowX:”hidden”,overflowY:”hidden”};e.scrollablePixelsX&&(F.overflowX=”auto”),e.scrollablePixelsY&&(F.overflowY=”auto”),this.chart=e;let H=this.parentDiv=j(“div”,{className:”highcharts-scrolling-parent”},{position:”relative”},e.renderTo),U=this.scrollingContainer=j(“div”,{className:”highcharts-scrolling”},F,H),Y=this.innerContainer=j(“div”,{className:”highcharts-inner-container”},void 0,U),V=this.fixedDiv=j(“div”,{className:”highcharts-fixed”},{position:”absolute”,overflow:”hidden”,pointerEvents:”none”,zIndex:(E.style?.zIndex||0)+2,top:0},void 0,!0),q=this.fixedRenderer=new L(V,e.chartWidth,e.chartHeight,E.style);this.mask=q.path().attr({fill:E.backgroundColor||”#fff”,”fill-opacity”:O.opacity??.85,zIndex:-1}).addClass(“highcharts-scrollable-mask”).add(),U.parentNode.insertBefore(V,U),R(e.renderTo,{overflow:”visible”}),D(e,”afterShowResetZoom”,z),D(e,”afterApplyDrilldown”,z),D(e,”afterLayOutTitles”,z),D(U,”scroll”,()=>{let{pointer:b,hoverPoint:E}=e;b&&(delete b.chartPosition,E&&(x=E),b.runPointActions(void 0,x,!0))}),Y.appendChild(e.container)}applyFixed(){let{chart:e,fixedRenderer:x,isDirty:b,scrollingContainer:E}=this,{axisOffset:O,chartWidth:D,chartHeight:j,container:F,plotHeight:H,plotLeft:U,plotTop:Y,plotWidth:V,scrollablePixelsX:q=0,scrollablePixelsY:K=0}=e,{scrollPositionX:$=0,scrollPositionY:_=0}=e.options.chart.scrollablePlotArea||{},Z=D+q,J=j+K;x.setSize(D,j),(b??!0)&&(this.isDirty=!1,this.moveFixedElements()),L(e.container),R(F,{width:`${Z}px`,height:`${J}px`}),e.renderer.boxWrapper.attr({width:Z,height:J,viewBox:[“0 0″,Z,J].join(” “)}),e.chartBackground?.attr({width:Z,height:J}),R(E,{width:`${D}px`,height:`${j}px`}),z(b)||(E.scrollLeft=q*$,E.scrollTop=K*_);let tt=Y-O[0]-1,te=U-O[3]-1,ti=Y+H+O[2]+1,ts=U+V+O[1]+1,to=U+V-q,tr=Y+H-K,tn=[[“M”,0,0]];q?tn=[[“M”,0,tt],[“L”,U-1,tt],[“L”,U-1,ti],[“L”,0,ti],[“Z”],[“M”,to,tt],[“L”,D,tt],[“L”,D,ti],[“L”,to,ti],[“Z”]]:K&&(tn=[[“M”,te,0],[“L”,te,Y-1],[“L”,ts,Y-1],[“L”,ts,0],[“Z”],[“M”,te,tr],[“L”,te,j],[“L”,ts,j],[“L”,ts,tr],[“Z”]]),”adjustHeight”!==e.redrawTrigger&&this.mask.attr({d:tn})}moveFixedElements(){let e,{container:x,inverted:b,scrollablePixelsX:E,scrollablePixelsY:L}=this.chart,O=this.fixedRenderer,D=g.fixedSelectors;for(let j of(E&&!b?e=”.highcharts-yaxis”:E&&b||L&&!b?e=”.highcharts-xaxis”:L&&b&&(e=”.highcharts-yaxis”),e&&D.push(`${e}:not(.highcharts-radial-axis)`,`${e}-labels:not(.highcharts-radial-axis-labels)`),D))[].forEach.call(x.querySelectorAll(j),e=>{(e.namespaceURI===O.SVG_NS?O.box:O.box.parentNode).appendChild(e),e.style.pointerEvents=”auto”})}};return g.fixedSelectors=[“.highcharts-breadcrumbs-group”,”.highcharts-contextbutton”,”.highcharts-caption”,”.highcharts-credits”,”.highcharts-drillup-button”,”.highcharts-legend”,”.highcharts-legend-checkbox”,”.highcharts-navigator-series”,”.highcharts-navigator-xaxis”,”.highcharts-navigator-yaxis”,”.highcharts-navigator”,”.highcharts-range-selector-group”,”.highcharts-reset-zoom”,”.highcharts-scrollbar”,”.highcharts-subtitle”,”.highcharts-title”],g}),b(x,”Core/Axis/Stacking/StackItem.js”,[x[“Core/Templating.js”],x[“Core/Series/SeriesRegistry.js”],x[“Core/Utilities.js”]],function(e,x,b){let{format:E}=e,{series:L}=x,{destroyObjectProperties:O,fireEvent:D,isNumber:j,pick:R}=b;return class{constructor(e,x,b,E,L){let O=e.chart.inverted,D=e.reversed;this.axis=e;let j=this.isNegative=!!b!=!!D;this.options=x=x||{},this.x=E,this.total=null,this.cumulative=null,this.points={},this.hasValidPoints=!1,this.stack=L,this.leftCliff=0,this.rightCliff=0,this.alignOptions={align:x.align||(O?j?”left”:”right”:”center”),verticalAlign:x.verticalAlign||(O?”middle”:j?”bottom”:”top”),y:x.y,x:x.x},this.textAlign=x.textAlign||(O?j?”right”:”left”:”center”)}destroy(){O(this,this.axis)}render(e){let x=this.axis.chart,b=this.options,L=b.format,O=L?E(L,this,x):b.formatter.call(this);if(this.label)this.label.attr({text:O,visibility:”hidden”});else{this.label=x.renderer.label(O,null,void 0,b.shape,void 0,void 0,b.useHTML,!1,”stack-labels”);let E={r:b.borderRadius||0,text:O,padding:R(b.padding,5),visibility:”hidden”};x.styledMode||(E.fill=b.backgroundColor,E.stroke=b.borderColor,E[“stroke-width”]=b.borderWidth,this.label.css(b.style||{})),this.label.attr(E),this.label.added||this.label.add(e)}this.label.labelrank=x.plotSizeY,D(this,”afterRender”)}setOffset(e,x,b,E,O,z){let{alignOptions:F,axis:H,label:U,options:Y,textAlign:V}=this,q=H.chart,K=this.getStackBox({xOffset:e,width:x,boxBottom:b,boxTop:E,defaultX:O,xAxis:z}),{verticalAlign:$}=F;if(U&&K){let e=U.getBBox(void 0,0),x=U.padding,b=”justify”===R(Y.overflow,”justify”),E;F.x=Y.x||0,F.y=Y.y||0;let{x:O,y:D}=this.adjustStackPosition({labelBox:e,verticalAlign:$,textAlign:V});K.x-=O,K.y-=D,U.align(F,!1,K),(E=q.isInsidePlot(U.alignAttr.x+F.x+O,U.alignAttr.y+F.y+D))||(b=!1),b&&L.prototype.justifyDataLabel.call(H,U,F,U.alignAttr,e,K),U.attr({x:U.alignAttr.x,y:U.alignAttr.y,rotation:Y.rotation,rotationOriginX:e.width*({left:0,center:.5,right:1})[Y.textAlign||”center”],rotationOriginY:e.height/2}),R(!b&&Y.crop,!0)&&(E=j(U.x)&&j(U.y)&&q.isInsidePlot(U.x-x+(U.width||0),U.y)&&q.isInsidePlot(U.x+x,U.y)),U[E?”show”:”hide”]()}D(this,”afterSetOffset”,{xOffset:e,width:x})}adjustStackPosition({labelBox:e,verticalAlign:x,textAlign:b}){let E={bottom:0,middle:1,top:2,right:1,center:0,left:-1},L=E[x],O=E[b];return{x:e.width/2+e.width/2*O,y:e.height/2*L}}getStackBox(e){let x=this.axis,b=x.chart,{boxTop:E,defaultX:L,xOffset:O,width:D,boxBottom:z}=e,F=x.stacking.usePercentage?100:R(E,this.total,0),H=x.toPixels(F),U=e.xAxis||b.xAxis[0],Y=R(L,U.translate(this.x))+O,V=Math.abs(H-x.toPixels(z||j(x.min)&&x.logarithmic&&x.logarithmic.lin2log(x.min)||0)),q=b.inverted,K=this.isNegative;return q?{x:(K?H:H-V)-b.plotLeft,y:U.height-Y-D,width:V,height:D}:{x:Y+U.transB-b.plotLeft,y:(K?H-V:H)-b.plotTop,width:D,height:V}}}}),b(x,”Core/Axis/Stacking/StackingAxis.js”,[x[“Core/Animation/AnimationUtilities.js”],x[“Core/Axis/Axis.js”],x[“Core/Series/SeriesRegistry.js”],x[“Core/Axis/Stacking/StackItem.js”],x[“Core/Utilities.js”]],function(e,x,b,E,L){var O;let{getDeferredAnimation:D}=e,{series:{prototype:j}}=b,{addEvent:R,correctFloat:z,defined:F,destroyObjectProperties:H,fireEvent:U,isArray:Y,isNumber:V,objectEach:q,pick:K}=L;function $(){let e=this.inverted;this.axes.forEach(e=>{e.stacking&&e.stacking.stacks&&e.hasVisibleSeries&&(e.stacking.oldStacks=e.stacking.stacks)}),this.series.forEach(x=>{let b=x.xAxis&&x.xAxis.options||{};x.options.stacking&&x.reserveSpace()&&(x.stackKey=[x.type,K(x.options.stack,””),e?b.top:b.left,e?b.height:b.width].join(“,”))})}function _(){let e=this.stacking;if(e){let x=e.stacks;q(x,(e,b)=>{H(e),delete x[b]}),e.stackTotalGroup?.destroy()}}function Z(){this.stacking||(this.stacking=new A(this))}function J(e,x,b,E){return!F(e)||e.x!==x||E&&e.stackKey!==E?e={x:x,index:0,key:E,stackKey:E}:e.index++,e.key=[b,x,e.index].join(“,”),e}function tt(){let e,x=this,b=x.yAxis,E=x.stackKey||””,L=b.stacking.stacks,O=x.processedXData,D=x.options.stacking,j=x[D+”Stacker”];j&&[E,”-“+E].forEach(b=>{let E=O.length,D,R,z;for(;E–;)D=O[E],e=x.getStackIndicator(e,D,x.index,b),R=L[b]?.[D],(z=R?.points[e.key||””])&&j.call(x,z,R,E)})}function te(e,x,b){let E=x.total?100/x.total:0;e[0]=z(e[0]*E),e[1]=z(e[1]*E),this.stackedYData[b]=e[1]}function ti(e){(this.is(“column”)||this.is(“columnrange”))&&(this.options.centerInCategory&&!this.options.stacking&&this.chart.series.length>1?j.setStackedPoints.call(this,e,”group”):e.stacking.resetStacks())}function ts(e,x){let b,L,O,D,j,R,H,U,V,q=x||this.options.stacking;if(!q||!this.reserveSpace()||(({group:”xAxis”})[q]||”yAxis”)!==e.coll)return;let $=this.processedXData,_=this.processedYData,Z=[],J=_.length,tt=this.options,te=tt.threshold||0,ti=tt.startFromThreshold?te:0,ts=tt.stack,to=x?`${this.type},${q}`:this.stackKey||””,tr=”-“+to,tn=this.negStacks,ta=e.stacking,tl=ta.stacks,th=ta.oldStacks;for(ta.stacksTouched+=1,H=0;H0&&!1===this.singleStacks&&(O.points[R][0]=O.points[this.index+”,”+U+”,0″][0])):(delete O.points[R],delete O.points[this.index]);let x=O.total||0;”percent”===q?(D=L?to:tr,x=tn&&tl[D]?.[U]?(D=tl[D][U]).total=Math.max(D.total||0,x)+Math.abs(V)||0:z(x+(Math.abs(V)||0))):”group”===q?(Y(V)&&(V=V[0]),null!==V&&x++):x=z(x+(V||0)),”group”===q?O.cumulative=(x||1)-1:O.cumulative=z(K(O.cumulative,ti)+(V||0)),O.total=x,null!==V&&(O.points[R].push(O.cumulative),Z[H]=O.cumulative,O.hasValidPoints=!0)}”percent”===q&&(ta.usePercentage=!0),”group”!==q&&(this.stackedYData=Z),ta.oldStacks={}}let A=class A{constructor(e){this.oldStacks={},this.stacks={},this.stacksTouched=0,this.axis=e}buildStacks(){let e,x,b=this.axis,E=b.series,L=”xAxis”===b.coll,O=b.options.reversedStacks,D=E.length;for(this.resetStacks(),this.usePercentage=!1,x=D;x–;)e=E[O?x:D-x-1],L&&e.setGroupedPoints(b),e.setStackedPoints(b);if(!L)for(x=0;x{q(e,e=>{e.cumulative=e.total})}))}resetStacks(){q(this.stacks,e=>{q(e,(x,b)=>{V(x.touched)&&x.touched{q(e,e=>{e.render(O)})}),O.animate({opacity:1},L)}};return(O||(O={})).compose=function(e,x,b){let E=x.prototype,L=b.prototype;E.getStacks||(R(e,”init”,Z),R(e,”destroy”,_),E.getStacks=$,L.getStackIndicator=J,L.modifyStacks=tt,L.percentStacker=te,L.setGroupedPoints=ti,L.setStackedPoints=ts)},O}),b(x,”Series/Line/LineSeries.js”,[x[“Core/Series/Series.js”],x[“Core/Series/SeriesRegistry.js”],x[“Core/Utilities.js”]],function(e,x,b){let{defined:E,merge:L,isObject:O}=b;let a=class a extends e{drawGraph(){let e=this.options,x=(this.gappedPath||this.getGraphPath).call(this),b=this.chart.styledMode;[this,…this.zones].forEach((E,D)=>{let j,R=E.graph,z=R?”animate”:”attr”,F=E.dashStyle||e.dashStyle;R?(R.endX=this.preventGraphAnimation?null:x.xMap,R.animate({d:x})):x.length&&(E.graph=R=this.chart.renderer.path(x).addClass(“highcharts-graph”+(D?` highcharts-zone-graph-${D-1} `:” “)+(D&&E.className||””)).attr({zIndex:1}).add(this.group)),R&&!b&&(j={stroke:!D&&e.lineColor||E.color||this.color||”#cccccc”,”stroke-width”:e.lineWidth||0,fill:this.fillGraph&&this.color||”none”},F?j.dashstyle=F:”square”!==e.linecap&&(j[“stroke-linecap”]=j[“stroke-linejoin”]=”round”),R[z](j).shadow(D<2&&e.shadow&&L({filterUnits:"userSpaceOnUse"},O(e.shadow)?e.shadow:{}))),R&&(R.startX=x.xMap,R.isArea=x.isArea)})}getGraphPath(e,x,b){let L=this,O=L.options,D=[],j=[],R,z=O.step,F=(e=e||L.points).reversed;return F&&e.reverse(),(z=({right:1,center:2})[z]||z&&3)&&F&&(z=4-z),(e=this.getValidPoints(e,!1,!(O.connectNulls&&!x&&!b))).forEach(function(F,H){let U,Y=F.plotX,V=F.plotY,q=e[H-1],K=F.isNull||"number"!=typeof V;(F.leftCliff||q&&q.rightCliff)&&!b&&(R=!0),K&&!E(x)&&H>0?R=!O.connectNulls:K&&!x?R=!0:(0===H||R?U=[[“M”,F.plotX,F.plotY]]:L.getPointSpline?U=[L.getPointSpline(e,F,H)]:z?(U=1===z?[[“L”,q.plotX,V]]:2===z?[[“L”,(q.plotX+Y)/2,q.plotY],[“L”,(q.plotX+Y)/2,V]]:[[“L”,Y,q.plotY]]).push([“L”,Y,V]):U=[[“L”,Y,V]],j.push(F.x),z&&(j.push(F.x),2===z&&j.push(F.x)),D.push.apply(D,U),R=!1)}),D.xMap=j,L.graphPath=D,D}};return a.defaultOptions=L(e.defaultOptions,{legendSymbol:”lineMarker”}),x.registerSeriesType(“line”,a),a}),b(x,”Series/Area/AreaSeriesDefaults.js”,[],function(){return{threshold:0,legendSymbol:”areaMarker”}}),b(x,”Series/Area/AreaSeries.js”,[x[“Series/Area/AreaSeriesDefaults.js”],x[“Core/Series/SeriesRegistry.js”],x[“Core/Utilities.js”]],function(e,x,b){let{seriesTypes:{line:E}}=x,{extend:L,merge:O,objectEach:D,pick:j}=b;let l=class l extends E{drawGraph(){this.areaPath=[],super.drawGraph.apply(this);let{areaPath:e,options:x}=this;[this,…this.zones].forEach((b,E)=>{let L={},O=b.fillColor||x.fillColor,D=b.area,j=D?”animate”:”attr”;D?(D.endX=this.preventGraphAnimation?null:e.xMap,D.animate({d:e})):(L.zIndex=0,(D=b.area=this.chart.renderer.path(e).addClass(“highcharts-area”+(E?` highcharts-zone-area-${E-1} `:” “)+(E&&b.className||””)).add(this.group)).isArea=!0),this.chart.styledMode||(L.fill=O||b.color||this.color,L[“fill-opacity”]=O?1:x.fillOpacity??.75,D.css({pointerEvents:this.stickyTracking?”none”:”auto”})),D[j](L),D.startX=e.xMap,D.shiftUnit=x.step?2:1})}getGraphPath(e){let x,b,L,O=E.prototype.getGraphPath,D=this.options,R=D.stacking,z=this.yAxis,F=[],H=[],U=this.index,Y=z.stacking.stacks[this.stackKey],V=D.threshold,q=Math.round(z.getThreshold(D.threshold)),K=j(D.connectNulls,”percent”===R),$=function(b,E,L){let O=e[b],D=R&&Y[O.x].points[U],j=O[L+”Null”]||0,K=O[L+”Cliff”]||0,$,_,Z=!0;K||j?($=(j?D[0]:D[1])+K,_=D[0]+K,Z=!!j):!R&&e[E]&&e[E].isNull&&($=_=V),void 0!==$&&(H.push({plotX:x,plotY:null===$?q:z.getThreshold($),isNull:Z,isCliff:!0}),F.push({plotX:x,plotY:null===_?q:z.getThreshold(_),doCurve:!1}))};e=e||this.points,R&&(e=this.getStackPoints(e));for(let E=0,O=e.length;Ee.visible);E.forEach(function(e,D){let q=0,K,$;if(z[e]&&!z[e].isNull)b.push(z[e]),[-1,1].forEach(function(b){let L=1===b?”rightNull”:”leftNull”,O=R[E[D+b]],j=0;if(O){let b=Y;for(;b>=0&&b=0&&xb&&O>z?(O=Math.max(b,z),j=2*z-O):OU&&j>z?(j=Math.max(U,z),O=2*z-j):j1){let L=this.xAxis.series.filter(e=>e.visible).map(e=>e.index),O=0,D=0;Z(this.xAxis.stacking?.stacks,e=>{if(“number”==typeof b.x){let x=e[b.x.toString()];if(x&&q(x.points[this.index])){let e=Object.keys(x.points).filter(e=>!e.match(“,”)&&x.points[e]&&x.points[e].length>1).map(parseFloat).filter(e=>-1!==L.indexOf(e)).sort((e,x)=>x-e);O=e.indexOf(this.index),D=e.length}}}),O=this.xAxis.reversed?D-1-O:O;let j=(D-1)*E.paddedWidth+x;e=(b.plotX||0)+j/2-x-O*E.paddedWidth}return e}translate(){let e=this,x=e.chart,b=e.options,E=e.dense=e.closestPointRange*e.xAxis.transA<2,O=e.borderWidth=_(b.borderWidth,+!E),D=e.xAxis,j=e.yAxis,R=b.threshold,z=_(b.minPointLength,5),H=e.getColumnMetrics(),Y=H.width,q=e.pointXOffset=H.offset,$=e.dataMin,Z=e.dataMax,J=e.translatedThreshold=j.getThreshold(R),tt=e.barW=Math.max(Y,1+2*O);b.pointPadding&&(tt=Math.ceil(tt)),L.prototype.translate.apply(e),e.points.forEach(function(E){let L=_(E.yBottom,J),O=999+Math.abs(L),V=E.plotX||0,te=F(E.plotY,-O,j.len+O),ti,ts=Math.min(te,L),to=Math.max(te,L)-ts,tr=Y,tn=V+q,ta=tt;z&&Math.abs(to)z?L-z:J-(ti?z:0)),U(E.options.pointWidth)&&(tn-=Math.round(((tr=ta=Math.ceil(E.options.pointWidth))-Y)/2)),b.centerInCategory&&!b.stacking&&(tn=e.adjustForMissingColumns(tn,tr,E,H)),E.barX=tn,E.pointWidth=tr,E.tooltipPos=x.inverted?[F(j.len+j.pos-x.plotLeft-te,j.pos-x.plotLeft,j.len+j.pos-x.plotLeft),D.len+D.pos-x.plotTop-tn-ta/2,to]:[D.left-x.plotLeft+tn+ta/2,F(te+j.pos-x.plotTop,j.pos-x.plotTop,j.len+j.pos-x.plotTop),to],E.shapeType=e.pointClass.prototype.shapeType||”roundedRect”,E.shapeArgs=e.crispCol(tn,E.isNull?J:ts,ta,E.isNull?0:to)}),V(this,”afterColumnTranslate”)}drawGraph(){this.group[this.dense?”addClass”:”removeClass”](“highcharts-dense-data”)}pointAttribs(e,x){let b=this.options,E=this.pointAttrToOptions||{},L=E.stroke||”borderColor”,O=E[“stroke-width”]||”borderWidth”,D,j,z,F=e&&e.color||this.color,H=e&&e[L]||b[L]||F,U=e&&e.options.dashStyle||b.dashStyle,Y=e&&e[O]||b[O]||this[O]||0,V=_(e&&e.opacity,b.opacity,1);e&&this.zones.length&&(j=e.getZone(),F=e.options.color||j&&(j.color||e.nonZonedColor)||this.color,j&&(H=j.borderColor||H,U=j.dashStyle||U,Y=j.borderWidth||Y)),x&&e&&(z=(D=$(b.states[x],e.options.states&&e.options.states[x]||{})).brightness,F=D.color||void 0!==z&&R(F).brighten(D.brightness).get()||F,H=D[L]||H,Y=D[O]||Y,U=D.dashStyle||U,V=_(D.opacity,V));let q={fill:F,stroke:H,”stroke-width”:Y,opacity:V};return U&&(q.dashstyle=U),q}drawPoints(e=this.points){let x,b=this,E=this.chart,L=b.options,O=E.renderer,D=L.animationLimit||250;e.forEach(function(e){let j=e.plotY,R=e.graphic,z=!!R,F=R&&E.pointCounte?.enabled)}function b(e,x,b,E,L){let{chart:O,enabledDataSorting:R}=this,z=this.isCartesian&&O.inverted,F=e.plotX,U=e.plotY,V=b.rotation||0,q=D(F)&&D(U)&&O.isInsidePlot(F,Math.round(U),{inverted:z,paneCoordinates:!0,series:this}),K=0===V&&”justify”===Y(b.overflow,R?”none”:”justify”),$=this.visible&&!1!==e.visible&&D(F)&&(e.series.forceDL||R&&!K||q||Y(b.inside,!!this.options.stacking)&&E&&O.isInsidePlot(F,z?E.x+1:E.y+E.height-1,{inverted:z,paneCoordinates:!0,series:this})),_=e.pos();if($&&_){var Z;let D=x.getBBox(),F=x.getBBox(void 0,0),U={right:1,center:.5}[b.align||0]||0,J={bottom:1,middle:.5}[b.verticalAlign||0]||0;if(E=j({x:_[0],y:Math.round(_[1]),width:0,height:0},E||{}),”plotEdges”===b.alignTo&&this.isCartesian&&(E[z?”x”:”y”]=0,E[z?”width”:”height”]=this.yAxis?.len||0),j(b,{width:D.width,height:D.height}),Z=E,R&&this.xAxis&&!K&&this.setDataLabelStartPos(e,x,L,q,Z),x.align(H(b,{width:F.width,height:F.height}),!1,E,!1),x.alignAttr.x+=U*(F.width-D.width),x.alignAttr.y+=J*(F.height-D.height),x[x.placed?”animate”:”attr”]({x:x.alignAttr.x+(D.width-F.width)/2,y:x.alignAttr.y+(D.height-F.height)/2,rotationOriginX:(x.width||0)/2,rotationOriginY:(x.height||0)/2}),K&&E.height>=0)this.justifyDataLabel(x,b,x.alignAttr,D,E,L);else if(Y(b.crop,!0)){let{x:e,y:b}=x.alignAttr;$=O.isInsidePlot(e,b,{paneCoordinates:!0,series:this})&&O.isInsidePlot(e+D.width-1,b+D.height-1,{paneCoordinates:!0,series:this})}b.shape&&!V&&x[L?”attr”:”animate”]({anchorX:_[0],anchorY:_[1]})}L&&R&&(x.placed=!1),$||R&&!K?(x.show(),x.placed=!0):(x.hide(),x.placed=!1)}function E(){return this.plotGroup(“dataLabelsGroup”,”data-labels”,this.hasRendered?”inherit”:”hidden”,this.options.dataLabels.zIndex||6)}function K(e){let x=this.hasRendered||0,b=this.initDataLabelsGroup().attr({opacity:+x});return!x&&b&&(this.visible&&b.show(),this.options.animation?b.animate({opacity:1},e):b.attr({opacity:1})),b}function $(e){let x;e=e||this.points;let b=this,E=b.chart,j=b.options,z=E.renderer,{backgroundColor:H,plotBackgroundColor:K}=E.options.chart,$=z.getContrast(F(K)&&K||F(H)&&H||”#000000″),_=J(b),{animation:tt,defer:te}=_[0],ti=te?L(E,tt,b):{defer:0,duration:0};R(this,”drawDataLabels”),b.hasDataLabels?.()&&(x=this.initDataLabels(ti),e.forEach(e=>{let L=e.dataLabels||[];q(Z(_,e.dlOptions||e.options?.dataLabels)).forEach((R,H)=>{let q=R.enabled&&(e.visible||e.dataLabelOnHidden)&&(!e.isNull||e.dataLabelOnNull)&&function(e,x){let b=x.filter;if(b){let x=b.operator,E=e[b.property],L=b.value;return”>”===x&&E>L||”<"===x&&E=”===x&&E>=L||”<="===x&&E<=L||"=="===x&&E==L||"==="===x&&E===L||"!="===x&&E!=L||"!=="===x&&E!==L}return!0}(e,R),{backgroundColor:K,borderColor:_,distance:Z,style:J={}}=R,tt,te,ti,ts,to={},tr=L[H],tn=!tr,ta;if(q&&(te=Y(R[e.formatPrefix+"Format"],R.format),tt=e.getLabelConfig(),ti=D(te)?O(te,tt,E):(R[e.formatPrefix+"Formatter"]||R.formatter).call(tt,R),ts=R.rotation,!E.styledMode&&(J.color=Y(R.color,J.color,F(b.color)?b.color:void 0,"#000000"),"contrast"===J.color?("none"!==K&&(ta=K),e.contrastColor=z.getContrast("auto"!==ta&&ta||e.color||b.color),J.color=ta||!D(Z)&&R.inside||0>V(Z||0)||j.stacking?e.contrastColor:$):delete e.contrastColor,j.cursor&&(J.cursor=j.cursor)),to={r:R.borderRadius||0,rotation:ts,padding:R.padding,zIndex:1},E.styledMode||(to.fill=”auto”===K?e.color:K,to.stroke=”auto”===_?e.color:_,to[“stroke-width”]=R.borderWidth),U(to,(e,x)=>{void 0===e&&delete to[x]})),!tr||q&&D(ti)&&!!tr.div==!!R.useHTML&&(tr.rotation&&R.rotation||tr.rotation===R.rotation)||(tr=void 0,tn=!0),q&&D(ti)&&(tr?to.text=ti:(tr=z.label(ti,0,0,R.shape,void 0,void 0,R.useHTML,void 0,”data-label”)).addClass(” highcharts-data-label-color-“+e.colorIndex+” “+(R.className||””)+(R.useHTML?” highcharts-tracker”:””)),tr)){tr.options=R,tr.attr(to),E.styledMode||tr.css(J).shadow(R.shadow);let O=R[e.formatPrefix+”TextPath”]||R.textPath;O&&!R.useHTML&&(tr.setTextPath(e.getDataLabelPath?.(tr)||e.graphic,O),e.dataLabelPath&&!O.enabled&&(e.dataLabelPath=e.dataLabelPath.destroy())),tr.added||tr.add(x),b.alignDataLabel(e,tr,R,void 0,tn),tr.isActive=!0,L[H]&&L[H]!==tr&&L[H].destroy(),L[H]=tr}});let R=L.length;for(;R–;)L[R]&&L[R].isActive?L[R].isActive=!1:(L[R]?.destroy(),L.splice(R,1));e.dataLabel=L[0],e.dataLabels=L})),R(this,”afterDrawDataLabels”)}function _(e,x,b,E,L,O){let D=this.chart,j=x.align,R=x.verticalAlign,z=e.box?0:e.padding||0,F=D.inverted?this.yAxis:this.xAxis,H=F?F.left-D.plotLeft:0,U=D.inverted?this.xAxis:this.yAxis,Y=U?U.top-D.plotTop:0,{x:V=0,y:q=0}=x,K,$;return(K=(b.x||0)+z+H)<0&&("right"===j&&V>=0?(x.align=”left”,x.inside=!0):V-=K,$=!0),(K=(b.x||0)+E.width-z+H)>D.plotWidth&&(“left”===j&&V<=0?(x.align="right",x.inside=!0):V+=D.plotWidth-K,$=!0),(K=b.y+z+Y)<0&&("bottom"===R&&q>=0?(x.verticalAlign=”top”,x.inside=!0):q-=K,$=!0),(K=(b.y||0)+E.height-z+Y)>D.plotHeight&&(“top”===R&&q<=0?(x.verticalAlign="bottom",x.inside=!0):q+=D.plotHeight-K,$=!0),$&&(x.x=V,x.y=q,e.placed=!O,e.align(x,void 0,L)),$}function Z(e,x){let b=[],E;if(z(e)&&!z(x))b=e.map(function(e){return H(e,x)});else if(z(x)&&!z(e))b=x.map(function(x){return H(e,x)});else if(z(e)||z(x)){if(z(e)&&z(x))for(E=Math.max(e.length,x.length);E--;)b[E]=H(e[E],x[E])}else b=H(e,x);return b}function J(e){let x=e.chart.options.plotOptions;return q(Z(Z(x?.series?.dataLabels,x?.[e.type]?.dataLabels),e.options.dataLabels))}function tt(e,x,b,E,L){let O=this.chart,D=O.inverted,j=this.xAxis,R=j.reversed,z=((D?x.height:x.width)||0)/2,F=e.pointWidth,H=F?F/2:0;x.startXPos=D?L.x:R?-z-H:j.width-z+H,x.startYPos=D?R?this.yAxis.height-z+H:-z-H:L.y,E?"hidden"===x.visibility&&(x.show(),x.attr({opacity:0}).animate({opacity:1})):x.attr({opacity:1}).animate({opacity:0},void 0,x.hide),O.hasRendered&&(b&&x.attr({x:x.startXPos,y:x.startYPos}),x.placed=!0)}e.compose=function(e){let L=e.prototype;L.initDataLabels||(L.initDataLabels=K,L.initDataLabelsGroup=E,L.alignDataLabel=b,L.drawDataLabels=$,L.justifyDataLabel=_,L.setDataLabelStartPos=tt,L.hasDataLabels=x)}}(E||(E={})),E}),b(x,"Series/Column/ColumnDataLabel.js",[x["Core/Series/DataLabel.js"],x["Core/Globals.js"],x["Core/Series/SeriesRegistry.js"],x["Core/Utilities.js"]],function(e,x,b,E){var L;let{composed:O}=x,{series:D}=b,{merge:j,pick:R,pushUnique:z}=E;return function(x){function b(e,x,b,E,L){let O=this.chart.inverted,z=e.series,F=(z.xAxis?z.xAxis.len:this.chart.plotSizeX)||0,H=(z.yAxis?z.yAxis.len:this.chart.plotSizeY)||0,U=e.dlBox||e.shapeArgs,Y=R(e.below,e.plotY>R(this.translatedThreshold,H)),V=R(b.inside,!!this.options.stacking);if(U){if(E=j(U),”allow”!==b.overflow||!1!==b.crop){E.y<0&&(E.height+=E.y,E.y=0);let e=E.y+E.height-H;e>0&&e\u25CF {series.name}
    ‘,pointFormat:”x: {point.x}
    y: {point.y}
    “}}}),b(x,”Series/Scatter/ScatterSeries.js”,[x[“Series/Scatter/ScatterSeriesDefaults.js”],x[“Core/Series/SeriesRegistry.js”],x[“Core/Utilities.js”]],function(e,x,b){let{column:E,line:L}=x.seriesTypes,{addEvent:O,extend:D,merge:j}=b;let l=class l extends L{applyJitter(){let e=this,x=this.options.jitter,b=this.points.length;x&&this.points.forEach(function(E,L){[“x”,”y”].forEach(function(O,D){if(x[O]&&!E.isNull){let j=`plot${O.toUpperCase()}`,R=e[`${O}Axis`],z=x[O]*R.transA;if(R&&!R.logarithmic){let e,x=Math.max(0,(E[j]||0)-z),F=Math.min(R.len,(E[j]||0)+z);E[j]=x+(F-x)*((e=1e4*Math.sin(L+D*b))-Math.floor(e)),”x”===O&&(E.clientX=E.plotX)}}})})}drawGraph(){this.options.lineWidth?super.drawGraph():this.graph&&(this.graph=this.graph.destroy())}};return l.defaultOptions=j(L.defaultOptions,e),D(l.prototype,{drawTracker:E.prototype.drawTracker,sorted:!1,requireSorting:!1,noSharedTooltip:!0,trackerGroups:[“group”,”markerGroup”,”dataLabelsGroup”]}),O(l,”afterTranslate”,function(){this.applyJitter()}),x.registerSeriesType(“scatter”,l),l}),b(x,”Series/CenteredUtilities.js”,[x[“Core/Globals.js”],x[“Core/Series/Series.js”],x[“Core/Utilities.js”]],function(e,x,b){var E,L;let{deg2rad:O}=e,{fireEvent:D,isNumber:j,pick:R,relativeLength:z}=b;return(L=E||(E={})).getCenter=function(){let e=this.options,b=this.chart,E=2*(e.slicedOffset||0),L=b.plotWidth-2*E,O=b.plotHeight-2*E,F=e.center,H=Math.min(L,O),U=e.thickness,Y,V=e.size,q=e.innerSize||0,K,$;”string”==typeof V&&(V=parseFloat(V)),”string”==typeof q&&(q=parseFloat(q));let _=[R(F[0],”50%”),R(F[1],”50%”),R(V&&V<0?void 0:e.size,"100%"),R(q&&q<0?void 0:e.innerSize||0,"0%")];for(!b.angular||this instanceof x||(_[3]=0),K=0;K<4;++K)$=_[K],Y=K<2||2===K&&/%$/.test($),_[K]=z($,[L,O,H,_[2]][K])+(Y?E:0);return _[3]>_[2]&&(_[3]=_[2]),j(U)&&2*U<_[2]&&U>0&&(_[3]=_[2]-2*U),D(this,”afterGetCenter”,{positions:_}),_},L.getStartAndEndRadians=function(e,x){let b=j(e)?e:0,E=j(x)&&x>b&&x-b<360?x:b+360;return{start:O*(b+-90),end:O*(E+-90)}},E}),b(x,"Series/Pie/PiePoint.js",[x["Core/Animation/AnimationUtilities.js"],x["Core/Series/Point.js"],x["Core/Utilities.js"]],function(e,x,b){let{setAnimation:E}=e,{addEvent:L,defined:O,extend:D,isNumber:j,pick:R,relativeLength:z}=b;let d=class d extends x{getConnectorPath(e){let x=e.dataLabelPosition,b=e.options||{},E=b.connectorShape,L=this.connectorShapes[E]||E;return x&&L.call(this,{...x.computed,alignment:x.alignment},x.connectorPosition,b)||[]}getTranslate(){return this.sliced&&this.slicedTranslation||{translateX:0,translateY:0}}haloPath(e){let x=this.shapeArgs;return this.sliced||!this.visible?[]:this.series.chart.renderer.symbols.arc(x.x,x.y,x.r+e,x.r+e,{innerR:x.r-1,start:x.start,end:x.end,borderRadius:x.borderRadius})}constructor(e,x,b){super(e,x,b),this.half=0,this.name??(this.name="Slice");let E=e=>{this.slice(“select”===e.type)};L(this,”select”,E),L(this,”unselect”,E)}isValid(){return j(this.y)&&this.y>=0}setVisible(e,x=!0){e!==this.visible&&this.update({visible:e??!this.visible},x,void 0,!1)}slice(e,x,b){let L=this.series;E(b,L.chart),x=R(x,!0),this.sliced=this.options.sliced=e=O(e)?e:!this.sliced,L.options.data[L.data.indexOf(this)]=this.options,this.graphic&&this.graphic.animate(this.getTranslate())}};return D(d.prototype,{connectorShapes:{fixedOffset:function(e,x,b){let E=x.breakAt,L=x.touchingSliceAt,O=b.softConnector?[“C”,e.x+(“left”===e.alignment?-5:5),e.y,2*E.x-L.x,2*E.y-L.y,E.x,E.y]:[“L”,E.x,E.y];return[[“M”,e.x,e.y],O,[“L”,L.x,L.y]]},straight:function(e,x){let b=x.touchingSliceAt;return[[“M”,e.x,e.y],[“L”,b.x,b.y]]},crookedLine:function(e,x,b){let{breakAt:E,touchingSliceAt:L}=x,{series:O}=this,[D,j,R]=O.center,F=R/2,{plotLeft:H,plotWidth:U}=O.chart,Y=”left”===e.alignment,{x:V,y:q}=e,K=E.x;if(b.crookDistance){let e=z(b.crookDistance,1);K=Y?D+F+(U+H-D-F)*(1-e):H+(D-F)*e}else K=D+(j-q)*Math.tan((this.angle||0)-Math.PI/2);let $=[[“M”,V,q]];return(Y?K<=V&&K>=E.x:K>=V&&K<=E.x)&&$.push(["L",K,q]),$.push(["L",E.x,E.y],["L",L.x,L.y]),$}}}),d}),b(x,"Series/Pie/PieSeriesDefaults.js",[],function(){return{borderRadius:3,center:[null,null],clip:!1,colorByPoint:!0,dataLabels:{connectorPadding:5,connectorShape:"crookedLine",crookDistance:void 0,distance:30,enabled:!0,formatter:function(){return this.point.isNull?void 0:this.point.name},softConnector:!0,x:0},fillColor:void 0,ignoreHiddenPoint:!0,inactiveOtherPoints:!0,legendType:"point",marker:null,size:null,showInLegend:!1,slicedOffset:10,stickyTracking:!1,tooltip:{followPointer:!0},borderColor:"#ffffff",borderWidth:1,lineWidth:void 0,states:{hover:{brightness:.1}}}}),b(x,"Series/Pie/PieSeries.js",[x["Series/CenteredUtilities.js"],x["Series/Column/ColumnSeries.js"],x["Core/Globals.js"],x["Series/Pie/PiePoint.js"],x["Series/Pie/PieSeriesDefaults.js"],x["Core/Series/Series.js"],x["Core/Series/SeriesRegistry.js"],x["Core/Renderer/SVG/Symbols.js"],x["Core/Utilities.js"]],function(e,x,b,E,L,O,D,j,R){let{getStartAndEndRadians:z}=e,{noop:F}=b,{clamp:H,extend:U,fireEvent:Y,merge:V,pick:q}=R;let m=class m extends O{animate(e){let x=this,b=x.points,E=x.startAngleRad;e||b.forEach(function(e){let b=e.graphic,L=e.shapeArgs;b&&L&&(b.attr({r:q(e.startR,x.center&&x.center[3]/2),start:E,end:E}),b.animate({r:L.r,start:L.start,end:L.end},x.options.animation))})}drawEmpty(){let e,x,b=this.startAngleRad,E=this.endAngleRad,L=this.options;0===this.total&&this.center?(e=this.center[0],x=this.center[1],this.graph||(this.graph=this.chart.renderer.arc(e,x,this.center[1]/2,0,b,E).addClass("highcharts-empty-series").add(this.group)),this.graph.attr({d:j.arc(e,x,this.center[2]/2,0,{start:b,end:E,innerR:this.center[3]/2})}),this.chart.styledMode||this.graph.attr({"stroke-width":L.borderWidth,fill:L.fillColor||"none",stroke:L.color||"#cccccc"})):this.graph&&(this.graph=this.graph.destroy())}drawPoints(){let e=this.chart.renderer;this.points.forEach(function(x){x.graphic&&x.hasNewShapeType()&&(x.graphic=x.graphic.destroy()),x.graphic||(x.graphic=e[x.shapeType](x.shapeArgs).add(x.series.group),x.delayedRendering=!0)})}generatePoints(){super.generatePoints(),this.updateTotals()}getX(e,x,b,E){let L=this.center,O=this.radii?this.radii[b.index]||0:L[2]/2,D=E.dataLabelPosition,j=D?.distance||0,R=Math.asin(H((e-L[1])/(O+j),-1,1));return L[0]+Math.cos(R)*(O+j)*(x?-1:1)+(j>0?(x?-1:1)*(E.padding||0):0)}hasData(){return!!this.processedXData.length}redrawPoints(){let e,x,b,E,L=this,O=L.chart;this.drawEmpty(),L.group&&!O.styledMode&&L.group.shadow(L.options.shadow),L.points.forEach(function(D){let j={};x=D.graphic,!D.isNull&&x?(E=D.shapeArgs,e=D.getTranslate(),O.styledMode||(b=L.pointAttribs(D,D.selected&&”select”)),D.delayedRendering?(x.setRadialReference(L.center).attr(E).attr(e),O.styledMode||x.attr(b).attr({“stroke-linejoin”:”round”}),D.delayedRendering=!1):(x.setRadialReference(L.center),O.styledMode||V(!0,j,b),V(!0,j,E,e),x.animate(j)),x.attr({visibility:D.visible?”inherit”:”hidden”}),x.addClass(D.getClassName(),!0)):x&&(D.graphic=x.destroy())})}sortByAngle(e,x){e.sort(function(e,b){return void 0!==e.angle&&(b.angle-e.angle)*x})}translate(e){Y(this,”translate”),this.generatePoints();let x=this.options,b=x.slicedOffset,E=z(x.startAngle,x.endAngle),L=this.startAngleRad=E.start,O=(this.endAngleRad=E.end)-L,D=this.points,j=x.ignoreHiddenPoint,R=D.length,F,H,U,V,q,K,$,_=0;for(e||(this.center=e=this.getCenter()),K=0;K1.5*Math.PI?U-=2*Math.PI:U<-Math.PI/2&&(U+=2*Math.PI),$.slicedTranslation={translateX:Math.round(Math.cos(U)*b),translateY:Math.round(Math.sin(U)*b)},V=Math.cos(U)*e[2]/2,q=Math.sin(U)*e[2]/2,$.tooltipPos=[e[0]+.7*V,e[1]+.7*q],$.half=+(U<-Math.PI/2||U>Math.PI/2),$.angle=U}Y(this,”afterTranslate”)}updateTotals(){let e=this.points,x=e.length,b=this.options.ignoreHiddenPoint,E,L,O=0;for(E=0;E0&&(L.visible||!b)?L.y/O*100:0,L.total=O}};return m.defaultOptions=V(O.defaultOptions,L),U(m.prototype,{axisTypes:[],directTouch:!0,drawGraph:void 0,drawTracker:x.prototype.drawTracker,getCenter:e.getCenter,getSymbol:F,invertible:!1,isCartesian:!1,noSharedTooltip:!0,pointAttribs:x.prototype.pointAttribs,pointClass:E,requireSorting:!1,searchPoint:F,trackerGroups:[“group”,”dataLabelsGroup”]}),D.registerSeriesType(“pie”,m),m}),b(x,”Series/Pie/PieDataLabel.js”,[x[“Core/Series/DataLabel.js”],x[“Core/Globals.js”],x[“Core/Renderer/RendererUtilities.js”],x[“Core/Series/SeriesRegistry.js”],x[“Core/Utilities.js”]],function(e,x,b,E,L){var O;let{composed:D,noop:j}=x,{distribute:R}=b,{series:z}=E,{arrayMax:F,clamp:H,defined:U,pick:Y,pushUnique:V,relativeLength:q}=L;return function(x){let b={radialDistributionY:function(e,x){return(x.dataLabelPosition?.top||0)+e.distributeBox.pos},radialDistributionX:function(e,x,b,E,L){let O=L.dataLabelPosition;return e.getX(b<(O?.top||0)+2||b>(O?.bottom||0)-2?E:b,x.half,x,L)},justify:function(e,x,b,E){return E[0]+(e.half?-1:1)*(b+(x.dataLabelPosition?.distance||0))},alignToPlotEdges:function(e,x,b,E){let L=e.getBBox().width;return x?L+E:b-L-E},alignToConnectors:function(e,x,b,E){let L=0,O;return e.forEach(function(e){(O=e.dataLabel.getBBox().width)>L&&(L=O)}),x?L+E:b-L-E}};function E(e,x){let{center:b,options:E}=this,L=b[2]/2,O=e.angle||0,D=Math.cos(O),j=Math.sin(O),R=b[0]+D*L,z=b[1]+j*L,F=Math.min((E.slicedOffset||0)+(E.borderWidth||0),x/5);return{natural:{x:R+D*x,y:z+j*x},computed:{},alignment:x<0?"center":e.half?"right":"left",connectorPosition:{breakAt:{x:R+D*F,y:z+j*F},touchingSliceAt:{x:R,y:z}},distance:x}}function L(){let e=this,x=e.points,b=e.chart,E=b.plotWidth,L=b.plotHeight,O=b.plotLeft,D=Math.round(b.chartWidth/3),j=e.center,H=j[2]/2,V=j[1],K=[[],[]],$=[0,0,0,0],_=e.dataLabelPositioners,Z,J,tt,te=0;e.visible&&e.hasDataLabels?.()&&(x.forEach(e=>{(e.dataLabels||[]).forEach(e=>{e.shortened&&(e.attr({width:”auto”}).css({width:”auto”,textOverflow:”clip”}),e.shortened=!1)})}),z.prototype.drawDataLabels.apply(e),x.forEach(e=>{(e.dataLabels||[]).forEach((x,b)=>{let E=j[2]/2,L=x.options,O=q(L?.distance||0,E);0===b&&K[e.half].push(e),!U(L?.style?.width)&&x.getBBox().width>D&&(x.css({width:Math.round(.7*D)+”px”}),x.shortened=!0),x.dataLabelPosition=this.getDataLabelPosition(e,O),te=Math.max(te,O)})}),K.forEach((x,D)=>{let z=x.length,F=[],q,K,Z=0,ti;z&&(e.sortByAngle(x,D-.5),te>0&&(q=Math.max(0,V-H-te),K=Math.min(V+H+te,b.plotHeight),x.forEach(e=>{(e.dataLabels||[]).forEach(x=>{let E=x.dataLabelPosition;E&&E.distance>0&&(E.top=Math.max(0,V-H-E.distance),E.bottom=Math.min(V+H+E.distance,b.plotHeight),Z=x.getBBox().height||21,e.distributeBox={target:(x.dataLabelPosition?.natural.y||0)-E.top+Z/2,size:Z,rank:e.y},F.push(e.distributeBox))})}),R(F,ti=K+Z-q,ti/5)),x.forEach(b=>{(b.dataLabels||[]).forEach(R=>{let z=R.options||{},V=b.distributeBox,q=R.dataLabelPosition,K=q?.natural.y||0,Z=z.connectorPadding||0,te=0,ti=K,ts=”inherit”;if(q){if(F&&U(V)&&q.distance>0&&(void 0===V.pos?ts=”hidden”:(tt=V.size,ti=_.radialDistributionY(b,R))),z.justify)te=_.justify(b,R,H,j);else switch(z.alignTo){case”connectors”:te=_.alignToConnectors(x,D,E,O);break;case”plotEdges”:te=_.alignToPlotEdges(R,D,E,O);break;default:te=_.radialDistributionX(e,b,ti,K,R)}if(q.attribs={visibility:ts,align:q.alignment},q.posAttribs={x:te+(z.x||0)+(({left:Z,right:-Z})[q.alignment]||0),y:ti+(z.y||0)-R.getBBox().height/2},q.computed.x=te,q.computed.y=ti,Y(z.crop,!0)){let e;te-(J=R.getBBox().width)E-Z&&0===D&&(e=Math.round(te+J-E+Z),$[1]=Math.max(e,$[1])),ti-tt/2<0?$[0]=Math.max(Math.round(-ti+tt/2),$[0]):ti+tt/2>L&&($[2]=Math.max(Math.round(ti+tt/2-L),$[2])),q.sideOverflow=e}}})}))}),(0===F($)||this.verifyDataLabelOverflow($))&&(this.placeDataLabels(),this.points.forEach(x=>{(x.dataLabels||[]).forEach(E=>{let{connectorColor:L,connectorWidth:O=1}=E.options||{},D=E.dataLabelPosition;if(O){let j;Z=E.connector,D&&D.distance>0?(j=!Z,Z||(E.connector=Z=b.renderer.path().addClass(“highcharts-data-label-connector highcharts-color-“+x.colorIndex+(x.className?” “+x.className:””)).add(e.dataLabelsGroup)),b.styledMode||Z.attr({“stroke-width”:O,stroke:L||x.color||”#666666″}),Z[j?”attr”:”animate”]({d:x.getConnectorPath(E)}),Z.attr({visibility:D.attribs?.visibility})):Z&&(E.connector=Z.destroy())}})})))}function O(){this.points.forEach(e=>{(e.dataLabels||[]).forEach(e=>{let x=e.dataLabelPosition;x?(x.sideOverflow&&(e.css({width:Math.max(e.getBBox().width-x.sideOverflow,0)+”px”,textOverflow:(e.options?.style||{}).textOverflow||”ellipsis”}),e.shortened=!0),e.attr(x.attribs),e[e.moved?”animate”:”attr”](x.posAttribs),e.moved=!0):e&&e.attr({y:-9999})}),delete e.distributeBox},this)}function K(e){let x=this.center,b=this.options,E=b.center,L=b.minSize||80,O=L,D=null!==b.size;return!D&&(null!==E[0]?O=Math.max(x[2]-Math.max(e[1],e[3]),L):(O=Math.max(x[2]-e[1]-e[3],L),x[0]+=(e[3]-e[1])/2),null!==E[1]?O=H(O,L,x[2]-Math.max(e[0],e[2])):(O=H(O,L,x[2]-e[0]-e[2]),x[1]+=(e[0]-e[2])/2),O!(x.x>=e.x+e.width||x.x+x.width<=e.x||x.y>=e.y+e.height||x.y+x.height<=e.y),L,O,j,R,z,F=!1;for(let b=0;b(x.labelrank||0)-(e.labelrank||0));for(let b=0;b{E(e,e=>{e.label&&x.push(e.label)})});for(let b of e.series||[])if(b.visible&&b.hasDataLabels?.()){let E=b=>{for(let E of b)E.visible&&(E.dataLabels||[]).forEach(b=>{let O=b.options||{};b.labelrank=L(O.labelrank,E.labelrank,E.shapeArgs?.height),O.allowOverlap??Number(O.distance)>0?(b.oldOpacity=b.opacity,b.newOpacity=1,D(b,e)):x.push(b)})};E(b.nodes||[]),E(b.points)}this.hideOverlappingLabels(x)}return{compose:function(e){let b=e.prototype;b.hideOverlappingLabels||(b.hideOverlappingLabels=O,x(e,”render”,j))}}}),b(x,”Extensions/BorderRadius.js”,[x[“Core/Defaults.js”],x[“Core/Globals.js”],x[“Core/Utilities.js”]],function(e,x,b){let{defaultOptions:E}=e,{noop:L}=x,{addEvent:O,extend:D,isObject:j,merge:R,relativeLength:z}=b,F={radius:0,scope:”stack”,where:void 0},H=L,U=L;function Y(e,x,b,E,L={}){let O=H(e,x,b,E,L),{innerR:D=0,r:j=b,start:R=0,end:F=0}=L;if(L.open||!L.borderRadius)return O;let U=F-R,V=Math.sin(U/2),q=Math.max(Math.min(z(L.borderRadius||0,j-D),(j-D)/2,j*V/(1+V)),0),K=Math.min(q,U/Math.PI*2*D),$=O.length-1;for(;$–;)!function(e,x,b){let E,L,O,D=e[x],j=e[x+1];if(“Z”===j[0]&&(j=e[0]),(“M”===D[0]||”L”===D[0])&&”A”===j[0]?(E=D,L=j,O=!0):”A”===D[0]&&(“M”===j[0]||”L”===j[0])&&(E=j,L=D),E&&L&&L.params){let D=L[1],j=L[5],R=L.params,{start:z,end:F,cx:H,cy:U}=R,Y=j?D-b:D+b,V=Y?Math.asin(b/Y):0,q=j?V:-V,K=Math.cos(V)*Y;O?(R.start=z+q,E[1]=H+K*Math.cos(z),E[2]=U+K*Math.sin(z),e.splice(x+1,0,[“A”,b,b,0,0,1,H+D*Math.cos(R.start),U+D*Math.sin(R.start)])):(R.end=F-q,L[6]=H+D*Math.cos(R.end),L[7]=U+D*Math.sin(R.end),e.splice(x+1,0,[“A”,b,b,0,0,1,H+K*Math.cos(F),U+K*Math.sin(F)])),L[4]=Math.abs(R.end-R.start)1?K:q);return O}function V(){if(this.options.borderRadius&&!(this.chart.is3d&&this.chart.is3d())){let{options:e,yAxis:x}=this,b=”percent”===e.stacking,L=E.plotOptions?.[this.type]?.borderRadius,O=q(e.borderRadius,j(L)?L:{}),R=x.options.reversed;for(let E of this.points){let{shapeArgs:L}=E;if(“roundedRect”===E.shapeType&&L){let{width:j=0,height:F=0,y:H=0}=L,U=H,Y=F;if(“stack”===O.scope&&E.stackTotal){let L=x.translate(b?100:E.stackTotal,!1,!0,!1,!0),O=x.translate(e.threshold||0,!1,!0,!1,!0),D=this.crispCol(0,Math.min(L,O),0,Math.abs(L-O));U=D.y,Y=D.height}let V=(E.negative?-1:1)*(R?-1:1)==-1,q=O.where;!q&&this.is(“waterfall”)&&Math.abs((E.yBottom||0)-(this.translatedThreshold||0))>this.borderWidth&&(q=”all”),q||(q=”end”);let K=Math.min(z(O.radius,j),j/2,”all”===q?F/2:1/0)||0;”end”===q&&(V&&(U-=K),Y+=K),D(L,{brBoxHeight:Y,brBoxY:U,r:K})}}}}function q(e,x){return j(e)||(e={radius:e||0}),R(F,x,e)}function K(){let e=q(this.options.borderRadius);for(let x of this.points){let b=x.shapeArgs;b&&(b.borderRadius=z(e.radius,(b.r||0)-(b.innerR||0)))}}function $(e,x,b,E,L={}){let O=U(e,x,b,E,L),{r:D=0,brBoxHeight:j=E,brBoxY:R=x}=L,z=x-R,F=R+j-(x+E),H=z-D>-.1?0:D,Y=F-D>-.1?0:D,V=Math.max(H&&z,0),q=Math.max(Y&&F,0),K=[e+H,x],_=[e+b-H,x],Z=[e+b,x+H],J=[e+b,x+E-Y],tt=[e+b-Y,x+E],te=[e+Y,x+E],ti=[e,x+E-Y],ts=[e,x+H],to=(e,x)=>Math.sqrt(Math.pow(e,2)-Math.pow(x,2));if(V){let e=to(H,H-V);K[0]-=e,_[0]+=e,Z[1]=ts[1]=x+H-V}if(E=D(b.minWidth,0)&&this.chartHeight>=D(b.minHeight,0)}).call(this)&&x.push(e._id)}function R(e,x){let E=this.options.responsive,D=this.currentResponsive,R=[],z;!x&&E&&E.rules&&E.rules.forEach(e=>{void 0===e._id&&(e._id=j()),this.matchResponsiveRule(e,R)},this);let F=O(…R.map(e=>L((E||{}).rules||[],x=>x._id===e)).map(e=>e&&e.chartOptions));F.isResponsiveOptions=!0,R=R.toString()||void 0;let H=D&&D.ruleIds;R!==H&&(D&&this.update(D.undoOptions,e,!0),R?((z=b(F,this.options,!0,this.collectionsWithUpdate)).isResponsiveOptions=!0,this.currentResponsive={ruleIds:R,mergedOptions:F,undoOptions:z},this.update(F,e,!0)):this.currentResponsive=void 0)}e.compose=function(e){let b=e.prototype;return b.matchResponsiveRule||E(b,{matchResponsiveRule:x,setResponsive:R}),e}}(x||(x={})),x}),b(x,”masters/highcharts.src.js”,[x[“Core/Globals.js”],x[“Core/Utilities.js”],x[“Core/Defaults.js”],x[“Core/Animation/Fx.js”],x[“Core/Animation/AnimationUtilities.js”],x[“Core/Renderer/HTML/AST.js”],x[“Core/Templating.js”],x[“Core/Renderer/RendererRegistry.js”],x[“Core/Renderer/RendererUtilities.js”],x[“Core/Renderer/SVG/SVGElement.js”],x[“Core/Renderer/SVG/SVGRenderer.js”],x[“Core/Renderer/HTML/HTMLElement.js”],x[“Core/Axis/Axis.js”],x[“Core/Axis/DateTimeAxis.js”],x[“Core/Axis/LogarithmicAxis.js”],x[“Core/Axis/PlotLineOrBand/PlotLineOrBand.js”],x[“Core/Axis/Tick.js”],x[“Core/Tooltip.js”],x[“Core/Series/Point.js”],x[“Core/Pointer.js”],x[“Core/Legend/Legend.js”],x[“Core/Legend/LegendSymbol.js”],x[“Core/Chart/Chart.js”],x[“Extensions/ScrollablePlotArea.js”],x[“Core/Axis/Stacking/StackingAxis.js”],x[“Core/Axis/Stacking/StackItem.js”],x[“Core/Series/Series.js”],x[“Core/Series/SeriesRegistry.js”],x[“Series/Column/ColumnDataLabel.js”],x[“Series/Pie/PieDataLabel.js”],x[“Core/Series/DataLabel.js”],x[“Extensions/OverlappingDataLabels.js”],x[“Extensions/BorderRadius.js”],x[“Core/Responsive.js”],x[“Core/Color/Color.js”],x[“Core/Time.js”]],function(e,x,b,E,L,O,D,j,R,z,F,H,U,Y,V,q,K,$,_,Z,J,tt,te,ti,ts,to,tr,tn,ta,tl,th,td,tc,tp,tu,tg){return e.AST=O,e.Axis=U,e.Chart=te,e.Color=tu,e.DataLabel=th,e.Fx=E,e.HTMLElement=H,e.Legend=J,e.LegendSymbol=tt,e.OverlappingDataLabels=e.OverlappingDataLabels||td,e.PlotLineOrBand=q,e.Point=_,e.Pointer=Z,e.RendererRegistry=j,e.Series=tr,e.SeriesRegistry=tn,e.StackItem=to,e.SVGElement=z,e.SVGRenderer=F,e.Templating=D,e.Tick=K,e.Time=tg,e.Tooltip=$,e.animate=L.animate,e.animObject=L.animObject,e.chart=te.chart,e.color=tu.parse,e.dateFormat=D.dateFormat,e.defaultOptions=b.defaultOptions,e.distribute=R.distribute,e.format=D.format,e.getDeferredAnimation=L.getDeferredAnimation,e.getOptions=b.getOptions,e.numberFormat=D.numberFormat,e.seriesType=tn.seriesType,e.setAnimation=L.setAnimation,e.setOptions=b.setOptions,e.stop=L.stop,e.time=b.defaultTime,e.timers=E.timers,tc.compose(e.Series,e.SVGElement,e.SVGRenderer),ta.compose(e.Series.types.column),th.compose(e.Series),Y.compose(e.Axis),H.compose(e.SVGRenderer),J.compose(e.Chart),V.compose(e.Axis),td.compose(e.Chart),tl.compose(e.Series.types.pie),q.compose(e.Axis),Z.compose(e.Chart),tp.compose(e.Chart),ti.compose(e.Axis,e.Chart,e.Series),ts.compose(e.Axis,e.Chart,e.Series),$.compose(e.Pointer),x.extend(e,x),e}),b(x,”Series/DataModifyComposition.js”,[x[“Core/Axis/Axis.js”],x[“Core/Series/Point.js”],x[“Core/Series/Series.js”],x[“Core/Utilities.js”]],function(e,x,b,E){var L;let{tooltipFormatter:O}=x.prototype,{addEvent:D,arrayMax:j,arrayMin:R,correctFloat:z,defined:F,isArray:H,isNumber:U,isString:Y,pick:V}=E;return function(e){function x(e,x,b){!this.isXAxis&&(this.series.forEach(function(b){“compare”===e&&”boolean”!=typeof x?b.setCompare(x,!1):”cumulative”!==e||Y(x)||b.setCumulative(x,!1)}),V(b,!0)&&this.chart.redraw())}function b(e){let x=this,{numberFormatter:b}=x.series.chart,E=function(E){e=e.replace(“{point.”+E+”}”,(x[E]>0&&”change”===E?”+”:””)+b(x[E],V(x.series.tooltipOptions.changeDecimals,2)))};return F(x.change)&&E(“change”),F(x.cumulativeSum)&&E(“cumulativeSum”),O.apply(this,[e])}function E(){let e,x=this.options.compare;(“percent”===x||”value”===x||this.options.cumulative)&&(e=new v(this),”percent”===x||”value”===x?e.initCompare(x):e.initCumulative()),this.dataModify=e}function L(e){let x=e.dataExtremes,b=x.activeYData;if(this.dataModify&&x){let e;this.options.compare?e=[this.dataModify.modifyValue(x.dataMin),this.dataModify.modifyValue(x.dataMax)]:this.options.cumulative&&H(b)&&b.length>=2&&(e=v.getCumulativeExtremes(b)),e&&(x.dataMin=R(e),x.dataMax=j(e))}}function q(e,x){this.options.compare=this.userOptions.compare=e,this.update({},V(x,!0)),this.dataModify&&(“value”===e||”percent”===e)?this.dataModify.initCompare(e):this.points.forEach(e=>{delete e.change})}function K(){if(this.xAxis&&this.processedYData&&this.dataModify){let e=this.processedXData,x=this.processedYData,b=x.length,E=+(!0!==this.options.compareStart),L=-1,O;for(this.pointArrayMap&&(L=this.pointArrayMap.indexOf(this.options.pointValKey||this.pointValKey||”y”)),O=0;O-1?x[O][L]:x[O];if(U(b)&&0!==b&&e[O+E]>=(this.xAxis.min||0)){this.dataModify.compareValue=b;break}}}}function $(e,x){this.setModifier(“compare”,e,x)}function _(e,x){e=V(e,!1),this.options.cumulative=this.userOptions.cumulative=e,this.update({},V(x,!0)),this.dataModify?this.dataModify.initCumulative():this.points.forEach(e=>{delete e.cumulativeSum})}function Z(e,x){this.setModifier(“cumulative”,e,x)}e.compose=function(e,O,j){let R=O.prototype,z=j.prototype,F=e.prototype;return F.setCompare||(F.setCompare=q,F.setCumulative=_,D(e,”afterInit”,E),D(e,”afterGetExtremes”,L),D(e,”afterProcessData”,K)),R.setCompare||(R.setCompare=$,R.setModifier=x,R.setCumulative=Z,z.tooltipFormatter=b),e};let v=class v{constructor(e){this.series=e}modifyValue(){return 0}static getCumulativeExtremes(e){let x=1/0,b=-1/0;return e.reduce((e,E)=>{let L=e+E;return x=Math.min(x,L,e),b=Math.max(b,L,e),L}),[x,b]}initCompare(e){this.modifyValue=function(x,b){null===x&&(x=0);let E=this.compareValue;if(void 0!==x&&void 0!==E){if(“value”===e?x-=E:x=x/E*100-100*(100!==this.series.options.compareBase),void 0!==b){let e=this.series.points[b];e&&(e.change=x)}return x}return 0}}initCumulative(){this.modifyValue=function(e,x){if(null===e&&(e=0),void 0!==e&&void 0!==x){let b=x>0?this.series.points[x-1]:null;b&&b.cumulativeSum&&(e=z(b.cumulativeSum+e));let E=this.series.points[x],L=E.series.options.cumulativeStart,O=E.x<=this.series.xAxis.max&&E.x>=this.series.xAxis.min;return E&&(!L||O?E.cumulativeSum=e:E.cumulativeSum=void 0),e}return 0}}};e.Additions=v}(L||(L={})),L}),b(x,”Stock/Navigator/ChartNavigatorComposition.js”,[x[“Core/Globals.js”],x[“Core/Utilities.js”]],function(e,x){let b,{isTouchDevice:E}=e,{addEvent:L,merge:O,pick:D}=x,j=[];function R(){this.navigator&&this.navigator.setBaseSeries(null,!1)}function z(){let e,x,b,E=this.legend,L=this.navigator;if(L){e=E&&E.options,x=L.xAxis,b=L.yAxis;let{scrollbarHeight:O,scrollButtonSize:j}=L;this.inverted?(L.left=L.opposite?this.chartWidth-O-L.height:this.spacing[3]+O,L.top=this.plotTop+j):(L.left=D(x.left,this.plotLeft+j),L.top=L.navigatorOptions.top||this.chartHeight-L.height-O-(this.scrollbar?.options.margin||0)-this.spacing[2]-(this.rangeSelector&&this.extraBottomMargin?this.rangeSelector.getHeight():0)-(e&&”bottom”===e.verticalAlign&&”proximate”!==e.layout&&e.enabled&&!e.floating?E.legendHeight+D(e.margin,10):0)-(this.titleOffset?this.titleOffset[2]:0)),x&&b&&(this.inverted?x.options.left=b.options.left=L.left:x.options.top=b.options.top=L.top,x.setAxisSize(),b.setAxisSize())}}function F(e){!this.navigator&&!this.scroller&&(this.options.navigator.enabled||this.options.scrollbar.enabled)&&(this.scroller=this.navigator=new b(this),D(e.redraw,!0)&&this.redraw(e.animation))}function H(){let e=this.options;(e.navigator.enabled||e.scrollbar.enabled)&&(this.scroller=this.navigator=new b(this))}function U(){let e=this.options,x=e.navigator,b=e.rangeSelector;if((x&&x.enabled||b&&b.enabled)&&(!E&&”x”===this.zooming.type||E&&”x”===this.zooming.pinchType))return!1}function Y(e){let x=e.navigator;if(x&&e.xAxis[0]){let b=e.xAxis[0].getExtremes();x.render(b.min,b.max)}}function V(e){let x=e.options.navigator||{},b=e.options.scrollbar||{};!this.navigator&&!this.scroller&&(x.enabled||b.enabled)&&(O(!0,this.options.navigator,x),O(!0,this.options.scrollbar,b),delete e.options.navigator,delete e.options.scrollbar)}return{compose:function(e,E){if(x.pushUnique(j,e)){let x=e.prototype;b=E,x.callbacks.push(Y),L(e,”afterAddSeries”,R),L(e,”afterSetChartSize”,z),L(e,”afterUpdate”,F),L(e,”beforeRender”,H),L(e,”beforeShowResetZoom”,U),L(e,”update”,V)}}}}),b(x,”Core/Axis/NavigatorAxisComposition.js”,[x[“Core/Globals.js”],x[“Core/Utilities.js”]],function(e,x){let{isTouchDevice:b}=e,{addEvent:E,correctFloat:L,defined:O,isNumber:D,pick:j}=x;function R(){this.navigatorAxis||(this.navigatorAxis=new d(this))}function z(e){let x,E=this.chart,L=E.options,D=L.navigator,j=this.navigatorAxis,R=E.zooming.pinchType,z=L.rangeSelector,F=E.zooming.type;if(this.isXAxis&&(D?.enabled||z?.enabled)){if(“y”===F&&”zoom”===e.trigger)x=!1;else if((“zoom”===e.trigger&&”xy”===F||b&&”xy”===R)&&this.options.range){let x=j.previousZoom;O(e.min)?j.previousZoom=[this.min,this.max]:x&&(e.min=x[0],e.max=x[1],j.previousZoom=void 0)}}void 0!==x&&e.preventDefault()}let d=class d{static compose(e){e.keepProps.includes(“navigatorAxis”)||(e.keepProps.push(“navigatorAxis”),E(e,”init”,R),E(e,”setExtremes”,z))}constructor(e){this.axis=e}destroy(){this.axis=void 0}toFixedRange(e,x,b,E){let R=this.axis,z=(R.pointRange||0)/2,F=j(b,R.translate(e,!0,!R.horiz)),H=j(E,R.translate(x,!0,!R.horiz));return O(b)||(F=L(F+z)),O(E)||(H=L(H-z)),D(F)&&D(H)||(F=H=void 0),{min:F,max:H}}};return d}),b(x,”Stock/Navigator/NavigatorDefaults.js”,[x[“Core/Color/Color.js”],x[“Core/Series/SeriesRegistry.js”]],function(e,x){let{parse:b}=e,{seriesTypes:E}=x;return{height:40,margin:25,maskInside:!0,handles:{width:7,borderRadius:0,height:15,symbols:[“navigator-handle”,”navigator-handle”],enabled:!0,lineWidth:1,backgroundColor:”#f2f2f2″,borderColor:”#999999″},maskFill:b(“#667aff”).setOpacity(.3).get(),outlineColor:”#999999″,outlineWidth:1,series:{type:void 0===E.areaspline?”line”:”areaspline”,fillOpacity:.05,lineWidth:1,compare:null,sonification:{enabled:!1},dataGrouping:{approximation:”average”,enabled:!0,groupPixelWidth:2,firstAnchor:”firstPoint”,anchor:”middle”,lastAnchor:”lastPoint”,units:[[“millisecond”,[1,2,5,10,20,25,50,100,200,500]],[“second”,[1,2,5,10,15,30]],[“minute”,[1,2,5,10,15,30]],[“hour”,[1,2,3,4,6,8,12]],[“day”,[1,2,3,4]],[“week”,[1,2,3]],[“month”,[1,3,6]],[“year”,null]]},dataLabels:{enabled:!1,zIndex:2},id:”highcharts-navigator-series”,className:”highcharts-navigator-series”,lineColor:null,marker:{enabled:!1},threshold:null},xAxis:{className:”highcharts-navigator-xaxis”,tickLength:0,lineWidth:0,gridLineColor:”#e6e6e6″,id:”navigator-x-axis”,gridLineWidth:1,tickPixelInterval:200,labels:{align:”left”,style:{color:”#000000″,fontSize:”0.7em”,opacity:.6,textOutline:”2px contrast”},x:3,y:-4},crosshair:!1},yAxis:{className:”highcharts-navigator-yaxis”,gridLineWidth:0,startOnTick:!1,endOnTick:!1,minPadding:.1,id:”navigator-y-axis”,maxPadding:.1,labels:{enabled:!1},crosshair:!1,title:{text:null},tickLength:0,tickWidth:0}}}),b(x,”Stock/Navigator/NavigatorSymbols.js”,[x[“Core/Renderer/SVG/Symbols.js”],x[“Core/Utilities.js”]],function(e,x){let{relativeLength:b}=x;return{“navigator-handle”:function(x,E,L,O,D={}){let j=D.width?D.width/2:L,R=b(D.borderRadius||0,Math.min(2*j,O));return[[“M”,-1.5,(O=D.height||O)/2-3.5],[“L”,-1.5,O/2+4.5],[“M”,.5,O/2-3.5],[“L”,.5,O/2+4.5],…e.rect(-j-1,.5,2*j+1,O,{r:R})]}}}),b(x,”Stock/Utilities/StockUtilities.js”,[x[“Core/Utilities.js”]],function(e){let{defined:x}=e;return{setFixedRange:function(e){let b=this.xAxis[0];x(b.dataMax)&&x(b.dataMin)&&e?this.fixedRange=Math.min(e,b.dataMax-b.dataMin):this.fixedRange=e}}}),b(x,”Stock/Navigator/NavigatorComposition.js”,[x[“Core/Defaults.js”],x[“Core/Globals.js”],x[“Core/Axis/NavigatorAxisComposition.js”],x[“Stock/Navigator/NavigatorDefaults.js”],x[“Stock/Navigator/NavigatorSymbols.js”],x[“Core/Renderer/RendererRegistry.js”],x[“Stock/Utilities/StockUtilities.js”],x[“Core/Utilities.js”]],function(e,x,b,E,L,O,D,j){let{setOptions:R}=e,{composed:z}=x,{getRendererType:F}=O,{setFixedRange:H}=D,{addEvent:U,extend:Y,pushUnique:V}=j;function q(){this.chart.navigator&&!this.options.isInternal&&this.chart.navigator.setBaseSeries(null,!1)}return{compose:function(e,x,O){b.compose(x),V(z,”Navigator”)&&(e.prototype.setFixedRange=H,Y(F().prototype.symbols,L),U(O,”afterUpdate”,q),R({navigator:E}))}}}),b(x,”Core/Axis/ScrollbarAxis.js”,[x[“Core/Globals.js”],x[“Core/Utilities.js”]],function(e,x){var b;let{composed:E}=e,{addEvent:L,defined:O,pick:D,pushUnique:j}=x;return function(e){let x;function b(e){let x=D(e.options&&e.options.min,e.min),b=D(e.options&&e.options.max,e.max);return{axisMin:x,axisMax:b,scrollMin:O(e.dataMin)?Math.min(x,e.min,e.dataMin,D(e.threshold,1/0)):x,scrollMax:O(e.dataMax)?Math.max(b,e.max,e.dataMax,D(e.threshold,-1/0)):b}}function R(){let e=this.scrollbar,x=e&&!e.options.opposite,b=this.horiz?2:x?3:1;e&&(this.chart.scrollbarsOffsets=[0,0],this.chart.axisOffset[b]+=e.size+(e.options.margin||0))}function z(){let e=this;e.options&&e.options.scrollbar&&e.options.scrollbar.enabled&&(e.options.scrollbar.vertical=!e.horiz,e.options.startOnTick=e.options.endOnTick=!1,e.scrollbar=new x(e.chart.renderer,e.options.scrollbar,e.chart),L(e.scrollbar,”changed”,function(x){let E,L,{axisMin:D,axisMax:j,scrollMin:R,scrollMax:z}=b(e),F=z-R;if(O(D)&&O(j))if(e.horiz&&!e.reversed||!e.horiz&&e.reversed?(E=R+F*this.to,L=R+F*this.from):(E=R+F*(1-this.from),L=R+F*(1-this.to)),this.shouldUpdateExtremes(x.DOMType)){let b=”mousemove”!==x.DOMType&&”touchmove”!==x.DOMType&&void 0;e.setExtremes(L,E,!0,b,x)}else this.setRange(this.from,this.to)}))}function F(){let e,x,E,{scrollMin:L,scrollMax:D}=b(this),j=this.scrollbar,R=this.axisTitleMargin+(this.titleOffset||0),z=this.chart.scrollbarsOffsets,F=this.options.margin||0;if(j&&z){if(this.horiz)this.opposite||(z[1]+=R),j.position(this.left,this.top+this.height+2+z[1]-(this.opposite?F:0),this.width,this.height),this.opposite||(z[1]+=F),e=1;else{let x;this.opposite&&(z[0]+=R),x=j.options.opposite?this.left+this.width+2+z[0]-(this.opposite?0:F):this.opposite?0:F,j.position(x,this.top,this.width,this.height),this.opposite&&(z[0]+=F),e=0}z[e]+=j.size+(j.options.margin||0),isNaN(L)||isNaN(D)||!O(this.min)||!O(this.max)||this.min===this.max?j.setRange(0,1):(x=(this.min-L)/(D-L),E=(this.max-L)/(D-L),this.horiz&&!this.reversed||!this.horiz&&this.reversed?j.setRange(x,E):j.setRange(1-E,1-x))}}e.compose=function(e,b){j(E,”Axis.Scrollbar”)&&(x=b,L(e,”afterGetOffset”,R),L(e,”afterInit”,z),L(e,”afterRender”,F))}}(b||(b={})),b}),b(x,”Stock/Scrollbar/ScrollbarDefaults.js”,[],function(){return{height:10,barBorderRadius:5,buttonBorderRadius:0,buttonsEnabled:!1,liveRedraw:void 0,margin:void 0,minWidth:6,opposite:!0,step:.2,zIndex:3,barBackgroundColor:”#cccccc”,barBorderWidth:0,barBorderColor:”#cccccc”,buttonArrowColor:”#333333″,buttonBackgroundColor:”#e6e6e6″,buttonBorderColor:”#cccccc”,buttonBorderWidth:1,rifleColor:”none”,trackBackgroundColor:”rgba(255, 255, 255, 0.001)”,trackBorderColor:”#cccccc”,trackBorderRadius:5,trackBorderWidth:1}}),b(x,”Stock/Scrollbar/Scrollbar.js”,[x[“Core/Defaults.js”],x[“Core/Globals.js”],x[“Core/Axis/ScrollbarAxis.js”],x[“Stock/Scrollbar/ScrollbarDefaults.js”],x[“Core/Utilities.js”]],function(e,x,b,E,L){let{defaultOptions:O}=e,{addEvent:D,correctFloat:j,crisp:R,defined:z,destroyObjectProperties:F,fireEvent:H,merge:U,pick:Y,removeEvent:V}=L;let f=class f{static compose(e){b.compose(e,f)}static swapXY(e,x){return x&&e.forEach(e=>{let x,b=e.length;for(let E=0;Ethis.calculatedWidth?x.minWidth:0;return{chartX:(e.chartX-this.x-this.xOffset)/(this.barWidth-b),chartY:(e.chartY-this.y-this.yOffset)/(this.barWidth-b)}}destroy(){let e=this,x=e.chart.scroller;e.removeEvents(),[“track”,”scrollbarRifles”,”scrollbar”,”scrollbarGroup”,”group”].forEach(function(x){e[x]&&e[x].destroy&&(e[x]=e[x].destroy())}),x&&e===x.scrollbar&&(x.scrollbar=null,F(x.scrollbarButtons))}drawScrollbarButton(e){let x=this.renderer,b=this.scrollbarButtons,E=this.options,L=this.size,O=x.g().add(this.group);if(b.push(O),E.buttonsEnabled){let D=x.rect().addClass(“highcharts-scrollbar-button”).add(O);this.chart.styledMode||D.attr({stroke:E.buttonBorderColor,”stroke-width”:E.buttonBorderWidth,fill:E.buttonBackgroundColor}),D.attr(D.crisp({x:-.5,y:-.5,width:L,height:L,r:E.buttonBorderRadius},D.strokeWidth()));let j=x.path(f.swapXY([[“M”,L/2+(e?-1:1),L/2-3],[“L”,L/2+(e?-1:1),L/2+3],[“L”,L/2+(e?2:-2),L/2]],E.vertical)).addClass(“highcharts-scrollbar-arrow”).add(b[e]);this.chart.styledMode||j.attr({fill:E.buttonArrowColor})}}init(e,x,b){this.scrollbarButtons=[],this.renderer=e,this.userOptions=x,this.options=U(E,O.scrollbar,x),this.options.margin=Y(this.options.margin,10),this.chart=b,this.size=Y(this.options.size,this.options.height),x.enabled&&(this.render(),this.addEvents())}mouseDownHandler(e){let x=this.chart.pointer?.normalize(e)||e,b=this.cursorToScrollbarPosition(x);this.chartX=b.chartX,this.chartY=b.chartY,this.initPositions=[this.from,this.to],this.grabbedCenter=!0}mouseMoveHandler(e){let x,b=this.chart.pointer?.normalize(e)||e,E=this.options.vertical?”chartY”:”chartX”,L=this.initPositions||[];this.grabbedCenter&&(!e.touches||0!==e.touches[0][E])&&(x=this.cursorToScrollbarPosition(b)[E]-this[E],this.hasDragged=!0,this.updatePosition(L[0]+x,L[1]+x),this.hasDragged&&H(this,”changed”,{from:this.from,to:this.to,trigger:”scrollbar”,DOMType:e.type,DOMEvent:e}))}mouseUpHandler(e){this.hasDragged&&H(this,”changed”,{from:this.from,to:this.to,trigger:”scrollbar”,DOMType:e.type,DOMEvent:e}),this.grabbedCenter=this.hasDragged=this.chartX=this.chartY=null}position(e,x,b,E){let{buttonsEnabled:L,margin:O=0,vertical:D}=this.options,j=this.rendered?”animate”:”attr”,R=E,z=0;this.group.show(),this.x=e,this.y=x+this.trackBorderWidth,this.width=b,this.height=E,this.xOffset=R,this.yOffset=z,D?(this.width=this.yOffset=b=z=this.size,this.xOffset=R=0,this.yOffset=z=L?this.size:0,this.barWidth=E-(L?2*b:0),this.x=e+=O):(this.height=E=this.size,this.xOffset=R=L?this.size:0,this.barWidth=b-(L?2*E:0),this.y=this.y+O),this.group[j]({translateX:e,translateY:this.y}),this.track[j]({width:b,height:E}),this.scrollbarButtons[1][j]({translateX:D?0:b-R,translateY:D?E-z:0})}removeEvents(){this._events.forEach(function(e){V.apply(null,e)}),this._events.length=0}render(){let e=this.renderer,x=this.options,b=this.size,E=this.chart.styledMode,L=e.g(“scrollbar”).attr({zIndex:x.zIndex}).hide().add();this.group=L,this.track=e.rect().addClass(“highcharts-scrollbar-track”).attr({r:x.trackBorderRadius||0,height:b,width:b}).add(L),E||this.track.attr({fill:x.trackBackgroundColor,stroke:x.trackBorderColor,”stroke-width”:x.trackBorderWidth});let O=this.trackBorderWidth=this.track.strokeWidth();this.track.attr({x:-R(0,O),y:-R(0,O)}),this.scrollbarGroup=e.g().add(L),this.scrollbar=e.rect().addClass(“highcharts-scrollbar-thumb”).attr({height:b-O,width:b-O,r:x.barBorderRadius||0}).add(this.scrollbarGroup),this.scrollbarRifles=e.path(f.swapXY([[“M”,-3,b/4],[“L”,-3,2*b/3],[“M”,0,b/4],[“L”,0,2*b/3],[“M”,3,b/4],[“L”,3,2*b/3]],x.vertical)).addClass(“highcharts-scrollbar-rifles”).add(this.scrollbarGroup),E||(this.scrollbar.attr({fill:x.barBackgroundColor,stroke:x.barBorderColor,”stroke-width”:x.barBorderWidth}),this.scrollbarRifles.attr({stroke:x.rifleColor,”stroke-width”:1})),this.scrollbarStrokeWidth=this.scrollbar.strokeWidth(),this.scrollbarGroup.translate(-R(0,this.scrollbarStrokeWidth),-R(0,this.scrollbarStrokeWidth)),this.drawScrollbarButton(0),this.drawScrollbarButton(1)}setRange(e,x){let b,E,L=this.options,O=L.vertical,D=L.minWidth,R=this.barWidth,F=!this.rendered||this.hasDragged||this.chart.navigator&&this.chart.navigator.hasDragged?”attr”:”animate”;if(!z(R))return;let H=R*Math.min(x,1);b=Math.ceil(R*(e=Math.max(e,0))),this.calculatedWidth=E=j(H-b),E=1?this.group.hide():this.group.show()),this.rendered=!0}shouldUpdateExtremes(e){return Y(this.options.liveRedraw,x.svg&&!x.isTouchDevice&&!this.chart.boosted)||”mouseup”===e||”touchend”===e||!z(e)}trackClick(e){let x=this.chart.pointer?.normalize(e)||e,b=this.to-this.from,E=this.y+this.scrollbarTop,L=this.x+this.scrollbarLeft;this.options.vertical&&x.chartY>E||!this.options.vertical&&x.chartX>L?this.updatePosition(this.from+b,this.to+b):this.updatePosition(this.from-b,this.to-b),H(this,”changed”,{from:this.from,to:this.to,trigger:”scrollbar”,DOMEvent:e})}update(e){this.destroy(),this.init(this.chart.renderer,U(!0,this.options,e),this.chart)}updatePosition(e,x){x>1&&(e=j(1-j(x-e)),x=1),e<0&&(x=j(x-e),e=0),this.from=e,this.to=x}};return f.defaultOptions=E,O.scrollbar=U(!0,f.defaultOptions,O.scrollbar),f}),b(x,"Stock/Navigator/Navigator.js",[x["Core/Axis/Axis.js"],x["Stock/Navigator/ChartNavigatorComposition.js"],x["Core/Defaults.js"],x["Core/Globals.js"],x["Core/Axis/NavigatorAxisComposition.js"],x["Stock/Navigator/NavigatorComposition.js"],x["Stock/Scrollbar/Scrollbar.js"],x["Core/Utilities.js"]],function(e,x,b,E,L,O,D,j){let{defaultOptions:R}=b,{isTouchDevice:z}=E,{addEvent:F,clamp:H,correctFloat:U,defined:Y,destroyObjectProperties:V,erase:q,extend:K,find:$,fireEvent:_,isArray:Z,isNumber:J,merge:tt,pick:te,removeEvent:ti,splat:ts}=j;function to(e,...x){let b=[].filter.call(x,J);if(b.length)return Math[e].apply(0,b)}let w=class w{static compose(e,b,E){x.compose(e,w),O.compose(e,b,E)}constructor(e){this.scrollbarHeight=0,this.init(e)}drawHandle(e,x,b,E){let L=this.navigatorOptions.handles.height;this.handles[x][E](b?{translateX:Math.round(this.left+this.height/2),translateY:Math.round(this.top+parseInt(e,10)+.5-L)}:{translateX:Math.round(this.left+parseInt(e,10)),translateY:Math.round(this.top+this.height/2-L/2-1)})}drawOutline(e,x,b,E){let L=this.navigatorOptions.maskInside,O=this.outline.strokeWidth(),D=O/2,j=O%2/2,R=this.scrollButtonSize,z=this.size,F=this.top,H=this.height,U=F-D,Y=F+H,V=this.left,q,K;b?(q=F+x+j,x=F+e+j,K=[["M",V+H,F-R-j],["L",V+H,q],["L",V,q],["M",V,x],["L",V+H,x],["L",V+H,F+z+R]],L&&K.push(["M",V+H,q-D],["L",V+H,x+D])):(V-=R,e+=V+R-j,x+=V+R-j,K=[["M",V,U],["L",e,U],["L",e,Y],["M",x,Y],["L",x,U],["L",V+z+2*R,F+D]],L&&K.push(["M",e-D,U],["L",x+D,U])),this.outline[E]({d:K})}drawMasks(e,x,b,E){let L,O,D,j,R=this.left,z=this.top,F=this.height;b?(D=[R,R,R],j=[z,z+e,z+x],O=[F,F,F],L=[e,x-e,this.size-x]):(D=[R,R+e,R+x],j=[z,z,z],O=[e,x-e,this.size-x],L=[F,F,F]),this.shades.forEach((e,x)=>{e[E]({x:D[x],y:j[x],width:O[x],height:L[x]})})}renderElements(){let e=this,x=e.navigatorOptions,b=x.maskInside,E=e.chart,L=E.inverted,O=E.renderer,D={cursor:L?”ns-resize”:”ew-resize”},j=e.navigatorGroup=O.g(“navigator”).attr({zIndex:8,visibility:”hidden”}).add();if([!b,b,!b].forEach((b,L)=>{let R=O.rect().addClass(“highcharts-navigator-mask”+(1===L?”-inside”:”-outside”)).add(j);E.styledMode||(R.attr({fill:b?x.maskFill:”rgba(0,0,0,0)”}),1===L&&R.css(D)),e.shades[L]=R}),e.outline=O.path().addClass(“highcharts-navigator-outline”).add(j),E.styledMode||e.outline.attr({“stroke-width”:x.outlineWidth,stroke:x.outlineColor}),x.handles&&x.handles.enabled){let b=x.handles,{height:L,width:R}=b;[0,1].forEach(x=>{e.handles[x]=O.symbol(b.symbols[x],-R/2-1,0,R,L,b),E.inverted&&e.handles[x].attr({rotation:90,rotationOriginX:Math.floor(-R/2),rotationOriginY:(L+R)/2}),e.handles[x].attr({zIndex:7-x}).addClass(“highcharts-navigator-handle highcharts-navigator-handle-“+[“left”,”right”][x]).add(j),E.styledMode||e.handles[x].attr({fill:b.backgroundColor,stroke:b.borderColor,”stroke-width”:b.lineWidth}).css(D)})}}update(e){(this.series||[]).forEach(e=>{e.baseSeries&&delete e.baseSeries.navigatorSeries}),this.destroy(),tt(!0,this.chart.options.navigator,e),this.init(this.chart)}render(e,x,b,E){let L=this.chart,O=this.xAxis,D=O.pointRange||0,j=O.navigatorAxis.fake?L.xAxis[0]:O,R=this.navigatorEnabled,z=this.rendered,F=L.inverted,V=L.xAxis[0].minRange,q=L.xAxis[0].options.maxRange,K=this.scrollButtonSize,$,Z,tt,ti=this.scrollbarHeight,ts,to;if(this.hasDragged&&!Y(b))return;if(e=U(e-D/2),x=U(x+D/2),!J(e)||!J(x)){if(!z)return;b=0,E=te(O.width,j.width)}this.left=te(O.left,L.plotLeft+K+(F?L.plotWidth:0));let tr=this.size=ts=te(O.len,(F?L.plotHeight:L.plotWidth)-2*K);$=F?ti:ts+2*K,b=te(b,O.toPixels(e,!0)),E=te(E,O.toPixels(x,!0)),J(b)&&Math.abs(b)!==1/0||(b=0,E=$);let tn=O.toValue(b,!0),ta=O.toValue(E,!0),tl=Math.abs(U(ta-tn));tlq&&(this.grabbedLeft?b=O.toPixels(ta-q-D,!0):this.grabbedRight&&(E=O.toPixels(tn+q+D,!0))),this.zoomedMax=H(Math.max(b,E),0,tr),this.zoomedMin=H(this.fixedWidth?this.zoomedMax-this.fixedWidth:Math.min(b,E),0,tr),this.range=this.zoomedMax-this.zoomedMin,tr=Math.round(this.zoomedMax);let th=Math.round(this.zoomedMin);R&&(this.navigatorGroup.attr({visibility:”inherit”}),to=z&&!this.hasDragged?”animate”:”attr”,this.drawMasks(th,tr,F,to),this.drawOutline(th,tr,F,to),this.navigatorOptions.handles.enabled&&(this.drawHandle(th,0,F,to),this.drawHandle(tr,1,F,to))),this.scrollbar&&(F?(tt=this.top-K,Z=this.left-ti+(R||!j.opposite?0:(j.titleOffset||0)+j.axisTitleMargin),ti=ts+2*K):(tt=this.top+(R?this.height:-ti),Z=this.left-K),this.scrollbar.position(Z,tt,$,ti),this.scrollbar.setRange(this.zoomedMin/(ts||1),this.zoomedMax/(ts||1))),this.rendered=!0,_(this,”afterRender”)}addMouseEvents(){let e=this,x=e.chart,b=x.container,E=[],L,O;e.mouseMoveHandler=L=function(x){e.onMouseMove(x)},e.mouseUpHandler=O=function(x){e.onMouseUp(x)},(E=e.getPartsEvents(“mousedown”)).push(F(x.renderTo,”mousemove”,L),F(b.ownerDocument,”mouseup”,O),F(x.renderTo,”touchmove”,L),F(b.ownerDocument,”touchend”,O)),E.concat(e.getPartsEvents(“touchstart”)),e.eventsToUnbind=E,e.series&&e.series[0]&&E.push(F(e.series[0].xAxis,”foundExtremes”,function(){x.navigator.modifyNavigatorAxisExtremes()}))}getPartsEvents(e){let x=this,b=[];return[“shades”,”handles”].forEach(function(E){x[E].forEach(function(L,O){b.push(F(L.element,e,function(e){x[E+”Mousedown”](e,O)}))})}),b}shadesMousedown(e,x){e=this.chart.pointer?.normalize(e)||e;let b=this.chart,E=this.xAxis,L=this.zoomedMin,O=this.size,D=this.range,j=this.left,R=e.chartX,z,F,H,U;b.inverted&&(R=e.chartY,j=this.top),1===x?(this.grabbedCenter=R,this.fixedWidth=D,this.dragOffset=R-L):(U=R-j-D/2,0===x?U=Math.max(0,U):2===x&&U+D>=O&&(U=O-D,this.reversedExtremes?(U-=D,F=this.getUnionExtremes().dataMin):z=this.getUnionExtremes().dataMax),U!==L&&(this.fixedWidth=D,Y((H=E.navigatorAxis.toFixedRange(U,U+D,F,z)).min)&&_(this,”setRange”,{min:Math.min(H.min,H.max),max:Math.max(H.min,H.max),redraw:!0,eventArguments:{trigger:”navigator”}})))}handlesMousedown(e,x){e=this.chart.pointer?.normalize(e)||e;let b=this.chart,E=b.xAxis[0],L=this.reversedExtremes;0===x?(this.grabbedLeft=!0,this.otherHandlePos=this.zoomedMax,this.fixedExtreme=L?E.min:E.max):(this.grabbedRight=!0,this.otherHandlePos=this.zoomedMin,this.fixedExtreme=L?E.max:E.min),b.setFixedRange(void 0)}onMouseMove(e){let x=this,b=x.chart,E=x.navigatorSize,L=x.range,O=x.dragOffset,D=b.inverted,j=x.left,R;(!e.touches||0!==e.touches[0].pageX)&&(R=(e=b.pointer?.normalize(e)||e).chartX,D&&(j=x.top,R=e.chartY),x.grabbedLeft?(x.hasDragged=!0,x.render(0,0,R-j,x.otherHandlePos)):x.grabbedRight?(x.hasDragged=!0,x.render(0,0,x.otherHandlePos,R-j)):x.grabbedCenter&&(x.hasDragged=!0,RE+O-L&&(R=E+O-L),x.render(0,0,R-O,R-O+L)),x.hasDragged&&x.scrollbar&&te(x.scrollbar.options.liveRedraw,!z&&!this.chart.boosted)&&(e.DOMType=e.type,setTimeout(function(){x.onMouseUp(e)},0)))}onMouseUp(e){let x,b,E,L,O,D,j=this.chart,R=this.xAxis,z=this.scrollbar,F=e.DOMEvent||e,H=j.inverted,U=this.rendered&&!this.hasDragged?”animate”:”attr”;(this.hasDragged&&(!z||!z.hasDragged)||”scrollbar”===e.trigger)&&(E=this.getUnionExtremes(),this.zoomedMin===this.otherHandlePos?L=this.fixedExtreme:this.zoomedMax===this.otherHandlePos&&(O=this.fixedExtreme),this.zoomedMax===this.size&&(O=this.reversedExtremes?E.dataMin:E.dataMax),0===this.zoomedMin&&(L=this.reversedExtremes?E.dataMax:E.dataMin),Y((D=R.navigatorAxis.toFixedRange(this.zoomedMin,this.zoomedMax,L,O)).min)&&_(this,”setRange”,{min:Math.min(D.min,D.max),max:Math.max(D.min,D.max),redraw:!0,animation:!this.hasDragged&&null,eventArguments:{trigger:”navigator”,triggerOp:”navigator-drag”,DOMEvent:F}})),”mousemove”!==e.DOMType&&”touchmove”!==e.DOMType&&(this.grabbedLeft=this.grabbedRight=this.grabbedCenter=this.fixedWidth=this.fixedExtreme=this.otherHandlePos=this.hasDragged=this.dragOffset=null),this.navigatorEnabled&&J(this.zoomedMin)&&J(this.zoomedMax)&&(b=Math.round(this.zoomedMin),x=Math.round(this.zoomedMax),this.shades&&this.drawMasks(b,x,H,U),this.outline&&this.drawOutline(b,x,H,U),this.navigatorOptions.handles.enabled&&Object.keys(this.handles).length===this.handles.length&&(this.drawHandle(b,0,H,U),this.drawHandle(x,1,H,U)))}removeEvents(){this.eventsToUnbind&&(this.eventsToUnbind.forEach(function(e){e()}),this.eventsToUnbind=void 0),this.removeBaseSeriesEvents()}removeBaseSeriesEvents(){let e=this.baseSeries||[];this.navigatorEnabled&&e[0]&&(!1!==this.navigatorOptions.adaptToUpdatedData&&e.forEach(function(e){ti(e,”updatedData”,this.updatedDataHandler)},this),e[0].xAxis&&ti(e[0].xAxis,”foundExtremes”,this.modifyBaseAxisExtremes))}init(x){let b=x.options,E=b.navigator||{},O=E.enabled,j=b.scrollbar||{},R=j.enabled,z=O&&E.height||0,H=R&&j.height||0,U=j.buttonsEnabled&&H||0;this.handles=[],this.shades=[],this.chart=x,this.setBaseSeries(),this.height=z,this.scrollbarHeight=H,this.scrollButtonSize=U,this.scrollbarEnabled=R,this.navigatorEnabled=O,this.navigatorOptions=E,this.scrollbarOptions=j,this.opposite=te(E.opposite,!!(!O&&x.inverted));let Y=this,V=Y.baseSeries,q=x.xAxis.length,K=x.yAxis.length,$=V&&V[0]&&V[0].xAxis||x.xAxis[0]||{options:{}};if(x.isDirtyBox=!0,Y.navigatorEnabled?(Y.xAxis=new e(x,tt({breaks:$.options.breaks,ordinal:$.options.ordinal,overscroll:$.options.overscroll},E.xAxis,{type:”datetime”,index:q,isInternal:!0,offset:0,keepOrdinalPadding:!0,startOnTick:!1,endOnTick:!1,minPadding:0,maxPadding:0,zoomEnabled:!1},x.inverted?{offsets:[U,0,-U,0],width:z}:{offsets:[0,-U,0,U],height:z}),”xAxis”),Y.yAxis=new e(x,tt(E.yAxis,{alignTicks:!1,offset:0,index:K,isInternal:!0,reversed:te(E.yAxis&&E.yAxis.reversed,x.yAxis[0]&&x.yAxis[0].reversed,!1),zoomEnabled:!1},x.inverted?{width:z}:{height:z}),”yAxis”),V||E.series.data?Y.updateNavigatorSeries(!1):0===x.series.length&&(Y.unbindRedraw=F(x,”beforeRedraw”,function(){x.series.length>0&&!Y.series&&(Y.setBaseSeries(),Y.unbindRedraw())})),Y.reversedExtremes=x.inverted&&!Y.xAxis.reversed||!x.inverted&&Y.xAxis.reversed,Y.renderElements(),Y.addMouseEvents()):(Y.xAxis={chart:x,navigatorAxis:{fake:!0},translate:function(e,b){let E=x.xAxis[0],L=E.getExtremes(),O=E.len-2*U,D=to(“min”,E.options.min,L.dataMin),j=to(“max”,E.options.max,L.dataMax)-D;return b?e*j/O+D:O*(e-D)/j},toPixels:function(e){return this.translate(e)},toValue:function(e){return this.translate(e,!0)}},Y.xAxis.navigatorAxis.axis=Y.xAxis,Y.xAxis.navigatorAxis.toFixedRange=L.prototype.toFixedRange.bind(Y.xAxis.navigatorAxis)),x.options.scrollbar.enabled){let e=tt(x.options.scrollbar,{vertical:x.inverted});!J(e.margin)&&Y.navigatorEnabled&&(e.margin=x.inverted?-3:3),x.scrollbar=Y.scrollbar=new D(x.renderer,e,x),F(Y.scrollbar,”changed”,function(e){let x=Y.size,b=x*this.to,E=x*this.from;Y.hasDragged=Y.scrollbar.hasDragged,Y.render(0,0,E,b),this.shouldUpdateExtremes(e.DOMType)&&setTimeout(function(){Y.onMouseUp(e)})})}Y.addBaseSeriesEvents(),Y.addChartEvents()}getUnionExtremes(e){let x,b=this.chart.xAxis[0],E=this.xAxis,L=E.options,O=b.options;return e&&null===b.dataMin||(x={dataMin:te(L&&L.min,to(“min”,O.min,b.dataMin,E.dataMin,E.min)),dataMax:te(L&&L.max,to(“max”,O.max,b.dataMax,E.dataMax,E.max))}),x}setBaseSeries(e,x){let b=this.chart,E=this.baseSeries=[];e=e||b.options&&b.options.navigator.baseSeries||(b.series.length?$(b.series,e=>!e.options.isInternal).index:0),(b.series||[]).forEach((x,b)=>{!x.options.isInternal&&(x.options.showInNavigator||(b===e||x.options.id===e)&&!1!==x.options.showInNavigator)&&E.push(x)}),this.xAxis&&!this.xAxis.navigatorAxis.fake&&this.updateNavigatorSeries(!0,x)}updateNavigatorSeries(e,x){let b=this,E=b.chart,L=b.baseSeries,O={enableMouseTracking:!1,index:null,linkedTo:null,group:”nav”,padXAxis:!1,xAxis:this.navigatorOptions.xAxis?.id,yAxis:this.navigatorOptions.yAxis?.id,showInLegend:!1,stacking:void 0,isInternal:!0,states:{inactive:{opacity:1}}},D=b.series=(b.series||[]).filter(e=>{let x=e.baseSeries;return!(0>L.indexOf(x))||(x&&(ti(x,”updatedData”,b.updatedDataHandler),delete x.navigatorSeries),e.chart&&e.destroy(),!1)}),j,z,F=b.navigatorOptions.series,H;L&&L.length&&L.forEach(e=>{let U=e.navigatorSeries,Y=K({color:e.color,visible:e.visible},Z(F)?R.navigator.series:F);if(U&&!1===b.navigatorOptions.adaptToUpdatedData)return;O.name=”Navigator “+L.length,H=(j=e.options||{}).navigatorOptions||{},Y.dataLabels=ts(Y.dataLabels),(z=tt(j,O,Y,H)).pointRange=te(Y.pointRange,H.pointRange,R.plotOptions[z.type||”line”].pointRange);let V=H.data||Y.data;b.hasNavigatorData=b.hasNavigatorData||!!V,z.data=V||j.data&&j.data.slice(0),U&&U.options?U.update(z,x):(e.navigatorSeries=E.initSeries(z),E.setSortedData(),e.navigatorSeries.baseSeries=e,D.push(e.navigatorSeries))}),(F.data&&!(L&&L.length)||Z(F))&&(b.hasNavigatorData=!1,(F=ts(F)).forEach((e,x)=>{O.name=”Navigator “+(D.length+1),(z=tt(R.navigator.series,{color:E.series[x]&&!E.series[x].options.isInternal&&E.series[x].color||E.options.colors[x]||E.options.colors[0]},O,e)).data=e.data,z.data&&(b.hasNavigatorData=!0,D.push(E.initSeries(z)))})),e&&this.addBaseSeriesEvents()}addBaseSeriesEvents(){let e=this,x=e.baseSeries||[];x[0]&&x[0].xAxis&&x[0].eventsToUnbind.push(F(x[0].xAxis,”foundExtremes”,this.modifyBaseAxisExtremes)),x.forEach(x=>{x.eventsToUnbind.push(F(x,”show”,function(){this.navigatorSeries&&this.navigatorSeries.setVisible(!0,!1)})),x.eventsToUnbind.push(F(x,”hide”,function(){this.navigatorSeries&&this.navigatorSeries.setVisible(!1,!1)})),!1!==this.navigatorOptions.adaptToUpdatedData&&x.xAxis&&x.eventsToUnbind.push(F(x,”updatedData”,this.updatedDataHandler)),x.eventsToUnbind.push(F(x,”remove”,function(){this.navigatorSeries&&(q(e.series,this.navigatorSeries),Y(this.navigatorSeries.options)&&this.navigatorSeries.remove(!1),delete this.navigatorSeries)}))})}getBaseSeriesMin(e){return this.baseSeries.reduce(function(e,x){return Math.min(e,x.xData&&x.xData.length?x.xData[0]:e)},e)}modifyNavigatorAxisExtremes(){let e=this.xAxis;if(void 0!==e.getExtremes){let x=this.getUnionExtremes(!0);x&&(x.dataMin!==e.min||x.dataMax!==e.max)&&(e.min=x.dataMin,e.max=x.dataMax)}}modifyBaseAxisExtremes(){let e,x,b=this.chart.navigator,E=this.getExtremes(),L=E.min,O=E.max,D=E.dataMin,j=E.dataMax,R=O-L,z=b.stickToMin,F=b.stickToMax,H=te(this.ordinal?.convertOverscroll(this.options.overscroll),0),U=b.series&&b.series[0],Y=!!this.setExtremes;!(this.eventArgs&&”rangeSelectorButton”===this.eventArgs.trigger)&&(z&&(e=(x=D)+R),F&&(e=j+H,z||(x=Math.max(D,e-R,b.getBaseSeriesMin(U&&U.xData?U.xData[0]:-Number.MAX_VALUE)))),Y&&(z||F)&&J(x)&&(this.min=this.userMin=x,this.max=this.userMax=e)),b.stickToMin=b.stickToMax=null}updatedDataHandler(){let e=this.chart.navigator,x=this.navigatorSeries,b=e.reversedExtremes?0===Math.round(e.zoomedMin):Math.round(e.zoomedMax)>=Math.round(e.size);e.stickToMax=te(this.chart.options.navigator&&this.chart.options.navigator.stickToMax,b),e.stickToMin=e.shouldStickToMin(this,e),x&&!e.hasNavigatorData&&(x.options.pointStart=this.xData[0],x.setData(this.options.data,!1,null,!1))}shouldStickToMin(e,x){let b=x.getBaseSeriesMin(e.xData[0]),E=e.xAxis,L=E.max,O=E.min,D=E.options.range;return!!(J(L)&&J(O))&&(D&&L-b>0?L-b{e.destroy&&e.destroy()}),[“series”,”xAxis”,”yAxis”,”shades”,”outline”,”scrollbarTrack”,”scrollbarRifles”,”scrollbarGroup”,”scrollbar”,”navigatorGroup”,”rendered”].forEach(e=>{this[e]&&this[e].destroy&&this[e].destroy(),this[e]=null}),[this.handles].forEach(e=>{V(e)})}};return w}),b(x,”Core/Axis/OrdinalAxis.js”,[x[“Core/Axis/Axis.js”],x[“Core/Globals.js”],x[“Core/Series/Series.js”],x[“Core/Utilities.js”]],function(e,x,b,E){var L;let{addEvent:O,correctFloat:D,css:j,defined:R,error:z,isNumber:F,pick:H,timeUnits:U,isString:Y}=E;return function(e){function E(e,x,b,L,O=[],D=0,j){let F={},H=this.options.tickPixelInterval,Y=this.chart.time,V=[],q,K,$,_,Z,J=0,tt=[],te=-Number.MAX_VALUE;if(!this.options.ordinal&&!this.options.breaks||!O||O.length<3||void 0===x)return Y.getTimeTicks.apply(Y,arguments);let ti=O.length;for(q=0;qb,O[q]5*D||Z){if(O[q]>te){for(K=Y.getTimeTicks(e,O[J],O[q],L);K.length&&K[0]<=te;)K.shift();K.length&&(te=K[K.length-1]),V.push(tt.length),tt=tt.concat(K)}J=q+1}if(Z)break}if(K){if(_=K.info,j&&_.unitRange<=U.hour){for(J=1,q=tt.length-1;Je-x),(j=E[Math.floor(E.length/2)])<.6*H&&(j=null),z=tt[e-1]>b?e-1:e,D=void 0;z–;)R=Math.abs(D-(O=x[z])),D&&R<.8*H&&(null===j||R<.8*j)?(F[tt[z]]&&!F[tt[z+1]]?(L=z+1,D=O):L=z,tt.splice(L,1)):D=O}return tt}function L(e){let x=this.ordinal.positions;if(!x)return e;let b=x.length-1,E;return(e<0?e=x[0]:e>b?e=x[b]:(b=Math.floor(e),E=e-b),void 0!==E&&void 0!==x[b])?x[b]+(E?E*(x[b+1]-x[b]):0):e}function V(e){let x=this.ordinal,b=this.old?this.old.min:this.min,E=this.old?this.old.transA:this.transA,L=x.getExtendedPositions();if(L&&L.length){let O=D((e-b)*E+this.minPixelPadding),j=D(x.getIndexOfPoint(O,L)),R=D(j%1);if(j>=0&&j<=L.length-1){let e=L[Math.floor(j)],x=L[Math.ceil(j)];return L[Math.floor(j)]+R*(x-e)}}return e}function q(x,b){let E=e.Additions.findIndexOf(x,b,!0);if(x[E]===b)return E;let L=(b-x[E])/(x[E+1]-x[E]);return E+L}function K(){this.ordinal||(this.ordinal=new e.Additions(this))}function $(){let{eventArgs:e,options:x}=this;if(this.isXAxis&&R(x.overscroll)&&0!==x.overscroll&&F(this.max)&&F(this.min)&&(this.options.ordinal&&!this.ordinal.originalOrdinalRange&&this.ordinal.getExtendedPositions(!1),this.max===this.dataMax&&(e?.trigger!=="pan"||this.isInternal)&&e?.trigger!=="navigator")){let b=this.ordinal.convertOverscroll(x.overscroll);this.max+=b,!this.isInternal&&R(this.userMin)&&e?.trigger!=="mousewheel"&&(this.min+=b)}}function _(){this.horiz&&!this.isDirty&&(this.isDirty=this.isOrdinal&&this.chart.navigator&&!this.chart.navigator.adaptToUpdatedData)}function Z(){this.ordinal&&(this.ordinal.beforeSetTickPositions(),this.tickInterval=this.ordinal.postProcessTickInterval(this.tickInterval))}function J(e){let x=this.xAxis[0],b=x.ordinal.convertOverscroll(x.options.overscroll),E=e.originalEvent.chartX,L=this.options.chart.panning,O=!1;if(L&&"y"!==L.type&&x.options.ordinal&&x.series.length){let e,L,D=this.mouseDownX,R=x.getExtremes(),z=R.dataMin,F=R.dataMax,H=R.min,U=R.max,Y=this.hoverPoints,V=x.closestPointRange||x.ordinal&&x.ordinal.overscrollPointsRange,q=Math.round((D-E)/(x.translationSlope*(x.ordinal.slope||V))),K=x.ordinal.getExtendedPositions(),$={ordinal:{positions:K,extendedOrdinalPositions:K}},_=x.index2val,Z=x.val2lin;if(H<=z&&q<0||U+b>=F&&q>0)return;$.ordinal.positions?Math.abs(q)>1&&(Y&&Y.forEach(function(e){e.setState()}),F>(L=$.ordinal.positions)[L.length-1]&&L.push(F),this.setFixedRange(U-H),(e=x.navigatorAxis.toFixedRange(void 0,void 0,_.apply($,[Z.apply($,[H,!0])+q]),_.apply($,[Z.apply($,[U,!0])+q]))).min>=Math.min(R.dataMin,H)&&e.max<=Math.max(F,U)+b&&x.setExtremes(e.min,e.max,!0,!1,{trigger:"pan"}),this.mouseDownX=E,j(this.container,{cursor:"move"})):O=!0}else O=!0;O||L&&/y/.test(L.type)?b&&(x.max=x.dataMax+b):e.preventDefault()}function tt(){let e=this.xAxis;e&&e.options.ordinal&&(delete e.ordinal.index,delete e.ordinal.originalOrdinalRange)}function te(e,x){let b,E=this.ordinal,L=E.positions,O=E.slope,D;if(!L)return e;let j=L.length;if(L[0]<=e&&L[j-1]>=e)b=q(L,e);else{if(!((D=E.getExtendedPositions&&E.getExtendedPositions())&&D.length))return e;let j=D.length;O||(O=(D[j-1]-D[0])/j);let R=q(D,L[0]);if(e>=D[0]&&e<=D[j-1])b=q(D,e)-R;else{if(!x)return e;b=e0&&”highcharts-navigator-series”!==e.options.id&&e.processedXData.length>1&&(_=b!==e.processedXData[1]-e.processedXData[0]),b=e.processedXData[1]-e.processedXData[0],e.boosted&&(Z=e.boosted),e.reserveSpace()&&(!1!==e.takeOrdinalPosition||O)&&(j=(q=q.concat(e.processedXData)).length,q.sort(function(e,x){return e-x}),K=Math.min(K,H(e.closestPointRange,K)),j)){for(x=0;x2){for(z=q[1]-q[0],V=j-1;V–&&!$;)q[V+1]-q[V]!==z&&($=!0);!e.options.keepOrdinalPadding&&(q[0]-E>z||L-q[q.length-1]>z)&&($=!0)}else e.options.overscroll&&(2===j?K=q[1]-q[0]:1===j?(K=e.ordinal.convertOverscroll(e.options.overscroll),q=[q[0],q[0]+K]):K=x.overscrollPointsRange);$||e.forceOrdinal?(e.options.overscroll&&(x.overscrollPointsRange=K,q=q.concat(x.getOverscrollPositions())),x.positions=q,F=e.ordinal2lin(Math.max(E,q[0]),!0),U=Math.max(e.ordinal2lin(Math.min(L,q[q.length-1]),!0),1),x.slope=Y=(L-E)/(U-F),x.offset=E-F*Y):(x.overscrollPointsRange=H(e.closestPointRange,x.overscrollPointsRange),x.positions=e.ordinal.slope=x.offset=void 0)}e.isOrdinal=D&&$,x.groupIntervalFactor=null}static findIndexOf(e,x,b){let E=0,L=e.length-1,O;for(;Ee.x>=x&&e.x<=b)};E.series.forEach(e=>{let x=e.points?.[0];R(x?.plotX)&&(x.plotXe()),V.splice(e,1);return}}}function J(){let e=this.rangeSelector;if(e){let x=e.getHeight();this.extraTopMargin&&(this.plotTop+=x),this.extraBottomMargin&&(this.marginBottom+=x)}}function tt(e){let x=e.options.rangeSelector,b=this.extraBottomMargin,E=this.extraTopMargin,O=this.rangeSelector;if(x&&x.enabled&&!R(O)&&this.options.rangeSelector&&(this.options.rangeSelector.enabled=!0,this.rangeSelector=O=new L(this)),this.extraBottomMargin=!1,this.extraTopMargin=!1,O){let e=x&&x.verticalAlign||O.options&&O.options.verticalAlign;O.options.floating||(“bottom”===e?this.extraBottomMargin=!0:”middle”===e||(this.extraTopMargin=!0)),(this.extraBottomMargin!==b||this.extraTopMargin!==E)&&(this.isDirtyBox=!0)}}return{compose:function(e,x,E){if(L=E,Y(D,”RangeSelector”)){let E=x.prototype;e.prototype.minFromRange=q,j(x,”afterGetContainer”,K),j(x,”beforeRender”,$),j(x,”destroy”,Z),j(x,”getMargins”,J),j(x,”redraw”,_),j(x,”update”,tt),E.callbacks.push(_),z(O,{rangeSelector:b.rangeSelector}),z(O.lang,b.lang)}}}}),b(x,”Stock/RangeSelector/RangeSelector.js”,[x[“Core/Axis/Axis.js”],x[“Core/Defaults.js”],x[“Core/Globals.js”],x[“Stock/RangeSelector/RangeSelectorComposition.js”],x[“Core/Renderer/SVG/SVGElement.js”],x[“Core/Utilities.js”],x[“Core/Axis/OrdinalAxis.js”]],function(x,b,E,L,O,D,j){let{defaultOptions:R}=b,{addEvent:z,createElement:F,css:H,defined:U,destroyObjectProperties:Y,discardElement:V,extend:q,fireEvent:K,isNumber:$,merge:_,objectEach:Z,pad:J,pick:tt,pInt:te,splat:ti}=D;let C=class C{static compose(e,x){L.compose(e,x,C)}constructor(e){this.buttonOptions=C.prototype.defaultButtons,this.initialButtonGroupWidth=0,this.init(e)}clickButton(e,b){let E=this.chart,L=this.buttonOptions[e],O=E.xAxis[0],D=E.scroller&&E.scroller.getUnionExtremes()||O||{},j=L.type,R=L.dataGrouping,F=D.dataMin,H=D.dataMax,Y,V=O&&Math.round(Math.min(O.max,tt(H,O.max))),q,_=L._range,Z,J,te,ts=!0;if(null!==F&&null!==H){if(this.setSelected(e),R&&(this.forcedDataGrouping=!0,x.prototype.setDataGrouping.call(O||{chart:this.chart},R,!1),this.frozenStates=L.preserveDataGrouping),”month”===j||”year”===j)O?(J={range:L,max:V,chart:E,dataMin:F,dataMax:H},Y=O.minFromRange.call(J),$(J.newMax)&&(V=J.newMax),ts=!1):_=L;else if(_)V=Math.min((Y=Math.max(V-_,F))+_,H),ts=!1;else if(“ytd”===j)if(O)(void 0===H||void 0===F)&&(F=Number.MAX_VALUE,H=5e-324,E.series.forEach(e=>{let x=e.xData;x&&(F=Math.min(x[0],F),H=Math.max(x[x.length-1],H))}),b=!1),Y=Z=(te=this.getYTDExtremes(H,F,E.time.useUTC)).min,V=te.max;else{this.deferredYTDClick=e;return}else”all”===j&&O&&(E.navigator&&E.navigator.baseSeries[0]&&(E.navigator.baseSeries[0].xAxis.options.range=void 0),Y=F,V=H);if(ts&&L._offsetMin&&U(Y)&&(Y+=L._offsetMin),L._offsetMax&&U(V)&&(V+=L._offsetMax),this.dropdown&&(this.dropdown.selectedIndex=e+1),O)O.setExtremes(Y,V,tt(b,!0),void 0,{trigger:”rangeSelectorButton”,rangeSelectorButton:L}),E.setFixedRange(L._range);else{q=ti(E.options.xAxis)[0];let e=z(E,”afterGetAxes”,function(){let e=E.xAxis[0];e.range=e.options.range=_,e.min=e.options.min=Z});z(E,”load”,function(){let x=E.xAxis[0];E.setFixedRange(L._range),x.options.range=q.range,x.options.min=q.min,e()})}K(this,”afterBtnClick”)}}setSelected(e){this.selected=this.options.selected=e}init(e){let x=this,b=e.options.rangeSelector,E=b.buttons||x.defaultButtons.slice(),L=b.selected,O=function(){let e=x.minInput,b=x.maxInput;e&&e.blur&&K(e,”blur”),b&&b.blur&&K(b,”blur”)};x.chart=e,x.options=b,x.buttons=[],x.buttonOptions=E,this.eventsToUnbind=[],this.eventsToUnbind.push(z(e.container,”mousedown”,O)),this.eventsToUnbind.push(z(e,”resize”,O)),E.forEach(x.computeButtonRange),void 0!==L&&E[L]&&this.clickButton(L,!1),this.eventsToUnbind.push(z(e,”load”,function(){e.xAxis&&e.xAxis[0]&&z(e.xAxis[0],”setExtremes”,function(b){$(this.max)&&$(this.min)&&this.max-this.min!==e.fixedRange&&”rangeSelectorButton”!==b.trigger&&”updatedData”!==b.trigger&&x.forcedDataGrouping&&!x.frozenStates&&this.setDataGrouping(!1,!1)})})),this.createElements()}updateButtonStates(){let e=this,x=this.chart,b=this.dropdown,E=this.dropdownLabel,L=x.xAxis[0],O=Math.round(L.max-L.min),D=!L.hasVisibleSeries,z=24*36e5,F=x.scroller&&x.scroller.getUnionExtremes()||L,U=F.dataMin,Y=F.dataMax,V=e.getYTDExtremes(Y,U,x.time.useUTC),q=V.min,K=V.max,_=e.selected,Z=e.options.allButtonsEnabled,J=Array(e.buttonOptions.length).fill(0),tt=$(_),te=e.buttons,ti=!1,ts=null;e.buttonOptions.forEach((x,b)=>{let E=x._range,R=x.type,F=x.count||1,H=x._offsetMax-x._offsetMin,V=b===_,$=E>Y-U,te=EE&&(tr=!0)}else(“month”===R||”year”===R)&&O+36e5>=({month:28,year:365})[R]*z*F-H&&O-36e5<=({month:31,year:366})[R]*z*F+H?tr=!0:"ytd"===R?(tr=K-q+H===O,to=!V):"all"===R&&(tr=L.max-L.min>=Y-U);let tn=!Z&&!(ti&&”all”===R)&&($||te||D),ta=ti&&”all”===R||!to&&tr||V&&e.frozenStates;tn?J[b]=3:ta&&(!tt||b===_)&&(ts=b)}),null!==ts?(J[ts]=2,e.setSelected(ts)):(e.setSelected(),E&&(E.setState(0),E.attr({text:(R.lang.rangeSelectorZoom||””)+” \u25BE”})));for(let x=0;x6&&(e.lastIndexOf(“-“)===e.length-6||e.lastIndexOf(“+”)===e.length-6))){let e=new Date(L).getTimezoneOffset()/60;L+=e<=0?`+${J(-e)}:00`:`-${J(e)}:00`}}let O=Date.parse(L);if(!$(O)){let x=e.split("-");O=Date.UTC(te(x[0]),te(x[1])-1,te(x[2]))}return b&&x&&$(O)&&(O+=b.getTimezoneOffset(O)),O}drawInput(e){let{chart:x,div:b,inputGroup:L}=this,O=this,D=x.renderer.style||{},j=x.renderer,z=x.options.rangeSelector,U=R.lang,Y="min"===e;function V(e){let{maxInput:b,minInput:E}=O,L=x.xAxis[0],D=x.scroller?.getUnionExtremes()||L,j=D.dataMin,R=D.dataMax,z=x.xAxis[0].getExtremes()[e],F=O.getInputValue(e);$(F)&&F!==z&&(Y&&b&&$(j)?F>Number(b.getAttribute(“data-hc-time”))?F=void 0:FR&&(F=R)),void 0!==F&&L.setExtremes(Y?F:L.min,Y?L.max:F,void 0,void 0,{trigger:”rangeSelectorInput”}))}let K=U[Y?”rangeSelectorFrom”:”rangeSelectorTo”]||””,Z=j.label(K,0).addClass(“highcharts-range-label”).attr({padding:2*!!K,height:K?z.inputBoxHeight:0}).add(L),J=j.label(“”,0).addClass(“highcharts-range-input”).attr({padding:2,width:z.inputBoxWidth,height:z.inputBoxHeight,”text-align”:”center”}).on(“click”,function(){O.showInput(e),O[e+”Input”].focus()});x.styledMode||J.attr({stroke:z.inputBoxBorderColor,”stroke-width”:1}),J.add(L);let tt=F(“input”,{name:e,className:”highcharts-range-selector”},void 0,b);tt.setAttribute(“type”,function(e){if(-1!==e.indexOf(“%L”))return”text”;let x=[“a”,”A”,”d”,”e”,”w”,”b”,”B”,”m”,”o”,”y”,”Y”].some(x=>-1!==e.indexOf(“%”+x)),b=[“H”,”k”,”I”,”l”,”M”,”S”].some(x=>-1!==e.indexOf(“%”+x));return x&&b?”datetime-local”:x?”date”:b?”time”:”text”}(z.inputDateFormat||”%e %b %Y”)),x.styledMode||(Z.css(_(D,z.labelStyle)),J.css(_({color:”#333333″},D,z.inputStyle)),H(tt,q({position:”absolute”,border:0,boxShadow:”0 0 15px rgba(0,0,0,0.3)”,width:”1px”,height:”1px”,padding:0,textAlign:”center”,fontSize:D.fontSize,fontFamily:D.fontFamily,top:”-9999em”},z.inputStyle))),tt.onfocus=()=>{O.showInput(e)},tt.onblur=()=>{tt===E.doc.activeElement&&V(e),O.hideInput(e),O.setInputValue(e),tt.blur()};let te=!1;return tt.onchange=()=>{te||(V(e),O.hideInput(e),tt.blur())},tt.onkeypress=x=>{13===x.keyCode&&V(e)},tt.onkeydown=x=>{te=!0,(“ArrowUp”===x.key||”ArrowDown”===x.key||”Tab”===x.key)&&V(e)},tt.onkeyup=()=>{te=!1},{dateBox:J,input:tt,label:Z}}getPosition(){let e=this.chart,x=e.options.rangeSelector,b=”top”===x.verticalAlign?e.plotTop-e.axisOffset[0]:0;return{buttonTop:b+x.buttonPosition.y,inputTop:b+x.inputPosition.y-10}}getYTDExtremes(e,x,b){let E=this.chart.time,L=new E.Date(e),O=E.get(“FullYear”,L),D=Math.max(x,b?E.Date.UTC(O,0,1):+new E.Date(O,0,1)),j=L.getTime();return{max:Math.min(e||j,j),min:D}}createElements(){let e=this.chart,x=e.renderer,b=e.container,E=e.options,L=E.rangeSelector,O=L.inputEnabled,D=tt(E.chart.style?.zIndex,0)+1;if(!1!==L.enabled&&(this.group=x.g(“range-selector-group”).attr({zIndex:7}).add(),this.div=F(“div”,void 0,{position:”relative”,height:0,zIndex:D}),this.buttonOptions.length&&this.renderButtons(),b.parentNode&&b.parentNode.insertBefore(this.div,b),O)){this.inputGroup=x.g(“input-group”).add(this.group);let e=this.drawInput(“min”);this.minDateBox=e.dateBox,this.minLabel=e.label,this.minInput=e.input;let b=this.drawInput(“max”);this.maxDateBox=b.dateBox,this.maxLabel=b.label,this.maxInput=b.input}}render(e,x){let b=this.chart,E=b.options.rangeSelector,L=E.inputEnabled;if(!1!==E.enabled){if(L){this.setInputValue(“min”,e),this.setInputValue(“max”,x);let L=b.scroller&&b.scroller.getUnionExtremes()||b.xAxis[0]||{};if(U(L.dataMin)&&U(L.dataMax)){let e=b.xAxis[0].minRange||0;this.setInputExtremes(“min”,L.dataMin,Math.min(L.dataMax,this.getInputValue(“max”))-e),this.setInputExtremes(“max”,Math.max(L.dataMin,this.getInputValue(“min”))+e,L.dataMax)}if(this.inputGroup){let e=0;[this.minLabel,this.minDateBox,this.maxLabel,this.maxDateBox].forEach(x=>{if(x){let{width:b}=x.getBBox();b&&(x.attr({x:e}),e+=b+E.inputSpacing)}})}}this.alignElements(),this.updateButtonStates()}}renderButtons(){let{buttons:e,chart:x,options:b}=this,L=R.lang,O=x.renderer,D=_(b.buttonTheme),j=D&&D.states,H=D.width||28;delete D.width,delete D.states,this.buttonGroup=O.g(“range-selector-buttons”).add(this.group);let U=this.dropdown=F(“select”,void 0,{position:”absolute”,padding:0,border:0,cursor:”pointer”,opacity:1e-4},this.div),Y=x.userOptions.rangeSelector?.buttonTheme;this.dropdownLabel=O.button(“”,0,0,()=>{},_(D,{“stroke-width”:tt(D[“stroke-width”],0),width:”auto”,paddingLeft:tt(b.buttonTheme.paddingLeft,Y?.padding,8),paddingRight:tt(b.buttonTheme.paddingRight,Y?.padding,8)}),j&&j.hover,j&&j.select,j&&j.disabled).hide().add(this.group),z(U,”touchstart”,()=>{U.style.fontSize=”16px”});let V=E.isMS?”mouseover”:”mouseenter”,q=E.isMS?”mouseout”:”mouseleave”;z(U,V,()=>{K(this.dropdownLabel.element,V)}),z(U,q,()=>{K(this.dropdownLabel.element,q)}),z(U,”change”,()=>{K(this.buttons[U.selectedIndex-1].element,”click”)}),this.zoomText=O.label(L.rangeSelectorZoom||””,0).attr({padding:b.buttonTheme.padding,height:b.buttonTheme.height,paddingLeft:0,paddingRight:0}).add(this.buttonGroup),this.chart.styledMode||(this.zoomText.css(b.labelStyle),D[“stroke-width”]=tt(D[“stroke-width”],0)),F(“option”,{textContent:this.zoomText.textStr,disabled:!0},void 0,U),this.buttonOptions.forEach((x,b)=>{F(“option”,{textContent:x.title||x.text},void 0,U),e[b]=O.button(x.text,0,0,e=>{let E,L=x.events&&x.events.click;L&&(E=L.call(x,e)),!1!==E&&this.clickButton(b),this.isActive=!0},D,j&&j.hover,j&&j.select,j&&j.disabled).attr({“text-align”:”center”,width:H}).add(this.buttonGroup),x.title&&e[b].attr(“title”,x.title)})}alignElements(){let{buttonGroup:e,buttons:x,chart:b,group:E,inputGroup:L,options:O,zoomText:D}=this,j=b.options,R=j.exporting&&!1!==j.exporting.enabled&&j.navigation&&j.navigation.buttonOptions,{buttonPosition:z,inputPosition:F,verticalAlign:H}=O,U=(e,x)=>R&&this.titleCollision(b)&&”top”===H&&”right”===x.align&&x.y-e.getBBox().height-12<(R.y||0)+(R.height||0)+b.spacing[0]?-40:0,Y=b.plotLeft;if(E&&z&&F){let j=z.x-b.spacing[3];if(e){if(this.positionButtons(),!this.initialButtonGroupWidth){let e=0;D&&(e+=D.getBBox().width+5),x.forEach((b,E)=>{e+=b.width||0,E!==x.length-1&&(e+=O.buttonSpacing)}),this.initialButtonGroupWidth=e}Y-=b.spacing[3];let L=U(e,z);this.alignButtonGroup(L),this.buttonGroup?.translateY&&this.dropdownLabel.attr({y:this.buttonGroup.translateY}),E.placed=e.placed=b.hasLoaded}let R=0;L&&(R=U(L,F),”left”===F.align?j=Y:”right”===F.align&&(j=-Math.max(b.axisOffset[1],-R)),L.align({y:F.y,width:L.getBBox().width,align:F.align,x:F.x+j-2},!0,b.spacingBox),L.placed=b.hasLoaded),this.handleCollision(R),E.align({verticalAlign:H},!0,b.spacingBox);let V=E.alignAttr.translateY,q=E.getBBox().height+20,K=0;if(“bottom”===H){let e=b.legend&&b.legend.options;K=V-(q=q+(e&&”bottom”===e.verticalAlign&&e.enabled&&!e.floating?b.legend.legendHeight+tt(e.margin,10):0)-20)-(O.floating?0:O.y)-(b.titleOffset?b.titleOffset[2]:0)-10}”top”===H?(O.floating&&(K=0),b.titleOffset&&b.titleOffset[0]&&(K=b.titleOffset[0]),K+=b.margin[0]-b.spacing[0]||0):”middle”===H&&(F.y===z.y?K=V:(F.y||z.y)&&(F.y<0||z.y<0?K-=Math.min(F.y,z.y):K=V-q)),E.translate(O.x,O.y+Math.floor(K));let{minInput:$,maxInput:_,dropdown:Z}=this;O.inputEnabled&&$&&_&&($.style.marginTop=E.translateY+"px",_.style.marginTop=E.translateY+"px"),Z&&(Z.style.marginTop=E.translateY+"px")}}alignButtonGroup(e,x){let{chart:b,options:E,buttonGroup:L}=this,{buttonPosition:O}=E,D=b.plotLeft-b.spacing[3],j=O.x-b.spacing[3];"right"===O.align?j+=e-D:"center"===O.align&&(j-=D/2),L&&L.align({y:O.y,width:tt(x,this.initialButtonGroupWidth),align:O.align,x:j},!0,b.spacingBox)}positionButtons(){let{buttons:e,chart:x,options:b,zoomText:E}=this,L=x.hasLoaded?"animate":"attr",{buttonPosition:O}=b,D=x.plotLeft,j=D;E&&"hidden"!==E.visibility&&(E[L]({x:tt(D+O.x,D)}),j+=O.x+E.getBBox().width+5);for(let x=0,E=this.buttonOptions.length;x{let e=0;return this.buttons.forEach(x=>{let b=x.getBBox();b.width>e&&(e=b.width)}),e},R=x=>{if(E?.alignOptions&&b){let O=E.alignAttr.translateX+E.alignOptions.x-e+E.getBBox().x+2,j=E.alignOptions.width||0,R=b.alignAttr.translateX+b.getBBox().x;return R+x>O&&O+j>R&&L.y{E&&b&&E.attr({translateX:E.alignAttr.translateX+(x.axisOffset[1]>=-e?0:-e),translateY:E.alignAttr.translateY+b.getBBox().height+10})};if(b){if(“always”===O){this.collapseButtons(),R(j())&&z();return}”never”===O&&this.expandButtons()}E&&b?D.align===L.align||R(this.initialButtonGroupWidth+20)?”responsive”===O?(this.collapseButtons(),R(j())&&z()):z():”responsive”===O&&this.expandButtons():b&&”responsive”===O&&(this.initialButtonGroupWidth>x.plotWidth?this.collapseButtons():this.expandButtons())}collapseButtons(){let{buttons:e,zoomText:x}=this;!0!==this.isCollapsed&&(this.isCollapsed=!0,x.hide(),e.forEach(e=>void e.hide()),this.showDropdown())}expandButtons(){let{buttons:e,zoomText:x}=this;!1!==this.isCollapsed&&(this.isCollapsed=!1,this.hideDropdown(),x.show(),e.forEach(e=>void e.show()),this.positionButtons())}showDropdown(){let{buttonGroup:e,chart:x,dropdownLabel:b,dropdown:E}=this;if(e&&E){let{translateX:L=0,translateY:O=0}=e,D=x.plotLeft+L;b.attr({x:D,y:O}).show(),H(E,{left:D+”px”,top:O+”px”,visibility:”inherit”}),this.hasVisibleDropdown=!0}}hideDropdown(){let{dropdown:e}=this;e&&(this.dropdownLabel.hide(),H(e,{visibility:”hidden”,width:”1px”,height:”1px”}),this.hasVisibleDropdown=!1)}getHeight(){let e=this.options,x=this.group,b=e.inputPosition,E=e.buttonPosition,L=e.y,O=E.y,D=b.y,j=0;if(e.height)return e.height;this.alignElements(),j=x?x.getBBox(!0).height+13+L:0;let R=Math.min(D,O);return(D<0&&O<0||D>0&&O>0)&&(j+=Math.abs(R)),j}titleCollision(e){return!(e.options.title.text||e.options.subtitle.text)}update(e,x=!0){let b=this.chart;_(!0,b.options.rangeSelector,e),this.destroy(),this.init(b),x&&this.render()}destroy(){let x=this,b=x.minInput,E=x.maxInput;x.eventsToUnbind&&(x.eventsToUnbind.forEach(e=>e()),x.eventsToUnbind=void 0),Y(x.buttons),b&&(b.onfocus=b.onblur=b.onchange=null),E&&(E.onfocus=E.onblur=E.onchange=null),Z(x,function(b,E){b&&”chart”!==E&&(b instanceof O?b.destroy():b instanceof e.HTMLElement&&V(b)),b!==C.prototype[E]&&(x[E]=null)},this)}};return q(C.prototype,{defaultButtons:[{type:”month”,count:1,text:”1m”,title:”View 1 month”},{type:”month”,count:3,text:”3m”,title:”View 3 months”},{type:”month”,count:6,text:”6m”,title:”View 6 months”},{type:”ytd”,text:”YTD”,title:”View year to date”},{type:”year”,count:1,text:”1y”,title:”View 1 year”},{type:”all”,text:”All”,title:”View all”}],inputTypeFormats:{“datetime-local”:”%Y-%m-%dT%H:%M:%S”,date:”%Y-%m-%d”,time:”%H:%M:%S”}}),C}),b(x,”Core/Chart/StockChart.js”,[x[“Core/Chart/Chart.js”],x[“Core/Templating.js”],x[“Core/Defaults.js”],x[“Stock/Navigator/NavigatorDefaults.js”],x[“Stock/RangeSelector/RangeSelectorDefaults.js”],x[“Stock/Scrollbar/ScrollbarDefaults.js”],x[“Stock/Utilities/StockUtilities.js”],x[“Core/Utilities.js”]],function(e,x,b,E,L,O,D,j){let{format:R}=x,{getOptions:z}=b,{setFixedRange:F}=D,{addEvent:H,clamp:U,crisp:Y,defined:V,extend:q,find:K,isNumber:$,isString:_,merge:Z,pick:J,splat:tt}=j;function te(e,x,b){return”xAxis”===e?{minPadding:0,maxPadding:0,overscroll:0,ordinal:!0}:”yAxis”===e?{labels:{y:-2},opposite:b.opposite??x.opposite??!0,showLastLabel:!!(x.categories||”category”===x.type),title:{text:b.title?.text!==”Values”?b.title?.text:null}}:{}}function ti(e,x){if(“xAxis”===e){let e=J(x.navigator&&x.navigator.enabled,E.enabled,!0),b={type:”datetime”,categories:void 0};return e&&(b.startOnTick=!1,b.endOnTick=!1),b}return{}}let C=class C extends e{init(e,x){let b=z(),D=e.xAxis,j=e.yAxis,R=J(e.navigator&&e.navigator.enabled,E.enabled,!0);e.xAxis=e.yAxis=void 0;let F=Z({chart:{panning:{enabled:!0,type:”x”},zooming:{pinchType:”x”,mouseWheel:{type:”x”}}},navigator:{enabled:R},scrollbar:{enabled:J(O.enabled,!0)},rangeSelector:{enabled:J(L.rangeSelector.enabled,!0)},title:{text:null},tooltip:{split:J(b.tooltip&&b.tooltip.split,!0),crosshairs:!0},legend:{enabled:!1}},e,{isStock:!0});e.xAxis=D,e.yAxis=j,F.xAxis=tt(e.xAxis||{}).map(x=>Z(te(“xAxis”,x,b.xAxis),x,ti(“xAxis”,e))),F.yAxis=tt(e.yAxis||{}).map(e=>Z(te(“yAxis”,e,b.yAxis),e)),super.init(F,x)}createAxis(e,x){return x.axis=Z(te(e,x.axis,z()[e]),x.axis,ti(e,this.userOptions)),super.createAxis(e,x)}};return H(e,”update”,function(e){let x=e.options;”scrollbar”in x&&this.navigator&&(Z(!0,this.options.scrollbar,x.scrollbar),this.navigator.update({}),delete x.scrollbar)}),function(e){function x(e){if(!this.crosshair||!this.crosshair.label||!this.crosshair.label.enabled||!this.cross||!$(this.min)||!$(this.max))return;let x=this.chart,b=this.logarithmic,E=this.crosshair.label,L=this.horiz,O=this.opposite,D=this.left,j=this.top,z=this.width,F=”inside”===this.options.tickPosition,H=!1!==this.crosshair.snap,U=e.e||this.cross&&this.cross.e,Y=e.point,V=this.crossLabel,K,_,Z=E.format,tt=””,te,ti=0,ts=this.min,to=this.max;b&&(ts=b.lin2log(this.min),to=b.lin2log(this.max));let tr=L?”center”:O?”right”===this.labelAlign?”right”:”left”:”left”===this.labelAlign?”left”:”center”;V||(V=this.crossLabel=x.renderer.label(“”,0,void 0,E.shape||”callout”).addClass(“highcharts-crosshair-label highcharts-color-“+(Y&&Y.series?Y.series.colorIndex:this.series[0]&&this.series[0].colorIndex)).attr({align:E.align||tr,padding:J(E.padding,8),r:J(E.borderRadius,3),zIndex:2}).add(this.labelGroup),x.styledMode||V.attr({fill:E.backgroundColor||Y&&Y.series&&Y.series.color||”#666666″,stroke:E.borderColor||””,”stroke-width”:E.borderWidth||0}).css(q({color:”#ffffff”,fontWeight:”normal”,fontSize:”0.7em”,textAlign:”center”},E.style||{}))),L?(K=H?(Y.plotX||0)+D:U.chartX,_=j+(O?0:this.height)):(K=D+this.offset+(O?z:0),_=H?(Y.plotY||0)+j:U.chartY),Z||E.formatter||(this.dateTime&&(tt=”%b %d, %Y”),Z=”{value”+(tt?”:”+tt:””)+”}”);let tn=H?this.isXAxis?Y.x:Y.y:this.toValue(L?U.chartX:U.chartY),ta=Y&&Y.series?Y.series.isPointInside(Y):$(tn)&&tn>ts&&tn=te.right&&(ti=-(td+th.width-te.right)),V.attr({x:K+ti,y:_,anchorX:L?K:this.opposite?0:x.chartWidth,anchorY:L?this.opposite?x.chartHeight:0:_+th.height/2})}function b(){this.crossLabel&&(this.crossLabel=this.crossLabel.hide())}function E(e){let x=this.chart,b=this.options,E=x._labelPanes=x._labelPanes||{},L=b.labels;if(x.options.isStock&&”yAxis”===this.coll){let x=b.top+”,”+b.height;!E[x]&&L.enabled&&(15===L.distance&&1===this.side&&(L.distance=0),void 0===L.align&&(L.align=”right”),E[x]=this,e.align=”right”,e.preventDefault())}}function L(){let e=this.chart,x=this.options&&this.options.top+”,”+this.options.height;x&&e._labelPanes&&e._labelPanes[x]===this&&delete e._labelPanes[x]}function O(e){let x=this.isLinked&&!this.series&&this.linkedParent?this.linkedParent.series:this.series,b=this.chart,E=b.renderer,L=this.left,O=this.top,D=[],j=e.translatedValue,R=e.value,z=e.force,F,H,Y,q,Z=[],tt,te;if(b.options.isStock&&!1!==e.acrossPanes&&”xAxis”===this.coll||”yAxis”===this.coll){let ti,ts;for(let E of(e.preventDefault(),ti=”xAxis”===this.coll?”yAxis”:”xAxis”,Z=$(ts=this.options[ti])?[b[ti][ts]]:_(ts)?[b.get(ts)]:x.map(e=>e[ti]),this.isXAxis?b.yAxis:b.xAxis))if(!V(E.options.id)||-1===E.options.id.indexOf(“navigator”)){let e=E.isXAxis?”yAxis”:”xAxis”;this===(V(E.options[e])?b[e][E.options[e]]:b[e][0])&&Z.push(E)}for(let e of(tt=Z.length?[]:[this.isXAxis?b.yAxis[0]:b.xAxis[0]],Z))-1!==tt.indexOf(e)||K(tt,x=>x.pos===e.pos&&x.len===e.len)||tt.push(e);if($(te=J(j,this.translate(R||0,void 0,void 0,e.old))))if(this.horiz)for(let e of tt){let x;q=(H=e.pos)+e.len,F=Y=Math.round(te+this.transB),”pass”!==z&&(FL+this.width)&&(z?F=Y=U(F,L,L+this.width):x=!0),x||D.push([“M”,F,H],[“L”,Y,q])}else for(let e of tt){let x;Y=(F=e.pos)+e.len,H=q=Math.round(O+this.height-te),”pass”!==z&&(HO+this.height)&&(z?H=q=U(H,O,O+this.height):x=!0),x||D.push([“M”,F,H],[“L”,Y,q])}e.path=D.length>0?E.crispPolyLine(D,e.lineWidth||1):void 0}}function D(e){if(this.chart.options.isStock){let x;this.is(“column”)||this.is(“columnrange”)?x={borderWidth:0,shadow:!1}:this.is(“scatter”)||this.is(“sma”)||(x={marker:{enabled:!1,radius:2}}),x&&(e.plotOptions[this.type]=Z(e.plotOptions[this.type],x))}}function j(){let e=this.chart,x=this.options.dataGrouping;return!1!==this.allowDG&&x&&J(x.enabled,e.options.isStock)}function z(e,x){for(let b=0;b\u25CF {series.name}
    High: {point.high}
    Low: {point.low}
    Close: {point.close}
    ‘},threshold:null,states:{hover:{lineWidth:3}},stickyTracking:!0}}),b(x,”Series/HLC/HLCSeries.js”,[x[“Series/HLC/HLCPoint.js”],x[“Series/HLC/HLCSeriesDefaults.js”],x[“Core/Series/SeriesRegistry.js”],x[“Core/Utilities.js”]],function(e,x,b,E){let{column:L}=b.seriesTypes,{crisp:O,extend:D,merge:j}=E;let l=class l extends L{extendStem(e,x,b){let E=e[0],L=e[1];”number”==typeof E[2]&&(E[2]=Math.max(b+x,E[2])),”number”==typeof L[2]&&(L[2]=Math.min(b-x,L[2]))}getPointPath(e,x){let b=x.strokeWidth(),E=e.series,L=O(e.plotX||0,b),D=Math.round(e.shapeArgs.width/2),j=[[“M”,L,Math.round(e.yBottom)],[“L”,L,Math.round(e.plotHigh)]];if(null!==e.close){let x=O(e.plotClose,b);j.push([“M”,L,x],[“L”,L+D,x]),E.extendStem(j,b/2,x)}return j}drawSinglePoint(e){let x=e.series,b=x.chart,E,L=e.graphic;void 0!==e.plotY&&(L||(e.graphic=L=b.renderer.path().add(x.group)),b.styledMode||L.attr(x.pointAttribs(e,e.selected&&”select”)),E=x.getPointPath(e,L),L[L?”animate”:”attr”]({d:E}).addClass(e.getClassName(),!0))}drawPoints(){this.points.forEach(this.drawSinglePoint)}init(){super.init.apply(this,arguments),this.options.stacking=void 0}pointAttribs(e,x){let b=super.pointAttribs.call(this,e,x);return delete b.fill,b}toYData(e){return[e.high,e.low,e.close]}translate(){let e=this,x=e.yAxis,b=this.pointArrayMap&&this.pointArrayMap.slice()||[],E=b.map(e=>`plot${e.charAt(0).toUpperCase()+e.slice(1)}`);E.push(“yBottom”),b.push(“low”),super.translate.apply(e),e.points.forEach(function(L){b.forEach(function(b,O){let D=L[b];null!==D&&(e.dataModify&&(D=e.dataModify.modifyValue(D)),L[E[O]]=x.toPixels(D,!0))}),L.tooltipPos[1]=L.plotHigh+x.pos-e.chart.plotTop})}};return l.defaultOptions=j(L.defaultOptions,x),D(l.prototype,{pointClass:e,animate:null,directTouch:!1,pointArrayMap:[“high”,”low”,”close”],pointAttrToOptions:{stroke:”color”,”stroke-width”:”lineWidth”},pointValKey:”close”}),b.registerSeriesType(“hlc”,l),l}),b(x,”Series/OHLC/OHLCPoint.js”,[x[“Core/Series/SeriesRegistry.js”]],function(e){let{seriesTypes:{hlc:x}}=e;let i=class i extends x.prototype.pointClass{getClassName(){return super.getClassName.call(this)+(this.open\u25CF {series.name}
    Open: {point.open}
    High: {point.high}
    Low: {point.low}
    Close: {point.close}
    ‘}}}),b(x,”Series/OHLC/OHLCSeries.js”,[x[“Core/Globals.js”],x[“Series/OHLC/OHLCPoint.js”],x[“Series/OHLC/OHLCSeriesDefaults.js”],x[“Core/Series/SeriesRegistry.js”],x[“Core/Utilities.js”]],function(e,x,b,E,L){let{composed:O}=e,{hlc:D}=E.seriesTypes,{addEvent:j,crisp:R,extend:z,merge:F,pushUnique:H}=L;function U(e){let x=e.options,b=x.dataGrouping;b&&x.useOhlcData&&”highcharts-navigator-series”!==x.id&&(b.approximation=”ohlc”)}function Y(e){let x=e.options;x.useOhlcData&&”highcharts-navigator-series”!==x.id&&z(this,{pointValKey:g.prototype.pointValKey,pointArrayMap:g.prototype.pointArrayMap,toYData:g.prototype.toYData})}let g=class g extends D{static compose(e){H(O,”OHLCSeries”)&&(j(e,”afterSetOptions”,U),j(e,”init”,Y))}getPointPath(e,x){let b=super.getPointPath(e,x),E=x.strokeWidth(),L=R(e.plotX||0,E),O=Math.round(e.shapeArgs.width/2);if(null!==e.open){let x=R(e.plotOpen,E);b.push([“M”,L,x],[“L”,L-O,x]),super.extendStem(b,E/2,x)}return b}pointAttribs(e,x){let b=super.pointAttribs.call(this,e,x),E=this.options;return delete b.fill,!e.options.color&&E.upColor&&e.openL&&(b-=Math.round((O-L)/2),L=O),j=e[x](b,E,L,O,D),R&&z){let D=R;if(“circle”===x)D=b+L/2;else{let e=j[0],x=j[1];”M”===e[0]&&”L”===x[0]&&(D=(e[1]+x[1])/2)}let F=E>z?E:E+O;j.push([“M”,D,F],[“L”,R,z]),j=j.concat(e.circle(R-1,z-1,2,2))}return j}}x.compose=function(x){if(-1===b.indexOf(x)){b.push(x);let e=x.prototype.symbols;e.flag=E,L(e,”circle”),L(e,”square”)}let O=e.getRendererType();b.indexOf(O)&&b.push(O)}}(x||(x={})),x}),b(x,”Series/OnSeriesComposition.js”,[x[“Series/Column/ColumnSeries.js”],x[“Core/Globals.js”],x[“Core/Series/Series.js”],x[“Core/Utilities.js”]],function(e,x,b,E){var L;let{composed:O}=x,{prototype:D}=e,{prototype:j}=b,{defined:R,pushUnique:z,stableSort:F}=E;return function(e){function x(e){return j.getPlotBox.call(this.options.onSeries&&this.chart.get(this.options.onSeries)||this,e)}function b(){D.translate.apply(this);let e=this,x=e.options,b=e.chart,E=e.points,L=x.onSeries,O=L&&b.get(L),j=O&&O.options.step,z=O&&O.points,H=b.inverted,U=e.xAxis,Y=e.yAxis,V=E.length-1,q,K,$=x.onKey||”y”,_=z&&z.length,Z=0,J,tt,te,ti,ts;if(O&&O.visible&&_){for(Z=(O.pointXOffset||0)+(O.barW||0)/2,ti=O.currentDataGrouping,tt=z[_-1].x+(ti?ti.totalRange:0),F(E,(e,x)=>e.x-x.x),$=”plot”+$[0].toUpperCase()+$.substr(1);_–&&E[V];)if(J=z[_],(q=E[V]).y=J.y,J.x<=q.x&&void 0!==J[$]){if(q.x<=tt&&(q.plotY=J[$],J.xMath.pow(1-L,3)*e[O]+3*(1-L)*(1-L)*L*b[O]+3*(1-L)*L*L*E[O]+L*L*L*x[O],O=0,D=1,j;for(let e=0;e<100;e++){let e=(O+D)/2,x=L(e,0);if(null===x)break;if(.25>Math.abs(x-q.plotX)){j=e;break}x{let L;x.plotX+=Z,(void 0===x.plotY||H)&&(x.plotX>=0&&x.plotX<=U.len?H?(x.plotY=U.translate(x.x,0,1,0,1),x.plotX=R(x.y)?Y.translate(x.y,0,0,0,1):0):x.plotY=(U.opposite?0:e.yAxis.len)+U.offset:x.shapeArgs={}),(K=E[b-1])&&K.plotX===x.plotX&&(void 0===K.stackIndex&&(K.stackIndex=0),L=K.stackIndex+1),x.stackIndex=L}),this.onSeries=O}e.compose=function(e){if(z(O,"OnSeries")){let E=e.prototype;E.getPlotBox=x,E.translate=b}return e},e.getPlotBox=x,e.translate=b}(L||(L={})),L}),b(x,"Series/Flags/FlagsSeries.js",[x["Series/Flags/FlagsPoint.js"],x["Series/Flags/FlagsSeriesDefaults.js"],x["Series/Flags/FlagsSymbols.js"],x["Core/Globals.js"],x["Series/OnSeriesComposition.js"],x["Core/Renderer/RendererUtilities.js"],x["Core/Series/SeriesRegistry.js"],x["Core/Renderer/SVG/SVGElement.js"],x["Core/Utilities.js"]],function(e,x,b,E,L,O,D,j,R){let{noop:z}=E,{distribute:F}=O,{series:H,seriesTypes:{column:U}}=D,{addEvent:Y,defined:V,extend:q,isNumber:K,merge:$,objectEach:_,wrap:Z}=R;let v=class v extends U{animate(e){e&&this.setClip()}drawPoints(){let e,x,b,E,L,O,D,R,z,H,U,Y=this.points,q=this.chart,J=q.renderer,tt=q.inverted,te=this.options,ti=te.y,ts=this.yAxis,to={},tr=[],tn=K(te.borderRadius)?te.borderRadius:0;for(E=Y.length;E--;)L=Y[E],H=(tt?L.plotY:L.plotX)>this.xAxis.len,e=L.plotX,D=L.stackIndex,b=L.options.shape||te.shape,void 0!==(x=L.plotY)&&(x=L.plotY+ti-(void 0!==D&&D*te.stackDistance)),L.anchorX=D?void 0:L.plotX,R=D?void 0:L.plotY,U=”flag”!==b,O=L.graphic,void 0!==x&&e>=0&&!H?(O&&L.hasNewShapeType()&&(O=O.destroy()),O||(O=L.graphic=J.label(“”,0,void 0,b,void 0,void 0,te.useHTML).addClass(“highcharts-point”).add(this.markerGroup),L.graphic.div&&(L.graphic.div.point=L),O.isNew=!0),O.attr({align:U?”center”:”left”,width:te.width,height:te.height,”text-align”:te.textAlign,r:tn}),q.styledMode||O.attr(this.pointAttribs(L)).css($(te.style,L.style)).shadow(te.shadow),e>0&&(e-=O.strokeWidth()%2),z={y:x,anchorY:R},te.allowOverlapX&&(z.x=e,z.anchorX=L.anchorX),O.attr({text:L.options.title??te.title??”A”})[O.isNew?”attr”:”animate”](z),te.allowOverlapX||(to[L.plotX]?to[L.plotX].size=Math.max(to[L.plotX].size,O.width||0):to[L.plotX]={align:.5*!!U,size:O.width||0,target:e,anchorX:e}),L.tooltipPos=[e,x+ts.pos-q.plotTop]):O&&(L.graphic=O.destroy());if(!te.allowOverlapX){let e=100;for(let x of(_(to,function(x){x.plotX=x.anchorX,tr.push(x),e=Math.max(x.size,e)}),F(tr,tt?ts.len:this.xAxis.len,e),Y)){let e=x.plotX,b=x.graphic,E=b&&to[e];E&&b&&(V(E.pos)?b[b.isNew?”attr”:”animate”]({x:E.pos+(E.align||0)*E.size,anchorX:x.anchorX}).show().isNew=!1:b.hide().isNew=!0)}}te.useHTML&&this.markerGroup&&Z(this.markerGroup,”on”,function(e){return j.prototype.on.apply(e.apply(this,[].slice.call(arguments,1)),[].slice.call(arguments,1))})}drawTracker(){let e=this.points;for(let x of(super.drawTracker(),e)){let b=x.graphic;b&&(x.unbindMouseOver&&x.unbindMouseOver(),x.unbindMouseOver=Y(b.element,”mouseover”,function(){for(let E of(x.stackIndex>0&&!x.raised&&(x._y=b.y,b.attr({y:x._y-8}),x.raised=!0),e))E!==x&&E.raised&&E.graphic&&(E.graphic.attr({y:E._y}),E.raised=!1)}))}}pointAttribs(e,x){let b=this.options,E=e&&e.color||this.color,L=b.lineColor,O=e&&e.lineWidth,D=e&&e.fillColor||b.fillColor;return x&&(D=b.states[x].fillColor,L=b.states[x].lineColor,O=b.states[x].lineWidth),{fill:D||E,stroke:L||E,”stroke-width”:O||b.lineWidth||0}}setClip(){H.prototype.setClip.apply(this,arguments),!1!==this.options.clip&&this.sharedClipKey&&this.markerGroup&&this.markerGroup.clip(this.chart.sharedClips[this.sharedClipKey])}};return v.compose=b.compose,v.defaultOptions=$(U.defaultOptions,x),L.compose(v),q(v.prototype,{allowDG:!1,forceCrop:!0,invertible:!1,noSharedTooltip:!0,pointClass:e,sorted:!1,takeOrdinalPosition:!1,trackerGroups:[“markerGroup”],buildKDTree:z,init:H.prototype.init}),D.registerSeriesType(“flags”,v),v}),b(x,”Core/Axis/BrokenAxis.js”,[x[“Core/Axis/Stacking/StackItem.js”],x[“Core/Utilities.js”]],function(e,x){var b;let{addEvent:E,find:L,fireEvent:O,isArray:D,isNumber:j,pick:R}=x;return function(x){function b(){void 0!==this.brokenAxis&&this.brokenAxis.setBreaks(this.options.breaks,!1)}function z(){this.brokenAxis?.hasBreaks&&(this.options.ordinal=!1)}function F(){let e=this.brokenAxis;if(e?.hasBreaks){let x=this.tickPositions,b=this.tickPositions.info,E=[];for(let b=0;bx.to||E>x.from&&Lx.from&&Lx.from&&L>x.to&&L0){let x,j;for(“value”!==this.options.gapUnit&&(O*=this.basePointRange),b&&b>O&&b>=this.basePointRange&&(O=b);D–;)if(j&&!1!==j.visible||(j=E[D+1]),x=E[D],!1!==j.visible&&!1!==x.visible){if(j.x-x.x>O){let b=(x.x+j.x)/2;E.splice(D+1,0,{isNull:!0,x:b}),L.stacking&&this.options.stacking&&((L.stacking.stacks[this.stackKey][b]=new e(L,L.options.stackLabels,!1,b,this.stack)).total=0)}j=x}}return this.getGraphPath(E)}x.compose=function(e,x){if(!e.keepProps.includes(“brokenAxis”)){e.keepProps.push(“brokenAxis”),E(e,”init”,H),E(e,”afterInit”,b),E(e,”afterSetTickPositions”,F),E(e,”afterSetOptions”,z);let L=x.prototype;L.drawBreaks=V,L.gappedPath=q,E(x,”afterGeneratePoints”,U),E(x,”afterRender”,Y)}return e};let m=class m{static isInBreak(e,x){let b=e.repeat||1/0,E=e.from,L=e.to-e.from,O=x>=E?(x-E)%b:b-(E-x)%b;return e.inclusive?O<=L:O=E);O++)L.to=e)break;else if(m.isInBreak(L,e)){E-=e-L.from;break}return E}constructor(e){this.hasBreaks=!1,this.axis=e}findBreakAt(e,x){return L(x,function(x){return x.fromU;)V-=H;for(;Vthis.chart.plotSizeX/E||O&&j.forced)&&(L=!0));return L?E:0}function z(){this.series.forEach(function(e){e.hasProcessed=!1})}function F(e,x){let E;if(x=D(x,!0),e||(e={forced:!1,units:null}),this instanceof b)for(E=this.series.length;E–;)this.series[E].update({dataGrouping:e},!1);else this.chart.options.series.forEach(function(x){x.dataGrouping=”boolean”==typeof e?e:O(e,x.dataGrouping)});this.ordinal&&(this.ordinal.slope=void 0),x&&this.chart.redraw()}return{compose:function(e){b=e;let x=e.prototype;x.applyGrouping||(E(e,”afterSetScale”,z),E(e,”postProcessData”,j),L(x,{applyGrouping:j,getGroupPixelWidth:R,setDataGrouping:F}))}}}),b(x,”Extensions/DataGrouping/DataGroupingSeriesComposition.js”,[x[“Extensions/DataGrouping/ApproximationRegistry.js”],x[“Extensions/DataGrouping/DataGroupingDefaults.js”],x[“Core/Axis/DateTimeAxis.js”],x[“Core/Defaults.js”],x[“Core/Series/SeriesRegistry.js”],x[“Core/Utilities.js”]],function(e,x,b,E,L,O){let{series:{prototype:D}}=L,{addEvent:j,defined:R,error:z,extend:F,isNumber:H,merge:U,pick:Y}=O,V=D.generatePoints;function q(e){var E;let L,O,j=this.chart,F=this.options.dataGrouping,U=!1!==this.allowDG&&F&&Y(F.enabled,j.options.isStock),V=this.reserveSpace(),q=this.currentDataGrouping,K,$,_=!1;U&&!this.requireSorting&&(this.requireSorting=_=!0);let Z=!1==!(this.isCartesian&&!this.isDirty&&!this.xAxis.isDirty&&!this.yAxis.isDirty&&!e)||!U;if(_&&(this.requireSorting=!1),Z)return;this.destroyGroupedData();let J=F.groupAll?this.xData:this.processedXData,tt=F.groupAll?this.yData:this.processedYData,te=j.plotSizeX,ti=this.xAxis,ts=ti.options.ordinal,to=this.groupPixelWidth;if(to&&J&&J.length&&te){O=!0,this.isDirty=!0,this.points=null;let e=ti.getExtremes(),U=e.min,Y=e.max,q=ts&&ti.ordinal&&ti.ordinal.getGroupIntervalFactor(U,Y,this)||1,_=to*(Y-U)/te*q,Z=ti.getTimeTicks(b.Additions.prototype.normalizeTimeTickInterval(_,F.units||x.units),Math.min(U,J[0]),Math.max(Y,J[J.length-1]),ti.options.startOfWeek,J,this.closestPointRange),tr=D.groupData.apply(this,[J,tt,Z,F.approximation]),tn=tr.groupedXData,ta=tr.groupedYData,tl=0;for(F&&F.smoothed&&tn.length&&(F.firstAnchor=”firstPoint”,F.anchor=”middle”,F.lastAnchor=”lastPoint”,z(32,!1,j,{“dataGrouping.smoothed”:”use dataGrouping.anchor”})),L=1;L=x[0]){let b;F++;let E=e.groupMap[0].start,O=e.groupMap[0].length;H(E)&&H(O)&&(b=E+(O-1)),x[0]=({start:x[0],middle:x[0]+.5*L,end:x[0]+L,firstPoint:e.xData[0],lastPoint:b&&e.xData[b]})[j]}if(O>0&&R&&L&&x[O]>=b-L){z–;let b=e.groupMap[e.groupMap.length-1].start;x[O]=({start:x[O],middle:x[O]+.5*L,end:x[O]+L,firstPoint:b&&e.xData[b],lastPoint:e.xData[e.xData.length-1]})[R]}if(D&&”start”!==D){let e=L*({middle:.5,end:1})[D];for(;z>=F;)x[z]+=e,z–}}(this,tn,Y),V&&(R((E=tn)[0])&&H(ti.min)&&H(ti.dataMin)&&E[0]ti.max&&((!R(ti.options.max)&&H(ti.dataMax)&&ti.max>=ti.dataMax||ti.max===ti.dataMax)&&(ti.max=Math.max(E[E.length-1],ti.max)),ti.dataMax=Math.max(E[E.length-1],ti.dataMax))),F.groupAll&&(this.allGroupedData=ta,tn=($=this.cropData(tn,ta,ti.min,ti.max)).xData,ta=$.yData,this.cropStart=$.start),this.processedXData=tn,this.processedYData=ta}else this.groupMap=null,this.currentDataGrouping=void 0;this.hasGroupedData=O,this.preventGraphAnimation=(q&&q.totalRange)!==(K&&K.totalRange)}function K(){this.groupedData&&(this.groupedData.forEach(function(e,x){e&&(this.groupedData[x]=e.destroy?e.destroy():null)},this),this.groupedData.length=0,delete this.allGroupedData)}function $(){V.apply(this),this.destroyGroupedData(),this.groupedData=this.hasGroupedData?this.points:null}function _(){return this.is(“arearange”)?”range”:this.is(“ohlc”)?”ohlc”:this.is(“hlc”)?”hlc”:this.is(“column”)||this.options.cumulative?”sum”:”average”}function Z(x,b,E,L){let O=this,D=O.data,j=O.options&&O.options.data,z=[],F=[],Y=[],V=x.length,q=!!b,K=[],$=O.pointArrayMap,_=$&&$.length,Z=[“x”].concat($||[“y”]),J=this.options.dataGrouping&&this.options.dataGrouping.groupAll,tt,te,ti,ts=0,to=0,tr=”function”==typeof L?L:L&&e[L]?e[L]:e[O.getDGApproximation&&O.getDGApproximation()||”average”];if(_){let e=$.length;for(;e–;)K.push([])}else K.push([]);let tn=_||1;for(let e=0;e<=V;e++)if(!(x[e]=E[ts+1]||e===V;){tt=E[ts],O.dataGroupInfo={start:J?to:O.cropStart+to,length:K[0].length,groupStart:tt},ti=tr.apply(O,K),O.pointClass&&!R(O.dataGroupInfo.options)&&(O.dataGroupInfo.options=U(O.pointClass.prototype.optionsToObject.call({series:O},O.options.data[O.cropStart+to])),Z.forEach(function(e){delete O.dataGroupInfo.options[e]})),void 0!==ti&&(z.push(tt),F.push(ti),Y.push(O.dataGroupInfo)),to=e;for(let e=0;e{let x=e.axis.getExtremes(),L=x.min,O=x.max,D=E(e.axis.minPointOffset,0);return b(L)&&b(O)&&e.value>=L-D&&e.value<=O+D&&!e.axis.options.isInternal})[0]},getFieldType:function(e,b){let E=L[e],O=typeof b;return x(E)&&(O=E),({string:"text",number:"number",boolean:"checkbox"})[O]}}}),b(x,"Extensions/MouseWheelZoom/MouseWheelZoom.js",[x["Core/Utilities.js"],x["Extensions/Annotations/NavigationBindingsUtilities.js"]],function(e,x){let b,{addEvent:E,isObject:L,pick:O,defined:D,merge:j}=e,{getAssignedAxis:R}=x,z=[],F={enabled:!0,sensitivity:1.1},H=function(e,x,E,L,j,R,z){let F=O(z.type,e.zooming.type,""),H=[];"x"===F?H=E:"y"===F?H=L:"xy"===F&&(H=e.axes);let U=e.transform({axes:H,to:{x:j-5,y:R-5,width:10,height:10},from:{x:j-5*x,y:R-5*x,width:10*x,height:10*x},trigger:"mousewheel"});return U&&(D(b)&&clearTimeout(b),b=setTimeout(()=>{e.pointer?.drop()},400)),U};function U(){let e,x=(L(e=this.zooming.mouseWheel)||(e={enabled:e??!0}),j(F,e));x.enabled&&E(this.container,”wheel”,e=>{e=this.pointer?.normalize(e)||e;let{pointer:b}=this,E=b&&!b.inClass(e.target,”highcharts-no-mousewheel”);if(this.isInsidePlot(e.chartX-this.plotLeft,e.chartY-this.plotTop)&&E){let E=x.sensitivity||1.1,L=e.detail||(e.deltaY||0)/120,O=R(b.getCoordinates(e).xAxis),D=R(b.getCoordinates(e).yAxis);H(this,Math.pow(E,L),O?[O.axis]:this.xAxis,D?[D.axis]:this.yAxis,e.chartX,e.chartY,x)&&e.preventDefault?.()}})}return{compose:function(e){-1===z.indexOf(e)&&(z.push(e),E(e,”afterGetContainer”,U))}}}),b(x,”masters/modules/mouse-wheel-zoom.src.js”,[x[“Core/Globals.js”],x[“Extensions/MouseWheelZoom/MouseWheelZoom.js”]],function(e,x){return e.MouseWheelZoom=e.MouseWheelZoom||x,e.MouseWheelZoom.compose(e.Chart),e}),b(x,”masters/modules/stock.src.js”,[x[“Core/Globals.js”],x[“Series/DataModifyComposition.js”],x[“Stock/Navigator/Navigator.js”],x[“Core/Axis/OrdinalAxis.js”],x[“Stock/RangeSelector/RangeSelector.js”],x[“Stock/Scrollbar/Scrollbar.js”],x[“Core/Chart/StockChart.js”],x[“Series/OHLC/OHLCSeries.js”],x[“Series/Flags/FlagsSeries.js”]],function(e,x,b,E,L,O,D,j,R){return e.Navigator=e.Navigator||b,e.OrdinalAxis=e.OrdinalAxis||E,e.RangeSelector=e.RangeSelector||L,e.Scrollbar=e.Scrollbar||O,e.stockChart=e.stockChart||D.stockChart,e.StockChart=e.StockChart||e.stockChart,e.extend(e.StockChart,D),x.compose(e.Series,e.Axis,e.Point),R.compose(e.Renderer),j.compose(e.Series),e.Navigator.compose(e.Chart,e.Axis,e.Series),e.OrdinalAxis.compose(e.Axis,e.Series,e.Chart),e.RangeSelector.compose(e.Axis,e.Chart),e.Scrollbar.compose(e.Axis),e.StockChart.compose(e.Chart,e.Axis,e.Series,e.SVGRenderer),e}),b(x,”masters/highstock.src.js”,[x[“masters/highcharts.src.js”]],function(e){return e.product=”Highstock”,e}),x[“masters/highstock.src.js”]._modules=x,x[“masters/highstock.src.js”]},e.exports?(O.default=O,e.exports=L&&L.document?O(L):O):void 0===(E=(function(){return O(L)}).call(x,b,x,e))||(e.exports=E)},84834:(e,x,b)=>{var E,L;L=function(e){“use strict”;var x=e?e._modules:{};function b(e,x,b,E){e.hasOwnProperty(x)||(e[x]=E.apply(null,b),”function”==typeof CustomEvent&&window.dispatchEvent(new CustomEvent(“HighchartsModuleLoaded”,{detail:{path:x,module:e[x]}})))}b(x,”Extensions/DownloadURL.js”,[x[“Core/Globals.js”]],function(e){let{isSafari:x,win:b,win:{document:E}}=e,L=b.URL||b.webkitURL||b;function O(e){let x=e.replace(/filename=.*;/,””).match(/data:([^;]*)(;base64)?,([0-9A-Za-z+/]+)/);if(x&&x.length>3&&b.atob&&b.ArrayBuffer&&b.Uint8Array&&b.Blob&&L.createObjectURL){let e=b.atob(x[3]),E=new b.ArrayBuffer(e.length),O=new b.Uint8Array(E);for(let x=0;x1e3)throw Error(“Input too long”);let R=/Edge\/\d+/.test(D.userAgent);if((x&&”string”==typeof e&&0===e.indexOf(“data:application/pdf”)||R||e.length>2e6)&&!(e=O(e)||””))throw Error(“Failed to convert to blob”);if(void 0!==j.download)j.href=e,j.download=L,E.body.appendChild(j),j.click(),E.body.removeChild(j);else try{if(!b.open(e,”chart”))throw Error(“Failed to open window”)}catch{b.location.href=e}}}}),b(x,”Extensions/OfflineExporting/OfflineExportingDefaults.js”,[],function(){return{libURL:”https://code.highcharts.com/11.4.3/lib/”,menuItemDefinitions:{downloadPNG:{textKey:”downloadPNG”,onclick:function(){this.exportChartLocal()}},downloadJPEG:{textKey:”downloadJPEG”,onclick:function(){this.exportChartLocal({type:”image/jpeg”})}},downloadSVG:{textKey:”downloadSVG”,onclick:function(){this.exportChartLocal({type:”image/svg+xml”})}},downloadPDF:{textKey:”downloadPDF”,onclick:function(){this.exportChartLocal({type:”application/pdf”})}}}}}),b(x,”Extensions/OfflineExporting/OfflineExporting.js”,[x[“Core/Renderer/HTML/AST.js”],x[“Core/Chart/Chart.js”],x[“Core/Defaults.js”],x[“Extensions/DownloadURL.js”],x[“Extensions/Exporting/Exporting.js”],x[“Core/Globals.js”],x[“Core/HttpUtilities.js”],x[“Extensions/OfflineExporting/OfflineExportingDefaults.js”],x[“Core/Utilities.js”]],function(e,x,b,E,L,O,D,j,R){var z;let{defaultOptions:F}=b,{downloadURL:H}=E,{doc:U,win:Y}=O,{ajax:V}=D,{addEvent:q,error:K,extend:$,fireEvent:_,merge:Z}=R;return e.allowedAttributes.push(“data-z-index”,”fill-opacity”,”filter”,”rx”,”ry”,”stroke-dasharray”,”stroke-linejoin”,”stroke-opacity”,”text-anchor”,”transform”,”version”,”viewBox”,”visibility”,”xmlns”,”xmlns:xlink”),e.allowedTags.push(“desc”,”clippath”,”g”),function(x){function b(e,b){let E=this,D=Z(E.options.exporting,e),j=function(e){!1===D.fallbackToExportServer?D.error?D.error(D,e):K(28,!0):E.exportChart(D)};(O.isMS&&E.styledMode&&!L.inlineAllowlist.length&&L.inlineAllowlist.push(/^blockSize/,/^border/,/^caretColor/,/^color/,/^columnRule/,/^columnRuleColor/,/^cssFloat/,/^cursor/,/^fill$/,/^fillOpacity/,/^font/,/^inlineSize/,/^length/,/^lineHeight/,/^opacity/,/^outline/,/^parentRule/,/^rx$/,/^ry$/,/^stroke/,/^textAlign/,/^textAnchor/,/^textDecoration/,/^transform/,/^vectorEffect/,/^visibility/,/^x$/,/^y$/),O.isMS&&(“application/pdf”===D.type||E.container.getElementsByTagName(“image”).length&&”image/svg+xml”!==D.type)||”application/pdf”===D.type&&[].some.call(E.container.getElementsByTagName(“image”),function(e){let x=e.getAttribute(“href”);return””!==x&&”string”==typeof x&&0!==x.indexOf(“data:”)}))?j(Error(“Image type not supported for this chart/browser.”)):E.getSVGForLocalExport(D,b||{},j,function(e){e.indexOf(“-1&&”image/svg+xml”!==D.type&&(O.isMS||”application/pdf”===D.type)?j(Error(“Image type not supported for charts with embedded HTML”)):x.downloadSVGLocal(e,$({filename:E.getFilename()},D),j,()=>_(E,”exportChartLocalSuccess”))})}function E(e,x){let b=U.getElementsByTagName(“head”)[0],E=U.createElement(“script”);E.type=”text/javascript”,E.src=e,E.onload=x,E.onerror=function(){K(“Error loading script “+e)},b.appendChild(E)}function D(e,b,E,L){let O=this,D=()=>{let e;U&&V===Y&&L((e=z.innerHTML,O.sanitizeSVG(e,F)))},j=(e,x,b)=>{++V,b.imageElement.setAttributeNS(“http://www.w3.org/1999/xlink”,”href”,e),D()},R,z,F,H=null,U,Y=0,V=0;O.unbindGetSVG=q(O,”getSVG”,e=>{F=e.chartCopy.options,Y=(U=(z=e.chartCopy.container.cloneNode(!0))&&z.getElementsByTagName(“image”)||[]).length}),O.getSVGForExport(e,b);try{if(!U||!U.length){let e;return void L((e=z.innerHTML,O.sanitizeSVG(e,F)))}for(let b=0;b{setTimeout(function(){let x,D=U.createElement(“canvas”),R=D.getContext&&D.getContext(“2d”);try{if(R){D.height=F.height*L,D.width=F.width*L,R.drawImage(F,0,0,D.width,D.height);try{x=D.toDataURL(b),O(x,b,E,L)}catch(x){H(e,b,E,L)}}else j(e,b,E,L)}finally{z&&z(e,b,E,L)}},x.loadEventDeferDelay)},q=()=>{R(e,b,E,L),z&&z(e,b,E,L)};H=()=>{F=new Y.Image,H=D,F.crossOrigin=”Anonymous”,F.onload=V,F.onerror=q,F.src=e},F.onload=V,F.onerror=q,F.src=e}function z(e){let b=Y.navigator.userAgent,E=b.indexOf(“WebKit”)>-1&&0>b.indexOf(“Chrome”);try{if(!E&&-1===e.indexOf(“L?”p”:”l”,”pt”,[L,O]);[].forEach.call(e.querySelectorAll(‘*[visibility=”hidden”]’),function(e){e.parentNode.removeChild(e)});let j=e.querySelectorAll(“linearGradient”);for(let e=0;e{“\u200B”===e.textContent&&(e.textContent=” “,e.setAttribute(“dx”,-5))}),D.svg(e,{x:0,y:0,width:L,height:O,removeInvalid:!0}).then(()=>E(D.output(“datauristring”)))}x.CanVGRenderer={},x.domurl=Y.URL||Y.webkitURL||Y,x.loadEventDeferDelay=150*!!O.isMS,x.compose=function(e){let x=e.prototype;return x.exportChartLocal||(x.getSVGForLocalExport=D,x.exportChartLocal=b,Z(!0,F.exporting,j)),e},x.downloadSVGLocal=function(b,L,O,D){let j=U.createElement(“div”),q=L.type||”image/png”,K=(L.filename||”chart”)+”.”+(“image/svg+xml”===q?”svg”:q.split(“/”)[1]),$=L.scale||1,_,Z,tt,te=L.libURL||F.exporting.libURL,ti=!0,ts=L.pdfFont;te=”/”!==te.slice(-1)?te+”/”:te;let to=()=>{let x,E,L,R,z,F,U;e.setElementHTML(j,b);let q=j.getElementsByTagName(“text”),_=function(e,x){let b=e;for(;b&&b!==j;){if(b.style[x]){let E=b.style[x];”fontSize”===x&&/em$/.test(E)&&(E=Math.round(16*parseFloat(E))+”px”),e.style[x]=E;break}b=b.parentNode}};[].forEach.call(q,function(e){for([“fontFamily”,”fontSize”].forEach(x=>{_(e,x)}),e.style.fontFamily=ts&&ts.normal?”HighchartsFont”:String(e.style.fontFamily&&e.style.fontFamily.split(” “).splice(-1)),x=e.getElementsByTagName(“title”),[].forEach.call(x,function(x){e.removeChild(x)}),E=e.getElementsByClassName(“highcharts-text-outline”);E.length>0;)e.removeChild(E[0])});let Z=j.querySelector(“svg”);Z&&(z=(e,x)=>{Y.jspdf.jsPDF.API.events.push([“initialized”,function(){this.addFileToVFS(e,x),this.addFont(e,”HighchartsFont”,e),this.getFontList().HighchartsFont||this.setFont(“HighchartsFont”)}])},ts&&(R=Z.textContent||””,!/[^\u0000-\u007F\u200B]+/.test(R))&&(ts=void 0),F=[“normal”,”italic”,”bold”,”bolditalic”],(U=()=>{let e=F.shift();if(!e)return(()=>{J(Z,0,$,e=>{try{H(e,K),D&&D()}catch(e){O(e)}})})();let x=ts&&ts[e];x?V({url:x,responseType:”blob”,success:(x,b)=>{let E=new FileReader;E.onloadend=function(){if(“string”==typeof this.result){let x=this.result.split(“,”)[1];z(e,x),”normal”===e&&(L=x)}U()},E.readAsDataURL(b.response)},error:U}):(L&&z(e,L),U())})())};if(“image/svg+xml”===q)try{void 0!==Y.MSBlobBuilder?((Z=new Y.MSBlobBuilder).append(b),_=Z.getBlob(“image/svg+xml”)):_=z(b),H(_,K),D&&D()}catch(e){O(e)}else”application/pdf”===q?Y.jspdf&&Y.jspdf.jsPDF?to():(ti=!0,E(te+”jspdf.js”,function(){E(te+”svg2pdf.js”,to)})):(_=z(b),tt=function(){try{x.domurl.revokeObjectURL(_)}catch(e){}},R(_,q,{},$,function(e){try{H(e,K),D&&D()}catch(e){O(e)}},function(){if(b.length>1e8)throw Error(“Input too long”);let e=U.createElement(“canvas”),x=e.getContext(“2d”),L=b.match(/^]*\s{,1000}width\s{,1000}=\s{,1000}\”?(\d+)\”?[^>]*>/),j=b.match(/^]*\s{0,1000}height\s{,1000}=\s{,1000}\”?(\d+)\”?[^>]*>/);if(x&&L&&j){let R=L[1]*$,z=j[1]*$,F=()=>{Y.canvg.Canvg.fromString(x,b).start();try{H(Y.navigator.msSaveOrOpenBlob?e.msToBlob():e.toDataURL(q),K),D&&D()}catch(e){O(e)}finally{tt()}};e.width=R,e.height=z,Y.canvg?F():(ti=!0,E(te+”canvg.js”,F))}},O,O,function(){ti&&tt()}))},x.getScript=E,x.imageToDataUrl=R,x.svgToDataUrl=z,x.svgToPdf=J}(z||(z={})),z}),b(x,”masters/modules/offline-exporting.src.js”,[x[“Core/Globals.js”],x[“Extensions/DownloadURL.js”],x[“Extensions/OfflineExporting/OfflineExporting.js”]],function(e,x,b){return e.dataURLtoBlob=e.dataURLtoBlob||x.dataURLtoBlob,e.downloadSVGLocal=b.downloadSVGLocal,e.downloadURL=e.downloadURL||x.downloadURL,b.compose(e.Chart),e})},e.exports?(L.default=L,e.exports=L):void 0===(E=(function(e){return L(e),L.Highcharts=e,L}).apply(x,[b(14783),b(9264)]))||(e.exports=E)},85316:function(e,x,b){“undefined”!=typeof self&&self,e.exports=function(e){var x=[function(e,x,b){“use strict”;function E(){return(E=Object.assign?Object.assign.bind():function(e){for(var x=1;xe.length)&&(x=e.length);for(var b=0,E=Array(x);b