UNPKG

highcharts

Version:
107 lines (104 loc) 77.3 kB
/* Highstock JS v8.0.1 (2020-03-02) Highstock as a plugin for Highcharts (c) 2010-2019 Torstein Honsi License: www.highcharts.com/license */ (function(q){"object"===typeof module&&module.exports?(q["default"]=q,module.exports=q):"function"===typeof define&&define.amd?define("highcharts/modules/stock",["highcharts"],function(G){q(G);q.Highcharts=G;return q}):q("undefined"!==typeof Highcharts?Highcharts:void 0)})(function(q){function G(p,m,F,w){p.hasOwnProperty(m)||(p[m]=w.apply(null,F))}q=q?q._modules:{};G(q,"parts/Scrollbar.js",[q["parts/Globals.js"],q["parts/Utilities.js"]],function(p,m){var F=m.addEvent,w=m.correctFloat,H=m.defined, C=m.destroyObjectProperties,q=m.fireEvent,v=m.merge,z=m.pick,I=m.removeEvent;m=p.Axis;var e=p.defaultOptions,l=p.hasTouch,k,u={height:p.isTouchDevice?20:14,barBorderRadius:0,buttonBorderRadius:0,liveRedraw:void 0,margin:10,minWidth:6,step:.2,zIndex:3,barBackgroundColor:"#cccccc",barBorderWidth:1,barBorderColor:"#cccccc",buttonArrowColor:"#333333",buttonBackgroundColor:"#e6e6e6",buttonBorderColor:"#cccccc",buttonBorderWidth:1,rifleColor:"#333333",trackBackgroundColor:"#f2f2f2",trackBorderColor:"#f2f2f2", trackBorderWidth:1};e.scrollbar=v(!0,u,e.scrollbar);p.swapXY=k=function(a,f){var r=a.length;if(f)for(f=0;f<r;f+=3){var d=a[f+1];a[f+1]=a[f+2];a[f+2]=d}return a};var d=function(){function a(f,r,a){this._events=[];this.from=this.chartY=this.chartX=0;this.scrollbar=this.group=void 0;this.scrollbarButtons=[];this.scrollbarGroup=void 0;this.scrollbarLeft=0;this.scrollbarRifles=void 0;this.scrollbarStrokeWidth=1;this.to=this.size=this.scrollbarTop=0;this.track=void 0;this.trackBorderWidth=1;this.userOptions= {};this.y=this.x=0;this.chart=a;this.options=r;this.renderer=a.renderer;this.init(f,r,a)}a.prototype.addEvents=function(){var f=this.options.inverted?[1,0]:[0,1],r=this.scrollbarButtons,a=this.scrollbarGroup.element,c=this.track.element,h=this.mouseDownHandler.bind(this),n=this.mouseMoveHandler.bind(this),d=this.mouseUpHandler.bind(this);f=[[r[f[0]].element,"click",this.buttonToMinClick.bind(this)],[r[f[1]].element,"click",this.buttonToMaxClick.bind(this)],[c,"click",this.trackClick.bind(this)],[a, "mousedown",h],[a.ownerDocument,"mousemove",n],[a.ownerDocument,"mouseup",d]];l&&f.push([a,"touchstart",h],[a.ownerDocument,"touchmove",n],[a.ownerDocument,"touchend",d]);f.forEach(function(c){F.apply(null,c)});this._events=f};a.prototype.buttonToMaxClick=function(f){var r=(this.to-this.from)*z(this.options.step,.2);this.updatePosition(this.from+r,this.to+r);q(this,"changed",{from:this.from,to:this.to,trigger:"scrollbar",DOMEvent:f})};a.prototype.buttonToMinClick=function(f){var r=w(this.to-this.from)* z(this.options.step,.2);this.updatePosition(w(this.from-r),w(this.to-r));q(this,"changed",{from:this.from,to:this.to,trigger:"scrollbar",DOMEvent:f})};a.prototype.cursorToScrollbarPosition=function(f){var r=this.options;r=r.minWidth>this.calculatedWidth?r.minWidth:0;return{chartX:(f.chartX-this.x-this.xOffset)/(this.barWidth-r),chartY:(f.chartY-this.y-this.yOffset)/(this.barWidth-r)}};a.prototype.destroy=function(){var f=this.chart.scroller;this.removeEvents();["track","scrollbarRifles","scrollbar", "scrollbarGroup","group"].forEach(function(f){this[f]&&this[f].destroy&&(this[f]=this[f].destroy())},this);f&&this===f.scrollbar&&(f.scrollbar=null,C(f.scrollbarButtons))};a.prototype.drawScrollbarButton=function(f){var r=this.renderer,a=this.scrollbarButtons,c=this.options,h=this.size;var n=r.g().add(this.group);a.push(n);n=r.rect().addClass("highcharts-scrollbar-button").add(n);this.chart.styledMode||n.attr({stroke:c.buttonBorderColor,"stroke-width":c.buttonBorderWidth,fill:c.buttonBackgroundColor}); n.attr(n.crisp({x:-.5,y:-.5,width:h+1,height:h+1,r:c.buttonBorderRadius},n.strokeWidth()));n=r.path(k(["M",h/2+(f?-1:1),h/2-3,"L",h/2+(f?-1:1),h/2+3,"L",h/2+(f?2:-2),h/2],c.vertical)).addClass("highcharts-scrollbar-arrow").add(a[f]);this.chart.styledMode||n.attr({fill:c.buttonArrowColor})};a.prototype.init=function(f,a,d){this.scrollbarButtons=[];this.renderer=f;this.userOptions=a;this.options=v(u,a);this.chart=d;this.size=z(this.options.size,this.options.height);a.enabled&&(this.render(),this.addEvents())}; a.prototype.mouseDownHandler=function(f){f=this.chart.pointer.normalize(f);f=this.cursorToScrollbarPosition(f);this.chartX=f.chartX;this.chartY=f.chartY;this.initPositions=[this.from,this.to];this.grabbedCenter=!0};a.prototype.mouseMoveHandler=function(f){var a=this.chart.pointer.normalize(f),d=this.options.vertical?"chartY":"chartX",c=this.initPositions||[];!this.grabbedCenter||f.touches&&0===f.touches[0][d]||(a=this.cursorToScrollbarPosition(a)[d],d=this[d],d=a-d,this.hasDragged=!0,this.updatePosition(c[0]+ d,c[1]+d),this.hasDragged&&q(this,"changed",{from:this.from,to:this.to,trigger:"scrollbar",DOMType:f.type,DOMEvent:f}))};a.prototype.mouseUpHandler=function(f){this.hasDragged&&q(this,"changed",{from:this.from,to:this.to,trigger:"scrollbar",DOMType:f.type,DOMEvent:f});this.grabbedCenter=this.hasDragged=this.chartX=this.chartY=null};a.prototype.position=function(f,a,d,c){var h=this.options.vertical,n=0,r=this.rendered?"animate":"attr";this.x=f;this.y=a+this.trackBorderWidth;this.width=d;this.xOffset= this.height=c;this.yOffset=n;h?(this.width=this.yOffset=d=n=this.size,this.xOffset=a=0,this.barWidth=c-2*d,this.x=f+=this.options.margin):(this.height=this.xOffset=c=a=this.size,this.barWidth=d-2*c,this.y+=this.options.margin);this.group[r]({translateX:f,translateY:this.y});this.track[r]({width:d,height:c});this.scrollbarButtons[1][r]({translateX:h?0:d-a,translateY:h?c-n:0})};a.prototype.removeEvents=function(){this._events.forEach(function(f){I.apply(null,f)});this._events.length=0};a.prototype.render= function(){var f=this.renderer,a=this.options,d=this.size,c=this.chart.styledMode,h;this.group=h=f.g("scrollbar").attr({zIndex:a.zIndex,translateY:-99999}).add();this.track=f.rect().addClass("highcharts-scrollbar-track").attr({x:0,r:a.trackBorderRadius||0,height:d,width:d}).add(h);c||this.track.attr({fill:a.trackBackgroundColor,stroke:a.trackBorderColor,"stroke-width":a.trackBorderWidth});this.trackBorderWidth=this.track.strokeWidth();this.track.attr({y:-this.trackBorderWidth%2/2});this.scrollbarGroup= f.g().add(h);this.scrollbar=f.rect().addClass("highcharts-scrollbar-thumb").attr({height:d,width:d,r:a.barBorderRadius||0}).add(this.scrollbarGroup);this.scrollbarRifles=f.path(k(["M",-3,d/4,"L",-3,2*d/3,"M",0,d/4,"L",0,2*d/3,"M",3,d/4,"L",3,2*d/3],a.vertical)).addClass("highcharts-scrollbar-rifles").add(this.scrollbarGroup);c||(this.scrollbar.attr({fill:a.barBackgroundColor,stroke:a.barBorderColor,"stroke-width":a.barBorderWidth}),this.scrollbarRifles.attr({stroke:a.rifleColor,"stroke-width":1})); this.scrollbarStrokeWidth=this.scrollbar.strokeWidth();this.scrollbarGroup.translate(-this.scrollbarStrokeWidth%2/2,-this.scrollbarStrokeWidth%2/2);this.drawScrollbarButton(0);this.drawScrollbarButton(1)};a.prototype.setRange=function(f,a){var d=this.options,c=d.vertical,h=d.minWidth,n=this.barWidth,r,e=!this.rendered||this.hasDragged||this.chart.navigator&&this.chart.navigator.hasDragged?"attr":"animate";if(H(n)){f=Math.max(f,0);var l=Math.ceil(n*f);this.calculatedWidth=r=w(n*Math.min(a,1)-l);r< h&&(l=(n-h+r)*f,r=h);h=Math.floor(l+this.xOffset+this.yOffset);n=r/2-.5;this.from=f;this.to=a;c?(this.scrollbarGroup[e]({translateY:h}),this.scrollbar[e]({height:r}),this.scrollbarRifles[e]({translateY:n}),this.scrollbarTop=h,this.scrollbarLeft=0):(this.scrollbarGroup[e]({translateX:h}),this.scrollbar[e]({width:r}),this.scrollbarRifles[e]({translateX:n}),this.scrollbarLeft=h,this.scrollbarTop=0);12>=r?this.scrollbarRifles.hide():this.scrollbarRifles.show(!0);!1===d.showFull&&(0>=f&&1<=a?this.group.hide(): this.group.show());this.rendered=!0}};a.prototype.trackClick=function(f){var a=this.chart.pointer.normalize(f),d=this.to-this.from,c=this.y+this.scrollbarTop,h=this.x+this.scrollbarLeft;this.options.vertical&&a.chartY>c||!this.options.vertical&&a.chartX>h?this.updatePosition(this.from+d,this.to+d):this.updatePosition(this.from-d,this.to-d);q(this,"changed",{from:this.from,to:this.to,trigger:"scrollbar",DOMEvent:f})};a.prototype.update=function(f){this.destroy();this.init(this.chart.renderer,v(!0, this.options,f),this.chart)};a.prototype.updatePosition=function(f,a){1<a&&(f=w(1-w(a-f)),a=1);0>f&&(a=w(a-f),f=0);this.from=f;this.to=a};return a}();p.Scrollbar||(F(m,"afterInit",function(){var a=this;a.options&&a.options.scrollbar&&a.options.scrollbar.enabled&&(a.options.scrollbar.vertical=!a.horiz,a.options.startOnTick=a.options.endOnTick=!1,a.scrollbar=new d(a.chart.renderer,a.options.scrollbar,a.chart),F(a.scrollbar,"changed",function(f){var d=Math.min(z(a.options.min,a.min),a.min,a.dataMin), e=Math.max(z(a.options.max,a.max),a.max,a.dataMax)-d;if(a.horiz&&!a.reversed||!a.horiz&&a.reversed){var c=d+e*this.to;d+=e*this.from}else c=d+e*(1-this.from),d+=e*(1-this.to);z(this.options.liveRedraw,p.svg&&!p.isTouchDevice&&!this.chart.isBoosting)||"mouseup"===f.DOMType||!H(f.DOMType)?a.setExtremes(d,c,!0,"mousemove"!==f.DOMType,f):this.setRange(this.from,this.to)}))}),F(m,"afterRender",function(){var a=Math.min(z(this.options.min,this.min),this.min,z(this.dataMin,this.min)),f=Math.max(z(this.options.max, this.max),this.max,z(this.dataMax,this.max)),d=this.scrollbar,e=this.axisTitleMargin+(this.titleOffset||0),c=this.chart.scrollbarsOffsets,h=this.options.margin||0;d&&(this.horiz?(this.opposite||(c[1]+=e),d.position(this.left,this.top+this.height+2+c[1]-(this.opposite?h:0),this.width,this.height),this.opposite||(c[1]+=h),e=1):(this.opposite&&(c[0]+=e),d.position(this.left+this.width+2+c[0]-(this.opposite?0:h),this.top,this.width,this.height),this.opposite&&(c[0]+=h),e=0),c[e]+=d.size+d.options.margin, isNaN(a)||isNaN(f)||!H(this.min)||!H(this.max)||this.min===this.max?d.setRange(0,1):(c=(this.min-a)/(f-a),a=(this.max-a)/(f-a),this.horiz&&!this.reversed||!this.horiz&&this.reversed?d.setRange(c,a):d.setRange(1-a,1-c)))}),F(m,"afterGetOffset",function(){var a=this.horiz?2:1,f=this.scrollbar;f&&(this.chart.scrollbarsOffsets=[0,0],this.chart.axisOffset[a]+=f.size+f.options.margin)}),p.Scrollbar=d);return p.Scrollbar});G(q,"parts/Navigator.js",[q["parts/Globals.js"],q["parts/Color.js"],q["parts/Scrollbar.js"], q["parts/Utilities.js"]],function(p,m,F,w){function q(b){this.init(b)}m=m.parse;var C=w.addEvent,J=w.clamp,v=w.correctFloat,z=w.defined,I=w.destroyObjectProperties,e=w.erase,l=w.extend,k=w.find,u=w.isArray,d=w.isNumber,a=w.merge,f=w.pick,r=w.removeEvent,B=w.splat,c=p.Axis;w=p.Chart;var h=p.defaultOptions,n=p.hasTouch,y=p.isTouchDevice,D=p.Series,E=function(b){for(var g=[],x=1;x<arguments.length;x++)g[x-1]=arguments[x];g=[].filter.call(g,d);if(g.length)return Math[b].apply(0,g)};var t="undefined"=== typeof p.seriesTypes.areaspline?"line":"areaspline";l(h,{navigator:{height:40,margin:25,maskInside:!0,handles:{width:7,height:15,symbols:["navigator-handle","navigator-handle"],enabled:!0,lineWidth:1,backgroundColor:"#f2f2f2",borderColor:"#999999"},maskFill:m("#6685c2").setOpacity(.3).get(),outlineColor:"#cccccc",outlineWidth:1,series:{type:t,fillOpacity:.05,lineWidth:1,compare:null,dataGrouping:{approximation:"average",enabled:!0,groupPixelWidth:2,smoothed:!0,units:[["millisecond",[1,2,5,10,20,25, 50,100,200,500]],["second",[1,2,5,10,15,30]],["minute",[1,2,5,10,15,30]],["hour",[1,2,3,4,6,8,12]],["day",[1,2,3,4]],["week",[1,2,3]],["month",[1,3,6]],["year",null]]},dataLabels:{enabled:!1,zIndex:2},id:"highcharts-navigator-series",className:"highcharts-navigator-series",lineColor:null,marker:{enabled:!1},threshold:null},xAxis:{overscroll:0,className:"highcharts-navigator-xaxis",tickLength:0,lineWidth:0,gridLineColor:"#e6e6e6",gridLineWidth:1,tickPixelInterval:200,labels:{align:"left",style:{color:"#999999"}, x:3,y:-4},crosshair:!1},yAxis:{className:"highcharts-navigator-yaxis",gridLineWidth:0,startOnTick:!1,endOnTick:!1,minPadding:.1,maxPadding:.1,labels:{enabled:!1},crosshair:!1,title:{text:null},tickLength:0,tickWidth:0}}});p.Renderer.prototype.symbols["navigator-handle"]=function(b,g,x,c,a){b=a.width/2;g=Math.round(b/3)+.5;a=a.height;return["M",-b-1,.5,"L",b,.5,"L",b,a+.5,"L",-b-1,a+.5,"L",-b-1,.5,"M",-g,4,"L",-g,a-3,"M",g-1,4,"L",g-1,a-3]};c.prototype.toFixedRange=function(b,g,x,c){var a=this.chart&& this.chart.fixedRange,A=(this.pointRange||0)/2;b=f(x,this.translate(b,!0,!this.horiz));g=f(c,this.translate(g,!0,!this.horiz));var h=a&&(g-b)/a;z(x)||(b=v(b+A));z(c)||(g=v(g-A));.7<h&&1.3>h&&(c?b=g-a:g=b+a);d(b)&&d(g)||(b=g=void 0);return{min:b,max:g}};q.prototype={drawHandle:function(b,g,x,c){var a=this.navigatorOptions.handles.height;this.handles[g][c](x?{translateX:Math.round(this.left+this.height/2),translateY:Math.round(this.top+parseInt(b,10)+.5-a)}:{translateX:Math.round(this.left+parseInt(b, 10)),translateY:Math.round(this.top+this.height/2-a/2-1)})},drawOutline:function(b,g,x,c){var a=this.navigatorOptions.maskInside,f=this.outline.strokeWidth(),d=f/2;f=f%2/2;var A=this.outlineHeight,h=this.scrollbarHeight,n=this.size,e=this.left-h,t=this.top;x?(e-=d,x=t+g+f,g=t+b+f,b=["M",e+A,t-h-f,"L",e+A,x,"L",e,x,"L",e,g,"L",e+A,g,"L",e+A,t+n+h].concat(a?["M",e+A,x-d,"L",e+A,g+d]:[])):(b+=e+h-f,g+=e+h-f,t+=d,b=["M",e,t,"L",b,t,"L",b,t+A,"L",g,t+A,"L",g,t,"L",e+n+2*h,t].concat(a?["M",b-d,t,"L",g+ d,t]:[]));this.outline[c]({d:b})},drawMasks:function(b,g,x,c){var a=this.left,f=this.top,d=this.height;if(x){var A=[a,a,a];var h=[f,f+b,f+g];var n=[d,d,d];var e=[b,g-b,this.size-g]}else A=[a,a+b,a+g],h=[f,f,f],n=[b,g-b,this.size-g],e=[d,d,d];this.shades.forEach(function(b,g){b[c]({x:A[g],y:h[g],width:n[g],height:e[g]})})},renderElements:function(){var b=this,g=b.navigatorOptions,x=g.maskInside,c=b.chart,a=c.renderer,f,d={cursor:c.inverted?"ns-resize":"ew-resize"};b.navigatorGroup=f=a.g("navigator").attr({zIndex:8, visibility:"hidden"}).add();[!x,x,!x].forEach(function(x,h){b.shades[h]=a.rect().addClass("highcharts-navigator-mask"+(1===h?"-inside":"-outside")).add(f);c.styledMode||b.shades[h].attr({fill:x?g.maskFill:"rgba(0,0,0,0)"}).css(1===h&&d)});b.outline=a.path().addClass("highcharts-navigator-outline").add(f);c.styledMode||b.outline.attr({"stroke-width":g.outlineWidth,stroke:g.outlineColor});g.handles.enabled&&[0,1].forEach(function(x){g.handles.inverted=c.inverted;b.handles[x]=a.symbol(g.handles.symbols[x], -g.handles.width/2-1,0,g.handles.width,g.handles.height,g.handles);b.handles[x].attr({zIndex:7-x}).addClass("highcharts-navigator-handle highcharts-navigator-handle-"+["left","right"][x]).add(f);if(!c.styledMode){var h=g.handles;b.handles[x].attr({fill:h.backgroundColor,stroke:h.borderColor,"stroke-width":h.lineWidth}).css(d)}})},update:function(b){(this.series||[]).forEach(function(b){b.baseSeries&&delete b.baseSeries.navigatorSeries});this.destroy();a(!0,this.chart.options.navigator,this.options, b);this.init(this.chart)},render:function(b,g,x,c){var a=this.chart,h=this.scrollbarHeight,n,A=this.xAxis,e=A.pointRange||0;var t=A.fake?a.xAxis[0]:A;var r=this.navigatorEnabled,y,l=this.rendered;var k=a.inverted;var D=a.xAxis[0].minRange,u=a.xAxis[0].options.maxRange;if(!this.hasDragged||z(x)){b=v(b-e/2);g=v(g+e/2);if(!d(b)||!d(g))if(l)x=0,c=f(A.width,t.width);else return;this.left=f(A.left,a.plotLeft+h+(k?a.plotWidth:0));this.size=y=n=f(A.len,(k?a.plotHeight:a.plotWidth)-2*h);a=k?h:n+2*h;x=f(x, A.toPixels(b,!0));c=f(c,A.toPixels(g,!0));d(x)&&Infinity!==Math.abs(x)||(x=0,c=a);b=A.toValue(x,!0);g=A.toValue(c,!0);var B=Math.abs(v(g-b));B<D?this.grabbedLeft?x=A.toPixels(g-D-e,!0):this.grabbedRight&&(c=A.toPixels(b+D+e,!0)):z(u)&&v(B-e)>u&&(this.grabbedLeft?x=A.toPixels(g-u-e,!0):this.grabbedRight&&(c=A.toPixels(b+u+e,!0)));this.zoomedMax=J(Math.max(x,c),0,y);this.zoomedMin=J(this.fixedWidth?this.zoomedMax-this.fixedWidth:Math.min(x,c),0,y);this.range=this.zoomedMax-this.zoomedMin;y=Math.round(this.zoomedMax); x=Math.round(this.zoomedMin);r&&(this.navigatorGroup.attr({visibility:"visible"}),l=l&&!this.hasDragged?"animate":"attr",this.drawMasks(x,y,k,l),this.drawOutline(x,y,k,l),this.navigatorOptions.handles.enabled&&(this.drawHandle(x,0,k,l),this.drawHandle(y,1,k,l)));this.scrollbar&&(k?(k=this.top-h,t=this.left-h+(r||!t.opposite?0:(t.titleOffset||0)+t.axisTitleMargin),h=n+2*h):(k=this.top+(r?this.height:-h),t=this.left-h),this.scrollbar.position(t,k,a,h),this.scrollbar.setRange(this.zoomedMin/(n||1),this.zoomedMax/ (n||1)));this.rendered=!0}},addMouseEvents:function(){var b=this,g=b.chart,x=g.container,c=[],a,f;b.mouseMoveHandler=a=function(g){b.onMouseMove(g)};b.mouseUpHandler=f=function(g){b.onMouseUp(g)};c=b.getPartsEvents("mousedown");c.push(C(g.renderTo,"mousemove",a),C(x.ownerDocument,"mouseup",f));n&&(c.push(C(g.renderTo,"touchmove",a),C(x.ownerDocument,"touchend",f)),c.concat(b.getPartsEvents("touchstart")));b.eventsToUnbind=c;b.series&&b.series[0]&&c.push(C(b.series[0].xAxis,"foundExtremes",function(){g.navigator.modifyNavigatorAxisExtremes()}))}, getPartsEvents:function(b){var g=this,x=[];["shades","handles"].forEach(function(c){g[c].forEach(function(a,f){x.push(C(a.element,b,function(b){g[c+"Mousedown"](b,f)}))})});return x},shadesMousedown:function(b,g){b=this.chart.pointer.normalize(b);var c=this.chart,a=this.xAxis,f=this.zoomedMin,h=this.left,d=this.size,n=this.range,e=b.chartX;c.inverted&&(e=b.chartY,h=this.top);if(1===g)this.grabbedCenter=e,this.fixedWidth=n,this.dragOffset=e-f;else{b=e-h-n/2;if(0===g)b=Math.max(0,b);else if(2===g&& b+n>=d)if(b=d-n,this.reversedExtremes){b-=n;var t=this.getUnionExtremes().dataMin}else var r=this.getUnionExtremes().dataMax;b!==f&&(this.fixedWidth=n,g=a.toFixedRange(b,b+n,t,r),z(g.min)&&c.xAxis[0].setExtremes(Math.min(g.min,g.max),Math.max(g.min,g.max),!0,null,{trigger:"navigator"}))}},handlesMousedown:function(b,g){this.chart.pointer.normalize(b);b=this.chart;var c=b.xAxis[0],a=this.reversedExtremes;0===g?(this.grabbedLeft=!0,this.otherHandlePos=this.zoomedMax,this.fixedExtreme=a?c.min:c.max): (this.grabbedRight=!0,this.otherHandlePos=this.zoomedMin,this.fixedExtreme=a?c.max:c.min);b.fixedRange=null},onMouseMove:function(b){var g=this,c=g.chart,a=g.left,h=g.navigatorSize,d=g.range,n=g.dragOffset,e=c.inverted;b.touches&&0===b.touches[0].pageX||(b=c.pointer.normalize(b),c=b.chartX,e&&(a=g.top,c=b.chartY),g.grabbedLeft?(g.hasDragged=!0,g.render(0,0,c-a,g.otherHandlePos)):g.grabbedRight?(g.hasDragged=!0,g.render(0,0,g.otherHandlePos,c-a)):g.grabbedCenter&&(g.hasDragged=!0,c<n?c=n:c>h+n-d&& (c=h+n-d),g.render(0,0,c-n,c-n+d)),g.hasDragged&&g.scrollbar&&f(g.scrollbar.options.liveRedraw,p.svg&&!y&&!this.chart.isBoosting)&&(b.DOMType=b.type,setTimeout(function(){g.onMouseUp(b)},0)))},onMouseUp:function(b){var g=this.chart,c=this.xAxis,a=this.scrollbar,f=b.DOMEvent||b,h=g.inverted,d=this.rendered&&!this.hasDragged?"animate":"attr",n=Math.round(this.zoomedMax),e=Math.round(this.zoomedMin);if(this.hasDragged&&(!a||!a.hasDragged)||"scrollbar"===b.trigger){a=this.getUnionExtremes();if(this.zoomedMin=== this.otherHandlePos)var t=this.fixedExtreme;else if(this.zoomedMax===this.otherHandlePos)var r=this.fixedExtreme;this.zoomedMax===this.size&&(r=this.reversedExtremes?a.dataMin:a.dataMax);0===this.zoomedMin&&(t=this.reversedExtremes?a.dataMax:a.dataMin);c=c.toFixedRange(this.zoomedMin,this.zoomedMax,t,r);z(c.min)&&g.xAxis[0].setExtremes(Math.min(c.min,c.max),Math.max(c.min,c.max),!0,this.hasDragged?!1:null,{trigger:"navigator",triggerOp:"navigator-drag",DOMEvent:f})}"mousemove"!==b.DOMType&&"touchmove"!== b.DOMType&&(this.grabbedLeft=this.grabbedRight=this.grabbedCenter=this.fixedWidth=this.fixedExtreme=this.otherHandlePos=this.hasDragged=this.dragOffset=null);this.navigatorEnabled&&(this.shades&&this.drawMasks(e,n,h,d),this.outline&&this.drawOutline(e,n,h,d),this.navigatorOptions.handles.enabled&&Object.keys(this.handles).length===this.handles.length&&(this.drawHandle(e,0,h,d),this.drawHandle(n,1,h,d)))},removeEvents:function(){this.eventsToUnbind&&(this.eventsToUnbind.forEach(function(b){b()}),this.eventsToUnbind= void 0);this.removeBaseSeriesEvents()},removeBaseSeriesEvents:function(){var b=this.baseSeries||[];this.navigatorEnabled&&b[0]&&(!1!==this.navigatorOptions.adaptToUpdatedData&&b.forEach(function(b){r(b,"updatedData",this.updatedDataHandler)},this),b[0].xAxis&&r(b[0].xAxis,"foundExtremes",this.modifyBaseAxisExtremes))},init:function(b){var g=b.options,x=g.navigator,h=x.enabled,d=g.scrollbar,n=d.enabled;g=h?x.height:0;var e=n?d.height:0;this.handles=[];this.shades=[];this.chart=b;this.setBaseSeries(); this.height=g;this.scrollbarHeight=e;this.scrollbarEnabled=n;this.navigatorEnabled=h;this.navigatorOptions=x;this.scrollbarOptions=d;this.outlineHeight=g+e;this.opposite=f(x.opposite,!(h||!b.inverted));var t=this;h=t.baseSeries;d=b.xAxis.length;n=b.yAxis.length;var r=h&&h[0]&&h[0].xAxis||b.xAxis[0]||{options:{}};b.isDirtyBox=!0;t.navigatorEnabled?(t.xAxis=new c(b,a({breaks:r.options.breaks,ordinal:r.options.ordinal},x.xAxis,{id:"navigator-x-axis",yAxis:"navigator-y-axis",isX:!0,type:"datetime",index:d, isInternal:!0,offset:0,keepOrdinalPadding:!0,startOnTick:!1,endOnTick:!1,minPadding:0,maxPadding:0,zoomEnabled:!1},b.inverted?{offsets:[e,0,-e,0],width:g}:{offsets:[0,-e,0,e],height:g})),t.yAxis=new c(b,a(x.yAxis,{id:"navigator-y-axis",alignTicks:!1,offset:0,index:n,isInternal:!0,zoomEnabled:!1},b.inverted?{width:g}:{height:g})),h||x.series.data?t.updateNavigatorSeries(!1):0===b.series.length&&(t.unbindRedraw=C(b,"beforeRedraw",function(){0<b.series.length&&!t.series&&(t.setBaseSeries(),t.unbindRedraw())})), t.reversedExtremes=b.inverted&&!t.xAxis.reversed||!b.inverted&&t.xAxis.reversed,t.renderElements(),t.addMouseEvents()):t.xAxis={translate:function(g,c){var a=b.xAxis[0],x=a.getExtremes(),f=a.len-2*e,h=E("min",a.options.min,x.dataMin);a=E("max",a.options.max,x.dataMax)-h;return c?g*a/f+h:f*(g-h)/a},toPixels:function(b){return this.translate(b)},toValue:function(b){return this.translate(b,!0)},toFixedRange:c.prototype.toFixedRange,fake:!0};b.options.scrollbar.enabled&&(b.scrollbar=t.scrollbar=new F(b.renderer, a(b.options.scrollbar,{margin:t.navigatorEnabled?0:10,vertical:b.inverted}),b),C(t.scrollbar,"changed",function(g){var c=t.size,a=c*this.to;c*=this.from;t.hasDragged=t.scrollbar.hasDragged;t.render(0,0,c,a);(b.options.scrollbar.liveRedraw||"mousemove"!==g.DOMType&&"touchmove"!==g.DOMType)&&setTimeout(function(){t.onMouseUp(g)})}));t.addBaseSeriesEvents();t.addChartEvents()},getUnionExtremes:function(b){var g=this.chart.xAxis[0],c=this.xAxis,a=c.options,h=g.options,d;b&&null===g.dataMin||(d={dataMin:f(a&& a.min,E("min",h.min,g.dataMin,c.dataMin,c.min)),dataMax:f(a&&a.max,E("max",h.max,g.dataMax,c.dataMax,c.max))});return d},setBaseSeries:function(b,g){var c=this.chart,a=this.baseSeries=[];b=b||c.options&&c.options.navigator.baseSeries||(c.series.length?k(c.series,function(b){return!b.options.isInternal}).index:0);(c.series||[]).forEach(function(g,c){g.options.isInternal||!g.options.showInNavigator&&(c!==b&&g.options.id!==b||!1===g.options.showInNavigator)||a.push(g)});this.xAxis&&!this.xAxis.fake&& this.updateNavigatorSeries(!0,g)},updateNavigatorSeries:function(b,g){var c=this,d=c.chart,n=c.baseSeries,t,e,y=c.navigatorOptions.series,k,D={enableMouseTracking:!1,index:null,linkedTo:null,group:"nav",padXAxis:!1,xAxis:"navigator-x-axis",yAxis:"navigator-y-axis",showInLegend:!1,stacking:!1,isInternal:!0,states:{inactive:{opacity:1}}},E=c.series=(c.series||[]).filter(function(b){var g=b.baseSeries;return 0>n.indexOf(g)?(g&&(r(g,"updatedData",c.updatedDataHandler),delete g.navigatorSeries),b.chart&& b.destroy(),!1):!0});n&&n.length&&n.forEach(function(b){var x=b.navigatorSeries,A=l({color:b.color,visible:b.visible},u(y)?h.navigator.series:y);x&&!1===c.navigatorOptions.adaptToUpdatedData||(D.name="Navigator "+n.length,t=b.options||{},k=t.navigatorOptions||{},e=a(t,D,A,k),e.pointRange=f(A.pointRange,k.pointRange,h.plotOptions[e.type||"line"].pointRange),A=k.data||A.data,c.hasNavigatorData=c.hasNavigatorData||!!A,e.data=A||t.data&&t.data.slice(0),x&&x.options?x.update(e,g):(b.navigatorSeries=d.initSeries(e), b.navigatorSeries.baseSeries=b,E.push(b.navigatorSeries)))});if(y.data&&(!n||!n.length)||u(y))c.hasNavigatorData=!1,y=B(y),y.forEach(function(b,g){D.name="Navigator "+(E.length+1);e=a(h.navigator.series,{color:d.series[g]&&!d.series[g].options.isInternal&&d.series[g].color||d.options.colors[g]||d.options.colors[0]},D,b);e.data=b.data;e.data&&(c.hasNavigatorData=!0,E.push(d.initSeries(e)))});b&&this.addBaseSeriesEvents()},addBaseSeriesEvents:function(){var b=this,g=b.baseSeries||[];g[0]&&g[0].xAxis&& C(g[0].xAxis,"foundExtremes",this.modifyBaseAxisExtremes);g.forEach(function(g){C(g,"show",function(){this.navigatorSeries&&this.navigatorSeries.setVisible(!0,!1)});C(g,"hide",function(){this.navigatorSeries&&this.navigatorSeries.setVisible(!1,!1)});!1!==this.navigatorOptions.adaptToUpdatedData&&g.xAxis&&C(g,"updatedData",this.updatedDataHandler);C(g,"remove",function(){this.navigatorSeries&&(e(b.series,this.navigatorSeries),z(this.navigatorSeries.options)&&this.navigatorSeries.remove(!1),delete this.navigatorSeries)})}, this)},getBaseSeriesMin:function(b){return this.baseSeries.reduce(function(b,c){return Math.min(b,c.xData?c.xData[0]:b)},b)},modifyNavigatorAxisExtremes:function(){var b=this.xAxis,g;"undefined"!==typeof b.getExtremes&&(!(g=this.getUnionExtremes(!0))||g.dataMin===b.min&&g.dataMax===b.max||(b.min=g.dataMin,b.max=g.dataMax))},modifyBaseAxisExtremes:function(){var b=this.chart.navigator,g=this.getExtremes(),c=g.dataMin,a=g.dataMax;g=g.max-g.min;var h=b.stickToMin,n=b.stickToMax,t=f(this.options.overscroll, 0),e=b.series&&b.series[0],r=!!this.setExtremes;if(!this.eventArgs||"rangeSelectorButton"!==this.eventArgs.trigger){if(h){var y=c;var l=y+g}n&&(l=a+t,h||(y=Math.max(l-g,b.getBaseSeriesMin(e&&e.xData?e.xData[0]:-Number.MAX_VALUE))));r&&(h||n)&&d(y)&&(this.min=this.userMin=y,this.max=this.userMax=l)}b.stickToMin=b.stickToMax=null},updatedDataHandler:function(){var b=this.chart.navigator,g=this.navigatorSeries,c=b.getBaseSeriesMin(this.xData[0]);b.stickToMax=b.reversedExtremes?0===Math.round(b.zoomedMin): Math.round(b.zoomedMax)>=Math.round(b.size);b.stickToMin=d(this.xAxis.min)&&this.xAxis.min<=c&&(!this.chart.fixedRange||!b.stickToMax);g&&!b.hasNavigatorData&&(g.options.pointStart=this.xData[0],g.setData(this.options.data,!1,null,!1))},addChartEvents:function(){this.eventsToUnbind||(this.eventsToUnbind=[]);this.eventsToUnbind.push(C(this.chart,"redraw",function(){var b=this.navigator,g=b&&(b.baseSeries&&b.baseSeries[0]&&b.baseSeries[0].xAxis||b.scrollbar&&this.xAxis[0]);g&&b.render(g.min,g.max)}), C(this.chart,"getMargins",function(){var b=this.navigator,g=b.opposite?"plotTop":"marginBottom";this.inverted&&(g=b.opposite?"marginRight":"plotLeft");this[g]=(this[g]||0)+(b.navigatorEnabled||!this.inverted?b.outlineHeight:0)+b.navigatorOptions.margin}))},destroy:function(){this.removeEvents();this.xAxis&&(e(this.chart.xAxis,this.xAxis),e(this.chart.axes,this.xAxis));this.yAxis&&(e(this.chart.yAxis,this.yAxis),e(this.chart.axes,this.yAxis));(this.series||[]).forEach(function(b){b.destroy&&b.destroy()}); "series xAxis yAxis shades outline scrollbarTrack scrollbarRifles scrollbarGroup scrollbar navigatorGroup rendered".split(" ").forEach(function(b){this[b]&&this[b].destroy&&this[b].destroy();this[b]=null},this);[this.handles].forEach(function(b){I(b)},this)}};p.Navigator||(p.Navigator=q,C(c,"zoom",function(b){var g=this.chart.options,c=g.chart.zoomType,a=g.chart.pinchType,h=g.navigator;g=g.rangeSelector;this.isXAxis&&(h&&h.enabled||g&&g.enabled)&&("y"===c?b.zoomed=!1:(!y&&"xy"===c||y&&"xy"===a)&& this.options.range&&(c=this.previousZoom,z(b.newMin)?this.previousZoom=[this.min,this.max]:c&&(b.newMin=c[0],b.newMax=c[1],delete this.previousZoom)));"undefined"!==typeof b.zoomed&&b.preventDefault()}),C(w,"beforeShowResetZoom",function(){var b=this.options,g=b.navigator,c=b.rangeSelector;if((g&&g.enabled||c&&c.enabled)&&(!y&&"x"===b.chart.zoomType||y&&"x"===b.chart.pinchType))return!1}),C(w,"beforeRender",function(){var b=this.options;if(b.navigator.enabled||b.scrollbar.enabled)this.scroller=this.navigator= new q(this)}),C(w,"afterSetChartSize",function(){var b=this.legend,g=this.navigator;if(g){var c=b&&b.options;var a=g.xAxis;var h=g.yAxis;var d=g.scrollbarHeight;this.inverted?(g.left=g.opposite?this.chartWidth-d-g.height:this.spacing[3]+d,g.top=this.plotTop+d):(g.left=this.plotLeft+d,g.top=g.navigatorOptions.top||this.chartHeight-g.height-d-this.spacing[2]-(this.rangeSelector&&this.extraBottomMargin?this.rangeSelector.getHeight():0)-(c&&"bottom"===c.verticalAlign&&c.enabled&&!c.floating?b.legendHeight+ f(c.margin,10):0)-(this.titleOffset?this.titleOffset[2]:0));a&&h&&(this.inverted?a.options.left=h.options.left=g.left:a.options.top=h.options.top=g.top,a.setAxisSize(),h.setAxisSize())}}),C(w,"update",function(b){var g=b.options.navigator||{},c=b.options.scrollbar||{};this.navigator||this.scroller||!g.enabled&&!c.enabled||(a(!0,this.options.navigator,g),a(!0,this.options.scrollbar,c),delete b.options.navigator,delete b.options.scrollbar)}),C(w,"afterUpdate",function(b){this.navigator||this.scroller|| !this.options.navigator.enabled&&!this.options.scrollbar.enabled||(this.scroller=this.navigator=new q(this),f(b.redraw,!0)&&this.redraw(b.animation))}),C(w,"afterAddSeries",function(){this.navigator&&this.navigator.setBaseSeries(null,!1)}),C(D,"afterUpdate",function(){this.chart.navigator&&!this.options.isInternal&&this.chart.navigator.setBaseSeries(null,!1)}),w.prototype.callbacks.push(function(b){var g=b.navigator;g&&b.xAxis[0]&&(b=b.xAxis[0].getExtremes(),g.render(b.min,b.max))}))});G(q,"parts/OrdinalAxis.js", [q["parts/Globals.js"],q["parts/Utilities.js"]],function(p,m){var q=m.addEvent,w=m.css,H=m.defined,C=m.extend,J=m.pick,v=m.timeUnits,z=p.Axis;m=p.Chart;var I=p.noop;q(p.Series,"updatedData",function(){var e=this.xAxis;e&&e.options.ordinal&&delete e.ordinalIndex});z.prototype.getTimeTicks=function(e,l,k,u,d,a,f){var r=0,B,c,h={},n=[],y=-Number.MAX_VALUE,D=this.options.tickPixelInterval,E=this.chart.time,t=[];if(!this.options.ordinal&&!this.options.breaks||!d||3>d.length||"undefined"===typeof l)return E.getTimeTicks.apply(E, arguments);var b=d.length;for(B=0;B<b;B++){var g=B&&d[B-1]>k;d[B]<l&&(r=B);if(B===b-1||d[B+1]-d[B]>5*a||g){if(d[B]>y){for(c=E.getTimeTicks(e,d[r],d[B],u);c.length&&c[0]<=y;)c.shift();c.length&&(y=c[c.length-1]);t.push(n.length);n=n.concat(c)}r=B+1}if(g)break}c=c.info;if(f&&c.unitRange<=v.hour){B=n.length-1;for(r=1;r<B;r++)if(E.dateFormat("%d",n[r])!==E.dateFormat("%d",n[r-1])){h[n[r]]="day";var x=!0}x&&(h[n[0]]="day");c.higherRanks=h}c.segmentStarts=t;n.info=c;if(f&&H(D)){r=t=n.length;x=[];var A; for(E=[];r--;)B=this.translate(n[r]),A&&(E[r]=A-B),x[r]=A=B;E.sort();E=E[Math.floor(E.length/2)];E<.6*D&&(E=null);r=n[t-1]>k?t-1:t;for(A=void 0;r--;)B=x[r],t=Math.abs(A-B),A&&t<.8*D&&(null===E||t<.8*E)?(h[n[r]]&&!h[n[r+1]]?(t=r+1,A=B):t=r,n.splice(t,1)):A=B}return n};C(z.prototype,{beforeSetTickPositions:function(){var e=[],l,k=!1,u=this.getExtremes(),d=u.min,a=u.max,f,r=this.isXAxis&&!!this.options.breaks;u=this.options.ordinal;var B=Number.MAX_VALUE,c=this.chart.options.chart.ignoreHiddenSeries, h;if(u||r){this.series.forEach(function(a,d){l=[];if(!(c&&!1===a.visible||!1===a.takeOrdinalPosition&&!r)&&(e=e.concat(a.processedXData),n=e.length,e.sort(function(c,b){return c-b}),B=Math.min(B,J(a.closestPointRange,B)),n)){for(d=0;d<n-1;)e[d]!==e[d+1]&&l.push(e[d+1]),d++;l[0]!==e[0]&&l.unshift(e[0]);e=l}a.isSeriesBoosting&&(h=!0)});h&&(e.length=0);var n=e.length;if(2<n){var y=e[1]-e[0];for(f=n-1;f--&&!k;)e[f+1]-e[f]!==y&&(k=!0);!this.options.keepOrdinalPadding&&(e[0]-d>y||a-e[e.length-1]>y)&&(k= !0)}else this.options.overscroll&&(2===n?B=e[1]-e[0]:1===n?(B=this.options.overscroll,e=[e[0],e[0]+B]):B=this.overscrollPointsRange);k?(this.options.overscroll&&(this.overscrollPointsRange=B,e=e.concat(this.getOverscrollPositions())),this.ordinalPositions=e,y=this.ordinal2lin(Math.max(d,e[0]),!0),f=Math.max(this.ordinal2lin(Math.min(a,e[e.length-1]),!0),1),this.ordinalSlope=a=(a-d)/(f-y),this.ordinalOffset=d-y*a):(this.overscrollPointsRange=J(this.closestPointRange,this.overscrollPointsRange),this.ordinalPositions= this.ordinalSlope=this.ordinalOffset=void 0)}this.isOrdinal=u&&k;this.groupIntervalFactor=null},val2lin:function(e,l){var k=this.ordinalPositions;if(k){var u=k.length,d;for(d=u;d--;)if(k[d]===e){var a=d;break}for(d=u-1;d--;)if(e>k[d]||0===d){e=(e-k[d])/(k[d+1]-k[d]);a=d+e;break}l=l?a:this.ordinalSlope*(a||0)+this.ordinalOffset}else l=e;return l},lin2val:function(e,l){var k=this.ordinalPositions;if(k){var u=this.ordinalSlope,d=this.ordinalOffset,a=k.length-1;if(l)if(0>e)e=k[0];else if(e>a)e=k[a];else{a= Math.floor(e);var f=e-a}else for(;a--;)if(l=u*a+d,e>=l){u=u*(a+1)+d;f=(e-l)/(u-l);break}return"undefined"!==typeof f&&"undefined"!==typeof k[a]?k[a]+(f?f*(k[a+1]-k[a]):0):e}return e},getExtendedPositions:function(){var e=this,l=e.chart,k=e.series[0].currentDataGrouping,u=e.ordinalIndex,d=k?k.count+k.unitName:"raw",a=e.options.overscroll,f=e.getExtremes(),r;u||(u=e.ordinalIndex={});if(!u[d]){var B={series:[],chart:l,getExtremes:function(){return{min:f.dataMin,max:f.dataMax+a}},options:{ordinal:!0}, val2lin:z.prototype.val2lin,ordinal2lin:z.prototype.ordinal2lin};e.series.forEach(function(c){r={xAxis:B,xData:c.xData.slice(),chart:l,destroyGroupedData:I};r.xData=r.xData.concat(e.getOverscrollPositions());r.options={dataGrouping:k?{enabled:!0,forced:!0,approximation:"open",units:[[k.unitName,[k.count]]]}:{enabled:!1}};c.processData.apply(r);B.series.push(r)});e.beforeSetTickPositions.apply(B);u[d]=B.ordinalPositions}return u[d]},getOverscrollPositions:function(){var e=this.options.overscroll,l= this.overscrollPointsRange,k=[],u=this.dataMax;if(H(l))for(k.push(u);u<=this.dataMax+e;)u+=l,k.push(u);return k},getGroupIntervalFactor:function(e,l,k){k=k.processedXData;var u=k.length,d=[];var a=this.groupIntervalFactor;if(!a){for(a=0;a<u-1;a++)d[a]=k[a+1]-k[a];d.sort(function(a,d){return a-d});d=d[Math.floor(u/2)];e=Math.max(e,k[0]);l=Math.min(l,k[u-1]);this.groupIntervalFactor=a=u*d/(l-e)}return a},postProcessTickInterval:function(e){var l=this.ordinalSlope;return l?this.options.breaks?this.closestPointRange|| e:e/(l/this.closestPointRange):e}});z.prototype.ordinal2lin=z.prototype.val2lin;q(m,"pan",function(e){var l=this.xAxis[0],k=l.options.overscroll,u=e.originalEvent.chartX,d=this.options.chart&&this.options.chart.panning,a=!1;if(d&&"y"!==d.type&&l.options.ordinal&&l.series.length){var f=this.mouseDownX,r=l.getExtremes(),B=r.dataMax,c=r.min,h=r.max,n=this.hoverPoints,y=l.closestPointRange||l.overscrollPointsRange;f=(f-u)/(l.translationSlope*(l.ordinalSlope||y));var D={ordinalPositions:l.getExtendedPositions()}; y=l.lin2val;var z=l.val2lin;if(!D.ordinalPositions)a=!0;else if(1<Math.abs(f)){n&&n.forEach(function(b){b.setState()});if(0>f){n=D;var t=l.ordinalPositions?l:D}else n=l.ordinalPositions?l:D,t=D;D=t.ordinalPositions;B>D[D.length-1]&&D.push(B);this.fixedRange=h-c;f=l.toFixedRange(null,null,y.apply(n,[z.apply(n,[c,!0])+f,!0]),y.apply(t,[z.apply(t,[h,!0])+f,!0]));f.min>=Math.min(r.dataMin,c)&&f.max<=Math.max(B,h)+k&&l.setExtremes(f.min,f.max,!0,!1,{trigger:"pan"});this.mouseDownX=u;w(this.container,{cursor:"move"})}}else a= !0;a||d&&/y/.test(d.type)?k&&(l.max=l.dataMax+k):e.preventDefault()});q(z,"foundExtremes",function(){this.isXAxis&&H(this.options.overscroll)&&this.max===this.dataMax&&(!this.chart.mouseIsDown||this.isInternal)&&(!this.eventArgs||this.eventArgs&&"navigator"!==this.eventArgs.trigger)&&(this.max+=this.options.overscroll,!this.isInternal&&H(this.userMin)&&(this.min+=this.options.overscroll))});q(z,"afterSetScale",function(){this.horiz&&!this.isDirty&&(this.isDirty=this.isOrdinal&&this.chart.navigator&& !this.chart.navigator.adaptToUpdatedData)})});G(q,"modules/broken-axis.src.js",[q["parts/Globals.js"],q["parts/Utilities.js"]],function(p,m){var q=m.addEvent,w=m.extend,H=m.find,C=m.fireEvent,J=m.isArray,v=m.pick,z=p.Axis;m=p.Series;var I=function(e,l){return H(l,function(l){return l.from<e&&e<l.to})};w(z.prototype,{isInBreak:function(e,l){var k=e.repeat||Infinity,u=e.from,d=e.to-e.from;l=l>=u?(l-u)%k:k-(u-l)%k;return e.inclusive?l<=d:l<d&&0!==l},isInAnyBreak:function(e,l){var k=this.options.breaks, u=k&&k.length,d;if(u){for(;u--;)if(this.isInBreak(k[u],e)){var a=!0;d||(d=v(k[u].showPoints,!this.isXAxis))}var f=a&&l?a&&!d:a}return f}});q(z,"afterInit",function(){"function"===typeof this.setBreaks&&this.setBreaks(this.options.breaks,!1)});q(z,"afterSetTickPositions",function(){if(this.isBroken){var e=this.tickPositions,l=this.tickPositions.info,k=[],u;for(u=0;u<e.length;u++)this.isInAnyBreak(e[u])||k.push(e[u]);this.tickPositions=k;this.tickPositions.info=l}});q(z,"afterSetOptions",function(){this.isBroken&& (this.options.ordinal=!1)});z.prototype.setBreaks=function(e,l){function k(a){var f=a,e;for(e=0;e<d.breakArray.length;e++){var c=d.breakArray[e];if(c.to<=a)f-=c.len;else if(c.from>=a)break;else if(d.isInBreak(c,a)){f-=a-c.from;break}}return f}function u(a){var f;for(f=0;f<d.breakArray.length;f++){var e=d.breakArray[f];if(e.from>=a)break;else e.to<a?a+=e.len:d.isInBreak(e,a)&&(a+=e.len)}return a}var d=this,a=J(e)&&!!e.length;d.isDirty=d.isBroken!==a;d.isBroken=a;d.options.breaks=d.userOptions.breaks= e;d.forceRedraw=!0;d.series.forEach(function(a){a.isDirty=!0});a||d.val2lin!==k||(delete d.val2lin,delete d.lin2val);a&&(d.userOptions.ordinal=!1,d.val2lin=k,d.lin2val=u,d.setExtremes=function(a,d,e,c,h){if(this.isBroken){for(var n,f=this.options.breaks;n=I(a,f);)a=n.to;for(;n=I(d,f);)d=n.from;d<a&&(d=a)}z.prototype.setExtremes.call(this,a,d,e,c,h)},d.setAxisTranslation=function(a){z.prototype.setAxisTranslation.call(this,a);this.unitLength=null;if(this.isBroken){a=d.options.breaks;var f=[],e=[], c=0,h,n=d.userMin||d.min,y=d.userMax||d.max,l=v(d.pointRangePadding,0),k;a.forEach(function(b){h=b.repeat||Infinity;d.isInBreak(b,n)&&(n+=b.to%h-n%h);d.isInBreak(b,y)&&(y-=y%h-b.from%h)});a.forEach(function(g){b=g.from;for(h=g.repeat||Infinity;b-h>n;)b-=h;for(;b<n;)b+=h;for(k=b;k<y;k+=h)f.push({value:k,move:"in"}),f.push({value:k+(g.to-g.from),move:"out",size:g.breakSize})});f.sort(function(b,c){return b.value===c.value?("in"===b.move?0:1)-("in"===c.move?0:1):b.value-c.value});var t=0;var b=n;f.forEach(function(g){t+= "in"===g.move?1:-1;1===t&&"in"===g.move&&(b=g.value);0===t&&(e.push({from:b,to:g.value,len:g.value-b-(g.size||0)}),c+=g.value-b-(g.size||0))});d.breakArray=e;d.unitLength=y-n-c+l;C(d,"afterBreaks");d.staticScale?d.transA=d.staticScale:d.unitLength&&(d.transA*=(y-d.min+l)/d.unitLength);l&&(d.minPixelPadding=d.transA*d.minPointOffset);d.min=n;d.max=y}});v(l,!0)&&this.chart.redraw()};q(m,"afterGeneratePoints",function(){var e=this.options.connectNulls,l=this.points,k=this.xAxis,u=this.yAxis;if(this.isDirty)for(var d= l.length;d--;){var a=l[d],f=!(null===a.y&&!1===e)&&(k&&k.isInAnyBreak(a.x,!0)||u&&u.isInAnyBreak(a.y,!0));a.visible=f?!1:!1!==a.options.visible}});q(m,"afterRender",function(){this.drawBreaks(this.xAxis,["x"]);this.drawBreaks(this.yAxis,v(this.pointArrayMap,["y"]))});p.Series.prototype.drawBreaks=function(e,l){var k=this,u=k.points,d,a,f,r;e&&l.forEach(function(l){d=e.breakArray||[];a=e.isXAxis?e.min:v(k.options.threshold,e.min);u.forEach(function(c){r=v(c["stack"+l.toUpperCase()],c[l]);d.forEach(function(d){f= !1;if(a<d.from&&r>d.to||a>d.from&&r<d.from)f="pointBreak";else if(a<d.from&&r>d.from&&r<d.to||a>d.from&&r>d.to&&r<d.from)f="pointInBreak";f&&C(e,f,{point:c,brk:d})})})})};p.Series.prototype.gappedPath=function(){var e=this.currentDataGrouping,l=e&&e.gapSize;e=this.options.gapSize;var k=this.points.slice(),u=k.length-1,d=this.yAxis,a;if(e&&0<u)for("value"!==this.options.gapUnit&&(e*=this.basePointRange),l&&l>e&&l>=this.basePointRange&&(e=l),a=void 0;u--;)a&&!1!==a.visible||(a=k[u+1]),l=k[u],!1!==a.visible&& !1!==l.visible&&(a.x-l.x>e&&(a=(l.x+a.x)/2,k.splice(u+1,0,{isNull:!0,x:a}),this.options.stacking&&(a=d.stacks[this.stackKey][a]=new p.StackItem(d,d.options.stackLabels,!1,a,this.stack),a.total=0)),a=l);return this.getGraphPath(k)}});G(q,"masters/modules/broken-axis.src.js",[],function(){});G(q,"parts/DataGrouping.js",[q["parts/Globals.js"],q["parts/Point.js"],q["parts/Tooltip.js"],q["parts/Utilities.js"]],function(p,m,q,w){"";var H=w.addEvent,C=w.arrayMax,F=w.arrayMin,v=w.correctFloat,z=w.defined, I=w.error,e=w.extend,l=w.format,k=w.isNumber,u=w.merge,d=w.pick,a=p.Axis,f=p.defaultPlotOptions;w=p.Series;var r=p.approximations={sum:function(b){var c=b.length;if(!c&&b.hasNulls)var a=null;else if(c)for(a=0;c--;)a+=b[c];return a},average:function(b){var c=b.length;b=r.sum(b);k(b)&&c&&(b=v(b/c));return b},averages:function(){var b=[];[].forEach.call(arguments,function(c){b.push(r.average(c))});return"undefined"===typeof b[0]?void 0:b},open:function(b){return b.length?b[0]:b.hasNulls?null:void 0}, high:function(b){return b.length?C(b):b.hasNulls?null:void 0},low:function(b){return b.length?F(b):b.hasNulls?null:void 0},close:function(b){return b.length?b[b.length-1]:b.hasNulls?null:void 0},ohlc:function(b,c,a,d){b=r.open(b);c=r.high(c);a=r.low(a);d=r.close(d);if(k(b)||k(c)||k(a)||k(d))return[b,c,a,d]},range:function(b,c){b=r.low(b);c=r.high(c);if(k(b)||k(c))return[b,c];if(null===b&&null===c)return null}},B=function(b,c,a,d){var g=this,h=g.data,f=g.options&&g.options.data,n=[],e=[],t=[],x=b.length, A=!!c,l=[],y=g.pointArrayMap,D=y&&y.length,w=["x"].concat(y||["y"]),m=0,E=0,v;d="function"===typeof d?d:r[d]?r[d]:r[g.getDGApproximation&&g.getDGApproximation()||"average"];D?y.forEach(function(){l.push([])}):l.push([]);var B=D||1;for(v=0;v<=x&&!(b[v]>=a[0]);v++);for(v;v<=x;v++){for(;"undefined"!==typeof a[m+1]&&b[v]>=a[m+1]||v===x;){var p=a[m];g.dataGroupInfo={start:g.cropStart+E,length:l[0].length};var q=d.apply(g,l);g.pointClass&&!z(g.dataGroupInfo.options)&&(g.dataGroupInfo.options=u(g.pointClass.prototype.optionsToObject.call({series:g}, g.options.data[g.cropStart+E])),w.forEach(function(b){delete g.dataGroupInfo.options[b]}));"undefined"!==typeof q&&(n.push(p),e.push(q),t.push(g.dataGroupInfo));E=v;for(p=0;p<B;p++)l[p].length=0,l[p].hasNulls=!1;m+=1;if(v===x)break}if(v===x)break;if(y)for(p=g.cropStart+v,q=h&&h[p]||g.pointClass.prototype.applyOptions.apply({series:g},[f[p]]),p=0;p<D;p++){var C=q[y[p]];k(C)?l[p].push(C):null===C&&(l[p].hasNulls=!0)}else p=A?c[v]:null,k(p)?l[0].push(p):null===p&&(l[0].hasNulls=!0)}return{groupedXData:n, groupedYData:e,groupMap:t}},c={approximations:r,groupData:B},h=w.prototype,n=h.processData,y=h.generatePoints,D={groupPixelWidth:2,dateTimeLabelFormats:{millisecond:["%A, %b %e, %H:%M:%S.%L","%A, %b %e, %H:%M:%S.%L","-%H:%M:%S.%L"],second:["%A, %b %e, %H:%M:%S","%A, %b %e, %H:%M:%S","-%H:%M:%S"],minute:["%A, %b %e, %H:%M","%A, %b %e, %H:%M","-%H:%M"],hour:["%A, %b %e, %H:%M","%A, %b %e, %H:%M","-%H:%M"],day:["%A, %b %e, %Y","%A, %b %e","-%A, %b %e, %Y"],week:["Week from %A, %b %e, %Y","%A, %b %e", "-%A, %b %e, %Y"],month:["%B %Y","%B","-%B %Y"],year:["%Y","%Y","-%Y"]}},E={line:{},spline:{},area:{},areaspline:{},arearange:{},column:{groupPixelWidth:10},columnrange:{groupPixelWidth:10},candlestick:{groupPixelWidth:10},ohlc:{groupPixelWidth:5}},t=p.defaultDataGroupingUnits=[["millisecond",[1,2,5,10,20,25,50,100,200,500]],["second",[1,2,5,10,15,30]],["minute",[1,2,5,10,15,30]],["hour",[1,2,3,4,6,8,12]],["day",[1]],["week",[1]],["month",[1,3,6]],["year",null]];h.getDGApproximation=function(){return this.is("arearange")? "range":this.is("ohlc")?"ohlc":this.is("column")?"sum":"average"};h.groupData=B;h.processData=function(){var b=this.chart,c=this.options.dataGrouping,a=!1!==this.allowDG&&c&&d(c.enabled,b.options.isStock),f=this.visible||!b.options.chart.ignoreHiddenSeries,e,l=this.currentDataGrouping,y=!1;this.forceCrop=a;this.groupPixelWidth=null;this.hasProcessed=!0;a&&!this.requireSorting&&(this.requireSorting=y=!0);a=!1===n.apply(this,arguments)||!a;y&&(this.requireSorting=!1);if(!a){this.destroyGroupedData(); a=c.groupAll?this.xData:this.processedXData;var r=c.groupAll?this.yData:this.processedYData,k=b.plotSizeX;b=this.xAxis;var D=b.options.ordinal,u=this.groupPixelWidth=b.getGroupPixelWidth&&b.getGroupPixelWidth();if(u){this.isDirty=e=!0;this.points=null;y=b.getExtremes();var v=y.min;y=y.max;D=D&&b.getGroupIntervalFactor(v,y,this)||1;u=u*(y-v)/k*D;k=b.getTimeTicks(b.normalizeTimeTickInterval(u,c.units||t),Math.min(v,a[0]),Math.max(y,a[a.length-1]),b.options.startOfWeek,a,this.closestPointRange);r=h.groupData.apply(this, [a,r,k,c.approximation]);a=r.groupedXData;D=r.groupedYData;var p=0;if(c.smoothed&&a.length){var m=a.length-1;for(a[m]=Math.min(a[m],y);m--&&0<m;)a[m]+=u/2;a[0]=Math.max(a[0],v)}for(m=1;m<k.length;m++)k.info.segmentStarts&&-1!==k.info.segmentStarts.indexOf(m)||(p=Math.max(k[m]-k[m-1],p));v=k.info;v.gapSize=p;this.closestPointRange=k.info.totalRange;this.groupMap=r.groupMap;if(z(a[0])&&a[0]<b.min&&f){if(!z(b.options.min)&&b.min<=b.dataMin||b.min===b.dataMin)b.min=Math.min(a[0],b.min);b.dataMin=Math.min(a[0], b.dataMin)}c.groupAll&&(c=this.cropData(a,D,b.min,b.max,1),a=c.xData,D=c.yData);this.processedXData=a;this.processedYData=D}else this.groupMap=null;this.hasGroupedData=e;this.currentDataGrouping=v;this.preventGraphAnimation=(l&&l.totalRange)!==(v&&v.totalRange)}};h.destroyGroupedData=function(){this.groupedData&&(this.groupedData.forEach(function(b,c){b&&(this.groupedData[c]=b.destroy?b.destroy():null)},this),this.groupedData.length=0)};h.generatePoints=function(){y.apply(this);this.destroyGroupedData(); this.groupedData=this.hasGroupedData?this.points:null};H(m,"update",function(){if(this.dataGroup)return I(24,!1,this.series.chart),!1});H(q,"headerFormatter",function(b){var c=this.chart,a=c.time,d=b.labelConfig,h=d.series,f=h.tooltipOptions,n=h.options.dataGrouping,t=f.xDateFormat,y=h.xAxis,r=f[(b.isFooter?"footer":"header")+"Format"];if(y&&"datetime"===y.options.type&&n&&k(d.key)){var u=h.currentDataGrouping;n=n.dateTimeLabelFormats||D.dateTimeLabelFormats;if(u)if(f=n[u.unitName],1===u.count)t= f[0];else{t=f[1];var v=f[2]}else!t&&n&&(t=this.getXDateFormat(d,f,y));t=a.dateFormat(t,d.key);v&&(t+=a.dateFormat(v,d.key+u.totalRange-1));h.chart.styledMode&&(r=this.styledModeFormat(r));b.text=l(r,{point:e(d.point,{key:t}),series:h},c);b.preventDefault()}});H(w,"destroy",h.destroyGroupedData);H(w,"afterSetOptions",function(b){b=b.options;var c=this.type,a=this.chart.options.plotOptions,d=f[c].dataGrouping,h=this.useCommonDataGrouping&&D;if(E[c]||h)d||(d=u(D,E[c])),b.dataGrouping=u(h,d,a.series&& a.series.dataGrouping,a[c].dataGrouping,this.userOptions.dataGrouping)});H(a,"afterSetScale",function(){this.series.forEach(function(b){b.hasProcessed=!1})});a.prototype.getGroupPixelWidth=function(){var b=this.series,c=b.length,a,h=0,f=!1,n;for(a=c;a--;)(n=b[a].options.dataGrouping)&&(h=Math.max(h,d(n.groupPixelWidth,D.groupPixelWidth)));for(a=c;a--;)(n=b[a].options.dataGrouping)&&b[a].hasProcessed&&(c=(b[a].processedXData||b[a].data).length,b[a].groupPixelWidth||c>this.chart.plotSizeX/h||c&&n.forced)&& (f=!0);return f?h:0};a.prototype.setDataGrouping=function(b,c){var g;c=d(c,!0);b||(b={forced:!1,units:null});if(this instanceof a)for(g=this.series.length;g--;)this.series[g].update({dataGrouping:b},!1);else this.chart.options.series.forEach(function(c){c.dataGrouping=b},!1);this.ordinalSlope=null;c&&this.chart.redraw()};p.dataGrouping=c;"";return c});G(q,"parts/OHLCSeries.js",[q["parts/Globals.js"],q["parts/Point.js"],q["parts/Utilities.js"]],function(p,m,q){q=q.seriesType;var w=p.seriesTypes;q("ohlc", "column",{lineWidth:1,tooltip:{pointFormat:'<span style="color:{point.color}">\u25cf</span> <b> {series.name}</b><br/>Open: {point.open}<br/>High: {point.high}<br/>Low: {point.low}<br/>Close: {point.close}<br/>'},threshold:null,states:{hover:{lineWidth:3}},stickyTracking:!0},{directTouch:!1,pointArrayMap:["open","high","low","close"],toYData:function(m){return[m.open,m.high,m.low,m.close]},pointValKey:"close",pointAttrToOptions:{stroke:"color","stroke-width":"lineWidth"},init:function(){w.column.prototype.init.apply(this, arguments);this.options.stacking=!1},pointAttribs:function(m,p){p=w.column.prototype.pointAttribs.call(this,m,p);var q=this.options;delete p.fill;!m.options.color&&q.upColor&&m.open<m.close&&(p.stroke=q.upColor);return p},translate:function(){var m=this,p=m.yAxis,q=!!m.modifyValue,v=["plotOpen","plotHigh","plotLow","plotClose","yBottom"];w.column.prototype.translate.apply(m);m.points.forEach(function(z){[z.open,z.high,z.low,z.close,z.low].forEach(function(w,e){null!==w&&(q&&(w=m.modifyValue(w)),z[v[e]]= p.toPixels(w,!0))});z.tooltipPos[1]=z.plotHigh+p.pos-m.chart.plotTop})},drawPoints:function(){var m=this,p=m.chart,w=function(m,p,w){m[2]=Math.max(w+p,m[2]);m[5]=Math.min(w-p,m[5])};m.points.forEach(function(v){var z=v.graphic,q=!z;if("undefined"!==typeof v.plotY){z||(v.graphic=z=p.renderer.path().add(m.group));p.styledMode||z.attr(m.pointAttribs(v,v.selected&&"select"));var e=z.strokeWidth();var l=e%2/2;var k=Math.round(v.plotX)-l;var u=Math.round(v.shapeArgs.width/2);var d=["M",k,Math.round(v.yBottom), "L",k,Math.round(v.plotHigh)];if(null!==v.open){var a=Math.round(v.plotOpen)+l;d.push("M",k,a,"L",k-u,a);w(d,e/2,a)}null!==v.close&&(a=Math.round(v.plotClose)+l,d.push("M",k,a,"L",k+u,a),w(d,e/2,a));z[q?"attr":"animate"]({d:d}).addClass(v.getClassName(),!0)}})},animate:null},{getClassName:function(){return m.prototype.getClassName.call(this)+(this.open<this.close?" highcharts-point-up":" highcharts-point-down")}});""});G(q,"parts/CandlestickSeries.js",[q["parts/Globals.js"],q["parts/Utilities.js"]], function(p,m){var q=m.merge;m=m.seriesType;var w=p.defaultPlotOptions,H=p.seriesTypes;m("candlestick","ohlc",q(w.column,{states:{hover:{lineWidth:2}},tooltip:w.ohlc.tooltip,threshold:null,lineColor:"#000000",lineWidth:1,upColor:"#ffffff",stickyTracking:!0}),{pointAttribs:function(m,p){var v=H.column.prototype.pointAttribs.call(this,m