t==="x"?"y":"x";function cP(t,e,n,i){const r=t.skip?e:t,a=e,s=n.skip?e:n,o=Fp(a,r),l=Fp(s,a);let c=o/(o+l),d=l/(o+l);c=isNaN(c)?0:c,d=isNaN(d)?0:d;const u=i*c,_=i*d;return{previous:{x:a.x-u*(s.x-r.x),y:a.y-u*(s.y-r.y)},next:{x:a.x+_*(s.x-r.x),y:a.y+_*(s.y-r.y)}}}function dP(t,e,n){const i=t.length;let r,a,s,o,l,c=Fr(t,0);for(let d=0;d!c.skip)),e.cubicInterpolationMode==="monotone")_P(t,r);else{let c=i?t[t.length-1]:t[0];for(a=0,s=t.length;at.ownerDocument.defaultView.getComputedStyle(t,null);function fP(t,e){return kl(t).getPropertyValue(e)}const gP=["top","right","bottom","left"];function Wi(t,e,n){const i={};n=n?"-"+n:"";for(let r=0;r<4;r++){const a=gP[r];i[a]=parseFloat(t[e+"-"+a+n])||0}return i.width=i.left+i.right,i.height=i.top+i.bottom,i}const hP=(t,e,n)=>(t>0||e>0)&&(!n||!n.shadowRoot);function EP(t,e){const n=t.touches,i=n&&n.length?n[0]:t,{offsetX:r,offsetY:a}=i;let s=!1,o,l;if(hP(r,a,t.target))o=r,l=a;else{const c=e.getBoundingClientRect();o=i.clientX-c.left,l=i.clientY-c.top,s=!0}return{x:o,y:l,box:s}}function Li(t,e){if("native"in t)return t;const{canvas:n,currentDevicePixelRatio:i}=e,r=kl(n),a=r.boxSizing==="border-box",s=Wi(r,"padding"),o=Wi(r,"border","width"),{x:l,y:c,box:d}=EP(t,n),u=s.left+(d&&o.left),_=s.top+(d&&o.top);let{width:p,height:f}=e;return a&&(p-=s.width+o.width,f-=s.height+o.height),{x:Math.round((l-u)/p*n.width/i),y:Math.round((c-_)/f*n.height/i)}}function SP(t,e,n){let i,r;if(e===void 0||n===void 0){const a=pf(t);if(!a)e=t.clientWidth,n=t.clientHeight;else{const s=a.getBoundingClientRect(),o=kl(a),l=Wi(o,"border","width"),c=Wi(o,"padding");e=s.width-c.width-l.width,n=s.height-c.height-l.height,i=Jo(o.maxWidth,a,"clientWidth"),r=Jo(o.maxHeight,a,"clientHeight")}}return{width:e,height:n,maxWidth:i||Zo,maxHeight:r||Zo}}const Ws=t=>Math.round(t*10)/10;function bP(t,e,n,i){const r=kl(t),a=Wi(r,"margin"),s=Jo(r.maxWidth,t,"clientWidth")||Zo,o=Jo(r.maxHeight,t,"clientHeight")||Zo,l=SP(t,e,n);let{width:c,height:d}=l;if(r.boxSizing==="content-box"){const _=Wi(r,"border","width"),p=Wi(r,"padding");c-=p.width+_.width,d-=p.height+_.height}return c=Math.max(0,c-a.width),d=Math.max(0,i?c/i:d-a.height),c=Ws(Math.min(c,s,l.maxWidth)),d=Ws(Math.min(d,o,l.maxHeight)),c&&!d&&(d=Ws(c/2)),(e!==void 0||n!==void 0)&&i&&l.height&&d>l.height&&(d=l.height,c=Ws(Math.floor(d*i))),{width:c,height:d}}function vh(t,e,n){const i=e||1,r=Math.floor(t.height*i),a=Math.floor(t.width*i);t.height=Math.floor(t.height),t.width=Math.floor(t.width);const s=t.canvas;return s.style&&(n||!s.style.height&&!s.style.width)&&(s.style.height=`${t.height}px`,s.style.width=`${t.width}px`),t.currentDevicePixelRatio!==i||s.height!==r||s.width!==a?(t.currentDevicePixelRatio=i,s.height=r,s.width=a,t.ctx.setTransform(i,0,0,i,0,0),!0):!1}const TP=function(){let t=!1;try{const e={get passive(){return t=!0,!1}};window.addEventListener("test",null,e),window.removeEventListener("test",null,e)}catch{}return t}();function Rh(t,e){const n=fP(t,e),i=n&&n.match(/^(\d+)(\.\d+)?px$/);return i?+i[1]:void 0}function Pi(t,e,n,i){return{x:t.x+n*(e.x-t.x),y:t.y+n*(e.y-t.y)}}function vP(t,e,n,i){return{x:t.x+n*(e.x-t.x),y:i==="middle"?n<.5?t.y:e.y:i==="after"?n<1?t.y:e.y:n>0?e.y:t.y}}function RP(t,e,n,i){const r={x:t.cp2x,y:t.cp2y},a={x:e.cp1x,y:e.cp1y},s=Pi(t,r,n),o=Pi(r,a,n),l=Pi(a,e,n),c=Pi(s,o,n),d=Pi(o,l,n);return Pi(c,d,n)}const CP=function(t,e){return{x(n){return t+t+e-n},setWidth(n){e=n},textAlign(n){return n==="center"?n:n==="right"?"left":"right"},xPlus(n,i){return n-i},leftForLtr(n,i){return n-i}}},yP=function(){return{x(t){return t},setWidth(t){},textAlign(t){return t},xPlus(t,e){return t+e},leftForLtr(t,e){return t}}};function Nr(t,e,n){return t?CP(e,n):yP()}function JC(t,e){let n,i;(e==="ltr"||e==="rtl")&&(n=t.canvas.style,i=[n.getPropertyValue("direction"),n.getPropertyPriority("direction")],n.setProperty("direction",e,"important"),t.prevTextDirection=i)}function ey(t,e){e!==void 0&&(delete t.prevTextDirection,t.canvas.style.setProperty("direction",e[0],e[1]))}function ty(t){return t==="angle"?{between:es,compare:OL,normalize:Wt}:{between:Mn,compare:(e,n)=>e-n,normalize:e=>e}}function Ch({start:t,end:e,count:n,loop:i,style:r}){return{start:t%n,end:e%n,loop:i&&(e-t+1)%n===0,style:r}}function OP(t,e,n){const{property:i,start:r,end:a}=n,{between:s,normalize:o}=ty(i),l=e.length;let{start:c,end:d,loop:u}=t,_,p;if(u){for(c+=l,d+=l,_=0,p=l;_l(r,T,h)&&o(r,T)!==0,v=()=>o(a,h)===0||l(a,T,h),O=()=>m||b(),x=()=>!m||v();for(let A=d,D=d;A<=u;++A)S=e[A%s],!S.skip&&(h=c(S[i]),h!==T&&(m=l(h,r,a),g===null&&O()&&(g=o(h,r)===0?A:D),g!==null&&x()&&(f.push(Ch({start:g,end:A,loop:_,count:s,style:p})),g=null),D=A,T=h));return g!==null&&f.push(Ch({start:g,end:u,loop:_,count:s,style:p})),f}function iy(t,e){const n=[],i=t.segments;for(let r=0;rr&&t[a%e].skip;)a--;return a%=e,{start:r,end:a}}function AP(t,e,n,i){const r=t.length,a=[];let s=e,o=t[e],l;for(l=e+1;l<=n;++l){const c=t[l%r];c.skip||c.stop?o.skip||(i=!1,a.push({start:e%r,end:(l-1)%r,loop:i}),e=s=c.stop?l:null):(s=l,o.skip&&(e=l)),o=c}return s!==null&&a.push({start:e%r,end:s%r,loop:i}),a}function IP(t,e){const n=t.points,i=t.options.spanGaps,r=n.length;if(!r)return[];const a=!!t._loop,{start:s,end:o}=NP(n,r,a,i);if(i===!0)return yh(t,[{start:s,end:o,loop:a}],n,e);const l=oo({chart:e,initial:n.initial,numSteps:s,currentStep:Math.min(i-n.start,s)}))}_refresh(){this._request||(this._running=!0,this._request=BC.call(window,()=>{this._update(),this._request=null,this._running&&this._refresh()}))}_update(e=Date.now()){let n=0;this._charts.forEach((i,r)=>{if(!i.running||!i.items.length)return;const a=i.items;let s=a.length-1,o=!1,l;for(;s>=0;--s)l=a[s],l._active?(l._total>i.duration&&(i.duration=l._total),l.tick(e),o=!0):(a[s]=a[a.length-1],a.pop());o&&(r.draw(),this._notify(r,i,e,"progress")),a.length||(i.running=!1,this._notify(r,i,e,"complete"),i.initial=!1),n+=a.length}),this._lastDate=e,n===0&&(this._running=!1)}_getAnims(e){const n=this._charts;let i=n.get(e);return i||(i={running:!1,initial:!0,items:[],listeners:{complete:[],progress:[]}},n.set(e,i)),i}listen(e,n,i){this._getAnims(e).listeners[n].push(i)}add(e,n){!n||!n.length||this._getAnims(e).items.push(...n)}has(e){return this._getAnims(e).items.length>0}start(e){const n=this._charts.get(e);n&&(n.running=!0,n.start=Date.now(),n.duration=n.items.reduce((i,r)=>Math.max(i,r._duration),0),this._refresh())}running(e){if(!this._running)return!1;const n=this._charts.get(e);return!(!n||!n.running||!n.items.length)}stop(e){const n=this._charts.get(e);if(!n||!n.items.length)return;const i=n.items;let r=i.length-1;for(;r>=0;--r)i[r].cancel();n.items=[],this._notify(e,n,Date.now(),"complete")}remove(e){return this._charts.delete(e)}}var An=new wP;const Nh="transparent",MP={boolean(t,e,n){return n>.5?e:t},color(t,e,n){const i=hh(t||Nh),r=i.valid&&hh(e||Nh);return r&&r.valid?r.mix(i,n).hexString():e},number(t,e,n){return t+(e-t)*n}};class LP{constructor(e,n,i,r){const a=n[i];r=We([e.to,r,a,e.from]);const s=We([e.from,a,r]);this._active=!0,this._fn=e.fn||MP[e.type||typeof s],this._easing=Ta[e.easing]||Ta.linear,this._start=Math.floor(Date.now()+(e.delay||0)),this._duration=this._total=Math.floor(e.duration),this._loop=!!e.loop,this._target=n,this._prop=i,this._from=s,this._to=r,this._promises=void 0}active(){return this._active}update(e,n,i){if(this._active){this._notify(!1);const r=this._target[this._prop],a=i-this._start,s=this._duration-a;this._start=i,this._duration=Math.floor(Math.max(s,e.duration)),this._total+=a,this._loop=!!e.loop,this._to=We([e.to,n,r,e.from]),this._from=We([e.from,r,n])}}cancel(){this._active&&(this.tick(Date.now()),this._active=!1,this._notify(!1))}tick(e){const n=e-this._start,i=this._duration,r=this._prop,a=this._from,s=this._loop,o=this._to;let l;if(this._active=a!==o&&(s||n1?2-l:l,l=this._easing(Math.min(1,Math.max(0,l))),this._target[r]=this._fn(a,o,l)}wait(){const e=this._promises||(this._promises=[]);return new Promise((n,i)=>{e.push({res:n,rej:i})})}_notify(e){const n=e?"res":"rej",i=this._promises||[];for(let r=0;r{const a=e[r];if(!Pe(a))return;const s={};for(const o of n)s[o]=a[o];(Xe(a.properties)&&a.properties||[r]).forEach(o=>{(o===r||!i.has(o))&&i.set(o,s)})})}_animateOptions(e,n){const i=n.options,r=kP(e,i);if(!r)return[];const a=this._createAnimations(r,i);return i.$shared&&PP(e.options.$animations,i).then(()=>{e.options=i},()=>{}),a}_createAnimations(e,n){const i=this._properties,r=[],a=e.$animations||(e.$animations={}),s=Object.keys(n),o=Date.now();let l;for(l=s.length-1;l>=0;--l){const c=s[l];if(c.charAt(0)==="$")continue;if(c==="options"){r.push(...this._animateOptions(e,n));continue}const d=n[c];let u=a[c];const _=i.get(c);if(u)if(_&&u.active()){u.update(_,d,o);continue}else u.cancel();if(!_||!_.duration){e[c]=d;continue}a[c]=u=new LP(_,e,c,d),r.push(u)}return r}update(e,n){if(this._properties.size===0){Object.assign(e,n);return}const i=this._createAnimations(e,n);if(i.length)return An.add(this._chart,i),!0}}function PP(t,e){const n=[],i=Object.keys(e);for(let r=0;r0||!n&&a<0)return r.index}return null}function wh(t,e){const{chart:n,_cachedMeta:i}=t,r=n._stacks||(n._stacks={}),{iScale:a,vScale:s,index:o}=i,l=a.axis,c=s.axis,d=GP(a,s,i),u=e.length;let _;for(let p=0;pn[i].axis===e).shift()}function HP(t,e){return Ri(t,{active:!1,dataset:void 0,datasetIndex:e,index:e,mode:"default",type:"dataset"})}function VP(t,e,n){return Ri(t,{active:!1,dataIndex:e,parsed:void 0,raw:void 0,element:n,index:e,mode:"default",type:"data"})}function Qr(t,e){const n=t.controller.index,i=t.vScale&&t.vScale.axis;if(i){e=e||t._parsed;for(const r of e){const a=r._stacks;if(!a||a[i]===void 0||a[i][n]===void 0)return;delete a[i][n],a[i]._visualValues!==void 0&&a[i]._visualValues[n]!==void 0&&delete a[i]._visualValues[n]}}}const cc=t=>t==="reset"||t==="none",Mh=(t,e)=>e?t:Object.assign({},t),qP=(t,e,n)=>t&&!e.hidden&&e._stacked&&{keys:ay(n,!0),values:null};class dn{constructor(e,n){this.chart=e,this._ctx=e.ctx,this.index=n,this._cachedDataOpts={},this._cachedMeta=this.getMeta(),this._type=this._cachedMeta.type,this.options=void 0,this._parsing=!1,this._data=void 0,this._objectData=void 0,this._sharedOptions=void 0,this._drawStart=void 0,this._drawCount=void 0,this.enableOptionSharing=!1,this.supportsDecimation=!1,this.$context=void 0,this._syncList=[],this.datasetElementType=new.target.datasetElementType,this.dataElementType=new.target.dataElementType,this.initialize()}initialize(){const e=this._cachedMeta;this.configure(),this.linkScales(),e._stacked=Dh(e.vScale,e),this.addElements(),this.options.fill&&!this.chart.isPluginEnabled("filler")&&console.warn("Tried to use the 'fill' option without the 'Filler' plugin enabled. Please import and register the 'Filler' plugin and make sure it is not disabled in the options")}updateIndex(e){this.index!==e&&Qr(this._cachedMeta),this.index=e}linkScales(){const e=this.chart,n=this._cachedMeta,i=this.getDataset(),r=(u,_,p,f)=>u==="x"?_:u==="r"?f:p,a=n.xAxisID=xe(i.xAxisID,lc(e,"x")),s=n.yAxisID=xe(i.yAxisID,lc(e,"y")),o=n.rAxisID=xe(i.rAxisID,lc(e,"r")),l=n.indexAxis,c=n.iAxisID=r(l,a,s,o),d=n.vAxisID=r(l,s,a,o);n.xScale=this.getScaleForId(a),n.yScale=this.getScaleForId(s),n.rScale=this.getScaleForId(o),n.iScale=this.getScaleForId(c),n.vScale=this.getScaleForId(d)}getDataset(){return this.chart.data.datasets[this.index]}getMeta(){return this.chart.getDatasetMeta(this.index)}getScaleForId(e){return this.chart.scales[e]}_getOtherScale(e){const n=this._cachedMeta;return e===n.iScale?n.vScale:n.iScale}reset(){this._update("reset")}_destroy(){const e=this._cachedMeta;this._data&&mh(this._data,this),e._stacked&&Qr(e)}_dataCheck(){const e=this.getDataset(),n=e.data||(e.data=[]),i=this._data;if(Pe(n))this._data=BP(n);else if(i!==n){if(i){mh(i,this);const r=this._cachedMeta;Qr(r),r._parsed=[]}n&&Object.isExtensible(n)&&DL(n,this),this._syncList=[],this._data=n}}addElements(){const e=this._cachedMeta;this._dataCheck(),this.datasetElementType&&(e.dataset=new this.datasetElementType)}buildOrUpdateElements(e){const n=this._cachedMeta,i=this.getDataset();let r=!1;this._dataCheck();const a=n._stacked;n._stacked=Dh(n.vScale,n),n.stack!==i.stack&&(r=!0,Qr(n),n.stack=i.stack),this._resyncElements(e),(r||a!==n._stacked)&&wh(this,n._parsed)}configure(){const e=this.chart.config,n=e.datasetScopeKeys(this._type),i=e.getOptionScopes(this.getDataset(),n,!0);this.options=e.createResolver(i,this.getContext()),this._parsing=this.options.parsing,this._cachedDataOpts={}}parse(e,n){const{_cachedMeta:i,_data:r}=this,{iScale:a,_stacked:s}=i,o=a.axis;let l=e===0&&n===r.length?!0:i._sorted,c=e>0&&i._parsed[e-1],d,u,_;if(this._parsing===!1)i._parsed=r,i._sorted=!0,_=r;else{Xe(r[e])?_=this.parseArrayData(i,r,e,n):Pe(r[e])?_=this.parseObjectData(i,r,e,n):_=this.parsePrimitiveData(i,r,e,n);const p=()=>u[o]===null||c&&u[o]m||u=0;--_)if(!f()){this.updateRangeFromParsed(c,e,p,l);break}}return c}getAllParsedValues(e){const n=this._cachedMeta._parsed,i=[];let r,a,s;for(r=0,a=n.length;r=0&ðis.getContext(i,r,n),m=c.resolveNamedOptions(_,p,f,u);return m.$shared&&(m.$shared=l,a[s]=Object.freeze(Mh(m,l))),m}_resolveAnimations(e,n,i){const r=this.chart,a=this._cachedDataOpts,s=`animation-${n}`,o=a[s];if(o)return o;let l;if(r.options.animation!==!1){const d=this.chart.config,u=d.datasetAnimationScopeKeys(this._type,n),_=d.getOptionScopes(this.getDataset(),u);l=d.createResolver(_,this.getContext(e,i,n))}const c=new ry(r,l&&l.animations);return l&&l._cacheable&&(a[s]=Object.freeze(c)),c}getSharedOptions(e){if(e.$shared)return this._sharedOptions||(this._sharedOptions=Object.assign({},e))}includeOptions(e,n){return!n||cc(e)||this.chart._animationsDisabled}_getSharedOptions(e,n){const i=this.resolveDataElementOptions(e,n),r=this._sharedOptions,a=this.getSharedOptions(i),s=this.includeOptions(n,a)||a!==r;return this.updateSharedOptions(a,n,i),{sharedOptions:a,includeOptions:s}}updateElement(e,n,i,r){cc(r)?Object.assign(e,i):this._resolveAnimations(n,r).update(e,i)}updateSharedOptions(e,n,i){e&&!cc(n)&&this._resolveAnimations(void 0,n).update(e,i)}_setStyle(e,n,i,r){e.active=r;const a=this.getStyle(n,r);this._resolveAnimations(n,i,r).update(e,{options:!r&&this.getSharedOptions(a)||a})}removeHoverStyle(e,n,i){this._setStyle(e,i,"active",!1)}setHoverStyle(e,n,i){this._setStyle(e,i,"active",!0)}_removeDatasetHoverStyle(){const e=this._cachedMeta.dataset;e&&this._setStyle(e,void 0,"active",!1)}_setDatasetHoverStyle(){const e=this._cachedMeta.dataset;e&&this._setStyle(e,void 0,"active",!0)}_resyncElements(e){const n=this._data,i=this._cachedMeta.data;for(const[o,l,c]of this._syncList)this[o](l,c);this._syncList=[];const r=i.length,a=n.length,s=Math.min(a,r);s&&this.parse(0,s),a>r?this._insertElements(r,a-r,e):a{for(c.length+=n,o=c.length-1;o>=s;o--)c[o]=c[o-n]};for(l(a),o=e;or-a))}return t._cache.$bar}function WP(t){const e=t.iScale,n=$P(e,t.type);let i=e._length,r,a,s,o;const l=()=>{s===32767||s===-32768||(Ja(o)&&(i=Math.min(i,Math.abs(s-o)||i)),o=s)};for(r=0,a=n.length;r0?r[t-1]:null,o=tMath.abs(o)&&(l=o,c=s),e[n.axis]=c,e._custom={barStart:l,barEnd:c,start:r,end:a,min:s,max:o}}function sy(t,e,n,i){return Xe(t)?XP(t,e,n,i):e[n.axis]=n.parse(t,i),e}function Lh(t,e,n,i){const r=t.iScale,a=t.vScale,s=r.getLabels(),o=r===a,l=[];let c,d,u,_;for(c=n,d=n+i;c=n?1:-1)}function jP(t){let e,n,i,r,a;return t.horizontal?(e=t.base>t.x,n="left",i="right"):(e=t.basel.controller.options.grouped),a=i.options.stacked,s=[],o=l=>{const c=l.controller.getParsed(n),d=c&&c[l.vScale.axis];if(Le(d)||isNaN(d))return!0};for(const l of r)if(!(n!==void 0&&o(l))&&((a===!1||s.indexOf(l.stack)===-1||a===void 0&&l.stack===void 0)&&s.push(l.stack),l.index===e))break;return s.length||s.push(void 0),s}_getStackCount(e){return this._getStacks(void 0,e).length}_getStackIndex(e,n,i){const r=this._getStacks(e,i),a=n!==void 0?r.indexOf(n):-1;return a===-1?r.length-1:a}_getRuler(){const e=this.options,n=this._cachedMeta,i=n.iScale,r=[];let a,s;for(a=0,s=n.data.length;a=0;--i)n=Math.max(n,e[i].size(this.resolveDataElementOptions(i))/2);return n>0&&n}getLabelAndValue(e){const n=this._cachedMeta,i=this.chart.data.labels||[],{xScale:r,yScale:a}=n,s=this.getParsed(e),o=r.getLabelForValue(s.x),l=a.getLabelForValue(s.y),c=s._custom;return{label:i[e]||"",value:"("+o+", "+l+(c?", "+c:"")+")"}}update(e){const n=this._cachedMeta.data;this.updateElements(n,0,n.length,e)}updateElements(e,n,i,r){const a=r==="reset",{iScale:s,vScale:o}=this._cachedMeta,{sharedOptions:l,includeOptions:c}=this._getSharedOptions(n,r),d=s.axis,u=o.axis;for(let _=n;_es(T,o,l,!0)?1:Math.max(b,b*n,v,v*n),f=(T,b,v)=>es(T,o,l,!0)?-1:Math.min(b,b*n,v,v*n),m=p(0,c,u),g=p(pt,d,_),h=f(Je,c,u),S=f(Je+pt,d,_);i=(m-h)/2,r=(g-S)/2,a=-(m+h)/2,s=-(g+S)/2}return{ratioX:i,ratioY:r,offsetX:a,offsetY:s}}class Vi extends dn{constructor(e,n){super(e,n),this.enableOptionSharing=!0,this.innerRadius=void 0,this.outerRadius=void 0,this.offsetX=void 0,this.offsetY=void 0}linkScales(){}parse(e,n){const i=this.getDataset().data,r=this._cachedMeta;if(this._parsing===!1)r._parsed=i;else{let a=l=>+i[l];if(Pe(i[e])){const{key:l="value"}=this._parsing;a=c=>+Ti(i[c],l)}let s,o;for(s=e,o=e+n;s0&&!isNaN(e)?je*(Math.abs(e)/n):0}getLabelAndValue(e){const n=this._cachedMeta,i=this.chart,r=i.data.labels||[],a=Ss(n._parsed[e],i.options.locale);return{label:r[e]||"",value:a}}getMaxBorderWidth(e){let n=0;const i=this.chart;let r,a,s,o,l;if(!e){for(r=0,a=i.data.datasets.length;re!=="spacing",_indexable:e=>e!=="spacing"&&!e.startsWith("borderDash")&&!e.startsWith("hoverBorderDash")}),ae(Vi,"overrides",{aspectRatio:1,plugins:{legend:{labels:{generateLabels(e){const n=e.data;if(n.labels.length&&n.datasets.length){const{labels:{pointStyle:i,color:r}}=e.legend.options;return n.labels.map((a,s)=>{const l=e.getDatasetMeta(0).controller.getStyle(s);return{text:a,fillStyle:l.backgroundColor,strokeStyle:l.borderColor,fontColor:r,lineWidth:l.borderWidth,pointStyle:i,hidden:!e.getDataVisibility(s),index:s}})}return[]}},onClick(e,n,i){i.chart.toggleDataVisibility(n.index),i.chart.update()}}}});class vo extends dn{initialize(){this.enableOptionSharing=!0,this.supportsDecimation=!0,super.initialize()}update(e){const n=this._cachedMeta,{dataset:i,data:r=[],_dataset:a}=n,s=this.chart._animationsDisabled;let{start:o,count:l}=YC(n,r,s);this._drawStart=o,this._drawCount=l,zC(n)&&(o=0,l=r.length),i._chart=this.chart,i._datasetIndex=this.index,i._decimated=!!a._decimated,i.points=r;const c=this.resolveDatasetElementOptions(e);this.options.showLine||(c.borderWidth=0),c.segment=this.options.segment,this.updateElement(i,void 0,{animated:!s,options:c},e),this.updateElements(r,o,l,e)}updateElements(e,n,i,r){const a=r==="reset",{iScale:s,vScale:o,_stacked:l,_dataset:c}=this._cachedMeta,{sharedOptions:d,includeOptions:u}=this._getSharedOptions(n,r),_=s.axis,p=o.axis,{spanGaps:f,segment:m}=this.options,g=Pr(f)?f:Number.POSITIVE_INFINITY,h=this.chart._animationsDisabled||a||r==="none",S=n+i,T=e.length;let b=n>0&&this.getParsed(n-1);for(let v=0;v=S){x.skip=!0;continue}const A=this.getParsed(v),D=Le(A[p]),U=x[_]=s.getPixelForValue(A[_],v),H=x[p]=a||D?o.getBasePixel():o.getPixelForValue(l?this.applyStack(o,A,l):A[p],v);x.skip=isNaN(U)||isNaN(H)||D,x.stop=v>0&&Math.abs(A[_]-b[_])>g,m&&(x.parsed=A,x.raw=c.data[v]),u&&(x.options=d||this.resolveDataElementOptions(v,O.active?"active":r)),h||this.updateElement(O,v,x,r),b=A}}getMaxOverflow(){const e=this._cachedMeta,n=e.dataset,i=n.options&&n.options.borderWidth||0,r=e.data||[];if(!r.length)return i;const a=r[0].size(this.resolveDataElementOptions(0)),s=r[r.length-1].size(this.resolveDataElementOptions(r.length-1));return Math.max(i,a,s)/2}draw(){const e=this._cachedMeta;e.dataset.updateControlPoints(this.chart.chartArea,e.iScale.axis),super.draw()}}ae(vo,"id","line"),ae(vo,"defaults",{datasetElementType:"line",dataElementType:"point",showLine:!0,spanGaps:!1}),ae(vo,"overrides",{scales:{_index_:{type:"category"},_value_:{type:"linear"}}});class Ca extends dn{constructor(e,n){super(e,n),this.innerRadius=void 0,this.outerRadius=void 0}getLabelAndValue(e){const n=this._cachedMeta,i=this.chart,r=i.data.labels||[],a=Ss(n._parsed[e].r,i.options.locale);return{label:r[e]||"",value:a}}parseObjectData(e,n,i,r){return XC.bind(this)(e,n,i,r)}update(e){const n=this._cachedMeta.data;this._updateRadius(),this.updateElements(n,0,n.length,e)}getMinMax(){const e=this._cachedMeta,n={min:Number.POSITIVE_INFINITY,max:Number.NEGATIVE_INFINITY};return e.data.forEach((i,r)=>{const a=this.getParsed(r).r;!isNaN(a)&&this.chart.getDataVisibility(r)&&(an.max&&(n.max=a))}),n}_updateRadius(){const e=this.chart,n=e.chartArea,i=e.options,r=Math.min(n.right-n.left,n.bottom-n.top),a=Math.max(r/2,0),s=Math.max(i.cutoutPercentage?a/100*i.cutoutPercentage:1,0),o=(a-s)/e.getVisibleDatasetCount();this.outerRadius=a-o*this.index,this.innerRadius=this.outerRadius-o}updateElements(e,n,i,r){const a=r==="reset",s=this.chart,l=s.options.animation,c=this._cachedMeta.rScale,d=c.xCenter,u=c.yCenter,_=c.getIndexAngle(0)-.5*Je;let p=_,f;const m=360/this.countVisibleElements();for(f=0;f{!isNaN(this.getParsed(r).r)&&this.chart.getDataVisibility(r)&&n++}),n}_computeAngle(e,n,i){return this.chart.getDataVisibility(e)?sn(this.resolveDataElementOptions(e,n).angle||i):0}}ae(Ca,"id","polarArea"),ae(Ca,"defaults",{dataElementType:"arc",animation:{animateRotate:!0,animateScale:!0},animations:{numbers:{type:"number",properties:["x","y","startAngle","endAngle","innerRadius","outerRadius"]}},indexAxis:"r",startAngle:0}),ae(Ca,"overrides",{aspectRatio:1,plugins:{legend:{labels:{generateLabels(e){const n=e.data;if(n.labels.length&&n.datasets.length){const{labels:{pointStyle:i,color:r}}=e.legend.options;return n.labels.map((a,s)=>{const l=e.getDatasetMeta(0).controller.getStyle(s);return{text:a,fillStyle:l.backgroundColor,strokeStyle:l.borderColor,fontColor:r,lineWidth:l.borderWidth,pointStyle:i,hidden:!e.getDataVisibility(s),index:s}})}return[]}},onClick(e,n,i){i.chart.toggleDataVisibility(n.index),i.chart.update()}}},scales:{r:{type:"radialLinear",angleLines:{display:!1},beginAtZero:!0,grid:{circular:!0},pointLabels:{display:!1},startAngle:0}}});class Gp extends Vi{}ae(Gp,"id","pie"),ae(Gp,"defaults",{cutout:0,rotation:0,circumference:360,radius:"100%"});class ya extends dn{getLabelAndValue(e){const n=this._cachedMeta.vScale,i=this.getParsed(e);return{label:n.getLabels()[e],value:""+n.getLabelForValue(i[n.axis])}}parseObjectData(e,n,i,r){return XC.bind(this)(e,n,i,r)}update(e){const n=this._cachedMeta,i=n.dataset,r=n.data||[],a=n.iScale.getLabels();if(i.points=r,e!=="resize"){const s=this.resolveDatasetElementOptions(e);this.options.showLine||(s.borderWidth=0);const o={_loop:!0,_fullLoop:a.length===r.length,options:s};this.updateElement(i,void 0,o,e)}this.updateElements(r,0,r.length,e)}updateElements(e,n,i,r){const a=this._cachedMeta.rScale,s=r==="reset";for(let o=n;o0&&this.getParsed(n-1);for(let b=n;b0&&Math.abs(O[p]-T[p])>h,g&&(x.parsed=O,x.raw=c.data[b]),_&&(x.options=u||this.resolveDataElementOptions(b,v.active?"active":r)),S||this.updateElement(v,b,x,r),T=O}this.updateSharedOptions(u,r,d)}getMaxOverflow(){const e=this._cachedMeta,n=e.data||[];if(!this.options.showLine){let o=0;for(let l=n.length-1;l>=0;--l)o=Math.max(o,n[l].size(this.resolveDataElementOptions(l))/2);return o>0&&o}const i=e.dataset,r=i.options&&i.options.borderWidth||0;if(!n.length)return r;const a=n[0].size(this.resolveDataElementOptions(0)),s=n[n.length-1].size(this.resolveDataElementOptions(n.length-1));return Math.max(r,a,s)/2}}ae(Ro,"id","scatter"),ae(Ro,"defaults",{datasetElementType:!1,dataElementType:"point",showLine:!1,fill:!1}),ae(Ro,"overrides",{interaction:{mode:"point"},scales:{x:{type:"linear"},y:{type:"linear"}}});var ik=Object.freeze({__proto__:null,BarController:Ra,BubbleController:To,DoughnutController:Vi,LineController:vo,PieController:Gp,PolarAreaController:Ca,RadarController:ya,ScatterController:Ro});function Di(){throw new Error("This method is not implemented: Check that a complete date adapter is provided.")}class mf{constructor(e){ae(this,"options");this.options=e||{}}static override(e){Object.assign(mf.prototype,e)}init(){}formats(){return Di()}parse(){return Di()}format(){return Di()}add(){return Di()}diff(){return Di()}startOf(){return Di()}endOf(){return Di()}}var rk={_date:mf};function ak(t,e,n,i){const{controller:r,data:a,_sorted:s}=t,o=r._cachedMeta.iScale;if(o&&e===o.axis&&e!=="r"&&s&&a.length){const l=o._reversePixels?AL:Ln;if(i){if(r._sharedOptions){const c=a[0],d=typeof c.getRange=="function"&&c.getRange(e);if(d){const u=l(a,e,n-d),_=l(a,e,n+d);return{lo:u.lo,hi:_.hi}}}}else return l(a,e,n)}return{lo:0,hi:a.length-1}}function bs(t,e,n,i,r){const a=t.getSortedVisibleDatasetMetas(),s=n[e];for(let o=0,l=a.length;o{l[s](e[n],r)&&(a.push({element:l,datasetIndex:c,index:d}),o=o||l.inRange(e.x,e.y,r))}),i&&!o?[]:a}var ck={evaluateInteractionItems:bs,modes:{index(t,e,n,i){const r=Li(e,t),a=n.axis||"x",s=n.includeInvisible||!1,o=n.intersect?uc(t,r,a,i,s):_c(t,r,a,!1,i,s),l=[];return o.length?(t.getSortedVisibleDatasetMetas().forEach(c=>{const d=o[0].index,u=c.data[d];u&&!u.skip&&l.push({element:u,datasetIndex:c.index,index:d})}),l):[]},dataset(t,e,n,i){const r=Li(e,t),a=n.axis||"xy",s=n.includeInvisible||!1;let o=n.intersect?uc(t,r,a,i,s):_c(t,r,a,!1,i,s);if(o.length>0){const l=o[0].datasetIndex,c=t.getDatasetMeta(l).data;o=[];for(let d=0;dn.pos===e)}function Uh(t,e){return t.filter(n=>oy.indexOf(n.pos)===-1&&n.box.axis===e)}function Zr(t,e){return t.sort((n,i)=>{const r=e?i:n,a=e?n:i;return r.weight===a.weight?r.index-a.index:r.weight-a.weight})}function dk(t){const e=[];let n,i,r,a,s,o;for(n=0,i=(t||[]).length;nc.box.fullSize),!0),i=Zr(Xr(e,"left"),!0),r=Zr(Xr(e,"right")),a=Zr(Xr(e,"top"),!0),s=Zr(Xr(e,"bottom")),o=Uh(e,"x"),l=Uh(e,"y");return{fullSize:n,leftAndTop:i.concat(a),rightAndBottom:r.concat(l).concat(s).concat(o),chartArea:Xr(e,"chartArea"),vertical:i.concat(r).concat(l),horizontal:a.concat(s).concat(o)}}function Bh(t,e,n,i){return Math.max(t[n],e[n])+Math.max(t[i],e[i])}function ly(t,e){t.top=Math.max(t.top,e.top),t.left=Math.max(t.left,e.left),t.bottom=Math.max(t.bottom,e.bottom),t.right=Math.max(t.right,e.right)}function mk(t,e,n,i){const{pos:r,box:a}=n,s=t.maxPadding;if(!Pe(r)){n.size&&(t[r]-=n.size);const u=i[n.stack]||{size:0,count:1};u.size=Math.max(u.size,n.horizontal?a.height:a.width),n.size=u.size/u.count,t[r]+=n.size}a.getPadding&&ly(s,a.getPadding());const o=Math.max(0,e.outerWidth-Bh(s,t,"left","right")),l=Math.max(0,e.outerHeight-Bh(s,t,"top","bottom")),c=o!==t.w,d=l!==t.h;return t.w=o,t.h=l,n.horizontal?{same:c,other:d}:{same:d,other:c}}function fk(t){const e=t.maxPadding;function n(i){const r=Math.max(e[i]-t[i],0);return t[i]+=r,r}t.y+=n("top"),t.x+=n("left"),n("right"),n("bottom")}function gk(t,e){const n=e.maxPadding;function i(r){const a={left:0,top:0,right:0,bottom:0};return r.forEach(s=>{a[s]=Math.max(e[s],n[s])}),a}return i(t?["left","right"]:["top","bottom"])}function aa(t,e,n,i){const r=[];let a,s,o,l,c,d;for(a=0,s=t.length,c=0;a{typeof m.beforeLayout=="function"&&m.beforeLayout()});const d=l.reduce((m,g)=>g.box.options&&g.box.options.display===!1?m:m+1,0)||1,u=Object.freeze({outerWidth:e,outerHeight:n,padding:r,availableWidth:a,availableHeight:s,vBoxMaxWidth:a/2/d,hBoxMaxHeight:s/2}),_=Object.assign({},r);ly(_,Ot(i));const p=Object.assign({maxPadding:_,w:a,h:s,x:r.left,y:r.top},r),f=_k(l.concat(c),u);aa(o.fullSize,p,u,f),aa(l,p,u,f),aa(c,p,u,f)&&aa(l,p,u,f),fk(p),Gh(o.leftAndTop,p,u,f),p.x+=p.w,p.y+=p.h,Gh(o.rightAndBottom,p,u,f),t.chartArea={left:p.left,top:p.top,right:p.left+p.w,bottom:p.top+p.h,height:p.h,width:p.w},Ye(o.chartArea,m=>{const g=m.box;Object.assign(g,t.chartArea),g.update(p.w,p.h,{left:0,top:0,right:0,bottom:0})})}};class cy{acquireContext(e,n){}releaseContext(e){return!1}addEventListener(e,n,i){}removeEventListener(e,n,i){}getDevicePixelRatio(){return 1}getMaximumSize(e,n,i,r){return n=Math.max(0,n||e.width),i=i||e.height,{width:n,height:Math.max(0,r?Math.floor(n/r):i)}}isAttached(e){return!0}updateConfig(e){}}class hk extends cy{acquireContext(e){return e&&e.getContext&&e.getContext("2d")||null}updateConfig(e){e.options.animation=!1}}const Co="$chartjs",Ek={touchstart:"mousedown",touchmove:"mousemove",touchend:"mouseup",pointerenter:"mouseenter",pointerdown:"mousedown",pointermove:"mousemove",pointerup:"mouseup",pointerleave:"mouseout",pointerout:"mouseout"},Yh=t=>t===null||t==="";function Sk(t,e){const n=t.style,i=t.getAttribute("height"),r=t.getAttribute("width");if(t[Co]={initial:{height:i,width:r,style:{display:n.display,height:n.height,width:n.width}}},n.display=n.display||"block",n.boxSizing=n.boxSizing||"border-box",Yh(r)){const a=Rh(t,"width");a!==void 0&&(t.width=a)}if(Yh(i))if(t.style.height==="")t.height=t.width/(e||2);else{const a=Rh(t,"height");a!==void 0&&(t.height=a)}return t}const dy=TP?{passive:!0}:!1;function bk(t,e,n){t.addEventListener(e,n,dy)}function Tk(t,e,n){t.canvas.removeEventListener(e,n,dy)}function vk(t,e){const n=Ek[t.type]||t.type,{x:i,y:r}=Li(t,e);return{type:n,chart:e,native:t,x:i!==void 0?i:null,y:r!==void 0?r:null}}function el(t,e){for(const n of t)if(n===e||n.contains(e))return!0}function Rk(t,e,n){const i=t.canvas,r=new MutationObserver(a=>{let s=!1;for(const o of a)s=s||el(o.addedNodes,i),s=s&&!el(o.removedNodes,i);s&&n()});return r.observe(document,{childList:!0,subtree:!0}),r}function Ck(t,e,n){const i=t.canvas,r=new MutationObserver(a=>{let s=!1;for(const o of a)s=s||el(o.removedNodes,i),s=s&&!el(o.addedNodes,i);s&&n()});return r.observe(document,{childList:!0,subtree:!0}),r}const ns=new Map;let zh=0;function uy(){const t=window.devicePixelRatio;t!==zh&&(zh=t,ns.forEach((e,n)=>{n.currentDevicePixelRatio!==t&&e()}))}function yk(t,e){ns.size||window.addEventListener("resize",uy),ns.set(t,e)}function Ok(t){ns.delete(t),ns.size||window.removeEventListener("resize",uy)}function Nk(t,e,n){const i=t.canvas,r=i&&pf(i);if(!r)return;const a=GC((o,l)=>{const c=r.clientWidth;n(o,l),c{const l=o[0],c=l.contentRect.width,d=l.contentRect.height;c===0&&d===0||a(c,d)});return s.observe(r),yk(t,a),s}function pc(t,e,n){n&&n.disconnect(),e==="resize"&&Ok(t)}function Ak(t,e,n){const i=t.canvas,r=GC(a=>{t.ctx!==null&&n(vk(a,t))},t);return bk(i,e,r),r}class Ik extends cy{acquireContext(e,n){const i=e&&e.getContext&&e.getContext("2d");return i&&i.canvas===e?(Sk(e,n),i):null}releaseContext(e){const n=e.canvas;if(!n[Co])return!1;const i=n[Co].initial;["height","width"].forEach(a=>{const s=i[a];Le(s)?n.removeAttribute(a):n.setAttribute(a,s)});const r=i.style||{};return Object.keys(r).forEach(a=>{n.style[a]=r[a]}),n.width=n.width,delete n[Co],!0}addEventListener(e,n,i){this.removeEventListener(e,n);const r=e.$proxies||(e.$proxies={}),s={attach:Rk,detach:Ck,resize:Nk}[n]||Ak;r[n]=s(e,n,i)}removeEventListener(e,n){const i=e.$proxies||(e.$proxies={}),r=i[n];if(!r)return;({attach:pc,detach:pc,resize:pc}[n]||Tk)(e,n,r),i[n]=void 0}getDevicePixelRatio(){return window.devicePixelRatio}getMaximumSize(e,n,i,r){return bP(e,n,i,r)}isAttached(e){const n=pf(e);return!!(n&&n.isConnected)}}function Dk(t){return!jC()||typeof OffscreenCanvas<"u"&&t instanceof OffscreenCanvas?hk:Ik}var _o;let qn=(_o=class{constructor(){ae(this,"x");ae(this,"y");ae(this,"active",!1);ae(this,"options");ae(this,"$animations")}tooltipPosition(e){const{x:n,y:i}=this.getProps(["x","y"],e);return{x:n,y:i}}hasValue(){return Pr(this.x)&&Pr(this.y)}getProps(e,n){const i=this.$animations;if(!n||!i)return this;const r={};return e.forEach(a=>{r[a]=i[a]&&i[a].active()?i[a]._to:this[a]}),r}},ae(_o,"defaults",{}),ae(_o,"defaultRoutes"),_o);function xk(t,e){const n=t.options.ticks,i=wk(t),r=Math.min(n.maxTicksLimit||i,i),a=n.major.enabled?Lk(e):[],s=a.length,o=a[0],l=a[s-1],c=[];if(s>r)return Pk(e,c,a,s/r),c;const d=Mk(a,e,r);if(s>0){let u,_;const p=s>1?Math.round((l-o)/(s-1)):null;for(Qs(e,c,d,Le(p)?0:o-p,o),u=0,_=s-1;u<_;u++)Qs(e,c,d,a[u],a[u+1]);return Qs(e,c,d,l,Le(p)?e.length:l+p),c}return Qs(e,c,d),c}function wk(t){const e=t.options.offset,n=t._tickSize(),i=t._length/n+(e?0:1),r=t._maxLength/n;return Math.floor(Math.min(i,r))}function Mk(t,e,n){const i=kk(t),r=e.length/n;if(!i)return Math.max(r,1);const a=CL(i);for(let s=0,o=a.length-1;sr)return l}return Math.max(r,1)}function Lk(t){const e=[];let n,i;for(n=0,i=t.length;nt==="left"?"right":t==="right"?"left":t,Hh=(t,e,n)=>e==="top"||e==="left"?t[e]+n:t[e]-n,Vh=(t,e)=>Math.min(e||t,t);function qh(t,e){const n=[],i=t.length/e,r=t.length;let a=0;for(;as+o)))return l}function Bk(t,e){Ye(t,n=>{const i=n.gc,r=i.length/2;let a;if(r>e){for(a=0;ai?i:n,i=r&&n>i?n:i,{min:qt(n,qt(i,n)),max:qt(i,qt(n,i))}}getPadding(){return{left:this.paddingLeft||0,top:this.paddingTop||0,right:this.paddingRight||0,bottom:this.paddingBottom||0}}getTicks(){return this.ticks}getLabels(){const e=this.chart.data;return this.options.labels||(this.isHorizontal()?e.xLabels:e.yLabels)||e.labels||[]}getLabelItems(e=this.chart.chartArea){return this._labelItems||(this._labelItems=this._computeLabelItems(e))}beforeLayout(){this._cache={},this._dataLimitsCached=!1}beforeUpdate(){qe(this.options.beforeUpdate,[this])}update(e,n,i){const{beginAtZero:r,grace:a,ticks:s}=this.options,o=s.sampleSize;this.beforeUpdate(),this.maxWidth=e,this.maxHeight=n,this._margins=i=Object.assign({left:0,right:0,top:0,bottom:0},i),this.ticks=null,this._labelSizes=null,this._gridLineItems=null,this._labelItems=null,this.beforeSetDimensions(),this.setDimensions(),this.afterSetDimensions(),this._maxLength=this.isHorizontal()?this.width+i.left+i.right:this.height+i.top+i.bottom,this._dataLimitsCached||(this.beforeDataLimits(),this.determineDataLimits(),this.afterDataLimits(),this._range=jL(this,a,r),this._dataLimitsCached=!0),this.beforeBuildTicks(),this.ticks=this.buildTicks()||[],this.afterBuildTicks();const l=o=a||i<=1||!this.isHorizontal()){this.labelRotation=r;return}const d=this._getLabelSizes(),u=d.widest.width,_=d.highest.height,p=vt(this.chart.width-u,0,this.maxWidth);o=e.offset?this.maxWidth/i:p/(i-1),u+6>o&&(o=p/(i-(e.offset?.5:1)),l=this.maxHeight-jr(e.grid)-n.padding-$h(e.title,this.chart.options.font),c=Math.sqrt(u*u+_*_),s=af(Math.min(Math.asin(vt((d.highest.height+6)/o,-1,1)),Math.asin(vt(l/c,-1,1))-Math.asin(vt(_/c,-1,1)))),s=Math.max(r,Math.min(a,s))),this.labelRotation=s}afterCalculateLabelRotation(){qe(this.options.afterCalculateLabelRotation,[this])}afterAutoSkip(){}beforeFit(){qe(this.options.beforeFit,[this])}fit(){const e={width:0,height:0},{chart:n,options:{ticks:i,title:r,grid:a}}=this,s=this._isVisible(),o=this.isHorizontal();if(s){const l=$h(r,n.options.font);if(o?(e.width=this.maxWidth,e.height=jr(a)+l):(e.height=this.maxHeight,e.width=jr(a)+l),i.display&&this.ticks.length){const{first:c,last:d,widest:u,highest:_}=this._getLabelSizes(),p=i.padding*2,f=sn(this.labelRotation),m=Math.cos(f),g=Math.sin(f);if(o){const h=i.mirror?0:g*u.width+m*_.height;e.height=Math.min(this.maxHeight,e.height+h+p)}else{const h=i.mirror?0:m*u.width+g*_.height;e.width=Math.min(this.maxWidth,e.width+h+p)}this._calculatePadding(c,d,g,m)}}this._handleMargins(),o?(this.width=this._length=n.width-this._margins.left-this._margins.right,this.height=e.height):(this.width=e.width,this.height=this._length=n.height-this._margins.top-this._margins.bottom)}_calculatePadding(e,n,i,r){const{ticks:{align:a,padding:s},position:o}=this.options,l=this.labelRotation!==0,c=o!=="top"&&this.axis==="x";if(this.isHorizontal()){const d=this.getPixelForTick(0)-this.left,u=this.right-this.getPixelForTick(this.ticks.length-1);let _=0,p=0;l?c?(_=r*e.width,p=i*n.height):(_=i*e.height,p=r*n.width):a==="start"?p=n.width:a==="end"?_=e.width:a!=="inner"&&(_=e.width/2,p=n.width/2),this.paddingLeft=Math.max((_-d+s)*this.width/(this.width-d),0),this.paddingRight=Math.max((p-u+s)*this.width/(this.width-u),0)}else{let d=n.height/2,u=e.height/2;a==="start"?(d=0,u=e.height):a==="end"&&(d=n.height,u=0),this.paddingTop=d+s,this.paddingBottom=u+s}}_handleMargins(){this._margins&&(this._margins.left=Math.max(this.paddingLeft,this._margins.left),this._margins.top=Math.max(this.paddingTop,this._margins.top),this._margins.right=Math.max(this.paddingRight,this._margins.right),this._margins.bottom=Math.max(this.paddingBottom,this._margins.bottom))}afterFit(){qe(this.options.afterFit,[this])}isHorizontal(){const{axis:e,position:n}=this.options;return n==="top"||n==="bottom"||e==="x"}isFullSize(){return this.options.fullSize}_convertTicksToLabels(e){this.beforeTickToLabelConversion(),this.generateTickLabels(e);let n,i;for(n=0,i=e.length;n({width:s[D]||0,height:o[D]||0});return{first:A(0),last:A(n-1),widest:A(O),highest:A(x),widths:s,heights:o}}getLabelForValue(e){return e}getPixelForValue(e,n){return NaN}getValueForPixel(e){}getPixelForTick(e){const n=this.ticks;return e<0||e>n.length-1?null:this.getPixelForValue(n[e].value)}getPixelForDecimal(e){this._reversePixels&&(e=1-e);const n=this._startPixel+e*this._length;return NL(this._alignToPixels?Ii(this.chart,n,0):n)}getDecimalForPixel(e){const n=(e-this._startPixel)/this._length;return this._reversePixels?1-n:n}getBasePixel(){return this.getPixelForValue(this.getBaseValue())}getBaseValue(){const{min:e,max:n}=this;return e<0&&n<0?n:e>0&&n>0?e:0}getContext(e){const n=this.ticks||[];if(e>=0&&eo*r?o/i:l/r:l*r0}_computeGridLineItems(e){const n=this.axis,i=this.chart,r=this.options,{grid:a,position:s,border:o}=r,l=a.offset,c=this.isHorizontal(),u=this.ticks.length+(l?1:0),_=jr(a),p=[],f=o.setContext(this.getContext()),m=f.display?f.width:0,g=m/2,h=function(Z){return Ii(i,Z,m)};let S,T,b,v,O,x,A,D,U,H,N,G;if(s==="top")S=h(this.bottom),x=this.bottom-_,D=S-g,H=h(e.top)+g,G=e.bottom;else if(s==="bottom")S=h(this.top),H=e.top,G=h(e.bottom)-g,x=S+g,D=this.top+_;else if(s==="left")S=h(this.right),O=this.right-_,A=S-g,U=h(e.left)+g,N=e.right;else if(s==="right")S=h(this.left),U=e.left,N=h(e.right)-g,O=S+g,A=this.left+_;else if(n==="x"){if(s==="center")S=h((e.top+e.bottom)/2+.5);else if(Pe(s)){const Z=Object.keys(s)[0],M=s[Z];S=h(this.chart.scales[Z].getPixelForValue(M))}H=e.top,G=e.bottom,x=S+g,D=x+_}else if(n==="y"){if(s==="center")S=h((e.left+e.right)/2);else if(Pe(s)){const Z=Object.keys(s)[0],M=s[Z];S=h(this.chart.scales[Z].getPixelForValue(M))}O=S-g,A=O-_,U=e.left,N=e.right}const R=xe(r.ticks.maxTicksLimit,u),Y=Math.max(1,Math.ceil(u/R));for(T=0;Ta.value===e);return r>=0?n.setContext(this.getContext(r)).lineWidth:0}drawGrid(e){const n=this.options.grid,i=this.ctx,r=this._gridLineItems||(this._gridLineItems=this._computeGridLineItems(e));let a,s;const o=(l,c,d)=>{!d.width||!d.color||(i.save(),i.lineWidth=d.width,i.strokeStyle=d.color,i.setLineDash(d.borderDash||[]),i.lineDashOffset=d.borderDashOffset,i.beginPath(),i.moveTo(l.x,l.y),i.lineTo(c.x,c.y),i.stroke(),i.restore())};if(n.display)for(a=0,s=r.length;a{this.draw(a)}}]:[{z:i,draw:a=>{this.drawBackground(),this.drawGrid(a),this.drawTitle()}},{z:r,draw:()=>{this.drawBorder()}},{z:n,draw:a=>{this.drawLabels(a)}}]}getMatchingVisibleMetas(e){const n=this.chart.getSortedVisibleDatasetMetas(),i=this.axis+"AxisID",r=[];let a,s;for(a=0,s=n.length;a{const i=n.split("."),r=i.pop(),a=[t].concat(i).join("."),s=e[n].split("."),o=s.pop(),l=s.join(".");nt.route(a,r,l,o)})}function $k(t){return"id"in t&&"defaults"in t}class Wk{constructor(){this.controllers=new Xs(dn,"datasets",!0),this.elements=new Xs(qn,"elements"),this.plugins=new Xs(Object,"plugins"),this.scales=new Xs(ir,"scales"),this._typedRegistries=[this.controllers,this.scales,this.elements]}add(...e){this._each("register",e)}remove(...e){this._each("unregister",e)}addControllers(...e){this._each("register",e,this.controllers)}addElements(...e){this._each("register",e,this.elements)}addPlugins(...e){this._each("register",e,this.plugins)}addScales(...e){this._each("register",e,this.scales)}getController(e){return this._get(e,this.controllers,"controller")}getElement(e){return this._get(e,this.elements,"element")}getPlugin(e){return this._get(e,this.plugins,"plugin")}getScale(e){return this._get(e,this.scales,"scale")}removeControllers(...e){this._each("unregister",e,this.controllers)}removeElements(...e){this._each("unregister",e,this.elements)}removePlugins(...e){this._each("unregister",e,this.plugins)}removeScales(...e){this._each("unregister",e,this.scales)}_each(e,n,i){[...n].forEach(r=>{const a=i||this._getRegistryForType(r);i||a.isForType(r)||a===this.plugins&&r.id?this._exec(e,a,r):Ye(r,s=>{const o=i||this._getRegistryForType(s);this._exec(e,o,s)})})}_exec(e,n,i){const r=rf(e);qe(i["before"+r],[],i),n[e](i),qe(i["after"+r],[],i)}_getRegistryForType(e){for(let n=0;na.filter(o=>!s.some(l=>o.plugin.id===l.plugin.id));this._notify(r(n,i),e,"stop"),this._notify(r(i,n),e,"start")}}function Qk(t){const e={},n=[],i=Object.keys(mn.plugins.items);for(let a=0;a1&&Wh(t[0].toLowerCase());if(i)return i}throw new Error(`Cannot determine type of '${t}' axis. Please provide 'axis' or 'position' option.`)}function Kh(t,e,n){if(n[e+"AxisID"]===t)return{axis:e}}function n0(t,e){if(e.data&&e.data.datasets){const n=e.data.datasets.filter(i=>i.xAxisID===t||i.yAxisID===t);if(n.length)return Kh(t,"x",n[0])||Kh(t,"y",n[0])}return{}}function i0(t,e){const n=Ji[t.type]||{scales:{}},i=e.scales||{},r=Yp(t.type,e),a=Object.create(null);return Object.keys(i).forEach(s=>{const o=i[s];if(!Pe(o))return console.error(`Invalid scale configuration for scale: ${s}`);if(o._proxy)return console.warn(`Ignoring resolver passed as options for scale: ${s}`);const l=zp(s,o,n0(s,t),nt.scales[o.type]),c=e0(l,r),d=n.scales||{};a[s]=Sa(Object.create(null),[{axis:l},o,d[l],d[c]])}),t.data.datasets.forEach(s=>{const o=s.type||t.type,l=s.indexAxis||Yp(o,e),d=(Ji[o]||{}).scales||{};Object.keys(d).forEach(u=>{const _=Jk(u,l),p=s[_+"AxisID"]||_;a[p]=a[p]||Object.create(null),Sa(a[p],[{axis:_},i[p],d[u]])})}),Object.keys(a).forEach(s=>{const o=a[s];Sa(o,[nt.scales[o.type],nt.scale])}),a}function _y(t){const e=t.options||(t.options={});e.plugins=xe(e.plugins,{}),e.scales=i0(t,e)}function py(t){return t=t||{},t.datasets=t.datasets||[],t.labels=t.labels||[],t}function r0(t){return t=t||{},t.data=py(t.data),_y(t),t}const Qh=new Map,my=new Set;function Zs(t,e){let n=Qh.get(t);return n||(n=e(),Qh.set(t,n),my.add(n)),n}const Jr=(t,e,n)=>{const i=Ti(e,n);i!==void 0&&t.add(i)};class a0{constructor(e){this._config=r0(e),this._scopeCache=new Map,this._resolverCache=new Map}get platform(){return this._config.platform}get type(){return this._config.type}set type(e){this._config.type=e}get data(){return this._config.data}set data(e){this._config.data=py(e)}get options(){return this._config.options}set options(e){this._config.options=e}get plugins(){return this._config.plugins}update(){const e=this._config;this.clearCache(),_y(e)}clearCache(){this._scopeCache.clear(),this._resolverCache.clear()}datasetScopeKeys(e){return Zs(e,()=>[[`datasets.${e}`,""]])}datasetAnimationScopeKeys(e,n){return Zs(`${e}.transition.${n}`,()=>[[`datasets.${e}.transitions.${n}`,`transitions.${n}`],[`datasets.${e}`,""]])}datasetElementScopeKeys(e,n){return Zs(`${e}-${n}`,()=>[[`datasets.${e}.elements.${n}`,`datasets.${e}`,`elements.${n}`,""]])}pluginScopeKeys(e){const n=e.id,i=this.type;return Zs(`${i}-plugin-${n}`,()=>[[`plugins.${n}`,...e.additionalOptionScopes||[]]])}_cachedScopes(e,n){const i=this._scopeCache;let r=i.get(e);return(!r||n)&&(r=new Map,i.set(e,r)),r}getOptionScopes(e,n,i){const{options:r,type:a}=this,s=this._cachedScopes(e,i),o=s.get(n);if(o)return o;const l=new Set;n.forEach(d=>{e&&(l.add(e),d.forEach(u=>Jr(l,e,u))),d.forEach(u=>Jr(l,r,u)),d.forEach(u=>Jr(l,Ji[a]||{},u)),d.forEach(u=>Jr(l,nt,u)),d.forEach(u=>Jr(l,Up,u))});const c=Array.from(l);return c.length===0&&c.push(Object.create(null)),my.has(n)&&s.set(n,c),c}chartOptionScopes(){const{options:e,type:n}=this;return[e,Ji[n]||{},nt.datasets[n]||{},{type:n},nt,Up]}resolveNamedOptions(e,n,i,r=[""]){const a={$shared:!0},{resolver:s,subPrefixes:o}=Xh(this._resolverCache,e,r);let l=s;if(o0(s,n)){a.$shared=!1,i=vi(i)?i():i;const c=this.createResolver(e,i,o);l=kr(s,i,c)}for(const c of n)a[c]=l[c];return a}createResolver(e,n,i=[""],r){const{resolver:a}=Xh(this._resolverCache,e,i);return Pe(n)?kr(a,n,void 0,r):a}}function Xh(t,e,n){let i=t.get(e);i||(i=new Map,t.set(e,i));const r=n.join();let a=i.get(r);return a||(a={resolver:df(e,n),subPrefixes:n.filter(o=>!o.toLowerCase().includes("hover"))},i.set(r,a)),a}const s0=t=>Pe(t)&&Object.getOwnPropertyNames(t).reduce((e,n)=>e||vi(t[n]),!1);function o0(t,e){const{isScriptable:n,isIndexable:i}=$C(t);for(const r of e){const a=n(r),s=i(r),o=(s||a)&&t[r];if(a&&(vi(o)||s0(o))||s&&Xe(o))return!0}return!1}var l0="4.4.0";const c0=["top","bottom","left","right","chartArea"];function Zh(t,e){return t==="top"||t==="bottom"||c0.indexOf(t)===-1&&e==="x"}function jh(t,e){return function(n,i){return n[t]===i[t]?n[e]-i[e]:n[t]-i[t]}}function Jh(t){const e=t.chart,n=e.options.animation;e.notifyPlugins("afterRender"),qe(n&&n.onComplete,[t],e)}function d0(t){const e=t.chart,n=e.options.animation;qe(n&&n.onProgress,[t],e)}function fy(t){return jC()&&typeof t=="string"?t=document.getElementById(t):t&&t.length&&(t=t[0]),t&&t.canvas&&(t=t.canvas),t}const yo={},eE=t=>{const e=fy(t);return Object.values(yo).filter(n=>n.canvas===e).pop()};function u0(t,e,n){const i=Object.keys(t);for(const r of i){const a=+r;if(a>=e){const s=t[r];delete t[r],(n>0||a>e)&&(t[a+n]=s)}}}function _0(t,e,n,i){return!n||t.type==="mouseout"?null:i?e:t}function js(t,e,n){return t.options.clip?t[n]:e[n]}function p0(t,e){const{xScale:n,yScale:i}=t;return n&&i?{left:js(n,e,"left"),right:js(n,e,"right"),top:js(i,e,"top"),bottom:js(i,e,"bottom")}:e}var Xn;let tr=(Xn=class{static register(...e){mn.add(...e),tE()}static unregister(...e){mn.remove(...e),tE()}constructor(e,n){const i=this.config=new a0(n),r=fy(e),a=eE(r);if(a)throw new Error("Canvas is already in use. Chart with ID '"+a.id+"' must be destroyed before the canvas with ID '"+a.canvas.id+"' can be reused.");const s=i.createResolver(i.chartOptionScopes(),this.getContext());this.platform=new(i.platform||Dk(r)),this.platform.updateConfig(i);const o=this.platform.acquireContext(r,s.aspectRatio),l=o&&o.canvas,c=l&&l.height,d=l&&l.width;if(this.id=fL(),this.ctx=o,this.canvas=l,this.width=d,this.height=c,this._options=s,this._aspectRatio=this.aspectRatio,this._layers=[],this._metasets=[],this._stacks=void 0,this.boxes=[],this.currentDevicePixelRatio=void 0,this.chartArea=void 0,this._active=[],this._lastEvent=void 0,this._listeners={},this._responsiveListeners=void 0,this._sortedMetasets=[],this.scales={},this._plugins=new Kk,this.$proxies={},this._hiddenIndices={},this.attached=!1,this._animationsDisabled=void 0,this.$context=void 0,this._doResize=xL(u=>this.update(u),s.resizeDelay||0),this._dataChanges=[],yo[this.id]=this,!o||!l){console.error("Failed to create chart: can't acquire context from the given item");return}An.listen(this,"complete",Jh),An.listen(this,"progress",d0),this._initialize(),this.attached&&this.update()}get aspectRatio(){const{options:{aspectRatio:e,maintainAspectRatio:n},width:i,height:r,_aspectRatio:a}=this;return Le(e)?n&&a?a:r?i/r:null:e}get data(){return this.config.data}set data(e){this.config.data=e}get options(){return this._options}set options(e){this.config.options=e}get registry(){return mn}_initialize(){return this.notifyPlugins("beforeInit"),this.options.responsive?this.resize():vh(this,this.options.devicePixelRatio),this.bindEvents(),this.notifyPlugins("afterInit"),this}clear(){return Sh(this.canvas,this.ctx),this}stop(){return An.stop(this),this}resize(e,n){An.running(this)?this._resizeBeforeDraw={width:e,height:n}:this._resize(e,n)}_resize(e,n){const i=this.options,r=this.canvas,a=i.maintainAspectRatio&&this.aspectRatio,s=this.platform.getMaximumSize(r,e,n,a),o=i.devicePixelRatio||this.platform.getDevicePixelRatio(),l=this.width?"resize":"attach";this.width=s.width,this.height=s.height,this._aspectRatio=this.aspectRatio,vh(this,o,!0)&&(this.notifyPlugins("resize",{size:s}),qe(i.onResize,[this,s],this),this.attached&&this._doResize(l)&&this.render())}ensureScalesHaveIDs(){const n=this.options.scales||{};Ye(n,(i,r)=>{i.id=r})}buildOrUpdateScales(){const e=this.options,n=e.scales,i=this.scales,r=Object.keys(i).reduce((s,o)=>(s[o]=!1,s),{});let a=[];n&&(a=a.concat(Object.keys(n).map(s=>{const o=n[s],l=zp(s,o),c=l==="r",d=l==="x";return{options:o,dposition:c?"chartArea":d?"bottom":"left",dtype:c?"radialLinear":d?"category":"linear"}}))),Ye(a,s=>{const o=s.options,l=o.id,c=zp(l,o),d=xe(o.type,s.dtype);(o.position===void 0||Zh(o.position,c)!==Zh(s.dposition))&&(o.position=s.dposition),r[l]=!0;let u=null;if(l in i&&i[l].type===d)u=i[l];else{const _=mn.getScale(d);u=new _({id:l,type:d,ctx:this.ctx,chart:this}),i[u.id]=u}u.init(o,e)}),Ye(r,(s,o)=>{s||delete i[o]}),Ye(i,s=>{xt.configure(this,s,s.options),xt.addBox(this,s)})}_updateMetasets(){const e=this._metasets,n=this.data.datasets.length,i=e.length;if(e.sort((r,a)=>r.index-a.index),i>n){for(let r=n;rn.length&&delete this._stacks,e.forEach((i,r)=>{n.filter(a=>a===i._dataset).length===0&&this._destroyDatasetMeta(r)})}buildOrUpdateControllers(){const e=[],n=this.data.datasets;let i,r;for(this._removeUnreferencedMetasets(),i=0,r=n.length;i{this.getDatasetMeta(n).controller.reset()},this)}reset(){this._resetElements(),this.notifyPlugins("reset")}update(e){const n=this.config;n.update();const i=this._options=n.createResolver(n.chartOptionScopes(),this.getContext()),r=this._animationsDisabled=!i.animation;if(this._updateScales(),this._checkEventBindings(),this._updateHiddenIndices(),this._plugins.invalidate(),this.notifyPlugins("beforeUpdate",{mode:e,cancelable:!0})===!1)return;const a=this.buildOrUpdateControllers();this.notifyPlugins("beforeElementsUpdate");let s=0;for(let c=0,d=this.data.datasets.length;c{c.reset()}),this._updateDatasets(e),this.notifyPlugins("afterUpdate",{mode:e}),this._layers.sort(jh("z","_idx"));const{_active:o,_lastEvent:l}=this;l?this._eventHandler(l,!0):o.length&&this._updateHoverStyles(o,o,!0),this.render()}_updateScales(){Ye(this.scales,e=>{xt.removeBox(this,e)}),this.ensureScalesHaveIDs(),this.buildOrUpdateScales()}_checkEventBindings(){const e=this.options,n=new Set(Object.keys(this._listeners)),i=new Set(e.events);(!dh(n,i)||!!this._responsiveListeners!==e.responsive)&&(this.unbindEvents(),this.bindEvents())}_updateHiddenIndices(){const{_hiddenIndices:e}=this,n=this._getUniformDataChanges()||[];for(const{method:i,start:r,count:a}of n){const s=i==="_removeElements"?-a:a;u0(e,r,s)}}_getUniformDataChanges(){const e=this._dataChanges;if(!e||!e.length)return;this._dataChanges=[];const n=this.data.datasets.length,i=a=>new Set(e.filter(s=>s[0]===a).map((s,o)=>o+","+s.splice(1).join(","))),r=i(0);for(let a=1;aa.split(",")).map(a=>({method:a[1],start:+a[2],count:+a[3]}))}_updateLayout(e){if(this.notifyPlugins("beforeLayout",{cancelable:!0})===!1)return;xt.update(this,this.width,this.height,e);const n=this.chartArea,i=n.width<=0||n.height<=0;this._layers=[],Ye(this.boxes,r=>{i&&r.position==="chartArea"||(r.configure&&r.configure(),this._layers.push(...r._layers()))},this),this._layers.forEach((r,a)=>{r._idx=a}),this.notifyPlugins("afterLayout")}_updateDatasets(e){if(this.notifyPlugins("beforeDatasetsUpdate",{mode:e,cancelable:!0})!==!1){for(let n=0,i=this.data.datasets.length;n=0;--n)this._drawDataset(e[n]);this.notifyPlugins("afterDatasetsDraw")}_drawDataset(e){const n=this.ctx,i=e._clip,r=!i.disabled,a=p0(e,this.chartArea),s={meta:e,index:e.index,cancelable:!0};this.notifyPlugins("beforeDatasetDraw",s)!==!1&&(r&&Ll(n,{left:i.left===!1?0:a.left-i.left,right:i.right===!1?this.width:a.right+i.right,top:i.top===!1?0:a.top-i.top,bottom:i.bottom===!1?this.height:a.bottom+i.bottom}),e.controller.draw(),r&&Pl(n),s.cancelable=!1,this.notifyPlugins("afterDatasetDraw",s))}isPointInArea(e){return Pn(e,this.chartArea,this._minPadding)}getElementsAtEventForMode(e,n,i,r){const a=ck.modes[n];return typeof a=="function"?a(this,e,i,r):[]}getDatasetMeta(e){const n=this.data.datasets[e],i=this._metasets;let r=i.filter(a=>a&&a._dataset===n).pop();return r||(r={type:null,data:[],dataset:null,controller:null,hidden:null,xAxisID:null,yAxisID:null,order:n&&n.order||0,index:e,_dataset:n,_parsed:[],_sorted:!1},i.push(r)),r}getContext(){return this.$context||(this.$context=Ri(null,{chart:this,type:"chart"}))}getVisibleDatasetCount(){return this.getSortedVisibleDatasetMetas().length}isDatasetVisible(e){const n=this.data.datasets[e];if(!n)return!1;const i=this.getDatasetMeta(e);return typeof i.hidden=="boolean"?!i.hidden:!n.hidden}setDatasetVisibility(e,n){const i=this.getDatasetMeta(e);i.hidden=!n}toggleDataVisibility(e){this._hiddenIndices[e]=!this._hiddenIndices[e]}getDataVisibility(e){return!this._hiddenIndices[e]}_updateVisibility(e,n,i){const r=i?"show":"hide",a=this.getDatasetMeta(e),s=a.controller._resolveAnimations(void 0,r);Ja(n)?(a.data[n].hidden=!i,this.update()):(this.setDatasetVisibility(e,i),s.update(a,{visible:i}),this.update(o=>o.datasetIndex===e?r:void 0))}hide(e,n){this._updateVisibility(e,n,!1)}show(e,n){this._updateVisibility(e,n,!0)}_destroyDatasetMeta(e){const n=this._metasets[e];n&&n.controller&&n.controller._destroy(),delete this._metasets[e]}_stop(){let e,n;for(this.stop(),An.remove(this),e=0,n=this.data.datasets.length;e{n.addEventListener(this,a,s),e[a]=s},r=(a,s,o)=>{a.offsetX=s,a.offsetY=o,this._eventHandler(a)};Ye(this.options.events,a=>i(a,r))}bindResponsiveEvents(){this._responsiveListeners||(this._responsiveListeners={});const e=this._responsiveListeners,n=this.platform,i=(l,c)=>{n.addEventListener(this,l,c),e[l]=c},r=(l,c)=>{e[l]&&(n.removeEventListener(this,l,c),delete e[l])},a=(l,c)=>{this.canvas&&this.resize(l,c)};let s;const o=()=>{r("attach",o),this.attached=!0,this.resize(),i("resize",a),i("detach",s)};s=()=>{this.attached=!1,r("resize",a),this._stop(),this._resize(0,0),i("attach",o)},n.isAttached(this.canvas)?o():s()}unbindEvents(){Ye(this._listeners,(e,n)=>{this.platform.removeEventListener(this,n,e)}),this._listeners={},Ye(this._responsiveListeners,(e,n)=>{this.platform.removeEventListener(this,n,e)}),this._responsiveListeners=void 0}updateHoverStyle(e,n,i){const r=i?"set":"remove";let a,s,o,l;for(n==="dataset"&&(a=this.getDatasetMeta(e[0].datasetIndex),a.controller["_"+r+"DatasetHoverStyle"]()),o=0,l=e.length;o{const o=this.getDatasetMeta(a);if(!o)throw new Error("No dataset found at index "+a);return{datasetIndex:a,element:o.data[s],index:s}});!Qo(i,n)&&(this._active=i,this._lastEvent=null,this._updateHoverStyles(i,n))}notifyPlugins(e,n,i){return this._plugins.notify(this,e,n,i)}isPluginEnabled(e){return this._plugins._cache.filter(n=>n.plugin.id===e).length===1}_updateHoverStyles(e,n,i){const r=this.options.hover,a=(l,c)=>l.filter(d=>!c.some(u=>d.datasetIndex===u.datasetIndex&&d.index===u.index)),s=a(n,e),o=i?e:a(e,n);s.length&&this.updateHoverStyle(s,r.mode,!1),o.length&&r.mode&&this.updateHoverStyle(o,r.mode,!0)}_eventHandler(e,n){const i={event:e,replay:n,cancelable:!0,inChartArea:this.isPointInArea(e)},r=s=>(s.options.events||this.options.events).includes(e.native.type);if(this.notifyPlugins("beforeEvent",i,r)===!1)return;const a=this._handleEvent(e,n,i.inChartArea);return i.cancelable=!1,this.notifyPlugins("afterEvent",i,r),(a||i.changed)&&this.render(),this}_handleEvent(e,n,i){const{_active:r=[],options:a}=this,s=n,o=this._getActiveElements(e,r,i,s),l=TL(e),c=_0(e,this._lastEvent,i,l);i&&(this._lastEvent=null,qe(a.onHover,[e,o,this],this),l&&qe(a.onClick,[e,o,this],this));const d=!Qo(o,r);return(d||n)&&(this._active=o,this._updateHoverStyles(o,r,n)),this._lastEvent=c,d}_getActiveElements(e,n,i,r){if(e.type==="mouseout")return[];if(!i)return n;const a=this.options.hover;return this.getElementsAtEventForMode(e,a.mode,a,r)}},ae(Xn,"defaults",nt),ae(Xn,"instances",yo),ae(Xn,"overrides",Ji),ae(Xn,"registry",mn),ae(Xn,"version",l0),ae(Xn,"getChart",eE),Xn);function tE(){return Ye(tr.instances,t=>t._plugins.invalidate())}function m0(t,e,n){const{startAngle:i,pixelMargin:r,x:a,y:s,outerRadius:o,innerRadius:l}=e;let c=r/o;t.beginPath(),t.arc(a,s,o,i-c,n+c),l>r?(c=r/l,t.arc(a,s,l,n+c,i-c,!0)):t.arc(a,s,r,n+pt,i-pt),t.closePath(),t.clip()}function f0(t){return cf(t,["outerStart","outerEnd","innerStart","innerEnd"])}function g0(t,e,n,i){const r=f0(t.options.borderRadius),a=(n-e)/2,s=Math.min(a,i*e/2),o=l=>{const c=(n-Math.min(a,l))*i/2;return vt(l,0,Math.min(a,c))};return{outerStart:o(r.outerStart),outerEnd:o(r.outerEnd),innerStart:vt(r.innerStart,0,s),innerEnd:vt(r.innerEnd,0,s)}}function cr(t,e,n,i){return{x:n+t*Math.cos(e),y:i+t*Math.sin(e)}}function tl(t,e,n,i,r,a){const{x:s,y:o,startAngle:l,pixelMargin:c,innerRadius:d}=e,u=Math.max(e.outerRadius+i+n-c,0),_=d>0?d+i+n+c:0;let p=0;const f=r-l;if(i){const Y=d>0?d-i:0,Z=u>0?u-i:0,M=(Y+Z)/2,K=M!==0?f*M/(M+i):f;p=(f-K)/2}const m=Math.max(.001,f*u-n/Je)/u,g=(f-m)/2,h=l+g+p,S=r-g-p,{outerStart:T,outerEnd:b,innerStart:v,innerEnd:O}=g0(e,_,u,S-h),x=u-T,A=u-b,D=h+T/x,U=S-b/A,H=_+v,N=_+O,G=h+v/H,R=S-O/N;if(t.beginPath(),a){const Y=(D+U)/2;if(t.arc(s,o,u,D,Y),t.arc(s,o,u,Y,U),b>0){const W=cr(A,U,s,o);t.arc(W.x,W.y,b,U,S+pt)}const Z=cr(N,S,s,o);if(t.lineTo(Z.x,Z.y),O>0){const W=cr(N,R,s,o);t.arc(W.x,W.y,O,S+pt,R+Math.PI)}const M=(S-O/_+(h+v/_))/2;if(t.arc(s,o,_,S-O/_,M,!0),t.arc(s,o,_,M,h+v/_,!0),v>0){const W=cr(H,G,s,o);t.arc(W.x,W.y,v,G+Math.PI,h-pt)}const K=cr(x,h,s,o);if(t.lineTo(K.x,K.y),T>0){const W=cr(x,D,s,o);t.arc(W.x,W.y,T,h-pt,D)}}else{t.moveTo(s,o);const Y=Math.cos(D)*u+s,Z=Math.sin(D)*u+o;t.lineTo(Y,Z);const M=Math.cos(U)*u+s,K=Math.sin(U)*u+o;t.lineTo(M,K)}t.closePath()}function h0(t,e,n,i,r){const{fullCircles:a,startAngle:s,circumference:o}=e;let l=e.endAngle;if(a){tl(t,e,n,i,l,r);for(let c=0;c=je||es(s,l,c),g=Mn(o,d+p,u+p);return m&&g}getCenterPoint(n){const{x:i,y:r,startAngle:a,endAngle:s,innerRadius:o,outerRadius:l}=this.getProps(["x","y","startAngle","endAngle","innerRadius","outerRadius"],n),{offset:c,spacing:d}=this.options,u=(a+s)/2,_=(o+l+d+c)/2;return{x:i+Math.cos(u)*_,y:r+Math.sin(u)*_}}tooltipPosition(n){return this.getCenterPoint(n)}draw(n){const{options:i,circumference:r}=this,a=(i.offset||0)/4,s=(i.spacing||0)/2,o=i.circular;if(this.pixelMargin=i.borderAlign==="inner"?.33:0,this.fullCircles=r>je?Math.floor(r/je):0,r===0||this.innerRadius<0||this.outerRadius<0)return;n.save();const l=(this.startAngle+this.endAngle)/2;n.translate(Math.cos(l)*a,Math.sin(l)*a);const c=1-Math.sin(Math.min(Je,r||0)),d=a*c;n.fillStyle=i.backgroundColor,n.strokeStyle=i.borderColor,h0(n,this,d,s,o),E0(n,this,d,s,o),n.restore()}}ae(br,"id","arc"),ae(br,"defaults",{borderAlign:"center",borderColor:"#fff",borderDash:[],borderDashOffset:0,borderJoinStyle:void 0,borderRadius:0,borderWidth:2,offset:0,spacing:0,angle:void 0,circular:!0}),ae(br,"defaultRoutes",{backgroundColor:"backgroundColor"}),ae(br,"descriptors",{_scriptable:!0,_indexable:n=>n!=="borderDash"});function gy(t,e,n=e){t.lineCap=xe(n.borderCapStyle,e.borderCapStyle),t.setLineDash(xe(n.borderDash,e.borderDash)),t.lineDashOffset=xe(n.borderDashOffset,e.borderDashOffset),t.lineJoin=xe(n.borderJoinStyle,e.borderJoinStyle),t.lineWidth=xe(n.borderWidth,e.borderWidth),t.strokeStyle=xe(n.borderColor,e.borderColor)}function S0(t,e,n){t.lineTo(n.x,n.y)}function b0(t){return t.stepped?HL:t.tension||t.cubicInterpolationMode==="monotone"?VL:S0}function hy(t,e,n={}){const i=t.length,{start:r=0,end:a=i-1}=n,{start:s,end:o}=e,l=Math.max(r,s),c=Math.min(a,o),d=ro&&a>o;return{count:i,start:l,loop:e.loop,ilen:c(s+(c?o-b:b))%a,T=()=>{m!==g&&(t.lineTo(d,g),t.lineTo(d,m),t.lineTo(d,h))};for(l&&(p=r[S(0)],t.moveTo(p.x,p.y)),_=0;_<=o;++_){if(p=r[S(_)],p.skip)continue;const b=p.x,v=p.y,O=b|0;O===f?(vg&&(g=v),d=(u*d+b)/++u):(T(),t.lineTo(b,v),f=O,u=0,m=g=v),h=v}T()}function Hp(t){const e=t.options,n=e.borderDash&&e.borderDash.length;return!t._decimated&&!t._loop&&!e.tension&&e.cubicInterpolationMode!=="monotone"&&!e.stepped&&!n?v0:T0}function R0(t){return t.stepped?vP:t.tension||t.cubicInterpolationMode==="monotone"?RP:Pi}function C0(t,e,n,i){let r=e._path;r||(r=e._path=new Path2D,e.path(r,n,i)&&r.closePath()),gy(t,e.options),t.stroke(r)}function y0(t,e,n,i){const{segments:r,options:a}=e,s=Hp(e);for(const o of r)gy(t,a,o.style),t.beginPath(),s(t,e,o,{start:n,end:n+i-1})&&t.closePath(),t.stroke()}const O0=typeof Path2D=="function";function N0(t,e,n,i){O0&&!e.options.segment?C0(t,e,n,i):y0(t,e,n,i)}class ai extends qn{constructor(e){super(),this.animated=!0,this.options=void 0,this._chart=void 0,this._loop=void 0,this._fullLoop=void 0,this._path=void 0,this._points=void 0,this._segments=void 0,this._decimated=!1,this._pointsUpdated=!1,this._datasetIndex=void 0,e&&Object.assign(this,e)}updateControlPoints(e,n){const i=this.options;if((i.tension||i.cubicInterpolationMode==="monotone")&&!i.stepped&&!this._pointsUpdated){const r=i.spanGaps?this._loop:this._fullLoop;mP(this._points,i,e,r,n),this._pointsUpdated=!0}}set points(e){this._points=e,delete this._segments,delete this._path,this._pointsUpdated=!1}get points(){return this._points}get segments(){return this._segments||(this._segments=IP(this,this.options.segment))}first(){const e=this.segments,n=this.points;return e.length&&n[e[0].start]}last(){const e=this.segments,n=this.points,i=e.length;return i&&n[e[i-1].end]}interpolate(e,n){const i=this.options,r=e[n],a=this.points,s=iy(this,{property:n,start:r,end:r});if(!s.length)return;const o=[],l=R0(i);let c,d;for(c=0,d=s.length;ce!=="borderDash"&&e!=="fill"});function nE(t,e,n,i){const r=t.options,{[n]:a}=t.getProps([n],i);return Math.abs(e-a)t.replace("rgb(","rgba(").replace(")",", 0.5)"));function Sy(t){return Vp[t%Vp.length]}function by(t){return iE[t%iE.length]}function L0(t,e){return t.borderColor=Sy(e),t.backgroundColor=by(e),++e}function P0(t,e){return t.backgroundColor=t.data.map(()=>Sy(e++)),e}function k0(t,e){return t.backgroundColor=t.data.map(()=>by(e++)),e}function F0(t){let e=0;return(n,i)=>{const r=t.getDatasetMeta(i).controller;r instanceof Vi?e=P0(n,e):r instanceof Ca?e=k0(n,e):r&&(e=L0(n,e))}}function rE(t){let e;for(e in t)if(t[e].borderColor||t[e].backgroundColor)return!0;return!1}function U0(t){return t&&(t.borderColor||t.backgroundColor)}var B0={id:"colors",defaults:{enabled:!0,forceOverride:!1},beforeLayout(t,e,n){if(!n.enabled)return;const{data:{datasets:i},options:r}=t.config,{elements:a}=r;if(!n.forceOverride&&(rE(i)||U0(r)||a&&rE(a)))return;const s=F0(t);i.forEach(s)}};function G0(t,e,n,i,r){const a=r.samples||i;if(a>=n)return t.slice(e,e+n);const s=[],o=(n-2)/(a-2);let l=0;const c=e+n-1;let d=e,u,_,p,f,m;for(s[l++]=t[d],u=0;up&&(p=f,_=t[S],m=S);s[l++]=_,d=m}return s[l++]=t[c],s}function Y0(t,e,n,i){let r=0,a=0,s,o,l,c,d,u,_,p,f,m;const g=[],h=e+n-1,S=t[e].x,b=t[h].x-S;for(s=e;sm&&(m=c,_=s),r=(a*r+o.x)/++a;else{const O=s-1;if(!Le(u)&&!Le(_)){const x=Math.min(u,_),A=Math.max(u,_);x!==p&&x!==O&&g.push({...t[x],x:r}),A!==p&&A!==O&&g.push({...t[A],x:r})}s>0&&O!==p&&g.push(t[O]),g.push(o),d=v,a=0,f=m=c,u=_=p=s}}return g}function Ty(t){if(t._decimated){const e=t._data;delete t._decimated,delete t._data,Object.defineProperty(t,"data",{configurable:!0,enumerable:!0,writable:!0,value:e})}}function aE(t){t.data.datasets.forEach(e=>{Ty(e)})}function z0(t,e){const n=e.length;let i=0,r;const{iScale:a}=t,{min:s,max:o,minDefined:l,maxDefined:c}=a.getUserBounds();return l&&(i=vt(Ln(e,a.axis,s).lo,0,n-1)),c?r=vt(Ln(e,a.axis,o).hi+1,i,n)-i:r=n-i,{start:i,count:r}}var H0={id:"decimation",defaults:{algorithm:"min-max",enabled:!1},beforeElementsUpdate:(t,e,n)=>{if(!n.enabled){aE(t);return}const i=t.width;t.data.datasets.forEach((r,a)=>{const{_data:s,indexAxis:o}=r,l=t.getDatasetMeta(a),c=s||r.data;if(We([o,t.options.indexAxis])==="y"||!l.controller.supportsDecimation)return;const d=t.scales[l.xAxisID];if(d.type!=="linear"&&d.type!=="time"||t.options.parsing)return;let{start:u,count:_}=z0(l,c);const p=n.threshold||4*i;if(_<=p){Ty(r);return}Le(s)&&(r._data=c,delete r.data,Object.defineProperty(r,"data",{configurable:!0,enumerable:!0,get:function(){return this._decimated},set:function(m){this._data=m}}));let f;switch(n.algorithm){case"lttb":f=G0(c,u,_,i,n);break;case"min-max":f=Y0(c,u,_,i);break;default:throw new Error(`Unsupported decimation algorithm '${n.algorithm}'`)}r._decimated=f})},destroy(t){aE(t)}};function V0(t,e,n){const i=t.segments,r=t.points,a=e.points,s=[];for(const o of i){let{start:l,end:c}=o;c=ff(l,c,r);const d=qp(n,r[l],r[c],o.loop);if(!e.segments){s.push({source:o,target:d,start:r[l],end:r[c]});continue}const u=iy(e,d);for(const _ of u){const p=qp(n,a[_.start],a[_.end],_.loop),f=ny(o,r,p);for(const m of f)s.push({source:m,target:_,start:{[n]:sE(d,p,"start",Math.max)},end:{[n]:sE(d,p,"end",Math.min)}})}}return s}function qp(t,e,n,i){if(i)return;let r=e[t],a=n[t];return t==="angle"&&(r=Wt(r),a=Wt(a)),{property:t,start:r,end:a}}function q0(t,e){const{x:n=null,y:i=null}=t||{},r=e.points,a=[];return e.segments.forEach(({start:s,end:o})=>{o=ff(s,o,r);const l=r[s],c=r[o];i!==null?(a.push({x:l.x,y:i}),a.push({x:c.x,y:i})):n!==null&&(a.push({x:n,y:l.y}),a.push({x:n,y:c.y}))}),a}function ff(t,e,n){for(;e>t;e--){const i=n[e];if(!isNaN(i.x)&&!isNaN(i.y))break}return e}function sE(t,e,n,i){return t&&e?i(t[n],e[n]):t?t[n]:e?e[n]:0}function vy(t,e){let n=[],i=!1;return Xe(t)?(i=!0,n=t):n=q0(t,e),n.length?new ai({points:n,options:{tension:0},_loop:i,_fullLoop:i}):null}function oE(t){return t&&t.fill!==!1}function $0(t,e,n){let r=t[e].fill;const a=[e];let s;if(!n)return r;for(;r!==!1&&a.indexOf(r)===-1;){if(!dt(r))return r;if(s=t[r],!s)return!1;if(s.visible)return r;a.push(r),r=s.fill}return!1}function W0(t,e,n){const i=Z0(t);if(Pe(i))return isNaN(i.value)?!1:i;let r=parseFloat(i);return dt(r)&&Math.floor(r)===r?K0(i[0],e,r,n):["origin","start","end","stack","shape"].indexOf(i)>=0&&i}function K0(t,e,n,i){return(t==="-"||t==="+")&&(n=e+n),n===e||n<0||n>=i?!1:n}function Q0(t,e){let n=null;return t==="start"?n=e.bottom:t==="end"?n=e.top:Pe(t)?n=e.getPixelForValue(t.value):e.getBasePixel&&(n=e.getBasePixel()),n}function X0(t,e,n){let i;return t==="start"?i=n:t==="end"?i=e.options.reverse?e.min:e.max:Pe(t)?i=t.value:i=e.getBaseValue(),i}function Z0(t){const e=t.options,n=e.fill;let i=xe(n&&n.target,n);return i===void 0&&(i=!!e.backgroundColor),i===!1||i===null?!1:i===!0?"origin":i}function j0(t){const{scale:e,index:n,line:i}=t,r=[],a=i.segments,s=i.points,o=J0(e,n);o.push(vy({x:null,y:e.bottom},i));for(let l=0;l=0;--s){const o=r[s].$filler;o&&(o.line.updateControlPoints(a,o.axis),i&&o.fill&&gc(t.ctx,o,a))}},beforeDatasetsDraw(t,e,n){if(n.drawTime!=="beforeDatasetsDraw")return;const i=t.getSortedVisibleDatasetMetas();for(let r=i.length-1;r>=0;--r){const a=i[r].$filler;oE(a)&&gc(t.ctx,a,t.chartArea)}},beforeDatasetDraw(t,e,n){const i=e.meta.$filler;!oE(i)||n.drawTime!=="beforeDatasetDraw"||gc(t.ctx,i,t.chartArea)},defaults:{propagate:!0,drawTime:"beforeDatasetDraw"}};const uE=(t,e)=>{let{boxHeight:n=e,boxWidth:i=e}=t;return t.usePointStyle&&(n=Math.min(n,e),i=t.pointStyleWidth||Math.min(i,e)),{boxWidth:i,boxHeight:n,itemHeight:Math.max(e,n)}},d1=(t,e)=>t!==null&&e!==null&&t.datasetIndex===e.datasetIndex&&t.index===e.index;class _E extends qn{constructor(e){super(),this._added=!1,this.legendHitBoxes=[],this._hoveredItem=null,this.doughnutMode=!1,this.chart=e.chart,this.options=e.options,this.ctx=e.ctx,this.legendItems=void 0,this.columnSizes=void 0,this.lineWidths=void 0,this.maxHeight=void 0,this.maxWidth=void 0,this.top=void 0,this.bottom=void 0,this.left=void 0,this.right=void 0,this.height=void 0,this.width=void 0,this._margins=void 0,this.position=void 0,this.weight=void 0,this.fullSize=void 0}update(e,n,i){this.maxWidth=e,this.maxHeight=n,this._margins=i,this.setDimensions(),this.buildLabels(),this.fit()}setDimensions(){this.isHorizontal()?(this.width=this.maxWidth,this.left=this._margins.left,this.right=this.width):(this.height=this.maxHeight,this.top=this._margins.top,this.bottom=this.height)}buildLabels(){const e=this.options.labels||{};let n=qe(e.generateLabels,[this.chart],this)||[];e.filter&&(n=n.filter(i=>e.filter(i,this.chart.data))),e.sort&&(n=n.sort((i,r)=>e.sort(i,r,this.chart.data))),this.options.reverse&&n.reverse(),this.legendItems=n}fit(){const{options:e,ctx:n}=this;if(!e.display){this.width=this.height=0;return}const i=e.labels,r=gt(i.font),a=r.size,s=this._computeTitleHeight(),{boxWidth:o,itemHeight:l}=uE(i,a);let c,d;n.font=r.string,this.isHorizontal()?(c=this.maxWidth,d=this._fitRows(s,a,o,l)+10):(d=this.maxHeight,c=this._fitCols(s,r,o,l)+10),this.width=Math.min(c,e.maxWidth||this.maxWidth),this.height=Math.min(d,e.maxHeight||this.maxHeight)}_fitRows(e,n,i,r){const{ctx:a,maxWidth:s,options:{labels:{padding:o}}}=this,l=this.legendHitBoxes=[],c=this.lineWidths=[0],d=r+o;let u=e;a.textAlign="left",a.textBaseline="middle";let _=-1,p=-d;return this.legendItems.forEach((f,m)=>{const g=i+n/2+a.measureText(f.text).width;(m===0||c[c.length-1]+g+2*o>s)&&(u+=d,c[c.length-(m>0?0:1)]=0,p+=d,_++),l[m]={left:0,top:p,row:_,width:g,height:r},c[c.length-1]+=g+o}),u}_fitCols(e,n,i,r){const{ctx:a,maxHeight:s,options:{labels:{padding:o}}}=this,l=this.legendHitBoxes=[],c=this.columnSizes=[],d=s-e;let u=o,_=0,p=0,f=0,m=0;return this.legendItems.forEach((g,h)=>{const{itemWidth:S,itemHeight:T}=u1(i,n,a,g,r);h>0&&p+T+2*o>d&&(u+=_+o,c.push({width:_,height:p}),f+=_+o,m++,_=p=0),l[h]={left:f,top:p,col:m,width:S,height:T},_=Math.max(_,S),p+=T+o}),u+=_,c.push({width:_,height:p}),u}adjustHitBoxes(){if(!this.options.display)return;const e=this._computeTitleHeight(),{legendHitBoxes:n,options:{align:i,labels:{padding:r},rtl:a}}=this,s=Nr(a,this.left,this.width);if(this.isHorizontal()){let o=0,l=At(i,this.left+r,this.right-this.lineWidths[o]);for(const c of n)o!==c.row&&(o=c.row,l=At(i,this.left+r,this.right-this.lineWidths[o])),c.top+=this.top+e+r,c.left=s.leftForLtr(s.x(l),c.width),l+=c.width+r}else{let o=0,l=At(i,this.top+e+r,this.bottom-this.columnSizes[o].height);for(const c of n)c.col!==o&&(o=c.col,l=At(i,this.top+e+r,this.bottom-this.columnSizes[o].height)),c.top=l,c.left+=this.left+r,c.left=s.leftForLtr(s.x(c.left),c.width),l+=c.height+r}}isHorizontal(){return this.options.position==="top"||this.options.position==="bottom"}draw(){if(this.options.display){const e=this.ctx;Ll(e,this),this._draw(),Pl(e)}}_draw(){const{options:e,columnSizes:n,lineWidths:i,ctx:r}=this,{align:a,labels:s}=e,o=nt.color,l=Nr(e.rtl,this.left,this.width),c=gt(s.font),{padding:d}=s,u=c.size,_=u/2;let p;this.drawTitle(),r.textAlign=l.textAlign("left"),r.textBaseline="middle",r.lineWidth=.5,r.font=c.string;const{boxWidth:f,boxHeight:m,itemHeight:g}=uE(s,u),h=function(O,x,A){if(isNaN(f)||f<=0||isNaN(m)||m<0)return;r.save();const D=xe(A.lineWidth,1);if(r.fillStyle=xe(A.fillStyle,o),r.lineCap=xe(A.lineCap,"butt"),r.lineDashOffset=xe(A.lineDashOffset,0),r.lineJoin=xe(A.lineJoin,"miter"),r.lineWidth=D,r.strokeStyle=xe(A.strokeStyle,o),r.setLineDash(xe(A.lineDash,[])),s.usePointStyle){const U={radius:m*Math.SQRT2/2,pointStyle:A.pointStyle,rotation:A.rotation,borderWidth:D},H=l.xPlus(O,f/2),N=x+_;VC(r,U,H,N,s.pointStyleWidth&&f)}else{const U=x+Math.max((u-m)/2,0),H=l.leftForLtr(O,f),N=$i(A.borderRadius);r.beginPath(),Object.values(N).some(G=>G!==0)?ts(r,{x:H,y:U,w:f,h:m,radius:N}):r.rect(H,U,f,m),r.fill(),D!==0&&r.stroke()}r.restore()},S=function(O,x,A){er(r,A.text,O,x+g/2,c,{strikethrough:A.hidden,textAlign:l.textAlign(A.textAlign)})},T=this.isHorizontal(),b=this._computeTitleHeight();T?p={x:At(a,this.left+d,this.right-i[0]),y:this.top+d+b,line:0}:p={x:this.left+d,y:At(a,this.top+b+d,this.bottom-n[0].height),line:0},JC(this.ctx,e.textDirection);const v=g+d;this.legendItems.forEach((O,x)=>{r.strokeStyle=O.fontColor,r.fillStyle=O.fontColor;const A=r.measureText(O.text).width,D=l.textAlign(O.textAlign||(O.textAlign=s.textAlign)),U=f+_+A;let H=p.x,N=p.y;l.setWidth(this.width),T?x>0&&H+U+d>this.right&&(N=p.y+=v,p.line++,H=p.x=At(a,this.left+d,this.right-i[p.line])):x>0&&N+v>this.bottom&&(H=p.x=H+n[p.line].width+d,p.line++,N=p.y=At(a,this.top+b+d,this.bottom-n[p.line].height));const G=l.x(H);if(h(G,N,O),H=wL(D,H+f+_,T?H+U:this.right,e.rtl),S(l.x(H),N,O),T)p.x+=U+d;else if(typeof O.text!="string"){const R=c.lineHeight;p.y+=Cy(O,R)+d}else p.y+=v}),ey(this.ctx,e.textDirection)}drawTitle(){const e=this.options,n=e.title,i=gt(n.font),r=Ot(n.padding);if(!n.display)return;const a=Nr(e.rtl,this.left,this.width),s=this.ctx,o=n.position,l=i.size/2,c=r.top+l;let d,u=this.left,_=this.width;if(this.isHorizontal())_=Math.max(...this.lineWidths),d=this.top+c,u=At(e.align,u,this.right-_);else{const f=this.columnSizes.reduce((m,g)=>Math.max(m,g.height),0);d=c+At(e.align,this.top,this.bottom-f-e.labels.padding-this._computeTitleHeight())}const p=At(o,u,u+_);s.textAlign=a.textAlign(of(o)),s.textBaseline="middle",s.strokeStyle=n.color,s.fillStyle=n.color,s.font=i.string,er(s,n.text,p,d,i)}_computeTitleHeight(){const e=this.options.title,n=gt(e.font),i=Ot(e.padding);return e.display?n.lineHeight+i.height:0}_getLegendItemAt(e,n){let i,r,a;if(Mn(e,this.left,this.right)&&Mn(n,this.top,this.bottom)){for(a=this.legendHitBoxes,i=0;ia.length>s.length?a:s)),e+n.size/2+i.measureText(r).width}function p1(t,e,n){let i=t;return typeof e.text!="string"&&(i=Cy(e,n)),i}function Cy(t,e){const n=t.text?t.text.length:0;return e*n}function m1(t,e){return!!((t==="mousemove"||t==="mouseout")&&(e.onHover||e.onLeave)||e.onClick&&(t==="click"||t==="mouseup"))}var f1={id:"legend",_element:_E,start(t,e,n){const i=t.legend=new _E({ctx:t.ctx,options:n,chart:t});xt.configure(t,i,n),xt.addBox(t,i)},stop(t){xt.removeBox(t,t.legend),delete t.legend},beforeUpdate(t,e,n){const i=t.legend;xt.configure(t,i,n),i.options=n},afterUpdate(t){const e=t.legend;e.buildLabels(),e.adjustHitBoxes()},afterEvent(t,e){e.replay||t.legend.handleEvent(e.event)},defaults:{display:!0,position:"top",align:"center",fullSize:!0,reverse:!1,weight:1e3,onClick(t,e,n){const i=e.datasetIndex,r=n.chart;r.isDatasetVisible(i)?(r.hide(i),e.hidden=!0):(r.show(i),e.hidden=!1)},onHover:null,onLeave:null,labels:{color:t=>t.chart.options.color,boxWidth:40,padding:10,generateLabels(t){const e=t.data.datasets,{labels:{usePointStyle:n,pointStyle:i,textAlign:r,color:a,useBorderRadius:s,borderRadius:o}}=t.legend.options;return t._getSortedDatasetMetas().map(l=>{const c=l.controller.getStyle(n?0:void 0),d=Ot(c.borderWidth);return{text:e[l.index].label,fillStyle:c.backgroundColor,fontColor:a,hidden:!l.visible,lineCap:c.borderCapStyle,lineDash:c.borderDash,lineDashOffset:c.borderDashOffset,lineJoin:c.borderJoinStyle,lineWidth:(d.width+d.height)/4,strokeStyle:c.borderColor,pointStyle:i||c.pointStyle,rotation:c.rotation,textAlign:r||c.textAlign,borderRadius:s&&(o||c.borderRadius),datasetIndex:l.index}},this)}},title:{color:t=>t.chart.options.color,display:!1,position:"center",text:""}},descriptors:{_scriptable:t=>!t.startsWith("on"),labels:{_scriptable:t=>!["generateLabels","filter","sort"].includes(t)}}};class gf extends qn{constructor(e){super(),this.chart=e.chart,this.options=e.options,this.ctx=e.ctx,this._padding=void 0,this.top=void 0,this.bottom=void 0,this.left=void 0,this.right=void 0,this.width=void 0,this.height=void 0,this.position=void 0,this.weight=void 0,this.fullSize=void 0}update(e,n){const i=this.options;if(this.left=0,this.top=0,!i.display){this.width=this.height=this.right=this.bottom=0;return}this.width=this.right=e,this.height=this.bottom=n;const r=Xe(i.text)?i.text.length:1;this._padding=Ot(i.padding);const a=r*gt(i.font).lineHeight+this._padding.height;this.isHorizontal()?this.height=a:this.width=a}isHorizontal(){const e=this.options.position;return e==="top"||e==="bottom"}_drawArgs(e){const{top:n,left:i,bottom:r,right:a,options:s}=this,o=s.align;let l=0,c,d,u;return this.isHorizontal()?(d=At(o,i,a),u=n+e,c=a-i):(s.position==="left"?(d=i+e,u=At(o,r,n),l=Je*-.5):(d=a-e,u=At(o,n,r),l=Je*.5),c=r-n),{titleX:d,titleY:u,maxWidth:c,rotation:l}}draw(){const e=this.ctx,n=this.options;if(!n.display)return;const i=gt(n.font),a=i.lineHeight/2+this._padding.top,{titleX:s,titleY:o,maxWidth:l,rotation:c}=this._drawArgs(a);er(e,n.text,0,0,i,{color:n.color,maxWidth:l,rotation:c,textAlign:of(n.align),textBaseline:"middle",translation:[s,o]})}}function g1(t,e){const n=new gf({ctx:t.ctx,options:e,chart:t});xt.configure(t,n,e),xt.addBox(t,n),t.titleBlock=n}var h1={id:"title",_element:gf,start(t,e,n){g1(t,n)},stop(t){const e=t.titleBlock;xt.removeBox(t,e),delete t.titleBlock},beforeUpdate(t,e,n){const i=t.titleBlock;xt.configure(t,i,n),i.options=n},defaults:{align:"center",display:!1,font:{weight:"bold"},fullSize:!0,padding:10,position:"top",text:"",weight:2e3},defaultRoutes:{color:"color"},descriptors:{_scriptable:!0,_indexable:!1}};const Js=new WeakMap;var E1={id:"subtitle",start(t,e,n){const i=new gf({ctx:t.ctx,options:n,chart:t});xt.configure(t,i,n),xt.addBox(t,i),Js.set(t,i)},stop(t){xt.removeBox(t,Js.get(t)),Js.delete(t)},beforeUpdate(t,e,n){const i=Js.get(t);xt.configure(t,i,n),i.options=n},defaults:{align:"center",display:!1,font:{weight:"normal"},fullSize:!0,padding:0,position:"top",text:"",weight:1500},defaultRoutes:{color:"color"},descriptors:{_scriptable:!0,_indexable:!1}};const sa={average(t){if(!t.length)return!1;let e,n,i=0,r=0,a=0;for(e=0,n=t.length;e-1?t.split(`
+`):t}function S1(t,e){const{element:n,datasetIndex:i,index:r}=e,a=t.getDatasetMeta(i).controller,{label:s,value:o}=a.getLabelAndValue(r);return{chart:t,label:s,parsed:a.getParsed(r),raw:t.data.datasets[i].data[r],formattedValue:o,dataset:a.getDataset(),dataIndex:r,datasetIndex:i,element:n}}function pE(t,e){const n=t.chart.ctx,{body:i,footer:r,title:a}=t,{boxWidth:s,boxHeight:o}=e,l=gt(e.bodyFont),c=gt(e.titleFont),d=gt(e.footerFont),u=a.length,_=r.length,p=i.length,f=Ot(e.padding);let m=f.height,g=0,h=i.reduce((b,v)=>b+v.before.length+v.lines.length+v.after.length,0);if(h+=t.beforeBody.length+t.afterBody.length,u&&(m+=u*c.lineHeight+(u-1)*e.titleSpacing+e.titleMarginBottom),h){const b=e.displayColors?Math.max(o,l.lineHeight):l.lineHeight;m+=p*b+(h-p)*l.lineHeight+(h-1)*e.bodySpacing}_&&(m+=e.footerMarginTop+_*d.lineHeight+(_-1)*e.footerSpacing);let S=0;const T=function(b){g=Math.max(g,n.measureText(b).width+S)};return n.save(),n.font=c.string,Ye(t.title,T),n.font=l.string,Ye(t.beforeBody.concat(t.afterBody),T),S=e.displayColors?s+2+e.boxPadding:0,Ye(i,b=>{Ye(b.before,T),Ye(b.lines,T),Ye(b.after,T)}),S=0,n.font=d.string,Ye(t.footer,T),n.restore(),g+=f.width,{width:g,height:m}}function b1(t,e){const{y:n,height:i}=e;return nt.height-i/2?"bottom":"center"}function T1(t,e,n,i){const{x:r,width:a}=i,s=n.caretSize+n.caretPadding;if(t==="left"&&r+a+s>e.width||t==="right"&&r-a-s<0)return!0}function v1(t,e,n,i){const{x:r,width:a}=n,{width:s,chartArea:{left:o,right:l}}=t;let c="center";return i==="center"?c=r<=(o+l)/2?"left":"right":r<=a/2?c="left":r>=s-a/2&&(c="right"),T1(c,t,e,n)&&(c="center"),c}function mE(t,e,n){const i=n.yAlign||e.yAlign||b1(t,n);return{xAlign:n.xAlign||e.xAlign||v1(t,e,n,i),yAlign:i}}function R1(t,e){let{x:n,width:i}=t;return e==="right"?n-=i:e==="center"&&(n-=i/2),n}function C1(t,e,n){let{y:i,height:r}=t;return e==="top"?i+=n:e==="bottom"?i-=r+n:i-=r/2,i}function fE(t,e,n,i){const{caretSize:r,caretPadding:a,cornerRadius:s}=t,{xAlign:o,yAlign:l}=n,c=r+a,{topLeft:d,topRight:u,bottomLeft:_,bottomRight:p}=$i(s);let f=R1(e,o);const m=C1(e,l,c);return l==="center"?o==="left"?f+=c:o==="right"&&(f-=c):o==="left"?f-=Math.max(d,_)+r:o==="right"&&(f+=Math.max(u,p)+r),{x:vt(f,0,i.width-e.width),y:vt(m,0,i.height-e.height)}}function eo(t,e,n){const i=Ot(n.padding);return e==="center"?t.x+t.width/2:e==="right"?t.x+t.width-i.right:t.x+i.left}function gE(t){return pn([],In(t))}function y1(t,e,n){return Ri(t,{tooltip:e,tooltipItems:n,type:"tooltip"})}function hE(t,e){const n=e&&e.dataset&&e.dataset.tooltip&&e.dataset.tooltip.callbacks;return n?t.override(n):t}const yy={beforeTitle:Nn,title(t){if(t.length>0){const e=t[0],n=e.chart.data.labels,i=n?n.length:0;if(this&&this.options&&this.options.mode==="dataset")return e.dataset.label||"";if(e.label)return e.label;if(i>0&&e.dataIndex"u"?yy[e].call(n,i):r}class $p extends qn{constructor(e){super(),this.opacity=0,this._active=[],this._eventPosition=void 0,this._size=void 0,this._cachedAnimations=void 0,this._tooltipItems=[],this.$animations=void 0,this.$context=void 0,this.chart=e.chart,this.options=e.options,this.dataPoints=void 0,this.title=void 0,this.beforeBody=void 0,this.body=void 0,this.afterBody=void 0,this.footer=void 0,this.xAlign=void 0,this.yAlign=void 0,this.x=void 0,this.y=void 0,this.height=void 0,this.width=void 0,this.caretX=void 0,this.caretY=void 0,this.labelColors=void 0,this.labelPointStyles=void 0,this.labelTextColors=void 0}initialize(e){this.options=e,this._cachedAnimations=void 0,this.$context=void 0}_resolveAnimations(){const e=this._cachedAnimations;if(e)return e;const n=this.chart,i=this.options.setContext(this.getContext()),r=i.enabled&&n.options.animation&&i.animations,a=new ry(this.chart,r);return r._cacheable&&(this._cachedAnimations=Object.freeze(a)),a}getContext(){return this.$context||(this.$context=y1(this.chart.getContext(),this,this._tooltipItems))}getTitle(e,n){const{callbacks:i}=n,r=kt(i,"beforeTitle",this,e),a=kt(i,"title",this,e),s=kt(i,"afterTitle",this,e);let o=[];return o=pn(o,In(r)),o=pn(o,In(a)),o=pn(o,In(s)),o}getBeforeBody(e,n){return gE(kt(n.callbacks,"beforeBody",this,e))}getBody(e,n){const{callbacks:i}=n,r=[];return Ye(e,a=>{const s={before:[],lines:[],after:[]},o=hE(i,a);pn(s.before,In(kt(o,"beforeLabel",this,a))),pn(s.lines,kt(o,"label",this,a)),pn(s.after,In(kt(o,"afterLabel",this,a))),r.push(s)}),r}getAfterBody(e,n){return gE(kt(n.callbacks,"afterBody",this,e))}getFooter(e,n){const{callbacks:i}=n,r=kt(i,"beforeFooter",this,e),a=kt(i,"footer",this,e),s=kt(i,"afterFooter",this,e);let o=[];return o=pn(o,In(r)),o=pn(o,In(a)),o=pn(o,In(s)),o}_createItems(e){const n=this._active,i=this.chart.data,r=[],a=[],s=[];let o=[],l,c;for(l=0,c=n.length;le.filter(d,u,_,i))),e.itemSort&&(o=o.sort((d,u)=>e.itemSort(d,u,i))),Ye(o,d=>{const u=hE(e.callbacks,d);r.push(kt(u,"labelColor",this,d)),a.push(kt(u,"labelPointStyle",this,d)),s.push(kt(u,"labelTextColor",this,d))}),this.labelColors=r,this.labelPointStyles=a,this.labelTextColors=s,this.dataPoints=o,o}update(e,n){const i=this.options.setContext(this.getContext()),r=this._active;let a,s=[];if(!r.length)this.opacity!==0&&(a={opacity:0});else{const o=sa[i.position].call(this,r,this._eventPosition);s=this._createItems(i),this.title=this.getTitle(s,i),this.beforeBody=this.getBeforeBody(s,i),this.body=this.getBody(s,i),this.afterBody=this.getAfterBody(s,i),this.footer=this.getFooter(s,i);const l=this._size=pE(this,i),c=Object.assign({},o,l),d=mE(this.chart,i,c),u=fE(i,c,d,this.chart);this.xAlign=d.xAlign,this.yAlign=d.yAlign,a={opacity:1,x:u.x,y:u.y,width:l.width,height:l.height,caretX:o.x,caretY:o.y}}this._tooltipItems=s,this.$context=void 0,a&&this._resolveAnimations().update(this,a),e&&i.external&&i.external.call(this,{chart:this.chart,tooltip:this,replay:n})}drawCaret(e,n,i,r){const a=this.getCaretPosition(e,i,r);n.lineTo(a.x1,a.y1),n.lineTo(a.x2,a.y2),n.lineTo(a.x3,a.y3)}getCaretPosition(e,n,i){const{xAlign:r,yAlign:a}=this,{caretSize:s,cornerRadius:o}=i,{topLeft:l,topRight:c,bottomLeft:d,bottomRight:u}=$i(o),{x:_,y:p}=e,{width:f,height:m}=n;let g,h,S,T,b,v;return a==="center"?(b=p+m/2,r==="left"?(g=_,h=g-s,T=b+s,v=b-s):(g=_+f,h=g+s,T=b-s,v=b+s),S=g):(r==="left"?h=_+Math.max(l,d)+s:r==="right"?h=_+f-Math.max(c,u)-s:h=this.caretX,a==="top"?(T=p,b=T-s,g=h-s,S=h+s):(T=p+m,b=T+s,g=h+s,S=h-s),v=T),{x1:g,x2:h,x3:S,y1:T,y2:b,y3:v}}drawTitle(e,n,i){const r=this.title,a=r.length;let s,o,l;if(a){const c=Nr(i.rtl,this.x,this.width);for(e.x=eo(this,i.titleAlign,i),n.textAlign=c.textAlign(i.titleAlign),n.textBaseline="middle",s=gt(i.titleFont),o=i.titleSpacing,n.fillStyle=i.titleColor,n.font=s.string,l=0;lS!==0)?(e.beginPath(),e.fillStyle=a.multiKeyBackground,ts(e,{x:m,y:f,w:c,h:l,radius:h}),e.fill(),e.stroke(),e.fillStyle=s.backgroundColor,e.beginPath(),ts(e,{x:g,y:f+1,w:c-2,h:l-2,radius:h}),e.fill()):(e.fillStyle=a.multiKeyBackground,e.fillRect(m,f,c,l),e.strokeRect(m,f,c,l),e.fillStyle=s.backgroundColor,e.fillRect(g,f+1,c-2,l-2))}e.fillStyle=this.labelTextColors[i]}drawBody(e,n,i){const{body:r}=this,{bodySpacing:a,bodyAlign:s,displayColors:o,boxHeight:l,boxWidth:c,boxPadding:d}=i,u=gt(i.bodyFont);let _=u.lineHeight,p=0;const f=Nr(i.rtl,this.x,this.width),m=function(A){n.fillText(A,f.x(e.x+p),e.y+_/2),e.y+=_+a},g=f.textAlign(s);let h,S,T,b,v,O,x;for(n.textAlign=s,n.textBaseline="middle",n.font=u.string,e.x=eo(this,g,i),n.fillStyle=i.bodyColor,Ye(this.beforeBody,m),p=o&&g!=="right"?s==="center"?c/2+d:c+2+d:0,b=0,O=r.length;b0&&n.stroke()}_updateAnimationTarget(e){const n=this.chart,i=this.$animations,r=i&&i.x,a=i&&i.y;if(r||a){const s=sa[e.position].call(this,this._active,this._eventPosition);if(!s)return;const o=this._size=pE(this,e),l=Object.assign({},s,this._size),c=mE(n,e,l),d=fE(e,l,c,n);(r._to!==d.x||a._to!==d.y)&&(this.xAlign=c.xAlign,this.yAlign=c.yAlign,this.width=o.width,this.height=o.height,this.caretX=s.x,this.caretY=s.y,this._resolveAnimations().update(this,d))}}_willRender(){return!!this.opacity}draw(e){const n=this.options.setContext(this.getContext());let i=this.opacity;if(!i)return;this._updateAnimationTarget(n);const r={width:this.width,height:this.height},a={x:this.x,y:this.y};i=Math.abs(i)<.001?0:i;const s=Ot(n.padding),o=this.title.length||this.beforeBody.length||this.body.length||this.afterBody.length||this.footer.length;n.enabled&&o&&(e.save(),e.globalAlpha=i,this.drawBackground(a,e,r,n),JC(e,n.textDirection),a.y+=s.top,this.drawTitle(a,e,n),this.drawBody(a,e,n),this.drawFooter(a,e,n),ey(e,n.textDirection),e.restore())}getActiveElements(){return this._active||[]}setActiveElements(e,n){const i=this._active,r=e.map(({datasetIndex:o,index:l})=>{const c=this.chart.getDatasetMeta(o);if(!c)throw new Error("Cannot find a dataset at index "+o);return{datasetIndex:o,element:c.data[l],index:l}}),a=!Qo(i,r),s=this._positionChanged(r,n);(a||s)&&(this._active=r,this._eventPosition=n,this._ignoreReplayEvents=!0,this.update(!0))}handleEvent(e,n,i=!0){if(n&&this._ignoreReplayEvents)return!1;this._ignoreReplayEvents=!1;const r=this.options,a=this._active||[],s=this._getActiveElements(e,a,n,i),o=this._positionChanged(s,e),l=n||!Qo(s,a)||o;return l&&(this._active=s,(r.enabled||r.external)&&(this._eventPosition={x:e.x,y:e.y},this.update(!0,n))),l}_getActiveElements(e,n,i,r){const a=this.options;if(e.type==="mouseout")return[];if(!r)return n;const s=this.chart.getElementsAtEventForMode(e,a.mode,a,i);return a.reverse&&s.reverse(),s}_positionChanged(e,n){const{caretX:i,caretY:r,options:a}=this,s=sa[a.position].call(this,e,n);return s!==!1&&(i!==s.x||r!==s.y)}}ae($p,"positioners",sa);var O1={id:"tooltip",_element:$p,positioners:sa,afterInit(t,e,n){n&&(t.tooltip=new $p({chart:t,options:n}))},beforeUpdate(t,e,n){t.tooltip&&t.tooltip.initialize(n)},reset(t,e,n){t.tooltip&&t.tooltip.initialize(n)},afterDraw(t){const e=t.tooltip;if(e&&e._willRender()){const n={tooltip:e};if(t.notifyPlugins("beforeTooltipDraw",{...n,cancelable:!0})===!1)return;e.draw(t.ctx),t.notifyPlugins("afterTooltipDraw",n)}},afterEvent(t,e){if(t.tooltip){const n=e.replay;t.tooltip.handleEvent(e.event,n,e.inChartArea)&&(e.changed=!0)}},defaults:{enabled:!0,external:null,position:"average",backgroundColor:"rgba(0,0,0,0.8)",titleColor:"#fff",titleFont:{weight:"bold"},titleSpacing:2,titleMarginBottom:6,titleAlign:"left",bodyColor:"#fff",bodySpacing:2,bodyFont:{},bodyAlign:"left",footerColor:"#fff",footerSpacing:2,footerMarginTop:6,footerFont:{weight:"bold"},footerAlign:"left",padding:6,caretPadding:2,caretSize:5,cornerRadius:6,boxHeight:(t,e)=>e.bodyFont.size,boxWidth:(t,e)=>e.bodyFont.size,multiKeyBackground:"#fff",displayColors:!0,boxPadding:0,borderColor:"rgba(0,0,0,0)",borderWidth:0,animation:{duration:400,easing:"easeOutQuart"},animations:{numbers:{type:"number",properties:["x","y","width","height","caretX","caretY"]},opacity:{easing:"linear",duration:200}},callbacks:yy},defaultRoutes:{bodyFont:"font",footerFont:"font",titleFont:"font"},descriptors:{_scriptable:t=>t!=="filter"&&t!=="itemSort"&&t!=="external",_indexable:!1,callbacks:{_scriptable:!1,_indexable:!1},animation:{_fallback:!1},animations:{_fallback:"animation"}},additionalOptionScopes:["interaction"]},N1=Object.freeze({__proto__:null,Colors:B0,Decimation:H0,Filler:c1,Legend:f1,SubTitle:E1,Title:h1,Tooltip:O1});const A1=(t,e,n,i)=>(typeof e=="string"?(n=t.push(e)-1,i.unshift({index:n,label:e})):isNaN(e)&&(n=null),n);function I1(t,e,n,i){const r=t.indexOf(e);if(r===-1)return A1(t,e,n,i);const a=t.lastIndexOf(e);return r!==a?n:r}const D1=(t,e)=>t===null?null:vt(Math.round(t),0,e);function EE(t){const e=this.getLabels();return t>=0&&tn.length-1?null:this.getPixelForValue(n[e].value)}getValueForPixel(e){return Math.round(this._startValue+this.getDecimalForPixel(e)*this._valueRange)}getBasePixel(){return this.bottom}}ae(Wp,"id","category"),ae(Wp,"defaults",{ticks:{callback:EE}});function x1(t,e){const n=[],{bounds:r,step:a,min:s,max:o,precision:l,count:c,maxTicks:d,maxDigits:u,includeBounds:_}=t,p=a||1,f=d-1,{min:m,max:g}=e,h=!Le(s),S=!Le(o),T=!Le(c),b=(g-m)/(u+1);let v=_h((g-m)/f/p)*p,O,x,A,D;if(v<1e-14&&!h&&!S)return[{value:m},{value:g}];D=Math.ceil(g/v)-Math.floor(m/v),D>f&&(v=_h(D*v/f/p)*p),Le(l)||(O=Math.pow(10,l),v=Math.ceil(v*O)/O),r==="ticks"?(x=Math.floor(m/v)*v,A=Math.ceil(g/v)*v):(x=m,A=g),h&&S&&a&&yL((o-s)/a,v/1e3)?(D=Math.round(Math.min((o-s)/v,d)),v=(o-s)/D,x=s,A=o):T?(x=h?s:x,A=S?o:A,D=c-1,v=(A-x)/D):(D=(A-x)/v,ba(D,Math.round(D),v/1e3)?D=Math.round(D):D=Math.ceil(D));const U=Math.max(ph(v),ph(x));O=Math.pow(10,Le(l)?U:l),x=Math.round(x*O)/O,A=Math.round(A*O)/O;let H=0;for(h&&(_&&x!==s?(n.push({value:s}),xo)break;n.push({value:N})}return S&&_&&A!==o?n.length&&ba(n[n.length-1].value,o,SE(o,b,t))?n[n.length-1].value=o:n.push({value:o}):(!S||A===o)&&n.push({value:A}),n}function SE(t,e,{horizontal:n,minRotation:i}){const r=sn(i),a=(n?Math.sin(r):Math.cos(r))||.001,s=.75*e*(""+t).length;return Math.min(e/a,s)}class nl extends ir{constructor(e){super(e),this.start=void 0,this.end=void 0,this._startValue=void 0,this._endValue=void 0,this._valueRange=0}parse(e,n){return Le(e)||(typeof e=="number"||e instanceof Number)&&!isFinite(+e)?null:+e}handleTickRangeOptions(){const{beginAtZero:e}=this.options,{minDefined:n,maxDefined:i}=this.getUserBounds();let{min:r,max:a}=this;const s=l=>r=n?r:l,o=l=>a=i?a:l;if(e){const l=Sn(r),c=Sn(a);l<0&&c<0?o(0):l>0&&c>0&&s(0)}if(r===a){let l=a===0?1:Math.abs(a*.05);o(a+l),e||s(r-l)}this.min=r,this.max=a}getTickLimit(){const e=this.options.ticks;let{maxTicksLimit:n,stepSize:i}=e,r;return i?(r=Math.ceil(this.max/i)-Math.floor(this.min/i)+1,r>1e3&&(console.warn(`scales.${this.id}.ticks.stepSize: ${i} would result generating up to ${r} ticks. Limiting to 1000.`),r=1e3)):(r=this.computeTickLimit(),n=n||11),n&&(r=Math.min(n,r)),r}computeTickLimit(){return Number.POSITIVE_INFINITY}buildTicks(){const e=this.options,n=e.ticks;let i=this.getTickLimit();i=Math.max(2,i);const r={maxTicks:i,bounds:e.bounds,min:e.min,max:e.max,precision:n.precision,step:n.stepSize,count:n.count,maxDigits:this._maxDigits(),horizontal:this.isHorizontal(),minRotation:n.minRotation||0,includeBounds:n.includeBounds!==!1},a=this._range||this,s=x1(r,a);return e.bounds==="ticks"&&PC(s,this,"value"),e.reverse?(s.reverse(),this.start=this.max,this.end=this.min):(this.start=this.min,this.end=this.max),s}configure(){const e=this.ticks;let n=this.min,i=this.max;if(super.configure(),this.options.offset&&e.length){const r=(i-n)/Math.max(e.length-1,1)/2;n-=r,i+=r}this._startValue=n,this._endValue=i,this._valueRange=i-n}getLabelForValue(e){return Ss(e,this.chart.options.locale,this.options.ticks.format)}}class Kp extends nl{determineDataLimits(){const{min:e,max:n}=this.getMinMax(!0);this.min=dt(e)?e:0,this.max=dt(n)?n:1,this.handleTickRangeOptions()}computeTickLimit(){const e=this.isHorizontal(),n=e?this.width:this.height,i=sn(this.options.ticks.minRotation),r=(e?Math.sin(i):Math.cos(i))||.001,a=this._resolveTickFontOptions(0);return Math.ceil(n/Math.min(40,a.lineHeight/r))}getPixelForValue(e){return e===null?NaN:this.getPixelForDecimal((e-this._startValue)/this._valueRange)}getValueForPixel(e){return this._startValue+this.getDecimalForPixel(e)*this._valueRange}}ae(Kp,"id","linear"),ae(Kp,"defaults",{ticks:{callback:Ml.formatters.numeric}});const is=t=>Math.floor(ri(t)),xi=(t,e)=>Math.pow(10,is(t)+e);function bE(t){return t/Math.pow(10,is(t))===1}function TE(t,e,n){const i=Math.pow(10,n),r=Math.floor(t/i);return Math.ceil(e/i)-r}function w1(t,e){const n=e-t;let i=is(n);for(;TE(t,e,i)>10;)i++;for(;TE(t,e,i)<10;)i--;return Math.min(i,is(t))}function M1(t,{min:e,max:n}){e=qt(t.min,e);const i=[],r=is(e);let a=w1(e,n),s=a<0?Math.pow(10,Math.abs(a)):1;const o=Math.pow(10,a),l=r>a?Math.pow(10,r):0,c=Math.round((e-l)*s)/s,d=Math.floor((e-l)/o/10)*o*10;let u=Math.floor((c-d)/Math.pow(10,a)),_=qt(t.min,Math.round((l+d+u*Math.pow(10,a))*s)/s);for(;_=10?u=u<15?15:20:u++,u>=20&&(a++,u=2,s=a>=0?1:s),_=Math.round((l+d+u*Math.pow(10,a))*s)/s;const p=qt(t.max,_);return i.push({value:p,major:bE(p),significand:u}),i}class Qp extends ir{constructor(e){super(e),this.start=void 0,this.end=void 0,this._startValue=void 0,this._valueRange=0}parse(e,n){const i=nl.prototype.parse.apply(this,[e,n]);if(i===0){this._zero=!0;return}return dt(i)&&i>0?i:null}determineDataLimits(){const{min:e,max:n}=this.getMinMax(!0);this.min=dt(e)?Math.max(0,e):null,this.max=dt(n)?Math.max(0,n):null,this.options.beginAtZero&&(this._zero=!0),this._zero&&this.min!==this._suggestedMin&&!dt(this._userMin)&&(this.min=e===xi(this.min,0)?xi(this.min,-1):xi(this.min,0)),this.handleTickRangeOptions()}handleTickRangeOptions(){const{minDefined:e,maxDefined:n}=this.getUserBounds();let i=this.min,r=this.max;const a=o=>i=e?i:o,s=o=>r=n?r:o;i===r&&(i<=0?(a(1),s(10)):(a(xi(i,-1)),s(xi(r,1)))),i<=0&&a(xi(r,-1)),r<=0&&s(xi(i,1)),this.min=i,this.max=r}buildTicks(){const e=this.options,n={min:this._userMin,max:this._userMax},i=M1(n,this);return e.bounds==="ticks"&&PC(i,this,"value"),e.reverse?(i.reverse(),this.start=this.max,this.end=this.min):(this.start=this.min,this.end=this.max),i}getLabelForValue(e){return e===void 0?"0":Ss(e,this.chart.options.locale,this.options.ticks.format)}configure(){const e=this.min;super.configure(),this._startValue=ri(e),this._valueRange=ri(this.max)-ri(e)}getPixelForValue(e){return(e===void 0||e===0)&&(e=this.min),e===null||isNaN(e)?NaN:this.getPixelForDecimal(e===this.min?0:(ri(e)-this._startValue)/this._valueRange)}getValueForPixel(e){const n=this.getDecimalForPixel(e);return Math.pow(10,this._startValue+n*this._valueRange)}}ae(Qp,"id","logarithmic"),ae(Qp,"defaults",{ticks:{callback:Ml.formatters.logarithmic,major:{enabled:!0}}});function Xp(t){const e=t.ticks;if(e.display&&t.display){const n=Ot(e.backdropPadding);return xe(e.font&&e.font.size,nt.font.size)+n.height}return 0}function L1(t,e,n){return n=Xe(n)?n:[n],{w:zL(t,e.string,n),h:n.length*e.lineHeight}}function vE(t,e,n,i,r){return t===i||t===r?{start:e-n/2,end:e+n/2}:tr?{start:e-n,end:e}:{start:e,end:e+n}}function P1(t){const e={l:t.left+t._padding.left,r:t.right-t._padding.right,t:t.top+t._padding.top,b:t.bottom-t._padding.bottom},n=Object.assign({},e),i=[],r=[],a=t._pointLabels.length,s=t.options.pointLabels,o=s.centerPointLabels?Je/a:0;for(let l=0;le.r&&(o=(i.end-e.r)/a,t.r=Math.max(t.r,e.r+o)),r.starte.b&&(l=(r.end-e.b)/s,t.b=Math.max(t.b,e.b+l))}function F1(t,e,n){const i=t.drawingArea,{extra:r,additionalAngle:a,padding:s,size:o}=n,l=t.getPointPosition(e,i+r+s,a),c=Math.round(af(Wt(l.angle+pt))),d=z1(l.y,o.h,c),u=G1(c),_=Y1(l.x,o.w,u);return{visible:!0,x:l.x,y:d,textAlign:u,left:_,top:d,right:_+o.w,bottom:d+o.h}}function U1(t,e){if(!e)return!0;const{left:n,top:i,right:r,bottom:a}=t;return!(Pn({x:n,y:i},e)||Pn({x:n,y:a},e)||Pn({x:r,y:i},e)||Pn({x:r,y:a},e))}function B1(t,e,n){const i=[],r=t._pointLabels.length,a=t.options,{centerPointLabels:s,display:o}=a.pointLabels,l={extra:Xp(a)/2,additionalAngle:s?Je/r:0};let c;for(let d=0;d270||n<90)&&(t-=e),t}function H1(t,e,n){const{left:i,top:r,right:a,bottom:s}=n,{backdropColor:o}=e;if(!Le(o)){const l=$i(e.borderRadius),c=Ot(e.backdropPadding);t.fillStyle=o;const d=i-c.left,u=r-c.top,_=a-i+c.width,p=s-r+c.height;Object.values(l).some(f=>f!==0)?(t.beginPath(),ts(t,{x:d,y:u,w:_,h:p,radius:l}),t.fill()):t.fillRect(d,u,_,p)}}function V1(t,e){const{ctx:n,options:{pointLabels:i}}=t;for(let r=e-1;r>=0;r--){const a=t._pointLabelItems[r];if(!a.visible)continue;const s=i.setContext(t.getPointLabelContext(r));H1(n,s,a);const o=gt(s.font),{x:l,y:c,textAlign:d}=a;er(n,t._pointLabels[r],l,c+o.lineHeight/2,o,{color:s.color,textAlign:d,textBaseline:"middle"})}}function Oy(t,e,n,i){const{ctx:r}=t;if(n)r.arc(t.xCenter,t.yCenter,e,0,je);else{let a=t.getPointPosition(0,e);r.moveTo(a.x,a.y);for(let s=1;s{const r=qe(this.options.pointLabels.callback,[n,i],this);return r||r===0?r:""}).filter((n,i)=>this.chart.getDataVisibility(i))}fit(){const e=this.options;e.display&&e.pointLabels.display?P1(this):this.setCenterPoint(0,0,0,0)}setCenterPoint(e,n,i,r){this.xCenter+=Math.floor((e-n)/2),this.yCenter+=Math.floor((i-r)/2),this.drawingArea-=Math.min(this.drawingArea/2,Math.max(e,n,i,r))}getIndexAngle(e){const n=je/(this._pointLabels.length||1),i=this.options.startAngle||0;return Wt(e*n+sn(i))}getDistanceFromCenterForValue(e){if(Le(e))return NaN;const n=this.drawingArea/(this.max-this.min);return this.options.reverse?(this.max-e)*n:(e-this.min)*n}getValueForDistanceFromCenter(e){if(Le(e))return NaN;const n=e/(this.drawingArea/(this.max-this.min));return this.options.reverse?this.max-n:this.min+n}getPointLabelContext(e){const n=this._pointLabels||[];if(e>=0&&e{if(u!==0){l=this.getDistanceFromCenterForValue(d.value);const _=this.getContext(u),p=r.setContext(_),f=a.setContext(_);q1(this,p,l,s,f)}}),i.display){for(e.save(),o=s-1;o>=0;o--){const d=i.setContext(this.getPointLabelContext(o)),{color:u,lineWidth:_}=d;!_||!u||(e.lineWidth=_,e.strokeStyle=u,e.setLineDash(d.borderDash),e.lineDashOffset=d.borderDashOffset,l=this.getDistanceFromCenterForValue(n.ticks.reverse?this.min:this.max),c=this.getPointPosition(o,l),e.beginPath(),e.moveTo(this.xCenter,this.yCenter),e.lineTo(c.x,c.y),e.stroke())}e.restore()}}drawBorder(){}drawLabels(){const e=this.ctx,n=this.options,i=n.ticks;if(!i.display)return;const r=this.getIndexAngle(0);let a,s;e.save(),e.translate(this.xCenter,this.yCenter),e.rotate(r),e.textAlign="center",e.textBaseline="middle",this.ticks.forEach((o,l)=>{if(l===0&&!n.reverse)return;const c=i.setContext(this.getContext(l)),d=gt(c.font);if(a=this.getDistanceFromCenterForValue(this.ticks[l].value),c.showLabelBackdrop){e.font=d.string,s=e.measureText(o.label).width,e.fillStyle=c.backdropColor;const u=Ot(c.backdropPadding);e.fillRect(-s/2-u.left,-a-d.size/2-u.top,s+u.width,d.size+u.height)}er(e,o.label,0,-a,d,{color:c.color,strokeColor:c.textStrokeColor,strokeWidth:c.textStrokeWidth})}),e.restore()}drawTitle(){}}ae(oa,"id","radialLinear"),ae(oa,"defaults",{display:!0,animate:!0,position:"chartArea",angleLines:{display:!0,lineWidth:1,borderDash:[],borderDashOffset:0},grid:{circular:!1},startAngle:0,ticks:{showLabelBackdrop:!0,callback:Ml.formatters.numeric},pointLabels:{backdropColor:void 0,backdropPadding:2,display:!0,font:{size:10},callback(e){return e},padding:5,centerPointLabels:!1}}),ae(oa,"defaultRoutes",{"angleLines.color":"borderColor","pointLabels.color":"color","ticks.color":"color"}),ae(oa,"descriptors",{angleLines:{_fallback:"grid"}});const Fl={millisecond:{common:!0,size:1,steps:1e3},second:{common:!0,size:1e3,steps:60},minute:{common:!0,size:6e4,steps:60},hour:{common:!0,size:36e5,steps:24},day:{common:!0,size:864e5,steps:30},week:{common:!1,size:6048e5,steps:4},month:{common:!0,size:2628e6,steps:12},quarter:{common:!1,size:7884e6,steps:4},year:{common:!0,size:3154e7}},Yt=Object.keys(Fl);function RE(t,e){return t-e}function CE(t,e){if(Le(e))return null;const n=t._adapter,{parser:i,round:r,isoWeekday:a}=t._parseOpts;let s=e;return typeof i=="function"&&(s=i(s)),dt(s)||(s=typeof i=="string"?n.parse(s,i):n.parse(s)),s===null?null:(r&&(s=r==="week"&&(Pr(a)||a===!0)?n.startOf(s,"isoWeek",a):n.startOf(s,r)),+s)}function yE(t,e,n,i){const r=Yt.length;for(let a=Yt.indexOf(t);a=Yt.indexOf(n);a--){const s=Yt[a];if(Fl[s].common&&t._adapter.diff(r,i,s)>=e-1)return s}return Yt[n?Yt.indexOf(n):0]}function K1(t){for(let e=Yt.indexOf(t)+1,n=Yt.length;e=e?n[i]:n[r];t[a]=!0}}function Q1(t,e,n,i){const r=t._adapter,a=+r.startOf(e[0].value,i),s=e[e.length-1].value;let o,l;for(o=a;o<=s;o=+r.add(o,1,i))l=n[o],l>=0&&(e[l].major=!0);return e}function NE(t,e,n){const i=[],r={},a=e.length;let s,o;for(s=0;s+e.value))}initOffsets(e=[]){let n=0,i=0,r,a;this.options.offset&&e.length&&(r=this.getDecimalForValue(e[0]),e.length===1?n=1-r:n=(this.getDecimalForValue(e[1])-r)/2,a=this.getDecimalForValue(e[e.length-1]),e.length===1?i=a:i=(a-this.getDecimalForValue(e[e.length-2]))/2);const s=e.length<3?.5:.25;n=vt(n,0,s),i=vt(i,0,s),this._offsets={start:n,end:i,factor:1/(n+1+i)}}_generate(){const e=this._adapter,n=this.min,i=this.max,r=this.options,a=r.time,s=a.unit||yE(a.minUnit,n,i,this._getLabelCapacity(n)),o=xe(r.ticks.stepSize,1),l=s==="week"?a.isoWeekday:!1,c=Pr(l)||l===!0,d={};let u=n,_,p;if(c&&(u=+e.startOf(u,"isoWeek",l)),u=+e.startOf(u,c?"day":s),e.diff(i,n,s)>1e5*o)throw new Error(n+" and "+i+" are too far apart with stepSize of "+o+" "+s);const f=r.ticks.source==="data"&&this.getDataTimestamps();for(_=u,p=0;_+m)}getLabelForValue(e){const n=this._adapter,i=this.options.time;return i.tooltipFormat?n.format(e,i.tooltipFormat):n.format(e,i.displayFormats.datetime)}format(e,n){const r=this.options.time.displayFormats,a=this._unit,s=n||r[a];return this._adapter.format(e,s)}_tickFormatFunction(e,n,i,r){const a=this.options,s=a.ticks.callback;if(s)return qe(s,[e,n,i],this);const o=a.time.displayFormats,l=this._unit,c=this._majorUnit,d=l&&o[l],u=c&&o[c],_=i[n],p=c&&u&&_&&_.major;return this._adapter.format(e,r||(p?u:d))}generateTickLabels(e){let n,i,r;for(n=0,i=e.length;n0?o:1}getDataTimestamps(){let e=this._cache.data||[],n,i;if(e.length)return e;const r=this.getMatchingVisibleMetas();if(this._normalized&&r.length)return this._cache.data=r[0].controller.getAllParsedValues(this);for(n=0,i=r.length;n=t[i].pos&&e<=t[r].pos&&({lo:i,hi:r}=Ln(t,"pos",e)),{pos:a,time:o}=t[i],{pos:s,time:l}=t[r]):(e>=t[i].time&&e<=t[r].time&&({lo:i,hi:r}=Ln(t,"time",e)),{time:a,pos:o}=t[i],{time:s,pos:l}=t[r]);const c=s-a;return c?o+(l-o)*(e-a)/c:o}class Zp extends rs{constructor(e){super(e),this._table=[],this._minPos=void 0,this._tableRange=void 0}initOffsets(){const e=this._getTimestampsForTable(),n=this._table=this.buildLookupTable(e);this._minPos=to(n,this.min),this._tableRange=to(n,this.max)-this._minPos,super.initOffsets(e)}buildLookupTable(e){const{min:n,max:i}=this,r=[],a=[];let s,o,l,c,d;for(s=0,o=e.length;s=n&&c<=i&&r.push(c);if(r.length<2)return[{time:n,pos:0},{time:i,pos:1}];for(s=0,o=r.length;sr-a)}_getTimestampsForTable(){let e=this._cache.all||[];if(e.length)return e;const n=this.getDataTimestamps(),i=this.getLabelTimestamps();return n.length&&i.length?e=this.normalize(n.concat(i)):e=n.length?n:i,e=this._cache.all=e,e}getDecimalForValue(e){return(to(this._table,e)-this._minPos)/this._tableRange}getValueForPixel(e){const n=this._offsets,i=this.getDecimalForPixel(e)/n.factor-n.end;return to(this._table,i*this._tableRange+this._minPos,!0)}}ae(Zp,"id","timeseries"),ae(Zp,"defaults",rs.defaults);var X1=Object.freeze({__proto__:null,CategoryScale:Wp,LinearScale:Kp,LogarithmicScale:Qp,RadialLinearScale:oa,TimeScale:rs,TimeSeriesScale:Zp});const Ny=[ik,M0,N1,X1],Ay={data:{type:Object,required:!0},options:{type:Object,default:()=>({})},plugins:{type:Array,default:()=>[]},datasetIdKey:{type:String,default:"label"},updateMode:{type:String,default:void 0}},Z1={type:{type:String,required:!0},...Ay},j1=DR[0]==="2"?(t,e)=>Object.assign(t,{attrs:e}):(t,e)=>Object.assign(t,e);function dr(t){return El(t)?ke(t):t}function J1(t){let e=arguments.length>1&&arguments[1]!==void 0?arguments[1]:t;return El(e)?new Proxy(t,{}):t}function eF(t,e){const n=t.options;n&&e&&Object.assign(n,e)}function Iy(t,e){t.labels=e}function Dy(t,e,n){const i=[];t.datasets=e.map(r=>{const a=t.datasets.find(s=>s[n]===r[n]);return!a||!r.data||i.includes(a)?{...r}:(i.push(a),Object.assign(a,r),a)})}function tF(t,e){const n={labels:[],datasets:[]};return Iy(n,t.labels),Dy(n,t.datasets,e),n}const nF=Ve({props:Z1,setup(t,e){let{expose:n}=e;const i=lt(null),r=vm(null);n({chart:r});const a=()=>{if(!i.value)return;const{type:l,data:c,options:d,plugins:u,datasetIdKey:_}=t,p=tF(c,_),f=J1(p,c);r.value=new tr(i.value,{type:l,data:f,options:{...d},plugins:u})},s=()=>{const l=ke(r.value);l&&(l.destroy(),r.value=null)},o=l=>{l.update(t.updateMode)};return Am(a),_R(s),En([()=>t.options,()=>t.data],(l,c)=>{let[d,u]=l,[_,p]=c;const f=ke(r.value);if(!f)return;let m=!1;if(d){const g=dr(d),h=dr(_);g&&g!==h&&(eF(f,g),m=!0)}if(u){const g=dr(u.labels),h=dr(p.labels),S=dr(u.datasets),T=dr(p.datasets);g!==h&&(Iy(f.config.data,g),m=!0),S&&S!==T&&(Dy(f.config.data,S,t.datasetIdKey),m=!0)}m&&o(f)},{deep:!0}),()=>hi("canvas",{ref:i})}});function xy(t,e){return tr.register(e),Ve({props:Ay,setup(n,i){let{expose:r}=i;const a=vm(null),s=o=>{a.value=o==null?void 0:o.chart};return r({chart:a}),()=>hi(nF,j1({ref:s},{type:t,...n}))}})}const iF=xy("bar",Ra),rF=xy("radar",ya);/*!
+ * chartjs-plugin-datalabels v2.2.0
+ * https://chartjs-plugin-datalabels.netlify.app
+ * (c) 2017-2022 chartjs-plugin-datalabels contributors
+ * Released under the MIT license
+ */var AE=function(){if(typeof window<"u"){if(window.devicePixelRatio)return window.devicePixelRatio;var t=window.screen;if(t)return(t.deviceXDPI||1)/(t.logicalXDPI||1)}return 1}(),Aa={toTextLines:function(t){var e=[],n;for(t=[].concat(t);t.length;)n=t.pop(),typeof n=="string"?e.unshift.apply(e,n.split(`
+`)):Array.isArray(n)?t.push.apply(t,n):Le(t)||e.unshift(""+n);return e},textSize:function(t,e,n){var i=[].concat(e),r=i.length,a=t.font,s=0,o;for(t.font=n.string,o=0;on.right&&(i|=My),en.bottom&&(i|=Ly),i}function oF(t,e){for(var n=t.x0,i=t.y0,r=t.x1,a=t.y1,s=no(n,i,e),o=no(r,a,e),l,c,d;!(!(s|o)||s&o);)l=s||o,l&Py?(c=n+(r-n)*(e.top-i)/(a-i),d=e.top):l&Ly?(c=n+(r-n)*(e.bottom-i)/(a-i),d=e.bottom):l&My?(d=i+(a-i)*(e.right-n)/(r-n),c=e.right):l&wy&&(d=i+(a-i)*(e.left-n)/(r-n),c=e.left),l===s?(n=c,i=d,s=no(n,i,e)):(r=c,a=d,o=no(r,a,e));return{x0:n,x1:r,y0:i,y1:a}}function io(t,e){var n=e.anchor,i=t,r,a;return e.clamp&&(i=oF(i,e.area)),n==="start"?(r=i.x0,a=i.y0):n==="end"?(r=i.x1,a=i.y1):(r=(i.x0+i.x1)/2,a=(i.y0+i.y1)/2),aF(r,a,t.vx,t.vy,e.align)}var ro={arc:function(t,e){var n=(t.startAngle+t.endAngle)/2,i=Math.cos(n),r=Math.sin(n),a=t.innerRadius,s=t.outerRadius;return io({x0:t.x+i*a,y0:t.y+r*a,x1:t.x+i*s,y1:t.y+r*s,vx:i,vy:r},e)},point:function(t,e){var n=hc(t,e.origin),i=n.x*t.options.radius,r=n.y*t.options.radius;return io({x0:t.x-i,y0:t.y-r,x1:t.x+i,y1:t.y+r,vx:n.x,vy:n.y},e)},bar:function(t,e){var n=hc(t,e.origin),i=t.x,r=t.y,a=0,s=0;return t.horizontal?(i=Math.min(t.x,t.base),a=Math.abs(t.base-t.x)):(r=Math.min(t.y,t.base),s=Math.abs(t.base-t.y)),io({x0:i,y0:r+s,x1:i+a,y1:r,vx:n.x,vy:n.y},e)},fallback:function(t,e){var n=hc(t,e.origin);return io({x0:t.x,y0:t.y,x1:t.x+(t.width||0),y1:t.y+(t.height||0),vx:n.x,vy:n.y},e)}},kn=Aa.rasterize;function lF(t){var e=t.borderWidth||0,n=t.padding,i=t.size.height,r=t.size.width,a=-r/2,s=-i/2;return{frame:{x:a-n.left-e,y:s-n.top-e,w:r+n.width+e*2,h:i+n.height+e*2},text:{x:a,y:s,w:r,h:i}}}function cF(t,e){var n=e.chart.getDatasetMeta(e.datasetIndex).vScale;if(!n)return null;if(n.xCenter!==void 0&&n.yCenter!==void 0)return{x:n.xCenter,y:n.yCenter};var i=n.getBasePixel();return t.horizontal?{x:i,y:null}:{x:null,y:i}}function dF(t){return t instanceof br?ro.arc:t instanceof Oa?ro.point:t instanceof Na?ro.bar:ro.fallback}function uF(t,e,n,i,r,a){var s=Math.PI/2;if(a){var o=Math.min(a,r/2,i/2),l=e+o,c=n+o,d=e+i-o,u=n+r-o;t.moveTo(e,c),li.x+i.w+n*2||t.y>i.y+i.h+n*2)},intersects:function(t){var e=this._points(),n=t._points(),i=[ao(e[0],e[1]),ao(e[0],e[3])],r,a,s;for(this._rotation!==t._rotation&&i.push(ao(n[0],n[1]),ao(n[0],n[3])),r=0;r=0;--n)for(r=t[n].$layout,i=n-1;i>=0&&r._visible;--i)a=t[i].$layout,a._visible&&r._box.intersects(a._box)&&e(r,a);return t}function SF(t){var e,n,i,r,a,s,o;for(e=0,n=t.length;el.getProps([c],!0)[c]}),a=i.geometry(),s=Uy(o,i.model(),a),r._box.update(s,a,i.rotation()));return EF(t,function(l,c){var d=l._hidable,u=c._hidable;d&&u||u?c._visible=!1:d&&(l._visible=!1)})}var Ia={prepare:function(t){var e=[],n,i,r,a,s;for(n=0,r=t.length;n=0;--n)if(i=t[n].$layout,i&&i._visible&&i._box.contains(e))return t[n];return null},draw:function(t,e){var n,i,r,a,s,o;for(n=0,i=e.length;nTe().uiState.useDarkMode?"#ffffff":"#000000"),gridLines:Fe(()=>Te().uiState.useDarkMode?"rgba(256, 256, 256, 0.2)":"rgba(0, 0, 0, 0.2)"),contentFill:"rgba(190, 22, 34, 0.5)",contentBorder:"rgb(127, 15, 24)",pointFill:"rgba(190, 22, 34, 1)"},OF=Ve({__name:"DistributionDiagram",props:{distribution:{type:Object,required:!0},xScale:{type:String,required:!1,default:"linear"}},setup(t){const e=t;tr.register(...Ny),tr.register(Gy);const n=Fe(()=>Math.max(...e.distribution.splitIntoTenBuckets())),i=["91-100%","81-90%","71-80%","61-70%","51-60%","41-50%","31-40%","21-30%","11-20%","0-10%"],r=Fe(()=>({label:"Comparison Count",backgroundColor:It.contentFill,borderWidth:1,borderColor:It.contentBorder,tickColor:It.ticksAndFont.value})),a=Fe(()=>({labels:i,datasets:[{...r.value,data:e.distribution.splitIntoTenBuckets()}]})),s=Fe(()=>({responsive:!0,maintainAspectRatio:!1,indexAxis:"y",scales:{x:{suggestedMax:e.xScale==="linear"?n.value+5:10**Math.ceil(Math.log10(n.value+5)),type:e.xScale,ticks:{minRotation:e.xScale==="logarithmic"?30:0,autoSkipPadding:10,color:It.ticksAndFont.value,callback:function(o){if(e.xScale==="logarithmic"&&(o+"").match(/1(0)*[^1-9.]/)||e.xScale!=="logarithmic")return o}},grid:{color:It.gridLines.value}},y:{ticks:{color:It.ticksAndFont.value},grid:{color:It.gridLines.value}}},plugins:{datalabels:{color:It.ticksAndFont.value,font:{weight:"bold"},anchor:"end",align:"end",clamp:!0},legend:{display:!1}}}));return(o,l)=>(Ee(),Oe("div",null,[pe(de(iF),{data:a.value,options:s.value},null,8,["data","options"])]))}});function NF(){var t=window.navigator.userAgent,e=t.indexOf("MSIE ");if(e>0)return parseInt(t.substring(e+5,t.indexOf(".",e)),10);var n=t.indexOf("Trident/");if(n>0){var i=t.indexOf("rv:");return parseInt(t.substring(i+3,t.indexOf(".",i)),10)}var r=t.indexOf("Edge/");return r>0?parseInt(t.substring(r+5,t.indexOf(".",r)),10):-1}let Oo;function Jp(){Jp.init||(Jp.init=!0,Oo=NF()!==-1)}var Ul={name:"ResizeObserver",props:{emitOnMount:{type:Boolean,default:!1},ignoreWidth:{type:Boolean,default:!1},ignoreHeight:{type:Boolean,default:!1}},emits:["notify"],mounted(){Jp(),Vr(()=>{this._w=this.$el.offsetWidth,this._h=this.$el.offsetHeight,this.emitOnMount&&this.emitSize()});const t=document.createElement("object");this._resizeObject=t,t.setAttribute("aria-hidden","true"),t.setAttribute("tabindex",-1),t.onload=this.addResizeHandlers,t.type="text/html",Oo&&this.$el.appendChild(t),t.data="about:blank",Oo||this.$el.appendChild(t)},beforeUnmount(){this.removeResizeHandlers()},methods:{compareAndNotify(){(!this.ignoreWidth&&this._w!==this.$el.offsetWidth||!this.ignoreHeight&&this._h!==this.$el.offsetHeight)&&(this._w=this.$el.offsetWidth,this._h=this.$el.offsetHeight,this.emitSize())},emitSize(){this.$emit("notify",{width:this._w,height:this._h})},addResizeHandlers(){this._resizeObject.contentDocument.defaultView.addEventListener("resize",this.compareAndNotify),this.compareAndNotify()},removeResizeHandlers(){this._resizeObject&&this._resizeObject.onload&&(!Oo&&this._resizeObject.contentDocument&&this._resizeObject.contentDocument.defaultView.removeEventListener("resize",this.compareAndNotify),this.$el.removeChild(this._resizeObject),this._resizeObject.onload=null,this._resizeObject=null)}}};const AF=MA();Tl("data-v-b329ee4c");const IF={class:"resize-observer",tabindex:"-1"};vl();const DF=AF((t,e,n,i,r,a)=>(Ee(),_t("div",IF)));Ul.render=DF;Ul.__scopeId="data-v-b329ee4c";Ul.__file="src/components/ResizeObserver.vue";function No(t){"@babel/helpers - typeof";return typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?No=function(e){return typeof e}:No=function(e){return e&&typeof Symbol=="function"&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},No(t)}function xF(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}function xE(t,e){for(var n=0;nt.length)&&(e=t.length);for(var n=0,i=new Array(e);n2&&arguments[2]!==void 0?arguments[2]:{},i,r,a,s=function(l){for(var c=arguments.length,d=new Array(c>1?c-1:0),u=1;u1){var c=o.find(function(u){return u.isIntersecting});c&&(l=c)}if(r.callback){var d=l.isIntersecting&&l.intersectionRatio>=r.threshold;if(d===r.oldResult)return;r.oldResult=d,r.callback(d,l)}},this.options.intersection),Vr(function(){r.observer&&r.observer.observe(r.el)})}}},{key:"destroyObserver",value:function(){this.observer&&(this.observer.disconnect(),this.observer=null),this.callback&&this.callback._clear&&(this.callback._clear(),this.callback=null)}},{key:"threshold",get:function(){return this.options.intersection&&typeof this.options.intersection.threshold=="number"?this.options.intersection.threshold:0}}]),t}();function Hy(t,e,n){var i=e.value;if(i)if(typeof IntersectionObserver>"u")console.warn("[vue-observe-visibility] IntersectionObserver API is not available in your browser. Please install this polyfill: https://github.com/w3c/IntersectionObserver/tree/master/polyfill");else{var r=new BF(t,i,n);t._vue_visibilityState=r}}function GF(t,e,n){var i=e.value,r=e.oldValue;if(!zy(i,r)){var a=t._vue_visibilityState;if(!i){Vy(t);return}a?a.createObserver(i,n):Hy(t,{value:i},n)}}function Vy(t){var e=t._vue_visibilityState;e&&(e.destroyObserver(),delete t._vue_visibilityState)}var YF={beforeMount:Hy,updated:GF,unmounted:Vy};function zF(t){return{all:t=t||new Map,on:function(e,n){var i=t.get(e);i&&i.push(n)||t.set(e,[n])},off:function(e,n){var i=t.get(e);i&&i.splice(i.indexOf(n)>>>0,1)},emit:function(e,n){(t.get(e)||[]).slice().map(function(i){i(n)}),(t.get("*")||[]).slice().map(function(i){i(e,n)})}}}var qy={itemsLimit:1e3},HF=/(auto|scroll)/;function $y(t,e){return t.parentNode===null?e:$y(t.parentNode,e.concat([t]))}var Ec=function(e,n){return getComputedStyle(e,null).getPropertyValue(n)},VF=function(e){return Ec(e,"overflow")+Ec(e,"overflow-y")+Ec(e,"overflow-x")},qF=function(e){return HF.test(VF(e))};function ME(t){if(t instanceof HTMLElement||t instanceof SVGElement){for(var e=$y(t.parentNode,[]),n=0;n{this.$_prerender=!1,this.updateVisibleItems(!0),this.ready=!0})},activated(){const t=this.$_lastUpdateScrollPosition;typeof t=="number"&&this.$nextTick(()=>{this.scrollToPosition(t)})},beforeUnmount(){this.removeListeners()},methods:{addView(t,e,n,i,r){const a=us({id:WF++,index:e,used:!0,key:i,type:r}),s=Sm({item:n,position:0,nr:a});return t.push(s),s},unuseView(t,e=!1){const n=this.$_unusedViews,i=t.nr.type;let r=n.get(i);r||(r=[],n.set(i,r)),r.push(t),e||(t.nr.used=!1,t.position=-9999)},handleResize(){this.$emit("resize"),this.ready&&this.updateVisibleItems(!1)},handleScroll(t){if(!this.$_scrollDirty){if(this.$_scrollDirty=!0,this.$_updateTimeout)return;const e=()=>requestAnimationFrame(()=>{this.$_scrollDirty=!1;const{continuous:n}=this.updateVisibleItems(!1,!0);n||(clearTimeout(this.$_refreshTimout),this.$_refreshTimout=setTimeout(this.handleScroll,this.updateInterval+100))});e(),this.updateInterval&&(this.$_updateTimeout=setTimeout(()=>{this.$_updateTimeout=0,this.$_scrollDirty&&e()},this.updateInterval))}},handleVisibilityChange(t,e){this.ready&&(t||e.boundingClientRect.width!==0||e.boundingClientRect.height!==0?(this.$emit("visible"),requestAnimationFrame(()=>{this.updateVisibleItems(!1)})):this.$emit("hidden"))},updateVisibleItems(t,e=!1){const n=this.itemSize,i=this.gridItems||1,r=this.itemSecondarySize||n,a=this.$_computedMinItemSize,s=this.typeField,o=this.simpleArray?null:this.keyField,l=this.items,c=l.length,d=this.sizes,u=this.$_views,_=this.$_unusedViews,p=this.pool,f=this.itemIndexByKey;let m,g,h,S,T;if(!c)m=g=S=T=h=0;else if(this.$_prerender)m=S=0,g=T=Math.min(this.prerender,l.length),h=null;else{const U=this.getScroll();if(e){let G=U.start-this.$_lastUpdateScrollPosition;if(G<0&&(G=-G),n===null&&GU.start&&(Y=Z),Z=~~((R+Y)/2);while(Z!==M);for(Z<0&&(Z=0),m=Z,h=d[c-1].accumulator,g=Z;gc&&(g=c)),S=m;Sc&&(g=c),S<0&&(S=0),T>c&&(T=c),h=Math.ceil(c/i)*n}}g-m>qy.itemsLimit&&this.itemsLimitError(),this.totalSize=h;let b;const v=m<=this.$_endIndex&&g>=this.$_startIndex;if(v)for(let U=0,H=p.length;U=g)&&this.unuseView(b));const O=v?null:new Map;let x,A,D;for(let U=m;U=N.length)&&(b=this.addView(p,U,x,H,A),this.unuseView(b,!0),N=_.get(A)),b=N[D],O.set(A,D+1)),u.delete(b.nr.key),b.nr.used=!0,b.nr.index=U,b.nr.key=H,b.nr.type=A,u.set(H,b),G=!0;else if(!b.nr.used&&(b.nr.used=!0,G=!0,N)){const R=N.indexOf(b);R!==-1&&N.splice(R,1)}b.item=x,G&&(U===l.length-1&&this.$emit("scroll-end"),U===0&&this.$emit("scroll-start")),n===null?(b.position=d[U-1].accumulator,b.offset=0):(b.position=Math.floor(U/i)*n,b.offset=U%i*r)}return this.$_startIndex=m,this.$_endIndex=g,this.emitUpdate&&this.$emit("update",m,g,S,T),clearTimeout(this.$_sortTimer),this.$_sortTimer=setTimeout(this.sortViews,this.updateInterval+300),{continuous:v}},getListenerTarget(){let t=ME(this.$el);return window.document&&(t===window.document.documentElement||t===window.document.body)&&(t=window),t},getScroll(){const{$el:t,direction:e}=this,n=e==="vertical";let i;if(this.pageMode){const r=t.getBoundingClientRect(),a=n?r.height:r.width;let s=-(n?r.top:r.left),o=n?window.innerHeight:window.innerWidth;s<0&&(o+=s,s=0),s+o>a&&(o=a-s),i={start:s,end:s+o}}else n?i={start:t.scrollTop,end:t.scrollTop+t.clientHeight}:i={start:t.scrollLeft,end:t.scrollLeft+t.clientWidth};return i},applyPageMode(){this.pageMode?this.addListeners():this.removeListeners()},addListeners(){this.listenerTarget=this.getListenerTarget(),this.listenerTarget.addEventListener("scroll",this.handleScroll,nm?{passive:!0}:!1),this.listenerTarget.addEventListener("resize",this.handleResize)},removeListeners(){this.listenerTarget&&(this.listenerTarget.removeEventListener("scroll",this.handleScroll),this.listenerTarget.removeEventListener("resize",this.handleResize),this.listenerTarget=null)},scrollToItem(t){let e;const n=this.gridItems||1;this.itemSize===null?e=t>0?this.sizes[t-1].accumulator:0:e=Math.floor(t/n)*this.itemSize,this.scrollToPosition(e)},scrollToPosition(t){const e=this.direction==="vertical"?{scroll:"scrollTop",start:"top"}:{scroll:"scrollLeft",start:"left"};let n,i,r;if(this.pageMode){const a=ME(this.$el),s=a.tagName==="HTML"?0:a[e.scroll],o=a.getBoundingClientRect(),c=this.$el.getBoundingClientRect()[e.start]-o[e.start];n=a,i=e.scroll,r=t+s+c}else n=this.$el,i=e.scroll,r=t;n[i]=r},itemsLimitError(){throw setTimeout(()=>{console.log("It seems the scroller element isn't scrolling, so it tries to render all the items at once.","Scroller:",this.$el),console.log("Make sure the scroller has a fixed height (or width) and 'overflow-y' (or 'overflow-x') set to 'auto' so it can scroll correctly and only render the items visible in the scroll viewport.")}),new Error("Rendered items limit reached")},sortViews(){this.pool.sort((t,e)=>t.nr.index-e.nr.index)}}};const KF={key:0,ref:"before",class:"vue-recycle-scroller__slot"},QF={key:1,ref:"after",class:"vue-recycle-scroller__slot"};function XF(t,e,n,i,r,a){const s=ps("ResizeObserver"),o=rI("observe-visibility");return Nm((Ee(),Oe("div",{class:Jt(["vue-recycle-scroller",{ready:r.ready,"page-mode":n.pageMode,[`direction-${t.direction}`]:!0}]),onScrollPassive:e[0]||(e[0]=(...l)=>a.handleScroll&&a.handleScroll(...l))},[t.$slots.before?(Ee(),Oe("div",KF,[Lt(t.$slots,"before")],512)):_i("v-if",!0),(Ee(),_t(Vf(n.listTag),{ref:"wrapper",style:vn({[t.direction==="vertical"?"minHeight":"minWidth"]:r.totalSize+"px"}),class:Jt(["vue-recycle-scroller__item-wrapper",n.listClass])},{default:Se(()=>[(Ee(!0),Oe(bt,null,nr(r.pool,l=>(Ee(),_t(Vf(n.itemTag),Pm({key:l.nr.id,style:r.ready?{transform:`translate${t.direction==="vertical"?"Y":"X"}(${l.position}px) translate${t.direction==="vertical"?"X":"Y"}(${l.offset}px)`,width:n.gridItems?`${t.direction==="vertical"&&n.itemSecondarySize||n.itemSize}px`:void 0,height:n.gridItems?`${t.direction==="horizontal"&&n.itemSecondarySize||n.itemSize}px`:void 0}:null,class:["vue-recycle-scroller__item-view",[n.itemClass,{hover:!n.skipHover&&r.hoverKey===l.nr.key}]]},aI(n.skipHover?{}:{mouseenter:()=>{r.hoverKey=l.nr.key},mouseleave:()=>{r.hoverKey=null}})),{default:Se(()=>[Lt(t.$slots,"default",{item:l.item,index:l.nr.index,active:l.nr.used})]),_:2},1040,["style","class"]))),128)),Lt(t.$slots,"empty")]),_:3},8,["style","class"])),t.$slots.after?(Ee(),Oe("div",QF,[Lt(t.$slots,"after")],512)):_i("v-if",!0),pe(s,{onNotify:a.handleResize},null,8,["onNotify"])],34)),[[o,a.handleVisibilityChange]])}as.render=XF;as.__file="src/components/RecycleScroller.vue";var ss={name:"DynamicScroller",components:{RecycleScroller:as},provide(){return typeof ResizeObserver<"u"&&(this.$_resizeObserver=new ResizeObserver(t=>{requestAnimationFrame(()=>{if(Array.isArray(t)){for(const e of t)if(e.target&&e.target.$_vs_onResize){let n,i;if(e.borderBoxSize){const r=e.borderBoxSize[0];n=r.inlineSize,i=r.blockSize}else n=e.contentRect.width,i=e.contentRect.height;e.target.$_vs_onResize(e.target.$_vs_id,n,i)}}})})),{vscrollData:this.vscrollData,vscrollParent:this,vscrollResizeObserver:this.$_resizeObserver}},inheritAttrs:!1,props:{...Wy,minItemSize:{type:[Number,String],required:!0}},emits:["resize","visible"],data(){return{vscrollData:{active:!0,sizes:{},keyField:this.keyField,simpleArray:!1}}},computed:{simpleArray:Ky,itemsWithSize(){const t=[],{items:e,keyField:n,simpleArray:i}=this,r=this.vscrollData.sizes,a=e.length;for(let s=0;s