2016-05-04 15:40:49 +00:00
/ * !
2016-04-24 14:26:11 +00:00
* Chart . js
* http : //chartjs.org/
2016-06-02 16:08:25 +00:00
* Version : 2.1 . 4
2016-04-24 14:26:11 +00:00
*
2016-05-04 15:40:49 +00:00
* Copyright 2016 Nick Downie
2016-04-24 14:26:11 +00:00
* Released under the MIT license
2016-05-04 15:40:49 +00:00
* https : //github.com/chartjs/Chart.js/blob/master/LICENSE.md
2016-04-24 14:26:11 +00:00
* /
2016-06-02 16:08:25 +00:00
! function t ( e , i , n ) { function a ( r , s ) { if ( ! i [ r ] ) { if ( ! e [ r ] ) { var l = "function" == typeof require && require ; if ( ! s && l ) return l ( r , ! 0 ) ; if ( o ) return o ( r , ! 0 ) ; var h = new Error ( "Cannot find module '" + r + "'" ) ; throw h . code = "MODULE_NOT_FOUND" , h } var d = i [ r ] = { exports : { } } ; e [ r ] [ 0 ] . call ( d . exports , function ( t ) { var i = e [ r ] [ 1 ] [ t ] ; return a ( i ? i : t ) } , d , d . exports , t , e , i , n ) } return i [ r ] . exports } for ( var o = "function" == typeof require && require , r = 0 ; r < n . length ; r ++ ) a ( n [ r ] ) ; return a } ( { 1 : [ function ( t , e , i ) { function n ( t ) { if ( t ) { var e = /^#([a-fA-F0-9]{3})$/ , i = /^#([a-fA-F0-9]{6})$/ , n = /^rgba?\(\s*([+-]?\d+)\s*,\s*([+-]?\d+)\s*,\s*([+-]?\d+)\s*(?:,\s*([+-]?[\d\.]+)\s*)?\)$/ , a = /^rgba?\(\s*([+-]?[\d\.]+)\%\s*,\s*([+-]?[\d\.]+)\%\s*,\s*([+-]?[\d\.]+)\%\s*(?:,\s*([+-]?[\d\.]+)\s*)?\)$/ , o = /(\w+)/ , r = [ 0 , 0 , 0 ] , s = 1 , l = t . match ( e ) ; if ( l ) { l = l [ 1 ] ; for ( var h = 0 ; h < r . length ; h ++ ) r [ h ] = parseInt ( l [ h ] + l [ h ] , 16 ) } else if ( l = t . match ( i ) ) { l = l [ 1 ] ; for ( var h = 0 ; h < r . length ; h ++ ) r [ h ] = parseInt ( l . slice ( 2 * h , 2 * h + 2 ) , 16 ) } else if ( l = t . match ( n ) ) { for ( var h = 0 ; h < r . length ; h ++ ) r [ h ] = parseInt ( l [ h + 1 ] ) ; s = parseFloat ( l [ 4 ] ) } else if ( l = t . match ( a ) ) { for ( var h = 0 ; h < r . length ; h ++ ) r [ h ] = Math . round ( 2.55 * parseFloat ( l [ h + 1 ] ) ) ; s = parseFloat ( l [ 4 ] ) } else if ( l = t . match ( o ) ) { if ( "transparent" == l [ 1 ] ) return [ 0 , 0 , 0 , 0 ] ; if ( r = x [ l [ 1 ] ] , ! r ) return } for ( var h = 0 ; h < r . length ; h ++ ) r [ h ] = v ( r [ h ] , 0 , 255 ) ; return s = s || 0 == s ? v ( s , 0 , 1 ) : 1 , r [ 3 ] = s , r } } function a ( t ) { if ( t ) { var e = /^hsla?\(\s*([+-]?\d+)(?:deg)?\s*,\s*([+-]?[\d\.]+)%\s*,\s*([+-]?[\d\.]+)%\s*(?:,\s*([+-]?[\d\.]+)\s*)?\)/ , i = t . match ( e ) ; if ( i ) { var n = parseFloat ( i [ 4 ] ) , a = v ( parseInt ( i [ 1 ] ) , 0 , 360 ) , o = v ( parseFloat ( i [ 2 ] ) , 0 , 100 ) , r = v ( parseFloat ( i [ 3 ] ) , 0 , 100 ) , s = v ( isNaN ( n ) ? 1 : n , 0 , 1 ) ; return [ a , o , r , s ] } } } function o ( t ) { if ( t ) { var e = /^hwb\(\s*([+-]?\d+)(?:deg)?\s*,\s*([+-]?[\d\.]+)%\s*,\s*([+-]?[\d\.]+)%\s*(?:,\s*([+-]?[\d\.]+)\s*)?\)/ , i = t . match ( e ) ; if ( i ) { var n = parseFloat ( i [ 4 ] ) , a = v ( parseInt ( i [ 1 ] ) , 0 , 360 ) , o = v ( parseFloat ( i [ 2 ] ) , 0 , 100 ) , r = v ( parseFloat ( i [ 3 ] ) , 0 , 100 ) , s = v ( isNaN ( n ) ? 1 : n , 0 , 1 ) ; return [ a , o , r , s ] } } } function r ( t ) { var e = n ( t ) ; return e && e . slice ( 0 , 3 ) } function s ( t ) { var e = a ( t ) ; return e && e . slice ( 0 , 3 ) } function l ( t ) { var e = n ( t ) ; return e ? e [ 3 ] : ( e = a ( t ) ) ? e [ 3 ] : ( e = o ( t ) ) ? e [ 3 ] : void 0 } function h ( t ) { return "#" + y ( t [ 0 ] ) + y ( t [ 1 ] ) + y ( t [ 2 ] ) } function d ( t , e ) { return 1 > e || t [ 3 ] && t [ 3 ] < 1 ? u ( t , e ) : "rgb(" + t [ 0 ] + ", " + t [ 1 ] + ", " + t [ 2 ] + ")" } function u ( t , e ) { return void 0 === e && ( e = void 0 !== t [ 3 ] ? t [ 3 ] : 1 ) , "rgba(" + t [ 0 ] + ", " + t [ 1 ] + ", " + t [ 2 ] + ", " + e + ")" } function c ( t , e ) { if ( 1 > e || t [ 3 ] && t [ 3 ] < 1 ) return f ( t , e ) ; var i = Math . round ( t [ 0 ] / 255 * 100 ) , n = Math . round ( t [ 1 ] / 255 * 100 ) , a = Math . round ( t [ 2 ] / 255 * 100 ) ; return "rgb(" + i + "%, " + n + "%, " + a + "%)" } function f ( t , e ) { var i = Math . round ( t [ 0 ] / 255 * 100 ) , n = Math . round ( t [ 1 ] / 255 * 100 ) , a = Math . round ( t [ 2 ] / 255 * 100 ) ; return "rgba(" + i + "%, " + n + "%, " + a + "%, " + ( e || t [ 3 ] || 1 ) + ")" } function g ( t , e ) { return 1 > e || t [ 3 ] && t [ 3 ] < 1 ? m ( t , e ) : "hsl(" + t [ 0 ] + ", " + t [ 1 ] + "%, " + t [ 2 ] + "%)" } function m ( t , e ) { return void 0 === e && ( e = void 0 !== t [ 3 ] ? t [ 3 ] : 1 ) , "hsla(" + t [ 0 ] + ", " + t [ 1 ] + "%, " + t [ 2 ] + "%, " + e + ")" } function p ( 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 : "" ) + ")" } function b ( t ) { return k [ t . slice ( 0 , 3 ) ] } function v ( t , e , i ) { return Math . min ( Math . max ( e , t ) , i ) } function y ( t ) { var e = t . toString ( 16 ) . toUpperCase ( ) ; return e . length < 2 ? "0" + e : e } var x = t ( "color-name" ) ; e . exports = { getRgba : n , getHsla : a , getRgb : r , getHsl : s , getHwb : o , getAlpha : l , hexString : h , rgbString : d , rgbaString : u , percentString : c , percentaString : f , hslString : g , hslaString : m , hwbString : p , keyword : b } ; var k = { } ; for ( var _ in x ) k [ x [ _ ] ] = _ } , { "color-name" : 5 } ] , 2 : [ function ( t , e , i ) { var n = t ( "color-convert" ) , a = t ( "chartjs-color-string" ) , o = function ( t ) { if ( t instanceof o ) return t ; if ( ! ( this instanceof o ) ) return new o ( t ) ; 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 ; if ( "string" == typeof t ) if ( e = a . getRgba ( t ) ) this . setValues ( "rgb" , e ) ; else if ( e = a . getHsla ( t ) ) this . setValues ( "hsl" , e ) ; else { if ( ! ( e = a . getHwb ( t ) ) ) throw new Error ( 'Unable to parse color from string "' + t + '"' ) ; this . setValues ( "hwb" , e ) } else if ( "object" == typeof t ) if ( e = t , void 0 !== e . r || void 0 !== e . red ) this . setValues ( "rgb" , e ) ; else if ( void 0 !== e . l || void 0 !== e . lightness ) this . setValues ( "hsl" , e ) ; else if ( void 0 !== e . v || void 0 !== e . value ) this . setValues ( "hsv" , e ) ; else if ( void 0 !== e . w || void 0 !== e . whiteness
return nt ( this . year ( ) , this . month ( ) ) } function ut ( t ) { return this . _monthsParseExact ? ( s ( this , "_monthsRegex" ) || ft . call ( this ) , t ? this . _monthsShortStrictRegex : this . _monthsShortRegex ) : this . _monthsShortStrictRegex && t ? this . _monthsShortStrictRegex : this . _monthsShortRegex } function ct ( t ) { return this . _monthsParseExact ? ( s ( this , "_monthsRegex" ) || ft . call ( this ) , t ? this . _monthsStrictRegex : this . _monthsRegex ) : this . _monthsStrictRegex && t ? this . _monthsStrictRegex : this . _monthsRegex } function ft ( ) { function t ( t , e ) { return e . length - t . length } var e , i , n = [ ] , a = [ ] , o = [ ] ; for ( e = 0 ; 12 > e ; e ++ ) i = h ( [ 2e3 , e ] ) , n . push ( this . monthsShort ( i , "" ) ) , a . push ( this . months ( i , "" ) ) , o . push ( this . months ( i , "" ) ) , o . push ( this . monthsShort ( i , "" ) ) ; for ( n . sort ( t ) , a . sort ( t ) , o . sort ( t ) , e = 0 ; 12 > e ; e ++ ) n [ e ] = K ( n [ e ] ) , a [ e ] = K ( a [ e ] ) , o [ e ] = K ( o [ e ] ) ; this . _monthsRegex = new RegExp ( "^(" + o . join ( "|" ) + ")" , "i" ) , this . _monthsShortRegex = this . _monthsRegex , this . _monthsStrictRegex = new RegExp ( "^(" + a . join ( "|" ) + ")" , "i" ) , this . _monthsShortStrictRegex = new RegExp ( "^(" + n . join ( "|" ) + ")" , "i" ) } function gt ( t ) { var e , i = t . _a ; return i && - 2 === u ( t ) . overflow && ( e = i [ Nn ] < 0 || i [ Nn ] > 11 ? Nn : i [ En ] < 1 || i [ En ] > nt ( i [ Hn ] , i [ Nn ] ) ? En : i [ Un ] < 0 || i [ Un ] > 24 || 24 === i [ Un ] && ( 0 !== i [ jn ] || 0 !== i [ Gn ] || 0 !== i [ qn ] ) ? Un : i [ jn ] < 0 || i [ jn ] > 59 ? jn : i [ Gn ] < 0 || i [ Gn ] > 59 ? Gn : i [ qn ] < 0 || i [ qn ] > 999 ? qn : - 1 , u ( t ) . _overflowDayOfYear && ( Hn > e || e > En ) && ( e = En ) , u ( t ) . _overflowWeeks && - 1 === e && ( e = Zn ) , u ( t ) . _overflowWeekday && - 1 === e && ( e = Jn ) , u ( t ) . overflow = e ) , t } function mt ( t ) { var e , i , n , a , o , r , s = t . _i , l = ea . exec ( s ) || ia . exec ( s ) ; if ( l ) { for ( u ( t ) . iso = ! 0 , e = 0 , i = aa . length ; i > e ; e ++ ) if ( aa [ e ] [ 1 ] . exec ( l [ 1 ] ) ) { a = aa [ e ] [ 0 ] , n = aa [ e ] [ 2 ] !== ! 1 ; break } if ( null == a ) return void ( t . _isValid = ! 1 ) ; if ( l [ 3 ] ) { for ( e = 0 , i = oa . length ; i > e ; e ++ ) if ( oa [ e ] [ 1 ] . exec ( l [ 3 ] ) ) { o = ( l [ 2 ] || " " ) + oa [ e ] [ 0 ] ; break } if ( null == o ) return void ( t . _isValid = ! 1 ) } if ( ! n && null != o ) return void ( t . _isValid = ! 1 ) ; if ( l [ 4 ] ) { if ( ! na . exec ( l [ 4 ] ) ) return void ( t . _isValid = ! 1 ) ; r = "Z" } t . _f = a + ( o || "" ) + ( r || "" ) , At ( t ) } else t . _isValid = ! 1 } function pt ( t ) { var e = ra . exec ( t . _i ) ; return null !== e ? void ( t . _d = new Date ( + e [ 1 ] ) ) : ( mt ( t ) , void ( t . _isValid === ! 1 && ( delete t . _isValid , i . createFromInputFallback ( t ) ) ) ) } function bt ( t , e , i , n , a , o , r ) { var s = new Date ( t , e , i , n , a , o , r ) ; return 100 > t && t >= 0 && isFinite ( s . getFullYear ( ) ) && s . setFullYear ( t ) , s } function vt ( t ) { var e = new Date ( Date . UTC . apply ( null , arguments ) ) ; return 100 > t && t >= 0 && isFinite ( e . getUTCFullYear ( ) ) && e . setUTCFullYear ( t ) , e } function yt ( t ) { return xt ( t ) ? 366 : 365 } function xt ( t ) { return t % 4 === 0 && t % 100 !== 0 || t % 400 === 0 } function kt ( ) { return xt ( this . year ( ) ) } function _t ( t , e , i ) { var n = 7 + e - i , a = ( 7 + vt ( t , 0 , n ) . getUTCDay ( ) - e ) % 7 ; return - a + n - 1 } function St ( t , e , i , n , a ) { var o , r , s = ( 7 + i - n ) % 7 , l = _t ( t , n , a ) , h = 1 + 7 * ( e - 1 ) + s + l ; return 0 >= h ? ( o = t - 1 , r = yt ( o ) + h ) : h > yt ( t ) ? ( o = t + 1 , r = h - yt ( t ) ) : ( o = t , r = h ) , { year : o , dayOfYear : r } } function wt ( t , e , i ) { var n , a , o = _t ( t . year ( ) , e , i ) , r = Math . floor ( ( t . dayOfYear ( ) - o - 1 ) / 7 ) + 1 ; return 1 > r ? ( a = t . year ( ) - 1 , n = r + Mt ( a , e , i ) ) : r > Mt ( t . year ( ) , e , i ) ? ( n = r - Mt ( t . year ( ) , e , i ) , a = t . year ( ) + 1 ) : ( a = t . year ( ) , n = r ) , { week : n , year : a } } function Mt ( t , e , i ) { var n = _t ( t , e , i ) , a = _t ( t + 1 , e , i ) ; return ( yt ( t ) - n + a ) / 7 } function Ct ( t , e , i ) { return null != t ? t : null != e ? e : i } function Dt ( t ) { var e = new Date ( i . now ( ) ) ; return t . _useUTC ? [ e . getUTCFullYear ( ) , e . getUTCMonth ( ) , e . getUTCDate ( ) ] : [ e . getFullYear ( ) , e . getMonth ( ) , e . getDate ( ) ] } function Tt ( t ) { var e , i , n , a , o = [ ] ; if ( ! t . _d ) { for ( n = Dt ( t ) , t . _w && null == t . _a [ En ] && null == t . _a [ Nn ] && Pt ( t ) , t . _dayOfYear && ( a = Ct ( t . _a [ Hn ] , n [ Hn ] ) , t . _dayOfYear > yt ( a ) && ( u ( t ) . _overflowDayOfYear = ! 0 ) , i = vt ( a , 0 , t . _dayOfYear ) , t . _a [ Nn ] = i . getUTCMonth ( ) , t . _a [ En ] = i . getUTCDate ( ) ) , e = 0 ; 3 > e && null == t . _a [ e ] ; ++ e ) t . _a [ e ] = o [ e ] = n [ e ] ; for ( ; 7 > e ; e ++ ) t . _a [ e ] = o [ e ] = null == t . _a [ e ] ? 2 === e ? 1 : 0 : t . _a [ e ] ; 24 === t . _a [ Un ] && 0 === t . _a [ jn ] && 0 === t . _a [ Gn ] && 0 === t . _a [ qn ] && ( t . _nextDay = ! 0 , t . _a [ Un ] = 0 ) , t . _d = ( t . _useUTC ? vt : bt ) . apply ( null , o ) , null != t . _tzm && t . _d . setUTCMinutes ( t . _d . getUTCMinutes ( ) - t . _tzm ) , t . _nextDay && ( t . _a [ Un ] = 24 ) } } function Pt ( t ) { var e , i , n , a , o , r , s , l ; e = t . _w , null != e . GG || null != e . W || null != e . E ? ( o = 1 , r = 4 , i = Ct ( e . GG , t . _a [ Hn ] , wt ( Bt ( ) , 1 , 4 ) . year ) , n = Ct ( e . W , 1 ) , a = Ct ( e . E , 1 ) , ( 1 > a || a > 7 ) && ( l = ! 0 ) ) : ( o = t . _locale . _week . dow , r = t . _locale . _week . doy , i = Ct ( e . gg , t . _a [ Hn ] , wt ( Bt ( ) , o , r ) . year ) , n = Ct ( e . w , 1 ) , null != e . d ? ( a = e . d , ( 0 > a || a > 6 ) && ( l = ! 0 ) ) : null != e . e ? ( a = e . e + o , ( e . e < 0 || e . e > 6 ) && ( l = ! 0 ) ) : a = o ) , 1 > n || n > Mt ( i , o , r ) ? u ( t ) . _overflowWeeks = ! 0 : null != l ? u ( t ) . _overflowWeek
u ( i ) . bigHour = ! 0 } ) , tt ( "Hmm" , function ( t , e , i ) { var n = t . length - 2 ; e [ Un ] = y ( t . substr ( 0 , n ) ) , e [ jn ] = y ( t . substr ( n ) ) } ) , tt ( "Hmmss" , function ( t , e , i ) { var n = t . length - 4 , a = t . length - 2 ; e [ Un ] = y ( t . substr ( 0 , n ) ) , e [ jn ] = y ( t . substr ( n , 2 ) ) , e [ Gn ] = y ( t . substr ( a ) ) } ) ; var Ma = /[ap]\.?m?\.?/i , Ca = Y ( "Hours" , ! 0 ) ; j ( "m" , [ "mm" , 2 ] , 0 , "minute" ) , L ( "minute" , "m" ) , X ( "m" , Dn ) , X ( "mm" , Dn , Sn ) , tt ( [ "m" , "mm" ] , jn ) ; var Da = Y ( "Minutes" , ! 1 ) ; j ( "s" , [ "ss" , 2 ] , 0 , "second" ) , L ( "second" , "s" ) , X ( "s" , Dn ) , X ( "ss" , Dn , Sn ) , tt ( [ "s" , "ss" ] , Gn ) ; var Ta = Y ( "Seconds" , ! 1 ) ; j ( "S" , 0 , 0 , function ( ) { return ~ ~ ( this . millisecond ( ) / 100 ) } ) , j ( 0 , [ "SS" , 2 ] , 0 , function ( ) { return ~ ~ ( this . millisecond ( ) / 10 ) } ) , j ( 0 , [ "SSS" , 3 ] , 0 , "millisecond" ) , j ( 0 , [ "SSSS" , 4 ] , 0 , function ( ) { return 10 * this . millisecond ( ) } ) , j ( 0 , [ "SSSSS" , 5 ] , 0 , function ( ) { return 100 * this . millisecond ( ) } ) , j ( 0 , [ "SSSSSS" , 6 ] , 0 , function ( ) { return 1e3 * this . millisecond ( ) } ) , j ( 0 , [ "SSSSSSS" , 7 ] , 0 , function ( ) { return 1e4 * this . millisecond ( ) } ) , j ( 0 , [ "SSSSSSSS" , 8 ] , 0 , function ( ) { return 1e5 * this . millisecond ( ) } ) , j ( 0 , [ "SSSSSSSSS" , 9 ] , 0 , function ( ) { return 1e6 * this . millisecond ( ) } ) , L ( "millisecond" , "ms" ) , X ( "S" , An , _n ) , X ( "SS" , An , Sn ) , X ( "SSS" , An , wn ) ; var Pa ; for ( Pa = "SSSS" ; Pa . length <= 9 ; Pa += "S" ) X ( Pa , On ) ; for ( Pa = "S" ; Pa . length <= 9 ; Pa += "S" ) tt ( Pa , _i ) ; var Aa = Y ( "Milliseconds" , ! 1 ) ; j ( "z" , 0 , 0 , "zoneAbbr" ) , j ( "zz" , 0 , 0 , "zoneName" ) ; var Fa = p . prototype ; Fa . add = ga , Fa . calendar = ce , Fa . clone = fe , Fa . diff = xe , Fa . endOf = Ie , Fa . format = we , Fa . from = Me , Fa . fromNow = Ce , Fa . to = De , Fa . toNow = Te , Fa . get = E , Fa . invalidAt = He , Fa . isAfter = ge , Fa . isBefore = me , Fa . isBetween = pe , Fa . isSame = be , Fa . isSameOrAfter = ve , Fa . isSameOrBefore = ye , Fa . isValid = ze , Fa . lang = pa , Fa . locale = Pe , Fa . localeData = Ae , Fa . max = ha , Fa . min = la , Fa . parsingFlags = Ye , Fa . set = E , Fa . startOf = Fe , Fa . subtract = ma , Fa . toArray = Ve , Fa . toObject = Le , Fa . toDate = We , Fa . toISOString = Se , Fa . toJSON = Be , Fa . toString = _e , Fa . unix = Re , Fa . valueOf = Oe , Fa . creationData = Ne , Fa . year = sa , Fa . isLeapYear = kt , Fa . weekYear = Ue , Fa . isoWeekYear = je , Fa . quarter = Fa . quarters = Xe , Fa . month = ht , Fa . daysInMonth = dt , Fa . week = Fa . weeks = ti , Fa . isoWeek = Fa . isoWeeks = ei , Fa . weeksInYear = qe , Fa . isoWeeksInYear = Ge , Fa . date = va , Fa . day = Fa . days = li , Fa . weekday = hi , Fa . isoWeekday = di , Fa . dayOfYear = mi , Fa . hour = Fa . hours = Ca , Fa . minute = Fa . minutes = Da , Fa . second = Fa . seconds = Ta , Fa . millisecond = Fa . milliseconds = Aa , Fa . utcOffset = Zt , Fa . utc = Xt , Fa . local = Qt , Fa . parseZone = $t , Fa . hasAlignedHourOffset = Kt , Fa . isDST = te , Fa . isDSTShifted = ee , Fa . isLocal = ie , Fa . isUtcOffset = ne , Fa . isUtc = ae , Fa . isUTC = ae , Fa . zoneAbbr = Si , Fa . zoneName = wi , Fa . dates = _ ( "dates accessor is deprecated. Use date instead." , va ) , Fa . months = _ ( "months accessor is deprecated. Use month instead" , ht ) , Fa . years = _ ( "years accessor is deprecated. Use year instead" , sa ) , Fa . zone = _ ( "moment().zone is deprecated, use moment().utcOffset instead. https://github.com/moment/moment/issues/1779" , Jt ) ; var Ia = Fa , Oa = { sameDay : "[Today at] LT" , nextDay : "[Tomorrow at] LT" , nextWeek : "dddd [at] LT" , lastDay : "[Yesterday at] LT" , lastWeek : "[Last] dddd [at] LT" , sameElse : "L" } , Ra = { 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" } , Wa = "Invalid date" , Va = "%d" , La = /\d{1,2}/ , Ba = { 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" } , za = T . prototype ; za . _calendar = Oa , za . calendar = Di , za . _longDateFormat = Ra , za . longDateFormat = Ti , za . _invalidDate = Wa , za . invalidDate = Pi , za . _ordinal = Va , za . ordinal = Ai , za . _ordinalParse = La , za . preparse = Fi , za . postformat = Fi , za . _relativeTime = Ba , za . relativeTime = Ii , za . pastFuture = Oi , za . set = C , za . months = at , za . _months = Qn , za . monthsShort = ot , za . _monthsShort = $n , za . monthsParse = st , za . _monthsRegex = ta , za . monthsRegex = ct , za . _monthsShortRegex = Kn , za . monthsShortRegex = ut , za . week = Qe , za . _week = ba , za . firstDayOfYear = Ke , za . firstDayOfWeek = $e , za . weekdays = ni , za . _weekdays = ya , za . weekdaysMin = oi , za . _weekdaysMin = ka , za . weekdaysShort = ai , za . _weekdaysShort = xa , za . weekdaysParse = si , za . _weekdaysRegex = _a , za . weekdaysRegex = ui , za . _weekdaysShortRegex = Sa , za . weekdaysShortRegex = ci , za . _weekdaysMinRegex = wa , za . weekdaysMinRegex = fi , za . isPM = xi , za . _meridiemParse = Ma , za . meridiem = ki , I ( "en" , { ordinalParse : /\d{1,2}(th|st|nd|rd)/ , ordinal : function ( t ) { var e = t % 10 , i = 1 === y ( t % 100 / 10 ) ? "th" : 1 === e ? "st"
return { text : n , fillStyle : u , strokeStyle : c , lineWidth : f , hidden : isNaN ( r . data [ a ] ) || o . data [ a ] . hidden , index : a } } ) : [ ] } } , onClick : function ( t , e ) { var i , n , a , o = e . index , r = this . chart ; for ( i = 0 , n = ( r . data . datasets || [ ] ) . length ; n > i ; ++ i ) a = r . getDatasetMeta ( i ) , a . 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 } } } } , t . controllers . polarArea = t . DatasetController . extend ( { dataElementType : t . elements . Arc , linkScales : e . noop , update : function ( t ) { var i = this , n = i . chart , a = n . chartArea , o = this . getMeta ( ) , r = n . options , s = r . elements . arc , l = Math . min ( a . right - a . left , a . bottom - a . top ) ; n . outerRadius = Math . max ( ( l - s . 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 ( ) , i . outerRadius = n . outerRadius - n . radiusLength * i . index , i . innerRadius = i . outerRadius - n . radiusLength , o . count = i . countVisibleElements ( ) , e . each ( o . data , function ( e , n ) { i . updateElement ( e , n , t ) } ) } , updateElement : function ( t , i , n ) { for ( var a = this , o = a . chart , r = o . chartArea , s = a . getDataset ( ) , l = o . options , h = l . animation , d = l . elements . arc , u = t . custom || { } , c = o . scale , f = e . getValueAtIndexOrDefault , g = o . data . labels , m = a . calculateCircumference ( s . data [ i ] ) , p = ( r . left + r . right ) / 2 , b = ( r . top + r . bottom ) / 2 , v = 0 , y = a . getMeta ( ) , x = 0 ; i > x ; ++ x ) isNaN ( s . data [ x ] ) || y . data [ x ] . hidden || ++ v ; var k = t . hidden ? 0 : c . getDistanceFromCenterForValue ( s . data [ i ] ) , _ = - . 5 * Math . PI + m * v , S = _ + ( t . hidden ? 0 : m ) , w = { x : p , y : b , innerRadius : 0 , outerRadius : h . animateScale ? 0 : c . getDistanceFromCenterForValue ( s . data [ i ] ) , startAngle : h . animateRotate ? Math . PI * - . 5 : _ , endAngle : h . animateRotate ? Math . PI * - . 5 : S , backgroundColor : u . backgroundColor ? u . backgroundColor : f ( s . backgroundColor , i , d . backgroundColor ) , borderWidth : u . borderWidth ? u . borderWidth : f ( s . borderWidth , i , d . borderWidth ) , borderColor : u . borderColor ? u . borderColor : f ( s . borderColor , i , d . borderColor ) , label : f ( g , i , g [ i ] ) } ; e . extend ( t , { _datasetIndex : a . index , _index : i , _scale : c , _model : n ? w : { x : p , y : b , innerRadius : 0 , outerRadius : k , startAngle : _ , endAngle : S , backgroundColor : u . backgroundColor ? u . backgroundColor : f ( s . backgroundColor , i , d . backgroundColor ) , borderWidth : u . borderWidth ? u . borderWidth : f ( s . borderWidth , i , d . borderWidth ) , borderColor : u . borderColor ? u . borderColor : f ( s . borderColor , i , d . borderColor ) , label : f ( g , i , g [ i ] ) } } ) , t . pivot ( ) } , removeHoverStyle : function ( e ) { t . DatasetController . prototype . removeHoverStyle . call ( this , e , this . chart . options . elements . arc ) } , countVisibleElements : function ( ) { var t = this . getDataset ( ) , i = this . getMeta ( ) , n = 0 ; return e . each ( i . 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 } } ) } } , { } ] , 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 ( { datasetElementType : t . elements . Line , dataElementType : t . elements . Point , linkScales : e . noop , addElementAndReset : function ( e ) { t . DatasetController . prototype . addElementAndReset . call ( this , e ) , this . updateBezierControlPoints ( ) } , update : function ( t ) { var i = this . getMeta ( ) , n = i . dataset , a = i . data , o = n . custom || { } , r = this . getDataset ( ) , s = this . chart . options . elements . line , l = this . chart . scale ; void 0 !== r . tension && void 0 === r . lineTension && ( r . lineTension = r . tension ) , e . extend ( i . dataset , { _datasetIndex : this . index , _children : a , _loop : ! 0 , _model : { tension : o . tension ? o . tension : e . getValueOrDefault ( r . lineTension , s . tension ) , backgroundColor : o . backgroundColor ? o . backgroundColor : r . backgroundColor || s . backgroundColor , borderWidth : o . borderWidth ? o . borderWidth : r . borderWidth || s . borderWidth , borderColor : o . borderColor ? o . borderColor : r . borderColor || s . borderColor , fill : o . fill ? o . fill : void 0 !== r . fill ? r . fill : s . fill , borderCapStyle : o . borderCapStyle ? o . borderCapStyle : r . borderCapStyle || s . borderCapStyle , borderDash : o . borderDash ? o . borderDash : r . borderDash || s . borderDash , borderDashOffset : o . borderDashOffset ? o . borderDashOffset : r . borderDashOffset || s . borderDashOffset , borderJoinStyle : o . borderJoinStyle ? o . borderJoinStyle : r . borderJoinStyle || s . borderJoinStyle , scaleTop : l . top , scaleBottom : l . bottom , sca
} , o . retinaScale = function ( t ) { var e = t . ctx , i = t . canvas , n = i . width , a = i . height , o = t . currentDevicePixelRatio = window . devicePixelRatio || 1 ; 1 !== o && ( i . height = a * o , i . width = n * o , e . scale ( o , o ) , t . originalDevicePixelRatio = t . originalDevicePixelRatio || o ) , i . style . width = n + "px" , i . style . height = a + "px" } , o . clear = function ( t ) { t . ctx . clearRect ( 0 , 0 , t . width , t . height ) } , o . fontString = function ( t , e , i ) { return e + " " + t + "px " + i } , o . longestText = function ( t , e , i , n ) { n = n || { } ; var a = n . data = n . data || { } , r = n . garbageCollect = n . garbageCollect || [ ] ; n . font !== e && ( a = n . data = { } , r = n . garbageCollect = [ ] , n . font = e ) , t . font = e ; var s = 0 ; o . each ( i , function ( e ) { if ( void 0 !== e && null !== e ) { var i = a [ e ] ; i || ( i = a [ e ] = t . measureText ( e ) . width , r . push ( e ) ) , i > s && ( s = i ) } } ) ; var l = r . length / 2 ; if ( l > i . length ) { for ( var h = 0 ; l > h ; h ++ ) delete a [ r [ h ] ] ; r . splice ( 0 , l ) } return s } , o . drawRoundedRectangle = function ( t , e , i , n , a , o ) { t . beginPath ( ) , t . moveTo ( e + o , i ) , t . lineTo ( e + n - o , i ) , t . quadraticCurveTo ( e + n , i , e + n , i + o ) , t . lineTo ( e + n , i + a - o ) , t . quadraticCurveTo ( e + n , i + a , e + n - o , i + a ) , t . lineTo ( e + o , i + a ) , t . quadraticCurveTo ( e , i + a , e , i + a - o ) , t . lineTo ( e , i + o ) , t . quadraticCurveTo ( e , i , e + o , i ) , t . closePath ( ) } , o . color = function ( e ) { return n ? n ( e instanceof CanvasGradient ? t . defaults . global . defaultColor : e ) : ( console . log ( "Color.js not found!" ) , e ) } , o . addResizeListener = function ( t , e ) { var i = document . createElement ( "iframe" ) , n = "chartjs-hidden-iframe" ; i . classlist ? i . classlist . add ( n ) : i . setAttribute ( "class" , n ) ; var a = i . style ; a . width = "100%" , a . display = "block" , a . border = 0 , a . height = 0 , a . margin = 0 , a . position = "absolute" , a . left = 0 , a . right = 0 , a . top = 0 , a . bottom = 0 , t . insertBefore ( i , t . firstChild ) , ( i . contentWindow || i ) . onresize = function ( ) { e && e ( ) } } , o . removeResizeListener = function ( t ) { var e = t . querySelector ( ".chartjs-hidden-iframe" ) ; e && e . parentNode . removeChild ( e ) } , o . isArray = function ( t ) { return Array . isArray ? Array . isArray ( t ) : "[object Array]" === Object . prototype . toString . call ( t ) } , o . arrayEquals = function ( t , e ) { var i , n , a , r ; if ( ! t || ! e || t . length != e . length ) return ! 1 ; for ( i = 0 , n = t . length ; n > i ; ++ i ) if ( a = t [ i ] , r = e [ i ] , a instanceof Array && r instanceof Array ) { if ( ! o . arrayEquals ( a , r ) ) return ! 1 } else if ( a != r ) return ! 1 ; return ! 0 } , o . pushAllIfDefined = function ( t , e ) { "undefined" != typeof t && ( o . isArray ( t ) ? e . push . apply ( e , t ) : e . push ( t ) ) } , o . callCallback = function ( t , e , i ) { t && "function" == typeof t . call && t . apply ( i , e ) } , o . getHoverColor = function ( t ) { return t instanceof CanvasPattern ? t : o . color ( t ) . saturate ( . 5 ) . darken ( . 1 ) . rgbString ( ) } } } , { "chartjs-color" : 2 } ] , 26 : [ function ( t , e , i ) { "use strict" ; e . exports = function ( ) { var t = function ( e , i ) { this . config = i , e . length && e [ 0 ] . getContext && ( e = e [ 0 ] ) , e . getContext && ( e = e . getContext ( "2d" ) ) , this . ctx = e , this . canvas = e . canvas , this . width = e . canvas . width || parseInt ( t . helpers . getStyle ( e . canvas , "width" ) ) || t . helpers . getMaximumWidth ( e . canvas ) , this . height = e . canvas . height || parseInt ( t . helpers . getStyle ( e . canvas , "height" ) ) || t . helpers . getMaximumHeight ( e . canvas ) , this . aspectRatio = this . width / this . height , ( isNaN ( this . aspectRatio ) || isFinite ( this . aspectRatio ) === ! 1 ) && ( this . aspectRatio = void 0 !== i . aspectRatio ? i . aspectRatio : 2 ) , this . originalCanvasStyleWidth = e . canvas . style . width , this . originalCanvasStyleHeight = e . canvas . style . height , t . helpers . retinaScale ( this ) , i && ( this . controller = new t . Controller ( this ) ) ; var n = this ; return t . helpers . addResizeListener ( e . canvas . parentNode , function ( ) { n . controller && n . controller . config . options . responsive && n . controller . resize ( ) } ) , this . controller ? this . controller : this } ; return t . defaults = { global : { responsive : ! 0 , responsiveAnimationDuration : 0 , maintainAspectRatio : ! 0 , events : [ "mousemove" , "mouseout" , "click" , "touchstart" , "touchmove" ] , hover : { onHover : null , mode : "single" , 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 : { } , legendCallback : function ( t ) { var e = [ ] ; e . push ( '<ul class="' + t . id + '-legend">' ) ; for ( var i = 0 ; i < t . data . datasets . length ; i ++ ) e . push ( '<li><span style="background-color:' + t . data . datasets [ i ] . backgroundColor + '"></span>' ) , t . data . datasets [ i ] . label && e . push ( t . data . datasets [ i ] . label ) , e . push ( "</li>" ) ; return e . push ( "</ul>" ) , e . join ( "" ) } } } , t } } , { } ] , 27 : [ function ( t , e , i ) { "use strict" ; e . exports = functio
x : t . x , y : t . y } ; return "right" === t . xAlign ? i . x -= e . width : "center" === t . xAlign && ( i . x -= e . width / 2 ) , "top" === t . yAlign ? i . y += t . caretPadding + t . caretSize : "bottom" === t . yAlign ? i . y -= e . height + t . caretPadding + t . caretSize : i . y -= e . height / 2 , "center" === t . yAlign ? "left" === t . xAlign ? i . x += t . caretPadding + t . caretSize : "right" === t . xAlign && ( i . x -= t . caretPadding + t . caretSize ) : "left" === t . xAlign ? i . x -= t . cornerRadius + t . caretPadding : "right" === t . xAlign && ( i . x += t . cornerRadius + t . caretPadding ) , i } , drawCaret : function ( t , e , n , a ) { var o , r , s , l , h , d , u = this . _view , c = this . _chart . ctx ; "center" === u . yAlign ? ( "left" === u . xAlign ? ( o = t . x , r = o - u . caretSize , s = o ) : ( o = t . x + e . width , r = o + u . caretSize , s = o ) , h = t . y + e . height / 2 , l = h - u . caretSize , d = h + u . caretSize ) : ( "left" === u . xAlign ? ( o = t . x + u . cornerRadius , r = o + u . caretSize , s = r + u . caretSize ) : "right" === u . xAlign ? ( o = t . x + e . width - u . cornerRadius , r = o - u . caretSize , s = r - u . caretSize ) : ( r = t . x + e . width / 2 , o = r - u . caretSize , s = r + u . caretSize ) , "top" === u . yAlign ? ( l = t . y , h = l - u . caretSize , d = l ) : ( l = t . y + e . height , h = l + u . caretSize , d = l ) ) ; var f = i . color ( u . backgroundColor ) ; c . fillStyle = f . alpha ( n * f . alpha ( ) ) . rgbString ( ) , c . beginPath ( ) , c . moveTo ( o , l ) , c . lineTo ( r , h ) , c . lineTo ( s , d ) , c . closePath ( ) , c . fill ( ) } , drawTitle : function ( t , e , n , a ) { if ( e . title . length ) { n . textAlign = e . _titleAlign , n . textBaseline = "top" ; var o = i . color ( e . titleColor ) ; n . fillStyle = o . alpha ( a * o . alpha ( ) ) . rgbString ( ) , n . font = i . fontString ( e . titleFontSize , e . _titleFontStyle , e . _titleFontFamily ) , i . each ( e . title , function ( i , a ) { n . fillText ( i , t . x , t . y ) , t . y += e . titleFontSize + e . titleSpacing , a + 1 === e . title . length && ( t . y += e . titleMarginBottom - e . titleSpacing ) } ) } } , drawBody : function ( t , e , n , a ) { n . textAlign = e . _bodyAlign , n . textBaseline = "top" ; var o = i . color ( e . bodyColor ) ; n . fillStyle = o . alpha ( a * o . alpha ( ) ) . rgbString ( ) , n . font = i . fontString ( e . bodyFontSize , e . _bodyFontStyle , e . _bodyFontFamily ) , i . each ( e . beforeBody , function ( i ) { n . fillText ( i , t . x , t . y ) , t . y += e . bodyFontSize + e . bodySpacing } ) , i . each ( e . body , function ( o , r ) { "single" !== this . _options . tooltips . mode && ( n . fillStyle = i . color ( e . legendColorBackground ) . alpha ( a ) . rgbaString ( ) , n . fillRect ( t . x , t . y , e . bodyFontSize , e . bodyFontSize ) , n . strokeStyle = i . color ( e . labelColors [ r ] . borderColor ) . alpha ( a ) . rgbaString ( ) , n . strokeRect ( t . x , t . y , e . bodyFontSize , e . bodyFontSize ) , n . fillStyle = i . color ( e . labelColors [ r ] . backgroundColor ) . alpha ( a ) . rgbaString ( ) , n . fillRect ( t . x + 1 , t . y + 1 , e . bodyFontSize - 2 , e . bodyFontSize - 2 ) , n . fillStyle = i . color ( e . bodyColor ) . alpha ( a ) . rgbaString ( ) ) , n . fillText ( o , t . x + ( "single" !== this . _options . tooltips . mode ? e . bodyFontSize + 2 : 0 ) , t . y ) , t . y += e . bodyFontSize + e . bodySpacing } , this ) , i . each ( e . afterBody , function ( i ) { n . fillText ( i , t . x , t . y ) , t . y += e . bodyFontSize } ) , t . y -= e . bodySpacing } , drawFooter : function ( t , e , n , a ) { if ( e . footer . length ) { t . y += e . footerMarginTop , n . textAlign = e . _footerAlign , n . textBaseline = "top" ; var o = i . color ( e . footerColor ) ; n . fillStyle = o . alpha ( a * o . alpha ( ) ) . rgbString ( ) , n . font = i . fontString ( e . footerFontSize , e . _footerFontStyle , e . _footerFontFamily ) , i . each ( e . footer , function ( i ) { n . fillText ( i , t . x , t . y ) , t . y += e . footerFontSize + e . footerSpacing } ) } } , draw : function ( ) { var t = this . _chart . ctx , e = this . _view ; if ( 0 !== e . opacity ) { var n = e . caretPadding , a = this . getTooltipSize ( e ) , o = { x : e . x , y : e . y } , r = Math . abs ( e . opacity < . 001 ) ? 0 : e . opacity ; if ( this . _options . tooltips . enabled ) { var s = i . color ( e . backgroundColor ) ; t . fillStyle = s . alpha ( r * s . alpha ( ) ) . rgbString ( ) , i . drawRoundedRectangle ( t , o . x , o . y , a . width , a . height , e . cornerRadius ) , t . fill ( ) , this . drawCaret ( o , a , r , n ) , o . x += e . xPadding , o . y += e . yPadding , this . drawTitle ( o , e , t , r ) , this . drawBody ( o , e , t , r ) , this . drawFooter ( o , e , t , r ) } } } } ) } } , { } ] , 34 : [ function ( t , e , i ) { "use strict" ; e . exports = function ( t , e ) { var i = t . helpers , n = t . defaults . global ; n . elements . arc = { backgroundColor : n . defaultColor , borderColor : "#fff" , borderWidth : 2 } , t . elements . Arc = t . Element . extend ( { inLabelRange : function ( t ) { var e = this . _view ; return e ? Math . pow ( t - e . x , 2 ) < Math . pow ( e . radius + e . hoverRadius , 2 ) : ! 1 } , inRange : function ( t , e ) { var n = this . _view ; if ( n ) { for ( var a = i . getAngleFromPoint ( n , { x : t , y : e } ) , o = a . angle , r = a . distance , s = n . startAngle , l = n . endAngle ; s > l ; ) l += 2 * Math . PI ; for ( ; o > l ; ) o -= 2 * Math . PI ; for ( ; s > o ; ) o += 2 * Math . PI ; var h = o >= s && l >= o , d = r >= n . innerRadius && r <= n . outerRadius ; return h && d } return ! 1 } , tooltipPosition : function ( ) { var t = this . _view , e = t . startAngle + ( t . endAngle - t . startAngle ) / 2 , i = ( t .
s * r + this . paddingLeft ) ; return this . left + Math . round ( l ) } var h = this . height - ( this . paddingTop + this . paddingBottom ) , d = ( h / Math . max ( this . ticks . length - 1 , 1 ) , h * r + this . paddingTop ) ; return this . top + Math . round ( d ) } } , getPixelForTick : function ( t , e ) { return this . getPixelForValue ( this . tickMoments [ t ] , null , null , e ) } , getValueForPixel : function ( t ) { var e = this . isHorizontal ( ) ? this . width - ( this . paddingLeft + this . paddingRight ) : this . height - ( this . paddingTop + this . paddingBottom ) , i = ( t - ( this . isHorizontal ( ) ? this . left + this . paddingLeft : this . top + this . paddingTop ) ) / e ; return i *= this . scaleSizeInUnits , this . firstTick . clone ( ) . add ( n . duration ( i , this . tickUnit ) . asSeconds ( ) , "seconds" ) } , parseTime : function ( t ) { return "string" == typeof this . options . time . parser ? n ( t , this . options . time . parser ) : "function" == typeof this . options . time . parser ? this . options . time . parser ( t ) : "function" == typeof t . getMonth || "number" == typeof t ? n ( t ) : t . isValid && t . isValid ( ) ? t : "string" != typeof this . options . time . format && this . options . time . format . call ? ( console . warn ( "options.time.format is deprecated and replaced by options.time.parser. See http://nnnick.github.io/Chart.js/docs-v2/#scales-time-scale" ) , this . options . time . format ( t ) ) : n ( t , this . options . time . format ) } } ) ; t . scaleService . registerScaleType ( "time" , o , a ) } } , { moment : 6 } ] } , { } , [ 7 ] ) ;