UNPKG

lightweight-charts

Version:

Performant financial charts built with HTML5 canvas

7 lines 169 kB
/*! * @license * TradingView Lightweight Charts™ v5.0.6 * Copyright (c) 2025 TradingView, Inc. * Licensed under Apache License 2.0 https://www.apache.org/licenses/LICENSE-2.0 */ import{size as t,bindCanvasElementBitmapSizeTo as i,equalSizes as s,tryCreateCanvasRenderingTarget2D as n}from"fancy-canvas";const e={title:"",visible:!0,lastValueVisible:!0,priceLineVisible:!0,priceLineSource:0,priceLineWidth:1,priceLineColor:"",priceLineStyle:2,baseLineVisible:!0,baseLineWidth:1,baseLineColor:"#B2B5BE",baseLineStyle:0,priceFormat:{type:"price",precision:2,minMove:.01}};var r,h;function a(t,i){const s={0:[],1:[t.lineWidth,t.lineWidth],2:[2*t.lineWidth,2*t.lineWidth],3:[6*t.lineWidth,6*t.lineWidth],4:[t.lineWidth,4*t.lineWidth]}[i];t.setLineDash(s)}function l(t,i,s,n){t.beginPath();const e=t.lineWidth%2?.5:0;t.moveTo(s,i+e),t.lineTo(n,i+e),t.stroke()}function o(t,i){if(!t)throw new Error("Assertion failed"+(i?": "+i:""))}function _(t){if(void 0===t)throw new Error("Value is undefined");return t}function u(t){if(null===t)throw new Error("Value is null");return t}function c(t){return u(_(t))}!function(t){t[t.Simple=0]="Simple",t[t.WithSteps=1]="WithSteps",t[t.Curved=2]="Curved"}(r||(r={})),function(t){t[t.Solid=0]="Solid",t[t.Dotted=1]="Dotted",t[t.Dashed=2]="Dashed",t[t.LargeDashed=3]="LargeDashed",t[t.SparseDotted=4]="SparseDotted"}(h||(h={}));class d{constructor(){this.t=[]}i(t,i,s){const n={h:t,l:i,o:!0===s};this.t.push(n)}_(t){const i=this.t.findIndex((i=>t===i.h));i>-1&&this.t.splice(i,1)}u(t){this.t=this.t.filter((i=>i.l!==t))}p(t,i,s){const n=[...this.t];this.t=this.t.filter((t=>!t.o)),n.forEach((n=>n.h(t,i,s)))}v(){return this.t.length>0}m(){this.t=[]}}function f(t,...i){for(const s of i)for(const i in s)void 0!==s[i]&&Object.prototype.hasOwnProperty.call(s,i)&&!["__proto__","constructor","prototype"].includes(i)&&("object"!=typeof s[i]||void 0===t[i]||Array.isArray(s[i])?t[i]=s[i]:f(t[i],s[i]));return t}function p(t){return"number"==typeof t&&isFinite(t)}function v(t){return"number"==typeof t&&t%1==0}function m(t){return"string"==typeof t}function w(t){return"boolean"==typeof t}function g(t){const i=t;if(!i||"object"!=typeof i)return i;let s,n,e;for(n in s=Array.isArray(i)?[]:{},i)i.hasOwnProperty(n)&&(e=i[n],s[n]=e&&"object"==typeof e?g(e):e);return s}function M(t){return null!==t}function b(t){return null===t?void 0:t}const x="-apple-system, BlinkMacSystemFont, 'Trebuchet MS', Roboto, Ubuntu, sans-serif";function S(t,i,s){return void 0===i&&(i=x),`${s=void 0!==s?`${s} `:""}${t}px ${i}`}class C{constructor(t){this.M={S:1,C:5,P:NaN,k:"",T:"",R:"",D:"",V:0,I:0,B:0,A:0,L:0},this.O=t}N(){const t=this.M,i=this.W(),s=this.F();return t.P===i&&t.T===s||(t.P=i,t.T=s,t.k=S(i,s),t.A=2.5/12*i,t.V=t.A,t.I=i/12*t.C,t.B=i/12*t.C,t.L=0),t.R=this.H(),t.D=this.U(),this.M}H(){return this.O.N().layout.textColor}U(){return this.O.$()}W(){return this.O.N().layout.fontSize}F(){return this.O.N().layout.fontFamily}}function y(t){return t<0?0:t>255?255:Math.round(t)||0}function P(t){return.199*t[0]+.687*t[1]+.114*t[2]}class k{constructor(t,i){this.q=new Map,this.Y=t,i&&(this.q=i)}j(t,i){if("transparent"===t)return t;const s=this.K(t),n=s[3];return`rgba(${s[0]}, ${s[1]}, ${s[2]}, ${i*n})`}X(t){const i=this.K(t);return{Z:`rgb(${i[0]}, ${i[1]}, ${i[2]})`,G:P(i)>160?"black":"white"}}J(t){return P(this.K(t))}tt(t,i,s){const[n,e,r,h]=this.K(t),[a,l,o,_]=this.K(i),u=[y(n+s*(a-n)),y(e+s*(l-e)),y(r+s*(o-r)),(c=h+s*(_-h),c<=0||c>1?Math.min(Math.max(c,0),1):Math.round(1e4*c)/1e4)];var c;return`rgba(${u[0]}, ${u[1]}, ${u[2]}, ${u[3]})`}K(t){const i=this.q.get(t);if(i)return i;const s=function(t){const i=document.createElement("div");i.style.display="none",document.body.appendChild(i),i.style.color=t;const s=window.getComputedStyle(i).color;return document.body.removeChild(i),s}(t),n=s.match(/^rgba?\s*\((\d+),\s*(\d+),\s*(\d+)(?:,\s*(\d*\.?\d+))?\)$/);if(!n){if(this.Y.length)for(const i of this.Y){const s=i(t);if(s)return this.q.set(t,s),s}throw new Error(`Failed to parse color: ${t}`)}const e=[parseInt(n[1],10),parseInt(n[2],10),parseInt(n[3],10),n[4]?parseFloat(n[4]):1];return this.q.set(t,e),e}}class T{constructor(){this.it=[]}st(t){this.it=t}nt(t,i,s){this.it.forEach((n=>{n.nt(t,i,s)}))}}class R{nt(t,i,s){t.useBitmapCoordinateSpace((t=>this.et(t,i,s)))}}class D extends R{constructor(){super(...arguments),this.rt=null}ht(t){this.rt=t}et({context:t,horizontalPixelRatio:i,verticalPixelRatio:s}){if(null===this.rt||null===this.rt.lt)return;const n=this.rt.lt,e=this.rt,r=Math.max(1,Math.floor(i))%2/2,h=h=>{t.beginPath();for(let a=n.to-1;a>=n.from;--a){const n=e.ot[a],l=Math.round(n._t*i)+r,o=n.ut*s,_=h*s+r;t.moveTo(l,o),t.arc(l,o,_,0,2*Math.PI)}t.fill()};e.ct>0&&(t.fillStyle=e.dt,h(e.ft+e.ct)),t.fillStyle=e.vt,h(e.ft)}}function V(){return{ot:[{_t:0,ut:0,wt:0,gt:0}],vt:"",dt:"",ft:0,ct:0,lt:null}}const I={from:0,to:1};class B{constructor(t,i,s){this.Mt=new T,this.bt=[],this.xt=[],this.St=!0,this.O=t,this.Ct=i,this.yt=s,this.Mt.st(this.bt)}Pt(t){this.kt(),this.St=!0}Tt(){return this.St&&(this.Rt(),this.St=!1),this.Mt}kt(){const t=this.yt.Dt();t.length!==this.bt.length&&(this.xt=t.map(V),this.bt=this.xt.map((t=>{const i=new D;return i.ht(t),i})),this.Mt.st(this.bt))}Rt(){const t=2===this.Ct.N().mode||!this.Ct.Vt(),i=this.yt.It(),s=this.Ct.Bt(),n=this.O.At();this.kt(),i.forEach(((i,e)=>{const r=this.xt[e],h=i.Et(s),a=i.zt();!t&&null!==h&&i.Vt()&&null!==a?(r.vt=h.Lt,r.ft=h.ft,r.ct=h.Ot,r.ot[0].gt=h.gt,r.ot[0].ut=i.Wt().Nt(h.gt,a.Ft),r.dt=h.Ht??this.O.Ut(r.ot[0].ut/i.Wt().$t()),r.ot[0].wt=s,r.ot[0]._t=n.qt(s),r.lt=I):r.lt=null}))}}class A extends R{constructor(t){super(),this.Yt=t}et({context:t,bitmapSize:i,horizontalPixelRatio:s,verticalPixelRatio:n}){if(null===this.Yt)return;const e=this.Yt.jt.Vt,r=this.Yt.Kt.Vt;if(!e&&!r)return;const h=Math.round(this.Yt._t*s),o=Math.round(this.Yt.ut*n);t.lineCap="butt",e&&h>=0&&(t.lineWidth=Math.floor(this.Yt.jt.ct*s),t.strokeStyle=this.Yt.jt.R,t.fillStyle=this.Yt.jt.R,a(t,this.Yt.jt.Xt),function(t,i,s,n){t.beginPath();const e=t.lineWidth%2?.5:0;t.moveTo(i+e,s),t.lineTo(i+e,n),t.stroke()}(t,h,0,i.height)),r&&o>=0&&(t.lineWidth=Math.floor(this.Yt.Kt.ct*n),t.strokeStyle=this.Yt.Kt.R,t.fillStyle=this.Yt.Kt.R,a(t,this.Yt.Kt.Xt),l(t,o,0,i.width))}}class E{constructor(t,i){this.St=!0,this.Zt={jt:{ct:1,Xt:0,R:"",Vt:!1},Kt:{ct:1,Xt:0,R:"",Vt:!1},_t:0,ut:0},this.Gt=new A(this.Zt),this.Jt=t,this.yt=i}Pt(){this.St=!0}Tt(t){return this.St&&(this.Rt(),this.St=!1),this.Gt}Rt(){const t=this.Jt.Vt(),i=this.yt.Qt().N().crosshair,s=this.Zt;if(2===i.mode)return s.Kt.Vt=!1,void(s.jt.Vt=!1);s.Kt.Vt=t&&this.Jt.ti(this.yt),s.jt.Vt=t&&this.Jt.ii(),s.Kt.ct=i.horzLine.width,s.Kt.Xt=i.horzLine.style,s.Kt.R=i.horzLine.color,s.jt.ct=i.vertLine.width,s.jt.Xt=i.vertLine.style,s.jt.R=i.vertLine.color,s._t=this.Jt.si(),s.ut=this.Jt.ni()}}function z(t,i,s,n,e,r){t.fillRect(i+r,s,n-2*r,r),t.fillRect(i+r,s+e-r,n-2*r,r),t.fillRect(i,s,r,e),t.fillRect(i+n-r,s,r,e)}function L(t,i,s,n,e,r){t.save(),t.globalCompositeOperation="copy",t.fillStyle=r,t.fillRect(i,s,n,e),t.restore()}function O(t,i,s,n,e,r){t.beginPath(),t.roundRect?t.roundRect(i,s,n,e,r):(t.lineTo(i+n-r[1],s),0!==r[1]&&t.arcTo(i+n,s,i+n,s+r[1],r[1]),t.lineTo(i+n,s+e-r[2]),0!==r[2]&&t.arcTo(i+n,s+e,i+n-r[2],s+e,r[2]),t.lineTo(i+r[3],s+e),0!==r[3]&&t.arcTo(i,s+e,i,s+e-r[3],r[3]),t.lineTo(i,s+r[0]),0!==r[0]&&t.arcTo(i,s,i+r[0],s,r[0]))}function N(t,i,s,n,e,r,h=0,a=[0,0,0,0],l=""){if(t.save(),!h||!l||l===r)return O(t,i,s,n,e,a),t.fillStyle=r,t.fill(),void t.restore();const o=h/2;var _;O(t,i+o,s+o,n-h,e-h,(_=-o,a.map((t=>0===t?t:t+_)))),"transparent"!==r&&(t.fillStyle=r,t.fill()),"transparent"!==l&&(t.lineWidth=h,t.strokeStyle=l,t.closePath(),t.stroke()),t.restore()}function W(t,i,s,n,e,r,h){t.save(),t.globalCompositeOperation="copy";const a=t.createLinearGradient(0,0,0,e);a.addColorStop(0,r),a.addColorStop(1,h),t.fillStyle=a,t.fillRect(i,s,n,e),t.restore()}class F{constructor(t,i){this.ht(t,i)}ht(t,i){this.Yt=t,this.ei=i}$t(t,i){return this.Yt.Vt?t.P+t.A+t.V:0}nt(t,i,s,n){if(!this.Yt.Vt||0===this.Yt.ri.length)return;const e=this.Yt.R,r=this.ei.Z,h=t.useBitmapCoordinateSpace((t=>{const h=t.context;h.font=i.k;const a=this.hi(t,i,s,n),l=a.ai;return a.li?N(h,l.oi,l._i,l.ui,l.ci,r,l.di,[l.ft,0,0,l.ft],r):N(h,l.fi,l._i,l.ui,l.ci,r,l.di,[0,l.ft,l.ft,0],r),this.Yt.pi&&(h.fillStyle=e,h.fillRect(l.fi,l.mi,l.wi-l.fi,l.gi)),this.Yt.Mi&&(h.fillStyle=i.D,h.fillRect(a.li?l.bi-l.di:0,l._i,l.di,l.xi-l._i)),a}));t.useMediaCoordinateSpace((({context:t})=>{const s=h.Si;t.font=i.k,t.textAlign=h.li?"right":"left",t.textBaseline="middle",t.fillStyle=e,t.fillText(this.Yt.ri,s.Ci,(s._i+s.xi)/2+s.yi)}))}hi(t,i,s,n){const{context:e,bitmapSize:r,mediaSize:h,horizontalPixelRatio:a,verticalPixelRatio:l}=t,o=this.Yt.pi||!this.Yt.Pi?i.C:0,_=this.Yt.ki?i.S:0,u=i.A+this.ei.Ti,c=i.V+this.ei.Ri,d=i.I,f=i.B,p=this.Yt.ri,v=i.P,m=s.Di(e,p),w=Math.ceil(s.Vi(e,p)),g=v+u+c,M=i.S+d+f+w+o,b=Math.max(1,Math.floor(l));let x=Math.round(g*l);x%2!=b%2&&(x+=1);const S=_>0?Math.max(1,Math.floor(_*a)):0,C=Math.round(M*a),y=Math.round(o*a),P=this.ei.Ii??this.ei.Bi,k=Math.round(P*l)-Math.floor(.5*l),T=Math.floor(k+b/2-x/2),R=T+x,D="right"===n,V=D?h.width-_:_,I=D?r.width-S:S;let B,A,E;return D?(B=I-C,A=I-y,E=V-o-d-_):(B=I+C,A=I+y,E=V+o+d),{li:D,ai:{_i:T,mi:k,xi:R,ui:C,ci:x,ft:2*a,di:S,oi:B,fi:I,wi:A,gi:b,bi:r.width},Si:{_i:T/l,xi:R/l,Ci:E,yi:m}}}}class H{constructor(t){this.Ai={Bi:0,Z:"#000",Ri:0,Ti:0},this.Ei={ri:"",Vt:!1,pi:!0,Pi:!1,Ht:"",R:"#FFF",Mi:!1,ki:!1},this.zi={ri:"",Vt:!1,pi:!1,Pi:!0,Ht:"",R:"#FFF",Mi:!0,ki:!0},this.St=!0,this.Li=new(t||F)(this.Ei,this.Ai),this.Oi=new(t||F)(this.zi,this.Ai)}ri(){return this.Ni(),this.Ei.ri}Bi(){return this.Ni(),this.Ai.Bi}Pt(){this.St=!0}$t(t,i=!1){return Math.max(this.Li.$t(t,i),this.Oi.$t(t,i))}Wi(){return this.Ai.Ii||0}Fi(t){this.Ai.Ii=t}Hi(){return this.Ni(),this.Ei.Vt||this.zi.Vt}Ui(){return this.Ni(),this.Ei.Vt}Tt(t){return this.Ni(),this.Ei.pi=this.Ei.pi&&t.N().ticksVisible,this.zi.pi=this.zi.pi&&t.N().ticksVisible,this.Li.ht(this.Ei,this.Ai),this.Oi.ht(this.zi,this.Ai),this.Li}$i(){return this.Ni(),this.Li.ht(this.Ei,this.Ai),this.Oi.ht(this.zi,this.Ai),this.Oi}Ni(){this.St&&(this.Ei.pi=!0,this.zi.pi=!1,this.qi(this.Ei,this.zi,this.Ai))}}class U extends H{constructor(t,i,s){super(),this.Jt=t,this.Yi=i,this.ji=s}qi(t,i,s){if(t.Vt=!1,2===this.Jt.N().mode)return;const n=this.Jt.N().horzLine;if(!n.labelVisible)return;const e=this.Yi.zt();if(!this.Jt.Vt()||this.Yi.Ki()||null===e)return;const r=this.Yi.Xi().X(n.labelBackgroundColor);s.Z=r.Z,t.R=r.G;const h=2/12*this.Yi.P();s.Ti=h,s.Ri=h;const a=this.ji(this.Yi);s.Bi=a.Bi,t.ri=this.Yi.Zi(a.gt,e),t.Vt=!0}}const $=/[1-9]/g;class q{constructor(){this.Yt=null}ht(t){this.Yt=t}nt(t,i){if(null===this.Yt||!1===this.Yt.Vt||0===this.Yt.ri.length)return;const s=t.useMediaCoordinateSpace((({context:t})=>(t.font=i.k,Math.round(i.Gi.Vi(t,u(this.Yt).ri,$)))));if(s<=0)return;const n=i.Ji,e=s+2*n,r=e/2,h=this.Yt.Qi;let a=this.Yt.Bi,l=Math.floor(a-r)+.5;l<0?(a+=Math.abs(0-l),l=Math.floor(a-r)+.5):l+e>h&&(a-=Math.abs(h-(l+e)),l=Math.floor(a-r)+.5);const o=l+e,_=Math.ceil(0+i.S+i.C+i.A+i.P+i.V);t.useBitmapCoordinateSpace((({context:t,horizontalPixelRatio:s,verticalPixelRatio:n})=>{const e=u(this.Yt);t.fillStyle=e.Z;const r=Math.round(l*s),h=Math.round(0*n),a=Math.round(o*s),c=Math.round(_*n),d=Math.round(2*s);if(t.beginPath(),t.moveTo(r,h),t.lineTo(r,c-d),t.arcTo(r,c,r+d,c,d),t.lineTo(a-d,c),t.arcTo(a,c,a,c-d,d),t.lineTo(a,h),t.fill(),e.pi){const r=Math.round(e.Bi*s),a=h,l=Math.round((a+i.C)*n);t.fillStyle=e.R;const o=Math.max(1,Math.floor(s)),_=Math.floor(.5*s);t.fillRect(r-_,a,o,l-a)}})),t.useMediaCoordinateSpace((({context:t})=>{const s=u(this.Yt),e=0+i.S+i.C+i.A+i.P/2;t.font=i.k,t.textAlign="left",t.textBaseline="middle",t.fillStyle=s.R;const r=i.Gi.Di(t,"Apr0");t.translate(l+n,e+r),t.fillText(s.ri,0,0)}))}}class Y{constructor(t,i,s){this.St=!0,this.Gt=new q,this.Zt={Vt:!1,Z:"#4c525e",R:"white",ri:"",Qi:0,Bi:NaN,pi:!0},this.Ct=t,this.ts=i,this.ji=s}Pt(){this.St=!0}Tt(){return this.St&&(this.Rt(),this.St=!1),this.Gt.ht(this.Zt),this.Gt}Rt(){const t=this.Zt;if(t.Vt=!1,2===this.Ct.N().mode)return;const i=this.Ct.N().vertLine;if(!i.labelVisible)return;const s=this.ts.At();if(s.Ki())return;t.Qi=s.Qi();const n=this.ji();if(null===n)return;t.Bi=n.Bi;const e=s.ss(this.Ct.Bt());t.ri=s.ns(u(e)),t.Vt=!0;const r=this.ts.Xi().X(i.labelBackgroundColor);t.Z=r.Z,t.R=r.G,t.pi=s.N().ticksVisible}}class j{constructor(){this.es=null,this.rs=0}hs(){return this.rs}ls(t){this.rs=t}Wt(){return this.es}_s(t){this.es=t}us(t){return[]}cs(){return[]}Vt(){return!0}}var K;!function(t){t[t.Normal=0]="Normal",t[t.Magnet=1]="Magnet",t[t.Hidden=2]="Hidden",t[t.MagnetOHLC=3]="MagnetOHLC"}(K||(K={}));class X extends j{constructor(t,i){super(),this.yt=null,this.ds=NaN,this.fs=0,this.ps=!1,this.vs=new Map,this.ws=!1,this.gs=new WeakMap,this.Ms=new WeakMap,this.bs=NaN,this.xs=NaN,this.Ss=NaN,this.Cs=NaN,this.ts=t,this.ys=i;this.Ps=((t,i)=>s=>{const n=i(),e=t();if(s===u(this.yt).ks())return{gt:e,Bi:n};{const t=u(s.zt());return{gt:s.Ts(n,t),Bi:n}}})((()=>this.ds),(()=>this.xs));const s=((t,i)=>()=>{const s=this.ts.At().Rs(t()),n=i();return s&&Number.isFinite(n)?{wt:s,Bi:n}:null})((()=>this.fs),(()=>this.si()));this.Ds=new Y(this,t,s)}N(){return this.ys}Vs(t,i){this.Ss=t,this.Cs=i}Is(){this.Ss=NaN,this.Cs=NaN}Bs(){return this.Ss}As(){return this.Cs}Es(t,i,s){this.ws||(this.ws=!0),this.ps=!0,this.zs(t,i,s)}Bt(){return this.fs}si(){return this.bs}ni(){return this.xs}Vt(){return this.ps}Ls(){this.ps=!1,this.Os(),this.ds=NaN,this.bs=NaN,this.xs=NaN,this.yt=null,this.Is(),this.Ns()}Ws(t){let i=this.gs.get(t);i||(i=new E(this,t),this.gs.set(t,i));let s=this.Ms.get(t);return s||(s=new B(this.ts,this,t),this.Ms.set(t,s)),[i,s]}ti(t){return t===this.yt&&this.ys.horzLine.visible}ii(){return this.ys.vertLine.visible}Fs(t,i){this.ps&&this.yt===t||this.vs.clear();const s=[];return this.yt===t&&s.push(this.Hs(this.vs,i,this.Ps)),s}cs(){return this.ps?[this.Ds]:[]}Us(){return this.yt}Ns(){this.ts.$s().forEach((t=>{this.gs.get(t)?.Pt(),this.Ms.get(t)?.Pt()})),this.vs.forEach((t=>t.Pt())),this.Ds.Pt()}qs(t){return t&&!t.ks().Ki()?t.ks():null}zs(t,i,s){this.Ys(t,i,s)&&this.Ns()}Ys(t,i,s){const n=this.bs,e=this.xs,r=this.ds,h=this.fs,a=this.yt,l=this.qs(s);this.fs=t,this.bs=isNaN(t)?NaN:this.ts.At().qt(t),this.yt=s;const o=null!==l?l.zt():null;return null!==l&&null!==o?(this.ds=i,this.xs=l.Nt(i,o)):(this.ds=NaN,this.xs=NaN),n!==this.bs||e!==this.xs||h!==this.fs||r!==this.ds||a!==this.yt}Os(){const t=this.ts.js().map((t=>t.Xs().Ks())).filter(M),i=0===t.length?null:Math.max(...t);this.fs=null!==i?i:NaN}Hs(t,i,s){let n=t.get(i);return void 0===n&&(n=new U(this,i,s),t.set(i,n)),n}}function Z(t){return"left"===t||"right"===t}class G{constructor(t){this.Zs=new Map,this.Gs=[],this.Js=t}Qs(t,i){const s=function(t,i){return void 0===t?i:{tn:Math.max(t.tn,i.tn),sn:t.sn||i.sn}}(this.Zs.get(t),i);this.Zs.set(t,s)}nn(){return this.Js}en(t){const i=this.Zs.get(t);return void 0===i?{tn:this.Js}:{tn:Math.max(this.Js,i.tn),sn:i.sn}}rn(){this.hn(),this.Gs=[{an:0}]}ln(t){this.hn(),this.Gs=[{an:1,Ft:t}]}_n(t){this.un(),this.Gs.push({an:5,Ft:t})}hn(){this.un(),this.Gs.push({an:6})}cn(){this.hn(),this.Gs=[{an:4}]}dn(t){this.hn(),this.Gs.push({an:2,Ft:t})}fn(t){this.hn(),this.Gs.push({an:3,Ft:t})}pn(){return this.Gs}vn(t){for(const i of t.Gs)this.mn(i);this.Js=Math.max(this.Js,t.Js),t.Zs.forEach(((t,i)=>{this.Qs(i,t)}))}static wn(){return new G(2)}static gn(){return new G(3)}mn(t){switch(t.an){case 0:this.rn();break;case 1:this.ln(t.Ft);break;case 2:this.dn(t.Ft);break;case 3:this.fn(t.Ft);break;case 4:this.cn();break;case 5:this._n(t.Ft);break;case 6:this.un()}}un(){const t=this.Gs.findIndex((t=>5===t.an));-1!==t&&this.Gs.splice(t,1)}}const J=".";function Q(t,i){if(!p(t))return"n/a";if(!v(i))throw new TypeError("invalid length");if(i<0||i>16)throw new TypeError("invalid length");if(0===i)return t.toString();return("0000000000000000"+t.toString()).slice(-i)}class tt{constructor(t,i){if(i||(i=1),p(t)&&v(t)||(t=100),t<0)throw new TypeError("invalid base");this.Yi=t,this.Mn=i,this.bn()}format(t){const i=t<0?"−":"";return t=Math.abs(t),i+this.xn(t)}bn(){if(this.Sn=0,this.Yi>0&&this.Mn>0){let t=this.Yi;for(;t>1;)t/=10,this.Sn++}}xn(t){const i=this.Yi/this.Mn;let s=Math.floor(t),n="";const e=void 0!==this.Sn?this.Sn:NaN;if(i>1){let r=+(Math.round(t*i)-s*i).toFixed(this.Sn);r>=i&&(r-=i,s+=1),n=J+Q(+r.toFixed(this.Sn)*this.Mn,e)}else s=Math.round(s*i)/i,e>0&&(n=J+Q(0,e));return s.toFixed(0)+n}}class it extends tt{constructor(t=100){super(t)}format(t){return`${super.format(t)}%`}}class st{constructor(t){this.Cn=t}format(t){let i="";return t<0&&(i="-",t=-t),t<995?i+this.yn(t):t<999995?i+this.yn(t/1e3)+"K":t<999999995?(t=1e3*Math.round(t/1e3),i+this.yn(t/1e6)+"M"):(t=1e6*Math.round(t/1e6),i+this.yn(t/1e9)+"B")}yn(t){let i;const s=Math.pow(10,this.Cn);return i=(t=Math.round(t*s)/s)>=1e-15&&t<1?t.toFixed(this.Cn).replace(/\.?0+$/,""):String(t),i.replace(/(\.[1-9]*)0+$/,((t,i)=>i))}}const nt=/[2-9]/g;class et{constructor(t=50){this.Pn=0,this.kn=1,this.Tn=1,this.Rn={},this.Dn=new Map,this.Vn=t}In(){this.Pn=0,this.Dn.clear(),this.kn=1,this.Tn=1,this.Rn={}}Vi(t,i,s){return this.Bn(t,i,s).width}Di(t,i,s){const n=this.Bn(t,i,s);return((n.actualBoundingBoxAscent||0)-(n.actualBoundingBoxDescent||0))/2}Bn(t,i,s){const n=s||nt,e=String(i).replace(n,"0");if(this.Dn.has(e))return _(this.Dn.get(e)).An;if(this.Pn===this.Vn){const t=this.Rn[this.Tn];delete this.Rn[this.Tn],this.Dn.delete(t),this.Tn++,this.Pn--}t.save(),t.textBaseline="middle";const r=t.measureText(e);return t.restore(),0===r.width&&i.length||(this.Dn.set(e,{An:r,En:this.kn}),this.Rn[this.kn]=e,this.Pn++,this.kn++),r}}class rt{constructor(t){this.zn=null,this.M=null,this.Ln="right",this.On=t}Nn(t,i,s){this.zn=t,this.M=i,this.Ln=s}nt(t){null!==this.M&&null!==this.zn&&this.zn.nt(t,this.M,this.On,this.Ln)}}class ht{constructor(t,i,s){this.Wn=t,this.On=new et(50),this.Fn=i,this.O=s,this.W=-1,this.Gt=new rt(this.On)}Tt(){const t=this.O.Hn(this.Fn);if(null===t)return null;const i=t.Un(this.Fn)?t.$n():this.Fn.Wt();if(null===i)return null;const s=t.qn(i);if("overlay"===s)return null;const n=this.O.Yn();return n.P!==this.W&&(this.W=n.P,this.On.In()),this.Gt.Nn(this.Wn.$i(),n,s),this.Gt}}class at extends R{constructor(){super(...arguments),this.Yt=null}ht(t){this.Yt=t}jn(t,i){if(!this.Yt?.Vt)return null;const{ut:s,ct:n,Kn:e}=this.Yt;return i>=s-n-7&&i<=s+n+7?{Xn:this.Yt,Kn:e}:null}et({context:t,bitmapSize:i,horizontalPixelRatio:s,verticalPixelRatio:n}){if(null===this.Yt)return;if(!1===this.Yt.Vt)return;const e=Math.round(this.Yt.ut*n);e<0||e>i.height||(t.lineCap="butt",t.strokeStyle=this.Yt.R,t.lineWidth=Math.floor(this.Yt.ct*s),a(t,this.Yt.Xt),l(t,e,0,i.width))}}class lt{constructor(t){this.Zn={ut:0,R:"rgba(0, 0, 0, 0)",ct:1,Xt:0,Vt:!1},this.Gn=new at,this.St=!0,this.Jn=t,this.Qn=t.Qt(),this.Gn.ht(this.Zn)}Pt(){this.St=!0}Tt(){return this.Jn.Vt()?(this.St&&(this.te(),this.St=!1),this.Gn):null}}class ot extends lt{constructor(t){super(t)}te(){this.Zn.Vt=!1;const t=this.Jn.Wt(),i=t.ie().ie;if(2!==i&&3!==i)return;const s=this.Jn.N();if(!s.baseLineVisible||!this.Jn.Vt())return;const n=this.Jn.zt();null!==n&&(this.Zn.Vt=!0,this.Zn.ut=t.Nt(n.Ft,n.Ft),this.Zn.R=s.baseLineColor,this.Zn.ct=s.baseLineWidth,this.Zn.Xt=s.baseLineStyle)}}class _t extends R{constructor(){super(...arguments),this.Yt=null}ht(t){this.Yt=t}se(){return this.Yt}et({context:t,horizontalPixelRatio:i,verticalPixelRatio:s}){const n=this.Yt;if(null===n)return;const e=Math.max(1,Math.floor(i)),r=e%2/2,h=Math.round(n.ne.x*i)+r,a=n.ne.y*s;t.fillStyle=n.ee,t.beginPath();const l=Math.max(2,1.5*n.re)*i;t.arc(h,a,l,0,2*Math.PI,!1),t.fill(),t.fillStyle=n.he,t.beginPath(),t.arc(h,a,n.ft*i,0,2*Math.PI,!1),t.fill(),t.lineWidth=e,t.strokeStyle=n.ae,t.beginPath(),t.arc(h,a,n.ft*i+e/2,0,2*Math.PI,!1),t.stroke()}}const ut=[{le:0,oe:.25,_e:4,ue:10,ce:.25,de:0,fe:.4,pe:.8},{le:.25,oe:.525,_e:10,ue:14,ce:0,de:0,fe:.8,pe:0},{le:.525,oe:1,_e:14,ue:14,ce:0,de:0,fe:0,pe:0}];class ct{constructor(t){this.Gt=new _t,this.St=!0,this.ve=!0,this.me=performance.now(),this.we=this.me-1,this.ge=t}Me(){this.we=this.me-1,this.Pt()}be(){if(this.Pt(),2===this.ge.N().lastPriceAnimation){const t=performance.now(),i=this.we-t;if(i>0)return void(i<650&&(this.we+=2600));this.me=t,this.we=t+2600}}Pt(){this.St=!0}xe(){this.ve=!0}Vt(){return 0!==this.ge.N().lastPriceAnimation}Se(){switch(this.ge.N().lastPriceAnimation){case 0:return!1;case 1:return!0;case 2:return performance.now()<=this.we}}Tt(){return this.St?(this.Rt(),this.St=!1,this.ve=!1):this.ve&&(this.Ce(),this.ve=!1),this.Gt}Rt(){this.Gt.ht(null);const t=this.ge.Qt().At(),i=t.ye(),s=this.ge.zt();if(null===i||null===s)return;const n=this.ge.Pe(!0);if(n.ke||!i.Te(n.Re))return;const e={x:t.qt(n.Re),y:this.ge.Wt().Nt(n.gt,s.Ft)},r=n.R,h=this.ge.N().lineWidth,a=this.De(this.Ve(),r);this.Gt.ht({ee:r,re:h,he:a.he,ae:a.ae,ft:a.ft,ne:e})}Ce(){const t=this.Gt.se();if(null!==t){const i=this.De(this.Ve(),t.ee);t.he=i.he,t.ae=i.ae,t.ft=i.ft}}Ve(){return this.Se()?performance.now()-this.me:2599}Ie(t,i,s,n){const e=s+(n-s)*i;return this.ge.Qt().Xi().j(t,e)}De(t,i){const s=t%2600/2600;let n;for(const t of ut)if(s>=t.le&&s<=t.oe){n=t;break}o(void 0!==n,"Last price animation internal logic error");const e=(s-n.le)/(n.oe-n.le);return{he:this.Ie(i,e,n.ce,n.de),ae:this.Ie(i,e,n.fe,n.pe),ft:(r=e,h=n._e,a=n.ue,h+(a-h)*r)};var r,h,a}}class dt extends lt{constructor(t){super(t)}te(){const t=this.Zn;t.Vt=!1;const i=this.Jn.N();if(!i.priceLineVisible||!this.Jn.Vt())return;const s=this.Jn.Pe(0===i.priceLineSource);s.ke||(t.Vt=!0,t.ut=s.Bi,t.R=this.Jn.Be(s.R),t.ct=i.priceLineWidth,t.Xt=i.priceLineStyle)}}class ft extends H{constructor(t){super(),this.Jt=t}qi(t,i,s){t.Vt=!1,i.Vt=!1;const n=this.Jt;if(!n.Vt())return;const e=n.N(),r=e.lastValueVisible,h=""!==n.Ae(),a=0===e.seriesLastValueMode,l=n.Pe(!1);if(l.ke)return;r&&(t.ri=this.Ee(l,r,a),t.Vt=0!==t.ri.length),(h||a)&&(i.ri=this.ze(l,r,h,a),i.Vt=i.ri.length>0);const o=n.Be(l.R),_=this.Jt.Qt().Xi().X(o);s.Z=_.Z,s.Bi=l.Bi,i.Ht=n.Qt().Ut(l.Bi/n.Wt().$t()),t.Ht=o,t.R=_.G,i.R=_.G}ze(t,i,s,n){let e="";const r=this.Jt.Ae();return s&&0!==r.length&&(e+=`${r} `),i&&n&&(e+=this.Jt.Wt().Le()?t.Oe:t.Ne),e.trim()}Ee(t,i,s){return i?s?this.Jt.Wt().Le()?t.Ne:t.Oe:t.ri:""}}function pt(t,i,s,n){const e=Number.isFinite(i),r=Number.isFinite(s);return e&&r?t(i,s):e||r?e?i:s:n}class vt{constructor(t,i){this.We=t,this.Fe=i}He(t){return null!==t&&(this.We===t.We&&this.Fe===t.Fe)}Ue(){return new vt(this.We,this.Fe)}$e(){return this.We}qe(){return this.Fe}Ye(){return this.Fe-this.We}Ki(){return this.Fe===this.We||Number.isNaN(this.Fe)||Number.isNaN(this.We)}vn(t){return null===t?this:new vt(pt(Math.min,this.$e(),t.$e(),-1/0),pt(Math.max,this.qe(),t.qe(),1/0))}je(t){if(!p(t))return;if(0===this.Fe-this.We)return;const i=.5*(this.Fe+this.We);let s=this.Fe-i,n=this.We-i;s*=t,n*=t,this.Fe=i+s,this.We=i+n}Ke(t){p(t)&&(this.Fe+=t,this.We+=t)}Xe(){return{minValue:this.We,maxValue:this.Fe}}static Ze(t){return null===t?null:new vt(t.minValue,t.maxValue)}}class mt{constructor(t,i){this.Ge=t,this.Je=i||null}Qe(){return this.Ge}tr(){return this.Je}Xe(){return{priceRange:null===this.Ge?null:this.Ge.Xe(),margins:this.Je||void 0}}static Ze(t){return null===t?null:new mt(vt.Ze(t.priceRange),t.margins)}}class wt extends lt{constructor(t,i){super(t),this.ir=i}te(){const t=this.Zn;t.Vt=!1;const i=this.ir.N();if(!this.Jn.Vt()||!i.lineVisible)return;const s=this.ir.sr();null!==s&&(t.Vt=!0,t.ut=s,t.R=i.color,t.ct=i.lineWidth,t.Xt=i.lineStyle,t.Kn=this.ir.N().id)}}class gt extends H{constructor(t,i){super(),this.ge=t,this.ir=i}qi(t,i,s){t.Vt=!1,i.Vt=!1;const n=this.ir.N(),e=n.axisLabelVisible,r=""!==n.title,h=this.ge;if(!e||!h.Vt())return;const a=this.ir.sr();if(null===a)return;r&&(i.ri=n.title,i.Vt=!0),i.Ht=h.Qt().Ut(a/h.Wt().$t()),t.ri=this.nr(n.price),t.Vt=!0;const l=this.ge.Qt().Xi().X(n.axisLabelColor||n.color);s.Z=l.Z;const o=n.axisLabelTextColor||l.G;t.R=o,i.R=o,s.Bi=a}nr(t){const i=this.ge.zt();return null===i?"":this.ge.Wt().Zi(t,i.Ft)}}class Mt{constructor(t,i){this.ge=t,this.ys=i,this.er=new wt(t,this),this.Wn=new gt(t,this),this.rr=new ht(this.Wn,t,t.Qt())}hr(t){f(this.ys,t),this.Pt(),this.ge.Qt().ar()}N(){return this.ys}lr(){return this.er}_r(){return this.rr}ur(){return this.Wn}Pt(){this.er.Pt(),this.Wn.Pt()}sr(){const t=this.ge,i=t.Wt();if(t.Qt().At().Ki()||i.Ki())return null;const s=t.zt();return null===s?null:i.Nt(this.ys.price,s.Ft)}}class bt extends j{constructor(t){super(),this.ts=t}Qt(){return this.ts}}const xt={Bar:(t,i,s,n)=>{const e=i.upColor,r=i.downColor,h=u(t(s,n)),a=c(h.Ft[0])<=c(h.Ft[3]);return{cr:h.R??(a?e:r)}},Candlestick:(t,i,s,n)=>{const e=i.upColor,r=i.downColor,h=i.borderUpColor,a=i.borderDownColor,l=i.wickUpColor,o=i.wickDownColor,_=u(t(s,n)),d=c(_.Ft[0])<=c(_.Ft[3]);return{cr:_.R??(d?e:r),dr:_.Ht??(d?h:a),pr:_.vr??(d?l:o)}},Custom:(t,i,s,n)=>({cr:u(t(s,n)).R??i.color}),Area:(t,i,s,n)=>{const e=u(t(s,n));return{cr:e.vt??i.lineColor,vt:e.vt??i.lineColor,mr:e.mr??i.topColor,wr:e.wr??i.bottomColor}},Baseline:(t,i,s,n)=>{const e=u(t(s,n));return{cr:e.Ft[3]>=i.baseValue.price?i.topLineColor:i.bottomLineColor,gr:e.gr??i.topLineColor,Mr:e.Mr??i.bottomLineColor,br:e.br??i.topFillColor1,Sr:e.Sr??i.topFillColor2,Cr:e.Cr??i.bottomFillColor1,yr:e.yr??i.bottomFillColor2}},Line:(t,i,s,n)=>{const e=u(t(s,n));return{cr:e.R??i.color,vt:e.R??i.color}},Histogram:(t,i,s,n)=>({cr:u(t(s,n)).R??i.color})};class St{constructor(t){this.Pr=(t,i)=>void 0!==i?i.Ft:this.ge.Xs().kr(t),this.ge=t,this.Tr=xt[t.Rr()]}Dr(t,i){return this.Tr(this.Pr,this.ge.N(),t,i)}}function Ct(t,i,s,n,e=0,r=i.length){let h=r-e;for(;0<h;){const r=h>>1,a=e+r;n(i[a],s)===t?(e=a+1,h-=r+1):h=r}return e}const yt=Ct.bind(null,!0),Pt=Ct.bind(null,!1);var kt;!function(t){t[t.NearestLeft=-1]="NearestLeft",t[t.None=0]="None",t[t.NearestRight=1]="NearestRight"}(kt||(kt={}));const Tt=30;class Rt{constructor(){this.Vr=[],this.Ir=new Map,this.Br=new Map,this.Ar=[]}Er(){return this.zr()>0?this.Vr[this.Vr.length-1]:null}Lr(){return this.zr()>0?this.Or(0):null}Ks(){return this.zr()>0?this.Or(this.Vr.length-1):null}zr(){return this.Vr.length}Ki(){return 0===this.zr()}Te(t){return null!==this.Nr(t,0)}kr(t){return this.Wr(t)}Wr(t,i=0){const s=this.Nr(t,i);return null===s?null:{...this.Fr(s),Re:this.Or(s)}}Hr(){return this.Vr}Ur(t,i,s){if(this.Ki())return null;let n=null;for(const e of s){n=Dt(n,this.$r(t,i,e))}return n}ht(t){this.Br.clear(),this.Ir.clear(),this.Vr=t,this.Ar=t.map((t=>t.Re))}qr(){return this.Ar}Or(t){return this.Vr[t].Re}Fr(t){return this.Vr[t]}Nr(t,i){const s=this.Yr(t);if(null===s&&0!==i)switch(i){case-1:return this.jr(t);case 1:return this.Kr(t);default:throw new TypeError("Unknown search mode")}return s}jr(t){let i=this.Xr(t);return i>0&&(i-=1),i!==this.Vr.length&&this.Or(i)<t?i:null}Kr(t){const i=this.Zr(t);return i!==this.Vr.length&&t<this.Or(i)?i:null}Yr(t){const i=this.Xr(t);return i===this.Vr.length||t<this.Vr[i].Re?null:i}Xr(t){return yt(this.Vr,t,((t,i)=>t.Re<i))}Zr(t){return Pt(this.Vr,t,((t,i)=>t.Re>i))}Gr(t,i,s){let n=null;for(let e=t;e<i;e++){const t=this.Vr[e].Ft[s];Number.isNaN(t)||(null===n?n={Jr:t,Qr:t}:(t<n.Jr&&(n.Jr=t),t>n.Qr&&(n.Qr=t)))}return n}$r(t,i,s){if(this.Ki())return null;let n=null;const e=u(this.Lr()),r=u(this.Ks()),h=Math.max(t,e),a=Math.min(i,r),l=Math.ceil(h/Tt)*Tt,o=Math.max(l,Math.floor(a/Tt)*Tt);{const t=this.Xr(h),e=this.Zr(Math.min(a,l,i));n=Dt(n,this.Gr(t,e,s))}let _=this.Ir.get(s);void 0===_&&(_=new Map,this.Ir.set(s,_));for(let t=Math.max(l+1,h);t<o;t+=Tt){const i=Math.floor(t/Tt);let e=_.get(i);if(void 0===e){const t=this.Xr(i*Tt),n=this.Zr((i+1)*Tt-1);e=this.Gr(t,n,s),_.set(i,e)}n=Dt(n,e)}{const t=this.Xr(o),i=this.Zr(a);n=Dt(n,this.Gr(t,i,s))}return n}}function Dt(t,i){if(null===t)return i;if(null===i)return t;return{Jr:Math.min(t.Jr,i.Jr),Qr:Math.max(t.Qr,i.Qr)}}class Vt{constructor(t){this.th=t}nt(t,i,s){this.th.draw(t)}ih(t,i,s){this.th.drawBackground?.(t)}}class It{constructor(t){this.Dn=null,this.sh=t}Tt(){const t=this.sh.renderer();if(null===t)return null;if(this.Dn?.nh===t)return this.Dn.eh;const i=new Vt(t);return this.Dn={nh:t,eh:i},i}rh(){return this.sh.zOrder?.()??"normal"}}class Bt{constructor(t){this.hh=null,this.ah=t}oh(){return this.ah}Ns(){this.ah.updateAllViews?.()}Ws(){const t=this.ah.paneViews?.()??[];if(this.hh?.nh===t)return this.hh.eh;const i=t.map((t=>new It(t)));return this.hh={nh:t,eh:i},i}jn(t,i){return this.ah.hitTest?.(t,i)??null}}let At=class extends Bt{us(){return[]}};class Et{constructor(t){this.th=t}nt(t,i,s){this.th.draw(t)}ih(t,i,s){this.th.drawBackground?.(t)}}class zt{constructor(t){this.Dn=null,this.sh=t}Tt(){const t=this.sh.renderer();if(null===t)return null;if(this.Dn?.nh===t)return this.Dn.eh;const i=new Et(t);return this.Dn={nh:t,eh:i},i}rh(){return this.sh.zOrder?.()??"normal"}}function Lt(t){return{ri:t.text(),Bi:t.coordinate(),Ii:t.fixedCoordinate?.(),R:t.textColor(),Z:t.backColor(),Vt:t.visible?.()??!0,pi:t.tickVisible?.()??!0}}class Ot{constructor(t,i){this.Gt=new q,this._h=t,this.uh=i}Tt(){return this.Gt.ht({Qi:this.uh.Qi(),...Lt(this._h)}),this.Gt}}class Nt extends H{constructor(t,i){super(),this._h=t,this.Yi=i}qi(t,i,s){const n=Lt(this._h);s.Z=n.Z,t.R=n.R;const e=2/12*this.Yi.P();s.Ti=e,s.Ri=e,s.Bi=n.Bi,s.Ii=n.Ii,t.ri=n.ri,t.Vt=n.Vt,t.pi=n.pi}}class Wt extends Bt{constructor(t,i){super(t),this.dh=null,this.fh=null,this.ph=null,this.mh=null,this.ge=i}cs(){const t=this.ah.timeAxisViews?.()??[];if(this.dh?.nh===t)return this.dh.eh;const i=this.ge.Qt().At(),s=t.map((t=>new Ot(t,i)));return this.dh={nh:t,eh:s},s}Fs(){const t=this.ah.priceAxisViews?.()??[];if(this.fh?.nh===t)return this.fh.eh;const i=this.ge.Wt(),s=t.map((t=>new Nt(t,i)));return this.fh={nh:t,eh:s},s}wh(){const t=this.ah.priceAxisPaneViews?.()??[];if(this.ph?.nh===t)return this.ph.eh;const i=t.map((t=>new zt(t)));return this.ph={nh:t,eh:i},i}gh(){const t=this.ah.timeAxisPaneViews?.()??[];if(this.mh?.nh===t)return this.mh.eh;const i=t.map((t=>new zt(t)));return this.mh={nh:t,eh:i},i}Mh(t,i){return this.ah.autoscaleInfo?.(t,i)??null}}function Ft(t,i,s,n){t.forEach((t=>{i(t).forEach((t=>{t.rh()===s&&n.push(t)}))}))}function Ht(t){return t.Ws()}function Ut(t){return t.wh()}function $t(t){return t.gh()}const qt=["Area","Line","Baseline"];class Yt extends bt{constructor(t,i,s,n,e){super(t),this.Yt=new Rt,this.er=new dt(this),this.bh=[],this.xh=new ot(this),this.Sh=null,this.Ch=null,this.yh=null,this.Ph=[],this.ys=s,this.kh=i;const r=new ft(this);this.vs=[r],this.rr=new ht(r,this,t),qt.includes(this.kh)&&(this.Sh=new ct(this)),this.Th(),this.sh=n(this,this.Qt(),e)}m(){null!==this.yh&&clearTimeout(this.yh)}Be(t){return this.ys.priceLineColor||t}Pe(t){const i={ke:!0},s=this.Wt();if(this.Qt().At().Ki()||s.Ki()||this.Yt.Ki())return i;const n=this.Qt().At().ye(),e=this.zt();if(null===n||null===e)return i;let r,h;if(t){const t=this.Yt.Er();if(null===t)return i;r=t,h=t.Re}else{const t=this.Yt.Wr(n.bi(),-1);if(null===t)return i;if(r=this.Yt.kr(t.Re),null===r)return i;h=t.Re}const a=r.Ft[3],l=this.Rh().Dr(h,{Ft:r}),o=s.Nt(a,e.Ft);return{ke:!1,gt:a,ri:s.Zi(a,e.Ft),Oe:s.Dh(a),Ne:s.Vh(a,e.Ft),R:l.cr,Bi:o,Re:h}}Rh(){return null!==this.Ch||(this.Ch=new St(this)),this.Ch}N(){return this.ys}hr(t){const i=t.priceScaleId;void 0!==i&&i!==this.ys.priceScaleId&&this.Qt().Ih(this,i),f(this.ys,t),void 0!==t.priceFormat&&(this.Th(),this.Qt().Bh()),this.Qt().Ah(this),this.Qt().Eh(),this.sh.Pt("options")}ht(t,i){this.Yt.ht(t),this.sh.Pt("data"),null!==this.Sh&&(i&&i.zh?this.Sh.be():0===t.length&&this.Sh.Me());const s=this.Qt().Hn(this);this.Qt().Lh(s),this.Qt().Ah(this),this.Qt().Eh(),this.Qt().ar()}Oh(t){const i=new Mt(this,t);return this.bh.push(i),this.Qt().Ah(this),i}Nh(t){const i=this.bh.indexOf(t);-1!==i&&this.bh.splice(i,1),this.Qt().Ah(this)}Wh(){return this.bh}Rr(){return this.kh}zt(){const t=this.Fh();return null===t?null:{Ft:t.Ft[3],Hh:t.wt}}Fh(){const t=this.Qt().At().ye();if(null===t)return null;const i=t.Uh();return this.Yt.Wr(i,1)}Xs(){return this.Yt}$h(t){const i=this.Yt.kr(t);return null===i?null:"Bar"===this.kh||"Candlestick"===this.kh||"Custom"===this.kh?{qh:i.Ft[0],Yh:i.Ft[1],jh:i.Ft[2],Kh:i.Ft[3]}:i.Ft[3]}Xh(t){const i=[];Ft(this.Ph,Ht,"top",i);const s=this.Sh;return null!==s&&s.Vt()?(null===this.yh&&s.Se()&&(this.yh=setTimeout((()=>{this.yh=null,this.Qt().Zh()}),0)),s.xe(),i.unshift(s),i):i}Ws(){const t=[];this.Gh()||t.push(this.xh),t.push(this.sh,this.er);const i=this.bh.map((t=>t.lr()));return t.push(...i),Ft(this.Ph,Ht,"normal",t),t}Jh(){return this.Qh(Ht,"bottom")}ta(t){return this.Qh(Ut,t)}ia(t){return this.Qh($t,t)}sa(t,i){return this.Ph.map((s=>s.jn(t,i))).filter((t=>null!==t))}us(){return[this.rr,...this.bh.map((t=>t._r()))]}Fs(t,i){if(i!==this.es&&!this.Gh())return[];const s=[...this.vs];for(const t of this.bh)s.push(t.ur());return this.Ph.forEach((t=>{s.push(...t.Fs())})),s}cs(){const t=[];return this.Ph.forEach((i=>{t.push(...i.cs())})),t}Mh(t,i){if(void 0!==this.ys.autoscaleInfoProvider){const s=this.ys.autoscaleInfoProvider((()=>{const s=this.na(t,i);return null===s?null:s.Xe()}));return mt.Ze(s)}return this.na(t,i)}ea(){return this.ys.priceFormat.minMove}ra(){return this.ha}Ns(){this.sh.Pt();for(const t of this.vs)t.Pt();for(const t of this.bh)t.Pt();this.er.Pt(),this.xh.Pt(),this.Sh?.Pt(),this.Ph.forEach((t=>t.Ns()))}Wt(){return u(super.Wt())}Et(t){if(!(("Line"===this.kh||"Area"===this.kh||"Baseline"===this.kh)&&this.ys.crosshairMarkerVisible))return null;const i=this.Yt.kr(t);if(null===i)return null;return{gt:i.Ft[3],ft:this.aa(),Ht:this.la(),Ot:this.oa(),Lt:this._a(t)}}Ae(){return this.ys.title}Vt(){return this.ys.visible}ua(t){this.Ph.push(new Wt(t,this))}ca(t){this.Ph=this.Ph.filter((i=>i.oh()!==t))}da(){if("Custom"===this.kh)return t=>this.sh.fa(t)}pa(){if("Custom"===this.kh)return t=>this.sh.va(t)}ma(){return this.Yt.qr()}Gh(){return!Z(this.Wt().wa())}na(t,i){if(!v(t)||!v(i)||this.Yt.Ki())return null;const s="Line"===this.kh||"Area"===this.kh||"Baseline"===this.kh||"Histogram"===this.kh?[3]:[2,1],n=this.Yt.Ur(t,i,s);let e=null!==n?new vt(n.Jr,n.Qr):null,r=null;if("Histogram"===this.Rr()){const t=this.ys.base,i=new vt(t,t);e=null!==e?e.vn(i):i}return this.Ph.forEach((s=>{const n=s.Mh(t,i);if(n?.priceRange){const t=new vt(n.priceRange.minValue,n.priceRange.maxValue);e=null!==e?e.vn(t):t}n?.margins&&(r=n.margins)})),new mt(e,r)}aa(){switch(this.kh){case"Line":case"Area":case"Baseline":return this.ys.crosshairMarkerRadius}return 0}la(){switch(this.kh){case"Line":case"Area":case"Baseline":{const t=this.ys.crosshairMarkerBorderColor;if(0!==t.length)return t}}return null}oa(){switch(this.kh){case"Line":case"Area":case"Baseline":return this.ys.crosshairMarkerBorderWidth}return 0}_a(t){switch(this.kh){case"Line":case"Area":case"Baseline":{const t=this.ys.crosshairMarkerBackgroundColor;if(0!==t.length)return t}}return this.Rh().Dr(t).cr}Th(){switch(this.ys.priceFormat.type){case"custom":this.ha={format:this.ys.priceFormat.formatter};break;case"volume":this.ha=new st(this.ys.priceFormat.precision);break;case"percent":this.ha=new it(this.ys.priceFormat.precision);break;default:{const t=Math.pow(10,this.ys.priceFormat.precision);this.ha=new tt(t,this.ys.priceFormat.minMove*t)}}null!==this.es&&this.es.ga()}Qh(t,i){const s=[];return Ft(this.Ph,t,i,s),s}}const jt=[3],Kt=[0,1,2,3];class Xt{constructor(t){this.ys=t}Ma(t,i,s){let n=t;if(0===this.ys.mode)return n;const e=s.ks(),r=e.zt();if(null===r)return n;const h=e.Nt(t,r),a=s.ba().filter((t=>t instanceof Yt)).reduce(((t,n)=>{if(s.Un(n)||!n.Vt())return t;const e=n.Wt(),r=n.Xs();if(e.Ki()||!r.Te(i))return t;const h=r.kr(i);if(null===h)return t;const a=c(n.zt()),l=3===this.ys.mode?Kt:jt;return t.concat(l.map((t=>e.Nt(h.Ft[t],a.Ft))))}),[]);if(0===a.length)return n;a.sort(((t,i)=>Math.abs(t-h)-Math.abs(i-h)));const l=a[0];return n=e.Ts(l,r),n}}function Zt(t,i,s){return Math.min(Math.max(t,i),s)}function Gt(t,i,s){return i-t<=s}function Jt(t){const i=Math.ceil(t);return i%2==0?i-1:i}class Qt extends R{constructor(){super(...arguments),this.Yt=null}ht(t){this.Yt=t}et({context:t,bitmapSize:i,horizontalPixelRatio:s,verticalPixelRatio:n}){if(null===this.Yt)return;const e=Math.max(1,Math.floor(s));t.lineWidth=e,function(t,i){t.save(),t.lineWidth%2&&t.translate(.5,.5),i(),t.restore()}(t,(()=>{const r=u(this.Yt);if(r.xa){t.strokeStyle=r.Sa,a(t,r.Ca),t.beginPath();for(const n of r.ya){const r=Math.round(n.Pa*s);t.moveTo(r,-e),t.lineTo(r,i.height+e)}t.stroke()}if(r.ka){t.strokeStyle=r.Ta,a(t,r.Ra),t.beginPath();for(const s of r.Da){const r=Math.round(s.Pa*n);t.moveTo(-e,r),t.lineTo(i.width+e,r)}t.stroke()}}))}}class ti{constructor(t){this.Gt=new Qt,this.St=!0,this.yt=t}Pt(){this.St=!0}Tt(){if(this.St){const t=this.yt.Qt().N().grid,i={ka:t.horzLines.visible,xa:t.vertLines.visible,Ta:t.horzLines.color,Sa:t.vertLines.color,Ra:t.horzLines.style,Ca:t.vertLines.style,Da:this.yt.ks().Va(),ya:(this.yt.Qt().At().Va()||[]).map((t=>({Pa:t.coord})))};this.Gt.ht(i),this.St=!1}return this.Gt}}class ii{constructor(t){this.sh=new ti(t)}lr(){return this.sh}}const si={Ia:4,Ba:1e-4};function ni(t,i){const s=100*(t-i)/i;return i<0?-s:s}function ei(t,i){const s=ni(t.$e(),i),n=ni(t.qe(),i);return new vt(s,n)}function ri(t,i){const s=100*(t-i)/i+100;return i<0?-s:s}function hi(t,i){const s=ri(t.$e(),i),n=ri(t.qe(),i);return new vt(s,n)}function ai(t,i){const s=Math.abs(t);if(s<1e-15)return 0;const n=Math.log10(s+i.Ba)+i.Ia;return t<0?-n:n}function li(t,i){const s=Math.abs(t);if(s<1e-15)return 0;const n=Math.pow(10,s-i.Ia)-i.Ba;return t<0?-n:n}function oi(t,i){if(null===t)return null;const s=ai(t.$e(),i),n=ai(t.qe(),i);return new vt(s,n)}function _i(t,i){if(null===t)return null;const s=li(t.$e(),i),n=li(t.qe(),i);return new vt(s,n)}function ui(t){if(null===t)return si;const i=Math.abs(t.qe()-t.$e());if(i>=1||i<1e-15)return si;const s=Math.ceil(Math.abs(Math.log10(i))),n=si.Ia+s;return{Ia:n,Ba:1/Math.pow(10,n)}}class ci{constructor(t,i){if(this.Aa=t,this.Ea=i,function(t){if(t<0)return!1;for(let i=t;i>1;i/=10)if(i%10!=0)return!1;return!0}(this.Aa))this.za=[2,2.5,2];else{this.za=[];for(let t=this.Aa;1!==t;){if(t%2==0)this.za.push(2),t/=2;else{if(t%5!=0)throw new Error("unexpected base");this.za.push(2,2.5),t/=5}if(this.za.length>100)throw new Error("something wrong with base")}}}La(t,i,s){const n=0===this.Aa?0:1/this.Aa;let e=Math.pow(10,Math.max(0,Math.ceil(Math.log10(t-i)))),r=0,h=this.Ea[0];for(;;){const t=Gt(e,n,1e-14)&&e>n+1e-14,i=Gt(e,s*h,1e-14),a=Gt(e,1,1e-14);if(!(t&&i&&a))break;e/=h,h=this.Ea[++r%this.Ea.length]}if(e<=n+1e-14&&(e=n),e=Math.max(1,e),this.za.length>0&&(a=e,l=1,o=1e-14,Math.abs(a-l)<o))for(r=0,h=this.za[0];Gt(e,s*h,1e-14)&&e>n+1e-14;)e/=h,h=this.za[++r%this.za.length];var a,l,o;return e}}class di{constructor(t,i,s,n){this.Oa=[],this.Yi=t,this.Aa=i,this.Na=s,this.Wa=n}La(t,i){if(t<i)throw new Error("high < low");const s=this.Yi.$t(),n=(t-i)*this.Fa()/s,e=new ci(this.Aa,[2,2.5,2]),r=new ci(this.Aa,[2,2,2.5]),h=new ci(this.Aa,[2.5,2,2]),a=[];return a.push(e.La(t,i,n),r.La(t,i,n),h.La(t,i,n)),function(t){if(t.length<1)throw Error("array is empty");let i=t[0];for(let s=1;s<t.length;++s)t[s]<i&&(i=t[s]);return i}(a)}Ha(){const t=this.Yi,i=t.zt();if(null===i)return void(this.Oa=[]);const s=t.$t(),n=this.Na(s-1,i),e=this.Na(0,i),r=this.Yi.N().entireTextOnly?this.Ua()/2:0,h=r,a=s-1-r,l=Math.max(n,e),o=Math.min(n,e);if(l===o)return void(this.Oa=[]);let _=this.La(l,o),u=l%_;u+=u<0?_:0;const c=l>=o?1:-1;let d=null,f=0;for(let s=l-u;s>o;s-=_){const n=this.Wa(s,i,!0);null!==d&&Math.abs(n-d)<this.Fa()||(n<h||n>a||(f<this.Oa.length?(this.Oa[f].Pa=n,this.Oa[f].$a=t.qa(s)):this.Oa.push({Pa:n,$a:t.qa(s)}),f++,d=n,t.Ya()&&(_=this.La(s*c,o))))}this.Oa.length=f}Va(){return this.Oa}Ua(){return this.Yi.P()}Fa(){return Math.ceil(2.5*this.Ua())}}function fi(t){return t.slice().sort(((t,i)=>u(t.hs())-u(i.hs())))}var pi;!function(t){t[t.Normal=0]="Normal",t[t.Logarithmic=1]="Logarithmic",t[t.Percentage=2]="Percentage",t[t.IndexedTo100=3]="IndexedTo100"}(pi||(pi={}));const vi=new it,mi=new tt(100,1);class wi{constructor(t,i,s,n,e){this.ja=0,this.Ka=null,this.Ge=null,this.Xa=null,this.Za={Ga:!1,Ja:null},this.Qa=0,this.tl=0,this.il=new d,this.sl=new d,this.nl=[],this.el=null,this.rl=null,this.hl=null,this.al=null,this.ll=null,this.ha=mi,this.ol=ui(null),this._l=t,this.ys=i,this.ul=s,this.cl=n,this.dl=e,this.fl=new di(this,100,this.pl.bind(this),this.vl.bind(this))}wa(){return this._l}N(){return this.ys}hr(t){if(f(this.ys,t),this.ga(),void 0!==t.mode&&this.ml({ie:t.mode}),void 0!==t.scaleMargins){const i=_(t.scaleMargins.top),s=_(t.scaleMargins.bottom);if(i<0||i>1)throw new Error(`Invalid top margin - expect value between 0 and 1, given=${i}`);if(s<0||s>1)throw new Error(`Invalid bottom margin - expect value between 0 and 1, given=${s}`);if(i+s>1)throw new Error(`Invalid margins - sum of margins must be less than 1, given=${i+s}`);this.wl(),this.hl=null}}gl(){return this.ys.autoScale}Ya(){return 1===this.ys.mode}Le(){return 2===this.ys.mode}Ml(){return 3===this.ys.mode}ie(){return{sn:this.ys.autoScale,bl:this.ys.invertScale,ie:this.ys.mode}}ml(t){const i=this.ie();let s=null;void 0!==t.sn&&(this.ys.autoScale=t.sn),void 0!==t.ie&&(this.ys.mode=t.ie,2!==t.ie&&3!==t.ie||(this.ys.autoScale=!0),this.Za.Ga=!1),1===i.ie&&t.ie!==i.ie&&(!function(t,i){if(null===t)return!1;const s=li(t.$e(),i),n=li(t.qe(),i);return isFinite(s)&&isFinite(n)}(this.Ge,this.ol)?this.ys.autoScale=!0:(s=_i(this.Ge,this.ol),null!==s&&this.xl(s))),1===t.ie&&t.ie!==i.ie&&(s=oi(this.Ge,this.ol),null!==s&&this.xl(s));const n=i.ie!==this.ys.mode;n&&(2===i.ie||this.Le())&&this.ga(),n&&(3===i.ie||this.Ml())&&this.ga(),void 0!==t.bl&&i.bl!==t.bl&&(this.ys.invertScale=t.bl,this.Sl()),this.sl.p(i,this.ie())}Cl(){return this.sl}P(){return this.ul.fontSize}$t(){return this.ja}yl(t){this.ja!==t&&(this.ja=t,this.wl(),this.hl=null)}Pl(){if(this.Ka)return this.Ka;const t=this.$t()-this.kl()-this.Tl();return this.Ka=t,t}Qe(){return this.Rl(),this.Ge}xl(t,i){const s=this.Ge;(i||null===s&&null!==t||null!==s&&!s.He(t))&&(this.hl=null,this.Ge=t)}Ki(){return this.Rl(),0===this.ja||!this.Ge||this.Ge.Ki()}Dl(t){return this.bl()?t:this.$t()-1-t}Nt(t,i){return this.Le()?t=ni(t,i):this.Ml()&&(t=ri(t,i)),this.vl(t,i)}Vl(t,i,s){this.Rl();const n=this.Tl(),e=u(this.Qe()),r=e.$e(),h=e.qe(),a=this.Pl()-1,l=this.bl(),o=a/(h-r),_=void 0===s?0:s.from,c=void 0===s?t.length:s.to,d=this.Il();for(let s=_;s<c;s++){const e=t[s],h=e.gt;if(isNaN(h))continue;let a=h;null!==d&&(a=d(e.gt,i));const _=n+o*(a-r),u=l?_:this.ja-1-_;e.ut=u}}Bl(t,i,s){this.Rl();const n=this.Tl(),e=u(this.Qe()),r=e.$e(),h=e.qe(),a=this.Pl()-1,l=this.bl(),o=a/(h-r),_=void 0===s?0:s.from,c=void 0===s?t.length:s.to,d=this.Il();for(let s=_;s<c;s++){const e=t[s];let h=e.qh,a=e.Yh,_=e.jh,u=e.Kh;null!==d&&(h=d(e.qh,i),a=d(e.Yh,i),_=d(e.jh,i),u=d(e.Kh,i));let c=n+o*(h-r),f=l?c:this.ja-1-c;e.Al=f,c=n+o*(a-r),f=l?c:this.ja-1-c,e.El=f,c=n+o*(_-r),f=l?c:this.ja-1-c,e.zl=f,c=n+o*(u-r),f=l?c:this.ja-1-c,e.Ll=f}}Ts(t,i){const s=this.pl(t,i);return this.Ol(s,i)}Ol(t,i){let s=t;return this.Le()?s=function(t,i){return i<0&&(t=-t),t/100*i+i}(s,i):this.Ml()&&(s=function(t,i){return t-=100,i<0&&(t=-t),t/100*i+i}(s,i)),s}ba(){return this.nl}Dt(){return this.rl||(this.rl=fi(this.nl)),this.rl}Nl(t){-1===this.nl.indexOf(t)&&(this.nl.push(t),this.ga(),this.Wl())}Fl(t){const i=this.nl.indexOf(t);if(-1===i)throw new Error("source is not attached to scale");this.nl.splice(i,1),0===this.nl.length&&(this.ml({sn:!0}),this.xl(null)),this.ga(),this.Wl()}zt(){let t=null;for(const i of this.nl){const s=i.zt();null!==s&&((null===t||s.Hh<t.Hh)&&(t=s))}return null===t?null:t.Ft}bl(){return this.ys.invertScale}Va(){const t=null===this.zt();if(null!==this.hl&&(t||this.hl.Hl===t))return this.hl.Va;this.fl.Ha();const i=this.fl.Va();return this.hl={Va:i,Hl:t},this.il.p(),i}Ul(){return this.il}$l(t){this.Le()||this.Ml()||null===this.al&&null===this.Xa&&(this.Ki()||(this.al=this.ja-t,this.Xa=u(this.Qe()).Ue()))}ql(t){if(this.Le()||this.Ml())return;if(null===this.al)return;this.ml({sn:!1}),(t=this.ja-t)<0&&(t=0);let i=(this.al+.2*(this.ja-1))/(t+.2*(this.ja-1));const s=u(this.Xa).Ue();i=Math.max(i,.1),s.je(i),this.xl(s)}Yl(){this.Le()||this.Ml()||(this.al=null,this.Xa=null)}jl(t){this.gl()||null===this.ll&&null===this.Xa&&(this.Ki()||(this.ll=t,this.Xa=u(this.Qe()).Ue()))}Kl(t){if(this.gl())return;if(null===this.ll)return;const i=u(this.Qe()).Ye()/(this.Pl()-1);let s=t-this.ll;this.bl()&&(s*=-1);const n=s*i,e=u(this.Xa).Ue();e.Ke(n),this.xl(e,!0),this.hl=null}Xl(){this.gl()||null!==this.ll&&(this.ll=null,this.Xa=null)}ra(){return this.ha||this.ga(),this.ha}Zi(t,i){switch(this.ys.mode){case 2:return this.Zl(ni(t,i));case 3:return this.ra().format(ri(t,i));default:return this.nr(t)}}qa(t){switch(this.ys.mode){case 2:return this.Zl(t);case 3:return this.ra().format(t);default:return this.nr(t)}}Dh(t){return this.nr(t,u(this.el).ra())}Vh(t,i){return t=ni(t,i),this.Zl(t,vi)}Gl(){return this.nl}Jl(t){this.Za={Ja:t,Ga:!1}}Ns(){this.nl.forEach((t=>t.Ns()))}ga(){this.hl=null;let t=1/0;this.el=null;for(const i of this.nl)i.hs()<t&&(t=i.hs(),this.el=i);let i=100;null!==this.el&&(i=Math.round(1/this.el.ea())),this.ha=mi,this.Le()?(this.ha=vi,i=100):this.Ml()?(this.ha=new tt(100,1),i=100):null!==this.el&&(this.ha=this.el.ra()),this.fl=new di(this,i,this.pl.bind(this),this.vl.bind(this)),this.fl.Ha()}Wl(){this.rl=null}Xi(){return this.dl}kl(){return this.bl()?this.ys.scaleMargins.bottom*this.$t()+this.tl:this.ys.scaleMargins.top*this.$t()+this.Qa}Tl(){return this.bl()?this.ys.scaleMargins.top*this.$t()+this.Qa:this.ys.scaleMargins.bottom*this.$t()+this.tl}Rl(){this.Za.Ga||(this.Za.Ga=!0,this.Ql())}wl(){this.Ka=null}vl(t,i){if(this.Rl(),this.Ki())return 0;t=this.Ya()&&t?ai(t,this.ol):t;const s=u(this.Qe()),n=this.Tl()+(this.Pl()-1)*(t-s.$e())/s.Ye();return this.Dl(n)}pl(t,i){if(this.Rl(),this.Ki())return 0;const s=this.Dl(t),n=u(this.Qe()),e=n.$e()+n.Ye()*((s-this.Tl())/(this.Pl()-1));return this.Ya()?li(e,this.ol):e}Sl(){this.hl=null,this.fl.Ha()}Ql(){const t=this.Za.Ja;if(null===t)return;let i=null;const s=this.Gl();let n=0,e=0;for(const r of s){if(!r.Vt())continue;const s=r.zt();if(null===s)continue;const h=r.Mh(t.Uh(),t.bi());let a=h&&h.Qe();if(null!==a){switch(this.ys.mode){case 1:a=oi(a,this.ol);break;case 2:a=ei(a,s.Ft);break;case 3:a=hi(a,s.Ft)}if(i=null===i?a:i.vn(u(a)),null!==h){const t=h.tr();null!==t&&(n=Math.max(n,t.above),e=Math.max(e,t.below))}}}if(n===this.Qa&&e===this.tl||(this.Qa=n,this.tl=e,this.hl=null,this.wl()),null!==i){if(i.$e()===i.qe()){const t=this.el,s=5*(null===t||this.Le()||this.Ml()?1:t.ea());this.Ya()&&(i=_i(i,this.ol)),i=new vt(i.$e()-s,i.qe()+s),this.Ya()&&(i=oi(i,this.ol))}if(this.Ya()){const t=_i(i,this.ol),s=ui(t);if(r=s,h=this.ol,r.Ia!==h.Ia||r.Ba!==h.Ba){const n=null!==this.Xa?_i(this.Xa,this.ol):null;this.ol=s,i=oi(t,s),null!==n&&(this.Xa=oi(n,s))}}this.xl(i)}else null===this.Ge&&(this.xl(new vt(-.5,.5)),this.ol=ui(null));var r,h;this.Za.Ga=!0}Il(){return this.Le()?ni:this.Ml()?ri:this.Ya()?t=>ai(t,this.ol):null}io(t,i,s){return void 0===i?(void 0===s&&(s=this.ra()),s.format(t)):i(t)}nr(t,i){return this.io(t,this.cl.priceFormatter,i)}Zl(t,i){return this.io(t,this.cl.percentageFormatter,i)}}function gi(t){return t instanceof Yt}class Mi{constructor(t,i){this.nl=[],this.so=new Map,this.ja=0,this.no=0,this.eo=1e3,this.rl=null,this.ro=new d,this.Ph=[],this.uh=t,this.ts=i,this.ho=new ii(this);const s=i.N();this.ao=this.lo("left",s.leftPriceScale),this.oo=this.lo("right",s.rightPriceScale),this.ao.Cl().i(this._o.bind(this,this.ao),this),this.oo.Cl().i(this._o.bind(this,this.oo),this),this.uo(s)}uo(t){if(t.leftPriceScale&&this.ao.hr(t.leftPriceScale),t.rightPriceScale&&this.oo.hr(t.rightPriceScale),t.localization&&(this.ao.ga(),this.oo.ga()),t.overlayPriceScales){const i=Array.from(this.so.values());for(const s of i){const i=u(s[0].Wt());i.hr(t.overlayPriceScales),t.localization&&i.ga()}}}co(t){switch(t){case"left":return this.ao;case"right":return this.oo}return this.so.has(t)?_(this.so.get(t))[0].Wt():null}m(){this.Qt().do().u(this),this.ao.Cl().u(this),this.oo.Cl().u(this),this.nl.forEach((t=>{t.m&&t.m()})),this.Ph=this.Ph.filter((t=>{const i=t.oh();return i.detached&&i.detached(),!1})),this.ro.p()}fo(){return this.eo}po(t){this.eo=t}Qt(){return this.ts}Qi(){return this.no}$t(){return this.ja}vo(t){this.no=t,this.mo()}yl(t){this.ja=t,this.ao.yl(t),this.oo.yl(t),this.nl.forEach((i=>{if(this.Un(i)){const s=i.Wt();null!==s&&s.yl(t)}})),this.mo()}wo(){return this.nl.filter(gi)}ba(){return this.nl}Un(t){const i=t.Wt();return null===i||this.ao!==i&&this.oo!==i}Nl(t,i,s){this.Mo(t,i,s?t.hs():this.nl.length)}Fl(t,i){const s=this.nl.indexOf(t);o(-1!==s,"removeDataSource: invalid data source"),this.nl.splice(s,1),i||this.nl.forEach(((t,i)=>t.ls(i)));const n=u(t.Wt()).wa();if(this.so.has(n)){const i=_(this.so.get(n)),s=i.indexOf(t);-1!==s&&(i.splice(s,1),0===i.length&&this.so.delete(n))}const e=t.Wt();e&&e.ba().indexOf(t)>=0&&(e.Fl(t),this.bo(e)),this.rl=null}qn(t){return t===this.ao?"left":t===this.oo?"right":"overlay"}xo(){return this.ao}So(){return this.oo}Co(t,i){t.$l(i)}yo(t,i){t.ql(i),this.mo()}Po(t){t.Yl()}ko(t,i){t.jl(i)}To(t,i){t.Kl(i),this.mo()}Ro(t){t.Xl()}mo(){this.nl.forEach((t=>{t.Ns()}))}ks(){let t=null;return this.ts.N().rightPriceScale.visible&&0!==this.oo.ba().length?t=this.oo:this.ts.N().leftPriceScale.visible&&0!==this.ao.ba().length?t=this.ao:0!==this.nl.length&&(t=this.nl[0].Wt()),null===t&&(t=this.oo),t}$n(){let t=null;return this.ts.N().rightPriceScale.visible?t=this.oo:this.ts.N().leftPriceScale.visible&&(t=this.ao),t}bo(t){null!==t&&t.gl()&&this.Do(t)}Vo(t){const i=this.uh.ye();t.ml({sn:!0}),null!==i&&t.Jl(i),this.mo()}Io(){this.Do(this.ao),this.Do(this.oo)}Bo(){this.bo(this.ao),this.bo(this.oo),this.nl.forEach((t=>{this.Un(t)&&this.bo(t.Wt())})),this.mo(),this.ts.ar()}Dt(){re