From 58d54a29c737708a431e94f9a32077a11c1fa75c Mon Sep 17 00:00:00 2001 From: Alexandr Nevyantsev Date: Sat, 5 Mar 2022 17:43:06 +0300 Subject: [PATCH 1/6] Add TrackingModeOptions --- .../Example/BarChartViewController.swift | 3 +- Example/Podfile.lock | 4 +-- LightweightCharts.podspec | 2 +- .../Assets/lightweight-charts.js | 4 +-- .../Options/ChartOptions/ChartOptions.swift | 9 +++++- .../ChartOptions/TrackingModeOptions.swift | 29 +++++++++++++++++++ 6 files changed, 44 insertions(+), 7 deletions(-) create mode 100644 Sources/LightweightCharts/LightweightChartsModels/Options/ChartOptions/TrackingModeOptions.swift diff --git a/Example/LightweightCharts/Example/BarChartViewController.swift b/Example/LightweightCharts/Example/BarChartViewController.swift index bcd0498..65bc239 100644 --- a/Example/LightweightCharts/Example/BarChartViewController.swift +++ b/Example/LightweightCharts/Example/BarChartViewController.swift @@ -19,7 +19,8 @@ class BarChartViewController: UIViewController { layout: LayoutOptions(backgroundColor: ChartColor(.black), textColor: ChartColor(.white)), rightPriceScale: VisiblePriceScaleOptions(borderColor: ChartColor(.gray)), timeScale: TimeScaleOptions(borderColor: ChartColor(.gray)), - crosshair: CrosshairOptions(mode: .normal) + crosshair: CrosshairOptions(mode: .normal), + trackingMode: TrackingModeOptions(exitMode: .onTouchEnd) ) let chart = LightweightCharts(options: options) chart.clearWebViewBackground() diff --git a/Example/Podfile.lock b/Example/Podfile.lock index 5478ecf..2561241 100644 --- a/Example/Podfile.lock +++ b/Example/Podfile.lock @@ -1,5 +1,5 @@ PODS: - - LightweightCharts (3.6.1) + - LightweightCharts (3.8.0) DEPENDENCIES: - LightweightCharts (from `../`) @@ -9,7 +9,7 @@ EXTERNAL SOURCES: :path: "../" SPEC CHECKSUMS: - LightweightCharts: 1a6c10a3eccb065f3a270dd0c26515ca714f786a + LightweightCharts: bf203521ec7fce9fab873ff4cefb4d80950d7641 PODFILE CHECKSUM: 10aa45b030d82b96cfc0e4e3b143c5488576107b diff --git a/LightweightCharts.podspec b/LightweightCharts.podspec index d1bfe29..72cb12e 100644 --- a/LightweightCharts.podspec +++ b/LightweightCharts.podspec @@ -1,7 +1,7 @@ Pod::Spec.new do |s| s.name = 'LightweightCharts' - s.version = '3.7.1' + s.version = '3.8.0' s.summary = 'LightweightCharts for iOS.' s.description = 'LightweightCharts pod. Swift wrapper above JavaScript library.' s.homepage = 'https://tradingview.com' diff --git a/Sources/LightweightCharts/Assets/lightweight-charts.js b/Sources/LightweightCharts/Assets/lightweight-charts.js index 9628124..36a7fe8 100644 --- a/Sources/LightweightCharts/Assets/lightweight-charts.js +++ b/Sources/LightweightCharts/Assets/lightweight-charts.js @@ -1,7 +1,7 @@ /*! * @license - * TradingView Lightweight Charts v3.7.0 + * TradingView Lightweight Charts v3.8.0 * Copyright (c) 2020 TradingView, Inc. * Licensed under Apache License 2.0 https://www.apache.org/licenses/LICENSE-2.0 */ -!function(){"use strict";var t,i;function n(t,i){var n,s=((n={})[0]=[],n[1]=[t.lineWidth,t.lineWidth],n[2]=[2*t.lineWidth,2*t.lineWidth],n[3]=[6*t.lineWidth,6*t.lineWidth],n[4]=[t.lineWidth,4*t.lineWidth],n)[i];t.setLineDash(s)}function s(t,i,n,s){t.beginPath();var h=t.lineWidth%2?.5:0;t.moveTo(n,i+h),t.lineTo(s,i+h),t.stroke()}!function(t){t[t.Simple=0]="Simple",t[t.WithSteps=1]="WithSteps"}(t||(t={})),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"}(i||(i={}));var h=function(t,i){return h=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,i){t.__proto__=i}||function(t,i){for(var n in i)Object.prototype.hasOwnProperty.call(i,n)&&(t[n]=i[n])},h(t,i)};function r(t,i){if("function"!=typeof i&&null!==i)throw new TypeError("Class extends value "+String(i)+" is not a constructor or null");function n(){this.constructor=t}h(t,i),t.prototype=null===i?Object.create(i):(n.prototype=i.prototype,new n)}var e=function(){return e=Object.assign||function(t){for(var i,n=1,s=arguments.length;n=i.from;--h){var r=n.m[h];t.moveTo(r.g,r.p),t.arc(r.g,r.p,s,0,2*Math.PI)}t.fill()};t.fillStyle=n.k,s(n.C+2),t.fillStyle=n.N,s(n.C)}},i}(p);function k(){return{m:[{g:0,p:0,S:0,D:0}],N:"",k:"",C:0,M:null}}var C={from:0,to:1},x=function(){function t(t,i){this.T=new g,this.A=[],this.B=[],this.L=!0,this.F=t,this.V=i,this.T.i(this.A)}return t.prototype.O=function(t){var i=this.F.P();i.length!==this.A.length&&(this.B=i.map(k),this.A=this.B.map((function(t){var i=new y;return i._(t),i})),this.T.i(this.A)),this.L=!0},t.prototype.W=function(t,i,n){return this.L&&(this.R(t),this.L=!1),this.T},t.prototype.R=function(t){var i=this,n=this.F.P(),s=this.V.I(),h=this.F.j();n.forEach((function(n,r){var e,u=i.B[r],a=n.q(s);if(null!==a&&n.U()){var o=l(n.H());u.N=a.Y,u.C=a.C,u.m[0].D=a.D,u.m[0].p=n.$().K(a.D,o.X),u.k=null!==(e=a.Z)&&void 0!==e?e:i.F.J(u.m[0].p/t),u.m[0].S=s,u.m[0].g=h.G(s),u.M=C}else u.M=null}))},t}(),N=function(){function t(t){this.tt=t}return t.prototype.h=function(t,i,h,r){if(null!==this.tt){var e=this.tt.it.U,u=this.tt.nt.U;if(e||u){t.save();var a=Math.round(this.tt.g*i),o=Math.round(this.tt.p*i),l=Math.ceil(this.tt.st*i),f=Math.ceil(this.tt.ht*i);t.lineCap="butt",e&&a>=0&&(t.lineWidth=Math.floor(this.tt.it.rt*i),t.strokeStyle=this.tt.it.et,t.fillStyle=this.tt.it.et,n(t,this.tt.it.ut),function(t,i,n,s){t.beginPath();var h=t.lineWidth%2?.5:0;t.moveTo(i+h,n),t.lineTo(i+h,s),t.stroke()}(t,a,0,f)),u&&o>=0&&(t.lineWidth=Math.floor(this.tt.nt.rt*i),t.strokeStyle=this.tt.nt.et,t.fillStyle=this.tt.nt.et,n(t,this.tt.nt.ut),s(t,o,0,l)),t.restore()}}},t}(),S=function(){function t(t){this.L=!0,this.at={it:{rt:1,ut:0,et:"",U:!1},nt:{rt:1,ut:0,et:"",U:!1},st:0,ht:0,g:0,p:0},this.ot=new N(this.at),this.lt=t}return t.prototype.O=function(){this.L=!0},t.prototype.W=function(t,i){return this.L&&(this.R(),this.L=!1),this.ot},t.prototype.R=function(){var t=this.lt.U(),i=l(this.lt.ft()),n=i.vt().ct().crosshair,s=this.at;s.nt.U=t&&this.lt._t(i),s.it.U=t&&this.lt.dt(),s.nt.rt=n.horzLine.width,s.nt.ut=n.horzLine.style,s.nt.et=n.horzLine.color,s.it.rt=n.vertLine.width,s.it.ut=n.vertLine.style,s.it.et=n.vertLine.color,s.st=i.wt(),s.ht=i.Mt(),s.g=this.lt.bt(),s.p=this.lt.gt()},t}(),D={khaki:"#f0e68c",azure:"#f0ffff",aliceblue:"#f0f8ff",ghostwhite:"#f8f8ff",gold:"#ffd700",goldenrod:"#daa520",gainsboro:"#dcdcdc",gray:"#808080",green:"#008000",honeydew:"#f0fff0",floralwhite:"#fffaf0",lightblue:"#add8e6",lightcoral:"#f08080",lemonchiffon:"#fffacd",hotpink:"#ff69b4",lightyellow:"#ffffe0",greenyellow:"#adff2f",lightgoldenrodyellow:"#fafad2",limegreen:"#32cd32",linen:"#faf0e6",lightcyan:"#e0ffff",magenta:"#f0f",maroon:"#800000",olive:"#808000",orange:"#ffa500",oldlace:"#fdf5e6",mediumblue:"#0000cd",transparent:"#0000",lime:"#0f0",lightpink:"#ffb6c1",mistyrose:"#ffe4e1",moccasin:"#ffe4b5",midnightblue:"#191970",orchid:"#da70d6",mediumorchid:"#ba55d3",mediumturquoise:"#48d1cc",orangered:"#ff4500",royalblue:"#4169e1",powderblue:"#b0e0e6",red:"#f00",coral:"#ff7f50",turquoise:"#40e0d0",white:"#fff",whitesmoke:"#f5f5f5",wheat:"#f5deb3",teal:"#008080",steelblue:"#4682b4",bisque:"#ffe4c4",aquamarine:"#7fffd4",aqua:"#0ff",sienna:"#a0522d",silver:"#c0c0c0",springgreen:"#00ff7f",antiquewhite:"#faebd7",burlywood:"#deb887",brown:"#a52a2a",beige:"#f5f5dc",chocolate:"#d2691e",chartreuse:"#7fff00",cornflowerblue:"#6495ed",cornsilk:"#fff8dc",crimson:"#dc143c",cadetblue:"#5f9ea0",tomato:"#ff6347",fuchsia:"#f0f",blue:"#00f",salmon:"#fa8072",blanchedalmond:"#ffebcd",slateblue:"#6a5acd",slategray:"#708090",thistle:"#d8bfd8",tan:"#d2b48c",cyan:"#0ff",darkblue:"#00008b",darkcyan:"#008b8b",darkgoldenrod:"#b8860b",darkgray:"#a9a9a9",blueviolet:"#8a2be2",black:"#000",darkmagenta:"#8b008b",darkslateblue:"#483d8b",darkkhaki:"#bdb76b",darkorchid:"#9932cc",darkorange:"#ff8c00",darkgreen:"#006400",darkred:"#8b0000",dodgerblue:"#1e90ff",darkslategray:"#2f4f4f",dimgray:"#696969",deepskyblue:"#00bfff",firebrick:"#b22222",forestgreen:"#228b22",indigo:"#4b0082",ivory:"#fffff0",lavenderblush:"#fff0f5",feldspar:"#d19275",indianred:"#cd5c5c",lightgreen:"#90ee90",lightgrey:"#d3d3d3",lightskyblue:"#87cefa",lightslategray:"#789",lightslateblue:"#8470ff",snow:"#fffafa",lightseagreen:"#20b2aa",lightsalmon:"#ffa07a",darksalmon:"#e9967a",darkviolet:"#9400d3",mediumpurple:"#9370d8",mediumaquamarine:"#66cdaa",skyblue:"#87ceeb",lavender:"#e6e6fa",lightsteelblue:"#b0c4de",mediumvioletred:"#c71585",mintcream:"#f5fffa",navajowhite:"#ffdead",navy:"#000080",olivedrab:"#6b8e23",palevioletred:"#d87093",violetred:"#d02090",yellow:"#ff0",yellowgreen:"#9acd32",lawngreen:"#7cfc00",pink:"#ffc0cb",paleturquoise:"#afeeee",palegoldenrod:"#eee8aa",darkolivegreen:"#556b2f",darkseagreen:"#8fbc8f",darkturquoise:"#00ced1",peachpuff:"#ffdab9",deeppink:"#ff1493",violet:"#ee82ee",palegreen:"#98fb98",mediumseagreen:"#3cb371",peru:"#cd853f",saddlebrown:"#8b4513",sandybrown:"#f4a460",rosybrown:"#bc8f8f",purple:"#800080",seagreen:"#2e8b57",seashell:"#fff5ee",papayawhip:"#ffefd5",mediumslateblue:"#7b68ee",plum:"#dda0dd",mediumspringgreen:"#00fa9a"};function T(t){return t<0?0:t>255?255:Math.round(t)||0}function A(t){return t<=0||t>0?t<0?0:t>1?1:Math.round(1e4*t)/1e4:0}var B=/^#([0-9a-f])([0-9a-f])([0-9a-f])([0-9a-f])?$/i,L=/^#([0-9a-f]{2})([0-9a-f]{2})([0-9a-f]{2})([0-9a-f]{2})?$/i,E=/^rgb\(\s*(-?\d{1,10})\s*,\s*(-?\d{1,10})\s*,\s*(-?\d{1,10})\s*\)$/,F=/^rgba\(\s*(-?\d{1,10})\s*,\s*(-?\d{1,10})\s*,\s*(-?\d{1,10})\s*,\s*(-?[\d]{0,10}(?:\.\d+)?)\s*\)$/;function V(t){var i;if((t=t.toLowerCase())in D&&(t=D[t]),i=F.exec(t)||E.exec(t))return[T(parseInt(i[1],10)),T(parseInt(i[2],10)),T(parseInt(i[3],10)),A(i.length<5?1:parseFloat(i[4]))];if(i=L.exec(t))return[T(parseInt(i[1],16)),T(parseInt(i[2],16)),T(parseInt(i[3],16)),1];if(i=B.exec(t))return[T(17*parseInt(i[1],16)),T(17*parseInt(i[2],16)),T(17*parseInt(i[3],16)),1];throw new Error("Cannot parse color: "+t)}function O(t){var i,n=V(t);return{yt:"rgb("+n[0]+", "+n[1]+", "+n[2]+")",kt:(i=n,.199*i[0]+.687*i[1]+.114*i[2]>160?"black":"white")}}function P(t,i,n,s,h,r){t.fillRect(i+r,n,s-2*r,r),t.fillRect(i+r,n+h-r,s-2*r,r),t.fillRect(i,n,r,h),t.fillRect(i+s-r,n,r,h)}function W(t,i,n){t.save(),t.scale(i,i),n(),t.restore()}function z(t,i,n,s,h,r){t.save(),t.globalCompositeOperation="copy",t.fillStyle=r,t.fillRect(i,n,s,h),t.restore()}function R(t,i,n,s,h,r,e){t.save(),t.globalCompositeOperation="copy";var u=t.createLinearGradient(0,0,0,h);u.addColorStop(0,r),u.addColorStop(1,e),t.fillStyle=u,t.fillRect(i,n,s,h),t.restore()}var I,j=function(){function t(t,i){this._(t,i)}return t.prototype._=function(t,i){this.tt=t,this.Ct=i},t.prototype.h=function(t,i,n,s,h,r){if(this.tt.U){t.font=i.xt;var e=this.tt.Nt||!this.tt.St?i.Dt:0,u=i.Tt,a=i.At,o=i.Bt,l=i.Lt,f=i.Et,c=this.tt.Ft,v=Math.ceil(n.Vt(t,c)),_=i.Ot,d=i.Pt+a+o,w=Math.ceil(.5*d),M=u+v+l+f+e,b=this.Ct.Wt;this.Ct.zt&&(b=this.Ct.zt);var m,g,p=(b=Math.round(b))-w,y=p+d,k="right"===h,C=k?s:0,x=Math.ceil(s*r),N=C;if(t.fillStyle=this.Ct.yt,t.lineWidth=1,t.lineCap="butt",c){k?(m=C-e,g=(N=C-M)+f):(N=C+M,m=C+e,g=C+u+e+l);var S=Math.max(1,Math.floor(r)),D=Math.max(1,Math.floor(u*r)),T=k?x:0,A=Math.round(p*r),B=Math.round(N*r),L=Math.round(b*r)-Math.floor(.5*r),E=L+S+(L-A),F=Math.round(m*r);t.save(),t.beginPath(),t.moveTo(T,A),t.lineTo(B,A),t.lineTo(B,E),t.lineTo(T,E),t.fill(),t.fillStyle=this.tt.Z,t.fillRect(k?x-D:0,A,D,E-A),this.tt.Nt&&(t.fillStyle=this.Ct.et,t.fillRect(T,L,F-T,S)),t.textAlign="left",t.fillStyle=this.Ct.et,W(t,r,(function(){t.fillText(c,g,y-o-_)})),t.restore()}}},t.prototype.Mt=function(t,i){return this.tt.U?t.Pt+t.At+t.Bt:0},t}(),q=function(){function t(t){this.Rt={Wt:0,et:"#FFF",yt:"#000"},this.It={Ft:"",U:!1,Nt:!0,St:!1,Z:""},this.jt={Ft:"",U:!1,Nt:!1,St:!0,Z:""},this.L=!0,this.qt=new(t||j)(this.It,this.Rt),this.Ut=new(t||j)(this.jt,this.Rt)}return t.prototype.Ft=function(){return this.It.Ft},t.prototype.Wt=function(){return this.Ht(),this.Rt.Wt},t.prototype.O=function(){this.L=!0},t.prototype.Mt=function(t,i){return void 0===i&&(i=!1),Math.max(this.qt.Mt(t,i),this.Ut.Mt(t,i))},t.prototype.Yt=function(){return this.Rt.zt||0},t.prototype.Kt=function(t){this.Rt.zt=t},t.prototype.$t=function(){return this.Ht(),this.It.U||this.jt.U},t.prototype.Xt=function(){return this.Ht(),this.It.U},t.prototype.W=function(t){return this.Ht(),this.It.Nt=this.It.Nt&&t.ct().drawTicks,this.jt.Nt=this.jt.Nt&&t.ct().drawTicks,this.qt._(this.It,this.Rt),this.Ut._(this.jt,this.Rt),this.qt},t.prototype.Zt=function(){return this.Ht(),this.qt._(this.It,this.Rt),this.Ut._(this.jt,this.Rt),this.Ut},t.prototype.Ht=function(){this.L&&(this.It.Nt=!0,this.jt.Nt=!1,this.Jt(this.It,this.jt,this.Rt))},t}(),U=function(t){function i(i,n,s){var h=t.call(this)||this;return h.lt=i,h.Gt=n,h.Qt=s,h}return r(i,t),i.prototype.Jt=function(t,i,n){t.U=!1;var s=this.lt.ct().horzLine;if(s.labelVisible){var h=this.Gt.H();if(this.lt.U()&&!this.Gt.ti()&&null!==h){var r=O(s.labelBackgroundColor);n.yt=r.yt,n.et=r.kt;var e=this.Qt(this.Gt);n.Wt=e.Wt,t.Ft=this.Gt.ii(e.D,h),t.U=!0}}},i}(q),H=/[1-9]/g,Y=function(){function t(){this.tt=null}return t.prototype._=function(t){this.tt=t},t.prototype.h=function(t,i,n){var s=this;if(null!==this.tt&&!1!==this.tt.U&&0!==this.tt.Ft.length){t.font=i.xt;var h=Math.round(i.ni.Vt(t,this.tt.Ft,H));if(!(h<=0)){t.save();var r=i.si,e=h+2*r,u=e/2,a=this.tt.wt,o=this.tt.Wt,f=Math.floor(o-u)+.5;f<0?(o+=Math.abs(0-f),f=Math.floor(o-u)+.5):f+e>a&&(o-=Math.abs(a-(f+e)),f=Math.floor(o-u)+.5);var c=f+e,v=0+i.Tt+i.At+i.Pt+i.Bt;t.fillStyle=this.tt.yt;var _=Math.round(f*n),d=Math.round(0*n),w=Math.round(c*n),M=Math.round(v*n);t.fillRect(_,d,w-_,M-d);var b=Math.round(this.tt.Wt*n),m=d,g=Math.round((m+i.Tt+i.Dt)*n);t.fillStyle=this.tt.et;var p=Math.max(1,Math.floor(n)),y=Math.floor(.5*n);t.fillRect(b-y,m,p,g-m);var k=v-i.Ot-i.Bt;t.textAlign="left",t.fillStyle=this.tt.et,W(t,n,(function(){t.fillText(l(s.tt).Ft,f+r,k)})),t.restore()}}},t}(),K=function(){function t(t,i,n){this.L=!0,this.ot=new Y,this.at={U:!1,yt:"#4c525e",et:"white",Ft:"",wt:0,Wt:NaN},this.V=t,this.hi=i,this.Qt=n}return t.prototype.O=function(){this.L=!0},t.prototype.W=function(){return this.L&&(this.R(),this.L=!1),this.ot._(this.at),this.ot},t.prototype.R=function(){var t=this.at;t.U=!1;var i=this.V.ct().vertLine;if(i.labelVisible){var n=this.hi.j();if(!n.ti()){var s=n.ri(this.V.I());t.wt=n.wt();var h=this.Qt();if(h.S){t.Wt=h.Wt,t.Ft=n.ei(l(s)),t.U=!0;var r=O(i.labelBackgroundColor);t.yt=r.yt,t.et=r.kt}}}},t}(),$=function(){function t(){this.ui=null,this.ai=0}return t.prototype.oi=function(){return this.ai},t.prototype.li=function(t){this.ai=t},t.prototype.$=function(){return this.ui},t.prototype.fi=function(t){this.ui=t},t.prototype.ci=function(){return[]},t.prototype.U=function(){return!0},t}();!function(t){t[t.Normal=0]="Normal",t[t.Magnet=1]="Magnet"}(I||(I={}));var X=function(t){function i(i,n){var s=t.call(this)||this;s.vi=null,s._i=NaN,s.di=0,s.wi=!0,s.Mi=new Map,s.bi=!1,s.mi=NaN,s.gi=NaN,s.pi=NaN,s.yi=NaN,s.hi=i,s.ki=n,s.Ci=new x(i,s);var h,r;s.xi=(h=function(){return s._i},r=function(){return s.gi},function(t){var i=r(),n=h();if(t===l(s.vi).Ni())return{D:n,Wt:i};var e=l(t.H());return{D:t.Si(i,e),Wt:i}});var e=function(t,i){return function(){return{S:s.hi.j().ri(t()),Wt:i()}}}((function(){return s.di}),(function(){return s.bt()}));return s.Di=new K(s,i,e),s.Ti=new S(s),s}return r(i,t),i.prototype.ct=function(){return this.ki},i.prototype.Ai=function(t,i){this.pi=t,this.yi=i},i.prototype.Bi=function(){this.pi=NaN,this.yi=NaN},i.prototype.Li=function(){return this.pi},i.prototype.Ei=function(){return this.yi},i.prototype.Fi=function(t,i,n){this.bi||(this.bi=!0),this.wi=!0,this.Vi(t,i,n)},i.prototype.I=function(){return this.di},i.prototype.bt=function(){return this.mi},i.prototype.gt=function(){return this.gi},i.prototype.U=function(){return this.wi},i.prototype.Oi=function(){this.wi=!1,this.Pi(),this._i=NaN,this.mi=NaN,this.gi=NaN,this.vi=null,this.Bi()},i.prototype.Wi=function(t){return null!==this.vi?[this.Ti,this.Ci]:[]},i.prototype._t=function(t){return t===this.vi&&this.ki.horzLine.visible},i.prototype.dt=function(){return this.ki.vertLine.visible},i.prototype.zi=function(t,i){this.wi&&this.vi===t||this.Mi.clear();var n=[];return this.vi===t&&n.push(this.Ri(this.Mi,i,this.xi)),n},i.prototype.ci=function(){return this.wi?[this.Di]:[]},i.prototype.ft=function(){return this.vi},i.prototype.Ii=function(){this.Ti.O(),this.Mi.forEach((function(t){return t.O()})),this.Di.O(),this.Ci.O()},i.prototype.ji=function(t){return t&&!t.Ni().ti()?t.Ni():null},i.prototype.Vi=function(t,i,n){this.qi(t,i,n)&&this.Ii()},i.prototype.qi=function(t,i,n){var s=this.mi,h=this.gi,r=this._i,e=this.di,u=this.vi,a=this.ji(n);this.di=t,this.mi=isNaN(t)?NaN:this.hi.j().G(t),this.vi=n;var o=null!==a?a.H():null;return null!==a&&null!==o?(this._i=i,this.gi=a.K(i,o)):(this._i=NaN,this.gi=NaN),s!==this.mi||h!==this.gi||e!==this.di||r!==this._i||u!==this.vi},i.prototype.Pi=function(){var t=this.hi.P().map((function(t){return t.Hi().Ui()})).filter(b),i=0===t.length?null:Math.max.apply(Math,t);this.di=null!==i?i:NaN},i.prototype.Ri=function(t,i,n){var s=t.get(i);return void 0===s&&(s=new U(this,i,n),t.set(i,s)),s},i}($),Z=".";function J(t,i){if(!v(t))return"n/a";if(!_(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)}var G=function(){function t(t,i){if(i||(i=1),v(t)&&_(t)||(t=100),t<0)throw new TypeError("invalid base");this.Gt=t,this.Yi=i,this.Ki()}return t.prototype.format=function(t){var i=t<0?"−":"";return t=Math.abs(t),i+this.$i(t)},t.prototype.Ki=function(){if(this.Xi=0,this.Gt>0&&this.Yi>0)for(var t=this.Gt;t>1;)t/=10,this.Xi++},t.prototype.$i=function(t){var i=this.Gt/this.Yi,n=Math.floor(t),s="",h=void 0!==this.Xi?this.Xi:NaN;if(i>1){var r=+(Math.round(t*i)-n*i).toFixed(this.Xi);r>=i&&(r-=i,n+=1),s=Z+J(+r.toFixed(this.Xi)*this.Yi,h)}else n=Math.round(n*i)/i,h>0&&(s=Z+J(0,h));return n.toFixed(0)+s},t}(),Q=function(t){function i(i){return void 0===i&&(i=100),t.call(this,i)||this}return r(i,t),i.prototype.format=function(i){return t.prototype.format.call(this,i)+"%"},i}(G),tt=function(){function t(){this.Zi=[]}return t.prototype.Ji=function(t,i,n){var s={Gi:t,Qi:i,tn:!0===n};this.Zi.push(s)},t.prototype.nn=function(t){var i=this.Zi.findIndex((function(i){return t===i.Gi}));i>-1&&this.Zi.splice(i,1)},t.prototype.sn=function(t){this.Zi=this.Zi.filter((function(i){return i.Qi===t}))},t.prototype.hn=function(t,i){var n=u([],this.Zi,!0);this.Zi=this.Zi.filter((function(t){return!t.tn})),n.forEach((function(n){return n.Gi(t,i)}))},t.prototype.rn=function(){return this.Zi.length>0},t.prototype.en=function(){this.Zi=[]},t}(),it=function(){function t(t,i){this.un=t,this.an=i}return t.prototype.on=function(t){return null!==t&&(this.un===t.un&&this.an===t.an)},t.prototype.ln=function(){return new t(this.un,this.an)},t.prototype.fn=function(){return this.un},t.prototype.cn=function(){return this.an},t.prototype.vn=function(){return this.an-this.un},t.prototype.ti=function(){return this.an===this.un||Number.isNaN(this.an)||Number.isNaN(this.un)},t.prototype._n=function(i){return null===i?this:new t(Math.min(this.fn(),i.fn()),Math.max(this.cn(),i.cn()))},t.prototype.dn=function(t){if(v(t)&&0!==this.an-this.un){var i=.5*(this.an+this.un),n=this.an-i,s=this.un-i;n*=t,s*=t,this.an=i+n,this.un=i+s}},t.prototype.wn=function(t){v(t)&&(this.an+=t,this.un+=t)},t.prototype.Mn=function(){return{minValue:this.un,maxValue:this.an}},t.bn=function(i){return null===i?null:new t(i.minValue,i.maxValue)},t}();function nt(t,i,n){return Math.min(Math.max(t,i),n)}function st(t,i,n){return i-t<=n}function ht(t){return t<=0?NaN:Math.log(t)/Math.log(10)}function rt(t){var i=Math.ceil(t);return i%2!=0?i-1:i}function et(t){var i=Math.ceil(t);return i%2==0?i-1:i}function ut(t,i){var n=100*(t-i)/i;return i<0?-n:n}function at(t,i){var n=ut(t.fn(),i),s=ut(t.cn(),i);return new it(n,s)}function ot(t,i){var n=100*(t-i)/i+100;return i<0?-n:n}function lt(t,i){var n=ot(t.fn(),i),s=ot(t.cn(),i);return new it(n,s)}function ft(t){var i=Math.abs(t);if(i<1e-8)return 0;var n=ht(i+1e-4)+4;return t<0?-n:n}function ct(t){var i=Math.abs(t);if(i<1e-8)return 0;var n=Math.pow(10,i-4)-1e-4;return t<0?-n:n}function vt(t){if(null===t)return null;var i=ft(t.fn()),n=ft(t.cn());return new it(i,n)}var _t,dt=function(){function t(t,i){if(this.mn=t,this.gn=i,function(t){if(t<0)return!1;for(var i=t;i>1;i/=10)if(i%10!=0)return!1;return!0}(this.mn))this.pn=[2,2.5,2];else{this.pn=[];for(var n=this.mn;1!==n;){if(n%2==0)this.pn.push(2),n/=2;else{if(n%5!=0)throw new Error("unexpected base");this.pn.push(2,2.5),n/=5}if(this.pn.length>100)throw new Error("something wrong with base")}}}return t.prototype.yn=function(t,i,n){for(var s,h,r,e=0===this.mn?0:1/this.mn,u=Math.pow(10,Math.max(0,Math.ceil(ht(t-i)))),a=0,o=this.gn[0];;){var l=st(u,e,1e-14)&&u>e+1e-14,f=st(u,n*o,1e-14),c=st(u,1,1e-14);if(!(l&&f&&c))break;u/=o,o=this.gn[++a%this.gn.length]}if(u<=e+1e-14&&(u=e),u=Math.max(1,u),this.pn.length>0&&(s=u,h=1,r=1e-14,Math.abs(s-h)e+1e-14;)u/=o,o=this.pn[++a%this.pn.length];return u},t}(),wt=function(){function t(t,i,n,s){this.kn=[],this.Gt=t,this.mn=i,this.Cn=n,this.xn=s}return t.prototype.yn=function(t,i){if(t=o?1:-1,v=null,_=0,d=a-(f+=f<0?l:0);d>o;d-=l){var w=this.xn(d,i,!0);null!==v&&Math.abs(w-v)u||(_1)throw new Error("Invalid top margin - expect value between 0 and 1, given="+i);if(n<0||n>1||i+n>1)throw new Error("Invalid bottom margin - expect value between 0 and 1, given="+n);if(i+n>1)throw new Error("Invalid margins - sum of margins must be less than 1, given="+(i+n));this.ls(),this.Kn=null}},t.prototype.fs=function(){return this.ki.autoScale},t.prototype.Ln=function(){return 1===this.ki.mode},t.prototype.cs=function(){return 2===this.ki.mode},t.prototype.vs=function(){return 3===this.ki.mode},t.prototype.os=function(){return{_s:this.ki.autoScale,ds:this.ki.invertScale,os:this.ki.mode}},t.prototype.us=function(t){var i=this.os(),n=null;void 0!==t._s&&(this.ki.autoScale=t._s),void 0!==t.os&&(this.ki.mode=t.os,2!==t.os&&3!==t.os||(this.ki.autoScale=!0),this.Wn.zn=!1),1===i.os&&t.os!==i.os&&(!function(t){if(null===t)return!1;var i=ct(t.fn()),n=ct(t.cn());return isFinite(i)&&isFinite(n)}(this.On)?this.ki.autoScale=!0:(n=function(t){if(null===t)return null;var i=ct(t.fn()),n=ct(t.cn());return new it(i,n)}(this.On),null!==n&&this.ws(n))),1===t.os&&t.os!==i.os&&null!==(n=vt(this.On))&&this.ws(n);var s=i.os!==this.ki.mode;s&&(2===i.os||this.cs())&&this.es(),s&&(3===i.os||this.vs())&&this.es(),void 0!==t.ds&&i.ds!==t.ds&&(this.ki.invertScale=t.ds,this.Ms()),this.Un.hn(i,this.os())},t.prototype.bs=function(){return this.Un},t.prototype.Pt=function(){return this.Gn.fontSize},t.prototype.Mt=function(){return this.Fn},t.prototype.gs=function(t){this.Fn!==t&&(this.Fn=t,this.ls(),this.Kn=null)},t.prototype.ps=function(){if(this.Vn)return this.Vn;var t=this.Mt()-this.ys()-this.ks();return this.Vn=t,t},t.prototype.Cs=function(){return this.xs(),this.On},t.prototype.ws=function(t,i){var n=this.On;(i||null===n&&null!==t||null!==n&&!n.on(t))&&(this.Kn=null,this.On=t)},t.prototype.ti=function(){return this.xs(),0===this.Fn||!this.On||this.On.ti()},t.prototype.Ns=function(t){return this.ds()?t:this.Mt()-1-t},t.prototype.K=function(t,i){return this.cs()?t=ut(t,i):this.vs()&&(t=ot(t,i)),this.ss(t,i)},t.prototype.Ss=function(t,i,n){this.xs();for(var s=this.ks(),h=l(this.Cs()),r=h.fn(),e=h.cn(),u=this.ps()-1,a=this.ds(),o=u/(e-r),f=void 0===n?0:n.from,c=void 0===n?t.length:n.to,v=this.Ds(),_=f;_>1,u=s+e;n(t[u],i)?(s=u+1,r-=e+1):r=e}return s}function Bt(t,i,n,s,h){void 0===s&&(s=0),void 0===h&&(h=t.length);for(var r=h-s;0>1,u=s+e;n(i,t[u])?r=e:(s=u+1,r-=e+1)}return s}var Lt=function(){function t(t,i){void 0===i&&(i=50),this.gh=0,this.ph=1,this.yh=1,this.kh=new Map,this.Ch=new Map,this.xh=t,this.Nh=i}return t.prototype.oh=function(t){var i=void 0===t.Sh?new Date(1e3*t.Dh).getTime():new Date(Date.UTC(t.Sh.year,t.Sh.month-1,t.Sh.day)).getTime(),n=this.kh.get(i);if(void 0!==n)return n.Th;if(this.gh===this.Nh){var s=this.Ch.get(this.yh);this.Ch.delete(this.yh),this.kh.delete(o(s)),this.yh++,this.gh--}var h=this.xh(t);return this.kh.set(i,{Th:h,Ah:this.ph}),this.Ch.set(this.ph,i),this.gh++,this.ph++,h},t}(),Et=function(){function t(t,i){a(t<=i,"right should be >= left"),this.Bh=t,this.Lh=i}return t.prototype.hh=function(){return this.Bh},t.prototype.rh=function(){return this.Lh},t.prototype.Eh=function(){return this.Lh-this.Bh+1},t.prototype.Fh=function(t){return this.Bh<=t&&t<=this.Lh},t.prototype.on=function(t){return this.Bh===t.hh()&&this.Lh===t.rh()},t}();function Ft(t,i){return null===t||null===i?t===i:t.on(i)}var Vt,Ot=function(){function t(){this.Vh=new Map,this.kh=null}return t.prototype.Oh=function(t,i){this.Ph(i),this.kh=null;for(var n=i;n=t&&d-c>=t&&(i.push(_),c=d)}for(;uthis.Zh[this.Zh.length-1].S.Dh)return i?this.Zh.length-1:null;var n=At(this.Zh,t.Dh,(function(t,i){return t.S.Dhi/2?_.Ir=!1:_.Ir=this.ki.fixLeftEdge&&v.zh<=u||this.ki.fixRightEdge&&v.zh>=a,o++}}return this.er.length=o,this.rr=this.er,this.er},t.prototype.jr=function(){this.tr=!0,this.wr(this.ki.barSpacing),this.Mr(this.ki.rightOffset)},t.prototype.qr=function(t){this.tr=!0,this.Xh=t,this.Ar(),this._r()},t.prototype.Ur=function(t,i){var n=this.Fr(t),s=this.Pr(),h=s+i*(s/10);this.wr(h),this.ki.rightBarStaysOnScroll||this.Mr(this.zr()+(n-this.Fr(t)))},t.prototype.js=function(t){this.Xn&&this.Ks(),null===this.$n&&null===this.hr&&(this.ti()||(this.$n=t,this.Hr()))},t.prototype.qs=function(t){if(null!==this.hr){var i=nt(this.$h-t,0,this.$h),n=nt(this.$h-l(this.$n),0,this.$h);0!==i&&0!==n&&this.wr(this.hr.Pr*i/n)}},t.prototype.Us=function(){null!==this.$n&&(this.$n=null,this.Yr())},t.prototype.Hs=function(t){null===this.Xn&&null===this.hr&&(this.ti()||(this.Xn=t,this.Hr()))},t.prototype.Ys=function(t){if(null!==this.Xn){var i=(this.Xn-t)/this.Pr();this.ur=l(this.hr).zr+i,this.tr=!0,this.Ar()}},t.prototype.Ks=function(){null!==this.Xn&&(this.Xn=null,this.Yr())},t.prototype.Kr=function(){this.$r(this.ki.rightOffset)},t.prototype.$r=function(t,i){var n=this;if(void 0===i&&(i=400),!isFinite(t))throw new RangeError("offset is required and must be finite number");if(!isFinite(i)||i<=0)throw new RangeError("animationDuration (optional) must be finite positive number");var s=this.ur,h=performance.now(),r=function(){var e=(performance.now()-h)/i,u=e>=1,a=u?t:s+(t-s)*e;n.Mr(a),u||setTimeout(r,20)};r()},t.prototype.O=function(t,i){this.tr=!0,this.Zh=t,this.Jh.Oh(t,i),this.Ar()},t.prototype.Xr=function(){return this.ir},t.prototype.Zr=function(){return this.nr},t.prototype.Jr=function(){return this.sr},t.prototype.Br=function(){return this.Xh||0},t.prototype.Gr=function(t){var i=t.Eh();this.Wr(this.$h/i),this.ur=t.rh()-this.Br(),this.Ar(),this.tr=!0,this.hi.Vr(),this.hi.Or()},t.prototype.Qr=function(){var t=this.Cr(),i=this.Nr();null!==t&&null!==i&&this.Gr(new Et(t,i+this.ki.rightOffset))},t.prototype.te=function(t){var i=new Et(t.from,t.to);this.Gr(i)},t.prototype.ei=function(t){return void 0!==this.Qn.timeFormatter?this.Qn.timeFormatter(t.Sh||t.Dh):this.ie.oh(new Date(1e3*t.Dh))},t.prototype.Cr=function(){return 0===this.Zh.length?null:0},t.prototype.Nr=function(){return 0===this.Zh.length?null:this.Zh.length-1},t.prototype.ne=function(t){return(this.$h-1-t)/this.ar},t.prototype.Fr=function(t){var i=this.ne(t),n=this.Br()+this.ur-i;return Math.round(1e6*n)/1e6},t.prototype.Wr=function(t){var i=this.ar;this.ar=t,this.Tr(),i!==this.ar&&(this.tr=!0,this.se())},t.prototype.gr=function(){if(this.tr)if(this.tr=!1,this.ti())this.he(Pt.Kh());else{var t=this.Br(),i=this.$h/this.ar,n=this.ur+t,s=new Et(n-i+1,n);this.he(new Pt(s))}},t.prototype.Tr=function(){var t=this.re();if(this.ari&&(this.ar=i,this.tr=!0)}},t.prototype.re=function(){return this.ki.fixLeftEdge&&this.ki.fixRightEdge&&0!==this.Zh.length?this.$h/this.Zh.length:this.ki.minBarSpacing},t.prototype.Ar=function(){var t=this.ee();this.ur>t&&(this.ur=t,this.tr=!0);var i=this.ue();null!==i&&this.ur=1e-15&&t<1?t.toFixed(this.De).replace(/\.?0+$/,""):String(t)).replace(/(\.[1-9]*)0+$/,(function(t,i){return i}))},t}();function $t(t,i,n,s){if(0!==i.length){var h=i[s.from].g,r=i[s.from].p;t.moveTo(h,r);for(var e=s.from+1;ethis.v.M.from&&(t.lineTo(this.v.m[this.v.M.to-1].g,this.v.Be),t.lineTo(this.v.m[this.v.M.from].g,this.v.Be));t.closePath(),t.fillStyle=this.Ee(t),t.fill()}},i}(p),Zt=function(t){function i(){return null!==t&&t.apply(this,arguments)||this}return r(i,t),i.prototype.Ee=function(t){var i=this.v,n=t.createLinearGradient(0,0,0,i.Fe);return n.addColorStop(0,i.Ve),n.addColorStop(1,i.Oe),n},i}(Xt),Jt=function(t){function i(){var i=null!==t&&t.apply(this,arguments)||this;return i.v=null,i}return r(i,t),i.prototype._=function(t){this.v=t},i.prototype.u=function(t){if(null!==this.v&&0!==this.v.m.length&&null!==this.v.M){if(t.lineCap="butt",t.lineWidth=this.v.rt,n(t,this.v.ut),t.strokeStyle=this.Pe(t),t.lineJoin="round",t.beginPath(),1===this.v.m.length){var i=this.v.m[0];t.moveTo(i.g-this.v.Ae/2,i.p),t.lineTo(i.g+this.v.Ae/2,i.p)}else $t(t,this.v.m,this.v.Le,this.v.M);t.stroke()}},i}(p),Gt=function(t){function i(){return null!==t&&t.apply(this,arguments)||this}return r(i,t),i.prototype.Pe=function(){return this.v.N},i}(Jt);function Qt(t,i){return t.S0&&r=s&&(u=r-1),e>0&&e=2)Math.max(1,Math.floor(i))%2!=this.ru%2&&this.ru--;this.eu=this.tt.au?Math.min(this.ru,Math.floor(i)):this.ru;for(var h=null,r=this.eu<=this.ru&&this.tt.Pr>=Math.floor(1.5*i),e=this.tt.M.from;ed+M-1&&(g=(p=d+M-1)-f+1),t.fillRect(m,g,l-m,p-g+1)}var y=o+b,k=Math.max(d,Math.round(u.Es*i)-a),C=k+f-1;C>d+M-1&&(k=(C=d+M-1)-f+1),t.fillRect(c+1,k,y-c,C-k+1)}}}},t.prototype.uu=function(t){var i=Math.floor(t);return Math.max(i,Math.floor(function(t,i){return Math.floor(.3*t*i)}(l(this.tt).Pr,t)))},t}(),ei=function(t){function i(i,n){return t.call(this,i,n,!1)||this}return r(i,t),i.prototype.Ge=function(t,i,n){i.Lr(this.Ie,m(this.je)),t.Ts(this.Ie,n,m(this.je))},i.prototype.lu=function(t,i,n){return{S:t,open:i.X[0],high:i.X[1],low:i.X[2],close:i.X[3],g:NaN,As:NaN,Bs:NaN,Ls:NaN,Es:NaN}},i.prototype.Ke=function(){var t=this,i=this.qe.tu();this.Ie=this.qe.Hi().iu().map((function(n){return t.nu(n.zh,n,i)}))},i}(ni),ui=function(t){function i(){var i=null!==t&&t.apply(this,arguments)||this;return i.ot=new ri,i}return r(i,t),i.prototype.W=function(t,i){if(!this.qe.U())return null;var n=this.qe.ct();this.Ye();var s={Hi:this.Ie,Pr:this.Ue.j().Pr(),ou:n.openVisible,au:n.thinBars,M:this.je};return this.ot._(s),this.ot},i.prototype.Xe=function(){var t=this;this.Ie.forEach((function(i){i.et=t.qe.tu().cu(i.S).fu}))},i.prototype.nu=function(t,i,n){return e(e({},this.lu(t,i,n)),{et:n.cu(t).fu})},i}(ei),ai=function(t){function i(){return null!==t&&t.apply(this,arguments)||this}return r(i,t),i.prototype.Ee=function(t){var i=this.v,n=t.createLinearGradient(0,0,0,i.Fe),s=nt(i.Be/i.Fe,0,1);return n.addColorStop(0,i.vu),n.addColorStop(s,i._u),n.addColorStop(s,i.du),n.addColorStop(1,i.wu),n},i}(Xt),oi=function(t){function i(){return null!==t&&t.apply(this,arguments)||this}return r(i,t),i.prototype.Pe=function(t){var i=this.v,n=t.createLinearGradient(0,0,0,i.Fe),s=nt(i.Be/i.Fe,0,1);return n.addColorStop(0,i.Ve),n.addColorStop(s,i.Ve),n.addColorStop(s,i.Oe),n.addColorStop(1,i.Oe),n},i}(Jt),li=function(t){function i(i,n){var s=t.call(this,i,n)||this;return s.Mu=new ai,s.bu=new oi,s.T=new g,s.T.i([s.Mu,s.bu]),s}return r(i,t),i.prototype.W=function(t,i){if(!this.qe.U())return null;var n=this.qe.H();if(null===n)return null;var s=this.qe.ct();this.Ye();var h=this.qe.$().K(s.baseValue.price,n.X),r=this.Ue.j().Pr();return this.Mu._({m:this.Ie,vu:s.topFillColor1,_u:s.topFillColor2,du:s.bottomFillColor1,wu:s.bottomFillColor2,rt:s.lineWidth,ut:s.lineStyle,Le:0,Be:h,Fe:t,M:this.je,Ae:r}),this.bu._({m:this.Ie,Ve:s.topLineColor,Oe:s.bottomLineColor,rt:s.lineWidth,ut:s.lineStyle,Le:0,Be:h,Fe:t,M:this.je,Ae:r}),this.T},i.prototype.nu=function(t,i){return this.Qe(t,i)},i}(si),fi=function(){function t(){this.tt=null,this.ru=0}return t.prototype._=function(t){this.tt=t},t.prototype.h=function(t,i,n,s){if(null!==this.tt&&0!==this.tt.Hi.length&&null!==this.tt.M){if(this.ru=function(t,i){if(t>=2.5&&t<=4)return Math.floor(3*i);var n=1-.2*Math.atan(Math.max(4,t)-4)/(.5*Math.PI),s=Math.floor(t*n*i),h=Math.floor(t*i),r=Math.min(s,h);return Math.max(Math.floor(i),r)}(this.tt.Pr,i),this.ru>=2)Math.floor(i)%2!=this.ru%2&&this.ru--;var h=this.tt.Hi;this.tt.mu&&this.gu(t,h,this.tt.M,i),this.tt.pu&&this.yu(t,h,this.tt.M,this.tt.Pr,i);var r=this.ku(i);(!this.tt.pu||this.ru>2*r)&&this.Cu(t,h,this.tt.M,i)}},t.prototype.gu=function(t,i,n,s){if(null!==this.tt){var h="",r=Math.min(Math.floor(s),Math.floor(this.tt.Pr*s));r=Math.max(Math.floor(s),Math.min(r,this.ru));for(var e=Math.floor(.5*r),u=null,a=n.from;a2*e)P(t,l,c,f-l+1,v-c+1,e);else{var _=f-l+1;t.fillRect(l,c,_,v-c+1)}u=f}},t.prototype.Cu=function(t,i,n,s){if(null!==this.tt)for(var h="",r=this.ku(s),e=n.from;eo||t.fillRect(l,a,f-l+1,o-a+1)}},t}(),ci=function(t){function i(){var i=null!==t&&t.apply(this,arguments)||this;return i.ot=new fi,i}return r(i,t),i.prototype.W=function(t,i){if(!this.qe.U())return null;var n=this.qe.ct();this.Ye();var s={Hi:this.Ie,Pr:this.Ue.j().Pr(),mu:n.wickVisible,pu:n.borderVisible,M:this.je};return this.ot._(s),this.ot},i.prototype.Xe=function(){var t=this;this.Ie.forEach((function(i){var n=t.qe.tu().cu(i.S);i.et=n.fu,i.xu=n.Nu,i.Z=n.Su}))},i.prototype.nu=function(t,i,n){var s=n.cu(t);return e(e({},this.lu(t,i,n)),{et:s.fu,xu:s.Nu,Z:s.Su})},i}(ei),vi=function(){function t(){this.tt=null,this.Du=[]}return t.prototype._=function(t){this.tt=t,this.Du=[]},t.prototype.h=function(t,i,n,s){if(null!==this.tt&&0!==this.tt.m.length&&null!==this.tt.M){this.Du.length||this.Tu(i);for(var h=Math.max(1,Math.floor(i)),r=Math.round(this.tt.Au*i)-Math.floor(h/2),e=r+h,u=this.tt.M.from;ul.Lu?l.rh=o.hh-i-1:o.hh=l.rh+i+1))}var f=Math.ceil(this.tt.Pr*t);for(s=this.tt.M.from;s0&&f<4)for(s=this.tt.M.from;sf&&(o.Bu>o.Lu?o.rh-=1:o.hh+=1)}}else this.Du=[]},t}();function _i(t){return{m:[],Pr:t,Au:NaN,M:null}}function di(t,i,n){return{S:t,D:i,g:NaN,p:NaN,et:n}}var wi=function(t){function i(i,n){var s=t.call(this,i,n,!1)||this;return s.T=new g,s.Eu=_i(0),s.ot=new vi,s}return r(i,t),i.prototype.W=function(t,i){return this.qe.U()?(this.Ye(),this.T):null},i.prototype.Ke=function(){var t=this.Ue.j().Pr();this.Eu=_i(t);for(var i=0,n=0,s=this.qe.ct().color,h=0,r=this.qe.Hi().iu();hMath.ceil(this.tt.Mt*i))){var u=Math.ceil(this.tt.wt*i);t.lineCap="butt",t.strokeStyle=this.tt.et,t.lineWidth=Math.floor(this.tt.rt*i),n(t,this.tt.ut),s(t,e,0,u)}}},t}(),ki=function(){function t(t){this.Ku={wt:0,Mt:0,p:0,et:"rgba(0, 0, 0, 0)",rt:1,ut:0,U:!1},this.$u=new yi,this.L=!0,this.qe=t,this.Ue=t.vt(),this.$u._(this.Ku)}return t.prototype.O=function(){this.L=!0},t.prototype.W=function(t,i){return this.qe.U()?(this.L&&(this.Xu(t,i),this.L=!1),this.$u):null},t}(),Ci=function(t){function i(i){return t.call(this,i)||this}return r(i,t),i.prototype.Xu=function(t,i){this.Ku.U=!1;var n=this.qe.$(),s=n.os().os;if(2===s||3===s){var h=this.qe.ct();if(h.baseLineVisible&&this.qe.U()){var r=this.qe.H();null!==r&&(this.Ku.U=!0,this.Ku.p=n.K(r.X,r.X),this.Ku.wt=i,this.Ku.Mt=t,this.Ku.et=h.baseLineColor,this.Ku.rt=h.baseLineWidth,this.Ku.ut=h.baseLineStyle)}}},i}(ki),xi=function(){function t(){this.tt=null}return t.prototype._=function(t){this.tt=t},t.prototype.Zu=function(){return this.tt},t.prototype.h=function(t,i,n,s){var h=this.tt;if(null!==h){t.save();var r=Math.max(1,Math.floor(i)),e=r%2/2,u=Math.round(h.Lu.x*i)+e,a=h.Lu.y*i;t.fillStyle=h.Ju,t.beginPath();var o=Math.max(2,1.5*h.Gu)*i;t.arc(u,a,o,0,2*Math.PI,!1),t.fill(),t.fillStyle=h.Qu,t.beginPath(),t.arc(u,a,h.C*i,0,2*Math.PI,!1),t.fill(),t.lineWidth=r,t.strokeStyle=h.ta,t.beginPath(),t.arc(u,a,h.C*i+r/2,0,2*Math.PI,!1),t.stroke(),t.restore()}},t}(),Ni=[{ia:0,na:.25,sa:4,ha:10,ra:.25,ea:0,ua:.4,aa:.8},{ia:.25,na:.525,sa:10,ha:14,ra:0,ea:0,ua:.8,aa:0},{ia:.525,na:1,sa:14,ha:14,ra:0,ea:0,ua:0,aa:0}];function Si(t,i,n,s){return function(t,i){if("transparent"===t)return t;var n=V(t),s=n[3];return"rgba("+n[0]+", "+n[1]+", "+n[2]+", "+i*s+")"}(t,n+(s-n)*i)}function Di(t,i){for(var n,s=t%2600/2600,h=0,r=Ni;h=e.ia&&s<=e.na){n=e;break}}a(void 0!==n,"Last price animation internal logic error");var u,o,l,f=(s-n.ia)/(n.na-n.ia);return{Qu:Si(i,f,n.ra,n.ea),ta:Si(i,f,n.ua,n.aa),C:(u=f,o=n.sa,l=n.ha,o+(l-o)*u)}}var Ti=function(){function t(t){this.ot=new xi,this.L=!0,this.oa=!0,this.la=performance.now(),this.fa=this.la-1,this.ca=t}return t.prototype.O=function(t){if(this.L=!0,"data"===t&&2===this.ca.ct().lastPriceAnimation){var i=performance.now(),n=this.fa-i;if(n>0)return void(n<650&&(this.fa+=2600));this.la=i,this.fa=i+2600}},t.prototype.va=function(){this.oa=!0},t.prototype.U=function(){return 0!==this.ca.ct().lastPriceAnimation},t.prototype._a=function(){switch(this.ca.ct().lastPriceAnimation){case 0:return!1;case 1:return!0;case 2:return performance.now()<=this.fa}},t.prototype.W=function(t,i){return this.L?(this.R(t,i),this.L=!1,this.oa=!1):this.oa&&(this.da(),this.oa=!1),this.ot},t.prototype.R=function(t,i){this.ot._(null);var n=this.ca.vt().j(),s=n.mr(),h=this.ca.H();if(null!==s&&null!==h){var r=this.ca.wa(!0);if(!r.Ma&&s.Fh(r.zh)){var e={x:n.G(r.zh),y:this.ca.$().K(r.D,h.X)},u=r.et,a=this.ca.ct().lineWidth,o=Di(this.ba(),u);this.ot._({Ju:u,Gu:a,Qu:o.Qu,ta:o.ta,C:o.C,Lu:e})}}},t.prototype.da=function(){var t=this.ot.Zu();if(null!==t){var i=Di(this.ba(),t.Ju);t.Qu=i.Qu,t.ta=i.ta,t.C=i.C}},t.prototype.ba=function(){return this._a()?performance.now()-this.la:2599},t}();function Ai(t,i){return et(Math.min(Math.max(t,12),30)*i)}function Bi(t,i){switch(t){case"arrowDown":case"arrowUp":return Ai(i,1);case"circle":return Ai(i,.8);case"square":return Ai(i,.7)}}function Li(t){return rt(Ai(t,1))}function Ei(t){return Math.max(Ai(t,.1),3)}function Fi(t,i,n,s,h){var r=Bi("square",n),e=(r-1)/2,u=t-e,a=i-e;return s>=u&&s<=u+r&&h>=a&&h<=a+r}function Vi(t,i,n,s,h){var r=(Bi("arrowUp",h)-1)/2,e=(et(h/2)-1)/2;i.beginPath(),t?(i.moveTo(n-r,s),i.lineTo(n,s-r),i.lineTo(n+r,s),i.lineTo(n+e,s),i.lineTo(n+e,s+r),i.lineTo(n-e,s+r),i.lineTo(n-e,s)):(i.moveTo(n-r,s),i.lineTo(n,s+r),i.lineTo(n+r,s),i.lineTo(n+e,s),i.lineTo(n+e,s-r),i.lineTo(n-e,s-r),i.lineTo(n-e,s)),i.fill()}function Oi(t,i,n,s,h,r){return Fi(i,n,s,h,r)}var Pi=function(t){function i(){var i=null!==t&&t.apply(this,arguments)||this;return i.tt=null,i.zu=new mi,i.fe=-1,i.ce="",i.ma="",i}return r(i,t),i.prototype._=function(t){this.tt=t},i.prototype.Ru=function(t,i){this.fe===t&&this.ce===i||(this.fe=t,this.ce=i,this.ma=qt(t,i),this.zu.Ou())},i.prototype.ga=function(t,i){if(null===this.tt||null===this.tt.M)return null;for(var n=this.tt.M.from;n=t&&h<=t+n&&r>=i-e&&r<=i+e}(t.g,t.Ft.p,t.Ft.wt,t.Ft.Mt,i,n))||function(t,i,n){if(0===t.Je)return!1;switch(t.xa){case"arrowDown":case"arrowUp":return Oi(0,t.g,t.p,t.Je,i,n);case"circle":return function(t,i,n,s,h){var r=2+Bi("circle",n)/2,e=t-s,u=i-h;return Math.sqrt(e*e+u*u)<=r}(t.g,t.p,t.Je,i,n);case"square":return Fi(t.g,t.p,t.Je,i,n)}}(t,i,n)}function Ri(t,i,n,s,h,r,e,u,a){var o=v(n)?n:n.close,l=v(n)?n:n.high,f=v(n)?n:n.low,c=v(i.size)?Math.max(i.size,0):1,_=Li(u.Pr())*c,d=_/2;switch(t.Je=_,i.position){case"inBar":return t.p=e.K(o,a),void(void 0!==t.Ft&&(t.Ft.p=t.p+d+r+.6*h));case"aboveBar":return t.p=e.K(l,a)-d-s.Na,void 0!==t.Ft&&(t.Ft.p=t.p-d-.6*h,s.Na+=1.2*h),void(s.Na+=_+r);case"belowBar":return t.p=e.K(f,a)+d+s.Sa,void 0!==t.Ft&&(t.Ft.p=t.p+d+r+.6*h,s.Sa+=1.2*h),void(s.Sa+=_+r)}i.position}var Ii=function(){function t(t,i){this.L=!0,this.Da=!0,this.Ta=!0,this.Aa=null,this.ot=new Pi,this.ca=t,this.hi=i,this.tt={m:[],M:null}}return t.prototype.O=function(t){this.L=!0,this.Ta=!0,"data"===t&&(this.Da=!0)},t.prototype.W=function(t,i,n){if(!this.ca.U())return null;this.L&&this.Ye();var s=this.hi.ct().layout;return this.ot.Ru(s.fontSize,s.fontFamily),this.ot._(this.tt),this.ot},t.prototype.Ba=function(){if(this.Ta){if(this.ca.La().length>0){var t=this.hi.j().Pr(),i=Ei(t),n=1.5*Li(t)+2*i;this.Aa={above:n,below:n}}else this.Aa=null;this.Ta=!1}return this.Aa},t.prototype.Ye=function(){var t=this.ca.$(),i=this.hi.j(),n=this.ca.La();this.Da&&(this.tt.m=n.map((function(t){return{S:t.time,g:0,p:0,Je:0,xa:t.shape,et:t.color,ya:t.ya,ka:t.id,Ft:void 0}})),this.Da=!1);var s=this.hi.ct().layout;this.tt.M=null;var h=i.mr();if(null!==h){var r=this.ca.H();if(null!==r&&0!==this.tt.m.length){var e=NaN,u=Ei(i.Pr()),a={Na:u,Sa:u};this.tt.M=ii(this.tt.m,h,!0);for(var o=this.tt.M.from;o0&&(f.Ft={Ca:l.text,p:0,wt:0,Mt:0});var c=this.ca.Ea(l.time);null!==c&&Ri(f,l,c,a,s.fontSize,u,t,i,r.X)}this.L=!1}}},t}(),ji=function(t){function i(i){return t.call(this,i)||this}return r(i,t),i.prototype.Xu=function(t,i){var n=this.Ku;n.U=!1;var s=this.qe.ct();if(s.priceLineVisible&&this.qe.U()){var h=this.qe.wa(0===s.priceLineSource);h.Ma||(n.U=!0,n.p=h.Wt,n.et=this.qe.Fa(h.et),n.wt=i,n.Mt=t,n.rt=s.priceLineWidth,n.ut=s.priceLineStyle)}},i}(ki),qi=function(t){function i(i){var n=t.call(this)||this;return n.lt=i,n}return r(i,t),i.prototype.Jt=function(t,i,n){t.U=!1,i.U=!1;var s=this.lt;if(s.U()){var h=s.ct(),r=h.lastValueVisible,e=""!==s.Va(),u=0===h.seriesLastValueMode,a=s.wa(!1);if(!a.Ma){r&&(t.Ft=this.Oa(a,r,u),t.U=0!==t.Ft.length),(e||u)&&(i.Ft=this.Pa(a,r,e,u),i.U=i.Ft.length>0);var o=s.Fa(a.et),l=O(o);n.yt=l.yt,n.et=l.kt,n.Wt=a.Wt,i.Z=s.vt().J(a.Wt/s.$().Mt()),t.Z=o}}},i.prototype.Pa=function(t,i,n,s){var h="",r=this.lt.Va();return n&&0!==r.length&&(h+=r+" "),i&&s&&(h+=this.lt.$().cs()?t.Wa:t.za),h.trim()},i.prototype.Oa=function(t,i,n){return i?n?this.lt.$().cs()?t.za:t.Wa:t.Ft:""},i}(q),Ui=function(){function t(t,i){this.On=t,this.Ra=i||null}return t.prototype.Cs=function(){return this.On},t.prototype.eh=function(){return this.Ra},t.prototype.Mn=function(){return null===this.On?null:{priceRange:this.On.Mn(),margins:this.Ra||void 0}},t.bn=function(i){return null===i?null:new t(it.bn(i.priceRange),i.margins)},t}(),Hi=function(t){function i(i,n){var s=t.call(this,i)||this;return s.Ia=n,s}return r(i,t),i.prototype.Xu=function(t,i){var n=this.Ku;if(n.U=!1,this.qe.U()){var s=this.Ia.ja();if(null!==s){var h=this.Ia.ct();n.U=!0,n.p=s,n.et=h.color,n.wt=i,n.Mt=t,n.rt=h.lineWidth,n.ut=h.lineStyle}}},i}(ki),Yi=function(t){function i(i,n){var s=t.call(this)||this;return s.ca=i,s.Ia=n,s}return r(i,t),i.prototype.Jt=function(t,i,n){t.U=!1,i.U=!1;var s=this.Ia.ct(),h=s.axisLabelVisible,r=""!==s.title,e=this.ca;if(h&&e.U()){var u=this.Ia.ja();if(null!==u){r&&(i.Ft=s.title,i.U=!0),i.Z=e.vt().J(u/e.$().Mt()),t.Ft=e.$().Zs(s.price),t.U=!0;var a=O(s.color);n.yt=a.yt,n.et=a.kt,n.Wt=u}}},i}(q),Ki=function(){function t(t,i){this.ca=t,this.ki=i,this.qa=new Hi(t,this),this.Iu=new Yi(t,this),this.Ua=new pi(this.Iu,t,t.vt())}return t.prototype.rs=function(t){c(this.ki,t),this.O(),this.ca.vt().Or()},t.prototype.ct=function(){return this.ki},t.prototype.Wi=function(){return[this.qa,this.Ua]},t.prototype.Ha=function(){return this.Iu},t.prototype.O=function(){this.qa.O(),this.Iu.O()},t.prototype.ja=function(){var t=this.ca,i=t.$();if(t.vt().j().ti()||i.ti())return null;var n=t.H();return null===n?null:i.K(this.ki.price,n.X)},t}(),$i=function(t){function i(i){var n=t.call(this)||this;return n.hi=i,n}return r(i,t),i.prototype.vt=function(){return this.hi},i}($),Xi={fu:"",Su:"",Nu:""},Zi=function(){function t(t){this.ca=t}return t.prototype.cu=function(t,i){var n=this.ca.Ya(),s=this.ca.ct();switch(n){case"Line":return this.Ka(s);case"Area":return this.$a(s);case"Baseline":return this.Xa(s,t,i);case"Bar":return this.Za(s,t,i);case"Candlestick":return this.Ja(s,t,i);case"Histogram":return this.Ga(s,t,i)}throw new Error("Unknown chart style")},t.prototype.Za=function(t,i,n){var s=e({},Xi),h=t.upColor,r=t.downColor,u=h,a=r,o=l(this.Qa(i,n)),c=f(o.X[0])<=f(o.X[3]);return s.fu=c?h:r,s.Su=c?u:a,s},t.prototype.Ja=function(t,i,n){var s=e({},Xi),h=t.upColor,r=t.downColor,u=t.borderUpColor,a=t.borderDownColor,o=t.wickUpColor,c=t.wickDownColor,v=l(this.Qa(i,n)),_=f(v.X[0])<=f(v.X[3]);return s.fu=_?h:r,s.Su=_?u:a,s.Nu=_?o:c,s},t.prototype.$a=function(t){return e(e({},Xi),{fu:t.lineColor})},t.prototype.Xa=function(t,i,n){var s=l(this.Qa(i,n)).X[3]>=t.baseValue.price;return e(e({},Xi),{fu:s?t.topLineColor:t.bottomLineColor})},t.prototype.Ka=function(t){return e(e({},Xi),{fu:t.color})},t.prototype.Ga=function(t,i,n){var s=e({},Xi),h=l(this.Qa(i,n));return s.fu=void 0!==h.et?h.et:t.color,s},t.prototype.Qa=function(t,i){return void 0!==i?i.X:this.ca.Hi().io(t)},t}(),Ji=30,Gi=function(){function t(){this.no=[],this.so=new Map,this.ho=new Map}return t.prototype.ro=function(){return this.Je()>0?this.no[this.no.length-1]:null},t.prototype.eo=function(){return this.Je()>0?this.uo(0):null},t.prototype.Ui=function(){return this.Je()>0?this.uo(this.no.length-1):null},t.prototype.Je=function(){return this.no.length},t.prototype.ti=function(){return 0===this.Je()},t.prototype.Fh=function(t){return null!==this.ao(t,0)},t.prototype.io=function(t){return this.oo(t)},t.prototype.oo=function(t,i){void 0===i&&(i=0);var n=this.ao(t,i);return null===n?null:e(e({},this.lo(n)),{zh:this.uo(n)})},t.prototype.iu=function(){return this.no},t.prototype.fo=function(t,i,n){if(this.ti())return null;for(var s=null,h=0,r=n;h0&&(i-=1),i!==this.no.length&&this.uo(i)t}))},t.prototype.bo=function(t,i,n){for(var s=null,h=t;hs.po&&(s.po=r)))}return s},t.prototype.co=function(t,i,n){if(this.ti())return null;var s=null,h=l(this.eo()),r=l(this.Ui()),e=Math.max(t,h),u=Math.min(i,r),a=Math.ceil(e/Ji)*Ji,o=Math.max(a,Math.floor(u/Ji)*Ji),f=this.wo(e),c=this.Mo(Math.min(u,a,i));s=Qi(s,this.bo(f,c,n));var v=this.so.get(n);void 0===v&&(v=new Map,this.so.set(n,v));for(var _=Math.max(a+1,e);_=0&&r.zs(t),null!==r&&(r.Ws(),this.yl(r)),this.Yn=null},t.prototype.Hu=function(t){return t===this.ol?"left":t===this.fl?"right":"overlay"},t.prototype.kl=function(){return this.ol},t.prototype.Cl=function(){return this.fl},t.prototype.xl=function(t,i){t.js(i)},t.prototype.Nl=function(t,i){t.qs(i),this.bl()},t.prototype.Sl=function(t){t.Us()},t.prototype.Dl=function(t,i){t.Hs(i)},t.prototype.Tl=function(t,i){t.Ys(i),this.bl()},t.prototype.Al=function(t){t.Ks()},t.prototype.bl=function(){this.Hn.forEach((function(t){t.Ii()}))},t.prototype.Ni=function(){var t=null;return this.hi.ct().rightPriceScale.visible&&0!==this.fl.Vs().length?t=this.fl:this.hi.ct().leftPriceScale.visible&&0!==this.ol.Vs().length?t=this.ol:0!==this.Hn.length&&(t=this.Hn[0].$()),null===t&&(t=this.fl),t},t.prototype.yl=function(t){null!==t&&t.fs()&&this.Bl(t)},t.prototype.Ll=function(t){var i=this.ul.mr();t.us({_s:!0}),null!==i&&t.th(i),this.bl()},t.prototype.El=function(){this.Bl(this.ol),this.Bl(this.fl)},t.prototype.Fl=function(){var t=this;this.yl(this.ol),this.yl(this.fl),this.Hn.forEach((function(i){t.Uu(i)&&t.yl(i.$())})),this.bl(),this.hi.Or()},t.prototype.Os=function(){return null===this.Yn&&(this.Yn=Mt(this.Hn)),this.Yn},t.prototype.Vl=function(){return this.el},t.prototype.Ol=function(){return this.al},t.prototype.Bl=function(t){var i=t.Qs();if(i&&i.length>0&&!this.ul.ti()){var n=this.ul.mr();null!==n&&t.th(n)}t.Ii()},t.prototype.gl=function(){var t=this.Os();if(0===t.length)return{Pl:0,ml:0};for(var i=0,n=0,s=0;sn&&(n=h))}return{Pl:i,ml:n}},t.prototype.pl=function(t,i,n){var s=this._l(i);if(null===s&&(s=this.ll(i,this.hi.ct().overlayPriceScales)),this.Hn.push(t),!Ht(i)){var h=this.hl.get(i)||[];h.push(t),this.hl.set(i,h)}s.Ps(t),t.fi(s),t.li(n),this.yl(s),this.Yn=null},t.prototype.cl=function(t,i,n){i.os!==n.os&&this.Bl(t)},t.prototype.ll=function(t,i){var n=e({visible:!0,autoScale:!0},M(i)),s=new yt(t,n,this.hi.ct().layout,this.hi.ct().localization);return s.gs(this.Mt()),s},t}(),un=function(t){function i(i){var n=t.call(this)||this;return n.Wl=new Map,n.tt=i,n}return r(i,t),i.prototype.u=function(t){},i.prototype.l=function(t){if(this.tt.U){t.save();for(var i=0,n=0,s=this.tt.zl;nthis.tt.wt?a.Ur=this.tt.wt/h:a.Ur=1,i+=a.Il*a.Ur}}var r=0;switch(this.tt.jl){case"top":r=0;break;case"center":r=Math.max((this.tt.Mt-i)/2,0);break;case"bottom":r=Math.max(this.tt.Mt-i,0)}t.fillStyle=this.tt.et;for(var e=0,u=this.tt.zl;e20&&(this.$l=null,i=!0),this.ul.Ys(t),this.Vr(),i},t.prototype.Sf=function(){this.ul.Ks(),this.Or(),this.$l=null},t.prototype.P=function(){return this.Kl},t.prototype.Af=function(t,i,n){this.V.Ai(t,i);var s=NaN,h=this.ul.Er(t),r=this.ul.mr();null!==r&&(h=Math.min(Math.max(r.hh(),h),r.rh()));var e=n.Ni(),u=e.H();null!==u&&(s=e.Si(i,u)),s=this.if.$o(s,h,n),this.V.Fi(h,s,n),this.jo(),this.Jl.hn(this.V.I(),{x:t,y:i})},t.prototype.Bf=function(){this.bf().Oi(),this.jo(),this.Jl.hn(null,null)},t.prototype.Fo=function(){var t=this.V.ft();if(null!==t){var i=this.V.Li(),n=this.V.Ei();this.Af(i,n,t)}this.V.Ii()},t.prototype.Lf=function(t,i,n){var s=this.ul.ri(0);void 0!==i&&void 0!==n&&this.ul.O(i,n);var h=this.ul.ri(0),r=this.ul.Br(),e=this.ul.mr();if(null!==e&&null!==s&&null!==h){var u=e.Fh(r),a=s.Dh>h.Dh,o=null!==t&&t>r&&!a,l=u&&this.ul.ct().shiftVisibleRangeOnNewBar;if(o&&!l){var f=t-r;this.ul.Mr(this.ul.zr()-f)}}this.ul.qr(t)},t.prototype.Oo=function(t){null!==t&&t.Fl()},t.prototype.qu=function(t){var i=this.Yl.find((function(i){return i.Os().includes(t)}));return void 0===i?null:i},t.prototype.Vr=function(){this.nf.Ii(),this.Yl.forEach((function(t){return t.Fl()})),this.Fo()},t.prototype.en=function(){this.Yl.forEach((function(t){return t.en()})),this.Yl.length=0,this.ki.localization.priceFormatter=void 0,this.ki.localization.timeFormatter=void 0},t.prototype.Ef=function(){return this.tf},t.prototype.Yu=function(){return this.tf.ct()},t.prototype.dl=function(){return this.Zl},t.prototype.Ff=function(t,i){var n=this.Yl[0],s=this.Vf(i,t,n);return this.Kl.push(s),1===this.Kl.length?this.uf():this.Or(),s},t.prototype.Of=function(t){var i=this.qu(t),n=this.Kl.indexOf(t);a(-1!==n,"Series not found"),this.Kl.splice(n,1),l(i).zs(t),t.en&&t.en()},t.prototype.Lo=function(t,i){var n=l(this.qu(t));n.zs(t);var s=this.df(i);if(null===s){var h=t.oi();n.Ps(t,i,h)}else{h=s.ft===n?t.oi():void 0;s.ft.Ps(t,i,h)}},t.prototype.Qr=function(){var t=new Yt(2);t.ye(),this.af(t)},t.prototype.Pf=function(t){var i=new Yt(2);i.Ce(t),this.af(i)},t.prototype.xe=function(){var t=new Yt(2);t.xe(),this.af(t)},t.prototype.wr=function(t){var i=new Yt(2);i.wr(t),this.af(i)},t.prototype.Mr=function(t){var i=new Yt(2);i.Mr(t),this.af(i)},t.prototype.Wf=function(){return this.ki.rightPriceScale.visible?"right":"left"},t.prototype.zf=function(){return this.ef},t.prototype.Rf=function(){return this.hf},t.prototype.J=function(t){var i=this.ef,n=this.hf;if(i===n)return i;if(t=Math.max(0,Math.min(100,Math.round(100*t))),null===this.Gl||this.Gl.Ve!==n||this.Gl.Oe!==i)this.Gl={Ve:n,Oe:i,If:new Map};else{var s=this.Gl.If.get(t);if(void 0!==s)return s}var h=function(t,i,n){var s=V(t),h=s[0],r=s[1],e=s[2],u=s[3],a=V(i),o=a[0],l=a[1],f=a[2],c=a[3],v=[T(h+n*(o-h)),T(r+n*(l-r)),T(e+n*(f-e)),A(u+n*(c-u))];return"rgba("+v[0]+", "+v[1]+", "+v[2]+", "+v[3]+")"}(n,i,t/100);return this.Gl.If.set(t,h),h},t.prototype.pf=function(t,i){var n=new Yt(i);if(null!==t){var s=this.Yl.indexOf(t);n.be(s,{me:i})}return n},t.prototype.lf=function(t,i){return void 0===i&&(i=2),this.pf(this.qu(t),i)},t.prototype.af=function(t){this.Ql&&this.Ql(t),this.Yl.forEach((function(t){return t.Ol().sl().O()}))},t.prototype.Vf=function(t,i,n){var s=new tn(this,t,i),h=void 0!==t.priceScaleId?t.priceScaleId:this.Wf();return n.Ps(s,h),Ht(h)||s.rs(t),s},t.prototype.rf=function(t){var i=this.ki.layout;return"gradient"===i.background.type?0===t?i.background.topColor:i.background.bottomColor:i.background.color},t}(),fn={allowDownsampling:!0};var cn=function(){function t(t,i){var n=this;this._resolutionMediaQueryList=null,this._resolutionListener=function(t){return n._onResolutionChanged()},this._canvasConfiguredListeners=[],this.canvas=t,this._canvasSize={width:this.canvas.clientWidth,height:this.canvas.clientHeight},this._options=i,this._configureCanvas(),this._installResolutionListener()}return t.prototype.destroy=function(){this._canvasConfiguredListeners.length=0,this._uninstallResolutionListener(),this.canvas=null},Object.defineProperty(t.prototype,"canvasSize",{get:function(){return{width:this._canvasSize.width,height:this._canvasSize.height}},enumerable:!0,configurable:!0}),t.prototype.resizeCanvas=function(t){this._canvasSize={width:t.width,height:t.height},this._configureCanvas()},Object.defineProperty(t.prototype,"pixelRatio",{get:function(){var t=this.canvas.ownerDocument.defaultView;if(null==t)throw new Error("No window is associated with the canvas");return t.devicePixelRatio>1||this._options.allowDownsampling?t.devicePixelRatio:1},enumerable:!0,configurable:!0}),t.prototype.subscribeCanvasConfigured=function(t){this._canvasConfiguredListeners.push(t)},t.prototype.unsubscribeCanvasConfigured=function(t){this._canvasConfiguredListeners=this._canvasConfiguredListeners.filter((function(i){return i!=t}))},t.prototype._configureCanvas=function(){var t=this.pixelRatio;this.canvas.style.width=this._canvasSize.width+"px",this.canvas.style.height=this._canvasSize.height+"px",this.canvas.width=this._canvasSize.width*t,this.canvas.height=this._canvasSize.height*t,this._emitCanvasConfigured()},t.prototype._emitCanvasConfigured=function(){var t=this;this._canvasConfiguredListeners.forEach((function(i){return i.call(t)}))},t.prototype._installResolutionListener=function(){if(null!==this._resolutionMediaQueryList)throw new Error("Resolution listener is already installed");var t=this.canvas.ownerDocument.defaultView;if(null==t)throw new Error("No window is associated with the canvas");var i=t.devicePixelRatio;this._resolutionMediaQueryList=t.matchMedia("all and (resolution: "+i+"dppx)"),this._resolutionMediaQueryList.addListener(this._resolutionListener)},t.prototype._uninstallResolutionListener=function(){null!==this._resolutionMediaQueryList&&(this._resolutionMediaQueryList.removeListener(this._resolutionListener),this._resolutionMediaQueryList=null)},t.prototype._reinstallResolutionListener=function(){this._uninstallResolutionListener(),this._installResolutionListener()},t.prototype._onResolutionChanged=function(){this._configureCanvas(),this._reinstallResolutionListener()},t}(),vn=function(){function t(t,i){this.st=t,this.ht=i}return t.prototype.on=function(t){return this.st===t.st&&this.ht===t.ht},t}();function _n(t){return t.ownerDocument&&t.ownerDocument.defaultView&&t.ownerDocument.defaultView.devicePixelRatio||1}function dn(t){var i=l(t.getContext("2d"));return i.setTransform(1,0,0,1,0,0),i}function wn(t,i){var n=t.createElement("canvas"),s=_n(n);return n.style.width=i.st+"px",n.style.height=i.ht+"px",n.width=i.st*s,n.height=i.ht*s,n}function Mn(t,i){var n=l(t.ownerDocument).createElement("canvas");t.appendChild(n);var s=function(t,i){return void 0===i&&(i=fn),new cn(t,i)}(n);return s.resizeCanvas({width:i.st,height:i.ht}),s}function bn(t,i){return t.jf-i.jf}function mn(t,i,n){var s=(t.jf-i.jf)/(t.S-i.S);return Math.sign(s)*Math.min(Math.abs(s),n)}var gn=function(){function t(t,i,n,s){this.qf=null,this.Uf=null,this.Hf=null,this.Yf=null,this.Kf=null,this.$f=0,this.Xf=0,this.Zf=!1,this.Jf=t,this.Gf=i,this.Qf=n,this.Yi=s}return t.prototype.tc=function(t,i){if(null!==this.qf){if(this.qf.S===i)return void(this.qf.jf=t);if(Math.abs(this.qf.jf-t)50)){var n=0,s=mn(this.qf,this.Uf,this.Gf),h=bn(this.qf,this.Uf),r=[s],e=[h];if(n+=h,null!==this.Hf){var u=mn(this.Uf,this.Hf,this.Gf);if(Math.sign(u)===Math.sign(s)){var a=bn(this.Uf,this.Hf);if(r.push(u),e.push(a),n+=a,null!==this.Yf){var o=mn(this.Hf,this.Yf,this.Gf);if(Math.sign(o)===Math.sign(s)){var l=bn(this.Hf,this.Yf);r.push(o),e.push(l),n+=l}}}}for(var f,c,v,_=0,d=0;d5;if(e||!i){if(e&&!this.fc&&i){var u=.5*h,a=r>=u&&!this.ki.Oc,o=u>r&&!this.ki.Pc;a||o||(this.mc=!0)}e&&(this.fc=!0,this.cc=!0,i&&this.xc()),this.mc||(this.Ac(n,this.kc.Wc),i&&Dn(t))}}}},t.prototype.zc=function(t){if(!("button"in t)||0===t.button){var i=this.Tc(t);this.xc(),this.lc=null,this.gc=!1,this.dc&&(this.dc(),this.dc=null),Sn(t)&&this.Rc(t),this.Ac(i,this.kc.Ic),++this.ec,this.uc&&this.ec>1?(this.Ac(i,this.kc.jc),this.Nc()):this.cc||this.Ac(i,this.kc.qc),Sn(t)&&(Dn(t),this.Rc(t),0===t.touches.length&&(this.oc=!1))}},t.prototype.xc=function(){null!==this.ac&&(clearTimeout(this.ac),this.ac=null)},t.prototype.Uc=function(t){if(!("button"in t)||0===t.button){var i=this.Tc(t);this.cc=!1,this.fc=!1,this.mc=!1,Sn(t)&&this.Sc(t),this.lc={g:i.Fc,p:i.Vc},this.dc&&(this.dc(),this.dc=null);var n=this.Ec.bind(this),s=this.zc.bind(this),h=this.yc.ownerDocument.documentElement;this.dc=function(){h.removeEventListener("touchmove",n),h.removeEventListener("touchend",s),h.removeEventListener("mousemove",n),h.removeEventListener("mouseup",s)},h.addEventListener("touchmove",n,{passive:!1}),h.addEventListener("touchend",s,{passive:!1}),this.xc(),Sn(t)&&1===t.touches.length?this.ac=setTimeout(this.Hc.bind(this,t),240):(h.addEventListener("mousemove",n),h.addEventListener("mouseup",s)),this.gc=!0,this.Ac(i,this.kc.Yc),this.uc||(this.ec=0,this.uc=setTimeout(this.Nc.bind(this),500))}},t.prototype.Cc=function(){var t=this;this.yc.addEventListener("mouseenter",this.Sc.bind(this)),this.yc.addEventListener("touchcancel",this.xc.bind(this));var i=this.yc.ownerDocument,n=function(i){t.kc.Kc&&(i.composed&&t.yc.contains(i.composedPath()[0])||i.target&&t.yc.contains(i.target)||t.kc.Kc())};this.vc=function(){i.removeEventListener("mousedown",n),i.removeEventListener("touchstart",n)},i.addEventListener("mousedown",n),i.addEventListener("touchstart",n,{passive:!0}),this.yc.addEventListener("mouseleave",this.Rc.bind(this)),this.yc.addEventListener("touchstart",this.Uc.bind(this),{passive:!0}),yn||this.yc.addEventListener("mousedown",this.Uc.bind(this)),this.$c(),this.yc.addEventListener("touchmove",(function(){}),{passive:!1})},t.prototype.$c=function(){var t=this;void 0===this.kc.Xc&&void 0===this.kc.Zc&&void 0===this.kc.Jc||(this.yc.addEventListener("touchstart",(function(i){return t.Gc(i.touches)}),{passive:!0}),this.yc.addEventListener("touchmove",(function(i){if(2===i.touches.length&&null!==t.wc&&void 0!==t.kc.Zc){var n=Nn(i.touches[0],i.touches[1])/t.Mc;t.kc.Zc(t.wc,n),Dn(i)}}),{passive:!1}),this.yc.addEventListener("touchend",(function(i){t.Gc(i.touches)})))},t.prototype.Gc=function(t){1===t.length&&(this.bc=!1),2!==t.length||this.bc||this.oc?this.Qc():this.tv(t)},t.prototype.tv=function(t){var i=xn(this.yc);this.wc={g:(t[0].clientX-i.left+(t[1].clientX-i.left))/2,p:(t[0].clientY-i.top+(t[1].clientY-i.top))/2},this.Mc=Nn(t[0],t[1]),void 0!==this.kc.Xc&&this.kc.Xc(),this.xc()},t.prototype.Qc=function(){null!==this.wc&&(this.wc=null,void 0!==this.kc.Jc&&this.kc.Jc())},t.prototype.Rc=function(t){this._c&&this._c();var i=this.Tc(t);this.Ac(i,this.kc.iv)},t.prototype.Hc=function(t){var i=this.Tc(t);this.Ac(i,this.kc.nv),this.cc=!0,this.oc=!0},t.prototype.Ac=function(t,i){i&&i.call(this.kc,t)},t.prototype.Tc=function(t){var i;i="touches"in t&&t.touches.length?t.touches[0]:"changedTouches"in t&&t.changedTouches.length?t.changedTouches[0]:t;var n=xn(this.yc);return{sv:i.clientX,hv:i.clientY,Fc:i.pageX,Vc:i.pageY,rv:i.screenX,ev:i.screenY,uv:i.clientX-n.left,av:i.clientY-n.top,ov:t.ctrlKey,lv:t.altKey,fv:t.shiftKey,cv:t.metaKey,ke:t.type.startsWith("mouse")?"mouse":"touch",vv:t.view}},t}();function xn(t){return t.getBoundingClientRect()||{left:0,top:0}}function Nn(t,i){var n=t.clientX-i.clientX,s=t.clientY-i.clientY;return Math.sqrt(n*n+s*s)}function Sn(t){return Boolean(t.touches)}function Dn(t){t.cancelable&&t.preventDefault()}var Tn=function(){function t(t,i,n,s){this.zu=new mi(200),this.fe=0,this._v="",this.ma="",this.Vu=[],this.dv=new Map,this.fe=t,this._v=i,this.ma=qt(t,n,s)}return t.prototype.en=function(){this.zu.Ou(),this.Vu=[],this.dv.clear()},t.prototype.wv=function(t,i,n,s,h){var r=this.Mv(t,i);if("left"!==h){var e=_n(t.canvas);n-=Math.floor(r.bv*e)}s-=Math.floor(r.Mt/2),t.drawImage(r.mv,n,s,r.wt,r.Mt)},t.prototype.Mv=function(t,i){var n,s=this;if(this.dv.has(i))n=o(this.dv.get(i));else{if(this.Vu.length>=200){var h=o(this.Vu.shift());this.dv.delete(h)}var r=_n(t.canvas),e=Math.ceil(this.fe/4.5),u=Math.round(this.fe/10),a=Math.ceil(this.zu.Vt(t,i)),l=rt(Math.round(a+2*e)),f=rt(this.fe+2*e),c=wn(document,new vn(l,f));n={Ft:i,bv:Math.round(Math.max(1,a)),wt:Math.ceil(l*r),Mt:Math.ceil(f*r),mv:c},0!==a&&(this.Vu.push(n.Ft),this.dv.set(n.Ft,n)),W(t=dn(n.mv),r,(function(){t.font=s.ma,t.fillStyle=s._v,t.fillText(i,0,f-e-u)}))}return n},t}(),An=function(){function t(t,i,n,s){var h=this;this.Gt=null,this.gv=null,this.pv=null,this.yv=!1,this.kv=new mi(50),this.Cv=new Tn(11,"#000"),this._v=null,this.ma=null,this.xv=0,this.Nv=function(){h.Sv(h.tf.ct()),h.vi.Dv().vt().Or()},this.Tv=function(){h.vi.Dv().vt().Or()},this.vi=t,this.ki=i,this.tf=n,this.Av="left"===s,this.Bv=document.createElement("div"),this.Bv.style.height="100%",this.Bv.style.overflow="hidden",this.Bv.style.width="25px",this.Bv.style.left="0",this.Bv.style.position="relative",this.Lv=Mn(this.Bv,new vn(16,16)),this.Lv.subscribeCanvasConfigured(this.Nv);var r=this.Lv.canvas;r.style.position="absolute",r.style.zIndex="1",r.style.left="0",r.style.top="0",this.Ev=Mn(this.Bv,new vn(16,16)),this.Ev.subscribeCanvasConfigured(this.Tv);var e=this.Ev.canvas;e.style.position="absolute",e.style.zIndex="2",e.style.left="0",e.style.top="0";var u={Yc:this.Fv.bind(this),Wc:this.Vv.bind(this),Kc:this.Ov.bind(this),Ic:this.Pv.bind(this),jc:this.Wv.bind(this),Bc:this.zv.bind(this),iv:this.Rv.bind(this)};this.Iv=new Cn(this.Ev.canvas,u,{Oc:!1,Pc:!0})}return t.prototype.en=function(){this.Iv.en(),this.Ev.unsubscribeCanvasConfigured(this.Tv),this.Ev.destroy(),this.Lv.unsubscribeCanvasConfigured(this.Nv),this.Lv.destroy(),null!==this.Gt&&this.Gt.Is().sn(this),this.Gt=null,null!==this.pv&&(clearTimeout(this.pv),this.pv=null),this.Cv.en()},t.prototype.jv=function(){return this.Bv},t.prototype.N=function(){return l(this.Gt).ct().borderColor},t.prototype.qv=function(){return this.ki.textColor},t.prototype.Pt=function(){return this.ki.fontSize},t.prototype.Uv=function(){return qt(this.Pt(),this.ki.fontFamily)},t.prototype.Hv=function(){var t=this.tf.ct(),i=this._v!==t.et,n=this.ma!==t.xt;return(i||n)&&(this.Sv(t),this._v=t.et),n&&(this.kv.Ou(),this.ma=t.xt),t},t.prototype.Yv=function(){if(null===this.Gt)return 0;var t=34,i=this.Hv(),n=dn(this.Lv.canvas),s=this.Gt.En();n.font=this.Uv(),s.length>0&&(t=Math.max(this.kv.Vt(n,s[0].An),this.kv.Vt(n,s[s.length-1].An)));for(var h=this.Kv(),r=h.length;r--;){var e=this.kv.Vt(n,h[r].Ft());e>t&&(t=e)}var u=this.Gt.H();if(null!==u&&null!==this.gv){var a=this.Gt.Si(1,u),o=this.Gt.Si(this.gv.ht-2,u);t=Math.max(t,this.kv.Vt(n,this.Gt.ii(Math.floor(Math.min(a,o))+.11111111111111,u)),this.kv.Vt(n,this.Gt.ii(Math.ceil(Math.max(a,o))-.11111111111111,u)))}var l=Math.ceil(i.Tt+i.Dt+i.Lt+i.Et+t);return l+=l%2},t.prototype.$v=function(t){if(t.st<0||t.ht<0)throw new Error("Try to set invalid size to PriceAxisWidget "+JSON.stringify(t));null!==this.gv&&this.gv.on(t)||(this.gv=t,this.Lv.resizeCanvas({width:t.st,height:t.ht}),this.Ev.resizeCanvas({width:t.st,height:t.ht}),this.Bv.style.width=t.st+"px",this.Bv.style.height=t.ht+"px",this.Bv.style.minWidth=t.st+"px")},t.prototype.Xv=function(){return l(this.gv).st},t.prototype.fi=function(t){this.Gt!==t&&(null!==this.Gt&&this.Gt.Is().sn(this),this.Gt=t,t.Is().Ji(this.qn.bind(this),this))},t.prototype.$=function(){return this.Gt},t.prototype.Ou=function(){var t=this.vi.Zv();this.vi.Dv().vt().Ll(t,l(this.$()))},t.prototype.Jv=function(t){if(null!==this.gv){if(1!==t){var i=dn(this.Lv.canvas);this.Gv(),this.Qv(i,this.Lv.pixelRatio),this.yu(i,this.Lv.pixelRatio),this.t_(i,this.Lv.pixelRatio),this.i_(i,this.Lv.pixelRatio)}var n=dn(this.Ev.canvas),s=this.gv.st,h=this.gv.ht;W(n,this.Ev.pixelRatio,(function(){n.clearRect(0,0,s,h)})),this.n_(n,this.Ev.pixelRatio)}},t.prototype.s_=function(){return this.Lv.canvas},t.prototype.Fv=function(t){if(null!==this.Gt&&!this.Gt.ti()&&this.vi.Dv().ct().handleScale.axisPressedMouseMove.price){var i=this.vi.Dv().vt(),n=this.vi.Zv();this.yv=!0,i.xl(n,this.Gt,t.av)}},t.prototype.Vv=function(t){if(null!==this.Gt&&this.vi.Dv().ct().handleScale.axisPressedMouseMove.price){var i=this.vi.Dv().vt(),n=this.vi.Zv(),s=this.Gt;i.Nl(n,s,t.av)}},t.prototype.Ov=function(){if(null!==this.Gt&&this.vi.Dv().ct().handleScale.axisPressedMouseMove.price){var t=this.vi.Dv().vt(),i=this.vi.Zv(),n=this.Gt;this.yv&&(this.yv=!1,t.Sl(i,n))}},t.prototype.Pv=function(t){if(null!==this.Gt&&this.vi.Dv().ct().handleScale.axisPressedMouseMove.price){var i=this.vi.Dv().vt(),n=this.vi.Zv();this.yv=!1,i.Sl(n,this.Gt)}},t.prototype.Wv=function(t){this.vi.Dv().ct().handleScale.axisDoubleClickReset&&this.Ou()},t.prototype.zv=function(t){null!==this.Gt&&(!this.vi.Dv().vt().ct().handleScale.axisPressedMouseMove.price||this.Gt.cs()||this.Gt.vs()||this.h_(1))},t.prototype.Rv=function(t){this.h_(0)},t.prototype.Kv=function(){var t=this,i=[],n=null===this.Gt?void 0:this.Gt;return function(s){for(var h=0;h0&&(t=h[0].Wt())}));var u=i.filter((function(i){return i.Wt()<=t})),a=i.filter((function(i){return i.Wt()>t}));if(u.sort((function(t,i){return i.Wt()-t.Wt()})),u.length&&a.length&&a.push(u[0]),a.sort((function(t,i){return t.Wt()-i.Wt()})),i.forEach((function(t){return t.Kt(t.Wt())})),this.Gt.ct().alignLabels){for(var o=1;o(_=v.Yt())-f&&l.Kt(_-f)}for(var c=1;c1&&this.z_(),null!==this.r_&&this.r_.Jv(t),null!==this.e_&&this.e_.Jv(t),1!==t){var i=dn(this.Lv.canvas);i.save(),this.Qv(i,this.Lv.pixelRatio),this.w_&&(this.R_(i,this.Lv.pixelRatio),this.I_(i,this.Lv.pixelRatio),this.j_(i,this.Lv.pixelRatio,Fn)),i.restore()}var n=dn(this.Ev.canvas);n.clearRect(0,0,Math.ceil(this.gv.st*this.Ev.pixelRatio),Math.ceil(this.gv.ht*this.Ev.pixelRatio)),this.j_(n,this.Lv.pixelRatio,Vn),this.q_(n,this.Ev.pixelRatio)}},t.prototype.U_=function(){return this.r_},t.prototype.H_=function(){return this.e_},t.prototype.b_=function(){null!==this.w_&&this.w_.Vl().sn(this),this.w_=null},t.prototype.Qv=function(t,i){var n=this;W(t,i,(function(){var i=n.hi(),s=i.Rf(),h=i.zf();s===h?z(t,0,0,n.gv.st,n.gv.ht,h):R(t,0,0,n.gv.st,n.gv.ht,s,h)}))},t.prototype.R_=function(t,i){var n=l(this.w_),s=n.Ol().sl().W(n.Mt(),n.wt());null!==s&&(t.save(),s.h(t,i,!1),t.restore())},t.prototype.I_=function(t,i){var n=this.hi().Mf();this.Y_(t,i,Fn,Ln,n),this.Y_(t,i,Fn,En,n)},t.prototype.q_=function(t,i){this.Y_(t,i,Fn,En,this.hi().bf())},t.prototype.j_=function(t,i,n){for(var s=l(this.w_).Os(),h=0,r=s;hi.Rh?t:i}var zn=function(){function t(t){var i=this;this.Q_=null,this.td=null,this.oe=null,this.nd=!1,this.gv=new vn(0,0),this.sd=new tt,this.kv=new mi(5),this.Nv=function(){return i.M_.vt().Or()},this.Tv=function(){return i.M_.vt().Or()},this.M_=t,this.ki=t.ct().layout,this.hd=document.createElement("tr"),this.rd=document.createElement("td"),this.rd.style.padding="0",this.ed=document.createElement("td"),this.ed.style.padding="0",this.Bv=document.createElement("td"),this.Bv.style.height="25px",this.Bv.style.padding="0",this.ud=document.createElement("div"),this.ud.style.width="100%",this.ud.style.height="100%",this.ud.style.position="relative",this.ud.style.overflow="hidden",this.Bv.appendChild(this.ud),this.Lv=Mn(this.ud,new vn(16,16)),this.Lv.subscribeCanvasConfigured(this.Nv);var n=this.Lv.canvas;n.style.position="absolute",n.style.zIndex="1",n.style.left="0",n.style.top="0",this.Ev=Mn(this.ud,new vn(16,16)),this.Ev.subscribeCanvasConfigured(this.Tv);var s=this.Ev.canvas;s.style.position="absolute",s.style.zIndex="2",s.style.left="0",s.style.top="0",this.hd.appendChild(this.rd),this.hd.appendChild(this.Bv),this.hd.appendChild(this.ed),this.ad(),this.M_.vt().dl().Ji(this.ad.bind(this),this),this.Iv=new Cn(this.Ev.canvas,this,{Oc:!0,Pc:!1})}return t.prototype.en=function(){this.Iv.en(),null!==this.Q_&&this.Q_.en(),null!==this.td&&this.td.en(),this.Ev.unsubscribeCanvasConfigured(this.Tv),this.Ev.destroy(),this.Lv.unsubscribeCanvasConfigured(this.Nv),this.Lv.destroy()},t.prototype.jv=function(){return this.hd},t.prototype.od=function(){return this.Q_},t.prototype.ld=function(){return this.td},t.prototype.Yc=function(t){if(!this.nd){this.nd=!0;var i=this.M_.vt();!i.j().ti()&&this.M_.ct().handleScale.axisPressedMouseMove.time&&i.yf(t.uv)}},t.prototype.Kc=function(){var t=this.M_.vt();!t.j().ti()&&this.nd&&(this.nd=!1,this.M_.ct().handleScale.axisPressedMouseMove.time&&t.Tf())},t.prototype.Wc=function(t){var i=this.M_.vt();!i.j().ti()&&this.M_.ct().handleScale.axisPressedMouseMove.time&&i.Df(t.uv)},t.prototype.Ic=function(t){this.nd=!1;var i=this.M_.vt();i.j().ti()&&!this.M_.ct().handleScale.axisPressedMouseMove.time||i.Tf()},t.prototype.jc=function(){this.M_.ct().handleScale.axisDoubleClickReset&&this.M_.vt().xe()},t.prototype.Bc=function(t){this.M_.vt().ct().handleScale.axisPressedMouseMove.time&&this.h_(1)},t.prototype.iv=function(t){this.h_(0)},t.prototype.W_=function(){return this.gv},t.prototype.fd=function(){return this.sd},t.prototype.vd=function(t,i,n){this.gv&&this.gv.on(t)||(this.gv=t,this.Lv.resizeCanvas({width:t.st,height:t.ht}),this.Ev.resizeCanvas({width:t.st,height:t.ht}),this.Bv.style.width=t.st+"px",this.Bv.style.height=t.ht+"px",this.sd.hn(t)),null!==this.Q_&&this.Q_.$v(new vn(i,t.ht)),null!==this.td&&this.td.$v(new vn(n,t.ht))},t.prototype._d=function(){var t=this.dd();return Math.ceil(t.Tt+t.Dt+t.Pt+t.At+t.Bt)},t.prototype.O=function(){this.M_.vt().j().En()},t.prototype.s_=function(){return this.Lv.canvas},t.prototype.Jv=function(t){if(0!==t){if(1!==t){var i=dn(this.Lv.canvas);this.Qv(i,this.Lv.pixelRatio),this.yu(i,this.Lv.pixelRatio),this.t_(i,this.Lv.pixelRatio),null!==this.Q_&&this.Q_.Jv(t),null!==this.td&&this.td.Jv(t)}var n=dn(this.Ev.canvas),s=this.Ev.pixelRatio;n.clearRect(0,0,Math.ceil(this.gv.st*s),Math.ceil(this.gv.ht*s)),this.wd([this.M_.vt().bf()],n,s)}},t.prototype.Qv=function(t,i){var n=this;W(t,i,(function(){z(t,0,0,n.gv.st,n.gv.ht,n.M_.vt().zf())}))},t.prototype.yu=function(t,i){if(this.M_.ct().timeScale.borderVisible){t.save(),t.fillStyle=this.Md();var n=Math.max(1,Math.floor(this.dd().Tt*i));t.fillRect(0,0,Math.ceil(this.gv.st*i),n),t.restore()}},t.prototype.t_=function(t,i){var n=this,s=this.M_.vt().j().En();if(s&&0!==s.length){var h=s.reduce(Wn,s[0]).Rh;h>30&&h<50&&(h=30),t.save(),t.strokeStyle=this.Md();var r=this.dd(),e=r.Tt+r.Dt+r.At+r.Pt-r.Ot;t.textAlign="center",t.fillStyle=this.Md();var u=Math.floor(this.dd().Tt*i),a=Math.max(1,Math.floor(i)),o=Math.floor(.5*i);if(this.M_.vt().j().ct().borderVisible){t.beginPath();for(var l=Math.round(r.Dt*i),f=s.length;f--;){var c=Math.round(s[f].Tn*i);t.rect(c-o,u,a,l)}t.fill()}t.fillStyle=this.ve(),W(t,i,(function(){t.font=n.bd();for(var i=0,r=s;i=h){u=l.Ir?n.md(t,l.Tn,l.An):l.Tn;t.fillText(l.An,u,e)}}}))}},t.prototype.md=function(t,i,n){var s=this.kv.Vt(t,n),h=s/2,r=Math.floor(i-h)+.5;return r<0?i+=Math.abs(0-r):r+s>this.gv.st&&(i-=Math.abs(this.gv.st-(r+s))),i},t.prototype.wd=function(t,i,n){for(var s=this.dd(),h=0,r=t;h0&&(this.hi.Vr(),this.hi.Fo(),this.hi.Or()),this.Bd.O()}this.Jv(t)},t.prototype.Se=function(t){var i=this.hi.j();switch(t.ke){case 0:i.Qr();break;case 1:i.te(t.X);break;case 2:i.wr(t.X);break;case 3:i.Mr(t.X);break;case 4:i.jr()}},t.prototype.Ql=function(t){var i=this;null!==this.xd?this.xd._n(t):this.xd=t,this.Nd||(this.Nd=!0,this.yd=window.requestAnimationFrame((function(){i.Nd=!1,i.yd=0,null!==i.xd&&(i.Pd(i.xd),i.xd=null)})))},t.prototype.qd=function(){this.Ed()},t.prototype.Ed=function(){for(var t=this.hi.wf(),i=t.length,n=this.pd.length,s=i;s=0;--n)if(Math.floor(i.getTime()/Zn[n].Zd)!==Math.floor(t.getTime()/Zn[n].Zd))return Zn[n].Rh;return 0}function Gn(t,i){if(void 0===i&&(i=0),0!==t.length){for(var n=0===i?null:t[i-1].S.Dh,s=null!==n?new Date(1e3*n):null,h=0,r=i;r1){var a=Math.ceil(h/(t.length-1)),o=new Date(1e3*(t[0].S.Dh-a));t[0].Wh=Jn(new Date(1e3*t[0].S.Dh),o)}}}function Qn(t){if(!Rt(t))throw new Error("time must be of type BusinessDay");var i=new Date(Date.UTC(t.year,t.month-1,t.day,0,0,0,0));return{Dh:Math.round(i.getTime()/1e3),Sh:t}}function ts(t){if(!It(t))throw new Error("time must be of type isUTCTimestamp");return{Dh:t}}function is(t){return 0===t.length?null:Rt(t[0].time)?Qn:ts}function ns(t){return It(t)?ts(t):Rt(t)?Qn(t):Qn(ss(t))}function ss(t){var i=new Date(t);if(isNaN(i.getTime()))throw new Error("Invalid date string="+t+", expected format=yyyy-mm-dd");return{day:i.getUTCDate(),month:i.getUTCMonth()+1,year:i.getUTCFullYear()}}function hs(t){d(t.time)&&(t.time=ss(t.time))}function rs(t){return{zh:0,Jd:new Map,Rs:t}}var es=function(){function t(){this.Gd=new Map,this.Qd=new Map,this.tw=new Map,this.iw=[]}return t.prototype.en=function(){this.Gd.clear(),this.Qd.clear(),this.tw.clear(),this.iw=[]},t.prototype.nw=function(t,i){var n=this,s=0!==this.Gd.size,h=!1;if(this.Qd.has(t))if(1===this.Qd.size)s=!1,h=!0,this.Gd.clear();else for(var r=0,e=this.iw;rh.zh)return{barsBefore:t.from-r,barsAfter:e-t.to};var u={barsBefore:null===s||s.zh===r?t.from-r:s.zh-r,barsAfter:null===h||h.zh===e?e-t.to:e-h.zh};return null!==s&&null!==h&&(u.from=s.S.Sh||s.S.Dh,u.to=h.S.Sh||h.S.Dh),u},t.prototype.setData=function(t){this.qe.Ya(),this.dw.Mw(this.qe,t)},t.prototype.update=function(t){this.qe.Ya(),this.dw.bw(this.qe,t)},t.prototype.setMarkers=function(t){var i=t.map((function(t){return e(e({},t),{time:ns(t.time)})}));this.qe.Po(i)},t.prototype.applyOptions=function(t){var i=ls(t);this.qe.rs(i)},t.prototype.options=function(){return M(this.qe.ct())},t.prototype.priceScale=function(){return this.ww.priceScale(this.qe.$().hs())},t.prototype.createPriceLine=function(t){var i=c(M(as),t),n=this.qe.Wo(i);return new os(n)},t.prototype.removePriceLine=function(t){this.qe.zo(t._w())},t.prototype.seriesType=function(){return this.qe.Ya()},t}(),cs=function(t){function i(){return null!==t&&t.apply(this,arguments)||this}return r(i,t),i.prototype.applyOptions=function(i){kt(i),t.prototype.applyOptions.call(this,i)},i}(fs),vs={autoScale:!0,mode:0,invertScale:!1,alignLabels:!0,borderVisible:!0,borderColor:"#2B2B43",entireTextOnly:!1,visible:!1,drawTicks:!0,scaleMargins:{bottom:.1,top:.2}},_s={color:"rgba(0, 0, 0, 0)",visible:!1,fontSize:48,fontFamily:jt,fontStyle:"",text:"",horzAlign:"center",vertAlign:"center"},ds={width:0,height:0,layout:{background:{type:"solid",color:"#FFFFFF"},textColor:"#191919",fontSize:11,fontFamily:jt},crosshair:{vertLine:{color:"#758696",width:1,style:3,visible:!0,labelVisible:!0,labelBackgroundColor:"#4c525e"},horzLine:{color:"#758696",width:1,style:3,visible:!0,labelVisible:!0,labelBackgroundColor:"#4c525e"},mode:1},grid:{vertLines:{color:"#D6DCDE",style:0,visible:!0},horzLines:{color:"#D6DCDE",style:0,visible:!0}},overlayPriceScales:e({},vs),leftPriceScale:e(e({},vs),{visible:!1}),rightPriceScale:e(e({},vs),{visible:!0}),timeScale:{rightOffset:0,barSpacing:6,minBarSpacing:.5,fixLeftEdge:!1,fixRightEdge:!1,lockVisibleTimeRangeOnResize:!1,rightBarStaysOnScroll:!1,borderVisible:!0,borderColor:"#2B2B43",visible:!0,timeVisible:!1,secondsVisible:!0,shiftVisibleRangeOnNewBar:!0},watermark:_s,localization:{locale:pn?navigator.language:"",dateFormat:"dd MMM 'yy"},handleScroll:{mouseWheel:!0,pressedMouseMove:!0,horzTouchDrag:!0,vertTouchDrag:!0},handleScale:{axisPressedMouseMove:{time:!0,price:!0},axisDoubleClickReset:!0,mouseWheel:!0,pinch:!0},kineticScroll:{mouse:!1,touch:!0}},ws={upColor:"#26a69a",downColor:"#ef5350",wickVisible:!0,borderVisible:!0,borderColor:"#378658",borderUpColor:"#26a69a",borderDownColor:"#ef5350",wickColor:"#737375",wickUpColor:"#26a69a",wickDownColor:"#ef5350"},Ms={upColor:"#26a69a",downColor:"#ef5350",openVisible:!0,thinBars:!0},bs={color:"#2196f3",lineStyle:0,lineWidth:3,lineType:0,crosshairMarkerVisible:!0,crosshairMarkerRadius:4,crosshairMarkerBorderColor:"",crosshairMarkerBackgroundColor:"",lastPriceAnimation:0},ms={topColor:"rgba( 46, 220, 135, 0.4)",bottomColor:"rgba( 40, 221, 100, 0)",lineColor:"#33D778",lineStyle:0,lineWidth:3,lineType:0,crosshairMarkerVisible:!0,crosshairMarkerRadius:4,crosshairMarkerBorderColor:"",crosshairMarkerBackgroundColor:"",lastPriceAnimation:0},gs={baseValue:{type:"price",price:0},topFillColor1:"rgba(38, 166, 154, 0.28)",topFillColor2:"rgba(38, 166, 154, 0.05)",topLineColor:"rgba(38, 166, 154, 1)",bottomFillColor1:"rgba(239, 83, 80, 0.05)",bottomFillColor2:"rgba(239, 83, 80, 0.28)",bottomLineColor:"rgba(239, 83, 80, 1)",lineWidth:3,lineStyle:0,crosshairMarkerVisible:!0,crosshairMarkerRadius:4,crosshairMarkerBorderColor:"",crosshairMarkerBackgroundColor:"",lastPriceAnimation:0},ps={color:"#26a69a",base:0},ys={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}},ks=function(){function t(t,i){this.mw=t,this.gw=i}return t.prototype.applyOptions=function(t){this.mw.vt()._f(this.gw,t)},t.prototype.options=function(){return this.Gt().ct()},t.prototype.width=function(){return Ht(this.gw)?this.mw.Id("left"===this.gw?"left":"right"):0},t.prototype.Gt=function(){return l(this.mw.vt().df(this.gw)).$},t}(),Cs=function(){function t(t,i){this.pw=new tt,this.nr=new tt,this.sd=new tt,this.hi=t,this.ul=t.j(),this.Bd=i,this.ul.Xr().Ji(this.yw.bind(this)),this.ul.Zr().Ji(this.kw.bind(this)),this.Bd.fd().Ji(this.Cw.bind(this))}return t.prototype.en=function(){this.ul.Xr().sn(this),this.ul.Zr().sn(this),this.Bd.fd().sn(this),this.pw.en(),this.nr.en(),this.sd.en()},t.prototype.scrollPosition=function(){return this.ul.zr()},t.prototype.scrollToPosition=function(t,i){i?this.ul.$r(t,1e3):this.hi.Mr(t)},t.prototype.scrollToRealTime=function(){this.ul.Kr()},t.prototype.getVisibleRange=function(){var t,i,n=this.ul.yr();return null===n?null:{from:null!==(t=n.from.Sh)&&void 0!==t?t:n.from.Dh,to:null!==(i=n.to.Sh)&&void 0!==i?i:n.to.Dh}},t.prototype.setVisibleRange=function(t){var i={from:ns(t.from),to:ns(t.to)},n=this.ul.Sr(i);this.hi.Pf(n)},t.prototype.getVisibleLogicalRange=function(){var t=this.ul.pr();return null===t?null:{from:t.hh(),to:t.rh()}},t.prototype.setVisibleLogicalRange=function(t){a(t.from<=t.to,"The from index cannot be after the to index."),this.hi.Pf(t)},t.prototype.resetTimeScale=function(){this.hi.xe()},t.prototype.fitContent=function(){this.hi.Qr()},t.prototype.logicalToCoordinate=function(t){var i=this.hi.j();return i.ti()?null:i.G(t)},t.prototype.coordinateToLogical=function(t){return this.ul.ti()?null:this.ul.Er(t)},t.prototype.timeToCoordinate=function(t){var i=ns(t),n=this.ul.br(i,!1);return null===n?null:this.ul.G(n)},t.prototype.coordinateToTime=function(t){var i,n=this.hi.j(),s=n.Er(t),h=n.ri(s);return null===h?null:null!==(i=h.Sh)&&void 0!==i?i:h.Dh},t.prototype.width=function(){return this.Bd.W_().st},t.prototype.height=function(){return this.Bd.W_().ht},t.prototype.subscribeVisibleTimeRangeChange=function(t){this.pw.Ji(t)},t.prototype.unsubscribeVisibleTimeRangeChange=function(t){this.pw.nn(t)},t.prototype.subscribeVisibleLogicalRangeChange=function(t){this.nr.Ji(t)},t.prototype.unsubscribeVisibleLogicalRangeChange=function(t){this.nr.nn(t)},t.prototype.subscribeSizeChange=function(t){this.sd.Ji(t)},t.prototype.unsubscribeSizeChange=function(t){this.sd.nn(t)},t.prototype.applyOptions=function(t){this.ul.rs(t)},t.prototype.options=function(){return M(this.ul.ct())},t.prototype.yw=function(){this.pw.rn()&&this.pw.hn(this.getVisibleRange())},t.prototype.kw=function(){this.nr.rn()&&this.nr.hn(this.getVisibleLogicalRange())},t.prototype.Cw=function(t){this.sd.hn(t.st,t.ht)},t}();function xs(t){if(void 0!==t&&"custom"!==t.type){var i=t;void 0!==i.minMove&&void 0===i.precision&&(i.precision=function(t){if(t>=1)return 0;for(var i=0;i<8;i++){var n=Math.round(t);if(Math.abs(n-t)<1e-8)return i;t*=10}return i}(i.minMove))}}function Ns(t){return function(t){if(w(t.handleScale)){var i=t.handleScale;t.handleScale={axisDoubleClickReset:i,axisPressedMouseMove:{time:i,price:i},mouseWheel:i,pinch:i}}else if(void 0!==t.handleScale&&w(t.handleScale.axisPressedMouseMove)){var n=t.handleScale.axisPressedMouseMove;t.handleScale.axisPressedMouseMove={time:n,price:n}}var s=t.handleScroll;w(s)&&(t.handleScroll={horzTouchDrag:s,vertTouchDrag:s,mouseWheel:s,pressedMouseMove:s})}(t),function(t){if(t.priceScale){t.leftPriceScale=t.leftPriceScale||{},t.rightPriceScale=t.rightPriceScale||{};var i=t.priceScale.position;delete t.priceScale.position,t.leftPriceScale=c(t.leftPriceScale,t.priceScale),t.rightPriceScale=c(t.rightPriceScale,t.priceScale),"left"===i&&(t.leftPriceScale.visible=!0,t.rightPriceScale.visible=!1),"right"===i&&(t.leftPriceScale.visible=!1,t.rightPriceScale.visible=!0),"none"===i&&(t.leftPriceScale.visible=!1,t.rightPriceScale.visible=!1),t.overlayPriceScales=t.overlayPriceScales||{},void 0!==t.priceScale.invertScale&&(t.overlayPriceScales.invertScale=t.priceScale.invertScale),void 0!==t.priceScale.scaleMargins&&(t.overlayPriceScales.scaleMargins=t.priceScale.scaleMargins)}}(t),function(t){t.layout&&t.layout.backgroundColor&&!t.layout.background&&(t.layout.background={type:"solid",color:t.layout.backgroundColor})}(t),t}var Ss=function(){function t(t,i){var n=this;this.xw=new es,this.Nw=new Map,this.Sw=new Map,this.Dw=new tt,this.Tw=new tt;var s=void 0===i?M(ds):c(M(ds),Ns(i));this.mw=new Rn(t,s),this.mw.V_().Ji((function(t){n.Dw.rn()&&n.Dw.hn(n.Aw(t()))}),this),this.mw.mf().Ji((function(t){n.Tw.rn()&&n.Tw.hn(n.Aw(t()))}),this);var h=this.mw.vt();this.Bw=new Cs(h,this.mw.Od())}return t.prototype.remove=function(){this.mw.V_().sn(this),this.mw.mf().sn(this),this.Bw.en(),this.mw.en(),this.Nw.clear(),this.Sw.clear(),this.Dw.en(),this.Tw.en(),this.xw.en()},t.prototype.resize=function(t,i,n){this.mw.Ld(t,i,n)},t.prototype.addAreaSeries=function(t){void 0===t&&(t={}),xs((t=ls(t)).priceFormat);var i=c(M(ys),ms,t),n=this.mw.vt().Ff("Area",i),s=new fs(n,this,this);return this.Nw.set(s,n),this.Sw.set(n,s),s},t.prototype.addBaselineSeries=function(t){void 0===t&&(t={}),xs((t=ls(t)).priceFormat);var i=c(M(ys),gs,t),n=this.mw.vt().Ff("Baseline",i),s=new fs(n,this,this);return this.Nw.set(s,n),this.Sw.set(n,s),s},t.prototype.addBarSeries=function(t){void 0===t&&(t={}),xs((t=ls(t)).priceFormat);var i=c(M(ys),Ms,t),n=this.mw.vt().Ff("Bar",i),s=new fs(n,this,this);return this.Nw.set(s,n),this.Sw.set(n,s),s},t.prototype.addCandlestickSeries=function(t){void 0===t&&(t={}),kt(t=ls(t)),xs(t.priceFormat);var i=c(M(ys),ws,t),n=this.mw.vt().Ff("Candlestick",i),s=new cs(n,this,this);return this.Nw.set(s,n),this.Sw.set(n,s),s},t.prototype.addHistogramSeries=function(t){void 0===t&&(t={}),xs((t=ls(t)).priceFormat);var i=c(M(ys),ps,t),n=this.mw.vt().Ff("Histogram",i),s=new fs(n,this,this);return this.Nw.set(s,n),this.Sw.set(n,s),s},t.prototype.addLineSeries=function(t){void 0===t&&(t={}),xs((t=ls(t)).priceFormat);var i=c(M(ys),bs,t),n=this.mw.vt().Ff("Line",i),s=new fs(n,this,this);return this.Nw.set(s,n),this.Sw.set(n,s),s},t.prototype.removeSeries=function(t){var i=o(this.Nw.get(t)),n=this.xw.Of(i);this.mw.vt().Of(i),this.Lw(n),this.Nw.delete(t),this.Sw.delete(i)},t.prototype.Mw=function(t,i){this.Lw(this.xw.nw(t,i))},t.prototype.bw=function(t,i){this.Lw(this.xw.uw(t,i))},t.prototype.subscribeClick=function(t){this.Dw.Ji(t)},t.prototype.unsubscribeClick=function(t){this.Dw.nn(t)},t.prototype.subscribeCrosshairMove=function(t){this.Tw.Ji(t)},t.prototype.unsubscribeCrosshairMove=function(t){this.Tw.nn(t)},t.prototype.priceScale=function(t){return void 0===t&&(t=this.mw.vt().Wf()),new ks(this.mw,t)},t.prototype.timeScale=function(){return this.Bw},t.prototype.applyOptions=function(t){this.mw.rs(Ns(t))},t.prototype.options=function(){return this.mw.ct()},t.prototype.takeScreenshot=function(){return this.mw.Wd()},t.prototype.Lw=function(t){var i=this.mw.vt();i.Lf(t.j.Br,t.j.fw,t.j.cw),t.lw.forEach((function(t,i){return i._(t.Zu)})),i.Vr()},t.prototype.Ew=function(t){return o(this.Sw.get(t))},t.prototype.Aw=function(t){var i=this,n=new Map;t.$d.forEach((function(t,s){n.set(i.Ew(s),t)}));var s=void 0===t.Kd?void 0:this.Ew(t.Kd);return{time:t.S&&(t.S.Sh||t.S.Dh),point:t.Yd,hoveredSeries:s,hoveredMarkerId:t.Xd,seriesPrices:n}},t}();var Ds=Object.freeze({__proto__:null,version:function(){return"3.7.0"},get LineStyle(){return i},get LineType(){return t},get CrosshairMode(){return I},get PriceScaleMode(){return _t},get PriceLineSource(){return mt},get LastPriceAnimationMode(){return bt},get LasPriceAnimationMode(){return bt},get TickMarkType(){return Vt},get ColorType(){return Wt},isBusinessDay:Rt,isUTCTimestamp:It,createChart:function(t,i){var n;if(d(t)){var s=document.getElementById(t);a(null!==s,"Cannot find element in DOM with id="+t),n=s}else n=t;return new Ss(n,i)}});window.LightweightCharts=Ds}(); +!function(){"use strict";var t,i;function n(t,i){var n,s=((n={})[0]=[],n[1]=[t.lineWidth,t.lineWidth],n[2]=[2*t.lineWidth,2*t.lineWidth],n[3]=[6*t.lineWidth,6*t.lineWidth],n[4]=[t.lineWidth,4*t.lineWidth],n)[i];t.setLineDash(s)}function s(t,i,n,s){t.beginPath();var h=t.lineWidth%2?.5:0;t.moveTo(n,i+h),t.lineTo(s,i+h),t.stroke()}function h(t,i){if(!t)throw new Error("Assertion failed"+(i?": "+i:""))}function r(t){if(void 0===t)throw new Error("Value is undefined");return t}function e(t){if(null===t)throw new Error("Value is null");return t}function u(t){return e(r(t))}!function(t){t[t.Simple=0]="Simple",t[t.WithSteps=1]="WithSteps"}(t||(t={})),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"}(i||(i={}));var a={khaki:"#f0e68c",azure:"#f0ffff",aliceblue:"#f0f8ff",ghostwhite:"#f8f8ff",gold:"#ffd700",goldenrod:"#daa520",gainsboro:"#dcdcdc",gray:"#808080",green:"#008000",honeydew:"#f0fff0",floralwhite:"#fffaf0",lightblue:"#add8e6",lightcoral:"#f08080",lemonchiffon:"#fffacd",hotpink:"#ff69b4",lightyellow:"#ffffe0",greenyellow:"#adff2f",lightgoldenrodyellow:"#fafad2",limegreen:"#32cd32",linen:"#faf0e6",lightcyan:"#e0ffff",magenta:"#f0f",maroon:"#800000",olive:"#808000",orange:"#ffa500",oldlace:"#fdf5e6",mediumblue:"#0000cd",transparent:"#0000",lime:"#0f0",lightpink:"#ffb6c1",mistyrose:"#ffe4e1",moccasin:"#ffe4b5",midnightblue:"#191970",orchid:"#da70d6",mediumorchid:"#ba55d3",mediumturquoise:"#48d1cc",orangered:"#ff4500",royalblue:"#4169e1",powderblue:"#b0e0e6",red:"#f00",coral:"#ff7f50",turquoise:"#40e0d0",white:"#fff",whitesmoke:"#f5f5f5",wheat:"#f5deb3",teal:"#008080",steelblue:"#4682b4",bisque:"#ffe4c4",aquamarine:"#7fffd4",aqua:"#0ff",sienna:"#a0522d",silver:"#c0c0c0",springgreen:"#00ff7f",antiquewhite:"#faebd7",burlywood:"#deb887",brown:"#a52a2a",beige:"#f5f5dc",chocolate:"#d2691e",chartreuse:"#7fff00",cornflowerblue:"#6495ed",cornsilk:"#fff8dc",crimson:"#dc143c",cadetblue:"#5f9ea0",tomato:"#ff6347",fuchsia:"#f0f",blue:"#00f",salmon:"#fa8072",blanchedalmond:"#ffebcd",slateblue:"#6a5acd",slategray:"#708090",thistle:"#d8bfd8",tan:"#d2b48c",cyan:"#0ff",darkblue:"#00008b",darkcyan:"#008b8b",darkgoldenrod:"#b8860b",darkgray:"#a9a9a9",blueviolet:"#8a2be2",black:"#000",darkmagenta:"#8b008b",darkslateblue:"#483d8b",darkkhaki:"#bdb76b",darkorchid:"#9932cc",darkorange:"#ff8c00",darkgreen:"#006400",darkred:"#8b0000",dodgerblue:"#1e90ff",darkslategray:"#2f4f4f",dimgray:"#696969",deepskyblue:"#00bfff",firebrick:"#b22222",forestgreen:"#228b22",indigo:"#4b0082",ivory:"#fffff0",lavenderblush:"#fff0f5",feldspar:"#d19275",indianred:"#cd5c5c",lightgreen:"#90ee90",lightgrey:"#d3d3d3",lightskyblue:"#87cefa",lightslategray:"#789",lightslateblue:"#8470ff",snow:"#fffafa",lightseagreen:"#20b2aa",lightsalmon:"#ffa07a",darksalmon:"#e9967a",darkviolet:"#9400d3",mediumpurple:"#9370d8",mediumaquamarine:"#66cdaa",skyblue:"#87ceeb",lavender:"#e6e6fa",lightsteelblue:"#b0c4de",mediumvioletred:"#c71585",mintcream:"#f5fffa",navajowhite:"#ffdead",navy:"#000080",olivedrab:"#6b8e23",palevioletred:"#d87093",violetred:"#d02090",yellow:"#ff0",yellowgreen:"#9acd32",lawngreen:"#7cfc00",pink:"#ffc0cb",paleturquoise:"#afeeee",palegoldenrod:"#eee8aa",darkolivegreen:"#556b2f",darkseagreen:"#8fbc8f",darkturquoise:"#00ced1",peachpuff:"#ffdab9",deeppink:"#ff1493",violet:"#ee82ee",palegreen:"#98fb98",mediumseagreen:"#3cb371",peru:"#cd853f",saddlebrown:"#8b4513",sandybrown:"#f4a460",rosybrown:"#bc8f8f",purple:"#800080",seagreen:"#2e8b57",seashell:"#fff5ee",papayawhip:"#ffefd5",mediumslateblue:"#7b68ee",plum:"#dda0dd",mediumspringgreen:"#00fa9a"};function o(t){return t<0?0:t>255?255:Math.round(t)||0}function l(t){return t<=0||t>0?t<0?0:t>1?1:Math.round(1e4*t)/1e4:0}var f=/^#([0-9a-f])([0-9a-f])([0-9a-f])([0-9a-f])?$/i,c=/^#([0-9a-f]{2})([0-9a-f]{2})([0-9a-f]{2})([0-9a-f]{2})?$/i,v=/^rgb\(\s*(-?\d{1,10})\s*,\s*(-?\d{1,10})\s*,\s*(-?\d{1,10})\s*\)$/,_=/^rgba\(\s*(-?\d{1,10})\s*,\s*(-?\d{1,10})\s*,\s*(-?\d{1,10})\s*,\s*(-?[\d]{0,10}(?:\.\d+)?)\s*\)$/;function d(t){var i;if((t=t.toLowerCase())in a&&(t=a[t]),i=_.exec(t)||v.exec(t))return[o(parseInt(i[1],10)),o(parseInt(i[2],10)),o(parseInt(i[3],10)),l(i.length<5?1:parseFloat(i[4]))];if(i=c.exec(t))return[o(parseInt(i[1],16)),o(parseInt(i[2],16)),o(parseInt(i[3],16)),1];if(i=f.exec(t))return[o(17*parseInt(i[1],16)),o(17*parseInt(i[2],16)),o(17*parseInt(i[3],16)),1];throw new Error("Cannot parse color: ".concat(t))}function w(t){var i,n=d(t);return{t:"rgb(".concat(n[0],", ").concat(n[1],", ").concat(n[2],")"),i:(i=n,.199*i[0]+.687*i[1]+.114*i[2]>160?"black":"white")}}var M=function(t,i){return M=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,i){t.__proto__=i}||function(t,i){for(var n in i)Object.prototype.hasOwnProperty.call(i,n)&&(t[n]=i[n])},M(t,i)};function b(t,i){if("function"!=typeof i&&null!==i)throw new TypeError("Class extends value "+String(i)+" is not a constructor or null");function n(){this.constructor=t}M(t,i),t.prototype=null===i?Object.create(i):(n.prototype=i.prototype,new n)}var m=function(){return m=Object.assign||function(t){for(var i,n=1,s=arguments.length;n-1&&this.h.splice(i,1)},t.prototype.M=function(t){this.h=this.h.filter((function(i){return i.l!==t}))},t.prototype.m=function(t,i){var n=g([],this.h,!0);this.h=this.h.filter((function(t){return!t.v})),n.forEach((function(n){return n.o(t,i)}))},t.prototype.g=function(){return this.h.length>0},t.prototype.p=function(){this.h=[]},t}();function y(t){for(var i=[],n=1;n=i.from;--h){var r=n.G[h];t.moveTo(r.tt,r.it),t.arc(r.tt,r.it,s,0,2*Math.PI)}t.fill()};t.fillStyle=n.nt,s(n.st+2),t.fillStyle=n.ht,s(n.st)}},i}(O);function V(){return{G:[{tt:0,it:0,rt:0,et:0}],ht:"",nt:"",st:0,J:null}}var P={from:0,to:1},R=function(){function t(t,i){this.ut=new E,this.ot=[],this.lt=[],this.ft=!0,this.P=t,this.ct=i,this.ut.U(this.ot)}return t.prototype.vt=function(t){var i=this.P._t();i.length!==this.ot.length&&(this.lt=i.map(V),this.ot=this.lt.map((function(t){var i=new F;return i.Z(t),i})),this.ut.U(this.ot)),this.ft=!0},t.prototype.dt=function(t,i,n){return this.ft&&(this.wt(t),this.ft=!1),this.ut},t.prototype.wt=function(t){var i=this,n=this.P._t(),s=this.ct.Mt(),h=this.P.bt();n.forEach((function(n,r){var u,a=i.lt[r],o=n.gt(s);if(null!==o&&n.yt()){var l=e(n.kt());a.ht=o.xt,a.st=o.st,a.G[0].et=o.et,a.G[0].it=n.Ct().Nt(o.et,l.St),a.nt=null!==(u=o.Tt)&&void 0!==u?u:i.P.Dt(a.G[0].it/t),a.G[0].rt=s,a.G[0].tt=h.At(s),a.J=P}else a.J=null}))},t}(),z=function(){function t(t){this.Bt=t}return t.prototype.H=function(t,i,h,r){if(null!==this.Bt){var e=this.Bt.Lt.yt,u=this.Bt.Et.yt;if(e||u){t.save();var a=Math.round(this.Bt.tt*i),o=Math.round(this.Bt.it*i),l=Math.ceil(this.Bt.Ot*i),f=Math.ceil(this.Bt.Ft*i);t.lineCap="butt",e&&a>=0&&(t.lineWidth=Math.floor(this.Bt.Lt.Vt*i),t.strokeStyle=this.Bt.Lt.A,t.fillStyle=this.Bt.Lt.A,n(t,this.Bt.Lt.Pt),function(t,i,n,s){t.beginPath();var h=t.lineWidth%2?.5:0;t.moveTo(i+h,n),t.lineTo(i+h,s),t.stroke()}(t,a,0,f)),u&&o>=0&&(t.lineWidth=Math.floor(this.Bt.Et.Vt*i),t.strokeStyle=this.Bt.Et.A,t.fillStyle=this.Bt.Et.A,n(t,this.Bt.Et.Pt),s(t,o,0,l)),t.restore()}}},t}(),W=function(){function t(t){this.ft=!0,this.Rt={Lt:{Vt:1,Pt:0,A:"",yt:!1},Et:{Vt:1,Pt:0,A:"",yt:!1},Ot:0,Ft:0,tt:0,it:0},this.zt=new z(this.Rt),this.Wt=t}return t.prototype.vt=function(){this.ft=!0},t.prototype.dt=function(t,i){return this.ft&&(this.wt(),this.ft=!1),this.zt},t.prototype.wt=function(){var t=this.Wt.yt(),i=e(this.Wt.It()),n=i.jt().R().crosshair,s=this.Rt;s.Et.yt=t&&this.Wt.qt(i),s.Lt.yt=t&&this.Wt.Ut(),s.Et.Vt=n.horzLine.width,s.Et.Pt=n.horzLine.style,s.Et.A=n.horzLine.color,s.Lt.Vt=n.vertLine.width,s.Lt.Pt=n.vertLine.style,s.Lt.A=n.vertLine.color,s.Ot=i.Ht(),s.Ft=i.Yt(),s.tt=this.Wt.$t(),s.it=this.Wt.Kt()},t}();function I(t,i,n,s,h,r){t.fillRect(i+r,n,s-2*r,r),t.fillRect(i+r,n+h-r,s-2*r,r),t.fillRect(i,n,r,h),t.fillRect(i+s-r,n,r,h)}function j(t,i,n){t.save(),t.scale(i,i),n(),t.restore()}function q(t,i,n,s,h,r){t.save(),t.globalCompositeOperation="copy",t.fillStyle=r,t.fillRect(i,n,s,h),t.restore()}function U(t,i,n,s,h,r,e){t.save(),t.globalCompositeOperation="copy";var u=t.createLinearGradient(0,0,0,h);u.addColorStop(0,r),u.addColorStop(1,e),t.fillStyle=u,t.fillRect(i,n,s,h),t.restore()}var H,Y=function(){function t(t,i){this.Z(t,i)}return t.prototype.Z=function(t,i){this.Bt=t,this.Xt=i},t.prototype.H=function(t,i,n,s,h,r){if(this.Bt.yt){t.font=i.T;var e=this.Bt.Zt||!this.Bt.Jt?i.C:0,u=i.N,a=i.F,o=i.B,l=i.L,f=i.O,c=this.Bt.Gt,v=Math.ceil(n.Qt(t,c)),_=i.V,d=i.S+a+o,w=Math.ceil(.5*d),M=u+v+l+f+e,b=this.Xt.ti;this.Xt.ii&&(b=this.Xt.ii);var m,g,p=(b=Math.round(b))-w,y=p+d,k="right"===h,x=k?s:0,N=Math.ceil(s*r),C=x;if(t.fillStyle=this.Xt.t,t.lineWidth=1,t.lineCap="butt",c){k?(m=x-e,g=(C=x-M)+f):(C=x+M,m=x+e,g=x+u+e+l);var S=Math.max(1,Math.floor(r)),T=Math.max(1,Math.floor(u*r)),D=k?N:0,A=Math.round(p*r),B=Math.round(C*r),L=Math.round(b*r)-Math.floor(.5*r),E=L+S+(L-A),O=Math.round(m*r);t.save(),t.beginPath(),t.moveTo(D,A),t.lineTo(B,A),t.lineTo(B,E),t.lineTo(D,E),t.fill(),t.fillStyle=this.Bt.Tt,t.fillRect(k?N-T:0,A,T,E-A),this.Bt.Zt&&(t.fillStyle=this.Xt.A,t.fillRect(D,L,O-D,S)),t.textAlign="left",t.fillStyle=this.Xt.A,j(t,r,(function(){t.fillText(c,g,y-o-_)})),t.restore()}}},t.prototype.Yt=function(t,i){return this.Bt.yt?t.S+t.F+t.B:0},t}(),$=function(){function t(t){this.ni={ti:0,A:"#FFF",t:"#000"},this.si={Gt:"",yt:!1,Zt:!0,Jt:!1,Tt:""},this.hi={Gt:"",yt:!1,Zt:!1,Jt:!0,Tt:""},this.ft=!0,this.ri=new(t||Y)(this.si,this.ni),this.ei=new(t||Y)(this.hi,this.ni)}return t.prototype.Gt=function(){return this.ui(),this.si.Gt},t.prototype.ti=function(){return this.ui(),this.ni.ti},t.prototype.vt=function(){this.ft=!0},t.prototype.Yt=function(t,i){return void 0===i&&(i=!1),Math.max(this.ri.Yt(t,i),this.ei.Yt(t,i))},t.prototype.ai=function(){return this.ni.ii||0},t.prototype.oi=function(t){this.ni.ii=t},t.prototype.li=function(){return this.ui(),this.si.yt||this.hi.yt},t.prototype.fi=function(){return this.ui(),this.si.yt},t.prototype.dt=function(t){return this.ui(),this.si.Zt=this.si.Zt&&t.R().drawTicks,this.hi.Zt=this.hi.Zt&&t.R().drawTicks,this.ri.Z(this.si,this.ni),this.ei.Z(this.hi,this.ni),this.ri},t.prototype.ci=function(){return this.ui(),this.ri.Z(this.si,this.ni),this.ei.Z(this.hi,this.ni),this.ei},t.prototype.ui=function(){this.ft&&(this.si.Zt=!0,this.hi.Zt=!1,this.vi(this.si,this.hi,this.ni))},t}(),K=function(t){function i(i,n,s){var h=t.call(this)||this;return h.Wt=i,h._i=n,h.di=s,h}return b(i,t),i.prototype.vi=function(t,i,n){t.yt=!1;var s=this.Wt.R().horzLine;if(s.labelVisible){var h=this._i.kt();if(this.Wt.yt()&&!this._i.wi()&&null!==h){var r=w(s.labelBackgroundColor);n.t=r.t,n.A=r.i;var e=this.di(this._i);n.ti=e.ti,t.Gt=this._i.Mi(e.et,h),t.yt=!0}}},i}($),X=/[1-9]/g,Z=function(){function t(){this.Bt=null}return t.prototype.Z=function(t){this.Bt=t},t.prototype.H=function(t,i,n){var s=this;if(null!==this.Bt&&!1!==this.Bt.yt&&0!==this.Bt.Gt.length){t.font=i.T;var h=Math.round(i.bi.Qt(t,this.Bt.Gt,X));if(!(h<=0)){t.save();var r=i.mi,u=h+2*r,a=u/2,o=this.Bt.Ht,l=this.Bt.ti,f=Math.floor(l-a)+.5;f<0?(l+=Math.abs(0-f),f=Math.floor(l-a)+.5):f+u>o&&(l-=Math.abs(o-(f+u)),f=Math.floor(l-a)+.5);var c=f+u,v=0+i.N+i.F+i.S+i.B;t.fillStyle=this.Bt.t;var _=Math.round(f*n),d=Math.round(0*n),w=Math.round(c*n),M=Math.round(v*n);t.fillRect(_,d,w-_,M-d);var b=Math.round(this.Bt.ti*n),m=d,g=Math.round((m+i.N+i.C)*n);t.fillStyle=this.Bt.A;var p=Math.max(1,Math.floor(n)),y=Math.floor(.5*n);t.fillRect(b-y,m,p,g-m);var k=v-i.V-i.B;t.textAlign="left",t.fillStyle=this.Bt.A,j(t,n,(function(){t.fillText(e(s.Bt).Gt,f+r,k)})),t.restore()}}},t}(),J=function(){function t(t,i,n){this.ft=!0,this.zt=new Z,this.Rt={yt:!1,t:"#4c525e",A:"white",Gt:"",Ht:0,ti:NaN},this.ct=t,this.gi=i,this.di=n}return t.prototype.vt=function(){this.ft=!0},t.prototype.dt=function(){return this.ft&&(this.wt(),this.ft=!1),this.zt.Z(this.Rt),this.zt},t.prototype.wt=function(){var t=this.Rt;t.yt=!1;var i=this.ct.R().vertLine;if(i.labelVisible){var n=this.gi.bt();if(!n.wi()){var s=n.pi(this.ct.Mt());t.Ht=n.Ht();var h=this.di();if(h.rt){t.ti=h.ti,t.Gt=n.yi(e(s)),t.yt=!0;var r=w(i.labelBackgroundColor);t.t=r.t,t.A=r.i}}}},t}(),G=function(){function t(){this.ki=null,this.xi=0}return t.prototype.Ni=function(){return this.xi},t.prototype.Ci=function(t){this.xi=t},t.prototype.Ct=function(){return this.ki},t.prototype.Si=function(t){this.ki=t},t.prototype.Ti=function(){return[]},t.prototype.yt=function(){return!0},t}();!function(t){t[t.Normal=0]="Normal",t[t.Magnet=1]="Magnet"}(H||(H={}));var Q=function(t){function i(i,n){var s=t.call(this)||this;s.Di=null,s.Ai=NaN,s.Bi=0,s.Li=!0,s.Ei=new Map,s.Oi=!1,s.Fi=NaN,s.Vi=NaN,s.Pi=NaN,s.Ri=NaN,s.gi=i,s.zi=n,s.Wi=new R(i,s);var h,r;s.Ii=(h=function(){return s.Ai},r=function(){return s.Vi},function(t){var i=r(),n=h();if(t===e(s.Di).ji())return{et:n,ti:i};var u=e(t.kt());return{et:t.qi(i,u),ti:i}});var u=function(t,i){return function(){return{rt:s.gi.bt().pi(t()),ti:i()}}}((function(){return s.Bi}),(function(){return s.$t()}));return s.Ui=new J(s,i,u),s.Hi=new W(s),s}return b(i,t),i.prototype.R=function(){return this.zi},i.prototype.Yi=function(t,i){this.Pi=t,this.Ri=i},i.prototype.$i=function(){this.Pi=NaN,this.Ri=NaN},i.prototype.Ki=function(){return this.Pi},i.prototype.Xi=function(){return this.Ri},i.prototype.Zi=function(t,i,n){this.Oi||(this.Oi=!0),this.Li=!0,this.Ji(t,i,n)},i.prototype.Mt=function(){return this.Bi},i.prototype.$t=function(){return this.Fi},i.prototype.Kt=function(){return this.Vi},i.prototype.yt=function(){return this.Li},i.prototype.Gi=function(){this.Li=!1,this.Qi(),this.Ai=NaN,this.Fi=NaN,this.Vi=NaN,this.Di=null,this.$i()},i.prototype.tn=function(t){return null!==this.Di?[this.Hi,this.Wi]:[]},i.prototype.qt=function(t){return t===this.Di&&this.zi.horzLine.visible},i.prototype.Ut=function(){return this.zi.vertLine.visible},i.prototype.nn=function(t,i){this.Li&&this.Di===t||this.Ei.clear();var n=[];return this.Di===t&&n.push(this.sn(this.Ei,i,this.Ii)),n},i.prototype.Ti=function(){return this.Li?[this.Ui]:[]},i.prototype.It=function(){return this.Di},i.prototype.hn=function(){this.Hi.vt(),this.Ei.forEach((function(t){return t.vt()})),this.Ui.vt(),this.Wi.vt()},i.prototype.rn=function(t){return t&&!t.ji().wi()?t.ji():null},i.prototype.Ji=function(t,i,n){this.en(t,i,n)&&this.hn()},i.prototype.en=function(t,i,n){var s=this.Fi,h=this.Vi,r=this.Ai,e=this.Bi,u=this.Di,a=this.rn(n);this.Bi=t,this.Fi=isNaN(t)?NaN:this.gi.bt().At(t),this.Di=n;var o=null!==a?a.kt():null;return null!==a&&null!==o?(this.Ai=i,this.Vi=a.Nt(i,o)):(this.Ai=NaN,this.Vi=NaN),s!==this.Fi||h!==this.Vi||e!==this.Bi||r!==this.Ai||u!==this.Di},i.prototype.Qi=function(){var t=this.gi._t().map((function(t){return t.an().un()})).filter(T),i=0===t.length?null:Math.max.apply(Math,t);this.Bi=null!==i?i:NaN},i.prototype.sn=function(t,i,n){var s=t.get(i);return void 0===s&&(s=new K(this,i,n),t.set(i,s)),s},i}(G);function tt(t){return"left"===t||"right"===t}var it=function(){function t(t){this.on=new Map,this.ln=[],this.fn=t}return t.prototype.cn=function(t,i){var n=function(t,i){return void 0===t?i:{vn:Math.max(t.vn,i.vn),_n:t._n||i._n}}(this.on.get(t),i);this.on.set(t,n)},t.prototype.dn=function(){return this.fn},t.prototype.wn=function(t){var i=this.on.get(t);return void 0===i?{vn:this.fn}:{vn:Math.max(this.fn,i.vn),_n:i._n}},t.prototype.Mn=function(){this.ln=[{bn:0}]},t.prototype.mn=function(t){this.ln=[{bn:1,St:t}]},t.prototype.gn=function(){this.ln=[{bn:4}]},t.prototype.pn=function(t){this.ln.push({bn:2,St:t})},t.prototype.yn=function(t){this.ln.push({bn:3,St:t})},t.prototype.kn=function(){return this.ln},t.prototype.xn=function(t){for(var i=this,n=0,s=t.ln;n16)throw new TypeError("invalid length");if(0===i)return t.toString();return("0000000000000000"+t.toString()).slice(-i)}var ht=function(){function t(t,i){if(i||(i=1),k(t)&&x(t)||(t=100),t<0)throw new TypeError("invalid base");this._i=t,this.Cn=i,this.Sn()}return t.prototype.format=function(t){var i=t<0?"−":"";return t=Math.abs(t),i+this.Tn(t)},t.prototype.Sn=function(){if(this.Dn=0,this._i>0&&this.Cn>0)for(var t=this._i;t>1;)t/=10,this.Dn++},t.prototype.Tn=function(t){var i=this._i/this.Cn,n=Math.floor(t),s="",h=void 0!==this.Dn?this.Dn:NaN;if(i>1){var r=+(Math.round(t*i)-n*i).toFixed(this.Dn);r>=i&&(r-=i,n+=1),s=nt+st(+r.toFixed(this.Dn)*this.Cn,h)}else n=Math.round(n*i)/i,h>0&&(s=nt+st(0,h));return n.toFixed(0)+s},t}(),rt=function(t){function i(i){return void 0===i&&(i=100),t.call(this,i)||this}return b(i,t),i.prototype.format=function(i){return"".concat(t.prototype.format.call(this,i),"%")},i}(ht),et=function(){function t(t){this.An=t}return t.prototype.format=function(t){var i="";return t<0&&(i="-",t=-t),t<995?i+this.Bn(t):t<999995?i+this.Bn(t/1e3)+"K":t<999999995?(t=1e3*Math.round(t/1e3),i+this.Bn(t/1e6)+"M"):(t=1e6*Math.round(t/1e6),i+this.Bn(t/1e9)+"B")},t.prototype.Bn=function(t){var i=Math.pow(10,this.An);return((t=Math.round(t*i)/i)>=1e-15&&t<1?t.toFixed(this.An).replace(/\.?0+$/,""):String(t)).replace(/(\.[1-9]*)0+$/,(function(t,i){return i}))},t}();function ut(t,i,n,s){if(0!==i.length){var h=i[s.from].tt,r=i[s.from].it;t.moveTo(h,r);for(var e=s.from+1;ethis.X.J.from&&(t.lineTo(this.X.G[this.X.J.to-1].tt,this.X.En),t.lineTo(this.X.G[this.X.J.from].tt,this.X.En));t.closePath(),t.fillStyle=this.Fn(t),t.fill()}},i}(O),ot=function(t){function i(){return null!==t&&t.apply(this,arguments)||this}return b(i,t),i.prototype.Fn=function(t){var i=this.X,n=t.createLinearGradient(0,0,0,i.Vn);return n.addColorStop(0,i.Pn),n.addColorStop(1,i.Rn),n},i}(at),lt=function(t){function i(){var i=null!==t&&t.apply(this,arguments)||this;return i.X=null,i}return b(i,t),i.prototype.Z=function(t){this.X=t},i.prototype.Y=function(t){if(null!==this.X&&0!==this.X.G.length&&null!==this.X.J)if(t.lineCap="butt",t.lineWidth=this.X.Vt,n(t,this.X.Pt),t.strokeStyle=this.zn(t),t.lineJoin="round",1===this.X.G.length){t.beginPath();var i=this.X.G[0];t.moveTo(i.tt-this.X.Ln/2,i.it),t.lineTo(i.tt+this.X.Ln/2,i.it),void 0!==i.A&&(t.strokeStyle=i.A),t.stroke()}else this.Wn(t,this.X)},i.prototype.Wn=function(t,i){t.beginPath(),ut(t,i.G,i.On,i.J),t.stroke()},i}(O),ft=function(t){function i(){return null!==t&&t.apply(this,arguments)||this}return b(i,t),i.prototype.Wn=function(t,i){var n,s,h=i.G,r=i.J,e=i.On,u=i.ht;if(0!==h.length&&null!==r){t.beginPath();var a=h[r.from];t.moveTo(a.tt,a.it);var o=null!==(n=a.A)&&void 0!==n?n:u;t.strokeStyle=o;for(var l=function(i){t.stroke(),t.beginPath(),t.strokeStyle=i,o=i},f=r.from+1;f>1,u=s+e;n(t[u],i)?(s=u+1,r-=e+1):r=e}return s}function vt(t,i,n,s,h){void 0===s&&(s=0),void 0===h&&(h=t.length);for(var r=h-s;0>1,u=s+e;n(i,t[u])?r=e:(s=u+1,r-=e+1)}return s}function _t(t,i){return t.rt0&&r=s&&(u=r-1),e>0&&e=2)Math.max(1,Math.floor(i))%2!=this.Ms%2&&this.Ms--;this.bs=this.Bt.ps?Math.min(this.Ms,Math.floor(i)):this.Ms;for(var h=null,r=this.bs<=this.Ms&&this.Bt.ws>=Math.floor(1.5*i),e=this.Bt.J.from;ed+M-1&&(g=(p=d+M-1)-f+1),t.fillRect(m,g,l-m,p-g+1)}var y=o+b,k=Math.max(d,Math.round(u.Cs*i)-a),x=k+f-1;x>d+M-1&&(k=(x=d+M-1)-f+1),t.fillRect(c+1,k,y-c,x-k+1)}}}},t.prototype.gs=function(t){var i=Math.floor(t);return Math.max(i,Math.floor(function(t,i){return Math.floor(.3*t*i)}(e(this.Bt).ws,t)))},t}(),pt=function(t){function i(i,n){return t.call(this,i,n,!1)||this}return b(i,t),i.prototype.rs=function(t,i,n){i.es(this.Yn,D(this.$n)),t.Ss(this.Yn,n,D(this.$n))},i.prototype.Ts=function(t,i,n){return{rt:t,open:i.St[0],high:i.St[1],low:i.St[2],close:i.St[3],tt:NaN,Ns:NaN,ys:NaN,ks:NaN,Cs:NaN}},i.prototype.Gn=function(){var t=this,i=this.Kn.ls();this.Yn=this.Kn.an().fs().map((function(n){return t.cs(n.vs,n,i)}))},i}(Mt),yt=function(t){function i(){var i=null!==t&&t.apply(this,arguments)||this;return i.zt=new gt,i}return b(i,t),i.prototype.dt=function(t,i){if(!this.Kn.yt())return null;var n=this.Kn.R();this.Jn();var s={an:this.Yn,ws:this.Xn.bt().ws(),xs:n.openVisible,ps:n.thinBars,J:this.$n};return this.zt.Z(s),this.zt},i.prototype.ts=function(){var t=this;this.Yn.forEach((function(i){i.A=t.Kn.ls().As(i.rt).Ds}))},i.prototype.cs=function(t,i,n){return m(m({},this.Ts(t,i,n)),{A:n.As(t).Ds})},i}(pt);function kt(t,i,n){return Math.min(Math.max(t,i),n)}function xt(t,i,n){return i-t<=n}function Nt(t){return t<=0?NaN:Math.log(t)/Math.log(10)}function Ct(t){var i=Math.ceil(t);return i%2!=0?i-1:i}function St(t){var i=Math.ceil(t);return i%2==0?i-1:i}var Tt=function(t){function i(){return null!==t&&t.apply(this,arguments)||this}return b(i,t),i.prototype.Fn=function(t){var i=this.X,n=t.createLinearGradient(0,0,0,i.Vn),s=kt(i.En/i.Vn,0,1);return n.addColorStop(0,i.Bs),n.addColorStop(s,i.Ls),n.addColorStop(s,i.Es),n.addColorStop(1,i.Os),n},i}(at),Dt=function(t){function i(){return null!==t&&t.apply(this,arguments)||this}return b(i,t),i.prototype.zn=function(t){var i=this.X,n=t.createLinearGradient(0,0,0,i.Vn),s=kt(i.En/i.Vn,0,1);return n.addColorStop(0,i.Pn),n.addColorStop(s,i.Pn),n.addColorStop(s,i.Rn),n.addColorStop(1,i.Rn),n},i}(lt),At=function(t){function i(i,n){var s=t.call(this,i,n)||this;return s.Fs=new Tt,s.Vs=new Dt,s.ut=new E,s.ut.U([s.Fs,s.Vs]),s}return b(i,t),i.prototype.dt=function(t,i){if(!this.Kn.yt())return null;var n=this.Kn.kt();if(null===n)return null;var s=this.Kn.R();this.Jn();var h=this.Kn.Ct().Nt(s.baseValue.price,n.St),r=this.Xn.bt().ws();return this.Fs.Z({G:this.Yn,Bs:s.topFillColor1,Ls:s.topFillColor2,Es:s.bottomFillColor1,Os:s.bottomFillColor2,Vt:s.lineWidth,Pt:s.lineStyle,On:0,En:h,Vn:t,J:this.$n,Ln:r}),this.Vs.Z({G:this.Yn,Pn:s.topLineColor,Rn:s.bottomLineColor,Vt:s.lineWidth,Pt:s.lineStyle,On:0,En:h,Vn:t,J:this.$n,Ln:r}),this.ut},i.prototype.cs=function(t,i){return this.os(t,i)},i}(bt),Bt=function(){function t(){this.Bt=null,this.Ms=0}return t.prototype.Z=function(t){this.Bt=t},t.prototype.H=function(t,i,n,s){if(null!==this.Bt&&0!==this.Bt.an.length&&null!==this.Bt.J){if(this.Ms=function(t,i){if(t>=2.5&&t<=4)return Math.floor(3*i);var n=1-.2*Math.atan(Math.max(4,t)-4)/(.5*Math.PI),s=Math.floor(t*n*i),h=Math.floor(t*i),r=Math.min(s,h);return Math.max(Math.floor(i),r)}(this.Bt.ws,i),this.Ms>=2)Math.floor(i)%2!=this.Ms%2&&this.Ms--;var h=this.Bt.an;this.Bt.Ps&&this.Rs(t,h,this.Bt.J,i),this.Bt.zs&&this.Ws(t,h,this.Bt.J,this.Bt.ws,i);var r=this.Is(i);(!this.Bt.zs||this.Ms>2*r)&&this.js(t,h,this.Bt.J,i)}},t.prototype.Rs=function(t,i,n,s){if(null!==this.Bt){var h="",r=Math.min(Math.floor(s),Math.floor(this.Bt.ws*s));r=Math.max(Math.floor(s),Math.min(r,this.Ms));for(var e=Math.floor(.5*r),u=null,a=n.from;a2*e)I(t,l,c,f-l+1,v-c+1,e);else{var _=f-l+1;t.fillRect(l,c,_,v-c+1)}u=f}},t.prototype.js=function(t,i,n,s){if(null!==this.Bt)for(var h="",r=this.Is(s),e=n.from;eo||t.fillRect(l,a,f-l+1,o-a+1)}},t}(),Lt=function(t){function i(){var i=null!==t&&t.apply(this,arguments)||this;return i.zt=new Bt,i}return b(i,t),i.prototype.dt=function(t,i){if(!this.Kn.yt())return null;var n=this.Kn.R();this.Jn();var s={an:this.Yn,ws:this.Xn.bt().ws(),Ps:n.wickVisible,zs:n.borderVisible,J:this.$n};return this.zt.Z(s),this.zt},i.prototype.ts=function(){var t=this;this.Yn.forEach((function(i){var n=t.Kn.ls().As(i.rt);i.A=n.Ds,i.qs=n.Us,i.Tt=n.Hs}))},i.prototype.cs=function(t,i,n){var s=n.As(t);return m(m({},this.Ts(t,i,n)),{A:s.Ds,qs:s.Us,Tt:s.Hs})},i}(pt),Et=function(){function t(){this.Bt=null,this.Ys=[]}return t.prototype.Z=function(t){this.Bt=t,this.Ys=[]},t.prototype.H=function(t,i,n,s){if(null!==this.Bt&&0!==this.Bt.G.length&&null!==this.Bt.J){this.Ys.length||this.$s(i);for(var h=Math.max(1,Math.floor(i)),r=Math.round(this.Bt.Ks*i)-Math.floor(h/2),e=r+h,u=this.Bt.J.from;ul.Zs?l.jn=o.In-i-1:o.In=l.jn+i+1))}var f=Math.ceil(this.Bt.ws*t);for(s=this.Bt.J.from;s0&&f<4)for(s=this.Bt.J.from;sf&&(o.Xs>o.Zs?o.jn-=1:o.In+=1)}}else this.Ys=[]},t}();function Ot(t){return{G:[],ws:t,Ks:NaN,J:null}}function Ft(t,i,n){return{rt:t,et:i,tt:NaN,it:NaN,A:n}}var Vt=function(t){function i(i,n){var s=t.call(this,i,n,!1)||this;return s.ut=new E,s.Js=Ot(0),s.zt=new Et,s}return b(i,t),i.prototype.dt=function(t,i){return this.Kn.yt()?(this.Jn(),this.ut):null},i.prototype.Gn=function(){var t=this.Xn.bt().ws();this.Js=Ot(t);for(var i=0,n=0,s=this.Kn.R().color,h=0,r=this.Kn.an().fs();hMath.ceil(this.Bt.Yt*i))){var u=Math.ceil(this.Bt.Ht*i);t.lineCap="butt",t.strokeStyle=this.Bt.A,t.lineWidth=Math.floor(this.Bt.Vt*i),n(t,this.Bt.Pt),s(t,e,0,u)}}},t}(),qt=function(){function t(t){this.wh={Ht:0,Yt:0,it:0,A:"rgba(0, 0, 0, 0)",Vt:1,Pt:0,yt:!1},this.Mh=new jt,this.ft=!0,this.Kn=t,this.Xn=t.jt(),this.Mh.Z(this.wh)}return t.prototype.vt=function(){this.ft=!0},t.prototype.dt=function(t,i){return this.Kn.yt()?(this.ft&&(this.bh(t,i),this.ft=!1),this.Mh):null},t}(),Ut=function(t){function i(i){return t.call(this,i)||this}return b(i,t),i.prototype.bh=function(t,i){this.wh.yt=!1;var n=this.Kn.Ct(),s=n.mh().mh;if(2===s||3===s){var h=this.Kn.R();if(h.baseLineVisible&&this.Kn.yt()){var r=this.Kn.kt();null!==r&&(this.wh.yt=!0,this.wh.it=n.Nt(r.St,r.St),this.wh.Ht=i,this.wh.Yt=t,this.wh.A=h.baseLineColor,this.wh.Vt=h.baseLineWidth,this.wh.Pt=h.baseLineStyle)}}},i}(qt),Ht=function(){function t(){this.Bt=null}return t.prototype.Z=function(t){this.Bt=t},t.prototype.gh=function(){return this.Bt},t.prototype.H=function(t,i,n,s){var h=this.Bt;if(null!==h){t.save();var r=Math.max(1,Math.floor(i)),e=r%2/2,u=Math.round(h.Zs.x*i)+e,a=h.Zs.y*i;t.fillStyle=h.ph,t.beginPath();var o=Math.max(2,1.5*h.yh)*i;t.arc(u,a,o,0,2*Math.PI,!1),t.fill(),t.fillStyle=h.kh,t.beginPath(),t.arc(u,a,h.st*i,0,2*Math.PI,!1),t.fill(),t.lineWidth=r,t.strokeStyle=h.xh,t.beginPath(),t.arc(u,a,h.st*i+r/2,0,2*Math.PI,!1),t.stroke(),t.restore()}},t}(),Yt=[{Nh:0,Ch:.25,Sh:4,Th:10,Dh:.25,Ah:0,Bh:.4,Lh:.8},{Nh:.25,Ch:.525,Sh:10,Th:14,Dh:0,Ah:0,Bh:.8,Lh:0},{Nh:.525,Ch:1,Sh:14,Th:14,Dh:0,Ah:0,Bh:0,Lh:0}];function $t(t,i,n,s){return function(t,i){if("transparent"===t)return t;var n=d(t),s=n[3];return"rgba(".concat(n[0],", ").concat(n[1],", ").concat(n[2],", ").concat(i*s,")")}(t,n+(s-n)*i)}function Kt(t,i){for(var n,s=t%2600/2600,r=0,e=Yt;r=u.Nh&&s<=u.Ch){n=u;break}}h(void 0!==n,"Last price animation internal logic error");var a,o,l,f=(s-n.Nh)/(n.Ch-n.Nh);return{kh:$t(i,f,n.Dh,n.Ah),xh:$t(i,f,n.Bh,n.Lh),st:(a=f,o=n.Sh,l=n.Th,o+(l-o)*a)}}var Xt=function(){function t(t){this.zt=new Ht,this.ft=!0,this.Eh=!0,this.Oh=performance.now(),this.Fh=this.Oh-1,this.Vh=t}return t.prototype.Ph=function(){this.Fh=this.Oh-1,this.vt()},t.prototype.Rh=function(){if(this.vt(),2===this.Vh.R().lastPriceAnimation){var t=performance.now(),i=this.Fh-t;if(i>0)return void(i<650&&(this.Fh+=2600));this.Oh=t,this.Fh=t+2600}},t.prototype.vt=function(){this.ft=!0},t.prototype.zh=function(){this.Eh=!0},t.prototype.yt=function(){return 0!==this.Vh.R().lastPriceAnimation},t.prototype.Wh=function(){switch(this.Vh.R().lastPriceAnimation){case 0:return!1;case 1:return!0;case 2:return performance.now()<=this.Fh}},t.prototype.dt=function(t,i){return this.ft?(this.wt(t,i),this.ft=!1,this.Eh=!1):this.Eh&&(this.Ih(),this.Eh=!1),this.zt},t.prototype.wt=function(t,i){this.zt.Z(null);var n=this.Vh.jt().bt(),s=n.ss(),h=this.Vh.kt();if(null!==s&&null!==h){var r=this.Vh.jh(!0);if(!r.qh&&s.Uh(r.vs)){var e={x:n.At(r.vs),y:this.Vh.Ct().Nt(r.et,h.St)},u=r.A,a=this.Vh.R().lineWidth,o=Kt(this.Hh(),u);this.zt.Z({ph:u,yh:a,kh:o.kh,xh:o.xh,st:o.st,Zs:e})}}},t.prototype.Ih=function(){var t=this.zt.gh();if(null!==t){var i=Kt(this.Hh(),t.ph);t.kh=i.kh,t.xh=i.xh,t.st=i.st}},t.prototype.Hh=function(){return this.Wh()?performance.now()-this.Oh:2599},t}();function Zt(t,i){return St(Math.min(Math.max(t,12),30)*i)}function Jt(t,i){switch(t){case"arrowDown":case"arrowUp":return Zt(i,1);case"circle":return Zt(i,.8);case"square":return Zt(i,.7)}}function Gt(t){return Ct(Zt(t,1))}function Qt(t){return Math.max(Zt(t,.1),3)}function ti(t,i,n,s,h){var r=Jt("square",n),e=(r-1)/2,u=t-e,a=i-e;return s>=u&&s<=u+r&&h>=a&&h<=a+r}function ii(t,i,n,s,h){var r=(Jt("arrowUp",h)-1)/2,e=(St(h/2)-1)/2;i.beginPath(),t?(i.moveTo(n-r,s),i.lineTo(n,s-r),i.lineTo(n+r,s),i.lineTo(n+e,s),i.lineTo(n+e,s+r),i.lineTo(n-e,s+r),i.lineTo(n-e,s)):(i.moveTo(n-r,s),i.lineTo(n,s+r),i.lineTo(n+r,s),i.lineTo(n+e,s),i.lineTo(n+e,s-r),i.lineTo(n-e,s-r),i.lineTo(n-e,s)),i.fill()}function ni(t,i,n,s,h,r){return ti(i,n,s,h,r)}var si=function(t){function i(){var i=null!==t&&t.apply(this,arguments)||this;return i.Bt=null,i.rh=new zt,i.W=-1,i.I="",i.Yh="",i}return b(i,t),i.prototype.Z=function(t){this.Bt=t},i.prototype.eh=function(t,i){this.W===t&&this.I===i||(this.W=t,this.I=i,this.Yh=B(t,i),this.rh.ih())},i.prototype.$h=function(t,i){if(null===this.Bt||null===this.Bt.J)return null;for(var n=this.Bt.J.from;n=t&&h<=t+n&&r>=i-e&&r<=i+e}(t.tt,t.Gt.it,t.Gt.Ht,t.Gt.Yt,i,n))||function(t,i,n){if(0===t.hs)return!1;switch(t.Gh){case"arrowDown":case"arrowUp":return ni(0,t.tt,t.it,t.hs,i,n);case"circle":return function(t,i,n,s,h){var r=2+Jt("circle",n)/2,e=t-s,u=i-h;return Math.sqrt(e*e+u*u)<=r}(t.tt,t.it,t.hs,i,n);case"square":return ti(t.tt,t.it,t.hs,i,n)}}(t,i,n)}function ei(t,i,n,s,h,r,e,u,a){var o=k(n)?n:n.close,l=k(n)?n:n.high,f=k(n)?n:n.low,c=k(i.size)?Math.max(i.size,0):1,v=Gt(u.ws())*c,_=v/2;switch(t.hs=v,i.position){case"inBar":return t.it=e.Nt(o,a),void(void 0!==t.Gt&&(t.Gt.it=t.it+_+r+.6*h));case"aboveBar":return t.it=e.Nt(l,a)-_-s.Qh,void 0!==t.Gt&&(t.Gt.it=t.it-_-.6*h,s.Qh+=1.2*h),void(s.Qh+=v+r);case"belowBar":return t.it=e.Nt(f,a)+_+s.tr,void 0!==t.Gt&&(t.Gt.it=t.it+_+r+.6*h,s.tr+=1.2*h),void(s.tr+=v+r)}i.position}var ui=function(){function t(t,i){this.ft=!0,this.ir=!0,this.nr=!0,this.sr=null,this.zt=new si,this.Vh=t,this.gi=i,this.Bt={G:[],J:null}}return t.prototype.vt=function(t){this.ft=!0,this.nr=!0,"data"===t&&(this.ir=!0)},t.prototype.dt=function(t,i,n){if(!this.Vh.yt())return null;this.ft&&this.Jn();var s=this.gi.R().layout;return this.zt.eh(s.fontSize,s.fontFamily),this.zt.Z(this.Bt),this.zt},t.prototype.hr=function(){if(this.nr){if(this.Vh.rr().length>0){var t=this.gi.bt().ws(),i=Qt(t),n=1.5*Gt(t)+2*i;this.sr={above:n,below:n}}else this.sr=null;this.nr=!1}return this.sr},t.prototype.Jn=function(){var t=this.Vh.Ct(),i=this.gi.bt(),n=this.Vh.rr();this.ir&&(this.Bt.G=n.map((function(t){return{rt:t.time,tt:0,it:0,hs:0,Gh:t.shape,A:t.color,Xh:t.Xh,Zh:t.id,Gt:void 0}})),this.ir=!1);var s=this.gi.R().layout;this.Bt.J=null;var h=i.ss();if(null!==h){var r=this.Vh.kt();if(null!==r&&0!==this.Bt.G.length){var e=NaN,u=Qt(i.ws()),a={Qh:u,tr:u};this.Bt.J=wt(this.Bt.G,h,!0);for(var o=this.Bt.J.from;o0&&(f.Gt={Jh:l.text,it:0,Ht:0,Yt:0});var c=this.Vh.er(l.time);null!==c&&ei(f,l,c,a,s.fontSize,u,t,i,r.St)}this.ft=!1}}},t}(),ai=function(t){function i(i){return t.call(this,i)||this}return b(i,t),i.prototype.bh=function(t,i){var n=this.wh;n.yt=!1;var s=this.Kn.R();if(s.priceLineVisible&&this.Kn.yt()){var h=this.Kn.jh(0===s.priceLineSource);h.qh||(n.yt=!0,n.it=h.ti,n.A=this.Kn.ur(h.A),n.Ht=i,n.Yt=t,n.Vt=s.priceLineWidth,n.Pt=s.priceLineStyle)}},i}(qt),oi=function(t){function i(i){var n=t.call(this)||this;return n.Wt=i,n}return b(i,t),i.prototype.vi=function(t,i,n){t.yt=!1,i.yt=!1;var s=this.Wt;if(s.yt()){var h=s.R(),r=h.lastValueVisible,e=""!==s.ar(),u=0===h.seriesLastValueMode,a=s.jh(!1);if(!a.qh){r&&(t.Gt=this.lr(a,r,u),t.yt=0!==t.Gt.length),(e||u)&&(i.Gt=this.cr(a,r,e,u),i.yt=i.Gt.length>0);var o=s.ur(a.A),l=w(o);n.t=l.t,n.A=l.i,n.ti=a.ti,i.Tt=s.jt().Dt(a.ti/s.Ct().Yt()),t.Tt=o}}},i.prototype.cr=function(t,i,n,s){var h="",r=this.Wt.ar();return n&&0!==r.length&&(h+="".concat(r," ")),i&&s&&(h+=this.Wt.Ct().vr()?t._r:t.dr),h.trim()},i.prototype.lr=function(t,i,n){return i?n?this.Wt.Ct().vr()?t.dr:t._r:t.Gt:""},i}($),li=function(){function t(t,i){this.wr=t,this.Mr=i}return t.prototype.br=function(t){return null!==t&&(this.wr===t.wr&&this.Mr===t.Mr)},t.prototype.mr=function(){return new t(this.wr,this.Mr)},t.prototype.gr=function(){return this.wr},t.prototype.pr=function(){return this.Mr},t.prototype.yr=function(){return this.Mr-this.wr},t.prototype.wi=function(){return this.Mr===this.wr||Number.isNaN(this.Mr)||Number.isNaN(this.wr)},t.prototype.xn=function(i){return null===i?this:new t(Math.min(this.gr(),i.gr()),Math.max(this.pr(),i.pr()))},t.prototype.kr=function(t){if(k(t)&&0!==this.Mr-this.wr){var i=.5*(this.Mr+this.wr),n=this.Mr-i,s=this.wr-i;n*=t,s*=t,this.Mr=i+n,this.wr=i+s}},t.prototype.Nr=function(t){k(t)&&(this.Mr+=t,this.wr+=t)},t.prototype.Cr=function(){return{minValue:this.wr,maxValue:this.Mr}},t.Sr=function(i){return null===i?null:new t(i.minValue,i.maxValue)},t}(),fi=function(){function t(t,i){this.Tr=t,this.Dr=i||null}return t.prototype.Ar=function(){return this.Tr},t.prototype.Br=function(){return this.Dr},t.prototype.Cr=function(){return null===this.Tr?null:{priceRange:this.Tr.Cr(),margins:this.Dr||void 0}},t.Sr=function(i){return null===i?null:new t(li.Sr(i.priceRange),i.margins)},t}(),ci=function(t){function i(i,n){var s=t.call(this,i)||this;return s.Lr=n,s}return b(i,t),i.prototype.bh=function(t,i){var n=this.wh;n.yt=!1;var s=this.Lr.R();if(this.Kn.yt()&&s.lineVisible){var h=this.Lr.Er();null!==h&&(n.yt=!0,n.it=h,n.A=s.color,n.Ht=i,n.Yt=t,n.Vt=s.lineWidth,n.Pt=s.lineStyle)}},i}(qt),vi=function(t){function i(i,n){var s=t.call(this)||this;return s.Vh=i,s.Lr=n,s}return b(i,t),i.prototype.vi=function(t,i,n){t.yt=!1,i.yt=!1;var s=this.Lr.R(),h=s.axisLabelVisible,r=""!==s.title,e=this.Vh;if(h&&e.yt()){var u=this.Lr.Er();if(null!==u){r&&(i.Gt=s.title,i.yt=!0),i.Tt=e.jt().Dt(u/e.Ct().Yt()),t.Gt=e.Ct().Or(s.price),t.yt=!0;var a=w(s.color);n.t=a.t,n.A=a.i,n.ti=u}}},i}($),_i=function(){function t(t,i){this.Vh=t,this.zi=i,this.Fr=new ci(t,this),this.uh=new vi(t,this),this.Vr=new It(this.uh,t,t.jt())}return t.prototype.Pr=function(t){y(this.zi,t),this.vt(),this.Vh.jt().Rr()},t.prototype.R=function(){return this.zi},t.prototype.tn=function(){return[this.Fr,this.Vr]},t.prototype.zr=function(){return this.uh},t.prototype.vt=function(){this.Fr.vt(),this.uh.vt()},t.prototype.Er=function(){var t=this.Vh,i=t.Ct();if(t.jt().bt().wi()||i.wi())return null;var n=t.kt();return null===n?null:i.Nt(this.zi.price,n.St)},t}(),di=function(t){function i(i){var n=t.call(this)||this;return n.gi=i,n}return b(i,t),i.prototype.jt=function(){return this.gi},i}(G),wi={Ds:"",Hs:"",Us:""},Mi=function(){function t(t){this.Vh=t}return t.prototype.As=function(t,i){var n=this.Vh.Wr(),s=this.Vh.R();switch(n){case"Line":return this.Ir(s,t,i);case"Area":return this.jr(s);case"Baseline":return this.qr(s,t,i);case"Bar":return this.Ur(s,t,i);case"Candlestick":return this.Hr(s,t,i);case"Histogram":return this.Yr(s,t,i)}throw new Error("Unknown chart style")},t.prototype.Ur=function(t,i,n){var s=m({},wi),h=t.upColor,r=t.downColor,a=h,o=r,l=e(this.$r(i,n)),f=u(l.St[0])<=u(l.St[3]);return void 0!==l.A?(s.Ds=l.A,s.Hs=l.A):(s.Ds=f?h:r,s.Hs=f?a:o),s},t.prototype.Hr=function(t,i,n){var s,h,r,a=m({},wi),o=t.upColor,l=t.downColor,f=t.borderUpColor,c=t.borderDownColor,v=t.wickUpColor,_=t.wickDownColor,d=e(this.$r(i,n)),w=u(d.St[0])<=u(d.St[3]);return a.Ds=null!==(s=d.A)&&void 0!==s?s:w?o:l,a.Hs=null!==(h=d.Tt)&&void 0!==h?h:w?f:c,a.Us=null!==(r=d.qs)&&void 0!==r?r:w?v:_,a},t.prototype.jr=function(t){return m(m({},wi),{Ds:t.lineColor})},t.prototype.qr=function(t,i,n){var s=e(this.$r(i,n)).St[3]>=t.baseValue.price;return m(m({},wi),{Ds:s?t.topLineColor:t.bottomLineColor})},t.prototype.Ir=function(t,i,n){var s,h=e(this.$r(i,n));return m(m({},wi),{Ds:null!==(s=h.A)&&void 0!==s?s:t.color})},t.prototype.Yr=function(t,i,n){var s=m({},wi),h=e(this.$r(i,n));return s.Ds=void 0!==h.A?h.A:t.color,s},t.prototype.$r=function(t,i){return void 0!==i?i.St:this.Vh.an().Kr(t)},t}(),bi=30,mi=function(){function t(){this.Xr=[],this.Zr=new Map,this.Jr=new Map}return t.prototype.Gr=function(){return this.hs()>0?this.Xr[this.Xr.length-1]:null},t.prototype.Qr=function(){return this.hs()>0?this.te(0):null},t.prototype.un=function(){return this.hs()>0?this.te(this.Xr.length-1):null},t.prototype.hs=function(){return this.Xr.length},t.prototype.wi=function(){return 0===this.hs()},t.prototype.Uh=function(t){return null!==this.ie(t,0)},t.prototype.Kr=function(t){return this.ne(t)},t.prototype.ne=function(t,i){void 0===i&&(i=0);var n=this.ie(t,i);return null===n?null:m(m({},this.se(n)),{vs:this.te(n)})},t.prototype.fs=function(){return this.Xr},t.prototype.he=function(t,i,n){if(this.wi())return null;for(var s=null,h=0,r=n;h0&&(i-=1),i!==this.Xr.length&&this.te(i)t}))},t.prototype.fe=function(t,i,n){for(var s=null,h=t;hs.ve&&(s.ve=r)))}return s},t.prototype.re=function(t,i,n){if(this.wi())return null;var s=null,h=e(this.Qr()),r=e(this.un()),u=Math.max(t,h),a=Math.min(i,r),o=Math.ceil(u/bi)*bi,l=Math.max(o,Math.floor(a/bi)*bi),f=this.oe(u),c=this.le(Math.min(a,o,i));s=gi(s,this.fe(f,c,n));var v=this.Zr.get(n);void 0===v&&(v=new Map,this.Zr.set(n,v));for(var _=Math.max(o+1,u);_=1||i<1e-15)return Ci;var n=Math.ceil(Math.abs(Math.log10(i))),s=Ci.lu+n;return{lu:s,fu:1/Math.pow(10,s)}}var Vi,Pi=function(){function t(t,i){if(this.cu=t,this.vu=i,function(t){if(t<0)return!1;for(var i=t;i>1;i/=10)if(i%10!=0)return!1;return!0}(this.cu))this._u=[2,2.5,2];else{this._u=[];for(var n=this.cu;1!==n;){if(n%2==0)this._u.push(2),n/=2;else{if(n%5!=0)throw new Error("unexpected base");this._u.push(2,2.5),n/=5}if(this._u.length>100)throw new Error("something wrong with base")}}}return t.prototype.du=function(t,i,n){for(var s,h,r,e=0===this.cu?0:1/this.cu,u=Math.pow(10,Math.max(0,Math.ceil(Nt(t-i)))),a=0,o=this.vu[0];;){var l=xt(u,e,1e-14)&&u>e+1e-14,f=xt(u,n*o,1e-14),c=xt(u,1,1e-14);if(!(l&&f&&c))break;u/=o,o=this.vu[++a%this.vu.length]}if(u<=e+1e-14&&(u=e),u=Math.max(1,u),this._u.length>0&&(s=u,h=1,r=1e-14,Math.abs(s-h)e+1e-14;)u/=o,o=this._u[++a%this._u.length];return u},t}(),Ri=function(){function t(t,i,n,s){this.wu=[],this._i=t,this.cu=i,this.Mu=n,this.bu=s}return t.prototype.du=function(t,i){if(t=o?1:-1,v=null,_=0,d=a-(f+=f<0?l:0);d>o;d-=l){var w=this.bu(d,i,!0);null!==v&&Math.abs(w-v)u||(_1)throw new Error("Invalid top margin - expect value between 0 and 1, given=".concat(i));if(n<0||n>1||i+n>1)throw new Error("Invalid bottom margin - expect value between 0 and 1, given=".concat(n));if(i+n>1)throw new Error("Invalid margins - sum of margins must be less than 1, given=".concat(i+n));this.Ku(),this.Pu=null}},t.prototype.Xu=function(){return this.zi.autoScale},t.prototype.xu=function(){return 1===this.zi.mode},t.prototype.vr=function(){return 2===this.zi.mode},t.prototype.Zu=function(){return 3===this.zi.mode},t.prototype.mh=function(){return{_n:this.zi.autoScale,Ju:this.zi.invertScale,mh:this.zi.mode}},t.prototype.$u=function(t){var i=this.mh(),n=null;void 0!==t._n&&(this.zi.autoScale=t._n),void 0!==t.mh&&(this.zi.mode=t.mh,2!==t.mh&&3!==t.mh||(this.zi.autoScale=!0),this.Tu.Du=!1),1===i.mh&&t.mh!==i.mh&&(!function(t,i){if(null===t)return!1;var n=Li(t.gr(),i),s=Li(t.pr(),i);return isFinite(n)&&isFinite(s)}(this.Tr,this.Wu)?this.zi.autoScale=!0:null!==(n=Oi(this.Tr,this.Wu))&&this.Gu(n)),1===t.mh&&t.mh!==i.mh&&null!==(n=Ei(this.Tr,this.Wu))&&this.Gu(n);var s=i.mh!==this.zi.mode;s&&(2===i.mh||this.vr())&&this.Xe(),s&&(3===i.mh||this.Zu())&&this.Xe(),void 0!==t.Ju&&i.Ju!==t.Ju&&(this.zi.invertScale=t.Ju,this.Qu()),this.Ou.m(i,this.mh())},t.prototype.ta=function(){return this.Ou},t.prototype.S=function(){return this.ju.fontSize},t.prototype.Yt=function(){return this.Nu},t.prototype.ia=function(t){this.Nu!==t&&(this.Nu=t,this.Ku(),this.Pu=null)},t.prototype.na=function(){if(this.Cu)return this.Cu;var t=this.Yt()-this.sa()-this.ha();return this.Cu=t,t},t.prototype.Ar=function(){return this.ra(),this.Tr},t.prototype.Gu=function(t,i){var n=this.Tr;(i||null===n&&null!==t||null!==n&&!n.br(t))&&(this.Pu=null,this.Tr=t)},t.prototype.wi=function(){return this.ra(),0===this.Nu||!this.Tr||this.Tr.wi()},t.prototype.ea=function(t){return this.Ju()?t:this.Yt()-1-t},t.prototype.Nt=function(t,i){return this.vr()?t=Si(t,i):this.Zu()&&(t=Di(t,i)),this.Yu(t,i)},t.prototype.us=function(t,i,n){this.ra();for(var s=this.ha(),h=e(this.Ar()),r=h.gr(),u=h.pr(),a=this.na()-1,o=this.Ju(),l=a/(u-r),f=void 0===n?0:n.from,c=void 0===n?t.length:n.to,v=this.ua(),_=f;_=0&&a.ca(t),null!==a&&(a.fa(),this.Ha(a)),this.Vu=null},t.prototype._h=function(t){return t===this.Ba?"left":t===this.Ea?"right":"overlay"},t.prototype.Ya=function(){return this.Ba},t.prototype.$a=function(){return this.Ea},t.prototype.Ka=function(t,i){t.da(i)},t.prototype.Xa=function(t,i){t.wa(i),this.Ia()},t.prototype.Za=function(t){t.Ma()},t.prototype.Ja=function(t,i){t.ba(i)},t.prototype.Ga=function(t,i){t.ma(i),this.Ia()},t.prototype.Qa=function(t){t.ga()},t.prototype.Ia=function(){this.Fu.forEach((function(t){t.hn()}))},t.prototype.ji=function(){var t=null;return this.gi.R().rightPriceScale.visible&&0!==this.Ea.Ge().length?t=this.Ea:this.gi.R().leftPriceScale.visible&&0!==this.Ba.Ge().length?t=this.Ba:0!==this.Fu.length&&(t=this.Fu[0].Ct()),null===t&&(t=this.Ea),t},t.prototype.fh=function(){var t=null;return this.gi.R().rightPriceScale.visible?t=this.Ea:this.gi.R().leftPriceScale.visible&&(t=this.Ba),t},t.prototype.Ha=function(t){null!==t&&t.Xu()&&this.io(t)},t.prototype.no=function(t){var i=this.Da.ss();t.$u({_n:!0}),null!==i&&t.xa(i),this.Ia()},t.prototype.so=function(){this.io(this.Ba),this.io(this.Ea)},t.prototype.ho=function(){var t=this;this.Ha(this.Ba),this.Ha(this.Ea),this.Fu.forEach((function(i){t.lh(i)&&t.Ha(i.Ct())})),this.Ia(),this.gi.Rr()},t.prototype.oa=function(){return null===this.Vu&&(this.Vu=zi(this.Fu)),this.Vu},t.prototype.ro=function(){return this.Ta},t.prototype.eo=function(){return this.Aa},t.prototype.io=function(t){var i=t.ka();if(i&&i.length>0&&!this.Da.wi()){var n=this.Da.ss();null!==n&&t.xa(n)}t.hn()},t.prototype.qa=function(){var t=this.oa();if(0===t.length)return{uo:0,ja:0};for(var i=0,n=0,s=0;sn&&(n=h))}return{uo:i,ja:n}},t.prototype.Ua=function(t,i,n){var s=this.Va(i);if(null===s&&(s=this.La(i,this.gi.R().overlayPriceScales)),this.Fu.push(t),!tt(i)){var h=this.Ca.get(i)||[];h.push(t),this.Ca.set(i,h)}s.la(t),t.Si(s),t.Ci(n),this.Ha(s),this.Vu=null},t.prototype.Oa=function(t,i,n){i.mh!==n.mh&&this.io(t)},t.prototype.La=function(t,i){var n=m({visible:!0,autoScale:!0},S(i)),s=new ji(t,n,this.gi.R().layout,this.gi.R().localization);return s.ia(this.Yt()),s},t}(),Ui=function(t){return t.getUTCFullYear()};function Hi(t,i,n){return i.replace(/yyyy/g,function(t){return st(Ui(t),4)}(t)).replace(/yy/g,function(t){return st(Ui(t)%100,2)}(t)).replace(/MMMM/g,function(t,i){return new Date(t.getUTCFullYear(),t.getUTCMonth(),1).toLocaleString(i,{month:"long"})}(t,n)).replace(/MMM/g,function(t,i){return new Date(t.getUTCFullYear(),t.getUTCMonth(),1).toLocaleString(i,{month:"short"})}(t,n)).replace(/MM/g,function(t){return st(function(t){return t.getUTCMonth()+1}(t),2)}(t)).replace(/dd/g,function(t){return st(function(t){return t.getUTCDate()}(t),2)}(t))}var Yi=function(){function t(t,i){void 0===t&&(t="yyyy-MM-dd"),void 0===i&&(i="default"),this.ao=t,this.oo=i}return t.prototype.lo=function(t){return Hi(t,this.ao,this.oo)},t}(),$i=function(){function t(t){this.fo=t||"%h:%m:%s"}return t.prototype.lo=function(t){return this.fo.replace("%h",st(t.getUTCHours(),2)).replace("%m",st(t.getUTCMinutes(),2)).replace("%s",st(t.getUTCSeconds(),2))},t}(),Ki={co:"yyyy-MM-dd",vo:"%h:%m:%s",_o:" ",do:"default"},Xi=function(){function t(t){void 0===t&&(t={});var i=m(m({},Ki),t);this.wo=new Yi(i.co,i.do),this.Mo=new $i(i.vo),this.bo=i._o}return t.prototype.lo=function(t){return"".concat(this.wo.lo(t)).concat(this.bo).concat(this.Mo.lo(t))},t}();var Zi=function(){function t(t,i){void 0===i&&(i=50),this.mo=0,this.po=1,this.yo=1,this.Gs=new Map,this.ko=new Map,this.xo=t,this.No=i}return t.prototype.lo=function(t){var i=void 0===t.Co?new Date(1e3*t.So).getTime():new Date(Date.UTC(t.Co.year,t.Co.month-1,t.Co.day)).getTime(),n=this.Gs.get(i);if(void 0!==n)return n.To;if(this.mo===this.No){var s=this.ko.get(this.yo);this.ko.delete(this.yo),this.Gs.delete(r(s)),this.yo++,this.mo--}var h=this.xo(t);return this.Gs.set(i,{To:h,Do:this.po}),this.ko.set(this.po,i),this.mo++,this.po++,h},t}(),Ji=function(){function t(t,i){h(t<=i,"right should be >= left"),this.Ao=t,this.Bo=i}return t.prototype.In=function(){return this.Ao},t.prototype.jn=function(){return this.Bo},t.prototype.Lo=function(){return this.Bo-this.Ao+1},t.prototype.Uh=function(t){return this.Ao<=t&&t<=this.Bo},t.prototype.br=function(t){return this.Ao===t.In()&&this.Bo===t.jn()},t}();function Gi(t,i){return null===t||null===i?t===i:t.br(i)}var Qi,tn=function(){function t(){this.Eo=new Map,this.Gs=null}return t.prototype.Oo=function(t,i){this.Fo(i),this.Gs=null;for(var n=i;n=t&&d-c>=t&&(i.push(_),c=d)}for(;athis.Yo[this.Yo.length-1].rt.So)return i?this.Yo.length-1:null;var n=ct(this.Yo,t.So,(function(t,i){return t.rt.Soi/2&&!l?M.Sl=!1:M.Sl=f&&w.vs<=a||c&&w.vs>=o,v++}}return this.nl.length=v,this.il=this.nl,this.nl},t.prototype.Tl=function(){this.Zo=!0,this.pn(this.zi.barSpacing),this.yn(this.zi.rightOffset)},t.prototype.Dl=function(t){this.Zo=!0,this.Ho=t,this.bl(),this.al()},t.prototype.Al=function(t,i){var n=this.pl(t),s=this.ws(),h=s+i*(s/10);this.pn(h),this.zi.rightBarStaysOnScroll||this.yn(this.xl()+(n-this.pl(t)))},t.prototype.da=function(t){this.zu&&this.ga(),null===this.Ru&&null===this.tl&&(this.wi()||(this.Ru=t,this.Bl()))},t.prototype.wa=function(t){if(null!==this.tl){var i=kt(this.hh-t,0,this.hh),n=kt(this.hh-e(this.Ru),0,this.hh);0!==i&&0!==n&&this.pn(this.tl.ws*i/n)}},t.prototype.Ma=function(){null!==this.Ru&&(this.Ru=null,this.Ll())},t.prototype.ba=function(t){null===this.zu&&null===this.tl&&(this.wi()||(this.zu=t,this.Bl()))},t.prototype.ma=function(t){if(null!==this.zu){var i=(this.zu-t)/this.ws();this.sl=e(this.tl).xl+i,this.Zo=!0,this.bl()}},t.prototype.ga=function(){null!==this.zu&&(this.zu=null,this.Ll())},t.prototype.El=function(){this.Ol(this.zi.rightOffset)},t.prototype.Ol=function(t,i){var n=this;if(void 0===i&&(i=400),!isFinite(t))throw new RangeError("offset is required and must be finite number");if(!isFinite(i)||i<=0)throw new RangeError("animationDuration (optional) must be finite positive number");var s=this.sl,h=performance.now(),r=function(){var e=(performance.now()-h)/i,u=e>=1,a=u?t:s+(t-s)*e;n.yn(a),u||setTimeout(r,20)};r()},t.prototype.vt=function(t,i){this.Zo=!0,this.Yo=t,this.$o.Oo(t,i),this.bl()},t.prototype.Fl=function(){return this.Jo},t.prototype.Vl=function(){return this.Go},t.prototype.Pl=function(){return this.Qo},t.prototype.ml=function(){return this.Ho||0},t.prototype.Rl=function(t){var i=t.Lo();this.kl(this.hh/i),this.sl=t.jn()-this.ml(),this.bl(),this.Zo=!0,this.gi.yl(),this.gi.Rr()},t.prototype.zl=function(){var t=this._l(),i=this.dl();null!==t&&null!==i&&this.Rl(new Ji(t,i+this.zi.rightOffset))},t.prototype.Wl=function(t){var i=new Ji(t.from,t.to);this.Rl(i)},t.prototype.yi=function(t){return void 0!==this.qu.timeFormatter?this.qu.timeFormatter(t.Co||t.So):this.Il.lo(new Date(1e3*t.So))},t.prototype.Nl=function(){var t=this.gi.R(),i=t.handleScroll,n=t.handleScale;return!(i.horzTouchDrag||i.mouseWheel||i.pressedMouseMove||i.vertTouchDrag||n.axisDoubleClickReset||n.axisPressedMouseMove.time||n.mouseWheel||n.pinch)},t.prototype._l=function(){return 0===this.Yo.length?null:0},t.prototype.dl=function(){return 0===this.Yo.length?null:this.Yo.length-1},t.prototype.jl=function(t){return(this.hh-1-t)/this.hl},t.prototype.pl=function(t){var i=this.jl(t),n=this.ml()+this.sl-i;return Math.round(1e6*n)/1e6},t.prototype.kl=function(t){var i=this.hl;this.hl=t,this.Ml(),i!==this.hl&&(this.Zo=!0,this.ql())},t.prototype.ll=function(){if(this.Zo)if(this.Zo=!1,this.wi())this.Ul(nn.Uo());else{var t=this.ml(),i=this.hh/this.hl,n=this.sl+t,s=new Ji(n-i+1,n);this.Ul(new nn(s))}},t.prototype.Ml=function(){var t=this.Hl();if(this.hli&&(this.hl=i,this.Zo=!0)}},t.prototype.Hl=function(){return this.zi.fixLeftEdge&&this.zi.fixRightEdge&&0!==this.Yo.length?this.hh/this.Yo.length:this.zi.minBarSpacing},t.prototype.bl=function(){var t=this.Yl();this.sl>t&&(this.sl=t,this.Zo=!0);var i=this.$l();null!==i&&this.slthis.Bt.Ht?a.Al=this.Bt.Ht/h:a.Al=1,i+=a.Gl*a.Al}}var r=0;switch(this.Bt.Ql){case"top":r=0;break;case"center":r=Math.max((this.Bt.Yt-i)/2,0);break;case"bottom":r=Math.max(this.Bt.Yt-i,0)}t.fillStyle=this.Bt.A;for(var e=0,u=this.Bt.Zl;e20&&(this.rf=null,i=!0),this.Da.ma(t),this.yl(),i},t.prototype.Pf=function(){this.Da.ga(),this.Rr(),this.rf=null},t.prototype._t=function(){return this.hf},t.prototype.Wf=function(t,i,n){this.ct.Yi(t,i);var s=NaN,h=this.Da.gl(t),r=this.Da.ss();null!==r&&(h=Math.min(Math.max(r.In(),h),r.jn()));var e=n.ji(),u=e.kt();null!==u&&(s=e.qi(i,u)),s=this.vf.Je(s,h,n),this.ct.Zi(h,s,n),this.Re(),this.af.m(this.ct.Mt(),{x:t,y:i})},t.prototype.If=function(){this.Tf().Gi(),this.Re(),this.af.m(null,null)},t.prototype.Te=function(){var t=this.ct.It();if(null!==t){var i=this.ct.Ki(),n=this.ct.Xi();this.Wf(i,n,t)}this.ct.hn()},t.prototype.jf=function(t,i,n){var s=this.Da.pi(0);void 0!==i&&void 0!==n&&this.Da.vt(i,n);var h=this.Da.pi(0),r=this.Da.ml(),e=this.Da.ss();if(null!==e&&null!==s&&null!==h){var u=e.Uh(r),a=s.So>h.So,o=null!==t&&t>r&&!a,l=u&&this.Da.R().shiftVisibleRangeOnNewBar;if(o&&!l){var f=t-r;this.Da.yn(this.Da.xl()-f)}}this.Da.Dl(t)},t.prototype.Be=function(t){null!==t&&t.ho()},t.prototype.oh=function(t){var i=this.sf.find((function(i){return i.oa().includes(t)}));return void 0===i?null:i},t.prototype.yl=function(){this._f.hn(),this.sf.forEach((function(t){return t.ho()})),this.Te()},t.prototype.p=function(){this.sf.forEach((function(t){return t.p()})),this.sf.length=0,this.zi.localization.priceFormatter=void 0,this.zi.localization.timeFormatter=void 0},t.prototype.qf=function(){return this.cf},t.prototype.dh=function(){return this.cf.R()},t.prototype.Pa=function(){return this.uf},t.prototype.Uf=function(t,i){var n=this.sf[0],s=this.Hf(i,t,n);return this.hf.push(s),1===this.hf.length?this.Ce():this.Rr(),s},t.prototype.Yf=function(t){var i=this.oh(t),n=this.hf.indexOf(t);h(-1!==n,"Series not found"),this.hf.splice(n,1),e(i).ca(t),t.p&&t.p()},t.prototype.Ne=function(t,i){var n=e(this.oh(t));n.ca(t);var s=this.Nf(i);if(null===s){var h=t.Ni();n.la(t,i,h)}else{h=s.It===n?t.Ni():void 0;s.It.la(t,i,h)}},t.prototype.zl=function(){var t=new it(2);t.Mn(),this.mf(t)},t.prototype.$f=function(t){var i=new it(2);i.mn(t),this.mf(i)},t.prototype.gn=function(){var t=new it(2);t.gn(),this.mf(t)},t.prototype.pn=function(t){var i=new it(2);i.pn(t),this.mf(i)},t.prototype.yn=function(t){var i=new it(2);i.yn(t),this.mf(i)},t.prototype.Kf=function(){return this.zi.rightPriceScale.visible?"right":"left"},t.prototype.Xf=function(){return this.bf},t.prototype.Zf=function(){return this.wf},t.prototype.Dt=function(t){var i=this.bf,n=this.wf;if(i===n)return i;if(t=Math.max(0,Math.min(100,Math.round(100*t))),null===this.lf||this.lf.Pn!==n||this.lf.Rn!==i)this.lf={Pn:n,Rn:i,Jf:new Map};else{var s=this.lf.Jf.get(t);if(void 0!==s)return s}var h=function(t,i,n){var s=d(t),h=s[0],r=s[1],e=s[2],u=s[3],a=d(i),f=a[0],c=a[1],v=a[2],_=a[3],w=[o(h+n*(f-h)),o(r+n*(c-r)),o(e+n*(v-e)),l(u+n*(_-u))];return"rgba(".concat(w[0],", ").concat(w[1],", ").concat(w[2],", ").concat(w[3],")")}(n,i,t/100);return this.lf.Jf.set(t,h),h},t.prototype.Bf=function(t,i){var n=new it(i);if(null!==t){var s=this.sf.indexOf(t);n.cn(s,{vn:i})}return n},t.prototype.gf=function(t,i){return void 0===i&&(i=2),this.Bf(this.oh(t),i)},t.prototype.mf=function(t){this.ff&&this.ff(t),this.sf.forEach((function(t){return t.eo().ou().vt()}))},t.prototype.Hf=function(t,i,n){var s=new pi(this,t,i),h=void 0!==t.priceScaleId?t.priceScaleId:this.Kf();return n.la(s,h),tt(h)||s.Pr(t),s},t.prototype.Mf=function(t){var i=this.zi.layout;return"gradient"===i.background.type?0===t?i.background.topColor:i.background.bottomColor:i.background.color},t}();function cn(t){void 0!==t.borderColor&&(t.borderUpColor=t.borderColor,t.borderDownColor=t.borderColor),void 0!==t.wickColor&&(t.wickUpColor=t.wickColor,t.wickDownColor=t.wickColor)}function vn(t){return!k(t)&&!N(t)}function _n(t){return k(t)}!function(t){t[t.Disabled=0]="Disabled",t[t.Continuous=1]="Continuous",t[t.OnDataUpdate=2]="OnDataUpdate"}(an||(an={})),function(t){t[t.LastBar=0]="LastBar",t[t.LastVisible=1]="LastVisible"}(on||(on={})),function(t){t.Solid="solid",t.VerticalGradient="gradient"}(ln||(ln={}));var dn={allowDownsampling:!0};var wn=function(){function t(t,i){var n=this;this._resolutionMediaQueryList=null,this._resolutionListener=function(t){return n._onResolutionChanged()},this._canvasConfiguredListeners=[],this.canvas=t,this._canvasSize={width:this.canvas.clientWidth,height:this.canvas.clientHeight},this._options=i,this._configureCanvas(),this._installResolutionListener()}return t.prototype.destroy=function(){this._canvasConfiguredListeners.length=0,this._uninstallResolutionListener(),this.canvas=null},Object.defineProperty(t.prototype,"canvasSize",{get:function(){return{width:this._canvasSize.width,height:this._canvasSize.height}},enumerable:!0,configurable:!0}),t.prototype.resizeCanvas=function(t){this._canvasSize={width:t.width,height:t.height},this._configureCanvas()},Object.defineProperty(t.prototype,"pixelRatio",{get:function(){var t=this.canvas.ownerDocument.defaultView;if(null==t)throw new Error("No window is associated with the canvas");return t.devicePixelRatio>1||this._options.allowDownsampling?t.devicePixelRatio:1},enumerable:!0,configurable:!0}),t.prototype.subscribeCanvasConfigured=function(t){this._canvasConfiguredListeners.push(t)},t.prototype.unsubscribeCanvasConfigured=function(t){this._canvasConfiguredListeners=this._canvasConfiguredListeners.filter((function(i){return i!=t}))},t.prototype._configureCanvas=function(){var t=this.pixelRatio;this.canvas.style.width=this._canvasSize.width+"px",this.canvas.style.height=this._canvasSize.height+"px",this.canvas.width=this._canvasSize.width*t,this.canvas.height=this._canvasSize.height*t,this._emitCanvasConfigured()},t.prototype._emitCanvasConfigured=function(){var t=this;this._canvasConfiguredListeners.forEach((function(i){return i.call(t)}))},t.prototype._installResolutionListener=function(){if(null!==this._resolutionMediaQueryList)throw new Error("Resolution listener is already installed");var t=this.canvas.ownerDocument.defaultView;if(null==t)throw new Error("No window is associated with the canvas");var i=t.devicePixelRatio;this._resolutionMediaQueryList=t.matchMedia("all and (resolution: "+i+"dppx)"),this._resolutionMediaQueryList.addListener(this._resolutionListener)},t.prototype._uninstallResolutionListener=function(){null!==this._resolutionMediaQueryList&&(this._resolutionMediaQueryList.removeListener(this._resolutionListener),this._resolutionMediaQueryList=null)},t.prototype._reinstallResolutionListener=function(){this._uninstallResolutionListener(),this._installResolutionListener()},t.prototype._onResolutionChanged=function(){this._configureCanvas(),this._reinstallResolutionListener()},t}(),Mn=function(){function t(t,i){this.Ot=t,this.Ft=i}return t.prototype.br=function(t){return this.Ot===t.Ot&&this.Ft===t.Ft},t}();function bn(t){return t.ownerDocument&&t.ownerDocument.defaultView&&t.ownerDocument.defaultView.devicePixelRatio||1}function mn(t){var i=e(t.getContext("2d"));return i.setTransform(1,0,0,1,0,0),i}function gn(t,i){var n=t.createElement("canvas"),s=bn(n);return n.style.width="".concat(i.Ot,"px"),n.style.height="".concat(i.Ft,"px"),n.width=i.Ot*s,n.height=i.Ft*s,n}function pn(t,i){var n=e(t.ownerDocument).createElement("canvas");t.appendChild(n);var s=function(t,i){return void 0===i&&(i=dn),new wn(t,i)}(n,{allowDownsampling:!1});return s.resizeCanvas({width:i.Ot,height:i.Ft}),s}function yn(t,i){return t.Gf-i.Gf}function kn(t,i,n){var s=(t.Gf-i.Gf)/(t.rt-i.rt);return Math.sign(s)*Math.min(Math.abs(s),n)}var xn=function(){function t(t,i,n,s){this.Qf=null,this.tc=null,this.ic=null,this.nc=null,this.sc=null,this.hc=0,this.rc=0,this.ec=!1,this.uc=t,this.ac=i,this.oc=n,this.Cn=s}return t.prototype.lc=function(t,i){if(null!==this.Qf){if(this.Qf.rt===i)return void(this.Qf.Gf=t);if(Math.abs(this.Qf.Gf-t)50)){var n=0,s=kn(this.Qf,this.tc,this.ac),h=yn(this.Qf,this.tc),r=[s],e=[h];if(n+=h,null!==this.ic){var u=kn(this.tc,this.ic,this.ac);if(Math.sign(u)===Math.sign(s)){var a=yn(this.tc,this.ic);if(r.push(u),e.push(a),n+=a,null!==this.nc){var o=kn(this.ic,this.nc,this.ac);if(Math.sign(o)===Math.sign(s)){var l=yn(this.ic,this.nc);r.push(o),e.push(l),n+=l}}}}for(var f,c,v,_=0,d=0;d-1}function Sn(){return!!Nn&&/iPhone|iPad|iPod/.test(window.navigator.platform)}function Tn(t){Nn&&void 0!==window.chrome&&t.addEventListener("mousedown",(function(t){if(1===t.button)return t.preventDefault(),!1}))}var Dn=function(){function t(t,i,n){var s=this;this.wc=0,this.Mc=null,this.bc={tt:Number.NEGATIVE_INFINITY,it:Number.POSITIVE_INFINITY},this.mc=0,this.gc=null,this.yc={tt:Number.NEGATIVE_INFINITY,it:Number.POSITIVE_INFINITY},this.kc=null,this.xc=!1,this.Nc=null,this.Cc=null,this.Sc=!1,this.Tc=!1,this.Dc=!1,this.Ac=null,this.Bc=null,this.Lc=null,this.Ec=null,this.Oc=null,this.Fc=null,this.Vc=null,this.Pc=0,this.Rc=!1,this.zc=!1,this.Wc=!1,this.Ic=0,this.jc=null,this.qc=!Sn(),this.Uc=function(t){s.Hc(t)},this.Yc=function(t){if(s.$c(t)){var i=s.Kc(t);if(++s.mc,s.gc&&s.mc>1)s.Zc(Ln(t),s.yc).Xc<30&&!s.Dc&&s.Jc(i,s.Qc.Gc),s.tv()}else{i=s.Kc(t);if(++s.wc,s.Mc&&s.wc>1)s.Zc(Ln(t),s.bc).Xc<5&&!s.Tc&&s.iv(i,s.Qc.nv),s.sv()}},this.hv=t,this.Qc=i,this.zi=n,this.rv()}return t.prototype.p=function(){null!==this.Ac&&(this.Ac(),this.Ac=null),null!==this.Bc&&(this.Bc(),this.Bc=null),null!==this.Ec&&(this.Ec(),this.Ec=null),null!==this.Oc&&(this.Oc(),this.Oc=null),null!==this.Fc&&(this.Fc(),this.Fc=null),null!==this.Lc&&(this.Lc(),this.Lc=null),this.ev(),this.sv()},t.prototype.uv=function(t){var i=this;this.Ec&&this.Ec();var n=this.av.bind(this);if(this.Ec=function(){i.hv.removeEventListener("mousemove",n)},this.hv.addEventListener("mousemove",n),!this.$c(t)){var s=this.Kc(t);this.iv(s,this.Qc.ov),this.qc=!0}},t.prototype.sv=function(){null!==this.Mc&&clearTimeout(this.Mc),this.wc=0,this.Mc=null,this.bc={tt:Number.NEGATIVE_INFINITY,it:Number.POSITIVE_INFINITY}},t.prototype.tv=function(){null!==this.gc&&clearTimeout(this.gc),this.mc=0,this.gc=null,this.yc={tt:Number.NEGATIVE_INFINITY,it:Number.POSITIVE_INFINITY}},t.prototype.av=function(t){if(!this.Wc&&null===this.Cc&&!this.$c(t)){var i=this.Kc(t);this.iv(i,this.Qc.lv),this.qc=!0}},t.prototype.fv=function(t){var i=On(t.changedTouches,e(this.jc));if(null!==i&&(this.Ic=En(t),null===this.Vc&&!this.zc)){this.Rc=!0;var n=this.Zc(Ln(i),e(this.Cc)),s=n.cv,h=n.vv,r=n.Xc;if(this.Sc||!(r<5)){if(!this.Sc){var u=.5*s,a=h>=u&&!this.zi._v(),o=u>h&&!this.zi.dv();a||o||(this.zc=!0),this.Sc=!0,this.Dc=!0,this.ev(),this.tv()}if(!this.zc){var l=this.Kc(t,i);this.Jc(l,this.Qc.wv),Bn(t)}}}},t.prototype.Mv=function(t){if(0===t.button&&(this.Zc(Ln(t),e(this.Nc)).Xc>=5&&(this.Tc=!0,this.sv()),this.Tc)){var i=this.Kc(t);this.iv(i,this.Qc.bv)}},t.prototype.Zc=function(t,i){var n=Math.abs(i.tt-t.tt),s=Math.abs(i.it-t.it);return{cv:n,vv:s,Xc:n+s}},t.prototype.mv=function(t){var i=On(t.changedTouches,e(this.jc));if(null===i&&0===t.touches.length&&(i=t.changedTouches[0]),null!==i){this.jc=null,this.Ic=En(t),this.ev(),this.Cc=null,this.Fc&&(this.Fc(),this.Fc=null);var n=this.Kc(t,i);if(this.Jc(n,this.Qc.gv),++this.mc,this.gc&&this.mc>1)this.Zc(Ln(i),this.yc).Xc<30&&!this.Dc&&this.Jc(n,this.Qc.Gc),this.tv();else this.Dc||(this.Jc(n,this.Qc.pv),this.Qc.pv&&Bn(t));0===this.mc&&Bn(t),0===t.touches.length&&this.xc&&(this.xc=!1,Bn(t))}},t.prototype.Hc=function(t){if(0===t.button){var i=this.Kc(t);if(this.Nc=null,this.Wc=!1,this.Oc&&(this.Oc(),this.Oc=null),Cn())this.hv.ownerDocument.documentElement.removeEventListener("mouseleave",this.Uc);if(!this.$c(t))if(this.iv(i,this.Qc.yv),++this.wc,this.Mc&&this.wc>1)this.Zc(Ln(t),this.bc).Xc<5&&!this.Tc&&this.iv(i,this.Qc.nv),this.sv();else this.Tc||this.iv(i,this.Qc.kv)}},t.prototype.ev=function(){null!==this.kc&&(clearTimeout(this.kc),this.kc=null)},t.prototype.xv=function(t){if(null===this.jc){var i=t.changedTouches[0];this.jc=i.identifier,this.Ic=En(t);var n=this.hv.ownerDocument.documentElement;this.Dc=!1,this.Sc=!1,this.zc=!1,this.Cc=Ln(i),this.Fc&&(this.Fc(),this.Fc=null);var s=this.fv.bind(this),h=this.mv.bind(this);this.Fc=function(){n.removeEventListener("touchmove",s),n.removeEventListener("touchend",h)},n.addEventListener("touchmove",s,{passive:!1}),n.addEventListener("touchend",h,{passive:!1}),this.ev(),this.kc=setTimeout(this.Nv.bind(this,t),240);var r=this.Kc(t,i);this.Jc(r,this.Qc.Cv),this.gc||(this.mc=0,this.gc=setTimeout(this.tv.bind(this),500),this.yc=Ln(i))}},t.prototype.Sv=function(t){if(0===t.button){var i=this.hv.ownerDocument.documentElement;Cn()&&i.addEventListener("mouseleave",this.Uc),this.Tc=!1,this.Nc=Ln(t),this.Oc&&(this.Oc(),this.Oc=null);var n=this.Mv.bind(this),s=this.Hc.bind(this);if(this.Oc=function(){i.removeEventListener("mousemove",n),i.removeEventListener("mouseup",s)},i.addEventListener("mousemove",n),i.addEventListener("mouseup",s),this.Wc=!0,!this.$c(t)){var h=this.Kc(t);this.iv(h,this.Qc.Tv),this.Mc||(this.wc=0,this.Mc=setTimeout(this.sv.bind(this),500),this.bc=Ln(t))}}},t.prototype.rv=function(){var t=this;this.hv.addEventListener("mouseenter",this.uv.bind(this)),this.hv.addEventListener("touchcancel",this.ev.bind(this));var i=this.hv.ownerDocument,n=function(i){t.Qc.Dv&&(i.target&&t.hv.contains(i.target)||t.Qc.Dv())};this.Bc=function(){i.removeEventListener("touchstart",n)},this.Ac=function(){i.removeEventListener("mousedown",n)},i.addEventListener("mousedown",n),i.addEventListener("touchstart",n,{passive:!0}),Sn()&&(this.Lc=function(){t.hv.removeEventListener("dblclick",t.Yc)},this.hv.addEventListener("dblclick",this.Yc)),this.hv.addEventListener("mouseleave",this.Av.bind(this)),this.hv.addEventListener("touchstart",this.xv.bind(this),{passive:!0}),Tn(this.hv),this.hv.addEventListener("mousedown",this.Sv.bind(this)),this.Bv(),this.hv.addEventListener("touchmove",(function(){}),{passive:!1})},t.prototype.Bv=function(){var t=this;void 0===this.Qc.Lv&&void 0===this.Qc.Ev&&void 0===this.Qc.Ov||(this.hv.addEventListener("touchstart",(function(i){return t.Fv(i.touches)}),{passive:!0}),this.hv.addEventListener("touchmove",(function(i){if(2===i.touches.length&&null!==t.Vc&&void 0!==t.Qc.Ev){var n=An(i.touches[0],i.touches[1])/t.Pc;t.Qc.Ev(t.Vc,n),Bn(i)}}),{passive:!1}),this.hv.addEventListener("touchend",(function(i){t.Fv(i.touches)})))},t.prototype.Fv=function(t){1===t.length&&(this.Rc=!1),2!==t.length||this.Rc||this.xc?this.Vv():this.Pv(t)},t.prototype.Pv=function(t){var i=this.hv.getBoundingClientRect()||{left:0,top:0};this.Vc={tt:(t[0].clientX-i.left+(t[1].clientX-i.left))/2,it:(t[0].clientY-i.top+(t[1].clientY-i.top))/2},this.Pc=An(t[0],t[1]),void 0!==this.Qc.Lv&&this.Qc.Lv(),this.ev()},t.prototype.Vv=function(){null!==this.Vc&&(this.Vc=null,void 0!==this.Qc.Ov&&this.Qc.Ov())},t.prototype.Av=function(t){if(this.Ec&&this.Ec(),!this.$c(t)&&this.qc){var i=this.Kc(t);this.iv(i,this.Qc.Rv),this.qc=!Sn()}},t.prototype.Nv=function(t){var i=On(t.touches,e(this.jc));if(null!==i){var n=this.Kc(t,i);this.Jc(n,this.Qc.zv),this.Dc=!0,this.xc=!0}},t.prototype.$c=function(t){return t.sourceCapabilities&&void 0!==t.sourceCapabilities.firesTouchEvents?t.sourceCapabilities.firesTouchEvents:En(t)=200){var h=r(this.th.shift());this.h_.delete(h)}var e=bn(t.canvas),u=Math.ceil(this.W/4.5),a=Math.round(this.W/10),o=Math.ceil(this.rh.Qt(t,i)),l=Ct(Math.round(o+2*u)),f=Ct(this.W+2*u),c=gn(document,new Mn(l,f));n={Gt:i,u_:Math.round(Math.max(1,o)),Ht:Math.ceil(l*e),Yt:Math.ceil(f*e),a_:c},0!==o&&(this.th.push(n.Gt),this.h_.set(n.Gt,n)),j(t=mn(n.a_),e,(function(){t.font=s.Yh,t.fillStyle=s.s_,t.fillText(i,0,f-u-a)}))}return n},t}(),Vn=function(){function t(t,i,n,s){var h=this;this._i=null,this.o_=null,this.l_=!1,this.f_=new zt(50),this.c_=new Fn(11,"#000"),this.s_=null,this.Yh=null,this.v_=0,this.__=!1,this.d_=function(){h.w_(h.cf.R()),h.__||h.Di.M_().jt().Rr()},this.b_=function(){h.__||h.Di.M_().jt().Rr()},this.Di=t,this.zi=i,this.cf=n,this.m_="left"===s,this.g_=document.createElement("div"),this.g_.style.height="100%",this.g_.style.overflow="hidden",this.g_.style.width="25px",this.g_.style.left="0",this.g_.style.position="relative",this.p_=pn(this.g_,new Mn(16,16)),this.p_.subscribeCanvasConfigured(this.d_);var r=this.p_.canvas;r.style.position="absolute",r.style.zIndex="1",r.style.left="0",r.style.top="0",this.y_=pn(this.g_,new Mn(16,16)),this.y_.subscribeCanvasConfigured(this.b_);var e=this.y_.canvas;e.style.position="absolute",e.style.zIndex="2",e.style.left="0",e.style.top="0";var u={Tv:this.k_.bind(this),Cv:this.k_.bind(this),bv:this.x_.bind(this),wv:this.x_.bind(this),Dv:this.N_.bind(this),yv:this.C_.bind(this),gv:this.C_.bind(this),nv:this.S_.bind(this),Gc:this.S_.bind(this),ov:this.T_.bind(this),Rv:this.D_.bind(this)};this.A_=new Dn(this.y_.canvas,u,{_v:function(){return!1},dv:function(){return!0}})}return t.prototype.p=function(){this.A_.p(),this.y_.unsubscribeCanvasConfigured(this.b_),this.y_.destroy(),this.p_.unsubscribeCanvasConfigured(this.d_),this.p_.destroy(),null!==this._i&&this._i._a().M(this),this._i=null,this.c_.p()},t.prototype.B_=function(){return this.g_},t.prototype.ht=function(){return e(this._i).R().borderColor},t.prototype.L_=function(){return this.zi.textColor},t.prototype.S=function(){return this.zi.fontSize},t.prototype.E_=function(){return B(this.S(),this.zi.fontFamily)},t.prototype.O_=function(){var t=this.cf.R(),i=this.s_!==t.A,n=this.Yh!==t.T;return(i||n)&&(this.w_(t),this.s_=t.A),n&&(this.f_.ih(),this.Yh=t.T),t},t.prototype.F_=function(){if(null===this._i)return 0;var t=0,i=this.O_(),n=mn(this.p_.canvas),s=this._i.au();n.font=this.E_(),s.length>0&&(t=Math.max(this.f_.Qt(n,s[0].yu),this.f_.Qt(n,s[s.length-1].yu)));for(var h=this.V_(),r=h.length;r--;){var e=this.f_.Qt(n,h[r].Gt());e>t&&(t=e)}var u=this._i.kt();if(null!==u&&null!==this.o_){var a=this._i.qi(1,u),o=this._i.qi(this.o_.Ft-2,u);t=Math.max(t,this.f_.Qt(n,this._i.Mi(Math.floor(Math.min(a,o))+.11111111111111,u)),this.f_.Qt(n,this._i.Mi(Math.ceil(Math.max(a,o))-.11111111111111,u)))}var l=t||34,f=Math.ceil(i.N+i.C+i.L+i.O+l);return f+=f%2},t.prototype.P_=function(t){if(t.Ot<0||t.Ft<0)throw new Error("Try to set invalid size to PriceAxisWidget "+JSON.stringify(t));null!==this.o_&&this.o_.br(t)||(this.o_=t,this.__=!0,this.p_.resizeCanvas({width:t.Ot,height:t.Ft}),this.y_.resizeCanvas({width:t.Ot,height:t.Ft}),this.__=!1,this.g_.style.width=t.Ot+"px",this.g_.style.height=t.Ft+"px",this.g_.style.minWidth=t.Ot+"px")},t.prototype.R_=function(){return e(this.o_).Ot},t.prototype.Si=function(t){this._i!==t&&(null!==this._i&&this._i._a().M(this),this._i=t,t._a().u(this.Eu.bind(this),this))},t.prototype.Ct=function(){return this._i},t.prototype.ih=function(){var t=this.Di.z_();this.Di.M_().jt().no(t,e(this.Ct()))},t.prototype.W_=function(t){if(null!==this.o_){if(1!==t){var i=mn(this.p_.canvas);this.I_(),this.j_(i,this.p_.pixelRatio),this.Ws(i,this.p_.pixelRatio),this.q_(i,this.p_.pixelRatio),this.U_(i,this.p_.pixelRatio)}var n=mn(this.y_.canvas),s=this.o_.Ot,h=this.o_.Ft;j(n,this.y_.pixelRatio,(function(){n.clearRect(0,0,s,h)})),this.H_(n,this.y_.pixelRatio)}},t.prototype.Y_=function(){return this.p_.canvas},t.prototype.vt=function(){var t;null===(t=this._i)||void 0===t||t.au()},t.prototype.k_=function(t){if(null!==this._i&&!this._i.wi()&&this.Di.M_().R().handleScale.axisPressedMouseMove.price){var i=this.Di.M_().jt(),n=this.Di.z_();this.l_=!0,i.Ka(n,this._i,t.$v)}},t.prototype.x_=function(t){if(null!==this._i&&this.Di.M_().R().handleScale.axisPressedMouseMove.price){var i=this.Di.M_().jt(),n=this.Di.z_(),s=this._i;i.Xa(n,s,t.$v)}},t.prototype.N_=function(){if(null!==this._i&&this.Di.M_().R().handleScale.axisPressedMouseMove.price){var t=this.Di.M_().jt(),i=this.Di.z_(),n=this._i;this.l_&&(this.l_=!1,t.Za(i,n))}},t.prototype.C_=function(t){if(null!==this._i&&this.Di.M_().R().handleScale.axisPressedMouseMove.price){var i=this.Di.M_().jt(),n=this.Di.z_();this.l_=!1,i.Za(n,this._i)}},t.prototype.S_=function(t){this.Di.M_().R().handleScale.axisDoubleClickReset&&this.ih()},t.prototype.T_=function(t){null!==this._i&&(!this.Di.M_().jt().R().handleScale.axisPressedMouseMove.price||this._i.vr()||this._i.Zu()||this.K_(1))},t.prototype.D_=function(t){this.K_(0)},t.prototype.V_=function(){var t=this,i=[],n=null===this._i?void 0:this._i;return function(s){for(var h=0;h0&&(t=h[0].ti())}));var u=i.filter((function(i){return i.ti()<=t})),a=i.filter((function(i){return i.ti()>t}));if(u.sort((function(t,i){return i.ti()-t.ti()})),u.length&&a.length&&a.push(u[0]),a.sort((function(t,i){return t.ti()-i.ti()})),i.forEach((function(t){return t.oi(t.ti())})),this._i.R().alignLabels){for(var o=1;o(_=v.ai())-f&&l.oi(_-f)}for(var c=1;c1&&this.Ed(),null!==this.X_&&this.X_.W_(t),null!==this.Z_&&this.Z_.W_(t),1!==t){var i=mn(this.p_.canvas);i.save(),this.j_(i,this.p_.pixelRatio),this.ud&&(this.Od(i,this.p_.pixelRatio),this.Fd(i,this.p_.pixelRatio),this.Vd(i,this.p_.pixelRatio,zn)),i.restore()}var n=mn(this.y_.canvas);n.clearRect(0,0,Math.ceil(this.o_.Ot*this.y_.pixelRatio),Math.ceil(this.o_.Ft*this.y_.pixelRatio)),this.Vd(n,this.p_.pixelRatio,Wn),this.Pd(n,this.y_.pixelRatio)}},t.prototype.Rd=function(){return this.X_},t.prototype.zd=function(){return this.Z_},t.prototype.od=function(){null!==this.ud&&this.ud.ro().M(this),this.ud=null},t.prototype.j_=function(t,i){var n=this;j(t,i,(function(){var i=n.gi(),s=i.Zf(),h=i.Xf();s===h?q(t,0,0,n.o_.Ot,n.o_.Ft,h):U(t,0,0,n.o_.Ot,n.o_.Ft,s,h)}))},t.prototype.Od=function(t,i){var n=e(this.ud),s=n.eo().ou().dt(n.Yt(),n.Ht());null!==s&&(t.save(),s.H(t,i,!1),t.restore())},t.prototype.Fd=function(t,i){var n=this.gi().Sf();this.Wd(t,i,zn,Pn,n),this.Wd(t,i,zn,Rn,n)},t.prototype.Pd=function(t,i){this.Wd(t,i,zn,Rn,this.gi().Tf())},t.prototype.Vd=function(t,i,n){for(var s=e(this.ud).oa(),h=0,r=s;hi.Po?t:i}var Un=function(){function t(t){var i=this;this.$d=null,this.Kd=null,this.k=null,this.Xd=!1,this.o_=new Mn(0,0),this.Zd=new p,this.f_=new zt(5),this.__=!1,this.d_=function(){i.__||i.ad.jt().Rr()},this.b_=function(){i.__||i.ad.jt().Rr()},this.ad=t,this.zi=t.R().layout,this.Jd=document.createElement("tr"),this.Gd=document.createElement("td"),this.Gd.style.padding="0",this.Qd=document.createElement("td"),this.Qd.style.padding="0",this.g_=document.createElement("td"),this.g_.style.height="25px",this.g_.style.padding="0",this.tw=document.createElement("div"),this.tw.style.width="100%",this.tw.style.height="100%",this.tw.style.position="relative",this.tw.style.overflow="hidden",this.g_.appendChild(this.tw),this.p_=pn(this.tw,new Mn(16,16)),this.p_.subscribeCanvasConfigured(this.d_);var n=this.p_.canvas;n.style.position="absolute",n.style.zIndex="1",n.style.left="0",n.style.top="0",this.y_=pn(this.tw,new Mn(16,16)),this.y_.subscribeCanvasConfigured(this.b_);var s=this.y_.canvas;s.style.position="absolute",s.style.zIndex="2",s.style.left="0",s.style.top="0",this.Jd.appendChild(this.Gd),this.Jd.appendChild(this.g_),this.Jd.appendChild(this.Qd),this.iw(),this.ad.jt().Pa().u(this.iw.bind(this),this),this.A_=new Dn(this.y_.canvas,this,{_v:function(){return!0},dv:function(){return!1}})}return t.prototype.p=function(){this.A_.p(),null!==this.$d&&this.$d.p(),null!==this.Kd&&this.Kd.p(),this.y_.unsubscribeCanvasConfigured(this.b_),this.y_.destroy(),this.p_.unsubscribeCanvasConfigured(this.d_),this.p_.destroy()},t.prototype.B_=function(){return this.Jd},t.prototype.nw=function(){return this.$d},t.prototype.sw=function(){return this.Kd},t.prototype.Tv=function(t){if(!this.Xd){this.Xd=!0;var i=this.ad.jt();!i.bt().wi()&&this.ad.R().handleScale.axisPressedMouseMove.time&&i.Lf(t.Yv)}},t.prototype.Cv=function(t){this.Tv(t)},t.prototype.Dv=function(){var t=this.ad.jt();!t.bt().wi()&&this.Xd&&(this.Xd=!1,this.ad.R().handleScale.axisPressedMouseMove.time&&t.zf())},t.prototype.bv=function(t){var i=this.ad.jt();!i.bt().wi()&&this.ad.R().handleScale.axisPressedMouseMove.time&&i.Rf(t.Yv)},t.prototype.wv=function(t){this.bv(t)},t.prototype.yv=function(){this.Xd=!1;var t=this.ad.jt();t.bt().wi()&&!this.ad.R().handleScale.axisPressedMouseMove.time||t.zf()},t.prototype.gv=function(){this.yv()},t.prototype.nv=function(){this.ad.R().handleScale.axisDoubleClickReset&&this.ad.jt().gn()},t.prototype.Gc=function(){this.nv()},t.prototype.ov=function(){this.ad.jt().R().handleScale.axisPressedMouseMove.time&&this.K_(1)},t.prototype.Rv=function(){this.K_(0)},t.prototype.Ld=function(){return this.o_},t.prototype.hw=function(){return this.Zd},t.prototype.rw=function(t,i,n){this.o_&&this.o_.br(t)||(this.o_=t,this.__=!0,this.p_.resizeCanvas({width:t.Ot,height:t.Ft}),this.y_.resizeCanvas({width:t.Ot,height:t.Ft}),this.__=!1,this.g_.style.width=t.Ot+"px",this.g_.style.height=t.Ft+"px",this.Zd.m(t)),null!==this.$d&&this.$d.P_(new Mn(i,t.Ft)),null!==this.Kd&&this.Kd.P_(new Mn(n,t.Ft))},t.prototype.ew=function(){var t=this.uw();return Math.ceil(t.N+t.C+t.S+t.F+t.B)},t.prototype.vt=function(){this.ad.jt().bt().au()},t.prototype.Y_=function(){return this.p_.canvas},t.prototype.W_=function(t){if(0!==t){if(1!==t){var i=mn(this.p_.canvas);this.j_(i,this.p_.pixelRatio),this.Ws(i,this.p_.pixelRatio),this.q_(i,this.p_.pixelRatio),null!==this.$d&&this.$d.W_(t),null!==this.Kd&&this.Kd.W_(t)}var n=mn(this.y_.canvas),s=this.y_.pixelRatio;n.clearRect(0,0,Math.ceil(this.o_.Ot*s),Math.ceil(this.o_.Ft*s)),this.aw([this.ad.jt().Tf()],n,s)}},t.prototype.j_=function(t,i){var n=this;j(t,i,(function(){q(t,0,0,n.o_.Ot,n.o_.Ft,n.ad.jt().Xf())}))},t.prototype.Ws=function(t,i){if(this.ad.R().timeScale.borderVisible){t.save(),t.fillStyle=this.ow();var n=Math.max(1,Math.floor(this.uw().N*i));t.fillRect(0,0,Math.ceil(this.o_.Ot*i),n),t.restore()}},t.prototype.q_=function(t,i){var n=this,s=this.ad.jt().bt().au();if(s&&0!==s.length){var h=s.reduce(qn,s[0]).Po;h>30&&h<50&&(h=30),t.save(),t.strokeStyle=this.ow();var r=this.uw(),e=r.N+r.C+r.F+r.S-r.V;t.textAlign="center",t.fillStyle=this.ow();var u=Math.floor(this.uw().N*i),a=Math.max(1,Math.floor(i)),o=Math.floor(.5*i);if(this.ad.jt().bt().R().borderVisible){t.beginPath();for(var l=Math.round(r.C*i),f=s.length;f--;){var c=Math.round(s[f].su*i);t.rect(c-o,u,a,l)}t.fill()}t.fillStyle=this.j(),j(t,i,(function(){t.font=n.lw();for(var i=0,r=s;i=h){u=l.Sl?n.fw(t,l.su,l.yu):l.su;t.fillText(l.yu,u,e)}}})),t.restore()}},t.prototype.fw=function(t,i,n){var s=this.f_.Qt(t,n),h=s/2,r=Math.floor(i-h)+.5;return r<0?i+=Math.abs(0-r):r+s>this.o_.Ot&&(i-=Math.abs(this.o_.Ot-(r+s))),i},t.prototype.aw=function(t,i,n){for(var s=this.uw(),h=0,r=t;h=0;--n)if(Math.floor(i.getTime()/is[n].Hw)!==Math.floor(t.getTime()/is[n].Hw))return is[n].Po;return 0}function ss(t,i){if(void 0===i&&(i=0),0!==t.length){for(var n=0===i?null:t[i-1].rt.So,s=null!==n?new Date(1e3*n):null,h=0,r=i;r1){var a=Math.ceil(h/(t.length-1)),o=new Date(1e3*(t[0].rt.So-a));t[0].Vo=ns(new Date(1e3*t[0].rt.So),o)}}}function hs(t){if(!vn(t))throw new Error("time must be of type BusinessDay");var i=new Date(Date.UTC(t.year,t.month-1,t.day,0,0,0,0));return{So:Math.round(i.getTime()/1e3),Co:t}}function rs(t){if(!_n(t))throw new Error("time must be of type isUTCTimestamp");return{So:t}}function es(t){return 0===t.length?null:vn(t[0].time)?hs:rs}function us(t){return _n(t)?rs(t):vn(t)?hs(t):hs(as(t))}function as(t){var i=new Date(t);if(isNaN(i.getTime()))throw new Error("Invalid date string=".concat(t,", expected format=yyyy-mm-dd"));return{day:i.getUTCDate(),month:i.getUTCMonth()+1,year:i.getUTCFullYear()}}function os(t){N(t.time)&&(t.time=as(t.time))}function ls(t){return{vs:0,Yw:new Map,Ve:t}}function fs(t){if(void 0!==t&&0!==t.length)return{$w:t[0].rt.So,Kw:t[t.length-1].rt.So}}var cs=function(){function t(){this.Xw=new Map,this.Zw=new Map,this.Jw=new Map,this.Gw=[]}return t.prototype.p=function(){this.Xw.clear(),this.Zw.clear(),this.Jw.clear(),this.Gw=[]},t.prototype.Qw=function(t,i){var n=this,s=0!==this.Xw.size,h=!1,r=this.Zw.get(t);if(void 0!==r)if(1===this.Zw.size)s=!1,h=!0,this.Xw.clear();else for(var u=0,a=this.Gw;u=s.Kw&&n.$w>=s.$w}}(this.Zw.get(t),r))},t.prototype.Yf=function(t){return this.Qw(t,[])},t.prototype.hM=function(t,i){os(i);var n=e(es([i]))(i.time),s=this.Jw.get(t);if(void 0!==s&&n.Soh.vs)return{barsBefore:t.from-r,barsAfter:u-t.to};var a={barsBefore:null===s||s.vs===r?t.from-r:s.vs-r,barsAfter:null===h||h.vs===u?u-t.to:u-h.vs};return null!==s&&null!==h&&(a.from=s.rt.Co||s.rt.So,a.to=h.rt.Co||h.rt.So),a},t.prototype.setData=function(t){this.Kn.Wr(),this.cM._M(this.Kn,t)},t.prototype.update=function(t){this.Kn.Wr(),this.cM.dM(this.Kn,t)},t.prototype.setMarkers=function(t){var i=t.map((function(t){return m(m({},t),{time:us(t.time)})}));this.Kn.Le(i)},t.prototype.applyOptions=function(t){var i=ws(t);this.Kn.Pr(i)},t.prototype.options=function(){return S(this.Kn.R())},t.prototype.priceScale=function(){return this.vM.priceScale(this.Kn.Ct().Ke())},t.prototype.createPriceLine=function(t){var i=y(S(_s),t),n=this.Kn.Ee(i);return new ds(n)},t.prototype.removePriceLine=function(t){this.Kn.Oe(t.fM())},t.prototype.seriesType=function(){return this.Kn.Wr()},t}(),bs=function(t){function i(){return null!==t&&t.apply(this,arguments)||this}return b(i,t),i.prototype.applyOptions=function(i){cn(i),t.prototype.applyOptions.call(this,i)},i}(Ms),ms={autoScale:!0,mode:0,invertScale:!1,alignLabels:!0,borderVisible:!0,borderColor:"#2B2B43",entireTextOnly:!1,visible:!1,drawTicks:!0,scaleMargins:{bottom:.1,top:.2}},gs={color:"rgba(0, 0, 0, 0)",visible:!1,fontSize:48,fontFamily:A,fontStyle:"",text:"",horzAlign:"center",vertAlign:"center"},ps={width:0,height:0,layout:{background:{type:"solid",color:"#FFFFFF"},textColor:"#191919",fontSize:11,fontFamily:A},crosshair:{vertLine:{color:"#758696",width:1,style:3,visible:!0,labelVisible:!0,labelBackgroundColor:"#4c525e"},horzLine:{color:"#758696",width:1,style:3,visible:!0,labelVisible:!0,labelBackgroundColor:"#4c525e"},mode:1},grid:{vertLines:{color:"#D6DCDE",style:0,visible:!0},horzLines:{color:"#D6DCDE",style:0,visible:!0}},overlayPriceScales:m({},ms),leftPriceScale:m(m({},ms),{visible:!1}),rightPriceScale:m(m({},ms),{visible:!0}),timeScale:{rightOffset:0,barSpacing:6,minBarSpacing:.5,fixLeftEdge:!1,fixRightEdge:!1,lockVisibleTimeRangeOnResize:!1,rightBarStaysOnScroll:!1,borderVisible:!0,borderColor:"#2B2B43",visible:!0,timeVisible:!1,secondsVisible:!0,shiftVisibleRangeOnNewBar:!0},watermark:gs,localization:{locale:Nn?navigator.language:"",dateFormat:"dd MMM 'yy"},handleScroll:{mouseWheel:!0,pressedMouseMove:!0,horzTouchDrag:!0,vertTouchDrag:!0},handleScale:{axisPressedMouseMove:{time:!0,price:!0},axisDoubleClickReset:!0,mouseWheel:!0,pinch:!0},kineticScroll:{mouse:!1,touch:!0},trackingMode:{exitMode:1}},ys={upColor:"#26a69a",downColor:"#ef5350",wickVisible:!0,borderVisible:!0,borderColor:"#378658",borderUpColor:"#26a69a",borderDownColor:"#ef5350",wickColor:"#737375",wickUpColor:"#26a69a",wickDownColor:"#ef5350"},ks={upColor:"#26a69a",downColor:"#ef5350",openVisible:!0,thinBars:!0},xs={color:"#2196f3",lineStyle:0,lineWidth:3,lineType:0,crosshairMarkerVisible:!0,crosshairMarkerRadius:4,crosshairMarkerBorderColor:"",crosshairMarkerBackgroundColor:"",lastPriceAnimation:0},Ns={topColor:"rgba( 46, 220, 135, 0.4)",bottomColor:"rgba( 40, 221, 100, 0)",lineColor:"#33D778",lineStyle:0,lineWidth:3,lineType:0,crosshairMarkerVisible:!0,crosshairMarkerRadius:4,crosshairMarkerBorderColor:"",crosshairMarkerBackgroundColor:"",lastPriceAnimation:0},Cs={baseValue:{type:"price",price:0},topFillColor1:"rgba(38, 166, 154, 0.28)",topFillColor2:"rgba(38, 166, 154, 0.05)",topLineColor:"rgba(38, 166, 154, 1)",bottomFillColor1:"rgba(239, 83, 80, 0.05)",bottomFillColor2:"rgba(239, 83, 80, 0.28)",bottomLineColor:"rgba(239, 83, 80, 1)",lineWidth:3,lineStyle:0,crosshairMarkerVisible:!0,crosshairMarkerRadius:4,crosshairMarkerBorderColor:"",crosshairMarkerBackgroundColor:"",lastPriceAnimation:0},Ss={color:"#26a69a",base:0},Ts={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}},Ds=function(){function t(t,i){this.wM=t,this.MM=i}return t.prototype.applyOptions=function(t){this.wM.jt().xf(this.MM,t)},t.prototype.options=function(){return this._i().R()},t.prototype.width=function(){return tt(this.MM)?this.wM.Ow("left"===this.MM?"left":"right"):0},t.prototype._i=function(){return e(this.wM.jt().Nf(this.MM)).Ct},t}(),As=function(){function t(t,i){this.bM=new p,this.Go=new p,this.Zd=new p,this.gi=t,this.Da=t.bt(),this.xw=i,this.Da.Fl().u(this.mM.bind(this)),this.Da.Vl().u(this.gM.bind(this)),this.xw.hw().u(this.pM.bind(this))}return t.prototype.p=function(){this.Da.Fl().M(this),this.Da.Vl().M(this),this.xw.hw().M(this),this.bM.p(),this.Go.p(),this.Zd.p()},t.prototype.scrollPosition=function(){return this.Da.xl()},t.prototype.scrollToPosition=function(t,i){i?this.Da.Ol(t,1e3):this.gi.yn(t)},t.prototype.scrollToRealTime=function(){this.Da.El()},t.prototype.getVisibleRange=function(){var t,i,n=this.Da.cl();return null===n?null:{from:null!==(t=n.from.Co)&&void 0!==t?t:n.from.So,to:null!==(i=n.to.Co)&&void 0!==i?i:n.to.So}},t.prototype.setVisibleRange=function(t){var i={from:us(t.from),to:us(t.to)},n=this.Da.wl(i);this.gi.$f(n)},t.prototype.getVisibleLogicalRange=function(){var t=this.Da.fl();return null===t?null:{from:t.In(),to:t.jn()}},t.prototype.setVisibleLogicalRange=function(t){h(t.from<=t.to,"The from index cannot be after the to index."),this.gi.$f(t)},t.prototype.resetTimeScale=function(){this.gi.gn()},t.prototype.fitContent=function(){this.gi.zl()},t.prototype.logicalToCoordinate=function(t){var i=this.gi.bt();return i.wi()?null:i.At(t)},t.prototype.coordinateToLogical=function(t){return this.Da.wi()?null:this.Da.gl(t)},t.prototype.timeToCoordinate=function(t){var i=us(t),n=this.Da.Ze(i,!1);return null===n?null:this.Da.At(n)},t.prototype.coordinateToTime=function(t){var i,n=this.gi.bt(),s=n.gl(t),h=n.pi(s);return null===h?null:null!==(i=h.Co)&&void 0!==i?i:h.So},t.prototype.width=function(){return this.xw.Ld().Ot},t.prototype.height=function(){return this.xw.Ld().Ft},t.prototype.subscribeVisibleTimeRangeChange=function(t){this.bM.u(t)},t.prototype.unsubscribeVisibleTimeRangeChange=function(t){this.bM._(t)},t.prototype.subscribeVisibleLogicalRangeChange=function(t){this.Go.u(t)},t.prototype.unsubscribeVisibleLogicalRangeChange=function(t){this.Go._(t)},t.prototype.subscribeSizeChange=function(t){this.Zd.u(t)},t.prototype.unsubscribeSizeChange=function(t){this.Zd._(t)},t.prototype.applyOptions=function(t){this.Da.Pr(t)},t.prototype.options=function(){return S(this.Da.R())},t.prototype.mM=function(){this.bM.g()&&this.bM.m(this.getVisibleRange())},t.prototype.gM=function(){this.Go.g()&&this.Go.m(this.getVisibleLogicalRange())},t.prototype.pM=function(t){this.Zd.m(t.Ot,t.Ft)},t}();function Bs(t){if(void 0!==t&&"custom"!==t.type){var i=t;void 0!==i.minMove&&void 0===i.precision&&(i.precision=function(t){if(t>=1)return 0;for(var i=0;i<8;i++){var n=Math.round(t);if(Math.abs(n-t)<1e-8)return i;t*=10}return i}(i.minMove))}}function Ls(t){return function(t){if(C(t.handleScale)){var i=t.handleScale;t.handleScale={axisDoubleClickReset:i,axisPressedMouseMove:{time:i,price:i},mouseWheel:i,pinch:i}}else if(void 0!==t.handleScale&&C(t.handleScale.axisPressedMouseMove)){var n=t.handleScale.axisPressedMouseMove;t.handleScale.axisPressedMouseMove={time:n,price:n}}var s=t.handleScroll;C(s)&&(t.handleScroll={horzTouchDrag:s,vertTouchDrag:s,mouseWheel:s,pressedMouseMove:s})}(t),function(t){if(t.priceScale){t.leftPriceScale=t.leftPriceScale||{},t.rightPriceScale=t.rightPriceScale||{};var i=t.priceScale.position;delete t.priceScale.position,t.leftPriceScale=y(t.leftPriceScale,t.priceScale),t.rightPriceScale=y(t.rightPriceScale,t.priceScale),"left"===i&&(t.leftPriceScale.visible=!0,t.rightPriceScale.visible=!1),"right"===i&&(t.leftPriceScale.visible=!1,t.rightPriceScale.visible=!0),"none"===i&&(t.leftPriceScale.visible=!1,t.rightPriceScale.visible=!1),t.overlayPriceScales=t.overlayPriceScales||{},void 0!==t.priceScale.invertScale&&(t.overlayPriceScales.invertScale=t.priceScale.invertScale),void 0!==t.priceScale.scaleMargins&&(t.overlayPriceScales.scaleMargins=t.priceScale.scaleMargins)}}(t),function(t){t.layout&&t.layout.backgroundColor&&!t.layout.background&&(t.layout.background={type:"solid",color:t.layout.backgroundColor})}(t),t}var Es=function(){function t(t,i){var n=this;this.yM=new cs,this.kM=new Map,this.xM=new Map,this.NM=new p,this.CM=new p;var s=void 0===i?S(ps):y(S(ps),Ls(i));this.wM=new Hn(t,s),this.wM.Sd().u((function(t){n.NM.g()&&n.NM.m(n.SM(t()))}),this),this.wM.Df().u((function(t){n.CM.g()&&n.CM.m(n.SM(t()))}),this);var h=this.wM.jt();this.TM=new As(h,this.wM.Dw())}return t.prototype.remove=function(){this.wM.Sd().M(this),this.wM.Df().M(this),this.TM.p(),this.wM.p(),this.kM.clear(),this.xM.clear(),this.NM.p(),this.CM.p(),this.yM.p()},t.prototype.resize=function(t,i,n){this.wM.Nw(t,i,n)},t.prototype.addAreaSeries=function(t){void 0===t&&(t={}),Bs((t=ws(t)).priceFormat);var i=y(S(Ts),Ns,t),n=this.wM.jt().Uf("Area",i),s=new Ms(n,this,this);return this.kM.set(s,n),this.xM.set(n,s),s},t.prototype.addBaselineSeries=function(t){void 0===t&&(t={}),Bs((t=ws(t)).priceFormat);var i=y(S(Ts),S(Cs),t),n=this.wM.jt().Uf("Baseline",i),s=new Ms(n,this,this);return this.kM.set(s,n),this.xM.set(n,s),s},t.prototype.addBarSeries=function(t){void 0===t&&(t={}),Bs((t=ws(t)).priceFormat);var i=y(S(Ts),ks,t),n=this.wM.jt().Uf("Bar",i),s=new Ms(n,this,this);return this.kM.set(s,n),this.xM.set(n,s),s},t.prototype.addCandlestickSeries=function(t){void 0===t&&(t={}),cn(t=ws(t)),Bs(t.priceFormat);var i=y(S(Ts),ys,t),n=this.wM.jt().Uf("Candlestick",i),s=new bs(n,this,this);return this.kM.set(s,n),this.xM.set(n,s),s},t.prototype.addHistogramSeries=function(t){void 0===t&&(t={}),Bs((t=ws(t)).priceFormat);var i=y(S(Ts),Ss,t),n=this.wM.jt().Uf("Histogram",i),s=new Ms(n,this,this);return this.kM.set(s,n),this.xM.set(n,s),s},t.prototype.addLineSeries=function(t){void 0===t&&(t={}),Bs((t=ws(t)).priceFormat);var i=y(S(Ts),xs,t),n=this.wM.jt().Uf("Line",i),s=new Ms(n,this,this);return this.kM.set(s,n),this.xM.set(n,s),s},t.prototype.removeSeries=function(t){var i=r(this.kM.get(t)),n=this.yM.Yf(i);this.wM.jt().Yf(i),this.DM(n),this.kM.delete(t),this.xM.delete(i)},t.prototype._M=function(t,i){this.DM(this.yM.Qw(t,i))},t.prototype.dM=function(t,i){this.DM(this.yM.hM(t,i))},t.prototype.subscribeClick=function(t){this.NM.u(t)},t.prototype.unsubscribeClick=function(t){this.NM._(t)},t.prototype.subscribeCrosshairMove=function(t){this.CM.u(t)},t.prototype.unsubscribeCrosshairMove=function(t){this.CM._(t)},t.prototype.priceScale=function(t){return void 0===t&&(t=this.wM.jt().Kf()),new Ds(this.wM,t)},t.prototype.timeScale=function(){return this.TM},t.prototype.applyOptions=function(t){this.wM.Pr(Ls(t))},t.prototype.options=function(){return this.wM.R()},t.prototype.takeScreenshot=function(){return this.wM.Bw()},t.prototype.DM=function(t){var i=this.wM.jt();i.jf(t.bt.ml,t.bt.oM,t.bt.lM),t.uM.forEach((function(t,i){return i.Z(t.gh,t.aM)})),i.yl()},t.prototype.AM=function(t){return r(this.xM.get(t))},t.prototype.SM=function(t){var i=this,n=new Map;t.qw.forEach((function(t,s){n.set(i.AM(s),t)}));var s=void 0===t.jw?void 0:this.AM(t.jw);return{time:t.rt&&(t.rt.Co||t.rt.So),point:t.Iw,hoveredSeries:s,hoveredMarkerId:t.Uw,seriesPrices:n}},t}();var Os=Object.freeze({__proto__:null,version:function(){return"3.8.0"},get LineStyle(){return i},get LineType(){return t},get TrackingModeExitMode(){return hn},get CrosshairMode(){return H},get PriceScaleMode(){return Vi},get PriceLineSource(){return on},get LastPriceAnimationMode(){return an},get LasPriceAnimationMode(){return an},get TickMarkType(){return Qi},get ColorType(){return ln},isBusinessDay:vn,isUTCTimestamp:_n,createChart:function(t,i){var n;if(N(t)){var s=document.getElementById(t);h(null!==s,"Cannot find element in DOM with id=".concat(t)),n=s}else n=t;return new Es(n,i)}});window.LightweightCharts=Os}(); diff --git a/Sources/LightweightCharts/LightweightChartsModels/Options/ChartOptions/ChartOptions.swift b/Sources/LightweightCharts/LightweightChartsModels/Options/ChartOptions/ChartOptions.swift index c4b3ee1..8a99faf 100644 --- a/Sources/LightweightCharts/LightweightChartsModels/Options/ChartOptions/ChartOptions.swift +++ b/Sources/LightweightCharts/LightweightChartsModels/Options/ChartOptions/ChartOptions.swift @@ -74,6 +74,11 @@ public struct ChartOptions: Codable { Structure that describes kinetic scroll behavior */ public var kineticScroll: KineticScrollOptions? + + /** + Represent options for the tracking mode's behavior. + */ + public var trackingMode: TrackingModeOptions? public init(width: Double? = nil, height: Double? = nil, @@ -88,7 +93,8 @@ public struct ChartOptions: Codable { localization: LocalizationOptions? = nil, handleScroll: HandleScrollOptions? = nil, handleScale: TogglableOptions? = nil, - kineticScroll: KineticScrollOptions? = nil) { + kineticScroll: KineticScrollOptions? = nil, + trackingMode: TrackingModeOptions? = nil) { self.width = width self.height = height self.watermark = watermark @@ -103,6 +109,7 @@ public struct ChartOptions: Codable { self.handleScroll = handleScroll self.handleScale = handleScale self.kineticScroll = kineticScroll + self.trackingMode = trackingMode } } diff --git a/Sources/LightweightCharts/LightweightChartsModels/Options/ChartOptions/TrackingModeOptions.swift b/Sources/LightweightCharts/LightweightChartsModels/Options/ChartOptions/TrackingModeOptions.swift new file mode 100644 index 0000000..53e95db --- /dev/null +++ b/Sources/LightweightCharts/LightweightChartsModels/Options/ChartOptions/TrackingModeOptions.swift @@ -0,0 +1,29 @@ +import Foundation + +/** + * Represent options for the tracking mode's behavior. + */ +public struct TrackingModeOptions: Codable { + public var exitMode: TrackingModeExitMode? + + public init(exitMode: TrackingModeExitMode? = nil) { + self.exitMode = exitMode + } +} + +/** + * Determine how to exit the tracking mode. + * + * By default, mobile users will long press to deactivate the scroll and have the ability to check values and dates. + * Another press is required to activate the scroll, be able to move left/right, zoom, etc. + */ +public enum TrackingModeExitMode: Int, Codable { + /** + * Tracking Mode will be deactivated on touch end event. + */ + case onTouchEnd + /** + * Tracking Mode will be deactivated on the next tap event. + */ + case onNextTap +} From 54b1c5b9cd12d231a0f5e7c35f959713650ac3bd Mon Sep 17 00:00:00 2001 From: Alexandr Nevyantsev Date: Tue, 15 Mar 2022 15:38:10 +0300 Subject: [PATCH 2/6] Custom colors for bar data and candlestick data --- .../CandlestickChartViewController.swift | 298 ++++++++--------- .../RealtimeEmulationViewController.swift | 304 +++++++++--------- .../API/Series/CandlestickSeries.swift | 2 +- .../Data/SeriesData/BarData.swift | 15 +- .../Data/SeriesData/CandlestickData.swift | 37 +++ .../Data/SeriesData/HistogramData.swift | 5 + .../Data/SeriesData/LineData.swift | 12 +- .../Data/SeriesData/OhlcData.swift | 32 ++ .../Data/SeriesData/SeriesData.swift | 3 + .../Data/SeriesData/SingleValueData.swift | 12 + 10 files changed, 402 insertions(+), 318 deletions(-) create mode 100644 Sources/LightweightCharts/LightweightChartsModels/Data/SeriesData/CandlestickData.swift create mode 100644 Sources/LightweightCharts/LightweightChartsModels/Data/SeriesData/OhlcData.swift create mode 100644 Sources/LightweightCharts/LightweightChartsModels/Data/SeriesData/SingleValueData.swift diff --git a/Example/LightweightCharts/Example/CandlestickChartViewController.swift b/Example/LightweightCharts/Example/CandlestickChartViewController.swift index 915acd4..11e9f48 100644 --- a/Example/LightweightCharts/Example/CandlestickChartViewController.swift +++ b/Example/LightweightCharts/Example/CandlestickChartViewController.swift @@ -61,155 +61,155 @@ class CandlestickChartViewController: UIViewController { ) let series = chart.addCandlestickSeries(options: options) let data = [ - BarData(time: .string("2018-10-19"), open: 180.34, high: 180.99, low: 178.57, close: 179.85), - BarData(time: .string("2018-10-22"), open: 180.82, high: 181.40, low: 177.56, close: 178.75), - BarData(time: .string("2018-10-23"), open: 175.77, high: 179.49, low: 175.44, close: 178.53), - BarData(time: .string("2018-10-24"), open: 178.58, high: 182.37, low: 176.31, close: 176.97), - BarData(time: .string("2018-10-25"), open: 177.52, high: 180.50, low: 176.83, close: 179.07), - BarData(time: .string("2018-10-26"), open: 176.88, high: 177.34, low: 170.91, close: 172.23), - BarData(time: .string("2018-10-29"), open: 173.74, high: 175.99, low: 170.95, close: 173.20), - BarData(time: .string("2018-10-30"), open: 173.16, high: 176.43, low: 172.64, close: 176.24), - BarData(time: .string("2018-10-31"), open: 177.98, high: 178.85, low: 175.59, close: 175.88), - BarData(time: .string("2018-11-01"), open: 176.84, high: 180.86, low: 175.90, close: 180.46), - BarData(time: .string("2018-11-02"), open: 182.47, high: 183.01, low: 177.39, close: 179.93), - BarData(time: .string("2018-11-05"), open: 181.02, high: 182.41, low: 179.30, close: 182.19), - BarData(time: .string("2018-11-06"), open: 181.93, high: 182.65, low: 180.05, close: 182.01), - BarData(time: .string("2018-11-07"), open: 183.79, high: 187.68, low: 182.06, close: 187.23), - BarData(time: .string("2018-11-08"), open: 187.13, high: 188.69, low: 185.72, close: 188.00), - BarData(time: .string("2018-11-09"), open: 188.32, high: 188.48, low: 184.96, close: 185.99), - BarData(time: .string("2018-11-12"), open: 185.23, high: 186.95, low: 179.02, close: 179.43), - BarData(time: .string("2018-11-13"), open: 177.30, high: 181.62, low: 172.85, close: 179.00), - BarData(time: .string("2018-11-14"), open: 182.61, high: 182.90, low: 179.15, close: 179.90), - BarData(time: .string("2018-11-15"), open: 179.01, high: 179.67, low: 173.61, close: 177.36), - BarData(time: .string("2018-11-16"), open: 173.99, high: 177.60, low: 173.51, close: 177.02), - BarData(time: .string("2018-11-19"), open: 176.71, high: 178.88, low: 172.30, close: 173.59), - BarData(time: .string("2018-11-20"), open: 169.25, high: 172.00, low: 167.00, close: 169.05), - BarData(time: .string("2018-11-21"), open: 170.00, high: 170.93, low: 169.15, close: 169.30), - BarData(time: .string("2018-11-23"), open: 169.39, high: 170.33, low: 168.47, close: 168.85), - BarData(time: .string("2018-11-26"), open: 170.20, high: 172.39, low: 168.87, close: 169.82), - BarData(time: .string("2018-11-27"), open: 169.11, high: 173.38, low: 168.82, close: 173.22), - BarData(time: .string("2018-11-28"), open: 172.91, high: 177.65, low: 170.62, close: 177.43), - BarData(time: .string("2018-11-29"), open: 176.80, high: 177.27, low: 174.92, close: 175.66), - BarData(time: .string("2018-11-30"), open: 175.75, high: 180.37, low: 175.11, close: 180.32), - BarData(time: .string("2018-12-03"), open: 183.29, high: 183.50, low: 179.35, close: 181.74), - BarData(time: .string("2018-12-04"), open: 181.06, high: 182.23, low: 174.55, close: 175.30), - BarData(time: .string("2018-12-06"), open: 173.50, high: 176.04, low: 170.46, close: 175.96), - BarData(time: .string("2018-12-07"), open: 175.35, high: 178.36, low: 172.24, close: 172.79), - BarData(time: .string("2018-12-10"), open: 173.39, high: 173.99, low: 167.73, close: 171.69), - BarData(time: .string("2018-12-11"), open: 174.30, high: 175.60, low: 171.24, close: 172.21), - BarData(time: .string("2018-12-12"), open: 173.75, high: 176.87, low: 172.81, close: 174.21), - BarData(time: .string("2018-12-13"), open: 174.31, high: 174.91, low: 172.07, close: 173.87), - BarData(time: .string("2018-12-14"), open: 172.98, high: 175.14, low: 171.95, close: 172.29), - BarData(time: .string("2018-12-17"), open: 171.51, high: 171.99, low: 166.93, close: 167.97), - BarData(time: .string("2018-12-18"), open: 168.90, high: 171.95, low: 168.50, close: 170.04), - BarData(time: .string("2018-12-19"), open: 170.92, high: 174.95, low: 166.77, close: 167.56), - BarData(time: .string("2018-12-20"), open: 166.28, high: 167.31, low: 162.23, close: 164.16), - BarData(time: .string("2018-12-21"), open: 162.81, high: 167.96, low: 160.17, close: 160.48), - BarData(time: .string("2018-12-24"), open: 160.16, high: 161.40, low: 158.09, close: 158.14), - BarData(time: .string("2018-12-26"), open: 159.46, high: 168.28, low: 159.44, close: 168.28), - BarData(time: .string("2018-12-27"), open: 166.44, high: 170.46, low: 163.36, close: 170.32), - BarData(time: .string("2018-12-28"), open: 171.22, high: 173.12, low: 168.60, close: 170.22), - BarData(time: .string("2018-12-31"), open: 171.47, high: 173.24, low: 170.65, close: 171.82), - BarData(time: .string("2019-01-02"), open: 169.71, high: 173.18, low: 169.05, close: 172.41), - BarData(time: .string("2019-01-03"), open: 171.84, high: 171.84, low: 168.21, close: 168.61), - BarData(time: .string("2019-01-04"), open: 170.18, high: 174.74, low: 169.52, close: 173.62), - BarData(time: .string("2019-01-07"), open: 173.83, high: 178.18, low: 173.83, close: 177.04), - BarData(time: .string("2019-01-08"), open: 178.57, high: 179.59, low: 175.61, close: 177.89), - BarData(time: .string("2019-01-09"), open: 177.87, high: 181.27, low: 177.10, close: 179.73), - BarData(time: .string("2019-01-10"), open: 178.03, high: 179.24, low: 176.34, close: 179.06), - BarData(time: .string("2019-01-11"), open: 177.93, high: 180.26, low: 177.12, close: 179.41), - BarData(time: .string("2019-01-14"), open: 177.59, high: 179.23, low: 176.90, close: 178.81), - BarData(time: .string("2019-01-15"), open: 176.08, high: 177.82, low: 175.20, close: 176.47), - BarData(time: .string("2019-01-16"), open: 177.09, high: 177.93, low: 175.86, close: 177.04), - BarData(time: .string("2019-01-17"), open: 174.01, high: 175.46, low: 172.00, close: 174.87), - BarData(time: .string("2019-01-18"), open: 176.98, high: 180.04, low: 176.18, close: 179.58), - BarData(time: .string("2019-01-22"), open: 177.49, high: 178.60, low: 175.36, close: 177.11), - BarData(time: .string("2019-01-23"), open: 176.59, high: 178.06, low: 174.53, close: 176.89), - BarData(time: .string("2019-01-24"), open: 177.00, high: 177.53, low: 175.30, close: 177.29), - BarData(time: .string("2019-01-25"), open: 179.78, high: 180.87, low: 178.61, close: 180.40), - BarData(time: .string("2019-01-28"), open: 178.97, high: 179.99, low: 177.41, close: 179.83), - BarData(time: .string("2019-01-29"), open: 178.96, high: 180.15, low: 178.09, close: 179.69), - BarData(time: .string("2019-01-30"), open: 180.47, high: 184.20, low: 179.78, close: 182.18), - BarData(time: .string("2019-01-31"), open: 181.50, high: 184.67, low: 181.06, close: 183.53), - BarData(time: .string("2019-02-01"), open: 184.03, high: 185.15, low: 182.83, close: 184.37), - BarData(time: .string("2019-02-04"), open: 184.30, high: 186.43, low: 183.84, close: 186.43), - BarData(time: .string("2019-02-05"), open: 186.89, high: 186.99, low: 184.69, close: 186.39), - BarData(time: .string("2019-02-06"), open: 186.69, high: 186.69, low: 184.06, close: 184.72), - BarData(time: .string("2019-02-07"), open: 183.74, high: 184.92, low: 182.45, close: 184.07), - BarData(time: .string("2019-02-08"), open: 183.05, high: 184.58, low: 182.72, close: 184.54), - BarData(time: .string("2019-02-11"), open: 185.00, high: 185.42, low: 182.75, close: 182.92), - BarData(time: .string("2019-02-12"), open: 183.84, high: 186.40, low: 183.52, close: 185.52), - BarData(time: .string("2019-02-13"), open: 186.30, high: 188.68, low: 185.92, close: 188.41), - BarData(time: .string("2019-02-14"), open: 187.50, high: 188.93, low: 186.00, close: 187.71), - BarData(time: .string("2019-02-15"), open: 189.87, high: 192.62, low: 189.05, close: 192.39), - BarData(time: .string("2019-02-19"), open: 191.71, high: 193.19, low: 191.28, close: 192.33), - BarData(time: .string("2019-02-20"), open: 192.39, high: 192.40, low: 191.11, close: 191.85), - BarData(time: .string("2019-02-21"), open: 191.85, high: 192.37, low: 190.61, close: 191.82), - BarData(time: .string("2019-02-22"), open: 191.69, high: 192.54, low: 191.62, close: 192.39), - BarData(time: .string("2019-02-25"), open: 192.75, high: 193.42, low: 189.96, close: 189.98), - BarData(time: .string("2019-02-26"), open: 185.59, high: 188.47, low: 182.80, close: 188.30), - BarData(time: .string("2019-02-27"), open: 187.90, high: 188.50, low: 183.21, close: 183.67), - BarData(time: .string("2019-02-28"), open: 183.60, high: 185.19, low: 183.11, close: 185.14), - BarData(time: .string("2019-03-01"), open: 185.82, high: 186.56, low: 182.86, close: 185.17), - BarData(time: .string("2019-03-04"), open: 186.20, high: 186.24, low: 182.10, close: 183.81), - BarData(time: .string("2019-03-05"), open: 184.24, high: 185.12, low: 183.25, close: 184.00), - BarData(time: .string("2019-03-06"), open: 184.53, high: 184.97, low: 183.84, close: 184.45), - BarData(time: .string("2019-03-07"), open: 184.39, high: 184.62, low: 181.58, close: 182.51), - BarData(time: .string("2019-03-08"), open: 181.49, high: 181.91, low: 179.52, close: 181.23), - BarData(time: .string("2019-03-11"), open: 182.00, high: 183.20, low: 181.20, close: 182.44), - BarData(time: .string("2019-03-12"), open: 183.43, high: 184.27, low: 182.33, close: 184.00), - BarData(time: .string("2019-03-13"), open: 183.24, high: 183.78, low: 181.08, close: 181.14), - BarData(time: .string("2019-03-14"), open: 181.28, high: 181.74, low: 180.50, close: 181.61), - BarData(time: .string("2019-03-15"), open: 182.30, high: 182.49, low: 179.57, close: 182.23), - BarData(time: .string("2019-03-18"), open: 182.53, high: 183.48, low: 182.33, close: 183.42), - BarData(time: .string("2019-03-19"), open: 184.19, high: 185.82, low: 183.48, close: 184.13), - BarData(time: .string("2019-03-20"), open: 184.30, high: 187.12, low: 183.43, close: 186.10), - BarData(time: .string("2019-03-21"), open: 185.50, high: 190.00, low: 185.50, close: 189.97), - BarData(time: .string("2019-03-22"), open: 189.31, high: 192.05, low: 188.67, close: 188.75), - BarData(time: .string("2019-03-25"), open: 188.75, high: 191.71, low: 188.51, close: 189.68), - BarData(time: .string("2019-03-26"), open: 190.69, high: 192.19, low: 188.74, close: 189.34), - BarData(time: .string("2019-03-27"), open: 189.65, high: 191.61, low: 188.39, close: 189.25), - BarData(time: .string("2019-03-28"), open: 189.91, high: 191.40, low: 189.16, close: 190.06), - BarData(time: .string("2019-03-29"), open: 190.85, high: 192.04, low: 190.14, close: 191.89), - BarData(time: .string("2019-04-01"), open: 192.99, high: 195.90, low: 192.85, close: 195.64), - BarData(time: .string("2019-04-02"), open: 195.50, high: 195.50, low: 194.01, close: 194.31), - BarData(time: .string("2019-04-03"), open: 194.98, high: 198.78, low: 194.11, close: 198.61), - BarData(time: .string("2019-04-04"), open: 199.00, high: 200.49, low: 198.02, close: 200.45), - BarData(time: .string("2019-04-05"), open: 200.86, high: 203.13, low: 200.61, close: 202.06), - BarData(time: .string("2019-04-08"), open: 201.37, high: 203.79, low: 201.24, close: 203.55), - BarData(time: .string("2019-04-09"), open: 202.26, high: 202.71, low: 200.46, close: 200.90), - BarData(time: .string("2019-04-10"), open: 201.26, high: 201.60, low: 198.02, close: 199.43), - BarData(time: .string("2019-04-11"), open: 199.90, high: 201.50, low: 199.03, close: 201.48), - BarData(time: .string("2019-04-12"), open: 202.13, high: 204.26, low: 202.13, close: 203.85), - BarData(time: .string("2019-04-15"), open: 204.16, high: 205.14, low: 203.40, close: 204.86), - BarData(time: .string("2019-04-16"), open: 205.25, high: 205.99, low: 204.29, close: 204.47), - BarData(time: .string("2019-04-17"), open: 205.34, high: 206.84, low: 205.32, close: 206.55), - BarData(time: .string("2019-04-18"), open: 206.02, high: 207.78, low: 205.10, close: 205.66), - BarData(time: .string("2019-04-22"), open: 204.11, high: 206.25, low: 204.00, close: 204.78), - BarData(time: .string("2019-04-23"), open: 205.14, high: 207.33, low: 203.43, close: 206.05), - BarData(time: .string("2019-04-24"), open: 206.16, high: 208.29, low: 205.54, close: 206.72), - BarData(time: .string("2019-04-25"), open: 206.01, high: 207.72, low: 205.06, close: 206.50), - BarData(time: .string("2019-04-26"), open: 205.88, high: 206.14, low: 203.34, close: 203.61), - BarData(time: .string("2019-04-29"), open: 203.31, high: 203.80, low: 200.34, close: 202.16), - BarData(time: .string("2019-04-30"), open: 201.55, high: 203.75, low: 200.79, close: 203.70), - BarData(time: .string("2019-05-01"), open: 203.20, high: 203.52, low: 198.66, close: 198.80), - BarData(time: .string("2019-05-02"), open: 199.30, high: 201.06, low: 198.80, close: 201.01), - BarData(time: .string("2019-05-03"), open: 202.00, high: 202.31, low: 200.32, close: 200.56), - BarData(time: .string("2019-05-06"), open: 198.74, high: 199.93, low: 198.31, close: 199.63), - BarData(time: .string("2019-05-07"), open: 196.75, high: 197.65, low: 192.96, close: 194.77), - BarData(time: .string("2019-05-08"), open: 194.49, high: 196.61, low: 193.68, close: 195.17), - BarData(time: .string("2019-05-09"), open: 193.31, high: 195.08, low: 191.59, close: 194.58), - BarData(time: .string("2019-05-10"), open: 193.21, high: 195.49, low: 190.01, close: 194.58), - BarData(time: .string("2019-05-13"), open: 191.00, high: 191.66, low: 189.14, close: 190.34), - BarData(time: .string("2019-05-14"), open: 190.50, high: 192.76, low: 190.01, close: 191.62), - BarData(time: .string("2019-05-15"), open: 190.81, high: 192.81, low: 190.27, close: 191.76), - BarData(time: .string("2019-05-16"), open: 192.47, high: 194.96, low: 192.20, close: 192.38), - BarData(time: .string("2019-05-17"), open: 190.86, high: 194.50, low: 190.75, close: 192.58), - BarData(time: .string("2019-05-20"), open: 191.13, high: 192.86, low: 190.61, close: 190.95), - BarData(time: .string("2019-05-21"), open: 187.13, high: 192.52, low: 186.34, close: 191.45), - BarData(time: .string("2019-05-22"), open: 190.49, high: 192.22, low: 188.05, close: 188.91), - BarData(time: .string("2019-05-23"), open: 188.45, high: 192.54, low: 186.27, close: 192.00), - BarData(time: .string("2019-05-24"), open: 192.54, high: 193.86, low: 190.41, close: 193.59) + CandlestickData(time: .string("2018-10-19"), open: 180.34, high: 180.99, low: 178.57, close: 179.85), + CandlestickData(time: .string("2018-10-22"), open: 180.82, high: 181.40, low: 177.56, close: 178.75), + CandlestickData(time: .string("2018-10-23"), open: 175.77, high: 179.49, low: 175.44, close: 178.53), + CandlestickData(time: .string("2018-10-24"), open: 178.58, high: 182.37, low: 176.31, close: 176.97), + CandlestickData(time: .string("2018-10-25"), open: 177.52, high: 180.50, low: 176.83, close: 179.07), + CandlestickData(time: .string("2018-10-26"), open: 176.88, high: 177.34, low: 170.91, close: 172.23), + CandlestickData(time: .string("2018-10-29"), open: 173.74, high: 175.99, low: 170.95, close: 173.20), + CandlestickData(time: .string("2018-10-30"), open: 173.16, high: 176.43, low: 172.64, close: 176.24), + CandlestickData(time: .string("2018-10-31"), open: 177.98, high: 178.85, low: 175.59, close: 175.88), + CandlestickData(time: .string("2018-11-01"), open: 176.84, high: 180.86, low: 175.90, close: 180.46), + CandlestickData(time: .string("2018-11-02"), open: 182.47, high: 183.01, low: 177.39, close: 179.93), + CandlestickData(time: .string("2018-11-05"), open: 181.02, high: 182.41, low: 179.30, close: 182.19), + CandlestickData(time: .string("2018-11-06"), open: 181.93, high: 182.65, low: 180.05, close: 182.01), + CandlestickData(time: .string("2018-11-07"), open: 183.79, high: 187.68, low: 182.06, close: 187.23), + CandlestickData(time: .string("2018-11-08"), open: 187.13, high: 188.69, low: 185.72, close: 188.00), + CandlestickData(time: .string("2018-11-09"), open: 188.32, high: 188.48, low: 184.96, close: 185.99), + CandlestickData(time: .string("2018-11-12"), open: 185.23, high: 186.95, low: 179.02, close: 179.43), + CandlestickData(time: .string("2018-11-13"), open: 177.30, high: 181.62, low: 172.85, close: 179.00), + CandlestickData(time: .string("2018-11-14"), open: 182.61, high: 182.90, low: 179.15, close: 179.90), + CandlestickData(time: .string("2018-11-15"), open: 179.01, high: 179.67, low: 173.61, close: 177.36), + CandlestickData(time: .string("2018-11-16"), open: 173.99, high: 177.60, low: 173.51, close: 177.02), + CandlestickData(time: .string("2018-11-19"), open: 176.71, high: 178.88, low: 172.30, close: 173.59), + CandlestickData(time: .string("2018-11-20"), open: 169.25, high: 172.00, low: 167.00, close: 169.05), + CandlestickData(time: .string("2018-11-21"), open: 170.00, high: 170.93, low: 169.15, close: 169.30), + CandlestickData(time: .string("2018-11-23"), open: 169.39, high: 170.33, low: 168.47, close: 168.85), + CandlestickData(time: .string("2018-11-26"), open: 170.20, high: 172.39, low: 168.87, close: 169.82), + CandlestickData(time: .string("2018-11-27"), open: 169.11, high: 173.38, low: 168.82, close: 173.22), + CandlestickData(time: .string("2018-11-28"), open: 172.91, high: 177.65, low: 170.62, close: 177.43), + CandlestickData(time: .string("2018-11-29"), open: 176.80, high: 177.27, low: 174.92, close: 175.66), + CandlestickData(time: .string("2018-11-30"), open: 175.75, high: 180.37, low: 175.11, close: 180.32), + CandlestickData(time: .string("2018-12-03"), open: 183.29, high: 183.50, low: 179.35, close: 181.74), + CandlestickData(time: .string("2018-12-04"), open: 181.06, high: 182.23, low: 174.55, close: 175.30), + CandlestickData(time: .string("2018-12-06"), open: 173.50, high: 176.04, low: 170.46, close: 175.96), + CandlestickData(time: .string("2018-12-07"), open: 175.35, high: 178.36, low: 172.24, close: 172.79), + CandlestickData(time: .string("2018-12-10"), open: 173.39, high: 173.99, low: 167.73, close: 171.69), + CandlestickData(time: .string("2018-12-11"), open: 174.30, high: 175.60, low: 171.24, close: 172.21), + CandlestickData(time: .string("2018-12-12"), open: 173.75, high: 176.87, low: 172.81, close: 174.21), + CandlestickData(time: .string("2018-12-13"), open: 174.31, high: 174.91, low: 172.07, close: 173.87), + CandlestickData(time: .string("2018-12-14"), open: 172.98, high: 175.14, low: 171.95, close: 172.29), + CandlestickData(time: .string("2018-12-17"), open: 171.51, high: 171.99, low: 166.93, close: 167.97), + CandlestickData(time: .string("2018-12-18"), open: 168.90, high: 171.95, low: 168.50, close: 170.04), + CandlestickData(time: .string("2018-12-19"), open: 170.92, high: 174.95, low: 166.77, close: 167.56), + CandlestickData(time: .string("2018-12-20"), open: 166.28, high: 167.31, low: 162.23, close: 164.16), + CandlestickData(time: .string("2018-12-21"), open: 162.81, high: 167.96, low: 160.17, close: 160.48), + CandlestickData(time: .string("2018-12-24"), open: 160.16, high: 161.40, low: 158.09, close: 158.14), + CandlestickData(time: .string("2018-12-26"), open: 159.46, high: 168.28, low: 159.44, close: 168.28), + CandlestickData(time: .string("2018-12-27"), open: 166.44, high: 170.46, low: 163.36, close: 170.32), + CandlestickData(time: .string("2018-12-28"), open: 171.22, high: 173.12, low: 168.60, close: 170.22), + CandlestickData(time: .string("2018-12-31"), open: 171.47, high: 173.24, low: 170.65, close: 171.82), + CandlestickData(time: .string("2019-01-02"), open: 169.71, high: 173.18, low: 169.05, close: 172.41), + CandlestickData(time: .string("2019-01-03"), open: 171.84, high: 171.84, low: 168.21, close: 168.61), + CandlestickData(time: .string("2019-01-04"), open: 170.18, high: 174.74, low: 169.52, close: 173.62), + CandlestickData(time: .string("2019-01-07"), open: 173.83, high: 178.18, low: 173.83, close: 177.04), + CandlestickData(time: .string("2019-01-08"), open: 178.57, high: 179.59, low: 175.61, close: 177.89), + CandlestickData(time: .string("2019-01-09"), open: 177.87, high: 181.27, low: 177.10, close: 179.73), + CandlestickData(time: .string("2019-01-10"), open: 178.03, high: 179.24, low: 176.34, close: 179.06), + CandlestickData(time: .string("2019-01-11"), open: 177.93, high: 180.26, low: 177.12, close: 179.41), + CandlestickData(time: .string("2019-01-14"), open: 177.59, high: 179.23, low: 176.90, close: 178.81), + CandlestickData(time: .string("2019-01-15"), open: 176.08, high: 177.82, low: 175.20, close: 176.47), + CandlestickData(time: .string("2019-01-16"), open: 177.09, high: 177.93, low: 175.86, close: 177.04), + CandlestickData(time: .string("2019-01-17"), open: 174.01, high: 175.46, low: 172.00, close: 174.87), + CandlestickData(time: .string("2019-01-18"), open: 176.98, high: 180.04, low: 176.18, close: 179.58), + CandlestickData(time: .string("2019-01-22"), open: 177.49, high: 178.60, low: 175.36, close: 177.11), + CandlestickData(time: .string("2019-01-23"), open: 176.59, high: 178.06, low: 174.53, close: 176.89), + CandlestickData(time: .string("2019-01-24"), open: 177.00, high: 177.53, low: 175.30, close: 177.29), + CandlestickData(time: .string("2019-01-25"), open: 179.78, high: 180.87, low: 178.61, close: 180.40), + CandlestickData(time: .string("2019-01-28"), open: 178.97, high: 179.99, low: 177.41, close: 179.83), + CandlestickData(time: .string("2019-01-29"), open: 178.96, high: 180.15, low: 178.09, close: 179.69), + CandlestickData(time: .string("2019-01-30"), open: 180.47, high: 184.20, low: 179.78, close: 182.18), + CandlestickData(time: .string("2019-01-31"), open: 181.50, high: 184.67, low: 181.06, close: 183.53), + CandlestickData(time: .string("2019-02-01"), open: 184.03, high: 185.15, low: 182.83, close: 184.37), + CandlestickData(time: .string("2019-02-04"), open: 184.30, high: 186.43, low: 183.84, close: 186.43), + CandlestickData(time: .string("2019-02-05"), open: 186.89, high: 186.99, low: 184.69, close: 186.39), + CandlestickData(time: .string("2019-02-06"), open: 186.69, high: 186.69, low: 184.06, close: 184.72), + CandlestickData(time: .string("2019-02-07"), open: 183.74, high: 184.92, low: 182.45, close: 184.07), + CandlestickData(time: .string("2019-02-08"), open: 183.05, high: 184.58, low: 182.72, close: 184.54), + CandlestickData(time: .string("2019-02-11"), open: 185.00, high: 185.42, low: 182.75, close: 182.92), + CandlestickData(time: .string("2019-02-12"), open: 183.84, high: 186.40, low: 183.52, close: 185.52), + CandlestickData(time: .string("2019-02-13"), open: 186.30, high: 188.68, low: 185.92, close: 188.41), + CandlestickData(time: .string("2019-02-14"), open: 187.50, high: 188.93, low: 186.00, close: 187.71), + CandlestickData(time: .string("2019-02-15"), open: 189.87, high: 192.62, low: 189.05, close: 192.39), + CandlestickData(time: .string("2019-02-19"), open: 191.71, high: 193.19, low: 191.28, close: 192.33), + CandlestickData(time: .string("2019-02-20"), open: 192.39, high: 192.40, low: 191.11, close: 191.85), + CandlestickData(time: .string("2019-02-21"), open: 191.85, high: 192.37, low: 190.61, close: 191.82), + CandlestickData(time: .string("2019-02-22"), open: 191.69, high: 192.54, low: 191.62, close: 192.39), + CandlestickData(time: .string("2019-02-25"), open: 192.75, high: 193.42, low: 189.96, close: 189.98), + CandlestickData(time: .string("2019-02-26"), open: 185.59, high: 188.47, low: 182.80, close: 188.30), + CandlestickData(time: .string("2019-02-27"), open: 187.90, high: 188.50, low: 183.21, close: 183.67), + CandlestickData(time: .string("2019-02-28"), open: 183.60, high: 185.19, low: 183.11, close: 185.14), + CandlestickData(time: .string("2019-03-01"), open: 185.82, high: 186.56, low: 182.86, close: 185.17), + CandlestickData(time: .string("2019-03-04"), open: 186.20, high: 186.24, low: 182.10, close: 183.81), + CandlestickData(time: .string("2019-03-05"), open: 184.24, high: 185.12, low: 183.25, close: 184.00), + CandlestickData(time: .string("2019-03-06"), open: 184.53, high: 184.97, low: 183.84, close: 184.45), + CandlestickData(time: .string("2019-03-07"), open: 184.39, high: 184.62, low: 181.58, close: 182.51), + CandlestickData(time: .string("2019-03-08"), open: 181.49, high: 181.91, low: 179.52, close: 181.23), + CandlestickData(time: .string("2019-03-11"), open: 182.00, high: 183.20, low: 181.20, close: 182.44), + CandlestickData(time: .string("2019-03-12"), open: 183.43, high: 184.27, low: 182.33, close: 184.00), + CandlestickData(time: .string("2019-03-13"), open: 183.24, high: 183.78, low: 181.08, close: 181.14), + CandlestickData(time: .string("2019-03-14"), open: 181.28, high: 181.74, low: 180.50, close: 181.61), + CandlestickData(time: .string("2019-03-15"), open: 182.30, high: 182.49, low: 179.57, close: 182.23), + CandlestickData(time: .string("2019-03-18"), open: 182.53, high: 183.48, low: 182.33, close: 183.42), + CandlestickData(time: .string("2019-03-19"), open: 184.19, high: 185.82, low: 183.48, close: 184.13), + CandlestickData(time: .string("2019-03-20"), open: 184.30, high: 187.12, low: 183.43, close: 186.10), + CandlestickData(time: .string("2019-03-21"), open: 185.50, high: 190.00, low: 185.50, close: 189.97), + CandlestickData(time: .string("2019-03-22"), open: 189.31, high: 192.05, low: 188.67, close: 188.75), + CandlestickData(time: .string("2019-03-25"), open: 188.75, high: 191.71, low: 188.51, close: 189.68), + CandlestickData(time: .string("2019-03-26"), open: 190.69, high: 192.19, low: 188.74, close: 189.34), + CandlestickData(time: .string("2019-03-27"), open: 189.65, high: 191.61, low: 188.39, close: 189.25), + CandlestickData(time: .string("2019-03-28"), open: 189.91, high: 191.40, low: 189.16, close: 190.06), + CandlestickData(time: .string("2019-03-29"), open: 190.85, high: 192.04, low: 190.14, close: 191.89), + CandlestickData(time: .string("2019-04-01"), open: 192.99, high: 195.90, low: 192.85, close: 195.64), + CandlestickData(time: .string("2019-04-02"), open: 195.50, high: 195.50, low: 194.01, close: 194.31), + CandlestickData(time: .string("2019-04-03"), open: 194.98, high: 198.78, low: 194.11, close: 198.61), + CandlestickData(time: .string("2019-04-04"), open: 199.00, high: 200.49, low: 198.02, close: 200.45), + CandlestickData(time: .string("2019-04-05"), open: 200.86, high: 203.13, low: 200.61, close: 202.06), + CandlestickData(time: .string("2019-04-08"), open: 201.37, high: 203.79, low: 201.24, close: 203.55), + CandlestickData(time: .string("2019-04-09"), open: 202.26, high: 202.71, low: 200.46, close: 200.90), + CandlestickData(time: .string("2019-04-10"), open: 201.26, high: 201.60, low: 198.02, close: 199.43), + CandlestickData(time: .string("2019-04-11"), open: 199.90, high: 201.50, low: 199.03, close: 201.48), + CandlestickData(time: .string("2019-04-12"), open: 202.13, high: 204.26, low: 202.13, close: 203.85), + CandlestickData(time: .string("2019-04-15"), open: 204.16, high: 205.14, low: 203.40, close: 204.86), + CandlestickData(time: .string("2019-04-16"), open: 205.25, high: 205.99, low: 204.29, close: 204.47), + CandlestickData(time: .string("2019-04-17"), open: 205.34, high: 206.84, low: 205.32, close: 206.55), + CandlestickData(time: .string("2019-04-18"), open: 206.02, high: 207.78, low: 205.10, close: 205.66), + CandlestickData(time: .string("2019-04-22"), open: 204.11, high: 206.25, low: 204.00, close: 204.78), + CandlestickData(time: .string("2019-04-23"), open: 205.14, high: 207.33, low: 203.43, close: 206.05), + CandlestickData(time: .string("2019-04-24"), open: 206.16, high: 208.29, low: 205.54, close: 206.72), + CandlestickData(time: .string("2019-04-25"), open: 206.01, high: 207.72, low: 205.06, close: 206.50), + CandlestickData(time: .string("2019-04-26"), open: 205.88, high: 206.14, low: 203.34, close: 203.61), + CandlestickData(time: .string("2019-04-29"), open: 203.31, high: 203.80, low: 200.34, close: 202.16), + CandlestickData(time: .string("2019-04-30"), open: 201.55, high: 203.75, low: 200.79, close: 203.70), + CandlestickData(time: .string("2019-05-01"), open: 203.20, high: 203.52, low: 198.66, close: 198.80), + CandlestickData(time: .string("2019-05-02"), open: 199.30, high: 201.06, low: 198.80, close: 201.01), + CandlestickData(time: .string("2019-05-03"), open: 202.00, high: 202.31, low: 200.32, close: 200.56), + CandlestickData(time: .string("2019-05-06"), open: 198.74, high: 199.93, low: 198.31, close: 199.63), + CandlestickData(time: .string("2019-05-07"), open: 196.75, high: 197.65, low: 192.96, close: 194.77), + CandlestickData(time: .string("2019-05-08"), open: 194.49, high: 196.61, low: 193.68, close: 195.17), + CandlestickData(time: .string("2019-05-09"), open: 193.31, high: 195.08, low: 191.59, close: 194.58), + CandlestickData(time: .string("2019-05-10"), open: 193.21, high: 195.49, low: 190.01, close: 194.58), + CandlestickData(time: .string("2019-05-13"), open: 191.00, high: 191.66, low: 189.14, close: 190.34), + CandlestickData(time: .string("2019-05-14"), open: 190.50, high: 192.76, low: 190.01, close: 191.62), + CandlestickData(time: .string("2019-05-15"), open: 190.81, high: 192.81, low: 190.27, close: 191.76), + CandlestickData(time: .string("2019-05-16"), open: 192.47, high: 194.96, low: 192.20, close: 192.38), + CandlestickData(time: .string("2019-05-17"), open: 190.86, high: 194.50, low: 190.75, close: 192.58), + CandlestickData(time: .string("2019-05-20"), open: 191.13, high: 192.86, low: 190.61, close: 190.95), + CandlestickData(time: .string("2019-05-21"), open: 187.13, high: 192.52, low: 186.34, close: 191.45), + CandlestickData(time: .string("2019-05-22"), open: 190.49, high: 192.22, low: 188.05, close: 188.91), + CandlestickData(time: .string("2019-05-23"), open: 188.45, high: 192.54, low: 186.27, close: 192.00), + CandlestickData(time: .string("2019-05-24"), open: 192.54, high: 193.86, low: 190.41, close: 193.59) ] series.setData(data: data) self.series = series diff --git a/Example/LightweightCharts/Example/RealtimeEmulationViewController.swift b/Example/LightweightCharts/Example/RealtimeEmulationViewController.swift index 87a0e7b..1671f04 100644 --- a/Example/LightweightCharts/Example/RealtimeEmulationViewController.swift +++ b/Example/LightweightCharts/Example/RealtimeEmulationViewController.swift @@ -6,156 +6,156 @@ class RealtimeEmulationViewController: UIViewController { private var chart: LightweightCharts! private var series: CandlestickSeries! private var data = [ - BarData(time: .string("2018-10-19"), open: 54.62, high: 55.50, low: 54.52, close: 54.90), - BarData(time: .string("2018-10-22"), open: 55.08, high: 55.27, low: 54.61, close: 54.98), - BarData(time: .string("2018-10-23"), open: 56.09, high: 57.47, low: 56.09, close: 57.21), - BarData(time: .string("2018-10-24"), open: 57.00, high: 58.44, low: 56.41, close: 57.42), - BarData(time: .string("2018-10-25"), open: 57.46, high: 57.63, low: 56.17, close: 56.43), - BarData(time: .string("2018-10-26"), open: 56.26, high: 56.62, low: 55.19, close: 55.51), - BarData(time: .string("2018-10-29"), open: 55.81, high: 57.15, low: 55.72, close: 56.48), - BarData(time: .string("2018-10-30"), open: 56.92, high: 58.80, low: 56.92, close: 58.18), - BarData(time: .string("2018-10-31"), open: 58.32, high: 58.32, low: 56.76, close: 57.09), - BarData(time: .string("2018-11-01"), open: 56.98, high: 57.28, low: 55.55, close: 56.05), - BarData(time: .string("2018-11-02"), open: 56.34, high: 57.08, low: 55.92, close: 56.63), - BarData(time: .string("2018-11-05"), open: 56.51, high: 57.45, low: 56.51, close: 57.21), - BarData(time: .string("2018-11-06"), open: 57.02, high: 57.35, low: 56.65, close: 57.21), - BarData(time: .string("2018-11-07"), open: 57.55, high: 57.78, low: 57.03, close: 57.65), - BarData(time: .string("2018-11-08"), open: 57.70, high: 58.44, low: 57.66, close: 58.27), - BarData(time: .string("2018-11-09"), open: 58.32, high: 59.20, low: 57.94, close: 58.46), - BarData(time: .string("2018-11-12"), open: 58.84, high: 59.40, low: 58.54, close: 58.72), - BarData(time: .string("2018-11-13"), open: 59.09, high: 59.14, low: 58.32, close: 58.66), - BarData(time: .string("2018-11-14"), open: 59.13, high: 59.32, low: 58.41, close: 58.94), - BarData(time: .string("2018-11-15"), open: 58.85, high: 59.09, low: 58.45, close: 59.08), - BarData(time: .string("2018-11-16"), open: 59.06, high: 60.39, low: 58.91, close: 60.21), - BarData(time: .string("2018-11-19"), open: 60.25, high: 61.32, low: 60.18, close: 60.62), - BarData(time: .string("2018-11-20"), open: 61.03, high: 61.58, low: 59.17, close: 59.46), - BarData(time: .string("2018-11-21"), open: 59.26, high: 59.90, low: 58.88, close: 59.16), - BarData(time: .string("2018-11-23"), open: 58.86, high: 59.00, low: 58.29, close: 58.64), - BarData(time: .string("2018-11-26"), open: 58.64, high: 59.51, low: 58.31, close: 59.17), - BarData(time: .string("2018-11-27"), open: 59.21, high: 60.70, low: 59.18, close: 60.65), - BarData(time: .string("2018-11-28"), open: 60.70, high: 60.73, low: 59.64, close: 60.06), - BarData(time: .string("2018-11-29"), open: 59.42, high: 59.79, low: 59.26, close: 59.45), - BarData(time: .string("2018-11-30"), open: 59.57, high: 60.37, low: 59.48, close: 60.30), - BarData(time: .string("2018-12-03"), open: 59.50, high: 59.75, low: 57.69, close: 58.16), - BarData(time: .string("2018-12-04"), open: 58.10, high: 59.40, low: 57.96, close: 58.09), - BarData(time: .string("2018-12-06"), open: 58.18, high: 58.64, low: 57.16, close: 58.08), - BarData(time: .string("2018-12-07"), open: 57.91, high: 58.43, low: 57.34, close: 57.68), - BarData(time: .string("2018-12-10"), open: 57.80, high: 58.37, low: 56.87, close: 58.27), - BarData(time: .string("2018-12-11"), open: 58.77, high: 59.40, low: 58.63, close: 58.85), - BarData(time: .string("2018-12-12"), open: 57.79, high: 58.19, low: 57.23, close: 57.25), - BarData(time: .string("2018-12-13"), open: 57.00, high: 57.50, low: 56.81, close: 57.09), - BarData(time: .string("2018-12-14"), open: 56.95, high: 57.50, low: 56.75, close: 57.08), - BarData(time: .string("2018-12-17"), open: 57.06, high: 57.31, low: 55.53, close: 55.95), - BarData(time: .string("2018-12-18"), open: 55.94, high: 56.69, low: 55.31, close: 55.65), - BarData(time: .string("2018-12-19"), open: 55.72, high: 56.92, low: 55.50, close: 55.86), - BarData(time: .string("2018-12-20"), open: 55.92, high: 56.01, low: 54.26, close: 55.07), - BarData(time: .string("2018-12-21"), open: 54.84, high: 56.53, low: 54.24, close: 54.92), - BarData(time: .string("2018-12-24"), open: 54.68, high: 55.04, low: 52.94, close: 53.05), - BarData(time: .string("2018-12-26"), open: 53.23, high: 54.47, low: 52.40, close: 54.44), - BarData(time: .string("2018-12-27"), open: 54.31, high: 55.17, low: 53.35, close: 55.15), - BarData(time: .string("2018-12-28"), open: 55.37, high: 55.86, low: 54.90, close: 55.27), - BarData(time: .string("2018-12-31"), open: 55.53, high: 56.23, low: 55.07, close: 56.22), - BarData(time: .string("2019-01-02"), open: 56.16, high: 56.16, low: 55.28, close: 56.02), - BarData(time: .string("2019-01-03"), open: 56.30, high: 56.99, low: 56.06, close: 56.22), - BarData(time: .string("2019-01-04"), open: 56.49, high: 56.89, low: 55.95, close: 56.36), - BarData(time: .string("2019-01-07"), open: 56.76, high: 57.26, low: 56.55, close: 56.72), - BarData(time: .string("2019-01-08"), open: 57.27, high: 58.69, low: 57.05, close: 58.38), - BarData(time: .string("2019-01-09"), open: 57.68, high: 57.72, low: 56.85, close: 57.05), - BarData(time: .string("2019-01-10"), open: 57.29, high: 57.70, low: 56.87, close: 57.60), - BarData(time: .string("2019-01-11"), open: 57.84, high: 58.26, low: 57.42, close: 58.02), - BarData(time: .string("2019-01-14"), open: 57.83, high: 58.15, low: 57.67, close: 58.03), - BarData(time: .string("2019-01-15"), open: 57.74, high: 58.29, low: 57.58, close: 58.10), - BarData(time: .string("2019-01-16"), open: 57.93, high: 57.93, low: 57.00, close: 57.08), - BarData(time: .string("2019-01-17"), open: 57.16, high: 57.40, low: 56.21, close: 56.83), - BarData(time: .string("2019-01-18"), open: 56.92, high: 57.47, low: 56.84, close: 57.09), - BarData(time: .string("2019-01-22"), open: 57.23, high: 57.39, low: 56.40, close: 56.99), - BarData(time: .string("2019-01-23"), open: 56.98, high: 57.87, low: 56.93, close: 57.76), - BarData(time: .string("2019-01-24"), open: 57.61, high: 57.65, low: 56.50, close: 57.07), - BarData(time: .string("2019-01-25"), open: 57.18, high: 57.47, low: 56.23, close: 56.40), - BarData(time: .string("2019-01-28"), open: 56.12, high: 56.22, low: 54.80, close: 55.07), - BarData(time: .string("2019-01-29"), open: 53.62, high: 54.30, low: 52.97, close: 53.28), - BarData(time: .string("2019-01-30"), open: 53.10, high: 54.02, low: 52.28, close: 54.00), - BarData(time: .string("2019-01-31"), open: 54.05, high: 55.19, low: 53.53, close: 55.06), - BarData(time: .string("2019-02-01"), open: 55.21, high: 55.30, low: 54.47, close: 54.55), - BarData(time: .string("2019-02-04"), open: 54.60, high: 54.69, low: 53.67, close: 54.04), - BarData(time: .string("2019-02-05"), open: 54.10, high: 54.34, low: 53.61, close: 54.14), - BarData(time: .string("2019-02-06"), open: 54.11, high: 54.37, low: 53.68, close: 53.79), - BarData(time: .string("2019-02-07"), open: 53.61, high: 53.73, low: 53.02, close: 53.57), - BarData(time: .string("2019-02-08"), open: 53.36, high: 53.96, low: 53.30, close: 53.95), - BarData(time: .string("2019-02-11"), open: 54.13, high: 54.37, low: 53.86, close: 54.05), - BarData(time: .string("2019-02-12"), open: 54.45, high: 54.77, low: 54.19, close: 54.42), - BarData(time: .string("2019-02-13"), open: 54.35, high: 54.77, low: 54.28, close: 54.48), - BarData(time: .string("2019-02-14"), open: 54.38, high: 54.52, low: 53.95, close: 54.03), - BarData(time: .string("2019-02-15"), open: 54.48, high: 55.19, low: 54.32, close: 55.16), - BarData(time: .string("2019-02-19"), open: 55.06, high: 55.66, low: 54.82, close: 55.44), - BarData(time: .string("2019-02-20"), open: 55.37, high: 55.91, low: 55.24, close: 55.76), - BarData(time: .string("2019-02-21"), open: 55.55, high: 56.72, low: 55.46, close: 56.15), - BarData(time: .string("2019-02-22"), open: 56.43, high: 57.13, low: 56.40, close: 56.92), - BarData(time: .string("2019-02-25"), open: 57.00, high: 57.27, low: 56.55, close: 56.78), - BarData(time: .string("2019-02-26"), open: 56.82, high: 57.09, low: 56.46, close: 56.64), - BarData(time: .string("2019-02-27"), open: 56.55, high: 56.73, low: 56.35, close: 56.72), - BarData(time: .string("2019-02-28"), open: 56.74, high: 57.61, low: 56.72, close: 56.92), - BarData(time: .string("2019-03-01"), open: 57.02, high: 57.15, low: 56.35, close: 56.96), - BarData(time: .string("2019-03-04"), open: 57.15, high: 57.34, low: 55.66, close: 56.24), - BarData(time: .string("2019-03-05"), open: 56.09, high: 56.17, low: 55.51, close: 56.08), - BarData(time: .string("2019-03-06"), open: 56.19, high: 56.42, low: 55.45, close: 55.68), - BarData(time: .string("2019-03-07"), open: 55.76, high: 56.40, low: 55.72, close: 56.30), - BarData(time: .string("2019-03-08"), open: 56.36, high: 56.68, low: 56.00, close: 56.53), - BarData(time: .string("2019-03-11"), open: 56.76, high: 57.62, low: 56.75, close: 57.58), - BarData(time: .string("2019-03-12"), open: 57.63, high: 58.11, low: 57.36, close: 57.43), - BarData(time: .string("2019-03-13"), open: 57.37, high: 57.74, low: 57.34, close: 57.66), - BarData(time: .string("2019-03-14"), open: 57.71, high: 58.09, low: 57.51, close: 57.95), - BarData(time: .string("2019-03-15"), open: 58.04, high: 58.51, low: 57.93, close: 58.39), - BarData(time: .string("2019-03-18"), open: 58.27, high: 58.32, low: 57.56, close: 58.07), - BarData(time: .string("2019-03-19"), open: 58.10, high: 58.20, low: 57.31, close: 57.50), - BarData(time: .string("2019-03-20"), open: 57.51, high: 58.05, low: 57.11, close: 57.67), - BarData(time: .string("2019-03-21"), open: 57.58, high: 58.49, low: 57.57, close: 58.29), - BarData(time: .string("2019-03-22"), open: 58.16, high: 60.00, low: 58.13, close: 59.76), - BarData(time: .string("2019-03-25"), open: 59.63, high: 60.19, low: 59.53, close: 60.08), - BarData(time: .string("2019-03-26"), open: 60.30, high: 60.69, low: 60.17, close: 60.63), - BarData(time: .string("2019-03-27"), open: 60.56, high: 61.19, low: 60.48, close: 60.88), - BarData(time: .string("2019-03-28"), open: 60.88, high: 60.89, low: 58.44, close: 59.08), - BarData(time: .string("2019-03-29"), open: 59.20, high: 59.27, low: 58.32, close: 59.13), - BarData(time: .string("2019-04-01"), open: 59.39, high: 59.41, low: 58.79, close: 59.09), - BarData(time: .string("2019-04-02"), open: 59.22, high: 59.23, low: 58.34, close: 58.53), - BarData(time: .string("2019-04-03"), open: 58.78, high: 59.07, low: 58.41, close: 58.87), - BarData(time: .string("2019-04-04"), open: 58.84, high: 59.10, low: 58.77, close: 58.99), - BarData(time: .string("2019-04-05"), open: 59.02, high: 59.09, low: 58.82, close: 59.09), - BarData(time: .string("2019-04-08"), open: 59.02, high: 59.13, low: 58.72, close: 59.13), - BarData(time: .string("2019-04-09"), open: 58.37, high: 58.56, low: 58.04, close: 58.40), - BarData(time: .string("2019-04-10"), open: 58.40, high: 58.70, low: 58.36, close: 58.61), - BarData(time: .string("2019-04-11"), open: 58.65, high: 58.73, low: 58.20, close: 58.56), - BarData(time: .string("2019-04-12"), open: 58.75, high: 58.79, low: 58.52, close: 58.74), - BarData(time: .string("2019-04-15"), open: 58.91, high: 58.95, low: 58.59, close: 58.71), - BarData(time: .string("2019-04-16"), open: 58.79, high: 58.98, low: 58.66, close: 58.79), - BarData(time: .string("2019-04-17"), open: 58.40, high: 58.46, low: 57.64, close: 57.78), - BarData(time: .string("2019-04-18"), open: 57.51, high: 58.20, low: 57.28, close: 58.04), - BarData(time: .string("2019-04-22"), open: 58.14, high: 58.49, low: 57.89, close: 58.37), - BarData(time: .string("2019-04-23"), open: 57.62, high: 57.72, low: 56.30, close: 57.15), - BarData(time: .string("2019-04-24"), open: 57.34, high: 57.57, low: 56.73, close: 57.08), - BarData(time: .string("2019-04-25"), open: 56.82, high: 56.90, low: 55.75, close: 55.85), - BarData(time: .string("2019-04-26"), open: 56.06, high: 56.81, low: 55.83, close: 56.58), - BarData(time: .string("2019-04-29"), open: 56.75, high: 57.17, low: 56.71, close: 56.84), - BarData(time: .string("2019-04-30"), open: 56.99, high: 57.45, low: 56.76, close: 57.19), - BarData(time: .string("2019-05-01"), open: 57.23, high: 57.30, low: 56.52, close: 56.52), - BarData(time: .string("2019-05-02"), open: 56.81, high: 58.23, low: 56.68, close: 56.99), - BarData(time: .string("2019-05-03"), open: 57.15, high: 57.36, low: 56.87, close: 57.24), - BarData(time: .string("2019-05-06"), open: 56.83, high: 57.09, low: 56.74, close: 56.91), - BarData(time: .string("2019-05-07"), open: 56.69, high: 56.81, low: 56.33, close: 56.63), - BarData(time: .string("2019-05-08"), open: 56.66, high: 56.70, low: 56.25, close: 56.38), - BarData(time: .string("2019-05-09"), open: 56.12, high: 56.56, low: 55.93, close: 56.48), - BarData(time: .string("2019-05-10"), open: 56.49, high: 57.04, low: 56.26, close: 56.91), - BarData(time: .string("2019-05-13"), open: 56.72, high: 57.34, low: 56.66, close: 56.75), - BarData(time: .string("2019-05-14"), open: 56.76, high: 57.19, low: 56.50, close: 56.55), - BarData(time: .string("2019-05-15"), open: 56.51, high: 56.84, low: 56.17, close: 56.81), - BarData(time: .string("2019-05-16"), open: 57.00, high: 57.80, low: 56.82, close: 57.38), - BarData(time: .string("2019-05-17"), open: 57.06, high: 58.48, low: 57.01, close: 58.09), - BarData(time: .string("2019-05-20"), open: 59.15, high: 60.54, low: 58.00, close: 59.01), - BarData(time: .string("2019-05-21"), open: 59.10, high: 59.63, low: 58.76, close: 59.50), - BarData(time: .string("2019-05-22"), open: 59.09, high: 59.37, low: 58.96, close: 59.25), - BarData(time: .string("2019-05-23"), open: 59.00, high: 59.27, low: 58.54, close: 58.87), - BarData(time: .string("2019-05-24"), open: 59.07, high: 59.36, low: 58.67, close: 59.32), - BarData(time: .string("2019-05-28"), open: 59.21, high: 59.66, low: 59.02, close: 59.57) + CandlestickData(time: .string("2018-10-19"), open: 54.62, high: 55.50, low: 54.52, close: 54.90), + CandlestickData(time: .string("2018-10-22"), open: 55.08, high: 55.27, low: 54.61, close: 54.98), + CandlestickData(time: .string("2018-10-23"), open: 56.09, high: 57.47, low: 56.09, close: 57.21), + CandlestickData(time: .string("2018-10-24"), open: 57.00, high: 58.44, low: 56.41, close: 57.42), + CandlestickData(time: .string("2018-10-25"), open: 57.46, high: 57.63, low: 56.17, close: 56.43), + CandlestickData(time: .string("2018-10-26"), open: 56.26, high: 56.62, low: 55.19, close: 55.51), + CandlestickData(time: .string("2018-10-29"), open: 55.81, high: 57.15, low: 55.72, close: 56.48), + CandlestickData(time: .string("2018-10-30"), open: 56.92, high: 58.80, low: 56.92, close: 58.18), + CandlestickData(time: .string("2018-10-31"), open: 58.32, high: 58.32, low: 56.76, close: 57.09), + CandlestickData(time: .string("2018-11-01"), open: 56.98, high: 57.28, low: 55.55, close: 56.05), + CandlestickData(time: .string("2018-11-02"), open: 56.34, high: 57.08, low: 55.92, close: 56.63), + CandlestickData(time: .string("2018-11-05"), open: 56.51, high: 57.45, low: 56.51, close: 57.21), + CandlestickData(time: .string("2018-11-06"), open: 57.02, high: 57.35, low: 56.65, close: 57.21), + CandlestickData(time: .string("2018-11-07"), open: 57.55, high: 57.78, low: 57.03, close: 57.65), + CandlestickData(time: .string("2018-11-08"), open: 57.70, high: 58.44, low: 57.66, close: 58.27), + CandlestickData(time: .string("2018-11-09"), open: 58.32, high: 59.20, low: 57.94, close: 58.46), + CandlestickData(time: .string("2018-11-12"), open: 58.84, high: 59.40, low: 58.54, close: 58.72), + CandlestickData(time: .string("2018-11-13"), open: 59.09, high: 59.14, low: 58.32, close: 58.66), + CandlestickData(time: .string("2018-11-14"), open: 59.13, high: 59.32, low: 58.41, close: 58.94), + CandlestickData(time: .string("2018-11-15"), open: 58.85, high: 59.09, low: 58.45, close: 59.08), + CandlestickData(time: .string("2018-11-16"), open: 59.06, high: 60.39, low: 58.91, close: 60.21), + CandlestickData(time: .string("2018-11-19"), open: 60.25, high: 61.32, low: 60.18, close: 60.62), + CandlestickData(time: .string("2018-11-20"), open: 61.03, high: 61.58, low: 59.17, close: 59.46), + CandlestickData(time: .string("2018-11-21"), open: 59.26, high: 59.90, low: 58.88, close: 59.16), + CandlestickData(time: .string("2018-11-23"), open: 58.86, high: 59.00, low: 58.29, close: 58.64), + CandlestickData(time: .string("2018-11-26"), open: 58.64, high: 59.51, low: 58.31, close: 59.17), + CandlestickData(time: .string("2018-11-27"), open: 59.21, high: 60.70, low: 59.18, close: 60.65), + CandlestickData(time: .string("2018-11-28"), open: 60.70, high: 60.73, low: 59.64, close: 60.06), + CandlestickData(time: .string("2018-11-29"), open: 59.42, high: 59.79, low: 59.26, close: 59.45), + CandlestickData(time: .string("2018-11-30"), open: 59.57, high: 60.37, low: 59.48, close: 60.30), + CandlestickData(time: .string("2018-12-03"), open: 59.50, high: 59.75, low: 57.69, close: 58.16), + CandlestickData(time: .string("2018-12-04"), open: 58.10, high: 59.40, low: 57.96, close: 58.09), + CandlestickData(time: .string("2018-12-06"), open: 58.18, high: 58.64, low: 57.16, close: 58.08), + CandlestickData(time: .string("2018-12-07"), open: 57.91, high: 58.43, low: 57.34, close: 57.68), + CandlestickData(time: .string("2018-12-10"), open: 57.80, high: 58.37, low: 56.87, close: 58.27), + CandlestickData(time: .string("2018-12-11"), open: 58.77, high: 59.40, low: 58.63, close: 58.85), + CandlestickData(time: .string("2018-12-12"), open: 57.79, high: 58.19, low: 57.23, close: 57.25), + CandlestickData(time: .string("2018-12-13"), open: 57.00, high: 57.50, low: 56.81, close: 57.09), + CandlestickData(time: .string("2018-12-14"), open: 56.95, high: 57.50, low: 56.75, close: 57.08), + CandlestickData(time: .string("2018-12-17"), open: 57.06, high: 57.31, low: 55.53, close: 55.95), + CandlestickData(time: .string("2018-12-18"), open: 55.94, high: 56.69, low: 55.31, close: 55.65), + CandlestickData(time: .string("2018-12-19"), open: 55.72, high: 56.92, low: 55.50, close: 55.86), + CandlestickData(time: .string("2018-12-20"), open: 55.92, high: 56.01, low: 54.26, close: 55.07), + CandlestickData(time: .string("2018-12-21"), open: 54.84, high: 56.53, low: 54.24, close: 54.92), + CandlestickData(time: .string("2018-12-24"), open: 54.68, high: 55.04, low: 52.94, close: 53.05), + CandlestickData(time: .string("2018-12-26"), open: 53.23, high: 54.47, low: 52.40, close: 54.44), + CandlestickData(time: .string("2018-12-27"), open: 54.31, high: 55.17, low: 53.35, close: 55.15), + CandlestickData(time: .string("2018-12-28"), open: 55.37, high: 55.86, low: 54.90, close: 55.27), + CandlestickData(time: .string("2018-12-31"), open: 55.53, high: 56.23, low: 55.07, close: 56.22), + CandlestickData(time: .string("2019-01-02"), open: 56.16, high: 56.16, low: 55.28, close: 56.02), + CandlestickData(time: .string("2019-01-03"), open: 56.30, high: 56.99, low: 56.06, close: 56.22), + CandlestickData(time: .string("2019-01-04"), open: 56.49, high: 56.89, low: 55.95, close: 56.36), + CandlestickData(time: .string("2019-01-07"), open: 56.76, high: 57.26, low: 56.55, close: 56.72), + CandlestickData(time: .string("2019-01-08"), open: 57.27, high: 58.69, low: 57.05, close: 58.38), + CandlestickData(time: .string("2019-01-09"), open: 57.68, high: 57.72, low: 56.85, close: 57.05), + CandlestickData(time: .string("2019-01-10"), open: 57.29, high: 57.70, low: 56.87, close: 57.60), + CandlestickData(time: .string("2019-01-11"), open: 57.84, high: 58.26, low: 57.42, close: 58.02), + CandlestickData(time: .string("2019-01-14"), open: 57.83, high: 58.15, low: 57.67, close: 58.03), + CandlestickData(time: .string("2019-01-15"), open: 57.74, high: 58.29, low: 57.58, close: 58.10), + CandlestickData(time: .string("2019-01-16"), open: 57.93, high: 57.93, low: 57.00, close: 57.08), + CandlestickData(time: .string("2019-01-17"), open: 57.16, high: 57.40, low: 56.21, close: 56.83), + CandlestickData(time: .string("2019-01-18"), open: 56.92, high: 57.47, low: 56.84, close: 57.09), + CandlestickData(time: .string("2019-01-22"), open: 57.23, high: 57.39, low: 56.40, close: 56.99), + CandlestickData(time: .string("2019-01-23"), open: 56.98, high: 57.87, low: 56.93, close: 57.76), + CandlestickData(time: .string("2019-01-24"), open: 57.61, high: 57.65, low: 56.50, close: 57.07), + CandlestickData(time: .string("2019-01-25"), open: 57.18, high: 57.47, low: 56.23, close: 56.40), + CandlestickData(time: .string("2019-01-28"), open: 56.12, high: 56.22, low: 54.80, close: 55.07), + CandlestickData(time: .string("2019-01-29"), open: 53.62, high: 54.30, low: 52.97, close: 53.28), + CandlestickData(time: .string("2019-01-30"), open: 53.10, high: 54.02, low: 52.28, close: 54.00), + CandlestickData(time: .string("2019-01-31"), open: 54.05, high: 55.19, low: 53.53, close: 55.06), + CandlestickData(time: .string("2019-02-01"), open: 55.21, high: 55.30, low: 54.47, close: 54.55), + CandlestickData(time: .string("2019-02-04"), open: 54.60, high: 54.69, low: 53.67, close: 54.04), + CandlestickData(time: .string("2019-02-05"), open: 54.10, high: 54.34, low: 53.61, close: 54.14), + CandlestickData(time: .string("2019-02-06"), open: 54.11, high: 54.37, low: 53.68, close: 53.79), + CandlestickData(time: .string("2019-02-07"), open: 53.61, high: 53.73, low: 53.02, close: 53.57), + CandlestickData(time: .string("2019-02-08"), open: 53.36, high: 53.96, low: 53.30, close: 53.95), + CandlestickData(time: .string("2019-02-11"), open: 54.13, high: 54.37, low: 53.86, close: 54.05), + CandlestickData(time: .string("2019-02-12"), open: 54.45, high: 54.77, low: 54.19, close: 54.42), + CandlestickData(time: .string("2019-02-13"), open: 54.35, high: 54.77, low: 54.28, close: 54.48), + CandlestickData(time: .string("2019-02-14"), open: 54.38, high: 54.52, low: 53.95, close: 54.03), + CandlestickData(time: .string("2019-02-15"), open: 54.48, high: 55.19, low: 54.32, close: 55.16), + CandlestickData(time: .string("2019-02-19"), open: 55.06, high: 55.66, low: 54.82, close: 55.44), + CandlestickData(time: .string("2019-02-20"), open: 55.37, high: 55.91, low: 55.24, close: 55.76), + CandlestickData(time: .string("2019-02-21"), open: 55.55, high: 56.72, low: 55.46, close: 56.15), + CandlestickData(time: .string("2019-02-22"), open: 56.43, high: 57.13, low: 56.40, close: 56.92), + CandlestickData(time: .string("2019-02-25"), open: 57.00, high: 57.27, low: 56.55, close: 56.78), + CandlestickData(time: .string("2019-02-26"), open: 56.82, high: 57.09, low: 56.46, close: 56.64), + CandlestickData(time: .string("2019-02-27"), open: 56.55, high: 56.73, low: 56.35, close: 56.72), + CandlestickData(time: .string("2019-02-28"), open: 56.74, high: 57.61, low: 56.72, close: 56.92), + CandlestickData(time: .string("2019-03-01"), open: 57.02, high: 57.15, low: 56.35, close: 56.96), + CandlestickData(time: .string("2019-03-04"), open: 57.15, high: 57.34, low: 55.66, close: 56.24), + CandlestickData(time: .string("2019-03-05"), open: 56.09, high: 56.17, low: 55.51, close: 56.08), + CandlestickData(time: .string("2019-03-06"), open: 56.19, high: 56.42, low: 55.45, close: 55.68), + CandlestickData(time: .string("2019-03-07"), open: 55.76, high: 56.40, low: 55.72, close: 56.30), + CandlestickData(time: .string("2019-03-08"), open: 56.36, high: 56.68, low: 56.00, close: 56.53), + CandlestickData(time: .string("2019-03-11"), open: 56.76, high: 57.62, low: 56.75, close: 57.58), + CandlestickData(time: .string("2019-03-12"), open: 57.63, high: 58.11, low: 57.36, close: 57.43), + CandlestickData(time: .string("2019-03-13"), open: 57.37, high: 57.74, low: 57.34, close: 57.66), + CandlestickData(time: .string("2019-03-14"), open: 57.71, high: 58.09, low: 57.51, close: 57.95), + CandlestickData(time: .string("2019-03-15"), open: 58.04, high: 58.51, low: 57.93, close: 58.39), + CandlestickData(time: .string("2019-03-18"), open: 58.27, high: 58.32, low: 57.56, close: 58.07), + CandlestickData(time: .string("2019-03-19"), open: 58.10, high: 58.20, low: 57.31, close: 57.50), + CandlestickData(time: .string("2019-03-20"), open: 57.51, high: 58.05, low: 57.11, close: 57.67), + CandlestickData(time: .string("2019-03-21"), open: 57.58, high: 58.49, low: 57.57, close: 58.29), + CandlestickData(time: .string("2019-03-22"), open: 58.16, high: 60.00, low: 58.13, close: 59.76), + CandlestickData(time: .string("2019-03-25"), open: 59.63, high: 60.19, low: 59.53, close: 60.08), + CandlestickData(time: .string("2019-03-26"), open: 60.30, high: 60.69, low: 60.17, close: 60.63), + CandlestickData(time: .string("2019-03-27"), open: 60.56, high: 61.19, low: 60.48, close: 60.88), + CandlestickData(time: .string("2019-03-28"), open: 60.88, high: 60.89, low: 58.44, close: 59.08), + CandlestickData(time: .string("2019-03-29"), open: 59.20, high: 59.27, low: 58.32, close: 59.13), + CandlestickData(time: .string("2019-04-01"), open: 59.39, high: 59.41, low: 58.79, close: 59.09), + CandlestickData(time: .string("2019-04-02"), open: 59.22, high: 59.23, low: 58.34, close: 58.53), + CandlestickData(time: .string("2019-04-03"), open: 58.78, high: 59.07, low: 58.41, close: 58.87), + CandlestickData(time: .string("2019-04-04"), open: 58.84, high: 59.10, low: 58.77, close: 58.99), + CandlestickData(time: .string("2019-04-05"), open: 59.02, high: 59.09, low: 58.82, close: 59.09), + CandlestickData(time: .string("2019-04-08"), open: 59.02, high: 59.13, low: 58.72, close: 59.13), + CandlestickData(time: .string("2019-04-09"), open: 58.37, high: 58.56, low: 58.04, close: 58.40), + CandlestickData(time: .string("2019-04-10"), open: 58.40, high: 58.70, low: 58.36, close: 58.61), + CandlestickData(time: .string("2019-04-11"), open: 58.65, high: 58.73, low: 58.20, close: 58.56), + CandlestickData(time: .string("2019-04-12"), open: 58.75, high: 58.79, low: 58.52, close: 58.74), + CandlestickData(time: .string("2019-04-15"), open: 58.91, high: 58.95, low: 58.59, close: 58.71), + CandlestickData(time: .string("2019-04-16"), open: 58.79, high: 58.98, low: 58.66, close: 58.79), + CandlestickData(time: .string("2019-04-17"), open: 58.40, high: 58.46, low: 57.64, close: 57.78), + CandlestickData(time: .string("2019-04-18"), open: 57.51, high: 58.20, low: 57.28, close: 58.04), + CandlestickData(time: .string("2019-04-22"), open: 58.14, high: 58.49, low: 57.89, close: 58.37), + CandlestickData(time: .string("2019-04-23"), open: 57.62, high: 57.72, low: 56.30, close: 57.15), + CandlestickData(time: .string("2019-04-24"), open: 57.34, high: 57.57, low: 56.73, close: 57.08), + CandlestickData(time: .string("2019-04-25"), open: 56.82, high: 56.90, low: 55.75, close: 55.85), + CandlestickData(time: .string("2019-04-26"), open: 56.06, high: 56.81, low: 55.83, close: 56.58), + CandlestickData(time: .string("2019-04-29"), open: 56.75, high: 57.17, low: 56.71, close: 56.84), + CandlestickData(time: .string("2019-04-30"), open: 56.99, high: 57.45, low: 56.76, close: 57.19), + CandlestickData(time: .string("2019-05-01"), open: 57.23, high: 57.30, low: 56.52, close: 56.52), + CandlestickData(time: .string("2019-05-02"), open: 56.81, high: 58.23, low: 56.68, close: 56.99), + CandlestickData(time: .string("2019-05-03"), open: 57.15, high: 57.36, low: 56.87, close: 57.24), + CandlestickData(time: .string("2019-05-06"), open: 56.83, high: 57.09, low: 56.74, close: 56.91), + CandlestickData(time: .string("2019-05-07"), open: 56.69, high: 56.81, low: 56.33, close: 56.63), + CandlestickData(time: .string("2019-05-08"), open: 56.66, high: 56.70, low: 56.25, close: 56.38), + CandlestickData(time: .string("2019-05-09"), open: 56.12, high: 56.56, low: 55.93, close: 56.48), + CandlestickData(time: .string("2019-05-10"), open: 56.49, high: 57.04, low: 56.26, close: 56.91), + CandlestickData(time: .string("2019-05-13"), open: 56.72, high: 57.34, low: 56.66, close: 56.75), + CandlestickData(time: .string("2019-05-14"), open: 56.76, high: 57.19, low: 56.50, close: 56.55), + CandlestickData(time: .string("2019-05-15"), open: 56.51, high: 56.84, low: 56.17, close: 56.81), + CandlestickData(time: .string("2019-05-16"), open: 57.00, high: 57.80, low: 56.82, close: 57.38), + CandlestickData(time: .string("2019-05-17"), open: 57.06, high: 58.48, low: 57.01, close: 58.09), + CandlestickData(time: .string("2019-05-20"), open: 59.15, high: 60.54, low: 58.00, close: 59.01), + CandlestickData(time: .string("2019-05-21"), open: 59.10, high: 59.63, low: 58.76, close: 59.50), + CandlestickData(time: .string("2019-05-22"), open: 59.09, high: 59.37, low: 58.96, close: 59.25), + CandlestickData(time: .string("2019-05-23"), open: 59.00, high: 59.27, low: 58.54, close: 58.87), + CandlestickData(time: .string("2019-05-24"), open: 59.07, high: 59.36, low: 58.67, close: 59.32), + CandlestickData(time: .string("2019-05-28"), open: 59.21, high: 59.66, low: 59.02, close: 59.57) ] private lazy var lastClose = data.last!.close private lazy var lastIndex = data.endIndex - 1 @@ -164,7 +164,7 @@ class RealtimeEmulationViewController: UIViewController { private lazy var currentIndex = lastIndex + 1 private var ticksInCurrentBar = 0 private var currentBusinessDay = BusinessDay(year: 2019, month: 5, day: 29) - private lazy var currentBar = BarData(time: .businessDay(currentBusinessDay), open: nil, high: nil, low: nil, close: nil) + private lazy var currentBar = CandlestickData(time: .businessDay(currentBusinessDay), open: nil, high: nil, low: nil, close: nil) private var randomPrice: Double { 10 + .random(in: 0...1) * 10000 / 100 @@ -244,7 +244,7 @@ class RealtimeEmulationViewController: UIViewController { // move to next bar currentIndex += 1 currentBusinessDay = nextBusinessDay(currentBusinessDay) - currentBar = BarData(time: .businessDay(currentBusinessDay), open: nil, high: nil, low: nil, close: nil) + currentBar = CandlestickData(time: .businessDay(currentBusinessDay), open: nil, high: nil, low: nil, close: nil) ticksInCurrentBar = 0 if currentIndex == 5000 { reset() diff --git a/Sources/LightweightCharts/Implementations/API/Series/CandlestickSeries.swift b/Sources/LightweightCharts/Implementations/API/Series/CandlestickSeries.swift index 41fa2a4..93336cc 100644 --- a/Sources/LightweightCharts/Implementations/API/Series/CandlestickSeries.swift +++ b/Sources/LightweightCharts/Implementations/API/Series/CandlestickSeries.swift @@ -3,6 +3,6 @@ import Foundation public class CandlestickSeries: SeriesObject, SeriesApi { public typealias Options = CandlestickSeriesOptions - public typealias TickValue = BarData + public typealias TickValue = CandlestickData } diff --git a/Sources/LightweightCharts/LightweightChartsModels/Data/SeriesData/BarData.swift b/Sources/LightweightCharts/LightweightChartsModels/Data/SeriesData/BarData.swift index d37abcd..b6931db 100644 --- a/Sources/LightweightCharts/LightweightChartsModels/Data/SeriesData/BarData.swift +++ b/Sources/LightweightCharts/LightweightChartsModels/Data/SeriesData/BarData.swift @@ -1,14 +1,7 @@ import Foundation -protocol BarSeriesData: SeriesData { - - var time: Time { get } - - var open: Double? { get } - var high: Double? { get } - var low: Double? { get } - var close: Double? { get } - +protocol BarSeriesData: OhlcData { + var color: ChartColor? { get } } // MARK: - @@ -19,13 +12,15 @@ public struct BarData: BarSeriesData { public var high: Double? public var low: Double? public var close: Double? + public var color: ChartColor? - public init(time: Time, open: Double?, high: Double?, low: Double?, close: Double?) { + public init(time: Time, open: Double?, high: Double?, low: Double?, close: Double?, color: ChartColor? = nil) { self.time = time self.open = open self.high = high self.low = low self.close = close + self.color = color } } diff --git a/Sources/LightweightCharts/LightweightChartsModels/Data/SeriesData/CandlestickData.swift b/Sources/LightweightCharts/LightweightChartsModels/Data/SeriesData/CandlestickData.swift new file mode 100644 index 0000000..32c2cda --- /dev/null +++ b/Sources/LightweightCharts/LightweightChartsModels/Data/SeriesData/CandlestickData.swift @@ -0,0 +1,37 @@ +import Foundation + +protocol CandlestickSeriesData : OhlcData { + var color: ChartColor? { get } + var borderColor: ChartColor? { get } + var wickColor: ChartColor? { get } +} + +// MARK: - +public struct CandlestickData : CandlestickSeriesData { + public var time: Time + public var open: Double? + public var high: Double? + public var low: Double? + public var close: Double? + public var color: ChartColor? + public var borderColor: ChartColor? + public var wickColor: ChartColor? + + public init(time: Time, + open: Double?, + high: Double?, + low: Double?, + close: Double?, + color: ChartColor? = nil, + borderColor: ChartColor? = nil, + wickColor: ChartColor? = nil) { + self.time = time + self.open = open + self.high = high + self.low = low + self.close = close + self.color = color + self.borderColor = borderColor + self.wickColor = wickColor + } +} diff --git a/Sources/LightweightCharts/LightweightChartsModels/Data/SeriesData/HistogramData.swift b/Sources/LightweightCharts/LightweightChartsModels/Data/SeriesData/HistogramData.swift index 9fdbcf0..8f0ed57 100644 --- a/Sources/LightweightCharts/LightweightChartsModels/Data/SeriesData/HistogramData.swift +++ b/Sources/LightweightCharts/LightweightChartsModels/Data/SeriesData/HistogramData.swift @@ -25,4 +25,9 @@ public struct HistogramData: HistogramSeriesData { self.value = value } + public init(time: Time, value: Double?, color: ChartColor? = nil) { + self.time = time + self.value = value + self.color = color + } } diff --git a/Sources/LightweightCharts/LightweightChartsModels/Data/SeriesData/LineData.swift b/Sources/LightweightCharts/LightweightChartsModels/Data/SeriesData/LineData.swift index aff0aa3..5e6a71c 100644 --- a/Sources/LightweightCharts/LightweightChartsModels/Data/SeriesData/LineData.swift +++ b/Sources/LightweightCharts/LightweightChartsModels/Data/SeriesData/LineData.swift @@ -1,12 +1,11 @@ import Foundation -protocol LineSeriesData: SeriesData { - +protocol LineSeriesData: SingleValueData { + /** - * Price value of data item + Optional color value for certain data item. If missed, color from options is used */ - var value: Double? { get } - + var color: ChartColor? { get } } // MARK: - @@ -17,8 +16,9 @@ public struct LineData: LineSeriesData { public var time: Time public var value: Double? + public var color: ChartColor? - public init(time: Time, value: Double?) { + public init(time: Time, value: Double?, color: ChartColor? = nil) { self.time = time self.value = value } diff --git a/Sources/LightweightCharts/LightweightChartsModels/Data/SeriesData/OhlcData.swift b/Sources/LightweightCharts/LightweightChartsModels/Data/SeriesData/OhlcData.swift new file mode 100644 index 0000000..56594fa --- /dev/null +++ b/Sources/LightweightCharts/LightweightChartsModels/Data/SeriesData/OhlcData.swift @@ -0,0 +1,32 @@ +import Foundation + +/** + Represents a bar with a Time and open, high, low, and close prices. + */ +public protocol OhlcData : SeriesData { + + /** + The bar time + */ + var time: Time { get } + + /** + The open price + */ + var open: Double? { get } + + /** + The high price + */ + var high: Double? { get } + + /** + The low price + */ + var low: Double? { get } + + /** + The close price + */ + var close: Double? { get } +} diff --git a/Sources/LightweightCharts/LightweightChartsModels/Data/SeriesData/SeriesData.swift b/Sources/LightweightCharts/LightweightChartsModels/Data/SeriesData/SeriesData.swift index 6b237b0..4e139ae 100644 --- a/Sources/LightweightCharts/LightweightChartsModels/Data/SeriesData/SeriesData.swift +++ b/Sources/LightweightCharts/LightweightChartsModels/Data/SeriesData/SeriesData.swift @@ -2,6 +2,9 @@ import Foundation public protocol SeriesData: Codable { + /** + The time of the data + */ var time: Time { get } } diff --git a/Sources/LightweightCharts/LightweightChartsModels/Data/SeriesData/SingleValueData.swift b/Sources/LightweightCharts/LightweightChartsModels/Data/SeriesData/SingleValueData.swift new file mode 100644 index 0000000..31bbb8d --- /dev/null +++ b/Sources/LightweightCharts/LightweightChartsModels/Data/SeriesData/SingleValueData.swift @@ -0,0 +1,12 @@ +import Foundation + +/** + A base interface for a data point of single-value series + */ +public protocol SingleValueData : SeriesData { + + /** + * Price value of data item + */ + var value: Double? { get } +} From 6d0f73e1765058a8e00ee4476f5eb90c8b42a355 Mon Sep 17 00:00:00 2001 From: Alexandr Nevyantsev Date: Wed, 16 Mar 2022 01:24:05 +0300 Subject: [PATCH 3/6] Add lineVisible option to PriceLineOptions --- .../project.pbxproj | 2 ++ .../Example/PriceLineViewController.swift | 10 ++++-- .../Options/Basics/PriceLineOptions.swift | 33 +++++++++++++++++++ 3 files changed, 43 insertions(+), 2 deletions(-) diff --git a/Example/LightweightCharts.xcodeproj/project.pbxproj b/Example/LightweightCharts.xcodeproj/project.pbxproj index dd581c9..09aa529 100644 --- a/Example/LightweightCharts.xcodeproj/project.pbxproj +++ b/Example/LightweightCharts.xcodeproj/project.pbxproj @@ -560,6 +560,7 @@ ONLY_ACTIVE_ARCH = YES; SDKROOT = iphoneos; SWIFT_OPTIMIZATION_LEVEL = "-Onone"; + SWIFT_VERSION = 5.0; }; name = Debug; }; @@ -608,6 +609,7 @@ MTL_ENABLE_DEBUG_INFO = NO; SDKROOT = iphoneos; SWIFT_OPTIMIZATION_LEVEL = "-Owholemodule"; + SWIFT_VERSION = 5.0; VALIDATE_PRODUCT = YES; }; name = Release; diff --git a/Example/LightweightCharts/Example/PriceLineViewController.swift b/Example/LightweightCharts/Example/PriceLineViewController.swift index 82c3c65..5fe4289 100644 --- a/Example/LightweightCharts/Example/PriceLineViewController.swift +++ b/Example/LightweightCharts/Example/PriceLineViewController.swift @@ -22,7 +22,10 @@ class PriceLineViewController: UIViewController { let options = PriceLineOptions( price: 20, lineWidth: .two, - lineStyle: .dotted + lineStyle: .dotted, + lineVisible: false, + axisLabelVisible: false, + title: "asdasd" ) priceLine.applyOptions(options: options) } @@ -65,7 +68,10 @@ class PriceLineViewController: UIViewController { price: 10, color: "#f00", lineWidth: .one, - lineStyle: .solid + lineStyle: .solid, + lineVisible: true, + axisLabelVisible: true, + title: "asdasd" ) let priceLine = series.createPriceLine(options: options) self.priceLine = priceLine diff --git a/Sources/LightweightCharts/LightweightChartsModels/Options/Basics/PriceLineOptions.swift b/Sources/LightweightCharts/LightweightChartsModels/Options/Basics/PriceLineOptions.swift index 2c5d271..72953d8 100644 --- a/Sources/LightweightCharts/LightweightChartsModels/Options/Basics/PriceLineOptions.swift +++ b/Sources/LightweightCharts/LightweightChartsModels/Options/Basics/PriceLineOptions.swift @@ -1,24 +1,57 @@ import Foundation +/** + Represents a price line options + */ public struct PriceLineOptions: Codable { + /** + Price line's value + */ public var price: Double? + + /** + Price line's color + */ public var color: ChartColor? + + /** + Price line's width in pixels + */ public var lineWidth: LineWidth? + + /** + Price line's style + */ public var lineStyle: LineStyle? + + /** + Display line + */ + public var lineVisible: Bool? + + /** + Display the current price value in on the price scale + */ public var axisLabelVisible: Bool? + + /** + Price line's on the chart pane + */ public var title: String? public init(price: Double? = nil, color: ChartColor? = nil, lineWidth: LineWidth? = nil, lineStyle: LineStyle? = nil, + lineVisible: Bool? = nil, axisLabelVisible: Bool? = nil, title: String? = nil) { self.price = price self.color = color self.lineWidth = lineWidth self.lineStyle = lineStyle + self.lineVisible = lineVisible self.axisLabelVisible = axisLabelVisible self.title = title } From b8b05d3ea881b40dafe44f661f025bc2e4a7766c Mon Sep 17 00:00:00 2001 From: Alexandr Nevyantsev Date: Wed, 16 Mar 2022 01:35:51 +0300 Subject: [PATCH 4/6] Fix examples --- .../Example/PriceLineViewController.swift | 10 ++-------- 1 file changed, 2 insertions(+), 8 deletions(-) diff --git a/Example/LightweightCharts/Example/PriceLineViewController.swift b/Example/LightweightCharts/Example/PriceLineViewController.swift index 5fe4289..82c3c65 100644 --- a/Example/LightweightCharts/Example/PriceLineViewController.swift +++ b/Example/LightweightCharts/Example/PriceLineViewController.swift @@ -22,10 +22,7 @@ class PriceLineViewController: UIViewController { let options = PriceLineOptions( price: 20, lineWidth: .two, - lineStyle: .dotted, - lineVisible: false, - axisLabelVisible: false, - title: "asdasd" + lineStyle: .dotted ) priceLine.applyOptions(options: options) } @@ -68,10 +65,7 @@ class PriceLineViewController: UIViewController { price: 10, color: "#f00", lineWidth: .one, - lineStyle: .solid, - lineVisible: true, - axisLabelVisible: true, - title: "asdasd" + lineStyle: .solid ) let priceLine = series.createPriceLine(options: options) self.priceLine = priceLine From cd47c13989aa313e8b7ded15d51910e8b04a543d Mon Sep 17 00:00:00 2001 From: Alexandr Nevyantsev Date: Mon, 21 Mar 2022 18:53:05 +0300 Subject: [PATCH 5/6] Use SingleValueData for AreaSeries and BaselineSeries --- .../CustomFontFamilyViewController.swift | 300 +++--- .../CustomPriceFormatterViewController.swift | 300 +++--- .../Example/CustomThemesViewController.swift | 300 +++--- .../CustomWatermarkViewController.swift | 300 +++--- .../Example/FitContentViewController.swift | 700 ++++++------- .../FloatingTooltipViewController.swift | 600 +++++------ .../GoToRealtimeButtonViewController.swift | 300 +++--- .../Example/LegendViewController.swift | 300 +++--- .../MagnifierTooltipViewController.swift | 600 +++++------ .../Example/NoPriceScaleViewController.swift | 300 +++--- .../Example/NoTimeScaleViewController.swift | 300 +++--- .../PercentagePriceScaleViewController.swift | 600 +++++------ .../Example/PriceLineViewController.swift | 6 +- .../PriceScaleAtLeftViewController.swift | 300 +++--- .../Example/RangeSwitcherViewController.swift | 930 +++++++++--------- .../ThreeLineLegendViewController.swift | 600 +++++------ .../TrackingTooltipViewController.swift | 300 +++--- .../Example/VolumeStudyViewController.swift | 300 +++--- .../API/Series/AreaSeries.swift | 2 +- .../API/Series/BaselineSeries.swift | 2 +- .../Data/SeriesData/LineData.swift | 3 +- .../Data/SeriesData/SingleValueData.swift | 12 - .../SeriesData/SingleValueSeriesData.swift | 23 + 23 files changed, 3695 insertions(+), 3683 deletions(-) delete mode 100644 Sources/LightweightCharts/LightweightChartsModels/Data/SeriesData/SingleValueData.swift create mode 100644 Sources/LightweightCharts/LightweightChartsModels/Data/SeriesData/SingleValueSeriesData.swift diff --git a/Example/LightweightCharts/Example/CustomFontFamilyViewController.swift b/Example/LightweightCharts/Example/CustomFontFamilyViewController.swift index 0573bb3..d83e826 100644 --- a/Example/LightweightCharts/Example/CustomFontFamilyViewController.swift +++ b/Example/LightweightCharts/Example/CustomFontFamilyViewController.swift @@ -73,156 +73,156 @@ class CustomFontFamilyViewController: UIViewController { ) let series = chart.addAreaSeries(options: options) let data = [ - LineData(time: .string("2018-10-19"), value: 46.33), - LineData(time: .string("2018-10-22"), value: 45.97), - LineData(time: .string("2018-10-23"), value: 46.36), - LineData(time: .string("2018-10-24"), value: 46.73), - LineData(time: .string("2018-10-25"), value: 46.51), - LineData(time: .string("2018-10-26"), value: 45.92), - LineData(time: .string("2018-10-29"), value: 46.46), - LineData(time: .string("2018-10-30"), value: 47.63), - LineData(time: .string("2018-10-31"), value: 47.88), - LineData(time: .string("2018-11-01"), value: 47.74), - LineData(time: .string("2018-11-02"), value: 48.00), - LineData(time: .string("2018-11-05"), value: 48.69), - LineData(time: .string("2018-11-06"), value: 49.11), - LineData(time: .string("2018-11-07"), value: 49.37), - LineData(time: .string("2018-11-08"), value: 49.33), - LineData(time: .string("2018-11-09"), value: 49.68), - LineData(time: .string("2018-11-12"), value: 49.87), - LineData(time: .string("2018-11-13"), value: 49.86), - LineData(time: .string("2018-11-14"), value: 49.76), - LineData(time: .string("2018-11-15"), value: 49.74), - LineData(time: .string("2018-11-16"), value: 50.17), - LineData(time: .string("2018-11-19"), value: 50.51), - LineData(time: .string("2018-11-20"), value: 49.38), - LineData(time: .string("2018-11-21"), value: 48.73), - LineData(time: .string("2018-11-23"), value: 49.02), - LineData(time: .string("2018-11-26"), value: 48.87), - LineData(time: .string("2018-11-27"), value: 49.37), - LineData(time: .string("2018-11-28"), value: 49.71), - LineData(time: .string("2018-11-29"), value: 48.98), - LineData(time: .string("2018-11-30"), value: 50.40), - LineData(time: .string("2018-12-03"), value: 49.69), - LineData(time: .string("2018-12-04"), value: 49.58), - LineData(time: .string("2018-12-06"), value: 49.38), - LineData(time: .string("2018-12-07"), value: 49.09), - LineData(time: .string("2018-12-10"), value: 49.24), - LineData(time: .string("2018-12-11"), value: 49.54), - LineData(time: .string("2018-12-12"), value: 49.22), - LineData(time: .string("2018-12-13"), value: 49.47), - LineData(time: .string("2018-12-14"), value: 49.34), - LineData(time: .string("2018-12-17"), value: 48.33), - LineData(time: .string("2018-12-18"), value: 48.32), - LineData(time: .string("2018-12-19"), value: 47.90), - LineData(time: .string("2018-12-20"), value: 47.54), - LineData(time: .string("2018-12-21"), value: 47.57), - LineData(time: .string("2018-12-24"), value: 45.96), - LineData(time: .string("2018-12-26"), value: 46.94), - LineData(time: .string("2018-12-27"), value: 47.53), - LineData(time: .string("2018-12-28"), value: 47.20), - LineData(time: .string("2018-12-31"), value: 47.35), - LineData(time: .string("2019-01-02"), value: 46.93), - LineData(time: .string("2019-01-03"), value: 46.64), - LineData(time: .string("2019-01-04"), value: 47.57), - LineData(time: .string("2019-01-07"), value: 46.95), - LineData(time: .string("2019-01-08"), value: 47.48), - LineData(time: .string("2019-01-09"), value: 46.57), - LineData(time: .string("2019-01-10"), value: 47.07), - LineData(time: .string("2019-01-11"), value: 47.34), - LineData(time: .string("2019-01-14"), value: 47.15), - LineData(time: .string("2019-01-15"), value: 47.57), - LineData(time: .string("2019-01-16"), value: 46.92), - LineData(time: .string("2019-01-17"), value: 47.06), - LineData(time: .string("2019-01-18"), value: 47.61), - LineData(time: .string("2019-01-22"), value: 47.72), - LineData(time: .string("2019-01-23"), value: 48.27), - LineData(time: .string("2019-01-24"), value: 47.69), - LineData(time: .string("2019-01-25"), value: 47.37), - LineData(time: .string("2019-01-28"), value: 47.17), - LineData(time: .string("2019-01-29"), value: 47.40), - LineData(time: .string("2019-01-30"), value: 47.86), - LineData(time: .string("2019-01-31"), value: 48.13), - LineData(time: .string("2019-02-01"), value: 48.70), - LineData(time: .string("2019-02-04"), value: 49.25), - LineData(time: .string("2019-02-05"), value: 49.26), - LineData(time: .string("2019-02-06"), value: 49.26), - LineData(time: .string("2019-02-07"), value: 49.42), - LineData(time: .string("2019-02-08"), value: 49.50), - LineData(time: .string("2019-02-11"), value: 49.61), - LineData(time: .string("2019-02-12"), value: 49.66), - LineData(time: .string("2019-02-13"), value: 49.79), - LineData(time: .string("2019-02-14"), value: 45.59), - LineData(time: .string("2019-02-15"), value: 45.24), - LineData(time: .string("2019-02-19"), value: 44.83), - LineData(time: .string("2019-02-20"), value: 45.10), - LineData(time: .string("2019-02-21"), value: 45.86), - LineData(time: .string("2019-02-22"), value: 45.28), - LineData(time: .string("2019-02-25"), value: 44.94), - LineData(time: .string("2019-02-26"), value: 44.69), - LineData(time: .string("2019-02-27"), value: 44.94), - LineData(time: .string("2019-02-28"), value: 45.34), - LineData(time: .string("2019-03-01"), value: 45.38), - LineData(time: .string("2019-03-04"), value: 45.65), - LineData(time: .string("2019-03-05"), value: 45.60), - LineData(time: .string("2019-03-06"), value: 45.45), - LineData(time: .string("2019-03-07"), value: 45.28), - LineData(time: .string("2019-03-08"), value: 44.84), - LineData(time: .string("2019-03-11"), value: 46.18), - LineData(time: .string("2019-03-12"), value: 46.05), - LineData(time: .string("2019-03-13"), value: 46.22), - LineData(time: .string("2019-03-14"), value: 45.70), - LineData(time: .string("2019-03-15"), value: 45.30), - LineData(time: .string("2019-03-18"), value: 45.41), - LineData(time: .string("2019-03-19"), value: 45.56), - LineData(time: .string("2019-03-20"), value: 45.53), - LineData(time: .string("2019-03-21"), value: 45.51), - LineData(time: .string("2019-03-22"), value: 45.93), - LineData(time: .string("2019-03-25"), value: 46.03), - LineData(time: .string("2019-03-26"), value: 46.64), - LineData(time: .string("2019-03-27"), value: 46.61), - LineData(time: .string("2019-03-28"), value: 46.58), - LineData(time: .string("2019-03-29"), value: 46.86), - LineData(time: .string("2019-04-01"), value: 46.72), - LineData(time: .string("2019-04-02"), value: 46.57), - LineData(time: .string("2019-04-03"), value: 46.18), - LineData(time: .string("2019-04-04"), value: 46.48), - LineData(time: .string("2019-04-05"), value: 46.47), - LineData(time: .string("2019-04-08"), value: 46.55), - LineData(time: .string("2019-04-09"), value: 46.67), - LineData(time: .string("2019-04-10"), value: 46.64), - LineData(time: .string("2019-04-11"), value: 46.71), - LineData(time: .string("2019-04-12"), value: 46.74), - LineData(time: .string("2019-04-15"), value: 47.00), - LineData(time: .string("2019-04-16"), value: 46.95), - LineData(time: .string("2019-04-17"), value: 47.28), - LineData(time: .string("2019-04-18"), value: 47.48), - LineData(time: .string("2019-04-22"), value: 47.40), - LineData(time: .string("2019-04-23"), value: 48.21), - LineData(time: .string("2019-04-24"), value: 47.98), - LineData(time: .string("2019-04-25"), value: 47.84), - LineData(time: .string("2019-04-26"), value: 48.26), - LineData(time: .string("2019-04-29"), value: 48.42), - LineData(time: .string("2019-04-30"), value: 49.06), - LineData(time: .string("2019-05-01"), value: 48.59), - LineData(time: .string("2019-05-02"), value: 48.39), - LineData(time: .string("2019-05-03"), value: 48.72), - LineData(time: .string("2019-05-06"), value: 48.47), - LineData(time: .string("2019-05-07"), value: 48.00), - LineData(time: .string("2019-05-08"), value: 47.85), - LineData(time: .string("2019-05-09"), value: 47.40), - LineData(time: .string("2019-05-10"), value: 48.19), - LineData(time: .string("2019-05-13"), value: 48.05), - LineData(time: .string("2019-05-14"), value: 48.69), - LineData(time: .string("2019-05-15"), value: 49.18), - LineData(time: .string("2019-05-16"), value: 49.58), - LineData(time: .string("2019-05-17"), value: 49.20), - LineData(time: .string("2019-05-20"), value: 48.85), - LineData(time: .string("2019-05-21"), value: 48.60), - LineData(time: .string("2019-05-22"), value: 49.65), - LineData(time: .string("2019-05-23"), value: 49.85), - LineData(time: .string("2019-05-24"), value: 49.61), - LineData(time: .string("2019-05-28"), value: 49.24) + SingleValueData(time: .string("2018-10-19"), value: 46.33), + SingleValueData(time: .string("2018-10-22"), value: 45.97), + SingleValueData(time: .string("2018-10-23"), value: 46.36), + SingleValueData(time: .string("2018-10-24"), value: 46.73), + SingleValueData(time: .string("2018-10-25"), value: 46.51), + SingleValueData(time: .string("2018-10-26"), value: 45.92), + SingleValueData(time: .string("2018-10-29"), value: 46.46), + SingleValueData(time: .string("2018-10-30"), value: 47.63), + SingleValueData(time: .string("2018-10-31"), value: 47.88), + SingleValueData(time: .string("2018-11-01"), value: 47.74), + SingleValueData(time: .string("2018-11-02"), value: 48.00), + SingleValueData(time: .string("2018-11-05"), value: 48.69), + SingleValueData(time: .string("2018-11-06"), value: 49.11), + SingleValueData(time: .string("2018-11-07"), value: 49.37), + SingleValueData(time: .string("2018-11-08"), value: 49.33), + SingleValueData(time: .string("2018-11-09"), value: 49.68), + SingleValueData(time: .string("2018-11-12"), value: 49.87), + SingleValueData(time: .string("2018-11-13"), value: 49.86), + SingleValueData(time: .string("2018-11-14"), value: 49.76), + SingleValueData(time: .string("2018-11-15"), value: 49.74), + SingleValueData(time: .string("2018-11-16"), value: 50.17), + SingleValueData(time: .string("2018-11-19"), value: 50.51), + SingleValueData(time: .string("2018-11-20"), value: 49.38), + SingleValueData(time: .string("2018-11-21"), value: 48.73), + SingleValueData(time: .string("2018-11-23"), value: 49.02), + SingleValueData(time: .string("2018-11-26"), value: 48.87), + SingleValueData(time: .string("2018-11-27"), value: 49.37), + SingleValueData(time: .string("2018-11-28"), value: 49.71), + SingleValueData(time: .string("2018-11-29"), value: 48.98), + SingleValueData(time: .string("2018-11-30"), value: 50.40), + SingleValueData(time: .string("2018-12-03"), value: 49.69), + SingleValueData(time: .string("2018-12-04"), value: 49.58), + SingleValueData(time: .string("2018-12-06"), value: 49.38), + SingleValueData(time: .string("2018-12-07"), value: 49.09), + SingleValueData(time: .string("2018-12-10"), value: 49.24), + SingleValueData(time: .string("2018-12-11"), value: 49.54), + SingleValueData(time: .string("2018-12-12"), value: 49.22), + SingleValueData(time: .string("2018-12-13"), value: 49.47), + SingleValueData(time: .string("2018-12-14"), value: 49.34), + SingleValueData(time: .string("2018-12-17"), value: 48.33), + SingleValueData(time: .string("2018-12-18"), value: 48.32), + SingleValueData(time: .string("2018-12-19"), value: 47.90), + SingleValueData(time: .string("2018-12-20"), value: 47.54), + SingleValueData(time: .string("2018-12-21"), value: 47.57), + SingleValueData(time: .string("2018-12-24"), value: 45.96), + SingleValueData(time: .string("2018-12-26"), value: 46.94), + SingleValueData(time: .string("2018-12-27"), value: 47.53), + SingleValueData(time: .string("2018-12-28"), value: 47.20), + SingleValueData(time: .string("2018-12-31"), value: 47.35), + SingleValueData(time: .string("2019-01-02"), value: 46.93), + SingleValueData(time: .string("2019-01-03"), value: 46.64), + SingleValueData(time: .string("2019-01-04"), value: 47.57), + SingleValueData(time: .string("2019-01-07"), value: 46.95), + SingleValueData(time: .string("2019-01-08"), value: 47.48), + SingleValueData(time: .string("2019-01-09"), value: 46.57), + SingleValueData(time: .string("2019-01-10"), value: 47.07), + SingleValueData(time: .string("2019-01-11"), value: 47.34), + SingleValueData(time: .string("2019-01-14"), value: 47.15), + SingleValueData(time: .string("2019-01-15"), value: 47.57), + SingleValueData(time: .string("2019-01-16"), value: 46.92), + SingleValueData(time: .string("2019-01-17"), value: 47.06), + SingleValueData(time: .string("2019-01-18"), value: 47.61), + SingleValueData(time: .string("2019-01-22"), value: 47.72), + SingleValueData(time: .string("2019-01-23"), value: 48.27), + SingleValueData(time: .string("2019-01-24"), value: 47.69), + SingleValueData(time: .string("2019-01-25"), value: 47.37), + SingleValueData(time: .string("2019-01-28"), value: 47.17), + SingleValueData(time: .string("2019-01-29"), value: 47.40), + SingleValueData(time: .string("2019-01-30"), value: 47.86), + SingleValueData(time: .string("2019-01-31"), value: 48.13), + SingleValueData(time: .string("2019-02-01"), value: 48.70), + SingleValueData(time: .string("2019-02-04"), value: 49.25), + SingleValueData(time: .string("2019-02-05"), value: 49.26), + SingleValueData(time: .string("2019-02-06"), value: 49.26), + SingleValueData(time: .string("2019-02-07"), value: 49.42), + SingleValueData(time: .string("2019-02-08"), value: 49.50), + SingleValueData(time: .string("2019-02-11"), value: 49.61), + SingleValueData(time: .string("2019-02-12"), value: 49.66), + SingleValueData(time: .string("2019-02-13"), value: 49.79), + SingleValueData(time: .string("2019-02-14"), value: 45.59), + SingleValueData(time: .string("2019-02-15"), value: 45.24), + SingleValueData(time: .string("2019-02-19"), value: 44.83), + SingleValueData(time: .string("2019-02-20"), value: 45.10), + SingleValueData(time: .string("2019-02-21"), value: 45.86), + SingleValueData(time: .string("2019-02-22"), value: 45.28), + SingleValueData(time: .string("2019-02-25"), value: 44.94), + SingleValueData(time: .string("2019-02-26"), value: 44.69), + SingleValueData(time: .string("2019-02-27"), value: 44.94), + SingleValueData(time: .string("2019-02-28"), value: 45.34), + SingleValueData(time: .string("2019-03-01"), value: 45.38), + SingleValueData(time: .string("2019-03-04"), value: 45.65), + SingleValueData(time: .string("2019-03-05"), value: 45.60), + SingleValueData(time: .string("2019-03-06"), value: 45.45), + SingleValueData(time: .string("2019-03-07"), value: 45.28), + SingleValueData(time: .string("2019-03-08"), value: 44.84), + SingleValueData(time: .string("2019-03-11"), value: 46.18), + SingleValueData(time: .string("2019-03-12"), value: 46.05), + SingleValueData(time: .string("2019-03-13"), value: 46.22), + SingleValueData(time: .string("2019-03-14"), value: 45.70), + SingleValueData(time: .string("2019-03-15"), value: 45.30), + SingleValueData(time: .string("2019-03-18"), value: 45.41), + SingleValueData(time: .string("2019-03-19"), value: 45.56), + SingleValueData(time: .string("2019-03-20"), value: 45.53), + SingleValueData(time: .string("2019-03-21"), value: 45.51), + SingleValueData(time: .string("2019-03-22"), value: 45.93), + SingleValueData(time: .string("2019-03-25"), value: 46.03), + SingleValueData(time: .string("2019-03-26"), value: 46.64), + SingleValueData(time: .string("2019-03-27"), value: 46.61), + SingleValueData(time: .string("2019-03-28"), value: 46.58), + SingleValueData(time: .string("2019-03-29"), value: 46.86), + SingleValueData(time: .string("2019-04-01"), value: 46.72), + SingleValueData(time: .string("2019-04-02"), value: 46.57), + SingleValueData(time: .string("2019-04-03"), value: 46.18), + SingleValueData(time: .string("2019-04-04"), value: 46.48), + SingleValueData(time: .string("2019-04-05"), value: 46.47), + SingleValueData(time: .string("2019-04-08"), value: 46.55), + SingleValueData(time: .string("2019-04-09"), value: 46.67), + SingleValueData(time: .string("2019-04-10"), value: 46.64), + SingleValueData(time: .string("2019-04-11"), value: 46.71), + SingleValueData(time: .string("2019-04-12"), value: 46.74), + SingleValueData(time: .string("2019-04-15"), value: 47.00), + SingleValueData(time: .string("2019-04-16"), value: 46.95), + SingleValueData(time: .string("2019-04-17"), value: 47.28), + SingleValueData(time: .string("2019-04-18"), value: 47.48), + SingleValueData(time: .string("2019-04-22"), value: 47.40), + SingleValueData(time: .string("2019-04-23"), value: 48.21), + SingleValueData(time: .string("2019-04-24"), value: 47.98), + SingleValueData(time: .string("2019-04-25"), value: 47.84), + SingleValueData(time: .string("2019-04-26"), value: 48.26), + SingleValueData(time: .string("2019-04-29"), value: 48.42), + SingleValueData(time: .string("2019-04-30"), value: 49.06), + SingleValueData(time: .string("2019-05-01"), value: 48.59), + SingleValueData(time: .string("2019-05-02"), value: 48.39), + SingleValueData(time: .string("2019-05-03"), value: 48.72), + SingleValueData(time: .string("2019-05-06"), value: 48.47), + SingleValueData(time: .string("2019-05-07"), value: 48.00), + SingleValueData(time: .string("2019-05-08"), value: 47.85), + SingleValueData(time: .string("2019-05-09"), value: 47.40), + SingleValueData(time: .string("2019-05-10"), value: 48.19), + SingleValueData(time: .string("2019-05-13"), value: 48.05), + SingleValueData(time: .string("2019-05-14"), value: 48.69), + SingleValueData(time: .string("2019-05-15"), value: 49.18), + SingleValueData(time: .string("2019-05-16"), value: 49.58), + SingleValueData(time: .string("2019-05-17"), value: 49.20), + SingleValueData(time: .string("2019-05-20"), value: 48.85), + SingleValueData(time: .string("2019-05-21"), value: 48.60), + SingleValueData(time: .string("2019-05-22"), value: 49.65), + SingleValueData(time: .string("2019-05-23"), value: 49.85), + SingleValueData(time: .string("2019-05-24"), value: 49.61), + SingleValueData(time: .string("2019-05-28"), value: 49.24) ] series.setData(data: data) self.series = series diff --git a/Example/LightweightCharts/Example/CustomPriceFormatterViewController.swift b/Example/LightweightCharts/Example/CustomPriceFormatterViewController.swift index f961d18..7181995 100644 --- a/Example/LightweightCharts/Example/CustomPriceFormatterViewController.swift +++ b/Example/LightweightCharts/Example/CustomPriceFormatterViewController.swift @@ -149,156 +149,156 @@ class CustomPriceFormatterViewController: UIViewController { ) let series = chart.addAreaSeries(options: options) let data = [ - LineData(time: .string("2018-10-19"), value: 72.35), - LineData(time: .string("2018-10-22"), value: 72.57), - LineData(time: .string("2018-10-23"), value: 72.10), - LineData(time: .string("2018-10-24"), value: 70.54), - LineData(time: .string("2018-10-25"), value: 69.96), - LineData(time: .string("2018-10-26"), value: 70.40), - LineData(time: .string("2018-10-29"), value: 71.45), - LineData(time: .string("2018-10-30"), value: 72.87), - LineData(time: .string("2018-10-31"), value: 73.61), - LineData(time: .string("2018-11-01"), value: 73.12), - LineData(time: .string("2018-11-02"), value: 72.27), - LineData(time: .string("2018-11-05"), value: 73.12), - LineData(time: .string("2018-11-06"), value: 73.31), - LineData(time: .string("2018-11-07"), value: 75.08), - LineData(time: .string("2018-11-08"), value: 75.48), - LineData(time: .string("2018-11-09"), value: 74.86), - LineData(time: .string("2018-11-12"), value: 74.69), - LineData(time: .string("2018-11-13"), value: 74.61), - LineData(time: .string("2018-11-14"), value: 74.09), - LineData(time: .string("2018-11-15"), value: 74.84), - LineData(time: .string("2018-11-16"), value: 76.06), - LineData(time: .string("2018-11-19"), value: 76.35), - LineData(time: .string("2018-11-20"), value: 74.78), - LineData(time: .string("2018-11-21"), value: 74.79), - LineData(time: .string("2018-11-23"), value: 74.67), - LineData(time: .string("2018-11-26"), value: 75.44), - LineData(time: .string("2018-11-27"), value: 76.34), - LineData(time: .string("2018-11-28"), value: 77.23), - LineData(time: .string("2018-11-29"), value: 77.91), - LineData(time: .string("2018-11-30"), value: 79.34), - LineData(time: .string("2018-12-03"), value: 79.22), - LineData(time: .string("2018-12-04"), value: 78.21), - LineData(time: .string("2018-12-06"), value: 78.37), - LineData(time: .string("2018-12-07"), value: 76.72), - LineData(time: .string("2018-12-10"), value: 77.42), - LineData(time: .string("2018-12-11"), value: 77.11), - LineData(time: .string("2018-12-12"), value: 78.01), - LineData(time: .string("2018-12-13"), value: 79.01), - LineData(time: .string("2018-12-14"), value: 76.48), - LineData(time: .string("2018-12-17"), value: 75.23), - LineData(time: .string("2018-12-18"), value: 74.33), - LineData(time: .string("2018-12-19"), value: 73.77), - LineData(time: .string("2018-12-20"), value: 73.49), - LineData(time: .string("2018-12-21"), value: 72.90), - LineData(time: .string("2018-12-24"), value: 71.15), - LineData(time: .string("2018-12-26"), value: 74.00), - LineData(time: .string("2018-12-27"), value: 75.38), - LineData(time: .string("2018-12-28"), value: 75.37), - LineData(time: .string("2018-12-31"), value: 76.41), - LineData(time: .string("2019-01-02"), value: 75.59), - LineData(time: .string("2019-01-03"), value: 74.04), - LineData(time: .string("2019-01-04"), value: 76.27), - LineData(time: .string("2019-01-07"), value: 75.43), - LineData(time: .string("2019-01-08"), value: 75.99), - LineData(time: .string("2019-01-09"), value: 75.41), - LineData(time: .string("2019-01-10"), value: 74.48), - LineData(time: .string("2019-01-11"), value: 74.90), - LineData(time: .string("2019-01-14"), value: 73.37), - LineData(time: .string("2019-01-15"), value: 74.50), - LineData(time: .string("2019-01-16"), value: 74.61), - LineData(time: .string("2019-01-17"), value: 75.60), - LineData(time: .string("2019-01-18"), value: 75.87), - LineData(time: .string("2019-01-22"), value: 75.83), - LineData(time: .string("2019-01-23"), value: 75.44), - LineData(time: .string("2019-01-24"), value: 73.17), - LineData(time: .string("2019-01-25"), value: 72.95), - LineData(time: .string("2019-01-28"), value: 72.92), - LineData(time: .string("2019-01-29"), value: 73.23), - LineData(time: .string("2019-01-30"), value: 73.37), - LineData(time: .string("2019-01-31"), value: 74.43), - LineData(time: .string("2019-02-01"), value: 76.45), - LineData(time: .string("2019-02-04"), value: 76.87), - LineData(time: .string("2019-02-05"), value: 77.15), - LineData(time: .string("2019-02-06"), value: 77.39), - LineData(time: .string("2019-02-07"), value: 76.82), - LineData(time: .string("2019-02-08"), value: 77.52), - LineData(time: .string("2019-02-11"), value: 76.71), - LineData(time: .string("2019-02-12"), value: 78.52), - LineData(time: .string("2019-02-13"), value: 79.02), - LineData(time: .string("2019-02-14"), value: 78.94), - LineData(time: .string("2019-02-15"), value: 79.81), - LineData(time: .string("2019-02-19"), value: 79.24), - LineData(time: .string("2019-02-20"), value: 79.43), - LineData(time: .string("2019-02-21"), value: 79.83), - LineData(time: .string("2019-02-22"), value: 80.77), - LineData(time: .string("2019-02-25"), value: 80.38), - LineData(time: .string("2019-02-26"), value: 80.74), - LineData(time: .string("2019-02-27"), value: 80.62), - LineData(time: .string("2019-02-28"), value: 81.29), - LineData(time: .string("2019-03-01"), value: 81.65), - LineData(time: .string("2019-03-04"), value: 81.37), - LineData(time: .string("2019-03-05"), value: 81.70), - LineData(time: .string("2019-03-06"), value: 80.76), - LineData(time: .string("2019-03-07"), value: 80.45), - LineData(time: .string("2019-03-08"), value: 79.80), - LineData(time: .string("2019-03-11"), value: 80.87), - LineData(time: .string("2019-03-12"), value: 81.23), - LineData(time: .string("2019-03-13"), value: 81.60), - LineData(time: .string("2019-03-14"), value: 81.49), - LineData(time: .string("2019-03-15"), value: 81.57), - LineData(time: .string("2019-03-18"), value: 81.35), - LineData(time: .string("2019-03-19"), value: 81.91), - LineData(time: .string("2019-03-20"), value: 82.08), - LineData(time: .string("2019-03-21"), value: 82.95), - LineData(time: .string("2019-03-22"), value: 82.29), - LineData(time: .string("2019-03-25"), value: 82.35), - LineData(time: .string("2019-03-26"), value: 82.92), - LineData(time: .string("2019-03-27"), value: 82.29), - LineData(time: .string("2019-03-28"), value: 82.63), - LineData(time: .string("2019-03-29"), value: 83.17), - LineData(time: .string("2019-04-01"), value: 83.30), - LineData(time: .string("2019-04-02"), value: 83.21), - LineData(time: .string("2019-04-03"), value: 83.18), - LineData(time: .string("2019-04-04"), value: 81.85), - LineData(time: .string("2019-04-05"), value: 81.15), - LineData(time: .string("2019-04-08"), value: 80.95), - LineData(time: .string("2019-04-09"), value: 80.80), - LineData(time: .string("2019-04-10"), value: 80.82), - LineData(time: .string("2019-04-11"), value: 79.84), - LineData(time: .string("2019-04-12"), value: 79.43), - LineData(time: .string("2019-04-15"), value: 78.53), - LineData(time: .string("2019-04-16"), value: 77.56), - LineData(time: .string("2019-04-17"), value: 73.92), - LineData(time: .string("2019-04-18"), value: 73.19), - LineData(time: .string("2019-04-22"), value: 73.46), - LineData(time: .string("2019-04-23"), value: 74.60), - LineData(time: .string("2019-04-24"), value: 74.73), - LineData(time: .string("2019-04-25"), value: 76.34), - LineData(time: .string("2019-04-26"), value: 76.63), - LineData(time: .string("2019-04-29"), value: 76.78), - LineData(time: .string("2019-04-30"), value: 78.71), - LineData(time: .string("2019-05-01"), value: 78.72), - LineData(time: .string("2019-05-02"), value: 79.52), - LineData(time: .string("2019-05-03"), value: 80.00), - LineData(time: .string("2019-05-06"), value: 79.48), - LineData(time: .string("2019-05-07"), value: 77.90), - LineData(time: .string("2019-05-08"), value: 78.18), - LineData(time: .string("2019-05-09"), value: 78.33), - LineData(time: .string("2019-05-10"), value: 78.19), - LineData(time: .string("2019-05-13"), value: 77.17), - LineData(time: .string("2019-05-14"), value: 77.42), - LineData(time: .string("2019-05-15"), value: 77.55), - LineData(time: .string("2019-05-16"), value: 79.13), - LineData(time: .string("2019-05-17"), value: 78.72), - LineData(time: .string("2019-05-20"), value: 78.88), - LineData(time: .string("2019-05-21"), value: 79.50), - LineData(time: .string("2019-05-22"), value: 80.98), - LineData(time: .string("2019-05-23"), value: 81.02), - LineData(time: .string("2019-05-24"), value: 81.17), - LineData(time: .string("2019-05-28"), value: 81.10) + SingleValueData(time: .string("2018-10-19"), value: 72.35), + SingleValueData(time: .string("2018-10-22"), value: 72.57), + SingleValueData(time: .string("2018-10-23"), value: 72.10), + SingleValueData(time: .string("2018-10-24"), value: 70.54), + SingleValueData(time: .string("2018-10-25"), value: 69.96), + SingleValueData(time: .string("2018-10-26"), value: 70.40), + SingleValueData(time: .string("2018-10-29"), value: 71.45), + SingleValueData(time: .string("2018-10-30"), value: 72.87), + SingleValueData(time: .string("2018-10-31"), value: 73.61), + SingleValueData(time: .string("2018-11-01"), value: 73.12), + SingleValueData(time: .string("2018-11-02"), value: 72.27), + SingleValueData(time: .string("2018-11-05"), value: 73.12), + SingleValueData(time: .string("2018-11-06"), value: 73.31), + SingleValueData(time: .string("2018-11-07"), value: 75.08), + SingleValueData(time: .string("2018-11-08"), value: 75.48), + SingleValueData(time: .string("2018-11-09"), value: 74.86), + SingleValueData(time: .string("2018-11-12"), value: 74.69), + SingleValueData(time: .string("2018-11-13"), value: 74.61), + SingleValueData(time: .string("2018-11-14"), value: 74.09), + SingleValueData(time: .string("2018-11-15"), value: 74.84), + SingleValueData(time: .string("2018-11-16"), value: 76.06), + SingleValueData(time: .string("2018-11-19"), value: 76.35), + SingleValueData(time: .string("2018-11-20"), value: 74.78), + SingleValueData(time: .string("2018-11-21"), value: 74.79), + SingleValueData(time: .string("2018-11-23"), value: 74.67), + SingleValueData(time: .string("2018-11-26"), value: 75.44), + SingleValueData(time: .string("2018-11-27"), value: 76.34), + SingleValueData(time: .string("2018-11-28"), value: 77.23), + SingleValueData(time: .string("2018-11-29"), value: 77.91), + SingleValueData(time: .string("2018-11-30"), value: 79.34), + SingleValueData(time: .string("2018-12-03"), value: 79.22), + SingleValueData(time: .string("2018-12-04"), value: 78.21), + SingleValueData(time: .string("2018-12-06"), value: 78.37), + SingleValueData(time: .string("2018-12-07"), value: 76.72), + SingleValueData(time: .string("2018-12-10"), value: 77.42), + SingleValueData(time: .string("2018-12-11"), value: 77.11), + SingleValueData(time: .string("2018-12-12"), value: 78.01), + SingleValueData(time: .string("2018-12-13"), value: 79.01), + SingleValueData(time: .string("2018-12-14"), value: 76.48), + SingleValueData(time: .string("2018-12-17"), value: 75.23), + SingleValueData(time: .string("2018-12-18"), value: 74.33), + SingleValueData(time: .string("2018-12-19"), value: 73.77), + SingleValueData(time: .string("2018-12-20"), value: 73.49), + SingleValueData(time: .string("2018-12-21"), value: 72.90), + SingleValueData(time: .string("2018-12-24"), value: 71.15), + SingleValueData(time: .string("2018-12-26"), value: 74.00), + SingleValueData(time: .string("2018-12-27"), value: 75.38), + SingleValueData(time: .string("2018-12-28"), value: 75.37), + SingleValueData(time: .string("2018-12-31"), value: 76.41), + SingleValueData(time: .string("2019-01-02"), value: 75.59), + SingleValueData(time: .string("2019-01-03"), value: 74.04), + SingleValueData(time: .string("2019-01-04"), value: 76.27), + SingleValueData(time: .string("2019-01-07"), value: 75.43), + SingleValueData(time: .string("2019-01-08"), value: 75.99), + SingleValueData(time: .string("2019-01-09"), value: 75.41), + SingleValueData(time: .string("2019-01-10"), value: 74.48), + SingleValueData(time: .string("2019-01-11"), value: 74.90), + SingleValueData(time: .string("2019-01-14"), value: 73.37), + SingleValueData(time: .string("2019-01-15"), value: 74.50), + SingleValueData(time: .string("2019-01-16"), value: 74.61), + SingleValueData(time: .string("2019-01-17"), value: 75.60), + SingleValueData(time: .string("2019-01-18"), value: 75.87), + SingleValueData(time: .string("2019-01-22"), value: 75.83), + SingleValueData(time: .string("2019-01-23"), value: 75.44), + SingleValueData(time: .string("2019-01-24"), value: 73.17), + SingleValueData(time: .string("2019-01-25"), value: 72.95), + SingleValueData(time: .string("2019-01-28"), value: 72.92), + SingleValueData(time: .string("2019-01-29"), value: 73.23), + SingleValueData(time: .string("2019-01-30"), value: 73.37), + SingleValueData(time: .string("2019-01-31"), value: 74.43), + SingleValueData(time: .string("2019-02-01"), value: 76.45), + SingleValueData(time: .string("2019-02-04"), value: 76.87), + SingleValueData(time: .string("2019-02-05"), value: 77.15), + SingleValueData(time: .string("2019-02-06"), value: 77.39), + SingleValueData(time: .string("2019-02-07"), value: 76.82), + SingleValueData(time: .string("2019-02-08"), value: 77.52), + SingleValueData(time: .string("2019-02-11"), value: 76.71), + SingleValueData(time: .string("2019-02-12"), value: 78.52), + SingleValueData(time: .string("2019-02-13"), value: 79.02), + SingleValueData(time: .string("2019-02-14"), value: 78.94), + SingleValueData(time: .string("2019-02-15"), value: 79.81), + SingleValueData(time: .string("2019-02-19"), value: 79.24), + SingleValueData(time: .string("2019-02-20"), value: 79.43), + SingleValueData(time: .string("2019-02-21"), value: 79.83), + SingleValueData(time: .string("2019-02-22"), value: 80.77), + SingleValueData(time: .string("2019-02-25"), value: 80.38), + SingleValueData(time: .string("2019-02-26"), value: 80.74), + SingleValueData(time: .string("2019-02-27"), value: 80.62), + SingleValueData(time: .string("2019-02-28"), value: 81.29), + SingleValueData(time: .string("2019-03-01"), value: 81.65), + SingleValueData(time: .string("2019-03-04"), value: 81.37), + SingleValueData(time: .string("2019-03-05"), value: 81.70), + SingleValueData(time: .string("2019-03-06"), value: 80.76), + SingleValueData(time: .string("2019-03-07"), value: 80.45), + SingleValueData(time: .string("2019-03-08"), value: 79.80), + SingleValueData(time: .string("2019-03-11"), value: 80.87), + SingleValueData(time: .string("2019-03-12"), value: 81.23), + SingleValueData(time: .string("2019-03-13"), value: 81.60), + SingleValueData(time: .string("2019-03-14"), value: 81.49), + SingleValueData(time: .string("2019-03-15"), value: 81.57), + SingleValueData(time: .string("2019-03-18"), value: 81.35), + SingleValueData(time: .string("2019-03-19"), value: 81.91), + SingleValueData(time: .string("2019-03-20"), value: 82.08), + SingleValueData(time: .string("2019-03-21"), value: 82.95), + SingleValueData(time: .string("2019-03-22"), value: 82.29), + SingleValueData(time: .string("2019-03-25"), value: 82.35), + SingleValueData(time: .string("2019-03-26"), value: 82.92), + SingleValueData(time: .string("2019-03-27"), value: 82.29), + SingleValueData(time: .string("2019-03-28"), value: 82.63), + SingleValueData(time: .string("2019-03-29"), value: 83.17), + SingleValueData(time: .string("2019-04-01"), value: 83.30), + SingleValueData(time: .string("2019-04-02"), value: 83.21), + SingleValueData(time: .string("2019-04-03"), value: 83.18), + SingleValueData(time: .string("2019-04-04"), value: 81.85), + SingleValueData(time: .string("2019-04-05"), value: 81.15), + SingleValueData(time: .string("2019-04-08"), value: 80.95), + SingleValueData(time: .string("2019-04-09"), value: 80.80), + SingleValueData(time: .string("2019-04-10"), value: 80.82), + SingleValueData(time: .string("2019-04-11"), value: 79.84), + SingleValueData(time: .string("2019-04-12"), value: 79.43), + SingleValueData(time: .string("2019-04-15"), value: 78.53), + SingleValueData(time: .string("2019-04-16"), value: 77.56), + SingleValueData(time: .string("2019-04-17"), value: 73.92), + SingleValueData(time: .string("2019-04-18"), value: 73.19), + SingleValueData(time: .string("2019-04-22"), value: 73.46), + SingleValueData(time: .string("2019-04-23"), value: 74.60), + SingleValueData(time: .string("2019-04-24"), value: 74.73), + SingleValueData(time: .string("2019-04-25"), value: 76.34), + SingleValueData(time: .string("2019-04-26"), value: 76.63), + SingleValueData(time: .string("2019-04-29"), value: 76.78), + SingleValueData(time: .string("2019-04-30"), value: 78.71), + SingleValueData(time: .string("2019-05-01"), value: 78.72), + SingleValueData(time: .string("2019-05-02"), value: 79.52), + SingleValueData(time: .string("2019-05-03"), value: 80.00), + SingleValueData(time: .string("2019-05-06"), value: 79.48), + SingleValueData(time: .string("2019-05-07"), value: 77.90), + SingleValueData(time: .string("2019-05-08"), value: 78.18), + SingleValueData(time: .string("2019-05-09"), value: 78.33), + SingleValueData(time: .string("2019-05-10"), value: 78.19), + SingleValueData(time: .string("2019-05-13"), value: 77.17), + SingleValueData(time: .string("2019-05-14"), value: 77.42), + SingleValueData(time: .string("2019-05-15"), value: 77.55), + SingleValueData(time: .string("2019-05-16"), value: 79.13), + SingleValueData(time: .string("2019-05-17"), value: 78.72), + SingleValueData(time: .string("2019-05-20"), value: 78.88), + SingleValueData(time: .string("2019-05-21"), value: 79.50), + SingleValueData(time: .string("2019-05-22"), value: 80.98), + SingleValueData(time: .string("2019-05-23"), value: 81.02), + SingleValueData(time: .string("2019-05-24"), value: 81.17), + SingleValueData(time: .string("2019-05-28"), value: 81.10) ] series.setData(data: data) self.series = series diff --git a/Example/LightweightCharts/Example/CustomThemesViewController.swift b/Example/LightweightCharts/Example/CustomThemesViewController.swift index b9143f2..5dd5b7a 100644 --- a/Example/LightweightCharts/Example/CustomThemesViewController.swift +++ b/Example/LightweightCharts/Example/CustomThemesViewController.swift @@ -134,156 +134,156 @@ class CustomThemesViewController: UIViewController { ) let series = chart.addAreaSeries(options: options) let data = [ - LineData(time: .string("2018-10-19"), value: 35.98), - LineData(time: .string("2018-10-22"), value: 35.75), - LineData(time: .string("2018-10-23"), value: 35.65), - LineData(time: .string("2018-10-24"), value: 34.12), - LineData(time: .string("2018-10-25"), value: 35.84), - LineData(time: .string("2018-10-26"), value: 35.24), - LineData(time: .string("2018-10-29"), value: 35.99), - LineData(time: .string("2018-10-30"), value: 37.71), - LineData(time: .string("2018-10-31"), value: 38.14), - LineData(time: .string("2018-11-01"), value: 37.95), - LineData(time: .string("2018-11-02"), value: 37.66), - LineData(time: .string("2018-11-05"), value: 38.02), - LineData(time: .string("2018-11-06"), value: 37.73), - LineData(time: .string("2018-11-07"), value: 38.30), - LineData(time: .string("2018-11-08"), value: 38.30), - LineData(time: .string("2018-11-09"), value: 38.34), - LineData(time: .string("2018-11-12"), value: 38.00), - LineData(time: .string("2018-11-13"), value: 37.72), - LineData(time: .string("2018-11-14"), value: 38.29), - LineData(time: .string("2018-11-15"), value: 38.49), - LineData(time: .string("2018-11-16"), value: 38.59), - LineData(time: .string("2018-11-19"), value: 38.18), - LineData(time: .string("2018-11-20"), value: 36.76), - LineData(time: .string("2018-11-21"), value: 37.51), - LineData(time: .string("2018-11-23"), value: 37.39), - LineData(time: .string("2018-11-26"), value: 37.77), - LineData(time: .string("2018-11-27"), value: 38.36), - LineData(time: .string("2018-11-28"), value: 39.06), - LineData(time: .string("2018-11-29"), value: 39.42), - LineData(time: .string("2018-11-30"), value: 39.01), - LineData(time: .string("2018-12-03"), value: 39.15), - LineData(time: .string("2018-12-04"), value: 37.69), - LineData(time: .string("2018-12-06"), value: 37.88), - LineData(time: .string("2018-12-07"), value: 37.41), - LineData(time: .string("2018-12-10"), value: 37.35), - LineData(time: .string("2018-12-11"), value: 36.84), - LineData(time: .string("2018-12-12"), value: 36.98), - LineData(time: .string("2018-12-13"), value: 36.76), - LineData(time: .string("2018-12-14"), value: 36.34), - LineData(time: .string("2018-12-17"), value: 36.21), - LineData(time: .string("2018-12-18"), value: 35.65), - LineData(time: .string("2018-12-19"), value: 35.19), - LineData(time: .string("2018-12-20"), value: 34.62), - LineData(time: .string("2018-12-21"), value: 33.75), - LineData(time: .string("2018-12-24"), value: 33.07), - LineData(time: .string("2018-12-26"), value: 34.14), - LineData(time: .string("2018-12-27"), value: 34.47), - LineData(time: .string("2018-12-28"), value: 34.35), - LineData(time: .string("2018-12-31"), value: 34.05), - LineData(time: .string("2019-01-02"), value: 34.37), - LineData(time: .string("2019-01-03"), value: 34.64), - LineData(time: .string("2019-01-04"), value: 35.81), - LineData(time: .string("2019-01-07"), value: 35.43), - LineData(time: .string("2019-01-08"), value: 35.72), - LineData(time: .string("2019-01-09"), value: 36.06), - LineData(time: .string("2019-01-10"), value: 35.82), - LineData(time: .string("2019-01-11"), value: 35.63), - LineData(time: .string("2019-01-14"), value: 35.77), - LineData(time: .string("2019-01-15"), value: 35.83), - LineData(time: .string("2019-01-16"), value: 35.90), - LineData(time: .string("2019-01-17"), value: 35.91), - LineData(time: .string("2019-01-18"), value: 36.21), - LineData(time: .string("2019-01-22"), value: 34.97), - LineData(time: .string("2019-01-23"), value: 36.89), - LineData(time: .string("2019-01-24"), value: 36.24), - LineData(time: .string("2019-01-25"), value: 35.78), - LineData(time: .string("2019-01-28"), value: 35.37), - LineData(time: .string("2019-01-29"), value: 36.08), - LineData(time: .string("2019-01-30"), value: 35.43), - LineData(time: .string("2019-01-31"), value: 36.57), - LineData(time: .string("2019-02-01"), value: 36.79), - LineData(time: .string("2019-02-04"), value: 36.77), - LineData(time: .string("2019-02-05"), value: 37.15), - LineData(time: .string("2019-02-06"), value: 37.17), - LineData(time: .string("2019-02-07"), value: 37.68), - LineData(time: .string("2019-02-08"), value: 37.60), - LineData(time: .string("2019-02-11"), value: 37.00), - LineData(time: .string("2019-02-12"), value: 37.24), - LineData(time: .string("2019-02-13"), value: 37.03), - LineData(time: .string("2019-02-14"), value: 37.26), - LineData(time: .string("2019-02-15"), value: 37.77), - LineData(time: .string("2019-02-19"), value: 37.55), - LineData(time: .string("2019-02-20"), value: 37.79), - LineData(time: .string("2019-02-21"), value: 38.47), - LineData(time: .string("2019-02-22"), value: 38.61), - LineData(time: .string("2019-02-25"), value: 38.57), - LineData(time: .string("2019-02-26"), value: 38.80), - LineData(time: .string("2019-02-27"), value: 38.53), - LineData(time: .string("2019-02-28"), value: 38.67), - LineData(time: .string("2019-03-01"), value: 39.10), - LineData(time: .string("2019-03-04"), value: 38.73), - LineData(time: .string("2019-03-05"), value: 38.72), - LineData(time: .string("2019-03-06"), value: 38.61), - LineData(time: .string("2019-03-07"), value: 38.38), - LineData(time: .string("2019-03-08"), value: 38.19), - LineData(time: .string("2019-03-11"), value: 39.17), - LineData(time: .string("2019-03-12"), value: 39.49), - LineData(time: .string("2019-03-13"), value: 39.56), - LineData(time: .string("2019-03-14"), value: 39.87), - LineData(time: .string("2019-03-15"), value: 40.47), - LineData(time: .string("2019-03-18"), value: 39.92), - LineData(time: .string("2019-03-19"), value: 39.78), - LineData(time: .string("2019-03-20"), value: 39.47), - LineData(time: .string("2019-03-21"), value: 40.05), - LineData(time: .string("2019-03-22"), value: 39.46), - LineData(time: .string("2019-03-25"), value: 39.18), - LineData(time: .string("2019-03-26"), value: 39.63), - LineData(time: .string("2019-03-27"), value: 40.21), - LineData(time: .string("2019-03-28"), value: 40.42), - LineData(time: .string("2019-03-29"), value: 39.98), - LineData(time: .string("2019-04-01"), value: 40.31), - LineData(time: .string("2019-04-02"), value: 40.02), - LineData(time: .string("2019-04-03"), value: 40.27), - LineData(time: .string("2019-04-04"), value: 40.41), - LineData(time: .string("2019-04-05"), value: 40.42), - LineData(time: .string("2019-04-08"), value: 40.71), - LineData(time: .string("2019-04-09"), value: 41.04), - LineData(time: .string("2019-04-10"), value: 41.08), - LineData(time: .string("2019-04-11"), value: 41.04), - LineData(time: .string("2019-04-12"), value: 41.30), - LineData(time: .string("2019-04-15"), value: 41.78), - LineData(time: .string("2019-04-16"), value: 41.97), - LineData(time: .string("2019-04-17"), value: 42.57), - LineData(time: .string("2019-04-18"), value: 42.43), - LineData(time: .string("2019-04-22"), value: 42.00), - LineData(time: .string("2019-04-23"), value: 41.99), - LineData(time: .string("2019-04-24"), value: 41.85), - LineData(time: .string("2019-04-25"), value: 42.93), - LineData(time: .string("2019-04-26"), value: 43.08), - LineData(time: .string("2019-04-29"), value: 43.45), - LineData(time: .string("2019-04-30"), value: 43.53), - LineData(time: .string("2019-05-01"), value: 43.42), - LineData(time: .string("2019-05-02"), value: 42.65), - LineData(time: .string("2019-05-03"), value: 43.29), - LineData(time: .string("2019-05-06"), value: 43.30), - LineData(time: .string("2019-05-07"), value: 42.76), - LineData(time: .string("2019-05-08"), value: 42.55), - LineData(time: .string("2019-05-09"), value: 42.92), - LineData(time: .string("2019-05-10"), value: 43.15), - LineData(time: .string("2019-05-13"), value: 42.28), - LineData(time: .string("2019-05-14"), value: 42.91), - LineData(time: .string("2019-05-15"), value: 42.49), - LineData(time: .string("2019-05-16"), value: 43.19), - LineData(time: .string("2019-05-17"), value: 43.54), - LineData(time: .string("2019-05-20"), value: 42.78), - LineData(time: .string("2019-05-21"), value: 43.29), - LineData(time: .string("2019-05-22"), value: 43.30), - LineData(time: .string("2019-05-23"), value: 42.73), - LineData(time: .string("2019-05-24"), value: 42.67), - LineData(time: .string("2019-05-28"), value: 42.75) + SingleValueData(time: .string("2018-10-19"), value: 35.98), + SingleValueData(time: .string("2018-10-22"), value: 35.75), + SingleValueData(time: .string("2018-10-23"), value: 35.65), + SingleValueData(time: .string("2018-10-24"), value: 34.12), + SingleValueData(time: .string("2018-10-25"), value: 35.84), + SingleValueData(time: .string("2018-10-26"), value: 35.24), + SingleValueData(time: .string("2018-10-29"), value: 35.99), + SingleValueData(time: .string("2018-10-30"), value: 37.71), + SingleValueData(time: .string("2018-10-31"), value: 38.14), + SingleValueData(time: .string("2018-11-01"), value: 37.95), + SingleValueData(time: .string("2018-11-02"), value: 37.66), + SingleValueData(time: .string("2018-11-05"), value: 38.02), + SingleValueData(time: .string("2018-11-06"), value: 37.73), + SingleValueData(time: .string("2018-11-07"), value: 38.30), + SingleValueData(time: .string("2018-11-08"), value: 38.30), + SingleValueData(time: .string("2018-11-09"), value: 38.34), + SingleValueData(time: .string("2018-11-12"), value: 38.00), + SingleValueData(time: .string("2018-11-13"), value: 37.72), + SingleValueData(time: .string("2018-11-14"), value: 38.29), + SingleValueData(time: .string("2018-11-15"), value: 38.49), + SingleValueData(time: .string("2018-11-16"), value: 38.59), + SingleValueData(time: .string("2018-11-19"), value: 38.18), + SingleValueData(time: .string("2018-11-20"), value: 36.76), + SingleValueData(time: .string("2018-11-21"), value: 37.51), + SingleValueData(time: .string("2018-11-23"), value: 37.39), + SingleValueData(time: .string("2018-11-26"), value: 37.77), + SingleValueData(time: .string("2018-11-27"), value: 38.36), + SingleValueData(time: .string("2018-11-28"), value: 39.06), + SingleValueData(time: .string("2018-11-29"), value: 39.42), + SingleValueData(time: .string("2018-11-30"), value: 39.01), + SingleValueData(time: .string("2018-12-03"), value: 39.15), + SingleValueData(time: .string("2018-12-04"), value: 37.69), + SingleValueData(time: .string("2018-12-06"), value: 37.88), + SingleValueData(time: .string("2018-12-07"), value: 37.41), + SingleValueData(time: .string("2018-12-10"), value: 37.35), + SingleValueData(time: .string("2018-12-11"), value: 36.84), + SingleValueData(time: .string("2018-12-12"), value: 36.98), + SingleValueData(time: .string("2018-12-13"), value: 36.76), + SingleValueData(time: .string("2018-12-14"), value: 36.34), + SingleValueData(time: .string("2018-12-17"), value: 36.21), + SingleValueData(time: .string("2018-12-18"), value: 35.65), + SingleValueData(time: .string("2018-12-19"), value: 35.19), + SingleValueData(time: .string("2018-12-20"), value: 34.62), + SingleValueData(time: .string("2018-12-21"), value: 33.75), + SingleValueData(time: .string("2018-12-24"), value: 33.07), + SingleValueData(time: .string("2018-12-26"), value: 34.14), + SingleValueData(time: .string("2018-12-27"), value: 34.47), + SingleValueData(time: .string("2018-12-28"), value: 34.35), + SingleValueData(time: .string("2018-12-31"), value: 34.05), + SingleValueData(time: .string("2019-01-02"), value: 34.37), + SingleValueData(time: .string("2019-01-03"), value: 34.64), + SingleValueData(time: .string("2019-01-04"), value: 35.81), + SingleValueData(time: .string("2019-01-07"), value: 35.43), + SingleValueData(time: .string("2019-01-08"), value: 35.72), + SingleValueData(time: .string("2019-01-09"), value: 36.06), + SingleValueData(time: .string("2019-01-10"), value: 35.82), + SingleValueData(time: .string("2019-01-11"), value: 35.63), + SingleValueData(time: .string("2019-01-14"), value: 35.77), + SingleValueData(time: .string("2019-01-15"), value: 35.83), + SingleValueData(time: .string("2019-01-16"), value: 35.90), + SingleValueData(time: .string("2019-01-17"), value: 35.91), + SingleValueData(time: .string("2019-01-18"), value: 36.21), + SingleValueData(time: .string("2019-01-22"), value: 34.97), + SingleValueData(time: .string("2019-01-23"), value: 36.89), + SingleValueData(time: .string("2019-01-24"), value: 36.24), + SingleValueData(time: .string("2019-01-25"), value: 35.78), + SingleValueData(time: .string("2019-01-28"), value: 35.37), + SingleValueData(time: .string("2019-01-29"), value: 36.08), + SingleValueData(time: .string("2019-01-30"), value: 35.43), + SingleValueData(time: .string("2019-01-31"), value: 36.57), + SingleValueData(time: .string("2019-02-01"), value: 36.79), + SingleValueData(time: .string("2019-02-04"), value: 36.77), + SingleValueData(time: .string("2019-02-05"), value: 37.15), + SingleValueData(time: .string("2019-02-06"), value: 37.17), + SingleValueData(time: .string("2019-02-07"), value: 37.68), + SingleValueData(time: .string("2019-02-08"), value: 37.60), + SingleValueData(time: .string("2019-02-11"), value: 37.00), + SingleValueData(time: .string("2019-02-12"), value: 37.24), + SingleValueData(time: .string("2019-02-13"), value: 37.03), + SingleValueData(time: .string("2019-02-14"), value: 37.26), + SingleValueData(time: .string("2019-02-15"), value: 37.77), + SingleValueData(time: .string("2019-02-19"), value: 37.55), + SingleValueData(time: .string("2019-02-20"), value: 37.79), + SingleValueData(time: .string("2019-02-21"), value: 38.47), + SingleValueData(time: .string("2019-02-22"), value: 38.61), + SingleValueData(time: .string("2019-02-25"), value: 38.57), + SingleValueData(time: .string("2019-02-26"), value: 38.80), + SingleValueData(time: .string("2019-02-27"), value: 38.53), + SingleValueData(time: .string("2019-02-28"), value: 38.67), + SingleValueData(time: .string("2019-03-01"), value: 39.10), + SingleValueData(time: .string("2019-03-04"), value: 38.73), + SingleValueData(time: .string("2019-03-05"), value: 38.72), + SingleValueData(time: .string("2019-03-06"), value: 38.61), + SingleValueData(time: .string("2019-03-07"), value: 38.38), + SingleValueData(time: .string("2019-03-08"), value: 38.19), + SingleValueData(time: .string("2019-03-11"), value: 39.17), + SingleValueData(time: .string("2019-03-12"), value: 39.49), + SingleValueData(time: .string("2019-03-13"), value: 39.56), + SingleValueData(time: .string("2019-03-14"), value: 39.87), + SingleValueData(time: .string("2019-03-15"), value: 40.47), + SingleValueData(time: .string("2019-03-18"), value: 39.92), + SingleValueData(time: .string("2019-03-19"), value: 39.78), + SingleValueData(time: .string("2019-03-20"), value: 39.47), + SingleValueData(time: .string("2019-03-21"), value: 40.05), + SingleValueData(time: .string("2019-03-22"), value: 39.46), + SingleValueData(time: .string("2019-03-25"), value: 39.18), + SingleValueData(time: .string("2019-03-26"), value: 39.63), + SingleValueData(time: .string("2019-03-27"), value: 40.21), + SingleValueData(time: .string("2019-03-28"), value: 40.42), + SingleValueData(time: .string("2019-03-29"), value: 39.98), + SingleValueData(time: .string("2019-04-01"), value: 40.31), + SingleValueData(time: .string("2019-04-02"), value: 40.02), + SingleValueData(time: .string("2019-04-03"), value: 40.27), + SingleValueData(time: .string("2019-04-04"), value: 40.41), + SingleValueData(time: .string("2019-04-05"), value: 40.42), + SingleValueData(time: .string("2019-04-08"), value: 40.71), + SingleValueData(time: .string("2019-04-09"), value: 41.04), + SingleValueData(time: .string("2019-04-10"), value: 41.08), + SingleValueData(time: .string("2019-04-11"), value: 41.04), + SingleValueData(time: .string("2019-04-12"), value: 41.30), + SingleValueData(time: .string("2019-04-15"), value: 41.78), + SingleValueData(time: .string("2019-04-16"), value: 41.97), + SingleValueData(time: .string("2019-04-17"), value: 42.57), + SingleValueData(time: .string("2019-04-18"), value: 42.43), + SingleValueData(time: .string("2019-04-22"), value: 42.00), + SingleValueData(time: .string("2019-04-23"), value: 41.99), + SingleValueData(time: .string("2019-04-24"), value: 41.85), + SingleValueData(time: .string("2019-04-25"), value: 42.93), + SingleValueData(time: .string("2019-04-26"), value: 43.08), + SingleValueData(time: .string("2019-04-29"), value: 43.45), + SingleValueData(time: .string("2019-04-30"), value: 43.53), + SingleValueData(time: .string("2019-05-01"), value: 43.42), + SingleValueData(time: .string("2019-05-02"), value: 42.65), + SingleValueData(time: .string("2019-05-03"), value: 43.29), + SingleValueData(time: .string("2019-05-06"), value: 43.30), + SingleValueData(time: .string("2019-05-07"), value: 42.76), + SingleValueData(time: .string("2019-05-08"), value: 42.55), + SingleValueData(time: .string("2019-05-09"), value: 42.92), + SingleValueData(time: .string("2019-05-10"), value: 43.15), + SingleValueData(time: .string("2019-05-13"), value: 42.28), + SingleValueData(time: .string("2019-05-14"), value: 42.91), + SingleValueData(time: .string("2019-05-15"), value: 42.49), + SingleValueData(time: .string("2019-05-16"), value: 43.19), + SingleValueData(time: .string("2019-05-17"), value: 43.54), + SingleValueData(time: .string("2019-05-20"), value: 42.78), + SingleValueData(time: .string("2019-05-21"), value: 43.29), + SingleValueData(time: .string("2019-05-22"), value: 43.30), + SingleValueData(time: .string("2019-05-23"), value: 42.73), + SingleValueData(time: .string("2019-05-24"), value: 42.67), + SingleValueData(time: .string("2019-05-28"), value: 42.75) ] series.setData(data: data) self.series = series diff --git a/Example/LightweightCharts/Example/CustomWatermarkViewController.swift b/Example/LightweightCharts/Example/CustomWatermarkViewController.swift index aadb14e..94fb23a 100644 --- a/Example/LightweightCharts/Example/CustomWatermarkViewController.swift +++ b/Example/LightweightCharts/Example/CustomWatermarkViewController.swift @@ -65,156 +65,156 @@ class CustomWatermarkViewController: UIViewController { ) let series = chart.addAreaSeries(options: options) let data = [ - LineData(time: .string("2018-10-19"), value: 75.46), - LineData(time: .string("2018-10-22"), value: 76.69), - LineData(time: .string("2018-10-23"), value: 73.82), - LineData(time: .string("2018-10-24"), value: 71.50), - LineData(time: .string("2018-10-25"), value: 72.74), - LineData(time: .string("2018-10-26"), value: 72.06), - LineData(time: .string("2018-10-29"), value: 70.56), - LineData(time: .string("2018-10-30"), value: 73.47), - LineData(time: .string("2018-10-31"), value: 72.64), - LineData(time: .string("2018-11-01"), value: 74.28), - LineData(time: .string("2018-11-02"), value: 72.86), - LineData(time: .string("2018-11-05"), value: 74.59), - LineData(time: .string("2018-11-06"), value: 75.48), - LineData(time: .string("2018-11-07"), value: 76.82), - LineData(time: .string("2018-11-08"), value: 75.57), - LineData(time: .string("2018-11-09"), value: 74.25), - LineData(time: .string("2018-11-12"), value: 74.42), - LineData(time: .string("2018-11-13"), value: 72.43), - LineData(time: .string("2018-11-14"), value: 72.51), - LineData(time: .string("2018-11-15"), value: 73.06), - LineData(time: .string("2018-11-16"), value: 73.40), - LineData(time: .string("2018-11-19"), value: 71.23), - LineData(time: .string("2018-11-20"), value: 68.18), - LineData(time: .string("2018-11-21"), value: 69.49), - LineData(time: .string("2018-11-23"), value: 67.31), - LineData(time: .string("2018-11-26"), value: 68.43), - LineData(time: .string("2018-11-27"), value: 68.09), - LineData(time: .string("2018-11-28"), value: 69.30), - LineData(time: .string("2018-11-29"), value: 69.91), - LineData(time: .string("2018-11-30"), value: 69.50), - LineData(time: .string("2018-12-03"), value: 72.42), - LineData(time: .string("2018-12-04"), value: 70.78), - LineData(time: .string("2018-12-06"), value: 69.01), - LineData(time: .string("2018-12-07"), value: 68.57), - LineData(time: .string("2018-12-10"), value: 67.67), - LineData(time: .string("2018-12-11"), value: 68.01), - LineData(time: .string("2018-12-12"), value: 68.79), - LineData(time: .string("2018-12-13"), value: 69.75), - LineData(time: .string("2018-12-14"), value: 68.20), - LineData(time: .string("2018-12-17"), value: 67.02), - LineData(time: .string("2018-12-18"), value: 64.75), - LineData(time: .string("2018-12-19"), value: 63.09), - LineData(time: .string("2018-12-20"), value: 62.19), - LineData(time: .string("2018-12-21"), value: 61.42), - LineData(time: .string("2018-12-24"), value: 60.07), - LineData(time: .string("2018-12-26"), value: 62.54), - LineData(time: .string("2018-12-27"), value: 61.67), - LineData(time: .string("2018-12-28"), value: 60.98), - LineData(time: .string("2018-12-31"), value: 61.55), - LineData(time: .string("2019-01-02"), value: 60.91), - LineData(time: .string("2019-01-03"), value: 61.15), - LineData(time: .string("2019-01-04"), value: 62.81), - LineData(time: .string("2019-01-07"), value: 62.55), - LineData(time: .string("2019-01-08"), value: 63.89), - LineData(time: .string("2019-01-09"), value: 65.45), - LineData(time: .string("2019-01-10"), value: 64.86), - LineData(time: .string("2019-01-11"), value: 63.47), - LineData(time: .string("2019-01-14"), value: 62.45), - LineData(time: .string("2019-01-15"), value: 63.45), - LineData(time: .string("2019-01-16"), value: 63.73), - LineData(time: .string("2019-01-17"), value: 63.96), - LineData(time: .string("2019-01-18"), value: 64.93), - LineData(time: .string("2019-01-22"), value: 61.83), - LineData(time: .string("2019-01-23"), value: 61.94), - LineData(time: .string("2019-01-24"), value: 63.22), - LineData(time: .string("2019-01-25"), value: 64.07), - LineData(time: .string("2019-01-28"), value: 63.20), - LineData(time: .string("2019-01-29"), value: 63.57), - LineData(time: .string("2019-01-30"), value: 64.28), - LineData(time: .string("2019-01-31"), value: 64.27), - LineData(time: .string("2019-02-01"), value: 64.63), - LineData(time: .string("2019-02-04"), value: 64.37), - LineData(time: .string("2019-02-05"), value: 64.57), - LineData(time: .string("2019-02-06"), value: 63.70), - LineData(time: .string("2019-02-07"), value: 63.41), - LineData(time: .string("2019-02-08"), value: 63.37), - LineData(time: .string("2019-02-11"), value: 62.32), - LineData(time: .string("2019-02-12"), value: 62.89), - LineData(time: .string("2019-02-13"), value: 63.72), - LineData(time: .string("2019-02-14"), value: 63.89), - LineData(time: .string("2019-02-15"), value: 64.48), - LineData(time: .string("2019-02-19"), value: 66.38), - LineData(time: .string("2019-02-20"), value: 67.38), - LineData(time: .string("2019-02-21"), value: 66.48), - LineData(time: .string("2019-02-22"), value: 67.54), - LineData(time: .string("2019-02-25"), value: 66.80), - LineData(time: .string("2019-02-26"), value: 67.26), - LineData(time: .string("2019-02-27"), value: 67.25), - LineData(time: .string("2019-02-28"), value: 65.86), - LineData(time: .string("2019-03-01"), value: 65.92), - LineData(time: .string("2019-03-04"), value: 66.04), - LineData(time: .string("2019-03-05"), value: 66.36), - LineData(time: .string("2019-03-06"), value: 65.68), - LineData(time: .string("2019-03-07"), value: 64.41), - LineData(time: .string("2019-03-08"), value: 63.72), - LineData(time: .string("2019-03-11"), value: 64.85), - LineData(time: .string("2019-03-12"), value: 64.96), - LineData(time: .string("2019-03-13"), value: 65.25), - LineData(time: .string("2019-03-14"), value: 64.90), - LineData(time: .string("2019-03-15"), value: 65.12), - LineData(time: .string("2019-03-18"), value: 66.70), - LineData(time: .string("2019-03-19"), value: 67.71), - LineData(time: .string("2019-03-20"), value: 68.60), - LineData(time: .string("2019-03-21"), value: 68.41), - LineData(time: .string("2019-03-22"), value: 66.03), - LineData(time: .string("2019-03-25"), value: 65.06), - LineData(time: .string("2019-03-26"), value: 65.31), - LineData(time: .string("2019-03-27"), value: 64.93), - LineData(time: .string("2019-03-28"), value: 65.49), - LineData(time: .string("2019-03-29"), value: 65.43), - LineData(time: .string("2019-04-01"), value: 66.66), - LineData(time: .string("2019-04-02"), value: 65.92), - LineData(time: .string("2019-04-03"), value: 65.89), - LineData(time: .string("2019-04-04"), value: 66.64), - LineData(time: .string("2019-04-05"), value: 67.28), - LineData(time: .string("2019-04-08"), value: 67.58), - LineData(time: .string("2019-04-09"), value: 67.29), - LineData(time: .string("2019-04-10"), value: 67.04), - LineData(time: .string("2019-04-11"), value: 65.80), - LineData(time: .string("2019-04-12"), value: 65.70), - LineData(time: .string("2019-04-15"), value: 64.53), - LineData(time: .string("2019-04-16"), value: 64.51), - LineData(time: .string("2019-04-17"), value: 64.01), - LineData(time: .string("2019-04-18"), value: 64.59), - LineData(time: .string("2019-04-22"), value: 65.41), - LineData(time: .string("2019-04-23"), value: 65.25), - LineData(time: .string("2019-04-24"), value: 64.45), - LineData(time: .string("2019-04-25"), value: 64.04), - LineData(time: .string("2019-04-26"), value: 63.59), - LineData(time: .string("2019-04-29"), value: 63.67), - LineData(time: .string("2019-04-30"), value: 63.29), - LineData(time: .string("2019-05-01"), value: 62.94), - LineData(time: .string("2019-05-02"), value: 61.85), - LineData(time: .string("2019-05-03"), value: 62.42), - LineData(time: .string("2019-05-06"), value: 61.93), - LineData(time: .string("2019-05-07"), value: 60.05), - LineData(time: .string("2019-05-08"), value: 60.02), - LineData(time: .string("2019-05-09"), value: 59.34), - LineData(time: .string("2019-05-10"), value: 58.94), - LineData(time: .string("2019-05-13"), value: 57.87), - LineData(time: .string("2019-05-14"), value: 59.11), - LineData(time: .string("2019-05-15"), value: 58.41), - LineData(time: .string("2019-05-16"), value: 58.90), - LineData(time: .string("2019-05-17"), value: 58.07), - LineData(time: .string("2019-05-20"), value: 58.10), - LineData(time: .string("2019-05-21"), value: 58.38), - LineData(time: .string("2019-05-22"), value: 57.85), - LineData(time: .string("2019-05-23"), value: 56.31), - LineData(time: .string("2019-05-24"), value: 57.36), - LineData(time: .string("2019-05-28"), value: 57.19) + SingleValueData(time: .string("2018-10-19"), value: 75.46), + SingleValueData(time: .string("2018-10-22"), value: 76.69), + SingleValueData(time: .string("2018-10-23"), value: 73.82), + SingleValueData(time: .string("2018-10-24"), value: 71.50), + SingleValueData(time: .string("2018-10-25"), value: 72.74), + SingleValueData(time: .string("2018-10-26"), value: 72.06), + SingleValueData(time: .string("2018-10-29"), value: 70.56), + SingleValueData(time: .string("2018-10-30"), value: 73.47), + SingleValueData(time: .string("2018-10-31"), value: 72.64), + SingleValueData(time: .string("2018-11-01"), value: 74.28), + SingleValueData(time: .string("2018-11-02"), value: 72.86), + SingleValueData(time: .string("2018-11-05"), value: 74.59), + SingleValueData(time: .string("2018-11-06"), value: 75.48), + SingleValueData(time: .string("2018-11-07"), value: 76.82), + SingleValueData(time: .string("2018-11-08"), value: 75.57), + SingleValueData(time: .string("2018-11-09"), value: 74.25), + SingleValueData(time: .string("2018-11-12"), value: 74.42), + SingleValueData(time: .string("2018-11-13"), value: 72.43), + SingleValueData(time: .string("2018-11-14"), value: 72.51), + SingleValueData(time: .string("2018-11-15"), value: 73.06), + SingleValueData(time: .string("2018-11-16"), value: 73.40), + SingleValueData(time: .string("2018-11-19"), value: 71.23), + SingleValueData(time: .string("2018-11-20"), value: 68.18), + SingleValueData(time: .string("2018-11-21"), value: 69.49), + SingleValueData(time: .string("2018-11-23"), value: 67.31), + SingleValueData(time: .string("2018-11-26"), value: 68.43), + SingleValueData(time: .string("2018-11-27"), value: 68.09), + SingleValueData(time: .string("2018-11-28"), value: 69.30), + SingleValueData(time: .string("2018-11-29"), value: 69.91), + SingleValueData(time: .string("2018-11-30"), value: 69.50), + SingleValueData(time: .string("2018-12-03"), value: 72.42), + SingleValueData(time: .string("2018-12-04"), value: 70.78), + SingleValueData(time: .string("2018-12-06"), value: 69.01), + SingleValueData(time: .string("2018-12-07"), value: 68.57), + SingleValueData(time: .string("2018-12-10"), value: 67.67), + SingleValueData(time: .string("2018-12-11"), value: 68.01), + SingleValueData(time: .string("2018-12-12"), value: 68.79), + SingleValueData(time: .string("2018-12-13"), value: 69.75), + SingleValueData(time: .string("2018-12-14"), value: 68.20), + SingleValueData(time: .string("2018-12-17"), value: 67.02), + SingleValueData(time: .string("2018-12-18"), value: 64.75), + SingleValueData(time: .string("2018-12-19"), value: 63.09), + SingleValueData(time: .string("2018-12-20"), value: 62.19), + SingleValueData(time: .string("2018-12-21"), value: 61.42), + SingleValueData(time: .string("2018-12-24"), value: 60.07), + SingleValueData(time: .string("2018-12-26"), value: 62.54), + SingleValueData(time: .string("2018-12-27"), value: 61.67), + SingleValueData(time: .string("2018-12-28"), value: 60.98), + SingleValueData(time: .string("2018-12-31"), value: 61.55), + SingleValueData(time: .string("2019-01-02"), value: 60.91), + SingleValueData(time: .string("2019-01-03"), value: 61.15), + SingleValueData(time: .string("2019-01-04"), value: 62.81), + SingleValueData(time: .string("2019-01-07"), value: 62.55), + SingleValueData(time: .string("2019-01-08"), value: 63.89), + SingleValueData(time: .string("2019-01-09"), value: 65.45), + SingleValueData(time: .string("2019-01-10"), value: 64.86), + SingleValueData(time: .string("2019-01-11"), value: 63.47), + SingleValueData(time: .string("2019-01-14"), value: 62.45), + SingleValueData(time: .string("2019-01-15"), value: 63.45), + SingleValueData(time: .string("2019-01-16"), value: 63.73), + SingleValueData(time: .string("2019-01-17"), value: 63.96), + SingleValueData(time: .string("2019-01-18"), value: 64.93), + SingleValueData(time: .string("2019-01-22"), value: 61.83), + SingleValueData(time: .string("2019-01-23"), value: 61.94), + SingleValueData(time: .string("2019-01-24"), value: 63.22), + SingleValueData(time: .string("2019-01-25"), value: 64.07), + SingleValueData(time: .string("2019-01-28"), value: 63.20), + SingleValueData(time: .string("2019-01-29"), value: 63.57), + SingleValueData(time: .string("2019-01-30"), value: 64.28), + SingleValueData(time: .string("2019-01-31"), value: 64.27), + SingleValueData(time: .string("2019-02-01"), value: 64.63), + SingleValueData(time: .string("2019-02-04"), value: 64.37), + SingleValueData(time: .string("2019-02-05"), value: 64.57), + SingleValueData(time: .string("2019-02-06"), value: 63.70), + SingleValueData(time: .string("2019-02-07"), value: 63.41), + SingleValueData(time: .string("2019-02-08"), value: 63.37), + SingleValueData(time: .string("2019-02-11"), value: 62.32), + SingleValueData(time: .string("2019-02-12"), value: 62.89), + SingleValueData(time: .string("2019-02-13"), value: 63.72), + SingleValueData(time: .string("2019-02-14"), value: 63.89), + SingleValueData(time: .string("2019-02-15"), value: 64.48), + SingleValueData(time: .string("2019-02-19"), value: 66.38), + SingleValueData(time: .string("2019-02-20"), value: 67.38), + SingleValueData(time: .string("2019-02-21"), value: 66.48), + SingleValueData(time: .string("2019-02-22"), value: 67.54), + SingleValueData(time: .string("2019-02-25"), value: 66.80), + SingleValueData(time: .string("2019-02-26"), value: 67.26), + SingleValueData(time: .string("2019-02-27"), value: 67.25), + SingleValueData(time: .string("2019-02-28"), value: 65.86), + SingleValueData(time: .string("2019-03-01"), value: 65.92), + SingleValueData(time: .string("2019-03-04"), value: 66.04), + SingleValueData(time: .string("2019-03-05"), value: 66.36), + SingleValueData(time: .string("2019-03-06"), value: 65.68), + SingleValueData(time: .string("2019-03-07"), value: 64.41), + SingleValueData(time: .string("2019-03-08"), value: 63.72), + SingleValueData(time: .string("2019-03-11"), value: 64.85), + SingleValueData(time: .string("2019-03-12"), value: 64.96), + SingleValueData(time: .string("2019-03-13"), value: 65.25), + SingleValueData(time: .string("2019-03-14"), value: 64.90), + SingleValueData(time: .string("2019-03-15"), value: 65.12), + SingleValueData(time: .string("2019-03-18"), value: 66.70), + SingleValueData(time: .string("2019-03-19"), value: 67.71), + SingleValueData(time: .string("2019-03-20"), value: 68.60), + SingleValueData(time: .string("2019-03-21"), value: 68.41), + SingleValueData(time: .string("2019-03-22"), value: 66.03), + SingleValueData(time: .string("2019-03-25"), value: 65.06), + SingleValueData(time: .string("2019-03-26"), value: 65.31), + SingleValueData(time: .string("2019-03-27"), value: 64.93), + SingleValueData(time: .string("2019-03-28"), value: 65.49), + SingleValueData(time: .string("2019-03-29"), value: 65.43), + SingleValueData(time: .string("2019-04-01"), value: 66.66), + SingleValueData(time: .string("2019-04-02"), value: 65.92), + SingleValueData(time: .string("2019-04-03"), value: 65.89), + SingleValueData(time: .string("2019-04-04"), value: 66.64), + SingleValueData(time: .string("2019-04-05"), value: 67.28), + SingleValueData(time: .string("2019-04-08"), value: 67.58), + SingleValueData(time: .string("2019-04-09"), value: 67.29), + SingleValueData(time: .string("2019-04-10"), value: 67.04), + SingleValueData(time: .string("2019-04-11"), value: 65.80), + SingleValueData(time: .string("2019-04-12"), value: 65.70), + SingleValueData(time: .string("2019-04-15"), value: 64.53), + SingleValueData(time: .string("2019-04-16"), value: 64.51), + SingleValueData(time: .string("2019-04-17"), value: 64.01), + SingleValueData(time: .string("2019-04-18"), value: 64.59), + SingleValueData(time: .string("2019-04-22"), value: 65.41), + SingleValueData(time: .string("2019-04-23"), value: 65.25), + SingleValueData(time: .string("2019-04-24"), value: 64.45), + SingleValueData(time: .string("2019-04-25"), value: 64.04), + SingleValueData(time: .string("2019-04-26"), value: 63.59), + SingleValueData(time: .string("2019-04-29"), value: 63.67), + SingleValueData(time: .string("2019-04-30"), value: 63.29), + SingleValueData(time: .string("2019-05-01"), value: 62.94), + SingleValueData(time: .string("2019-05-02"), value: 61.85), + SingleValueData(time: .string("2019-05-03"), value: 62.42), + SingleValueData(time: .string("2019-05-06"), value: 61.93), + SingleValueData(time: .string("2019-05-07"), value: 60.05), + SingleValueData(time: .string("2019-05-08"), value: 60.02), + SingleValueData(time: .string("2019-05-09"), value: 59.34), + SingleValueData(time: .string("2019-05-10"), value: 58.94), + SingleValueData(time: .string("2019-05-13"), value: 57.87), + SingleValueData(time: .string("2019-05-14"), value: 59.11), + SingleValueData(time: .string("2019-05-15"), value: 58.41), + SingleValueData(time: .string("2019-05-16"), value: 58.90), + SingleValueData(time: .string("2019-05-17"), value: 58.07), + SingleValueData(time: .string("2019-05-20"), value: 58.10), + SingleValueData(time: .string("2019-05-21"), value: 58.38), + SingleValueData(time: .string("2019-05-22"), value: 57.85), + SingleValueData(time: .string("2019-05-23"), value: 56.31), + SingleValueData(time: .string("2019-05-24"), value: 57.36), + SingleValueData(time: .string("2019-05-28"), value: 57.19) ] series.setData(data: data) self.series = series diff --git a/Example/LightweightCharts/Example/FitContentViewController.swift b/Example/LightweightCharts/Example/FitContentViewController.swift index 53ebb55..1218686 100644 --- a/Example/LightweightCharts/Example/FitContentViewController.swift +++ b/Example/LightweightCharts/Example/FitContentViewController.swift @@ -55,356 +55,356 @@ class FitContentViewController: UIViewController { ) let series = chart.addAreaSeries(options: options) let data = [ - LineData(time: .string("2018-01-04"), value: 173.03), - LineData(time: .string("2018-01-05"), value: 175.00), - LineData(time: .string("2018-01-08"), value: 174.35), - LineData(time: .string("2018-01-09"), value: 174.33), - LineData(time: .string("2018-01-10"), value: 174.29), - LineData(time: .string("2018-01-11"), value: 175.28), - LineData(time: .string("2018-01-12"), value: 177.09), - LineData(time: .string("2018-01-16"), value: 176.19), - LineData(time: .string("2018-01-17"), value: 179.10), - LineData(time: .string("2018-01-18"), value: 179.26), - LineData(time: .string("2018-01-19"), value: 178.46), - LineData(time: .string("2018-01-22"), value: 177.00), - LineData(time: .string("2018-01-23"), value: 177.04), - LineData(time: .string("2018-01-24"), value: 174.22), - LineData(time: .string("2018-01-25"), value: 171.11), - LineData(time: .string("2018-01-26"), value: 171.51), - LineData(time: .string("2018-01-29"), value: 167.96), - LineData(time: .string("2018-01-30"), value: 166.97), - LineData(time: .string("2018-01-31"), value: 167.43), - LineData(time: .string("2018-02-01"), value: 167.78), - LineData(time: .string("2018-02-02"), value: 160.50), - LineData(time: .string("2018-02-05"), value: 156.49), - LineData(time: .string("2018-02-06"), value: 163.03), - LineData(time: .string("2018-02-07"), value: 159.54), - LineData(time: .string("2018-02-08"), value: 155.15), - LineData(time: .string("2018-02-09"), value: 156.41), - LineData(time: .string("2018-02-12"), value: 162.71), - LineData(time: .string("2018-02-13"), value: 164.34), - LineData(time: .string("2018-02-14"), value: 167.37), - LineData(time: .string("2018-02-15"), value: 172.99), - LineData(time: .string("2018-02-16"), value: 172.43), - LineData(time: .string("2018-02-20"), value: 171.85), - LineData(time: .string("2018-02-21"), value: 171.07), - LineData(time: .string("2018-02-22"), value: 172.50), - LineData(time: .string("2018-02-23"), value: 175.50), - LineData(time: .string("2018-02-26"), value: 178.97), - LineData(time: .string("2018-02-27"), value: 178.39), - LineData(time: .string("2018-02-28"), value: 178.12), - LineData(time: .string("2018-03-01"), value: 175.00), - LineData(time: .string("2018-03-02"), value: 176.21), - LineData(time: .string("2018-03-05"), value: 176.82), - LineData(time: .string("2018-03-06"), value: 176.67), - LineData(time: .string("2018-03-07"), value: 175.03), - LineData(time: .string("2018-03-08"), value: 176.94), - LineData(time: .string("2018-03-09"), value: 179.98), - LineData(time: .string("2018-03-12"), value: 181.72), - LineData(time: .string("2018-03-13"), value: 179.97), - LineData(time: .string("2018-03-14"), value: 178.44), - LineData(time: .string("2018-03-15"), value: 178.65), - LineData(time: .string("2018-03-16"), value: 178.02), - LineData(time: .string("2018-03-19"), value: 175.30), - LineData(time: .string("2018-03-20"), value: 175.24), - LineData(time: .string("2018-03-21"), value: 171.27), - LineData(time: .string("2018-03-22"), value: 168.85), - LineData(time: .string("2018-03-23"), value: 164.94), - LineData(time: .string("2018-03-26"), value: 172.77), - LineData(time: .string("2018-03-27"), value: 168.34), - LineData(time: .string("2018-03-28"), value: 166.48), - LineData(time: .string("2018-03-29"), value: 167.78), - LineData(time: .string("2018-04-02"), value: 166.68), - LineData(time: .string("2018-04-03"), value: 168.39), - LineData(time: .string("2018-04-04"), value: 171.61), - LineData(time: .string("2018-04-05"), value: 172.80), - LineData(time: .string("2018-04-06"), value: 168.38), - LineData(time: .string("2018-04-09"), value: 170.05), - LineData(time: .string("2018-04-10"), value: 173.25), - LineData(time: .string("2018-04-11"), value: 172.44), - LineData(time: .string("2018-04-12"), value: 174.14), - LineData(time: .string("2018-04-13"), value: 174.73), - LineData(time: .string("2018-04-16"), value: 175.82), - LineData(time: .string("2018-04-17"), value: 178.24), - LineData(time: .string("2018-04-18"), value: 177.84), - LineData(time: .string("2018-04-19"), value: 172.80), - LineData(time: .string("2018-04-20"), value: 165.72), - LineData(time: .string("2018-04-23"), value: 165.24), - LineData(time: .string("2018-04-24"), value: 162.94), - LineData(time: .string("2018-04-25"), value: 163.65), - LineData(time: .string("2018-04-26"), value: 164.22), - LineData(time: .string("2018-04-27"), value: 162.32), - LineData(time: .string("2018-04-30"), value: 165.26), - LineData(time: .string("2018-05-01"), value: 169.10), - LineData(time: .string("2018-05-02"), value: 176.57), - LineData(time: .string("2018-05-03"), value: 176.89), - LineData(time: .string("2018-05-04"), value: 183.83), - LineData(time: .string("2018-05-07"), value: 185.16), - LineData(time: .string("2018-05-08"), value: 186.05), - LineData(time: .string("2018-05-09"), value: 187.36), - LineData(time: .string("2018-05-10"), value: 190.04), - LineData(time: .string("2018-05-11"), value: 188.59), - LineData(time: .string("2018-05-14"), value: 188.15), - LineData(time: .string("2018-05-15"), value: 186.44), - LineData(time: .string("2018-05-16"), value: 188.18), - LineData(time: .string("2018-05-17"), value: 186.99), - LineData(time: .string("2018-05-18"), value: 186.31), - LineData(time: .string("2018-05-21"), value: 187.63), - LineData(time: .string("2018-05-22"), value: 187.16), - LineData(time: .string("2018-05-23"), value: 188.36), - LineData(time: .string("2018-05-24"), value: 188.15), - LineData(time: .string("2018-05-25"), value: 188.58), - LineData(time: .string("2018-05-29"), value: 187.90), - LineData(time: .string("2018-05-30"), value: 187.50), - LineData(time: .string("2018-05-31"), value: 186.87), - LineData(time: .string("2018-06-01"), value: 190.24), - LineData(time: .string("2018-06-04"), value: 191.83), - LineData(time: .string("2018-06-05"), value: 193.31), - LineData(time: .string("2018-06-06"), value: 193.98), - LineData(time: .string("2018-06-07"), value: 193.46), - LineData(time: .string("2018-06-08"), value: 191.70), - LineData(time: .string("2018-06-11"), value: 191.23), - LineData(time: .string("2018-06-12"), value: 192.28), - LineData(time: .string("2018-06-13"), value: 190.70), - LineData(time: .string("2018-06-14"), value: 190.80), - LineData(time: .string("2018-06-15"), value: 188.84), - LineData(time: .string("2018-06-18"), value: 188.74), - LineData(time: .string("2018-06-19"), value: 185.69), - LineData(time: .string("2018-06-20"), value: 186.50), - LineData(time: .string("2018-06-21"), value: 185.46), - LineData(time: .string("2018-06-22"), value: 184.92), - LineData(time: .string("2018-06-25"), value: 182.17), - LineData(time: .string("2018-06-26"), value: 184.43), - LineData(time: .string("2018-06-27"), value: 184.16), - LineData(time: .string("2018-06-28"), value: 185.50), - LineData(time: .string("2018-06-29"), value: 185.11), - LineData(time: .string("2018-07-02"), value: 187.18), - LineData(time: .string("2018-07-03"), value: 183.92), - LineData(time: .string("2018-07-05"), value: 185.40), - LineData(time: .string("2018-07-06"), value: 187.97), - LineData(time: .string("2018-07-09"), value: 190.58), - LineData(time: .string("2018-07-10"), value: 190.35), - LineData(time: .string("2018-07-11"), value: 187.88), - LineData(time: .string("2018-07-12"), value: 191.03), - LineData(time: .string("2018-07-13"), value: 191.33), - LineData(time: .string("2018-07-16"), value: 190.91), - LineData(time: .string("2018-07-17"), value: 191.45), - LineData(time: .string("2018-07-18"), value: 190.40), - LineData(time: .string("2018-07-19"), value: 191.88), - LineData(time: .string("2018-07-20"), value: 191.44), - LineData(time: .string("2018-07-23"), value: 191.61), - LineData(time: .string("2018-07-24"), value: 193.00), - LineData(time: .string("2018-07-25"), value: 194.82), - LineData(time: .string("2018-07-26"), value: 194.21), - LineData(time: .string("2018-07-27"), value: 190.98), - LineData(time: .string("2018-07-30"), value: 189.91), - LineData(time: .string("2018-07-31"), value: 190.29), - LineData(time: .string("2018-08-01"), value: 201.50), - LineData(time: .string("2018-08-02"), value: 207.39), - LineData(time: .string("2018-08-03"), value: 207.99), - LineData(time: .string("2018-08-06"), value: 209.07), - LineData(time: .string("2018-08-07"), value: 207.11), - LineData(time: .string("2018-08-08"), value: 207.25), - LineData(time: .string("2018-08-09"), value: 208.88), - LineData(time: .string("2018-08-10"), value: 207.53), - LineData(time: .string("2018-08-13"), value: 208.87), - LineData(time: .string("2018-08-14"), value: 209.75), - LineData(time: .string("2018-08-15"), value: 210.24), - LineData(time: .string("2018-08-16"), value: 213.32), - LineData(time: .string("2018-08-17"), value: 217.58), - LineData(time: .string("2018-08-20"), value: 215.46), - LineData(time: .string("2018-08-21"), value: 215.04), - LineData(time: .string("2018-08-22"), value: 215.05), - LineData(time: .string("2018-08-23"), value: 215.49), - LineData(time: .string("2018-08-24"), value: 216.16), - LineData(time: .string("2018-08-27"), value: 217.94), - LineData(time: .string("2018-08-28"), value: 219.70), - LineData(time: .string("2018-08-29"), value: 222.98), - LineData(time: .string("2018-08-30"), value: 225.03), - LineData(time: .string("2018-08-31"), value: 227.63), - LineData(time: .string("2018-09-04"), value: 228.36), - LineData(time: .string("2018-09-05"), value: 226.87), - LineData(time: .string("2018-09-06"), value: 223.10), - LineData(time: .string("2018-09-07"), value: 221.30), - LineData(time: .string("2018-09-10"), value: 218.33), - LineData(time: .string("2018-09-11"), value: 223.85), - LineData(time: .string("2018-09-12"), value: 221.07), - LineData(time: .string("2018-09-13"), value: 226.41), - LineData(time: .string("2018-09-14"), value: 223.84), - LineData(time: .string("2018-09-17"), value: 217.88), - LineData(time: .string("2018-09-18"), value: 218.24), - LineData(time: .string("2018-09-19"), value: 218.37), - LineData(time: .string("2018-09-20"), value: 220.03), - LineData(time: .string("2018-09-21"), value: 217.66), - LineData(time: .string("2018-09-24"), value: 220.79), - LineData(time: .string("2018-09-25"), value: 222.19), - LineData(time: .string("2018-09-26"), value: 220.42), - LineData(time: .string("2018-09-27"), value: 224.95), - LineData(time: .string("2018-09-28"), value: 225.74), - LineData(time: .string("2018-10-01"), value: 227.26), - LineData(time: .string("2018-10-02"), value: 229.28), - LineData(time: .string("2018-10-03"), value: 232.07), - LineData(time: .string("2018-10-04"), value: 227.99), - LineData(time: .string("2018-10-05"), value: 224.29), - LineData(time: .string("2018-10-08"), value: 223.77), - LineData(time: .string("2018-10-09"), value: 226.87), - LineData(time: .string("2018-10-10"), value: 216.36), - LineData(time: .string("2018-10-11"), value: 214.45), - LineData(time: .string("2018-10-12"), value: 222.11), - LineData(time: .string("2018-10-15"), value: 217.36), - LineData(time: .string("2018-10-16"), value: 222.15), - LineData(time: .string("2018-10-17"), value: 221.19), - LineData(time: .string("2018-10-18"), value: 216.02), - LineData(time: .string("2018-10-19"), value: 219.31), - LineData(time: .string("2018-10-22"), value: 220.65), - LineData(time: .string("2018-10-23"), value: 222.73), - LineData(time: .string("2018-10-24"), value: 215.09), - LineData(time: .string("2018-10-25"), value: 219.80), - LineData(time: .string("2018-10-26"), value: 216.30), - LineData(time: .string("2018-10-29"), value: 212.24), - LineData(time: .string("2018-10-30"), value: 213.30), - LineData(time: .string("2018-10-31"), value: 218.86), - LineData(time: .string("2018-11-01"), value: 222.22), - LineData(time: .string("2018-11-02"), value: 207.48), - LineData(time: .string("2018-11-05"), value: 201.59), - LineData(time: .string("2018-11-06"), value: 203.77), - LineData(time: .string("2018-11-07"), value: 209.95), - LineData(time: .string("2018-11-08"), value: 208.49), - LineData(time: .string("2018-11-09"), value: 204.47), - LineData(time: .string("2018-11-12"), value: 194.17), - LineData(time: .string("2018-11-13"), value: 192.23), - LineData(time: .string("2018-11-14"), value: 186.80), - LineData(time: .string("2018-11-15"), value: 191.41), - LineData(time: .string("2018-11-16"), value: 193.53), - LineData(time: .string("2018-11-19"), value: 185.86), - LineData(time: .string("2018-11-20"), value: 176.98), - LineData(time: .string("2018-11-21"), value: 176.78), - LineData(time: .string("2018-11-23"), value: 172.29), - LineData(time: .string("2018-11-26"), value: 174.62), - LineData(time: .string("2018-11-27"), value: 174.24), - LineData(time: .string("2018-11-28"), value: 180.94), - LineData(time: .string("2018-11-29"), value: 179.55), - LineData(time: .string("2018-11-30"), value: 178.58), - LineData(time: .string("2018-12-03"), value: 184.82), - LineData(time: .string("2018-12-04"), value: 176.69), - LineData(time: .string("2018-12-06"), value: 174.72), - LineData(time: .string("2018-12-07"), value: 168.49), - LineData(time: .string("2018-12-10"), value: 169.60), - LineData(time: .string("2018-12-11"), value: 168.63), - LineData(time: .string("2018-12-12"), value: 169.10), - LineData(time: .string("2018-12-13"), value: 170.95), - LineData(time: .string("2018-12-14"), value: 165.48), - LineData(time: .string("2018-12-17"), value: 163.94), - LineData(time: .string("2018-12-18"), value: 166.07), - LineData(time: .string("2018-12-19"), value: 160.89), - LineData(time: .string("2018-12-20"), value: 156.83), - LineData(time: .string("2018-12-21"), value: 150.73), - LineData(time: .string("2018-12-24"), value: 146.83), - LineData(time: .string("2018-12-26"), value: 157.17), - LineData(time: .string("2018-12-27"), value: 156.15), - LineData(time: .string("2018-12-28"), value: 156.23), - LineData(time: .string("2018-12-31"), value: 157.74), - LineData(time: .string("2019-01-02"), value: 157.92), - LineData(time: .string("2019-01-03"), value: 142.19), - LineData(time: .string("2019-01-04"), value: 148.26), - LineData(time: .string("2019-01-07"), value: 147.93), - LineData(time: .string("2019-01-08"), value: 150.75), - LineData(time: .string("2019-01-09"), value: 153.31), - LineData(time: .string("2019-01-10"), value: 153.80), - LineData(time: .string("2019-01-11"), value: 152.29), - LineData(time: .string("2019-01-14"), value: 150.00), - LineData(time: .string("2019-01-15"), value: 153.07), - LineData(time: .string("2019-01-16"), value: 154.94), - LineData(time: .string("2019-01-17"), value: 155.86), - LineData(time: .string("2019-01-18"), value: 156.82), - LineData(time: .string("2019-01-22"), value: 153.30), - LineData(time: .string("2019-01-23"), value: 153.92), - LineData(time: .string("2019-01-24"), value: 152.70), - LineData(time: .string("2019-01-25"), value: 157.76), - LineData(time: .string("2019-01-28"), value: 156.30), - LineData(time: .string("2019-01-29"), value: 154.68), - LineData(time: .string("2019-01-30"), value: 165.25), - LineData(time: .string("2019-01-31"), value: 166.44), - LineData(time: .string("2019-02-01"), value: 166.52), - LineData(time: .string("2019-02-04"), value: 171.25), - LineData(time: .string("2019-02-05"), value: 174.18), - LineData(time: .string("2019-02-06"), value: 174.24), - LineData(time: .string("2019-02-07"), value: 170.94), - LineData(time: .string("2019-02-08"), value: 170.41), - LineData(time: .string("2019-02-11"), value: 169.43), - LineData(time: .string("2019-02-12"), value: 170.89), - LineData(time: .string("2019-02-13"), value: 170.18), - LineData(time: .string("2019-02-14"), value: 170.80), - LineData(time: .string("2019-02-15"), value: 170.42), - LineData(time: .string("2019-02-19"), value: 170.93), - LineData(time: .string("2019-02-20"), value: 172.03), - LineData(time: .string("2019-02-21"), value: 171.06), - LineData(time: .string("2019-02-22"), value: 172.97), - LineData(time: .string("2019-02-25"), value: 174.23), - LineData(time: .string("2019-02-26"), value: 174.33), - LineData(time: .string("2019-02-27"), value: 174.87), - LineData(time: .string("2019-02-28"), value: 173.15), - LineData(time: .string("2019-03-01"), value: 174.97), - LineData(time: .string("2019-03-04"), value: 175.85), - LineData(time: .string("2019-03-05"), value: 175.53), - LineData(time: .string("2019-03-06"), value: 174.52), - LineData(time: .string("2019-03-07"), value: 172.50), - LineData(time: .string("2019-03-08"), value: 172.91), - LineData(time: .string("2019-03-11"), value: 178.90), - LineData(time: .string("2019-03-12"), value: 180.91), - LineData(time: .string("2019-03-13"), value: 181.71), - LineData(time: .string("2019-03-14"), value: 183.73), - LineData(time: .string("2019-03-15"), value: 186.12), - LineData(time: .string("2019-03-18"), value: 188.02), - LineData(time: .string("2019-03-19"), value: 186.53), - LineData(time: .string("2019-03-20"), value: 188.16), - LineData(time: .string("2019-03-21"), value: 195.09), - LineData(time: .string("2019-03-22"), value: 191.05), - LineData(time: .string("2019-03-25"), value: 188.74), - LineData(time: .string("2019-03-26"), value: 186.79), - LineData(time: .string("2019-03-27"), value: 188.47), - LineData(time: .string("2019-03-28"), value: 188.72), - LineData(time: .string("2019-03-29"), value: 189.95), - LineData(time: .string("2019-04-01"), value: 191.24), - LineData(time: .string("2019-04-02"), value: 194.02), - LineData(time: .string("2019-04-03"), value: 195.35), - LineData(time: .string("2019-04-04"), value: 195.69), - LineData(time: .string("2019-04-05"), value: 197.00), - LineData(time: .string("2019-04-08"), value: 200.10), - LineData(time: .string("2019-04-09"), value: 199.50), - LineData(time: .string("2019-04-10"), value: 200.62), - LineData(time: .string("2019-04-11"), value: 198.95), - LineData(time: .string("2019-04-12"), value: 198.87), - LineData(time: .string("2019-04-15"), value: 199.23), - LineData(time: .string("2019-04-16"), value: 199.25), - LineData(time: .string("2019-04-17"), value: 203.13), - LineData(time: .string("2019-04-18"), value: 203.86), - LineData(time: .string("2019-04-22"), value: 204.53), - LineData(time: .string("2019-04-23"), value: 207.48), - LineData(time: .string("2019-04-24"), value: 207.16), - LineData(time: .string("2019-04-25"), value: 205.28), - LineData(time: .string("2019-04-26"), value: 204.30), - LineData(time: .string("2019-04-29"), value: 204.61), - LineData(time: .string("2019-04-30"), value: 200.67), - LineData(time: .string("2019-05-01"), value: 210.52), - LineData(time: .string("2019-05-02"), value: 209.15), - LineData(time: .string("2019-05-03"), value: 211.75), - LineData(time: .string("2019-05-06"), value: 208.48), - LineData(time: .string("2019-05-07"), value: 202.86), - LineData(time: .string("2019-05-08"), value: 202.90), - LineData(time: .string("2019-05-09"), value: 200.72), - LineData(time: .string("2019-05-10"), value: 197.18), - LineData(time: .string("2019-05-13"), value: 185.72), - LineData(time: .string("2019-05-14"), value: 188.66), - LineData(time: .string("2019-05-15"), value: 190.92), - LineData(time: .string("2019-05-16"), value: 190.08), - LineData(time: .string("2019-05-17"), value: 189.00), - LineData(time: .string("2019-05-20"), value: 183.09), - LineData(time: .string("2019-05-21"), value: 186.60), - LineData(time: .string("2019-05-22"), value: 182.78), - LineData(time: .string("2019-05-23"), value: 179.66), - LineData(time: .string("2019-05-24"), value: 178.97), - LineData(time: .string("2019-05-28"), value: 179.11) + SingleValueData(time: .string("2018-01-04"), value: 173.03), + SingleValueData(time: .string("2018-01-05"), value: 175.00), + SingleValueData(time: .string("2018-01-08"), value: 174.35), + SingleValueData(time: .string("2018-01-09"), value: 174.33), + SingleValueData(time: .string("2018-01-10"), value: 174.29), + SingleValueData(time: .string("2018-01-11"), value: 175.28), + SingleValueData(time: .string("2018-01-12"), value: 177.09), + SingleValueData(time: .string("2018-01-16"), value: 176.19), + SingleValueData(time: .string("2018-01-17"), value: 179.10), + SingleValueData(time: .string("2018-01-18"), value: 179.26), + SingleValueData(time: .string("2018-01-19"), value: 178.46), + SingleValueData(time: .string("2018-01-22"), value: 177.00), + SingleValueData(time: .string("2018-01-23"), value: 177.04), + SingleValueData(time: .string("2018-01-24"), value: 174.22), + SingleValueData(time: .string("2018-01-25"), value: 171.11), + SingleValueData(time: .string("2018-01-26"), value: 171.51), + SingleValueData(time: .string("2018-01-29"), value: 167.96), + SingleValueData(time: .string("2018-01-30"), value: 166.97), + SingleValueData(time: .string("2018-01-31"), value: 167.43), + SingleValueData(time: .string("2018-02-01"), value: 167.78), + SingleValueData(time: .string("2018-02-02"), value: 160.50), + SingleValueData(time: .string("2018-02-05"), value: 156.49), + SingleValueData(time: .string("2018-02-06"), value: 163.03), + SingleValueData(time: .string("2018-02-07"), value: 159.54), + SingleValueData(time: .string("2018-02-08"), value: 155.15), + SingleValueData(time: .string("2018-02-09"), value: 156.41), + SingleValueData(time: .string("2018-02-12"), value: 162.71), + SingleValueData(time: .string("2018-02-13"), value: 164.34), + SingleValueData(time: .string("2018-02-14"), value: 167.37), + SingleValueData(time: .string("2018-02-15"), value: 172.99), + SingleValueData(time: .string("2018-02-16"), value: 172.43), + SingleValueData(time: .string("2018-02-20"), value: 171.85), + SingleValueData(time: .string("2018-02-21"), value: 171.07), + SingleValueData(time: .string("2018-02-22"), value: 172.50), + SingleValueData(time: .string("2018-02-23"), value: 175.50), + SingleValueData(time: .string("2018-02-26"), value: 178.97), + SingleValueData(time: .string("2018-02-27"), value: 178.39), + SingleValueData(time: .string("2018-02-28"), value: 178.12), + SingleValueData(time: .string("2018-03-01"), value: 175.00), + SingleValueData(time: .string("2018-03-02"), value: 176.21), + SingleValueData(time: .string("2018-03-05"), value: 176.82), + SingleValueData(time: .string("2018-03-06"), value: 176.67), + SingleValueData(time: .string("2018-03-07"), value: 175.03), + SingleValueData(time: .string("2018-03-08"), value: 176.94), + SingleValueData(time: .string("2018-03-09"), value: 179.98), + SingleValueData(time: .string("2018-03-12"), value: 181.72), + SingleValueData(time: .string("2018-03-13"), value: 179.97), + SingleValueData(time: .string("2018-03-14"), value: 178.44), + SingleValueData(time: .string("2018-03-15"), value: 178.65), + SingleValueData(time: .string("2018-03-16"), value: 178.02), + SingleValueData(time: .string("2018-03-19"), value: 175.30), + SingleValueData(time: .string("2018-03-20"), value: 175.24), + SingleValueData(time: .string("2018-03-21"), value: 171.27), + SingleValueData(time: .string("2018-03-22"), value: 168.85), + SingleValueData(time: .string("2018-03-23"), value: 164.94), + SingleValueData(time: .string("2018-03-26"), value: 172.77), + SingleValueData(time: .string("2018-03-27"), value: 168.34), + SingleValueData(time: .string("2018-03-28"), value: 166.48), + SingleValueData(time: .string("2018-03-29"), value: 167.78), + SingleValueData(time: .string("2018-04-02"), value: 166.68), + SingleValueData(time: .string("2018-04-03"), value: 168.39), + SingleValueData(time: .string("2018-04-04"), value: 171.61), + SingleValueData(time: .string("2018-04-05"), value: 172.80), + SingleValueData(time: .string("2018-04-06"), value: 168.38), + SingleValueData(time: .string("2018-04-09"), value: 170.05), + SingleValueData(time: .string("2018-04-10"), value: 173.25), + SingleValueData(time: .string("2018-04-11"), value: 172.44), + SingleValueData(time: .string("2018-04-12"), value: 174.14), + SingleValueData(time: .string("2018-04-13"), value: 174.73), + SingleValueData(time: .string("2018-04-16"), value: 175.82), + SingleValueData(time: .string("2018-04-17"), value: 178.24), + SingleValueData(time: .string("2018-04-18"), value: 177.84), + SingleValueData(time: .string("2018-04-19"), value: 172.80), + SingleValueData(time: .string("2018-04-20"), value: 165.72), + SingleValueData(time: .string("2018-04-23"), value: 165.24), + SingleValueData(time: .string("2018-04-24"), value: 162.94), + SingleValueData(time: .string("2018-04-25"), value: 163.65), + SingleValueData(time: .string("2018-04-26"), value: 164.22), + SingleValueData(time: .string("2018-04-27"), value: 162.32), + SingleValueData(time: .string("2018-04-30"), value: 165.26), + SingleValueData(time: .string("2018-05-01"), value: 169.10), + SingleValueData(time: .string("2018-05-02"), value: 176.57), + SingleValueData(time: .string("2018-05-03"), value: 176.89), + SingleValueData(time: .string("2018-05-04"), value: 183.83), + SingleValueData(time: .string("2018-05-07"), value: 185.16), + SingleValueData(time: .string("2018-05-08"), value: 186.05), + SingleValueData(time: .string("2018-05-09"), value: 187.36), + SingleValueData(time: .string("2018-05-10"), value: 190.04), + SingleValueData(time: .string("2018-05-11"), value: 188.59), + SingleValueData(time: .string("2018-05-14"), value: 188.15), + SingleValueData(time: .string("2018-05-15"), value: 186.44), + SingleValueData(time: .string("2018-05-16"), value: 188.18), + SingleValueData(time: .string("2018-05-17"), value: 186.99), + SingleValueData(time: .string("2018-05-18"), value: 186.31), + SingleValueData(time: .string("2018-05-21"), value: 187.63), + SingleValueData(time: .string("2018-05-22"), value: 187.16), + SingleValueData(time: .string("2018-05-23"), value: 188.36), + SingleValueData(time: .string("2018-05-24"), value: 188.15), + SingleValueData(time: .string("2018-05-25"), value: 188.58), + SingleValueData(time: .string("2018-05-29"), value: 187.90), + SingleValueData(time: .string("2018-05-30"), value: 187.50), + SingleValueData(time: .string("2018-05-31"), value: 186.87), + SingleValueData(time: .string("2018-06-01"), value: 190.24), + SingleValueData(time: .string("2018-06-04"), value: 191.83), + SingleValueData(time: .string("2018-06-05"), value: 193.31), + SingleValueData(time: .string("2018-06-06"), value: 193.98), + SingleValueData(time: .string("2018-06-07"), value: 193.46), + SingleValueData(time: .string("2018-06-08"), value: 191.70), + SingleValueData(time: .string("2018-06-11"), value: 191.23), + SingleValueData(time: .string("2018-06-12"), value: 192.28), + SingleValueData(time: .string("2018-06-13"), value: 190.70), + SingleValueData(time: .string("2018-06-14"), value: 190.80), + SingleValueData(time: .string("2018-06-15"), value: 188.84), + SingleValueData(time: .string("2018-06-18"), value: 188.74), + SingleValueData(time: .string("2018-06-19"), value: 185.69), + SingleValueData(time: .string("2018-06-20"), value: 186.50), + SingleValueData(time: .string("2018-06-21"), value: 185.46), + SingleValueData(time: .string("2018-06-22"), value: 184.92), + SingleValueData(time: .string("2018-06-25"), value: 182.17), + SingleValueData(time: .string("2018-06-26"), value: 184.43), + SingleValueData(time: .string("2018-06-27"), value: 184.16), + SingleValueData(time: .string("2018-06-28"), value: 185.50), + SingleValueData(time: .string("2018-06-29"), value: 185.11), + SingleValueData(time: .string("2018-07-02"), value: 187.18), + SingleValueData(time: .string("2018-07-03"), value: 183.92), + SingleValueData(time: .string("2018-07-05"), value: 185.40), + SingleValueData(time: .string("2018-07-06"), value: 187.97), + SingleValueData(time: .string("2018-07-09"), value: 190.58), + SingleValueData(time: .string("2018-07-10"), value: 190.35), + SingleValueData(time: .string("2018-07-11"), value: 187.88), + SingleValueData(time: .string("2018-07-12"), value: 191.03), + SingleValueData(time: .string("2018-07-13"), value: 191.33), + SingleValueData(time: .string("2018-07-16"), value: 190.91), + SingleValueData(time: .string("2018-07-17"), value: 191.45), + SingleValueData(time: .string("2018-07-18"), value: 190.40), + SingleValueData(time: .string("2018-07-19"), value: 191.88), + SingleValueData(time: .string("2018-07-20"), value: 191.44), + SingleValueData(time: .string("2018-07-23"), value: 191.61), + SingleValueData(time: .string("2018-07-24"), value: 193.00), + SingleValueData(time: .string("2018-07-25"), value: 194.82), + SingleValueData(time: .string("2018-07-26"), value: 194.21), + SingleValueData(time: .string("2018-07-27"), value: 190.98), + SingleValueData(time: .string("2018-07-30"), value: 189.91), + SingleValueData(time: .string("2018-07-31"), value: 190.29), + SingleValueData(time: .string("2018-08-01"), value: 201.50), + SingleValueData(time: .string("2018-08-02"), value: 207.39), + SingleValueData(time: .string("2018-08-03"), value: 207.99), + SingleValueData(time: .string("2018-08-06"), value: 209.07), + SingleValueData(time: .string("2018-08-07"), value: 207.11), + SingleValueData(time: .string("2018-08-08"), value: 207.25), + SingleValueData(time: .string("2018-08-09"), value: 208.88), + SingleValueData(time: .string("2018-08-10"), value: 207.53), + SingleValueData(time: .string("2018-08-13"), value: 208.87), + SingleValueData(time: .string("2018-08-14"), value: 209.75), + SingleValueData(time: .string("2018-08-15"), value: 210.24), + SingleValueData(time: .string("2018-08-16"), value: 213.32), + SingleValueData(time: .string("2018-08-17"), value: 217.58), + SingleValueData(time: .string("2018-08-20"), value: 215.46), + SingleValueData(time: .string("2018-08-21"), value: 215.04), + SingleValueData(time: .string("2018-08-22"), value: 215.05), + SingleValueData(time: .string("2018-08-23"), value: 215.49), + SingleValueData(time: .string("2018-08-24"), value: 216.16), + SingleValueData(time: .string("2018-08-27"), value: 217.94), + SingleValueData(time: .string("2018-08-28"), value: 219.70), + SingleValueData(time: .string("2018-08-29"), value: 222.98), + SingleValueData(time: .string("2018-08-30"), value: 225.03), + SingleValueData(time: .string("2018-08-31"), value: 227.63), + SingleValueData(time: .string("2018-09-04"), value: 228.36), + SingleValueData(time: .string("2018-09-05"), value: 226.87), + SingleValueData(time: .string("2018-09-06"), value: 223.10), + SingleValueData(time: .string("2018-09-07"), value: 221.30), + SingleValueData(time: .string("2018-09-10"), value: 218.33), + SingleValueData(time: .string("2018-09-11"), value: 223.85), + SingleValueData(time: .string("2018-09-12"), value: 221.07), + SingleValueData(time: .string("2018-09-13"), value: 226.41), + SingleValueData(time: .string("2018-09-14"), value: 223.84), + SingleValueData(time: .string("2018-09-17"), value: 217.88), + SingleValueData(time: .string("2018-09-18"), value: 218.24), + SingleValueData(time: .string("2018-09-19"), value: 218.37), + SingleValueData(time: .string("2018-09-20"), value: 220.03), + SingleValueData(time: .string("2018-09-21"), value: 217.66), + SingleValueData(time: .string("2018-09-24"), value: 220.79), + SingleValueData(time: .string("2018-09-25"), value: 222.19), + SingleValueData(time: .string("2018-09-26"), value: 220.42), + SingleValueData(time: .string("2018-09-27"), value: 224.95), + SingleValueData(time: .string("2018-09-28"), value: 225.74), + SingleValueData(time: .string("2018-10-01"), value: 227.26), + SingleValueData(time: .string("2018-10-02"), value: 229.28), + SingleValueData(time: .string("2018-10-03"), value: 232.07), + SingleValueData(time: .string("2018-10-04"), value: 227.99), + SingleValueData(time: .string("2018-10-05"), value: 224.29), + SingleValueData(time: .string("2018-10-08"), value: 223.77), + SingleValueData(time: .string("2018-10-09"), value: 226.87), + SingleValueData(time: .string("2018-10-10"), value: 216.36), + SingleValueData(time: .string("2018-10-11"), value: 214.45), + SingleValueData(time: .string("2018-10-12"), value: 222.11), + SingleValueData(time: .string("2018-10-15"), value: 217.36), + SingleValueData(time: .string("2018-10-16"), value: 222.15), + SingleValueData(time: .string("2018-10-17"), value: 221.19), + SingleValueData(time: .string("2018-10-18"), value: 216.02), + SingleValueData(time: .string("2018-10-19"), value: 219.31), + SingleValueData(time: .string("2018-10-22"), value: 220.65), + SingleValueData(time: .string("2018-10-23"), value: 222.73), + SingleValueData(time: .string("2018-10-24"), value: 215.09), + SingleValueData(time: .string("2018-10-25"), value: 219.80), + SingleValueData(time: .string("2018-10-26"), value: 216.30), + SingleValueData(time: .string("2018-10-29"), value: 212.24), + SingleValueData(time: .string("2018-10-30"), value: 213.30), + SingleValueData(time: .string("2018-10-31"), value: 218.86), + SingleValueData(time: .string("2018-11-01"), value: 222.22), + SingleValueData(time: .string("2018-11-02"), value: 207.48), + SingleValueData(time: .string("2018-11-05"), value: 201.59), + SingleValueData(time: .string("2018-11-06"), value: 203.77), + SingleValueData(time: .string("2018-11-07"), value: 209.95), + SingleValueData(time: .string("2018-11-08"), value: 208.49), + SingleValueData(time: .string("2018-11-09"), value: 204.47), + SingleValueData(time: .string("2018-11-12"), value: 194.17), + SingleValueData(time: .string("2018-11-13"), value: 192.23), + SingleValueData(time: .string("2018-11-14"), value: 186.80), + SingleValueData(time: .string("2018-11-15"), value: 191.41), + SingleValueData(time: .string("2018-11-16"), value: 193.53), + SingleValueData(time: .string("2018-11-19"), value: 185.86), + SingleValueData(time: .string("2018-11-20"), value: 176.98), + SingleValueData(time: .string("2018-11-21"), value: 176.78), + SingleValueData(time: .string("2018-11-23"), value: 172.29), + SingleValueData(time: .string("2018-11-26"), value: 174.62), + SingleValueData(time: .string("2018-11-27"), value: 174.24), + SingleValueData(time: .string("2018-11-28"), value: 180.94), + SingleValueData(time: .string("2018-11-29"), value: 179.55), + SingleValueData(time: .string("2018-11-30"), value: 178.58), + SingleValueData(time: .string("2018-12-03"), value: 184.82), + SingleValueData(time: .string("2018-12-04"), value: 176.69), + SingleValueData(time: .string("2018-12-06"), value: 174.72), + SingleValueData(time: .string("2018-12-07"), value: 168.49), + SingleValueData(time: .string("2018-12-10"), value: 169.60), + SingleValueData(time: .string("2018-12-11"), value: 168.63), + SingleValueData(time: .string("2018-12-12"), value: 169.10), + SingleValueData(time: .string("2018-12-13"), value: 170.95), + SingleValueData(time: .string("2018-12-14"), value: 165.48), + SingleValueData(time: .string("2018-12-17"), value: 163.94), + SingleValueData(time: .string("2018-12-18"), value: 166.07), + SingleValueData(time: .string("2018-12-19"), value: 160.89), + SingleValueData(time: .string("2018-12-20"), value: 156.83), + SingleValueData(time: .string("2018-12-21"), value: 150.73), + SingleValueData(time: .string("2018-12-24"), value: 146.83), + SingleValueData(time: .string("2018-12-26"), value: 157.17), + SingleValueData(time: .string("2018-12-27"), value: 156.15), + SingleValueData(time: .string("2018-12-28"), value: 156.23), + SingleValueData(time: .string("2018-12-31"), value: 157.74), + SingleValueData(time: .string("2019-01-02"), value: 157.92), + SingleValueData(time: .string("2019-01-03"), value: 142.19), + SingleValueData(time: .string("2019-01-04"), value: 148.26), + SingleValueData(time: .string("2019-01-07"), value: 147.93), + SingleValueData(time: .string("2019-01-08"), value: 150.75), + SingleValueData(time: .string("2019-01-09"), value: 153.31), + SingleValueData(time: .string("2019-01-10"), value: 153.80), + SingleValueData(time: .string("2019-01-11"), value: 152.29), + SingleValueData(time: .string("2019-01-14"), value: 150.00), + SingleValueData(time: .string("2019-01-15"), value: 153.07), + SingleValueData(time: .string("2019-01-16"), value: 154.94), + SingleValueData(time: .string("2019-01-17"), value: 155.86), + SingleValueData(time: .string("2019-01-18"), value: 156.82), + SingleValueData(time: .string("2019-01-22"), value: 153.30), + SingleValueData(time: .string("2019-01-23"), value: 153.92), + SingleValueData(time: .string("2019-01-24"), value: 152.70), + SingleValueData(time: .string("2019-01-25"), value: 157.76), + SingleValueData(time: .string("2019-01-28"), value: 156.30), + SingleValueData(time: .string("2019-01-29"), value: 154.68), + SingleValueData(time: .string("2019-01-30"), value: 165.25), + SingleValueData(time: .string("2019-01-31"), value: 166.44), + SingleValueData(time: .string("2019-02-01"), value: 166.52), + SingleValueData(time: .string("2019-02-04"), value: 171.25), + SingleValueData(time: .string("2019-02-05"), value: 174.18), + SingleValueData(time: .string("2019-02-06"), value: 174.24), + SingleValueData(time: .string("2019-02-07"), value: 170.94), + SingleValueData(time: .string("2019-02-08"), value: 170.41), + SingleValueData(time: .string("2019-02-11"), value: 169.43), + SingleValueData(time: .string("2019-02-12"), value: 170.89), + SingleValueData(time: .string("2019-02-13"), value: 170.18), + SingleValueData(time: .string("2019-02-14"), value: 170.80), + SingleValueData(time: .string("2019-02-15"), value: 170.42), + SingleValueData(time: .string("2019-02-19"), value: 170.93), + SingleValueData(time: .string("2019-02-20"), value: 172.03), + SingleValueData(time: .string("2019-02-21"), value: 171.06), + SingleValueData(time: .string("2019-02-22"), value: 172.97), + SingleValueData(time: .string("2019-02-25"), value: 174.23), + SingleValueData(time: .string("2019-02-26"), value: 174.33), + SingleValueData(time: .string("2019-02-27"), value: 174.87), + SingleValueData(time: .string("2019-02-28"), value: 173.15), + SingleValueData(time: .string("2019-03-01"), value: 174.97), + SingleValueData(time: .string("2019-03-04"), value: 175.85), + SingleValueData(time: .string("2019-03-05"), value: 175.53), + SingleValueData(time: .string("2019-03-06"), value: 174.52), + SingleValueData(time: .string("2019-03-07"), value: 172.50), + SingleValueData(time: .string("2019-03-08"), value: 172.91), + SingleValueData(time: .string("2019-03-11"), value: 178.90), + SingleValueData(time: .string("2019-03-12"), value: 180.91), + SingleValueData(time: .string("2019-03-13"), value: 181.71), + SingleValueData(time: .string("2019-03-14"), value: 183.73), + SingleValueData(time: .string("2019-03-15"), value: 186.12), + SingleValueData(time: .string("2019-03-18"), value: 188.02), + SingleValueData(time: .string("2019-03-19"), value: 186.53), + SingleValueData(time: .string("2019-03-20"), value: 188.16), + SingleValueData(time: .string("2019-03-21"), value: 195.09), + SingleValueData(time: .string("2019-03-22"), value: 191.05), + SingleValueData(time: .string("2019-03-25"), value: 188.74), + SingleValueData(time: .string("2019-03-26"), value: 186.79), + SingleValueData(time: .string("2019-03-27"), value: 188.47), + SingleValueData(time: .string("2019-03-28"), value: 188.72), + SingleValueData(time: .string("2019-03-29"), value: 189.95), + SingleValueData(time: .string("2019-04-01"), value: 191.24), + SingleValueData(time: .string("2019-04-02"), value: 194.02), + SingleValueData(time: .string("2019-04-03"), value: 195.35), + SingleValueData(time: .string("2019-04-04"), value: 195.69), + SingleValueData(time: .string("2019-04-05"), value: 197.00), + SingleValueData(time: .string("2019-04-08"), value: 200.10), + SingleValueData(time: .string("2019-04-09"), value: 199.50), + SingleValueData(time: .string("2019-04-10"), value: 200.62), + SingleValueData(time: .string("2019-04-11"), value: 198.95), + SingleValueData(time: .string("2019-04-12"), value: 198.87), + SingleValueData(time: .string("2019-04-15"), value: 199.23), + SingleValueData(time: .string("2019-04-16"), value: 199.25), + SingleValueData(time: .string("2019-04-17"), value: 203.13), + SingleValueData(time: .string("2019-04-18"), value: 203.86), + SingleValueData(time: .string("2019-04-22"), value: 204.53), + SingleValueData(time: .string("2019-04-23"), value: 207.48), + SingleValueData(time: .string("2019-04-24"), value: 207.16), + SingleValueData(time: .string("2019-04-25"), value: 205.28), + SingleValueData(time: .string("2019-04-26"), value: 204.30), + SingleValueData(time: .string("2019-04-29"), value: 204.61), + SingleValueData(time: .string("2019-04-30"), value: 200.67), + SingleValueData(time: .string("2019-05-01"), value: 210.52), + SingleValueData(time: .string("2019-05-02"), value: 209.15), + SingleValueData(time: .string("2019-05-03"), value: 211.75), + SingleValueData(time: .string("2019-05-06"), value: 208.48), + SingleValueData(time: .string("2019-05-07"), value: 202.86), + SingleValueData(time: .string("2019-05-08"), value: 202.90), + SingleValueData(time: .string("2019-05-09"), value: 200.72), + SingleValueData(time: .string("2019-05-10"), value: 197.18), + SingleValueData(time: .string("2019-05-13"), value: 185.72), + SingleValueData(time: .string("2019-05-14"), value: 188.66), + SingleValueData(time: .string("2019-05-15"), value: 190.92), + SingleValueData(time: .string("2019-05-16"), value: 190.08), + SingleValueData(time: .string("2019-05-17"), value: 189.00), + SingleValueData(time: .string("2019-05-20"), value: 183.09), + SingleValueData(time: .string("2019-05-21"), value: 186.60), + SingleValueData(time: .string("2019-05-22"), value: 182.78), + SingleValueData(time: .string("2019-05-23"), value: 179.66), + SingleValueData(time: .string("2019-05-24"), value: 178.97), + SingleValueData(time: .string("2019-05-28"), value: 179.11) ] series.setData(data: data) self.series = series diff --git a/Example/LightweightCharts/Example/FloatingTooltipViewController.swift b/Example/LightweightCharts/Example/FloatingTooltipViewController.swift index d42206f..078e7bd 100644 --- a/Example/LightweightCharts/Example/FloatingTooltipViewController.swift +++ b/Example/LightweightCharts/Example/FloatingTooltipViewController.swift @@ -90,306 +90,306 @@ class FloatingTooltipViewController: UIViewController { ) let series = chart.addAreaSeries(options: options) let data = [ - LineData(time: .string("2018-03-28"), value: 154), - LineData(time: .string("2018-03-29"), value: 154.2), - LineData(time: .string("2018-03-30"), value: 155.60001), - LineData(time: .string("2018-04-02"), value: 156.25), - LineData(time: .string("2018-04-03"), value: 156.25), - LineData(time: .string("2018-04-04"), value: 156.05), - LineData(time: .string("2018-04-05"), value: 158.05), - LineData(time: .string("2018-04-06"), value: 157.3), - LineData(time: .string("2018-04-09"), value: 144), - LineData(time: .string("2018-04-10"), value: 144.8), - LineData(time: .string("2018-04-11"), value: 143.5), - LineData(time: .string("2018-04-12"), value: 147.05), - LineData(time: .string("2018-04-13"), value: 144.85001), - LineData(time: .string("2018-04-16"), value: 145.39999), - LineData(time: .string("2018-04-17"), value: 147.3), - LineData(time: .string("2018-04-18"), value: 153.55), - LineData(time: .string("2018-04-19"), value: 150.95), - LineData(time: .string("2018-04-20"), value: 149.39999), - LineData(time: .string("2018-04-23"), value: 148.5), - LineData(time: .string("2018-04-24"), value: 146.60001), - LineData(time: .string("2018-04-25"), value: 144.45), - LineData(time: .string("2018-04-26"), value: 145.60001), - LineData(time: .string("2018-04-27"), value: 144.3), - LineData(time: .string("2018-04-30"), value: 144), - LineData(time: .string("2018-05-02"), value: 147.3), - LineData(time: .string("2018-05-03"), value: 144.2), - LineData(time: .string("2018-05-04"), value: 141.64999), - LineData(time: .string("2018-05-07"), value: 141.89999), - LineData(time: .string("2018-05-08"), value: 140.39999), - LineData(time: .string("2018-05-10"), value: 139.8), - LineData(time: .string("2018-05-11"), value: 137.5), - LineData(time: .string("2018-05-14"), value: 136.14999), - LineData(time: .string("2018-05-15"), value: 138), - LineData(time: .string("2018-05-16"), value: 137.95), - LineData(time: .string("2018-05-17"), value: 137.95), - LineData(time: .string("2018-05-18"), value: 136.75), - LineData(time: .string("2018-05-21"), value: 136.2), - LineData(time: .string("2018-05-22"), value: 135), - LineData(time: .string("2018-05-23"), value: 132.55), - LineData(time: .string("2018-05-24"), value: 132.7), - LineData(time: .string("2018-05-25"), value: 132.2), - LineData(time: .string("2018-05-28"), value: 131.55), - LineData(time: .string("2018-05-29"), value: 131.85001), - LineData(time: .string("2018-05-30"), value: 139.85001), - LineData(time: .string("2018-05-31"), value: 140.8), - LineData(time: .string("2018-06-01"), value: 139.64999), - LineData(time: .string("2018-06-04"), value: 137.10001), - LineData(time: .string("2018-06-05"), value: 139.25), - LineData(time: .string("2018-06-06"), value: 141.3), - LineData(time: .string("2018-06-07"), value: 145), - LineData(time: .string("2018-06-08"), value: 143.89999), - LineData(time: .string("2018-06-11"), value: 142.7), - LineData(time: .string("2018-06-13"), value: 144.05), - LineData(time: .string("2018-06-14"), value: 143.55), - LineData(time: .string("2018-06-15"), value: 140.5), - LineData(time: .string("2018-06-18"), value: 139.64999), - LineData(time: .string("2018-06-19"), value: 138), - LineData(time: .string("2018-06-20"), value: 141), - LineData(time: .string("2018-06-21"), value: 140.55), - LineData(time: .string("2018-06-22"), value: 140.55), - LineData(time: .string("2018-06-25"), value: 140.75), - LineData(time: .string("2018-06-26"), value: 140.64999), - LineData(time: .string("2018-06-27"), value: 141.14999), - LineData(time: .string("2018-06-28"), value: 139.8), - LineData(time: .string("2018-06-29"), value: 139.8), - LineData(time: .string("2018-07-02"), value: 140.14999), - LineData(time: .string("2018-07-03"), value: 143.05), - LineData(time: .string("2018-07-04"), value: 140), - LineData(time: .string("2018-07-05"), value: 129.2), - LineData(time: .string("2018-07-06"), value: 129.55), - LineData(time: .string("2018-07-09"), value: 128.3), - LineData(time: .string("2018-07-10"), value: 126.55), - LineData(time: .string("2018-07-11"), value: 124.3), - LineData(time: .string("2018-07-12"), value: 124.8), - LineData(time: .string("2018-07-13"), value: 123.25), - LineData(time: .string("2018-07-16"), value: 123), - LineData(time: .string("2018-07-17"), value: 124.25), - LineData(time: .string("2018-07-18"), value: 123), - LineData(time: .string("2018-07-19"), value: 121), - LineData(time: .string("2018-07-20"), value: 121.45), - LineData(time: .string("2018-07-23"), value: 123.8), - LineData(time: .string("2018-07-24"), value: 122.15), - LineData(time: .string("2018-07-25"), value: 121.3), - LineData(time: .string("2018-07-26"), value: 122.7), - LineData(time: .string("2018-07-27"), value: 122.2), - LineData(time: .string("2018-07-30"), value: 121.7), - LineData(time: .string("2018-07-31"), value: 122.95), - LineData(time: .string("2018-08-01"), value: 121), - LineData(time: .string("2018-08-02"), value: 116), - LineData(time: .string("2018-08-03"), value: 118.1), - LineData(time: .string("2018-08-06"), value: 114.3), - LineData(time: .string("2018-08-07"), value: 114.25), - LineData(time: .string("2018-08-08"), value: 111.85), - LineData(time: .string("2018-08-09"), value: 109.7), - LineData(time: .string("2018-08-10"), value: 105), - LineData(time: .string("2018-08-13"), value: 105.75), - LineData(time: .string("2018-08-14"), value: 107.25), - LineData(time: .string("2018-08-15"), value: 107.4), - LineData(time: .string("2018-08-16"), value: 110.5), - LineData(time: .string("2018-08-17"), value: 109), - LineData(time: .string("2018-08-20"), value: 108.95), - LineData(time: .string("2018-08-21"), value: 108.35), - LineData(time: .string("2018-08-22"), value: 108.6), - LineData(time: .string("2018-08-23"), value: 105.65), - LineData(time: .string("2018-08-24"), value: 104.45), - LineData(time: .string("2018-08-27"), value: 106.2), - LineData(time: .string("2018-08-28"), value: 106.55), - LineData(time: .string("2018-08-29"), value: 111.8), - LineData(time: .string("2018-08-30"), value: 115.5), - LineData(time: .string("2018-08-31"), value: 115.5), - LineData(time: .string("2018-09-03"), value: 114.55), - LineData(time: .string("2018-09-04"), value: 112.75), - LineData(time: .string("2018-09-05"), value: 111.5), - LineData(time: .string("2018-09-06"), value: 108.1), - LineData(time: .string("2018-09-07"), value: 108.55), - LineData(time: .string("2018-09-10"), value: 106.5), - LineData(time: .string("2018-09-11"), value: 105.1), - LineData(time: .string("2018-09-12"), value: 107.2), - LineData(time: .string("2018-09-13"), value: 107.1), - LineData(time: .string("2018-09-14"), value: 105.75), - LineData(time: .string("2018-09-17"), value: 106.05), - LineData(time: .string("2018-09-18"), value: 109.15), - LineData(time: .string("2018-09-19"), value: 111.4), - LineData(time: .string("2018-09-20"), value: 111), - LineData(time: .string("2018-09-21"), value: 111), - LineData(time: .string("2018-09-24"), value: 108.95), - LineData(time: .string("2018-09-25"), value: 106.65), - LineData(time: .string("2018-09-26"), value: 106.7), - LineData(time: .string("2018-09-27"), value: 107.05), - LineData(time: .string("2018-09-28"), value: 106.55), - LineData(time: .string("2018-10-01"), value: 106.2), - LineData(time: .string("2018-10-02"), value: 106.4), - LineData(time: .string("2018-10-03"), value: 107.1), - LineData(time: .string("2018-10-04"), value: 106.4), - LineData(time: .string("2018-10-05"), value: 104.65), - LineData(time: .string("2018-10-08"), value: 102.65), - LineData(time: .string("2018-10-09"), value: 102.1), - LineData(time: .string("2018-10-10"), value: 102.15), - LineData(time: .string("2018-10-11"), value: 100.9), - LineData(time: .string("2018-10-12"), value: 102), - LineData(time: .string("2018-10-15"), value: 100.15), - LineData(time: .string("2018-10-16"), value: 99), - LineData(time: .string("2018-10-17"), value: 98), - LineData(time: .string("2018-10-18"), value: 96), - LineData(time: .string("2018-10-19"), value: 95.5), - LineData(time: .string("2018-10-22"), value: 92.400002), - LineData(time: .string("2018-10-23"), value: 92.300003), - LineData(time: .string("2018-10-24"), value: 92.900002), - LineData(time: .string("2018-10-25"), value: 91.849998), - LineData(time: .string("2018-10-26"), value: 91.599998), - LineData(time: .string("2018-10-29"), value: 94.050003), - LineData(time: .string("2018-10-30"), value: 98.25), - LineData(time: .string("2018-10-31"), value: 97.25), - LineData(time: .string("2018-11-01"), value: 96.879997), - LineData(time: .string("2018-11-02"), value: 101.78), - LineData(time: .string("2018-11-06"), value: 102.4), - LineData(time: .string("2018-11-07"), value: 100.6), - LineData(time: .string("2018-11-08"), value: 98.5), - LineData(time: .string("2018-11-09"), value: 95.139999), - LineData(time: .string("2018-11-12"), value: 96.900002), - LineData(time: .string("2018-11-13"), value: 97.400002), - LineData(time: .string("2018-11-14"), value: 103.3), - LineData(time: .string("2018-11-15"), value: 102.74), - LineData(time: .string("2018-11-16"), value: 101.2), - LineData(time: .string("2018-11-19"), value: 98.720001), - LineData(time: .string("2018-11-20"), value: 102.2), - LineData(time: .string("2018-11-21"), value: 108.8), - LineData(time: .string("2018-11-22"), value: 109.9), - LineData(time: .string("2018-11-23"), value: 113.74), - LineData(time: .string("2018-11-26"), value: 110.9), - LineData(time: .string("2018-11-27"), value: 113.28), - LineData(time: .string("2018-11-28"), value: 113.6), - LineData(time: .string("2018-11-29"), value: 113.14), - LineData(time: .string("2018-11-30"), value: 114.4), - LineData(time: .string("2018-12-03"), value: 111.84), - LineData(time: .string("2018-12-04"), value: 106.7), - LineData(time: .string("2018-12-05"), value: 107.8), - LineData(time: .string("2018-12-06"), value: 106.44), - LineData(time: .string("2018-12-07"), value: 103.7), - LineData(time: .string("2018-12-10"), value: 101.02), - LineData(time: .string("2018-12-11"), value: 102.72), - LineData(time: .string("2018-12-12"), value: 101.8), - LineData(time: .string("2018-12-13"), value: 102), - LineData(time: .string("2018-12-14"), value: 102.1), - LineData(time: .string("2018-12-17"), value: 101.04), - LineData(time: .string("2018-12-18"), value: 101.6), - LineData(time: .string("2018-12-19"), value: 102), - LineData(time: .string("2018-12-20"), value: 102.02), - LineData(time: .string("2018-12-21"), value: 102.2), - LineData(time: .string("2018-12-24"), value: 102.1), - LineData(time: .string("2018-12-25"), value: 100.8), - LineData(time: .string("2018-12-26"), value: 101.02), - LineData(time: .string("2018-12-27"), value: 100.5), - LineData(time: .string("2018-12-28"), value: 101), - LineData(time: .string("2019-01-03"), value: 101.5), - LineData(time: .string("2019-01-04"), value: 101.1), - LineData(time: .string("2019-01-08"), value: 101.1), - LineData(time: .string("2019-01-09"), value: 102.06), - LineData(time: .string("2019-01-10"), value: 105.14), - LineData(time: .string("2019-01-11"), value: 104.66), - LineData(time: .string("2019-01-14"), value: 106.22), - LineData(time: .string("2019-01-15"), value: 106.98), - LineData(time: .string("2019-01-16"), value: 108.4), - LineData(time: .string("2019-01-17"), value: 109.06), - LineData(time: .string("2019-01-18"), value: 107), - LineData(time: .string("2019-01-21"), value: 105.8), - LineData(time: .string("2019-01-22"), value: 105.24), - LineData(time: .string("2019-01-23"), value: 105.4), - LineData(time: .string("2019-01-24"), value: 105.38), - LineData(time: .string("2019-01-25"), value: 105.7), - LineData(time: .string("2019-01-28"), value: 105.8), - LineData(time: .string("2019-01-29"), value: 106.1), - LineData(time: .string("2019-01-30"), value: 108.6), - LineData(time: .string("2019-01-31"), value: 107.92), - LineData(time: .string("2019-02-01"), value: 105.22), - LineData(time: .string("2019-02-04"), value: 102.44), - LineData(time: .string("2019-02-05"), value: 102.26), - LineData(time: .string("2019-02-06"), value: 102), - LineData(time: .string("2019-02-07"), value: 101.62), - LineData(time: .string("2019-02-08"), value: 101.9), - LineData(time: .string("2019-02-11"), value: 101.78), - LineData(time: .string("2019-02-12"), value: 102.7), - LineData(time: .string("2019-02-13"), value: 100.14), - LineData(time: .string("2019-02-14"), value: 101.36), - LineData(time: .string("2019-02-15"), value: 101.62), - LineData(time: .string("2019-02-18"), value: 100.74), - LineData(time: .string("2019-02-19"), value: 100), - LineData(time: .string("2019-02-20"), value: 100.04), - LineData(time: .string("2019-02-21"), value: 100), - LineData(time: .string("2019-02-22"), value: 100.12), - LineData(time: .string("2019-02-25"), value: 100.04), - LineData(time: .string("2019-02-26"), value: 98.980003), - LineData(time: .string("2019-02-27"), value: 97.699997), - LineData(time: .string("2019-02-28"), value: 97.099998), - LineData(time: .string("2019-03-01"), value: 96.760002), - LineData(time: .string("2019-03-04"), value: 98.360001), - LineData(time: .string("2019-03-05"), value: 96.260002), - LineData(time: .string("2019-03-06"), value: 98.120003), - LineData(time: .string("2019-03-07"), value: 99.68), - LineData(time: .string("2019-03-11"), value: 102.1), - LineData(time: .string("2019-03-12"), value: 100.22), - LineData(time: .string("2019-03-13"), value: 100.5), - LineData(time: .string("2019-03-14"), value: 99.660004), - LineData(time: .string("2019-03-15"), value: 100.08), - LineData(time: .string("2019-03-18"), value: 99.919998), - LineData(time: .string("2019-03-19"), value: 99.459999), - LineData(time: .string("2019-03-20"), value: 98.220001), - LineData(time: .string("2019-03-21"), value: 97.300003), - LineData(time: .string("2019-03-22"), value: 97.660004), - LineData(time: .string("2019-03-25"), value: 97), - LineData(time: .string("2019-03-26"), value: 97.019997), - LineData(time: .string("2019-03-27"), value: 96.099998), - LineData(time: .string("2019-03-28"), value: 96.699997), - LineData(time: .string("2019-03-29"), value: 96.300003), - LineData(time: .string("2019-04-01"), value: 97.779999), - LineData(time: .string("2019-04-02"), value: 98.360001), - LineData(time: .string("2019-04-03"), value: 98.5), - LineData(time: .string("2019-04-04"), value: 98.360001), - LineData(time: .string("2019-04-05"), value: 99.540001), - LineData(time: .string("2019-04-08"), value: 98.580002), - LineData(time: .string("2019-04-09"), value: 97.239998), - LineData(time: .string("2019-04-10"), value: 97.32), - LineData(time: .string("2019-04-11"), value: 98.400002), - LineData(time: .string("2019-04-12"), value: 98.220001), - LineData(time: .string("2019-04-15"), value: 98.720001), - LineData(time: .string("2019-04-16"), value: 99.120003), - LineData(time: .string("2019-04-17"), value: 98.620003), - LineData(time: .string("2019-04-18"), value: 98), - LineData(time: .string("2019-04-19"), value: 97.599998), - LineData(time: .string("2019-04-22"), value: 97.599998), - LineData(time: .string("2019-04-23"), value: 96.800003), - LineData(time: .string("2019-04-24"), value: 96.32), - LineData(time: .string("2019-04-25"), value: 96.339996), - LineData(time: .string("2019-04-26"), value: 97.120003), - LineData(time: .string("2019-04-29"), value: 96.980003), - LineData(time: .string("2019-04-30"), value: 96.32), - LineData(time: .string("2019-05-02"), value: 96.860001), - LineData(time: .string("2019-05-03"), value: 96.699997), - LineData(time: .string("2019-05-06"), value: 94.940002), - LineData(time: .string("2019-05-07"), value: 94.5), - LineData(time: .string("2019-05-08"), value: 94.239998), - LineData(time: .string("2019-05-10"), value: 92.900002), - LineData(time: .string("2019-05-13"), value: 91.279999), - LineData(time: .string("2019-05-14"), value: 91.599998), - LineData(time: .string("2019-05-15"), value: 90.080002), - LineData(time: .string("2019-05-16"), value: 91.68), - LineData(time: .string("2019-05-17"), value: 91.959999), - LineData(time: .string("2019-05-20"), value: 91.080002), - LineData(time: .string("2019-05-21"), value: 90.760002), - LineData(time: .string("2019-05-22"), value: 91), - LineData(time: .string("2019-05-23"), value: 90.739998), - LineData(time: .string("2019-05-24"), value: 91), - LineData(time: .string("2019-05-27"), value: 91.199997), - LineData(time: .string("2019-05-28"), value: 90.68), - LineData(time: .string("2019-05-29"), value: 91.120003), - LineData(time: .string("2019-05-30"), value: 90.419998), - LineData(time: .string("2019-05-31"), value: 93.800003), - LineData(time: .string("2019-06-03"), value: 96.800003), - LineData(time: .string("2019-06-04"), value: 96.34), - LineData(time: .string("2019-06-05"), value: 95.94) + SingleValueData(time: .string("2018-03-28"), value: 154), + SingleValueData(time: .string("2018-03-29"), value: 154.2), + SingleValueData(time: .string("2018-03-30"), value: 155.60001), + SingleValueData(time: .string("2018-04-02"), value: 156.25), + SingleValueData(time: .string("2018-04-03"), value: 156.25), + SingleValueData(time: .string("2018-04-04"), value: 156.05), + SingleValueData(time: .string("2018-04-05"), value: 158.05), + SingleValueData(time: .string("2018-04-06"), value: 157.3), + SingleValueData(time: .string("2018-04-09"), value: 144), + SingleValueData(time: .string("2018-04-10"), value: 144.8), + SingleValueData(time: .string("2018-04-11"), value: 143.5), + SingleValueData(time: .string("2018-04-12"), value: 147.05), + SingleValueData(time: .string("2018-04-13"), value: 144.85001), + SingleValueData(time: .string("2018-04-16"), value: 145.39999), + SingleValueData(time: .string("2018-04-17"), value: 147.3), + SingleValueData(time: .string("2018-04-18"), value: 153.55), + SingleValueData(time: .string("2018-04-19"), value: 150.95), + SingleValueData(time: .string("2018-04-20"), value: 149.39999), + SingleValueData(time: .string("2018-04-23"), value: 148.5), + SingleValueData(time: .string("2018-04-24"), value: 146.60001), + SingleValueData(time: .string("2018-04-25"), value: 144.45), + SingleValueData(time: .string("2018-04-26"), value: 145.60001), + SingleValueData(time: .string("2018-04-27"), value: 144.3), + SingleValueData(time: .string("2018-04-30"), value: 144), + SingleValueData(time: .string("2018-05-02"), value: 147.3), + SingleValueData(time: .string("2018-05-03"), value: 144.2), + SingleValueData(time: .string("2018-05-04"), value: 141.64999), + SingleValueData(time: .string("2018-05-07"), value: 141.89999), + SingleValueData(time: .string("2018-05-08"), value: 140.39999), + SingleValueData(time: .string("2018-05-10"), value: 139.8), + SingleValueData(time: .string("2018-05-11"), value: 137.5), + SingleValueData(time: .string("2018-05-14"), value: 136.14999), + SingleValueData(time: .string("2018-05-15"), value: 138), + SingleValueData(time: .string("2018-05-16"), value: 137.95), + SingleValueData(time: .string("2018-05-17"), value: 137.95), + SingleValueData(time: .string("2018-05-18"), value: 136.75), + SingleValueData(time: .string("2018-05-21"), value: 136.2), + SingleValueData(time: .string("2018-05-22"), value: 135), + SingleValueData(time: .string("2018-05-23"), value: 132.55), + SingleValueData(time: .string("2018-05-24"), value: 132.7), + SingleValueData(time: .string("2018-05-25"), value: 132.2), + SingleValueData(time: .string("2018-05-28"), value: 131.55), + SingleValueData(time: .string("2018-05-29"), value: 131.85001), + SingleValueData(time: .string("2018-05-30"), value: 139.85001), + SingleValueData(time: .string("2018-05-31"), value: 140.8), + SingleValueData(time: .string("2018-06-01"), value: 139.64999), + SingleValueData(time: .string("2018-06-04"), value: 137.10001), + SingleValueData(time: .string("2018-06-05"), value: 139.25), + SingleValueData(time: .string("2018-06-06"), value: 141.3), + SingleValueData(time: .string("2018-06-07"), value: 145), + SingleValueData(time: .string("2018-06-08"), value: 143.89999), + SingleValueData(time: .string("2018-06-11"), value: 142.7), + SingleValueData(time: .string("2018-06-13"), value: 144.05), + SingleValueData(time: .string("2018-06-14"), value: 143.55), + SingleValueData(time: .string("2018-06-15"), value: 140.5), + SingleValueData(time: .string("2018-06-18"), value: 139.64999), + SingleValueData(time: .string("2018-06-19"), value: 138), + SingleValueData(time: .string("2018-06-20"), value: 141), + SingleValueData(time: .string("2018-06-21"), value: 140.55), + SingleValueData(time: .string("2018-06-22"), value: 140.55), + SingleValueData(time: .string("2018-06-25"), value: 140.75), + SingleValueData(time: .string("2018-06-26"), value: 140.64999), + SingleValueData(time: .string("2018-06-27"), value: 141.14999), + SingleValueData(time: .string("2018-06-28"), value: 139.8), + SingleValueData(time: .string("2018-06-29"), value: 139.8), + SingleValueData(time: .string("2018-07-02"), value: 140.14999), + SingleValueData(time: .string("2018-07-03"), value: 143.05), + SingleValueData(time: .string("2018-07-04"), value: 140), + SingleValueData(time: .string("2018-07-05"), value: 129.2), + SingleValueData(time: .string("2018-07-06"), value: 129.55), + SingleValueData(time: .string("2018-07-09"), value: 128.3), + SingleValueData(time: .string("2018-07-10"), value: 126.55), + SingleValueData(time: .string("2018-07-11"), value: 124.3), + SingleValueData(time: .string("2018-07-12"), value: 124.8), + SingleValueData(time: .string("2018-07-13"), value: 123.25), + SingleValueData(time: .string("2018-07-16"), value: 123), + SingleValueData(time: .string("2018-07-17"), value: 124.25), + SingleValueData(time: .string("2018-07-18"), value: 123), + SingleValueData(time: .string("2018-07-19"), value: 121), + SingleValueData(time: .string("2018-07-20"), value: 121.45), + SingleValueData(time: .string("2018-07-23"), value: 123.8), + SingleValueData(time: .string("2018-07-24"), value: 122.15), + SingleValueData(time: .string("2018-07-25"), value: 121.3), + SingleValueData(time: .string("2018-07-26"), value: 122.7), + SingleValueData(time: .string("2018-07-27"), value: 122.2), + SingleValueData(time: .string("2018-07-30"), value: 121.7), + SingleValueData(time: .string("2018-07-31"), value: 122.95), + SingleValueData(time: .string("2018-08-01"), value: 121), + SingleValueData(time: .string("2018-08-02"), value: 116), + SingleValueData(time: .string("2018-08-03"), value: 118.1), + SingleValueData(time: .string("2018-08-06"), value: 114.3), + SingleValueData(time: .string("2018-08-07"), value: 114.25), + SingleValueData(time: .string("2018-08-08"), value: 111.85), + SingleValueData(time: .string("2018-08-09"), value: 109.7), + SingleValueData(time: .string("2018-08-10"), value: 105), + SingleValueData(time: .string("2018-08-13"), value: 105.75), + SingleValueData(time: .string("2018-08-14"), value: 107.25), + SingleValueData(time: .string("2018-08-15"), value: 107.4), + SingleValueData(time: .string("2018-08-16"), value: 110.5), + SingleValueData(time: .string("2018-08-17"), value: 109), + SingleValueData(time: .string("2018-08-20"), value: 108.95), + SingleValueData(time: .string("2018-08-21"), value: 108.35), + SingleValueData(time: .string("2018-08-22"), value: 108.6), + SingleValueData(time: .string("2018-08-23"), value: 105.65), + SingleValueData(time: .string("2018-08-24"), value: 104.45), + SingleValueData(time: .string("2018-08-27"), value: 106.2), + SingleValueData(time: .string("2018-08-28"), value: 106.55), + SingleValueData(time: .string("2018-08-29"), value: 111.8), + SingleValueData(time: .string("2018-08-30"), value: 115.5), + SingleValueData(time: .string("2018-08-31"), value: 115.5), + SingleValueData(time: .string("2018-09-03"), value: 114.55), + SingleValueData(time: .string("2018-09-04"), value: 112.75), + SingleValueData(time: .string("2018-09-05"), value: 111.5), + SingleValueData(time: .string("2018-09-06"), value: 108.1), + SingleValueData(time: .string("2018-09-07"), value: 108.55), + SingleValueData(time: .string("2018-09-10"), value: 106.5), + SingleValueData(time: .string("2018-09-11"), value: 105.1), + SingleValueData(time: .string("2018-09-12"), value: 107.2), + SingleValueData(time: .string("2018-09-13"), value: 107.1), + SingleValueData(time: .string("2018-09-14"), value: 105.75), + SingleValueData(time: .string("2018-09-17"), value: 106.05), + SingleValueData(time: .string("2018-09-18"), value: 109.15), + SingleValueData(time: .string("2018-09-19"), value: 111.4), + SingleValueData(time: .string("2018-09-20"), value: 111), + SingleValueData(time: .string("2018-09-21"), value: 111), + SingleValueData(time: .string("2018-09-24"), value: 108.95), + SingleValueData(time: .string("2018-09-25"), value: 106.65), + SingleValueData(time: .string("2018-09-26"), value: 106.7), + SingleValueData(time: .string("2018-09-27"), value: 107.05), + SingleValueData(time: .string("2018-09-28"), value: 106.55), + SingleValueData(time: .string("2018-10-01"), value: 106.2), + SingleValueData(time: .string("2018-10-02"), value: 106.4), + SingleValueData(time: .string("2018-10-03"), value: 107.1), + SingleValueData(time: .string("2018-10-04"), value: 106.4), + SingleValueData(time: .string("2018-10-05"), value: 104.65), + SingleValueData(time: .string("2018-10-08"), value: 102.65), + SingleValueData(time: .string("2018-10-09"), value: 102.1), + SingleValueData(time: .string("2018-10-10"), value: 102.15), + SingleValueData(time: .string("2018-10-11"), value: 100.9), + SingleValueData(time: .string("2018-10-12"), value: 102), + SingleValueData(time: .string("2018-10-15"), value: 100.15), + SingleValueData(time: .string("2018-10-16"), value: 99), + SingleValueData(time: .string("2018-10-17"), value: 98), + SingleValueData(time: .string("2018-10-18"), value: 96), + SingleValueData(time: .string("2018-10-19"), value: 95.5), + SingleValueData(time: .string("2018-10-22"), value: 92.400002), + SingleValueData(time: .string("2018-10-23"), value: 92.300003), + SingleValueData(time: .string("2018-10-24"), value: 92.900002), + SingleValueData(time: .string("2018-10-25"), value: 91.849998), + SingleValueData(time: .string("2018-10-26"), value: 91.599998), + SingleValueData(time: .string("2018-10-29"), value: 94.050003), + SingleValueData(time: .string("2018-10-30"), value: 98.25), + SingleValueData(time: .string("2018-10-31"), value: 97.25), + SingleValueData(time: .string("2018-11-01"), value: 96.879997), + SingleValueData(time: .string("2018-11-02"), value: 101.78), + SingleValueData(time: .string("2018-11-06"), value: 102.4), + SingleValueData(time: .string("2018-11-07"), value: 100.6), + SingleValueData(time: .string("2018-11-08"), value: 98.5), + SingleValueData(time: .string("2018-11-09"), value: 95.139999), + SingleValueData(time: .string("2018-11-12"), value: 96.900002), + SingleValueData(time: .string("2018-11-13"), value: 97.400002), + SingleValueData(time: .string("2018-11-14"), value: 103.3), + SingleValueData(time: .string("2018-11-15"), value: 102.74), + SingleValueData(time: .string("2018-11-16"), value: 101.2), + SingleValueData(time: .string("2018-11-19"), value: 98.720001), + SingleValueData(time: .string("2018-11-20"), value: 102.2), + SingleValueData(time: .string("2018-11-21"), value: 108.8), + SingleValueData(time: .string("2018-11-22"), value: 109.9), + SingleValueData(time: .string("2018-11-23"), value: 113.74), + SingleValueData(time: .string("2018-11-26"), value: 110.9), + SingleValueData(time: .string("2018-11-27"), value: 113.28), + SingleValueData(time: .string("2018-11-28"), value: 113.6), + SingleValueData(time: .string("2018-11-29"), value: 113.14), + SingleValueData(time: .string("2018-11-30"), value: 114.4), + SingleValueData(time: .string("2018-12-03"), value: 111.84), + SingleValueData(time: .string("2018-12-04"), value: 106.7), + SingleValueData(time: .string("2018-12-05"), value: 107.8), + SingleValueData(time: .string("2018-12-06"), value: 106.44), + SingleValueData(time: .string("2018-12-07"), value: 103.7), + SingleValueData(time: .string("2018-12-10"), value: 101.02), + SingleValueData(time: .string("2018-12-11"), value: 102.72), + SingleValueData(time: .string("2018-12-12"), value: 101.8), + SingleValueData(time: .string("2018-12-13"), value: 102), + SingleValueData(time: .string("2018-12-14"), value: 102.1), + SingleValueData(time: .string("2018-12-17"), value: 101.04), + SingleValueData(time: .string("2018-12-18"), value: 101.6), + SingleValueData(time: .string("2018-12-19"), value: 102), + SingleValueData(time: .string("2018-12-20"), value: 102.02), + SingleValueData(time: .string("2018-12-21"), value: 102.2), + SingleValueData(time: .string("2018-12-24"), value: 102.1), + SingleValueData(time: .string("2018-12-25"), value: 100.8), + SingleValueData(time: .string("2018-12-26"), value: 101.02), + SingleValueData(time: .string("2018-12-27"), value: 100.5), + SingleValueData(time: .string("2018-12-28"), value: 101), + SingleValueData(time: .string("2019-01-03"), value: 101.5), + SingleValueData(time: .string("2019-01-04"), value: 101.1), + SingleValueData(time: .string("2019-01-08"), value: 101.1), + SingleValueData(time: .string("2019-01-09"), value: 102.06), + SingleValueData(time: .string("2019-01-10"), value: 105.14), + SingleValueData(time: .string("2019-01-11"), value: 104.66), + SingleValueData(time: .string("2019-01-14"), value: 106.22), + SingleValueData(time: .string("2019-01-15"), value: 106.98), + SingleValueData(time: .string("2019-01-16"), value: 108.4), + SingleValueData(time: .string("2019-01-17"), value: 109.06), + SingleValueData(time: .string("2019-01-18"), value: 107), + SingleValueData(time: .string("2019-01-21"), value: 105.8), + SingleValueData(time: .string("2019-01-22"), value: 105.24), + SingleValueData(time: .string("2019-01-23"), value: 105.4), + SingleValueData(time: .string("2019-01-24"), value: 105.38), + SingleValueData(time: .string("2019-01-25"), value: 105.7), + SingleValueData(time: .string("2019-01-28"), value: 105.8), + SingleValueData(time: .string("2019-01-29"), value: 106.1), + SingleValueData(time: .string("2019-01-30"), value: 108.6), + SingleValueData(time: .string("2019-01-31"), value: 107.92), + SingleValueData(time: .string("2019-02-01"), value: 105.22), + SingleValueData(time: .string("2019-02-04"), value: 102.44), + SingleValueData(time: .string("2019-02-05"), value: 102.26), + SingleValueData(time: .string("2019-02-06"), value: 102), + SingleValueData(time: .string("2019-02-07"), value: 101.62), + SingleValueData(time: .string("2019-02-08"), value: 101.9), + SingleValueData(time: .string("2019-02-11"), value: 101.78), + SingleValueData(time: .string("2019-02-12"), value: 102.7), + SingleValueData(time: .string("2019-02-13"), value: 100.14), + SingleValueData(time: .string("2019-02-14"), value: 101.36), + SingleValueData(time: .string("2019-02-15"), value: 101.62), + SingleValueData(time: .string("2019-02-18"), value: 100.74), + SingleValueData(time: .string("2019-02-19"), value: 100), + SingleValueData(time: .string("2019-02-20"), value: 100.04), + SingleValueData(time: .string("2019-02-21"), value: 100), + SingleValueData(time: .string("2019-02-22"), value: 100.12), + SingleValueData(time: .string("2019-02-25"), value: 100.04), + SingleValueData(time: .string("2019-02-26"), value: 98.980003), + SingleValueData(time: .string("2019-02-27"), value: 97.699997), + SingleValueData(time: .string("2019-02-28"), value: 97.099998), + SingleValueData(time: .string("2019-03-01"), value: 96.760002), + SingleValueData(time: .string("2019-03-04"), value: 98.360001), + SingleValueData(time: .string("2019-03-05"), value: 96.260002), + SingleValueData(time: .string("2019-03-06"), value: 98.120003), + SingleValueData(time: .string("2019-03-07"), value: 99.68), + SingleValueData(time: .string("2019-03-11"), value: 102.1), + SingleValueData(time: .string("2019-03-12"), value: 100.22), + SingleValueData(time: .string("2019-03-13"), value: 100.5), + SingleValueData(time: .string("2019-03-14"), value: 99.660004), + SingleValueData(time: .string("2019-03-15"), value: 100.08), + SingleValueData(time: .string("2019-03-18"), value: 99.919998), + SingleValueData(time: .string("2019-03-19"), value: 99.459999), + SingleValueData(time: .string("2019-03-20"), value: 98.220001), + SingleValueData(time: .string("2019-03-21"), value: 97.300003), + SingleValueData(time: .string("2019-03-22"), value: 97.660004), + SingleValueData(time: .string("2019-03-25"), value: 97), + SingleValueData(time: .string("2019-03-26"), value: 97.019997), + SingleValueData(time: .string("2019-03-27"), value: 96.099998), + SingleValueData(time: .string("2019-03-28"), value: 96.699997), + SingleValueData(time: .string("2019-03-29"), value: 96.300003), + SingleValueData(time: .string("2019-04-01"), value: 97.779999), + SingleValueData(time: .string("2019-04-02"), value: 98.360001), + SingleValueData(time: .string("2019-04-03"), value: 98.5), + SingleValueData(time: .string("2019-04-04"), value: 98.360001), + SingleValueData(time: .string("2019-04-05"), value: 99.540001), + SingleValueData(time: .string("2019-04-08"), value: 98.580002), + SingleValueData(time: .string("2019-04-09"), value: 97.239998), + SingleValueData(time: .string("2019-04-10"), value: 97.32), + SingleValueData(time: .string("2019-04-11"), value: 98.400002), + SingleValueData(time: .string("2019-04-12"), value: 98.220001), + SingleValueData(time: .string("2019-04-15"), value: 98.720001), + SingleValueData(time: .string("2019-04-16"), value: 99.120003), + SingleValueData(time: .string("2019-04-17"), value: 98.620003), + SingleValueData(time: .string("2019-04-18"), value: 98), + SingleValueData(time: .string("2019-04-19"), value: 97.599998), + SingleValueData(time: .string("2019-04-22"), value: 97.599998), + SingleValueData(time: .string("2019-04-23"), value: 96.800003), + SingleValueData(time: .string("2019-04-24"), value: 96.32), + SingleValueData(time: .string("2019-04-25"), value: 96.339996), + SingleValueData(time: .string("2019-04-26"), value: 97.120003), + SingleValueData(time: .string("2019-04-29"), value: 96.980003), + SingleValueData(time: .string("2019-04-30"), value: 96.32), + SingleValueData(time: .string("2019-05-02"), value: 96.860001), + SingleValueData(time: .string("2019-05-03"), value: 96.699997), + SingleValueData(time: .string("2019-05-06"), value: 94.940002), + SingleValueData(time: .string("2019-05-07"), value: 94.5), + SingleValueData(time: .string("2019-05-08"), value: 94.239998), + SingleValueData(time: .string("2019-05-10"), value: 92.900002), + SingleValueData(time: .string("2019-05-13"), value: 91.279999), + SingleValueData(time: .string("2019-05-14"), value: 91.599998), + SingleValueData(time: .string("2019-05-15"), value: 90.080002), + SingleValueData(time: .string("2019-05-16"), value: 91.68), + SingleValueData(time: .string("2019-05-17"), value: 91.959999), + SingleValueData(time: .string("2019-05-20"), value: 91.080002), + SingleValueData(time: .string("2019-05-21"), value: 90.760002), + SingleValueData(time: .string("2019-05-22"), value: 91), + SingleValueData(time: .string("2019-05-23"), value: 90.739998), + SingleValueData(time: .string("2019-05-24"), value: 91), + SingleValueData(time: .string("2019-05-27"), value: 91.199997), + SingleValueData(time: .string("2019-05-28"), value: 90.68), + SingleValueData(time: .string("2019-05-29"), value: 91.120003), + SingleValueData(time: .string("2019-05-30"), value: 90.419998), + SingleValueData(time: .string("2019-05-31"), value: 93.800003), + SingleValueData(time: .string("2019-06-03"), value: 96.800003), + SingleValueData(time: .string("2019-06-04"), value: 96.34), + SingleValueData(time: .string("2019-06-05"), value: 95.94) ] series.setData(data: data) self.series = series diff --git a/Example/LightweightCharts/Example/GoToRealtimeButtonViewController.swift b/Example/LightweightCharts/Example/GoToRealtimeButtonViewController.swift index ff474f2..b59cf0a 100644 --- a/Example/LightweightCharts/Example/GoToRealtimeButtonViewController.swift +++ b/Example/LightweightCharts/Example/GoToRealtimeButtonViewController.swift @@ -76,156 +76,156 @@ class GoToRealtimeButtonViewController: UIViewController { ) let series = chart.addAreaSeries(options: options) let data = [ - LineData(time: .string("2016-07-18"), value: 26.10), - LineData(time: .string("2016-07-25"), value: 26.19), - LineData(time: .string("2016-08-01"), value: 26.24), - LineData(time: .string("2016-08-08"), value: 26.22), - LineData(time: .string("2016-08-15"), value: 25.98), - LineData(time: .string("2016-08-22"), value: 25.85), - LineData(time: .string("2016-08-29"), value: 25.98), - LineData(time: .string("2016-09-05"), value: 25.71), - LineData(time: .string("2016-09-12"), value: 25.84), - LineData(time: .string("2016-09-19"), value: 25.89), - LineData(time: .string("2016-09-26"), value: 25.65), - LineData(time: .string("2016-10-03"), value: 25.69), - LineData(time: .string("2016-10-10"), value: 25.67), - LineData(time: .string("2016-10-17"), value: 26.11), - LineData(time: .string("2016-10-24"), value: 25.80), - LineData(time: .string("2016-10-31"), value: 25.70), - LineData(time: .string("2016-11-07"), value: 25.40), - LineData(time: .string("2016-11-14"), value: 25.32), - LineData(time: .string("2016-11-21"), value: 25.48), - LineData(time: .string("2016-11-28"), value: 25.08), - LineData(time: .string("2016-12-05"), value: 25.06), - LineData(time: .string("2016-12-12"), value: 25.11), - LineData(time: .string("2016-12-19"), value: 25.34), - LineData(time: .string("2016-12-26"), value: 25.20), - LineData(time: .string("2017-01-02"), value: 25.33), - LineData(time: .string("2017-01-09"), value: 25.56), - LineData(time: .string("2017-01-16"), value: 25.32), - LineData(time: .string("2017-01-23"), value: 25.71), - LineData(time: .string("2017-01-30"), value: 25.85), - LineData(time: .string("2017-02-06"), value: 25.77), - LineData(time: .string("2017-02-13"), value: 25.94), - LineData(time: .string("2017-02-20"), value: 25.67), - LineData(time: .string("2017-02-27"), value: 25.60), - LineData(time: .string("2017-03-06"), value: 25.54), - LineData(time: .string("2017-03-13"), value: 25.84), - LineData(time: .string("2017-03-20"), value: 25.96), - LineData(time: .string("2017-03-27"), value: 25.90), - LineData(time: .string("2017-04-03"), value: 25.97), - LineData(time: .string("2017-04-10"), value: 26.00), - LineData(time: .string("2017-04-17"), value: 26.13), - LineData(time: .string("2017-04-24"), value: 26.02), - LineData(time: .string("2017-05-01"), value: 26.30), - LineData(time: .string("2017-05-08"), value: 26.27), - LineData(time: .string("2017-05-15"), value: 26.24), - LineData(time: .string("2017-05-22"), value: 26.02), - LineData(time: .string("2017-05-29"), value: 26.20), - LineData(time: .string("2017-06-05"), value: 26.12), - LineData(time: .string("2017-06-12"), value: 26.20), - LineData(time: .string("2017-06-19"), value: 26.46), - LineData(time: .string("2017-06-26"), value: 26.39), - LineData(time: .string("2017-07-03"), value: 26.52), - LineData(time: .string("2017-07-10"), value: 26.57), - LineData(time: .string("2017-07-17"), value: 26.65), - LineData(time: .string("2017-07-24"), value: 26.45), - LineData(time: .string("2017-07-31"), value: 26.37), - LineData(time: .string("2017-08-07"), value: 26.13), - LineData(time: .string("2017-08-14"), value: 26.21), - LineData(time: .string("2017-08-21"), value: 26.31), - LineData(time: .string("2017-08-28"), value: 26.33), - LineData(time: .string("2017-09-04"), value: 26.38), - LineData(time: .string("2017-09-11"), value: 26.38), - LineData(time: .string("2017-09-18"), value: 26.50), - LineData(time: .string("2017-09-25"), value: 26.39), - LineData(time: .string("2017-10-02"), value: 25.95), - LineData(time: .string("2017-10-09"), value: 26.15), - LineData(time: .string("2017-10-16"), value: 26.43), - LineData(time: .string("2017-10-23"), value: 26.22), - LineData(time: .string("2017-10-30"), value: 26.14), - LineData(time: .string("2017-11-06"), value: 26.08), - LineData(time: .string("2017-11-13"), value: 26.27), - LineData(time: .string("2017-11-20"), value: 26.30), - LineData(time: .string("2017-11-27"), value: 25.92), - LineData(time: .string("2017-12-04"), value: 26.10), - LineData(time: .string("2017-12-11"), value: 25.88), - LineData(time: .string("2017-12-18"), value: 25.82), - LineData(time: .string("2017-12-25"), value: 25.82), - LineData(time: .string("2018-01-01"), value: 25.81), - LineData(time: .string("2018-01-08"), value: 25.95), - LineData(time: .string("2018-01-15"), value: 26.03), - LineData(time: .string("2018-01-22"), value: 26.04), - LineData(time: .string("2018-01-29"), value: 25.96), - LineData(time: .string("2018-02-05"), value: 25.99), - LineData(time: .string("2018-02-12"), value: 26.00), - LineData(time: .string("2018-02-19"), value: 26.06), - LineData(time: .string("2018-02-26"), value: 25.77), - LineData(time: .string("2018-03-05"), value: 25.81), - LineData(time: .string("2018-03-12"), value: 25.88), - LineData(time: .string("2018-03-19"), value: 25.72), - LineData(time: .string("2018-03-26"), value: 25.75), - LineData(time: .string("2018-04-02"), value: 25.70), - LineData(time: .string("2018-04-09"), value: 25.73), - LineData(time: .string("2018-04-16"), value: 25.74), - LineData(time: .string("2018-04-23"), value: 25.69), - LineData(time: .string("2018-04-30"), value: 25.76), - LineData(time: .string("2018-05-07"), value: 25.89), - LineData(time: .string("2018-05-14"), value: 25.89), - LineData(time: .string("2018-05-21"), value: 26.00), - LineData(time: .string("2018-05-28"), value: 25.79), - LineData(time: .string("2018-06-04"), value: 26.11), - LineData(time: .string("2018-06-11"), value: 26.43), - LineData(time: .string("2018-06-18"), value: 26.30), - LineData(time: .string("2018-06-25"), value: 26.58), - LineData(time: .string("2018-07-02"), value: 26.33), - LineData(time: .string("2018-07-09"), value: 26.33), - LineData(time: .string("2018-07-16"), value: 26.32), - LineData(time: .string("2018-07-23"), value: 26.20), - LineData(time: .string("2018-07-30"), value: 26.03), - LineData(time: .string("2018-08-06"), value: 26.15), - LineData(time: .string("2018-08-13"), value: 26.17), - LineData(time: .string("2018-08-20"), value: 26.28), - LineData(time: .string("2018-08-27"), value: 25.86), - LineData(time: .string("2018-09-03"), value: 25.69), - LineData(time: .string("2018-09-10"), value: 25.69), - LineData(time: .string("2018-09-17"), value: 25.64), - LineData(time: .string("2018-09-24"), value: 25.67), - LineData(time: .string("2018-10-01"), value: 25.55), - LineData(time: .string("2018-10-08"), value: 25.59), - LineData(time: .string("2018-10-15"), value: 26.19), - LineData(time: .string("2018-10-22"), value: 25.81), - LineData(time: .string("2018-10-29"), value: 25.74), - LineData(time: .string("2018-11-05"), value: 25.75), - LineData(time: .string("2018-11-12"), value: 25.75), - LineData(time: .string("2018-11-19"), value: 25.72), - LineData(time: .string("2018-11-26"), value: 25.41), - LineData(time: .string("2018-12-03"), value: 25.39), - LineData(time: .string("2018-12-10"), value: 25.52), - LineData(time: .string("2018-12-17"), value: 25.66), - LineData(time: .string("2018-12-24"), value: 25.68), - LineData(time: .string("2018-12-31"), value: 25.71), - LineData(time: .string("2019-01-07"), value: 25.92), - LineData(time: .string("2019-01-14"), value: 25.60), - LineData(time: .string("2019-01-21"), value: 25.80), - LineData(time: .string("2019-01-28"), value: 25.60), - LineData(time: .string("2019-02-04"), value: 25.72), - LineData(time: .string("2019-02-11"), value: 25.89), - LineData(time: .string("2019-02-18"), value: 26.00), - LineData(time: .string("2019-02-25"), value: 25.86), - LineData(time: .string("2019-03-04"), value: 25.94), - LineData(time: .string("2019-03-11"), value: 26.11), - LineData(time: .string("2019-03-18"), value: 25.88), - LineData(time: .string("2019-03-25"), value: 25.77), - LineData(time: .string("2019-04-01"), value: 26.16), - LineData(time: .string("2019-04-08"), value: 26.04), - LineData(time: .string("2019-04-15"), value: 26.00), - LineData(time: .string("2019-04-22"), value: 25.88), - LineData(time: .string("2019-04-29"), value: 26.02), - LineData(time: .string("2019-05-06"), value: 26.08), - LineData(time: .string("2019-05-13"), value: 26.09), - LineData(time: .string("2019-05-20"), value: 26.16), - LineData(time: .string("2019-05-27"), value: 26.23) + SingleValueData(time: .string("2016-07-18"), value: 26.10), + SingleValueData(time: .string("2016-07-25"), value: 26.19), + SingleValueData(time: .string("2016-08-01"), value: 26.24), + SingleValueData(time: .string("2016-08-08"), value: 26.22), + SingleValueData(time: .string("2016-08-15"), value: 25.98), + SingleValueData(time: .string("2016-08-22"), value: 25.85), + SingleValueData(time: .string("2016-08-29"), value: 25.98), + SingleValueData(time: .string("2016-09-05"), value: 25.71), + SingleValueData(time: .string("2016-09-12"), value: 25.84), + SingleValueData(time: .string("2016-09-19"), value: 25.89), + SingleValueData(time: .string("2016-09-26"), value: 25.65), + SingleValueData(time: .string("2016-10-03"), value: 25.69), + SingleValueData(time: .string("2016-10-10"), value: 25.67), + SingleValueData(time: .string("2016-10-17"), value: 26.11), + SingleValueData(time: .string("2016-10-24"), value: 25.80), + SingleValueData(time: .string("2016-10-31"), value: 25.70), + SingleValueData(time: .string("2016-11-07"), value: 25.40), + SingleValueData(time: .string("2016-11-14"), value: 25.32), + SingleValueData(time: .string("2016-11-21"), value: 25.48), + SingleValueData(time: .string("2016-11-28"), value: 25.08), + SingleValueData(time: .string("2016-12-05"), value: 25.06), + SingleValueData(time: .string("2016-12-12"), value: 25.11), + SingleValueData(time: .string("2016-12-19"), value: 25.34), + SingleValueData(time: .string("2016-12-26"), value: 25.20), + SingleValueData(time: .string("2017-01-02"), value: 25.33), + SingleValueData(time: .string("2017-01-09"), value: 25.56), + SingleValueData(time: .string("2017-01-16"), value: 25.32), + SingleValueData(time: .string("2017-01-23"), value: 25.71), + SingleValueData(time: .string("2017-01-30"), value: 25.85), + SingleValueData(time: .string("2017-02-06"), value: 25.77), + SingleValueData(time: .string("2017-02-13"), value: 25.94), + SingleValueData(time: .string("2017-02-20"), value: 25.67), + SingleValueData(time: .string("2017-02-27"), value: 25.60), + SingleValueData(time: .string("2017-03-06"), value: 25.54), + SingleValueData(time: .string("2017-03-13"), value: 25.84), + SingleValueData(time: .string("2017-03-20"), value: 25.96), + SingleValueData(time: .string("2017-03-27"), value: 25.90), + SingleValueData(time: .string("2017-04-03"), value: 25.97), + SingleValueData(time: .string("2017-04-10"), value: 26.00), + SingleValueData(time: .string("2017-04-17"), value: 26.13), + SingleValueData(time: .string("2017-04-24"), value: 26.02), + SingleValueData(time: .string("2017-05-01"), value: 26.30), + SingleValueData(time: .string("2017-05-08"), value: 26.27), + SingleValueData(time: .string("2017-05-15"), value: 26.24), + SingleValueData(time: .string("2017-05-22"), value: 26.02), + SingleValueData(time: .string("2017-05-29"), value: 26.20), + SingleValueData(time: .string("2017-06-05"), value: 26.12), + SingleValueData(time: .string("2017-06-12"), value: 26.20), + SingleValueData(time: .string("2017-06-19"), value: 26.46), + SingleValueData(time: .string("2017-06-26"), value: 26.39), + SingleValueData(time: .string("2017-07-03"), value: 26.52), + SingleValueData(time: .string("2017-07-10"), value: 26.57), + SingleValueData(time: .string("2017-07-17"), value: 26.65), + SingleValueData(time: .string("2017-07-24"), value: 26.45), + SingleValueData(time: .string("2017-07-31"), value: 26.37), + SingleValueData(time: .string("2017-08-07"), value: 26.13), + SingleValueData(time: .string("2017-08-14"), value: 26.21), + SingleValueData(time: .string("2017-08-21"), value: 26.31), + SingleValueData(time: .string("2017-08-28"), value: 26.33), + SingleValueData(time: .string("2017-09-04"), value: 26.38), + SingleValueData(time: .string("2017-09-11"), value: 26.38), + SingleValueData(time: .string("2017-09-18"), value: 26.50), + SingleValueData(time: .string("2017-09-25"), value: 26.39), + SingleValueData(time: .string("2017-10-02"), value: 25.95), + SingleValueData(time: .string("2017-10-09"), value: 26.15), + SingleValueData(time: .string("2017-10-16"), value: 26.43), + SingleValueData(time: .string("2017-10-23"), value: 26.22), + SingleValueData(time: .string("2017-10-30"), value: 26.14), + SingleValueData(time: .string("2017-11-06"), value: 26.08), + SingleValueData(time: .string("2017-11-13"), value: 26.27), + SingleValueData(time: .string("2017-11-20"), value: 26.30), + SingleValueData(time: .string("2017-11-27"), value: 25.92), + SingleValueData(time: .string("2017-12-04"), value: 26.10), + SingleValueData(time: .string("2017-12-11"), value: 25.88), + SingleValueData(time: .string("2017-12-18"), value: 25.82), + SingleValueData(time: .string("2017-12-25"), value: 25.82), + SingleValueData(time: .string("2018-01-01"), value: 25.81), + SingleValueData(time: .string("2018-01-08"), value: 25.95), + SingleValueData(time: .string("2018-01-15"), value: 26.03), + SingleValueData(time: .string("2018-01-22"), value: 26.04), + SingleValueData(time: .string("2018-01-29"), value: 25.96), + SingleValueData(time: .string("2018-02-05"), value: 25.99), + SingleValueData(time: .string("2018-02-12"), value: 26.00), + SingleValueData(time: .string("2018-02-19"), value: 26.06), + SingleValueData(time: .string("2018-02-26"), value: 25.77), + SingleValueData(time: .string("2018-03-05"), value: 25.81), + SingleValueData(time: .string("2018-03-12"), value: 25.88), + SingleValueData(time: .string("2018-03-19"), value: 25.72), + SingleValueData(time: .string("2018-03-26"), value: 25.75), + SingleValueData(time: .string("2018-04-02"), value: 25.70), + SingleValueData(time: .string("2018-04-09"), value: 25.73), + SingleValueData(time: .string("2018-04-16"), value: 25.74), + SingleValueData(time: .string("2018-04-23"), value: 25.69), + SingleValueData(time: .string("2018-04-30"), value: 25.76), + SingleValueData(time: .string("2018-05-07"), value: 25.89), + SingleValueData(time: .string("2018-05-14"), value: 25.89), + SingleValueData(time: .string("2018-05-21"), value: 26.00), + SingleValueData(time: .string("2018-05-28"), value: 25.79), + SingleValueData(time: .string("2018-06-04"), value: 26.11), + SingleValueData(time: .string("2018-06-11"), value: 26.43), + SingleValueData(time: .string("2018-06-18"), value: 26.30), + SingleValueData(time: .string("2018-06-25"), value: 26.58), + SingleValueData(time: .string("2018-07-02"), value: 26.33), + SingleValueData(time: .string("2018-07-09"), value: 26.33), + SingleValueData(time: .string("2018-07-16"), value: 26.32), + SingleValueData(time: .string("2018-07-23"), value: 26.20), + SingleValueData(time: .string("2018-07-30"), value: 26.03), + SingleValueData(time: .string("2018-08-06"), value: 26.15), + SingleValueData(time: .string("2018-08-13"), value: 26.17), + SingleValueData(time: .string("2018-08-20"), value: 26.28), + SingleValueData(time: .string("2018-08-27"), value: 25.86), + SingleValueData(time: .string("2018-09-03"), value: 25.69), + SingleValueData(time: .string("2018-09-10"), value: 25.69), + SingleValueData(time: .string("2018-09-17"), value: 25.64), + SingleValueData(time: .string("2018-09-24"), value: 25.67), + SingleValueData(time: .string("2018-10-01"), value: 25.55), + SingleValueData(time: .string("2018-10-08"), value: 25.59), + SingleValueData(time: .string("2018-10-15"), value: 26.19), + SingleValueData(time: .string("2018-10-22"), value: 25.81), + SingleValueData(time: .string("2018-10-29"), value: 25.74), + SingleValueData(time: .string("2018-11-05"), value: 25.75), + SingleValueData(time: .string("2018-11-12"), value: 25.75), + SingleValueData(time: .string("2018-11-19"), value: 25.72), + SingleValueData(time: .string("2018-11-26"), value: 25.41), + SingleValueData(time: .string("2018-12-03"), value: 25.39), + SingleValueData(time: .string("2018-12-10"), value: 25.52), + SingleValueData(time: .string("2018-12-17"), value: 25.66), + SingleValueData(time: .string("2018-12-24"), value: 25.68), + SingleValueData(time: .string("2018-12-31"), value: 25.71), + SingleValueData(time: .string("2019-01-07"), value: 25.92), + SingleValueData(time: .string("2019-01-14"), value: 25.60), + SingleValueData(time: .string("2019-01-21"), value: 25.80), + SingleValueData(time: .string("2019-01-28"), value: 25.60), + SingleValueData(time: .string("2019-02-04"), value: 25.72), + SingleValueData(time: .string("2019-02-11"), value: 25.89), + SingleValueData(time: .string("2019-02-18"), value: 26.00), + SingleValueData(time: .string("2019-02-25"), value: 25.86), + SingleValueData(time: .string("2019-03-04"), value: 25.94), + SingleValueData(time: .string("2019-03-11"), value: 26.11), + SingleValueData(time: .string("2019-03-18"), value: 25.88), + SingleValueData(time: .string("2019-03-25"), value: 25.77), + SingleValueData(time: .string("2019-04-01"), value: 26.16), + SingleValueData(time: .string("2019-04-08"), value: 26.04), + SingleValueData(time: .string("2019-04-15"), value: 26.00), + SingleValueData(time: .string("2019-04-22"), value: 25.88), + SingleValueData(time: .string("2019-04-29"), value: 26.02), + SingleValueData(time: .string("2019-05-06"), value: 26.08), + SingleValueData(time: .string("2019-05-13"), value: 26.09), + SingleValueData(time: .string("2019-05-20"), value: 26.16), + SingleValueData(time: .string("2019-05-27"), value: 26.23) ] series.setData(data: data) self.series = series diff --git a/Example/LightweightCharts/Example/LegendViewController.swift b/Example/LightweightCharts/Example/LegendViewController.swift index cbdc6e7..4f83d23 100644 --- a/Example/LightweightCharts/Example/LegendViewController.swift +++ b/Example/LightweightCharts/Example/LegendViewController.swift @@ -84,156 +84,156 @@ class LegendViewController: UIViewController { ) let series = chart.addAreaSeries(options: options) let data = [ - LineData(time: .string("2018-10-19"), value: 26.19), - LineData(time: .string("2018-10-22"), value: 25.87), - LineData(time: .string("2018-10-23"), value: 25.83), - LineData(time: .string("2018-10-24"), value: 25.78), - LineData(time: .string("2018-10-25"), value: 25.82), - LineData(time: .string("2018-10-26"), value: 25.81), - LineData(time: .string("2018-10-29"), value: 25.82), - LineData(time: .string("2018-10-30"), value: 25.71), - LineData(time: .string("2018-10-31"), value: 25.82), - LineData(time: .string("2018-11-01"), value: 25.72), - LineData(time: .string("2018-11-02"), value: 25.74), - LineData(time: .string("2018-11-05"), value: 25.81), - LineData(time: .string("2018-11-06"), value: 25.75), - LineData(time: .string("2018-11-07"), value: 25.73), - LineData(time: .string("2018-11-08"), value: 25.75), - LineData(time: .string("2018-11-09"), value: 25.75), - LineData(time: .string("2018-11-12"), value: 25.76), - LineData(time: .string("2018-11-13"), value: 25.80), - LineData(time: .string("2018-11-14"), value: 25.77), - LineData(time: .string("2018-11-15"), value: 25.75), - LineData(time: .string("2018-11-16"), value: 25.75), - LineData(time: .string("2018-11-19"), value: 25.75), - LineData(time: .string("2018-11-20"), value: 25.72), - LineData(time: .string("2018-11-21"), value: 25.78), - LineData(time: .string("2018-11-23"), value: 25.72), - LineData(time: .string("2018-11-26"), value: 25.78), - LineData(time: .string("2018-11-27"), value: 25.85), - LineData(time: .string("2018-11-28"), value: 25.85), - LineData(time: .string("2018-11-29"), value: 25.55), - LineData(time: .string("2018-11-30"), value: 25.41), - LineData(time: .string("2018-12-03"), value: 25.41), - LineData(time: .string("2018-12-04"), value: 25.42), - LineData(time: .string("2018-12-06"), value: 25.33), - LineData(time: .string("2018-12-07"), value: 25.39), - LineData(time: .string("2018-12-10"), value: 25.32), - LineData(time: .string("2018-12-11"), value: 25.48), - LineData(time: .string("2018-12-12"), value: 25.39), - LineData(time: .string("2018-12-13"), value: 25.45), - LineData(time: .string("2018-12-14"), value: 25.52), - LineData(time: .string("2018-12-17"), value: 25.38), - LineData(time: .string("2018-12-18"), value: 25.36), - LineData(time: .string("2018-12-19"), value: 25.65), - LineData(time: .string("2018-12-20"), value: 25.70), - LineData(time: .string("2018-12-21"), value: 25.66), - LineData(time: .string("2018-12-24"), value: 25.66), - LineData(time: .string("2018-12-26"), value: 25.65), - LineData(time: .string("2018-12-27"), value: 25.66), - LineData(time: .string("2018-12-28"), value: 25.68), - LineData(time: .string("2018-12-31"), value: 25.77), - LineData(time: .string("2019-01-02"), value: 25.72), - LineData(time: .string("2019-01-03"), value: 25.69), - LineData(time: .string("2019-01-04"), value: 25.71), - LineData(time: .string("2019-01-07"), value: 25.72), - LineData(time: .string("2019-01-08"), value: 25.72), - LineData(time: .string("2019-01-09"), value: 25.66), - LineData(time: .string("2019-01-10"), value: 25.85), - LineData(time: .string("2019-01-11"), value: 25.92), - LineData(time: .string("2019-01-14"), value: 25.94), - LineData(time: .string("2019-01-15"), value: 25.95), - LineData(time: .string("2019-01-16"), value: 26.00), - LineData(time: .string("2019-01-17"), value: 25.99), - LineData(time: .string("2019-01-18"), value: 25.60), - LineData(time: .string("2019-01-22"), value: 25.81), - LineData(time: .string("2019-01-23"), value: 25.70), - LineData(time: .string("2019-01-24"), value: 25.74), - LineData(time: .string("2019-01-25"), value: 25.80), - LineData(time: .string("2019-01-28"), value: 25.83), - LineData(time: .string("2019-01-29"), value: 25.70), - LineData(time: .string("2019-01-30"), value: 25.78), - LineData(time: .string("2019-01-31"), value: 25.35), - LineData(time: .string("2019-02-01"), value: 25.60), - LineData(time: .string("2019-02-04"), value: 25.65), - LineData(time: .string("2019-02-05"), value: 25.73), - LineData(time: .string("2019-02-06"), value: 25.71), - LineData(time: .string("2019-02-07"), value: 25.71), - LineData(time: .string("2019-02-08"), value: 25.72), - LineData(time: .string("2019-02-11"), value: 25.76), - LineData(time: .string("2019-02-12"), value: 25.84), - LineData(time: .string("2019-02-13"), value: 25.85), - LineData(time: .string("2019-02-14"), value: 25.87), - LineData(time: .string("2019-02-15"), value: 25.89), - LineData(time: .string("2019-02-19"), value: 25.90), - LineData(time: .string("2019-02-20"), value: 25.92), - LineData(time: .string("2019-02-21"), value: 25.96), - LineData(time: .string("2019-02-22"), value: 26.00), - LineData(time: .string("2019-02-25"), value: 25.93), - LineData(time: .string("2019-02-26"), value: 25.92), - LineData(time: .string("2019-02-27"), value: 25.67), - LineData(time: .string("2019-02-28"), value: 25.79), - LineData(time: .string("2019-03-01"), value: 25.86), - LineData(time: .string("2019-03-04"), value: 25.94), - LineData(time: .string("2019-03-05"), value: 26.02), - LineData(time: .string("2019-03-06"), value: 25.95), - LineData(time: .string("2019-03-07"), value: 25.89), - LineData(time: .string("2019-03-08"), value: 25.94), - LineData(time: .string("2019-03-11"), value: 25.91), - LineData(time: .string("2019-03-12"), value: 25.92), - LineData(time: .string("2019-03-13"), value: 26.00), - LineData(time: .string("2019-03-14"), value: 26.05), - LineData(time: .string("2019-03-15"), value: 26.11), - LineData(time: .string("2019-03-18"), value: 26.10), - LineData(time: .string("2019-03-19"), value: 25.98), - LineData(time: .string("2019-03-20"), value: 26.11), - LineData(time: .string("2019-03-21"), value: 26.12), - LineData(time: .string("2019-03-22"), value: 25.88), - LineData(time: .string("2019-03-25"), value: 25.85), - LineData(time: .string("2019-03-26"), value: 25.72), - LineData(time: .string("2019-03-27"), value: 25.73), - LineData(time: .string("2019-03-28"), value: 25.80), - LineData(time: .string("2019-03-29"), value: 25.77), - LineData(time: .string("2019-04-01"), value: 26.06), - LineData(time: .string("2019-04-02"), value: 25.93), - LineData(time: .string("2019-04-03"), value: 25.95), - LineData(time: .string("2019-04-04"), value: 26.06), - LineData(time: .string("2019-04-05"), value: 26.16), - LineData(time: .string("2019-04-08"), value: 26.12), - LineData(time: .string("2019-04-09"), value: 26.07), - LineData(time: .string("2019-04-10"), value: 26.13), - LineData(time: .string("2019-04-11"), value: 26.04), - LineData(time: .string("2019-04-12"), value: 26.04), - LineData(time: .string("2019-04-15"), value: 26.05), - LineData(time: .string("2019-04-16"), value: 26.01), - LineData(time: .string("2019-04-17"), value: 26.09), - LineData(time: .string("2019-04-18"), value: 26.00), - LineData(time: .string("2019-04-22"), value: 26.00), - LineData(time: .string("2019-04-23"), value: 26.06), - LineData(time: .string("2019-04-24"), value: 26.00), - LineData(time: .string("2019-04-25"), value: 25.81), - LineData(time: .string("2019-04-26"), value: 25.88), - LineData(time: .string("2019-04-29"), value: 25.91), - LineData(time: .string("2019-04-30"), value: 25.90), - LineData(time: .string("2019-05-01"), value: 26.02), - LineData(time: .string("2019-05-02"), value: 25.97), - LineData(time: .string("2019-05-03"), value: 26.02), - LineData(time: .string("2019-05-06"), value: 26.03), - LineData(time: .string("2019-05-07"), value: 26.04), - LineData(time: .string("2019-05-08"), value: 26.05), - LineData(time: .string("2019-05-09"), value: 26.05), - LineData(time: .string("2019-05-10"), value: 26.08), - LineData(time: .string("2019-05-13"), value: 26.05), - LineData(time: .string("2019-05-14"), value: 26.01), - LineData(time: .string("2019-05-15"), value: 26.03), - LineData(time: .string("2019-05-16"), value: 26.14), - LineData(time: .string("2019-05-17"), value: 26.09), - LineData(time: .string("2019-05-20"), value: 26.01), - LineData(time: .string("2019-05-21"), value: 26.12), - LineData(time: .string("2019-05-22"), value: 26.15), - LineData(time: .string("2019-05-23"), value: 26.18), - LineData(time: .string("2019-05-24"), value: 26.16), - LineData(time: .string("2019-05-28"), value: 26.23) + SingleValueData(time: .string("2018-10-19"), value: 26.19), + SingleValueData(time: .string("2018-10-22"), value: 25.87), + SingleValueData(time: .string("2018-10-23"), value: 25.83), + SingleValueData(time: .string("2018-10-24"), value: 25.78), + SingleValueData(time: .string("2018-10-25"), value: 25.82), + SingleValueData(time: .string("2018-10-26"), value: 25.81), + SingleValueData(time: .string("2018-10-29"), value: 25.82), + SingleValueData(time: .string("2018-10-30"), value: 25.71), + SingleValueData(time: .string("2018-10-31"), value: 25.82), + SingleValueData(time: .string("2018-11-01"), value: 25.72), + SingleValueData(time: .string("2018-11-02"), value: 25.74), + SingleValueData(time: .string("2018-11-05"), value: 25.81), + SingleValueData(time: .string("2018-11-06"), value: 25.75), + SingleValueData(time: .string("2018-11-07"), value: 25.73), + SingleValueData(time: .string("2018-11-08"), value: 25.75), + SingleValueData(time: .string("2018-11-09"), value: 25.75), + SingleValueData(time: .string("2018-11-12"), value: 25.76), + SingleValueData(time: .string("2018-11-13"), value: 25.80), + SingleValueData(time: .string("2018-11-14"), value: 25.77), + SingleValueData(time: .string("2018-11-15"), value: 25.75), + SingleValueData(time: .string("2018-11-16"), value: 25.75), + SingleValueData(time: .string("2018-11-19"), value: 25.75), + SingleValueData(time: .string("2018-11-20"), value: 25.72), + SingleValueData(time: .string("2018-11-21"), value: 25.78), + SingleValueData(time: .string("2018-11-23"), value: 25.72), + SingleValueData(time: .string("2018-11-26"), value: 25.78), + SingleValueData(time: .string("2018-11-27"), value: 25.85), + SingleValueData(time: .string("2018-11-28"), value: 25.85), + SingleValueData(time: .string("2018-11-29"), value: 25.55), + SingleValueData(time: .string("2018-11-30"), value: 25.41), + SingleValueData(time: .string("2018-12-03"), value: 25.41), + SingleValueData(time: .string("2018-12-04"), value: 25.42), + SingleValueData(time: .string("2018-12-06"), value: 25.33), + SingleValueData(time: .string("2018-12-07"), value: 25.39), + SingleValueData(time: .string("2018-12-10"), value: 25.32), + SingleValueData(time: .string("2018-12-11"), value: 25.48), + SingleValueData(time: .string("2018-12-12"), value: 25.39), + SingleValueData(time: .string("2018-12-13"), value: 25.45), + SingleValueData(time: .string("2018-12-14"), value: 25.52), + SingleValueData(time: .string("2018-12-17"), value: 25.38), + SingleValueData(time: .string("2018-12-18"), value: 25.36), + SingleValueData(time: .string("2018-12-19"), value: 25.65), + SingleValueData(time: .string("2018-12-20"), value: 25.70), + SingleValueData(time: .string("2018-12-21"), value: 25.66), + SingleValueData(time: .string("2018-12-24"), value: 25.66), + SingleValueData(time: .string("2018-12-26"), value: 25.65), + SingleValueData(time: .string("2018-12-27"), value: 25.66), + SingleValueData(time: .string("2018-12-28"), value: 25.68), + SingleValueData(time: .string("2018-12-31"), value: 25.77), + SingleValueData(time: .string("2019-01-02"), value: 25.72), + SingleValueData(time: .string("2019-01-03"), value: 25.69), + SingleValueData(time: .string("2019-01-04"), value: 25.71), + SingleValueData(time: .string("2019-01-07"), value: 25.72), + SingleValueData(time: .string("2019-01-08"), value: 25.72), + SingleValueData(time: .string("2019-01-09"), value: 25.66), + SingleValueData(time: .string("2019-01-10"), value: 25.85), + SingleValueData(time: .string("2019-01-11"), value: 25.92), + SingleValueData(time: .string("2019-01-14"), value: 25.94), + SingleValueData(time: .string("2019-01-15"), value: 25.95), + SingleValueData(time: .string("2019-01-16"), value: 26.00), + SingleValueData(time: .string("2019-01-17"), value: 25.99), + SingleValueData(time: .string("2019-01-18"), value: 25.60), + SingleValueData(time: .string("2019-01-22"), value: 25.81), + SingleValueData(time: .string("2019-01-23"), value: 25.70), + SingleValueData(time: .string("2019-01-24"), value: 25.74), + SingleValueData(time: .string("2019-01-25"), value: 25.80), + SingleValueData(time: .string("2019-01-28"), value: 25.83), + SingleValueData(time: .string("2019-01-29"), value: 25.70), + SingleValueData(time: .string("2019-01-30"), value: 25.78), + SingleValueData(time: .string("2019-01-31"), value: 25.35), + SingleValueData(time: .string("2019-02-01"), value: 25.60), + SingleValueData(time: .string("2019-02-04"), value: 25.65), + SingleValueData(time: .string("2019-02-05"), value: 25.73), + SingleValueData(time: .string("2019-02-06"), value: 25.71), + SingleValueData(time: .string("2019-02-07"), value: 25.71), + SingleValueData(time: .string("2019-02-08"), value: 25.72), + SingleValueData(time: .string("2019-02-11"), value: 25.76), + SingleValueData(time: .string("2019-02-12"), value: 25.84), + SingleValueData(time: .string("2019-02-13"), value: 25.85), + SingleValueData(time: .string("2019-02-14"), value: 25.87), + SingleValueData(time: .string("2019-02-15"), value: 25.89), + SingleValueData(time: .string("2019-02-19"), value: 25.90), + SingleValueData(time: .string("2019-02-20"), value: 25.92), + SingleValueData(time: .string("2019-02-21"), value: 25.96), + SingleValueData(time: .string("2019-02-22"), value: 26.00), + SingleValueData(time: .string("2019-02-25"), value: 25.93), + SingleValueData(time: .string("2019-02-26"), value: 25.92), + SingleValueData(time: .string("2019-02-27"), value: 25.67), + SingleValueData(time: .string("2019-02-28"), value: 25.79), + SingleValueData(time: .string("2019-03-01"), value: 25.86), + SingleValueData(time: .string("2019-03-04"), value: 25.94), + SingleValueData(time: .string("2019-03-05"), value: 26.02), + SingleValueData(time: .string("2019-03-06"), value: 25.95), + SingleValueData(time: .string("2019-03-07"), value: 25.89), + SingleValueData(time: .string("2019-03-08"), value: 25.94), + SingleValueData(time: .string("2019-03-11"), value: 25.91), + SingleValueData(time: .string("2019-03-12"), value: 25.92), + SingleValueData(time: .string("2019-03-13"), value: 26.00), + SingleValueData(time: .string("2019-03-14"), value: 26.05), + SingleValueData(time: .string("2019-03-15"), value: 26.11), + SingleValueData(time: .string("2019-03-18"), value: 26.10), + SingleValueData(time: .string("2019-03-19"), value: 25.98), + SingleValueData(time: .string("2019-03-20"), value: 26.11), + SingleValueData(time: .string("2019-03-21"), value: 26.12), + SingleValueData(time: .string("2019-03-22"), value: 25.88), + SingleValueData(time: .string("2019-03-25"), value: 25.85), + SingleValueData(time: .string("2019-03-26"), value: 25.72), + SingleValueData(time: .string("2019-03-27"), value: 25.73), + SingleValueData(time: .string("2019-03-28"), value: 25.80), + SingleValueData(time: .string("2019-03-29"), value: 25.77), + SingleValueData(time: .string("2019-04-01"), value: 26.06), + SingleValueData(time: .string("2019-04-02"), value: 25.93), + SingleValueData(time: .string("2019-04-03"), value: 25.95), + SingleValueData(time: .string("2019-04-04"), value: 26.06), + SingleValueData(time: .string("2019-04-05"), value: 26.16), + SingleValueData(time: .string("2019-04-08"), value: 26.12), + SingleValueData(time: .string("2019-04-09"), value: 26.07), + SingleValueData(time: .string("2019-04-10"), value: 26.13), + SingleValueData(time: .string("2019-04-11"), value: 26.04), + SingleValueData(time: .string("2019-04-12"), value: 26.04), + SingleValueData(time: .string("2019-04-15"), value: 26.05), + SingleValueData(time: .string("2019-04-16"), value: 26.01), + SingleValueData(time: .string("2019-04-17"), value: 26.09), + SingleValueData(time: .string("2019-04-18"), value: 26.00), + SingleValueData(time: .string("2019-04-22"), value: 26.00), + SingleValueData(time: .string("2019-04-23"), value: 26.06), + SingleValueData(time: .string("2019-04-24"), value: 26.00), + SingleValueData(time: .string("2019-04-25"), value: 25.81), + SingleValueData(time: .string("2019-04-26"), value: 25.88), + SingleValueData(time: .string("2019-04-29"), value: 25.91), + SingleValueData(time: .string("2019-04-30"), value: 25.90), + SingleValueData(time: .string("2019-05-01"), value: 26.02), + SingleValueData(time: .string("2019-05-02"), value: 25.97), + SingleValueData(time: .string("2019-05-03"), value: 26.02), + SingleValueData(time: .string("2019-05-06"), value: 26.03), + SingleValueData(time: .string("2019-05-07"), value: 26.04), + SingleValueData(time: .string("2019-05-08"), value: 26.05), + SingleValueData(time: .string("2019-05-09"), value: 26.05), + SingleValueData(time: .string("2019-05-10"), value: 26.08), + SingleValueData(time: .string("2019-05-13"), value: 26.05), + SingleValueData(time: .string("2019-05-14"), value: 26.01), + SingleValueData(time: .string("2019-05-15"), value: 26.03), + SingleValueData(time: .string("2019-05-16"), value: 26.14), + SingleValueData(time: .string("2019-05-17"), value: 26.09), + SingleValueData(time: .string("2019-05-20"), value: 26.01), + SingleValueData(time: .string("2019-05-21"), value: 26.12), + SingleValueData(time: .string("2019-05-22"), value: 26.15), + SingleValueData(time: .string("2019-05-23"), value: 26.18), + SingleValueData(time: .string("2019-05-24"), value: 26.16), + SingleValueData(time: .string("2019-05-28"), value: 26.23) ] series.setData(data: data) self.series = series diff --git a/Example/LightweightCharts/Example/MagnifierTooltipViewController.swift b/Example/LightweightCharts/Example/MagnifierTooltipViewController.swift index 7608cba..495ea2b 100644 --- a/Example/LightweightCharts/Example/MagnifierTooltipViewController.swift +++ b/Example/LightweightCharts/Example/MagnifierTooltipViewController.swift @@ -96,306 +96,306 @@ class MagnifierTooltipViewController: UIViewController { ) let series = chart.addAreaSeries(options: options) let data = [ - LineData(time: .string("2018-03-28"), value: 154), - LineData(time: .string("2018-03-29"), value: 154.2), - LineData(time: .string("2018-03-30"), value: 155.60001), - LineData(time: .string("2018-04-02"), value: 156.25), - LineData(time: .string("2018-04-03"), value: 156.25), - LineData(time: .string("2018-04-04"), value: 156.05), - LineData(time: .string("2018-04-05"), value: 158.05), - LineData(time: .string("2018-04-06"), value: 157.3), - LineData(time: .string("2018-04-09"), value: 144), - LineData(time: .string("2018-04-10"), value: 144.8), - LineData(time: .string("2018-04-11"), value: 143.5), - LineData(time: .string("2018-04-12"), value: 147.05), - LineData(time: .string("2018-04-13"), value: 144.85001), - LineData(time: .string("2018-04-16"), value: 145.39999), - LineData(time: .string("2018-04-17"), value: 147.3), - LineData(time: .string("2018-04-18"), value: 153.55), - LineData(time: .string("2018-04-19"), value: 150.95), - LineData(time: .string("2018-04-20"), value: 149.39999), - LineData(time: .string("2018-04-23"), value: 148.5), - LineData(time: .string("2018-04-24"), value: 146.60001), - LineData(time: .string("2018-04-25"), value: 144.45), - LineData(time: .string("2018-04-26"), value: 145.60001), - LineData(time: .string("2018-04-27"), value: 144.3), - LineData(time: .string("2018-04-30"), value: 144), - LineData(time: .string("2018-05-02"), value: 147.3), - LineData(time: .string("2018-05-03"), value: 144.2), - LineData(time: .string("2018-05-04"), value: 141.64999), - LineData(time: .string("2018-05-07"), value: 141.89999), - LineData(time: .string("2018-05-08"), value: 140.39999), - LineData(time: .string("2018-05-10"), value: 139.8), - LineData(time: .string("2018-05-11"), value: 137.5), - LineData(time: .string("2018-05-14"), value: 136.14999), - LineData(time: .string("2018-05-15"), value: 138), - LineData(time: .string("2018-05-16"), value: 137.95), - LineData(time: .string("2018-05-17"), value: 137.95), - LineData(time: .string("2018-05-18"), value: 136.75), - LineData(time: .string("2018-05-21"), value: 136.2), - LineData(time: .string("2018-05-22"), value: 135), - LineData(time: .string("2018-05-23"), value: 132.55), - LineData(time: .string("2018-05-24"), value: 132.7), - LineData(time: .string("2018-05-25"), value: 132.2), - LineData(time: .string("2018-05-28"), value: 131.55), - LineData(time: .string("2018-05-29"), value: 131.85001), - LineData(time: .string("2018-05-30"), value: 139.85001), - LineData(time: .string("2018-05-31"), value: 140.8), - LineData(time: .string("2018-06-01"), value: 139.64999), - LineData(time: .string("2018-06-04"), value: 137.10001), - LineData(time: .string("2018-06-05"), value: 139.25), - LineData(time: .string("2018-06-06"), value: 141.3), - LineData(time: .string("2018-06-07"), value: 145), - LineData(time: .string("2018-06-08"), value: 143.89999), - LineData(time: .string("2018-06-11"), value: 142.7), - LineData(time: .string("2018-06-13"), value: 144.05), - LineData(time: .string("2018-06-14"), value: 143.55), - LineData(time: .string("2018-06-15"), value: 140.5), - LineData(time: .string("2018-06-18"), value: 139.64999), - LineData(time: .string("2018-06-19"), value: 138), - LineData(time: .string("2018-06-20"), value: 141), - LineData(time: .string("2018-06-21"), value: 140.55), - LineData(time: .string("2018-06-22"), value: 140.55), - LineData(time: .string("2018-06-25"), value: 140.75), - LineData(time: .string("2018-06-26"), value: 140.64999), - LineData(time: .string("2018-06-27"), value: 141.14999), - LineData(time: .string("2018-06-28"), value: 139.8), - LineData(time: .string("2018-06-29"), value: 139.8), - LineData(time: .string("2018-07-02"), value: 140.14999), - LineData(time: .string("2018-07-03"), value: 143.05), - LineData(time: .string("2018-07-04"), value: 140), - LineData(time: .string("2018-07-05"), value: 129.2), - LineData(time: .string("2018-07-06"), value: 129.55), - LineData(time: .string("2018-07-09"), value: 128.3), - LineData(time: .string("2018-07-10"), value: 126.55), - LineData(time: .string("2018-07-11"), value: 124.3), - LineData(time: .string("2018-07-12"), value: 124.8), - LineData(time: .string("2018-07-13"), value: 123.25), - LineData(time: .string("2018-07-16"), value: 123), - LineData(time: .string("2018-07-17"), value: 124.25), - LineData(time: .string("2018-07-18"), value: 123), - LineData(time: .string("2018-07-19"), value: 121), - LineData(time: .string("2018-07-20"), value: 121.45), - LineData(time: .string("2018-07-23"), value: 123.8), - LineData(time: .string("2018-07-24"), value: 122.15), - LineData(time: .string("2018-07-25"), value: 121.3), - LineData(time: .string("2018-07-26"), value: 122.7), - LineData(time: .string("2018-07-27"), value: 122.2), - LineData(time: .string("2018-07-30"), value: 121.7), - LineData(time: .string("2018-07-31"), value: 122.95), - LineData(time: .string("2018-08-01"), value: 121), - LineData(time: .string("2018-08-02"), value: 116), - LineData(time: .string("2018-08-03"), value: 118.1), - LineData(time: .string("2018-08-06"), value: 114.3), - LineData(time: .string("2018-08-07"), value: 114.25), - LineData(time: .string("2018-08-08"), value: 111.85), - LineData(time: .string("2018-08-09"), value: 109.7), - LineData(time: .string("2018-08-10"), value: 105), - LineData(time: .string("2018-08-13"), value: 105.75), - LineData(time: .string("2018-08-14"), value: 107.25), - LineData(time: .string("2018-08-15"), value: 107.4), - LineData(time: .string("2018-08-16"), value: 110.5), - LineData(time: .string("2018-08-17"), value: 109), - LineData(time: .string("2018-08-20"), value: 108.95), - LineData(time: .string("2018-08-21"), value: 108.35), - LineData(time: .string("2018-08-22"), value: 108.6), - LineData(time: .string("2018-08-23"), value: 105.65), - LineData(time: .string("2018-08-24"), value: 104.45), - LineData(time: .string("2018-08-27"), value: 106.2), - LineData(time: .string("2018-08-28"), value: 106.55), - LineData(time: .string("2018-08-29"), value: 111.8), - LineData(time: .string("2018-08-30"), value: 115.5), - LineData(time: .string("2018-08-31"), value: 115.5), - LineData(time: .string("2018-09-03"), value: 114.55), - LineData(time: .string("2018-09-04"), value: 112.75), - LineData(time: .string("2018-09-05"), value: 111.5), - LineData(time: .string("2018-09-06"), value: 108.1), - LineData(time: .string("2018-09-07"), value: 108.55), - LineData(time: .string("2018-09-10"), value: 106.5), - LineData(time: .string("2018-09-11"), value: 105.1), - LineData(time: .string("2018-09-12"), value: 107.2), - LineData(time: .string("2018-09-13"), value: 107.1), - LineData(time: .string("2018-09-14"), value: 105.75), - LineData(time: .string("2018-09-17"), value: 106.05), - LineData(time: .string("2018-09-18"), value: 109.15), - LineData(time: .string("2018-09-19"), value: 111.4), - LineData(time: .string("2018-09-20"), value: 111), - LineData(time: .string("2018-09-21"), value: 111), - LineData(time: .string("2018-09-24"), value: 108.95), - LineData(time: .string("2018-09-25"), value: 106.65), - LineData(time: .string("2018-09-26"), value: 106.7), - LineData(time: .string("2018-09-27"), value: 107.05), - LineData(time: .string("2018-09-28"), value: 106.55), - LineData(time: .string("2018-10-01"), value: 106.2), - LineData(time: .string("2018-10-02"), value: 106.4), - LineData(time: .string("2018-10-03"), value: 107.1), - LineData(time: .string("2018-10-04"), value: 106.4), - LineData(time: .string("2018-10-05"), value: 104.65), - LineData(time: .string("2018-10-08"), value: 102.65), - LineData(time: .string("2018-10-09"), value: 102.1), - LineData(time: .string("2018-10-10"), value: 102.15), - LineData(time: .string("2018-10-11"), value: 100.9), - LineData(time: .string("2018-10-12"), value: 102), - LineData(time: .string("2018-10-15"), value: 100.15), - LineData(time: .string("2018-10-16"), value: 99), - LineData(time: .string("2018-10-17"), value: 98), - LineData(time: .string("2018-10-18"), value: 96), - LineData(time: .string("2018-10-19"), value: 95.5), - LineData(time: .string("2018-10-22"), value: 92.400002), - LineData(time: .string("2018-10-23"), value: 92.300003), - LineData(time: .string("2018-10-24"), value: 92.900002), - LineData(time: .string("2018-10-25"), value: 91.849998), - LineData(time: .string("2018-10-26"), value: 91.599998), - LineData(time: .string("2018-10-29"), value: 94.050003), - LineData(time: .string("2018-10-30"), value: 98.25), - LineData(time: .string("2018-10-31"), value: 97.25), - LineData(time: .string("2018-11-01"), value: 96.879997), - LineData(time: .string("2018-11-02"), value: 101.78), - LineData(time: .string("2018-11-06"), value: 102.4), - LineData(time: .string("2018-11-07"), value: 100.6), - LineData(time: .string("2018-11-08"), value: 98.5), - LineData(time: .string("2018-11-09"), value: 95.139999), - LineData(time: .string("2018-11-12"), value: 96.900002), - LineData(time: .string("2018-11-13"), value: 97.400002), - LineData(time: .string("2018-11-14"), value: 103.3), - LineData(time: .string("2018-11-15"), value: 102.74), - LineData(time: .string("2018-11-16"), value: 101.2), - LineData(time: .string("2018-11-19"), value: 98.720001), - LineData(time: .string("2018-11-20"), value: 102.2), - LineData(time: .string("2018-11-21"), value: 108.8), - LineData(time: .string("2018-11-22"), value: 109.9), - LineData(time: .string("2018-11-23"), value: 113.74), - LineData(time: .string("2018-11-26"), value: 110.9), - LineData(time: .string("2018-11-27"), value: 113.28), - LineData(time: .string("2018-11-28"), value: 113.6), - LineData(time: .string("2018-11-29"), value: 113.14), - LineData(time: .string("2018-11-30"), value: 114.4), - LineData(time: .string("2018-12-03"), value: 111.84), - LineData(time: .string("2018-12-04"), value: 106.7), - LineData(time: .string("2018-12-05"), value: 107.8), - LineData(time: .string("2018-12-06"), value: 106.44), - LineData(time: .string("2018-12-07"), value: 103.7), - LineData(time: .string("2018-12-10"), value: 101.02), - LineData(time: .string("2018-12-11"), value: 102.72), - LineData(time: .string("2018-12-12"), value: 101.8), - LineData(time: .string("2018-12-13"), value: 102), - LineData(time: .string("2018-12-14"), value: 102.1), - LineData(time: .string("2018-12-17"), value: 101.04), - LineData(time: .string("2018-12-18"), value: 101.6), - LineData(time: .string("2018-12-19"), value: 102), - LineData(time: .string("2018-12-20"), value: 102.02), - LineData(time: .string("2018-12-21"), value: 102.2), - LineData(time: .string("2018-12-24"), value: 102.1), - LineData(time: .string("2018-12-25"), value: 100.8), - LineData(time: .string("2018-12-26"), value: 101.02), - LineData(time: .string("2018-12-27"), value: 100.5), - LineData(time: .string("2018-12-28"), value: 101), - LineData(time: .string("2019-01-03"), value: 101.5), - LineData(time: .string("2019-01-04"), value: 101.1), - LineData(time: .string("2019-01-08"), value: 101.1), - LineData(time: .string("2019-01-09"), value: 102.06), - LineData(time: .string("2019-01-10"), value: 105.14), - LineData(time: .string("2019-01-11"), value: 104.66), - LineData(time: .string("2019-01-14"), value: 106.22), - LineData(time: .string("2019-01-15"), value: 106.98), - LineData(time: .string("2019-01-16"), value: 108.4), - LineData(time: .string("2019-01-17"), value: 109.06), - LineData(time: .string("2019-01-18"), value: 107), - LineData(time: .string("2019-01-21"), value: 105.8), - LineData(time: .string("2019-01-22"), value: 105.24), - LineData(time: .string("2019-01-23"), value: 105.4), - LineData(time: .string("2019-01-24"), value: 105.38), - LineData(time: .string("2019-01-25"), value: 105.7), - LineData(time: .string("2019-01-28"), value: 105.8), - LineData(time: .string("2019-01-29"), value: 106.1), - LineData(time: .string("2019-01-30"), value: 108.6), - LineData(time: .string("2019-01-31"), value: 107.92), - LineData(time: .string("2019-02-01"), value: 105.22), - LineData(time: .string("2019-02-04"), value: 102.44), - LineData(time: .string("2019-02-05"), value: 102.26), - LineData(time: .string("2019-02-06"), value: 102), - LineData(time: .string("2019-02-07"), value: 101.62), - LineData(time: .string("2019-02-08"), value: 101.9), - LineData(time: .string("2019-02-11"), value: 101.78), - LineData(time: .string("2019-02-12"), value: 102.7), - LineData(time: .string("2019-02-13"), value: 100.14), - LineData(time: .string("2019-02-14"), value: 101.36), - LineData(time: .string("2019-02-15"), value: 101.62), - LineData(time: .string("2019-02-18"), value: 100.74), - LineData(time: .string("2019-02-19"), value: 100), - LineData(time: .string("2019-02-20"), value: 100.04), - LineData(time: .string("2019-02-21"), value: 100), - LineData(time: .string("2019-02-22"), value: 100.12), - LineData(time: .string("2019-02-25"), value: 100.04), - LineData(time: .string("2019-02-26"), value: 98.980003), - LineData(time: .string("2019-02-27"), value: 97.699997), - LineData(time: .string("2019-02-28"), value: 97.099998), - LineData(time: .string("2019-03-01"), value: 96.760002), - LineData(time: .string("2019-03-04"), value: 98.360001), - LineData(time: .string("2019-03-05"), value: 96.260002), - LineData(time: .string("2019-03-06"), value: 98.120003), - LineData(time: .string("2019-03-07"), value: 99.68), - LineData(time: .string("2019-03-11"), value: 102.1), - LineData(time: .string("2019-03-12"), value: 100.22), - LineData(time: .string("2019-03-13"), value: 100.5), - LineData(time: .string("2019-03-14"), value: 99.660004), - LineData(time: .string("2019-03-15"), value: 100.08), - LineData(time: .string("2019-03-18"), value: 99.919998), - LineData(time: .string("2019-03-19"), value: 99.459999), - LineData(time: .string("2019-03-20"), value: 98.220001), - LineData(time: .string("2019-03-21"), value: 97.300003), - LineData(time: .string("2019-03-22"), value: 97.660004), - LineData(time: .string("2019-03-25"), value: 97), - LineData(time: .string("2019-03-26"), value: 97.019997), - LineData(time: .string("2019-03-27"), value: 96.099998), - LineData(time: .string("2019-03-28"), value: 96.699997), - LineData(time: .string("2019-03-29"), value: 96.300003), - LineData(time: .string("2019-04-01"), value: 97.779999), - LineData(time: .string("2019-04-02"), value: 98.360001), - LineData(time: .string("2019-04-03"), value: 98.5), - LineData(time: .string("2019-04-04"), value: 98.360001), - LineData(time: .string("2019-04-05"), value: 99.540001), - LineData(time: .string("2019-04-08"), value: 98.580002), - LineData(time: .string("2019-04-09"), value: 97.239998), - LineData(time: .string("2019-04-10"), value: 97.32), - LineData(time: .string("2019-04-11"), value: 98.400002), - LineData(time: .string("2019-04-12"), value: 98.220001), - LineData(time: .string("2019-04-15"), value: 98.720001), - LineData(time: .string("2019-04-16"), value: 99.120003), - LineData(time: .string("2019-04-17"), value: 98.620003), - LineData(time: .string("2019-04-18"), value: 98), - LineData(time: .string("2019-04-19"), value: 97.599998), - LineData(time: .string("2019-04-22"), value: 97.599998), - LineData(time: .string("2019-04-23"), value: 96.800003), - LineData(time: .string("2019-04-24"), value: 96.32), - LineData(time: .string("2019-04-25"), value: 96.339996), - LineData(time: .string("2019-04-26"), value: 97.120003), - LineData(time: .string("2019-04-29"), value: 96.980003), - LineData(time: .string("2019-04-30"), value: 96.32), - LineData(time: .string("2019-05-02"), value: 96.860001), - LineData(time: .string("2019-05-03"), value: 96.699997), - LineData(time: .string("2019-05-06"), value: 94.940002), - LineData(time: .string("2019-05-07"), value: 94.5), - LineData(time: .string("2019-05-08"), value: 94.239998), - LineData(time: .string("2019-05-10"), value: 92.900002), - LineData(time: .string("2019-05-13"), value: 91.279999), - LineData(time: .string("2019-05-14"), value: 91.599998), - LineData(time: .string("2019-05-15"), value: 90.080002), - LineData(time: .string("2019-05-16"), value: 91.68), - LineData(time: .string("2019-05-17"), value: 91.959999), - LineData(time: .string("2019-05-20"), value: 91.080002), - LineData(time: .string("2019-05-21"), value: 90.760002), - LineData(time: .string("2019-05-22"), value: 91), - LineData(time: .string("2019-05-23"), value: 90.739998), - LineData(time: .string("2019-05-24"), value: 91), - LineData(time: .string("2019-05-27"), value: 91.199997), - LineData(time: .string("2019-05-28"), value: 90.68), - LineData(time: .string("2019-05-29"), value: 91.120003), - LineData(time: .string("2019-05-30"), value: 90.419998), - LineData(time: .string("2019-05-31"), value: 93.800003), - LineData(time: .string("2019-06-03"), value: 96.800003), - LineData(time: .string("2019-06-04"), value: 96.34), - LineData(time: .string("2019-06-05"), value: 95.94) + SingleValueData(time: .string("2018-03-28"), value: 154), + SingleValueData(time: .string("2018-03-29"), value: 154.2), + SingleValueData(time: .string("2018-03-30"), value: 155.60001), + SingleValueData(time: .string("2018-04-02"), value: 156.25), + SingleValueData(time: .string("2018-04-03"), value: 156.25), + SingleValueData(time: .string("2018-04-04"), value: 156.05), + SingleValueData(time: .string("2018-04-05"), value: 158.05), + SingleValueData(time: .string("2018-04-06"), value: 157.3), + SingleValueData(time: .string("2018-04-09"), value: 144), + SingleValueData(time: .string("2018-04-10"), value: 144.8), + SingleValueData(time: .string("2018-04-11"), value: 143.5), + SingleValueData(time: .string("2018-04-12"), value: 147.05), + SingleValueData(time: .string("2018-04-13"), value: 144.85001), + SingleValueData(time: .string("2018-04-16"), value: 145.39999), + SingleValueData(time: .string("2018-04-17"), value: 147.3), + SingleValueData(time: .string("2018-04-18"), value: 153.55), + SingleValueData(time: .string("2018-04-19"), value: 150.95), + SingleValueData(time: .string("2018-04-20"), value: 149.39999), + SingleValueData(time: .string("2018-04-23"), value: 148.5), + SingleValueData(time: .string("2018-04-24"), value: 146.60001), + SingleValueData(time: .string("2018-04-25"), value: 144.45), + SingleValueData(time: .string("2018-04-26"), value: 145.60001), + SingleValueData(time: .string("2018-04-27"), value: 144.3), + SingleValueData(time: .string("2018-04-30"), value: 144), + SingleValueData(time: .string("2018-05-02"), value: 147.3), + SingleValueData(time: .string("2018-05-03"), value: 144.2), + SingleValueData(time: .string("2018-05-04"), value: 141.64999), + SingleValueData(time: .string("2018-05-07"), value: 141.89999), + SingleValueData(time: .string("2018-05-08"), value: 140.39999), + SingleValueData(time: .string("2018-05-10"), value: 139.8), + SingleValueData(time: .string("2018-05-11"), value: 137.5), + SingleValueData(time: .string("2018-05-14"), value: 136.14999), + SingleValueData(time: .string("2018-05-15"), value: 138), + SingleValueData(time: .string("2018-05-16"), value: 137.95), + SingleValueData(time: .string("2018-05-17"), value: 137.95), + SingleValueData(time: .string("2018-05-18"), value: 136.75), + SingleValueData(time: .string("2018-05-21"), value: 136.2), + SingleValueData(time: .string("2018-05-22"), value: 135), + SingleValueData(time: .string("2018-05-23"), value: 132.55), + SingleValueData(time: .string("2018-05-24"), value: 132.7), + SingleValueData(time: .string("2018-05-25"), value: 132.2), + SingleValueData(time: .string("2018-05-28"), value: 131.55), + SingleValueData(time: .string("2018-05-29"), value: 131.85001), + SingleValueData(time: .string("2018-05-30"), value: 139.85001), + SingleValueData(time: .string("2018-05-31"), value: 140.8), + SingleValueData(time: .string("2018-06-01"), value: 139.64999), + SingleValueData(time: .string("2018-06-04"), value: 137.10001), + SingleValueData(time: .string("2018-06-05"), value: 139.25), + SingleValueData(time: .string("2018-06-06"), value: 141.3), + SingleValueData(time: .string("2018-06-07"), value: 145), + SingleValueData(time: .string("2018-06-08"), value: 143.89999), + SingleValueData(time: .string("2018-06-11"), value: 142.7), + SingleValueData(time: .string("2018-06-13"), value: 144.05), + SingleValueData(time: .string("2018-06-14"), value: 143.55), + SingleValueData(time: .string("2018-06-15"), value: 140.5), + SingleValueData(time: .string("2018-06-18"), value: 139.64999), + SingleValueData(time: .string("2018-06-19"), value: 138), + SingleValueData(time: .string("2018-06-20"), value: 141), + SingleValueData(time: .string("2018-06-21"), value: 140.55), + SingleValueData(time: .string("2018-06-22"), value: 140.55), + SingleValueData(time: .string("2018-06-25"), value: 140.75), + SingleValueData(time: .string("2018-06-26"), value: 140.64999), + SingleValueData(time: .string("2018-06-27"), value: 141.14999), + SingleValueData(time: .string("2018-06-28"), value: 139.8), + SingleValueData(time: .string("2018-06-29"), value: 139.8), + SingleValueData(time: .string("2018-07-02"), value: 140.14999), + SingleValueData(time: .string("2018-07-03"), value: 143.05), + SingleValueData(time: .string("2018-07-04"), value: 140), + SingleValueData(time: .string("2018-07-05"), value: 129.2), + SingleValueData(time: .string("2018-07-06"), value: 129.55), + SingleValueData(time: .string("2018-07-09"), value: 128.3), + SingleValueData(time: .string("2018-07-10"), value: 126.55), + SingleValueData(time: .string("2018-07-11"), value: 124.3), + SingleValueData(time: .string("2018-07-12"), value: 124.8), + SingleValueData(time: .string("2018-07-13"), value: 123.25), + SingleValueData(time: .string("2018-07-16"), value: 123), + SingleValueData(time: .string("2018-07-17"), value: 124.25), + SingleValueData(time: .string("2018-07-18"), value: 123), + SingleValueData(time: .string("2018-07-19"), value: 121), + SingleValueData(time: .string("2018-07-20"), value: 121.45), + SingleValueData(time: .string("2018-07-23"), value: 123.8), + SingleValueData(time: .string("2018-07-24"), value: 122.15), + SingleValueData(time: .string("2018-07-25"), value: 121.3), + SingleValueData(time: .string("2018-07-26"), value: 122.7), + SingleValueData(time: .string("2018-07-27"), value: 122.2), + SingleValueData(time: .string("2018-07-30"), value: 121.7), + SingleValueData(time: .string("2018-07-31"), value: 122.95), + SingleValueData(time: .string("2018-08-01"), value: 121), + SingleValueData(time: .string("2018-08-02"), value: 116), + SingleValueData(time: .string("2018-08-03"), value: 118.1), + SingleValueData(time: .string("2018-08-06"), value: 114.3), + SingleValueData(time: .string("2018-08-07"), value: 114.25), + SingleValueData(time: .string("2018-08-08"), value: 111.85), + SingleValueData(time: .string("2018-08-09"), value: 109.7), + SingleValueData(time: .string("2018-08-10"), value: 105), + SingleValueData(time: .string("2018-08-13"), value: 105.75), + SingleValueData(time: .string("2018-08-14"), value: 107.25), + SingleValueData(time: .string("2018-08-15"), value: 107.4), + SingleValueData(time: .string("2018-08-16"), value: 110.5), + SingleValueData(time: .string("2018-08-17"), value: 109), + SingleValueData(time: .string("2018-08-20"), value: 108.95), + SingleValueData(time: .string("2018-08-21"), value: 108.35), + SingleValueData(time: .string("2018-08-22"), value: 108.6), + SingleValueData(time: .string("2018-08-23"), value: 105.65), + SingleValueData(time: .string("2018-08-24"), value: 104.45), + SingleValueData(time: .string("2018-08-27"), value: 106.2), + SingleValueData(time: .string("2018-08-28"), value: 106.55), + SingleValueData(time: .string("2018-08-29"), value: 111.8), + SingleValueData(time: .string("2018-08-30"), value: 115.5), + SingleValueData(time: .string("2018-08-31"), value: 115.5), + SingleValueData(time: .string("2018-09-03"), value: 114.55), + SingleValueData(time: .string("2018-09-04"), value: 112.75), + SingleValueData(time: .string("2018-09-05"), value: 111.5), + SingleValueData(time: .string("2018-09-06"), value: 108.1), + SingleValueData(time: .string("2018-09-07"), value: 108.55), + SingleValueData(time: .string("2018-09-10"), value: 106.5), + SingleValueData(time: .string("2018-09-11"), value: 105.1), + SingleValueData(time: .string("2018-09-12"), value: 107.2), + SingleValueData(time: .string("2018-09-13"), value: 107.1), + SingleValueData(time: .string("2018-09-14"), value: 105.75), + SingleValueData(time: .string("2018-09-17"), value: 106.05), + SingleValueData(time: .string("2018-09-18"), value: 109.15), + SingleValueData(time: .string("2018-09-19"), value: 111.4), + SingleValueData(time: .string("2018-09-20"), value: 111), + SingleValueData(time: .string("2018-09-21"), value: 111), + SingleValueData(time: .string("2018-09-24"), value: 108.95), + SingleValueData(time: .string("2018-09-25"), value: 106.65), + SingleValueData(time: .string("2018-09-26"), value: 106.7), + SingleValueData(time: .string("2018-09-27"), value: 107.05), + SingleValueData(time: .string("2018-09-28"), value: 106.55), + SingleValueData(time: .string("2018-10-01"), value: 106.2), + SingleValueData(time: .string("2018-10-02"), value: 106.4), + SingleValueData(time: .string("2018-10-03"), value: 107.1), + SingleValueData(time: .string("2018-10-04"), value: 106.4), + SingleValueData(time: .string("2018-10-05"), value: 104.65), + SingleValueData(time: .string("2018-10-08"), value: 102.65), + SingleValueData(time: .string("2018-10-09"), value: 102.1), + SingleValueData(time: .string("2018-10-10"), value: 102.15), + SingleValueData(time: .string("2018-10-11"), value: 100.9), + SingleValueData(time: .string("2018-10-12"), value: 102), + SingleValueData(time: .string("2018-10-15"), value: 100.15), + SingleValueData(time: .string("2018-10-16"), value: 99), + SingleValueData(time: .string("2018-10-17"), value: 98), + SingleValueData(time: .string("2018-10-18"), value: 96), + SingleValueData(time: .string("2018-10-19"), value: 95.5), + SingleValueData(time: .string("2018-10-22"), value: 92.400002), + SingleValueData(time: .string("2018-10-23"), value: 92.300003), + SingleValueData(time: .string("2018-10-24"), value: 92.900002), + SingleValueData(time: .string("2018-10-25"), value: 91.849998), + SingleValueData(time: .string("2018-10-26"), value: 91.599998), + SingleValueData(time: .string("2018-10-29"), value: 94.050003), + SingleValueData(time: .string("2018-10-30"), value: 98.25), + SingleValueData(time: .string("2018-10-31"), value: 97.25), + SingleValueData(time: .string("2018-11-01"), value: 96.879997), + SingleValueData(time: .string("2018-11-02"), value: 101.78), + SingleValueData(time: .string("2018-11-06"), value: 102.4), + SingleValueData(time: .string("2018-11-07"), value: 100.6), + SingleValueData(time: .string("2018-11-08"), value: 98.5), + SingleValueData(time: .string("2018-11-09"), value: 95.139999), + SingleValueData(time: .string("2018-11-12"), value: 96.900002), + SingleValueData(time: .string("2018-11-13"), value: 97.400002), + SingleValueData(time: .string("2018-11-14"), value: 103.3), + SingleValueData(time: .string("2018-11-15"), value: 102.74), + SingleValueData(time: .string("2018-11-16"), value: 101.2), + SingleValueData(time: .string("2018-11-19"), value: 98.720001), + SingleValueData(time: .string("2018-11-20"), value: 102.2), + SingleValueData(time: .string("2018-11-21"), value: 108.8), + SingleValueData(time: .string("2018-11-22"), value: 109.9), + SingleValueData(time: .string("2018-11-23"), value: 113.74), + SingleValueData(time: .string("2018-11-26"), value: 110.9), + SingleValueData(time: .string("2018-11-27"), value: 113.28), + SingleValueData(time: .string("2018-11-28"), value: 113.6), + SingleValueData(time: .string("2018-11-29"), value: 113.14), + SingleValueData(time: .string("2018-11-30"), value: 114.4), + SingleValueData(time: .string("2018-12-03"), value: 111.84), + SingleValueData(time: .string("2018-12-04"), value: 106.7), + SingleValueData(time: .string("2018-12-05"), value: 107.8), + SingleValueData(time: .string("2018-12-06"), value: 106.44), + SingleValueData(time: .string("2018-12-07"), value: 103.7), + SingleValueData(time: .string("2018-12-10"), value: 101.02), + SingleValueData(time: .string("2018-12-11"), value: 102.72), + SingleValueData(time: .string("2018-12-12"), value: 101.8), + SingleValueData(time: .string("2018-12-13"), value: 102), + SingleValueData(time: .string("2018-12-14"), value: 102.1), + SingleValueData(time: .string("2018-12-17"), value: 101.04), + SingleValueData(time: .string("2018-12-18"), value: 101.6), + SingleValueData(time: .string("2018-12-19"), value: 102), + SingleValueData(time: .string("2018-12-20"), value: 102.02), + SingleValueData(time: .string("2018-12-21"), value: 102.2), + SingleValueData(time: .string("2018-12-24"), value: 102.1), + SingleValueData(time: .string("2018-12-25"), value: 100.8), + SingleValueData(time: .string("2018-12-26"), value: 101.02), + SingleValueData(time: .string("2018-12-27"), value: 100.5), + SingleValueData(time: .string("2018-12-28"), value: 101), + SingleValueData(time: .string("2019-01-03"), value: 101.5), + SingleValueData(time: .string("2019-01-04"), value: 101.1), + SingleValueData(time: .string("2019-01-08"), value: 101.1), + SingleValueData(time: .string("2019-01-09"), value: 102.06), + SingleValueData(time: .string("2019-01-10"), value: 105.14), + SingleValueData(time: .string("2019-01-11"), value: 104.66), + SingleValueData(time: .string("2019-01-14"), value: 106.22), + SingleValueData(time: .string("2019-01-15"), value: 106.98), + SingleValueData(time: .string("2019-01-16"), value: 108.4), + SingleValueData(time: .string("2019-01-17"), value: 109.06), + SingleValueData(time: .string("2019-01-18"), value: 107), + SingleValueData(time: .string("2019-01-21"), value: 105.8), + SingleValueData(time: .string("2019-01-22"), value: 105.24), + SingleValueData(time: .string("2019-01-23"), value: 105.4), + SingleValueData(time: .string("2019-01-24"), value: 105.38), + SingleValueData(time: .string("2019-01-25"), value: 105.7), + SingleValueData(time: .string("2019-01-28"), value: 105.8), + SingleValueData(time: .string("2019-01-29"), value: 106.1), + SingleValueData(time: .string("2019-01-30"), value: 108.6), + SingleValueData(time: .string("2019-01-31"), value: 107.92), + SingleValueData(time: .string("2019-02-01"), value: 105.22), + SingleValueData(time: .string("2019-02-04"), value: 102.44), + SingleValueData(time: .string("2019-02-05"), value: 102.26), + SingleValueData(time: .string("2019-02-06"), value: 102), + SingleValueData(time: .string("2019-02-07"), value: 101.62), + SingleValueData(time: .string("2019-02-08"), value: 101.9), + SingleValueData(time: .string("2019-02-11"), value: 101.78), + SingleValueData(time: .string("2019-02-12"), value: 102.7), + SingleValueData(time: .string("2019-02-13"), value: 100.14), + SingleValueData(time: .string("2019-02-14"), value: 101.36), + SingleValueData(time: .string("2019-02-15"), value: 101.62), + SingleValueData(time: .string("2019-02-18"), value: 100.74), + SingleValueData(time: .string("2019-02-19"), value: 100), + SingleValueData(time: .string("2019-02-20"), value: 100.04), + SingleValueData(time: .string("2019-02-21"), value: 100), + SingleValueData(time: .string("2019-02-22"), value: 100.12), + SingleValueData(time: .string("2019-02-25"), value: 100.04), + SingleValueData(time: .string("2019-02-26"), value: 98.980003), + SingleValueData(time: .string("2019-02-27"), value: 97.699997), + SingleValueData(time: .string("2019-02-28"), value: 97.099998), + SingleValueData(time: .string("2019-03-01"), value: 96.760002), + SingleValueData(time: .string("2019-03-04"), value: 98.360001), + SingleValueData(time: .string("2019-03-05"), value: 96.260002), + SingleValueData(time: .string("2019-03-06"), value: 98.120003), + SingleValueData(time: .string("2019-03-07"), value: 99.68), + SingleValueData(time: .string("2019-03-11"), value: 102.1), + SingleValueData(time: .string("2019-03-12"), value: 100.22), + SingleValueData(time: .string("2019-03-13"), value: 100.5), + SingleValueData(time: .string("2019-03-14"), value: 99.660004), + SingleValueData(time: .string("2019-03-15"), value: 100.08), + SingleValueData(time: .string("2019-03-18"), value: 99.919998), + SingleValueData(time: .string("2019-03-19"), value: 99.459999), + SingleValueData(time: .string("2019-03-20"), value: 98.220001), + SingleValueData(time: .string("2019-03-21"), value: 97.300003), + SingleValueData(time: .string("2019-03-22"), value: 97.660004), + SingleValueData(time: .string("2019-03-25"), value: 97), + SingleValueData(time: .string("2019-03-26"), value: 97.019997), + SingleValueData(time: .string("2019-03-27"), value: 96.099998), + SingleValueData(time: .string("2019-03-28"), value: 96.699997), + SingleValueData(time: .string("2019-03-29"), value: 96.300003), + SingleValueData(time: .string("2019-04-01"), value: 97.779999), + SingleValueData(time: .string("2019-04-02"), value: 98.360001), + SingleValueData(time: .string("2019-04-03"), value: 98.5), + SingleValueData(time: .string("2019-04-04"), value: 98.360001), + SingleValueData(time: .string("2019-04-05"), value: 99.540001), + SingleValueData(time: .string("2019-04-08"), value: 98.580002), + SingleValueData(time: .string("2019-04-09"), value: 97.239998), + SingleValueData(time: .string("2019-04-10"), value: 97.32), + SingleValueData(time: .string("2019-04-11"), value: 98.400002), + SingleValueData(time: .string("2019-04-12"), value: 98.220001), + SingleValueData(time: .string("2019-04-15"), value: 98.720001), + SingleValueData(time: .string("2019-04-16"), value: 99.120003), + SingleValueData(time: .string("2019-04-17"), value: 98.620003), + SingleValueData(time: .string("2019-04-18"), value: 98), + SingleValueData(time: .string("2019-04-19"), value: 97.599998), + SingleValueData(time: .string("2019-04-22"), value: 97.599998), + SingleValueData(time: .string("2019-04-23"), value: 96.800003), + SingleValueData(time: .string("2019-04-24"), value: 96.32), + SingleValueData(time: .string("2019-04-25"), value: 96.339996), + SingleValueData(time: .string("2019-04-26"), value: 97.120003), + SingleValueData(time: .string("2019-04-29"), value: 96.980003), + SingleValueData(time: .string("2019-04-30"), value: 96.32), + SingleValueData(time: .string("2019-05-02"), value: 96.860001), + SingleValueData(time: .string("2019-05-03"), value: 96.699997), + SingleValueData(time: .string("2019-05-06"), value: 94.940002), + SingleValueData(time: .string("2019-05-07"), value: 94.5), + SingleValueData(time: .string("2019-05-08"), value: 94.239998), + SingleValueData(time: .string("2019-05-10"), value: 92.900002), + SingleValueData(time: .string("2019-05-13"), value: 91.279999), + SingleValueData(time: .string("2019-05-14"), value: 91.599998), + SingleValueData(time: .string("2019-05-15"), value: 90.080002), + SingleValueData(time: .string("2019-05-16"), value: 91.68), + SingleValueData(time: .string("2019-05-17"), value: 91.959999), + SingleValueData(time: .string("2019-05-20"), value: 91.080002), + SingleValueData(time: .string("2019-05-21"), value: 90.760002), + SingleValueData(time: .string("2019-05-22"), value: 91), + SingleValueData(time: .string("2019-05-23"), value: 90.739998), + SingleValueData(time: .string("2019-05-24"), value: 91), + SingleValueData(time: .string("2019-05-27"), value: 91.199997), + SingleValueData(time: .string("2019-05-28"), value: 90.68), + SingleValueData(time: .string("2019-05-29"), value: 91.120003), + SingleValueData(time: .string("2019-05-30"), value: 90.419998), + SingleValueData(time: .string("2019-05-31"), value: 93.800003), + SingleValueData(time: .string("2019-06-03"), value: 96.800003), + SingleValueData(time: .string("2019-06-04"), value: 96.34), + SingleValueData(time: .string("2019-06-05"), value: 95.94) ] series.setData(data: data) self.series = series diff --git a/Example/LightweightCharts/Example/NoPriceScaleViewController.swift b/Example/LightweightCharts/Example/NoPriceScaleViewController.swift index 509838f..f23669d 100644 --- a/Example/LightweightCharts/Example/NoPriceScaleViewController.swift +++ b/Example/LightweightCharts/Example/NoPriceScaleViewController.swift @@ -57,156 +57,156 @@ class NoPriceScaleViewController: UIViewController { ) let series = chart.addAreaSeries(options: options) let data = [ - LineData(time: .string("2016-07-18"), value: 64.04), - LineData(time: .string("2016-07-25"), value: 63.97), - LineData(time: .string("2016-08-01"), value: 66.30), - LineData(time: .string("2016-08-08"), value: 65.32), - LineData(time: .string("2016-08-15"), value: 65.86), - LineData(time: .string("2016-08-22"), value: 66.22), - LineData(time: .string("2016-08-29"), value: 67.49), - LineData(time: .string("2016-09-05"), value: 66.65), - LineData(time: .string("2016-09-12"), value: 65.82), - LineData(time: .string("2016-09-19"), value: 67.25), - LineData(time: .string("2016-09-26"), value: 66.59), - LineData(time: .string("2016-10-03"), value: 68.11), - LineData(time: .string("2016-10-10"), value: 67.52), - LineData(time: .string("2016-10-17"), value: 68.49), - LineData(time: .string("2016-10-24"), value: 69.11), - LineData(time: .string("2016-10-31"), value: 67.76), - LineData(time: .string("2016-11-07"), value: 76.69), - LineData(time: .string("2016-11-14"), value: 77.71), - LineData(time: .string("2016-11-21"), value: 78.83), - LineData(time: .string("2016-11-28"), value: 81.60), - LineData(time: .string("2016-12-05"), value: 85.49), - LineData(time: .string("2016-12-12"), value: 84.94), - LineData(time: .string("2016-12-19"), value: 87.05), - LineData(time: .string("2016-12-26"), value: 86.29), - LineData(time: .string("2017-01-02"), value: 86.12), - LineData(time: .string("2017-01-09"), value: 86.70), - LineData(time: .string("2017-01-16"), value: 83.67), - LineData(time: .string("2017-01-23"), value: 86.93), - LineData(time: .string("2017-01-30"), value: 87.18), - LineData(time: .string("2017-02-06"), value: 87.00), - LineData(time: .string("2017-02-13"), value: 90.23), - LineData(time: .string("2017-02-20"), value: 90.33), - LineData(time: .string("2017-02-27"), value: 92.80), - LineData(time: .string("2017-03-06"), value: 91.28), - LineData(time: .string("2017-03-13"), value: 90.68), - LineData(time: .string("2017-03-20"), value: 87.29), - LineData(time: .string("2017-03-27"), value: 87.84), - LineData(time: .string("2017-04-03"), value: 86.18), - LineData(time: .string("2017-04-10"), value: 84.40), - LineData(time: .string("2017-04-17"), value: 84.52), - LineData(time: .string("2017-04-24"), value: 87.00), - LineData(time: .string("2017-05-01"), value: 87.00), - LineData(time: .string("2017-05-08"), value: 86.92), - LineData(time: .string("2017-05-15"), value: 84.78), - LineData(time: .string("2017-05-22"), value: 85.36), - LineData(time: .string("2017-05-29"), value: 82.64), - LineData(time: .string("2017-06-05"), value: 86.96), - LineData(time: .string("2017-06-12"), value: 86.18), - LineData(time: .string("2017-06-19"), value: 86.86), - LineData(time: .string("2017-06-26"), value: 91.40), - LineData(time: .string("2017-07-03"), value: 93.85), - LineData(time: .string("2017-07-10"), value: 92.25), - LineData(time: .string("2017-07-17"), value: 90.89), - LineData(time: .string("2017-07-24"), value: 91.28), - LineData(time: .string("2017-07-31"), value: 93.66), - LineData(time: .string("2017-08-07"), value: 91.42), - LineData(time: .string("2017-08-14"), value: 90.74), - LineData(time: .string("2017-08-21"), value: 91.89), - LineData(time: .string("2017-08-28"), value: 91.70), - LineData(time: .string("2017-09-04"), value: 88.42), - LineData(time: .string("2017-09-11"), value: 91.62), - LineData(time: .string("2017-09-18"), value: 94.83), - LineData(time: .string("2017-09-25"), value: 95.51), - LineData(time: .string("2017-10-02"), value: 96.92), - LineData(time: .string("2017-10-09"), value: 95.86), - LineData(time: .string("2017-10-16"), value: 99.51), - LineData(time: .string("2017-10-23"), value: 101.77), - LineData(time: .string("2017-10-30"), value: 101.41), - LineData(time: .string("2017-11-06"), value: 97.51), - LineData(time: .string("2017-11-13"), value: 98.14), - LineData(time: .string("2017-11-20"), value: 98.32), - LineData(time: .string("2017-11-27"), value: 104.79), - LineData(time: .string("2017-12-04"), value: 105.93), - LineData(time: .string("2017-12-11"), value: 106.14), - LineData(time: .string("2017-12-18"), value: 107.45), - LineData(time: .string("2017-12-25"), value: 106.94), - LineData(time: .string("2018-01-01"), value: 108.34), - LineData(time: .string("2018-01-08"), value: 112.67), - LineData(time: .string("2018-01-15"), value: 113.01), - LineData(time: .string("2018-01-22"), value: 116.32), - LineData(time: .string("2018-01-29"), value: 114.28), - LineData(time: .string("2018-02-05"), value: 110.04), - LineData(time: .string("2018-02-12"), value: 114.68), - LineData(time: .string("2018-02-19"), value: 117.31), - LineData(time: .string("2018-02-26"), value: 113.32), - LineData(time: .string("2018-03-05"), value: 118.04), - LineData(time: .string("2018-03-12"), value: 115.44), - LineData(time: .string("2018-03-19"), value: 107.01), - LineData(time: .string("2018-03-26"), value: 109.97), - LineData(time: .string("2018-04-02"), value: 109.09), - LineData(time: .string("2018-04-09"), value: 110.30), - LineData(time: .string("2018-04-16"), value: 111.47), - LineData(time: .string("2018-04-23"), value: 109.40), - LineData(time: .string("2018-04-30"), value: 108.43), - LineData(time: .string("2018-05-07"), value: 113.86), - LineData(time: .string("2018-05-14"), value: 111.13), - LineData(time: .string("2018-05-21"), value: 110.66), - LineData(time: .string("2018-05-28"), value: 108.40), - LineData(time: .string("2018-06-04"), value: 111.11), - LineData(time: .string("2018-06-11"), value: 107.90), - LineData(time: .string("2018-06-18"), value: 105.75), - LineData(time: .string("2018-06-25"), value: 104.20), - LineData(time: .string("2018-07-02"), value: 104.06), - LineData(time: .string("2018-07-09"), value: 106.36), - LineData(time: .string("2018-07-16"), value: 111.28), - LineData(time: .string("2018-07-23"), value: 116.03), - LineData(time: .string("2018-07-30"), value: 117.09), - LineData(time: .string("2018-08-06"), value: 115.73), - LineData(time: .string("2018-08-13"), value: 114.77), - LineData(time: .string("2018-08-20"), value: 114.68), - LineData(time: .string("2018-08-27"), value: 114.58), - LineData(time: .string("2018-09-03"), value: 114.32), - LineData(time: .string("2018-09-10"), value: 113.50), - LineData(time: .string("2018-09-17"), value: 117.85), - LineData(time: .string("2018-09-24"), value: 112.84), - LineData(time: .string("2018-10-01"), value: 114.62), - LineData(time: .string("2018-10-08"), value: 106.95), - LineData(time: .string("2018-10-15"), value: 107.91), - LineData(time: .string("2018-10-22"), value: 103.42), - LineData(time: .string("2018-10-29"), value: 108.38), - LineData(time: .string("2018-11-05"), value: 111.29), - LineData(time: .string("2018-11-12"), value: 109.99), - LineData(time: .string("2018-11-19"), value: 106.65), - LineData(time: .string("2018-11-26"), value: 111.19), - LineData(time: .string("2018-12-03"), value: 103.29), - LineData(time: .string("2018-12-10"), value: 100.29), - LineData(time: .string("2018-12-17"), value: 94.17), - LineData(time: .string("2018-12-24"), value: 96.83), - LineData(time: .string("2018-12-31"), value: 100.69), - LineData(time: .string("2019-01-07"), value: 99.91), - LineData(time: .string("2019-01-14"), value: 104.59), - LineData(time: .string("2019-01-21"), value: 103.39), - LineData(time: .string("2019-01-28"), value: 103.88), - LineData(time: .string("2019-02-04"), value: 101.36), - LineData(time: .string("2019-02-11"), value: 105.55), - LineData(time: .string("2019-02-18"), value: 105.00), - LineData(time: .string("2019-02-25"), value: 104.43), - LineData(time: .string("2019-03-04"), value: 103.01), - LineData(time: .string("2019-03-11"), value: 106.55), - LineData(time: .string("2019-03-18"), value: 99.76), - LineData(time: .string("2019-03-25"), value: 101.23), - LineData(time: .string("2019-04-01"), value: 105.31), - LineData(time: .string("2019-04-08"), value: 111.21), - LineData(time: .string("2019-04-15"), value: 113.46), - LineData(time: .string("2019-04-22"), value: 114.47), - LineData(time: .string("2019-04-29"), value: 116.12), - LineData(time: .string("2019-05-06"), value: 112.51), - LineData(time: .string("2019-05-13"), value: 110.77), - LineData(time: .string("2019-05-20"), value: 109.71), - LineData(time: .string("2019-05-27"), value: 109.33) + SingleValueData(time: .string("2016-07-18"), value: 64.04), + SingleValueData(time: .string("2016-07-25"), value: 63.97), + SingleValueData(time: .string("2016-08-01"), value: 66.30), + SingleValueData(time: .string("2016-08-08"), value: 65.32), + SingleValueData(time: .string("2016-08-15"), value: 65.86), + SingleValueData(time: .string("2016-08-22"), value: 66.22), + SingleValueData(time: .string("2016-08-29"), value: 67.49), + SingleValueData(time: .string("2016-09-05"), value: 66.65), + SingleValueData(time: .string("2016-09-12"), value: 65.82), + SingleValueData(time: .string("2016-09-19"), value: 67.25), + SingleValueData(time: .string("2016-09-26"), value: 66.59), + SingleValueData(time: .string("2016-10-03"), value: 68.11), + SingleValueData(time: .string("2016-10-10"), value: 67.52), + SingleValueData(time: .string("2016-10-17"), value: 68.49), + SingleValueData(time: .string("2016-10-24"), value: 69.11), + SingleValueData(time: .string("2016-10-31"), value: 67.76), + SingleValueData(time: .string("2016-11-07"), value: 76.69), + SingleValueData(time: .string("2016-11-14"), value: 77.71), + SingleValueData(time: .string("2016-11-21"), value: 78.83), + SingleValueData(time: .string("2016-11-28"), value: 81.60), + SingleValueData(time: .string("2016-12-05"), value: 85.49), + SingleValueData(time: .string("2016-12-12"), value: 84.94), + SingleValueData(time: .string("2016-12-19"), value: 87.05), + SingleValueData(time: .string("2016-12-26"), value: 86.29), + SingleValueData(time: .string("2017-01-02"), value: 86.12), + SingleValueData(time: .string("2017-01-09"), value: 86.70), + SingleValueData(time: .string("2017-01-16"), value: 83.67), + SingleValueData(time: .string("2017-01-23"), value: 86.93), + SingleValueData(time: .string("2017-01-30"), value: 87.18), + SingleValueData(time: .string("2017-02-06"), value: 87.00), + SingleValueData(time: .string("2017-02-13"), value: 90.23), + SingleValueData(time: .string("2017-02-20"), value: 90.33), + SingleValueData(time: .string("2017-02-27"), value: 92.80), + SingleValueData(time: .string("2017-03-06"), value: 91.28), + SingleValueData(time: .string("2017-03-13"), value: 90.68), + SingleValueData(time: .string("2017-03-20"), value: 87.29), + SingleValueData(time: .string("2017-03-27"), value: 87.84), + SingleValueData(time: .string("2017-04-03"), value: 86.18), + SingleValueData(time: .string("2017-04-10"), value: 84.40), + SingleValueData(time: .string("2017-04-17"), value: 84.52), + SingleValueData(time: .string("2017-04-24"), value: 87.00), + SingleValueData(time: .string("2017-05-01"), value: 87.00), + SingleValueData(time: .string("2017-05-08"), value: 86.92), + SingleValueData(time: .string("2017-05-15"), value: 84.78), + SingleValueData(time: .string("2017-05-22"), value: 85.36), + SingleValueData(time: .string("2017-05-29"), value: 82.64), + SingleValueData(time: .string("2017-06-05"), value: 86.96), + SingleValueData(time: .string("2017-06-12"), value: 86.18), + SingleValueData(time: .string("2017-06-19"), value: 86.86), + SingleValueData(time: .string("2017-06-26"), value: 91.40), + SingleValueData(time: .string("2017-07-03"), value: 93.85), + SingleValueData(time: .string("2017-07-10"), value: 92.25), + SingleValueData(time: .string("2017-07-17"), value: 90.89), + SingleValueData(time: .string("2017-07-24"), value: 91.28), + SingleValueData(time: .string("2017-07-31"), value: 93.66), + SingleValueData(time: .string("2017-08-07"), value: 91.42), + SingleValueData(time: .string("2017-08-14"), value: 90.74), + SingleValueData(time: .string("2017-08-21"), value: 91.89), + SingleValueData(time: .string("2017-08-28"), value: 91.70), + SingleValueData(time: .string("2017-09-04"), value: 88.42), + SingleValueData(time: .string("2017-09-11"), value: 91.62), + SingleValueData(time: .string("2017-09-18"), value: 94.83), + SingleValueData(time: .string("2017-09-25"), value: 95.51), + SingleValueData(time: .string("2017-10-02"), value: 96.92), + SingleValueData(time: .string("2017-10-09"), value: 95.86), + SingleValueData(time: .string("2017-10-16"), value: 99.51), + SingleValueData(time: .string("2017-10-23"), value: 101.77), + SingleValueData(time: .string("2017-10-30"), value: 101.41), + SingleValueData(time: .string("2017-11-06"), value: 97.51), + SingleValueData(time: .string("2017-11-13"), value: 98.14), + SingleValueData(time: .string("2017-11-20"), value: 98.32), + SingleValueData(time: .string("2017-11-27"), value: 104.79), + SingleValueData(time: .string("2017-12-04"), value: 105.93), + SingleValueData(time: .string("2017-12-11"), value: 106.14), + SingleValueData(time: .string("2017-12-18"), value: 107.45), + SingleValueData(time: .string("2017-12-25"), value: 106.94), + SingleValueData(time: .string("2018-01-01"), value: 108.34), + SingleValueData(time: .string("2018-01-08"), value: 112.67), + SingleValueData(time: .string("2018-01-15"), value: 113.01), + SingleValueData(time: .string("2018-01-22"), value: 116.32), + SingleValueData(time: .string("2018-01-29"), value: 114.28), + SingleValueData(time: .string("2018-02-05"), value: 110.04), + SingleValueData(time: .string("2018-02-12"), value: 114.68), + SingleValueData(time: .string("2018-02-19"), value: 117.31), + SingleValueData(time: .string("2018-02-26"), value: 113.32), + SingleValueData(time: .string("2018-03-05"), value: 118.04), + SingleValueData(time: .string("2018-03-12"), value: 115.44), + SingleValueData(time: .string("2018-03-19"), value: 107.01), + SingleValueData(time: .string("2018-03-26"), value: 109.97), + SingleValueData(time: .string("2018-04-02"), value: 109.09), + SingleValueData(time: .string("2018-04-09"), value: 110.30), + SingleValueData(time: .string("2018-04-16"), value: 111.47), + SingleValueData(time: .string("2018-04-23"), value: 109.40), + SingleValueData(time: .string("2018-04-30"), value: 108.43), + SingleValueData(time: .string("2018-05-07"), value: 113.86), + SingleValueData(time: .string("2018-05-14"), value: 111.13), + SingleValueData(time: .string("2018-05-21"), value: 110.66), + SingleValueData(time: .string("2018-05-28"), value: 108.40), + SingleValueData(time: .string("2018-06-04"), value: 111.11), + SingleValueData(time: .string("2018-06-11"), value: 107.90), + SingleValueData(time: .string("2018-06-18"), value: 105.75), + SingleValueData(time: .string("2018-06-25"), value: 104.20), + SingleValueData(time: .string("2018-07-02"), value: 104.06), + SingleValueData(time: .string("2018-07-09"), value: 106.36), + SingleValueData(time: .string("2018-07-16"), value: 111.28), + SingleValueData(time: .string("2018-07-23"), value: 116.03), + SingleValueData(time: .string("2018-07-30"), value: 117.09), + SingleValueData(time: .string("2018-08-06"), value: 115.73), + SingleValueData(time: .string("2018-08-13"), value: 114.77), + SingleValueData(time: .string("2018-08-20"), value: 114.68), + SingleValueData(time: .string("2018-08-27"), value: 114.58), + SingleValueData(time: .string("2018-09-03"), value: 114.32), + SingleValueData(time: .string("2018-09-10"), value: 113.50), + SingleValueData(time: .string("2018-09-17"), value: 117.85), + SingleValueData(time: .string("2018-09-24"), value: 112.84), + SingleValueData(time: .string("2018-10-01"), value: 114.62), + SingleValueData(time: .string("2018-10-08"), value: 106.95), + SingleValueData(time: .string("2018-10-15"), value: 107.91), + SingleValueData(time: .string("2018-10-22"), value: 103.42), + SingleValueData(time: .string("2018-10-29"), value: 108.38), + SingleValueData(time: .string("2018-11-05"), value: 111.29), + SingleValueData(time: .string("2018-11-12"), value: 109.99), + SingleValueData(time: .string("2018-11-19"), value: 106.65), + SingleValueData(time: .string("2018-11-26"), value: 111.19), + SingleValueData(time: .string("2018-12-03"), value: 103.29), + SingleValueData(time: .string("2018-12-10"), value: 100.29), + SingleValueData(time: .string("2018-12-17"), value: 94.17), + SingleValueData(time: .string("2018-12-24"), value: 96.83), + SingleValueData(time: .string("2018-12-31"), value: 100.69), + SingleValueData(time: .string("2019-01-07"), value: 99.91), + SingleValueData(time: .string("2019-01-14"), value: 104.59), + SingleValueData(time: .string("2019-01-21"), value: 103.39), + SingleValueData(time: .string("2019-01-28"), value: 103.88), + SingleValueData(time: .string("2019-02-04"), value: 101.36), + SingleValueData(time: .string("2019-02-11"), value: 105.55), + SingleValueData(time: .string("2019-02-18"), value: 105.00), + SingleValueData(time: .string("2019-02-25"), value: 104.43), + SingleValueData(time: .string("2019-03-04"), value: 103.01), + SingleValueData(time: .string("2019-03-11"), value: 106.55), + SingleValueData(time: .string("2019-03-18"), value: 99.76), + SingleValueData(time: .string("2019-03-25"), value: 101.23), + SingleValueData(time: .string("2019-04-01"), value: 105.31), + SingleValueData(time: .string("2019-04-08"), value: 111.21), + SingleValueData(time: .string("2019-04-15"), value: 113.46), + SingleValueData(time: .string("2019-04-22"), value: 114.47), + SingleValueData(time: .string("2019-04-29"), value: 116.12), + SingleValueData(time: .string("2019-05-06"), value: 112.51), + SingleValueData(time: .string("2019-05-13"), value: 110.77), + SingleValueData(time: .string("2019-05-20"), value: 109.71), + SingleValueData(time: .string("2019-05-27"), value: 109.33) ] series.setData(data: data) self.series = series diff --git a/Example/LightweightCharts/Example/NoTimeScaleViewController.swift b/Example/LightweightCharts/Example/NoTimeScaleViewController.swift index 9511fd2..c509245 100644 --- a/Example/LightweightCharts/Example/NoTimeScaleViewController.swift +++ b/Example/LightweightCharts/Example/NoTimeScaleViewController.swift @@ -91,156 +91,156 @@ class NoTimeScaleViewController: UIViewController { ) let areaSeries = chart.addAreaSeries(options: areaSeriesOptions) let areaData = [ - LineData(time: .string("2018-10-19"), value: 219.31), - LineData(time: .string("2018-10-22"), value: 220.65), - LineData(time: .string("2018-10-23"), value: 222.73), - LineData(time: .string("2018-10-24"), value: 215.09), - LineData(time: .string("2018-10-25"), value: 219.80), - LineData(time: .string("2018-10-26"), value: 216.30), - LineData(time: .string("2018-10-29"), value: 212.24), - LineData(time: .string("2018-10-30"), value: 213.30), - LineData(time: .string("2018-10-31"), value: 218.86), - LineData(time: .string("2018-11-01"), value: 222.22), - LineData(time: .string("2018-11-02"), value: 207.48), - LineData(time: .string("2018-11-05"), value: 201.59), - LineData(time: .string("2018-11-06"), value: 203.77), - LineData(time: .string("2018-11-07"), value: 209.95), - LineData(time: .string("2018-11-08"), value: 208.49), - LineData(time: .string("2018-11-09"), value: 204.47), - LineData(time: .string("2018-11-12"), value: 194.17), - LineData(time: .string("2018-11-13"), value: 192.23), - LineData(time: .string("2018-11-14"), value: 186.80), - LineData(time: .string("2018-11-15"), value: 191.41), - LineData(time: .string("2018-11-16"), value: 193.53), - LineData(time: .string("2018-11-19"), value: 185.86), - LineData(time: .string("2018-11-20"), value: 176.98), - LineData(time: .string("2018-11-21"), value: 176.78), - LineData(time: .string("2018-11-23"), value: 172.29), - LineData(time: .string("2018-11-26"), value: 174.62), - LineData(time: .string("2018-11-27"), value: 174.24), - LineData(time: .string("2018-11-28"), value: 180.94), - LineData(time: .string("2018-11-29"), value: 179.55), - LineData(time: .string("2018-11-30"), value: 178.58), - LineData(time: .string("2018-12-03"), value: 184.82), - LineData(time: .string("2018-12-04"), value: 176.69), - LineData(time: .string("2018-12-06"), value: 174.72), - LineData(time: .string("2018-12-07"), value: 168.49), - LineData(time: .string("2018-12-10"), value: 169.60), - LineData(time: .string("2018-12-11"), value: 168.63), - LineData(time: .string("2018-12-12"), value: 169.10), - LineData(time: .string("2018-12-13"), value: 170.95), - LineData(time: .string("2018-12-14"), value: 165.48), - LineData(time: .string("2018-12-17"), value: 163.94), - LineData(time: .string("2018-12-18"), value: 166.07), - LineData(time: .string("2018-12-19"), value: 160.89), - LineData(time: .string("2018-12-20"), value: 156.83), - LineData(time: .string("2018-12-21"), value: 150.73), - LineData(time: .string("2018-12-24"), value: 146.83), - LineData(time: .string("2018-12-26"), value: 157.17), - LineData(time: .string("2018-12-27"), value: 156.15), - LineData(time: .string("2018-12-28"), value: 156.23), - LineData(time: .string("2018-12-31"), value: 157.74), - LineData(time: .string("2019-01-02"), value: 157.92), - LineData(time: .string("2019-01-03"), value: 142.19), - LineData(time: .string("2019-01-04"), value: 148.26), - LineData(time: .string("2019-01-07"), value: 147.93), - LineData(time: .string("2019-01-08"), value: 150.75), - LineData(time: .string("2019-01-09"), value: 153.31), - LineData(time: .string("2019-01-10"), value: 153.80), - LineData(time: .string("2019-01-11"), value: 152.29), - LineData(time: .string("2019-01-14"), value: 150.00), - LineData(time: .string("2019-01-15"), value: 153.07), - LineData(time: .string("2019-01-16"), value: 154.94), - LineData(time: .string("2019-01-17"), value: 155.86), - LineData(time: .string("2019-01-18"), value: 156.82), - LineData(time: .string("2019-01-22"), value: 153.30), - LineData(time: .string("2019-01-23"), value: 153.92), - LineData(time: .string("2019-01-24"), value: 152.70), - LineData(time: .string("2019-01-25"), value: 157.76), - LineData(time: .string("2019-01-28"), value: 156.30), - LineData(time: .string("2019-01-29"), value: 154.68), - LineData(time: .string("2019-01-30"), value: 165.25), - LineData(time: .string("2019-01-31"), value: 166.44), - LineData(time: .string("2019-02-01"), value: 166.52), - LineData(time: .string("2019-02-04"), value: 171.25), - LineData(time: .string("2019-02-05"), value: 174.18), - LineData(time: .string("2019-02-06"), value: 174.24), - LineData(time: .string("2019-02-07"), value: 170.94), - LineData(time: .string("2019-02-08"), value: 170.41), - LineData(time: .string("2019-02-11"), value: 169.43), - LineData(time: .string("2019-02-12"), value: 170.89), - LineData(time: .string("2019-02-13"), value: 170.18), - LineData(time: .string("2019-02-14"), value: 170.80), - LineData(time: .string("2019-02-15"), value: 170.42), - LineData(time: .string("2019-02-19"), value: 170.93), - LineData(time: .string("2019-02-20"), value: 172.03), - LineData(time: .string("2019-02-21"), value: 171.06), - LineData(time: .string("2019-02-22"), value: 172.97), - LineData(time: .string("2019-02-25"), value: 174.23), - LineData(time: .string("2019-02-26"), value: 174.33), - LineData(time: .string("2019-02-27"), value: 174.87), - LineData(time: .string("2019-02-28"), value: 173.15), - LineData(time: .string("2019-03-01"), value: 174.97), - LineData(time: .string("2019-03-04"), value: 175.85), - LineData(time: .string("2019-03-05"), value: 175.53), - LineData(time: .string("2019-03-06"), value: 174.52), - LineData(time: .string("2019-03-07"), value: 172.50), - LineData(time: .string("2019-03-08"), value: 172.91), - LineData(time: .string("2019-03-11"), value: 178.90), - LineData(time: .string("2019-03-12"), value: 180.91), - LineData(time: .string("2019-03-13"), value: 181.71), - LineData(time: .string("2019-03-14"), value: 183.73), - LineData(time: .string("2019-03-15"), value: 186.12), - LineData(time: .string("2019-03-18"), value: 188.02), - LineData(time: .string("2019-03-19"), value: 186.53), - LineData(time: .string("2019-03-20"), value: 188.16), - LineData(time: .string("2019-03-21"), value: 195.09), - LineData(time: .string("2019-03-22"), value: 191.05), - LineData(time: .string("2019-03-25"), value: 188.74), - LineData(time: .string("2019-03-26"), value: 186.79), - LineData(time: .string("2019-03-27"), value: 188.47), - LineData(time: .string("2019-03-28"), value: 188.72), - LineData(time: .string("2019-03-29"), value: 189.95), - LineData(time: .string("2019-04-01"), value: 191.24), - LineData(time: .string("2019-04-02"), value: 194.02), - LineData(time: .string("2019-04-03"), value: 195.35), - LineData(time: .string("2019-04-04"), value: 195.69), - LineData(time: .string("2019-04-05"), value: 197.00), - LineData(time: .string("2019-04-08"), value: 200.10), - LineData(time: .string("2019-04-09"), value: 199.50), - LineData(time: .string("2019-04-10"), value: 200.62), - LineData(time: .string("2019-04-11"), value: 198.95), - LineData(time: .string("2019-04-12"), value: 198.87), - LineData(time: .string("2019-04-15"), value: 199.23), - LineData(time: .string("2019-04-16"), value: 199.25), - LineData(time: .string("2019-04-17"), value: 203.13), - LineData(time: .string("2019-04-18"), value: 203.86), - LineData(time: .string("2019-04-22"), value: 204.53), - LineData(time: .string("2019-04-23"), value: 207.48), - LineData(time: .string("2019-04-24"), value: 207.16), - LineData(time: .string("2019-04-25"), value: 205.28), - LineData(time: .string("2019-04-26"), value: 204.30), - LineData(time: .string("2019-04-29"), value: 204.61), - LineData(time: .string("2019-04-30"), value: 200.67), - LineData(time: .string("2019-05-01"), value: 210.52), - LineData(time: .string("2019-05-02"), value: 209.15), - LineData(time: .string("2019-05-03"), value: 211.75), - LineData(time: .string("2019-05-06"), value: 208.48), - LineData(time: .string("2019-05-07"), value: 202.86), - LineData(time: .string("2019-05-08"), value: 202.90), - LineData(time: .string("2019-05-09"), value: 200.72), - LineData(time: .string("2019-05-10"), value: 197.18), - LineData(time: .string("2019-05-13"), value: 185.72), - LineData(time: .string("2019-05-14"), value: 188.66), - LineData(time: .string("2019-05-15"), value: 190.92), - LineData(time: .string("2019-05-16"), value: 190.08), - LineData(time: .string("2019-05-17"), value: 189.00), - LineData(time: .string("2019-05-20"), value: 183.09), - LineData(time: .string("2019-05-21"), value: 186.60), - LineData(time: .string("2019-05-22"), value: 182.78), - LineData(time: .string("2019-05-23"), value: 179.66), - LineData(time: .string("2019-05-24"), value: 178.97), - LineData(time: .string("2019-05-28"), value: 178.67) + SingleValueData(time: .string("2018-10-19"), value: 219.31), + SingleValueData(time: .string("2018-10-22"), value: 220.65), + SingleValueData(time: .string("2018-10-23"), value: 222.73), + SingleValueData(time: .string("2018-10-24"), value: 215.09), + SingleValueData(time: .string("2018-10-25"), value: 219.80), + SingleValueData(time: .string("2018-10-26"), value: 216.30), + SingleValueData(time: .string("2018-10-29"), value: 212.24), + SingleValueData(time: .string("2018-10-30"), value: 213.30), + SingleValueData(time: .string("2018-10-31"), value: 218.86), + SingleValueData(time: .string("2018-11-01"), value: 222.22), + SingleValueData(time: .string("2018-11-02"), value: 207.48), + SingleValueData(time: .string("2018-11-05"), value: 201.59), + SingleValueData(time: .string("2018-11-06"), value: 203.77), + SingleValueData(time: .string("2018-11-07"), value: 209.95), + SingleValueData(time: .string("2018-11-08"), value: 208.49), + SingleValueData(time: .string("2018-11-09"), value: 204.47), + SingleValueData(time: .string("2018-11-12"), value: 194.17), + SingleValueData(time: .string("2018-11-13"), value: 192.23), + SingleValueData(time: .string("2018-11-14"), value: 186.80), + SingleValueData(time: .string("2018-11-15"), value: 191.41), + SingleValueData(time: .string("2018-11-16"), value: 193.53), + SingleValueData(time: .string("2018-11-19"), value: 185.86), + SingleValueData(time: .string("2018-11-20"), value: 176.98), + SingleValueData(time: .string("2018-11-21"), value: 176.78), + SingleValueData(time: .string("2018-11-23"), value: 172.29), + SingleValueData(time: .string("2018-11-26"), value: 174.62), + SingleValueData(time: .string("2018-11-27"), value: 174.24), + SingleValueData(time: .string("2018-11-28"), value: 180.94), + SingleValueData(time: .string("2018-11-29"), value: 179.55), + SingleValueData(time: .string("2018-11-30"), value: 178.58), + SingleValueData(time: .string("2018-12-03"), value: 184.82), + SingleValueData(time: .string("2018-12-04"), value: 176.69), + SingleValueData(time: .string("2018-12-06"), value: 174.72), + SingleValueData(time: .string("2018-12-07"), value: 168.49), + SingleValueData(time: .string("2018-12-10"), value: 169.60), + SingleValueData(time: .string("2018-12-11"), value: 168.63), + SingleValueData(time: .string("2018-12-12"), value: 169.10), + SingleValueData(time: .string("2018-12-13"), value: 170.95), + SingleValueData(time: .string("2018-12-14"), value: 165.48), + SingleValueData(time: .string("2018-12-17"), value: 163.94), + SingleValueData(time: .string("2018-12-18"), value: 166.07), + SingleValueData(time: .string("2018-12-19"), value: 160.89), + SingleValueData(time: .string("2018-12-20"), value: 156.83), + SingleValueData(time: .string("2018-12-21"), value: 150.73), + SingleValueData(time: .string("2018-12-24"), value: 146.83), + SingleValueData(time: .string("2018-12-26"), value: 157.17), + SingleValueData(time: .string("2018-12-27"), value: 156.15), + SingleValueData(time: .string("2018-12-28"), value: 156.23), + SingleValueData(time: .string("2018-12-31"), value: 157.74), + SingleValueData(time: .string("2019-01-02"), value: 157.92), + SingleValueData(time: .string("2019-01-03"), value: 142.19), + SingleValueData(time: .string("2019-01-04"), value: 148.26), + SingleValueData(time: .string("2019-01-07"), value: 147.93), + SingleValueData(time: .string("2019-01-08"), value: 150.75), + SingleValueData(time: .string("2019-01-09"), value: 153.31), + SingleValueData(time: .string("2019-01-10"), value: 153.80), + SingleValueData(time: .string("2019-01-11"), value: 152.29), + SingleValueData(time: .string("2019-01-14"), value: 150.00), + SingleValueData(time: .string("2019-01-15"), value: 153.07), + SingleValueData(time: .string("2019-01-16"), value: 154.94), + SingleValueData(time: .string("2019-01-17"), value: 155.86), + SingleValueData(time: .string("2019-01-18"), value: 156.82), + SingleValueData(time: .string("2019-01-22"), value: 153.30), + SingleValueData(time: .string("2019-01-23"), value: 153.92), + SingleValueData(time: .string("2019-01-24"), value: 152.70), + SingleValueData(time: .string("2019-01-25"), value: 157.76), + SingleValueData(time: .string("2019-01-28"), value: 156.30), + SingleValueData(time: .string("2019-01-29"), value: 154.68), + SingleValueData(time: .string("2019-01-30"), value: 165.25), + SingleValueData(time: .string("2019-01-31"), value: 166.44), + SingleValueData(time: .string("2019-02-01"), value: 166.52), + SingleValueData(time: .string("2019-02-04"), value: 171.25), + SingleValueData(time: .string("2019-02-05"), value: 174.18), + SingleValueData(time: .string("2019-02-06"), value: 174.24), + SingleValueData(time: .string("2019-02-07"), value: 170.94), + SingleValueData(time: .string("2019-02-08"), value: 170.41), + SingleValueData(time: .string("2019-02-11"), value: 169.43), + SingleValueData(time: .string("2019-02-12"), value: 170.89), + SingleValueData(time: .string("2019-02-13"), value: 170.18), + SingleValueData(time: .string("2019-02-14"), value: 170.80), + SingleValueData(time: .string("2019-02-15"), value: 170.42), + SingleValueData(time: .string("2019-02-19"), value: 170.93), + SingleValueData(time: .string("2019-02-20"), value: 172.03), + SingleValueData(time: .string("2019-02-21"), value: 171.06), + SingleValueData(time: .string("2019-02-22"), value: 172.97), + SingleValueData(time: .string("2019-02-25"), value: 174.23), + SingleValueData(time: .string("2019-02-26"), value: 174.33), + SingleValueData(time: .string("2019-02-27"), value: 174.87), + SingleValueData(time: .string("2019-02-28"), value: 173.15), + SingleValueData(time: .string("2019-03-01"), value: 174.97), + SingleValueData(time: .string("2019-03-04"), value: 175.85), + SingleValueData(time: .string("2019-03-05"), value: 175.53), + SingleValueData(time: .string("2019-03-06"), value: 174.52), + SingleValueData(time: .string("2019-03-07"), value: 172.50), + SingleValueData(time: .string("2019-03-08"), value: 172.91), + SingleValueData(time: .string("2019-03-11"), value: 178.90), + SingleValueData(time: .string("2019-03-12"), value: 180.91), + SingleValueData(time: .string("2019-03-13"), value: 181.71), + SingleValueData(time: .string("2019-03-14"), value: 183.73), + SingleValueData(time: .string("2019-03-15"), value: 186.12), + SingleValueData(time: .string("2019-03-18"), value: 188.02), + SingleValueData(time: .string("2019-03-19"), value: 186.53), + SingleValueData(time: .string("2019-03-20"), value: 188.16), + SingleValueData(time: .string("2019-03-21"), value: 195.09), + SingleValueData(time: .string("2019-03-22"), value: 191.05), + SingleValueData(time: .string("2019-03-25"), value: 188.74), + SingleValueData(time: .string("2019-03-26"), value: 186.79), + SingleValueData(time: .string("2019-03-27"), value: 188.47), + SingleValueData(time: .string("2019-03-28"), value: 188.72), + SingleValueData(time: .string("2019-03-29"), value: 189.95), + SingleValueData(time: .string("2019-04-01"), value: 191.24), + SingleValueData(time: .string("2019-04-02"), value: 194.02), + SingleValueData(time: .string("2019-04-03"), value: 195.35), + SingleValueData(time: .string("2019-04-04"), value: 195.69), + SingleValueData(time: .string("2019-04-05"), value: 197.00), + SingleValueData(time: .string("2019-04-08"), value: 200.10), + SingleValueData(time: .string("2019-04-09"), value: 199.50), + SingleValueData(time: .string("2019-04-10"), value: 200.62), + SingleValueData(time: .string("2019-04-11"), value: 198.95), + SingleValueData(time: .string("2019-04-12"), value: 198.87), + SingleValueData(time: .string("2019-04-15"), value: 199.23), + SingleValueData(time: .string("2019-04-16"), value: 199.25), + SingleValueData(time: .string("2019-04-17"), value: 203.13), + SingleValueData(time: .string("2019-04-18"), value: 203.86), + SingleValueData(time: .string("2019-04-22"), value: 204.53), + SingleValueData(time: .string("2019-04-23"), value: 207.48), + SingleValueData(time: .string("2019-04-24"), value: 207.16), + SingleValueData(time: .string("2019-04-25"), value: 205.28), + SingleValueData(time: .string("2019-04-26"), value: 204.30), + SingleValueData(time: .string("2019-04-29"), value: 204.61), + SingleValueData(time: .string("2019-04-30"), value: 200.67), + SingleValueData(time: .string("2019-05-01"), value: 210.52), + SingleValueData(time: .string("2019-05-02"), value: 209.15), + SingleValueData(time: .string("2019-05-03"), value: 211.75), + SingleValueData(time: .string("2019-05-06"), value: 208.48), + SingleValueData(time: .string("2019-05-07"), value: 202.86), + SingleValueData(time: .string("2019-05-08"), value: 202.90), + SingleValueData(time: .string("2019-05-09"), value: 200.72), + SingleValueData(time: .string("2019-05-10"), value: 197.18), + SingleValueData(time: .string("2019-05-13"), value: 185.72), + SingleValueData(time: .string("2019-05-14"), value: 188.66), + SingleValueData(time: .string("2019-05-15"), value: 190.92), + SingleValueData(time: .string("2019-05-16"), value: 190.08), + SingleValueData(time: .string("2019-05-17"), value: 189.00), + SingleValueData(time: .string("2019-05-20"), value: 183.09), + SingleValueData(time: .string("2019-05-21"), value: 186.60), + SingleValueData(time: .string("2019-05-22"), value: 182.78), + SingleValueData(time: .string("2019-05-23"), value: 179.66), + SingleValueData(time: .string("2019-05-24"), value: 178.97), + SingleValueData(time: .string("2019-05-28"), value: 178.67) ] areaSeries.setData(data: areaData) self.areaSeries = areaSeries diff --git a/Example/LightweightCharts/Example/PercentagePriceScaleViewController.swift b/Example/LightweightCharts/Example/PercentagePriceScaleViewController.swift index 66b7844..c945aad 100644 --- a/Example/LightweightCharts/Example/PercentagePriceScaleViewController.swift +++ b/Example/LightweightCharts/Example/PercentagePriceScaleViewController.swift @@ -59,156 +59,156 @@ class PercentagePriceScaleViewController: UIViewController { ) let areaSeries = chart.addAreaSeries(options: areaSeriesOptions) let areaData = [ - LineData(time: .string("2018-10-19"), value: 219.31), - LineData(time: .string("2018-10-22"), value: 220.65), - LineData(time: .string("2018-10-23"), value: 222.73), - LineData(time: .string("2018-10-24"), value: 215.09), - LineData(time: .string("2018-10-25"), value: 219.8), - LineData(time: .string("2018-10-26"), value: 216.3), - LineData(time: .string("2018-10-29"), value: 212.24), - LineData(time: .string("2018-10-30"), value: 213.3), - LineData(time: .string("2018-10-31"), value: 218.86), - LineData(time: .string("2018-11-01"), value: 222.22), - LineData(time: .string("2018-11-02"), value: 207.48), - LineData(time: .string("2018-11-05"), value: 201.59), - LineData(time: .string("2018-11-06"), value: 203.77), - LineData(time: .string("2018-11-07"), value: 209.95), - LineData(time: .string("2018-11-08"), value: 208.49), - LineData(time: .string("2018-11-09"), value: 204.47), - LineData(time: .string("2018-11-12"), value: 194.17), - LineData(time: .string("2018-11-13"), value: 192.23), - LineData(time: .string("2018-11-14"), value: 186.8), - LineData(time: .string("2018-11-15"), value: 191.41), - LineData(time: .string("2018-11-16"), value: 193.53), - LineData(time: .string("2018-11-19"), value: 185.86), - LineData(time: .string("2018-11-20"), value: 176.98), - LineData(time: .string("2018-11-21"), value: 176.78), - LineData(time: .string("2018-11-23"), value: 172.29), - LineData(time: .string("2018-11-26"), value: 174.62), - LineData(time: .string("2018-11-27"), value: 174.24), - LineData(time: .string("2018-11-28"), value: 180.94), - LineData(time: .string("2018-11-29"), value: 179.55), - LineData(time: .string("2018-11-30"), value: 178.58), - LineData(time: .string("2018-12-03"), value: 184.82), - LineData(time: .string("2018-12-04"), value: 176.69), - LineData(time: .string("2018-12-06"), value: 174.72), - LineData(time: .string("2018-12-07"), value: 168.49), - LineData(time: .string("2018-12-10"), value: 169.6), - LineData(time: .string("2018-12-11"), value: 168.63), - LineData(time: .string("2018-12-12"), value: 169.1), - LineData(time: .string("2018-12-13"), value: 170.95), - LineData(time: .string("2018-12-14"), value: 165.48), - LineData(time: .string("2018-12-17"), value: 163.94), - LineData(time: .string("2018-12-18"), value: 166.07), - LineData(time: .string("2018-12-19"), value: 160.89), - LineData(time: .string("2018-12-20"), value: 156.83), - LineData(time: .string("2018-12-21"), value: 150.73), - LineData(time: .string("2018-12-24"), value: 146.83), - LineData(time: .string("2018-12-26"), value: 157.17), - LineData(time: .string("2018-12-27"), value: 156.15), - LineData(time: .string("2018-12-28"), value: 156.23), - LineData(time: .string("2018-12-31"), value: 157.74), - LineData(time: .string("2019-01-02"), value: 157.92), - LineData(time: .string("2019-01-03"), value: 142.19), - LineData(time: .string("2019-01-04"), value: 148.26), - LineData(time: .string("2019-01-07"), value: 147.93), - LineData(time: .string("2019-01-08"), value: 150.75), - LineData(time: .string("2019-01-09"), value: 153.31), - LineData(time: .string("2019-01-10"), value: 153.8), - LineData(time: .string("2019-01-11"), value: 152.29), - LineData(time: .string("2019-01-14"), value: 150), - LineData(time: .string("2019-01-15"), value: 153.07), - LineData(time: .string("2019-01-16"), value: 154.94), - LineData(time: .string("2019-01-17"), value: 155.86), - LineData(time: .string("2019-01-18"), value: 156.82), - LineData(time: .string("2019-01-22"), value: 153.3), - LineData(time: .string("2019-01-23"), value: 153.92), - LineData(time: .string("2019-01-24"), value: 152.7), - LineData(time: .string("2019-01-25"), value: 157.76), - LineData(time: .string("2019-01-28"), value: 156.3), - LineData(time: .string("2019-01-29"), value: 154.68), - LineData(time: .string("2019-01-30"), value: 165.25), - LineData(time: .string("2019-01-31"), value: 166.44), - LineData(time: .string("2019-02-01"), value: 166.52), - LineData(time: .string("2019-02-04"), value: 171.25), - LineData(time: .string("2019-02-05"), value: 174.18), - LineData(time: .string("2019-02-06"), value: 174.24), - LineData(time: .string("2019-02-07"), value: 170.94), - LineData(time: .string("2019-02-08"), value: 170.41), - LineData(time: .string("2019-02-11"), value: 169.43), - LineData(time: .string("2019-02-12"), value: 170.89), - LineData(time: .string("2019-02-13"), value: 170.18), - LineData(time: .string("2019-02-14"), value: 170.8), - LineData(time: .string("2019-02-15"), value: 170.42), - LineData(time: .string("2019-02-19"), value: 170.93), - LineData(time: .string("2019-02-20"), value: 172.03), - LineData(time: .string("2019-02-21"), value: 171.06), - LineData(time: .string("2019-02-22"), value: 172.97), - LineData(time: .string("2019-02-25"), value: 174.23), - LineData(time: .string("2019-02-26"), value: 174.33), - LineData(time: .string("2019-02-27"), value: 174.87), - LineData(time: .string("2019-02-28"), value: 173.15), - LineData(time: .string("2019-03-01"), value: 174.97), - LineData(time: .string("2019-03-04"), value: 175.85), - LineData(time: .string("2019-03-05"), value: 175.53), - LineData(time: .string("2019-03-06"), value: 174.52), - LineData(time: .string("2019-03-07"), value: 172.5), - LineData(time: .string("2019-03-08"), value: 172.91), - LineData(time: .string("2019-03-11"), value: 178.9), - LineData(time: .string("2019-03-12"), value: 180.91), - LineData(time: .string("2019-03-13"), value: 181.71), - LineData(time: .string("2019-03-14"), value: 183.73), - LineData(time: .string("2019-03-15"), value: 186.12), - LineData(time: .string("2019-03-18"), value: 188.02), - LineData(time: .string("2019-03-19"), value: 186.53), - LineData(time: .string("2019-03-20"), value: 188.16), - LineData(time: .string("2019-03-21"), value: 195.09), - LineData(time: .string("2019-03-22"), value: 191.05), - LineData(time: .string("2019-03-25"), value: 188.74), - LineData(time: .string("2019-03-26"), value: 186.79), - LineData(time: .string("2019-03-27"), value: 188.47), - LineData(time: .string("2019-03-28"), value: 188.72), - LineData(time: .string("2019-03-29"), value: 189.95), - LineData(time: .string("2019-04-01"), value: 191.24), - LineData(time: .string("2019-04-02"), value: 194.02), - LineData(time: .string("2019-04-03"), value: 195.35), - LineData(time: .string("2019-04-04"), value: 195.69), - LineData(time: .string("2019-04-05"), value: 197), - LineData(time: .string("2019-04-08"), value: 200.1), - LineData(time: .string("2019-04-09"), value: 199.5), - LineData(time: .string("2019-04-10"), value: 200.62), - LineData(time: .string("2019-04-11"), value: 198.95), - LineData(time: .string("2019-04-12"), value: 198.87), - LineData(time: .string("2019-04-15"), value: 199.23), - LineData(time: .string("2019-04-16"), value: 199.25), - LineData(time: .string("2019-04-17"), value: 203.13), - LineData(time: .string("2019-04-18"), value: 203.86), - LineData(time: .string("2019-04-22"), value: 204.53), - LineData(time: .string("2019-04-23"), value: 207.48), - LineData(time: .string("2019-04-24"), value: 207.16), - LineData(time: .string("2019-04-25"), value: 205.28), - LineData(time: .string("2019-04-26"), value: 204.3), - LineData(time: .string("2019-04-29"), value: 204.61), - LineData(time: .string("2019-04-30"), value: 200.67), - LineData(time: .string("2019-05-01"), value: 210.52), - LineData(time: .string("2019-05-02"), value: 209.15), - LineData(time: .string("2019-05-03"), value: 211.75), - LineData(time: .string("2019-05-06"), value: 208.48), - LineData(time: .string("2019-05-07"), value: 202.86), - LineData(time: .string("2019-05-08"), value: 202.9), - LineData(time: .string("2019-05-09"), value: 200.72), - LineData(time: .string("2019-05-10"), value: 197.18), - LineData(time: .string("2019-05-13"), value: 185.72), - LineData(time: .string("2019-05-14"), value: 188.66), - LineData(time: .string("2019-05-15"), value: 190.92), - LineData(time: .string("2019-05-16"), value: 190.08), - LineData(time: .string("2019-05-17"), value: 189), - LineData(time: .string("2019-05-20"), value: 183.09), - LineData(time: .string("2019-05-21"), value: 186.6), - LineData(time: .string("2019-05-22"), value: 182.78), - LineData(time: .string("2019-05-23"), value: 179.66), - LineData(time: .string("2019-05-24"), value: 178.97), - LineData(time: .string("2019-05-28"), value: 179.07) + SingleValueData(time: .string("2018-10-19"), value: 219.31), + SingleValueData(time: .string("2018-10-22"), value: 220.65), + SingleValueData(time: .string("2018-10-23"), value: 222.73), + SingleValueData(time: .string("2018-10-24"), value: 215.09), + SingleValueData(time: .string("2018-10-25"), value: 219.8), + SingleValueData(time: .string("2018-10-26"), value: 216.3), + SingleValueData(time: .string("2018-10-29"), value: 212.24), + SingleValueData(time: .string("2018-10-30"), value: 213.3), + SingleValueData(time: .string("2018-10-31"), value: 218.86), + SingleValueData(time: .string("2018-11-01"), value: 222.22), + SingleValueData(time: .string("2018-11-02"), value: 207.48), + SingleValueData(time: .string("2018-11-05"), value: 201.59), + SingleValueData(time: .string("2018-11-06"), value: 203.77), + SingleValueData(time: .string("2018-11-07"), value: 209.95), + SingleValueData(time: .string("2018-11-08"), value: 208.49), + SingleValueData(time: .string("2018-11-09"), value: 204.47), + SingleValueData(time: .string("2018-11-12"), value: 194.17), + SingleValueData(time: .string("2018-11-13"), value: 192.23), + SingleValueData(time: .string("2018-11-14"), value: 186.8), + SingleValueData(time: .string("2018-11-15"), value: 191.41), + SingleValueData(time: .string("2018-11-16"), value: 193.53), + SingleValueData(time: .string("2018-11-19"), value: 185.86), + SingleValueData(time: .string("2018-11-20"), value: 176.98), + SingleValueData(time: .string("2018-11-21"), value: 176.78), + SingleValueData(time: .string("2018-11-23"), value: 172.29), + SingleValueData(time: .string("2018-11-26"), value: 174.62), + SingleValueData(time: .string("2018-11-27"), value: 174.24), + SingleValueData(time: .string("2018-11-28"), value: 180.94), + SingleValueData(time: .string("2018-11-29"), value: 179.55), + SingleValueData(time: .string("2018-11-30"), value: 178.58), + SingleValueData(time: .string("2018-12-03"), value: 184.82), + SingleValueData(time: .string("2018-12-04"), value: 176.69), + SingleValueData(time: .string("2018-12-06"), value: 174.72), + SingleValueData(time: .string("2018-12-07"), value: 168.49), + SingleValueData(time: .string("2018-12-10"), value: 169.6), + SingleValueData(time: .string("2018-12-11"), value: 168.63), + SingleValueData(time: .string("2018-12-12"), value: 169.1), + SingleValueData(time: .string("2018-12-13"), value: 170.95), + SingleValueData(time: .string("2018-12-14"), value: 165.48), + SingleValueData(time: .string("2018-12-17"), value: 163.94), + SingleValueData(time: .string("2018-12-18"), value: 166.07), + SingleValueData(time: .string("2018-12-19"), value: 160.89), + SingleValueData(time: .string("2018-12-20"), value: 156.83), + SingleValueData(time: .string("2018-12-21"), value: 150.73), + SingleValueData(time: .string("2018-12-24"), value: 146.83), + SingleValueData(time: .string("2018-12-26"), value: 157.17), + SingleValueData(time: .string("2018-12-27"), value: 156.15), + SingleValueData(time: .string("2018-12-28"), value: 156.23), + SingleValueData(time: .string("2018-12-31"), value: 157.74), + SingleValueData(time: .string("2019-01-02"), value: 157.92), + SingleValueData(time: .string("2019-01-03"), value: 142.19), + SingleValueData(time: .string("2019-01-04"), value: 148.26), + SingleValueData(time: .string("2019-01-07"), value: 147.93), + SingleValueData(time: .string("2019-01-08"), value: 150.75), + SingleValueData(time: .string("2019-01-09"), value: 153.31), + SingleValueData(time: .string("2019-01-10"), value: 153.8), + SingleValueData(time: .string("2019-01-11"), value: 152.29), + SingleValueData(time: .string("2019-01-14"), value: 150), + SingleValueData(time: .string("2019-01-15"), value: 153.07), + SingleValueData(time: .string("2019-01-16"), value: 154.94), + SingleValueData(time: .string("2019-01-17"), value: 155.86), + SingleValueData(time: .string("2019-01-18"), value: 156.82), + SingleValueData(time: .string("2019-01-22"), value: 153.3), + SingleValueData(time: .string("2019-01-23"), value: 153.92), + SingleValueData(time: .string("2019-01-24"), value: 152.7), + SingleValueData(time: .string("2019-01-25"), value: 157.76), + SingleValueData(time: .string("2019-01-28"), value: 156.3), + SingleValueData(time: .string("2019-01-29"), value: 154.68), + SingleValueData(time: .string("2019-01-30"), value: 165.25), + SingleValueData(time: .string("2019-01-31"), value: 166.44), + SingleValueData(time: .string("2019-02-01"), value: 166.52), + SingleValueData(time: .string("2019-02-04"), value: 171.25), + SingleValueData(time: .string("2019-02-05"), value: 174.18), + SingleValueData(time: .string("2019-02-06"), value: 174.24), + SingleValueData(time: .string("2019-02-07"), value: 170.94), + SingleValueData(time: .string("2019-02-08"), value: 170.41), + SingleValueData(time: .string("2019-02-11"), value: 169.43), + SingleValueData(time: .string("2019-02-12"), value: 170.89), + SingleValueData(time: .string("2019-02-13"), value: 170.18), + SingleValueData(time: .string("2019-02-14"), value: 170.8), + SingleValueData(time: .string("2019-02-15"), value: 170.42), + SingleValueData(time: .string("2019-02-19"), value: 170.93), + SingleValueData(time: .string("2019-02-20"), value: 172.03), + SingleValueData(time: .string("2019-02-21"), value: 171.06), + SingleValueData(time: .string("2019-02-22"), value: 172.97), + SingleValueData(time: .string("2019-02-25"), value: 174.23), + SingleValueData(time: .string("2019-02-26"), value: 174.33), + SingleValueData(time: .string("2019-02-27"), value: 174.87), + SingleValueData(time: .string("2019-02-28"), value: 173.15), + SingleValueData(time: .string("2019-03-01"), value: 174.97), + SingleValueData(time: .string("2019-03-04"), value: 175.85), + SingleValueData(time: .string("2019-03-05"), value: 175.53), + SingleValueData(time: .string("2019-03-06"), value: 174.52), + SingleValueData(time: .string("2019-03-07"), value: 172.5), + SingleValueData(time: .string("2019-03-08"), value: 172.91), + SingleValueData(time: .string("2019-03-11"), value: 178.9), + SingleValueData(time: .string("2019-03-12"), value: 180.91), + SingleValueData(time: .string("2019-03-13"), value: 181.71), + SingleValueData(time: .string("2019-03-14"), value: 183.73), + SingleValueData(time: .string("2019-03-15"), value: 186.12), + SingleValueData(time: .string("2019-03-18"), value: 188.02), + SingleValueData(time: .string("2019-03-19"), value: 186.53), + SingleValueData(time: .string("2019-03-20"), value: 188.16), + SingleValueData(time: .string("2019-03-21"), value: 195.09), + SingleValueData(time: .string("2019-03-22"), value: 191.05), + SingleValueData(time: .string("2019-03-25"), value: 188.74), + SingleValueData(time: .string("2019-03-26"), value: 186.79), + SingleValueData(time: .string("2019-03-27"), value: 188.47), + SingleValueData(time: .string("2019-03-28"), value: 188.72), + SingleValueData(time: .string("2019-03-29"), value: 189.95), + SingleValueData(time: .string("2019-04-01"), value: 191.24), + SingleValueData(time: .string("2019-04-02"), value: 194.02), + SingleValueData(time: .string("2019-04-03"), value: 195.35), + SingleValueData(time: .string("2019-04-04"), value: 195.69), + SingleValueData(time: .string("2019-04-05"), value: 197), + SingleValueData(time: .string("2019-04-08"), value: 200.1), + SingleValueData(time: .string("2019-04-09"), value: 199.5), + SingleValueData(time: .string("2019-04-10"), value: 200.62), + SingleValueData(time: .string("2019-04-11"), value: 198.95), + SingleValueData(time: .string("2019-04-12"), value: 198.87), + SingleValueData(time: .string("2019-04-15"), value: 199.23), + SingleValueData(time: .string("2019-04-16"), value: 199.25), + SingleValueData(time: .string("2019-04-17"), value: 203.13), + SingleValueData(time: .string("2019-04-18"), value: 203.86), + SingleValueData(time: .string("2019-04-22"), value: 204.53), + SingleValueData(time: .string("2019-04-23"), value: 207.48), + SingleValueData(time: .string("2019-04-24"), value: 207.16), + SingleValueData(time: .string("2019-04-25"), value: 205.28), + SingleValueData(time: .string("2019-04-26"), value: 204.3), + SingleValueData(time: .string("2019-04-29"), value: 204.61), + SingleValueData(time: .string("2019-04-30"), value: 200.67), + SingleValueData(time: .string("2019-05-01"), value: 210.52), + SingleValueData(time: .string("2019-05-02"), value: 209.15), + SingleValueData(time: .string("2019-05-03"), value: 211.75), + SingleValueData(time: .string("2019-05-06"), value: 208.48), + SingleValueData(time: .string("2019-05-07"), value: 202.86), + SingleValueData(time: .string("2019-05-08"), value: 202.9), + SingleValueData(time: .string("2019-05-09"), value: 200.72), + SingleValueData(time: .string("2019-05-10"), value: 197.18), + SingleValueData(time: .string("2019-05-13"), value: 185.72), + SingleValueData(time: .string("2019-05-14"), value: 188.66), + SingleValueData(time: .string("2019-05-15"), value: 190.92), + SingleValueData(time: .string("2019-05-16"), value: 190.08), + SingleValueData(time: .string("2019-05-17"), value: 189), + SingleValueData(time: .string("2019-05-20"), value: 183.09), + SingleValueData(time: .string("2019-05-21"), value: 186.6), + SingleValueData(time: .string("2019-05-22"), value: 182.78), + SingleValueData(time: .string("2019-05-23"), value: 179.66), + SingleValueData(time: .string("2019-05-24"), value: 178.97), + SingleValueData(time: .string("2019-05-28"), value: 179.07) ] areaSeries.setData(data: areaData) self.areaSeries = areaSeries @@ -221,156 +221,156 @@ class PercentagePriceScaleViewController: UIViewController { ) let extraSeries = chart.addAreaSeries(options: extraSeriesOptions) let extraData = [ - LineData(time: .string("2018-10-19"), value: 44), - LineData(time: .string("2018-10-22"), value: 43.14), - LineData(time: .string("2018-10-23"), value: 42.3), - LineData(time: .string("2018-10-24"), value: 40.99), - LineData(time: .string("2018-10-25"), value: 41.59), - LineData(time: .string("2018-10-26"), value: 41.1), - LineData(time: .string("2018-10-29"), value: 41.03), - LineData(time: .string("2018-10-30"), value: 42.21), - LineData(time: .string("2018-10-31"), value: 43.37), - LineData(time: .string("2018-11-01"), value: 42.65), - LineData(time: .string("2018-11-02"), value: 41.6), - LineData(time: .string("2018-11-05"), value: 42.61), - LineData(time: .string("2018-11-06"), value: 42.66), - LineData(time: .string("2018-11-07"), value: 43.11), - LineData(time: .string("2018-11-08"), value: 41.27), - LineData(time: .string("2018-11-09"), value: 41.24), - LineData(time: .string("2018-11-12"), value: 40.87), - LineData(time: .string("2018-11-13"), value: 39.81), - LineData(time: .string("2018-11-14"), value: 40.33), - LineData(time: .string("2018-11-15"), value: 41.16), - LineData(time: .string("2018-11-16"), value: 40.84), - LineData(time: .string("2018-11-19"), value: 40.92), - LineData(time: .string("2018-11-20"), value: 40.1), - LineData(time: .string("2018-11-21"), value: 41.27), - LineData(time: .string("2018-11-23"), value: 39.89), - LineData(time: .string("2018-11-26"), value: 40.53), - LineData(time: .string("2018-11-27"), value: 40.32), - LineData(time: .string("2018-11-28"), value: 40.84), - LineData(time: .string("2018-11-29"), value: 40.48), - LineData(time: .string("2018-11-30"), value: 40.35), - LineData(time: .string("2018-12-03"), value: 41.19), - LineData(time: .string("2018-12-04"), value: 40.95), - LineData(time: .string("2018-12-06"), value: 39.59), - LineData(time: .string("2018-12-07"), value: 39.51), - LineData(time: .string("2018-12-10"), value: 39.37), - LineData(time: .string("2018-12-11"), value: 39.08), - LineData(time: .string("2018-12-12"), value: 39.05), - LineData(time: .string("2018-12-13"), value: 39.29), - LineData(time: .string("2018-12-14"), value: 38.66), - LineData(time: .string("2018-12-17"), value: 38.41), - LineData(time: .string("2018-12-18"), value: 37.82), - LineData(time: .string("2018-12-19"), value: 37.65), - LineData(time: .string("2018-12-20"), value: 37.26), - LineData(time: .string("2018-12-21"), value: 37.67), - LineData(time: .string("2018-12-24"), value: 36.65), - LineData(time: .string("2018-12-26"), value: 38.06), - LineData(time: .string("2018-12-27"), value: 37.73), - LineData(time: .string("2018-12-28"), value: 38.13), - LineData(time: .string("2018-12-31"), value: 37.92), - LineData(time: .string("2019-01-02"), value: 38.59), - LineData(time: .string("2019-01-03"), value: 38.81), - LineData(time: .string("2019-01-04"), value: 40.03), - LineData(time: .string("2019-01-07"), value: 40.16), - LineData(time: .string("2019-01-08"), value: 40.03), - LineData(time: .string("2019-01-09"), value: 40.36), - LineData(time: .string("2019-01-10"), value: 40.7), - LineData(time: .string("2019-01-11"), value: 40.24), - LineData(time: .string("2019-01-14"), value: 40.42), - LineData(time: .string("2019-01-15"), value: 40.24), - LineData(time: .string("2019-01-16"), value: 40.12), - LineData(time: .string("2019-01-17"), value: 40.13), - LineData(time: .string("2019-01-18"), value: 40.76), - LineData(time: .string("2019-01-22"), value: 40.08), - LineData(time: .string("2019-01-23"), value: 40.12), - LineData(time: .string("2019-01-24"), value: 40.11), - LineData(time: .string("2019-01-25"), value: 40.11), - LineData(time: .string("2019-01-28"), value: 39.57), - LineData(time: .string("2019-01-29"), value: 40.2), - LineData(time: .string("2019-01-30"), value: 40.67), - LineData(time: .string("2019-01-31"), value: 41.12), - LineData(time: .string("2019-02-01"), value: 41.34), - LineData(time: .string("2019-02-04"), value: 41.39), - LineData(time: .string("2019-02-05"), value: 42.82), - LineData(time: .string("2019-02-06"), value: 43.04), - LineData(time: .string("2019-02-07"), value: 42.7), - LineData(time: .string("2019-02-08"), value: 42.49), - LineData(time: .string("2019-02-11"), value: 42.21), - LineData(time: .string("2019-02-12"), value: 42.42), - LineData(time: .string("2019-02-13"), value: 42.64), - LineData(time: .string("2019-02-14"), value: 41.87), - LineData(time: .string("2019-02-15"), value: 42.29), - LineData(time: .string("2019-02-19"), value: 42.38), - LineData(time: .string("2019-02-20"), value: 42.48), - LineData(time: .string("2019-02-21"), value: 42.29), - LineData(time: .string("2019-02-22"), value: 42.46), - LineData(time: .string("2019-02-25"), value: 42.51), - LineData(time: .string("2019-02-26"), value: 42.52), - LineData(time: .string("2019-02-27"), value: 42.84), - LineData(time: .string("2019-02-28"), value: 42.65), - LineData(time: .string("2019-03-01"), value: 42.58), - LineData(time: .string("2019-03-04"), value: 42.64), - LineData(time: .string("2019-03-05"), value: 42.74), - LineData(time: .string("2019-03-06"), value: 42.7), - LineData(time: .string("2019-03-07"), value: 42.63), - LineData(time: .string("2019-03-08"), value: 42.25), - LineData(time: .string("2019-03-11"), value: 42.33), - LineData(time: .string("2019-03-12"), value: 42.46), - LineData(time: .string("2019-03-13"), value: 43.83), - LineData(time: .string("2019-03-14"), value: 43.95), - LineData(time: .string("2019-03-15"), value: 43.87), - LineData(time: .string("2019-03-18"), value: 44.24), - LineData(time: .string("2019-03-19"), value: 44.47), - LineData(time: .string("2019-03-20"), value: 44.53), - LineData(time: .string("2019-03-21"), value: 44.53), - LineData(time: .string("2019-03-22"), value: 43.95), - LineData(time: .string("2019-03-25"), value: 43.53), - LineData(time: .string("2019-03-26"), value: 43.82), - LineData(time: .string("2019-03-27"), value: 43.59), - LineData(time: .string("2019-03-28"), value: 43.63), - LineData(time: .string("2019-03-29"), value: 43.72), - LineData(time: .string("2019-04-01"), value: 44.09), - LineData(time: .string("2019-04-02"), value: 44.23), - LineData(time: .string("2019-04-03"), value: 44.23), - LineData(time: .string("2019-04-04"), value: 44.15), - LineData(time: .string("2019-04-05"), value: 44.53), - LineData(time: .string("2019-04-08"), value: 45.23), - LineData(time: .string("2019-04-09"), value: 44.99), - LineData(time: .string("2019-04-10"), value: 45.04), - LineData(time: .string("2019-04-11"), value: 44.87), - LineData(time: .string("2019-04-12"), value: 44.67), - LineData(time: .string("2019-04-15"), value: 44.67), - LineData(time: .string("2019-04-16"), value: 44.48), - LineData(time: .string("2019-04-17"), value: 44.62), - LineData(time: .string("2019-04-18"), value: 44.39), - LineData(time: .string("2019-04-22"), value: 45.04), - LineData(time: .string("2019-04-23"), value: 45.02), - LineData(time: .string("2019-04-24"), value: 44.13), - LineData(time: .string("2019-04-25"), value: 43.96), - LineData(time: .string("2019-04-26"), value: 43.31), - LineData(time: .string("2019-04-29"), value: 43.02), - LineData(time: .string("2019-04-30"), value: 43.73), - LineData(time: .string("2019-05-01"), value: 43.08), - LineData(time: .string("2019-05-02"), value: 42.63), - LineData(time: .string("2019-05-03"), value: 43.08), - LineData(time: .string("2019-05-06"), value: 42.93), - LineData(time: .string("2019-05-07"), value: 42.22), - LineData(time: .string("2019-05-08"), value: 42.28), - LineData(time: .string("2019-05-09"), value: 41.65), - LineData(time: .string("2019-05-10"), value: 41.5), - LineData(time: .string("2019-05-13"), value: 41.23), - LineData(time: .string("2019-05-14"), value: 41.55), - LineData(time: .string("2019-05-15"), value: 41.77), - LineData(time: .string("2019-05-16"), value: 42.28), - LineData(time: .string("2019-05-17"), value: 42.34), - LineData(time: .string("2019-05-20"), value: 42.58), - LineData(time: .string("2019-05-21"), value: 42.75), - LineData(time: .string("2019-05-22"), value: 42.34), - LineData(time: .string("2019-05-23"), value: 41.34), - LineData(time: .string("2019-05-24"), value: 41.76), - LineData(time: .string("2019-05-28"), value: 41.625) + SingleValueData(time: .string("2018-10-19"), value: 44), + SingleValueData(time: .string("2018-10-22"), value: 43.14), + SingleValueData(time: .string("2018-10-23"), value: 42.3), + SingleValueData(time: .string("2018-10-24"), value: 40.99), + SingleValueData(time: .string("2018-10-25"), value: 41.59), + SingleValueData(time: .string("2018-10-26"), value: 41.1), + SingleValueData(time: .string("2018-10-29"), value: 41.03), + SingleValueData(time: .string("2018-10-30"), value: 42.21), + SingleValueData(time: .string("2018-10-31"), value: 43.37), + SingleValueData(time: .string("2018-11-01"), value: 42.65), + SingleValueData(time: .string("2018-11-02"), value: 41.6), + SingleValueData(time: .string("2018-11-05"), value: 42.61), + SingleValueData(time: .string("2018-11-06"), value: 42.66), + SingleValueData(time: .string("2018-11-07"), value: 43.11), + SingleValueData(time: .string("2018-11-08"), value: 41.27), + SingleValueData(time: .string("2018-11-09"), value: 41.24), + SingleValueData(time: .string("2018-11-12"), value: 40.87), + SingleValueData(time: .string("2018-11-13"), value: 39.81), + SingleValueData(time: .string("2018-11-14"), value: 40.33), + SingleValueData(time: .string("2018-11-15"), value: 41.16), + SingleValueData(time: .string("2018-11-16"), value: 40.84), + SingleValueData(time: .string("2018-11-19"), value: 40.92), + SingleValueData(time: .string("2018-11-20"), value: 40.1), + SingleValueData(time: .string("2018-11-21"), value: 41.27), + SingleValueData(time: .string("2018-11-23"), value: 39.89), + SingleValueData(time: .string("2018-11-26"), value: 40.53), + SingleValueData(time: .string("2018-11-27"), value: 40.32), + SingleValueData(time: .string("2018-11-28"), value: 40.84), + SingleValueData(time: .string("2018-11-29"), value: 40.48), + SingleValueData(time: .string("2018-11-30"), value: 40.35), + SingleValueData(time: .string("2018-12-03"), value: 41.19), + SingleValueData(time: .string("2018-12-04"), value: 40.95), + SingleValueData(time: .string("2018-12-06"), value: 39.59), + SingleValueData(time: .string("2018-12-07"), value: 39.51), + SingleValueData(time: .string("2018-12-10"), value: 39.37), + SingleValueData(time: .string("2018-12-11"), value: 39.08), + SingleValueData(time: .string("2018-12-12"), value: 39.05), + SingleValueData(time: .string("2018-12-13"), value: 39.29), + SingleValueData(time: .string("2018-12-14"), value: 38.66), + SingleValueData(time: .string("2018-12-17"), value: 38.41), + SingleValueData(time: .string("2018-12-18"), value: 37.82), + SingleValueData(time: .string("2018-12-19"), value: 37.65), + SingleValueData(time: .string("2018-12-20"), value: 37.26), + SingleValueData(time: .string("2018-12-21"), value: 37.67), + SingleValueData(time: .string("2018-12-24"), value: 36.65), + SingleValueData(time: .string("2018-12-26"), value: 38.06), + SingleValueData(time: .string("2018-12-27"), value: 37.73), + SingleValueData(time: .string("2018-12-28"), value: 38.13), + SingleValueData(time: .string("2018-12-31"), value: 37.92), + SingleValueData(time: .string("2019-01-02"), value: 38.59), + SingleValueData(time: .string("2019-01-03"), value: 38.81), + SingleValueData(time: .string("2019-01-04"), value: 40.03), + SingleValueData(time: .string("2019-01-07"), value: 40.16), + SingleValueData(time: .string("2019-01-08"), value: 40.03), + SingleValueData(time: .string("2019-01-09"), value: 40.36), + SingleValueData(time: .string("2019-01-10"), value: 40.7), + SingleValueData(time: .string("2019-01-11"), value: 40.24), + SingleValueData(time: .string("2019-01-14"), value: 40.42), + SingleValueData(time: .string("2019-01-15"), value: 40.24), + SingleValueData(time: .string("2019-01-16"), value: 40.12), + SingleValueData(time: .string("2019-01-17"), value: 40.13), + SingleValueData(time: .string("2019-01-18"), value: 40.76), + SingleValueData(time: .string("2019-01-22"), value: 40.08), + SingleValueData(time: .string("2019-01-23"), value: 40.12), + SingleValueData(time: .string("2019-01-24"), value: 40.11), + SingleValueData(time: .string("2019-01-25"), value: 40.11), + SingleValueData(time: .string("2019-01-28"), value: 39.57), + SingleValueData(time: .string("2019-01-29"), value: 40.2), + SingleValueData(time: .string("2019-01-30"), value: 40.67), + SingleValueData(time: .string("2019-01-31"), value: 41.12), + SingleValueData(time: .string("2019-02-01"), value: 41.34), + SingleValueData(time: .string("2019-02-04"), value: 41.39), + SingleValueData(time: .string("2019-02-05"), value: 42.82), + SingleValueData(time: .string("2019-02-06"), value: 43.04), + SingleValueData(time: .string("2019-02-07"), value: 42.7), + SingleValueData(time: .string("2019-02-08"), value: 42.49), + SingleValueData(time: .string("2019-02-11"), value: 42.21), + SingleValueData(time: .string("2019-02-12"), value: 42.42), + SingleValueData(time: .string("2019-02-13"), value: 42.64), + SingleValueData(time: .string("2019-02-14"), value: 41.87), + SingleValueData(time: .string("2019-02-15"), value: 42.29), + SingleValueData(time: .string("2019-02-19"), value: 42.38), + SingleValueData(time: .string("2019-02-20"), value: 42.48), + SingleValueData(time: .string("2019-02-21"), value: 42.29), + SingleValueData(time: .string("2019-02-22"), value: 42.46), + SingleValueData(time: .string("2019-02-25"), value: 42.51), + SingleValueData(time: .string("2019-02-26"), value: 42.52), + SingleValueData(time: .string("2019-02-27"), value: 42.84), + SingleValueData(time: .string("2019-02-28"), value: 42.65), + SingleValueData(time: .string("2019-03-01"), value: 42.58), + SingleValueData(time: .string("2019-03-04"), value: 42.64), + SingleValueData(time: .string("2019-03-05"), value: 42.74), + SingleValueData(time: .string("2019-03-06"), value: 42.7), + SingleValueData(time: .string("2019-03-07"), value: 42.63), + SingleValueData(time: .string("2019-03-08"), value: 42.25), + SingleValueData(time: .string("2019-03-11"), value: 42.33), + SingleValueData(time: .string("2019-03-12"), value: 42.46), + SingleValueData(time: .string("2019-03-13"), value: 43.83), + SingleValueData(time: .string("2019-03-14"), value: 43.95), + SingleValueData(time: .string("2019-03-15"), value: 43.87), + SingleValueData(time: .string("2019-03-18"), value: 44.24), + SingleValueData(time: .string("2019-03-19"), value: 44.47), + SingleValueData(time: .string("2019-03-20"), value: 44.53), + SingleValueData(time: .string("2019-03-21"), value: 44.53), + SingleValueData(time: .string("2019-03-22"), value: 43.95), + SingleValueData(time: .string("2019-03-25"), value: 43.53), + SingleValueData(time: .string("2019-03-26"), value: 43.82), + SingleValueData(time: .string("2019-03-27"), value: 43.59), + SingleValueData(time: .string("2019-03-28"), value: 43.63), + SingleValueData(time: .string("2019-03-29"), value: 43.72), + SingleValueData(time: .string("2019-04-01"), value: 44.09), + SingleValueData(time: .string("2019-04-02"), value: 44.23), + SingleValueData(time: .string("2019-04-03"), value: 44.23), + SingleValueData(time: .string("2019-04-04"), value: 44.15), + SingleValueData(time: .string("2019-04-05"), value: 44.53), + SingleValueData(time: .string("2019-04-08"), value: 45.23), + SingleValueData(time: .string("2019-04-09"), value: 44.99), + SingleValueData(time: .string("2019-04-10"), value: 45.04), + SingleValueData(time: .string("2019-04-11"), value: 44.87), + SingleValueData(time: .string("2019-04-12"), value: 44.67), + SingleValueData(time: .string("2019-04-15"), value: 44.67), + SingleValueData(time: .string("2019-04-16"), value: 44.48), + SingleValueData(time: .string("2019-04-17"), value: 44.62), + SingleValueData(time: .string("2019-04-18"), value: 44.39), + SingleValueData(time: .string("2019-04-22"), value: 45.04), + SingleValueData(time: .string("2019-04-23"), value: 45.02), + SingleValueData(time: .string("2019-04-24"), value: 44.13), + SingleValueData(time: .string("2019-04-25"), value: 43.96), + SingleValueData(time: .string("2019-04-26"), value: 43.31), + SingleValueData(time: .string("2019-04-29"), value: 43.02), + SingleValueData(time: .string("2019-04-30"), value: 43.73), + SingleValueData(time: .string("2019-05-01"), value: 43.08), + SingleValueData(time: .string("2019-05-02"), value: 42.63), + SingleValueData(time: .string("2019-05-03"), value: 43.08), + SingleValueData(time: .string("2019-05-06"), value: 42.93), + SingleValueData(time: .string("2019-05-07"), value: 42.22), + SingleValueData(time: .string("2019-05-08"), value: 42.28), + SingleValueData(time: .string("2019-05-09"), value: 41.65), + SingleValueData(time: .string("2019-05-10"), value: 41.5), + SingleValueData(time: .string("2019-05-13"), value: 41.23), + SingleValueData(time: .string("2019-05-14"), value: 41.55), + SingleValueData(time: .string("2019-05-15"), value: 41.77), + SingleValueData(time: .string("2019-05-16"), value: 42.28), + SingleValueData(time: .string("2019-05-17"), value: 42.34), + SingleValueData(time: .string("2019-05-20"), value: 42.58), + SingleValueData(time: .string("2019-05-21"), value: 42.75), + SingleValueData(time: .string("2019-05-22"), value: 42.34), + SingleValueData(time: .string("2019-05-23"), value: 41.34), + SingleValueData(time: .string("2019-05-24"), value: 41.76), + SingleValueData(time: .string("2019-05-28"), value: 41.625) ] extraSeries.setData(data: extraData) self.extraSeries = extraSeries diff --git a/Example/LightweightCharts/Example/PriceLineViewController.swift b/Example/LightweightCharts/Example/PriceLineViewController.swift index 82c3c65..538bd17 100644 --- a/Example/LightweightCharts/Example/PriceLineViewController.swift +++ b/Example/LightweightCharts/Example/PriceLineViewController.swift @@ -71,12 +71,12 @@ class PriceLineViewController: UIViewController { self.priceLine = priceLine } - private func generateData() -> [LineData] { + private func generateData() -> [SingleValueData] { var time = DateComponents(calendar: .current, year: 2018, day: 0).date! - var result: [LineData] = [] + var result: [SingleValueData] = [] for i in 0..<60 { time = Date(timeInterval: 60 * 60 * 24, since: time) - let lineData = LineData(time: .utc(timestamp: time.timeIntervalSince1970), value: Double(i)) + let lineData = SingleValueData(time: .utc(timestamp: time.timeIntervalSince1970), value: Double(i)) result.append(lineData) } return result diff --git a/Example/LightweightCharts/Example/PriceScaleAtLeftViewController.swift b/Example/LightweightCharts/Example/PriceScaleAtLeftViewController.swift index d01641d..263d5a3 100644 --- a/Example/LightweightCharts/Example/PriceScaleAtLeftViewController.swift +++ b/Example/LightweightCharts/Example/PriceScaleAtLeftViewController.swift @@ -53,156 +53,156 @@ class PriceScaleAtLeftViewController: UIViewController { ) let series = chart.addAreaSeries(options: options) let data = [ - LineData(time: .string("2018-10-19"), value: 154.05), - LineData(time: .string("2018-10-22"), value: 154.78), - LineData(time: .string("2018-10-23"), value: 154.39), - LineData(time: .string("2018-10-24"), value: 146.04), - LineData(time: .string("2018-10-25"), value: 150.95), - LineData(time: .string("2018-10-26"), value: 145.37), - LineData(time: .string("2018-10-29"), value: 142.09), - LineData(time: .string("2018-10-30"), value: 146.22), - LineData(time: .string("2018-10-31"), value: 151.79), - LineData(time: .string("2018-11-01"), value: 151.75), - LineData(time: .string("2018-11-02"), value: 150.35), - LineData(time: .string("2018-11-05"), value: 148.68), - LineData(time: .string("2018-11-06"), value: 149.94), - LineData(time: .string("2018-11-07"), value: 151.53), - LineData(time: .string("2018-11-08"), value: 147.87), - LineData(time: .string("2018-11-09"), value: 144.96), - LineData(time: .string("2018-11-12"), value: 141.55), - LineData(time: .string("2018-11-13"), value: 142.16), - LineData(time: .string("2018-11-14"), value: 144.22), - LineData(time: .string("2018-11-15"), value: 143.85), - LineData(time: .string("2018-11-16"), value: 139.53), - LineData(time: .string("2018-11-19"), value: 131.55), - LineData(time: .string("2018-11-20"), value: 132.43), - LineData(time: .string("2018-11-21"), value: 134.82), - LineData(time: .string("2018-11-23"), value: 131.73), - LineData(time: .string("2018-11-26"), value: 136.38), - LineData(time: .string("2018-11-27"), value: 135.00), - LineData(time: .string("2018-11-28"), value: 136.76), - LineData(time: .string("2018-11-29"), value: 138.68), - LineData(time: .string("2018-11-30"), value: 140.61), - LineData(time: .string("2018-12-03"), value: 141.09), - LineData(time: .string("2018-12-04"), value: 137.93), - LineData(time: .string("2018-12-06"), value: 139.63), - LineData(time: .string("2018-12-07"), value: 137.42), - LineData(time: .string("2018-12-10"), value: 141.85), - LineData(time: .string("2018-12-11"), value: 142.08), - LineData(time: .string("2018-12-12"), value: 144.50), - LineData(time: .string("2018-12-13"), value: 145.01), - LineData(time: .string("2018-12-14"), value: 144.06), - LineData(time: .string("2018-12-17"), value: 140.19), - LineData(time: .string("2018-12-18"), value: 143.66), - LineData(time: .string("2018-12-19"), value: 133.24), - LineData(time: .string("2018-12-20"), value: 133.40), - LineData(time: .string("2018-12-21"), value: 124.95), - LineData(time: .string("2018-12-24"), value: 124.06), - LineData(time: .string("2018-12-26"), value: 134.18), - LineData(time: .string("2018-12-27"), value: 134.52), - LineData(time: .string("2018-12-28"), value: 133.20), - LineData(time: .string("2018-12-31"), value: 131.09), - LineData(time: .string("2019-01-02"), value: 135.68), - LineData(time: .string("2019-01-03"), value: 131.74), - LineData(time: .string("2019-01-04"), value: 137.95), - LineData(time: .string("2019-01-07"), value: 138.05), - LineData(time: .string("2019-01-08"), value: 142.53), - LineData(time: .string("2019-01-09"), value: 144.23), - LineData(time: .string("2019-01-10"), value: 144.20), - LineData(time: .string("2019-01-11"), value: 143.80), - LineData(time: .string("2019-01-14"), value: 145.39), - LineData(time: .string("2019-01-15"), value: 148.95), - LineData(time: .string("2019-01-16"), value: 147.54), - LineData(time: .string("2019-01-17"), value: 148.30), - LineData(time: .string("2019-01-18"), value: 150.04), - LineData(time: .string("2019-01-22"), value: 147.57), - LineData(time: .string("2019-01-23"), value: 144.30), - LineData(time: .string("2019-01-24"), value: 145.83), - LineData(time: .string("2019-01-25"), value: 149.01), - LineData(time: .string("2019-01-28"), value: 147.47), - LineData(time: .string("2019-01-29"), value: 144.19), - LineData(time: .string("2019-01-30"), value: 150.42), - LineData(time: .string("2019-01-31"), value: 166.69), - LineData(time: .string("2019-02-01"), value: 165.71), - LineData(time: .string("2019-02-04"), value: 169.25), - LineData(time: .string("2019-02-05"), value: 171.16), - LineData(time: .string("2019-02-06"), value: 170.49), - LineData(time: .string("2019-02-07"), value: 166.38), - LineData(time: .string("2019-02-08"), value: 167.33), - LineData(time: .string("2019-02-11"), value: 165.79), - LineData(time: .string("2019-02-12"), value: 165.04), - LineData(time: .string("2019-02-13"), value: 164.07), - LineData(time: .string("2019-02-14"), value: 163.95), - LineData(time: .string("2019-02-15"), value: 162.50), - LineData(time: .string("2019-02-19"), value: 162.29), - LineData(time: .string("2019-02-20"), value: 162.56), - LineData(time: .string("2019-02-21"), value: 160.04), - LineData(time: .string("2019-02-22"), value: 161.89), - LineData(time: .string("2019-02-25"), value: 164.62), - LineData(time: .string("2019-02-26"), value: 164.13), - LineData(time: .string("2019-02-27"), value: 162.81), - LineData(time: .string("2019-02-28"), value: 161.45), - LineData(time: .string("2019-03-01"), value: 162.28), - LineData(time: .string("2019-03-04"), value: 167.37), - LineData(time: .string("2019-03-05"), value: 171.26), - LineData(time: .string("2019-03-06"), value: 172.51), - LineData(time: .string("2019-03-07"), value: 169.13), - LineData(time: .string("2019-03-08"), value: 169.60), - LineData(time: .string("2019-03-11"), value: 172.07), - LineData(time: .string("2019-03-12"), value: 171.92), - LineData(time: .string("2019-03-13"), value: 173.37), - LineData(time: .string("2019-03-14"), value: 170.17), - LineData(time: .string("2019-03-15"), value: 165.98), - LineData(time: .string("2019-03-18"), value: 160.47), - LineData(time: .string("2019-03-19"), value: 161.57), - LineData(time: .string("2019-03-20"), value: 165.44), - LineData(time: .string("2019-03-21"), value: 166.08), - LineData(time: .string("2019-03-22"), value: 164.34), - LineData(time: .string("2019-03-25"), value: 166.29), - LineData(time: .string("2019-03-26"), value: 167.68), - LineData(time: .string("2019-03-27"), value: 165.87), - LineData(time: .string("2019-03-28"), value: 165.55), - LineData(time: .string("2019-03-29"), value: 166.69), - LineData(time: .string("2019-04-01"), value: 168.70), - LineData(time: .string("2019-04-02"), value: 174.20), - LineData(time: .string("2019-04-03"), value: 173.54), - LineData(time: .string("2019-04-04"), value: 176.02), - LineData(time: .string("2019-04-05"), value: 175.72), - LineData(time: .string("2019-04-08"), value: 174.93), - LineData(time: .string("2019-04-09"), value: 177.58), - LineData(time: .string("2019-04-10"), value: 177.82), - LineData(time: .string("2019-04-11"), value: 177.51), - LineData(time: .string("2019-04-12"), value: 179.10), - LineData(time: .string("2019-04-15"), value: 179.65), - LineData(time: .string("2019-04-16"), value: 178.87), - LineData(time: .string("2019-04-17"), value: 178.78), - LineData(time: .string("2019-04-18"), value: 178.28), - LineData(time: .string("2019-04-22"), value: 181.44), - LineData(time: .string("2019-04-23"), value: 183.78), - LineData(time: .string("2019-04-24"), value: 182.58), - LineData(time: .string("2019-04-25"), value: 193.26), - LineData(time: .string("2019-04-26"), value: 191.49), - LineData(time: .string("2019-04-29"), value: 194.78), - LineData(time: .string("2019-04-30"), value: 193.40), - LineData(time: .string("2019-05-01"), value: 193.03), - LineData(time: .string("2019-05-02"), value: 192.53), - LineData(time: .string("2019-05-03"), value: 195.47), - LineData(time: .string("2019-05-06"), value: 193.88), - LineData(time: .string("2019-05-07"), value: 189.77), - LineData(time: .string("2019-05-08"), value: 189.54), - LineData(time: .string("2019-05-09"), value: 188.65), - LineData(time: .string("2019-05-10"), value: 188.34), - LineData(time: .string("2019-05-13"), value: 181.54), - LineData(time: .string("2019-05-14"), value: 180.73), - LineData(time: .string("2019-05-15"), value: 186.27), - LineData(time: .string("2019-05-16"), value: 186.99), - LineData(time: .string("2019-05-17"), value: 185.30), - LineData(time: .string("2019-05-20"), value: 182.72), - LineData(time: .string("2019-05-21"), value: 184.82), - LineData(time: .string("2019-05-22"), value: 185.32), - LineData(time: .string("2019-05-23"), value: 180.87), - LineData(time: .string("2019-05-24"), value: 181.06), - LineData(time: .string("2019-05-28"), value: 183.39) + SingleValueData(time: .string("2018-10-19"), value: 154.05), + SingleValueData(time: .string("2018-10-22"), value: 154.78), + SingleValueData(time: .string("2018-10-23"), value: 154.39), + SingleValueData(time: .string("2018-10-24"), value: 146.04), + SingleValueData(time: .string("2018-10-25"), value: 150.95), + SingleValueData(time: .string("2018-10-26"), value: 145.37), + SingleValueData(time: .string("2018-10-29"), value: 142.09), + SingleValueData(time: .string("2018-10-30"), value: 146.22), + SingleValueData(time: .string("2018-10-31"), value: 151.79), + SingleValueData(time: .string("2018-11-01"), value: 151.75), + SingleValueData(time: .string("2018-11-02"), value: 150.35), + SingleValueData(time: .string("2018-11-05"), value: 148.68), + SingleValueData(time: .string("2018-11-06"), value: 149.94), + SingleValueData(time: .string("2018-11-07"), value: 151.53), + SingleValueData(time: .string("2018-11-08"), value: 147.87), + SingleValueData(time: .string("2018-11-09"), value: 144.96), + SingleValueData(time: .string("2018-11-12"), value: 141.55), + SingleValueData(time: .string("2018-11-13"), value: 142.16), + SingleValueData(time: .string("2018-11-14"), value: 144.22), + SingleValueData(time: .string("2018-11-15"), value: 143.85), + SingleValueData(time: .string("2018-11-16"), value: 139.53), + SingleValueData(time: .string("2018-11-19"), value: 131.55), + SingleValueData(time: .string("2018-11-20"), value: 132.43), + SingleValueData(time: .string("2018-11-21"), value: 134.82), + SingleValueData(time: .string("2018-11-23"), value: 131.73), + SingleValueData(time: .string("2018-11-26"), value: 136.38), + SingleValueData(time: .string("2018-11-27"), value: 135.00), + SingleValueData(time: .string("2018-11-28"), value: 136.76), + SingleValueData(time: .string("2018-11-29"), value: 138.68), + SingleValueData(time: .string("2018-11-30"), value: 140.61), + SingleValueData(time: .string("2018-12-03"), value: 141.09), + SingleValueData(time: .string("2018-12-04"), value: 137.93), + SingleValueData(time: .string("2018-12-06"), value: 139.63), + SingleValueData(time: .string("2018-12-07"), value: 137.42), + SingleValueData(time: .string("2018-12-10"), value: 141.85), + SingleValueData(time: .string("2018-12-11"), value: 142.08), + SingleValueData(time: .string("2018-12-12"), value: 144.50), + SingleValueData(time: .string("2018-12-13"), value: 145.01), + SingleValueData(time: .string("2018-12-14"), value: 144.06), + SingleValueData(time: .string("2018-12-17"), value: 140.19), + SingleValueData(time: .string("2018-12-18"), value: 143.66), + SingleValueData(time: .string("2018-12-19"), value: 133.24), + SingleValueData(time: .string("2018-12-20"), value: 133.40), + SingleValueData(time: .string("2018-12-21"), value: 124.95), + SingleValueData(time: .string("2018-12-24"), value: 124.06), + SingleValueData(time: .string("2018-12-26"), value: 134.18), + SingleValueData(time: .string("2018-12-27"), value: 134.52), + SingleValueData(time: .string("2018-12-28"), value: 133.20), + SingleValueData(time: .string("2018-12-31"), value: 131.09), + SingleValueData(time: .string("2019-01-02"), value: 135.68), + SingleValueData(time: .string("2019-01-03"), value: 131.74), + SingleValueData(time: .string("2019-01-04"), value: 137.95), + SingleValueData(time: .string("2019-01-07"), value: 138.05), + SingleValueData(time: .string("2019-01-08"), value: 142.53), + SingleValueData(time: .string("2019-01-09"), value: 144.23), + SingleValueData(time: .string("2019-01-10"), value: 144.20), + SingleValueData(time: .string("2019-01-11"), value: 143.80), + SingleValueData(time: .string("2019-01-14"), value: 145.39), + SingleValueData(time: .string("2019-01-15"), value: 148.95), + SingleValueData(time: .string("2019-01-16"), value: 147.54), + SingleValueData(time: .string("2019-01-17"), value: 148.30), + SingleValueData(time: .string("2019-01-18"), value: 150.04), + SingleValueData(time: .string("2019-01-22"), value: 147.57), + SingleValueData(time: .string("2019-01-23"), value: 144.30), + SingleValueData(time: .string("2019-01-24"), value: 145.83), + SingleValueData(time: .string("2019-01-25"), value: 149.01), + SingleValueData(time: .string("2019-01-28"), value: 147.47), + SingleValueData(time: .string("2019-01-29"), value: 144.19), + SingleValueData(time: .string("2019-01-30"), value: 150.42), + SingleValueData(time: .string("2019-01-31"), value: 166.69), + SingleValueData(time: .string("2019-02-01"), value: 165.71), + SingleValueData(time: .string("2019-02-04"), value: 169.25), + SingleValueData(time: .string("2019-02-05"), value: 171.16), + SingleValueData(time: .string("2019-02-06"), value: 170.49), + SingleValueData(time: .string("2019-02-07"), value: 166.38), + SingleValueData(time: .string("2019-02-08"), value: 167.33), + SingleValueData(time: .string("2019-02-11"), value: 165.79), + SingleValueData(time: .string("2019-02-12"), value: 165.04), + SingleValueData(time: .string("2019-02-13"), value: 164.07), + SingleValueData(time: .string("2019-02-14"), value: 163.95), + SingleValueData(time: .string("2019-02-15"), value: 162.50), + SingleValueData(time: .string("2019-02-19"), value: 162.29), + SingleValueData(time: .string("2019-02-20"), value: 162.56), + SingleValueData(time: .string("2019-02-21"), value: 160.04), + SingleValueData(time: .string("2019-02-22"), value: 161.89), + SingleValueData(time: .string("2019-02-25"), value: 164.62), + SingleValueData(time: .string("2019-02-26"), value: 164.13), + SingleValueData(time: .string("2019-02-27"), value: 162.81), + SingleValueData(time: .string("2019-02-28"), value: 161.45), + SingleValueData(time: .string("2019-03-01"), value: 162.28), + SingleValueData(time: .string("2019-03-04"), value: 167.37), + SingleValueData(time: .string("2019-03-05"), value: 171.26), + SingleValueData(time: .string("2019-03-06"), value: 172.51), + SingleValueData(time: .string("2019-03-07"), value: 169.13), + SingleValueData(time: .string("2019-03-08"), value: 169.60), + SingleValueData(time: .string("2019-03-11"), value: 172.07), + SingleValueData(time: .string("2019-03-12"), value: 171.92), + SingleValueData(time: .string("2019-03-13"), value: 173.37), + SingleValueData(time: .string("2019-03-14"), value: 170.17), + SingleValueData(time: .string("2019-03-15"), value: 165.98), + SingleValueData(time: .string("2019-03-18"), value: 160.47), + SingleValueData(time: .string("2019-03-19"), value: 161.57), + SingleValueData(time: .string("2019-03-20"), value: 165.44), + SingleValueData(time: .string("2019-03-21"), value: 166.08), + SingleValueData(time: .string("2019-03-22"), value: 164.34), + SingleValueData(time: .string("2019-03-25"), value: 166.29), + SingleValueData(time: .string("2019-03-26"), value: 167.68), + SingleValueData(time: .string("2019-03-27"), value: 165.87), + SingleValueData(time: .string("2019-03-28"), value: 165.55), + SingleValueData(time: .string("2019-03-29"), value: 166.69), + SingleValueData(time: .string("2019-04-01"), value: 168.70), + SingleValueData(time: .string("2019-04-02"), value: 174.20), + SingleValueData(time: .string("2019-04-03"), value: 173.54), + SingleValueData(time: .string("2019-04-04"), value: 176.02), + SingleValueData(time: .string("2019-04-05"), value: 175.72), + SingleValueData(time: .string("2019-04-08"), value: 174.93), + SingleValueData(time: .string("2019-04-09"), value: 177.58), + SingleValueData(time: .string("2019-04-10"), value: 177.82), + SingleValueData(time: .string("2019-04-11"), value: 177.51), + SingleValueData(time: .string("2019-04-12"), value: 179.10), + SingleValueData(time: .string("2019-04-15"), value: 179.65), + SingleValueData(time: .string("2019-04-16"), value: 178.87), + SingleValueData(time: .string("2019-04-17"), value: 178.78), + SingleValueData(time: .string("2019-04-18"), value: 178.28), + SingleValueData(time: .string("2019-04-22"), value: 181.44), + SingleValueData(time: .string("2019-04-23"), value: 183.78), + SingleValueData(time: .string("2019-04-24"), value: 182.58), + SingleValueData(time: .string("2019-04-25"), value: 193.26), + SingleValueData(time: .string("2019-04-26"), value: 191.49), + SingleValueData(time: .string("2019-04-29"), value: 194.78), + SingleValueData(time: .string("2019-04-30"), value: 193.40), + SingleValueData(time: .string("2019-05-01"), value: 193.03), + SingleValueData(time: .string("2019-05-02"), value: 192.53), + SingleValueData(time: .string("2019-05-03"), value: 195.47), + SingleValueData(time: .string("2019-05-06"), value: 193.88), + SingleValueData(time: .string("2019-05-07"), value: 189.77), + SingleValueData(time: .string("2019-05-08"), value: 189.54), + SingleValueData(time: .string("2019-05-09"), value: 188.65), + SingleValueData(time: .string("2019-05-10"), value: 188.34), + SingleValueData(time: .string("2019-05-13"), value: 181.54), + SingleValueData(time: .string("2019-05-14"), value: 180.73), + SingleValueData(time: .string("2019-05-15"), value: 186.27), + SingleValueData(time: .string("2019-05-16"), value: 186.99), + SingleValueData(time: .string("2019-05-17"), value: 185.30), + SingleValueData(time: .string("2019-05-20"), value: 182.72), + SingleValueData(time: .string("2019-05-21"), value: 184.82), + SingleValueData(time: .string("2019-05-22"), value: 185.32), + SingleValueData(time: .string("2019-05-23"), value: 180.87), + SingleValueData(time: .string("2019-05-24"), value: 181.06), + SingleValueData(time: .string("2019-05-28"), value: 183.39) ] series.setData(data: data) self.series = series diff --git a/Example/LightweightCharts/Example/RangeSwitcherViewController.swift b/Example/LightweightCharts/Example/RangeSwitcherViewController.swift index 5d9575e..a5b6659 100644 --- a/Example/LightweightCharts/Example/RangeSwitcherViewController.swift +++ b/Example/LightweightCharts/Example/RangeSwitcherViewController.swift @@ -18,7 +18,7 @@ class RangeSwitcherViewController: UIViewController { } } - var data: [LineData] { + var data: [SingleValueData] { switch self { case .day: return Self.dayData case .week: return Self.weekData @@ -120,479 +120,479 @@ class RangeSwitcherViewController: UIViewController { extension RangeSwitcherViewController.Interval { private static let dayData = [ - LineData(time: .string("2018-10-19"), value: 26.19), - LineData(time: .string("2018-10-22"), value: 25.87), - LineData(time: .string("2018-10-23"), value: 25.83), - LineData(time: .string("2018-10-24"), value: 25.78), - LineData(time: .string("2018-10-25"), value: 25.82), - LineData(time: .string("2018-10-26"), value: 25.81), - LineData(time: .string("2018-10-29"), value: 25.82), - LineData(time: .string("2018-10-30"), value: 25.71), - LineData(time: .string("2018-10-31"), value: 25.82), - LineData(time: .string("2018-11-01"), value: 25.72), - LineData(time: .string("2018-11-02"), value: 25.74), - LineData(time: .string("2018-11-05"), value: 25.81), - LineData(time: .string("2018-11-06"), value: 25.75), - LineData(time: .string("2018-11-07"), value: 25.73), - LineData(time: .string("2018-11-08"), value: 25.75), - LineData(time: .string("2018-11-09"), value: 25.75), - LineData(time: .string("2018-11-12"), value: 25.76), - LineData(time: .string("2018-11-13"), value: 25.80), - LineData(time: .string("2018-11-14"), value: 25.77), - LineData(time: .string("2018-11-15"), value: 25.75), - LineData(time: .string("2018-11-16"), value: 25.75), - LineData(time: .string("2018-11-19"), value: 25.75), - LineData(time: .string("2018-11-20"), value: 25.72), - LineData(time: .string("2018-11-21"), value: 25.78), - LineData(time: .string("2018-11-23"), value: 25.72), - LineData(time: .string("2018-11-26"), value: 25.78), - LineData(time: .string("2018-11-27"), value: 25.85), - LineData(time: .string("2018-11-28"), value: 25.85), - LineData(time: .string("2018-11-29"), value: 25.55), - LineData(time: .string("2018-11-30"), value: 25.41), - LineData(time: .string("2018-12-03"), value: 25.41), - LineData(time: .string("2018-12-04"), value: 25.42), - LineData(time: .string("2018-12-06"), value: 25.33), - LineData(time: .string("2018-12-07"), value: 25.39), - LineData(time: .string("2018-12-10"), value: 25.32), - LineData(time: .string("2018-12-11"), value: 25.48), - LineData(time: .string("2018-12-12"), value: 25.39), - LineData(time: .string("2018-12-13"), value: 25.45), - LineData(time: .string("2018-12-14"), value: 25.52), - LineData(time: .string("2018-12-17"), value: 25.38), - LineData(time: .string("2018-12-18"), value: 25.36), - LineData(time: .string("2018-12-19"), value: 25.65), - LineData(time: .string("2018-12-20"), value: 25.70), - LineData(time: .string("2018-12-21"), value: 25.66), - LineData(time: .string("2018-12-24"), value: 25.66), - LineData(time: .string("2018-12-26"), value: 25.65), - LineData(time: .string("2018-12-27"), value: 25.66), - LineData(time: .string("2018-12-28"), value: 25.68), - LineData(time: .string("2018-12-31"), value: 25.77), - LineData(time: .string("2019-01-02"), value: 25.72), - LineData(time: .string("2019-01-03"), value: 25.69), - LineData(time: .string("2019-01-04"), value: 25.71), - LineData(time: .string("2019-01-07"), value: 25.72), - LineData(time: .string("2019-01-08"), value: 25.72), - LineData(time: .string("2019-01-09"), value: 25.66), - LineData(time: .string("2019-01-10"), value: 25.85), - LineData(time: .string("2019-01-11"), value: 25.92), - LineData(time: .string("2019-01-14"), value: 25.94), - LineData(time: .string("2019-01-15"), value: 25.95), - LineData(time: .string("2019-01-16"), value: 26.00), - LineData(time: .string("2019-01-17"), value: 25.99), - LineData(time: .string("2019-01-18"), value: 25.60), - LineData(time: .string("2019-01-22"), value: 25.81), - LineData(time: .string("2019-01-23"), value: 25.70), - LineData(time: .string("2019-01-24"), value: 25.74), - LineData(time: .string("2019-01-25"), value: 25.80), - LineData(time: .string("2019-01-28"), value: 25.83), - LineData(time: .string("2019-01-29"), value: 25.70), - LineData(time: .string("2019-01-30"), value: 25.78), - LineData(time: .string("2019-01-31"), value: 25.35), - LineData(time: .string("2019-02-01"), value: 25.60), - LineData(time: .string("2019-02-04"), value: 25.65), - LineData(time: .string("2019-02-05"), value: 25.73), - LineData(time: .string("2019-02-06"), value: 25.71), - LineData(time: .string("2019-02-07"), value: 25.71), - LineData(time: .string("2019-02-08"), value: 25.72), - LineData(time: .string("2019-02-11"), value: 25.76), - LineData(time: .string("2019-02-12"), value: 25.84), - LineData(time: .string("2019-02-13"), value: 25.85), - LineData(time: .string("2019-02-14"), value: 25.87), - LineData(time: .string("2019-02-15"), value: 25.89), - LineData(time: .string("2019-02-19"), value: 25.90), - LineData(time: .string("2019-02-20"), value: 25.92), - LineData(time: .string("2019-02-21"), value: 25.96), - LineData(time: .string("2019-02-22"), value: 26.00), - LineData(time: .string("2019-02-25"), value: 25.93), - LineData(time: .string("2019-02-26"), value: 25.92), - LineData(time: .string("2019-02-27"), value: 25.67), - LineData(time: .string("2019-02-28"), value: 25.79), - LineData(time: .string("2019-03-01"), value: 25.86), - LineData(time: .string("2019-03-04"), value: 25.94), - LineData(time: .string("2019-03-05"), value: 26.02), - LineData(time: .string("2019-03-06"), value: 25.95), - LineData(time: .string("2019-03-07"), value: 25.89), - LineData(time: .string("2019-03-08"), value: 25.94), - LineData(time: .string("2019-03-11"), value: 25.91), - LineData(time: .string("2019-03-12"), value: 25.92), - LineData(time: .string("2019-03-13"), value: 26.00), - LineData(time: .string("2019-03-14"), value: 26.05), - LineData(time: .string("2019-03-15"), value: 26.11), - LineData(time: .string("2019-03-18"), value: 26.10), - LineData(time: .string("2019-03-19"), value: 25.98), - LineData(time: .string("2019-03-20"), value: 26.11), - LineData(time: .string("2019-03-21"), value: 26.12), - LineData(time: .string("2019-03-22"), value: 25.88), - LineData(time: .string("2019-03-25"), value: 25.85), - LineData(time: .string("2019-03-26"), value: 25.72), - LineData(time: .string("2019-03-27"), value: 25.73), - LineData(time: .string("2019-03-28"), value: 25.80), - LineData(time: .string("2019-03-29"), value: 25.77), - LineData(time: .string("2019-04-01"), value: 26.06), - LineData(time: .string("2019-04-02"), value: 25.93), - LineData(time: .string("2019-04-03"), value: 25.95), - LineData(time: .string("2019-04-04"), value: 26.06), - LineData(time: .string("2019-04-05"), value: 26.16), - LineData(time: .string("2019-04-08"), value: 26.12), - LineData(time: .string("2019-04-09"), value: 26.07), - LineData(time: .string("2019-04-10"), value: 26.13), - LineData(time: .string("2019-04-11"), value: 26.04), - LineData(time: .string("2019-04-12"), value: 26.04), - LineData(time: .string("2019-04-15"), value: 26.05), - LineData(time: .string("2019-04-16"), value: 26.01), - LineData(time: .string("2019-04-17"), value: 26.09), - LineData(time: .string("2019-04-18"), value: 26.00), - LineData(time: .string("2019-04-22"), value: 26.00), - LineData(time: .string("2019-04-23"), value: 26.06), - LineData(time: .string("2019-04-24"), value: 26.00), - LineData(time: .string("2019-04-25"), value: 25.81), - LineData(time: .string("2019-04-26"), value: 25.88), - LineData(time: .string("2019-04-29"), value: 25.91), - LineData(time: .string("2019-04-30"), value: 25.90), - LineData(time: .string("2019-05-01"), value: 26.02), - LineData(time: .string("2019-05-02"), value: 25.97), - LineData(time: .string("2019-05-03"), value: 26.02), - LineData(time: .string("2019-05-06"), value: 26.03), - LineData(time: .string("2019-05-07"), value: 26.04), - LineData(time: .string("2019-05-08"), value: 26.05), - LineData(time: .string("2019-05-09"), value: 26.05), - LineData(time: .string("2019-05-10"), value: 26.08), - LineData(time: .string("2019-05-13"), value: 26.05), - LineData(time: .string("2019-05-14"), value: 26.01), - LineData(time: .string("2019-05-15"), value: 26.03), - LineData(time: .string("2019-05-16"), value: 26.14), - LineData(time: .string("2019-05-17"), value: 26.09), - LineData(time: .string("2019-05-20"), value: 26.01), - LineData(time: .string("2019-05-21"), value: 26.12), - LineData(time: .string("2019-05-22"), value: 26.15), - LineData(time: .string("2019-05-23"), value: 26.18), - LineData(time: .string("2019-05-24"), value: 26.16), - LineData(time: .string("2019-05-28"), value: 26.23) + SingleValueData(time: .string("2018-10-19"), value: 26.19), + SingleValueData(time: .string("2018-10-22"), value: 25.87), + SingleValueData(time: .string("2018-10-23"), value: 25.83), + SingleValueData(time: .string("2018-10-24"), value: 25.78), + SingleValueData(time: .string("2018-10-25"), value: 25.82), + SingleValueData(time: .string("2018-10-26"), value: 25.81), + SingleValueData(time: .string("2018-10-29"), value: 25.82), + SingleValueData(time: .string("2018-10-30"), value: 25.71), + SingleValueData(time: .string("2018-10-31"), value: 25.82), + SingleValueData(time: .string("2018-11-01"), value: 25.72), + SingleValueData(time: .string("2018-11-02"), value: 25.74), + SingleValueData(time: .string("2018-11-05"), value: 25.81), + SingleValueData(time: .string("2018-11-06"), value: 25.75), + SingleValueData(time: .string("2018-11-07"), value: 25.73), + SingleValueData(time: .string("2018-11-08"), value: 25.75), + SingleValueData(time: .string("2018-11-09"), value: 25.75), + SingleValueData(time: .string("2018-11-12"), value: 25.76), + SingleValueData(time: .string("2018-11-13"), value: 25.80), + SingleValueData(time: .string("2018-11-14"), value: 25.77), + SingleValueData(time: .string("2018-11-15"), value: 25.75), + SingleValueData(time: .string("2018-11-16"), value: 25.75), + SingleValueData(time: .string("2018-11-19"), value: 25.75), + SingleValueData(time: .string("2018-11-20"), value: 25.72), + SingleValueData(time: .string("2018-11-21"), value: 25.78), + SingleValueData(time: .string("2018-11-23"), value: 25.72), + SingleValueData(time: .string("2018-11-26"), value: 25.78), + SingleValueData(time: .string("2018-11-27"), value: 25.85), + SingleValueData(time: .string("2018-11-28"), value: 25.85), + SingleValueData(time: .string("2018-11-29"), value: 25.55), + SingleValueData(time: .string("2018-11-30"), value: 25.41), + SingleValueData(time: .string("2018-12-03"), value: 25.41), + SingleValueData(time: .string("2018-12-04"), value: 25.42), + SingleValueData(time: .string("2018-12-06"), value: 25.33), + SingleValueData(time: .string("2018-12-07"), value: 25.39), + SingleValueData(time: .string("2018-12-10"), value: 25.32), + SingleValueData(time: .string("2018-12-11"), value: 25.48), + SingleValueData(time: .string("2018-12-12"), value: 25.39), + SingleValueData(time: .string("2018-12-13"), value: 25.45), + SingleValueData(time: .string("2018-12-14"), value: 25.52), + SingleValueData(time: .string("2018-12-17"), value: 25.38), + SingleValueData(time: .string("2018-12-18"), value: 25.36), + SingleValueData(time: .string("2018-12-19"), value: 25.65), + SingleValueData(time: .string("2018-12-20"), value: 25.70), + SingleValueData(time: .string("2018-12-21"), value: 25.66), + SingleValueData(time: .string("2018-12-24"), value: 25.66), + SingleValueData(time: .string("2018-12-26"), value: 25.65), + SingleValueData(time: .string("2018-12-27"), value: 25.66), + SingleValueData(time: .string("2018-12-28"), value: 25.68), + SingleValueData(time: .string("2018-12-31"), value: 25.77), + SingleValueData(time: .string("2019-01-02"), value: 25.72), + SingleValueData(time: .string("2019-01-03"), value: 25.69), + SingleValueData(time: .string("2019-01-04"), value: 25.71), + SingleValueData(time: .string("2019-01-07"), value: 25.72), + SingleValueData(time: .string("2019-01-08"), value: 25.72), + SingleValueData(time: .string("2019-01-09"), value: 25.66), + SingleValueData(time: .string("2019-01-10"), value: 25.85), + SingleValueData(time: .string("2019-01-11"), value: 25.92), + SingleValueData(time: .string("2019-01-14"), value: 25.94), + SingleValueData(time: .string("2019-01-15"), value: 25.95), + SingleValueData(time: .string("2019-01-16"), value: 26.00), + SingleValueData(time: .string("2019-01-17"), value: 25.99), + SingleValueData(time: .string("2019-01-18"), value: 25.60), + SingleValueData(time: .string("2019-01-22"), value: 25.81), + SingleValueData(time: .string("2019-01-23"), value: 25.70), + SingleValueData(time: .string("2019-01-24"), value: 25.74), + SingleValueData(time: .string("2019-01-25"), value: 25.80), + SingleValueData(time: .string("2019-01-28"), value: 25.83), + SingleValueData(time: .string("2019-01-29"), value: 25.70), + SingleValueData(time: .string("2019-01-30"), value: 25.78), + SingleValueData(time: .string("2019-01-31"), value: 25.35), + SingleValueData(time: .string("2019-02-01"), value: 25.60), + SingleValueData(time: .string("2019-02-04"), value: 25.65), + SingleValueData(time: .string("2019-02-05"), value: 25.73), + SingleValueData(time: .string("2019-02-06"), value: 25.71), + SingleValueData(time: .string("2019-02-07"), value: 25.71), + SingleValueData(time: .string("2019-02-08"), value: 25.72), + SingleValueData(time: .string("2019-02-11"), value: 25.76), + SingleValueData(time: .string("2019-02-12"), value: 25.84), + SingleValueData(time: .string("2019-02-13"), value: 25.85), + SingleValueData(time: .string("2019-02-14"), value: 25.87), + SingleValueData(time: .string("2019-02-15"), value: 25.89), + SingleValueData(time: .string("2019-02-19"), value: 25.90), + SingleValueData(time: .string("2019-02-20"), value: 25.92), + SingleValueData(time: .string("2019-02-21"), value: 25.96), + SingleValueData(time: .string("2019-02-22"), value: 26.00), + SingleValueData(time: .string("2019-02-25"), value: 25.93), + SingleValueData(time: .string("2019-02-26"), value: 25.92), + SingleValueData(time: .string("2019-02-27"), value: 25.67), + SingleValueData(time: .string("2019-02-28"), value: 25.79), + SingleValueData(time: .string("2019-03-01"), value: 25.86), + SingleValueData(time: .string("2019-03-04"), value: 25.94), + SingleValueData(time: .string("2019-03-05"), value: 26.02), + SingleValueData(time: .string("2019-03-06"), value: 25.95), + SingleValueData(time: .string("2019-03-07"), value: 25.89), + SingleValueData(time: .string("2019-03-08"), value: 25.94), + SingleValueData(time: .string("2019-03-11"), value: 25.91), + SingleValueData(time: .string("2019-03-12"), value: 25.92), + SingleValueData(time: .string("2019-03-13"), value: 26.00), + SingleValueData(time: .string("2019-03-14"), value: 26.05), + SingleValueData(time: .string("2019-03-15"), value: 26.11), + SingleValueData(time: .string("2019-03-18"), value: 26.10), + SingleValueData(time: .string("2019-03-19"), value: 25.98), + SingleValueData(time: .string("2019-03-20"), value: 26.11), + SingleValueData(time: .string("2019-03-21"), value: 26.12), + SingleValueData(time: .string("2019-03-22"), value: 25.88), + SingleValueData(time: .string("2019-03-25"), value: 25.85), + SingleValueData(time: .string("2019-03-26"), value: 25.72), + SingleValueData(time: .string("2019-03-27"), value: 25.73), + SingleValueData(time: .string("2019-03-28"), value: 25.80), + SingleValueData(time: .string("2019-03-29"), value: 25.77), + SingleValueData(time: .string("2019-04-01"), value: 26.06), + SingleValueData(time: .string("2019-04-02"), value: 25.93), + SingleValueData(time: .string("2019-04-03"), value: 25.95), + SingleValueData(time: .string("2019-04-04"), value: 26.06), + SingleValueData(time: .string("2019-04-05"), value: 26.16), + SingleValueData(time: .string("2019-04-08"), value: 26.12), + SingleValueData(time: .string("2019-04-09"), value: 26.07), + SingleValueData(time: .string("2019-04-10"), value: 26.13), + SingleValueData(time: .string("2019-04-11"), value: 26.04), + SingleValueData(time: .string("2019-04-12"), value: 26.04), + SingleValueData(time: .string("2019-04-15"), value: 26.05), + SingleValueData(time: .string("2019-04-16"), value: 26.01), + SingleValueData(time: .string("2019-04-17"), value: 26.09), + SingleValueData(time: .string("2019-04-18"), value: 26.00), + SingleValueData(time: .string("2019-04-22"), value: 26.00), + SingleValueData(time: .string("2019-04-23"), value: 26.06), + SingleValueData(time: .string("2019-04-24"), value: 26.00), + SingleValueData(time: .string("2019-04-25"), value: 25.81), + SingleValueData(time: .string("2019-04-26"), value: 25.88), + SingleValueData(time: .string("2019-04-29"), value: 25.91), + SingleValueData(time: .string("2019-04-30"), value: 25.90), + SingleValueData(time: .string("2019-05-01"), value: 26.02), + SingleValueData(time: .string("2019-05-02"), value: 25.97), + SingleValueData(time: .string("2019-05-03"), value: 26.02), + SingleValueData(time: .string("2019-05-06"), value: 26.03), + SingleValueData(time: .string("2019-05-07"), value: 26.04), + SingleValueData(time: .string("2019-05-08"), value: 26.05), + SingleValueData(time: .string("2019-05-09"), value: 26.05), + SingleValueData(time: .string("2019-05-10"), value: 26.08), + SingleValueData(time: .string("2019-05-13"), value: 26.05), + SingleValueData(time: .string("2019-05-14"), value: 26.01), + SingleValueData(time: .string("2019-05-15"), value: 26.03), + SingleValueData(time: .string("2019-05-16"), value: 26.14), + SingleValueData(time: .string("2019-05-17"), value: 26.09), + SingleValueData(time: .string("2019-05-20"), value: 26.01), + SingleValueData(time: .string("2019-05-21"), value: 26.12), + SingleValueData(time: .string("2019-05-22"), value: 26.15), + SingleValueData(time: .string("2019-05-23"), value: 26.18), + SingleValueData(time: .string("2019-05-24"), value: 26.16), + SingleValueData(time: .string("2019-05-28"), value: 26.23) ] private static let weekData = [ - LineData(time: .string("2016-07-18"), value: 26.10), - LineData(time: .string("2016-07-25"), value: 26.19), - LineData(time: .string("2016-08-01"), value: 26.24), - LineData(time: .string("2016-08-08"), value: 26.22), - LineData(time: .string("2016-08-15"), value: 25.98), - LineData(time: .string("2016-08-22"), value: 25.85), - LineData(time: .string("2016-08-29"), value: 25.98), - LineData(time: .string("2016-09-05"), value: 25.71), - LineData(time: .string("2016-09-12"), value: 25.84), - LineData(time: .string("2016-09-19"), value: 25.89), - LineData(time: .string("2016-09-26"), value: 25.65), - LineData(time: .string("2016-10-03"), value: 25.69), - LineData(time: .string("2016-10-10"), value: 25.67), - LineData(time: .string("2016-10-17"), value: 26.11), - LineData(time: .string("2016-10-24"), value: 25.80), - LineData(time: .string("2016-10-31"), value: 25.70), - LineData(time: .string("2016-11-07"), value: 25.40), - LineData(time: .string("2016-11-14"), value: 25.32), - LineData(time: .string("2016-11-21"), value: 25.48), - LineData(time: .string("2016-11-28"), value: 25.08), - LineData(time: .string("2016-12-05"), value: 25.06), - LineData(time: .string("2016-12-12"), value: 25.11), - LineData(time: .string("2016-12-19"), value: 25.34), - LineData(time: .string("2016-12-26"), value: 25.20), - LineData(time: .string("2017-01-02"), value: 25.33), - LineData(time: .string("2017-01-09"), value: 25.56), - LineData(time: .string("2017-01-16"), value: 25.32), - LineData(time: .string("2017-01-23"), value: 25.71), - LineData(time: .string("2017-01-30"), value: 25.85), - LineData(time: .string("2017-02-06"), value: 25.77), - LineData(time: .string("2017-02-13"), value: 25.94), - LineData(time: .string("2017-02-20"), value: 25.67), - LineData(time: .string("2017-02-27"), value: 25.60), - LineData(time: .string("2017-03-06"), value: 25.54), - LineData(time: .string("2017-03-13"), value: 25.84), - LineData(time: .string("2017-03-20"), value: 25.96), - LineData(time: .string("2017-03-27"), value: 25.90), - LineData(time: .string("2017-04-03"), value: 25.97), - LineData(time: .string("2017-04-10"), value: 26.00), - LineData(time: .string("2017-04-17"), value: 26.13), - LineData(time: .string("2017-04-24"), value: 26.02), - LineData(time: .string("2017-05-01"), value: 26.30), - LineData(time: .string("2017-05-08"), value: 26.27), - LineData(time: .string("2017-05-15"), value: 26.24), - LineData(time: .string("2017-05-22"), value: 26.02), - LineData(time: .string("2017-05-29"), value: 26.20), - LineData(time: .string("2017-06-05"), value: 26.12), - LineData(time: .string("2017-06-12"), value: 26.20), - LineData(time: .string("2017-06-19"), value: 26.46), - LineData(time: .string("2017-06-26"), value: 26.39), - LineData(time: .string("2017-07-03"), value: 26.52), - LineData(time: .string("2017-07-10"), value: 26.57), - LineData(time: .string("2017-07-17"), value: 26.65), - LineData(time: .string("2017-07-24"), value: 26.45), - LineData(time: .string("2017-07-31"), value: 26.37), - LineData(time: .string("2017-08-07"), value: 26.13), - LineData(time: .string("2017-08-14"), value: 26.21), - LineData(time: .string("2017-08-21"), value: 26.31), - LineData(time: .string("2017-08-28"), value: 26.33), - LineData(time: .string("2017-09-04"), value: 26.38), - LineData(time: .string("2017-09-11"), value: 26.38), - LineData(time: .string("2017-09-18"), value: 26.50), - LineData(time: .string("2017-09-25"), value: 26.39), - LineData(time: .string("2017-10-02"), value: 25.95), - LineData(time: .string("2017-10-09"), value: 26.15), - LineData(time: .string("2017-10-16"), value: 26.43), - LineData(time: .string("2017-10-23"), value: 26.22), - LineData(time: .string("2017-10-30"), value: 26.14), - LineData(time: .string("2017-11-06"), value: 26.08), - LineData(time: .string("2017-11-13"), value: 26.27), - LineData(time: .string("2017-11-20"), value: 26.30), - LineData(time: .string("2017-11-27"), value: 25.92), - LineData(time: .string("2017-12-04"), value: 26.10), - LineData(time: .string("2017-12-11"), value: 25.88), - LineData(time: .string("2017-12-18"), value: 25.82), - LineData(time: .string("2017-12-25"), value: 25.82), - LineData(time: .string("2018-01-01"), value: 25.81), - LineData(time: .string("2018-01-08"), value: 25.95), - LineData(time: .string("2018-01-15"), value: 26.03), - LineData(time: .string("2018-01-22"), value: 26.04), - LineData(time: .string("2018-01-29"), value: 25.96), - LineData(time: .string("2018-02-05"), value: 25.99), - LineData(time: .string("2018-02-12"), value: 26.00), - LineData(time: .string("2018-02-19"), value: 26.06), - LineData(time: .string("2018-02-26"), value: 25.77), - LineData(time: .string("2018-03-05"), value: 25.81), - LineData(time: .string("2018-03-12"), value: 25.88), - LineData(time: .string("2018-03-19"), value: 25.72), - LineData(time: .string("2018-03-26"), value: 25.75), - LineData(time: .string("2018-04-02"), value: 25.70), - LineData(time: .string("2018-04-09"), value: 25.73), - LineData(time: .string("2018-04-16"), value: 25.74), - LineData(time: .string("2018-04-23"), value: 25.69), - LineData(time: .string("2018-04-30"), value: 25.76), - LineData(time: .string("2018-05-07"), value: 25.89), - LineData(time: .string("2018-05-14"), value: 25.89), - LineData(time: .string("2018-05-21"), value: 26.00), - LineData(time: .string("2018-05-28"), value: 25.79), - LineData(time: .string("2018-06-04"), value: 26.11), - LineData(time: .string("2018-06-11"), value: 26.43), - LineData(time: .string("2018-06-18"), value: 26.30), - LineData(time: .string("2018-06-25"), value: 26.58), - LineData(time: .string("2018-07-02"), value: 26.33), - LineData(time: .string("2018-07-09"), value: 26.33), - LineData(time: .string("2018-07-16"), value: 26.32), - LineData(time: .string("2018-07-23"), value: 26.20), - LineData(time: .string("2018-07-30"), value: 26.03), - LineData(time: .string("2018-08-06"), value: 26.15), - LineData(time: .string("2018-08-13"), value: 26.17), - LineData(time: .string("2018-08-20"), value: 26.28), - LineData(time: .string("2018-08-27"), value: 25.86), - LineData(time: .string("2018-09-03"), value: 25.69), - LineData(time: .string("2018-09-10"), value: 25.69), - LineData(time: .string("2018-09-17"), value: 25.64), - LineData(time: .string("2018-09-24"), value: 25.67), - LineData(time: .string("2018-10-01"), value: 25.55), - LineData(time: .string("2018-10-08"), value: 25.59), - LineData(time: .string("2018-10-15"), value: 26.19), - LineData(time: .string("2018-10-22"), value: 25.81), - LineData(time: .string("2018-10-29"), value: 25.74), - LineData(time: .string("2018-11-05"), value: 25.75), - LineData(time: .string("2018-11-12"), value: 25.75), - LineData(time: .string("2018-11-19"), value: 25.72), - LineData(time: .string("2018-11-26"), value: 25.41), - LineData(time: .string("2018-12-03"), value: 25.39), - LineData(time: .string("2018-12-10"), value: 25.52), - LineData(time: .string("2018-12-17"), value: 25.66), - LineData(time: .string("2018-12-24"), value: 25.68), - LineData(time: .string("2018-12-31"), value: 25.71), - LineData(time: .string("2019-01-07"), value: 25.92), - LineData(time: .string("2019-01-14"), value: 25.60), - LineData(time: .string("2019-01-21"), value: 25.80), - LineData(time: .string("2019-01-28"), value: 25.60), - LineData(time: .string("2019-02-04"), value: 25.72), - LineData(time: .string("2019-02-11"), value: 25.89), - LineData(time: .string("2019-02-18"), value: 26.00), - LineData(time: .string("2019-02-25"), value: 25.86), - LineData(time: .string("2019-03-04"), value: 25.94), - LineData(time: .string("2019-03-11"), value: 26.11), - LineData(time: .string("2019-03-18"), value: 25.88), - LineData(time: .string("2019-03-25"), value: 25.77), - LineData(time: .string("2019-04-01"), value: 26.16), - LineData(time: .string("2019-04-08"), value: 26.04), - LineData(time: .string("2019-04-15"), value: 26.00), - LineData(time: .string("2019-04-22"), value: 25.88), - LineData(time: .string("2019-04-29"), value: 26.02), - LineData(time: .string("2019-05-06"), value: 26.08), - LineData(time: .string("2019-05-13"), value: 26.09), - LineData(time: .string("2019-05-20"), value: 26.16), - LineData(time: .string("2019-05-27"), value: 26.23) + SingleValueData(time: .string("2016-07-18"), value: 26.10), + SingleValueData(time: .string("2016-07-25"), value: 26.19), + SingleValueData(time: .string("2016-08-01"), value: 26.24), + SingleValueData(time: .string("2016-08-08"), value: 26.22), + SingleValueData(time: .string("2016-08-15"), value: 25.98), + SingleValueData(time: .string("2016-08-22"), value: 25.85), + SingleValueData(time: .string("2016-08-29"), value: 25.98), + SingleValueData(time: .string("2016-09-05"), value: 25.71), + SingleValueData(time: .string("2016-09-12"), value: 25.84), + SingleValueData(time: .string("2016-09-19"), value: 25.89), + SingleValueData(time: .string("2016-09-26"), value: 25.65), + SingleValueData(time: .string("2016-10-03"), value: 25.69), + SingleValueData(time: .string("2016-10-10"), value: 25.67), + SingleValueData(time: .string("2016-10-17"), value: 26.11), + SingleValueData(time: .string("2016-10-24"), value: 25.80), + SingleValueData(time: .string("2016-10-31"), value: 25.70), + SingleValueData(time: .string("2016-11-07"), value: 25.40), + SingleValueData(time: .string("2016-11-14"), value: 25.32), + SingleValueData(time: .string("2016-11-21"), value: 25.48), + SingleValueData(time: .string("2016-11-28"), value: 25.08), + SingleValueData(time: .string("2016-12-05"), value: 25.06), + SingleValueData(time: .string("2016-12-12"), value: 25.11), + SingleValueData(time: .string("2016-12-19"), value: 25.34), + SingleValueData(time: .string("2016-12-26"), value: 25.20), + SingleValueData(time: .string("2017-01-02"), value: 25.33), + SingleValueData(time: .string("2017-01-09"), value: 25.56), + SingleValueData(time: .string("2017-01-16"), value: 25.32), + SingleValueData(time: .string("2017-01-23"), value: 25.71), + SingleValueData(time: .string("2017-01-30"), value: 25.85), + SingleValueData(time: .string("2017-02-06"), value: 25.77), + SingleValueData(time: .string("2017-02-13"), value: 25.94), + SingleValueData(time: .string("2017-02-20"), value: 25.67), + SingleValueData(time: .string("2017-02-27"), value: 25.60), + SingleValueData(time: .string("2017-03-06"), value: 25.54), + SingleValueData(time: .string("2017-03-13"), value: 25.84), + SingleValueData(time: .string("2017-03-20"), value: 25.96), + SingleValueData(time: .string("2017-03-27"), value: 25.90), + SingleValueData(time: .string("2017-04-03"), value: 25.97), + SingleValueData(time: .string("2017-04-10"), value: 26.00), + SingleValueData(time: .string("2017-04-17"), value: 26.13), + SingleValueData(time: .string("2017-04-24"), value: 26.02), + SingleValueData(time: .string("2017-05-01"), value: 26.30), + SingleValueData(time: .string("2017-05-08"), value: 26.27), + SingleValueData(time: .string("2017-05-15"), value: 26.24), + SingleValueData(time: .string("2017-05-22"), value: 26.02), + SingleValueData(time: .string("2017-05-29"), value: 26.20), + SingleValueData(time: .string("2017-06-05"), value: 26.12), + SingleValueData(time: .string("2017-06-12"), value: 26.20), + SingleValueData(time: .string("2017-06-19"), value: 26.46), + SingleValueData(time: .string("2017-06-26"), value: 26.39), + SingleValueData(time: .string("2017-07-03"), value: 26.52), + SingleValueData(time: .string("2017-07-10"), value: 26.57), + SingleValueData(time: .string("2017-07-17"), value: 26.65), + SingleValueData(time: .string("2017-07-24"), value: 26.45), + SingleValueData(time: .string("2017-07-31"), value: 26.37), + SingleValueData(time: .string("2017-08-07"), value: 26.13), + SingleValueData(time: .string("2017-08-14"), value: 26.21), + SingleValueData(time: .string("2017-08-21"), value: 26.31), + SingleValueData(time: .string("2017-08-28"), value: 26.33), + SingleValueData(time: .string("2017-09-04"), value: 26.38), + SingleValueData(time: .string("2017-09-11"), value: 26.38), + SingleValueData(time: .string("2017-09-18"), value: 26.50), + SingleValueData(time: .string("2017-09-25"), value: 26.39), + SingleValueData(time: .string("2017-10-02"), value: 25.95), + SingleValueData(time: .string("2017-10-09"), value: 26.15), + SingleValueData(time: .string("2017-10-16"), value: 26.43), + SingleValueData(time: .string("2017-10-23"), value: 26.22), + SingleValueData(time: .string("2017-10-30"), value: 26.14), + SingleValueData(time: .string("2017-11-06"), value: 26.08), + SingleValueData(time: .string("2017-11-13"), value: 26.27), + SingleValueData(time: .string("2017-11-20"), value: 26.30), + SingleValueData(time: .string("2017-11-27"), value: 25.92), + SingleValueData(time: .string("2017-12-04"), value: 26.10), + SingleValueData(time: .string("2017-12-11"), value: 25.88), + SingleValueData(time: .string("2017-12-18"), value: 25.82), + SingleValueData(time: .string("2017-12-25"), value: 25.82), + SingleValueData(time: .string("2018-01-01"), value: 25.81), + SingleValueData(time: .string("2018-01-08"), value: 25.95), + SingleValueData(time: .string("2018-01-15"), value: 26.03), + SingleValueData(time: .string("2018-01-22"), value: 26.04), + SingleValueData(time: .string("2018-01-29"), value: 25.96), + SingleValueData(time: .string("2018-02-05"), value: 25.99), + SingleValueData(time: .string("2018-02-12"), value: 26.00), + SingleValueData(time: .string("2018-02-19"), value: 26.06), + SingleValueData(time: .string("2018-02-26"), value: 25.77), + SingleValueData(time: .string("2018-03-05"), value: 25.81), + SingleValueData(time: .string("2018-03-12"), value: 25.88), + SingleValueData(time: .string("2018-03-19"), value: 25.72), + SingleValueData(time: .string("2018-03-26"), value: 25.75), + SingleValueData(time: .string("2018-04-02"), value: 25.70), + SingleValueData(time: .string("2018-04-09"), value: 25.73), + SingleValueData(time: .string("2018-04-16"), value: 25.74), + SingleValueData(time: .string("2018-04-23"), value: 25.69), + SingleValueData(time: .string("2018-04-30"), value: 25.76), + SingleValueData(time: .string("2018-05-07"), value: 25.89), + SingleValueData(time: .string("2018-05-14"), value: 25.89), + SingleValueData(time: .string("2018-05-21"), value: 26.00), + SingleValueData(time: .string("2018-05-28"), value: 25.79), + SingleValueData(time: .string("2018-06-04"), value: 26.11), + SingleValueData(time: .string("2018-06-11"), value: 26.43), + SingleValueData(time: .string("2018-06-18"), value: 26.30), + SingleValueData(time: .string("2018-06-25"), value: 26.58), + SingleValueData(time: .string("2018-07-02"), value: 26.33), + SingleValueData(time: .string("2018-07-09"), value: 26.33), + SingleValueData(time: .string("2018-07-16"), value: 26.32), + SingleValueData(time: .string("2018-07-23"), value: 26.20), + SingleValueData(time: .string("2018-07-30"), value: 26.03), + SingleValueData(time: .string("2018-08-06"), value: 26.15), + SingleValueData(time: .string("2018-08-13"), value: 26.17), + SingleValueData(time: .string("2018-08-20"), value: 26.28), + SingleValueData(time: .string("2018-08-27"), value: 25.86), + SingleValueData(time: .string("2018-09-03"), value: 25.69), + SingleValueData(time: .string("2018-09-10"), value: 25.69), + SingleValueData(time: .string("2018-09-17"), value: 25.64), + SingleValueData(time: .string("2018-09-24"), value: 25.67), + SingleValueData(time: .string("2018-10-01"), value: 25.55), + SingleValueData(time: .string("2018-10-08"), value: 25.59), + SingleValueData(time: .string("2018-10-15"), value: 26.19), + SingleValueData(time: .string("2018-10-22"), value: 25.81), + SingleValueData(time: .string("2018-10-29"), value: 25.74), + SingleValueData(time: .string("2018-11-05"), value: 25.75), + SingleValueData(time: .string("2018-11-12"), value: 25.75), + SingleValueData(time: .string("2018-11-19"), value: 25.72), + SingleValueData(time: .string("2018-11-26"), value: 25.41), + SingleValueData(time: .string("2018-12-03"), value: 25.39), + SingleValueData(time: .string("2018-12-10"), value: 25.52), + SingleValueData(time: .string("2018-12-17"), value: 25.66), + SingleValueData(time: .string("2018-12-24"), value: 25.68), + SingleValueData(time: .string("2018-12-31"), value: 25.71), + SingleValueData(time: .string("2019-01-07"), value: 25.92), + SingleValueData(time: .string("2019-01-14"), value: 25.60), + SingleValueData(time: .string("2019-01-21"), value: 25.80), + SingleValueData(time: .string("2019-01-28"), value: 25.60), + SingleValueData(time: .string("2019-02-04"), value: 25.72), + SingleValueData(time: .string("2019-02-11"), value: 25.89), + SingleValueData(time: .string("2019-02-18"), value: 26.00), + SingleValueData(time: .string("2019-02-25"), value: 25.86), + SingleValueData(time: .string("2019-03-04"), value: 25.94), + SingleValueData(time: .string("2019-03-11"), value: 26.11), + SingleValueData(time: .string("2019-03-18"), value: 25.88), + SingleValueData(time: .string("2019-03-25"), value: 25.77), + SingleValueData(time: .string("2019-04-01"), value: 26.16), + SingleValueData(time: .string("2019-04-08"), value: 26.04), + SingleValueData(time: .string("2019-04-15"), value: 26.00), + SingleValueData(time: .string("2019-04-22"), value: 25.88), + SingleValueData(time: .string("2019-04-29"), value: 26.02), + SingleValueData(time: .string("2019-05-06"), value: 26.08), + SingleValueData(time: .string("2019-05-13"), value: 26.09), + SingleValueData(time: .string("2019-05-20"), value: 26.16), + SingleValueData(time: .string("2019-05-27"), value: 26.23) ] private static let monthData = [ - LineData(time: .string("2006-12-01"), value: 25.40), - LineData(time: .string("2007-01-01"), value: 25.50), - LineData(time: .string("2007-02-01"), value: 25.11), - LineData(time: .string("2007-03-01"), value: 25.24), - LineData(time: .string("2007-04-02"), value: 25.34), - LineData(time: .string("2007-05-01"), value: 24.82), - LineData(time: .string("2007-06-01"), value: 23.85), - LineData(time: .string("2007-07-02"), value: 23.24), - LineData(time: .string("2007-08-01"), value: 23.05), - LineData(time: .string("2007-09-03"), value: 22.26), - LineData(time: .string("2007-10-01"), value: 22.52), - LineData(time: .string("2007-11-01"), value: 20.84), - LineData(time: .string("2007-12-03"), value: 20.37), - LineData(time: .string("2008-01-01"), value: 23.90), - LineData(time: .string("2008-02-01"), value: 22.58), - LineData(time: .string("2008-03-03"), value: 21.74), - LineData(time: .string("2008-04-01"), value: 22.50), - LineData(time: .string("2008-05-01"), value: 22.38), - LineData(time: .string("2008-06-02"), value: 20.58), - LineData(time: .string("2008-07-01"), value: 20.60), - LineData(time: .string("2008-08-01"), value: 20.82), - LineData(time: .string("2008-09-01"), value: 17.50), - LineData(time: .string("2008-10-01"), value: 17.70), - LineData(time: .string("2008-11-03"), value: 15.52), - LineData(time: .string("2008-12-01"), value: 18.58), - LineData(time: .string("2009-01-01"), value: 15.40), - LineData(time: .string("2009-02-02"), value: 11.68), - LineData(time: .string("2009-03-02"), value: 14.89), - LineData(time: .string("2009-04-01"), value: 16.24), - LineData(time: .string("2009-05-01"), value: 18.33), - LineData(time: .string("2009-06-01"), value: 18.08), - LineData(time: .string("2009-07-01"), value: 20.07), - LineData(time: .string("2009-08-03"), value: 20.35), - LineData(time: .string("2009-09-01"), value: 21.53), - LineData(time: .string("2009-10-01"), value: 21.48), - LineData(time: .string("2009-11-02"), value: 20.28), - LineData(time: .string("2009-12-01"), value: 21.39), - LineData(time: .string("2010-01-01"), value: 22.00), - LineData(time: .string("2010-02-01"), value: 22.31), - LineData(time: .string("2010-03-01"), value: 22.82), - LineData(time: .string("2010-04-01"), value: 22.58), - LineData(time: .string("2010-05-03"), value: 21.02), - LineData(time: .string("2010-06-01"), value: 21.45), - LineData(time: .string("2010-07-01"), value: 22.42), - LineData(time: .string("2010-08-02"), value: 23.61), - LineData(time: .string("2010-09-01"), value: 24.40), - LineData(time: .string("2010-10-01"), value: 24.46), - LineData(time: .string("2010-11-01"), value: 23.64), - LineData(time: .string("2010-12-01"), value: 22.90), - LineData(time: .string("2011-01-03"), value: 23.73), - LineData(time: .string("2011-02-01"), value: 23.52), - LineData(time: .string("2011-03-01"), value: 24.15), - LineData(time: .string("2011-04-01"), value: 24.37), - LineData(time: .string("2011-05-02"), value: 24.40), - LineData(time: .string("2011-06-01"), value: 24.45), - LineData(time: .string("2011-07-01"), value: 24.24), - LineData(time: .string("2011-08-01"), value: 24.00), - LineData(time: .string("2011-09-01"), value: 22.77), - LineData(time: .string("2011-10-03"), value: 24.21), - LineData(time: .string("2011-11-01"), value: 23.40), - LineData(time: .string("2011-12-01"), value: 23.90), - LineData(time: .string("2012-01-02"), value: 24.84), - LineData(time: .string("2012-02-01"), value: 25.04), - LineData(time: .string("2012-03-01"), value: 24.90), - LineData(time: .string("2012-04-02"), value: 25.06), - LineData(time: .string("2012-05-01"), value: 24.63), - LineData(time: .string("2012-06-01"), value: 25.07), - LineData(time: .string("2012-07-02"), value: 25.30), - LineData(time: .string("2012-08-01"), value: 25.08), - LineData(time: .string("2012-09-03"), value: 25.27), - LineData(time: .string("2012-10-01"), value: 25.39), - LineData(time: .string("2012-11-01"), value: 25.06), - LineData(time: .string("2012-12-03"), value: 25.03), - LineData(time: .string("2013-01-01"), value: 25.26), - LineData(time: .string("2013-02-01"), value: 25.20), - LineData(time: .string("2013-03-01"), value: 25.30), - LineData(time: .string("2013-04-01"), value: 25.38), - LineData(time: .string("2013-05-01"), value: 25.22), - LineData(time: .string("2013-06-03"), value: 24.88), - LineData(time: .string("2013-07-01"), value: 24.98), - LineData(time: .string("2013-08-01"), value: 24.60), - LineData(time: .string("2013-09-02"), value: 24.65), - LineData(time: .string("2013-10-01"), value: 24.62), - LineData(time: .string("2013-11-01"), value: 24.65), - LineData(time: .string("2013-12-02"), value: 24.70), - LineData(time: .string("2014-01-01"), value: 24.98), - LineData(time: .string("2014-02-03"), value: 24.95), - LineData(time: .string("2014-03-03"), value: 25.45), - LineData(time: .string("2014-04-01"), value: 25.40), - LineData(time: .string("2014-05-01"), value: 25.51), - LineData(time: .string("2014-06-02"), value: 25.34), - LineData(time: .string("2014-07-01"), value: 25.30), - LineData(time: .string("2014-08-01"), value: 25.36), - LineData(time: .string("2014-09-01"), value: 25.16), - LineData(time: .string("2014-10-01"), value: 25.53), - LineData(time: .string("2014-11-03"), value: 25.40), - LineData(time: .string("2014-12-01"), value: 25.70), - LineData(time: .string("2015-01-01"), value: 25.95), - LineData(time: .string("2015-02-02"), value: 25.81), - LineData(time: .string("2015-03-02"), value: 25.63), - LineData(time: .string("2015-04-01"), value: 25.39), - LineData(time: .string("2015-05-01"), value: 25.62), - LineData(time: .string("2015-06-01"), value: 25.23), - LineData(time: .string("2015-07-01"), value: 25.47), - LineData(time: .string("2015-08-03"), value: 25.18), - LineData(time: .string("2015-09-01"), value: 25.30), - LineData(time: .string("2015-10-01"), value: 25.68), - LineData(time: .string("2015-11-02"), value: 25.63), - LineData(time: .string("2015-12-01"), value: 25.57), - LineData(time: .string("2016-01-01"), value: 25.55), - LineData(time: .string("2016-02-01"), value: 25.05), - LineData(time: .string("2016-03-01"), value: 25.61), - LineData(time: .string("2016-04-01"), value: 25.91), - LineData(time: .string("2016-05-02"), value: 25.84), - LineData(time: .string("2016-06-01"), value: 25.94), - LineData(time: .string("2016-07-01"), value: 26.19), - LineData(time: .string("2016-08-01"), value: 26.06), - LineData(time: .string("2016-09-01"), value: 25.65), - LineData(time: .string("2016-10-03"), value: 25.80), - LineData(time: .string("2016-11-01"), value: 25.06), - LineData(time: .string("2016-12-01"), value: 25.20), - LineData(time: .string("2017-01-02"), value: 25.70), - LineData(time: .string("2017-02-01"), value: 25.78), - LineData(time: .string("2017-03-01"), value: 25.90), - LineData(time: .string("2017-04-03"), value: 26.02), - LineData(time: .string("2017-05-01"), value: 26.02), - LineData(time: .string("2017-06-01"), value: 26.39), - LineData(time: .string("2017-07-03"), value: 26.30), - LineData(time: .string("2017-08-01"), value: 26.14), - LineData(time: .string("2017-09-01"), value: 26.39), - LineData(time: .string("2017-10-02"), value: 26.12), - LineData(time: .string("2017-11-01"), value: 25.81), - LineData(time: .string("2017-12-01"), value: 25.82), - LineData(time: .string("2018-01-01"), value: 26.06), - LineData(time: .string("2018-02-01"), value: 25.78), - LineData(time: .string("2018-03-01"), value: 25.75), - LineData(time: .string("2018-04-02"), value: 25.72), - LineData(time: .string("2018-05-01"), value: 25.75), - LineData(time: .string("2018-06-01"), value: 26.58), - LineData(time: .string("2018-07-02"), value: 26.14), - LineData(time: .string("2018-08-01"), value: 25.86), - LineData(time: .string("2018-09-03"), value: 25.67), - LineData(time: .string("2018-10-01"), value: 25.82), - LineData(time: .string("2018-11-01"), value: 25.41), - LineData(time: .string("2018-12-03"), value: 25.77), - LineData(time: .string("2019-01-01"), value: 25.35), - LineData(time: .string("2019-02-01"), value: 25.79), - LineData(time: .string("2019-03-01"), value: 25.77), - LineData(time: .string("2019-04-01"), value: 25.90), - LineData(time: .string("2019-05-01"), value: 26.23) + SingleValueData(time: .string("2006-12-01"), value: 25.40), + SingleValueData(time: .string("2007-01-01"), value: 25.50), + SingleValueData(time: .string("2007-02-01"), value: 25.11), + SingleValueData(time: .string("2007-03-01"), value: 25.24), + SingleValueData(time: .string("2007-04-02"), value: 25.34), + SingleValueData(time: .string("2007-05-01"), value: 24.82), + SingleValueData(time: .string("2007-06-01"), value: 23.85), + SingleValueData(time: .string("2007-07-02"), value: 23.24), + SingleValueData(time: .string("2007-08-01"), value: 23.05), + SingleValueData(time: .string("2007-09-03"), value: 22.26), + SingleValueData(time: .string("2007-10-01"), value: 22.52), + SingleValueData(time: .string("2007-11-01"), value: 20.84), + SingleValueData(time: .string("2007-12-03"), value: 20.37), + SingleValueData(time: .string("2008-01-01"), value: 23.90), + SingleValueData(time: .string("2008-02-01"), value: 22.58), + SingleValueData(time: .string("2008-03-03"), value: 21.74), + SingleValueData(time: .string("2008-04-01"), value: 22.50), + SingleValueData(time: .string("2008-05-01"), value: 22.38), + SingleValueData(time: .string("2008-06-02"), value: 20.58), + SingleValueData(time: .string("2008-07-01"), value: 20.60), + SingleValueData(time: .string("2008-08-01"), value: 20.82), + SingleValueData(time: .string("2008-09-01"), value: 17.50), + SingleValueData(time: .string("2008-10-01"), value: 17.70), + SingleValueData(time: .string("2008-11-03"), value: 15.52), + SingleValueData(time: .string("2008-12-01"), value: 18.58), + SingleValueData(time: .string("2009-01-01"), value: 15.40), + SingleValueData(time: .string("2009-02-02"), value: 11.68), + SingleValueData(time: .string("2009-03-02"), value: 14.89), + SingleValueData(time: .string("2009-04-01"), value: 16.24), + SingleValueData(time: .string("2009-05-01"), value: 18.33), + SingleValueData(time: .string("2009-06-01"), value: 18.08), + SingleValueData(time: .string("2009-07-01"), value: 20.07), + SingleValueData(time: .string("2009-08-03"), value: 20.35), + SingleValueData(time: .string("2009-09-01"), value: 21.53), + SingleValueData(time: .string("2009-10-01"), value: 21.48), + SingleValueData(time: .string("2009-11-02"), value: 20.28), + SingleValueData(time: .string("2009-12-01"), value: 21.39), + SingleValueData(time: .string("2010-01-01"), value: 22.00), + SingleValueData(time: .string("2010-02-01"), value: 22.31), + SingleValueData(time: .string("2010-03-01"), value: 22.82), + SingleValueData(time: .string("2010-04-01"), value: 22.58), + SingleValueData(time: .string("2010-05-03"), value: 21.02), + SingleValueData(time: .string("2010-06-01"), value: 21.45), + SingleValueData(time: .string("2010-07-01"), value: 22.42), + SingleValueData(time: .string("2010-08-02"), value: 23.61), + SingleValueData(time: .string("2010-09-01"), value: 24.40), + SingleValueData(time: .string("2010-10-01"), value: 24.46), + SingleValueData(time: .string("2010-11-01"), value: 23.64), + SingleValueData(time: .string("2010-12-01"), value: 22.90), + SingleValueData(time: .string("2011-01-03"), value: 23.73), + SingleValueData(time: .string("2011-02-01"), value: 23.52), + SingleValueData(time: .string("2011-03-01"), value: 24.15), + SingleValueData(time: .string("2011-04-01"), value: 24.37), + SingleValueData(time: .string("2011-05-02"), value: 24.40), + SingleValueData(time: .string("2011-06-01"), value: 24.45), + SingleValueData(time: .string("2011-07-01"), value: 24.24), + SingleValueData(time: .string("2011-08-01"), value: 24.00), + SingleValueData(time: .string("2011-09-01"), value: 22.77), + SingleValueData(time: .string("2011-10-03"), value: 24.21), + SingleValueData(time: .string("2011-11-01"), value: 23.40), + SingleValueData(time: .string("2011-12-01"), value: 23.90), + SingleValueData(time: .string("2012-01-02"), value: 24.84), + SingleValueData(time: .string("2012-02-01"), value: 25.04), + SingleValueData(time: .string("2012-03-01"), value: 24.90), + SingleValueData(time: .string("2012-04-02"), value: 25.06), + SingleValueData(time: .string("2012-05-01"), value: 24.63), + SingleValueData(time: .string("2012-06-01"), value: 25.07), + SingleValueData(time: .string("2012-07-02"), value: 25.30), + SingleValueData(time: .string("2012-08-01"), value: 25.08), + SingleValueData(time: .string("2012-09-03"), value: 25.27), + SingleValueData(time: .string("2012-10-01"), value: 25.39), + SingleValueData(time: .string("2012-11-01"), value: 25.06), + SingleValueData(time: .string("2012-12-03"), value: 25.03), + SingleValueData(time: .string("2013-01-01"), value: 25.26), + SingleValueData(time: .string("2013-02-01"), value: 25.20), + SingleValueData(time: .string("2013-03-01"), value: 25.30), + SingleValueData(time: .string("2013-04-01"), value: 25.38), + SingleValueData(time: .string("2013-05-01"), value: 25.22), + SingleValueData(time: .string("2013-06-03"), value: 24.88), + SingleValueData(time: .string("2013-07-01"), value: 24.98), + SingleValueData(time: .string("2013-08-01"), value: 24.60), + SingleValueData(time: .string("2013-09-02"), value: 24.65), + SingleValueData(time: .string("2013-10-01"), value: 24.62), + SingleValueData(time: .string("2013-11-01"), value: 24.65), + SingleValueData(time: .string("2013-12-02"), value: 24.70), + SingleValueData(time: .string("2014-01-01"), value: 24.98), + SingleValueData(time: .string("2014-02-03"), value: 24.95), + SingleValueData(time: .string("2014-03-03"), value: 25.45), + SingleValueData(time: .string("2014-04-01"), value: 25.40), + SingleValueData(time: .string("2014-05-01"), value: 25.51), + SingleValueData(time: .string("2014-06-02"), value: 25.34), + SingleValueData(time: .string("2014-07-01"), value: 25.30), + SingleValueData(time: .string("2014-08-01"), value: 25.36), + SingleValueData(time: .string("2014-09-01"), value: 25.16), + SingleValueData(time: .string("2014-10-01"), value: 25.53), + SingleValueData(time: .string("2014-11-03"), value: 25.40), + SingleValueData(time: .string("2014-12-01"), value: 25.70), + SingleValueData(time: .string("2015-01-01"), value: 25.95), + SingleValueData(time: .string("2015-02-02"), value: 25.81), + SingleValueData(time: .string("2015-03-02"), value: 25.63), + SingleValueData(time: .string("2015-04-01"), value: 25.39), + SingleValueData(time: .string("2015-05-01"), value: 25.62), + SingleValueData(time: .string("2015-06-01"), value: 25.23), + SingleValueData(time: .string("2015-07-01"), value: 25.47), + SingleValueData(time: .string("2015-08-03"), value: 25.18), + SingleValueData(time: .string("2015-09-01"), value: 25.30), + SingleValueData(time: .string("2015-10-01"), value: 25.68), + SingleValueData(time: .string("2015-11-02"), value: 25.63), + SingleValueData(time: .string("2015-12-01"), value: 25.57), + SingleValueData(time: .string("2016-01-01"), value: 25.55), + SingleValueData(time: .string("2016-02-01"), value: 25.05), + SingleValueData(time: .string("2016-03-01"), value: 25.61), + SingleValueData(time: .string("2016-04-01"), value: 25.91), + SingleValueData(time: .string("2016-05-02"), value: 25.84), + SingleValueData(time: .string("2016-06-01"), value: 25.94), + SingleValueData(time: .string("2016-07-01"), value: 26.19), + SingleValueData(time: .string("2016-08-01"), value: 26.06), + SingleValueData(time: .string("2016-09-01"), value: 25.65), + SingleValueData(time: .string("2016-10-03"), value: 25.80), + SingleValueData(time: .string("2016-11-01"), value: 25.06), + SingleValueData(time: .string("2016-12-01"), value: 25.20), + SingleValueData(time: .string("2017-01-02"), value: 25.70), + SingleValueData(time: .string("2017-02-01"), value: 25.78), + SingleValueData(time: .string("2017-03-01"), value: 25.90), + SingleValueData(time: .string("2017-04-03"), value: 26.02), + SingleValueData(time: .string("2017-05-01"), value: 26.02), + SingleValueData(time: .string("2017-06-01"), value: 26.39), + SingleValueData(time: .string("2017-07-03"), value: 26.30), + SingleValueData(time: .string("2017-08-01"), value: 26.14), + SingleValueData(time: .string("2017-09-01"), value: 26.39), + SingleValueData(time: .string("2017-10-02"), value: 26.12), + SingleValueData(time: .string("2017-11-01"), value: 25.81), + SingleValueData(time: .string("2017-12-01"), value: 25.82), + SingleValueData(time: .string("2018-01-01"), value: 26.06), + SingleValueData(time: .string("2018-02-01"), value: 25.78), + SingleValueData(time: .string("2018-03-01"), value: 25.75), + SingleValueData(time: .string("2018-04-02"), value: 25.72), + SingleValueData(time: .string("2018-05-01"), value: 25.75), + SingleValueData(time: .string("2018-06-01"), value: 26.58), + SingleValueData(time: .string("2018-07-02"), value: 26.14), + SingleValueData(time: .string("2018-08-01"), value: 25.86), + SingleValueData(time: .string("2018-09-03"), value: 25.67), + SingleValueData(time: .string("2018-10-01"), value: 25.82), + SingleValueData(time: .string("2018-11-01"), value: 25.41), + SingleValueData(time: .string("2018-12-03"), value: 25.77), + SingleValueData(time: .string("2019-01-01"), value: 25.35), + SingleValueData(time: .string("2019-02-01"), value: 25.79), + SingleValueData(time: .string("2019-03-01"), value: 25.77), + SingleValueData(time: .string("2019-04-01"), value: 25.90), + SingleValueData(time: .string("2019-05-01"), value: 26.23) ] private static let yearData = [ - LineData(time: .string("2006-01-02"), value: 24.89), - LineData(time: .string("2007-01-01"), value: 25.50), - LineData(time: .string("2008-01-01"), value: 23.90), - LineData(time: .string("2009-01-01"), value: 15.40), - LineData(time: .string("2010-01-01"), value: 22.00), - LineData(time: .string("2011-01-03"), value: 23.73), - LineData(time: .string("2012-01-02"), value: 24.84), - LineData(time: .string("2013-01-01"), value: 25.26), - LineData(time: .string("2014-01-01"), value: 24.98), - LineData(time: .string("2015-01-01"), value: 25.95), - LineData(time: .string("2016-01-01"), value: 25.55), - LineData(time: .string("2017-01-02"), value: 25.70), - LineData(time: .string("2018-01-01"), value: 26.06), - LineData(time: .string("2019-01-01"), value: 26.23) + SingleValueData(time: .string("2006-01-02"), value: 24.89), + SingleValueData(time: .string("2007-01-01"), value: 25.50), + SingleValueData(time: .string("2008-01-01"), value: 23.90), + SingleValueData(time: .string("2009-01-01"), value: 15.40), + SingleValueData(time: .string("2010-01-01"), value: 22.00), + SingleValueData(time: .string("2011-01-03"), value: 23.73), + SingleValueData(time: .string("2012-01-02"), value: 24.84), + SingleValueData(time: .string("2013-01-01"), value: 25.26), + SingleValueData(time: .string("2014-01-01"), value: 24.98), + SingleValueData(time: .string("2015-01-01"), value: 25.95), + SingleValueData(time: .string("2016-01-01"), value: 25.55), + SingleValueData(time: .string("2017-01-02"), value: 25.70), + SingleValueData(time: .string("2018-01-01"), value: 26.06), + SingleValueData(time: .string("2019-01-01"), value: 26.23) ] } diff --git a/Example/LightweightCharts/Example/ThreeLineLegendViewController.swift b/Example/LightweightCharts/Example/ThreeLineLegendViewController.swift index aed9cc0..45c070f 100644 --- a/Example/LightweightCharts/Example/ThreeLineLegendViewController.swift +++ b/Example/LightweightCharts/Example/ThreeLineLegendViewController.swift @@ -8,306 +8,306 @@ class ThreeLineLegendViewController: UIViewController { private let legendLabel = UILabel() private let legend = "AEROSPACE" private let data = [ - LineData(time: .string("2018-03-28"), value: 21.00), - LineData(time: .string("2018-03-29"), value: 20.80), - LineData(time: .string("2018-03-30"), value: 19.40), - LineData(time: .string("2018-04-02"), value: 18.75), - LineData(time: .string("2018-04-03"), value: 18.75), - LineData(time: .string("2018-04-04"), value: 18.95), - LineData(time: .string("2018-04-05"), value: 16.95), - LineData(time: .string("2018-04-06"), value: 17.70), - LineData(time: .string("2018-04-09"), value: 31.00), - LineData(time: .string("2018-04-10"), value: 30.20), - LineData(time: .string("2018-04-11"), value: 31.50), - LineData(time: .string("2018-04-12"), value: 27.95), - LineData(time: .string("2018-04-13"), value: 30.15), - LineData(time: .string("2018-04-16"), value: 29.60), - LineData(time: .string("2018-04-17"), value: 27.70), - LineData(time: .string("2018-04-18"), value: 21.45), - LineData(time: .string("2018-04-19"), value: 24.05), - LineData(time: .string("2018-04-20"), value: 25.60), - LineData(time: .string("2018-04-23"), value: 26.50), - LineData(time: .string("2018-04-24"), value: 28.40), - LineData(time: .string("2018-04-25"), value: 30.55), - LineData(time: .string("2018-04-26"), value: 29.40), - LineData(time: .string("2018-04-27"), value: 30.70), - LineData(time: .string("2018-04-30"), value: 31.00), - LineData(time: .string("2018-05-02"), value: 27.70), - LineData(time: .string("2018-05-03"), value: 30.80), - LineData(time: .string("2018-05-04"), value: 33.35), - LineData(time: .string("2018-05-07"), value: 33.10), - LineData(time: .string("2018-05-08"), value: 34.60), - LineData(time: .string("2018-05-10"), value: 35.20), - LineData(time: .string("2018-05-11"), value: 37.50), - LineData(time: .string("2018-05-14"), value: 38.85), - LineData(time: .string("2018-05-15"), value: 37.00), - LineData(time: .string("2018-05-16"), value: 37.05), - LineData(time: .string("2018-05-17"), value: 37.05), - LineData(time: .string("2018-05-18"), value: 38.25), - LineData(time: .string("2018-05-21"), value: 38.80), - LineData(time: .string("2018-05-22"), value: 40.00), - LineData(time: .string("2018-05-23"), value: 42.45), - LineData(time: .string("2018-05-24"), value: 42.30), - LineData(time: .string("2018-05-25"), value: 42.80), - LineData(time: .string("2018-05-28"), value: 43.45), - LineData(time: .string("2018-05-29"), value: 43.15), - LineData(time: .string("2018-05-30"), value: 35.15), - LineData(time: .string("2018-05-31"), value: 34.20), - LineData(time: .string("2018-06-01"), value: 35.35), - LineData(time: .string("2018-06-04"), value: 37.90), - LineData(time: .string("2018-06-05"), value: 35.75), - LineData(time: .string("2018-06-06"), value: 33.70), - LineData(time: .string("2018-06-07"), value: 30.00), - LineData(time: .string("2018-06-08"), value: 31.10), - LineData(time: .string("2018-06-11"), value: 32.30), - LineData(time: .string("2018-06-13"), value: 30.95), - LineData(time: .string("2018-06-14"), value: 31.45), - LineData(time: .string("2018-06-15"), value: 34.50), - LineData(time: .string("2018-06-18"), value: 35.35), - LineData(time: .string("2018-06-19"), value: 37.00), - LineData(time: .string("2018-06-20"), value: 34.00), - LineData(time: .string("2018-06-21"), value: 34.45), - LineData(time: .string("2018-06-22"), value: 34.45), - LineData(time: .string("2018-06-25"), value: 34.25), - LineData(time: .string("2018-06-26"), value: 34.35), - LineData(time: .string("2018-06-27"), value: 33.85), - LineData(time: .string("2018-06-28"), value: 35.20), - LineData(time: .string("2018-06-29"), value: 35.20), - LineData(time: .string("2018-07-02"), value: 34.85), - LineData(time: .string("2018-07-03"), value: 31.95), - LineData(time: .string("2018-07-04"), value: 35.00), - LineData(time: .string("2018-07-05"), value: 45.80), - LineData(time: .string("2018-07-06"), value: 45.45), - LineData(time: .string("2018-07-09"), value: 46.70), - LineData(time: .string("2018-07-10"), value: 48.45), - LineData(time: .string("2018-07-11"), value: 50.70), - LineData(time: .string("2018-07-12"), value: 50.20), - LineData(time: .string("2018-07-13"), value: 51.75), - LineData(time: .string("2018-07-16"), value: 52.00), - LineData(time: .string("2018-07-17"), value: 50.75), - LineData(time: .string("2018-07-18"), value: 52.00), - LineData(time: .string("2018-07-19"), value: 54.00), - LineData(time: .string("2018-07-20"), value: 53.55), - LineData(time: .string("2018-07-23"), value: 51.20), - LineData(time: .string("2018-07-24"), value: 52.85), - LineData(time: .string("2018-07-25"), value: 53.70), - LineData(time: .string("2018-07-26"), value: 52.30), - LineData(time: .string("2018-07-27"), value: 52.80), - LineData(time: .string("2018-07-30"), value: 53.30), - LineData(time: .string("2018-07-31"), value: 52.05), - LineData(time: .string("2018-08-01"), value: 54.00), - LineData(time: .string("2018-08-02"), value: 59.00), - LineData(time: .string("2018-08-03"), value: 56.90), - LineData(time: .string("2018-08-06"), value: 60.70), - LineData(time: .string("2018-08-07"), value: 60.75), - LineData(time: .string("2018-08-08"), value: 63.15), - LineData(time: .string("2018-08-09"), value: 65.30), - LineData(time: .string("2018-08-10"), value: 70.00), - LineData(time: .string("2018-08-13"), value: 69.25), - LineData(time: .string("2018-08-14"), value: 67.75), - LineData(time: .string("2018-08-15"), value: 67.60), - LineData(time: .string("2018-08-16"), value: 64.50), - LineData(time: .string("2018-08-17"), value: 66.00), - LineData(time: .string("2018-08-20"), value: 66.05), - LineData(time: .string("2018-08-21"), value: 66.65), - LineData(time: .string("2018-08-22"), value: 66.40), - LineData(time: .string("2018-08-23"), value: 69.35), - LineData(time: .string("2018-08-24"), value: 70.55), - LineData(time: .string("2018-08-27"), value: 68.80), - LineData(time: .string("2018-08-28"), value: 68.45), - LineData(time: .string("2018-08-29"), value: 63.20), - LineData(time: .string("2018-08-30"), value: 59.50), - LineData(time: .string("2018-08-31"), value: 59.50), - LineData(time: .string("2018-09-03"), value: 60.45), - LineData(time: .string("2018-09-04"), value: 62.25), - LineData(time: .string("2018-09-05"), value: 63.50), - LineData(time: .string("2018-09-06"), value: 66.90), - LineData(time: .string("2018-09-07"), value: 66.45), - LineData(time: .string("2018-09-10"), value: 68.50), - LineData(time: .string("2018-09-11"), value: 69.90), - LineData(time: .string("2018-09-12"), value: 67.80), - LineData(time: .string("2018-09-13"), value: 67.90), - LineData(time: .string("2018-09-14"), value: 69.25), - LineData(time: .string("2018-09-17"), value: 68.95), - LineData(time: .string("2018-09-18"), value: 65.85), - LineData(time: .string("2018-09-19"), value: 63.60), - LineData(time: .string("2018-09-20"), value: 64.00), - LineData(time: .string("2018-09-21"), value: 64.00), - LineData(time: .string("2018-09-24"), value: 66.05), - LineData(time: .string("2018-09-25"), value: 68.35), - LineData(time: .string("2018-09-26"), value: 68.30), - LineData(time: .string("2018-09-27"), value: 67.95), - LineData(time: .string("2018-09-28"), value: 68.45), - LineData(time: .string("2018-10-01"), value: 68.80), - LineData(time: .string("2018-10-02"), value: 68.60), - LineData(time: .string("2018-10-03"), value: 67.90), - LineData(time: .string("2018-10-04"), value: 68.60), - LineData(time: .string("2018-10-05"), value: 70.35), - LineData(time: .string("2018-10-08"), value: 72.35), - LineData(time: .string("2018-10-09"), value: 72.90), - LineData(time: .string("2018-10-10"), value: 72.85), - LineData(time: .string("2018-10-11"), value: 74.10), - LineData(time: .string("2018-10-12"), value: 73.00), - LineData(time: .string("2018-10-15"), value: 74.85), - LineData(time: .string("2018-10-16"), value: 76.00), - LineData(time: .string("2018-10-17"), value: 77.00), - LineData(time: .string("2018-10-18"), value: 79.00), - LineData(time: .string("2018-10-19"), value: 79.50), - LineData(time: .string("2018-10-22"), value: 82.60), - LineData(time: .string("2018-10-23"), value: 82.70), - LineData(time: .string("2018-10-24"), value: 82.10), - LineData(time: .string("2018-10-25"), value: 83.15), - LineData(time: .string("2018-10-26"), value: 83.40), - LineData(time: .string("2018-10-29"), value: 80.95), - LineData(time: .string("2018-10-30"), value: 76.75), - LineData(time: .string("2018-10-31"), value: 77.75), - LineData(time: .string("2018-11-01"), value: 78.12), - LineData(time: .string("2018-11-02"), value: 73.22), - LineData(time: .string("2018-11-06"), value: 72.60), - LineData(time: .string("2018-11-07"), value: 74.40), - LineData(time: .string("2018-11-08"), value: 76.50), - LineData(time: .string("2018-11-09"), value: 79.86), - LineData(time: .string("2018-11-12"), value: 78.10), - LineData(time: .string("2018-11-13"), value: 77.60), - LineData(time: .string("2018-11-14"), value: 71.70), - LineData(time: .string("2018-11-15"), value: 72.26), - LineData(time: .string("2018-11-16"), value: 73.80), - LineData(time: .string("2018-11-19"), value: 76.28), - LineData(time: .string("2018-11-20"), value: 72.80), - LineData(time: .string("2018-11-21"), value: 66.20), - LineData(time: .string("2018-11-22"), value: 65.10), - LineData(time: .string("2018-11-23"), value: 61.26), - LineData(time: .string("2018-11-26"), value: 64.10), - LineData(time: .string("2018-11-27"), value: 61.72), - LineData(time: .string("2018-11-28"), value: 61.40), - LineData(time: .string("2018-11-29"), value: 61.86), - LineData(time: .string("2018-11-30"), value: 60.60), - LineData(time: .string("2018-12-03"), value: 63.16), - LineData(time: .string("2018-12-04"), value: 68.30), - LineData(time: .string("2018-12-05"), value: 67.20), - LineData(time: .string("2018-12-06"), value: 68.56), - LineData(time: .string("2018-12-07"), value: 71.30), - LineData(time: .string("2018-12-10"), value: 73.98), - LineData(time: .string("2018-12-11"), value: 72.28), - LineData(time: .string("2018-12-12"), value: 73.20), - LineData(time: .string("2018-12-13"), value: 73.00), - LineData(time: .string("2018-12-14"), value: 72.90), - LineData(time: .string("2018-12-17"), value: 73.96), - LineData(time: .string("2018-12-18"), value: 73.40), - LineData(time: .string("2018-12-19"), value: 73.00), - LineData(time: .string("2018-12-20"), value: 72.98), - LineData(time: .string("2018-12-21"), value: 72.80), - LineData(time: .string("2018-12-24"), value: 72.90), - LineData(time: .string("2018-12-25"), value: 74.20), - LineData(time: .string("2018-12-26"), value: 73.98), - LineData(time: .string("2018-12-27"), value: 74.50), - LineData(time: .string("2018-12-28"), value: 74.00), - LineData(time: .string("2019-01-03"), value: 73.50), - LineData(time: .string("2019-01-04"), value: 73.90), - LineData(time: .string("2019-01-08"), value: 73.90), - LineData(time: .string("2019-01-09"), value: 72.94), - LineData(time: .string("2019-01-10"), value: 69.86), - LineData(time: .string("2019-01-11"), value: 70.34), - LineData(time: .string("2019-01-14"), value: 68.78), - LineData(time: .string("2019-01-15"), value: 68.02), - LineData(time: .string("2019-01-16"), value: 66.60), - LineData(time: .string("2019-01-17"), value: 65.94), - LineData(time: .string("2019-01-18"), value: 68.00), - LineData(time: .string("2019-01-21"), value: 69.20), - LineData(time: .string("2019-01-22"), value: 69.76), - LineData(time: .string("2019-01-23"), value: 69.60), - LineData(time: .string("2019-01-24"), value: 69.62), - LineData(time: .string("2019-01-25"), value: 69.30), - LineData(time: .string("2019-01-28"), value: 69.20), - LineData(time: .string("2019-01-29"), value: 68.90), - LineData(time: .string("2019-01-30"), value: 66.40), - LineData(time: .string("2019-01-31"), value: 67.08), - LineData(time: .string("2019-02-01"), value: 69.78), - LineData(time: .string("2019-02-04"), value: 72.56), - LineData(time: .string("2019-02-05"), value: 72.74), - LineData(time: .string("2019-02-06"), value: 73.00), - LineData(time: .string("2019-02-07"), value: 73.38), - LineData(time: .string("2019-02-08"), value: 73.10), - LineData(time: .string("2019-02-11"), value: 73.22), - LineData(time: .string("2019-02-12"), value: 72.30), - LineData(time: .string("2019-02-13"), value: 74.86), - LineData(time: .string("2019-02-14"), value: 73.64), - LineData(time: .string("2019-02-15"), value: 73.38), - LineData(time: .string("2019-02-18"), value: 74.26), - LineData(time: .string("2019-02-19"), value: 75.00), - LineData(time: .string("2019-02-20"), value: 74.96), - LineData(time: .string("2019-02-21"), value: 75.00), - LineData(time: .string("2019-02-22"), value: 74.88), - LineData(time: .string("2019-02-25"), value: 74.96), - LineData(time: .string("2019-02-26"), value: 76.02), - LineData(time: .string("2019-02-27"), value: 77.30), - LineData(time: .string("2019-02-28"), value: 77.90), - LineData(time: .string("2019-03-01"), value: 78.24), - LineData(time: .string("2019-03-04"), value: 76.64), - LineData(time: .string("2019-03-05"), value: 78.74), - LineData(time: .string("2019-03-06"), value: 76.88), - LineData(time: .string("2019-03-07"), value: 75.32), - LineData(time: .string("2019-03-11"), value: 72.90), - LineData(time: .string("2019-03-12"), value: 74.78), - LineData(time: .string("2019-03-13"), value: 74.50), - LineData(time: .string("2019-03-14"), value: 75.34), - LineData(time: .string("2019-03-15"), value: 74.92), - LineData(time: .string("2019-03-18"), value: 75.08), - LineData(time: .string("2019-03-19"), value: 75.54), - LineData(time: .string("2019-03-20"), value: 76.78), - LineData(time: .string("2019-03-21"), value: 77.70), - LineData(time: .string("2019-03-22"), value: 77.34), - LineData(time: .string("2019-03-25"), value: 78.00), - LineData(time: .string("2019-03-26"), value: 77.98), - LineData(time: .string("2019-03-27"), value: 78.90), - LineData(time: .string("2019-03-28"), value: 78.30), - LineData(time: .string("2019-03-29"), value: 78.70), - LineData(time: .string("2019-04-01"), value: 77.22), - LineData(time: .string("2019-04-02"), value: 76.64), - LineData(time: .string("2019-04-03"), value: 76.50), - LineData(time: .string("2019-04-04"), value: 76.64), - LineData(time: .string("2019-04-05"), value: 75.46), - LineData(time: .string("2019-04-08"), value: 76.42), - LineData(time: .string("2019-04-09"), value: 77.76), - LineData(time: .string("2019-04-10"), value: 77.68), - LineData(time: .string("2019-04-11"), value: 76.60), - LineData(time: .string("2019-04-12"), value: 76.78), - LineData(time: .string("2019-04-15"), value: 76.28), - LineData(time: .string("2019-04-16"), value: 75.88), - LineData(time: .string("2019-04-17"), value: 76.38), - LineData(time: .string("2019-04-18"), value: 77.00), - LineData(time: .string("2019-04-19"), value: 77.40), - LineData(time: .string("2019-04-22"), value: 77.40), - LineData(time: .string("2019-04-23"), value: 78.20), - LineData(time: .string("2019-04-24"), value: 78.68), - LineData(time: .string("2019-04-25"), value: 78.66), - LineData(time: .string("2019-04-26"), value: 77.88), - LineData(time: .string("2019-04-29"), value: 78.02), - LineData(time: .string("2019-04-30"), value: 78.68), - LineData(time: .string("2019-05-02"), value: 78.14), - LineData(time: .string("2019-05-03"), value: 78.30), - LineData(time: .string("2019-05-06"), value: 80.06), - LineData(time: .string("2019-05-07"), value: 80.50), - LineData(time: .string("2019-05-08"), value: 80.76), - LineData(time: .string("2019-05-10"), value: 82.10), - LineData(time: .string("2019-05-13"), value: 83.72), - LineData(time: .string("2019-05-14"), value: 83.55), - LineData(time: .string("2019-05-15"), value: 84.92), - LineData(time: .string("2019-05-16"), value: 83.32), - LineData(time: .string("2019-05-17"), value: 83.04), - LineData(time: .string("2019-05-20"), value: 83.92), - LineData(time: .string("2019-05-21"), value: 84.24), - LineData(time: .string("2019-05-22"), value: 84.00), - LineData(time: .string("2019-05-23"), value: 84.26), - LineData(time: .string("2019-05-24"), value: 84.00), - LineData(time: .string("2019-05-27"), value: 83.80), - LineData(time: .string("2019-05-28"), value: 84.32), - LineData(time: .string("2019-05-29"), value: 83.88), - LineData(time: .string("2019-05-30"), value: 84.58), - LineData(time: .string("2019-05-31"), value: 81.20), - LineData(time: .string("2019-06-03"), value: 84.35), - LineData(time: .string("2019-06-04"), value: 85.66), - LineData(time: .string("2019-06-05"), value: 86.51) + SingleValueData(time: .string("2018-03-28"), value: 21.00), + SingleValueData(time: .string("2018-03-29"), value: 20.80), + SingleValueData(time: .string("2018-03-30"), value: 19.40), + SingleValueData(time: .string("2018-04-02"), value: 18.75), + SingleValueData(time: .string("2018-04-03"), value: 18.75), + SingleValueData(time: .string("2018-04-04"), value: 18.95), + SingleValueData(time: .string("2018-04-05"), value: 16.95), + SingleValueData(time: .string("2018-04-06"), value: 17.70), + SingleValueData(time: .string("2018-04-09"), value: 31.00), + SingleValueData(time: .string("2018-04-10"), value: 30.20), + SingleValueData(time: .string("2018-04-11"), value: 31.50), + SingleValueData(time: .string("2018-04-12"), value: 27.95), + SingleValueData(time: .string("2018-04-13"), value: 30.15), + SingleValueData(time: .string("2018-04-16"), value: 29.60), + SingleValueData(time: .string("2018-04-17"), value: 27.70), + SingleValueData(time: .string("2018-04-18"), value: 21.45), + SingleValueData(time: .string("2018-04-19"), value: 24.05), + SingleValueData(time: .string("2018-04-20"), value: 25.60), + SingleValueData(time: .string("2018-04-23"), value: 26.50), + SingleValueData(time: .string("2018-04-24"), value: 28.40), + SingleValueData(time: .string("2018-04-25"), value: 30.55), + SingleValueData(time: .string("2018-04-26"), value: 29.40), + SingleValueData(time: .string("2018-04-27"), value: 30.70), + SingleValueData(time: .string("2018-04-30"), value: 31.00), + SingleValueData(time: .string("2018-05-02"), value: 27.70), + SingleValueData(time: .string("2018-05-03"), value: 30.80), + SingleValueData(time: .string("2018-05-04"), value: 33.35), + SingleValueData(time: .string("2018-05-07"), value: 33.10), + SingleValueData(time: .string("2018-05-08"), value: 34.60), + SingleValueData(time: .string("2018-05-10"), value: 35.20), + SingleValueData(time: .string("2018-05-11"), value: 37.50), + SingleValueData(time: .string("2018-05-14"), value: 38.85), + SingleValueData(time: .string("2018-05-15"), value: 37.00), + SingleValueData(time: .string("2018-05-16"), value: 37.05), + SingleValueData(time: .string("2018-05-17"), value: 37.05), + SingleValueData(time: .string("2018-05-18"), value: 38.25), + SingleValueData(time: .string("2018-05-21"), value: 38.80), + SingleValueData(time: .string("2018-05-22"), value: 40.00), + SingleValueData(time: .string("2018-05-23"), value: 42.45), + SingleValueData(time: .string("2018-05-24"), value: 42.30), + SingleValueData(time: .string("2018-05-25"), value: 42.80), + SingleValueData(time: .string("2018-05-28"), value: 43.45), + SingleValueData(time: .string("2018-05-29"), value: 43.15), + SingleValueData(time: .string("2018-05-30"), value: 35.15), + SingleValueData(time: .string("2018-05-31"), value: 34.20), + SingleValueData(time: .string("2018-06-01"), value: 35.35), + SingleValueData(time: .string("2018-06-04"), value: 37.90), + SingleValueData(time: .string("2018-06-05"), value: 35.75), + SingleValueData(time: .string("2018-06-06"), value: 33.70), + SingleValueData(time: .string("2018-06-07"), value: 30.00), + SingleValueData(time: .string("2018-06-08"), value: 31.10), + SingleValueData(time: .string("2018-06-11"), value: 32.30), + SingleValueData(time: .string("2018-06-13"), value: 30.95), + SingleValueData(time: .string("2018-06-14"), value: 31.45), + SingleValueData(time: .string("2018-06-15"), value: 34.50), + SingleValueData(time: .string("2018-06-18"), value: 35.35), + SingleValueData(time: .string("2018-06-19"), value: 37.00), + SingleValueData(time: .string("2018-06-20"), value: 34.00), + SingleValueData(time: .string("2018-06-21"), value: 34.45), + SingleValueData(time: .string("2018-06-22"), value: 34.45), + SingleValueData(time: .string("2018-06-25"), value: 34.25), + SingleValueData(time: .string("2018-06-26"), value: 34.35), + SingleValueData(time: .string("2018-06-27"), value: 33.85), + SingleValueData(time: .string("2018-06-28"), value: 35.20), + SingleValueData(time: .string("2018-06-29"), value: 35.20), + SingleValueData(time: .string("2018-07-02"), value: 34.85), + SingleValueData(time: .string("2018-07-03"), value: 31.95), + SingleValueData(time: .string("2018-07-04"), value: 35.00), + SingleValueData(time: .string("2018-07-05"), value: 45.80), + SingleValueData(time: .string("2018-07-06"), value: 45.45), + SingleValueData(time: .string("2018-07-09"), value: 46.70), + SingleValueData(time: .string("2018-07-10"), value: 48.45), + SingleValueData(time: .string("2018-07-11"), value: 50.70), + SingleValueData(time: .string("2018-07-12"), value: 50.20), + SingleValueData(time: .string("2018-07-13"), value: 51.75), + SingleValueData(time: .string("2018-07-16"), value: 52.00), + SingleValueData(time: .string("2018-07-17"), value: 50.75), + SingleValueData(time: .string("2018-07-18"), value: 52.00), + SingleValueData(time: .string("2018-07-19"), value: 54.00), + SingleValueData(time: .string("2018-07-20"), value: 53.55), + SingleValueData(time: .string("2018-07-23"), value: 51.20), + SingleValueData(time: .string("2018-07-24"), value: 52.85), + SingleValueData(time: .string("2018-07-25"), value: 53.70), + SingleValueData(time: .string("2018-07-26"), value: 52.30), + SingleValueData(time: .string("2018-07-27"), value: 52.80), + SingleValueData(time: .string("2018-07-30"), value: 53.30), + SingleValueData(time: .string("2018-07-31"), value: 52.05), + SingleValueData(time: .string("2018-08-01"), value: 54.00), + SingleValueData(time: .string("2018-08-02"), value: 59.00), + SingleValueData(time: .string("2018-08-03"), value: 56.90), + SingleValueData(time: .string("2018-08-06"), value: 60.70), + SingleValueData(time: .string("2018-08-07"), value: 60.75), + SingleValueData(time: .string("2018-08-08"), value: 63.15), + SingleValueData(time: .string("2018-08-09"), value: 65.30), + SingleValueData(time: .string("2018-08-10"), value: 70.00), + SingleValueData(time: .string("2018-08-13"), value: 69.25), + SingleValueData(time: .string("2018-08-14"), value: 67.75), + SingleValueData(time: .string("2018-08-15"), value: 67.60), + SingleValueData(time: .string("2018-08-16"), value: 64.50), + SingleValueData(time: .string("2018-08-17"), value: 66.00), + SingleValueData(time: .string("2018-08-20"), value: 66.05), + SingleValueData(time: .string("2018-08-21"), value: 66.65), + SingleValueData(time: .string("2018-08-22"), value: 66.40), + SingleValueData(time: .string("2018-08-23"), value: 69.35), + SingleValueData(time: .string("2018-08-24"), value: 70.55), + SingleValueData(time: .string("2018-08-27"), value: 68.80), + SingleValueData(time: .string("2018-08-28"), value: 68.45), + SingleValueData(time: .string("2018-08-29"), value: 63.20), + SingleValueData(time: .string("2018-08-30"), value: 59.50), + SingleValueData(time: .string("2018-08-31"), value: 59.50), + SingleValueData(time: .string("2018-09-03"), value: 60.45), + SingleValueData(time: .string("2018-09-04"), value: 62.25), + SingleValueData(time: .string("2018-09-05"), value: 63.50), + SingleValueData(time: .string("2018-09-06"), value: 66.90), + SingleValueData(time: .string("2018-09-07"), value: 66.45), + SingleValueData(time: .string("2018-09-10"), value: 68.50), + SingleValueData(time: .string("2018-09-11"), value: 69.90), + SingleValueData(time: .string("2018-09-12"), value: 67.80), + SingleValueData(time: .string("2018-09-13"), value: 67.90), + SingleValueData(time: .string("2018-09-14"), value: 69.25), + SingleValueData(time: .string("2018-09-17"), value: 68.95), + SingleValueData(time: .string("2018-09-18"), value: 65.85), + SingleValueData(time: .string("2018-09-19"), value: 63.60), + SingleValueData(time: .string("2018-09-20"), value: 64.00), + SingleValueData(time: .string("2018-09-21"), value: 64.00), + SingleValueData(time: .string("2018-09-24"), value: 66.05), + SingleValueData(time: .string("2018-09-25"), value: 68.35), + SingleValueData(time: .string("2018-09-26"), value: 68.30), + SingleValueData(time: .string("2018-09-27"), value: 67.95), + SingleValueData(time: .string("2018-09-28"), value: 68.45), + SingleValueData(time: .string("2018-10-01"), value: 68.80), + SingleValueData(time: .string("2018-10-02"), value: 68.60), + SingleValueData(time: .string("2018-10-03"), value: 67.90), + SingleValueData(time: .string("2018-10-04"), value: 68.60), + SingleValueData(time: .string("2018-10-05"), value: 70.35), + SingleValueData(time: .string("2018-10-08"), value: 72.35), + SingleValueData(time: .string("2018-10-09"), value: 72.90), + SingleValueData(time: .string("2018-10-10"), value: 72.85), + SingleValueData(time: .string("2018-10-11"), value: 74.10), + SingleValueData(time: .string("2018-10-12"), value: 73.00), + SingleValueData(time: .string("2018-10-15"), value: 74.85), + SingleValueData(time: .string("2018-10-16"), value: 76.00), + SingleValueData(time: .string("2018-10-17"), value: 77.00), + SingleValueData(time: .string("2018-10-18"), value: 79.00), + SingleValueData(time: .string("2018-10-19"), value: 79.50), + SingleValueData(time: .string("2018-10-22"), value: 82.60), + SingleValueData(time: .string("2018-10-23"), value: 82.70), + SingleValueData(time: .string("2018-10-24"), value: 82.10), + SingleValueData(time: .string("2018-10-25"), value: 83.15), + SingleValueData(time: .string("2018-10-26"), value: 83.40), + SingleValueData(time: .string("2018-10-29"), value: 80.95), + SingleValueData(time: .string("2018-10-30"), value: 76.75), + SingleValueData(time: .string("2018-10-31"), value: 77.75), + SingleValueData(time: .string("2018-11-01"), value: 78.12), + SingleValueData(time: .string("2018-11-02"), value: 73.22), + SingleValueData(time: .string("2018-11-06"), value: 72.60), + SingleValueData(time: .string("2018-11-07"), value: 74.40), + SingleValueData(time: .string("2018-11-08"), value: 76.50), + SingleValueData(time: .string("2018-11-09"), value: 79.86), + SingleValueData(time: .string("2018-11-12"), value: 78.10), + SingleValueData(time: .string("2018-11-13"), value: 77.60), + SingleValueData(time: .string("2018-11-14"), value: 71.70), + SingleValueData(time: .string("2018-11-15"), value: 72.26), + SingleValueData(time: .string("2018-11-16"), value: 73.80), + SingleValueData(time: .string("2018-11-19"), value: 76.28), + SingleValueData(time: .string("2018-11-20"), value: 72.80), + SingleValueData(time: .string("2018-11-21"), value: 66.20), + SingleValueData(time: .string("2018-11-22"), value: 65.10), + SingleValueData(time: .string("2018-11-23"), value: 61.26), + SingleValueData(time: .string("2018-11-26"), value: 64.10), + SingleValueData(time: .string("2018-11-27"), value: 61.72), + SingleValueData(time: .string("2018-11-28"), value: 61.40), + SingleValueData(time: .string("2018-11-29"), value: 61.86), + SingleValueData(time: .string("2018-11-30"), value: 60.60), + SingleValueData(time: .string("2018-12-03"), value: 63.16), + SingleValueData(time: .string("2018-12-04"), value: 68.30), + SingleValueData(time: .string("2018-12-05"), value: 67.20), + SingleValueData(time: .string("2018-12-06"), value: 68.56), + SingleValueData(time: .string("2018-12-07"), value: 71.30), + SingleValueData(time: .string("2018-12-10"), value: 73.98), + SingleValueData(time: .string("2018-12-11"), value: 72.28), + SingleValueData(time: .string("2018-12-12"), value: 73.20), + SingleValueData(time: .string("2018-12-13"), value: 73.00), + SingleValueData(time: .string("2018-12-14"), value: 72.90), + SingleValueData(time: .string("2018-12-17"), value: 73.96), + SingleValueData(time: .string("2018-12-18"), value: 73.40), + SingleValueData(time: .string("2018-12-19"), value: 73.00), + SingleValueData(time: .string("2018-12-20"), value: 72.98), + SingleValueData(time: .string("2018-12-21"), value: 72.80), + SingleValueData(time: .string("2018-12-24"), value: 72.90), + SingleValueData(time: .string("2018-12-25"), value: 74.20), + SingleValueData(time: .string("2018-12-26"), value: 73.98), + SingleValueData(time: .string("2018-12-27"), value: 74.50), + SingleValueData(time: .string("2018-12-28"), value: 74.00), + SingleValueData(time: .string("2019-01-03"), value: 73.50), + SingleValueData(time: .string("2019-01-04"), value: 73.90), + SingleValueData(time: .string("2019-01-08"), value: 73.90), + SingleValueData(time: .string("2019-01-09"), value: 72.94), + SingleValueData(time: .string("2019-01-10"), value: 69.86), + SingleValueData(time: .string("2019-01-11"), value: 70.34), + SingleValueData(time: .string("2019-01-14"), value: 68.78), + SingleValueData(time: .string("2019-01-15"), value: 68.02), + SingleValueData(time: .string("2019-01-16"), value: 66.60), + SingleValueData(time: .string("2019-01-17"), value: 65.94), + SingleValueData(time: .string("2019-01-18"), value: 68.00), + SingleValueData(time: .string("2019-01-21"), value: 69.20), + SingleValueData(time: .string("2019-01-22"), value: 69.76), + SingleValueData(time: .string("2019-01-23"), value: 69.60), + SingleValueData(time: .string("2019-01-24"), value: 69.62), + SingleValueData(time: .string("2019-01-25"), value: 69.30), + SingleValueData(time: .string("2019-01-28"), value: 69.20), + SingleValueData(time: .string("2019-01-29"), value: 68.90), + SingleValueData(time: .string("2019-01-30"), value: 66.40), + SingleValueData(time: .string("2019-01-31"), value: 67.08), + SingleValueData(time: .string("2019-02-01"), value: 69.78), + SingleValueData(time: .string("2019-02-04"), value: 72.56), + SingleValueData(time: .string("2019-02-05"), value: 72.74), + SingleValueData(time: .string("2019-02-06"), value: 73.00), + SingleValueData(time: .string("2019-02-07"), value: 73.38), + SingleValueData(time: .string("2019-02-08"), value: 73.10), + SingleValueData(time: .string("2019-02-11"), value: 73.22), + SingleValueData(time: .string("2019-02-12"), value: 72.30), + SingleValueData(time: .string("2019-02-13"), value: 74.86), + SingleValueData(time: .string("2019-02-14"), value: 73.64), + SingleValueData(time: .string("2019-02-15"), value: 73.38), + SingleValueData(time: .string("2019-02-18"), value: 74.26), + SingleValueData(time: .string("2019-02-19"), value: 75.00), + SingleValueData(time: .string("2019-02-20"), value: 74.96), + SingleValueData(time: .string("2019-02-21"), value: 75.00), + SingleValueData(time: .string("2019-02-22"), value: 74.88), + SingleValueData(time: .string("2019-02-25"), value: 74.96), + SingleValueData(time: .string("2019-02-26"), value: 76.02), + SingleValueData(time: .string("2019-02-27"), value: 77.30), + SingleValueData(time: .string("2019-02-28"), value: 77.90), + SingleValueData(time: .string("2019-03-01"), value: 78.24), + SingleValueData(time: .string("2019-03-04"), value: 76.64), + SingleValueData(time: .string("2019-03-05"), value: 78.74), + SingleValueData(time: .string("2019-03-06"), value: 76.88), + SingleValueData(time: .string("2019-03-07"), value: 75.32), + SingleValueData(time: .string("2019-03-11"), value: 72.90), + SingleValueData(time: .string("2019-03-12"), value: 74.78), + SingleValueData(time: .string("2019-03-13"), value: 74.50), + SingleValueData(time: .string("2019-03-14"), value: 75.34), + SingleValueData(time: .string("2019-03-15"), value: 74.92), + SingleValueData(time: .string("2019-03-18"), value: 75.08), + SingleValueData(time: .string("2019-03-19"), value: 75.54), + SingleValueData(time: .string("2019-03-20"), value: 76.78), + SingleValueData(time: .string("2019-03-21"), value: 77.70), + SingleValueData(time: .string("2019-03-22"), value: 77.34), + SingleValueData(time: .string("2019-03-25"), value: 78.00), + SingleValueData(time: .string("2019-03-26"), value: 77.98), + SingleValueData(time: .string("2019-03-27"), value: 78.90), + SingleValueData(time: .string("2019-03-28"), value: 78.30), + SingleValueData(time: .string("2019-03-29"), value: 78.70), + SingleValueData(time: .string("2019-04-01"), value: 77.22), + SingleValueData(time: .string("2019-04-02"), value: 76.64), + SingleValueData(time: .string("2019-04-03"), value: 76.50), + SingleValueData(time: .string("2019-04-04"), value: 76.64), + SingleValueData(time: .string("2019-04-05"), value: 75.46), + SingleValueData(time: .string("2019-04-08"), value: 76.42), + SingleValueData(time: .string("2019-04-09"), value: 77.76), + SingleValueData(time: .string("2019-04-10"), value: 77.68), + SingleValueData(time: .string("2019-04-11"), value: 76.60), + SingleValueData(time: .string("2019-04-12"), value: 76.78), + SingleValueData(time: .string("2019-04-15"), value: 76.28), + SingleValueData(time: .string("2019-04-16"), value: 75.88), + SingleValueData(time: .string("2019-04-17"), value: 76.38), + SingleValueData(time: .string("2019-04-18"), value: 77.00), + SingleValueData(time: .string("2019-04-19"), value: 77.40), + SingleValueData(time: .string("2019-04-22"), value: 77.40), + SingleValueData(time: .string("2019-04-23"), value: 78.20), + SingleValueData(time: .string("2019-04-24"), value: 78.68), + SingleValueData(time: .string("2019-04-25"), value: 78.66), + SingleValueData(time: .string("2019-04-26"), value: 77.88), + SingleValueData(time: .string("2019-04-29"), value: 78.02), + SingleValueData(time: .string("2019-04-30"), value: 78.68), + SingleValueData(time: .string("2019-05-02"), value: 78.14), + SingleValueData(time: .string("2019-05-03"), value: 78.30), + SingleValueData(time: .string("2019-05-06"), value: 80.06), + SingleValueData(time: .string("2019-05-07"), value: 80.50), + SingleValueData(time: .string("2019-05-08"), value: 80.76), + SingleValueData(time: .string("2019-05-10"), value: 82.10), + SingleValueData(time: .string("2019-05-13"), value: 83.72), + SingleValueData(time: .string("2019-05-14"), value: 83.55), + SingleValueData(time: .string("2019-05-15"), value: 84.92), + SingleValueData(time: .string("2019-05-16"), value: 83.32), + SingleValueData(time: .string("2019-05-17"), value: 83.04), + SingleValueData(time: .string("2019-05-20"), value: 83.92), + SingleValueData(time: .string("2019-05-21"), value: 84.24), + SingleValueData(time: .string("2019-05-22"), value: 84.00), + SingleValueData(time: .string("2019-05-23"), value: 84.26), + SingleValueData(time: .string("2019-05-24"), value: 84.00), + SingleValueData(time: .string("2019-05-27"), value: 83.80), + SingleValueData(time: .string("2019-05-28"), value: 84.32), + SingleValueData(time: .string("2019-05-29"), value: 83.88), + SingleValueData(time: .string("2019-05-30"), value: 84.58), + SingleValueData(time: .string("2019-05-31"), value: 81.20), + SingleValueData(time: .string("2019-06-03"), value: 84.35), + SingleValueData(time: .string("2019-06-04"), value: 85.66), + SingleValueData(time: .string("2019-06-05"), value: 86.51) ] override func viewDidLoad() { diff --git a/Example/LightweightCharts/Example/TrackingTooltipViewController.swift b/Example/LightweightCharts/Example/TrackingTooltipViewController.swift index ff4ac03..0e25606 100644 --- a/Example/LightweightCharts/Example/TrackingTooltipViewController.swift +++ b/Example/LightweightCharts/Example/TrackingTooltipViewController.swift @@ -79,156 +79,156 @@ class TrackingTooltipViewController: UIViewController { ) let series = chart.addAreaSeries(options: options) let data = [ - LineData(time: .string("2016-07-18"), value: 98.66), - LineData(time: .string("2016-07-25"), value: 104.21), - LineData(time: .string("2016-08-01"), value: 107.48), - LineData(time: .string("2016-08-08"), value: 108.18), - LineData(time: .string("2016-08-15"), value: 109.36), - LineData(time: .string("2016-08-22"), value: 106.94), - LineData(time: .string("2016-08-29"), value: 107.73), - LineData(time: .string("2016-09-05"), value: 103.13), - LineData(time: .string("2016-09-12"), value: 114.92), - LineData(time: .string("2016-09-19"), value: 112.71), - LineData(time: .string("2016-09-26"), value: 113.05), - LineData(time: .string("2016-10-03"), value: 114.06), - LineData(time: .string("2016-10-10"), value: 117.63), - LineData(time: .string("2016-10-17"), value: 116.60), - LineData(time: .string("2016-10-24"), value: 113.72), - LineData(time: .string("2016-10-31"), value: 108.84), - LineData(time: .string("2016-11-07"), value: 108.43), - LineData(time: .string("2016-11-14"), value: 110.06), - LineData(time: .string("2016-11-21"), value: 111.79), - LineData(time: .string("2016-11-28"), value: 109.90), - LineData(time: .string("2016-12-05"), value: 113.95), - LineData(time: .string("2016-12-12"), value: 115.97), - LineData(time: .string("2016-12-19"), value: 116.52), - LineData(time: .string("2016-12-26"), value: 115.82), - LineData(time: .string("2017-01-02"), value: 117.91), - LineData(time: .string("2017-01-09"), value: 119.04), - LineData(time: .string("2017-01-16"), value: 120.00), - LineData(time: .string("2017-01-23"), value: 121.95), - LineData(time: .string("2017-01-30"), value: 129.08), - LineData(time: .string("2017-02-06"), value: 132.12), - LineData(time: .string("2017-02-13"), value: 135.72), - LineData(time: .string("2017-02-20"), value: 136.66), - LineData(time: .string("2017-02-27"), value: 139.78), - LineData(time: .string("2017-03-06"), value: 139.14), - LineData(time: .string("2017-03-13"), value: 139.99), - LineData(time: .string("2017-03-20"), value: 140.64), - LineData(time: .string("2017-03-27"), value: 143.66), - LineData(time: .string("2017-04-03"), value: 143.34), - LineData(time: .string("2017-04-10"), value: 141.05), - LineData(time: .string("2017-04-17"), value: 142.27), - LineData(time: .string("2017-04-24"), value: 143.65), - LineData(time: .string("2017-05-01"), value: 148.96), - LineData(time: .string("2017-05-08"), value: 156.10), - LineData(time: .string("2017-05-15"), value: 153.06), - LineData(time: .string("2017-05-22"), value: 153.61), - LineData(time: .string("2017-05-29"), value: 155.45), - LineData(time: .string("2017-06-05"), value: 148.98), - LineData(time: .string("2017-06-12"), value: 142.27), - LineData(time: .string("2017-06-19"), value: 146.28), - LineData(time: .string("2017-06-26"), value: 144.02), - LineData(time: .string("2017-07-03"), value: 144.18), - LineData(time: .string("2017-07-10"), value: 149.04), - LineData(time: .string("2017-07-17"), value: 150.27), - LineData(time: .string("2017-07-24"), value: 149.50), - LineData(time: .string("2017-07-31"), value: 156.39), - LineData(time: .string("2017-08-07"), value: 157.48), - LineData(time: .string("2017-08-14"), value: 157.50), - LineData(time: .string("2017-08-21"), value: 159.86), - LineData(time: .string("2017-08-28"), value: 164.05), - LineData(time: .string("2017-09-04"), value: 158.63), - LineData(time: .string("2017-09-11"), value: 159.88), - LineData(time: .string("2017-09-18"), value: 151.89), - LineData(time: .string("2017-09-25"), value: 154.12), - LineData(time: .string("2017-10-02"), value: 155.30), - LineData(time: .string("2017-10-09"), value: 156.99), - LineData(time: .string("2017-10-16"), value: 156.25), - LineData(time: .string("2017-10-23"), value: 163.05), - LineData(time: .string("2017-10-30"), value: 172.50), - LineData(time: .string("2017-11-06"), value: 174.67), - LineData(time: .string("2017-11-13"), value: 170.15), - LineData(time: .string("2017-11-20"), value: 174.97), - LineData(time: .string("2017-11-27"), value: 171.05), - LineData(time: .string("2017-12-04"), value: 169.37), - LineData(time: .string("2017-12-11"), value: 173.97), - LineData(time: .string("2017-12-18"), value: 175.01), - LineData(time: .string("2017-12-25"), value: 169.23), - LineData(time: .string("2018-01-01"), value: 175.00), - LineData(time: .string("2018-01-08"), value: 177.09), - LineData(time: .string("2018-01-15"), value: 178.46), - LineData(time: .string("2018-01-22"), value: 171.51), - LineData(time: .string("2018-01-29"), value: 160.50), - LineData(time: .string("2018-02-05"), value: 156.41), - LineData(time: .string("2018-02-12"), value: 172.43), - LineData(time: .string("2018-02-19"), value: 175.50), - LineData(time: .string("2018-02-26"), value: 176.21), - LineData(time: .string("2018-03-05"), value: 179.98), - LineData(time: .string("2018-03-12"), value: 178.02), - LineData(time: .string("2018-03-19"), value: 164.94), - LineData(time: .string("2018-03-26"), value: 167.78), - LineData(time: .string("2018-04-02"), value: 168.38), - LineData(time: .string("2018-04-09"), value: 174.73), - LineData(time: .string("2018-04-16"), value: 165.72), - LineData(time: .string("2018-04-23"), value: 162.32), - LineData(time: .string("2018-04-30"), value: 183.83), - LineData(time: .string("2018-05-07"), value: 188.59), - LineData(time: .string("2018-05-14"), value: 186.31), - LineData(time: .string("2018-05-21"), value: 188.58), - LineData(time: .string("2018-05-28"), value: 190.24), - LineData(time: .string("2018-06-04"), value: 191.70), - LineData(time: .string("2018-06-11"), value: 188.84), - LineData(time: .string("2018-06-18"), value: 184.92), - LineData(time: .string("2018-06-25"), value: 185.11), - LineData(time: .string("2018-07-02"), value: 187.97), - LineData(time: .string("2018-07-09"), value: 191.33), - LineData(time: .string("2018-07-16"), value: 191.44), - LineData(time: .string("2018-07-23"), value: 190.98), - LineData(time: .string("2018-07-30"), value: 207.99), - LineData(time: .string("2018-08-06"), value: 207.53), - LineData(time: .string("2018-08-13"), value: 217.58), - LineData(time: .string("2018-08-20"), value: 216.16), - LineData(time: .string("2018-08-27"), value: 227.63), - LineData(time: .string("2018-09-03"), value: 221.30), - LineData(time: .string("2018-09-10"), value: 223.84), - LineData(time: .string("2018-09-17"), value: 217.66), - LineData(time: .string("2018-09-24"), value: 225.74), - LineData(time: .string("2018-10-01"), value: 224.29), - LineData(time: .string("2018-10-08"), value: 222.11), - LineData(time: .string("2018-10-15"), value: 219.31), - LineData(time: .string("2018-10-22"), value: 216.30), - LineData(time: .string("2018-10-29"), value: 207.48), - LineData(time: .string("2018-11-05"), value: 204.47), - LineData(time: .string("2018-11-12"), value: 193.53), - LineData(time: .string("2018-11-19"), value: 172.29), - LineData(time: .string("2018-11-26"), value: 178.58), - LineData(time: .string("2018-12-03"), value: 168.49), - LineData(time: .string("2018-12-10"), value: 165.48), - LineData(time: .string("2018-12-17"), value: 150.73), - LineData(time: .string("2018-12-24"), value: 156.23), - LineData(time: .string("2018-12-31"), value: 148.26), - LineData(time: .string("2019-01-07"), value: 152.29), - LineData(time: .string("2019-01-14"), value: 156.82), - LineData(time: .string("2019-01-21"), value: 157.76), - LineData(time: .string("2019-01-28"), value: 166.52), - LineData(time: .string("2019-02-04"), value: 170.41), - LineData(time: .string("2019-02-11"), value: 170.42), - LineData(time: .string("2019-02-18"), value: 172.97), - LineData(time: .string("2019-02-25"), value: 174.97), - LineData(time: .string("2019-03-04"), value: 172.91), - LineData(time: .string("2019-03-11"), value: 186.12), - LineData(time: .string("2019-03-18"), value: 191.05), - LineData(time: .string("2019-03-25"), value: 189.95), - LineData(time: .string("2019-04-01"), value: 197.00), - LineData(time: .string("2019-04-08"), value: 198.87), - LineData(time: .string("2019-04-15"), value: 203.86), - LineData(time: .string("2019-04-22"), value: 204.30), - LineData(time: .string("2019-04-29"), value: 211.75), - LineData(time: .string("2019-05-06"), value: 197.18), - LineData(time: .string("2019-05-13"), value: 189.00), - LineData(time: .string("2019-05-20"), value: 178.97), - LineData(time: .string("2019-05-27"), value: 179.03) + SingleValueData(time: .string("2016-07-18"), value: 98.66), + SingleValueData(time: .string("2016-07-25"), value: 104.21), + SingleValueData(time: .string("2016-08-01"), value: 107.48), + SingleValueData(time: .string("2016-08-08"), value: 108.18), + SingleValueData(time: .string("2016-08-15"), value: 109.36), + SingleValueData(time: .string("2016-08-22"), value: 106.94), + SingleValueData(time: .string("2016-08-29"), value: 107.73), + SingleValueData(time: .string("2016-09-05"), value: 103.13), + SingleValueData(time: .string("2016-09-12"), value: 114.92), + SingleValueData(time: .string("2016-09-19"), value: 112.71), + SingleValueData(time: .string("2016-09-26"), value: 113.05), + SingleValueData(time: .string("2016-10-03"), value: 114.06), + SingleValueData(time: .string("2016-10-10"), value: 117.63), + SingleValueData(time: .string("2016-10-17"), value: 116.60), + SingleValueData(time: .string("2016-10-24"), value: 113.72), + SingleValueData(time: .string("2016-10-31"), value: 108.84), + SingleValueData(time: .string("2016-11-07"), value: 108.43), + SingleValueData(time: .string("2016-11-14"), value: 110.06), + SingleValueData(time: .string("2016-11-21"), value: 111.79), + SingleValueData(time: .string("2016-11-28"), value: 109.90), + SingleValueData(time: .string("2016-12-05"), value: 113.95), + SingleValueData(time: .string("2016-12-12"), value: 115.97), + SingleValueData(time: .string("2016-12-19"), value: 116.52), + SingleValueData(time: .string("2016-12-26"), value: 115.82), + SingleValueData(time: .string("2017-01-02"), value: 117.91), + SingleValueData(time: .string("2017-01-09"), value: 119.04), + SingleValueData(time: .string("2017-01-16"), value: 120.00), + SingleValueData(time: .string("2017-01-23"), value: 121.95), + SingleValueData(time: .string("2017-01-30"), value: 129.08), + SingleValueData(time: .string("2017-02-06"), value: 132.12), + SingleValueData(time: .string("2017-02-13"), value: 135.72), + SingleValueData(time: .string("2017-02-20"), value: 136.66), + SingleValueData(time: .string("2017-02-27"), value: 139.78), + SingleValueData(time: .string("2017-03-06"), value: 139.14), + SingleValueData(time: .string("2017-03-13"), value: 139.99), + SingleValueData(time: .string("2017-03-20"), value: 140.64), + SingleValueData(time: .string("2017-03-27"), value: 143.66), + SingleValueData(time: .string("2017-04-03"), value: 143.34), + SingleValueData(time: .string("2017-04-10"), value: 141.05), + SingleValueData(time: .string("2017-04-17"), value: 142.27), + SingleValueData(time: .string("2017-04-24"), value: 143.65), + SingleValueData(time: .string("2017-05-01"), value: 148.96), + SingleValueData(time: .string("2017-05-08"), value: 156.10), + SingleValueData(time: .string("2017-05-15"), value: 153.06), + SingleValueData(time: .string("2017-05-22"), value: 153.61), + SingleValueData(time: .string("2017-05-29"), value: 155.45), + SingleValueData(time: .string("2017-06-05"), value: 148.98), + SingleValueData(time: .string("2017-06-12"), value: 142.27), + SingleValueData(time: .string("2017-06-19"), value: 146.28), + SingleValueData(time: .string("2017-06-26"), value: 144.02), + SingleValueData(time: .string("2017-07-03"), value: 144.18), + SingleValueData(time: .string("2017-07-10"), value: 149.04), + SingleValueData(time: .string("2017-07-17"), value: 150.27), + SingleValueData(time: .string("2017-07-24"), value: 149.50), + SingleValueData(time: .string("2017-07-31"), value: 156.39), + SingleValueData(time: .string("2017-08-07"), value: 157.48), + SingleValueData(time: .string("2017-08-14"), value: 157.50), + SingleValueData(time: .string("2017-08-21"), value: 159.86), + SingleValueData(time: .string("2017-08-28"), value: 164.05), + SingleValueData(time: .string("2017-09-04"), value: 158.63), + SingleValueData(time: .string("2017-09-11"), value: 159.88), + SingleValueData(time: .string("2017-09-18"), value: 151.89), + SingleValueData(time: .string("2017-09-25"), value: 154.12), + SingleValueData(time: .string("2017-10-02"), value: 155.30), + SingleValueData(time: .string("2017-10-09"), value: 156.99), + SingleValueData(time: .string("2017-10-16"), value: 156.25), + SingleValueData(time: .string("2017-10-23"), value: 163.05), + SingleValueData(time: .string("2017-10-30"), value: 172.50), + SingleValueData(time: .string("2017-11-06"), value: 174.67), + SingleValueData(time: .string("2017-11-13"), value: 170.15), + SingleValueData(time: .string("2017-11-20"), value: 174.97), + SingleValueData(time: .string("2017-11-27"), value: 171.05), + SingleValueData(time: .string("2017-12-04"), value: 169.37), + SingleValueData(time: .string("2017-12-11"), value: 173.97), + SingleValueData(time: .string("2017-12-18"), value: 175.01), + SingleValueData(time: .string("2017-12-25"), value: 169.23), + SingleValueData(time: .string("2018-01-01"), value: 175.00), + SingleValueData(time: .string("2018-01-08"), value: 177.09), + SingleValueData(time: .string("2018-01-15"), value: 178.46), + SingleValueData(time: .string("2018-01-22"), value: 171.51), + SingleValueData(time: .string("2018-01-29"), value: 160.50), + SingleValueData(time: .string("2018-02-05"), value: 156.41), + SingleValueData(time: .string("2018-02-12"), value: 172.43), + SingleValueData(time: .string("2018-02-19"), value: 175.50), + SingleValueData(time: .string("2018-02-26"), value: 176.21), + SingleValueData(time: .string("2018-03-05"), value: 179.98), + SingleValueData(time: .string("2018-03-12"), value: 178.02), + SingleValueData(time: .string("2018-03-19"), value: 164.94), + SingleValueData(time: .string("2018-03-26"), value: 167.78), + SingleValueData(time: .string("2018-04-02"), value: 168.38), + SingleValueData(time: .string("2018-04-09"), value: 174.73), + SingleValueData(time: .string("2018-04-16"), value: 165.72), + SingleValueData(time: .string("2018-04-23"), value: 162.32), + SingleValueData(time: .string("2018-04-30"), value: 183.83), + SingleValueData(time: .string("2018-05-07"), value: 188.59), + SingleValueData(time: .string("2018-05-14"), value: 186.31), + SingleValueData(time: .string("2018-05-21"), value: 188.58), + SingleValueData(time: .string("2018-05-28"), value: 190.24), + SingleValueData(time: .string("2018-06-04"), value: 191.70), + SingleValueData(time: .string("2018-06-11"), value: 188.84), + SingleValueData(time: .string("2018-06-18"), value: 184.92), + SingleValueData(time: .string("2018-06-25"), value: 185.11), + SingleValueData(time: .string("2018-07-02"), value: 187.97), + SingleValueData(time: .string("2018-07-09"), value: 191.33), + SingleValueData(time: .string("2018-07-16"), value: 191.44), + SingleValueData(time: .string("2018-07-23"), value: 190.98), + SingleValueData(time: .string("2018-07-30"), value: 207.99), + SingleValueData(time: .string("2018-08-06"), value: 207.53), + SingleValueData(time: .string("2018-08-13"), value: 217.58), + SingleValueData(time: .string("2018-08-20"), value: 216.16), + SingleValueData(time: .string("2018-08-27"), value: 227.63), + SingleValueData(time: .string("2018-09-03"), value: 221.30), + SingleValueData(time: .string("2018-09-10"), value: 223.84), + SingleValueData(time: .string("2018-09-17"), value: 217.66), + SingleValueData(time: .string("2018-09-24"), value: 225.74), + SingleValueData(time: .string("2018-10-01"), value: 224.29), + SingleValueData(time: .string("2018-10-08"), value: 222.11), + SingleValueData(time: .string("2018-10-15"), value: 219.31), + SingleValueData(time: .string("2018-10-22"), value: 216.30), + SingleValueData(time: .string("2018-10-29"), value: 207.48), + SingleValueData(time: .string("2018-11-05"), value: 204.47), + SingleValueData(time: .string("2018-11-12"), value: 193.53), + SingleValueData(time: .string("2018-11-19"), value: 172.29), + SingleValueData(time: .string("2018-11-26"), value: 178.58), + SingleValueData(time: .string("2018-12-03"), value: 168.49), + SingleValueData(time: .string("2018-12-10"), value: 165.48), + SingleValueData(time: .string("2018-12-17"), value: 150.73), + SingleValueData(time: .string("2018-12-24"), value: 156.23), + SingleValueData(time: .string("2018-12-31"), value: 148.26), + SingleValueData(time: .string("2019-01-07"), value: 152.29), + SingleValueData(time: .string("2019-01-14"), value: 156.82), + SingleValueData(time: .string("2019-01-21"), value: 157.76), + SingleValueData(time: .string("2019-01-28"), value: 166.52), + SingleValueData(time: .string("2019-02-04"), value: 170.41), + SingleValueData(time: .string("2019-02-11"), value: 170.42), + SingleValueData(time: .string("2019-02-18"), value: 172.97), + SingleValueData(time: .string("2019-02-25"), value: 174.97), + SingleValueData(time: .string("2019-03-04"), value: 172.91), + SingleValueData(time: .string("2019-03-11"), value: 186.12), + SingleValueData(time: .string("2019-03-18"), value: 191.05), + SingleValueData(time: .string("2019-03-25"), value: 189.95), + SingleValueData(time: .string("2019-04-01"), value: 197.00), + SingleValueData(time: .string("2019-04-08"), value: 198.87), + SingleValueData(time: .string("2019-04-15"), value: 203.86), + SingleValueData(time: .string("2019-04-22"), value: 204.30), + SingleValueData(time: .string("2019-04-29"), value: 211.75), + SingleValueData(time: .string("2019-05-06"), value: 197.18), + SingleValueData(time: .string("2019-05-13"), value: 189.00), + SingleValueData(time: .string("2019-05-20"), value: 178.97), + SingleValueData(time: .string("2019-05-27"), value: 179.03) ] series.setData(data: data) self.series = series diff --git a/Example/LightweightCharts/Example/VolumeStudyViewController.swift b/Example/LightweightCharts/Example/VolumeStudyViewController.swift index e765d8e..eff40f9 100644 --- a/Example/LightweightCharts/Example/VolumeStudyViewController.swift +++ b/Example/LightweightCharts/Example/VolumeStudyViewController.swift @@ -63,156 +63,156 @@ class VolumeStudyViewController: UIViewController { ) let areaSeries = chart.addAreaSeries(options: areaSeriesOptions) let areaData = [ - LineData(time: .string("2018-10-19"), value: 54.90), - LineData(time: .string("2018-10-22"), value: 54.98), - LineData(time: .string("2018-10-23"), value: 57.21), - LineData(time: .string("2018-10-24"), value: 57.42), - LineData(time: .string("2018-10-25"), value: 56.43), - LineData(time: .string("2018-10-26"), value: 55.51), - LineData(time: .string("2018-10-29"), value: 56.48), - LineData(time: .string("2018-10-30"), value: 58.18), - LineData(time: .string("2018-10-31"), value: 57.09), - LineData(time: .string("2018-11-01"), value: 56.05), - LineData(time: .string("2018-11-02"), value: 56.63), - LineData(time: .string("2018-11-05"), value: 57.21), - LineData(time: .string("2018-11-06"), value: 57.21), - LineData(time: .string("2018-11-07"), value: 57.65), - LineData(time: .string("2018-11-08"), value: 58.27), - LineData(time: .string("2018-11-09"), value: 58.46), - LineData(time: .string("2018-11-12"), value: 58.72), - LineData(time: .string("2018-11-13"), value: 58.66), - LineData(time: .string("2018-11-14"), value: 58.94), - LineData(time: .string("2018-11-15"), value: 59.08), - LineData(time: .string("2018-11-16"), value: 60.21), - LineData(time: .string("2018-11-19"), value: 60.62), - LineData(time: .string("2018-11-20"), value: 59.46), - LineData(time: .string("2018-11-21"), value: 59.16), - LineData(time: .string("2018-11-23"), value: 58.64), - LineData(time: .string("2018-11-26"), value: 59.17), - LineData(time: .string("2018-11-27"), value: 60.65), - LineData(time: .string("2018-11-28"), value: 60.06), - LineData(time: .string("2018-11-29"), value: 59.45), - LineData(time: .string("2018-11-30"), value: 60.30), - LineData(time: .string("2018-12-03"), value: 58.16), - LineData(time: .string("2018-12-04"), value: 58.09), - LineData(time: .string("2018-12-06"), value: 58.08), - LineData(time: .string("2018-12-07"), value: 57.68), - LineData(time: .string("2018-12-10"), value: 58.27), - LineData(time: .string("2018-12-11"), value: 58.85), - LineData(time: .string("2018-12-12"), value: 57.25), - LineData(time: .string("2018-12-13"), value: 57.09), - LineData(time: .string("2018-12-14"), value: 57.08), - LineData(time: .string("2018-12-17"), value: 55.95), - LineData(time: .string("2018-12-18"), value: 55.65), - LineData(time: .string("2018-12-19"), value: 55.86), - LineData(time: .string("2018-12-20"), value: 55.07), - LineData(time: .string("2018-12-21"), value: 54.92), - LineData(time: .string("2018-12-24"), value: 53.05), - LineData(time: .string("2018-12-26"), value: 54.44), - LineData(time: .string("2018-12-27"), value: 55.15), - LineData(time: .string("2018-12-28"), value: 55.27), - LineData(time: .string("2018-12-31"), value: 56.22), - LineData(time: .string("2019-01-02"), value: 56.02), - LineData(time: .string("2019-01-03"), value: 56.22), - LineData(time: .string("2019-01-04"), value: 56.36), - LineData(time: .string("2019-01-07"), value: 56.72), - LineData(time: .string("2019-01-08"), value: 58.38), - LineData(time: .string("2019-01-09"), value: 57.05), - LineData(time: .string("2019-01-10"), value: 57.60), - LineData(time: .string("2019-01-11"), value: 58.02), - LineData(time: .string("2019-01-14"), value: 58.03), - LineData(time: .string("2019-01-15"), value: 58.10), - LineData(time: .string("2019-01-16"), value: 57.08), - LineData(time: .string("2019-01-17"), value: 56.83), - LineData(time: .string("2019-01-18"), value: 57.09), - LineData(time: .string("2019-01-22"), value: 56.99), - LineData(time: .string("2019-01-23"), value: 57.76), - LineData(time: .string("2019-01-24"), value: 57.07), - LineData(time: .string("2019-01-25"), value: 56.40), - LineData(time: .string("2019-01-28"), value: 55.07), - LineData(time: .string("2019-01-29"), value: 53.28), - LineData(time: .string("2019-01-30"), value: 54.00), - LineData(time: .string("2019-01-31"), value: 55.06), - LineData(time: .string("2019-02-01"), value: 54.55), - LineData(time: .string("2019-02-04"), value: 54.04), - LineData(time: .string("2019-02-05"), value: 54.14), - LineData(time: .string("2019-02-06"), value: 53.79), - LineData(time: .string("2019-02-07"), value: 53.57), - LineData(time: .string("2019-02-08"), value: 53.95), - LineData(time: .string("2019-02-11"), value: 54.05), - LineData(time: .string("2019-02-12"), value: 54.42), - LineData(time: .string("2019-02-13"), value: 54.48), - LineData(time: .string("2019-02-14"), value: 54.03), - LineData(time: .string("2019-02-15"), value: 55.16), - LineData(time: .string("2019-02-19"), value: 55.44), - LineData(time: .string("2019-02-20"), value: 55.76), - LineData(time: .string("2019-02-21"), value: 56.15), - LineData(time: .string("2019-02-22"), value: 56.92), - LineData(time: .string("2019-02-25"), value: 56.78), - LineData(time: .string("2019-02-26"), value: 56.64), - LineData(time: .string("2019-02-27"), value: 56.72), - LineData(time: .string("2019-02-28"), value: 56.92), - LineData(time: .string("2019-03-01"), value: 56.96), - LineData(time: .string("2019-03-04"), value: 56.24), - LineData(time: .string("2019-03-05"), value: 56.08), - LineData(time: .string("2019-03-06"), value: 55.68), - LineData(time: .string("2019-03-07"), value: 56.30), - LineData(time: .string("2019-03-08"), value: 56.53), - LineData(time: .string("2019-03-11"), value: 57.58), - LineData(time: .string("2019-03-12"), value: 57.43), - LineData(time: .string("2019-03-13"), value: 57.66), - LineData(time: .string("2019-03-14"), value: 57.95), - LineData(time: .string("2019-03-15"), value: 58.39), - LineData(time: .string("2019-03-18"), value: 58.07), - LineData(time: .string("2019-03-19"), value: 57.50), - LineData(time: .string("2019-03-20"), value: 57.67), - LineData(time: .string("2019-03-21"), value: 58.29), - LineData(time: .string("2019-03-22"), value: 59.76), - LineData(time: .string("2019-03-25"), value: 60.08), - LineData(time: .string("2019-03-26"), value: 60.63), - LineData(time: .string("2019-03-27"), value: 60.88), - LineData(time: .string("2019-03-28"), value: 59.08), - LineData(time: .string("2019-03-29"), value: 59.13), - LineData(time: .string("2019-04-01"), value: 59.09), - LineData(time: .string("2019-04-02"), value: 58.53), - LineData(time: .string("2019-04-03"), value: 58.87), - LineData(time: .string("2019-04-04"), value: 58.99), - LineData(time: .string("2019-04-05"), value: 59.09), - LineData(time: .string("2019-04-08"), value: 59.13), - LineData(time: .string("2019-04-09"), value: 58.40), - LineData(time: .string("2019-04-10"), value: 58.61), - LineData(time: .string("2019-04-11"), value: 58.56), - LineData(time: .string("2019-04-12"), value: 58.74), - LineData(time: .string("2019-04-15"), value: 58.71), - LineData(time: .string("2019-04-16"), value: 58.79), - LineData(time: .string("2019-04-17"), value: 57.78), - LineData(time: .string("2019-04-18"), value: 58.04), - LineData(time: .string("2019-04-22"), value: 58.37), - LineData(time: .string("2019-04-23"), value: 57.15), - LineData(time: .string("2019-04-24"), value: 57.08), - LineData(time: .string("2019-04-25"), value: 55.85), - LineData(time: .string("2019-04-26"), value: 56.58), - LineData(time: .string("2019-04-29"), value: 56.84), - LineData(time: .string("2019-04-30"), value: 57.19), - LineData(time: .string("2019-05-01"), value: 56.52), - LineData(time: .string("2019-05-02"), value: 56.99), - LineData(time: .string("2019-05-03"), value: 57.24), - LineData(time: .string("2019-05-06"), value: 56.91), - LineData(time: .string("2019-05-07"), value: 56.63), - LineData(time: .string("2019-05-08"), value: 56.38), - LineData(time: .string("2019-05-09"), value: 56.48), - LineData(time: .string("2019-05-10"), value: 56.91), - LineData(time: .string("2019-05-13"), value: 56.75), - LineData(time: .string("2019-05-14"), value: 56.55), - LineData(time: .string("2019-05-15"), value: 56.81), - LineData(time: .string("2019-05-16"), value: 57.38), - LineData(time: .string("2019-05-17"), value: 58.09), - LineData(time: .string("2019-05-20"), value: 59.01), - LineData(time: .string("2019-05-21"), value: 59.50), - LineData(time: .string("2019-05-22"), value: 59.25), - LineData(time: .string("2019-05-23"), value: 58.87), - LineData(time: .string("2019-05-24"), value: 59.32), - LineData(time: .string("2019-05-28"), value: 59.57) + SingleValueData(time: .string("2018-10-19"), value: 54.90), + SingleValueData(time: .string("2018-10-22"), value: 54.98), + SingleValueData(time: .string("2018-10-23"), value: 57.21), + SingleValueData(time: .string("2018-10-24"), value: 57.42), + SingleValueData(time: .string("2018-10-25"), value: 56.43), + SingleValueData(time: .string("2018-10-26"), value: 55.51), + SingleValueData(time: .string("2018-10-29"), value: 56.48), + SingleValueData(time: .string("2018-10-30"), value: 58.18), + SingleValueData(time: .string("2018-10-31"), value: 57.09), + SingleValueData(time: .string("2018-11-01"), value: 56.05), + SingleValueData(time: .string("2018-11-02"), value: 56.63), + SingleValueData(time: .string("2018-11-05"), value: 57.21), + SingleValueData(time: .string("2018-11-06"), value: 57.21), + SingleValueData(time: .string("2018-11-07"), value: 57.65), + SingleValueData(time: .string("2018-11-08"), value: 58.27), + SingleValueData(time: .string("2018-11-09"), value: 58.46), + SingleValueData(time: .string("2018-11-12"), value: 58.72), + SingleValueData(time: .string("2018-11-13"), value: 58.66), + SingleValueData(time: .string("2018-11-14"), value: 58.94), + SingleValueData(time: .string("2018-11-15"), value: 59.08), + SingleValueData(time: .string("2018-11-16"), value: 60.21), + SingleValueData(time: .string("2018-11-19"), value: 60.62), + SingleValueData(time: .string("2018-11-20"), value: 59.46), + SingleValueData(time: .string("2018-11-21"), value: 59.16), + SingleValueData(time: .string("2018-11-23"), value: 58.64), + SingleValueData(time: .string("2018-11-26"), value: 59.17), + SingleValueData(time: .string("2018-11-27"), value: 60.65), + SingleValueData(time: .string("2018-11-28"), value: 60.06), + SingleValueData(time: .string("2018-11-29"), value: 59.45), + SingleValueData(time: .string("2018-11-30"), value: 60.30), + SingleValueData(time: .string("2018-12-03"), value: 58.16), + SingleValueData(time: .string("2018-12-04"), value: 58.09), + SingleValueData(time: .string("2018-12-06"), value: 58.08), + SingleValueData(time: .string("2018-12-07"), value: 57.68), + SingleValueData(time: .string("2018-12-10"), value: 58.27), + SingleValueData(time: .string("2018-12-11"), value: 58.85), + SingleValueData(time: .string("2018-12-12"), value: 57.25), + SingleValueData(time: .string("2018-12-13"), value: 57.09), + SingleValueData(time: .string("2018-12-14"), value: 57.08), + SingleValueData(time: .string("2018-12-17"), value: 55.95), + SingleValueData(time: .string("2018-12-18"), value: 55.65), + SingleValueData(time: .string("2018-12-19"), value: 55.86), + SingleValueData(time: .string("2018-12-20"), value: 55.07), + SingleValueData(time: .string("2018-12-21"), value: 54.92), + SingleValueData(time: .string("2018-12-24"), value: 53.05), + SingleValueData(time: .string("2018-12-26"), value: 54.44), + SingleValueData(time: .string("2018-12-27"), value: 55.15), + SingleValueData(time: .string("2018-12-28"), value: 55.27), + SingleValueData(time: .string("2018-12-31"), value: 56.22), + SingleValueData(time: .string("2019-01-02"), value: 56.02), + SingleValueData(time: .string("2019-01-03"), value: 56.22), + SingleValueData(time: .string("2019-01-04"), value: 56.36), + SingleValueData(time: .string("2019-01-07"), value: 56.72), + SingleValueData(time: .string("2019-01-08"), value: 58.38), + SingleValueData(time: .string("2019-01-09"), value: 57.05), + SingleValueData(time: .string("2019-01-10"), value: 57.60), + SingleValueData(time: .string("2019-01-11"), value: 58.02), + SingleValueData(time: .string("2019-01-14"), value: 58.03), + SingleValueData(time: .string("2019-01-15"), value: 58.10), + SingleValueData(time: .string("2019-01-16"), value: 57.08), + SingleValueData(time: .string("2019-01-17"), value: 56.83), + SingleValueData(time: .string("2019-01-18"), value: 57.09), + SingleValueData(time: .string("2019-01-22"), value: 56.99), + SingleValueData(time: .string("2019-01-23"), value: 57.76), + SingleValueData(time: .string("2019-01-24"), value: 57.07), + SingleValueData(time: .string("2019-01-25"), value: 56.40), + SingleValueData(time: .string("2019-01-28"), value: 55.07), + SingleValueData(time: .string("2019-01-29"), value: 53.28), + SingleValueData(time: .string("2019-01-30"), value: 54.00), + SingleValueData(time: .string("2019-01-31"), value: 55.06), + SingleValueData(time: .string("2019-02-01"), value: 54.55), + SingleValueData(time: .string("2019-02-04"), value: 54.04), + SingleValueData(time: .string("2019-02-05"), value: 54.14), + SingleValueData(time: .string("2019-02-06"), value: 53.79), + SingleValueData(time: .string("2019-02-07"), value: 53.57), + SingleValueData(time: .string("2019-02-08"), value: 53.95), + SingleValueData(time: .string("2019-02-11"), value: 54.05), + SingleValueData(time: .string("2019-02-12"), value: 54.42), + SingleValueData(time: .string("2019-02-13"), value: 54.48), + SingleValueData(time: .string("2019-02-14"), value: 54.03), + SingleValueData(time: .string("2019-02-15"), value: 55.16), + SingleValueData(time: .string("2019-02-19"), value: 55.44), + SingleValueData(time: .string("2019-02-20"), value: 55.76), + SingleValueData(time: .string("2019-02-21"), value: 56.15), + SingleValueData(time: .string("2019-02-22"), value: 56.92), + SingleValueData(time: .string("2019-02-25"), value: 56.78), + SingleValueData(time: .string("2019-02-26"), value: 56.64), + SingleValueData(time: .string("2019-02-27"), value: 56.72), + SingleValueData(time: .string("2019-02-28"), value: 56.92), + SingleValueData(time: .string("2019-03-01"), value: 56.96), + SingleValueData(time: .string("2019-03-04"), value: 56.24), + SingleValueData(time: .string("2019-03-05"), value: 56.08), + SingleValueData(time: .string("2019-03-06"), value: 55.68), + SingleValueData(time: .string("2019-03-07"), value: 56.30), + SingleValueData(time: .string("2019-03-08"), value: 56.53), + SingleValueData(time: .string("2019-03-11"), value: 57.58), + SingleValueData(time: .string("2019-03-12"), value: 57.43), + SingleValueData(time: .string("2019-03-13"), value: 57.66), + SingleValueData(time: .string("2019-03-14"), value: 57.95), + SingleValueData(time: .string("2019-03-15"), value: 58.39), + SingleValueData(time: .string("2019-03-18"), value: 58.07), + SingleValueData(time: .string("2019-03-19"), value: 57.50), + SingleValueData(time: .string("2019-03-20"), value: 57.67), + SingleValueData(time: .string("2019-03-21"), value: 58.29), + SingleValueData(time: .string("2019-03-22"), value: 59.76), + SingleValueData(time: .string("2019-03-25"), value: 60.08), + SingleValueData(time: .string("2019-03-26"), value: 60.63), + SingleValueData(time: .string("2019-03-27"), value: 60.88), + SingleValueData(time: .string("2019-03-28"), value: 59.08), + SingleValueData(time: .string("2019-03-29"), value: 59.13), + SingleValueData(time: .string("2019-04-01"), value: 59.09), + SingleValueData(time: .string("2019-04-02"), value: 58.53), + SingleValueData(time: .string("2019-04-03"), value: 58.87), + SingleValueData(time: .string("2019-04-04"), value: 58.99), + SingleValueData(time: .string("2019-04-05"), value: 59.09), + SingleValueData(time: .string("2019-04-08"), value: 59.13), + SingleValueData(time: .string("2019-04-09"), value: 58.40), + SingleValueData(time: .string("2019-04-10"), value: 58.61), + SingleValueData(time: .string("2019-04-11"), value: 58.56), + SingleValueData(time: .string("2019-04-12"), value: 58.74), + SingleValueData(time: .string("2019-04-15"), value: 58.71), + SingleValueData(time: .string("2019-04-16"), value: 58.79), + SingleValueData(time: .string("2019-04-17"), value: 57.78), + SingleValueData(time: .string("2019-04-18"), value: 58.04), + SingleValueData(time: .string("2019-04-22"), value: 58.37), + SingleValueData(time: .string("2019-04-23"), value: 57.15), + SingleValueData(time: .string("2019-04-24"), value: 57.08), + SingleValueData(time: .string("2019-04-25"), value: 55.85), + SingleValueData(time: .string("2019-04-26"), value: 56.58), + SingleValueData(time: .string("2019-04-29"), value: 56.84), + SingleValueData(time: .string("2019-04-30"), value: 57.19), + SingleValueData(time: .string("2019-05-01"), value: 56.52), + SingleValueData(time: .string("2019-05-02"), value: 56.99), + SingleValueData(time: .string("2019-05-03"), value: 57.24), + SingleValueData(time: .string("2019-05-06"), value: 56.91), + SingleValueData(time: .string("2019-05-07"), value: 56.63), + SingleValueData(time: .string("2019-05-08"), value: 56.38), + SingleValueData(time: .string("2019-05-09"), value: 56.48), + SingleValueData(time: .string("2019-05-10"), value: 56.91), + SingleValueData(time: .string("2019-05-13"), value: 56.75), + SingleValueData(time: .string("2019-05-14"), value: 56.55), + SingleValueData(time: .string("2019-05-15"), value: 56.81), + SingleValueData(time: .string("2019-05-16"), value: 57.38), + SingleValueData(time: .string("2019-05-17"), value: 58.09), + SingleValueData(time: .string("2019-05-20"), value: 59.01), + SingleValueData(time: .string("2019-05-21"), value: 59.50), + SingleValueData(time: .string("2019-05-22"), value: 59.25), + SingleValueData(time: .string("2019-05-23"), value: 58.87), + SingleValueData(time: .string("2019-05-24"), value: 59.32), + SingleValueData(time: .string("2019-05-28"), value: 59.57) ] areaSeries.setData(data: areaData) self.areaSeries = areaSeries diff --git a/Sources/LightweightCharts/Implementations/API/Series/AreaSeries.swift b/Sources/LightweightCharts/Implementations/API/Series/AreaSeries.swift index 44f87bb..de59012 100644 --- a/Sources/LightweightCharts/Implementations/API/Series/AreaSeries.swift +++ b/Sources/LightweightCharts/Implementations/API/Series/AreaSeries.swift @@ -3,6 +3,6 @@ import Foundation public class AreaSeries: SeriesObject, SeriesApi { public typealias Options = AreaSeriesOptions - public typealias TickValue = LineData + public typealias TickValue = SingleValueData } diff --git a/Sources/LightweightCharts/Implementations/API/Series/BaselineSeries.swift b/Sources/LightweightCharts/Implementations/API/Series/BaselineSeries.swift index b2c1797..2a58512 100644 --- a/Sources/LightweightCharts/Implementations/API/Series/BaselineSeries.swift +++ b/Sources/LightweightCharts/Implementations/API/Series/BaselineSeries.swift @@ -3,6 +3,6 @@ import Foundation public class BaselineSeries: SeriesObject, SeriesApi { public typealias Options = BaselineSeriesOptions - public typealias TickValue = LineData + public typealias TickValue = SingleValueData } diff --git a/Sources/LightweightCharts/LightweightChartsModels/Data/SeriesData/LineData.swift b/Sources/LightweightCharts/LightweightChartsModels/Data/SeriesData/LineData.swift index 5e6a71c..6618fc8 100644 --- a/Sources/LightweightCharts/LightweightChartsModels/Data/SeriesData/LineData.swift +++ b/Sources/LightweightCharts/LightweightChartsModels/Data/SeriesData/LineData.swift @@ -1,6 +1,6 @@ import Foundation -protocol LineSeriesData: SingleValueData { +protocol LineSeriesData: SingleValueSeriesData { /** Optional color value for certain data item. If missed, color from options is used @@ -21,6 +21,7 @@ public struct LineData: LineSeriesData { public init(time: Time, value: Double?, color: ChartColor? = nil) { self.time = time self.value = value + self.color = color } } diff --git a/Sources/LightweightCharts/LightweightChartsModels/Data/SeriesData/SingleValueData.swift b/Sources/LightweightCharts/LightweightChartsModels/Data/SeriesData/SingleValueData.swift deleted file mode 100644 index 31bbb8d..0000000 --- a/Sources/LightweightCharts/LightweightChartsModels/Data/SeriesData/SingleValueData.swift +++ /dev/null @@ -1,12 +0,0 @@ -import Foundation - -/** - A base interface for a data point of single-value series - */ -public protocol SingleValueData : SeriesData { - - /** - * Price value of data item - */ - var value: Double? { get } -} diff --git a/Sources/LightweightCharts/LightweightChartsModels/Data/SeriesData/SingleValueSeriesData.swift b/Sources/LightweightCharts/LightweightChartsModels/Data/SeriesData/SingleValueSeriesData.swift new file mode 100644 index 0000000..3fb0b5f --- /dev/null +++ b/Sources/LightweightCharts/LightweightChartsModels/Data/SeriesData/SingleValueSeriesData.swift @@ -0,0 +1,23 @@ +import Foundation + +/** + A base interface for a data point of single-value series + */ +public protocol SingleValueSeriesData : SeriesData { + + /** + * Price value of data item + */ + var value: Double? { get } +} + + +public struct SingleValueData : SingleValueSeriesData { + public var time: Time + public var value: Double? + + public init(time: Time, value: Double?) { + self.time = time + self.value = value + } +} From 9d916a434452e2cba4b253bb8700157c983d705f Mon Sep 17 00:00:00 2001 From: Alexandr Nevyantsev Date: Mon, 21 Mar 2022 19:01:51 +0300 Subject: [PATCH 6/6] Fix inheritance of HistogramData --- .../LightweightChartsModels/Data/SeriesData/HistogramData.swift | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Sources/LightweightCharts/LightweightChartsModels/Data/SeriesData/HistogramData.swift b/Sources/LightweightCharts/LightweightChartsModels/Data/SeriesData/HistogramData.swift index 8f0ed57..aca47aa 100644 --- a/Sources/LightweightCharts/LightweightChartsModels/Data/SeriesData/HistogramData.swift +++ b/Sources/LightweightCharts/LightweightChartsModels/Data/SeriesData/HistogramData.swift @@ -3,7 +3,7 @@ import Foundation /** Structure describing a single item of data for histogram series */ -protocol HistogramSeriesData: LineSeriesData { +protocol HistogramSeriesData: SingleValueSeriesData { /** * Optional color value for certain data item. If missed, color from HistogramSeriesOptions is used