/*! * Chart.js * http://chartjs.org/ * Version: 2.7.1 * * Copyright 2017 Nick Downie * Released under the MIT license * https://github.com/chartjs/Chart.js/blob/master/LICENSE.md */ !(function (t) { if ("object" == typeof exports && "undefined" != typeof module) module.exports = t(); else if ("function" == typeof define && define.amd) define([], t); else { ("undefined" != typeof window ? window : "undefined" != typeof global ? global : "undefined" != typeof self ? self : this ).Chart = t(); } })(function () { return (function t(e, n, i) { function a(r, l) { if (!n[r]) { if (!e[r]) { var s = "function" == typeof require && require; if (!l && s) return s(r, !0); if (o) return o(r, !0); var u = new Error("Cannot find module '" + r + "'"); throw ((u.code = "MODULE_NOT_FOUND"), u); } var d = (n[r] = { exports: {} }); e[r][0].call( d.exports, function (t) { var n = e[r][1][t]; return a(n || t); }, d, d.exports, t, e, n, i ); } return n[r].exports; } for ( var o = "function" == typeof require && require, r = 0; r < i.length; r++ ) a(i[r]); return a; })( { 1: [function (t, e, n) {}, {}], 2: [ function (t, e, n) { function i(t) { if (t) { var e = [0, 0, 0], n = 1, i = t.match(/^#([a-fA-F0-9]{3})$/i); if (i) { i = i[1]; for (a = 0; a < e.length; a++) e[a] = parseInt(i[a] + i[a], 16); } else if ((i = t.match(/^#([a-fA-F0-9]{6})$/i))) { i = i[1]; for (a = 0; a < e.length; a++) e[a] = parseInt(i.slice(2 * a, 2 * a + 2), 16); } else if ( (i = t.match( /^rgba?\(\s*([+-]?\d+)\s*,\s*([+-]?\d+)\s*,\s*([+-]?\d+)\s*(?:,\s*([+-]?[\d\.]+)\s*)?\)$/i )) ) { for (a = 0; a < e.length; a++) e[a] = parseInt(i[a + 1]); n = parseFloat(i[4]); } else if ( (i = t.match( /^rgba?\(\s*([+-]?[\d\.]+)\%\s*,\s*([+-]?[\d\.]+)\%\s*,\s*([+-]?[\d\.]+)\%\s*(?:,\s*([+-]?[\d\.]+)\s*)?\)$/i )) ) { for (a = 0; a < e.length; a++) e[a] = Math.round(2.55 * parseFloat(i[a + 1])); n = parseFloat(i[4]); } else if ((i = t.match(/(\w+)/))) { if ("transparent" == i[1]) return [0, 0, 0, 0]; if (!(e = c[i[1]])) return; } for (var a = 0; a < e.length; a++) e[a] = u(e[a], 0, 255); return (n = n || 0 == n ? u(n, 0, 1) : 1), (e[3] = n), e; } } function a(t) { if (t) { var e = t.match( /^hsla?\(\s*([+-]?\d+)(?:deg)?\s*,\s*([+-]?[\d\.]+)%\s*,\s*([+-]?[\d\.]+)%\s*(?:,\s*([+-]?[\d\.]+)\s*)?\)/ ); if (e) { var n = parseFloat(e[4]); return [ u(parseInt(e[1]), 0, 360), u(parseFloat(e[2]), 0, 100), u(parseFloat(e[3]), 0, 100), u(isNaN(n) ? 1 : n, 0, 1), ]; } } } function o(t) { if (t) { var e = t.match( /^hwb\(\s*([+-]?\d+)(?:deg)?\s*,\s*([+-]?[\d\.]+)%\s*,\s*([+-]?[\d\.]+)%\s*(?:,\s*([+-]?[\d\.]+)\s*)?\)/ ); if (e) { var n = parseFloat(e[4]); return [ u(parseInt(e[1]), 0, 360), u(parseFloat(e[2]), 0, 100), u(parseFloat(e[3]), 0, 100), u(isNaN(n) ? 1 : n, 0, 1), ]; } } } function r(t, e) { return ( void 0 === e && (e = void 0 !== t[3] ? t[3] : 1), "rgba(" + t[0] + ", " + t[1] + ", " + t[2] + ", " + e + ")" ); } function l(t, e) { return ( "rgba(" + Math.round((t[0] / 255) * 100) + "%, " + Math.round((t[1] / 255) * 100) + "%, " + Math.round((t[2] / 255) * 100) + "%, " + (e || t[3] || 1) + ")" ); } function s(t, e) { return ( void 0 === e && (e = void 0 !== t[3] ? t[3] : 1), "hsla(" + t[0] + ", " + t[1] + "%, " + t[2] + "%, " + e + ")" ); } function u(t, e, n) { return Math.min(Math.max(e, t), n); } function d(t) { var e = t.toString(16).toUpperCase(); return e.length < 2 ? "0" + e : e; } var c = t(6); e.exports = { getRgba: i, getHsla: a, getRgb: function (t) { var e = i(t); return e && e.slice(0, 3); }, getHsl: function (t) { var e = a(t); return e && e.slice(0, 3); }, getHwb: o, getAlpha: function (t) { var e = i(t); return e ? e[3] : (e = a(t)) ? e[3] : (e = o(t)) ? e[3] : void 0; }, hexString: function (t) { return "#" + d(t[0]) + d(t[1]) + d(t[2]); }, rgbString: function (t, e) { return e < 1 || (t[3] && t[3] < 1) ? r(t, e) : "rgb(" + t[0] + ", " + t[1] + ", " + t[2] + ")"; }, rgbaString: r, percentString: function (t, e) { return e < 1 || (t[3] && t[3] < 1) ? l(t, e) : "rgb(" + Math.round((t[0] / 255) * 100) + "%, " + Math.round((t[1] / 255) * 100) + "%, " + Math.round((t[2] / 255) * 100) + "%)"; }, percentaString: l, hslString: function (t, e) { return e < 1 || (t[3] && t[3] < 1) ? s(t, e) : "hsl(" + t[0] + ", " + t[1] + "%, " + t[2] + "%)"; }, hslaString: s, hwbString: function (t, e) { return ( void 0 === e && (e = void 0 !== t[3] ? t[3] : 1), "hwb(" + t[0] + ", " + t[1] + "%, " + t[2] + "%" + (void 0 !== e && 1 !== e ? ", " + e : "") + ")" ); }, keyword: function (t) { return h[t.slice(0, 3)]; }, }; var h = {}; for (var f in c) h[c[f]] = f; }, { 6: 6 }, ], 3: [ function (t, e, n) { var i = t(5), a = t(2), o = function (t) { if (t instanceof o) return t; if (!(this instanceof o)) return new o(t); (this.valid = !1), (this.values = { rgb: [0, 0, 0], hsl: [0, 0, 0], hsv: [0, 0, 0], hwb: [0, 0, 0], cmyk: [0, 0, 0, 0], alpha: 1, }); var e; "string" == typeof t ? (e = a.getRgba(t)) ? this.setValues("rgb", e) : (e = a.getHsla(t)) ? this.setValues("hsl", e) : (e = a.getHwb(t)) && this.setValues("hwb", e) : "object" == typeof t && (void 0 !== (e = t).r || void 0 !== e.red ? this.setValues("rgb", e) : void 0 !== e.l || void 0 !== e.lightness ? this.setValues("hsl", e) : void 0 !== e.v || void 0 !== e.value ? this.setValues("hsv", e) : void 0 !== e.w || void 0 !== e.whiteness ? this.setValues("hwb", e) : (void 0 === e.c && void 0 === e.cyan) || this.setValues("cmyk", e)); }; (o.prototype = { isValid: function () { return this.valid; }, rgb: function () { return this.setSpace("rgb", arguments); }, hsl: function () { return this.setSpace("hsl", arguments); }, hsv: function () { return this.setSpace("hsv", arguments); }, hwb: function () { return this.setSpace("hwb", arguments); }, cmyk: function () { return this.setSpace("cmyk", arguments); }, rgbArray: function () { return this.values.rgb; }, hslArray: function () { return this.values.hsl; }, hsvArray: function () { return this.values.hsv; }, hwbArray: function () { var t = this.values; return 1 !== t.alpha ? t.hwb.concat([t.alpha]) : t.hwb; }, cmykArray: function () { return this.values.cmyk; }, rgbaArray: function () { var t = this.values; return t.rgb.concat([t.alpha]); }, hslaArray: function () { var t = this.values; return t.hsl.concat([t.alpha]); }, alpha: function (t) { return void 0 === t ? this.values.alpha : (this.setValues("alpha", t), this); }, red: function (t) { return this.setChannel("rgb", 0, t); }, green: function (t) { return this.setChannel("rgb", 1, t); }, blue: function (t) { return this.setChannel("rgb", 2, t); }, hue: function (t) { return ( t && (t = (t %= 360) < 0 ? 360 + t : t), this.setChannel("hsl", 0, t) ); }, saturation: function (t) { return this.setChannel("hsl", 1, t); }, lightness: function (t) { return this.setChannel("hsl", 2, t); }, saturationv: function (t) { return this.setChannel("hsv", 1, t); }, whiteness: function (t) { return this.setChannel("hwb", 1, t); }, blackness: function (t) { return this.setChannel("hwb", 2, t); }, value: function (t) { return this.setChannel("hsv", 2, t); }, cyan: function (t) { return this.setChannel("cmyk", 0, t); }, magenta: function (t) { return this.setChannel("cmyk", 1, t); }, yellow: function (t) { return this.setChannel("cmyk", 2, t); }, black: function (t) { return this.setChannel("cmyk", 3, t); }, hexString: function () { return a.hexString(this.values.rgb); }, rgbString: function () { return a.rgbString(this.values.rgb, this.values.alpha); }, rgbaString: function () { return a.rgbaString(this.values.rgb, this.values.alpha); }, percentString: function () { return a.percentString(this.values.rgb, this.values.alpha); }, hslString: function () { return a.hslString(this.values.hsl, this.values.alpha); }, hslaString: function () { return a.hslaString(this.values.hsl, this.values.alpha); }, hwbString: function () { return a.hwbString(this.values.hwb, this.values.alpha); }, keyword: function () { return a.keyword(this.values.rgb, this.values.alpha); }, rgbNumber: function () { var t = this.values.rgb; return (t[0] << 16) | (t[1] << 8) | t[2]; }, luminosity: function () { for (var t = this.values.rgb, e = [], n = 0; n < t.length; n++) { var i = t[n] / 255; e[n] = i <= 0.03928 ? i / 12.92 : Math.pow((i + 0.055) / 1.055, 2.4); } return 0.2126 * e[0] + 0.7152 * e[1] + 0.0722 * e[2]; }, contrast: function (t) { var e = this.luminosity(), n = t.luminosity(); return e > n ? (e + 0.05) / (n + 0.05) : (n + 0.05) / (e + 0.05); }, level: function (t) { var e = this.contrast(t); return e >= 7.1 ? "AAA" : e >= 4.5 ? "AA" : ""; }, dark: function () { var t = this.values.rgb; return (299 * t[0] + 587 * t[1] + 114 * t[2]) / 1e3 < 128; }, light: function () { return !this.dark(); }, negate: function () { for (var t = [], e = 0; e < 3; e++) t[e] = 255 - this.values.rgb[e]; return this.setValues("rgb", t), this; }, lighten: function (t) { var e = this.values.hsl; return (e[2] += e[2] * t), this.setValues("hsl", e), this; }, darken: function (t) { var e = this.values.hsl; return (e[2] -= e[2] * t), this.setValues("hsl", e), this; }, saturate: function (t) { var e = this.values.hsl; return (e[1] += e[1] * t), this.setValues("hsl", e), this; }, kecamatanturate: function (t) { var e = this.values.hsl; return (e[1] -= e[1] * t), this.setValues("hsl", e), this; }, whiten: function (t) { var e = this.values.hwb; return (e[1] += e[1] * t), this.setValues("hwb", e), this; }, blacken: function (t) { var e = this.values.hwb; return (e[2] += e[2] * t), this.setValues("hwb", e), this; }, greyscale: function () { var t = this.values.rgb, e = 0.3 * t[0] + 0.59 * t[1] + 0.11 * t[2]; return this.setValues("rgb", [e, e, e]), this; }, clearer: function (t) { var e = this.values.alpha; return this.setValues("alpha", e - e * t), this; }, opaquer: function (t) { var e = this.values.alpha; return this.setValues("alpha", e + e * t), this; }, rotate: function (t) { var e = this.values.hsl, n = (e[0] + t) % 360; return ( (e[0] = n < 0 ? 360 + n : n), this.setValues("hsl", e), this ); }, mix: function (t, e) { var n = this, i = t, a = void 0 === e ? 0.5 : e, o = 2 * a - 1, r = n.alpha() - i.alpha(), l = ((o * r == -1 ? o : (o + r) / (1 + o * r)) + 1) / 2, s = 1 - l; return this.rgb( l * n.red() + s * i.red(), l * n.green() + s * i.green(), l * n.blue() + s * i.blue() ).alpha(n.alpha() * a + i.alpha() * (1 - a)); }, toJSON: function () { return this.rgb(); }, clone: function () { var t, e, n = new o(), i = this.values, a = n.values; for (var r in i) i.hasOwnProperty(r) && ((t = i[r]), "[object Array]" === (e = {}.toString.call(t)) ? (a[r] = t.slice(0)) : "[object Number]" === e ? (a[r] = t) : console.error("unexpected color value:", t)); return n; }, }), (o.prototype.spaces = { rgb: ["red", "green", "blue"], hsl: ["hue", "saturation", "lightness"], hsv: ["hue", "saturation", "value"], hwb: ["hue", "whiteness", "blackness"], cmyk: ["cyan", "magenta", "yellow", "black"], }), (o.prototype.maxes = { rgb: [255, 255, 255], hsl: [360, 100, 100], hsv: [360, 100, 100], hwb: [360, 100, 100], cmyk: [100, 100, 100, 100], }), (o.prototype.getValues = function (t) { for (var e = this.values, n = {}, i = 0; i < t.length; i++) n[t.charAt(i)] = e[t][i]; return 1 !== e.alpha && (n.a = e.alpha), n; }), (o.prototype.setValues = function (t, e) { var n, a = this.values, o = this.spaces, r = this.maxes, l = 1; if (((this.valid = !0), "alpha" === t)) l = e; else if (e.length) (a[t] = e.slice(0, t.length)), (l = e[t.length]); else if (void 0 !== e[t.charAt(0)]) { for (n = 0; n < t.length; n++) a[t][n] = e[t.charAt(n)]; l = e.a; } else if (void 0 !== e[o[t][0]]) { var s = o[t]; for (n = 0; n < t.length; n++) a[t][n] = e[s[n]]; l = e.alpha; } if ( ((a.alpha = Math.max( 0, Math.min(1, void 0 === l ? a.alpha : l) )), "alpha" === t) ) return !1; var u; for (n = 0; n < t.length; n++) (u = Math.max(0, Math.min(r[t][n], a[t][n]))), (a[t][n] = Math.round(u)); for (var d in o) d !== t && (a[d] = i[t][d](a[t])); return !0; }), (o.prototype.setSpace = function (t, e) { var n = e[0]; return void 0 === n ? this.getValues(t) : ("number" == typeof n && (n = Array.prototype.slice.call(e)), this.setValues(t, n), this); }), (o.prototype.setChannel = function (t, e, n) { var i = this.values[t]; return void 0 === n ? i[e] : n === i[e] ? this : ((i[e] = n), this.setValues(t, i), this); }), "undefined" != typeof window && (window.Color = o), (e.exports = o); }, { 2: 2, 5: 5 }, ], 4: [ function (t, e, n) { function i(t) { var e, n, i, a = t[0] / 255, o = t[1] / 255, r = t[2] / 255, l = Math.min(a, o, r), s = Math.max(a, o, r), u = s - l; return ( s == l ? (e = 0) : a == s ? (e = (o - r) / u) : o == s ? (e = 2 + (r - a) / u) : r == s && (e = 4 + (a - o) / u), (e = Math.min(60 * e, 360)) < 0 && (e += 360), (i = (l + s) / 2), (n = s == l ? 0 : i <= 0.5 ? u / (s + l) : u / (2 - s - l)), [e, 100 * n, 100 * i] ); } function a(t) { var e, n, i, a = t[0], o = t[1], r = t[2], l = Math.min(a, o, r), s = Math.max(a, o, r), u = s - l; return ( (n = 0 == s ? 0 : ((u / s) * 1e3) / 10), s == l ? (e = 0) : a == s ? (e = (o - r) / u) : o == s ? (e = 2 + (r - a) / u) : r == s && (e = 4 + (a - o) / u), (e = Math.min(60 * e, 360)) < 0 && (e += 360), (i = ((s / 255) * 1e3) / 10), [e, n, i] ); } function o(t) { var e = t[0], n = t[1], a = t[2]; return [ i(t)[0], 100 * ((1 / 255) * Math.min(e, Math.min(n, a))), 100 * (a = 1 - (1 / 255) * Math.max(e, Math.max(n, a))), ]; } function l(t) { var e, n, i, a, o = t[0] / 255, r = t[1] / 255, l = t[2] / 255; return ( (a = Math.min(1 - o, 1 - r, 1 - l)), (e = (1 - o - a) / (1 - a) || 0), (n = (1 - r - a) / (1 - a) || 0), (i = (1 - l - a) / (1 - a) || 0), [100 * e, 100 * n, 100 * i, 100 * a] ); } function s(t) { return C[JSON.stringify(t)]; } function u(t) { var e = t[0] / 255, n = t[1] / 255, i = t[2] / 255; return [ 100 * (0.4124 * (e = e > 0.04045 ? Math.pow((e + 0.055) / 1.055, 2.4) : e / 12.92) + 0.3576 * (n = n > 0.04045 ? Math.pow((n + 0.055) / 1.055, 2.4) : n / 12.92) + 0.1805 * (i = i > 0.04045 ? Math.pow((i + 0.055) / 1.055, 2.4) : i / 12.92)), 100 * (0.2126 * e + 0.7152 * n + 0.0722 * i), 100 * (0.0193 * e + 0.1192 * n + 0.9505 * i), ]; } function d(t) { var e, n, i, a = u(t), o = a[0], r = a[1], l = a[2]; return ( (o /= 95.047), (r /= 100), (l /= 108.883), (o = o > 0.008856 ? Math.pow(o, 1 / 3) : 7.787 * o + 16 / 116), (r = r > 0.008856 ? Math.pow(r, 1 / 3) : 7.787 * r + 16 / 116), (l = l > 0.008856 ? Math.pow(l, 1 / 3) : 7.787 * l + 16 / 116), (e = 116 * r - 16), (n = 500 * (o - r)), (i = 200 * (r - l)), [e, n, i] ); } function c(t) { var e, n, i, a, o, r = t[0] / 360, l = t[1] / 100, s = t[2] / 100; if (0 == l) return (o = 255 * s), [o, o, o]; (e = 2 * s - (n = s < 0.5 ? s * (1 + l) : s + l - s * l)), (a = [0, 0, 0]); for (var u = 0; u < 3; u++) (i = r + (1 / 3) * -(u - 1)) < 0 && i++, i > 1 && i--, (o = 6 * i < 1 ? e + 6 * (n - e) * i : 2 * i < 1 ? n : 3 * i < 2 ? e + (n - e) * (2 / 3 - i) * 6 : e), (a[u] = 255 * o); return a; } function h(t) { var e = t[0] / 60, n = t[1] / 100, i = t[2] / 100, a = Math.floor(e) % 6, o = e - Math.floor(e), r = 255 * i * (1 - n), l = 255 * i * (1 - n * o), s = 255 * i * (1 - n * (1 - o)), i = 255 * i; switch (a) { case 0: return [i, s, r]; case 1: return [l, i, r]; case 2: return [r, i, s]; case 3: return [r, l, i]; case 4: return [s, r, i]; case 5: return [i, r, l]; } } function f(t) { var e, n, i, a, o = t[0] / 360, l = t[1] / 100, s = t[2] / 100, u = l + s; switch ( (u > 1 && ((l /= u), (s /= u)), (e = Math.floor(6 * o)), (n = 1 - s), (i = 6 * o - e), 0 != (1 & e) && (i = 1 - i), (a = l + i * (n - l)), e) ) { default: case 6: case 0: (r = n), (g = a), (b = l); break; case 1: (r = a), (g = n), (b = l); break; case 2: (r = l), (g = n), (b = a); break; case 3: (r = l), (g = a), (b = n); break; case 4: (r = a), (g = l), (b = n); break; case 5: (r = n), (g = l), (b = a); } return [255 * r, 255 * g, 255 * b]; } function p(t) { var e, n, i, a = t[0] / 100, o = t[1] / 100, r = t[2] / 100, l = t[3] / 100; return ( (e = 1 - Math.min(1, a * (1 - l) + l)), (n = 1 - Math.min(1, o * (1 - l) + l)), (i = 1 - Math.min(1, r * (1 - l) + l)), [255 * e, 255 * n, 255 * i] ); } function v(t) { var e, n, i, a = t[0] / 100, o = t[1] / 100, r = t[2] / 100; return ( (e = 3.2406 * a + -1.5372 * o + -0.4986 * r), (n = -0.9689 * a + 1.8758 * o + 0.0415 * r), (i = 0.0557 * a + -0.204 * o + 1.057 * r), (e = e > 0.0031308 ? 1.055 * Math.pow(e, 1 / 2.4) - 0.055 : (e *= 12.92)), (n = n > 0.0031308 ? 1.055 * Math.pow(n, 1 / 2.4) - 0.055 : (n *= 12.92)), (i = i > 0.0031308 ? 1.055 * Math.pow(i, 1 / 2.4) - 0.055 : (i *= 12.92)), (e = Math.min(Math.max(0, e), 1)), (n = Math.min(Math.max(0, n), 1)), (i = Math.min(Math.max(0, i), 1)), [255 * e, 255 * n, 255 * i] ); } function m(t) { var e, n, i, a = t[0], o = t[1], r = t[2]; return ( (a /= 95.047), (o /= 100), (r /= 108.883), (a = a > 0.008856 ? Math.pow(a, 1 / 3) : 7.787 * a + 16 / 116), (o = o > 0.008856 ? Math.pow(o, 1 / 3) : 7.787 * o + 16 / 116), (r = r > 0.008856 ? Math.pow(r, 1 / 3) : 7.787 * r + 16 / 116), (e = 116 * o - 16), (n = 500 * (a - o)), (i = 200 * (o - r)), [e, n, i] ); } function x(t) { var e, n, i, a, o = t[0], r = t[1], l = t[2]; return ( o <= 8 ? (a = ((n = (100 * o) / 903.3) / 100) * 7.787 + 16 / 116) : ((n = 100 * Math.pow((o + 16) / 116, 3)), (a = Math.pow(n / 100, 1 / 3))), (e = e / 95.047 <= 0.008856 ? (e = (95.047 * (r / 500 + a - 16 / 116)) / 7.787) : 95.047 * Math.pow(r / 500 + a, 3)), (i = i / 108.883 <= 0.008859 ? (i = (108.883 * (a - l / 200 - 16 / 116)) / 7.787) : 108.883 * Math.pow(a - l / 200, 3)), [e, n, i] ); } function y(t) { var e, n, i, a = t[0], o = t[1], r = t[2]; return ( (e = Math.atan2(r, o)), (n = (360 * e) / 2 / Math.PI) < 0 && (n += 360), (i = Math.sqrt(o * o + r * r)), [a, i, n] ); } function k(t) { return v(x(t)); } function w(t) { var e, n, i, a = t[0], o = t[1]; return ( (i = (t[2] / 360) * 2 * Math.PI), (e = o * Math.cos(i)), (n = o * Math.sin(i)), [a, e, n] ); } function M(t) { return S[t]; } e.exports = { rgb2hsl: i, rgb2hsv: a, rgb2hwb: o, rgb2cmyk: l, rgb2keyword: s, rgb2xyz: u, rgb2lab: d, rgb2lch: function (t) { return y(d(t)); }, hsl2rgb: c, hsl2hsv: function (t) { var e, n, i = t[0], a = t[1] / 100, o = t[2] / 100; return 0 === o ? [0, 0, 0] : ((o *= 2), (a *= o <= 1 ? o : 2 - o), (n = (o + a) / 2), (e = (2 * a) / (o + a)), [i, 100 * e, 100 * n]); }, hsl2hwb: function (t) { return o(c(t)); }, hsl2cmyk: function (t) { return l(c(t)); }, hsl2keyword: function (t) { return s(c(t)); }, hsv2rgb: h, hsv2hsl: function (t) { var e, n, i = t[0], a = t[1] / 100, o = t[2] / 100; return ( (n = (2 - a) * o), (e = a * o), (e /= n <= 1 ? n : 2 - n), (e = e || 0), (n /= 2), [i, 100 * e, 100 * n] ); }, hsv2hwb: function (t) { return o(h(t)); }, hsv2cmyk: function (t) { return l(h(t)); }, hsv2keyword: function (t) { return s(h(t)); }, hwb2rgb: f, hwb2hsl: function (t) { return i(f(t)); }, hwb2hsv: function (t) { return a(f(t)); }, hwb2cmyk: function (t) { return l(f(t)); }, hwb2keyword: function (t) { return s(f(t)); }, cmyk2rgb: p, cmyk2hsl: function (t) { return i(p(t)); }, cmyk2hsv: function (t) { return a(p(t)); }, cmyk2hwb: function (t) { return o(p(t)); }, cmyk2keyword: function (t) { return s(p(t)); }, keyword2rgb: M, keyword2hsl: function (t) { return i(M(t)); }, keyword2hsv: function (t) { return a(M(t)); }, keyword2hwb: function (t) { return o(M(t)); }, keyword2cmyk: function (t) { return l(M(t)); }, keyword2lab: function (t) { return d(M(t)); }, keyword2xyz: function (t) { return u(M(t)); }, xyz2rgb: v, xyz2lab: m, xyz2lch: function (t) { return y(m(t)); }, lab2xyz: x, lab2rgb: k, lab2lch: y, lch2lab: w, lch2xyz: function (t) { return x(w(t)); }, lch2rgb: function (t) { return k(w(t)); }, }; var S = { aliceblue: [240, 248, 255], antiquewhite: [250, 235, 215], aqua: [0, 255, 255], aquamarine: [127, 255, 212], azure: [240, 255, 255], beige: [245, 245, 220], bisque: [255, 228, 196], black: [0, 0, 0], blanchedalmond: [255, 235, 205], blue: [0, 0, 255], blueviolet: [138, 43, 226], brown: [165, 42, 42], burlywood: [222, 184, 135], cadetblue: [95, 158, 160], chartreuse: [127, 255, 0], chocolate: [210, 105, 30], coral: [255, 127, 80], cornflowerblue: [100, 149, 237], cornsilk: [255, 248, 220], crimson: [220, 20, 60], cyan: [0, 255, 255], darkblue: [0, 0, 139], darkcyan: [0, 139, 139], darkgoldenrod: [184, 134, 11], darkgray: [169, 169, 169], darkgreen: [0, 100, 0], darkgrey: [169, 169, 169], darkkhaki: [189, 183, 107], darkmagenta: [139, 0, 139], darkolivegreen: [85, 107, 47], darkorange: [255, 140, 0], darkorchid: [153, 50, 204], darkred: [139, 0, 0], darksalmon: [233, 150, 122], darkseagreen: [143, 188, 143], darkslateblue: [72, 61, 139], darkslategray: [47, 79, 79], darkslategrey: [47, 79, 79], darkturquoise: [0, 206, 209], darkviolet: [148, 0, 211], deeppink: [255, 20, 147], deepskyblue: [0, 191, 255], dimgray: [105, 105, 105], dimgrey: [105, 105, 105], dodgerblue: [30, 144, 255], firebrick: [178, 34, 34], floralwhite: [255, 250, 240], forestgreen: [34, 139, 34], fuchsia: [255, 0, 255], gainsboro: [220, 220, 220], ghostwhite: [248, 248, 255], gold: [255, 215, 0], goldenrod: [218, 165, 32], gray: [128, 128, 128], green: [0, 128, 0], greenyellow: [173, 255, 47], grey: [128, 128, 128], honeydew: [240, 255, 240], hotpink: [255, 105, 180], indianred: [205, 92, 92], indigo: [75, 0, 130], ivory: [255, 255, 240], khaki: [240, 230, 140], lavender: [230, 230, 250], lavenderblush: [255, 240, 245], lawngreen: [124, 252, 0], lemonchiffon: [255, 250, 205], lightblue: [173, 216, 230], lightcoral: [240, 128, 128], lightcyan: [224, 255, 255], lightgoldenrodyellow: [250, 250, 210], lightgray: [211, 211, 211], lightgreen: [144, 238, 144], lightgrey: [211, 211, 211], lightpink: [255, 182, 193], lightsalmon: [255, 160, 122], lightseagreen: [32, 178, 170], lightskyblue: [135, 206, 250], lightslategray: [119, 136, 153], lightslategrey: [119, 136, 153], lightsteelblue: [176, 196, 222], lightyellow: [255, 255, 224], lime: [0, 255, 0], limegreen: [50, 205, 50], linen: [250, 240, 230], magenta: [255, 0, 255], maroon: [128, 0, 0], mediumaquamarine: [102, 205, 170], mediumblue: [0, 0, 205], mediumorchid: [186, 85, 211], mediumpurple: [147, 112, 219], mediumseagreen: [60, 179, 113], mediumslateblue: [123, 104, 238], mediumspringgreen: [0, 250, 154], mediumturquoise: [72, 209, 204], mediumvioletred: [199, 21, 133], midnightblue: [25, 25, 112], mintcream: [245, 255, 250], mistyrose: [255, 228, 225], moccasin: [255, 228, 181], navajowhite: [255, 222, 173], navy: [0, 0, 128], oldlace: [253, 245, 230], olive: [128, 128, 0], olivedrab: [107, 142, 35], orange: [255, 165, 0], orangered: [255, 69, 0], orchid: [218, 112, 214], palegoldenrod: [238, 232, 170], palegreen: [152, 251, 152], paleturquoise: [175, 238, 238], palevioletred: [219, 112, 147], papayawhip: [255, 239, 213], peachpuff: [255, 218, 185], peru: [205, 133, 63], pink: [255, 192, 203], plum: [221, 160, 221], powderblue: [176, 224, 230], purple: [128, 0, 128], rebeccapurple: [102, 51, 153], red: [255, 0, 0], rosybrown: [188, 143, 143], royalblue: [65, 105, 225], saddlebrown: [139, 69, 19], salmon: [250, 128, 114], sandybrown: [244, 164, 96], seagreen: [46, 139, 87], seashell: [255, 245, 238], sienna: [160, 82, 45], silver: [192, 192, 192], skyblue: [135, 206, 235], slateblue: [106, 90, 205], slategray: [112, 128, 144], slategrey: [112, 128, 144], snow: [255, 250, 250], springgreen: [0, 255, 127], steelblue: [70, 130, 180], tan: [210, 180, 140], teal: [0, 128, 128], thistle: [216, 191, 216], tomato: [255, 99, 71], turquoise: [64, 224, 208], violet: [238, 130, 238], wheat: [245, 222, 179], white: [255, 255, 255], whitesmoke: [245, 245, 245], yellow: [255, 255, 0], yellowgreen: [154, 205, 50], }, C = {}; for (var _ in S) C[JSON.stringify(S[_])] = _; }, {}, ], 5: [ function (t, e, n) { var i = t(4), a = function () { return new u(); }; for (var o in i) { a[o + "Raw"] = (function (t) { return function (e) { return ( "number" == typeof e && (e = Array.prototype.slice.call(arguments)), i[t](e) ); }; })(o); var r = /(\w+)2(\w+)/.exec(o), l = r[1], s = r[2]; (a[l] = a[l] || {})[s] = a[o] = (function (t) { return function (e) { "number" == typeof e && (e = Array.prototype.slice.call(arguments)); var n = i[t](e); if ("string" == typeof n || void 0 === n) return n; for (var a = 0; a < n.length; a++) n[a] = Math.round(n[a]); return n; }; })(o); } var u = function () { this.convs = {}; }; (u.prototype.routeSpace = function (t, e) { var n = e[0]; return void 0 === n ? this.getValues(t) : ("number" == typeof n && (n = Array.prototype.slice.call(e)), this.setValues(t, n)); }), (u.prototype.setValues = function (t, e) { return ( (this.space = t), (this.convs = {}), (this.convs[t] = e), this ); }), (u.prototype.getValues = function (t) { var e = this.convs[t]; if (!e) { var n = this.space, i = this.convs[n]; (e = a[n][t](i)), (this.convs[t] = e); } return e; }), ["rgb", "hsl", "hsv", "cmyk", "keyword"].forEach(function (t) { u.prototype[t] = function (e) { return this.routeSpace(t, arguments); }; }), (e.exports = a); }, { 4: 4 }, ], 6: [ function (t, e, n) { "use strict"; e.exports = { aliceblue: [240, 248, 255], antiquewhite: [250, 235, 215], aqua: [0, 255, 255], aquamarine: [127, 255, 212], azure: [240, 255, 255], beige: [245, 245, 220], bisque: [255, 228, 196], black: [0, 0, 0], blanchedalmond: [255, 235, 205], blue: [0, 0, 255], blueviolet: [138, 43, 226], brown: [165, 42, 42], burlywood: [222, 184, 135], cadetblue: [95, 158, 160], chartreuse: [127, 255, 0], chocolate: [210, 105, 30], coral: [255, 127, 80], cornflowerblue: [100, 149, 237], cornsilk: [255, 248, 220], crimson: [220, 20, 60], cyan: [0, 255, 255], darkblue: [0, 0, 139], darkcyan: [0, 139, 139], darkgoldenrod: [184, 134, 11], darkgray: [169, 169, 169], darkgreen: [0, 100, 0], darkgrey: [169, 169, 169], darkkhaki: [189, 183, 107], darkmagenta: [139, 0, 139], darkolivegreen: [85, 107, 47], darkorange: [255, 140, 0], darkorchid: [153, 50, 204], darkred: [139, 0, 0], darksalmon: [233, 150, 122], darkseagreen: [143, 188, 143], darkslateblue: [72, 61, 139], darkslategray: [47, 79, 79], darkslategrey: [47, 79, 79], darkturquoise: [0, 206, 209], darkviolet: [148, 0, 211], deeppink: [255, 20, 147], deepskyblue: [0, 191, 255], dimgray: [105, 105, 105], dimgrey: [105, 105, 105], dodgerblue: [30, 144, 255], firebrick: [178, 34, 34], floralwhite: [255, 250, 240], forestgreen: [34, 139, 34], fuchsia: [255, 0, 255], gainsboro: [220, 220, 220], ghostwhite: [248, 248, 255], gold: [255, 215, 0], goldenrod: [218, 165, 32], gray: [128, 128, 128], green: [0, 128, 0], greenyellow: [173, 255, 47], grey: [128, 128, 128], honeydew: [240, 255, 240], hotpink: [255, 105, 180], indianred: [205, 92, 92], indigo: [75, 0, 130], ivory: [255, 255, 240], khaki: [240, 230, 140], lavender: [230, 230, 250], lavenderblush: [255, 240, 245], lawngreen: [124, 252, 0], lemonchiffon: [255, 250, 205], lightblue: [173, 216, 230], lightcoral: [240, 128, 128], lightcyan: [224, 255, 255], lightgoldenrodyellow: [250, 250, 210], lightgray: [211, 211, 211], lightgreen: [144, 238, 144], lightgrey: [211, 211, 211], lightpink: [255, 182, 193], lightsalmon: [255, 160, 122], lightseagreen: [32, 178, 170], lightskyblue: [135, 206, 250], lightslategray: [119, 136, 153], lightslategrey: [119, 136, 153], lightsteelblue: [176, 196, 222], lightyellow: [255, 255, 224], lime: [0, 255, 0], limegreen: [50, 205, 50], linen: [250, 240, 230], magenta: [255, 0, 255], maroon: [128, 0, 0], mediumaquamarine: [102, 205, 170], mediumblue: [0, 0, 205], mediumorchid: [186, 85, 211], mediumpurple: [147, 112, 219], mediumseagreen: [60, 179, 113], mediumslateblue: [123, 104, 238], mediumspringgreen: [0, 250, 154], mediumturquoise: [72, 209, 204], mediumvioletred: [199, 21, 133], midnightblue: [25, 25, 112], mintcream: [245, 255, 250], mistyrose: [255, 228, 225], moccasin: [255, 228, 181], navajowhite: [255, 222, 173], navy: [0, 0, 128], oldlace: [253, 245, 230], olive: [128, 128, 0], olivedrab: [107, 142, 35], orange: [255, 165, 0], orangered: [255, 69, 0], orchid: [218, 112, 214], palegoldenrod: [238, 232, 170], palegreen: [152, 251, 152], paleturquoise: [175, 238, 238], palevioletred: [219, 112, 147], papayawhip: [255, 239, 213], peachpuff: [255, 218, 185], peru: [205, 133, 63], pink: [255, 192, 203], plum: [221, 160, 221], powderblue: [176, 224, 230], purple: [128, 0, 128], rebeccapurple: [102, 51, 153], red: [255, 0, 0], rosybrown: [188, 143, 143], royalblue: [65, 105, 225], saddlebrown: [139, 69, 19], salmon: [250, 128, 114], sandybrown: [244, 164, 96], seagreen: [46, 139, 87], seashell: [255, 245, 238], sienna: [160, 82, 45], silver: [192, 192, 192], skyblue: [135, 206, 235], slateblue: [106, 90, 205], slategray: [112, 128, 144], slategrey: [112, 128, 144], snow: [255, 250, 250], springgreen: [0, 255, 127], steelblue: [70, 130, 180], tan: [210, 180, 140], teal: [0, 128, 128], thistle: [216, 191, 216], tomato: [255, 99, 71], turquoise: [64, 224, 208], violet: [238, 130, 238], wheat: [245, 222, 179], white: [255, 255, 255], whitesmoke: [245, 245, 245], yellow: [255, 255, 0], yellowgreen: [154, 205, 50], }; }, {}, ], 7: [ function (t, e, n) { var i = t(29)(); (i.helpers = t(45)), t(27)(i), (i.defaults = t(25)), (i.Element = t(26)), (i.elements = t(40)), (i.Interaction = t(28)), (i.platform = t(48)), t(31)(i), t(22)(i), t(23)(i), t(24)(i), t(30)(i), t(33)(i), t(32)(i), t(35)(i), t(54)(i), t(52)(i), t(53)(i), t(55)(i), t(56)(i), t(57)(i), t(15)(i), t(16)(i), t(17)(i), t(18)(i), t(19)(i), t(20)(i), t(21)(i), t(8)(i), t(9)(i), t(10)(i), t(11)(i), t(12)(i), t(13)(i), t(14)(i); var a = []; a.push(t(49)(i), t(50)(i), t(51)(i)), i.plugins.register(a), i.platform.initialize(), (e.exports = i), "undefined" != typeof window && (window.Chart = i), (i.canvasHelpers = i.helpers.canvas); }, { 10: 10, 11: 11, 12: 12, 13: 13, 14: 14, 15: 15, 16: 16, 17: 17, 18: 18, 19: 19, 20: 20, 21: 21, 22: 22, 23: 23, 24: 24, 25: 25, 26: 26, 27: 27, 28: 28, 29: 29, 30: 30, 31: 31, 32: 32, 33: 33, 35: 35, 40: 40, 45: 45, 48: 48, 49: 49, 50: 50, 51: 51, 52: 52, 53: 53, 54: 54, 55: 55, 56: 56, 57: 57, 8: 8, 9: 9, }, ], 8: [ function (t, e, n) { "use strict"; e.exports = function (t) { t.Bar = function (e, n) { return (n.type = "bar"), new t(e, n); }; }; }, {}, ], 9: [ function (t, e, n) { "use strict"; e.exports = function (t) { t.Bubble = function (e, n) { return (n.type = "bubble"), new t(e, n); }; }; }, {}, ], 10: [ function (t, e, n) { "use strict"; e.exports = function (t) { t.Doughnut = function (e, n) { return (n.type = "doughnut"), new t(e, n); }; }; }, {}, ], 11: [ function (t, e, n) { "use strict"; e.exports = function (t) { t.Line = function (e, n) { return (n.type = "line"), new t(e, n); }; }; }, {}, ], 12: [ function (t, e, n) { "use strict"; e.exports = function (t) { t.PolarArea = function (e, n) { return (n.type = "polarArea"), new t(e, n); }; }; }, {}, ], 13: [ function (t, e, n) { "use strict"; e.exports = function (t) { t.Radar = function (e, n) { return (n.type = "radar"), new t(e, n); }; }; }, {}, ], 14: [ function (t, e, n) { "use strict"; e.exports = function (t) { t.Scatter = function (e, n) { return (n.type = "scatter"), new t(e, n); }; }; }, {}, ], 15: [ function (t, e, n) { "use strict"; var i = t(25), a = t(40), o = t(45); i._set("bar", { hover: { mode: "label" }, scales: { xAxes: [ { type: "category", categoryPercentage: 0.8, barPercentage: 0.9, offset: !0, gridLines: { offsetGridLines: !0 }, }, ], yAxes: [{ type: "linear" }], }, }), i._set("horizontalBar", { hover: { mode: "index", axis: "y" }, scales: { xAxes: [{ type: "linear", position: "bottom" }], yAxes: [ { position: "left", type: "category", categoryPercentage: 0.8, barPercentage: 0.9, offset: !0, gridLines: { offsetGridLines: !0 }, }, ], }, elements: { rectangle: { borderSkipped: "left" } }, tooltips: { callbacks: { title: function (t, e) { var n = ""; return ( t.length > 0 && (t[0].yLabel ? (n = t[0].yLabel) : e.labels.length > 0 && t[0].index < e.labels.length && (n = e.labels[t[0].index])), n ); }, label: function (t, e) { return ( (e.datasets[t.datasetIndex].label || "") + ": " + t.xLabel ); }, }, mode: "index", axis: "y", }, }), (e.exports = function (t) { (t.controllers.bar = t.DatasetController.extend({ dataElementType: a.Rectangle, initialize: function () { var e, n = this; t.DatasetController.prototype.initialize.apply(n, arguments), ((e = n.getMeta()).stack = n.getDataset().stack), (e.bar = !0); }, update: function (t) { var e, n, i = this, a = i.getMeta().data; for (i._ruler = i.getRuler(), e = 0, n = a.length; e < n; ++e) i.updateElement(a[e], e, t); }, updateElement: function (t, e, n) { var i = this, a = i.chart, r = i.getMeta(), l = i.getDataset(), s = t.custom || {}, u = a.options.elements.rectangle; (t._xScale = i.getScaleForId(r.xAxisID)), (t._yScale = i.getScaleForId(r.yAxisID)), (t._datasetIndex = i.index), (t._index = e), (t._model = { datasetLabel: l.label, label: a.data.labels[e], borderSkipped: s.borderSkipped ? s.borderSkipped : u.borderSkipped, backgroundColor: s.backgroundColor ? s.backgroundColor : o.valueAtIndexOrDefault( l.backgroundColor, e, u.backgroundColor ), borderColor: s.borderColor ? s.borderColor : o.valueAtIndexOrDefault( l.borderColor, e, u.borderColor ), borderWidth: s.borderWidth ? s.borderWidth : o.valueAtIndexOrDefault( l.borderWidth, e, u.borderWidth ), }), i.updateElementGeometry(t, e, n), t.pivot(); }, updateElementGeometry: function (t, e, n) { var i = this, a = t._model, o = i.getValueScale(), r = o.getBasePixel(), l = o.isHorizontal(), s = i._ruler || i.getRuler(), u = i.calculateBarValuePixels(i.index, e), d = i.calculateBarIndexPixels(i.index, e, s); (a.horizontal = l), (a.base = n ? r : u.base), (a.x = l ? (n ? r : u.head) : d.center), (a.y = l ? d.center : n ? r : u.head), (a.height = l ? d.size : void 0), (a.width = l ? void 0 : d.size); }, getValueScaleId: function () { return this.getMeta().yAxisID; }, getIndexScaleId: function () { return this.getMeta().xAxisID; }, getValueScale: function () { return this.getScaleForId(this.getValueScaleId()); }, getIndexScale: function () { return this.getScaleForId(this.getIndexScaleId()); }, getStackCount: function (t) { var e, n, i = this, a = i.chart, o = i.getIndexScale().options.stacked, r = void 0 === t ? a.data.datasets.length : t + 1, l = []; for (e = 0; e < r; ++e) (n = a.getDatasetMeta(e)).bar && a.isDatasetVisible(e) && (!1 === o || (!0 === o && -1 === l.indexOf(n.stack)) || (void 0 === o && (void 0 === n.stack || -1 === l.indexOf(n.stack)))) && l.push(n.stack); return l.length; }, getStackIndex: function (t) { return this.getStackCount(t) - 1; }, getRuler: function () { var t, e, n = this, i = n.getIndexScale(), a = n.getStackCount(), o = n.index, r = [], l = i.isHorizontal(), s = l ? i.left : i.top, u = s + (l ? i.width : i.height); for (t = 0, e = n.getMeta().data.length; t < e; ++t) r.push(i.getPixelForValue(null, t, o)); return { pixels: r, start: s, end: u, stackCount: a, scale: i, }; }, calculateBarValuePixels: function (t, e) { var n, i, a, o, r, l, s = this, u = s.chart, d = s.getMeta(), c = s.getValueScale(), h = u.data.datasets, f = c.getRightValue(h[t].data[e]), g = c.options.stacked, p = d.stack, v = 0; if (g || (void 0 === g && void 0 !== p)) for (n = 0; n < t; ++n) (i = u.getDatasetMeta(n)).bar && i.stack === p && i.controller.getValueScaleId() === c.id && u.isDatasetVisible(n) && ((a = c.getRightValue(h[n].data[e])), ((f < 0 && a < 0) || (f >= 0 && a > 0)) && (v += a)); return ( (o = c.getPixelForValue(v)), (r = c.getPixelForValue(v + f)), (l = (r - o) / 2), { size: l, base: o, head: r, center: r + l / 2 } ); }, calculateBarIndexPixels: function (t, e, n) { var i, a, r, l, s, u, d = this, c = n.scale.options, h = d.getStackIndex(t), f = n.pixels, g = f[e], p = f.length, v = n.start, m = n.end; return ( 1 === p ? ((i = g > v ? g - v : m - g), (a = g < m ? m - g : g - v)) : (e > 0 && ((i = (g - f[e - 1]) / 2), e === p - 1 && (a = i)), e < p - 1 && ((a = (f[e + 1] - g) / 2), 0 === e && (i = a))), (r = i * c.categoryPercentage), (l = a * c.categoryPercentage), (s = (r + l) / n.stackCount), (u = s * c.barPercentage), (u = Math.min( o.valueOrDefault(c.barThickness, u), o.valueOrDefault(c.maxBarThickness, 1 / 0) )), (g -= r), (g += s * h), (g += (s - u) / 2), { size: u, base: g, head: g + u, center: g + u / 2 } ); }, draw: function () { var t = this, e = t.chart, n = t.getValueScale(), i = t.getMeta().data, a = t.getDataset(), r = i.length, l = 0; for (o.canvas.clipArea(e.ctx, e.chartArea); l < r; ++l) isNaN(n.getRightValue(a.data[l])) || i[l].draw(); o.canvas.unclipArea(e.ctx); }, setHoverStyle: function (t) { var e = this.chart.data.datasets[t._datasetIndex], n = t._index, i = t.custom || {}, a = t._model; (a.backgroundColor = i.hoverBackgroundColor ? i.hoverBackgroundColor : o.valueAtIndexOrDefault( e.hoverBackgroundColor, n, o.getHoverColor(a.backgroundColor) )), (a.borderColor = i.hoverBorderColor ? i.hoverBorderColor : o.valueAtIndexOrDefault( e.hoverBorderColor, n, o.getHoverColor(a.borderColor) )), (a.borderWidth = i.hoverBorderWidth ? i.hoverBorderWidth : o.valueAtIndexOrDefault( e.hoverBorderWidth, n, a.borderWidth )); }, removeHoverStyle: function (t) { var e = this.chart.data.datasets[t._datasetIndex], n = t._index, i = t.custom || {}, a = t._model, r = this.chart.options.elements.rectangle; (a.backgroundColor = i.backgroundColor ? i.backgroundColor : o.valueAtIndexOrDefault( e.backgroundColor, n, r.backgroundColor )), (a.borderColor = i.borderColor ? i.borderColor : o.valueAtIndexOrDefault( e.borderColor, n, r.borderColor )), (a.borderWidth = i.borderWidth ? i.borderWidth : o.valueAtIndexOrDefault( e.borderWidth, n, r.borderWidth )); }, })), (t.controllers.horizontalBar = t.controllers.bar.extend({ getValueScaleId: function () { return this.getMeta().xAxisID; }, getIndexScaleId: function () { return this.getMeta().yAxisID; }, })); }); }, { 25: 25, 40: 40, 45: 45 }, ], 16: [ function (t, e, n) { "use strict"; var i = t(25), a = t(40), o = t(45); i._set("bubble", { hover: { mode: "single" }, scales: { xAxes: [{ type: "linear", position: "bottom", id: "x-axis-0" }], yAxes: [{ type: "linear", position: "left", id: "y-axis-0" }], }, tooltips: { callbacks: { title: function () { return ""; }, label: function (t, e) { var n = e.datasets[t.datasetIndex].label || "", i = e.datasets[t.datasetIndex].data[t.index]; return ( n + ": (" + t.xLabel + ", " + t.yLabel + ", " + i.r + ")" ); }, }, }, }), (e.exports = function (t) { t.controllers.bubble = t.DatasetController.extend({ dataElementType: a.Point, update: function (t) { var e = this, n = e.getMeta().data; o.each(n, function (n, i) { e.updateElement(n, i, t); }); }, updateElement: function (t, e, n) { var i = this, a = i.getMeta(), o = t.custom || {}, r = i.getScaleForId(a.xAxisID), l = i.getScaleForId(a.yAxisID), s = i._resolveElementOptions(t, e), u = i.getDataset().data[e], d = i.index, c = n ? r.getPixelForDecimal(0.5) : r.getPixelForValue( "object" == typeof u ? u : NaN, e, d ), h = n ? l.getBasePixel() : l.getPixelForValue(u, e, d); (t._xScale = r), (t._yScale = l), (t._options = s), (t._datasetIndex = d), (t._index = e), (t._model = { backgroundColor: s.backgroundColor, borderColor: s.borderColor, borderWidth: s.borderWidth, hitRadius: s.hitRadius, pointStyle: s.pointStyle, radius: n ? 0 : s.radius, skip: o.skip || isNaN(c) || isNaN(h), x: c, y: h, }), t.pivot(); }, setHoverStyle: function (t) { var e = t._model, n = t._options; (e.backgroundColor = o.valueOrDefault( n.hoverBackgroundColor, o.getHoverColor(n.backgroundColor) )), (e.borderColor = o.valueOrDefault( n.hoverBorderColor, o.getHoverColor(n.borderColor) )), (e.borderWidth = o.valueOrDefault( n.hoverBorderWidth, n.borderWidth )), (e.radius = n.radius + n.hoverRadius); }, removeHoverStyle: function (t) { var e = t._model, n = t._options; (e.backgroundColor = n.backgroundColor), (e.borderColor = n.borderColor), (e.borderWidth = n.borderWidth), (e.radius = n.radius); }, _resolveElementOptions: function (t, e) { var n, i, a, r = this, l = r.chart, s = l.data.datasets[r.index], u = t.custom || {}, d = l.options.elements.point, c = o.options.resolve, h = s.data[e], f = {}, g = { chart: l, dataIndex: e, dataset: s, datasetIndex: r.index, }, p = [ "backgroundColor", "borderColor", "borderWidth", "hoverBackgroundColor", "hoverBorderColor", "hoverBorderWidth", "hoverRadius", "hitRadius", "pointStyle", ]; for (n = 0, i = p.length; n < i; ++n) f[(a = p[n])] = c([u[a], s[a], d[a]], g, e); return ( (f.radius = c( [u.radius, h ? h.r : void 0, s.radius, d.radius], g, e )), f ); }, }); }); }, { 25: 25, 40: 40, 45: 45 }, ], 17: [ function (t, e, n) { "use strict"; var i = t(25), a = t(40), o = t(45); i._set("doughnut", { animation: { animateRotate: !0, animateScale: !1 }, hover: { mode: "single" }, legendCallback: function (t) { var e = []; e.push('"), e.join(""); }, legend: { labels: { generateLabels: function (t) { var e = t.data; return e.labels.length && e.datasets.length ? e.labels.map(function (n, i) { var a = t.getDatasetMeta(0), r = e.datasets[0], l = a.data[i], s = (l && l.custom) || {}, u = o.valueAtIndexOrDefault, d = t.options.elements.arc; return { text: n, fillStyle: s.backgroundColor ? s.backgroundColor : u(r.backgroundColor, i, d.backgroundColor), strokeStyle: s.borderColor ? s.borderColor : u(r.borderColor, i, d.borderColor), lineWidth: s.borderWidth ? s.borderWidth : u(r.borderWidth, i, d.borderWidth), hidden: isNaN(r.data[i]) || a.data[i].hidden, index: i, }; }) : []; }, }, onClick: function (t, e) { var n, i, a, o = e.index, r = this.chart; for (n = 0, i = (r.data.datasets || []).length; n < i; ++n) (a = r.getDatasetMeta(n)).data[o] && (a.data[o].hidden = !a.data[o].hidden); r.update(); }, }, cutoutPercentage: 50, rotation: -0.5 * Math.PI, circumference: 2 * Math.PI, tooltips: { callbacks: { title: function () { return ""; }, label: function (t, e) { var n = e.labels[t.index], i = ": " + e.datasets[t.datasetIndex].data[t.index]; return o.isArray(n) ? ((n = n.slice())[0] += i) : (n += i), n; }, }, }, }), i._set("pie", o.clone(i.doughnut)), i._set("pie", { cutoutPercentage: 0 }), (e.exports = function (t) { t.controllers.doughnut = t.controllers.pie = t.DatasetController.extend({ dataElementType: a.Arc, linkScales: o.noop, getRingIndex: function (t) { for (var e = 0, n = 0; n < t; ++n) this.chart.isDatasetVisible(n) && ++e; return e; }, update: function (t) { var e = this, n = e.chart, i = n.chartArea, a = n.options, r = a.elements.arc, l = i.right - i.left - r.borderWidth, s = i.bottom - i.top - r.borderWidth, u = Math.min(l, s), d = { x: 0, y: 0 }, c = e.getMeta(), h = a.cutoutPercentage, f = a.circumference; if (f < 2 * Math.PI) { var g = a.rotation % (2 * Math.PI), p = (g += 2 * Math.PI * (g >= Math.PI ? -1 : g < -Math.PI ? 1 : 0)) + f, v = { x: Math.cos(g), y: Math.sin(g) }, m = { x: Math.cos(p), y: Math.sin(p) }, b = (g <= 0 && p >= 0) || (g <= 2 * Math.PI && 2 * Math.PI <= p), x = (g <= 0.5 * Math.PI && 0.5 * Math.PI <= p) || (g <= 2.5 * Math.PI && 2.5 * Math.PI <= p), y = (g <= -Math.PI && -Math.PI <= p) || (g <= Math.PI && Math.PI <= p), k = (g <= 0.5 * -Math.PI && 0.5 * -Math.PI <= p) || (g <= 1.5 * Math.PI && 1.5 * Math.PI <= p), w = h / 100, M = { x: y ? -1 : Math.min( v.x * (v.x < 0 ? 1 : w), m.x * (m.x < 0 ? 1 : w) ), y: k ? -1 : Math.min( v.y * (v.y < 0 ? 1 : w), m.y * (m.y < 0 ? 1 : w) ), }, S = { x: b ? 1 : Math.max( v.x * (v.x > 0 ? 1 : w), m.x * (m.x > 0 ? 1 : w) ), y: x ? 1 : Math.max( v.y * (v.y > 0 ? 1 : w), m.y * (m.y > 0 ? 1 : w) ), }, C = { width: 0.5 * (S.x - M.x), height: 0.5 * (S.y - M.y), }; (u = Math.min(l / C.width, s / C.height)), (d = { x: -0.5 * (S.x + M.x), y: -0.5 * (S.y + M.y) }); } (n.borderWidth = e.getMaxBorderWidth(c.data)), (n.outerRadius = Math.max((u - n.borderWidth) / 2, 0)), (n.innerRadius = Math.max( h ? (n.outerRadius / 100) * h : 0, 0 )), (n.radiusLength = (n.outerRadius - n.innerRadius) / n.getVisibleDatasetCount()), (n.offsetX = d.x * n.outerRadius), (n.offsetY = d.y * n.outerRadius), (c.total = e.calculateTotal()), (e.outerRadius = n.outerRadius - n.radiusLength * e.getRingIndex(e.index)), (e.innerRadius = Math.max( e.outerRadius - n.radiusLength, 0 )), o.each(c.data, function (n, i) { e.updateElement(n, i, t); }); }, updateElement: function (t, e, n) { var i = this, a = i.chart, r = a.chartArea, l = a.options, s = l.animation, u = (r.left + r.right) / 2, d = (r.top + r.bottom) / 2, c = l.rotation, h = l.rotation, f = i.getDataset(), g = n && s.animateRotate ? 0 : t.hidden ? 0 : i.calculateCircumference(f.data[e]) * (l.circumference / (2 * Math.PI)), p = n && s.animateScale ? 0 : i.innerRadius, v = n && s.animateScale ? 0 : i.outerRadius, m = o.valueAtIndexOrDefault; o.extend(t, { _datasetIndex: i.index, _index: e, _model: { x: u + a.offsetX, y: d + a.offsetY, startAngle: c, endAngle: h, circumference: g, outerRadius: v, innerRadius: p, label: m(f.label, e, a.data.labels[e]), }, }); var b = t._model; this.removeHoverStyle(t), (n && s.animateRotate) || ((b.startAngle = 0 === e ? l.rotation : i.getMeta().data[e - 1]._model.endAngle), (b.endAngle = b.startAngle + b.circumference)), t.pivot(); }, removeHoverStyle: function (e) { t.DatasetController.prototype.removeHoverStyle.call( this, e, this.chart.options.elements.arc ); }, calculateTotal: function () { var t, e = this.getDataset(), n = this.getMeta(), i = 0; return ( o.each(n.data, function (n, a) { (t = e.data[a]), isNaN(t) || n.hidden || (i += Math.abs(t)); }), i ); }, calculateCircumference: function (t) { var e = this.getMeta().total; return e > 0 && !isNaN(t) ? 2 * Math.PI * (t / e) : 0; }, getMaxBorderWidth: function (t) { for ( var e, n, i = 0, a = this.index, o = t.length, r = 0; r < o; r++ ) (e = t[r]._model ? t[r]._model.borderWidth : 0), (i = (n = t[r]._chart ? t[r]._chart.config.data.datasets[a] .hoverBorderWidth : 0) > (i = e > i ? e : i) ? n : i); return i; }, }); }); }, { 25: 25, 40: 40, 45: 45 }, ], 18: [ function (t, e, n) { "use strict"; var i = t(25), a = t(40), o = t(45); i._set("line", { showLines: !0, spanGaps: !1, hover: { mode: "label" }, scales: { xAxes: [{ type: "category", id: "x-axis-0" }], yAxes: [{ type: "linear", id: "y-axis-0" }], }, }), (e.exports = function (t) { function e(t, e) { return o.valueOrDefault(t.showLine, e.showLines); } t.controllers.line = t.DatasetController.extend({ datasetElementType: a.Line, dataElementType: a.Point, update: function (t) { var n, i, a, r = this, l = r.getMeta(), s = l.dataset, u = l.data || [], d = r.chart.options, c = d.elements.line, h = r.getScaleForId(l.yAxisID), f = r.getDataset(), g = e(f, d); for ( g && ((a = s.custom || {}), void 0 !== f.tension && void 0 === f.lineTension && (f.lineTension = f.tension), (s._scale = h), (s._datasetIndex = r.index), (s._children = u), (s._model = { spanGaps: f.spanGaps ? f.spanGaps : d.spanGaps, tension: a.tension ? a.tension : o.valueOrDefault(f.lineTension, c.tension), backgroundColor: a.backgroundColor ? a.backgroundColor : f.backgroundColor || c.backgroundColor, borderWidth: a.borderWidth ? a.borderWidth : f.borderWidth || c.borderWidth, borderColor: a.borderColor ? a.borderColor : f.borderColor || c.borderColor, borderCapStyle: a.borderCapStyle ? a.borderCapStyle : f.borderCapStyle || c.borderCapStyle, borderDash: a.borderDash ? a.borderDash : f.borderDash || c.borderDash, borderDashOffset: a.borderDashOffset ? a.borderDashOffset : f.borderDashOffset || c.borderDashOffset, borderJoinStyle: a.borderJoinStyle ? a.borderJoinStyle : f.borderJoinStyle || c.borderJoinStyle, fill: a.fill ? a.fill : void 0 !== f.fill ? f.fill : c.fill, steppedLine: a.steppedLine ? a.steppedLine : o.valueOrDefault(f.steppedLine, c.stepped), cubicInterpolationMode: a.cubicInterpolationMode ? a.cubicInterpolationMode : o.valueOrDefault( f.cubicInterpolationMode, c.cubicInterpolationMode ), }), s.pivot()), n = 0, i = u.length; n < i; ++n ) r.updateElement(u[n], n, t); for ( g && 0 !== s._model.tension && r.updateBezierControlPoints(), n = 0, i = u.length; n < i; ++n ) u[n].pivot(); }, getPointBackgroundColor: function (t, e) { var n = this.chart.options.elements.point.backgroundColor, i = this.getDataset(), a = t.custom || {}; return ( a.backgroundColor ? (n = a.backgroundColor) : i.pointBackgroundColor ? (n = o.valueAtIndexOrDefault( i.pointBackgroundColor, e, n )) : i.backgroundColor && (n = i.backgroundColor), n ); }, getPointBorderColor: function (t, e) { var n = this.chart.options.elements.point.borderColor, i = this.getDataset(), a = t.custom || {}; return ( a.borderColor ? (n = a.borderColor) : i.pointBorderColor ? (n = o.valueAtIndexOrDefault(i.pointBorderColor, e, n)) : i.borderColor && (n = i.borderColor), n ); }, getPointBorderWidth: function (t, e) { var n = this.chart.options.elements.point.borderWidth, i = this.getDataset(), a = t.custom || {}; return ( isNaN(a.borderWidth) ? !isNaN(i.pointBorderWidth) || o.isArray(i.pointBorderWidth) ? (n = o.valueAtIndexOrDefault( i.pointBorderWidth, e, n )) : isNaN(i.borderWidth) || (n = i.borderWidth) : (n = a.borderWidth), n ); }, updateElement: function (t, e, n) { var i, a, r = this, l = r.getMeta(), s = t.custom || {}, u = r.getDataset(), d = r.index, c = u.data[e], h = r.getScaleForId(l.yAxisID), f = r.getScaleForId(l.xAxisID), g = r.chart.options.elements.point; void 0 !== u.radius && void 0 === u.pointRadius && (u.pointRadius = u.radius), void 0 !== u.hitRadius && void 0 === u.pointHitRadius && (u.pointHitRadius = u.hitRadius), (i = f.getPixelForValue( "object" == typeof c ? c : NaN, e, d )), (a = n ? h.getBasePixel() : r.calculatePointY(c, e, d)), (t._xScale = f), (t._yScale = h), (t._datasetIndex = d), (t._index = e), (t._model = { x: i, y: a, skip: s.skip || isNaN(i) || isNaN(a), radius: s.radius || o.valueAtIndexOrDefault(u.pointRadius, e, g.radius), pointStyle: s.pointStyle || o.valueAtIndexOrDefault(u.pointStyle, e, g.pointStyle), backgroundColor: r.getPointBackgroundColor(t, e), borderColor: r.getPointBorderColor(t, e), borderWidth: r.getPointBorderWidth(t, e), tension: l.dataset._model ? l.dataset._model.tension : 0, steppedLine: !!l.dataset._model && l.dataset._model.steppedLine, hitRadius: s.hitRadius || o.valueAtIndexOrDefault( u.pointHitRadius, e, g.hitRadius ), }); }, calculatePointY: function (t, e, n) { var i, a, o, r = this, l = r.chart, s = r.getMeta(), u = r.getScaleForId(s.yAxisID), d = 0, c = 0; if (u.options.stacked) { for (i = 0; i < n; i++) if ( ((a = l.data.datasets[i]), "line" === (o = l.getDatasetMeta(i)).type && o.yAxisID === u.id && l.isDatasetVisible(i)) ) { var h = Number(u.getRightValue(a.data[e])); h < 0 ? (c += h || 0) : (d += h || 0); } var f = Number(u.getRightValue(t)); return f < 0 ? u.getPixelForValue(c + f) : u.getPixelForValue(d + f); } return u.getPixelForValue(t); }, updateBezierControlPoints: function () { function t(t, e, n) { return Math.max(Math.min(t, n), e); } var e, n, i, a, r = this, l = r.getMeta(), s = r.chart.chartArea, u = l.data || []; if ( (l.dataset._model.spanGaps && (u = u.filter(function (t) { return !t._model.skip; })), "monotone" === l.dataset._model.cubicInterpolationMode) ) o.splineCurveMonotone(u); else for (e = 0, n = u.length; e < n; ++e) (i = u[e]._model), (a = o.splineCurve( o.previousItem(u, e)._model, i, o.nextItem(u, e)._model, l.dataset._model.tension )), (i.controlPointPreviousX = a.previous.x), (i.controlPointPreviousY = a.previous.y), (i.controlPointNextX = a.next.x), (i.controlPointNextY = a.next.y); if (r.chart.options.elements.line.capBezierPoints) for (e = 0, n = u.length; e < n; ++e) ((i = u[e]._model).controlPointPreviousX = t( i.controlPointPreviousX, s.left, s.right )), (i.controlPointPreviousY = t( i.controlPointPreviousY, s.top, s.bottom )), (i.controlPointNextX = t( i.controlPointNextX, s.left, s.right )), (i.controlPointNextY = t( i.controlPointNextY, s.top, s.bottom )); }, draw: function () { var t = this, n = t.chart, i = t.getMeta(), a = i.data || [], r = n.chartArea, l = a.length, s = 0; for ( o.canvas.clipArea(n.ctx, r), e(t.getDataset(), n.options) && i.dataset.draw(), o.canvas.unclipArea(n.ctx); s < l; ++s ) a[s].draw(r); }, setHoverStyle: function (t) { var e = this.chart.data.datasets[t._datasetIndex], n = t._index, i = t.custom || {}, a = t._model; (a.radius = i.hoverRadius || o.valueAtIndexOrDefault( e.pointHoverRadius, n, this.chart.options.elements.point.hoverRadius )), (a.backgroundColor = i.hoverBackgroundColor || o.valueAtIndexOrDefault( e.pointHoverBackgroundColor, n, o.getHoverColor(a.backgroundColor) )), (a.borderColor = i.hoverBorderColor || o.valueAtIndexOrDefault( e.pointHoverBorderColor, n, o.getHoverColor(a.borderColor) )), (a.borderWidth = i.hoverBorderWidth || o.valueAtIndexOrDefault( e.pointHoverBorderWidth, n, a.borderWidth )); }, removeHoverStyle: function (t) { var e = this, n = e.chart.data.datasets[t._datasetIndex], i = t._index, a = t.custom || {}, r = t._model; void 0 !== n.radius && void 0 === n.pointRadius && (n.pointRadius = n.radius), (r.radius = a.radius || o.valueAtIndexOrDefault( n.pointRadius, i, e.chart.options.elements.point.radius )), (r.backgroundColor = e.getPointBackgroundColor(t, i)), (r.borderColor = e.getPointBorderColor(t, i)), (r.borderWidth = e.getPointBorderWidth(t, i)); }, }); }); }, { 25: 25, 40: 40, 45: 45 }, ], 19: [ function (t, e, n) { "use strict"; var i = t(25), a = t(40), o = t(45); i._set("polarArea", { scale: { type: "radialLinear", angleLines: { display: !1 }, gridLines: { circular: !0 }, pointLabels: { display: !1 }, ticks: { beginAtZero: !0 }, }, animation: { animateRotate: !0, animateScale: !0 }, startAngle: -0.5 * Math.PI, legendCallback: function (t) { var e = []; e.push('"), e.join(""); }, legend: { labels: { generateLabels: function (t) { var e = t.data; return e.labels.length && e.datasets.length ? e.labels.map(function (n, i) { var a = t.getDatasetMeta(0), r = e.datasets[0], l = a.data[i].custom || {}, s = o.valueAtIndexOrDefault, u = t.options.elements.arc; return { text: n, fillStyle: l.backgroundColor ? l.backgroundColor : s(r.backgroundColor, i, u.backgroundColor), strokeStyle: l.borderColor ? l.borderColor : s(r.borderColor, i, u.borderColor), lineWidth: l.borderWidth ? l.borderWidth : s(r.borderWidth, i, u.borderWidth), hidden: isNaN(r.data[i]) || a.data[i].hidden, index: i, }; }) : []; }, }, onClick: function (t, e) { var n, i, a, o = e.index, r = this.chart; for (n = 0, i = (r.data.datasets || []).length; n < i; ++n) (a = r.getDatasetMeta(n)).data[o].hidden = !a.data[o].hidden; r.update(); }, }, tooltips: { callbacks: { title: function () { return ""; }, label: function (t, e) { return e.labels[t.index] + ": " + t.yLabel; }, }, }, }), (e.exports = function (t) { t.controllers.polarArea = t.DatasetController.extend({ dataElementType: a.Arc, linkScales: o.noop, update: function (t) { var e = this, n = e.chart, i = n.chartArea, a = e.getMeta(), r = n.options, l = r.elements.arc, s = Math.min(i.right - i.left, i.bottom - i.top); (n.outerRadius = Math.max((s - l.borderWidth / 2) / 2, 0)), (n.innerRadius = Math.max( r.cutoutPercentage ? (n.outerRadius / 100) * r.cutoutPercentage : 1, 0 )), (n.radiusLength = (n.outerRadius - n.innerRadius) / n.getVisibleDatasetCount()), (e.outerRadius = n.outerRadius - n.radiusLength * e.index), (e.innerRadius = e.outerRadius - n.radiusLength), (a.count = e.countVisibleElements()), o.each(a.data, function (n, i) { e.updateElement(n, i, t); }); }, updateElement: function (t, e, n) { for ( var i = this, a = i.chart, r = i.getDataset(), l = a.options, s = l.animation, u = a.scale, d = a.data.labels, c = i.calculateCircumference(r.data[e]), h = u.xCenter, f = u.yCenter, g = 0, p = i.getMeta(), v = 0; v < e; ++v ) isNaN(r.data[v]) || p.data[v].hidden || ++g; var m = l.startAngle, b = t.hidden ? 0 : u.getDistanceFromCenterForValue(r.data[e]), x = m + c * g, y = x + (t.hidden ? 0 : c), k = s.animateScale ? 0 : u.getDistanceFromCenterForValue(r.data[e]); o.extend(t, { _datasetIndex: i.index, _index: e, _scale: u, _model: { x: h, y: f, innerRadius: 0, outerRadius: n ? k : b, startAngle: n && s.animateRotate ? m : x, endAngle: n && s.animateRotate ? m : y, label: o.valueAtIndexOrDefault(d, e, d[e]), }, }), i.removeHoverStyle(t), t.pivot(); }, removeHoverStyle: function (e) { t.DatasetController.prototype.removeHoverStyle.call( this, e, this.chart.options.elements.arc ); }, countVisibleElements: function () { var t = this.getDataset(), e = this.getMeta(), n = 0; return ( o.each(e.data, function (e, i) { isNaN(t.data[i]) || e.hidden || n++; }), n ); }, calculateCircumference: function (t) { var e = this.getMeta().count; return e > 0 && !isNaN(t) ? (2 * Math.PI) / e : 0; }, }); }); }, { 25: 25, 40: 40, 45: 45 }, ], 20: [ function (t, e, n) { "use strict"; var i = t(25), a = t(40), o = t(45); i._set("radar", { scale: { type: "radialLinear" }, elements: { line: { tension: 0 } }, }), (e.exports = function (t) { t.controllers.radar = t.DatasetController.extend({ datasetElementType: a.Line, dataElementType: a.Point, linkScales: o.noop, update: function (t) { var e = this, n = e.getMeta(), i = n.dataset, a = n.data, r = i.custom || {}, l = e.getDataset(), s = e.chart.options.elements.line, u = e.chart.scale; void 0 !== l.tension && void 0 === l.lineTension && (l.lineTension = l.tension), o.extend(n.dataset, { _datasetIndex: e.index, _scale: u, _children: a, _loop: !0, _model: { tension: r.tension ? r.tension : o.valueOrDefault(l.lineTension, s.tension), backgroundColor: r.backgroundColor ? r.backgroundColor : l.backgroundColor || s.backgroundColor, borderWidth: r.borderWidth ? r.borderWidth : l.borderWidth || s.borderWidth, borderColor: r.borderColor ? r.borderColor : l.borderColor || s.borderColor, fill: r.fill ? r.fill : void 0 !== l.fill ? l.fill : s.fill, borderCapStyle: r.borderCapStyle ? r.borderCapStyle : l.borderCapStyle || s.borderCapStyle, borderDash: r.borderDash ? r.borderDash : l.borderDash || s.borderDash, borderDashOffset: r.borderDashOffset ? r.borderDashOffset : l.borderDashOffset || s.borderDashOffset, borderJoinStyle: r.borderJoinStyle ? r.borderJoinStyle : l.borderJoinStyle || s.borderJoinStyle, }, }), n.dataset.pivot(), o.each( a, function (n, i) { e.updateElement(n, i, t); }, e ), e.updateBezierControlPoints(); }, updateElement: function (t, e, n) { var i = this, a = t.custom || {}, r = i.getDataset(), l = i.chart.scale, s = i.chart.options.elements.point, u = l.getPointPositionForValue(e, r.data[e]); void 0 !== r.radius && void 0 === r.pointRadius && (r.pointRadius = r.radius), void 0 !== r.hitRadius && void 0 === r.pointHitRadius && (r.pointHitRadius = r.hitRadius), o.extend(t, { _datasetIndex: i.index, _index: e, _scale: l, _model: { x: n ? l.xCenter : u.x, y: n ? l.yCenter : u.y, tension: a.tension ? a.tension : o.valueOrDefault( r.lineTension, i.chart.options.elements.line.tension ), radius: a.radius ? a.radius : o.valueAtIndexOrDefault(r.pointRadius, e, s.radius), backgroundColor: a.backgroundColor ? a.backgroundColor : o.valueAtIndexOrDefault( r.pointBackgroundColor, e, s.backgroundColor ), borderColor: a.borderColor ? a.borderColor : o.valueAtIndexOrDefault( r.pointBorderColor, e, s.borderColor ), borderWidth: a.borderWidth ? a.borderWidth : o.valueAtIndexOrDefault( r.pointBorderWidth, e, s.borderWidth ), pointStyle: a.pointStyle ? a.pointStyle : o.valueAtIndexOrDefault( r.pointStyle, e, s.pointStyle ), hitRadius: a.hitRadius ? a.hitRadius : o.valueAtIndexOrDefault( r.pointHitRadius, e, s.hitRadius ), }, }), (t._model.skip = a.skip ? a.skip : isNaN(t._model.x) || isNaN(t._model.y)); }, updateBezierControlPoints: function () { var t = this.chart.chartArea, e = this.getMeta(); o.each(e.data, function (n, i) { var a = n._model, r = o.splineCurve( o.previousItem(e.data, i, !0)._model, a, o.nextItem(e.data, i, !0)._model, a.tension ); (a.controlPointPreviousX = Math.max( Math.min(r.previous.x, t.right), t.left )), (a.controlPointPreviousY = Math.max( Math.min(r.previous.y, t.bottom), t.top )), (a.controlPointNextX = Math.max( Math.min(r.next.x, t.right), t.left )), (a.controlPointNextY = Math.max( Math.min(r.next.y, t.bottom), t.top )), n.pivot(); }); }, setHoverStyle: function (t) { var e = this.chart.data.datasets[t._datasetIndex], n = t.custom || {}, i = t._index, a = t._model; (a.radius = n.hoverRadius ? n.hoverRadius : o.valueAtIndexOrDefault( e.pointHoverRadius, i, this.chart.options.elements.point.hoverRadius )), (a.backgroundColor = n.hoverBackgroundColor ? n.hoverBackgroundColor : o.valueAtIndexOrDefault( e.pointHoverBackgroundColor, i, o.getHoverColor(a.backgroundColor) )), (a.borderColor = n.hoverBorderColor ? n.hoverBorderColor : o.valueAtIndexOrDefault( e.pointHoverBorderColor, i, o.getHoverColor(a.borderColor) )), (a.borderWidth = n.hoverBorderWidth ? n.hoverBorderWidth : o.valueAtIndexOrDefault( e.pointHoverBorderWidth, i, a.borderWidth )); }, removeHoverStyle: function (t) { var e = this.chart.data.datasets[t._datasetIndex], n = t.custom || {}, i = t._index, a = t._model, r = this.chart.options.elements.point; (a.radius = n.radius ? n.radius : o.valueAtIndexOrDefault(e.pointRadius, i, r.radius)), (a.backgroundColor = n.backgroundColor ? n.backgroundColor : o.valueAtIndexOrDefault( e.pointBackgroundColor, i, r.backgroundColor )), (a.borderColor = n.borderColor ? n.borderColor : o.valueAtIndexOrDefault( e.pointBorderColor, i, r.borderColor )), (a.borderWidth = n.borderWidth ? n.borderWidth : o.valueAtIndexOrDefault( e.pointBorderWidth, i, r.borderWidth )); }, }); }); }, { 25: 25, 40: 40, 45: 45 }, ], 21: [ function (t, e, n) { "use strict"; t(25)._set("scatter", { hover: { mode: "single" }, scales: { xAxes: [{ id: "x-axis-1", type: "linear", position: "bottom" }], yAxes: [{ id: "y-axis-1", type: "linear", position: "left" }], }, showLines: !1, tooltips: { callbacks: { title: function () { return ""; }, label: function (t) { return "(" + t.xLabel + ", " + t.yLabel + ")"; }, }, }, }), (e.exports = function (t) { t.controllers.scatter = t.controllers.line; }); }, { 25: 25 }, ], 22: [ function (t, e, n) { "use strict"; var i = t(25), a = t(26), o = t(45); i._set("global", { animation: { duration: 1e3, easing: "easeOutQuart", onProgress: o.noop, onComplete: o.noop, }, }), (e.exports = function (t) { (t.Animation = a.extend({ chart: null, currentStep: 0, numSteps: 60, easing: "", render: null, onAnimationProgress: null, onAnimationComplete: null, })), (t.animationService = { frameDuration: 17, animations: [], dropFrames: 0, request: null, addAnimation: function (t, e, n, i) { var a, o, r = this.animations; for ( e.chart = t, i || (t.animating = !0), a = 0, o = r.length; a < o; ++a ) if (r[a].chart === t) return void (r[a] = e); r.push(e), 1 === r.length && this.requestAnimationFrame(); }, cancelAnimation: function (t) { var e = o.findIndex(this.animations, function (e) { return e.chart === t; }); -1 !== e && (this.animations.splice(e, 1), (t.animating = !1)); }, requestAnimationFrame: function () { var t = this; null === t.request && (t.request = o.requestAnimFrame.call(window, function () { (t.request = null), t.startDigest(); })); }, startDigest: function () { var t = this, e = Date.now(), n = 0; t.dropFrames > 1 && ((n = Math.floor(t.dropFrames)), (t.dropFrames = t.dropFrames % 1)), t.advance(1 + n); var i = Date.now(); (t.dropFrames += (i - e) / t.frameDuration), t.animations.length > 0 && t.requestAnimationFrame(); }, advance: function (t) { for (var e, n, i = this.animations, a = 0; a < i.length; ) (n = (e = i[a]).chart), (e.currentStep = (e.currentStep || 0) + t), (e.currentStep = Math.min(e.currentStep, e.numSteps)), o.callback(e.render, [n, e], n), o.callback(e.onAnimationProgress, [e], n), e.currentStep >= e.numSteps ? (o.callback(e.onAnimationComplete, [e], n), (n.animating = !1), i.splice(a, 1)) : ++a; }, }), Object.defineProperty( t.Animation.prototype, "animationObject", { get: function () { return this; }, } ), Object.defineProperty(t.Animation.prototype, "chartInstance", { get: function () { return this.chart; }, set: function (t) { this.chart = t; }, }); }); }, { 25: 25, 26: 26, 45: 45 }, ], 23: [ function (t, e, n) { "use strict"; var i = t(25), a = t(45), o = t(28), r = t(48); e.exports = function (t) { function e(t) { var e = ((t = t || {}).data = t.data || {}); return ( (e.datasets = e.datasets || []), (e.labels = e.labels || []), (t.options = a.configMerge( i.global, i[t.type], t.options || {} )), t ); } function n(t) { var e = t.options; e.scale ? (t.scale.options = e.scale) : e.scales && e.scales.xAxes.concat(e.scales.yAxes).forEach(function (e) { t.scales[e.id].options = e; }), (t.tooltip._options = e.tooltips); } function l(t) { return "top" === t || "bottom" === t; } var s = t.plugins; (t.types = {}), (t.instances = {}), (t.controllers = {}), a.extend(t.prototype, { construct: function (n, i) { var o = this; i = e(i); var l = r.acquireContext(n, i), s = l && l.canvas, u = s && s.height, d = s && s.width; (o.id = a.uid()), (o.ctx = l), (o.canvas = s), (o.config = i), (o.width = d), (o.height = u), (o.aspectRatio = u ? d / u : null), (o.options = i.options), (o._bufferedRender = !1), (o.chart = o), (o.controller = o), (t.instances[o.id] = o), Object.defineProperty(o, "data", { get: function () { return o.config.data; }, set: function (t) { o.config.data = t; }, }), l && s ? (o.initialize(), o.update()) : console.error( "Failed to create chart: can't acquire context from the given item" ); }, initialize: function () { var t = this; return ( s.notify(t, "beforeInit"), a.retinaScale(t, t.options.devicePixelRatio), t.bindEvents(), t.options.responsive && t.resize(!0), t.ensureScalesHaveIDs(), t.buildScales(), t.initToolTip(), s.notify(t, "afterInit"), t ); }, clear: function () { return a.canvas.clear(this), this; }, stop: function () { return t.animationService.cancelAnimation(this), this; }, resize: function (t) { var e = this, n = e.options, i = e.canvas, o = (n.maintainAspectRatio && e.aspectRatio) || null, r = Math.max(0, Math.floor(a.getMaximumWidth(i))), l = Math.max( 0, Math.floor(o ? r / o : a.getMaximumHeight(i)) ); if ( (e.width !== r || e.height !== l) && ((i.width = e.width = r), (i.height = e.height = l), (i.style.width = r + "px"), (i.style.height = l + "px"), a.retinaScale(e, n.devicePixelRatio), !t) ) { var u = { width: r, height: l }; s.notify(e, "resize", [u]), e.options.onResize && e.options.onResize(e, u), e.stop(), e.update(e.options.responsiveAnimationDuration); } }, ensureScalesHaveIDs: function () { var t = this.options, e = t.scales || {}, n = t.scale; a.each(e.xAxes, function (t, e) { t.id = t.id || "x-axis-" + e; }), a.each(e.yAxes, function (t, e) { t.id = t.id || "y-axis-" + e; }), n && (n.id = n.id || "scale"); }, buildScales: function () { var e = this, n = e.options, i = (e.scales = {}), o = []; n.scales && (o = o.concat( (n.scales.xAxes || []).map(function (t) { return { options: t, dtype: "category", dposition: "bottom", }; }), (n.scales.yAxes || []).map(function (t) { return { options: t, dtype: "linear", dposition: "left", }; }) )), n.scale && o.push({ options: n.scale, dtype: "radialLinear", isDefault: !0, dposition: "chartArea", }), a.each(o, function (n) { var o = n.options, r = a.valueOrDefault(o.type, n.dtype), s = t.scaleService.getScaleConstructor(r); if (s) { l(o.position) !== l(n.dposition) && (o.position = n.dposition); var u = new s({ id: o.id, options: o, ctx: e.ctx, chart: e, }); (i[u.id] = u), u.mergeTicksOptions(), n.isDefault && (e.scale = u); } }), t.scaleService.addScalesToLayout(this); }, buildOrUpdateControllers: function () { var e = this, n = [], i = []; return ( a.each( e.data.datasets, function (a, o) { var r = e.getDatasetMeta(o), l = a.type || e.config.type; if ( (r.type && r.type !== l && (e.destroyDatasetMeta(o), (r = e.getDatasetMeta(o))), (r.type = l), n.push(r.type), r.controller) ) r.controller.updateIndex(o); else { var s = t.controllers[r.type]; if (void 0 === s) throw new Error( '"' + r.type + '" is not a chart type.' ); (r.controller = new s(e, o)), i.push(r.controller); } }, e ), i ); }, resetElements: function () { var t = this; a.each( t.data.datasets, function (e, n) { t.getDatasetMeta(n).controller.reset(); }, t ); }, reset: function () { this.resetElements(), this.tooltip.initialize(); }, update: function (t) { var e = this; if ( ((t && "object" == typeof t) || (t = { duration: t, lazy: arguments[1] }), n(e), !1 !== s.notify(e, "beforeUpdate")) ) { e.tooltip._data = e.data; var i = e.buildOrUpdateControllers(); a.each( e.data.datasets, function (t, n) { e.getDatasetMeta(n).controller.buildOrUpdateElements(); }, e ), e.updateLayout(), a.each(i, function (t) { t.reset(); }), e.updateDatasets(), e.tooltip.initialize(), (e.lastActive = []), s.notify(e, "afterUpdate"), e._bufferedRender ? (e._bufferedRequest = { duration: t.duration, easing: t.easing, lazy: t.lazy, }) : e.render(t); } }, updateLayout: function () { var e = this; !1 !== s.notify(e, "beforeLayout") && (t.layoutService.update(this, this.width, this.height), s.notify(e, "afterScaleUpdate"), s.notify(e, "afterLayout")); }, updateDatasets: function () { var t = this; if (!1 !== s.notify(t, "beforeDatasetsUpdate")) { for (var e = 0, n = t.data.datasets.length; e < n; ++e) t.updateDataset(e); s.notify(t, "afterDatasetsUpdate"); } }, updateDataset: function (t) { var e = this, n = e.getDatasetMeta(t), i = { meta: n, index: t }; !1 !== s.notify(e, "beforeDatasetUpdate", [i]) && (n.controller.update(), s.notify(e, "afterDatasetUpdate", [i])); }, render: function (e) { var n = this; (e && "object" == typeof e) || (e = { duration: e, lazy: arguments[1] }); var i = e.duration, o = e.lazy; if (!1 !== s.notify(n, "beforeRender")) { var r = n.options.animation, l = function (t) { s.notify(n, "afterRender"), a.callback(r && r.onComplete, [t], n); }; if ( r && ((void 0 !== i && 0 !== i) || (void 0 === i && 0 !== r.duration)) ) { var u = new t.Animation({ numSteps: (i || r.duration) / 16.66, easing: e.easing || r.easing, render: function (t, e) { var n = a.easing.effects[e.easing], i = e.currentStep, o = i / e.numSteps; t.draw(n(o), o, i); }, onAnimationProgress: r.onProgress, onAnimationComplete: l, }); t.animationService.addAnimation(n, u, i, o); } else n.draw(), l(new t.Animation({ numSteps: 0, chart: n })); return n; } }, draw: function (t) { var e = this; e.clear(), a.isNullOrUndef(t) && (t = 1), e.transition(t), !1 !== s.notify(e, "beforeDraw", [t]) && (a.each( e.boxes, function (t) { t.draw(e.chartArea); }, e ), e.scale && e.scale.draw(), e.drawDatasets(t), e._drawTooltip(t), s.notify(e, "afterDraw", [t])); }, transition: function (t) { for ( var e = this, n = 0, i = (e.data.datasets || []).length; n < i; ++n ) e.isDatasetVisible(n) && e.getDatasetMeta(n).controller.transition(t); e.tooltip.transition(t); }, drawDatasets: function (t) { var e = this; if (!1 !== s.notify(e, "beforeDatasetsDraw", [t])) { for ( var n = (e.data.datasets || []).length - 1; n >= 0; --n ) e.isDatasetVisible(n) && e.drawDataset(n, t); s.notify(e, "afterDatasetsDraw", [t]); } }, drawDataset: function (t, e) { var n = this, i = n.getDatasetMeta(t), a = { meta: i, index: t, easingValue: e }; !1 !== s.notify(n, "beforeDatasetDraw", [a]) && (i.controller.draw(e), s.notify(n, "afterDatasetDraw", [a])); }, _drawTooltip: function (t) { var e = this, n = e.tooltip, i = { tooltip: n, easingValue: t }; !1 !== s.notify(e, "beforeTooltipDraw", [i]) && (n.draw(), s.notify(e, "afterTooltipDraw", [i])); }, getElementAtEvent: function (t) { return o.modes.single(this, t); }, getElementsAtEvent: function (t) { return o.modes.label(this, t, { intersect: !0 }); }, getElementsAtXAxis: function (t) { return o.modes["x-axis"](this, t, { intersect: !0 }); }, getElementsAtEventForMode: function (t, e, n) { var i = o.modes[e]; return "function" == typeof i ? i(this, t, n) : []; }, getDatasetAtEvent: function (t) { return o.modes.dataset(this, t, { intersect: !0 }); }, getDatasetMeta: function (t) { var e = this, n = e.data.datasets[t]; n._meta || (n._meta = {}); var i = n._meta[e.id]; return ( i || (i = n._meta[e.id] = { type: null, data: [], dataset: null, controller: null, hidden: null, xAxisID: null, yAxisID: null, }), i ); }, getVisibleDatasetCount: function () { for ( var t = 0, e = 0, n = this.data.datasets.length; e < n; ++e ) this.isDatasetVisible(e) && t++; return t; }, isDatasetVisible: function (t) { var e = this.getDatasetMeta(t); return "boolean" == typeof e.hidden ? !e.hidden : !this.data.datasets[t].hidden; }, generateLegend: function () { return this.options.legendCallback(this); }, destroyDatasetMeta: function (t) { var e = this.id, n = this.data.datasets[t], i = n._meta && n._meta[e]; i && (i.controller.destroy(), delete n._meta[e]); }, destroy: function () { var e, n, i = this, o = i.canvas; for (i.stop(), e = 0, n = i.data.datasets.length; e < n; ++e) i.destroyDatasetMeta(e); o && (i.unbindEvents(), a.canvas.clear(i), r.releaseContext(i.ctx), (i.canvas = null), (i.ctx = null)), s.notify(i, "destroy"), delete t.instances[i.id]; }, toBase64Image: function () { return this.canvas.toDataURL.apply(this.canvas, arguments); }, initToolTip: function () { var e = this; e.tooltip = new t.Tooltip( { _chart: e, _chartInstance: e, _data: e.data, _options: e.options.tooltips, }, e ); }, bindEvents: function () { var t = this, e = (t._listeners = {}), n = function () { t.eventHandler.apply(t, arguments); }; a.each(t.options.events, function (i) { r.addEventListener(t, i, n), (e[i] = n); }), t.options.responsive && ((n = function () { t.resize(); }), r.addEventListener(t, "resize", n), (e.resize = n)); }, unbindEvents: function () { var t = this, e = t._listeners; e && (delete t._listeners, a.each(e, function (e, n) { r.removeEventListener(t, n, e); })); }, updateHoverStyle: function (t, e, n) { var i, a, o, r = n ? "setHoverStyle" : "removeHoverStyle"; for (a = 0, o = t.length; a < o; ++a) (i = t[a]) && this.getDatasetMeta(i._datasetIndex).controller[r](i); }, eventHandler: function (t) { var e = this, n = e.tooltip; if (!1 !== s.notify(e, "beforeEvent", [t])) { (e._bufferedRender = !0), (e._bufferedRequest = null); var i = e.handleEvent(t); (i |= n && n.handleEvent(t)), s.notify(e, "afterEvent", [t]); var a = e._bufferedRequest; return ( a ? e.render(a) : i && !e.animating && (e.stop(), e.render(e.options.hover.animationDuration, !0)), (e._bufferedRender = !1), (e._bufferedRequest = null), e ); } }, handleEvent: function (t) { var e = this, n = e.options || {}, i = n.hover, o = !1; return ( (e.lastActive = e.lastActive || []), "mouseout" === t.type ? (e.active = []) : (e.active = e.getElementsAtEventForMode(t, i.mode, i)), a.callback( n.onHover || n.hover.onHover, [t.native, e.active], e ), ("mouseup" !== t.type && "click" !== t.type) || (n.onClick && n.onClick.call(e, t.native, e.active)), e.lastActive.length && e.updateHoverStyle(e.lastActive, i.mode, !1), e.active.length && i.mode && e.updateHoverStyle(e.active, i.mode, !0), (o = !a.arrayEquals(e.active, e.lastActive)), (e.lastActive = e.active), o ); }, }), (t.Controller = t); }; }, { 25: 25, 28: 28, 45: 45, 48: 48 }, ], 24: [ function (t, e, n) { "use strict"; var i = t(45); e.exports = function (t) { function e(t, e) { t._chartjs ? t._chartjs.listeners.push(e) : (Object.defineProperty(t, "_chartjs", { configurable: !0, enumerable: !1, value: { listeners: [e] }, }), a.forEach(function (e) { var n = "onData" + e.charAt(0).toUpperCase() + e.slice(1), a = t[e]; Object.defineProperty(t, e, { configurable: !0, enumerable: !1, value: function () { var e = Array.prototype.slice.call(arguments), o = a.apply(this, e); return ( i.each(t._chartjs.listeners, function (t) { "function" == typeof t[n] && t[n].apply(t, e); }), o ); }, }); })); } function n(t, e) { var n = t._chartjs; if (n) { var i = n.listeners, o = i.indexOf(e); -1 !== o && i.splice(o, 1), i.length > 0 || (a.forEach(function (e) { delete t[e]; }), delete t._chartjs); } } var a = ["push", "pop", "shift", "splice", "unshift"]; (t.DatasetController = function (t, e) { this.initialize(t, e); }), i.extend(t.DatasetController.prototype, { datasetElementType: null, dataElementType: null, initialize: function (t, e) { var n = this; (n.chart = t), (n.index = e), n.linkScales(), n.addElements(); }, updateIndex: function (t) { this.index = t; }, linkScales: function () { var t = this, e = t.getMeta(), n = t.getDataset(); null === e.xAxisID && (e.xAxisID = n.xAxisID || t.chart.options.scales.xAxes[0].id), null === e.yAxisID && (e.yAxisID = n.yAxisID || t.chart.options.scales.yAxes[0].id); }, getDataset: function () { return this.chart.data.datasets[this.index]; }, getMeta: function () { return this.chart.getDatasetMeta(this.index); }, getScaleForId: function (t) { return this.chart.scales[t]; }, reset: function () { this.update(!0); }, destroy: function () { this._data && n(this._data, this); }, createMetaDataset: function () { var t = this, e = t.datasetElementType; return ( e && new e({ _chart: t.chart, _datasetIndex: t.index }) ); }, createMetaData: function (t) { var e = this, n = e.dataElementType; return ( n && new n({ _chart: e.chart, _datasetIndex: e.index, _index: t, }) ); }, addElements: function () { var t, e, n = this, i = n.getMeta(), a = n.getDataset().data || [], o = i.data; for (t = 0, e = a.length; t < e; ++t) o[t] = o[t] || n.createMetaData(t); i.dataset = i.dataset || n.createMetaDataset(); }, addElementAndReset: function (t) { var e = this.createMetaData(t); this.getMeta().data.splice(t, 0, e), this.updateElement(e, t, !0); }, buildOrUpdateElements: function () { var t = this, i = t.getDataset(), a = i.data || (i.data = []); t._data !== a && (t._data && n(t._data, t), e(a, t), (t._data = a)), t.resyncElements(); }, update: i.noop, transition: function (t) { for ( var e = this.getMeta(), n = e.data || [], i = n.length, a = 0; a < i; ++a ) n[a].transition(t); e.dataset && e.dataset.transition(t); }, draw: function () { var t = this.getMeta(), e = t.data || [], n = e.length, i = 0; for (t.dataset && t.dataset.draw(); i < n; ++i) e[i].draw(); }, removeHoverStyle: function (t, e) { var n = this.chart.data.datasets[t._datasetIndex], a = t._index, o = t.custom || {}, r = i.valueAtIndexOrDefault, l = t._model; (l.backgroundColor = o.backgroundColor ? o.backgroundColor : r(n.backgroundColor, a, e.backgroundColor)), (l.borderColor = o.borderColor ? o.borderColor : r(n.borderColor, a, e.borderColor)), (l.borderWidth = o.borderWidth ? o.borderWidth : r(n.borderWidth, a, e.borderWidth)); }, setHoverStyle: function (t) { var e = this.chart.data.datasets[t._datasetIndex], n = t._index, a = t.custom || {}, o = i.valueAtIndexOrDefault, r = i.getHoverColor, l = t._model; (l.backgroundColor = a.hoverBackgroundColor ? a.hoverBackgroundColor : o(e.hoverBackgroundColor, n, r(l.backgroundColor))), (l.borderColor = a.hoverBorderColor ? a.hoverBorderColor : o(e.hoverBorderColor, n, r(l.borderColor))), (l.borderWidth = a.hoverBorderWidth ? a.hoverBorderWidth : o(e.hoverBorderWidth, n, l.borderWidth)); }, resyncElements: function () { var t = this, e = t.getMeta(), n = t.getDataset().data, i = e.data.length, a = n.length; a < i ? e.data.splice(a, i - a) : a > i && t.insertElements(i, a - i); }, insertElements: function (t, e) { for (var n = 0; n < e; ++n) this.addElementAndReset(t + n); }, onDataPush: function () { this.insertElements( this.getDataset().data.length - 1, arguments.length ); }, onDataPop: function () { this.getMeta().data.pop(); }, onDataShift: function () { this.getMeta().data.shift(); }, onDataSplice: function (t, e) { this.getMeta().data.splice(t, e), this.insertElements(t, arguments.length - 2); }, onDataUnshift: function () { this.insertElements(0, arguments.length); }, }), (t.DatasetController.extend = i.inherits); }; }, { 45: 45 }, ], 25: [ function (t, e, n) { "use strict"; var i = t(45); e.exports = { _set: function (t, e) { return i.merge(this[t] || (this[t] = {}), e); }, }; }, { 45: 45 }, ], 26: [ function (t, e, n) { "use strict"; function i(t, e, n, i) { var o, r, l, s, u, d, c, h, f, g = Object.keys(n); for (o = 0, r = g.length; o < r; ++o) if ( ((l = g[o]), (d = n[l]), e.hasOwnProperty(l) || (e[l] = d), (s = e[l]) !== d && "_" !== l[0]) ) { if ( (t.hasOwnProperty(l) || (t[l] = s), (u = t[l]), (c = typeof d) === typeof u) ) if ("string" === c) { if ((h = a(u)).valid && (f = a(d)).valid) { e[l] = f.mix(h, i).rgbString(); continue; } } else if ("number" === c && isFinite(u) && isFinite(d)) { e[l] = u + (d - u) * i; continue; } e[l] = d; } } var a = t(3), o = t(45), r = function (t) { o.extend(this, t), this.initialize.apply(this, arguments); }; o.extend(r.prototype, { initialize: function () { this.hidden = !1; }, pivot: function () { var t = this; return ( t._view || (t._view = o.clone(t._model)), (t._start = {}), t ); }, transition: function (t) { var e = this, n = e._model, a = e._start, o = e._view; return n && 1 !== t ? (o || (o = e._view = {}), a || (a = e._start = {}), i(a, o, n, t), e) : ((e._view = n), (e._start = null), e); }, tooltipPosition: function () { return { x: this._model.x, y: this._model.y }; }, hasValue: function () { return o.isNumber(this._model.x) && o.isNumber(this._model.y); }, }), (r.extend = o.inherits), (e.exports = r); }, { 3: 3, 45: 45 }, ], 27: [ function (t, e, n) { "use strict"; var i = t(3), a = t(25), o = t(45); e.exports = function (t) { function e(t, e, n) { var i; return ( "string" == typeof t ? ((i = parseInt(t, 10)), -1 !== t.indexOf("%") && (i = (i / 100) * e.parentNode[n])) : (i = t), i ); } function n(t) { return void 0 !== t && null !== t && "none" !== t; } function r(t, i, a) { var o = document.defaultView, r = t.parentNode, l = o.getComputedStyle(t)[i], s = o.getComputedStyle(r)[i], u = n(l), d = n(s), c = Number.POSITIVE_INFINITY; return u || d ? Math.min(u ? e(l, t, a) : c, d ? e(s, r, a) : c) : "none"; } (o.configMerge = function () { return o.merge( o.clone(arguments[0]), [].slice.call(arguments, 1), { merger: function (e, n, i, a) { var r = n[e] || {}, l = i[e]; "scales" === e ? (n[e] = o.scaleMerge(r, l)) : "scale" === e ? (n[e] = o.merge(r, [ t.scaleService.getScaleDefaults(l.type), l, ])) : o._merger(e, n, i, a); }, } ); }), (o.scaleMerge = function () { return o.merge( o.clone(arguments[0]), [].slice.call(arguments, 1), { merger: function (e, n, i, a) { if ("xAxes" === e || "yAxes" === e) { var r, l, s, u = i[e].length; for (n[e] || (n[e] = []), r = 0; r < u; ++r) (s = i[e][r]), (l = o.valueOrDefault( s.type, "xAxes" === e ? "category" : "linear" )), r >= n[e].length && n[e].push({}), !n[e][r].type || (s.type && s.type !== n[e][r].type) ? o.merge(n[e][r], [ t.scaleService.getScaleDefaults(l), s, ]) : o.merge(n[e][r], s); } else o._merger(e, n, i, a); }, } ); }), (o.where = function (t, e) { if (o.isArray(t) && Array.prototype.filter) return t.filter(e); var n = []; return ( o.each(t, function (t) { e(t) && n.push(t); }), n ); }), (o.findIndex = Array.prototype.findIndex ? function (t, e, n) { return t.findIndex(e, n); } : function (t, e, n) { n = void 0 === n ? t : n; for (var i = 0, a = t.length; i < a; ++i) if (e.call(n, t[i], i, t)) return i; return -1; }), (o.findNextWhere = function (t, e, n) { o.isNullOrUndef(n) && (n = -1); for (var i = n + 1; i < t.length; i++) { var a = t[i]; if (e(a)) return a; } }), (o.findPreviousWhere = function (t, e, n) { o.isNullOrUndef(n) && (n = t.length); for (var i = n - 1; i >= 0; i--) { var a = t[i]; if (e(a)) return a; } }), (o.isNumber = function (t) { return !isNaN(parseFloat(t)) && isFinite(t); }), (o.almostEquals = function (t, e, n) { return Math.abs(t - e) < n; }), (o.almostWhole = function (t, e) { var n = Math.round(t); return n - e < t && n + e > t; }), (o.max = function (t) { return t.reduce(function (t, e) { return isNaN(e) ? t : Math.max(t, e); }, Number.NEGATIVE_INFINITY); }), (o.min = function (t) { return t.reduce(function (t, e) { return isNaN(e) ? t : Math.min(t, e); }, Number.POSITIVE_INFINITY); }), (o.sign = Math.sign ? function (t) { return Math.sign(t); } : function (t) { return 0 == (t = +t) || isNaN(t) ? t : t > 0 ? 1 : -1; }), (o.log10 = Math.log10 ? function (t) { return Math.log10(t); } : function (t) { return Math.log(t) / Math.LN10; }), (o.toRadians = function (t) { return t * (Math.PI / 180); }), (o.toDegrees = function (t) { return t * (180 / Math.PI); }), (o.getAngleFromPoint = function (t, e) { var n = e.x - t.x, i = e.y - t.y, a = Math.sqrt(n * n + i * i), o = Math.atan2(i, n); return ( o < -0.5 * Math.PI && (o += 2 * Math.PI), { angle: o, distance: a } ); }), (o.distanceBetweenPoints = function (t, e) { return Math.sqrt( Math.pow(e.x - t.x, 2) + Math.pow(e.y - t.y, 2) ); }), (o.aliasPixel = function (t) { return t % 2 == 0 ? 0 : 0.5; }), (o.splineCurve = function (t, e, n, i) { var a = t.skip ? e : t, o = e, r = n.skip ? e : n, l = Math.sqrt( Math.pow(o.x - a.x, 2) + Math.pow(o.y - a.y, 2) ), s = Math.sqrt( Math.pow(r.x - o.x, 2) + Math.pow(r.y - o.y, 2) ), u = l / (l + s), d = s / (l + s), c = i * (u = isNaN(u) ? 0 : u), h = i * (d = isNaN(d) ? 0 : d); return { previous: { x: o.x - c * (r.x - a.x), y: o.y - c * (r.y - a.y), }, next: { x: o.x + h * (r.x - a.x), y: o.y + h * (r.y - a.y) }, }; }), (o.EPSILON = Number.EPSILON || 1e-14), (o.splineCurveMonotone = function (t) { var e, n, i, a, r = (t || []).map(function (t) { return { model: t._model, deltaK: 0, mK: 0 }; }), l = r.length; for (e = 0; e < l; ++e) if (!(i = r[e]).model.skip) { if ( ((n = e > 0 ? r[e - 1] : null), (a = e < l - 1 ? r[e + 1] : null) && !a.model.skip) ) { var s = a.model.x - i.model.x; i.deltaK = 0 !== s ? (a.model.y - i.model.y) / s : 0; } !n || n.model.skip ? (i.mK = i.deltaK) : !a || a.model.skip ? (i.mK = n.deltaK) : this.sign(n.deltaK) !== this.sign(i.deltaK) ? (i.mK = 0) : (i.mK = (n.deltaK + i.deltaK) / 2); } var u, d, c, h; for (e = 0; e < l - 1; ++e) (i = r[e]), (a = r[e + 1]), i.model.skip || a.model.skip || (o.almostEquals(i.deltaK, 0, this.EPSILON) ? (i.mK = a.mK = 0) : ((u = i.mK / i.deltaK), (d = a.mK / i.deltaK), (h = Math.pow(u, 2) + Math.pow(d, 2)) <= 9 || ((c = 3 / Math.sqrt(h)), (i.mK = u * c * i.deltaK), (a.mK = d * c * i.deltaK)))); var f; for (e = 0; e < l; ++e) (i = r[e]).model.skip || ((n = e > 0 ? r[e - 1] : null), (a = e < l - 1 ? r[e + 1] : null), n && !n.model.skip && ((f = (i.model.x - n.model.x) / 3), (i.model.controlPointPreviousX = i.model.x - f), (i.model.controlPointPreviousY = i.model.y - f * i.mK)), a && !a.model.skip && ((f = (a.model.x - i.model.x) / 3), (i.model.controlPointNextX = i.model.x + f), (i.model.controlPointNextY = i.model.y + f * i.mK))); }), (o.nextItem = function (t, e, n) { return n ? e >= t.length - 1 ? t[0] : t[e + 1] : e >= t.length - 1 ? t[t.length - 1] : t[e + 1]; }), (o.previousItem = function (t, e, n) { return n ? e <= 0 ? t[t.length - 1] : t[e - 1] : e <= 0 ? t[0] : t[e - 1]; }), (o.niceNum = function (t, e) { var n = Math.floor(o.log10(t)), i = t / Math.pow(10, n); return ( (e ? i < 1.5 ? 1 : i < 3 ? 2 : i < 7 ? 5 : 10 : i <= 1 ? 1 : i <= 2 ? 2 : i <= 5 ? 5 : 10) * Math.pow(10, n) ); }), (o.requestAnimFrame = "undefined" == typeof window ? function (t) { t(); } : window.requestAnimationFrame || window.webkitRequestAnimationFrame || window.mozRequestAnimationFrame || window.oRequestAnimationFrame || window.msRequestAnimationFrame || function (t) { return window.setTimeout(t, 1e3 / 60); }), (o.getRelativePosition = function (t, e) { var n, i, a = t.originalEvent || t, r = t.currentTarget || t.srcElement, l = r.getBoundingClientRect(), s = a.touches; s && s.length > 0 ? ((n = s[0].clientX), (i = s[0].clientY)) : ((n = a.clientX), (i = a.clientY)); var u = parseFloat(o.getStyle(r, "padding-left")), d = parseFloat(o.getStyle(r, "padding-top")), c = parseFloat(o.getStyle(r, "padding-right")), h = parseFloat(o.getStyle(r, "padding-bottom")), f = l.right - l.left - u - c, g = l.bottom - l.top - d - h; return ( (n = Math.round( (((n - l.left - u) / f) * r.width) / e.currentDevicePixelRatio )), (i = Math.round( (((i - l.top - d) / g) * r.height) / e.currentDevicePixelRatio )), { x: n, y: i } ); }), (o.getConstraintWidth = function (t) { return r(t, "max-width", "clientWidth"); }), (o.getConstraintHeight = function (t) { return r(t, "max-height", "clientHeight"); }), (o.getMaximumWidth = function (t) { var e = t.parentNode; if (!e) return t.clientWidth; var n = parseInt(o.getStyle(e, "padding-left"), 10), i = parseInt(o.getStyle(e, "padding-right"), 10), a = e.clientWidth - n - i, r = o.getConstraintWidth(t); return isNaN(r) ? a : Math.min(a, r); }), (o.getMaximumHeight = function (t) { var e = t.parentNode; if (!e) return t.clientHeight; var n = parseInt(o.getStyle(e, "padding-top"), 10), i = parseInt(o.getStyle(e, "padding-bottom"), 10), a = e.clientHeight - n - i, r = o.getConstraintHeight(t); return isNaN(r) ? a : Math.min(a, r); }), (o.getStyle = function (t, e) { return t.currentStyle ? t.currentStyle[e] : document.defaultView .getComputedStyle(t, null) .getPropertyValue(e); }), (o.retinaScale = function (t, e) { var n = (t.currentDevicePixelRatio = e || window.devicePixelRatio || 1); if (1 !== n) { var i = t.canvas, a = t.height, o = t.width; (i.height = a * n), (i.width = o * n), t.ctx.scale(n, n), (i.style.height = a + "px"), (i.style.width = o + "px"); } }), (o.fontString = function (t, e, n) { return e + " " + t + "px " + n; }), (o.longestText = function (t, e, n, i) { var a = ((i = i || {}).data = i.data || {}), r = (i.garbageCollect = i.garbageCollect || []); i.font !== e && ((a = i.data = {}), (r = i.garbageCollect = []), (i.font = e)), (t.font = e); var l = 0; o.each(n, function (e) { void 0 !== e && null !== e && !0 !== o.isArray(e) ? (l = o.measureText(t, a, r, l, e)) : o.isArray(e) && o.each(e, function (e) { void 0 === e || null === e || o.isArray(e) || (l = o.measureText(t, a, r, l, e)); }); }); var s = r.length / 2; if (s > n.length) { for (var u = 0; u < s; u++) delete a[r[u]]; r.splice(0, s); } return l; }), (o.measureText = function (t, e, n, i, a) { var o = e[a]; return ( o || ((o = e[a] = t.measureText(a).width), n.push(a)), o > i && (i = o), i ); }), (o.numberOfLabelLines = function (t) { var e = 1; return ( o.each(t, function (t) { o.isArray(t) && t.length > e && (e = t.length); }), e ); }), (o.color = i ? function (t) { return ( t instanceof CanvasGradient && (t = a.global.defaultColor), i(t) ); } : function (t) { return console.error("Color.js not found!"), t; }), (o.getHoverColor = function (t) { return t instanceof CanvasPattern ? t : o.color(t).saturate(0.5).darken(0.1).rgbString(); }); }; }, { 25: 25, 3: 3, 45: 45 }, ], 28: [ function (t, e, n) { "use strict"; function i(t, e) { return t.native ? { x: t.x, y: t.y } : u.getRelativePosition(t, e); } function a(t, e) { var n, i, a, o, r; for (i = 0, o = t.data.datasets.length; i < o; ++i) if (t.isDatasetVisible(i)) for ( a = 0, r = (n = t.getDatasetMeta(i)).data.length; a < r; ++a ) { var l = n.data[a]; l._view.skip || e(l); } } function o(t, e) { var n = []; return ( a(t, function (t) { t.inRange(e.x, e.y) && n.push(t); }), n ); } function r(t, e, n, i) { var o = Number.POSITIVE_INFINITY, r = []; return ( a(t, function (t) { if (!n || t.inRange(e.x, e.y)) { var a = t.getCenterPoint(), l = i(e, a); l < o ? ((r = [t]), (o = l)) : l === o && r.push(t); } }), r ); } function l(t) { var e = -1 !== t.indexOf("x"), n = -1 !== t.indexOf("y"); return function (t, i) { var a = e ? Math.abs(t.x - i.x) : 0, o = n ? Math.abs(t.y - i.y) : 0; return Math.sqrt(Math.pow(a, 2) + Math.pow(o, 2)); }; } function s(t, e, n) { var a = i(e, t); n.axis = n.axis || "x"; var s = l(n.axis), u = n.intersect ? o(t, a) : r(t, a, !1, s), d = []; return u.length ? (t.data.datasets.forEach(function (e, n) { if (t.isDatasetVisible(n)) { var i = t.getDatasetMeta(n).data[u[0]._index]; i && !i._view.skip && d.push(i); } }), d) : []; } var u = t(45); e.exports = { modes: { single: function (t, e) { var n = i(e, t), o = []; return ( a(t, function (t) { if (t.inRange(n.x, n.y)) return o.push(t), o; }), o.slice(0, 1) ); }, label: s, index: s, dataset: function (t, e, n) { var a = i(e, t); n.axis = n.axis || "xy"; var s = l(n.axis), u = n.intersect ? o(t, a) : r(t, a, !1, s); return ( u.length > 0 && (u = t.getDatasetMeta(u[0]._datasetIndex).data), u ); }, "x-axis": function (t, e) { return s(t, e, { intersect: !1 }); }, point: function (t, e) { return o(t, i(e, t)); }, nearest: function (t, e, n) { var a = i(e, t); n.axis = n.axis || "xy"; var o = l(n.axis), s = r(t, a, n.intersect, o); return ( s.length > 1 && s.sort(function (t, e) { var n = t.getArea() - e.getArea(); return ( 0 === n && (n = t._datasetIndex - e._datasetIndex), n ); }), s.slice(0, 1) ); }, x: function (t, e, n) { var o = i(e, t), r = [], l = !1; return ( a(t, function (t) { t.inXRange(o.x) && r.push(t), t.inRange(o.x, o.y) && (l = !0); }), n.intersect && !l && (r = []), r ); }, y: function (t, e, n) { var o = i(e, t), r = [], l = !1; return ( a(t, function (t) { t.inYRange(o.y) && r.push(t), t.inRange(o.x, o.y) && (l = !0); }), n.intersect && !l && (r = []), r ); }, }, }; }, { 45: 45 }, ], 29: [ function (t, e, n) { "use strict"; t(25)._set("global", { responsive: !0, responsiveAnimationDuration: 0, maintainAspectRatio: !0, events: [ "mousemove", "mouseout", "click", "touchstart", "touchmove", ], hover: { onHover: null, mode: "nearest", intersect: !0, animationDuration: 400, }, onClick: null, defaultColor: "rgba(0,0,0,0.1)", defaultFontColor: "#666", defaultFontFamily: "'Helvetica Neue', 'Helvetica', 'Arial', sans-serif", defaultFontSize: 12, defaultFontStyle: "normal", showLines: !0, elements: {}, layout: { padding: { top: 0, right: 0, bottom: 0, left: 0 } }, }), (e.exports = function () { var t = function (t, e) { return this.construct(t, e), this; }; return (t.Chart = t), t; }); }, { 25: 25 }, ], 30: [ function (t, e, n) { "use strict"; var i = t(45); e.exports = function (t) { function e(t, e) { return i.where(t, function (t) { return t.position === e; }); } function n(t, e) { t.forEach(function (t, e) { return (t._tmpIndex_ = e), t; }), t.sort(function (t, n) { var i = e ? n : t, a = e ? t : n; return i.weight === a.weight ? i._tmpIndex_ - a._tmpIndex_ : i.weight - a.weight; }), t.forEach(function (t) { delete t._tmpIndex_; }); } t.layoutService = { defaults: {}, addBox: function (t, e) { t.boxes || (t.boxes = []), (e.fullWidth = e.fullWidth || !1), (e.position = e.position || "top"), (e.weight = e.weight || 0), t.boxes.push(e); }, removeBox: function (t, e) { var n = t.boxes ? t.boxes.indexOf(e) : -1; -1 !== n && t.boxes.splice(n, 1); }, configure: function (t, e, n) { for ( var i, a = ["fullWidth", "position", "weight"], o = a.length, r = 0; r < o; ++r ) (i = a[r]), n.hasOwnProperty(i) && (e[i] = n[i]); }, update: function (t, a, o) { function r(t) { var e = i.findNextWhere(_, function (e) { return e.box === t; }); if (e) if (t.isHorizontal()) { var n = { left: Math.max(T, D), right: Math.max(F, I), top: 0, bottom: 0, }; t.update(t.fullWidth ? x : S, y / 2, n); } else t.update(e.minSize.width, C); } function l(t) { t.isHorizontal() ? ((t.left = t.fullWidth ? d : T), (t.right = t.fullWidth ? a - c : T + S), (t.top = V), (t.bottom = V + t.height), (V = t.bottom)) : ((t.left = N), (t.right = N + t.width), (t.top = O), (t.bottom = O + C), (N = t.right)); } if (t) { var s = t.options.layout || {}, u = i.options.toPadding(s.padding), d = u.left, c = u.right, h = u.top, f = u.bottom, g = e(t.boxes, "left"), p = e(t.boxes, "right"), v = e(t.boxes, "top"), m = e(t.boxes, "bottom"), b = e(t.boxes, "chartArea"); n(g, !0), n(p, !1), n(v, !0), n(m, !1); var x = a - d - c, y = o - h - f, k = y / 2, w = (a - x / 2) / (g.length + p.length), M = (o - k) / (v.length + m.length), S = x, C = y, _ = []; i.each(g.concat(p, v, m), function (t) { var e, n = t.isHorizontal(); n ? ((e = t.update(t.fullWidth ? x : S, M)), (C -= e.height)) : ((e = t.update(w, k)), (S -= e.width)), _.push({ horizontal: n, minSize: e, box: t }); }); var D = 0, I = 0, P = 0, A = 0; i.each(v.concat(m), function (t) { if (t.getPadding) { var e = t.getPadding(); (D = Math.max(D, e.left)), (I = Math.max(I, e.right)); } }), i.each(g.concat(p), function (t) { if (t.getPadding) { var e = t.getPadding(); (P = Math.max(P, e.top)), (A = Math.max(A, e.bottom)); } }); var T = d, F = c, O = h, R = f; i.each(g.concat(p), r), i.each(g, function (t) { T += t.width; }), i.each(p, function (t) { F += t.width; }), i.each(v.concat(m), r), i.each(v, function (t) { O += t.height; }), i.each(m, function (t) { R += t.height; }), i.each(g.concat(p), function (t) { var e = i.findNextWhere(_, function (e) { return e.box === t; }), n = { left: 0, right: 0, top: O, bottom: R }; e && t.update(e.minSize.width, C, n); }), (T = d), (F = c), (O = h), (R = f), i.each(g, function (t) { T += t.width; }), i.each(p, function (t) { F += t.width; }), i.each(v, function (t) { O += t.height; }), i.each(m, function (t) { R += t.height; }); var L = Math.max(D - T, 0); (T += L), (F += Math.max(I - F, 0)); var z = Math.max(P - O, 0); (O += z), (R += Math.max(A - R, 0)); var B = o - O - R, W = a - T - F; (W === S && B === C) || (i.each(g, function (t) { t.height = B; }), i.each(p, function (t) { t.height = B; }), i.each(v, function (t) { t.fullWidth || (t.width = W); }), i.each(m, function (t) { t.fullWidth || (t.width = W); }), (C = B), (S = W)); var N = d + L, V = h + z; i.each(g.concat(v), l), (N += S), (V += C), i.each(p, l), i.each(m, l), (t.chartArea = { left: T, top: O, right: T + S, bottom: O + C, }), i.each(b, function (e) { (e.left = t.chartArea.left), (e.top = t.chartArea.top), (e.right = t.chartArea.right), (e.bottom = t.chartArea.bottom), e.update(S, C); }); } }, }; }; }, { 45: 45 }, ], 31: [ function (t, e, n) { "use strict"; var i = t(25), a = t(26), o = t(45); i._set("global", { plugins: {} }), (e.exports = function (t) { (t.plugins = { _plugins: [], _cacheId: 0, register: function (t) { var e = this._plugins; [].concat(t).forEach(function (t) { -1 === e.indexOf(t) && e.push(t); }), this._cacheId++; }, unregister: function (t) { var e = this._plugins; [].concat(t).forEach(function (t) { var n = e.indexOf(t); -1 !== n && e.splice(n, 1); }), this._cacheId++; }, clear: function () { (this._plugins = []), this._cacheId++; }, count: function () { return this._plugins.length; }, getAll: function () { return this._plugins; }, notify: function (t, e, n) { var i, a, o, r, l, s = this.descriptors(t), u = s.length; for (i = 0; i < u; ++i) if ( ((a = s[i]), (o = a.plugin), "function" == typeof (l = o[e]) && ((r = [t].concat(n || [])).push(a.options), !1 === l.apply(o, r))) ) return !1; return !0; }, descriptors: function (t) { var e = t._plugins || (t._plugins = {}); if (e.id === this._cacheId) return e.descriptors; var n = [], a = [], r = (t && t.config) || {}, l = (r.options && r.options.plugins) || {}; return ( this._plugins.concat(r.plugins || []).forEach(function (t) { if (-1 === n.indexOf(t)) { var e = t.id, r = l[e]; !1 !== r && (!0 === r && (r = o.clone(i.global.plugins[e])), n.push(t), a.push({ plugin: t, options: r || {} })); } }), (e.descriptors = a), (e.id = this._cacheId), a ); }, }), (t.pluginService = t.plugins), (t.PluginBase = a.extend({})); }); }, { 25: 25, 26: 26, 45: 45 }, ], 32: [ function (t, e, n) { "use strict"; function i(t) { var e, n, i = []; for (e = 0, n = t.length; e < n; ++e) i.push(t[e].label); return i; } function a(t, e, n) { var i = t.getPixelForTick(e); return ( n && (i -= 0 === e ? (t.getPixelForTick(1) - i) / 2 : (i - t.getPixelForTick(e - 1)) / 2), i ); } var o = t(25), r = t(26), l = t(45), s = t(34); o._set("scale", { display: !0, position: "left", offset: !1, gridLines: { display: !0, color: "rgba(0, 0, 0, 0.1)", lineWidth: 1, drawBorder: !0, drawOnChartArea: !0, drawTicks: !0, tickMarkLength: 10, zeroLineWidth: 1, zeroLineColor: "rgba(0,0,0,0.25)", zeroLineBorderDash: [], zeroLineBorderDashOffset: 0, offsetGridLines: !1, borderDash: [], borderDashOffset: 0, }, scaleLabel: { display: !1, labelString: "", lineHeight: 1.2, padding: { top: 4, bottom: 4 }, }, ticks: { beginAtZero: !1, minRotation: 0, maxRotation: 50, mirror: !1, padding: 0, reverse: !1, display: !0, autoSkip: !0, autoSkipPadding: 0, labelOffset: 0, callback: s.formatters.values, minor: {}, major: {}, }, }), (e.exports = function (t) { function e(t, e, n) { return l.isArray(e) ? l.longestText(t, n, e) : t.measureText(e).width; } function n(t) { var e = l.valueOrDefault, n = o.global, i = e(t.fontSize, n.defaultFontSize), a = e(t.fontStyle, n.defaultFontStyle), r = e(t.fontFamily, n.defaultFontFamily); return { size: i, style: a, family: r, font: l.fontString(i, a, r), }; } function s(t) { return l.options.toLineHeight( l.valueOrDefault(t.lineHeight, 1.2), l.valueOrDefault(t.fontSize, o.global.defaultFontSize) ); } t.Scale = r.extend({ getPadding: function () { var t = this; return { left: t.paddingLeft || 0, top: t.paddingTop || 0, right: t.paddingRight || 0, bottom: t.paddingBottom || 0, }; }, getTicks: function () { return this._ticks; }, mergeTicksOptions: function () { var t = this.options.ticks; !1 === t.minor && (t.minor = { display: !1 }), !1 === t.major && (t.major = { display: !1 }); for (var e in t) "major" !== e && "minor" !== e && (void 0 === t.minor[e] && (t.minor[e] = t[e]), void 0 === t.major[e] && (t.major[e] = t[e])); }, beforeUpdate: function () { l.callback(this.options.beforeUpdate, [this]); }, update: function (t, e, n) { var i, a, o, r, s, u, d = this; for ( d.beforeUpdate(), d.maxWidth = t, d.maxHeight = e, d.margins = l.extend( { left: 0, right: 0, top: 0, bottom: 0 }, n ), d.longestTextCache = d.longestTextCache || {}, d.beforeSetDimensions(), d.setDimensions(), d.afterSetDimensions(), d.beforeDataLimits(), d.determineDataLimits(), d.afterDataLimits(), d.beforeBuildTicks(), s = d.buildTicks() || [], d.afterBuildTicks(), d.beforeTickToLabelConversion(), o = d.convertTicksToLabels(s) || d.ticks, d.afterTickToLabelConversion(), d.ticks = o, i = 0, a = o.length; i < a; ++i ) (r = o[i]), (u = s[i]) ? (u.label = r) : s.push((u = { label: r, major: !1 })); return ( (d._ticks = s), d.beforeCalculateTickRotation(), d.calculateTickRotation(), d.afterCalculateTickRotation(), d.beforeFit(), d.fit(), d.afterFit(), d.afterUpdate(), d.minSize ); }, afterUpdate: function () { l.callback(this.options.afterUpdate, [this]); }, beforeSetDimensions: function () { l.callback(this.options.beforeSetDimensions, [this]); }, setDimensions: function () { var t = this; t.isHorizontal() ? ((t.width = t.maxWidth), (t.left = 0), (t.right = t.width)) : ((t.height = t.maxHeight), (t.top = 0), (t.bottom = t.height)), (t.paddingLeft = 0), (t.paddingTop = 0), (t.paddingRight = 0), (t.paddingBottom = 0); }, afterSetDimensions: function () { l.callback(this.options.afterSetDimensions, [this]); }, beforeDataLimits: function () { l.callback(this.options.beforeDataLimits, [this]); }, determineDataLimits: l.noop, afterDataLimits: function () { l.callback(this.options.afterDataLimits, [this]); }, beforeBuildTicks: function () { l.callback(this.options.beforeBuildTicks, [this]); }, buildTicks: l.noop, afterBuildTicks: function () { l.callback(this.options.afterBuildTicks, [this]); }, beforeTickToLabelConversion: function () { l.callback(this.options.beforeTickToLabelConversion, [this]); }, convertTicksToLabels: function () { var t = this, e = t.options.ticks; t.ticks = t.ticks.map(e.userCallback || e.callback, this); }, afterTickToLabelConversion: function () { l.callback(this.options.afterTickToLabelConversion, [this]); }, beforeCalculateTickRotation: function () { l.callback(this.options.beforeCalculateTickRotation, [this]); }, calculateTickRotation: function () { var t = this, e = t.ctx, a = t.options.ticks, o = i(t._ticks), r = n(a); e.font = r.font; var s = a.minRotation || 0; if (o.length && t.options.display && t.isHorizontal()) for ( var u, d = l.longestText(e, r.font, o, t.longestTextCache), c = d, h = t.getPixelForTick(1) - t.getPixelForTick(0) - 6; c > h && s < a.maxRotation; ) { var f = l.toRadians(s); if (((u = Math.cos(f)), Math.sin(f) * d > t.maxHeight)) { s--; break; } s++, (c = u * d); } t.labelRotation = s; }, afterCalculateTickRotation: function () { l.callback(this.options.afterCalculateTickRotation, [this]); }, beforeFit: function () { l.callback(this.options.beforeFit, [this]); }, fit: function () { var t = this, a = (t.minSize = { width: 0, height: 0 }), o = i(t._ticks), r = t.options, u = r.ticks, d = r.scaleLabel, c = r.gridLines, h = r.display, f = t.isHorizontal(), g = n(u), p = r.gridLines.tickMarkLength; if ( ((a.width = f ? t.isFullWidth() ? t.maxWidth - t.margins.left - t.margins.right : t.maxWidth : h && c.drawTicks ? p : 0), (a.height = f ? (h && c.drawTicks ? p : 0) : t.maxHeight), d.display && h) ) { var v = s(d) + l.options.toPadding(d.padding).height; f ? (a.height += v) : (a.width += v); } if (u.display && h) { var m = l.longestText(t.ctx, g.font, o, t.longestTextCache), b = l.numberOfLabelLines(o), x = 0.5 * g.size, y = t.options.ticks.padding; if (f) { t.longestLabelWidth = m; var k = l.toRadians(t.labelRotation), w = Math.cos(k), M = Math.sin(k) * m + g.size * b + x * (b - 1) + x; (a.height = Math.min(t.maxHeight, a.height + M + y)), (t.ctx.font = g.font); var S = e(t.ctx, o[0], g.font), C = e(t.ctx, o[o.length - 1], g.font); 0 !== t.labelRotation ? ((t.paddingLeft = "bottom" === r.position ? w * S + 3 : w * x + 3), (t.paddingRight = "bottom" === r.position ? w * x + 3 : w * C + 3)) : ((t.paddingLeft = S / 2 + 3), (t.paddingRight = C / 2 + 3)); } else u.mirror ? (m = 0) : (m += y + x), (a.width = Math.min(t.maxWidth, a.width + m)), (t.paddingTop = g.size / 2), (t.paddingBottom = g.size / 2); } t.handleMargins(), (t.width = a.width), (t.height = a.height); }, handleMargins: function () { var t = this; t.margins && ((t.paddingLeft = Math.max( t.paddingLeft - t.margins.left, 0 )), (t.paddingTop = Math.max(t.paddingTop - t.margins.top, 0)), (t.paddingRight = Math.max( t.paddingRight - t.margins.right, 0 )), (t.paddingBottom = Math.max( t.paddingBottom - t.margins.bottom, 0 ))); }, afterFit: function () { l.callback(this.options.afterFit, [this]); }, isHorizontal: function () { return ( "top" === this.options.position || "bottom" === this.options.position ); }, isFullWidth: function () { return this.options.fullWidth; }, getRightValue: function (t) { if (l.isNullOrUndef(t)) return NaN; if ("number" == typeof t && !isFinite(t)) return NaN; if (t) if (this.isHorizontal()) { if (void 0 !== t.x) return this.getRightValue(t.x); } else if (void 0 !== t.y) return this.getRightValue(t.y); return t; }, getLabelForIndex: l.noop, getPixelForValue: l.noop, getValueForPixel: l.noop, getPixelForTick: function (t) { var e = this, n = e.options.offset; if (e.isHorizontal()) { var i = (e.width - (e.paddingLeft + e.paddingRight)) / Math.max(e._ticks.length - (n ? 0 : 1), 1), a = i * t + e.paddingLeft; n && (a += i / 2); var o = e.left + Math.round(a); return (o += e.isFullWidth() ? e.margins.left : 0); } var r = e.height - (e.paddingTop + e.paddingBottom); return e.top + t * (r / (e._ticks.length - 1)); }, getPixelForDecimal: function (t) { var e = this; if (e.isHorizontal()) { var n = (e.width - (e.paddingLeft + e.paddingRight)) * t + e.paddingLeft, i = e.left + Math.round(n); return (i += e.isFullWidth() ? e.margins.left : 0); } return e.top + t * e.height; }, getBasePixel: function () { return this.getPixelForValue(this.getBaseValue()); }, getBaseValue: function () { var t = this, e = t.min, n = t.max; return t.beginAtZero ? 0 : e < 0 && n < 0 ? n : e > 0 && n > 0 ? e : 0; }, _autoSkip: function (t) { var e, n, i, a, o = this, r = o.isHorizontal(), s = o.options.ticks.minor, u = t.length, d = l.toRadians(o.labelRotation), c = Math.cos(d), h = o.longestLabelWidth * c, f = []; for ( s.maxTicksLimit && (a = s.maxTicksLimit), r && ((e = !1), (h + s.autoSkipPadding) * u > o.width - (o.paddingLeft + o.paddingRight) && (e = 1 + Math.floor( ((h + s.autoSkipPadding) * u) / (o.width - (o.paddingLeft + o.paddingRight)) )), a && u > a && (e = Math.max(e, Math.floor(u / a)))), n = 0; n < u; n++ ) (i = t[n]), ((e > 1 && n % e > 0) || (n % e == 0 && n + e >= u)) && n !== u - 1 && delete i.label, f.push(i); return f; }, draw: function (t) { var e = this, i = e.options; if (i.display) { var r = e.ctx, u = o.global, d = i.ticks.minor, c = i.ticks.major || d, h = i.gridLines, f = i.scaleLabel, g = 0 !== e.labelRotation, p = e.isHorizontal(), v = d.autoSkip ? e._autoSkip(e.getTicks()) : e.getTicks(), m = l.valueOrDefault(d.fontColor, u.defaultFontColor), b = n(d), x = l.valueOrDefault(c.fontColor, u.defaultFontColor), y = n(c), k = h.drawTicks ? h.tickMarkLength : 0, w = l.valueOrDefault(f.fontColor, u.defaultFontColor), M = n(f), S = l.options.toPadding(f.padding), C = l.toRadians(e.labelRotation), _ = [], D = "right" === i.position ? e.left : e.right - k, I = "right" === i.position ? e.left + k : e.right, P = "bottom" === i.position ? e.top : e.bottom - k, A = "bottom" === i.position ? e.top + k : e.bottom; if ( (l.each(v, function (n, o) { if (!l.isNullOrUndef(n.label)) { var r, s, c, f, m = n.label; o === e.zeroLineIndex && i.offset === h.offsetGridLines ? ((r = h.zeroLineWidth), (s = h.zeroLineColor), (c = h.zeroLineBorderDash), (f = h.zeroLineBorderDashOffset)) : ((r = l.valueAtIndexOrDefault(h.lineWidth, o)), (s = l.valueAtIndexOrDefault(h.color, o)), (c = l.valueOrDefault( h.borderDash, u.borderDash )), (f = l.valueOrDefault( h.borderDashOffset, u.borderDashOffset ))); var b, x, y, w, M, S, T, F, O, R, L = "middle", z = "middle", B = d.padding; if (p) { var W = k + B; "bottom" === i.position ? ((z = g ? "middle" : "top"), (L = g ? "right" : "center"), (R = e.top + W)) : ((z = g ? "middle" : "bottom"), (L = g ? "left" : "center"), (R = e.bottom - W)); var N = a(e, o, h.offsetGridLines && v.length > 1); N < e.left && (s = "rgba(0,0,0,0)"), (N += l.aliasPixel(r)), (O = e.getPixelForTick(o) + d.labelOffset), (b = y = M = T = N), (x = P), (w = A), (S = t.top), (F = t.bottom); } else { var V, E = "left" === i.position; d.mirror ? ((L = E ? "left" : "right"), (V = B)) : ((L = E ? "right" : "left"), (V = k + B)), (O = E ? e.right - V : e.left + V); var H = a(e, o, h.offsetGridLines && v.length > 1); H < e.top && (s = "rgba(0,0,0,0)"), (H += l.aliasPixel(r)), (R = e.getPixelForTick(o) + d.labelOffset), (b = D), (y = I), (M = t.left), (T = t.right), (x = w = S = F = H); } _.push({ tx1: b, ty1: x, tx2: y, ty2: w, x1: M, y1: S, x2: T, y2: F, labelX: O, labelY: R, glWidth: r, glColor: s, glBorderDash: c, glBorderDashOffset: f, rotation: -1 * C, label: m, major: n.major, textBaseline: z, textAlign: L, }); } }), l.each(_, function (t) { if ( (h.display && (r.save(), (r.lineWidth = t.glWidth), (r.strokeStyle = t.glColor), r.setLineDash && (r.setLineDash(t.glBorderDash), (r.lineDashOffset = t.glBorderDashOffset)), r.beginPath(), h.drawTicks && (r.moveTo(t.tx1, t.ty1), r.lineTo(t.tx2, t.ty2)), h.drawOnChartArea && (r.moveTo(t.x1, t.y1), r.lineTo(t.x2, t.y2)), r.stroke(), r.restore()), d.display) ) { r.save(), r.translate(t.labelX, t.labelY), r.rotate(t.rotation), (r.font = t.major ? y.font : b.font), (r.fillStyle = t.major ? x : m), (r.textBaseline = t.textBaseline), (r.textAlign = t.textAlign); var e = t.label; if (l.isArray(e)) for (var n = 0, i = 0; n < e.length; ++n) r.fillText("" + e[n], 0, i), (i += 1.5 * b.size); else r.fillText(e, 0, 0); r.restore(); } }), f.display) ) { var T, F, O = 0, R = s(f) / 2; if (p) (T = e.left + (e.right - e.left) / 2), (F = "bottom" === i.position ? e.bottom - R - S.bottom : e.top + R + S.top); else { var L = "left" === i.position; (T = L ? e.left + R + S.top : e.right - R - S.top), (F = e.top + (e.bottom - e.top) / 2), (O = L ? -0.5 * Math.PI : 0.5 * Math.PI); } r.save(), r.translate(T, F), r.rotate(O), (r.textAlign = "center"), (r.textBaseline = "middle"), (r.fillStyle = w), (r.font = M.font), r.fillText(f.labelString, 0, 0), r.restore(); } if (h.drawBorder) { (r.lineWidth = l.valueAtIndexOrDefault(h.lineWidth, 0)), (r.strokeStyle = l.valueAtIndexOrDefault(h.color, 0)); var z = e.left, B = e.right, W = e.top, N = e.bottom, V = l.aliasPixel(r.lineWidth); p ? ((W = N = "top" === i.position ? e.bottom : e.top), (W += V), (N += V)) : ((z = B = "left" === i.position ? e.right : e.left), (z += V), (B += V)), r.beginPath(), r.moveTo(z, W), r.lineTo(B, N), r.stroke(); } } }, }); }); }, { 25: 25, 26: 26, 34: 34, 45: 45 }, ], 33: [ function (t, e, n) { "use strict"; var i = t(25), a = t(45); e.exports = function (t) { t.scaleService = { constructors: {}, defaults: {}, registerScaleType: function (t, e, n) { (this.constructors[t] = e), (this.defaults[t] = a.clone(n)); }, getScaleConstructor: function (t) { return this.constructors.hasOwnProperty(t) ? this.constructors[t] : void 0; }, getScaleDefaults: function (t) { return this.defaults.hasOwnProperty(t) ? a.merge({}, [i.scale, this.defaults[t]]) : {}; }, updateScaleDefaults: function (t, e) { var n = this; n.defaults.hasOwnProperty(t) && (n.defaults[t] = a.extend(n.defaults[t], e)); }, addScalesToLayout: function (e) { a.each(e.scales, function (n) { (n.fullWidth = n.options.fullWidth), (n.position = n.options.position), (n.weight = n.options.weight), t.layoutService.addBox(e, n); }); }, }; }; }, { 25: 25, 45: 45 }, ], 34: [ function (t, e, n) { "use strict"; var i = t(45); e.exports = { generators: { linear: function (t, e) { var n, a = []; if (t.stepSize && t.stepSize > 0) n = t.stepSize; else { var o = i.niceNum(e.max - e.min, !1); n = i.niceNum(o / (t.maxTicks - 1), !0); } var r = Math.floor(e.min / n) * n, l = Math.ceil(e.max / n) * n; t.min && t.max && t.stepSize && i.almostWhole((t.max - t.min) / t.stepSize, n / 1e3) && ((r = t.min), (l = t.max)); var s = (l - r) / n; (s = i.almostEquals(s, Math.round(s), n / 1e3) ? Math.round(s) : Math.ceil(s)), a.push(void 0 !== t.min ? t.min : r); for (var u = 1; u < s; ++u) a.push(r + u * n); return a.push(void 0 !== t.max ? t.max : l), a; }, logarithmic: function (t, e) { var n, a, o = [], r = i.valueOrDefault, l = r(t.min, Math.pow(10, Math.floor(i.log10(e.min)))), s = Math.floor(i.log10(e.max)), u = Math.ceil(e.max / Math.pow(10, s)); 0 === l ? ((n = Math.floor(i.log10(e.minNotZero))), (a = Math.floor(e.minNotZero / Math.pow(10, n))), o.push(l), (l = a * Math.pow(10, n))) : ((n = Math.floor(i.log10(l))), (a = Math.floor(l / Math.pow(10, n)))); do { o.push(l), 10 === ++a && ((a = 1), ++n), (l = a * Math.pow(10, n)); } while (n < s || (n === s && a < u)); var d = r(t.max, l); return o.push(d), o; }, }, formatters: { values: function (t) { return i.isArray(t) ? t : "" + t; }, linear: function (t, e, n) { var a = n.length > 3 ? n[2] - n[1] : n[1] - n[0]; Math.abs(a) > 1 && t !== Math.floor(t) && (a = t - Math.floor(t)); var o = i.log10(Math.abs(a)), r = ""; if (0 !== t) { var l = -1 * Math.floor(o); (l = Math.max(Math.min(l, 20), 0)), (r = t.toFixed(l)); } else r = "0"; return r; }, logarithmic: function (t, e, n) { var a = t / Math.pow(10, Math.floor(i.log10(t))); return 0 === t ? "0" : 1 === a || 2 === a || 5 === a || 0 === e || e === n.length - 1 ? t.toExponential() : ""; }, }, }; }, { 45: 45 }, ], 35: [ function (t, e, n) { "use strict"; var i = t(25), a = t(26), o = t(45); i._set("global", { tooltips: { enabled: !0, custom: null, mode: "nearest", position: "average", intersect: !0, backgroundColor: "rgba(0,0,0,0.8)", titleFontStyle: "bold", titleSpacing: 2, titleMarginBottom: 6, titleFontColor: "#fff", titleAlign: "left", bodySpacing: 2, bodyFontColor: "#fff", bodyAlign: "left", footerFontStyle: "bold", footerSpacing: 2, footerMarginTop: 6, footerFontColor: "#fff", footerAlign: "left", yPadding: 6, xPadding: 6, caretPadding: 2, caretSize: 5, cornerRadius: 6, multiKeyBackground: "#fff", displayColors: !0, borderColor: "rgba(0,0,0,0)", borderWidth: 0, callbacks: { beforeTitle: o.noop, title: function (t, e) { var n = "", i = e.labels, a = i ? i.length : 0; if (t.length > 0) { var o = t[0]; o.xLabel ? (n = o.xLabel) : a > 0 && o.index < a && (n = i[o.index]); } return n; }, afterTitle: o.noop, beforeBody: o.noop, beforeLabel: o.noop, label: function (t, e) { var n = e.datasets[t.datasetIndex].label || ""; return n && (n += ": "), (n += t.yLabel); }, labelColor: function (t, e) { var n = e.getDatasetMeta(t.datasetIndex).data[t.index]._view; return { borderColor: n.borderColor, backgroundColor: n.backgroundColor, }; }, labelTextColor: function () { return this._options.bodyFontColor; }, afterLabel: o.noop, afterBody: o.noop, beforeFooter: o.noop, footer: o.noop, afterFooter: o.noop, }, }, }), (e.exports = function (t) { function e(t, e) { var n = o.color(t); return n.alpha(e * n.alpha()).rgbaString(); } function n(t, e) { return ( e && (o.isArray(e) ? Array.prototype.push.apply(t, e) : t.push(e)), t ); } function r(t) { var e = t._xScale, n = t._yScale || t._scale, i = t._index, a = t._datasetIndex; return { xLabel: e ? e.getLabelForIndex(i, a) : "", yLabel: n ? n.getLabelForIndex(i, a) : "", index: i, datasetIndex: a, x: t._model.x, y: t._model.y, }; } function l(t) { var e = i.global, n = o.valueOrDefault; return { xPadding: t.xPadding, yPadding: t.yPadding, xAlign: t.xAlign, yAlign: t.yAlign, bodyFontColor: t.bodyFontColor, _bodyFontFamily: n(t.bodyFontFamily, e.defaultFontFamily), _bodyFontStyle: n(t.bodyFontStyle, e.defaultFontStyle), _bodyAlign: t.bodyAlign, bodyFontSize: n(t.bodyFontSize, e.defaultFontSize), bodySpacing: t.bodySpacing, titleFontColor: t.titleFontColor, _titleFontFamily: n(t.titleFontFamily, e.defaultFontFamily), _titleFontStyle: n(t.titleFontStyle, e.defaultFontStyle), titleFontSize: n(t.titleFontSize, e.defaultFontSize), _titleAlign: t.titleAlign, titleSpacing: t.titleSpacing, titleMarginBottom: t.titleMarginBottom, footerFontColor: t.footerFontColor, _footerFontFamily: n(t.footerFontFamily, e.defaultFontFamily), _footerFontStyle: n(t.footerFontStyle, e.defaultFontStyle), footerFontSize: n(t.footerFontSize, e.defaultFontSize), _footerAlign: t.footerAlign, footerSpacing: t.footerSpacing, footerMarginTop: t.footerMarginTop, caretSize: t.caretSize, cornerRadius: t.cornerRadius, backgroundColor: t.backgroundColor, opacity: 0, legendColorBackground: t.multiKeyBackground, displayColors: t.displayColors, borderColor: t.borderColor, borderWidth: t.borderWidth, }; } function s(t, e) { var n = t._chart.ctx, i = 2 * e.yPadding, a = 0, r = e.body, l = r.reduce(function (t, e) { return ( t + e.before.length + e.lines.length + e.after.length ); }, 0); l += e.beforeBody.length + e.afterBody.length; var s = e.title.length, u = e.footer.length, d = e.titleFontSize, c = e.bodyFontSize, h = e.footerFontSize; (i += s * d), (i += s ? (s - 1) * e.titleSpacing : 0), (i += s ? e.titleMarginBottom : 0), (i += l * c), (i += l ? (l - 1) * e.bodySpacing : 0), (i += u ? e.footerMarginTop : 0), (i += u * h), (i += u ? (u - 1) * e.footerSpacing : 0); var f = 0, g = function (t) { a = Math.max(a, n.measureText(t).width + f); }; return ( (n.font = o.fontString( d, e._titleFontStyle, e._titleFontFamily )), o.each(e.title, g), (n.font = o.fontString( c, e._bodyFontStyle, e._bodyFontFamily )), o.each(e.beforeBody.concat(e.afterBody), g), (f = e.displayColors ? c + 2 : 0), o.each(r, function (t) { o.each(t.before, g), o.each(t.lines, g), o.each(t.after, g); }), (f = 0), (n.font = o.fontString( h, e._footerFontStyle, e._footerFontFamily )), o.each(e.footer, g), (a += 2 * e.xPadding), { width: a, height: i } ); } function u(t, e) { var n = t._model, i = t._chart, a = t._chart.chartArea, o = "center", r = "center"; n.y < e.height ? (r = "top") : n.y > i.height - e.height && (r = "bottom"); var l, s, u, d, c, h = (a.left + a.right) / 2, f = (a.top + a.bottom) / 2; "center" === r ? ((l = function (t) { return t <= h; }), (s = function (t) { return t > h; })) : ((l = function (t) { return t <= e.width / 2; }), (s = function (t) { return t >= i.width - e.width / 2; })), (u = function (t) { return t + e.width > i.width; }), (d = function (t) { return t - e.width < 0; }), (c = function (t) { return t <= f ? "top" : "bottom"; }), l(n.x) ? ((o = "left"), u(n.x) && ((o = "center"), (r = c(n.y)))) : s(n.x) && ((o = "right"), d(n.x) && ((o = "center"), (r = c(n.y)))); var g = t._options; return { xAlign: g.xAlign ? g.xAlign : o, yAlign: g.yAlign ? g.yAlign : r, }; } function d(t, e, n) { var i = t.x, a = t.y, o = t.caretSize, r = t.caretPadding, l = t.cornerRadius, s = n.xAlign, u = n.yAlign, d = o + r, c = l + r; return ( "right" === s ? (i -= e.width) : "center" === s && (i -= e.width / 2), "top" === u ? (a += d) : (a -= "bottom" === u ? e.height + d : e.height / 2), "center" === u ? "left" === s ? (i += d) : "right" === s && (i -= d) : "left" === s ? (i -= c) : "right" === s && (i += c), { x: i, y: a } ); } (t.Tooltip = a.extend({ initialize: function () { (this._model = l(this._options)), (this._lastActive = []); }, getTitle: function () { var t = this, e = t._options.callbacks, i = e.beforeTitle.apply(t, arguments), a = e.title.apply(t, arguments), o = e.afterTitle.apply(t, arguments), r = []; return (r = n(r, i)), (r = n(r, a)), (r = n(r, o)); }, getBeforeBody: function () { var t = this._options.callbacks.beforeBody.apply( this, arguments ); return o.isArray(t) ? t : void 0 !== t ? [t] : []; }, getBody: function (t, e) { var i = this, a = i._options.callbacks, r = []; return ( o.each(t, function (t) { var o = { before: [], lines: [], after: [] }; n(o.before, a.beforeLabel.call(i, t, e)), n(o.lines, a.label.call(i, t, e)), n(o.after, a.afterLabel.call(i, t, e)), r.push(o); }), r ); }, getAfterBody: function () { var t = this._options.callbacks.afterBody.apply( this, arguments ); return o.isArray(t) ? t : void 0 !== t ? [t] : []; }, getFooter: function () { var t = this, e = t._options.callbacks, i = e.beforeFooter.apply(t, arguments), a = e.footer.apply(t, arguments), o = e.afterFooter.apply(t, arguments), r = []; return (r = n(r, i)), (r = n(r, a)), (r = n(r, o)); }, update: function (e) { var n, i, a = this, c = a._options, h = a._model, f = (a._model = l(c)), g = a._active, p = a._data, v = { xAlign: h.xAlign, yAlign: h.yAlign }, m = { x: h.x, y: h.y }, b = { width: h.width, height: h.height }, x = { x: h.caretX, y: h.caretY }; if (g.length) { f.opacity = 1; var y = [], k = []; x = t.Tooltip.positioners[c.position].call( a, g, a._eventPosition ); var w = []; for (n = 0, i = g.length; n < i; ++n) w.push(r(g[n])); c.filter && (w = w.filter(function (t) { return c.filter(t, p); })), c.itemSort && (w = w.sort(function (t, e) { return c.itemSort(t, e, p); })), o.each(w, function (t) { y.push(c.callbacks.labelColor.call(a, t, a._chart)), k.push( c.callbacks.labelTextColor.call(a, t, a._chart) ); }), (f.title = a.getTitle(w, p)), (f.beforeBody = a.getBeforeBody(w, p)), (f.body = a.getBody(w, p)), (f.afterBody = a.getAfterBody(w, p)), (f.footer = a.getFooter(w, p)), (f.x = Math.round(x.x)), (f.y = Math.round(x.y)), (f.caretPadding = c.caretPadding), (f.labelColors = y), (f.labelTextColors = k), (f.dataPoints = w), (m = d(f, (b = s(this, f)), (v = u(this, b)))); } else f.opacity = 0; return ( (f.xAlign = v.xAlign), (f.yAlign = v.yAlign), (f.x = m.x), (f.y = m.y), (f.width = b.width), (f.height = b.height), (f.caretX = x.x), (f.caretY = x.y), (a._model = f), e && c.custom && c.custom.call(a, f), a ); }, drawCaret: function (t, e) { var n = this._chart.ctx, i = this._view, a = this.getCaretPosition(t, e, i); n.lineTo(a.x1, a.y1), n.lineTo(a.x2, a.y2), n.lineTo(a.x3, a.y3); }, getCaretPosition: function (t, e, n) { var i, a, o, r, l, s, u = n.caretSize, d = n.cornerRadius, c = n.xAlign, h = n.yAlign, f = t.x, g = t.y, p = e.width, v = e.height; if ("center" === h) (l = g + v / 2), "left" === c ? ((a = (i = f) - u), (o = i), (r = l + u), (s = l - u)) : ((a = (i = f + p) + u), (o = i), (r = l - u), (s = l + u)); else if ( ("left" === c ? ((i = (a = f + d + u) - u), (o = a + u)) : "right" === c ? ((i = (a = f + p - d - u) - u), (o = a + u)) : ((i = (a = f + p / 2) - u), (o = a + u)), "top" === h) ) (l = (r = g) - u), (s = r); else { (l = (r = g + v) + u), (s = r); var m = o; (o = i), (i = m); } return { x1: i, x2: a, x3: o, y1: r, y2: l, y3: s }; }, drawTitle: function (t, n, i, a) { var r = n.title; if (r.length) { (i.textAlign = n._titleAlign), (i.textBaseline = "top"); var l = n.titleFontSize, s = n.titleSpacing; (i.fillStyle = e(n.titleFontColor, a)), (i.font = o.fontString( l, n._titleFontStyle, n._titleFontFamily )); var u, d; for (u = 0, d = r.length; u < d; ++u) i.fillText(r[u], t.x, t.y), (t.y += l + s), u + 1 === r.length && (t.y += n.titleMarginBottom - s); } }, drawBody: function (t, n, i, a) { var r = n.bodyFontSize, l = n.bodySpacing, s = n.body; (i.textAlign = n._bodyAlign), (i.textBaseline = "top"), (i.font = o.fontString( r, n._bodyFontStyle, n._bodyFontFamily )); var u = 0, d = function (e) { i.fillText(e, t.x + u, t.y), (t.y += r + l); }; (i.fillStyle = e(n.bodyFontColor, a)), o.each(n.beforeBody, d); var c = n.displayColors; (u = c ? r + 2 : 0), o.each(s, function (l, s) { var u = e(n.labelTextColors[s], a); (i.fillStyle = u), o.each(l.before, d), o.each(l.lines, function (o) { c && ((i.fillStyle = e(n.legendColorBackground, a)), i.fillRect(t.x, t.y, r, r), (i.lineWidth = 1), (i.strokeStyle = e( n.labelColors[s].borderColor, a )), i.strokeRect(t.x, t.y, r, r), (i.fillStyle = e( n.labelColors[s].backgroundColor, a )), i.fillRect(t.x + 1, t.y + 1, r - 2, r - 2), (i.fillStyle = u)), d(o); }), o.each(l.after, d); }), (u = 0), o.each(n.afterBody, d), (t.y -= l); }, drawFooter: function (t, n, i, a) { var r = n.footer; r.length && ((t.y += n.footerMarginTop), (i.textAlign = n._footerAlign), (i.textBaseline = "top"), (i.fillStyle = e(n.footerFontColor, a)), (i.font = o.fontString( n.footerFontSize, n._footerFontStyle, n._footerFontFamily )), o.each(r, function (e) { i.fillText(e, t.x, t.y), (t.y += n.footerFontSize + n.footerSpacing); })); }, drawBackground: function (t, n, i, a, o) { (i.fillStyle = e(n.backgroundColor, o)), (i.strokeStyle = e(n.borderColor, o)), (i.lineWidth = n.borderWidth); var r = n.xAlign, l = n.yAlign, s = t.x, u = t.y, d = a.width, c = a.height, h = n.cornerRadius; i.beginPath(), i.moveTo(s + h, u), "top" === l && this.drawCaret(t, a), i.lineTo(s + d - h, u), i.quadraticCurveTo(s + d, u, s + d, u + h), "center" === l && "right" === r && this.drawCaret(t, a), i.lineTo(s + d, u + c - h), i.quadraticCurveTo(s + d, u + c, s + d - h, u + c), "bottom" === l && this.drawCaret(t, a), i.lineTo(s + h, u + c), i.quadraticCurveTo(s, u + c, s, u + c - h), "center" === l && "left" === r && this.drawCaret(t, a), i.lineTo(s, u + h), i.quadraticCurveTo(s, u, s + h, u), i.closePath(), i.fill(), n.borderWidth > 0 && i.stroke(); }, draw: function () { var t = this._chart.ctx, e = this._view; if (0 !== e.opacity) { var n = { width: e.width, height: e.height }, i = { x: e.x, y: e.y }, a = Math.abs(e.opacity < 0.001) ? 0 : e.opacity, o = e.title.length || e.beforeBody.length || e.body.length || e.afterBody.length || e.footer.length; this._options.enabled && o && (this.drawBackground(i, e, t, n, a), (i.x += e.xPadding), (i.y += e.yPadding), this.drawTitle(i, e, t, a), this.drawBody(i, e, t, a), this.drawFooter(i, e, t, a)); } }, handleEvent: function (t) { var e = this, n = e._options, i = !1; if ( ((e._lastActive = e._lastActive || []), "mouseout" === t.type ? (e._active = []) : (e._active = e._chart.getElementsAtEventForMode( t, n.mode, n )), !(i = !o.arrayEquals(e._active, e._lastActive))) ) return !1; if (((e._lastActive = e._active), n.enabled || n.custom)) { e._eventPosition = { x: t.x, y: t.y }; var a = e._model; e.update(!0), e.pivot(), (i |= a.x !== e._model.x || a.y !== e._model.y); } return i; }, })), (t.Tooltip.positioners = { average: function (t) { if (!t.length) return !1; var e, n, i = 0, a = 0, o = 0; for (e = 0, n = t.length; e < n; ++e) { var r = t[e]; if (r && r.hasValue()) { var l = r.tooltipPosition(); (i += l.x), (a += l.y), ++o; } } return { x: Math.round(i / o), y: Math.round(a / o) }; }, nearest: function (t, e) { var n, i, a, r = e.x, l = e.y, s = Number.POSITIVE_INFINITY; for (n = 0, i = t.length; n < i; ++n) { var u = t[n]; if (u && u.hasValue()) { var d = u.getCenterPoint(), c = o.distanceBetweenPoints(e, d); c < s && ((s = c), (a = u)); } } if (a) { var h = a.tooltipPosition(); (r = h.x), (l = h.y); } return { x: r, y: l }; }, }); }); }, { 25: 25, 26: 26, 45: 45 }, ], 36: [ function (t, e, n) { "use strict"; var i = t(25), a = t(26), o = t(45); i._set("global", { elements: { arc: { backgroundColor: i.global.defaultColor, borderColor: "#fff", borderWidth: 2, }, }, }), (e.exports = a.extend({ inLabelRange: function (t) { var e = this._view; return ( !!e && Math.pow(t - e.x, 2) < Math.pow(e.radius + e.hoverRadius, 2) ); }, inRange: function (t, e) { var n = this._view; if (n) { for ( var i = o.getAngleFromPoint(n, { x: t, y: e }), a = i.angle, r = i.distance, l = n.startAngle, s = n.endAngle; s < l; ) s += 2 * Math.PI; for (; a > s; ) a -= 2 * Math.PI; for (; a < l; ) a += 2 * Math.PI; var u = a >= l && a <= s, d = r >= n.innerRadius && r <= n.outerRadius; return u && d; } return !1; }, getCenterPoint: function () { var t = this._view, e = (t.startAngle + t.endAngle) / 2, n = (t.innerRadius + t.outerRadius) / 2; return { x: t.x + Math.cos(e) * n, y: t.y + Math.sin(e) * n }; }, getArea: function () { var t = this._view; return ( Math.PI * ((t.endAngle - t.startAngle) / (2 * Math.PI)) * (Math.pow(t.outerRadius, 2) - Math.pow(t.innerRadius, 2)) ); }, tooltipPosition: function () { var t = this._view, e = t.startAngle + (t.endAngle - t.startAngle) / 2, n = (t.outerRadius - t.innerRadius) / 2 + t.innerRadius; return { x: t.x + Math.cos(e) * n, y: t.y + Math.sin(e) * n }; }, draw: function () { var t = this._chart.ctx, e = this._view, n = e.startAngle, i = e.endAngle; t.beginPath(), t.arc(e.x, e.y, e.outerRadius, n, i), t.arc(e.x, e.y, e.innerRadius, i, n, !0), t.closePath(), (t.strokeStyle = e.borderColor), (t.lineWidth = e.borderWidth), (t.fillStyle = e.backgroundColor), t.fill(), (t.lineJoin = "bevel"), e.borderWidth && t.stroke(); }, })); }, { 25: 25, 26: 26, 45: 45 }, ], 37: [ function (t, e, n) { "use strict"; var i = t(25), a = t(26), o = t(45), r = i.global; i._set("global", { elements: { line: { tension: 0.4, backgroundColor: r.defaultColor, borderWidth: 3, borderColor: r.defaultColor, borderCapStyle: "butt", borderDash: [], borderDashOffset: 0, borderJoinStyle: "miter", capBezierPoints: !0, fill: !0, }, }, }), (e.exports = a.extend({ draw: function () { var t, e, n, i, a = this, l = a._view, s = a._chart.ctx, u = l.spanGaps, d = a._children.slice(), c = r.elements.line, h = -1; for ( a._loop && d.length && d.push(d[0]), s.save(), s.lineCap = l.borderCapStyle || c.borderCapStyle, s.setLineDash && s.setLineDash(l.borderDash || c.borderDash), s.lineDashOffset = l.borderDashOffset || c.borderDashOffset, s.lineJoin = l.borderJoinStyle || c.borderJoinStyle, s.lineWidth = l.borderWidth || c.borderWidth, s.strokeStyle = l.borderColor || r.defaultColor, s.beginPath(), h = -1, t = 0; t < d.length; ++t ) (e = d[t]), (n = o.previousItem(d, t)), (i = e._view), 0 === t ? i.skip || (s.moveTo(i.x, i.y), (h = t)) : ((n = -1 === h ? n : d[h]), i.skip || ((h !== t - 1 && !u) || -1 === h ? s.moveTo(i.x, i.y) : o.canvas.lineTo(s, n._view, e._view), (h = t))); s.stroke(), s.restore(); }, })); }, { 25: 25, 26: 26, 45: 45 }, ], 38: [ function (t, e, n) { "use strict"; function i(t) { var e = this._view; return ( !!e && Math.pow(t - e.x, 2) < Math.pow(e.radius + e.hitRadius, 2) ); } var a = t(25), o = t(26), r = t(45), l = a.global.defaultColor; a._set("global", { elements: { point: { radius: 3, pointStyle: "circle", backgroundColor: l, borderColor: l, borderWidth: 1, hitRadius: 1, hoverRadius: 4, hoverBorderWidth: 1, }, }, }), (e.exports = o.extend({ inRange: function (t, e) { var n = this._view; return ( !!n && Math.pow(t - n.x, 2) + Math.pow(e - n.y, 2) < Math.pow(n.hitRadius + n.radius, 2) ); }, inLabelRange: i, inXRange: i, inYRange: function (t) { var e = this._view; return ( !!e && Math.pow(t - e.y, 2) < Math.pow(e.radius + e.hitRadius, 2) ); }, getCenterPoint: function () { var t = this._view; return { x: t.x, y: t.y }; }, getArea: function () { return Math.PI * Math.pow(this._view.radius, 2); }, tooltipPosition: function () { var t = this._view; return { x: t.x, y: t.y, padding: t.radius + t.borderWidth }; }, draw: function (t) { var e = this._view, n = this._model, i = this._chart.ctx, o = e.pointStyle, s = e.radius, u = e.x, d = e.y, c = r.color, h = 0; e.skip || ((i.strokeStyle = e.borderColor || l), (i.lineWidth = r.valueOrDefault( e.borderWidth, a.global.elements.point.borderWidth )), (i.fillStyle = e.backgroundColor || l), void 0 !== t && (n.x < t.left || 1.01 * t.right < n.x || n.y < t.top || 1.01 * t.bottom < n.y) && (n.x < t.left ? (h = (u - n.x) / (t.left - n.x)) : 1.01 * t.right < n.x ? (h = (n.x - u) / (n.x - t.right)) : n.y < t.top ? (h = (d - n.y) / (t.top - n.y)) : 1.01 * t.bottom < n.y && (h = (n.y - d) / (n.y - t.bottom)), (h = Math.round(100 * h) / 100), (i.strokeStyle = c(i.strokeStyle).alpha(h).rgbString()), (i.fillStyle = c(i.fillStyle).alpha(h).rgbString())), r.canvas.drawPoint(i, o, s, u, d)); }, })); }, { 25: 25, 26: 26, 45: 45 }, ], 39: [ function (t, e, n) { "use strict"; function i(t) { return void 0 !== t._view.width; } function a(t) { var e, n, a, o, r = t._view; if (i(t)) { var l = r.width / 2; (e = r.x - l), (n = r.x + l), (a = Math.min(r.y, r.base)), (o = Math.max(r.y, r.base)); } else { var s = r.height / 2; (e = Math.min(r.x, r.base)), (n = Math.max(r.x, r.base)), (a = r.y - s), (o = r.y + s); } return { left: e, top: a, right: n, bottom: o }; } var o = t(25), r = t(26); o._set("global", { elements: { rectangle: { backgroundColor: o.global.defaultColor, borderColor: o.global.defaultColor, borderSkipped: "bottom", borderWidth: 0, }, }, }), (e.exports = r.extend({ draw: function () { function t(t) { return m[(b + t) % 4]; } var e, n, i, a, o, r, l, s = this._chart.ctx, u = this._view, d = u.borderWidth; if ( (u.horizontal ? ((e = u.base), (n = u.x), (i = u.y - u.height / 2), (a = u.y + u.height / 2), (o = n > e ? 1 : -1), (r = 1), (l = u.borderSkipped || "left")) : ((e = u.x - u.width / 2), (n = u.x + u.width / 2), (i = u.y), (o = 1), (r = (a = u.base) > i ? 1 : -1), (l = u.borderSkipped || "bottom")), d) ) { var c = Math.min(Math.abs(e - n), Math.abs(i - a)), h = (d = d > c ? c : d) / 2, f = e + ("left" !== l ? h * o : 0), g = n + ("right" !== l ? -h * o : 0), p = i + ("top" !== l ? h * r : 0), v = a + ("bottom" !== l ? -h * r : 0); f !== g && ((i = p), (a = v)), p !== v && ((e = f), (n = g)); } s.beginPath(), (s.fillStyle = u.backgroundColor), (s.strokeStyle = u.borderColor), (s.lineWidth = d); var m = [ [e, a], [e, i], [n, i], [n, a], ], b = ["bottom", "left", "top", "right"].indexOf(l, 0); -1 === b && (b = 0); var x = t(0); s.moveTo(x[0], x[1]); for (var y = 1; y < 4; y++) (x = t(y)), s.lineTo(x[0], x[1]); s.fill(), d && s.stroke(); }, height: function () { var t = this._view; return t.base - t.y; }, inRange: function (t, e) { var n = !1; if (this._view) { var i = a(this); n = t >= i.left && t <= i.right && e >= i.top && e <= i.bottom; } return n; }, inLabelRange: function (t, e) { var n = this; if (!n._view) return !1; var o = a(n); return i(n) ? t >= o.left && t <= o.right : e >= o.top && e <= o.bottom; }, inXRange: function (t) { var e = a(this); return t >= e.left && t <= e.right; }, inYRange: function (t) { var e = a(this); return t >= e.top && t <= e.bottom; }, getCenterPoint: function () { var t, e, n = this._view; return ( i(this) ? ((t = n.x), (e = (n.y + n.base) / 2)) : ((t = (n.x + n.base) / 2), (e = n.y)), { x: t, y: e } ); }, getArea: function () { var t = this._view; return t.width * Math.abs(t.y - t.base); }, tooltipPosition: function () { var t = this._view; return { x: t.x, y: t.y }; }, })); }, { 25: 25, 26: 26 }, ], 40: [ function (t, e, n) { "use strict"; (e.exports = {}), (e.exports.Arc = t(36)), (e.exports.Line = t(37)), (e.exports.Point = t(38)), (e.exports.Rectangle = t(39)); }, { 36: 36, 37: 37, 38: 38, 39: 39 }, ], 41: [ function (t, e, n) { "use strict"; var i = t(42), n = (e.exports = { clear: function (t) { t.ctx.clearRect(0, 0, t.width, t.height); }, roundedRect: function (t, e, n, i, a, o) { if (o) { var r = Math.min(o, i / 2), l = Math.min(o, a / 2); t.moveTo(e + r, n), t.lineTo(e + i - r, n), t.quadraticCurveTo(e + i, n, e + i, n + l), t.lineTo(e + i, n + a - l), t.quadraticCurveTo(e + i, n + a, e + i - r, n + a), t.lineTo(e + r, n + a), t.quadraticCurveTo(e, n + a, e, n + a - l), t.lineTo(e, n + l), t.quadraticCurveTo(e, n, e + r, n); } else t.rect(e, n, i, a); }, drawPoint: function (t, e, n, i, a) { var o, r, l, s, u, d; if ( !e || "object" != typeof e || ("[object HTMLImageElement]" !== (o = e.toString()) && "[object HTMLCanvasElement]" !== o) ) { if (!(isNaN(n) || n <= 0)) { switch (e) { default: t.beginPath(), t.arc(i, a, n, 0, 2 * Math.PI), t.closePath(), t.fill(); break; case "triangle": t.beginPath(), (u = ((r = (3 * n) / Math.sqrt(3)) * Math.sqrt(3)) / 2), t.moveTo(i - r / 2, a + u / 3), t.lineTo(i + r / 2, a + u / 3), t.lineTo(i, a - (2 * u) / 3), t.closePath(), t.fill(); break; case "rect": (d = (1 / Math.SQRT2) * n), t.beginPath(), t.fillRect(i - d, a - d, 2 * d, 2 * d), t.strokeRect(i - d, a - d, 2 * d, 2 * d); break; case "rectRounded": var c = n / Math.SQRT2, h = i - c, f = a - c, g = Math.SQRT2 * n; t.beginPath(), this.roundedRect(t, h, f, g, g, n / 2), t.closePath(), t.fill(); break; case "rectRot": (d = (1 / Math.SQRT2) * n), t.beginPath(), t.moveTo(i - d, a), t.lineTo(i, a + d), t.lineTo(i + d, a), t.lineTo(i, a - d), t.closePath(), t.fill(); break; case "cross": t.beginPath(), t.moveTo(i, a + n), t.lineTo(i, a - n), t.moveTo(i - n, a), t.lineTo(i + n, a), t.closePath(); break; case "crossRot": t.beginPath(), (l = Math.cos(Math.PI / 4) * n), (s = Math.sin(Math.PI / 4) * n), t.moveTo(i - l, a - s), t.lineTo(i + l, a + s), t.moveTo(i - l, a + s), t.lineTo(i + l, a - s), t.closePath(); break; case "star": t.beginPath(), t.moveTo(i, a + n), t.lineTo(i, a - n), t.moveTo(i - n, a), t.lineTo(i + n, a), (l = Math.cos(Math.PI / 4) * n), (s = Math.sin(Math.PI / 4) * n), t.moveTo(i - l, a - s), t.lineTo(i + l, a + s), t.moveTo(i - l, a + s), t.lineTo(i + l, a - s), t.closePath(); break; case "line": t.beginPath(), t.moveTo(i - n, a), t.lineTo(i + n, a), t.closePath(); break; case "dash": t.beginPath(), t.moveTo(i, a), t.lineTo(i + n, a), t.closePath(); } t.stroke(); } } else t.drawImage( e, i - e.width / 2, a - e.height / 2, e.width, e.height ); }, clipArea: function (t, e) { t.save(), t.beginPath(), t.rect(e.left, e.top, e.right - e.left, e.bottom - e.top), t.clip(); }, unclipArea: function (t) { t.restore(); }, lineTo: function (t, e, n, i) { if (n.steppedLine) return ( ("after" === n.steppedLine && !i) || ("after" !== n.steppedLine && i) ? t.lineTo(e.x, n.y) : t.lineTo(n.x, e.y), void t.lineTo(n.x, n.y) ); n.tension ? t.bezierCurveTo( i ? e.controlPointPreviousX : e.controlPointNextX, i ? e.controlPointPreviousY : e.controlPointNextY, i ? n.controlPointNextX : n.controlPointPreviousX, i ? n.controlPointNextY : n.controlPointPreviousY, n.x, n.y ) : t.lineTo(n.x, n.y); }, }); (i.clear = n.clear), (i.drawRoundedRectangle = function (t) { t.beginPath(), n.roundedRect.apply(n, arguments), t.closePath(); }); }, { 42: 42 }, ], 42: [ function (t, e, n) { "use strict"; var i = { noop: function () {}, uid: (function () { var t = 0; return function () { return t++; }; })(), isNullOrUndef: function (t) { return null === t || void 0 === t; }, isArray: Array.isArray ? Array.isArray : function (t) { return "[object Array]" === Object.prototype.toString.call(t); }, isObject: function (t) { return ( null !== t && "[object Object]" === Object.prototype.toString.call(t) ); }, valueOrDefault: function (t, e) { return void 0 === t ? e : t; }, valueAtIndexOrDefault: function (t, e, n) { return i.valueOrDefault(i.isArray(t) ? t[e] : t, n); }, callback: function (t, e, n) { if (t && "function" == typeof t.call) return t.apply(n, e); }, each: function (t, e, n, a) { var o, r, l; if (i.isArray(t)) if (((r = t.length), a)) for (o = r - 1; o >= 0; o--) e.call(n, t[o], o); else for (o = 0; o < r; o++) e.call(n, t[o], o); else if (i.isObject(t)) for (r = (l = Object.keys(t)).length, o = 0; o < r; o++) e.call(n, t[l[o]], l[o]); }, arrayEquals: function (t, e) { var n, a, o, r; if (!t || !e || t.length !== e.length) return !1; for (n = 0, a = t.length; n < a; ++n) if ( ((o = t[n]), (r = e[n]), o instanceof Array && r instanceof Array) ) { if (!i.arrayEquals(o, r)) return !1; } else if (o !== r) return !1; return !0; }, clone: function (t) { if (i.isArray(t)) return t.map(i.clone); if (i.isObject(t)) { for ( var e = {}, n = Object.keys(t), a = n.length, o = 0; o < a; ++o ) e[n[o]] = i.clone(t[n[o]]); return e; } return t; }, _merger: function (t, e, n, a) { var o = e[t], r = n[t]; i.isObject(o) && i.isObject(r) ? i.merge(o, r, a) : (e[t] = i.clone(r)); }, _mergerIf: function (t, e, n) { var a = e[t], o = n[t]; i.isObject(a) && i.isObject(o) ? i.mergeIf(a, o) : e.hasOwnProperty(t) || (e[t] = i.clone(o)); }, merge: function (t, e, n) { var a, o, r, l, s, u = i.isArray(e) ? e : [e], d = u.length; if (!i.isObject(t)) return t; for (a = (n = n || {}).merger || i._merger, o = 0; o < d; ++o) if (((e = u[o]), i.isObject(e))) for (s = 0, l = (r = Object.keys(e)).length; s < l; ++s) a(r[s], t, e, n); return t; }, mergeIf: function (t, e) { return i.merge(t, e, { merger: i._mergerIf }); }, extend: function (t) { for (var e = 1, n = arguments.length; e < n; ++e) i.each(arguments[e], function (e, n) { t[n] = e; }); return t; }, inherits: function (t) { var e = this, n = t && t.hasOwnProperty("constructor") ? t.constructor : function () { return e.apply(this, arguments); }, a = function () { this.constructor = n; }; return ( (a.prototype = e.prototype), (n.prototype = new a()), (n.extend = i.inherits), t && i.extend(n.prototype, t), (n.__super__ = e.prototype), n ); }, }; (e.exports = i), (i.callCallback = i.callback), (i.indexOf = function (t, e, n) { return Array.prototype.indexOf.call(t, e, n); }), (i.getValueOrDefault = i.valueOrDefault), (i.getValueAtIndexOrDefault = i.valueAtIndexOrDefault); }, {}, ], 43: [ function (t, e, n) { "use strict"; var i = t(42), a = { linear: function (t) { return t; }, easeInQuad: function (t) { return t * t; }, easeOutQuad: function (t) { return -t * (t - 2); }, easeInOutQuad: function (t) { return (t /= 0.5) < 1 ? 0.5 * t * t : -0.5 * (--t * (t - 2) - 1); }, easeInCubic: function (t) { return t * t * t; }, easeOutCubic: function (t) { return (t -= 1) * t * t + 1; }, easeInOutCubic: function (t) { return (t /= 0.5) < 1 ? 0.5 * t * t * t : 0.5 * ((t -= 2) * t * t + 2); }, easeInQuart: function (t) { return t * t * t * t; }, easeOutQuart: function (t) { return -((t -= 1) * t * t * t - 1); }, easeInOutQuart: function (t) { return (t /= 0.5) < 1 ? 0.5 * t * t * t * t : -0.5 * ((t -= 2) * t * t * t - 2); }, easeInQuint: function (t) { return t * t * t * t * t; }, easeOutQuint: function (t) { return (t -= 1) * t * t * t * t + 1; }, easeInOutQuint: function (t) { return (t /= 0.5) < 1 ? 0.5 * t * t * t * t * t : 0.5 * ((t -= 2) * t * t * t * t + 2); }, easeInSine: function (t) { return 1 - Math.cos(t * (Math.PI / 2)); }, easeOutSine: function (t) { return Math.sin(t * (Math.PI / 2)); }, easeInOutSine: function (t) { return -0.5 * (Math.cos(Math.PI * t) - 1); }, easeInExpo: function (t) { return 0 === t ? 0 : Math.pow(2, 10 * (t - 1)); }, easeOutExpo: function (t) { return 1 === t ? 1 : 1 - Math.pow(2, -10 * t); }, easeInOutExpo: function (t) { return 0 === t ? 0 : 1 === t ? 1 : (t /= 0.5) < 1 ? 0.5 * Math.pow(2, 10 * (t - 1)) : 0.5 * (2 - Math.pow(2, -10 * --t)); }, easeInCirc: function (t) { return t >= 1 ? t : -(Math.sqrt(1 - t * t) - 1); }, easeOutCirc: function (t) { return Math.sqrt(1 - (t -= 1) * t); }, easeInOutCirc: function (t) { return (t /= 0.5) < 1 ? -0.5 * (Math.sqrt(1 - t * t) - 1) : 0.5 * (Math.sqrt(1 - (t -= 2) * t) + 1); }, easeInElastic: function (t) { var e = 1.70158, n = 0, i = 1; return 0 === t ? 0 : 1 === t ? 1 : (n || (n = 0.3), i < 1 ? ((i = 1), (e = n / 4)) : (e = (n / (2 * Math.PI)) * Math.asin(1 / i)), -i * Math.pow(2, 10 * (t -= 1)) * Math.sin(((t - e) * (2 * Math.PI)) / n)); }, easeOutElastic: function (t) { var e = 1.70158, n = 0, i = 1; return 0 === t ? 0 : 1 === t ? 1 : (n || (n = 0.3), i < 1 ? ((i = 1), (e = n / 4)) : (e = (n / (2 * Math.PI)) * Math.asin(1 / i)), i * Math.pow(2, -10 * t) * Math.sin(((t - e) * (2 * Math.PI)) / n) + 1); }, easeInOutElastic: function (t) { var e = 1.70158, n = 0, i = 1; return 0 === t ? 0 : 2 == (t /= 0.5) ? 1 : (n || (n = 0.45), i < 1 ? ((i = 1), (e = n / 4)) : (e = (n / (2 * Math.PI)) * Math.asin(1 / i)), t < 1 ? i * Math.pow(2, 10 * (t -= 1)) * Math.sin(((t - e) * (2 * Math.PI)) / n) * -0.5 : i * Math.pow(2, -10 * (t -= 1)) * Math.sin(((t - e) * (2 * Math.PI)) / n) * 0.5 + 1); }, easeInBack: function (t) { var e = 1.70158; return t * t * ((e + 1) * t - e); }, easeOutBack: function (t) { var e = 1.70158; return (t -= 1) * t * ((e + 1) * t + e) + 1; }, easeInOutBack: function (t) { var e = 1.70158; return (t /= 0.5) < 1 ? t * t * ((1 + (e *= 1.525)) * t - e) * 0.5 : 0.5 * ((t -= 2) * t * ((1 + (e *= 1.525)) * t + e) + 2); }, easeInBounce: function (t) { return 1 - a.easeOutBounce(1 - t); }, easeOutBounce: function (t) { return t < 1 / 2.75 ? 7.5625 * t * t : t < 2 / 2.75 ? 7.5625 * (t -= 1.5 / 2.75) * t + 0.75 : t < 2.5 / 2.75 ? 7.5625 * (t -= 2.25 / 2.75) * t + 0.9375 : 7.5625 * (t -= 2.625 / 2.75) * t + 0.984375; }, easeInOutBounce: function (t) { return t < 0.5 ? 0.5 * a.easeInBounce(2 * t) : 0.5 * a.easeOutBounce(2 * t - 1) + 0.5; }, }; (e.exports = { effects: a }), (i.easingEffects = a); }, { 42: 42 }, ], 44: [ function (t, e, n) { "use strict"; var i = t(42); e.exports = { toLineHeight: function (t, e) { var n = ("" + t).match(/^(normal|(\d+(?:\.\d+)?)(px|em|%)?)$/); if (!n || "normal" === n[1]) return 1.2 * e; switch (((t = +n[2]), n[3])) { case "px": return t; case "%": t /= 100; } return e * t; }, toPadding: function (t) { var e, n, a, o; return ( i.isObject(t) ? ((e = +t.top || 0), (n = +t.right || 0), (a = +t.bottom || 0), (o = +t.left || 0)) : (e = n = a = o = +t || 0), { top: e, right: n, bottom: a, left: o, height: e + a, width: o + n, } ); }, resolve: function (t, e, n) { var a, o, r; for (a = 0, o = t.length; a < o; ++a) if ( void 0 !== (r = t[a]) && (void 0 !== e && "function" == typeof r && (r = r(e)), void 0 !== n && i.isArray(r) && (r = r[n]), void 0 !== r) ) return r; }, }; }, { 42: 42 }, ], 45: [ function (t, e, n) { "use strict"; (e.exports = t(42)), (e.exports.easing = t(43)), (e.exports.canvas = t(41)), (e.exports.options = t(44)); }, { 41: 41, 42: 42, 43: 43, 44: 44 }, ], 46: [ function (t, e, n) { e.exports = { acquireContext: function (t) { return ( t && t.canvas && (t = t.canvas), (t && t.getContext("2d")) || null ); }, }; }, {}, ], 47: [ function (t, e, n) { "use strict"; function i(t, e) { var n = v.getStyle(t, e), i = n && n.match(/^(\d+)(\.\d+)?px$/); return i ? Number(i[1]) : void 0; } function a(t, e) { var n = t.style, a = t.getAttribute("height"), o = t.getAttribute("width"); if ( ((t[m] = { initial: { height: a, width: o, style: { display: n.display, height: n.height, width: n.width, }, }, }), (n.display = n.display || "block"), null === o || "" === o) ) { var r = i(t, "width"); void 0 !== r && (t.width = r); } if (null === a || "" === a) if ("" === t.style.height) t.height = t.width / (e.options.aspectRatio || 2); else { var l = i(t, "height"); void 0 !== r && (t.height = l); } return t; } function o(t, e, n) { t.addEventListener(e, n, M); } function r(t, e, n) { t.removeEventListener(e, n, M); } function l(t, e, n, i, a) { return { type: t, chart: e, native: a || null, x: void 0 !== n ? n : null, y: void 0 !== i ? i : null, }; } function s(t, e) { var n = w[t.type] || t.type, i = v.getRelativePosition(t, e); return l(n, e, i.x, i.y, t); } function u(t, e) { var n = !1, i = []; return function () { (i = Array.prototype.slice.call(arguments)), (e = e || this), n || ((n = !0), v.requestAnimFrame.call(window, function () { (n = !1), t.apply(e, i); })); }; } function d(t) { var e = document.createElement("div"), n = b + "size-monitor", i = "position:absolute;left:0;top:0;right:0;bottom:0;overflow:hidden;pointer-events:none;visibility:hidden;z-index:-1;"; (e.style.cssText = i), (e.className = n), (e.innerHTML = '
'); var a = e.childNodes[0], r = e.childNodes[1]; e._reset = function () { (a.scrollLeft = 1e6), (a.scrollTop = 1e6), (r.scrollLeft = 1e6), (r.scrollTop = 1e6); }; var l = function () { e._reset(), t(); }; return ( o(a, "scroll", l.bind(a, "expand")), o(r, "scroll", l.bind(r, "shrink")), e ); } function c(t, e) { var n = t[m] || (t[m] = {}), i = (n.renderProxy = function (t) { t.animationName === y && e(); }); v.each(k, function (e) { o(t, e, i); }), (n.reflow = !!t.offsetParent), t.classList.add(x); } function h(t) { var e = t[m] || {}, n = e.renderProxy; n && (v.each(k, function (e) { r(t, e, n); }), delete e.renderProxy), t.classList.remove(x); } function f(t, e, n) { var i = t[m] || (t[m] = {}), a = (i.resizer = d( u(function () { if (i.resizer) return e(l("resize", n)); }) )); c(t, function () { if (i.resizer) { var e = t.parentNode; e && e !== a.parentNode && e.insertBefore(a, e.firstChild), a._reset(); } }); } function g(t) { var e = t[m] || {}, n = e.resizer; delete e.resizer, h(t), n && n.parentNode && n.parentNode.removeChild(n); } function p(t, e) { var n = t._style || document.createElement("style"); t._style || ((t._style = n), (e = "/* Chart.js */\n" + e), n.setAttribute("type", "text/css"), document.getElementsByTagName("head")[0].appendChild(n)), n.appendChild(document.createTextNode(e)); } var v = t(45), m = "$chartjs", b = "chartjs-", x = b + "render-monitor", y = b + "render-animation", k = ["animationstart", "webkitAnimationStart"], w = { touchstart: "mousedown", touchmove: "mousemove", touchend: "mouseup", pointerenter: "mouseenter", pointerdown: "mousedown", pointermove: "mousemove", pointerup: "mouseup", pointerleave: "mouseout", pointerout: "mouseout", }, M = !!(function () { var t = !1; try { var e = Object.defineProperty({}, "passive", { get: function () { t = !0; }, }); window.addEventListener("e", null, e); } catch (t) {} return t; })() && { passive: !0 }; (e.exports = { _enabled: "undefined" != typeof window && "undefined" != typeof document, initialize: function () { var t = "from{opacity:0.99}to{opacity:1}"; p( this, "@-webkit-keyframes " + y + "{" + t + "}@keyframes " + y + "{" + t + "}." + x + "{-webkit-animation:" + y + " 0.001s;animation:" + y + " 0.001s;}" ); }, acquireContext: function (t, e) { "string" == typeof t ? (t = document.getElementById(t)) : t.length && (t = t[0]), t && t.canvas && (t = t.canvas); var n = t && t.getContext && t.getContext("2d"); return n && n.canvas === t ? (a(t, e), n) : null; }, releaseContext: function (t) { var e = t.canvas; if (e[m]) { var n = e[m].initial; ["height", "width"].forEach(function (t) { var i = n[t]; v.isNullOrUndef(i) ? e.removeAttribute(t) : e.setAttribute(t, i); }), v.each(n.style || {}, function (t, n) { e.style[n] = t; }), (e.width = e.width), delete e[m]; } }, addEventListener: function (t, e, n) { var i = t.canvas; if ("resize" !== e) { var a = n[m] || (n[m] = {}); o( i, e, ((a.proxies || (a.proxies = {}))[t.id + "_" + e] = function ( e ) { n(s(e, t)); }) ); } else f(i, n, t); }, removeEventListener: function (t, e, n) { var i = t.canvas; if ("resize" !== e) { var a = ((n[m] || {}).proxies || {})[t.id + "_" + e]; a && r(i, e, a); } else g(i); }, }), (v.addEvent = o), (v.removeEvent = r); }, { 45: 45 }, ], 48: [ function (t, e, n) { "use strict"; var i = t(45), a = t(46), o = t(47), r = o._enabled ? o : a; e.exports = i.extend( { initialize: function () {}, acquireContext: function () {}, releaseContext: function () {}, addEventListener: function () {}, removeEventListener: function () {}, }, r ); }, { 45: 45, 46: 46, 47: 47 }, ], 49: [ function (t, e, n) { "use strict"; var i = t(25), a = t(40), o = t(45); i._set("global", { plugins: { filler: { propagate: !0 } } }), (e.exports = function () { function t(t, e, n) { var i, a = t._model || {}, o = a.fill; if ( (void 0 === o && (o = !!a.backgroundColor), !1 === o || null === o) ) return !1; if (!0 === o) return "origin"; if ( ((i = parseFloat(o, 10)), isFinite(i) && Math.floor(i) === i) ) return ( ("-" !== o[0] && "+" !== o[0]) || (i = e + i), !(i === e || i < 0 || i >= n) && i ); switch (o) { case "bottom": return "start"; case "top": return "end"; case "zero": return "origin"; case "origin": case "start": case "end": return o; default: return !1; } } function e(t) { var e, n = t.el._model || {}, i = t.el._scale || {}, a = t.fill, o = null; if (isFinite(a)) return null; if ( ("start" === a ? (o = void 0 === n.scaleBottom ? i.bottom : n.scaleBottom) : "end" === a ? (o = void 0 === n.scaleTop ? i.top : n.scaleTop) : void 0 !== n.scaleZero ? (o = n.scaleZero) : i.getBasePosition ? (o = i.getBasePosition()) : i.getBasePixel && (o = i.getBasePixel()), void 0 !== o && null !== o) ) { if (void 0 !== o.x && void 0 !== o.y) return o; if ("number" == typeof o && isFinite(o)) return ( (e = i.isHorizontal()), { x: e ? o : null, y: e ? null : o } ); } return null; } function n(t, e, n) { var i, a = t[e].fill, o = [e]; if (!n) return a; for (; !1 !== a && -1 === o.indexOf(a); ) { if (!isFinite(a)) return a; if (!(i = t[a])) return !1; if (i.visible) return a; o.push(a), (a = i.fill); } return !1; } function r(t) { var e = t.fill, n = "dataset"; return !1 === e ? null : (isFinite(e) || (n = "boundary"), d[n](t)); } function l(t) { return t && !t.skip; } function s(t, e, n, i, a) { var r; if (i && a) { for (t.moveTo(e[0].x, e[0].y), r = 1; r < i; ++r) o.canvas.lineTo(t, e[r - 1], e[r]); for (t.lineTo(n[a - 1].x, n[a - 1].y), r = a - 1; r > 0; --r) o.canvas.lineTo(t, n[r], n[r - 1], !0); } } function u(t, e, n, i, a, o) { var r, u, d, c, h, f, g, p = e.length, v = i.spanGaps, m = [], b = [], x = 0, y = 0; for (t.beginPath(), r = 0, u = p + !!o; r < u; ++r) (h = n((c = e[(d = r % p)]._view), d, i)), (f = l(c)), (g = l(h)), f && g ? ((x = m.push(c)), (y = b.push(h))) : x && y && (v ? (f && m.push(c), g && b.push(h)) : (s(t, m, b, x, y), (x = y = 0), (m = []), (b = []))); s(t, m, b, x, y), t.closePath(), (t.fillStyle = a), t.fill(); } var d = { dataset: function (t) { var e = t.fill, n = t.chart, i = n.getDatasetMeta(e), a = (i && n.isDatasetVisible(e) && i.dataset._children) || [], o = a.length || 0; return o ? function (t, e) { return (e < o && a[e]._view) || null; } : null; }, boundary: function (t) { var e = t.boundary, n = e ? e.x : null, i = e ? e.y : null; return function (t) { return { x: null === n ? t.x : n, y: null === i ? t.y : i }; }; }, }; return { id: "filler", afterDatasetsUpdate: function (i, o) { var l, s, u, d, c = (i.data.datasets || []).length, h = o.propagate, f = []; for (s = 0; s < c; ++s) (d = null), (u = (l = i.getDatasetMeta(s)).dataset) && u._model && u instanceof a.Line && (d = { visible: i.isDatasetVisible(s), fill: t(u, s, c), chart: i, el: u, }), (l.$filler = d), f.push(d); for (s = 0; s < c; ++s) (d = f[s]) && ((d.fill = n(f, s, h)), (d.boundary = e(d)), (d.mapper = r(d))); }, beforeDatasetDraw: function (t, e) { var n = e.meta.$filler; if (n) { var a = t.ctx, r = n.el, l = r._view, s = r._children || [], d = n.mapper, c = l.backgroundColor || i.global.defaultColor; d && c && s.length && (o.canvas.clipArea(a, t.chartArea), u(a, s, d, l, c, r._loop), o.canvas.unclipArea(a)); } }, }; }); }, { 25: 25, 40: 40, 45: 45 }, ], 50: [ function (t, e, n) { "use strict"; var i = t(25), a = t(26), o = t(45); i._set("global", { legend: { display: !0, position: "top", fullWidth: !0, reverse: !1, weight: 1e3, onClick: function (t, e) { var n = e.datasetIndex, i = this.chart, a = i.getDatasetMeta(n); (a.hidden = null === a.hidden ? !i.data.datasets[n].hidden : null), i.update(); }, onHover: null, labels: { boxWidth: 40, padding: 10, generateLabels: function (t) { var e = t.data; return o.isArray(e.datasets) ? e.datasets.map(function (e, n) { return { text: e.label, fillStyle: o.isArray(e.backgroundColor) ? e.backgroundColor[0] : e.backgroundColor, hidden: !t.isDatasetVisible(n), lineCap: e.borderCapStyle, lineDash: e.borderDash, lineDashOffset: e.borderDashOffset, lineJoin: e.borderJoinStyle, lineWidth: e.borderWidth, strokeStyle: e.borderColor, pointStyle: e.pointStyle, datasetIndex: n, }; }, this) : []; }, }, }, legendCallback: function (t) { var e = []; e.push('"), e.join(""); }, }), (e.exports = function (t) { function e(t, e) { return t.usePointStyle ? e * Math.SQRT2 : t.boxWidth; } function n(e, n) { var i = new t.Legend({ ctx: e.ctx, options: n, chart: e }); r.configure(e, i, n), r.addBox(e, i), (e.legend = i); } var r = t.layoutService, l = o.noop; return ( (t.Legend = a.extend({ initialize: function (t) { o.extend(this, t), (this.legendHitBoxes = []), (this.doughnutMode = !1); }, beforeUpdate: l, update: function (t, e, n) { var i = this; return ( i.beforeUpdate(), (i.maxWidth = t), (i.maxHeight = e), (i.margins = n), i.beforeSetDimensions(), i.setDimensions(), i.afterSetDimensions(), i.beforeBuildLabels(), i.buildLabels(), i.afterBuildLabels(), i.beforeFit(), i.fit(), i.afterFit(), i.afterUpdate(), i.minSize ); }, afterUpdate: l, beforeSetDimensions: l, setDimensions: function () { var t = this; t.isHorizontal() ? ((t.width = t.maxWidth), (t.left = 0), (t.right = t.width)) : ((t.height = t.maxHeight), (t.top = 0), (t.bottom = t.height)), (t.paddingLeft = 0), (t.paddingTop = 0), (t.paddingRight = 0), (t.paddingBottom = 0), (t.minSize = { width: 0, height: 0 }); }, afterSetDimensions: l, beforeBuildLabels: l, buildLabels: function () { var t = this, e = t.options.labels || {}, n = o.callback(e.generateLabels, [t.chart], t) || []; e.filter && (n = n.filter(function (n) { return e.filter(n, t.chart.data); })), t.options.reverse && n.reverse(), (t.legendItems = n); }, afterBuildLabels: l, beforeFit: l, fit: function () { var t = this, n = t.options, a = n.labels, r = n.display, l = t.ctx, s = i.global, u = o.valueOrDefault, d = u(a.fontSize, s.defaultFontSize), c = u(a.fontStyle, s.defaultFontStyle), h = u(a.fontFamily, s.defaultFontFamily), f = o.fontString(d, c, h), g = (t.legendHitBoxes = []), p = t.minSize, v = t.isHorizontal(); if ( (v ? ((p.width = t.maxWidth), (p.height = r ? 10 : 0)) : ((p.width = r ? 10 : 0), (p.height = t.maxHeight)), r) ) if (((l.font = f), v)) { var m = (t.lineWidths = [0]), b = t.legendItems.length ? d + a.padding : 0; (l.textAlign = "left"), (l.textBaseline = "top"), o.each(t.legendItems, function (n, i) { var o = e(a, d) + d / 2 + l.measureText(n.text).width; m[m.length - 1] + o + a.padding >= t.width && ((b += d + a.padding), (m[m.length] = t.left)), (g[i] = { left: 0, top: 0, width: o, height: d }), (m[m.length - 1] += o + a.padding); }), (p.height += b); } else { var x = a.padding, y = (t.columnWidths = []), k = a.padding, w = 0, M = 0, S = d + x; o.each(t.legendItems, function (t, n) { var i = e(a, d) + d / 2 + l.measureText(t.text).width; M + S > p.height && ((k += w + a.padding), y.push(w), (w = 0), (M = 0)), (w = Math.max(w, i)), (M += S), (g[n] = { left: 0, top: 0, width: i, height: d }); }), (k += w), y.push(w), (p.width += k); } (t.width = p.width), (t.height = p.height); }, afterFit: l, isHorizontal: function () { return ( "top" === this.options.position || "bottom" === this.options.position ); }, draw: function () { var t = this, n = t.options, a = n.labels, r = i.global, l = r.elements.line, s = t.width, u = t.lineWidths; if (n.display) { var d, c = t.ctx, h = o.valueOrDefault, f = h(a.fontColor, r.defaultFontColor), g = h(a.fontSize, r.defaultFontSize), p = h(a.fontStyle, r.defaultFontStyle), v = h(a.fontFamily, r.defaultFontFamily), m = o.fontString(g, p, v); (c.textAlign = "left"), (c.textBaseline = "middle"), (c.lineWidth = 0.5), (c.strokeStyle = f), (c.fillStyle = f), (c.font = m); var b = e(a, g), x = t.legendHitBoxes, y = function (t, e, i) { if (!(isNaN(b) || b <= 0)) { c.save(), (c.fillStyle = h(i.fillStyle, r.defaultColor)), (c.lineCap = h(i.lineCap, l.borderCapStyle)), (c.lineDashOffset = h( i.lineDashOffset, l.borderDashOffset )), (c.lineJoin = h(i.lineJoin, l.borderJoinStyle)), (c.lineWidth = h(i.lineWidth, l.borderWidth)), (c.strokeStyle = h( i.strokeStyle, r.defaultColor )); var a = 0 === h(i.lineWidth, l.borderWidth); if ( (c.setLineDash && c.setLineDash(h(i.lineDash, l.borderDash)), n.labels && n.labels.usePointStyle) ) { var s = (g * Math.SQRT2) / 2, u = s / Math.SQRT2, d = t + u, f = e + u; o.canvas.drawPoint(c, i.pointStyle, s, d, f); } else a || c.strokeRect(t, e, b, g), c.fillRect(t, e, b, g); c.restore(); } }, k = function (t, e, n, i) { var a = g / 2, o = b + a + t, r = e + a; c.fillText(n.text, o, r), n.hidden && (c.beginPath(), (c.lineWidth = 2), c.moveTo(o, r), c.lineTo(o + i, r), c.stroke()); }, w = t.isHorizontal(); d = w ? { x: t.left + (s - u[0]) / 2, y: t.top + a.padding, line: 0, } : { x: t.left + a.padding, y: t.top + a.padding, line: 0, }; var M = g + a.padding; o.each(t.legendItems, function (e, n) { var i = c.measureText(e.text).width, o = b + g / 2 + i, r = d.x, l = d.y; w ? r + o >= s && ((l = d.y += M), d.line++, (r = d.x = t.left + (s - u[d.line]) / 2)) : l + M > t.bottom && ((r = d.x = r + t.columnWidths[d.line] + a.padding), (l = d.y = t.top + a.padding), d.line++), y(r, l, e), (x[n].left = r), (x[n].top = l), k(r, l, e, i), w ? (d.x += o + a.padding) : (d.y += M); }); } }, handleEvent: function (t) { var e = this, n = e.options, i = "mouseup" === t.type ? "click" : t.type, a = !1; if ("mousemove" === i) { if (!n.onHover) return; } else { if ("click" !== i) return; if (!n.onClick) return; } var o = t.x, r = t.y; if ( o >= e.left && o <= e.right && r >= e.top && r <= e.bottom ) for (var l = e.legendHitBoxes, s = 0; s < l.length; ++s) { var u = l[s]; if ( o >= u.left && o <= u.left + u.width && r >= u.top && r <= u.top + u.height ) { if ("click" === i) { n.onClick.call(e, t.native, e.legendItems[s]), (a = !0); break; } if ("mousemove" === i) { n.onHover.call(e, t.native, e.legendItems[s]), (a = !0); break; } } } return a; }, })), { id: "legend", beforeInit: function (t) { var e = t.options.legend; e && n(t, e); }, beforeUpdate: function (t) { var e = t.options.legend, a = t.legend; e ? (o.mergeIf(e, i.global.legend), a ? (r.configure(t, a, e), (a.options = e)) : n(t, e)) : a && (r.removeBox(t, a), delete t.legend); }, afterEvent: function (t, e) { var n = t.legend; n && n.handleEvent(e); }, } ); }); }, { 25: 25, 26: 26, 45: 45 }, ], 51: [ function (t, e, n) { "use strict"; var i = t(25), a = t(26), o = t(45); i._set("global", { title: { display: !1, fontStyle: "bold", fullWidth: !0, lineHeight: 1.2, padding: 10, position: "top", text: "", weight: 2e3, }, }), (e.exports = function (t) { function e(e, i) { var a = new t.Title({ ctx: e.ctx, options: i, chart: e }); n.configure(e, a, i), n.addBox(e, a), (e.titleBlock = a); } var n = t.layoutService, r = o.noop; return ( (t.Title = a.extend({ initialize: function (t) { var e = this; o.extend(e, t), (e.legendHitBoxes = []); }, beforeUpdate: r, update: function (t, e, n) { var i = this; return ( i.beforeUpdate(), (i.maxWidth = t), (i.maxHeight = e), (i.margins = n), i.beforeSetDimensions(), i.setDimensions(), i.afterSetDimensions(), i.beforeBuildLabels(), i.buildLabels(), i.afterBuildLabels(), i.beforeFit(), i.fit(), i.afterFit(), i.afterUpdate(), i.minSize ); }, afterUpdate: r, beforeSetDimensions: r, setDimensions: function () { var t = this; t.isHorizontal() ? ((t.width = t.maxWidth), (t.left = 0), (t.right = t.width)) : ((t.height = t.maxHeight), (t.top = 0), (t.bottom = t.height)), (t.paddingLeft = 0), (t.paddingTop = 0), (t.paddingRight = 0), (t.paddingBottom = 0), (t.minSize = { width: 0, height: 0 }); }, afterSetDimensions: r, beforeBuildLabels: r, buildLabels: r, afterBuildLabels: r, beforeFit: r, fit: function () { var t = this, e = o.valueOrDefault, n = t.options, a = n.display, r = e(n.fontSize, i.global.defaultFontSize), l = t.minSize, s = o.isArray(n.text) ? n.text.length : 1, u = o.options.toLineHeight(n.lineHeight, r), d = a ? s * u + 2 * n.padding : 0; t.isHorizontal() ? ((l.width = t.maxWidth), (l.height = d)) : ((l.width = d), (l.height = t.maxHeight)), (t.width = l.width), (t.height = l.height); }, afterFit: r, isHorizontal: function () { var t = this.options.position; return "top" === t || "bottom" === t; }, draw: function () { var t = this, e = t.ctx, n = o.valueOrDefault, a = t.options, r = i.global; if (a.display) { var l, s, u, d = n(a.fontSize, r.defaultFontSize), c = n(a.fontStyle, r.defaultFontStyle), h = n(a.fontFamily, r.defaultFontFamily), f = o.fontString(d, c, h), g = o.options.toLineHeight(a.lineHeight, d), p = g / 2 + a.padding, v = 0, m = t.top, b = t.left, x = t.bottom, y = t.right; (e.fillStyle = n(a.fontColor, r.defaultFontColor)), (e.font = f), t.isHorizontal() ? ((s = b + (y - b) / 2), (u = m + p), (l = y - b)) : ((s = "left" === a.position ? b + p : y - p), (u = m + (x - m) / 2), (l = x - m), (v = Math.PI * ("left" === a.position ? -0.5 : 0.5))), e.save(), e.translate(s, u), e.rotate(v), (e.textAlign = "center"), (e.textBaseline = "middle"); var k = a.text; if (o.isArray(k)) for (var w = 0, M = 0; M < k.length; ++M) e.fillText(k[M], 0, w, l), (w += g); else e.fillText(k, 0, 0, l); e.restore(); } }, })), { id: "title", beforeInit: function (t) { var n = t.options.title; n && e(t, n); }, beforeUpdate: function (a) { var r = a.options.title, l = a.titleBlock; r ? (o.mergeIf(r, i.global.title), l ? (n.configure(a, l, r), (l.options = r)) : e(a, r)) : l && (t.layoutService.removeBox(a, l), delete a.titleBlock); }, } ); }); }, { 25: 25, 26: 26, 45: 45 }, ], 52: [ function (t, e, n) { "use strict"; e.exports = function (t) { var e = t.Scale.extend({ getLabels: function () { var t = this.chart.data; return ( this.options.labels || (this.isHorizontal() ? t.xLabels : t.yLabels) || t.labels ); }, determineDataLimits: function () { var t = this, e = t.getLabels(); (t.minIndex = 0), (t.maxIndex = e.length - 1); var n; void 0 !== t.options.ticks.min && ((n = e.indexOf(t.options.ticks.min)), (t.minIndex = -1 !== n ? n : t.minIndex)), void 0 !== t.options.ticks.max && ((n = e.indexOf(t.options.ticks.max)), (t.maxIndex = -1 !== n ? n : t.maxIndex)), (t.min = e[t.minIndex]), (t.max = e[t.maxIndex]); }, buildTicks: function () { var t = this, e = t.getLabels(); t.ticks = 0 === t.minIndex && t.maxIndex === e.length - 1 ? e : e.slice(t.minIndex, t.maxIndex + 1); }, getLabelForIndex: function (t, e) { var n = this, i = n.chart.data, a = n.isHorizontal(); return i.yLabels && !a ? n.getRightValue(i.datasets[e].data[t]) : n.ticks[t - n.minIndex]; }, getPixelForValue: function (t, e) { var n, i = this, a = i.options.offset, o = Math.max(i.maxIndex + 1 - i.minIndex - (a ? 0 : 1), 1); if ( (void 0 !== t && null !== t && (n = i.isHorizontal() ? t.x : t.y), void 0 !== n || (void 0 !== t && isNaN(e))) ) { var r = i.getLabels(); t = n || t; var l = r.indexOf(t); e = -1 !== l ? l : e; } if (i.isHorizontal()) { var s = i.width / o, u = s * (e - i.minIndex); return a && (u += s / 2), i.left + Math.round(u); } var d = i.height / o, c = d * (e - i.minIndex); return a && (c += d / 2), i.top + Math.round(c); }, getPixelForTick: function (t) { return this.getPixelForValue( this.ticks[t], t + this.minIndex, null ); }, getValueForPixel: function (t) { var e = this, n = e.options.offset, i = Math.max(e._ticks.length - (n ? 0 : 1), 1), a = e.isHorizontal(), o = (a ? e.width : e.height) / i; return ( (t -= a ? e.left : e.top), n && (t -= o / 2), (t <= 0 ? 0 : Math.round(t / o)) + e.minIndex ); }, getBasePixel: function () { return this.bottom; }, }); t.scaleService.registerScaleType("category", e, { position: "bottom", }); }; }, {}, ], 53: [ function (t, e, n) { "use strict"; var i = t(25), a = t(45), o = t(34); e.exports = function (t) { var e = { position: "left", ticks: { callback: o.formatters.linear }, }, n = t.LinearScaleBase.extend({ determineDataLimits: function () { function t(t) { return r ? t.xAxisID === e.id : t.yAxisID === e.id; } var e = this, n = e.options, i = e.chart, o = i.data.datasets, r = e.isHorizontal(); (e.min = null), (e.max = null); var l = n.stacked; if ( (void 0 === l && a.each(o, function (e, n) { if (!l) { var a = i.getDatasetMeta(n); i.isDatasetVisible(n) && t(a) && void 0 !== a.stack && (l = !0); } }), n.stacked || l) ) { var s = {}; a.each(o, function (o, r) { var l = i.getDatasetMeta(r), u = [ l.type, void 0 === n.stacked && void 0 === l.stack ? r : "", l.stack, ].join("."); void 0 === s[u] && (s[u] = { positiveValues: [], negativeValues: [] }); var d = s[u].positiveValues, c = s[u].negativeValues; i.isDatasetVisible(r) && t(l) && a.each(o.data, function (t, i) { var a = +e.getRightValue(t); isNaN(a) || l.data[i].hidden || ((d[i] = d[i] || 0), (c[i] = c[i] || 0), n.relativePoints ? (d[i] = 100) : a < 0 ? (c[i] += a) : (d[i] += a)); }); }), a.each(s, function (t) { var n = t.positiveValues.concat(t.negativeValues), i = a.min(n), o = a.max(n); (e.min = null === e.min ? i : Math.min(e.min, i)), (e.max = null === e.max ? o : Math.max(e.max, o)); }); } else a.each(o, function (n, o) { var r = i.getDatasetMeta(o); i.isDatasetVisible(o) && t(r) && a.each(n.data, function (t, n) { var i = +e.getRightValue(t); isNaN(i) || r.data[n].hidden || (null === e.min ? (e.min = i) : i < e.min && (e.min = i), null === e.max ? (e.max = i) : i > e.max && (e.max = i)); }); }); (e.min = isFinite(e.min) && !isNaN(e.min) ? e.min : 0), (e.max = isFinite(e.max) && !isNaN(e.max) ? e.max : 1), this.handleTickRangeOptions(); }, getTickLimit: function () { var t, e = this, n = e.options.ticks; if (e.isHorizontal()) t = Math.min( n.maxTicksLimit ? n.maxTicksLimit : 11, Math.ceil(e.width / 50) ); else { var o = a.valueOrDefault( n.fontSize, i.global.defaultFontSize ); t = Math.min( n.maxTicksLimit ? n.maxTicksLimit : 11, Math.ceil(e.height / (2 * o)) ); } return t; }, handleDirectionalChanges: function () { this.isHorizontal() || this.ticks.reverse(); }, getLabelForIndex: function (t, e) { return +this.getRightValue( this.chart.data.datasets[e].data[t] ); }, getPixelForValue: function (t) { var e, n = this, i = n.start, a = +n.getRightValue(t), o = n.end - i; return n.isHorizontal() ? ((e = n.left + (n.width / o) * (a - i)), Math.round(e)) : ((e = n.bottom - (n.height / o) * (a - i)), Math.round(e)); }, getValueForPixel: function (t) { var e = this, n = e.isHorizontal(), i = n ? e.width : e.height, a = (n ? t - e.left : e.bottom - t) / i; return e.start + (e.end - e.start) * a; }, getPixelForTick: function (t) { return this.getPixelForValue(this.ticksAsNumbers[t]); }, }); t.scaleService.registerScaleType("linear", n, e); }; }, { 25: 25, 34: 34, 45: 45 }, ], 54: [ function (t, e, n) { "use strict"; var i = t(45), a = t(34); e.exports = function (t) { var e = i.noop; t.LinearScaleBase = t.Scale.extend({ getRightValue: function (e) { return "string" == typeof e ? +e : t.Scale.prototype.getRightValue.call(this, e); }, handleTickRangeOptions: function () { var t = this, e = t.options.ticks; if (e.beginAtZero) { var n = i.sign(t.min), a = i.sign(t.max); n < 0 && a < 0 ? (t.max = 0) : n > 0 && a > 0 && (t.min = 0); } var o = void 0 !== e.min || void 0 !== e.suggestedMin, r = void 0 !== e.max || void 0 !== e.suggestedMax; void 0 !== e.min ? (t.min = e.min) : void 0 !== e.suggestedMin && (null === t.min ? (t.min = e.suggestedMin) : (t.min = Math.min(t.min, e.suggestedMin))), void 0 !== e.max ? (t.max = e.max) : void 0 !== e.suggestedMax && (null === t.max ? (t.max = e.suggestedMax) : (t.max = Math.max(t.max, e.suggestedMax))), o !== r && t.min >= t.max && (o ? (t.max = t.min + 1) : (t.min = t.max - 1)), t.min === t.max && (t.max++, e.beginAtZero || t.min--); }, getTickLimit: e, handleDirectionalChanges: e, buildTicks: function () { var t = this, e = t.options.ticks, n = t.getTickLimit(), o = { maxTicks: (n = Math.max(2, n)), min: e.min, max: e.max, stepSize: i.valueOrDefault(e.fixedStepSize, e.stepSize), }, r = (t.ticks = a.generators.linear(o, t)); t.handleDirectionalChanges(), (t.max = i.max(r)), (t.min = i.min(r)), e.reverse ? (r.reverse(), (t.start = t.max), (t.end = t.min)) : ((t.start = t.min), (t.end = t.max)); }, convertTicksToLabels: function () { var e = this; (e.ticksAsNumbers = e.ticks.slice()), (e.zeroLineIndex = e.ticks.indexOf(0)), t.Scale.prototype.convertTicksToLabels.call(e); }, }); }; }, { 34: 34, 45: 45 }, ], 55: [ function (t, e, n) { "use strict"; var i = t(45), a = t(34); e.exports = function (t) { var e = { position: "left", ticks: { callback: a.formatters.logarithmic }, }, n = t.Scale.extend({ determineDataLimits: function () { function t(t) { return s ? t.xAxisID === e.id : t.yAxisID === e.id; } var e = this, n = e.options, a = n.ticks, o = e.chart, r = o.data.datasets, l = i.valueOrDefault, s = e.isHorizontal(); (e.min = null), (e.max = null), (e.minNotZero = null); var u = n.stacked; if ( (void 0 === u && i.each(r, function (e, n) { if (!u) { var i = o.getDatasetMeta(n); o.isDatasetVisible(n) && t(i) && void 0 !== i.stack && (u = !0); } }), n.stacked || u) ) { var d = {}; i.each(r, function (a, r) { var l = o.getDatasetMeta(r), s = [ l.type, void 0 === n.stacked && void 0 === l.stack ? r : "", l.stack, ].join("."); o.isDatasetVisible(r) && t(l) && (void 0 === d[s] && (d[s] = []), i.each(a.data, function (t, i) { var a = d[s], o = +e.getRightValue(t); isNaN(o) || l.data[i].hidden || ((a[i] = a[i] || 0), n.relativePoints ? (a[i] = 100) : (a[i] += o)); })); }), i.each(d, function (t) { var n = i.min(t), a = i.max(t); (e.min = null === e.min ? n : Math.min(e.min, n)), (e.max = null === e.max ? a : Math.max(e.max, a)); }); } else i.each(r, function (n, a) { var r = o.getDatasetMeta(a); o.isDatasetVisible(a) && t(r) && i.each(n.data, function (t, n) { var i = +e.getRightValue(t); isNaN(i) || r.data[n].hidden || (null === e.min ? (e.min = i) : i < e.min && (e.min = i), null === e.max ? (e.max = i) : i > e.max && (e.max = i), 0 !== i && (null === e.minNotZero || i < e.minNotZero) && (e.minNotZero = i)); }); }); (e.min = l(a.min, e.min)), (e.max = l(a.max, e.max)), e.min === e.max && (0 !== e.min && null !== e.min ? ((e.min = Math.pow( 10, Math.floor(i.log10(e.min)) - 1 )), (e.max = Math.pow( 10, Math.floor(i.log10(e.max)) + 1 ))) : ((e.min = 1), (e.max = 10))); }, buildTicks: function () { var t = this, e = t.options.ticks, n = { min: e.min, max: e.max }, o = (t.ticks = a.generators.logarithmic(n, t)); t.isHorizontal() || o.reverse(), (t.max = i.max(o)), (t.min = i.min(o)), e.reverse ? (o.reverse(), (t.start = t.max), (t.end = t.min)) : ((t.start = t.min), (t.end = t.max)); }, convertTicksToLabels: function () { (this.tickValues = this.ticks.slice()), t.Scale.prototype.convertTicksToLabels.call(this); }, getLabelForIndex: function (t, e) { return +this.getRightValue( this.chart.data.datasets[e].data[t] ); }, getPixelForTick: function (t) { return this.getPixelForValue(this.tickValues[t]); }, getPixelForValue: function (t) { var e, n, a, o = this, r = o.start, l = +o.getRightValue(t), s = o.options.ticks; return ( o.isHorizontal() ? ((a = i.log10(o.end) - i.log10(r)), 0 === l ? (n = o.left) : ((e = o.width), (n = o.left + (e / a) * (i.log10(l) - i.log10(r))))) : ((e = o.height), 0 !== r || s.reverse ? 0 === o.end && s.reverse ? ((a = i.log10(o.start) - i.log10(o.minNotZero)), (n = l === o.end ? o.top : l === o.minNotZero ? o.top + 0.02 * e : o.top + 0.02 * e + ((0.98 * e) / a) * (i.log10(l) - i.log10(o.minNotZero)))) : 0 === l ? (n = s.reverse ? o.top : o.bottom) : ((a = i.log10(o.end) - i.log10(r)), (e = o.height), (n = o.bottom - (e / a) * (i.log10(l) - i.log10(r)))) : ((a = i.log10(o.end) - i.log10(o.minNotZero)), (n = l === r ? o.bottom : l === o.minNotZero ? o.bottom - 0.02 * e : o.bottom - 0.02 * e - ((0.98 * e) / a) * (i.log10(l) - i.log10(o.minNotZero))))), n ); }, getValueForPixel: function (t) { var e, n, a = this, o = i.log10(a.end) - i.log10(a.start); return ( a.isHorizontal() ? ((n = a.width), (e = a.start * Math.pow(10, ((t - a.left) * o) / n))) : ((n = a.height), (e = Math.pow(10, ((a.bottom - t) * o) / n) / a.start)), e ); }, }); t.scaleService.registerScaleType("logarithmic", n, e); }; }, { 34: 34, 45: 45 }, ], 56: [ function (t, e, n) { "use strict"; var i = t(25), a = t(45), o = t(34); e.exports = function (t) { function e(t) { var e = t.options; return e.angleLines.display || e.pointLabels.display ? t.chart.data.labels.length : 0; } function n(t) { var e = t.options.pointLabels, n = a.valueOrDefault(e.fontSize, v.defaultFontSize), i = a.valueOrDefault(e.fontStyle, v.defaultFontStyle), o = a.valueOrDefault(e.fontFamily, v.defaultFontFamily); return { size: n, style: i, family: o, font: a.fontString(n, i, o), }; } function r(t, e, n) { return a.isArray(n) ? { w: a.longestText(t, t.font, n), h: n.length * e + 1.5 * (n.length - 1) * e, } : { w: t.measureText(n).width, h: e }; } function l(t, e, n, i, a) { return t === i || t === a ? { start: e - n / 2, end: e + n / 2 } : t < i || t > a ? { start: e - n - 5, end: e } : { start: e, end: e + n + 5 }; } function s(t) { var i, o, s, u = n(t), d = Math.min(t.height / 2, t.width / 2), c = { r: t.width, l: 0, t: t.height, b: 0 }, h = {}; (t.ctx.font = u.font), (t._pointLabelSizes = []); var f = e(t); for (i = 0; i < f; i++) { (s = t.getPointPosition(i, d)), (o = r(t.ctx, u.size, t.pointLabels[i] || "")), (t._pointLabelSizes[i] = o); var g = t.getIndexAngle(i), p = a.toDegrees(g) % 360, v = l(p, s.x, o.w, 0, 180), m = l(p, s.y, o.h, 90, 270); v.start < c.l && ((c.l = v.start), (h.l = g)), v.end > c.r && ((c.r = v.end), (h.r = g)), m.start < c.t && ((c.t = m.start), (h.t = g)), m.end > c.b && ((c.b = m.end), (h.b = g)); } t.setReductions(d, c, h); } function u(t) { var e = Math.min(t.height / 2, t.width / 2); (t.drawingArea = Math.round(e)), t.setCenterPoint(0, 0, 0, 0); } function d(t) { return 0 === t || 180 === t ? "center" : t < 180 ? "left" : "right"; } function c(t, e, n, i) { if (a.isArray(e)) for (var o = n.y, r = 1.5 * i, l = 0; l < e.length; ++l) t.fillText(e[l], n.x, o), (o += r); else t.fillText(e, n.x, n.y); } function h(t, e, n) { 90 === t || 270 === t ? (n.y -= e.h / 2) : (t > 270 || t < 90) && (n.y -= e.h); } function f(t) { var i = t.ctx, o = a.valueOrDefault, r = t.options, l = r.angleLines, s = r.pointLabels; (i.lineWidth = l.lineWidth), (i.strokeStyle = l.color); var u = t.getDistanceFromCenterForValue( r.ticks.reverse ? t.min : t.max ), f = n(t); i.textBaseline = "top"; for (var g = e(t) - 1; g >= 0; g--) { if (l.display) { var p = t.getPointPosition(g, u); i.beginPath(), i.moveTo(t.xCenter, t.yCenter), i.lineTo(p.x, p.y), i.stroke(), i.closePath(); } if (s.display) { var m = t.getPointPosition(g, u + 5), b = o(s.fontColor, v.defaultFontColor); (i.font = f.font), (i.fillStyle = b); var x = t.getIndexAngle(g), y = a.toDegrees(x); (i.textAlign = d(y)), h(y, t._pointLabelSizes[g], m), c(i, t.pointLabels[g] || "", m, f.size); } } } function g(t, n, i, o) { var r = t.ctx; if ( ((r.strokeStyle = a.valueAtIndexOrDefault(n.color, o - 1)), (r.lineWidth = a.valueAtIndexOrDefault(n.lineWidth, o - 1)), t.options.gridLines.circular) ) r.beginPath(), r.arc(t.xCenter, t.yCenter, i, 0, 2 * Math.PI), r.closePath(), r.stroke(); else { var l = e(t); if (0 === l) return; r.beginPath(); var s = t.getPointPosition(0, i); r.moveTo(s.x, s.y); for (var u = 1; u < l; u++) (s = t.getPointPosition(u, i)), r.lineTo(s.x, s.y); r.closePath(), r.stroke(); } } function p(t) { return a.isNumber(t) ? t : 0; } var v = i.global, m = { display: !0, animate: !0, position: "chartArea", angleLines: { display: !0, color: "rgba(0, 0, 0, 0.1)", lineWidth: 1, }, gridLines: { circular: !1 }, ticks: { showLabelBackdrop: !0, backdropColor: "rgba(255,255,255,0.75)", backdropPaddingY: 2, backdropPaddingX: 2, callback: o.formatters.linear, }, pointLabels: { display: !0, fontSize: 10, callback: function (t) { return t; }, }, }, b = t.LinearScaleBase.extend({ setDimensions: function () { var t = this, e = t.options, n = e.ticks; (t.width = t.maxWidth), (t.height = t.maxHeight), (t.xCenter = Math.round(t.width / 2)), (t.yCenter = Math.round(t.height / 2)); var i = a.min([t.height, t.width]), o = a.valueOrDefault(n.fontSize, v.defaultFontSize); t.drawingArea = e.display ? i / 2 - (o / 2 + n.backdropPaddingY) : i / 2; }, determineDataLimits: function () { var t = this, e = t.chart, n = Number.POSITIVE_INFINITY, i = Number.NEGATIVE_INFINITY; a.each(e.data.datasets, function (o, r) { if (e.isDatasetVisible(r)) { var l = e.getDatasetMeta(r); a.each(o.data, function (e, a) { var o = +t.getRightValue(e); isNaN(o) || l.data[a].hidden || ((n = Math.min(o, n)), (i = Math.max(o, i))); }); } }), (t.min = n === Number.POSITIVE_INFINITY ? 0 : n), (t.max = i === Number.NEGATIVE_INFINITY ? 0 : i), t.handleTickRangeOptions(); }, getTickLimit: function () { var t = this.options.ticks, e = a.valueOrDefault(t.fontSize, v.defaultFontSize); return Math.min( t.maxTicksLimit ? t.maxTicksLimit : 11, Math.ceil(this.drawingArea / (1.5 * e)) ); }, convertTicksToLabels: function () { var e = this; t.LinearScaleBase.prototype.convertTicksToLabels.call(e), (e.pointLabels = e.chart.data.labels.map( e.options.pointLabels.callback, e )); }, getLabelForIndex: function (t, e) { return +this.getRightValue( this.chart.data.datasets[e].data[t] ); }, fit: function () { this.options.pointLabels.display ? s(this) : u(this); }, setReductions: function (t, e, n) { var i = this, a = e.l / Math.sin(n.l), o = Math.max(e.r - i.width, 0) / Math.sin(n.r), r = -e.t / Math.cos(n.t), l = -Math.max(e.b - i.height, 0) / Math.cos(n.b); (a = p(a)), (o = p(o)), (r = p(r)), (l = p(l)), (i.drawingArea = Math.min( Math.round(t - (a + o) / 2), Math.round(t - (r + l) / 2) )), i.setCenterPoint(a, o, r, l); }, setCenterPoint: function (t, e, n, i) { var a = this, o = a.width - e - a.drawingArea, r = t + a.drawingArea, l = n + a.drawingArea, s = a.height - i - a.drawingArea; (a.xCenter = Math.round((r + o) / 2 + a.left)), (a.yCenter = Math.round((l + s) / 2 + a.top)); }, getIndexAngle: function (t) { return ( t * ((2 * Math.PI) / e(this)) + ((this.chart.options && this.chart.options.startAngle ? this.chart.options.startAngle : 0) * Math.PI * 2) / 360 ); }, getDistanceFromCenterForValue: function (t) { var e = this; if (null === t) return 0; var n = e.drawingArea / (e.max - e.min); return e.options.ticks.reverse ? (e.max - t) * n : (t - e.min) * n; }, getPointPosition: function (t, e) { var n = this, i = n.getIndexAngle(t) - Math.PI / 2; return { x: Math.round(Math.cos(i) * e) + n.xCenter, y: Math.round(Math.sin(i) * e) + n.yCenter, }; }, getPointPositionForValue: function (t, e) { return this.getPointPosition( t, this.getDistanceFromCenterForValue(e) ); }, getBasePosition: function () { var t = this, e = t.min, n = t.max; return t.getPointPositionForValue( 0, t.beginAtZero ? 0 : e < 0 && n < 0 ? n : e > 0 && n > 0 ? e : 0 ); }, draw: function () { var t = this, e = t.options, n = e.gridLines, i = e.ticks, o = a.valueOrDefault; if (e.display) { var r = t.ctx, l = this.getIndexAngle(0), s = o(i.fontSize, v.defaultFontSize), u = o(i.fontStyle, v.defaultFontStyle), d = o(i.fontFamily, v.defaultFontFamily), c = a.fontString(s, u, d); a.each(t.ticks, function (e, a) { if (a > 0 || i.reverse) { var u = t.getDistanceFromCenterForValue( t.ticksAsNumbers[a] ); if ( (n.display && 0 !== a && g(t, n, u, a), i.display) ) { var d = o(i.fontColor, v.defaultFontColor); if ( ((r.font = c), r.save(), r.translate(t.xCenter, t.yCenter), r.rotate(l), i.showLabelBackdrop) ) { var h = r.measureText(e).width; (r.fillStyle = i.backdropColor), r.fillRect( -h / 2 - i.backdropPaddingX, -u - s / 2 - i.backdropPaddingY, h + 2 * i.backdropPaddingX, s + 2 * i.backdropPaddingY ); } (r.textAlign = "center"), (r.textBaseline = "middle"), (r.fillStyle = d), r.fillText(e, 0, -u), r.restore(); } } }), (e.angleLines.display || e.pointLabels.display) && f(t); } }, }); t.scaleService.registerScaleType("radialLinear", b, m); }; }, { 25: 25, 34: 34, 45: 45 }, ], 57: [ function (t, e, n) { "use strict"; function i(t, e) { return t - e; } function a(t) { var e, n, i, a = {}, o = []; for (e = 0, n = t.length; e < n; ++e) a[(i = t[e])] || ((a[i] = !0), o.push(i)); return o; } function o(t, e, n, i) { if ("linear" === i || !t.length) return [ { time: e, pos: 0 }, { time: n, pos: 1 }, ]; var a, o, r, l, s, u = [], d = [e]; for (a = 0, o = t.length; a < o; ++a) (l = t[a]) > e && l < n && d.push(l); for (d.push(n), a = 0, o = d.length; a < o; ++a) (s = d[a + 1]), (r = d[a - 1]), (l = d[a]), (void 0 !== r && void 0 !== s && Math.round((s + r) / 2) === l) || u.push({ time: l, pos: a / (o - 1) }); return u; } function r(t, e, n) { for (var i, a, o, r = 0, l = t.length - 1; r >= 0 && r <= l; ) { if (((i = (r + l) >> 1), (a = t[i - 1] || null), (o = t[i]), !a)) return { lo: null, hi: o }; if (o[e] < n) r = i + 1; else { if (!(a[e] > n)) return { lo: a, hi: o }; l = i - 1; } } return { lo: o, hi: null }; } function l(t, e, n, i) { var a = r(t, e, n), o = a.lo ? (a.hi ? a.lo : t[t.length - 2]) : t[0], l = a.lo ? (a.hi ? a.hi : t[t.length - 1]) : t[1], s = l[e] - o[e], u = s ? (n - o[e]) / s : 0, d = (l[i] - o[i]) * u; return o[i] + d; } function s(t, e) { var n = e.parser, i = e.parser || e.format; return "function" == typeof n ? n(t) : "string" == typeof t && "string" == typeof i ? m(t, i) : (t instanceof m || (t = m(t)), t.isValid() ? t : "function" == typeof i ? i(t) : t); } function u(t, e) { if (x.isNullOrUndef(t)) return null; var n = e.options.time, i = s(e.getRightValue(t), n); return i.isValid() ? (n.round && i.startOf(n.round), i.valueOf()) : null; } function d(t, e, n, i) { var a, o, r, l = e - t, s = w[n], u = s.size, d = s.steps; if (!d) return Math.ceil(l / ((i || 1) * u)); for ( a = 0, o = d.length; a < o && ((r = d[a]), !(Math.ceil(l / (u * r)) <= i)); ++a ); return r; } function c(t, e, n, i) { var a, o, r, l = M.length; for (a = M.indexOf(t); a < l - 1; ++a) if ( ((o = w[M[a]]), (r = o.steps ? o.steps[o.steps.length - 1] : k), o.common && Math.ceil((n - e) / (r * o.size)) <= i) ) return M[a]; return M[l - 1]; } function h(t, e, n, i) { var a, o, r = m.duration(m(i).diff(m(n))); for (a = M.length - 1; a >= M.indexOf(e); a--) if (((o = M[a]), w[o].common && r.as(o) >= t.length)) return o; return M[e ? M.indexOf(e) : 0]; } function f(t) { for (var e = M.indexOf(t) + 1, n = M.length; e < n; ++e) if (w[M[e]].common) return M[e]; } function g(t, e, n, i) { var a, o = i.time, r = o.unit || c(o.minUnit, t, e, n), l = f(r), s = x.valueOrDefault(o.stepSize, o.unitStepSize), u = "week" === r && o.isoWeekday, h = i.ticks.major.enabled, g = w[r], p = m(t), v = m(e), b = []; for ( s || (s = d(t, e, r, n)), u && ((p = p.isoWeekday(u)), (v = v.isoWeekday(u))), p = p.startOf(u ? "day" : r), (v = v.startOf(u ? "day" : r)) < e && v.add(1, r), a = m(p), h && l && !u && !o.round && (a.startOf(l), a.add(~~((p - a) / (g.size * s)) * s, r)); a < v; a.add(s, r) ) b.push(+a); return b.push(+a), b; } function p(t, e, n, i, a) { var o, r, s = 0, u = 0; return ( a.offset && e.length && (a.time.min || ((o = e.length > 1 ? e[1] : i), (r = e[0]), (s = (l(t, "time", o, "pos") - l(t, "time", r, "pos")) / 2)), a.time.max || ((o = e[e.length - 1]), (r = e.length > 1 ? e[e.length - 2] : n), (u = (l(t, "time", o, "pos") - l(t, "time", r, "pos")) / 2))), { left: s, right: u } ); } function v(t, e) { var n, i, a, o, r = []; for (n = 0, i = t.length; n < i; ++n) (a = t[n]), (o = !!e && a === +m(a).startOf(e)), r.push({ value: a, major: o }); return r; } var m = t(1); m = "function" == typeof m ? m : window.moment; var b = t(25), x = t(45), y = Number.MIN_SAFE_INTEGER || -9007199254740991, k = Number.MAX_SAFE_INTEGER || 9007199254740991, w = { millisecond: { common: !0, size: 1, steps: [1, 2, 5, 10, 20, 50, 100, 250, 500], }, second: { common: !0, size: 1e3, steps: [1, 2, 5, 10, 30] }, minute: { common: !0, size: 6e4, steps: [1, 2, 5, 10, 30] }, hour: { common: !0, size: 36e5, steps: [1, 2, 3, 6, 12] }, day: { common: !0, size: 864e5, steps: [1, 2, 5] }, week: { common: !1, size: 6048e5, steps: [1, 2, 3, 4] }, month: { common: !0, size: 2628e6, steps: [1, 2, 3] }, quarter: { common: !1, size: 7884e6, steps: [1, 2, 3, 4] }, year: { common: !0, size: 3154e7 }, }, M = Object.keys(w); e.exports = function (t) { var e = t.Scale.extend({ initialize: function () { if (!m) throw new Error( "Chart.js - Moment.js could not be found! You must include it before Chart.js to use the time scale. Download at https://momentjs.com" ); this.mergeTicksOptions(), t.Scale.prototype.initialize.call(this); }, update: function () { var e = this, n = e.options; return ( n.time && n.time.format && console.warn( "options.time.format is deprecated and replaced by options.time.parser." ), t.Scale.prototype.update.apply(e, arguments) ); }, getRightValue: function (e) { return ( e && void 0 !== e.t && (e = e.t), t.Scale.prototype.getRightValue.call(this, e) ); }, determineDataLimits: function () { var t, e, n, o, r, l, s = this, d = s.chart, c = s.options.time, h = k, f = y, g = [], p = [], v = []; for (t = 0, n = d.data.labels.length; t < n; ++t) v.push(u(d.data.labels[t], s)); for (t = 0, n = (d.data.datasets || []).length; t < n; ++t) if (d.isDatasetVisible(t)) if (((r = d.data.datasets[t].data), x.isObject(r[0]))) for (p[t] = [], e = 0, o = r.length; e < o; ++e) (l = u(r[e], s)), g.push(l), (p[t][e] = l); else g.push.apply(g, v), (p[t] = v.slice(0)); else p[t] = []; v.length && ((v = a(v).sort(i)), (h = Math.min(h, v[0])), (f = Math.max(f, v[v.length - 1]))), g.length && ((g = a(g).sort(i)), (h = Math.min(h, g[0])), (f = Math.max(f, g[g.length - 1]))), (h = u(c.min, s) || h), (f = u(c.max, s) || f), (h = h === k ? +m().startOf("day") : h), (f = f === y ? +m().endOf("day") + 1 : f), (s.min = Math.min(h, f)), (s.max = Math.max(h + 1, f)), (s._horizontal = s.isHorizontal()), (s._table = []), (s._timestamps = { data: g, datasets: p, labels: v }); }, buildTicks: function () { var t, e, n, i = this, a = i.min, r = i.max, l = i.options, s = l.time, d = [], c = []; switch (l.ticks.source) { case "data": d = i._timestamps.data; break; case "labels": d = i._timestamps.labels; break; case "auto": default: d = g(a, r, i.getLabelCapacity(a), l); } for ( "ticks" === l.bounds && d.length && ((a = d[0]), (r = d[d.length - 1])), a = u(s.min, i) || a, r = u(s.max, i) || r, t = 0, e = d.length; t < e; ++t ) (n = d[t]) >= a && n <= r && c.push(n); return ( (i.min = a), (i.max = r), (i._unit = s.unit || h(c, s.minUnit, i.min, i.max)), (i._majorUnit = f(i._unit)), (i._table = o(i._timestamps.data, a, r, l.distribution)), (i._offsets = p(i._table, c, a, r, l)), v(c, i._majorUnit) ); }, getLabelForIndex: function (t, e) { var n = this, i = n.chart.data, a = n.options.time, o = i.labels && t < i.labels.length ? i.labels[t] : "", r = i.datasets[e].data[t]; return ( x.isObject(r) && (o = n.getRightValue(r)), a.tooltipFormat && (o = s(o, a).format(a.tooltipFormat)), o ); }, tickFormatFunction: function (t, e, n, i) { var a = this, o = a.options, r = t.valueOf(), l = o.time.displayFormats, s = l[a._unit], u = a._majorUnit, d = l[u], c = t.clone().startOf(u).valueOf(), h = o.ticks.major, f = h.enabled && u && d && r === c, g = t.format(i || (f ? d : s)), p = f ? h : o.ticks.minor, v = x.valueOrDefault(p.callback, p.userCallback); return v ? v(g, e, n) : g; }, convertTicksToLabels: function (t) { var e, n, i = []; for (e = 0, n = t.length; e < n; ++e) i.push(this.tickFormatFunction(m(t[e].value), e, t)); return i; }, getPixelForOffset: function (t) { var e = this, n = e._horizontal ? e.width : e.height, i = e._horizontal ? e.left : e.top, a = l(e._table, "time", t, "pos"); return ( i + (n * (e._offsets.left + a)) / (e._offsets.left + 1 + e._offsets.right) ); }, getPixelForValue: function (t, e, n) { var i = this, a = null; if ( (void 0 !== e && void 0 !== n && (a = i._timestamps.datasets[n][e]), null === a && (a = u(t, i)), null !== a) ) return i.getPixelForOffset(a); }, getPixelForTick: function (t) { var e = this.getTicks(); return t >= 0 && t < e.length ? this.getPixelForOffset(e[t].value) : null; }, getValueForPixel: function (t) { var e = this, n = e._horizontal ? e.width : e.height, i = e._horizontal ? e.left : e.top, a = (n ? (t - i) / n : 0) * (e._offsets.left + 1 + e._offsets.left) - e._offsets.right, o = l(e._table, "pos", a, "time"); return m(o); }, getLabelWidth: function (t) { var e = this, n = e.options.ticks, i = e.ctx.measureText(t).width, a = x.toRadians(n.maxRotation), o = Math.cos(a), r = Math.sin(a); return ( i * o + x.valueOrDefault(n.fontSize, b.global.defaultFontSize) * r ); }, getLabelCapacity: function (t) { var e = this, n = e.options.time.displayFormats.millisecond, i = e.tickFormatFunction(m(t), 0, [], n), a = e.getLabelWidth(i), o = e.isHorizontal() ? e.width : e.height; return Math.floor(o / a); }, }); t.scaleService.registerScaleType("time", e, { position: "bottom", distribution: "linear", bounds: "data", time: { parser: !1, format: !1, unit: !1, round: !1, displayFormat: !1, isoWeekday: !1, minUnit: "millisecond", displayFormats: { millisecond: "h:mm:ss.SSS a", second: "h:mm:ss a", minute: "h:mm a", hour: "hA", day: "MMM D", week: "ll", month: "MMM YYYY", quarter: "[Q]Q - YYYY", year: "YYYY", }, }, ticks: { autoSkip: !1, source: "auto", major: { enabled: !1 } }, }); }; }, { 1: 1, 25: 25, 45: 45 }, ], }, {}, [7] )(7); });