Răsfoiți Sursa

over;clear something;

Karsa 8 luni în urmă
părinte
comite
936c39a04c

Fișier diff suprimat deoarece este prea mare
+ 0 - 0
static/css/jquery.dataTables.css


+ 0 - 623
static/js/highstock.js

@@ -1,623 +0,0 @@
-/*
- Highstock JS v7.2.1 (2019-10-31)
-
- (c) 2009-2018 Torstein Honsi
-
- License: www.highcharts.com/license
-*/
-(function(R,K){"object"===typeof module&&module.exports?(K["default"]=K,module.exports=R.document?K(R):K):"function"===typeof define&&define.amd?define("highcharts/highstock",function(){return K(R)}):(R.Highcharts&&R.Highcharts.error(16,!0),R.Highcharts=K(R))})("undefined"!==typeof window?window:this,function(R){function K(c,g,I,G){c.hasOwnProperty(g)||(c[g]=G.apply(null,I))}var D={};K(D,"parts/Globals.js",[],function(){var c="undefined"!==typeof R?R:"undefined"!==typeof window?window:{},g=c.document,
-I=c.navigator&&c.navigator.userAgent||"",G=g&&g.createElementNS&&!!g.createElementNS("http://www.w3.org/2000/svg","svg").createSVGRect,H=/(edge|msie|trident)/i.test(I)&&!c.opera,y=-1!==I.indexOf("Firefox"),w=-1!==I.indexOf("Chrome"),x=y&&4>parseInt(I.split("Firefox/")[1],10);return{product:"Highcharts",version:"7.2.1",deg2rad:2*Math.PI/360,doc:g,hasBidiBug:x,hasTouch:!!c.TouchEvent,isMS:H,isWebKit:-1!==I.indexOf("AppleWebKit"),isFirefox:y,isChrome:w,isSafari:!w&&-1!==I.indexOf("Safari"),isTouchDevice:/(Mobile|Android|Windows Phone)/.test(I),
-SVG_NS:"http://www.w3.org/2000/svg",chartCount:0,seriesTypes:{},symbolSizes:{},svg:G,win:c,marginNames:["plotTop","marginRight","marginBottom","plotLeft"],noop:function(){},charts:[],dateFormats:{}}});K(D,"parts/Utilities.js",[D["parts/Globals.js"]],function(c){function g(b,a){return parseInt(b,a||10)}function I(b){return"string"===typeof b}function G(b){b=Object.prototype.toString.call(b);return"[object Array]"===b||"[object Array Iterator]"===b}function H(b,a){return!!b&&"object"===typeof b&&(!a||
-!G(b))}function y(b){return H(b)&&"number"===typeof b.nodeType}function w(b){var a=b&&b.constructor;return!(!H(b,!0)||y(b)||!a||!a.name||"Object"===a.name)}function x(b){return"number"===typeof b&&!isNaN(b)&&Infinity>b&&-Infinity<b}function E(b){return"undefined"!==typeof b&&null!==b}function F(b,a,e){var d;I(a)?E(e)?b.setAttribute(a,e):b&&b.getAttribute&&((d=b.getAttribute(a))||"class"!==a||(d=b.getAttribute(a+"Name"))):p(a,function(a,d){b.setAttribute(d,a)});return d}function t(b,a){var d;b||(b=
-{});for(d in a)b[d]=a[d];return b}function m(){for(var b=arguments,a=b.length,e=0;e<a;e++){var k=b[e];if("undefined"!==typeof k&&null!==k)return k}}function p(b,a,e){for(var d in b)Object.hasOwnProperty.call(b,d)&&a.call(e||b[d],b[d],d,b)}c.timers=[];var q=c.charts,h=c.doc,a=c.win;c.error=function(b,d,e,k){var C=x(b),h=C?"Highcharts error #"+b+": www.highcharts.com/errors/"+b+"/":b.toString(),r=function(){if(d)throw Error(h);a.console&&console.log(h)};if("undefined"!==typeof k){var n="";C&&(h+="?");
-c.objectEach(k,function(b,a){n+="\n"+a+": "+b;C&&(h+=encodeURI(a)+"="+encodeURI(b))});h+=n}e?c.fireEvent(e,"displayError",{code:b,message:h,params:k},r):r()};c.Fx=function(b,a,e){this.options=a;this.elem=b;this.prop=e};c.Fx.prototype={dSetter:function(){var b=this.paths[0],a=this.paths[1],e=[],k=this.now,C=b.length;if(1===k)e=this.toD;else if(C===a.length&&1>k)for(;C--;){var h=parseFloat(b[C]);e[C]=isNaN(h)||"A"===a[C-4]||"A"===a[C-5]?a[C]:k*parseFloat(""+(a[C]-h))+h}else e=a;this.elem.attr("d",e,
-null,!0)},update:function(){var b=this.elem,a=this.prop,e=this.now,k=this.options.step;if(this[a+"Setter"])this[a+"Setter"]();else b.attr?b.element&&b.attr(a,e,null,!0):b.style[a]=e+this.unit;k&&k.call(b,e,this)},run:function(b,d,e){var k=this,C=k.options,h=function(b){return h.stopped?!1:k.step(b)},r=a.requestAnimationFrame||function(b){setTimeout(b,13)},n=function(){for(var b=0;b<c.timers.length;b++)c.timers[b]()||c.timers.splice(b--,1);c.timers.length&&r(n)};b!==d||this.elem["forceAnimate:"+this.prop]?
-(this.startTime=+new Date,this.start=b,this.end=d,this.unit=e,this.now=this.start,this.pos=0,h.elem=this.elem,h.prop=this.prop,h()&&1===c.timers.push(h)&&r(n)):(delete C.curAnim[this.prop],C.complete&&0===Object.keys(C.curAnim).length&&C.complete.call(this.elem))},step:function(b){var a=+new Date,e=this.options,k=this.elem,h=e.complete,c=e.duration,r=e.curAnim;if(k.attr&&!k.element)b=!1;else if(b||a>=c+this.startTime){this.now=this.end;this.pos=1;this.update();var n=r[this.prop]=!0;p(r,function(b){!0!==
-b&&(n=!1)});n&&h&&h.call(k);b=!1}else this.pos=e.easing((a-this.startTime)/c),this.now=this.start+(this.end-this.start)*this.pos,this.update(),b=!0;return b},initPath:function(b,a,e){function d(b){for(B=b.length;B--;){var a="M"===b[B]||"L"===b[B];var l=/[a-zA-Z]/.test(b[B+3]);a&&l&&b.splice(B+1,0,b[B+1],b[B+2],b[B+1],b[B+2])}}function h(b,a){for(;b.length<m;){b[0]=a[m-b.length];var f=b.slice(0,l);[].splice.apply(b,[0,0].concat(f));A&&(f=b.slice(b.length-l),[].splice.apply(b,[b.length,0].concat(f)),
-B--)}b[0]="M"}function c(b,a){for(var d=(m-b.length)/l;0<d&&d--;)v=b.slice().splice(b.length/u-l,l*u),v[0]=a[m-l-d*l],f&&(v[l-6]=v[l-2],v[l-5]=v[l-1]),[].splice.apply(b,[b.length/u,0].concat(v)),A&&d--}a=a||"";var r=b.startX,n=b.endX,f=-1<a.indexOf("C"),l=f?7:3,v,B;a=a.split(" ");e=e.slice();var A=b.isArea,u=A?2:1;f&&(d(a),d(e));if(r&&n){for(B=0;B<r.length;B++)if(r[B]===n[0]){var J=B;break}else if(r[0]===n[n.length-r.length+B]){J=B;var L=!0;break}else if(r[r.length-1]===n[n.length-r.length+B]){J=
-r.length-B;break}"undefined"===typeof J&&(a=[])}if(a.length&&x(J)){var m=e.length+J*u*l;L?(h(a,e),c(e,a)):(h(e,a),c(a,e))}return[a,e]},fillSetter:function(){c.Fx.prototype.strokeSetter.apply(this,arguments)},strokeSetter:function(){this.elem.attr(this.prop,c.color(this.start).tweenTo(c.color(this.end),this.pos),null,!0)}};c.merge=function(){var b,a=arguments,e={},k=function(b,a){"object"!==typeof b&&(b={});p(a,function(d,f){!H(d,!0)||w(d)||y(d)?b[f]=a[f]:b[f]=k(b[f]||{},d)});return b};!0===a[0]&&
-(e=a[1],a=Array.prototype.slice.call(a,2));var h=a.length;for(b=0;b<h;b++)e=k(e,a[b]);return e};c.clearTimeout=function(b){E(b)&&clearTimeout(b)};c.css=function(b,a){c.isMS&&!c.svg&&a&&"undefined"!==typeof a.opacity&&(a.filter="alpha(opacity="+100*a.opacity+")");t(b.style,a)};c.createElement=function(b,a,e,k,C){b=h.createElement(b);var d=c.css;a&&t(b,a);C&&d(b,{padding:"0",border:"none",margin:"0"});e&&d(b,e);k&&k.appendChild(b);return b};c.extendClass=function(b,a){var d=function(){};d.prototype=
-new b;t(d.prototype,a);return d};c.pad=function(b,a,e){return Array((a||2)+1-String(b).replace("-","").length).join(e||"0")+b};c.relativeLength=function(b,a,e){return/%$/.test(b)?a*parseFloat(b)/100+(e||0):parseFloat(b)};c.wrap=function(b,a,e){var d=b[a];b[a]=function(){var b=Array.prototype.slice.call(arguments),a=arguments,k=this;k.proceed=function(){d.apply(k,arguments.length?arguments:a)};b.unshift(d);b=e.apply(this,b);k.proceed=null;return b}};c.datePropsToTimestamps=function(b){p(b,function(a,
-e){H(a)&&"function"===typeof a.getTime?b[e]=a.getTime():(H(a)||G(a))&&c.datePropsToTimestamps(a)})};c.formatSingle=function(b,a,e){var d=/\.([0-9])/,h=c.defaultOptions.lang;/f$/.test(b)?(e=(e=b.match(d))?e[1]:-1,null!==a&&(a=c.numberFormat(a,e,h.decimalPoint,-1<b.indexOf(",")?h.thousandsSep:""))):a=(e||c.time).dateFormat(b,a);return a};c.format=function(b,a,e){for(var d="{",h=!1,m,r,n,f,l=[],v;b;){d=b.indexOf(d);if(-1===d)break;m=b.slice(0,d);if(h){m=m.split(":");r=m.shift().split(".");f=r.length;
-v=a;for(n=0;n<f;n++)v&&(v=v[r[n]]);m.length&&(v=c.formatSingle(m.join(":"),v,e));l.push(v)}else l.push(m);b=b.slice(d+1);d=(h=!h)?"}":"{"}l.push(b);return l.join("")};c.getMagnitude=function(b){return Math.pow(10,Math.floor(Math.log(b)/Math.LN10))};c.normalizeTickInterval=function(b,a,e,k,h){var d=b;e=m(e,1);var r=b/e;a||(a=h?[1,1.2,1.5,2,2.5,3,4,5,6,8,10]:[1,2,2.5,5,10],!1===k&&(1===e?a=a.filter(function(b){return 0===b%1}):.1>=e&&(a=[1/e])));for(k=0;k<a.length&&!(d=a[k],h&&d*e>=b||!h&&r<=(a[k]+
-(a[k+1]||a[k]))/2);k++);return d=c.correctFloat(d*e,-Math.round(Math.log(.001)/Math.LN10))};c.stableSort=function(b,a){var d=b.length,k,h;for(h=0;h<d;h++)b[h].safeI=h;b.sort(function(b,d){k=a(b,d);return 0===k?b.safeI-d.safeI:k});for(h=0;h<d;h++)delete b[h].safeI};c.correctFloat=function(b,a){return parseFloat(b.toPrecision(a||14))};c.animObject=function(b){return H(b)?c.merge(b):{duration:b?500:0}};c.timeUnits={millisecond:1,second:1E3,minute:6E4,hour:36E5,day:864E5,week:6048E5,month:24192E5,year:314496E5};
-c.numberFormat=function(b,a,e,k){b=+b||0;a=+a;var d=c.defaultOptions.lang,h=(b.toString().split(".")[1]||"").split("e")[0].length,r=b.toString().split("e");if(-1===a)a=Math.min(h,20);else if(!x(a))a=2;else if(a&&r[1]&&0>r[1]){var n=a+ +r[1];0<=n?(r[0]=(+r[0]).toExponential(n).split("e")[0],a=n):(r[0]=r[0].split(".")[0]||0,b=20>a?(r[0]*Math.pow(10,r[1])).toFixed(a):0,r[1]=0)}var f=(Math.abs(r[1]?r[0]:b)+Math.pow(10,-Math.max(a,h)-1)).toFixed(a);h=String(g(f));n=3<h.length?h.length%3:0;e=m(e,d.decimalPoint);
-k=m(k,d.thousandsSep);b=(0>b?"-":"")+(n?h.substr(0,n)+k:"");b+=h.substr(n).replace(/(\d{3})(?=\d)/g,"$1"+k);a&&(b+=e+f.slice(-a));r[1]&&0!==+b&&(b+="e"+r[1]);return b};Math.easeInOutSine=function(a){return-.5*(Math.cos(Math.PI*a)-1)};c.getStyle=function(b,d,e){if("width"===d)return d=Math.min(b.offsetWidth,b.scrollWidth),e=b.getBoundingClientRect&&b.getBoundingClientRect().width,e<d&&e>=d-1&&(d=Math.floor(e)),Math.max(0,d-c.getStyle(b,"padding-left")-c.getStyle(b,"padding-right"));if("height"===d)return Math.max(0,
-Math.min(b.offsetHeight,b.scrollHeight)-c.getStyle(b,"padding-top")-c.getStyle(b,"padding-bottom"));a.getComputedStyle||c.error(27,!0);if(b=a.getComputedStyle(b,void 0))b=b.getPropertyValue(d),m(e,"opacity"!==d)&&(b=g(b));return b};c.inArray=function(a,d,e){return d.indexOf(a,e)};c.find=Array.prototype.find?function(a,d){return a.find(d)}:function(a,d){var b,k=a.length;for(b=0;b<k;b++)if(d(a[b],b))return a[b]};c.keys=Object.keys;c.offset=function(b){var d=h.documentElement;b=b.parentElement||b.parentNode?
-b.getBoundingClientRect():{top:0,left:0};return{top:b.top+(a.pageYOffset||d.scrollTop)-(d.clientTop||0),left:b.left+(a.pageXOffset||d.scrollLeft)-(d.clientLeft||0)}};c.stop=function(a,d){for(var b=c.timers.length;b--;)c.timers[b].elem!==a||d&&d!==c.timers[b].prop||(c.timers[b].stopped=!0)};p({map:"map",each:"forEach",grep:"filter",reduce:"reduce",some:"some"},function(a,d){c[d]=function(b){return Array.prototype[a].apply(b,[].slice.call(arguments,1))}});c.addEvent=function(a,d,e,k){void 0===k&&(k=
-{});var b=a.addEventListener||c.addEventListenerPolyfill;var h="function"===typeof a&&a.prototype?a.prototype.protoEvents=a.prototype.protoEvents||{}:a.hcEvents=a.hcEvents||{};c.Point&&a instanceof c.Point&&a.series&&a.series.chart&&(a.series.chart.runTrackerClick=!0);b&&b.call(a,d,e,!1);h[d]||(h[d]=[]);h[d].push({fn:e,order:"number"===typeof k.order?k.order:Infinity});h[d].sort(function(a,b){return a.order-b.order});return function(){c.removeEvent(a,d,e)}};c.removeEvent=function(a,d,e){function b(b,
-d){var f=a.removeEventListener||c.removeEventListenerPolyfill;f&&f.call(a,b,d,!1)}function h(e){var k;if(a.nodeName){if(d){var f={};f[d]=!0}else f=e;p(f,function(a,f){if(e[f])for(k=e[f].length;k--;)b(f,e[f][k].fn)})}}var m;["protoEvents","hcEvents"].forEach(function(k,n){var f=(n=n?a:a.prototype)&&n[k];f&&(d?(m=f[d]||[],e?(f[d]=m.filter(function(a){return e!==a.fn}),b(d,e)):(h(f),f[d]=[])):(h(f),n[k]={}))})};c.fireEvent=function(a,d,e,k){var b;e=e||{};if(h.createEvent&&(a.dispatchEvent||a.fireEvent)){var c=
-h.createEvent("Events");c.initEvent(d,!0,!0);t(c,e);a.dispatchEvent?a.dispatchEvent(c):a.fireEvent(d,c)}else e.target||t(e,{preventDefault:function(){e.defaultPrevented=!0},target:a,type:d}),function(d,k){void 0===d&&(d=[]);void 0===k&&(k=[]);var f=0,l=0,n=d.length+k.length;for(b=0;b<n;b++)!1===(d[f]?k[l]?d[f].order<=k[l].order?d[f++]:k[l++]:d[f++]:k[l++]).fn.call(a,e)&&e.preventDefault()}(a.protoEvents&&a.protoEvents[d],a.hcEvents&&a.hcEvents[d]);k&&!e.defaultPrevented&&k.call(a,e)};c.animate=function(a,
-d,e){var b,h="",m,r;if(!H(e)){var n=arguments;e={duration:n[2],easing:n[3],complete:n[4]}}x(e.duration)||(e.duration=400);e.easing="function"===typeof e.easing?e.easing:Math[e.easing]||Math.easeInOutSine;e.curAnim=c.merge(d);p(d,function(f,l){c.stop(a,l);r=new c.Fx(a,e,l);m=null;"d"===l?(r.paths=r.initPath(a,a.d,d.d),r.toD=d.d,b=0,m=1):a.attr?b=a.attr(l):(b=parseFloat(c.getStyle(a,l))||0,"opacity"!==l&&(h="px"));m||(m=f);m&&m.match&&m.match("px")&&(m=m.replace(/px/g,""));r.run(b,m,h)})};c.seriesType=
-function(a,d,e,k,h){var b=c.getOptions(),r=c.seriesTypes;b.plotOptions[a]=c.merge(b.plotOptions[d],e);r[a]=c.extendClass(r[d]||function(){},k);r[a].prototype.type=a;h&&(r[a].prototype.pointClass=c.extendClass(c.Point,h));return r[a]};c.uniqueKey=function(){var a=Math.random().toString(36).substring(2,9),d=0;return function(){return"highcharts-"+a+"-"+d++}}();c.isFunction=function(a){return"function"===typeof a};a.jQuery&&(a.jQuery.fn.highcharts=function(){var a=[].slice.call(arguments);if(this[0])return a[0]?
-(new (c[I(a[0])?a.shift():"Chart"])(this[0],a[0],a[1]),this):q[F(this[0],"data-highcharts-chart")]});return{arrayMax:function(a){for(var b=a.length,e=a[0];b--;)a[b]>e&&(e=a[b]);return e},arrayMin:function(a){for(var b=a.length,e=a[0];b--;)a[b]<e&&(e=a[b]);return e},attr:F,defined:E,destroyObjectProperties:function(a,d){p(a,function(b,k){b&&b!==d&&b.destroy&&b.destroy();delete a[k]})},discardElement:function(a){var b=c.garbageBin;b||(b=c.createElement("div"));a&&b.appendChild(a);b.innerHTML=""},erase:function(a,
-d){for(var b=a.length;b--;)if(a[b]===d){a.splice(b,1);break}},extend:t,isArray:G,isClass:w,isDOMElement:y,isNumber:x,isObject:H,isString:I,objectEach:p,pick:m,pInt:g,setAnimation:function(a,d){d.renderer.globalAnimation=m(a,d.options.chart.animation,!0)},splat:function(a){return G(a)?a:[a]},syncTimeout:function(a,d,e){if(0<d)return setTimeout(a,d,e);a.call(0,e);return-1}}});K(D,"parts/Color.js",[D["parts/Globals.js"],D["parts/Utilities.js"]],function(c,g){var I=g.isNumber,G=g.pInt,H=c.merge;c.Color=
-function(g){if(!(this instanceof c.Color))return new c.Color(g);this.init(g)};c.Color.prototype={parsers:[{regex:/rgba\(\s*([0-9]{1,3})\s*,\s*([0-9]{1,3})\s*,\s*([0-9]{1,3})\s*,\s*([0-9]?(?:\.[0-9]+)?)\s*\)/,parse:function(c){return[G(c[1]),G(c[2]),G(c[3]),parseFloat(c[4],10)]}},{regex:/rgb\(\s*([0-9]{1,3})\s*,\s*([0-9]{1,3})\s*,\s*([0-9]{1,3})\s*\)/,parse:function(c){return[G(c[1]),G(c[2]),G(c[3]),1]}}],names:{white:"#ffffff",black:"#000000"},init:function(g){var w,x;if((this.input=g=this.names[g&&
-g.toLowerCase?g.toLowerCase():""]||g)&&g.stops)this.stops=g.stops.map(function(g){return new c.Color(g[1])});else{if(g&&g.charAt&&"#"===g.charAt()){var E=g.length;g=parseInt(g.substr(1),16);7===E?w=[(g&16711680)>>16,(g&65280)>>8,g&255,1]:4===E&&(w=[(g&3840)>>4|(g&3840)>>8,(g&240)>>4|g&240,(g&15)<<4|g&15,1])}if(!w)for(x=this.parsers.length;x--&&!w;){var y=this.parsers[x];(E=y.regex.exec(g))&&(w=y.parse(E))}}this.rgba=w||[]},get:function(c){var g=this.input,x=this.rgba;if(this.stops){var E=H(g);E.stops=
-[].concat(E.stops);this.stops.forEach(function(g,t){E.stops[t]=[E.stops[t][0],g.get(c)]})}else E=x&&I(x[0])?"rgb"===c||!c&&1===x[3]?"rgb("+x[0]+","+x[1]+","+x[2]+")":"a"===c?x[3]:"rgba("+x.join(",")+")":g;return E},brighten:function(c){var g,x=this.rgba;if(this.stops)this.stops.forEach(function(g){g.brighten(c)});else if(I(c)&&0!==c)for(g=0;3>g;g++)x[g]+=G(255*c),0>x[g]&&(x[g]=0),255<x[g]&&(x[g]=255);return this},setOpacity:function(c){this.rgba[3]=c;return this},tweenTo:function(c,g){var x=this.rgba,
-w=c.rgba;w.length&&x&&x.length?(c=1!==w[3]||1!==x[3],g=(c?"rgba(":"rgb(")+Math.round(w[0]+(x[0]-w[0])*(1-g))+","+Math.round(w[1]+(x[1]-w[1])*(1-g))+","+Math.round(w[2]+(x[2]-w[2])*(1-g))+(c?","+(w[3]+(x[3]-w[3])*(1-g)):"")+")"):g=c.input||"none";return g}};c.color=function(g){return new c.Color(g)}});K(D,"parts/SvgRenderer.js",[D["parts/Globals.js"],D["parts/Utilities.js"]],function(c,g){var I=g.attr,G=g.defined,H=g.destroyObjectProperties,y=g.erase,w=g.extend,x=g.isArray,E=g.isNumber,F=g.isObject,
-t=g.isString,m=g.objectEach,p=g.pick,q=g.pInt,h=g.splat,a=c.addEvent,b=c.animate,d=c.charts,e=c.color,k=c.css,C=c.createElement,z=c.deg2rad,r=c.doc,n=c.hasTouch,f=c.isFirefox,l=c.isMS,v=c.isWebKit,B=c.merge,A=c.noop,u=c.removeEvent,J=c.stop,L=c.svg,U=c.SVG_NS,Q=c.symbolSizes,P=c.win;var M=c.SVGElement=function(){return this};w(M.prototype,{opacity:1,SVG_NS:U,textProps:"direction fontSize fontWeight fontFamily fontStyle color lineHeight width textAlign textDecoration textOverflow textOutline cursor".split(" "),
-init:function(a,b){this.element="span"===b?C(b):r.createElementNS(this.SVG_NS,b);this.renderer=a;c.fireEvent(this,"afterInit")},animate:function(a,f,l){var u=c.animObject(p(f,this.renderer.globalAnimation,!0));p(r.hidden,r.msHidden,r.webkitHidden,!1)&&(u.duration=0);0!==u.duration?(l&&(u.complete=l),b(this,a,u)):(this.attr(a,void 0,l),m(a,function(a,b){u.step&&u.step.call(this,a,{prop:b,pos:1})},this));return this},complexColor:function(a,b,f){var l=this.renderer,u,A,d,k,N,e,n,v,h,O,r,J=[],C;c.fireEvent(this.renderer,
-"complexColor",{args:arguments},function(){a.radialGradient?A="radialGradient":a.linearGradient&&(A="linearGradient");A&&(d=a[A],N=l.gradients,n=a.stops,O=f.radialReference,x(d)&&(a[A]=d={x1:d[0],y1:d[1],x2:d[2],y2:d[3],gradientUnits:"userSpaceOnUse"}),"radialGradient"===A&&O&&!G(d.gradientUnits)&&(k=d,d=B(d,l.getRadialAttr(O,k),{gradientUnits:"userSpaceOnUse"})),m(d,function(a,b){"id"!==b&&J.push(b,a)}),m(n,function(a){J.push(a)}),J=J.join(","),N[J]?r=N[J].attr("id"):(d.id=r=c.uniqueKey(),N[J]=e=
-l.createElement(A).attr(d).add(l.defs),e.radAttr=k,e.stops=[],n.forEach(function(a){0===a[1].indexOf("rgba")?(u=c.color(a[1]),v=u.get("rgb"),h=u.get("a")):(v=a[1],h=1);a=l.createElement("stop").attr({offset:a[0],"stop-color":v,"stop-opacity":h}).add(e);e.stops.push(a)})),C="url("+l.url+"#"+r+")",f.setAttribute(b,C),f.gradient=J,a.toString=function(){return C})})},applyTextOutline:function(a){var b=this.element,f;-1!==a.indexOf("contrast")&&(a=a.replace(/contrast/g,this.renderer.getContrast(b.style.fill)));
-a=a.split(" ");var l=a[a.length-1];if((f=a[0])&&"none"!==f&&c.svg){this.fakeTS=!0;a=[].slice.call(b.getElementsByTagName("tspan"));this.ySetter=this.xSetter;f=f.replace(/(^[\d\.]+)(.*?)$/g,function(a,b,f){return 2*b+f});this.removeTextOutline(a);var u=b.firstChild;a.forEach(function(a,A){0===A&&(a.setAttribute("x",b.getAttribute("x")),A=b.getAttribute("y"),a.setAttribute("y",A||0),null===A&&b.setAttribute("y",0));a=a.cloneNode(1);I(a,{"class":"highcharts-text-outline",fill:l,stroke:l,"stroke-width":f,
-"stroke-linejoin":"round"});b.insertBefore(a,u)})}},removeTextOutline:function(a){for(var b=a.length,f;b--;)f=a[b],"highcharts-text-outline"===f.getAttribute("class")&&y(a,this.element.removeChild(f))},symbolCustomAttribs:"x y width height r start end innerR anchorX anchorY rounded".split(" "),attr:function(a,b,f,l){var u=this.element,A,d=this,k,e,N=this.symbolCustomAttribs;if("string"===typeof a&&void 0!==b){var n=a;a={};a[n]=b}"string"===typeof a?d=(this[a+"Getter"]||this._defaultGetter).call(this,
-a,u):(m(a,function(b,f){k=!1;l||J(this,f);this.symbolName&&-1!==c.inArray(f,N)&&(A||(this.symbolAttr(a),A=!0),k=!0);!this.rotation||"x"!==f&&"y"!==f||(this.doTransform=!0);k||(e=this[f+"Setter"]||this._defaultSetter,e.call(this,b,f,u),!this.styledMode&&this.shadows&&/^(width|height|visibility|x|y|d|transform|cx|cy|r)$/.test(f)&&this.updateShadows(f,b,e))},this),this.afterSetters());f&&f.call(this);return d},afterSetters:function(){this.doTransform&&(this.updateTransform(),this.doTransform=!1)},updateShadows:function(a,
-b,f){for(var l=this.shadows,u=l.length;u--;)f.call(l[u],"height"===a?Math.max(b-(l[u].cutHeight||0),0):"d"===a?this.d:b,a,l[u])},addClass:function(a,b){var f=b?"":this.attr("class")||"";a=(a||"").split(/ /g).reduce(function(a,b){-1===f.indexOf(b)&&a.push(b);return a},f?[f]:[]).join(" ");a!==f&&this.attr("class",a);return this},hasClass:function(a){return-1!==(this.attr("class")||"").split(" ").indexOf(a)},removeClass:function(a){return this.attr("class",(this.attr("class")||"").replace(t(a)?new RegExp(" ?"+
-a+" ?"):a,""))},symbolAttr:function(a){var b=this;"x y r start end width height innerR anchorX anchorY clockwise".split(" ").forEach(function(f){b[f]=p(a[f],b[f])});b.attr({d:b.renderer.symbols[b.symbolName](b.x,b.y,b.width,b.height,b)})},clip:function(a){return this.attr("clip-path",a?"url("+this.renderer.url+"#"+a.id+")":"none")},crisp:function(a,b){b=b||a.strokeWidth||0;var f=Math.round(b)%2/2;a.x=Math.floor(a.x||this.x||0)+f;a.y=Math.floor(a.y||this.y||0)+f;a.width=Math.floor((a.width||this.width||
-0)-2*f);a.height=Math.floor((a.height||this.height||0)-2*f);G(a.strokeWidth)&&(a.strokeWidth=b);return a},css:function(a){var b=this.styles,f={},l=this.element,u="",A=!b,d=["textOutline","textOverflow","width"];a&&a.color&&(a.fill=a.color);b&&m(a,function(a,l){a!==b[l]&&(f[l]=a,A=!0)});if(A){b&&(a=w(b,f));if(a)if(null===a.width||"auto"===a.width)delete this.textWidth;else if("text"===l.nodeName.toLowerCase()&&a.width)var e=this.textWidth=q(a.width);this.styles=a;e&&!L&&this.renderer.forExport&&delete a.width;
-if(l.namespaceURI===this.SVG_NS){var n=function(a,b){return"-"+b.toLowerCase()};m(a,function(a,b){-1===d.indexOf(b)&&(u+=b.replace(/([A-Z])/g,n)+":"+a+";")});u&&I(l,"style",u)}else k(l,a);this.added&&("text"===this.element.nodeName&&this.renderer.buildText(this),a&&a.textOutline&&this.applyTextOutline(a.textOutline))}return this},getStyle:function(a){return P.getComputedStyle(this.element||this,"").getPropertyValue(a)},strokeWidth:function(){if(!this.renderer.styledMode)return this["stroke-width"]||
-0;var a=this.getStyle("stroke-width");if(a.indexOf("px")===a.length-2)a=q(a);else{var b=r.createElementNS(U,"rect");I(b,{width:a,"stroke-width":0});this.element.parentNode.appendChild(b);a=b.getBBox().width;b.parentNode.removeChild(b)}return a},on:function(a,b){var f=this,l=f.element;n&&"click"===a?(l.ontouchstart=function(a){f.touchEventFired=Date.now();a.preventDefault();b.call(l,a)},l.onclick=function(a){(-1===P.navigator.userAgent.indexOf("Android")||1100<Date.now()-(f.touchEventFired||0))&&b.call(l,
-a)}):l["on"+a]=b;return this},setRadialReference:function(a){var b=this.renderer.gradients[this.element.gradient];this.element.radialReference=a;b&&b.radAttr&&b.animate(this.renderer.getRadialAttr(a,b.radAttr));return this},translate:function(a,b){return this.attr({translateX:a,translateY:b})},invert:function(a){this.inverted=a;this.updateTransform();return this},updateTransform:function(){var a=this.translateX||0,b=this.translateY||0,f=this.scaleX,l=this.scaleY,u=this.inverted,A=this.rotation,d=
-this.matrix,k=this.element;u&&(a+=this.width,b+=this.height);a=["translate("+a+","+b+")"];G(d)&&a.push("matrix("+d.join(",")+")");u?a.push("rotate(90) scale(-1,1)"):A&&a.push("rotate("+A+" "+p(this.rotationOriginX,k.getAttribute("x"),0)+" "+p(this.rotationOriginY,k.getAttribute("y")||0)+")");(G(f)||G(l))&&a.push("scale("+p(f,1)+" "+p(l,1)+")");a.length&&k.setAttribute("transform",a.join(" "))},toFront:function(){var a=this.element;a.parentNode.appendChild(a);return this},align:function(a,b,f){var l,
-u={};var A=this.renderer;var d=A.alignedObjects;var k,e;if(a){if(this.alignOptions=a,this.alignByTranslate=b,!f||t(f))this.alignTo=l=f||"renderer",y(d,this),d.push(this),f=null}else a=this.alignOptions,b=this.alignByTranslate,l=this.alignTo;f=p(f,A[l],A);l=a.align;A=a.verticalAlign;d=(f.x||0)+(a.x||0);var n=(f.y||0)+(a.y||0);"right"===l?k=1:"center"===l&&(k=2);k&&(d+=(f.width-(a.width||0))/k);u[b?"translateX":"x"]=Math.round(d);"bottom"===A?e=1:"middle"===A&&(e=2);e&&(n+=(f.height-(a.height||0))/
-e);u[b?"translateY":"y"]=Math.round(n);this[this.placed?"animate":"attr"](u);this.placed=!0;this.alignAttr=u;return this},getBBox:function(a,b){var f,l=this.renderer,u=this.element,A=this.styles,d=this.textStr,k,e=l.cache,n=l.cacheKeys,N=u.namespaceURI===this.SVG_NS;b=p(b,this.rotation,0);var v=l.styledMode?u&&M.prototype.getStyle.call(u,"font-size"):A&&A.fontSize;if(G(d)){var B=d.toString();-1===B.indexOf("<")&&(B=B.replace(/[0-9]/g,"0"));B+=["",b,v,this.textWidth,A&&A.textOverflow].join()}B&&!a&&
-(f=e[B]);if(!f){if(N||l.forExport){try{(k=this.fakeTS&&function(a){[].forEach.call(u.querySelectorAll(".highcharts-text-outline"),function(b){b.style.display=a})})&&k("none"),f=u.getBBox?w({},u.getBBox()):{width:u.offsetWidth,height:u.offsetHeight},k&&k("")}catch(Y){""}if(!f||0>f.width)f={width:0,height:0}}else f=this.htmlGetBBox();l.isSVG&&(a=f.width,l=f.height,N&&(f.height=l={"11px,17":14,"13px,20":16}[A&&A.fontSize+","+Math.round(l)]||l),b&&(A=b*z,f.width=Math.abs(l*Math.sin(A))+Math.abs(a*Math.cos(A)),
-f.height=Math.abs(l*Math.cos(A))+Math.abs(a*Math.sin(A))));if(B&&0<f.height){for(;250<n.length;)delete e[n.shift()];e[B]||n.push(B);e[B]=f}}return f},show:function(a){return this.attr({visibility:a?"inherit":"visible"})},hide:function(a){a?this.attr({y:-9999}):this.attr({visibility:"hidden"});return this},fadeOut:function(a){var b=this;b.animate({opacity:0},{duration:a||150,complete:function(){b.attr({y:-9999})}})},add:function(a){var b=this.renderer,f=this.element;a&&(this.parentGroup=a);this.parentInverted=
-a&&a.inverted;void 0!==this.textStr&&b.buildText(this);this.added=!0;if(!a||a.handleZ||this.zIndex)var l=this.zIndexSetter();l||(a?a.element:b.box).appendChild(f);if(this.onAdd)this.onAdd();return this},safeRemoveChild:function(a){var b=a.parentNode;b&&b.removeChild(a)},destroy:function(){var a=this,b=a.element||{},f=a.renderer,l=f.isSVG&&"SPAN"===b.nodeName&&a.parentGroup,u=b.ownerSVGElement,A=a.clipPath;b.onclick=b.onmouseout=b.onmouseover=b.onmousemove=b.point=null;J(a);A&&u&&([].forEach.call(u.querySelectorAll("[clip-path],[CLIP-PATH]"),
-function(a){-1<a.getAttribute("clip-path").indexOf(A.element.id)&&a.removeAttribute("clip-path")}),a.clipPath=A.destroy());if(a.stops){for(u=0;u<a.stops.length;u++)a.stops[u]=a.stops[u].destroy();a.stops=null}a.safeRemoveChild(b);for(f.styledMode||a.destroyShadows();l&&l.div&&0===l.div.childNodes.length;)b=l.parentGroup,a.safeRemoveChild(l.div),delete l.div,l=b;a.alignTo&&y(f.alignedObjects,a);m(a,function(b,f){a[f]&&a[f].parentGroup===a&&a[f].destroy&&a[f].destroy();delete a[f]})},shadow:function(a,
-b,f){var l=[],u,A=this.element;if(!a)this.destroyShadows();else if(!this.shadows){var d=p(a.width,3);var k=(a.opacity||.15)/d;var e=this.parentInverted?"(-1,-1)":"("+p(a.offsetX,1)+", "+p(a.offsetY,1)+")";for(u=1;u<=d;u++){var n=A.cloneNode(0);var v=2*d+1-2*u;I(n,{stroke:a.color||"#000000","stroke-opacity":k*u,"stroke-width":v,transform:"translate"+e,fill:"none"});n.setAttribute("class",(n.getAttribute("class")||"")+" highcharts-shadow");f&&(I(n,"height",Math.max(I(n,"height")-v,0)),n.cutHeight=v);
-b?b.element.appendChild(n):A.parentNode&&A.parentNode.insertBefore(n,A);l.push(n)}this.shadows=l}return this},destroyShadows:function(){(this.shadows||[]).forEach(function(a){this.safeRemoveChild(a)},this);this.shadows=void 0},xGetter:function(a){"circle"===this.element.nodeName&&("x"===a?a="cx":"y"===a&&(a="cy"));return this._defaultGetter(a)},_defaultGetter:function(a){a=p(this[a+"Value"],this[a],this.element?this.element.getAttribute(a):null,0);/^[\-0-9\.]+$/.test(a)&&(a=parseFloat(a));return a},
-dSetter:function(a,b,f){a&&a.join&&(a=a.join(" "));/(NaN| {2}|^$)/.test(a)&&(a="M 0 0");this[b]!==a&&(f.setAttribute(b,a),this[b]=a)},dashstyleSetter:function(a){var b,f=this["stroke-width"];"inherit"===f&&(f=1);if(a=a&&a.toLowerCase()){a=a.replace("shortdashdotdot","3,1,1,1,1,1,").replace("shortdashdot","3,1,1,1").replace("shortdot","1,1,").replace("shortdash","3,1,").replace("longdash","8,3,").replace(/dot/g,"1,3,").replace("dash","4,3,").replace(/,$/,"").split(",");for(b=a.length;b--;)a[b]=q(a[b])*
-f;a=a.join(",").replace(/NaN/g,"none");this.element.setAttribute("stroke-dasharray",a)}},alignSetter:function(a){var b={left:"start",center:"middle",right:"end"};b[a]&&(this.alignValue=a,this.element.setAttribute("text-anchor",b[a]))},opacitySetter:function(a,b,f){this[b]=a;f.setAttribute(b,a)},titleSetter:function(a){var b=this.element.getElementsByTagName("title")[0];b||(b=r.createElementNS(this.SVG_NS,"title"),this.element.appendChild(b));b.firstChild&&b.removeChild(b.firstChild);b.appendChild(r.createTextNode(String(p(a,
-"")).replace(/<[^>]*>/g,"").replace(/&lt;/g,"<").replace(/&gt;/g,">")))},textSetter:function(a){a!==this.textStr&&(delete this.bBox,delete this.textPxLength,this.textStr=a,this.added&&this.renderer.buildText(this))},setTextPath:function(a,b){var f=this.element,l={textAnchor:"text-anchor"},u=!1,d=this.textPathWrapper,k=!d;b=B(!0,{enabled:!0,attributes:{dy:-5,startOffset:"50%",textAnchor:"middle"}},b);var e=b.attributes;if(a&&b&&b.enabled){this.options&&this.options.padding&&(e.dx=-this.options.padding);
-d||(this.textPathWrapper=d=this.renderer.createElement("textPath"),u=!0);var n=d.element;(b=a.element.getAttribute("id"))||a.element.setAttribute("id",b=c.uniqueKey());if(k)for(a=f.getElementsByTagName("tspan");a.length;)a[0].setAttribute("y",0),n.appendChild(a[0]);u&&d.add({element:this.text?this.text.element:f});n.setAttributeNS("http://www.w3.org/1999/xlink","href",this.renderer.url+"#"+b);G(e.dy)&&(n.parentNode.setAttribute("dy",e.dy),delete e.dy);G(e.dx)&&(n.parentNode.setAttribute("dx",e.dx),
-delete e.dx);m(e,function(a,b){n.setAttribute(l[b]||b,a)});f.removeAttribute("transform");this.removeTextOutline.call(d,[].slice.call(f.getElementsByTagName("tspan")));this.text&&!this.renderer.styledMode&&this.attr({fill:"none","stroke-width":0});this.applyTextOutline=this.updateTransform=A}else d&&(delete this.updateTransform,delete this.applyTextOutline,this.destroyTextPath(f,a));return this},destroyTextPath:function(a,b){var f;b.element.setAttribute("id","");for(f=this.textPathWrapper.element.childNodes;f.length;)a.firstChild.appendChild(f[0]);
-a.firstChild.removeChild(this.textPathWrapper.element);delete b.textPathWrapper},fillSetter:function(a,b,f){"string"===typeof a?f.setAttribute(b,a):a&&this.complexColor(a,b,f)},visibilitySetter:function(a,b,f){"inherit"===a?f.removeAttribute(b):this[b]!==a&&f.setAttribute(b,a);this[b]=a},zIndexSetter:function(a,b){var f=this.renderer,l=this.parentGroup,u=(l||f).element||f.box,A=this.element,d=!1;f=u===f.box;var k=this.added;var e;G(a)?(A.setAttribute("data-z-index",a),a=+a,this[b]===a&&(k=!1)):G(this[b])&&
-A.removeAttribute("data-z-index");this[b]=a;if(k){(a=this.zIndex)&&l&&(l.handleZ=!0);b=u.childNodes;for(e=b.length-1;0<=e&&!d;e--){l=b[e];k=l.getAttribute("data-z-index");var n=!G(k);if(l!==A)if(0>a&&n&&!f&&!e)u.insertBefore(A,b[e]),d=!0;else if(q(k)<=a||n&&(!G(a)||0<=a))u.insertBefore(A,b[e+1]||null),d=!0}d||(u.insertBefore(A,b[f?3:0]||null),d=!0)}return d},_defaultSetter:function(a,b,f){f.setAttribute(b,a)}});M.prototype.yGetter=M.prototype.xGetter;M.prototype.translateXSetter=M.prototype.translateYSetter=
-M.prototype.rotationSetter=M.prototype.verticalAlignSetter=M.prototype.rotationOriginXSetter=M.prototype.rotationOriginYSetter=M.prototype.scaleXSetter=M.prototype.scaleYSetter=M.prototype.matrixSetter=function(a,b){this[b]=a;this.doTransform=!0};M.prototype["stroke-widthSetter"]=M.prototype.strokeSetter=function(a,b,f){this[b]=a;this.stroke&&this["stroke-width"]?(M.prototype.fillSetter.call(this,this.stroke,"stroke",f),f.setAttribute("stroke-width",this["stroke-width"]),this.hasStroke=!0):"stroke-width"===
-b&&0===a&&this.hasStroke?(f.removeAttribute("stroke"),this.hasStroke=!1):this.renderer.styledMode&&this["stroke-width"]&&(f.setAttribute("stroke-width",this["stroke-width"]),this.hasStroke=!0)};g=c.SVGRenderer=function(){this.init.apply(this,arguments)};w(g.prototype,{Element:M,SVG_NS:U,init:function(b,l,u,A,d,e,n){var B=this.createElement("svg").attr({version:"1.1","class":"highcharts-root"});n||B.css(this.getStyle(A));A=B.element;b.appendChild(A);I(b,"dir","ltr");-1===b.innerHTML.indexOf("xmlns")&&
-I(A,"xmlns",this.SVG_NS);this.isSVG=!0;this.box=A;this.boxWrapper=B;this.alignedObjects=[];this.url=(f||v)&&r.getElementsByTagName("base").length?P.location.href.split("#")[0].replace(/<[^>]*>/g,"").replace(/([\('\)])/g,"\\$1").replace(/ /g,"%20"):"";this.createElement("desc").add().element.appendChild(r.createTextNode("Created with Highcharts 7.2.1"));this.defs=this.createElement("defs").add();this.allowHTML=e;this.forExport=d;this.styledMode=n;this.gradients={};this.cache={};this.cacheKeys=[];this.imgCount=
-0;this.setSize(l,u,!1);var h;f&&b.getBoundingClientRect&&(l=function(){k(b,{left:0,top:0});h=b.getBoundingClientRect();k(b,{left:Math.ceil(h.left)-h.left+"px",top:Math.ceil(h.top)-h.top+"px"})},l(),this.unSubPixelFix=a(P,"resize",l))},definition:function(a){function b(a,l){var u;h(a).forEach(function(a){var A=f.createElement(a.tagName),d={};m(a,function(a,b){"tagName"!==b&&"children"!==b&&"textContent"!==b&&(d[b]=a)});A.attr(d);A.add(l||f.defs);a.textContent&&A.element.appendChild(r.createTextNode(a.textContent));
-b(a.children||[],A);u=A});return u}var f=this;return b(a)},getStyle:function(a){return this.style=w({fontFamily:'"Lucida Grande", "Lucida Sans Unicode", Arial, Helvetica, sans-serif',fontSize:"12px"},a)},setStyle:function(a){this.boxWrapper.css(this.getStyle(a))},isHidden:function(){return!this.boxWrapper.getBBox().width},destroy:function(){var a=this.defs;this.box=null;this.boxWrapper=this.boxWrapper.destroy();H(this.gradients||{});this.gradients=null;a&&(this.defs=a.destroy());this.unSubPixelFix&&
-this.unSubPixelFix();return this.alignedObjects=null},createElement:function(a){var b=new this.Element;b.init(this,a);return b},draw:A,getRadialAttr:function(a,b){return{cx:a[0]-a[2]/2+b.cx*a[2],cy:a[1]-a[2]/2+b.cy*a[2],r:b.r*a[2]}},truncate:function(a,b,f,l,u,A,d){var e=this,k=a.rotation,n,v=l?1:0,B=(f||l).length,h=B,c=[],J=function(a){b.firstChild&&b.removeChild(b.firstChild);a&&b.appendChild(r.createTextNode(a))},C=function(A,k){k=k||A;if(void 0===c[k])if(b.getSubStringLength)try{c[k]=u+b.getSubStringLength(0,
-l?k+1:k)}catch(fa){""}else e.getSpanWidth&&(J(d(f||l,A)),c[k]=u+e.getSpanWidth(a,b));return c[k]},m;a.rotation=0;var L=C(b.textContent.length);if(m=u+L>A){for(;v<=B;)h=Math.ceil((v+B)/2),l&&(n=d(l,h)),L=C(h,n&&n.length-1),v===B?v=B+1:L>A?B=h-1:v=h;0===B?J(""):f&&B===f.length-1||J(n||d(f||l,h))}l&&l.splice(0,h);a.actualWidth=L;a.rotation=k;return m},escapes:{"&":"&amp;","<":"&lt;",">":"&gt;","'":"&#39;",'"':"&quot;"},buildText:function(a){var b=a.element,f=this,l=f.forExport,u=p(a.textStr,"").toString(),
-A=-1!==u.indexOf("<"),d=b.childNodes,e,n=I(b,"x"),v=a.styles,B=a.textWidth,h=v&&v.lineHeight,c=v&&v.textOutline,J=v&&"ellipsis"===v.textOverflow,C=v&&"nowrap"===v.whiteSpace,N=v&&v.fontSize,z,g=d.length;v=B&&!a.added&&this.box;var t=function(a){var l;f.styledMode||(l=/(px|em)$/.test(a&&a.style.fontSize)?a.style.fontSize:N||f.style.fontSize||12);return h?q(h):f.fontMetrics(l,a.getAttribute("style")?a:b).h},Q=function(a,b){m(f.escapes,function(f,l){b&&-1!==b.indexOf(f)||(a=a.toString().replace(new RegExp(f,
-"g"),l))});return a},P=function(a,b){var f=a.indexOf("<");a=a.substring(f,a.indexOf(">")-f);f=a.indexOf(b+"=");if(-1!==f&&(f=f+b.length+1,b=a.charAt(f),'"'===b||"'"===b))return a=a.substring(f+1),a.substring(0,a.indexOf(b))},x=/<br.*?>/g;var M=[u,J,C,h,c,N,B].join();if(M!==a.textCache){for(a.textCache=M;g--;)b.removeChild(d[g]);A||c||J||B||-1!==u.indexOf(" ")&&(!C||x.test(u))?(v&&v.appendChild(b),A?(u=f.styledMode?u.replace(/<(b|strong)>/g,'<span class="highcharts-strong">').replace(/<(i|em)>/g,'<span class="highcharts-emphasized">'):
-u.replace(/<(b|strong)>/g,'<span style="font-weight:bold">').replace(/<(i|em)>/g,'<span style="font-style:italic">'),u=u.replace(/<a/g,"<span").replace(/<\/(b|strong|i|em|a)>/g,"</span>").split(x)):u=[u],u=u.filter(function(a){return""!==a}),u.forEach(function(u,A){var d=0,v=0;u=u.replace(/^\s+|\s+$/g,"").replace(/<span/g,"|||<span").replace(/<\/span>/g,"</span>|||");var h=u.split("|||");h.forEach(function(u){if(""!==u||1===h.length){var c={},m=r.createElementNS(f.SVG_NS,"tspan"),p,O;(p=P(u,"class"))&&
-I(m,"class",p);if(p=P(u,"style"))p=p.replace(/(;| |^)color([ :])/,"$1fill$2"),I(m,"style",p);(O=P(u,"href"))&&!l&&(I(m,"onclick",'location.href="'+O+'"'),I(m,"class","highcharts-anchor"),f.styledMode||k(m,{cursor:"pointer"}));u=Q(u.replace(/<[a-zA-Z\/](.|\n)*?>/g,"")||" ");if(" "!==u){m.appendChild(r.createTextNode(u));d?c.dx=0:A&&null!==n&&(c.x=n);I(m,c);b.appendChild(m);!d&&z&&(!L&&l&&k(m,{display:"block"}),I(m,"dy",t(m)));if(B){var q=u.replace(/([^\^])-/g,"$1- ").split(" ");c=!C&&(1<h.length||
-A||1<q.length);O=0;var g=t(m);if(J)e=f.truncate(a,m,u,void 0,0,Math.max(0,B-parseInt(N||12,10)),function(a,b){return a.substring(0,b)+"\u2026"});else if(c)for(;q.length;)q.length&&!C&&0<O&&(m=r.createElementNS(U,"tspan"),I(m,{dy:g,x:n}),p&&I(m,"style",p),m.appendChild(r.createTextNode(q.join(" ").replace(/- /g,"-"))),b.appendChild(m)),f.truncate(a,m,null,q,0===O?v:0,B,function(a,b){return q.slice(0,b).join(" ").replace(/- /g,"-")}),v=a.actualWidth,O++}d++}}});z=z||b.childNodes.length}),J&&e&&a.attr("title",
-Q(a.textStr,["&lt;","&gt;"])),v&&v.removeChild(b),c&&a.applyTextOutline&&a.applyTextOutline(c)):b.appendChild(r.createTextNode(Q(u)))}},getContrast:function(a){a=e(a).rgba;a[0]*=1;a[1]*=1.2;a[2]*=.5;return 459<a[0]+a[1]+a[2]?"#000000":"#FFFFFF"},button:function(b,f,u,A,d,k,e,n,v,h){var c=this.label(b,f,u,v,null,null,h,null,"button"),r=0,J=this.styledMode;c.attr(B({padding:8,r:2},d));if(!J){d=B({fill:"#f7f7f7",stroke:"#cccccc","stroke-width":1,style:{color:"#333333",cursor:"pointer",fontWeight:"normal"}},
-d);var m=d.style;delete d.style;k=B(d,{fill:"#e6e6e6"},k);var C=k.style;delete k.style;e=B(d,{fill:"#e6ebf5",style:{color:"#000000",fontWeight:"bold"}},e);var L=e.style;delete e.style;n=B(d,{style:{color:"#cccccc"}},n);var N=n.style;delete n.style}a(c.element,l?"mouseover":"mouseenter",function(){3!==r&&c.setState(1)});a(c.element,l?"mouseout":"mouseleave",function(){3!==r&&c.setState(r)});c.setState=function(a){1!==a&&(c.state=r=a);c.removeClass(/highcharts-button-(normal|hover|pressed|disabled)/).addClass("highcharts-button-"+
-["normal","hover","pressed","disabled"][a||0]);J||c.attr([d,k,e,n][a||0]).css([m,C,L,N][a||0])};J||c.attr(d).css(w({cursor:"default"},m));return c.on("click",function(a){3!==r&&A.call(c,a)})},crispLine:function(a,b){a[1]===a[4]&&(a[1]=a[4]=Math.round(a[1])-b%2/2);a[2]===a[5]&&(a[2]=a[5]=Math.round(a[2])+b%2/2);return a},path:function(a){var b=this.styledMode?{}:{fill:"none"};x(a)?b.d=a:F(a)&&w(b,a);return this.createElement("path").attr(b)},circle:function(a,b,f){a=F(a)?a:void 0===a?{}:{x:a,y:b,r:f};
-b=this.createElement("circle");b.xSetter=b.ySetter=function(a,b,f){f.setAttribute("c"+b,a)};return b.attr(a)},arc:function(a,b,f,l,u,A){F(a)?(l=a,b=l.y,f=l.r,a=l.x):l={innerR:l,start:u,end:A};a=this.symbol("arc",a,b,f,f,l);a.r=f;return a},rect:function(a,b,f,l,u,A){u=F(a)?a.r:u;var d=this.createElement("rect");a=F(a)?a:void 0===a?{}:{x:a,y:b,width:Math.max(f,0),height:Math.max(l,0)};this.styledMode||(void 0!==A&&(a.strokeWidth=A,a=d.crisp(a)),a.fill="none");u&&(a.r=u);d.rSetter=function(a,b,f){d.r=
-a;I(f,{rx:a,ry:a})};d.rGetter=function(){return d.r};return d.attr(a)},setSize:function(a,b,f){var l=this.alignedObjects,u=l.length;this.width=a;this.height=b;for(this.boxWrapper.animate({width:a,height:b},{step:function(){this.attr({viewBox:"0 0 "+this.attr("width")+" "+this.attr("height")})},duration:p(f,!0)?void 0:0});u--;)l[u].align()},g:function(a){var b=this.createElement("g");return a?b.attr({"class":"highcharts-"+a}):b},image:function(b,f,l,u,A,d){var k={preserveAspectRatio:"none"},e=function(a,
-b){a.setAttributeNS?a.setAttributeNS("http://www.w3.org/1999/xlink","href",b):a.setAttribute("hc-svg-href",b)},n=function(a){e(v.element,b);d.call(v,a)};1<arguments.length&&w(k,{x:f,y:l,width:u,height:A});var v=this.createElement("image").attr(k);d?(e(v.element,"data:image/gif;base64,R0lGODlhAQABAAAAACH5BAEKAAEALAAAAAABAAEAAAICTAEAOw=="),k=new P.Image,a(k,"load",n),k.src=b,k.complete&&n({})):e(v.element,b);return v},symbol:function(a,b,f,l,u,A){var e=this,n=/^url\((.*?)\)$/,v=n.test(a),B=!v&&(this.symbols[a]?
-a:"circle"),h=B&&this.symbols[B],c=G(b)&&h&&h.call(this.symbols,Math.round(b),Math.round(f),l,u,A);if(h){var J=this.path(c);e.styledMode||J.attr("fill","none");w(J,{symbolName:B,x:b,y:f,width:l,height:u});A&&w(J,A)}else if(v){var m=a.match(n)[1];J=this.image(m);J.imgwidth=p(Q[m]&&Q[m].width,A&&A.width);J.imgheight=p(Q[m]&&Q[m].height,A&&A.height);var L=function(){J.attr({width:J.width,height:J.height})};["width","height"].forEach(function(a){J[a+"Setter"]=function(a,b){var f={},l=this["img"+b],u=
-"width"===b?"translateX":"translateY";this[b]=a;G(l)&&(A&&"within"===A.backgroundSize&&this.width&&this.height&&(l=Math.round(l*Math.min(this.width/this.imgwidth,this.height/this.imgheight))),this.element&&this.element.setAttribute(b,l),this.alignByTranslate||(f[u]=((this[b]||0)-l)/2,this.attr(f)))}});G(b)&&J.attr({x:b,y:f});J.isImg=!0;G(J.imgwidth)&&G(J.imgheight)?L():(J.attr({width:0,height:0}),C("img",{onload:function(){var a=d[e.chartIndex];0===this.width&&(k(this,{position:"absolute",top:"-999em"}),
-r.body.appendChild(this));Q[m]={width:this.width,height:this.height};J.imgwidth=this.width;J.imgheight=this.height;J.element&&L();this.parentNode&&this.parentNode.removeChild(this);e.imgCount--;if(!e.imgCount&&a&&a.onload)a.onload()},src:m}),this.imgCount++)}return J},symbols:{circle:function(a,b,f,l){return this.arc(a+f/2,b+l/2,f/2,l/2,{start:.5*Math.PI,end:2.5*Math.PI,open:!1})},square:function(a,b,f,l){return["M",a,b,"L",a+f,b,a+f,b+l,a,b+l,"Z"]},triangle:function(a,b,f,l){return["M",a+f/2,b,"L",
-a+f,b+l,a,b+l,"Z"]},"triangle-down":function(a,b,f,l){return["M",a,b,"L",a+f,b,a+f/2,b+l,"Z"]},diamond:function(a,b,f,l){return["M",a+f/2,b,"L",a+f,b+l/2,a+f/2,b+l,a,b+l/2,"Z"]},arc:function(a,b,f,l,u){var A=u.start,d=u.r||f,k=u.r||l||f,e=u.end-.001;f=u.innerR;l=p(u.open,.001>Math.abs(u.end-u.start-2*Math.PI));var n=Math.cos(A),v=Math.sin(A),B=Math.cos(e);e=Math.sin(e);A=.001>u.end-A-Math.PI?0:1;u=["M",a+d*n,b+k*v,"A",d,k,0,A,p(u.clockwise,1),a+d*B,b+k*e];G(f)&&u.push(l?"M":"L",a+f*B,b+f*e,"A",f,
-f,0,A,0,a+f*n,b+f*v);u.push(l?"":"Z");return u},callout:function(a,b,f,l,u){var A=Math.min(u&&u.r||0,f,l),d=A+6,e=u&&u.anchorX;u=u&&u.anchorY;var k=["M",a+A,b,"L",a+f-A,b,"C",a+f,b,a+f,b,a+f,b+A,"L",a+f,b+l-A,"C",a+f,b+l,a+f,b+l,a+f-A,b+l,"L",a+A,b+l,"C",a,b+l,a,b+l,a,b+l-A,"L",a,b+A,"C",a,b,a,b,a+A,b];e&&e>f?u>b+d&&u<b+l-d?k.splice(13,3,"L",a+f,u-6,a+f+6,u,a+f,u+6,a+f,b+l-A):k.splice(13,3,"L",a+f,l/2,e,u,a+f,l/2,a+f,b+l-A):e&&0>e?u>b+d&&u<b+l-d?k.splice(33,3,"L",a,u+6,a-6,u,a,u-6,a,b+A):k.splice(33,
-3,"L",a,l/2,e,u,a,l/2,a,b+A):u&&u>l&&e>a+d&&e<a+f-d?k.splice(23,3,"L",e+6,b+l,e,b+l+6,e-6,b+l,a+A,b+l):u&&0>u&&e>a+d&&e<a+f-d&&k.splice(3,3,"L",e-6,b,e,b-6,e+6,b,f-A,b);return k}},clipRect:function(a,b,f,l){var u=c.uniqueKey()+"-",A=this.createElement("clipPath").attr({id:u}).add(this.defs);a=this.rect(a,b,f,l,0).add(A);a.id=u;a.clipPath=A;a.count=0;return a},text:function(a,b,f,l){var u={};if(l&&(this.allowHTML||!this.forExport))return this.html(a,b,f);u.x=Math.round(b||0);f&&(u.y=Math.round(f));
-G(a)&&(u.text=a);a=this.createElement("text").attr(u);l||(a.xSetter=function(a,b,f){var l=f.getElementsByTagName("tspan"),u=f.getAttribute(b),A;for(A=0;A<l.length;A++){var d=l[A];d.getAttribute(b)===u&&d.setAttribute(b,a)}f.setAttribute(b,a)});return a},fontMetrics:function(a,b){a=!this.styledMode&&/px/.test(a)||!P.getComputedStyle?a||b&&b.style&&b.style.fontSize||this.style&&this.style.fontSize:b&&M.prototype.getStyle.call(b,"font-size");a=/px/.test(a)?q(a):12;b=24>a?a+3:Math.round(1.2*a);return{h:b,
-b:Math.round(.8*b),f:a}},rotCorr:function(a,b,f){var l=a;b&&f&&(l=Math.max(l*Math.cos(b*z),4));return{x:-a/3*Math.sin(b*z),y:l}},label:function(a,b,f,l,A,d,e,k,n){var v=this,h=v.styledMode,c=v.g("button"!==n&&"label"),J=c.text=v.text("",0,0,e).attr({zIndex:1}),r,m,C=0,L=3,p=0,z,U,q,g,N,O={},t,Q,P=/^url\((.*?)\)$/.test(l),x=h||P,da=function(){return h?r.strokeWidth()%2/2:(t?parseInt(t,10):0)%2/2};n&&c.addClass("highcharts-"+n);var y=function(){var a=J.element.style,b={};m=(void 0===z||void 0===U||
-N)&&G(J.textStr)&&J.getBBox();c.width=(z||m.width||0)+2*L+p;c.height=(U||m.height||0)+2*L;Q=L+Math.min(v.fontMetrics(a&&a.fontSize,J).b,m?m.height:Infinity);x&&(r||(c.box=r=v.symbols[l]||P?v.symbol(l):v.rect(),r.addClass(("button"===n?"":"highcharts-label-box")+(n?" highcharts-"+n+"-box":"")),r.add(c),a=da(),b.x=a,b.y=(k?-Q:0)+a),b.width=Math.round(c.width),b.height=Math.round(c.height),r.attr(w(b,O)),O={})};var S=function(){var a=p+L;var b=k?0:Q;G(z)&&m&&("center"===N||"right"===N)&&(a+={center:.5,
-right:1}[N]*(z-m.width));if(a!==J.x||b!==J.y)J.attr("x",a),J.hasBoxWidthChanged&&(m=J.getBBox(!0),y()),void 0!==b&&J.attr("y",b);J.x=a;J.y=b};var F=function(a,b){r?r.attr(a,b):O[a]=b};c.onAdd=function(){J.add(c);c.attr({text:a||0===a?a:"",x:b,y:f});r&&G(A)&&c.attr({anchorX:A,anchorY:d})};c.widthSetter=function(a){z=E(a)?a:null};c.heightSetter=function(a){U=a};c["text-alignSetter"]=function(a){N=a};c.paddingSetter=function(a){G(a)&&a!==L&&(L=c.padding=a,S())};c.paddingLeftSetter=function(a){G(a)&&
-a!==p&&(p=a,S())};c.alignSetter=function(a){a={left:0,center:.5,right:1}[a];a!==C&&(C=a,m&&c.attr({x:q}))};c.textSetter=function(a){void 0!==a&&J.attr({text:a});y();S()};c["stroke-widthSetter"]=function(a,b){a&&(x=!0);t=this["stroke-width"]=a;F(b,a)};h?c.rSetter=function(a,b){F(b,a)}:c.strokeSetter=c.fillSetter=c.rSetter=function(a,b){"r"!==b&&("fill"===b&&a&&(x=!0),c[b]=a);F(b,a)};c.anchorXSetter=function(a,b){A=c.anchorX=a;F(b,Math.round(a)-da()-q)};c.anchorYSetter=function(a,b){d=c.anchorY=a;F(b,
-a-g)};c.xSetter=function(a){c.x=a;C&&(a-=C*((z||m.width)+2*L),c["forceAnimate:x"]=!0);q=Math.round(a);c.attr("translateX",q)};c.ySetter=function(a){g=c.y=Math.round(a);c.attr("translateY",g)};var H=c.css;e={css:function(a){if(a){var b={};a=B(a);c.textProps.forEach(function(f){void 0!==a[f]&&(b[f]=a[f],delete a[f])});J.css(b);"width"in b&&y();"fontSize"in b&&(y(),S())}return H.call(c,a)},getBBox:function(){return{width:m.width+2*L,height:m.height+2*L,x:m.x-L,y:m.y-L}},destroy:function(){u(c.element,
-"mouseenter");u(c.element,"mouseleave");J&&(J=J.destroy());r&&(r=r.destroy());M.prototype.destroy.call(c);c=v=y=S=F=null}};h||(e.shadow=function(a){a&&(y(),r&&r.shadow(a));return c});return w(c,e)}});c.Renderer=g});K(D,"parts/Html.js",[D["parts/Globals.js"],D["parts/Utilities.js"]],function(c,g){var I=g.attr,G=g.defined,H=g.extend,y=g.pick,w=g.pInt,x=c.createElement,E=c.css,F=c.isFirefox,t=c.isMS,m=c.isWebKit,p=c.SVGElement;g=c.SVGRenderer;var q=c.win;H(p.prototype,{htmlCss:function(c){var a="SPAN"===
-this.element.tagName&&c&&"width"in c,b=y(a&&c.width,void 0);if(a){delete c.width;this.textWidth=b;var d=!0}c&&"ellipsis"===c.textOverflow&&(c.whiteSpace="nowrap",c.overflow="hidden");this.styles=H(this.styles,c);E(this.element,c);d&&this.htmlUpdateTransform();return this},htmlGetBBox:function(){var c=this.element;return{x:c.offsetLeft,y:c.offsetTop,width:c.offsetWidth,height:c.offsetHeight}},htmlUpdateTransform:function(){if(this.added){var c=this.renderer,a=this.element,b=this.translateX||0,d=this.translateY||
-0,e=this.x||0,k=this.y||0,m=this.textAlign||"left",p={left:0,center:.5,right:1}[m],r=this.styles,n=r&&r.whiteSpace;E(a,{marginLeft:b,marginTop:d});!c.styledMode&&this.shadows&&this.shadows.forEach(function(a){E(a,{marginLeft:b+1,marginTop:d+1})});this.inverted&&[].forEach.call(a.childNodes,function(b){c.invertChild(b,a)});if("SPAN"===a.tagName){r=this.rotation;var f=this.textWidth&&w(this.textWidth),l=[r,m,a.innerHTML,this.textWidth,this.textAlign].join(),v;(v=f!==this.oldTextWidth)&&!(v=f>this.oldTextWidth)&&
-((v=this.textPxLength)||(E(a,{width:"",whiteSpace:n||"nowrap"}),v=a.offsetWidth),v=v>f);v&&(/[ \-]/.test(a.textContent||a.innerText)||"ellipsis"===a.style.textOverflow)?(E(a,{width:f+"px",display:"block",whiteSpace:n||"normal"}),this.oldTextWidth=f,this.hasBoxWidthChanged=!0):this.hasBoxWidthChanged=!1;l!==this.cTT&&(n=c.fontMetrics(a.style.fontSize,a).b,!G(r)||r===(this.oldRotation||0)&&m===this.oldAlign||this.setSpanRotation(r,p,n),this.getSpanCorrection(!G(r)&&this.textPxLength||a.offsetWidth,
-n,p,r,m));E(a,{left:e+(this.xCorr||0)+"px",top:k+(this.yCorr||0)+"px"});this.cTT=l;this.oldRotation=r;this.oldAlign=m}}else this.alignOnAdd=!0},setSpanRotation:function(c,a,b){var d={},e=this.renderer.getTransformKey();d[e]=d.transform="rotate("+c+"deg)";d[e+(F?"Origin":"-origin")]=d.transformOrigin=100*a+"% "+b+"px";E(this.element,d)},getSpanCorrection:function(c,a,b){this.xCorr=-c*b;this.yCorr=-a}});H(g.prototype,{getTransformKey:function(){return t&&!/Edge/.test(q.navigator.userAgent)?"-ms-transform":
-m?"-webkit-transform":F?"MozTransform":q.opera?"-o-transform":""},html:function(c,a,b){var d=this.createElement("span"),e=d.element,k=d.renderer,h=k.isSVG,m=function(a,b){["opacity","visibility"].forEach(function(f){a[f+"Setter"]=function(l,d,e){var A=a.div?a.div.style:b;p.prototype[f+"Setter"].call(this,l,d,e);A&&(A[d]=l)}});a.addedSetters=!0};d.textSetter=function(a){a!==e.innerHTML&&(delete this.bBox,delete this.oldTextWidth);this.textStr=a;e.innerHTML=y(a,"");d.doTransform=!0};h&&m(d,d.element.style);
-d.xSetter=d.ySetter=d.alignSetter=d.rotationSetter=function(a,b){"align"===b&&(b="textAlign");d[b]=a;d.doTransform=!0};d.afterSetters=function(){this.doTransform&&(this.htmlUpdateTransform(),this.doTransform=!1)};d.attr({text:c,x:Math.round(a),y:Math.round(b)}).css({position:"absolute"});k.styledMode||d.css({fontFamily:this.style.fontFamily,fontSize:this.style.fontSize});e.style.whiteSpace="nowrap";d.css=d.htmlCss;h&&(d.add=function(a){var b=k.box.parentNode,f=[];if(this.parentGroup=a){var l=a.div;
-if(!l){for(;a;)f.push(a),a=a.parentGroup;f.reverse().forEach(function(a){function e(b,f){a[f]=b;"translateX"===f?u.left=b+"px":u.top=b+"px";a.doTransform=!0}var A=I(a.element,"class");l=a.div=a.div||x("div",A?{className:A}:void 0,{position:"absolute",left:(a.translateX||0)+"px",top:(a.translateY||0)+"px",display:a.display,opacity:a.opacity,pointerEvents:a.styles&&a.styles.pointerEvents},l||b);var u=l.style;H(a,{classSetter:function(a){return function(b){this.element.setAttribute("class",b);a.className=
-b}}(l),on:function(){f[0].div&&d.on.apply({element:f[0].div},arguments);return a},translateXSetter:e,translateYSetter:e});a.addedSetters||m(a)})}}else l=b;l.appendChild(e);d.added=!0;d.alignOnAdd&&d.htmlUpdateTransform();return d});return d}})});K(D,"parts/Time.js",[D["parts/Globals.js"],D["parts/Utilities.js"]],function(c,g){var I=g.defined,G=g.extend,H=g.isObject,y=g.objectEach,w=g.pick,x=g.splat,E=c.merge,F=c.timeUnits,t=c.win;c.Time=function(c){this.update(c,!1)};c.Time.prototype={defaultOptions:{Date:void 0,
-getTimezoneOffset:void 0,timezone:void 0,timezoneOffset:0,useUTC:!0},update:function(c){var m=w(c&&c.useUTC,!0),q=this;this.options=c=E(!0,this.options||{},c);this.Date=c.Date||t.Date||Date;this.timezoneOffset=(this.useUTC=m)&&c.timezoneOffset;this.getTimezoneOffset=this.timezoneOffsetFunction();(this.variableTimezone=!(m&&!c.getTimezoneOffset&&!c.timezone))||this.timezoneOffset?(this.get=function(c,a){var b=a.getTime(),d=b-q.getTimezoneOffset(a);a.setTime(d);c=a["getUTC"+c]();a.setTime(b);return c},
-this.set=function(c,a,b){if("Milliseconds"===c||"Seconds"===c||"Minutes"===c&&0===a.getTimezoneOffset()%60)a["set"+c](b);else{var d=q.getTimezoneOffset(a);d=a.getTime()-d;a.setTime(d);a["setUTC"+c](b);c=q.getTimezoneOffset(a);d=a.getTime()+c;a.setTime(d)}}):m?(this.get=function(c,a){return a["getUTC"+c]()},this.set=function(c,a,b){return a["setUTC"+c](b)}):(this.get=function(c,a){return a["get"+c]()},this.set=function(c,a,b){return a["set"+c](b)})},makeTime:function(m,p,q,h,a,b){if(this.useUTC){var d=
-this.Date.UTC.apply(0,arguments);var e=this.getTimezoneOffset(d);d+=e;var k=this.getTimezoneOffset(d);e!==k?d+=k-e:e-36E5!==this.getTimezoneOffset(d-36E5)||c.isSafari||(d-=36E5)}else d=(new this.Date(m,p,w(q,1),w(h,0),w(a,0),w(b,0))).getTime();return d},timezoneOffsetFunction:function(){var m=this,p=this.options,q=t.moment;if(!this.useUTC)return function(c){return 6E4*(new Date(c)).getTimezoneOffset()};if(p.timezone){if(q)return function(c){return 6E4*-q.tz(c,p.timezone).utcOffset()};c.error(25)}return this.useUTC&&
-p.getTimezoneOffset?function(c){return 6E4*p.getTimezoneOffset(c)}:function(){return 6E4*(m.timezoneOffset||0)}},dateFormat:function(m,p,q){if(!I(p)||isNaN(p))return c.defaultOptions.lang.invalidDate||"";m=w(m,"%Y-%m-%d %H:%M:%S");var h=this,a=new this.Date(p),b=this.get("Hours",a),d=this.get("Day",a),e=this.get("Date",a),k=this.get("Month",a),C=this.get("FullYear",a),z=c.defaultOptions.lang,r=z.weekdays,n=z.shortWeekdays,f=c.pad;a=G({a:n?n[d]:r[d].substr(0,3),A:r[d],d:f(e),e:f(e,2," "),w:d,b:z.shortMonths[k],
-B:z.months[k],m:f(k+1),o:k+1,y:C.toString().substr(2,2),Y:C,H:f(b),k:b,I:f(b%12||12),l:b%12||12,M:f(h.get("Minutes",a)),p:12>b?"AM":"PM",P:12>b?"am":"pm",S:f(a.getSeconds()),L:f(Math.floor(p%1E3),3)},c.dateFormats);y(a,function(a,b){for(;-1!==m.indexOf("%"+b);)m=m.replace("%"+b,"function"===typeof a?a.call(h,p):a)});return q?m.substr(0,1).toUpperCase()+m.substr(1):m},resolveDTLFormat:function(c){return H(c,!0)?c:(c=x(c),{main:c[0],from:c[1],to:c[2]})},getTimeTicks:function(c,p,q,h){var a=this,b=[],
-d={};var e=new a.Date(p);var k=c.unitRange,m=c.count||1,z;h=w(h,1);if(I(p)){a.set("Milliseconds",e,k>=F.second?0:m*Math.floor(a.get("Milliseconds",e)/m));k>=F.second&&a.set("Seconds",e,k>=F.minute?0:m*Math.floor(a.get("Seconds",e)/m));k>=F.minute&&a.set("Minutes",e,k>=F.hour?0:m*Math.floor(a.get("Minutes",e)/m));k>=F.hour&&a.set("Hours",e,k>=F.day?0:m*Math.floor(a.get("Hours",e)/m));k>=F.day&&a.set("Date",e,k>=F.month?1:Math.max(1,m*Math.floor(a.get("Date",e)/m)));if(k>=F.month){a.set("Month",e,k>=
-F.year?0:m*Math.floor(a.get("Month",e)/m));var r=a.get("FullYear",e)}k>=F.year&&a.set("FullYear",e,r-r%m);k===F.week&&(r=a.get("Day",e),a.set("Date",e,a.get("Date",e)-r+h+(r<h?-7:0)));r=a.get("FullYear",e);h=a.get("Month",e);var n=a.get("Date",e),f=a.get("Hours",e);p=e.getTime();a.variableTimezone&&(z=q-p>4*F.month||a.getTimezoneOffset(p)!==a.getTimezoneOffset(q));p=e.getTime();for(e=1;p<q;)b.push(p),p=k===F.year?a.makeTime(r+e*m,0):k===F.month?a.makeTime(r,h+e*m):!z||k!==F.day&&k!==F.week?z&&k===
-F.hour&&1<m?a.makeTime(r,h,n,f+e*m):p+k*m:a.makeTime(r,h,n+e*m*(k===F.day?1:7)),e++;b.push(p);k<=F.hour&&1E4>b.length&&b.forEach(function(b){0===b%18E5&&"000000000"===a.dateFormat("%H%M%S%L",b)&&(d[b]="day")})}b.info=G(c,{higherRanks:d,totalRange:k*m});return b}}});K(D,"parts/Options.js",[D["parts/Globals.js"]],function(c){var g=c.color,I=c.merge;c.defaultOptions={colors:"#7cb5ec #434348 #90ed7d #f7a35c #8085e9 #f15c80 #e4d354 #2b908f #f45b5b #91e8e1".split(" "),symbols:["circle","diamond","square",
-"triangle","triangle-down"],lang:{loading:"Loading...",months:"January February March April May June July August September October November December".split(" "),shortMonths:"Jan Feb Mar Apr May Jun Jul Aug Sep Oct Nov Dec".split(" "),weekdays:"Sunday Monday Tuesday Wednesday Thursday Friday Saturday".split(" "),decimalPoint:".",numericSymbols:"kMGTPE".split(""),resetZoom:"Reset zoom",resetZoomTitle:"Reset zoom level 1:1",thousandsSep:" "},global:{},time:c.Time.prototype.defaultOptions,chart:{styledMode:!1,
-borderRadius:0,colorCount:10,defaultSeriesType:"line",ignoreHiddenSeries:!0,spacing:[10,10,15,10],resetZoomButton:{theme:{zIndex:6},position:{align:"right",x:-10,y:10}},width:null,height:null,borderColor:"#335cad",backgroundColor:"#ffffff",plotBorderColor:"#cccccc"},title:{text:"Chart title",align:"center",margin:15,widthAdjust:-44},subtitle:{text:"",align:"center",widthAdjust:-44},caption:{margin:15,text:"",align:"left",verticalAlign:"bottom"},plotOptions:{},labels:{style:{position:"absolute",color:"#333333"}},
-legend:{enabled:!0,align:"center",alignColumns:!0,layout:"horizontal",labelFormatter:function(){return this.name},borderColor:"#999999",borderRadius:0,navigation:{activeColor:"#003399",inactiveColor:"#cccccc"},itemStyle:{color:"#333333",cursor:"pointer",fontSize:"12px",fontWeight:"bold",textOverflow:"ellipsis"},itemHoverStyle:{color:"#000000"},itemHiddenStyle:{color:"#cccccc"},shadow:!1,itemCheckboxStyle:{position:"absolute",width:"13px",height:"13px"},squareSymbol:!0,symbolPadding:5,verticalAlign:"bottom",
-x:0,y:0,title:{style:{fontWeight:"bold"}}},loading:{labelStyle:{fontWeight:"bold",position:"relative",top:"45%"},style:{position:"absolute",backgroundColor:"#ffffff",opacity:.5,textAlign:"center"}},tooltip:{enabled:!0,animation:c.svg,borderRadius:3,dateTimeLabelFormats:{millisecond:"%A, %b %e, %H:%M:%S.%L",second:"%A, %b %e, %H:%M:%S",minute:"%A, %b %e, %H:%M",hour:"%A, %b %e, %H:%M",day:"%A, %b %e, %Y",week:"Week from %A, %b %e, %Y",month:"%B %Y",year:"%Y"},footerFormat:"",padding:8,snap:c.isTouchDevice?
-25:10,headerFormat:'<span style="font-size: 10px">{point.key}</span><br/>',pointFormat:'<span style="color:{point.color}">\u25cf</span> {series.name}: <b>{point.y}</b><br/>',backgroundColor:g("#f7f7f7").setOpacity(.85).get(),borderWidth:1,shadow:!0,style:{color:"#333333",cursor:"default",fontSize:"12px",pointerEvents:"none",whiteSpace:"nowrap"}},credits:{enabled:!0,href:"https://www.highcharts.com?credits",position:{align:"right",x:-10,verticalAlign:"bottom",y:-5},style:{cursor:"pointer",color:"#999999",
-fontSize:"9px"},text:"Highcharts.com"}};c.setOptions=function(g){c.defaultOptions=I(!0,c.defaultOptions,g);(g.time||g.global)&&c.time.update(I(c.defaultOptions.global,c.defaultOptions.time,g.global,g.time));return c.defaultOptions};c.getOptions=function(){return c.defaultOptions};c.defaultPlotOptions=c.defaultOptions.plotOptions;c.time=new c.Time(I(c.defaultOptions.global,c.defaultOptions.time));c.dateFormat=function(g,H,y){return c.time.dateFormat(g,H,y)};""});K(D,"parts/Tick.js",[D["parts/Globals.js"],
-D["parts/Utilities.js"]],function(c,g){var I=g.defined,G=g.destroyObjectProperties,H=g.extend,y=g.isNumber,w=g.pick,x=c.correctFloat,E=c.fireEvent,F=c.merge,t=c.deg2rad;c.Tick=function(c,p,q,h,a){this.axis=c;this.pos=p;this.type=q||"";this.isNewLabel=this.isNew=!0;this.parameters=a||{};this.tickmarkOffset=this.parameters.tickmarkOffset;this.options=this.parameters.options;q||h||this.addLabel()};c.Tick.prototype={addLabel:function(){var c=this,p=c.axis,q=p.options,h=p.chart,a=p.categories,b=p.names,
-d=c.pos,e=w(c.options&&c.options.labels,q.labels),k=p.tickPositions,C=d===k[0],z=d===k[k.length-1];a=this.parameters.category||(a?w(a[d],b[d],d):d);var r=c.label;k=k.info;var n,f;if(p.isDatetimeAxis&&k){var l=h.time.resolveDTLFormat(q.dateTimeLabelFormats[!q.grid&&k.higherRanks[d]||k.unitName]);var v=l.main}c.isFirst=C;c.isLast=z;c.formatCtx={axis:p,chart:h,isFirst:C,isLast:z,dateTimeLabelFormat:v,tickPositionInfo:k,value:p.isLog?x(p.lin2log(a)):a,pos:d};q=p.labelFormatter.call(c.formatCtx,this.formatCtx);
-if(f=l&&l.list)c.shortenLabel=function(){for(n=0;n<f.length;n++)if(r.attr({text:p.labelFormatter.call(H(c.formatCtx,{dateTimeLabelFormat:f[n]}))}),r.getBBox().width<p.getSlotWidth(c)-2*w(e.padding,5))return;r.attr({text:""})};if(I(r))r&&r.textStr!==q&&(!r.textWidth||e.style&&e.style.width||r.styles.width||r.css({width:null}),r.attr({text:q}),r.textPxLength=r.getBBox().width);else{if(c.label=r=I(q)&&e.enabled?h.renderer.text(q,0,0,e.useHTML).add(p.labelGroup):null)h.styledMode||r.css(F(e.style)),r.textPxLength=
-r.getBBox().width;c.rotation=0}},getLabelSize:function(){return this.label?this.label.getBBox()[this.axis.horiz?"height":"width"]:0},handleOverflow:function(c){var m=this.axis,q=m.options.labels,h=c.x,a=m.chart.chartWidth,b=m.chart.spacing,d=w(m.labelLeft,Math.min(m.pos,b[3]));b=w(m.labelRight,Math.max(m.isRadial?0:m.pos+m.len,a-b[1]));var e=this.label,k=this.rotation,C={left:0,center:.5,right:1}[m.labelAlign||e.attr("align")],z=e.getBBox().width,r=m.getSlotWidth(this),n=r,f=1,l,v={};if(k||"justify"!==
-w(q.overflow,"justify"))0>k&&h-C*z<d?l=Math.round(h/Math.cos(k*t)-d):0<k&&h+C*z>b&&(l=Math.round((a-h)/Math.cos(k*t)));else if(a=h+(1-C)*z,h-C*z<d?n=c.x+n*(1-C)-d:a>b&&(n=b-c.x+n*C,f=-1),n=Math.min(r,n),n<r&&"center"===m.labelAlign&&(c.x+=f*(r-n-C*(r-Math.min(z,n)))),z>n||m.autoRotation&&(e.styles||{}).width)l=n;l&&(this.shortenLabel?this.shortenLabel():(v.width=Math.floor(l),(q.style||{}).textOverflow||(v.textOverflow="ellipsis"),e.css(v)))},getPosition:function(m,p,q,h){var a=this.axis,b=a.chart,
-d=h&&b.oldChartHeight||b.chartHeight;m={x:m?c.correctFloat(a.translate(p+q,null,null,h)+a.transB):a.left+a.offset+(a.opposite?(h&&b.oldChartWidth||b.chartWidth)-a.right-a.left:0),y:m?d-a.bottom+a.offset-(a.opposite?a.height:0):c.correctFloat(d-a.translate(p+q,null,null,h)-a.transB)};m.y=Math.max(Math.min(m.y,1E5),-1E5);E(this,"afterGetPosition",{pos:m});return m},getLabelPosition:function(c,p,q,h,a,b,d,e){var k=this.axis,m=k.transA,z=k.isLinked&&k.linkedParent?k.linkedParent.reversed:k.reversed,r=
-k.staggerLines,n=k.tickRotCorr||{x:0,y:0},f=a.y,l=h||k.reserveSpaceDefault?0:-k.labelOffset*("center"===k.labelAlign?.5:1),v={};I(f)||(f=0===k.side?q.rotation?-8:-q.getBBox().height:2===k.side?n.y+8:Math.cos(q.rotation*t)*(n.y-q.getBBox(!1,0).height/2));c=c+a.x+l+n.x-(b&&h?b*m*(z?-1:1):0);p=p+f-(b&&!h?b*m*(z?1:-1):0);r&&(q=d/(e||1)%r,k.opposite&&(q=r-q-1),p+=k.labelOffset/r*q);v.x=c;v.y=Math.round(p);E(this,"afterGetLabelPosition",{pos:v,tickmarkOffset:b,index:d});return v},getMarkPath:function(c,
-p,q,h,a,b){return b.crispLine(["M",c,p,"L",c+(a?0:-q),p+(a?q:0)],h)},renderGridLine:function(c,p,q){var h=this.axis,a=h.options,b=this.gridLine,d={},e=this.pos,k=this.type,m=w(this.tickmarkOffset,h.tickmarkOffset),z=h.chart.renderer,r=k?k+"Grid":"grid",n=a[r+"LineWidth"],f=a[r+"LineColor"];a=a[r+"LineDashStyle"];b||(h.chart.styledMode||(d.stroke=f,d["stroke-width"]=n,a&&(d.dashstyle=a)),k||(d.zIndex=1),c&&(p=0),this.gridLine=b=z.path().attr(d).addClass("highcharts-"+(k?k+"-":"")+"grid-line").add(h.gridGroup));
-if(b&&(q=h.getPlotLinePath({value:e+m,lineWidth:b.strokeWidth()*q,force:"pass",old:c})))b[c||this.isNew?"attr":"animate"]({d:q,opacity:p})},renderMark:function(c,p,q){var h=this.axis,a=h.options,b=h.chart.renderer,d=this.type,e=d?d+"Tick":"tick",k=h.tickSize(e),m=this.mark,z=!m,r=c.x;c=c.y;var n=w(a[e+"Width"],!d&&h.isXAxis?1:0);a=a[e+"Color"];k&&(h.opposite&&(k[0]=-k[0]),z&&(this.mark=m=b.path().addClass("highcharts-"+(d?d+"-":"")+"tick").add(h.axisGroup),h.chart.styledMode||m.attr({stroke:a,"stroke-width":n})),
-m[z?"attr":"animate"]({d:this.getMarkPath(r,c,k[0],m.strokeWidth()*q,h.horiz,b),opacity:p}))},renderLabel:function(c,p,q,h){var a=this.axis,b=a.horiz,d=a.options,e=this.label,k=d.labels,m=k.step;a=w(this.tickmarkOffset,a.tickmarkOffset);var z=!0,r=c.x;c=c.y;e&&y(r)&&(e.xy=c=this.getLabelPosition(r,c,e,b,k,a,h,m),this.isFirst&&!this.isLast&&!w(d.showFirstLabel,1)||this.isLast&&!this.isFirst&&!w(d.showLastLabel,1)?z=!1:!b||k.step||k.rotation||p||0===q||this.handleOverflow(c),m&&h%m&&(z=!1),z&&y(c.y)?
-(c.opacity=q,e[this.isNewLabel?"attr":"animate"](c),this.isNewLabel=!1):(e.attr("y",-9999),this.isNewLabel=!0))},render:function(m,p,q){var h=this.axis,a=h.horiz,b=this.pos,d=w(this.tickmarkOffset,h.tickmarkOffset);b=this.getPosition(a,b,d,p);d=b.x;var e=b.y;h=a&&d===h.pos+h.len||!a&&e===h.pos?-1:1;q=w(q,1);this.isActive=!0;this.renderGridLine(p,q,h);this.renderMark(b,q,h);this.renderLabel(b,p,q,m);this.isNew=!1;c.fireEvent(this,"afterRender")},destroy:function(){G(this,this.axis)}}});K(D,"parts/Axis.js",
-[D["parts/Globals.js"],D["parts/Utilities.js"]],function(c,g){var I=g.arrayMax,G=g.arrayMin,H=g.defined,y=g.destroyObjectProperties,w=g.extend,x=g.isArray,E=g.isNumber,F=g.isString,t=g.objectEach,m=g.pick,p=g.splat,q=g.syncTimeout,h=c.addEvent,a=c.animObject,b=c.color,d=c.correctFloat,e=c.defaultOptions,k=c.deg2rad,C=c.fireEvent,z=c.format,r=c.getMagnitude,n=c.merge,f=c.normalizeTickInterval,l=c.removeEvent,v=c.seriesTypes,B=c.Tick;g=function(){this.init.apply(this,arguments)};w(g.prototype,{defaultOptions:{dateTimeLabelFormats:{millisecond:{main:"%H:%M:%S.%L",
-range:!1},second:{main:"%H:%M:%S",range:!1},minute:{main:"%H:%M",range:!1},hour:{main:"%H:%M",range:!1},day:{main:"%e. %b"},week:{main:"%e. %b"},month:{main:"%b '%y"},year:{main:"%Y"}},endOnTick:!1,labels:{enabled:!0,indentation:10,x:0,style:{color:"#666666",cursor:"default",fontSize:"11px"}},maxPadding:.01,minorTickLength:2,minorTickPosition:"outside",minPadding:.01,showEmpty:!0,startOfWeek:1,startOnTick:!1,tickLength:10,tickPixelInterval:100,tickmarkPlacement:"between",tickPosition:"outside",title:{align:"middle",
-style:{color:"#666666"}},type:"linear",minorGridLineColor:"#f2f2f2",minorGridLineWidth:1,minorTickColor:"#999999",lineColor:"#ccd6eb",lineWidth:1,gridLineColor:"#e6e6e6",tickColor:"#ccd6eb"},defaultYAxisOptions:{endOnTick:!0,maxPadding:.05,minPadding:.05,tickPixelInterval:72,showLastLabel:!0,labels:{x:-8},startOnTick:!0,title:{rotation:270,text:"Values"},stackLabels:{allowOverlap:!1,enabled:!1,crop:!0,overflow:"justify",formatter:function(){return c.numberFormat(this.total,-1)},style:{color:"#000000",
-fontSize:"11px",fontWeight:"bold",textOutline:"1px contrast"}},gridLineWidth:1,lineWidth:0},defaultLeftAxisOptions:{labels:{x:-15},title:{rotation:270}},defaultRightAxisOptions:{labels:{x:15},title:{rotation:90}},defaultBottomAxisOptions:{labels:{autoRotation:[-45],x:0},margin:15,title:{rotation:0}},defaultTopAxisOptions:{labels:{autoRotation:[-45],x:0},margin:15,title:{rotation:0}},init:function(a,b){var f=b.isX,l=this;l.chart=a;l.horiz=a.inverted&&!l.isZAxis?!f:f;l.isXAxis=f;l.coll=l.coll||(f?"xAxis":
-"yAxis");C(this,"init",{userOptions:b});l.opposite=b.opposite;l.side=b.side||(l.horiz?l.opposite?0:2:l.opposite?1:3);l.setOptions(b);var u=this.options,A=u.type;l.labelFormatter=u.labels.formatter||l.defaultLabelFormatter;l.userOptions=b;l.minPixelPadding=0;l.reversed=u.reversed;l.visible=!1!==u.visible;l.zoomEnabled=!1!==u.zoomEnabled;l.hasNames="category"===A||!0===u.categories;l.categories=u.categories||l.hasNames;l.names||(l.names=[],l.names.keys={});l.plotLinesAndBandsGroups={};l.isLog="logarithmic"===
-A;l.isDatetimeAxis="datetime"===A;l.positiveValuesOnly=l.isLog&&!l.allowNegativeLog;l.isLinked=H(u.linkedTo);l.ticks={};l.labelEdge=[];l.minorTicks={};l.plotLinesAndBands=[];l.alternateBands={};l.len=0;l.minRange=l.userMinRange=u.minRange||u.maxZoom;l.range=u.range;l.offset=u.offset||0;l.stacks={};l.oldStacks={};l.stacksTouched=0;l.max=null;l.min=null;l.crosshair=m(u.crosshair,p(a.options.tooltip.crosshairs)[f?0:1],!1);b=l.options.events;-1===a.axes.indexOf(l)&&(f?a.axes.splice(a.xAxis.length,0,l):
-a.axes.push(l),a[l.coll].push(l));l.series=l.series||[];a.inverted&&!l.isZAxis&&f&&void 0===l.reversed&&(l.reversed=!0);t(b,function(a,b){c.isFunction(a)&&h(l,b,a)});l.lin2log=u.linearToLogConverter||l.lin2log;l.isLog&&(l.val2lin=l.log2lin,l.lin2val=l.lin2log);C(this,"afterInit")},setOptions:function(a){this.options=n(this.defaultOptions,"yAxis"===this.coll&&this.defaultYAxisOptions,[this.defaultTopAxisOptions,this.defaultRightAxisOptions,this.defaultBottomAxisOptions,this.defaultLeftAxisOptions][this.side],
-n(e[this.coll],a));C(this,"afterSetOptions",{userOptions:a})},defaultLabelFormatter:function(){var a=this.axis,b=this.value,f=a.chart.time,l=a.categories,d=this.dateTimeLabelFormat,k=e.lang,n=k.numericSymbols;k=k.numericSymbolMagnitude||1E3;var v=n&&n.length,B=a.options.labels.format;a=a.isLog?Math.abs(b):a.tickInterval;if(B)var h=z(B,this,f);else if(l)h=b;else if(d)h=f.dateFormat(d,b);else if(v&&1E3<=a)for(;v--&&void 0===h;)f=Math.pow(k,v+1),a>=f&&0===10*b%f&&null!==n[v]&&0!==b&&(h=c.numberFormat(b/
-f,-1)+n[v]);void 0===h&&(h=1E4<=Math.abs(b)?c.numberFormat(b,-1):c.numberFormat(b,-1,void 0,""));return h},getSeriesExtremes:function(){var a=this,b=a.chart,f;C(this,"getSeriesExtremes",null,function(){a.hasVisibleSeries=!1;a.dataMin=a.dataMax=a.threshold=null;a.softThreshold=!a.isXAxis;a.buildStacks&&a.buildStacks();a.series.forEach(function(l){if(l.visible||!b.options.chart.ignoreHiddenSeries){var u=l.options,A=u.threshold;a.hasVisibleSeries=!0;a.positiveValuesOnly&&0>=A&&(A=null);if(a.isXAxis){if(u=
-l.xData,u.length){f=l.getXExtremes(u);var d=f.min;var e=f.max;E(d)||d instanceof Date||(u=u.filter(E),f=l.getXExtremes(u),d=f.min,e=f.max);u.length&&(a.dataMin=Math.min(m(a.dataMin,d),d),a.dataMax=Math.max(m(a.dataMax,e),e))}}else if(l.getExtremes(),e=l.dataMax,d=l.dataMin,H(d)&&H(e)&&(a.dataMin=Math.min(m(a.dataMin,d),d),a.dataMax=Math.max(m(a.dataMax,e),e)),H(A)&&(a.threshold=A),!u.softThreshold||a.positiveValuesOnly)a.softThreshold=!1}})});C(this,"afterGetSeriesExtremes")},translate:function(a,
-b,f,l,d,e){var u=this.linkedParent||this,A=1,k=0,n=l?u.oldTransA:u.transA;l=l?u.oldMin:u.min;var c=u.minPixelPadding;d=(u.isOrdinal||u.isBroken||u.isLog&&d)&&u.lin2val;n||(n=u.transA);f&&(A*=-1,k=u.len);u.reversed&&(A*=-1,k-=A*(u.sector||u.len));b?(a=(a*A+k-c)/n+l,d&&(a=u.lin2val(a))):(d&&(a=u.val2lin(a)),a=E(l)?A*(a-l)*n+k+A*c+(E(e)?n*e:0):void 0);return a},toPixels:function(a,b){return this.translate(a,!1,!this.horiz,null,!0)+(b?0:this.pos)},toValue:function(a,b){return this.translate(a-(b?0:this.pos),
-!0,!this.horiz,null,!0)},getPlotLinePath:function(a){var b=this,f=b.chart,l=b.left,d=b.top,A=a.old,e=a.value,k=a.translatedValue,n=a.lineWidth,c=a.force,v,B,h,r,z=A&&f.oldChartHeight||f.chartHeight,p=A&&f.oldChartWidth||f.chartWidth,q,g=b.transB,t=function(a,b,f){if("pass"!==c&&a<b||a>f)c?a=Math.min(Math.max(b,a),f):q=!0;return a};a={value:e,lineWidth:n,old:A,force:c,acrossPanes:a.acrossPanes,translatedValue:k};C(this,"getPlotLinePath",a,function(a){k=m(k,b.translate(e,null,null,A));k=Math.min(Math.max(-1E5,
-k),1E5);v=h=Math.round(k+g);B=r=Math.round(z-k-g);E(k)?b.horiz?(B=d,r=z-b.bottom,v=h=t(v,l,l+b.width)):(v=l,h=p-b.right,B=r=t(B,d,d+b.height)):(q=!0,c=!1);a.path=q&&!c?null:f.renderer.crispLine(["M",v,B,"L",h,r],n||1)});return a.path},getLinearTickPositions:function(a,b,f){var l=d(Math.floor(b/a)*a);f=d(Math.ceil(f/a)*a);var u=[],A;d(l+a)===l&&(A=20);if(this.single)return[b];for(b=l;b<=f;){u.push(b);b=d(b+a,A);if(b===e)break;var e=b}return u},getMinorTickInterval:function(){var a=this.options;return!0===
-a.minorTicks?m(a.minorTickInterval,"auto"):!1===a.minorTicks?null:a.minorTickInterval},getMinorTickPositions:function(){var a=this,b=a.options,f=a.tickPositions,l=a.minorTickInterval,d=[],e=a.pointRangePadding||0,k=a.min-e;e=a.max+e;var n=e-k;if(n&&n/l<a.len/3)if(a.isLog)this.paddedTicks.forEach(function(b,f,u){f&&d.push.apply(d,a.getLogTickPositions(l,u[f-1],u[f],!0))});else if(a.isDatetimeAxis&&"auto"===this.getMinorTickInterval())d=d.concat(a.getTimeTicks(a.normalizeTimeTickInterval(l),k,e,b.startOfWeek));
-else for(b=k+(f[0]-k)%l;b<=e&&b!==d[0];b+=l)d.push(b);0!==d.length&&a.trimTicks(d);return d},adjustForMinRange:function(){var a=this.options,b=this.min,f=this.max,l,d,e,k,n;this.isXAxis&&void 0===this.minRange&&!this.isLog&&(H(a.min)||H(a.max)?this.minRange=null:(this.series.forEach(function(a){k=a.xData;for(d=n=a.xIncrement?1:k.length-1;0<d;d--)if(e=k[d]-k[d-1],void 0===l||e<l)l=e}),this.minRange=Math.min(5*l,this.dataMax-this.dataMin)));if(f-b<this.minRange){var c=this.dataMax-this.dataMin>=this.minRange;
-var v=this.minRange;var B=(v-f+b)/2;B=[b-B,m(a.min,b-B)];c&&(B[2]=this.isLog?this.log2lin(this.dataMin):this.dataMin);b=I(B);f=[b+v,m(a.max,b+v)];c&&(f[2]=this.isLog?this.log2lin(this.dataMax):this.dataMax);f=G(f);f-b<v&&(B[0]=f-v,B[1]=m(a.min,f-v),b=I(B))}this.min=b;this.max=f},getClosest:function(){var a;this.categories?a=1:this.series.forEach(function(b){var f=b.closestPointRange,l=b.visible||!b.chart.options.chart.ignoreHiddenSeries;!b.noSharedTooltip&&H(f)&&l&&(a=H(a)?Math.min(a,f):f)});return a},
-nameToX:function(a){var b=x(this.categories),f=b?this.categories:this.names,l=a.options.x;a.series.requireSorting=!1;H(l)||(l=!1===this.options.uniqueNames?a.series.autoIncrement():b?f.indexOf(a.name):m(f.keys[a.name],-1));if(-1===l){if(!b)var d=f.length}else d=l;void 0!==d&&(this.names[d]=a.name,this.names.keys[a.name]=d);return d},updateNames:function(){var a=this,b=this.names;0<b.length&&(Object.keys(b.keys).forEach(function(a){delete b.keys[a]}),b.length=0,this.minRange=this.userMinRange,(this.series||
-[]).forEach(function(b){b.xIncrement=null;if(!b.points||b.isDirtyData)a.max=Math.max(a.max,b.xData.length-1),b.processData(),b.generatePoints();b.data.forEach(function(f,l){if(f&&f.options&&void 0!==f.name){var u=a.nameToX(f);void 0!==u&&u!==f.x&&(f.x=u,b.xData[l]=u)}})}))},setAxisTranslation:function(a){var b=this,f=b.max-b.min,l=b.axisPointRange||0,d=0,e=0,k=b.linkedParent,A=!!b.categories,n=b.transA,c=b.isXAxis;if(c||A||l){var B=b.getClosest();k?(d=k.minPointOffset,e=k.pointRangePadding):b.series.forEach(function(a){var f=
-A?1:c?m(a.options.pointRange,B,0):b.axisPointRange||0,u=a.options.pointPlacement;l=Math.max(l,f);if(!b.single||A)a=v.xrange&&a instanceof v.xrange?!c:c,d=Math.max(d,a&&F(u)?0:f/2),e=Math.max(e,a&&"on"===u?0:f)});k=b.ordinalSlope&&B?b.ordinalSlope/B:1;b.minPointOffset=d*=k;b.pointRangePadding=e*=k;b.pointRange=Math.min(l,b.single&&A?1:f);c&&(b.closestPointRange=B)}a&&(b.oldTransA=n);b.translationSlope=b.transA=n=b.staticScale||b.len/(f+e||1);b.transB=b.horiz?b.left:b.bottom;b.minPixelPadding=n*d;C(this,
-"afterSetAxisTranslation")},minFromRange:function(){return this.max-this.range},setTickInterval:function(a){var b=this,l=b.chart,e=b.options,k=b.isLog,A=b.isDatetimeAxis,n=b.isXAxis,v=b.isLinked,B=e.maxPadding,h=e.minPadding,z=e.tickInterval,p=e.tickPixelInterval,q=b.categories,g=E(b.threshold)?b.threshold:null,t=b.softThreshold;A||q||v||this.getTickAmount();var x=m(b.userMin,e.min);var w=m(b.userMax,e.max);if(v){b.linkedParent=l[b.coll][e.linkedTo];var y=b.linkedParent.getExtremes();b.min=m(y.min,
-y.dataMin);b.max=m(y.max,y.dataMax);e.type!==b.linkedParent.options.type&&c.error(11,1,l)}else{if(!t&&H(g))if(b.dataMin>=g)y=g,h=0;else if(b.dataMax<=g){var F=g;B=0}b.min=m(x,y,b.dataMin);b.max=m(w,F,b.dataMax)}k&&(b.positiveValuesOnly&&!a&&0>=Math.min(b.min,m(b.dataMin,b.min))&&c.error(10,1,l),b.min=d(b.log2lin(b.min),16),b.max=d(b.log2lin(b.max),16));b.range&&H(b.max)&&(b.userMin=b.min=x=Math.max(b.dataMin,b.minFromRange()),b.userMax=w=b.max,b.range=null);C(b,"foundExtremes");b.beforePadding&&b.beforePadding();
-b.adjustForMinRange();!(q||b.axisPointRange||b.usePercentage||v)&&H(b.min)&&H(b.max)&&(l=b.max-b.min)&&(!H(x)&&h&&(b.min-=l*h),!H(w)&&B&&(b.max+=l*B));E(e.softMin)&&!E(b.userMin)&&e.softMin<b.min&&(b.min=x=e.softMin);E(e.softMax)&&!E(b.userMax)&&e.softMax>b.max&&(b.max=w=e.softMax);E(e.floor)&&(b.min=Math.min(Math.max(b.min,e.floor),Number.MAX_VALUE));E(e.ceiling)&&(b.max=Math.max(Math.min(b.max,e.ceiling),m(b.userMax,-Number.MAX_VALUE)));t&&H(b.dataMin)&&(g=g||0,!H(x)&&b.min<g&&b.dataMin>=g?b.min=
-b.options.minRange?Math.min(g,b.max-b.minRange):g:!H(w)&&b.max>g&&b.dataMax<=g&&(b.max=b.options.minRange?Math.max(g,b.min+b.minRange):g));b.tickInterval=b.min===b.max||void 0===b.min||void 0===b.max?1:v&&!z&&p===b.linkedParent.options.tickPixelInterval?z=b.linkedParent.tickInterval:m(z,this.tickAmount?(b.max-b.min)/Math.max(this.tickAmount-1,1):void 0,q?1:(b.max-b.min)*p/Math.max(b.len,p));n&&!a&&b.series.forEach(function(a){a.processData(b.min!==b.oldMin||b.max!==b.oldMax)});b.setAxisTranslation(!0);
-b.beforeSetTickPositions&&b.beforeSetTickPositions();b.postProcessTickInterval&&(b.tickInterval=b.postProcessTickInterval(b.tickInterval));b.pointRange&&!z&&(b.tickInterval=Math.max(b.pointRange,b.tickInterval));a=m(e.minTickInterval,b.isDatetimeAxis&&b.closestPointRange);!z&&b.tickInterval<a&&(b.tickInterval=a);A||k||z||(b.tickInterval=f(b.tickInterval,null,r(b.tickInterval),m(e.allowDecimals,!(.5<b.tickInterval&&5>b.tickInterval&&1E3<b.max&&9999>b.max)),!!this.tickAmount));this.tickAmount||(b.tickInterval=
-b.unsquish());this.setTickPositions()},setTickPositions:function(){var a=this.options,b=a.tickPositions;var f=this.getMinorTickInterval();var l=a.tickPositioner,d=a.startOnTick,e=a.endOnTick;this.tickmarkOffset=this.categories&&"between"===a.tickmarkPlacement&&1===this.tickInterval?.5:0;this.minorTickInterval="auto"===f&&this.tickInterval?this.tickInterval/5:f;this.single=this.min===this.max&&H(this.min)&&!this.tickAmount&&(parseInt(this.min,10)===this.min||!1!==a.allowDecimals);this.tickPositions=
-f=b&&b.slice();!f&&(!this.ordinalPositions&&(this.max-this.min)/this.tickInterval>Math.max(2*this.len,200)?(f=[this.min,this.max],c.error(19,!1,this.chart)):f=this.isDatetimeAxis?this.getTimeTicks(this.normalizeTimeTickInterval(this.tickInterval,a.units),this.min,this.max,a.startOfWeek,this.ordinalPositions,this.closestPointRange,!0):this.isLog?this.getLogTickPositions(this.tickInterval,this.min,this.max):this.getLinearTickPositions(this.tickInterval,this.min,this.max),f.length>this.len&&(f=[f[0],
-f.pop()],f[0]===f[1]&&(f.length=1)),this.tickPositions=f,l&&(l=l.apply(this,[this.min,this.max])))&&(this.tickPositions=f=l);this.paddedTicks=f.slice(0);this.trimTicks(f,d,e);this.isLinked||(this.single&&2>f.length&&!this.categories&&(this.min-=.5,this.max+=.5),b||l||this.adjustTickAmount());C(this,"afterSetTickPositions")},trimTicks:function(a,b,f){var l=a[0],d=a[a.length-1],e=this.minPointOffset||0;C(this,"trimTicks");if(!this.isLinked){if(b&&-Infinity!==l)this.min=l;else for(;this.min-e>a[0];)a.shift();
-if(f)this.max=d;else for(;this.max+e<a[a.length-1];)a.pop();0===a.length&&H(l)&&!this.options.tickPositions&&a.push((d+l)/2)}},alignToOthers:function(){var a={},b,f=this.options;!1===this.chart.options.chart.alignTicks||!1===f.alignTicks||!1===f.startOnTick||!1===f.endOnTick||this.isLog||this.chart[this.coll].forEach(function(f){var l=f.options;l=[f.horiz?l.left:l.top,l.width,l.height,l.pane].join();f.series.length&&(a[l]?b=!0:a[l]=1)});return b},getTickAmount:function(){var a=this.options,b=a.tickAmount,
-f=a.tickPixelInterval;!H(a.tickInterval)&&this.len<f&&!this.isRadial&&!this.isLog&&a.startOnTick&&a.endOnTick&&(b=2);!b&&this.alignToOthers()&&(b=Math.ceil(this.len/f)+1);4>b&&(this.finalTickAmt=b,b=5);this.tickAmount=b},adjustTickAmount:function(){var a=this.options,b=this.tickInterval,f=this.tickPositions,l=this.tickAmount,e=this.finalTickAmt,k=f&&f.length,n=m(this.threshold,this.softThreshold?0:null),c;if(this.hasData()){if(k<l){for(c=this.min;f.length<l;)f.length%2||c===n?f.push(d(f[f.length-
-1]+b)):f.unshift(d(f[0]-b));this.transA*=(k-1)/(l-1);this.min=a.startOnTick?f[0]:Math.min(this.min,f[0]);this.max=a.endOnTick?f[f.length-1]:Math.max(this.max,f[f.length-1])}else k>l&&(this.tickInterval*=2,this.setTickPositions());if(H(e)){for(b=a=f.length;b--;)(3===e&&1===b%2||2>=e&&0<b&&b<a-1)&&f.splice(b,1);this.finalTickAmt=void 0}}},setScale:function(){var a=this.series.some(function(a){return a.isDirtyData||a.isDirty||a.xAxis&&a.xAxis.isDirty}),b;this.oldMin=this.min;this.oldMax=this.max;this.oldAxisLength=
-this.len;this.setAxisSize();(b=this.len!==this.oldAxisLength)||a||this.isLinked||this.forceRedraw||this.userMin!==this.oldUserMin||this.userMax!==this.oldUserMax||this.alignToOthers()?(this.resetStacks&&this.resetStacks(),this.forceRedraw=!1,this.getSeriesExtremes(),this.setTickInterval(),this.oldUserMin=this.userMin,this.oldUserMax=this.userMax,this.isDirty||(this.isDirty=b||this.min!==this.oldMin||this.max!==this.oldMax)):this.cleanStacks&&this.cleanStacks();C(this,"afterSetScale")},setExtremes:function(a,
-b,f,l,d){var e=this,k=e.chart;f=m(f,!0);e.series.forEach(function(a){delete a.kdTree});d=w(d,{min:a,max:b});C(e,"setExtremes",d,function(){e.userMin=a;e.userMax=b;e.eventArgs=d;f&&k.redraw(l)})},zoom:function(a,b){var f=this.dataMin,l=this.dataMax,d=this.options,e=Math.min(f,m(d.min,f)),k=Math.max(l,m(d.max,l));a={newMin:a,newMax:b};C(this,"zoom",a,function(a){var b=a.newMin,d=a.newMax;if(b!==this.min||d!==this.max)this.allowZoomOutside||(H(f)&&(b<e&&(b=e),b>k&&(b=k)),H(l)&&(d<e&&(d=e),d>k&&(d=k))),
-this.displayBtn=void 0!==b||void 0!==d,this.setExtremes(b,d,!1,void 0,{trigger:"zoom"});a.zoomed=!0});return a.zoomed},setAxisSize:function(){var a=this.chart,b=this.options,f=b.offsets||[0,0,0,0],l=this.horiz,d=this.width=Math.round(c.relativeLength(m(b.width,a.plotWidth-f[3]+f[1]),a.plotWidth)),e=this.height=Math.round(c.relativeLength(m(b.height,a.plotHeight-f[0]+f[2]),a.plotHeight)),k=this.top=Math.round(c.relativeLength(m(b.top,a.plotTop+f[0]),a.plotHeight,a.plotTop));b=this.left=Math.round(c.relativeLength(m(b.left,
-a.plotLeft+f[3]),a.plotWidth,a.plotLeft));this.bottom=a.chartHeight-e-k;this.right=a.chartWidth-d-b;this.len=Math.max(l?d:e,0);this.pos=l?b:k},getExtremes:function(){var a=this.isLog;return{min:a?d(this.lin2log(this.min)):this.min,max:a?d(this.lin2log(this.max)):this.max,dataMin:this.dataMin,dataMax:this.dataMax,userMin:this.userMin,userMax:this.userMax}},getThreshold:function(a){var b=this.isLog,f=b?this.lin2log(this.min):this.min;b=b?this.lin2log(this.max):this.max;null===a||-Infinity===a?a=f:Infinity===
-a?a=b:f>a?a=f:b<a&&(a=b);return this.translate(a,0,1,0,1)},autoLabelAlign:function(a){var b=(m(a,0)-90*this.side+720)%360;a={align:"center"};C(this,"autoLabelAlign",a,function(a){15<b&&165>b?a.align="right":195<b&&345>b&&(a.align="left")});return a.align},tickSize:function(a){var b=this.options,f=b[a+"Length"],l=m(b[a+"Width"],"tick"===a&&this.isXAxis&&!this.categories?1:0);if(l&&f){"inside"===b[a+"Position"]&&(f=-f);var d=[f,l]}a={tickSize:d};C(this,"afterTickSize",a);return a.tickSize},labelMetrics:function(){var a=
-this.tickPositions&&this.tickPositions[0]||0;return this.chart.renderer.fontMetrics(this.options.labels.style&&this.options.labels.style.fontSize,this.ticks[a]&&this.ticks[a].label)},unsquish:function(){var a=this.options.labels,b=this.horiz,f=this.tickInterval,l=f,e=this.len/(((this.categories?1:0)+this.max-this.min)/f),n,c=a.rotation,v=this.labelMetrics(),B,h=Number.MAX_VALUE,r,C=this.max-this.min,z=function(a){var b=a/(e||1);b=1<b?Math.ceil(b):1;b*f>C&&Infinity!==a&&Infinity!==e&&C&&(b=Math.ceil(C/
-f));return d(b*f)};b?(r=!a.staggerLines&&!a.step&&(H(c)?[c]:e<m(a.autoRotationLimit,80)&&a.autoRotation))&&r.forEach(function(a){if(a===c||a&&-90<=a&&90>=a){B=z(Math.abs(v.h/Math.sin(k*a)));var b=B+Math.abs(a/360);b<h&&(h=b,n=a,l=B)}}):a.step||(l=z(v.h));this.autoRotation=r;this.labelRotation=m(n,c);return l},getSlotWidth:function(a){var b=this.chart,f=this.horiz,l=this.options.labels,d=Math.max(this.tickPositions.length-(this.categories?0:1),1),e=b.margin[3];return a&&a.slotWidth||f&&2>(l.step||
-0)&&!l.rotation&&(this.staggerLines||1)*this.len/d||!f&&(l.style&&parseInt(l.style.width,10)||e&&e-b.spacing[3]||.33*b.chartWidth)},renderUnsquish:function(){var a=this.chart,b=a.renderer,f=this.tickPositions,l=this.ticks,d=this.options.labels,e=d&&d.style||{},k=this.horiz,n=this.getSlotWidth(),c=Math.max(1,Math.round(n-2*(d.padding||5))),v={},B=this.labelMetrics(),h=d.style&&d.style.textOverflow,r=0;F(d.rotation)||(v.rotation=d.rotation||0);f.forEach(function(a){(a=l[a])&&a.label&&a.label.textPxLength>
-r&&(r=a.label.textPxLength)});this.maxLabelLength=r;if(this.autoRotation)r>c&&r>B.h?v.rotation=this.labelRotation:this.labelRotation=0;else if(n){var m=c;if(!h){var C="clip";for(c=f.length;!k&&c--;){var z=f[c];if(z=l[z].label)z.styles&&"ellipsis"===z.styles.textOverflow?z.css({textOverflow:"clip"}):z.textPxLength>n&&z.css({width:n+"px"}),z.getBBox().height>this.len/f.length-(B.h-B.f)&&(z.specificTextOverflow="ellipsis")}}}v.rotation&&(m=r>.5*a.chartHeight?.33*a.chartHeight:r,h||(C="ellipsis"));if(this.labelAlign=
-d.align||this.autoLabelAlign(this.labelRotation))v.align=this.labelAlign;f.forEach(function(a){var b=(a=l[a])&&a.label,f=e.width,d={};b&&(b.attr(v),a.shortenLabel?a.shortenLabel():m&&!f&&"nowrap"!==e.whiteSpace&&(m<b.textPxLength||"SPAN"===b.element.tagName)?(d.width=m,h||(d.textOverflow=b.specificTextOverflow||C),b.css(d)):b.styles&&b.styles.width&&!d.width&&!f&&b.css({width:null}),delete b.specificTextOverflow,a.rotation=v.rotation)},this);this.tickRotCorr=b.rotCorr(B.b,this.labelRotation||0,0!==
-this.side)},hasData:function(){return this.series.some(function(a){return a.hasData()})||this.options.showEmpty&&H(this.min)&&H(this.max)},addTitle:function(a){var b=this.chart.renderer,f=this.horiz,l=this.opposite,d=this.options.title,e,k=this.chart.styledMode;this.axisTitle||((e=d.textAlign)||(e=(f?{low:"left",middle:"center",high:"right"}:{low:l?"right":"left",middle:"center",high:l?"left":"right"})[d.align]),this.axisTitle=b.text(d.text,0,0,d.useHTML).attr({zIndex:7,rotation:d.rotation||0,align:e}).addClass("highcharts-axis-title"),
-k||this.axisTitle.css(n(d.style)),this.axisTitle.add(this.axisGroup),this.axisTitle.isNew=!0);k||d.style.width||this.isRadial||this.axisTitle.css({width:this.len});this.axisTitle[a?"show":"hide"](a)},generateTick:function(a){var b=this.ticks;b[a]?b[a].addLabel():b[a]=new B(this,a)},getOffset:function(){var a=this,b=a.chart,f=b.renderer,l=a.options,d=a.tickPositions,e=a.ticks,k=a.horiz,n=a.side,c=b.inverted&&!a.isZAxis?[1,0,3,2][n]:n,v,B=0,h=0,r=l.title,z=l.labels,p=0,g=b.axisOffset;b=b.clipOffset;
-var q=[-1,1,1,-1][n],x=l.className,w=a.axisParent;var E=a.hasData();a.showAxis=v=E||m(l.showEmpty,!0);a.staggerLines=a.horiz&&z.staggerLines;a.axisGroup||(a.gridGroup=f.g("grid").attr({zIndex:l.gridZIndex||1}).addClass("highcharts-"+this.coll.toLowerCase()+"-grid "+(x||"")).add(w),a.axisGroup=f.g("axis").attr({zIndex:l.zIndex||2}).addClass("highcharts-"+this.coll.toLowerCase()+" "+(x||"")).add(w),a.labelGroup=f.g("axis-labels").attr({zIndex:z.zIndex||7}).addClass("highcharts-"+a.coll.toLowerCase()+
-"-labels "+(x||"")).add(w));E||a.isLinked?(d.forEach(function(b,f){a.generateTick(b,f)}),a.renderUnsquish(),a.reserveSpaceDefault=0===n||2===n||{1:"left",3:"right"}[n]===a.labelAlign,m(z.reserveSpace,"center"===a.labelAlign?!0:null,a.reserveSpaceDefault)&&d.forEach(function(a){p=Math.max(e[a].getLabelSize(),p)}),a.staggerLines&&(p*=a.staggerLines),a.labelOffset=p*(a.opposite?-1:1)):t(e,function(a,b){a.destroy();delete e[b]});if(r&&r.text&&!1!==r.enabled&&(a.addTitle(v),v&&!1!==r.reserveSpace)){a.titleOffset=
-B=a.axisTitle.getBBox()[k?"height":"width"];var y=r.offset;h=H(y)?0:m(r.margin,k?5:10)}a.renderLine();a.offset=q*m(l.offset,g[n]?g[n]+(l.margin||0):0);a.tickRotCorr=a.tickRotCorr||{x:0,y:0};f=0===n?-a.labelMetrics().h:2===n?a.tickRotCorr.y:0;h=Math.abs(p)+h;p&&(h=h-f+q*(k?m(z.y,a.tickRotCorr.y+8*q):z.x));a.axisTitleMargin=m(y,h);a.getMaxLabelDimensions&&(a.maxLabelDimensions=a.getMaxLabelDimensions(e,d));k=this.tickSize("tick");g[n]=Math.max(g[n],a.axisTitleMargin+B+q*a.offset,h,d&&d.length&&k?k[0]+
-q*a.offset:0);l=l.offset?0:2*Math.floor(a.axisLine.strokeWidth()/2);b[c]=Math.max(b[c],l);C(this,"afterGetOffset")},getLinePath:function(a){var b=this.chart,f=this.opposite,l=this.offset,d=this.horiz,e=this.left+(f?this.width:0)+l;l=b.chartHeight-this.bottom-(f?this.height:0)+l;f&&(a*=-1);return b.renderer.crispLine(["M",d?this.left:e,d?l:this.top,"L",d?b.chartWidth-this.right:e,d?l:b.chartHeight-this.bottom],a)},renderLine:function(){this.axisLine||(this.axisLine=this.chart.renderer.path().addClass("highcharts-axis-line").add(this.axisGroup),
-this.chart.styledMode||this.axisLine.attr({stroke:this.options.lineColor,"stroke-width":this.options.lineWidth,zIndex:7}))},getTitlePosition:function(){var a=this.horiz,b=this.left,f=this.top,l=this.len,d=this.options.title,e=a?b:f,k=this.opposite,n=this.offset,c=d.x||0,v=d.y||0,B=this.axisTitle,h=this.chart.renderer.fontMetrics(d.style&&d.style.fontSize,B);B=Math.max(B.getBBox(null,0).height-h.h-1,0);l={low:e+(a?0:l),middle:e+l/2,high:e+(a?l:0)}[d.align];b=(a?f+this.height:b)+(a?1:-1)*(k?-1:1)*this.axisTitleMargin+
-[-B,B,h.f,-B][this.side];a={x:a?l+c:b+(k?this.width:0)+n+c,y:a?b+v-(k?this.height:0)+n:l+v};C(this,"afterGetTitlePosition",{titlePosition:a});return a},renderMinorTick:function(a){var b=this.chart.hasRendered&&E(this.oldMin),f=this.minorTicks;f[a]||(f[a]=new B(this,a,"minor"));b&&f[a].isNew&&f[a].render(null,!0);f[a].render(null,!1,1)},renderTick:function(a,b){var f=this.isLinked,l=this.ticks,d=this.chart.hasRendered&&E(this.oldMin);if(!f||a>=this.min&&a<=this.max)l[a]||(l[a]=new B(this,a)),d&&l[a].isNew&&
-l[a].render(b,!0,-1),l[a].render(b)},render:function(){var b=this,f=b.chart,l=b.options,d=b.isLog,e=b.isLinked,k=b.tickPositions,n=b.axisTitle,v=b.ticks,h=b.minorTicks,r=b.alternateBands,m=l.stackLabels,z=l.alternateGridColor,p=b.tickmarkOffset,g=b.axisLine,x=b.showAxis,w=a(f.renderer.globalAnimation),y,F;b.labelEdge.length=0;b.overlap=!1;[v,h,r].forEach(function(a){t(a,function(a){a.isActive=!1})});if(b.hasData()||e)b.minorTickInterval&&!b.categories&&b.getMinorTickPositions().forEach(function(a){b.renderMinorTick(a)}),
-k.length&&(k.forEach(function(a,f){b.renderTick(a,f)}),p&&(0===b.min||b.single)&&(v[-1]||(v[-1]=new B(b,-1,null,!0)),v[-1].render(-1))),z&&k.forEach(function(a,l){F=void 0!==k[l+1]?k[l+1]+p:b.max-p;0===l%2&&a<b.max&&F<=b.max+(f.polar?-p:p)&&(r[a]||(r[a]=new c.PlotLineOrBand(b)),y=a+p,r[a].options={from:d?b.lin2log(y):y,to:d?b.lin2log(F):F,color:z},r[a].render(),r[a].isActive=!0)}),b._addedPlotLB||((l.plotLines||[]).concat(l.plotBands||[]).forEach(function(a){b.addPlotBandOrLine(a)}),b._addedPlotLB=
-!0);[v,h,r].forEach(function(a){var b,l=[],d=w.duration;t(a,function(a,b){a.isActive||(a.render(b,!1,0),a.isActive=!1,l.push(b))});q(function(){for(b=l.length;b--;)a[l[b]]&&!a[l[b]].isActive&&(a[l[b]].destroy(),delete a[l[b]])},a!==r&&f.hasRendered&&d?d:0)});g&&(g[g.isPlaced?"animate":"attr"]({d:this.getLinePath(g.strokeWidth())}),g.isPlaced=!0,g[x?"show":"hide"](x));n&&x&&(l=b.getTitlePosition(),E(l.y)?(n[n.isNew?"attr":"animate"](l),n.isNew=!1):(n.attr("y",-9999),n.isNew=!0));m&&m.enabled&&b.renderStackTotals();
-b.isDirty=!1;C(this,"afterRender")},redraw:function(){this.visible&&(this.render(),this.plotLinesAndBands.forEach(function(a){a.render()}));this.series.forEach(function(a){a.isDirty=!0})},keepProps:"extKey hcEvents names series userMax userMin".split(" "),destroy:function(a){var b=this,f=b.stacks,d=b.plotLinesAndBands,e;C(this,"destroy",{keepEvents:a});a||l(b);t(f,function(a,b){y(a);f[b]=null});[b.ticks,b.minorTicks,b.alternateBands].forEach(function(a){y(a)});if(d)for(a=d.length;a--;)d[a].destroy();
-"stackTotalGroup axisLine axisTitle axisGroup gridGroup labelGroup cross scrollbar".split(" ").forEach(function(a){b[a]&&(b[a]=b[a].destroy())});for(e in b.plotLinesAndBandsGroups)b.plotLinesAndBandsGroups[e]=b.plotLinesAndBandsGroups[e].destroy();t(b,function(a,f){-1===b.keepProps.indexOf(f)&&delete b[f]})},drawCrosshair:function(a,f){var l,d=this.crosshair,e=m(d.snap,!0),k,n=this.cross;C(this,"drawCrosshair",{e:a,point:f});a||(a=this.cross&&this.cross.e);if(this.crosshair&&!1!==(H(f)||!e)){e?H(f)&&
-(k=m("colorAxis"!==this.coll?f.crosshairPos:null,this.isXAxis?f.plotX:this.len-f.plotY)):k=a&&(this.horiz?a.chartX-this.pos:this.len-a.chartY+this.pos);H(k)&&(l=this.getPlotLinePath({value:f&&(this.isXAxis?f.x:m(f.stackY,f.y)),translatedValue:k})||null);if(!H(l)){this.hideCrosshair();return}e=this.categories&&!this.isRadial;n||(this.cross=n=this.chart.renderer.path().addClass("highcharts-crosshair highcharts-crosshair-"+(e?"category ":"thin ")+d.className).attr({zIndex:m(d.zIndex,2)}).add(),this.chart.styledMode||
-(n.attr({stroke:d.color||(e?b("#ccd6eb").setOpacity(.25).get():"#cccccc"),"stroke-width":m(d.width,1)}).css({"pointer-events":"none"}),d.dashStyle&&n.attr({dashstyle:d.dashStyle})));n.show().attr({d:l});e&&!d.width&&n.attr({"stroke-width":this.transA});this.cross.e=a}else this.hideCrosshair();C(this,"afterDrawCrosshair",{e:a,point:f})},hideCrosshair:function(){this.cross&&this.cross.hide();C(this,"afterHideCrosshair")}});return c.Axis=g});K(D,"parts/DateTimeAxis.js",[D["parts/Globals.js"]],function(c){var g=
-c.Axis,I=c.getMagnitude,G=c.normalizeTickInterval,H=c.timeUnits;g.prototype.getTimeTicks=function(){return this.chart.time.getTimeTicks.apply(this.chart.time,arguments)};g.prototype.normalizeTimeTickInterval=function(c,g){var x=g||[["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]],["week",[1,2]],["month",[1,2,3,4,6]],["year",null]];g=x[x.length-1];var w=H[g[0]],y=g[1],t;for(t=0;t<x.length&&!(g=x[t],w=H[g[0]],
-y=g[1],x[t+1]&&c<=(w*y[y.length-1]+H[x[t+1][0]])/2);t++);w===H.year&&c<5*w&&(y=[1,2,5]);c=G(c/w,y,"year"===g[0]?Math.max(I(c/w),1):1);return{unitRange:w,count:c,unitName:g[0]}}});K(D,"parts/LogarithmicAxis.js",[D["parts/Globals.js"],D["parts/Utilities.js"]],function(c,g){var I=g.pick;g=c.Axis;var G=c.getMagnitude,H=c.normalizeTickInterval;g.prototype.getLogTickPositions=function(c,g,x,E){var w=this.options,t=this.len,m=[];E||(this._minorAutoInterval=null);if(.5<=c)c=Math.round(c),m=this.getLinearTickPositions(c,
-g,x);else if(.08<=c){t=Math.floor(g);var p,q;for(w=.3<c?[1,2,4]:.15<c?[1,2,4,6,8]:[1,2,3,4,5,6,7,8,9];t<x+1&&!q;t++){var h=w.length;for(p=0;p<h&&!q;p++){var a=this.log2lin(this.lin2log(t)*w[p]);a>g&&(!E||b<=x)&&void 0!==b&&m.push(b);b>x&&(q=!0);var b=a}}}else g=this.lin2log(g),x=this.lin2log(x),c=E?this.getMinorTickInterval():w.tickInterval,c=I("auto"===c?null:c,this._minorAutoInterval,w.tickPixelInterval/(E?5:1)*(x-g)/((E?t/this.tickPositions.length:t)||1)),c=H(c,null,G(c)),m=this.getLinearTickPositions(c,
-g,x).map(this.log2lin),E||(this._minorAutoInterval=c/5);E||(this.tickInterval=c);return m};g.prototype.log2lin=function(c){return Math.log(c)/Math.LN10};g.prototype.lin2log=function(c){return Math.pow(10,c)}});K(D,"parts/PlotLineOrBand.js",[D["parts/Globals.js"],D["parts/Axis.js"],D["parts/Utilities.js"]],function(c,g,I){var G=I.arrayMax,H=I.arrayMin,y=I.defined,w=I.destroyObjectProperties,x=I.erase,E=I.extend,F=I.objectEach,t=I.pick,m=c.merge;c.PlotLineOrBand=function(c,m){this.axis=c;m&&(this.options=
-m,this.id=m.id)};c.PlotLineOrBand.prototype={render:function(){c.fireEvent(this,"render");var p=this,g=p.axis,h=g.horiz,a=p.options,b=a.label,d=p.label,e=a.to,k=a.from,C=a.value,z=y(k)&&y(e),r=y(C),n=p.svgElem,f=!n,l=[],v=a.color,B=t(a.zIndex,0),A=a.events;l={"class":"highcharts-plot-"+(z?"band ":"line ")+(a.className||"")};var u={},J=g.chart.renderer,L=z?"bands":"lines";g.isLog&&(k=g.log2lin(k),e=g.log2lin(e),C=g.log2lin(C));g.chart.styledMode||(r?(l.stroke=v||"#999999",l["stroke-width"]=t(a.width,
-1),a.dashStyle&&(l.dashstyle=a.dashStyle)):z&&(l.fill=v||"#e6ebf5",a.borderWidth&&(l.stroke=a.borderColor,l["stroke-width"]=a.borderWidth)));u.zIndex=B;L+="-"+B;(v=g.plotLinesAndBandsGroups[L])||(g.plotLinesAndBandsGroups[L]=v=J.g("plot-"+L).attr(u).add());f&&(p.svgElem=n=J.path().attr(l).add(v));if(r)l=g.getPlotLinePath({value:C,lineWidth:n.strokeWidth(),acrossPanes:a.acrossPanes});else if(z)l=g.getPlotBandPath(k,e,a);else return;(f||!n.d)&&l&&l.length?(n.attr({d:l}),A&&F(A,function(a,b){n.on(b,
-function(a){A[b].apply(p,[a])})})):n&&(l?(n.show(!0),n.animate({d:l})):n.d&&(n.hide(),d&&(p.label=d=d.destroy())));b&&(y(b.text)||y(b.formatter))&&l&&l.length&&0<g.width&&0<g.height&&!l.isFlat?(b=m({align:h&&z&&"center",x:h?!z&&4:10,verticalAlign:!h&&z&&"middle",y:h?z?16:10:z?6:-4,rotation:h&&!z&&90},b),this.renderLabel(b,l,z,B)):d&&d.hide();return p},renderLabel:function(c,m,h,a){var b=this.label,d=this.axis.chart.renderer;b||(b={align:c.textAlign||c.align,rotation:c.rotation,"class":"highcharts-plot-"+
-(h?"band":"line")+"-label "+(c.className||"")},b.zIndex=a,a=this.getLabelText(c),this.label=b=d.text(a,0,0,c.useHTML).attr(b).add(),this.axis.chart.styledMode||b.css(c.style));d=m.xBounds||[m[1],m[4],h?m[6]:m[1]];m=m.yBounds||[m[2],m[5],h?m[7]:m[2]];h=H(d);a=H(m);b.align(c,!1,{x:h,y:a,width:G(d)-h,height:G(m)-a});b.show(!0)},getLabelText:function(c){return y(c.formatter)?c.formatter.call(this):c.text},destroy:function(){x(this.axis.plotLinesAndBands,this);delete this.axis;w(this)}};E(g.prototype,
-{getPlotBandPath:function(c,m){var h=this.getPlotLinePath({value:m,force:!0,acrossPanes:this.options.acrossPanes}),a=this.getPlotLinePath({value:c,force:!0,acrossPanes:this.options.acrossPanes}),b=[],d=this.horiz,e=1;c=c<this.min&&m<this.min||c>this.max&&m>this.max;if(a&&h){if(c){var k=a.toString()===h.toString();e=0}for(c=0;c<a.length;c+=6)d&&h[c+1]===a[c+1]?(h[c+1]+=e,h[c+4]+=e):d||h[c+2]!==a[c+2]||(h[c+2]+=e,h[c+5]+=e),b.push("M",a[c+1],a[c+2],"L",a[c+4],a[c+5],h[c+4],h[c+5],h[c+1],h[c+2],"z"),
-b.isFlat=k}return b},addPlotBand:function(c){return this.addPlotBandOrLine(c,"plotBands")},addPlotLine:function(c){return this.addPlotBandOrLine(c,"plotLines")},addPlotBandOrLine:function(m,g){var h=(new c.PlotLineOrBand(this,m)).render(),a=this.userOptions;if(h){if(g){var b=a[g]||[];b.push(m);a[g]=b}this.plotLinesAndBands.push(h)}return h},removePlotBandOrLine:function(c){for(var m=this.plotLinesAndBands,h=this.options,a=this.userOptions,b=m.length;b--;)m[b].id===c&&m[b].destroy();[h.plotLines||
-[],a.plotLines||[],h.plotBands||[],a.plotBands||[]].forEach(function(a){for(b=a.length;b--;)a[b].id===c&&x(a,a[b])})},removePlotBand:function(c){this.removePlotBandOrLine(c)},removePlotLine:function(c){this.removePlotBandOrLine(c)}})});K(D,"parts/Tooltip.js",[D["parts/Globals.js"],D["parts/Utilities.js"]],function(c,g){var I=g.defined,G=g.discardElement,H=g.extend,y=g.isNumber,w=g.isString,x=g.pick,E=g.splat,F=g.syncTimeout;"";var t=c.doc,m=c.format,p=c.merge,q=c.timeUnits;c.Tooltip=function(){this.init.apply(this,
-arguments)};c.Tooltip.prototype={init:function(c,a){this.chart=c;this.options=a;this.crosshairs=[];this.now={x:0,y:0};this.isHidden=!0;this.split=a.split&&!c.inverted;this.shared=a.shared||this.split;this.outside=x(a.outside,!(!c.scrollablePixelsX&&!c.scrollablePixelsY))},cleanSplit:function(c){this.chart.series.forEach(function(a){var b=a&&a.tt;b&&(!b.isActive||c?a.tt=b.destroy():b.isActive=!1)})},applyFilter:function(){var c=this.chart;c.renderer.definition({tagName:"filter",id:"drop-shadow-"+c.index,
-opacity:.5,children:[{tagName:"feGaussianBlur","in":"SourceAlpha",stdDeviation:1},{tagName:"feOffset",dx:1,dy:1},{tagName:"feComponentTransfer",children:[{tagName:"feFuncA",type:"linear",slope:.3}]},{tagName:"feMerge",children:[{tagName:"feMergeNode"},{tagName:"feMergeNode","in":"SourceGraphic"}]}]});c.renderer.definition({tagName:"style",textContent:".highcharts-tooltip-"+c.index+"{filter:url(#drop-shadow-"+c.index+")}"})},getLabel:function(){var h=this,a=this.chart.renderer,b=this.chart.styledMode,
-d=this.options,e="tooltip"+(I(d.className)?" "+d.className:""),k;if(!this.label){this.outside&&(this.container=k=c.doc.createElement("div"),k.className="highcharts-tooltip-container",c.css(k,{position:"absolute",top:"1px",pointerEvents:d.style&&d.style.pointerEvents,zIndex:3}),c.doc.body.appendChild(k),this.renderer=a=new c.Renderer(k,0,0,{},void 0,void 0,a.styledMode));this.split?this.label=a.g(e):(this.label=a.label("",0,0,d.shape||"callout",null,null,d.useHTML,null,e).attr({padding:d.padding,r:d.borderRadius}),
-b||this.label.attr({fill:d.backgroundColor,"stroke-width":d.borderWidth}).css(d.style).shadow(d.shadow));b&&(this.applyFilter(),this.label.addClass("highcharts-tooltip-"+this.chart.index));if(h.outside&&!h.split){var m={x:this.label.xSetter,y:this.label.ySetter};this.label.xSetter=function(a,b){m[b].call(this.label,h.distance);k.style.left=a+"px"};this.label.ySetter=function(a,b){m[b].call(this.label,h.distance);k.style.top=a+"px"}}this.label.attr({zIndex:8}).add()}return this.label},update:function(c){this.destroy();
-p(!0,this.chart.options.tooltip.userOptions,c);this.init(this.chart,p(!0,this.options,c))},destroy:function(){this.label&&(this.label=this.label.destroy());this.split&&this.tt&&(this.cleanSplit(this.chart,!0),this.tt=this.tt.destroy());this.renderer&&(this.renderer=this.renderer.destroy(),G(this.container));c.clearTimeout(this.hideTimer);c.clearTimeout(this.tooltipTimeout)},move:function(h,a,b,d){var e=this,k=e.now,m=!1!==e.options.animation&&!e.isHidden&&(1<Math.abs(h-k.x)||1<Math.abs(a-k.y)),z=
-e.followPointer||1<e.len;H(k,{x:m?(2*k.x+h)/3:h,y:m?(k.y+a)/2:a,anchorX:z?void 0:m?(2*k.anchorX+b)/3:b,anchorY:z?void 0:m?(k.anchorY+d)/2:d});e.getLabel().attr(k);m&&(c.clearTimeout(this.tooltipTimeout),this.tooltipTimeout=setTimeout(function(){e&&e.move(h,a,b,d)},32))},hide:function(h){var a=this;c.clearTimeout(this.hideTimer);h=x(h,this.options.hideDelay,500);this.isHidden||(this.hideTimer=F(function(){a.getLabel()[h?"fadeOut":"hide"]();a.isHidden=!0},h))},getAnchor:function(c,a){var b=this.chart,
-d=b.pointer,e=b.inverted,k=b.plotTop,h=b.plotLeft,m=0,r=0,n,f;c=E(c);this.followPointer&&a?(void 0===a.chartX&&(a=d.normalize(a)),c=[a.chartX-b.plotLeft,a.chartY-k]):c[0].tooltipPos?c=c[0].tooltipPos:(c.forEach(function(a){n=a.series.yAxis;f=a.series.xAxis;m+=a.plotX+(!e&&f?f.left-h:0);r+=(a.plotLow?(a.plotLow+a.plotHigh)/2:a.plotY)+(!e&&n?n.top-k:0)}),m/=c.length,r/=c.length,c=[e?b.plotWidth-r:m,this.shared&&!e&&1<c.length&&a?a.chartY-k:e?b.plotHeight-m:r]);return c.map(Math.round)},getPosition:function(c,
-a,b){var d=this.chart,e=this.distance,k={},h=d.inverted&&b.h||0,m,r=this.outside,n=r?t.documentElement.clientWidth-2*e:d.chartWidth,f=r?Math.max(t.body.scrollHeight,t.documentElement.scrollHeight,t.body.offsetHeight,t.documentElement.offsetHeight,t.documentElement.clientHeight):d.chartHeight,l=d.pointer.getChartPosition(),v=d.containerScaling,B=function(a){return v?a*v.scaleX:a},A=function(a){return v?a*v.scaleY:a},u=function(k){var v="x"===k;return[k,v?n:f,v?c:a].concat(r?[v?B(c):A(a),v?l.left-e+
-B(b.plotX+d.plotLeft):l.top-e+A(b.plotY+d.plotTop),0,v?n:f]:[v?c:a,v?b.plotX+d.plotLeft:b.plotY+d.plotTop,v?d.plotLeft:d.plotTop,v?d.plotLeft+d.plotWidth:d.plotTop+d.plotHeight])},g=u("y"),p=u("x"),q=!this.followPointer&&x(b.ttBelow,!d.inverted===!!b.negative),w=function(a,b,f,l,d,c,n){var v="y"===a?A(e):B(e),u=(f-l)/2,r=l<d-e,m=d+e+l<b,C=d-v-f+u;d=d+v-u;if(q&&m)k[a]=d;else if(!q&&r)k[a]=C;else if(r)k[a]=Math.min(n-l,0>C-h?C:C-h);else if(m)k[a]=Math.max(c,d+h+f>b?d:d+h);else return!1},E=function(a,
-b,f,l,d){var c;d<e||d>b-e?c=!1:k[a]=d<f/2?1:d>b-l/2?b-l-2:d-f/2;return c},M=function(a){var b=g;g=p;p=b;m=a},N=function(){!1!==w.apply(0,g)?!1!==E.apply(0,p)||m||(M(!0),N()):m?k.x=k.y=0:(M(!0),N())};(d.inverted||1<this.len)&&M();N();return k},defaultFormatter:function(c){var a=this.points||E(this);var b=[c.tooltipFooterHeaderFormatter(a[0])];b=b.concat(c.bodyFormatter(a));b.push(c.tooltipFooterHeaderFormatter(a[0],!0));return b},refresh:function(h,a){var b=this.chart,d=this.options,e=h,k={},m=[],
-z=d.formatter||this.defaultFormatter;k=this.shared;var r=b.styledMode;if(d.enabled){c.clearTimeout(this.hideTimer);this.followPointer=E(e)[0].series.tooltipOptions.followPointer;var n=this.getAnchor(e,a);a=n[0];var f=n[1];!k||e.series&&e.series.noSharedTooltip?k=e.getLabelConfig():(b.pointer.applyInactiveState(e),e.forEach(function(a){a.setState("hover");m.push(a.getLabelConfig())}),k={x:e[0].category,y:e[0].y},k.points=m,e=e[0]);this.len=m.length;b=z.call(k,this);z=e.series;this.distance=x(z.tooltipOptions.distance,
-16);!1===b?this.hide():(this.split?this.renderSplit(b,E(h)):(h=this.getLabel(),d.style.width&&!r||h.css({width:this.chart.spacingBox.width}),h.attr({text:b&&b.join?b.join(""):b}),h.removeClass(/highcharts-color-[\d]+/g).addClass("highcharts-color-"+x(e.colorIndex,z.colorIndex)),r||h.attr({stroke:d.borderColor||e.color||z.color||"#666666"}),this.updatePosition({plotX:a,plotY:f,negative:e.negative,ttBelow:e.ttBelow,h:n[2]||0})),this.isHidden&&this.label&&this.label.attr({opacity:1}).show(),this.isHidden=
-!1);c.fireEvent(this,"refresh")}},renderSplit:function(h,a){var b=this,d=[],e=this.chart,k=e.renderer,m=!0,z=this.options,r=0,n,f=this.getLabel(),l=e.plotTop;w(h)&&(h=[!1,h]);h.slice(0,a.length+1).forEach(function(c,v){if(!1!==c&&""!==c){v=a[v-1]||{isHeader:!0,plotX:a[0].plotX,plotY:e.plotHeight};var B=v.series||b,u=B.tt,h=v.series||{},A="highcharts-color-"+x(v.colorIndex,h.colorIndex,"none");u||(u={padding:z.padding,r:z.borderRadius},e.styledMode||(u.fill=z.backgroundColor,u["stroke-width"]=z.borderWidth),
-B.tt=u=k.label(null,null,null,(v.isHeader?z.headerShape:z.shape)||"callout",null,null,z.useHTML).addClass(v.isHeader?"highcharts-tooltip-header ":"highcharts-tooltip-box "+A).attr(u).add(f));u.isActive=!0;u.attr({text:c});e.styledMode||u.css(z.style).shadow(z.shadow).attr({stroke:z.borderColor||v.color||h.color||"#333333"});c=u.getBBox();A=c.width+u.strokeWidth();v.isHeader?(r=c.height,e.xAxis[0].opposite&&(n=!0,l-=r),c=Math.max(0,Math.min(v.plotX+e.plotLeft-A/2,e.chartWidth+(e.scrollablePixelsX?
-e.scrollablePixelsX-e.marginRight:0)-A))):c=v.plotX+e.plotLeft-x(z.distance,16)-A;0>c&&(m=!1);v.isHeader?h=n?-r:e.plotHeight+r:(h=h.yAxis,h=h.pos-l+Math.max(0,Math.min(v.plotY||0,h.len)));d.push({target:h,rank:v.isHeader?1:0,size:B.tt.getBBox().height+1,point:v,x:c,tt:u})}});this.cleanSplit();z.positioner&&d.forEach(function(a){var f=z.positioner.call(b,a.tt.getBBox().width,a.size,a.point);a.x=f.x;a.align=0;a.target=f.y;a.rank=x(f.rank,a.rank)});c.distribute(d,e.plotHeight+r);d.forEach(function(a){var f=
-a.point,d=f.series,c=d&&d.yAxis;a.tt.attr({visibility:void 0===a.pos?"hidden":"inherit",x:m||f.isHeader||z.positioner?a.x:f.plotX+e.plotLeft+b.distance,y:a.pos+l,anchorX:f.isHeader?f.plotX+e.plotLeft:f.plotX+d.xAxis.pos,anchorY:f.isHeader?e.plotTop+e.plotHeight/2:c.pos+Math.max(0,Math.min(f.plotY,c.len))})});var v=b.container;h=b.renderer;if(b.outside&&v&&h){var B=e.pointer.getChartPosition();v.style.left=B.left+"px";v.style.top=B.top+"px";v=f.getBBox();h.setSize(v.width+v.x,v.height+v.y,!1)}},updatePosition:function(h){var a=
-this.chart,b=a.pointer,d=this.getLabel(),e=h.plotX+a.plotLeft,k=h.plotY+a.plotTop;b=b.getChartPosition();h=(this.options.positioner||this.getPosition).call(this,d.width,d.height,h);if(this.outside){var m=(this.options.borderWidth||0)+2*this.distance;this.renderer.setSize(d.width+m,d.height+m,!1);if(a=a.containerScaling)c.css(this.container,{transform:"scale("+a.scaleX+", "+a.scaleY+")"}),e*=a.scaleX,k*=a.scaleY;e+=b.left-h.x;k+=b.top-h.y}this.move(Math.round(h.x),Math.round(h.y||0),e,k)},getDateFormat:function(c,
-a,b,d){var e=this.chart.time,k=e.dateFormat("%m-%d %H:%M:%S.%L",a),h={millisecond:15,second:12,minute:9,hour:6,day:3},m="millisecond";for(r in q){if(c===q.week&&+e.dateFormat("%w",a)===b&&"00:00:00.000"===k.substr(6)){var r="week";break}if(q[r]>c){r=m;break}if(h[r]&&k.substr(h[r])!=="01-01 00:00:00.000".substr(h[r]))break;"week"!==r&&(m=r)}if(r)var n=e.resolveDTLFormat(d[r]).main;return n},getXDateFormat:function(c,a,b){a=a.dateTimeLabelFormats;var d=b&&b.closestPointRange;return(d?this.getDateFormat(d,
-c.x,b.options.startOfWeek,a):a.day)||a.year},tooltipFooterHeaderFormatter:function(h,a){var b=a?"footer":"header",d=h.series,e=d.tooltipOptions,k=e.xDateFormat,C=d.xAxis,z=C&&"datetime"===C.options.type&&y(h.key),r=e[b+"Format"];a={isFooter:a,labelConfig:h};c.fireEvent(this,"headerFormatter",a,function(a){z&&!k&&(k=this.getXDateFormat(h,e,C));z&&k&&(h.point&&h.point.tooltipDateKeys||["key"]).forEach(function(a){r=r.replace("{point."+a+"}","{point."+a+":"+k+"}")});d.chart.styledMode&&(r=this.styledModeFormat(r));
-a.text=m(r,{point:h,series:d},this.chart.time)});return a.text},bodyFormatter:function(c){return c.map(function(a){var b=a.series.tooltipOptions;return(b[(a.point.formatPrefix||"point")+"Formatter"]||a.point.tooltipFormatter).call(a.point,b[(a.point.formatPrefix||"point")+"Format"]||"")})},styledModeFormat:function(c){return c.replace('style="font-size: 10px"','class="highcharts-header"').replace(/style="color:{(point|series)\.color}"/g,'class="highcharts-color-{$1.colorIndex}"')}}});K(D,"parts/Pointer.js",
-[D["parts/Globals.js"],D["parts/Utilities.js"]],function(c,g){var I=g.attr,G=g.defined,H=g.extend,y=g.isNumber,w=g.isObject,x=g.objectEach,E=g.pick,F=g.splat,t=c.addEvent,m=c.charts,p=c.color,q=c.css,h=c.find,a=c.fireEvent,b=c.offset,d=c.Tooltip;c.Pointer=function(a,b){this.init(a,b)};c.Pointer.prototype={init:function(a,b){this.options=b;this.chart=a;this.runChartClick=b.chart.events&&!!b.chart.events.click;this.pinchDown=[];this.lastValidTouch={};d&&(a.tooltip=new d(a,b.tooltip),this.followTouchMove=
-E(b.tooltip.followTouchMove,!0));this.setDOMEvents()},zoomOption:function(a){var b=this.chart,d=b.options.chart,e=d.zoomType||"";b=b.inverted;/touch/.test(a.type)&&(e=E(d.pinchType,e));this.zoomX=a=/x/.test(e);this.zoomY=e=/y/.test(e);this.zoomHor=a&&!b||e&&b;this.zoomVert=e&&!b||a&&b;this.hasZoom=a||e},getChartPosition:function(){return this.chartPosition||(this.chartPosition=b(this.chart.container))},normalize:function(a,b){var d=a.touches?a.touches.length?a.touches.item(0):a.changedTouches[0]:
-a;b||(b=this.getChartPosition());var e=d.pageX-b.left;b=d.pageY-b.top;if(d=this.chart.containerScaling)e/=d.scaleX,b/=d.scaleY;return H(a,{chartX:Math.round(e),chartY:Math.round(b)})},getCoordinates:function(a){var b={xAxis:[],yAxis:[]};this.chart.axes.forEach(function(d){b[d.isXAxis?"xAxis":"yAxis"].push({axis:d,value:d.toValue(a[d.horiz?"chartX":"chartY"])})});return b},findNearestKDPoint:function(a,b,d){var e;a.forEach(function(a){var c=!(a.noSharedTooltip&&b)&&0>a.options.findNearestPointBy.indexOf("y");
-a=a.searchPoint(d,c);if((c=w(a,!0))&&!(c=!w(e,!0))){c=e.distX-a.distX;var f=e.dist-a.dist,l=(a.series.group&&a.series.group.zIndex)-(e.series.group&&e.series.group.zIndex);c=0<(0!==c&&b?c:0!==f?f:0!==l?l:e.series.index>a.series.index?-1:1)}c&&(e=a)});return e},getPointFromEvent:function(a){a=a.target;for(var b;a&&!b;)b=a.point,a=a.parentNode;return b},getChartCoordinatesFromPoint:function(a,b){var d=a.series,e=d.xAxis;d=d.yAxis;var c=E(a.clientX,a.plotX),k=a.shapeArgs;if(e&&d)return b?{chartX:e.len+
-e.pos-c,chartY:d.len+d.pos-a.plotY}:{chartX:c+e.pos,chartY:a.plotY+d.pos};if(k&&k.x&&k.y)return{chartX:k.x,chartY:k.y}},getHoverData:function(a,b,d,c,m,n){var f,l=[];c=!(!c||!a);var e=b&&!b.stickyTracking?[b]:d.filter(function(a){return a.visible&&!(!m&&a.directTouch)&&E(a.options.enableMouseTracking,!0)&&a.stickyTracking});b=(f=c||!n?a:this.findNearestKDPoint(e,m,n))&&f.series;f&&(m&&!b.noSharedTooltip?(e=d.filter(function(a){return a.visible&&!(!m&&a.directTouch)&&E(a.options.enableMouseTracking,
-!0)&&!a.noSharedTooltip}),e.forEach(function(a){var b=h(a.points,function(a){return a.x===f.x&&!a.isNull});w(b)&&(a.chart.isBoosting&&(b=a.getPoint(b)),l.push(b))})):l.push(f));return{hoverPoint:f,hoverSeries:b,hoverPoints:l}},runPointActions:function(a,b){var d=this.chart,e=d.tooltip&&d.tooltip.options.enabled?d.tooltip:void 0,k=e?e.shared:!1,n=b||d.hoverPoint,f=n&&n.series||d.hoverSeries;f=this.getHoverData(n,f,d.series,(!a||"touchmove"!==a.type)&&(!!b||f&&f.directTouch&&this.isDirectTouch),k,a);
-n=f.hoverPoint;var l=f.hoverPoints;b=(f=f.hoverSeries)&&f.tooltipOptions.followPointer;k=k&&f&&!f.noSharedTooltip;if(n&&(n!==d.hoverPoint||e&&e.isHidden)){(d.hoverPoints||[]).forEach(function(a){-1===l.indexOf(a)&&a.setState()});if(d.hoverSeries!==f)f.onMouseOver();this.applyInactiveState(l);(l||[]).forEach(function(a){a.setState("hover")});d.hoverPoint&&d.hoverPoint.firePointEvent("mouseOut");if(!n.series)return;n.firePointEvent("mouseOver");d.hoverPoints=l;d.hoverPoint=n;e&&e.refresh(k?l:n,a)}else b&&
-e&&!e.isHidden&&(n=e.getAnchor([{}],a),e.updatePosition({plotX:n[0],plotY:n[1]}));this.unDocMouseMove||(this.unDocMouseMove=t(d.container.ownerDocument,"mousemove",function(a){var b=m[c.hoverChartIndex];if(b)b.pointer.onDocumentMouseMove(a)}));d.axes.forEach(function(b){var f=E(b.crosshair.snap,!0),d=f?c.find(l,function(a){return a.series[b.coll]===b}):void 0;d||!f?b.drawCrosshair(a,d):b.hideCrosshair()})},applyInactiveState:function(a){var b=[],d;(a||[]).forEach(function(a){d=a.series;b.push(d);
-d.linkedParent&&b.push(d.linkedParent);d.linkedSeries&&(b=b.concat(d.linkedSeries));d.navigatorSeries&&b.push(d.navigatorSeries)});this.chart.series.forEach(function(a){-1===b.indexOf(a)?a.setState("inactive",!0):a.options.inactiveOtherPoints&&a.setAllPointsToState("inactive")})},reset:function(a,b){var d=this.chart,c=d.hoverSeries,e=d.hoverPoint,k=d.hoverPoints,f=d.tooltip,l=f&&f.shared?k:e;a&&l&&F(l).forEach(function(b){b.series.isCartesian&&void 0===b.plotX&&(a=!1)});if(a)f&&l&&F(l).length&&(f.refresh(l),
-f.shared&&k?k.forEach(function(a){a.setState(a.state,!0);a.series.isCartesian&&(a.series.xAxis.crosshair&&a.series.xAxis.drawCrosshair(null,a),a.series.yAxis.crosshair&&a.series.yAxis.drawCrosshair(null,a))}):e&&(e.setState(e.state,!0),d.axes.forEach(function(a){a.crosshair&&a.drawCrosshair(null,e)})));else{if(e)e.onMouseOut();k&&k.forEach(function(a){a.setState()});if(c)c.onMouseOut();f&&f.hide(b);this.unDocMouseMove&&(this.unDocMouseMove=this.unDocMouseMove());d.axes.forEach(function(a){a.hideCrosshair()});
-this.hoverX=d.hoverPoints=d.hoverPoint=null}},scaleGroups:function(a,b){var d=this.chart,e;d.series.forEach(function(c){e=a||c.getPlotBox();c.xAxis&&c.xAxis.zoomEnabled&&c.group&&(c.group.attr(e),c.markerGroup&&(c.markerGroup.attr(e),c.markerGroup.clip(b?d.clipRect:null)),c.dataLabelsGroup&&c.dataLabelsGroup.attr(e))});d.clipRect.attr(b||d.clipBox)},dragStart:function(a){var b=this.chart;b.mouseIsDown=a.type;b.cancelClick=!1;b.mouseDownX=this.mouseDownX=a.chartX;b.mouseDownY=this.mouseDownY=a.chartY},
-drag:function(a){var b=this.chart,d=b.options.chart,c=a.chartX,e=a.chartY,n=this.zoomHor,f=this.zoomVert,l=b.plotLeft,v=b.plotTop,B=b.plotWidth,h=b.plotHeight,u=this.selectionMarker,m=this.mouseDownX,g=this.mouseDownY,q=d.panKey&&a[d.panKey+"Key"];if(!u||!u.touch)if(c<l?c=l:c>l+B&&(c=l+B),e<v?e=v:e>v+h&&(e=v+h),this.hasDragged=Math.sqrt(Math.pow(m-c,2)+Math.pow(g-e,2)),10<this.hasDragged){var t=b.isInsidePlot(m-l,g-v);b.hasCartesianSeries&&(this.zoomX||this.zoomY)&&t&&!q&&!u&&(this.selectionMarker=
-u=b.renderer.rect(l,v,n?1:B,f?1:h,0).attr({"class":"highcharts-selection-marker",zIndex:7}).add(),b.styledMode||u.attr({fill:d.selectionMarkerFill||p("#335cad").setOpacity(.25).get()}));u&&n&&(c-=m,u.attr({width:Math.abs(c),x:(0<c?0:c)+m}));u&&f&&(c=e-g,u.attr({height:Math.abs(c),y:(0<c?0:c)+g}));t&&!u&&d.panning&&b.pan(a,d.panning)}},drop:function(b){var d=this,c=this.chart,e=this.hasPinched;if(this.selectionMarker){var h={originalEvent:b,xAxis:[],yAxis:[]},n=this.selectionMarker,f=n.attr?n.attr("x"):
-n.x,l=n.attr?n.attr("y"):n.y,v=n.attr?n.attr("width"):n.width,B=n.attr?n.attr("height"):n.height,m;if(this.hasDragged||e)c.axes.forEach(function(a){if(a.zoomEnabled&&G(a.min)&&(e||d[{xAxis:"zoomX",yAxis:"zoomY"}[a.coll]])){var c=a.horiz,k="touchend"===b.type?a.minPixelPadding:0,n=a.toValue((c?f:l)+k);c=a.toValue((c?f+v:l+B)-k);h[a.coll].push({axis:a,min:Math.min(n,c),max:Math.max(n,c)});m=!0}}),m&&a(c,"selection",h,function(a){c.zoom(H(a,e?{animation:!1}:null))});y(c.index)&&(this.selectionMarker=
-this.selectionMarker.destroy());e&&this.scaleGroups()}c&&y(c.index)&&(q(c.container,{cursor:c._cursor}),c.cancelClick=10<this.hasDragged,c.mouseIsDown=this.hasDragged=this.hasPinched=!1,this.pinchDown=[])},onContainerMouseDown:function(a){a=this.normalize(a);2!==a.button&&(this.zoomOption(a),a.preventDefault&&a.preventDefault(),this.dragStart(a))},onDocumentMouseUp:function(a){m[c.hoverChartIndex]&&m[c.hoverChartIndex].pointer.drop(a)},onDocumentMouseMove:function(a){var b=this.chart,d=this.chartPosition;
-a=this.normalize(a,d);!d||this.inClass(a.target,"highcharts-tracker")||b.isInsidePlot(a.chartX-b.plotLeft,a.chartY-b.plotTop)||this.reset()},onContainerMouseLeave:function(a){var b=m[c.hoverChartIndex];b&&(a.relatedTarget||a.toElement)&&(b.pointer.reset(),b.pointer.chartPosition=void 0)},onContainerMouseMove:function(a){var b=this.chart;G(c.hoverChartIndex)&&m[c.hoverChartIndex]&&m[c.hoverChartIndex].mouseIsDown||(c.hoverChartIndex=b.index);a=this.normalize(a);a.preventDefault||(a.returnValue=!1);
-"mousedown"===b.mouseIsDown&&this.drag(a);!this.inClass(a.target,"highcharts-tracker")&&!b.isInsidePlot(a.chartX-b.plotLeft,a.chartY-b.plotTop)||b.openMenu||this.runPointActions(a)},inClass:function(a,b){for(var d;a;){if(d=I(a,"class")){if(-1!==d.indexOf(b))return!0;if(-1!==d.indexOf("highcharts-container"))return!1}a=a.parentNode}},onTrackerMouseOut:function(a){var b=this.chart.hoverSeries;a=a.relatedTarget||a.toElement;this.isDirectTouch=!1;if(!(!b||!a||b.stickyTracking||this.inClass(a,"highcharts-tooltip")||
-this.inClass(a,"highcharts-series-"+b.index)&&this.inClass(a,"highcharts-tracker")))b.onMouseOut()},onContainerClick:function(b){var d=this.chart,c=d.hoverPoint,e=d.plotLeft,h=d.plotTop;b=this.normalize(b);d.cancelClick||(c&&this.inClass(b.target,"highcharts-tracker")?(a(c.series,"click",H(b,{point:c})),d.hoverPoint&&c.firePointEvent("click",b)):(H(b,this.getCoordinates(b)),d.isInsidePlot(b.chartX-e,b.chartY-h)&&a(d,"click",b)))},setDOMEvents:function(){var a=this,b=a.chart.container,d=b.ownerDocument;
-b.onmousedown=function(b){a.onContainerMouseDown(b)};b.onmousemove=function(b){a.onContainerMouseMove(b)};b.onclick=function(b){a.onContainerClick(b)};this.unbindContainerMouseLeave=t(b,"mouseleave",a.onContainerMouseLeave);c.unbindDocumentMouseUp||(c.unbindDocumentMouseUp=t(d,"mouseup",a.onDocumentMouseUp));c.hasTouch&&(t(b,"touchstart",function(b){a.onContainerTouchStart(b)}),t(b,"touchmove",function(b){a.onContainerTouchMove(b)}),c.unbindDocumentTouchEnd||(c.unbindDocumentTouchEnd=t(d,"touchend",
-a.onDocumentTouchEnd)))},destroy:function(){var a=this;a.unDocMouseMove&&a.unDocMouseMove();this.unbindContainerMouseLeave();c.chartCount||(c.unbindDocumentMouseUp&&(c.unbindDocumentMouseUp=c.unbindDocumentMouseUp()),c.unbindDocumentTouchEnd&&(c.unbindDocumentTouchEnd=c.unbindDocumentTouchEnd()));clearInterval(a.tooltipTimeout);x(a,function(b,d){a[d]=null})}}});K(D,"parts/TouchPointer.js",[D["parts/Globals.js"],D["parts/Utilities.js"]],function(c,g){var I=g.extend,G=g.pick,H=c.charts,y=c.noop;I(c.Pointer.prototype,
-{pinchTranslate:function(c,g,E,y,t,m){this.zoomHor&&this.pinchTranslateDirection(!0,c,g,E,y,t,m);this.zoomVert&&this.pinchTranslateDirection(!1,c,g,E,y,t,m)},pinchTranslateDirection:function(c,g,E,y,t,m,p,q){var h=this.chart,a=c?"x":"y",b=c?"X":"Y",d="chart"+b,e=c?"width":"height",k=h["plot"+(c?"Left":"Top")],C,z,r=q||1,n=h.inverted,f=h.bounds[c?"h":"v"],l=1===g.length,v=g[0][d],B=E[0][d],A=!l&&g[1][d],u=!l&&E[1][d];E=function(){!l&&20<Math.abs(v-A)&&(r=q||Math.abs(B-u)/Math.abs(v-A));z=(k-B)/r+v;
-C=h["plot"+(c?"Width":"Height")]/r};E();g=z;if(g<f.min){g=f.min;var J=!0}else g+C>f.max&&(g=f.max-C,J=!0);J?(B-=.8*(B-p[a][0]),l||(u-=.8*(u-p[a][1])),E()):p[a]=[B,u];n||(m[a]=z-k,m[e]=C);m=n?1/r:r;t[e]=C;t[a]=g;y[n?c?"scaleY":"scaleX":"scale"+b]=r;y["translate"+b]=m*k+(B-m*v)},pinch:function(c){var g=this,w=g.chart,F=g.pinchDown,t=c.touches,m=t.length,p=g.lastValidTouch,q=g.hasZoom,h=g.selectionMarker,a={},b=1===m&&(g.inClass(c.target,"highcharts-tracker")&&w.runTrackerClick||g.runChartClick),d={};
-1<m&&(g.initiated=!0);q&&g.initiated&&!b&&c.preventDefault();[].map.call(t,function(a){return g.normalize(a)});"touchstart"===c.type?([].forEach.call(t,function(a,b){F[b]={chartX:a.chartX,chartY:a.chartY}}),p.x=[F[0].chartX,F[1]&&F[1].chartX],p.y=[F[0].chartY,F[1]&&F[1].chartY],w.axes.forEach(function(a){if(a.zoomEnabled){var b=w.bounds[a.horiz?"h":"v"],d=a.minPixelPadding,c=a.toPixels(Math.min(G(a.options.min,a.dataMin),a.dataMin)),e=a.toPixels(Math.max(G(a.options.max,a.dataMax),a.dataMax)),n=Math.max(c,
-e);b.min=Math.min(a.pos,Math.min(c,e)-d);b.max=Math.max(a.pos+a.len,n+d)}}),g.res=!0):g.followTouchMove&&1===m?this.runPointActions(g.normalize(c)):F.length&&(h||(g.selectionMarker=h=I({destroy:y,touch:!0},w.plotBox)),g.pinchTranslate(F,t,a,h,d,p),g.hasPinched=q,g.scaleGroups(a,d),g.res&&(g.res=!1,this.reset(!1,0)))},touch:function(g,x){var w=this.chart,y;if(w.index!==c.hoverChartIndex)this.onContainerMouseLeave({relatedTarget:!0});c.hoverChartIndex=w.index;if(1===g.touches.length)if(g=this.normalize(g),
-(y=w.isInsidePlot(g.chartX-w.plotLeft,g.chartY-w.plotTop))&&!w.openMenu){x&&this.runPointActions(g);if("touchmove"===g.type){x=this.pinchDown;var t=x[0]?4<=Math.sqrt(Math.pow(x[0].chartX-g.chartX,2)+Math.pow(x[0].chartY-g.chartY,2)):!1}G(t,!0)&&this.pinch(g)}else x&&this.reset();else 2===g.touches.length&&this.pinch(g)},onContainerTouchStart:function(c){this.zoomOption(c);this.touch(c,!0)},onContainerTouchMove:function(c){this.touch(c)},onDocumentTouchEnd:function(g){H[c.hoverChartIndex]&&H[c.hoverChartIndex].pointer.drop(g)}})});
-K(D,"parts/MSPointer.js",[D["parts/Globals.js"],D["parts/Utilities.js"]],function(c,g){var I=g.extend,G=g.objectEach,H=c.addEvent,y=c.charts,w=c.css,x=c.doc,E=c.noop;g=c.Pointer;var F=c.removeEvent,t=c.win,m=c.wrap;if(!c.hasTouch&&(t.PointerEvent||t.MSPointerEvent)){var p={},q=!!t.PointerEvent,h=function(){var a=[];a.item=function(a){return this[a]};G(p,function(b){a.push({pageX:b.pageX,pageY:b.pageY,target:b.target})});return a},a=function(a,d,e,k){"touch"!==a.pointerType&&a.pointerType!==a.MSPOINTER_TYPE_TOUCH||
-!y[c.hoverChartIndex]||(k(a),k=y[c.hoverChartIndex].pointer,k[d]({type:e,target:a.currentTarget,preventDefault:E,touches:h()}))};I(g.prototype,{onContainerPointerDown:function(b){a(b,"onContainerTouchStart","touchstart",function(a){p[a.pointerId]={pageX:a.pageX,pageY:a.pageY,target:a.currentTarget}})},onContainerPointerMove:function(b){a(b,"onContainerTouchMove","touchmove",function(a){p[a.pointerId]={pageX:a.pageX,pageY:a.pageY};p[a.pointerId].target||(p[a.pointerId].target=a.currentTarget)})},onDocumentPointerUp:function(b){a(b,
-"onDocumentTouchEnd","touchend",function(a){delete p[a.pointerId]})},batchMSEvents:function(a){a(this.chart.container,q?"pointerdown":"MSPointerDown",this.onContainerPointerDown);a(this.chart.container,q?"pointermove":"MSPointerMove",this.onContainerPointerMove);a(x,q?"pointerup":"MSPointerUp",this.onDocumentPointerUp)}});m(g.prototype,"init",function(a,d,c){a.call(this,d,c);this.hasZoom&&w(d.container,{"-ms-touch-action":"none","touch-action":"none"})});m(g.prototype,"setDOMEvents",function(a){a.apply(this);
-(this.hasZoom||this.followTouchMove)&&this.batchMSEvents(H)});m(g.prototype,"destroy",function(a){this.batchMSEvents(F);a.call(this)})}});K(D,"parts/Legend.js",[D["parts/Globals.js"],D["parts/Utilities.js"]],function(c,g){var I=g.defined,G=g.discardElement,H=g.isNumber,y=g.pick,w=g.setAnimation,x=c.addEvent,E=c.css,F=c.fireEvent;g=c.isFirefox;var t=c.marginNames,m=c.merge,p=c.stableSort,q=c.win,h=c.wrap;c.Legend=function(a,b){this.init(a,b)};c.Legend.prototype={init:function(a,b){this.chart=a;this.setOptions(b);
-b.enabled&&(this.render(),x(this.chart,"endResize",function(){this.legend.positionCheckboxes()}),this.proximate?this.unchartrender=x(this.chart,"render",function(){this.legend.proximatePositions();this.legend.positionItems()}):this.unchartrender&&this.unchartrender())},setOptions:function(a){var b=y(a.padding,8);this.options=a;this.chart.styledMode||(this.itemStyle=a.itemStyle,this.itemHiddenStyle=m(this.itemStyle,a.itemHiddenStyle));this.itemMarginTop=a.itemMarginTop||0;this.itemMarginBottom=a.itemMarginBottom||
-0;this.padding=b;this.initialItemY=b-5;this.symbolWidth=y(a.symbolWidth,16);this.pages=[];this.proximate="proximate"===a.layout&&!this.chart.inverted},update:function(a,b){var d=this.chart;this.setOptions(m(!0,this.options,a));this.destroy();d.isDirtyLegend=d.isDirtyBox=!0;y(b,!0)&&d.redraw();F(this,"afterUpdate")},colorizeItem:function(a,b){a.legendGroup[b?"removeClass":"addClass"]("highcharts-legend-item-hidden");if(!this.chart.styledMode){var d=this.options,c=a.legendItem,k=a.legendLine,h=a.legendSymbol,
-m=this.itemHiddenStyle.color;d=b?d.itemStyle.color:m;var r=b?a.color||m:m,n=a.options&&a.options.marker,f={fill:r};c&&c.css({fill:d,color:d});k&&k.attr({stroke:r});h&&(n&&h.isMarker&&(f=a.pointAttribs(),b||(f.stroke=f.fill=m)),h.attr(f))}F(this,"afterColorizeItem",{item:a,visible:b})},positionItems:function(){this.allItems.forEach(this.positionItem,this);this.chart.isResizing||this.positionCheckboxes()},positionItem:function(a){var b=this.options,d=b.symbolPadding;b=!b.rtl;var c=a._legendItemPos,
-k=c[0];c=c[1];var h=a.checkbox;if((a=a.legendGroup)&&a.element)a[I(a.translateY)?"animate":"attr"]({translateX:b?k:this.legendWidth-k-2*d-4,translateY:c});h&&(h.x=k,h.y=c)},destroyItem:function(a){var b=a.checkbox;["legendItem","legendLine","legendSymbol","legendGroup"].forEach(function(b){a[b]&&(a[b]=a[b].destroy())});b&&G(a.checkbox)},destroy:function(){function a(a){this[a]&&(this[a]=this[a].destroy())}this.getAllItems().forEach(function(b){["legendItem","legendGroup"].forEach(a,b)});"clipRect up down pager nav box title group".split(" ").forEach(a,
-this);this.display=null},positionCheckboxes:function(){var a=this.group&&this.group.alignAttr,b=this.clipHeight||this.legendHeight,d=this.titleHeight;if(a){var c=a.translateY;this.allItems.forEach(function(e){var k=e.checkbox;if(k){var h=c+d+k.y+(this.scrollOffset||0)+3;E(k,{left:a.translateX+e.checkboxOffset+k.x-20+"px",top:h+"px",display:this.proximate||h>c-6&&h<c+b-6?"":"none"})}},this)}},renderTitle:function(){var a=this.options,b=this.padding,d=a.title,c=0;d.text&&(this.title||(this.title=this.chart.renderer.label(d.text,
-b-3,b-4,null,null,null,a.useHTML,null,"legend-title").attr({zIndex:1}),this.chart.styledMode||this.title.css(d.style),this.title.add(this.group)),d.width||this.title.css({width:this.maxLegendWidth+"px"}),a=this.title.getBBox(),c=a.height,this.offsetWidth=a.width,this.contentGroup.attr({translateY:c}));this.titleHeight=c},setText:function(a){var b=this.options;a.legendItem.attr({text:b.labelFormat?c.format(b.labelFormat,a,this.chart.time):b.labelFormatter.call(a)})},renderItem:function(a){var b=this.chart,
-d=b.renderer,c=this.options,k=this.symbolWidth,h=c.symbolPadding,g=this.itemStyle,r=this.itemHiddenStyle,n="horizontal"===c.layout?y(c.itemDistance,20):0,f=!c.rtl,l=a.legendItem,v=!a.series,B=!v&&a.series.drawLegendSymbol?a.series:a,A=B.options;A=this.createCheckboxForItem&&A&&A.showCheckbox;n=k+h+n+(A?20:0);var u=c.useHTML,p=a.options.className;l||(a.legendGroup=d.g("legend-item").addClass("highcharts-"+B.type+"-series highcharts-color-"+a.colorIndex+(p?" "+p:"")+(v?" highcharts-series-"+a.index:
-"")).attr({zIndex:1}).add(this.scrollGroup),a.legendItem=l=d.text("",f?k+h:-h,this.baseline||0,u),b.styledMode||l.css(m(a.visible?g:r)),l.attr({align:f?"left":"right",zIndex:2}).add(a.legendGroup),this.baseline||(this.fontMetrics=d.fontMetrics(b.styledMode?12:g.fontSize,l),this.baseline=this.fontMetrics.f+3+this.itemMarginTop,l.attr("y",this.baseline)),this.symbolHeight=c.symbolHeight||this.fontMetrics.f,B.drawLegendSymbol(this,a),this.setItemEvents&&this.setItemEvents(a,l,u));A&&!a.checkbox&&this.createCheckboxForItem(a);
-this.colorizeItem(a,a.visible);!b.styledMode&&g.width||l.css({width:(c.itemWidth||this.widthOption||b.spacingBox.width)-n});this.setText(a);b=l.getBBox();a.itemWidth=a.checkboxOffset=c.itemWidth||a.legendItemWidth||b.width+n;this.maxItemWidth=Math.max(this.maxItemWidth,a.itemWidth);this.totalItemWidth+=a.itemWidth;this.itemHeight=a.itemHeight=Math.round(a.legendItemHeight||b.height||this.symbolHeight)},layoutItem:function(a){var b=this.options,d=this.padding,c="horizontal"===b.layout,k=a.itemHeight,
-h=this.itemMarginBottom,m=this.itemMarginTop,r=c?y(b.itemDistance,20):0,n=this.maxLegendWidth;b=b.alignColumns&&this.totalItemWidth>n?this.maxItemWidth:a.itemWidth;c&&this.itemX-d+b>n&&(this.itemX=d,this.lastLineHeight&&(this.itemY+=m+this.lastLineHeight+h),this.lastLineHeight=0);this.lastItemY=m+this.itemY+h;this.lastLineHeight=Math.max(k,this.lastLineHeight);a._legendItemPos=[this.itemX,this.itemY];c?this.itemX+=b:(this.itemY+=m+k+h,this.lastLineHeight=k);this.offsetWidth=this.widthOption||Math.max((c?
-this.itemX-d-(a.checkbox?0:r):b)+d,this.offsetWidth)},getAllItems:function(){var a=[];this.chart.series.forEach(function(b){var d=b&&b.options;b&&y(d.showInLegend,I(d.linkedTo)?!1:void 0,!0)&&(a=a.concat(b.legendItems||("point"===d.legendType?b.data:b)))});F(this,"afterGetAllItems",{allItems:a});return a},getAlignment:function(){var a=this.options;return this.proximate?a.align.charAt(0)+"tv":a.floating?"":a.align.charAt(0)+a.verticalAlign.charAt(0)+a.layout.charAt(0)},adjustMargins:function(a,b){var d=
-this.chart,c=this.options,k=this.getAlignment();k&&[/(lth|ct|rth)/,/(rtv|rm|rbv)/,/(rbh|cb|lbh)/,/(lbv|lm|ltv)/].forEach(function(e,h){e.test(k)&&!I(a[h])&&(d[t[h]]=Math.max(d[t[h]],d.legend[(h+1)%2?"legendHeight":"legendWidth"]+[1,-1,-1,1][h]*c[h%2?"x":"y"]+y(c.margin,12)+b[h]+(d.titleOffset[h]||0)))})},proximatePositions:function(){var a=this.chart,b=[],d="left"===this.options.align;this.allItems.forEach(function(e){var k=d;if(e.yAxis&&e.points){e.xAxis.options.reversed&&(k=!k);var h=c.find(k?e.points:
-e.points.slice(0).reverse(),function(a){return H(a.plotY)});k=this.itemMarginTop+e.legendItem.getBBox().height+this.itemMarginBottom;var m=e.yAxis.top-a.plotTop;e.visible?(h=h?h.plotY:e.yAxis.height,h+=m-.3*k):h=m+e.yAxis.height;b.push({target:h,size:k,item:e})}},this);c.distribute(b,a.plotHeight);b.forEach(function(b){b.item._legendItemPos[1]=a.plotTop-a.spacing[0]+b.pos})},render:function(){var a=this.chart,b=a.renderer,d=this.group,e,k=this.box,h=this.options,g=this.padding;this.itemX=g;this.itemY=
-this.initialItemY;this.lastItemY=this.offsetWidth=0;this.widthOption=c.relativeLength(h.width,a.spacingBox.width-g);var r=a.spacingBox.width-2*g-h.x;-1<["rm","lm"].indexOf(this.getAlignment().substring(0,2))&&(r/=2);this.maxLegendWidth=this.widthOption||r;d||(this.group=d=b.g("legend").attr({zIndex:7}).add(),this.contentGroup=b.g().attr({zIndex:1}).add(d),this.scrollGroup=b.g().add(this.contentGroup));this.renderTitle();r=this.getAllItems();p(r,function(a,b){return(a.options&&a.options.legendIndex||
-0)-(b.options&&b.options.legendIndex||0)});h.reversed&&r.reverse();this.allItems=r;this.display=e=!!r.length;this.itemHeight=this.totalItemWidth=this.maxItemWidth=this.lastLineHeight=0;r.forEach(this.renderItem,this);r.forEach(this.layoutItem,this);r=(this.widthOption||this.offsetWidth)+g;var n=this.lastItemY+this.lastLineHeight+this.titleHeight;n=this.handleOverflow(n);n+=g;k||(this.box=k=b.rect().addClass("highcharts-legend-box").attr({r:h.borderRadius}).add(d),k.isNew=!0);a.styledMode||k.attr({stroke:h.borderColor,
-"stroke-width":h.borderWidth||0,fill:h.backgroundColor||"none"}).shadow(h.shadow);0<r&&0<n&&(k[k.isNew?"attr":"animate"](k.crisp.call({},{x:0,y:0,width:r,height:n},k.strokeWidth())),k.isNew=!1);k[e?"show":"hide"]();a.styledMode&&"none"===d.getStyle("display")&&(r=n=0);this.legendWidth=r;this.legendHeight=n;e&&(b=a.spacingBox,k=b.y,/(lth|ct|rth)/.test(this.getAlignment())&&0<a.titleOffset[0]?k+=a.titleOffset[0]:/(lbh|cb|rbh)/.test(this.getAlignment())&&0<a.titleOffset[2]&&(k-=a.titleOffset[2]),k!==
-b.y&&(b=m(b,{y:k})),d.align(m(h,{width:r,height:n,verticalAlign:this.proximate?"top":h.verticalAlign}),!0,b));this.proximate||this.positionItems();F(this,"afterRender")},handleOverflow:function(a){var b=this,d=this.chart,c=d.renderer,k=this.options,h=k.y,m=this.padding;h=d.spacingBox.height+("top"===k.verticalAlign?-h:h)-m;var r=k.maxHeight,n,f=this.clipRect,l=k.navigation,v=y(l.animation,!0),B=l.arrowSize||12,A=this.nav,u=this.pages,g,p=this.allItems,q=function(a){"number"===typeof a?f.attr({height:a}):
-f&&(b.clipRect=f.destroy(),b.contentGroup.clip());b.contentGroup.div&&(b.contentGroup.div.style.clip=a?"rect("+m+"px,9999px,"+(m+a)+"px,0)":"auto")},t=function(a){b[a]=c.circle(0,0,1.3*B).translate(B/2,B/2).add(A);d.styledMode||b[a].attr("fill","rgba(0,0,0,0.0001)");return b[a]};"horizontal"!==k.layout||"middle"===k.verticalAlign||k.floating||(h/=2);r&&(h=Math.min(h,r));u.length=0;a>h&&!1!==l.enabled?(this.clipHeight=n=Math.max(h-20-this.titleHeight-m,0),this.currentPage=y(this.currentPage,1),this.fullHeight=
-a,p.forEach(function(a,b){var f=a._legendItemPos[1],l=Math.round(a.legendItem.getBBox().height),d=u.length;if(!d||f-u[d-1]>n&&(g||f)!==u[d-1])u.push(g||f),d++;a.pageIx=d-1;g&&(p[b-1].pageIx=d-1);b===p.length-1&&f+l-u[d-1]>n&&f!==g&&(u.push(f),a.pageIx=d);f!==g&&(g=f)}),f||(f=b.clipRect=c.clipRect(0,m,9999,0),b.contentGroup.clip(f)),q(n),A||(this.nav=A=c.g().attr({zIndex:1}).add(this.group),this.up=c.symbol("triangle",0,0,B,B).add(A),t("upTracker").on("click",function(){b.scroll(-1,v)}),this.pager=
-c.text("",15,10).addClass("highcharts-legend-navigation"),d.styledMode||this.pager.css(l.style),this.pager.add(A),this.down=c.symbol("triangle-down",0,0,B,B).add(A),t("downTracker").on("click",function(){b.scroll(1,v)})),b.scroll(0),a=h):A&&(q(),this.nav=A.destroy(),this.scrollGroup.attr({translateY:1}),this.clipHeight=0);return a},scroll:function(a,b){var d=this.pages,c=d.length,k=this.currentPage+a;a=this.clipHeight;var h=this.options.navigation,m=this.pager,r=this.padding;k>c&&(k=c);0<k&&(void 0!==
-b&&w(b,this.chart),this.nav.attr({translateX:r,translateY:a+this.padding+7+this.titleHeight,visibility:"visible"}),[this.up,this.upTracker].forEach(function(a){a.attr({"class":1===k?"highcharts-legend-nav-inactive":"highcharts-legend-nav-active"})}),m.attr({text:k+"/"+c}),[this.down,this.downTracker].forEach(function(a){a.attr({x:18+this.pager.getBBox().width,"class":k===c?"highcharts-legend-nav-inactive":"highcharts-legend-nav-active"})},this),this.chart.styledMode||(this.up.attr({fill:1===k?h.inactiveColor:
-h.activeColor}),this.upTracker.css({cursor:1===k?"default":"pointer"}),this.down.attr({fill:k===c?h.inactiveColor:h.activeColor}),this.downTracker.css({cursor:k===c?"default":"pointer"})),this.scrollOffset=-d[k-1]+this.initialItemY,this.scrollGroup.animate({translateY:this.scrollOffset}),this.currentPage=k,this.positionCheckboxes())}};c.LegendSymbolMixin={drawRectangle:function(a,b){var d=a.symbolHeight,c=a.options.squareSymbol;b.legendSymbol=this.chart.renderer.rect(c?(a.symbolWidth-d)/2:0,a.baseline-
-d+1,c?d:a.symbolWidth,d,y(a.options.symbolRadius,d/2)).addClass("highcharts-point").attr({zIndex:3}).add(b.legendGroup)},drawLineMarker:function(a){var b=this.options,d=b.marker,c=a.symbolWidth,k=a.symbolHeight,h=k/2,g=this.chart.renderer,r=this.legendGroup;a=a.baseline-Math.round(.3*a.fontMetrics.b);var n={};this.chart.styledMode||(n={"stroke-width":b.lineWidth||0},b.dashStyle&&(n.dashstyle=b.dashStyle));this.legendLine=g.path(["M",0,a,"L",c,a]).addClass("highcharts-graph").attr(n).add(r);d&&!1!==
-d.enabled&&c&&(b=Math.min(y(d.radius,h),h),0===this.symbol.indexOf("url")&&(d=m(d,{width:k,height:k}),b=0),this.legendSymbol=d=g.symbol(this.symbol,c/2-b,a-b,2*b,2*b,d).addClass("highcharts-point").add(r),d.isMarker=!0)}};(/Trident\/7\.0/.test(q.navigator&&q.navigator.userAgent)||g)&&h(c.Legend.prototype,"positionItem",function(a,b){var d=this,c=function(){b._legendItemPos&&a.call(d,b)};c();d.bubbleLegend||setTimeout(c)})});K(D,"parts/Chart.js",[D["parts/Globals.js"],D["parts/Utilities.js"]],function(c,
-g){var I=g.attr,G=g.defined,H=g.discardElement,y=g.erase,w=g.extend,x=g.isArray,E=g.isNumber,F=g.isObject,t=g.isString,m=g.objectEach,p=g.pick,q=g.pInt,h=g.setAnimation,a=g.splat,b=g.syncTimeout,d=c.addEvent,e=c.animate,k=c.animObject,C=c.doc,z=c.Axis,r=c.createElement,n=c.defaultOptions,f=c.charts,l=c.css,v=c.find,B=c.fireEvent,A=c.Legend,u=c.marginNames,J=c.merge,L=c.Pointer,U=c.removeEvent,Q=c.seriesTypes,P=c.win,M=c.Chart=function(){this.getArgs.apply(this,arguments)};c.chart=function(a,b,f){return new M(a,
-b,f)};w(M.prototype,{callbacks:[],getArgs:function(){var a=[].slice.call(arguments);if(t(a[0])||a[0].nodeName)this.renderTo=a.shift();this.init(a[0],a[1])},init:function(a,b){var l,e=a.series,k=a.plotOptions||{};B(this,"init",{args:arguments},function(){a.series=null;l=J(n,a);m(l.plotOptions,function(a,b){F(a)&&(a.tooltip=k[b]&&J(k[b].tooltip)||void 0)});l.tooltip.userOptions=a.chart&&a.chart.forExport&&a.tooltip.userOptions||a.tooltip;l.series=a.series=e;this.userOptions=a;var v=l.chart,h=v.events;
-this.margin=[];this.spacing=[];this.bounds={h:{},v:{}};this.labelCollectors=[];this.callback=b;this.isResizing=0;this.options=l;this.axes=[];this.series=[];this.time=a.time&&Object.keys(a.time).length?new c.Time(a.time):c.time;this.styledMode=v.styledMode;this.hasCartesianSeries=v.showAxes;var u=this;u.index=f.length;f.push(u);c.chartCount++;h&&m(h,function(a,b){c.isFunction(a)&&d(u,b,a)});u.xAxis=[];u.yAxis=[];u.pointCount=u.colorCounter=u.symbolCounter=0;B(u,"afterInit");u.firstRender()})},initSeries:function(a){var b=
-this.options.chart;b=a.type||b.type||b.defaultSeriesType;var f=Q[b];f||c.error(17,!0,this,{missingModuleFor:b});b=new f;b.init(this,a);return b},orderSeries:function(a){var b=this.series;for(a=a||0;a<b.length;a++)b[a]&&(b[a].index=a,b[a].name=b[a].getName())},isInsidePlot:function(a,b,f){var l=f?b:a;a=f?a:b;return 0<=l&&l<=this.plotWidth&&0<=a&&a<=this.plotHeight},redraw:function(a){B(this,"beforeRedraw");var b=this.axes,f=this.series,l=this.pointer,d=this.legend,c=this.userOptions.legend,e=this.isDirtyLegend,
-k=this.hasCartesianSeries,n=this.isDirtyBox,v=this.renderer,u=v.isHidden(),m=[];this.setResponsive&&this.setResponsive(!1);h(a,this);u&&this.temporaryDisplay();this.layOutTitles();for(a=f.length;a--;){var A=f[a];if(A.options.stacking){var r=!0;if(A.isDirty){var g=!0;break}}}if(g)for(a=f.length;a--;)A=f[a],A.options.stacking&&(A.isDirty=!0);f.forEach(function(a){a.isDirty&&("point"===a.options.legendType?(a.updateTotals&&a.updateTotals(),e=!0):c&&(c.labelFormatter||c.labelFormat)&&(e=!0));a.isDirtyData&&
-B(a,"updatedData")});e&&d&&d.options.enabled&&(d.render(),this.isDirtyLegend=!1);r&&this.getStacks();k&&b.forEach(function(a){a.updateNames();a.setScale()});this.getMargins();k&&(b.forEach(function(a){a.isDirty&&(n=!0)}),b.forEach(function(a){var b=a.min+","+a.max;a.extKey!==b&&(a.extKey=b,m.push(function(){B(a,"afterSetExtremes",w(a.eventArgs,a.getExtremes()));delete a.eventArgs}));(n||r)&&a.redraw()}));n&&this.drawChartBox();B(this,"predraw");f.forEach(function(a){(n||a.isDirty)&&a.visible&&a.redraw();
-a.isDirtyData=!1});l&&l.reset(!0);v.draw();B(this,"redraw");B(this,"render");u&&this.temporaryDisplay(!0);m.forEach(function(a){a.call()})},get:function(a){function b(b){return b.id===a||b.options&&b.options.id===a}var f=this.series,l;var d=v(this.axes,b)||v(this.series,b);for(l=0;!d&&l<f.length;l++)d=v(f[l].points||[],b);return d},getAxes:function(){var b=this,f=this.options,l=f.xAxis=a(f.xAxis||{});f=f.yAxis=a(f.yAxis||{});B(this,"getAxes");l.forEach(function(a,b){a.index=b;a.isX=!0});f.forEach(function(a,
-b){a.index=b});l.concat(f).forEach(function(a){new z(b,a)});B(this,"afterGetAxes")},getSelectedPoints:function(){var a=[];this.series.forEach(function(b){a=a.concat((b[b.hasGroupedData?"points":"data"]||[]).filter(function(a){return p(a.selectedStaging,a.selected)}))});return a},getSelectedSeries:function(){return this.series.filter(function(a){return a.selected})},setTitle:function(a,b,f){this.applyDescription("title",a);this.applyDescription("subtitle",b);this.applyDescription("caption",void 0);
-this.layOutTitles(f)},applyDescription:function(a,b){var f=this,l="title"===a?{color:"#333333",fontSize:this.options.isStock?"16px":"18px"}:{color:"#666666"};l=this.options[a]=J(!this.styledMode&&{style:l},this.options[a],b);var d=this[a];d&&b&&(this[a]=d=d.destroy());l&&!d&&(d=this.renderer.text(l.text,0,0,l.useHTML).attr({align:l.align,"class":"highcharts-"+a,zIndex:l.zIndex||4}).add(),d.update=function(b){f[{title:"setTitle",subtitle:"setSubtitle",caption:"setCaption"}[a]](b)},this.styledMode||
-d.css(l.style),this[a]=d)},layOutTitles:function(a){var b=[0,0,0],f=this.renderer,l=this.spacingBox;["title","subtitle","caption"].forEach(function(a){var d=this[a],c=this.options[a],e=c.verticalAlign||"top";a="title"===a?-3:"top"===e?b[0]+2:0;if(d){if(!this.styledMode)var k=c.style.fontSize;k=f.fontMetrics(k,d).b;d.css({width:(c.width||l.width+(c.widthAdjust||0))+"px"});var n=Math.round(d.getBBox(c.useHTML).height);d.align(w({y:"bottom"===e?k:a+k,height:n},c),!1,"spacingBox");c.floating||("top"===
-e?b[0]=Math.ceil(b[0]+n):"bottom"===e&&(b[2]=Math.ceil(b[2]+n)))}},this);b[0]&&"top"===(this.options.title.verticalAlign||"top")&&(b[0]+=this.options.title.margin);b[2]&&"bottom"===this.options.caption.verticalAlign&&(b[2]+=this.options.caption.margin);var d=!this.titleOffset||this.titleOffset.join(",")!==b.join(",");this.titleOffset=b;B(this,"afterLayOutTitles");!this.isDirtyBox&&d&&(this.isDirtyBox=this.isDirtyLegend=d,this.hasRendered&&p(a,!0)&&this.isDirtyBox&&this.redraw())},getChartSize:function(){var a=
-this.options.chart,b=a.width;a=a.height;var f=this.renderTo;G(b)||(this.containerWidth=c.getStyle(f,"width"));G(a)||(this.containerHeight=c.getStyle(f,"height"));this.chartWidth=Math.max(0,b||this.containerWidth||600);this.chartHeight=Math.max(0,c.relativeLength(a,this.chartWidth)||(1<this.containerHeight?this.containerHeight:400))},temporaryDisplay:function(a){var b=this.renderTo;if(a)for(;b&&b.style;)b.hcOrigStyle&&(c.css(b,b.hcOrigStyle),delete b.hcOrigStyle),b.hcOrigDetached&&(C.body.removeChild(b),
-b.hcOrigDetached=!1),b=b.parentNode;else for(;b&&b.style;){C.body.contains(b)||b.parentNode||(b.hcOrigDetached=!0,C.body.appendChild(b));if("none"===c.getStyle(b,"display",!1)||b.hcOricDetached)b.hcOrigStyle={display:b.style.display,height:b.style.height,overflow:b.style.overflow},a={display:"block",overflow:"hidden"},b!==this.renderTo&&(a.height=0),c.css(b,a),b.offsetWidth||b.style.setProperty("display","block","important");b=b.parentNode;if(b===C.body)break}},setClassName:function(a){this.container.className=
-"highcharts-container "+(a||"")},getContainer:function(){var a=this.options,b=a.chart;var d=this.renderTo;var e=c.uniqueKey(),k,n;d||(this.renderTo=d=b.renderTo);t(d)&&(this.renderTo=d=C.getElementById(d));d||c.error(13,!0,this);var v=q(I(d,"data-highcharts-chart"));E(v)&&f[v]&&f[v].hasRendered&&f[v].destroy();I(d,"data-highcharts-chart",this.index);d.innerHTML="";b.skipClone||d.offsetWidth||this.temporaryDisplay();this.getChartSize();v=this.chartWidth;var h=this.chartHeight;l(d,{overflow:"hidden"});
-this.styledMode||(k=w({position:"relative",overflow:"hidden",width:v+"px",height:h+"px",textAlign:"left",lineHeight:"normal",zIndex:0,"-webkit-tap-highlight-color":"rgba(0,0,0,0)"},b.style));this.container=d=r("div",{id:e},k,d);this._cursor=d.style.cursor;this.renderer=new (c[b.renderer]||c.Renderer)(d,v,h,null,b.forExport,a.exporting&&a.exporting.allowHTML,this.styledMode);this.setClassName(b.className);if(this.styledMode)for(n in a.defs)this.renderer.definition(a.defs[n]);else this.renderer.setStyle(b.style);
-this.renderer.chartIndex=this.index;B(this,"afterGetContainer")},getMargins:function(a){var b=this.spacing,f=this.margin,l=this.titleOffset;this.resetMargins();l[0]&&!G(f[0])&&(this.plotTop=Math.max(this.plotTop,l[0]+b[0]));l[2]&&!G(f[2])&&(this.marginBottom=Math.max(this.marginBottom,l[2]+b[2]));this.legend&&this.legend.display&&this.legend.adjustMargins(f,b);B(this,"getMargins");a||this.getAxisMargins()},getAxisMargins:function(){var a=this,b=a.axisOffset=[0,0,0,0],f=a.colorAxis,l=a.margin,d=function(a){a.forEach(function(a){a.visible&&
-a.getOffset()})};a.hasCartesianSeries?d(a.axes):f&&f.length&&d(f);u.forEach(function(f,d){G(l[d])||(a[f]+=b[d])});a.setChartSize()},reflow:function(a){var f=this,l=f.options.chart,d=f.renderTo,e=G(l.width)&&G(l.height),k=l.width||c.getStyle(d,"width");l=l.height||c.getStyle(d,"height");d=a?a.target:P;if(!e&&!f.isPrinting&&k&&l&&(d===P||d===C)){if(k!==f.containerWidth||l!==f.containerHeight)c.clearTimeout(f.reflowTimeout),f.reflowTimeout=b(function(){f.container&&f.setSize(void 0,void 0,!1)},a?100:
-0);f.containerWidth=k;f.containerHeight=l}},setReflow:function(a){var b=this;!1===a||this.unbindReflow?!1===a&&this.unbindReflow&&(this.unbindReflow=this.unbindReflow()):(this.unbindReflow=d(P,"resize",function(a){b.options&&b.reflow(a)}),d(this,"destroy",this.unbindReflow))},setSize:function(a,f,d){var c=this,n=c.renderer;c.isResizing+=1;h(d,c);c.oldChartHeight=c.chartHeight;c.oldChartWidth=c.chartWidth;void 0!==a&&(c.options.chart.width=a);void 0!==f&&(c.options.chart.height=f);c.getChartSize();
-if(!c.styledMode){var v=n.globalAnimation;(v?e:l)(c.container,{width:c.chartWidth+"px",height:c.chartHeight+"px"},v)}c.setChartSize(!0);n.setSize(c.chartWidth,c.chartHeight,d);c.axes.forEach(function(a){a.isDirty=!0;a.setScale()});c.isDirtyLegend=!0;c.isDirtyBox=!0;c.layOutTitles();c.getMargins();c.redraw(d);c.oldChartHeight=null;B(c,"resize");b(function(){c&&B(c,"endResize",null,function(){--c.isResizing})},k(v).duration||0)},setChartSize:function(a){var b=this.inverted,f=this.renderer,l=this.chartWidth,
-d=this.chartHeight,c=this.options.chart,e=this.spacing,k=this.clipOffset,n,v,h,u;this.plotLeft=n=Math.round(this.plotLeft);this.plotTop=v=Math.round(this.plotTop);this.plotWidth=h=Math.max(0,Math.round(l-n-this.marginRight));this.plotHeight=u=Math.max(0,Math.round(d-v-this.marginBottom));this.plotSizeX=b?u:h;this.plotSizeY=b?h:u;this.plotBorderWidth=c.plotBorderWidth||0;this.spacingBox=f.spacingBox={x:e[3],y:e[0],width:l-e[3]-e[1],height:d-e[0]-e[2]};this.plotBox=f.plotBox={x:n,y:v,width:h,height:u};
-l=2*Math.floor(this.plotBorderWidth/2);b=Math.ceil(Math.max(l,k[3])/2);f=Math.ceil(Math.max(l,k[0])/2);this.clipBox={x:b,y:f,width:Math.floor(this.plotSizeX-Math.max(l,k[1])/2-b),height:Math.max(0,Math.floor(this.plotSizeY-Math.max(l,k[2])/2-f))};a||this.axes.forEach(function(a){a.setAxisSize();a.setAxisTranslation()});B(this,"afterSetChartSize",{skipAxes:a})},resetMargins:function(){B(this,"resetMargins");var a=this,b=a.options.chart;["margin","spacing"].forEach(function(f){var l=b[f],d=F(l)?l:[l,
-l,l,l];["Top","Right","Bottom","Left"].forEach(function(l,c){a[f][c]=p(b[f+l],d[c])})});u.forEach(function(b,f){a[b]=p(a.margin[f],a.spacing[f])});a.axisOffset=[0,0,0,0];a.clipOffset=[0,0,0,0]},drawChartBox:function(){var a=this.options.chart,b=this.renderer,f=this.chartWidth,l=this.chartHeight,d=this.chartBackground,c=this.plotBackground,e=this.plotBorder,k=this.styledMode,n=this.plotBGImage,v=a.backgroundColor,h=a.plotBackgroundColor,u=a.plotBackgroundImage,m,A=this.plotLeft,r=this.plotTop,g=this.plotWidth,
-p=this.plotHeight,J=this.plotBox,q=this.clipRect,z=this.clipBox,C="animate";d||(this.chartBackground=d=b.rect().addClass("highcharts-background").add(),C="attr");if(k)var t=m=d.strokeWidth();else{t=a.borderWidth||0;m=t+(a.shadow?8:0);v={fill:v||"none"};if(t||d["stroke-width"])v.stroke=a.borderColor,v["stroke-width"]=t;d.attr(v).shadow(a.shadow)}d[C]({x:m/2,y:m/2,width:f-m-t%2,height:l-m-t%2,r:a.borderRadius});C="animate";c||(C="attr",this.plotBackground=c=b.rect().addClass("highcharts-plot-background").add());
-c[C](J);k||(c.attr({fill:h||"none"}).shadow(a.plotShadow),u&&(n?n.animate(J):this.plotBGImage=b.image(u,A,r,g,p).add()));q?q.animate({width:z.width,height:z.height}):this.clipRect=b.clipRect(z);C="animate";e||(C="attr",this.plotBorder=e=b.rect().addClass("highcharts-plot-border").attr({zIndex:1}).add());k||e.attr({stroke:a.plotBorderColor,"stroke-width":a.plotBorderWidth||0,fill:"none"});e[C](e.crisp({x:A,y:r,width:g,height:p},-e.strokeWidth()));this.isDirtyBox=!1;B(this,"afterDrawChartBox")},propFromSeries:function(){var a=
-this,b=a.options.chart,f,l=a.options.series,d,c;["inverted","angular","polar"].forEach(function(e){f=Q[b.type||b.defaultSeriesType];c=b[e]||f&&f.prototype[e];for(d=l&&l.length;!c&&d--;)(f=Q[l[d].type])&&f.prototype[e]&&(c=!0);a[e]=c})},linkSeries:function(){var a=this,b=a.series;b.forEach(function(a){a.linkedSeries.length=0});b.forEach(function(b){var f=b.options.linkedTo;t(f)&&(f=":previous"===f?a.series[b.index-1]:a.get(f))&&f.linkedParent!==b&&(f.linkedSeries.push(b),b.linkedParent=f,b.visible=
-p(b.options.visible,f.options.visible,b.visible))});B(this,"afterLinkSeries")},renderSeries:function(){this.series.forEach(function(a){a.translate();a.render()})},renderLabels:function(){var a=this,b=a.options.labels;b.items&&b.items.forEach(function(f){var l=w(b.style,f.style),d=q(l.left)+a.plotLeft,c=q(l.top)+a.plotTop+12;delete l.left;delete l.top;a.renderer.text(f.html,d,c).attr({zIndex:2}).css(l).add()})},render:function(){var a=this.axes,b=this.colorAxis,f=this.renderer,l=this.options,d=0,c=
-function(a){a.forEach(function(a){a.visible&&a.render()})};this.setTitle();this.legend=new A(this,l.legend);this.getStacks&&this.getStacks();this.getMargins(!0);this.setChartSize();l=this.plotWidth;a.some(function(a){if(a.horiz&&a.visible&&a.options.labels.enabled&&a.series.length)return d=21,!0});var e=this.plotHeight=Math.max(this.plotHeight-d,0);a.forEach(function(a){a.setScale()});this.getAxisMargins();var k=1.1<l/this.plotWidth;var n=1.05<e/this.plotHeight;if(k||n)a.forEach(function(a){(a.horiz&&
-k||!a.horiz&&n)&&a.setTickInterval(!0)}),this.getMargins();this.drawChartBox();this.hasCartesianSeries?c(a):b&&b.length&&c(b);this.seriesGroup||(this.seriesGroup=f.g("series-group").attr({zIndex:3}).add());this.renderSeries();this.renderLabels();this.addCredits();this.setResponsive&&this.setResponsive();this.updateContainerScaling();this.hasRendered=!0},addCredits:function(a){var b=this;a=J(!0,this.options.credits,a);a.enabled&&!this.credits&&(this.credits=this.renderer.text(a.text+(this.mapCredits||
-""),0,0).addClass("highcharts-credits").on("click",function(){a.href&&(P.location.href=a.href)}).attr({align:a.position.align,zIndex:8}),b.styledMode||this.credits.css(a.style),this.credits.add().align(a.position),this.credits.update=function(a){b.credits=b.credits.destroy();b.addCredits(a)})},updateContainerScaling:function(){var a=this.container;if(a.offsetWidth&&a.offsetHeight&&a.getBoundingClientRect){var b=a.getBoundingClientRect(),f=b.width/a.offsetWidth;a=b.height/a.offsetHeight;1!==f||1!==
-a?this.containerScaling={scaleX:f,scaleY:a}:delete this.containerScaling}},destroy:function(){var a=this,b=a.axes,l=a.series,d=a.container,e,k=d&&d.parentNode;B(a,"destroy");a.renderer.forExport?y(f,a):f[a.index]=void 0;c.chartCount--;a.renderTo.removeAttribute("data-highcharts-chart");U(a);for(e=b.length;e--;)b[e]=b[e].destroy();this.scroller&&this.scroller.destroy&&this.scroller.destroy();for(e=l.length;e--;)l[e]=l[e].destroy();"title subtitle chartBackground plotBackground plotBGImage plotBorder seriesGroup clipRect credits pointer rangeSelector legend resetZoomButton tooltip renderer".split(" ").forEach(function(b){var f=
-a[b];f&&f.destroy&&(a[b]=f.destroy())});d&&(d.innerHTML="",U(d),k&&H(d));m(a,function(b,f){delete a[f]})},firstRender:function(){var a=this,b=a.options;if(!a.isReadyToRender||a.isReadyToRender()){a.getContainer();a.resetMargins();a.setChartSize();a.propFromSeries();a.getAxes();(x(b.series)?b.series:[]).forEach(function(b){a.initSeries(b)});a.linkSeries();B(a,"beforeRender");L&&(a.pointer=new L(a,b));a.render();if(!a.renderer.imgCount&&a.onload)a.onload();a.temporaryDisplay(!0)}},onload:function(){this.callbacks.concat([this.callback]).forEach(function(a){a&&
-void 0!==this.index&&a.apply(this,[this])},this);B(this,"load");B(this,"render");G(this.index)&&this.setReflow(this.options.chart.reflow);this.onload=null}})});K(D,"parts/ScrollablePlotArea.js",[D["parts/Globals.js"],D["parts/Utilities.js"]],function(c,g){var I=g.pick,G=c.addEvent;g=c.Chart;"";G(g,"afterSetChartSize",function(g){var y=this.options.chart.scrollablePlotArea,w=y&&y.minWidth;y=y&&y.minHeight;if(!this.renderer.forExport){if(w){if(this.scrollablePixelsX=w=Math.max(0,w-this.chartWidth)){this.plotWidth+=
-w;this.inverted?(this.clipBox.height+=w,this.plotBox.height+=w):(this.clipBox.width+=w,this.plotBox.width+=w);var x={1:{name:"right",value:w}}}}else y&&(this.scrollablePixelsY=w=Math.max(0,y-this.chartHeight))&&(this.plotHeight+=w,this.inverted?(this.clipBox.width+=w,this.plotBox.width+=w):(this.clipBox.height+=w,this.plotBox.height+=w),x={2:{name:"bottom",value:w}});x&&!g.skipAxes&&this.axes.forEach(function(g){x[g.side]?g.getPlotLinePath=function(){var w=x[g.side].name,t=this[w];this[w]=t-x[g.side].value;
-var m=c.Axis.prototype.getPlotLinePath.apply(this,arguments);this[w]=t;return m}:(g.setAxisSize(),g.setAxisTranslation())})}});G(g,"render",function(){this.scrollablePixelsX||this.scrollablePixelsY?(this.setUpScrolling&&this.setUpScrolling(),this.applyFixed()):this.fixedDiv&&this.applyFixed()});g.prototype.setUpScrolling=function(){var g={WebkitOverflowScrolling:"touch",overflowX:"hidden",overflowY:"hidden"};this.scrollablePixelsX&&(g.overflowX="auto");this.scrollablePixelsY&&(g.overflowY="auto");
-this.scrollingContainer=c.createElement("div",{className:"highcharts-scrolling"},g,this.renderTo);this.innerContainer=c.createElement("div",{className:"highcharts-inner-container"},null,this.scrollingContainer);this.innerContainer.appendChild(this.container);this.setUpScrolling=null};g.prototype.moveFixedElements=function(){var c=this.container,g=this.fixedRenderer,w=".highcharts-contextbutton .highcharts-credits .highcharts-legend .highcharts-legend-checkbox .highcharts-navigator-series .highcharts-navigator-xaxis .highcharts-navigator-yaxis .highcharts-navigator .highcharts-reset-zoom .highcharts-scrollbar .highcharts-subtitle .highcharts-title".split(" "),
-x;this.scrollablePixelsX&&!this.inverted?x=".highcharts-yaxis":this.scrollablePixelsX&&this.inverted?x=".highcharts-xaxis":this.scrollablePixelsY&&!this.inverted?x=".highcharts-xaxis":this.scrollablePixelsY&&this.inverted&&(x=".highcharts-yaxis");w.push(x,x+"-labels");w.forEach(function(x){[].forEach.call(c.querySelectorAll(x),function(c){(c.namespaceURI===g.SVG_NS?g.box:g.box.parentNode).appendChild(c);c.style.pointerEvents="auto"})})};g.prototype.applyFixed=function(){var g,y=!this.fixedDiv,w=this.options.chart.scrollablePlotArea;
-y?(this.fixedDiv=c.createElement("div",{className:"highcharts-fixed"},{position:"absolute",overflow:"hidden",pointerEvents:"none",zIndex:2},null,!0),this.renderTo.insertBefore(this.fixedDiv,this.renderTo.firstChild),this.renderTo.style.overflow="visible",this.fixedRenderer=g=new c.Renderer(this.fixedDiv,this.chartWidth,this.chartHeight),this.scrollableMask=g.path().attr({fill:c.color(this.options.chart.backgroundColor||"#fff").setOpacity(I(w.opacity,.85)).get(),zIndex:-1}).addClass("highcharts-scrollable-mask").add(),
-this.moveFixedElements(),G(this,"afterShowResetZoom",this.moveFixedElements),G(this,"afterLayOutTitles",this.moveFixedElements)):this.fixedRenderer.setSize(this.chartWidth,this.chartHeight);g=this.chartWidth+(this.scrollablePixelsX||0);var x=this.chartHeight+(this.scrollablePixelsY||0);c.stop(this.container);this.container.style.width=g+"px";this.container.style.height=x+"px";this.renderer.boxWrapper.attr({width:g,height:x,viewBox:[0,0,g,x].join(" ")});this.chartBackground.attr({width:g,height:x});
-this.scrollablePixelsY&&(this.scrollingContainer.style.height=this.chartHeight+"px");y&&(w.scrollPositionX&&(this.scrollingContainer.scrollLeft=this.scrollablePixelsX*w.scrollPositionX),w.scrollPositionY&&(this.scrollingContainer.scrollTop=this.scrollablePixelsY*w.scrollPositionY));x=this.axisOffset;y=this.plotTop-x[0]-1;w=this.plotLeft-x[3]-1;g=this.plotTop+this.plotHeight+x[2]+1;x=this.plotLeft+this.plotWidth+x[1]+1;var E=this.plotLeft+this.plotWidth-(this.scrollablePixelsX||0),F=this.plotTop+this.plotHeight-
-(this.scrollablePixelsY||0);y=this.scrollablePixelsX?["M",0,y,"L",this.plotLeft-1,y,"L",this.plotLeft-1,g,"L",0,g,"Z","M",E,y,"L",this.chartWidth,y,"L",this.chartWidth,g,"L",E,g,"Z"]:this.scrollablePixelsY?["M",w,0,"L",w,this.plotTop-1,"L",x,this.plotTop-1,"L",x,0,"Z","M",w,F,"L",w,this.chartHeight,"L",x,this.chartHeight,"L",x,F,"Z"]:["M",0,0];"adjustHeight"!==this.redrawTrigger&&this.scrollableMask.attr({d:y})}});K(D,"parts/Point.js",[D["parts/Globals.js"],D["parts/Utilities.js"]],function(c,g){var I=
-g.defined,G=g.erase,H=g.extend,y=g.isArray,w=g.isNumber,x=g.isObject,E=g.pick,F,t=c.fireEvent,m=c.format,p=c.uniqueKey,q=c.removeEvent;c.Point=F=function(){};c.Point.prototype={init:function(c,a,b){this.series=c;this.applyOptions(a,b);this.id=I(this.id)?this.id:p();this.resolveColor();c.chart.pointCount++;t(this,"afterInit");return this},resolveColor:function(){var c=this.series;var a=c.chart.options.chart.colorCount;var b=c.chart.styledMode;b||this.options.color||(this.color=c.color);c.options.colorByPoint?
-(b||(a=c.options.colors||c.chart.options.colors,this.color=this.color||a[c.colorCounter],a=a.length),b=c.colorCounter,c.colorCounter++,c.colorCounter===a&&(c.colorCounter=0)):b=c.colorIndex;this.colorIndex=E(this.colorIndex,b)},applyOptions:function(c,a){var b=this.series,d=b.options.pointValKey||b.pointValKey;c=F.prototype.optionsToObject.call(this,c);H(this,c);this.options=this.options?H(this.options,c):c;c.group&&delete this.group;c.dataLabels&&delete this.dataLabels;d&&(this.y=this[d]);this.formatPrefix=
-(this.isNull=E(this.isValid&&!this.isValid(),null===this.x||!w(this.y)))?"null":"point";this.selected&&(this.state="select");"name"in this&&void 0===a&&b.xAxis&&b.xAxis.hasNames&&(this.x=b.xAxis.nameToX(this));void 0===this.x&&b&&(this.x=void 0===a?b.autoIncrement(this):a);return this},setNestedProperty:function(c,a,b){b.split(".").reduce(function(b,c,k,h){b[c]=h.length-1===k?a:x(b[c],!0)?b[c]:{};return b[c]},c);return c},optionsToObject:function(h){var a={},b=this.series,d=b.options.keys,e=d||b.pointArrayMap||
-["y"],k=e.length,m=0,g=0;if(w(h)||null===h)a[e[0]]=h;else if(y(h))for(!d&&h.length>k&&(b=typeof h[0],"string"===b?a.name=h[0]:"number"===b&&(a.x=h[0]),m++);g<k;)d&&void 0===h[m]||(0<e[g].indexOf(".")?c.Point.prototype.setNestedProperty(a,h[m],e[g]):a[e[g]]=h[m]),m++,g++;else"object"===typeof h&&(a=h,h.dataLabels&&(b._hasPointLabels=!0),h.marker&&(b._hasPointMarkers=!0));return a},getClassName:function(){return"highcharts-point"+(this.selected?" highcharts-point-select":"")+(this.negative?" highcharts-negative":
-"")+(this.isNull?" highcharts-null-point":"")+(void 0!==this.colorIndex?" highcharts-color-"+this.colorIndex:"")+(this.options.className?" "+this.options.className:"")+(this.zone&&this.zone.className?" "+this.zone.className.replace("highcharts-negative",""):"")},getZone:function(){var c=this.series,a=c.zones;c=c.zoneAxis||"y";var b=0,d;for(d=a[b];this[c]>=d.value;)d=a[++b];this.nonZonedColor||(this.nonZonedColor=this.color);this.color=d&&d.color&&!this.options.color?d.color:this.nonZonedColor;return d},
-hasNewShapeType:function(){return this.graphic&&this.graphic.element.nodeName!==this.shapeType},destroy:function(){var c=this.series.chart,a=c.hoverPoints,b;c.pointCount--;a&&(this.setState(),G(a,this),a.length||(c.hoverPoints=null));if(this===c.hoverPoint)this.onMouseOut();if(this.graphic||this.dataLabel||this.dataLabels)q(this),this.destroyElements();this.legendItem&&c.legend.destroyItem(this);for(b in this)this[b]=null},destroyElements:function(c){var a=this,b=[],d;c=c||{graphic:1,dataLabel:1};
-c.graphic&&b.push("graphic","shadowGroup");c.dataLabel&&b.push("dataLabel","dataLabelUpper","connector");for(d=b.length;d--;){var e=b[d];a[e]&&(a[e]=a[e].destroy())}["dataLabel","connector"].forEach(function(b){var d=b+"s";c[b]&&a[d]&&(a[d].forEach(function(a){a.element&&a.destroy()}),delete a[d])})},getLabelConfig:function(){return{x:this.category,y:this.y,color:this.color,colorIndex:this.colorIndex,key:this.name||this.category,series:this.series,point:this,percentage:this.percentage,total:this.total||
-this.stackTotal}},tooltipFormatter:function(c){var a=this.series,b=a.tooltipOptions,d=E(b.valueDecimals,""),e=b.valuePrefix||"",k=b.valueSuffix||"";a.chart.styledMode&&(c=a.chart.tooltip.styledModeFormat(c));(a.pointArrayMap||["y"]).forEach(function(a){a="{point."+a;if(e||k)c=c.replace(RegExp(a+"}","g"),e+a+"}"+k);c=c.replace(RegExp(a+"}","g"),a+":,."+d+"f}")});return m(c,{point:this,series:this.series},a.chart.time)},firePointEvent:function(c,a,b){var d=this,e=this.series.options;(e.point.events[c]||
-d.options&&d.options.events&&d.options.events[c])&&this.importEvents();"click"===c&&e.allowPointSelect&&(b=function(a){d.select&&d.select(null,a.ctrlKey||a.metaKey||a.shiftKey)});t(this,c,a,b)},visible:!0}});K(D,"parts/Series.js",[D["parts/Globals.js"],D["parts/Utilities.js"]],function(c,g){var I=g.arrayMax,G=g.arrayMin,H=g.defined,y=g.erase,w=g.extend,x=g.isArray,E=g.isNumber,F=g.isString,t=g.objectEach,m=g.pick,p=g.splat,q=g.syncTimeout,h=c.addEvent,a=c.animObject,b=c.correctFloat,d=c.defaultOptions,
-e=c.defaultPlotOptions,k=c.fireEvent,C=c.merge,z=c.removeEvent,r=c.SVGElement,n=c.win;c.Series=c.seriesType("line",null,{lineWidth:2,allowPointSelect:!1,showCheckbox:!1,animation:{duration:1E3},events:{},marker:{lineWidth:0,lineColor:"#ffffff",enabledThreshold:2,radius:4,states:{normal:{animation:!0},hover:{animation:{duration:50},enabled:!0,radiusPlus:2,lineWidthPlus:1},select:{fillColor:"#cccccc",lineColor:"#000000",lineWidth:2}}},point:{events:{}},dataLabels:{align:"center",formatter:function(){return null===
-this.y?"":c.numberFormat(this.y,-1)},padding:5,style:{fontSize:"11px",fontWeight:"bold",color:"contrast",textOutline:"1px contrast"},verticalAlign:"bottom",x:0,y:0},cropThreshold:300,opacity:1,pointRange:0,softThreshold:!0,states:{normal:{animation:!0},hover:{animation:{duration:50},lineWidthPlus:1,marker:{},halo:{size:10,opacity:.25}},select:{animation:{duration:0}},inactive:{animation:{duration:50},opacity:.2}},stickyTracking:!0,turboThreshold:1E3,findNearestPointBy:"x"},{axisTypes:["xAxis","yAxis"],
-coll:"series",colorCounter:0,cropShoulder:1,directTouch:!1,isCartesian:!0,parallelArrays:["x","y"],pointClass:c.Point,requireSorting:!0,sorted:!0,init:function(a,b){k(this,"init",{options:b});var f=this,l=a.series,d;this.eventOptions=this.eventOptions||{};f.chart=a;f.options=b=f.setOptions(b);f.linkedSeries=[];f.bindAxes();w(f,{name:b.name,state:"",visible:!1!==b.visible,selected:!0===b.selected});var e=b.events;t(e,function(a,b){c.isFunction(a)&&f.eventOptions[b]!==a&&(c.isFunction(f.eventOptions[b])&&
-z(f,b,f.eventOptions[b]),f.eventOptions[b]=a,h(f,b,a))});if(e&&e.click||b.point&&b.point.events&&b.point.events.click||b.allowPointSelect)a.runTrackerClick=!0;f.getColor();f.getSymbol();f.parallelArrays.forEach(function(a){f[a+"Data"]||(f[a+"Data"]=[])});f.points||f.data||f.setData(b.data,!1);f.isCartesian&&(a.hasCartesianSeries=!0);l.length&&(d=l[l.length-1]);f._i=m(d&&d._i,-1)+1;a.orderSeries(this.insert(l));k(this,"afterInit")},insert:function(a){var b=this.options.index,f;if(E(b)){for(f=a.length;f--;)if(b>=
-m(a[f].options.index,a[f]._i)){a.splice(f+1,0,this);break}-1===f&&a.unshift(this);f+=1}else a.push(this);return m(f,a.length-1)},bindAxes:function(){var a=this,b=a.options,d=a.chart,e;k(this,"bindAxes",null,function(){(a.axisTypes||[]).forEach(function(f){d[f].forEach(function(l){e=l.options;if(b[f]===e.index||void 0!==b[f]&&b[f]===e.id||void 0===b[f]&&0===e.index)a.insert(l.series),a[f]=l,l.isDirty=!0});a[f]||a.optionalAxis===f||c.error(18,!0,d)})})},updateParallelArrays:function(a,b){var f=a.series,
-l=arguments,c=E(b)?function(l){var c="y"===l&&f.toYData?f.toYData(a):a[l];f[l+"Data"][b]=c}:function(a){Array.prototype[b].apply(f[a+"Data"],Array.prototype.slice.call(l,2))};f.parallelArrays.forEach(c)},hasData:function(){return this.visible&&void 0!==this.dataMax&&void 0!==this.dataMin||this.visible&&this.yData&&0<this.yData.length},autoIncrement:function(){var a=this.options,b=this.xIncrement,c,d=a.pointIntervalUnit,e=this.chart.time;b=m(b,a.pointStart,0);this.pointInterval=c=m(this.pointInterval,
-a.pointInterval,1);d&&(a=new e.Date(b),"day"===d?e.set("Date",a,e.get("Date",a)+c):"month"===d?e.set("Month",a,e.get("Month",a)+c):"year"===d&&e.set("FullYear",a,e.get("FullYear",a)+c),c=a.getTime()-b);this.xIncrement=b+c;return b},setOptions:function(a){var b=this.chart,f=b.options,c=f.plotOptions,e=b.userOptions||{};a=C(a);b=b.styledMode;var n={plotOptions:c,userOptions:a};k(this,"setOptions",n);var h=n.plotOptions[this.type],r=e.plotOptions||{};this.userOptions=n.userOptions;e=C(h,c.series,e.plotOptions&&
-e.plotOptions[this.type],a);this.tooltipOptions=C(d.tooltip,d.plotOptions.series&&d.plotOptions.series.tooltip,d.plotOptions[this.type].tooltip,f.tooltip.userOptions,c.series&&c.series.tooltip,c[this.type].tooltip,a.tooltip);this.stickyTracking=m(a.stickyTracking,r[this.type]&&r[this.type].stickyTracking,r.series&&r.series.stickyTracking,this.tooltipOptions.shared&&!this.noSharedTooltip?!0:e.stickyTracking);null===h.marker&&delete e.marker;this.zoneAxis=e.zoneAxis;f=this.zones=(e.zones||[]).slice();
-!e.negativeColor&&!e.negativeFillColor||e.zones||(c={value:e[this.zoneAxis+"Threshold"]||e.threshold||0,className:"highcharts-negative"},b||(c.color=e.negativeColor,c.fillColor=e.negativeFillColor),f.push(c));f.length&&H(f[f.length-1].value)&&f.push(b?{}:{color:this.color,fillColor:this.fillColor});k(this,"afterSetOptions",{options:e});return e},getName:function(){return m(this.options.name,"Series "+(this.index+1))},getCyclic:function(a,b,c){var f=this.chart,l=this.userOptions,d=a+"Index",e=a+"Counter",
-k=c?c.length:m(f.options.chart[a+"Count"],f[a+"Count"]);if(!b){var n=m(l[d],l["_"+d]);H(n)||(f.series.length||(f[e]=0),l["_"+d]=n=f[e]%k,f[e]+=1);c&&(b=c[n])}void 0!==n&&(this[d]=n);this[a]=b},getColor:function(){this.chart.styledMode?this.getCyclic("color"):this.options.colorByPoint?this.options.color=null:this.getCyclic("color",this.options.color||e[this.type].color,this.chart.options.colors)},getSymbol:function(){this.getCyclic("symbol",this.options.marker.symbol,this.chart.options.symbols)},findPointIndex:function(a,
-b){var f=a.id;a=a.x;var l=this.points,c;if(f){var d=(f=this.chart.get(f))&&f.index;void 0!==d&&(c=!0)}void 0===d&&E(a)&&(d=this.xData.indexOf(a,b));-1!==d&&void 0!==d&&this.cropped&&(d=d>=this.cropStart?d-this.cropStart:d);!c&&l[d]&&l[d].touched&&(d=void 0);return d},drawLegendSymbol:c.LegendSymbolMixin.drawLineMarker,updateData:function(a){var b=this.options,f=this.points,c=[],d,e,n,k=this.requireSorting,m=a.length===f.length,h=!0;this.xIncrement=null;a.forEach(function(a,l){var e=H(a)&&this.pointClass.prototype.optionsToObject.call({series:this},
-a)||{};var v=e.x;if(e.id||E(v))if(v=this.findPointIndex(e,n),-1===v||void 0===v?c.push(a):f[v]&&a!==b.data[v]?(f[v].update(a,!1,null,!1),f[v].touched=!0,k&&(n=v+1)):f[v]&&(f[v].touched=!0),!m||l!==v||this.hasDerivedData)d=!0},this);if(d)for(a=f.length;a--;)(e=f[a])&&!e.touched&&e.remove(!1);else m?a.forEach(function(a,b){f[b].update&&a!==f[b].y&&f[b].update(a,!1,null,!1)}):h=!1;f.forEach(function(a){a&&(a.touched=!1)});if(!h)return!1;c.forEach(function(a){this.addPoint(a,!1,null,null,!1)},this);return!0},
-setData:function(a,b,d,e){var f=this,l=f.points,n=l&&l.length||0,k,v=f.options,B=f.chart,h=null,r=f.xAxis;h=v.turboThreshold;var g=this.xData,p=this.yData,q=(k=f.pointArrayMap)&&k.length,t=v.keys,z=0,C=1,w;a=a||[];k=a.length;b=m(b,!0);!1!==e&&k&&n&&!f.cropped&&!f.hasGroupedData&&f.visible&&!f.isSeriesBoosting&&(w=this.updateData(a));if(!w){f.xIncrement=null;f.colorCounter=0;this.parallelArrays.forEach(function(a){f[a+"Data"].length=0});if(h&&k>h)if(h=f.getFirstValidPoint(a),E(h))for(d=0;d<k;d++)g[d]=
-this.autoIncrement(),p[d]=a[d];else if(x(h))if(q)for(d=0;d<k;d++)e=a[d],g[d]=e[0],p[d]=e.slice(1,q+1);else for(t&&(z=t.indexOf("x"),C=t.indexOf("y"),z=0<=z?z:0,C=0<=C?C:1),d=0;d<k;d++)e=a[d],g[d]=e[z],p[d]=e[C];else c.error(12,!1,B);else for(d=0;d<k;d++)void 0!==a[d]&&(e={series:f},f.pointClass.prototype.applyOptions.apply(e,[a[d]]),f.updateParallelArrays(e,d));p&&F(p[0])&&c.error(14,!0,B);f.data=[];f.options.data=f.userOptions.data=a;for(d=n;d--;)l[d]&&l[d].destroy&&l[d].destroy();r&&(r.minRange=
-r.userMinRange);f.isDirty=B.isDirtyBox=!0;f.isDirtyData=!!l;d=!1}"point"===v.legendType&&(this.processData(),this.generatePoints());b&&B.redraw(d)},processData:function(a){var b=this.xData,f=this.yData,d=b.length;var e=0;var k=this.xAxis,n=this.options;var h=n.cropThreshold;var m=this.getExtremesFromAll||n.getExtremesFromAll,r=this.isCartesian;n=k&&k.val2lin;var g=k&&k.isLog,p=this.requireSorting;if(r&&!this.isDirty&&!k.isDirty&&!this.yAxis.isDirty&&!a)return!1;if(k){a=k.getExtremes();var q=a.min;
-var t=a.max}if(r&&this.sorted&&!m&&(!h||d>h||this.forceCrop))if(b[d-1]<q||b[0]>t)b=[],f=[];else if(this.yData&&(b[0]<q||b[d-1]>t)){e=this.cropData(this.xData,this.yData,q,t);b=e.xData;f=e.yData;e=e.start;var z=!0}for(h=b.length||1;--h;)if(d=g?n(b[h])-n(b[h-1]):b[h]-b[h-1],0<d&&(void 0===C||d<C))var C=d;else 0>d&&p&&(c.error(15,!1,this.chart),p=!1);this.cropped=z;this.cropStart=e;this.processedXData=b;this.processedYData=f;this.closestPointRange=this.basePointRange=C},cropData:function(a,b,d,c,e){var f=
-a.length,l=0,k=f,n;e=m(e,this.cropShoulder);for(n=0;n<f;n++)if(a[n]>=d){l=Math.max(0,n-e);break}for(d=n;d<f;d++)if(a[d]>c){k=d+e;break}return{xData:a.slice(l,k),yData:b.slice(l,k),start:l,end:k}},generatePoints:function(){var a=this.options,b=a.data,d=this.data,c,e=this.processedXData,n=this.processedYData,h=this.pointClass,m=e.length,r=this.cropStart||0,g=this.hasGroupedData;a=a.keys;var q=[],t;d||g||(d=[],d.length=b.length,d=this.data=d);a&&g&&(this.options.keys=!1);for(t=0;t<m;t++){var z=r+t;if(g){var C=
-(new h).init(this,[e[t]].concat(p(n[t])));C.dataGroup=this.groupMap[t];C.dataGroup.options&&(C.options=C.dataGroup.options,w(C,C.dataGroup.options),delete C.dataLabels)}else(C=d[z])||void 0===b[z]||(d[z]=C=(new h).init(this,b[z],e[t]));C&&(C.index=z,q[t]=C)}this.options.keys=a;if(d&&(m!==(c=d.length)||g))for(t=0;t<c;t++)t!==r||g||(t+=m),d[t]&&(d[t].destroyElements(),d[t].plotX=void 0);this.data=d;this.points=q;k(this,"afterGeneratePoints")},getXExtremes:function(a){return{min:G(a),max:I(a)}},getExtremes:function(a){var b=
-this.xAxis,f=this.yAxis,d=this.processedXData||this.xData,c=[],e=0,n=0;var h=0;var m=this.requireSorting?this.cropShoulder:0,r=f?f.positiveValuesOnly:!1,g;a=a||this.stackedYData||this.processedYData||[];f=a.length;b&&(h=b.getExtremes(),n=h.min,h=h.max);for(g=0;g<f;g++){var p=d[g];var t=a[g];var q=(E(t)||x(t))&&(t.length||0<t||!r);p=this.getExtremesFromAll||this.options.getExtremesFromAll||this.cropped||!b||(d[g+m]||p)>=n&&(d[g-m]||p)<=h;if(q&&p)if(q=t.length)for(;q--;)E(t[q])&&(c[e++]=t[q]);else c[e++]=
-t}this.dataMin=G(c);this.dataMax=I(c);k(this,"afterGetExtremes")},getFirstValidPoint:function(a){for(var b=null,f=a.length,d=0;null===b&&d<f;)b=a[d],d++;return b},translate:function(){this.processedXData||this.processData();this.generatePoints();var a=this.options,d=a.stacking,c=this.xAxis,e=c.categories,n=this.yAxis,h=this.points,r=h.length,g=!!this.modifyValue,p,t=this.pointPlacementToXValue(),q=E(t),C=a.threshold,z=a.startFromThreshold?C:0,w,y=this.zoneAxis||"y",F=Number.MAX_VALUE;for(p=0;p<r;p++){var G=
-h[p],I=G.x;var D=G.y;var T=G.low,K=d&&n.stacks[(this.negStacks&&D<(z?0:C)?"-":"")+this.stackKey];n.positiveValuesOnly&&null!==D&&0>=D&&(G.isNull=!0);G.plotX=w=b(Math.min(Math.max(-1E5,c.translate(I,0,0,0,1,t,"flags"===this.type)),1E5));if(d&&this.visible&&K&&K[I]){var Z=this.getStackIndicator(Z,I,this.index);if(!G.isNull){var aa=K[I];var V=aa.points[Z.key]}}x(V)&&(T=V[0],D=V[1],T===z&&Z.key===K[I].base&&(T=m(E(C)&&C,n.min)),n.positiveValuesOnly&&0>=T&&(T=null),G.total=G.stackTotal=aa.total,G.percentage=
-aa.total&&G.y/aa.total*100,G.stackY=D,this.irregularWidths||aa.setOffset(this.pointXOffset||0,this.barW||0));G.yBottom=H(T)?Math.min(Math.max(-1E5,n.translate(T,0,1,0,1)),1E5):null;g&&(D=this.modifyValue(D,G));G.plotY=D="number"===typeof D&&Infinity!==D?Math.min(Math.max(-1E5,n.translate(D,0,1,0,1)),1E5):void 0;G.isInside=void 0!==D&&0<=D&&D<=n.len&&0<=w&&w<=c.len;G.clientX=q?b(c.translate(I,0,0,0,1,t)):w;G.negative=G[y]<(a[y+"Threshold"]||C||0);G.category=e&&void 0!==e[G.x]?e[G.x]:G.x;if(!G.isNull){void 0!==
-W&&(F=Math.min(F,Math.abs(w-W)));var W=w}G.zone=this.zones.length&&G.getZone()}this.closestPointRangePx=F;k(this,"afterTranslate")},getValidPoints:function(a,b,d){var f=this.chart;return(a||this.points||[]).filter(function(a){return b&&!f.isInsidePlot(a.plotX,a.plotY,f.inverted)?!1:d||!a.isNull})},getClipBox:function(a,b){var f=this.options,d=this.chart,l=d.inverted,c=this.xAxis,e=c&&this.yAxis;a&&!1===f.clip&&e?a=l?{y:-d.chartWidth+e.len+e.pos,height:d.chartWidth,width:d.chartHeight,x:-d.chartHeight+
-c.len+c.pos}:{y:-e.pos,height:d.chartHeight,width:d.chartWidth,x:-c.pos}:(a=this.clipBox||d.clipBox,b&&(a.width=d.plotSizeX,a.x=0));return b?{width:a.width,x:a.x}:a},setClip:function(a){var b=this.chart,f=this.options,d=b.renderer,c=b.inverted,e=this.clipBox,n=this.getClipBox(a),k=this.sharedClipKey||["_sharedClip",a&&a.duration,a&&a.easing,n.height,f.xAxis,f.yAxis].join(),h=b[k],m=b[k+"m"];h||(a&&(n.width=0,c&&(n.x=b.plotSizeX+(!1!==f.clip?0:b.plotTop)),b[k+"m"]=m=d.clipRect(c?b.plotSizeX+99:-99,
-c?-b.plotLeft:-b.plotTop,99,c?b.chartWidth:b.chartHeight)),b[k]=h=d.clipRect(n),h.count={length:0});a&&!h.count[this.index]&&(h.count[this.index]=!0,h.count.length+=1);if(!1!==f.clip||a)this.group.clip(a||e?h:b.clipRect),this.markerGroup.clip(m),this.sharedClipKey=k;a||(h.count[this.index]&&(delete h.count[this.index],--h.count.length),0===h.count.length&&k&&b[k]&&(e||(b[k]=b[k].destroy()),b[k+"m"]&&(b[k+"m"]=b[k+"m"].destroy())))},animate:function(b){var f=this.chart,d=a(this.options.animation);
-if(b)this.setClip(d);else{var c=this.sharedClipKey;b=f[c];var e=this.getClipBox(d,!0);b&&b.animate(e,d);f[c+"m"]&&f[c+"m"].animate({width:e.width+99,x:e.x-(f.inverted?0:99)},d);this.animate=null}},afterAnimate:function(){this.setClip();k(this,"afterAnimate");this.finishedAnimating=!0},drawPoints:function(){var a=this.points,b=this.chart,d,c=this.options.marker,e=this[this.specialGroup]||this.markerGroup;var n=this.xAxis;var k=m(c.enabled,!n||n.isRadial?!0:null,this.closestPointRangePx>=c.enabledThreshold*
-c.radius);if(!1!==c.enabled||this._hasPointMarkers)for(n=0;n<a.length;n++){var h=a[n];var r=(d=h.graphic)?"animate":"attr";var g=h.marker||{};var p=!!h.marker;var t=k&&void 0===g.enabled||g.enabled;var q=!1!==h.isInside;if(t&&!h.isNull){var C=m(g.symbol,this.symbol);t=this.markerAttribs(h,h.selected&&"select");d?d[q?"show":"hide"](q).animate(t):q&&(0<t.width||h.hasImage)&&(h.graphic=d=b.renderer.symbol(C,t.x,t.y,t.width,t.height,p?g:c).add(e));if(d&&!b.styledMode)d[r](this.pointAttribs(h,h.selected&&
-"select"));d&&d.addClass(h.getClassName(),!0)}else d&&(h.graphic=d.destroy())}},markerAttribs:function(a,b){var f=this.options.marker,d=a.marker||{},c=d.symbol||f.symbol,l=m(d.radius,f.radius);b&&(f=f.states[b],b=d.states&&d.states[b],l=m(b&&b.radius,f&&f.radius,l+(f&&f.radiusPlus||0)));a.hasImage=c&&0===c.indexOf("url");a.hasImage&&(l=0);a={x:Math.floor(a.plotX)-l,y:a.plotY-l};l&&(a.width=a.height=2*l);return a},pointAttribs:function(a,b){var f=this.options.marker,d=a&&a.options,c=d&&d.marker||{},
-l=this.color,e=d&&d.color,n=a&&a.color;d=m(c.lineWidth,f.lineWidth);var k=a&&a.zone&&a.zone.color;a=1;l=e||k||n||l;e=c.fillColor||f.fillColor||l;l=c.lineColor||f.lineColor||l;b=b||"normal";f=f.states[b];b=c.states&&c.states[b]||{};d=m(b.lineWidth,f.lineWidth,d+m(b.lineWidthPlus,f.lineWidthPlus,0));e=b.fillColor||f.fillColor||e;l=b.lineColor||f.lineColor||l;a=m(b.opacity,f.opacity,a);return{stroke:l,"stroke-width":d,fill:e,opacity:a}},destroy:function(a){var b=this,f=b.chart,d=/AppleWebKit\/533/.test(n.navigator.userAgent),
-e,h,m=b.data||[],g,p;k(b,"destroy");a||z(b);(b.axisTypes||[]).forEach(function(a){(p=b[a])&&p.series&&(y(p.series,b),p.isDirty=p.forceRedraw=!0)});b.legendItem&&b.chart.legend.destroyItem(b);for(h=m.length;h--;)(g=m[h])&&g.destroy&&g.destroy();b.points=null;c.clearTimeout(b.animationTimeout);t(b,function(a,b){a instanceof r&&!a.survive&&(e=d&&"group"===b?"hide":"destroy",a[e]())});f.hoverSeries===b&&(f.hoverSeries=null);y(f.series,b);f.orderSeries();t(b,function(f,d){a&&"hcEvents"===d||delete b[d]})},
-getGraphPath:function(a,b,d){var f=this,c=f.options,l=c.step,e,n=[],k=[],h;a=a||f.points;(e=a.reversed)&&a.reverse();(l={right:1,center:2}[l]||l&&3)&&e&&(l=4-l);!c.connectNulls||b||d||(a=this.getValidPoints(a));a.forEach(function(e,m){var B=e.plotX,v=e.plotY,r=a[m-1];(e.leftCliff||r&&r.rightCliff)&&!d&&(h=!0);e.isNull&&!H(b)&&0<m?h=!c.connectNulls:e.isNull&&!b?h=!0:(0===m||h?m=["M",e.plotX,e.plotY]:f.getPointSpline?m=f.getPointSpline(a,e,m):l?(m=1===l?["L",r.plotX,v]:2===l?["L",(r.plotX+B)/2,r.plotY,
-"L",(r.plotX+B)/2,v]:["L",B,r.plotY],m.push("L",B,v)):m=["L",B,v],k.push(e.x),l&&(k.push(e.x),2===l&&k.push(e.x)),n.push.apply(n,m),h=!1)});n.xMap=k;return f.graphPath=n},drawGraph:function(){var a=this,b=this.options,d=(this.gappedPath||this.getGraphPath).call(this),c=this.chart.styledMode,e=[["graph","highcharts-graph"]];c||e[0].push(b.lineColor||this.color||"#cccccc",b.dashStyle);e=a.getZonesGraphs(e);e.forEach(function(f,l){var e=f[0],n=a[e],k=n?"animate":"attr";n?(n.endX=a.preventGraphAnimation?
-null:d.xMap,n.animate({d:d})):d.length&&(a[e]=n=a.chart.renderer.path(d).addClass(f[1]).attr({zIndex:1}).add(a.group));n&&!c&&(e={stroke:f[2],"stroke-width":b.lineWidth,fill:a.fillGraph&&a.color||"none"},f[3]?e.dashstyle=f[3]:"square"!==b.linecap&&(e["stroke-linecap"]=e["stroke-linejoin"]="round"),n[k](e).shadow(2>l&&b.shadow));n&&(n.startX=d.xMap,n.isArea=d.isArea)})},getZonesGraphs:function(a){this.zones.forEach(function(b,f){f=["zone-graph-"+f,"highcharts-graph highcharts-zone-graph-"+f+" "+(b.className||
-"")];this.chart.styledMode||f.push(b.color||this.color,b.dashStyle||this.options.dashStyle);a.push(f)},this);return a},applyZones:function(){var a=this,b=this.chart,d=b.renderer,c=this.zones,e,n,k=this.clips||[],h,r=this.graph,g=this.area,p=Math.max(b.chartWidth,b.chartHeight),t=this[(this.zoneAxis||"y")+"Axis"],q=b.inverted,C,z,x,w=!1;if(c.length&&(r||g)&&t&&void 0!==t.min){var E=t.reversed;var y=t.horiz;r&&!this.showLine&&r.hide();g&&g.hide();var F=t.getExtremes();c.forEach(function(f,c){e=E?y?
-b.plotWidth:0:y?0:t.toPixels(F.min)||0;e=Math.min(Math.max(m(n,e),0),p);n=Math.min(Math.max(Math.round(t.toPixels(m(f.value,F.max),!0)||0),0),p);w&&(e=n=t.toPixels(F.max));C=Math.abs(e-n);z=Math.min(e,n);x=Math.max(e,n);t.isXAxis?(h={x:q?x:z,y:0,width:C,height:p},y||(h.x=b.plotHeight-h.x)):(h={x:0,y:q?x:z,width:p,height:C},y&&(h.y=b.plotWidth-h.y));q&&d.isVML&&(h=t.isXAxis?{x:0,y:E?z:x,height:h.width,width:b.chartWidth}:{x:h.y-b.plotLeft-b.spacingBox.x,y:0,width:h.height,height:b.chartHeight});k[c]?
-k[c].animate(h):k[c]=d.clipRect(h);r&&a["zone-graph-"+c].clip(k[c]);g&&a["zone-area-"+c].clip(k[c]);w=f.value>F.max;a.resetZones&&0===n&&(n=void 0)});this.clips=k}else a.visible&&(r&&r.show(!0),g&&g.show(!0))},invertGroups:function(a){function b(){["group","markerGroup"].forEach(function(b){f[b]&&(d.renderer.isVML&&f[b].attr({width:f.yAxis.len,height:f.xAxis.len}),f[b].width=f.yAxis.len,f[b].height=f.xAxis.len,f[b].invert(a))})}var f=this,d=f.chart;if(f.xAxis){var c=h(d,"resize",b);h(f,"destroy",
-c);b(a);f.invertGroups=b}},plotGroup:function(a,b,d,c,e){var f=this[a],l=!f;l&&(this[a]=f=this.chart.renderer.g().attr({zIndex:c||.1}).add(e));f.addClass("highcharts-"+b+" highcharts-series-"+this.index+" highcharts-"+this.type+"-series "+(H(this.colorIndex)?"highcharts-color-"+this.colorIndex+" ":"")+(this.options.className||"")+(f.hasClass("highcharts-tracker")?" highcharts-tracker":""),!0);f.attr({visibility:d})[l?"attr":"animate"](this.getPlotBox());return f},getPlotBox:function(){var a=this.chart,
-b=this.xAxis,d=this.yAxis;a.inverted&&(b=d,d=this.xAxis);return{translateX:b?b.left:a.plotLeft,translateY:d?d.top:a.plotTop,scaleX:1,scaleY:1}},render:function(){var b=this,d=b.chart,c=b.options,e=!!b.animate&&d.renderer.isSVG&&a(c.animation).duration,n=b.visible?"inherit":"hidden",h=c.zIndex,m=b.hasRendered,r=d.seriesGroup,g=d.inverted;k(this,"render");var p=b.plotGroup("group","series",n,h,r);b.markerGroup=b.plotGroup("markerGroup","markers",n,h,r);e&&b.animate(!0);p.inverted=b.isCartesian||b.invertable?
-g:!1;b.drawGraph&&(b.drawGraph(),b.applyZones());b.visible&&b.drawPoints();b.drawDataLabels&&b.drawDataLabels();b.redrawPoints&&b.redrawPoints();b.drawTracker&&!1!==b.options.enableMouseTracking&&b.drawTracker();b.invertGroups(g);!1===c.clip||b.sharedClipKey||m||p.clip(d.clipRect);e&&b.animate();m||(b.animationTimeout=q(function(){b.afterAnimate()},e||0));b.isDirty=!1;b.hasRendered=!0;k(b,"afterRender")},redraw:function(){var a=this.chart,b=this.isDirty||this.isDirtyData,d=this.group,c=this.xAxis,
-e=this.yAxis;d&&(a.inverted&&d.attr({width:a.plotWidth,height:a.plotHeight}),d.animate({translateX:m(c&&c.left,a.plotLeft),translateY:m(e&&e.top,a.plotTop)}));this.translate();this.render();b&&delete this.kdTree},kdAxisArray:["clientX","plotY"],searchPoint:function(a,b){var f=this.xAxis,d=this.yAxis,c=this.chart.inverted;return this.searchKDTree({clientX:c?f.len-a.chartY+f.pos:a.chartX-f.pos,plotY:c?d.len-a.chartX+d.pos:a.chartY-d.pos},b,a)},buildKDTree:function(a){function b(a,d,c){var l;if(l=a&&
-a.length){var e=f.kdAxisArray[d%c];a.sort(function(a,b){return a[e]-b[e]});l=Math.floor(l/2);return{point:a[l],left:b(a.slice(0,l),d+1,c),right:b(a.slice(l+1),d+1,c)}}}this.buildingKdTree=!0;var f=this,d=-1<f.options.findNearestPointBy.indexOf("y")?2:1;delete f.kdTree;q(function(){f.kdTree=b(f.getValidPoints(null,!f.directTouch),d,d);f.buildingKdTree=!1},f.options.kdNow||a&&"touchstart"===a.type?0:1)},searchKDTree:function(a,b,d){function f(a,b,d,k){var h=b.point,m=c.kdAxisArray[d%k],r=h;var B=H(a[l])&&
-H(h[l])?Math.pow(a[l]-h[l],2):null;var g=H(a[e])&&H(h[e])?Math.pow(a[e]-h[e],2):null;g=(B||0)+(g||0);h.dist=H(g)?Math.sqrt(g):Number.MAX_VALUE;h.distX=H(B)?Math.sqrt(B):Number.MAX_VALUE;m=a[m]-h[m];g=0>m?"left":"right";B=0>m?"right":"left";b[g]&&(g=f(a,b[g],d+1,k),r=g[n]<r[n]?g:h);b[B]&&Math.sqrt(m*m)<r[n]&&(a=f(a,b[B],d+1,k),r=a[n]<r[n]?a:r);return r}var c=this,l=this.kdAxisArray[0],e=this.kdAxisArray[1],n=b?"distX":"dist";b=-1<c.options.findNearestPointBy.indexOf("y")?2:1;this.kdTree||this.buildingKdTree||
-this.buildKDTree(d);if(this.kdTree)return f(a,this.kdTree,b,b)},pointPlacementToXValue:function(){var a=this.xAxis,b=this.options.pointPlacement;"between"===b&&(b=a.reversed?-.5:.5);E(b)&&(b*=m(this.options.pointRange||a.pointRange));return b}});""});K(D,"parts/Stacking.js",[D["parts/Globals.js"],D["parts/Utilities.js"]],function(c,g){var I=g.defined,G=g.destroyObjectProperties,H=g.objectEach,y=g.pick;g=c.Axis;var w=c.Chart,x=c.correctFloat,E=c.format,F=c.Series;c.StackItem=function(c,m,g,q,h){var a=
-c.chart.inverted;this.axis=c;this.isNegative=g;this.options=m=m||{};this.x=q;this.total=null;this.points={};this.stack=h;this.rightCliff=this.leftCliff=0;this.alignOptions={align:m.align||(a?g?"left":"right":"center"),verticalAlign:m.verticalAlign||(a?"middle":g?"bottom":"top"),y:m.y,x:m.x};this.textAlign=m.textAlign||(a?g?"right":"left":"center")};c.StackItem.prototype={destroy:function(){G(this,this.axis)},render:function(c){var m=this.axis.chart,g=this.options,t=g.format;t=t?E(t,this,m.time):g.formatter.call(this);
-this.label?this.label.attr({text:t,visibility:"hidden"}):(this.label=m.renderer.label(t,null,null,g.shape,null,null,g.useHTML,!1,"stack-labels"),t={text:t,align:this.textAlign,rotation:g.rotation,padding:y(g.padding,0),visibility:"hidden"},this.label.attr(t),m.styledMode||this.label.css(g.style),this.label.added||this.label.add(c));this.label.labelrank=m.plotHeight},setOffset:function(c,m,g,q,h){var a=this.axis,b=a.chart;q=a.translate(a.usePercentage?100:q?q:this.total,0,0,0,1);g=a.translate(g?g:
-0);g=I(q)&&Math.abs(q-g);c=y(h,b.xAxis[0].translate(this.x))+c;a=I(q)&&this.getStackBox(b,this,c,q,m,g,a);m=this.label;c=this.isNegative;h="justify"===y(this.options.overflow,"justify");if(m&&a){g=m.getBBox();var d=b.inverted?c?g.width:0:g.width/2,e=b.inverted?g.height/2:c?-4:g.height+4;this.alignOptions.x=y(this.options.x,0);m.align(this.alignOptions,null,a);q=m.alignAttr;m.show();q.y-=e;h&&(q.x-=d,F.prototype.justifyDataLabel.call(this.axis,m,this.alignOptions,q,g,a),q.x+=d);q.x=m.alignAttr.x;m.attr({x:q.x,
-y:q.y});y(!h&&this.options.crop,!0)&&((b=b.isInsidePlot(m.x+(b.inverted?0:-g.width/2),m.y)&&b.isInsidePlot(m.x+(b.inverted?c?-g.width:g.width:g.width/2),m.y+g.height))||m.hide())}},getStackBox:function(c,m,g,q,h,a,b){var d=m.axis.reversed,e=c.inverted;c=b.height+b.pos-(e?c.plotLeft:c.plotTop);m=m.isNegative&&!d||!m.isNegative&&d;return{x:e?m?q:q-a:g,y:e?c-g-h:m?c-q-a:c-q,width:e?a:h,height:e?h:a}}};w.prototype.getStacks=function(){var c=this,m=c.inverted;c.yAxis.forEach(function(c){c.stacks&&c.hasVisibleSeries&&
-(c.oldStacks=c.stacks)});c.series.forEach(function(g){var p=g.xAxis&&g.xAxis.options||{};!g.options.stacking||!0!==g.visible&&!1!==c.options.chart.ignoreHiddenSeries||(g.stackKey=[g.type,y(g.options.stack,""),m?p.top:p.left,m?p.height:p.width].join())})};g.prototype.buildStacks=function(){var c=this.series,m=y(this.options.reversedStacks,!0),g=c.length,q;if(!this.isXAxis){this.usePercentage=!1;for(q=g;q--;)c[m?q:g-q-1].setStackedPoints();for(q=0;q<g;q++)c[q].modifyStacks()}};g.prototype.renderStackTotals=
-function(){var c=this.chart,m=c.renderer,g=this.stacks,q=this.stackTotalGroup;q||(this.stackTotalGroup=q=m.g("stack-labels").attr({visibility:"visible",zIndex:6}).add());q.translate(c.plotLeft,c.plotTop);H(g,function(c){H(c,function(a){a.render(q)})})};g.prototype.resetStacks=function(){var c=this,m=c.stacks;c.isXAxis||H(m,function(m){H(m,function(g,h){g.touched<c.stacksTouched?(g.destroy(),delete m[h]):(g.total=null,g.cumulative=null)})})};g.prototype.cleanStacks=function(){if(!this.isXAxis){if(this.oldStacks)var c=
-this.stacks=this.oldStacks;H(c,function(c){H(c,function(c){c.cumulative=c.total})})}};F.prototype.setStackedPoints=function(){if(this.options.stacking&&(!0===this.visible||!1===this.chart.options.chart.ignoreHiddenSeries)){var g=this.processedXData,m=this.processedYData,p=[],q=m.length,h=this.options,a=h.threshold,b=y(h.startFromThreshold&&a,0),d=h.stack;h=h.stacking;var e=this.stackKey,k="-"+e,C=this.negStacks,z=this.yAxis,r=z.stacks,n=z.oldStacks,f,l;z.stacksTouched+=1;for(l=0;l<q;l++){var v=g[l];
-var B=m[l];var A=this.getStackIndicator(A,v,this.index);var u=A.key;var J=(f=C&&B<(b?0:a))?k:e;r[J]||(r[J]={});r[J][v]||(n[J]&&n[J][v]?(r[J][v]=n[J][v],r[J][v].total=null):r[J][v]=new c.StackItem(z,z.options.stackLabels,f,v,d));J=r[J][v];null!==B?(J.points[u]=J.points[this.index]=[y(J.cumulative,b)],I(J.cumulative)||(J.base=u),J.touched=z.stacksTouched,0<A.index&&!1===this.singleStacks&&(J.points[u][0]=J.points[this.index+","+v+",0"][0])):J.points[u]=J.points[this.index]=null;"percent"===h?(f=f?e:
-k,C&&r[f]&&r[f][v]?(f=r[f][v],J.total=f.total=Math.max(f.total,J.total)+Math.abs(B)||0):J.total=x(J.total+(Math.abs(B)||0))):J.total=x(J.total+(B||0));J.cumulative=y(J.cumulative,b)+(B||0);null!==B&&(J.points[u].push(J.cumulative),p[l]=J.cumulative)}"percent"===h&&(z.usePercentage=!0);this.stackedYData=p;z.oldStacks={}}};F.prototype.modifyStacks=function(){var c=this,m=c.stackKey,g=c.yAxis.stacks,q=c.processedXData,h,a=c.options.stacking;c[a+"Stacker"]&&[m,"-"+m].forEach(function(b){for(var d=q.length,
-e,k;d--;)if(e=q[d],h=c.getStackIndicator(h,e,c.index,b),k=(e=g[b]&&g[b][e])&&e.points[h.key])c[a+"Stacker"](k,e,d)})};F.prototype.percentStacker=function(c,m,g){m=m.total?100/m.total:0;c[0]=x(c[0]*m);c[1]=x(c[1]*m);this.stackedYData[g]=c[1]};F.prototype.getStackIndicator=function(c,m,g,q){!I(c)||c.x!==m||q&&c.key!==q?c={x:m,index:0,key:q}:c.index++;c.key=[g,m,c.index].join();return c}});K(D,"parts/Dynamics.js",[D["parts/Globals.js"],D["parts/Utilities.js"]],function(c,g){var I=g.defined,G=g.erase,
-H=g.extend,y=g.isArray,w=g.isNumber,x=g.isObject,E=g.isString,F=g.objectEach,t=g.pick,m=g.setAnimation,p=g.splat,q=c.addEvent,h=c.animate,a=c.Axis;g=c.Chart;var b=c.createElement,d=c.css,e=c.fireEvent,k=c.merge,C=c.Point,z=c.Series,r=c.seriesTypes;c.cleanRecursively=function(a,b){var f={};F(a,function(d,l){if(x(a[l],!0)&&!a.nodeType&&b[l])d=c.cleanRecursively(a[l],b[l]),Object.keys(d).length&&(f[l]=d);else if(x(a[l])||a[l]!==b[l])f[l]=a[l]});return f};H(g.prototype,{addSeries:function(a,b,c){var f,
-d=this;a&&(b=t(b,!0),e(d,"addSeries",{options:a},function(){f=d.initSeries(a);d.isDirtyLegend=!0;d.linkSeries();e(d,"afterAddSeries",{series:f});b&&d.redraw(c)}));return f},addAxis:function(a,b,d,c){return this.createAxis(b?"xAxis":"yAxis",{axis:a,redraw:d,animation:c})},addColorAxis:function(a,b,d){return this.createAxis("colorAxis",{axis:a,redraw:b,animation:d})},createAxis:function(b,f){var d=this.options,e="colorAxis"===b,n=f.redraw,h=f.animation;f=k(f.axis,{index:this[b].length,isX:"xAxis"===
-b});var m=e?new c.ColorAxis(this,f):new a(this,f);d[b]=p(d[b]||{});d[b].push(f);e&&(this.isDirtyLegend=!0,this.axes.forEach(function(a){a.series=[]}),this.series.forEach(function(a){a.bindAxes();a.isDirtyData=!0}));t(n,!0)&&this.redraw(h);return m},showLoading:function(a){var f=this,c=f.options,e=f.loadingDiv,k=c.loading,n=function(){e&&d(e,{left:f.plotLeft+"px",top:f.plotTop+"px",width:f.plotWidth+"px",height:f.plotHeight+"px"})};e||(f.loadingDiv=e=b("div",{className:"highcharts-loading highcharts-loading-hidden"},
-null,f.container),f.loadingSpan=b("span",{className:"highcharts-loading-inner"},null,e),q(f,"redraw",n));e.className="highcharts-loading";f.loadingSpan.innerHTML=t(a,c.lang.loading,"");f.styledMode||(d(e,H(k.style,{zIndex:10})),d(f.loadingSpan,k.labelStyle),f.loadingShown||(d(e,{opacity:0,display:""}),h(e,{opacity:k.style.opacity||.5},{duration:k.showDuration||0})));f.loadingShown=!0;n()},hideLoading:function(){var a=this.options,b=this.loadingDiv;b&&(b.className="highcharts-loading highcharts-loading-hidden",
-this.styledMode||h(b,{opacity:0},{duration:a.loading.hideDuration||100,complete:function(){d(b,{display:"none"})}}));this.loadingShown=!1},propsRequireDirtyBox:"backgroundColor borderColor borderWidth borderRadius plotBackgroundColor plotBackgroundImage plotBorderColor plotBorderWidth plotShadow shadow".split(" "),propsRequireReflow:"margin marginTop marginRight marginBottom marginLeft spacing spacingTop spacingRight spacingBottom spacingLeft".split(" "),propsRequireUpdateSeries:"chart.inverted chart.polar chart.ignoreHiddenSeries chart.type colors plotOptions time tooltip".split(" "),
-collectionsWithUpdate:"xAxis yAxis zAxis colorAxis series pane".split(" "),update:function(a,b,d,h){var f=this,l={credits:"addCredits",title:"setTitle",subtitle:"setSubtitle",caption:"setCaption"},n,m,g,r=a.isResponsiveOptions,v=[];e(f,"update",{options:a});r||f.setResponsive(!1,!0);a=c.cleanRecursively(a,f.options);k(!0,f.userOptions,a);if(n=a.chart){k(!0,f.options.chart,n);"className"in n&&f.setClassName(n.className);"reflow"in n&&f.setReflow(n.reflow);if("inverted"in n||"polar"in n||"type"in n){f.propFromSeries();
-var C=!0}"alignTicks"in n&&(C=!0);F(n,function(a,b){-1!==f.propsRequireUpdateSeries.indexOf("chart."+b)&&(m=!0);-1!==f.propsRequireDirtyBox.indexOf(b)&&(f.isDirtyBox=!0);r||-1===f.propsRequireReflow.indexOf(b)||(g=!0)});!f.styledMode&&"style"in n&&f.renderer.setStyle(n.style)}!f.styledMode&&a.colors&&(this.options.colors=a.colors);a.plotOptions&&k(!0,this.options.plotOptions,a.plotOptions);a.time&&this.time===c.time&&(this.time=new c.Time(a.time));F(a,function(a,b){if(f[b]&&"function"===typeof f[b].update)f[b].update(a,
-!1);else if("function"===typeof f[l[b]])f[l[b]](a);"chart"!==b&&-1!==f.propsRequireUpdateSeries.indexOf(b)&&(m=!0)});this.collectionsWithUpdate.forEach(function(b){if(a[b]){if("series"===b){var c=[];f[b].forEach(function(a,b){a.options.isInternal||c.push(t(a.options.index,b))})}p(a[b]).forEach(function(a,l){(l=I(a.id)&&f.get(a.id)||f[b][c?c[l]:l])&&l.coll===b&&(l.update(a,!1),d&&(l.touched=!0));!l&&d&&f.collectionsWithInit[b]&&(f.collectionsWithInit[b][0].apply(f,[a].concat(f.collectionsWithInit[b][1]||
-[]).concat([!1])).touched=!0)});d&&f[b].forEach(function(a){a.touched||a.options.isInternal?delete a.touched:v.push(a)})}});v.forEach(function(a){a.remove&&a.remove(!1)});C&&f.axes.forEach(function(a){a.update({},!1)});m&&f.series.forEach(function(a){a.update({},!1)});a.loading&&k(!0,f.options.loading,a.loading);C=n&&n.width;n=n&&n.height;E(n)&&(n=c.relativeLength(n,C||f.chartWidth));g||w(C)&&C!==f.chartWidth||w(n)&&n!==f.chartHeight?f.setSize(C,n,h):t(b,!0)&&f.redraw(h);e(f,"afterUpdate",{options:a,
-redraw:b,animation:h})},setSubtitle:function(a,b){this.applyDescription("subtitle",a);this.layOutTitles(b)},setCaption:function(a,b){this.applyDescription("caption",a);this.layOutTitles(b)}});g.prototype.collectionsWithInit={xAxis:[g.prototype.addAxis,[!0]],yAxis:[g.prototype.addAxis,[!1]],colorAxis:[g.prototype.addColorAxis,[!1]],series:[g.prototype.addSeries]};H(C.prototype,{update:function(a,b,d,c){function f(){l.applyOptions(a);null===l.y&&k&&(l.graphic=k.destroy());x(a,!0)&&(k&&k.element&&a&&
-a.marker&&void 0!==a.marker.symbol&&(l.graphic=k.destroy()),a&&a.dataLabels&&l.dataLabel&&(l.dataLabel=l.dataLabel.destroy()),l.connector&&(l.connector=l.connector.destroy()));n=l.index;e.updateParallelArrays(l,n);m.data[n]=x(m.data[n],!0)||x(a,!0)?l.options:t(a,m.data[n]);e.isDirty=e.isDirtyData=!0;!e.fixedBox&&e.hasCartesianSeries&&(h.isDirtyBox=!0);"point"===m.legendType&&(h.isDirtyLegend=!0);b&&h.redraw(d)}var l=this,e=l.series,k=l.graphic,n,h=e.chart,m=e.options;b=t(b,!0);!1===c?f():l.firePointEvent("update",
-{options:a},f)},remove:function(a,b){this.series.removePoint(this.series.data.indexOf(this),a,b)}});H(z.prototype,{addPoint:function(a,b,d,c,k){var f=this.options,l=this.data,n=this.chart,h=this.xAxis;h=h&&h.hasNames&&h.names;var m=f.data,g=this.xData,r;b=t(b,!0);var B={series:this};this.pointClass.prototype.applyOptions.apply(B,[a]);var v=B.x;var p=g.length;if(this.requireSorting&&v<g[p-1])for(r=!0;p&&g[p-1]>v;)p--;this.updateParallelArrays(B,"splice",p,0,0);this.updateParallelArrays(B,p);h&&B.name&&
-(h[v]=B.name);m.splice(p,0,a);r&&(this.data.splice(p,0,null),this.processData());"point"===f.legendType&&this.generatePoints();d&&(l[0]&&l[0].remove?l[0].remove(!1):(l.shift(),this.updateParallelArrays(B,"shift"),m.shift()));!1!==k&&e(this,"addPoint",{point:B});this.isDirtyData=this.isDirty=!0;b&&n.redraw(c)},removePoint:function(a,b,d){var f=this,c=f.data,l=c[a],e=f.points,k=f.chart,n=function(){e&&e.length===c.length&&e.splice(a,1);c.splice(a,1);f.options.data.splice(a,1);f.updateParallelArrays(l||
-{series:f},"splice",a,1);l&&l.destroy();f.isDirty=!0;f.isDirtyData=!0;b&&k.redraw()};m(d,k);b=t(b,!0);l?l.firePointEvent("remove",null,n):n()},remove:function(a,b,d,c){function f(){l.destroy(c);l.remove=null;k.isDirtyLegend=k.isDirtyBox=!0;k.linkSeries();t(a,!0)&&k.redraw(b)}var l=this,k=l.chart;!1!==d?e(l,"remove",null,f):f()},update:function(a,b){a=c.cleanRecursively(a,this.userOptions);e(this,"update",{options:a});var f=this,d=f.chart,n=f.userOptions,h=f.initialType||f.type,m=a.type||n.type||d.options.chart.type,
-g=!(this.hasDerivedData||a.dataGrouping||m&&m!==this.type||void 0!==a.pointStart||a.pointInterval||a.pointIntervalUnit||a.keys),p=r[h].prototype,C,q=["group","markerGroup","dataLabelsGroup","transformGroup"],z=["eventOptions","navigatorSeries","baseSeries"],x=f.finishedAnimating&&{animation:!1},w={};g&&(z.push("data","isDirtyData","points","processedXData","processedYData","xIncrement","_hasPointMarkers","_hasPointLabels","mapMap","mapData","minY","maxY","minX","maxX"),!1!==a.visible&&z.push("area",
-"graph"),f.parallelArrays.forEach(function(a){z.push(a+"Data")}),a.data&&this.setData(a.data,!1));a=k(n,x,{index:void 0===n.index?f.index:n.index,pointStart:t(n.pointStart,f.xData[0])},!g&&{data:f.options.data},a);g&&a.data&&(a.data=f.options.data);z=q.concat(z);z.forEach(function(a){z[a]=f[a];delete f[a]});f.remove(!1,null,!1,!0);for(C in p)f[C]=void 0;r[m||h]?H(f,r[m||h].prototype):c.error(17,!0,d,{missingModuleFor:m||h});z.forEach(function(a){f[a]=z[a]});f.init(d,a);if(g&&this.points){var E=f.options;
-!1===E.visible?(w.graphic=1,w.dataLabel=1):f._hasPointLabels||(m=E.marker,p=E.dataLabels,m&&(!1===m.enabled||"symbol"in m)&&(w.graphic=1),p&&!1===p.enabled&&(w.dataLabel=1));this.points.forEach(function(a){a&&a.series&&(a.resolveColor(),Object.keys(w).length&&a.destroyElements(w),!1===E.showInLegend&&a.legendItem&&d.legend.destroyItem(a))},this)}a.zIndex!==n.zIndex&&q.forEach(function(b){f[b]&&f[b].attr({zIndex:a.zIndex})});f.initialType=h;d.linkSeries();e(this,"afterUpdate");t(b,!0)&&d.redraw(g?
-void 0:!1)},setName:function(a){this.name=this.options.name=this.userOptions.name=a;this.chart.isDirtyLegend=!0}});H(a.prototype,{update:function(a,b){var f=this.chart,d=a&&a.events||{};a=k(this.userOptions,a);f.options[this.coll].indexOf&&(f.options[this.coll][f.options[this.coll].indexOf(this.userOptions)]=a);F(f.options[this.coll].events,function(a,b){"undefined"===typeof d[b]&&(d[b]=void 0)});this.destroy(!0);this.init(f,H(a,{events:d}));f.isDirtyBox=!0;t(b,!0)&&f.redraw()},remove:function(a){for(var b=
-this.chart,d=this.coll,c=this.series,e=c.length;e--;)c[e]&&c[e].remove(!1);G(b.axes,this);G(b[d],this);y(b.options[d])?b.options[d].splice(this.options.index,1):delete b.options[d];b[d].forEach(function(a,b){a.options.index=a.userOptions.index=b});this.destroy();b.isDirtyBox=!0;t(a,!0)&&b.redraw()},setTitle:function(a,b){this.update({title:a},b)},setCategories:function(a,b){this.update({categories:a},b)}})});K(D,"parts/AreaSeries.js",[D["parts/Globals.js"],D["parts/Utilities.js"]],function(c,g){var I=
-g.objectEach,G=g.pick,H=c.color,y=c.Series;g=c.seriesType;g("area","line",{softThreshold:!1,threshold:0},{singleStacks:!1,getStackPoints:function(c){var g=[],w=[],y=this.xAxis,t=this.yAxis,m=t.stacks[this.stackKey],p={},q=this.index,h=t.series,a=h.length,b=G(t.options.reversedStacks,!0)?1:-1,d;c=c||this.points;if(this.options.stacking){for(d=0;d<c.length;d++)c[d].leftNull=c[d].rightNull=void 0,p[c[d].x]=c[d];I(m,function(a,b){null!==a.total&&w.push(b)});w.sort(function(a,b){return a-b});var e=h.map(function(a){return a.visible});
-w.forEach(function(c,h){var k=0,r,n;if(p[c]&&!p[c].isNull)g.push(p[c]),[-1,1].forEach(function(f){var l=1===f?"rightNull":"leftNull",k=0,g=m[w[h+f]];if(g)for(d=q;0<=d&&d<a;)r=g.points[d],r||(d===q?p[c][l]=!0:e[d]&&(n=m[c].points[d])&&(k-=n[1]-n[0])),d+=b;p[c][1===f?"rightCliff":"leftCliff"]=k});else{for(d=q;0<=d&&d<a;){if(r=m[c].points[d]){k=r[1];break}d+=b}k=t.translate(k,0,1,0,1);g.push({isNull:!0,plotX:y.translate(c,0,0,0,1),x:c,plotY:k,yBottom:k})}})}return g},getGraphPath:function(c){var g=y.prototype.getGraphPath,
-w=this.options,F=w.stacking,t=this.yAxis,m,p=[],q=[],h=this.index,a=t.stacks[this.stackKey],b=w.threshold,d=Math.round(t.getThreshold(w.threshold));w=G(w.connectNulls,"percent"===F);var e=function(e,k,f){var l=c[e];e=F&&a[l.x].points[h];var n=l[f+"Null"]||0;f=l[f+"Cliff"]||0;l=!0;if(f||n){var m=(n?e[0]:e[1])+f;var g=e[0]+f;l=!!n}else!F&&c[k]&&c[k].isNull&&(m=g=b);void 0!==m&&(q.push({plotX:C,plotY:null===m?d:t.getThreshold(m),isNull:l,isCliff:!0}),p.push({plotX:C,plotY:null===g?d:t.getThreshold(g),
-doCurve:!1}))};c=c||this.points;F&&(c=this.getStackPoints(c));for(m=0;m<c.length;m++){F||(c[m].leftCliff=c[m].rightCliff=c[m].leftNull=c[m].rightNull=void 0);var k=c[m].isNull;var C=G(c[m].rectPlotX,c[m].plotX);var z=G(c[m].yBottom,d);if(!k||w)w||e(m,m-1,"left"),k&&!F&&w||(q.push(c[m]),p.push({x:m,plotX:C,plotY:z})),w||e(m,m+1,"right")}m=g.call(this,q,!0,!0);p.reversed=!0;k=g.call(this,p,!0,!0);k.length&&(k[0]="L");k=m.concat(k);g=g.call(this,q,!1,w);k.xMap=m.xMap;this.areaPath=k;return g},drawGraph:function(){this.areaPath=
-[];y.prototype.drawGraph.apply(this);var c=this,g=this.areaPath,E=this.options,F=[["area","highcharts-area",this.color,E.fillColor]];this.zones.forEach(function(g,m){F.push(["zone-area-"+m,"highcharts-area highcharts-zone-area-"+m+" "+g.className,g.color||c.color,g.fillColor||E.fillColor])});F.forEach(function(t){var m=t[0],p=c[m],q=p?"animate":"attr",h={};p?(p.endX=c.preventGraphAnimation?null:g.xMap,p.animate({d:g})):(h.zIndex=0,p=c[m]=c.chart.renderer.path(g).addClass(t[1]).add(c.group),p.isArea=
-!0);c.chart.styledMode||(h.fill=G(t[3],H(t[2]).setOpacity(G(E.fillOpacity,.75)).get()));p[q](h);p.startX=g.xMap;p.shiftUnit=E.step?2:1})},drawLegendSymbol:c.LegendSymbolMixin.drawRectangle});""});K(D,"parts/SplineSeries.js",[D["parts/Globals.js"],D["parts/Utilities.js"]],function(c,g){var I=g.pick;c=c.seriesType;c("spline","line",{},{getPointSpline:function(c,g,y){var w=g.plotX,x=g.plotY,E=c[y-1];y=c[y+1];if(E&&!E.isNull&&!1!==E.doCurve&&!g.isCliff&&y&&!y.isNull&&!1!==y.doCurve&&!g.isCliff){c=E.plotY;
-var F=y.plotX;y=y.plotY;var t=0;var m=(1.5*w+E.plotX)/2.5;var p=(1.5*x+c)/2.5;F=(1.5*w+F)/2.5;var q=(1.5*x+y)/2.5;F!==m&&(t=(q-p)*(F-w)/(F-m)+x-q);p+=t;q+=t;p>c&&p>x?(p=Math.max(c,x),q=2*x-p):p<c&&p<x&&(p=Math.min(c,x),q=2*x-p);q>y&&q>x?(q=Math.max(y,x),p=2*x-q):q<y&&q<x&&(q=Math.min(y,x),p=2*x-q);g.rightContX=F;g.rightContY=q}g=["C",I(E.rightContX,E.plotX),I(E.rightContY,E.plotY),I(m,w),I(p,x),w,x];E.rightContX=E.rightContY=null;return g}});""});K(D,"parts/AreaSplineSeries.js",[D["parts/Globals.js"]],
-function(c){var g=c.seriesTypes.area.prototype,I=c.seriesType;I("areaspline","spline",c.defaultPlotOptions.area,{getStackPoints:g.getStackPoints,getGraphPath:g.getGraphPath,drawGraph:g.drawGraph,drawLegendSymbol:c.LegendSymbolMixin.drawRectangle});""});K(D,"parts/ColumnSeries.js",[D["parts/Globals.js"],D["parts/Utilities.js"]],function(c,g){var I=g.defined,G=g.extend,H=g.isNumber,y=g.pick,w=c.animObject,x=c.color,E=c.merge,F=c.Series;g=c.seriesType;var t=c.svg;g("column","line",{borderRadius:0,crisp:!0,
-groupPadding:.2,marker:null,pointPadding:.1,minPointLength:0,cropThreshold:50,pointRange:null,states:{hover:{halo:!1,brightness:.1},select:{color:"#cccccc",borderColor:"#000000"}},dataLabels:{align:null,verticalAlign:null,y:null},softThreshold:!1,startFromThreshold:!0,stickyTracking:!1,tooltip:{distance:6},threshold:0,borderColor:"#ffffff"},{cropShoulder:0,directTouch:!0,trackerGroups:["group","dataLabelsGroup"],negStacks:!0,init:function(){F.prototype.init.apply(this,arguments);var c=this,g=c.chart;
-g.hasRendered&&g.series.forEach(function(m){m.type===c.type&&(m.isDirty=!0)})},getColumnMetrics:function(){var c=this,g=c.options,q=c.xAxis,h=c.yAxis,a=q.options.reversedStacks;a=q.reversed&&!a||!q.reversed&&a;var b,d={},e=0;!1===g.grouping?e=1:c.chart.series.forEach(function(a){var k=a.yAxis,f=a.options;if(a.type===c.type&&(a.visible||!c.chart.options.chart.ignoreHiddenSeries)&&h.len===k.len&&h.pos===k.pos){if(f.stacking){b=a.stackKey;void 0===d[b]&&(d[b]=e++);var l=d[b]}else!1!==f.grouping&&(l=
-e++);a.columnIndex=l}});var k=Math.min(Math.abs(q.transA)*(q.ordinalSlope||g.pointRange||q.closestPointRange||q.tickInterval||1),q.len),C=k*g.groupPadding,z=(k-2*C)/(e||1);g=Math.min(g.maxPointWidth||q.len,y(g.pointWidth,z*(1-2*g.pointPadding)));c.columnMetrics={width:g,offset:(z-g)/2+(C+((c.columnIndex||0)+(a?1:0))*z-k/2)*(a?-1:1)};return c.columnMetrics},crispCol:function(c,g,q,h){var a=this.chart,b=this.borderWidth,d=-(b%2?.5:0);b=b%2?.5:1;a.inverted&&a.renderer.isVML&&(b+=1);this.options.crisp&&
-(q=Math.round(c+q)+d,c=Math.round(c)+d,q-=c);h=Math.round(g+h)+b;d=.5>=Math.abs(g)&&.5<h;g=Math.round(g)+b;h-=g;d&&h&&(--g,h+=1);return{x:c,y:g,width:q,height:h}},translate:function(){var c=this,g=c.chart,q=c.options,h=c.dense=2>c.closestPointRange*c.xAxis.transA;h=c.borderWidth=y(q.borderWidth,h?0:1);var a=c.yAxis,b=q.threshold,d=c.translatedThreshold=a.getThreshold(b),e=y(q.minPointLength,5),k=c.getColumnMetrics(),C=k.width,z=c.barW=Math.max(C,1+2*h),r=c.pointXOffset=k.offset,n=c.dataMin,f=c.dataMax;
-g.inverted&&(d-=.5);q.pointPadding&&(z=Math.ceil(z));F.prototype.translate.apply(c);c.points.forEach(function(l){var k=y(l.yBottom,d),h=999+Math.abs(k),m=C;h=Math.min(Math.max(-h,l.plotY),a.len+h);var u=l.plotX+r,p=z,q=Math.min(h,k),t=Math.max(h,k)-q;if(e&&Math.abs(t)<e){t=e;var x=!a.reversed&&!l.negative||a.reversed&&l.negative;l.y===b&&c.dataMax<=b&&a.min<b&&n!==f&&(x=!x);q=Math.abs(q-d)>e?k-e:d-(x?e:0)}I(l.options.pointWidth)&&(m=p=Math.ceil(l.options.pointWidth),u-=Math.round((m-C)/2));l.barX=
-u;l.pointWidth=m;l.tooltipPos=g.inverted?[a.len+a.pos-g.plotLeft-h,c.xAxis.len-u-p/2,t]:[u+p/2,h+a.pos-g.plotTop,t];l.shapeType=c.pointClass.prototype.shapeType||"rect";l.shapeArgs=c.crispCol.apply(c,l.isNull?[u,d,p,0]:[u,q,p,t])})},getSymbol:c.noop,drawLegendSymbol:c.LegendSymbolMixin.drawRectangle,drawGraph:function(){this.group[this.dense?"addClass":"removeClass"]("highcharts-dense-data")},pointAttribs:function(c,g){var m=this.options,h=this.pointAttrToOptions||{};var a=h.stroke||"borderColor";
-var b=h["stroke-width"]||"borderWidth",d=c&&c.color||this.color,e=c&&c[a]||m[a]||this.color||d,k=c&&c[b]||m[b]||this[b]||0;h=c&&c.options.dashStyle||m.dashStyle;var p=y(m.opacity,1);if(c&&this.zones.length){var z=c.getZone();d=c.options.color||z&&(z.color||c.nonZonedColor)||this.color;z&&(e=z.borderColor||e,h=z.dashStyle||h,k=z.borderWidth||k)}g&&(c=E(m.states[g],c.options.states&&c.options.states[g]||{}),g=c.brightness,d=c.color||void 0!==g&&x(d).brighten(c.brightness).get()||d,e=c[a]||e,k=c[b]||
-k,h=c.dashStyle||h,p=y(c.opacity,p));a={fill:d,stroke:e,"stroke-width":k,opacity:p};h&&(a.dashstyle=h);return a},drawPoints:function(){var c=this,g=this.chart,q=c.options,h=g.renderer,a=q.animationLimit||250,b;c.points.forEach(function(d){var e=d.graphic,k=e&&g.pointCount<a?"animate":"attr";if(H(d.plotY)&&null!==d.y){b=d.shapeArgs;e&&d.hasNewShapeType()&&(e=e.destroy());if(e)e[k](E(b));else d.graphic=e=h[d.shapeType](b).add(d.group||c.group);if(q.borderRadius)e[k]({r:q.borderRadius});g.styledMode||
-e[k](c.pointAttribs(d,d.selected&&"select")).shadow(!1!==d.allowShadow&&q.shadow,null,q.stacking&&!q.borderRadius);e.addClass(d.getClassName(),!0)}else e&&(d.graphic=e.destroy())})},animate:function(c){var g=this,m=this.yAxis,h=g.options,a=this.chart.inverted,b={},d=a?"translateX":"translateY";if(t)if(c)b.scaleY=.001,c=Math.min(m.pos+m.len,Math.max(m.pos,m.toPixels(h.threshold))),a?b.translateX=c-m.len:b.translateY=c,g.clipBox&&g.setClip(),g.group.attr(b);else{var e=g.group.attr(d);g.group.animate({scaleY:1},
-G(w(g.options.animation),{step:function(a,c){b[d]=e+c.pos*(m.pos-e);g.group.attr(b)}}));g.animate=null}},remove:function(){var c=this,g=c.chart;g.hasRendered&&g.series.forEach(function(g){g.type===c.type&&(g.isDirty=!0)});F.prototype.remove.apply(c,arguments)}});""});K(D,"parts/BarSeries.js",[D["parts/Globals.js"]],function(c){c=c.seriesType;c("bar","column",null,{inverted:!0});""});K(D,"parts/ScatterSeries.js",[D["parts/Globals.js"]],function(c){var g=c.Series,I=c.seriesType;I("scatter","line",{lineWidth:0,
-findNearestPointBy:"xy",jitter:{x:0,y:0},marker:{enabled:!0},tooltip:{headerFormat:'<span style="color:{point.color}">\u25cf</span> <span style="font-size: 10px"> {series.name}</span><br/>',pointFormat:"x: <b>{point.x}</b><br/>y: <b>{point.y}</b><br/>"}},{sorted:!1,requireSorting:!1,noSharedTooltip:!0,trackerGroups:["group","markerGroup","dataLabelsGroup"],takeOrdinalPosition:!1,drawGraph:function(){this.options.lineWidth&&g.prototype.drawGraph.call(this)},applyJitter:function(){var c=this,g=this.options.jitter,
-y=this.points.length;g&&this.points.forEach(function(w,x){["x","y"].forEach(function(E,F){var t="plot"+E.toUpperCase();if(g[E]&&!w.isNull){var m=c[E+"Axis"];var p=g[E]*m.transA;if(m&&!m.isLog){var q=Math.max(0,w[t]-p);m=Math.min(m.len,w[t]+p);F=1E4*Math.sin(x+F*y);w[t]=q+(m-q)*(F-Math.floor(F));"x"===E&&(w.clientX=w.plotX)}}})})}});c.addEvent(g,"afterTranslate",function(){this.applyJitter&&this.applyJitter()});""});K(D,"mixins/centered-series.js",[D["parts/Globals.js"],D["parts/Utilities.js"]],function(c,
-g){var I=g.isNumber,G=g.pick,H=c.deg2rad,y=c.relativeLength;c.CenteredSeriesMixin={getCenter:function(){var c=this.options,g=this.chart,E=2*(c.slicedOffset||0),F=g.plotWidth-2*E;g=g.plotHeight-2*E;var t=c.center;t=[G(t[0],"50%"),G(t[1],"50%"),c.size||"100%",c.innerSize||0];var m=Math.min(F,g),p;for(p=0;4>p;++p){var q=t[p];c=2>p||2===p&&/%$/.test(q);t[p]=y(q,[F,g,m,t[2]][p])+(c?E:0)}t[3]>t[2]&&(t[3]=t[2]);return t},getStartAndEndRadians:function(c,g){c=I(c)?c:0;g=I(g)&&g>c&&360>g-c?g:c+360;return{start:H*
-(c+-90),end:H*(g+-90)}}}});K(D,"parts/PieSeries.js",[D["parts/Globals.js"],D["parts/Utilities.js"]],function(c,g){var I=g.defined,G=g.isNumber,H=g.pick,y=g.setAnimation,w=c.addEvent;g=c.CenteredSeriesMixin;var x=g.getStartAndEndRadians,E=c.merge,F=c.noop,t=c.Point,m=c.Series,p=c.seriesType,q=c.fireEvent;p("pie","line",{center:[null,null],clip:!1,colorByPoint:!0,dataLabels:{allowOverlap:!0,connectorPadding:5,distance:30,enabled:!0,formatter:function(){return this.point.isNull?void 0:this.point.name},
-softConnector:!0,x:0,connectorShape:"fixedOffset",crookDistance:"70%"},fillColor:void 0,ignoreHiddenPoint:!0,inactiveOtherPoints:!0,legendType:"point",marker:null,size:null,showInLegend:!1,slicedOffset:10,stickyTracking:!1,tooltip:{followPointer:!0},borderColor:"#ffffff",borderWidth:1,lineWidth:void 0,states:{hover:{brightness:.1}}},{isCartesian:!1,requireSorting:!1,directTouch:!0,noSharedTooltip:!0,trackerGroups:["group","dataLabelsGroup"],axisTypes:[],pointAttribs:c.seriesTypes.column.prototype.pointAttribs,
-animate:function(c){var a=this,b=a.points,d=a.startAngleRad;c||(b.forEach(function(b){var c=b.graphic,e=b.shapeArgs;c&&(c.attr({r:b.startR||a.center[3]/2,start:d,end:d}),c.animate({r:e.r,start:e.start,end:e.end},a.options.animation))}),a.animate=null)},hasData:function(){return!!this.processedXData.length},updateTotals:function(){var c,a=0,b=this.points,d=b.length,e=this.options.ignoreHiddenPoint;for(c=0;c<d;c++){var k=b[c];a+=e&&!k.visible?0:k.isNull?0:k.y}this.total=a;for(c=0;c<d;c++)k=b[c],k.percentage=
-0<a&&(k.visible||!e)?k.y/a*100:0,k.total=a},generatePoints:function(){m.prototype.generatePoints.call(this);this.updateTotals()},getX:function(c,a,b){var d=this.center,e=this.radii?this.radii[b.index]:d[2]/2;return d[0]+(a?-1:1)*Math.cos(Math.asin(Math.max(Math.min((c-d[1])/(e+b.labelDistance),1),-1)))*(e+b.labelDistance)+(0<b.labelDistance?(a?-1:1)*this.options.dataLabels.padding:0)},translate:function(h){this.generatePoints();var a=0,b=this.options,d=b.slicedOffset,e=d+(b.borderWidth||0),k=x(b.startAngle,
-b.endAngle),g=this.startAngleRad=k.start;k=(this.endAngleRad=k.end)-g;var m=this.points,r=b.dataLabels.distance;b=b.ignoreHiddenPoint;var n,f=m.length;h||(this.center=h=this.getCenter());for(n=0;n<f;n++){var l=m[n];var v=g+a*k;if(!b||l.visible)a+=l.percentage/100;var B=g+a*k;l.shapeType="arc";l.shapeArgs={x:h[0],y:h[1],r:h[2]/2,innerR:h[3]/2,start:Math.round(1E3*v)/1E3,end:Math.round(1E3*B)/1E3};l.labelDistance=H(l.options.dataLabels&&l.options.dataLabels.distance,r);l.labelDistance=c.relativeLength(l.labelDistance,
-l.shapeArgs.r);this.maxLabelDistance=Math.max(this.maxLabelDistance||0,l.labelDistance);B=(B+v)/2;B>1.5*Math.PI?B-=2*Math.PI:B<-Math.PI/2&&(B+=2*Math.PI);l.slicedTranslation={translateX:Math.round(Math.cos(B)*d),translateY:Math.round(Math.sin(B)*d)};var A=Math.cos(B)*h[2]/2;var u=Math.sin(B)*h[2]/2;l.tooltipPos=[h[0]+.7*A,h[1]+.7*u];l.half=B<-Math.PI/2||B>Math.PI/2?1:0;l.angle=B;v=Math.min(e,l.labelDistance/5);l.labelPosition={natural:{x:h[0]+A+Math.cos(B)*l.labelDistance,y:h[1]+u+Math.sin(B)*l.labelDistance},
-"final":{},alignment:0>l.labelDistance?"center":l.half?"right":"left",connectorPosition:{breakAt:{x:h[0]+A+Math.cos(B)*v,y:h[1]+u+Math.sin(B)*v},touchingSliceAt:{x:h[0]+A,y:h[1]+u}}}}q(this,"afterTranslate")},drawEmpty:function(){var c=this.options;if(0===this.total){var a=this.center[0];var b=this.center[1];this.graph||(this.graph=this.chart.renderer.circle(a,b,0).addClass("highcharts-graph").add(this.group));this.graph.animate({"stroke-width":c.borderWidth,cx:a,cy:b,r:this.center[2]/2,fill:c.fillColor||
-"none",stroke:c.color||"#cccccc"})}else this.graph&&(this.graph=this.graph.destroy())},redrawPoints:function(){var c=this,a=c.chart,b=a.renderer,d,e,k,g,m=c.options.shadow;this.drawEmpty();!m||c.shadowGroup||a.styledMode||(c.shadowGroup=b.g("shadow").attr({zIndex:-1}).add(c.group));c.points.forEach(function(h){var n={};e=h.graphic;if(!h.isNull&&e){g=h.shapeArgs;d=h.getTranslate();if(!a.styledMode){var f=h.shadowGroup;m&&!f&&(f=h.shadowGroup=b.g("shadow").add(c.shadowGroup));f&&f.attr(d);k=c.pointAttribs(h,
-h.selected&&"select")}h.delayedRendering?(e.setRadialReference(c.center).attr(g).attr(d),a.styledMode||e.attr(k).attr({"stroke-linejoin":"round"}).shadow(m,f),h.delayedRendering=!1):(e.setRadialReference(c.center),a.styledMode||E(!0,n,k),E(!0,n,g,d),e.animate(n));e.attr({visibility:h.visible?"inherit":"hidden"});e.addClass(h.getClassName())}else e&&(h.graphic=e.destroy())})},drawPoints:function(){var c=this.chart.renderer;this.points.forEach(function(a){a.graphic||(a.graphic=c[a.shapeType](a.shapeArgs).add(a.series.group),
-a.delayedRendering=!0)})},searchPoint:F,sortByAngle:function(c,a){c.sort(function(b,c){return void 0!==b.angle&&(c.angle-b.angle)*a})},drawLegendSymbol:c.LegendSymbolMixin.drawRectangle,getCenter:g.getCenter,getSymbol:F,drawGraph:null},{init:function(){t.prototype.init.apply(this,arguments);var c=this;c.name=H(c.name,"Slice");var a=function(a){c.slice("select"===a.type)};w(c,"select",a);w(c,"unselect",a);return c},isValid:function(){return G(this.y)&&0<=this.y},setVisible:function(c,a){var b=this,
-d=b.series,e=d.chart,k=d.options.ignoreHiddenPoint;a=H(a,k);c!==b.visible&&(b.visible=b.options.visible=c=void 0===c?!b.visible:c,d.options.data[d.data.indexOf(b)]=b.options,["graphic","dataLabel","connector","shadowGroup"].forEach(function(a){if(b[a])b[a][c?"show":"hide"](!0)}),b.legendItem&&e.legend.colorizeItem(b,c),c||"hover"!==b.state||b.setState(""),k&&(d.isDirty=!0),a&&e.redraw())},slice:function(c,a,b){var d=this.series;y(b,d.chart);H(a,!0);this.sliced=this.options.sliced=I(c)?c:!this.sliced;
-d.options.data[d.data.indexOf(this)]=this.options;this.graphic.animate(this.getTranslate());this.shadowGroup&&this.shadowGroup.animate(this.getTranslate())},getTranslate:function(){return this.sliced?this.slicedTranslation:{translateX:0,translateY:0}},haloPath:function(c){var a=this.shapeArgs;return this.sliced||!this.visible?[]:this.series.chart.renderer.symbols.arc(a.x,a.y,a.r+c,a.r+c,{innerR:a.r-1,start:a.start,end:a.end})},connectorShapes:{fixedOffset:function(c,a,b){var d=a.breakAt;a=a.touchingSliceAt;
-return["M",c.x,c.y].concat(b.softConnector?["C",c.x+("left"===c.alignment?-5:5),c.y,2*d.x-a.x,2*d.y-a.y,d.x,d.y]:["L",d.x,d.y]).concat(["L",a.x,a.y])},straight:function(c,a){a=a.touchingSliceAt;return["M",c.x,c.y,"L",a.x,a.y]},crookedLine:function(g,a,b){a=a.touchingSliceAt;var d=this.series,e=d.center[0],k=d.chart.plotWidth,h=d.chart.plotLeft;d=g.alignment;var m=this.shapeArgs.r;b=c.relativeLength(b.crookDistance,1);b="left"===d?e+m+(k+h-e-m)*(1-b):h+(e-m)*b;e=["L",b,g.y];if("left"===d?b>g.x||b<
-a.x:b<g.x||b>a.x)e=[];return["M",g.x,g.y].concat(e).concat(["L",a.x,a.y])}},getConnectorPath:function(){var c=this.labelPosition,a=this.series.options.dataLabels,b=a.connectorShape,d=this.connectorShapes;d[b]&&(b=d[b]);return b.call(this,{x:c.final.x,y:c.final.y,alignment:c.alignment},c.connectorPosition,a)}});""});K(D,"parts/DataLabels.js",[D["parts/Globals.js"],D["parts/Utilities.js"]],function(c,g){var I=g.arrayMax,G=g.defined,H=g.extend,y=g.isArray,w=g.objectEach,x=g.pick,E=g.splat,F=c.format,
-t=c.merge;g=c.noop;var m=c.relativeLength,p=c.Series,q=c.seriesTypes,h=c.stableSort;c.distribute=function(a,b,d){function e(a,b){return a.target-b.target}var k,g=!0,m=a,r=[];var n=0;var f=m.reducedLen||b;for(k=a.length;k--;)n+=a[k].size;if(n>f){h(a,function(a,b){return(b.rank||0)-(a.rank||0)});for(n=k=0;n<=f;)n+=a[k].size,k++;r=a.splice(k-1,a.length)}h(a,e);for(a=a.map(function(a){return{size:a.size,targets:[a.target],align:x(a.align,.5)}});g;){for(k=a.length;k--;)g=a[k],n=(Math.min.apply(0,g.targets)+
-Math.max.apply(0,g.targets))/2,g.pos=Math.min(Math.max(0,n-g.size*g.align),b-g.size);k=a.length;for(g=!1;k--;)0<k&&a[k-1].pos+a[k-1].size>a[k].pos&&(a[k-1].size+=a[k].size,a[k-1].targets=a[k-1].targets.concat(a[k].targets),a[k-1].align=.5,a[k-1].pos+a[k-1].size>b&&(a[k-1].pos=b-a[k-1].size),a.splice(k,1),g=!0)}m.push.apply(m,r);k=0;a.some(function(a){var f=0;if(a.targets.some(function(){m[k].pos=a.pos+f;if(Math.abs(m[k].pos-m[k].target)>d)return m.slice(0,k+1).forEach(function(a){delete a.pos}),m.reducedLen=
-(m.reducedLen||b)-.1*b,m.reducedLen>.1*b&&c.distribute(m,b,d),!0;f+=m[k].size;k++}))return!0});h(m,e)};p.prototype.drawDataLabels=function(){function a(a,b){var c=b.filter;return c?(b=c.operator,a=a[c.property],c=c.value,">"===b&&a>c||"<"===b&&a<c||">="===b&&a>=c||"<="===b&&a<=c||"=="===b&&a==c||"==="===b&&a===c?!0:!1):!0}function b(a,b){var c=[],f;if(y(a)&&!y(b))c=a.map(function(a){return t(a,b)});else if(y(b)&&!y(a))c=b.map(function(b){return t(a,b)});else if(y(a)||y(b))for(f=Math.max(a.length,
-b.length);f--;)c[f]=t(a[f],b[f]);else c=t(a,b);return c}var d=this,e=d.chart,k=d.options,g=k.dataLabels,h=d.points,m,n=d.hasRendered||0,f=c.animObject(k.animation).duration,l=Math.min(f,200),v=!e.renderer.forExport&&x(g.defer,0<l),B=e.renderer;g=b(b(e.options.plotOptions&&e.options.plotOptions.series&&e.options.plotOptions.series.dataLabels,e.options.plotOptions&&e.options.plotOptions[d.type]&&e.options.plotOptions[d.type].dataLabels),g);c.fireEvent(this,"drawDataLabels");if(y(g)||g.enabled||d._hasPointLabels){var A=
-d.plotGroup("dataLabelsGroup","data-labels",v&&!n?"hidden":"inherit",g.zIndex||6);v&&(A.attr({opacity:+n}),n||setTimeout(function(){var a=d.dataLabelsGroup;a&&(d.visible&&A.show(!0),a[k.animation?"animate":"attr"]({opacity:1},{duration:l}))},f-l));h.forEach(function(c){m=E(b(g,c.dlOptions||c.options&&c.options.dataLabels));m.forEach(function(b,f){var l=b.enabled&&(!c.isNull||c.dataLabelOnNull)&&a(c,b),n=c.dataLabels?c.dataLabels[f]:c.dataLabel,g=c.connectors?c.connectors[f]:c.connector,h=x(b.distance,
-c.labelDistance),m=!n;if(l){var r=c.getLabelConfig();var v=x(b[c.formatPrefix+"Format"],b.format);r=G(v)?F(v,r,e.time):(b[c.formatPrefix+"Formatter"]||b.formatter).call(r,b);v=b.style;var u=b.rotation;e.styledMode||(v.color=x(b.color,v.color,d.color,"#000000"),"contrast"===v.color&&(c.contrastColor=B.getContrast(c.color||d.color),v.color=!G(h)&&b.inside||0>h||k.stacking?c.contrastColor:"#000000"),k.cursor&&(v.cursor=k.cursor));var p={r:b.borderRadius||0,rotation:u,padding:b.padding,zIndex:1};e.styledMode||
-(p.fill=b.backgroundColor,p.stroke=b.borderColor,p["stroke-width"]=b.borderWidth);w(p,function(a,b){void 0===a&&delete p[b]})}!n||l&&G(r)?l&&G(r)&&(n?p.text=r:(c.dataLabels=c.dataLabels||[],n=c.dataLabels[f]=u?B.text(r,0,-9999).addClass("highcharts-data-label"):B.label(r,0,-9999,b.shape,null,null,b.useHTML,null,"data-label"),f||(c.dataLabel=n),n.addClass(" highcharts-data-label-color-"+c.colorIndex+" "+(b.className||"")+(b.useHTML?" highcharts-tracker":""))),n.options=b,n.attr(p),e.styledMode||n.css(v).shadow(b.shadow),
-n.added||n.add(A),b.textPath&&!b.useHTML&&n.setTextPath(c.getDataLabelPath&&c.getDataLabelPath(n)||c.graphic,b.textPath),d.alignDataLabel(c,n,b,null,m)):(c.dataLabel=c.dataLabel&&c.dataLabel.destroy(),c.dataLabels&&(1===c.dataLabels.length?delete c.dataLabels:delete c.dataLabels[f]),f||delete c.dataLabel,g&&(c.connector=c.connector.destroy(),c.connectors&&(1===c.connectors.length?delete c.connectors:delete c.connectors[f])))})})}c.fireEvent(this,"afterDrawDataLabels")};p.prototype.alignDataLabel=
-function(a,b,c,e,k){var d=this.chart,g=this.isCartesian&&d.inverted,h=x(a.dlBox&&a.dlBox.centerX,a.plotX,-9999),n=x(a.plotY,-9999),f=b.getBBox(),l=c.rotation,m=c.align,B=this.visible&&(a.series.forceDL||d.isInsidePlot(h,Math.round(n),g)||e&&d.isInsidePlot(h,g?e.x+1:e.y+e.height-1,g)),A="justify"===x(c.overflow,"justify");if(B){var u=d.renderer.fontMetrics(d.styledMode?void 0:c.style.fontSize,b).b;e=H({x:g?this.yAxis.len-n:h,y:Math.round(g?this.xAxis.len-h:n),width:0,height:0},e);H(c,{width:f.width,
-height:f.height});l?(A=!1,h=d.renderer.rotCorr(u,l),h={x:e.x+c.x+e.width/2+h.x,y:e.y+c.y+{top:0,middle:.5,bottom:1}[c.verticalAlign]*e.height},b[k?"attr":"animate"](h).attr({align:m}),n=(l+720)%360,n=180<n&&360>n,"left"===m?h.y-=n?f.height:0:"center"===m?(h.x-=f.width/2,h.y-=f.height/2):"right"===m&&(h.x-=f.width,h.y-=n?0:f.height),b.placed=!0,b.alignAttr=h):(b.align(c,null,e),h=b.alignAttr);A&&0<=e.height?this.justifyDataLabel(b,c,h,f,e,k):x(c.crop,!0)&&(B=d.isInsidePlot(h.x,h.y)&&d.isInsidePlot(h.x+
-f.width,h.y+f.height));if(c.shape&&!l)b[k?"attr":"animate"]({anchorX:g?d.plotWidth-a.plotY:a.plotX,anchorY:g?d.plotHeight-a.plotX:a.plotY})}B||(b.hide(!0),b.placed=!1)};p.prototype.justifyDataLabel=function(a,b,c,e,k,g){var d=this.chart,h=b.align,n=b.verticalAlign,f=a.box?0:a.padding||0;var l=c.x+f;if(0>l){"right"===h?(b.align="left",b.inside=!0):b.x=-l;var m=!0}l=c.x+e.width-f;l>d.plotWidth&&("left"===h?(b.align="right",b.inside=!0):b.x=d.plotWidth-l,m=!0);l=c.y+f;0>l&&("bottom"===n?(b.verticalAlign=
-"top",b.inside=!0):b.y=-l,m=!0);l=c.y+e.height-f;l>d.plotHeight&&("top"===n?(b.verticalAlign="bottom",b.inside=!0):b.y=d.plotHeight-l,m=!0);m&&(a.placed=!g,a.align(b,null,k));return m};q.pie&&(q.pie.prototype.dataLabelPositioners={radialDistributionY:function(a){return a.top+a.distributeBox.pos},radialDistributionX:function(a,b,c,e){return a.getX(c<b.top+2||c>b.bottom-2?e:c,b.half,b)},justify:function(a,b,c){return c[0]+(a.half?-1:1)*(b+a.labelDistance)},alignToPlotEdges:function(a,b,c,e){a=a.getBBox().width;
-return b?a+e:c-a-e},alignToConnectors:function(a,b,c,e){var d=0,g;a.forEach(function(a){g=a.dataLabel.getBBox().width;g>d&&(d=g)});return b?d+e:c-d-e}},q.pie.prototype.drawDataLabels=function(){var a=this,b=a.data,d,e=a.chart,k=a.options.dataLabels,g=k.connectorPadding,h,m=e.plotWidth,n=e.plotHeight,f=e.plotLeft,l=Math.round(e.chartWidth/3),v,B=a.center,A=B[2]/2,u=B[1],q,w,E,y,F=[[],[]],H,D,O,K,S=[0,0,0,0],ca=a.dataLabelPositioners,X;a.visible&&(k.enabled||a._hasPointLabels)&&(b.forEach(function(a){a.dataLabel&&
-a.visible&&a.dataLabel.shortened&&(a.dataLabel.attr({width:"auto"}).css({width:"auto",textOverflow:"clip"}),a.dataLabel.shortened=!1)}),p.prototype.drawDataLabels.apply(a),b.forEach(function(a){a.dataLabel&&(a.visible?(F[a.half].push(a),a.dataLabel._pos=null,!G(k.style.width)&&!G(a.options.dataLabels&&a.options.dataLabels.style&&a.options.dataLabels.style.width)&&a.dataLabel.getBBox().width>l&&(a.dataLabel.css({width:.7*l}),a.dataLabel.shortened=!0)):(a.dataLabel=a.dataLabel.destroy(),a.dataLabels&&
-1===a.dataLabels.length&&delete a.dataLabels))}),F.forEach(function(b,l){var h=b.length,r=[],v;if(h){a.sortByAngle(b,l-.5);if(0<a.maxLabelDistance){var p=Math.max(0,u-A-a.maxLabelDistance);var t=Math.min(u+A+a.maxLabelDistance,e.plotHeight);b.forEach(function(a){0<a.labelDistance&&a.dataLabel&&(a.top=Math.max(0,u-A-a.labelDistance),a.bottom=Math.min(u+A+a.labelDistance,e.plotHeight),v=a.dataLabel.getBBox().height||21,a.distributeBox={target:a.labelPosition.natural.y-a.top+v/2,size:v,rank:a.y},r.push(a.distributeBox))});
-p=t+v-p;c.distribute(r,p,p/5)}for(K=0;K<h;K++){d=b[K];E=d.labelPosition;q=d.dataLabel;O=!1===d.visible?"hidden":"inherit";D=p=E.natural.y;r&&G(d.distributeBox)&&(void 0===d.distributeBox.pos?O="hidden":(y=d.distributeBox.size,D=ca.radialDistributionY(d)));delete d.positionIndex;if(k.justify)H=ca.justify(d,A,B);else switch(k.alignTo){case "connectors":H=ca.alignToConnectors(b,l,m,f);break;case "plotEdges":H=ca.alignToPlotEdges(q,l,m,f);break;default:H=ca.radialDistributionX(a,d,D,p)}q._attr={visibility:O,
-align:E.alignment};q._pos={x:H+k.x+({left:g,right:-g}[E.alignment]||0),y:D+k.y-10};E.final.x=H;E.final.y=D;x(k.crop,!0)&&(w=q.getBBox().width,p=null,H-w<g&&1===l?(p=Math.round(w-H+g),S[3]=Math.max(p,S[3])):H+w>m-g&&0===l&&(p=Math.round(H+w-m+g),S[1]=Math.max(p,S[1])),0>D-y/2?S[0]=Math.max(Math.round(-D+y/2),S[0]):D+y/2>n&&(S[2]=Math.max(Math.round(D+y/2-n),S[2])),q.sideOverflow=p)}}}),0===I(S)||this.verifyDataLabelOverflow(S))&&(this.placeDataLabels(),this.points.forEach(function(b){X=t(k,b.options.dataLabels);
-if(h=x(X.connectorWidth,1)){var c;v=b.connector;if((q=b.dataLabel)&&q._pos&&b.visible&&0<b.labelDistance){O=q._attr.visibility;if(c=!v)b.connector=v=e.renderer.path().addClass("highcharts-data-label-connector  highcharts-color-"+b.colorIndex+(b.className?" "+b.className:"")).add(a.dataLabelsGroup),e.styledMode||v.attr({"stroke-width":h,stroke:X.connectorColor||b.color||"#666666"});v[c?"attr":"animate"]({d:b.getConnectorPath()});v.attr("visibility",O)}else v&&(b.connector=v.destroy())}}))},q.pie.prototype.placeDataLabels=
-function(){this.points.forEach(function(a){var b=a.dataLabel,c;b&&a.visible&&((c=b._pos)?(b.sideOverflow&&(b._attr.width=Math.max(b.getBBox().width-b.sideOverflow,0),b.css({width:b._attr.width+"px",textOverflow:(this.options.dataLabels.style||{}).textOverflow||"ellipsis"}),b.shortened=!0),b.attr(b._attr),b[b.moved?"animate":"attr"](c),b.moved=!0):b&&b.attr({y:-9999}));delete a.distributeBox},this)},q.pie.prototype.alignDataLabel=g,q.pie.prototype.verifyDataLabelOverflow=function(a){var b=this.center,
-c=this.options,e=c.center,k=c.minSize||80,g=null!==c.size;if(!g){if(null!==e[0])var h=Math.max(b[2]-Math.max(a[1],a[3]),k);else h=Math.max(b[2]-a[1]-a[3],k),b[0]+=(a[3]-a[1])/2;null!==e[1]?h=Math.max(Math.min(h,b[2]-Math.max(a[0],a[2])),k):(h=Math.max(Math.min(h,b[2]-a[0]-a[2]),k),b[1]+=(a[0]-a[2])/2);h<b[2]?(b[2]=h,b[3]=Math.min(m(c.innerSize||0,h),h),this.translate(b),this.drawDataLabels&&this.drawDataLabels()):g=!0}return g});q.column&&(q.column.prototype.alignDataLabel=function(a,b,c,e,k){var d=
-this.chart.inverted,g=a.series,h=a.dlBox||a.shapeArgs,n=x(a.below,a.plotY>x(this.translatedThreshold,g.yAxis.len)),f=x(c.inside,!!this.options.stacking);h&&(e=t(h),0>e.y&&(e.height+=e.y,e.y=0),h=e.y+e.height-g.yAxis.len,0<h&&(e.height-=h),d&&(e={x:g.yAxis.len-e.y-e.height,y:g.xAxis.len-e.x-e.width,width:e.height,height:e.width}),f||(d?(e.x+=n?0:e.width,e.width=0):(e.y+=n?e.height:0,e.height=0)));c.align=x(c.align,!d||f?"center":n?"right":"left");c.verticalAlign=x(c.verticalAlign,d||f?"middle":n?"top":
-"bottom");p.prototype.alignDataLabel.call(this,a,b,c,e,k);c.inside&&a.contrastColor&&b.css({color:a.contrastColor})})});K(D,"modules/overlapping-datalabels.src.js",[D["parts/Globals.js"],D["parts/Utilities.js"]],function(c,g){var D=g.isArray,G=g.objectEach,H=g.pick;g=c.Chart;var y=c.addEvent,w=c.fireEvent;y(g,"render",function(){var c=[];(this.labelCollectors||[]).forEach(function(g){c=c.concat(g())});(this.yAxis||[]).forEach(function(g){g.options.stackLabels&&!g.options.stackLabels.allowOverlap&&
-G(g.stacks,function(g){G(g,function(g){c.push(g.label)})})});(this.series||[]).forEach(function(g){var x=g.options.dataLabels;g.visible&&(!1!==x.enabled||g._hasPointLabels)&&g.points.forEach(function(g){g.visible&&(D(g.dataLabels)?g.dataLabels:g.dataLabel?[g.dataLabel]:[]).forEach(function(m){var p=m.options;m.labelrank=H(p.labelrank,g.labelrank,g.shapeArgs&&g.shapeArgs.height);p.allowOverlap||c.push(m)})})});this.hideOverlappingLabels(c)});g.prototype.hideOverlappingLabels=function(c){var g=this,
-x=c.length,t=g.renderer,m,p,q;var h=function(a){var b=a.box?0:a.padding||0;var c=0;if(a&&(!a.alignAttr||a.placed)){var d=a.attr("x");var g=a.attr("y");d="number"===typeof d&&"number"===typeof g?{x:d,y:g}:a.alignAttr;g=a.parentGroup;a.width||(c=a.getBBox(),a.width=c.width,a.height=c.height,c=t.fontMetrics(null,a.element).h);return{x:d.x+(g.translateX||0)+b,y:d.y+(g.translateY||0)+b-c,width:a.width-2*b,height:a.height-2*b}}};for(p=0;p<x;p++)if(m=c[p])m.oldOpacity=m.opacity,m.newOpacity=1,m.absoluteBox=
-h(m);c.sort(function(a,b){return(b.labelrank||0)-(a.labelrank||0)});for(p=0;p<x;p++){var a=(h=c[p])&&h.absoluteBox;for(m=p+1;m<x;++m){var b=(q=c[m])&&q.absoluteBox;!a||!b||h===q||0===h.newOpacity||0===q.newOpacity||b.x>a.x+a.width||b.x+b.width<a.x||b.y>a.y+a.height||b.y+b.height<a.y||((h.labelrank<q.labelrank?h:q).newOpacity=0)}}c.forEach(function(a){var b;if(a){var c=a.newOpacity;a.oldOpacity!==c&&(a.alignAttr&&a.placed?(c?a.show(!0):b=function(){a.hide(!0);a.placed=!1},a.alignAttr.opacity=c,a[a.isOld?
-"animate":"attr"](a.alignAttr,null,b),w(g,"afterHideOverlappingLabels")):a.attr({opacity:c}));a.isOld=!0}})}});K(D,"parts/Interaction.js",[D["parts/Globals.js"],D["parts/Utilities.js"]],function(c,g){var D=g.defined,G=g.extend,H=g.isArray,y=g.isObject,w=g.objectEach,x=g.pick,E=c.addEvent;g=c.Chart;var F=c.createElement,t=c.css,m=c.defaultOptions,p=c.defaultPlotOptions,q=c.fireEvent,h=c.hasTouch,a=c.Legend,b=c.merge,d=c.Point,e=c.Series,k=c.seriesTypes,C=c.svg;var z=c.TrackerMixin={drawTrackerPoint:function(){var a=
-this,b=a.chart,c=b.pointer,d=function(a){var b=c.getPointFromEvent(a);void 0!==b&&(c.isDirectTouch=!0,b.onMouseOver(a))},e;a.points.forEach(function(a){e=H(a.dataLabels)?a.dataLabels:a.dataLabel?[a.dataLabel]:[];a.graphic&&(a.graphic.element.point=a);e.forEach(function(b){b.div?b.div.point=a:b.element.point=a})});a._hasTracking||(a.trackerGroups.forEach(function(f){if(a[f]){a[f].addClass("highcharts-tracker").on("mouseover",d).on("mouseout",function(a){c.onTrackerMouseOut(a)});if(h)a[f].on("touchstart",
-d);!b.styledMode&&a.options.cursor&&a[f].css(t).css({cursor:a.options.cursor})}}),a._hasTracking=!0);q(this,"afterDrawTracker")},drawTrackerGraph:function(){var a=this,b=a.options,c=b.trackByArea,d=[].concat(c?a.areaPath:a.graphPath),e=d.length,k=a.chart,g=k.pointer,m=k.renderer,p=k.options.tooltip.snap,t=a.tracker,z,x=function(){if(k.hoverSeries!==a)a.onMouseOver()},w="rgba(192,192,192,"+(C?.0001:.002)+")";if(e&&!c)for(z=e+1;z--;)"M"===d[z]&&d.splice(z+1,0,d[z+1]-p,d[z+2],"L"),(z&&"M"===d[z]||z===
-e)&&d.splice(z,0,"L",d[z-2]+p,d[z-1]);t?t.attr({d:d}):a.graph&&(a.tracker=m.path(d).attr({visibility:a.visible?"visible":"hidden",zIndex:2}).addClass(c?"highcharts-tracker-area":"highcharts-tracker-line").add(a.group),k.styledMode||a.tracker.attr({"stroke-linejoin":"round",stroke:w,fill:c?w:"none","stroke-width":a.graph.strokeWidth()+(c?0:2*p)}),[a.tracker,a.markerGroup].forEach(function(a){a.addClass("highcharts-tracker").on("mouseover",x).on("mouseout",function(a){g.onTrackerMouseOut(a)});b.cursor&&
-!k.styledMode&&a.css({cursor:b.cursor});if(h)a.on("touchstart",x)}));q(this,"afterDrawTracker")}};k.column&&(k.column.prototype.drawTracker=z.drawTrackerPoint);k.pie&&(k.pie.prototype.drawTracker=z.drawTrackerPoint);k.scatter&&(k.scatter.prototype.drawTracker=z.drawTrackerPoint);G(a.prototype,{setItemEvents:function(a,c,f){var l=this,e=l.chart.renderer.boxWrapper,k=a instanceof d,n="highcharts-legend-"+(k?"point":"series")+"-active",g=l.chart.styledMode;(f?c:a.legendGroup).on("mouseover",function(){a.visible&&
-l.allItems.forEach(function(b){a!==b&&b.setState("inactive",!k)});a.setState("hover");a.visible&&e.addClass(n);g||c.css(l.options.itemHoverStyle)}).on("mouseout",function(){l.chart.styledMode||c.css(b(a.visible?l.itemStyle:l.itemHiddenStyle));l.allItems.forEach(function(b){a!==b&&b.setState("",!k)});e.removeClass(n);a.setState()}).on("click",function(b){var c=function(){a.setVisible&&a.setVisible();l.allItems.forEach(function(b){a!==b&&b.setState(a.visible?"inactive":"",!k)})};e.removeClass(n);b=
-{browserEvent:b};a.firePointEvent?a.firePointEvent("legendItemClick",b,c):q(a,"legendItemClick",b,c)})},createCheckboxForItem:function(a){a.checkbox=F("input",{type:"checkbox",className:"highcharts-legend-checkbox",checked:a.selected,defaultChecked:a.selected},this.options.itemCheckboxStyle,this.chart.container);E(a.checkbox,"click",function(b){q(a.series||a,"checkboxClick",{checked:b.target.checked,item:a},function(){a.select()})})}});G(g.prototype,{showResetZoom:function(){function a(){b.zoomOut()}
-var b=this,c=m.lang,d=b.options.chart.resetZoomButton,e=d.theme,k=e.states,g="chart"===d.relativeTo||"spaceBox"===d.relativeTo?null:"plotBox";q(this,"beforeShowResetZoom",null,function(){b.resetZoomButton=b.renderer.button(c.resetZoom,null,null,a,e,k&&k.hover).attr({align:d.position.align,title:c.resetZoomTitle}).addClass("highcharts-reset-zoom").add().align(d.position,!1,g)});q(this,"afterShowResetZoom")},zoomOut:function(){q(this,"selection",{resetSelection:!0},this.zoom)},zoom:function(a){var b=
-this,c,d=b.pointer,e=!1,k=b.inverted?d.mouseDownX:d.mouseDownY;!a||a.resetSelection?(b.axes.forEach(function(a){c=a.zoom()}),d.initiated=!1):a.xAxis.concat(a.yAxis).forEach(function(a){var f=a.axis,l=b.inverted?f.left:f.top,n=b.inverted?l+f.width:l+f.height,g=f.isXAxis,h=!1;if(!g&&k>=l&&k<=n||g||!D(k))h=!0;d[g?"zoomX":"zoomY"]&&h&&(c=f.zoom(a.min,a.max),f.displayBtn&&(e=!0))});var g=b.resetZoomButton;e&&!g?b.showResetZoom():!e&&y(g)&&(b.resetZoomButton=g.destroy());c&&b.redraw(x(b.options.chart.animation,
-a&&a.animation,100>b.pointCount))},pan:function(a,b){var c=this,d=c.hoverPoints,e;q(this,"pan",{originalEvent:a},function(){d&&d.forEach(function(a){a.setState()});("xy"===b?[1,0]:[1]).forEach(function(b){b=c[b?"xAxis":"yAxis"][0];var f=b.horiz,d=a[f?"chartX":"chartY"];f=f?"mouseDownX":"mouseDownY";var l=c[f],k=(b.pointRange||0)/2,n=b.reversed&&!c.inverted||!b.reversed&&c.inverted?-1:1,g=b.getExtremes(),h=b.toValue(l-d,!0)+k*n;n=b.toValue(l+b.len-d,!0)-k*n;var m=n<h;l=m?n:h;h=m?h:n;n=Math.min(g.dataMin,
-k?g.min:b.toValue(b.toPixels(g.min)-b.minPixelPadding));k=Math.max(g.dataMax,k?g.max:b.toValue(b.toPixels(g.max)+b.minPixelPadding));m=n-l;0<m&&(h+=m,l=n);m=h-k;0<m&&(h=k,l-=m);b.series.length&&l!==g.min&&h!==g.max&&(b.setExtremes(l,h,!1,!1,{trigger:"pan"}),e=!0);c[f]=d});e&&c.redraw(!1);t(c.container,{cursor:"move"})})}});G(d.prototype,{select:function(a,b){var c=this,d=c.series,e=d.chart;this.selectedStaging=a=x(a,!c.selected);c.firePointEvent(a?"select":"unselect",{accumulate:b},function(){c.selected=
-c.options.selected=a;d.options.data[d.data.indexOf(c)]=c.options;c.setState(a&&"select");b||e.getSelectedPoints().forEach(function(a){var b=a.series;a.selected&&a!==c&&(a.selected=a.options.selected=!1,b.options.data[b.data.indexOf(a)]=a.options,a.setState(e.hoverPoints&&b.options.inactiveOtherPoints?"inactive":""),a.firePointEvent("unselect"))})});delete this.selectedStaging},onMouseOver:function(a){var b=this.series.chart,c=b.pointer;a=a?c.normalize(a):c.getChartCoordinatesFromPoint(this,b.inverted);
-c.runPointActions(a,this)},onMouseOut:function(){var a=this.series.chart;this.firePointEvent("mouseOut");this.series.options.inactiveOtherPoints||(a.hoverPoints||[]).forEach(function(a){a.setState()});a.hoverPoints=a.hoverPoint=null},importEvents:function(){if(!this.hasImportedEvents){var a=this,d=b(a.series.options.point,a.options).events;a.events=d;w(d,function(b,d){c.isFunction(b)&&E(a,d,b)});this.hasImportedEvents=!0}},setState:function(a,b){var c=this.series,d=this.state,e=c.options.states[a||
-"normal"]||{},k=p[c.type].marker&&c.options.marker,n=k&&!1===k.enabled,g=k&&k.states&&k.states[a||"normal"]||{},h=!1===g.enabled,m=c.stateMarkerGraphic,r=this.marker||{},t=c.chart,z=c.halo,C,w=k&&c.markerAttribs;a=a||"";if(!(a===this.state&&!b||this.selected&&"select"!==a||!1===e.enabled||a&&(h||n&&!1===g.enabled)||a&&r.states&&r.states[a]&&!1===r.states[a].enabled)){this.state=a;w&&(C=c.markerAttribs(this,a));if(this.graphic){d&&this.graphic.removeClass("highcharts-point-"+d);a&&this.graphic.addClass("highcharts-point-"+
-a);if(!t.styledMode){var y=c.pointAttribs(this,a);var E=x(t.options.chart.animation,e.animation);c.options.inactiveOtherPoints&&((this.dataLabels||[]).forEach(function(a){a&&a.animate({opacity:y.opacity},E)}),this.connector&&this.connector.animate({opacity:y.opacity},E));this.graphic.animate(y,E)}C&&this.graphic.animate(C,x(t.options.chart.animation,g.animation,k.animation));m&&m.hide()}else{if(a&&g){d=r.symbol||c.symbol;m&&m.currentSymbol!==d&&(m=m.destroy());if(C)if(m)m[b?"animate":"attr"]({x:C.x,
-y:C.y});else d&&(c.stateMarkerGraphic=m=t.renderer.symbol(d,C.x,C.y,C.width,C.height).add(c.markerGroup),m.currentSymbol=d);!t.styledMode&&m&&m.attr(c.pointAttribs(this,a))}m&&(m[a&&this.isInside?"show":"hide"](),m.element.point=this)}a=e.halo;e=(m=this.graphic||m)&&m.visibility||"inherit";a&&a.size&&m&&"hidden"!==e?(z||(c.halo=z=t.renderer.path().add(m.parentGroup)),z.show()[b?"animate":"attr"]({d:this.haloPath(a.size)}),z.attr({"class":"highcharts-halo highcharts-color-"+x(this.colorIndex,c.colorIndex)+
-(this.className?" "+this.className:""),visibility:e,zIndex:-1}),z.point=this,t.styledMode||z.attr(G({fill:this.color||c.color,"fill-opacity":a.opacity},a.attributes))):z&&z.point&&z.point.haloPath&&z.animate({d:z.point.haloPath(0)},null,z.hide);q(this,"afterSetState")}},haloPath:function(a){return this.series.chart.renderer.symbols.circle(Math.floor(this.plotX)-a,this.plotY-a,2*a,2*a)}});G(e.prototype,{onMouseOver:function(){var a=this.chart,b=a.hoverSeries;if(b&&b!==this)b.onMouseOut();this.options.events.mouseOver&&
-q(this,"mouseOver");this.setState("hover");a.hoverSeries=this},onMouseOut:function(){var a=this.options,b=this.chart,c=b.tooltip,d=b.hoverPoint;b.hoverSeries=null;if(d)d.onMouseOut();this&&a.events.mouseOut&&q(this,"mouseOut");!c||this.stickyTracking||c.shared&&!this.noSharedTooltip||c.hide();b.series.forEach(function(a){a.setState("",!0)})},setState:function(a,b){var c=this,d=c.options,e=c.graph,k=d.inactiveOtherPoints,g=d.states,n=d.lineWidth,h=d.opacity,m=x(g[a||"normal"]&&g[a||"normal"].animation,
-c.chart.options.chart.animation);d=0;a=a||"";if(c.state!==a&&([c.group,c.markerGroup,c.dataLabelsGroup].forEach(function(b){b&&(c.state&&b.removeClass("highcharts-series-"+c.state),a&&b.addClass("highcharts-series-"+a))}),c.state=a,!c.chart.styledMode)){if(g[a]&&!1===g[a].enabled)return;a&&(n=g[a].lineWidth||n+(g[a].lineWidthPlus||0),h=x(g[a].opacity,h));if(e&&!e.dashstyle)for(g={"stroke-width":n},e.animate(g,m);c["zone-graph-"+d];)c["zone-graph-"+d].attr(g),d+=1;k||[c.group,c.markerGroup,c.dataLabelsGroup,
-c.labelBySeries].forEach(function(a){a&&a.animate({opacity:h},m)})}b&&k&&c.points&&c.setAllPointsToState(a)},setAllPointsToState:function(a){this.points.forEach(function(b){b.setState&&b.setState(a)})},setVisible:function(a,b){var c=this,d=c.chart,e=c.legendItem,k=d.options.chart.ignoreHiddenSeries,g=c.visible;var n=(c.visible=a=c.options.visible=c.userOptions.visible=void 0===a?!g:a)?"show":"hide";["group","dataLabelsGroup","markerGroup","tracker","tt"].forEach(function(a){if(c[a])c[a][n]()});if(d.hoverSeries===
-c||(d.hoverPoint&&d.hoverPoint.series)===c)c.onMouseOut();e&&d.legend.colorizeItem(c,a);c.isDirty=!0;c.options.stacking&&d.series.forEach(function(a){a.options.stacking&&a.visible&&(a.isDirty=!0)});c.linkedSeries.forEach(function(b){b.setVisible(a,!1)});k&&(d.isDirtyBox=!0);q(c,n);!1!==b&&d.redraw()},show:function(){this.setVisible(!0)},hide:function(){this.setVisible(!1)},select:function(a){this.selected=a=this.options.selected=void 0===a?!this.selected:a;this.checkbox&&(this.checkbox.checked=a);
-q(this,a?"select":"unselect")},drawTracker:z.drawTrackerGraph})});K(D,"parts/Responsive.js",[D["parts/Globals.js"],D["parts/Utilities.js"]],function(c,g){var D=g.isArray,G=g.isObject,H=g.objectEach,y=g.pick,w=g.splat;g=c.Chart;g.prototype.setResponsive=function(g,w){var x=this.options.responsive,t=[],m=this.currentResponsive;!w&&x&&x.rules&&x.rules.forEach(function(g){void 0===g._id&&(g._id=c.uniqueKey());this.matchResponsiveRule(g,t)},this);w=c.merge.apply(0,t.map(function(g){return c.find(x.rules,
-function(c){return c._id===g}).chartOptions}));w.isResponsiveOptions=!0;t=t.toString()||void 0;t!==(m&&m.ruleIds)&&(m&&this.update(m.undoOptions,g,!0),t?(m=this.currentOptions(w),m.isResponsiveOptions=!0,this.currentResponsive={ruleIds:t,mergedOptions:w,undoOptions:m},this.update(w,g,!0)):this.currentResponsive=void 0)};g.prototype.matchResponsiveRule=function(c,g){var w=c.condition;(w.callback||function(){return this.chartWidth<=y(w.maxWidth,Number.MAX_VALUE)&&this.chartHeight<=y(w.maxHeight,Number.MAX_VALUE)&&
-this.chartWidth>=y(w.minWidth,0)&&this.chartHeight>=y(w.minHeight,0)}).call(this)&&g.push(c._id)};g.prototype.currentOptions=function(c){function g(c,p,q,h){var a;H(c,function(b,c){if(!h&&-1<x.collectionsWithUpdate.indexOf(c))for(b=w(b),q[c]=[],a=0;a<b.length;a++)p[c][a]&&(q[c][a]={},g(b[a],p[c][a],q[c][a],h+1));else G(b)?(q[c]=D(b)?[]:{},g(b,p[c]||{},q[c],h+1)):q[c]=void 0===p[c]?null:p[c]})}var x=this,t={};g(c,this.options,t,0);return t}});K(D,"masters/highcharts.src.js",[D["parts/Globals.js"],
-D["parts/Utilities.js"]],function(c,g){var D=g.extend;D(c,{arrayMax:g.arrayMax,arrayMin:g.arrayMin,attr:g.attr,defined:g.defined,erase:g.erase,extend:g.extend,isArray:g.isArray,isClass:g.isClass,isDOMElement:g.isDOMElement,isNumber:g.isNumber,isObject:g.isObject,isString:g.isString,objectEach:g.objectEach,pick:g.pick,pInt:g.pInt,setAnimation:g.setAnimation,splat:g.splat,syncTimeout:g.syncTimeout});return c});K(D,"parts/Scrollbar.js",[D["parts/Globals.js"],D["parts/Utilities.js"]],function(c,g){function D(a,
-b,c){this.init(a,b,c)}var G=g.defined,H=g.destroyObjectProperties,y=g.pick,w=c.addEvent;g=c.Axis;var x=c.correctFloat,E=c.defaultOptions,F=c.fireEvent,t=c.hasTouch,m=c.merge,p=c.removeEvent,q,h={height:c.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=m(!0,h,E.scrollbar);c.swapXY=q=function(a,b){var c=a.length;if(b)for(b=0;b<c;b+=3){var e=a[b+1];a[b+1]=a[b+2];a[b+2]=e}return a};D.prototype={init:function(a,b,c){this.scrollbarButtons=[];this.renderer=a;this.userOptions=b;this.options=m(h,b);this.chart=c;this.size=y(this.options.size,this.options.height);b.enabled&&(this.render(),this.initEvents(),this.addEvents())},render:function(){var a=this.renderer,b=this.options,
-c=this.size,e=this.chart.styledMode,k;this.group=k=a.g("scrollbar").attr({zIndex:b.zIndex,translateY:-99999}).add();this.track=a.rect().addClass("highcharts-scrollbar-track").attr({x:0,r:b.trackBorderRadius||0,height:c,width:c}).add(k);e||this.track.attr({fill:b.trackBackgroundColor,stroke:b.trackBorderColor,"stroke-width":b.trackBorderWidth});this.trackBorderWidth=this.track.strokeWidth();this.track.attr({y:-this.trackBorderWidth%2/2});this.scrollbarGroup=a.g().add(k);this.scrollbar=a.rect().addClass("highcharts-scrollbar-thumb").attr({height:c,
-width:c,r:b.barBorderRadius||0}).add(this.scrollbarGroup);this.scrollbarRifles=a.path(q(["M",-3,c/4,"L",-3,2*c/3,"M",0,c/4,"L",0,2*c/3,"M",3,c/4,"L",3,2*c/3],b.vertical)).addClass("highcharts-scrollbar-rifles").add(this.scrollbarGroup);e||(this.scrollbar.attr({fill:b.barBackgroundColor,stroke:b.barBorderColor,"stroke-width":b.barBorderWidth}),this.scrollbarRifles.attr({stroke:b.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)},position:function(a,b,c,e){var d=this.options.vertical,g=0,h=this.rendered?"animate":"attr";this.x=a;this.y=b+this.trackBorderWidth;this.width=c;this.xOffset=this.height=e;this.yOffset=g;d?(this.width=this.yOffset=c=g=this.size,this.xOffset=b=0,this.barWidth=e-2*c,this.x=a+=this.options.margin):(this.height=this.xOffset=e=b=this.size,this.barWidth=c-2*e,this.y+=this.options.margin);this.group[h]({translateX:a,
-translateY:this.y});this.track[h]({width:c,height:e});this.scrollbarButtons[1][h]({translateX:d?0:c-b,translateY:d?e-g:0})},drawScrollbarButton:function(a){var b=this.renderer,c=this.scrollbarButtons,e=this.options,k=this.size;var g=b.g().add(this.group);c.push(g);g=b.rect().addClass("highcharts-scrollbar-button").add(g);this.chart.styledMode||g.attr({stroke:e.buttonBorderColor,"stroke-width":e.buttonBorderWidth,fill:e.buttonBackgroundColor});g.attr(g.crisp({x:-.5,y:-.5,width:k+1,height:k+1,r:e.buttonBorderRadius},
-g.strokeWidth()));g=b.path(q(["M",k/2+(a?-1:1),k/2-3,"L",k/2+(a?-1:1),k/2+3,"L",k/2+(a?2:-2),k/2],e.vertical)).addClass("highcharts-scrollbar-arrow").add(c[a]);this.chart.styledMode||g.attr({fill:e.buttonArrowColor})},setRange:function(a,b){var c=this.options,e=c.vertical,k=c.minWidth,g=this.barWidth,h,m=!this.rendered||this.hasDragged||this.chart.navigator&&this.chart.navigator.hasDragged?"attr":"animate";if(G(g)){a=Math.max(a,0);var n=Math.ceil(g*a);this.calculatedWidth=h=x(g*Math.min(b,1)-n);h<
-k&&(n=(g-k+h)*a,h=k);k=Math.floor(n+this.xOffset+this.yOffset);g=h/2-.5;this.from=a;this.to=b;e?(this.scrollbarGroup[m]({translateY:k}),this.scrollbar[m]({height:h}),this.scrollbarRifles[m]({translateY:g}),this.scrollbarTop=k,this.scrollbarLeft=0):(this.scrollbarGroup[m]({translateX:k}),this.scrollbar[m]({width:h}),this.scrollbarRifles[m]({translateX:g}),this.scrollbarLeft=k,this.scrollbarTop=0);12>=h?this.scrollbarRifles.hide():this.scrollbarRifles.show(!0);!1===c.showFull&&(0>=a&&1<=b?this.group.hide():
-this.group.show());this.rendered=!0}},initEvents:function(){var a=this;a.mouseMoveHandler=function(b){var c=a.chart.pointer.normalize(b),e=a.options.vertical?"chartY":"chartX",k=a.initPositions;!a.grabbedCenter||b.touches&&0===b.touches[0][e]||(c=a.cursorToScrollbarPosition(c)[e],e=a[e],e=c-e,a.hasDragged=!0,a.updatePosition(k[0]+e,k[1]+e),a.hasDragged&&F(a,"changed",{from:a.from,to:a.to,trigger:"scrollbar",DOMType:b.type,DOMEvent:b}))};a.mouseUpHandler=function(b){a.hasDragged&&F(a,"changed",{from:a.from,
-to:a.to,trigger:"scrollbar",DOMType:b.type,DOMEvent:b});a.grabbedCenter=a.hasDragged=a.chartX=a.chartY=null};a.mouseDownHandler=function(b){b=a.chart.pointer.normalize(b);b=a.cursorToScrollbarPosition(b);a.chartX=b.chartX;a.chartY=b.chartY;a.initPositions=[a.from,a.to];a.grabbedCenter=!0};a.buttonToMinClick=function(b){var c=x(a.to-a.from)*a.options.step;a.updatePosition(x(a.from-c),x(a.to-c));F(a,"changed",{from:a.from,to:a.to,trigger:"scrollbar",DOMEvent:b})};a.buttonToMaxClick=function(b){var c=
-(a.to-a.from)*a.options.step;a.updatePosition(a.from+c,a.to+c);F(a,"changed",{from:a.from,to:a.to,trigger:"scrollbar",DOMEvent:b})};a.trackClick=function(b){var c=a.chart.pointer.normalize(b),e=a.to-a.from,k=a.y+a.scrollbarTop,g=a.x+a.scrollbarLeft;a.options.vertical&&c.chartY>k||!a.options.vertical&&c.chartX>g?a.updatePosition(a.from+e,a.to+e):a.updatePosition(a.from-e,a.to-e);F(a,"changed",{from:a.from,to:a.to,trigger:"scrollbar",DOMEvent:b})}},cursorToScrollbarPosition:function(a){var b=this.options;
-b=b.minWidth>this.calculatedWidth?b.minWidth:0;return{chartX:(a.chartX-this.x-this.xOffset)/(this.barWidth-b),chartY:(a.chartY-this.y-this.yOffset)/(this.barWidth-b)}},updatePosition:function(a,b){1<b&&(a=x(1-x(b-a)),b=1);0>a&&(b=x(b-a),a=0);this.from=a;this.to=b},update:function(a){this.destroy();this.init(this.chart.renderer,m(!0,this.options,a),this.chart)},addEvents:function(){var a=this.options.inverted?[1,0]:[0,1],b=this.scrollbarButtons,c=this.scrollbarGroup.element,e=this.mouseDownHandler,
-k=this.mouseMoveHandler,g=this.mouseUpHandler;a=[[b[a[0]].element,"click",this.buttonToMinClick],[b[a[1]].element,"click",this.buttonToMaxClick],[this.track.element,"click",this.trackClick],[c,"mousedown",e],[c.ownerDocument,"mousemove",k],[c.ownerDocument,"mouseup",g]];t&&a.push([c,"touchstart",e],[c.ownerDocument,"touchmove",k],[c.ownerDocument,"touchend",g]);a.forEach(function(a){w.apply(null,a)});this._events=a},removeEvents:function(){this._events.forEach(function(a){p.apply(null,a)});this._events.length=
-0},destroy:function(){var a=this.chart.scroller;this.removeEvents();["track","scrollbarRifles","scrollbar","scrollbarGroup","group"].forEach(function(a){this[a]&&this[a].destroy&&(this[a]=this[a].destroy())},this);a&&this===a.scrollbar&&(a.scrollbar=null,H(a.scrollbarButtons))}};c.Scrollbar||(w(g,"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),w(a.scrollbar,"changed",function(b){var d=Math.min(y(a.options.min,a.min),a.min,a.dataMin),e=Math.max(y(a.options.max,a.max),a.max,a.dataMax)-d;if(a.horiz&&!a.reversed||!a.horiz&&a.reversed){var k=d+e*this.to;d+=e*this.from}else k=d+e*(1-this.from),d+=e*(1-this.to);y(this.options.liveRedraw,c.svg&&!c.isTouchDevice&&!this.chart.isBoosting)||"mouseup"===b.DOMType||!G(b.DOMType)?a.setExtremes(d,k,!0,"mousemove"!==b.DOMType,b):this.setRange(this.from,this.to)}))}),w(g,"afterRender",
-function(){var a=Math.min(y(this.options.min,this.min),this.min,y(this.dataMin,this.min)),b=Math.max(y(this.options.max,this.max),this.max,y(this.dataMax,this.max)),c=this.scrollbar,e=this.axisTitleMargin+(this.titleOffset||0),k=this.chart.scrollbarsOffsets,g=this.options.margin||0;c&&(this.horiz?(this.opposite||(k[1]+=e),c.position(this.left,this.top+this.height+2+k[1]-(this.opposite?g:0),this.width,this.height),this.opposite||(k[1]+=g),e=1):(this.opposite&&(k[0]+=e),c.position(this.left+this.width+
-2+k[0]-(this.opposite?0:g),this.top,this.width,this.height),this.opposite&&(k[0]+=g),e=0),k[e]+=c.size+c.options.margin,isNaN(a)||isNaN(b)||!G(this.min)||!G(this.max)||this.min===this.max?c.setRange(0,1):(k=(this.min-a)/(b-a),a=(this.max-a)/(b-a),this.horiz&&!this.reversed||!this.horiz&&this.reversed?c.setRange(k,a):c.setRange(1-a,1-k)))}),w(g,"afterGetOffset",function(){var a=this.horiz?2:1,b=this.scrollbar;b&&(this.chart.scrollbarsOffsets=[0,0],this.chart.axisOffset[a]+=b.size+b.options.margin)}),
-c.Scrollbar=D)});K(D,"parts/Navigator.js",[D["parts/Globals.js"],D["parts/Utilities.js"]],function(c,g){function D(a){this.init(a)}var G=g.defined,H=g.destroyObjectProperties,y=g.erase,w=g.extend,x=g.isArray,E=g.isNumber,F=g.pick,t=g.splat,m=c.addEvent,p=c.Axis;g=c.Chart;var q=c.color,h=c.defaultOptions,a=c.hasTouch,b=c.isTouchDevice,d=c.merge,e=c.removeEvent,k=c.Scrollbar,C=c.Series,z=function(a){for(var b=[],c=1;c<arguments.length;c++)b[c-1]=arguments[c];b=[].filter.call(b,E);if(b.length)return Math[a].apply(0,
-b)};var r=void 0===c.seriesTypes.areaspline?"line":"areaspline";w(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:q("#6685c2").setOpacity(.3).get(),outlineColor:"#cccccc",outlineWidth:1,series:{type:r,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}}});c.Renderer.prototype.symbols["navigator-handle"]=function(a,b,c,d,e){a=e.width/2;b=Math.round(a/3)+.5;e=e.height;return["M",-a-1,.5,"L",a,.5,"L",a,e+.5,"L",-a-1,e+.5,"L",-a-1,.5,"M",-b,4,"L",-b,e-3,"M",b-1,4,"L",b-1,e-3]};p.prototype.toFixedRange=function(a,
-b,d,e){var f=this.chart&&this.chart.fixedRange,l=(this.pointRange||0)/2;a=F(d,this.translate(a,!0,!this.horiz));b=F(e,this.translate(b,!0,!this.horiz));var k=f&&(b-a)/f;G(d)||(a=c.correctFloat(a+l));G(e)||(b=c.correctFloat(b-l));.7<k&&1.3>k&&(e?a=b-f:b=a+f);E(a)&&E(b)||(a=b=void 0);return{min:a,max:b}};D.prototype={drawHandle:function(a,b,c,d){var f=this.navigatorOptions.handles.height;this.handles[b][d](c?{translateX:Math.round(this.left+this.height/2),translateY:Math.round(this.top+parseInt(a,10)+
-.5-f)}:{translateX:Math.round(this.left+parseInt(a,10)),translateY:Math.round(this.top+this.height/2-f/2-1)})},drawOutline:function(a,b,c,d){var f=this.navigatorOptions.maskInside,l=this.outline.strokeWidth(),e=l/2;l=l%2/2;var k=this.outlineHeight,g=this.scrollbarHeight,n=this.size,h=this.left-g,m=this.top;c?(h-=e,c=m+b+l,b=m+a+l,a=["M",h+k,m-g-l,"L",h+k,c,"L",h,c,"L",h,b,"L",h+k,b,"L",h+k,m+n+g].concat(f?["M",h+k,c-e,"L",h+k,b+e]:[])):(a+=h+g-l,b+=h+g-l,m+=e,a=["M",h,m,"L",a,m,"L",a,m+k,"L",b,m+
-k,"L",b,m,"L",h+n+2*g,m].concat(f?["M",a-e,m,"L",b+e,m]:[]));this.outline[d]({d:a})},drawMasks:function(a,b,c,d){var f=this.left,l=this.top,e=this.height;if(c){var k=[f,f,f];var g=[l,l+a,l+b];var n=[e,e,e];var h=[a,b-a,this.size-b]}else k=[f,f+a,f+b],g=[l,l,l],n=[a,b-a,this.size-b],h=[e,e,e];this.shades.forEach(function(a,b){a[d]({x:k[b],y:g[b],width:n[b],height:h[b]})})},renderElements:function(){var a=this,b=a.navigatorOptions,c=b.maskInside,d=a.chart,e=d.renderer,k,g={cursor:d.inverted?"ns-resize":
-"ew-resize"};a.navigatorGroup=k=e.g("navigator").attr({zIndex:8,visibility:"hidden"}).add();[!c,c,!c].forEach(function(c,f){a.shades[f]=e.rect().addClass("highcharts-navigator-mask"+(1===f?"-inside":"-outside")).add(k);d.styledMode||a.shades[f].attr({fill:c?b.maskFill:"rgba(0,0,0,0)"}).css(1===f&&g)});a.outline=e.path().addClass("highcharts-navigator-outline").add(k);d.styledMode||a.outline.attr({"stroke-width":b.outlineWidth,stroke:b.outlineColor});b.handles.enabled&&[0,1].forEach(function(c){b.handles.inverted=
-d.inverted;a.handles[c]=e.symbol(b.handles.symbols[c],-b.handles.width/2-1,0,b.handles.width,b.handles.height,b.handles);a.handles[c].attr({zIndex:7-c}).addClass("highcharts-navigator-handle highcharts-navigator-handle-"+["left","right"][c]).add(k);if(!d.styledMode){var f=b.handles;a.handles[c].attr({fill:f.backgroundColor,stroke:f.borderColor,"stroke-width":f.lineWidth}).css(g)}})},update:function(a){(this.series||[]).forEach(function(a){a.baseSeries&&delete a.baseSeries.navigatorSeries});this.destroy();
-d(!0,this.chart.options.navigator,this.options,a);this.init(this.chart)},render:function(a,b,d,e){var f=this.chart,l=this.scrollbarHeight,k,g=this.xAxis,h=g.pointRange||0;var n=g.fake?f.xAxis[0]:g;var m=this.navigatorEnabled,r,v=this.rendered;var p=f.inverted;var q=f.xAxis[0].minRange,t=f.xAxis[0].options.maxRange;if(!this.hasDragged||G(d)){a=c.correctFloat(a-h/2);b=c.correctFloat(b+h/2);if(!E(a)||!E(b))if(v)d=0,e=F(g.width,n.width);else return;this.left=F(g.left,f.plotLeft+l+(p?f.plotWidth:0));this.size=
-r=k=F(g.len,(p?f.plotHeight:f.plotWidth)-2*l);f=p?l:k+2*l;d=F(d,g.toPixels(a,!0));e=F(e,g.toPixels(b,!0));E(d)&&Infinity!==Math.abs(d)||(d=0,e=f);a=g.toValue(d,!0);b=g.toValue(e,!0);var z=Math.abs(c.correctFloat(b-a));c.correctFloat(z-h)<q?this.grabbedLeft?d=g.toPixels(b-q-h,!0):this.grabbedRight&&(e=g.toPixels(a+q+h,!0)):G(t)&&c.correctFloat(z-h)>t&&(this.grabbedLeft?d=g.toPixels(b-t-h,!0):this.grabbedRight&&(e=g.toPixels(a+t+h,!0)));this.zoomedMax=Math.min(Math.max(d,e,0),r);this.zoomedMin=Math.min(Math.max(this.fixedWidth?
-this.zoomedMax-this.fixedWidth:Math.min(d,e),0),r);this.range=this.zoomedMax-this.zoomedMin;r=Math.round(this.zoomedMax);d=Math.round(this.zoomedMin);m&&(this.navigatorGroup.attr({visibility:"visible"}),v=v&&!this.hasDragged?"animate":"attr",this.drawMasks(d,r,p,v),this.drawOutline(d,r,p,v),this.navigatorOptions.handles.enabled&&(this.drawHandle(d,0,p,v),this.drawHandle(r,1,p,v)));this.scrollbar&&(p?(p=this.top-l,n=this.left-l+(m||!n.opposite?0:(n.titleOffset||0)+n.axisTitleMargin),l=k+2*l):(p=this.top+
-(m?this.height:-l),n=this.left-l),this.scrollbar.position(n,p,f,l),this.scrollbar.setRange(this.zoomedMin/(k||1),this.zoomedMax/(k||1)));this.rendered=!0}},addMouseEvents:function(){var b=this,c=b.chart,d=c.container,e=[],k,g;b.mouseMoveHandler=k=function(a){b.onMouseMove(a)};b.mouseUpHandler=g=function(a){b.onMouseUp(a)};e=b.getPartsEvents("mousedown");e.push(m(c.renderTo,"mousemove",k),m(d.ownerDocument,"mouseup",g));a&&(e.push(m(c.renderTo,"touchmove",k),m(d.ownerDocument,"touchend",g)),e.concat(b.getPartsEvents("touchstart")));
-b.eventsToUnbind=e;b.series&&b.series[0]&&e.push(m(b.series[0].xAxis,"foundExtremes",function(){c.navigator.modifyNavigatorAxisExtremes()}))},getPartsEvents:function(a){var b=this,c=[];["shades","handles"].forEach(function(d){b[d].forEach(function(f,l){c.push(m(f.element,a,function(a){b[d+"Mousedown"](a,l)}))})});return c},shadesMousedown:function(a,b){a=this.chart.pointer.normalize(a);var c=this.chart,d=this.xAxis,f=this.zoomedMin,e=this.left,k=this.size,g=this.range,h=a.chartX;c.inverted&&(h=a.chartY,
-e=this.top);if(1===b)this.grabbedCenter=h,this.fixedWidth=g,this.dragOffset=h-f;else{a=h-e-g/2;if(0===b)a=Math.max(0,a);else if(2===b&&a+g>=k)if(a=k-g,this.reversedExtremes){a-=g;var n=this.getUnionExtremes().dataMin}else var m=this.getUnionExtremes().dataMax;a!==f&&(this.fixedWidth=g,b=d.toFixedRange(a,a+g,n,m),G(b.min)&&c.xAxis[0].setExtremes(Math.min(b.min,b.max),Math.max(b.min,b.max),!0,null,{trigger:"navigator"}))}},handlesMousedown:function(a,b){this.chart.pointer.normalize(a);a=this.chart;
-var c=a.xAxis[0],d=this.reversedExtremes;0===b?(this.grabbedLeft=!0,this.otherHandlePos=this.zoomedMax,this.fixedExtreme=d?c.min:c.max):(this.grabbedRight=!0,this.otherHandlePos=this.zoomedMin,this.fixedExtreme=d?c.max:c.min);a.fixedRange=null},onMouseMove:function(a){var d=this,e=d.chart,k=d.left,g=d.navigatorSize,h=d.range,m=d.dragOffset,n=e.inverted;a.touches&&0===a.touches[0].pageX||(a=e.pointer.normalize(a),e=a.chartX,n&&(k=d.top,e=a.chartY),d.grabbedLeft?(d.hasDragged=!0,d.render(0,0,e-k,d.otherHandlePos)):
-d.grabbedRight?(d.hasDragged=!0,d.render(0,0,d.otherHandlePos,e-k)):d.grabbedCenter&&(d.hasDragged=!0,e<m?e=m:e>g+m-h&&(e=g+m-h),d.render(0,0,e-m,e-m+h)),d.hasDragged&&d.scrollbar&&F(d.scrollbar.options.liveRedraw,c.svg&&!b&&!this.chart.isBoosting)&&(a.DOMType=a.type,setTimeout(function(){d.onMouseUp(a)},0)))},onMouseUp:function(a){var b=this.chart,c=this.xAxis,d=this.scrollbar,e=a.DOMEvent||a;if(this.hasDragged&&(!d||!d.hasDragged)||"scrollbar"===a.trigger){d=this.getUnionExtremes();if(this.zoomedMin===
-this.otherHandlePos)var k=this.fixedExtreme;else if(this.zoomedMax===this.otherHandlePos)var g=this.fixedExtreme;this.zoomedMax===this.size&&(g=this.reversedExtremes?d.dataMin:d.dataMax);0===this.zoomedMin&&(k=this.reversedExtremes?d.dataMax:d.dataMin);c=c.toFixedRange(this.zoomedMin,this.zoomedMax,k,g);G(c.min)&&b.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:e})}"mousemove"!==a.DOMType&&"touchmove"!==
-a.DOMType&&(this.grabbedLeft=this.grabbedRight=this.grabbedCenter=this.fixedWidth=this.fixedExtreme=this.otherHandlePos=this.hasDragged=this.dragOffset=null)},removeEvents:function(){this.eventsToUnbind&&(this.eventsToUnbind.forEach(function(a){a()}),this.eventsToUnbind=void 0);this.removeBaseSeriesEvents()},removeBaseSeriesEvents:function(){var a=this.baseSeries||[];this.navigatorEnabled&&a[0]&&(!1!==this.navigatorOptions.adaptToUpdatedData&&a.forEach(function(a){e(a,"updatedData",this.updatedDataHandler)},
-this),a[0].xAxis&&e(a[0].xAxis,"foundExtremes",this.modifyBaseAxisExtremes))},init:function(a){var b=a.options,c=b.navigator,e=c.enabled,g=b.scrollbar,h=g.enabled;b=e?c.height:0;var n=h?g.height:0;this.handles=[];this.shades=[];this.chart=a;this.setBaseSeries();this.height=b;this.scrollbarHeight=n;this.scrollbarEnabled=h;this.navigatorEnabled=e;this.navigatorOptions=c;this.scrollbarOptions=g;this.outlineHeight=b+n;this.opposite=F(c.opposite,!(e||!a.inverted));var r=this;e=r.baseSeries;g=a.xAxis.length;
-h=a.yAxis.length;var q=e&&e[0]&&e[0].xAxis||a.xAxis[0]||{options:{}};a.isDirtyBox=!0;r.navigatorEnabled?(r.xAxis=new p(a,d({breaks:q.options.breaks,ordinal:q.options.ordinal},c.xAxis,{id:"navigator-x-axis",yAxis:"navigator-y-axis",isX:!0,type:"datetime",index:g,isInternal:!0,offset:0,keepOrdinalPadding:!0,startOnTick:!1,endOnTick:!1,minPadding:0,maxPadding:0,zoomEnabled:!1},a.inverted?{offsets:[n,0,-n,0],width:b}:{offsets:[0,-n,0,n],height:b})),r.yAxis=new p(a,d(c.yAxis,{id:"navigator-y-axis",alignTicks:!1,
-offset:0,index:h,isInternal:!0,zoomEnabled:!1},a.inverted?{width:b}:{height:b})),e||c.series.data?r.updateNavigatorSeries(!1):0===a.series.length&&(r.unbindRedraw=m(a,"beforeRedraw",function(){0<a.series.length&&!r.series&&(r.setBaseSeries(),r.unbindRedraw())})),r.reversedExtremes=a.inverted&&!r.xAxis.reversed||!a.inverted&&r.xAxis.reversed,r.renderElements(),r.addMouseEvents()):r.xAxis={translate:function(b,c){var d=a.xAxis[0],f=d.getExtremes(),e=d.len-2*n,l=z("min",d.options.min,f.dataMin);d=z("max",
-d.options.max,f.dataMax)-l;return c?b*d/e+l:e*(b-l)/d},toPixels:function(a){return this.translate(a)},toValue:function(a){return this.translate(a,!0)},toFixedRange:p.prototype.toFixedRange,fake:!0};a.options.scrollbar.enabled&&(a.scrollbar=r.scrollbar=new k(a.renderer,d(a.options.scrollbar,{margin:r.navigatorEnabled?0:10,vertical:a.inverted}),a),m(r.scrollbar,"changed",function(b){var c=r.size,d=c*this.to;c*=this.from;r.hasDragged=r.scrollbar.hasDragged;r.render(0,0,c,d);(a.options.scrollbar.liveRedraw||
-"mousemove"!==b.DOMType&&"touchmove"!==b.DOMType)&&setTimeout(function(){r.onMouseUp(b)})}));r.addBaseSeriesEvents();r.addChartEvents()},getUnionExtremes:function(a){var b=this.chart.xAxis[0],c=this.xAxis,d=c.options,e=b.options,k;a&&null===b.dataMin||(k={dataMin:F(d&&d.min,z("min",e.min,b.dataMin,c.dataMin,c.min)),dataMax:F(d&&d.max,z("max",e.max,b.dataMax,c.dataMax,c.max))});return k},setBaseSeries:function(a,b){var d=this.chart,f=this.baseSeries=[];a=a||d.options&&d.options.navigator.baseSeries||
-(d.series.length?c.find(d.series,function(a){return!a.options.isInternal}).index:0);(d.series||[]).forEach(function(b,c){b.options.isInternal||!b.options.showInNavigator&&(c!==a&&b.options.id!==a||!1===b.options.showInNavigator)||f.push(b)});this.xAxis&&!this.xAxis.fake&&this.updateNavigatorSeries(!0,b)},updateNavigatorSeries:function(a,b){var c=this,f=c.chart,k=c.baseSeries,g,m,n=c.navigatorOptions.series,r,p={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}}},q=c.series=(c.series||[]).filter(function(a){var b=a.baseSeries;return 0>k.indexOf(b)?(b&&(e(b,"updatedData",c.updatedDataHandler),delete b.navigatorSeries),a.chart&&a.destroy(),!1):!0});k&&k.length&&k.forEach(function(a){var e=a.navigatorSeries,l=w({color:a.color,visible:a.visible},x(n)?h.navigator.series:n);e&&!1===c.navigatorOptions.adaptToUpdatedData||(p.name="Navigator "+k.length,g=a.options||{},
-r=g.navigatorOptions||{},m=d(g,p,l,r),m.pointRange=F(l.pointRange,r.pointRange,h.plotOptions[m.type||"line"].pointRange),l=r.data||l.data,c.hasNavigatorData=c.hasNavigatorData||!!l,m.data=l||g.data&&g.data.slice(0),e&&e.options?e.update(m,b):(a.navigatorSeries=f.initSeries(m),a.navigatorSeries.baseSeries=a,q.push(a.navigatorSeries)))});if(n.data&&(!k||!k.length)||x(n))c.hasNavigatorData=!1,n=t(n),n.forEach(function(a,b){p.name="Navigator "+(q.length+1);m=d(h.navigator.series,{color:f.series[b]&&!f.series[b].options.isInternal&&
-f.series[b].color||f.options.colors[b]||f.options.colors[0]},p,a);m.data=a.data;m.data&&(c.hasNavigatorData=!0,q.push(f.initSeries(m)))});a&&this.addBaseSeriesEvents()},addBaseSeriesEvents:function(){var a=this,b=a.baseSeries||[];b[0]&&b[0].xAxis&&m(b[0].xAxis,"foundExtremes",this.modifyBaseAxisExtremes);b.forEach(function(b){m(b,"show",function(){this.navigatorSeries&&this.navigatorSeries.setVisible(!0,!1)});m(b,"hide",function(){this.navigatorSeries&&this.navigatorSeries.setVisible(!1,!1)});!1!==
-this.navigatorOptions.adaptToUpdatedData&&b.xAxis&&m(b,"updatedData",this.updatedDataHandler);m(b,"remove",function(){this.navigatorSeries&&(y(a.series,this.navigatorSeries),G(this.navigatorSeries.options)&&this.navigatorSeries.remove(!1),delete this.navigatorSeries)})},this)},getBaseSeriesMin:function(a){return this.baseSeries.reduce(function(a,b){return Math.min(a,b.xData?b.xData[0]:a)},a)},modifyNavigatorAxisExtremes:function(){var a=this.xAxis,b;"undefined"!==typeof a.getExtremes&&(!(b=this.getUnionExtremes(!0))||
-b.dataMin===a.min&&b.dataMax===a.max||(a.min=b.dataMin,a.max=b.dataMax))},modifyBaseAxisExtremes:function(){var a=this.chart.navigator,b=this.getExtremes(),c=b.dataMin,d=b.dataMax;b=b.max-b.min;var e=a.stickToMin,k=a.stickToMax,g=F(this.options.overscroll,0),h=a.series&&a.series[0],m=!!this.setExtremes;if(!this.eventArgs||"rangeSelectorButton"!==this.eventArgs.trigger){if(e){var r=c;var p=r+b}k&&(p=d+g,e||(r=Math.max(p-b,a.getBaseSeriesMin(h&&h.xData?h.xData[0]:-Number.MAX_VALUE))));m&&(e||k)&&E(r)&&
-(this.min=this.userMin=r,this.max=this.userMax=p)}a.stickToMin=a.stickToMax=null},updatedDataHandler:function(){var a=this.chart.navigator,b=this.navigatorSeries,c=a.getBaseSeriesMin(this.xData[0]);a.stickToMax=a.reversedExtremes?0===Math.round(a.zoomedMin):Math.round(a.zoomedMax)>=Math.round(a.size);a.stickToMin=E(this.xAxis.min)&&this.xAxis.min<=c&&(!this.chart.fixedRange||!a.stickToMax);b&&!a.hasNavigatorData&&(b.options.pointStart=this.xData[0],b.setData(this.options.data,!1,null,!1))},addChartEvents:function(){this.eventsToUnbind||
-(this.eventsToUnbind=[]);this.eventsToUnbind.push(m(this.chart,"redraw",function(){var a=this.navigator,b=a&&(a.baseSeries&&a.baseSeries[0]&&a.baseSeries[0].xAxis||a.scrollbar&&this.xAxis[0]);b&&a.render(b.min,b.max)}),m(this.chart,"getMargins",function(){var a=this.navigator,b=a.opposite?"plotTop":"marginBottom";this.inverted&&(b=a.opposite?"marginRight":"plotLeft");this[b]=(this[b]||0)+(a.navigatorEnabled||!this.inverted?a.outlineHeight:0)+a.navigatorOptions.margin}))},destroy:function(){this.removeEvents();
-this.xAxis&&(y(this.chart.xAxis,this.xAxis),y(this.chart.axes,this.xAxis));this.yAxis&&(y(this.chart.yAxis,this.yAxis),y(this.chart.axes,this.yAxis));(this.series||[]).forEach(function(a){a.destroy&&a.destroy()});"series xAxis yAxis shades outline scrollbarTrack scrollbarRifles scrollbarGroup scrollbar navigatorGroup rendered".split(" ").forEach(function(a){this[a]&&this[a].destroy&&this[a].destroy();this[a]=null},this);[this.handles].forEach(function(a){H(a)},this)}};c.Navigator||(c.Navigator=D,
-m(p,"zoom",function(a){var c=this.chart.options,d=c.chart.zoomType,e=c.chart.pinchType,k=c.navigator;c=c.rangeSelector;this.isXAxis&&(k&&k.enabled||c&&c.enabled)&&("y"===d?a.zoomed=!1:(!b&&"xy"===d||b&&"xy"===e)&&this.options.range&&(d=this.previousZoom,G(a.newMin)?this.previousZoom=[this.min,this.max]:d&&(a.newMin=d[0],a.newMax=d[1],delete this.previousZoom)));void 0!==a.zoomed&&a.preventDefault()}),m(g,"beforeShowResetZoom",function(){var a=this.options,c=a.navigator,d=a.rangeSelector;if((c&&c.enabled||
-d&&d.enabled)&&(!b&&"x"===a.chart.zoomType||b&&"x"===a.chart.pinchType))return!1}),m(g,"beforeRender",function(){var a=this.options;if(a.navigator.enabled||a.scrollbar.enabled)this.scroller=this.navigator=new D(this)}),m(g,"afterSetChartSize",function(){var a=this.legend,b=this.navigator;if(b){var c=a&&a.options;var d=b.xAxis;var e=b.yAxis;var k=b.scrollbarHeight;this.inverted?(b.left=b.opposite?this.chartWidth-k-b.height:this.spacing[3]+k,b.top=this.plotTop+k):(b.left=this.plotLeft+k,b.top=b.navigatorOptions.top||
-this.chartHeight-b.height-k-this.spacing[2]-(this.rangeSelector&&this.extraBottomMargin?this.rangeSelector.getHeight():0)-(c&&"bottom"===c.verticalAlign&&c.enabled&&!c.floating?a.legendHeight+F(c.margin,10):0)-(this.titleOffset?this.titleOffset[2]:0));d&&e&&(this.inverted?d.options.left=e.options.left=b.left:d.options.top=e.options.top=b.top,d.setAxisSize(),e.setAxisSize())}}),m(g,"update",function(a){var b=a.options.navigator||{},c=a.options.scrollbar||{};this.navigator||this.scroller||!b.enabled&&
-!c.enabled||(d(!0,this.options.navigator,b),d(!0,this.options.scrollbar,c),delete a.options.navigator,delete a.options.scrollbar)}),m(g,"afterUpdate",function(a){this.navigator||this.scroller||!this.options.navigator.enabled&&!this.options.scrollbar.enabled||(this.scroller=this.navigator=new D(this),F(a.redraw,!0)&&this.redraw(a.animation))}),m(g,"afterAddSeries",function(){this.navigator&&this.navigator.setBaseSeries(null,!1)}),m(C,"afterUpdate",function(){this.chart.navigator&&!this.options.isInternal&&
-this.chart.navigator.setBaseSeries(null,!1)}),g.prototype.callbacks.push(function(a){var b=a.navigator;b&&a.xAxis[0]&&(a=a.xAxis[0].getExtremes(),b.render(a.min,a.max))}))});K(D,"parts/OrdinalAxis.js",[D["parts/Globals.js"],D["parts/Utilities.js"]],function(c,g){var D=g.defined,G=g.extend,H=g.pick;g=c.addEvent;var y=c.Axis,w=c.Chart,x=c.css,E=c.noop,F=c.timeUnits;g(c.Series,"updatedData",function(){var c=this.xAxis;c&&c.options.ordinal&&delete c.ordinalIndex});y.prototype.getTimeTicks=function(c,
-g,p,q,h,a,b){var d=0,e,k,m={},t=[],r=-Number.MAX_VALUE,n=this.options.tickPixelInterval,f=this.chart.time,l=[];if(!this.options.ordinal&&!this.options.breaks||!h||3>h.length||void 0===g)return f.getTimeTicks.apply(f,arguments);var v=h.length;for(e=0;e<v;e++){var B=e&&h[e-1]>p;h[e]<g&&(d=e);if(e===v-1||h[e+1]-h[e]>5*a||B){if(h[e]>r){for(k=f.getTimeTicks(c,h[d],h[e],q);k.length&&k[0]<=r;)k.shift();k.length&&(r=k[k.length-1]);l.push(t.length);t=t.concat(k)}d=e+1}if(B)break}k=k.info;if(b&&k.unitRange<=
-F.hour){e=t.length-1;for(d=1;d<e;d++)if(f.dateFormat("%d",t[d])!==f.dateFormat("%d",t[d-1])){m[t[d]]="day";var A=!0}A&&(m[t[0]]="day");k.higherRanks=m}k.segmentStarts=l;t.info=k;if(b&&D(n)){d=l=t.length;A=[];var u;for(f=[];d--;)e=this.translate(t[d]),u&&(f[d]=u-e),A[d]=u=e;f.sort();f=f[Math.floor(f.length/2)];f<.6*n&&(f=null);d=t[l-1]>p?l-1:l;for(u=void 0;d--;)e=A[d],l=Math.abs(u-e),u&&l<.8*n&&(null===f||l<.8*f)?(m[t[d]]&&!m[t[d+1]]?(l=d+1,u=e):l=d,t.splice(l,1)):u=e}return t};G(y.prototype,{beforeSetTickPositions:function(){var c=
-[],g,p=!1,q=this.getExtremes(),h=q.min,a=q.max,b,d=this.isXAxis&&!!this.options.breaks;q=this.options.ordinal;var e=Number.MAX_VALUE,k=this.chart.options.chart.ignoreHiddenSeries,C;if(q||d){this.series.forEach(function(a,b){g=[];if(!(k&&!1===a.visible||!1===a.takeOrdinalPosition&&!d)&&(c=c.concat(a.processedXData),z=c.length,c.sort(function(a,b){return a-b}),e=Math.min(e,H(a.closestPointRange,e)),z)){for(b=0;b<z-1;)c[b]!==c[b+1]&&g.push(c[b+1]),b++;g[0]!==c[0]&&g.unshift(c[0]);c=g}a.isSeriesBoosting&&
-(C=!0)});C&&(c.length=0);var z=c.length;if(2<z){var r=c[1]-c[0];for(b=z-1;b--&&!p;)c[b+1]-c[b]!==r&&(p=!0);!this.options.keepOrdinalPadding&&(c[0]-h>r||a-c[c.length-1]>r)&&(p=!0)}else this.options.overscroll&&(2===z?e=c[1]-c[0]:1===z?(e=this.options.overscroll,c=[c[0],c[0]+e]):e=this.overscrollPointsRange);p?(this.options.overscroll&&(this.overscrollPointsRange=e,c=c.concat(this.getOverscrollPositions())),this.ordinalPositions=c,r=this.ordinal2lin(Math.max(h,c[0]),!0),b=Math.max(this.ordinal2lin(Math.min(a,
-c[c.length-1]),!0),1),this.ordinalSlope=a=(a-h)/(b-r),this.ordinalOffset=h-r*a):(this.overscrollPointsRange=H(this.closestPointRange,this.overscrollPointsRange),this.ordinalPositions=this.ordinalSlope=this.ordinalOffset=void 0)}this.isOrdinal=q&&p;this.groupIntervalFactor=null},val2lin:function(c,g){var m=this.ordinalPositions;if(m){var q=m.length,h;for(h=q;h--;)if(m[h]===c){var a=h;break}for(h=q-1;h--;)if(c>m[h]||0===h){c=(c-m[h])/(m[h+1]-m[h]);a=h+c;break}g=g?a:this.ordinalSlope*(a||0)+this.ordinalOffset}else g=
-c;return g},lin2val:function(c,g){var m=this.ordinalPositions;if(m){var q=this.ordinalSlope,h=this.ordinalOffset,a=m.length-1;if(g)if(0>c)c=m[0];else if(c>a)c=m[a];else{a=Math.floor(c);var b=c-a}else for(;a--;)if(g=q*a+h,c>=g){q=q*(a+1)+h;b=(c-g)/(q-g);break}return void 0!==b&&void 0!==m[a]?m[a]+(b?b*(m[a+1]-m[a]):0):c}return c},getExtendedPositions:function(){var c=this,g=c.chart,p=c.series[0].currentDataGrouping,q=c.ordinalIndex,h=p?p.count+p.unitName:"raw",a=c.options.overscroll,b=c.getExtremes(),
-d;q||(q=c.ordinalIndex={});if(!q[h]){var e={series:[],chart:g,getExtremes:function(){return{min:b.dataMin,max:b.dataMax+a}},options:{ordinal:!0},val2lin:y.prototype.val2lin,ordinal2lin:y.prototype.ordinal2lin};c.series.forEach(function(a){d={xAxis:e,xData:a.xData.slice(),chart:g,destroyGroupedData:E};d.xData=d.xData.concat(c.getOverscrollPositions());d.options={dataGrouping:p?{enabled:!0,forced:!0,approximation:"open",units:[[p.unitName,[p.count]]]}:{enabled:!1}};a.processData.apply(d);e.series.push(d)});
-c.beforeSetTickPositions.apply(e);q[h]=e.ordinalPositions}return q[h]},getOverscrollPositions:function(){var c=this.options.overscroll,g=this.overscrollPointsRange,p=[],q=this.dataMax;if(D(g))for(p.push(q);q<=this.dataMax+c;)q+=g,p.push(q);return p},getGroupIntervalFactor:function(c,g,p){p=p.processedXData;var m=p.length,h=[];var a=this.groupIntervalFactor;if(!a){for(a=0;a<m-1;a++)h[a]=p[a+1]-p[a];h.sort(function(a,c){return a-c});h=h[Math.floor(m/2)];c=Math.max(c,p[0]);g=Math.min(g,p[m-1]);this.groupIntervalFactor=
-a=m*h/(g-c)}return a},postProcessTickInterval:function(c){var g=this.ordinalSlope;return g?this.options.breaks?this.closestPointRange||c:c/(g/this.closestPointRange):c}});y.prototype.ordinal2lin=y.prototype.val2lin;g(w,"pan",function(c){var g=this.xAxis[0],p=g.options.overscroll,q=c.originalEvent.chartX,h=!1;if(g.options.ordinal&&g.series.length){var a=this.mouseDownX,b=g.getExtremes(),d=b.dataMax,e=b.min,k=b.max,t=this.hoverPoints,z=g.closestPointRange||g.overscrollPointsRange;a=(a-q)/(g.translationSlope*
-(g.ordinalSlope||z));var r={ordinalPositions:g.getExtendedPositions()};z=g.lin2val;var n=g.val2lin;if(!r.ordinalPositions)h=!0;else if(1<Math.abs(a)){t&&t.forEach(function(a){a.setState()});if(0>a){t=r;var f=g.ordinalPositions?g:r}else t=g.ordinalPositions?g:r,f=r;r=f.ordinalPositions;d>r[r.length-1]&&r.push(d);this.fixedRange=k-e;a=g.toFixedRange(null,null,z.apply(t,[n.apply(t,[e,!0])+a,!0]),z.apply(f,[n.apply(f,[k,!0])+a,!0]));a.min>=Math.min(b.dataMin,e)&&a.max<=Math.max(d,k)+p&&g.setExtremes(a.min,
-a.max,!0,!1,{trigger:"pan"});this.mouseDownX=q;x(this.container,{cursor:"move"})}}else h=!0;h?p&&(g.max=g.dataMax+p):c.preventDefault()});g(y,"foundExtremes",function(){this.isXAxis&&D(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&&D(this.userMin)&&(this.min+=this.options.overscroll))});g(y,"afterSetScale",function(){this.horiz&&
-!this.isDirty&&(this.isDirty=this.isOrdinal&&this.chart.navigator&&!this.chart.navigator.adaptToUpdatedData)})});K(D,"modules/broken-axis.src.js",[D["parts/Globals.js"],D["parts/Utilities.js"]],function(c,g){var D=g.extend,G=g.isArray,H=g.pick;g=c.addEvent;var y=c.find,w=c.fireEvent,x=c.Axis,E=c.Series,F=function(c,g){return y(g,function(g){return g.from<c&&c<g.to})};D(x.prototype,{isInBreak:function(c,g){var m=c.repeat||Infinity,q=c.from,h=c.to-c.from;g=g>=q?(g-q)%m:m-(q-g)%m;return c.inclusive?
-g<=h:g<h&&0!==g},isInAnyBreak:function(c,g){var m=this.options.breaks,q=m&&m.length,h;if(q){for(;q--;)if(this.isInBreak(m[q],c)){var a=!0;h||(h=H(m[q].showPoints,!this.isXAxis))}var b=a&&g?a&&!h:a}return b}});g(x,"afterInit",function(){"function"===typeof this.setBreaks&&this.setBreaks(this.options.breaks,!1)});g(x,"afterSetTickPositions",function(){if(this.isBroken){var c=this.tickPositions,g=this.tickPositions.info,p=[],q;for(q=0;q<c.length;q++)this.isInAnyBreak(c[q])||p.push(c[q]);this.tickPositions=
-p;this.tickPositions.info=g}});g(x,"afterSetOptions",function(){this.isBroken&&(this.options.ordinal=!1)});x.prototype.setBreaks=function(c,g){function m(a){var b=a,c;for(c=0;c<h.breakArray.length;c++){var g=h.breakArray[c];if(g.to<=a)b-=g.len;else if(g.from>=a)break;else if(h.isInBreak(g,a)){b-=a-g.from;break}}return b}function q(a){var b;for(b=0;b<h.breakArray.length;b++){var c=h.breakArray[b];if(c.from>=a)break;else c.to<a?a+=c.len:h.isInBreak(c,a)&&(a+=c.len)}return a}var h=this,a=G(c)&&!!c.length;
-h.isDirty=h.isBroken!==a;h.isBroken=a;h.options.breaks=h.userOptions.breaks=c;h.forceRedraw=!0;a||h.val2lin!==m||(delete h.val2lin,delete h.lin2val);a&&(h.userOptions.ordinal=!1,h.val2lin=m,h.lin2val=q,h.setExtremes=function(a,c,e,g,h){if(this.isBroken){for(var b,d=this.options.breaks;b=F(a,d);)a=b.to;for(;b=F(c,d);)c=b.from;c<a&&(c=a)}x.prototype.setExtremes.call(this,a,c,e,g,h)},h.setAxisTranslation=function(a){x.prototype.setAxisTranslation.call(this,a);this.unitLength=null;if(this.isBroken){a=
-h.options.breaks;var b=[],c=[],g=0,m,p=h.userMin||h.min,r=h.userMax||h.max,n=H(h.pointRangePadding,0),f;a.forEach(function(a){m=a.repeat||Infinity;h.isInBreak(a,p)&&(p+=a.to%m-p%m);h.isInBreak(a,r)&&(r-=r%m-a.from%m)});a.forEach(function(a){v=a.from;for(m=a.repeat||Infinity;v-m>p;)v-=m;for(;v<p;)v+=m;for(f=v;f<r;f+=m)b.push({value:f,move:"in"}),b.push({value:f+(a.to-a.from),move:"out",size:a.breakSize})});b.sort(function(a,b){return a.value===b.value?("in"===a.move?0:1)-("in"===b.move?0:1):a.value-
-b.value});var l=0;var v=p;b.forEach(function(a){l+="in"===a.move?1:-1;1===l&&"in"===a.move&&(v=a.value);0===l&&(c.push({from:v,to:a.value,len:a.value-v-(a.size||0)}),g+=a.value-v-(a.size||0))});h.breakArray=c;h.unitLength=r-p-g+n;w(h,"afterBreaks");h.staticScale?h.transA=h.staticScale:h.unitLength&&(h.transA*=(r-h.min+n)/h.unitLength);n&&(h.minPixelPadding=h.transA*h.minPointOffset);h.min=p;h.max=r}});H(g,!0)&&this.chart.redraw()};g(E,"afterGeneratePoints",function(){var c=this.xAxis,g=this.yAxis,
-p=this.points,q=p.length,h=this.options.connectNulls;if(c&&g&&(c.options.breaks||g.options.breaks))for(;q--;){var a=p[q];var b=null===a.y&&!1===h;b||!c.isInAnyBreak(a.x,!0)&&!g.isInAnyBreak(a.y,!0)||(p.splice(q,1),this.data[q]&&this.data[q].destroyElements())}});g(E,"afterRender",function(){this.drawBreaks(this.xAxis,["x"]);this.drawBreaks(this.yAxis,H(this.pointArrayMap,["y"]))});c.Series.prototype.drawBreaks=function(c,g){var m=this,q=m.points,h,a,b,d;c&&g.forEach(function(e){h=c.breakArray||[];
-a=c.isXAxis?c.min:H(m.options.threshold,c.min);q.forEach(function(g){d=H(g["stack"+e.toUpperCase()],g[e]);h.forEach(function(e){b=!1;if(a<e.from&&d>e.to||a>e.from&&d<e.from)b="pointBreak";else if(a<e.from&&d>e.from&&d<e.to||a>e.from&&d>e.to&&d<e.from)b="pointInBreak";b&&w(c,b,{point:g,brk:e})})})})};c.Series.prototype.gappedPath=function(){var g=this.currentDataGrouping,m=g&&g.gapSize;g=this.options.gapSize;var p=this.points.slice(),q=p.length-1,h=this.yAxis;if(g&&0<q)for("value"!==this.options.gapUnit&&
-(g*=this.basePointRange),m&&m>g&&m>=this.basePointRange&&(g=m);q--;)p[q+1].x-p[q].x>g&&(m=(p[q].x+p[q+1].x)/2,p.splice(q+1,0,{isNull:!0,x:m}),this.options.stacking&&(m=h.stacks[this.stackKey][m]=new c.StackItem(h,h.options.stackLabels,!1,m,this.stack),m.total=0));return this.getGraphPath(p)}});K(D,"masters/modules/broken-axis.src.js",[],function(){});K(D,"parts/DataGrouping.js",[D["parts/Globals.js"],D["parts/Utilities.js"]],function(c,g){var D=g.arrayMax,G=g.arrayMin,H=g.defined,y=g.extend,w=g.isNumber,
-x=g.pick;g=c.addEvent;var E=c.Axis,F=c.correctFloat,t=c.defaultPlotOptions,m=c.format,p=c.merge,q=c.Point,h=c.Series,a=c.Tooltip,b=c.approximations={sum:function(a){var b=a.length;if(!b&&a.hasNulls)var c=null;else if(b)for(c=0;b--;)c+=a[b];return c},average:function(a){var c=a.length;a=b.sum(a);w(a)&&c&&(a=F(a/c));return a},averages:function(){var a=[];[].forEach.call(arguments,function(c){a.push(b.average(c))});return void 0===a[0]?void 0:a},open:function(a){return a.length?a[0]:a.hasNulls?null:
-void 0},high:function(a){return a.length?D(a):a.hasNulls?null:void 0},low:function(a){return a.length?G(a):a.hasNulls?null:void 0},close:function(a){return a.length?a[a.length-1]:a.hasNulls?null:void 0},ohlc:function(a,c,d,f){a=b.open(a);c=b.high(c);d=b.low(d);f=b.close(f);if(w(a)||w(c)||w(d)||w(f))return[a,c,d,f]},range:function(a,c){a=b.low(a);c=b.high(c);if(w(a)||w(c))return[a,c];if(null===a&&null===c)return null}},d=function(a,c,d,f){var e=this,g=e.data,l=e.options&&e.options.data,k=[],h=[],m=
-[],n=a.length,r=!!c,q=[],v=e.pointArrayMap,B=v&&v.length,z=["x"].concat(v||["y"]),t=0,A=0,C;f="function"===typeof f?f:b[f]?b[f]:b[e.getDGApproximation&&e.getDGApproximation()||"average"];B?v.forEach(function(){q.push([])}):q.push([]);var x=B||1;for(C=0;C<=n&&!(a[C]>=d[0]);C++);for(C;C<=n;C++){for(;void 0!==d[t+1]&&a[C]>=d[t+1]||C===n;){var y=d[t];e.dataGroupInfo={start:e.cropStart+A,length:q[0].length};var E=f.apply(e,q);e.pointClass&&!H(e.dataGroupInfo.options)&&(e.dataGroupInfo.options=p(e.pointClass.prototype.optionsToObject.call({series:e},
-e.options.data[e.cropStart+A])),z.forEach(function(a){delete e.dataGroupInfo.options[a]}));void 0!==E&&(k.push(y),h.push(E),m.push(e.dataGroupInfo));A=C;for(y=0;y<x;y++)q[y].length=0,q[y].hasNulls=!1;t+=1;if(C===n)break}if(C===n)break;if(v)for(y=e.cropStart+C,E=g&&g[y]||e.pointClass.prototype.applyOptions.apply({series:e},[l[y]]),y=0;y<B;y++){var F=E[v[y]];w(F)?q[y].push(F):null===F&&(q[y].hasNulls=!0)}else y=r?c[C]:null,w(y)?q[0].push(y):null===y&&(q[0].hasNulls=!0)}return{groupedXData:k,groupedYData:h,
-groupMap:m}},e={approximations:b,groupData:d},k=h.prototype,C=k.processData,z=k.generatePoints,r={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"]}},n={line:{},spline:{},area:{},areaspline:{},arearange:{},column:{groupPixelWidth:10},columnrange:{groupPixelWidth:10},candlestick:{groupPixelWidth:10},ohlc:{groupPixelWidth:5}},f=c.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]];k.getDGApproximation=function(){return c.seriesTypes.arearange&&
-this instanceof c.seriesTypes.arearange?"range":c.seriesTypes.ohlc&&this instanceof c.seriesTypes.ohlc?"ohlc":c.seriesTypes.column&&this instanceof c.seriesTypes.column?"sum":"average"};k.groupData=d;k.processData=function(){var a=this.chart,b=this.options.dataGrouping,c=!1!==this.allowDG&&b&&x(b.enabled,a.options.isStock),d=this.visible||!a.options.chart.ignoreHiddenSeries,e,g=this.currentDataGrouping,h=!1;this.forceCrop=c;this.groupPixelWidth=null;this.hasProcessed=!0;c&&!this.requireSorting&&(this.requireSorting=
-h=!0);c=!1===C.apply(this,arguments)||!c;h&&(this.requireSorting=!1);if(!c){this.destroyGroupedData();c=b.groupAll?this.xData:this.processedXData;var m=b.groupAll?this.yData:this.processedYData,n=a.plotSizeX;a=this.xAxis;var r=a.options.ordinal,p=this.groupPixelWidth=a.getGroupPixelWidth&&a.getGroupPixelWidth();if(p){this.isDirty=e=!0;this.points=null;h=a.getExtremes();var q=h.min;h=h.max;r=r&&a.getGroupIntervalFactor(q,h,this)||1;p=p*(h-q)/n*r;n=a.getTimeTicks(a.normalizeTimeTickInterval(p,b.units||
-f),Math.min(q,c[0]),Math.max(h,c[c.length-1]),a.options.startOfWeek,c,this.closestPointRange);m=k.groupData.apply(this,[c,m,n,b.approximation]);c=m.groupedXData;r=m.groupedYData;var z=0;if(b.smoothed&&c.length){var t=c.length-1;for(c[t]=Math.min(c[t],h);t--&&0<t;)c[t]+=p/2;c[0]=Math.max(c[0],q)}for(t=1;t<n.length;t++)n.info.segmentStarts&&-1!==n.info.segmentStarts.indexOf(t)||(z=Math.max(n[t]-n[t-1],z));q=n.info;q.gapSize=z;this.closestPointRange=n.info.totalRange;this.groupMap=m.groupMap;if(H(c[0])&&
-c[0]<a.min&&d){if(!H(a.options.min)&&a.min<=a.dataMin||a.min===a.dataMin)a.min=Math.min(c[0],a.min);a.dataMin=c[0]}b.groupAll&&(b=this.cropData(c,r,a.min,a.max,1),c=b.xData,r=b.yData);this.processedXData=c;this.processedYData=r}else this.groupMap=null;this.hasGroupedData=e;this.currentDataGrouping=q;this.preventGraphAnimation=(g&&g.totalRange)!==(q&&q.totalRange)}};k.destroyGroupedData=function(){this.groupedData&&(this.groupedData.forEach(function(a,b){a&&(this.groupedData[b]=a.destroy?a.destroy():
-null)},this),this.groupedData.length=0)};k.generatePoints=function(){z.apply(this);this.destroyGroupedData();this.groupedData=this.hasGroupedData?this.points:null};g(q,"update",function(){if(this.dataGroup)return c.error(24,!1,this.series.chart),!1});g(a,"headerFormatter",function(a){var b=this.chart.time,c=a.labelConfig,d=c.series,f=d.tooltipOptions,e=d.options.dataGrouping,g=f.xDateFormat,k=d.xAxis,l=f[(a.isFooter?"footer":"header")+"Format"];if(k&&"datetime"===k.options.type&&e&&w(c.key)){var h=
-d.currentDataGrouping;e=e.dateTimeLabelFormats||r.dateTimeLabelFormats;if(h)if(f=e[h.unitName],1===h.count)g=f[0];else{g=f[1];var n=f[2]}else!g&&e&&(g=this.getXDateFormat(c,f,k));g=b.dateFormat(g,c.key);n&&(g+=b.dateFormat(n,c.key+h.totalRange-1));d.chart.styledMode&&(l=this.styledModeFormat(l));a.text=m(l,{point:y(c.point,{key:g}),series:d},b);a.preventDefault()}});g(h,"destroy",k.destroyGroupedData);g(h,"afterSetOptions",function(a){a=a.options;var b=this.type,c=this.chart.options.plotOptions,d=
-t[b].dataGrouping,f=this.useCommonDataGrouping&&r;if(n[b]||f)d||(d=p(r,n[b])),a.dataGrouping=p(f,d,c.series&&c.series.dataGrouping,c[b].dataGrouping,this.userOptions.dataGrouping)});g(E,"afterSetScale",function(){this.series.forEach(function(a){a.hasProcessed=!1})});E.prototype.getGroupPixelWidth=function(){var a=this.series,b=a.length,c,d=0,f=!1,e;for(c=b;c--;)(e=a[c].options.dataGrouping)&&(d=Math.max(d,x(e.groupPixelWidth,r.groupPixelWidth)));for(c=b;c--;)(e=a[c].options.dataGrouping)&&a[c].hasProcessed&&
-(b=(a[c].processedXData||a[c].data).length,a[c].groupPixelWidth||b>this.chart.plotSizeX/d||b&&e.forced)&&(f=!0);return f?d:0};E.prototype.setDataGrouping=function(a,b){var c;b=x(b,!0);a||(a={forced:!1,units:null});if(this instanceof E)for(c=this.series.length;c--;)this.series[c].update({dataGrouping:a},!1);else this.chart.options.series.forEach(function(b){b.dataGrouping=a},!1);this.ordinalSlope=null;b&&this.chart.redraw()};c.dataGrouping=e;"";return e});K(D,"parts/OHLCSeries.js",[D["parts/Globals.js"]],
-function(c){var g=c.Point,D=c.seriesType,G=c.seriesTypes;D("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(c){return[c.open,c.high,c.low,c.close]},pointValKey:"close",pointAttrToOptions:{stroke:"color",
-"stroke-width":"lineWidth"},init:function(){G.column.prototype.init.apply(this,arguments);this.options.stacking=!1},pointAttribs:function(c,g){g=G.column.prototype.pointAttribs.call(this,c,g);var w=this.options;delete g.fill;!c.options.color&&w.upColor&&c.open<c.close&&(g.stroke=w.upColor);return g},translate:function(){var c=this,g=c.yAxis,w=!!c.modifyValue,x=["plotOpen","plotHigh","plotLow","plotClose","yBottom"];G.column.prototype.translate.apply(c);c.points.forEach(function(y){[y.open,y.high,
-y.low,y.close,y.low].forEach(function(E,t){null!==E&&(w&&(E=c.modifyValue(E)),y[x[t]]=g.toPixels(E,!0))});y.tooltipPos[1]=y.plotHigh+g.pos-c.chart.plotTop})},drawPoints:function(){var c=this,g=c.chart;c.points.forEach(function(w){var x=w.graphic,y=!x;if(void 0!==w.plotY){x||(w.graphic=x=g.renderer.path().add(c.group));g.styledMode||x.attr(c.pointAttribs(w,w.selected&&"select"));var F=x.strokeWidth()%2/2;var t=Math.round(w.plotX)-F;var m=Math.round(w.shapeArgs.width/2);var p=["M",t,Math.round(w.yBottom),
-"L",t,Math.round(w.plotHigh)];if(null!==w.open){var q=Math.round(w.plotOpen)+F;p.push("M",t,q,"L",t-m,q)}null!==w.close&&(q=Math.round(w.plotClose)+F,p.push("M",t,q,"L",t+m,q));x[y?"attr":"animate"]({d:p}).addClass(w.getClassName(),!0)}})},animate:null},{getClassName:function(){return g.prototype.getClassName.call(this)+(this.open<this.close?" highcharts-point-up":" highcharts-point-down")}});""});K(D,"parts/CandlestickSeries.js",[D["parts/Globals.js"]],function(c){var g=c.defaultPlotOptions,D=c.merge,
-G=c.seriesType,H=c.seriesTypes;G("candlestick","ohlc",D(g.column,{states:{hover:{lineWidth:2}},tooltip:g.ohlc.tooltip,threshold:null,lineColor:"#000000",lineWidth:1,upColor:"#ffffff",stickyTracking:!0}),{pointAttribs:function(c,g){var w=H.column.prototype.pointAttribs.call(this,c,g),y=this.options,F=c.open<c.close,t=y.lineColor||this.color;w["stroke-width"]=y.lineWidth;w.fill=c.options.color||(F?y.upColor||this.color:this.color);w.stroke=c.options.lineColor||(F?y.upLineColor||t:t);g&&(c=y.states[g],
-w.fill=c.color||w.fill,w.stroke=c.lineColor||w.stroke,w["stroke-width"]=c.lineWidth||w["stroke-width"]);return w},drawPoints:function(){var c=this,g=c.chart,x=c.yAxis.reversed;c.points.forEach(function(w){var y=w.graphic,t=!y;if(void 0!==w.plotY){y||(w.graphic=y=g.renderer.path().add(c.group));c.chart.styledMode||y.attr(c.pointAttribs(w,w.selected&&"select")).shadow(c.options.shadow);var m=y.strokeWidth()%2/2;var p=Math.round(w.plotX)-m;var q=w.plotOpen;var h=w.plotClose;var a=Math.min(q,h);q=Math.max(q,
-h);var b=Math.round(w.shapeArgs.width/2);h=x?q!==w.yBottom:Math.round(a)!==Math.round(w.plotHigh);var d=x?Math.round(a)!==Math.round(w.plotHigh):q!==w.yBottom;a=Math.round(a)+m;q=Math.round(q)+m;m=[];m.push("M",p-b,q,"L",p-b,a,"L",p+b,a,"L",p+b,q,"Z","M",p,a,"L",p,h?Math.round(x?w.yBottom:w.plotHigh):a,"M",p,q,"L",p,d?Math.round(x?w.plotHigh:w.yBottom):q);y[t?"attr":"animate"]({d:m}).addClass(w.getClassName(),!0)}})}});""});K(D,"mixins/on-series.js",[D["parts/Globals.js"],D["parts/Utilities.js"]],
-function(c,g){var D=g.defined,G=c.seriesTypes,H=c.stableSort;return{getPlotBox:function(){return c.Series.prototype.getPlotBox.call(this.options.onSeries&&this.chart.get(this.options.onSeries)||this)},translate:function(){G.column.prototype.translate.apply(this);var c=this,g=c.options,x=c.chart,E=c.points,F=E.length-1,t,m=g.onSeries;m=m&&x.get(m);g=g.onKey||"y";var p=m&&m.options.step,q=m&&m.points,h=q&&q.length,a=x.inverted,b=c.xAxis,d=c.yAxis,e=0,k;if(m&&m.visible&&h){e=(m.pointXOffset||0)+(m.barW||
-0)/2;x=m.currentDataGrouping;var C=q[h-1].x+(x?x.totalRange:0);H(E,function(a,b){return a.x-b.x});for(g="plot"+g[0].toUpperCase()+g.substr(1);h--&&E[F];){var z=q[h];x=E[F];x.y=z.y;if(z.x<=x.x&&void 0!==z[g]){if(x.x<=C&&(x.plotY=z[g],z.x<x.x&&!p&&(k=q[h+1])&&void 0!==k[g])){var r=(x.x-z.x)/(k.x-z.x);x.plotY+=r*(k[g]-z[g]);x.y+=r*(k.y-z.y)}F--;h++;if(0>F)break}}}E.forEach(function(g,f){g.plotX+=e;if(void 0===g.plotY||a)0<=g.plotX&&g.plotX<=b.len?a?(g.plotY=b.translate(g.x,0,1,0,1),g.plotX=D(g.y)?d.translate(g.y,
-0,0,0,1):0):g.plotY=(b.opposite?0:c.yAxis.len)+b.offset:g.shapeArgs={};if((t=E[f-1])&&t.plotX===g.plotX){void 0===t.stackIndex&&(t.stackIndex=0);var k=t.stackIndex+1}g.stackIndex=k});this.onSeries=m}}});K(D,"parts/FlagsSeries.js",[D["parts/Globals.js"],D["parts/Utilities.js"],D["mixins/on-series.js"]],function(c,g,D){function G(a){h[a+"pin"]=function(b,c,e,g,m){var d=m&&m.anchorX;m=m&&m.anchorY;"circle"===a&&g>e&&(b-=Math.round((g-e)/2),e=g);var k=h[a](b,c,e,g);d&&m&&(k.push("M","circle"===a?b+e/
-2:k[1]+k[4]/2,c>m?c:c+g,"L",d,m),k=k.concat(h.circle(d-1,m-1,2,2)));return k}}var H=g.defined,y=g.isNumber,w=g.objectEach,x=c.addEvent,E=c.merge;g=c.noop;var F=c.Renderer,t=c.Series,m=c.seriesType,p=c.TrackerMixin,q=c.VMLRenderer,h=c.SVGRenderer.prototype.symbols;m("flags","column",{pointRange:0,allowOverlapX:!1,shape:"flag",stackDistance:12,textAlign:"center",tooltip:{pointFormat:"{point.text}<br/>"},threshold:null,y:-30,fillColor:"#ffffff",lineWidth:1,states:{hover:{lineColor:"#000000",fillColor:"#ccd6eb"}},
-style:{fontSize:"11px",fontWeight:"bold"}},{sorted:!1,noSharedTooltip:!0,allowDG:!1,takeOrdinalPosition:!1,trackerGroups:["markerGroup"],forceCrop:!0,init:t.prototype.init,pointAttribs:function(a,b){var c=this.options,e=a&&a.color||this.color,g=c.lineColor,h=a&&a.lineWidth;a=a&&a.fillColor||c.fillColor;b&&(a=c.states[b].fillColor,g=c.states[b].lineColor,h=c.states[b].lineWidth);return{fill:a||e,stroke:g||e,"stroke-width":h||c.lineWidth||0}},translate:D.translate,getPlotBox:D.getPlotBox,drawPoints:function(){var a=
-this.points,b=this.chart,d=b.renderer,e=b.inverted,g=this.options,h=g.y,m,r=this.yAxis,n={},f=[];for(m=a.length;m--;){var l=a[m];var p=(e?l.plotY:l.plotX)>this.xAxis.len;var q=l.plotX;var t=l.stackIndex;var u=l.options.shape||g.shape;var x=l.plotY;void 0!==x&&(x=l.plotY+h-(void 0!==t&&t*g.stackDistance));l.anchorX=t?void 0:l.plotX;var y=t?void 0:l.plotY;var F="flag"!==u;t=l.graphic;void 0!==x&&0<=q&&!p?(t||(t=l.graphic=d.label("",null,null,u,null,null,g.useHTML),b.styledMode||t.attr(this.pointAttribs(l)).css(E(g.style,
-l.style)),t.attr({align:F?"center":"left",width:g.width,height:g.height,"text-align":g.textAlign}).addClass("highcharts-point").add(this.markerGroup),l.graphic.div&&(l.graphic.div.point=l),b.styledMode||t.shadow(g.shadow),t.isNew=!0),0<q&&(q-=t.strokeWidth()%2),u={y:x,anchorY:y},g.allowOverlapX&&(u.x=q,u.anchorX=l.anchorX),t.attr({text:l.options.title||g.title||"A"})[t.isNew?"attr":"animate"](u),g.allowOverlapX||(n[l.plotX]?n[l.plotX].size=Math.max(n[l.plotX].size,t.width):n[l.plotX]={align:F?.5:
-0,size:t.width,target:q,anchorX:q}),l.tooltipPos=[q,x+r.pos-b.plotTop]):t&&(l.graphic=t.destroy())}g.allowOverlapX||(w(n,function(a){a.plotX=a.anchorX;f.push(a)}),c.distribute(f,e?r.len:this.xAxis.len,100),a.forEach(function(a){var b=a.graphic&&n[a.plotX];b&&(a.graphic[a.graphic.isNew?"attr":"animate"]({x:b.pos+b.align*b.size,anchorX:a.anchorX}),H(b.pos)?a.graphic.isNew=!1:(a.graphic.attr({x:-9999,anchorX:-9999}),a.graphic.isNew=!0))}));g.useHTML&&c.wrap(this.markerGroup,"on",function(a){return c.SVGElement.prototype.on.apply(a.apply(this,
-[].slice.call(arguments,1)),[].slice.call(arguments,1))})},drawTracker:function(){var a=this.points;p.drawTrackerPoint.apply(this);a.forEach(function(b){var c=b.graphic;c&&x(c.element,"mouseover",function(){0<b.stackIndex&&!b.raised&&(b._y=c.y,c.attr({y:b._y-8}),b.raised=!0);a.forEach(function(a){a!==b&&a.raised&&a.graphic&&(a.graphic.attr({y:a._y}),a.raised=!1)})})})},animate:function(a){a?this.setClip():this.animate=null},setClip:function(){t.prototype.setClip.apply(this,arguments);!1!==this.options.clip&&
-this.sharedClipKey&&this.markerGroup.clip(this.chart[this.sharedClipKey])},buildKDTree:g,invertGroups:g},{isValid:function(){return y(this.y)||void 0===this.y}});h.flag=function(a,b,c,e,g){var d=g&&g.anchorX||a;g=g&&g.anchorY||b;return h.circle(d-1,g-1,2,2).concat(["M",d,g,"L",a,b+e,a,b,a+c,b,a+c,b+e,a,b+e,"Z"])};G("circle");G("square");F===q&&["circlepin","flag","squarepin"].forEach(function(a){q.prototype.symbols[a]=h[a]});""});K(D,"parts/RangeSelector.js",[D["parts/Globals.js"],D["parts/Utilities.js"]],
-function(c,g){function D(a){this.init(a)}var G=g.defined,H=g.destroyObjectProperties,y=g.discardElement,w=g.extend,x=g.isNumber,E=g.objectEach,F=g.pick,t=g.pInt,m=g.splat,p=c.addEvent,q=c.Axis;g=c.Chart;var h=c.css,a=c.createElement,b=c.defaultOptions,d=c.fireEvent,e=c.merge;w(b,{rangeSelector:{verticalAlign:"top",buttonTheme:{width:28,height:18,padding:2,zIndex:7},floating:!1,x:0,y:0,height:void 0,inputPosition:{align:"right",x:0,y:0},buttonPosition:{align:"left",x:0,y:0},labelStyle:{color:"#666666"}}});
-b.lang=e(b.lang,{rangeSelectorZoom:"Zoom",rangeSelectorFrom:"From",rangeSelectorTo:"To"});D.prototype={clickButton:function(a,b){var c=this.chart,d=this.buttonOptions[a],e=c.xAxis[0],f=c.scroller&&c.scroller.getUnionExtremes()||e||{},g=f.dataMin,k=f.dataMax,h=e&&Math.round(Math.min(e.max,F(k,e.max))),t=d.type;f=d._range;var u,w=d.dataGrouping;if(null!==g&&null!==k){c.fixedRange=f;w&&(this.forcedDataGrouping=!0,q.prototype.setDataGrouping.call(e||{chart:this.chart},w,!1),this.frozenStates=d.preserveDataGrouping);
-if("month"===t||"year"===t)if(e){t={range:d,max:h,chart:c,dataMin:g,dataMax:k};var C=e.minFromRange.call(t);x(t.newMax)&&(h=t.newMax)}else f=d;else if(f)C=Math.max(h-f,g),h=Math.min(C+f,k);else if("ytd"===t)if(e)void 0===k&&(g=Number.MAX_VALUE,k=Number.MIN_VALUE,c.series.forEach(function(a){a=a.xData;g=Math.min(a[0],g);k=Math.max(a[a.length-1],k)}),b=!1),h=this.getYTDExtremes(k,g,c.time.useUTC),C=u=h.min,h=h.max;else{this.deferredYTDClick=a;return}else"all"===t&&e&&(C=g,h=k);C+=d._offsetMin;h+=d._offsetMax;
-this.setSelected(a);if(e)e.setExtremes(C,h,F(b,1),null,{trigger:"rangeSelectorButton",rangeSelectorButton:d});else{var y=m(c.options.xAxis)[0];var E=y.range;y.range=f;var D=y.min;y.min=u;p(c,"load",function(){y.range=E;y.min=D})}}},setSelected:function(a){this.selected=this.options.selected=a},defaultButtons:[{type:"month",count:1,text:"1m"},{type:"month",count:3,text:"3m"},{type:"month",count:6,text:"6m"},{type:"ytd",text:"YTD"},{type:"year",count:1,text:"1y"},{type:"all",text:"All"}],init:function(a){var b=
-this,c=a.options.rangeSelector,e=c.buttons||[].concat(b.defaultButtons),g=c.selected,f=function(){var a=b.minInput,c=b.maxInput;a&&a.blur&&d(a,"blur");c&&c.blur&&d(c,"blur")};b.chart=a;b.options=c;b.buttons=[];b.buttonOptions=e;this.unMouseDown=p(a.container,"mousedown",f);this.unResize=p(a,"resize",f);e.forEach(b.computeButtonRange);void 0!==g&&e[g]&&this.clickButton(g,!1);p(a,"load",function(){a.xAxis&&a.xAxis[0]&&p(a.xAxis[0],"setExtremes",function(c){this.max-this.min!==a.fixedRange&&"rangeSelectorButton"!==
-c.trigger&&"updatedData"!==c.trigger&&b.forcedDataGrouping&&!b.frozenStates&&this.setDataGrouping(!1,!1)})})},updateButtonStates:function(){var a=this,b=this.chart,c=b.xAxis[0],d=Math.round(c.max-c.min),e=!c.hasVisibleSeries,f=b.scroller&&b.scroller.getUnionExtremes()||c,g=f.dataMin,h=f.dataMax;b=a.getYTDExtremes(h,g,b.time.useUTC);var m=b.min,p=b.max,q=a.selected,t=x(q),w=a.options.allButtonsEnabled,y=a.buttons;a.buttonOptions.forEach(function(b,f){var k=b._range,l=b.type,n=b.count||1,r=y[f],v=0,
-u=b._offsetMax-b._offsetMin;b=f===q;var z=k>h-g,B=k<c.minRange,x=!1,C=!1;k=k===d;("month"===l||"year"===l)&&d+36E5>=864E5*{month:28,year:365}[l]*n-u&&d-36E5<=864E5*{month:31,year:366}[l]*n+u?k=!0:"ytd"===l?(k=p-m+u===d,x=!b):"all"===l&&(k=c.max-c.min>=h-g,C=!b&&t&&k);l=!w&&(z||B||C||e);n=b&&k||k&&!t&&!x||b&&a.frozenStates;l?v=3:n&&(t=!0,v=2);r.state!==v&&(r.setState(v),0===v&&q===f&&a.setSelected(null))})},computeButtonRange:function(a){var b=a.type,c=a.count||1,d={millisecond:1,second:1E3,minute:6E4,
-hour:36E5,day:864E5,week:6048E5};if(d[b])a._range=d[b]*c;else if("month"===b||"year"===b)a._range=864E5*{month:30,year:365}[b]*c;a._offsetMin=F(a.offsetMin,0);a._offsetMax=F(a.offsetMax,0);a._range+=a._offsetMax-a._offsetMin},setInputValue:function(a,b){var c=this.chart.options.rangeSelector,d=this.chart.time,e=this[a+"Input"];G(b)&&(e.previousValue=e.HCTime,e.HCTime=b);e.value=d.dateFormat(c.inputEditDateFormat||"%Y-%m-%d",e.HCTime);this[a+"DateBox"].attr({text:d.dateFormat(c.inputDateFormat||"%b %e, %Y",
-e.HCTime)})},showInput:function(a){var b=this.inputGroup,c=this[a+"DateBox"];h(this[a+"Input"],{left:b.translateX+c.x+"px",top:b.translateY+"px",width:c.width-2+"px",height:c.height-2+"px",border:"2px solid silver"})},hideInput:function(a){h(this[a+"Input"],{border:0,width:"1px",height:"1px"});this.setInputValue(a)},drawInput:function(d){function g(){var a=A.value,b=(l.inputDateParser||Date.parse)(a),c=m.xAxis[0],d=m.scroller&&m.scroller.xAxis?m.scroller.xAxis:c,f=d.dataMin;d=d.dataMax;b!==A.previousValue&&
-(A.previousValue=b,x(b)||(b=a.split("-"),b=Date.UTC(t(b[0]),t(b[1])-1,t(b[2]))),x(b)&&(m.time.useUTC||(b+=6E4*(new Date).getTimezoneOffset()),q?b>k.maxInput.HCTime?b=void 0:b<f&&(b=f):b<k.minInput.HCTime?b=void 0:b>d&&(b=d),void 0!==b&&c.setExtremes(q?b:c.min,q?c.max:b,void 0,void 0,{trigger:"rangeSelectorInput"})))}var k=this,m=k.chart,n=m.renderer.style||{},f=m.renderer,l=m.options.rangeSelector,p=k.div,q="min"===d,A,u,y=this.inputGroup;this[d+"Label"]=u=f.label(b.lang[q?"rangeSelectorFrom":"rangeSelectorTo"],
-this.inputGroup.offset).addClass("highcharts-range-label").attr({padding:2}).add(y);y.offset+=u.width+5;this[d+"DateBox"]=f=f.label("",y.offset).addClass("highcharts-range-input").attr({padding:2,width:l.inputBoxWidth||90,height:l.inputBoxHeight||17,"text-align":"center"}).on("click",function(){k.showInput(d);k[d+"Input"].focus()});m.styledMode||f.attr({stroke:l.inputBoxBorderColor||"#cccccc","stroke-width":1});f.add(y);y.offset+=f.width+(q?10:0);this[d+"Input"]=A=a("input",{name:d,className:"highcharts-range-selector",
-type:"text"},{top:m.plotTop+"px"},p);m.styledMode||(u.css(e(n,l.labelStyle)),f.css(e({color:"#333333"},n,l.inputStyle)),h(A,w({position:"absolute",border:0,width:"1px",height:"1px",padding:0,textAlign:"center",fontSize:n.fontSize,fontFamily:n.fontFamily,top:"-9999em"},l.inputStyle)));A.onfocus=function(){k.showInput(d)};A.onblur=function(){A===c.doc.activeElement&&g();k.hideInput(d);A.blur()};A.onchange=g;A.onkeypress=function(a){13===a.keyCode&&g()}},getPosition:function(){var a=this.chart,b=a.options.rangeSelector;
-a="top"===b.verticalAlign?a.plotTop-a.axisOffset[0]:0;return{buttonTop:a+b.buttonPosition.y,inputTop:a+b.inputPosition.y-10}},getYTDExtremes:function(a,b,c){var d=this.chart.time,e=new d.Date(a),f=d.get("FullYear",e);c=c?d.Date.UTC(f,0,1):+new d.Date(f,0,1);b=Math.max(b||0,c);e=e.getTime();return{max:Math.min(a||e,e),min:b}},render:function(c,d){var e=this,g=e.chart,k=g.renderer,f=g.container,l=g.options,h=l.exporting&&!1!==l.exporting.enabled&&l.navigation&&l.navigation.buttonOptions,m=b.lang,p=
-e.div,q=l.rangeSelector,t=F(l.chart.style&&l.chart.style.zIndex,0)+1;l=q.floating;var w=e.buttons;p=e.inputGroup;var x=q.buttonTheme,y=q.buttonPosition,C=q.inputPosition,E=q.inputEnabled,D=x&&x.states,G=g.plotLeft,H=e.buttonGroup;var I=e.rendered;var K=e.options.verticalAlign,X=g.legend,R=X&&X.options,T=y.y,ba=C.y,Z=I||!1,aa=Z?"animate":"attr",V=0,W=0,Y;if(!1!==q.enabled){I||(e.group=I=k.g("range-selector-group").attr({zIndex:7}).add(),e.buttonGroup=H=k.g("range-selector-buttons").add(I),e.zoomText=
-k.text(m.rangeSelectorZoom,0,15).add(H),g.styledMode||(e.zoomText.css(q.labelStyle),x["stroke-width"]=F(x["stroke-width"],0)),e.buttonOptions.forEach(function(a,b){w[b]=k.button(a.text,0,0,function(c){var d=a.events&&a.events.click,f;d&&(f=d.call(a,c));!1!==f&&e.clickButton(b);e.isActive=!0},x,D&&D.hover,D&&D.select,D&&D.disabled).attr({"text-align":"center"}).add(H)}),!1!==E&&(e.div=p=a("div",null,{position:"relative",height:0,zIndex:t}),f.parentNode.insertBefore(p,f),e.inputGroup=p=k.g("input-group").add(I),
-p.offset=0,e.drawInput("min"),e.drawInput("max")));e.zoomText[aa]({x:F(G+y.x,G)});var ea=F(G+y.x,G)+e.zoomText.getBBox().width+5;e.buttonOptions.forEach(function(a,b){w[b][aa]({x:ea});ea+=w[b].width+F(q.buttonSpacing,5)});G=g.plotLeft-g.spacing[3];e.updateButtonStates();h&&this.titleCollision(g)&&"top"===K&&"right"===y.align&&y.y+H.getBBox().height-12<(h.y||0)+h.height&&(V=-40);"left"===y.align?Y=y.x-g.spacing[3]:"right"===y.align&&(Y=y.x+V-g.spacing[1]);H.align({y:y.y,width:H.getBBox().width,align:y.align,
-x:Y},!0,g.spacingBox);e.group.placed=Z;e.buttonGroup.placed=Z;!1!==E&&(V=h&&this.titleCollision(g)&&"top"===K&&"right"===C.align&&C.y-p.getBBox().height-12<(h.y||0)+h.height+g.spacing[0]?-40:0,"left"===C.align?Y=G:"right"===C.align&&(Y=-Math.max(g.axisOffset[1],-V)),p.align({y:C.y,width:p.getBBox().width,align:C.align,x:C.x+Y-2},!0,g.spacingBox),f=p.alignAttr.translateX+p.alignOptions.x-V+p.getBBox().x+2,h=p.alignOptions.width,m=H.alignAttr.translateX+H.getBBox().x,Y=H.getBBox().width+20,(C.align===
-y.align||m+Y>f&&f+h>m&&T<ba+p.getBBox().height)&&p.attr({translateX:p.alignAttr.translateX+(g.axisOffset[1]>=-V?0:-V),translateY:p.alignAttr.translateY+H.getBBox().height+10}),e.setInputValue("min",c),e.setInputValue("max",d),e.inputGroup.placed=Z);e.group.align({verticalAlign:K},!0,g.spacingBox);c=e.group.getBBox().height+20;d=e.group.alignAttr.translateY;"bottom"===K&&(X=R&&"bottom"===R.verticalAlign&&R.enabled&&!R.floating?X.legendHeight+F(R.margin,10):0,c=c+X-20,W=d-c-(l?0:q.y)-(g.titleOffset?
-g.titleOffset[2]:0)-10);if("top"===K)l&&(W=0),g.titleOffset&&g.titleOffset[0]&&(W=g.titleOffset[0]),W+=g.margin[0]-g.spacing[0]||0;else if("middle"===K)if(ba===T)W=0>ba?d+void 0:d;else if(ba||T)W=0>ba||0>T?W-Math.min(ba,T):d-c+NaN;e.group.translate(q.x,q.y+Math.floor(W));!1!==E&&(e.minInput.style.marginTop=e.group.translateY+"px",e.maxInput.style.marginTop=e.group.translateY+"px");e.rendered=!0}},getHeight:function(){var a=this.options,b=this.group,c=a.y,d=a.buttonPosition.y,e=a.inputPosition.y;if(a.height)return a.height;
-a=b?b.getBBox(!0).height+13+c:0;b=Math.min(e,d);if(0>e&&0>d||0<e&&0<d)a+=Math.abs(b);return a},titleCollision:function(a){return!(a.options.title.text||a.options.subtitle.text)},update:function(a){var b=this.chart;e(!0,b.options.rangeSelector,a);this.destroy();this.init(b);b.rangeSelector.render()},destroy:function(){var a=this,b=a.minInput,c=a.maxInput;a.unMouseDown();a.unResize();H(a.buttons);b&&(b.onfocus=b.onblur=b.onchange=null);c&&(c.onfocus=c.onblur=c.onchange=null);E(a,function(b,c){b&&"chart"!==
-c&&(b.destroy?b.destroy():b.nodeType&&y(this[c]));b!==D.prototype[c]&&(a[c]=null)},this)}};q.prototype.minFromRange=function(){var a=this.range,b={month:"Month",year:"FullYear"}[a.type],c=this.max,d=this.chart.time,e=function(a,c){var f=new d.Date(a),e=d.get(b,f);d.set(b,f,e+c);e===d.get(b,f)&&d.set("Date",f,0);return f.getTime()-a};if(x(a)){var f=c-a;var g=a}else f=c+e(c,-a.count),this.chart&&(this.chart.fixedRange=c-f);var h=F(this.dataMin,Number.MIN_VALUE);x(f)||(f=h);f<=h&&(f=h,void 0===g&&(g=
-e(f,a.count)),this.newMax=Math.min(f+g,this.dataMax));x(c)||(f=void 0);return f};c.RangeSelector||(p(g,"afterGetContainer",function(){this.options.rangeSelector.enabled&&(this.rangeSelector=new D(this))}),p(g,"beforeRender",function(){var a=this.axes,b=this.rangeSelector;b&&(x(b.deferredYTDClick)&&(b.clickButton(b.deferredYTDClick),delete b.deferredYTDClick),a.forEach(function(a){a.updateNames();a.setScale()}),this.getAxisMargins(),b.render(),a=b.options.verticalAlign,b.options.floating||("bottom"===
-a?this.extraBottomMargin=!0:"middle"!==a&&(this.extraTopMargin=!0)))}),p(g,"update",function(a){var b=a.options.rangeSelector;a=this.rangeSelector;var c=this.extraBottomMargin,d=this.extraTopMargin;b&&b.enabled&&!G(a)&&(this.options.rangeSelector.enabled=!0,this.rangeSelector=new D(this));this.extraTopMargin=this.extraBottomMargin=!1;a&&(a.render(),b=b&&b.verticalAlign||a.options&&a.options.verticalAlign,a.options.floating||("bottom"===b?this.extraBottomMargin=!0:"middle"!==b&&(this.extraTopMargin=
-!0)),this.extraBottomMargin!==c||this.extraTopMargin!==d)&&(this.isDirtyBox=!0)}),p(g,"render",function(){var a=this.rangeSelector;a&&!a.options.floating&&(a.render(),a=a.options.verticalAlign,"bottom"===a?this.extraBottomMargin=!0:"middle"!==a&&(this.extraTopMargin=!0))}),p(g,"getMargins",function(){var a=this.rangeSelector;a&&(a=a.getHeight(),this.extraTopMargin&&(this.plotTop+=a),this.extraBottomMargin&&(this.marginBottom+=a))}),g.prototype.callbacks.push(function(a){function b(){c=a.xAxis[0].getExtremes();
-x(c.min)&&d.render(c.min,c.max)}var c,d=a.rangeSelector;if(d){var e=p(a.xAxis[0],"afterSetExtremes",function(a){d.render(a.min,a.max)});var f=p(a,"redraw",b);b()}p(a,"destroy",function(){d&&(f(),e())})}),c.RangeSelector=D)});K(D,"parts/StockChart.js",[D["parts/Globals.js"],D["parts/Utilities.js"]],function(c,g){var D=g.arrayMax,G=g.arrayMin,H=g.defined,y=g.extend,w=g.isNumber,x=g.isString,E=g.pick,F=g.splat;g=c.addEvent;var t=c.Axis,m=c.Chart,p=c.format,q=c.merge,h=c.Point,a=c.Renderer,b=c.Series,
-d=c.SVGRenderer,e=c.VMLRenderer,k=b.prototype,C=k.init,z=k.processData,r=h.prototype.tooltipFormatter;c.StockChart=c.stockChart=function(a,b,d){var f=x(a)||a.nodeName,e=arguments[f?1:0],g=e,l=e.series,h=c.getOptions(),k,n=E(e.navigator&&e.navigator.enabled,h.navigator.enabled,!0),p=n?{startOnTick:!1,endOnTick:!1}:null;e.xAxis=F(e.xAxis||{}).map(function(a,b){return q({minPadding:0,maxPadding:0,overscroll:0,ordinal:!0,title:{text:null},labels:{overflow:"justify"},showLastLabel:!0},h.xAxis,h.xAxis&&
-h.xAxis[b],a,{type:"datetime",categories:null},p)});e.yAxis=F(e.yAxis||{}).map(function(a,b){k=E(a.opposite,!0);return q({labels:{y:-2},opposite:k,showLastLabel:!(!a.categories&&"category"!==a.type),title:{text:null}},h.yAxis,h.yAxis&&h.yAxis[b],a)});e.series=null;e=q({chart:{panning:!0,pinchType:"x"},navigator:{enabled:n},scrollbar:{enabled:E(h.scrollbar.enabled,!0)},rangeSelector:{enabled:E(h.rangeSelector.enabled,!0)},title:{text:null},tooltip:{split:E(h.tooltip.split,!0),crosshairs:!0},legend:{enabled:!1}},
-e,{isStock:!0});e.series=g.series=l;return f?new m(a,e,d):new m(e,b)};g(b,"setOptions",function(a){function b(a){return c.seriesTypes[a]&&d instanceof c.seriesTypes[a]}var d=this,e;this.chart.options.isStock&&(b("column")||b("columnrange")?e={borderWidth:0,shadow:!1}:!b("line")||b("scatter")||b("sma")||(e={marker:{enabled:!1,radius:2}}),e&&(a.plotOptions[this.type]=q(a.plotOptions[this.type],e)))});g(t,"autoLabelAlign",function(a){var b=this.chart,c=this.options;b=b._labelPanes=b._labelPanes||{};
-var d=this.options.labels;this.chart.options.isStock&&"yAxis"===this.coll&&(c=c.top+","+c.height,!b[c]&&d.enabled&&(15===d.x&&(d.x=0),void 0===d.align&&(d.align="right"),b[c]=this,a.align="right",a.preventDefault()))});g(t,"destroy",function(){var a=this.chart,b=this.options&&this.options.top+","+this.options.height;b&&a._labelPanes&&a._labelPanes[b]===this&&delete a._labelPanes[b]});g(t,"getPlotLinePath",function(a){function b(a){var b="xAxis"===a?"yAxis":"xAxis";a=d.options[b];return w(a)?[g[b][a]]:
-x(a)?[g.get(a)]:e.map(function(a){return a[b]})}var d=this,e=this.isLinked&&!this.series?this.linkedParent.series:this.series,g=d.chart,h=g.renderer,k=d.left,m=d.top,n,p,q,r,t=[],y=[],z=a.translatedValue,C=a.value,D=a.force;if(g.options.isStock&&!1!==a.acrossPanes&&"xAxis"===d.coll||"yAxis"===d.coll){a.preventDefault();y=b(d.coll);var F=d.isXAxis?g.yAxis:g.xAxis;F.forEach(function(a){if(H(a.options.id)?-1===a.options.id.indexOf("navigator"):1){var b=a.isXAxis?"yAxis":"xAxis";b=H(a.options[b])?g[b][a.options[b]]:
-g[b][0];d===b&&y.push(a)}});var G=y.length?[]:[d.isXAxis?g.yAxis[0]:g.xAxis[0]];y.forEach(function(a){-1!==G.indexOf(a)||c.find(G,function(b){return b.pos===a.pos&&b.len===a.len})||G.push(a)});var I=E(z,d.translate(C,null,null,a.old));w(I)&&(d.horiz?G.forEach(function(a){var b;p=a.pos;r=p+a.len;n=q=Math.round(I+d.transB);"pass"!==D&&(n<k||n>k+d.width)&&(D?n=q=Math.min(Math.max(k,n),k+d.width):b=!0);b||t.push("M",n,p,"L",q,r)}):G.forEach(function(a){var b;n=a.pos;q=n+a.len;p=r=Math.round(m+d.height-
-I);"pass"!==D&&(p<m||p>m+d.height)&&(D?p=r=Math.min(Math.max(m,p),d.top+d.height):b=!0);b||t.push("M",n,p,"L",q,r)}));a.path=0<t.length?h.crispPolyLine(t,a.lineWidth||1):null}});d.prototype.crispPolyLine=function(a,b){var c;for(c=0;c<a.length;c+=6)a[c+1]===a[c+4]&&(a[c+1]=a[c+4]=Math.round(a[c+1])-b%2/2),a[c+2]===a[c+5]&&(a[c+2]=a[c+5]=Math.round(a[c+2])+b%2/2);return a};a===e&&(e.prototype.crispPolyLine=d.prototype.crispPolyLine);g(t,"afterHideCrosshair",function(){this.crossLabel&&(this.crossLabel=
-this.crossLabel.hide())});g(t,"afterDrawCrosshair",function(a){var b,c;if(H(this.crosshair.label)&&this.crosshair.label.enabled&&this.cross){var d=this.chart,e=this.options.crosshair.label,g=this.horiz,h=this.opposite,k=this.left,m=this.top,n=this.crossLabel,q=e.format,r="",t="inside"===this.options.tickPosition,w=!1!==this.crosshair.snap,x=0,z=a.e||this.cross&&this.cross.e,C=a.point;var D=this.lin2log;if(this.isLog){a=D(this.min);var F=D(this.max)}else a=this.min,F=this.max;D=g?"center":h?"right"===
-this.labelAlign?"right":"left":"left"===this.labelAlign?"left":"center";n||(n=this.crossLabel=d.renderer.label(null,null,null,e.shape||"callout").addClass("highcharts-crosshair-label"+(this.series[0]&&" highcharts-color-"+this.series[0].colorIndex)).attr({align:e.align||D,padding:E(e.padding,8),r:E(e.borderRadius,3),zIndex:2}).add(this.labelGroup),d.styledMode||n.attr({fill:e.backgroundColor||this.series[0]&&this.series[0].color||"#666666",stroke:e.borderColor||"","stroke-width":e.borderWidth||0}).css(y({color:"#ffffff",
-fontWeight:"normal",fontSize:"11px",textAlign:"center"},e.style)));g?(D=w?C.plotX+k:z.chartX,m+=h?0:this.height):(D=h?this.width+k:0,m=w?C.plotY+m:z.chartY);q||e.formatter||(this.isDatetimeAxis&&(r="%b %d, %Y"),q="{value"+(r?":"+r:"")+"}");r=w?C[this.isXAxis?"x":"y"]:this.toValue(g?z.chartX:z.chartY);n.attr({text:q?p(q,{value:r},d.time):e.formatter.call(this,r),x:D,y:m,visibility:r<a||r>F?"hidden":"visible"});e=n.getBBox();if(g){if(t&&!h||!t&&h)m=n.y-e.height}else m=n.y-e.height/2;g?(b=k-e.x,c=k+
-this.width-e.x):(b="left"===this.labelAlign?k:0,c="right"===this.labelAlign?k+this.width:d.chartWidth);n.translateX<b&&(x=b-n.translateX);n.translateX+e.width>=c&&(x=-(n.translateX+e.width-c));n.attr({x:D+x,y:m,anchorX:g?D:this.opposite?0:d.chartWidth,anchorY:g?this.opposite?d.chartHeight:0:m+e.height/2})}});k.init=function(){C.apply(this,arguments);this.setCompare(this.options.compare)};k.setCompare=function(a){this.modifyValue="value"===a||"percent"===a?function(b,c){var d=this.compareValue;return void 0!==
-b&&void 0!==d?(b="value"===a?b-d:b/d*100-(100===this.options.compareBase?0:100),c&&(c.change=b),b):0}:null;this.userOptions.compare=a;this.chart.hasRendered&&(this.isDirty=!0)};k.processData=function(a){var b,c=-1,d=!0===this.options.compareStart?0:1;z.apply(this,arguments);if(this.xAxis&&this.processedYData){var e=this.processedXData;var g=this.processedYData;var h=g.length;this.pointArrayMap&&(c=this.pointArrayMap.indexOf(this.options.pointValKey||this.pointValKey||"y"));for(b=0;b<h-d;b++){var k=
-g[b]&&-1<c?g[b][c]:g[b];if(w(k)&&e[b+d]>=this.xAxis.min&&0!==k){this.compareValue=k;break}}}};g(b,"afterGetExtremes",function(){if(this.modifyValue){var a=[this.modifyValue(this.dataMin),this.modifyValue(this.dataMax)];this.dataMin=G(a);this.dataMax=D(a)}});t.prototype.setCompare=function(a,b){this.isXAxis||(this.series.forEach(function(b){b.setCompare(a)}),E(b,!0)&&this.chart.redraw())};h.prototype.tooltipFormatter=function(a){a=a.replace("{point.change}",(0<this.change?"+":"")+c.numberFormat(this.change,
-E(this.series.tooltipOptions.changeDecimals,2)));return r.apply(this,[a])};g(b,"render",function(){var a=this.chart;if(!(a.is3d&&a.is3d()||a.polar)&&this.xAxis&&!this.xAxis.isRadial){var b=this.yAxis.len;if(this.xAxis.axisLine){var c=a.plotTop+a.plotHeight-this.yAxis.pos-this.yAxis.len,d=Math.floor(this.xAxis.axisLine.strokeWidth()/2);0<=c&&(b-=Math.max(d-c,0))}!this.clipBox&&this.animate?(this.clipBox=q(a.clipBox),this.clipBox.width=this.xAxis.len,this.clipBox.height=b):a[this.sharedClipKey]&&(a[this.sharedClipKey].animate({width:this.xAxis.len,
-height:b}),a[this.sharedClipKey+"m"]&&a[this.sharedClipKey+"m"].animate({width:this.xAxis.len}))}});g(m,"update",function(a){a=a.options;"scrollbar"in a&&this.navigator&&(q(!0,this.options.scrollbar,a.scrollbar),this.navigator.update({},!1),delete a.scrollbar)})});K(D,"masters/modules/stock.src.js",[],function(){});K(D,"masters/highstock.src.js",[D["masters/highcharts.src.js"]],function(c){c.product="Highstock";return c});D["masters/highstock.src.js"]._modules=D;return D["masters/highstock.src.js"]});
-//# sourceMappingURL=highstock.js.map

Fișier diff suprimat deoarece este prea mare
+ 0 - 0
static/js/index.js


+ 0 - 181
static/js/jquery.dataTables.js

@@ -1,181 +0,0 @@
-/*!
-   Copyright 2008-2020 SpryMedia Ltd.
-
- This source file is free software, available under the following license:
-   MIT license - http://datatables.net/license
-
- This source file is distributed in the hope that it will be useful, but
- WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
- or FITNESS FOR A PARTICULAR PURPOSE. See the license files for details.
-
- For details please refer to: http://www.datatables.net
- DataTables 1.10.21
- ©2008-2020 SpryMedia Ltd - datatables.net/license
-*/
-var $jscomp=$jscomp||{};$jscomp.scope={};$jscomp.findInternal=function(f,y,w){f instanceof String&&(f=String(f));for(var n=f.length,H=0;H<n;H++){var L=f[H];if(y.call(w,L,H,f))return{i:H,v:L}}return{i:-1,v:void 0}};$jscomp.ASSUME_ES5=!1;$jscomp.ASSUME_NO_NATIVE_MAP=!1;$jscomp.ASSUME_NO_NATIVE_SET=!1;$jscomp.SIMPLE_FROUND_POLYFILL=!1;
-$jscomp.defineProperty=$jscomp.ASSUME_ES5||"function"==typeof Object.defineProperties?Object.defineProperty:function(f,y,w){f!=Array.prototype&&f!=Object.prototype&&(f[y]=w.value)};$jscomp.getGlobal=function(f){f=["object"==typeof window&&window,"object"==typeof self&&self,"object"==typeof global&&global,f];for(var y=0;y<f.length;++y){var w=f[y];if(w&&w.Math==Math)return w}throw Error("Cannot find global object");};$jscomp.global=$jscomp.getGlobal(this);
-$jscomp.polyfill=function(f,y,w,n){if(y){w=$jscomp.global;f=f.split(".");for(n=0;n<f.length-1;n++){var H=f[n];H in w||(w[H]={});w=w[H]}f=f[f.length-1];n=w[f];y=y(n);y!=n&&null!=y&&$jscomp.defineProperty(w,f,{configurable:!0,writable:!0,value:y})}};$jscomp.polyfill("Array.prototype.find",function(f){return f?f:function(f,w){return $jscomp.findInternal(this,f,w).v}},"es6","es3");
-(function(f){"function"===typeof define&&define.amd?define(["jquery"],function(y){return f(y,window,document)}):"object"===typeof exports?module.exports=function(y,w){y||(y=window);w||(w="undefined"!==typeof window?require("jquery"):require("jquery")(y));return f(w,y,y.document)}:f(jQuery,window,document)})(function(f,y,w,n){function H(a){var b,c,d={};f.each(a,function(e,h){(b=e.match(/^([^A-Z]+?)([A-Z])/))&&-1!=="a aa ai ao as b fn i m o s ".indexOf(b[1]+" ")&&(c=e.replace(b[0],b[2].toLowerCase()),
-d[c]=e,"o"===b[1]&&H(a[e]))});a._hungarianMap=d}function L(a,b,c){a._hungarianMap||H(a);var d;f.each(b,function(e,h){d=a._hungarianMap[e];d===n||!c&&b[d]!==n||("o"===d.charAt(0)?(b[d]||(b[d]={}),f.extend(!0,b[d],b[e]),L(a[d],b[d],c)):b[d]=b[e])})}function Fa(a){var b=q.defaults.oLanguage,c=b.sDecimal;c&&Ga(c);if(a){var d=a.sZeroRecords;!a.sEmptyTable&&d&&"No data available in table"===b.sEmptyTable&&M(a,a,"sZeroRecords","sEmptyTable");!a.sLoadingRecords&&d&&"Loading..."===b.sLoadingRecords&&M(a,a,
-"sZeroRecords","sLoadingRecords");a.sInfoThousands&&(a.sThousands=a.sInfoThousands);(a=a.sDecimal)&&c!==a&&Ga(a)}}function ib(a){E(a,"ordering","bSort");E(a,"orderMulti","bSortMulti");E(a,"orderClasses","bSortClasses");E(a,"orderCellsTop","bSortCellsTop");E(a,"order","aaSorting");E(a,"orderFixed","aaSortingFixed");E(a,"paging","bPaginate");E(a,"pagingType","sPaginationType");E(a,"pageLength","iDisplayLength");E(a,"searching","bFilter");"boolean"===typeof a.sScrollX&&(a.sScrollX=a.sScrollX?"100%":
-"");"boolean"===typeof a.scrollX&&(a.scrollX=a.scrollX?"100%":"");if(a=a.aoSearchCols)for(var b=0,c=a.length;b<c;b++)a[b]&&L(q.models.oSearch,a[b])}function jb(a){E(a,"orderable","bSortable");E(a,"orderData","aDataSort");E(a,"orderSequence","asSorting");E(a,"orderDataType","sortDataType");var b=a.aDataSort;"number"!==typeof b||f.isArray(b)||(a.aDataSort=[b])}function kb(a){if(!q.__browser){var b={};q.__browser=b;var c=f("<div/>").css({position:"fixed",top:0,left:-1*f(y).scrollLeft(),height:1,width:1,
-overflow:"hidden"}).append(f("<div/>").css({position:"absolute",top:1,left:1,width:100,overflow:"scroll"}).append(f("<div/>").css({width:"100%",height:10}))).appendTo("body"),d=c.children(),e=d.children();b.barWidth=d[0].offsetWidth-d[0].clientWidth;b.bScrollOversize=100===e[0].offsetWidth&&100!==d[0].clientWidth;b.bScrollbarLeft=1!==Math.round(e.offset().left);b.bBounding=c[0].getBoundingClientRect().width?!0:!1;c.remove()}f.extend(a.oBrowser,q.__browser);a.oScroll.iBarWidth=q.__browser.barWidth}
-function lb(a,b,c,d,e,h){var g=!1;if(c!==n){var k=c;g=!0}for(;d!==e;)a.hasOwnProperty(d)&&(k=g?b(k,a[d],d,a):a[d],g=!0,d+=h);return k}function Ha(a,b){var c=q.defaults.column,d=a.aoColumns.length;c=f.extend({},q.models.oColumn,c,{nTh:b?b:w.createElement("th"),sTitle:c.sTitle?c.sTitle:b?b.innerHTML:"",aDataSort:c.aDataSort?c.aDataSort:[d],mData:c.mData?c.mData:d,idx:d});a.aoColumns.push(c);c=a.aoPreSearchCols;c[d]=f.extend({},q.models.oSearch,c[d]);la(a,d,f(b).data())}function la(a,b,c){b=a.aoColumns[b];
-var d=a.oClasses,e=f(b.nTh);if(!b.sWidthOrig){b.sWidthOrig=e.attr("width")||null;var h=(e.attr("style")||"").match(/width:\s*(\d+[pxem%]+)/);h&&(b.sWidthOrig=h[1])}c!==n&&null!==c&&(jb(c),L(q.defaults.column,c,!0),c.mDataProp===n||c.mData||(c.mData=c.mDataProp),c.sType&&(b._sManualType=c.sType),c.className&&!c.sClass&&(c.sClass=c.className),c.sClass&&e.addClass(c.sClass),f.extend(b,c),M(b,c,"sWidth","sWidthOrig"),c.iDataSort!==n&&(b.aDataSort=[c.iDataSort]),M(b,c,"aDataSort"));var g=b.mData,k=T(g),
-l=b.mRender?T(b.mRender):null;c=function(a){return"string"===typeof a&&-1!==a.indexOf("@")};b._bAttrSrc=f.isPlainObject(g)&&(c(g.sort)||c(g.type)||c(g.filter));b._setter=null;b.fnGetData=function(a,b,c){var d=k(a,b,n,c);return l&&b?l(d,b,a,c):d};b.fnSetData=function(a,b,c){return Q(g)(a,b,c)};"number"!==typeof g&&(a._rowReadObject=!0);a.oFeatures.bSort||(b.bSortable=!1,e.addClass(d.sSortableNone));a=-1!==f.inArray("asc",b.asSorting);c=-1!==f.inArray("desc",b.asSorting);b.bSortable&&(a||c)?a&&!c?(b.sSortingClass=
-d.sSortableAsc,b.sSortingClassJUI=d.sSortJUIAscAllowed):!a&&c?(b.sSortingClass=d.sSortableDesc,b.sSortingClassJUI=d.sSortJUIDescAllowed):(b.sSortingClass=d.sSortable,b.sSortingClassJUI=d.sSortJUI):(b.sSortingClass=d.sSortableNone,b.sSortingClassJUI="")}function Z(a){if(!1!==a.oFeatures.bAutoWidth){var b=a.aoColumns;Ia(a);for(var c=0,d=b.length;c<d;c++)b[c].nTh.style.width=b[c].sWidth}b=a.oScroll;""===b.sY&&""===b.sX||ma(a);A(a,null,"column-sizing",[a])}function aa(a,b){a=na(a,"bVisible");return"number"===
-typeof a[b]?a[b]:null}function ba(a,b){a=na(a,"bVisible");b=f.inArray(b,a);return-1!==b?b:null}function V(a){var b=0;f.each(a.aoColumns,function(a,d){d.bVisible&&"none"!==f(d.nTh).css("display")&&b++});return b}function na(a,b){var c=[];f.map(a.aoColumns,function(a,e){a[b]&&c.push(e)});return c}function Ja(a){var b=a.aoColumns,c=a.aoData,d=q.ext.type.detect,e,h,g;var k=0;for(e=b.length;k<e;k++){var f=b[k];var m=[];if(!f.sType&&f._sManualType)f.sType=f._sManualType;else if(!f.sType){var p=0;for(h=
-d.length;p<h;p++){var v=0;for(g=c.length;v<g;v++){m[v]===n&&(m[v]=F(a,v,k,"type"));var u=d[p](m[v],a);if(!u&&p!==d.length-1)break;if("html"===u)break}if(u){f.sType=u;break}}f.sType||(f.sType="string")}}}function mb(a,b,c,d){var e,h,g,k=a.aoColumns;if(b)for(e=b.length-1;0<=e;e--){var l=b[e];var m=l.targets!==n?l.targets:l.aTargets;f.isArray(m)||(m=[m]);var p=0;for(h=m.length;p<h;p++)if("number"===typeof m[p]&&0<=m[p]){for(;k.length<=m[p];)Ha(a);d(m[p],l)}else if("number"===typeof m[p]&&0>m[p])d(k.length+
-m[p],l);else if("string"===typeof m[p]){var v=0;for(g=k.length;v<g;v++)("_all"==m[p]||f(k[v].nTh).hasClass(m[p]))&&d(v,l)}}if(c)for(e=0,a=c.length;e<a;e++)d(e,c[e])}function R(a,b,c,d){var e=a.aoData.length,h=f.extend(!0,{},q.models.oRow,{src:c?"dom":"data",idx:e});h._aData=b;a.aoData.push(h);for(var g=a.aoColumns,k=0,l=g.length;k<l;k++)g[k].sType=null;a.aiDisplayMaster.push(e);b=a.rowIdFn(b);b!==n&&(a.aIds[b]=h);!c&&a.oFeatures.bDeferRender||Ka(a,e,c,d);return e}function oa(a,b){var c;b instanceof
-f||(b=f(b));return b.map(function(b,e){c=La(a,e);return R(a,c.data,e,c.cells)})}function F(a,b,c,d){var e=a.iDraw,h=a.aoColumns[c],g=a.aoData[b]._aData,k=h.sDefaultContent,f=h.fnGetData(g,d,{settings:a,row:b,col:c});if(f===n)return a.iDrawError!=e&&null===k&&(O(a,0,"Requested unknown parameter "+("function"==typeof h.mData?"{function}":"'"+h.mData+"'")+" for row "+b+", column "+c,4),a.iDrawError=e),k;if((f===g||null===f)&&null!==k&&d!==n)f=k;else if("function"===typeof f)return f.call(g);return null===
-f&&"display"==d?"":f}function nb(a,b,c,d){a.aoColumns[c].fnSetData(a.aoData[b]._aData,d,{settings:a,row:b,col:c})}function Ma(a){return f.map(a.match(/(\\.|[^\.])+/g)||[""],function(a){return a.replace(/\\\./g,".")})}function T(a){if(f.isPlainObject(a)){var b={};f.each(a,function(a,c){c&&(b[a]=T(c))});return function(a,c,h,g){var d=b[c]||b._;return d!==n?d(a,c,h,g):a}}if(null===a)return function(a){return a};if("function"===typeof a)return function(b,c,h,g){return a(b,c,h,g)};if("string"!==typeof a||
--1===a.indexOf(".")&&-1===a.indexOf("[")&&-1===a.indexOf("("))return function(b,c){return b[a]};var c=function(a,b,h){if(""!==h){var d=Ma(h);for(var e=0,l=d.length;e<l;e++){h=d[e].match(ca);var m=d[e].match(W);if(h){d[e]=d[e].replace(ca,"");""!==d[e]&&(a=a[d[e]]);m=[];d.splice(0,e+1);d=d.join(".");if(f.isArray(a))for(e=0,l=a.length;e<l;e++)m.push(c(a[e],b,d));a=h[0].substring(1,h[0].length-1);a=""===a?m:m.join(a);break}else if(m){d[e]=d[e].replace(W,"");a=a[d[e]]();continue}if(null===a||a[d[e]]===
-n)return n;a=a[d[e]]}}return a};return function(b,e){return c(b,e,a)}}function Q(a){if(f.isPlainObject(a))return Q(a._);if(null===a)return function(){};if("function"===typeof a)return function(b,d,e){a(b,"set",d,e)};if("string"!==typeof a||-1===a.indexOf(".")&&-1===a.indexOf("[")&&-1===a.indexOf("("))return function(b,d){b[a]=d};var b=function(a,d,e){e=Ma(e);var c=e[e.length-1];for(var g,k,l=0,m=e.length-1;l<m;l++){g=e[l].match(ca);k=e[l].match(W);if(g){e[l]=e[l].replace(ca,"");a[e[l]]=[];c=e.slice();
-c.splice(0,l+1);g=c.join(".");if(f.isArray(d))for(k=0,m=d.length;k<m;k++)c={},b(c,d[k],g),a[e[l]].push(c);else a[e[l]]=d;return}k&&(e[l]=e[l].replace(W,""),a=a[e[l]](d));if(null===a[e[l]]||a[e[l]]===n)a[e[l]]={};a=a[e[l]]}if(c.match(W))a[c.replace(W,"")](d);else a[c.replace(ca,"")]=d};return function(c,d){return b(c,d,a)}}function Na(a){return K(a.aoData,"_aData")}function pa(a){a.aoData.length=0;a.aiDisplayMaster.length=0;a.aiDisplay.length=0;a.aIds={}}function qa(a,b,c){for(var d=-1,e=0,h=a.length;e<
-h;e++)a[e]==b?d=e:a[e]>b&&a[e]--; -1!=d&&c===n&&a.splice(d,1)}function da(a,b,c,d){var e=a.aoData[b],h,g=function(c,d){for(;c.childNodes.length;)c.removeChild(c.firstChild);c.innerHTML=F(a,b,d,"display")};if("dom"!==c&&(c&&"auto"!==c||"dom"!==e.src)){var k=e.anCells;if(k)if(d!==n)g(k[d],d);else for(c=0,h=k.length;c<h;c++)g(k[c],c)}else e._aData=La(a,e,d,d===n?n:e._aData).data;e._aSortData=null;e._aFilterData=null;g=a.aoColumns;if(d!==n)g[d].sType=null;else{c=0;for(h=g.length;c<h;c++)g[c].sType=null;
-Oa(a,e)}}function La(a,b,c,d){var e=[],h=b.firstChild,g,k=0,l,m=a.aoColumns,p=a._rowReadObject;d=d!==n?d:p?{}:[];var v=function(a,b){if("string"===typeof a){var c=a.indexOf("@");-1!==c&&(c=a.substring(c+1),Q(a)(d,b.getAttribute(c)))}},u=function(a){if(c===n||c===k)g=m[k],l=f.trim(a.innerHTML),g&&g._bAttrSrc?(Q(g.mData._)(d,l),v(g.mData.sort,a),v(g.mData.type,a),v(g.mData.filter,a)):p?(g._setter||(g._setter=Q(g.mData)),g._setter(d,l)):d[k]=l;k++};if(h)for(;h;){var q=h.nodeName.toUpperCase();if("TD"==
-q||"TH"==q)u(h),e.push(h);h=h.nextSibling}else for(e=b.anCells,h=0,q=e.length;h<q;h++)u(e[h]);(b=b.firstChild?b:b.nTr)&&(b=b.getAttribute("id"))&&Q(a.rowId)(d,b);return{data:d,cells:e}}function Ka(a,b,c,d){var e=a.aoData[b],h=e._aData,g=[],k,l;if(null===e.nTr){var m=c||w.createElement("tr");e.nTr=m;e.anCells=g;m._DT_RowIndex=b;Oa(a,e);var p=0;for(k=a.aoColumns.length;p<k;p++){var v=a.aoColumns[p];var n=(l=c?!1:!0)?w.createElement(v.sCellType):d[p];n._DT_CellIndex={row:b,column:p};g.push(n);if(l||
-!(c&&!v.mRender&&v.mData===p||f.isPlainObject(v.mData)&&v.mData._===p+".display"))n.innerHTML=F(a,b,p,"display");v.sClass&&(n.className+=" "+v.sClass);v.bVisible&&!c?m.appendChild(n):!v.bVisible&&c&&n.parentNode.removeChild(n);v.fnCreatedCell&&v.fnCreatedCell.call(a.oInstance,n,F(a,b,p),h,b,p)}A(a,"aoRowCreatedCallback",null,[m,h,b,g])}e.nTr.setAttribute("role","row")}function Oa(a,b){var c=b.nTr,d=b._aData;if(c){if(a=a.rowIdFn(d))c.id=a;d.DT_RowClass&&(a=d.DT_RowClass.split(" "),b.__rowc=b.__rowc?
-sa(b.__rowc.concat(a)):a,f(c).removeClass(b.__rowc.join(" ")).addClass(d.DT_RowClass));d.DT_RowAttr&&f(c).attr(d.DT_RowAttr);d.DT_RowData&&f(c).data(d.DT_RowData)}}function ob(a){var b,c,d=a.nTHead,e=a.nTFoot,h=0===f("th, td",d).length,g=a.oClasses,k=a.aoColumns;h&&(c=f("<tr/>").appendTo(d));var l=0;for(b=k.length;l<b;l++){var m=k[l];var p=f(m.nTh).addClass(m.sClass);h&&p.appendTo(c);a.oFeatures.bSort&&(p.addClass(m.sSortingClass),!1!==m.bSortable&&(p.attr("tabindex",a.iTabIndex).attr("aria-controls",
-a.sTableId),Pa(a,m.nTh,l)));m.sTitle!=p[0].innerHTML&&p.html(m.sTitle);Qa(a,"header")(a,p,m,g)}h&&ea(a.aoHeader,d);f(d).find(">tr").attr("role","row");f(d).find(">tr>th, >tr>td").addClass(g.sHeaderTH);f(e).find(">tr>th, >tr>td").addClass(g.sFooterTH);if(null!==e)for(a=a.aoFooter[0],l=0,b=a.length;l<b;l++)m=k[l],m.nTf=a[l].cell,m.sClass&&f(m.nTf).addClass(m.sClass)}function fa(a,b,c){var d,e,h=[],g=[],k=a.aoColumns.length;if(b){c===n&&(c=!1);var l=0;for(d=b.length;l<d;l++){h[l]=b[l].slice();h[l].nTr=
-b[l].nTr;for(e=k-1;0<=e;e--)a.aoColumns[e].bVisible||c||h[l].splice(e,1);g.push([])}l=0;for(d=h.length;l<d;l++){if(a=h[l].nTr)for(;e=a.firstChild;)a.removeChild(e);e=0;for(b=h[l].length;e<b;e++){var m=k=1;if(g[l][e]===n){a.appendChild(h[l][e].cell);for(g[l][e]=1;h[l+k]!==n&&h[l][e].cell==h[l+k][e].cell;)g[l+k][e]=1,k++;for(;h[l][e+m]!==n&&h[l][e].cell==h[l][e+m].cell;){for(c=0;c<k;c++)g[l+c][e+m]=1;m++}f(h[l][e].cell).attr("rowspan",k).attr("colspan",m)}}}}}function S(a){var b=A(a,"aoPreDrawCallback",
-"preDraw",[a]);if(-1!==f.inArray(!1,b))J(a,!1);else{b=[];var c=0,d=a.asStripeClasses,e=d.length,h=a.oLanguage,g=a.iInitDisplayStart,k="ssp"==I(a),l=a.aiDisplay;a.bDrawing=!0;g!==n&&-1!==g&&(a._iDisplayStart=k?g:g>=a.fnRecordsDisplay()?0:g,a.iInitDisplayStart=-1);g=a._iDisplayStart;var m=a.fnDisplayEnd();if(a.bDeferLoading)a.bDeferLoading=!1,a.iDraw++,J(a,!1);else if(!k)a.iDraw++;else if(!a.bDestroying&&!pb(a))return;if(0!==l.length)for(h=k?a.aoData.length:m,k=k?0:g;k<h;k++){var p=l[k],v=a.aoData[p];
-null===v.nTr&&Ka(a,p);var u=v.nTr;if(0!==e){var q=d[c%e];v._sRowStripe!=q&&(f(u).removeClass(v._sRowStripe).addClass(q),v._sRowStripe=q)}A(a,"aoRowCallback",null,[u,v._aData,c,k,p]);b.push(u);c++}else c=h.sZeroRecords,1==a.iDraw&&"ajax"==I(a)?c=h.sLoadingRecords:h.sEmptyTable&&0===a.fnRecordsTotal()&&(c=h.sEmptyTable),b[0]=f("<tr/>",{"class":e?d[0]:""}).append(f("<td />",{valign:"top",colSpan:V(a),"class":a.oClasses.sRowEmpty}).html(c))[0];A(a,"aoHeaderCallback","header",[f(a.nTHead).children("tr")[0],
-Na(a),g,m,l]);A(a,"aoFooterCallback","footer",[f(a.nTFoot).children("tr")[0],Na(a),g,m,l]);d=f(a.nTBody);d.children().detach();d.append(f(b));A(a,"aoDrawCallback","draw",[a]);a.bSorted=!1;a.bFiltered=!1;a.bDrawing=!1}}function U(a,b){var c=a.oFeatures,d=c.bFilter;c.bSort&&qb(a);d?ha(a,a.oPreviousSearch):a.aiDisplay=a.aiDisplayMaster.slice();!0!==b&&(a._iDisplayStart=0);a._drawHold=b;S(a);a._drawHold=!1}function rb(a){var b=a.oClasses,c=f(a.nTable);c=f("<div/>").insertBefore(c);var d=a.oFeatures,e=
-f("<div/>",{id:a.sTableId+"_wrapper","class":b.sWrapper+(a.nTFoot?"":" "+b.sNoFooter)});a.nHolding=c[0];a.nTableWrapper=e[0];a.nTableReinsertBefore=a.nTable.nextSibling;for(var h=a.sDom.split(""),g,k,l,m,p,n,u=0;u<h.length;u++){g=null;k=h[u];if("<"==k){l=f("<div/>")[0];m=h[u+1];if("'"==m||'"'==m){p="";for(n=2;h[u+n]!=m;)p+=h[u+n],n++;"H"==p?p=b.sJUIHeader:"F"==p&&(p=b.sJUIFooter);-1!=p.indexOf(".")?(m=p.split("."),l.id=m[0].substr(1,m[0].length-1),l.className=m[1]):"#"==p.charAt(0)?l.id=p.substr(1,
-p.length-1):l.className=p;u+=n}e.append(l);e=f(l)}else if(">"==k)e=e.parent();else if("l"==k&&d.bPaginate&&d.bLengthChange)g=sb(a);else if("f"==k&&d.bFilter)g=tb(a);else if("r"==k&&d.bProcessing)g=ub(a);else if("t"==k)g=vb(a);else if("i"==k&&d.bInfo)g=wb(a);else if("p"==k&&d.bPaginate)g=xb(a);else if(0!==q.ext.feature.length)for(l=q.ext.feature,n=0,m=l.length;n<m;n++)if(k==l[n].cFeature){g=l[n].fnInit(a);break}g&&(l=a.aanFeatures,l[k]||(l[k]=[]),l[k].push(g),e.append(g))}c.replaceWith(e);a.nHolding=
-null}function ea(a,b){b=f(b).children("tr");var c,d,e;a.splice(0,a.length);var h=0;for(e=b.length;h<e;h++)a.push([]);h=0;for(e=b.length;h<e;h++){var g=b[h];for(c=g.firstChild;c;){if("TD"==c.nodeName.toUpperCase()||"TH"==c.nodeName.toUpperCase()){var k=1*c.getAttribute("colspan");var l=1*c.getAttribute("rowspan");k=k&&0!==k&&1!==k?k:1;l=l&&0!==l&&1!==l?l:1;var m=0;for(d=a[h];d[m];)m++;var p=m;var n=1===k?!0:!1;for(d=0;d<k;d++)for(m=0;m<l;m++)a[h+m][p+d]={cell:c,unique:n},a[h+m].nTr=g}c=c.nextSibling}}}
-function ta(a,b,c){var d=[];c||(c=a.aoHeader,b&&(c=[],ea(c,b)));b=0;for(var e=c.length;b<e;b++)for(var h=0,g=c[b].length;h<g;h++)!c[b][h].unique||d[h]&&a.bSortCellsTop||(d[h]=c[b][h].cell);return d}function ua(a,b,c){A(a,"aoServerParams","serverParams",[b]);if(b&&f.isArray(b)){var d={},e=/(.*?)\[\]$/;f.each(b,function(a,b){(a=b.name.match(e))?(a=a[0],d[a]||(d[a]=[]),d[a].push(b.value)):d[b.name]=b.value});b=d}var h=a.ajax,g=a.oInstance,k=function(b){A(a,null,"xhr",[a,b,a.jqXHR]);c(b)};if(f.isPlainObject(h)&&
-h.data){var l=h.data;var m="function"===typeof l?l(b,a):l;b="function"===typeof l&&m?m:f.extend(!0,b,m);delete h.data}m={data:b,success:function(b){var c=b.error||b.sError;c&&O(a,0,c);a.json=b;k(b)},dataType:"json",cache:!1,type:a.sServerMethod,error:function(b,c,d){d=A(a,null,"xhr",[a,null,a.jqXHR]);-1===f.inArray(!0,d)&&("parsererror"==c?O(a,0,"Invalid JSON response",1):4===b.readyState&&O(a,0,"Ajax error",7));J(a,!1)}};a.oAjaxData=b;A(a,null,"preXhr",[a,b]);a.fnServerData?a.fnServerData.call(g,
-a.sAjaxSource,f.map(b,function(a,b){return{name:b,value:a}}),k,a):a.sAjaxSource||"string"===typeof h?a.jqXHR=f.ajax(f.extend(m,{url:h||a.sAjaxSource})):"function"===typeof h?a.jqXHR=h.call(g,b,k,a):(a.jqXHR=f.ajax(f.extend(m,h)),h.data=l)}function pb(a){return a.bAjaxDataGet?(a.iDraw++,J(a,!0),ua(a,yb(a),function(b){zb(a,b)}),!1):!0}function yb(a){var b=a.aoColumns,c=b.length,d=a.oFeatures,e=a.oPreviousSearch,h=a.aoPreSearchCols,g=[],k=X(a);var l=a._iDisplayStart;var m=!1!==d.bPaginate?a._iDisplayLength:
--1;var p=function(a,b){g.push({name:a,value:b})};p("sEcho",a.iDraw);p("iColumns",c);p("sColumns",K(b,"sName").join(","));p("iDisplayStart",l);p("iDisplayLength",m);var n={draw:a.iDraw,columns:[],order:[],start:l,length:m,search:{value:e.sSearch,regex:e.bRegex}};for(l=0;l<c;l++){var u=b[l];var ra=h[l];m="function"==typeof u.mData?"function":u.mData;n.columns.push({data:m,name:u.sName,searchable:u.bSearchable,orderable:u.bSortable,search:{value:ra.sSearch,regex:ra.bRegex}});p("mDataProp_"+l,m);d.bFilter&&
-(p("sSearch_"+l,ra.sSearch),p("bRegex_"+l,ra.bRegex),p("bSearchable_"+l,u.bSearchable));d.bSort&&p("bSortable_"+l,u.bSortable)}d.bFilter&&(p("sSearch",e.sSearch),p("bRegex",e.bRegex));d.bSort&&(f.each(k,function(a,b){n.order.push({column:b.col,dir:b.dir});p("iSortCol_"+a,b.col);p("sSortDir_"+a,b.dir)}),p("iSortingCols",k.length));b=q.ext.legacy.ajax;return null===b?a.sAjaxSource?g:n:b?g:n}function zb(a,b){var c=function(a,c){return b[a]!==n?b[a]:b[c]},d=va(a,b),e=c("sEcho","draw"),h=c("iTotalRecords",
-"recordsTotal");c=c("iTotalDisplayRecords","recordsFiltered");if(e!==n){if(1*e<a.iDraw)return;a.iDraw=1*e}pa(a);a._iRecordsTotal=parseInt(h,10);a._iRecordsDisplay=parseInt(c,10);e=0;for(h=d.length;e<h;e++)R(a,d[e]);a.aiDisplay=a.aiDisplayMaster.slice();a.bAjaxDataGet=!1;S(a);a._bInitComplete||wa(a,b);a.bAjaxDataGet=!0;J(a,!1)}function va(a,b){a=f.isPlainObject(a.ajax)&&a.ajax.dataSrc!==n?a.ajax.dataSrc:a.sAjaxDataProp;return"data"===a?b.aaData||b[a]:""!==a?T(a)(b):b}function tb(a){var b=a.oClasses,
-c=a.sTableId,d=a.oLanguage,e=a.oPreviousSearch,h=a.aanFeatures,g='<input type="search" class="'+b.sFilterInput+'"/>',k=d.sSearch;k=k.match(/_INPUT_/)?k.replace("_INPUT_",g):k+g;b=f("<div/>",{id:h.f?null:c+"_filter","class":b.sFilter}).append(f("<label/>").append(k));var l=function(){var b=this.value?this.value:"";b!=e.sSearch&&(ha(a,{sSearch:b,bRegex:e.bRegex,bSmart:e.bSmart,bCaseInsensitive:e.bCaseInsensitive}),a._iDisplayStart=0,S(a))};h=null!==a.searchDelay?a.searchDelay:"ssp"===I(a)?400:0;var m=
-f("input",b).val(e.sSearch).attr("placeholder",d.sSearchPlaceholder).on("keyup.DT search.DT input.DT paste.DT cut.DT",h?Ra(l,h):l).on("mouseup",function(a){setTimeout(function(){l.call(m[0])},10)}).on("keypress.DT",function(a){if(13==a.keyCode)return!1}).attr("aria-controls",c);f(a.nTable).on("search.dt.DT",function(b,c){if(a===c)try{m[0]!==w.activeElement&&m.val(e.sSearch)}catch(u){}});return b[0]}function ha(a,b,c){var d=a.oPreviousSearch,e=a.aoPreSearchCols,h=function(a){d.sSearch=a.sSearch;d.bRegex=
-a.bRegex;d.bSmart=a.bSmart;d.bCaseInsensitive=a.bCaseInsensitive},g=function(a){return a.bEscapeRegex!==n?!a.bEscapeRegex:a.bRegex};Ja(a);if("ssp"!=I(a)){Ab(a,b.sSearch,c,g(b),b.bSmart,b.bCaseInsensitive);h(b);for(b=0;b<e.length;b++)Bb(a,e[b].sSearch,b,g(e[b]),e[b].bSmart,e[b].bCaseInsensitive);Cb(a)}else h(b);a.bFiltered=!0;A(a,null,"search",[a])}function Cb(a){for(var b=q.ext.search,c=a.aiDisplay,d,e,h=0,g=b.length;h<g;h++){for(var k=[],l=0,m=c.length;l<m;l++)e=c[l],d=a.aoData[e],b[h](a,d._aFilterData,
-e,d._aData,l)&&k.push(e);c.length=0;f.merge(c,k)}}function Bb(a,b,c,d,e,h){if(""!==b){var g=[],k=a.aiDisplay;d=Sa(b,d,e,h);for(e=0;e<k.length;e++)b=a.aoData[k[e]]._aFilterData[c],d.test(b)&&g.push(k[e]);a.aiDisplay=g}}function Ab(a,b,c,d,e,h){e=Sa(b,d,e,h);var g=a.oPreviousSearch.sSearch,k=a.aiDisplayMaster;h=[];0!==q.ext.search.length&&(c=!0);var f=Db(a);if(0>=b.length)a.aiDisplay=k.slice();else{if(f||c||d||g.length>b.length||0!==b.indexOf(g)||a.bSorted)a.aiDisplay=k.slice();b=a.aiDisplay;for(c=
-0;c<b.length;c++)e.test(a.aoData[b[c]]._sFilterRow)&&h.push(b[c]);a.aiDisplay=h}}function Sa(a,b,c,d){a=b?a:Ta(a);c&&(a="^(?=.*?"+f.map(a.match(/"[^"]+"|[^ ]+/g)||[""],function(a){if('"'===a.charAt(0)){var b=a.match(/^"(.*)"$/);a=b?b[1]:a}return a.replace('"',"")}).join(")(?=.*?")+").*$");return new RegExp(a,d?"i":"")}function Db(a){var b=a.aoColumns,c,d,e=q.ext.type.search;var h=!1;var g=0;for(c=a.aoData.length;g<c;g++){var k=a.aoData[g];if(!k._aFilterData){var f=[];var m=0;for(d=b.length;m<d;m++){h=
-b[m];if(h.bSearchable){var p=F(a,g,m,"filter");e[h.sType]&&(p=e[h.sType](p));null===p&&(p="");"string"!==typeof p&&p.toString&&(p=p.toString())}else p="";p.indexOf&&-1!==p.indexOf("&")&&(xa.innerHTML=p,p=$b?xa.textContent:xa.innerText);p.replace&&(p=p.replace(/[\r\n\u2028]/g,""));f.push(p)}k._aFilterData=f;k._sFilterRow=f.join("  ");h=!0}}return h}function Eb(a){return{search:a.sSearch,smart:a.bSmart,regex:a.bRegex,caseInsensitive:a.bCaseInsensitive}}function Fb(a){return{sSearch:a.search,bSmart:a.smart,
-bRegex:a.regex,bCaseInsensitive:a.caseInsensitive}}function wb(a){var b=a.sTableId,c=a.aanFeatures.i,d=f("<div/>",{"class":a.oClasses.sInfo,id:c?null:b+"_info"});c||(a.aoDrawCallback.push({fn:Gb,sName:"information"}),d.attr("role","status").attr("aria-live","polite"),f(a.nTable).attr("aria-describedby",b+"_info"));return d[0]}function Gb(a){var b=a.aanFeatures.i;if(0!==b.length){var c=a.oLanguage,d=a._iDisplayStart+1,e=a.fnDisplayEnd(),h=a.fnRecordsTotal(),g=a.fnRecordsDisplay(),k=g?c.sInfo:c.sInfoEmpty;
-g!==h&&(k+=" "+c.sInfoFiltered);k+=c.sInfoPostFix;k=Hb(a,k);c=c.fnInfoCallback;null!==c&&(k=c.call(a.oInstance,a,d,e,h,g,k));f(b).html(k)}}function Hb(a,b){var c=a.fnFormatNumber,d=a._iDisplayStart+1,e=a._iDisplayLength,h=a.fnRecordsDisplay(),g=-1===e;return b.replace(/_START_/g,c.call(a,d)).replace(/_END_/g,c.call(a,a.fnDisplayEnd())).replace(/_MAX_/g,c.call(a,a.fnRecordsTotal())).replace(/_TOTAL_/g,c.call(a,h)).replace(/_PAGE_/g,c.call(a,g?1:Math.ceil(d/e))).replace(/_PAGES_/g,c.call(a,g?1:Math.ceil(h/
-e)))}function ia(a){var b=a.iInitDisplayStart,c=a.aoColumns;var d=a.oFeatures;var e=a.bDeferLoading;if(a.bInitialised){rb(a);ob(a);fa(a,a.aoHeader);fa(a,a.aoFooter);J(a,!0);d.bAutoWidth&&Ia(a);var h=0;for(d=c.length;h<d;h++){var g=c[h];g.sWidth&&(g.nTh.style.width=B(g.sWidth))}A(a,null,"preInit",[a]);U(a);c=I(a);if("ssp"!=c||e)"ajax"==c?ua(a,[],function(c){var d=va(a,c);for(h=0;h<d.length;h++)R(a,d[h]);a.iInitDisplayStart=b;U(a);J(a,!1);wa(a,c)},a):(J(a,!1),wa(a))}else setTimeout(function(){ia(a)},
-200)}function wa(a,b){a._bInitComplete=!0;(b||a.oInit.aaData)&&Z(a);A(a,null,"plugin-init",[a,b]);A(a,"aoInitComplete","init",[a,b])}function Ua(a,b){b=parseInt(b,10);a._iDisplayLength=b;Va(a);A(a,null,"length",[a,b])}function sb(a){var b=a.oClasses,c=a.sTableId,d=a.aLengthMenu,e=f.isArray(d[0]),h=e?d[0]:d;d=e?d[1]:d;e=f("<select/>",{name:c+"_length","aria-controls":c,"class":b.sLengthSelect});for(var g=0,k=h.length;g<k;g++)e[0][g]=new Option("number"===typeof d[g]?a.fnFormatNumber(d[g]):d[g],h[g]);
-var l=f("<div><label/></div>").addClass(b.sLength);a.aanFeatures.l||(l[0].id=c+"_length");l.children().append(a.oLanguage.sLengthMenu.replace("_MENU_",e[0].outerHTML));f("select",l).val(a._iDisplayLength).on("change.DT",function(b){Ua(a,f(this).val());S(a)});f(a.nTable).on("length.dt.DT",function(b,c,d){a===c&&f("select",l).val(d)});return l[0]}function xb(a){var b=a.sPaginationType,c=q.ext.pager[b],d="function"===typeof c,e=function(a){S(a)};b=f("<div/>").addClass(a.oClasses.sPaging+b)[0];var h=
-a.aanFeatures;d||c.fnInit(a,b,e);h.p||(b.id=a.sTableId+"_paginate",a.aoDrawCallback.push({fn:function(a){if(d){var b=a._iDisplayStart,g=a._iDisplayLength,f=a.fnRecordsDisplay(),p=-1===g;b=p?0:Math.ceil(b/g);g=p?1:Math.ceil(f/g);f=c(b,g);var n;p=0;for(n=h.p.length;p<n;p++)Qa(a,"pageButton")(a,h.p[p],p,f,b,g)}else c.fnUpdate(a,e)},sName:"pagination"}));return b}function Wa(a,b,c){var d=a._iDisplayStart,e=a._iDisplayLength,h=a.fnRecordsDisplay();0===h||-1===e?d=0:"number"===typeof b?(d=b*e,d>h&&(d=0)):
-"first"==b?d=0:"previous"==b?(d=0<=e?d-e:0,0>d&&(d=0)):"next"==b?d+e<h&&(d+=e):"last"==b?d=Math.floor((h-1)/e)*e:O(a,0,"Unknown paging action: "+b,5);b=a._iDisplayStart!==d;a._iDisplayStart=d;b&&(A(a,null,"page",[a]),c&&S(a));return b}function ub(a){return f("<div/>",{id:a.aanFeatures.r?null:a.sTableId+"_processing","class":a.oClasses.sProcessing}).html(a.oLanguage.sProcessing).insertBefore(a.nTable)[0]}function J(a,b){a.oFeatures.bProcessing&&f(a.aanFeatures.r).css("display",b?"block":"none");A(a,
-null,"processing",[a,b])}function vb(a){var b=f(a.nTable);b.attr("role","grid");var c=a.oScroll;if(""===c.sX&&""===c.sY)return a.nTable;var d=c.sX,e=c.sY,h=a.oClasses,g=b.children("caption"),k=g.length?g[0]._captionSide:null,l=f(b[0].cloneNode(!1)),m=f(b[0].cloneNode(!1)),p=b.children("tfoot");p.length||(p=null);l=f("<div/>",{"class":h.sScrollWrapper}).append(f("<div/>",{"class":h.sScrollHead}).css({overflow:"hidden",position:"relative",border:0,width:d?d?B(d):null:"100%"}).append(f("<div/>",{"class":h.sScrollHeadInner}).css({"box-sizing":"content-box",
-width:c.sXInner||"100%"}).append(l.removeAttr("id").css("margin-left",0).append("top"===k?g:null).append(b.children("thead"))))).append(f("<div/>",{"class":h.sScrollBody}).css({position:"relative",overflow:"auto",width:d?B(d):null}).append(b));p&&l.append(f("<div/>",{"class":h.sScrollFoot}).css({overflow:"hidden",border:0,width:d?d?B(d):null:"100%"}).append(f("<div/>",{"class":h.sScrollFootInner}).append(m.removeAttr("id").css("margin-left",0).append("bottom"===k?g:null).append(b.children("tfoot")))));
-b=l.children();var n=b[0];h=b[1];var u=p?b[2]:null;if(d)f(h).on("scroll.DT",function(a){a=this.scrollLeft;n.scrollLeft=a;p&&(u.scrollLeft=a)});f(h).css("max-height",e);c.bCollapse||f(h).css("height",e);a.nScrollHead=n;a.nScrollBody=h;a.nScrollFoot=u;a.aoDrawCallback.push({fn:ma,sName:"scrolling"});return l[0]}function ma(a){var b=a.oScroll,c=b.sX,d=b.sXInner,e=b.sY;b=b.iBarWidth;var h=f(a.nScrollHead),g=h[0].style,k=h.children("div"),l=k[0].style,m=k.children("table");k=a.nScrollBody;var p=f(k),v=
-k.style,u=f(a.nScrollFoot).children("div"),q=u.children("table"),t=f(a.nTHead),r=f(a.nTable),x=r[0],ya=x.style,w=a.nTFoot?f(a.nTFoot):null,y=a.oBrowser,A=y.bScrollOversize,ac=K(a.aoColumns,"nTh"),Xa=[],z=[],C=[],G=[],H,I=function(a){a=a.style;a.paddingTop="0";a.paddingBottom="0";a.borderTopWidth="0";a.borderBottomWidth="0";a.height=0};var D=k.scrollHeight>k.clientHeight;if(a.scrollBarVis!==D&&a.scrollBarVis!==n)a.scrollBarVis=D,Z(a);else{a.scrollBarVis=D;r.children("thead, tfoot").remove();if(w){var E=
-w.clone().prependTo(r);var F=w.find("tr");E=E.find("tr")}var J=t.clone().prependTo(r);t=t.find("tr");D=J.find("tr");J.find("th, td").removeAttr("tabindex");c||(v.width="100%",h[0].style.width="100%");f.each(ta(a,J),function(b,c){H=aa(a,b);c.style.width=a.aoColumns[H].sWidth});w&&N(function(a){a.style.width=""},E);h=r.outerWidth();""===c?(ya.width="100%",A&&(r.find("tbody").height()>k.offsetHeight||"scroll"==p.css("overflow-y"))&&(ya.width=B(r.outerWidth()-b)),h=r.outerWidth()):""!==d&&(ya.width=B(d),
-h=r.outerWidth());N(I,D);N(function(a){C.push(a.innerHTML);Xa.push(B(f(a).css("width")))},D);N(function(a,b){-1!==f.inArray(a,ac)&&(a.style.width=Xa[b])},t);f(D).height(0);w&&(N(I,E),N(function(a){G.push(a.innerHTML);z.push(B(f(a).css("width")))},E),N(function(a,b){a.style.width=z[b]},F),f(E).height(0));N(function(a,b){a.innerHTML='<div class="dataTables_sizing">'+C[b]+"</div>";a.childNodes[0].style.height="0";a.childNodes[0].style.overflow="hidden";a.style.width=Xa[b]},D);w&&N(function(a,b){a.innerHTML=
-'<div class="dataTables_sizing">'+G[b]+"</div>";a.childNodes[0].style.height="0";a.childNodes[0].style.overflow="hidden";a.style.width=z[b]},E);r.outerWidth()<h?(F=k.scrollHeight>k.offsetHeight||"scroll"==p.css("overflow-y")?h+b:h,A&&(k.scrollHeight>k.offsetHeight||"scroll"==p.css("overflow-y"))&&(ya.width=B(F-b)),""!==c&&""===d||O(a,1,"Possible column misalignment",6)):F="100%";v.width=B(F);g.width=B(F);w&&(a.nScrollFoot.style.width=B(F));!e&&A&&(v.height=B(x.offsetHeight+b));c=r.outerWidth();m[0].style.width=
-B(c);l.width=B(c);d=r.height()>k.clientHeight||"scroll"==p.css("overflow-y");e="padding"+(y.bScrollbarLeft?"Left":"Right");l[e]=d?b+"px":"0px";w&&(q[0].style.width=B(c),u[0].style.width=B(c),u[0].style[e]=d?b+"px":"0px");r.children("colgroup").insertBefore(r.children("thead"));p.trigger("scroll");!a.bSorted&&!a.bFiltered||a._drawHold||(k.scrollTop=0)}}function N(a,b,c){for(var d=0,e=0,h=b.length,g,k;e<h;){g=b[e].firstChild;for(k=c?c[e].firstChild:null;g;)1===g.nodeType&&(c?a(g,k,d):a(g,d),d++),g=
-g.nextSibling,k=c?k.nextSibling:null;e++}}function Ia(a){var b=a.nTable,c=a.aoColumns,d=a.oScroll,e=d.sY,h=d.sX,g=d.sXInner,k=c.length,l=na(a,"bVisible"),m=f("th",a.nTHead),p=b.getAttribute("width"),n=b.parentNode,u=!1,q,t=a.oBrowser;d=t.bScrollOversize;(q=b.style.width)&&-1!==q.indexOf("%")&&(p=q);for(q=0;q<l.length;q++){var r=c[l[q]];null!==r.sWidth&&(r.sWidth=Ib(r.sWidthOrig,n),u=!0)}if(d||!u&&!h&&!e&&k==V(a)&&k==m.length)for(q=0;q<k;q++)l=aa(a,q),null!==l&&(c[l].sWidth=B(m.eq(q).width()));else{k=
-f(b).clone().css("visibility","hidden").removeAttr("id");k.find("tbody tr").remove();var w=f("<tr/>").appendTo(k.find("tbody"));k.find("thead, tfoot").remove();k.append(f(a.nTHead).clone()).append(f(a.nTFoot).clone());k.find("tfoot th, tfoot td").css("width","");m=ta(a,k.find("thead")[0]);for(q=0;q<l.length;q++)r=c[l[q]],m[q].style.width=null!==r.sWidthOrig&&""!==r.sWidthOrig?B(r.sWidthOrig):"",r.sWidthOrig&&h&&f(m[q]).append(f("<div/>").css({width:r.sWidthOrig,margin:0,padding:0,border:0,height:1}));
-if(a.aoData.length)for(q=0;q<l.length;q++)u=l[q],r=c[u],f(Jb(a,u)).clone(!1).append(r.sContentPadding).appendTo(w);f("[name]",k).removeAttr("name");r=f("<div/>").css(h||e?{position:"absolute",top:0,left:0,height:1,right:0,overflow:"hidden"}:{}).append(k).appendTo(n);h&&g?k.width(g):h?(k.css("width","auto"),k.removeAttr("width"),k.width()<n.clientWidth&&p&&k.width(n.clientWidth)):e?k.width(n.clientWidth):p&&k.width(p);for(q=e=0;q<l.length;q++)n=f(m[q]),g=n.outerWidth()-n.width(),n=t.bBounding?Math.ceil(m[q].getBoundingClientRect().width):
-n.outerWidth(),e+=n,c[l[q]].sWidth=B(n-g);b.style.width=B(e);r.remove()}p&&(b.style.width=B(p));!p&&!h||a._reszEvt||(b=function(){f(y).on("resize.DT-"+a.sInstance,Ra(function(){Z(a)}))},d?setTimeout(b,1E3):b(),a._reszEvt=!0)}function Ib(a,b){if(!a)return 0;a=f("<div/>").css("width",B(a)).appendTo(b||w.body);b=a[0].offsetWidth;a.remove();return b}function Jb(a,b){var c=Kb(a,b);if(0>c)return null;var d=a.aoData[c];return d.nTr?d.anCells[b]:f("<td/>").html(F(a,c,b,"display"))[0]}function Kb(a,b){for(var c,
-d=-1,e=-1,h=0,g=a.aoData.length;h<g;h++)c=F(a,h,b,"display")+"",c=c.replace(bc,""),c=c.replace(/&nbsp;/g," "),c.length>d&&(d=c.length,e=h);return e}function B(a){return null===a?"0px":"number"==typeof a?0>a?"0px":a+"px":a.match(/\d$/)?a+"px":a}function X(a){var b=[],c=a.aoColumns;var d=a.aaSortingFixed;var e=f.isPlainObject(d);var h=[];var g=function(a){a.length&&!f.isArray(a[0])?h.push(a):f.merge(h,a)};f.isArray(d)&&g(d);e&&d.pre&&g(d.pre);g(a.aaSorting);e&&d.post&&g(d.post);for(a=0;a<h.length;a++){var k=
-h[a][0];g=c[k].aDataSort;d=0;for(e=g.length;d<e;d++){var l=g[d];var m=c[l].sType||"string";h[a]._idx===n&&(h[a]._idx=f.inArray(h[a][1],c[l].asSorting));b.push({src:k,col:l,dir:h[a][1],index:h[a]._idx,type:m,formatter:q.ext.type.order[m+"-pre"]})}}return b}function qb(a){var b,c=[],d=q.ext.type.order,e=a.aoData,h=0,g=a.aiDisplayMaster;Ja(a);var k=X(a);var f=0;for(b=k.length;f<b;f++){var m=k[f];m.formatter&&h++;Lb(a,m.col)}if("ssp"!=I(a)&&0!==k.length){f=0;for(b=g.length;f<b;f++)c[g[f]]=f;h===k.length?
-g.sort(function(a,b){var d,h=k.length,g=e[a]._aSortData,f=e[b]._aSortData;for(d=0;d<h;d++){var l=k[d];var m=g[l.col];var p=f[l.col];m=m<p?-1:m>p?1:0;if(0!==m)return"asc"===l.dir?m:-m}m=c[a];p=c[b];return m<p?-1:m>p?1:0}):g.sort(function(a,b){var h,g=k.length,f=e[a]._aSortData,l=e[b]._aSortData;for(h=0;h<g;h++){var m=k[h];var p=f[m.col];var n=l[m.col];m=d[m.type+"-"+m.dir]||d["string-"+m.dir];p=m(p,n);if(0!==p)return p}p=c[a];n=c[b];return p<n?-1:p>n?1:0})}a.bSorted=!0}function Mb(a){var b=a.aoColumns,
-c=X(a);a=a.oLanguage.oAria;for(var d=0,e=b.length;d<e;d++){var h=b[d];var g=h.asSorting;var k=h.sTitle.replace(/<.*?>/g,"");var f=h.nTh;f.removeAttribute("aria-sort");h.bSortable&&(0<c.length&&c[0].col==d?(f.setAttribute("aria-sort","asc"==c[0].dir?"ascending":"descending"),h=g[c[0].index+1]||g[0]):h=g[0],k+="asc"===h?a.sSortAscending:a.sSortDescending);f.setAttribute("aria-label",k)}}function Ya(a,b,c,d){var e=a.aaSorting,h=a.aoColumns[b].asSorting,g=function(a,b){var c=a._idx;c===n&&(c=f.inArray(a[1],
-h));return c+1<h.length?c+1:b?null:0};"number"===typeof e[0]&&(e=a.aaSorting=[e]);c&&a.oFeatures.bSortMulti?(c=f.inArray(b,K(e,"0")),-1!==c?(b=g(e[c],!0),null===b&&1===e.length&&(b=0),null===b?e.splice(c,1):(e[c][1]=h[b],e[c]._idx=b)):(e.push([b,h[0],0]),e[e.length-1]._idx=0)):e.length&&e[0][0]==b?(b=g(e[0]),e.length=1,e[0][1]=h[b],e[0]._idx=b):(e.length=0,e.push([b,h[0]]),e[0]._idx=0);U(a);"function"==typeof d&&d(a)}function Pa(a,b,c,d){var e=a.aoColumns[c];Za(b,{},function(b){!1!==e.bSortable&&
-(a.oFeatures.bProcessing?(J(a,!0),setTimeout(function(){Ya(a,c,b.shiftKey,d);"ssp"!==I(a)&&J(a,!1)},0)):Ya(a,c,b.shiftKey,d))})}function za(a){var b=a.aLastSort,c=a.oClasses.sSortColumn,d=X(a),e=a.oFeatures,h;if(e.bSort&&e.bSortClasses){e=0;for(h=b.length;e<h;e++){var g=b[e].src;f(K(a.aoData,"anCells",g)).removeClass(c+(2>e?e+1:3))}e=0;for(h=d.length;e<h;e++)g=d[e].src,f(K(a.aoData,"anCells",g)).addClass(c+(2>e?e+1:3))}a.aLastSort=d}function Lb(a,b){var c=a.aoColumns[b],d=q.ext.order[c.sSortDataType],
-e;d&&(e=d.call(a.oInstance,a,b,ba(a,b)));for(var h,g=q.ext.type.order[c.sType+"-pre"],f=0,l=a.aoData.length;f<l;f++)if(c=a.aoData[f],c._aSortData||(c._aSortData=[]),!c._aSortData[b]||d)h=d?e[f]:F(a,f,b,"sort"),c._aSortData[b]=g?g(h):h}function Aa(a){if(a.oFeatures.bStateSave&&!a.bDestroying){var b={time:+new Date,start:a._iDisplayStart,length:a._iDisplayLength,order:f.extend(!0,[],a.aaSorting),search:Eb(a.oPreviousSearch),columns:f.map(a.aoColumns,function(b,d){return{visible:b.bVisible,search:Eb(a.aoPreSearchCols[d])}})};
-A(a,"aoStateSaveParams","stateSaveParams",[a,b]);a.oSavedState=b;a.fnStateSaveCallback.call(a.oInstance,a,b)}}function Nb(a,b,c){var d,e,h=a.aoColumns;b=function(b){if(b&&b.time){var g=A(a,"aoStateLoadParams","stateLoadParams",[a,b]);if(-1===f.inArray(!1,g)&&(g=a.iStateDuration,!(0<g&&b.time<+new Date-1E3*g||b.columns&&h.length!==b.columns.length))){a.oLoadedState=f.extend(!0,{},b);b.start!==n&&(a._iDisplayStart=b.start,a.iInitDisplayStart=b.start);b.length!==n&&(a._iDisplayLength=b.length);b.order!==
-n&&(a.aaSorting=[],f.each(b.order,function(b,c){a.aaSorting.push(c[0]>=h.length?[0,c[1]]:c)}));b.search!==n&&f.extend(a.oPreviousSearch,Fb(b.search));if(b.columns)for(d=0,e=b.columns.length;d<e;d++)g=b.columns[d],g.visible!==n&&(h[d].bVisible=g.visible),g.search!==n&&f.extend(a.aoPreSearchCols[d],Fb(g.search));A(a,"aoStateLoaded","stateLoaded",[a,b])}}c()};if(a.oFeatures.bStateSave){var g=a.fnStateLoadCallback.call(a.oInstance,a,b);g!==n&&b(g)}else c()}function Ba(a){var b=q.settings;a=f.inArray(a,
-K(b,"nTable"));return-1!==a?b[a]:null}function O(a,b,c,d){c="DataTables warning: "+(a?"table id="+a.sTableId+" - ":"")+c;d&&(c+=". For more information about this error, please see http://datatables.net/tn/"+d);if(b)y.console&&console.log&&console.log(c);else if(b=q.ext,b=b.sErrMode||b.errMode,a&&A(a,null,"error",[a,d,c]),"alert"==b)alert(c);else{if("throw"==b)throw Error(c);"function"==typeof b&&b(a,d,c)}}function M(a,b,c,d){f.isArray(c)?f.each(c,function(c,d){f.isArray(d)?M(a,b,d[0],d[1]):M(a,b,
-d)}):(d===n&&(d=c),b[c]!==n&&(a[d]=b[c]))}function $a(a,b,c){var d;for(d in b)if(b.hasOwnProperty(d)){var e=b[d];f.isPlainObject(e)?(f.isPlainObject(a[d])||(a[d]={}),f.extend(!0,a[d],e)):c&&"data"!==d&&"aaData"!==d&&f.isArray(e)?a[d]=e.slice():a[d]=e}return a}function Za(a,b,c){f(a).on("click.DT",b,function(b){f(a).trigger("blur");c(b)}).on("keypress.DT",b,function(a){13===a.which&&(a.preventDefault(),c(a))}).on("selectstart.DT",function(){return!1})}function D(a,b,c,d){c&&a[b].push({fn:c,sName:d})}
-function A(a,b,c,d){var e=[];b&&(e=f.map(a[b].slice().reverse(),function(b,c){return b.fn.apply(a.oInstance,d)}));null!==c&&(b=f.Event(c+".dt"),f(a.nTable).trigger(b,d),e.push(b.result));return e}function Va(a){var b=a._iDisplayStart,c=a.fnDisplayEnd(),d=a._iDisplayLength;b>=c&&(b=c-d);b-=b%d;if(-1===d||0>b)b=0;a._iDisplayStart=b}function Qa(a,b){a=a.renderer;var c=q.ext.renderer[b];return f.isPlainObject(a)&&a[b]?c[a[b]]||c._:"string"===typeof a?c[a]||c._:c._}function I(a){return a.oFeatures.bServerSide?
-"ssp":a.ajax||a.sAjaxSource?"ajax":"dom"}function ja(a,b){var c=Ob.numbers_length,d=Math.floor(c/2);b<=c?a=Y(0,b):a<=d?(a=Y(0,c-2),a.push("ellipsis"),a.push(b-1)):(a>=b-1-d?a=Y(b-(c-2),b):(a=Y(a-d+2,a+d-1),a.push("ellipsis"),a.push(b-1)),a.splice(0,0,"ellipsis"),a.splice(0,0,0));a.DT_el="span";return a}function Ga(a){f.each({num:function(b){return Ca(b,a)},"num-fmt":function(b){return Ca(b,a,ab)},"html-num":function(b){return Ca(b,a,Da)},"html-num-fmt":function(b){return Ca(b,a,Da,ab)}},function(b,
-c){C.type.order[b+a+"-pre"]=c;b.match(/^html\-/)&&(C.type.search[b+a]=C.type.search.html)})}function Pb(a){return function(){var b=[Ba(this[q.ext.iApiIndex])].concat(Array.prototype.slice.call(arguments));return q.ext.internal[a].apply(this,b)}}var q=function(a){this.$=function(a,b){return this.api(!0).$(a,b)};this._=function(a,b){return this.api(!0).rows(a,b).data()};this.api=function(a){return a?new x(Ba(this[C.iApiIndex])):new x(this)};this.fnAddData=function(a,b){var c=this.api(!0);a=f.isArray(a)&&
-(f.isArray(a[0])||f.isPlainObject(a[0]))?c.rows.add(a):c.row.add(a);(b===n||b)&&c.draw();return a.flatten().toArray()};this.fnAdjustColumnSizing=function(a){var b=this.api(!0).columns.adjust(),c=b.settings()[0],d=c.oScroll;a===n||a?b.draw(!1):(""!==d.sX||""!==d.sY)&&ma(c)};this.fnClearTable=function(a){var b=this.api(!0).clear();(a===n||a)&&b.draw()};this.fnClose=function(a){this.api(!0).row(a).child.hide()};this.fnDeleteRow=function(a,b,c){var d=this.api(!0);a=d.rows(a);var e=a.settings()[0],h=e.aoData[a[0][0]];
-a.remove();b&&b.call(this,e,h);(c===n||c)&&d.draw();return h};this.fnDestroy=function(a){this.api(!0).destroy(a)};this.fnDraw=function(a){this.api(!0).draw(a)};this.fnFilter=function(a,b,c,d,e,f){e=this.api(!0);null===b||b===n?e.search(a,c,d,f):e.column(b).search(a,c,d,f);e.draw()};this.fnGetData=function(a,b){var c=this.api(!0);if(a!==n){var d=a.nodeName?a.nodeName.toLowerCase():"";return b!==n||"td"==d||"th"==d?c.cell(a,b).data():c.row(a).data()||null}return c.data().toArray()};this.fnGetNodes=
-function(a){var b=this.api(!0);return a!==n?b.row(a).node():b.rows().nodes().flatten().toArray()};this.fnGetPosition=function(a){var b=this.api(!0),c=a.nodeName.toUpperCase();return"TR"==c?b.row(a).index():"TD"==c||"TH"==c?(a=b.cell(a).index(),[a.row,a.columnVisible,a.column]):null};this.fnIsOpen=function(a){return this.api(!0).row(a).child.isShown()};this.fnOpen=function(a,b,c){return this.api(!0).row(a).child(b,c).show().child()[0]};this.fnPageChange=function(a,b){a=this.api(!0).page(a);(b===n||
-b)&&a.draw(!1)};this.fnSetColumnVis=function(a,b,c){a=this.api(!0).column(a).visible(b);(c===n||c)&&a.columns.adjust().draw()};this.fnSettings=function(){return Ba(this[C.iApiIndex])};this.fnSort=function(a){this.api(!0).order(a).draw()};this.fnSortListener=function(a,b,c){this.api(!0).order.listener(a,b,c)};this.fnUpdate=function(a,b,c,d,e){var h=this.api(!0);c===n||null===c?h.row(b).data(a):h.cell(b,c).data(a);(e===n||e)&&h.columns.adjust();(d===n||d)&&h.draw();return 0};this.fnVersionCheck=C.fnVersionCheck;
-var b=this,c=a===n,d=this.length;c&&(a={});this.oApi=this.internal=C.internal;for(var e in q.ext.internal)e&&(this[e]=Pb(e));this.each(function(){var e={},g=1<d?$a(e,a,!0):a,k=0,l;e=this.getAttribute("id");var m=!1,p=q.defaults,v=f(this);if("table"!=this.nodeName.toLowerCase())O(null,0,"Non-table node initialisation ("+this.nodeName+")",2);else{ib(p);jb(p.column);L(p,p,!0);L(p.column,p.column,!0);L(p,f.extend(g,v.data()),!0);var u=q.settings;k=0;for(l=u.length;k<l;k++){var t=u[k];if(t.nTable==this||
-t.nTHead&&t.nTHead.parentNode==this||t.nTFoot&&t.nTFoot.parentNode==this){var w=g.bRetrieve!==n?g.bRetrieve:p.bRetrieve;if(c||w)return t.oInstance;if(g.bDestroy!==n?g.bDestroy:p.bDestroy){t.oInstance.fnDestroy();break}else{O(t,0,"Cannot reinitialise DataTable",3);return}}if(t.sTableId==this.id){u.splice(k,1);break}}if(null===e||""===e)this.id=e="DataTables_Table_"+q.ext._unique++;var r=f.extend(!0,{},q.models.oSettings,{sDestroyWidth:v[0].style.width,sInstance:e,sTableId:e});r.nTable=this;r.oApi=
-b.internal;r.oInit=g;u.push(r);r.oInstance=1===b.length?b:v.dataTable();ib(g);Fa(g.oLanguage);g.aLengthMenu&&!g.iDisplayLength&&(g.iDisplayLength=f.isArray(g.aLengthMenu[0])?g.aLengthMenu[0][0]:g.aLengthMenu[0]);g=$a(f.extend(!0,{},p),g);M(r.oFeatures,g,"bPaginate bLengthChange bFilter bSort bSortMulti bInfo bProcessing bAutoWidth bSortClasses bServerSide bDeferRender".split(" "));M(r,g,["asStripeClasses","ajax","fnServerData","fnFormatNumber","sServerMethod","aaSorting","aaSortingFixed","aLengthMenu",
-"sPaginationType","sAjaxSource","sAjaxDataProp","iStateDuration","sDom","bSortCellsTop","iTabIndex","fnStateLoadCallback","fnStateSaveCallback","renderer","searchDelay","rowId",["iCookieDuration","iStateDuration"],["oSearch","oPreviousSearch"],["aoSearchCols","aoPreSearchCols"],["iDisplayLength","_iDisplayLength"]]);M(r.oScroll,g,[["sScrollX","sX"],["sScrollXInner","sXInner"],["sScrollY","sY"],["bScrollCollapse","bCollapse"]]);M(r.oLanguage,g,"fnInfoCallback");D(r,"aoDrawCallback",g.fnDrawCallback,
-"user");D(r,"aoServerParams",g.fnServerParams,"user");D(r,"aoStateSaveParams",g.fnStateSaveParams,"user");D(r,"aoStateLoadParams",g.fnStateLoadParams,"user");D(r,"aoStateLoaded",g.fnStateLoaded,"user");D(r,"aoRowCallback",g.fnRowCallback,"user");D(r,"aoRowCreatedCallback",g.fnCreatedRow,"user");D(r,"aoHeaderCallback",g.fnHeaderCallback,"user");D(r,"aoFooterCallback",g.fnFooterCallback,"user");D(r,"aoInitComplete",g.fnInitComplete,"user");D(r,"aoPreDrawCallback",g.fnPreDrawCallback,"user");r.rowIdFn=
-T(g.rowId);kb(r);var x=r.oClasses;f.extend(x,q.ext.classes,g.oClasses);v.addClass(x.sTable);r.iInitDisplayStart===n&&(r.iInitDisplayStart=g.iDisplayStart,r._iDisplayStart=g.iDisplayStart);null!==g.iDeferLoading&&(r.bDeferLoading=!0,e=f.isArray(g.iDeferLoading),r._iRecordsDisplay=e?g.iDeferLoading[0]:g.iDeferLoading,r._iRecordsTotal=e?g.iDeferLoading[1]:g.iDeferLoading);var y=r.oLanguage;f.extend(!0,y,g.oLanguage);y.sUrl&&(f.ajax({dataType:"json",url:y.sUrl,success:function(a){Fa(a);L(p.oLanguage,
-a);f.extend(!0,y,a);ia(r)},error:function(){ia(r)}}),m=!0);null===g.asStripeClasses&&(r.asStripeClasses=[x.sStripeOdd,x.sStripeEven]);e=r.asStripeClasses;var z=v.children("tbody").find("tr").eq(0);-1!==f.inArray(!0,f.map(e,function(a,b){return z.hasClass(a)}))&&(f("tbody tr",this).removeClass(e.join(" ")),r.asDestroyStripes=e.slice());e=[];u=this.getElementsByTagName("thead");0!==u.length&&(ea(r.aoHeader,u[0]),e=ta(r));if(null===g.aoColumns)for(u=[],k=0,l=e.length;k<l;k++)u.push(null);else u=g.aoColumns;
-k=0;for(l=u.length;k<l;k++)Ha(r,e?e[k]:null);mb(r,g.aoColumnDefs,u,function(a,b){la(r,a,b)});if(z.length){var B=function(a,b){return null!==a.getAttribute("data-"+b)?b:null};f(z[0]).children("th, td").each(function(a,b){var c=r.aoColumns[a];if(c.mData===a){var d=B(b,"sort")||B(b,"order");b=B(b,"filter")||B(b,"search");if(null!==d||null!==b)c.mData={_:a+".display",sort:null!==d?a+".@data-"+d:n,type:null!==d?a+".@data-"+d:n,filter:null!==b?a+".@data-"+b:n},la(r,a)}})}var C=r.oFeatures;e=function(){if(g.aaSorting===
-n){var a=r.aaSorting;k=0;for(l=a.length;k<l;k++)a[k][1]=r.aoColumns[k].asSorting[0]}za(r);C.bSort&&D(r,"aoDrawCallback",function(){if(r.bSorted){var a=X(r),b={};f.each(a,function(a,c){b[c.src]=c.dir});A(r,null,"order",[r,a,b]);Mb(r)}});D(r,"aoDrawCallback",function(){(r.bSorted||"ssp"===I(r)||C.bDeferRender)&&za(r)},"sc");a=v.children("caption").each(function(){this._captionSide=f(this).css("caption-side")});var b=v.children("thead");0===b.length&&(b=f("<thead/>").appendTo(v));r.nTHead=b[0];b=v.children("tbody");
-0===b.length&&(b=f("<tbody/>").appendTo(v));r.nTBody=b[0];b=v.children("tfoot");0===b.length&&0<a.length&&(""!==r.oScroll.sX||""!==r.oScroll.sY)&&(b=f("<tfoot/>").appendTo(v));0===b.length||0===b.children().length?v.addClass(x.sNoFooter):0<b.length&&(r.nTFoot=b[0],ea(r.aoFooter,r.nTFoot));if(g.aaData)for(k=0;k<g.aaData.length;k++)R(r,g.aaData[k]);else(r.bDeferLoading||"dom"==I(r))&&oa(r,f(r.nTBody).children("tr"));r.aiDisplay=r.aiDisplayMaster.slice();r.bInitialised=!0;!1===m&&ia(r)};g.bStateSave?
-(C.bStateSave=!0,D(r,"aoDrawCallback",Aa,"state_save"),Nb(r,g,e)):e()}});b=null;return this},C,t,z,bb={},Qb=/[\r\n\u2028]/g,Da=/<.*?>/g,cc=/^\d{2,4}[\.\/\-]\d{1,2}[\.\/\-]\d{1,2}([T ]{1}\d{1,2}[:\.]\d{2}([\.:]\d{2})?)?$/,dc=/(\/|\.|\*|\+|\?|\||\(|\)|\[|\]|\{|\}|\\|\$|\^|\-)/g,ab=/[',$£€¥%\u2009\u202F\u20BD\u20a9\u20BArfkɃΞ]/gi,P=function(a){return a&&!0!==a&&"-"!==a?!1:!0},Rb=function(a){var b=parseInt(a,10);return!isNaN(b)&&isFinite(a)?b:null},Sb=function(a,b){bb[b]||(bb[b]=new RegExp(Ta(b),"g"));
-return"string"===typeof a&&"."!==b?a.replace(/\./g,"").replace(bb[b],"."):a},cb=function(a,b,c){var d="string"===typeof a;if(P(a))return!0;b&&d&&(a=Sb(a,b));c&&d&&(a=a.replace(ab,""));return!isNaN(parseFloat(a))&&isFinite(a)},Tb=function(a,b,c){return P(a)?!0:P(a)||"string"===typeof a?cb(a.replace(Da,""),b,c)?!0:null:null},K=function(a,b,c){var d=[],e=0,h=a.length;if(c!==n)for(;e<h;e++)a[e]&&a[e][b]&&d.push(a[e][b][c]);else for(;e<h;e++)a[e]&&d.push(a[e][b]);return d},ka=function(a,b,c,d){var e=[],
-h=0,g=b.length;if(d!==n)for(;h<g;h++)a[b[h]][c]&&e.push(a[b[h]][c][d]);else for(;h<g;h++)e.push(a[b[h]][c]);return e},Y=function(a,b){var c=[];if(b===n){b=0;var d=a}else d=b,b=a;for(a=b;a<d;a++)c.push(a);return c},Ub=function(a){for(var b=[],c=0,d=a.length;c<d;c++)a[c]&&b.push(a[c]);return b},sa=function(a){a:{if(!(2>a.length)){var b=a.slice().sort();for(var c=b[0],d=1,e=b.length;d<e;d++){if(b[d]===c){b=!1;break a}c=b[d]}}b=!0}if(b)return a.slice();b=[];e=a.length;var h,g=0;d=0;a:for(;d<e;d++){c=
-a[d];for(h=0;h<g;h++)if(b[h]===c)continue a;b.push(c);g++}return b};q.util={throttle:function(a,b){var c=b!==n?b:200,d,e;return function(){var b=this,g=+new Date,f=arguments;d&&g<d+c?(clearTimeout(e),e=setTimeout(function(){d=n;a.apply(b,f)},c)):(d=g,a.apply(b,f))}},escapeRegex:function(a){return a.replace(dc,"\\$1")}};var E=function(a,b,c){a[b]!==n&&(a[c]=a[b])},ca=/\[.*?\]$/,W=/\(\)$/,Ta=q.util.escapeRegex,xa=f("<div>")[0],$b=xa.textContent!==n,bc=/<.*?>/g,Ra=q.util.throttle,Vb=[],G=Array.prototype,
-ec=function(a){var b,c=q.settings,d=f.map(c,function(a,b){return a.nTable});if(a){if(a.nTable&&a.oApi)return[a];if(a.nodeName&&"table"===a.nodeName.toLowerCase()){var e=f.inArray(a,d);return-1!==e?[c[e]]:null}if(a&&"function"===typeof a.settings)return a.settings().toArray();"string"===typeof a?b=f(a):a instanceof f&&(b=a)}else return[];if(b)return b.map(function(a){e=f.inArray(this,d);return-1!==e?c[e]:null}).toArray()};var x=function(a,b){if(!(this instanceof x))return new x(a,b);var c=[],d=function(a){(a=
-ec(a))&&c.push.apply(c,a)};if(f.isArray(a))for(var e=0,h=a.length;e<h;e++)d(a[e]);else d(a);this.context=sa(c);b&&f.merge(this,b);this.selector={rows:null,cols:null,opts:null};x.extend(this,this,Vb)};q.Api=x;f.extend(x.prototype,{any:function(){return 0!==this.count()},concat:G.concat,context:[],count:function(){return this.flatten().length},each:function(a){for(var b=0,c=this.length;b<c;b++)a.call(this,this[b],b,this);return this},eq:function(a){var b=this.context;return b.length>a?new x(b[a],this[a]):
-null},filter:function(a){var b=[];if(G.filter)b=G.filter.call(this,a,this);else for(var c=0,d=this.length;c<d;c++)a.call(this,this[c],c,this)&&b.push(this[c]);return new x(this.context,b)},flatten:function(){var a=[];return new x(this.context,a.concat.apply(a,this.toArray()))},join:G.join,indexOf:G.indexOf||function(a,b){b=b||0;for(var c=this.length;b<c;b++)if(this[b]===a)return b;return-1},iterator:function(a,b,c,d){var e=[],h,g,f=this.context,l,m=this.selector;"string"===typeof a&&(d=c,c=b,b=a,
-a=!1);var p=0;for(h=f.length;p<h;p++){var q=new x(f[p]);if("table"===b){var u=c.call(q,f[p],p);u!==n&&e.push(u)}else if("columns"===b||"rows"===b)u=c.call(q,f[p],this[p],p),u!==n&&e.push(u);else if("column"===b||"column-rows"===b||"row"===b||"cell"===b){var t=this[p];"column-rows"===b&&(l=Ea(f[p],m.opts));var w=0;for(g=t.length;w<g;w++)u=t[w],u="cell"===b?c.call(q,f[p],u.row,u.column,p,w):c.call(q,f[p],u,p,w,l),u!==n&&e.push(u)}}return e.length||d?(a=new x(f,a?e.concat.apply([],e):e),b=a.selector,
-b.rows=m.rows,b.cols=m.cols,b.opts=m.opts,a):this},lastIndexOf:G.lastIndexOf||function(a,b){return this.indexOf.apply(this.toArray.reverse(),arguments)},length:0,map:function(a){var b=[];if(G.map)b=G.map.call(this,a,this);else for(var c=0,d=this.length;c<d;c++)b.push(a.call(this,this[c],c));return new x(this.context,b)},pluck:function(a){return this.map(function(b){return b[a]})},pop:G.pop,push:G.push,reduce:G.reduce||function(a,b){return lb(this,a,b,0,this.length,1)},reduceRight:G.reduceRight||function(a,
-b){return lb(this,a,b,this.length-1,-1,-1)},reverse:G.reverse,selector:null,shift:G.shift,slice:function(){return new x(this.context,this)},sort:G.sort,splice:G.splice,toArray:function(){return G.slice.call(this)},to$:function(){return f(this)},toJQuery:function(){return f(this)},unique:function(){return new x(this.context,sa(this))},unshift:G.unshift});x.extend=function(a,b,c){if(c.length&&b&&(b instanceof x||b.__dt_wrapper)){var d,e=function(a,b,c){return function(){var d=b.apply(a,arguments);x.extend(d,
-d,c.methodExt);return d}};var h=0;for(d=c.length;h<d;h++){var f=c[h];b[f.name]="function"===f.type?e(a,f.val,f):"object"===f.type?{}:f.val;b[f.name].__dt_wrapper=!0;x.extend(a,b[f.name],f.propExt)}}};x.register=t=function(a,b){if(f.isArray(a))for(var c=0,d=a.length;c<d;c++)x.register(a[c],b);else{d=a.split(".");var e=Vb,h;a=0;for(c=d.length;a<c;a++){var g=(h=-1!==d[a].indexOf("()"))?d[a].replace("()",""):d[a];a:{var k=0;for(var l=e.length;k<l;k++)if(e[k].name===g){k=e[k];break a}k=null}k||(k={name:g,
-val:{},methodExt:[],propExt:[],type:"object"},e.push(k));a===c-1?(k.val=b,k.type="function"===typeof b?"function":f.isPlainObject(b)?"object":"other"):e=h?k.methodExt:k.propExt}}};x.registerPlural=z=function(a,b,c){x.register(a,c);x.register(b,function(){var a=c.apply(this,arguments);return a===this?this:a instanceof x?a.length?f.isArray(a[0])?new x(a.context,a[0]):a[0]:n:a})};var Wb=function(a,b){if(f.isArray(a))return f.map(a,function(a){return Wb(a,b)});if("number"===typeof a)return[b[a]];var c=
-f.map(b,function(a,b){return a.nTable});return f(c).filter(a).map(function(a){a=f.inArray(this,c);return b[a]}).toArray()};t("tables()",function(a){return a!==n&&null!==a?new x(Wb(a,this.context)):this});t("table()",function(a){a=this.tables(a);var b=a.context;return b.length?new x(b[0]):a});z("tables().nodes()","table().node()",function(){return this.iterator("table",function(a){return a.nTable},1)});z("tables().body()","table().body()",function(){return this.iterator("table",function(a){return a.nTBody},
-1)});z("tables().header()","table().header()",function(){return this.iterator("table",function(a){return a.nTHead},1)});z("tables().footer()","table().footer()",function(){return this.iterator("table",function(a){return a.nTFoot},1)});z("tables().containers()","table().container()",function(){return this.iterator("table",function(a){return a.nTableWrapper},1)});t("draw()",function(a){return this.iterator("table",function(b){"page"===a?S(b):("string"===typeof a&&(a="full-hold"===a?!1:!0),U(b,!1===
-a))})});t("page()",function(a){return a===n?this.page.info().page:this.iterator("table",function(b){Wa(b,a)})});t("page.info()",function(a){if(0===this.context.length)return n;a=this.context[0];var b=a._iDisplayStart,c=a.oFeatures.bPaginate?a._iDisplayLength:-1,d=a.fnRecordsDisplay(),e=-1===c;return{page:e?0:Math.floor(b/c),pages:e?1:Math.ceil(d/c),start:b,end:a.fnDisplayEnd(),length:c,recordsTotal:a.fnRecordsTotal(),recordsDisplay:d,serverSide:"ssp"===I(a)}});t("page.len()",function(a){return a===
-n?0!==this.context.length?this.context[0]._iDisplayLength:n:this.iterator("table",function(b){Ua(b,a)})});var Xb=function(a,b,c){if(c){var d=new x(a);d.one("draw",function(){c(d.ajax.json())})}if("ssp"==I(a))U(a,b);else{J(a,!0);var e=a.jqXHR;e&&4!==e.readyState&&e.abort();ua(a,[],function(c){pa(a);c=va(a,c);for(var d=0,e=c.length;d<e;d++)R(a,c[d]);U(a,b);J(a,!1)})}};t("ajax.json()",function(){var a=this.context;if(0<a.length)return a[0].json});t("ajax.params()",function(){var a=this.context;if(0<
-a.length)return a[0].oAjaxData});t("ajax.reload()",function(a,b){return this.iterator("table",function(c){Xb(c,!1===b,a)})});t("ajax.url()",function(a){var b=this.context;if(a===n){if(0===b.length)return n;b=b[0];return b.ajax?f.isPlainObject(b.ajax)?b.ajax.url:b.ajax:b.sAjaxSource}return this.iterator("table",function(b){f.isPlainObject(b.ajax)?b.ajax.url=a:b.ajax=a})});t("ajax.url().load()",function(a,b){return this.iterator("table",function(c){Xb(c,!1===b,a)})});var db=function(a,b,c,d,e){var h=
-[],g,k,l;var m=typeof b;b&&"string"!==m&&"function"!==m&&b.length!==n||(b=[b]);m=0;for(k=b.length;m<k;m++){var p=b[m]&&b[m].split&&!b[m].match(/[\[\(:]/)?b[m].split(","):[b[m]];var q=0;for(l=p.length;q<l;q++)(g=c("string"===typeof p[q]?f.trim(p[q]):p[q]))&&g.length&&(h=h.concat(g))}a=C.selector[a];if(a.length)for(m=0,k=a.length;m<k;m++)h=a[m](d,e,h);return sa(h)},eb=function(a){a||(a={});a.filter&&a.search===n&&(a.search=a.filter);return f.extend({search:"none",order:"current",page:"all"},a)},fb=
-function(a){for(var b=0,c=a.length;b<c;b++)if(0<a[b].length)return a[0]=a[b],a[0].length=1,a.length=1,a.context=[a.context[b]],a;a.length=0;return a},Ea=function(a,b){var c=[],d=a.aiDisplay;var e=a.aiDisplayMaster;var h=b.search;var g=b.order;b=b.page;if("ssp"==I(a))return"removed"===h?[]:Y(0,e.length);if("current"==b)for(g=a._iDisplayStart,a=a.fnDisplayEnd();g<a;g++)c.push(d[g]);else if("current"==g||"applied"==g)if("none"==h)c=e.slice();else if("applied"==h)c=d.slice();else{if("removed"==h){var k=
-{};g=0;for(a=d.length;g<a;g++)k[d[g]]=null;c=f.map(e,function(a){return k.hasOwnProperty(a)?null:a})}}else if("index"==g||"original"==g)for(g=0,a=a.aoData.length;g<a;g++)"none"==h?c.push(g):(e=f.inArray(g,d),(-1===e&&"removed"==h||0<=e&&"applied"==h)&&c.push(g));return c},fc=function(a,b,c){var d;return db("row",b,function(b){var e=Rb(b),g=a.aoData;if(null!==e&&!c)return[e];d||(d=Ea(a,c));if(null!==e&&-1!==f.inArray(e,d))return[e];if(null===b||b===n||""===b)return d;if("function"===typeof b)return f.map(d,
-function(a){var c=g[a];return b(a,c._aData,c.nTr)?a:null});if(b.nodeName){e=b._DT_RowIndex;var k=b._DT_CellIndex;if(e!==n)return g[e]&&g[e].nTr===b?[e]:[];if(k)return g[k.row]&&g[k.row].nTr===b.parentNode?[k.row]:[];e=f(b).closest("*[data-dt-row]");return e.length?[e.data("dt-row")]:[]}if("string"===typeof b&&"#"===b.charAt(0)&&(e=a.aIds[b.replace(/^#/,"")],e!==n))return[e.idx];e=Ub(ka(a.aoData,d,"nTr"));return f(e).filter(b).map(function(){return this._DT_RowIndex}).toArray()},a,c)};t("rows()",function(a,
-b){a===n?a="":f.isPlainObject(a)&&(b=a,a="");b=eb(b);var c=this.iterator("table",function(c){return fc(c,a,b)},1);c.selector.rows=a;c.selector.opts=b;return c});t("rows().nodes()",function(){return this.iterator("row",function(a,b){return a.aoData[b].nTr||n},1)});t("rows().data()",function(){return this.iterator(!0,"rows",function(a,b){return ka(a.aoData,b,"_aData")},1)});z("rows().cache()","row().cache()",function(a){return this.iterator("row",function(b,c){b=b.aoData[c];return"search"===a?b._aFilterData:
-b._aSortData},1)});z("rows().invalidate()","row().invalidate()",function(a){return this.iterator("row",function(b,c){da(b,c,a)})});z("rows().indexes()","row().index()",function(){return this.iterator("row",function(a,b){return b},1)});z("rows().ids()","row().id()",function(a){for(var b=[],c=this.context,d=0,e=c.length;d<e;d++)for(var f=0,g=this[d].length;f<g;f++){var k=c[d].rowIdFn(c[d].aoData[this[d][f]]._aData);b.push((!0===a?"#":"")+k)}return new x(c,b)});z("rows().remove()","row().remove()",function(){var a=
-this;this.iterator("row",function(b,c,d){var e=b.aoData,f=e[c],g,k;e.splice(c,1);var l=0;for(g=e.length;l<g;l++){var m=e[l];var p=m.anCells;null!==m.nTr&&(m.nTr._DT_RowIndex=l);if(null!==p)for(m=0,k=p.length;m<k;m++)p[m]._DT_CellIndex.row=l}qa(b.aiDisplayMaster,c);qa(b.aiDisplay,c);qa(a[d],c,!1);0<b._iRecordsDisplay&&b._iRecordsDisplay--;Va(b);c=b.rowIdFn(f._aData);c!==n&&delete b.aIds[c]});this.iterator("table",function(a){for(var b=0,d=a.aoData.length;b<d;b++)a.aoData[b].idx=b});return this});t("rows.add()",
-function(a){var b=this.iterator("table",function(b){var c,d=[];var f=0;for(c=a.length;f<c;f++){var k=a[f];k.nodeName&&"TR"===k.nodeName.toUpperCase()?d.push(oa(b,k)[0]):d.push(R(b,k))}return d},1),c=this.rows(-1);c.pop();f.merge(c,b);return c});t("row()",function(a,b){return fb(this.rows(a,b))});t("row().data()",function(a){var b=this.context;if(a===n)return b.length&&this.length?b[0].aoData[this[0]]._aData:n;var c=b[0].aoData[this[0]];c._aData=a;f.isArray(a)&&c.nTr&&c.nTr.id&&Q(b[0].rowId)(a,c.nTr.id);
-da(b[0],this[0],"data");return this});t("row().node()",function(){var a=this.context;return a.length&&this.length?a[0].aoData[this[0]].nTr||null:null});t("row.add()",function(a){a instanceof f&&a.length&&(a=a[0]);var b=this.iterator("table",function(b){return a.nodeName&&"TR"===a.nodeName.toUpperCase()?oa(b,a)[0]:R(b,a)});return this.row(b[0])});var gc=function(a,b,c,d){var e=[],h=function(b,c){if(f.isArray(b)||b instanceof f)for(var d=0,g=b.length;d<g;d++)h(b[d],c);else b.nodeName&&"tr"===b.nodeName.toLowerCase()?
-e.push(b):(d=f("<tr><td/></tr>").addClass(c),f("td",d).addClass(c).html(b)[0].colSpan=V(a),e.push(d[0]))};h(c,d);b._details&&b._details.detach();b._details=f(e);b._detailsShow&&b._details.insertAfter(b.nTr)},gb=function(a,b){var c=a.context;c.length&&(a=c[0].aoData[b!==n?b:a[0]])&&a._details&&(a._details.remove(),a._detailsShow=n,a._details=n)},Yb=function(a,b){var c=a.context;c.length&&a.length&&(a=c[0].aoData[a[0]],a._details&&((a._detailsShow=b)?a._details.insertAfter(a.nTr):a._details.detach(),
-hc(c[0])))},hc=function(a){var b=new x(a),c=a.aoData;b.off("draw.dt.DT_details column-visibility.dt.DT_details destroy.dt.DT_details");0<K(c,"_details").length&&(b.on("draw.dt.DT_details",function(d,e){a===e&&b.rows({page:"current"}).eq(0).each(function(a){a=c[a];a._detailsShow&&a._details.insertAfter(a.nTr)})}),b.on("column-visibility.dt.DT_details",function(b,e,f,g){if(a===e)for(e=V(e),f=0,g=c.length;f<g;f++)b=c[f],b._details&&b._details.children("td[colspan]").attr("colspan",e)}),b.on("destroy.dt.DT_details",
-function(d,e){if(a===e)for(d=0,e=c.length;d<e;d++)c[d]._details&&gb(b,d)}))};t("row().child()",function(a,b){var c=this.context;if(a===n)return c.length&&this.length?c[0].aoData[this[0]]._details:n;!0===a?this.child.show():!1===a?gb(this):c.length&&this.length&&gc(c[0],c[0].aoData[this[0]],a,b);return this});t(["row().child.show()","row().child().show()"],function(a){Yb(this,!0);return this});t(["row().child.hide()","row().child().hide()"],function(){Yb(this,!1);return this});t(["row().child.remove()",
-"row().child().remove()"],function(){gb(this);return this});t("row().child.isShown()",function(){var a=this.context;return a.length&&this.length?a[0].aoData[this[0]]._detailsShow||!1:!1});var ic=/^([^:]+):(name|visIdx|visible)$/,Zb=function(a,b,c,d,e){c=[];d=0;for(var f=e.length;d<f;d++)c.push(F(a,e[d],b));return c},jc=function(a,b,c){var d=a.aoColumns,e=K(d,"sName"),h=K(d,"nTh");return db("column",b,function(b){var g=Rb(b);if(""===b)return Y(d.length);if(null!==g)return[0<=g?g:d.length+g];if("function"===
-typeof b){var l=Ea(a,c);return f.map(d,function(c,d){return b(d,Zb(a,d,0,0,l),h[d])?d:null})}var m="string"===typeof b?b.match(ic):"";if(m)switch(m[2]){case "visIdx":case "visible":g=parseInt(m[1],10);if(0>g){var p=f.map(d,function(a,b){return a.bVisible?b:null});return[p[p.length+g]]}return[aa(a,g)];case "name":return f.map(e,function(a,b){return a===m[1]?b:null});default:return[]}if(b.nodeName&&b._DT_CellIndex)return[b._DT_CellIndex.column];g=f(h).filter(b).map(function(){return f.inArray(this,
-h)}).toArray();if(g.length||!b.nodeName)return g;g=f(b).closest("*[data-dt-column]");return g.length?[g.data("dt-column")]:[]},a,c)};t("columns()",function(a,b){a===n?a="":f.isPlainObject(a)&&(b=a,a="");b=eb(b);var c=this.iterator("table",function(c){return jc(c,a,b)},1);c.selector.cols=a;c.selector.opts=b;return c});z("columns().header()","column().header()",function(a,b){return this.iterator("column",function(a,b){return a.aoColumns[b].nTh},1)});z("columns().footer()","column().footer()",function(a,
-b){return this.iterator("column",function(a,b){return a.aoColumns[b].nTf},1)});z("columns().data()","column().data()",function(){return this.iterator("column-rows",Zb,1)});z("columns().dataSrc()","column().dataSrc()",function(){return this.iterator("column",function(a,b){return a.aoColumns[b].mData},1)});z("columns().cache()","column().cache()",function(a){return this.iterator("column-rows",function(b,c,d,e,f){return ka(b.aoData,f,"search"===a?"_aFilterData":"_aSortData",c)},1)});z("columns().nodes()",
-"column().nodes()",function(){return this.iterator("column-rows",function(a,b,c,d,e){return ka(a.aoData,e,"anCells",b)},1)});z("columns().visible()","column().visible()",function(a,b){var c=this,d=this.iterator("column",function(b,c){if(a===n)return b.aoColumns[c].bVisible;var d=b.aoColumns,e=d[c],h=b.aoData,m;if(a!==n&&e.bVisible!==a){if(a){var p=f.inArray(!0,K(d,"bVisible"),c+1);d=0;for(m=h.length;d<m;d++){var q=h[d].nTr;b=h[d].anCells;q&&q.insertBefore(b[c],b[p]||null)}}else f(K(b.aoData,"anCells",
-c)).detach();e.bVisible=a}});a!==n&&this.iterator("table",function(d){fa(d,d.aoHeader);fa(d,d.aoFooter);d.aiDisplay.length||f(d.nTBody).find("td[colspan]").attr("colspan",V(d));Aa(d);c.iterator("column",function(c,d){A(c,null,"column-visibility",[c,d,a,b])});(b===n||b)&&c.columns.adjust()});return d});z("columns().indexes()","column().index()",function(a){return this.iterator("column",function(b,c){return"visible"===a?ba(b,c):c},1)});t("columns.adjust()",function(){return this.iterator("table",function(a){Z(a)},
-1)});t("column.index()",function(a,b){if(0!==this.context.length){var c=this.context[0];if("fromVisible"===a||"toData"===a)return aa(c,b);if("fromData"===a||"toVisible"===a)return ba(c,b)}});t("column()",function(a,b){return fb(this.columns(a,b))});var kc=function(a,b,c){var d=a.aoData,e=Ea(a,c),h=Ub(ka(d,e,"anCells")),g=f([].concat.apply([],h)),k,l=a.aoColumns.length,m,p,q,u,t,w;return db("cell",b,function(b){var c="function"===typeof b;if(null===b||b===n||c){m=[];p=0;for(q=e.length;p<q;p++)for(k=
-e[p],u=0;u<l;u++)t={row:k,column:u},c?(w=d[k],b(t,F(a,k,u),w.anCells?w.anCells[u]:null)&&m.push(t)):m.push(t);return m}if(f.isPlainObject(b))return b.column!==n&&b.row!==n&&-1!==f.inArray(b.row,e)?[b]:[];c=g.filter(b).map(function(a,b){return{row:b._DT_CellIndex.row,column:b._DT_CellIndex.column}}).toArray();if(c.length||!b.nodeName)return c;w=f(b).closest("*[data-dt-row]");return w.length?[{row:w.data("dt-row"),column:w.data("dt-column")}]:[]},a,c)};t("cells()",function(a,b,c){f.isPlainObject(a)&&
-(a.row===n?(c=a,a=null):(c=b,b=null));f.isPlainObject(b)&&(c=b,b=null);if(null===b||b===n)return this.iterator("table",function(b){return kc(b,a,eb(c))});var d=c?{page:c.page,order:c.order,search:c.search}:{},e=this.columns(b,d),h=this.rows(a,d),g,k,l,m;d=this.iterator("table",function(a,b){a=[];g=0;for(k=h[b].length;g<k;g++)for(l=0,m=e[b].length;l<m;l++)a.push({row:h[b][g],column:e[b][l]});return a},1);d=c&&c.selected?this.cells(d,c):d;f.extend(d.selector,{cols:b,rows:a,opts:c});return d});z("cells().nodes()",
-"cell().node()",function(){return this.iterator("cell",function(a,b,c){return(a=a.aoData[b])&&a.anCells?a.anCells[c]:n},1)});t("cells().data()",function(){return this.iterator("cell",function(a,b,c){return F(a,b,c)},1)});z("cells().cache()","cell().cache()",function(a){a="search"===a?"_aFilterData":"_aSortData";return this.iterator("cell",function(b,c,d){return b.aoData[c][a][d]},1)});z("cells().render()","cell().render()",function(a){return this.iterator("cell",function(b,c,d){return F(b,c,d,a)},
-1)});z("cells().indexes()","cell().index()",function(){return this.iterator("cell",function(a,b,c){return{row:b,column:c,columnVisible:ba(a,c)}},1)});z("cells().invalidate()","cell().invalidate()",function(a){return this.iterator("cell",function(b,c,d){da(b,c,a,d)})});t("cell()",function(a,b,c){return fb(this.cells(a,b,c))});t("cell().data()",function(a){var b=this.context,c=this[0];if(a===n)return b.length&&c.length?F(b[0],c[0].row,c[0].column):n;nb(b[0],c[0].row,c[0].column,a);da(b[0],c[0].row,
-"data",c[0].column);return this});t("order()",function(a,b){var c=this.context;if(a===n)return 0!==c.length?c[0].aaSorting:n;"number"===typeof a?a=[[a,b]]:a.length&&!f.isArray(a[0])&&(a=Array.prototype.slice.call(arguments));return this.iterator("table",function(b){b.aaSorting=a.slice()})});t("order.listener()",function(a,b,c){return this.iterator("table",function(d){Pa(d,a,b,c)})});t("order.fixed()",function(a){if(!a){var b=this.context;b=b.length?b[0].aaSortingFixed:n;return f.isArray(b)?{pre:b}:
-b}return this.iterator("table",function(b){b.aaSortingFixed=f.extend(!0,{},a)})});t(["columns().order()","column().order()"],function(a){var b=this;return this.iterator("table",function(c,d){var e=[];f.each(b[d],function(b,c){e.push([c,a])});c.aaSorting=e})});t("search()",function(a,b,c,d){var e=this.context;return a===n?0!==e.length?e[0].oPreviousSearch.sSearch:n:this.iterator("table",function(e){e.oFeatures.bFilter&&ha(e,f.extend({},e.oPreviousSearch,{sSearch:a+"",bRegex:null===b?!1:b,bSmart:null===
-c?!0:c,bCaseInsensitive:null===d?!0:d}),1)})});z("columns().search()","column().search()",function(a,b,c,d){return this.iterator("column",function(e,h){var g=e.aoPreSearchCols;if(a===n)return g[h].sSearch;e.oFeatures.bFilter&&(f.extend(g[h],{sSearch:a+"",bRegex:null===b?!1:b,bSmart:null===c?!0:c,bCaseInsensitive:null===d?!0:d}),ha(e,e.oPreviousSearch,1))})});t("state()",function(){return this.context.length?this.context[0].oSavedState:null});t("state.clear()",function(){return this.iterator("table",
-function(a){a.fnStateSaveCallback.call(a.oInstance,a,{})})});t("state.loaded()",function(){return this.context.length?this.context[0].oLoadedState:null});t("state.save()",function(){return this.iterator("table",function(a){Aa(a)})});q.versionCheck=q.fnVersionCheck=function(a){var b=q.version.split(".");a=a.split(".");for(var c,d,e=0,f=a.length;e<f;e++)if(c=parseInt(b[e],10)||0,d=parseInt(a[e],10)||0,c!==d)return c>d;return!0};q.isDataTable=q.fnIsDataTable=function(a){var b=f(a).get(0),c=!1;if(a instanceof
-q.Api)return!0;f.each(q.settings,function(a,e){a=e.nScrollHead?f("table",e.nScrollHead)[0]:null;var d=e.nScrollFoot?f("table",e.nScrollFoot)[0]:null;if(e.nTable===b||a===b||d===b)c=!0});return c};q.tables=q.fnTables=function(a){var b=!1;f.isPlainObject(a)&&(b=a.api,a=a.visible);var c=f.map(q.settings,function(b){if(!a||a&&f(b.nTable).is(":visible"))return b.nTable});return b?new x(c):c};q.camelToHungarian=L;t("$()",function(a,b){b=this.rows(b).nodes();b=f(b);return f([].concat(b.filter(a).toArray(),
-b.find(a).toArray()))});f.each(["on","one","off"],function(a,b){t(b+"()",function(){var a=Array.prototype.slice.call(arguments);a[0]=f.map(a[0].split(/\s/),function(a){return a.match(/\.dt\b/)?a:a+".dt"}).join(" ");var d=f(this.tables().nodes());d[b].apply(d,a);return this})});t("clear()",function(){return this.iterator("table",function(a){pa(a)})});t("settings()",function(){return new x(this.context,this.context)});t("init()",function(){var a=this.context;return a.length?a[0].oInit:null});t("data()",
-function(){return this.iterator("table",function(a){return K(a.aoData,"_aData")}).flatten()});t("destroy()",function(a){a=a||!1;return this.iterator("table",function(b){var c=b.nTableWrapper.parentNode,d=b.oClasses,e=b.nTable,h=b.nTBody,g=b.nTHead,k=b.nTFoot,l=f(e);h=f(h);var m=f(b.nTableWrapper),p=f.map(b.aoData,function(a){return a.nTr}),n;b.bDestroying=!0;A(b,"aoDestroyCallback","destroy",[b]);a||(new x(b)).columns().visible(!0);m.off(".DT").find(":not(tbody *)").off(".DT");f(y).off(".DT-"+b.sInstance);
-e!=g.parentNode&&(l.children("thead").detach(),l.append(g));k&&e!=k.parentNode&&(l.children("tfoot").detach(),l.append(k));b.aaSorting=[];b.aaSortingFixed=[];za(b);f(p).removeClass(b.asStripeClasses.join(" "));f("th, td",g).removeClass(d.sSortable+" "+d.sSortableAsc+" "+d.sSortableDesc+" "+d.sSortableNone);h.children().detach();h.append(p);g=a?"remove":"detach";l[g]();m[g]();!a&&c&&(c.insertBefore(e,b.nTableReinsertBefore),l.css("width",b.sDestroyWidth).removeClass(d.sTable),(n=b.asDestroyStripes.length)&&
-h.children().each(function(a){f(this).addClass(b.asDestroyStripes[a%n])}));c=f.inArray(b,q.settings);-1!==c&&q.settings.splice(c,1)})});f.each(["column","row","cell"],function(a,b){t(b+"s().every()",function(a){var c=this.selector.opts,e=this;return this.iterator(b,function(d,f,k,l,m){a.call(e[b](f,"cell"===b?k:c,"cell"===b?c:n),f,k,l,m)})})});t("i18n()",function(a,b,c){var d=this.context[0];a=T(a)(d.oLanguage);a===n&&(a=b);c!==n&&f.isPlainObject(a)&&(a=a[c]!==n?a[c]:a._);return a.replace("%d",c)});
-q.version="1.10.21";q.settings=[];q.models={};q.models.oSearch={bCaseInsensitive:!0,sSearch:"",bRegex:!1,bSmart:!0};q.models.oRow={nTr:null,anCells:null,_aData:[],_aSortData:null,_aFilterData:null,_sFilterRow:null,_sRowStripe:"",src:null,idx:-1};q.models.oColumn={idx:null,aDataSort:null,asSorting:null,bSearchable:null,bSortable:null,bVisible:null,_sManualType:null,_bAttrSrc:!1,fnCreatedCell:null,fnGetData:null,fnSetData:null,mData:null,mRender:null,nTh:null,nTf:null,sClass:null,sContentPadding:null,
-sDefaultContent:null,sName:null,sSortDataType:"std",sSortingClass:null,sSortingClassJUI:null,sTitle:null,sType:null,sWidth:null,sWidthOrig:null};q.defaults={aaData:null,aaSorting:[[0,"asc"]],aaSortingFixed:[],ajax:null,aLengthMenu:[10,25,50,100],aoColumns:null,aoColumnDefs:null,aoSearchCols:[],asStripeClasses:null,bAutoWidth:!0,bDeferRender:!1,bDestroy:!1,bFilter:!0,bInfo:!0,bLengthChange:!0,bPaginate:!0,bProcessing:!1,bRetrieve:!1,bScrollCollapse:!1,bServerSide:!1,bSort:!0,bSortMulti:!0,bSortCellsTop:!1,
-bSortClasses:!0,bStateSave:!1,fnCreatedRow:null,fnDrawCallback:null,fnFooterCallback:null,fnFormatNumber:function(a){return a.toString().replace(/\B(?=(\d{3})+(?!\d))/g,this.oLanguage.sThousands)},fnHeaderCallback:null,fnInfoCallback:null,fnInitComplete:null,fnPreDrawCallback:null,fnRowCallback:null,fnServerData:null,fnServerParams:null,fnStateLoadCallback:function(a){try{return JSON.parse((-1===a.iStateDuration?sessionStorage:localStorage).getItem("DataTables_"+a.sInstance+"_"+location.pathname))}catch(b){return{}}},
-fnStateLoadParams:null,fnStateLoaded:null,fnStateSaveCallback:function(a,b){try{(-1===a.iStateDuration?sessionStorage:localStorage).setItem("DataTables_"+a.sInstance+"_"+location.pathname,JSON.stringify(b))}catch(c){}},fnStateSaveParams:null,iStateDuration:7200,iDeferLoading:null,iDisplayLength:10,iDisplayStart:0,iTabIndex:0,oClasses:{},oLanguage:{oAria:{sSortAscending:": activate to sort column ascending",sSortDescending:": activate to sort column descending"},oPaginate:{sFirst:"First",sLast:"Last",
-sNext:"Next",sPrevious:"Previous"},sEmptyTable:"No data available in table",sInfo:"Showing _START_ to _END_ of _TOTAL_ entries",sInfoEmpty:"Showing 0 to 0 of 0 entries",sInfoFiltered:"(filtered from _MAX_ total entries)",sInfoPostFix:"",sDecimal:"",sThousands:",",sLengthMenu:"Show _MENU_ entries",sLoadingRecords:"Loading...",sProcessing:"Processing...",sSearch:"Search:",sSearchPlaceholder:"",sUrl:"",sZeroRecords:"No matching records found"},oSearch:f.extend({},q.models.oSearch),sAjaxDataProp:"data",
-sAjaxSource:null,sDom:"lfrtip",searchDelay:null,sPaginationType:"simple_numbers",sScrollX:"",sScrollXInner:"",sScrollY:"",sServerMethod:"GET",renderer:null,rowId:"DT_RowId"};H(q.defaults);q.defaults.column={aDataSort:null,iDataSort:-1,asSorting:["asc","desc"],bSearchable:!0,bSortable:!0,bVisible:!0,fnCreatedCell:null,mData:null,mRender:null,sCellType:"td",sClass:"",sContentPadding:"",sDefaultContent:null,sName:"",sSortDataType:"std",sTitle:null,sType:null,sWidth:null};H(q.defaults.column);q.models.oSettings=
-{oFeatures:{bAutoWidth:null,bDeferRender:null,bFilter:null,bInfo:null,bLengthChange:null,bPaginate:null,bProcessing:null,bServerSide:null,bSort:null,bSortMulti:null,bSortClasses:null,bStateSave:null},oScroll:{bCollapse:null,iBarWidth:0,sX:null,sXInner:null,sY:null},oLanguage:{fnInfoCallback:null},oBrowser:{bScrollOversize:!1,bScrollbarLeft:!1,bBounding:!1,barWidth:0},ajax:null,aanFeatures:[],aoData:[],aiDisplay:[],aiDisplayMaster:[],aIds:{},aoColumns:[],aoHeader:[],aoFooter:[],oPreviousSearch:{},
-aoPreSearchCols:[],aaSorting:null,aaSortingFixed:[],asStripeClasses:null,asDestroyStripes:[],sDestroyWidth:0,aoRowCallback:[],aoHeaderCallback:[],aoFooterCallback:[],aoDrawCallback:[],aoRowCreatedCallback:[],aoPreDrawCallback:[],aoInitComplete:[],aoStateSaveParams:[],aoStateLoadParams:[],aoStateLoaded:[],sTableId:"",nTable:null,nTHead:null,nTFoot:null,nTBody:null,nTableWrapper:null,bDeferLoading:!1,bInitialised:!1,aoOpenRows:[],sDom:null,searchDelay:null,sPaginationType:"two_button",iStateDuration:0,
-aoStateSave:[],aoStateLoad:[],oSavedState:null,oLoadedState:null,sAjaxSource:null,sAjaxDataProp:null,bAjaxDataGet:!0,jqXHR:null,json:n,oAjaxData:n,fnServerData:null,aoServerParams:[],sServerMethod:null,fnFormatNumber:null,aLengthMenu:null,iDraw:0,bDrawing:!1,iDrawError:-1,_iDisplayLength:10,_iDisplayStart:0,_iRecordsTotal:0,_iRecordsDisplay:0,oClasses:{},bFiltered:!1,bSorted:!1,bSortCellsTop:null,oInit:null,aoDestroyCallback:[],fnRecordsTotal:function(){return"ssp"==I(this)?1*this._iRecordsTotal:
-this.aiDisplayMaster.length},fnRecordsDisplay:function(){return"ssp"==I(this)?1*this._iRecordsDisplay:this.aiDisplay.length},fnDisplayEnd:function(){var a=this._iDisplayLength,b=this._iDisplayStart,c=b+a,d=this.aiDisplay.length,e=this.oFeatures,f=e.bPaginate;return e.bServerSide?!1===f||-1===a?b+d:Math.min(b+a,this._iRecordsDisplay):!f||c>d||-1===a?d:c},oInstance:null,sInstance:null,iTabIndex:0,nScrollHead:null,nScrollFoot:null,aLastSort:[],oPlugins:{},rowIdFn:null,rowId:null};q.ext=C={buttons:{},
-classes:{},builder:"-source-",errMode:"alert",feature:[],search:[],selector:{cell:[],column:[],row:[]},internal:{},legacy:{ajax:null},pager:{},renderer:{pageButton:{},header:{}},order:{},type:{detect:[],search:{},order:{}},_unique:0,fnVersionCheck:q.fnVersionCheck,iApiIndex:0,oJUIClasses:{},sVersion:q.version};f.extend(C,{afnFiltering:C.search,aTypes:C.type.detect,ofnSearch:C.type.search,oSort:C.type.order,afnSortData:C.order,aoFeatures:C.feature,oApi:C.internal,oStdClasses:C.classes,oPagination:C.pager});
-f.extend(q.ext.classes,{sTable:"dataTable",sNoFooter:"no-footer",sPageButton:"paginate_button",sPageButtonActive:"current",sPageButtonDisabled:"disabled",sStripeOdd:"odd",sStripeEven:"even",sRowEmpty:"dataTables_empty",sWrapper:"dataTables_wrapper",sFilter:"dataTables_filter",sInfo:"dataTables_info",sPaging:"dataTables_paginate paging_",sLength:"dataTables_length",sProcessing:"dataTables_processing",sSortAsc:"sorting_asc",sSortDesc:"sorting_desc",sSortable:"sorting",sSortableAsc:"sorting_asc_disabled",
-sSortableDesc:"sorting_desc_disabled",sSortableNone:"sorting_disabled",sSortColumn:"sorting_",sFilterInput:"",sLengthSelect:"",sScrollWrapper:"dataTables_scroll",sScrollHead:"dataTables_scrollHead",sScrollHeadInner:"dataTables_scrollHeadInner",sScrollBody:"dataTables_scrollBody",sScrollFoot:"dataTables_scrollFoot",sScrollFootInner:"dataTables_scrollFootInner",sHeaderTH:"",sFooterTH:"",sSortJUIAsc:"",sSortJUIDesc:"",sSortJUI:"",sSortJUIAscAllowed:"",sSortJUIDescAllowed:"",sSortJUIWrapper:"",sSortIcon:"",
-sJUIHeader:"",sJUIFooter:""});var Ob=q.ext.pager;f.extend(Ob,{simple:function(a,b){return["previous","next"]},full:function(a,b){return["first","previous","next","last"]},numbers:function(a,b){return[ja(a,b)]},simple_numbers:function(a,b){return["previous",ja(a,b),"next"]},full_numbers:function(a,b){return["first","previous",ja(a,b),"next","last"]},first_last_numbers:function(a,b){return["first",ja(a,b),"last"]},_numbers:ja,numbers_length:7});f.extend(!0,q.ext.renderer,{pageButton:{_:function(a,b,
-c,d,e,h){var g=a.oClasses,k=a.oLanguage.oPaginate,l=a.oLanguage.oAria.paginate||{},m,p,q=0,t=function(b,d){var n,r=g.sPageButtonDisabled,u=function(b){Wa(a,b.data.action,!0)};var w=0;for(n=d.length;w<n;w++){var v=d[w];if(f.isArray(v)){var x=f("<"+(v.DT_el||"div")+"/>").appendTo(b);t(x,v)}else{m=null;p=v;x=a.iTabIndex;switch(v){case "ellipsis":b.append('<span class="ellipsis">&#x2026;</span>');break;case "first":m=k.sFirst;0===e&&(x=-1,p+=" "+r);break;case "previous":m=k.sPrevious;0===e&&(x=-1,p+=
-" "+r);break;case "next":m=k.sNext;if(0===h||e===h-1)x=-1,p+=" "+r;break;case "last":m=k.sLast;e===h-1&&(x=-1,p+=" "+r);break;default:m=v+1,p=e===v?g.sPageButtonActive:""}null!==m&&(x=f("<a>",{"class":g.sPageButton+" "+p,"aria-controls":a.sTableId,"aria-label":l[v],"data-dt-idx":q,tabindex:x,id:0===c&&"string"===typeof v?a.sTableId+"_"+v:null}).html(m).appendTo(b),Za(x,{action:v},u),q++)}}};try{var x=f(b).find(w.activeElement).data("dt-idx")}catch(lc){}t(f(b).empty(),d);x!==n&&f(b).find("[data-dt-idx="+
-x+"]").trigger("focus")}}});f.extend(q.ext.type.detect,[function(a,b){b=b.oLanguage.sDecimal;return cb(a,b)?"num"+b:null},function(a,b){if(a&&!(a instanceof Date)&&!cc.test(a))return null;b=Date.parse(a);return null!==b&&!isNaN(b)||P(a)?"date":null},function(a,b){b=b.oLanguage.sDecimal;return cb(a,b,!0)?"num-fmt"+b:null},function(a,b){b=b.oLanguage.sDecimal;return Tb(a,b)?"html-num"+b:null},function(a,b){b=b.oLanguage.sDecimal;return Tb(a,b,!0)?"html-num-fmt"+b:null},function(a,b){return P(a)||"string"===
-typeof a&&-1!==a.indexOf("<")?"html":null}]);f.extend(q.ext.type.search,{html:function(a){return P(a)?a:"string"===typeof a?a.replace(Qb," ").replace(Da,""):""},string:function(a){return P(a)?a:"string"===typeof a?a.replace(Qb," "):a}});var Ca=function(a,b,c,d){if(0!==a&&(!a||"-"===a))return-Infinity;b&&(a=Sb(a,b));a.replace&&(c&&(a=a.replace(c,"")),d&&(a=a.replace(d,"")));return 1*a};f.extend(C.type.order,{"date-pre":function(a){a=Date.parse(a);return isNaN(a)?-Infinity:a},"html-pre":function(a){return P(a)?
-"":a.replace?a.replace(/<.*?>/g,"").toLowerCase():a+""},"string-pre":function(a){return P(a)?"":"string"===typeof a?a.toLowerCase():a.toString?a.toString():""},"string-asc":function(a,b){return a<b?-1:a>b?1:0},"string-desc":function(a,b){return a<b?1:a>b?-1:0}});Ga("");f.extend(!0,q.ext.renderer,{header:{_:function(a,b,c,d){f(a.nTable).on("order.dt.DT",function(e,f,g,k){a===f&&(e=c.idx,b.removeClass(c.sSortingClass+" "+d.sSortAsc+" "+d.sSortDesc).addClass("asc"==k[e]?d.sSortAsc:"desc"==k[e]?d.sSortDesc:
-c.sSortingClass))})},jqueryui:function(a,b,c,d){f("<div/>").addClass(d.sSortJUIWrapper).append(b.contents()).append(f("<span/>").addClass(d.sSortIcon+" "+c.sSortingClassJUI)).appendTo(b);f(a.nTable).on("order.dt.DT",function(e,f,g,k){a===f&&(e=c.idx,b.removeClass(d.sSortAsc+" "+d.sSortDesc).addClass("asc"==k[e]?d.sSortAsc:"desc"==k[e]?d.sSortDesc:c.sSortingClass),b.find("span."+d.sSortIcon).removeClass(d.sSortJUIAsc+" "+d.sSortJUIDesc+" "+d.sSortJUI+" "+d.sSortJUIAscAllowed+" "+d.sSortJUIDescAllowed).addClass("asc"==
-k[e]?d.sSortJUIAsc:"desc"==k[e]?d.sSortJUIDesc:c.sSortingClassJUI))})}}});var hb=function(a){return"string"===typeof a?a.replace(/&/g,"&amp;").replace(/</g,"&lt;").replace(/>/g,"&gt;").replace(/"/g,"&quot;"):a};q.render={number:function(a,b,c,d,e){return{display:function(f){if("number"!==typeof f&&"string"!==typeof f)return f;var g=0>f?"-":"",h=parseFloat(f);if(isNaN(h))return hb(f);h=h.toFixed(c);f=Math.abs(h);h=parseInt(f,10);f=c?b+(f-h).toFixed(c).substring(2):"";return g+(d||"")+h.toString().replace(/\B(?=(\d{3})+(?!\d))/g,
-a)+f+(e||"")}}},text:function(){return{display:hb,filter:hb}}};f.extend(q.ext.internal,{_fnExternApiFunc:Pb,_fnBuildAjax:ua,_fnAjaxUpdate:pb,_fnAjaxParameters:yb,_fnAjaxUpdateDraw:zb,_fnAjaxDataSrc:va,_fnAddColumn:Ha,_fnColumnOptions:la,_fnAdjustColumnSizing:Z,_fnVisibleToColumnIndex:aa,_fnColumnIndexToVisible:ba,_fnVisbleColumns:V,_fnGetColumns:na,_fnColumnTypes:Ja,_fnApplyColumnDefs:mb,_fnHungarianMap:H,_fnCamelToHungarian:L,_fnLanguageCompat:Fa,_fnBrowserDetect:kb,_fnAddData:R,_fnAddTr:oa,_fnNodeToDataIndex:function(a,
-b){return b._DT_RowIndex!==n?b._DT_RowIndex:null},_fnNodeToColumnIndex:function(a,b,c){return f.inArray(c,a.aoData[b].anCells)},_fnGetCellData:F,_fnSetCellData:nb,_fnSplitObjNotation:Ma,_fnGetObjectDataFn:T,_fnSetObjectDataFn:Q,_fnGetDataMaster:Na,_fnClearTable:pa,_fnDeleteIndex:qa,_fnInvalidate:da,_fnGetRowElements:La,_fnCreateTr:Ka,_fnBuildHead:ob,_fnDrawHead:fa,_fnDraw:S,_fnReDraw:U,_fnAddOptionsHtml:rb,_fnDetectHeader:ea,_fnGetUniqueThs:ta,_fnFeatureHtmlFilter:tb,_fnFilterComplete:ha,_fnFilterCustom:Cb,
-_fnFilterColumn:Bb,_fnFilter:Ab,_fnFilterCreateSearch:Sa,_fnEscapeRegex:Ta,_fnFilterData:Db,_fnFeatureHtmlInfo:wb,_fnUpdateInfo:Gb,_fnInfoMacros:Hb,_fnInitialise:ia,_fnInitComplete:wa,_fnLengthChange:Ua,_fnFeatureHtmlLength:sb,_fnFeatureHtmlPaginate:xb,_fnPageChange:Wa,_fnFeatureHtmlProcessing:ub,_fnProcessingDisplay:J,_fnFeatureHtmlTable:vb,_fnScrollDraw:ma,_fnApplyToChildren:N,_fnCalculateColumnWidths:Ia,_fnThrottle:Ra,_fnConvertToWidth:Ib,_fnGetWidestNode:Jb,_fnGetMaxLenString:Kb,_fnStringToCss:B,
-_fnSortFlatten:X,_fnSort:qb,_fnSortAria:Mb,_fnSortListener:Ya,_fnSortAttachListener:Pa,_fnSortingClasses:za,_fnSortData:Lb,_fnSaveState:Aa,_fnLoadState:Nb,_fnSettingsFromNode:Ba,_fnLog:O,_fnMap:M,_fnBindAction:Za,_fnCallbackReg:D,_fnCallbackFire:A,_fnLengthOverflow:Va,_fnRenderer:Qa,_fnDataSource:I,_fnRowAttributes:Oa,_fnExtend:$a,_fnCalculateEnd:function(){}});f.fn.dataTable=q;q.$=f;f.fn.dataTableSettings=q.settings;f.fn.dataTableExt=q.ext;f.fn.DataTable=function(a){return f(this).dataTable(a).api()};
-f.each(q,function(a,b){f.fn.DataTable[a]=b});return f.fn.dataTable});

Fișier diff suprimat deoarece este prea mare
+ 0 - 1
static/js/jquery.min.js


Fișier diff suprimat deoarece este prea mare
+ 0 - 5
static/js/main.js


+ 0 - 10947
static/js/vue.js

@@ -1,10947 +0,0 @@
-/*!
- * Vue.js v2.5.17
- * (c) 2014-2018 Evan You
- * Released under the MIT License.
- */
-(function (global, factory) {
-	typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() :
-	typeof define === 'function' && define.amd ? define(factory) :
-	(global.Vue = factory());
-}(this, (function () { 'use strict';
-
-/*  */
-
-var emptyObject = Object.freeze({});
-
-// these helpers produces better vm code in JS engines due to their
-// explicitness and function inlining
-function isUndef (v) {
-  return v === undefined || v === null
-}
-
-function isDef (v) {
-  return v !== undefined && v !== null
-}
-
-function isTrue (v) {
-  return v === true
-}
-
-function isFalse (v) {
-  return v === false
-}
-
-/**
- * Check if value is primitive
- */
-function isPrimitive (value) {
-  return (
-    typeof value === 'string' ||
-    typeof value === 'number' ||
-    // $flow-disable-line
-    typeof value === 'symbol' ||
-    typeof value === 'boolean'
-  )
-}
-
-/**
- * Quick object check - this is primarily used to tell
- * Objects from primitive values when we know the value
- * is a JSON-compliant type.
- */
-function isObject (obj) {
-  return obj !== null && typeof obj === 'object'
-}
-
-/**
- * Get the raw type string of a value e.g. [object Object]
- */
-var _toString = Object.prototype.toString;
-
-function toRawType (value) {
-  return _toString.call(value).slice(8, -1)
-}
-
-/**
- * Strict object type check. Only returns true
- * for plain JavaScript objects.
- */
-function isPlainObject (obj) {
-  return _toString.call(obj) === '[object Object]'
-}
-
-function isRegExp (v) {
-  return _toString.call(v) === '[object RegExp]'
-}
-
-/**
- * Check if val is a valid array index.
- */
-function isValidArrayIndex (val) {
-  var n = parseFloat(String(val));
-  return n >= 0 && Math.floor(n) === n && isFinite(val)
-}
-
-/**
- * Convert a value to a string that is actually rendered.
- */
-function toString (val) {
-  return val == null
-    ? ''
-    : typeof val === 'object'
-      ? JSON.stringify(val, null, 2)
-      : String(val)
-}
-
-/**
- * Convert a input value to a number for persistence.
- * If the conversion fails, return original string.
- */
-function toNumber (val) {
-  var n = parseFloat(val);
-  return isNaN(n) ? val : n
-}
-
-/**
- * Make a map and return a function for checking if a key
- * is in that map.
- */
-function makeMap (
-  str,
-  expectsLowerCase
-) {
-  var map = Object.create(null);
-  var list = str.split(',');
-  for (var i = 0; i < list.length; i++) {
-    map[list[i]] = true;
-  }
-  return expectsLowerCase
-    ? function (val) { return map[val.toLowerCase()]; }
-    : function (val) { return map[val]; }
-}
-
-/**
- * Check if a tag is a built-in tag.
- */
-var isBuiltInTag = makeMap('slot,component', true);
-
-/**
- * Check if a attribute is a reserved attribute.
- */
-var isReservedAttribute = makeMap('key,ref,slot,slot-scope,is');
-
-/**
- * Remove an item from an array
- */
-function remove (arr, item) {
-  if (arr.length) {
-    var index = arr.indexOf(item);
-    if (index > -1) {
-      return arr.splice(index, 1)
-    }
-  }
-}
-
-/**
- * Check whether the object has the property.
- */
-var hasOwnProperty = Object.prototype.hasOwnProperty;
-function hasOwn (obj, key) {
-  return hasOwnProperty.call(obj, key)
-}
-
-/**
- * Create a cached version of a pure function.
- */
-function cached (fn) {
-  var cache = Object.create(null);
-  return (function cachedFn (str) {
-    var hit = cache[str];
-    return hit || (cache[str] = fn(str))
-  })
-}
-
-/**
- * Camelize a hyphen-delimited string.
- */
-var camelizeRE = /-(\w)/g;
-var camelize = cached(function (str) {
-  return str.replace(camelizeRE, function (_, c) { return c ? c.toUpperCase() : ''; })
-});
-
-/**
- * Capitalize a string.
- */
-var capitalize = cached(function (str) {
-  return str.charAt(0).toUpperCase() + str.slice(1)
-});
-
-/**
- * Hyphenate a camelCase string.
- */
-var hyphenateRE = /\B([A-Z])/g;
-var hyphenate = cached(function (str) {
-  return str.replace(hyphenateRE, '-$1').toLowerCase()
-});
-
-/**
- * Simple bind polyfill for environments that do not support it... e.g.
- * PhantomJS 1.x. Technically we don't need this anymore since native bind is
- * now more performant in most browsers, but removing it would be breaking for
- * code that was able to run in PhantomJS 1.x, so this must be kept for
- * backwards compatibility.
- */
-
-/* istanbul ignore next */
-function polyfillBind (fn, ctx) {
-  function boundFn (a) {
-    var l = arguments.length;
-    return l
-      ? l > 1
-        ? fn.apply(ctx, arguments)
-        : fn.call(ctx, a)
-      : fn.call(ctx)
-  }
-
-  boundFn._length = fn.length;
-  return boundFn
-}
-
-function nativeBind (fn, ctx) {
-  return fn.bind(ctx)
-}
-
-var bind = Function.prototype.bind
-  ? nativeBind
-  : polyfillBind;
-
-/**
- * Convert an Array-like object to a real Array.
- */
-function toArray (list, start) {
-  start = start || 0;
-  var i = list.length - start;
-  var ret = new Array(i);
-  while (i--) {
-    ret[i] = list[i + start];
-  }
-  return ret
-}
-
-/**
- * Mix properties into target object.
- */
-function extend (to, _from) {
-  for (var key in _from) {
-    to[key] = _from[key];
-  }
-  return to
-}
-
-/**
- * Merge an Array of Objects into a single Object.
- */
-function toObject (arr) {
-  var res = {};
-  for (var i = 0; i < arr.length; i++) {
-    if (arr[i]) {
-      extend(res, arr[i]);
-    }
-  }
-  return res
-}
-
-/**
- * Perform no operation.
- * Stubbing args to make Flow happy without leaving useless transpiled code
- * with ...rest (https://flow.org/blog/2017/05/07/Strict-Function-Call-Arity/)
- */
-function noop (a, b, c) {}
-
-/**
- * Always return false.
- */
-var no = function (a, b, c) { return false; };
-
-/**
- * Return same value
- */
-var identity = function (_) { return _; };
-
-/**
- * Generate a static keys string from compiler modules.
- */
-function genStaticKeys (modules) {
-  return modules.reduce(function (keys, m) {
-    return keys.concat(m.staticKeys || [])
-  }, []).join(',')
-}
-
-/**
- * Check if two values are loosely equal - that is,
- * if they are plain objects, do they have the same shape?
- */
-function looseEqual (a, b) {
-  if (a === b) { return true }
-  var isObjectA = isObject(a);
-  var isObjectB = isObject(b);
-  if (isObjectA && isObjectB) {
-    try {
-      var isArrayA = Array.isArray(a);
-      var isArrayB = Array.isArray(b);
-      if (isArrayA && isArrayB) {
-        return a.length === b.length && a.every(function (e, i) {
-          return looseEqual(e, b[i])
-        })
-      } else if (!isArrayA && !isArrayB) {
-        var keysA = Object.keys(a);
-        var keysB = Object.keys(b);
-        return keysA.length === keysB.length && keysA.every(function (key) {
-          return looseEqual(a[key], b[key])
-        })
-      } else {
-        /* istanbul ignore next */
-        return false
-      }
-    } catch (e) {
-      /* istanbul ignore next */
-      return false
-    }
-  } else if (!isObjectA && !isObjectB) {
-    return String(a) === String(b)
-  } else {
-    return false
-  }
-}
-
-function looseIndexOf (arr, val) {
-  for (var i = 0; i < arr.length; i++) {
-    if (looseEqual(arr[i], val)) { return i }
-  }
-  return -1
-}
-
-/**
- * Ensure a function is called only once.
- */
-function once (fn) {
-  var called = false;
-  return function () {
-    if (!called) {
-      called = true;
-      fn.apply(this, arguments);
-    }
-  }
-}
-
-var SSR_ATTR = 'data-server-rendered';
-
-var ASSET_TYPES = [
-  'component',
-  'directive',
-  'filter'
-];
-
-var LIFECYCLE_HOOKS = [
-  'beforeCreate',
-  'created',
-  'beforeMount',
-  'mounted',
-  'beforeUpdate',
-  'updated',
-  'beforeDestroy',
-  'destroyed',
-  'activated',
-  'deactivated',
-  'errorCaptured'
-];
-
-/*  */
-
-var config = ({
-  /**
-   * Option merge strategies (used in core/util/options)
-   */
-  // $flow-disable-line
-  optionMergeStrategies: Object.create(null),
-
-  /**
-   * Whether to suppress warnings.
-   */
-  silent: false,
-
-  /**
-   * Show production mode tip message on boot?
-   */
-  productionTip: "development" !== 'production',
-
-  /**
-   * Whether to enable devtools
-   */
-  devtools: "development" !== 'production',
-
-  /**
-   * Whether to record perf
-   */
-  performance: false,
-
-  /**
-   * Error handler for watcher errors
-   */
-  errorHandler: null,
-
-  /**
-   * Warn handler for watcher warns
-   */
-  warnHandler: null,
-
-  /**
-   * Ignore certain custom elements
-   */
-  ignoredElements: [],
-
-  /**
-   * Custom user key aliases for v-on
-   */
-  // $flow-disable-line
-  keyCodes: Object.create(null),
-
-  /**
-   * Check if a tag is reserved so that it cannot be registered as a
-   * component. This is platform-dependent and may be overwritten.
-   */
-  isReservedTag: no,
-
-  /**
-   * Check if an attribute is reserved so that it cannot be used as a component
-   * prop. This is platform-dependent and may be overwritten.
-   */
-  isReservedAttr: no,
-
-  /**
-   * Check if a tag is an unknown element.
-   * Platform-dependent.
-   */
-  isUnknownElement: no,
-
-  /**
-   * Get the namespace of an element
-   */
-  getTagNamespace: noop,
-
-  /**
-   * Parse the real tag name for the specific platform.
-   */
-  parsePlatformTagName: identity,
-
-  /**
-   * Check if an attribute must be bound using property, e.g. value
-   * Platform-dependent.
-   */
-  mustUseProp: no,
-
-  /**
-   * Exposed for legacy reasons
-   */
-  _lifecycleHooks: LIFECYCLE_HOOKS
-})
-
-/*  */
-
-/**
- * Check if a string starts with $ or _
- */
-function isReserved (str) {
-  var c = (str + '').charCodeAt(0);
-  return c === 0x24 || c === 0x5F
-}
-
-/**
- * Define a property.
- */
-function def (obj, key, val, enumerable) {
-  Object.defineProperty(obj, key, {
-    value: val,
-    enumerable: !!enumerable,
-    writable: true,
-    configurable: true
-  });
-}
-
-/**
- * Parse simple path.
- */
-var bailRE = /[^\w.$]/;
-function parsePath (path) {
-  if (bailRE.test(path)) {
-    return
-  }
-  var segments = path.split('.');
-  return function (obj) {
-    for (var i = 0; i < segments.length; i++) {
-      if (!obj) { return }
-      obj = obj[segments[i]];
-    }
-    return obj
-  }
-}
-
-/*  */
-
-// can we use __proto__?
-var hasProto = '__proto__' in {};
-
-// Browser environment sniffing
-var inBrowser = typeof window !== 'undefined';
-var inWeex = typeof WXEnvironment !== 'undefined' && !!WXEnvironment.platform;
-var weexPlatform = inWeex && WXEnvironment.platform.toLowerCase();
-var UA = inBrowser && window.navigator.userAgent.toLowerCase();
-var isIE = UA && /msie|trident/.test(UA);
-var isIE9 = UA && UA.indexOf('msie 9.0') > 0;
-var isEdge = UA && UA.indexOf('edge/') > 0;
-var isAndroid = (UA && UA.indexOf('android') > 0) || (weexPlatform === 'android');
-var isIOS = (UA && /iphone|ipad|ipod|ios/.test(UA)) || (weexPlatform === 'ios');
-var isChrome = UA && /chrome\/\d+/.test(UA) && !isEdge;
-
-// Firefox has a "watch" function on Object.prototype...
-var nativeWatch = ({}).watch;
-
-var supportsPassive = false;
-if (inBrowser) {
-  try {
-    var opts = {};
-    Object.defineProperty(opts, 'passive', ({
-      get: function get () {
-        /* istanbul ignore next */
-        supportsPassive = true;
-      }
-    })); // https://github.com/facebook/flow/issues/285
-    window.addEventListener('test-passive', null, opts);
-  } catch (e) {}
-}
-
-// this needs to be lazy-evaled because vue may be required before
-// vue-server-renderer can set VUE_ENV
-var _isServer;
-var isServerRendering = function () {
-  if (_isServer === undefined) {
-    /* istanbul ignore if */
-    if (!inBrowser && !inWeex && typeof global !== 'undefined') {
-      // detect presence of vue-server-renderer and avoid
-      // Webpack shimming the process
-      _isServer = global['process'].env.VUE_ENV === 'server';
-    } else {
-      _isServer = false;
-    }
-  }
-  return _isServer
-};
-
-// detect devtools
-var devtools = inBrowser && window.__VUE_DEVTOOLS_GLOBAL_HOOK__;
-
-/* istanbul ignore next */
-function isNative (Ctor) {
-  return typeof Ctor === 'function' && /native code/.test(Ctor.toString())
-}
-
-var hasSymbol =
-  typeof Symbol !== 'undefined' && isNative(Symbol) &&
-  typeof Reflect !== 'undefined' && isNative(Reflect.ownKeys);
-
-var _Set;
-/* istanbul ignore if */ // $flow-disable-line
-if (typeof Set !== 'undefined' && isNative(Set)) {
-  // use native Set when available.
-  _Set = Set;
-} else {
-  // a non-standard Set polyfill that only works with primitive keys.
-  _Set = (function () {
-    function Set () {
-      this.set = Object.create(null);
-    }
-    Set.prototype.has = function has (key) {
-      return this.set[key] === true
-    };
-    Set.prototype.add = function add (key) {
-      this.set[key] = true;
-    };
-    Set.prototype.clear = function clear () {
-      this.set = Object.create(null);
-    };
-
-    return Set;
-  }());
-}
-
-/*  */
-
-var warn = noop;
-var tip = noop;
-var generateComponentTrace = (noop); // work around flow check
-var formatComponentName = (noop);
-
-{
-  var hasConsole = typeof console !== 'undefined';
-  var classifyRE = /(?:^|[-_])(\w)/g;
-  var classify = function (str) { return str
-    .replace(classifyRE, function (c) { return c.toUpperCase(); })
-    .replace(/[-_]/g, ''); };
-
-  warn = function (msg, vm) {
-    var trace = vm ? generateComponentTrace(vm) : '';
-
-    if (config.warnHandler) {
-      config.warnHandler.call(null, msg, vm, trace);
-    } else if (hasConsole && (!config.silent)) {
-      console.error(("[Vue warn]: " + msg + trace));
-    }
-  };
-
-  tip = function (msg, vm) {
-    if (hasConsole && (!config.silent)) {
-      console.warn("[Vue tip]: " + msg + (
-        vm ? generateComponentTrace(vm) : ''
-      ));
-    }
-  };
-
-  formatComponentName = function (vm, includeFile) {
-    if (vm.$root === vm) {
-      return '<Root>'
-    }
-    var options = typeof vm === 'function' && vm.cid != null
-      ? vm.options
-      : vm._isVue
-        ? vm.$options || vm.constructor.options
-        : vm || {};
-    var name = options.name || options._componentTag;
-    var file = options.__file;
-    if (!name && file) {
-      var match = file.match(/([^/\\]+)\.vue$/);
-      name = match && match[1];
-    }
-
-    return (
-      (name ? ("<" + (classify(name)) + ">") : "<Anonymous>") +
-      (file && includeFile !== false ? (" at " + file) : '')
-    )
-  };
-
-  var repeat = function (str, n) {
-    var res = '';
-    while (n) {
-      if (n % 2 === 1) { res += str; }
-      if (n > 1) { str += str; }
-      n >>= 1;
-    }
-    return res
-  };
-
-  generateComponentTrace = function (vm) {
-    if (vm._isVue && vm.$parent) {
-      var tree = [];
-      var currentRecursiveSequence = 0;
-      while (vm) {
-        if (tree.length > 0) {
-          var last = tree[tree.length - 1];
-          if (last.constructor === vm.constructor) {
-            currentRecursiveSequence++;
-            vm = vm.$parent;
-            continue
-          } else if (currentRecursiveSequence > 0) {
-            tree[tree.length - 1] = [last, currentRecursiveSequence];
-            currentRecursiveSequence = 0;
-          }
-        }
-        tree.push(vm);
-        vm = vm.$parent;
-      }
-      return '\n\nfound in\n\n' + tree
-        .map(function (vm, i) { return ("" + (i === 0 ? '---> ' : repeat(' ', 5 + i * 2)) + (Array.isArray(vm)
-            ? ((formatComponentName(vm[0])) + "... (" + (vm[1]) + " recursive calls)")
-            : formatComponentName(vm))); })
-        .join('\n')
-    } else {
-      return ("\n\n(found in " + (formatComponentName(vm)) + ")")
-    }
-  };
-}
-
-/*  */
-
-
-var uid = 0;
-
-/**
- * A dep is an observable that can have multiple
- * directives subscribing to it.
- */
-var Dep = function Dep () {
-  this.id = uid++;
-  this.subs = [];
-};
-
-Dep.prototype.addSub = function addSub (sub) {
-  this.subs.push(sub);
-};
-
-Dep.prototype.removeSub = function removeSub (sub) {
-  remove(this.subs, sub);
-};
-
-Dep.prototype.depend = function depend () {
-  if (Dep.target) {
-    Dep.target.addDep(this);
-  }
-};
-
-Dep.prototype.notify = function notify () {
-  // stabilize the subscriber list first
-  var subs = this.subs.slice();
-  for (var i = 0, l = subs.length; i < l; i++) {
-    subs[i].update();
-  }
-};
-
-// the current target watcher being evaluated.
-// this is globally unique because there could be only one
-// watcher being evaluated at any time.
-Dep.target = null;
-var targetStack = [];
-
-function pushTarget (_target) {
-  if (Dep.target) { targetStack.push(Dep.target); }
-  Dep.target = _target;
-}
-
-function popTarget () {
-  Dep.target = targetStack.pop();
-}
-
-/*  */
-
-var VNode = function VNode (
-  tag,
-  data,
-  children,
-  text,
-  elm,
-  context,
-  componentOptions,
-  asyncFactory
-) {
-  this.tag = tag;
-  this.data = data;
-  this.children = children;
-  this.text = text;
-  this.elm = elm;
-  this.ns = undefined;
-  this.context = context;
-  this.fnContext = undefined;
-  this.fnOptions = undefined;
-  this.fnScopeId = undefined;
-  this.key = data && data.key;
-  this.componentOptions = componentOptions;
-  this.componentInstance = undefined;
-  this.parent = undefined;
-  this.raw = false;
-  this.isStatic = false;
-  this.isRootInsert = true;
-  this.isComment = false;
-  this.isCloned = false;
-  this.isOnce = false;
-  this.asyncFactory = asyncFactory;
-  this.asyncMeta = undefined;
-  this.isAsyncPlaceholder = false;
-};
-
-var prototypeAccessors = { child: { configurable: true } };
-
-// DEPRECATED: alias for componentInstance for backwards compat.
-/* istanbul ignore next */
-prototypeAccessors.child.get = function () {
-  return this.componentInstance
-};
-
-Object.defineProperties( VNode.prototype, prototypeAccessors );
-
-var createEmptyVNode = function (text) {
-  if ( text === void 0 ) text = '';
-
-  var node = new VNode();
-  node.text = text;
-  node.isComment = true;
-  return node
-};
-
-function createTextVNode (val) {
-  return new VNode(undefined, undefined, undefined, String(val))
-}
-
-// optimized shallow clone
-// used for static nodes and slot nodes because they may be reused across
-// multiple renders, cloning them avoids errors when DOM manipulations rely
-// on their elm reference.
-function cloneVNode (vnode) {
-  var cloned = new VNode(
-    vnode.tag,
-    vnode.data,
-    vnode.children,
-    vnode.text,
-    vnode.elm,
-    vnode.context,
-    vnode.componentOptions,
-    vnode.asyncFactory
-  );
-  cloned.ns = vnode.ns;
-  cloned.isStatic = vnode.isStatic;
-  cloned.key = vnode.key;
-  cloned.isComment = vnode.isComment;
-  cloned.fnContext = vnode.fnContext;
-  cloned.fnOptions = vnode.fnOptions;
-  cloned.fnScopeId = vnode.fnScopeId;
-  cloned.isCloned = true;
-  return cloned
-}
-
-/*
- * not type checking this file because flow doesn't play well with
- * dynamically accessing methods on Array prototype
- */
-
-var arrayProto = Array.prototype;
-var arrayMethods = Object.create(arrayProto);
-
-var methodsToPatch = [
-  'push',
-  'pop',
-  'shift',
-  'unshift',
-  'splice',
-  'sort',
-  'reverse'
-];
-
-/**
- * Intercept mutating methods and emit events
- */
-methodsToPatch.forEach(function (method) {
-  // cache original method
-  var original = arrayProto[method];
-  def(arrayMethods, method, function mutator () {
-    var args = [], len = arguments.length;
-    while ( len-- ) args[ len ] = arguments[ len ];
-
-    var result = original.apply(this, args);
-    var ob = this.__ob__;
-    var inserted;
-    switch (method) {
-      case 'push':
-      case 'unshift':
-        inserted = args;
-        break
-      case 'splice':
-        inserted = args.slice(2);
-        break
-    }
-    if (inserted) { ob.observeArray(inserted); }
-    // notify change
-    ob.dep.notify();
-    return result
-  });
-});
-
-/*  */
-
-var arrayKeys = Object.getOwnPropertyNames(arrayMethods);
-
-/**
- * In some cases we may want to disable observation inside a component's
- * update computation.
- */
-var shouldObserve = true;
-
-function toggleObserving (value) {
-  shouldObserve = value;
-}
-
-/**
- * Observer class that is attached to each observed
- * object. Once attached, the observer converts the target
- * object's property keys into getter/setters that
- * collect dependencies and dispatch updates.
- */
-var Observer = function Observer (value) {
-  this.value = value;
-  this.dep = new Dep();
-  this.vmCount = 0;
-  def(value, '__ob__', this);
-  if (Array.isArray(value)) {
-    var augment = hasProto
-      ? protoAugment
-      : copyAugment;
-    augment(value, arrayMethods, arrayKeys);
-    this.observeArray(value);
-  } else {
-    this.walk(value);
-  }
-};
-
-/**
- * Walk through each property and convert them into
- * getter/setters. This method should only be called when
- * value type is Object.
- */
-Observer.prototype.walk = function walk (obj) {
-  var keys = Object.keys(obj);
-  for (var i = 0; i < keys.length; i++) {
-    defineReactive(obj, keys[i]);
-  }
-};
-
-/**
- * Observe a list of Array items.
- */
-Observer.prototype.observeArray = function observeArray (items) {
-  for (var i = 0, l = items.length; i < l; i++) {
-    observe(items[i]);
-  }
-};
-
-// helpers
-
-/**
- * Augment an target Object or Array by intercepting
- * the prototype chain using __proto__
- */
-function protoAugment (target, src, keys) {
-  /* eslint-disable no-proto */
-  target.__proto__ = src;
-  /* eslint-enable no-proto */
-}
-
-/**
- * Augment an target Object or Array by defining
- * hidden properties.
- */
-/* istanbul ignore next */
-function copyAugment (target, src, keys) {
-  for (var i = 0, l = keys.length; i < l; i++) {
-    var key = keys[i];
-    def(target, key, src[key]);
-  }
-}
-
-/**
- * Attempt to create an observer instance for a value,
- * returns the new observer if successfully observed,
- * or the existing observer if the value already has one.
- */
-function observe (value, asRootData) {
-  if (!isObject(value) || value instanceof VNode) {
-    return
-  }
-  var ob;
-  if (hasOwn(value, '__ob__') && value.__ob__ instanceof Observer) {
-    ob = value.__ob__;
-  } else if (
-    shouldObserve &&
-    !isServerRendering() &&
-    (Array.isArray(value) || isPlainObject(value)) &&
-    Object.isExtensible(value) &&
-    !value._isVue
-  ) {
-    ob = new Observer(value);
-  }
-  if (asRootData && ob) {
-    ob.vmCount++;
-  }
-  return ob
-}
-
-/**
- * Define a reactive property on an Object.
- */
-function defineReactive (
-  obj,
-  key,
-  val,
-  customSetter,
-  shallow
-) {
-  var dep = new Dep();
-
-  var property = Object.getOwnPropertyDescriptor(obj, key);
-  if (property && property.configurable === false) {
-    return
-  }
-
-  // cater for pre-defined getter/setters
-  var getter = property && property.get;
-  if (!getter && arguments.length === 2) {
-    val = obj[key];
-  }
-  var setter = property && property.set;
-
-  var childOb = !shallow && observe(val);
-  Object.defineProperty(obj, key, {
-    enumerable: true,
-    configurable: true,
-    get: function reactiveGetter () {
-      var value = getter ? getter.call(obj) : val;
-      if (Dep.target) {
-        dep.depend();
-        if (childOb) {
-          childOb.dep.depend();
-          if (Array.isArray(value)) {
-            dependArray(value);
-          }
-        }
-      }
-      return value
-    },
-    set: function reactiveSetter (newVal) {
-      var value = getter ? getter.call(obj) : val;
-      /* eslint-disable no-self-compare */
-      if (newVal === value || (newVal !== newVal && value !== value)) {
-        return
-      }
-      /* eslint-enable no-self-compare */
-      if ("development" !== 'production' && customSetter) {
-        customSetter();
-      }
-      if (setter) {
-        setter.call(obj, newVal);
-      } else {
-        val = newVal;
-      }
-      childOb = !shallow && observe(newVal);
-      dep.notify();
-    }
-  });
-}
-
-/**
- * Set a property on an object. Adds the new property and
- * triggers change notification if the property doesn't
- * already exist.
- */
-function set (target, key, val) {
-  if ("development" !== 'production' &&
-    (isUndef(target) || isPrimitive(target))
-  ) {
-    warn(("Cannot set reactive property on undefined, null, or primitive value: " + ((target))));
-  }
-  if (Array.isArray(target) && isValidArrayIndex(key)) {
-    target.length = Math.max(target.length, key);
-    target.splice(key, 1, val);
-    return val
-  }
-  if (key in target && !(key in Object.prototype)) {
-    target[key] = val;
-    return val
-  }
-  var ob = (target).__ob__;
-  if (target._isVue || (ob && ob.vmCount)) {
-    "development" !== 'production' && warn(
-      'Avoid adding reactive properties to a Vue instance or its root $data ' +
-      'at runtime - declare it upfront in the data option.'
-    );
-    return val
-  }
-  if (!ob) {
-    target[key] = val;
-    return val
-  }
-  defineReactive(ob.value, key, val);
-  ob.dep.notify();
-  return val
-}
-
-/**
- * Delete a property and trigger change if necessary.
- */
-function del (target, key) {
-  if ("development" !== 'production' &&
-    (isUndef(target) || isPrimitive(target))
-  ) {
-    warn(("Cannot delete reactive property on undefined, null, or primitive value: " + ((target))));
-  }
-  if (Array.isArray(target) && isValidArrayIndex(key)) {
-    target.splice(key, 1);
-    return
-  }
-  var ob = (target).__ob__;
-  if (target._isVue || (ob && ob.vmCount)) {
-    "development" !== 'production' && warn(
-      'Avoid deleting properties on a Vue instance or its root $data ' +
-      '- just set it to null.'
-    );
-    return
-  }
-  if (!hasOwn(target, key)) {
-    return
-  }
-  delete target[key];
-  if (!ob) {
-    return
-  }
-  ob.dep.notify();
-}
-
-/**
- * Collect dependencies on array elements when the array is touched, since
- * we cannot intercept array element access like property getters.
- */
-function dependArray (value) {
-  for (var e = (void 0), i = 0, l = value.length; i < l; i++) {
-    e = value[i];
-    e && e.__ob__ && e.__ob__.dep.depend();
-    if (Array.isArray(e)) {
-      dependArray(e);
-    }
-  }
-}
-
-/*  */
-
-/**
- * Option overwriting strategies are functions that handle
- * how to merge a parent option value and a child option
- * value into the final value.
- */
-var strats = config.optionMergeStrategies;
-
-/**
- * Options with restrictions
- */
-{
-  strats.el = strats.propsData = function (parent, child, vm, key) {
-    if (!vm) {
-      warn(
-        "option \"" + key + "\" can only be used during instance " +
-        'creation with the `new` keyword.'
-      );
-    }
-    return defaultStrat(parent, child)
-  };
-}
-
-/**
- * Helper that recursively merges two data objects together.
- */
-function mergeData (to, from) {
-  if (!from) { return to }
-  var key, toVal, fromVal;
-  var keys = Object.keys(from);
-  for (var i = 0; i < keys.length; i++) {
-    key = keys[i];
-    toVal = to[key];
-    fromVal = from[key];
-    if (!hasOwn(to, key)) {
-      set(to, key, fromVal);
-    } else if (isPlainObject(toVal) && isPlainObject(fromVal)) {
-      mergeData(toVal, fromVal);
-    }
-  }
-  return to
-}
-
-/**
- * Data
- */
-function mergeDataOrFn (
-  parentVal,
-  childVal,
-  vm
-) {
-  if (!vm) {
-    // in a Vue.extend merge, both should be functions
-    if (!childVal) {
-      return parentVal
-    }
-    if (!parentVal) {
-      return childVal
-    }
-    // when parentVal & childVal are both present,
-    // we need to return a function that returns the
-    // merged result of both functions... no need to
-    // check if parentVal is a function here because
-    // it has to be a function to pass previous merges.
-    return function mergedDataFn () {
-      return mergeData(
-        typeof childVal === 'function' ? childVal.call(this, this) : childVal,
-        typeof parentVal === 'function' ? parentVal.call(this, this) : parentVal
-      )
-    }
-  } else {
-    return function mergedInstanceDataFn () {
-      // instance merge
-      var instanceData = typeof childVal === 'function'
-        ? childVal.call(vm, vm)
-        : childVal;
-      var defaultData = typeof parentVal === 'function'
-        ? parentVal.call(vm, vm)
-        : parentVal;
-      if (instanceData) {
-        return mergeData(instanceData, defaultData)
-      } else {
-        return defaultData
-      }
-    }
-  }
-}
-
-strats.data = function (
-  parentVal,
-  childVal,
-  vm
-) {
-  if (!vm) {
-    if (childVal && typeof childVal !== 'function') {
-      "development" !== 'production' && warn(
-        'The "data" option should be a function ' +
-        'that returns a per-instance value in component ' +
-        'definitions.',
-        vm
-      );
-
-      return parentVal
-    }
-    return mergeDataOrFn(parentVal, childVal)
-  }
-
-  return mergeDataOrFn(parentVal, childVal, vm)
-};
-
-/**
- * Hooks and props are merged as arrays.
- */
-function mergeHook (
-  parentVal,
-  childVal
-) {
-  return childVal
-    ? parentVal
-      ? parentVal.concat(childVal)
-      : Array.isArray(childVal)
-        ? childVal
-        : [childVal]
-    : parentVal
-}
-
-LIFECYCLE_HOOKS.forEach(function (hook) {
-  strats[hook] = mergeHook;
-});
-
-/**
- * Assets
- *
- * When a vm is present (instance creation), we need to do
- * a three-way merge between constructor options, instance
- * options and parent options.
- */
-function mergeAssets (
-  parentVal,
-  childVal,
-  vm,
-  key
-) {
-  var res = Object.create(parentVal || null);
-  if (childVal) {
-    "development" !== 'production' && assertObjectType(key, childVal, vm);
-    return extend(res, childVal)
-  } else {
-    return res
-  }
-}
-
-ASSET_TYPES.forEach(function (type) {
-  strats[type + 's'] = mergeAssets;
-});
-
-/**
- * Watchers.
- *
- * Watchers hashes should not overwrite one
- * another, so we merge them as arrays.
- */
-strats.watch = function (
-  parentVal,
-  childVal,
-  vm,
-  key
-) {
-  // work around Firefox's Object.prototype.watch...
-  if (parentVal === nativeWatch) { parentVal = undefined; }
-  if (childVal === nativeWatch) { childVal = undefined; }
-  /* istanbul ignore if */
-  if (!childVal) { return Object.create(parentVal || null) }
-  {
-    assertObjectType(key, childVal, vm);
-  }
-  if (!parentVal) { return childVal }
-  var ret = {};
-  extend(ret, parentVal);
-  for (var key$1 in childVal) {
-    var parent = ret[key$1];
-    var child = childVal[key$1];
-    if (parent && !Array.isArray(parent)) {
-      parent = [parent];
-    }
-    ret[key$1] = parent
-      ? parent.concat(child)
-      : Array.isArray(child) ? child : [child];
-  }
-  return ret
-};
-
-/**
- * Other object hashes.
- */
-strats.props =
-strats.methods =
-strats.inject =
-strats.computed = function (
-  parentVal,
-  childVal,
-  vm,
-  key
-) {
-  if (childVal && "development" !== 'production') {
-    assertObjectType(key, childVal, vm);
-  }
-  if (!parentVal) { return childVal }
-  var ret = Object.create(null);
-  extend(ret, parentVal);
-  if (childVal) { extend(ret, childVal); }
-  return ret
-};
-strats.provide = mergeDataOrFn;
-
-/**
- * Default strategy.
- */
-var defaultStrat = function (parentVal, childVal) {
-  return childVal === undefined
-    ? parentVal
-    : childVal
-};
-
-/**
- * Validate component names
- */
-function checkComponents (options) {
-  for (var key in options.components) {
-    validateComponentName(key);
-  }
-}
-
-function validateComponentName (name) {
-  if (!/^[a-zA-Z][\w-]*$/.test(name)) {
-    warn(
-      'Invalid component name: "' + name + '". Component names ' +
-      'can only contain alphanumeric characters and the hyphen, ' +
-      'and must start with a letter.'
-    );
-  }
-  if (isBuiltInTag(name) || config.isReservedTag(name)) {
-    warn(
-      'Do not use built-in or reserved HTML elements as component ' +
-      'id: ' + name
-    );
-  }
-}
-
-/**
- * Ensure all props option syntax are normalized into the
- * Object-based format.
- */
-function normalizeProps (options, vm) {
-  var props = options.props;
-  if (!props) { return }
-  var res = {};
-  var i, val, name;
-  if (Array.isArray(props)) {
-    i = props.length;
-    while (i--) {
-      val = props[i];
-      if (typeof val === 'string') {
-        name = camelize(val);
-        res[name] = { type: null };
-      } else {
-        warn('props must be strings when using array syntax.');
-      }
-    }
-  } else if (isPlainObject(props)) {
-    for (var key in props) {
-      val = props[key];
-      name = camelize(key);
-      res[name] = isPlainObject(val)
-        ? val
-        : { type: val };
-    }
-  } else {
-    warn(
-      "Invalid value for option \"props\": expected an Array or an Object, " +
-      "but got " + (toRawType(props)) + ".",
-      vm
-    );
-  }
-  options.props = res;
-}
-
-/**
- * Normalize all injections into Object-based format
- */
-function normalizeInject (options, vm) {
-  var inject = options.inject;
-  if (!inject) { return }
-  var normalized = options.inject = {};
-  if (Array.isArray(inject)) {
-    for (var i = 0; i < inject.length; i++) {
-      normalized[inject[i]] = { from: inject[i] };
-    }
-  } else if (isPlainObject(inject)) {
-    for (var key in inject) {
-      var val = inject[key];
-      normalized[key] = isPlainObject(val)
-        ? extend({ from: key }, val)
-        : { from: val };
-    }
-  } else {
-    warn(
-      "Invalid value for option \"inject\": expected an Array or an Object, " +
-      "but got " + (toRawType(inject)) + ".",
-      vm
-    );
-  }
-}
-
-/**
- * Normalize raw function directives into object format.
- */
-function normalizeDirectives (options) {
-  var dirs = options.directives;
-  if (dirs) {
-    for (var key in dirs) {
-      var def = dirs[key];
-      if (typeof def === 'function') {
-        dirs[key] = { bind: def, update: def };
-      }
-    }
-  }
-}
-
-function assertObjectType (name, value, vm) {
-  if (!isPlainObject(value)) {
-    warn(
-      "Invalid value for option \"" + name + "\": expected an Object, " +
-      "but got " + (toRawType(value)) + ".",
-      vm
-    );
-  }
-}
-
-/**
- * Merge two option objects into a new one.
- * Core utility used in both instantiation and inheritance.
- */
-function mergeOptions (
-  parent,
-  child,
-  vm
-) {
-  {
-    checkComponents(child);
-  }
-
-  if (typeof child === 'function') {
-    child = child.options;
-  }
-
-  normalizeProps(child, vm);
-  normalizeInject(child, vm);
-  normalizeDirectives(child);
-  var extendsFrom = child.extends;
-  if (extendsFrom) {
-    parent = mergeOptions(parent, extendsFrom, vm);
-  }
-  if (child.mixins) {
-    for (var i = 0, l = child.mixins.length; i < l; i++) {
-      parent = mergeOptions(parent, child.mixins[i], vm);
-    }
-  }
-  var options = {};
-  var key;
-  for (key in parent) {
-    mergeField(key);
-  }
-  for (key in child) {
-    if (!hasOwn(parent, key)) {
-      mergeField(key);
-    }
-  }
-  function mergeField (key) {
-    var strat = strats[key] || defaultStrat;
-    options[key] = strat(parent[key], child[key], vm, key);
-  }
-  return options
-}
-
-/**
- * Resolve an asset.
- * This function is used because child instances need access
- * to assets defined in its ancestor chain.
- */
-function resolveAsset (
-  options,
-  type,
-  id,
-  warnMissing
-) {
-  /* istanbul ignore if */
-  if (typeof id !== 'string') {
-    return
-  }
-  var assets = options[type];
-  // check local registration variations first
-  if (hasOwn(assets, id)) { return assets[id] }
-  var camelizedId = camelize(id);
-  if (hasOwn(assets, camelizedId)) { return assets[camelizedId] }
-  var PascalCaseId = capitalize(camelizedId);
-  if (hasOwn(assets, PascalCaseId)) { return assets[PascalCaseId] }
-  // fallback to prototype chain
-  var res = assets[id] || assets[camelizedId] || assets[PascalCaseId];
-  if ("development" !== 'production' && warnMissing && !res) {
-    warn(
-      'Failed to resolve ' + type.slice(0, -1) + ': ' + id,
-      options
-    );
-  }
-  return res
-}
-
-/*  */
-
-function validateProp (
-  key,
-  propOptions,
-  propsData,
-  vm
-) {
-  var prop = propOptions[key];
-  var absent = !hasOwn(propsData, key);
-  var value = propsData[key];
-  // boolean casting
-  var booleanIndex = getTypeIndex(Boolean, prop.type);
-  if (booleanIndex > -1) {
-    if (absent && !hasOwn(prop, 'default')) {
-      value = false;
-    } else if (value === '' || value === hyphenate(key)) {
-      // only cast empty string / same name to boolean if
-      // boolean has higher priority
-      var stringIndex = getTypeIndex(String, prop.type);
-      if (stringIndex < 0 || booleanIndex < stringIndex) {
-        value = true;
-      }
-    }
-  }
-  // check default value
-  if (value === undefined) {
-    value = getPropDefaultValue(vm, prop, key);
-    // since the default value is a fresh copy,
-    // make sure to observe it.
-    var prevShouldObserve = shouldObserve;
-    toggleObserving(true);
-    observe(value);
-    toggleObserving(prevShouldObserve);
-  }
-  {
-    assertProp(prop, key, value, vm, absent);
-  }
-  return value
-}
-
-/**
- * Get the default value of a prop.
- */
-function getPropDefaultValue (vm, prop, key) {
-  // no default, return undefined
-  if (!hasOwn(prop, 'default')) {
-    return undefined
-  }
-  var def = prop.default;
-  // warn against non-factory defaults for Object & Array
-  if ("development" !== 'production' && isObject(def)) {
-    warn(
-      'Invalid default value for prop "' + key + '": ' +
-      'Props with type Object/Array must use a factory function ' +
-      'to return the default value.',
-      vm
-    );
-  }
-  // the raw prop value was also undefined from previous render,
-  // return previous default value to avoid unnecessary watcher trigger
-  if (vm && vm.$options.propsData &&
-    vm.$options.propsData[key] === undefined &&
-    vm._props[key] !== undefined
-  ) {
-    return vm._props[key]
-  }
-  // call factory function for non-Function types
-  // a value is Function if its prototype is function even across different execution context
-  return typeof def === 'function' && getType(prop.type) !== 'Function'
-    ? def.call(vm)
-    : def
-}
-
-/**
- * Assert whether a prop is valid.
- */
-function assertProp (
-  prop,
-  name,
-  value,
-  vm,
-  absent
-) {
-  if (prop.required && absent) {
-    warn(
-      'Missing required prop: "' + name + '"',
-      vm
-    );
-    return
-  }
-  if (value == null && !prop.required) {
-    return
-  }
-  var type = prop.type;
-  var valid = !type || type === true;
-  var expectedTypes = [];
-  if (type) {
-    if (!Array.isArray(type)) {
-      type = [type];
-    }
-    for (var i = 0; i < type.length && !valid; i++) {
-      var assertedType = assertType(value, type[i]);
-      expectedTypes.push(assertedType.expectedType || '');
-      valid = assertedType.valid;
-    }
-  }
-  if (!valid) {
-    warn(
-      "Invalid prop: type check failed for prop \"" + name + "\"." +
-      " Expected " + (expectedTypes.map(capitalize).join(', ')) +
-      ", got " + (toRawType(value)) + ".",
-      vm
-    );
-    return
-  }
-  var validator = prop.validator;
-  if (validator) {
-    if (!validator(value)) {
-      warn(
-        'Invalid prop: custom validator check failed for prop "' + name + '".',
-        vm
-      );
-    }
-  }
-}
-
-var simpleCheckRE = /^(String|Number|Boolean|Function|Symbol)$/;
-
-function assertType (value, type) {
-  var valid;
-  var expectedType = getType(type);
-  if (simpleCheckRE.test(expectedType)) {
-    var t = typeof value;
-    valid = t === expectedType.toLowerCase();
-    // for primitive wrapper objects
-    if (!valid && t === 'object') {
-      valid = value instanceof type;
-    }
-  } else if (expectedType === 'Object') {
-    valid = isPlainObject(value);
-  } else if (expectedType === 'Array') {
-    valid = Array.isArray(value);
-  } else {
-    valid = value instanceof type;
-  }
-  return {
-    valid: valid,
-    expectedType: expectedType
-  }
-}
-
-/**
- * Use function string name to check built-in types,
- * because a simple equality check will fail when running
- * across different vms / iframes.
- */
-function getType (fn) {
-  var match = fn && fn.toString().match(/^\s*function (\w+)/);
-  return match ? match[1] : ''
-}
-
-function isSameType (a, b) {
-  return getType(a) === getType(b)
-}
-
-function getTypeIndex (type, expectedTypes) {
-  if (!Array.isArray(expectedTypes)) {
-    return isSameType(expectedTypes, type) ? 0 : -1
-  }
-  for (var i = 0, len = expectedTypes.length; i < len; i++) {
-    if (isSameType(expectedTypes[i], type)) {
-      return i
-    }
-  }
-  return -1
-}
-
-/*  */
-
-function handleError (err, vm, info) {
-  if (vm) {
-    var cur = vm;
-    while ((cur = cur.$parent)) {
-      var hooks = cur.$options.errorCaptured;
-      if (hooks) {
-        for (var i = 0; i < hooks.length; i++) {
-          try {
-            var capture = hooks[i].call(cur, err, vm, info) === false;
-            if (capture) { return }
-          } catch (e) {
-            globalHandleError(e, cur, 'errorCaptured hook');
-          }
-        }
-      }
-    }
-  }
-  globalHandleError(err, vm, info);
-}
-
-function globalHandleError (err, vm, info) {
-  if (config.errorHandler) {
-    try {
-      return config.errorHandler.call(null, err, vm, info)
-    } catch (e) {
-      logError(e, null, 'config.errorHandler');
-    }
-  }
-  logError(err, vm, info);
-}
-
-function logError (err, vm, info) {
-  {
-    warn(("Error in " + info + ": \"" + (err.toString()) + "\""), vm);
-  }
-  /* istanbul ignore else */
-  if ((inBrowser || inWeex) && typeof console !== 'undefined') {
-    console.error(err);
-  } else {
-    throw err
-  }
-}
-
-/*  */
-/* globals MessageChannel */
-
-var callbacks = [];
-var pending = false;
-
-function flushCallbacks () {
-  pending = false;
-  var copies = callbacks.slice(0);
-  callbacks.length = 0;
-  for (var i = 0; i < copies.length; i++) {
-    copies[i]();
-  }
-}
-
-// Here we have async deferring wrappers using both microtasks and (macro) tasks.
-// In < 2.4 we used microtasks everywhere, but there are some scenarios where
-// microtasks have too high a priority and fire in between supposedly
-// sequential events (e.g. #4521, #6690) or even between bubbling of the same
-// event (#6566). However, using (macro) tasks everywhere also has subtle problems
-// when state is changed right before repaint (e.g. #6813, out-in transitions).
-// Here we use microtask by default, but expose a way to force (macro) task when
-// needed (e.g. in event handlers attached by v-on).
-var microTimerFunc;
-var macroTimerFunc;
-var useMacroTask = false;
-
-// Determine (macro) task defer implementation.
-// Technically setImmediate should be the ideal choice, but it's only available
-// in IE. The only polyfill that consistently queues the callback after all DOM
-// events triggered in the same loop is by using MessageChannel.
-/* istanbul ignore if */
-if (typeof setImmediate !== 'undefined' && isNative(setImmediate)) {
-  macroTimerFunc = function () {
-    setImmediate(flushCallbacks);
-  };
-} else if (typeof MessageChannel !== 'undefined' && (
-  isNative(MessageChannel) ||
-  // PhantomJS
-  MessageChannel.toString() === '[object MessageChannelConstructor]'
-)) {
-  var channel = new MessageChannel();
-  var port = channel.port2;
-  channel.port1.onmessage = flushCallbacks;
-  macroTimerFunc = function () {
-    port.postMessage(1);
-  };
-} else {
-  /* istanbul ignore next */
-  macroTimerFunc = function () {
-    setTimeout(flushCallbacks, 0);
-  };
-}
-
-// Determine microtask defer implementation.
-/* istanbul ignore next, $flow-disable-line */
-if (typeof Promise !== 'undefined' && isNative(Promise)) {
-  var p = Promise.resolve();
-  microTimerFunc = function () {
-    p.then(flushCallbacks);
-    // in problematic UIWebViews, Promise.then doesn't completely break, but
-    // it can get stuck in a weird state where callbacks are pushed into the
-    // microtask queue but the queue isn't being flushed, until the browser
-    // needs to do some other work, e.g. handle a timer. Therefore we can
-    // "force" the microtask queue to be flushed by adding an empty timer.
-    if (isIOS) { setTimeout(noop); }
-  };
-} else {
-  // fallback to macro
-  microTimerFunc = macroTimerFunc;
-}
-
-/**
- * Wrap a function so that if any code inside triggers state change,
- * the changes are queued using a (macro) task instead of a microtask.
- */
-function withMacroTask (fn) {
-  return fn._withTask || (fn._withTask = function () {
-    useMacroTask = true;
-    var res = fn.apply(null, arguments);
-    useMacroTask = false;
-    return res
-  })
-}
-
-function nextTick (cb, ctx) {
-  var _resolve;
-  callbacks.push(function () {
-    if (cb) {
-      try {
-        cb.call(ctx);
-      } catch (e) {
-        handleError(e, ctx, 'nextTick');
-      }
-    } else if (_resolve) {
-      _resolve(ctx);
-    }
-  });
-  if (!pending) {
-    pending = true;
-    if (useMacroTask) {
-      macroTimerFunc();
-    } else {
-      microTimerFunc();
-    }
-  }
-  // $flow-disable-line
-  if (!cb && typeof Promise !== 'undefined') {
-    return new Promise(function (resolve) {
-      _resolve = resolve;
-    })
-  }
-}
-
-/*  */
-
-var mark;
-var measure;
-
-{
-  var perf = inBrowser && window.performance;
-  /* istanbul ignore if */
-  if (
-    perf &&
-    perf.mark &&
-    perf.measure &&
-    perf.clearMarks &&
-    perf.clearMeasures
-  ) {
-    mark = function (tag) { return perf.mark(tag); };
-    measure = function (name, startTag, endTag) {
-      perf.measure(name, startTag, endTag);
-      perf.clearMarks(startTag);
-      perf.clearMarks(endTag);
-      perf.clearMeasures(name);
-    };
-  }
-}
-
-/* not type checking this file because flow doesn't play well with Proxy */
-
-var initProxy;
-
-{
-  var allowedGlobals = makeMap(
-    'Infinity,undefined,NaN,isFinite,isNaN,' +
-    'parseFloat,parseInt,decodeURI,decodeURIComponent,encodeURI,encodeURIComponent,' +
-    'Math,Number,Date,Array,Object,Boolean,String,RegExp,Map,Set,JSON,Intl,' +
-    'require' // for Webpack/Browserify
-  );
-
-  var warnNonPresent = function (target, key) {
-    warn(
-      "Property or method \"" + key + "\" is not defined on the instance but " +
-      'referenced during render. Make sure that this property is reactive, ' +
-      'either in the data option, or for class-based components, by ' +
-      'initializing the property. ' +
-      'See: https://vuejs.org/v2/guide/reactivity.html#Declaring-Reactive-Properties.',
-      target
-    );
-  };
-
-  var hasProxy =
-    typeof Proxy !== 'undefined' && isNative(Proxy);
-
-  if (hasProxy) {
-    var isBuiltInModifier = makeMap('stop,prevent,self,ctrl,shift,alt,meta,exact');
-    config.keyCodes = new Proxy(config.keyCodes, {
-      set: function set (target, key, value) {
-        if (isBuiltInModifier(key)) {
-          warn(("Avoid overwriting built-in modifier in config.keyCodes: ." + key));
-          return false
-        } else {
-          target[key] = value;
-          return true
-        }
-      }
-    });
-  }
-
-  var hasHandler = {
-    has: function has (target, key) {
-      var has = key in target;
-      var isAllowed = allowedGlobals(key) || key.charAt(0) === '_';
-      if (!has && !isAllowed) {
-        warnNonPresent(target, key);
-      }
-      return has || !isAllowed
-    }
-  };
-
-  var getHandler = {
-    get: function get (target, key) {
-      if (typeof key === 'string' && !(key in target)) {
-        warnNonPresent(target, key);
-      }
-      return target[key]
-    }
-  };
-
-  initProxy = function initProxy (vm) {
-    if (hasProxy) {
-      // determine which proxy handler to use
-      var options = vm.$options;
-      var handlers = options.render && options.render._withStripped
-        ? getHandler
-        : hasHandler;
-      vm._renderProxy = new Proxy(vm, handlers);
-    } else {
-      vm._renderProxy = vm;
-    }
-  };
-}
-
-/*  */
-
-var seenObjects = new _Set();
-
-/**
- * Recursively traverse an object to evoke all converted
- * getters, so that every nested property inside the object
- * is collected as a "deep" dependency.
- */
-function traverse (val) {
-  _traverse(val, seenObjects);
-  seenObjects.clear();
-}
-
-function _traverse (val, seen) {
-  var i, keys;
-  var isA = Array.isArray(val);
-  if ((!isA && !isObject(val)) || Object.isFrozen(val) || val instanceof VNode) {
-    return
-  }
-  if (val.__ob__) {
-    var depId = val.__ob__.dep.id;
-    if (seen.has(depId)) {
-      return
-    }
-    seen.add(depId);
-  }
-  if (isA) {
-    i = val.length;
-    while (i--) { _traverse(val[i], seen); }
-  } else {
-    keys = Object.keys(val);
-    i = keys.length;
-    while (i--) { _traverse(val[keys[i]], seen); }
-  }
-}
-
-/*  */
-
-var normalizeEvent = cached(function (name) {
-  var passive = name.charAt(0) === '&';
-  name = passive ? name.slice(1) : name;
-  var once$$1 = name.charAt(0) === '~'; // Prefixed last, checked first
-  name = once$$1 ? name.slice(1) : name;
-  var capture = name.charAt(0) === '!';
-  name = capture ? name.slice(1) : name;
-  return {
-    name: name,
-    once: once$$1,
-    capture: capture,
-    passive: passive
-  }
-});
-
-function createFnInvoker (fns) {
-  function invoker () {
-    var arguments$1 = arguments;
-
-    var fns = invoker.fns;
-    if (Array.isArray(fns)) {
-      var cloned = fns.slice();
-      for (var i = 0; i < cloned.length; i++) {
-        cloned[i].apply(null, arguments$1);
-      }
-    } else {
-      // return handler return value for single handlers
-      return fns.apply(null, arguments)
-    }
-  }
-  invoker.fns = fns;
-  return invoker
-}
-
-function updateListeners (
-  on,
-  oldOn,
-  add,
-  remove$$1,
-  vm
-) {
-  var name, def, cur, old, event;
-  for (name in on) {
-    def = cur = on[name];
-    old = oldOn[name];
-    event = normalizeEvent(name);
-    /* istanbul ignore if */
-    if (isUndef(cur)) {
-      "development" !== 'production' && warn(
-        "Invalid handler for event \"" + (event.name) + "\": got " + String(cur),
-        vm
-      );
-    } else if (isUndef(old)) {
-      if (isUndef(cur.fns)) {
-        cur = on[name] = createFnInvoker(cur);
-      }
-      add(event.name, cur, event.once, event.capture, event.passive, event.params);
-    } else if (cur !== old) {
-      old.fns = cur;
-      on[name] = old;
-    }
-  }
-  for (name in oldOn) {
-    if (isUndef(on[name])) {
-      event = normalizeEvent(name);
-      remove$$1(event.name, oldOn[name], event.capture);
-    }
-  }
-}
-
-/*  */
-
-function mergeVNodeHook (def, hookKey, hook) {
-  if (def instanceof VNode) {
-    def = def.data.hook || (def.data.hook = {});
-  }
-  var invoker;
-  var oldHook = def[hookKey];
-
-  function wrappedHook () {
-    hook.apply(this, arguments);
-    // important: remove merged hook to ensure it's called only once
-    // and prevent memory leak
-    remove(invoker.fns, wrappedHook);
-  }
-
-  if (isUndef(oldHook)) {
-    // no existing hook
-    invoker = createFnInvoker([wrappedHook]);
-  } else {
-    /* istanbul ignore if */
-    if (isDef(oldHook.fns) && isTrue(oldHook.merged)) {
-      // already a merged invoker
-      invoker = oldHook;
-      invoker.fns.push(wrappedHook);
-    } else {
-      // existing plain hook
-      invoker = createFnInvoker([oldHook, wrappedHook]);
-    }
-  }
-
-  invoker.merged = true;
-  def[hookKey] = invoker;
-}
-
-/*  */
-
-function extractPropsFromVNodeData (
-  data,
-  Ctor,
-  tag
-) {
-  // we are only extracting raw values here.
-  // validation and default values are handled in the child
-  // component itself.
-  var propOptions = Ctor.options.props;
-  if (isUndef(propOptions)) {
-    return
-  }
-  var res = {};
-  var attrs = data.attrs;
-  var props = data.props;
-  if (isDef(attrs) || isDef(props)) {
-    for (var key in propOptions) {
-      var altKey = hyphenate(key);
-      {
-        var keyInLowerCase = key.toLowerCase();
-        if (
-          key !== keyInLowerCase &&
-          attrs && hasOwn(attrs, keyInLowerCase)
-        ) {
-          tip(
-            "Prop \"" + keyInLowerCase + "\" is passed to component " +
-            (formatComponentName(tag || Ctor)) + ", but the declared prop name is" +
-            " \"" + key + "\". " +
-            "Note that HTML attributes are case-insensitive and camelCased " +
-            "props need to use their kebab-case equivalents when using in-DOM " +
-            "templates. You should probably use \"" + altKey + "\" instead of \"" + key + "\"."
-          );
-        }
-      }
-      checkProp(res, props, key, altKey, true) ||
-      checkProp(res, attrs, key, altKey, false);
-    }
-  }
-  return res
-}
-
-function checkProp (
-  res,
-  hash,
-  key,
-  altKey,
-  preserve
-) {
-  if (isDef(hash)) {
-    if (hasOwn(hash, key)) {
-      res[key] = hash[key];
-      if (!preserve) {
-        delete hash[key];
-      }
-      return true
-    } else if (hasOwn(hash, altKey)) {
-      res[key] = hash[altKey];
-      if (!preserve) {
-        delete hash[altKey];
-      }
-      return true
-    }
-  }
-  return false
-}
-
-/*  */
-
-// The template compiler attempts to minimize the need for normalization by
-// statically analyzing the template at compile time.
-//
-// For plain HTML markup, normalization can be completely skipped because the
-// generated render function is guaranteed to return Array<VNode>. There are
-// two cases where extra normalization is needed:
-
-// 1. When the children contains components - because a functional component
-// may return an Array instead of a single root. In this case, just a simple
-// normalization is needed - if any child is an Array, we flatten the whole
-// thing with Array.prototype.concat. It is guaranteed to be only 1-level deep
-// because functional components already normalize their own children.
-function simpleNormalizeChildren (children) {
-  for (var i = 0; i < children.length; i++) {
-    if (Array.isArray(children[i])) {
-      return Array.prototype.concat.apply([], children)
-    }
-  }
-  return children
-}
-
-// 2. When the children contains constructs that always generated nested Arrays,
-// e.g. <template>, <slot>, v-for, or when the children is provided by user
-// with hand-written render functions / JSX. In such cases a full normalization
-// is needed to cater to all possible types of children values.
-function normalizeChildren (children) {
-  return isPrimitive(children)
-    ? [createTextVNode(children)]
-    : Array.isArray(children)
-      ? normalizeArrayChildren(children)
-      : undefined
-}
-
-function isTextNode (node) {
-  return isDef(node) && isDef(node.text) && isFalse(node.isComment)
-}
-
-function normalizeArrayChildren (children, nestedIndex) {
-  var res = [];
-  var i, c, lastIndex, last;
-  for (i = 0; i < children.length; i++) {
-    c = children[i];
-    if (isUndef(c) || typeof c === 'boolean') { continue }
-    lastIndex = res.length - 1;
-    last = res[lastIndex];
-    //  nested
-    if (Array.isArray(c)) {
-      if (c.length > 0) {
-        c = normalizeArrayChildren(c, ((nestedIndex || '') + "_" + i));
-        // merge adjacent text nodes
-        if (isTextNode(c[0]) && isTextNode(last)) {
-          res[lastIndex] = createTextVNode(last.text + (c[0]).text);
-          c.shift();
-        }
-        res.push.apply(res, c);
-      }
-    } else if (isPrimitive(c)) {
-      if (isTextNode(last)) {
-        // merge adjacent text nodes
-        // this is necessary for SSR hydration because text nodes are
-        // essentially merged when rendered to HTML strings
-        res[lastIndex] = createTextVNode(last.text + c);
-      } else if (c !== '') {
-        // convert primitive to vnode
-        res.push(createTextVNode(c));
-      }
-    } else {
-      if (isTextNode(c) && isTextNode(last)) {
-        // merge adjacent text nodes
-        res[lastIndex] = createTextVNode(last.text + c.text);
-      } else {
-        // default key for nested array children (likely generated by v-for)
-        if (isTrue(children._isVList) &&
-          isDef(c.tag) &&
-          isUndef(c.key) &&
-          isDef(nestedIndex)) {
-          c.key = "__vlist" + nestedIndex + "_" + i + "__";
-        }
-        res.push(c);
-      }
-    }
-  }
-  return res
-}
-
-/*  */
-
-function ensureCtor (comp, base) {
-  if (
-    comp.__esModule ||
-    (hasSymbol && comp[Symbol.toStringTag] === 'Module')
-  ) {
-    comp = comp.default;
-  }
-  return isObject(comp)
-    ? base.extend(comp)
-    : comp
-}
-
-function createAsyncPlaceholder (
-  factory,
-  data,
-  context,
-  children,
-  tag
-) {
-  var node = createEmptyVNode();
-  node.asyncFactory = factory;
-  node.asyncMeta = { data: data, context: context, children: children, tag: tag };
-  return node
-}
-
-function resolveAsyncComponent (
-  factory,
-  baseCtor,
-  context
-) {
-  if (isTrue(factory.error) && isDef(factory.errorComp)) {
-    return factory.errorComp
-  }
-
-  if (isDef(factory.resolved)) {
-    return factory.resolved
-  }
-
-  if (isTrue(factory.loading) && isDef(factory.loadingComp)) {
-    return factory.loadingComp
-  }
-
-  if (isDef(factory.contexts)) {
-    // already pending
-    factory.contexts.push(context);
-  } else {
-    var contexts = factory.contexts = [context];
-    var sync = true;
-
-    var forceRender = function () {
-      for (var i = 0, l = contexts.length; i < l; i++) {
-        contexts[i].$forceUpdate();
-      }
-    };
-
-    var resolve = once(function (res) {
-      // cache resolved
-      factory.resolved = ensureCtor(res, baseCtor);
-      // invoke callbacks only if this is not a synchronous resolve
-      // (async resolves are shimmed as synchronous during SSR)
-      if (!sync) {
-        forceRender();
-      }
-    });
-
-    var reject = once(function (reason) {
-      "development" !== 'production' && warn(
-        "Failed to resolve async component: " + (String(factory)) +
-        (reason ? ("\nReason: " + reason) : '')
-      );
-      if (isDef(factory.errorComp)) {
-        factory.error = true;
-        forceRender();
-      }
-    });
-
-    var res = factory(resolve, reject);
-
-    if (isObject(res)) {
-      if (typeof res.then === 'function') {
-        // () => Promise
-        if (isUndef(factory.resolved)) {
-          res.then(resolve, reject);
-        }
-      } else if (isDef(res.component) && typeof res.component.then === 'function') {
-        res.component.then(resolve, reject);
-
-        if (isDef(res.error)) {
-          factory.errorComp = ensureCtor(res.error, baseCtor);
-        }
-
-        if (isDef(res.loading)) {
-          factory.loadingComp = ensureCtor(res.loading, baseCtor);
-          if (res.delay === 0) {
-            factory.loading = true;
-          } else {
-            setTimeout(function () {
-              if (isUndef(factory.resolved) && isUndef(factory.error)) {
-                factory.loading = true;
-                forceRender();
-              }
-            }, res.delay || 200);
-          }
-        }
-
-        if (isDef(res.timeout)) {
-          setTimeout(function () {
-            if (isUndef(factory.resolved)) {
-              reject(
-                "timeout (" + (res.timeout) + "ms)"
-              );
-            }
-          }, res.timeout);
-        }
-      }
-    }
-
-    sync = false;
-    // return in case resolved synchronously
-    return factory.loading
-      ? factory.loadingComp
-      : factory.resolved
-  }
-}
-
-/*  */
-
-function isAsyncPlaceholder (node) {
-  return node.isComment && node.asyncFactory
-}
-
-/*  */
-
-function getFirstComponentChild (children) {
-  if (Array.isArray(children)) {
-    for (var i = 0; i < children.length; i++) {
-      var c = children[i];
-      if (isDef(c) && (isDef(c.componentOptions) || isAsyncPlaceholder(c))) {
-        return c
-      }
-    }
-  }
-}
-
-/*  */
-
-/*  */
-
-function initEvents (vm) {
-  vm._events = Object.create(null);
-  vm._hasHookEvent = false;
-  // init parent attached events
-  var listeners = vm.$options._parentListeners;
-  if (listeners) {
-    updateComponentListeners(vm, listeners);
-  }
-}
-
-var target;
-
-function add (event, fn, once) {
-  if (once) {
-    target.$once(event, fn);
-  } else {
-    target.$on(event, fn);
-  }
-}
-
-function remove$1 (event, fn) {
-  target.$off(event, fn);
-}
-
-function updateComponentListeners (
-  vm,
-  listeners,
-  oldListeners
-) {
-  target = vm;
-  updateListeners(listeners, oldListeners || {}, add, remove$1, vm);
-  target = undefined;
-}
-
-function eventsMixin (Vue) {
-  var hookRE = /^hook:/;
-  Vue.prototype.$on = function (event, fn) {
-    var this$1 = this;
-
-    var vm = this;
-    if (Array.isArray(event)) {
-      for (var i = 0, l = event.length; i < l; i++) {
-        this$1.$on(event[i], fn);
-      }
-    } else {
-      (vm._events[event] || (vm._events[event] = [])).push(fn);
-      // optimize hook:event cost by using a boolean flag marked at registration
-      // instead of a hash lookup
-      if (hookRE.test(event)) {
-        vm._hasHookEvent = true;
-      }
-    }
-    return vm
-  };
-
-  Vue.prototype.$once = function (event, fn) {
-    var vm = this;
-    function on () {
-      vm.$off(event, on);
-      fn.apply(vm, arguments);
-    }
-    on.fn = fn;
-    vm.$on(event, on);
-    return vm
-  };
-
-  Vue.prototype.$off = function (event, fn) {
-    var this$1 = this;
-
-    var vm = this;
-    // all
-    if (!arguments.length) {
-      vm._events = Object.create(null);
-      return vm
-    }
-    // array of events
-    if (Array.isArray(event)) {
-      for (var i = 0, l = event.length; i < l; i++) {
-        this$1.$off(event[i], fn);
-      }
-      return vm
-    }
-    // specific event
-    var cbs = vm._events[event];
-    if (!cbs) {
-      return vm
-    }
-    if (!fn) {
-      vm._events[event] = null;
-      return vm
-    }
-    if (fn) {
-      // specific handler
-      var cb;
-      var i$1 = cbs.length;
-      while (i$1--) {
-        cb = cbs[i$1];
-        if (cb === fn || cb.fn === fn) {
-          cbs.splice(i$1, 1);
-          break
-        }
-      }
-    }
-    return vm
-  };
-
-  Vue.prototype.$emit = function (event) {
-    var vm = this;
-    {
-      var lowerCaseEvent = event.toLowerCase();
-      if (lowerCaseEvent !== event && vm._events[lowerCaseEvent]) {
-        tip(
-          "Event \"" + lowerCaseEvent + "\" is emitted in component " +
-          (formatComponentName(vm)) + " but the handler is registered for \"" + event + "\". " +
-          "Note that HTML attributes are case-insensitive and you cannot use " +
-          "v-on to listen to camelCase events when using in-DOM templates. " +
-          "You should probably use \"" + (hyphenate(event)) + "\" instead of \"" + event + "\"."
-        );
-      }
-    }
-    var cbs = vm._events[event];
-    if (cbs) {
-      cbs = cbs.length > 1 ? toArray(cbs) : cbs;
-      var args = toArray(arguments, 1);
-      for (var i = 0, l = cbs.length; i < l; i++) {
-        try {
-          cbs[i].apply(vm, args);
-        } catch (e) {
-          handleError(e, vm, ("event handler for \"" + event + "\""));
-        }
-      }
-    }
-    return vm
-  };
-}
-
-/*  */
-
-
-
-/**
- * Runtime helper for resolving raw children VNodes into a slot object.
- */
-function resolveSlots (
-  children,
-  context
-) {
-  var slots = {};
-  if (!children) {
-    return slots
-  }
-  for (var i = 0, l = children.length; i < l; i++) {
-    var child = children[i];
-    var data = child.data;
-    // remove slot attribute if the node is resolved as a Vue slot node
-    if (data && data.attrs && data.attrs.slot) {
-      delete data.attrs.slot;
-    }
-    // named slots should only be respected if the vnode was rendered in the
-    // same context.
-    if ((child.context === context || child.fnContext === context) &&
-      data && data.slot != null
-    ) {
-      var name = data.slot;
-      var slot = (slots[name] || (slots[name] = []));
-      if (child.tag === 'template') {
-        slot.push.apply(slot, child.children || []);
-      } else {
-        slot.push(child);
-      }
-    } else {
-      (slots.default || (slots.default = [])).push(child);
-    }
-  }
-  // ignore slots that contains only whitespace
-  for (var name$1 in slots) {
-    if (slots[name$1].every(isWhitespace)) {
-      delete slots[name$1];
-    }
-  }
-  return slots
-}
-
-function isWhitespace (node) {
-  return (node.isComment && !node.asyncFactory) || node.text === ' '
-}
-
-function resolveScopedSlots (
-  fns, // see flow/vnode
-  res
-) {
-  res = res || {};
-  for (var i = 0; i < fns.length; i++) {
-    if (Array.isArray(fns[i])) {
-      resolveScopedSlots(fns[i], res);
-    } else {
-      res[fns[i].key] = fns[i].fn;
-    }
-  }
-  return res
-}
-
-/*  */
-
-var activeInstance = null;
-var isUpdatingChildComponent = false;
-
-function initLifecycle (vm) {
-  var options = vm.$options;
-
-  // locate first non-abstract parent
-  var parent = options.parent;
-  if (parent && !options.abstract) {
-    while (parent.$options.abstract && parent.$parent) {
-      parent = parent.$parent;
-    }
-    parent.$children.push(vm);
-  }
-
-  vm.$parent = parent;
-  vm.$root = parent ? parent.$root : vm;
-
-  vm.$children = [];
-  vm.$refs = {};
-
-  vm._watcher = null;
-  vm._inactive = null;
-  vm._directInactive = false;
-  vm._isMounted = false;
-  vm._isDestroyed = false;
-  vm._isBeingDestroyed = false;
-}
-
-function lifecycleMixin (Vue) {
-  Vue.prototype._update = function (vnode, hydrating) {
-    var vm = this;
-    if (vm._isMounted) {
-      callHook(vm, 'beforeUpdate');
-    }
-    var prevEl = vm.$el;
-    var prevVnode = vm._vnode;
-    var prevActiveInstance = activeInstance;
-    activeInstance = vm;
-    vm._vnode = vnode;
-    // Vue.prototype.__patch__ is injected in entry points
-    // based on the rendering backend used.
-    if (!prevVnode) {
-      // initial render
-      vm.$el = vm.__patch__(
-        vm.$el, vnode, hydrating, false /* removeOnly */,
-        vm.$options._parentElm,
-        vm.$options._refElm
-      );
-      // no need for the ref nodes after initial patch
-      // this prevents keeping a detached DOM tree in memory (#5851)
-      vm.$options._parentElm = vm.$options._refElm = null;
-    } else {
-      // updates
-      vm.$el = vm.__patch__(prevVnode, vnode);
-    }
-    activeInstance = prevActiveInstance;
-    // update __vue__ reference
-    if (prevEl) {
-      prevEl.__vue__ = null;
-    }
-    if (vm.$el) {
-      vm.$el.__vue__ = vm;
-    }
-    // if parent is an HOC, update its $el as well
-    if (vm.$vnode && vm.$parent && vm.$vnode === vm.$parent._vnode) {
-      vm.$parent.$el = vm.$el;
-    }
-    // updated hook is called by the scheduler to ensure that children are
-    // updated in a parent's updated hook.
-  };
-
-  Vue.prototype.$forceUpdate = function () {
-    var vm = this;
-    if (vm._watcher) {
-      vm._watcher.update();
-    }
-  };
-
-  Vue.prototype.$destroy = function () {
-    var vm = this;
-    if (vm._isBeingDestroyed) {
-      return
-    }
-    callHook(vm, 'beforeDestroy');
-    vm._isBeingDestroyed = true;
-    // remove self from parent
-    var parent = vm.$parent;
-    if (parent && !parent._isBeingDestroyed && !vm.$options.abstract) {
-      remove(parent.$children, vm);
-    }
-    // teardown watchers
-    if (vm._watcher) {
-      vm._watcher.teardown();
-    }
-    var i = vm._watchers.length;
-    while (i--) {
-      vm._watchers[i].teardown();
-    }
-    // remove reference from data ob
-    // frozen object may not have observer.
-    if (vm._data.__ob__) {
-      vm._data.__ob__.vmCount--;
-    }
-    // call the last hook...
-    vm._isDestroyed = true;
-    // invoke destroy hooks on current rendered tree
-    vm.__patch__(vm._vnode, null);
-    // fire destroyed hook
-    callHook(vm, 'destroyed');
-    // turn off all instance listeners.
-    vm.$off();
-    // remove __vue__ reference
-    if (vm.$el) {
-      vm.$el.__vue__ = null;
-    }
-    // release circular reference (#6759)
-    if (vm.$vnode) {
-      vm.$vnode.parent = null;
-    }
-  };
-}
-
-function mountComponent (
-  vm,
-  el,
-  hydrating
-) {
-  vm.$el = el;
-  if (!vm.$options.render) {
-    vm.$options.render = createEmptyVNode;
-    {
-      /* istanbul ignore if */
-      if ((vm.$options.template && vm.$options.template.charAt(0) !== '#') ||
-        vm.$options.el || el) {
-        warn(
-          'You are using the runtime-only build of Vue where the template ' +
-          'compiler is not available. Either pre-compile the templates into ' +
-          'render functions, or use the compiler-included build.',
-          vm
-        );
-      } else {
-        warn(
-          'Failed to mount component: template or render function not defined.',
-          vm
-        );
-      }
-    }
-  }
-  callHook(vm, 'beforeMount');
-
-  var updateComponent;
-  /* istanbul ignore if */
-  if ("development" !== 'production' && config.performance && mark) {
-    updateComponent = function () {
-      var name = vm._name;
-      var id = vm._uid;
-      var startTag = "vue-perf-start:" + id;
-      var endTag = "vue-perf-end:" + id;
-
-      mark(startTag);
-      var vnode = vm._render();
-      mark(endTag);
-      measure(("vue " + name + " render"), startTag, endTag);
-
-      mark(startTag);
-      vm._update(vnode, hydrating);
-      mark(endTag);
-      measure(("vue " + name + " patch"), startTag, endTag);
-    };
-  } else {
-    updateComponent = function () {
-      vm._update(vm._render(), hydrating);
-    };
-  }
-
-  // we set this to vm._watcher inside the watcher's constructor
-  // since the watcher's initial patch may call $forceUpdate (e.g. inside child
-  // component's mounted hook), which relies on vm._watcher being already defined
-  new Watcher(vm, updateComponent, noop, null, true /* isRenderWatcher */);
-  hydrating = false;
-
-  // manually mounted instance, call mounted on self
-  // mounted is called for render-created child components in its inserted hook
-  if (vm.$vnode == null) {
-    vm._isMounted = true;
-    callHook(vm, 'mounted');
-  }
-  return vm
-}
-
-function updateChildComponent (
-  vm,
-  propsData,
-  listeners,
-  parentVnode,
-  renderChildren
-) {
-  {
-    isUpdatingChildComponent = true;
-  }
-
-  // determine whether component has slot children
-  // we need to do this before overwriting $options._renderChildren
-  var hasChildren = !!(
-    renderChildren ||               // has new static slots
-    vm.$options._renderChildren ||  // has old static slots
-    parentVnode.data.scopedSlots || // has new scoped slots
-    vm.$scopedSlots !== emptyObject // has old scoped slots
-  );
-
-  vm.$options._parentVnode = parentVnode;
-  vm.$vnode = parentVnode; // update vm's placeholder node without re-render
-
-  if (vm._vnode) { // update child tree's parent
-    vm._vnode.parent = parentVnode;
-  }
-  vm.$options._renderChildren = renderChildren;
-
-  // update $attrs and $listeners hash
-  // these are also reactive so they may trigger child update if the child
-  // used them during render
-  vm.$attrs = parentVnode.data.attrs || emptyObject;
-  vm.$listeners = listeners || emptyObject;
-
-  // update props
-  if (propsData && vm.$options.props) {
-    toggleObserving(false);
-    var props = vm._props;
-    var propKeys = vm.$options._propKeys || [];
-    for (var i = 0; i < propKeys.length; i++) {
-      var key = propKeys[i];
-      var propOptions = vm.$options.props; // wtf flow?
-      props[key] = validateProp(key, propOptions, propsData, vm);
-    }
-    toggleObserving(true);
-    // keep a copy of raw propsData
-    vm.$options.propsData = propsData;
-  }
-
-  // update listeners
-  listeners = listeners || emptyObject;
-  var oldListeners = vm.$options._parentListeners;
-  vm.$options._parentListeners = listeners;
-  updateComponentListeners(vm, listeners, oldListeners);
-
-  // resolve slots + force update if has children
-  if (hasChildren) {
-    vm.$slots = resolveSlots(renderChildren, parentVnode.context);
-    vm.$forceUpdate();
-  }
-
-  {
-    isUpdatingChildComponent = false;
-  }
-}
-
-function isInInactiveTree (vm) {
-  while (vm && (vm = vm.$parent)) {
-    if (vm._inactive) { return true }
-  }
-  return false
-}
-
-function activateChildComponent (vm, direct) {
-  if (direct) {
-    vm._directInactive = false;
-    if (isInInactiveTree(vm)) {
-      return
-    }
-  } else if (vm._directInactive) {
-    return
-  }
-  if (vm._inactive || vm._inactive === null) {
-    vm._inactive = false;
-    for (var i = 0; i < vm.$children.length; i++) {
-      activateChildComponent(vm.$children[i]);
-    }
-    callHook(vm, 'activated');
-  }
-}
-
-function deactivateChildComponent (vm, direct) {
-  if (direct) {
-    vm._directInactive = true;
-    if (isInInactiveTree(vm)) {
-      return
-    }
-  }
-  if (!vm._inactive) {
-    vm._inactive = true;
-    for (var i = 0; i < vm.$children.length; i++) {
-      deactivateChildComponent(vm.$children[i]);
-    }
-    callHook(vm, 'deactivated');
-  }
-}
-
-function callHook (vm, hook) {
-  // #7573 disable dep collection when invoking lifecycle hooks
-  pushTarget();
-  var handlers = vm.$options[hook];
-  if (handlers) {
-    for (var i = 0, j = handlers.length; i < j; i++) {
-      try {
-        handlers[i].call(vm);
-      } catch (e) {
-        handleError(e, vm, (hook + " hook"));
-      }
-    }
-  }
-  if (vm._hasHookEvent) {
-    vm.$emit('hook:' + hook);
-  }
-  popTarget();
-}
-
-/*  */
-
-
-var MAX_UPDATE_COUNT = 100;
-
-var queue = [];
-var activatedChildren = [];
-var has = {};
-var circular = {};
-var waiting = false;
-var flushing = false;
-var index = 0;
-
-/**
- * Reset the scheduler's state.
- */
-function resetSchedulerState () {
-  index = queue.length = activatedChildren.length = 0;
-  has = {};
-  {
-    circular = {};
-  }
-  waiting = flushing = false;
-}
-
-/**
- * Flush both queues and run the watchers.
- */
-function flushSchedulerQueue () {
-  flushing = true;
-  var watcher, id;
-
-  // Sort queue before flush.
-  // This ensures that:
-  // 1. Components are updated from parent to child. (because parent is always
-  //    created before the child)
-  // 2. A component's user watchers are run before its render watcher (because
-  //    user watchers are created before the render watcher)
-  // 3. If a component is destroyed during a parent component's watcher run,
-  //    its watchers can be skipped.
-  queue.sort(function (a, b) { return a.id - b.id; });
-
-  // do not cache length because more watchers might be pushed
-  // as we run existing watchers
-  for (index = 0; index < queue.length; index++) {
-    watcher = queue[index];
-    id = watcher.id;
-    has[id] = null;
-    watcher.run();
-    // in dev build, check and stop circular updates.
-    if ("development" !== 'production' && has[id] != null) {
-      circular[id] = (circular[id] || 0) + 1;
-      if (circular[id] > MAX_UPDATE_COUNT) {
-        warn(
-          'You may have an infinite update loop ' + (
-            watcher.user
-              ? ("in watcher with expression \"" + (watcher.expression) + "\"")
-              : "in a component render function."
-          ),
-          watcher.vm
-        );
-        break
-      }
-    }
-  }
-
-  // keep copies of post queues before resetting state
-  var activatedQueue = activatedChildren.slice();
-  var updatedQueue = queue.slice();
-
-  resetSchedulerState();
-
-  // call component updated and activated hooks
-  callActivatedHooks(activatedQueue);
-  callUpdatedHooks(updatedQueue);
-
-  // devtool hook
-  /* istanbul ignore if */
-  if (devtools && config.devtools) {
-    devtools.emit('flush');
-  }
-}
-
-function callUpdatedHooks (queue) {
-  var i = queue.length;
-  while (i--) {
-    var watcher = queue[i];
-    var vm = watcher.vm;
-    if (vm._watcher === watcher && vm._isMounted) {
-      callHook(vm, 'updated');
-    }
-  }
-}
-
-/**
- * Queue a kept-alive component that was activated during patch.
- * The queue will be processed after the entire tree has been patched.
- */
-function queueActivatedComponent (vm) {
-  // setting _inactive to false here so that a render function can
-  // rely on checking whether it's in an inactive tree (e.g. router-view)
-  vm._inactive = false;
-  activatedChildren.push(vm);
-}
-
-function callActivatedHooks (queue) {
-  for (var i = 0; i < queue.length; i++) {
-    queue[i]._inactive = true;
-    activateChildComponent(queue[i], true /* true */);
-  }
-}
-
-/**
- * Push a watcher into the watcher queue.
- * Jobs with duplicate IDs will be skipped unless it's
- * pushed when the queue is being flushed.
- */
-function queueWatcher (watcher) {
-  var id = watcher.id;
-  if (has[id] == null) {
-    has[id] = true;
-    if (!flushing) {
-      queue.push(watcher);
-    } else {
-      // if already flushing, splice the watcher based on its id
-      // if already past its id, it will be run next immediately.
-      var i = queue.length - 1;
-      while (i > index && queue[i].id > watcher.id) {
-        i--;
-      }
-      queue.splice(i + 1, 0, watcher);
-    }
-    // queue the flush
-    if (!waiting) {
-      waiting = true;
-      nextTick(flushSchedulerQueue);
-    }
-  }
-}
-
-/*  */
-
-var uid$1 = 0;
-
-/**
- * A watcher parses an expression, collects dependencies,
- * and fires callback when the expression value changes.
- * This is used for both the $watch() api and directives.
- */
-var Watcher = function Watcher (
-  vm,
-  expOrFn,
-  cb,
-  options,
-  isRenderWatcher
-) {
-  this.vm = vm;
-  if (isRenderWatcher) {
-    vm._watcher = this;
-  }
-  vm._watchers.push(this);
-  // options
-  if (options) {
-    this.deep = !!options.deep;
-    this.user = !!options.user;
-    this.lazy = !!options.lazy;
-    this.sync = !!options.sync;
-  } else {
-    this.deep = this.user = this.lazy = this.sync = false;
-  }
-  this.cb = cb;
-  this.id = ++uid$1; // uid for batching
-  this.active = true;
-  this.dirty = this.lazy; // for lazy watchers
-  this.deps = [];
-  this.newDeps = [];
-  this.depIds = new _Set();
-  this.newDepIds = new _Set();
-  this.expression = expOrFn.toString();
-  // parse expression for getter
-  if (typeof expOrFn === 'function') {
-    this.getter = expOrFn;
-  } else {
-    this.getter = parsePath(expOrFn);
-    if (!this.getter) {
-      this.getter = function () {};
-      "development" !== 'production' && warn(
-        "Failed watching path: \"" + expOrFn + "\" " +
-        'Watcher only accepts simple dot-delimited paths. ' +
-        'For full control, use a function instead.',
-        vm
-      );
-    }
-  }
-  this.value = this.lazy
-    ? undefined
-    : this.get();
-};
-
-/**
- * Evaluate the getter, and re-collect dependencies.
- */
-Watcher.prototype.get = function get () {
-  pushTarget(this);
-  var value;
-  var vm = this.vm;
-  try {
-    value = this.getter.call(vm, vm);
-  } catch (e) {
-    if (this.user) {
-      handleError(e, vm, ("getter for watcher \"" + (this.expression) + "\""));
-    } else {
-      throw e
-    }
-  } finally {
-    // "touch" every property so they are all tracked as
-    // dependencies for deep watching
-    if (this.deep) {
-      traverse(value);
-    }
-    popTarget();
-    this.cleanupDeps();
-  }
-  return value
-};
-
-/**
- * Add a dependency to this directive.
- */
-Watcher.prototype.addDep = function addDep (dep) {
-  var id = dep.id;
-  if (!this.newDepIds.has(id)) {
-    this.newDepIds.add(id);
-    this.newDeps.push(dep);
-    if (!this.depIds.has(id)) {
-      dep.addSub(this);
-    }
-  }
-};
-
-/**
- * Clean up for dependency collection.
- */
-Watcher.prototype.cleanupDeps = function cleanupDeps () {
-    var this$1 = this;
-
-  var i = this.deps.length;
-  while (i--) {
-    var dep = this$1.deps[i];
-    if (!this$1.newDepIds.has(dep.id)) {
-      dep.removeSub(this$1);
-    }
-  }
-  var tmp = this.depIds;
-  this.depIds = this.newDepIds;
-  this.newDepIds = tmp;
-  this.newDepIds.clear();
-  tmp = this.deps;
-  this.deps = this.newDeps;
-  this.newDeps = tmp;
-  this.newDeps.length = 0;
-};
-
-/**
- * Subscriber interface.
- * Will be called when a dependency changes.
- */
-Watcher.prototype.update = function update () {
-  /* istanbul ignore else */
-  if (this.lazy) {
-    this.dirty = true;
-  } else if (this.sync) {
-    this.run();
-  } else {
-    queueWatcher(this);
-  }
-};
-
-/**
- * Scheduler job interface.
- * Will be called by the scheduler.
- */
-Watcher.prototype.run = function run () {
-  if (this.active) {
-    var value = this.get();
-    if (
-      value !== this.value ||
-      // Deep watchers and watchers on Object/Arrays should fire even
-      // when the value is the same, because the value may
-      // have mutated.
-      isObject(value) ||
-      this.deep
-    ) {
-      // set new value
-      var oldValue = this.value;
-      this.value = value;
-      if (this.user) {
-        try {
-          this.cb.call(this.vm, value, oldValue);
-        } catch (e) {
-          handleError(e, this.vm, ("callback for watcher \"" + (this.expression) + "\""));
-        }
-      } else {
-        this.cb.call(this.vm, value, oldValue);
-      }
-    }
-  }
-};
-
-/**
- * Evaluate the value of the watcher.
- * This only gets called for lazy watchers.
- */
-Watcher.prototype.evaluate = function evaluate () {
-  this.value = this.get();
-  this.dirty = false;
-};
-
-/**
- * Depend on all deps collected by this watcher.
- */
-Watcher.prototype.depend = function depend () {
-    var this$1 = this;
-
-  var i = this.deps.length;
-  while (i--) {
-    this$1.deps[i].depend();
-  }
-};
-
-/**
- * Remove self from all dependencies' subscriber list.
- */
-Watcher.prototype.teardown = function teardown () {
-    var this$1 = this;
-
-  if (this.active) {
-    // remove self from vm's watcher list
-    // this is a somewhat expensive operation so we skip it
-    // if the vm is being destroyed.
-    if (!this.vm._isBeingDestroyed) {
-      remove(this.vm._watchers, this);
-    }
-    var i = this.deps.length;
-    while (i--) {
-      this$1.deps[i].removeSub(this$1);
-    }
-    this.active = false;
-  }
-};
-
-/*  */
-
-var sharedPropertyDefinition = {
-  enumerable: true,
-  configurable: true,
-  get: noop,
-  set: noop
-};
-
-function proxy (target, sourceKey, key) {
-  sharedPropertyDefinition.get = function proxyGetter () {
-    return this[sourceKey][key]
-  };
-  sharedPropertyDefinition.set = function proxySetter (val) {
-    this[sourceKey][key] = val;
-  };
-  Object.defineProperty(target, key, sharedPropertyDefinition);
-}
-
-function initState (vm) {
-  vm._watchers = [];
-  var opts = vm.$options;
-  if (opts.props) { initProps(vm, opts.props); }
-  if (opts.methods) { initMethods(vm, opts.methods); }
-  if (opts.data) {
-    initData(vm);
-  } else {
-    observe(vm._data = {}, true /* asRootData */);
-  }
-  if (opts.computed) { initComputed(vm, opts.computed); }
-  if (opts.watch && opts.watch !== nativeWatch) {
-    initWatch(vm, opts.watch);
-  }
-}
-
-function initProps (vm, propsOptions) {
-  var propsData = vm.$options.propsData || {};
-  var props = vm._props = {};
-  // cache prop keys so that future props updates can iterate using Array
-  // instead of dynamic object key enumeration.
-  var keys = vm.$options._propKeys = [];
-  var isRoot = !vm.$parent;
-  // root instance props should be converted
-  if (!isRoot) {
-    toggleObserving(false);
-  }
-  var loop = function ( key ) {
-    keys.push(key);
-    var value = validateProp(key, propsOptions, propsData, vm);
-    /* istanbul ignore else */
-    {
-      var hyphenatedKey = hyphenate(key);
-      if (isReservedAttribute(hyphenatedKey) ||
-          config.isReservedAttr(hyphenatedKey)) {
-        warn(
-          ("\"" + hyphenatedKey + "\" is a reserved attribute and cannot be used as component prop."),
-          vm
-        );
-      }
-      defineReactive(props, key, value, function () {
-        if (vm.$parent && !isUpdatingChildComponent) {
-          warn(
-            "Avoid mutating a prop directly since the value will be " +
-            "overwritten whenever the parent component re-renders. " +
-            "Instead, use a data or computed property based on the prop's " +
-            "value. Prop being mutated: \"" + key + "\"",
-            vm
-          );
-        }
-      });
-    }
-    // static props are already proxied on the component's prototype
-    // during Vue.extend(). We only need to proxy props defined at
-    // instantiation here.
-    if (!(key in vm)) {
-      proxy(vm, "_props", key);
-    }
-  };
-
-  for (var key in propsOptions) loop( key );
-  toggleObserving(true);
-}
-
-function initData (vm) {
-  var data = vm.$options.data;
-  data = vm._data = typeof data === 'function'
-    ? getData(data, vm)
-    : data || {};
-  if (!isPlainObject(data)) {
-    data = {};
-    "development" !== 'production' && warn(
-      'data functions should return an object:\n' +
-      'https://vuejs.org/v2/guide/components.html#data-Must-Be-a-Function',
-      vm
-    );
-  }
-  // proxy data on instance
-  var keys = Object.keys(data);
-  var props = vm.$options.props;
-  var methods = vm.$options.methods;
-  var i = keys.length;
-  while (i--) {
-    var key = keys[i];
-    {
-      if (methods && hasOwn(methods, key)) {
-        warn(
-          ("Method \"" + key + "\" has already been defined as a data property."),
-          vm
-        );
-      }
-    }
-    if (props && hasOwn(props, key)) {
-      "development" !== 'production' && warn(
-        "The data property \"" + key + "\" is already declared as a prop. " +
-        "Use prop default value instead.",
-        vm
-      );
-    } else if (!isReserved(key)) {
-      proxy(vm, "_data", key);
-    }
-  }
-  // observe data
-  observe(data, true /* asRootData */);
-}
-
-function getData (data, vm) {
-  // #7573 disable dep collection when invoking data getters
-  pushTarget();
-  try {
-    return data.call(vm, vm)
-  } catch (e) {
-    handleError(e, vm, "data()");
-    return {}
-  } finally {
-    popTarget();
-  }
-}
-
-var computedWatcherOptions = { lazy: true };
-
-function initComputed (vm, computed) {
-  // $flow-disable-line
-  var watchers = vm._computedWatchers = Object.create(null);
-  // computed properties are just getters during SSR
-  var isSSR = isServerRendering();
-
-  for (var key in computed) {
-    var userDef = computed[key];
-    var getter = typeof userDef === 'function' ? userDef : userDef.get;
-    if ("development" !== 'production' && getter == null) {
-      warn(
-        ("Getter is missing for computed property \"" + key + "\"."),
-        vm
-      );
-    }
-
-    if (!isSSR) {
-      // create internal watcher for the computed property.
-      watchers[key] = new Watcher(
-        vm,
-        getter || noop,
-        noop,
-        computedWatcherOptions
-      );
-    }
-
-    // component-defined computed properties are already defined on the
-    // component prototype. We only need to define computed properties defined
-    // at instantiation here.
-    if (!(key in vm)) {
-      defineComputed(vm, key, userDef);
-    } else {
-      if (key in vm.$data) {
-        warn(("The computed property \"" + key + "\" is already defined in data."), vm);
-      } else if (vm.$options.props && key in vm.$options.props) {
-        warn(("The computed property \"" + key + "\" is already defined as a prop."), vm);
-      }
-    }
-  }
-}
-
-function defineComputed (
-  target,
-  key,
-  userDef
-) {
-  var shouldCache = !isServerRendering();
-  if (typeof userDef === 'function') {
-    sharedPropertyDefinition.get = shouldCache
-      ? createComputedGetter(key)
-      : userDef;
-    sharedPropertyDefinition.set = noop;
-  } else {
-    sharedPropertyDefinition.get = userDef.get
-      ? shouldCache && userDef.cache !== false
-        ? createComputedGetter(key)
-        : userDef.get
-      : noop;
-    sharedPropertyDefinition.set = userDef.set
-      ? userDef.set
-      : noop;
-  }
-  if ("development" !== 'production' &&
-      sharedPropertyDefinition.set === noop) {
-    sharedPropertyDefinition.set = function () {
-      warn(
-        ("Computed property \"" + key + "\" was assigned to but it has no setter."),
-        this
-      );
-    };
-  }
-  Object.defineProperty(target, key, sharedPropertyDefinition);
-}
-
-function createComputedGetter (key) {
-  return function computedGetter () {
-    var watcher = this._computedWatchers && this._computedWatchers[key];
-    if (watcher) {
-      if (watcher.dirty) {
-        watcher.evaluate();
-      }
-      if (Dep.target) {
-        watcher.depend();
-      }
-      return watcher.value
-    }
-  }
-}
-
-function initMethods (vm, methods) {
-  var props = vm.$options.props;
-  for (var key in methods) {
-    {
-      if (methods[key] == null) {
-        warn(
-          "Method \"" + key + "\" has an undefined value in the component definition. " +
-          "Did you reference the function correctly?",
-          vm
-        );
-      }
-      if (props && hasOwn(props, key)) {
-        warn(
-          ("Method \"" + key + "\" has already been defined as a prop."),
-          vm
-        );
-      }
-      if ((key in vm) && isReserved(key)) {
-        warn(
-          "Method \"" + key + "\" conflicts with an existing Vue instance method. " +
-          "Avoid defining component methods that start with _ or $."
-        );
-      }
-    }
-    vm[key] = methods[key] == null ? noop : bind(methods[key], vm);
-  }
-}
-
-function initWatch (vm, watch) {
-  for (var key in watch) {
-    var handler = watch[key];
-    if (Array.isArray(handler)) {
-      for (var i = 0; i < handler.length; i++) {
-        createWatcher(vm, key, handler[i]);
-      }
-    } else {
-      createWatcher(vm, key, handler);
-    }
-  }
-}
-
-function createWatcher (
-  vm,
-  expOrFn,
-  handler,
-  options
-) {
-  if (isPlainObject(handler)) {
-    options = handler;
-    handler = handler.handler;
-  }
-  if (typeof handler === 'string') {
-    handler = vm[handler];
-  }
-  return vm.$watch(expOrFn, handler, options)
-}
-
-function stateMixin (Vue) {
-  // flow somehow has problems with directly declared definition object
-  // when using Object.defineProperty, so we have to procedurally build up
-  // the object here.
-  var dataDef = {};
-  dataDef.get = function () { return this._data };
-  var propsDef = {};
-  propsDef.get = function () { return this._props };
-  {
-    dataDef.set = function (newData) {
-      warn(
-        'Avoid replacing instance root $data. ' +
-        'Use nested data properties instead.',
-        this
-      );
-    };
-    propsDef.set = function () {
-      warn("$props is readonly.", this);
-    };
-  }
-  Object.defineProperty(Vue.prototype, '$data', dataDef);
-  Object.defineProperty(Vue.prototype, '$props', propsDef);
-
-  Vue.prototype.$set = set;
-  Vue.prototype.$delete = del;
-
-  Vue.prototype.$watch = function (
-    expOrFn,
-    cb,
-    options
-  ) {
-    var vm = this;
-    if (isPlainObject(cb)) {
-      return createWatcher(vm, expOrFn, cb, options)
-    }
-    options = options || {};
-    options.user = true;
-    var watcher = new Watcher(vm, expOrFn, cb, options);
-    if (options.immediate) {
-      cb.call(vm, watcher.value);
-    }
-    return function unwatchFn () {
-      watcher.teardown();
-    }
-  };
-}
-
-/*  */
-
-function initProvide (vm) {
-  var provide = vm.$options.provide;
-  if (provide) {
-    vm._provided = typeof provide === 'function'
-      ? provide.call(vm)
-      : provide;
-  }
-}
-
-function initInjections (vm) {
-  var result = resolveInject(vm.$options.inject, vm);
-  if (result) {
-    toggleObserving(false);
-    Object.keys(result).forEach(function (key) {
-      /* istanbul ignore else */
-      {
-        defineReactive(vm, key, result[key], function () {
-          warn(
-            "Avoid mutating an injected value directly since the changes will be " +
-            "overwritten whenever the provided component re-renders. " +
-            "injection being mutated: \"" + key + "\"",
-            vm
-          );
-        });
-      }
-    });
-    toggleObserving(true);
-  }
-}
-
-function resolveInject (inject, vm) {
-  if (inject) {
-    // inject is :any because flow is not smart enough to figure out cached
-    var result = Object.create(null);
-    var keys = hasSymbol
-      ? Reflect.ownKeys(inject).filter(function (key) {
-        /* istanbul ignore next */
-        return Object.getOwnPropertyDescriptor(inject, key).enumerable
-      })
-      : Object.keys(inject);
-
-    for (var i = 0; i < keys.length; i++) {
-      var key = keys[i];
-      var provideKey = inject[key].from;
-      var source = vm;
-      while (source) {
-        if (source._provided && hasOwn(source._provided, provideKey)) {
-          result[key] = source._provided[provideKey];
-          break
-        }
-        source = source.$parent;
-      }
-      if (!source) {
-        if ('default' in inject[key]) {
-          var provideDefault = inject[key].default;
-          result[key] = typeof provideDefault === 'function'
-            ? provideDefault.call(vm)
-            : provideDefault;
-        } else {
-          warn(("Injection \"" + key + "\" not found"), vm);
-        }
-      }
-    }
-    return result
-  }
-}
-
-/*  */
-
-/**
- * Runtime helper for rendering v-for lists.
- */
-function renderList (
-  val,
-  render
-) {
-  var ret, i, l, keys, key;
-  if (Array.isArray(val) || typeof val === 'string') {
-    ret = new Array(val.length);
-    for (i = 0, l = val.length; i < l; i++) {
-      ret[i] = render(val[i], i);
-    }
-  } else if (typeof val === 'number') {
-    ret = new Array(val);
-    for (i = 0; i < val; i++) {
-      ret[i] = render(i + 1, i);
-    }
-  } else if (isObject(val)) {
-    keys = Object.keys(val);
-    ret = new Array(keys.length);
-    for (i = 0, l = keys.length; i < l; i++) {
-      key = keys[i];
-      ret[i] = render(val[key], key, i);
-    }
-  }
-  if (isDef(ret)) {
-    (ret)._isVList = true;
-  }
-  return ret
-}
-
-/*  */
-
-/**
- * Runtime helper for rendering <slot>
- */
-function renderSlot (
-  name,
-  fallback,
-  props,
-  bindObject
-) {
-  var scopedSlotFn = this.$scopedSlots[name];
-  var nodes;
-  if (scopedSlotFn) { // scoped slot
-    props = props || {};
-    if (bindObject) {
-      if ("development" !== 'production' && !isObject(bindObject)) {
-        warn(
-          'slot v-bind without argument expects an Object',
-          this
-        );
-      }
-      props = extend(extend({}, bindObject), props);
-    }
-    nodes = scopedSlotFn(props) || fallback;
-  } else {
-    var slotNodes = this.$slots[name];
-    // warn duplicate slot usage
-    if (slotNodes) {
-      if ("development" !== 'production' && slotNodes._rendered) {
-        warn(
-          "Duplicate presence of slot \"" + name + "\" found in the same render tree " +
-          "- this will likely cause render errors.",
-          this
-        );
-      }
-      slotNodes._rendered = true;
-    }
-    nodes = slotNodes || fallback;
-  }
-
-  var target = props && props.slot;
-  if (target) {
-    return this.$createElement('template', { slot: target }, nodes)
-  } else {
-    return nodes
-  }
-}
-
-/*  */
-
-/**
- * Runtime helper for resolving filters
- */
-function resolveFilter (id) {
-  return resolveAsset(this.$options, 'filters', id, true) || identity
-}
-
-/*  */
-
-function isKeyNotMatch (expect, actual) {
-  if (Array.isArray(expect)) {
-    return expect.indexOf(actual) === -1
-  } else {
-    return expect !== actual
-  }
-}
-
-/**
- * Runtime helper for checking keyCodes from config.
- * exposed as Vue.prototype._k
- * passing in eventKeyName as last argument separately for backwards compat
- */
-function checkKeyCodes (
-  eventKeyCode,
-  key,
-  builtInKeyCode,
-  eventKeyName,
-  builtInKeyName
-) {
-  var mappedKeyCode = config.keyCodes[key] || builtInKeyCode;
-  if (builtInKeyName && eventKeyName && !config.keyCodes[key]) {
-    return isKeyNotMatch(builtInKeyName, eventKeyName)
-  } else if (mappedKeyCode) {
-    return isKeyNotMatch(mappedKeyCode, eventKeyCode)
-  } else if (eventKeyName) {
-    return hyphenate(eventKeyName) !== key
-  }
-}
-
-/*  */
-
-/**
- * Runtime helper for merging v-bind="object" into a VNode's data.
- */
-function bindObjectProps (
-  data,
-  tag,
-  value,
-  asProp,
-  isSync
-) {
-  if (value) {
-    if (!isObject(value)) {
-      "development" !== 'production' && warn(
-        'v-bind without argument expects an Object or Array value',
-        this
-      );
-    } else {
-      if (Array.isArray(value)) {
-        value = toObject(value);
-      }
-      var hash;
-      var loop = function ( key ) {
-        if (
-          key === 'class' ||
-          key === 'style' ||
-          isReservedAttribute(key)
-        ) {
-          hash = data;
-        } else {
-          var type = data.attrs && data.attrs.type;
-          hash = asProp || config.mustUseProp(tag, type, key)
-            ? data.domProps || (data.domProps = {})
-            : data.attrs || (data.attrs = {});
-        }
-        if (!(key in hash)) {
-          hash[key] = value[key];
-
-          if (isSync) {
-            var on = data.on || (data.on = {});
-            on[("update:" + key)] = function ($event) {
-              value[key] = $event;
-            };
-          }
-        }
-      };
-
-      for (var key in value) loop( key );
-    }
-  }
-  return data
-}
-
-/*  */
-
-/**
- * Runtime helper for rendering static trees.
- */
-function renderStatic (
-  index,
-  isInFor
-) {
-  var cached = this._staticTrees || (this._staticTrees = []);
-  var tree = cached[index];
-  // if has already-rendered static tree and not inside v-for,
-  // we can reuse the same tree.
-  if (tree && !isInFor) {
-    return tree
-  }
-  // otherwise, render a fresh tree.
-  tree = cached[index] = this.$options.staticRenderFns[index].call(
-    this._renderProxy,
-    null,
-    this // for render fns generated for functional component templates
-  );
-  markStatic(tree, ("__static__" + index), false);
-  return tree
-}
-
-/**
- * Runtime helper for v-once.
- * Effectively it means marking the node as static with a unique key.
- */
-function markOnce (
-  tree,
-  index,
-  key
-) {
-  markStatic(tree, ("__once__" + index + (key ? ("_" + key) : "")), true);
-  return tree
-}
-
-function markStatic (
-  tree,
-  key,
-  isOnce
-) {
-  if (Array.isArray(tree)) {
-    for (var i = 0; i < tree.length; i++) {
-      if (tree[i] && typeof tree[i] !== 'string') {
-        markStaticNode(tree[i], (key + "_" + i), isOnce);
-      }
-    }
-  } else {
-    markStaticNode(tree, key, isOnce);
-  }
-}
-
-function markStaticNode (node, key, isOnce) {
-  node.isStatic = true;
-  node.key = key;
-  node.isOnce = isOnce;
-}
-
-/*  */
-
-function bindObjectListeners (data, value) {
-  if (value) {
-    if (!isPlainObject(value)) {
-      "development" !== 'production' && warn(
-        'v-on without argument expects an Object value',
-        this
-      );
-    } else {
-      var on = data.on = data.on ? extend({}, data.on) : {};
-      for (var key in value) {
-        var existing = on[key];
-        var ours = value[key];
-        on[key] = existing ? [].concat(existing, ours) : ours;
-      }
-    }
-  }
-  return data
-}
-
-/*  */
-
-function installRenderHelpers (target) {
-  target._o = markOnce;
-  target._n = toNumber;
-  target._s = toString;
-  target._l = renderList;
-  target._t = renderSlot;
-  target._q = looseEqual;
-  target._i = looseIndexOf;
-  target._m = renderStatic;
-  target._f = resolveFilter;
-  target._k = checkKeyCodes;
-  target._b = bindObjectProps;
-  target._v = createTextVNode;
-  target._e = createEmptyVNode;
-  target._u = resolveScopedSlots;
-  target._g = bindObjectListeners;
-}
-
-/*  */
-
-function FunctionalRenderContext (
-  data,
-  props,
-  children,
-  parent,
-  Ctor
-) {
-  var options = Ctor.options;
-  // ensure the createElement function in functional components
-  // gets a unique context - this is necessary for correct named slot check
-  var contextVm;
-  if (hasOwn(parent, '_uid')) {
-    contextVm = Object.create(parent);
-    // $flow-disable-line
-    contextVm._original = parent;
-  } else {
-    // the context vm passed in is a functional context as well.
-    // in this case we want to make sure we are able to get a hold to the
-    // real context instance.
-    contextVm = parent;
-    // $flow-disable-line
-    parent = parent._original;
-  }
-  var isCompiled = isTrue(options._compiled);
-  var needNormalization = !isCompiled;
-
-  this.data = data;
-  this.props = props;
-  this.children = children;
-  this.parent = parent;
-  this.listeners = data.on || emptyObject;
-  this.injections = resolveInject(options.inject, parent);
-  this.slots = function () { return resolveSlots(children, parent); };
-
-  // support for compiled functional template
-  if (isCompiled) {
-    // exposing $options for renderStatic()
-    this.$options = options;
-    // pre-resolve slots for renderSlot()
-    this.$slots = this.slots();
-    this.$scopedSlots = data.scopedSlots || emptyObject;
-  }
-
-  if (options._scopeId) {
-    this._c = function (a, b, c, d) {
-      var vnode = createElement(contextVm, a, b, c, d, needNormalization);
-      if (vnode && !Array.isArray(vnode)) {
-        vnode.fnScopeId = options._scopeId;
-        vnode.fnContext = parent;
-      }
-      return vnode
-    };
-  } else {
-    this._c = function (a, b, c, d) { return createElement(contextVm, a, b, c, d, needNormalization); };
-  }
-}
-
-installRenderHelpers(FunctionalRenderContext.prototype);
-
-function createFunctionalComponent (
-  Ctor,
-  propsData,
-  data,
-  contextVm,
-  children
-) {
-  var options = Ctor.options;
-  var props = {};
-  var propOptions = options.props;
-  if (isDef(propOptions)) {
-    for (var key in propOptions) {
-      props[key] = validateProp(key, propOptions, propsData || emptyObject);
-    }
-  } else {
-    if (isDef(data.attrs)) { mergeProps(props, data.attrs); }
-    if (isDef(data.props)) { mergeProps(props, data.props); }
-  }
-
-  var renderContext = new FunctionalRenderContext(
-    data,
-    props,
-    children,
-    contextVm,
-    Ctor
-  );
-
-  var vnode = options.render.call(null, renderContext._c, renderContext);
-
-  if (vnode instanceof VNode) {
-    return cloneAndMarkFunctionalResult(vnode, data, renderContext.parent, options)
-  } else if (Array.isArray(vnode)) {
-    var vnodes = normalizeChildren(vnode) || [];
-    var res = new Array(vnodes.length);
-    for (var i = 0; i < vnodes.length; i++) {
-      res[i] = cloneAndMarkFunctionalResult(vnodes[i], data, renderContext.parent, options);
-    }
-    return res
-  }
-}
-
-function cloneAndMarkFunctionalResult (vnode, data, contextVm, options) {
-  // #7817 clone node before setting fnContext, otherwise if the node is reused
-  // (e.g. it was from a cached normal slot) the fnContext causes named slots
-  // that should not be matched to match.
-  var clone = cloneVNode(vnode);
-  clone.fnContext = contextVm;
-  clone.fnOptions = options;
-  if (data.slot) {
-    (clone.data || (clone.data = {})).slot = data.slot;
-  }
-  return clone
-}
-
-function mergeProps (to, from) {
-  for (var key in from) {
-    to[camelize(key)] = from[key];
-  }
-}
-
-/*  */
-
-
-
-
-// Register the component hook to weex native render engine.
-// The hook will be triggered by native, not javascript.
-
-
-// Updates the state of the component to weex native render engine.
-
-/*  */
-
-// https://github.com/Hanks10100/weex-native-directive/tree/master/component
-
-// listening on native callback
-
-/*  */
-
-/*  */
-
-// inline hooks to be invoked on component VNodes during patch
-var componentVNodeHooks = {
-  init: function init (
-    vnode,
-    hydrating,
-    parentElm,
-    refElm
-  ) {
-    if (
-      vnode.componentInstance &&
-      !vnode.componentInstance._isDestroyed &&
-      vnode.data.keepAlive
-    ) {
-      // kept-alive components, treat as a patch
-      var mountedNode = vnode; // work around flow
-      componentVNodeHooks.prepatch(mountedNode, mountedNode);
-    } else {
-      var child = vnode.componentInstance = createComponentInstanceForVnode(
-        vnode,
-        activeInstance,
-        parentElm,
-        refElm
-      );
-      child.$mount(hydrating ? vnode.elm : undefined, hydrating);
-    }
-  },
-
-  prepatch: function prepatch (oldVnode, vnode) {
-    var options = vnode.componentOptions;
-    var child = vnode.componentInstance = oldVnode.componentInstance;
-    updateChildComponent(
-      child,
-      options.propsData, // updated props
-      options.listeners, // updated listeners
-      vnode, // new parent vnode
-      options.children // new children
-    );
-  },
-
-  insert: function insert (vnode) {
-    var context = vnode.context;
-    var componentInstance = vnode.componentInstance;
-    if (!componentInstance._isMounted) {
-      componentInstance._isMounted = true;
-      callHook(componentInstance, 'mounted');
-    }
-    if (vnode.data.keepAlive) {
-      if (context._isMounted) {
-        // vue-router#1212
-        // During updates, a kept-alive component's child components may
-        // change, so directly walking the tree here may call activated hooks
-        // on incorrect children. Instead we push them into a queue which will
-        // be processed after the whole patch process ended.
-        queueActivatedComponent(componentInstance);
-      } else {
-        activateChildComponent(componentInstance, true /* direct */);
-      }
-    }
-  },
-
-  destroy: function destroy (vnode) {
-    var componentInstance = vnode.componentInstance;
-    if (!componentInstance._isDestroyed) {
-      if (!vnode.data.keepAlive) {
-        componentInstance.$destroy();
-      } else {
-        deactivateChildComponent(componentInstance, true /* direct */);
-      }
-    }
-  }
-};
-
-var hooksToMerge = Object.keys(componentVNodeHooks);
-
-function createComponent (
-  Ctor,
-  data,
-  context,
-  children,
-  tag
-) {
-  if (isUndef(Ctor)) {
-    return
-  }
-
-  var baseCtor = context.$options._base;
-
-  // plain options object: turn it into a constructor
-  if (isObject(Ctor)) {
-    Ctor = baseCtor.extend(Ctor);
-  }
-
-  // if at this stage it's not a constructor or an async component factory,
-  // reject.
-  if (typeof Ctor !== 'function') {
-    {
-      warn(("Invalid Component definition: " + (String(Ctor))), context);
-    }
-    return
-  }
-
-  // async component
-  var asyncFactory;
-  if (isUndef(Ctor.cid)) {
-    asyncFactory = Ctor;
-    Ctor = resolveAsyncComponent(asyncFactory, baseCtor, context);
-    if (Ctor === undefined) {
-      // return a placeholder node for async component, which is rendered
-      // as a comment node but preserves all the raw information for the node.
-      // the information will be used for async server-rendering and hydration.
-      return createAsyncPlaceholder(
-        asyncFactory,
-        data,
-        context,
-        children,
-        tag
-      )
-    }
-  }
-
-  data = data || {};
-
-  // resolve constructor options in case global mixins are applied after
-  // component constructor creation
-  resolveConstructorOptions(Ctor);
-
-  // transform component v-model data into props & events
-  if (isDef(data.model)) {
-    transformModel(Ctor.options, data);
-  }
-
-  // extract props
-  var propsData = extractPropsFromVNodeData(data, Ctor, tag);
-
-  // functional component
-  if (isTrue(Ctor.options.functional)) {
-    return createFunctionalComponent(Ctor, propsData, data, context, children)
-  }
-
-  // extract listeners, since these needs to be treated as
-  // child component listeners instead of DOM listeners
-  var listeners = data.on;
-  // replace with listeners with .native modifier
-  // so it gets processed during parent component patch.
-  data.on = data.nativeOn;
-
-  if (isTrue(Ctor.options.abstract)) {
-    // abstract components do not keep anything
-    // other than props & listeners & slot
-
-    // work around flow
-    var slot = data.slot;
-    data = {};
-    if (slot) {
-      data.slot = slot;
-    }
-  }
-
-  // install component management hooks onto the placeholder node
-  installComponentHooks(data);
-
-  // return a placeholder vnode
-  var name = Ctor.options.name || tag;
-  var vnode = new VNode(
-    ("vue-component-" + (Ctor.cid) + (name ? ("-" + name) : '')),
-    data, undefined, undefined, undefined, context,
-    { Ctor: Ctor, propsData: propsData, listeners: listeners, tag: tag, children: children },
-    asyncFactory
-  );
-
-  // Weex specific: invoke recycle-list optimized @render function for
-  // extracting cell-slot template.
-  // https://github.com/Hanks10100/weex-native-directive/tree/master/component
-  /* istanbul ignore if */
-  return vnode
-}
-
-function createComponentInstanceForVnode (
-  vnode, // we know it's MountedComponentVNode but flow doesn't
-  parent, // activeInstance in lifecycle state
-  parentElm,
-  refElm
-) {
-  var options = {
-    _isComponent: true,
-    parent: parent,
-    _parentVnode: vnode,
-    _parentElm: parentElm || null,
-    _refElm: refElm || null
-  };
-  // check inline-template render functions
-  var inlineTemplate = vnode.data.inlineTemplate;
-  if (isDef(inlineTemplate)) {
-    options.render = inlineTemplate.render;
-    options.staticRenderFns = inlineTemplate.staticRenderFns;
-  }
-  return new vnode.componentOptions.Ctor(options)
-}
-
-function installComponentHooks (data) {
-  var hooks = data.hook || (data.hook = {});
-  for (var i = 0; i < hooksToMerge.length; i++) {
-    var key = hooksToMerge[i];
-    hooks[key] = componentVNodeHooks[key];
-  }
-}
-
-// transform component v-model info (value and callback) into
-// prop and event handler respectively.
-function transformModel (options, data) {
-  var prop = (options.model && options.model.prop) || 'value';
-  var event = (options.model && options.model.event) || 'input';(data.props || (data.props = {}))[prop] = data.model.value;
-  var on = data.on || (data.on = {});
-  if (isDef(on[event])) {
-    on[event] = [data.model.callback].concat(on[event]);
-  } else {
-    on[event] = data.model.callback;
-  }
-}
-
-/*  */
-
-var SIMPLE_NORMALIZE = 1;
-var ALWAYS_NORMALIZE = 2;
-
-// wrapper function for providing a more flexible interface
-// without getting yelled at by flow
-function createElement (
-  context,
-  tag,
-  data,
-  children,
-  normalizationType,
-  alwaysNormalize
-) {
-  if (Array.isArray(data) || isPrimitive(data)) {
-    normalizationType = children;
-    children = data;
-    data = undefined;
-  }
-  if (isTrue(alwaysNormalize)) {
-    normalizationType = ALWAYS_NORMALIZE;
-  }
-  return _createElement(context, tag, data, children, normalizationType)
-}
-
-function _createElement (
-  context,
-  tag,
-  data,
-  children,
-  normalizationType
-) {
-  if (isDef(data) && isDef((data).__ob__)) {
-    "development" !== 'production' && warn(
-      "Avoid using observed data object as vnode data: " + (JSON.stringify(data)) + "\n" +
-      'Always create fresh vnode data objects in each render!',
-      context
-    );
-    return createEmptyVNode()
-  }
-  // object syntax in v-bind
-  if (isDef(data) && isDef(data.is)) {
-    tag = data.is;
-  }
-  if (!tag) {
-    // in case of component :is set to falsy value
-    return createEmptyVNode()
-  }
-  // warn against non-primitive key
-  if ("development" !== 'production' &&
-    isDef(data) && isDef(data.key) && !isPrimitive(data.key)
-  ) {
-    {
-      warn(
-        'Avoid using non-primitive value as key, ' +
-        'use string/number value instead.',
-        context
-      );
-    }
-  }
-  // support single function children as default scoped slot
-  if (Array.isArray(children) &&
-    typeof children[0] === 'function'
-  ) {
-    data = data || {};
-    data.scopedSlots = { default: children[0] };
-    children.length = 0;
-  }
-  if (normalizationType === ALWAYS_NORMALIZE) {
-    children = normalizeChildren(children);
-  } else if (normalizationType === SIMPLE_NORMALIZE) {
-    children = simpleNormalizeChildren(children);
-  }
-  var vnode, ns;
-  if (typeof tag === 'string') {
-    var Ctor;
-    ns = (context.$vnode && context.$vnode.ns) || config.getTagNamespace(tag);
-    if (config.isReservedTag(tag)) {
-      // platform built-in elements
-      vnode = new VNode(
-        config.parsePlatformTagName(tag), data, children,
-        undefined, undefined, context
-      );
-    } else if (isDef(Ctor = resolveAsset(context.$options, 'components', tag))) {
-      // component
-      vnode = createComponent(Ctor, data, context, children, tag);
-    } else {
-      // unknown or unlisted namespaced elements
-      // check at runtime because it may get assigned a namespace when its
-      // parent normalizes children
-      vnode = new VNode(
-        tag, data, children,
-        undefined, undefined, context
-      );
-    }
-  } else {
-    // direct component options / constructor
-    vnode = createComponent(tag, data, context, children);
-  }
-  if (Array.isArray(vnode)) {
-    return vnode
-  } else if (isDef(vnode)) {
-    if (isDef(ns)) { applyNS(vnode, ns); }
-    if (isDef(data)) { registerDeepBindings(data); }
-    return vnode
-  } else {
-    return createEmptyVNode()
-  }
-}
-
-function applyNS (vnode, ns, force) {
-  vnode.ns = ns;
-  if (vnode.tag === 'foreignObject') {
-    // use default namespace inside foreignObject
-    ns = undefined;
-    force = true;
-  }
-  if (isDef(vnode.children)) {
-    for (var i = 0, l = vnode.children.length; i < l; i++) {
-      var child = vnode.children[i];
-      if (isDef(child.tag) && (
-        isUndef(child.ns) || (isTrue(force) && child.tag !== 'svg'))) {
-        applyNS(child, ns, force);
-      }
-    }
-  }
-}
-
-// ref #5318
-// necessary to ensure parent re-render when deep bindings like :style and
-// :class are used on slot nodes
-function registerDeepBindings (data) {
-  if (isObject(data.style)) {
-    traverse(data.style);
-  }
-  if (isObject(data.class)) {
-    traverse(data.class);
-  }
-}
-
-/*  */
-
-function initRender (vm) {
-  vm._vnode = null; // the root of the child tree
-  vm._staticTrees = null; // v-once cached trees
-  var options = vm.$options;
-  var parentVnode = vm.$vnode = options._parentVnode; // the placeholder node in parent tree
-  var renderContext = parentVnode && parentVnode.context;
-  vm.$slots = resolveSlots(options._renderChildren, renderContext);
-  vm.$scopedSlots = emptyObject;
-  // bind the createElement fn to this instance
-  // so that we get proper render context inside it.
-  // args order: tag, data, children, normalizationType, alwaysNormalize
-  // internal version is used by render functions compiled from templates
-  vm._c = function (a, b, c, d) { return createElement(vm, a, b, c, d, false); };
-  // normalization is always applied for the public version, used in
-  // user-written render functions.
-  vm.$createElement = function (a, b, c, d) { return createElement(vm, a, b, c, d, true); };
-
-  // $attrs & $listeners are exposed for easier HOC creation.
-  // they need to be reactive so that HOCs using them are always updated
-  var parentData = parentVnode && parentVnode.data;
-
-  /* istanbul ignore else */
-  {
-    defineReactive(vm, '$attrs', parentData && parentData.attrs || emptyObject, function () {
-      !isUpdatingChildComponent && warn("$attrs is readonly.", vm);
-    }, true);
-    defineReactive(vm, '$listeners', options._parentListeners || emptyObject, function () {
-      !isUpdatingChildComponent && warn("$listeners is readonly.", vm);
-    }, true);
-  }
-}
-
-function renderMixin (Vue) {
-  // install runtime convenience helpers
-  installRenderHelpers(Vue.prototype);
-
-  Vue.prototype.$nextTick = function (fn) {
-    return nextTick(fn, this)
-  };
-
-  Vue.prototype._render = function () {
-    var vm = this;
-    var ref = vm.$options;
-    var render = ref.render;
-    var _parentVnode = ref._parentVnode;
-
-    // reset _rendered flag on slots for duplicate slot check
-    {
-      for (var key in vm.$slots) {
-        // $flow-disable-line
-        vm.$slots[key]._rendered = false;
-      }
-    }
-
-    if (_parentVnode) {
-      vm.$scopedSlots = _parentVnode.data.scopedSlots || emptyObject;
-    }
-
-    // set parent vnode. this allows render functions to have access
-    // to the data on the placeholder node.
-    vm.$vnode = _parentVnode;
-    // render self
-    var vnode;
-    try {
-      vnode = render.call(vm._renderProxy, vm.$createElement);
-    } catch (e) {
-      handleError(e, vm, "render");
-      // return error render result,
-      // or previous vnode to prevent render error causing blank component
-      /* istanbul ignore else */
-      {
-        if (vm.$options.renderError) {
-          try {
-            vnode = vm.$options.renderError.call(vm._renderProxy, vm.$createElement, e);
-          } catch (e) {
-            handleError(e, vm, "renderError");
-            vnode = vm._vnode;
-          }
-        } else {
-          vnode = vm._vnode;
-        }
-      }
-    }
-    // return empty vnode in case the render function errored out
-    if (!(vnode instanceof VNode)) {
-      if ("development" !== 'production' && Array.isArray(vnode)) {
-        warn(
-          'Multiple root nodes returned from render function. Render function ' +
-          'should return a single root node.',
-          vm
-        );
-      }
-      vnode = createEmptyVNode();
-    }
-    // set parent
-    vnode.parent = _parentVnode;
-    return vnode
-  };
-}
-
-/*  */
-
-var uid$3 = 0;
-
-function initMixin (Vue) {
-  Vue.prototype._init = function (options) {
-    var vm = this;
-    // a uid
-    vm._uid = uid$3++;
-
-    var startTag, endTag;
-    /* istanbul ignore if */
-    if ("development" !== 'production' && config.performance && mark) {
-      startTag = "vue-perf-start:" + (vm._uid);
-      endTag = "vue-perf-end:" + (vm._uid);
-      mark(startTag);
-    }
-
-    // a flag to avoid this being observed
-    vm._isVue = true;
-    // merge options
-    if (options && options._isComponent) {
-      // optimize internal component instantiation
-      // since dynamic options merging is pretty slow, and none of the
-      // internal component options needs special treatment.
-      initInternalComponent(vm, options);
-    } else {
-      vm.$options = mergeOptions(
-        resolveConstructorOptions(vm.constructor),
-        options || {},
-        vm
-      );
-    }
-    /* istanbul ignore else */
-    {
-      initProxy(vm);
-    }
-    // expose real self
-    vm._self = vm;
-    initLifecycle(vm);
-    initEvents(vm);
-    initRender(vm);
-    callHook(vm, 'beforeCreate');
-    initInjections(vm); // resolve injections before data/props
-    initState(vm);
-    initProvide(vm); // resolve provide after data/props
-    callHook(vm, 'created');
-
-    /* istanbul ignore if */
-    if ("development" !== 'production' && config.performance && mark) {
-      vm._name = formatComponentName(vm, false);
-      mark(endTag);
-      measure(("vue " + (vm._name) + " init"), startTag, endTag);
-    }
-
-    if (vm.$options.el) {
-      vm.$mount(vm.$options.el);
-    }
-  };
-}
-
-function initInternalComponent (vm, options) {
-  var opts = vm.$options = Object.create(vm.constructor.options);
-  // doing this because it's faster than dynamic enumeration.
-  var parentVnode = options._parentVnode;
-  opts.parent = options.parent;
-  opts._parentVnode = parentVnode;
-  opts._parentElm = options._parentElm;
-  opts._refElm = options._refElm;
-
-  var vnodeComponentOptions = parentVnode.componentOptions;
-  opts.propsData = vnodeComponentOptions.propsData;
-  opts._parentListeners = vnodeComponentOptions.listeners;
-  opts._renderChildren = vnodeComponentOptions.children;
-  opts._componentTag = vnodeComponentOptions.tag;
-
-  if (options.render) {
-    opts.render = options.render;
-    opts.staticRenderFns = options.staticRenderFns;
-  }
-}
-
-function resolveConstructorOptions (Ctor) {
-  var options = Ctor.options;
-  if (Ctor.super) {
-    var superOptions = resolveConstructorOptions(Ctor.super);
-    var cachedSuperOptions = Ctor.superOptions;
-    if (superOptions !== cachedSuperOptions) {
-      // super option changed,
-      // need to resolve new options.
-      Ctor.superOptions = superOptions;
-      // check if there are any late-modified/attached options (#4976)
-      var modifiedOptions = resolveModifiedOptions(Ctor);
-      // update base extend options
-      if (modifiedOptions) {
-        extend(Ctor.extendOptions, modifiedOptions);
-      }
-      options = Ctor.options = mergeOptions(superOptions, Ctor.extendOptions);
-      if (options.name) {
-        options.components[options.name] = Ctor;
-      }
-    }
-  }
-  return options
-}
-
-function resolveModifiedOptions (Ctor) {
-  var modified;
-  var latest = Ctor.options;
-  var extended = Ctor.extendOptions;
-  var sealed = Ctor.sealedOptions;
-  for (var key in latest) {
-    if (latest[key] !== sealed[key]) {
-      if (!modified) { modified = {}; }
-      modified[key] = dedupe(latest[key], extended[key], sealed[key]);
-    }
-  }
-  return modified
-}
-
-function dedupe (latest, extended, sealed) {
-  // compare latest and sealed to ensure lifecycle hooks won't be duplicated
-  // between merges
-  if (Array.isArray(latest)) {
-    var res = [];
-    sealed = Array.isArray(sealed) ? sealed : [sealed];
-    extended = Array.isArray(extended) ? extended : [extended];
-    for (var i = 0; i < latest.length; i++) {
-      // push original options and not sealed options to exclude duplicated options
-      if (extended.indexOf(latest[i]) >= 0 || sealed.indexOf(latest[i]) < 0) {
-        res.push(latest[i]);
-      }
-    }
-    return res
-  } else {
-    return latest
-  }
-}
-
-function Vue (options) {
-  if ("development" !== 'production' &&
-    !(this instanceof Vue)
-  ) {
-    warn('Vue is a constructor and should be called with the `new` keyword');
-  }
-  this._init(options);
-}
-
-initMixin(Vue);
-stateMixin(Vue);
-eventsMixin(Vue);
-lifecycleMixin(Vue);
-renderMixin(Vue);
-
-/*  */
-
-function initUse (Vue) {
-  Vue.use = function (plugin) {
-    var installedPlugins = (this._installedPlugins || (this._installedPlugins = []));
-    if (installedPlugins.indexOf(plugin) > -1) {
-      return this
-    }
-
-    // additional parameters
-    var args = toArray(arguments, 1);
-    args.unshift(this);
-    if (typeof plugin.install === 'function') {
-      plugin.install.apply(plugin, args);
-    } else if (typeof plugin === 'function') {
-      plugin.apply(null, args);
-    }
-    installedPlugins.push(plugin);
-    return this
-  };
-}
-
-/*  */
-
-function initMixin$1 (Vue) {
-  Vue.mixin = function (mixin) {
-    this.options = mergeOptions(this.options, mixin);
-    return this
-  };
-}
-
-/*  */
-
-function initExtend (Vue) {
-  /**
-   * Each instance constructor, including Vue, has a unique
-   * cid. This enables us to create wrapped "child
-   * constructors" for prototypal inheritance and cache them.
-   */
-  Vue.cid = 0;
-  var cid = 1;
-
-  /**
-   * Class inheritance
-   */
-  Vue.extend = function (extendOptions) {
-    extendOptions = extendOptions || {};
-    var Super = this;
-    var SuperId = Super.cid;
-    var cachedCtors = extendOptions._Ctor || (extendOptions._Ctor = {});
-    if (cachedCtors[SuperId]) {
-      return cachedCtors[SuperId]
-    }
-
-    var name = extendOptions.name || Super.options.name;
-    if ("development" !== 'production' && name) {
-      validateComponentName(name);
-    }
-
-    var Sub = function VueComponent (options) {
-      this._init(options);
-    };
-    Sub.prototype = Object.create(Super.prototype);
-    Sub.prototype.constructor = Sub;
-    Sub.cid = cid++;
-    Sub.options = mergeOptions(
-      Super.options,
-      extendOptions
-    );
-    Sub['super'] = Super;
-
-    // For props and computed properties, we define the proxy getters on
-    // the Vue instances at extension time, on the extended prototype. This
-    // avoids Object.defineProperty calls for each instance created.
-    if (Sub.options.props) {
-      initProps$1(Sub);
-    }
-    if (Sub.options.computed) {
-      initComputed$1(Sub);
-    }
-
-    // allow further extension/mixin/plugin usage
-    Sub.extend = Super.extend;
-    Sub.mixin = Super.mixin;
-    Sub.use = Super.use;
-
-    // create asset registers, so extended classes
-    // can have their private assets too.
-    ASSET_TYPES.forEach(function (type) {
-      Sub[type] = Super[type];
-    });
-    // enable recursive self-lookup
-    if (name) {
-      Sub.options.components[name] = Sub;
-    }
-
-    // keep a reference to the super options at extension time.
-    // later at instantiation we can check if Super's options have
-    // been updated.
-    Sub.superOptions = Super.options;
-    Sub.extendOptions = extendOptions;
-    Sub.sealedOptions = extend({}, Sub.options);
-
-    // cache constructor
-    cachedCtors[SuperId] = Sub;
-    return Sub
-  };
-}
-
-function initProps$1 (Comp) {
-  var props = Comp.options.props;
-  for (var key in props) {
-    proxy(Comp.prototype, "_props", key);
-  }
-}
-
-function initComputed$1 (Comp) {
-  var computed = Comp.options.computed;
-  for (var key in computed) {
-    defineComputed(Comp.prototype, key, computed[key]);
-  }
-}
-
-/*  */
-
-function initAssetRegisters (Vue) {
-  /**
-   * Create asset registration methods.
-   */
-  ASSET_TYPES.forEach(function (type) {
-    Vue[type] = function (
-      id,
-      definition
-    ) {
-      if (!definition) {
-        return this.options[type + 's'][id]
-      } else {
-        /* istanbul ignore if */
-        if ("development" !== 'production' && type === 'component') {
-          validateComponentName(id);
-        }
-        if (type === 'component' && isPlainObject(definition)) {
-          definition.name = definition.name || id;
-          definition = this.options._base.extend(definition);
-        }
-        if (type === 'directive' && typeof definition === 'function') {
-          definition = { bind: definition, update: definition };
-        }
-        this.options[type + 's'][id] = definition;
-        return definition
-      }
-    };
-  });
-}
-
-/*  */
-
-function getComponentName (opts) {
-  return opts && (opts.Ctor.options.name || opts.tag)
-}
-
-function matches (pattern, name) {
-  if (Array.isArray(pattern)) {
-    return pattern.indexOf(name) > -1
-  } else if (typeof pattern === 'string') {
-    return pattern.split(',').indexOf(name) > -1
-  } else if (isRegExp(pattern)) {
-    return pattern.test(name)
-  }
-  /* istanbul ignore next */
-  return false
-}
-
-function pruneCache (keepAliveInstance, filter) {
-  var cache = keepAliveInstance.cache;
-  var keys = keepAliveInstance.keys;
-  var _vnode = keepAliveInstance._vnode;
-  for (var key in cache) {
-    var cachedNode = cache[key];
-    if (cachedNode) {
-      var name = getComponentName(cachedNode.componentOptions);
-      if (name && !filter(name)) {
-        pruneCacheEntry(cache, key, keys, _vnode);
-      }
-    }
-  }
-}
-
-function pruneCacheEntry (
-  cache,
-  key,
-  keys,
-  current
-) {
-  var cached$$1 = cache[key];
-  if (cached$$1 && (!current || cached$$1.tag !== current.tag)) {
-    cached$$1.componentInstance.$destroy();
-  }
-  cache[key] = null;
-  remove(keys, key);
-}
-
-var patternTypes = [String, RegExp, Array];
-
-var KeepAlive = {
-  name: 'keep-alive',
-  abstract: true,
-
-  props: {
-    include: patternTypes,
-    exclude: patternTypes,
-    max: [String, Number]
-  },
-
-  created: function created () {
-    this.cache = Object.create(null);
-    this.keys = [];
-  },
-
-  destroyed: function destroyed () {
-    var this$1 = this;
-
-    for (var key in this$1.cache) {
-      pruneCacheEntry(this$1.cache, key, this$1.keys);
-    }
-  },
-
-  mounted: function mounted () {
-    var this$1 = this;
-
-    this.$watch('include', function (val) {
-      pruneCache(this$1, function (name) { return matches(val, name); });
-    });
-    this.$watch('exclude', function (val) {
-      pruneCache(this$1, function (name) { return !matches(val, name); });
-    });
-  },
-
-  render: function render () {
-    var slot = this.$slots.default;
-    var vnode = getFirstComponentChild(slot);
-    var componentOptions = vnode && vnode.componentOptions;
-    if (componentOptions) {
-      // check pattern
-      var name = getComponentName(componentOptions);
-      var ref = this;
-      var include = ref.include;
-      var exclude = ref.exclude;
-      if (
-        // not included
-        (include && (!name || !matches(include, name))) ||
-        // excluded
-        (exclude && name && matches(exclude, name))
-      ) {
-        return vnode
-      }
-
-      var ref$1 = this;
-      var cache = ref$1.cache;
-      var keys = ref$1.keys;
-      var key = vnode.key == null
-        // same constructor may get registered as different local components
-        // so cid alone is not enough (#3269)
-        ? componentOptions.Ctor.cid + (componentOptions.tag ? ("::" + (componentOptions.tag)) : '')
-        : vnode.key;
-      if (cache[key]) {
-        vnode.componentInstance = cache[key].componentInstance;
-        // make current key freshest
-        remove(keys, key);
-        keys.push(key);
-      } else {
-        cache[key] = vnode;
-        keys.push(key);
-        // prune oldest entry
-        if (this.max && keys.length > parseInt(this.max)) {
-          pruneCacheEntry(cache, keys[0], keys, this._vnode);
-        }
-      }
-
-      vnode.data.keepAlive = true;
-    }
-    return vnode || (slot && slot[0])
-  }
-}
-
-var builtInComponents = {
-  KeepAlive: KeepAlive
-}
-
-/*  */
-
-function initGlobalAPI (Vue) {
-  // config
-  var configDef = {};
-  configDef.get = function () { return config; };
-  {
-    configDef.set = function () {
-      warn(
-        'Do not replace the Vue.config object, set individual fields instead.'
-      );
-    };
-  }
-  Object.defineProperty(Vue, 'config', configDef);
-
-  // exposed util methods.
-  // NOTE: these are not considered part of the public API - avoid relying on
-  // them unless you are aware of the risk.
-  Vue.util = {
-    warn: warn,
-    extend: extend,
-    mergeOptions: mergeOptions,
-    defineReactive: defineReactive
-  };
-
-  Vue.set = set;
-  Vue.delete = del;
-  Vue.nextTick = nextTick;
-
-  Vue.options = Object.create(null);
-  ASSET_TYPES.forEach(function (type) {
-    Vue.options[type + 's'] = Object.create(null);
-  });
-
-  // this is used to identify the "base" constructor to extend all plain-object
-  // components with in Weex's multi-instance scenarios.
-  Vue.options._base = Vue;
-
-  extend(Vue.options.components, builtInComponents);
-
-  initUse(Vue);
-  initMixin$1(Vue);
-  initExtend(Vue);
-  initAssetRegisters(Vue);
-}
-
-initGlobalAPI(Vue);
-
-Object.defineProperty(Vue.prototype, '$isServer', {
-  get: isServerRendering
-});
-
-Object.defineProperty(Vue.prototype, '$ssrContext', {
-  get: function get () {
-    /* istanbul ignore next */
-    return this.$vnode && this.$vnode.ssrContext
-  }
-});
-
-// expose FunctionalRenderContext for ssr runtime helper installation
-Object.defineProperty(Vue, 'FunctionalRenderContext', {
-  value: FunctionalRenderContext
-});
-
-Vue.version = '2.5.17';
-
-/*  */
-
-// these are reserved for web because they are directly compiled away
-// during template compilation
-var isReservedAttr = makeMap('style,class');
-
-// attributes that should be using props for binding
-var acceptValue = makeMap('input,textarea,option,select,progress');
-var mustUseProp = function (tag, type, attr) {
-  return (
-    (attr === 'value' && acceptValue(tag)) && type !== 'button' ||
-    (attr === 'selected' && tag === 'option') ||
-    (attr === 'checked' && tag === 'input') ||
-    (attr === 'muted' && tag === 'video')
-  )
-};
-
-var isEnumeratedAttr = makeMap('contenteditable,draggable,spellcheck');
-
-var isBooleanAttr = makeMap(
-  'allowfullscreen,async,autofocus,autoplay,checked,compact,controls,declare,' +
-  'default,defaultchecked,defaultmuted,defaultselected,defer,disabled,' +
-  'enabled,formnovalidate,hidden,indeterminate,inert,ismap,itemscope,loop,multiple,' +
-  'muted,nohref,noresize,noshade,novalidate,nowrap,open,pauseonexit,readonly,' +
-  'required,reversed,scoped,seamless,selected,sortable,translate,' +
-  'truespeed,typemustmatch,visible'
-);
-
-var xlinkNS = 'http://www.w3.org/1999/xlink';
-
-var isXlink = function (name) {
-  return name.charAt(5) === ':' && name.slice(0, 5) === 'xlink'
-};
-
-var getXlinkProp = function (name) {
-  return isXlink(name) ? name.slice(6, name.length) : ''
-};
-
-var isFalsyAttrValue = function (val) {
-  return val == null || val === false
-};
-
-/*  */
-
-function genClassForVnode (vnode) {
-  var data = vnode.data;
-  var parentNode = vnode;
-  var childNode = vnode;
-  while (isDef(childNode.componentInstance)) {
-    childNode = childNode.componentInstance._vnode;
-    if (childNode && childNode.data) {
-      data = mergeClassData(childNode.data, data);
-    }
-  }
-  while (isDef(parentNode = parentNode.parent)) {
-    if (parentNode && parentNode.data) {
-      data = mergeClassData(data, parentNode.data);
-    }
-  }
-  return renderClass(data.staticClass, data.class)
-}
-
-function mergeClassData (child, parent) {
-  return {
-    staticClass: concat(child.staticClass, parent.staticClass),
-    class: isDef(child.class)
-      ? [child.class, parent.class]
-      : parent.class
-  }
-}
-
-function renderClass (
-  staticClass,
-  dynamicClass
-) {
-  if (isDef(staticClass) || isDef(dynamicClass)) {
-    return concat(staticClass, stringifyClass(dynamicClass))
-  }
-  /* istanbul ignore next */
-  return ''
-}
-
-function concat (a, b) {
-  return a ? b ? (a + ' ' + b) : a : (b || '')
-}
-
-function stringifyClass (value) {
-  if (Array.isArray(value)) {
-    return stringifyArray(value)
-  }
-  if (isObject(value)) {
-    return stringifyObject(value)
-  }
-  if (typeof value === 'string') {
-    return value
-  }
-  /* istanbul ignore next */
-  return ''
-}
-
-function stringifyArray (value) {
-  var res = '';
-  var stringified;
-  for (var i = 0, l = value.length; i < l; i++) {
-    if (isDef(stringified = stringifyClass(value[i])) && stringified !== '') {
-      if (res) { res += ' '; }
-      res += stringified;
-    }
-  }
-  return res
-}
-
-function stringifyObject (value) {
-  var res = '';
-  for (var key in value) {
-    if (value[key]) {
-      if (res) { res += ' '; }
-      res += key;
-    }
-  }
-  return res
-}
-
-/*  */
-
-var namespaceMap = {
-  svg: 'http://www.w3.org/2000/svg',
-  math: 'http://www.w3.org/1998/Math/MathML'
-};
-
-var isHTMLTag = makeMap(
-  'html,body,base,head,link,meta,style,title,' +
-  'address,article,aside,footer,header,h1,h2,h3,h4,h5,h6,hgroup,nav,section,' +
-  'div,dd,dl,dt,figcaption,figure,picture,hr,img,li,main,ol,p,pre,ul,' +
-  'a,b,abbr,bdi,bdo,br,cite,code,data,dfn,em,i,kbd,mark,q,rp,rt,rtc,ruby,' +
-  's,samp,small,span,strong,sub,sup,time,u,var,wbr,area,audio,map,track,video,' +
-  'embed,object,param,source,canvas,script,noscript,del,ins,' +
-  'caption,col,colgroup,table,thead,tbody,td,th,tr,' +
-  'button,datalist,fieldset,form,input,label,legend,meter,optgroup,option,' +
-  'output,progress,select,textarea,' +
-  'details,dialog,menu,menuitem,summary,' +
-  'content,element,shadow,template,blockquote,iframe,tfoot'
-);
-
-// this map is intentionally selective, only covering SVG elements that may
-// contain child elements.
-var isSVG = makeMap(
-  'svg,animate,circle,clippath,cursor,defs,desc,ellipse,filter,font-face,' +
-  'foreignObject,g,glyph,image,line,marker,mask,missing-glyph,path,pattern,' +
-  'polygon,polyline,rect,switch,symbol,text,textpath,tspan,use,view',
-  true
-);
-
-var isPreTag = function (tag) { return tag === 'pre'; };
-
-var isReservedTag = function (tag) {
-  return isHTMLTag(tag) || isSVG(tag)
-};
-
-function getTagNamespace (tag) {
-  if (isSVG(tag)) {
-    return 'svg'
-  }
-  // basic support for MathML
-  // note it doesn't support other MathML elements being component roots
-  if (tag === 'math') {
-    return 'math'
-  }
-}
-
-var unknownElementCache = Object.create(null);
-function isUnknownElement (tag) {
-  /* istanbul ignore if */
-  if (!inBrowser) {
-    return true
-  }
-  if (isReservedTag(tag)) {
-    return false
-  }
-  tag = tag.toLowerCase();
-  /* istanbul ignore if */
-  if (unknownElementCache[tag] != null) {
-    return unknownElementCache[tag]
-  }
-  var el = document.createElement(tag);
-  if (tag.indexOf('-') > -1) {
-    // http://stackoverflow.com/a/28210364/1070244
-    return (unknownElementCache[tag] = (
-      el.constructor === window.HTMLUnknownElement ||
-      el.constructor === window.HTMLElement
-    ))
-  } else {
-    return (unknownElementCache[tag] = /HTMLUnknownElement/.test(el.toString()))
-  }
-}
-
-var isTextInputType = makeMap('text,number,password,search,email,tel,url');
-
-/*  */
-
-/**
- * Query an element selector if it's not an element already.
- */
-function query (el) {
-  if (typeof el === 'string') {
-    var selected = document.querySelector(el);
-    if (!selected) {
-      "development" !== 'production' && warn(
-        'Cannot find element: ' + el
-      );
-      return document.createElement('div')
-    }
-    return selected
-  } else {
-    return el
-  }
-}
-
-/*  */
-
-function createElement$1 (tagName, vnode) {
-  var elm = document.createElement(tagName);
-  if (tagName !== 'select') {
-    return elm
-  }
-  // false or null will remove the attribute but undefined will not
-  if (vnode.data && vnode.data.attrs && vnode.data.attrs.multiple !== undefined) {
-    elm.setAttribute('multiple', 'multiple');
-  }
-  return elm
-}
-
-function createElementNS (namespace, tagName) {
-  return document.createElementNS(namespaceMap[namespace], tagName)
-}
-
-function createTextNode (text) {
-  return document.createTextNode(text)
-}
-
-function createComment (text) {
-  return document.createComment(text)
-}
-
-function insertBefore (parentNode, newNode, referenceNode) {
-  parentNode.insertBefore(newNode, referenceNode);
-}
-
-function removeChild (node, child) {
-  node.removeChild(child);
-}
-
-function appendChild (node, child) {
-  node.appendChild(child);
-}
-
-function parentNode (node) {
-  return node.parentNode
-}
-
-function nextSibling (node) {
-  return node.nextSibling
-}
-
-function tagName (node) {
-  return node.tagName
-}
-
-function setTextContent (node, text) {
-  node.textContent = text;
-}
-
-function setStyleScope (node, scopeId) {
-  node.setAttribute(scopeId, '');
-}
-
-
-var nodeOps = Object.freeze({
-	createElement: createElement$1,
-	createElementNS: createElementNS,
-	createTextNode: createTextNode,
-	createComment: createComment,
-	insertBefore: insertBefore,
-	removeChild: removeChild,
-	appendChild: appendChild,
-	parentNode: parentNode,
-	nextSibling: nextSibling,
-	tagName: tagName,
-	setTextContent: setTextContent,
-	setStyleScope: setStyleScope
-});
-
-/*  */
-
-var ref = {
-  create: function create (_, vnode) {
-    registerRef(vnode);
-  },
-  update: function update (oldVnode, vnode) {
-    if (oldVnode.data.ref !== vnode.data.ref) {
-      registerRef(oldVnode, true);
-      registerRef(vnode);
-    }
-  },
-  destroy: function destroy (vnode) {
-    registerRef(vnode, true);
-  }
-}
-
-function registerRef (vnode, isRemoval) {
-  var key = vnode.data.ref;
-  if (!isDef(key)) { return }
-
-  var vm = vnode.context;
-  var ref = vnode.componentInstance || vnode.elm;
-  var refs = vm.$refs;
-  if (isRemoval) {
-    if (Array.isArray(refs[key])) {
-      remove(refs[key], ref);
-    } else if (refs[key] === ref) {
-      refs[key] = undefined;
-    }
-  } else {
-    if (vnode.data.refInFor) {
-      if (!Array.isArray(refs[key])) {
-        refs[key] = [ref];
-      } else if (refs[key].indexOf(ref) < 0) {
-        // $flow-disable-line
-        refs[key].push(ref);
-      }
-    } else {
-      refs[key] = ref;
-    }
-  }
-}
-
-/**
- * Virtual DOM patching algorithm based on Snabbdom by
- * Simon Friis Vindum (@paldepind)
- * Licensed under the MIT License
- * https://github.com/paldepind/snabbdom/blob/master/LICENSE
- *
- * modified by Evan You (@yyx990803)
- *
- * Not type-checking this because this file is perf-critical and the cost
- * of making flow understand it is not worth it.
- */
-
-var emptyNode = new VNode('', {}, []);
-
-var hooks = ['create', 'activate', 'update', 'remove', 'destroy'];
-
-function sameVnode (a, b) {
-  return (
-    a.key === b.key && (
-      (
-        a.tag === b.tag &&
-        a.isComment === b.isComment &&
-        isDef(a.data) === isDef(b.data) &&
-        sameInputType(a, b)
-      ) || (
-        isTrue(a.isAsyncPlaceholder) &&
-        a.asyncFactory === b.asyncFactory &&
-        isUndef(b.asyncFactory.error)
-      )
-    )
-  )
-}
-
-function sameInputType (a, b) {
-  if (a.tag !== 'input') { return true }
-  var i;
-  var typeA = isDef(i = a.data) && isDef(i = i.attrs) && i.type;
-  var typeB = isDef(i = b.data) && isDef(i = i.attrs) && i.type;
-  return typeA === typeB || isTextInputType(typeA) && isTextInputType(typeB)
-}
-
-function createKeyToOldIdx (children, beginIdx, endIdx) {
-  var i, key;
-  var map = {};
-  for (i = beginIdx; i <= endIdx; ++i) {
-    key = children[i].key;
-    if (isDef(key)) { map[key] = i; }
-  }
-  return map
-}
-
-function createPatchFunction (backend) {
-  var i, j;
-  var cbs = {};
-
-  var modules = backend.modules;
-  var nodeOps = backend.nodeOps;
-
-  for (i = 0; i < hooks.length; ++i) {
-    cbs[hooks[i]] = [];
-    for (j = 0; j < modules.length; ++j) {
-      if (isDef(modules[j][hooks[i]])) {
-        cbs[hooks[i]].push(modules[j][hooks[i]]);
-      }
-    }
-  }
-
-  function emptyNodeAt (elm) {
-    return new VNode(nodeOps.tagName(elm).toLowerCase(), {}, [], undefined, elm)
-  }
-
-  function createRmCb (childElm, listeners) {
-    function remove () {
-      if (--remove.listeners === 0) {
-        removeNode(childElm);
-      }
-    }
-    remove.listeners = listeners;
-    return remove
-  }
-
-  function removeNode (el) {
-    var parent = nodeOps.parentNode(el);
-    // element may have already been removed due to v-html / v-text
-    if (isDef(parent)) {
-      nodeOps.removeChild(parent, el);
-    }
-  }
-
-  function isUnknownElement$$1 (vnode, inVPre) {
-    return (
-      !inVPre &&
-      !vnode.ns &&
-      !(
-        config.ignoredElements.length &&
-        config.ignoredElements.some(function (ignore) {
-          return isRegExp(ignore)
-            ? ignore.test(vnode.tag)
-            : ignore === vnode.tag
-        })
-      ) &&
-      config.isUnknownElement(vnode.tag)
-    )
-  }
-
-  var creatingElmInVPre = 0;
-
-  function createElm (
-    vnode,
-    insertedVnodeQueue,
-    parentElm,
-    refElm,
-    nested,
-    ownerArray,
-    index
-  ) {
-    if (isDef(vnode.elm) && isDef(ownerArray)) {
-      // This vnode was used in a previous render!
-      // now it's used as a new node, overwriting its elm would cause
-      // potential patch errors down the road when it's used as an insertion
-      // reference node. Instead, we clone the node on-demand before creating
-      // associated DOM element for it.
-      vnode = ownerArray[index] = cloneVNode(vnode);
-    }
-
-    vnode.isRootInsert = !nested; // for transition enter check
-    if (createComponent(vnode, insertedVnodeQueue, parentElm, refElm)) {
-      return
-    }
-
-    var data = vnode.data;
-    var children = vnode.children;
-    var tag = vnode.tag;
-    if (isDef(tag)) {
-      {
-        if (data && data.pre) {
-          creatingElmInVPre++;
-        }
-        if (isUnknownElement$$1(vnode, creatingElmInVPre)) {
-          warn(
-            'Unknown custom element: <' + tag + '> - did you ' +
-            'register the component correctly? For recursive components, ' +
-            'make sure to provide the "name" option.',
-            vnode.context
-          );
-        }
-      }
-
-      vnode.elm = vnode.ns
-        ? nodeOps.createElementNS(vnode.ns, tag)
-        : nodeOps.createElement(tag, vnode);
-      setScope(vnode);
-
-      /* istanbul ignore if */
-      {
-        createChildren(vnode, children, insertedVnodeQueue);
-        if (isDef(data)) {
-          invokeCreateHooks(vnode, insertedVnodeQueue);
-        }
-        insert(parentElm, vnode.elm, refElm);
-      }
-
-      if ("development" !== 'production' && data && data.pre) {
-        creatingElmInVPre--;
-      }
-    } else if (isTrue(vnode.isComment)) {
-      vnode.elm = nodeOps.createComment(vnode.text);
-      insert(parentElm, vnode.elm, refElm);
-    } else {
-      vnode.elm = nodeOps.createTextNode(vnode.text);
-      insert(parentElm, vnode.elm, refElm);
-    }
-  }
-
-  function createComponent (vnode, insertedVnodeQueue, parentElm, refElm) {
-    var i = vnode.data;
-    if (isDef(i)) {
-      var isReactivated = isDef(vnode.componentInstance) && i.keepAlive;
-      if (isDef(i = i.hook) && isDef(i = i.init)) {
-        i(vnode, false /* hydrating */, parentElm, refElm);
-      }
-      // after calling the init hook, if the vnode is a child component
-      // it should've created a child instance and mounted it. the child
-      // component also has set the placeholder vnode's elm.
-      // in that case we can just return the element and be done.
-      if (isDef(vnode.componentInstance)) {
-        initComponent(vnode, insertedVnodeQueue);
-        if (isTrue(isReactivated)) {
-          reactivateComponent(vnode, insertedVnodeQueue, parentElm, refElm);
-        }
-        return true
-      }
-    }
-  }
-
-  function initComponent (vnode, insertedVnodeQueue) {
-    if (isDef(vnode.data.pendingInsert)) {
-      insertedVnodeQueue.push.apply(insertedVnodeQueue, vnode.data.pendingInsert);
-      vnode.data.pendingInsert = null;
-    }
-    vnode.elm = vnode.componentInstance.$el;
-    if (isPatchable(vnode)) {
-      invokeCreateHooks(vnode, insertedVnodeQueue);
-      setScope(vnode);
-    } else {
-      // empty component root.
-      // skip all element-related modules except for ref (#3455)
-      registerRef(vnode);
-      // make sure to invoke the insert hook
-      insertedVnodeQueue.push(vnode);
-    }
-  }
-
-  function reactivateComponent (vnode, insertedVnodeQueue, parentElm, refElm) {
-    var i;
-    // hack for #4339: a reactivated component with inner transition
-    // does not trigger because the inner node's created hooks are not called
-    // again. It's not ideal to involve module-specific logic in here but
-    // there doesn't seem to be a better way to do it.
-    var innerNode = vnode;
-    while (innerNode.componentInstance) {
-      innerNode = innerNode.componentInstance._vnode;
-      if (isDef(i = innerNode.data) && isDef(i = i.transition)) {
-        for (i = 0; i < cbs.activate.length; ++i) {
-          cbs.activate[i](emptyNode, innerNode);
-        }
-        insertedVnodeQueue.push(innerNode);
-        break
-      }
-    }
-    // unlike a newly created component,
-    // a reactivated keep-alive component doesn't insert itself
-    insert(parentElm, vnode.elm, refElm);
-  }
-
-  function insert (parent, elm, ref$$1) {
-    if (isDef(parent)) {
-      if (isDef(ref$$1)) {
-        if (ref$$1.parentNode === parent) {
-          nodeOps.insertBefore(parent, elm, ref$$1);
-        }
-      } else {
-        nodeOps.appendChild(parent, elm);
-      }
-    }
-  }
-
-  function createChildren (vnode, children, insertedVnodeQueue) {
-    if (Array.isArray(children)) {
-      {
-        checkDuplicateKeys(children);
-      }
-      for (var i = 0; i < children.length; ++i) {
-        createElm(children[i], insertedVnodeQueue, vnode.elm, null, true, children, i);
-      }
-    } else if (isPrimitive(vnode.text)) {
-      nodeOps.appendChild(vnode.elm, nodeOps.createTextNode(String(vnode.text)));
-    }
-  }
-
-  function isPatchable (vnode) {
-    while (vnode.componentInstance) {
-      vnode = vnode.componentInstance._vnode;
-    }
-    return isDef(vnode.tag)
-  }
-
-  function invokeCreateHooks (vnode, insertedVnodeQueue) {
-    for (var i$1 = 0; i$1 < cbs.create.length; ++i$1) {
-      cbs.create[i$1](emptyNode, vnode);
-    }
-    i = vnode.data.hook; // Reuse variable
-    if (isDef(i)) {
-      if (isDef(i.create)) { i.create(emptyNode, vnode); }
-      if (isDef(i.insert)) { insertedVnodeQueue.push(vnode); }
-    }
-  }
-
-  // set scope id attribute for scoped CSS.
-  // this is implemented as a special case to avoid the overhead
-  // of going through the normal attribute patching process.
-  function setScope (vnode) {
-    var i;
-    if (isDef(i = vnode.fnScopeId)) {
-      nodeOps.setStyleScope(vnode.elm, i);
-    } else {
-      var ancestor = vnode;
-      while (ancestor) {
-        if (isDef(i = ancestor.context) && isDef(i = i.$options._scopeId)) {
-          nodeOps.setStyleScope(vnode.elm, i);
-        }
-        ancestor = ancestor.parent;
-      }
-    }
-    // for slot content they should also get the scopeId from the host instance.
-    if (isDef(i = activeInstance) &&
-      i !== vnode.context &&
-      i !== vnode.fnContext &&
-      isDef(i = i.$options._scopeId)
-    ) {
-      nodeOps.setStyleScope(vnode.elm, i);
-    }
-  }
-
-  function addVnodes (parentElm, refElm, vnodes, startIdx, endIdx, insertedVnodeQueue) {
-    for (; startIdx <= endIdx; ++startIdx) {
-      createElm(vnodes[startIdx], insertedVnodeQueue, parentElm, refElm, false, vnodes, startIdx);
-    }
-  }
-
-  function invokeDestroyHook (vnode) {
-    var i, j;
-    var data = vnode.data;
-    if (isDef(data)) {
-      if (isDef(i = data.hook) && isDef(i = i.destroy)) { i(vnode); }
-      for (i = 0; i < cbs.destroy.length; ++i) { cbs.destroy[i](vnode); }
-    }
-    if (isDef(i = vnode.children)) {
-      for (j = 0; j < vnode.children.length; ++j) {
-        invokeDestroyHook(vnode.children[j]);
-      }
-    }
-  }
-
-  function removeVnodes (parentElm, vnodes, startIdx, endIdx) {
-    for (; startIdx <= endIdx; ++startIdx) {
-      var ch = vnodes[startIdx];
-      if (isDef(ch)) {
-        if (isDef(ch.tag)) {
-          removeAndInvokeRemoveHook(ch);
-          invokeDestroyHook(ch);
-        } else { // Text node
-          removeNode(ch.elm);
-        }
-      }
-    }
-  }
-
-  function removeAndInvokeRemoveHook (vnode, rm) {
-    if (isDef(rm) || isDef(vnode.data)) {
-      var i;
-      var listeners = cbs.remove.length + 1;
-      if (isDef(rm)) {
-        // we have a recursively passed down rm callback
-        // increase the listeners count
-        rm.listeners += listeners;
-      } else {
-        // directly removing
-        rm = createRmCb(vnode.elm, listeners);
-      }
-      // recursively invoke hooks on child component root node
-      if (isDef(i = vnode.componentInstance) && isDef(i = i._vnode) && isDef(i.data)) {
-        removeAndInvokeRemoveHook(i, rm);
-      }
-      for (i = 0; i < cbs.remove.length; ++i) {
-        cbs.remove[i](vnode, rm);
-      }
-      if (isDef(i = vnode.data.hook) && isDef(i = i.remove)) {
-        i(vnode, rm);
-      } else {
-        rm();
-      }
-    } else {
-      removeNode(vnode.elm);
-    }
-  }
-
-  function updateChildren (parentElm, oldCh, newCh, insertedVnodeQueue, removeOnly) {
-    var oldStartIdx = 0;
-    var newStartIdx = 0;
-    var oldEndIdx = oldCh.length - 1;
-    var oldStartVnode = oldCh[0];
-    var oldEndVnode = oldCh[oldEndIdx];
-    var newEndIdx = newCh.length - 1;
-    var newStartVnode = newCh[0];
-    var newEndVnode = newCh[newEndIdx];
-    var oldKeyToIdx, idxInOld, vnodeToMove, refElm;
-
-    // removeOnly is a special flag used only by <transition-group>
-    // to ensure removed elements stay in correct relative positions
-    // during leaving transitions
-    var canMove = !removeOnly;
-
-    {
-      checkDuplicateKeys(newCh);
-    }
-
-    while (oldStartIdx <= oldEndIdx && newStartIdx <= newEndIdx) {
-      if (isUndef(oldStartVnode)) {
-        oldStartVnode = oldCh[++oldStartIdx]; // Vnode has been moved left
-      } else if (isUndef(oldEndVnode)) {
-        oldEndVnode = oldCh[--oldEndIdx];
-      } else if (sameVnode(oldStartVnode, newStartVnode)) {
-        patchVnode(oldStartVnode, newStartVnode, insertedVnodeQueue);
-        oldStartVnode = oldCh[++oldStartIdx];
-        newStartVnode = newCh[++newStartIdx];
-      } else if (sameVnode(oldEndVnode, newEndVnode)) {
-        patchVnode(oldEndVnode, newEndVnode, insertedVnodeQueue);
-        oldEndVnode = oldCh[--oldEndIdx];
-        newEndVnode = newCh[--newEndIdx];
-      } else if (sameVnode(oldStartVnode, newEndVnode)) { // Vnode moved right
-        patchVnode(oldStartVnode, newEndVnode, insertedVnodeQueue);
-        canMove && nodeOps.insertBefore(parentElm, oldStartVnode.elm, nodeOps.nextSibling(oldEndVnode.elm));
-        oldStartVnode = oldCh[++oldStartIdx];
-        newEndVnode = newCh[--newEndIdx];
-      } else if (sameVnode(oldEndVnode, newStartVnode)) { // Vnode moved left
-        patchVnode(oldEndVnode, newStartVnode, insertedVnodeQueue);
-        canMove && nodeOps.insertBefore(parentElm, oldEndVnode.elm, oldStartVnode.elm);
-        oldEndVnode = oldCh[--oldEndIdx];
-        newStartVnode = newCh[++newStartIdx];
-      } else {
-        if (isUndef(oldKeyToIdx)) { oldKeyToIdx = createKeyToOldIdx(oldCh, oldStartIdx, oldEndIdx); }
-        idxInOld = isDef(newStartVnode.key)
-          ? oldKeyToIdx[newStartVnode.key]
-          : findIdxInOld(newStartVnode, oldCh, oldStartIdx, oldEndIdx);
-        if (isUndef(idxInOld)) { // New element
-          createElm(newStartVnode, insertedVnodeQueue, parentElm, oldStartVnode.elm, false, newCh, newStartIdx);
-        } else {
-          vnodeToMove = oldCh[idxInOld];
-          if (sameVnode(vnodeToMove, newStartVnode)) {
-            patchVnode(vnodeToMove, newStartVnode, insertedVnodeQueue);
-            oldCh[idxInOld] = undefined;
-            canMove && nodeOps.insertBefore(parentElm, vnodeToMove.elm, oldStartVnode.elm);
-          } else {
-            // same key but different element. treat as new element
-            createElm(newStartVnode, insertedVnodeQueue, parentElm, oldStartVnode.elm, false, newCh, newStartIdx);
-          }
-        }
-        newStartVnode = newCh[++newStartIdx];
-      }
-    }
-    if (oldStartIdx > oldEndIdx) {
-      refElm = isUndef(newCh[newEndIdx + 1]) ? null : newCh[newEndIdx + 1].elm;
-      addVnodes(parentElm, refElm, newCh, newStartIdx, newEndIdx, insertedVnodeQueue);
-    } else if (newStartIdx > newEndIdx) {
-      removeVnodes(parentElm, oldCh, oldStartIdx, oldEndIdx);
-    }
-  }
-
-  function checkDuplicateKeys (children) {
-    var seenKeys = {};
-    for (var i = 0; i < children.length; i++) {
-      var vnode = children[i];
-      var key = vnode.key;
-      if (isDef(key)) {
-        if (seenKeys[key]) {
-          warn(
-            ("Duplicate keys detected: '" + key + "'. This may cause an update error."),
-            vnode.context
-          );
-        } else {
-          seenKeys[key] = true;
-        }
-      }
-    }
-  }
-
-  function findIdxInOld (node, oldCh, start, end) {
-    for (var i = start; i < end; i++) {
-      var c = oldCh[i];
-      if (isDef(c) && sameVnode(node, c)) { return i }
-    }
-  }
-
-  function patchVnode (oldVnode, vnode, insertedVnodeQueue, removeOnly) {
-    if (oldVnode === vnode) {
-      return
-    }
-
-    var elm = vnode.elm = oldVnode.elm;
-
-    if (isTrue(oldVnode.isAsyncPlaceholder)) {
-      if (isDef(vnode.asyncFactory.resolved)) {
-        hydrate(oldVnode.elm, vnode, insertedVnodeQueue);
-      } else {
-        vnode.isAsyncPlaceholder = true;
-      }
-      return
-    }
-
-    // reuse element for static trees.
-    // note we only do this if the vnode is cloned -
-    // if the new node is not cloned it means the render functions have been
-    // reset by the hot-reload-api and we need to do a proper re-render.
-    if (isTrue(vnode.isStatic) &&
-      isTrue(oldVnode.isStatic) &&
-      vnode.key === oldVnode.key &&
-      (isTrue(vnode.isCloned) || isTrue(vnode.isOnce))
-    ) {
-      vnode.componentInstance = oldVnode.componentInstance;
-      return
-    }
-
-    var i;
-    var data = vnode.data;
-    if (isDef(data) && isDef(i = data.hook) && isDef(i = i.prepatch)) {
-      i(oldVnode, vnode);
-    }
-
-    var oldCh = oldVnode.children;
-    var ch = vnode.children;
-    if (isDef(data) && isPatchable(vnode)) {
-      for (i = 0; i < cbs.update.length; ++i) { cbs.update[i](oldVnode, vnode); }
-      if (isDef(i = data.hook) && isDef(i = i.update)) { i(oldVnode, vnode); }
-    }
-    if (isUndef(vnode.text)) {
-      if (isDef(oldCh) && isDef(ch)) {
-        if (oldCh !== ch) { updateChildren(elm, oldCh, ch, insertedVnodeQueue, removeOnly); }
-      } else if (isDef(ch)) {
-        if (isDef(oldVnode.text)) { nodeOps.setTextContent(elm, ''); }
-        addVnodes(elm, null, ch, 0, ch.length - 1, insertedVnodeQueue);
-      } else if (isDef(oldCh)) {
-        removeVnodes(elm, oldCh, 0, oldCh.length - 1);
-      } else if (isDef(oldVnode.text)) {
-        nodeOps.setTextContent(elm, '');
-      }
-    } else if (oldVnode.text !== vnode.text) {
-      nodeOps.setTextContent(elm, vnode.text);
-    }
-    if (isDef(data)) {
-      if (isDef(i = data.hook) && isDef(i = i.postpatch)) { i(oldVnode, vnode); }
-    }
-  }
-
-  function invokeInsertHook (vnode, queue, initial) {
-    // delay insert hooks for component root nodes, invoke them after the
-    // element is really inserted
-    if (isTrue(initial) && isDef(vnode.parent)) {
-      vnode.parent.data.pendingInsert = queue;
-    } else {
-      for (var i = 0; i < queue.length; ++i) {
-        queue[i].data.hook.insert(queue[i]);
-      }
-    }
-  }
-
-  var hydrationBailed = false;
-  // list of modules that can skip create hook during hydration because they
-  // are already rendered on the client or has no need for initialization
-  // Note: style is excluded because it relies on initial clone for future
-  // deep updates (#7063).
-  var isRenderedModule = makeMap('attrs,class,staticClass,staticStyle,key');
-
-  // Note: this is a browser-only function so we can assume elms are DOM nodes.
-  function hydrate (elm, vnode, insertedVnodeQueue, inVPre) {
-    var i;
-    var tag = vnode.tag;
-    var data = vnode.data;
-    var children = vnode.children;
-    inVPre = inVPre || (data && data.pre);
-    vnode.elm = elm;
-
-    if (isTrue(vnode.isComment) && isDef(vnode.asyncFactory)) {
-      vnode.isAsyncPlaceholder = true;
-      return true
-    }
-    // assert node match
-    {
-      if (!assertNodeMatch(elm, vnode, inVPre)) {
-        return false
-      }
-    }
-    if (isDef(data)) {
-      if (isDef(i = data.hook) && isDef(i = i.init)) { i(vnode, true /* hydrating */); }
-      if (isDef(i = vnode.componentInstance)) {
-        // child component. it should have hydrated its own tree.
-        initComponent(vnode, insertedVnodeQueue);
-        return true
-      }
-    }
-    if (isDef(tag)) {
-      if (isDef(children)) {
-        // empty element, allow client to pick up and populate children
-        if (!elm.hasChildNodes()) {
-          createChildren(vnode, children, insertedVnodeQueue);
-        } else {
-          // v-html and domProps: innerHTML
-          if (isDef(i = data) && isDef(i = i.domProps) && isDef(i = i.innerHTML)) {
-            if (i !== elm.innerHTML) {
-              /* istanbul ignore if */
-              if ("development" !== 'production' &&
-                typeof console !== 'undefined' &&
-                !hydrationBailed
-              ) {
-                hydrationBailed = true;
-                console.warn('Parent: ', elm);
-                console.warn('server innerHTML: ', i);
-                console.warn('client innerHTML: ', elm.innerHTML);
-              }
-              return false
-            }
-          } else {
-            // iterate and compare children lists
-            var childrenMatch = true;
-            var childNode = elm.firstChild;
-            for (var i$1 = 0; i$1 < children.length; i$1++) {
-              if (!childNode || !hydrate(childNode, children[i$1], insertedVnodeQueue, inVPre)) {
-                childrenMatch = false;
-                break
-              }
-              childNode = childNode.nextSibling;
-            }
-            // if childNode is not null, it means the actual childNodes list is
-            // longer than the virtual children list.
-            if (!childrenMatch || childNode) {
-              /* istanbul ignore if */
-              if ("development" !== 'production' &&
-                typeof console !== 'undefined' &&
-                !hydrationBailed
-              ) {
-                hydrationBailed = true;
-                console.warn('Parent: ', elm);
-                console.warn('Mismatching childNodes vs. VNodes: ', elm.childNodes, children);
-              }
-              return false
-            }
-          }
-        }
-      }
-      if (isDef(data)) {
-        var fullInvoke = false;
-        for (var key in data) {
-          if (!isRenderedModule(key)) {
-            fullInvoke = true;
-            invokeCreateHooks(vnode, insertedVnodeQueue);
-            break
-          }
-        }
-        if (!fullInvoke && data['class']) {
-          // ensure collecting deps for deep class bindings for future updates
-          traverse(data['class']);
-        }
-      }
-    } else if (elm.data !== vnode.text) {
-      elm.data = vnode.text;
-    }
-    return true
-  }
-
-  function assertNodeMatch (node, vnode, inVPre) {
-    if (isDef(vnode.tag)) {
-      return vnode.tag.indexOf('vue-component') === 0 || (
-        !isUnknownElement$$1(vnode, inVPre) &&
-        vnode.tag.toLowerCase() === (node.tagName && node.tagName.toLowerCase())
-      )
-    } else {
-      return node.nodeType === (vnode.isComment ? 8 : 3)
-    }
-  }
-
-  return function patch (oldVnode, vnode, hydrating, removeOnly, parentElm, refElm) {
-    if (isUndef(vnode)) {
-      if (isDef(oldVnode)) { invokeDestroyHook(oldVnode); }
-      return
-    }
-
-    var isInitialPatch = false;
-    var insertedVnodeQueue = [];
-
-    if (isUndef(oldVnode)) {
-      // empty mount (likely as component), create new root element
-      isInitialPatch = true;
-      createElm(vnode, insertedVnodeQueue, parentElm, refElm);
-    } else {
-      var isRealElement = isDef(oldVnode.nodeType);
-      if (!isRealElement && sameVnode(oldVnode, vnode)) {
-        // patch existing root node
-        patchVnode(oldVnode, vnode, insertedVnodeQueue, removeOnly);
-      } else {
-        if (isRealElement) {
-          // mounting to a real element
-          // check if this is server-rendered content and if we can perform
-          // a successful hydration.
-          if (oldVnode.nodeType === 1 && oldVnode.hasAttribute(SSR_ATTR)) {
-            oldVnode.removeAttribute(SSR_ATTR);
-            hydrating = true;
-          }
-          if (isTrue(hydrating)) {
-            if (hydrate(oldVnode, vnode, insertedVnodeQueue)) {
-              invokeInsertHook(vnode, insertedVnodeQueue, true);
-              return oldVnode
-            } else {
-              warn(
-                'The client-side rendered virtual DOM tree is not matching ' +
-                'server-rendered content. This is likely caused by incorrect ' +
-                'HTML markup, for example nesting block-level elements inside ' +
-                '<p>, or missing <tbody>. Bailing hydration and performing ' +
-                'full client-side render.'
-              );
-            }
-          }
-          // either not server-rendered, or hydration failed.
-          // create an empty node and replace it
-          oldVnode = emptyNodeAt(oldVnode);
-        }
-
-        // replacing existing element
-        var oldElm = oldVnode.elm;
-        var parentElm$1 = nodeOps.parentNode(oldElm);
-
-        // create new node
-        createElm(
-          vnode,
-          insertedVnodeQueue,
-          // extremely rare edge case: do not insert if old element is in a
-          // leaving transition. Only happens when combining transition +
-          // keep-alive + HOCs. (#4590)
-          oldElm._leaveCb ? null : parentElm$1,
-          nodeOps.nextSibling(oldElm)
-        );
-
-        // update parent placeholder node element, recursively
-        if (isDef(vnode.parent)) {
-          var ancestor = vnode.parent;
-          var patchable = isPatchable(vnode);
-          while (ancestor) {
-            for (var i = 0; i < cbs.destroy.length; ++i) {
-              cbs.destroy[i](ancestor);
-            }
-            ancestor.elm = vnode.elm;
-            if (patchable) {
-              for (var i$1 = 0; i$1 < cbs.create.length; ++i$1) {
-                cbs.create[i$1](emptyNode, ancestor);
-              }
-              // #6513
-              // invoke insert hooks that may have been merged by create hooks.
-              // e.g. for directives that uses the "inserted" hook.
-              var insert = ancestor.data.hook.insert;
-              if (insert.merged) {
-                // start at index 1 to avoid re-invoking component mounted hook
-                for (var i$2 = 1; i$2 < insert.fns.length; i$2++) {
-                  insert.fns[i$2]();
-                }
-              }
-            } else {
-              registerRef(ancestor);
-            }
-            ancestor = ancestor.parent;
-          }
-        }
-
-        // destroy old node
-        if (isDef(parentElm$1)) {
-          removeVnodes(parentElm$1, [oldVnode], 0, 0);
-        } else if (isDef(oldVnode.tag)) {
-          invokeDestroyHook(oldVnode);
-        }
-      }
-    }
-
-    invokeInsertHook(vnode, insertedVnodeQueue, isInitialPatch);
-    return vnode.elm
-  }
-}
-
-/*  */
-
-var directives = {
-  create: updateDirectives,
-  update: updateDirectives,
-  destroy: function unbindDirectives (vnode) {
-    updateDirectives(vnode, emptyNode);
-  }
-}
-
-function updateDirectives (oldVnode, vnode) {
-  if (oldVnode.data.directives || vnode.data.directives) {
-    _update(oldVnode, vnode);
-  }
-}
-
-function _update (oldVnode, vnode) {
-  var isCreate = oldVnode === emptyNode;
-  var isDestroy = vnode === emptyNode;
-  var oldDirs = normalizeDirectives$1(oldVnode.data.directives, oldVnode.context);
-  var newDirs = normalizeDirectives$1(vnode.data.directives, vnode.context);
-
-  var dirsWithInsert = [];
-  var dirsWithPostpatch = [];
-
-  var key, oldDir, dir;
-  for (key in newDirs) {
-    oldDir = oldDirs[key];
-    dir = newDirs[key];
-    if (!oldDir) {
-      // new directive, bind
-      callHook$1(dir, 'bind', vnode, oldVnode);
-      if (dir.def && dir.def.inserted) {
-        dirsWithInsert.push(dir);
-      }
-    } else {
-      // existing directive, update
-      dir.oldValue = oldDir.value;
-      callHook$1(dir, 'update', vnode, oldVnode);
-      if (dir.def && dir.def.componentUpdated) {
-        dirsWithPostpatch.push(dir);
-      }
-    }
-  }
-
-  if (dirsWithInsert.length) {
-    var callInsert = function () {
-      for (var i = 0; i < dirsWithInsert.length; i++) {
-        callHook$1(dirsWithInsert[i], 'inserted', vnode, oldVnode);
-      }
-    };
-    if (isCreate) {
-      mergeVNodeHook(vnode, 'insert', callInsert);
-    } else {
-      callInsert();
-    }
-  }
-
-  if (dirsWithPostpatch.length) {
-    mergeVNodeHook(vnode, 'postpatch', function () {
-      for (var i = 0; i < dirsWithPostpatch.length; i++) {
-        callHook$1(dirsWithPostpatch[i], 'componentUpdated', vnode, oldVnode);
-      }
-    });
-  }
-
-  if (!isCreate) {
-    for (key in oldDirs) {
-      if (!newDirs[key]) {
-        // no longer present, unbind
-        callHook$1(oldDirs[key], 'unbind', oldVnode, oldVnode, isDestroy);
-      }
-    }
-  }
-}
-
-var emptyModifiers = Object.create(null);
-
-function normalizeDirectives$1 (
-  dirs,
-  vm
-) {
-  var res = Object.create(null);
-  if (!dirs) {
-    // $flow-disable-line
-    return res
-  }
-  var i, dir;
-  for (i = 0; i < dirs.length; i++) {
-    dir = dirs[i];
-    if (!dir.modifiers) {
-      // $flow-disable-line
-      dir.modifiers = emptyModifiers;
-    }
-    res[getRawDirName(dir)] = dir;
-    dir.def = resolveAsset(vm.$options, 'directives', dir.name, true);
-  }
-  // $flow-disable-line
-  return res
-}
-
-function getRawDirName (dir) {
-  return dir.rawName || ((dir.name) + "." + (Object.keys(dir.modifiers || {}).join('.')))
-}
-
-function callHook$1 (dir, hook, vnode, oldVnode, isDestroy) {
-  var fn = dir.def && dir.def[hook];
-  if (fn) {
-    try {
-      fn(vnode.elm, dir, vnode, oldVnode, isDestroy);
-    } catch (e) {
-      handleError(e, vnode.context, ("directive " + (dir.name) + " " + hook + " hook"));
-    }
-  }
-}
-
-var baseModules = [
-  ref,
-  directives
-]
-
-/*  */
-
-function updateAttrs (oldVnode, vnode) {
-  var opts = vnode.componentOptions;
-  if (isDef(opts) && opts.Ctor.options.inheritAttrs === false) {
-    return
-  }
-  if (isUndef(oldVnode.data.attrs) && isUndef(vnode.data.attrs)) {
-    return
-  }
-  var key, cur, old;
-  var elm = vnode.elm;
-  var oldAttrs = oldVnode.data.attrs || {};
-  var attrs = vnode.data.attrs || {};
-  // clone observed objects, as the user probably wants to mutate it
-  if (isDef(attrs.__ob__)) {
-    attrs = vnode.data.attrs = extend({}, attrs);
-  }
-
-  for (key in attrs) {
-    cur = attrs[key];
-    old = oldAttrs[key];
-    if (old !== cur) {
-      setAttr(elm, key, cur);
-    }
-  }
-  // #4391: in IE9, setting type can reset value for input[type=radio]
-  // #6666: IE/Edge forces progress value down to 1 before setting a max
-  /* istanbul ignore if */
-  if ((isIE || isEdge) && attrs.value !== oldAttrs.value) {
-    setAttr(elm, 'value', attrs.value);
-  }
-  for (key in oldAttrs) {
-    if (isUndef(attrs[key])) {
-      if (isXlink(key)) {
-        elm.removeAttributeNS(xlinkNS, getXlinkProp(key));
-      } else if (!isEnumeratedAttr(key)) {
-        elm.removeAttribute(key);
-      }
-    }
-  }
-}
-
-function setAttr (el, key, value) {
-  if (el.tagName.indexOf('-') > -1) {
-    baseSetAttr(el, key, value);
-  } else if (isBooleanAttr(key)) {
-    // set attribute for blank value
-    // e.g. <option disabled>Select one</option>
-    if (isFalsyAttrValue(value)) {
-      el.removeAttribute(key);
-    } else {
-      // technically allowfullscreen is a boolean attribute for <iframe>,
-      // but Flash expects a value of "true" when used on <embed> tag
-      value = key === 'allowfullscreen' && el.tagName === 'EMBED'
-        ? 'true'
-        : key;
-      el.setAttribute(key, value);
-    }
-  } else if (isEnumeratedAttr(key)) {
-    el.setAttribute(key, isFalsyAttrValue(value) || value === 'false' ? 'false' : 'true');
-  } else if (isXlink(key)) {
-    if (isFalsyAttrValue(value)) {
-      el.removeAttributeNS(xlinkNS, getXlinkProp(key));
-    } else {
-      el.setAttributeNS(xlinkNS, key, value);
-    }
-  } else {
-    baseSetAttr(el, key, value);
-  }
-}
-
-function baseSetAttr (el, key, value) {
-  if (isFalsyAttrValue(value)) {
-    el.removeAttribute(key);
-  } else {
-    // #7138: IE10 & 11 fires input event when setting placeholder on
-    // <textarea>... block the first input event and remove the blocker
-    // immediately.
-    /* istanbul ignore if */
-    if (
-      isIE && !isIE9 &&
-      el.tagName === 'TEXTAREA' &&
-      key === 'placeholder' && !el.__ieph
-    ) {
-      var blocker = function (e) {
-        e.stopImmediatePropagation();
-        el.removeEventListener('input', blocker);
-      };
-      el.addEventListener('input', blocker);
-      // $flow-disable-line
-      el.__ieph = true; /* IE placeholder patched */
-    }
-    el.setAttribute(key, value);
-  }
-}
-
-var attrs = {
-  create: updateAttrs,
-  update: updateAttrs
-}
-
-/*  */
-
-function updateClass (oldVnode, vnode) {
-  var el = vnode.elm;
-  var data = vnode.data;
-  var oldData = oldVnode.data;
-  if (
-    isUndef(data.staticClass) &&
-    isUndef(data.class) && (
-      isUndef(oldData) || (
-        isUndef(oldData.staticClass) &&
-        isUndef(oldData.class)
-      )
-    )
-  ) {
-    return
-  }
-
-  var cls = genClassForVnode(vnode);
-
-  // handle transition classes
-  var transitionClass = el._transitionClasses;
-  if (isDef(transitionClass)) {
-    cls = concat(cls, stringifyClass(transitionClass));
-  }
-
-  // set the class
-  if (cls !== el._prevClass) {
-    el.setAttribute('class', cls);
-    el._prevClass = cls;
-  }
-}
-
-var klass = {
-  create: updateClass,
-  update: updateClass
-}
-
-/*  */
-
-var validDivisionCharRE = /[\w).+\-_$\]]/;
-
-function parseFilters (exp) {
-  var inSingle = false;
-  var inDouble = false;
-  var inTemplateString = false;
-  var inRegex = false;
-  var curly = 0;
-  var square = 0;
-  var paren = 0;
-  var lastFilterIndex = 0;
-  var c, prev, i, expression, filters;
-
-  for (i = 0; i < exp.length; i++) {
-    prev = c;
-    c = exp.charCodeAt(i);
-    if (inSingle) {
-      if (c === 0x27 && prev !== 0x5C) { inSingle = false; }
-    } else if (inDouble) {
-      if (c === 0x22 && prev !== 0x5C) { inDouble = false; }
-    } else if (inTemplateString) {
-      if (c === 0x60 && prev !== 0x5C) { inTemplateString = false; }
-    } else if (inRegex) {
-      if (c === 0x2f && prev !== 0x5C) { inRegex = false; }
-    } else if (
-      c === 0x7C && // pipe
-      exp.charCodeAt(i + 1) !== 0x7C &&
-      exp.charCodeAt(i - 1) !== 0x7C &&
-      !curly && !square && !paren
-    ) {
-      if (expression === undefined) {
-        // first filter, end of expression
-        lastFilterIndex = i + 1;
-        expression = exp.slice(0, i).trim();
-      } else {
-        pushFilter();
-      }
-    } else {
-      switch (c) {
-        case 0x22: inDouble = true; break         // "
-        case 0x27: inSingle = true; break         // '
-        case 0x60: inTemplateString = true; break // `
-        case 0x28: paren++; break                 // (
-        case 0x29: paren--; break                 // )
-        case 0x5B: square++; break                // [
-        case 0x5D: square--; break                // ]
-        case 0x7B: curly++; break                 // {
-        case 0x7D: curly--; break                 // }
-      }
-      if (c === 0x2f) { // /
-        var j = i - 1;
-        var p = (void 0);
-        // find first non-whitespace prev char
-        for (; j >= 0; j--) {
-          p = exp.charAt(j);
-          if (p !== ' ') { break }
-        }
-        if (!p || !validDivisionCharRE.test(p)) {
-          inRegex = true;
-        }
-      }
-    }
-  }
-
-  if (expression === undefined) {
-    expression = exp.slice(0, i).trim();
-  } else if (lastFilterIndex !== 0) {
-    pushFilter();
-  }
-
-  function pushFilter () {
-    (filters || (filters = [])).push(exp.slice(lastFilterIndex, i).trim());
-    lastFilterIndex = i + 1;
-  }
-
-  if (filters) {
-    for (i = 0; i < filters.length; i++) {
-      expression = wrapFilter(expression, filters[i]);
-    }
-  }
-
-  return expression
-}
-
-function wrapFilter (exp, filter) {
-  var i = filter.indexOf('(');
-  if (i < 0) {
-    // _f: resolveFilter
-    return ("_f(\"" + filter + "\")(" + exp + ")")
-  } else {
-    var name = filter.slice(0, i);
-    var args = filter.slice(i + 1);
-    return ("_f(\"" + name + "\")(" + exp + (args !== ')' ? ',' + args : args))
-  }
-}
-
-/*  */
-
-function baseWarn (msg) {
-  console.error(("[Vue compiler]: " + msg));
-}
-
-function pluckModuleFunction (
-  modules,
-  key
-) {
-  return modules
-    ? modules.map(function (m) { return m[key]; }).filter(function (_) { return _; })
-    : []
-}
-
-function addProp (el, name, value) {
-  (el.props || (el.props = [])).push({ name: name, value: value });
-  el.plain = false;
-}
-
-function addAttr (el, name, value) {
-  (el.attrs || (el.attrs = [])).push({ name: name, value: value });
-  el.plain = false;
-}
-
-// add a raw attr (use this in preTransforms)
-function addRawAttr (el, name, value) {
-  el.attrsMap[name] = value;
-  el.attrsList.push({ name: name, value: value });
-}
-
-function addDirective (
-  el,
-  name,
-  rawName,
-  value,
-  arg,
-  modifiers
-) {
-  (el.directives || (el.directives = [])).push({ name: name, rawName: rawName, value: value, arg: arg, modifiers: modifiers });
-  el.plain = false;
-}
-
-function addHandler (
-  el,
-  name,
-  value,
-  modifiers,
-  important,
-  warn
-) {
-  modifiers = modifiers || emptyObject;
-  // warn prevent and passive modifier
-  /* istanbul ignore if */
-  if (
-    "development" !== 'production' && warn &&
-    modifiers.prevent && modifiers.passive
-  ) {
-    warn(
-      'passive and prevent can\'t be used together. ' +
-      'Passive handler can\'t prevent default event.'
-    );
-  }
-
-  // check capture modifier
-  if (modifiers.capture) {
-    delete modifiers.capture;
-    name = '!' + name; // mark the event as captured
-  }
-  if (modifiers.once) {
-    delete modifiers.once;
-    name = '~' + name; // mark the event as once
-  }
-  /* istanbul ignore if */
-  if (modifiers.passive) {
-    delete modifiers.passive;
-    name = '&' + name; // mark the event as passive
-  }
-
-  // normalize click.right and click.middle since they don't actually fire
-  // this is technically browser-specific, but at least for now browsers are
-  // the only target envs that have right/middle clicks.
-  if (name === 'click') {
-    if (modifiers.right) {
-      name = 'contextmenu';
-      delete modifiers.right;
-    } else if (modifiers.middle) {
-      name = 'mouseup';
-    }
-  }
-
-  var events;
-  if (modifiers.native) {
-    delete modifiers.native;
-    events = el.nativeEvents || (el.nativeEvents = {});
-  } else {
-    events = el.events || (el.events = {});
-  }
-
-  var newHandler = {
-    value: value.trim()
-  };
-  if (modifiers !== emptyObject) {
-    newHandler.modifiers = modifiers;
-  }
-
-  var handlers = events[name];
-  /* istanbul ignore if */
-  if (Array.isArray(handlers)) {
-    important ? handlers.unshift(newHandler) : handlers.push(newHandler);
-  } else if (handlers) {
-    events[name] = important ? [newHandler, handlers] : [handlers, newHandler];
-  } else {
-    events[name] = newHandler;
-  }
-
-  el.plain = false;
-}
-
-function getBindingAttr (
-  el,
-  name,
-  getStatic
-) {
-  var dynamicValue =
-    getAndRemoveAttr(el, ':' + name) ||
-    getAndRemoveAttr(el, 'v-bind:' + name);
-  if (dynamicValue != null) {
-    return parseFilters(dynamicValue)
-  } else if (getStatic !== false) {
-    var staticValue = getAndRemoveAttr(el, name);
-    if (staticValue != null) {
-      return JSON.stringify(staticValue)
-    }
-  }
-}
-
-// note: this only removes the attr from the Array (attrsList) so that it
-// doesn't get processed by processAttrs.
-// By default it does NOT remove it from the map (attrsMap) because the map is
-// needed during codegen.
-function getAndRemoveAttr (
-  el,
-  name,
-  removeFromMap
-) {
-  var val;
-  if ((val = el.attrsMap[name]) != null) {
-    var list = el.attrsList;
-    for (var i = 0, l = list.length; i < l; i++) {
-      if (list[i].name === name) {
-        list.splice(i, 1);
-        break
-      }
-    }
-  }
-  if (removeFromMap) {
-    delete el.attrsMap[name];
-  }
-  return val
-}
-
-/*  */
-
-/**
- * Cross-platform code generation for component v-model
- */
-function genComponentModel (
-  el,
-  value,
-  modifiers
-) {
-  var ref = modifiers || {};
-  var number = ref.number;
-  var trim = ref.trim;
-
-  var baseValueExpression = '$$v';
-  var valueExpression = baseValueExpression;
-  if (trim) {
-    valueExpression =
-      "(typeof " + baseValueExpression + " === 'string'" +
-      "? " + baseValueExpression + ".trim()" +
-      ": " + baseValueExpression + ")";
-  }
-  if (number) {
-    valueExpression = "_n(" + valueExpression + ")";
-  }
-  var assignment = genAssignmentCode(value, valueExpression);
-
-  el.model = {
-    value: ("(" + value + ")"),
-    expression: ("\"" + value + "\""),
-    callback: ("function (" + baseValueExpression + ") {" + assignment + "}")
-  };
-}
-
-/**
- * Cross-platform codegen helper for generating v-model value assignment code.
- */
-function genAssignmentCode (
-  value,
-  assignment
-) {
-  var res = parseModel(value);
-  if (res.key === null) {
-    return (value + "=" + assignment)
-  } else {
-    return ("$set(" + (res.exp) + ", " + (res.key) + ", " + assignment + ")")
-  }
-}
-
-/**
- * Parse a v-model expression into a base path and a final key segment.
- * Handles both dot-path and possible square brackets.
- *
- * Possible cases:
- *
- * - test
- * - test[key]
- * - test[test1[key]]
- * - test["a"][key]
- * - xxx.test[a[a].test1[key]]
- * - test.xxx.a["asa"][test1[key]]
- *
- */
-
-var len;
-var str;
-var chr;
-var index$1;
-var expressionPos;
-var expressionEndPos;
-
-
-
-function parseModel (val) {
-  // Fix https://github.com/vuejs/vue/pull/7730
-  // allow v-model="obj.val " (trailing whitespace)
-  val = val.trim();
-  len = val.length;
-
-  if (val.indexOf('[') < 0 || val.lastIndexOf(']') < len - 1) {
-    index$1 = val.lastIndexOf('.');
-    if (index$1 > -1) {
-      return {
-        exp: val.slice(0, index$1),
-        key: '"' + val.slice(index$1 + 1) + '"'
-      }
-    } else {
-      return {
-        exp: val,
-        key: null
-      }
-    }
-  }
-
-  str = val;
-  index$1 = expressionPos = expressionEndPos = 0;
-
-  while (!eof()) {
-    chr = next();
-    /* istanbul ignore if */
-    if (isStringStart(chr)) {
-      parseString(chr);
-    } else if (chr === 0x5B) {
-      parseBracket(chr);
-    }
-  }
-
-  return {
-    exp: val.slice(0, expressionPos),
-    key: val.slice(expressionPos + 1, expressionEndPos)
-  }
-}
-
-function next () {
-  return str.charCodeAt(++index$1)
-}
-
-function eof () {
-  return index$1 >= len
-}
-
-function isStringStart (chr) {
-  return chr === 0x22 || chr === 0x27
-}
-
-function parseBracket (chr) {
-  var inBracket = 1;
-  expressionPos = index$1;
-  while (!eof()) {
-    chr = next();
-    if (isStringStart(chr)) {
-      parseString(chr);
-      continue
-    }
-    if (chr === 0x5B) { inBracket++; }
-    if (chr === 0x5D) { inBracket--; }
-    if (inBracket === 0) {
-      expressionEndPos = index$1;
-      break
-    }
-  }
-}
-
-function parseString (chr) {
-  var stringQuote = chr;
-  while (!eof()) {
-    chr = next();
-    if (chr === stringQuote) {
-      break
-    }
-  }
-}
-
-/*  */
-
-var warn$1;
-
-// in some cases, the event used has to be determined at runtime
-// so we used some reserved tokens during compile.
-var RANGE_TOKEN = '__r';
-var CHECKBOX_RADIO_TOKEN = '__c';
-
-function model (
-  el,
-  dir,
-  _warn
-) {
-  warn$1 = _warn;
-  var value = dir.value;
-  var modifiers = dir.modifiers;
-  var tag = el.tag;
-  var type = el.attrsMap.type;
-
-  {
-    // inputs with type="file" are read only and setting the input's
-    // value will throw an error.
-    if (tag === 'input' && type === 'file') {
-      warn$1(
-        "<" + (el.tag) + " v-model=\"" + value + "\" type=\"file\">:\n" +
-        "File inputs are read only. Use a v-on:change listener instead."
-      );
-    }
-  }
-
-  if (el.component) {
-    genComponentModel(el, value, modifiers);
-    // component v-model doesn't need extra runtime
-    return false
-  } else if (tag === 'select') {
-    genSelect(el, value, modifiers);
-  } else if (tag === 'input' && type === 'checkbox') {
-    genCheckboxModel(el, value, modifiers);
-  } else if (tag === 'input' && type === 'radio') {
-    genRadioModel(el, value, modifiers);
-  } else if (tag === 'input' || tag === 'textarea') {
-    genDefaultModel(el, value, modifiers);
-  } else if (!config.isReservedTag(tag)) {
-    genComponentModel(el, value, modifiers);
-    // component v-model doesn't need extra runtime
-    return false
-  } else {
-    warn$1(
-      "<" + (el.tag) + " v-model=\"" + value + "\">: " +
-      "v-model is not supported on this element type. " +
-      'If you are working with contenteditable, it\'s recommended to ' +
-      'wrap a library dedicated for that purpose inside a custom component.'
-    );
-  }
-
-  // ensure runtime directive metadata
-  return true
-}
-
-function genCheckboxModel (
-  el,
-  value,
-  modifiers
-) {
-  var number = modifiers && modifiers.number;
-  var valueBinding = getBindingAttr(el, 'value') || 'null';
-  var trueValueBinding = getBindingAttr(el, 'true-value') || 'true';
-  var falseValueBinding = getBindingAttr(el, 'false-value') || 'false';
-  addProp(el, 'checked',
-    "Array.isArray(" + value + ")" +
-    "?_i(" + value + "," + valueBinding + ")>-1" + (
-      trueValueBinding === 'true'
-        ? (":(" + value + ")")
-        : (":_q(" + value + "," + trueValueBinding + ")")
-    )
-  );
-  addHandler(el, 'change',
-    "var $$a=" + value + "," +
-        '$$el=$event.target,' +
-        "$$c=$$el.checked?(" + trueValueBinding + "):(" + falseValueBinding + ");" +
-    'if(Array.isArray($$a)){' +
-      "var $$v=" + (number ? '_n(' + valueBinding + ')' : valueBinding) + "," +
-          '$$i=_i($$a,$$v);' +
-      "if($$el.checked){$$i<0&&(" + (genAssignmentCode(value, '$$a.concat([$$v])')) + ")}" +
-      "else{$$i>-1&&(" + (genAssignmentCode(value, '$$a.slice(0,$$i).concat($$a.slice($$i+1))')) + ")}" +
-    "}else{" + (genAssignmentCode(value, '$$c')) + "}",
-    null, true
-  );
-}
-
-function genRadioModel (
-  el,
-  value,
-  modifiers
-) {
-  var number = modifiers && modifiers.number;
-  var valueBinding = getBindingAttr(el, 'value') || 'null';
-  valueBinding = number ? ("_n(" + valueBinding + ")") : valueBinding;
-  addProp(el, 'checked', ("_q(" + value + "," + valueBinding + ")"));
-  addHandler(el, 'change', genAssignmentCode(value, valueBinding), null, true);
-}
-
-function genSelect (
-  el,
-  value,
-  modifiers
-) {
-  var number = modifiers && modifiers.number;
-  var selectedVal = "Array.prototype.filter" +
-    ".call($event.target.options,function(o){return o.selected})" +
-    ".map(function(o){var val = \"_value\" in o ? o._value : o.value;" +
-    "return " + (number ? '_n(val)' : 'val') + "})";
-
-  var assignment = '$event.target.multiple ? $$selectedVal : $$selectedVal[0]';
-  var code = "var $$selectedVal = " + selectedVal + ";";
-  code = code + " " + (genAssignmentCode(value, assignment));
-  addHandler(el, 'change', code, null, true);
-}
-
-function genDefaultModel (
-  el,
-  value,
-  modifiers
-) {
-  var type = el.attrsMap.type;
-
-  // warn if v-bind:value conflicts with v-model
-  // except for inputs with v-bind:type
-  {
-    var value$1 = el.attrsMap['v-bind:value'] || el.attrsMap[':value'];
-    var typeBinding = el.attrsMap['v-bind:type'] || el.attrsMap[':type'];
-    if (value$1 && !typeBinding) {
-      var binding = el.attrsMap['v-bind:value'] ? 'v-bind:value' : ':value';
-      warn$1(
-        binding + "=\"" + value$1 + "\" conflicts with v-model on the same element " +
-        'because the latter already expands to a value binding internally'
-      );
-    }
-  }
-
-  var ref = modifiers || {};
-  var lazy = ref.lazy;
-  var number = ref.number;
-  var trim = ref.trim;
-  var needCompositionGuard = !lazy && type !== 'range';
-  var event = lazy
-    ? 'change'
-    : type === 'range'
-      ? RANGE_TOKEN
-      : 'input';
-
-  var valueExpression = '$event.target.value';
-  if (trim) {
-    valueExpression = "$event.target.value.trim()";
-  }
-  if (number) {
-    valueExpression = "_n(" + valueExpression + ")";
-  }
-
-  var code = genAssignmentCode(value, valueExpression);
-  if (needCompositionGuard) {
-    code = "if($event.target.composing)return;" + code;
-  }
-
-  addProp(el, 'value', ("(" + value + ")"));
-  addHandler(el, event, code, null, true);
-  if (trim || number) {
-    addHandler(el, 'blur', '$forceUpdate()');
-  }
-}
-
-/*  */
-
-// normalize v-model event tokens that can only be determined at runtime.
-// it's important to place the event as the first in the array because
-// the whole point is ensuring the v-model callback gets called before
-// user-attached handlers.
-function normalizeEvents (on) {
-  /* istanbul ignore if */
-  if (isDef(on[RANGE_TOKEN])) {
-    // IE input[type=range] only supports `change` event
-    var event = isIE ? 'change' : 'input';
-    on[event] = [].concat(on[RANGE_TOKEN], on[event] || []);
-    delete on[RANGE_TOKEN];
-  }
-  // This was originally intended to fix #4521 but no longer necessary
-  // after 2.5. Keeping it for backwards compat with generated code from < 2.4
-  /* istanbul ignore if */
-  if (isDef(on[CHECKBOX_RADIO_TOKEN])) {
-    on.change = [].concat(on[CHECKBOX_RADIO_TOKEN], on.change || []);
-    delete on[CHECKBOX_RADIO_TOKEN];
-  }
-}
-
-var target$1;
-
-function createOnceHandler (handler, event, capture) {
-  var _target = target$1; // save current target element in closure
-  return function onceHandler () {
-    var res = handler.apply(null, arguments);
-    if (res !== null) {
-      remove$2(event, onceHandler, capture, _target);
-    }
-  }
-}
-
-function add$1 (
-  event,
-  handler,
-  once$$1,
-  capture,
-  passive
-) {
-  handler = withMacroTask(handler);
-  if (once$$1) { handler = createOnceHandler(handler, event, capture); }
-  target$1.addEventListener(
-    event,
-    handler,
-    supportsPassive
-      ? { capture: capture, passive: passive }
-      : capture
-  );
-}
-
-function remove$2 (
-  event,
-  handler,
-  capture,
-  _target
-) {
-  (_target || target$1).removeEventListener(
-    event,
-    handler._withTask || handler,
-    capture
-  );
-}
-
-function updateDOMListeners (oldVnode, vnode) {
-  if (isUndef(oldVnode.data.on) && isUndef(vnode.data.on)) {
-    return
-  }
-  var on = vnode.data.on || {};
-  var oldOn = oldVnode.data.on || {};
-  target$1 = vnode.elm;
-  normalizeEvents(on);
-  updateListeners(on, oldOn, add$1, remove$2, vnode.context);
-  target$1 = undefined;
-}
-
-var events = {
-  create: updateDOMListeners,
-  update: updateDOMListeners
-}
-
-/*  */
-
-function updateDOMProps (oldVnode, vnode) {
-  if (isUndef(oldVnode.data.domProps) && isUndef(vnode.data.domProps)) {
-    return
-  }
-  var key, cur;
-  var elm = vnode.elm;
-  var oldProps = oldVnode.data.domProps || {};
-  var props = vnode.data.domProps || {};
-  // clone observed objects, as the user probably wants to mutate it
-  if (isDef(props.__ob__)) {
-    props = vnode.data.domProps = extend({}, props);
-  }
-
-  for (key in oldProps) {
-    if (isUndef(props[key])) {
-      elm[key] = '';
-    }
-  }
-  for (key in props) {
-    cur = props[key];
-    // ignore children if the node has textContent or innerHTML,
-    // as these will throw away existing DOM nodes and cause removal errors
-    // on subsequent patches (#3360)
-    if (key === 'textContent' || key === 'innerHTML') {
-      if (vnode.children) { vnode.children.length = 0; }
-      if (cur === oldProps[key]) { continue }
-      // #6601 work around Chrome version <= 55 bug where single textNode
-      // replaced by innerHTML/textContent retains its parentNode property
-      if (elm.childNodes.length === 1) {
-        elm.removeChild(elm.childNodes[0]);
-      }
-    }
-
-    if (key === 'value') {
-      // store value as _value as well since
-      // non-string values will be stringified
-      elm._value = cur;
-      // avoid resetting cursor position when value is the same
-      var strCur = isUndef(cur) ? '' : String(cur);
-      if (shouldUpdateValue(elm, strCur)) {
-        elm.value = strCur;
-      }
-    } else {
-      elm[key] = cur;
-    }
-  }
-}
-
-// check platforms/web/util/attrs.js acceptValue
-
-
-function shouldUpdateValue (elm, checkVal) {
-  return (!elm.composing && (
-    elm.tagName === 'OPTION' ||
-    isNotInFocusAndDirty(elm, checkVal) ||
-    isDirtyWithModifiers(elm, checkVal)
-  ))
-}
-
-function isNotInFocusAndDirty (elm, checkVal) {
-  // return true when textbox (.number and .trim) loses focus and its value is
-  // not equal to the updated value
-  var notInFocus = true;
-  // #6157
-  // work around IE bug when accessing document.activeElement in an iframe
-  try { notInFocus = document.activeElement !== elm; } catch (e) {}
-  return notInFocus && elm.value !== checkVal
-}
-
-function isDirtyWithModifiers (elm, newVal) {
-  var value = elm.value;
-  var modifiers = elm._vModifiers; // injected by v-model runtime
-  if (isDef(modifiers)) {
-    if (modifiers.lazy) {
-      // inputs with lazy should only be updated when not in focus
-      return false
-    }
-    if (modifiers.number) {
-      return toNumber(value) !== toNumber(newVal)
-    }
-    if (modifiers.trim) {
-      return value.trim() !== newVal.trim()
-    }
-  }
-  return value !== newVal
-}
-
-var domProps = {
-  create: updateDOMProps,
-  update: updateDOMProps
-}
-
-/*  */
-
-var parseStyleText = cached(function (cssText) {
-  var res = {};
-  var listDelimiter = /;(?![^(]*\))/g;
-  var propertyDelimiter = /:(.+)/;
-  cssText.split(listDelimiter).forEach(function (item) {
-    if (item) {
-      var tmp = item.split(propertyDelimiter);
-      tmp.length > 1 && (res[tmp[0].trim()] = tmp[1].trim());
-    }
-  });
-  return res
-});
-
-// merge static and dynamic style data on the same vnode
-function normalizeStyleData (data) {
-  var style = normalizeStyleBinding(data.style);
-  // static style is pre-processed into an object during compilation
-  // and is always a fresh object, so it's safe to merge into it
-  return data.staticStyle
-    ? extend(data.staticStyle, style)
-    : style
-}
-
-// normalize possible array / string values into Object
-function normalizeStyleBinding (bindingStyle) {
-  if (Array.isArray(bindingStyle)) {
-    return toObject(bindingStyle)
-  }
-  if (typeof bindingStyle === 'string') {
-    return parseStyleText(bindingStyle)
-  }
-  return bindingStyle
-}
-
-/**
- * parent component style should be after child's
- * so that parent component's style could override it
- */
-function getStyle (vnode, checkChild) {
-  var res = {};
-  var styleData;
-
-  if (checkChild) {
-    var childNode = vnode;
-    while (childNode.componentInstance) {
-      childNode = childNode.componentInstance._vnode;
-      if (
-        childNode && childNode.data &&
-        (styleData = normalizeStyleData(childNode.data))
-      ) {
-        extend(res, styleData);
-      }
-    }
-  }
-
-  if ((styleData = normalizeStyleData(vnode.data))) {
-    extend(res, styleData);
-  }
-
-  var parentNode = vnode;
-  while ((parentNode = parentNode.parent)) {
-    if (parentNode.data && (styleData = normalizeStyleData(parentNode.data))) {
-      extend(res, styleData);
-    }
-  }
-  return res
-}
-
-/*  */
-
-var cssVarRE = /^--/;
-var importantRE = /\s*!important$/;
-var setProp = function (el, name, val) {
-  /* istanbul ignore if */
-  if (cssVarRE.test(name)) {
-    el.style.setProperty(name, val);
-  } else if (importantRE.test(val)) {
-    el.style.setProperty(name, val.replace(importantRE, ''), 'important');
-  } else {
-    var normalizedName = normalize(name);
-    if (Array.isArray(val)) {
-      // Support values array created by autoprefixer, e.g.
-      // {display: ["-webkit-box", "-ms-flexbox", "flex"]}
-      // Set them one by one, and the browser will only set those it can recognize
-      for (var i = 0, len = val.length; i < len; i++) {
-        el.style[normalizedName] = val[i];
-      }
-    } else {
-      el.style[normalizedName] = val;
-    }
-  }
-};
-
-var vendorNames = ['Webkit', 'Moz', 'ms'];
-
-var emptyStyle;
-var normalize = cached(function (prop) {
-  emptyStyle = emptyStyle || document.createElement('div').style;
-  prop = camelize(prop);
-  if (prop !== 'filter' && (prop in emptyStyle)) {
-    return prop
-  }
-  var capName = prop.charAt(0).toUpperCase() + prop.slice(1);
-  for (var i = 0; i < vendorNames.length; i++) {
-    var name = vendorNames[i] + capName;
-    if (name in emptyStyle) {
-      return name
-    }
-  }
-});
-
-function updateStyle (oldVnode, vnode) {
-  var data = vnode.data;
-  var oldData = oldVnode.data;
-
-  if (isUndef(data.staticStyle) && isUndef(data.style) &&
-    isUndef(oldData.staticStyle) && isUndef(oldData.style)
-  ) {
-    return
-  }
-
-  var cur, name;
-  var el = vnode.elm;
-  var oldStaticStyle = oldData.staticStyle;
-  var oldStyleBinding = oldData.normalizedStyle || oldData.style || {};
-
-  // if static style exists, stylebinding already merged into it when doing normalizeStyleData
-  var oldStyle = oldStaticStyle || oldStyleBinding;
-
-  var style = normalizeStyleBinding(vnode.data.style) || {};
-
-  // store normalized style under a different key for next diff
-  // make sure to clone it if it's reactive, since the user likely wants
-  // to mutate it.
-  vnode.data.normalizedStyle = isDef(style.__ob__)
-    ? extend({}, style)
-    : style;
-
-  var newStyle = getStyle(vnode, true);
-
-  for (name in oldStyle) {
-    if (isUndef(newStyle[name])) {
-      setProp(el, name, '');
-    }
-  }
-  for (name in newStyle) {
-    cur = newStyle[name];
-    if (cur !== oldStyle[name]) {
-      // ie9 setting to null has no effect, must use empty string
-      setProp(el, name, cur == null ? '' : cur);
-    }
-  }
-}
-
-var style = {
-  create: updateStyle,
-  update: updateStyle
-}
-
-/*  */
-
-/**
- * Add class with compatibility for SVG since classList is not supported on
- * SVG elements in IE
- */
-function addClass (el, cls) {
-  /* istanbul ignore if */
-  if (!cls || !(cls = cls.trim())) {
-    return
-  }
-
-  /* istanbul ignore else */
-  if (el.classList) {
-    if (cls.indexOf(' ') > -1) {
-      cls.split(/\s+/).forEach(function (c) { return el.classList.add(c); });
-    } else {
-      el.classList.add(cls);
-    }
-  } else {
-    var cur = " " + (el.getAttribute('class') || '') + " ";
-    if (cur.indexOf(' ' + cls + ' ') < 0) {
-      el.setAttribute('class', (cur + cls).trim());
-    }
-  }
-}
-
-/**
- * Remove class with compatibility for SVG since classList is not supported on
- * SVG elements in IE
- */
-function removeClass (el, cls) {
-  /* istanbul ignore if */
-  if (!cls || !(cls = cls.trim())) {
-    return
-  }
-
-  /* istanbul ignore else */
-  if (el.classList) {
-    if (cls.indexOf(' ') > -1) {
-      cls.split(/\s+/).forEach(function (c) { return el.classList.remove(c); });
-    } else {
-      el.classList.remove(cls);
-    }
-    if (!el.classList.length) {
-      el.removeAttribute('class');
-    }
-  } else {
-    var cur = " " + (el.getAttribute('class') || '') + " ";
-    var tar = ' ' + cls + ' ';
-    while (cur.indexOf(tar) >= 0) {
-      cur = cur.replace(tar, ' ');
-    }
-    cur = cur.trim();
-    if (cur) {
-      el.setAttribute('class', cur);
-    } else {
-      el.removeAttribute('class');
-    }
-  }
-}
-
-/*  */
-
-function resolveTransition (def) {
-  if (!def) {
-    return
-  }
-  /* istanbul ignore else */
-  if (typeof def === 'object') {
-    var res = {};
-    if (def.css !== false) {
-      extend(res, autoCssTransition(def.name || 'v'));
-    }
-    extend(res, def);
-    return res
-  } else if (typeof def === 'string') {
-    return autoCssTransition(def)
-  }
-}
-
-var autoCssTransition = cached(function (name) {
-  return {
-    enterClass: (name + "-enter"),
-    enterToClass: (name + "-enter-to"),
-    enterActiveClass: (name + "-enter-active"),
-    leaveClass: (name + "-leave"),
-    leaveToClass: (name + "-leave-to"),
-    leaveActiveClass: (name + "-leave-active")
-  }
-});
-
-var hasTransition = inBrowser && !isIE9;
-var TRANSITION = 'transition';
-var ANIMATION = 'animation';
-
-// Transition property/event sniffing
-var transitionProp = 'transition';
-var transitionEndEvent = 'transitionend';
-var animationProp = 'animation';
-var animationEndEvent = 'animationend';
-if (hasTransition) {
-  /* istanbul ignore if */
-  if (window.ontransitionend === undefined &&
-    window.onwebkittransitionend !== undefined
-  ) {
-    transitionProp = 'WebkitTransition';
-    transitionEndEvent = 'webkitTransitionEnd';
-  }
-  if (window.onanimationend === undefined &&
-    window.onwebkitanimationend !== undefined
-  ) {
-    animationProp = 'WebkitAnimation';
-    animationEndEvent = 'webkitAnimationEnd';
-  }
-}
-
-// binding to window is necessary to make hot reload work in IE in strict mode
-var raf = inBrowser
-  ? window.requestAnimationFrame
-    ? window.requestAnimationFrame.bind(window)
-    : setTimeout
-  : /* istanbul ignore next */ function (fn) { return fn(); };
-
-function nextFrame (fn) {
-  raf(function () {
-    raf(fn);
-  });
-}
-
-function addTransitionClass (el, cls) {
-  var transitionClasses = el._transitionClasses || (el._transitionClasses = []);
-  if (transitionClasses.indexOf(cls) < 0) {
-    transitionClasses.push(cls);
-    addClass(el, cls);
-  }
-}
-
-function removeTransitionClass (el, cls) {
-  if (el._transitionClasses) {
-    remove(el._transitionClasses, cls);
-  }
-  removeClass(el, cls);
-}
-
-function whenTransitionEnds (
-  el,
-  expectedType,
-  cb
-) {
-  var ref = getTransitionInfo(el, expectedType);
-  var type = ref.type;
-  var timeout = ref.timeout;
-  var propCount = ref.propCount;
-  if (!type) { return cb() }
-  var event = type === TRANSITION ? transitionEndEvent : animationEndEvent;
-  var ended = 0;
-  var end = function () {
-    el.removeEventListener(event, onEnd);
-    cb();
-  };
-  var onEnd = function (e) {
-    if (e.target === el) {
-      if (++ended >= propCount) {
-        end();
-      }
-    }
-  };
-  setTimeout(function () {
-    if (ended < propCount) {
-      end();
-    }
-  }, timeout + 1);
-  el.addEventListener(event, onEnd);
-}
-
-var transformRE = /\b(transform|all)(,|$)/;
-
-function getTransitionInfo (el, expectedType) {
-  var styles = window.getComputedStyle(el);
-  var transitionDelays = styles[transitionProp + 'Delay'].split(', ');
-  var transitionDurations = styles[transitionProp + 'Duration'].split(', ');
-  var transitionTimeout = getTimeout(transitionDelays, transitionDurations);
-  var animationDelays = styles[animationProp + 'Delay'].split(', ');
-  var animationDurations = styles[animationProp + 'Duration'].split(', ');
-  var animationTimeout = getTimeout(animationDelays, animationDurations);
-
-  var type;
-  var timeout = 0;
-  var propCount = 0;
-  /* istanbul ignore if */
-  if (expectedType === TRANSITION) {
-    if (transitionTimeout > 0) {
-      type = TRANSITION;
-      timeout = transitionTimeout;
-      propCount = transitionDurations.length;
-    }
-  } else if (expectedType === ANIMATION) {
-    if (animationTimeout > 0) {
-      type = ANIMATION;
-      timeout = animationTimeout;
-      propCount = animationDurations.length;
-    }
-  } else {
-    timeout = Math.max(transitionTimeout, animationTimeout);
-    type = timeout > 0
-      ? transitionTimeout > animationTimeout
-        ? TRANSITION
-        : ANIMATION
-      : null;
-    propCount = type
-      ? type === TRANSITION
-        ? transitionDurations.length
-        : animationDurations.length
-      : 0;
-  }
-  var hasTransform =
-    type === TRANSITION &&
-    transformRE.test(styles[transitionProp + 'Property']);
-  return {
-    type: type,
-    timeout: timeout,
-    propCount: propCount,
-    hasTransform: hasTransform
-  }
-}
-
-function getTimeout (delays, durations) {
-  /* istanbul ignore next */
-  while (delays.length < durations.length) {
-    delays = delays.concat(delays);
-  }
-
-  return Math.max.apply(null, durations.map(function (d, i) {
-    return toMs(d) + toMs(delays[i])
-  }))
-}
-
-function toMs (s) {
-  return Number(s.slice(0, -1)) * 1000
-}
-
-/*  */
-
-function enter (vnode, toggleDisplay) {
-  var el = vnode.elm;
-
-  // call leave callback now
-  if (isDef(el._leaveCb)) {
-    el._leaveCb.cancelled = true;
-    el._leaveCb();
-  }
-
-  var data = resolveTransition(vnode.data.transition);
-  if (isUndef(data)) {
-    return
-  }
-
-  /* istanbul ignore if */
-  if (isDef(el._enterCb) || el.nodeType !== 1) {
-    return
-  }
-
-  var css = data.css;
-  var type = data.type;
-  var enterClass = data.enterClass;
-  var enterToClass = data.enterToClass;
-  var enterActiveClass = data.enterActiveClass;
-  var appearClass = data.appearClass;
-  var appearToClass = data.appearToClass;
-  var appearActiveClass = data.appearActiveClass;
-  var beforeEnter = data.beforeEnter;
-  var enter = data.enter;
-  var afterEnter = data.afterEnter;
-  var enterCancelled = data.enterCancelled;
-  var beforeAppear = data.beforeAppear;
-  var appear = data.appear;
-  var afterAppear = data.afterAppear;
-  var appearCancelled = data.appearCancelled;
-  var duration = data.duration;
-
-  // activeInstance will always be the <transition> component managing this
-  // transition. One edge case to check is when the <transition> is placed
-  // as the root node of a child component. In that case we need to check
-  // <transition>'s parent for appear check.
-  var context = activeInstance;
-  var transitionNode = activeInstance.$vnode;
-  while (transitionNode && transitionNode.parent) {
-    transitionNode = transitionNode.parent;
-    context = transitionNode.context;
-  }
-
-  var isAppear = !context._isMounted || !vnode.isRootInsert;
-
-  if (isAppear && !appear && appear !== '') {
-    return
-  }
-
-  var startClass = isAppear && appearClass
-    ? appearClass
-    : enterClass;
-  var activeClass = isAppear && appearActiveClass
-    ? appearActiveClass
-    : enterActiveClass;
-  var toClass = isAppear && appearToClass
-    ? appearToClass
-    : enterToClass;
-
-  var beforeEnterHook = isAppear
-    ? (beforeAppear || beforeEnter)
-    : beforeEnter;
-  var enterHook = isAppear
-    ? (typeof appear === 'function' ? appear : enter)
-    : enter;
-  var afterEnterHook = isAppear
-    ? (afterAppear || afterEnter)
-    : afterEnter;
-  var enterCancelledHook = isAppear
-    ? (appearCancelled || enterCancelled)
-    : enterCancelled;
-
-  var explicitEnterDuration = toNumber(
-    isObject(duration)
-      ? duration.enter
-      : duration
-  );
-
-  if ("development" !== 'production' && explicitEnterDuration != null) {
-    checkDuration(explicitEnterDuration, 'enter', vnode);
-  }
-
-  var expectsCSS = css !== false && !isIE9;
-  var userWantsControl = getHookArgumentsLength(enterHook);
-
-  var cb = el._enterCb = once(function () {
-    if (expectsCSS) {
-      removeTransitionClass(el, toClass);
-      removeTransitionClass(el, activeClass);
-    }
-    if (cb.cancelled) {
-      if (expectsCSS) {
-        removeTransitionClass(el, startClass);
-      }
-      enterCancelledHook && enterCancelledHook(el);
-    } else {
-      afterEnterHook && afterEnterHook(el);
-    }
-    el._enterCb = null;
-  });
-
-  if (!vnode.data.show) {
-    // remove pending leave element on enter by injecting an insert hook
-    mergeVNodeHook(vnode, 'insert', function () {
-      var parent = el.parentNode;
-      var pendingNode = parent && parent._pending && parent._pending[vnode.key];
-      if (pendingNode &&
-        pendingNode.tag === vnode.tag &&
-        pendingNode.elm._leaveCb
-      ) {
-        pendingNode.elm._leaveCb();
-      }
-      enterHook && enterHook(el, cb);
-    });
-  }
-
-  // start enter transition
-  beforeEnterHook && beforeEnterHook(el);
-  if (expectsCSS) {
-    addTransitionClass(el, startClass);
-    addTransitionClass(el, activeClass);
-    nextFrame(function () {
-      removeTransitionClass(el, startClass);
-      if (!cb.cancelled) {
-        addTransitionClass(el, toClass);
-        if (!userWantsControl) {
-          if (isValidDuration(explicitEnterDuration)) {
-            setTimeout(cb, explicitEnterDuration);
-          } else {
-            whenTransitionEnds(el, type, cb);
-          }
-        }
-      }
-    });
-  }
-
-  if (vnode.data.show) {
-    toggleDisplay && toggleDisplay();
-    enterHook && enterHook(el, cb);
-  }
-
-  if (!expectsCSS && !userWantsControl) {
-    cb();
-  }
-}
-
-function leave (vnode, rm) {
-  var el = vnode.elm;
-
-  // call enter callback now
-  if (isDef(el._enterCb)) {
-    el._enterCb.cancelled = true;
-    el._enterCb();
-  }
-
-  var data = resolveTransition(vnode.data.transition);
-  if (isUndef(data) || el.nodeType !== 1) {
-    return rm()
-  }
-
-  /* istanbul ignore if */
-  if (isDef(el._leaveCb)) {
-    return
-  }
-
-  var css = data.css;
-  var type = data.type;
-  var leaveClass = data.leaveClass;
-  var leaveToClass = data.leaveToClass;
-  var leaveActiveClass = data.leaveActiveClass;
-  var beforeLeave = data.beforeLeave;
-  var leave = data.leave;
-  var afterLeave = data.afterLeave;
-  var leaveCancelled = data.leaveCancelled;
-  var delayLeave = data.delayLeave;
-  var duration = data.duration;
-
-  var expectsCSS = css !== false && !isIE9;
-  var userWantsControl = getHookArgumentsLength(leave);
-
-  var explicitLeaveDuration = toNumber(
-    isObject(duration)
-      ? duration.leave
-      : duration
-  );
-
-  if ("development" !== 'production' && isDef(explicitLeaveDuration)) {
-    checkDuration(explicitLeaveDuration, 'leave', vnode);
-  }
-
-  var cb = el._leaveCb = once(function () {
-    if (el.parentNode && el.parentNode._pending) {
-      el.parentNode._pending[vnode.key] = null;
-    }
-    if (expectsCSS) {
-      removeTransitionClass(el, leaveToClass);
-      removeTransitionClass(el, leaveActiveClass);
-    }
-    if (cb.cancelled) {
-      if (expectsCSS) {
-        removeTransitionClass(el, leaveClass);
-      }
-      leaveCancelled && leaveCancelled(el);
-    } else {
-      rm();
-      afterLeave && afterLeave(el);
-    }
-    el._leaveCb = null;
-  });
-
-  if (delayLeave) {
-    delayLeave(performLeave);
-  } else {
-    performLeave();
-  }
-
-  function performLeave () {
-    // the delayed leave may have already been cancelled
-    if (cb.cancelled) {
-      return
-    }
-    // record leaving element
-    if (!vnode.data.show) {
-      (el.parentNode._pending || (el.parentNode._pending = {}))[(vnode.key)] = vnode;
-    }
-    beforeLeave && beforeLeave(el);
-    if (expectsCSS) {
-      addTransitionClass(el, leaveClass);
-      addTransitionClass(el, leaveActiveClass);
-      nextFrame(function () {
-        removeTransitionClass(el, leaveClass);
-        if (!cb.cancelled) {
-          addTransitionClass(el, leaveToClass);
-          if (!userWantsControl) {
-            if (isValidDuration(explicitLeaveDuration)) {
-              setTimeout(cb, explicitLeaveDuration);
-            } else {
-              whenTransitionEnds(el, type, cb);
-            }
-          }
-        }
-      });
-    }
-    leave && leave(el, cb);
-    if (!expectsCSS && !userWantsControl) {
-      cb();
-    }
-  }
-}
-
-// only used in dev mode
-function checkDuration (val, name, vnode) {
-  if (typeof val !== 'number') {
-    warn(
-      "<transition> explicit " + name + " duration is not a valid number - " +
-      "got " + (JSON.stringify(val)) + ".",
-      vnode.context
-    );
-  } else if (isNaN(val)) {
-    warn(
-      "<transition> explicit " + name + " duration is NaN - " +
-      'the duration expression might be incorrect.',
-      vnode.context
-    );
-  }
-}
-
-function isValidDuration (val) {
-  return typeof val === 'number' && !isNaN(val)
-}
-
-/**
- * Normalize a transition hook's argument length. The hook may be:
- * - a merged hook (invoker) with the original in .fns
- * - a wrapped component method (check ._length)
- * - a plain function (.length)
- */
-function getHookArgumentsLength (fn) {
-  if (isUndef(fn)) {
-    return false
-  }
-  var invokerFns = fn.fns;
-  if (isDef(invokerFns)) {
-    // invoker
-    return getHookArgumentsLength(
-      Array.isArray(invokerFns)
-        ? invokerFns[0]
-        : invokerFns
-    )
-  } else {
-    return (fn._length || fn.length) > 1
-  }
-}
-
-function _enter (_, vnode) {
-  if (vnode.data.show !== true) {
-    enter(vnode);
-  }
-}
-
-var transition = inBrowser ? {
-  create: _enter,
-  activate: _enter,
-  remove: function remove$$1 (vnode, rm) {
-    /* istanbul ignore else */
-    if (vnode.data.show !== true) {
-      leave(vnode, rm);
-    } else {
-      rm();
-    }
-  }
-} : {}
-
-var platformModules = [
-  attrs,
-  klass,
-  events,
-  domProps,
-  style,
-  transition
-]
-
-/*  */
-
-// the directive module should be applied last, after all
-// built-in modules have been applied.
-var modules = platformModules.concat(baseModules);
-
-var patch = createPatchFunction({ nodeOps: nodeOps, modules: modules });
-
-/**
- * Not type checking this file because flow doesn't like attaching
- * properties to Elements.
- */
-
-/* istanbul ignore if */
-if (isIE9) {
-  // http://www.matts411.com/post/internet-explorer-9-oninput/
-  document.addEventListener('selectionchange', function () {
-    var el = document.activeElement;
-    if (el && el.vmodel) {
-      trigger(el, 'input');
-    }
-  });
-}
-
-var directive = {
-  inserted: function inserted (el, binding, vnode, oldVnode) {
-    if (vnode.tag === 'select') {
-      // #6903
-      if (oldVnode.elm && !oldVnode.elm._vOptions) {
-        mergeVNodeHook(vnode, 'postpatch', function () {
-          directive.componentUpdated(el, binding, vnode);
-        });
-      } else {
-        setSelected(el, binding, vnode.context);
-      }
-      el._vOptions = [].map.call(el.options, getValue);
-    } else if (vnode.tag === 'textarea' || isTextInputType(el.type)) {
-      el._vModifiers = binding.modifiers;
-      if (!binding.modifiers.lazy) {
-        el.addEventListener('compositionstart', onCompositionStart);
-        el.addEventListener('compositionend', onCompositionEnd);
-        // Safari < 10.2 & UIWebView doesn't fire compositionend when
-        // switching focus before confirming composition choice
-        // this also fixes the issue where some browsers e.g. iOS Chrome
-        // fires "change" instead of "input" on autocomplete.
-        el.addEventListener('change', onCompositionEnd);
-        /* istanbul ignore if */
-        if (isIE9) {
-          el.vmodel = true;
-        }
-      }
-    }
-  },
-
-  componentUpdated: function componentUpdated (el, binding, vnode) {
-    if (vnode.tag === 'select') {
-      setSelected(el, binding, vnode.context);
-      // in case the options rendered by v-for have changed,
-      // it's possible that the value is out-of-sync with the rendered options.
-      // detect such cases and filter out values that no longer has a matching
-      // option in the DOM.
-      var prevOptions = el._vOptions;
-      var curOptions = el._vOptions = [].map.call(el.options, getValue);
-      if (curOptions.some(function (o, i) { return !looseEqual(o, prevOptions[i]); })) {
-        // trigger change event if
-        // no matching option found for at least one value
-        var needReset = el.multiple
-          ? binding.value.some(function (v) { return hasNoMatchingOption(v, curOptions); })
-          : binding.value !== binding.oldValue && hasNoMatchingOption(binding.value, curOptions);
-        if (needReset) {
-          trigger(el, 'change');
-        }
-      }
-    }
-  }
-};
-
-function setSelected (el, binding, vm) {
-  actuallySetSelected(el, binding, vm);
-  /* istanbul ignore if */
-  if (isIE || isEdge) {
-    setTimeout(function () {
-      actuallySetSelected(el, binding, vm);
-    }, 0);
-  }
-}
-
-function actuallySetSelected (el, binding, vm) {
-  var value = binding.value;
-  var isMultiple = el.multiple;
-  if (isMultiple && !Array.isArray(value)) {
-    "development" !== 'production' && warn(
-      "<select multiple v-model=\"" + (binding.expression) + "\"> " +
-      "expects an Array value for its binding, but got " + (Object.prototype.toString.call(value).slice(8, -1)),
-      vm
-    );
-    return
-  }
-  var selected, option;
-  for (var i = 0, l = el.options.length; i < l; i++) {
-    option = el.options[i];
-    if (isMultiple) {
-      selected = looseIndexOf(value, getValue(option)) > -1;
-      if (option.selected !== selected) {
-        option.selected = selected;
-      }
-    } else {
-      if (looseEqual(getValue(option), value)) {
-        if (el.selectedIndex !== i) {
-          el.selectedIndex = i;
-        }
-        return
-      }
-    }
-  }
-  if (!isMultiple) {
-    el.selectedIndex = -1;
-  }
-}
-
-function hasNoMatchingOption (value, options) {
-  return options.every(function (o) { return !looseEqual(o, value); })
-}
-
-function getValue (option) {
-  return '_value' in option
-    ? option._value
-    : option.value
-}
-
-function onCompositionStart (e) {
-  e.target.composing = true;
-}
-
-function onCompositionEnd (e) {
-  // prevent triggering an input event for no reason
-  if (!e.target.composing) { return }
-  e.target.composing = false;
-  trigger(e.target, 'input');
-}
-
-function trigger (el, type) {
-  var e = document.createEvent('HTMLEvents');
-  e.initEvent(type, true, true);
-  el.dispatchEvent(e);
-}
-
-/*  */
-
-// recursively search for possible transition defined inside the component root
-function locateNode (vnode) {
-  return vnode.componentInstance && (!vnode.data || !vnode.data.transition)
-    ? locateNode(vnode.componentInstance._vnode)
-    : vnode
-}
-
-var show = {
-  bind: function bind (el, ref, vnode) {
-    var value = ref.value;
-
-    vnode = locateNode(vnode);
-    var transition$$1 = vnode.data && vnode.data.transition;
-    var originalDisplay = el.__vOriginalDisplay =
-      el.style.display === 'none' ? '' : el.style.display;
-    if (value && transition$$1) {
-      vnode.data.show = true;
-      enter(vnode, function () {
-        el.style.display = originalDisplay;
-      });
-    } else {
-      el.style.display = value ? originalDisplay : 'none';
-    }
-  },
-
-  update: function update (el, ref, vnode) {
-    var value = ref.value;
-    var oldValue = ref.oldValue;
-
-    /* istanbul ignore if */
-    if (!value === !oldValue) { return }
-    vnode = locateNode(vnode);
-    var transition$$1 = vnode.data && vnode.data.transition;
-    if (transition$$1) {
-      vnode.data.show = true;
-      if (value) {
-        enter(vnode, function () {
-          el.style.display = el.__vOriginalDisplay;
-        });
-      } else {
-        leave(vnode, function () {
-          el.style.display = 'none';
-        });
-      }
-    } else {
-      el.style.display = value ? el.__vOriginalDisplay : 'none';
-    }
-  },
-
-  unbind: function unbind (
-    el,
-    binding,
-    vnode,
-    oldVnode,
-    isDestroy
-  ) {
-    if (!isDestroy) {
-      el.style.display = el.__vOriginalDisplay;
-    }
-  }
-}
-
-var platformDirectives = {
-  model: directive,
-  show: show
-}
-
-/*  */
-
-// Provides transition support for a single element/component.
-// supports transition mode (out-in / in-out)
-
-var transitionProps = {
-  name: String,
-  appear: Boolean,
-  css: Boolean,
-  mode: String,
-  type: String,
-  enterClass: String,
-  leaveClass: String,
-  enterToClass: String,
-  leaveToClass: String,
-  enterActiveClass: String,
-  leaveActiveClass: String,
-  appearClass: String,
-  appearActiveClass: String,
-  appearToClass: String,
-  duration: [Number, String, Object]
-};
-
-// in case the child is also an abstract component, e.g. <keep-alive>
-// we want to recursively retrieve the real component to be rendered
-function getRealChild (vnode) {
-  var compOptions = vnode && vnode.componentOptions;
-  if (compOptions && compOptions.Ctor.options.abstract) {
-    return getRealChild(getFirstComponentChild(compOptions.children))
-  } else {
-    return vnode
-  }
-}
-
-function extractTransitionData (comp) {
-  var data = {};
-  var options = comp.$options;
-  // props
-  for (var key in options.propsData) {
-    data[key] = comp[key];
-  }
-  // events.
-  // extract listeners and pass them directly to the transition methods
-  var listeners = options._parentListeners;
-  for (var key$1 in listeners) {
-    data[camelize(key$1)] = listeners[key$1];
-  }
-  return data
-}
-
-function placeholder (h, rawChild) {
-  if (/\d-keep-alive$/.test(rawChild.tag)) {
-    return h('keep-alive', {
-      props: rawChild.componentOptions.propsData
-    })
-  }
-}
-
-function hasParentTransition (vnode) {
-  while ((vnode = vnode.parent)) {
-    if (vnode.data.transition) {
-      return true
-    }
-  }
-}
-
-function isSameChild (child, oldChild) {
-  return oldChild.key === child.key && oldChild.tag === child.tag
-}
-
-var Transition = {
-  name: 'transition',
-  props: transitionProps,
-  abstract: true,
-
-  render: function render (h) {
-    var this$1 = this;
-
-    var children = this.$slots.default;
-    if (!children) {
-      return
-    }
-
-    // filter out text nodes (possible whitespaces)
-    children = children.filter(function (c) { return c.tag || isAsyncPlaceholder(c); });
-    /* istanbul ignore if */
-    if (!children.length) {
-      return
-    }
-
-    // warn multiple elements
-    if ("development" !== 'production' && children.length > 1) {
-      warn(
-        '<transition> can only be used on a single element. Use ' +
-        '<transition-group> for lists.',
-        this.$parent
-      );
-    }
-
-    var mode = this.mode;
-
-    // warn invalid mode
-    if ("development" !== 'production' &&
-      mode && mode !== 'in-out' && mode !== 'out-in'
-    ) {
-      warn(
-        'invalid <transition> mode: ' + mode,
-        this.$parent
-      );
-    }
-
-    var rawChild = children[0];
-
-    // if this is a component root node and the component's
-    // parent container node also has transition, skip.
-    if (hasParentTransition(this.$vnode)) {
-      return rawChild
-    }
-
-    // apply transition data to child
-    // use getRealChild() to ignore abstract components e.g. keep-alive
-    var child = getRealChild(rawChild);
-    /* istanbul ignore if */
-    if (!child) {
-      return rawChild
-    }
-
-    if (this._leaving) {
-      return placeholder(h, rawChild)
-    }
-
-    // ensure a key that is unique to the vnode type and to this transition
-    // component instance. This key will be used to remove pending leaving nodes
-    // during entering.
-    var id = "__transition-" + (this._uid) + "-";
-    child.key = child.key == null
-      ? child.isComment
-        ? id + 'comment'
-        : id + child.tag
-      : isPrimitive(child.key)
-        ? (String(child.key).indexOf(id) === 0 ? child.key : id + child.key)
-        : child.key;
-
-    var data = (child.data || (child.data = {})).transition = extractTransitionData(this);
-    var oldRawChild = this._vnode;
-    var oldChild = getRealChild(oldRawChild);
-
-    // mark v-show
-    // so that the transition module can hand over the control to the directive
-    if (child.data.directives && child.data.directives.some(function (d) { return d.name === 'show'; })) {
-      child.data.show = true;
-    }
-
-    if (
-      oldChild &&
-      oldChild.data &&
-      !isSameChild(child, oldChild) &&
-      !isAsyncPlaceholder(oldChild) &&
-      // #6687 component root is a comment node
-      !(oldChild.componentInstance && oldChild.componentInstance._vnode.isComment)
-    ) {
-      // replace old child transition data with fresh one
-      // important for dynamic transitions!
-      var oldData = oldChild.data.transition = extend({}, data);
-      // handle transition mode
-      if (mode === 'out-in') {
-        // return placeholder node and queue update when leave finishes
-        this._leaving = true;
-        mergeVNodeHook(oldData, 'afterLeave', function () {
-          this$1._leaving = false;
-          this$1.$forceUpdate();
-        });
-        return placeholder(h, rawChild)
-      } else if (mode === 'in-out') {
-        if (isAsyncPlaceholder(child)) {
-          return oldRawChild
-        }
-        var delayedLeave;
-        var performLeave = function () { delayedLeave(); };
-        mergeVNodeHook(data, 'afterEnter', performLeave);
-        mergeVNodeHook(data, 'enterCancelled', performLeave);
-        mergeVNodeHook(oldData, 'delayLeave', function (leave) { delayedLeave = leave; });
-      }
-    }
-
-    return rawChild
-  }
-}
-
-/*  */
-
-// Provides transition support for list items.
-// supports move transitions using the FLIP technique.
-
-// Because the vdom's children update algorithm is "unstable" - i.e.
-// it doesn't guarantee the relative positioning of removed elements,
-// we force transition-group to update its children into two passes:
-// in the first pass, we remove all nodes that need to be removed,
-// triggering their leaving transition; in the second pass, we insert/move
-// into the final desired state. This way in the second pass removed
-// nodes will remain where they should be.
-
-var props = extend({
-  tag: String,
-  moveClass: String
-}, transitionProps);
-
-delete props.mode;
-
-var TransitionGroup = {
-  props: props,
-
-  render: function render (h) {
-    var tag = this.tag || this.$vnode.data.tag || 'span';
-    var map = Object.create(null);
-    var prevChildren = this.prevChildren = this.children;
-    var rawChildren = this.$slots.default || [];
-    var children = this.children = [];
-    var transitionData = extractTransitionData(this);
-
-    for (var i = 0; i < rawChildren.length; i++) {
-      var c = rawChildren[i];
-      if (c.tag) {
-        if (c.key != null && String(c.key).indexOf('__vlist') !== 0) {
-          children.push(c);
-          map[c.key] = c
-          ;(c.data || (c.data = {})).transition = transitionData;
-        } else {
-          var opts = c.componentOptions;
-          var name = opts ? (opts.Ctor.options.name || opts.tag || '') : c.tag;
-          warn(("<transition-group> children must be keyed: <" + name + ">"));
-        }
-      }
-    }
-
-    if (prevChildren) {
-      var kept = [];
-      var removed = [];
-      for (var i$1 = 0; i$1 < prevChildren.length; i$1++) {
-        var c$1 = prevChildren[i$1];
-        c$1.data.transition = transitionData;
-        c$1.data.pos = c$1.elm.getBoundingClientRect();
-        if (map[c$1.key]) {
-          kept.push(c$1);
-        } else {
-          removed.push(c$1);
-        }
-      }
-      this.kept = h(tag, null, kept);
-      this.removed = removed;
-    }
-
-    return h(tag, null, children)
-  },
-
-  beforeUpdate: function beforeUpdate () {
-    // force removing pass
-    this.__patch__(
-      this._vnode,
-      this.kept,
-      false, // hydrating
-      true // removeOnly (!important, avoids unnecessary moves)
-    );
-    this._vnode = this.kept;
-  },
-
-  updated: function updated () {
-    var children = this.prevChildren;
-    var moveClass = this.moveClass || ((this.name || 'v') + '-move');
-    if (!children.length || !this.hasMove(children[0].elm, moveClass)) {
-      return
-    }
-
-    // we divide the work into three loops to avoid mixing DOM reads and writes
-    // in each iteration - which helps prevent layout thrashing.
-    children.forEach(callPendingCbs);
-    children.forEach(recordPosition);
-    children.forEach(applyTranslation);
-
-    // force reflow to put everything in position
-    // assign to this to avoid being removed in tree-shaking
-    // $flow-disable-line
-    this._reflow = document.body.offsetHeight;
-
-    children.forEach(function (c) {
-      if (c.data.moved) {
-        var el = c.elm;
-        var s = el.style;
-        addTransitionClass(el, moveClass);
-        s.transform = s.WebkitTransform = s.transitionDuration = '';
-        el.addEventListener(transitionEndEvent, el._moveCb = function cb (e) {
-          if (!e || /transform$/.test(e.propertyName)) {
-            el.removeEventListener(transitionEndEvent, cb);
-            el._moveCb = null;
-            removeTransitionClass(el, moveClass);
-          }
-        });
-      }
-    });
-  },
-
-  methods: {
-    hasMove: function hasMove (el, moveClass) {
-      /* istanbul ignore if */
-      if (!hasTransition) {
-        return false
-      }
-      /* istanbul ignore if */
-      if (this._hasMove) {
-        return this._hasMove
-      }
-      // Detect whether an element with the move class applied has
-      // CSS transitions. Since the element may be inside an entering
-      // transition at this very moment, we make a clone of it and remove
-      // all other transition classes applied to ensure only the move class
-      // is applied.
-      var clone = el.cloneNode();
-      if (el._transitionClasses) {
-        el._transitionClasses.forEach(function (cls) { removeClass(clone, cls); });
-      }
-      addClass(clone, moveClass);
-      clone.style.display = 'none';
-      this.$el.appendChild(clone);
-      var info = getTransitionInfo(clone);
-      this.$el.removeChild(clone);
-      return (this._hasMove = info.hasTransform)
-    }
-  }
-}
-
-function callPendingCbs (c) {
-  /* istanbul ignore if */
-  if (c.elm._moveCb) {
-    c.elm._moveCb();
-  }
-  /* istanbul ignore if */
-  if (c.elm._enterCb) {
-    c.elm._enterCb();
-  }
-}
-
-function recordPosition (c) {
-  c.data.newPos = c.elm.getBoundingClientRect();
-}
-
-function applyTranslation (c) {
-  var oldPos = c.data.pos;
-  var newPos = c.data.newPos;
-  var dx = oldPos.left - newPos.left;
-  var dy = oldPos.top - newPos.top;
-  if (dx || dy) {
-    c.data.moved = true;
-    var s = c.elm.style;
-    s.transform = s.WebkitTransform = "translate(" + dx + "px," + dy + "px)";
-    s.transitionDuration = '0s';
-  }
-}
-
-var platformComponents = {
-  Transition: Transition,
-  TransitionGroup: TransitionGroup
-}
-
-/*  */
-
-// install platform specific utils
-Vue.config.mustUseProp = mustUseProp;
-Vue.config.isReservedTag = isReservedTag;
-Vue.config.isReservedAttr = isReservedAttr;
-Vue.config.getTagNamespace = getTagNamespace;
-Vue.config.isUnknownElement = isUnknownElement;
-
-// install platform runtime directives & components
-extend(Vue.options.directives, platformDirectives);
-extend(Vue.options.components, platformComponents);
-
-// install platform patch function
-Vue.prototype.__patch__ = inBrowser ? patch : noop;
-
-// public mount method
-Vue.prototype.$mount = function (
-  el,
-  hydrating
-) {
-  el = el && inBrowser ? query(el) : undefined;
-  return mountComponent(this, el, hydrating)
-};
-
-// devtools global hook
-/* istanbul ignore next */
-if (inBrowser) {
-  setTimeout(function () {
-    if (config.devtools) {
-      if (devtools) {
-        devtools.emit('init', Vue);
-      } else if (
-        "development" !== 'production' &&
-        "development" !== 'test' &&
-        isChrome
-      ) {
-        console[console.info ? 'info' : 'log'](
-          'Download the Vue Devtools extension for a better development experience:\n' +
-          'https://github.com/vuejs/vue-devtools'
-        );
-      }
-    }
-    if ("development" !== 'production' &&
-      "development" !== 'test' &&
-      config.productionTip !== false &&
-      typeof console !== 'undefined'
-    ) {
-      console[console.info ? 'info' : 'log'](
-        "You are running Vue in development mode.\n" +
-        "Make sure to turn on production mode when deploying for production.\n" +
-        "See more tips at https://vuejs.org/guide/deployment.html"
-      );
-    }
-  }, 0);
-}
-
-/*  */
-
-var defaultTagRE = /\{\{((?:.|\n)+?)\}\}/g;
-var regexEscapeRE = /[-.*+?^${}()|[\]\/\\]/g;
-
-var buildRegex = cached(function (delimiters) {
-  var open = delimiters[0].replace(regexEscapeRE, '\\$&');
-  var close = delimiters[1].replace(regexEscapeRE, '\\$&');
-  return new RegExp(open + '((?:.|\\n)+?)' + close, 'g')
-});
-
-
-
-function parseText (
-  text,
-  delimiters
-) {
-  var tagRE = delimiters ? buildRegex(delimiters) : defaultTagRE;
-  if (!tagRE.test(text)) {
-    return
-  }
-  var tokens = [];
-  var rawTokens = [];
-  var lastIndex = tagRE.lastIndex = 0;
-  var match, index, tokenValue;
-  while ((match = tagRE.exec(text))) {
-    index = match.index;
-    // push text token
-    if (index > lastIndex) {
-      rawTokens.push(tokenValue = text.slice(lastIndex, index));
-      tokens.push(JSON.stringify(tokenValue));
-    }
-    // tag token
-    var exp = parseFilters(match[1].trim());
-    tokens.push(("_s(" + exp + ")"));
-    rawTokens.push({ '@binding': exp });
-    lastIndex = index + match[0].length;
-  }
-  if (lastIndex < text.length) {
-    rawTokens.push(tokenValue = text.slice(lastIndex));
-    tokens.push(JSON.stringify(tokenValue));
-  }
-  return {
-    expression: tokens.join('+'),
-    tokens: rawTokens
-  }
-}
-
-/*  */
-
-function transformNode (el, options) {
-  var warn = options.warn || baseWarn;
-  var staticClass = getAndRemoveAttr(el, 'class');
-  if ("development" !== 'production' && staticClass) {
-    var res = parseText(staticClass, options.delimiters);
-    if (res) {
-      warn(
-        "class=\"" + staticClass + "\": " +
-        'Interpolation inside attributes has been removed. ' +
-        'Use v-bind or the colon shorthand instead. For example, ' +
-        'instead of <div class="{{ val }}">, use <div :class="val">.'
-      );
-    }
-  }
-  if (staticClass) {
-    el.staticClass = JSON.stringify(staticClass);
-  }
-  var classBinding = getBindingAttr(el, 'class', false /* getStatic */);
-  if (classBinding) {
-    el.classBinding = classBinding;
-  }
-}
-
-function genData (el) {
-  var data = '';
-  if (el.staticClass) {
-    data += "staticClass:" + (el.staticClass) + ",";
-  }
-  if (el.classBinding) {
-    data += "class:" + (el.classBinding) + ",";
-  }
-  return data
-}
-
-var klass$1 = {
-  staticKeys: ['staticClass'],
-  transformNode: transformNode,
-  genData: genData
-}
-
-/*  */
-
-function transformNode$1 (el, options) {
-  var warn = options.warn || baseWarn;
-  var staticStyle = getAndRemoveAttr(el, 'style');
-  if (staticStyle) {
-    /* istanbul ignore if */
-    {
-      var res = parseText(staticStyle, options.delimiters);
-      if (res) {
-        warn(
-          "style=\"" + staticStyle + "\": " +
-          'Interpolation inside attributes has been removed. ' +
-          'Use v-bind or the colon shorthand instead. For example, ' +
-          'instead of <div style="{{ val }}">, use <div :style="val">.'
-        );
-      }
-    }
-    el.staticStyle = JSON.stringify(parseStyleText(staticStyle));
-  }
-
-  var styleBinding = getBindingAttr(el, 'style', false /* getStatic */);
-  if (styleBinding) {
-    el.styleBinding = styleBinding;
-  }
-}
-
-function genData$1 (el) {
-  var data = '';
-  if (el.staticStyle) {
-    data += "staticStyle:" + (el.staticStyle) + ",";
-  }
-  if (el.styleBinding) {
-    data += "style:(" + (el.styleBinding) + "),";
-  }
-  return data
-}
-
-var style$1 = {
-  staticKeys: ['staticStyle'],
-  transformNode: transformNode$1,
-  genData: genData$1
-}
-
-/*  */
-
-var decoder;
-
-var he = {
-  decode: function decode (html) {
-    decoder = decoder || document.createElement('div');
-    decoder.innerHTML = html;
-    return decoder.textContent
-  }
-}
-
-/*  */
-
-var isUnaryTag = makeMap(
-  'area,base,br,col,embed,frame,hr,img,input,isindex,keygen,' +
-  'link,meta,param,source,track,wbr'
-);
-
-// Elements that you can, intentionally, leave open
-// (and which close themselves)
-var canBeLeftOpenTag = makeMap(
-  'colgroup,dd,dt,li,options,p,td,tfoot,th,thead,tr,source'
-);
-
-// HTML5 tags https://html.spec.whatwg.org/multipage/indices.html#elements-3
-// Phrasing Content https://html.spec.whatwg.org/multipage/dom.html#phrasing-content
-var isNonPhrasingTag = makeMap(
-  'address,article,aside,base,blockquote,body,caption,col,colgroup,dd,' +
-  'details,dialog,div,dl,dt,fieldset,figcaption,figure,footer,form,' +
-  'h1,h2,h3,h4,h5,h6,head,header,hgroup,hr,html,legend,li,menuitem,meta,' +
-  'optgroup,option,param,rp,rt,source,style,summary,tbody,td,tfoot,th,thead,' +
-  'title,tr,track'
-);
-
-/**
- * Not type-checking this file because it's mostly vendor code.
- */
-
-/*!
- * HTML Parser By John Resig (ejohn.org)
- * Modified by Juriy "kangax" Zaytsev
- * Original code by Erik Arvidsson, Mozilla Public License
- * http://erik.eae.net/simplehtmlparser/simplehtmlparser.js
- */
-
-// Regular Expressions for parsing tags and attributes
-var attribute = /^\s*([^\s"'<>\/=]+)(?:\s*(=)\s*(?:"([^"]*)"+|'([^']*)'+|([^\s"'=<>`]+)))?/;
-// could use https://www.w3.org/TR/1999/REC-xml-names-19990114/#NT-QName
-// but for Vue templates we can enforce a simple charset
-var ncname = '[a-zA-Z_][\\w\\-\\.]*';
-var qnameCapture = "((?:" + ncname + "\\:)?" + ncname + ")";
-var startTagOpen = new RegExp(("^<" + qnameCapture));
-var startTagClose = /^\s*(\/?)>/;
-var endTag = new RegExp(("^<\\/" + qnameCapture + "[^>]*>"));
-var doctype = /^<!DOCTYPE [^>]+>/i;
-// #7298: escape - to avoid being pased as HTML comment when inlined in page
-var comment = /^<!\--/;
-var conditionalComment = /^<!\[/;
-
-var IS_REGEX_CAPTURING_BROKEN = false;
-'x'.replace(/x(.)?/g, function (m, g) {
-  IS_REGEX_CAPTURING_BROKEN = g === '';
-});
-
-// Special Elements (can contain anything)
-var isPlainTextElement = makeMap('script,style,textarea', true);
-var reCache = {};
-
-var decodingMap = {
-  '&lt;': '<',
-  '&gt;': '>',
-  '&quot;': '"',
-  '&amp;': '&',
-  '&#10;': '\n',
-  '&#9;': '\t'
-};
-var encodedAttr = /&(?:lt|gt|quot|amp);/g;
-var encodedAttrWithNewLines = /&(?:lt|gt|quot|amp|#10|#9);/g;
-
-// #5992
-var isIgnoreNewlineTag = makeMap('pre,textarea', true);
-var shouldIgnoreFirstNewline = function (tag, html) { return tag && isIgnoreNewlineTag(tag) && html[0] === '\n'; };
-
-function decodeAttr (value, shouldDecodeNewlines) {
-  var re = shouldDecodeNewlines ? encodedAttrWithNewLines : encodedAttr;
-  return value.replace(re, function (match) { return decodingMap[match]; })
-}
-
-function parseHTML (html, options) {
-  var stack = [];
-  var expectHTML = options.expectHTML;
-  var isUnaryTag$$1 = options.isUnaryTag || no;
-  var canBeLeftOpenTag$$1 = options.canBeLeftOpenTag || no;
-  var index = 0;
-  var last, lastTag;
-  while (html) {
-    last = html;
-    // Make sure we're not in a plaintext content element like script/style
-    if (!lastTag || !isPlainTextElement(lastTag)) {
-      var textEnd = html.indexOf('<');
-      if (textEnd === 0) {
-        // Comment:
-        if (comment.test(html)) {
-          var commentEnd = html.indexOf('-->');
-
-          if (commentEnd >= 0) {
-            if (options.shouldKeepComment) {
-              options.comment(html.substring(4, commentEnd));
-            }
-            advance(commentEnd + 3);
-            continue
-          }
-        }
-
-        // http://en.wikipedia.org/wiki/Conditional_comment#Downlevel-revealed_conditional_comment
-        if (conditionalComment.test(html)) {
-          var conditionalEnd = html.indexOf(']>');
-
-          if (conditionalEnd >= 0) {
-            advance(conditionalEnd + 2);
-            continue
-          }
-        }
-
-        // Doctype:
-        var doctypeMatch = html.match(doctype);
-        if (doctypeMatch) {
-          advance(doctypeMatch[0].length);
-          continue
-        }
-
-        // End tag:
-        var endTagMatch = html.match(endTag);
-        if (endTagMatch) {
-          var curIndex = index;
-          advance(endTagMatch[0].length);
-          parseEndTag(endTagMatch[1], curIndex, index);
-          continue
-        }
-
-        // Start tag:
-        var startTagMatch = parseStartTag();
-        if (startTagMatch) {
-          handleStartTag(startTagMatch);
-          if (shouldIgnoreFirstNewline(lastTag, html)) {
-            advance(1);
-          }
-          continue
-        }
-      }
-
-      var text = (void 0), rest = (void 0), next = (void 0);
-      if (textEnd >= 0) {
-        rest = html.slice(textEnd);
-        while (
-          !endTag.test(rest) &&
-          !startTagOpen.test(rest) &&
-          !comment.test(rest) &&
-          !conditionalComment.test(rest)
-        ) {
-          // < in plain text, be forgiving and treat it as text
-          next = rest.indexOf('<', 1);
-          if (next < 0) { break }
-          textEnd += next;
-          rest = html.slice(textEnd);
-        }
-        text = html.substring(0, textEnd);
-        advance(textEnd);
-      }
-
-      if (textEnd < 0) {
-        text = html;
-        html = '';
-      }
-
-      if (options.chars && text) {
-        options.chars(text);
-      }
-    } else {
-      var endTagLength = 0;
-      var stackedTag = lastTag.toLowerCase();
-      var reStackedTag = reCache[stackedTag] || (reCache[stackedTag] = new RegExp('([\\s\\S]*?)(</' + stackedTag + '[^>]*>)', 'i'));
-      var rest$1 = html.replace(reStackedTag, function (all, text, endTag) {
-        endTagLength = endTag.length;
-        if (!isPlainTextElement(stackedTag) && stackedTag !== 'noscript') {
-          text = text
-            .replace(/<!\--([\s\S]*?)-->/g, '$1') // #7298
-            .replace(/<!\[CDATA\[([\s\S]*?)]]>/g, '$1');
-        }
-        if (shouldIgnoreFirstNewline(stackedTag, text)) {
-          text = text.slice(1);
-        }
-        if (options.chars) {
-          options.chars(text);
-        }
-        return ''
-      });
-      index += html.length - rest$1.length;
-      html = rest$1;
-      parseEndTag(stackedTag, index - endTagLength, index);
-    }
-
-    if (html === last) {
-      options.chars && options.chars(html);
-      if ("development" !== 'production' && !stack.length && options.warn) {
-        options.warn(("Mal-formatted tag at end of template: \"" + html + "\""));
-      }
-      break
-    }
-  }
-
-  // Clean up any remaining tags
-  parseEndTag();
-
-  function advance (n) {
-    index += n;
-    html = html.substring(n);
-  }
-
-  function parseStartTag () {
-    var start = html.match(startTagOpen);
-    if (start) {
-      var match = {
-        tagName: start[1],
-        attrs: [],
-        start: index
-      };
-      advance(start[0].length);
-      var end, attr;
-      while (!(end = html.match(startTagClose)) && (attr = html.match(attribute))) {
-        advance(attr[0].length);
-        match.attrs.push(attr);
-      }
-      if (end) {
-        match.unarySlash = end[1];
-        advance(end[0].length);
-        match.end = index;
-        return match
-      }
-    }
-  }
-
-  function handleStartTag (match) {
-    var tagName = match.tagName;
-    var unarySlash = match.unarySlash;
-
-    if (expectHTML) {
-      if (lastTag === 'p' && isNonPhrasingTag(tagName)) {
-        parseEndTag(lastTag);
-      }
-      if (canBeLeftOpenTag$$1(tagName) && lastTag === tagName) {
-        parseEndTag(tagName);
-      }
-    }
-
-    var unary = isUnaryTag$$1(tagName) || !!unarySlash;
-
-    var l = match.attrs.length;
-    var attrs = new Array(l);
-    for (var i = 0; i < l; i++) {
-      var args = match.attrs[i];
-      // hackish work around FF bug https://bugzilla.mozilla.org/show_bug.cgi?id=369778
-      if (IS_REGEX_CAPTURING_BROKEN && args[0].indexOf('""') === -1) {
-        if (args[3] === '') { delete args[3]; }
-        if (args[4] === '') { delete args[4]; }
-        if (args[5] === '') { delete args[5]; }
-      }
-      var value = args[3] || args[4] || args[5] || '';
-      var shouldDecodeNewlines = tagName === 'a' && args[1] === 'href'
-        ? options.shouldDecodeNewlinesForHref
-        : options.shouldDecodeNewlines;
-      attrs[i] = {
-        name: args[1],
-        value: decodeAttr(value, shouldDecodeNewlines)
-      };
-    }
-
-    if (!unary) {
-      stack.push({ tag: tagName, lowerCasedTag: tagName.toLowerCase(), attrs: attrs });
-      lastTag = tagName;
-    }
-
-    if (options.start) {
-      options.start(tagName, attrs, unary, match.start, match.end);
-    }
-  }
-
-  function parseEndTag (tagName, start, end) {
-    var pos, lowerCasedTagName;
-    if (start == null) { start = index; }
-    if (end == null) { end = index; }
-
-    if (tagName) {
-      lowerCasedTagName = tagName.toLowerCase();
-    }
-
-    // Find the closest opened tag of the same type
-    if (tagName) {
-      for (pos = stack.length - 1; pos >= 0; pos--) {
-        if (stack[pos].lowerCasedTag === lowerCasedTagName) {
-          break
-        }
-      }
-    } else {
-      // If no tag name is provided, clean shop
-      pos = 0;
-    }
-
-    if (pos >= 0) {
-      // Close all the open elements, up the stack
-      for (var i = stack.length - 1; i >= pos; i--) {
-        if ("development" !== 'production' &&
-          (i > pos || !tagName) &&
-          options.warn
-        ) {
-          options.warn(
-            ("tag <" + (stack[i].tag) + "> has no matching end tag.")
-          );
-        }
-        if (options.end) {
-          options.end(stack[i].tag, start, end);
-        }
-      }
-
-      // Remove the open elements from the stack
-      stack.length = pos;
-      lastTag = pos && stack[pos - 1].tag;
-    } else if (lowerCasedTagName === 'br') {
-      if (options.start) {
-        options.start(tagName, [], true, start, end);
-      }
-    } else if (lowerCasedTagName === 'p') {
-      if (options.start) {
-        options.start(tagName, [], false, start, end);
-      }
-      if (options.end) {
-        options.end(tagName, start, end);
-      }
-    }
-  }
-}
-
-/*  */
-
-var onRE = /^@|^v-on:/;
-var dirRE = /^v-|^@|^:/;
-var forAliasRE = /([^]*?)\s+(?:in|of)\s+([^]*)/;
-var forIteratorRE = /,([^,\}\]]*)(?:,([^,\}\]]*))?$/;
-var stripParensRE = /^\(|\)$/g;
-
-var argRE = /:(.*)$/;
-var bindRE = /^:|^v-bind:/;
-var modifierRE = /\.[^.]+/g;
-
-var decodeHTMLCached = cached(he.decode);
-
-// configurable state
-var warn$2;
-var delimiters;
-var transforms;
-var preTransforms;
-var postTransforms;
-var platformIsPreTag;
-var platformMustUseProp;
-var platformGetTagNamespace;
-
-
-
-function createASTElement (
-  tag,
-  attrs,
-  parent
-) {
-  return {
-    type: 1,
-    tag: tag,
-    attrsList: attrs,
-    attrsMap: makeAttrsMap(attrs),
-    parent: parent,
-    children: []
-  }
-}
-
-/**
- * Convert HTML string to AST.
- */
-function parse (
-  template,
-  options
-) {
-  warn$2 = options.warn || baseWarn;
-
-  platformIsPreTag = options.isPreTag || no;
-  platformMustUseProp = options.mustUseProp || no;
-  platformGetTagNamespace = options.getTagNamespace || no;
-
-  transforms = pluckModuleFunction(options.modules, 'transformNode');
-  preTransforms = pluckModuleFunction(options.modules, 'preTransformNode');
-  postTransforms = pluckModuleFunction(options.modules, 'postTransformNode');
-
-  delimiters = options.delimiters;
-
-  var stack = [];
-  var preserveWhitespace = options.preserveWhitespace !== false;
-  var root;
-  var currentParent;
-  var inVPre = false;
-  var inPre = false;
-  var warned = false;
-
-  function warnOnce (msg) {
-    if (!warned) {
-      warned = true;
-      warn$2(msg);
-    }
-  }
-
-  function closeElement (element) {
-    // check pre state
-    if (element.pre) {
-      inVPre = false;
-    }
-    if (platformIsPreTag(element.tag)) {
-      inPre = false;
-    }
-    // apply post-transforms
-    for (var i = 0; i < postTransforms.length; i++) {
-      postTransforms[i](element, options);
-    }
-  }
-
-  parseHTML(template, {
-    warn: warn$2,
-    expectHTML: options.expectHTML,
-    isUnaryTag: options.isUnaryTag,
-    canBeLeftOpenTag: options.canBeLeftOpenTag,
-    shouldDecodeNewlines: options.shouldDecodeNewlines,
-    shouldDecodeNewlinesForHref: options.shouldDecodeNewlinesForHref,
-    shouldKeepComment: options.comments,
-    start: function start (tag, attrs, unary) {
-      // check namespace.
-      // inherit parent ns if there is one
-      var ns = (currentParent && currentParent.ns) || platformGetTagNamespace(tag);
-
-      // handle IE svg bug
-      /* istanbul ignore if */
-      if (isIE && ns === 'svg') {
-        attrs = guardIESVGBug(attrs);
-      }
-
-      var element = createASTElement(tag, attrs, currentParent);
-      if (ns) {
-        element.ns = ns;
-      }
-
-      if (isForbiddenTag(element) && !isServerRendering()) {
-        element.forbidden = true;
-        "development" !== 'production' && warn$2(
-          'Templates should only be responsible for mapping the state to the ' +
-          'UI. Avoid placing tags with side-effects in your templates, such as ' +
-          "<" + tag + ">" + ', as they will not be parsed.'
-        );
-      }
-
-      // apply pre-transforms
-      for (var i = 0; i < preTransforms.length; i++) {
-        element = preTransforms[i](element, options) || element;
-      }
-
-      if (!inVPre) {
-        processPre(element);
-        if (element.pre) {
-          inVPre = true;
-        }
-      }
-      if (platformIsPreTag(element.tag)) {
-        inPre = true;
-      }
-      if (inVPre) {
-        processRawAttrs(element);
-      } else if (!element.processed) {
-        // structural directives
-        processFor(element);
-        processIf(element);
-        processOnce(element);
-        // element-scope stuff
-        processElement(element, options);
-      }
-
-      function checkRootConstraints (el) {
-        {
-          if (el.tag === 'slot' || el.tag === 'template') {
-            warnOnce(
-              "Cannot use <" + (el.tag) + "> as component root element because it may " +
-              'contain multiple nodes.'
-            );
-          }
-          if (el.attrsMap.hasOwnProperty('v-for')) {
-            warnOnce(
-              'Cannot use v-for on stateful component root element because ' +
-              'it renders multiple elements.'
-            );
-          }
-        }
-      }
-
-      // tree management
-      if (!root) {
-        root = element;
-        checkRootConstraints(root);
-      } else if (!stack.length) {
-        // allow root elements with v-if, v-else-if and v-else
-        if (root.if && (element.elseif || element.else)) {
-          checkRootConstraints(element);
-          addIfCondition(root, {
-            exp: element.elseif,
-            block: element
-          });
-        } else {
-          warnOnce(
-            "Component template should contain exactly one root element. " +
-            "If you are using v-if on multiple elements, " +
-            "use v-else-if to chain them instead."
-          );
-        }
-      }
-      if (currentParent && !element.forbidden) {
-        if (element.elseif || element.else) {
-          processIfConditions(element, currentParent);
-        } else if (element.slotScope) { // scoped slot
-          currentParent.plain = false;
-          var name = element.slotTarget || '"default"';(currentParent.scopedSlots || (currentParent.scopedSlots = {}))[name] = element;
-        } else {
-          currentParent.children.push(element);
-          element.parent = currentParent;
-        }
-      }
-      if (!unary) {
-        currentParent = element;
-        stack.push(element);
-      } else {
-        closeElement(element);
-      }
-    },
-
-    end: function end () {
-      // remove trailing whitespace
-      var element = stack[stack.length - 1];
-      var lastNode = element.children[element.children.length - 1];
-      if (lastNode && lastNode.type === 3 && lastNode.text === ' ' && !inPre) {
-        element.children.pop();
-      }
-      // pop stack
-      stack.length -= 1;
-      currentParent = stack[stack.length - 1];
-      closeElement(element);
-    },
-
-    chars: function chars (text) {
-      if (!currentParent) {
-        {
-          if (text === template) {
-            warnOnce(
-              'Component template requires a root element, rather than just text.'
-            );
-          } else if ((text = text.trim())) {
-            warnOnce(
-              ("text \"" + text + "\" outside root element will be ignored.")
-            );
-          }
-        }
-        return
-      }
-      // IE textarea placeholder bug
-      /* istanbul ignore if */
-      if (isIE &&
-        currentParent.tag === 'textarea' &&
-        currentParent.attrsMap.placeholder === text
-      ) {
-        return
-      }
-      var children = currentParent.children;
-      text = inPre || text.trim()
-        ? isTextTag(currentParent) ? text : decodeHTMLCached(text)
-        // only preserve whitespace if its not right after a starting tag
-        : preserveWhitespace && children.length ? ' ' : '';
-      if (text) {
-        var res;
-        if (!inVPre && text !== ' ' && (res = parseText(text, delimiters))) {
-          children.push({
-            type: 2,
-            expression: res.expression,
-            tokens: res.tokens,
-            text: text
-          });
-        } else if (text !== ' ' || !children.length || children[children.length - 1].text !== ' ') {
-          children.push({
-            type: 3,
-            text: text
-          });
-        }
-      }
-    },
-    comment: function comment (text) {
-      currentParent.children.push({
-        type: 3,
-        text: text,
-        isComment: true
-      });
-    }
-  });
-  return root
-}
-
-function processPre (el) {
-  if (getAndRemoveAttr(el, 'v-pre') != null) {
-    el.pre = true;
-  }
-}
-
-function processRawAttrs (el) {
-  var l = el.attrsList.length;
-  if (l) {
-    var attrs = el.attrs = new Array(l);
-    for (var i = 0; i < l; i++) {
-      attrs[i] = {
-        name: el.attrsList[i].name,
-        value: JSON.stringify(el.attrsList[i].value)
-      };
-    }
-  } else if (!el.pre) {
-    // non root node in pre blocks with no attributes
-    el.plain = true;
-  }
-}
-
-function processElement (element, options) {
-  processKey(element);
-
-  // determine whether this is a plain element after
-  // removing structural attributes
-  element.plain = !element.key && !element.attrsList.length;
-
-  processRef(element);
-  processSlot(element);
-  processComponent(element);
-  for (var i = 0; i < transforms.length; i++) {
-    element = transforms[i](element, options) || element;
-  }
-  processAttrs(element);
-}
-
-function processKey (el) {
-  var exp = getBindingAttr(el, 'key');
-  if (exp) {
-    if ("development" !== 'production' && el.tag === 'template') {
-      warn$2("<template> cannot be keyed. Place the key on real elements instead.");
-    }
-    el.key = exp;
-  }
-}
-
-function processRef (el) {
-  var ref = getBindingAttr(el, 'ref');
-  if (ref) {
-    el.ref = ref;
-    el.refInFor = checkInFor(el);
-  }
-}
-
-function processFor (el) {
-  var exp;
-  if ((exp = getAndRemoveAttr(el, 'v-for'))) {
-    var res = parseFor(exp);
-    if (res) {
-      extend(el, res);
-    } else {
-      warn$2(
-        ("Invalid v-for expression: " + exp)
-      );
-    }
-  }
-}
-
-
-
-function parseFor (exp) {
-  var inMatch = exp.match(forAliasRE);
-  if (!inMatch) { return }
-  var res = {};
-  res.for = inMatch[2].trim();
-  var alias = inMatch[1].trim().replace(stripParensRE, '');
-  var iteratorMatch = alias.match(forIteratorRE);
-  if (iteratorMatch) {
-    res.alias = alias.replace(forIteratorRE, '');
-    res.iterator1 = iteratorMatch[1].trim();
-    if (iteratorMatch[2]) {
-      res.iterator2 = iteratorMatch[2].trim();
-    }
-  } else {
-    res.alias = alias;
-  }
-  return res
-}
-
-function processIf (el) {
-  var exp = getAndRemoveAttr(el, 'v-if');
-  if (exp) {
-    el.if = exp;
-    addIfCondition(el, {
-      exp: exp,
-      block: el
-    });
-  } else {
-    if (getAndRemoveAttr(el, 'v-else') != null) {
-      el.else = true;
-    }
-    var elseif = getAndRemoveAttr(el, 'v-else-if');
-    if (elseif) {
-      el.elseif = elseif;
-    }
-  }
-}
-
-function processIfConditions (el, parent) {
-  var prev = findPrevElement(parent.children);
-  if (prev && prev.if) {
-    addIfCondition(prev, {
-      exp: el.elseif,
-      block: el
-    });
-  } else {
-    warn$2(
-      "v-" + (el.elseif ? ('else-if="' + el.elseif + '"') : 'else') + " " +
-      "used on element <" + (el.tag) + "> without corresponding v-if."
-    );
-  }
-}
-
-function findPrevElement (children) {
-  var i = children.length;
-  while (i--) {
-    if (children[i].type === 1) {
-      return children[i]
-    } else {
-      if ("development" !== 'production' && children[i].text !== ' ') {
-        warn$2(
-          "text \"" + (children[i].text.trim()) + "\" between v-if and v-else(-if) " +
-          "will be ignored."
-        );
-      }
-      children.pop();
-    }
-  }
-}
-
-function addIfCondition (el, condition) {
-  if (!el.ifConditions) {
-    el.ifConditions = [];
-  }
-  el.ifConditions.push(condition);
-}
-
-function processOnce (el) {
-  var once$$1 = getAndRemoveAttr(el, 'v-once');
-  if (once$$1 != null) {
-    el.once = true;
-  }
-}
-
-function processSlot (el) {
-  if (el.tag === 'slot') {
-    el.slotName = getBindingAttr(el, 'name');
-    if ("development" !== 'production' && el.key) {
-      warn$2(
-        "`key` does not work on <slot> because slots are abstract outlets " +
-        "and can possibly expand into multiple elements. " +
-        "Use the key on a wrapping element instead."
-      );
-    }
-  } else {
-    var slotScope;
-    if (el.tag === 'template') {
-      slotScope = getAndRemoveAttr(el, 'scope');
-      /* istanbul ignore if */
-      if ("development" !== 'production' && slotScope) {
-        warn$2(
-          "the \"scope\" attribute for scoped slots have been deprecated and " +
-          "replaced by \"slot-scope\" since 2.5. The new \"slot-scope\" attribute " +
-          "can also be used on plain elements in addition to <template> to " +
-          "denote scoped slots.",
-          true
-        );
-      }
-      el.slotScope = slotScope || getAndRemoveAttr(el, 'slot-scope');
-    } else if ((slotScope = getAndRemoveAttr(el, 'slot-scope'))) {
-      /* istanbul ignore if */
-      if ("development" !== 'production' && el.attrsMap['v-for']) {
-        warn$2(
-          "Ambiguous combined usage of slot-scope and v-for on <" + (el.tag) + "> " +
-          "(v-for takes higher priority). Use a wrapper <template> for the " +
-          "scoped slot to make it clearer.",
-          true
-        );
-      }
-      el.slotScope = slotScope;
-    }
-    var slotTarget = getBindingAttr(el, 'slot');
-    if (slotTarget) {
-      el.slotTarget = slotTarget === '""' ? '"default"' : slotTarget;
-      // preserve slot as an attribute for native shadow DOM compat
-      // only for non-scoped slots.
-      if (el.tag !== 'template' && !el.slotScope) {
-        addAttr(el, 'slot', slotTarget);
-      }
-    }
-  }
-}
-
-function processComponent (el) {
-  var binding;
-  if ((binding = getBindingAttr(el, 'is'))) {
-    el.component = binding;
-  }
-  if (getAndRemoveAttr(el, 'inline-template') != null) {
-    el.inlineTemplate = true;
-  }
-}
-
-function processAttrs (el) {
-  var list = el.attrsList;
-  var i, l, name, rawName, value, modifiers, isProp;
-  for (i = 0, l = list.length; i < l; i++) {
-    name = rawName = list[i].name;
-    value = list[i].value;
-    if (dirRE.test(name)) {
-      // mark element as dynamic
-      el.hasBindings = true;
-      // modifiers
-      modifiers = parseModifiers(name);
-      if (modifiers) {
-        name = name.replace(modifierRE, '');
-      }
-      if (bindRE.test(name)) { // v-bind
-        name = name.replace(bindRE, '');
-        value = parseFilters(value);
-        isProp = false;
-        if (modifiers) {
-          if (modifiers.prop) {
-            isProp = true;
-            name = camelize(name);
-            if (name === 'innerHtml') { name = 'innerHTML'; }
-          }
-          if (modifiers.camel) {
-            name = camelize(name);
-          }
-          if (modifiers.sync) {
-            addHandler(
-              el,
-              ("update:" + (camelize(name))),
-              genAssignmentCode(value, "$event")
-            );
-          }
-        }
-        if (isProp || (
-          !el.component && platformMustUseProp(el.tag, el.attrsMap.type, name)
-        )) {
-          addProp(el, name, value);
-        } else {
-          addAttr(el, name, value);
-        }
-      } else if (onRE.test(name)) { // v-on
-        name = name.replace(onRE, '');
-        addHandler(el, name, value, modifiers, false, warn$2);
-      } else { // normal directives
-        name = name.replace(dirRE, '');
-        // parse arg
-        var argMatch = name.match(argRE);
-        var arg = argMatch && argMatch[1];
-        if (arg) {
-          name = name.slice(0, -(arg.length + 1));
-        }
-        addDirective(el, name, rawName, value, arg, modifiers);
-        if ("development" !== 'production' && name === 'model') {
-          checkForAliasModel(el, value);
-        }
-      }
-    } else {
-      // literal attribute
-      {
-        var res = parseText(value, delimiters);
-        if (res) {
-          warn$2(
-            name + "=\"" + value + "\": " +
-            'Interpolation inside attributes has been removed. ' +
-            'Use v-bind or the colon shorthand instead. For example, ' +
-            'instead of <div id="{{ val }}">, use <div :id="val">.'
-          );
-        }
-      }
-      addAttr(el, name, JSON.stringify(value));
-      // #6887 firefox doesn't update muted state if set via attribute
-      // even immediately after element creation
-      if (!el.component &&
-          name === 'muted' &&
-          platformMustUseProp(el.tag, el.attrsMap.type, name)) {
-        addProp(el, name, 'true');
-      }
-    }
-  }
-}
-
-function checkInFor (el) {
-  var parent = el;
-  while (parent) {
-    if (parent.for !== undefined) {
-      return true
-    }
-    parent = parent.parent;
-  }
-  return false
-}
-
-function parseModifiers (name) {
-  var match = name.match(modifierRE);
-  if (match) {
-    var ret = {};
-    match.forEach(function (m) { ret[m.slice(1)] = true; });
-    return ret
-  }
-}
-
-function makeAttrsMap (attrs) {
-  var map = {};
-  for (var i = 0, l = attrs.length; i < l; i++) {
-    if (
-      "development" !== 'production' &&
-      map[attrs[i].name] && !isIE && !isEdge
-    ) {
-      warn$2('duplicate attribute: ' + attrs[i].name);
-    }
-    map[attrs[i].name] = attrs[i].value;
-  }
-  return map
-}
-
-// for script (e.g. type="x/template") or style, do not decode content
-function isTextTag (el) {
-  return el.tag === 'script' || el.tag === 'style'
-}
-
-function isForbiddenTag (el) {
-  return (
-    el.tag === 'style' ||
-    (el.tag === 'script' && (
-      !el.attrsMap.type ||
-      el.attrsMap.type === 'text/javascript'
-    ))
-  )
-}
-
-var ieNSBug = /^xmlns:NS\d+/;
-var ieNSPrefix = /^NS\d+:/;
-
-/* istanbul ignore next */
-function guardIESVGBug (attrs) {
-  var res = [];
-  for (var i = 0; i < attrs.length; i++) {
-    var attr = attrs[i];
-    if (!ieNSBug.test(attr.name)) {
-      attr.name = attr.name.replace(ieNSPrefix, '');
-      res.push(attr);
-    }
-  }
-  return res
-}
-
-function checkForAliasModel (el, value) {
-  var _el = el;
-  while (_el) {
-    if (_el.for && _el.alias === value) {
-      warn$2(
-        "<" + (el.tag) + " v-model=\"" + value + "\">: " +
-        "You are binding v-model directly to a v-for iteration alias. " +
-        "This will not be able to modify the v-for source array because " +
-        "writing to the alias is like modifying a function local variable. " +
-        "Consider using an array of objects and use v-model on an object property instead."
-      );
-    }
-    _el = _el.parent;
-  }
-}
-
-/*  */
-
-/**
- * Expand input[v-model] with dyanmic type bindings into v-if-else chains
- * Turn this:
- *   <input v-model="data[type]" :type="type">
- * into this:
- *   <input v-if="type === 'checkbox'" type="checkbox" v-model="data[type]">
- *   <input v-else-if="type === 'radio'" type="radio" v-model="data[type]">
- *   <input v-else :type="type" v-model="data[type]">
- */
-
-function preTransformNode (el, options) {
-  if (el.tag === 'input') {
-    var map = el.attrsMap;
-    if (!map['v-model']) {
-      return
-    }
-
-    var typeBinding;
-    if (map[':type'] || map['v-bind:type']) {
-      typeBinding = getBindingAttr(el, 'type');
-    }
-    if (!map.type && !typeBinding && map['v-bind']) {
-      typeBinding = "(" + (map['v-bind']) + ").type";
-    }
-
-    if (typeBinding) {
-      var ifCondition = getAndRemoveAttr(el, 'v-if', true);
-      var ifConditionExtra = ifCondition ? ("&&(" + ifCondition + ")") : "";
-      var hasElse = getAndRemoveAttr(el, 'v-else', true) != null;
-      var elseIfCondition = getAndRemoveAttr(el, 'v-else-if', true);
-      // 1. checkbox
-      var branch0 = cloneASTElement(el);
-      // process for on the main node
-      processFor(branch0);
-      addRawAttr(branch0, 'type', 'checkbox');
-      processElement(branch0, options);
-      branch0.processed = true; // prevent it from double-processed
-      branch0.if = "(" + typeBinding + ")==='checkbox'" + ifConditionExtra;
-      addIfCondition(branch0, {
-        exp: branch0.if,
-        block: branch0
-      });
-      // 2. add radio else-if condition
-      var branch1 = cloneASTElement(el);
-      getAndRemoveAttr(branch1, 'v-for', true);
-      addRawAttr(branch1, 'type', 'radio');
-      processElement(branch1, options);
-      addIfCondition(branch0, {
-        exp: "(" + typeBinding + ")==='radio'" + ifConditionExtra,
-        block: branch1
-      });
-      // 3. other
-      var branch2 = cloneASTElement(el);
-      getAndRemoveAttr(branch2, 'v-for', true);
-      addRawAttr(branch2, ':type', typeBinding);
-      processElement(branch2, options);
-      addIfCondition(branch0, {
-        exp: ifCondition,
-        block: branch2
-      });
-
-      if (hasElse) {
-        branch0.else = true;
-      } else if (elseIfCondition) {
-        branch0.elseif = elseIfCondition;
-      }
-
-      return branch0
-    }
-  }
-}
-
-function cloneASTElement (el) {
-  return createASTElement(el.tag, el.attrsList.slice(), el.parent)
-}
-
-var model$2 = {
-  preTransformNode: preTransformNode
-}
-
-var modules$1 = [
-  klass$1,
-  style$1,
-  model$2
-]
-
-/*  */
-
-function text (el, dir) {
-  if (dir.value) {
-    addProp(el, 'textContent', ("_s(" + (dir.value) + ")"));
-  }
-}
-
-/*  */
-
-function html (el, dir) {
-  if (dir.value) {
-    addProp(el, 'innerHTML', ("_s(" + (dir.value) + ")"));
-  }
-}
-
-var directives$1 = {
-  model: model,
-  text: text,
-  html: html
-}
-
-/*  */
-
-var baseOptions = {
-  expectHTML: true,
-  modules: modules$1,
-  directives: directives$1,
-  isPreTag: isPreTag,
-  isUnaryTag: isUnaryTag,
-  mustUseProp: mustUseProp,
-  canBeLeftOpenTag: canBeLeftOpenTag,
-  isReservedTag: isReservedTag,
-  getTagNamespace: getTagNamespace,
-  staticKeys: genStaticKeys(modules$1)
-};
-
-/*  */
-
-var isStaticKey;
-var isPlatformReservedTag;
-
-var genStaticKeysCached = cached(genStaticKeys$1);
-
-/**
- * Goal of the optimizer: walk the generated template AST tree
- * and detect sub-trees that are purely static, i.e. parts of
- * the DOM that never needs to change.
- *
- * Once we detect these sub-trees, we can:
- *
- * 1. Hoist them into constants, so that we no longer need to
- *    create fresh nodes for them on each re-render;
- * 2. Completely skip them in the patching process.
- */
-function optimize (root, options) {
-  if (!root) { return }
-  isStaticKey = genStaticKeysCached(options.staticKeys || '');
-  isPlatformReservedTag = options.isReservedTag || no;
-  // first pass: mark all non-static nodes.
-  markStatic$1(root);
-  // second pass: mark static roots.
-  markStaticRoots(root, false);
-}
-
-function genStaticKeys$1 (keys) {
-  return makeMap(
-    'type,tag,attrsList,attrsMap,plain,parent,children,attrs' +
-    (keys ? ',' + keys : '')
-  )
-}
-
-function markStatic$1 (node) {
-  node.static = isStatic(node);
-  if (node.type === 1) {
-    // do not make component slot content static. this avoids
-    // 1. components not able to mutate slot nodes
-    // 2. static slot content fails for hot-reloading
-    if (
-      !isPlatformReservedTag(node.tag) &&
-      node.tag !== 'slot' &&
-      node.attrsMap['inline-template'] == null
-    ) {
-      return
-    }
-    for (var i = 0, l = node.children.length; i < l; i++) {
-      var child = node.children[i];
-      markStatic$1(child);
-      if (!child.static) {
-        node.static = false;
-      }
-    }
-    if (node.ifConditions) {
-      for (var i$1 = 1, l$1 = node.ifConditions.length; i$1 < l$1; i$1++) {
-        var block = node.ifConditions[i$1].block;
-        markStatic$1(block);
-        if (!block.static) {
-          node.static = false;
-        }
-      }
-    }
-  }
-}
-
-function markStaticRoots (node, isInFor) {
-  if (node.type === 1) {
-    if (node.static || node.once) {
-      node.staticInFor = isInFor;
-    }
-    // For a node to qualify as a static root, it should have children that
-    // are not just static text. Otherwise the cost of hoisting out will
-    // outweigh the benefits and it's better off to just always render it fresh.
-    if (node.static && node.children.length && !(
-      node.children.length === 1 &&
-      node.children[0].type === 3
-    )) {
-      node.staticRoot = true;
-      return
-    } else {
-      node.staticRoot = false;
-    }
-    if (node.children) {
-      for (var i = 0, l = node.children.length; i < l; i++) {
-        markStaticRoots(node.children[i], isInFor || !!node.for);
-      }
-    }
-    if (node.ifConditions) {
-      for (var i$1 = 1, l$1 = node.ifConditions.length; i$1 < l$1; i$1++) {
-        markStaticRoots(node.ifConditions[i$1].block, isInFor);
-      }
-    }
-  }
-}
-
-function isStatic (node) {
-  if (node.type === 2) { // expression
-    return false
-  }
-  if (node.type === 3) { // text
-    return true
-  }
-  return !!(node.pre || (
-    !node.hasBindings && // no dynamic bindings
-    !node.if && !node.for && // not v-if or v-for or v-else
-    !isBuiltInTag(node.tag) && // not a built-in
-    isPlatformReservedTag(node.tag) && // not a component
-    !isDirectChildOfTemplateFor(node) &&
-    Object.keys(node).every(isStaticKey)
-  ))
-}
-
-function isDirectChildOfTemplateFor (node) {
-  while (node.parent) {
-    node = node.parent;
-    if (node.tag !== 'template') {
-      return false
-    }
-    if (node.for) {
-      return true
-    }
-  }
-  return false
-}
-
-/*  */
-
-var fnExpRE = /^([\w$_]+|\([^)]*?\))\s*=>|^function\s*\(/;
-var simplePathRE = /^[A-Za-z_$][\w$]*(?:\.[A-Za-z_$][\w$]*|\['[^']*?']|\["[^"]*?"]|\[\d+]|\[[A-Za-z_$][\w$]*])*$/;
-
-// KeyboardEvent.keyCode aliases
-var keyCodes = {
-  esc: 27,
-  tab: 9,
-  enter: 13,
-  space: 32,
-  up: 38,
-  left: 37,
-  right: 39,
-  down: 40,
-  'delete': [8, 46]
-};
-
-// KeyboardEvent.key aliases
-var keyNames = {
-  esc: 'Escape',
-  tab: 'Tab',
-  enter: 'Enter',
-  space: ' ',
-  // #7806: IE11 uses key names without `Arrow` prefix for arrow keys.
-  up: ['Up', 'ArrowUp'],
-  left: ['Left', 'ArrowLeft'],
-  right: ['Right', 'ArrowRight'],
-  down: ['Down', 'ArrowDown'],
-  'delete': ['Backspace', 'Delete']
-};
-
-// #4868: modifiers that prevent the execution of the listener
-// need to explicitly return null so that we can determine whether to remove
-// the listener for .once
-var genGuard = function (condition) { return ("if(" + condition + ")return null;"); };
-
-var modifierCode = {
-  stop: '$event.stopPropagation();',
-  prevent: '$event.preventDefault();',
-  self: genGuard("$event.target !== $event.currentTarget"),
-  ctrl: genGuard("!$event.ctrlKey"),
-  shift: genGuard("!$event.shiftKey"),
-  alt: genGuard("!$event.altKey"),
-  meta: genGuard("!$event.metaKey"),
-  left: genGuard("'button' in $event && $event.button !== 0"),
-  middle: genGuard("'button' in $event && $event.button !== 1"),
-  right: genGuard("'button' in $event && $event.button !== 2")
-};
-
-function genHandlers (
-  events,
-  isNative,
-  warn
-) {
-  var res = isNative ? 'nativeOn:{' : 'on:{';
-  for (var name in events) {
-    res += "\"" + name + "\":" + (genHandler(name, events[name])) + ",";
-  }
-  return res.slice(0, -1) + '}'
-}
-
-function genHandler (
-  name,
-  handler
-) {
-  if (!handler) {
-    return 'function(){}'
-  }
-
-  if (Array.isArray(handler)) {
-    return ("[" + (handler.map(function (handler) { return genHandler(name, handler); }).join(',')) + "]")
-  }
-
-  var isMethodPath = simplePathRE.test(handler.value);
-  var isFunctionExpression = fnExpRE.test(handler.value);
-
-  if (!handler.modifiers) {
-    if (isMethodPath || isFunctionExpression) {
-      return handler.value
-    }
-    /* istanbul ignore if */
-    return ("function($event){" + (handler.value) + "}") // inline statement
-  } else {
-    var code = '';
-    var genModifierCode = '';
-    var keys = [];
-    for (var key in handler.modifiers) {
-      if (modifierCode[key]) {
-        genModifierCode += modifierCode[key];
-        // left/right
-        if (keyCodes[key]) {
-          keys.push(key);
-        }
-      } else if (key === 'exact') {
-        var modifiers = (handler.modifiers);
-        genModifierCode += genGuard(
-          ['ctrl', 'shift', 'alt', 'meta']
-            .filter(function (keyModifier) { return !modifiers[keyModifier]; })
-            .map(function (keyModifier) { return ("$event." + keyModifier + "Key"); })
-            .join('||')
-        );
-      } else {
-        keys.push(key);
-      }
-    }
-    if (keys.length) {
-      code += genKeyFilter(keys);
-    }
-    // Make sure modifiers like prevent and stop get executed after key filtering
-    if (genModifierCode) {
-      code += genModifierCode;
-    }
-    var handlerCode = isMethodPath
-      ? ("return " + (handler.value) + "($event)")
-      : isFunctionExpression
-        ? ("return (" + (handler.value) + ")($event)")
-        : handler.value;
-    /* istanbul ignore if */
-    return ("function($event){" + code + handlerCode + "}")
-  }
-}
-
-function genKeyFilter (keys) {
-  return ("if(!('button' in $event)&&" + (keys.map(genFilterCode).join('&&')) + ")return null;")
-}
-
-function genFilterCode (key) {
-  var keyVal = parseInt(key, 10);
-  if (keyVal) {
-    return ("$event.keyCode!==" + keyVal)
-  }
-  var keyCode = keyCodes[key];
-  var keyName = keyNames[key];
-  return (
-    "_k($event.keyCode," +
-    (JSON.stringify(key)) + "," +
-    (JSON.stringify(keyCode)) + "," +
-    "$event.key," +
-    "" + (JSON.stringify(keyName)) +
-    ")"
-  )
-}
-
-/*  */
-
-function on (el, dir) {
-  if ("development" !== 'production' && dir.modifiers) {
-    warn("v-on without argument does not support modifiers.");
-  }
-  el.wrapListeners = function (code) { return ("_g(" + code + "," + (dir.value) + ")"); };
-}
-
-/*  */
-
-function bind$1 (el, dir) {
-  el.wrapData = function (code) {
-    return ("_b(" + code + ",'" + (el.tag) + "'," + (dir.value) + "," + (dir.modifiers && dir.modifiers.prop ? 'true' : 'false') + (dir.modifiers && dir.modifiers.sync ? ',true' : '') + ")")
-  };
-}
-
-/*  */
-
-var baseDirectives = {
-  on: on,
-  bind: bind$1,
-  cloak: noop
-}
-
-/*  */
-
-var CodegenState = function CodegenState (options) {
-  this.options = options;
-  this.warn = options.warn || baseWarn;
-  this.transforms = pluckModuleFunction(options.modules, 'transformCode');
-  this.dataGenFns = pluckModuleFunction(options.modules, 'genData');
-  this.directives = extend(extend({}, baseDirectives), options.directives);
-  var isReservedTag = options.isReservedTag || no;
-  this.maybeComponent = function (el) { return !isReservedTag(el.tag); };
-  this.onceId = 0;
-  this.staticRenderFns = [];
-};
-
-
-
-function generate (
-  ast,
-  options
-) {
-  var state = new CodegenState(options);
-  var code = ast ? genElement(ast, state) : '_c("div")';
-  return {
-    render: ("with(this){return " + code + "}"),
-    staticRenderFns: state.staticRenderFns
-  }
-}
-
-function genElement (el, state) {
-  if (el.staticRoot && !el.staticProcessed) {
-    return genStatic(el, state)
-  } else if (el.once && !el.onceProcessed) {
-    return genOnce(el, state)
-  } else if (el.for && !el.forProcessed) {
-    return genFor(el, state)
-  } else if (el.if && !el.ifProcessed) {
-    return genIf(el, state)
-  } else if (el.tag === 'template' && !el.slotTarget) {
-    return genChildren(el, state) || 'void 0'
-  } else if (el.tag === 'slot') {
-    return genSlot(el, state)
-  } else {
-    // component or element
-    var code;
-    if (el.component) {
-      code = genComponent(el.component, el, state);
-    } else {
-      var data = el.plain ? undefined : genData$2(el, state);
-
-      var children = el.inlineTemplate ? null : genChildren(el, state, true);
-      code = "_c('" + (el.tag) + "'" + (data ? ("," + data) : '') + (children ? ("," + children) : '') + ")";
-    }
-    // module transforms
-    for (var i = 0; i < state.transforms.length; i++) {
-      code = state.transforms[i](el, code);
-    }
-    return code
-  }
-}
-
-// hoist static sub-trees out
-function genStatic (el, state) {
-  el.staticProcessed = true;
-  state.staticRenderFns.push(("with(this){return " + (genElement(el, state)) + "}"));
-  return ("_m(" + (state.staticRenderFns.length - 1) + (el.staticInFor ? ',true' : '') + ")")
-}
-
-// v-once
-function genOnce (el, state) {
-  el.onceProcessed = true;
-  if (el.if && !el.ifProcessed) {
-    return genIf(el, state)
-  } else if (el.staticInFor) {
-    var key = '';
-    var parent = el.parent;
-    while (parent) {
-      if (parent.for) {
-        key = parent.key;
-        break
-      }
-      parent = parent.parent;
-    }
-    if (!key) {
-      "development" !== 'production' && state.warn(
-        "v-once can only be used inside v-for that is keyed. "
-      );
-      return genElement(el, state)
-    }
-    return ("_o(" + (genElement(el, state)) + "," + (state.onceId++) + "," + key + ")")
-  } else {
-    return genStatic(el, state)
-  }
-}
-
-function genIf (
-  el,
-  state,
-  altGen,
-  altEmpty
-) {
-  el.ifProcessed = true; // avoid recursion
-  return genIfConditions(el.ifConditions.slice(), state, altGen, altEmpty)
-}
-
-function genIfConditions (
-  conditions,
-  state,
-  altGen,
-  altEmpty
-) {
-  if (!conditions.length) {
-    return altEmpty || '_e()'
-  }
-
-  var condition = conditions.shift();
-  if (condition.exp) {
-    return ("(" + (condition.exp) + ")?" + (genTernaryExp(condition.block)) + ":" + (genIfConditions(conditions, state, altGen, altEmpty)))
-  } else {
-    return ("" + (genTernaryExp(condition.block)))
-  }
-
-  // v-if with v-once should generate code like (a)?_m(0):_m(1)
-  function genTernaryExp (el) {
-    return altGen
-      ? altGen(el, state)
-      : el.once
-        ? genOnce(el, state)
-        : genElement(el, state)
-  }
-}
-
-function genFor (
-  el,
-  state,
-  altGen,
-  altHelper
-) {
-  var exp = el.for;
-  var alias = el.alias;
-  var iterator1 = el.iterator1 ? ("," + (el.iterator1)) : '';
-  var iterator2 = el.iterator2 ? ("," + (el.iterator2)) : '';
-
-  if ("development" !== 'production' &&
-    state.maybeComponent(el) &&
-    el.tag !== 'slot' &&
-    el.tag !== 'template' &&
-    !el.key
-  ) {
-    state.warn(
-      "<" + (el.tag) + " v-for=\"" + alias + " in " + exp + "\">: component lists rendered with " +
-      "v-for should have explicit keys. " +
-      "See https://vuejs.org/guide/list.html#key for more info.",
-      true /* tip */
-    );
-  }
-
-  el.forProcessed = true; // avoid recursion
-  return (altHelper || '_l') + "((" + exp + ")," +
-    "function(" + alias + iterator1 + iterator2 + "){" +
-      "return " + ((altGen || genElement)(el, state)) +
-    '})'
-}
-
-function genData$2 (el, state) {
-  var data = '{';
-
-  // directives first.
-  // directives may mutate the el's other properties before they are generated.
-  var dirs = genDirectives(el, state);
-  if (dirs) { data += dirs + ','; }
-
-  // key
-  if (el.key) {
-    data += "key:" + (el.key) + ",";
-  }
-  // ref
-  if (el.ref) {
-    data += "ref:" + (el.ref) + ",";
-  }
-  if (el.refInFor) {
-    data += "refInFor:true,";
-  }
-  // pre
-  if (el.pre) {
-    data += "pre:true,";
-  }
-  // record original tag name for components using "is" attribute
-  if (el.component) {
-    data += "tag:\"" + (el.tag) + "\",";
-  }
-  // module data generation functions
-  for (var i = 0; i < state.dataGenFns.length; i++) {
-    data += state.dataGenFns[i](el);
-  }
-  // attributes
-  if (el.attrs) {
-    data += "attrs:{" + (genProps(el.attrs)) + "},";
-  }
-  // DOM props
-  if (el.props) {
-    data += "domProps:{" + (genProps(el.props)) + "},";
-  }
-  // event handlers
-  if (el.events) {
-    data += (genHandlers(el.events, false, state.warn)) + ",";
-  }
-  if (el.nativeEvents) {
-    data += (genHandlers(el.nativeEvents, true, state.warn)) + ",";
-  }
-  // slot target
-  // only for non-scoped slots
-  if (el.slotTarget && !el.slotScope) {
-    data += "slot:" + (el.slotTarget) + ",";
-  }
-  // scoped slots
-  if (el.scopedSlots) {
-    data += (genScopedSlots(el.scopedSlots, state)) + ",";
-  }
-  // component v-model
-  if (el.model) {
-    data += "model:{value:" + (el.model.value) + ",callback:" + (el.model.callback) + ",expression:" + (el.model.expression) + "},";
-  }
-  // inline-template
-  if (el.inlineTemplate) {
-    var inlineTemplate = genInlineTemplate(el, state);
-    if (inlineTemplate) {
-      data += inlineTemplate + ",";
-    }
-  }
-  data = data.replace(/,$/, '') + '}';
-  // v-bind data wrap
-  if (el.wrapData) {
-    data = el.wrapData(data);
-  }
-  // v-on data wrap
-  if (el.wrapListeners) {
-    data = el.wrapListeners(data);
-  }
-  return data
-}
-
-function genDirectives (el, state) {
-  var dirs = el.directives;
-  if (!dirs) { return }
-  var res = 'directives:[';
-  var hasRuntime = false;
-  var i, l, dir, needRuntime;
-  for (i = 0, l = dirs.length; i < l; i++) {
-    dir = dirs[i];
-    needRuntime = true;
-    var gen = state.directives[dir.name];
-    if (gen) {
-      // compile-time directive that manipulates AST.
-      // returns true if it also needs a runtime counterpart.
-      needRuntime = !!gen(el, dir, state.warn);
-    }
-    if (needRuntime) {
-      hasRuntime = true;
-      res += "{name:\"" + (dir.name) + "\",rawName:\"" + (dir.rawName) + "\"" + (dir.value ? (",value:(" + (dir.value) + "),expression:" + (JSON.stringify(dir.value))) : '') + (dir.arg ? (",arg:\"" + (dir.arg) + "\"") : '') + (dir.modifiers ? (",modifiers:" + (JSON.stringify(dir.modifiers))) : '') + "},";
-    }
-  }
-  if (hasRuntime) {
-    return res.slice(0, -1) + ']'
-  }
-}
-
-function genInlineTemplate (el, state) {
-  var ast = el.children[0];
-  if ("development" !== 'production' && (
-    el.children.length !== 1 || ast.type !== 1
-  )) {
-    state.warn('Inline-template components must have exactly one child element.');
-  }
-  if (ast.type === 1) {
-    var inlineRenderFns = generate(ast, state.options);
-    return ("inlineTemplate:{render:function(){" + (inlineRenderFns.render) + "},staticRenderFns:[" + (inlineRenderFns.staticRenderFns.map(function (code) { return ("function(){" + code + "}"); }).join(',')) + "]}")
-  }
-}
-
-function genScopedSlots (
-  slots,
-  state
-) {
-  return ("scopedSlots:_u([" + (Object.keys(slots).map(function (key) {
-      return genScopedSlot(key, slots[key], state)
-    }).join(',')) + "])")
-}
-
-function genScopedSlot (
-  key,
-  el,
-  state
-) {
-  if (el.for && !el.forProcessed) {
-    return genForScopedSlot(key, el, state)
-  }
-  var fn = "function(" + (String(el.slotScope)) + "){" +
-    "return " + (el.tag === 'template'
-      ? el.if
-        ? ((el.if) + "?" + (genChildren(el, state) || 'undefined') + ":undefined")
-        : genChildren(el, state) || 'undefined'
-      : genElement(el, state)) + "}";
-  return ("{key:" + key + ",fn:" + fn + "}")
-}
-
-function genForScopedSlot (
-  key,
-  el,
-  state
-) {
-  var exp = el.for;
-  var alias = el.alias;
-  var iterator1 = el.iterator1 ? ("," + (el.iterator1)) : '';
-  var iterator2 = el.iterator2 ? ("," + (el.iterator2)) : '';
-  el.forProcessed = true; // avoid recursion
-  return "_l((" + exp + ")," +
-    "function(" + alias + iterator1 + iterator2 + "){" +
-      "return " + (genScopedSlot(key, el, state)) +
-    '})'
-}
-
-function genChildren (
-  el,
-  state,
-  checkSkip,
-  altGenElement,
-  altGenNode
-) {
-  var children = el.children;
-  if (children.length) {
-    var el$1 = children[0];
-    // optimize single v-for
-    if (children.length === 1 &&
-      el$1.for &&
-      el$1.tag !== 'template' &&
-      el$1.tag !== 'slot'
-    ) {
-      return (altGenElement || genElement)(el$1, state)
-    }
-    var normalizationType = checkSkip
-      ? getNormalizationType(children, state.maybeComponent)
-      : 0;
-    var gen = altGenNode || genNode;
-    return ("[" + (children.map(function (c) { return gen(c, state); }).join(',')) + "]" + (normalizationType ? ("," + normalizationType) : ''))
-  }
-}
-
-// determine the normalization needed for the children array.
-// 0: no normalization needed
-// 1: simple normalization needed (possible 1-level deep nested array)
-// 2: full normalization needed
-function getNormalizationType (
-  children,
-  maybeComponent
-) {
-  var res = 0;
-  for (var i = 0; i < children.length; i++) {
-    var el = children[i];
-    if (el.type !== 1) {
-      continue
-    }
-    if (needsNormalization(el) ||
-        (el.ifConditions && el.ifConditions.some(function (c) { return needsNormalization(c.block); }))) {
-      res = 2;
-      break
-    }
-    if (maybeComponent(el) ||
-        (el.ifConditions && el.ifConditions.some(function (c) { return maybeComponent(c.block); }))) {
-      res = 1;
-    }
-  }
-  return res
-}
-
-function needsNormalization (el) {
-  return el.for !== undefined || el.tag === 'template' || el.tag === 'slot'
-}
-
-function genNode (node, state) {
-  if (node.type === 1) {
-    return genElement(node, state)
-  } if (node.type === 3 && node.isComment) {
-    return genComment(node)
-  } else {
-    return genText(node)
-  }
-}
-
-function genText (text) {
-  return ("_v(" + (text.type === 2
-    ? text.expression // no need for () because already wrapped in _s()
-    : transformSpecialNewlines(JSON.stringify(text.text))) + ")")
-}
-
-function genComment (comment) {
-  return ("_e(" + (JSON.stringify(comment.text)) + ")")
-}
-
-function genSlot (el, state) {
-  var slotName = el.slotName || '"default"';
-  var children = genChildren(el, state);
-  var res = "_t(" + slotName + (children ? ("," + children) : '');
-  var attrs = el.attrs && ("{" + (el.attrs.map(function (a) { return ((camelize(a.name)) + ":" + (a.value)); }).join(',')) + "}");
-  var bind$$1 = el.attrsMap['v-bind'];
-  if ((attrs || bind$$1) && !children) {
-    res += ",null";
-  }
-  if (attrs) {
-    res += "," + attrs;
-  }
-  if (bind$$1) {
-    res += (attrs ? '' : ',null') + "," + bind$$1;
-  }
-  return res + ')'
-}
-
-// componentName is el.component, take it as argument to shun flow's pessimistic refinement
-function genComponent (
-  componentName,
-  el,
-  state
-) {
-  var children = el.inlineTemplate ? null : genChildren(el, state, true);
-  return ("_c(" + componentName + "," + (genData$2(el, state)) + (children ? ("," + children) : '') + ")")
-}
-
-function genProps (props) {
-  var res = '';
-  for (var i = 0; i < props.length; i++) {
-    var prop = props[i];
-    /* istanbul ignore if */
-    {
-      res += "\"" + (prop.name) + "\":" + (transformSpecialNewlines(prop.value)) + ",";
-    }
-  }
-  return res.slice(0, -1)
-}
-
-// #3895, #4268
-function transformSpecialNewlines (text) {
-  return text
-    .replace(/\u2028/g, '\\u2028')
-    .replace(/\u2029/g, '\\u2029')
-}
-
-/*  */
-
-// these keywords should not appear inside expressions, but operators like
-// typeof, instanceof and in are allowed
-var prohibitedKeywordRE = new RegExp('\\b' + (
-  'do,if,for,let,new,try,var,case,else,with,await,break,catch,class,const,' +
-  'super,throw,while,yield,delete,export,import,return,switch,default,' +
-  'extends,finally,continue,debugger,function,arguments'
-).split(',').join('\\b|\\b') + '\\b');
-
-// these unary operators should not be used as property/method names
-var unaryOperatorsRE = new RegExp('\\b' + (
-  'delete,typeof,void'
-).split(',').join('\\s*\\([^\\)]*\\)|\\b') + '\\s*\\([^\\)]*\\)');
-
-// strip strings in expressions
-var stripStringRE = /'(?:[^'\\]|\\.)*'|"(?:[^"\\]|\\.)*"|`(?:[^`\\]|\\.)*\$\{|\}(?:[^`\\]|\\.)*`|`(?:[^`\\]|\\.)*`/g;
-
-// detect problematic expressions in a template
-function detectErrors (ast) {
-  var errors = [];
-  if (ast) {
-    checkNode(ast, errors);
-  }
-  return errors
-}
-
-function checkNode (node, errors) {
-  if (node.type === 1) {
-    for (var name in node.attrsMap) {
-      if (dirRE.test(name)) {
-        var value = node.attrsMap[name];
-        if (value) {
-          if (name === 'v-for') {
-            checkFor(node, ("v-for=\"" + value + "\""), errors);
-          } else if (onRE.test(name)) {
-            checkEvent(value, (name + "=\"" + value + "\""), errors);
-          } else {
-            checkExpression(value, (name + "=\"" + value + "\""), errors);
-          }
-        }
-      }
-    }
-    if (node.children) {
-      for (var i = 0; i < node.children.length; i++) {
-        checkNode(node.children[i], errors);
-      }
-    }
-  } else if (node.type === 2) {
-    checkExpression(node.expression, node.text, errors);
-  }
-}
-
-function checkEvent (exp, text, errors) {
-  var stipped = exp.replace(stripStringRE, '');
-  var keywordMatch = stipped.match(unaryOperatorsRE);
-  if (keywordMatch && stipped.charAt(keywordMatch.index - 1) !== '$') {
-    errors.push(
-      "avoid using JavaScript unary operator as property name: " +
-      "\"" + (keywordMatch[0]) + "\" in expression " + (text.trim())
-    );
-  }
-  checkExpression(exp, text, errors);
-}
-
-function checkFor (node, text, errors) {
-  checkExpression(node.for || '', text, errors);
-  checkIdentifier(node.alias, 'v-for alias', text, errors);
-  checkIdentifier(node.iterator1, 'v-for iterator', text, errors);
-  checkIdentifier(node.iterator2, 'v-for iterator', text, errors);
-}
-
-function checkIdentifier (
-  ident,
-  type,
-  text,
-  errors
-) {
-  if (typeof ident === 'string') {
-    try {
-      new Function(("var " + ident + "=_"));
-    } catch (e) {
-      errors.push(("invalid " + type + " \"" + ident + "\" in expression: " + (text.trim())));
-    }
-  }
-}
-
-function checkExpression (exp, text, errors) {
-  try {
-    new Function(("return " + exp));
-  } catch (e) {
-    var keywordMatch = exp.replace(stripStringRE, '').match(prohibitedKeywordRE);
-    if (keywordMatch) {
-      errors.push(
-        "avoid using JavaScript keyword as property name: " +
-        "\"" + (keywordMatch[0]) + "\"\n  Raw expression: " + (text.trim())
-      );
-    } else {
-      errors.push(
-        "invalid expression: " + (e.message) + " in\n\n" +
-        "    " + exp + "\n\n" +
-        "  Raw expression: " + (text.trim()) + "\n"
-      );
-    }
-  }
-}
-
-/*  */
-
-function createFunction (code, errors) {
-  try {
-    return new Function(code)
-  } catch (err) {
-    errors.push({ err: err, code: code });
-    return noop
-  }
-}
-
-function createCompileToFunctionFn (compile) {
-  var cache = Object.create(null);
-
-  return function compileToFunctions (
-    template,
-    options,
-    vm
-  ) {
-    options = extend({}, options);
-    var warn$$1 = options.warn || warn;
-    delete options.warn;
-
-    /* istanbul ignore if */
-    {
-      // detect possible CSP restriction
-      try {
-        new Function('return 1');
-      } catch (e) {
-        if (e.toString().match(/unsafe-eval|CSP/)) {
-          warn$$1(
-            'It seems you are using the standalone build of Vue.js in an ' +
-            'environment with Content Security Policy that prohibits unsafe-eval. ' +
-            'The template compiler cannot work in this environment. Consider ' +
-            'relaxing the policy to allow unsafe-eval or pre-compiling your ' +
-            'templates into render functions.'
-          );
-        }
-      }
-    }
-
-    // check cache
-    var key = options.delimiters
-      ? String(options.delimiters) + template
-      : template;
-    if (cache[key]) {
-      return cache[key]
-    }
-
-    // compile
-    var compiled = compile(template, options);
-
-    // check compilation errors/tips
-    {
-      if (compiled.errors && compiled.errors.length) {
-        warn$$1(
-          "Error compiling template:\n\n" + template + "\n\n" +
-          compiled.errors.map(function (e) { return ("- " + e); }).join('\n') + '\n',
-          vm
-        );
-      }
-      if (compiled.tips && compiled.tips.length) {
-        compiled.tips.forEach(function (msg) { return tip(msg, vm); });
-      }
-    }
-
-    // turn code into functions
-    var res = {};
-    var fnGenErrors = [];
-    res.render = createFunction(compiled.render, fnGenErrors);
-    res.staticRenderFns = compiled.staticRenderFns.map(function (code) {
-      return createFunction(code, fnGenErrors)
-    });
-
-    // check function generation errors.
-    // this should only happen if there is a bug in the compiler itself.
-    // mostly for codegen development use
-    /* istanbul ignore if */
-    {
-      if ((!compiled.errors || !compiled.errors.length) && fnGenErrors.length) {
-        warn$$1(
-          "Failed to generate render function:\n\n" +
-          fnGenErrors.map(function (ref) {
-            var err = ref.err;
-            var code = ref.code;
-
-            return ((err.toString()) + " in\n\n" + code + "\n");
-        }).join('\n'),
-          vm
-        );
-      }
-    }
-
-    return (cache[key] = res)
-  }
-}
-
-/*  */
-
-function createCompilerCreator (baseCompile) {
-  return function createCompiler (baseOptions) {
-    function compile (
-      template,
-      options
-    ) {
-      var finalOptions = Object.create(baseOptions);
-      var errors = [];
-      var tips = [];
-      finalOptions.warn = function (msg, tip) {
-        (tip ? tips : errors).push(msg);
-      };
-
-      if (options) {
-        // merge custom modules
-        if (options.modules) {
-          finalOptions.modules =
-            (baseOptions.modules || []).concat(options.modules);
-        }
-        // merge custom directives
-        if (options.directives) {
-          finalOptions.directives = extend(
-            Object.create(baseOptions.directives || null),
-            options.directives
-          );
-        }
-        // copy other options
-        for (var key in options) {
-          if (key !== 'modules' && key !== 'directives') {
-            finalOptions[key] = options[key];
-          }
-        }
-      }
-
-      var compiled = baseCompile(template, finalOptions);
-      {
-        errors.push.apply(errors, detectErrors(compiled.ast));
-      }
-      compiled.errors = errors;
-      compiled.tips = tips;
-      return compiled
-    }
-
-    return {
-      compile: compile,
-      compileToFunctions: createCompileToFunctionFn(compile)
-    }
-  }
-}
-
-/*  */
-
-// `createCompilerCreator` allows creating compilers that use alternative
-// parser/optimizer/codegen, e.g the SSR optimizing compiler.
-// Here we just export a default compiler using the default parts.
-var createCompiler = createCompilerCreator(function baseCompile (
-  template,
-  options
-) {
-  var ast = parse(template.trim(), options);
-  if (options.optimize !== false) {
-    optimize(ast, options);
-  }
-  var code = generate(ast, options);
-  return {
-    ast: ast,
-    render: code.render,
-    staticRenderFns: code.staticRenderFns
-  }
-});
-
-/*  */
-
-var ref$1 = createCompiler(baseOptions);
-var compileToFunctions = ref$1.compileToFunctions;
-
-/*  */
-
-// check whether current browser encodes a char inside attribute values
-var div;
-function getShouldDecode (href) {
-  div = div || document.createElement('div');
-  div.innerHTML = href ? "<a href=\"\n\"/>" : "<div a=\"\n\"/>";
-  return div.innerHTML.indexOf('&#10;') > 0
-}
-
-// #3663: IE encodes newlines inside attribute values while other browsers don't
-var shouldDecodeNewlines = inBrowser ? getShouldDecode(false) : false;
-// #6828: chrome encodes content in a[href]
-var shouldDecodeNewlinesForHref = inBrowser ? getShouldDecode(true) : false;
-
-/*  */
-
-var idToTemplate = cached(function (id) {
-  var el = query(id);
-  return el && el.innerHTML
-});
-
-var mount = Vue.prototype.$mount;
-Vue.prototype.$mount = function (
-  el,
-  hydrating
-) {
-  el = el && query(el);
-
-  /* istanbul ignore if */
-  if (el === document.body || el === document.documentElement) {
-    "development" !== 'production' && warn(
-      "Do not mount Vue to <html> or <body> - mount to normal elements instead."
-    );
-    return this
-  }
-
-  var options = this.$options;
-  // resolve template/el and convert to render function
-  if (!options.render) {
-    var template = options.template;
-    if (template) {
-      if (typeof template === 'string') {
-        if (template.charAt(0) === '#') {
-          template = idToTemplate(template);
-          /* istanbul ignore if */
-          if ("development" !== 'production' && !template) {
-            warn(
-              ("Template element not found or is empty: " + (options.template)),
-              this
-            );
-          }
-        }
-      } else if (template.nodeType) {
-        template = template.innerHTML;
-      } else {
-        {
-          warn('invalid template option:' + template, this);
-        }
-        return this
-      }
-    } else if (el) {
-      template = getOuterHTML(el);
-    }
-    if (template) {
-      /* istanbul ignore if */
-      if ("development" !== 'production' && config.performance && mark) {
-        mark('compile');
-      }
-
-      var ref = compileToFunctions(template, {
-        shouldDecodeNewlines: shouldDecodeNewlines,
-        shouldDecodeNewlinesForHref: shouldDecodeNewlinesForHref,
-        delimiters: options.delimiters,
-        comments: options.comments
-      }, this);
-      var render = ref.render;
-      var staticRenderFns = ref.staticRenderFns;
-      options.render = render;
-      options.staticRenderFns = staticRenderFns;
-
-      /* istanbul ignore if */
-      if ("development" !== 'production' && config.performance && mark) {
-        mark('compile end');
-        measure(("vue " + (this._name) + " compile"), 'compile', 'compile end');
-      }
-    }
-  }
-  return mount.call(this, el, hydrating)
-};
-
-/**
- * Get outerHTML of elements, taking care
- * of SVG elements in IE as well.
- */
-function getOuterHTML (el) {
-  if (el.outerHTML) {
-    return el.outerHTML
-  } else {
-    var container = document.createElement('div');
-    container.appendChild(el.cloneNode(true));
-    return container.innerHTML
-  }
-}
-
-Vue.compile = compileToFunctions;
-
-return Vue;
-
-})));

BIN
static/ppt_en_bg.png


BIN
static/pptnextimg.png


Unele fișiere nu au fost afișate deoarece prea multe fișiere au fost modificate în acest diff