2016-04-17 00:39:51 +02:00
! function t ( e , i , a ) { function s ( n , r ) { if ( ! i [ n ] ) { if ( ! e [ n ] ) { var l = "function" == typeof require && require ; if ( ! r && l ) return l ( n , ! 0 ) ; if ( o ) return o ( n , ! 0 ) ; var h = new Error ( "Cannot find module '" + n + "'" ) ; throw h . code = "MODULE_NOT_FOUND" , h } var c = i [ n ] = { exports : { } } ; e [ n ] [ 0 ] . call ( c . exports , function ( t ) { var i = e [ n ] [ 1 ] [ t ] ; return s ( i ? i : t ) } , c , c . exports , t , e , i , a ) } return i [ n ] . exports } for ( var o = "function" == typeof require && require , n = 0 ; n < a . length ; n ++ ) s ( a [ n ] ) ; return s } ( { 1 : [ function ( t , e , i ) { function a ( t ) { var e , i , a , s = t [ 0 ] / 255 , o = t [ 1 ] / 255 , n = t [ 2 ] / 255 , r = Math . min ( s , o , n ) , l = Math . max ( s , o , n ) , h = l - r ; return l == r ? e = 0 : s == l ? e = ( o - n ) / h : o == l ? e = 2 + ( n - s ) / h : n == l && ( e = 4 + ( s - o ) / h ) , e = Math . min ( 60 * e , 360 ) , 0 > e && ( e += 360 ) , a = ( r + l ) / 2 , i = l == r ? 0 : . 5 >= a ? h / ( l + r ) : h / ( 2 - l - r ) , [ e , 100 * i , 100 * a ] } function s ( t ) { var e , i , a , s = t [ 0 ] , o = t [ 1 ] , n = t [ 2 ] , r = Math . min ( s , o , n ) , l = Math . max ( s , o , n ) , h = l - r ; return i = 0 == l ? 0 : h / l * 1e3 / 10 , l == r ? e = 0 : s == l ? e = ( o - n ) / h : o == l ? e = 2 + ( n - s ) / h : n == l && ( e = 4 + ( s - o ) / h ) , e = Math . min ( 60 * e , 360 ) , 0 > e && ( e += 360 ) , a = l / 255 * 1e3 / 10 , [ e , i , a ] } function o ( t ) { var e = t [ 0 ] , i = t [ 1 ] , s = t [ 2 ] , o = a ( t ) [ 0 ] , n = 1 / 255 * Math . min ( e , Math . min ( i , s ) ) , s = 1 - 1 / 255 * Math . max ( e , Math . max ( i , s ) ) ; return [ o , 100 * n , 100 * s ] } function n ( t ) { var e , i , a , s , o = t [ 0 ] / 255 , n = t [ 1 ] / 255 , r = t [ 2 ] / 255 ; return s = Math . min ( 1 - o , 1 - n , 1 - r ) , e = ( 1 - o - s ) / ( 1 - s ) || 0 , i = ( 1 - n - s ) / ( 1 - s ) || 0 , a = ( 1 - r - s ) / ( 1 - s ) || 0 , [ 100 * e , 100 * i , 100 * a , 100 * s ] } function l ( t ) { return X [ JSON . stringify ( t ) ] } function h ( t ) { var e = t [ 0 ] / 255 , i = t [ 1 ] / 255 , a = t [ 2 ] / 255 ; e = e > . 04045 ? Math . pow ( ( e + . 055 ) / 1.055 , 2.4 ) : e / 12.92 , i = i > . 04045 ? Math . pow ( ( i + . 055 ) / 1.055 , 2.4 ) : i / 12.92 , a = a > . 04045 ? Math . pow ( ( a + . 055 ) / 1.055 , 2.4 ) : a / 12.92 ; var s = . 4124 * e + . 3576 * i + . 1805 * a , o = . 2126 * e + . 7152 * i + . 0722 * a , n = . 0193 * e + . 1192 * i + . 9505 * a ; return [ 100 * s , 100 * o , 100 * n ] } function c ( t ) { var e , i , a , s = h ( t ) , o = s [ 0 ] , n = s [ 1 ] , r = s [ 2 ] ; return o /= 95.047 , n /= 100 , r /= 108.883 , o = o > . 008856 ? Math . pow ( o , 1 / 3 ) : 7.787 * o + 16 / 116 , n = n > . 008856 ? Math . pow ( n , 1 / 3 ) : 7.787 * n + 16 / 116 , r = r > . 008856 ? Math . pow ( r , 1 / 3 ) : 7.787 * r + 16 / 116 , e = 116 * n - 16 , i = 500 * ( o - n ) , a = 200 * ( n - r ) , [ e , i , a ] } function u ( t ) { return z ( c ( t ) ) } function d ( t ) { var e , i , a , s , o , n = t [ 0 ] / 360 , r = t [ 1 ] / 100 , l = t [ 2 ] / 100 ; if ( 0 == r ) return o = 255 * l , [ o , o , o ] ; i = . 5 > l ? l * ( 1 + r ) : l + r - l * r , e = 2 * l - i , s = [ 0 , 0 , 0 ] ; for ( var h = 0 ; 3 > h ; h ++ ) a = n + 1 / 3 * - ( h - 1 ) , 0 > a && a ++ , a > 1 && a -- , o = 1 > 6 * a ? e + 6 * ( i - e ) * a : 1 > 2 * a ? i : 2 > 3 * a ? e + ( i - e ) * ( 2 / 3 - a ) * 6 : e , s [ h ] = 255 * o ; return s } function f ( t ) { var e , i , a = t [ 0 ] , s = t [ 1 ] / 100 , o = t [ 2 ] / 100 ; return 0 === o ? [ 0 , 0 , 0 ] : ( o *= 2 , s *= 1 >= o ? o : 2 - o , i = ( o + s ) / 2 , e = 2 * s / ( o + s ) , [ a , 100 * e , 100 * i ] ) } function m ( t ) { return o ( d ( t ) ) } function p ( t ) { return n ( d ( t ) ) } function v ( t ) { return l ( d ( t ) ) } function x ( t ) { var e = t [ 0 ] / 60 , i = t [ 1 ] / 100 , a = t [ 2 ] / 100 , s = Math . floor ( e ) % 6 , o = e - Math . floor ( e ) , n = 255 * a * ( 1 - i ) , r = 255 * a * ( 1 - i * o ) , l = 255 * a * ( 1 - i * ( 1 - o ) ) , a = 255 * a ; switch ( s ) { case 0 : return [ a , l , n ] ; case 1 : return [ r , a , n ] ; case 2 : return [ n , a , l ] ; case 3 : return [ n , r , a ] ; case 4 : return [ l , n , a ] ; case 5 : return [ a , n , r ] } } function y ( t ) { var e , i , a = t [ 0 ] , s = t [ 1 ] / 100 , o = t [ 2 ] / 100 ; return i = ( 2 - s ) * o , e = s * o , e /= 1 >= i ? i : 2 - i , e = e || 0 , i /= 2 , [ a , 100 * e , 100 * i ] } function k ( t ) { return o ( x ( t ) ) } function _ ( t ) { return n ( x ( t ) ) } function D ( t ) { return l ( x ( t ) ) } function S ( t ) { var e , i , a , s , o = t [ 0 ] / 360 , n = t [ 1 ] / 100 , l = t [ 2 ] / 100 , h = n + l ; switch ( h > 1 && ( n /= h , l /= h ) , e = Math . floor ( 6 * o ) , i = 1 - l , a = 6 * o - e , 0 != ( 1 & e ) && ( a = 1 - a ) , s = n + a * ( i - n ) , e ) { default : case 6 : case 0 : r = i , g = s , b = n ; break ; case 1 : r = s , g = i , b = n ; break ; case 2 : r = n , g = i , b = s ; break ; case 3 : r = n , g = s , b = i ; break ; case 4 : r = s , g = n , b = i ; break ; case 5 : r = i , g = n , b = s } return [ 255 * r , 255 * g , 255 * b ] } function w ( t ) { return a ( S ( t ) ) } function C ( t ) { return s ( S ( t ) ) } function M ( t ) { return n ( S ( t ) ) } function A ( t ) { return l ( S ( t ) ) } function I ( t ) { var e , i , a , s = t [ 0 ] / 100 , o = t [ 1 ] / 100 , n = t [ 2 ] / 100 , r = t [ 3 ] / 100 ; return e = 1 - Math . min ( 1 , s * ( 1 - r ) + r ) , i = 1 - Math . min ( 1 , o * ( 1 - r ) + r ) , a = 1 - Math . min ( 1 , n * ( 1 - r ) + r ) , [ 255 * e , 255 * i , 255 * a ] } function T ( t ) { return a ( I ( t ) ) } function F ( t ) { return s ( I ( t ) ) } function P ( t ) { return o ( I ( t ) ) } function O ( t ) { return l ( I ( t ) ) } function V ( t ) { var e , i , a , s = t [ 0 ] / 100 , o = t [ 1 ] / 100 , n = t [ 2 ] / 100 ; return e = 3.2406 * s + - 1.5372 * o + n * - . 4986 , i = s * - . 9689 + 1.8758 * o + . 0415 * n , a = . 0557 * s + o * - . 204 + 1.057 * n , e = e > . 0031308 ? 1.055 * Math . pow ( e , 1 / 2.4 ) - . 055 : e = 12.92 * e , i = i > . 0031308 ? 1.055 * Math . pow ( i , 1 / 2.4 ) - . 055 : i = 12.92 * i , a = a > . 0031308 ? 1.055 * Math . pow ( a , 1 / 2.4 ) - . 055 : a = 12.92 * a , e = Math . min ( Math . max ( 0 , e ) , 1 ) , i = Math . min ( Math . max ( 0 , i ) , 1 ) , a = Math . min ( Math . max ( 0 , a ) , 1 ) , [ 255 * e , 255 * i , 255 * a ] } function W ( t ) { var e , i , a , s = t [ 0 ] , o = t [ 1 ] , n = t [ 2 ] ; return s /= 95.047 , o /= 100 , n /= 108.883 , s =
//! moment.js
//! version : 2.10.6
//! authors : Tim Wood, Iskren Chernev, Moment.js contributors
//! license : MIT
//! momentjs.com
! function ( t , a ) { "object" == typeof i && "undefined" != typeof e ? e . exports = a ( ) : "function" == typeof define && define . amd ? define ( a ) : t . moment = a ( ) } ( this , function ( ) { "use strict" ; function i ( ) { return Wi . apply ( null , arguments ) } function a ( t ) { Wi = t } function s ( t ) { return "[object Array]" === Object . prototype . toString . call ( t ) } function o ( t ) { return t instanceof Date || "[object Date]" === Object . prototype . toString . call ( t ) } function n ( t , e ) { var i , a = [ ] ; for ( i = 0 ; i < t . length ; ++ i ) a . push ( e ( t [ i ] , i ) ) ; return a } function r ( t , e ) { return Object . prototype . hasOwnProperty . call ( t , e ) } function l ( t , e ) { for ( var i in e ) r ( e , i ) && ( t [ i ] = e [ i ] ) ; return r ( e , "toString" ) && ( t . toString = e . toString ) , r ( e , "valueOf" ) && ( t . valueOf = e . valueOf ) , t } function h ( t , e , i , a ) { return Tt ( t , e , i , a , ! 0 ) . utc ( ) } function c ( ) { return { empty : ! 1 , unusedTokens : [ ] , unusedInput : [ ] , overflow : - 2 , charsLeftOver : 0 , nullInput : ! 1 , invalidMonth : null , invalidFormat : ! 1 , userInvalidated : ! 1 , iso : ! 1 } } function u ( t ) { return null == t . _pf && ( t . _pf = c ( ) ) , t . _pf } function d ( t ) { if ( null == t . _isValid ) { var e = u ( t ) ; t . _isValid = ! ( isNaN ( t . _d . getTime ( ) ) || ! ( e . overflow < 0 ) || e . empty || e . invalidMonth || e . invalidWeekday || e . nullInput || e . invalidFormat || e . userInvalidated ) , t . _strict && ( t . _isValid = t . _isValid && 0 === e . charsLeftOver && 0 === e . unusedTokens . length && void 0 === e . bigHour ) } return t . _isValid } function f ( t ) { var e = h ( NaN ) ; return null != t ? l ( u ( e ) , t ) : u ( e ) . userInvalidated = ! 0 , e } function g ( t , e ) { var i , a , s ; if ( "undefined" != typeof e . _isAMomentObject && ( t . _isAMomentObject = e . _isAMomentObject ) , "undefined" != typeof e . _i && ( t . _i = e . _i ) , "undefined" != typeof e . _f && ( t . _f = e . _f ) , "undefined" != typeof e . _l && ( t . _l = e . _l ) , "undefined" != typeof e . _strict && ( t . _strict = e . _strict ) , "undefined" != typeof e . _tzm && ( t . _tzm = e . _tzm ) , "undefined" != typeof e . _isUTC && ( t . _isUTC = e . _isUTC ) , "undefined" != typeof e . _offset && ( t . _offset = e . _offset ) , "undefined" != typeof e . _pf && ( t . _pf = u ( e ) ) , "undefined" != typeof e . _locale && ( t . _locale = e . _locale ) , Ri . length > 0 ) for ( i in Ri ) a = Ri [ i ] , s = e [ a ] , "undefined" != typeof s && ( t [ a ] = s ) ; return t } function m ( t ) { g ( this , t ) , this . _d = new Date ( null != t . _d ? t . _d . getTime ( ) : NaN ) , zi === ! 1 && ( zi = ! 0 , i . updateOffset ( this ) , zi = ! 1 ) } function p ( t ) { return t instanceof m || null != t && null != t . _isAMomentObject } function b ( t ) { return 0 > t ? Math . ceil ( t ) : Math . floor ( t ) } function v ( t ) { var e = + t , i = 0 ; return 0 !== e && isFinite ( e ) && ( i = b ( e ) ) , i } function x ( t , e , i ) { var a , s = Math . min ( t . length , e . length ) , o = Math . abs ( t . length - e . length ) , n = 0 ; for ( a = 0 ; s > a ; a ++ ) ( i && t [ a ] !== e [ a ] || ! i && v ( t [ a ] ) !== v ( e [ a ] ) ) && n ++ ; return n + o } function y ( ) { } function k ( t ) { return t ? t . toLowerCase ( ) . replace ( "_" , "-" ) : t } function _ ( t ) { for ( var e , i , a , s , o = 0 ; o < t . length ; ) { for ( s = k ( t [ o ] ) . split ( "-" ) , e = s . length , i = k ( t [ o + 1 ] ) , i = i ? i . split ( "-" ) : null ; e > 0 ; ) { if ( a = D ( s . slice ( 0 , e ) . join ( "-" ) ) ) return a ; if ( i && i . length >= e && x ( s , i , ! 0 ) >= e - 1 ) break ; e -- } o ++ } return null } function D ( i ) { var a = null ; if ( ! Bi [ i ] && "undefined" != typeof e && e && e . exports ) try { a = Li . _abbr , t ( "./locale/" + i ) , S ( a ) } catch ( s ) { } return Bi [ i ] } function S ( t , e ) { var i ; return t && ( i = "undefined" == typeof e ? C ( t ) : w ( t , e ) , i && ( Li = i ) ) , Li . _abbr } function w ( t , e ) { return null !== e ? ( e . abbr = t , Bi [ t ] = Bi [ t ] || new y , Bi [ t ] . set ( e ) , S ( t ) , Bi [ t ] ) : ( delete Bi [ t ] , null ) } function C ( t ) { var e ; if ( t && t . _locale && t . _locale . _abbr && ( t = t . _locale . _abbr ) , ! t ) return Li ; if ( ! s ( t ) ) { if ( e = D ( t ) ) return e ; t = [ t ] } return _ ( t ) } function M ( t , e ) { var i = t . toLowerCase ( ) ; Yi [ i ] = Yi [ i + "s" ] = Yi [ e ] = t } function A ( t ) { return "string" == typeof t ? Yi [ t ] || Yi [ t . toLowerCase ( ) ] : void 0 } function I ( t ) { var e , i , a = { } ; for ( i in t ) r ( t , i ) && ( e = A ( i ) , e && ( a [ e ] = t [ i ] ) ) ; return a } function T ( t , e ) { return function ( a ) { return null != a ? ( P ( this , t , a ) , i . updateOffset ( this , e ) , this ) : F ( this , t ) } } function F ( t , e ) { return t . _d [ "get" + ( t . _isUTC ? "UTC" : "" ) + e ] ( ) } function P ( t , e , i ) { return t . _d [ "set" + ( t . _isUTC ? "UTC" : "" ) + e ] ( i ) } function O ( t , e ) { var i ; if ( "object" == typeof t ) for ( i in t ) this . set ( i , t [ i ] ) ; else if ( t = A ( t ) , "function" == typeof this [ t ] ) return this [ t ] ( e ) ; return this } function V ( t , e , i ) { var a = "" + Math . abs ( t ) , s = e - a . length , o = t >= 0 ; return ( o ? i ? "+" : "" : "-" ) + Math . pow ( 10 , Math . max ( 0 , s ) ) . toString ( ) . substr ( 1 ) + a } function W ( t , e , i , a ) { var s = a ; "string" == typeof a && ( s = function ( ) { return this [ a ] ( ) } ) , t && ( Ui [ t ] = s ) , e && ( Ui [ e [ 0 ] ] = function ( ) { return V ( s . apply ( this , arguments ) , e [ 1 ] , e [ 2 ] ) } ) , i && ( Ui [ i ] = function ( ) { return this . localeData ( ) . ordinal ( s . apply ( this , arguments
Na . utcOffset = Nt , Na . utc = Et , Na . local = Ut , Na . parseZone = jt , Na . hasAlignedHourOffset = qt , Na . isDST = Gt , Na . isDSTShifted = Zt , Na . isLocal = Qt , Na . isUtcOffset = Jt , Na . isUtc = Xt , Na . isUTC = Xt , Na . zoneAbbr = Xe , Na . zoneName = $e , Na . dates = it ( "dates accessor is deprecated. Use date instead." , Fa ) , Na . months = it ( "months accessor is deprecated. Use month instead" , $ ) , Na . years = it ( "years accessor is deprecated. Use year instead" , ka ) , Na . zone = it ( "moment().zone is deprecated, use moment().utcOffset instead. https://github.com/moment/moment/issues/1779" , Ht ) ; var Ha = Na , Ea = { sameDay : "[Today at] LT" , nextDay : "[Tomorrow at] LT" , nextWeek : "dddd [at] LT" , lastDay : "[Yesterday at] LT" , lastWeek : "[Last] dddd [at] LT" , sameElse : "L" } , Ua = { LTS : "h:mm:ss A" , LT : "h:mm A" , L : "MM/DD/YYYY" , LL : "MMMM D, YYYY" , LLL : "MMMM D, YYYY h:mm A" , LLLL : "dddd, MMMM D, YYYY h:mm A" } , ja = "Invalid date" , qa = "%d" , Ga = /\d{1,2}/ , Za = { future : "in %s" , past : "%s ago" , s : "a few seconds" , m : "a minute" , mm : "%d minutes" , h : "an hour" , hh : "%d hours" , d : "a day" , dd : "%d days" , M : "a month" , MM : "%d months" , y : "a year" , yy : "%d years" } , Qa = y . prototype ; Qa . _calendar = Ea , Qa . calendar = ei , Qa . _longDateFormat = Ua , Qa . longDateFormat = ii , Qa . _invalidDate = ja , Qa . invalidDate = ai , Qa . _ordinal = qa , Qa . ordinal = si , Qa . _ordinalParse = Ga , Qa . preparse = oi , Qa . postformat = oi , Qa . _relativeTime = Za , Qa . relativeTime = ni , Qa . pastFuture = ri , Qa . set = li , Qa . months = Z , Qa . _months = ga , Qa . monthsShort = Q , Qa . _monthsShort = ma , Qa . monthsParse = J , Qa . week = dt , Qa . _week = _a , Qa . firstDayOfYear = gt , Qa . firstDayOfWeek = ft , Qa . weekdays = Be , Qa . _weekdays = Pa , Qa . weekdaysMin = Ne , Qa . _weekdaysMin = Va , Qa . weekdaysShort = Ye , Qa . _weekdaysShort = Oa , Qa . weekdaysParse = He , Qa . isPM = Ze , Qa . _meridiemParse = Wa , Qa . meridiem = Qe , S ( "en" , { ordinalParse : /\d{1,2}(th|st|nd|rd)/ , ordinal : function ( t ) { var e = t % 10 , i = 1 === v ( t % 100 / 10 ) ? "th" : 1 === e ? "st" : 2 === e ? "nd" : 3 === e ? "rd" : "th" ; return t + i } } ) , i . lang = it ( "moment.lang is deprecated. Use moment.locale instead." , S ) , i . langData = it ( "moment.langData is deprecated. Use moment.localeData instead." , C ) ; var Ja = Math . abs , Xa = Ci ( "ms" ) , $a = Ci ( "s" ) , Ka = Ci ( "m" ) , ts = Ci ( "h" ) , es = Ci ( "d" ) , is = Ci ( "w" ) , as = Ci ( "M" ) , ss = Ci ( "y" ) , os = Ai ( "milliseconds" ) , ns = Ai ( "seconds" ) , rs = Ai ( "minutes" ) , ls = Ai ( "hours" ) , hs = Ai ( "days" ) , cs = Ai ( "months" ) , us = Ai ( "years" ) , ds = Math . round , fs = { s : 45 , m : 45 , h : 22 , d : 26 , M : 11 } , gs = Math . abs , ms = Wt . prototype ; ms . abs = pi , ms . add = vi , ms . subtract = xi , ms . as = Si , ms . asMilliseconds = Xa , ms . asSeconds = $a , ms . asMinutes = Ka , ms . asHours = ts , ms . asDays = es , ms . asWeeks = is , ms . asMonths = as , ms . asYears = ss , ms . valueOf = wi , ms . _bubble = ki , ms . get = Mi , ms . milliseconds = os , ms . seconds = ns , ms . minutes = rs , ms . hours = ls , ms . days = hs , ms . weeks = Ii , ms . months = cs , ms . years = us , ms . humanize = Oi , ms . toISOString = Vi , ms . toString = Vi , ms . toJSON = Vi , ms . locale = xe , ms . localeData = ye , ms . toIsoString = it ( "toIsoString() is deprecated. Please use toISOString() instead (notice the capitals)" , Vi ) , ms . lang = Ta , W ( "X" , 0 , 0 , "unix" ) , W ( "x" , 0 , 0 , "valueOf" ) , N ( "x" , ea ) , N ( "X" , aa ) , U ( "X" , function ( t , e , i ) { i . _d = new Date ( 1e3 * parseFloat ( t , 10 ) ) } ) , U ( "x" , function ( t , e , i ) { i . _d = new Date ( v ( t ) ) } ) , i . version = "2.10.6" , a ( Ft ) , i . fn = Ha , i . min = Ot , i . max = Vt , i . utc = h , i . unix = Ke , i . months = ui , i . isDate = o , i . locale = S , i . invalid = f , i . duration = $t , i . isMoment = p , i . weekdays = fi , i . parseZone = ti , i . localeData = C , i . isDuration = Lt , i . monthsShort = di , i . weekdaysMin = mi , i . defineLocale = w , i . weekdaysShort = gi , i . normalizeUnits = A , i . relativeTimeThreshold = Pi ; var ps = i ; return ps } ) } , { } ] , 7 : [ function ( t , e , i ) { / * !
2016-02-12 05:29:26 +01:00
* Chart . js
* http : //chartjs.org/
2016-04-17 00:39:51 +02:00
* Version : 2.0 . 2
2016-02-12 05:29:26 +01:00
*
* Copyright 2015 Nick Downie
* Released under the MIT license
* https : //github.com/nnnick/Chart.js/blob/master/LICENSE.md
* /
2016-04-17 00:39:51 +02:00
var a = t ( "./core/core.js" ) ( ) ; t ( "./core/core.helpers" ) ( a ) , t ( "./core/core.element" ) ( a ) , t ( "./core/core.animation" ) ( a ) , t ( "./core/core.controller" ) ( a ) , t ( "./core/core.datasetController" ) ( a ) , t ( "./core/core.layoutService" ) ( a ) , t ( "./core/core.legend" ) ( a ) , t ( "./core/core.scale" ) ( a ) , t ( "./core/core.scaleService" ) ( a ) , t ( "./core/core.title" ) ( a ) , t ( "./core/core.tooltip" ) ( a ) , t ( "./controllers/controller.bar" ) ( a ) , t ( "./controllers/controller.bubble" ) ( a ) , t ( "./controllers/controller.doughnut" ) ( a ) , t ( "./controllers/controller.line" ) ( a ) , t ( "./controllers/controller.polarArea" ) ( a ) , t ( "./controllers/controller.radar" ) ( a ) , t ( "./scales/scale.category" ) ( a ) , t ( "./scales/scale.linear" ) ( a ) , t ( "./scales/scale.logarithmic" ) ( a ) , t ( "./scales/scale.radialLinear" ) ( a ) , t ( "./scales/scale.time" ) ( a ) , t ( "./elements/element.arc" ) ( a ) , t ( "./elements/element.line" ) ( a ) , t ( "./elements/element.point" ) ( a ) , t ( "./elements/element.rectangle" ) ( a ) , t ( "./charts/Chart.Bar" ) ( a ) , t ( "./charts/Chart.Bubble" ) ( a ) , t ( "./charts/Chart.Doughnut" ) ( a ) , t ( "./charts/Chart.Line" ) ( a ) , t ( "./charts/Chart.PolarArea" ) ( a ) , t ( "./charts/Chart.Radar" ) ( a ) , t ( "./charts/Chart.Scatter" ) ( a ) , window . Chart = e . exports = a } , { "./charts/Chart.Bar" : 8 , "./charts/Chart.Bubble" : 9 , "./charts/Chart.Doughnut" : 10 , "./charts/Chart.Line" : 11 , "./charts/Chart.PolarArea" : 12 , "./charts/Chart.Radar" : 13 , "./charts/Chart.Scatter" : 14 , "./controllers/controller.bar" : 15 , "./controllers/controller.bubble" : 16 , "./controllers/controller.doughnut" : 17 , "./controllers/controller.line" : 18 , "./controllers/controller.polarArea" : 19 , "./controllers/controller.radar" : 20 , "./core/core.animation" : 21 , "./core/core.controller" : 22 , "./core/core.datasetController" : 23 , "./core/core.element" : 24 , "./core/core.helpers" : 25 , "./core/core.js" : 26 , "./core/core.layoutService" : 27 , "./core/core.legend" : 28 , "./core/core.scale" : 29 , "./core/core.scaleService" : 30 , "./core/core.title" : 31 , "./core/core.tooltip" : 32 , "./elements/element.arc" : 33 , "./elements/element.line" : 34 , "./elements/element.point" : 35 , "./elements/element.rectangle" : 36 , "./scales/scale.category" : 37 , "./scales/scale.linear" : 38 , "./scales/scale.logarithmic" : 39 , "./scales/scale.radialLinear" : 40 , "./scales/scale.time" : 41 } ] , 8 : [ function ( t , e , i ) { "use strict" ; e . exports = function ( t ) { t . Bar = function ( e , i ) { return i . type = "bar" , new t ( e , i ) } } } , { } ] , 9 : [ function ( t , e , i ) { "use strict" ; e . exports = function ( t ) { t . Bubble = function ( e , i ) { return i . type = "bubble" , new t ( e , i ) } } } , { } ] , 10 : [ function ( t , e , i ) { "use strict" ; e . exports = function ( t ) { t . Doughnut = function ( e , i ) { return i . type = "doughnut" , new t ( e , i ) } } } , { } ] , 11 : [ function ( t , e , i ) { "use strict" ; e . exports = function ( t ) { t . Line = function ( e , i ) { return i . type = "line" , new t ( e , i ) } } } , { } ] , 12 : [ function ( t , e , i ) { "use strict" ; e . exports = function ( t ) { t . PolarArea = function ( e , i ) { return i . type = "polarArea" , new t ( e , i ) } } } , { } ] , 13 : [ function ( t , e , i ) { "use strict" ; e . exports = function ( t ) { var e = t . helpers , i = { aspectRatio : 1 } ; t . Radar = function ( a , s ) { return s . options = e . configMerge ( i , s . options ) , s . type = "radar" , new t ( a , s ) } } } , { } ] , 14 : [ function ( t , e , i ) { "use strict" ; e . exports = function ( t ) { var e = { hover : { mode : "single" } , scales : { xAxes : [ { type : "linear" , position : "bottom" , id : "x-axis-1" } ] , yAxes : [ { type : "linear" , position : "left" , id : "y-axis-1" } ] } , tooltips : { callbacks : { title : function ( t , e ) { return "" } , label : function ( t , e ) { return "(" + t . xLabel + ", " + t . yLabel + ")" } } } } ; t . defaults . scatter = e , t . controllers . scatter = t . controllers . line , t . Scatter = function ( e , i ) { return i . type = "scatter" , new t ( e , i ) } } } , { } ] , 15 : [ function ( t , e , i ) { "use strict" ; e . exports = function ( t ) { var e = t . helpers ; t . defaults . bar = { hover : { mode : "label" } , scales : { xAxes : [ { type : "category" , categoryPercentage : . 8 , barPercentage : . 9 , gridLines : { offsetGridLines : ! 0 } } ] , yAxes : [ { type : "linear" } ] } } , t . controllers . bar = t . DatasetController . extend ( { initialize : function ( e , i ) { t . DatasetController . prototype . initialize . call ( this , e , i ) , this . getDataset ( ) . bar = ! 0 } , getBarCount : function ( ) { var t = 0 ; return e . each ( this . chart . data . datasets , function ( i ) { e . isDatasetVisible ( i ) && i . bar && ++ t } ) , t } , addElements : function ( ) { this . getDataset ( ) . metaData = this . getDataset ( ) . metaData || [ ] , e . each ( this . getDataset ( ) . data , function ( e , i ) { this . getDataset ( ) . metaData [ i ] = this . getDataset ( ) . metaData [ i ] || new t . elements . Rectangle ( { _chart : this . chart . chart , _da
var h = - . 5 * Math . PI + s * r , c = h + s , u = { x : o , y : n , innerRadius : 0 , outerRadius : this . chart . options . animateScale ? 0 : this . chart . scale . getDistanceFromCenterForValue ( this . getDataset ( ) . data [ i ] ) , startAngle : this . chart . options . animateRotate ? Math . PI * - . 5 : h , endAngle : this . chart . options . animateRotate ? Math . PI * - . 5 : c , backgroundColor : t . custom && t . custom . backgroundColor ? t . custom . backgroundColor : e . getValueAtIndexOrDefault ( this . getDataset ( ) . backgroundColor , i , this . chart . options . elements . arc . backgroundColor ) , borderWidth : t . custom && t . custom . borderWidth ? t . custom . borderWidth : e . getValueAtIndexOrDefault ( this . getDataset ( ) . borderWidth , i , this . chart . options . elements . arc . borderWidth ) , borderColor : t . custom && t . custom . borderColor ? t . custom . borderColor : e . getValueAtIndexOrDefault ( this . getDataset ( ) . borderColor , i , this . chart . options . elements . arc . borderColor ) , label : e . getValueAtIndexOrDefault ( this . chart . data . labels , i , this . chart . data . labels [ i ] ) } ; e . extend ( t , { _chart : this . chart . chart , _datasetIndex : this . index , _index : i , _scale : this . chart . scale , _model : a ? u : { x : o , y : n , innerRadius : 0 , outerRadius : this . chart . scale . getDistanceFromCenterForValue ( this . getDataset ( ) . data [ i ] ) , startAngle : h , endAngle : c , backgroundColor : t . custom && t . custom . backgroundColor ? t . custom . backgroundColor : e . getValueAtIndexOrDefault ( this . getDataset ( ) . backgroundColor , i , this . chart . options . elements . arc . backgroundColor ) , borderWidth : t . custom && t . custom . borderWidth ? t . custom . borderWidth : e . getValueAtIndexOrDefault ( this . getDataset ( ) . borderWidth , i , this . chart . options . elements . arc . borderWidth ) , borderColor : t . custom && t . custom . borderColor ? t . custom . borderColor : e . getValueAtIndexOrDefault ( this . getDataset ( ) . borderColor , i , this . chart . options . elements . arc . borderColor ) , label : e . getValueAtIndexOrDefault ( this . chart . data . labels , i , this . chart . data . labels [ i ] ) } } ) , t . pivot ( ) } , draw : function ( t ) { var i = t || 1 ; e . each ( this . getDataset ( ) . metaData , function ( t , e ) { t . transition ( i ) . draw ( ) } ) } , setHoverStyle : function ( t ) { var i = this . chart . data . datasets [ t . _datasetIndex ] , a = t . _index ; t . _model . backgroundColor = t . custom && t . custom . hoverBackgroundColor ? t . custom . hoverBackgroundColor : e . getValueAtIndexOrDefault ( i . hoverBackgroundColor , a , e . color ( t . _model . backgroundColor ) . saturate ( . 5 ) . darken ( . 1 ) . rgbString ( ) ) , t . _model . borderColor = t . custom && t . custom . hoverBorderColor ? t . custom . hoverBorderColor : e . getValueAtIndexOrDefault ( i . hoverBorderColor , a , e . color ( t . _model . borderColor ) . saturate ( . 5 ) . darken ( . 1 ) . rgbString ( ) ) , t . _model . borderWidth = t . custom && t . custom . hoverBorderWidth ? t . custom . hoverBorderWidth : e . getValueAtIndexOrDefault ( i . hoverBorderWidth , a , t . _model . borderWidth ) } , removeHoverStyle : function ( t ) { var i = ( this . chart . data . datasets [ t . _datasetIndex ] , t . _index ) ; t . _model . backgroundColor = t . custom && t . custom . backgroundColor ? t . custom . backgroundColor : e . getValueAtIndexOrDefault ( this . getDataset ( ) . backgroundColor , i , this . chart . options . elements . arc . backgroundColor ) , t . _model . borderColor = t . custom && t . custom . borderColor ? t . custom . borderColor : e . getValueAtIndexOrDefault ( this . getDataset ( ) . borderColor , i , this . chart . options . elements . arc . borderColor ) , t . _model . borderWidth = t . custom && t . custom . borderWidth ? t . custom . borderWidth : e . getValueAtIndexOrDefault ( this . getDataset ( ) . borderWidth , i , this . chart . options . elements . arc . borderWidth ) } , calculateCircumference : function ( t ) { if ( isNaN ( t ) ) return 0 ; var i = e . where ( this . getDataset ( ) . data , function ( t ) { return isNaN ( t ) } ) . length ; return 2 * Math . PI / ( this . getDataset ( ) . data . length - i ) } } ) } } , { } ] , 20 : [ function ( t , e , i ) { "use strict" ; e . exports = function ( t ) { var e = t . helpers ; t . defaults . radar = { scale : { type : "radialLinear" } , elements : { line : { tension : 0 } } } , t . controllers . radar = t . DatasetController . extend ( { linkScales : function ( ) { } , addElements : function ( ) { this . getDataset ( ) . metaData = this . getDataset ( ) . metaData || [ ] , this . getDataset ( ) . metaDataset = this . getDataset ( ) . metaDataset || new t . elements . Line ( { _chart : this . chart . chart , _datasetIndex : this . index , _points : this . getDataset ( ) . metaData , _loop : ! 0 } ) , e . each ( this . getDataset ( ) . data , function ( e , i ) { this . getDataset ( ) . metaData [ i ] = this . getDataset ( ) . metaData [ i ] || new t . elements . Point ( { _chart : this . chart . chart , _datasetIndex : this . index , _index : i , _model : { x : 0 , y : 0 } } ) } , this ) } , addElementAndReset : function ( e ) { this . getDataset ( ) . metaData = this
return window . setTimeout ( t , 1e3 / 60 ) } } ( ) , s . cancelAnimFrame = function ( ) { return window . cancelAnimationFrame || window . webkitCancelAnimationFrame || window . mozCancelAnimationFrame || window . oCancelAnimationFrame || window . msCancelAnimationFrame || function ( t ) { return window . clearTimeout ( t , 1e3 / 60 ) } } ( ) , s . getRelativePosition = function ( t , e ) { var i , a , o = t . originalEvent || t , n = t . currentTarget || t . srcElement , r = n . getBoundingClientRect ( ) ; o . touches && o . touches . length > 0 ? ( i = o . touches [ 0 ] . clientX , a = o . touches [ 0 ] . clientY ) : ( i = o . clientX , a = o . clientY ) ; var l = parseFloat ( s . getStyle ( n , "padding-left" ) ) , h = parseFloat ( s . getStyle ( n , "padding-top" ) ) , c = parseFloat ( s . getStyle ( n , "padding-right" ) ) , u = parseFloat ( s . getStyle ( n , "padding-bottom" ) ) , d = r . right - r . left - l - c , f = r . bottom - r . top - h - u ; return i = Math . round ( ( i - r . left - l ) / d * n . width / e . currentDevicePixelRatio ) , a = Math . round ( ( a - r . top - h ) / f * n . height / e . currentDevicePixelRatio ) , { x : i , y : a } } , s . addEvent = function ( t , e , i ) { t . addEventListener ? t . addEventListener ( e , i ) : t . attachEvent ? t . attachEvent ( "on" + e , i ) : t [ "on" + e ] = i } , s . removeEvent = function ( t , e , i ) { t . removeEventListener ? t . removeEventListener ( e , i , ! 1 ) : t . detachEvent ? t . detachEvent ( "on" + e , i ) : t [ "on" + e ] = s . noop } , s . bindEvents = function ( t , e , i ) { t . events || ( t . events = { } ) , s . each ( e , function ( e ) { t . events [ e ] = function ( ) { i . apply ( t , arguments ) } , s . addEvent ( t . chart . canvas , e , t . events [ e ] ) } ) } , s . unbindEvents = function ( t , e ) { s . each ( e , function ( e , i ) { s . removeEvent ( t . chart . canvas , i , e ) } ) } , s . getConstraintWidth = function ( t ) { return i ( t , "max-width" , "clientWidth" ) } , s . getConstraintHeight = function ( t ) { return i ( t , "max-height" , "clientHeight" ) } , s . getMaximumWidth = function ( t ) { var e = t . parentNode , i = parseInt ( s . getStyle ( e , "padding-left" ) ) + parseInt ( s . getStyle ( e , "padding-right" ) ) , a = e . clientWidth - i , o = s . getConstraintWidth ( t ) ; return void 0 !== o && ( a = Math . min ( a , o ) ) , a } , s . getMaximumHeight = function ( t ) { var e = t . parentNode , i = parseInt ( s . getStyle ( e , "padding-top" ) ) + parseInt ( s . getStyle ( e , "padding-bottom" ) ) , a = e . clientHeight - i , o = s . getConstraintHeight ( t ) ; return void 0 !== o && ( a = Math . min ( a , o ) ) , a } , s . getStyle = function ( t , e ) { return t . currentStyle ? t . currentStyle [ e ] : document . defaultView . getComputedStyle ( t , null ) . getPropertyValue ( e ) } , s . retinaScale = function ( t ) { var e = t . ctx , i = t . canvas . width , a = t . canvas . height , s = t . currentDevicePixelRatio = window . devicePixelRatio || 1 ; 1 !== s && ( e . canvas . height = a * s , e . canvas . width = i * s , e . scale ( s , s ) , t . originalDevicePixelRatio = t . originalDevicePixelRatio || s ) , e . canvas . style . width = i + "px" , e . canvas . style . height = a + "px" } , s . clear = function ( t ) { t . ctx . clearRect ( 0 , 0 , t . width , t . height ) } , s . fontString = function ( t , e , i ) { return e + " " + t + "px " + i } , s . longestText = function ( t , e , i , a ) { a = a || { } , a . data = a . data || { } , a . garbageCollect = a . garbageCollect || [ ] , a . font !== e && ( a . data = { } , a . garbageCollect = [ ] , a . font = e ) , t . font = e ; var o = 0 ; s . each ( i , function ( e ) { if ( void 0 !== e && null !== e ) { var i = a . data [ e ] ; i || ( i = a . data [ e ] = t . measureText ( e ) . width , a . garbageCollect . push ( e ) ) , i > o && ( o = i ) } } ) ; var n = a . garbageCollect . length / 2 ; if ( n > i . length ) { for ( var r = 0 ; n > r ; r ++ ) delete a . data [ a . garbageCollect [ r ] ] ; a . garbageCollect . splice ( 0 , n ) } return o } , s . drawRoundedRectangle = function ( t , e , i , a , s , o ) { t . beginPath ( ) , t . moveTo ( e + o , i ) , t . lineTo ( e + a - o , i ) , t . quadraticCurveTo ( e + a , i , e + a , i + o ) , t . lineTo ( e + a , i + s - o ) , t . quadraticCurveTo ( e + a , i + s , e + a - o , i + s ) , t . lineTo ( e + o , i + s ) , t . quadraticCurveTo ( e , i + s , e , i + s - o ) , t . lineTo ( e , i + o ) , t . quadraticCurveTo ( e , i , e + o , i ) , t . closePath ( ) } , s . color = function ( e ) { return a ? a ( e instanceof CanvasGradient ? t . defaults . global . defaultColor : e ) : ( console . log ( "Color.js not found!" ) , e ) } , s . addResizeListener = function ( t , e ) { var i = document . createElement ( "iframe" ) , a = "chartjs-hidden-iframe" ; i . classlist ? i . classlist . add ( a ) : i . setAttribute ( "class" , a ) , i . style . width = "100%" , i . style . display = "block" , i . style . border = 0 , i . style . height = 0 , i . style . margin = 0 , i . style . position = "absolute" , i . style . left = 0 , i . style . right = 0 , i . style . top = 0 , i . style . bottom = 0 , t . insertBefore ( i , t . firstChild ) , ( i . contentWindow || i ) . onresize = function ( ) { e && e ( ) } } , s . removeResizeListener = function ( t ) { var e = t . querySelector ( ".chartjs-hidden-iframe" ) ; e && e . parentNode . removeChild ( e ) } , s . isArray = function ( t ) { return Array . isArray ? Array . isArray ( t ) : "[object Array]" === Object . prototype . toString . call ( t ) } , s . pushAllIfDefined = function ( t , e ) { "undefined" != typ
_footerAlign : e . tooltips . footerAlign , footerSpacing : e . tooltips . footerSpacing , footerMarginTop : e . tooltips . footerMarginTop , caretSize : e . tooltips . caretSize , cornerRadius : e . tooltips . cornerRadius , backgroundColor : e . tooltips . backgroundColor , opacity : 0 , legendColorBackground : e . tooltips . multiKeyBackground } } ) } , getTitle : function ( ) { var t = this . _options . tooltips . callbacks . beforeTitle . apply ( this , arguments ) , i = this . _options . tooltips . callbacks . title . apply ( this , arguments ) , a = this . _options . tooltips . callbacks . afterTitle . apply ( this , arguments ) , s = [ ] ; return s = e ( s , t ) , s = e ( s , i ) , s = e ( s , a ) } , getBeforeBody : function ( ) { var t = this . _options . tooltips . callbacks . beforeBody . apply ( this , arguments ) ; return i . isArray ( t ) ? t : void 0 !== t ? [ t ] : [ ] } , getBody : function ( t , e ) { var a = [ ] ; return i . each ( t , function ( t ) { i . pushAllIfDefined ( this . _options . tooltips . callbacks . beforeLabel . call ( this , t , e ) , a ) , i . pushAllIfDefined ( this . _options . tooltips . callbacks . label . call ( this , t , e ) , a ) , i . pushAllIfDefined ( this . _options . tooltips . callbacks . afterLabel . call ( this , t , e ) , a ) } , this ) , a } , getAfterBody : function ( ) { var t = this . _options . tooltips . callbacks . afterBody . apply ( this , arguments ) ; return i . isArray ( t ) ? t : void 0 !== t ? [ t ] : [ ] } , getFooter : function ( ) { var t = this . _options . tooltips . callbacks . beforeFooter . apply ( this , arguments ) , i = this . _options . tooltips . callbacks . footer . apply ( this , arguments ) , a = this . _options . tooltips . callbacks . afterFooter . apply ( this , arguments ) , s = [ ] ; return s = e ( s , t ) , s = e ( s , i ) , s = e ( s , a ) } , getAveragePosition : function ( t ) { if ( ! t . length ) return ! 1 ; var e = [ ] , a = [ ] ; i . each ( t , function ( t ) { if ( t ) { var i = t . tooltipPosition ( ) ; e . push ( i . x ) , a . push ( i . y ) } } ) ; for ( var s = 0 , o = 0 , n = 0 ; n < e . length ; n ++ ) s += e [ n ] , o += a [ n ] ; return { x : Math . round ( s / e . length ) , y : Math . round ( o / e . length ) } } , update : function ( t ) { if ( this . _active . length ) { this . _model . opacity = 1 ; var e , a = this . _active [ 0 ] , s = [ ] , o = [ ] ; if ( "single" === this . _options . tooltips . mode ) { var n = a . _yScale || a . _scale ; o . push ( { xLabel : a . _xScale ? a . _xScale . getLabelForIndex ( a . _index , a . _datasetIndex ) : "" , yLabel : n ? n . getLabelForIndex ( a . _index , a . _datasetIndex ) : "" , index : a . _index , datasetIndex : a . _datasetIndex } ) , e = this . getAveragePosition ( this . _active ) } else i . each ( this . _data . datasets , function ( t , e ) { if ( i . isDatasetVisible ( t ) ) { var s = t . metaData [ a . _index ] ; if ( s ) { var n = a . _yScale || a . _scale ; o . push ( { xLabel : s . _xScale ? s . _xScale . getLabelForIndex ( s . _index , s . _datasetIndex ) : "" , yLabel : n ? n . getLabelForIndex ( s . _index , s . _datasetIndex ) : "" , index : a . _index , datasetIndex : e } ) } } } , null , a . _yScale . options . stacked ) , i . each ( this . _active , function ( t ) { t && s . push ( { borderColor : t . _view . borderColor , backgroundColor : t . _view . backgroundColor } ) } , null , a . _yScale . options . stacked ) , e = this . getAveragePosition ( this . _active ) , e . y = this . _active [ 0 ] . _yScale . getPixelForDecimal ( . 5 ) ; i . extend ( this . _model , { title : this . getTitle ( o , this . _data ) , beforeBody : this . getBeforeBody ( o , this . _data ) , body : this . getBody ( o , this . _data ) , afterBody : this . getAfterBody ( o , this . _data ) , footer : this . getFooter ( o , this . _data ) } ) , i . extend ( this . _model , { x : Math . round ( e . x ) , y : Math . round ( e . y ) , caretPadding : i . getValueOrDefault ( e . padding , 2 ) , labelColors : s } ) ; var r = this . getTooltipSize ( this . _model ) ; this . determineAlignment ( r ) , i . extend ( this . _model , this . getBackgroundPoint ( this . _model , r ) ) } else this . _model . opacity = 0 ; return t && this . _options . tooltips . custom && this . _options . tooltips . custom . call ( this , this . _model ) , this } , getTooltipSize : function ( t ) { var e = this . _chart . ctx , a = { height : 2 * t . yPadding , width : 0 } , s = t . body . length + t . beforeBody . length + t . afterBody . length ; return a . height += t . title . length * t . titleFontSize , a . height += ( t . title . length - 1 ) * t . titleSpacing , a . height += t . title . length ? t . titleMarginBottom : 0 , a . height += s * t . bodyFontSize , a . height += s ? ( s - 1 ) * t . bodySpacing : 0 , a . height += t . footer . length ? t . footerMarginTop : 0 , a . height += t . footer . length * t . footerFontSize , a . height += t . footer . length ? ( t . footer . length - 1 ) * t . footerSpacing : 0 , e . font = i . fontString ( t . titleFontSize , t . _titleFontStyle , t . _titleFontFamily ) , i . each ( t . title , function ( t ) { a . width = Math . max ( a . width , e . measureText ( t ) . width ) } ) , e . font = i . fontString ( t . bodyFontSize , t . _bodyFontStyle , t . _bodyFontFamily ) , i . each ( t . beforeBody . concat ( t . afterBody ) , function ( t ) { a . width = Math . max ( a . width , e . measureText ( t ) . width ) } ) , i . each ( t . body , function ( i ) { a . width = Math . max ( a . width , e . measur
} , { name : "day" , steps : [ 1 , 2 , 5 ] } , { name : "week" , maxStep : 4 } , { name : "month" , maxStep : 3 } , { name : "quarter" , maxStep : 4 } , { name : "year" , maxStep : ! 1 } ] } , s = { position : "bottom" , time : { parser : ! 1 , format : ! 1 , unit : ! 1 , round : ! 1 , displayFormat : ! 1 , displayFormats : { millisecond : "h:mm:ss.SSS a" , second : "h:mm:ss a" , minute : "h:mm:ss a" , hour : "MMM D, hA" , day : "ll" , week : "ll" , month : "MMM YYYY" , quarter : "[Q]Q - YYYY" , year : "YYYY" } } , ticks : { autoSkip : ! 1 } } , o = t . Scale . extend ( { initialize : function ( ) { if ( ! a ) 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" ) ; t . Scale . prototype . initialize . call ( this ) } , getLabelMoment : function ( t , e ) { return this . labelMoments [ t ] [ e ] } , determineDataLimits : function ( ) { this . labelMoments = [ ] ; var t = [ ] ; this . chart . data . labels && this . chart . data . labels . length > 0 ? ( e . each ( this . chart . data . labels , function ( e , i ) { var a = this . parseTime ( e ) ; this . options . time . round && a . startOf ( this . options . time . round ) , t . push ( a ) } , this ) , this . firstTick = a . min . call ( this , t ) , this . lastTick = a . max . call ( this , t ) ) : ( this . firstTick = null , this . lastTick = null ) , e . each ( this . chart . data . datasets , function ( i , s ) { var o = [ ] ; "object" == typeof i . data [ 0 ] ? e . each ( i . data , function ( t , e ) { var i = this . parseTime ( this . getRightValue ( t ) ) ; this . options . time . round && i . startOf ( this . options . time . round ) , o . push ( i ) , this . firstTick = null !== this . firstTick ? a . min ( this . firstTick , i ) : i , this . lastTick = null !== this . lastTick ? a . max ( this . lastTick , i ) : i } , this ) : o = t , this . labelMoments . push ( o ) } , this ) , this . options . time . min && ( this . firstTick = this . parseTime ( this . options . time . min ) ) , this . options . time . max && ( this . lastTick = this . parseTime ( this . options . time . max ) ) , this . firstTick = ( this . firstTick || a ( ) ) . clone ( ) , this . lastTick = ( this . lastTick || a ( ) ) . clone ( ) } , buildTicks : function ( a ) { this . ctx . save ( ) ; var s = e . getValueOrDefault ( this . options . ticks . fontSize , t . defaults . global . defaultFontSize ) , o = e . getValueOrDefault ( this . options . ticks . fontStyle , t . defaults . global . defaultFontStyle ) , n = e . getValueOrDefault ( this . options . ticks . fontFamily , t . defaults . global . defaultFontFamily ) , r = e . fontString ( s , o , n ) ; if ( this . ctx . font = r , this . ticks = [ ] , this . unitScale = 1 , this . scaleSizeInUnits = 0 , this . options . time . unit ) this . tickUnit = this . options . time . unit || "day" , this . displayFormat = this . options . time . displayFormats [ this . tickUnit ] , this . scaleSizeInUnits = this . lastTick . diff ( this . firstTick , this . tickUnit , ! 0 ) , this . unitScale = e . getValueOrDefault ( this . options . time . unitStepSize , 1 ) ; else { var l = this . isHorizontal ( ) ? this . width - ( this . paddingLeft + this . paddingRight ) : this . height - ( this . paddingTop + this . paddingBottom ) , h = this . tickFormatFunction ( this . firstTick , 0 , [ ] ) , c = this . ctx . measureText ( h ) . width , u = Math . cos ( e . toRadians ( this . options . ticks . maxRotation ) ) , d = Math . sin ( e . toRadians ( this . options . ticks . maxRotation ) ) ; c = c * u + s * d ; var f = l / c ; this . tickUnit = "millisecond" , this . scaleSizeInUnits = this . lastTick . diff ( this . firstTick , this . tickUnit , ! 0 ) , this . displayFormat = this . options . time . displayFormats [ this . tickUnit ] ; for ( var g = 0 , m = i . units [ g ] ; g < i . units . length ; ) { if ( this . unitScale = 1 , e . isArray ( m . steps ) && Math . ceil ( this . scaleSizeInUnits / f ) < e . max ( m . steps ) ) { for ( var p = 0 ; p < m . steps . length ; ++ p ) if ( m . steps [ p ] >= Math . ceil ( this . scaleSizeInUnits / f ) ) { this . unitScale = e . getValueOrDefault ( this . options . time . unitStepSize , m . steps [ p ] ) ; break } break } if ( m . maxStep === ! 1 || Math . ceil ( this . scaleSizeInUnits / f ) < m . maxStep ) { this . unitScale = e . getValueOrDefault ( this . options . time . unitStepSize , Math . ceil ( this . scaleSizeInUnits / f ) ) ; break } ++ g , m = i . units [ g ] , this . tickUnit = m . name , this . scaleSizeInUnits = this . lastTick . diff ( this . firstTick , this . tickUnit , ! 0 ) , this . displayFormat = this . options . time . displayFormats [ m . name ] } } var b ; this . options . time . min ? b = this . firstTick . clone ( ) . startOf ( this . tickUnit ) : ( this . firstTick . startOf ( this . tickUnit ) , b = this . firstTick ) , this . options . time . max || this . lastTick . endOf ( this . tickUnit ) , this . smallestLabelSeparation = this . width , e . each ( this . chart . data . datasets , function ( t , e ) { for ( var i = 1 ; i < this . labelMoments [ e ] . length ; i ++ ) this . smallestLabelSeparation = Math . min ( this . smallestLabelSeparation , this . labelMoments [ e ] [ i ] . diff ( this . labelMoments [ e ] [ i - 1 ] , this . tickUnit , ! 0 ) ) } , this ) , this . options . time . displayFormat && ( this . displayFormat = this . options . time . d