文件过大分5部分
highcharts.js 0-3000_spencer_tseng的博客-CSDN博客
highcharts.js 3001-6000_spencer_tseng的博客-CSDN博客
highcharts.js 6001-9000_spencer_tseng的博客-CSDN博客
highcharts.js 9001-12000_spencer_tseng的博客-CSDN博客
highcharts.js 12001-12677_spencer_tseng的博客-CSDN博客
highcharts.js 0-3000
/*
Highcharts JS v10.3.2 (2022-11-28)
(c) 2009-2021 Torstein Honsi
License: www.highcharts.com/license
*/
(function(aa, K) {
"object" === typeof module && module.exports ? (K["default"] = K, module.exports = aa.document ? K(aa) : K) : "function" === typeof define && define.amd ? define("highcharts/highcharts",
function() {
return K(aa)
}) : (aa.Highcharts && aa.Highcharts.error(16, !0), aa.Highcharts = K(aa))
})("undefined" !== typeof window ? window: this,
function(aa) {
function K(a, v, g, E) {
a.hasOwnProperty(v) || (a[v] = E.apply(null, g), "function" === typeof CustomEvent && aa.dispatchEvent(new CustomEvent("HighchartsModuleLoaded", {
detail: {
path: v,
module: a[v]
}
})))
}
var g = {};
K(g, "Core/Globals.js", [],
function() {
var a; (function(a) {
a.SVG_NS = "http://www.w3.org/2000/svg";
a.product = "Highcharts";
a.version = "10.3.2";
a.win = "undefined" !== typeof aa ? aa: {};
a.doc = a.win.document;
a.svg = a.doc && a.doc.createElementNS && !!a.doc.createElementNS(a.SVG_NS, "svg").createSVGRect;
a.userAgent = a.win.navigator && a.win.navigator.userAgent || "";
a.isChrome = -1 !== a.userAgent.indexOf("Chrome");
a.isFirefox = -1 !== a.userAgent.indexOf("Firefox");
a.isMS = /(edge|msie|trident)/i.test(a.userAgent) && !a.win.opera;
a.isSafari = !a.isChrome && -1 !== a.userAgent.indexOf("Safari");
a.isTouchDevice = /(Mobile|Android|Windows Phone)/.test(a.userAgent);
a.isWebKit = -1 !== a.userAgent.indexOf("AppleWebKit");
a.deg2rad = 2 * Math.PI / 360;
a.hasBidiBug = a.isFirefox && 4 > parseInt(a.userAgent.split("Firefox/")[1], 10);
a.hasTouch = !!a.win.TouchEvent;
a.marginNames = ["plotTop", "marginRight", "marginBottom", "plotLeft"];
a.noop = function() {};
a.supportsPassiveEvents = function() {
var g = !1;
if (!a.isMS) {
var v = Object.defineProperty({},
"passive", {
get: function() {
g = !0
}
});
a.win.addEventListener && a.win.removeEventListener && (a.win.addEventListener("testPassive", a.noop, v), a.win.removeEventListener("testPassive", a.noop, v))
}
return g
} ();
a.charts = [];
a.dateFormats = {};
a.seriesTypes = {};
a.symbolSizes = {};
a.chartCount = 0
})(a || (a = {}));
"";
return a
});
K(g, "Core/Utilities.js", [g["Core/Globals.js"]],
function(a) {
function g(b, d, k, H) {
var z = d ? "Highcharts error": "Highcharts warning";
32 === b && (b = "" + z + ": Deprecated member");
var w = n(b),
p = w ? "" + z + " #" + b + ": www.highcharts.com/errors/" + b + "/": b.toString();
if ("undefined" !== typeof H) {
var q = "";
w && (p += "?");
I(H,
function(b, z) {
q += "\n - ".concat(z, ": ").concat(b);
w && (p += encodeURI(z) + "=" + encodeURI(b))
});
p += q
}
A(a, "displayError", {
chart: k,
code: b,
message: p,
params: H
},
function() {
if (d) throw Error(p);
h.console && -1 === g.messages.indexOf(p) && console.warn(p)
});
g.messages.push(p)
}
function x(b, h) {
var z = {};
I(b,
function(d, w) {
if (G(b[w], !0) && !b.nodeType && h[w]) d = x(b[w], h[w]),
Object.keys(d).length && (z[w] = d);
else if (G(b[w]) || b[w] !== h[w] || w in b && !(w in h)) z[w] = b[w]
});
return z
}
function E(b, h) {
return parseInt(b, h || 10)
}
function D(b) {
return "string" === typeof b
}
function B(b) {
b = Object.prototype.toString.call(b);
return "[object Array]" === b || "[object Array Iterator]" === b
}
function G(b, h) {
return !! b && "object" === typeof b && (!h || !B(b))
}
function r(b) {
return G(b) && "number" === typeof b.nodeType
}
function t(b) {
var h = b && b.constructor;
return ! (!G(b, !0) || r(b) || !h || !h.name || "Object" === h.name)
}
function n(b) {
return "number" === typeof b && !isNaN(b) && Infinity > b && -Infinity < b
}
function f(b) {
return "undefined" !== typeof b && null !== b
}
function c(b, h, d) {
var z = D(h) && !f(d),
w,
k = function(h, d) {
f(h) ? b.setAttribute(d, h) : z ? (w = b.getAttribute(d)) || "class" !== d || (w = b.getAttribute(d + "Name")) : b.removeAttribute(d)
};
D(h) ? k(d, h) : I(h, k);
return w
}
function l(b, h) {
var d;
b || (b = {});
for (d in h) b[d] = h[d];
return b
}
function m() {
for (var b = arguments,
h = b.length,
d = 0; d < h; d++) {
var H = b[d];
if ("undefined" !== typeof H && null !== H) return H
}
}
function e(b, h) {
a.isMS && !a.svg && h && f(h.opacity) && (h.filter = "alpha(opacity=".concat(100 * h.opacity, ")"));
l(b.style, h)
}
function u(b) {
return Math.pow(10, Math.floor(Math.log(b) / Math.LN10))
}
function C(b, h) {
return 1E14 < b ? b: parseFloat(b.toPrecision(h || 14))
}
function J(b, d, k) {
var z = a.getStyle || J;
if ("width" === d) return d = Math.min(b.offsetWidth, b.scrollWidth),
k = b.getBoundingClientRect && b.getBoundingClientRect().width,
k < d && k >= d - 1 && (d = Math.floor(k)),
Math.max(0, d - (z(b, "padding-left", !0) || 0) - (z(b, "padding-right", !0) || 0));
if ("height" === d) return Math.max(0, Math.min(b.offsetHeight, b.scrollHeight) - (z(b, "padding-top", !0) || 0) - (z(b, "padding-bottom", !0) || 0));
h.getComputedStyle || g(27, !0);
if (b = h.getComputedStyle(b, void 0)) {
var w = b.getPropertyValue(d);
m(k, "opacity" !== d) && (w = E(w))
}
return w
}
function I(b, h, d) {
for (var z in b) Object.hasOwnProperty.call(b, z) && h.call(d || b[z], b[z], z, b)
}
function L(b, h, d) {
function z(h, y) {
var d = b.removeEventListener || a.removeEventListenerPolyfill;
d && d.call(b, h, y, !1)
}
function w(d) {
var y;
if (b.nodeName) {
if (h) {
var H = {};
H[h] = !0
} else H = d;
I(H,
function(b, h) {
if (d[h]) for (y = d[h].length; y--;) z(h, d[h][y].fn)
})
}
}
var k = "function" === typeof b && b.prototype || b;
if (Object.hasOwnProperty.call(k, "hcEvents")) {
var p = k.hcEvents;
h ? (k = p[h] || [], d ? (p[h] = k.filter(function(b) {
return d !== b.fn
}), z(h, d)) : (w(p), p[h] = [])) : (w(p), delete k.hcEvents)
}
}
function A(b, h, d, H) {
d = d || {};
if (q.createEvent && (b.dispatchEvent || b.fireEvent && b !== a)) {
var z = q.createEvent("Events");
z.initEvent(h, !0, !0);
d = l(z, d);
b.dispatchEvent ? b.dispatchEvent(d) : b.fireEvent(h, d)
} else if (b.hcEvents) {
d.target || l(d, {
preventDefault: function() {
d.defaultPrevented = !0
},
target: b,
type: h
});
z = [];
for (var w = b,
k = !1; w.hcEvents;) Object.hasOwnProperty.call(w, "hcEvents") && w.hcEvents[h] && (z.length && (k = !0), z.unshift.apply(z, w.hcEvents[h])),
w = Object.getPrototypeOf(w);
k && z.sort(function(b, h) {
return b.order - h.order
});
z.forEach(function(h) { ! 1 === h.fn.call(b, d) && d.preventDefault()
})
}
H && !d.defaultPrevented && H.call(b, d)
}
var d = a.charts,
q = a.doc,
h = a.win; (g || (g = {})).messages = [];
Math.easeInOutSine = function(b) {
return - .5 * (Math.cos(Math.PI * b) - 1)
};
var k = Array.prototype.find ?
function(b, h) {
return b.find(h)
}: function(b, h) {
var d, z = b.length;
for (d = 0; d < z; d++) if (h(b[d], d)) return b[d]
};
I({
map: "map",
each: "forEach",
grep: "filter",
reduce: "reduce",
some: "some"
},
function(b, h) {
a[h] = function(d) {
var z;
g(32, !1, void 0, (z = {},
z["Highcharts.".concat(h)] = "use Array.".concat(b), z));
return Array.prototype[b].apply(d, [].slice.call(arguments, 1))
}
});
var b, p = function() {
var h = Math.random().toString(36).substring(2, 9) + "-",
d = 0;
return function() {
return "highcharts-" + (b ? "": h) + d++
}
} ();
h.jQuery && (h.jQuery.fn.highcharts = function() {
var b = [].slice.call(arguments);
if (this[0]) return b[0] ? (new(a[D(b[0]) ? b.shift() : "Chart"])(this[0], b[0], b[1]), this) : d[c(this[0], "data-highcharts-chart")]
});
k = {
addEvent: function(b, h, d, H) {
void 0 === H && (H = {});
var k = "function" === typeof b && b.prototype || b;
Object.hasOwnProperty.call(k, "hcEvents") || (k.hcEvents = {});
k = k.hcEvents;
a.Point && b instanceof a.Point && b.series && b.series.chart && (b.series.chart.runTrackerClick = !0);
var z = b.addEventListener || a.addEventListenerPolyfill;
z && z.call(b, h, d, a.supportsPassiveEvents ? {
passive: void 0 === H.passive ? -1 !== h.indexOf("touch") : H.passive,
capture: !1
}: !1);
k[h] || (k[h] = []);
k[h].push({
fn: d,
order: "number" === typeof H.order ? H.order: Infinity
});
k[h].sort(function(b, h) {
return b.order - h.order
});
return function() {
L(b, h, d)
}
},
arrayMax: function(b) {
for (var h = b.length,
d = b[0]; h--;) b[h] > d && (d = b[h]);
return d
},
arrayMin: function(b) {
for (var h = b.length,
d = b[0]; h--;) b[h] < d && (d = b[h]);
return d
},
attr: c,
clamp: function(b, h, d) {
return b > h ? b < d ? b: d: h
},
cleanRecursively: x,
clearTimeout: function(b) {
f(b) && clearTimeout(b)
},
correctFloat: C,
createElement: function(b, h, d, k, p) {
b = q.createElement(b);
h && l(b, h);
p && e(b, {
padding: "0",
border: "none",
margin: "0"
});
d && e(b, d);
k && k.appendChild(b);
return b
},
css: e,
defined: f,
destroyObjectProperties: function(b, h) {
I(b,
function(d, k) {
d && d !== h && d.destroy && d.destroy();
delete b[k]
})
},
discardElement: function(b) {
b && b.parentElement && b.parentElement.removeChild(b)
},
erase: function(b, h) {
for (var d = b.length; d--;) if (b[d] === h) {
b.splice(d, 1);
break
}
},
error: g,
extend: l,
extendClass: function(b, h) {
var d = function() {};
d.prototype = new b;
l(d.prototype, h);
return d
},
find: k,
fireEvent: A,
getMagnitude: u,
getNestedProperty: function(b, d) {
for (b = b.split("."); b.length && f(d);) {
var k = b.shift();
if ("undefined" === typeof k || "__proto__" === k) return;
d = d[k];
if (!f(d) || "function" === typeof d || "number" === typeof d.nodeType || d === h) return
}
return d
},
getStyle: J,
inArray: function(b, d, h) {
g(32, !1, void 0, {
"Highcharts.inArray": "use Array.indexOf"
});
return d.indexOf(b, h)
},
isArray: B,
isClass: t,
isDOMElement: r,
isFunction: function(b) {
return "function" === typeof b
},
isNumber: n,
isObject: G,
isString: D,
keys: function(b) {
g(32, !1, void 0, {
"Highcharts.keys": "use Object.keys"
});
return Object.keys(b)
},
merge: function() {
var b, d = arguments,
h = {},
k = function(b, d) {
"object" !== typeof b && (b = {});
I(d,
function(h, y) {
"__proto__" !== y && "constructor" !== y && (!G(h, !0) || t(h) || r(h) ? b[y] = d[y] : b[y] = k(b[y] || {},
h))
});
return b
}; ! 0 === d[0] && (h = d[1], d = Array.prototype.slice.call(d, 2));
var p = d.length;
for (b = 0; b < p; b++) h = k(h, d[b]);
return h
},
normalizeTickInterval: function(b, d, h, k, p) {
var H = b;
h = m(h, u(b));
var w = b / h;
d || (d = p ? [1, 1.2, 1.5, 2, 2.5, 3, 4, 5, 6, 8, 10] : [1, 2, 2.5, 5, 10], !1 === k && (1 === h ? d = d.filter(function(b) {
return 0 === b % 1
}) : .1 >= h && (d = [1 / h])));
for (k = 0; k < d.length && !(H = d[k], p && H * h >= b || !p && w <= (d[k] + (d[k + 1] || d[k])) / 2); k++);
return H = C(H * h, -Math.round(Math.log(.001) / Math.LN10))
},
objectEach: I,
offset: function(b) {
var d = q.documentElement;
b = b.parentElement || b.parentNode ? b.getBoundingClientRect() : {
top: 0,
left: 0,
width: 0,
height: 0
};
return {
top: b.top + (h.pageYOffset || d.scrollTop) - (d.clientTop || 0),
left: b.left + (h.pageXOffset || d.scrollLeft) - (d.clientLeft || 0),
width: b.width,
height: b.height
}
},
pad: function(b, d, h) {
return Array((d || 2) + 1 - String(b).replace("-", "").length).join(h || "0") + b
},
pick: m,
pInt: E,
relativeLength: function(b, d, h) {
return /%$/.test(b) ? d * parseFloat(b) / 100 + (h || 0) : parseFloat(b)
},
removeEvent: L,
splat: function(b) {
return B(b) ? b: [b]
},
stableSort: function(b, d) {
var h = b.length,
k, p;
for (p = 0; p < h; p++) b[p].safeI = p;
b.sort(function(b, h) {
k = d(b, h);
return 0 === k ? b.safeI - h.safeI: k
});
for (p = 0; p < h; p++) delete b[p].safeI
},
syncTimeout: function(b, d, h) {
if (0 < d) return setTimeout(b, d, h);
b.call(0, h);
return - 1
},
timeUnits: {
millisecond: 1,
second: 1E3,
minute: 6E4,
hour: 36E5,
day: 864E5,
week: 6048E5,
month: 24192E5,
year: 314496E5
},
uniqueKey: p,
useSerialIds: function(d) {
return b = m(d, b)
},
wrap: function(b, d, h) {
var k = b[d];
b[d] = function() {
var b = arguments,
d = this;
return h.apply(this, [function() {
return k.apply(d, arguments.length ? arguments: b)
}].concat([].slice.call(arguments)))
}
}
};
"";
return k
});
K(g, "Core/Chart/ChartDefaults.js", [],
function() {
return {
alignThresholds: !1,
panning: {
enabled: !1,
type: "x"
},
styledMode: !1,
borderRadius: 0,
colorCount: 10,
allowMutatingData: !0,
defaultSeriesType: "line",
ignoreHiddenSeries: !0,
spacing: [10, 10, 15, 10],
resetZoomButton: {
theme: {
zIndex: 6
},
position: {
align: "right",
x: -10,
y: 10
}
},
zoomBySingleTouch: !1,
zooming: {
singleTouch: !1,
resetButton: {
theme: {
zIndex: 6
},
position: {
align: "right",
x: -10,
y: 10
}
}
},
width: null,
height: null,
borderColor: "#335cad",
backgroundColor: "#ffffff",
plotBorderColor: "#cccccc"
}
});
K(g, "Core/Color/Color.js", [g["Core/Globals.js"], g["Core/Utilities.js"]],
function(a, g) {
var v = g.isNumber,
E = g.merge,
D = g.pInt;
g = function() {
function g(v) {
this.rgba = [NaN, NaN, NaN, NaN];
this.input = v;
var r = a.Color;
if (r && r !== g) return new r(v);
if (! (this instanceof g)) return new g(v);
this.init(v)
}
g.parse = function(a) {
return a ? new g(a) : g.None
};
g.prototype.init = function(a) {
var r;
if ("object" === typeof a && "undefined" !== typeof a.stops) this.stops = a.stops.map(function(c) {
return new g(c[1])
});
else if ("string" === typeof a) {
this.input = a = g.names[a.toLowerCase()] || a;
if ("#" === a.charAt(0)) {
var t = a.length;
var n = parseInt(a.substr(1), 16);
7 === t ? r = [(n & 16711680) >> 16, (n & 65280) >> 8, n & 255, 1] : 4 === t && (r = [(n & 3840) >> 4 | (n & 3840) >> 8, (n & 240) >> 4 | n & 240, (n & 15) << 4 | n & 15, 1])
}
if (!r) for (n = g.parsers.length; n--&&!r;) {
var f = g.parsers[n]; (t = f.regex.exec(a)) && (r = f.parse(t))
}
}
r && (this.rgba = r)
};
g.prototype.get = function(a) {
var r = this.input,
t = this.rgba;
if ("object" === typeof r && "undefined" !== typeof this.stops) {
var n = E(r);
n.stops = [].slice.call(n.stops);
this.stops.forEach(function(f, c) {
n.stops[c] = [n.stops[c][0], f.get(a)]
});
return n
}
return t && v(t[0]) ? "rgb" === a || !a && 1 === t[3] ? "rgb(" + t[0] + "," + t[1] + "," + t[2] + ")": "a" === a ? "".concat(t[3]) : "rgba(" + t.join(",") + ")": r
};
g.prototype.brighten = function(a) {
var r = this.rgba;
if (this.stops) this.stops.forEach(function(n) {
n.brighten(a)
});
else if (v(a) && 0 !== a) for (var t = 0; 3 > t; t++) r[t] += D(255 * a),
0 > r[t] && (r[t] = 0),
255 < r[t] && (r[t] = 255);
return this
};
g.prototype.setOpacity = function(a) {
this.rgba[3] = a;
return this
};
g.prototype.tweenTo = function(a, r) {
var t = this.rgba,
n = a.rgba;
if (!v(t[0]) || !v(n[0])) return a.input || "none";
a = 1 !== n[3] || 1 !== t[3];
return (a ? "rgba(": "rgb(") + Math.round(n[0] + (t[0] - n[0]) * (1 - r)) + "," + Math.round(n[1] + (t[1] - n[1]) * (1 - r)) + "," + Math.round(n[2] + (t[2] - n[2]) * (1 - r)) + (a ? "," + (n[3] + (t[3] - n[3]) * (1 - r)) : "") + ")"
};
g.names = {
white: "#ffffff",
black: "#000000"
};
g.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(a) {
return [D(a[1]), D(a[2]), D(a[3]), parseFloat(a[4], 10)]
}
},
{
regex: /rgb\(\s*([0-9]{1,3})\s*,\s*([0-9]{1,3})\s*,\s*([0-9]{1,3})\s*\)/,
parse: function(a) {
return [D(a[1]), D(a[2]), D(a[3]), 1]
}
}];
g.None = new g("");
return g
} ();
"";
return g
});
K(g, "Core/Color/Palettes.js", [],
function() {
return {
colors: "#7cb5ec #434348 #90ed7d #f7a35c #8085e9 #f15c80 #e4d354 #2b908f #f45b5b #91e8e1".split(" ")
}
});
K(g, "Core/Time.js", [g["Core/Globals.js"], g["Core/Utilities.js"]],
function(a, g) {
var v = a.win,
E = g.defined,
D = g.error,
B = g.extend,
G = g.isObject,
r = g.merge,
t = g.objectEach,
n = g.pad,
f = g.pick,
c = g.splat,
l = g.timeUnits,
m = a.isSafari && v.Intl && v.Intl.DateTimeFormat.prototype.formatRange,
e = a.isSafari && v.Intl && !v.Intl.DateTimeFormat.prototype.formatRange;
g = function() {
function u(c) {
this.options = {};
this.variableTimezone = this.useUTC = !1;
this.Date = v.Date;
this.getTimezoneOffset = this.timezoneOffsetFunction();
this.update(c)
}
u.prototype.get = function(c, e) {
if (this.variableTimezone || this.timezoneOffset) {
var m = e.getTime(),
l = m - this.getTimezoneOffset(e);
e.setTime(l);
c = e["getUTC" + c]();
e.setTime(m);
return c
}
return this.useUTC ? e["getUTC" + c]() : e["get" + c]()
};
u.prototype.set = function(c, e, l) {
if (this.variableTimezone || this.timezoneOffset) {
if ("Milliseconds" === c || "Seconds" === c || "Minutes" === c && 0 === this.getTimezoneOffset(e) % 36E5) return e["setUTC" + c](l);
var f = this.getTimezoneOffset(e);
f = e.getTime() - f;
e.setTime(f);
e["setUTC" + c](l);
c = this.getTimezoneOffset(e);
f = e.getTime() + c;
return e.setTime(f)
}
return this.useUTC || m && "FullYear" === c ? e["setUTC" + c](l) : e["set" + c](l)
};
u.prototype.update = function(c) {
void 0 === c && (c = {});
var e = f(c.useUTC, !0);
this.options = c = r(!0, this.options, c);
this.Date = c.Date || v.Date || Date;
this.timezoneOffset = (this.useUTC = e) && c.timezoneOffset || void 0;
this.getTimezoneOffset = this.timezoneOffsetFunction();
this.variableTimezone = e && !(!c.getTimezoneOffset && !c.timezone)
};
u.prototype.makeTime = function(c, m, l, u, A, d) {
if (this.useUTC) {
var q = this.Date.UTC.apply(0, arguments);
var h = this.getTimezoneOffset(q);
q += h;
var k = this.getTimezoneOffset(q);
h !== k ? q += k - h: h - 36E5 !== this.getTimezoneOffset(q - 36E5) || e || (q -= 36E5)
} else q = (new this.Date(c, m, f(l, 1), f(u, 0), f(A, 0), f(d, 0))).getTime();
return q
};
u.prototype.timezoneOffsetFunction = function() {
var c = this,
e = this.options,
m = e.getTimezoneOffset,
l = e.moment || v.moment;
if (!this.useUTC) return function(c) {
return 6E4 * (new Date(c.toString())).getTimezoneOffset()
};
if (e.timezone) {
if (l) return function(c) {
return 6E4 * -l.tz(c, e.timezone).utcOffset()
};
D(25)
}
return this.useUTC && m ?
function(c) {
return 6E4 * m(c.valueOf())
}: function() {
return 6E4 * (c.timezoneOffset || 0)
}
};
u.prototype.dateFormat = function(c, e, m) {
if (!E(e) || isNaN(e)) return a.defaultOptions.lang && a.defaultOptions.lang.invalidDate || "";
c = f(c, "%Y-%m-%d %H:%M:%S");
var l = this,
u = new this.Date(e),
d = this.get("Hours", u),
q = this.get("Day", u),
h = this.get("Date", u),
k = this.get("Month", u),
b = this.get("FullYear", u),
p = a.defaultOptions.lang,
z = p && p.weekdays,
w = p && p.shortWeekdays;
u = B({
a: w ? w[q] : z[q].substr(0, 3),
A: z[q],
d: n(h),
e: n(h, 2, " "),
w: q,
b: p.shortMonths[k],
B: p.months[k],
m: n(k + 1),
o: k + 1,
y: b.toString().substr(2, 2),
Y: b,
H: n(d),
k: d,
I: n(d % 12 || 12),
l: d % 12 || 12,
M: n(this.get("Minutes", u)),
p: 12 > d ? "AM": "PM",
P: 12 > d ? "am": "pm",
S: n(u.getSeconds()),
L: n(Math.floor(e % 1E3), 3)
},
a.dateFormats);
t(u,
function(b, d) {
for (; - 1 !== c.indexOf("%" + d);) c = c.replace("%" + d, "function" === typeof b ? b.call(l, e) : b)
});
return m ? c.substr(0, 1).toUpperCase() + c.substr(1) : c
};
u.prototype.resolveDTLFormat = function(e) {
return G(e, !0) ? e: (e = c(e), {
main: e[0],
from: e[1],
to: e[2]
})
};
u.prototype.getTimeTicks = function(c, e, m, u) {
var A = this,
d = [],
q = {},
h = new A.Date(e),
k = c.unitRange,
b = c.count || 1,
p;
u = f(u, 1);
if (E(e)) {
A.set("Milliseconds", h, k >= l.second ? 0 : b * Math.floor(A.get("Milliseconds", h) / b));
k >= l.second && A.set("Seconds", h, k >= l.minute ? 0 : b * Math.floor(A.get("Seconds", h) / b));
k >= l.minute && A.set("Minutes", h, k >= l.hour ? 0 : b * Math.floor(A.get("Minutes", h) / b));
k >= l.hour && A.set("Hours", h, k >= l.day ? 0 : b * Math.floor(A.get("Hours", h) / b));
k >= l.day && A.set("Date", h, k >= l.month ? 1 : Math.max(1, b * Math.floor(A.get("Date", h) / b)));
if (k >= l.month) {
A.set("Month", h, k >= l.year ? 0 : b * Math.floor(A.get("Month", h) / b));
var z = A.get("FullYear", h)
}
k >= l.year && A.set("FullYear", h, z - z % b);
k === l.week && (z = A.get("Day", h), A.set("Date", h, A.get("Date", h) - z + u + (z < u ? -7 : 0)));
z = A.get("FullYear", h);
u = A.get("Month", h);
var w = A.get("Date", h),
C = A.get("Hours", h);
e = h.getTime(); ! A.variableTimezone && A.useUTC || !E(m) || (p = m - e > 4 * l.month || A.getTimezoneOffset(e) !== A.getTimezoneOffset(m));
e = h.getTime();
for (h = 1; e < m;) d.push(e),
e = k === l.year ? A.makeTime(z + h * b, 0) : k === l.month ? A.makeTime(z, u + h * b) : !p || k !== l.day && k !== l.week ? p && k === l.hour && 1 < b ? A.makeTime(z, u, w, C + h * b) : e + k * b: A.makeTime(z, u, w + h * b * (k === l.day ? 1 : 7)),
h++;
d.push(e);
k <= l.hour && 1E4 > d.length && d.forEach(function(b) {
0 === b % 18E5 && "000000000" === A.dateFormat("%H%M%S%L", b) && (q[b] = "day")
})
}
d.info = B(c, {
higherRanks: q,
totalRange: k * b
});
return d
};
u.prototype.getDateFormat = function(c, e, m, u) {
var f = this.dateFormat("%m-%d %H:%M:%S.%L", e),
d = {
millisecond: 15,
second: 12,
minute: 9,
hour: 6,
day: 3
},
q = "millisecond";
for (h in l) {
if (c === l.week && +this.dateFormat("%w", e) === m && "00:00:00.000" === f.substr(6)) {
var h = "week";
break
}
if (l[h] > c) {
h = q;
break
}
if (d[h] && f.substr(d[h]) !== "01-01 00:00:00.000".substr(d[h])) break;
"week" !== h && (q = h)
}
return this.resolveDTLFormat(u[h]).main
};
return u
} ();
"";
return g
});
K(g, "Core/Defaults.js", [g["Core/Chart/ChartDefaults.js"], g["Core/Color/Color.js"], g["Core/Globals.js"], g["Core/Color/Palettes.js"], g["Core/Time.js"], g["Core/Utilities.js"]],
function(a, g, x, E, D, B) {
g = g.parse;
var v = B.merge,
r = {
colors: E.colors,
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: {
Date: void 0,
getTimezoneOffset: void 0,
timezone: void 0,
timezoneOffset: 0,
useUTC: !0
},
chart: a,
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,
className: "highcharts-no-tooltip",
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: x.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: "",
headerShape: "callout",
hideDelay: 500,
padding: 8,
shape: "callout",
shared: !1,
snap: x.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,
stickOnContact: !1,
style: {
color: "#333333",
cursor: "default",
fontSize: "12px",
whiteSpace: "nowrap"
},
useHTML: !1
},
// 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"
// }
};
r.chart.styledMode = !1;
"";
var t = new D(v(r.global, r.time));
a = {
defaultOptions: r,
defaultTime: t,
getOptions: function() {
return r
},
setOptions: function(a) {
v(!0, r, a);
if (a.time || a.global) x.time ? x.time.update(v(r.global, r.time, a.global, a.time)) : x.time = t;
return r
}
};
"";
return a
});
K(g, "Core/Animation/Fx.js", [g["Core/Color/Color.js"], g["Core/Globals.js"], g["Core/Utilities.js"]],
function(a, g, x) {
var v = a.parse,
D = g.win,
B = x.isNumber,
G = x.objectEach;
return function() {
function a(a, n, f) {
this.pos = NaN;
this.options = n;
this.elem = a;
this.prop = f
}
a.prototype.dSetter = function() {
var a = this.paths,
n = a && a[0];
a = a && a[1];
var f = this.now || 0,
c = [];
if (1 !== f && n && a) if (n.length === a.length && 1 > f) for (var l = 0; l < a.length; l++) {
for (var m = n[l], e = a[l], u = [], C = 0; C < e.length; C++) {
var J = m[C],
I = e[C];
B(J) && B(I) && ("A" !== e[0] || 4 !== C && 5 !== C) ? u[C] = J + f * (I - J) : u[C] = I
}
c.push(u)
} else c = a;
else c = this.toD || [];
this.elem.attr("d", c, void 0, !0)
};
a.prototype.update = function() {
var a = this.elem,
n = this.prop,
f = this.now,
c = this.options.step;
if (this[n + "Setter"]) this[n + "Setter"]();
else a.attr ? a.element && a.attr(n, f, null, !0) : a.style[n] = f + this.unit;
c && c.call(a, f, this)
};
a.prototype.run = function(r, n, f) {
var c = this,
l = c.options,
m = function(e) {
return m.stopped ? !1 : c.step(e)
},
e = D.requestAnimationFrame ||
function(c) {
setTimeout(c, 13)
},
u = function() {
for (var c = 0; c < a.timers.length; c++) a.timers[c]() || a.timers.splice(c--, 1);
a.timers.length && e(u)
};
r !== n || this.elem["forceAnimate:" + this.prop] ? (this.startTime = +new Date, this.start = r, this.end = n, this.unit = f, this.now = this.start, this.pos = 0, m.elem = this.elem, m.prop = this.prop, m() && 1 === a.timers.push(m) && e(u)) : (delete l.curAnim[this.prop], l.complete && 0 === Object.keys(l.curAnim).length && l.complete.call(this.elem))
};
a.prototype.step = function(a) {
var n = +new Date,
f = this.options,
c = this.elem,
l = f.complete,
m = f.duration,
e = f.curAnim;
if (c.attr && !c.element) a = !1;
else if (a || n >= m + this.startTime) {
this.now = this.end;
this.pos = 1;
this.update();
var u = e[this.prop] = !0;
G(e,
function(c) { ! 0 !== c && (u = !1)
});
u && l && l.call(c);
a = !1
} else this.pos = f.easing((n - this.startTime) / m),
this.now = this.start + (this.end - this.start) * this.pos,
this.update(),
a = !0;
return a
};
a.prototype.initPath = function(a, n, f) {
function c(c, d) {
for (; c.length < r;) {
var e = c[0],
h = d[r - c.length];
h && "M" === e[0] && (c[0] = "C" === h[0] ? ["C", e[1], e[2], e[1], e[2], e[1], e[2]] : ["L", e[1], e[2]]);
c.unshift(e);
u && (e = c.pop(), c.push(c[c.length - 1], e))
}
}
function l(c, d) {
for (; c.length < r;) if (d = c[Math.floor(c.length / C) - 1].slice(), "C" === d[0] && (d[1] = d[5], d[2] = d[6]), u) {
var e = c[Math.floor(c.length / C)].slice();
c.splice(c.length / 2, 0, d, e)
} else c.push(d)
}
var m = a.startX,
e = a.endX;
f = f.slice();
var u = a.isArea,
C = u ? 2 : 1;
n = n && n.slice();
if (!n) return [f, f];
if (m && e && e.length) {
for (a = 0; a < m.length; a++) if (m[a] === e[0]) {
var J = a;
break
} else if (m[0] === e[e.length - m.length + a]) {
J = a;
var I = !0;
break
} else if (m[m.length - 1] === e[e.length - m.length + a]) {
J = m.length - a;
break
}
"undefined" === typeof J && (n = [])
}
if (n.length && B(J)) {
var r = f.length + J * C;
I ? (c(n, f), l(f, n)) : (c(f, n), l(n, f))
}
return [n, f]
};
a.prototype.fillSetter = function() {
a.prototype.strokeSetter.apply(this, arguments)
};
a.prototype.strokeSetter = function() {
this.elem.attr(this.prop, v(this.start).tweenTo(v(this.end), this.pos), void 0, !0)
};
a.timers = [];
return a
} ()
});
K(g, "Core/Animation/AnimationUtilities.js", [g["Core/Animation/Fx.js"], g["Core/Utilities.js"]],
function(a, g) {
function v(c) {
return t(c) ? n({
duration: 500,
defer: 0
},
c) : {
duration: c ? 500 : 0,
defer: 0
}
}
function E(c, m) {
for (var e = a.timers.length; e--;) a.timers[e].elem !== c || m && m !== a.timers[e].prop || (a.timers[e].stopped = !0)
}
var D = g.defined,
B = g.getStyle,
G = g.isArray,
r = g.isNumber,
t = g.isObject,
n = g.merge,
f = g.objectEach,
c = g.pick;
return {
animate: function(c, m, e) {
var u, l = "",
J, I;
if (!t(e)) {
var g = arguments;
e = {
duration: g[2],
easing: g[3],
complete: g[4]
}
}
r(e.duration) || (e.duration = 400);
e.easing = "function" === typeof e.easing ? e.easing: Math[e.easing] || Math.easeInOutSine;
e.curAnim = n(m);
f(m,
function(f, d) {
E(c, d);
I = new a(c, e, d);
J = void 0;
"d" === d && G(m.d) ? (I.paths = I.initPath(c, c.pathArray, m.d), I.toD = m.d, u = 0, J = 1) : c.attr ? u = c.attr(d) : (u = parseFloat(B(c, d)) || 0, "opacity" !== d && (l = "px"));
J || (J = f);
"string" === typeof J && J.match("px") && (J = J.replace(/px/g, ""));
I.run(u, J, l)
})
},
animObject: v,
getDeferredAnimation: function(c, m, e) {
var u = v(m),
f = 0,
l = 0; (e ? [e] : c.series).forEach(function(c) {
c = v(c.options.animation);
f = m && D(m.defer) ? u.defer: Math.max(f, c.duration + c.defer);
l = Math.min(u.duration, c.duration)
});
c.renderer.forExport && (f = 0);
return {
defer: Math.max(0, f - l),
duration: Math.min(f, l)
}
},
setAnimation: function(f, m) {
m.renderer.globalAnimation = c(f, m.options.chart.animation, !0)
},
stop: E
}
});
K(g, "Core/Renderer/HTML/AST.js", [g["Core/Globals.js"], g["Core/Utilities.js"]],
function(a, g) {
var v = a.SVG_NS,
E = g.attr,
D = g.createElement,
B = g.css,
G = g.error,
r = g.isFunction,
t = g.isString,
n = g.objectEach,
f = g.splat,
c = (g = a.win.trustedTypes) && r(g.createPolicy) && g.createPolicy("highcharts", {
createHTML: function(c) {
return c
}
}),
l = c ? c.createHTML("") : "";
try {
var m = !!(new DOMParser).parseFromString(l, "text/html")
} catch(e) {
m = !1
}
r = function() {
function e(c) {
this.nodes = "string" === typeof c ? this.parseMarkup(c) : c
}
e.filterUserAttributes = function(c) {
n(c,
function(m, f) {
var u = !0; - 1 === e.allowedAttributes.indexOf(f) && (u = !1); - 1 !== ["background", "dynsrc", "href", "lowsrc", "src"].indexOf(f) && (u = t(m) && e.allowedReferences.some(function(c) {
return 0 === m.indexOf(c)
}));
u || (G(33, !1, void 0, {
"Invalid attribute in config": "".concat(f)
}), delete c[f]);
t(m) && c[f] && (c[f] = m.replace(/</g, "<"))
});
return c
};
e.parseStyle = function(c) {
return c.split(";").reduce(function(c, e) {
e = e.split(":").map(function(c) {
return c.trim()
});
var m = e.shift();
m && e.length && (c[m.replace(/-([a-z])/g,
function(c) {
return c[1].toUpperCase()
})] = e.join(":"));
return c
},
{})
};
e.setElementHTML = function(c, m) {
c.innerHTML = e.emptyHTML;
m && (new e(m)).addToDOM(c)
};
e.prototype.addToDOM = function(c) {
function m(c, u) {
var l;
f(c).forEach(function(c) {
var d = c.tagName,
q = c.textContent ? a.doc.createTextNode(c.textContent) : void 0,
h = e.bypassHTMLFiltering;
if (d) if ("#text" === d) var k = q;
else if ( - 1 !== e.allowedTags.indexOf(d) || h) {
d = a.doc.createElementNS("svg" === d ? v: u.namespaceURI || v, d);
var b = c.attributes || {};
n(c,
function(d, h) {
"tagName" !== h && "attributes" !== h && "children" !== h && "style" !== h && "textContent" !== h && (b[h] = d)
});
E(d, h ? b: e.filterUserAttributes(b));
c.style && B(d, c.style);
q && d.appendChild(q);
m(c.children || [], d);
k = d
} else G(33, !1, void 0, {
"Invalid tagName in config": d
});
k && u.appendChild(k);
l = k
});
return l
}
return m(this.nodes, c)
};
e.prototype.parseMarkup = function(f) {
var l = [];
f = f.trim().replace(/ style=(["'])/g, " data-style=$1");
if (m) f = (new DOMParser).parseFromString(c ? c.createHTML(f) : f, "text/html");
else {
var u = D("div");
u.innerHTML = f;
f = {
body: u
}
}
var a = function(c, m) {
var d = c.nodeName.toLowerCase(),
f = {
tagName: d
};
"#text" === d && (f.textContent = c.textContent || "");
if (d = c.attributes) {
var h = {}; [].forEach.call(d,
function(b) {
"data-style" === b.name ? f.style = e.parseStyle(b.value) : h[b.name] = b.value
});
f.attributes = h
}
if (c.childNodes.length) {
var k = []; [].forEach.call(c.childNodes,
function(b) {
a(b, k)
});
k.length && (f.children = k)
}
m.push(f)
}; [].forEach.call(f.body.childNodes,
function(c) {
return a(c, l)
});
return l
};
e.allowedAttributes = "aria-controls aria-describedby aria-expanded aria-haspopup aria-hidden aria-label aria-labelledby aria-live aria-pressed aria-readonly aria-roledescription aria-selected class clip-path color colspan cx cy d dx dy disabled fill height href id in markerHeight markerWidth offset opacity orient padding paddingLeft paddingRight patternUnits r refX refY role scope slope src startOffset stdDeviation stroke stroke-linecap stroke-width style tableValues result rowspan summary target tabindex text-align text-anchor textAnchor textLength title type valign width x x1 x2 xlink:href y y1 y2 zIndex".split(" ");
e.allowedReferences = "https:// http:// mailto: / ../ ./ #".split(" ");
e.allowedTags = "a abbr b br button caption circle clipPath code dd defs div dl dt em feComponentTransfer feFuncA feFuncB feFuncG feFuncR feGaussianBlur feOffset feMerge feMergeNode filter h1 h2 h3 h4 h5 h6 hr i img li linearGradient marker ol p path pattern pre rect small span stop strong style sub sup svg table text textPath thead title tbody tspan td th tr u ul #text".split(" ");
e.emptyHTML = l;
e.bypassHTMLFiltering = !1;
return e
} ();
"";
return r
});
K(g, "Core/FormatUtilities.js", [g["Core/Defaults.js"], g["Core/Utilities.js"]],
function(a, g) {
function v(a, f, c, l) {
a = +a || 0;
f = +f;
var m = E.lang,
e = (a.toString().split(".")[1] || "").split("e")[0].length,
u = a.toString().split("e"),
C = f;
if ( - 1 === f) f = Math.min(e, 20);
else if (!G(f)) f = 2;
else if (f && u[1] && 0 > u[1]) {
var g = f + +u[1];
0 <= g ? (u[0] = ( + u[0]).toExponential(g).split("e")[0], f = g) : (u[0] = u[0].split(".")[0] || 0, a = 20 > f ? (u[0] * Math.pow(10, u[1])).toFixed(f) : 0, u[1] = 0)
}
g = (Math.abs(u[1] ? u[0] : a) + Math.pow(10, -Math.max(f, e) - 1)).toFixed(f);
e = String(t(g));
var n = 3 < e.length ? e.length % 3 : 0;
c = r(c, m.decimalPoint);
l = r(l, m.thousandsSep);
a = (0 > a ? "-": "") + (n ? e.substr(0, n) + l: "");
a = 0 > +u[1] && !C ? "0": a + e.substr(n).replace(/(\d{3})(?=\d)/g, "$1" + l);
f && (a += c + g.slice( - f));
u[1] && 0 !== +a && (a += "e" + u[1]);
return a
}
var E = a.defaultOptions,
D = a.defaultTime,
B = g.getNestedProperty,
G = g.isNumber,
r = g.pick,
t = g.pInt;
return {
dateFormat: function(a, f, c) {
return D.dateFormat(a, f, c)
},
format: function(a, f, c) {
var l = "{",
m = !1,
e = /f$/,
u = /\.([0-9])/,
C = E.lang,
g = c && c.time || D;
c = c && c.numberFormatter || v;
for (var n = []; a;) {
var r = a.indexOf(l);
if ( - 1 === r) break;
var A = a.slice(0, r);
if (m) {
A = A.split(":");
l = B(A.shift() || "", f);
if (A.length && "number" === typeof l) if (A = A.join(":"), e.test(A)) {
var d = parseInt((A.match(u) || ["", "-1"])[1], 10);
null !== l && (l = c(l, d, C.decimalPoint, -1 < A.indexOf(",") ? C.thousandsSep: ""))
} else l = g.dateFormat(A, l);
n.push(l)
} else n.push(A);
a = a.slice(r + 1);
l = (m = !m) ? "}": "{"
}
n.push(a);
return n.join("")
},
numberFormat: v
}
});
K(g, "Core/Renderer/RendererUtilities.js", [g["Core/Utilities.js"]],
function(a) {
var g = a.clamp,
x = a.pick,
E = a.stableSort,
D; (function(a) {
function v(a, t, n) {
var f = a,
c = f.reducedLen || t,
l = function(c, e) {
return (e.rank || 0) - (c.rank || 0)
},
m = function(c, e) {
return c.target - e.target
},
e,
u = !0,
C = [],
J = 0;
for (e = a.length; e--;) J += a[e].size;
if (J > c) {
E(a, l);
for (J = e = 0; J <= c;) J += a[e].size,
e++;
C = a.splice(e - 1, a.length)
}
E(a, m);
for (a = a.map(function(c) {
return {
size: c.size,
targets: [c.target],
align: x(c.align, .5)
}
}); u;) {
for (e = a.length; e--;) c = a[e],
l = (Math.min.apply(0, c.targets) + Math.max.apply(0, c.targets)) / 2,
c.pos = g(l - c.size * c.align, 0, t - c.size);
e = a.length;
for (u = !1; e--;) 0 < e && a[e - 1].pos + a[e - 1].size > a[e].pos && (a[e - 1].size += a[e].size, a[e - 1].targets = a[e - 1].targets.concat(a[e].targets), a[e - 1].align = .5, a[e - 1].pos + a[e - 1].size > t && (a[e - 1].pos = t - a[e - 1].size), a.splice(e, 1), u = !0)
}
f.push.apply(f, C);
e = 0;
a.some(function(c) {
var m = 0;
return (c.targets || []).some(function() {
f[e].pos = c.pos + m;
if ("undefined" !== typeof n && Math.abs(f[e].pos - f[e].target) > n) return f.slice(0, e + 1).forEach(function(c) {
return delete c.pos
}),
f.reducedLen = (f.reducedLen || t) - .1 * t,
f.reducedLen > .1 * t && v(f, t, n),
!0;
m += f[e].size;
e++;
return ! 1
})
});
E(f, m);
return f
}
a.distribute = v
})(D || (D = {}));
return D
});
K(g, "Core/Renderer/SVG/SVGElement.js", [g["Core/Animation/AnimationUtilities.js"], g["Core/Color/Color.js"], g["Core/Globals.js"], g["Core/Utilities.js"]],
function(a, g, x, E) {
var v = a.animate,
B = a.animObject,
G = a.stop,
r = x.deg2rad,
t = x.doc,
n = x.svg,
f = x.SVG_NS,
c = x.win,
l = E.addEvent,
m = E.attr,
e = E.createElement,
u = E.css,
C = E.defined,
J = E.erase,
I = E.extend,
L = E.fireEvent,
A = E.isArray,
d = E.isFunction,
q = E.isString,
h = E.merge,
k = E.objectEach,
b = E.pick,
p = E.pInt,
z = E.syncTimeout,
w = E.uniqueKey;
a = function() {
function a() {
this.element = void 0;
this.onEvents = {};
this.opacity = 1;
this.renderer = void 0;
this.SVG_NS = f;
this.symbolCustomAttribs = "x y width height r start end innerR anchorX anchorY rounded".split(" ")
}
a.prototype._defaultGetter = function(d) {
d = b(this[d + "Value"], this[d], this.element ? this.element.getAttribute(d) : null, 0);
/^[\-0-9\.]+$/.test(d) && (d = parseFloat(d));
return d
};
a.prototype._defaultSetter = function(b, d, h) {
h.setAttribute(d, b)
};
a.prototype.add = function(b) {
var d = this.renderer,
h = this.element;
b && (this.parentGroup = b);
"undefined" !== typeof this.textStr && "text" === this.element.nodeName && d.buildText(this);
this.added = !0;
if (!b || b.handleZ || this.zIndex) var c = this.zIndexSetter();
c || (b ? b.element: d.box).appendChild(h);
if (this.onAdd) this.onAdd();
return this
};
a.prototype.addClass = function(b, d) {
var h = d ? "": this.attr("class") || "";
b = (b || "").split(/ /g).reduce(function(b, d) { - 1 === h.indexOf(d) && b.push(d);
return b
},
h ? [h] : []).join(" ");
b !== h && this.attr("class", b);
return this
};
a.prototype.afterSetters = function() {
this.doTransform && (this.updateTransform(), this.doTransform = !1)
};
a.prototype.align = function(d, h, c) {
var k = {},
e = this.renderer,
y = e.alignedObjects,
p, H, a;
if (d) {
if (this.alignOptions = d, this.alignByTranslate = h, !c || q(c)) this.alignTo = p = c || "renderer",
J(y, this),
y.push(this),
c = void 0
} else d = this.alignOptions,
h = this.alignByTranslate,
p = this.alignTo;
c = b(c, e[p], "scrollablePlotBox" === p ? e.plotBox: void 0, e);
p = d.align;
var w = d.verticalAlign;
e = (c.x || 0) + (d.x || 0);
y = (c.y || 0) + (d.y || 0);
"right" === p ? H = 1 : "center" === p && (H = 2);
H && (e += (c.width - (d.width || 0)) / H);
k[h ? "translateX": "x"] = Math.round(e);
"bottom" === w ? a = 1 : "middle" === w && (a = 2);
a && (y += (c.height - (d.height || 0)) / a);
k[h ? "translateY": "y"] = Math.round(y);
this[this.placed ? "animate": "attr"](k);
this.placed = !0;
this.alignAttr = k;
return this
};
a.prototype.alignSetter = function(b) {
var d = {
left: "start",
center: "middle",
right: "end"
};
d[b] && (this.alignValue = b, this.element.setAttribute("text-anchor", d[b]))
};
a.prototype.animate = function(d, h, c) {
var e = this,
p = B(b(h, this.renderer.globalAnimation, !0));
h = p.defer;
b(t.hidden, t.msHidden, t.webkitHidden, !1) && (p.duration = 0);
0 !== p.duration ? (c && (p.complete = c), z(function() {
e.element && v(e, d, p)
},
h)) : (this.attr(d, void 0, c || p.complete), k(d,
function(b, d) {
p.step && p.step.call(this, b, {
prop: d,
pos: 1,
elem: this
})
},
this));
return this
};
a.prototype.applyTextOutline = function(b) {
var d = this.element; - 1 !== b.indexOf("contrast") && (b = b.replace(/contrast/g, this.renderer.getContrast(d.style.fill)));
var h = b.split(" ");
b = h[h.length - 1];
if ((h = h[0]) && "none" !== h && x.svg) {
this.fakeTS = !0;
h = h.replace(/(^[\d\.]+)(.*?)$/g,
function(b, d, h) {
return 2 * Number(d) + h
});
this.removeTextOutline();
var c = t.createElementNS(f, "tspan");
m(c, {
"class": "highcharts-text-outline",
fill: b,
stroke: b,
"stroke-width": h,
"stroke-linejoin": "round"
});
b = d.querySelector("textPath") || d; [].forEach.call(b.childNodes,
function(b) {
var d = b.cloneNode(!0);
d.removeAttribute && ["fill", "stroke", "stroke-width", "stroke"].forEach(function(b) {
return d.removeAttribute(b)
});
c.appendChild(d)
});
var k = 0; [].forEach.call(b.querySelectorAll("text tspan"),
function(b) {
k += Number(b.getAttribute("dy"))
});
h = t.createElementNS(f, "tspan");
h.textContent = "\u200b";
m(h, {
x: Number(d.getAttribute("x")),
dy: -k
});
c.appendChild(h);
b.insertBefore(c, b.firstChild)
}
};
a.prototype.attr = function(b, d, h, c) {
var p = this.element,
y = this.symbolCustomAttribs,
e, a = this,
w, H;
if ("string" === typeof b && "undefined" !== typeof d) {
var F = b;
b = {};
b[F] = d
}
"string" === typeof b ? a = (this[b + "Getter"] || this._defaultGetter).call(this, b, p) : (k(b,
function(d, h) {
w = !1;
c || G(this, h);
this.symbolName && -1 !== y.indexOf(h) && (e || (this.symbolAttr(b), e = !0), w = !0); ! this.rotation || "x" !== h && "y" !== h || (this.doTransform = !0);
w || (H = this[h + "Setter"] || this._defaultSetter, H.call(this, d, h, p), !this.styledMode && this.shadows && /^(width|height|visibility|x|y|d|transform|cx|cy|r)$/.test(h) && this.updateShadows(h, d, H))
},
this), this.afterSetters());
h && h.call(this);
return a
};
a.prototype.clip = function(b) {
return this.attr("clip-path", b ? "url(" + this.renderer.url + "#" + b.id + ")": "none")
};
a.prototype.crisp = function(b, d) {
d = d || b.strokeWidth || 0;
var h = Math.round(d) % 2 / 2;
b.x = Math.floor(b.x || this.x || 0) + h;
b.y = Math.floor(b.y || this.y || 0) + h;
b.width = Math.floor((b.width || this.width || 0) - 2 * h);
b.height = Math.floor((b.height || this.height || 0) - 2 * h);
C(b.strokeWidth) && (b.strokeWidth = d);
return b
};
a.prototype.complexColor = function(b, d, c) {
var p = this.renderer,
e, y, a, m, f, H, F, z, M, q, l = [],
u;
L(this.renderer, "complexColor", {
args: arguments
},
function() {
b.radialGradient ? y = "radialGradient": b.linearGradient && (y = "linearGradient");
if (y) {
a = b[y];
f = p.gradients;
H = b.stops;
M = c.radialReference;
A(a) && (b[y] = a = {
x1: a[0],
y1: a[1],
x2: a[2],
y2: a[3],
gradientUnits: "userSpaceOnUse"
});
"radialGradient" === y && M && !C(a.gradientUnits) && (m = a, a = h(a, p.getRadialAttr(M, m), {
gradientUnits: "userSpaceOnUse"
}));
k(a,
function(b, d) {
"id" !== d && l.push(d, b)
});
k(H,
function(b) {
l.push(b)
});
l = l.join(",");
if (f[l]) q = f[l].attr("id");
else {
a.id = q = w();
var T = f[l] = p.createElement(y).attr(a).add(p.defs);
T.radAttr = m;
T.stops = [];
H.forEach(function(b) {
0 === b[1].indexOf("rgba") ? (e = g.parse(b[1]), F = e.get("rgb"), z = e.get("a")) : (F = b[1], z = 1);
b = p.createElement("stop").attr({
offset: b[0],
"stop-color": F,
"stop-opacity": z
}).add(T);
T.stops.push(b)
})
}
u = "url(" + p.url + "#" + q + ")";
c.setAttribute(d, u);
c.gradient = l;
b.toString = function() {
return u
}
}
})
};
a.prototype.css = function(b) {
var d = this.styles,
c = {},
e = this.element,
a = !d;
b.color && (b.fill = b.color);
d && k(b,
function(b, h) {
d && d[h] !== b && (c[h] = b, a = !0)
});
if (a) {
d && (b = I(d, c));
if (null === b.width || "auto" === b.width) delete this.textWidth;
else if ("text" === e.nodeName.toLowerCase() && b.width) var y = this.textWidth = p(b.width);
this.styles = b;
y && !n && this.renderer.forExport && delete b.width;
var w = h(b);
e.namespaceURI === this.SVG_NS && ["textOutline", "textOverflow", "width"].forEach(function(b) {
return w && delete w[b]
});
u(e, w);
this.added && ("text" === this.element.nodeName && this.renderer.buildText(this), b.textOutline && this.applyTextOutline(b.textOutline))
}
return this
};
a.prototype.dashstyleSetter = function(d) {
var h = this["stroke-width"];
"inherit" === h && (h = 1);
if (d = d && d.toLowerCase()) {
var c = d.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 (d = c.length; d--;) c[d] = "" + p(c[d]) * b(h, NaN);
d = c.join(",").replace(/NaN/g, "none");
this.element.setAttribute("stroke-dasharray", d)
}
};
a.prototype.destroy = function() {
var b = this,
d = b.element || {},
h = b.renderer,
c = d.ownerSVGElement,
p = h.isSVG && "SPAN" === d.nodeName && b.parentGroup || void 0;
d.onclick = d.onmouseout = d.onmouseover = d.onmousemove = d.point = null;
G(b);
if (b.clipPath && c) {
var y = b.clipPath; [].forEach.call(c.querySelectorAll("[clip-path],[CLIP-PATH]"),
function(b) { - 1 < b.getAttribute("clip-path").indexOf(y.element.id) && b.removeAttribute("clip-path")
});
b.clipPath = y.destroy()
}
if (b.stops) {
for (c = 0; c < b.stops.length; c++) b.stops[c].destroy();
b.stops.length = 0;
b.stops = void 0
}
b.safeRemoveChild(d);
for (h.styledMode || b.destroyShadows(); p && p.div && 0 === p.div.childNodes.length;) d = p.parentGroup,
b.safeRemoveChild(p.div),
delete p.div,
p = d;
b.alignTo && J(h.alignedObjects, b);
k(b,
function(d, h) {
b[h] && b[h].parentGroup === b && b[h].destroy && b[h].destroy();
delete b[h]
})
};
a.prototype.destroyShadows = function() { (this.shadows || []).forEach(function(b) {
this.safeRemoveChild(b)
},
this);
this.shadows = void 0
};
a.prototype.dSetter = function(b, d, h) {
A(b) && ("string" === typeof b[0] && (b = this.renderer.pathToSegments(b)), this.pathArray = b, b = b.reduce(function(b, d, h) {
return d && d.join ? (h ? b + " ": "") + d.join(" ") : (d || "").toString()
},
""));
/(NaN| {2}|^$)/.test(b) && (b = "M 0 0");
this[d] !== b && (h.setAttribute(d, b), this[d] = b)
};
a.prototype.fadeOut = function(d) {
var h = this;
h.animate({
opacity: 0
},
{
duration: b(d, 150),
complete: function() {
h.hide()
}
})
};
a.prototype.fillSetter = function(b, d, h) {
"string" === typeof b ? h.setAttribute(d, b) : b && this.complexColor(b, d, h)
};
a.prototype.getBBox = function(h, c) {
var k = this.alignValue,
p = this.element,
e = this.renderer,
y = this.styles,
w = this.textStr,
m = e.cache,
f = e.cacheKeys,
z = p.namespaceURI === this.SVG_NS;
c = b(c, this.rotation, 0);
var F = e.styledMode ? p && a.prototype.getStyle.call(p, "font-size") : y && y.fontSize,
q;
if (C(w)) {
var M = w.toString(); - 1 === M.indexOf("<") && (M = M.replace(/[0-9]/g, "0"));
M += ["", c, F, this.textWidth, k, y && y.textOverflow, y && y.fontWeight].join()
}
M && !h && (q = m[M]);
if (!q) {
if (z || e.forExport) {
try {
var l = this.fakeTS &&
function(b) {
var d = p.querySelector(".highcharts-text-outline");
d && u(d, {
display: b
})
};
d(l) && l("none");
q = p.getBBox ? I({},
p.getBBox()) : {
width: p.offsetWidth,
height: p.offsetHeight,
x: 0,
y: 0
};
d(l) && l("")
} catch(U) {
""
}
if (!q || 0 > q.width) q = {
x: 0,
y: 0,
width: 0,
height: 0
}
} else q = this.htmlGetBBox();
if (e.isSVG && (e = q.width, h = q.height, z && (q.height = h = {
"11px,17": 14,
"13px,20": 16
} ["" + (F || "") + ",".concat(Math.round(h))] || h), c)) {
z = Number(p.getAttribute("y") || 0) - q.y;
k = {
right: 1,
center: .5
} [k || 0] || 0;
y = c * r;
F = (c - 90) * r;
var H = e * Math.cos(y);
c = e * Math.sin(y);
l = Math.cos(F);
y = Math.sin(F);
e = q.x + k * (e - H) + z * l;
F = e + H;
l = F - h * l;
H = l - H;
z = q.y + z - k * c + z * y;
k = z + c;
h = k - h * y;
c = h - c;
q.x = Math.min(e, F, l, H);
q.y = Math.min(z, k, h, c);
q.width = Math.max(e, F, l, H) - q.x;
q.height = Math.max(z, k, h, c) - q.y
}
if (M && ("" === w || 0 < q.height)) {
for (; 250 < f.length;) delete m[f.shift()];
m[M] || f.push(M);
m[M] = q
}
}
return q
};
a.prototype.getStyle = function(b) {
return c.getComputedStyle(this.element || this, "").getPropertyValue(b)
};
a.prototype.hasClass = function(b) {
return - 1 !== ("" + this.attr("class")).split(" ").indexOf(b)
};
a.prototype.hide = function() {
return this.attr({
visibility: "hidden"
})
};
a.prototype.htmlGetBBox = function() {
return {
height: 0,
width: 0,
x: 0,
y: 0
}
};
a.prototype.init = function(b, d) {
this.element = "span" === d ? e(d) : t.createElementNS(this.SVG_NS, d);
this.renderer = b;
L(this, "afterInit")
};
a.prototype.on = function(b, d) {
var h = this.onEvents;
if (h[b]) h[b]();
h[b] = l(this.element, b, d);
return this
};
a.prototype.opacitySetter = function(b, d, h) {
this.opacity = b = Number(Number(b).toFixed(3));
h.setAttribute(d, b)
};
a.prototype.removeClass = function(b) {
return this.attr("class", ("" + this.attr("class")).replace(q(b) ? new RegExp("(^| )".concat(b, "( |$)")) : b, " ").replace(/ +/g, " ").trim())
};
a.prototype.removeTextOutline = function() {
var b = this.element.querySelector("tspan.highcharts-text-outline");
b && this.safeRemoveChild(b)
};
a.prototype.safeRemoveChild = function(b) {
var d = b.parentNode;
d && d.removeChild(b)
};
a.prototype.setRadialReference = function(b) {
var d = this.element.gradient && this.renderer.gradients[this.element.gradient];
this.element.radialReference = b;
d && d.radAttr && d.animate(this.renderer.getRadialAttr(b, d.radAttr));
return this
};
a.prototype.setTextPath = function(b, d) {
var c = this;
d = h(!0, {
enabled: !0,
attributes: {
dy: -5,
startOffset: "50%",
textAnchor: "middle"
}
},
d);
var k = this.renderer.url,
p = this.text || this,
y = p.textPath,
e = d.attributes,
a = d.enabled;
b = b || y && y.path;
y && y.undo();
b && a ? (d = l(p, "afterModifyTree",
function(d) {
if (b && a) {
var h = b.attr("id");
h || b.attr("id", h = w());
var y = {
x: 0,
y: 0
};
C(e.dx) && (y.dx = e.dx, delete e.dx);
C(e.dy) && (y.dy = e.dy, delete e.dy);
p.attr(y);
c.attr({
transform: ""
});
c.box && (c.box = c.box.destroy());
y = d.nodes.slice(0);
d.nodes.length = 0;
d.nodes[0] = {
tagName: "textPath",
attributes: I(e, {
"text-anchor": e.textAnchor,
href: "" + k + "#".concat(h)
}),
children: y
}
}
}), p.textPath = {
path: b,
undo: d
}) : (p.attr({
dx: 0,
dy: 0
}), delete p.textPath);
this.added && (p.textCache = "", this.renderer.buildText(p));
return this
};
a.prototype.shadow = function(b, d, h) {
var c = [],
p = this.element,
y = this.oldShadowOptions,
e = this.parentGroup,
a = e && 90 === e.rotation;
e = {
color: "#000000",
offsetX: a ? -1 : 1,
offsetY: a ? -1 : 1,
opacity: .15,
width: 3
};
var w = !1,
q; ! 0 === b ? q = e: "object" === typeof b && (q = I(e, b));
q && (q && y && k(q,
function(b, d) {
b !== y[d] && (w = !0)
}), w && this.destroyShadows(), this.oldShadowOptions = q);
if (!q) this.destroyShadows();
else if (!this.shadows) {
e = q.opacity / q.width;
var F = a ? "translate(".concat(q.offsetY, ", ").concat(q.offsetX, ")") : "translate(".concat(q.offsetX, ", ").concat(q.offsetY, ")");
for (a = 1; a <= q.width; a++) {
var f = p.cloneNode(!1);
var z = 2 * q.width + 1 - 2 * a;
m(f, {
stroke: b.color || "#000000",
"stroke-opacity": e * a,
"stroke-width": z,
transform: F,
fill: "none"
});
f.setAttribute("class", (f.getAttribute("class") || "") + " highcharts-shadow");
h && (m(f, "height", Math.max(m(f, "height") - z, 0)), f.cutHeight = z);
d ? d.element.appendChild(f) : p.parentNode && p.parentNode.insertBefore(f, p);
c.push(f)
}
this.shadows = c
}
return this
};
a.prototype.show = function(b) {
void 0 === b && (b = !0);
return this.attr({
visibility: b ? "inherit": "visible"
})
};
a.prototype["stroke-widthSetter"] = function(b, d, h) {
this[d] = b;
h.setAttribute(d, b)
};
a.prototype.strokeWidth = function() {
if (!this.renderer.styledMode) return this["stroke-width"] || 0;
var b = this.getStyle("stroke-width"),
d = 0;
if (b.indexOf("px") === b.length - 2) d = p(b);
else if ("" !== b) {
var h = t.createElementNS(f, "rect");
m(h, {
width: b,
"stroke-width": 0
});
this.element.parentNode.appendChild(h);
d = h.getBBox().width;
h.parentNode.removeChild(h)
}
return d
};
a.prototype.symbolAttr = function(d) {
var h = this;
"x y r start end width height innerR anchorX anchorY clockwise".split(" ").forEach(function(c) {
h[c] = b(d[c], h[c])
});
h.attr({
d: h.renderer.symbols[h.symbolName](h.x, h.y, h.width, h.height, h)
})
};
a.prototype.textSetter = function(b) {
b !== this.textStr && (delete this.textPxLength, this.textStr = b, this.added && this.renderer.buildText(this))
};
a.prototype.titleSetter = function(d) {
var h = this.element,
c = h.getElementsByTagName("title")[0] || t.createElementNS(this.SVG_NS, "title");
h.insertBefore ? h.insertBefore(c, h.firstChild) : h.appendChild(c);
c.textContent = String(b(d, "")).replace(/<[^>]*>/g, "").replace(/</g, "<").replace(/>/g, ">")
};
a.prototype.toFront = function() {
var b = this.element;
b.parentNode.appendChild(b);
return this
};
a.prototype.translate = function(b, d) {
return this.attr({
translateX: b,
translateY: d
})
};
a.prototype.updateShadows = function(b, d, h) {
var c = this.shadows;
if (c) for (var k = c.length; k--;) h.call(c[k], "height" === b ? Math.max(d - (c[k].cutHeight || 0), 0) : "d" === b ? this.d: d, b, c[k])
};
a.prototype.updateTransform = function() {
var d = this.element,
h = this.matrix,
c = this.rotation;
c = void 0 === c ? 0 : c;
var k = this.scaleX,
p = this.scaleY,
y = this.translateX,
e = this.translateY;
y = ["translate(" + (void 0 === y ? 0 : y) + "," + (void 0 === e ? 0 : e) + ")"];
C(h) && y.push("matrix(" + h.join(",") + ")");
c && y.push("rotate(" + c + " " + b(this.rotationOriginX, d.getAttribute("x"), 0) + " " + b(this.rotationOriginY, d.getAttribute("y") || 0) + ")"); (C(k) || C(p)) && y.push("scale(" + b(k, 1) + " " + b(p, 1) + ")");
y.length && !(this.text || this).textPath && d.setAttribute("transform", y.join(" "))
};
a.prototype.visibilitySetter = function(b, d, h) {
"inherit" === b ? h.removeAttribute(d) : this[d] !== b && h.setAttribute(d, b);
this[d] = b
};
a.prototype.xGetter = function(b) {
"circle" === this.element.nodeName && ("x" === b ? b = "cx": "y" === b && (b = "cy"));
return this._defaultGetter(b)
};
a.prototype.zIndexSetter = function(b, d) {
var h = this.renderer,
c = this.parentGroup,
k = (c || h).element || h.box,
y = this.element;
h = k === h.box;
var e = !1;
var a = this.added;
var w;
C(b) ? (y.setAttribute("data-z-index", b), b = +b, this[d] === b && (a = !1)) : C(this[d]) && y.removeAttribute("data-z-index");
this[d] = b;
if (a) { (b = this.zIndex) && c && (c.handleZ = !0);
d = k.childNodes;
for (w = d.length - 1; 0 <= w && !e; w--) {
c = d[w];
a = c.getAttribute("data-z-index");
var q = !C(a);
if (c !== y) if (0 > b && q && !h && !w) k.insertBefore(y, d[w]),
e = !0;
else if (p(a) <= b || q && (!C(b) || 0 <= b)) k.insertBefore(y, d[w + 1] || null),
e = !0
}
e || (k.insertBefore(y, d[h ? 3 : 0] || null), e = !0)
}
return e
};
return a
} ();
a.prototype.strokeSetter = a.prototype.fillSetter;
a.prototype.yGetter = a.prototype.xGetter;
a.prototype.matrixSetter = a.prototype.rotationOriginXSetter = a.prototype.rotationOriginYSetter = a.prototype.rotationSetter = a.prototype.scaleXSetter = a.prototype.scaleYSetter = a.prototype.translateXSetter = a.prototype.translateYSetter = a.prototype.verticalAlignSetter = function(b, d) {
this[d] = b;
this.doTransform = !0
};
"";
return a
});
K(g, "Core/Renderer/RendererRegistry.js", [g["Core/Globals.js"]],
function(a) {
var g; (function(g) {
g.rendererTypes = {};
var v;
g.getRendererType = function(a) {
void 0 === a && (a = v);
return g.rendererTypes[a] || g.rendererTypes[v]
};
g.registerRendererType = function(x, B, E) {
g.rendererTypes[x] = B;
if (!v || E) v = x,
a.Renderer = B
}
})(g || (g = {}));
return g
});
K(g, "Core/Renderer/SVG/SVGLabel.js", [g["Core/Renderer/SVG/SVGElement.js"], g["Core/Utilities.js"]],
function(a, g) {
var v = this && this.__extends ||
function() {
var a = function(f, c) {
a = Object.setPrototypeOf || {
__proto__: []
}
instanceof Array &&
function(c, a) {
c.__proto__ = a
} ||
function(c, a) {
for (var e in a) a.hasOwnProperty(e) && (c[e] = a[e])
};
return a(f, c)
};
return function(f, c) {
function l() {
this.constructor = f
}
a(f, c);
f.prototype = null === c ? Object.create(c) : (l.prototype = c.prototype, new l)
}
} (),
E = g.defined,
D = g.extend,
B = g.isNumber,
G = g.merge,
r = g.pick,
t = g.removeEvent;
return function(g) {
function f(c, a, m, e, u, C, n, I, r, A) {
var d = g.call(this) || this;
d.paddingLeftSetter = d.paddingSetter;
d.paddingRightSetter = d.paddingSetter;
d.init(c, "g");
d.textStr = a;
d.x = m;
d.y = e;
d.anchorX = C;
d.anchorY = n;
d.baseline = r;
d.className = A;
d.addClass("button" === A ? "highcharts-no-tooltip": "highcharts-label");
A && d.addClass("highcharts-" + A);
d.text = c.text(void 0, 0, 0, I).attr({
zIndex: 1
});
var q;
"string" === typeof u && ((q = /^url\((.*?)\)$/.test(u)) || d.renderer.symbols[u]) && (d.symbolKey = u);
d.bBox = f.emptyBBox;
d.padding = 3;
d.baselineOffset = 0;
d.needsBox = c.styledMode || q;
d.deferredAttr = {};
d.alignFactor = 0;
return d
}
v(f, g);
f.prototype.alignSetter = function(c) {
c = {
left: 0,
center: .5,
right: 1
} [c];
c !== this.alignFactor && (this.alignFactor = c, this.bBox && B(this.xSetting) && this.attr({
x: this.xSetting
}))
};
f.prototype.anchorXSetter = function(c, a) {
this.anchorX = c;
this.boxAttr(a, Math.round(c) - this.getCrispAdjust() - this.xSetting)
};
f.prototype.anchorYSetter = function(c, a) {
this.anchorY = c;
this.boxAttr(a, c - this.ySetting)
};
f.prototype.boxAttr = function(c, a) {
this.box ? this.box.attr(c, a) : this.deferredAttr[c] = a
};
f.prototype.css = function(c) {
if (c) {
var l = {};
c = G(c);
f.textProps.forEach(function(e) {
"undefined" !== typeof c[e] && (l[e] = c[e], delete c[e])
});
this.text.css(l);
var m = "width" in l;
"fontSize" in l || "fontWeight" in l ? this.updateTextPadding() : m && this.updateBoxSize()
}
return a.prototype.css.call(this, c)
};
f.prototype.destroy = function() {
t(this.element, "mouseenter");
t(this.element, "mouseleave");
this.text && this.text.destroy();
this.box && (this.box = this.box.destroy());
a.prototype.destroy.call(this)
};
f.prototype.fillSetter = function(c, a) {
c && (this.needsBox = !0);
this.fill = c;
this.boxAttr(a, c)
};
f.prototype.getBBox = function() {
this.textStr && 0 === this.bBox.width && 0 === this.bBox.height && this.updateBoxSize();
var c = this.padding,
a = r(this.paddingLeft, c);
return {
width: this.width,
height: this.height,
x: this.bBox.x - a,
y: this.bBox.y - c
}
};
f.prototype.getCrispAdjust = function() {
return this.renderer.styledMode && this.box ? this.box.strokeWidth() % 2 / 2 : (this["stroke-width"] ? parseInt(this["stroke-width"], 10) : 0) % 2 / 2
};
f.prototype.heightSetter = function(c) {
this.heightSetting = c
};
f.prototype.onAdd = function() {
this.text.add(this);
this.attr({
text: r(this.textStr, ""),
x: this.x || 0,
y: this.y || 0
});
this.box && E(this.anchorX) && this.attr({
anchorX: this.anchorX,
anchorY: this.anchorY
})
};
f.prototype.paddingSetter = function(c, a) {
B(c) ? c !== this[a] && (this[a] = c, this.updateTextPadding()) : this[a] = void 0
};
f.prototype.rSetter = function(c, a) {
this.boxAttr(a, c)
};
f.prototype.shadow = function(c) {
c && !this.renderer.styledMode && (this.updateBoxSize(), this.box && this.box.shadow(c));
return this
};
f.prototype.strokeSetter = function(c, a) {
this.stroke = c;
this.boxAttr(a, c)
};
f.prototype["stroke-widthSetter"] = function(c, a) {
c && (this.needsBox = !0);
this["stroke-width"] = c;
this.boxAttr(a, c)
};
f.prototype["text-alignSetter"] = function(c) {
this.textAlign = c
};
f.prototype.textSetter = function(c) {
"undefined" !== typeof c && this.text.attr({
text: c
});
this.updateTextPadding()
};
f.prototype.updateBoxSize = function() {
var c = this.text,
a = c.element.style,
m = {},
e = this.padding,
u = this.bBox = B(this.widthSetting) && B(this.heightSetting) && !this.textAlign || !E(c.textStr) ? f.emptyBBox: c.getBBox();
this.width = this.getPaddedWidth();
this.height = (this.heightSetting || u.height || 0) + 2 * e;
a = this.renderer.fontMetrics(a && a.fontSize, c);
this.baselineOffset = e + Math.min((this.text.firstLineMetrics || a).b, u.height || Infinity);
this.heightSetting && (this.baselineOffset += (this.heightSetting - a.h) / 2);
this.needsBox && !c.textPath && (this.box || (c = this.box = this.symbolKey ? this.renderer.symbol(this.symbolKey) : this.renderer.rect(), c.addClass(("button" === this.className ? "": "highcharts-label-box") + (this.className ? " highcharts-" + this.className + "-box": "")), c.add(this)), c = this.getCrispAdjust(), m.x = c, m.y = (this.baseline ? -this.baselineOffset: 0) + c, m.width = Math.round(this.width), m.height = Math.round(this.height), this.box.attr(D(m, this.deferredAttr)), this.deferredAttr = {})
};
f.prototype.updateTextPadding = function() {
var c = this.text;
if (!c.textPath) {
this.updateBoxSize();
var a = this.baseline ? 0 : this.baselineOffset,
f = r(this.paddingLeft, this.padding);
E(this.widthSetting) && this.bBox && ("center" === this.textAlign || "right" === this.textAlign) && (f += {
center: .5,
right: 1
} [this.textAlign] * (this.widthSetting - this.bBox.width));
if (f !== c.x || a !== c.y) c.attr("x", f),
c.hasBoxWidthChanged && (this.bBox = c.getBBox(!0)),
"undefined" !== typeof a && c.attr("y", a);
c.x = f;
c.y = a
}
};
f.prototype.widthSetter = function(c) {
this.widthSetting = B(c) ? c: void 0
};
f.prototype.getPaddedWidth = function() {
var c = this.padding,
a = r(this.paddingLeft, c);
c = r(this.paddingRight, c);
return (this.widthSetting || this.bBox.width || 0) + a + c
};
f.prototype.xSetter = function(c) {
this.x = c;
this.alignFactor && (c -= this.alignFactor * this.getPaddedWidth(), this["forceAnimate:x"] = !0);
this.xSetting = Math.round(c);
this.attr("translateX", this.xSetting)
};
f.prototype.ySetter = function(c) {
this.ySetting = this.y = Math.round(c);
this.attr("translateY", this.ySetting)
};
f.emptyBBox = {
width: 0,
height: 0,
x: 0,
y: 0
};
f.textProps = "color direction fontFamily fontSize fontStyle fontWeight lineHeight textAlign textDecoration textOutline textOverflow width".split(" ");
return f
} (a)
});
K(g, "Core/Renderer/SVG/Symbols.js", [g["Core/Utilities.js"]],
function(a) {
function g(a, g, n, f, c) {
var l = [];
if (c) {
var m = c.start || 0,
e = G(c.r, n);
n = G(c.r, f || n);
var u = (c.end || 0) - .001;
f = c.innerR;
var C = G(c.open, .001 > Math.abs((c.end || 0) - m - 2 * Math.PI)),
J = Math.cos(m),
I = Math.sin(m),
r = Math.cos(u),
A = Math.sin(u);
m = G(c.longArc, .001 > u - m - Math.PI ? 0 : 1);
l.push(["M", a + e * J, g + n * I], ["A", e, n, 0, m, G(c.clockwise, 1), a + e * r, g + n * A]);
D(f) && l.push(C ? ["M", a + f * r, g + f * A] : ["L", a + f * r, g + f * A], ["A", f, f, 0, m, D(c.clockwise) ? 1 - c.clockwise: 0, a + f * J, g + f * I]);
C || l.push(["Z"])
}
return l
}
function x(a, g, n, f, c) {
return c && c.r ? E(a, g, n, f, c) : [["M", a, g], ["L", a + n, g], ["L", a + n, g + f], ["L", a, g + f], ["Z"]]
}
function E(a, g, n, f, c) {
c = c && c.r || 0;
return [["M", a + c, g], ["L", a + n - c, g], ["C", a + n, g, a + n, g, a + n, g + c], ["L", a + n, g + f - c], ["C", a + n, g + f, a + n, g + f, a + n - c, g + f], ["L", a + c, g + f], ["C", a, g + f, a, g + f, a, g + f - c], ["L", a, g + c], ["C", a, g, a, g, a + c, g]]
}
var D = a.defined,
B = a.isNumber,
G = a.pick;
return {
arc: g,
callout: function(a, g, n, f, c) {
var l = Math.min(c && c.r || 0, n, f),
m = l + 6,
e = c && c.anchorX;
c = c && c.anchorY || 0;
var u = E(a, g, n, f, {
r: l
});
if (!B(e)) return u;
a + e >= n ? c > g + m && c < g + f - m ? u.splice(3, 1, ["L", a + n, c - 6], ["L", a + n + 6, c], ["L", a + n, c + 6], ["L", a + n, g + f - l]) : u.splice(3, 1, ["L", a + n, f / 2], ["L", e, c], ["L", a + n, f / 2], ["L", a + n, g + f - l]) : 0 >= a + e ? c > g + m && c < g + f - m ? u.splice(7, 1, ["L", a, c + 6], ["L", a - 6, c], ["L", a, c - 6], ["L", a, g + l]) : u.splice(7, 1, ["L", a, f / 2], ["L", e, c], ["L", a, f / 2], ["L", a, g + l]) : c && c > f && e > a + m && e < a + n - m ? u.splice(5, 1, ["L", e + 6, g + f], ["L", e, g + f + 6], ["L", e - 6, g + f], ["L", a + l, g + f]) : c && 0 > c && e > a + m && e < a + n - m && u.splice(1, 1, ["L", e - 6, g], ["L", e, g - 6], ["L", e + 6, g], ["L", n - l, g]);
return u
},
circle: function(a, t, n, f) {
return g(a + n / 2, t + f / 2, n / 2, f / 2, {
start: .5 * Math.PI,
end: 2.5 * Math.PI,
open: !1
})
},
diamond: function(a, g, n, f) {
return [["M", a + n / 2, g], ["L", a + n, g + f / 2], ["L", a + n / 2, g + f], ["L", a, g + f / 2], ["Z"]]
},
rect: x,
roundedRect: E,
square: x,
triangle: function(a, g, n, f) {
return [["M", a + n / 2, g], ["L", a + n, g + f], ["L", a, g + f], ["Z"]]
},
"triangle-down": function(a, g, n, f) {
return [["M", a, g], ["L", a + n, g], ["L", a + n / 2, g + f], ["Z"]]
}
}
});
K(g, "Core/Renderer/SVG/TextBuilder.js", [g["Core/Renderer/HTML/AST.js"], g["Core/Globals.js"], g["Core/Utilities.js"]],
function(a, g, x) {
var v = g.doc,
D = g.SVG_NS,
B = g.win,
G = x.attr,
r = x.extend,
t = x.fireEvent,
n = x.isString,
f = x.objectEach,
c = x.pick;
return function() {
function l(c) {
var a = c.styles;
this.renderer = c.renderer;
this.svgElement = c;
this.width = c.textWidth;
this.textLineHeight = a && a.lineHeight;
this.textOutline = a && a.textOutline;
this.ellipsis = !(!a || "ellipsis" !== a.textOverflow);
this.noWrap = !(!a || "nowrap" !== a.whiteSpace);
this.fontSize = a && a.fontSize
}
l.prototype.buildSVG = function() {
var f = this.svgElement,
e = f.element,
u = f.renderer,
l = c(f.textStr, "").toString(),
g = -1 !== l.indexOf("<"),
I = e.childNodes;
u = this.width && !f.added && u.box;
var L = /<br.*?>/g,
A = [l, this.ellipsis, this.noWrap, this.textLineHeight, this.textOutline, this.fontSize, this.width].join();
if (A !== f.textCache) {
f.textCache = A;
delete f.actualWidth;
for (A = I.length; A--;) e.removeChild(I[A]);
g || this.ellipsis || this.width || f.textPath || -1 !== l.indexOf(" ") && (!this.noWrap || L.test(l)) ? "" !== l && (u && u.appendChild(e), l = new a(l), this.modifyTree(l.nodes), l.addToDOM(e), this.modifyDOM(), this.ellipsis && -1 !== (e.textContent || "").indexOf("\u2026") && f.attr("title", this.unescapeEntities(f.textStr || "", ["<", ">"])), u && u.removeChild(e)) : e.appendChild(v.createTextNode(this.unescapeEntities(l)));
n(this.textOutline) && f.applyTextOutline && f.applyTextOutline(this.textOutline)
}
};
l.prototype.modifyDOM = function() {
var c = this,
a = this.svgElement,
f = G(a.element, "x");
a.firstLineMetrics = void 0;
for (var l; l = a.element.firstChild;) if (/^[\s\u200B]*$/.test(l.textContent || " ")) a.element.removeChild(l);
else break; [].forEach.call(a.element.querySelectorAll("tspan.highcharts-br"),
function(e, d) {
e.nextSibling && e.previousSibling && (0 === d && 1 === e.previousSibling.nodeType && (a.firstLineMetrics = a.renderer.fontMetrics(void 0, e.previousSibling)), G(e, {
dy: c.getLineHeight(e.nextSibling),
x: f
}))
});
var g = this.width || 0;
if (g) {
var n = function(e, d) {
var q = e.textContent || "",
h = q.replace(/([^\^])-/g, "$1- ").split(" "),
k = !c.noWrap && (1 < h.length || 1 < a.element.childNodes.length),
b = c.getLineHeight(d),
p = 0,
z = a.actualWidth;
if (c.ellipsis) q && c.truncate(e, q, void 0, 0, Math.max(0, g - parseInt(c.fontSize || 12, 10)),
function(b, d) {
return b.substring(0, d) + "\u2026"
});
else if (k) {
q = [];
for (k = []; d.firstChild && d.firstChild !== e;) k.push(d.firstChild),
d.removeChild(d.firstChild);
for (; h.length;) h.length && !c.noWrap && 0 < p && (q.push(e.textContent || ""), e.textContent = h.join(" ").replace(/- /g, "-")),
c.truncate(e, void 0, h, 0 === p ? z || 0 : 0, g,
function(b, d) {
return h.slice(0, d).join(" ").replace(/- /g, "-")
}),
z = a.actualWidth,
p++;
k.forEach(function(b) {
d.insertBefore(b, e)
});
q.forEach(function(h) {
d.insertBefore(v.createTextNode(h), e);
h = v.createElementNS(D, "tspan");
h.textContent = "\u200b";
G(h, {
dy: b,
x: f
});
d.insertBefore(h, e)
})
}
},
L = function(c) { [].slice.call(c.childNodes).forEach(function(d) {
d.nodeType === B.Node.TEXT_NODE ? n(d, c) : ( - 1 !== d.className.baseVal.indexOf("highcharts-br") && (a.actualWidth = 0), L(d))
})
};
L(a.element)
}
};
l.prototype.getLineHeight = function(c) {
var a;
c = c.nodeType === B.Node.TEXT_NODE ? c.parentElement: c;
this.renderer.styledMode || (a = c && /(px|em)$/.test(c.style.fontSize) ? c.style.fontSize: this.fontSize || this.renderer.style.fontSize || 12);
return this.textLineHeight ? parseInt(this.textLineHeight.toString(), 10) : this.renderer.fontMetrics(a, c || this.svgElement.element).h
};
l.prototype.modifyTree = function(c) {
var a = this,
f = function(e, l) {
var m = e.attributes;
m = void 0 === m ? {}: m;
var u = e.children,
g = e.style;
g = void 0 === g ? {}: g;
var d = e.tagName,
q = a.renderer.styledMode;
if ("b" === d || "strong" === d) q ? m["class"] = "highcharts-strong": g.fontWeight = "bold";
else if ("i" === d || "em" === d) q ? m["class"] = "highcharts-emphasized": g.fontStyle = "italic";
g && g.color && (g.fill = g.color);
"br" === d ? (m["class"] = "highcharts-br", e.textContent = "\u200b", (l = c[l + 1]) && l.textContent && (l.textContent = l.textContent.replace(/^ +/gm, ""))) : "a" === d && u && u.some(function(d) {
return "#text" === d.tagName
}) && (e.children = [{
children: u,
tagName: "tspan"
}]);
"#text" !== d && "a" !== d && (e.tagName = "tspan");
r(e, {
attributes: m,
style: g
});
u && u.filter(function(d) {
return "#text" !== d.tagName
}).forEach(f)
};
c.forEach(f);
t(this.svgElement, "afterModifyTree", {
nodes: c
})
};
l.prototype.truncate = function(c, a, f, l, g, n) {
var e = this.svgElement,
m = e.renderer,
d = e.rotation,
q = [],
h = f ? 1 : 0,
k = (a || f || "").length,
b = k,
p,
z = function(b, d) {
d = d || b;
var h = c.parentNode;
if (h && "undefined" === typeof q[d]) if (h.getSubStringLength) try {
q[d] = l + h.getSubStringLength(0, f ? d + 1 : d)
} catch(Q) {
""
} else m.getSpanWidth && (c.textContent = n(a || f, b), q[d] = l + m.getSpanWidth(e, c));
return q[d]
};
e.rotation = 0;
var w = z(c.textContent.length);
if (l + w > g) {
for (; h <= k;) b = Math.ceil((h + k) / 2),
f && (p = n(f, b)),
w = z(b, p && p.length - 1),
h === k ? h = k + 1 : w > g ? k = b - 1 : h = b;
0 === k ? c.textContent = "": a && k === a.length - 1 || (c.textContent = p || n(a || f, b))
}
f && f.splice(0, b);
e.actualWidth = w;
e.rotation = d
};
l.prototype.unescapeEntities = function(c, a) {
f(this.renderer.escapes,
function(e, f) {
a && -1 !== a.indexOf(e) || (c = c.toString().replace(new RegExp(e, "g"), f))
});
return c
};
return l
} ()
});
K(g, "Core/Renderer/SVG/SVGRenderer.js", [g["Core/Renderer/HTML/AST.js"], g["Core/Color/Color.js"], g["Core/Globals.js"], g["Core/Renderer/RendererRegistry.js"], g["Core/Renderer/SVG/SVGElement.js"], g["Core/Renderer/SVG/SVGLabel.js"], g["Core/Renderer/SVG/Symbols.js"], g["Core/Renderer/SVG/TextBuilder.js"], g["Core/Utilities.js"]],
function(a, g, x, E, D, B, G, r, t) {
var n = x.charts,
f = x.deg2rad,
c = x.doc,
l = x.isFirefox,
m = x.isMS,
e = x.isWebKit,
u = x.noop,
C = x.SVG_NS,
J = x.symbolSizes,
I = x.win,
L = t.addEvent,
A = t.attr,
d = t.createElement,
q = t.css,
h = t.defined,
k = t.destroyObjectProperties,
b = t.extend,
p = t.isArray,
z = t.isNumber,
w = t.isObject,
N = t.isString,
H = t.merge,
O = t.pick,
Q = t.pInt,
v = t.uniqueKey,
Y;
x = function() {
function y(b, d, h, c, a, y, k) {
this.width = this.url = this.style = this.isSVG = this.imgCount = this.height = this.gradients = this.globalAnimation = this.defs = this.chartIndex = this.cacheKeys = this.cache = this.boxWrapper = this.box = this.alignedObjects = void 0;
this.init(b, d, h, c, a, y, k)
}
y.prototype.init = function(b, d, h, a, y, k, e) {
var F = this.createElement("svg").attr({
version: "1.1",
"class": "highcharts-root"
}),
p = F.element;
e || F.css(this.getStyle(a));
b.appendChild(p);
A(b, "dir", "ltr"); - 1 === b.innerHTML.indexOf("xmlns") && A(p, "xmlns", this.SVG_NS);
this.isSVG = !0;
this.box = p;
this.boxWrapper = F;
this.alignedObjects = [];
this.url = this.getReferenceURL();
this.createElement("desc").add().element.appendChild(c.createTextNode("Created with Highcharts 10.3.2"));
this.defs = this.createElement("defs").add();
this.allowHTML = k;
this.forExport = y;
this.styledMode = e;
this.gradients = {};
this.cache = {};
this.cacheKeys = [];
this.imgCount = 0;
this.setSize(d, h, !1);
var f;
l && b.getBoundingClientRect && (d = function() {
q(b, {
left: 0,
top: 0
});
f = b.getBoundingClientRect();
q(b, {
left: Math.ceil(f.left) - f.left + "px",
top: Math.ceil(f.top) - f.top + "px"
})
},
d(), this.unSubPixelFix = L(I, "resize", d))
};
y.prototype.definition = function(b) {
return (new a([b])).addToDOM(this.defs.element)
};
y.prototype.getReferenceURL = function() {
if ((l || e) && c.getElementsByTagName("base").length) {
if (!h(Y)) {
var b = v();
b = (new a([{
tagName: "svg",
attributes: {
width: 8,
height: 8
},
children: [{
tagName: "defs",
children: [{
tagName: "clipPath",
attributes: {
id: b
},
children: [{
tagName: "rect",
attributes: {
width: 4,
height: 4
}
}]
}]
},
{
tagName: "rect",
attributes: {
id: "hitme",
width: 8,
height: 8,
"clip-path": "url(#".concat(b, ")"),
fill: "rgba(0,0,0,0.001)"
}
}]
}])).addToDOM(c.body);
q(b, {
position: "fixed",
top: 0,
left: 0,
zIndex: 9E5
});
var d = c.elementFromPoint(6, 6);
Y = "hitme" === (d && d.id);
c.body.removeChild(b)
}
if (Y) return I.location.href.split("#")[0].replace(/<[^>]*>/g, "").replace(/([\('\)])/g, "\\$1").replace(/ /g, "%20")
}
return ""
};
y.prototype.getStyle = function(d) {
return this.style = b({
fontFamily: '"Lucida Grande", "Lucida Sans Unicode", Arial, Helvetica, sans-serif',
fontSize: "12px"
},
d)
};
y.prototype.setStyle = function(b) {
this.boxWrapper.css(this.getStyle(b))
};
y.prototype.isHidden = function() {
return ! this.boxWrapper.getBBox().width
};
y.prototype.destroy = function() {
var b = this.defs;
this.box = null;
this.boxWrapper = this.boxWrapper.destroy();
k(this.gradients || {});
this.gradients = null;
b && (this.defs = b.destroy());
this.unSubPixelFix && this.unSubPixelFix();
return this.alignedObjects = null
};
y.prototype.createElement = function(b) {
var d = new this.Element;
d.init(this, b);
return d
};
y.prototype.getRadialAttr = function(b, d) {
return {
cx: b[0] - b[2] / 2 + (d.cx || 0) * b[2],
cy: b[1] - b[2] / 2 + (d.cy || 0) * b[2],
r: (d.r || 0) * b[2]
}
};
y.prototype.buildText = function(b) { (new r(b)).buildSVG()
};
y.prototype.getContrast = function(b) {
b = g.parse(b).rgba.map(function(b) {
b /= 255;
return.03928 >= b ? b / 12.92 : Math.pow((b + .055) / 1.055, 2.4)
});
b = .2126 * b[0] + .7152 * b[1] + .0722 * b[2];
return 1.05 / (b + .05) > (b + .05) / .05 ? "#FFFFFF": "#000000"
};
y.prototype.button = function(d, h, c, y, k, e, p, f, q, z) {
void 0 === k && (k = {});
var F = this.label(d, h, c, q, void 0, void 0, z, void 0, "button"),
l = this.styledMode;
d = k.states || {};
var M = 0;
k = H(k);
delete k.states;
var u = H({
color: "#333333",
cursor: "pointer",
fontWeight: "normal"
},
k.style);
delete k.style;
var g = a.filterUserAttributes(k);
F.attr(H({
padding: 8,
r: 2
},
g));
if (!l) {
g = H({
fill: "#f7f7f7",
stroke: "#cccccc",
"stroke-width": 1
},
g);
e = H(g, {
fill: "#e6e6e6"
},
a.filterUserAttributes(e || d.hover || {}));
var P = e.style;
delete e.style;
p = H(g, {
fill: "#e6ebf5",
style: {
color: "#000000",
fontWeight: "bold"
}
},
a.filterUserAttributes(p || d.select || {}));
var T = p.style;
delete p.style;
f = H(g, {
style: {
color: "#cccccc"
}
},
a.filterUserAttributes(f || d.disabled || {}));
var A = f.style;
delete f.style
}
L(F.element, m ? "mouseover": "mouseenter",
function() {
3 !== M && F.setState(1)
});
L(F.element, m ? "mouseout": "mouseleave",
function() {
3 !== M && F.setState(M)
});
F.setState = function(b) {
1 !== b && (F.state = M = b);
F.removeClass(/highcharts-button-(normal|hover|pressed|disabled)/).addClass("highcharts-button-" + ["normal", "hover", "pressed", "disabled"][b || 0]);
l || (F.attr([g, e, p, f][b || 0]), b = [u, P, T, A][b || 0], w(b) && F.css(b))
};
l || (F.attr(g).css(b({
cursor: "default"
},
u)), z && F.text.css({
pointerEvents: "none"
}));
return F.on("touchstart",
function(b) {
return b.stopPropagation()
}).on("click",
function(b) {
3 !== M && y.call(F, b)
})
};
y.prototype.crispLine = function(b, d, c) {
void 0 === c && (c = "round");
var a = b[0],
y = b[1];
h(a[1]) && a[1] === y[1] && (a[1] = y[1] = Math[c](a[1]) - d % 2 / 2);
h(a[2]) && a[2] === y[2] && (a[2] = y[2] = Math[c](a[2]) + d % 2 / 2);
return b
};
y.prototype.path = function(d) {
var h = this.styledMode ? {}: {
fill: "none"
};
p(d) ? h.d = d: w(d) && b(h, d);
return this.createElement("path").attr(h)
};
y.prototype.circle = function(b, d, h) {
b = w(b) ? b: "undefined" === typeof b ? {}: {
x: b,
y: d,
r: h
};
d = this.createElement("circle");
d.xSetter = d.ySetter = function(b, d, h) {
h.setAttribute("c" + d, b)
};
return d.attr(b)
};
y.prototype.arc = function(b, d, h, c, a, y) {
w(b) ? (c = b, d = c.y, h = c.r, b = c.x) : c = {
innerR: c,
start: a,
end: y
};
b = this.symbol("arc", b, d, h, h, c);
b.r = h;
return b
};
y.prototype.rect = function(b, d, h, c, a, y) {
a = w(b) ? b.r: a;
var k = this.createElement("rect");
b = w(b) ? b: "undefined" === typeof b ? {}: {
x: b,
y: d,
width: Math.max(h, 0),
height: Math.max(c, 0)
};
this.styledMode || ("undefined" !== typeof y && (b["stroke-width"] = y, b = k.crisp(b)), b.fill = "none");
a && (b.r = a);
k.rSetter = function(b, d, h) {
k.r = b;
A(h, {
rx: b,
ry: b
})
};
k.rGetter = function() {
return k.r || 0
};
return k.attr(b)
};
y.prototype.setSize = function(b, d, h) {
this.width = b;
this.height = d;
this.boxWrapper.animate({
width: b,
height: d
},
{
step: function() {
this.attr({
viewBox: "0 0 " + this.attr("width") + " " + this.attr("height")
})
},
duration: O(h, !0) ? void 0 : 0
});
this.alignElements()
};
y.prototype.g = function(b) {
var d = this.createElement("g");
return b ? d.attr({
"class": "highcharts-" + b
}) : d
};